tangram-core 0.3.0__cp310-cp310-manylinux_2_28_aarch64.whl

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.
Files changed (162) hide show
  1. tangram_core/App.vue +441 -0
  2. tangram_core/CommandPalette.vue +200 -0
  3. tangram_core/HighlightText.vue +32 -0
  4. tangram_core/__Timeline.vue +300 -0
  5. tangram_core/__init__.py +5 -0
  6. tangram_core/__main__.py +331 -0
  7. tangram_core/_core.cpython-310-aarch64-linux-gnu.so +0 -0
  8. tangram_core/_core.pyi +38 -0
  9. tangram_core/api.ts +652 -0
  10. tangram_core/backend.py +458 -0
  11. tangram_core/components.ts +2 -0
  12. tangram_core/config.py +167 -0
  13. tangram_core/dist-frontend/aggregation-layers.js +521 -0
  14. tangram_core/dist-frontend/aggregation-layers.js.map +1 -0
  15. tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js +2 -0
  16. tangram_core/dist-frontend/assets/_commonjsHelpers-CqkleIqs.js.map +1 -0
  17. tangram_core/dist-frontend/assets/array-utils-flat-BBMak426.js +11 -0
  18. tangram_core/dist-frontend/assets/array-utils-flat-BBMak426.js.map +1 -0
  19. tangram_core/dist-frontend/assets/assert-cyW4mg7q.js +3 -0
  20. tangram_core/dist-frontend/assets/assert-cyW4mg7q.js.map +1 -0
  21. tangram_core/dist-frontend/assets/b612-latin-400-italic-DePNXA0a.woff +0 -0
  22. tangram_core/dist-frontend/assets/b612-latin-400-italic-a-4GLPtl.woff2 +0 -0
  23. tangram_core/dist-frontend/assets/b612-latin-400-normal-CC98FVm_.woff2 +0 -0
  24. tangram_core/dist-frontend/assets/b612-latin-400-normal-JbZ7xwUX.woff +0 -0
  25. tangram_core/dist-frontend/assets/b612-latin-700-normal-B_Snq1wd.woff +0 -0
  26. tangram_core/dist-frontend/assets/b612-latin-700-normal-BinQrnoB.woff2 +0 -0
  27. tangram_core/dist-frontend/assets/clip-extension-D-rbmFPj.js +26 -0
  28. tangram_core/dist-frontend/assets/clip-extension-D-rbmFPj.js.map +1 -0
  29. tangram_core/dist-frontend/assets/color-CUNNsFV-.js +17 -0
  30. tangram_core/dist-frontend/assets/color-CUNNsFV-.js.map +1 -0
  31. tangram_core/dist-frontend/assets/cube-geometry-v0HQ793i.js +2 -0
  32. tangram_core/dist-frontend/assets/cube-geometry-v0HQ793i.js.map +1 -0
  33. tangram_core/dist-frontend/assets/deep-equal-BTW2ZN6S.js +2 -0
  34. tangram_core/dist-frontend/assets/deep-equal-BTW2ZN6S.js.map +1 -0
  35. tangram_core/dist-frontend/assets/fly-to-interpolator-CIXGjOdo.js +2 -0
  36. tangram_core/dist-frontend/assets/fly-to-interpolator-CIXGjOdo.js.map +1 -0
  37. tangram_core/dist-frontend/assets/geojson-layer-DgMOQ4Qu.js +1010 -0
  38. tangram_core/dist-frontend/assets/geojson-layer-DgMOQ4Qu.js.map +1 -0
  39. tangram_core/dist-frontend/assets/globe-view-Day_n1iB.js +94 -0
  40. tangram_core/dist-frontend/assets/globe-view-Day_n1iB.js.map +1 -0
  41. tangram_core/dist-frontend/assets/globe-viewport-tqhQW7C4.js +2 -0
  42. tangram_core/dist-frontend/assets/globe-viewport-tqhQW7C4.js.map +1 -0
  43. tangram_core/dist-frontend/assets/image-loader-hHJsndO6.js +2 -0
  44. tangram_core/dist-frontend/assets/image-loader-hHJsndO6.js.map +1 -0
  45. tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-DTZQ6lD6.woff2 +0 -0
  46. tangram_core/dist-frontend/assets/inconsolata-latin-400-normal-HYADljCo.woff +0 -0
  47. tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-ByjKuJjN.woff2 +0 -0
  48. tangram_core/dist-frontend/assets/inconsolata-latin-700-normal-DzgUY3Rl.woff +0 -0
  49. tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-BaHVOdFB.woff2 +0 -0
  50. tangram_core/dist-frontend/assets/inconsolata-latin-ext-400-normal-yvPjCxxx.woff +0 -0
  51. tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-D0Kpgs_9.woff2 +0 -0
  52. tangram_core/dist-frontend/assets/inconsolata-latin-ext-700-normal-Dlt-daqV.woff +0 -0
  53. tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-ByiM2lek.woff +0 -0
  54. tangram_core/dist-frontend/assets/inconsolata-vietnamese-400-normal-DfC_iMic.woff2 +0 -0
  55. tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DLCFFAUf.woff +0 -0
  56. tangram_core/dist-frontend/assets/inconsolata-vietnamese-700-normal-DuasYmn8.woff2 +0 -0
  57. tangram_core/dist-frontend/assets/index-CcogpxdD.js +824 -0
  58. tangram_core/dist-frontend/assets/index-CcogpxdD.js.map +1 -0
  59. tangram_core/dist-frontend/assets/index-SSLdizTv.css +1 -0
  60. tangram_core/dist-frontend/assets/layer-DPcO4AXQ.js +555 -0
  61. tangram_core/dist-frontend/assets/layer-DPcO4AXQ.js.map +1 -0
  62. tangram_core/dist-frontend/assets/layer-extension-CYwTXf73.js +2 -0
  63. tangram_core/dist-frontend/assets/layer-extension-CYwTXf73.js.map +1 -0
  64. tangram_core/dist-frontend/assets/mesh-layers-wiqredoy.js +1123 -0
  65. tangram_core/dist-frontend/assets/mesh-layers-wiqredoy.js.map +1 -0
  66. tangram_core/dist-frontend/assets/orthographic-viewport-B4nCj5tn.js +2 -0
  67. tangram_core/dist-frontend/assets/orthographic-viewport-B4nCj5tn.js.map +1 -0
  68. tangram_core/dist-frontend/assets/pick-layers-pass-C-3k0wbN.js +2 -0
  69. tangram_core/dist-frontend/assets/pick-layers-pass-C-3k0wbN.js.map +1 -0
  70. tangram_core/dist-frontend/assets/project-BTjD2Imj.js +760 -0
  71. tangram_core/dist-frontend/assets/project-BTjD2Imj.js.map +1 -0
  72. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-4qS3_zkX.woff2 +0 -0
  73. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-italic-CDK-EZBY.woff +0 -0
  74. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-Bgns473E.woff +0 -0
  75. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-400-normal-_T2aQlWs.woff2 +0 -0
  76. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-CvEVpWxD.woff +0 -0
  77. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-500-normal-s4PklZE0.woff2 +0 -0
  78. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-9RN-Z7cI.woff2 +0 -0
  79. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-700-normal-BGMkBBYx.woff +0 -0
  80. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-C7erd-g8.woff +0 -0
  81. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-italic-DR5R5TWx.woff2 +0 -0
  82. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-DGo1Ayjq.woff2 +0 -0
  83. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-400-normal-WtM1l1qc.woff +0 -0
  84. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-C8FNIdXm.woff2 +0 -0
  85. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-500-normal-TLDmfi3Q.woff +0 -0
  86. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CTXjXnze.woff2 +0 -0
  87. tangram_core/dist-frontend/assets/roboto-condensed-cyrillic-ext-700-normal-CWPRiRXS.woff +0 -0
  88. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-CR6qj4Z4.woff2 +0 -0
  89. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-italic-DHRaIs10.woff +0 -0
  90. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-D5vBSIyg.woff2 +0 -0
  91. tangram_core/dist-frontend/assets/roboto-condensed-greek-400-normal-FabMgVmk.woff +0 -0
  92. tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-BIN62cw9.woff +0 -0
  93. tangram_core/dist-frontend/assets/roboto-condensed-greek-500-normal-Hsn-wDIp.woff2 +0 -0
  94. tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-89Up2Xly.woff +0 -0
  95. tangram_core/dist-frontend/assets/roboto-condensed-greek-700-normal-DWMOA2VK.woff2 +0 -0
  96. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-D_BR-3LG.woff2 +0 -0
  97. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-italic-om57GXsO.woff +0 -0
  98. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-BICmKrXV.woff2 +0 -0
  99. tangram_core/dist-frontend/assets/roboto-condensed-latin-400-normal-D2e7XwB1.woff +0 -0
  100. tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-3p2daRJW.woff2 +0 -0
  101. tangram_core/dist-frontend/assets/roboto-condensed-latin-500-normal-Dc9bsamC.woff +0 -0
  102. tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-BOl6B_hI.woff +0 -0
  103. tangram_core/dist-frontend/assets/roboto-condensed-latin-700-normal-DRbp0YnP.woff2 +0 -0
  104. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-BXrkWnoY.woff +0 -0
  105. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-italic-Bhem1d5z.woff2 +0 -0
  106. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-DT8nEsYA.woff +0 -0
  107. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-400-normal-OHaX69iP.woff2 +0 -0
  108. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-CcSTXKtO.woff2 +0 -0
  109. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-500-normal-JgPl2bDS.woff +0 -0
  110. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-B004qtqu.woff2 +0 -0
  111. tangram_core/dist-frontend/assets/roboto-condensed-latin-ext-700-normal-O6H_RRvN.woff +0 -0
  112. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-BwUYFJ2t.woff2 +0 -0
  113. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-italic-DV8QogUk.woff +0 -0
  114. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-0o1laQ-g.woff2 +0 -0
  115. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-400-normal-CPsdS8_S.woff +0 -0
  116. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-G9shSJ2z.woff +0 -0
  117. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-500-normal-TFWhjk13.woff2 +0 -0
  118. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-BtNeb9D6.woff +0 -0
  119. tangram_core/dist-frontend/assets/roboto-condensed-vietnamese-700-normal-D35V1G0s.woff2 +0 -0
  120. tangram_core/dist-frontend/assets/shader-Cbdysp2j.js +843 -0
  121. tangram_core/dist-frontend/assets/shader-Cbdysp2j.js.map +1 -0
  122. tangram_core/dist-frontend/assets/solid-polygon-layer-DJFl_7Ca.js +392 -0
  123. tangram_core/dist-frontend/assets/solid-polygon-layer-DJFl_7Ca.js.map +1 -0
  124. tangram_core/dist-frontend/assets/tesselator-CENyUZ2p.js +2 -0
  125. tangram_core/dist-frontend/assets/tesselator-CENyUZ2p.js.map +1 -0
  126. tangram_core/dist-frontend/assets/webgl-developer-tools-utTNOsNf.js +7 -0
  127. tangram_core/dist-frontend/assets/webgl-developer-tools-utTNOsNf.js.map +1 -0
  128. tangram_core/dist-frontend/assets/webgl-device-BYRB-GQX.js +3 -0
  129. tangram_core/dist-frontend/assets/webgl-device-BYRB-GQX.js.map +1 -0
  130. tangram_core/dist-frontend/assets/widget-BjgEeHAL.js +2 -0
  131. tangram_core/dist-frontend/assets/widget-BjgEeHAL.js.map +1 -0
  132. tangram_core/dist-frontend/core.js +60 -0
  133. tangram_core/dist-frontend/core.js.map +1 -0
  134. tangram_core/dist-frontend/extensions.js +609 -0
  135. tangram_core/dist-frontend/extensions.js.map +1 -0
  136. tangram_core/dist-frontend/favicon.ico +0 -0
  137. tangram_core/dist-frontend/favicon.png +0 -0
  138. tangram_core/dist-frontend/geo-layers.js +115 -0
  139. tangram_core/dist-frontend/geo-layers.js.map +1 -0
  140. tangram_core/dist-frontend/index.html +39 -0
  141. tangram_core/dist-frontend/json.js +3 -0
  142. tangram_core/dist-frontend/json.js.map +1 -0
  143. tangram_core/dist-frontend/layers.js +268 -0
  144. tangram_core/dist-frontend/layers.js.map +1 -0
  145. tangram_core/dist-frontend/mapbox.js +2 -0
  146. tangram_core/dist-frontend/mapbox.js.map +1 -0
  147. tangram_core/dist-frontend/mesh-layers.js +2 -0
  148. tangram_core/dist-frontend/mesh-layers.js.map +1 -0
  149. tangram_core/dist-frontend/widgets.js +3 -0
  150. tangram_core/dist-frontend/widgets.js.map +1 -0
  151. tangram_core/main.ts +28 -0
  152. tangram_core/package.json +62 -0
  153. tangram_core/plugin.py +109 -0
  154. tangram_core/plugin.ts +47 -0
  155. tangram_core/redis.py +89 -0
  156. tangram_core/user.css +114 -0
  157. tangram_core/utils.ts +143 -0
  158. tangram_core/vite-plugin-tangram.mjs +155 -0
  159. tangram_core-0.3.0.dist-info/METADATA +101 -0
  160. tangram_core-0.3.0.dist-info/RECORD +162 -0
  161. tangram_core-0.3.0.dist-info/WHEEL +4 -0
  162. tangram_core-0.3.0.dist-info/entry_points.txt +2 -0
