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,2 @@
1
+ import{D as h,l as g,a as m}from"./assert-cyW4mg7q.js";import{y as i,A as w,x as y,u as p,i as A}from"./deep-equal-BTW2ZN6S.js";import{G as b}from"./globe-viewport-tqhQW7C4.js";const E="set luma.log.level=1 (or higher) to trace rendering",c="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.";class n{static defaultProps={...h.defaultProps,type:"best-available",adapters:void 0,waitForPageLoad:!0};stats=g;log=i;VERSION="9.2.6";spector;preregisteredAdapters=new Map;constructor(){if(globalThis.luma){if(globalThis.luma.VERSION!==this.VERSION)throw i.error(`Found luma.gl ${globalThis.luma.VERSION} while initialzing ${this.VERSION}`)(),i.error("'yarn why @luma.gl/core' can help identify the source of the conflict")(),new Error("luma.gl - multiple versions detected: see console log");i.error("This version of luma.gl has already been initialized")()}i.log(1,`${this.VERSION} - ${E}`)(),globalThis.luma=this}async createDevice(e={}){const t={...n.defaultProps,...e},r=this.selectAdapter(t.type,t.adapters);if(!r)throw new Error(c);return t.waitForPageLoad&&await r.pageLoaded,await r.create(t)}async attachDevice(e,t){const r=this._getTypeFromHandle(e,t.adapters),s=r&&this.selectAdapter(r,t.adapters);if(!s)throw new Error(c);return await s?.attach?.(e,t)}registerAdapters(e){for(const t of e)this.preregisteredAdapters.set(t.type,t)}getSupportedAdapters(e=[]){const t=this._getAdapterMap(e);return Array.from(t).map(([,r])=>r).filter(r=>r.isSupported?.()).map(r=>r.type)}getBestAvailableAdapterType(e=[]){const t=["webgpu","webgl","null"],r=this._getAdapterMap(e);for(const s of t)if(r.get(s)?.isSupported?.())return s;return null}selectAdapter(e,t=[]){let r=e;e==="best-available"&&(r=this.getBestAvailableAdapterType(t));const s=this._getAdapterMap(t);return r&&s.get(r)||null}enforceWebGL2(e=!0,t=[]){const s=this._getAdapterMap(t).get("webgl");s||i.warn("enforceWebGL2: webgl adapter not found")(),s?.enforceWebGL2?.(e)}setDefaultDeviceProps(e){Object.assign(n.defaultProps,e)}_getAdapterMap(e=[]){const t=new Map(this.preregisteredAdapters);for(const r of e)t.set(r.type,r);return t}_getTypeFromHandle(e,t=[]){return e instanceof WebGL2RenderingContext?"webgl":typeof GPUDevice<"u"&&e instanceof GPUDevice||e?.queue?"webgpu":e===null?"null":(e instanceof WebGLRenderingContext?i.warn("WebGL1 is not supported",e)():i.warn("Unknown handle type",e)(),null)}}const V=new n;class v{constructor(e){const{compare:t,extract:r,required:s}=e;this._propsToCompare=t,this._propsToExtract=r||t,this._requiredProps=s}arePropsEqual(e,t){for(const r of this._propsToCompare)if(!(r in e)||!(r in t)||!w(e[r],t[r]))return!1;return!0}initializeProps(e,t){const r={},s={};for(const a of this._propsToExtract)(a in e||a in t)&&(r[a]=e[a],s[a]=t[a]);return this._checkRequiredProps(r),this._checkRequiredProps(s),{start:r,end:s}}getDuration(e,t){return t.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(t=>{const r=e[t];m(Number.isFinite(r)||Array.isArray(r),`${t} is required for transition`)})}}const P=["longitude","latitude","zoom","bearing","pitch"],T=["longitude","latitude","zoom"];class D extends v{constructor(e={}){const t=Array.isArray(e)?e:e.transitionProps,r=Array.isArray(e)?{}:e;r.transitionProps=Array.isArray(t)?{compare:t,required:t}:t||{compare:P,required:T},super(r.transitionProps),this.opts=r}initializeProps(e,t){const r=super.initializeProps(e,t),{makeViewport:s,around:a}=this.opts;if(s&&a)if(s(e)instanceof b)y.warn("around not supported in GlobeView")();else{const u=s(e),f=s(t),l=u.unproject(a);r.start.around=a,Object.assign(r.end,{around:f.project(l),aroundPosition:l,width:t.width,height:t.height})}return r}interpolateProps(e,t,r){const s={};for(const a of this._propsToExtract)s[a]=p(e[a]||0,t[a]||0,r);if(t.aroundPosition&&this.opts.makeViewport){const a=this.opts.makeViewport({...t,...s});Object.assign(s,a.panByPosition(t.aroundPosition,p(e.around,t.around,r)))}return s}}function d(o,e){e&&Object.entries(e).map(([t,r])=>{t.startsWith("--")?o.style.setProperty(t,r):o.style[t]=r})}function S(o,e){e&&Object.keys(e).map(t=>{t.startsWith("--")?o.style.removeProperty(t):o.style[t]=""})}class R{constructor(e){this.viewId=null,this.props={...this.constructor.defaultProps,...e},this.id=this.props.id}setProps(e){const t=this.props,r=this.rootElement;r&&t.className!==e.className&&(t.className&&r.classList.remove(t.className),e.className&&r.classList.add(e.className)),r&&!A(t.style,e.style,1)&&(S(r,t.style),d(r,e.style)),Object.assign(this.props,e),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}onCreateRootElement(){const e=["deck-widget",this.className,this.props.className],t=document.createElement("div");return e.filter(r=>typeof r=="string"&&r.length>0).forEach(r=>t.classList.add(r)),d(t,this.props.style),t}_onAdd(e){return this.onAdd(e)??this.onCreateRootElement()}onAdd(e){}onRemove(){}onViewportChange(e){}onRedraw(e){}onHover(e,t){}onClick(e,t){}onDrag(e,t){}onDragStart(e,t){}onDragEnd(e,t){}}R.defaultProps={id:"widget",style:{},_container:null,className:""};export{D as L,v as T,R as W,d as a,V as l,S as r};
2
+ //# sourceMappingURL=widget-BjgEeHAL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-BjgEeHAL.js","sources":["../../../../node_modules/.pnpm/@luma.gl+core@9.2.6/node_modules/@luma.gl/core/dist/adapter/luma.js","../../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/transitions/transition-interpolator.js","../../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/transitions/linear-interpolator.js","../../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/utils/apply-styles.js","../../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/lib/widget.js"],"sourcesContent":["// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Device } from \"./device.js\";\nimport { lumaStats } from \"../utils/stats-manager.js\";\nimport { log } from \"../utils/log.js\";\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\nconst ERROR_MESSAGE = 'No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.';\n/**\n * Entry point to the luma.gl GPU abstraction\n * Register WebGPU and/or WebGL adapters (controls application bundle size)\n * Run-time selection of the first available Device\n */\nexport class Luma {\n static defaultProps = {\n ...Device.defaultProps,\n type: 'best-available',\n adapters: undefined,\n waitForPageLoad: true\n };\n /** Global stats for all devices */\n stats = lumaStats;\n /**\n * Global log\n *\n * Assign luma.log.level in console to control logging: \\\n * 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs\n * luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;\n */\n log = log;\n /** Version of luma.gl */\n VERSION = \n // Version detection using build plugin\n // @ts-expect-error no-undef\n typeof \"9.2.6\" !== 'undefined' ? \"9.2.6\" : 'running from source';\n spector;\n preregisteredAdapters = new Map();\n constructor() {\n if (globalThis.luma) {\n if (globalThis.luma.VERSION !== this.VERSION) {\n log.error(`Found luma.gl ${globalThis.luma.VERSION} while initialzing ${this.VERSION}`)();\n log.error(`'yarn why @luma.gl/core' can help identify the source of the conflict`)();\n throw new Error(`luma.gl - multiple versions detected: see console log`);\n }\n log.error('This version of luma.gl has already been initialized')();\n }\n log.log(1, `${this.VERSION} - ${STARTUP_MESSAGE}`)();\n globalThis.luma = this;\n }\n /** Creates a device. Asynchronously. */\n async createDevice(props_ = {}) {\n const props = { ...Luma.defaultProps, ...props_ };\n const adapter = this.selectAdapter(props.type, props.adapters);\n if (!adapter) {\n throw new Error(ERROR_MESSAGE);\n }\n // Wait for page to load so that CanvasContext's can access the DOM.\n if (props.waitForPageLoad) {\n await adapter.pageLoaded;\n }\n return await adapter.create(props);\n }\n /**\n * Attach to an existing GPU API handle (WebGL2RenderingContext or GPUDevice).\n * @param handle Externally created WebGL context or WebGPU device\n */\n async attachDevice(handle, props) {\n const type = this._getTypeFromHandle(handle, props.adapters);\n const adapter = type && this.selectAdapter(type, props.adapters);\n if (!adapter) {\n throw new Error(ERROR_MESSAGE);\n }\n return await adapter?.attach?.(handle, props);\n }\n /**\n * Global adapter registration.\n * @deprecated Use props.adapters instead\n */\n registerAdapters(adapters) {\n for (const deviceClass of adapters) {\n this.preregisteredAdapters.set(deviceClass.type, deviceClass);\n }\n }\n /** Get type strings for supported Devices */\n getSupportedAdapters(adapters = []) {\n const adapterMap = this._getAdapterMap(adapters);\n return Array.from(adapterMap)\n .map(([, adapter]) => adapter)\n .filter(adapter => adapter.isSupported?.())\n .map(adapter => adapter.type);\n }\n /** Get type strings for best available Device */\n getBestAvailableAdapterType(adapters = []) {\n const KNOWN_ADAPTERS = ['webgpu', 'webgl', 'null'];\n const adapterMap = this._getAdapterMap(adapters);\n for (const type of KNOWN_ADAPTERS) {\n if (adapterMap.get(type)?.isSupported?.()) {\n return type;\n }\n }\n return null;\n }\n /** Select adapter of type from registered adapters */\n selectAdapter(type, adapters = []) {\n let selectedType = type;\n if (type === 'best-available') {\n selectedType = this.getBestAvailableAdapterType(adapters);\n }\n const adapterMap = this._getAdapterMap(adapters);\n return (selectedType && adapterMap.get(selectedType)) || null;\n }\n /**\n * Override `HTMLCanvasContext.getCanvas()` to always create WebGL2 contexts with additional WebGL1 compatibility.\n * Useful when attaching luma to a context from an external library does not support creating WebGL2 contexts.\n */\n enforceWebGL2(enforce = true, adapters = []) {\n const adapterMap = this._getAdapterMap(adapters);\n const webgl2Adapter = adapterMap.get('webgl');\n if (!webgl2Adapter) {\n log.warn('enforceWebGL2: webgl adapter not found')();\n }\n webgl2Adapter?.enforceWebGL2?.(enforce);\n }\n // DEPRECATED\n /** @deprecated */\n setDefaultDeviceProps(props) {\n Object.assign(Luma.defaultProps, props);\n }\n // HELPERS\n /** Convert a list of adapters to a map */\n _getAdapterMap(adapters = []) {\n const map = new Map(this.preregisteredAdapters);\n for (const adapter of adapters) {\n map.set(adapter.type, adapter);\n }\n return map;\n }\n /** Get type of a handle (for attachDevice) */\n _getTypeFromHandle(handle, adapters = []) {\n // TODO - delegate handle identification to adapters\n // WebGL\n if (handle instanceof WebGL2RenderingContext) {\n return 'webgl';\n }\n if (typeof GPUDevice !== 'undefined' && handle instanceof GPUDevice) {\n return 'webgpu';\n }\n // TODO - WebGPU does not yet seem to have a stable in-browser API, so we \"sniff\" for members instead\n if (handle?.queue) {\n return 'webgpu';\n }\n // null\n if (handle === null) {\n return 'null';\n }\n if (handle instanceof WebGLRenderingContext) {\n log.warn('WebGL1 is not supported', handle)();\n }\n else {\n log.warn('Unknown handle type', handle)();\n }\n return null;\n }\n}\n/**\n * Entry point to the luma.gl GPU abstraction\n * Register WebGPU and/or WebGL adapters (controls application bundle size)\n * Run-time selection of the first available Device\n */\nexport const luma = new Luma();\n//# sourceMappingURL=luma.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { equals } from '@math.gl/core';\nimport assert from \"../utils/assert.js\";\nexport default class TransitionInterpolator {\n /**\n * @param opts {array|object}\n * @param opts.compare {array} - prop names used in equality check\n * @param opts.extract {array} - prop names needed for interpolation\n * @param opts.required {array} - prop names that must be supplied\n * alternatively, supply one list of prop names as `opts` if all of the above are the same.\n */\n constructor(opts) {\n const { compare, extract, required } = opts;\n this._propsToCompare = compare;\n this._propsToExtract = extract || compare;\n this._requiredProps = required;\n }\n /**\n * Checks if two sets of props need transition in between\n * @param currentProps {object} - a list of viewport props\n * @param nextProps {object} - a list of viewport props\n * @returns {bool} - true if two props are equivalent\n */\n arePropsEqual(currentProps, nextProps) {\n for (const key of this._propsToCompare) {\n if (!(key in currentProps) ||\n !(key in nextProps) ||\n !equals(currentProps[key], nextProps[key])) {\n return false;\n }\n }\n return true;\n }\n /**\n * Called before transition starts to validate/pre-process start and end props\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Object} {start, end} - start and end props to be passed\n * to `interpolateProps`\n */\n initializeProps(startProps, endProps) {\n const startViewStateProps = {};\n const endViewStateProps = {};\n for (const key of this._propsToExtract) {\n if (key in startProps || key in endProps) {\n startViewStateProps[key] = startProps[key];\n endViewStateProps[key] = endProps[key];\n }\n }\n this._checkRequiredProps(startViewStateProps);\n this._checkRequiredProps(endViewStateProps);\n return { start: startViewStateProps, end: endViewStateProps };\n }\n /**\n * Returns transition duration\n * @param startProps {object} - a list of starting viewport props\n * @param endProps {object} - a list of target viewport props\n * @returns {Number} - transition duration in milliseconds\n */\n getDuration(startProps, endProps) {\n return endProps.transitionDuration;\n }\n _checkRequiredProps(props) {\n if (!this._requiredProps) {\n return;\n }\n this._requiredProps.forEach(propName => {\n const value = props[propName];\n assert(Number.isFinite(value) || Array.isArray(value), `${propName} is required for transition`);\n });\n }\n}\n//# sourceMappingURL=transition-interpolator.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport TransitionInterpolator from \"./transition-interpolator.js\";\nimport { lerp } from '@math.gl/core';\nimport log from \"../utils/log.js\";\nimport GlobeViewport from \"../viewports/globe-viewport.js\";\nconst DEFAULT_PROPS = ['longitude', 'latitude', 'zoom', 'bearing', 'pitch'];\nconst DEFAULT_REQUIRED_PROPS = ['longitude', 'latitude', 'zoom'];\n/**\n * Performs linear interpolation of two view states.\n */\nexport default class LinearInterpolator extends TransitionInterpolator {\n /**\n * @param {Object} opts\n * @param {Array} opts.transitionProps - list of props to apply linear transition to.\n * @param {Array} opts.around - a screen point to zoom/rotate around.\n * @param {Function} opts.makeViewport - construct a viewport instance with given props.\n */\n constructor(opts = {}) {\n // Backward compatibility\n const transitionProps = Array.isArray(opts) ? opts : opts.transitionProps;\n const normalizedOpts = Array.isArray(opts) ? {} : opts;\n normalizedOpts.transitionProps = Array.isArray(transitionProps)\n ? {\n compare: transitionProps,\n required: transitionProps\n }\n : transitionProps || {\n compare: DEFAULT_PROPS,\n required: DEFAULT_REQUIRED_PROPS\n };\n super(normalizedOpts.transitionProps);\n this.opts = normalizedOpts;\n }\n initializeProps(startProps, endProps) {\n const result = super.initializeProps(startProps, endProps);\n const { makeViewport, around } = this.opts;\n if (makeViewport && around) {\n const TestViewport = makeViewport(startProps);\n if (TestViewport instanceof GlobeViewport) {\n log.warn('around not supported in GlobeView')();\n }\n else {\n const startViewport = makeViewport(startProps);\n const endViewport = makeViewport(endProps);\n const aroundPosition = startViewport.unproject(around);\n result.start.around = around;\n Object.assign(result.end, {\n around: endViewport.project(aroundPosition),\n aroundPosition,\n width: endProps.width,\n height: endProps.height\n });\n }\n }\n return result;\n }\n interpolateProps(startProps, endProps, t) {\n const propsInTransition = {};\n for (const key of this._propsToExtract) {\n propsInTransition[key] = lerp(startProps[key] || 0, endProps[key] || 0, t);\n }\n if (endProps.aroundPosition && this.opts.makeViewport) {\n // Linear transition should be performed in common space\n const viewport = this.opts.makeViewport({ ...endProps, ...propsInTransition });\n Object.assign(propsInTransition, viewport.panByPosition(endProps.aroundPosition, \n // anchor point in current screen coordinates\n lerp(startProps.around, endProps.around, t)));\n }\n return propsInTransition;\n }\n}\n//# sourceMappingURL=linear-interpolator.js.map","export function applyStyles(element, style) {\n if (style) {\n Object.entries(style).map(([key, value]) => {\n if (key.startsWith('--')) {\n // Assume CSS variable\n element.style.setProperty(key, value);\n }\n else {\n // Assume camelCase\n element.style[key] = value;\n }\n });\n }\n}\nexport function removeStyles(element, style) {\n if (style) {\n Object.keys(style).map(key => {\n if (key.startsWith('--')) {\n // Assume CSS variable\n element.style.removeProperty(key);\n }\n else {\n // Assume camelCase\n element.style[key] = '';\n }\n });\n }\n}\n//# sourceMappingURL=apply-styles.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { deepEqual } from \"../utils/deep-equal.js\";\nimport { applyStyles, removeStyles } from \"../utils/apply-styles.js\";\nexport class Widget {\n constructor(props) {\n /**\n * The view id that this widget controls. Default `null`.\n * If assigned, this widget will only respond to events occurred inside the specific view that matches this id.\n */\n this.viewId = null;\n this.props = {\n // @ts-expect-error `defaultProps` may not exist on constructor\n ...this.constructor.defaultProps,\n ...props\n };\n // @ts-expect-error TODO(ib) - why is id considered optional even though we use Required<>\n this.id = this.props.id;\n }\n /** Called to update widget options */\n setProps(props) {\n const oldProps = this.props;\n const el = this.rootElement;\n // Update className and style\n if (el && oldProps.className !== props.className) {\n if (oldProps.className)\n el.classList.remove(oldProps.className);\n if (props.className)\n el.classList.add(props.className);\n }\n // Update style\n if (el && !deepEqual(oldProps.style, props.style, 1)) {\n removeStyles(el, oldProps.style);\n applyStyles(el, props.style);\n }\n Object.assign(this.props, props);\n // Update the HTML to match the new props\n this.updateHTML();\n }\n /** Update the HTML to reflect latest props and state */\n updateHTML() {\n if (this.rootElement) {\n this.onRenderHTML(this.rootElement);\n }\n }\n // @note empty method calls have an overhead in V8 but it is very low, ~1ns\n /**\n * Common utility to create the root DOM element for this widget\n * Configures the top-level styles and adds basic class names for theming\n * @returns an UI element that should be appended to the Deck container\n */\n onCreateRootElement() {\n const CLASS_NAMES = [\n // Add class names for theming\n 'deck-widget',\n this.className,\n // plus any app-supplied class name\n this.props.className\n ];\n const element = document.createElement('div');\n CLASS_NAMES.filter((cls) => typeof cls === 'string' && cls.length > 0).forEach(className => element.classList.add(className));\n applyStyles(element, this.props.style);\n return element;\n }\n /** Internal API called by Deck when the widget is first added to a Deck instance */\n _onAdd(params) {\n return this.onAdd(params) ?? this.onCreateRootElement();\n }\n /** Overridable by subclass - called when the widget is first added to a Deck instance\n * @returns an optional UI element that should be appended to the Deck container\n */\n onAdd(params) { }\n /** Called when the widget is removed */\n onRemove() { }\n // deck integration - Event hooks\n /** Called when the containing view is changed */\n onViewportChange(viewport) { }\n /** Called when the containing view is redrawn */\n onRedraw(params) { }\n /** Called when a hover event occurs */\n onHover(info, event) { }\n /** Called when a click event occurs */\n onClick(info, event) { }\n /** Called when a drag event occurs */\n onDrag(info, event) { }\n /** Called when a dragstart event occurs */\n onDragStart(info, event) { }\n /** Called when a dragend event occurs */\n onDragEnd(info, event) { }\n}\nWidget.defaultProps = {\n id: 'widget',\n style: {},\n _container: null,\n className: ''\n};\n//# sourceMappingURL=widget.js.map"],"names":["STARTUP_MESSAGE","ERROR_MESSAGE","Luma","Device","lumaStats","log","props_","props","adapter","handle","type","adapters","deviceClass","adapterMap","KNOWN_ADAPTERS","selectedType","enforce","webgl2Adapter","map","luma","TransitionInterpolator","opts","compare","extract","required","currentProps","nextProps","key","equals","startProps","endProps","startViewStateProps","endViewStateProps","propName","value","assert","DEFAULT_PROPS","DEFAULT_REQUIRED_PROPS","LinearInterpolator","transitionProps","normalizedOpts","result","makeViewport","around","GlobeViewport","startViewport","endViewport","aroundPosition","t","propsInTransition","lerp","viewport","applyStyles","element","style","removeStyles","Widget","oldProps","el","deepEqual","CLASS_NAMES","cls","className","params","info","event"],"mappings":"iLAMA,MAAMA,EAAkB,sDAClBC,EAAgB,mGAMf,MAAMC,CAAK,CACd,OAAO,aAAe,CAClB,GAAGC,EAAO,aACV,KAAM,iBACN,SAAU,OACV,gBAAiB,EACzB,EAEI,MAAQC,EAQR,IAAMC,EAEN,QAGiC,QACjC,QACA,sBAAwB,IAAI,IAC5B,aAAc,CACV,GAAI,WAAW,KAAM,CACjB,GAAI,WAAW,KAAK,UAAY,KAAK,QACjC,MAAAA,EAAI,MAAM,iBAAiB,WAAW,KAAK,OAAO,sBAAsB,KAAK,OAAO,EAAE,EAAC,EACvFA,EAAI,MAAM,uEAAuE,EAAC,EAC5E,IAAI,MAAM,uDAAuD,EAE3EA,EAAI,MAAM,sDAAsD,EAAC,CACrE,CACAA,EAAI,IAAI,EAAG,GAAG,KAAK,OAAO,MAAML,CAAe,EAAE,EAAC,EAClD,WAAW,KAAO,IACtB,CAEA,MAAM,aAAaM,EAAS,GAAI,CAC5B,MAAMC,EAAQ,CAAE,GAAGL,EAAK,aAAc,GAAGI,CAAM,EACzCE,EAAU,KAAK,cAAcD,EAAM,KAAMA,EAAM,QAAQ,EAC7D,GAAI,CAACC,EACD,MAAM,IAAI,MAAMP,CAAa,EAGjC,OAAIM,EAAM,iBACN,MAAMC,EAAQ,WAEX,MAAMA,EAAQ,OAAOD,CAAK,CACrC,CAKA,MAAM,aAAaE,EAAQF,EAAO,CAC9B,MAAMG,EAAO,KAAK,mBAAmBD,EAAQF,EAAM,QAAQ,EACrDC,EAAUE,GAAQ,KAAK,cAAcA,EAAMH,EAAM,QAAQ,EAC/D,GAAI,CAACC,EACD,MAAM,IAAI,MAAMP,CAAa,EAEjC,OAAO,MAAMO,GAAS,SAASC,EAAQF,CAAK,CAChD,CAKA,iBAAiBI,EAAU,CACvB,UAAWC,KAAeD,EACtB,KAAK,sBAAsB,IAAIC,EAAY,KAAMA,CAAW,CAEpE,CAEA,qBAAqBD,EAAW,GAAI,CAChC,MAAME,EAAa,KAAK,eAAeF,CAAQ,EAC/C,OAAO,MAAM,KAAKE,CAAU,EACvB,IAAI,CAAC,EAAGL,CAAO,IAAMA,CAAO,EAC5B,OAAOA,GAAWA,EAAQ,cAAW,CAAI,EACzC,IAAIA,GAAWA,EAAQ,IAAI,CACpC,CAEA,4BAA4BG,EAAW,GAAI,CACvC,MAAMG,EAAiB,CAAC,SAAU,QAAS,MAAM,EAC3CD,EAAa,KAAK,eAAeF,CAAQ,EAC/C,UAAWD,KAAQI,EACf,GAAID,EAAW,IAAIH,CAAI,GAAG,cAAW,EACjC,OAAOA,EAGf,OAAO,IACX,CAEA,cAAcA,EAAMC,EAAW,GAAI,CAC/B,IAAII,EAAeL,EACfA,IAAS,mBACTK,EAAe,KAAK,4BAA4BJ,CAAQ,GAE5D,MAAME,EAAa,KAAK,eAAeF,CAAQ,EAC/C,OAAQI,GAAgBF,EAAW,IAAIE,CAAY,GAAM,IAC7D,CAKA,cAAcC,EAAU,GAAML,EAAW,CAAA,EAAI,CAEzC,MAAMM,EADa,KAAK,eAAeN,CAAQ,EACd,IAAI,OAAO,EACvCM,GACDZ,EAAI,KAAK,wCAAwC,EAAC,EAEtDY,GAAe,gBAAgBD,CAAO,CAC1C,CAGA,sBAAsBT,EAAO,CACzB,OAAO,OAAOL,EAAK,aAAcK,CAAK,CAC1C,CAGA,eAAeI,EAAW,GAAI,CAC1B,MAAMO,EAAM,IAAI,IAAI,KAAK,qBAAqB,EAC9C,UAAWV,KAAWG,EAClBO,EAAI,IAAIV,EAAQ,KAAMA,CAAO,EAEjC,OAAOU,CACX,CAEA,mBAAmBT,EAAQE,EAAW,GAAI,CAGtC,OAAIF,aAAkB,uBACX,QAEP,OAAO,UAAc,KAAeA,aAAkB,WAItDA,GAAQ,MACD,SAGPA,IAAW,KACJ,QAEPA,aAAkB,sBAClBJ,EAAI,KAAK,0BAA2BI,CAAM,EAAC,EAG3CJ,EAAI,KAAK,sBAAuBI,CAAM,EAAC,EAEpC,KACX,CACJ,CAMY,MAACU,EAAO,IAAIjB,ECpKT,MAAMkB,CAAuB,CAQxC,YAAYC,EAAM,CACd,KAAM,CAAE,QAAAC,EAAS,QAAAC,EAAS,SAAAC,CAAQ,EAAKH,EACvC,KAAK,gBAAkBC,EACvB,KAAK,gBAAkBC,GAAWD,EAClC,KAAK,eAAiBE,CAC1B,CAOA,cAAcC,EAAcC,EAAW,CACnC,UAAWC,KAAO,KAAK,gBACnB,GAAI,EAAEA,KAAOF,IACT,EAAEE,KAAOD,IACT,CAACE,EAAOH,EAAaE,CAAG,EAAGD,EAAUC,CAAG,CAAC,EACzC,MAAO,GAGf,MAAO,EACX,CAQA,gBAAgBE,EAAYC,EAAU,CAClC,MAAMC,EAAsB,CAAA,EACtBC,EAAoB,CAAA,EAC1B,UAAWL,KAAO,KAAK,iBACfA,KAAOE,GAAcF,KAAOG,KAC5BC,EAAoBJ,CAAG,EAAIE,EAAWF,CAAG,EACzCK,EAAkBL,CAAG,EAAIG,EAASH,CAAG,GAG7C,YAAK,oBAAoBI,CAAmB,EAC5C,KAAK,oBAAoBC,CAAiB,EACnC,CAAE,MAAOD,EAAqB,IAAKC,CAAiB,CAC/D,CAOA,YAAYH,EAAYC,EAAU,CAC9B,OAAOA,EAAS,kBACpB,CACA,oBAAoBvB,EAAO,CAClB,KAAK,gBAGV,KAAK,eAAe,QAAQ0B,GAAY,CACpC,MAAMC,EAAQ3B,EAAM0B,CAAQ,EAC5BE,EAAO,OAAO,SAASD,CAAK,GAAK,MAAM,QAAQA,CAAK,EAAG,GAAGD,CAAQ,6BAA6B,CACnG,CAAC,CACL,CACJ,CClEA,MAAMG,EAAgB,CAAC,YAAa,WAAY,OAAQ,UAAW,OAAO,EACpEC,EAAyB,CAAC,YAAa,WAAY,MAAM,EAIhD,MAAMC,UAA2BlB,CAAuB,CAOnE,YAAYC,EAAO,GAAI,CAEnB,MAAMkB,EAAkB,MAAM,QAAQlB,CAAI,EAAIA,EAAOA,EAAK,gBACpDmB,EAAiB,MAAM,QAAQnB,CAAI,EAAI,CAAA,EAAKA,EAClDmB,EAAe,gBAAkB,MAAM,QAAQD,CAAe,EACxD,CACE,QAASA,EACT,SAAUA,CAC1B,EACcA,GAAmB,CACjB,QAASH,EACT,SAAUC,CAC1B,EACQ,MAAMG,EAAe,eAAe,EACpC,KAAK,KAAOA,CAChB,CACA,gBAAgBX,EAAYC,EAAU,CAClC,MAAMW,EAAS,MAAM,gBAAgBZ,EAAYC,CAAQ,EACnD,CAAE,aAAAY,EAAc,OAAAC,CAAM,EAAK,KAAK,KACtC,GAAID,GAAgBC,EAEhB,GADqBD,EAAab,CAAU,YAChBe,EACxBvC,EAAI,KAAK,mCAAmC,EAAC,MAE5C,CACD,MAAMwC,EAAgBH,EAAab,CAAU,EACvCiB,EAAcJ,EAAaZ,CAAQ,EACnCiB,EAAiBF,EAAc,UAAUF,CAAM,EACrDF,EAAO,MAAM,OAASE,EACtB,OAAO,OAAOF,EAAO,IAAK,CACtB,OAAQK,EAAY,QAAQC,CAAc,EAC1C,eAAAA,EACA,MAAOjB,EAAS,MAChB,OAAQA,EAAS,MACrC,CAAiB,CACL,CAEJ,OAAOW,CACX,CACA,iBAAiBZ,EAAYC,EAAUkB,EAAG,CACtC,MAAMC,EAAoB,CAAA,EAC1B,UAAWtB,KAAO,KAAK,gBACnBsB,EAAkBtB,CAAG,EAAIuB,EAAKrB,EAAWF,CAAG,GAAK,EAAGG,EAASH,CAAG,GAAK,EAAGqB,CAAC,EAE7E,GAAIlB,EAAS,gBAAkB,KAAK,KAAK,aAAc,CAEnD,MAAMqB,EAAW,KAAK,KAAK,aAAa,CAAE,GAAGrB,EAAU,GAAGmB,EAAmB,EAC7E,OAAO,OAAOA,EAAmBE,EAAS,cAAcrB,EAAS,eAEjEoB,EAAKrB,EAAW,OAAQC,EAAS,OAAQkB,CAAC,CAAC,CAAC,CAChD,CACA,OAAOC,CACX,CACJ,CCxEO,SAASG,EAAYC,EAASC,EAAO,CACpCA,GACA,OAAO,QAAQA,CAAK,EAAE,IAAI,CAAC,CAAC3B,EAAKO,CAAK,IAAM,CACpCP,EAAI,WAAW,IAAI,EAEnB0B,EAAQ,MAAM,YAAY1B,EAAKO,CAAK,EAIpCmB,EAAQ,MAAM1B,CAAG,EAAIO,CAE7B,CAAC,CAET,CACO,SAASqB,EAAaF,EAASC,EAAO,CACrCA,GACA,OAAO,KAAKA,CAAK,EAAE,IAAI3B,GAAO,CACtBA,EAAI,WAAW,IAAI,EAEnB0B,EAAQ,MAAM,eAAe1B,CAAG,EAIhC0B,EAAQ,MAAM1B,CAAG,EAAI,EAE7B,CAAC,CAET,CCtBO,MAAM6B,CAAO,CAChB,YAAYjD,EAAO,CAKf,KAAK,OAAS,KACd,KAAK,MAAQ,CAET,GAAG,KAAK,YAAY,aACpB,GAAGA,CACf,EAEQ,KAAK,GAAK,KAAK,MAAM,EACzB,CAEA,SAASA,EAAO,CACZ,MAAMkD,EAAW,KAAK,MAChBC,EAAK,KAAK,YAEZA,GAAMD,EAAS,YAAclD,EAAM,YAC/BkD,EAAS,WACTC,EAAG,UAAU,OAAOD,EAAS,SAAS,EACtClD,EAAM,WACNmD,EAAG,UAAU,IAAInD,EAAM,SAAS,GAGpCmD,GAAM,CAACC,EAAUF,EAAS,MAAOlD,EAAM,MAAO,CAAC,IAC/CgD,EAAaG,EAAID,EAAS,KAAK,EAC/BL,EAAYM,EAAInD,EAAM,KAAK,GAE/B,OAAO,OAAO,KAAK,MAAOA,CAAK,EAE/B,KAAK,WAAU,CACnB,CAEA,YAAa,CACL,KAAK,aACL,KAAK,aAAa,KAAK,WAAW,CAE1C,CAOA,qBAAsB,CAClB,MAAMqD,EAAc,CAEhB,cACA,KAAK,UAEL,KAAK,MAAM,SACvB,EACcP,EAAU,SAAS,cAAc,KAAK,EAC5C,OAAAO,EAAY,OAAQC,GAAQ,OAAOA,GAAQ,UAAYA,EAAI,OAAS,CAAC,EAAE,QAAQC,GAAaT,EAAQ,UAAU,IAAIS,CAAS,CAAC,EAC5HV,EAAYC,EAAS,KAAK,MAAM,KAAK,EAC9BA,CACX,CAEA,OAAOU,EAAQ,CACX,OAAO,KAAK,MAAMA,CAAM,GAAK,KAAK,oBAAmB,CACzD,CAIA,MAAMA,EAAQ,CAAE,CAEhB,UAAW,CAAE,CAGb,iBAAiBZ,EAAU,CAAE,CAE7B,SAASY,EAAQ,CAAE,CAEnB,QAAQC,EAAMC,EAAO,CAAE,CAEvB,QAAQD,EAAMC,EAAO,CAAE,CAEvB,OAAOD,EAAMC,EAAO,CAAE,CAEtB,YAAYD,EAAMC,EAAO,CAAE,CAE3B,UAAUD,EAAMC,EAAO,CAAE,CAC7B,CACAT,EAAO,aAAe,CAClB,GAAI,SACJ,MAAO,CAAA,EACP,WAAY,KACZ,UAAW,EACf","x_google_ignoreList":[0,1,2,3,4]}
@@ -0,0 +1,60 @@
1
+ import{a as G,C as T,V as F,b as E}from"./assets/globe-view-Day_n1iB.js";import{A as le,D as de,e as me,d as ge,L as fe,f as Pe,M as we,T as Se,c as _e,h as xe,G as Me,g as Ve,s as be}from"./assets/globe-view-Day_n1iB.js";import{e as $,G as H}from"./assets/layer-DPcO4AXQ.js";import{A as ye,f as Ce,L as Ae,C as Te,k as Ee,j as Oe,i as Le,c as Re,h as ze,d as Ie,p as Ue}from"./assets/layer-DPcO4AXQ.js";import{H as Y,I as W,A as v,J as P,K as _,L as q,h as d,N as S,O as R,V as Z,f as J,p as K,b as C,Q,S as A}from"./assets/deep-equal-BTW2ZN6S.js";import{T as Fe,U as Ze,W as Ne,i as Xe,X as ke,x as je}from"./assets/deep-equal-BTW2ZN6S.js";import{g as tt,i as et}from"./assets/project-BTjD2Imj.js";import{m as Ge,p as $e}from"./assets/project-BTjD2Imj.js";import{P as ot}from"./assets/pick-layers-pass-C-3k0wbN.js";import{L as Ye,a as We}from"./assets/pick-layers-pass-C-3k0wbN.js";import{M as it,u as rt}from"./assets/shader-Cbdysp2j.js";import{m as Je}from"./assets/shader-Cbdysp2j.js";import{C as Qe,T as to,g as eo}from"./assets/tesselator-CENyUZ2p.js";import{G as io}from"./assets/globe-viewport-tqhQW7C4.js";import{O as st}from"./assets/orthographic-viewport-B4nCj5tn.js";import{L as O}from"./assets/widget-BjgEeHAL.js";import{T as so,W as no,a as ao,r as co}from"./assets/widget-BjgEeHAL.js";import{L as po}from"./assets/layer-extension-CYwTXf73.js";import{F as lo}from"./assets/fly-to-interpolator-CIXGjOdo.js";import{a as go}from"./assets/assert-cyW4mg7q.js";import{c as Po}from"./assets/color-CUNNsFV-.js";import{b as So,f as _o}from"./assets/webgl-developer-tools-utTNOsNf.js";import"./assets/image-loader-hHJsndO6.js";import"./assets/array-utils-flat-BBMak426.js";import"./assets/webgl-device-BYRB-GQX.js";const z=1e-6,nt=6371e3;class w{constructor({phi:t=0,theta:e=0,radius:i=1,bearing:o,pitch:r,altitude:s,radiusScale:a=nt}={}){this.phi=t,this.theta=e,this.radius=i||s||1,this.radiusScale=a||1,o!==void 0&&(this.bearing=o),r!==void 0&&(this.pitch=r),this.check()}toString(){return this.formatString(Y)}formatString({printTypes:t=!1}){const e=W;return`${t?"Spherical":""}[rho:${e(this.radius)},theta:${e(this.theta)},phi:${e(this.phi)}]`}equals(t){return v(this.radius,t.radius)&&v(this.theta,t.theta)&&v(this.phi,t.phi)}exactEquals(t){return this.radius===t.radius&&this.theta===t.theta&&this.phi===t.phi}get bearing(){return 180-P(this.phi)}set bearing(t){this.phi=Math.PI-_(t)}get pitch(){return P(this.theta)}set pitch(t){this.theta=_(t)}get longitude(){return P(this.phi)}get latitude(){return P(this.theta)}get lng(){return P(this.phi)}get lat(){return P(this.theta)}get z(){return(this.radius-1)*this.radiusScale}set(t,e,i){return this.radius=t,this.phi=e,this.theta=i,this.check()}clone(){return new w().copy(this)}copy(t){return this.radius=t.radius,this.phi=t.phi,this.theta=t.theta,this.check()}fromLngLatZ([t,e,i]){return this.radius=1+i/this.radiusScale,this.phi=_(e),this.theta=_(t),this.check()}fromVector3(t){return this.radius=q(t),this.radius>0&&(this.theta=Math.atan2(t[0],t[1]),this.phi=Math.acos(d(t[2]/this.radius,-1,1))),this.check()}toVector3(){return new S(0,0,this.radius).rotateX({radians:this.theta}).rotateZ({radians:this.phi})}makeSafe(){return this.phi=Math.max(z,Math.min(Math.PI-z,this.phi)),this}check(){if(!Number.isFinite(this.phi)||!Number.isFinite(this.theta)||!(this.radius>0))throw new Error("SphericalCoordinates: some fields set to invalid numbers");return this}}const at=[255,255,255],ct=1,ht=[1,0,0],pt=[0,0,1];let ut=0;class lt{constructor(t={}){this.type="point";const{color:e=at}=t,{intensity:i=ct}=t,{position:o=pt}=t;this.id=t.id||`point-${ut++}`,this.color=e,this.intensity=i,this.type="point",this.position=o,this.attenuation=dt(t),this.projectedLight={...this}}getProjectedLight({layer:t}){const{projectedLight:e}=this,i=t.context.viewport,{coordinateSystem:o,coordinateOrigin:r}=t.props,s=$(this.position,{viewport:i,coordinateSystem:o,coordinateOrigin:r,fromCoordinateSystem:i.isGeospatial?R.LNGLAT:R.CARTESIAN,fromCoordinateOrigin:[0,0,0]});return e.color=this.color,e.intensity=this.intensity,e.position=s,e}}function dt(n){return n.attenuation?n.attenuation:ht}class ae extends lt{getProjectedLight({layer:t}){const{projectedLight:e}=this,i=t.context.viewport,{coordinateSystem:o,coordinateOrigin:r,modelMatrix:s}=t.props,{cameraPosition:a}=tt({viewport:i,modelMatrix:s,coordinateSystem:o,coordinateOrigin:r});return e.color=this.color,e.intensity=this.intensity,e.position=a,e}}const f=Math.PI/180,mt=1e3*60*60*24,gt=2440588,ft=2451545,x=f*23.4397,Pt=357.5291,wt=.98560028,St=280.147,_t=360.9856235;function xt(n,t,e){const i=f*-e,o=f*t,r=Vt(n),s=Ot(r),a=At(r,i)-s.rightAscension;return{azimuth:yt(a,o,s.declination),altitude:Ct(a,o,s.declination)}}function I(n,t,e){const{azimuth:i,altitude:o}=xt(n,t,e);return[Math.sin(i)*Math.cos(o),Math.cos(i)*Math.cos(o),-Math.sin(o)]}function Mt(n){return(typeof n=="number"?n:n.getTime())/mt-.5+gt}function Vt(n){return Mt(n)-ft}function bt(n,t){const e=n;return Math.atan2(Math.sin(e)*Math.cos(x)-Math.tan(t)*Math.sin(x),Math.cos(e))}function vt(n,t){const e=n;return Math.asin(Math.sin(t)*Math.cos(x)+Math.cos(t)*Math.sin(x)*Math.sin(e))}function yt(n,t,e){const i=n,o=t,r=e;return Math.atan2(Math.sin(i),Math.cos(i)*Math.sin(o)-Math.tan(r)*Math.cos(o))}function Ct(n,t,e){const i=n,o=t,r=e;return Math.asin(Math.sin(o)*Math.sin(r)+Math.cos(o)*Math.cos(r)*Math.cos(i))}function At(n,t){return f*(St+_t*n)-t}function Tt(n){return f*(Pt+wt*n)}function Et(n){const t=n,e=f*(1.9148*Math.sin(t)+.02*Math.sin(2*t)+3e-4*Math.sin(3*t)),i=f*102.9372;return t+e+i+Math.PI}function Ot(n){const t=Tt(n),e=Et(t);return{declination:vt(e,0),rightAscension:bt(e,0)}}class ce extends G{constructor(t){super(t),this.timestamp=t.timestamp}getProjectedLight({layer:t}){const{viewport:e}=t.context;if(e.resolution&&e.resolution>0){const[o,r,s]=I(this.timestamp,0,0);this.direction=[o,-s,r]}else{const{latitude:o,longitude:r}=e;this.direction=I(this.timestamp,o,r)}return this}}const Lt=`struct VertexInputs {
2
+ @location(0) clipSpacePosition: vec2<f32>,
3
+ @location(1) texCoord: vec2<f32>,
4
+ @location(2) coordinate: vec2<f32>
5
+ }
6
+
7
+ struct FragmentInputs {
8
+ @builtin(position) Position : vec4<f32>,
9
+ @location(0) position : vec2<f32>,
10
+ @location(1) coordinate : vec2<f32>,
11
+ @location(2) uv : vec2<f32>
12
+ };
13
+
14
+ @vertex
15
+ fn vertexMain(inputs: VertexInputs) -> FragmentInputs {
16
+ var outputs: FragmentInputs;
17
+ outputs.Position = vec4(inputs.clipSpacePosition, 0., 1.);
18
+ outputs.position = inputs.clipSpacePosition;
19
+ outputs.coordinate = inputs.coordinate;
20
+ outputs.uv = inputs.texCoord;
21
+ return outputs;
22
+ }
23
+ `,Rt=`#version 300 es
24
+ in vec2 clipSpacePositions;
25
+ in vec2 texCoords;
26
+ in vec2 coordinates;
27
+
28
+ out vec2 position;
29
+ out vec2 coordinate;
30
+ out vec2 uv;
31
+
32
+ void main(void) {
33
+ gl_Position = vec4(clipSpacePositions, 0., 1.);
34
+ position = clipSpacePositions;
35
+ coordinate = coordinates;
36
+ uv = texCoords;
37
+ }
38
+ `,U=[-1,-1,1,-1,-1,1,1,1];class zt extends it{constructor(t,e){const i=U.map(o=>o===-1?0:o);e.source&&(e={...e,source:`${Lt}
39
+ ${e.source}`}),super(t,{id:e.id||rt("clip-space"),...e,vs:Rt,vertexCount:4,geometry:new H({topology:"triangle-strip",vertexCount:4,attributes:{clipSpacePositions:{size:2,value:new Float32Array(U)},texCoords:{size:2,value:new Float32Array(i)},coordinates:{size:2,value:new Float32Array(i)}}})})}}const It=`uniform screenUniforms {
40
+ vec2 texSize;
41
+ } screen;
42
+ `,Ut={name:"screen",fs:It,uniformTypes:{texSize:"vec2<f32>"}};class Dt extends ot{constructor(t,e){super(t,e);const{module:i,fs:o,id:r}=e,s={depthWriteEnabled:!1,depthCompare:"always",depthBias:0,blend:!0,blendColorSrcFactor:"one",blendColorDstFactor:"one-minus-src-alpha",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one-minus-src-alpha",blendColorOperation:"add",blendAlphaOperation:"add"};this.model=new zt(t,{id:r,fs:o,modules:[i,Ut],parameters:s})}render(t){this._renderPass(this.device,t)}delete(){this.model.destroy(),this.model=null}_renderPass(t,e){const{clearCanvas:i,inputBuffer:o,outputBuffer:r}=e,s=[o.width,o.height],a={texSrc:o.colorAttachments[0],texSize:s};this.model.shaderInputs.setProps({screen:a,...e.moduleProps});const c=this.device.beginRenderPass({framebuffer:r,parameters:{viewport:[0,0,...s]},clearColor:i?[0,0,0,0]:!1,clearDepth:1,clearStencil:!1});this.model.draw(c),c.end()}}class he{constructor(t,e){this.id=`${t.name}-pass`,this.props=e,et(t),this.module=t}setup({device:t}){this.passes=Ft(t,this.module,this.id)}setProps(t){this.props=t}preRender(){}postRender(t){const e=this.passes,{target:i}=t;let o=t.inputBuffer,r=t.swapBuffer;for(let s=0;s<e.length;s++){const a=s===e.length-1,c=i!==void 0&&a;c&&(r=i);const h=!c||!!t.clearCanvas,p={},u=this.module.passes[s].uniforms;p[this.module.name]={...this.props,...u},e[s].render({clearCanvas:h,inputBuffer:o,outputBuffer:r,moduleProps:p});const l=r;r=o,o=l}return o}cleanup(){if(this.passes){for(const t of this.passes)t.delete();this.passes=void 0}}}function Ft(n,t,e){return t.passes.map((i,o)=>{const r=Xt(t,i),s=`${e}-${o}`;return new Dt(n,{id:s,module:t,fs:r})})}const N=`#version 300 es
43
+ uniform sampler2D texSrc;
44
+
45
+ in vec2 position;
46
+ in vec2 coordinate;
47
+ in vec2 uv;
48
+
49
+ out vec4 fragColor;
50
+ `,Zt=n=>`${N}
51
+ void main() {
52
+ fragColor = texture(texSrc, coordinate);
53
+ fragColor = ${n}(fragColor, screen.texSize, coordinate);
54
+ }
55
+ `,Nt=n=>`${N}
56
+ void main() {
57
+ fragColor = ${n}(texSrc, screen.texSize, coordinate);
58
+ }
59
+ `;function Xt(n,t){if(t.filter){const e=typeof t.filter=="string"?t.filter:`${n.name}_filterColor_ext`;return Zt(e)}if(t.sampler){const e=typeof t.sampler=="string"?t.sampler:`${n.name}_sampleColor`;return Nt(e)}return""}const y=Math.PI/180;function kt({height:n,focalDistance:t,orbitAxis:e,rotationX:i,rotationOrbit:o,zoom:r}){const s=e==="Z"?[0,0,1]:[0,1,0],a=e==="Z"?[0,-t,0]:[0,0,t],c=new C().lookAt({eye:a,up:s});c.rotateX(i*y),e==="Z"?c.rotateZ(o*y):c.rotateY(o*y);const h=Math.pow(2,r)/n;return c.scale(h),c}class X extends Z{constructor(t){const{height:e,projectionMatrix:i,fovy:o=50,orbitAxis:r="Z",target:s=[0,0,0],rotationX:a=0,rotationOrbit:c=0,zoom:h=0}=t,p=i?i[5]/2:J(o);super({...t,longitude:void 0,viewMatrix:kt({height:e||1,focalDistance:p,orbitAxis:r,rotationX:a,rotationOrbit:c,zoom:h}),fovy:o,focalDistance:p,position:s,zoom:h}),this.target=s,this.orbitAxis=r,this.rotationX=a,this.rotationOrbit=c,this.fovy=o,this.projectedCenter=this.project(this.center)}unproject(t,{topLeft:e=!0}={}){const[i,o,r=this.projectedCenter[2]]=t,s=e?o:this.height-o,[a,c,h]=K([i,s,r],this.pixelUnprojectionMatrix);return[a,c,h]}panByPosition(t,e,i){const o=this.project(t),r=[this.width/2+o[0]-e[0],this.height/2+o[1]-e[1],this.projectedCenter[2]];return{target:this.unproject(r)}}}X.displayName="OrbitViewport";class k extends Z{constructor(t){const{longitude:e,latitude:i,modelMatrix:o,bearing:r=0,pitch:s=0,up:a=[0,0,1]}=t,h=new w({bearing:r,pitch:s===-90?1e-4:90+s}).toVector3().normalize(),p=o?new C(o).transformAsVector(h):h,u=Number.isFinite(i)?Q({latitude:i}):0,l=Math.pow(2,u),m=new C().lookAt({eye:[0,0,0],center:p,up:a}).scale(l);super({...t,zoom:u,viewMatrix:m}),this.latitude=i,this.longitude=e,this.pitch=s,this.bearing=r,this.up=a}}k.displayName="FirstPersonViewport";const g=20,D=500;class L extends F{constructor(t){const{width:e,height:i,position:o=[0,0,0],bearing:r=0,pitch:s=0,longitude:a=null,latitude:c=null,maxPitch:h=90,minPitch:p=-90,startRotatePos:u,startBearing:l,startPitch:m,startZoomPosition:M,startPanPos:V,startPanPosition:b}=t;super({width:e,height:i,position:o,bearing:r,pitch:s,longitude:a,latitude:c,maxPitch:h,minPitch:p},{startRotatePos:u,startBearing:l,startPitch:m,startZoomPosition:M,startPanPos:V,startPanPosition:b}),this.makeViewport=t.makeViewport}panStart({pos:t}){const{position:e}=this.getViewportProps();return this._getUpdatedState({startPanPos:t,startPanPosition:e})}pan({pos:t}){if(!t)return this;const{startPanPos:e=[0,0],startPanPosition:i=[0,0]}=this.getState(),{width:o,height:r,bearing:s,pitch:a}=this.getViewportProps(),c=D*(t[0]-e[0])/o,h=D*(t[1]-e[1])/r,p=new w({bearing:s,pitch:a}),u=new w({bearing:s,pitch:-90}),l=p.toVector3().normalize(),m=u.toVector3().cross(l).normalize();return this._getUpdatedState({position:new S(i).add(m.scale(c)).add(l.scale(h))})}panEnd(){return this._getUpdatedState({startPanPos:null,startPanPosition: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:o,startBearing:r,startPitch:s}=this.getState(),{width:a,height:c}=this.getViewportProps();if(!o||r===void 0||s===void 0)return this;let h;if(t){const p=(t[0]-o[0])/a,u=(t[1]-o[1])/c;h={bearing:r-p*180,pitch:s-u*90}}else h={bearing:r-e,pitch:s-i};return this._getUpdatedState(h)}rotateEnd(){return this._getUpdatedState({startRotatePos:null,startBearing:null,startPitch:null})}zoomStart(){return this._getUpdatedState({startZoomPosition:this.getViewportProps().position})}zoom({pos:t,scale:e}){const i=this.getViewportProps(),o=this.getState().startZoomPosition||i.position,r=this.makeViewport(i),{projectionMatrix:s,width:a}=r,h=2*Math.atan(1/s[0])*(t[0]/a-.5),p=this.getDirection(!0);return this._move(p.rotateZ({radians:-h}),Math.log2(e)*g,o)}zoomEnd(){return this._getUpdatedState({startZoomPosition:null})}moveLeft(t=g){const e=this.getDirection(!0);return this._move(e.rotateZ({radians:Math.PI/2}),t)}moveRight(t=g){const e=this.getDirection(!0);return this._move(e.rotateZ({radians:-Math.PI/2}),t)}moveUp(t=g){const e=this.getDirection(!0);return this._move(e,t)}moveDown(t=g){const e=this.getDirection(!0);return this._move(e.negate(),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})}zoomIn(t=g){return this._move(new S(0,0,1),t)}zoomOut(t=g){return this._move(new S(0,0,-1),t)}shortestPathFrom(t){const e=t.getViewportProps(),i={...this.getViewportProps()},{bearing:o,longitude:r}=i;return Math.abs(o-e.bearing)>180&&(i.bearing=o<0?o+360:o-360),r!==null&&e.longitude!==null&&Math.abs(r-e.longitude)>180&&(i.longitude=r<0?r+360:r-360),i}_move(t,e,i=this.getViewportProps().position){const o=t.scale(e);return this._getUpdatedState({position:new S(i).add(o)})}getDirection(t=!1){return new w({bearing:this.getViewportProps().bearing,pitch:t?90:90+this.getViewportProps().pitch}).toVector3().normalize()}_getUpdatedState(t){return new L({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}applyConstraints(t){const{pitch:e,maxPitch:i,minPitch:o,longitude:r,bearing:s}=t;return t.pitch=d(e,o,i),r!==null&&(r<-180||r>180)&&(t.longitude=A(r+180,360)-180),(s<-180||s>180)&&(t.bearing=A(s+180,360)-180),t}}class jt extends T{constructor(){super(...arguments),this.ControllerState=L,this.transition={transitionDuration:300,transitionInterpolator:new O(["position","pitch","bearing"])}}}class Bt extends E{constructor(t={}){super(t)}getViewportType(){return k}get ControllerType(){return jt}}Bt.displayName="FirstPersonView";class j extends F{constructor(t){const{width:e,height:i,rotationX:o=0,rotationOrbit:r=0,target:s=[0,0,0],zoom:a=0,minRotationX:c=-90,maxRotationX:h=90,minZoom:p=-1/0,maxZoom:u=1/0,startPanPosition:l,startRotatePos:m,startRotationX:M,startRotationOrbit:V,startZoomPosition:b,startZoom:B}=t;super({width:e,height:i,rotationX:o,rotationOrbit:r,target:s,zoom:a,minRotationX:c,maxRotationX:h,minZoom:p,maxZoom:u},{startPanPosition:l,startRotatePos:m,startRotationX:M,startRotationOrbit:V,startZoomPosition:b,startZoom:B}),this.makeViewport=t.makeViewport}panStart({pos:t}){return this._getUpdatedState({startPanPosition:this._unproject(t)})}pan({pos:t,startPosition:e}){const i=this.getState().startPanPosition||e;if(!i)return this;const r=this.makeViewport(this.getViewportProps()).panByPosition(i,t);return this._getUpdatedState(r)}panEnd(){return this._getUpdatedState({startPanPosition:null})}rotateStart({pos:t}){return this._getUpdatedState({startRotatePos:t,startRotationX:this.getViewportProps().rotationX,startRotationOrbit:this.getViewportProps().rotationOrbit})}rotate({pos:t,deltaAngleX:e=0,deltaAngleY:i=0}){const{startRotatePos:o,startRotationX:r,startRotationOrbit:s}=this.getState(),{width:a,height:c}=this.getViewportProps();if(!o||r===void 0||s===void 0)return this;let h;if(t){let p=(t[0]-o[0])/a;const u=(t[1]-o[1])/c;(r<-90||r>90)&&(p*=-1),h={rotationX:r+u*180,rotationOrbit:s+p*180}}else h={rotationX:r+i,rotationOrbit:s+e};return this._getUpdatedState(h)}rotateEnd(){return this._getUpdatedState({startRotationX:null,startRotationOrbit:null})}shortestPathFrom(t){const e=t.getViewportProps(),i={...this.getViewportProps()},{rotationOrbit:o}=i;return Math.abs(o-e.rotationOrbit)>180&&(i.rotationOrbit=o<0?o+360:o-360),i}zoomStart({pos:t}){return this._getUpdatedState({startZoomPosition:this._unproject(t),startZoom:this.getViewportProps().zoom})}zoom({pos:t,startPos:e,scale:i}){let{startZoom:o,startZoomPosition:r}=this.getState();if(r||(o=this.getViewportProps().zoom,r=this._unproject(e)||this._unproject(t)),!r)return this;const s=this._calculateNewZoom({scale:i,startZoom:o}),a=this.makeViewport({...this.getViewportProps(),zoom:s});return this._getUpdatedState({zoom:s,...a.panByPosition(r,t)})}zoomEnd(){return this._getUpdatedState({startZoomPosition:null,startZoom:null})}zoomIn(t=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:t})})}zoomOut(t=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:1/t})})}moveLeft(t=50){return this._panFromCenter([-t,0])}moveRight(t=50){return this._panFromCenter([t,0])}moveUp(t=50){return this._panFromCenter([0,-t])}moveDown(t=50){return this._panFromCenter([0,t])}rotateLeft(t=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit-t})}rotateRight(t=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit+t})}rotateUp(t=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX-t})}rotateDown(t=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX+t})}_unproject(t){const e=this.makeViewport(this.getViewportProps());return t&&e.unproject(t)}_calculateNewZoom({scale:t,startZoom:e}){const{maxZoom:i,minZoom:o}=this.getViewportProps();e===void 0&&(e=this.getViewportProps().zoom);const r=e+Math.log2(t);return d(r,o,i)}_panFromCenter(t){const{width:e,height:i,target:o}=this.getViewportProps();return this.pan({startPosition:o,pos:[e/2+t[0],i/2+t[1]]})}_getUpdatedState(t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}applyConstraints(t){const{maxZoom:e,minZoom:i,zoom:o,maxRotationX:r,minRotationX:s,rotationOrbit:a}=t;return t.zoom=Array.isArray(o)?[d(o[0],i,e),d(o[1],i,e)]:d(o,i,e),t.rotationX=d(t.rotationX,s,r),(a<-180||a>180)&&(t.rotationOrbit=A(a+180,360)-180),t}}class Gt extends T{constructor(){super(...arguments),this.ControllerState=j,this.transition={transitionDuration:300,transitionInterpolator:new O({transitionProps:{compare:["target","zoom","rotationX","rotationOrbit"],required:["target","zoom"]}})}}}class $t extends E{constructor(t={}){super(t),this.props.orbitAxis=t.orbitAxis||"Z"}getViewportType(){return X}get ControllerType(){return Gt}}$t.displayName="OrbitView";class Ht extends j{constructor(t){super(t),this.zoomAxis=t.zoomAxis||"all"}_calculateNewZoom({scale:t,startZoom:e}){const{maxZoom:i,minZoom:o}=this.getViewportProps();e===void 0&&(e=this.getViewportProps().zoom);let r=Math.log2(t);if(Array.isArray(e)){let[s,a]=e;switch(this.zoomAxis){case"X":s=d(s+r,o,i);break;case"Y":a=d(a+r,o,i);break;default:let c=Math.min(s+r,a+r);c<o&&(r+=o-c),c=Math.max(s+r,a+r),c>i&&(r+=i-c),s+=r,a+=r}return[s,a]}return d(e+r,o,i)}}class Yt extends T{constructor(){super(...arguments),this.ControllerState=Ht,this.transition={transitionDuration:300,transitionInterpolator:new O(["target","zoom"])},this.dragMode="pan"}_onPanRotate(){return!1}}class Wt extends E{constructor(t={}){super(t)}getViewportType(){return st}get ControllerType(){return Yt}}Wt.displayName="OrthographicView";export{le as AmbientLight,ye as Attribute,Ce as AttributeManager,R as COORDINATE_SYSTEM,Qe as CompositeLayer,T as Controller,de as Deck,me as DeckRenderer,G as DirectionalLight,jt as FirstPersonController,Bt as FirstPersonView,k as FirstPersonViewport,lo as FlyToInterpolator,Ae as Layer,po as LayerExtension,ge as LayerManager,fe as LightingEffect,O as LinearInterpolator,Pe as MapController,we as MapView,Fe as OPERATION,Gt as OrbitController,$t as OrbitView,X as OrbitViewport,Yt as OrthographicController,Wt as OrthographicView,st as OrthographicViewport,lt as PointLight,he as PostProcessEffect,Se as TRANSITION_EVENTS,to as Tesselator,so as TransitionInterpolator,Ze as UNIT,_e as VERSION,E as View,Z as Viewport,Ne as WebMercatorViewport,no as Widget,ae as _CameraLight,Te as _Component,Ee as _ComponentState,xe as _GlobeController,Me as _GlobeView,io as _GlobeViewport,Ye as _LayersPass,We as _PickLayersPass,ce as _SunLight,ao as _applyStyles,Oe as _compareProps,Le as _count,Xe as _deepEqual,So as _fillArray,_o as _flatten,Ge as _memoize,Je as _mergeShaders,co as _removeStyles,go as assert,Po as color,Re as createIterable,ke as fp64LowPart,Ve as getShaderAssembler,eo as gouraudMaterial,je as log,ze as phongMaterial,Ie as picking,$e as project,Ue as project32,be as shadow};
60
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sources":["../../../node_modules/.pnpm/@math.gl+core@4.1.0/node_modules/@math.gl/core/dist/classes/spherical-coordinates.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/effects/lighting/point-light.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/effects/lighting/camera-light.js","../../../node_modules/.pnpm/@math.gl+sun@4.1.0/node_modules/@math.gl/sun/dist/suncalc.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/effects/lighting/sun-light.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.6_@luma.gl+core@9.2.6_@luma.gl+shadertools@9.2.6_@luma.gl+core@9.2.6_/node_modules/@luma.gl/engine/dist/models/clip-space.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/passes/screen-pass-uniforms.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/passes/screen-pass.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/effects/post-process-effect.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/viewports/orbit-viewport.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/viewports/first-person-viewport.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/controllers/first-person-controller.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/views/first-person-view.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/controllers/orbit-controller.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/views/orbit-view.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/controllers/orthographic-controller.js","../../../node_modules/.pnpm/@deck.gl+core@9.2.6/node_modules/@deck.gl/core/dist/views/orthographic-view.js"],"sourcesContent":["// math.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// Copyright (c) 2017 Uber Technologies, Inc.\nimport { Vector3 } from \"./vector3.js\";\nimport { formatValue, equals, config, degrees, radians, clamp } from \"../lib/common.js\";\n// @ts-ignore gl-matrix types...\nimport * as vec3 from \"../gl-matrix/vec3.js\";\n// TODO - import epsilon\nconst EPSILON = 0.000001;\nconst EARTH_RADIUS_METERS = 6371000;\n/**\n * The poles (phi) are at the positive and negative y axis.\n * The equator starts at positive z.\n * @link https://en.wikipedia.org/wiki/Spherical_coordinate_system\n */\nexport class SphericalCoordinates {\n // bearing: number;\n // pitch: number;\n // altitude: number;\n // lnglatZ coordinates\n // longitude: number;\n // latitude: number;\n // lng: number;\n // lat: number;\n // z: number;\n /**\n * Creates a new SphericalCoordinates object\n * @param options\n * @param [options.phi] =0 - rotation around X (latitude)\n * @param [options.theta] =0 - rotation around Y (longitude)\n * @param [options.radius] =1 - Distance from center\n * @param [options.bearing]\n * @param [options.pitch]\n * @param [options.altitude]\n * @param [options.radiusScale] =1\n */\n // eslint-disable-next-line complexity\n constructor({ phi = 0, theta = 0, radius = 1, bearing, pitch, altitude, radiusScale = EARTH_RADIUS_METERS } = {}) {\n this.phi = phi;\n this.theta = theta;\n // TODO - silently accepts illegal 0\n this.radius = radius || altitude || 1; // radial distance from center\n this.radiusScale = radiusScale || 1; // Used by lngLatZ\n if (bearing !== undefined) {\n this.bearing = bearing; // up / down towards top and bottom pole\n }\n if (pitch !== undefined) {\n this.pitch = pitch; // around the equator of the sphere\n }\n this.check();\n }\n toString() {\n return this.formatString(config);\n }\n formatString({ printTypes = false }) {\n const f = formatValue;\n return `${printTypes ? 'Spherical' : ''}\\\n[rho:${f(this.radius)},theta:${f(this.theta)},phi:${f(this.phi)}]`;\n }\n equals(other) {\n return (equals(this.radius, other.radius) &&\n equals(this.theta, other.theta) &&\n equals(this.phi, other.phi));\n }\n exactEquals(other) {\n return this.radius === other.radius && this.theta === other.theta && this.phi === other.phi;\n }\n /* eslint-disable brace-style */\n // Cartographic (bearing 0 north, pitch 0 look from above)\n get bearing() {\n return 180 - degrees(this.phi);\n }\n set bearing(v) {\n this.phi = Math.PI - radians(v);\n }\n get pitch() {\n return degrees(this.theta);\n }\n set pitch(v) {\n this.theta = radians(v);\n }\n // get pitch() { return 90 - degrees(this.phi); }\n // set pitch(v) { this.phi = radians(v) + Math.PI / 2; }\n // get altitude() { return this.radius - 1; } // relative altitude\n // lnglatZ coordinates\n get longitude() {\n return degrees(this.phi);\n }\n get latitude() {\n return degrees(this.theta);\n }\n get lng() {\n return degrees(this.phi);\n }\n get lat() {\n return degrees(this.theta);\n }\n get z() {\n return (this.radius - 1) * this.radiusScale;\n }\n /* eslint-enable brace-style */\n set(radius, phi, theta) {\n this.radius = radius;\n this.phi = phi;\n this.theta = theta;\n return this.check();\n }\n clone() {\n return new SphericalCoordinates().copy(this);\n }\n copy(other) {\n this.radius = other.radius;\n this.phi = other.phi;\n this.theta = other.theta;\n return this.check();\n }\n fromLngLatZ([lng, lat, z]) {\n this.radius = 1 + z / this.radiusScale;\n this.phi = radians(lat);\n this.theta = radians(lng);\n return this.check();\n }\n fromVector3(v) {\n this.radius = vec3.length(v);\n if (this.radius > 0) {\n this.theta = Math.atan2(v[0], v[1]); // equator angle around y-up axis\n this.phi = Math.acos(clamp(v[2] / this.radius, -1, 1)); // polar angle\n }\n return this.check();\n }\n toVector3() {\n return new Vector3(0, 0, this.radius)\n .rotateX({ radians: this.theta })\n .rotateZ({ radians: this.phi });\n }\n // restrict phi to be betwee EPS and PI-EPS\n makeSafe() {\n this.phi = Math.max(EPSILON, Math.min(Math.PI - EPSILON, this.phi));\n return this;\n }\n check() {\n // this.makeSafe();\n if (!Number.isFinite(this.phi) || !Number.isFinite(this.theta) || !(this.radius > 0)) {\n throw new Error('SphericalCoordinates: some fields set to invalid numbers');\n }\n return this;\n }\n}\n//# sourceMappingURL=spherical-coordinates.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { projectPosition } from \"../../shaderlib/project/project-functions.js\";\nimport { COORDINATE_SYSTEM } from \"../../lib/constants.js\";\nconst DEFAULT_LIGHT_COLOR = [255, 255, 255];\nconst DEFAULT_LIGHT_INTENSITY = 1.0;\nconst DEFAULT_ATTENUATION = [1, 0, 0];\nconst DEFAULT_LIGHT_POSITION = [0.0, 0.0, 1.0];\nlet idCount = 0;\nexport class PointLight {\n constructor(props = {}) {\n this.type = 'point';\n const { color = DEFAULT_LIGHT_COLOR } = props;\n const { intensity = DEFAULT_LIGHT_INTENSITY } = props;\n const { position = DEFAULT_LIGHT_POSITION } = props;\n this.id = props.id || `point-${idCount++}`;\n this.color = color;\n this.intensity = intensity;\n this.type = 'point';\n this.position = position;\n this.attenuation = getAttenuation(props);\n this.projectedLight = { ...this };\n }\n getProjectedLight({ layer }) {\n const { projectedLight } = this;\n const viewport = layer.context.viewport;\n const { coordinateSystem, coordinateOrigin } = layer.props;\n const position = projectPosition(this.position, {\n viewport,\n coordinateSystem,\n coordinateOrigin,\n fromCoordinateSystem: viewport.isGeospatial\n ? COORDINATE_SYSTEM.LNGLAT\n : COORDINATE_SYSTEM.CARTESIAN,\n fromCoordinateOrigin: [0, 0, 0]\n });\n projectedLight.color = this.color;\n projectedLight.intensity = this.intensity;\n projectedLight.position = position;\n return projectedLight;\n }\n}\nfunction getAttenuation(props) {\n if (props.attenuation) {\n return props.attenuation;\n }\n return DEFAULT_ATTENUATION;\n}\n//# sourceMappingURL=point-light.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { PointLight } from \"./point-light.js\";\nimport { getUniformsFromViewport } from \"../../shaderlib/project/viewport-uniforms.js\";\nexport default class CameraLight extends PointLight {\n getProjectedLight({ layer }) {\n const { projectedLight } = this;\n const viewport = layer.context.viewport;\n const { coordinateSystem, coordinateOrigin, modelMatrix } = layer.props;\n const { cameraPosition } = getUniformsFromViewport({\n viewport,\n modelMatrix: modelMatrix,\n coordinateSystem,\n coordinateOrigin\n });\n projectedLight.color = this.color;\n projectedLight.intensity = this.intensity;\n projectedLight.position = cameraPosition;\n return projectedLight;\n }\n}\n//# sourceMappingURL=camera-light.js.map","const DEGREES_TO_RADIANS = Math.PI / 180;\nconst DAY_IN_MS = 1000 * 60 * 60 * 24;\nconst JD1970 = 2440588; // Julian Day year 1970\nconst JD2000 = 2451545; // Julian Day year 2000\n// This angle ε [epsilon] is called the obliquity of the ecliptic and its value at the beginning of 2000 was 23.4397°\nconst e = DEGREES_TO_RADIANS * 23.4397; // obliquity of the Earth\n// Refer https://www.aa.quae.nl/en/reken/zonpositie.html\n// \"The Mean Anomaly\" section for explanation\nconst M0 = 357.5291; // Earth mean anomaly on start day\nconst M1 = 0.98560028; // Earth angle traverses on average per day seen from the sun\nconst THETA0 = 280.147; // The sidereal time (in degrees) at longitude 0° at the instant defined by JD2000\nconst THETA1 = 360.9856235; // The rate of change of the sidereal time, in degrees per day.\n/**\n * Calculate sun position\n * based on https://www.aa.quae.nl/en/reken/zonpositie.html\n * inspired by https://github.com/mourner/suncalc/blob/master/suncalc.js\n */\nexport function getSunPosition(timestamp, latitude, longitude) {\n const longitudeWestInRadians = DEGREES_TO_RADIANS * -longitude;\n const phi = DEGREES_TO_RADIANS * latitude;\n const d = toDays(timestamp);\n const c = getSunCoords(d);\n // hour angle\n const H = getSiderealTime(d, longitudeWestInRadians) - c.rightAscension;\n return {\n azimuth: getAzimuth(H, phi, c.declination),\n altitude: getAltitude(H, phi, c.declination)\n };\n}\nexport function getSunDirection(timestamp, latitude, longitude) {\n const { azimuth, altitude } = getSunPosition(timestamp, latitude, longitude);\n // solar position to light direction\n return [\n Math.sin(azimuth) * Math.cos(altitude),\n Math.cos(azimuth) * Math.cos(altitude),\n -Math.sin(altitude)\n ];\n}\nfunction toJulianDay(timestamp) {\n const ts = typeof timestamp === 'number' ? timestamp : timestamp.getTime();\n return ts / DAY_IN_MS - 0.5 + JD1970;\n}\nfunction toDays(timestamp) {\n return toJulianDay(timestamp) - JD2000;\n}\nfunction getRightAscension(eclipticLongitude, b) {\n const lambda = eclipticLongitude;\n return Math.atan2(Math.sin(lambda) * Math.cos(e) - Math.tan(b) * Math.sin(e), Math.cos(lambda));\n}\nfunction getDeclination(eclipticLongitude, b) {\n const lambda = eclipticLongitude;\n return Math.asin(Math.sin(b) * Math.cos(e) + Math.cos(b) * Math.sin(e) * Math.sin(lambda));\n}\nfunction getAzimuth(hourAngle, latitudeInRadians, declination) {\n const H = hourAngle;\n const phi = latitudeInRadians;\n const delta = declination;\n return Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(phi) - Math.tan(delta) * Math.cos(phi));\n}\nfunction getAltitude(hourAngle, latitudeInRadians, declination) {\n const H = hourAngle;\n const phi = latitudeInRadians;\n const delta = declination;\n return Math.asin(Math.sin(phi) * Math.sin(delta) + Math.cos(phi) * Math.cos(delta) * Math.cos(H));\n}\n// https://www.aa.quae.nl/en/reken/zonpositie.html\n// \"The Observer section\"\nfunction getSiderealTime(dates, longitudeWestInRadians) {\n return DEGREES_TO_RADIANS * (THETA0 + THETA1 * dates) - longitudeWestInRadians;\n}\nfunction getSolarMeanAnomaly(days) {\n return DEGREES_TO_RADIANS * (M0 + M1 * days);\n}\nfunction getEclipticLongitude(meanAnomaly) {\n const M = meanAnomaly;\n // equation of center\n const C = DEGREES_TO_RADIANS * (1.9148 * Math.sin(M) + 0.02 * Math.sin(2 * M) + 0.0003 * Math.sin(3 * M));\n // perihelion of the Earth\n const P = DEGREES_TO_RADIANS * 102.9372;\n return M + C + P + Math.PI;\n}\nfunction getSunCoords(dates) {\n const M = getSolarMeanAnomaly(dates);\n const L = getEclipticLongitude(M);\n return {\n declination: getDeclination(L, 0),\n rightAscension: getRightAscension(L, 0)\n };\n}\n//# sourceMappingURL=suncalc.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { DirectionalLight } from \"./directional-light.js\";\nimport { getSunDirection } from '@math.gl/sun';\nexport default class SunLight extends DirectionalLight {\n constructor(opts) {\n super(opts);\n this.timestamp = opts.timestamp;\n }\n getProjectedLight({ layer }) {\n const { viewport } = layer.context;\n const isGlobe = viewport.resolution && viewport.resolution > 0;\n if (isGlobe) {\n // Rotate vector to align with the direction of the globe projection (up at lon:0,lat:0 is [0, -1, 0])\n const [x, y, z] = getSunDirection(this.timestamp, 0, 0);\n this.direction = [x, -z, y];\n }\n else {\n // @ts-expect-error longitude and latitude are not defined on all viewports\n const { latitude, longitude } = viewport;\n this.direction = getSunDirection(this.timestamp, latitude, longitude);\n }\n return this;\n }\n}\n//# sourceMappingURL=sun-light.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Model } from \"../model/model.js\";\nimport { Geometry } from \"../geometry/geometry.js\";\nimport { uid } from \"../utils/uid.js\";\nconst CLIPSPACE_VERTEX_SHADER_WGSL = /* wgsl */ `\\\nstruct VertexInputs {\n @location(0) clipSpacePosition: vec2<f32>,\n @location(1) texCoord: vec2<f32>,\n @location(2) coordinate: vec2<f32> \n}\n\nstruct FragmentInputs {\n @builtin(position) Position : vec4<f32>,\n @location(0) position : vec2<f32>,\n @location(1) coordinate : vec2<f32>,\n @location(2) uv : vec2<f32>\n};\n\n@vertex\nfn vertexMain(inputs: VertexInputs) -> FragmentInputs {\n var outputs: FragmentInputs;\n outputs.Position = vec4(inputs.clipSpacePosition, 0., 1.);\n outputs.position = inputs.clipSpacePosition;\n outputs.coordinate = inputs.coordinate;\n outputs.uv = inputs.texCoord;\n return outputs;\n}\n`;\nconst CLIPSPACE_VERTEX_SHADER = /* glsl */ `\\\n#version 300 es\nin vec2 clipSpacePositions;\nin vec2 texCoords;\nin vec2 coordinates;\n\nout vec2 position;\nout vec2 coordinate;\nout vec2 uv;\n\nvoid main(void) {\n gl_Position = vec4(clipSpacePositions, 0., 1.);\n position = clipSpacePositions;\n coordinate = coordinates;\n uv = texCoords;\n}\n`;\n/* eslint-disable indent, no-multi-spaces */\nconst POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];\n/**\n * A flat geometry that covers the \"visible area\" that the GPU renders.\n */\nexport class ClipSpace extends Model {\n constructor(device, props) {\n const TEX_COORDS = POSITIONS.map(coord => (coord === -1 ? 0 : coord));\n // For WGSL we need to append the supplied fragment shader to the default vertex shader source\n if (props.source) {\n props = { ...props, source: `${CLIPSPACE_VERTEX_SHADER_WGSL}\\n${props.source}` };\n }\n super(device, {\n id: props.id || uid('clip-space'),\n ...props,\n vs: CLIPSPACE_VERTEX_SHADER,\n vertexCount: 4,\n geometry: new Geometry({\n topology: 'triangle-strip',\n vertexCount: 4,\n attributes: {\n clipSpacePositions: { size: 2, value: new Float32Array(POSITIONS) },\n texCoords: { size: 2, value: new Float32Array(TEX_COORDS) },\n coordinates: { size: 2, value: new Float32Array(TEX_COORDS) }\n }\n })\n });\n }\n}\n//# sourceMappingURL=clip-space.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst uniformBlock = `\\\nuniform screenUniforms {\n vec2 texSize;\n} screen;\n`;\nexport const screenUniforms = {\n name: 'screen',\n fs: uniformBlock,\n uniformTypes: {\n texSize: 'vec2<f32>'\n }\n};\n//# sourceMappingURL=screen-pass-uniforms.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { ClipSpace } from '@luma.gl/engine';\nimport Pass from \"./pass.js\";\nimport { screenUniforms } from \"./screen-pass-uniforms.js\";\n/** A base render pass. */\nexport default class ScreenPass extends Pass {\n constructor(device, props) {\n super(device, props);\n const { module, fs, id } = props;\n const parameters = {\n depthWriteEnabled: false,\n depthCompare: 'always',\n depthBias: 0,\n blend: true,\n blendColorSrcFactor: 'one',\n blendColorDstFactor: 'one-minus-src-alpha',\n blendAlphaSrcFactor: 'one',\n blendAlphaDstFactor: 'one-minus-src-alpha',\n blendColorOperation: 'add',\n blendAlphaOperation: 'add'\n };\n this.model = new ClipSpace(device, { id, fs, modules: [module, screenUniforms], parameters });\n }\n render(params) {\n this._renderPass(this.device, params);\n }\n delete() {\n this.model.destroy();\n this.model = null;\n }\n // Private methods\n /**\n * Renders the pass.\n * This is an abstract method that should be overridden.\n * @param inputBuffer - Frame buffer that contains the result of the previous pass\n * @param outputBuffer - Frame buffer that serves as the output render target\n */\n _renderPass(device, options) {\n const { clearCanvas, inputBuffer, outputBuffer } = options;\n const texSize = [inputBuffer.width, inputBuffer.height];\n const screenProps = {\n texSrc: inputBuffer.colorAttachments[0],\n texSize\n };\n this.model.shaderInputs.setProps({\n screen: screenProps,\n ...options.moduleProps\n });\n const renderPass = this.device.beginRenderPass({\n framebuffer: outputBuffer,\n parameters: { viewport: [0, 0, ...texSize] },\n clearColor: clearCanvas ? [0, 0, 0, 0] : false,\n clearDepth: 1,\n clearStencil: false\n });\n this.model.draw(renderPass);\n renderPass.end();\n }\n}\n//# sourceMappingURL=screen-pass.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { initializeShaderModule } from '@luma.gl/shadertools';\nimport ScreenPass from \"../passes/screen-pass.js\";\nexport default class PostProcessEffect {\n constructor(module, props) {\n this.id = `${module.name}-pass`;\n this.props = props;\n initializeShaderModule(module);\n this.module = module;\n }\n setup({ device }) {\n this.passes = createPasses(device, this.module, this.id);\n }\n setProps(props) {\n this.props = props;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n preRender() { }\n postRender(params) {\n const passes = this.passes;\n const { target } = params;\n let inputBuffer = params.inputBuffer;\n let outputBuffer = params.swapBuffer;\n for (let index = 0; index < passes.length; index++) {\n const isLastPass = index === passes.length - 1;\n const renderToTarget = target !== undefined && isLastPass;\n if (renderToTarget) {\n outputBuffer = target;\n }\n const clearCanvas = !renderToTarget || Boolean(params.clearCanvas);\n const moduleProps = {};\n const uniforms = this.module.passes[index].uniforms;\n moduleProps[this.module.name] = { ...this.props, ...uniforms };\n passes[index].render({ clearCanvas, inputBuffer, outputBuffer, moduleProps });\n const switchBuffer = outputBuffer;\n outputBuffer = inputBuffer;\n inputBuffer = switchBuffer;\n }\n return inputBuffer;\n }\n cleanup() {\n if (this.passes) {\n for (const pass of this.passes) {\n pass.delete();\n }\n this.passes = undefined;\n }\n }\n}\nfunction createPasses(device, module, id) {\n return module.passes.map((pass, index) => {\n const fs = getFragmentShaderForRenderPass(module, pass);\n const idn = `${id}-${index}`;\n return new ScreenPass(device, { id: idn, module, fs });\n });\n}\nconst FS_TEMPLATE_INPUTS = `\\\n#version 300 es\nuniform sampler2D texSrc;\n\nin vec2 position;\nin vec2 coordinate;\nin vec2 uv;\n\nout vec4 fragColor;\n`;\nconst FILTER_FS_TEMPLATE = (func) => `\\\n${FS_TEMPLATE_INPUTS}\nvoid main() {\n fragColor = texture(texSrc, coordinate);\n fragColor = ${func}(fragColor, screen.texSize, coordinate);\n}\n`;\nconst SAMPLER_FS_TEMPLATE = (func) => `\\\n${FS_TEMPLATE_INPUTS}\nvoid main() {\n fragColor = ${func}(texSrc, screen.texSize, coordinate);\n}\n`;\nfunction getFragmentShaderForRenderPass(module, pass) {\n if (pass.filter) {\n const func = typeof pass.filter === 'string' ? pass.filter : `${module.name}_filterColor_ext`;\n return FILTER_FS_TEMPLATE(func);\n }\n if (pass.sampler) {\n const func = typeof pass.sampler === 'string' ? pass.sampler : `${module.name}_sampleColor`;\n return SAMPLER_FS_TEMPLATE(func);\n }\n // console.error(`${module.name} no fragment shader generated`);\n return '';\n}\n//# sourceMappingURL=post-process-effect.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport Viewport from \"../viewports/viewport.js\";\nimport { Matrix4 } from '@math.gl/core';\nimport { pixelsToWorld, fovyToAltitude } from '@math.gl/web-mercator';\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nfunction getViewMatrix({ height, focalDistance, orbitAxis, rotationX, rotationOrbit, zoom }) {\n // We position the camera so that one common space unit (world space unit scaled by zoom)\n // at the target maps to one screen pixel.\n // This is a similar technique to that used in web mercator projection\n // By doing so we are able to convert between common space and screen space sizes efficiently\n // in the vertex shader.\n const up = orbitAxis === 'Z' ? [0, 0, 1] : [0, 1, 0];\n const eye = orbitAxis === 'Z' ? [0, -focalDistance, 0] : [0, 0, focalDistance];\n const viewMatrix = new Matrix4().lookAt({ eye, up });\n viewMatrix.rotateX(rotationX * DEGREES_TO_RADIANS);\n if (orbitAxis === 'Z') {\n viewMatrix.rotateZ(rotationOrbit * DEGREES_TO_RADIANS);\n }\n else {\n viewMatrix.rotateY(rotationOrbit * DEGREES_TO_RADIANS);\n }\n // When height increases, we need to increase the distance from the camera to the target to\n // keep the 1:1 mapping. However, this also changes the projected depth of each position by\n // moving them further away between the near/far plane.\n // Without modifying the default near/far planes, we instead scale down the common space to\n // remove the distortion to the depth field.\n const projectionScale = Math.pow(2, zoom) / height;\n viewMatrix.scale(projectionScale);\n return viewMatrix;\n}\nclass OrbitViewport extends Viewport {\n constructor(props) {\n const { height, projectionMatrix, fovy = 50, // For setting camera position\n orbitAxis = 'Z', // Orbit axis with 360 degrees rotating freedom, can only be 'Y' or 'Z'\n target = [0, 0, 0], // Which point is camera looking at, default origin\n rotationX = 0, // Rotating angle around X axis\n rotationOrbit = 0, // Rotating angle around orbit axis\n zoom = 0 } = props;\n const focalDistance = projectionMatrix ? projectionMatrix[5] / 2 : fovyToAltitude(fovy);\n super({\n ...props,\n // in case viewState contains longitude/latitude values,\n // make sure that the base Viewport class does not treat this as a geospatial viewport\n longitude: undefined,\n viewMatrix: getViewMatrix({\n height: height || 1,\n focalDistance,\n orbitAxis,\n rotationX,\n rotationOrbit,\n zoom\n }),\n fovy,\n focalDistance,\n position: target,\n zoom\n });\n this.target = target;\n this.orbitAxis = orbitAxis;\n this.rotationX = rotationX;\n this.rotationOrbit = rotationOrbit;\n this.fovy = fovy;\n this.projectedCenter = this.project(this.center);\n }\n unproject(xyz, { topLeft = true } = {}) {\n const [x, y, z = this.projectedCenter[2]] = xyz;\n const y2 = topLeft ? y : this.height - y;\n const [X, Y, Z] = pixelsToWorld([x, y2, z], this.pixelUnprojectionMatrix);\n return [X, Y, Z];\n }\n panByPosition(coords, pixel, startPixel) {\n const p0 = this.project(coords);\n const nextCenter = [\n this.width / 2 + p0[0] - pixel[0],\n this.height / 2 + p0[1] - pixel[1],\n this.projectedCenter[2]\n ];\n return {\n target: this.unproject(nextCenter)\n };\n }\n}\nOrbitViewport.displayName = 'OrbitViewport';\nexport default OrbitViewport;\n//# sourceMappingURL=orbit-viewport.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport Viewport from \"../viewports/viewport.js\";\nimport { getMeterZoom } from '@math.gl/web-mercator';\nimport { Matrix4, _SphericalCoordinates as SphericalCoordinates } from '@math.gl/core';\nclass FirstPersonViewport extends Viewport {\n constructor(props) {\n // TODO - push direction handling into Matrix4.lookAt\n const { longitude, latitude, modelMatrix, bearing = 0, pitch = 0, up = [0, 0, 1] } = props;\n // Always calculate direction from bearing and pitch\n const spherical = new SphericalCoordinates({\n bearing,\n // Avoid \"pixel project matrix not invertible\" error\n pitch: pitch === -90 ? 0.0001 : 90 + pitch\n });\n const dir = spherical.toVector3().normalize();\n // Direction is relative to model coordinates, of course\n const center = modelMatrix ? new Matrix4(modelMatrix).transformAsVector(dir) : dir;\n // Just the direction. All the positioning is done in viewport.js\n const zoom = Number.isFinite(latitude) ? getMeterZoom({ latitude: latitude }) : 0;\n const scale = Math.pow(2, zoom);\n const viewMatrix = new Matrix4().lookAt({ eye: [0, 0, 0], center, up }).scale(scale);\n super({\n ...props,\n zoom,\n viewMatrix\n });\n this.latitude = latitude;\n this.longitude = longitude;\n this.pitch = pitch;\n this.bearing = bearing;\n this.up = up;\n }\n}\nFirstPersonViewport.displayName = 'FirstPersonViewport';\nexport default FirstPersonViewport;\n//# sourceMappingURL=first-person-viewport.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport Controller from \"./controller.js\";\nimport ViewState from \"./view-state.js\";\nimport { mod } from \"../utils/math-utils.js\";\nimport LinearInterpolator from \"../transitions/linear-interpolator.js\";\nimport { Vector3, _SphericalCoordinates as SphericalCoordinates, clamp } from '@math.gl/core';\nconst MOVEMENT_SPEED = 20;\nconst PAN_SPEED = 500;\nclass FirstPersonState extends ViewState {\n constructor(options) {\n const { \n /* Viewport arguments */\n width, // Width of viewport\n height, // Height of viewport\n // Position and orientation\n position = [0, 0, 0], // typically in meters from anchor point\n bearing = 0, // Rotation around y axis\n pitch = 0, // Rotation around x axis\n // Geospatial anchor\n longitude = null, latitude = null, maxPitch = 90, minPitch = -90, \n // Model state when the rotate operation first started\n startRotatePos, startBearing, startPitch, startZoomPosition, startPanPos, startPanPosition } = options;\n super({\n width,\n height,\n position,\n bearing,\n pitch,\n longitude,\n latitude,\n maxPitch,\n minPitch\n }, {\n startRotatePos,\n startBearing,\n startPitch,\n startZoomPosition,\n startPanPos,\n startPanPosition\n });\n this.makeViewport = options.makeViewport;\n }\n /* Public API */\n /**\n * Start panning\n * @param {[Number, Number]} pos - position on screen where the pointer grabs\n */\n panStart({ pos }) {\n const { position } = this.getViewportProps();\n return this._getUpdatedState({\n startPanPos: pos,\n startPanPosition: position\n });\n }\n /**\n * Pan\n * @param {[Number, Number]} pos - position on screen where the pointer is\n */\n pan({ pos }) {\n if (!pos) {\n return this;\n }\n const { startPanPos = [0, 0], startPanPosition = [0, 0] } = this.getState();\n const { width, height, bearing, pitch } = this.getViewportProps();\n const deltaScaleX = (PAN_SPEED * (pos[0] - startPanPos[0])) / width;\n const deltaScaleY = (PAN_SPEED * (pos[1] - startPanPos[1])) / height;\n const up = new SphericalCoordinates({ bearing, pitch });\n const forward = new SphericalCoordinates({ bearing, pitch: -90 });\n const yDirection = up.toVector3().normalize();\n const xDirection = forward.toVector3().cross(yDirection).normalize();\n return this._getUpdatedState({\n position: new Vector3(startPanPosition)\n .add(xDirection.scale(deltaScaleX))\n .add(yDirection.scale(deltaScaleY))\n });\n }\n /**\n * End panning\n * Must call if `panStart()` was called\n */\n panEnd() {\n return this._getUpdatedState({\n startPanPos: null,\n startPanPosition: null\n });\n }\n /**\n * Start rotating\n * @param {[Number, Number]} pos - position on screen where the pointer grabs\n */\n rotateStart({ pos }) {\n return this._getUpdatedState({\n startRotatePos: pos,\n startBearing: this.getViewportProps().bearing,\n startPitch: this.getViewportProps().pitch\n });\n }\n /**\n * Rotate\n * @param {[Number, Number]} pos - position on screen where the pointer is\n */\n rotate({ pos, deltaAngleX = 0, deltaAngleY = 0 }) {\n const { startRotatePos, startBearing, startPitch } = this.getState();\n const { width, height } = this.getViewportProps();\n if (!startRotatePos || startBearing === undefined || startPitch === undefined) {\n return this;\n }\n let newRotation;\n if (pos) {\n const deltaScaleX = (pos[0] - startRotatePos[0]) / width;\n const deltaScaleY = (pos[1] - startRotatePos[1]) / height;\n newRotation = {\n bearing: startBearing - deltaScaleX * 180,\n pitch: startPitch - deltaScaleY * 90\n };\n }\n else {\n newRotation = {\n bearing: startBearing - deltaAngleX,\n pitch: startPitch - deltaAngleY\n };\n }\n return this._getUpdatedState(newRotation);\n }\n /**\n * End rotating\n * Must call if `rotateStart()` was called\n */\n rotateEnd() {\n return this._getUpdatedState({\n startRotatePos: null,\n startBearing: null,\n startPitch: null\n });\n }\n /**\n * Start zooming\n * @param {[Number, Number]} pos - position on screen where the pointer grabs\n */\n zoomStart() {\n return this._getUpdatedState({\n startZoomPosition: this.getViewportProps().position\n });\n }\n /**\n * Zoom\n * @param {[Number, Number]} pos - position on screen where the current center is\n * @param {[Number, Number]} startPos - the center position at\n * the start of the operation. Must be supplied of `zoomStart()` was not called\n * @param {Number} scale - a number between [0, 1] specifying the accumulated\n * relative scale.\n */\n zoom({ pos, scale }) {\n const viewportProps = this.getViewportProps();\n const startZoomPosition = this.getState().startZoomPosition || viewportProps.position;\n const viewport = this.makeViewport(viewportProps);\n const { projectionMatrix, width } = viewport;\n const fovxRadians = 2.0 * Math.atan(1.0 / projectionMatrix[0]);\n const angle = fovxRadians * (pos[0] / width - 0.5);\n const direction = this.getDirection(true);\n return this._move(direction.rotateZ({ radians: -angle }), Math.log2(scale) * MOVEMENT_SPEED, startZoomPosition);\n }\n /**\n * End zooming\n * Must call if `zoomStart()` was called\n */\n zoomEnd() {\n return this._getUpdatedState({\n startZoomPosition: null\n });\n }\n moveLeft(speed = MOVEMENT_SPEED) {\n const direction = this.getDirection(true);\n return this._move(direction.rotateZ({ radians: Math.PI / 2 }), speed);\n }\n moveRight(speed = MOVEMENT_SPEED) {\n const direction = this.getDirection(true);\n return this._move(direction.rotateZ({ radians: -Math.PI / 2 }), speed);\n }\n // forward\n moveUp(speed = MOVEMENT_SPEED) {\n const direction = this.getDirection(true);\n return this._move(direction, speed);\n }\n // backward\n moveDown(speed = MOVEMENT_SPEED) {\n const direction = this.getDirection(true);\n return this._move(direction.negate(), speed);\n }\n rotateLeft(speed = 15) {\n return this._getUpdatedState({\n bearing: this.getViewportProps().bearing - speed\n });\n }\n rotateRight(speed = 15) {\n return this._getUpdatedState({\n bearing: this.getViewportProps().bearing + speed\n });\n }\n rotateUp(speed = 10) {\n return this._getUpdatedState({\n pitch: this.getViewportProps().pitch + speed\n });\n }\n rotateDown(speed = 10) {\n return this._getUpdatedState({\n pitch: this.getViewportProps().pitch - speed\n });\n }\n zoomIn(speed = MOVEMENT_SPEED) {\n return this._move(new Vector3(0, 0, 1), speed);\n }\n zoomOut(speed = MOVEMENT_SPEED) {\n return this._move(new Vector3(0, 0, -1), speed);\n }\n // shortest path between two view states\n shortestPathFrom(viewState) {\n const fromProps = viewState.getViewportProps();\n const props = { ...this.getViewportProps() };\n const { bearing, longitude } = props;\n if (Math.abs(bearing - fromProps.bearing) > 180) {\n props.bearing = bearing < 0 ? bearing + 360 : bearing - 360;\n }\n if (longitude !== null &&\n fromProps.longitude !== null &&\n Math.abs(longitude - fromProps.longitude) > 180) {\n props.longitude = longitude < 0 ? longitude + 360 : longitude - 360;\n }\n return props;\n }\n /* Private methods */\n _move(direction, speed, fromPosition = this.getViewportProps().position) {\n const delta = direction.scale(speed);\n return this._getUpdatedState({\n position: new Vector3(fromPosition).add(delta)\n });\n }\n getDirection(use2D = false) {\n const spherical = new SphericalCoordinates({\n bearing: this.getViewportProps().bearing,\n pitch: use2D ? 90 : 90 + this.getViewportProps().pitch\n });\n const direction = spherical.toVector3().normalize();\n return direction;\n }\n _getUpdatedState(newProps) {\n // Update _viewportProps\n return new FirstPersonState({\n makeViewport: this.makeViewport,\n ...this.getViewportProps(),\n ...this.getState(),\n ...newProps\n });\n }\n // Apply any constraints (mathematical or defined by _viewportProps) to map state\n applyConstraints(props) {\n // Ensure pitch and zoom are within specified range\n const { pitch, maxPitch, minPitch, longitude, bearing } = props;\n props.pitch = clamp(pitch, minPitch, maxPitch);\n // Normalize degrees\n if (longitude !== null && (longitude < -180 || longitude > 180)) {\n props.longitude = mod(longitude + 180, 360) - 180;\n }\n if (bearing < -180 || bearing > 180) {\n props.bearing = mod(bearing + 180, 360) - 180;\n }\n return props;\n }\n}\nexport default class FirstPersonController extends Controller {\n constructor() {\n super(...arguments);\n this.ControllerState = FirstPersonState;\n this.transition = {\n transitionDuration: 300,\n transitionInterpolator: new LinearInterpolator(['position', 'pitch', 'bearing'])\n };\n }\n}\n//# sourceMappingURL=first-person-controller.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport View from \"./view.js\";\nimport FirstPersonViewport from \"../viewports/first-person-viewport.js\";\nimport FirstPersonController from \"../controllers/first-person-controller.js\";\nclass FirstPersonView extends View {\n constructor(props = {}) {\n super(props);\n }\n getViewportType() {\n return FirstPersonViewport;\n }\n get ControllerType() {\n return FirstPersonController;\n }\n}\nFirstPersonView.displayName = 'FirstPersonView';\nexport default FirstPersonView;\n//# sourceMappingURL=first-person-view.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { clamp } from '@math.gl/core';\nimport Controller from \"./controller.js\";\nimport ViewState from \"./view-state.js\";\nimport { mod } from \"../utils/math-utils.js\";\nimport LinearInterpolator from \"../transitions/linear-interpolator.js\";\nexport class OrbitState extends ViewState {\n constructor(options) {\n const { \n /* Viewport arguments */\n width, // Width of viewport\n height, // Height of viewport\n rotationX = 0, // Rotation around x axis\n rotationOrbit = 0, // Rotation around orbit axis\n target = [0, 0, 0], zoom = 0, \n /* Viewport constraints */\n minRotationX = -90, maxRotationX = 90, minZoom = -Infinity, maxZoom = Infinity, \n /** Interaction states, required to calculate change during transform */\n // Model state when the pan operation first started\n startPanPosition, \n // Model state when the rotate operation first started\n startRotatePos, startRotationX, startRotationOrbit, \n // Model state when the zoom operation first started\n startZoomPosition, startZoom } = options;\n super({\n width,\n height,\n rotationX,\n rotationOrbit,\n target,\n zoom,\n minRotationX,\n maxRotationX,\n minZoom,\n maxZoom\n }, {\n startPanPosition,\n startRotatePos,\n startRotationX,\n startRotationOrbit,\n startZoomPosition,\n startZoom\n });\n this.makeViewport = options.makeViewport;\n }\n /**\n * Start panning\n * @param {[Number, Number]} pos - position on screen where the pointer grabs\n */\n panStart({ pos }) {\n return this._getUpdatedState({\n startPanPosition: this._unproject(pos)\n });\n }\n /**\n * Pan\n * @param {[Number, Number]} pos - position on screen where the pointer is\n */\n pan({ pos, startPosition }) {\n const startPanPosition = this.getState().startPanPosition || startPosition;\n if (!startPanPosition) {\n return this;\n }\n const viewport = this.makeViewport(this.getViewportProps());\n const newProps = viewport.panByPosition(startPanPosition, pos);\n return this._getUpdatedState(newProps);\n }\n /**\n * End panning\n * Must call if `panStart()` was called\n */\n panEnd() {\n return this._getUpdatedState({\n startPanPosition: null\n });\n }\n /**\n * Start rotating\n * @param {[Number, Number]} pos - position on screen where the pointer grabs\n */\n rotateStart({ pos }) {\n return this._getUpdatedState({\n startRotatePos: pos,\n startRotationX: this.getViewportProps().rotationX,\n startRotationOrbit: this.getViewportProps().rotationOrbit\n });\n }\n /**\n * Rotate\n * @param {[Number, Number]} pos - position on screen where the pointer is\n */\n rotate({ pos, deltaAngleX = 0, deltaAngleY = 0 }) {\n const { startRotatePos, startRotationX, startRotationOrbit } = this.getState();\n const { width, height } = this.getViewportProps();\n if (!startRotatePos || startRotationX === undefined || startRotationOrbit === undefined) {\n return this;\n }\n let newRotation;\n if (pos) {\n let deltaScaleX = (pos[0] - startRotatePos[0]) / width;\n const deltaScaleY = (pos[1] - startRotatePos[1]) / height;\n if (startRotationX < -90 || startRotationX > 90) {\n // When looking at the \"back\" side of the scene, invert horizontal drag\n // so that the camera movement follows user input\n deltaScaleX *= -1;\n }\n newRotation = {\n rotationX: startRotationX + deltaScaleY * 180,\n rotationOrbit: startRotationOrbit + deltaScaleX * 180\n };\n }\n else {\n newRotation = {\n rotationX: startRotationX + deltaAngleY,\n rotationOrbit: startRotationOrbit + deltaAngleX\n };\n }\n return this._getUpdatedState(newRotation);\n }\n /**\n * End rotating\n * Must call if `rotateStart()` was called\n */\n rotateEnd() {\n return this._getUpdatedState({\n startRotationX: null,\n startRotationOrbit: null\n });\n }\n // shortest path between two view states\n shortestPathFrom(viewState) {\n const fromProps = viewState.getViewportProps();\n const props = { ...this.getViewportProps() };\n const { rotationOrbit } = props;\n if (Math.abs(rotationOrbit - fromProps.rotationOrbit) > 180) {\n props.rotationOrbit = rotationOrbit < 0 ? rotationOrbit + 360 : rotationOrbit - 360;\n }\n return props;\n }\n /**\n * Start zooming\n * @param {[Number, Number]} pos - position on screen where the pointer grabs\n */\n zoomStart({ pos }) {\n return this._getUpdatedState({\n startZoomPosition: this._unproject(pos),\n startZoom: this.getViewportProps().zoom\n });\n }\n /**\n * Zoom\n * @param {[Number, Number]} pos - position on screen where the current target is\n * @param {[Number, Number]} startPos - the target position at\n * the start of the operation. Must be supplied of `zoomStart()` was not called\n * @param {Number} scale - a number between [0, 1] specifying the accumulated\n * relative scale.\n */\n zoom({ pos, startPos, scale }) {\n let { startZoom, startZoomPosition } = this.getState();\n if (!startZoomPosition) {\n // We have two modes of zoom:\n // scroll zoom that are discrete events (transform from the current zoom level),\n // and pinch zoom that are continuous events (transform from the zoom level when\n // pinch started).\n // If startZoom state is defined, then use the startZoom state;\n // otherwise assume discrete zooming\n startZoom = this.getViewportProps().zoom;\n startZoomPosition = this._unproject(startPos) || this._unproject(pos);\n }\n if (!startZoomPosition) {\n return this;\n }\n const newZoom = this._calculateNewZoom({ scale, startZoom });\n const zoomedViewport = this.makeViewport({ ...this.getViewportProps(), zoom: newZoom });\n return this._getUpdatedState({\n zoom: newZoom,\n ...zoomedViewport.panByPosition(startZoomPosition, pos)\n });\n }\n /**\n * End zooming\n * Must call if `zoomStart()` was called\n */\n zoomEnd() {\n return this._getUpdatedState({\n startZoomPosition: null,\n startZoom: null\n });\n }\n zoomIn(speed = 2) {\n return this._getUpdatedState({\n zoom: this._calculateNewZoom({ scale: speed })\n });\n }\n zoomOut(speed = 2) {\n return this._getUpdatedState({\n zoom: this._calculateNewZoom({ scale: 1 / speed })\n });\n }\n moveLeft(speed = 50) {\n return this._panFromCenter([-speed, 0]);\n }\n moveRight(speed = 50) {\n return this._panFromCenter([speed, 0]);\n }\n moveUp(speed = 50) {\n return this._panFromCenter([0, -speed]);\n }\n moveDown(speed = 50) {\n return this._panFromCenter([0, speed]);\n }\n rotateLeft(speed = 15) {\n return this._getUpdatedState({\n rotationOrbit: this.getViewportProps().rotationOrbit - speed\n });\n }\n rotateRight(speed = 15) {\n return this._getUpdatedState({\n rotationOrbit: this.getViewportProps().rotationOrbit + speed\n });\n }\n rotateUp(speed = 10) {\n return this._getUpdatedState({\n rotationX: this.getViewportProps().rotationX - speed\n });\n }\n rotateDown(speed = 10) {\n return this._getUpdatedState({\n rotationX: this.getViewportProps().rotationX + speed\n });\n }\n /* Private methods */\n _unproject(pos) {\n const viewport = this.makeViewport(this.getViewportProps());\n // @ts-ignore\n return pos && viewport.unproject(pos);\n }\n // Calculates new zoom\n _calculateNewZoom({ scale, startZoom }) {\n const { maxZoom, minZoom } = this.getViewportProps();\n if (startZoom === undefined) {\n startZoom = this.getViewportProps().zoom;\n }\n const zoom = startZoom + Math.log2(scale);\n return clamp(zoom, minZoom, maxZoom);\n }\n _panFromCenter(offset) {\n const { width, height, target } = this.getViewportProps();\n return this.pan({\n startPosition: target,\n pos: [width / 2 + offset[0], height / 2 + offset[1]]\n });\n }\n _getUpdatedState(newProps) {\n // @ts-ignore\n return new this.constructor({\n makeViewport: this.makeViewport,\n ...this.getViewportProps(),\n ...this.getState(),\n ...newProps\n });\n }\n // Apply any constraints (mathematical or defined by _viewportProps) to map state\n applyConstraints(props) {\n // Ensure zoom is within specified range\n const { maxZoom, minZoom, zoom, maxRotationX, minRotationX, rotationOrbit } = props;\n props.zoom = Array.isArray(zoom)\n ? [clamp(zoom[0], minZoom, maxZoom), clamp(zoom[1], minZoom, maxZoom)]\n : clamp(zoom, minZoom, maxZoom);\n props.rotationX = clamp(props.rotationX, minRotationX, maxRotationX);\n if (rotationOrbit < -180 || rotationOrbit > 180) {\n props.rotationOrbit = mod(rotationOrbit + 180, 360) - 180;\n }\n return props;\n }\n}\nexport default class OrbitController extends Controller {\n constructor() {\n super(...arguments);\n this.ControllerState = OrbitState;\n this.transition = {\n transitionDuration: 300,\n transitionInterpolator: new LinearInterpolator({\n transitionProps: {\n compare: ['target', 'zoom', 'rotationX', 'rotationOrbit'],\n required: ['target', 'zoom']\n }\n })\n };\n }\n}\n//# sourceMappingURL=orbit-controller.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport View from \"./view.js\";\nimport OrbitViewport from \"../viewports/orbit-viewport.js\";\nimport OrbitController from \"../controllers/orbit-controller.js\";\nclass OrbitView extends View {\n constructor(props = {}) {\n super(props);\n this.props.orbitAxis = props.orbitAxis || 'Z';\n }\n getViewportType() {\n return OrbitViewport;\n }\n get ControllerType() {\n return OrbitController;\n }\n}\nOrbitView.displayName = 'OrbitView';\nexport default OrbitView;\n//# sourceMappingURL=orbit-view.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { clamp } from '@math.gl/core';\nimport Controller from \"./controller.js\";\nimport { OrbitState } from \"./orbit-controller.js\";\nimport LinearInterpolator from \"../transitions/linear-interpolator.js\";\nclass OrthographicState extends OrbitState {\n constructor(props) {\n super(props);\n this.zoomAxis = props.zoomAxis || 'all';\n }\n _calculateNewZoom({ scale, startZoom }) {\n const { maxZoom, minZoom } = this.getViewportProps();\n if (startZoom === undefined) {\n startZoom = this.getViewportProps().zoom;\n }\n let deltaZoom = Math.log2(scale);\n if (Array.isArray(startZoom)) {\n let [newZoomX, newZoomY] = startZoom;\n switch (this.zoomAxis) {\n case 'X':\n // Scale x only\n newZoomX = clamp(newZoomX + deltaZoom, minZoom, maxZoom);\n break;\n case 'Y':\n // Scale y only\n newZoomY = clamp(newZoomY + deltaZoom, minZoom, maxZoom);\n break;\n default:\n // Lock aspect ratio\n let z = Math.min(newZoomX + deltaZoom, newZoomY + deltaZoom);\n if (z < minZoom) {\n deltaZoom += minZoom - z;\n }\n z = Math.max(newZoomX + deltaZoom, newZoomY + deltaZoom);\n if (z > maxZoom) {\n deltaZoom += maxZoom - z;\n }\n newZoomX += deltaZoom;\n newZoomY += deltaZoom;\n }\n return [newZoomX, newZoomY];\n }\n // Ignore `zoomAxis`\n // `LinearTransitionInterpolator` does not support interpolation between a number and an array\n // So if zoom is a number (legacy use case), new zoom still has to be a number\n return clamp(startZoom + deltaZoom, minZoom, maxZoom);\n }\n}\nexport default class OrthographicController extends Controller {\n constructor() {\n super(...arguments);\n this.ControllerState = OrthographicState;\n this.transition = {\n transitionDuration: 300,\n transitionInterpolator: new LinearInterpolator(['target', 'zoom'])\n };\n this.dragMode = 'pan';\n }\n _onPanRotate() {\n // No rotation in orthographic view\n return false;\n }\n}\n//# sourceMappingURL=orthographic-controller.js.map","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport View from \"./view.js\";\nimport OrthographicViewport from \"../viewports/orthographic-viewport.js\";\nimport OrthographicController from \"../controllers/orthographic-controller.js\";\nclass OrthographicView extends View {\n constructor(props = {}) {\n super(props);\n }\n getViewportType() {\n return OrthographicViewport;\n }\n get ControllerType() {\n return OrthographicController;\n }\n}\nOrthographicView.displayName = 'OrthographicView';\nexport default OrthographicView;\n//# sourceMappingURL=orthographic-view.js.map"],"names":["EPSILON","EARTH_RADIUS_METERS","SphericalCoordinates","phi","theta","radius","bearing","pitch","altitude","radiusScale","config","printTypes","f","formatValue","other","equals","degrees","v","radians","lng","lat","z","vec3.length","clamp","Vector3","DEFAULT_LIGHT_COLOR","DEFAULT_LIGHT_INTENSITY","DEFAULT_ATTENUATION","DEFAULT_LIGHT_POSITION","idCount","PointLight","props","color","intensity","position","getAttenuation","layer","projectedLight","viewport","coordinateSystem","coordinateOrigin","projectPosition","COORDINATE_SYSTEM","CameraLight","modelMatrix","cameraPosition","getUniformsFromViewport","DEGREES_TO_RADIANS","DAY_IN_MS","JD1970","JD2000","e","M0","M1","THETA0","THETA1","getSunPosition","timestamp","latitude","longitude","longitudeWestInRadians","d","toDays","c","getSunCoords","H","getSiderealTime","getAzimuth","getAltitude","getSunDirection","azimuth","toJulianDay","getRightAscension","eclipticLongitude","b","lambda","getDeclination","hourAngle","latitudeInRadians","declination","delta","dates","getSolarMeanAnomaly","days","getEclipticLongitude","meanAnomaly","M","C","P","L","SunLight","DirectionalLight","opts","x","y","CLIPSPACE_VERTEX_SHADER_WGSL","CLIPSPACE_VERTEX_SHADER","POSITIONS","ClipSpace","Model","device","TEX_COORDS","coord","uid","Geometry","uniformBlock","screenUniforms","ScreenPass","Pass","module","fs","id","parameters","params","options","clearCanvas","inputBuffer","outputBuffer","texSize","screenProps","renderPass","PostProcessEffect","initializeShaderModule","createPasses","passes","target","index","isLastPass","renderToTarget","moduleProps","uniforms","switchBuffer","pass","getFragmentShaderForRenderPass","idn","FS_TEMPLATE_INPUTS","FILTER_FS_TEMPLATE","func","SAMPLER_FS_TEMPLATE","getViewMatrix","height","focalDistance","orbitAxis","rotationX","rotationOrbit","zoom","up","eye","viewMatrix","Matrix4","projectionScale","OrbitViewport","Viewport","projectionMatrix","fovy","fovyToAltitude","xyz","topLeft","y2","X","Y","Z","pixelsToWorld","coords","pixel","startPixel","p0","nextCenter","FirstPersonViewport","dir","center","getMeterZoom","scale","MOVEMENT_SPEED","PAN_SPEED","FirstPersonState","ViewState","width","maxPitch","minPitch","startRotatePos","startBearing","startPitch","startZoomPosition","startPanPos","startPanPosition","pos","deltaScaleX","deltaScaleY","forward","yDirection","xDirection","deltaAngleX","deltaAngleY","newRotation","viewportProps","angle","direction","speed","viewState","fromProps","fromPosition","use2D","newProps","mod","FirstPersonController","Controller","LinearInterpolator","FirstPersonView","View","OrbitState","minRotationX","maxRotationX","minZoom","maxZoom","startRotationX","startRotationOrbit","startZoom","startPosition","startPos","newZoom","zoomedViewport","offset","OrbitController","OrbitView","OrthographicState","deltaZoom","newZoomX","newZoomY","OrthographicController","OrthographicView","OrthographicViewport"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]}