@@ -0,0 +1,94 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/webgl-device-BYRB-GQX.js","assets/assert-cyW4mg7q.js","assets/deep-equal-BTW2ZN6S.js","assets/array-utils-flat-BBMak426.js","assets/webgl-developer-tools-utTNOsNf.js"])))=>i.map(i=>d[i]);
2
+ import{p as Ft,m as Nt,c as ee,S as ie}from"./project-BTjD2Imj.js";import{r as se,g as ne,l as re,d as K,f as jt,L as B,T as oe,h as ae,j as he,k as ce}from"./webgl-developer-tools-utTNOsNf.js";import{x as S,a6 as le,a7 as X,a8 as ct,a9 as lt,aa as dt,ab as de,ac as ue,ad as pe,ae as G,af as ut,ag as nt,ah as fe,ai as pt,aj as ge,w as ft,N as q,O as me,P as we,b as rt,p as _e,V as ve,i as W,h as N,W as Ut,ak as J,y as z,v as ye,al as gt,S as Ee,M as mt}from"./deep-equal-BTW2ZN6S.js";import{S as ot,a as D,D as wt}from"./assert-cyW4mg7q.js";import{L as Bt,a as Wt}from"./pick-layers-pass-C-3k0wbN.js";import{l as Q,L as at,W as Gt}from"./widget-BjgEeHAL.js";import{I as Pe}from"./image-loader-hHJsndO6.js";import{z as _t,G as Se}from"./globe-viewport-tqhQW7C4.js";function be(o){const t=o[0],e=o[o.length-1];return t==="{"&&e==="}"||t==="["&&e==="]"}const Ce={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:be,parseTextSync:JSON.parse};function Me(){const o="9.2.6",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==o)throw new Error(`deck.gl - multiple versions detected: ${t} vs ${o}`);return t||(S.log(1,`deck.gl ${o}`)(),globalThis.deck={...globalThis.deck,VERSION:o,version:o,log:S,_registerLoggers:se},ne([Ce,[Pe,{imagebitmap:{premultiplyAlpha:"none"}}]])),o}const Te=Me();class ke{get pageLoaded(){return xe()}}const Le=le()&&typeof document<"u",Re=()=>Le&&document.readyState==="complete";let H=null;function xe(){return H||(Re()||typeof window>"u"?H=Promise.resolve():H=new Promise(o=>window.addEventListener("load",()=>o()))),H}const vt=`uniform layerUniforms {
3
+ uniform float opacity;
4
+ } layer;
5
+ `,Ie={name:"layer",vs:vt,fs:vt,getUniforms:o=>({opacity:Math.pow(o.opacity,1/2.2)}),uniformTypes:{opacity:"f32"}};function Ae(o){if(o.includes(X))return X;const t=o.includes(ct),e=o.includes(lt);return t&&e?X:t||e?t?ct:lt:o.includes(dt)?dt:de}class Oe{constructor(t,e){this.actions="",this.manager=t,this.set(e)}set(t){t===ue&&(t=this.compute()),this.manager.element&&(this.manager.element.style.touchAction=t,this.actions=t)}update(){this.set(this.manager.options.touchAction)}compute(){let t=[];for(const e of this.manager.recognizers)e.options.enable&&(t=t.concat(e.getTouchAction()));return Ae(t.join(" "))}}const Ve=["","webkit","Moz","MS","ms","o"];function De(o,t){const e=t[0].toUpperCase()+t.slice(1);for(const i of Ve){const s=i?i+e:t;if(s in o)return s}}const ze=1,yt=2,Et={touchAction:"compute",enable:!0,inputTarget:null,cssProps:{userSelect:"none",userDrag:"none",touchCallout:"none",tapHighlightColor:"rgba(0,0,0,0)"}};class Fe{constructor(t,e){this.options={...Et,...e,cssProps:{...Et.cssProps,...e.cssProps},inputTarget:e.inputTarget||t},this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new pe(this),this.touchAction=new Oe(this,this.options.touchAction),this.toggleCssProps(!0)}set(t){return Object.assign(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this}stop(t){this.session.stopped=t?yt:ze}recognize(t){const{session:e}=this;if(e.stopped)return;this.session.prevented&&t.srcEvent.preventDefault();let i;const{recognizers:s}=this;let{curRecognizer:n}=e;(!n||n&&n.state&G.Recognized)&&(n=e.curRecognizer=null);let r=0;for(;r<s.length;)i=s[r],e.stopped!==yt&&(!n||i===n||i.canRecognizeWith(n))?i.recognize(t):i.reset(),!n&&i.state&(G.Began|G.Changed|G.Ended)&&(n=e.curRecognizer=i),r++}get(t){const{recognizers:e}=this;for(let i=0;i<e.length;i++)if(e[i].options.event===t)return e[i];return null}add(t){if(Array.isArray(t)){for(const i of t)this.add(i);return this}const e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t}remove(t){if(Array.isArray(t)){for(const i of t)this.remove(i);return this}const e=typeof t=="string"?this.get(t):t;if(e){const{recognizers:i}=this,s=i.indexOf(e);s!==-1&&(i.splice(s,1),this.touchAction.update())}return this}on(t,e){if(!t||!e)return;const{handlers:i}=this;for(const s of ut(t))i[s]=i[s]||[],i[s].push(e)}off(t,e){if(!t)return;const{handlers:i}=this;for(const s of ut(t))e?i[s]&&i[s].splice(i[s].indexOf(e),1):delete i[s]}emit(t,e){const i=this.handlers[t]&&this.handlers[t].slice();if(!i||!i.length)return;const s=e;s.type=t,s.preventDefault=function(){e.srcEvent.preventDefault()};let n=0;for(;n<i.length;)i[n](s),n++}destroy(){this.toggleCssProps(!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}toggleCssProps(t){const{element:e}=this;if(e){for(const[i,s]of Object.entries(this.options.cssProps)){const n=De(e.style,i);t?(this.oldCssProps[n]=e.style[n],e.style[n]=s):e.style[n]=this.oldCssProps[n]||""}t||(this.oldCssProps={})}}}const Pt=["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"];class Ne extends nt{constructor(t,e,i){super(t,e,{enable:!0,...i}),this.handleEvent=n=>{this.handleOverEvent(n),this.handleOutEvent(n),this.handleEnterEvent(n),this.handleLeaveEvent(n),this.handleMoveEvent(n)},this.pressed=!1;const{enable:s}=this.options;this.enableMoveEvent=s,this.enableLeaveEvent=s,this.enableEnterEvent=s,this.enableOutEvent=s,this.enableOverEvent=s,Pt.forEach(n=>t.addEventListener(n,this.handleEvent))}destroy(){Pt.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,e){switch(t){case"pointermove":this.enableMoveEvent=e;break;case"pointerover":this.enableOverEvent=e;break;case"pointerout":this.enableOutEvent=e;break;case"pointerenter":this.enableEnterEvent=e;break;case"pointerleave":this.enableLeaveEvent=e;break}}handleOverEvent(t){this.enableOverEvent&&t.type==="mouseover"&&this._emit("pointerover",t)}handleOutEvent(t){this.enableOutEvent&&t.type==="mouseout"&&this._emit("pointerout",t)}handleEnterEvent(t){this.enableEnterEvent&&t.type==="mouseenter"&&this._emit("pointerenter",t)}handleLeaveEvent(t){this.enableLeaveEvent&&t.type==="mouseleave"&&this._emit("pointerleave",t)}handleMoveEvent(t){if(this.enableMoveEvent)switch(t.type){case"mousedown":t.button>=0&&(this.pressed=!0);break;case"mousemove":t.buttons===0&&(this.pressed=!1),this.pressed||this._emit("pointermove",t);break;case"mouseup":this.pressed=!1;break}}_emit(t,e){this.callback({type:t,center:{x:e.clientX,y:e.clientY},srcEvent:e,pointerType:"mouse",target:e.target})}}const St=["keydown","keyup"];class je extends nt{constructor(t,e,i){super(t,e,{enable:!0,tabIndex:0,...i}),this.handleEvent=s=>{const n=s.target||s.srcElement;n.tagName==="INPUT"&&n.type==="text"||n.tagName==="TEXTAREA"||(this.enableDownEvent&&s.type==="keydown"&&this.callback({type:"keydown",srcEvent:s,key:s.key,target:s.target}),this.enableUpEvent&&s.type==="keyup"&&this.callback({type:"keyup",srcEvent:s,key:s.key,target:s.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,t.tabIndex=this.options.tabIndex,t.style.outline="none",St.forEach(s=>t.addEventListener(s,this.handleEvent))}destroy(){St.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,e){t==="keydown"&&(this.enableDownEvent=e),t==="keyup"&&(this.enableUpEvent=e)}}class Ue extends nt{constructor(t,e,i){super(t,e,i),this.handleEvent=s=>{this.options.enable&&this.callback({type:"contextmenu",center:{x:s.clientX,y:s.clientY},srcEvent:s,pointerType:"mouse",target:s.target})},t.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(t,e){t==="contextmenu"&&(this.options.enable=e)}}const bt=1,tt=2,Ct=4,Be={pointerdown:bt,pointermove:tt,pointerup:Ct,mousedown:bt,mousemove:tt,mouseup:Ct},We=0,Ge=1,He=2,Ze=1,$e=2,qe=4;function Xe(o){const t=Be[o.srcEvent.type];if(!t)return null;const{buttons:e,button:i}=o.srcEvent;let s=!1,n=!1,r=!1;return t===tt?(s=!!(e&Ze),n=!!(e&qe),r=!!(e&$e)):(s=i===We,n=i===Ge,r=i===He),{leftButton:s,middleButton:n,rightButton:r}}function Ye(o,t){const e=o.center;if(!e)return null;const i=t.getBoundingClientRect(),s=i.width/t.offsetWidth||1,n=i.height/t.offsetHeight||1,r={x:(e.x-i.left-t.clientLeft)/s,y:(e.y-i.top-t.clientTop)/n};return{center:e,offsetCenter:r}}const Ke={srcElement:"root",priority:0};class Je{constructor(t,e){this.handleEvent=i=>{if(this.isEmpty())return;const s=this._normalizeEvent(i);let n=i.srcEvent.target;for(;n&&n!==s.rootElement;){if(this._emit(s,n),s.handled)return;n=n.parentNode}this._emit(s,"root")},this.eventManager=t,this.recognizerName=e,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(t,e,i,s=!1,n=!1){const{handlers:r,handlersByElement:a}=this,h={...Ke,...i};let c=a.get(h.srcElement);c||(c=[],a.set(h.srcElement,c));const l={type:t,handler:e,srcElement:h.srcElement,priority:h.priority};s&&(l.once=!0),n&&(l.passive=!0),r.push(l),this._active=this._active||!l.passive;let u=c.length-1;for(;u>=0&&!(c[u].priority>=l.priority);)u--;c.splice(u+1,0,l)}remove(t,e){const{handlers:i,handlersByElement:s}=this;for(let n=i.length-1;n>=0;n--){const r=i[n];if(r.type===t&&r.handler===e){i.splice(n,1);const a=s.get(r.srcElement);a.splice(a.indexOf(r),1),a.length===0&&s.delete(r.srcElement)}}this._active=i.some(n=>!n.passive)}_emit(t,e){const i=this.handlersByElement.get(e);if(i){let s=!1;const n=()=>{t.handled=!0},r=()=>{t.handled=!0,s=!0},a=[];for(let h=0;h<i.length;h++){const{type:c,handler:l,once:u}=i[h];if(l({...t,type:c,stopPropagation:n,stopImmediatePropagation:r}),u&&a.push(i[h]),s)break}for(let h=0;h<a.length;h++){const{type:c,handler:l}=a[h];this.remove(c,l)}}}_normalizeEvent(t){const e=this.eventManager.getElement();return{...t,...Xe(t),...Ye(t,e),preventDefault:()=>{t.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:e}}}function Qe(o){if("recognizer"in o)return o;let t;const e=Array.isArray(o)?[...o]:[o];if(typeof e[0]=="function"){const i=e.shift(),s=e.shift()||{};t=new i(s)}else t=e.shift();return{recognizer:t,recognizeWith:typeof e[0]=="string"?[e[0]]:e[0],requireFailure:typeof e[1]=="string"?[e[1]]:e[1]}}class ti{constructor(t=null,e={}){if(this._onBasicInput=i=>{this.manager.emit(i.srcEvent.type,i)},this._onOtherEvent=i=>{this.manager.emit(i.type,i)},this.options={recognizers:[],events:{},touchAction:"compute",tabIndex:0,cssProps:{},...e},this.events=new Map,this.element=t,!!t){this.manager=new Fe(t,this.options);for(const i of this.options.recognizers){const{recognizer:s,recognizeWith:n,requireFailure:r}=Qe(i);this.manager.add(s),n&&s.recognizeWith(n),r&&s.requireFailure(r)}this.manager.on("hammer.input",this._onBasicInput),this.wheelInput=new fe(t,this._onOtherEvent,{enable:!1}),this.moveInput=new Ne(t,this._onOtherEvent,{enable:!1}),this.keyInput=new je(t,this._onOtherEvent,{enable:!1,tabIndex:e.tabIndex}),this.contextmenuInput=new Ue(t,this._onOtherEvent,{enable:!1}),this.on(this.options.events)}}getElement(){return this.element}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy())}on(t,e,i){this._addEventHandler(t,e,i,!1)}once(t,e,i){this._addEventHandler(t,e,i,!0)}watch(t,e,i){this._addEventHandler(t,e,i,!1,!0)}off(t,e){this._removeEventHandler(t,e)}_toggleRecognizer(t,e){const{manager:i}=this;if(!i)return;const s=i.get(t);s&&(s.set({enable:e}),i.touchAction.update()),this.wheelInput?.enableEventType(t,e),this.moveInput?.enableEventType(t,e),this.keyInput?.enableEventType(t,e),this.contextmenuInput?.enableEventType(t,e)}_addEventHandler(t,e,i,s,n){if(typeof t!="string"){i=e;for(const[c,l]of Object.entries(t))this._addEventHandler(c,l,i,s,n);return}const{manager:r,events:a}=this;if(!r)return;let h=a.get(t);if(!h){const c=this._getRecognizerName(t)||t;h=new Je(this,c),a.set(t,h),r&&r.on(t,h.handleEvent)}h.add(t,e,i,s,n),h.isEmpty()||this._toggleRecognizer(h.recognizerName,!0)}_removeEventHandler(t,e){if(typeof t!="string"){for(const[n,r]of Object.entries(t))this._removeEventHandler(n,r);return}const{events:i}=this,s=i.get(t);if(s&&(s.remove(t,e),s.isEmpty())){const{recognizerName:n}=s;let r=!1;for(const a of i.values())if(a.recognizerName===n&&!a.isEmpty()){r=!0;break}r||this._toggleRecognizer(n,!1)}}_getRecognizerName(t){return this.manager.recognizers.find(e=>e.getEventNames().includes(t))?.options.event}}const Mt=512;function ei(o){const{width:t,height:e,pitch:i=0}=o;let{longitude:s,latitude:n,zoom:r,bearing:a=0}=o;(s<-180||s>180)&&(s=pt(s+180,360)-180),(a<-180||a>180)&&(a=pt(a+180,360)-180);const h=ge(e/Mt);if(r<=h)r=h,n=0;else{const c=e/2/Math.pow(2,r),l=ft([0,c])[1];if(n<l)n=l;else{const u=ft([0,Mt-c])[1];n>u&&(n=u)}}return{width:t,height:e,longitude:s,latitude:n,zoom:r,pitch:i,bearing:a}}const Ht=`
6
+ uniform shadowUniforms {
7
+ bool drawShadowMap;
8
+ bool useShadowMap;
9
+ vec4 color;
10
+ highp int lightId;
11
+ float lightCount;
12
+ mat4 viewProjectionMatrix0;
13
+ mat4 viewProjectionMatrix1;
14
+ vec4 projectCenter0;
15
+ vec4 projectCenter1;
16
+ } shadow;
17
+ `,ii=`
18
+ const int max_lights = 2;
19
+
20
+ out vec3 shadow_vPosition[max_lights];
21
+
22
+ vec4 shadow_setVertexPosition(vec4 position_commonspace) {
23
+ mat4 viewProjectionMatrices[max_lights];
24
+ viewProjectionMatrices[0] = shadow.viewProjectionMatrix0;
25
+ viewProjectionMatrices[1] = shadow.viewProjectionMatrix1;
26
+ vec4 projectCenters[max_lights];
27
+ projectCenters[0] = shadow.projectCenter0;
28
+ projectCenters[1] = shadow.projectCenter1;
29
+
30
+ if (shadow.drawShadowMap) {
31
+ return project_common_position_to_clipspace(position_commonspace, viewProjectionMatrices[shadow.lightId], projectCenters[shadow.lightId]);
32
+ }
33
+ if (shadow.useShadowMap) {
34
+ for (int i = 0; i < max_lights; i++) {
35
+ if(i < int(shadow.lightCount)) {
36
+ vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, viewProjectionMatrices[i], projectCenters[i]);
37
+ shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;
38
+ }
39
+ }
40
+ }
41
+ return gl_Position;
42
+ }
43
+ `,si=`
44
+ ${Ht}
45
+ ${ii}
46
+ `,ni=`
47
+ const int max_lights = 2;
48
+ uniform sampler2D shadow_uShadowMap0;
49
+ uniform sampler2D shadow_uShadowMap1;
50
+
51
+ in vec3 shadow_vPosition[max_lights];
52
+
53
+ const vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);
54
+ const vec4 bitUnpackShift = 1.0 / bitPackShift;
55
+ const vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);
56
+
57
+ float shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {
58
+ vec4 rgbaDepth = texture(shadowMap, position.xy);
59
+
60
+ float z = dot(rgbaDepth, bitUnpackShift);
61
+ return smoothstep(0.001, 0.01, position.z - z);
62
+ }
63
+
64
+ vec4 shadow_filterShadowColor(vec4 color) {
65
+ if (shadow.drawShadowMap) {
66
+ vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);
67
+ rgbaDepth -= rgbaDepth.gbaa * bitMask;
68
+ return rgbaDepth;
69
+ }
70
+ if (shadow.useShadowMap) {
71
+ float shadowAlpha = 0.0;
72
+ shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);
73
+ if(shadow.lightCount > 1.0) {
74
+ shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);
75
+ }
76
+ shadowAlpha *= shadow.color.a / shadow.lightCount;
77
+ float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);
78
+
79
+ return vec4(
80
+ mix(color.rgb, shadow.color.rgb, shadowAlpha / blendedAlpha),
81
+ blendedAlpha
82
+ );
83
+ }
84
+ return color;
85
+ }
86
+ `,ri=`
87
+ ${Ht}
88
+ ${ni}
89
+ `,oi=Nt(di),ai=Nt(ui),hi=[0,0,0,1],ci=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function li(o,t){const[e,i,s]=o,n=_e([e,i,s],t);return Number.isFinite(s)?n:[n[0],n[1],0]}function di({viewport:o,center:t}){return new rt(o.viewProjectionMatrix).invert().transform(t)}function ui({viewport:o,shadowMatrices:t}){const e=[],i=o.pixelUnprojectionMatrix,s=o.isGeospatial?void 0:1,n=[[0,0,s],[o.width,0,s],[0,o.height,s],[o.width,o.height,s],[0,0,-1],[o.width,0,-1],[0,o.height,-1],[o.width,o.height,-1]].map(r=>li(r,i));for(const r of t){const a=r.clone().translate(new q(o.center).negate()),h=n.map(l=>a.transform(l)),c=new rt().ortho({left:Math.min(...h.map(l=>l[0])),right:Math.max(...h.map(l=>l[0])),bottom:Math.min(...h.map(l=>l[1])),top:Math.max(...h.map(l=>l[1])),near:Math.min(...h.map(l=>-l[2])),far:Math.max(...h.map(l=>-l[2]))});e.push(c.multiplyRight(r))}return e}function pi(o){const{shadowEnabled:t=!0,project:e}=o;if(!t||!e||!o.shadowMatrices||!o.shadowMatrices.length)return{drawShadowMap:!1,useShadowMap:!1,shadow_uShadowMap0:o.dummyShadowMap,shadow_uShadowMap1:o.dummyShadowMap};const i=Ft.getUniforms(e),s=oi({viewport:e.viewport,center:i.center}),n=[],r=ai({shadowMatrices:o.shadowMatrices,viewport:e.viewport}).slice();for(let h=0;h<o.shadowMatrices.length;h++){const c=r[h],l=c.clone().translate(new q(e.viewport.center).negate());i.coordinateSystem===me.LNGLAT&&i.projectionMode===we.WEB_MERCATOR?(r[h]=l,n[h]=s):(r[h]=c.clone().multiplyRight(ci),n[h]=l.transform(s))}const a={drawShadowMap:!!o.drawToShadowMap,useShadowMap:o.shadowMaps?o.shadowMaps.length>0:!1,color:o.shadowColor||hi,lightId:o.shadowLightId||0,lightCount:o.shadowMatrices.length,shadow_uShadowMap0:o.dummyShadowMap,shadow_uShadowMap1:o.dummyShadowMap};for(let h=0;h<r.length;h++)a[`viewProjectionMatrix${h}`]=r[h],a[`projectCenter${h}`]=n[h];for(let h=0;h<2;h++)a[`shadow_uShadowMap${h}`]=o.shadowMaps&&o.shadowMaps[h]||o.dummyShadowMap;return a}const Tt={name:"shadow",dependencies:[Ft],vs:si,fs:ri,inject:{"vs:DECKGL_FILTER_GL_POSITION":`
90
+ position = shadow_setVertexPosition(geometry.position);
91
+ `,"fs:DECKGL_FILTER_COLOR":`
92
+ color = shadow_filterShadowColor(color);
93
+ `},getUniforms:pi,uniformTypes:{drawShadowMap:"f32",useShadowMap:"f32",color:"vec4<f32>",lightId:"i32",lightCount:"f32",viewProjectionMatrix0:"mat4x4<f32>",viewProjectionMatrix1:"mat4x4<f32>",projectCenter0:"vec4<f32>",projectCenter1:"vec4<f32>"}},fi=[ee],gi=["vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)","vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)","vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)","fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)"],mi=[];function wi(o){const t=ie.getDefaultShaderAssembler();for(const i of fi)t.addDefaultModule(i);t._hookFunctions.length=0;const e=o==="glsl"?gi:mi;for(const i of e)t.addShaderHook(i);return t}const _i=[255,255,255],vi=1;let yi=0;class Ei{constructor(t={}){this.type="ambient";const{color:e=_i}=t,{intensity:i=vi}=t;this.id=t.id||`ambient-${yi++}`,this.color=e,this.intensity=i}}const Pi=[255,255,255],Si=1,bi=[0,0,-1];let Ci=0;class kt{constructor(t={}){this.type="directional";const{color:e=Pi}=t,{intensity:i=Si}=t,{direction:s=bi}=t,{_shadow:n=!1}=t;this.id=t.id||`directional-${Ci++}`,this.color=e,this.intensity=i,this.type="directional",this.direction=new q(s).normalize().toArray(),this.shadow=n}getProjectedLight(t){return this}}class Mi extends Bt{constructor(t,e){super(t,e);const i=t.createTexture({format:"rgba8unorm",width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),s=t.createTexture({format:"depth16unorm",width:1,height:1});this.fbo=t.createFramebuffer({id:"shadowmap",width:1,height:1,colorAttachments:[i],depthStencilAttachment:s})}delete(){this.fbo&&(this.fbo.destroy(),this.fbo=null)}getShadowMap(){return this.fbo.colorAttachments[0].texture}render(t){const e=this.fbo,i=this.device.canvasContext.cssToDeviceRatio(),s=t.viewports[0],n=s.width*i,r=s.height*i,a=[1,1,1,1];(n!==e.width||r!==e.height)&&e.resize({width:n,height:r}),super.render({...t,clearColor:a,target:e,pass:"shadow"})}getLayerParameters(t,e,i){return{...t.props.parameters,blend:!1,depthWriteEnabled:!0,depthCompare:"less-equal"}}shouldDrawLayer(t){return t.props.shadowEnabled!==!1}getShaderModuleProps(t,e,i){return{shadow:{project:i.project,drawToShadowMap:!0}}}}const Ti={color:[255,255,255],intensity:1},Lt=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],ki=[0,0,0,200/255];class Zt{constructor(t={}){this.id="lighting-effect",this.shadowColor=ki,this.shadow=!1,this.directionalLights=[],this.pointLights=[],this.shadowPasses=[],this.dummyShadowMap=null,this.setProps(t)}setup(t){this.context=t;const{device:e,deck:i}=t;this.shadow&&!this.dummyShadowMap&&(this._createShadowPasses(e),i._addDefaultShaderModule(Tt),this.dummyShadowMap=e.createTexture({width:1,height:1}))}setProps(t){this.ambientLight=void 0,this.directionalLights=[],this.pointLights=[];for(const e in t){const i=t[e];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i);break}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(e=>e.shadow),this.context&&this.setup(this.context),this.props=t}preRender({layers:t,layerFilter:e,viewports:i,onViewportActive:s,views:n}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let r=0;r<this.shadowPasses.length;r++)this.shadowPasses[r].render({layers:t,layerFilter:e,viewports:i,onViewportActive:s,views:n,shaderModuleProps:{shadow:{shadowLightId:r,dummyShadowMap:this.dummyShadowMap,shadowMatrices:this.shadowMatrices}}})}}getShaderModuleProps(t,e){const i=this.shadow?{project:e.project,shadowMaps:this.shadowPasses.map(r=>r.getShadowMap()),dummyShadowMap:this.dummyShadowMap,shadowColor:this.shadowColor,shadowMatrices:this.shadowMatrices}:{},s={enabled:!0,ambientLight:this.ambientLight,directionalLights:this.directionalLights.map(r=>r.getProjectedLight({layer:t})),pointLights:this.pointLights.map(r=>r.getProjectedLight({layer:t}))},n=t.props.material;return{shadow:i,lighting:s,phongMaterial:n,gouraudMaterial:n}}cleanup(t){for(const e of this.shadowPasses)e.delete();this.shadowPasses.length=0,this.dummyShadowMap&&(this.dummyShadowMap.destroy(),this.dummyShadowMap=null,t.deck._removeDefaultShaderModule(Tt))}_calculateMatrices(){const t=[];for(const e of this.directionalLights){const i=new rt().lookAt({eye:new q(e.direction).negate()});t.push(i)}return t}_createShadowPasses(t){for(let e=0;e<this.directionalLights.length;e++){const i=new Mi(t);this.shadowPasses[e]=i}}_applyDefaultLights(){const{ambientLight:t,pointLights:e,directionalLights:i}=this;!t&&e.length===0&&i.length===0&&(this.ambientLight=new Ei(Ti),this.directionalLights.push(new kt(Lt[0]),new kt(Lt[1])))}}let Li=1,Ri=1;class $t{time=0;channels=new Map;animations=new Map;playing=!1;lastEngineTime=-1;constructor(){}addChannel(t){const{delay:e=0,duration:i=Number.POSITIVE_INFINITY,rate:s=1,repeat:n=1}=t,r=Li++,a={time:0,delay:e,duration:i,rate:s,repeat:n};return this._setChannelTime(a,this.time),this.channels.set(r,a),r}removeChannel(t){this.channels.delete(t);for(const[e,i]of this.animations)i.channel===t&&this.detachAnimation(e)}isFinished(t){const e=this.channels.get(t);return e===void 0?!1:this.time>=e.delay+e.duration*e.repeat}getTime(t){if(t===void 0)return this.time;const e=this.channels.get(t);return e===void 0?-1:e.time}setTime(t){this.time=Math.max(0,t);const e=this.channels.values();for(const s of e)this._setChannelTime(s,this.time);const i=this.animations.values();for(const s of i){const{animation:n,channel:r}=s;n.setTime(this.getTime(r))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(t,e){const i=Ri++;return this.animations.set(i,{animation:t,channel:e}),t.setTime(this.getTime(e)),i}detachAnimation(t){this.animations.delete(t)}update(t){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=t),this.setTime(this.time+(t-this.lastEngineTime)),this.lastEngineTime=t)}_setChannelTime(t,e){const i=e-t.delay,s=t.duration*t.repeat;i>=s?t.time=t.duration*t.rate:(t.time=Math.max(0,i)%t.duration,t.time*=t.rate)}}function xi(o){return typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(o):setTimeout(o,1e3/60)}function Ii(o){return typeof window<"u"&&window.cancelAnimationFrame?window.cancelAnimationFrame(o):clearTimeout(o)}let Ai=0;class ht{static defaultAnimationLoopProps={device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:t=>console.error(t),stats:Q.stats.get(`animation-loop-${Ai++}`),autoResizeViewport:!1};device=null;canvas=null;props;animationProps=null;timeline=null;stats;cpuTime;gpuTime;frameRate;display;needsRedraw="initialized";_initialized=!1;_running=!1;_animationFrameId=null;_nextFramePromise=null;_resolveNextFrame=null;_cpuStartTime=0;_error=null;constructor(t){if(this.props={...ht.defaultAnimationLoopProps,...t},t=this.props,!t.device)throw new Error("No device provided");this.stats=t.stats||new ot({id:"animation-loop-stats"}),this.cpuTime=this.stats.get("CPU Time"),this.gpuTime=this.stats.get("GPU Time"),this.frameRate=this.stats.get("Frame Rate"),this.setProps({autoResizeViewport:t.autoResizeViewport}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}destroy(){this.stop(),this._setDisplay(null)}delete(){this.destroy()}reportError(t){this.props.onError(t),this._error=t}setNeedsRedraw(t){return this.needsRedraw=this.needsRedraw||t,this}setProps(t){return"autoResizeViewport"in t&&(this.props.autoResizeViewport=t.autoResizeViewport||!1),this}async start(){if(this._running)return this;this._running=!0;try{let t;return this._initialized||(this._initialized=!0,await this._initDevice(),this._initialize(),await this.props.onInitialize(this._getAnimationProps())),this._running?(t!==!1&&(this._cancelAnimationFrame(),this._requestAnimationFrame()),this):null}catch(t){const e=t instanceof Error?t:new Error("Unknown error");throw this.props.onError(e),e}}stop(){return this._running&&(this.animationProps&&!this._error&&this.props.onFinalize(this.animationProps),this._cancelAnimationFrame(),this._nextFramePromise=null,this._resolveNextFrame=null,this._running=!1),this}redraw(){return this.device?.isLost||this._error?this:(this._beginFrameTimers(),this._setupFrame(),this._updateAnimationProps(),this._renderFrame(this._getAnimationProps()),this._clearNeedsRedraw(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endFrameTimers(),this)}attachTimeline(t){return this.timeline=t,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(t=>{this._resolveNextFrame=t})),this._nextFramePromise}async toDataURL(){if(this.setNeedsRedraw("toDataURL"),await this.waitForRender(),this.canvas instanceof HTMLCanvasElement)return this.canvas.toDataURL();throw new Error("OffscreenCanvas")}_initialize(){this._startEventHandling(),this._initializeAnimationProps(),this._updateAnimationProps(),this._resizeViewport()}_setDisplay(t){this.display&&(this.display.destroy(),this.display.animationLoop=null),t&&(t.animationLoop=this),this.display=t}_requestAnimationFrame(){this._running&&(this._animationFrameId=xi(this._animationFrame.bind(this)))}_cancelAnimationFrame(){this._animationFrameId!==null&&(Ii(this._animationFrameId),this._animationFrameId=null)}_animationFrame(){this._running&&(this.redraw(),this._requestAnimationFrame())}_renderFrame(t){if(this.display){this.display._renderFrame(t);return}this.props.onRender(this._getAnimationProps()),this.device?.submit()}_clearNeedsRedraw(){this.needsRedraw=!1}_setupFrame(){this._resizeViewport()}_initializeAnimationProps(){const t=this.device?.getDefaultCanvasContext();if(!this.device||!t)throw new Error("loop");const e=t?.canvas,i=t.props.useDevicePixels;this.animationProps={animationLoop:this,device:this.device,canvasContext:t,canvas:e,useDevicePixels:i,timeline:this.timeline,needsRedraw:!1,width:1,height:1,aspect:1,time:0,startTime:Date.now(),engineTime:0,tick:0,tock:0,_mousePosition:null}}_getAnimationProps(){if(!this.animationProps)throw new Error("animationProps");return this.animationProps}_updateAnimationProps(){if(!this.animationProps)return;const{width:t,height:e,aspect:i}=this._getSizeAndAspect();(t!==this.animationProps.width||e!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=t,this.animationProps.height=e,this.animationProps.aspect=i,this.animationProps.needsRedraw=this.needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime}async _initDevice(){if(this.device=await this.props.device,!this.device)throw new Error("No device provided");this.canvas=this.device.getDefaultCanvasContext().canvas||null}_createInfoDiv(){if(this.canvas&&this.props.onAddHTML){const t=document.createElement("div");document.body.appendChild(t),t.style.position="relative";const e=document.createElement("div");e.style.position="absolute",e.style.left="10px",e.style.bottom="10px",e.style.width="300px",e.style.background="white",this.canvas instanceof HTMLCanvasElement&&t.appendChild(this.canvas),t.appendChild(e);const i=this.props.onAddHTML(e);i&&(e.innerHTML=i)}}_getSizeAndAspect(){if(!this.device)return{width:1,height:1,aspect:1};const[t,e]=this.device?.getDefaultCanvasContext().getDevicePixelSize()||[1,1];let i=1;const s=this.device?.getDefaultCanvasContext().canvas;return s&&s.clientHeight?i=s.clientWidth/s.clientHeight:t>0&&e>0&&(i=t/e),{width:t,height:e,aspect:i}}_resizeViewport(){this.props.autoResizeViewport&&this.device.gl&&this.device.gl.viewport(0,0,this.device.gl.drawingBufferWidth,this.device.gl.drawingBufferHeight)}_beginFrameTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this.cpuTime.timeStart()}_endFrameTimers(){this.cpuTime.timeEnd()}_startEventHandling(){this.canvas&&(this.canvas.addEventListener("mousemove",this._onMousemove.bind(this)),this.canvas.addEventListener("mouseleave",this._onMouseleave.bind(this)))}_onMousemove(t){t instanceof MouseEvent&&(this._getAnimationProps()._mousePosition=[t.offsetX,t.offsetY])}_onMouseleave(t){this._getAnimationProps()._mousePosition=null}}class Oi{constructor(t,e,i){this._loadCount=0,this._subscribers=new Set,this.id=t,this.context=i,this.setData(e)}subscribe(t){this._subscribers.add(t)}unsubscribe(t){this._subscribers.delete(t)}inUse(){return this._subscribers.size>0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(t,e){if(t===this._data&&!e)return;this._data=t;const i=++this._loadCount;let s=t;typeof t=="string"&&(s=re(t)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=n)}).catch(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=n||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=t);for(const n of this._subscribers)n.onChange(this.getData())}}class Vi{constructor(t){this.protocol=t.protocol||"resource://",this._context={device:t.device,gl:t.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(t){return t.startsWith(this.protocol)?!0:t in this._resources}add({resourceId:t,data:e,forceUpdate:i=!1,persistent:s=!0}){let n=this._resources[t];n?n.setData(e,i):(n=new Oi(t,e,this._context),this._resources[t]=n),n.persistent=s}remove(t){const e=this._resources[t];e&&(e.delete(),delete this._resources[t])}unsubscribe({consumerId:t}){const e=this._consumers[t];if(e){for(const i in e){const s=e[i],n=this._resources[s.resourceId];n&&n.unsubscribe(s)}delete this._consumers[t],this.prune()}}subscribe({resourceId:t,onChange:e,consumerId:i,requestId:s="default"}){const{_resources:n,protocol:r}=this;t.startsWith(r)&&(t=t.replace(r,""),n[t]||this.add({resourceId:t,data:null,persistent:!1}));const a=n[t];if(this._track(i,s,a,e),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(const t in this._resources)this._resources[t].delete()}_track(t,e,i,s){const n=this._consumers,r=n[t]=n[t]||{};let a=r[e];const h=a&&a.resourceId&&this._resources[a.resourceId];h&&(h.unsubscribe(a),this.prune()),i&&(a?(a.onChange=s,a.resourceId=i.id):a={onChange:s,resourceId:i.id},r[e]=a,i.subscribe(a))}_prune(){this._pruneRequest=null;for(const t of Object.keys(this._resources)){const e=this._resources[t];!e.persistent&&!e.inUse()&&(e.delete(),delete this._resources[t])}}}const Di="layerManager.setLayers",zi="layerManager.activateViewport";class Fi{constructor(t,e){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{K(zi,this,a),a&&(this.context.viewport=a)};const{deck:i,stats:s,viewport:n,timeline:r}=e||{};this.layers=[],this.resourceManager=new Vi({device:t,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:t,gl:t?.gl,deck:i,shaderAssembler:wi(t?.info?.shadingLanguage||"glsl"),defaultShaderModules:[Ie],renderPass:void 0,stats:s||new ot({id:"deck.gl"}),viewport:n||new ve({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:r||new $t,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(const t of this.layers)this._finalizeLayer(t)}needsRedraw(t={clearRedrawFlags:!1}){let e=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);for(const i of this.layers){const s=i.getNeedsRedraw(t);e=e||s}return e}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(t){this._needsRedraw=this._needsRedraw||t}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t}getLayers({layerIds:t}={}){return t?this.layers.filter(e=>t.find(i=>e.id.indexOf(i)===0)):this.layers}setProps(t){"debug"in t&&(this._debug=t.debug),"userData"in t&&(this.context.userData=t.userData),"layers"in t&&(this._nextLayers=t.layers),"onError"in t&&(this.context.onError=t.onError)}setLayers(t,e){K(Di,this,e,t),this._lastRenderedLayers=t;const i=jt(t,Boolean);for(const s of i)s.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){const t=this.needsUpdate();t&&(this.setNeedsRedraw(`updating layers: ${t}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,t)),this._nextLayers=null}addDefaultShaderModule(t){const{defaultShaderModules:e}=this.context;e.find(i=>i.name===t.name)||(e.push(t),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(t){const{defaultShaderModules:e}=this.context,i=e.findIndex(s=>s.name===t.name);i>=0&&(e.splice(i,1),this._defaultShaderModulesChanged=!0)}_handleError(t,e,i){i.raiseError(e,`${t} of ${i}`)}_updateLayers(t,e){const i={};for(const r of t)i[r.id]?S.warn(`Multiple old layers with same id ${r.id}`)():i[r.id]=r;if(this._defaultShaderModulesChanged){for(const r of t)r.setNeedsUpdate(),r.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}const s=[];this._updateSublayersRecursively(e,i,s),this._finalizeOldLayers(i);let n=!1;for(const r of s)if(r.hasUniformTransition()){n=`Uniform transition in ${r}`;break}this._needsUpdate=n,this.layers=s}_updateSublayersRecursively(t,e,i){for(const s of t){s.context=this.context;const n=e[s.id];n===null&&S.warn(`Multiple new layers with same id ${s.id}`)(),e[s.id]=null;let r=null;try{this._debug&&n!==s&&s.validateProps(),n?(this._transferLayerState(n,s),this._updateLayer(s)):this._initializeLayer(s),i.push(s),r=s.isComposite?s.getSubLayers():null}catch(a){this._handleError("matching",a,s)}r&&this._updateSublayersRecursively(r,e,i)}}_finalizeOldLayers(t){for(const e in t){const i=t[e];i&&this._finalizeLayer(i)}}_initializeLayer(t){try{t._initialize(),t.lifecycle=B.INITIALIZED}catch(e){this._handleError("initialization",e,t)}}_transferLayerState(t,e){e._transferState(t),e.lifecycle=B.MATCHED,e!==t&&(t.lifecycle=B.AWAITING_GC)}_updateLayer(t){try{t._update()}catch(e){this._handleError("update",e,t)}}_finalizeLayer(t){this._needsRedraw=this._needsRedraw||`finalized ${t}`,t.lifecycle=B.AWAITING_FINALIZATION;try{t._finalize(),t.lifecycle=B.FINALIZED}catch(e){this._handleError("finalization",e,t)}}}class Ni{constructor(t){this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=t.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=t.eventManager,this._eventCallbacks={onViewStateChange:t.onViewStateChange,onInteractionStateChange:t.onInteractionStateChange},Object.seal(this),this.setProps(t)}finalize(){for(const t in this.controllers){const e=this.controllers[t];e&&e.finalize()}this.controllers={}}needsRedraw(t={clearRedrawFlags:!1}){const e=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),e}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t,this._needsRedraw=this._needsRedraw||t}updateViewStates(){for(const t in this.controllers){const e=this.controllers[t];e&&e.updateTransition()}}getViewports(t){return t?this._viewports.filter(e=>e.containsPixel(t)):this._viewports}getViews(){const t={};return this.views.forEach(e=>{t[e.id]=e}),t}getView(t){return this.views.find(e=>e.id===t)}getViewState(t){const e=typeof t=="string"?this.getView(t):t,i=e&&this.viewState[e.getViewStateId()]||this.viewState;return e?e.filterViewState(i):i}getViewport(t){return this._viewportMap[t]}unproject(t,e){const i=this.getViewports(),s={x:t[0],y:t[1]};for(let n=i.length-1;n>=0;--n){const r=i[n];if(r.containsPixel(s)){const a=t.slice();return a[0]-=r.x,a[1]-=r.y,r.unproject(a,e)}}return null}setProps(t){t.views&&this._setViews(t.views),t.viewState&&this._setViewState(t.viewState),("width"in t||"height"in t)&&this._setSize(t.width,t.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(t,e){(t!==this.width||e!==this.height)&&(this.width=t,this.height=e,this.setNeedsUpdate("Size changed"))}_setViews(t){t=jt(t,Boolean),this._diffViews(t,this.views)&&this.setNeedsUpdate("views changed"),this.views=t}_setViewState(t){t?(!W(t,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=t):S.warn("missing `viewState` or `initialViewState`")()}_createController(t,e){const i=e.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:n=>this.getView(t.id)?.makeViewport({viewState:n,width:this.width,height:this.height})})}_updateController(t,e,i,s){const n=t.controller;if(n&&i){const r={...e,...n,id:t.id,x:i.x,y:i.y,width:i.width,height:i.height};return(!s||s.constructor!==n.type)&&(s=this._createController(t,r)),s&&s.setProps(r),s}return null}_rebuildViewports(){const{views:t}=this,e=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let s=t.length;s--;){const n=t[s],r=this.getViewState(n),a=n.makeViewport({viewState:r,width:this.width,height:this.height});let h=e[n.id];const c=!!n.controller;c&&!h&&(i=!0),(i||!c)&&h&&(h.finalize(),h=null),this.controllers[n.id]=this._updateController(n,r,a,h),a&&this._viewports.unshift(a)}for(const s in e){const n=e[s];n&&!this.controllers[s]&&n.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(t=>{t.id&&(this._viewportMap[t.id]=this._viewportMap[t.id]||t)})}_diffViews(t,e){return t.length!==e.length?!0:t.some((i,s)=>!t[s].equals(e[s]))}}const ji=/([0-9]+\.?[0-9]*)(%|px)/;function x(o){switch(typeof o){case"number":return{position:o,relative:!1};case"string":const t=ji.exec(o);if(t&&t.length>=3){const e=t[2]==="%",i=parseFloat(t[1]);return{position:e?i/100:i,relative:e}}default:throw new Error(`Could not parse position string ${o}`)}}function I(o,t){return o.relative?Math.round(o.position*t):o.position}class qt{constructor(t){const{id:e,x:i=0,y:s=0,width:n="100%",height:r="100%",padding:a=null}=t;this.id=e||this.constructor.displayName||"view",this.props={...t,id:this.id},this._x=x(i),this._y=x(s),this._width=x(n),this._height=x(r),this._padding=a&&{left:x(a.left||0),right:x(a.right||0),top:x(a.top||0),bottom:x(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(t){return this===t?!0:this.constructor===t.constructor&&W(this.props,t.props,2)}clone(t){const e=this.constructor;return new e({...this.props,...t})}makeViewport({width:t,height:e,viewState:i}){i=this.filterViewState(i);const s=this.getDimensions({width:t,height:e});if(!s.height||!s.width)return null;const n=this.getViewportType(i);return new n({...i,...this.props,...s})}getViewStateId(){const{viewState:t}=this.props;return typeof t=="string"?t:t?.id||this.id}filterViewState(t){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;const e={...t};for(const i in this.props.viewState)i!=="id"&&(e[i]=this.props.viewState[i]);return e}return t}getDimensions({width:t,height:e}){const i={x:I(this._x,t),y:I(this._y,e),width:I(this._width,t),height:I(this._height,e)};return this._padding&&(i.padding={left:I(this._padding.left,t),top:I(this._padding.top,e),right:I(this._padding.right,t),bottom:I(this._padding.bottom,e)}),i}get controller(){const t=this.props.controller;return t?t===!0?{type:this.ControllerType}:typeof t=="function"?{type:t}:{type:this.ControllerType,...t}:null}}const Rt=()=>{},et={BREAK:1,SNAP_TO_END:2,IGNORE:3},Ui=o=>o,Bi=et.BREAK;class Wi{constructor(t){this._onTransitionUpdate=e=>{const{time:i,settings:{interpolator:s,startProps:n,endProps:r,duration:a,easing:h}}=e,c=h(i/a),l=s.interpolateProps(n,r,c);this.propsInTransition=this.getControllerState({...this.props,...l}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=t.getControllerState,this.propsInTransition=null,this.transition=new oe(t.timeline),this.onViewStateChange=t.onViewStateChange||Rt,this.onStateChange=t.onStateChange||Rt}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(t){let e=!1;const i=this.props;if(this.props=t,!i||this._shouldIgnoreViewportChange(i,t))return!1;if(this._isTransitionEnabled(t)){let s=i;if(this.transition.inProgress){const{interruption:n,endProps:r}=this.transition.settings;s={...i,...n===et.SNAP_TO_END?r:this.propsInTransition||i}}this._triggerTransition(s,t),e=!0}else this.transition.cancel();return e}updateTransition(){this.transition.update()}_isTransitionEnabled(t){const{transitionDuration:e,transitionInterpolator:i}=t;return(e>0||e==="auto")&&!!i}_isUpdateDueToCurrentTransition(t){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(t,this.propsInTransition):!1}_shouldIgnoreViewportChange(t,e){return this.transition.inProgress?this.transition.settings.interruption===et.IGNORE||this._isUpdateDueToCurrentTransition(e):this._isTransitionEnabled(e)?e.transitionInterpolator.arePropsEqual(t,e):!0}_triggerTransition(t,e){const i=this.getControllerState(t),s=this.getControllerState(e).shortestPathFrom(i),n=e.transitionInterpolator,r=n.getDuration?n.getDuration(t,e):e.transitionDuration;if(r===0)return;const a=n.initializeProps(t,s);this.propsInTransition={};const h={duration:r,easing:e.transitionEasing||Ui,interpolator:n,interruption:e.transitionInterruption||Bi,startProps:a.start,endProps:a.end,onStart:e.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(e.onTransitionInterrupt),onEnd:this._onTransitionEnd(e.onTransitionEnd)};this.transition.start(h),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(t){return e=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),t?.(e)}}}const R={transitionDuration:0},Gi=300,Z=o=>1-(1-o)*(1-o),F={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],KEYBOARD:["keydown"]},V={};class Xt{constructor(t){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.keyboard=!0,this.transitionManager=new Wi({...t,getControllerState:e=>new this.ControllerState(e),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=t.eventManager,this.onViewStateChange=t.onViewStateChange||(()=>{}),this.onStateChange=t.onStateChange||(()=>{}),this.makeViewport=t.makeViewport}set events(t){this.toggleEvents(this._customEvents,!1),this.toggleEvents(t,!0),this._customEvents=t,this.props&&this.setProps(this.props)}finalize(){for(const t in this._events)this._events[t]&&this.eventManager?.off(t,this.handleEvent);this.transitionManager.finalize()}handleEvent(t){this._controllerState=void 0;const e=this._eventStartBlocked;switch(t.type){case"panstart":return e?!1:this._onPanStart(t);case"panmove":return this._onPan(t);case"panend":return this._onPanEnd(t);case"pinchstart":return e?!1:this._onPinchStart(t);case"pinchmove":return this._onPinch(t);case"pinchend":return this._onPinchEnd(t);case"multipanstart":return e?!1:this._onMultiPanStart(t);case"multipanmove":return this._onMultiPan(t);case"multipanend":return this._onMultiPanEnd(t);case"dblclick":return this._onDoubleClick(t);case"wheel":return this._onWheel(t);case"keydown":return this._onKeyDown(t);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(t){const{x:e,y:i}=this.props,{offsetCenter:s}=t;return[s.x-e,s.y-i]}isPointInBounds(t,e){const{width:i,height:s}=this.props;if(e&&e.handled)return!1;const n=t[0]>=0&&t[0]<=i&&t[1]>=0&&t[1]<=s;return n&&e&&e.stopPropagation(),n}isFunctionKeyPressed(t){const{srcEvent:e}=t;return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(t){const e=setTimeout(()=>{this._eventStartBlocked===e&&(this._eventStartBlocked=null)},t);this._eventStartBlocked=e}setProps(t){t.dragMode&&(this.dragMode=t.dragMode),this.props=t,"transitionInterpolator"in t||(t.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(t);const{inertia:e}=t;this.inertia=Number.isFinite(e)?e:e===!0?Gi:0;const{scrollZoom:i=!0,dragPan:s=!0,dragRotate:n=!0,doubleClickZoom:r=!0,touchZoom:a=!0,touchRotate:h=!1,keyboard:c=!0}=t,l=!!this.onViewStateChange;this.toggleEvents(F.WHEEL,l&&i),this.toggleEvents(F.PAN,l),this.toggleEvents(F.PINCH,l&&(a||h)),this.toggleEvents(F.MULTI_PAN,l&&h),this.toggleEvents(F.DOUBLE_CLICK,l&&r),this.toggleEvents(F.KEYBOARD,l&&c),this.scrollZoom=i,this.dragPan=s,this.dragRotate=n,this.doubleClickZoom=r,this.touchZoom=a,this.touchRotate=h,this.keyboard=c}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(t,e){this.eventManager&&t.forEach(i=>{this._events[i]!==e&&(this._events[i]=e,e?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(t,e=null,i={}){const s={...t.getViewportProps(),...e},n=this.controllerState!==t;if(this.state=t.getState(),this._setInteractionState(i),n){const r=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:r,viewId:this.props.id})}}_onTransition(t){this.onViewStateChange({...t,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(t){Object.assign(this._interactionState,t),this.onStateChange(this._interactionState)}_onPanStart(t){const e=this.getCenter(t);if(!this.isPointInBounds(e,t))return!1;let i=this.isFunctionKeyPressed(t)||t.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(i=!i);const s=this.controllerState[i?"panStart":"rotateStart"]({pos:e});return this._panMove=i,this.updateViewport(s,R,{isDragging:!0}),!0}_onPan(t){return this.isDragging()?this._panMove?this._onPanMove(t):this._onPanRotate(t):!1}_onPanEnd(t){return this.isDragging()?this._panMove?this._onPanMoveEnd(t):this._onPanRotateEnd(t):!1}_onPanMove(t){if(!this.dragPan)return!1;const e=this.getCenter(t),i=this.controllerState.pan({pos:e});return this.updateViewport(i,R,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(t){const{inertia:e}=this;if(this.dragPan&&e&&t.velocity){const i=this.getCenter(t),s=[i[0]+t.velocityX*e/2,i[1]+t.velocityY*e/2],n=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:e,transitionEasing:Z},{isDragging:!1,isPanning:!0})}else{const i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(t){if(!this.dragRotate)return!1;const e=this.getCenter(t),i=this.controllerState.rotate({pos:e});return this.updateViewport(i,R,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(t){const{inertia:e}=this;if(this.dragRotate&&e&&t.velocity){const i=this.getCenter(t),s=[i[0]+t.velocityX*e/2,i[1]+t.velocityY*e/2],n=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:e,transitionEasing:Z},{isDragging:!1,isRotating:!0})}else{const i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(t){if(!this.scrollZoom)return!1;const e=this.getCenter(t);if(!this.isPointInBounds(e,t))return!1;t.srcEvent.preventDefault();const{speed:i=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:n}=t;let r=2/(1+Math.exp(-Math.abs(n*i)));n<0&&r!==0&&(r=1/r);const a=s?{...this._getTransitionProps({around:e}),transitionDuration:250}:R,h=this.controllerState.zoom({pos:e,scale:r});return this.updateViewport(h,a,{isZooming:!0,isPanning:!0}),s||this._setInteractionState({isZooming:!1,isPanning:!1}),!0}_onMultiPanStart(t){const e=this.getCenter(t);if(!this.isPointInBounds(e,t))return!1;const i=this.controllerState.rotateStart({pos:e});return this.updateViewport(i,R,{isDragging:!0}),!0}_onMultiPan(t){if(!this.touchRotate||!this.isDragging())return!1;const e=this.getCenter(t);e[0]-=t.deltaX;const i=this.controllerState.rotate({pos:e});return this.updateViewport(i,R,{isDragging:!0,isRotating:!0}),!0}_onMultiPanEnd(t){if(!this.isDragging())return!1;const{inertia:e}=this;if(this.touchRotate&&e&&t.velocityY){const i=this.getCenter(t),s=[i[0],i[1]+=t.velocityY*e/2],n=this.controllerState.rotate({pos:s});this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:e,transitionEasing:Z},{isDragging:!1,isRotating:!0}),this.blockEvents(e)}else{const i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(t){const e=this.getCenter(t);if(!this.isPointInBounds(e,t))return!1;const i=this.controllerState.zoomStart({pos:e}).rotateStart({pos:e});return V._startPinchRotation=t.rotation,V._lastPinchEvent=t,this.updateViewport(i,R,{isDragging:!0}),!0}_onPinch(t){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let e=this.controllerState;if(this.touchZoom){const{scale:i}=t,s=this.getCenter(t);e=e.zoom({pos:s,scale:i})}if(this.touchRotate){const{rotation:i}=t;e=e.rotate({deltaAngleX:V._startPinchRotation-i})}return this.updateViewport(e,R,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),V._lastPinchEvent=t,!0}_onPinchEnd(t){if(!this.isDragging())return!1;const{inertia:e}=this,{_lastPinchEvent:i}=V;if(this.touchZoom&&e&&i&&t.scale!==i.scale){const s=this.getCenter(t);let n=this.controllerState.rotateEnd();const r=Math.log2(t.scale),a=(r-Math.log2(i.scale))/(t.deltaTime-i.deltaTime),h=Math.pow(2,r+a*e/2);n=n.zoom({pos:s,scale:h}).zoomEnd(),this.updateViewport(n,{...this._getTransitionProps({around:s}),transitionDuration:e,transitionEasing:Z},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(e)}else{const s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return V._startPinchRotation=null,V._lastPinchEvent=null,!0}_onDoubleClick(t){if(!this.doubleClickZoom)return!1;const e=this.getCenter(t);if(!this.isPointInBounds(e,t))return!1;const i=this.isFunctionKeyPressed(t),s=this.controllerState.zoom({pos:e,scale:i?.5:2});return this.updateViewport(s,this._getTransitionProps({around:e}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(t){if(!this.keyboard)return!1;const e=this.isFunctionKeyPressed(t),{zoomSpeed:i,moveSpeed:s,rotateSpeedX:n,rotateSpeedY:r}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this;let h;const c={};switch(t.srcEvent.code){case"Minus":h=e?a.zoomOut(i).zoomOut(i):a.zoomOut(i),c.isZooming=!0;break;case"Equal":h=e?a.zoomIn(i).zoomIn(i):a.zoomIn(i),c.isZooming=!0;break;case"ArrowLeft":e?(h=a.rotateLeft(n),c.isRotating=!0):(h=a.moveLeft(s),c.isPanning=!0);break;case"ArrowRight":e?(h=a.rotateRight(n),c.isRotating=!0):(h=a.moveRight(s),c.isPanning=!0);break;case"ArrowUp":e?(h=a.rotateUp(r),c.isRotating=!0):(h=a.moveUp(s),c.isPanning=!0);break;case"ArrowDown":e?(h=a.rotateDown(r),c.isRotating=!0):(h=a.moveDown(s),c.isPanning=!0);break;default:return!1}return this.updateViewport(h,this._getTransitionProps(),c),!0}_getTransitionProps(t){const{transition:e}=this;return!e||!e.transitionInterpolator?R:t?{...e,transitionInterpolator:new at({...t,...e.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:e}}class Hi{constructor(t,e){this._viewportProps=this.applyConstraints(t),this._state=e}getViewportProps(){return this._viewportProps}getState(){return this._state}}const xt=5,Zi=1.2;class Yt extends Hi{constructor(t){const{width:e,height:i,latitude:s,longitude:n,zoom:r,bearing:a=0,pitch:h=0,altitude:c=1.5,position:l=[0,0,0],maxZoom:u=20,minZoom:d=0,maxPitch:f=60,minPitch:p=0,startPanLngLat:g,startZoomLngLat:w,startRotatePos:v,startBearing:y,startPitch:P,startZoom:k,normalize:b=!0}=t;D(Number.isFinite(n)),D(Number.isFinite(s)),D(Number.isFinite(r)),super({width:e,height:i,latitude:s,longitude:n,zoom:r,bearing:a,pitch:h,altitude:c,maxZoom:u,minZoom:d,maxPitch:f,minPitch:p,normalize:b,position:l},{startPanLngLat:g,startZoomLngLat:w,startRotatePos:v,startBearing:y,startPitch:P,startZoom:k}),this.makeViewport=t.makeViewport}panStart({pos:t}){return this._getUpdatedState({startPanLngLat:this._unproject(t)})}pan({pos:t,startPos:e}){const i=this.getState().startPanLngLat||this._unproject(e);if(!i)return this;const n=this.makeViewport(this.getViewportProps()).panByPosition(i,t);return this._getUpdatedState(n)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:t}){return this._getUpdatedState({startRotatePos:t,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:t,deltaAngleX:e=0,deltaAngleY:i=0}){const{startRotatePos:s,startBearing:n,startPitch:r}=this.getState();if(!s||n===void 0||r===void 0)return this;let a;return t?a=this._getNewRotation(t,s,r,n):a={bearing:n+e,pitch:r+i},this._getUpdatedState(a)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:t}){return this._getUpdatedState({startZoomLngLat:this._unproject(t),startZoom:this.getViewportProps().zoom})}zoom({pos:t,startPos:e,scale:i}){let{startZoom:s,startZoomLngLat:n}=this.getState();if(n||(s=this.getViewportProps().zoom,n=this._unproject(e)||this._unproject(t)),!n)return this;const{maxZoom:r,minZoom:a}=this.getViewportProps();let h=s+Math.log2(i);h=N(h,a,r);const c=this.makeViewport({...this.getViewportProps(),zoom:h});return this._getUpdatedState({zoom:h,...c.panByPosition(n,t)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(t=2){return this._zoomFromCenter(t)}zoomOut(t=2){return this._zoomFromCenter(1/t)}moveLeft(t=100){return this._panFromCenter([t,0])}moveRight(t=100){return this._panFromCenter([-t,0])}moveUp(t=100){return this._panFromCenter([0,t])}moveDown(t=100){return this._panFromCenter([0,-t])}rotateLeft(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-t})}rotateRight(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+t})}rotateUp(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+t})}rotateDown(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-t})}shortestPathFrom(t){const e=t.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:n}=i;return Math.abs(s-e.bearing)>180&&(i.bearing=s<0?s+360:s-360),Math.abs(n-e.longitude)>180&&(i.longitude=n<0?n+360:n-360),i}applyConstraints(t){const{maxZoom:e,minZoom:i,zoom:s}=t;t.zoom=N(s,i,e);const{maxPitch:n,minPitch:r,pitch:a}=t;t.pitch=N(a,r,n);const{normalize:h=!0}=t;return h&&Object.assign(t,ei(t)),t}_zoomFromCenter(t){const{width:e,height:i}=this.getViewportProps();return this.zoom({pos:[e/2,i/2],scale:t})}_panFromCenter(t){const{width:e,height:i}=this.getViewportProps();return this.pan({startPos:[e/2,i/2],pos:[e/2+t[0],i/2+t[1]]})}_getUpdatedState(t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}_unproject(t){const e=this.makeViewport(this.getViewportProps());return t&&e.unproject(t)}_getNewRotation(t,e,i,s){const n=t[0]-e[0],r=t[1]-e[1],a=t[1],h=e[1],{width:c,height:l}=this.getViewportProps(),u=n/c;let d=0;r>0?Math.abs(l-h)>xt&&(d=r/(h-l)*Zi):r<0&&h>xt&&(d=1-a/h),d=N(d,-1,1);const{minPitch:f,maxPitch:p}=this.getViewportProps(),g=s+180*u;let w=i;return d>0?w=i+d*(p-i):d<0&&(w=i-d*(f-i)),{pitch:w,bearing:g}}}class $i extends Xt{constructor(){super(...arguments),this.ControllerState=Yt,this.transition={transitionDuration:300,transitionInterpolator:new at({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan"}setProps(t){t.position=t.position||[0,0,0];const e=this.props;super.setProps(t),(!e||e.height!==t.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...t,...this.state}))}}class Kt extends qt{constructor(t={}){super(t)}getViewportType(){return Ut}get ControllerType(){return $i}}Kt.displayName="MapView";const qi=new Zt;function Xi(o,t){const e=o.order??1/0,i=t.order??1/0;return e-i}class Yi{constructor(t){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=t,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(t){const e=this._defaultEffects;if(!e.find(i=>i.id===t.id)){const i=e.findIndex(s=>Xi(s,t)>0);i<0?e.push(t):e.splice(i,0,t),t.setup(this._context),this._setEffects(this.effects)}}setProps(t){"effects"in t&&(W(t.effects,this.effects,1)||this._setEffects(t.effects))}needsRedraw(t={clearRedrawFlags:!1}){const e=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),e}getEffects(){return this._resolvedEffects}_setEffects(t){const e={};for(const s of this.effects)e[s.id]=s;const i=[];for(const s of t){const n=e[s.id];let r=s;n&&n!==s?n.setProps?(n.setProps(s.props),r=n):n.cleanup(this._context):n||s.setup(this._context),i.push(r),delete e[s.id]}for(const s in e)e[s].cleanup(this._context);this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),t.some(s=>s instanceof Zt)||this._resolvedEffects.push(qi),this._needsRedraw="effects changed"}finalize(){for(const t of this._resolvedEffects)t.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}}class Ki extends Bt{shouldDrawLayer(t){const{operation:e}=t.props;return e.includes("draw")||e.includes("terrain")}}const Ji="deckRenderer.renderLayers";class Qi{constructor(t){this.device=t,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Ki(t),this.pickLayersPass=new Wt(t),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(t){this.layerFilter!==t.layerFilter&&(this.layerFilter=t.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==t.drawPickingColors&&(this.drawPickingColors=t.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(t){if(!t.viewports.length)return;const e=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...t};i.effects&&this._preRender(i.effects,i);const s=this.lastPostProcessEffect?this.renderBuffers[0]:i.target;this.lastPostProcessEffect&&(i.clearColor=[0,0,0,0],i.clearCanvas=!0);const n=e.render({...i,target:s});i.effects&&(this.lastPostProcessEffect&&(i.clearCanvas=t.clearCanvas===void 0?!0:t.clearCanvas),this._postRender(i.effects,i)),this.renderCount++,K(Ji,this,n,t)}needsRedraw(t={clearRedrawFlags:!1}){const e=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),e}finalize(){const{renderBuffers:t}=this;for(const e of t)e.delete();t.length=0}_preRender(t,e){this.lastPostProcessEffect=null,e.preRenderStats=e.preRenderStats||{};for(const i of t)e.preRenderStats[i.id]=i.preRender(e),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){const{renderBuffers:t}=this,e=this.device.canvasContext.getDrawingBufferSize(),[i,s]=e;t.length===0&&[0,1].map(n=>{const r=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:i,height:s});t.push(this.device.createFramebuffer({id:`deck-renderbuffer-${n}`,colorAttachments:[r]}))});for(const n of t)n.resize(e)}_postRender(t,e){const{renderBuffers:i}=this,s={...e,inputBuffer:i[0],swapBuffer:i[1]};for(const n of t)if(n.postRender){s.target=n.id===this.lastPostProcessEffect?e.target:void 0;const r=n.postRender(s);s.inputBuffer=r,s.swapBuffer=r===i[0]?i[1]:i[0]}}}const ts={pickedColor:null,pickedObjectIndex:-1};function It({pickedColors:o,decodePickingColor:t,deviceX:e,deviceY:i,deviceRadius:s,deviceRect:n}){const{x:r,y:a,width:h,height:c}=n;let l=s*s,u=-1,d=0;for(let f=0;f<c;f++){const p=f+a-i,g=p*p;if(g>l)d+=4*h;else for(let w=0;w<h;w++){if(o[d+3]-1>=0){const y=w+r-e,P=y*y+g;P<=l&&(l=P,u=d)}d+=4}}if(u>=0){const f=o.slice(u,u+4),p=t(f);if(p){const g=Math.floor(u/4/h),w=u/4-g*h;return{...p,pickedColor:f,pickedX:r+w,pickedY:a+g}}S.error("Picked non-existent layer. Is picking buffer corrupt?")()}return ts}function At({pickedColors:o,decodePickingColor:t}){const e=new Map;if(o){for(let i=0;i<o.length;i+=4)if(o[i+3]-1>=0){const n=o.slice(i,i+4),r=n.join(",");if(!e.has(r)){const a=t(n);a?e.set(r,{...a,color:n}):S.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(e.values())}function it({pickInfo:o,viewports:t,pixelRatio:e,x:i,y:s,z:n}){let r=t[0];t.length>1&&(r=es(o?.pickedViewports||t,{x:i,y:s}));let a;if(r){const h=[i-r.x,s-r.y];n!==void 0&&(h[2]=n),a=r.unproject(h)}return{color:null,layer:null,viewport:r,index:-1,picked:!1,x:i,y:s,pixel:[i,s],coordinate:a,devicePixel:o&&"pickedX"in o?[o.pickedX,o.pickedY]:void 0,pixelRatio:e}}function Ot(o){const{pickInfo:t,lastPickedInfo:e,mode:i,layers:s}=o,{pickedColor:n,pickedLayer:r,pickedObjectIndex:a}=t,h=r?[r]:[];if(i==="hover"){const u=e.index,d=e.layerId,f=r?r.props.id:null;if(f!==d||a!==u){if(f!==d){const p=s.find(g=>g.props.id===d);p&&h.unshift(p)}e.layerId=f,e.index=a,e.info=null}}const c=it(o),l=new Map;return l.set(null,c),h.forEach(u=>{let d={...c};u===r&&(d.color=n,d.index=a,d.picked=!0),d=st({layer:u,info:d,mode:i});const f=d.layer;u===r&&i==="hover"&&(e.info=d),l.set(f.id,d),i==="hover"&&f.updateAutoHighlight(d)}),l}function st({layer:o,info:t,mode:e}){for(;o&&t;){const i=t.layer||null;t.sourceLayer=i,t.layer=o,t=o.getPickingInfo({info:t,mode:e,sourceLayer:i}),o=o.parent}return t}function es(o,t){for(let e=o.length-1;e>=0;e--){const i=o[e];if(i.containsPixel(t))return i}return o[0]}class is{constructor(t){this._pickable=!0,this.device=t,this.pickLayersPass=new Wt(t),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(t){"layerFilter"in t&&(this.layerFilter=t.layerFilter),"_pickable"in t&&(this._pickable=t._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObjectAsync(t){return this._pickClosestObjectAsync(t)}pickObjectsAsync(t){return this._pickVisibleObjectsAsync(t)}pickObject(t){return this._pickClosestObject(t)}pickObjects(t){return this._pickVisibleObjects(t)}getLastPickedObject({x:t,y:e,layers:i,viewports:s},n=this.lastPickedInfo.info){const r=n&&n.layer&&n.layer.id,a=n&&n.viewport&&n.viewport.id,h=r?i.find(d=>d.id===r):null,c=a&&s.find(d=>d.id===a)||s[0],l=c&&c.unproject([t-c.x,e-c.y]);return{...n,...{x:t,y:e,viewport:c,coordinate:l,layer:h}}}_resizeBuffer(){if(!this.pickingFBO&&(this.pickingFBO=this.device.createFramebuffer({colorAttachments:["rgba8unorm"],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float"))){const e=this.device.createFramebuffer({colorAttachments:["rgba32float"],depthStencilAttachment:"depth16unorm"});this.depthFBO=e}const{canvas:t}=this.device.getDefaultCanvasContext();this.pickingFBO?.resize({width:t.width,height:t.height}),this.depthFBO?.resize({width:t.width,height:t.height})}_getPickable(t){if(this._pickable===!1)return null;const e=t.filter(i=>this.pickLayersPass.shouldDrawLayer(i)&&!i.isComposite);return e.length?e:null}async _pickClosestObjectAsync({layers:t,views:e,viewports:i,x:s,y:n,radius:r=0,depth:a=1,mode:h="query",unproject3D:c,onViewportActive:l,effects:u}){const d=this.device.canvasContext.cssToDeviceRatio(),f=this._getPickable(t);if(!f||i.length===0)return{result:[],emptyInfo:it({viewports:i,x:s,y:n,pixelRatio:d})};this._resizeBuffer();const p=this.device.canvasContext.cssToDevicePixels([s,n],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],w=Math.round(r*d),{width:v,height:y}=this.pickingFBO,P=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:w,deviceWidth:v,deviceHeight:y}),k={x:s-r,y:n-r,width:r*2+1,height:r*2+1};let b;const L=[],C=new Set;for(let E=0;E<a;E++){let m;if(P){const _=this._drawAndSample({layers:f,views:e,viewports:i,onViewportActive:l,deviceRect:P,cullRect:k,effects:u,pass:`picking:${h}`});m=It({..._,deviceX:g[0],deviceY:g[1],deviceRadius:w,deviceRect:P})}else m={pickedColor:null,pickedObjectIndex:-1};let M;if(m.pickedLayer&&c&&this.depthFBO){const{pickedColors:_}=this._drawAndSample({layers:[m.pickedLayer],views:e,viewports:i,onViewportActive:l,deviceRect:{x:m.pickedX,y:m.pickedY,width:1,height:1},cullRect:k,effects:u,pass:`picking:${h}:z`},!0);_[3]&&(M=_[0])}m.pickedLayer&&E+1<a&&(C.add(m.pickedLayer),m.pickedLayer.disablePickingIndex(m.pickedObjectIndex)),b=Ot({pickInfo:m,lastPickedInfo:this.lastPickedInfo,mode:h,layers:f,viewports:i,x:s,y:n,z:M,pixelRatio:d});for(const _ of b.values())_.layer&&L.push(_);if(!m.pickedColor)break}for(const E of C)E.restorePickingColors();return{result:L,emptyInfo:b.get(null)}}_pickClosestObject({layers:t,views:e,viewports:i,x:s,y:n,radius:r=0,depth:a=1,mode:h="query",unproject3D:c,onViewportActive:l,effects:u}){const d=this.device.canvasContext.cssToDeviceRatio(),f=this._getPickable(t);if(!f||i.length===0)return{result:[],emptyInfo:it({viewports:i,x:s,y:n,pixelRatio:d})};this._resizeBuffer();const p=this.device.canvasContext.cssToDevicePixels([s,n],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],w=Math.round(r*d),{width:v,height:y}=this.pickingFBO,P=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:w,deviceWidth:v,deviceHeight:y}),k={x:s-r,y:n-r,width:r*2+1,height:r*2+1};let b;const L=[],C=new Set;for(let E=0;E<a;E++){let m;if(P){const _=this._drawAndSample({layers:f,views:e,viewports:i,onViewportActive:l,deviceRect:P,cullRect:k,effects:u,pass:`picking:${h}`});m=It({..._,deviceX:g[0],deviceY:g[1],deviceRadius:w,deviceRect:P})}else m={pickedColor:null,pickedObjectIndex:-1};let M;if(m.pickedLayer&&c&&this.depthFBO){const{pickedColors:_}=this._drawAndSample({layers:[m.pickedLayer],views:e,viewports:i,onViewportActive:l,deviceRect:{x:m.pickedX,y:m.pickedY,width:1,height:1},cullRect:k,effects:u,pass:`picking:${h}:z`},!0);_[3]&&(M=_[0])}m.pickedLayer&&E+1<a&&(C.add(m.pickedLayer),m.pickedLayer.disablePickingIndex(m.pickedObjectIndex)),b=Ot({pickInfo:m,lastPickedInfo:this.lastPickedInfo,mode:h,layers:f,viewports:i,x:s,y:n,z:M,pixelRatio:d});for(const _ of b.values())_.layer&&L.push(_);if(!m.pickedColor)break}for(const E of C)E.restorePickingColors();return{result:L,emptyInfo:b.get(null)}}async _pickVisibleObjectsAsync({layers:t,views:e,viewports:i,x:s,y:n,width:r=1,height:a=1,mode:h="query",maxObjects:c=null,onViewportActive:l,effects:u}){const d=this._getPickable(t);if(!d||i.length===0)return[];this._resizeBuffer();const f=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,n],!0),g=p.x,w=p.y+p.height,v=this.device.canvasContext.cssToDevicePixels([s+r,n+a],!0),y=v.x+v.width,P=v.y,k={x:g,y:P,width:y-g,height:w-P},b=this._drawAndSample({layers:d,views:e,viewports:i,onViewportActive:l,deviceRect:k,cullRect:{x:s,y:n,width:r,height:a},effects:u,pass:`picking:${h}`}),L=At(b),C=new Map,E=[],m=Number.isFinite(c);for(let M=0;M<L.length&&!(m&&E.length>=c);M++){const _=L[M];let T={color:_.pickedColor,layer:null,index:_.pickedObjectIndex,picked:!0,x:s,y:n,pixelRatio:f};T=st({layer:_.pickedLayer,info:T,mode:h});const O=T.layer.id;C.has(O)||C.set(O,new Set);const j=C.get(O),U=T.object??T.index;j.has(U)||(j.add(U),E.push(T))}return E}_pickVisibleObjects({layers:t,views:e,viewports:i,x:s,y:n,width:r=1,height:a=1,mode:h="query",maxObjects:c=null,onViewportActive:l,effects:u}){const d=this._getPickable(t);if(!d||i.length===0)return[];this._resizeBuffer();const f=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,n],!0),g=p.x,w=p.y+p.height,v=this.device.canvasContext.cssToDevicePixels([s+r,n+a],!0),y=v.x+v.width,P=v.y,k={x:g,y:P,width:y-g,height:w-P},b=this._drawAndSample({layers:d,views:e,viewports:i,onViewportActive:l,deviceRect:k,cullRect:{x:s,y:n,width:r,height:a},effects:u,pass:`picking:${h}`}),L=At(b),C=new Map,E=[],m=Number.isFinite(c);for(let M=0;M<L.length&&!(m&&E.length>=c);M++){const _=L[M];let T={color:_.pickedColor,layer:null,index:_.pickedObjectIndex,picked:!0,x:s,y:n,pixelRatio:f};T=st({layer:_.pickedLayer,info:T,mode:h});const O=T.layer.id;C.has(O)||C.set(O,new Set);const j=C.get(O),U=T.object??T.index;j.has(U)||(j.add(U),E.push(T))}return E}async _drawAndSampleAsync({layers:t,views:e,viewports:i,onViewportActive:s,deviceRect:n,cullRect:r,effects:a,pass:h},c=!1){const l=c?this.depthFBO:this.pickingFBO,u={layers:t,layerFilter:this.layerFilter,views:e,viewports:i,onViewportActive:s,pickingFBO:l,deviceRect:n,cullRect:r,effects:a,pass:h,pickZ:c,preRenderStats:{},isPicking:!0};for(const y of a)y.useInPicking&&(u.preRenderStats[y.id]=y.preRender(u));const{decodePickingColor:d}=this.pickLayersPass.render(u),{x:f,y:p,width:g,height:w}=n,v=new(c?Float32Array:Uint8Array)(g*w*4);return this.device.readPixelsToArrayWebGL(l,{sourceX:f,sourceY:p,sourceWidth:g,sourceHeight:w,target:v}),{pickedColors:v,decodePickingColor:d}}_drawAndSample({layers:t,views:e,viewports:i,onViewportActive:s,deviceRect:n,cullRect:r,effects:a,pass:h},c=!1){const l=c?this.depthFBO:this.pickingFBO,u={layers:t,layerFilter:this.layerFilter,views:e,viewports:i,onViewportActive:s,pickingFBO:l,deviceRect:n,cullRect:r,effects:a,pass:h,pickZ:c,preRenderStats:{},isPicking:!0};for(const y of a)y.useInPicking&&(u.preRenderStats[y.id]=y.preRender(u));const{decodePickingColor:d}=this.pickLayersPass.render(u),{x:f,y:p,width:g,height:w}=n,v=new(c?Float32Array:Uint8Array)(g*w*4);return this.device.readPixelsToArrayWebGL(l,{sourceX:f,sourceY:p,sourceWidth:g,sourceHeight:w,target:v}),{pickedColors:v,decodePickingColor:d}}_getPickingRect({deviceX:t,deviceY:e,deviceRadius:i,deviceWidth:s,deviceHeight:n}){const r=Math.max(0,t-i),a=Math.max(0,e-i),h=Math.min(s,t+i+1)-r,c=Math.min(n,e+i+1)-a;return h<=0||c<=0?null:{x:r,y:a,width:h,height:c}}}const ss={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},ns="top-left",Vt="root";class rs{constructor({deck:t,parentElement:e}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=t,e?.classList.add("deck-widget-container"),this.parentElement=e}getWidgets(){return this.resolvedWidgets}setProps(t){if(t.widgets&&!W(t.widgets,this.widgets,1)){const e=t.widgets.filter(Boolean);this._setWidgets(e)}}finalize(){for(const t of this.getWidgets())this._removeWidget(t);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(const t in this.containers)this.containers[t].remove()}addDefault(t){this.defaultWidgets.find(e=>e.id===t.id)||(this._addWidget(t),this.defaultWidgets.push(t),this._setWidgets(this.widgets))}onRedraw({viewports:t,layers:e}){const i=t.reduce((s,n)=>(s[n.id]=n,s),{});for(const s of this.getWidgets()){const{viewId:n}=s;if(n){const r=i[n];r&&(s.onViewportChange&&s.onViewportChange(r),s.onRedraw?.({viewports:[r],layers:e}))}else{if(s.onViewportChange)for(const r of t)s.onViewportChange(r);s.onRedraw?.({viewports:t,layers:e})}}this.lastViewports=i,this._updateContainers()}onHover(t,e){for(const i of this.getWidgets()){const{viewId:s}=i;(!s||s===t.viewport?.id)&&i.onHover?.(t,e)}}onEvent(t,e){const i=J[e.type];if(i)for(const s of this.getWidgets()){const{viewId:n}=s;(!n||n===t.viewport?.id)&&s[i]?.(t,e)}}_setWidgets(t){const e={};for(const i of this.resolvedWidgets)e[i.id]=i;this.resolvedWidgets.length=0;for(const i of this.defaultWidgets)e[i.id]=null,this.resolvedWidgets.push(i);for(let i of t){const s=e[i.id];s?s.viewId!==i.viewId||s.placement!==i.placement?(this._removeWidget(s),this._addWidget(i)):i!==s&&(s.setProps(i.props),i=s):this._addWidget(i),e[i.id]=null,this.resolvedWidgets.push(i)}for(const i in e){const s=e[i];s&&this._removeWidget(s)}this.widgets=t}_addWidget(t){const{viewId:e=null,placement:i=ns}=t,s=t.props._container??e;t.widgetManager=this,t.deck=this.deck,t.rootElement=t._onAdd({deck:this.deck,viewId:e}),t.rootElement&&this._getContainer(s,i).append(t.rootElement),t.updateHTML()}_removeWidget(t){t.onRemove?.(),t.rootElement&&t.rootElement.remove(),t.rootElement=void 0,t.deck=void 0,t.widgetManager=void 0}_getContainer(t,e){if(t&&typeof t!="string")return t;const i=t||Vt;let s=this.containers[i];s||(s=document.createElement("div"),s.style.pointerEvents="none",s.style.position="absolute",s.style.overflow="hidden",this.parentElement?.append(s),this.containers[i]=s);let n=s.querySelector(`.${e}`);return n||(n=globalThis.document.createElement("div"),n.className=e,n.style.position="absolute",n.style.zIndex="2",Object.assign(n.style,ss[e]),s.append(n)),n}_updateContainers(){const t=this.deck.width,e=this.deck.height;for(const i in this.containers){const s=this.lastViewports[i]||null,n=i===Vt||s,r=this.containers[i];n?(r.style.display="block",r.style.left=`${s?s.x:0}px`,r.style.top=`${s?s.y:0}px`,r.style.width=`${s?s.width:t}px`,r.style.height=`${s?s.height:e}px`):r.style.display="none"}}}const os={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"};class Jt extends Gt{constructor(t={}){super(t),this.id="default-tooltip",this.placement="fill",this.className="deck-tooltip",this.isVisible=!1,this.setProps(t)}onCreateRootElement(){const t=document.createElement("div");return t.className=this.className,Object.assign(t.style,os),t}onRenderHTML(t){}onViewportChange(t){this.isVisible&&t.id===this.lastViewport?.id&&!t.equals(this.lastViewport)&&this.setTooltip(null),this.lastViewport=t}onHover(t){const{deck:e}=this,i=e&&e.props.getTooltip;if(!i)return;const s=i(t);this.setTooltip(s,t.x,t.y)}setTooltip(t,e,i){const s=this.rootElement;if(s){if(typeof t=="string")s.innerText=t;else if(t)t.text&&(s.innerText=t.text),t.html&&(s.innerHTML=t.html),t.className&&(s.className=t.className);else{this.isVisible=!1,s.style.display="none";return}this.isVisible=!0,s.style.display="block",s.style.transform=`translate(${e}px, ${i}px)`,t&&typeof t=="object"&&"style"in t&&Object.assign(s.style,t.style)}}}Jt.defaultProps={...Gt.defaultProps};const as="modulepreload",hs=function(o){return"/"+o},Dt={},zt=function(t,e,i){let s=Promise.resolve();if(e&&e.length>0){let h=function(c){return Promise.all(c.map(l=>Promise.resolve(l).then(u=>({status:"fulfilled",value:u}),u=>({status:"rejected",reason:u}))))};document.getElementsByTagName("link");const r=document.querySelector("meta[property=csp-nonce]"),a=r?.nonce||r?.getAttribute("nonce");s=h(e.map(c=>{if(c=hs(c),c in Dt)return;Dt[c]=!0;const l=c.endsWith(".css"),u=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${u}`))return;const d=document.createElement("link");if(d.rel=l?"stylesheet":as,l||(d.as="script"),d.crossOrigin="",d.href=c,a&&d.setAttribute("nonce",a),document.head.appendChild(d),l)return new Promise((f,p)=>{d.addEventListener("load",f),d.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${c}`)))})}))}function n(r){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=r,window.dispatchEvent(a),!a.defaultPrevented)throw r}return s.then(r=>{for(const a of r||[])a.status==="rejected"&&n(a.reason);return t().catch(n)})},cs={WEBGL_depth_texture:{UNSIGNED_INT_24_8_WEBGL:34042},OES_element_index_uint:{},OES_texture_float:{},OES_texture_half_float:{HALF_FLOAT_OES:5131},EXT_color_buffer_float:{},OES_standard_derivatives:{FRAGMENT_SHADER_DERIVATIVE_HINT_OES:35723},EXT_frag_depth:{},EXT_blend_minmax:{MIN_EXT:32775,MAX_EXT:32776},EXT_shader_texture_lod:{}},ls=o=>({drawBuffersWEBGL(t){return o.drawBuffers(t)},COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067}),ds=o=>({VERTEX_ARRAY_BINDING_OES:34229,createVertexArrayOES(){return o.createVertexArray()},deleteVertexArrayOES(t){return o.deleteVertexArray(t)},isVertexArrayOES(t){return o.isVertexArray(t)},bindVertexArrayOES(t){return o.bindVertexArray(t)}}),us=o=>({VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:35070,drawArraysInstancedANGLE(...t){return o.drawArraysInstanced(...t)},drawElementsInstancedANGLE(...t){return o.drawElementsInstanced(...t)},vertexAttribDivisorANGLE(...t){return o.vertexAttribDivisor(...t)}});function ps(o=!0){const t=HTMLCanvasElement.prototype;if(!o&&t.originalGetContext){t.getContext=t.originalGetContext,t.originalGetContext=void 0;return}t.originalGetContext=t.getContext,t.getContext=function(e,i){if(e==="webgl"||e==="experimental-webgl"){const s=this.originalGetContext("webgl2",i);return s instanceof HTMLElement&&fs(s),s}return this.originalGetContext(e,i)}}function fs(o){o.getExtension("EXT_color_buffer_float");const t={...cs,WEBGL_disjoint_timer_query:o.getExtension("EXT_disjoint_timer_query_webgl2"),WEBGL_draw_buffers:ls(o),OES_vertex_array_object:ds(o),ANGLE_instanced_arrays:us(o)},e=o.getExtension;o.getExtension=function(s){const n=e.call(o,s);return n||(s in t?t[s]:null)};const i=o.getSupportedExtensions;o.getSupportedExtensions=function(){return(i.apply(o)||[])?.concat(Object.keys(t))}}const $=1;class gs extends ke{type="webgl";constructor(){super(),wt.defaultProps={...wt.defaultProps,...ae}}enforceWebGL2(t){ps(t)}isSupported(){return typeof WebGL2RenderingContext<"u"}isDeviceHandle(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?!0:(typeof WebGLRenderingContext<"u"&&t instanceof WebGLRenderingContext&&z.warn("WebGL1 is not supported",t)(),!1)}async attach(t,e={}){const{WebGLDevice:i}=await zt(async()=>{const{WebGLDevice:n}=await import("./webgl-device-BYRB-GQX.js");return{WebGLDevice:n}},__vite__mapDeps([0,1,2,3,4]));if(t instanceof i)return t;if(t?.device instanceof i)return t.device;if(!ms(t))throw new Error("Invalid WebGL2RenderingContext");const s=e.createCanvasContext===!0?{}:e.createCanvasContext;return new i({...e,_handle:t,createCanvasContext:{canvas:t.canvas,autoResize:!1,...s}})}async create(t={}){const{WebGLDevice:e}=await zt(async()=>{const{WebGLDevice:i}=await import("./webgl-device-BYRB-GQX.js");return{WebGLDevice:i}},__vite__mapDeps([0,1,2,3,4]));z.groupCollapsed($,"WebGLDevice created")();try{const i=[];(t.debugWebGL||t.debug)&&i.push(he()),t.debugSpectorJS&&i.push(ce(t));const s=await Promise.allSettled(i);for(const a of s)a.status==="rejected"&&z.error(`Failed to initialize debug libraries ${a.reason}`)();const n=new e(t),r=`${n._reused?"Reusing":"Created"} device with WebGL2 ${n.props.debug?"debug ":""}context: ${n.info.vendor}, ${n.info.renderer} for canvas: ${n.canvasContext.id}`;return z.probe($,r)(),z.table($,n.info)(),n}finally{z.groupEnd($)()}}}function ms(o){return typeof WebGL2RenderingContext<"u"&&o instanceof WebGL2RenderingContext?!0:!!(o&&Number.isFinite(o._version))}const Y=new gs;function A(){}const ws=({isDragging:o})=>o?"grabbing":"grab",Qt={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,parameters:{},parent:null,device:null,deviceProps:{},gl:null,canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:"none",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,widgets:[],onDeviceInitialized:A,onWebGLInitialized:A,onResize:A,onViewStateChange:A,onInteractionStateChange:A,onBeforeRender:A,onAfterRender:A,onLoad:A,onError:o=>S.error(o.message,o.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:ws,getTooltip:null,debug:!1,drawPickingColors:!1};class te{constructor(t){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new ot({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null},this._lastPointerDownInfo=null,this._onPointerMove=i=>{const{_pickRequest:s}=this;if(i.type==="pointerleave")s.x=-1,s.y=-1,s.radius=0;else{if(i.leftButton||i.rightButton)return;{const n=i.offsetCenter;if(!n)return;s.x=n.x,s.y=n.y,s.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:s.x,y:s.y}),s.event=i},this._onEvent=i=>{const s=J[i.type],n=i.offsetCenter;if(!s||!n||!this.layerManager)return;const r=this.layerManager.getLayers(),a=this.deckPicker.getLastPickedObject({x:n.x,y:n.y,layers:r,viewports:this.getViewports(n)},this._lastPointerDownInfo),{layer:h}=a,c=h&&(h[s]||h.props[s]),l=this.props[s];let u=!1;c&&(u=c.call(h,a,i)),u||(l?.(a,i),this.widgetManager.onEvent(a,i))},this._onPointerDown=i=>{if(this.device?.type==="webgpu")return;const s=i.offsetCenter,n=this._pick("pickObject","pickObject Time",{x:s.x,y:s.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=n.result[0]||n.emptyInfo},this.props={...Qt,...t},t=this.props,t.viewState&&t.initialViewState&&S.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,t.device&&(this.device=t.device);let e=this.device;if(!e&&t.gl){t.gl instanceof WebGLRenderingContext&&S.error("WebGL1 context not supported.")();const i=this.props.deviceProps?.onResize;e=Y.attach(t.gl,{...this.props.deviceProps,onResize:(s,n)=>{const{width:r,height:a}=s.canvas;s.drawingBufferWidth=r,s.drawingBufferHeight=a,this._needsRedraw="Canvas resized",i?.(s,n)}})}e||(e=this._createDevice(t)),this.animationLoop=this._createAnimationLoop(e,t),this.setProps(t),t._typedArrayManagerProps&&ye.setOptions(t._typedArrayManagerProps),this.animationLoop.start()}finalize(){this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._lastPointerDownInfo=null,this.layerManager?.finalize(),this.layerManager=null,this.viewManager?.finalize(),this.viewManager=null,this.effectManager?.finalize(),this.effectManager=null,this.deckRenderer?.finalize(),this.deckRenderer=null,this.deckPicker?.finalize(),this.deckPicker=null,this.eventManager?.destroy(),this.eventManager=null,this.widgetManager?.finalize(),this.widgetManager=null,!this.props.canvas&&!this.props.device&&!this.props.gl&&this.canvas&&(this.canvas.parentElement?.removeChild(this.canvas),this.canvas=null)}setProps(t){this.stats.get("setProps Time").timeStart(),"onLayerHover"in t&&S.removed("onLayerHover","onHover")(),"onLayerClick"in t&&S.removed("onLayerClick","onClick")(),t.initialViewState&&!W(this.props.initialViewState,t.initialViewState,3)&&(this.viewState=t.initialViewState),Object.assign(this.props,t),this._setCanvasSize(this.props);const e=Object.create(this.props);Object.assign(e,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),t.device&&t.device.id!==this.device?.id&&(this.animationLoop?.stop(),this.canvas!==t.device.canvasContext?.canvas&&(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),S.log(`recreating animation loop for new device! id=${t.device.id}`)(),this.animationLoop=this._createAnimationLoop(t.device,t),this.animationLoop.start()),this.animationLoop?.setProps(e),t.useDevicePixels!==void 0&&this.device?.canvasContext&&this.device.canvasContext.setProps({useDevicePixels:t.useDevicePixels}),this.layerManager&&(this.viewManager.setProps(e),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(e),this.effectManager.setProps(e),this.deckRenderer.setProps(e),this.deckPicker.setProps(e),this.widgetManager.setProps(e)),this.stats.get("setProps Time").timeEnd()}needsRedraw(t={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let e=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);const i=this.viewManager.needsRedraw(t),s=this.layerManager.needsRedraw(t),n=this.effectManager.needsRedraw(t),r=this.deckRenderer.needsRedraw(t);return e=e||i||s||n||r,e}redraw(t){if(!this.layerManager)return;let e=this.needsRedraw({clearRedrawFlags:!0});e=t||e,e&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(e):this._drawLayers(e))}get isInitialized(){return this.viewManager!==null}getViews(){return D(this.viewManager),this.viewManager.views}getViewports(t){return D(this.viewManager),this.viewManager.getViewports(t)}getCanvas(){return this.canvas}pickObject(t){const e=this._pick("pickObject","pickObject Time",t).result;return e.length?e[0]:null}pickMultipleObjects(t){return t.depth=t.depth||10,this._pick("pickObject","pickMultipleObjects Time",t).result}pickObjects(t){return this._pick("pickObjects","pickObjects Time",t)}_addResources(t,e=!1){for(const i in t)this.layerManager.resourceManager.add({resourceId:i,data:t[i],forceUpdate:e})}_removeResources(t){for(const e of t)this.layerManager.resourceManager.remove(e)}_addDefaultEffect(t){this.effectManager.addDefaultEffect(t)}_addDefaultShaderModule(t){this.layerManager.addDefaultShaderModule(t)}_removeDefaultShaderModule(t){this.layerManager?.removeDefaultShaderModule(t)}_pick(t,e,i){D(this.deckPicker);const{stats:s}=this;s.get("Pick Count").incrementCount(),s.get(e).timeStart();const n=this.deckPicker[t]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return s.get(e).timeEnd(),n}_createCanvas(t){let e=t.canvas;return typeof e=="string"&&(e=document.getElementById(e),D(e)),e||(e=document.createElement("canvas"),e.id=t.id||"deckgl-overlay",t.width&&typeof t.width=="number"&&(e.width=t.width),t.height&&typeof t.height=="number"&&(e.height=t.height),(t.parent||document.body).appendChild(e)),Object.assign(e.style,t.style),e}_setCanvasSize(t){if(!this.canvas)return;const{width:e,height:i}=t;if(e||e===0){const s=Number.isFinite(e)?`${e}px`:e;this.canvas.style.width=s}if(i||i===0){const s=Number.isFinite(i)?`${i}px`:i;this.canvas.style.position=t.style?.position||"absolute",this.canvas.style.height=s}}_updateCanvasSize(){const{canvas:t}=this;if(!t)return;const e=t.clientWidth??t.width,i=t.clientHeight??t.height;(e!==this.width||i!==this.height)&&(this.width=e,this.height=i,this.viewManager?.setProps({width:e,height:i}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:e,height:i}))}_createAnimationLoop(t,e){const{gl:i,onError:s}=e;return new ht({device:t,autoResizeDrawingBuffer:!i,autoResizeViewport:!1,onInitialize:n=>this._setDevice(n.device),onRender:this._onRenderFrame.bind(this),onError:s})}_createDevice(t){const e=this.props.deviceProps?.createCanvasContext,i=typeof e=="object"?e:void 0,s={adapters:[],_cacheShaders:!0,_cachePipelines:!0,...t.deviceProps};s.adapters.includes(Y)||s.adapters.push(Y);const n={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0},r=this.props.deviceProps?.onResize;return Q.createDevice({_reuseDevices:!0,type:"webgl",...s,createCanvasContext:{...n,...i,canvas:this._createCanvas(t),useDevicePixels:this.props.useDevicePixels,autoResize:!0},onResize:(a,h)=>{this._needsRedraw="Canvas resized",r?.(a,h)}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){const{views:t}=this.props,e=Array.isArray(t)?t:t?[t]:[new Kt({id:"default-view"})];return e.length&&this.props.controller&&(e[0].props.controller=this.props.controller),e}_onContextLost(){const{onError:t}=this.props;this.animationLoop&&t&&t(new Error("WebGL context is lost"))}_pickAndCallback(){if(this.device?.type==="webgpu")return;const{_pickRequest:t}=this;if(t.event){const{result:e,emptyInfo:i}=this._pick("pickObject","pickObject Time",t);this.cursorState.isHovering=e.length>0;let s=i,n=!1;for(const r of e)s=r,n=r.layer?.onHover(r,t.event)||n;n||(this.props.onHover?.(s,t.event),this.widgetManager.onHover(s,t.event)),t.event=null}}_updateCursor(){const t=this.props.parent||this.canvas;t&&(t.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(t){if(this.device=t,!this.animationLoop)return;this.canvas||(this.canvas=this.device.canvasContext?.canvas,!this.canvas.isConnected&&this.props.parent&&this.props.parent.insertBefore(this.canvas,this.props.parent.firstChild)),this.device.type==="webgl"&&this.device.setParametersWebGL({blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onDeviceInitialized(this.device),this.device.type==="webgl"&&this.props.onWebGLInitialized(this.device.gl);const e=new $t;e.play(),this.animationLoop.attachTimeline(e),this.eventManager=new ti(this.props.parent||this.canvas,{touchAction:this.props.touchAction,recognizers:Object.keys(gt).map(s=>{const[n,r,a,h]=gt[s],c=this.props.eventRecognizerOptions?.[s],l={...r,...c,event:s};return{recognizer:new n(l),recognizeWith:a,requestFailure:h}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(const s in J)this.eventManager.on(s,this._onEvent);this.viewManager=new Ni({timeline:e,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});const i=this.viewManager.getViewports()[0];this.layerManager=new Fi(this.device,{deck:this,stats:this.stats,viewport:i,timeline:e}),this.effectManager=new Yi({deck:this,device:this.device}),this.deckRenderer=new Qi(this.device),this.deckPicker=new is(this.device),this.widgetManager=new rs({deck:this,parentElement:this.canvas?.parentElement}),this.widgetManager.addDefault(new Jt),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(t,e){const{device:i,gl:s}=this.layerManager.context;this.props.onBeforeRender({device:i,gl:s});const n={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...e};this.deckRenderer?.renderLayers(n),n.pass==="screen"&&this.widgetManager.onRedraw({viewports:n.viewports,layers:n.layers}),this.props.onAfterRender({device:i,gl:s})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),S.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.layerManager.updateLayers(),this.device?.type!=="webgpu"&&this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(t){const e=this.props.onViewStateChange(t)||t.viewState;this.viewState&&(this.viewState={...this.viewState,[t.viewId]:e},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(t){this.cursorState.isDragging=t.isDragging||!1,this.props.onInteractionStateChange(t)}_getFrameStats(){const{stats:t}=this;t.get("frameRate").timeEnd(),t.get("frameRate").timeStart();const e=this.animationLoop.stats;t.get("GPU Time").addTime(e.get("GPU Time").lastTiming),t.get("CPU Time").addTime(e.get("CPU Time").lastTiming)}_getMetrics(){const{metrics:t,stats:e}=this;t.fps=e.get("frameRate").getHz(),t.setPropsTime=e.get("setProps Time").time,t.updateAttributesTime=e.get("Update Attributes").time,t.framesRedrawn=e.get("Redraw Count").count,t.pickTime=e.get("pickObject Time").time+e.get("pickMultipleObjects Time").time+e.get("pickObjects Time").time,t.pickCount=e.get("Pick Count").count,t.gpuTime=e.get("GPU Time").time,t.cpuTime=e.get("CPU Time").time,t.gpuTimePerFrame=e.get("GPU Time").getAverageTime(),t.cpuTimePerFrame=e.get("CPU Time").getAverageTime();const i=Q.stats.get("Memory Usage");t.bufferMemory=i.get("Buffer Memory").count,t.textureMemory=i.get("Texture Memory").count,t.renderbufferMemory=i.get("Renderbuffer Memory").count,t.gpuMemory=i.get("GPU Memory").count}}te.defaultProps=Qt;te.VERSION=Te;class _s extends Yt{constructor(t){const{startPanPos:e,...i}=t;super(i),e!==void 0&&(this._state.startPanPos=e)}panStart({pos:t}){const{latitude:e,longitude:i,zoom:s}=this.getViewportProps();return this._getUpdatedState({startPanLngLat:[i,e],startPanPos:t,startZoom:s})}pan({pos:t,startPos:e}){const i=this.getState(),s=i.startPanLngLat||this._unproject(e);if(!s)return this;const n=i.startZoom??this.getViewportProps().zoom,r=i.startPanPos||e,a=[s[0],s[1],n],c=this.makeViewport(this.getViewportProps()).panByPosition(a,t,r);return this._getUpdatedState(c)}panEnd(){return this._getUpdatedState({startPanLngLat:null,startPanPos:null,startZoom:null})}zoom({scale:t}){const i=(this.getState().startZoom||this.getViewportProps().zoom)+Math.log2(t);return this._getUpdatedState({zoom:i})}applyConstraints(t){const{longitude:e,latitude:i,maxZoom:s,minZoom:n,zoom:r}=t,a=_t(0),h=_t(i)-a;return t.zoom=N(r,n+h,s+h),(e<-180||e>180)&&(t.longitude=Ee(e+180,360)-180),t.latitude=N(i,-mt,mt),t}}class vs extends Xt{constructor(){super(...arguments),this.ControllerState=_s,this.transition={transitionDuration:300,transitionInterpolator:new at(["longitude","latitude","zoom"])},this.dragMode="pan"}setProps(t){super.setProps(t),this.dragRotate=!1,this.touchRotate=!1}}class ys extends qt{constructor(t={}){super(t)}getViewportType(t){return t.zoom>12?Ut:Se}get ControllerType(){return vs}}ys.displayName="GlobeView";export{Ei as A,Xt as C,te as D,ys as G,Zt as L,Kt as M,et as T,Hi as V,kt as a,qt as b,Te as c,Fi as d,Qi as e,$i as f,wi as g,vs as h,Tt as s};
94
+ //# sourceMappingURL=globe-view-Day_n1iB.js.map