@deck.gl/core 9.3.0-alpha.1 → 9.3.0-alpha.3

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 (134) hide show
  1. package/debug.min.js +1 -1
  2. package/dist/controllers/controller.d.ts +5 -4
  3. package/dist/controllers/controller.d.ts.map +1 -1
  4. package/dist/controllers/controller.js +18 -7
  5. package/dist/controllers/controller.js.map +1 -1
  6. package/dist/controllers/first-person-controller.d.ts +3 -2
  7. package/dist/controllers/first-person-controller.d.ts.map +1 -1
  8. package/dist/controllers/first-person-controller.js +13 -5
  9. package/dist/controllers/first-person-controller.js.map +1 -1
  10. package/dist/controllers/globe-controller.d.ts +1 -0
  11. package/dist/controllers/globe-controller.d.ts.map +1 -1
  12. package/dist/controllers/globe-controller.js +66 -5
  13. package/dist/controllers/globe-controller.js.map +1 -1
  14. package/dist/controllers/map-controller.d.ts +7 -18
  15. package/dist/controllers/map-controller.d.ts.map +1 -1
  16. package/dist/controllers/map-controller.js +94 -50
  17. package/dist/controllers/map-controller.js.map +1 -1
  18. package/dist/controllers/orbit-controller.d.ts +12 -4
  19. package/dist/controllers/orbit-controller.d.ts.map +1 -1
  20. package/dist/controllers/orbit-controller.js +118 -10
  21. package/dist/controllers/orbit-controller.js.map +1 -1
  22. package/dist/controllers/orthographic-controller.d.ts +117 -9
  23. package/dist/controllers/orthographic-controller.d.ts.map +1 -1
  24. package/dist/controllers/orthographic-controller.js +302 -37
  25. package/dist/controllers/orthographic-controller.js.map +1 -1
  26. package/dist/controllers/terrain-controller.d.ts +29 -0
  27. package/dist/controllers/terrain-controller.d.ts.map +1 -0
  28. package/dist/controllers/terrain-controller.js +108 -0
  29. package/dist/controllers/terrain-controller.js.map +1 -0
  30. package/dist/controllers/view-state.d.ts +2 -1
  31. package/dist/controllers/view-state.d.ts.map +1 -1
  32. package/dist/controllers/view-state.js +2 -1
  33. package/dist/controllers/view-state.js.map +1 -1
  34. package/dist/debug/loggers.d.ts.map +1 -1
  35. package/dist/debug/loggers.js +1 -4
  36. package/dist/debug/loggers.js.map +1 -1
  37. package/dist/dist.dev.js +3800 -1675
  38. package/dist/effects/lighting/lighting-effect.d.ts +1 -0
  39. package/dist/effects/lighting/lighting-effect.d.ts.map +1 -1
  40. package/dist/effects/lighting/lighting-effect.js +14 -5
  41. package/dist/effects/lighting/lighting-effect.js.map +1 -1
  42. package/dist/index.cjs +775 -123
  43. package/dist/index.cjs.map +4 -4
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +1 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/lib/attribute/attribute-manager.d.ts.map +1 -1
  49. package/dist/lib/attribute/attribute-manager.js +2 -0
  50. package/dist/lib/attribute/attribute-manager.js.map +1 -1
  51. package/dist/lib/deck-picker.d.ts +6 -1
  52. package/dist/lib/deck-picker.d.ts.map +1 -1
  53. package/dist/lib/deck-picker.js +15 -3
  54. package/dist/lib/deck-picker.js.map +1 -1
  55. package/dist/lib/deck-renderer.d.ts +6 -1
  56. package/dist/lib/deck-renderer.d.ts.map +1 -1
  57. package/dist/lib/deck-renderer.js +14 -2
  58. package/dist/lib/deck-renderer.js.map +1 -1
  59. package/dist/lib/deck.d.ts +5 -0
  60. package/dist/lib/deck.d.ts.map +1 -1
  61. package/dist/lib/deck.js +13 -3
  62. package/dist/lib/deck.js.map +1 -1
  63. package/dist/lib/init.js +2 -2
  64. package/dist/lib/layer.d.ts.map +1 -1
  65. package/dist/lib/layer.js +1 -0
  66. package/dist/lib/layer.js.map +1 -1
  67. package/dist/passes/draw-layers-pass.d.ts +2 -0
  68. package/dist/passes/draw-layers-pass.d.ts.map +1 -1
  69. package/dist/passes/draw-layers-pass.js +3 -0
  70. package/dist/passes/draw-layers-pass.js.map +1 -1
  71. package/dist/passes/layers-pass.d.ts +2 -1
  72. package/dist/passes/layers-pass.d.ts.map +1 -1
  73. package/dist/passes/layers-pass.js +3 -0
  74. package/dist/passes/layers-pass.js.map +1 -1
  75. package/dist/passes/pick-layers-pass.d.ts +5 -2
  76. package/dist/passes/pick-layers-pass.d.ts.map +1 -1
  77. package/dist/passes/pick-layers-pass.js +3 -2
  78. package/dist/passes/pick-layers-pass.js.map +1 -1
  79. package/dist/shaderlib/project/project.glsl.d.ts.map +1 -1
  80. package/dist/shaderlib/project/project.glsl.js +3 -0
  81. package/dist/shaderlib/project/project.glsl.js.map +1 -1
  82. package/dist/utils/deep-merge.d.ts +5 -0
  83. package/dist/utils/deep-merge.d.ts.map +1 -0
  84. package/dist/utils/deep-merge.js +31 -0
  85. package/dist/utils/deep-merge.js.map +1 -0
  86. package/dist/utils/math-utils.d.ts +4 -0
  87. package/dist/utils/math-utils.d.ts.map +1 -1
  88. package/dist/utils/math-utils.js +8 -0
  89. package/dist/utils/math-utils.js.map +1 -1
  90. package/dist/viewports/globe-viewport.d.ts +1 -0
  91. package/dist/viewports/globe-viewport.d.ts.map +1 -1
  92. package/dist/viewports/globe-viewport.js +1 -1
  93. package/dist/viewports/globe-viewport.js.map +1 -1
  94. package/dist/viewports/orbit-viewport.d.ts.map +1 -1
  95. package/dist/viewports/orbit-viewport.js +7 -2
  96. package/dist/viewports/orbit-viewport.js.map +1 -1
  97. package/dist/viewports/orthographic-viewport.d.ts +8 -2
  98. package/dist/viewports/orthographic-viewport.d.ts.map +1 -1
  99. package/dist/viewports/orthographic-viewport.js.map +1 -1
  100. package/dist/views/orthographic-view.d.ts +38 -4
  101. package/dist/views/orthographic-view.d.ts.map +1 -1
  102. package/dist/views/orthographic-view.js.map +1 -1
  103. package/dist/views/view.d.ts.map +1 -1
  104. package/dist/views/view.js +2 -8
  105. package/dist/views/view.js.map +1 -1
  106. package/dist.min.js +220 -144
  107. package/package.json +9 -9
  108. package/src/controllers/controller.ts +23 -9
  109. package/src/controllers/first-person-controller.ts +18 -8
  110. package/src/controllers/globe-controller.ts +89 -5
  111. package/src/controllers/map-controller.ts +105 -56
  112. package/src/controllers/orbit-controller.ts +147 -13
  113. package/src/controllers/orthographic-controller.ts +417 -41
  114. package/src/controllers/terrain-controller.ts +146 -0
  115. package/src/controllers/view-state.ts +8 -1
  116. package/src/debug/loggers.ts +1 -5
  117. package/src/effects/lighting/lighting-effect.ts +20 -8
  118. package/src/index.ts +1 -0
  119. package/src/lib/attribute/attribute-manager.ts +1 -0
  120. package/src/lib/deck-picker.ts +18 -4
  121. package/src/lib/deck-renderer.ts +17 -3
  122. package/src/lib/deck.ts +19 -3
  123. package/src/lib/layer.ts +1 -0
  124. package/src/passes/draw-layers-pass.ts +5 -0
  125. package/src/passes/layers-pass.ts +5 -1
  126. package/src/passes/pick-layers-pass.ts +8 -4
  127. package/src/shaderlib/project/project.glsl.ts +3 -0
  128. package/src/utils/deep-merge.ts +33 -0
  129. package/src/utils/math-utils.ts +12 -0
  130. package/src/viewports/globe-viewport.ts +1 -1
  131. package/src/viewports/orbit-viewport.ts +8 -2
  132. package/src/viewports/orthographic-viewport.ts +8 -2
  133. package/src/views/orthographic-view.ts +38 -4
  134. package/src/views/view.ts +2 -8
package/dist.min.js CHANGED
@@ -4,21 +4,22 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['deck'] = factory();
6
6
  else root['deck'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var Uo=Object.defineProperty;var F0=Object.getOwnPropertyDescriptor;var B0=Object.getOwnPropertyNames;var L0=Object.prototype.hasOwnProperty;var U0=(e,t,r)=>t in e?Uo(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var A=(e,t)=>()=>(e&&(t=e(e=0)),t);var ge=(e,t)=>{for(var r in t)Uo(e,r,{get:t[r],enumerable:!0})},k0=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of B0(t))!L0.call(e,s)&&s!==r&&Uo(e,s,{get:()=>t[s],enumerable:!(i=F0(t,s))||i.enumerable});return e};var V0=e=>k0(Uo({},"__esModule",{value:!0}),e);var w=(e,t,r)=>(U0(e,typeof t!="symbol"?t+"":t,r),r);function Vi(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var Pc=A(()=>{});var cr,Mc=A(()=>{Pc();cr=class{constructor(t,r){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=Vi(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(Vi()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}}});var Le,cu=A(()=>{Mc();Le=class{constructor(t){this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t,r="count"){return this._getOrCreate({name:t,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let r of Object.values(this.stats))t(r)}getTable(){let t={};return this.forEach(r=>{t[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),t}_initializeStats(t=[]){t.forEach(r=>this._getOrCreate(r))}_getOrCreate(t){let{name:r,type:i}=t,s=this.stats[r];return s||(t instanceof cr?s=t:s=new cr(r,i),this.stats[r]=s),s}}});var vc=A(()=>{cu();Mc();Pc()});var Cc,ko,Ic=A(()=>{vc();Cc=class{stats=new Map;getStats(t){return this.get(t)}get(t){return this.stats.has(t)||this.stats.set(t,new Le({id:t})),this.stats.get(t)}},ko=new Cc});var Vo,z0,zo,j0,Iw,lu=A(()=>{Vo=globalThis,z0=globalThis.document||{},zo=globalThis.process||{},j0=globalThis.console,Iw=globalThis.navigator||{}});function fu(e){if(typeof window<"u"&&window.process?.type==="renderer"||typeof process<"u"&&Boolean(process.versions?.electron))return!0;let t=typeof navigator<"u"&&navigator.userAgent,r=e||t;return Boolean(r&&r.indexOf("Electron")>=0)}var hu=A(()=>{});function lr(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||fu()}var uu=A(()=>{hu()});var Oc,jo=A(()=>{lu();uu();Oc="4.1.1"});function $r(e,t){if(!e)throw new Error(t||"Assertion failed")}var Nc=A(()=>{});function Dc(e){if(!e)return 0;let t;switch(typeof e){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return $r(Number.isFinite(t)&&t>=0),t}function du(e){let{logLevel:t,message:r}=e;e.logLevel=Dc(t);let i=e.args?Array.from(e.args):[];for(;i.length&&i.shift()!==r;);switch(typeof t){case"string":case"function":r!==void 0&&i.unshift(r),e.message=t;break;case"object":Object.assign(e,t);break;default:}typeof e.message=="function"&&(e.message=e.message());let s=typeof e.message;return $r(s==="string"||s==="object"),Object.assign(e,{args:i},e.opts)}var pu=A(()=>{Nc()});var fr,Wo,gu=A(()=>{pu();fr=()=>{},Wo=class{constructor({level:t=0}={}){this.userData={},this._onceCache=new Set,this._level=t}set level(t){this.setLevel(t)}get level(){return this.getLevel()}setLevel(t){return this._level=t,this}getLevel(){return this._level}warn(t,...r){return this._log("warn",0,t,r,{once:!0})}error(t,...r){return this._log("error",0,t,r)}log(t,r,...i){return this._log("log",t,r,i)}info(t,r,...i){return this._log("info",t,r,i)}once(t,r,...i){return this._log("once",t,r,i,{once:!0})}_log(t,r,i,s,o={}){let n=du({logLevel:r,message:i,args:this._buildArgs(r,i,s),opts:o});return this._createLogFunction(t,n,o)}_buildArgs(t,r,i){return[t,r,...i]}_createLogFunction(t,r,i){if(!this._shouldLog(r.logLevel))return fr;let s=this._getOnceTag(i.tag??r.tag??r.message);if((i.once||r.once)&&s!==void 0){if(this._onceCache.has(s))return fr;this._onceCache.add(s)}return this._emit(t,r)}_shouldLog(t){return this.getLevel()>=Dc(t)}_getOnceTag(t){if(t!==void 0)try{return typeof t=="string"?t:String(t)}catch{return}}}});function H0(e){try{let t=window[e],r="__storage_test__";return t.setItem(r,r),t.removeItem(r),t}catch{return null}}var Ho,mu=A(()=>{Ho=class{constructor(t,r,i="sessionStorage"){this.storage=H0(i),this.id=t,this.config=r,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(t){if(Object.assign(this.config,t),this.storage){let r=JSON.stringify(this.config);this.storage.setItem(this.id,r)}}_loadConfiguration(){let t={};if(this.storage){let r=this.storage.getItem(this.id);t=r?JSON.parse(r):{}}return Object.assign(this.config,t),this}}});function _u(e){let t;return e<10?t=`${e.toFixed(2)}ms`:e<100?t=`${e.toFixed(1)}ms`:e<1e3?t=`${e.toFixed(0)}ms`:t=`${(e/1e3).toFixed(2)}s`,t}function Tu(e,t=8){let r=Math.max(t-e.length,0);return`${" ".repeat(r)}${e}`}var yu=A(()=>{});function bu(e){return typeof e!="string"?e:(e=e.toUpperCase(),Xo[e]||Xo.WHITE)}function xu(e,t,r){return!lr&&typeof e=="string"&&(t&&(e=`\x1B[${bu(t)}m${e}\x1B[39m`),r&&(e=`\x1B[${bu(r)+X0}m${e}\x1B[49m`)),e}var Xo,X0,Au=A(()=>{jo();(function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"})(Xo||(Xo={}));X0=10});function Su(e,t=["constructor"]){let r=Object.getPrototypeOf(e),i=Object.getOwnPropertyNames(r),s=e;for(let o of i){let n=s[o];typeof n=="function"&&(t.find(a=>o===a)||(s[o]=n.bind(e)))}}var Eu=A(()=>{});function Yr(){let e;if(lr()&&Vo.performance)e=Vo?.performance?.now?.();else if("hrtime"in zo){let t=zo?.hrtime?.();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var Ru=A(()=>{jo()});function $0(e,t,r){if(typeof t=="string"){let i=r.time?Tu(_u(r.total)):"";t=r.time?`${e}: ${i} ${t}`:`${e}: ${t}`,t=xu(t,r.color,r.background)}return t}function Y0(e){for(let t in e)for(let r in e[t])return r||"untitled";return"empty"}var Kr,Fc,ht,Bc=A(()=>{jo();gu();mu();yu();Au();Eu();Nc();Ru();Kr={debug:lr()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},Fc={enabled:!0,level:0},ht=class extends Wo{constructor({id:t}={id:""}){super({level:0}),this.VERSION=Oc,this._startTs=Yr(),this._deltaTs=Yr(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=t,this.userData={},this._storage=new Ho(`__probe-${this.id}__`,{[this.id]:Fc}),this.timeStamp(`${this.id} started`),Su(this),Object.seal(this)}isEnabled(){return this._getConfiguration().enabled}getLevel(){return this._getConfiguration().level}getTotal(){return Number((Yr()-this._startTs).toPrecision(10))}getDelta(){return Number((Yr()-this._deltaTs).toPrecision(10))}set priority(t){this.level=t}get priority(){return this.level}getPriority(){return this.level}enable(t=!0){return this._updateConfiguration({enabled:t}),this}setLevel(t){return this._updateConfiguration({level:t}),this}get(t){return this._getConfiguration()[t]}set(t,r){this._updateConfiguration({[t]:r})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(t,r){if(!t)throw new Error(r||"Assertion failed")}warn(t,...r){return this._log("warn",0,t,r,{method:Kr.warn,once:!0})}error(t,...r){return this._log("error",0,t,r,{method:Kr.error})}deprecated(t,r){return this.warn(`\`${t}\` is deprecated and will be removed in a later version. Use \`${r}\` instead`)}removed(t,r){return this.error(`\`${t}\` has been removed. Use \`${r}\` instead`)}probe(t,r,...i){return this._log("log",t,r,i,{method:Kr.log,time:!0,once:!0})}log(t,r,...i){return this._log("log",t,r,i,{method:Kr.debug})}info(t,r,...i){return this._log("info",t,r,i,{method:console.info})}once(t,r,...i){return this._log("once",t,r,i,{method:Kr.debug||Kr.info,once:!0})}table(t,r,i){return r?this._log("table",t,r,i&&[i]||[],{method:console.table||fr,tag:Y0(r)}):fr}time(t,r){return this._log("time",t,r,[],{method:console.time?console.time:console.info})}timeEnd(t,r){return this._log("time",t,r,[],{method:console.timeEnd?console.timeEnd:console.info})}timeStamp(t,r){return this._log("time",t,r,[],{method:console.timeStamp||fr})}group(t,r,i={collapsed:!1}){let s=(i.collapsed?console.groupCollapsed:console.group)||console.info;return this._log("group",t,r,[],{method:s})}groupCollapsed(t,r,i={}){return this.group(t,r,Object.assign({},i,{collapsed:!0}))}groupEnd(t){return this._log("groupEnd",t,"",[],{method:console.groupEnd||fr})}withGroup(t,r,i){this.group(t,r)();try{i()}finally{this.groupEnd(t)()}}trace(){console.trace&&console.trace()}_shouldLog(t){return this.isEnabled()&&super._shouldLog(t)}_emit(t,r){let i=r.method;$r(i),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=Yr();let s=$0(this.id,r.message,r);return i.bind(console,s,...r.args)}_getConfiguration(){return this._storage.config[this.id]||this._updateConfiguration(Fc),this._storage.config[this.id]}_updateConfiguration(t){let r=this._storage.config[this.id]||{...Fc};this._storage.setConfiguration({[this.id]:{...r,...t}})}};ht.VERSION=Oc});var wu=A(()=>{globalThis.probe={}});var aP,zi=A(()=>{Bc();Bc();wu();aP=new ht({id:"@probe.gl/log"})});var b,me=A(()=>{zi();b=new ht({id:"luma.gl"})});function Ue(e="id"){Lc[e]=Lc[e]||1;let t=Lc[e]++;return`${e}-${t}`}var Lc,ji=A(()=>{Lc={}});function K0(e,t){let r={...t};for(let i in e)e[i]!==void 0&&(r[i]=e[i]);return r}var N,ct=A(()=>{ji();N=class{toString(){return`${this[Symbol.toStringTag]||this.constructor.name}:"${this.id}"`}id;props;userData={};_device;destroyed=!1;allocatedBytes=0;_attachedResources=new Set;constructor(t,r,i){if(!t)throw new Error("no device");this._device=t,this.props=K0(r,i);let s=this.props.id!=="undefined"?this.props.id:Ue(this[Symbol.toStringTag]);this.props.id=s,this.id=s,this.userData=this.props.userData||{},this.addStats()}destroy(){this.destroyResource()}delete(){return this.destroy(),this}getProps(){return this.props}attachResource(t){this._attachedResources.add(t)}detachResource(t){this._attachedResources.delete(t)}destroyAttachedResource(t){this._attachedResources.delete(t)&&t.destroy()}destroyAttachedResources(){for(let t of Object.values(this._attachedResources))t.destroy();this._attachedResources=new Set}destroyResource(){this.destroyAttachedResources(),this.removeStats(),this.destroyed=!0}removeStats(){let t=this._device.statsManager.getStats("Resource Counts"),r=this[Symbol.toStringTag];t.get(`${r}s Active`).decrementCount()}trackAllocatedMemory(t,r=this[Symbol.toStringTag]){let i=this._device.statsManager.getStats("Resource Counts");i.get("GPU Memory").addCount(t),i.get(`${r} Memory`).addCount(t),this.allocatedBytes=t}trackDeallocatedMemory(t=this[Symbol.toStringTag]){let r=this._device.statsManager.getStats("Resource Counts");r.get("GPU Memory").subtractCount(this.allocatedBytes),r.get(`${t} Memory`).subtractCount(this.allocatedBytes),this.allocatedBytes=0}addStats(){let t=this._device.statsManager.getStats("Resource Counts"),r=this[Symbol.toStringTag];t.get("Resources Created").incrementCount(),t.get(`${r}s Created`).incrementCount(),t.get(`${r}s Active`).incrementCount()}};w(N,"defaultProps",{id:"undefined",handle:void 0,userData:void 0})});var Wi,O,$o=A(()=>{ct();Wi=class extends N{get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(t,r){let i={...r};(r.usage||0)&Wi.INDEX&&!r.indexType&&(r.data instanceof Uint32Array?i.indexType="uint32":r.data instanceof Uint16Array?i.indexType="uint16":r.data instanceof Uint8Array&&(i.indexType="uint8")),delete i.data,super(t,i,Wi.defaultProps),this.usage=i.usage||0,this.indexType=i.indexType,this.updateTimestamp=t.incrementTimestamp()}clone(t){return this.device.createBuffer({...this.props,...t})}debugData=new ArrayBuffer(0);_setDebugData(t,r,i){let s=ArrayBuffer.isView(t)?t.buffer:t,o=Math.min(t?t.byteLength:i,Wi.DEBUG_DATA_MAX_LENGTH);s===null?this.debugData=new ArrayBuffer(o):r===0&&i===s.byteLength?this.debugData=s.slice(0,o):this.debugData=s.slice(r,r+o)}},O=Wi;w(O,"INDEX",16),w(O,"VERTEX",32),w(O,"UNIFORM",64),w(O,"STORAGE",128),w(O,"INDIRECT",256),w(O,"QUERY_RESOLVE",512),w(O,"MAP_READ",1),w(O,"MAP_WRITE",2),w(O,"COPY_SRC",4),w(O,"COPY_DST",8),w(O,"DEBUG_DATA_MAX_LENGTH",32),w(O,"defaultProps",{...N.defaultProps,usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",onMapped:void 0})});function Hi(e){let t=e.includes("norm"),r=!t&&!e.startsWith("float"),i=e.startsWith("s"),s=kc[e],[o,n,a]=s||["uint8 ","i32",1];return{signedType:o,primitiveType:n,byteLength:a,normalized:t,integer:r,signed:i}}function Uc(e){let t=e;switch(t){case"uint8":return"unorm8";case"sint8":return"snorm8";case"uint16":return"unorm16";case"sint16":return"snorm16";default:return t}}function Yo(e,t){switch(t){case 1:return e;case 2:return e+e%2;default:return e+(4-e%4)%4}}function _e(e){let t=ArrayBuffer.isView(e)?e.constructor:e;if(t===Uint8ClampedArray)return"uint8";let r=Object.values(kc).find(i=>t===i[4]);if(!r)throw new Error(t.name);return r[0]}function Te(e){let[,,,,t]=kc[e];return t}var kc,Xi=A(()=>{kc={uint8:["uint8","u32",1,!1,Uint8Array],sint8:["sint8","i32",1,!1,Int8Array],unorm8:["uint8","f32",1,!0,Uint8Array],snorm8:["sint8","f32",1,!0,Int8Array],uint16:["uint16","u32",2,!1,Uint16Array],sint16:["sint16","i32",2,!1,Int16Array],unorm16:["uint16","u32",2,!0,Uint16Array],snorm16:["sint16","i32",2,!0,Int16Array],float16:["float16","f16",2,!1,Uint16Array],float32:["float32","f32",4,!1,Float32Array],uint32:["uint32","u32",4,!1,Uint32Array],sint32:["sint32","i32",4,!1,Int32Array]}});function qr(e){let t;e.endsWith("-webgl")&&(e.replace("-webgl",""),t=!0);let[r,i]=e.split("x"),s=r,o=i?parseInt(i):1,n=Hi(s),a={type:s,components:o,byteLength:n.byteLength*o,integer:n.integer,signed:n.signed,normalized:n.normalized};return t&&(a.webglOnly=!0),a}function Pu(e,t,r){let i=r?Uc(e):e;switch(i){case"unorm8":return t===1?"unorm8":t===3?"unorm8x3-webgl":`${i}x${t}`;case"snorm8":case"uint8":case"sint8":case"uint16":case"sint16":case"unorm16":case"snorm16":case"float16":if(t===1||t===3)throw new Error(`size: ${t}`);return`${i}x${t}`;default:return t===1?i:`${i}x${t}`}}function Vc(e,t,r){if(!t||t>4)throw new Error(`size ${t}`);let i=t,s=_e(e);return Pu(s,i,r)}function Mu(e){let t;switch(e.primitiveType){case"f32":t="float32";break;case"i32":t="sint32";break;case"u32":t="uint32";break;case"f16":return e.components<=2?"float16x2":"float16x4"}return e.components===1?t:`${t}x${e.components}`}var Ko=A(()=>{Xi()});function Xc(e){let t=G0[e];if(!t)throw new Error(`Unsupported texture format ${e}`);return t}var lt,$,Jt,q0,qo,zc,Zo,jc,Z0,Wc,$i,Hc,Jo,vu,J0,Q0,G0,Cu=A(()=>{lt="texture-compression-bc",$="texture-compression-astc",Jt="texture-compression-etc2",q0="texture-compression-etc1-webgl",qo="texture-compression-pvrtc-webgl",zc="texture-compression-atc-webgl",Zo="float32-renderable-webgl",jc="float16-renderable-webgl",Z0="rgb9e5ufloat-renderable-webgl",Wc="snorm8-renderable-webgl",$i="norm16-renderable-webgl",Hc="snorm16-renderable-webgl",Jo="float32-filterable",vu="float16-filterable-webgl";J0={r8unorm:{},rg8unorm:{},"rgb8unorm-webgl":{},rgba8unorm:{},"rgba8unorm-srgb":{},r8snorm:{render:Wc},rg8snorm:{render:Wc},"rgb8snorm-webgl":{},rgba8snorm:{render:Wc},r8uint:{},rg8uint:{},rgba8uint:{},r8sint:{},rg8sint:{},rgba8sint:{},bgra8unorm:{},"bgra8unorm-srgb":{},r16unorm:{f:$i},rg16unorm:{render:$i},"rgb16unorm-webgl":{f:$i},rgba16unorm:{render:$i},r16snorm:{f:Hc},rg16snorm:{render:Hc},"rgb16snorm-webgl":{f:$i},rgba16snorm:{render:Hc},r16uint:{},rg16uint:{},rgba16uint:{},r16sint:{},rg16sint:{},rgba16sint:{},r16float:{render:jc,filter:"float16-filterable-webgl"},rg16float:{render:jc,filter:vu},rgba16float:{render:jc,filter:vu},r32uint:{},rg32uint:{},rgba32uint:{},r32sint:{},rg32sint:{},rgba32sint:{},r32float:{render:Zo,filter:Jo},rg32float:{render:!1,filter:Jo},"rgb32float-webgl":{render:Zo,filter:Jo},rgba32float:{render:Zo,filter:Jo},"rgba4unorm-webgl":{channels:"rgba",bitsPerChannel:[4,4,4,4],packed:!0},"rgb565unorm-webgl":{channels:"rgb",bitsPerChannel:[5,6,5,0],packed:!0},"rgb5a1unorm-webgl":{channels:"rgba",bitsPerChannel:[5,5,5,1],packed:!0},rgb9e5ufloat:{channels:"rgb",packed:!0,render:Z0},rg11b10ufloat:{channels:"rgb",bitsPerChannel:[11,11,10,0],packed:!0,p:1,render:Zo},rgb10a2unorm:{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1},rgb10a2uint:{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1},stencil8:{attachment:"stencil",bitsPerChannel:[8,0,0,0],dataType:"uint8"},depth16unorm:{attachment:"depth",bitsPerChannel:[16,0,0,0],dataType:"uint16"},depth24plus:{attachment:"depth",bitsPerChannel:[24,0,0,0],dataType:"uint32"},depth32float:{attachment:"depth",bitsPerChannel:[32,0,0,0],dataType:"float32"},"depth24plus-stencil8":{attachment:"depth-stencil",bitsPerChannel:[24,8,0,0],packed:!0},"depth32float-stencil8":{attachment:"depth-stencil",bitsPerChannel:[32,8,0,0],packed:!0}},Q0={"bc1-rgb-unorm-webgl":{f:lt},"bc1-rgb-unorm-srgb-webgl":{f:lt},"bc1-rgba-unorm":{f:lt},"bc1-rgba-unorm-srgb":{f:lt},"bc2-rgba-unorm":{f:lt},"bc2-rgba-unorm-srgb":{f:lt},"bc3-rgba-unorm":{f:lt},"bc3-rgba-unorm-srgb":{f:lt},"bc4-r-unorm":{f:lt},"bc4-r-snorm":{f:lt},"bc5-rg-unorm":{f:lt},"bc5-rg-snorm":{f:lt},"bc6h-rgb-ufloat":{f:lt},"bc6h-rgb-float":{f:lt},"bc7-rgba-unorm":{f:lt},"bc7-rgba-unorm-srgb":{f:lt},"etc2-rgb8unorm":{f:Jt},"etc2-rgb8unorm-srgb":{f:Jt},"etc2-rgb8a1unorm":{f:Jt},"etc2-rgb8a1unorm-srgb":{f:Jt},"etc2-rgba8unorm":{f:Jt},"etc2-rgba8unorm-srgb":{f:Jt},"eac-r11unorm":{f:Jt},"eac-r11snorm":{f:Jt},"eac-rg11unorm":{f:Jt},"eac-rg11snorm":{f:Jt},"astc-4x4-unorm":{f:$},"astc-4x4-unorm-srgb":{f:$},"astc-5x4-unorm":{f:$},"astc-5x4-unorm-srgb":{f:$},"astc-5x5-unorm":{f:$},"astc-5x5-unorm-srgb":{f:$},"astc-6x5-unorm":{f:$},"astc-6x5-unorm-srgb":{f:$},"astc-6x6-unorm":{f:$},"astc-6x6-unorm-srgb":{f:$},"astc-8x5-unorm":{f:$},"astc-8x5-unorm-srgb":{f:$},"astc-8x6-unorm":{f:$},"astc-8x6-unorm-srgb":{f:$},"astc-8x8-unorm":{f:$},"astc-8x8-unorm-srgb":{f:$},"astc-10x5-unorm":{f:$},"astc-10x5-unorm-srgb":{f:$},"astc-10x6-unorm":{f:$},"astc-10x6-unorm-srgb":{f:$},"astc-10x8-unorm":{f:$},"astc-10x8-unorm-srgb":{f:$},"astc-10x10-unorm":{f:$},"astc-10x10-unorm-srgb":{f:$},"astc-12x10-unorm":{f:$},"astc-12x10-unorm-srgb":{f:$},"astc-12x12-unorm":{f:$},"astc-12x12-unorm-srgb":{f:$},"pvrtc-rgb4unorm-webgl":{f:qo},"pvrtc-rgba4unorm-webgl":{f:qo},"pvrtc-rbg2unorm-webgl":{f:qo},"pvrtc-rgba2unorm-webgl":{f:qo},"etc1-rbg-unorm-webgl":{f:q0},"atc-rgb-unorm-webgl":{f:zc},"atc-rgba-unorm-webgl":{f:zc},"atc-rgbai-unorm-webgl":{f:zc}},G0={...J0,...Q0}});function sT({format:e,width:t,height:r,depth:i,byteAlignment:s}){let{bytesPerPixel:o}=Pt.getInfo(e),n=t*o,a=Math.ceil(n/s)*s,c=r,l=a*c*i;return{bytesPerPixel:o,bytesPerRow:a,rowsPerImage:c,depthOrArrayLayers:i,bytesPerImage:a*c,byteLength:l}}function oT(e){let t=Xc(e),r={format:e,create:t.f??!0,render:t.render??!0,filter:t.filter??!0,blend:t.blend??!0,store:t.store??!0},i=Iu(e),s=e.startsWith("depth")||e.startsWith("stencil"),o=i?.signed,n=i?.integer,a=i?.webgl;return r.render&&=!o,r.filter&&=!s&&!o&&!n&&!a,r}function Iu(e){let t=nT(e);if(Pt.isCompressed(e)){t.channels="rgb",t.components=3,t.bytesPerPixel=1,t.srgb=!1,t.compressed=!0;let i=aT(e);i&&(t.blockWidth=i.blockWidth,t.blockHeight=i.blockHeight)}let r=tT.exec(e);if(r){let[,i,s,o,n,a]=r,c=`${o}${s}`,l=Hi(c),f=l.byteLength*8,h=i.length,u=[f,h>=2?f:0,h>=3?f:0,h>=4?f:0];t={format:e,attachment:t.attachment,dataType:l.signedType,components:h,channels:i,integer:l.integer,signed:l.signed,normalized:l.normalized,bitsPerChannel:u,bytesPerPixel:l.byteLength*i.length,packed:t.packed,srgb:t.srgb},a==="-webgl"&&(t.webgl=!0),n==="-srgb"&&(t.srgb=!0)}return e.endsWith("-webgl")&&(t.webgl=!0),e.endsWith("-srgb")&&(t.srgb=!0),t}function nT(e){let t=Xc(e),r=t.bytesPerPixel||1,i=t.bitsPerChannel||[8,8,8,8];return delete t.bitsPerChannel,delete t.bytesPerPixel,delete t.f,delete t.render,delete t.filter,delete t.blend,delete t.store,{...t,format:e,attachment:t.attachment||"color",channels:t.channels||"r",components:t.components||t.channels?.length||1,bytesPerPixel:r,bitsPerChannel:i,dataType:t.dataType||"uint8",srgb:t.srgb??!1,packed:t.packed??!1,webgl:t.webgl??!1,integer:t.integer??!1,signed:t.signed??!1,normalized:t.normalized??!1,compressed:t.compressed??!1}}function aT(e){let r=/.*-(\d+)x(\d+)-.*/.exec(e);if(r){let[,i,s]=r;return{blockWidth:Number(i),blockHeight:Number(s)}}return null}var tT,eT,rT,iT,Qo,Pt,Go=A(()=>{Xi();Cu();tT=/^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/,eT=["rgb","rgba","bgra"],rT=["depth","stencil"],iT=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],Qo=class{isColor(t){return eT.some(r=>t.startsWith(r))}isDepthStencil(t){return rT.some(r=>t.startsWith(r))}isCompressed(t){return iT.some(r=>t.startsWith(r))}getInfo(t){return Iu(t)}getCapabilities(t){return oT(t)}computeMemoryLayout(t){return sT(t)}},Pt=new Qo});function Zr(e){return typeof ImageData<"u"&&e instanceof ImageData||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement||typeof VideoFrame<"u"&&e instanceof VideoFrame||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas}function Yi(e){if(typeof ImageData<"u"&&e instanceof ImageData||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas)return{width:e.width,height:e.height};if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement)return{width:e.naturalWidth,height:e.naturalHeight};if(typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement)return{width:e.videoWidth,height:e.videoHeight};if(typeof VideoFrame<"u"&&e instanceof VideoFrame)return{width:e.displayWidth,height:e.displayHeight};throw new Error("Unknown image type")}var $c=A(()=>{});var Ki,qi,Yc,mt,Kc=A(()=>{Ic();me();ji();$o();Ko();Go();$c();Ki=class{},qi=class{features;disabledFeatures;constructor(t=[],r){this.features=new Set(t),this.disabledFeatures=r||{}}*[Symbol.iterator](){yield*this.features}has(t){return!this.disabledFeatures?.[t]&&this.features.has(t)}},Yc=class{get[Symbol.toStringTag](){return"Device"}toString(){return`Device(${this.id})`}id;props;userData={};statsManager=ko;timestamp=0;_reused=!1;_moduleData={};_textureCaps={};constructor(t){this.props={...Yc.defaultProps,...t},this.id=this.props.id||Ue(this[Symbol.toStringTag].toLowerCase())}getVertexFormatInfo(t){return qr(t)}isVertexFormatSupported(t){return!0}getTextureFormatInfo(t){return Pt.getInfo(t)}getTextureFormatCapabilities(t){let r=this._textureCaps[t];if(!r){let i=this._getDeviceTextureFormatCapabilities(t);r=this._getDeviceSpecificTextureFormatCapabilities(i),this._textureCaps[t]=r}return r}getMipLevelCount(t,r,i=1){let s=Math.max(t,r,i);return 1+Math.floor(Math.log2(s))}isExternalImage(t){return Zr(t)}getExternalImageSize(t){return Yi(t)}isTextureFormatSupported(t){return this.getTextureFormatCapabilities(t).create}isTextureFormatFilterable(t){return this.getTextureFormatCapabilities(t).filter}isTextureFormatRenderable(t){return this.getTextureFormatCapabilities(t).render}isTextureFormatCompressed(t){return Pt.isCompressed(t)}pushDebugGroup(t){this.commandEncoder.pushDebugGroup(t)}popDebugGroup(){this.commandEncoder?.popDebugGroup()}insertDebugMarker(t){this.commandEncoder?.insertDebugMarker(t)}loseDevice(){return!1}incrementTimestamp(){return this.timestamp++}reportError(t,r,...i){return this.props.onError(t,r)?()=>{}:b.error(this.type==="webgl"?"%cWebGL":"%cWebGPU","color: white; background: red; padding: 2px 6px; border-radius: 3px;",t.message,r,...i)}debug(){if(this.props.debug)debugger;else{let t=`'Type luma.log.set({debug: true}) in console to enable debug breakpoints',
8
- or create a device with the 'debug: true' prop.`;b.once(0,t)()}}getDefaultCanvasContext(){if(!this.canvasContext)throw new Error("Device has no default CanvasContext. See props.createCanvasContext");return this.canvasContext}createFence(){throw new Error("createFence() not implemented")}beginRenderPass(t){return this.commandEncoder.beginRenderPass(t)}beginComputePass(t){return this.commandEncoder.beginComputePass(t)}getCanvasContext(){return this.getDefaultCanvasContext()}readPixelsToArrayWebGL(t,r){throw new Error("not implemented")}readPixelsToBufferWebGL(t,r){throw new Error("not implemented")}setParametersWebGL(t){throw new Error("not implemented")}getParametersWebGL(t){throw new Error("not implemented")}withParametersWebGL(t,r){throw new Error("not implemented")}clearWebGL(t){throw new Error("not implemented")}resetWebGL(){throw new Error("not implemented")}getModuleData(t){return this._moduleData[t]||={},this._moduleData[t]}static _getCanvasContextProps(t){return t.createCanvasContext===!0?{}:t.createCanvasContext}_getDeviceTextureFormatCapabilities(t){let r=Pt.getCapabilities(t),i=o=>(typeof o=="string"?this.features.has(o):o)??!0,s=i(r.create);return{format:t,create:s,render:s&&i(r.render),filter:s&&i(r.filter),blend:s&&i(r.blend),store:s&&i(r.store)}}_normalizeBufferProps(t){(t instanceof ArrayBuffer||ArrayBuffer.isView(t))&&(t={data:t});let r={...t};if((t.usage||0)&O.INDEX&&(t.indexType||(t.data instanceof Uint32Array?r.indexType="uint32":t.data instanceof Uint16Array?r.indexType="uint16":t.data instanceof Uint8Array&&(r.data=new Uint16Array(t.data),r.indexType="uint16")),!r.indexType))throw new Error("indices buffer content must be of type uint16 or uint32");return r}},mt=Yc;w(mt,"defaultProps",{id:null,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,createCanvasContext:void 0,webgl:{},onError:(t,r)=>{},onResize:(t,r)=>{let[i,s]=t.getDevicePixelSize();b.log(1,`${t} resized => ${i}x${s}px`)()},onPositionChange:(t,r)=>{let[i,s]=t.getPosition();b.log(1,`${t} repositioned => ${i},${s}`)()},onVisibilityChange:t=>b.log(1,`${t} Visibility changed ${t.isVisible}`)(),onDevicePixelRatioChange:(t,r)=>b.log(1,`${t} DPR changed ${r.oldRatio} => ${t.devicePixelRatio}`)(),debug:b.get("debug")||void 0,debugShaders:b.get("debug-shaders")||void 0,debugFramebuffers:Boolean(b.get("debug-framebuffers")),debugFactories:Boolean(b.get("debug-factories")),debugWebGL:Boolean(b.get("debug-webgl")),debugSpectorJS:void 0,debugSpectorJSUrl:void 0,_reuseDevices:!1,_requestMaxLimits:!0,_cacheShaders:!1,_cachePipelines:!1,_cacheDestroyPolicy:"unused",_initializeFeatures:!0,_disabledFeatures:{"compilation-status-async-webgl":!0},_handle:void 0})});var cT,Ou,en,tn,ke,Nu=A(()=>{Kc();Ic();me();cT="set luma.log.level=1 (or higher) to trace rendering",Ou="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.",en=class{stats=ko;log=b;VERSION="9.3.0-alpha.2";spector;preregisteredAdapters=new Map;constructor(){if(globalThis.luma){if(globalThis.luma.VERSION!==this.VERSION)throw b.error(`Found luma.gl ${globalThis.luma.VERSION} while initialzing ${this.VERSION}`)(),b.error("'yarn why @luma.gl/core' can help identify the source of the conflict")(),new Error("luma.gl - multiple versions detected: see console log");b.error("This version of luma.gl has already been initialized")()}b.log(1,`${this.VERSION} - ${cT}`)(),globalThis.luma=this}async createDevice(t={}){let r={...en.defaultProps,...t},i=this.selectAdapter(r.type,r.adapters);if(!i)throw new Error(Ou);return r.waitForPageLoad&&await i.pageLoaded,await i.create(r)}async attachDevice(t,r){let i=this._getTypeFromHandle(t,r.adapters),s=i&&this.selectAdapter(i,r.adapters);if(!s)throw new Error(Ou);return await s?.attach?.(t,r)}registerAdapters(t){for(let r of t)this.preregisteredAdapters.set(r.type,r)}getSupportedAdapters(t=[]){let r=this._getAdapterMap(t);return Array.from(r).map(([,i])=>i).filter(i=>i.isSupported?.()).map(i=>i.type)}getBestAvailableAdapterType(t=[]){let r=["webgpu","webgl","null"],i=this._getAdapterMap(t);for(let s of r)if(i.get(s)?.isSupported?.())return s;return null}selectAdapter(t,r=[]){let i=t;t==="best-available"&&(i=this.getBestAvailableAdapterType(r));let s=this._getAdapterMap(r);return i&&s.get(i)||null}enforceWebGL2(t=!0,r=[]){let s=this._getAdapterMap(r).get("webgl");s||b.warn("enforceWebGL2: webgl adapter not found")(),s?.enforceWebGL2?.(t)}setDefaultDeviceProps(t){Object.assign(en.defaultProps,t)}_getAdapterMap(t=[]){let r=new Map(this.preregisteredAdapters);for(let i of t)r.set(i.type,i);return r}_getTypeFromHandle(t,r=[]){return t instanceof WebGL2RenderingContext?"webgl":typeof GPUDevice<"u"&&t instanceof GPUDevice||t?.queue?"webgpu":t===null?"null":(t instanceof WebGLRenderingContext?b.warn("WebGL1 is not supported",t)():b.warn("Unknown handle type",t)(),null)}},tn=en;w(tn,"defaultProps",{...mt.defaultProps,type:"best-available",adapters:void 0,waitForPageLoad:!0});ke=new tn});var jP,WP,HP,Du,Fu=A(()=>{jP=globalThis.document||{},WP=globalThis.process||{},HP=globalThis.console,Du=globalThis.navigator||{}});function rn(e){if(typeof window<"u"&&window.process?.type==="renderer"||typeof process<"u"&&Boolean(process.versions?.electron))return!0;let t=typeof navigator<"u"&&navigator.userAgent,r=e||t;return Boolean(r&&r.indexOf("Electron")>=0)}var qc=A(()=>{});function ye(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||rn()}var Zc=A(()=>{qc()});function Jc(e){return!e&&!ye()?"Node":rn(e)?"Electron":(e||Du.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var Bu=A(()=>{Zc();qc();Fu()});var Zi=A(()=>{Zc();Bu()});function hT(){return sn||(fT()||typeof window>"u"?sn=Promise.resolve():sn=new Promise(e=>window.addEventListener("load",()=>e()))),sn}var Ji,lT,fT,sn,Lu=A(()=>{Zi();Ji=class{get pageLoaded(){return hT()}},lT=ye()&&typeof document<"u",fT=()=>lT&&document.readyState==="complete",sn=null});function Uu(){let e,t;return{promise:new Promise((i,s)=>{e=i,t=s}),resolve:e,reject:t}}var ku=A(()=>{});function uT(e){if(typeof e=="string"){let t=document.getElementById(e);if(!t)throw new Error(`${e} is not an HTML element`);return t}return e||document.body}function dT(e){let t=document.getElementById(e);if(!hr.isHTMLCanvas(t))throw new Error("Object is not a canvas element");return t}function pT(e){let{width:t,height:r}=e,i=document.createElement("canvas");i.id=Ue("lumagl-auto-created-canvas"),i.width=t||1,i.height=r||1,i.style.width=Number.isFinite(t)?`${t}px`:"100%",i.style.height=Number.isFinite(r)?`${r}px`:"100%",e?.visible||(i.style.visibility="hidden");let s=uT(e?.container||null);return s.insertBefore(i,s.firstChild),i}function gT(e,t,r,i,s){let o=e,n=Vu(o[0],t,r),a=zu(o[1],t,i,s),c=Vu(o[0]+1,t,r),l=c===r-1?c:c-1;c=zu(o[1]+1,t,i,s);let f;return s?(c=c===0?c:c+1,f=a,a=c):f=c===i-1?c:c-1,{x:n,y:a,width:Math.max(l-n+1,1),height:Math.max(f-a+1,1)}}function Vu(e,t,r){return Math.min(Math.round(e*t),r-1)}function zu(e,t,r,i){return i?Math.max(0,r-1-Math.round(e*t)):Math.min(Math.round(e*t),r-1)}var Jr,hr,ju=A(()=>{Zi();ji();ku();Jr=class{static isHTMLCanvas(t){return typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement}static isOffscreenCanvas(t){return typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas}id;props;canvas;htmlCanvas;offscreenCanvas;type;initialized;isInitialized=!1;isVisible=!0;cssWidth;cssHeight;devicePixelRatio;devicePixelWidth;devicePixelHeight;drawingBufferWidth;drawingBufferHeight;_initializedResolvers=Uu();_resizeObserver;_intersectionObserver;_position=[0,0];destroyed=!1;_needsDrawingBufferResize=!0;toString(){return`${this[Symbol.toStringTag]}(${this.id})`}constructor(t){if(this.props={...Jr.defaultProps,...t},t=this.props,this.initialized=this._initializedResolvers.promise,ye()?t.canvas?typeof t.canvas=="string"?this.canvas=dT(t.canvas):this.canvas=t.canvas:this.canvas=pT(t):this.canvas={width:t.width||1,height:t.height||1},Jr.isHTMLCanvas(this.canvas)?(this.id=t.id||this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):Jr.isOffscreenCanvas(this.canvas)?(this.id=t.id||"offscreen-canvas",this.type="offscreen-canvas",this.offscreenCanvas=this.canvas):(this.id=t.id||"node-canvas-context",this.type="node"),this.cssWidth=this.htmlCanvas?.clientWidth||this.canvas.width,this.cssHeight=this.htmlCanvas?.clientHeight||this.canvas.height,this.devicePixelWidth=this.canvas.width,this.devicePixelHeight=this.canvas.height,this.drawingBufferWidth=this.canvas.width,this.drawingBufferHeight=this.canvas.height,this.devicePixelRatio=globalThis.devicePixelRatio||1,this._position=[0,0],Jr.isHTMLCanvas(this.canvas)){this._intersectionObserver=new IntersectionObserver(r=>this._handleIntersection(r)),this._intersectionObserver.observe(this.canvas),this._resizeObserver=new ResizeObserver(r=>this._handleResize(r));try{this._resizeObserver.observe(this.canvas,{box:"device-pixel-content-box"})}catch{this._resizeObserver.observe(this.canvas,{box:"content-box"})}setTimeout(()=>this._observeDevicePixelRatio(),0),this.props.trackPosition&&this._trackPosition()}}destroy(){this.destroyed=!0}setProps(t){return"useDevicePixels"in t&&(this.props.useDevicePixels=t.useDevicePixels||!1,this._updateDrawingBufferSize()),this}getCurrentFramebuffer(t){return this._resizeDrawingBufferIfNeeded(),this._getCurrentFramebuffer(t)}getCSSSize(){return[this.cssWidth,this.cssHeight]}getPosition(){return this._position}getDevicePixelSize(){return[this.devicePixelWidth,this.devicePixelHeight]}getDrawingBufferSize(){return[this.drawingBufferWidth,this.drawingBufferHeight]}getMaxDrawingBufferSize(){let t=this.device.limits.maxTextureDimension2D;return[t,t]}setDrawingBufferSize(t,r){this.drawingBufferWidth=Math.floor(t),this.drawingBufferHeight=Math.floor(r),this._needsDrawingBufferResize=!0}getDevicePixelRatio(){return typeof window<"u"&&window.devicePixelRatio||1}cssToDevicePixels(t,r=!0){let i=this.cssToDeviceRatio(),[s,o]=this.getDrawingBufferSize();return gT(t,i,s,o,r)}getPixelSize(){return this.getDevicePixelSize()}getAspect(){let[t,r]=this.getDevicePixelSize();return t/r}cssToDeviceRatio(){try{let[t]=this.getDrawingBufferSize(),[r]=this.getCSSSize();return r?t/r:1}catch{return 1}}resize(t){this.setDrawingBufferSize(t.width,t.height)}_setAutoCreatedCanvasId(t){this.htmlCanvas?.id==="lumagl-auto-created-canvas"&&(this.htmlCanvas.id=t)}_handleIntersection(t){let r=t.find(s=>s.target===this.canvas);if(!r)return;let i=r.isIntersecting;this.isVisible!==i&&(this.isVisible=i,this.device.props.onVisibilityChange(this))}_handleResize(t){let r=t.find(c=>c.target===this.canvas);if(!r)return;this.cssWidth=r.contentBoxSize[0].inlineSize,this.cssHeight=r.contentBoxSize[0].blockSize;let i=this.getDevicePixelSize(),s=r.devicePixelContentBoxSize?.[0].inlineSize||r.contentBoxSize[0].inlineSize*devicePixelRatio,o=r.devicePixelContentBoxSize?.[0].blockSize||r.contentBoxSize[0].blockSize*devicePixelRatio,[n,a]=this.getMaxDrawingBufferSize();this.devicePixelWidth=Math.max(1,Math.min(s,n)),this.devicePixelHeight=Math.max(1,Math.min(o,a)),this._updateDrawingBufferSize(),this.device.props.onResize(this,{oldPixelSize:i})}_updateDrawingBufferSize(){if(this.props.autoResize)if(typeof this.props.useDevicePixels=="number"){let t=this.props.useDevicePixels;this.setDrawingBufferSize(this.cssWidth*t,this.cssHeight*t)}else this.props.useDevicePixels?this.setDrawingBufferSize(this.devicePixelWidth,this.devicePixelHeight):this.setDrawingBufferSize(this.cssWidth,this.cssHeight);this._initializedResolvers.resolve(),this.isInitialized=!0,this.updatePosition()}_resizeDrawingBufferIfNeeded(){this._needsDrawingBufferResize&&(this._needsDrawingBufferResize=!1,(this.drawingBufferWidth!==this.canvas.width||this.drawingBufferHeight!==this.canvas.height)&&(this.canvas.width=this.drawingBufferWidth,this.canvas.height=this.drawingBufferHeight,this._configureDevice()))}_observeDevicePixelRatio(){let t=this.devicePixelRatio;this.devicePixelRatio=window.devicePixelRatio,this.updatePosition(),this.device.props.onDevicePixelRatioChange(this,{oldRatio:t}),matchMedia(`(resolution: ${this.devicePixelRatio}dppx)`).addEventListener("change",()=>this._observeDevicePixelRatio(),{once:!0})}_trackPosition(t=100){let r=setInterval(()=>{this.destroyed?clearInterval(r):this.updatePosition()},t)}updatePosition(){let t=this.htmlCanvas?.getBoundingClientRect();if(t){let r=[t.left,t.top];if(this._position??=r,r[0]!==this._position[0]||r[1]!==this._position[1]){let s=this._position;this._position=r,this.device.props.onPositionChange?.(this,{oldPosition:s})}}}},hr=Jr;w(hr,"defaultProps",{id:void 0,canvas:null,width:800,height:600,useDevicePixels:!0,autoResize:!0,container:null,visible:!0,alphaMode:"opaque",colorSpace:"srgb",trackPosition:!1})});var on,Mt,Qc=A(()=>{ct();on=class extends N{get[Symbol.toStringTag](){return"Sampler"}constructor(t,r){r=on.normalizeProps(t,r),super(t,r,on.defaultProps)}static normalizeProps(t,r){return r}},Mt=on;w(Mt,"defaultProps",{...N.defaultProps,type:"color-sampler",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest",mipmapFilter:"none",lodMinClamp:0,lodMaxClamp:32,compare:"less-equal",maxAnisotropy:1})});var mT,Bt,k,Gc=A(()=>{ct();Qc();me();Go();mT={"1d":"1d","2d":"2d","2d-array":"2d",cube:"2d","cube-array":"2d","3d":"3d"},Bt=class extends N{dimension;baseDimension;format;width;height;depth;mipLevels;byteAlignment;ready=Promise.resolve(this);isReady=!0;updateTimestamp;get[Symbol.toStringTag](){return"Texture"}toString(){return`Texture(${this.id},${this.format},${this.width}x${this.height})`}constructor(t,r,i){if(r=Bt.normalizeProps(t,r),super(t,r,Bt.defaultProps),this.dimension=this.props.dimension,this.baseDimension=mT[this.dimension],this.format=this.props.format,this.width=this.props.width,this.height=this.props.height,this.depth=this.props.depth,this.mipLevels=this.props.mipLevels,this.dimension==="cube"&&(this.depth=6),this.props.width===void 0||this.props.height===void 0)if(t.isExternalImage(r.data)){let s=t.getExternalImageSize(r.data);this.width=s?.width||1,this.height=s?.height||1}else this.width=1,this.height=1,(this.props.width===void 0||this.props.height===void 0)&&b.warn(`${this} created with undefined width or height. This is deprecated. Use DynamicTexture instead.`)();this.byteAlignment=i?.byteAlignment||1,this.updateTimestamp=t.incrementTimestamp()}clone(t){return this.device.createTexture({...this.props,...t})}setSampler(t){this.sampler=t instanceof Mt?t:this.device.createSampler(t)}computeMemoryLayout(t={}){let r=this._normalizeTextureReadOptions(t),{width:i=this.width,height:s=this.height,depthOrArrayLayers:o=this.depth}=r,{format:n,byteAlignment:a}=this;return Pt.computeMemoryLayout({format:n,width:i,height:s,depth:o,byteAlignment:a})}readBuffer(t,r){throw new Error("readBuffer not implemented")}readDataAsync(t){throw new Error("readBuffer not implemented")}writeBuffer(t,r){throw new Error("readBuffer not implemented")}writeData(t,r){throw new Error("readBuffer not implemented")}readDataSyncWebGL(t){throw new Error("readDataSyncWebGL not available")}generateMipmapsWebGL(){throw new Error("generateMipmapsWebGL not available")}static normalizeProps(t,r){let i={...r},{width:s,height:o}=i;return typeof s=="number"&&(i.width=Math.max(1,Math.ceil(s))),typeof o=="number"&&(i.height=Math.max(1,Math.ceil(o))),i}_initializeData(t){this.device.isExternalImage(t)?this.copyExternalImage({image:t,width:this.width,height:this.height,depth:this.depth,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1}):t&&this.copyImageData({data:t,mipLevel:0,x:0,y:0,z:0,aspect:"all"})}_normalizeCopyImageDataOptions(t){let{width:r,height:i,depth:s}=this,o={...Bt.defaultCopyDataOptions,width:r,height:i,depth:s,...t},n=this.device.getTextureFormatInfo(this.format);if(!t.bytesPerRow&&!n.bytesPerPixel)throw new Error(`bytesPerRow must be provided for texture format ${this.format}`);return o.bytesPerRow=t.bytesPerRow||r*(n.bytesPerPixel||4),o.rowsPerImage=t.rowsPerImage||i,o}_normalizeCopyExternalImageOptions(t){let r=this.device.getExternalImageSize(t.image),i={...Bt.defaultCopyExternalImageOptions,...r,...t};return i.width=Math.min(i.width,this.width-i.x),i.height=Math.min(i.height,this.height-i.y),i}_normalizeTextureReadOptions(t){let{width:r,height:i}=this,s={...Bt.defaultTextureReadOptions,width:r,height:i,...t};return s.width=Math.min(s.width,this.width-s.x),s.height=Math.min(s.height,this.height-s.y),s}_normalizeTextureWriteOptions(t){let{width:r,height:i}=this,s={...Bt.defaultTextureReadOptions,width:r,height:i,...t};return s.width=Math.min(s.width,this.width-s.x),s.height=Math.min(s.height,this.height-s.y),s}},k=Bt;w(k,"SAMPLE",4),w(k,"STORAGE",8),w(k,"RENDER",16),w(k,"COPY_SRC",1),w(k,"COPY_DST",2),w(k,"TEXTURE",4),w(k,"RENDER_ATTACHMENT",16),w(k,"defaultProps",{...N.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",usage:Bt.SAMPLE|Bt.RENDER|Bt.COPY_DST,width:void 0,height:void 0,depth:1,mipLevels:1,samples:void 0,sampler:{},view:void 0}),w(k,"defaultCopyDataOptions",{data:void 0,byteOffset:0,bytesPerRow:void 0,rowsPerImage:void 0,mipLevel:0,x:0,y:0,z:0,aspect:"all"}),w(k,"defaultCopyExternalImageOptions",{image:void 0,sourceX:0,sourceY:0,width:void 0,height:void 0,depth:1,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1}),w(k,"defaultTextureReadOptions",{x:0,y:0,z:0,width:void 0,height:void 0,depthOrArrayLayers:1,mipLevel:0,aspect:"all"})});var tl,Ve,Wu=A(()=>{ct();tl=class extends N{get[Symbol.toStringTag](){return"TextureView"}constructor(t,r){super(t,r,tl.defaultProps)}},Ve=tl;w(Ve,"defaultProps",{...N.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0})});function Hu(e,t,r){let i="",s=t.split(/\r?\n/),o=e.slice().sort((n,a)=>n.lineNum-a.lineNum);switch(r?.showSourceCode||"no"){case"all":let n=0;for(let a=1;a<=s.length;a++)for(i+=Xu(s[a-1],a,r);o.length>n&&o[n].lineNum===a;){let c=o[n++];i+=el(c,s,c.lineNum,{...r,inlineSource:!1})}for(;o.length>n;){let a=o[n++];i+=el(a,[],0,{...r,inlineSource:!1})}return i;case"issues":case"no":for(let a of e)i+=el(a,s,a.lineNum,{inlineSource:r?.showSourceCode!=="no"});return i}}function el(e,t,r,i){if(i?.inlineSource){let o=_T(t,r),n=e.linePos>0?`${" ".repeat(e.linePos+5)}^^^
7
+ "use strict";var __exports__=(()=>{var jo=Object.defineProperty;var Sy=Object.getOwnPropertyDescriptor;var Ey=Object.getOwnPropertyNames;var wy=Object.prototype.hasOwnProperty;var Ry=(t,e,r)=>e in t?jo(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var E=(t,e)=>()=>(t&&(e=t(t=0)),e);var At=(t,e)=>{for(var r in e)jo(t,r,{get:e[r],enumerable:!0})},Py=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Ey(e))!wy.call(t,s)&&s!==r&&jo(t,s,{get:()=>e[s],enumerable:!(i=Sy(e,s))||i.enumerable});return t};var vy=t=>Py(jo({},"__esModule",{value:!0}),t);var P=(t,e,r)=>(Ry(t,typeof e!="symbol"?e+"":e,r),r);function zi(){let t;if(typeof window<"u"&&window.performance)t=window.performance.now();else if(typeof process<"u"&&process.hrtime){let e=process.hrtime();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}var Vc=E(()=>{});var mr,zc=E(()=>{Vc();mr=class{constructor(e,r){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=e,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(e){return this.sampleSize=e,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(e){return this._count+=e,this._samples++,this._checkSampling(),this}subtractCount(e){return this._count-=e,this._samples++,this._checkSampling(),this}addTime(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=zi(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(zi()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}}});var Oe,Bu=E(()=>{zc();Oe=class{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,r="count"){return this._getOrCreate({name:e,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let e of Object.values(this.stats))e.reset();return this}forEach(e){for(let r of Object.values(this.stats))e(r)}getTable(){let e={};return this.forEach(r=>{e[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),e}_initializeStats(e=[]){e.forEach(r=>this._getOrCreate(r))}_getOrCreate(e){let{name:r,type:i}=e,s=this.stats[r];return s||(e instanceof mr?s=e:s=new mr(r,i),this.stats[r]=s),s}}});var Wi=E(()=>{Bu();zc();Vc()});function Iy(t,e){let r=t.stats,i=!1;for(let c of e)r[c]||(t.get(c),i=!0);let s=Object.keys(r).length,o=Lu.get(t);if(!i&&o?.orderedStatNames===e&&o.statCount===s)return;let n={},a=Uu.get(e);a||(a=new Set(e),Uu.set(e,a));for(let c of e)r[c]&&(n[c]=r[c]);for(let[c,l]of Object.entries(r))a.has(c)||(n[c]=l);for(let c of Object.keys(r))delete r[c];Object.assign(r,n),Lu.set(t,{orderedStatNames:e,statCount:s})}var My,Cy,Lu,Uu,Wc,Ho,jc=E(()=>{Wi();My="GPU Time and Memory",Cy=["Adapter","GPU","GPU Type","GPU Backend","Frame Rate","CPU Time","GPU Time","GPU Memory","Buffer Memory","Texture Memory","Referenced Buffer Memory","Referenced Texture Memory","Swap Chain Texture"],Lu=new WeakMap,Uu=new WeakMap,Wc=class{stats=new Map;getStats(e){return this.get(e)}get(e){this.stats.has(e)||this.stats.set(e,new Oe({id:e}));let r=this.stats.get(e);return e===My&&Iy(r,Cy),r}},Ho=new Wc});var $o,Oy,Xo,Ny,ku,Hc=E(()=>{$o=globalThis,Oy=globalThis.document||{},Xo=globalThis.process||{},Ny=globalThis.console,ku=globalThis.navigator||{}});function Yo(t){if(typeof window<"u"&&window.process?.type==="renderer"||typeof process<"u"&&Boolean(process.versions?.electron))return!0;let e=typeof navigator<"u"&&navigator.userAgent,r=t||e;return Boolean(r&&r.indexOf("Electron")>=0)}var $c=E(()=>{});function he(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||Yo()}var Xc=E(()=>{$c()});function Yc(t){return!t&&!he()?"Node":Yo(t)?"Electron":(t||ku.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var Vu=E(()=>{Xc();$c();Hc()});var Zc,jt=E(()=>{Hc();Xc();Vu();Zc="4.1.1"});function qr(t,e){if(!t)throw new Error(e||"Assertion failed")}var Kc=E(()=>{});function qc(t){if(!t)return 0;let e;switch(typeof t){case"number":e=t;break;case"object":e=t.logLevel||t.priority||0;break;default:return 0}return qr(Number.isFinite(e)&&e>=0),e}function zu(t){let{logLevel:e,message:r}=t;t.logLevel=qc(e);let i=t.args?Array.from(t.args):[];for(;i.length&&i.shift()!==r;);switch(typeof e){case"string":case"function":r!==void 0&&i.unshift(r),t.message=e;break;case"object":Object.assign(t,e);break;default:}typeof t.message=="function"&&(t.message=t.message());let s=typeof t.message;return qr(s==="string"||s==="object"),Object.assign(t,{args:i},t.opts)}var Wu=E(()=>{Kc()});var _r,Zo,ju=E(()=>{Wu();_r=()=>{},Zo=class{constructor({level:e=0}={}){this.userData={},this._onceCache=new Set,this._level=e}set level(e){this.setLevel(e)}get level(){return this.getLevel()}setLevel(e){return this._level=e,this}getLevel(){return this._level}warn(e,...r){return this._log("warn",0,e,r,{once:!0})}error(e,...r){return this._log("error",0,e,r)}log(e,r,...i){return this._log("log",e,r,i)}info(e,r,...i){return this._log("info",e,r,i)}once(e,r,...i){return this._log("once",e,r,i,{once:!0})}_log(e,r,i,s,o={}){let n=zu({logLevel:r,message:i,args:this._buildArgs(r,i,s),opts:o});return this._createLogFunction(e,n,o)}_buildArgs(e,r,i){return[e,r,...i]}_createLogFunction(e,r,i){if(!this._shouldLog(r.logLevel))return _r;let s=this._getOnceTag(i.tag??r.tag??r.message);if((i.once||r.once)&&s!==void 0){if(this._onceCache.has(s))return _r;this._onceCache.add(s)}return this._emit(e,r)}_shouldLog(e){return this.getLevel()>=qc(e)}_getOnceTag(e){if(e!==void 0)try{return typeof e=="string"?e:String(e)}catch{return}}}});function Fy(t){try{let e=window[t],r="__storage_test__";return e.setItem(r,r),e.removeItem(r),e}catch{return null}}var Ko,Hu=E(()=>{Ko=class{constructor(e,r,i="sessionStorage"){this.storage=Fy(i),this.id=e,this.config=r,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){if(Object.assign(this.config,e),this.storage){let r=JSON.stringify(this.config);this.storage.setItem(this.id,r)}}_loadConfiguration(){let e={};if(this.storage){let r=this.storage.getItem(this.id);e=r?JSON.parse(r):{}}return Object.assign(this.config,e),this}}});function $u(t){let e;return t<10?e=`${t.toFixed(2)}ms`:t<100?e=`${t.toFixed(1)}ms`:t<1e3?e=`${t.toFixed(0)}ms`:e=`${(t/1e3).toFixed(2)}s`,e}function Xu(t,e=8){let r=Math.max(e-t.length,0);return`${" ".repeat(r)}${t}`}var Yu=E(()=>{});function Zu(t){return typeof t!="string"?t:(t=t.toUpperCase(),qo[t]||qo.WHITE)}function Ku(t,e,r){return!he&&typeof t=="string"&&(e&&(t=`\x1B[${Zu(e)}m${t}\x1B[39m`),r&&(t=`\x1B[${Zu(r)+By}m${t}\x1B[49m`)),t}var qo,By,qu=E(()=>{jt();(function(t){t[t.BLACK=30]="BLACK",t[t.RED=31]="RED",t[t.GREEN=32]="GREEN",t[t.YELLOW=33]="YELLOW",t[t.BLUE=34]="BLUE",t[t.MAGENTA=35]="MAGENTA",t[t.CYAN=36]="CYAN",t[t.WHITE=37]="WHITE",t[t.BRIGHT_BLACK=90]="BRIGHT_BLACK",t[t.BRIGHT_RED=91]="BRIGHT_RED",t[t.BRIGHT_GREEN=92]="BRIGHT_GREEN",t[t.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",t[t.BRIGHT_BLUE=94]="BRIGHT_BLUE",t[t.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",t[t.BRIGHT_CYAN=96]="BRIGHT_CYAN",t[t.BRIGHT_WHITE=97]="BRIGHT_WHITE"})(qo||(qo={}));By=10});function Qu(t,e=["constructor"]){let r=Object.getPrototypeOf(t),i=Object.getOwnPropertyNames(r),s=t;for(let o of i){let n=s[o];typeof n=="function"&&(e.find(a=>o===a)||(s[o]=n.bind(t)))}}var Gu=E(()=>{});function Qr(){let t;if(he()&&$o.performance)t=$o?.performance?.now?.();else if("hrtime"in Xo){let e=Xo?.hrtime?.();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}var Ju=E(()=>{jt()});function Ly(t,e,r){if(typeof e=="string"){let i=r.time?Xu($u(r.total)):"";e=r.time?`${t}: ${i} ${e}`:`${t}: ${e}`,e=Ku(e,r.color,r.background)}return e}function Uy(t){for(let e in t)for(let r in t[e])return r||"untitled";return"empty"}var Gr,Qc,ue,Gc=E(()=>{jt();ju();Hu();Yu();qu();Gu();Kc();Ju();Gr={debug:he()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},Qc={enabled:!0,level:0},ue=class extends Zo{constructor({id:e}={id:""}){super({level:0}),this.VERSION=Zc,this._startTs=Qr(),this._deltaTs=Qr(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=e,this.userData={},this._storage=new Ko(`__probe-${this.id}__`,{[this.id]:Qc}),this.timeStamp(`${this.id} started`),Qu(this),Object.seal(this)}isEnabled(){return this._getConfiguration().enabled}getLevel(){return this._getConfiguration().level}getTotal(){return Number((Qr()-this._startTs).toPrecision(10))}getDelta(){return Number((Qr()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(e=!0){return this._updateConfiguration({enabled:e}),this}setLevel(e){return this._updateConfiguration({level:e}),this}get(e){return this._getConfiguration()[e]}set(e,r){this._updateConfiguration({[e]:r})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(e,r){if(!e)throw new Error(r||"Assertion failed")}warn(e,...r){return this._log("warn",0,e,r,{method:Gr.warn,once:!0})}error(e,...r){return this._log("error",0,e,r,{method:Gr.error})}deprecated(e,r){return this.warn(`\`${e}\` is deprecated and will be removed in a later version. Use \`${r}\` instead`)}removed(e,r){return this.error(`\`${e}\` has been removed. Use \`${r}\` instead`)}probe(e,r,...i){return this._log("log",e,r,i,{method:Gr.log,time:!0,once:!0})}log(e,r,...i){return this._log("log",e,r,i,{method:Gr.debug})}info(e,r,...i){return this._log("info",e,r,i,{method:console.info})}once(e,r,...i){return this._log("once",e,r,i,{method:Gr.debug||Gr.info,once:!0})}table(e,r,i){return r?this._log("table",e,r,i&&[i]||[],{method:console.table||_r,tag:Uy(r)}):_r}time(e,r){return this._log("time",e,r,[],{method:console.time?console.time:console.info})}timeEnd(e,r){return this._log("time",e,r,[],{method:console.timeEnd?console.timeEnd:console.info})}timeStamp(e,r){return this._log("time",e,r,[],{method:console.timeStamp||_r})}group(e,r,i={collapsed:!1}){let s=(i.collapsed?console.groupCollapsed:console.group)||console.info;return this._log("group",e,r,[],{method:s})}groupCollapsed(e,r,i={}){return this.group(e,r,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._log("groupEnd",e,"",[],{method:console.groupEnd||_r})}withGroup(e,r,i){this.group(e,r)();try{i()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&super._shouldLog(e)}_emit(e,r){let i=r.method;qr(i),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=Qr();let s=Ly(this.id,r.message,r);return i.bind(console,s,...r.args)}_getConfiguration(){return this._storage.config[this.id]||this._updateConfiguration(Qc),this._storage.config[this.id]}_updateConfiguration(e){let r=this._storage.config[this.id]||{...Qc};this._storage.setConfiguration({[this.id]:{...r,...e}})}};ue.VERSION=Zc});var ed=E(()=>{globalThis.probe={}});var Iv,ji=E(()=>{Gc();Gc();ed();Iv=new ue({id:"@probe.gl/log"})});var b,St=E(()=>{ji();b=new ue({id:"luma.gl"})});function Ht(t="id"){Jc[t]=Jc[t]||1;let e=Jc[t]++;return`${t}-${e}`}var Jc,Hi=E(()=>{Jc={}});function Hy(t,e){let r={...e};for(let i in t)t[i]!==void 0&&(r[i]=t[i]);return r}function nd(t,e){let r=t.stats,i=!1;for(let c of e)r[c]||(t.get(c),i=!0);let s=Object.keys(r).length,o=sd.get(t);if(!i&&o?.orderedStatNames===e&&o.statCount===s)return;let n={},a=od.get(e);a||(a=new Set(e),od.set(e,a));for(let c of e)r[c]&&(n[c]=r[c]);for(let[c,l]of Object.entries(r))a.has(c)||(n[c]=l);for(let c of Object.keys(r))delete r[c];Object.assign(r,n),sd.set(t,{orderedStatNames:e,statCount:s})}function ad(t){return t.type==="webgl"?jy:Wy}function $i(t){let e=t.userData[ky];return e?.enabled?e:null}function $t(){return globalThis.performance?.now?.()??Date.now()}function $y(t,e){let r=$i(t);if(!(!r||!r.activeDefaultFramebufferAcquireDepth))switch(r.transientCanvasResourceCreates=(r.transientCanvasResourceCreates||0)+1,e){case"Texture":r.transientCanvasTextureCreates=(r.transientCanvasTextureCreates||0)+1;break;case"TextureView":r.transientCanvasTextureViewCreates=(r.transientCanvasTextureViewCreates||0)+1;break;case"Sampler":r.transientCanvasSamplerCreates=(r.transientCanvasSamplerCreates||0)+1;break;case"Framebuffer":r.transientCanvasFramebufferCreates=(r.transientCanvasFramebufferCreates||0)+1;break;default:break}}function Xy(t){let e=Object.getPrototypeOf(t);for(;e;){let r=Object.getPrototypeOf(e);if(!r||r===N.prototype)return Yy(e)||t[Symbol.toStringTag]||t.constructor.name;e=r}return t[Symbol.toStringTag]||t.constructor.name}function Yy(t){let e=Object.getOwnPropertyDescriptor(t,Symbol.toStringTag);return typeof e?.get=="function"?e.get.call(t):typeof e?.value=="string"?e.value:null}var ky,td,rd,id,Vy,zy,Wy,jy,sd,od,N,ae=E(()=>{Hi();ky="cpu-hotspot-profiler",td="GPU Resource Counts",rd="Resource Counts",id="GPU Time and Memory",Vy=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],zy=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","SharedRenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],Wy=Vy.flatMap(t=>[`${t} Created`,`${t} Active`]),jy=zy.flatMap(t=>[`${t} Created`,`${t} Active`]),sd=new WeakMap,od=new WeakMap,N=class{toString(){return`${this[Symbol.toStringTag]||this.constructor.name}:"${this.id}"`}id;props;userData={};_device;destroyed=!1;allocatedBytes=0;allocatedBytesName=null;_attachedResources=new Set;constructor(e,r,i){if(!e)throw new Error("no device");this._device=e,this.props=Hy(r,i);let s=this.props.id!=="undefined"?this.props.id:Ht(this[Symbol.toStringTag]);this.props.id=s,this.id=s,this.userData=this.props.userData||{},this.addStats()}destroy(){this.destroyed||this.destroyResource()}delete(){return this.destroy(),this}getProps(){return this.props}attachResource(e){this._attachedResources.add(e)}detachResource(e){this._attachedResources.delete(e)}destroyAttachedResource(e){this._attachedResources.delete(e)&&e.destroy()}destroyAttachedResources(){for(let e of this._attachedResources)e.destroy();this._attachedResources=new Set}destroyResource(){this.destroyed||(this.destroyAttachedResources(),this.removeStats(),this.destroyed=!0)}removeStats(){let e=$i(this._device),r=e?$t():0,i=[this._device.statsManager.getStats(td),this._device.statsManager.getStats(rd)],s=ad(this._device);for(let n of i)nd(n,s);let o=this.getStatsName();for(let n of i)n.get("Resources Active").decrementCount(),n.get(`${o}s Active`).decrementCount();e&&(e.statsBookkeepingCalls=(e.statsBookkeepingCalls||0)+1,e.statsBookkeepingTimeMs=(e.statsBookkeepingTimeMs||0)+($t()-r))}trackAllocatedMemory(e,r=this.getStatsName()){let i=$i(this._device),s=i?$t():0,o=this._device.statsManager.getStats(id);this.allocatedBytes>0&&this.allocatedBytesName&&(o.get("GPU Memory").subtractCount(this.allocatedBytes),o.get(`${this.allocatedBytesName} Memory`).subtractCount(this.allocatedBytes)),o.get("GPU Memory").addCount(e),o.get(`${r} Memory`).addCount(e),i&&(i.statsBookkeepingCalls=(i.statsBookkeepingCalls||0)+1,i.statsBookkeepingTimeMs=(i.statsBookkeepingTimeMs||0)+($t()-s)),this.allocatedBytes=e,this.allocatedBytesName=r}trackReferencedMemory(e,r=this.getStatsName()){this.trackAllocatedMemory(e,`Referenced ${r}`)}trackDeallocatedMemory(e=this.getStatsName()){if(this.allocatedBytes===0){this.allocatedBytesName=null;return}let r=$i(this._device),i=r?$t():0,s=this._device.statsManager.getStats(id);s.get("GPU Memory").subtractCount(this.allocatedBytes),s.get(`${this.allocatedBytesName||e} Memory`).subtractCount(this.allocatedBytes),r&&(r.statsBookkeepingCalls=(r.statsBookkeepingCalls||0)+1,r.statsBookkeepingTimeMs=(r.statsBookkeepingTimeMs||0)+($t()-i)),this.allocatedBytes=0,this.allocatedBytesName=null}trackDeallocatedReferencedMemory(e=this.getStatsName()){this.trackDeallocatedMemory(`Referenced ${e}`)}addStats(){let e=this.getStatsName(),r=$i(this._device),i=r?$t():0,s=[this._device.statsManager.getStats(td),this._device.statsManager.getStats(rd)],o=ad(this._device);for(let n of s)nd(n,o);for(let n of s)n.get("Resources Created").incrementCount(),n.get("Resources Active").incrementCount(),n.get(`${e}s Created`).incrementCount(),n.get(`${e}s Active`).incrementCount();r&&(r.statsBookkeepingCalls=(r.statsBookkeepingCalls||0)+1,r.statsBookkeepingTimeMs=(r.statsBookkeepingTimeMs||0)+($t()-i)),$y(this._device,e)}getStatsName(){return Xy(this)}};P(N,"defaultProps",{id:"undefined",handle:void 0,userData:void 0})});var Xi,D,Qo=E(()=>{ae();Xi=class extends N{get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(e,r){let i={...r};(r.usage||0)&Xi.INDEX&&!r.indexType&&(r.data instanceof Uint32Array?i.indexType="uint32":r.data instanceof Uint16Array?i.indexType="uint16":r.data instanceof Uint8Array&&(i.indexType="uint8")),delete i.data,super(e,i,Xi.defaultProps),this.usage=i.usage||0,this.indexType=i.indexType,this.updateTimestamp=e.incrementTimestamp()}clone(e){return this.device.createBuffer({...this.props,...e})}debugData=new ArrayBuffer(0);_setDebugData(e,r,i){let s=null,o;ArrayBuffer.isView(e)?(s=e,o=e.buffer):o=e;let n=Math.min(e?e.byteLength:i,Xi.DEBUG_DATA_MAX_LENGTH);if(o===null)this.debugData=new ArrayBuffer(n);else{let a=Math.min(s?.byteOffset||0,o.byteLength),c=Math.max(0,o.byteLength-a),l=Math.min(n,c);this.debugData=new Uint8Array(o,a,l).slice().buffer}}},D=Xi;P(D,"INDEX",16),P(D,"VERTEX",32),P(D,"UNIFORM",64),P(D,"STORAGE",128),P(D,"INDIRECT",256),P(D,"QUERY_RESOLVE",512),P(D,"MAP_READ",1),P(D,"MAP_WRITE",2),P(D,"COPY_SRC",4),P(D,"COPY_DST",8),P(D,"DEBUG_DATA_MAX_LENGTH",32),P(D,"defaultProps",{...N.defaultProps,usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",onMapped:void 0})});function Yi(t){let e=t.includes("norm"),r=!e&&!t.startsWith("float"),i=t.startsWith("s"),s=tl[t],[o,n,a]=s||["uint8 ","i32",1];return{signedType:o,primitiveType:n,byteLength:a,normalized:e,integer:r,signed:i}}function el(t){let e=t;switch(e){case"uint8":return"unorm8";case"sint8":return"snorm8";case"uint16":return"unorm16";case"sint16":return"snorm16";default:return e}}function Go(t,e){switch(e){case 1:return t;case 2:return t+t%2;default:return t+(4-t%4)%4}}function yr(t){let e=ArrayBuffer.isView(t)?t.constructor:t;if(e===Uint8ClampedArray)return"uint8";let r=Object.values(tl).find(i=>e===i[4]);if(!r)throw new Error(e.name);return r[0]}function Et(t){let[,,,,e]=tl[t];return e}var tl,Zi=E(()=>{tl={uint8:["uint8","u32",1,!1,Uint8Array],sint8:["sint8","i32",1,!1,Int8Array],unorm8:["uint8","f32",1,!0,Uint8Array],snorm8:["sint8","f32",1,!0,Int8Array],uint16:["uint16","u32",2,!1,Uint16Array],sint16:["sint16","i32",2,!1,Int16Array],unorm16:["uint16","u32",2,!0,Uint16Array],snorm16:["sint16","i32",2,!0,Int16Array],float16:["float16","f16",2,!1,Uint16Array],float32:["float32","f32",4,!1,Float32Array],uint32:["uint32","u32",4,!1,Uint32Array],sint32:["sint32","i32",4,!1,Int32Array]}});function Jr(t){let e;t.endsWith("-webgl")&&(t.replace("-webgl",""),e=!0);let[r,i]=t.split("x"),s=r,o=i?parseInt(i):1,n=Yi(s),a={type:s,components:o,byteLength:n.byteLength*o,integer:n.integer,signed:n.signed,normalized:n.normalized};return e&&(a.webglOnly=!0),a}function cd(t,e,r){let i=r?el(t):t;switch(i){case"unorm8":return e===1?"unorm8":e===3?"unorm8x3-webgl":`${i}x${e}`;case"snorm8":case"uint8":case"sint8":case"uint16":case"sint16":case"unorm16":case"snorm16":case"float16":if(e===1||e===3)throw new Error(`size: ${e}`);return`${i}x${e}`;default:return e===1?i:`${i}x${e}`}}function rl(t,e,r){if(!e||e>4)throw new Error(`size ${e}`);let i=e,s=yr(t);return cd(s,i,r)}function ld(t){let e;switch(t.primitiveType){case"f32":e="float32";break;case"i32":e="sint32";break;case"u32":e="uint32";break;case"f16":return t.components<=2?"float16x2":"float16x4"}return t.components===1?e:`${e}x${t.components}`}var Jo=E(()=>{Zi()});function cl(t){let e=ud[t];if(!e)throw new Error(`Unsupported texture format ${t}`);return e}function hd(){return ud}var le,X,tt,Zy,en,il,tn,sl,Ky,ol,Xt,nl,al,rn,fd,qy,Qy,ud,ll=E(()=>{le="texture-compression-bc",X="texture-compression-astc",tt="texture-compression-etc2",Zy="texture-compression-etc1-webgl",en="texture-compression-pvrtc-webgl",il="texture-compression-atc-webgl",tn="float32-renderable-webgl",sl="float16-renderable-webgl",Ky="rgb9e5ufloat-renderable-webgl",ol="snorm8-renderable-webgl",Xt="norm16-webgl",nl="norm16-renderable-webgl",al="snorm16-renderable-webgl",rn="float32-filterable",fd="float16-filterable-webgl";qy={r8unorm:{},rg8unorm:{},"rgb8unorm-webgl":{},rgba8unorm:{},"rgba8unorm-srgb":{},r8snorm:{render:ol},rg8snorm:{render:ol},"rgb8snorm-webgl":{},rgba8snorm:{render:ol},r8uint:{},rg8uint:{},rgba8uint:{},r8sint:{},rg8sint:{},rgba8sint:{},bgra8unorm:{},"bgra8unorm-srgb":{},r16unorm:{f:Xt,render:nl},rg16unorm:{f:Xt,render:nl},"rgb16unorm-webgl":{f:Xt,render:!1},rgba16unorm:{f:Xt,render:nl},r16snorm:{f:Xt,render:al},rg16snorm:{f:Xt,render:al},"rgb16snorm-webgl":{f:Xt,render:!1},rgba16snorm:{f:Xt,render:al},r16uint:{},rg16uint:{},rgba16uint:{},r16sint:{},rg16sint:{},rgba16sint:{},r16float:{render:sl,filter:"float16-filterable-webgl"},rg16float:{render:sl,filter:fd},rgba16float:{render:sl,filter:fd},r32uint:{},rg32uint:{},rgba32uint:{},r32sint:{},rg32sint:{},rgba32sint:{},r32float:{render:tn,filter:rn},rg32float:{render:!1,filter:rn},"rgb32float-webgl":{render:tn,filter:rn},rgba32float:{render:tn,filter:rn},"rgba4unorm-webgl":{channels:"rgba",bitsPerChannel:[4,4,4,4],packed:!0},"rgb565unorm-webgl":{channels:"rgb",bitsPerChannel:[5,6,5,0],packed:!0},"rgb5a1unorm-webgl":{channels:"rgba",bitsPerChannel:[5,5,5,1],packed:!0},rgb9e5ufloat:{channels:"rgb",packed:!0,render:Ky},rg11b10ufloat:{channels:"rgb",bitsPerChannel:[11,11,10,0],packed:!0,p:1,render:tn},rgb10a2unorm:{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1},rgb10a2uint:{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1},stencil8:{attachment:"stencil",bitsPerChannel:[8,0,0,0],dataType:"uint8"},depth16unorm:{attachment:"depth",bitsPerChannel:[16,0,0,0],dataType:"uint16"},depth24plus:{attachment:"depth",bitsPerChannel:[24,0,0,0],dataType:"uint32"},depth32float:{attachment:"depth",bitsPerChannel:[32,0,0,0],dataType:"float32"},"depth24plus-stencil8":{attachment:"depth-stencil",bitsPerChannel:[24,8,0,0],packed:!0},"depth32float-stencil8":{attachment:"depth-stencil",bitsPerChannel:[32,8,0,0],packed:!0}},Qy={"bc1-rgb-unorm-webgl":{f:le},"bc1-rgb-unorm-srgb-webgl":{f:le},"bc1-rgba-unorm":{f:le},"bc1-rgba-unorm-srgb":{f:le},"bc2-rgba-unorm":{f:le},"bc2-rgba-unorm-srgb":{f:le},"bc3-rgba-unorm":{f:le},"bc3-rgba-unorm-srgb":{f:le},"bc4-r-unorm":{f:le},"bc4-r-snorm":{f:le},"bc5-rg-unorm":{f:le},"bc5-rg-snorm":{f:le},"bc6h-rgb-ufloat":{f:le},"bc6h-rgb-float":{f:le},"bc7-rgba-unorm":{f:le},"bc7-rgba-unorm-srgb":{f:le},"etc2-rgb8unorm":{f:tt},"etc2-rgb8unorm-srgb":{f:tt},"etc2-rgb8a1unorm":{f:tt},"etc2-rgb8a1unorm-srgb":{f:tt},"etc2-rgba8unorm":{f:tt},"etc2-rgba8unorm-srgb":{f:tt},"eac-r11unorm":{f:tt},"eac-r11snorm":{f:tt},"eac-rg11unorm":{f:tt},"eac-rg11snorm":{f:tt},"astc-4x4-unorm":{f:X},"astc-4x4-unorm-srgb":{f:X},"astc-5x4-unorm":{f:X},"astc-5x4-unorm-srgb":{f:X},"astc-5x5-unorm":{f:X},"astc-5x5-unorm-srgb":{f:X},"astc-6x5-unorm":{f:X},"astc-6x5-unorm-srgb":{f:X},"astc-6x6-unorm":{f:X},"astc-6x6-unorm-srgb":{f:X},"astc-8x5-unorm":{f:X},"astc-8x5-unorm-srgb":{f:X},"astc-8x6-unorm":{f:X},"astc-8x6-unorm-srgb":{f:X},"astc-8x8-unorm":{f:X},"astc-8x8-unorm-srgb":{f:X},"astc-10x5-unorm":{f:X},"astc-10x5-unorm-srgb":{f:X},"astc-10x6-unorm":{f:X},"astc-10x6-unorm-srgb":{f:X},"astc-10x8-unorm":{f:X},"astc-10x8-unorm-srgb":{f:X},"astc-10x10-unorm":{f:X},"astc-10x10-unorm-srgb":{f:X},"astc-12x10-unorm":{f:X},"astc-12x10-unorm-srgb":{f:X},"astc-12x12-unorm":{f:X},"astc-12x12-unorm-srgb":{f:X},"pvrtc-rgb4unorm-webgl":{f:en},"pvrtc-rgba4unorm-webgl":{f:en},"pvrtc-rgb2unorm-webgl":{f:en},"pvrtc-rgba2unorm-webgl":{f:en},"etc1-rbg-unorm-webgl":{f:Zy},"atc-rgb-unorm-webgl":{f:il},"atc-rgba-unorm-webgl":{f:il},"atc-rgbai-unorm-webgl":{f:il}},ud={...qy,...Qy}});function rT({format:t,width:e,height:r,depth:i,byteAlignment:s}){let o=de.getInfo(t),{bytesPerPixel:n,bytesPerBlock:a=n,blockWidth:c=1,blockHeight:l=1,compressed:f=!1}=o,h=f?Math.ceil(e/c):e,u=f?Math.ceil(r/l):r,d=h*a,p=Math.ceil(d/s)*s,g=u,m=p*g*i;return{bytesPerPixel:n,bytesPerRow:p,rowsPerImage:g,depthOrArrayLayers:i,bytesPerImage:p*g,byteLength:m}}function iT(t){let e=cl(t),r={format:t,create:e.f??!0,render:e.render??!0,filter:e.filter??!0,blend:e.blend??!0,store:e.store??!0},i=dd(t),s=t.startsWith("depth")||t.startsWith("stencil"),o=i?.signed,n=i?.integer,a=i?.webgl,c=Boolean(i?.compressed);return r.render&&=!s&&!c,r.filter&&=!s&&!o&&!n&&!a,r}function dd(t){let e=sT(t);if(de.isCompressed(t)){e.channels="rgb",e.components=3,e.bytesPerPixel=1,e.srgb=!1,e.compressed=!0,e.bytesPerBlock=nT(t);let i=oT(t);i&&(e.blockWidth=i.blockWidth,e.blockHeight=i.blockHeight)}let r=Gy.exec(t);if(r){let[,i,s,o,n,a]=r,c=`${o}${s}`,l=Yi(c),f=l.byteLength*8,h=i?.length??1,u=[f,h>=2?f:0,h>=3?f:0,h>=4?f:0];e={format:t,attachment:e.attachment,dataType:l.signedType,components:h,channels:i,integer:l.integer,signed:l.signed,normalized:l.normalized,bitsPerChannel:u,bytesPerPixel:l.byteLength*h,packed:e.packed,srgb:e.srgb},a==="-webgl"&&(e.webgl=!0),n==="-srgb"&&(e.srgb=!0)}return t.endsWith("-webgl")&&(e.webgl=!0),t.endsWith("-srgb")&&(e.srgb=!0),e}function sT(t){let e=cl(t),r=e.bytesPerPixel||1,i=e.bitsPerChannel||[8,8,8,8];return delete e.bitsPerChannel,delete e.bytesPerPixel,delete e.f,delete e.render,delete e.filter,delete e.blend,delete e.store,{...e,format:t,attachment:e.attachment||"color",channels:e.channels||"r",components:e.components||e.channels?.length||1,bytesPerPixel:r,bitsPerChannel:i,dataType:e.dataType||"uint8",srgb:e.srgb??!1,packed:e.packed??!1,webgl:e.webgl??!1,integer:e.integer??!1,signed:e.signed??!1,normalized:e.normalized??!1,compressed:e.compressed??!1}}function oT(t){let r=/.*-(\d+)x(\d+)-.*/.exec(t);if(r){let[,i,s]=r;return{blockWidth:Number(i),blockHeight:Number(s)}}return t.startsWith("bc")||t.startsWith("etc1")||t.startsWith("etc2")||t.startsWith("eac")||t.startsWith("atc")?{blockWidth:4,blockHeight:4}:t.startsWith("pvrtc-rgb4")||t.startsWith("pvrtc-rgba4")?{blockWidth:4,blockHeight:4}:t.startsWith("pvrtc-rgb2")||t.startsWith("pvrtc-rgba2")?{blockWidth:8,blockHeight:4}:null}function nT(t){return t.startsWith("bc1")||t.startsWith("bc4")||t.startsWith("etc1")||t.startsWith("etc2-rgb8")||t.startsWith("etc2-rgb8a1")||t.startsWith("eac-r11")||t==="atc-rgb-unorm-webgl"?8:t.startsWith("bc2")||t.startsWith("bc3")||t.startsWith("bc5")||t.startsWith("bc6h")||t.startsWith("bc7")||t.startsWith("etc2-rgba8")||t.startsWith("eac-rg11")||t.startsWith("astc")||t==="atc-rgba-unorm-webgl"||t==="atc-rgbai-unorm-webgl"?16:t.startsWith("pvrtc")?8:16}var Gy,Jy,eT,tT,sn,de,on=E(()=>{Zi();ll();Gy=/^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/,Jy=["rgb","rgba","bgra"],eT=["depth","stencil"],tT=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],sn=class{isColor(e){return Jy.some(r=>e.startsWith(r))}isDepthStencil(e){return eT.some(r=>e.startsWith(r))}isCompressed(e){return tT.some(r=>e.startsWith(r))}getInfo(e){return dd(e)}getCapabilities(e){return iT(e)}computeMemoryLayout(e){return rT(e)}},de=new sn});function ei(t){return typeof ImageData<"u"&&t instanceof ImageData||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement||typeof VideoFrame<"u"&&t instanceof VideoFrame||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas}function Ki(t){if(typeof ImageData<"u"&&t instanceof ImageData||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas)return{width:t.width,height:t.height};if(typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement)return{width:t.naturalWidth,height:t.naturalHeight};if(typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement)return{width:t.videoWidth,height:t.videoHeight};if(typeof VideoFrame<"u"&&t instanceof VideoFrame)return{width:t.displayWidth,height:t.displayHeight};throw new Error("Unknown image type")}var fl=E(()=>{});function aT(t,e){return t!=null?Boolean(t):e!==void 0?e!=="production":!1}function cT(){return aT(b.get("debug"),lT())}function lT(){let t=globalThis.process;if(t?.env)return t.env.NODE_ENV}var qi,Qi,hl,be,ul=E(()=>{jc();St();Hi();Qo();Jo();on();ll();fl();qi=class{},Qi=class{features;disabledFeatures;constructor(e=[],r){this.features=new Set(e),this.disabledFeatures=r||{}}*[Symbol.iterator](){yield*this.features}has(e){return!this.disabledFeatures?.[e]&&this.features.has(e)}},hl=class{get[Symbol.toStringTag](){return"Device"}toString(){return`Device(${this.id})`}id;props;userData={};statsManager=Ho;timestamp=0;_reused=!1;_moduleData={};_textureCaps={};_debugGPUTimeQuery=null;constructor(e){this.props={...hl.defaultProps,...e},this.id=this.props.id||Ht(this[Symbol.toStringTag].toLowerCase())}getVertexFormatInfo(e){return Jr(e)}isVertexFormatSupported(e){return!0}getTextureFormatInfo(e){return de.getInfo(e)}getTextureFormatCapabilities(e){let r=this._textureCaps[e];if(!r){let i=this._getDeviceTextureFormatCapabilities(e);r=this._getDeviceSpecificTextureFormatCapabilities(i),this._textureCaps[e]=r}return r}getMipLevelCount(e,r,i=1){let s=Math.max(e,r,i);return 1+Math.floor(Math.log2(s))}isExternalImage(e){return ei(e)}getExternalImageSize(e){return Ki(e)}isTextureFormatSupported(e){return this.getTextureFormatCapabilities(e).create}isTextureFormatFilterable(e){return this.getTextureFormatCapabilities(e).filter}isTextureFormatRenderable(e){return this.getTextureFormatCapabilities(e).render}isTextureFormatCompressed(e){return de.isCompressed(e)}getSupportedCompressedTextureFormats(){let e=[];for(let r of Object.keys(hd()))this.isTextureFormatCompressed(r)&&this.isTextureFormatSupported(r)&&e.push(r);return e}pushDebugGroup(e){this.commandEncoder.pushDebugGroup(e)}popDebugGroup(){this.commandEncoder?.popDebugGroup()}insertDebugMarker(e){this.commandEncoder?.insertDebugMarker(e)}loseDevice(){return!1}incrementTimestamp(){return this.timestamp++}reportError(e,r,...i){return this.props.onError(e,r)?()=>{}:b.error(this.type==="webgl"?"%cWebGL":"%cWebGPU","color: white; background: red; padding: 2px 6px; border-radius: 3px;",e.message,r,...i)}debug(){if(this.props.debug)debugger;else{let e=`'Type luma.log.set({debug: true}) in console to enable debug breakpoints',
8
+ or create a device with the 'debug: true' prop.`;b.once(0,e)()}}getDefaultCanvasContext(){if(!this.canvasContext)throw new Error("Device has no default CanvasContext. See props.createCanvasContext");return this.canvasContext}createFence(){throw new Error("createFence() not implemented")}beginRenderPass(e){return this.commandEncoder.beginRenderPass(e)}beginComputePass(e){return this.commandEncoder.beginComputePass(e)}generateMipmapsWebGPU(e){throw new Error("not implemented")}_createSharedRenderPipelineWebGL(e){throw new Error("_createSharedRenderPipelineWebGL() not implemented")}_supportsDebugGPUTime(){return this.features.has("timestamp-query")&&Boolean(this.props.debug||this.props.debugGPUTime)}_enableDebugGPUTime(e=256){if(!this._supportsDebugGPUTime())return null;if(this._debugGPUTimeQuery)return this._debugGPUTimeQuery;try{this._debugGPUTimeQuery=this.createQuerySet({type:"timestamp",count:e}),this.commandEncoder=this.createCommandEncoder({id:this.commandEncoder.props.id,timeProfilingQuerySet:this._debugGPUTimeQuery})}catch{this._debugGPUTimeQuery=null}return this._debugGPUTimeQuery}_disableDebugGPUTime(){this._debugGPUTimeQuery&&(this.commandEncoder.getTimeProfilingQuerySet()===this._debugGPUTimeQuery&&(this.commandEncoder=this.createCommandEncoder({id:this.commandEncoder.props.id})),this._debugGPUTimeQuery.destroy(),this._debugGPUTimeQuery=null)}_isDebugGPUTimeEnabled(){return this._debugGPUTimeQuery!==null}getCanvasContext(){return this.getDefaultCanvasContext()}readPixelsToArrayWebGL(e,r){throw new Error("not implemented")}readPixelsToBufferWebGL(e,r){throw new Error("not implemented")}setParametersWebGL(e){throw new Error("not implemented")}getParametersWebGL(e){throw new Error("not implemented")}withParametersWebGL(e,r){throw new Error("not implemented")}clearWebGL(e){throw new Error("not implemented")}resetWebGL(){throw new Error("not implemented")}getModuleData(e){return this._moduleData[e]||={},this._moduleData[e]}static _getCanvasContextProps(e){return e.createCanvasContext===!0?{}:e.createCanvasContext}_getDeviceTextureFormatCapabilities(e){let r=de.getCapabilities(e),i=o=>(typeof o=="string"?this.features.has(o):o)??!0,s=i(r.create);return{format:e,create:s,render:s&&i(r.render),filter:s&&i(r.filter),blend:s&&i(r.blend),store:s&&i(r.store)}}_normalizeBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});let r={...e};if((e.usage||0)&D.INDEX&&(e.indexType||(e.data instanceof Uint32Array?r.indexType="uint32":e.data instanceof Uint16Array?r.indexType="uint16":e.data instanceof Uint8Array&&(r.data=new Uint16Array(e.data),r.indexType="uint16")),!r.indexType))throw new Error("indices buffer content must be of type uint16 or uint32");return r}},be=hl;P(be,"defaultProps",{id:null,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,createCanvasContext:void 0,webgl:{},onError:(e,r)=>{},onResize:(e,r)=>{let[i,s]=e.getDevicePixelSize();b.log(1,`${e} resized => ${i}x${s}px`)()},onPositionChange:(e,r)=>{let[i,s]=e.getPosition();b.log(1,`${e} repositioned => ${i},${s}`)()},onVisibilityChange:e=>b.log(1,`${e} Visibility changed ${e.isVisible}`)(),onDevicePixelRatioChange:(e,r)=>b.log(1,`${e} DPR changed ${r.oldRatio} => ${e.devicePixelRatio}`)(),debug:cT(),debugGPUTime:!1,debugShaders:b.get("debug-shaders")||void 0,debugFramebuffers:Boolean(b.get("debug-framebuffers")),debugFactories:Boolean(b.get("debug-factories")),debugWebGL:Boolean(b.get("debug-webgl")),debugSpectorJS:void 0,debugSpectorJSUrl:void 0,_reuseDevices:!1,_requestMaxLimits:!0,_cacheShaders:!0,_destroyShaders:!1,_cachePipelines:!0,_sharePipelines:!0,_destroyPipelines:!1,_initializeFeatures:!0,_disabledFeatures:{"compilation-status-async-webgl":!0},_handle:void 0})});var fT,pd,an,nn,Yt,gd=E(()=>{ul();jc();St();fT="set luma.log.level=1 (or higher) to trace rendering",pd="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.",an=class{stats=Ho;log=b;VERSION="9.3.0-alpha.6";spector;preregisteredAdapters=new Map;constructor(){if(globalThis.luma){if(globalThis.luma.VERSION!==this.VERSION)throw b.error(`Found luma.gl ${globalThis.luma.VERSION} while initialzing ${this.VERSION}`)(),b.error("'yarn why @luma.gl/core' can help identify the source of the conflict")(),new Error("luma.gl - multiple versions detected: see console log");b.error("This version of luma.gl has already been initialized")()}b.log(1,`${this.VERSION} - ${fT}`)(),globalThis.luma=this}async createDevice(e={}){let r={...an.defaultProps,...e},i=this.selectAdapter(r.type,r.adapters);if(!i)throw new Error(pd);return r.waitForPageLoad&&await i.pageLoaded,await i.create(r)}async attachDevice(e,r){let i=this._getTypeFromHandle(e,r.adapters),s=i&&this.selectAdapter(i,r.adapters);if(!s)throw new Error(pd);return await s?.attach?.(e,r)}registerAdapters(e){for(let r of e)this.preregisteredAdapters.set(r.type,r)}getSupportedAdapters(e=[]){let r=this._getAdapterMap(e);return Array.from(r).map(([,i])=>i).filter(i=>i.isSupported?.()).map(i=>i.type)}getBestAvailableAdapterType(e=[]){let r=["webgpu","webgl","null"],i=this._getAdapterMap(e);for(let s of r)if(i.get(s)?.isSupported?.())return s;return null}selectAdapter(e,r=[]){let i=e;e==="best-available"&&(i=this.getBestAvailableAdapterType(r));let s=this._getAdapterMap(r);return i&&s.get(i)||null}enforceWebGL2(e=!0,r=[]){let s=this._getAdapterMap(r).get("webgl");s||b.warn("enforceWebGL2: webgl adapter not found")(),s?.enforceWebGL2?.(e)}setDefaultDeviceProps(e){Object.assign(an.defaultProps,e)}_getAdapterMap(e=[]){let r=new Map(this.preregisteredAdapters);for(let i of e)r.set(i.type,i);return r}_getTypeFromHandle(e,r=[]){return e instanceof WebGL2RenderingContext?"webgl":typeof GPUDevice<"u"&&e instanceof GPUDevice||e?.queue?"webgpu":e===null?"null":(e instanceof WebGLRenderingContext?b.warn("WebGL1 is not supported",e)():b.warn("Unknown handle type",e)(),null)}},nn=an;P(nn,"defaultProps",{...be.defaultProps,type:"best-available",adapters:void 0,waitForPageLoad:!0});Yt=new nn});function dT(){return cn||(uT()||typeof window>"u"?cn=Promise.resolve():cn=new Promise(t=>window.addEventListener("load",()=>t()))),cn}var Gi,hT,uT,cn,md=E(()=>{jt();Gi=class{get pageLoaded(){return dT()}},hT=he()&&typeof document<"u",uT=()=>hT&&document.readyState==="complete",cn=null});var ln,_d=E(()=>{ln=class{props;_resizeObserver;_intersectionObserver;_observeDevicePixelRatioTimeout=null;_observeDevicePixelRatioMediaQuery=null;_handleDevicePixelRatioChange=()=>this._refreshDevicePixelRatio();_trackPositionInterval=null;_started=!1;get started(){return this._started}constructor(e){this.props=e}start(){if(!(this._started||!this.props.canvas)){this._started=!0,this._intersectionObserver||=new IntersectionObserver(e=>this.props.onIntersection(e)),this._resizeObserver||=new ResizeObserver(e=>this.props.onResize(e)),this._intersectionObserver.observe(this.props.canvas);try{this._resizeObserver.observe(this.props.canvas,{box:"device-pixel-content-box"})}catch{this._resizeObserver.observe(this.props.canvas,{box:"content-box"})}this._observeDevicePixelRatioTimeout=setTimeout(()=>this._refreshDevicePixelRatio(),0),this.props.trackPosition&&this._trackPosition()}}stop(){this._started&&(this._started=!1,this._observeDevicePixelRatioTimeout&&(clearTimeout(this._observeDevicePixelRatioTimeout),this._observeDevicePixelRatioTimeout=null),this._observeDevicePixelRatioMediaQuery&&(this._observeDevicePixelRatioMediaQuery.removeEventListener("change",this._handleDevicePixelRatioChange),this._observeDevicePixelRatioMediaQuery=null),this._trackPositionInterval&&(clearInterval(this._trackPositionInterval),this._trackPositionInterval=null),this._resizeObserver?.disconnect(),this._intersectionObserver?.disconnect())}_refreshDevicePixelRatio(){this._started&&(this.props.onDevicePixelRatioChange(),this._observeDevicePixelRatioMediaQuery?.removeEventListener("change",this._handleDevicePixelRatioChange),this._observeDevicePixelRatioMediaQuery=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),this._observeDevicePixelRatioMediaQuery.addEventListener("change",this._handleDevicePixelRatioChange,{once:!0}))}_trackPosition(e=100){this._trackPositionInterval||(this._trackPositionInterval=setInterval(()=>{this._started?this.props.onPositionChange():this._trackPositionInterval&&(clearInterval(this._trackPositionInterval),this._trackPositionInterval=null)},e))}}});function yd(){let t,e;return{promise:new Promise((i,s)=>{t=i,e=s}),resolve:t,reject:e}}var Td=E(()=>{});function dl(t,e){if(!t){let r=new Error(e??"luma.gl assertion failed.");throw Error.captureStackTrace?.(r,dl),r}}function Tr(t,e){return dl(t,e),t}var pl=E(()=>{});function pT(t){if(typeof t=="string"){let e=document.getElementById(t);if(!e)throw new Error(`${t} is not an HTML element`);return e}return t||document.body}function gT(t){let e=document.getElementById(t);if(!wt.isHTMLCanvas(e))throw new Error("Object is not a canvas element");return e}function mT(t){let{width:e,height:r}=t,i=document.createElement("canvas");i.id=Ht("lumagl-auto-created-canvas"),i.width=e||1,i.height=r||1,i.style.width=Number.isFinite(e)?`${e}px`:"100%",i.style.height=Number.isFinite(r)?`${r}px`:"100%",t?.visible||(i.style.visibility="hidden");let s=pT(t?.container||null);return s.insertBefore(i,s.firstChild),i}function _T(t,e,r,i,s){let o=t,n=bd(o[0],e,r),a=xd(o[1],e,i,s),c=bd(o[0]+1,e,r),l=c===r-1?c:c-1;c=xd(o[1]+1,e,i,s);let f;return s?(c=c===0?c:c+1,f=a,a=c):f=c===i-1?c:c-1,{x:n,y:a,width:Math.max(l-n+1,1),height:Math.max(f-a+1,1)}}function bd(t,e,r){return Math.min(Math.round(t*e),r-1)}function xd(t,e,r,i){return i?Math.max(0,r-1-Math.round(t*e)):Math.min(Math.round(t*e),r-1)}var Ji,wt,gl=E(()=>{jt();_d();Hi();Td();pl();Ji=class{static isHTMLCanvas(e){return typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement}static isOffscreenCanvas(e){return typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas}id;props;canvas;htmlCanvas;offscreenCanvas;type;initialized;isInitialized=!1;isVisible=!0;cssWidth;cssHeight;devicePixelRatio;devicePixelWidth;devicePixelHeight;drawingBufferWidth;drawingBufferHeight;_initializedResolvers=yd();_canvasObserver;_position=[0,0];destroyed=!1;_needsDrawingBufferResize=!0;toString(){return`${this[Symbol.toStringTag]}(${this.id})`}constructor(e){this.props={...Ji.defaultProps,...e},e=this.props,this.initialized=this._initializedResolvers.promise,he()?e.canvas?typeof e.canvas=="string"?this.canvas=gT(e.canvas):this.canvas=e.canvas:this.canvas=mT(e):this.canvas={width:e.width||1,height:e.height||1},Ji.isHTMLCanvas(this.canvas)?(this.id=e.id||this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):Ji.isOffscreenCanvas(this.canvas)?(this.id=e.id||"offscreen-canvas",this.type="offscreen-canvas",this.offscreenCanvas=this.canvas):(this.id=e.id||"node-canvas-context",this.type="node"),this.cssWidth=this.htmlCanvas?.clientWidth||this.canvas.width,this.cssHeight=this.htmlCanvas?.clientHeight||this.canvas.height,this.devicePixelWidth=this.canvas.width,this.devicePixelHeight=this.canvas.height,this.drawingBufferWidth=this.canvas.width,this.drawingBufferHeight=this.canvas.height,this.devicePixelRatio=globalThis.devicePixelRatio||1,this._position=[0,0],this._canvasObserver=new ln({canvas:this.htmlCanvas,trackPosition:this.props.trackPosition,onResize:r=>this._handleResize(r),onIntersection:r=>this._handleIntersection(r),onDevicePixelRatioChange:()=>this._observeDevicePixelRatio(),onPositionChange:()=>this.updatePosition()})}destroy(){this.destroyed||(this.destroyed=!0,this._stopObservers(),this.device=null)}setProps(e){return"useDevicePixels"in e&&(this.props.useDevicePixels=e.useDevicePixels||!1,this._updateDrawingBufferSize()),this}getCurrentFramebuffer(e){return this._resizeDrawingBufferIfNeeded(),this._getCurrentFramebuffer(e)}getCSSSize(){return[this.cssWidth,this.cssHeight]}getPosition(){return this._position}getDevicePixelSize(){return[this.devicePixelWidth,this.devicePixelHeight]}getDrawingBufferSize(){return[this.drawingBufferWidth,this.drawingBufferHeight]}getMaxDrawingBufferSize(){let e=this.device.limits.maxTextureDimension2D;return[e,e]}setDrawingBufferSize(e,r){e=Math.floor(e),r=Math.floor(r),!(this.drawingBufferWidth===e&&this.drawingBufferHeight===r)&&(this.drawingBufferWidth=e,this.drawingBufferHeight=r,this._needsDrawingBufferResize=!0)}getDevicePixelRatio(){return typeof window<"u"&&window.devicePixelRatio||1}cssToDevicePixels(e,r=!0){let i=this.cssToDeviceRatio(),[s,o]=this.getDrawingBufferSize();return _T(e,i,s,o,r)}getPixelSize(){return this.getDevicePixelSize()}getAspect(){let[e,r]=this.getDrawingBufferSize();return e>0&&r>0?e/r:1}cssToDeviceRatio(){try{let[e]=this.getDrawingBufferSize(),[r]=this.getCSSSize();return r?e/r:1}catch{return 1}}resize(e){this.setDrawingBufferSize(e.width,e.height)}_setAutoCreatedCanvasId(e){this.htmlCanvas?.id==="lumagl-auto-created-canvas"&&(this.htmlCanvas.id=e)}_startObservers(){this.destroyed||this._canvasObserver.start()}_stopObservers(){this._canvasObserver.stop()}_handleIntersection(e){if(this.destroyed)return;let r=e.find(s=>s.target===this.canvas);if(!r)return;let i=r.isIntersecting;this.isVisible!==i&&(this.isVisible=i,this.device.props.onVisibilityChange(this))}_handleResize(e){if(this.destroyed)return;let r=e.find(l=>l.target===this.canvas);if(!r)return;let i=Tr(r.contentBoxSize?.[0]);this.cssWidth=i.inlineSize,this.cssHeight=i.blockSize;let s=this.getDevicePixelSize(),o=r.devicePixelContentBoxSize?.[0]?.inlineSize||i.inlineSize*devicePixelRatio,n=r.devicePixelContentBoxSize?.[0]?.blockSize||i.blockSize*devicePixelRatio,[a,c]=this.getMaxDrawingBufferSize();this.devicePixelWidth=Math.max(1,Math.min(o,a)),this.devicePixelHeight=Math.max(1,Math.min(n,c)),this._updateDrawingBufferSize(),this.device.props.onResize(this,{oldPixelSize:s})}_updateDrawingBufferSize(){if(this.props.autoResize)if(typeof this.props.useDevicePixels=="number"){let e=this.props.useDevicePixels;this.setDrawingBufferSize(this.cssWidth*e,this.cssHeight*e)}else this.props.useDevicePixels?this.setDrawingBufferSize(this.devicePixelWidth,this.devicePixelHeight):this.setDrawingBufferSize(this.cssWidth,this.cssHeight);this._initializedResolvers.resolve(),this.isInitialized=!0,this.updatePosition()}_resizeDrawingBufferIfNeeded(){this._needsDrawingBufferResize&&(this._needsDrawingBufferResize=!1,(this.drawingBufferWidth!==this.canvas.width||this.drawingBufferHeight!==this.canvas.height)&&(this.canvas.width=this.drawingBufferWidth,this.canvas.height=this.drawingBufferHeight,this._configureDevice()))}_observeDevicePixelRatio(){if(this.destroyed||!this._canvasObserver.started)return;let e=this.devicePixelRatio;this.devicePixelRatio=window.devicePixelRatio,this.updatePosition(),this.device.props.onDevicePixelRatioChange?.(this,{oldRatio:e})}updatePosition(){if(this.destroyed)return;let e=this.htmlCanvas?.getBoundingClientRect();if(e){let r=[e.left,e.top];if(this._position??=r,r[0]!==this._position[0]||r[1]!==this._position[1]){let s=this._position;this._position=r,this.device.props.onPositionChange?.(this,{oldPosition:s})}}}},wt=Ji;P(wt,"defaultProps",{id:void 0,canvas:null,width:800,height:600,useDevicePixels:!0,autoResize:!0,container:null,visible:!0,alphaMode:"opaque",colorSpace:"srgb",trackPosition:!1})});var ti,Ad=E(()=>{gl();ti=class extends wt{};P(ti,"defaultProps",wt.defaultProps)});var es,Sd=E(()=>{gl();es=class extends wt{}});var fn,Ne,ml=E(()=>{ae();fn=class extends N{get[Symbol.toStringTag](){return"Sampler"}constructor(e,r){r=fn.normalizeProps(e,r),super(e,r,fn.defaultProps)}static normalizeProps(e,r){return r}},Ne=fn;P(Ne,"defaultProps",{...N.defaultProps,type:"color-sampler",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest",mipmapFilter:"none",lodMinClamp:0,lodMaxClamp:32,compare:"less-equal",maxAnisotropy:1})});var yT,Ee,U,_l=E(()=>{ae();ml();St();on();yT={"1d":"1d","2d":"2d","2d-array":"2d",cube:"2d","cube-array":"2d","3d":"3d"},Ee=class extends N{dimension;baseDimension;format;width;height;depth;mipLevels;samples;byteAlignment;ready=Promise.resolve(this);isReady=!0;updateTimestamp;get[Symbol.toStringTag](){return"Texture"}toString(){return`Texture(${this.id},${this.format},${this.width}x${this.height})`}constructor(e,r,i){if(r=Ee.normalizeProps(e,r),super(e,r,Ee.defaultProps),this.dimension=this.props.dimension,this.baseDimension=yT[this.dimension],this.format=this.props.format,this.width=this.props.width,this.height=this.props.height,this.depth=this.props.depth,this.mipLevels=this.props.mipLevels,this.samples=this.props.samples||1,this.dimension==="cube"&&(this.depth=6),this.props.width===void 0||this.props.height===void 0)if(e.isExternalImage(r.data)){let s=e.getExternalImageSize(r.data);this.width=s?.width||1,this.height=s?.height||1}else this.width=1,this.height=1,(this.props.width===void 0||this.props.height===void 0)&&b.warn(`${this} created with undefined width or height. This is deprecated. Use DynamicTexture instead.`)();this.byteAlignment=i?.byteAlignment||1,this.updateTimestamp=e.incrementTimestamp()}clone(e){return this.device.createTexture({...this.props,...e})}setSampler(e){this.sampler=e instanceof Ne?e:this.device.createSampler(e)}copyImageData(e){let{data:r,depth:i,...s}=e;this.writeData(r,{...s,depthOrArrayLayers:s.depthOrArrayLayers??i})}computeMemoryLayout(e={}){let r=this._normalizeTextureReadOptions(e),{width:i=this.width,height:s=this.height,depthOrArrayLayers:o=this.depth}=r,{format:n,byteAlignment:a}=this;return de.computeMemoryLayout({format:n,width:i,height:s,depth:o,byteAlignment:a})}readBuffer(e,r){throw new Error("readBuffer not implemented")}readDataAsync(e){throw new Error("readBuffer not implemented")}writeBuffer(e,r){throw new Error("readBuffer not implemented")}writeData(e,r){throw new Error("readBuffer not implemented")}readDataSyncWebGL(e){throw new Error("readDataSyncWebGL not available")}generateMipmapsWebGL(){throw new Error("generateMipmapsWebGL not available")}static normalizeProps(e,r){let i={...r},{width:s,height:o}=i;return typeof s=="number"&&(i.width=Math.max(1,Math.ceil(s))),typeof o=="number"&&(i.height=Math.max(1,Math.ceil(o))),i}_initializeData(e){this.device.isExternalImage(e)?this.copyExternalImage({image:e,width:this.width,height:this.height,depth:this.depth,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1}):e&&this.copyImageData({data:e,mipLevel:0,x:0,y:0,z:0,aspect:"all"})}_normalizeCopyImageDataOptions(e){let{data:r,depth:i,...s}=e,o=this._normalizeTextureWriteOptions({...s,depthOrArrayLayers:s.depthOrArrayLayers??i});return{data:r,depth:o.depthOrArrayLayers,...o}}_normalizeCopyExternalImageOptions(e){let r=Ee._omitUndefined(e),i=r.mipLevel??0,s=this._getMipLevelSize(i),o=this.device.getExternalImageSize(e.image),n={...Ee.defaultCopyExternalImageOptions,...s,...o,...r};return n.width=Math.min(n.width,s.width-n.x),n.height=Math.min(n.height,s.height-n.y),n.depth=Math.min(n.depth,s.depthOrArrayLayers-n.z),n}_normalizeTextureReadOptions(e){let r=Ee._omitUndefined(e),i=r.mipLevel??0,s=this._getMipLevelSize(i),o={...Ee.defaultTextureReadOptions,...s,...r};return o.width=Math.min(o.width,s.width-o.x),o.height=Math.min(o.height,s.height-o.y),o.depthOrArrayLayers=Math.min(o.depthOrArrayLayers,s.depthOrArrayLayers-o.z),o}_getSupportedColorReadOptions(e){let r=this._normalizeTextureReadOptions(e),i=de.getInfo(this.format);switch(this._validateColorReadAspect(r),this._validateColorReadFormat(i),this.dimension){case"2d":case"cube":case"cube-array":case"2d-array":case"3d":return r;default:throw new Error(`${this} color readback does not support ${this.dimension} textures`)}}_validateColorReadAspect(e){if(e.aspect!=="all")throw new Error(`${this} color readback only supports aspect 'all'`)}_validateColorReadFormat(e){if(e.compressed)throw new Error(`${this} color readback does not support compressed formats (${this.format})`);switch(e.attachment){case"color":return;case"depth":throw new Error(`${this} color readback does not support depth formats (${this.format})`);case"stencil":throw new Error(`${this} color readback does not support stencil formats (${this.format})`);case"depth-stencil":throw new Error(`${this} color readback does not support depth-stencil formats (${this.format})`);default:throw new Error(`${this} color readback does not support format ${this.format}`)}}_normalizeTextureWriteOptions(e){let r=Ee._omitUndefined(e),i=r.mipLevel??0,s=this._getMipLevelSize(i),o={...Ee.defaultTextureWriteOptions,...s,...r};o.width=Math.min(o.width,s.width-o.x),o.height=Math.min(o.height,s.height-o.y),o.depthOrArrayLayers=Math.min(o.depthOrArrayLayers,s.depthOrArrayLayers-o.z);let n=de.computeMemoryLayout({format:this.format,width:o.width,height:o.height,depth:o.depthOrArrayLayers,byteAlignment:this.byteAlignment}),a=n.bytesPerPixel*o.width;if(o.bytesPerRow=r.bytesPerRow??n.bytesPerRow,o.rowsPerImage=r.rowsPerImage??o.height,o.bytesPerRow<a)throw new Error(`bytesPerRow (${o.bytesPerRow}) must be at least ${a} for ${this.format}`);if(o.rowsPerImage<o.height)throw new Error(`rowsPerImage (${o.rowsPerImage}) must be at least ${o.height} for ${this.format}`);let c=this.device.getTextureFormatInfo(this.format).bytesPerPixel;if(c&&o.bytesPerRow%c!==0)throw new Error(`bytesPerRow (${o.bytesPerRow}) must be a multiple of bytesPerPixel (${c}) for ${this.format}`);return o}_getMipLevelSize(e){let r=Math.max(1,this.width>>e),i=this.baseDimension==="1d"?1:Math.max(1,this.height>>e),s=this.dimension==="3d"?Math.max(1,this.depth>>e):this.depth;return{width:r,height:i,depthOrArrayLayers:s}}getAllocatedByteLength(){let e=0;for(let r=0;r<this.mipLevels;r++){let{width:i,height:s,depthOrArrayLayers:o}=this._getMipLevelSize(r);e+=de.computeMemoryLayout({format:this.format,width:i,height:s,depth:o,byteAlignment:1}).byteLength}return e*this.samples}static _omitUndefined(e){return Object.fromEntries(Object.entries(e).filter(([,r])=>r!==void 0))}},U=Ee;P(U,"SAMPLE",4),P(U,"STORAGE",8),P(U,"RENDER",16),P(U,"COPY_SRC",1),P(U,"COPY_DST",2),P(U,"TEXTURE",4),P(U,"RENDER_ATTACHMENT",16),P(U,"defaultProps",{...N.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",usage:Ee.SAMPLE|Ee.RENDER|Ee.COPY_DST,width:void 0,height:void 0,depth:1,mipLevels:1,samples:void 0,sampler:{},view:void 0}),P(U,"defaultCopyDataOptions",{data:void 0,byteOffset:0,bytesPerRow:void 0,rowsPerImage:void 0,width:void 0,height:void 0,depthOrArrayLayers:void 0,depth:1,mipLevel:0,x:0,y:0,z:0,aspect:"all"}),P(U,"defaultCopyExternalImageOptions",{image:void 0,sourceX:0,sourceY:0,width:void 0,height:void 0,depth:1,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1}),P(U,"defaultTextureReadOptions",{x:0,y:0,z:0,width:void 0,height:void 0,depthOrArrayLayers:1,mipLevel:0,aspect:"all"}),P(U,"defaultTextureWriteOptions",{byteOffset:0,bytesPerRow:void 0,rowsPerImage:void 0,x:0,y:0,z:0,width:void 0,height:void 0,depthOrArrayLayers:1,mipLevel:0,aspect:"all"})});var yl,Zt,Ed=E(()=>{ae();yl=class extends N{get[Symbol.toStringTag](){return"TextureView"}constructor(e,r){super(e,r,yl.defaultProps)}},Zt=yl;P(Zt,"defaultProps",{...N.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0})});function wd(t,e,r){let i="",s=e.split(/\r?\n/),o=t.slice().sort((n,a)=>n.lineNum-a.lineNum);switch(r?.showSourceCode||"no"){case"all":let n=0;for(let a=1;a<=s.length;a++){let c=s[a-1],l=o[n];for(c&&l&&(i+=Rd(c,a,r));o.length>n&&l.lineNum===a;){let f=o[n++];f&&(i+=Tl(f,s,f.lineNum,{...r,inlineSource:!1}))}}for(;o.length>n;){let a=o[n++];a&&(i+=Tl(a,[],0,{...r,inlineSource:!1}))}return i;case"issues":case"no":for(let a of t)i+=Tl(a,s,a.lineNum,{inlineSource:r?.showSourceCode!=="no"});return i}}function Tl(t,e,r,i){if(i?.inlineSource){let o=TT(e,r),n=t.linePos>0?`${" ".repeat(t.linePos+5)}^^^
9
9
  `:"";return`
10
- ${o}${n}${e.type.toUpperCase()}: ${e.message}
11
-
12
- `}let s=e.type==="error"?"red":"#8B4000";return i?.html?`<div class='luma-compiler-log-error' style="color:${s};"><b> ${e.type.toUpperCase()}: ${e.message}</b></div>`:`${e.type.toUpperCase()}: ${e.message}`}function _T(e,t,r){let i="";for(let s=t-2;s<=t;s++){let o=e[s-1];o!==void 0&&(i+=Xu(o,t,r))}return i}function Xu(e,t,r){let i=r?.html?yT(e):e;return`${TT(String(t),4)}: ${i}${r?.html?"<br/>":`
13
- `}`}function TT(e,t){let r="";for(let i=e.length;i<t;++i)r+=" ";return r+e}function yT(e){return e.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#039;")}var $u=A(()=>{});function bT(e){return xT(e.source)||e.id||Ue(`unnamed ${e.stage}-shader`)}function xT(e,t="unnamed"){let i=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(e);return i?i[1]:t}var rl,ze,Yu=A(()=>{ct();ji();$u();rl=class extends N{get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(t,r){r={...r,debugShaders:r.debugShaders||t.props.debugShaders||"errors"},super(t,{id:bT(r),...r},rl.defaultProps),this.stage=this.props.stage,this.source=this.props.source}getCompilationInfoSync(){return null}getTranslatedSource(){return null}async debugShader(){let t=this.props.debugShaders;switch(t){case"never":return;case"errors":if(this.compilationStatus==="success")return;break;case"warnings":case"always":break}let r=await this.getCompilationInfo();t==="warnings"&&r?.length===0||this._displayShaderLog(r,this.id)}_displayShaderLog(t,r){if(typeof document>"u"||!document?.createElement)return;let i=r,s=`${this.stage} shader "${i}"`,o=Hu(t,this.source,{showSourceCode:"all",html:!0}),n=this.getTranslatedSource();n&&(o+=`<br /><br /><h1>Translated Source</h1><br /><br /><code style="user-select:text;"><pre>${n}</pre></code>`);let a=document.createElement("Button");a.innerHTML=`
14
- <h1>Compilation error in ${s}</h1><br /><br />
15
- <code style="user-select:text;"><pre>
16
- ${o}
17
- </pre></code>`,a.style.top="10px",a.style.left="10px",a.style.position="absolute",a.style.zIndex="9999",a.style.width="100%",a.style.textAlign="left",document.body.appendChild(a),document.getElementsByClassName("luma-compiler-log-error")[0]?.scrollIntoView(),a.onclick=()=>{let l=`data:text/plain,${encodeURIComponent(this.source)}`;navigator.clipboard.writeText(l)}}},ze=rl;w(ze,"defaultProps",{...N.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debugShaders:void 0})});var il,Qt,Ku=A(()=>{ct();Gc();me();il=class extends N{get[Symbol.toStringTag](){return"Framebuffer"}width;height;constructor(t,r={}){super(t,r,il.defaultProps),this.width=this.props.width,this.height=this.props.height}clone(t){let r=this.colorAttachments.map(s=>s.texture.clone(t)),i=this.depthStencilAttachment&&this.depthStencilAttachment.texture.clone(t);return this.device.createFramebuffer({...this.props,...t,colorAttachments:r,depthStencilAttachment:i})}resize(t){let r=!t;if(t){let[i,s]=Array.isArray(t)?t:[t.width,t.height];r=r||s!==this.height||i!==this.width,this.width=i,this.height=s}r&&(b.log(2,`Resizing framebuffer ${this.id} to ${this.width}x${this.height}`)(),this.resizeAttachments(this.width,this.height))}autoCreateAttachmentTextures(){if(this.props.colorAttachments.length===0&&!this.props.depthStencilAttachment)throw new Error("Framebuffer has noattachments");this.colorAttachments=this.props.colorAttachments.map((r,i)=>{if(typeof r=="string"){let s=this.createColorTexture(r,i);return this.attachResource(s),s.view}return r instanceof k?r.view:r});let t=this.props.depthStencilAttachment;if(t)if(typeof t=="string"){let r=this.createDepthStencilTexture(t);this.attachResource(r),this.depthStencilAttachment=r.view}else t instanceof k?this.depthStencilAttachment=t.view:this.depthStencilAttachment=t}createColorTexture(t,r){return this.device.createTexture({id:`${this.id}-color-attachment-${r}`,usage:k.RENDER_ATTACHMENT,format:t,width:this.width,height:this.height,sampler:{magFilter:"linear",minFilter:"linear"}})}createDepthStencilTexture(t){return this.device.createTexture({id:`${this.id}-depth-stencil-attachment`,usage:k.RENDER_ATTACHMENT,format:t,width:this.width,height:this.height})}resizeAttachments(t,r){for(let i=0;i<this.colorAttachments.length;++i)if(this.colorAttachments[i]){let s=this.colorAttachments[i].texture.clone({width:t,height:r});this.destroyAttachedResource(this.colorAttachments[i]),this.colorAttachments[i]=s.view,this.attachResource(s.view)}if(this.depthStencilAttachment){let i=this.depthStencilAttachment.texture.clone({width:t,height:r});this.destroyAttachedResource(this.depthStencilAttachment),this.depthStencilAttachment=i.view,this.attachResource(i)}this.updateAttachments()}},Qt=il;w(Qt,"defaultProps",{...N.defaultProps,width:1,height:1,colorAttachments:[],depthStencilAttachment:null})});var sl,vt,qu=A(()=>{ct();sl=class extends N{get[Symbol.toStringTag](){return"RenderPipeline"}shaderLayout;bufferLayout;linkStatus="pending";hash="";constructor(t,r){super(t,r,sl.defaultProps),this.shaderLayout=this.props.shaderLayout,this.bufferLayout=this.props.bufferLayout||[]}},vt=sl;w(vt,"defaultProps",{...N.defaultProps,vs:null,vertexEntryPoint:"vertexMain",vsConstants:{},fs:null,fragmentEntryPoint:"fragmentMain",fsConstants:{},shaderLayout:null,bufferLayout:[],topology:"triangle-list",colorAttachmentFormats:void 0,depthStencilAttachmentFormat:void 0,parameters:{},bindings:{},uniforms:{}})});var ur,be,Zu=A(()=>{ct();ur=class extends N{get[Symbol.toStringTag](){return"RenderPass"}constructor(t,r){r=ur.normalizeProps(t,r),super(t,r,ur.defaultProps)}static normalizeProps(t,r){return r}},be=ur;w(be,"defaultClearColor",[0,0,0,1]),w(be,"defaultClearDepth",1),w(be,"defaultClearStencil",0),w(be,"defaultProps",{...N.defaultProps,framebuffer:null,parameters:void 0,clearColor:ur.defaultClearColor,clearColors:void 0,clearDepth:ur.defaultClearDepth,clearStencil:ur.defaultClearStencil,depthReadOnly:!1,stencilReadOnly:!1,discard:!1,occlusionQuerySet:void 0,timestampQuerySet:void 0,beginTimestampIndex:void 0,endTimestampIndex:void 0})});var ol,dr,Ju=A(()=>{ct();ol=class extends N{get[Symbol.toStringTag](){return"ComputePipeline"}hash="";shaderLayout;constructor(t,r){super(t,r,ol.defaultProps),this.shaderLayout=r.shaderLayout}},dr=ol;w(dr,"defaultProps",{...N.defaultProps,shader:void 0,entryPoint:void 0,constants:{},shaderLayout:void 0})});var nl,Qr,Qu=A(()=>{ct();nl=class extends N{get[Symbol.toStringTag](){return"CommandEncoder"}constructor(t,r){super(t,r,nl.defaultProps)}},Qr=nl;w(Qr,"defaultProps",{...N.defaultProps,measureExecutionTime:void 0})});var al,Gr,Gu=A(()=>{ct();al=class extends N{get[Symbol.toStringTag](){return"CommandBuffer"}constructor(t,r){super(t,r,al.defaultProps)}},Gr=al;w(Gr,"defaultProps",{...N.defaultProps})});function Qi(e){return ET[e]}function cl(e){let[t,r]=ST[e],i=t==="i32"||t==="u32",s=t!=="u32",o=AT[t]*r;return{primitiveType:t,components:r,byteLength:o,integer:i,signed:s}}var AT,ST,ET,RT,q2,nn=A(()=>{AT={f32:4,f16:2,i32:4,u32:4},ST={f32:["f32",1],"vec2<f32>":["f32",2],"vec3<f32>":["f32",3],"vec4<f32>":["f32",4],f16:["f16",1],"vec2<f16>":["f16",2],"vec3<f16>":["f16",3],"vec4<f16>":["f16",4],i32:["i32",1],"vec2<i32>":["i32",2],"vec3<i32>":["i32",3],"vec4<i32>":["i32",4],u32:["u32",1],"vec2<u32>":["u32",2],"vec3<u32>":["u32",3],"vec4<u32>":["u32",4]},ET={f32:{type:"f32",components:1},f16:{type:"f16",components:1},i32:{type:"i32",components:1},u32:{type:"u32",components:1},"vec2<f32>":{type:"f32",components:2},"vec3<f32>":{type:"f32",components:3},"vec4<f32>":{type:"f32",components:4},"vec2<f16>":{type:"f16",components:2},"vec3<f16>":{type:"f16",components:3},"vec4<f16>":{type:"f16",components:4},"vec2<i32>":{type:"i32",components:2},"vec3<i32>":{type:"i32",components:3},"vec4<i32>":{type:"i32",components:4},"vec2<u32>":{type:"u32",components:2},"vec3<u32>":{type:"u32",components:3},"vec4<u32>":{type:"u32",components:4},"mat2x2<f32>":{type:"f32",components:4},"mat2x3<f32>":{type:"f32",components:6},"mat2x4<f32>":{type:"f32",components:8},"mat3x2<f32>":{type:"f32",components:6},"mat3x3<f32>":{type:"f32",components:9},"mat3x4<f32>":{type:"f32",components:12},"mat4x2<f32>":{type:"f32",components:8},"mat4x3<f32>":{type:"f32",components:12},"mat4x4<f32>":{type:"f32",components:16},"mat2x2<f16>":{type:"f16",components:4},"mat2x3<f16>":{type:"f16",components:6},"mat2x4<f16>":{type:"f16",components:8},"mat3x2<f16>":{type:"f16",components:6},"mat3x3<f16>":{type:"f16",components:9},"mat3x4<f16>":{type:"f16",components:12},"mat4x2<f16>":{type:"f16",components:8},"mat4x3<f16>":{type:"f16",components:12},"mat4x4<f16>":{type:"f16",components:16},"mat2x2<i32>":{type:"i32",components:4},"mat2x3<i32>":{type:"i32",components:6},"mat2x4<i32>":{type:"i32",components:8},"mat3x2<i32>":{type:"i32",components:6},"mat3x3<i32>":{type:"i32",components:9},"mat3x4<i32>":{type:"i32",components:12},"mat4x2<i32>":{type:"i32",components:8},"mat4x3<i32>":{type:"i32",components:12},"mat4x4<i32>":{type:"i32",components:16},"mat2x2<u32>":{type:"u32",components:4},"mat2x3<u32>":{type:"u32",components:6},"mat2x4<u32>":{type:"u32",components:8},"mat3x2<u32>":{type:"u32",components:6},"mat3x3<u32>":{type:"u32",components:9},"mat3x4<u32>":{type:"u32",components:12},"mat4x2<u32>":{type:"u32",components:8},"mat4x3<u32>":{type:"u32",components:12},"mat4x4<u32>":{type:"u32",components:16}},RT={vec2i:"vec2<i32>",vec3i:"vec3<i32>",vec4i:"vec4<i32>",vec2u:"vec2<u32>",vec3u:"vec3<u32>",vec4u:"vec4<u32>",vec2f:"vec2<f32>",vec3f:"vec3<f32>",vec4f:"vec4<f32>",vec2h:"vec2<f16>",vec3h:"vec3<f16>",vec4h:"vec4<f16>"},q2={...RT,mat2x2f:"mat2x2<f32>",mat2x3f:"mat2x3<f32>",mat2x4f:"mat2x4<f32>",mat3x2f:"mat3x2<f32>",mat3x3f:"mat3x3<f32>",mat3x4f:"mat3x4<f32>",mat4x2f:"mat4x2<f32>",mat4x3f:"mat4x3<f32>",mat4x4f:"mat4x4<f32>",mat2x2i:"mat2x2<i32>",mat2x3i:"mat2x3<i32>",mat2x4i:"mat2x4<i32>",mat3x2i:"mat3x2<i32>",mat3x3i:"mat3x3<i32>",mat3x4i:"mat3x4<i32>",mat4x2i:"mat4x2<i32>",mat4x3i:"mat4x3<i32>",mat4x4i:"mat4x4<i32>",mat2x2u:"mat2x2<u32>",mat2x3u:"mat2x3<u32>",mat2x4u:"mat2x4<u32>",mat3x2u:"mat3x2<u32>",mat3x3u:"mat3x3<u32>",mat3x4u:"mat3x4<u32>",mat4x2u:"mat4x2<u32>",mat4x3u:"mat4x3<u32>",mat4x4u:"mat4x4<u32>",mat2x2h:"mat2x2<f16>",mat2x3h:"mat2x3<f16>",mat2x4h:"mat2x4<f16>",mat3x2h:"mat3x2<f16>",mat3x3h:"mat3x3<f16>",mat3x4h:"mat3x4<f16>",mat4x2h:"mat4x2<f16>",mat4x3h:"mat4x3<f16>",mat4x4h:"mat4x4<f16>"}});function an(e,t){let r={};for(let i of e.attributes){let s=wT(e,t,i.name);s&&(r[i.name]=s)}return r}function td(e,t,r=16){let i=an(e,t),s=new Array(r).fill(null);for(let o of Object.values(i))s[o.location]=o;return s}function wT(e,t,r){let i=PT(e,r),s=MT(t,r);if(!i)return null;let o=cl(i.type),n=Mu(o),a=s?.vertexFormat||n,c=qr(a);return{attributeName:s?.attributeName||i.name,bufferName:s?.bufferName||i.name,location:i.location,shaderType:i.type,primitiveType:o.primitiveType,shaderComponents:o.components,vertexFormat:a,bufferDataType:c.type,bufferComponents:c.components,normalized:c.normalized,integer:o.integer,stepMode:s?.stepMode||i.stepMode||"vertex",byteOffset:s?.byteOffset||0,byteStride:s?.byteStride||0}}function PT(e,t){let r=e.attributes.find(i=>i.name===t);return r||b.warn(`shader layout attribute "${t}" not present in shader`),r||null}function MT(e,t){vT(e);let r=CT(e,t);return r||(r=IT(e,t),r)?r:(b.warn(`layout for attribute "${t}" not present in buffer layout`),null)}function vT(e){for(let t of e)(t.attributes&&t.format||!t.attributes&&!t.format)&&b.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`)}function CT(e,t){for(let r of e)if(r.format&&r.name===t)return{attributeName:r.name,bufferName:t,stepMode:r.stepMode,vertexFormat:r.format,byteOffset:0,byteStride:r.byteStride||0};return null}function IT(e,t){for(let r of e){let i=r.byteStride;if(typeof r.byteStride!="number")for(let o of r.attributes||[]){let n=qr(o.format);i+=n.byteLength}let s=r.attributes?.find(o=>o.attribute===t);if(s)return{attributeName:s.attribute,bufferName:r.name,stepMode:r.stepMode,vertexFormat:s.format,byteOffset:s.byteOffset,byteStride:i}}return null}var ll=A(()=>{me();nn();Ko()});var fl,ti,ed=A(()=>{ll();ct();fl=class extends N{get[Symbol.toStringTag](){return"VertexArray"}maxVertexAttributes;attributeInfos;indexBuffer=null;attributes;constructor(t,r){super(t,r,fl.defaultProps),this.maxVertexAttributes=t.limits.maxVertexAttributes,this.attributes=new Array(this.maxVertexAttributes).fill(null),this.attributeInfos=td(r.shaderLayout,r.bufferLayout,this.maxVertexAttributes)}setConstantWebGL(t,r){this.device.reportError(new Error("constant attributes not supported"),this)()}},ti=fl;w(ti,"defaultProps",{...N.defaultProps,shaderLayout:void 0,bufferLayout:[]})});var hl,ei,rd=A(()=>{ct();hl=class extends N{get[Symbol.toStringTag](){return"TransformFeedback"}constructor(t,r){super(t,r,hl.defaultProps)}},ei=hl;w(ei,"defaultProps",{...N.defaultProps,layout:void 0,buffers:{}})});var ul,ri,id=A(()=>{ct();ul=class extends N{get[Symbol.toStringTag](){return"QuerySet"}constructor(t,r){super(t,r,ul.defaultProps)}},ri=ul;w(ri,"defaultProps",{...N.defaultProps,type:void 0,count:void 0})});var dl,ii,sd=A(()=>{ct();dl=class extends N{[Symbol.toStringTag]="WEBGLFence";constructor(t,r={}){super(t,r,dl.defaultProps)}},ii=dl;w(ii,"defaultProps",{...N.defaultProps})});function pl(e){return(!cn||cn.byteLength<e)&&(cn=new ArrayBuffer(e)),cn}function gl(e,t){let r=pl(e.BYTES_PER_ELEMENT*t);return new e(r,0,t)}var cn,ml=A(()=>{});var OT,ln,od=A(()=>{Xi();nn();ml();me();OT=1024,ln=class{layout={};byteLength;constructor(t,r={}){let i=0;for(let[s,o]of Object.entries(t))i=this._addToLayout(s,o,i,r?.[s]);i+=(4-i%4)%4,this.byteLength=Math.max(i*4,OT)}has(t){return Boolean(this.layout[t])}get(t){return this.layout[t]}getData(t){let r=pl(this.byteLength),i={i32:new Int32Array(r),u32:new Uint32Array(r),f32:new Float32Array(r),f16:new Uint16Array(r)};for(let[s,o]of Object.entries(t))this._writeCompositeValue(i,s,o);return new Uint8Array(r,0,this.byteLength)}_addToLayout(t,r,i,s=1){if(typeof r=="string"){let o=Qi(r),n=o.components*s,a=Yo(i,o.components);return this.layout[t]={offset:a,size:n,type:o.type},a+n}if(Array.isArray(r)){let o=r[0],n=s>1?s:r.length>1?r[1]:1,a=Yo(i,4);for(let c=0;c<n;c++)a=this._addToLayout(`${t}[${c}]`,o,a);return a}if(typeof r=="object"){let o=Yo(i,4);for(let[n,a]of Object.entries(r))o=this._addToLayout(`${t}.${n}`,a,o);return o}throw new Error(`Unsupported CompositeShaderType for ${t}`)}_writeCompositeValue(t,r,i){if(this.layout[r]){this._writeToBuffer(t,r,i);return}if(Array.isArray(i)){for(let s=0;s<i.length;s++){let o=i[s],n=`${r}[${s}]`;this._writeCompositeValue(t,n,o)}return}if(typeof i=="object"&&i!==null){for(let[s,o]of Object.entries(i)){let n=`${r}.${s}`;this._writeCompositeValue(t,n,o)}return}b.warn(`Unsupported uniform value for ${r}:`,i)()}_writeToBuffer(t,r,i){let s=this.layout[r];if(!s){b.warn(`Uniform ${r} not found in layout`)();return}let{type:o,size:n,offset:a}=s,c=t[o];n===1?c[a]=Number(i):c.set(i,a)}}});function NT(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function fn(e){return Array.isArray(e)?e.length===0||typeof e[0]=="number":NT(e)}var nd=A(()=>{});function ad(e,t,r=16){if(e!==t)return!1;let i=e,s=t;if(!fn(i))return!1;if(fn(s)&&i.length===s.length){for(let o=0;o<i.length;++o)if(s[o]!==i[o])return!1}return!0}function cd(e){return fn(e)?e.slice():e}var ld=A(()=>{nd()});var hn,fd=A(()=>{ld();hn=class{name;uniforms={};modifiedUniforms={};modified=!0;bindingLayout={};needsRedraw="initialized";constructor(t){if(this.name=t?.name||"unnamed",t?.name&&t?.shaderLayout){let r=t?.shaderLayout.bindings?.find(s=>s.type==="uniform"&&s.name===t?.name);if(!r)throw new Error(t?.name);let i=r;for(let s of i.uniforms||[])this.bindingLayout[s.name]=s}}setUniforms(t){for(let[r,i]of Object.entries(t))this._setUniform(r,i),this.needsRedraw||this.setNeedsRedraw(`${this.name}.${r}=${i}`)}setNeedsRedraw(t){this.needsRedraw=this.needsRedraw||t}getAllUniforms(){return this.modifiedUniforms={},this.needsRedraw=!1,this.uniforms||{}}_setUniform(t,r){ad(this.uniforms[t],r)||(this.uniforms[t]=cd(r),this.modifiedUniforms[t]=!0,this.modified=!0)}}});var Gi,hd=A(()=>{$o();me();fd();od();Gi=class{uniformBlocks=new Map;uniformBufferLayouts=new Map;uniformBuffers=new Map;constructor(t){for(let[r,i]of Object.entries(t)){let s=r,o=new ln(i.uniformTypes??{},i.uniformSizes??{});this.uniformBufferLayouts.set(s,o);let n=new hn({name:r});n.setUniforms(i.defaultUniforms||{}),this.uniformBlocks.set(s,n)}}destroy(){for(let t of this.uniformBuffers.values())t.destroy()}setUniforms(t){for(let[r,i]of Object.entries(t))this.uniformBlocks.get(r)?.setUniforms(i);this.updateUniformBuffers()}getUniformBufferByteLength(t){return this.uniformBufferLayouts.get(t)?.byteLength||0}getUniformBufferData(t){let r=this.uniformBlocks.get(t)?.getAllUniforms()||{};return this.uniformBufferLayouts.get(t)?.getData(r)}createUniformBuffer(t,r,i){i&&this.setUniforms(i);let s=this.getUniformBufferByteLength(r),o=t.createBuffer({usage:O.UNIFORM|O.COPY_DST,byteLength:s}),n=this.getUniformBufferData(r);return o.write(n),o}getManagedUniformBuffer(t,r){if(!this.uniformBuffers.get(r)){let i=this.getUniformBufferByteLength(r),s=t.createBuffer({usage:O.UNIFORM|O.COPY_DST,byteLength:i});this.uniformBuffers.set(r,s)}return this.uniformBuffers.get(r)}updateUniformBuffers(){let t=!1;for(let r of this.uniformBlocks.keys()){let i=this.updateUniformBuffer(r);t||=i}return t&&b.log(3,`UniformStore.updateUniformBuffers(): ${t}`)(),t}updateUniformBuffer(t){let r=this.uniformBlocks.get(t),i=this.uniformBuffers.get(t),s=!1;if(i&&r?.needsRedraw){s||=r.needsRedraw;let o=this.getUniformBufferData(t);i=this.uniformBuffers.get(t),i?.write(o);let n=this.uniformBlocks.get(t)?.getAllUniforms();b.log(4,`Writing to uniform buffer ${String(t)}`,o,n)()}return s}}});var D=A(()=>{Nu();Lu();Kc();ju();$o();Gc();Wu();Yu();Qc();Ku();qu();Zu();Ju();Qu();Gu();ed();rd();id();sd();hd();Xi();nn();Ko();Go();$c();me();ml();ll()});var or,Dm=A(()=>{(function(e){e[e.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",e[e.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",e[e.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",e[e.POINTS=0]="POINTS",e[e.LINES=1]="LINES",e[e.LINE_LOOP=2]="LINE_LOOP",e[e.LINE_STRIP=3]="LINE_STRIP",e[e.TRIANGLES=4]="TRIANGLES",e[e.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",e[e.TRIANGLE_FAN=6]="TRIANGLE_FAN",e[e.ZERO=0]="ZERO",e[e.ONE=1]="ONE",e[e.SRC_COLOR=768]="SRC_COLOR",e[e.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",e[e.SRC_ALPHA=770]="SRC_ALPHA",e[e.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",e[e.DST_ALPHA=772]="DST_ALPHA",e[e.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",e[e.DST_COLOR=774]="DST_COLOR",e[e.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",e[e.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",e[e.CONSTANT_COLOR=32769]="CONSTANT_COLOR",e[e.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",e[e.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",e[e.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",e[e.FUNC_ADD=32774]="FUNC_ADD",e[e.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",e[e.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",e[e.BLEND_EQUATION=32777]="BLEND_EQUATION",e[e.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",e[e.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",e[e.BLEND_DST_RGB=32968]="BLEND_DST_RGB",e[e.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",e[e.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",e[e.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",e[e.BLEND_COLOR=32773]="BLEND_COLOR",e[e.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",e[e.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",e[e.LINE_WIDTH=2849]="LINE_WIDTH",e[e.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",e[e.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",e[e.CULL_FACE_MODE=2885]="CULL_FACE_MODE",e[e.FRONT_FACE=2886]="FRONT_FACE",e[e.DEPTH_RANGE=2928]="DEPTH_RANGE",e[e.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",e[e.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",e[e.DEPTH_FUNC=2932]="DEPTH_FUNC",e[e.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",e[e.STENCIL_FUNC=2962]="STENCIL_FUNC",e[e.STENCIL_FAIL=2964]="STENCIL_FAIL",e[e.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",e[e.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",e[e.STENCIL_REF=2967]="STENCIL_REF",e[e.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",e[e.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",e[e.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",e[e.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",e[e.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",e[e.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",e[e.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",e[e.VIEWPORT=2978]="VIEWPORT",e[e.SCISSOR_BOX=3088]="SCISSOR_BOX",e[e.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",e[e.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",e[e.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",e[e.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",e[e.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",e[e.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",e[e.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",e[e.RED_BITS=3410]="RED_BITS",e[e.GREEN_BITS=3411]="GREEN_BITS",e[e.BLUE_BITS=3412]="BLUE_BITS",e[e.ALPHA_BITS=3413]="ALPHA_BITS",e[e.DEPTH_BITS=3414]="DEPTH_BITS",e[e.STENCIL_BITS=3415]="STENCIL_BITS",e[e.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",e[e.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",e[e.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",e[e.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",e[e.SAMPLES=32937]="SAMPLES",e[e.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",e[e.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",e[e.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",e[e.VENDOR=7936]="VENDOR",e[e.RENDERER=7937]="RENDERER",e[e.VERSION=7938]="VERSION",e[e.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",e[e.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",e[e.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",e[e.STATIC_DRAW=35044]="STATIC_DRAW",e[e.STREAM_DRAW=35040]="STREAM_DRAW",e[e.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",e[e.ARRAY_BUFFER=34962]="ARRAY_BUFFER",e[e.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",e[e.BUFFER_SIZE=34660]="BUFFER_SIZE",e[e.BUFFER_USAGE=34661]="BUFFER_USAGE",e[e.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",e[e.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",e[e.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",e[e.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",e[e.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",e[e.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",e[e.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",e[e.CULL_FACE=2884]="CULL_FACE",e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK",e[e.BLEND=3042]="BLEND",e[e.DEPTH_TEST=2929]="DEPTH_TEST",e[e.DITHER=3024]="DITHER",e[e.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",e[e.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",e[e.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",e[e.SCISSOR_TEST=3089]="SCISSOR_TEST",e[e.STENCIL_TEST=2960]="STENCIL_TEST",e[e.NO_ERROR=0]="NO_ERROR",e[e.INVALID_ENUM=1280]="INVALID_ENUM",e[e.INVALID_VALUE=1281]="INVALID_VALUE",e[e.INVALID_OPERATION=1282]="INVALID_OPERATION",e[e.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",e[e.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",e[e.CW=2304]="CW",e[e.CCW=2305]="CCW",e[e.DONT_CARE=4352]="DONT_CARE",e[e.FASTEST=4353]="FASTEST",e[e.NICEST=4354]="NICEST",e[e.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.INT=5124]="INT",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT",e[e.DOUBLE=5130]="DOUBLE",e[e.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",e[e.ALPHA=6406]="ALPHA",e[e.RGB=6407]="RGB",e[e.RGBA=6408]="RGBA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",e[e.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",e[e.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",e[e.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",e[e.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",e[e.VERTEX_SHADER=35633]="VERTEX_SHADER",e[e.COMPILE_STATUS=35713]="COMPILE_STATUS",e[e.DELETE_STATUS=35712]="DELETE_STATUS",e[e.LINK_STATUS=35714]="LINK_STATUS",e[e.VALIDATE_STATUS=35715]="VALIDATE_STATUS",e[e.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",e[e.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",e[e.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",e[e.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",e[e.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",e[e.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",e[e.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",e[e.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",e[e.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",e[e.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",e[e.SHADER_TYPE=35663]="SHADER_TYPE",e[e.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",e[e.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",e[e.NEVER=512]="NEVER",e[e.LESS=513]="LESS",e[e.EQUAL=514]="EQUAL",e[e.LEQUAL=515]="LEQUAL",e[e.GREATER=516]="GREATER",e[e.NOTEQUAL=517]="NOTEQUAL",e[e.GEQUAL=518]="GEQUAL",e[e.ALWAYS=519]="ALWAYS",e[e.KEEP=7680]="KEEP",e[e.REPLACE=7681]="REPLACE",e[e.INCR=7682]="INCR",e[e.DECR=7683]="DECR",e[e.INVERT=5386]="INVERT",e[e.INCR_WRAP=34055]="INCR_WRAP",e[e.DECR_WRAP=34056]="DECR_WRAP",e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9729]="LINEAR",e[e.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",e[e.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",e[e.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",e[e.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",e[e.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",e[e.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",e[e.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",e[e.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",e[e.TEXTURE_2D=3553]="TEXTURE_2D",e[e.TEXTURE=5890]="TEXTURE",e[e.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",e[e.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",e[e.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",e[e.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",e[e.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",e[e.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",e[e.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",e[e.TEXTURE0=33984]="TEXTURE0",e[e.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",e[e.REPEAT=10497]="REPEAT",e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",e[e.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",e[e.FLOAT_VEC2=35664]="FLOAT_VEC2",e[e.FLOAT_VEC3=35665]="FLOAT_VEC3",e[e.FLOAT_VEC4=35666]="FLOAT_VEC4",e[e.INT_VEC2=35667]="INT_VEC2",e[e.INT_VEC3=35668]="INT_VEC3",e[e.INT_VEC4=35669]="INT_VEC4",e[e.BOOL=35670]="BOOL",e[e.BOOL_VEC2=35671]="BOOL_VEC2",e[e.BOOL_VEC3=35672]="BOOL_VEC3",e[e.BOOL_VEC4=35673]="BOOL_VEC4",e[e.FLOAT_MAT2=35674]="FLOAT_MAT2",e[e.FLOAT_MAT3=35675]="FLOAT_MAT3",e[e.FLOAT_MAT4=35676]="FLOAT_MAT4",e[e.SAMPLER_2D=35678]="SAMPLER_2D",e[e.SAMPLER_CUBE=35680]="SAMPLER_CUBE",e[e.LOW_FLOAT=36336]="LOW_FLOAT",e[e.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",e[e.HIGH_FLOAT=36338]="HIGH_FLOAT",e[e.LOW_INT=36339]="LOW_INT",e[e.MEDIUM_INT=36340]="MEDIUM_INT",e[e.HIGH_INT=36341]="HIGH_INT",e[e.FRAMEBUFFER=36160]="FRAMEBUFFER",e[e.RENDERBUFFER=36161]="RENDERBUFFER",e[e.RGBA4=32854]="RGBA4",e[e.RGB5_A1=32855]="RGB5_A1",e[e.RGB565=36194]="RGB565",e[e.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",e[e.STENCIL_INDEX=6401]="STENCIL_INDEX",e[e.STENCIL_INDEX8=36168]="STENCIL_INDEX8",e[e.DEPTH_STENCIL=34041]="DEPTH_STENCIL",e[e.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",e[e.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",e[e.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",e[e.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",e[e.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",e[e.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",e[e.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",e[e.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",e[e.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",e[e.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",e[e.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",e[e.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",e[e.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",e[e.NONE=0]="NONE",e[e.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",e[e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",e[e.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",e[e.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",e[e.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",e[e.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",e[e.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",e[e.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",e[e.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",e[e.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",e[e.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",e[e.READ_BUFFER=3074]="READ_BUFFER",e[e.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",e[e.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",e[e.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",e[e.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",e[e.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",e[e.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",e[e.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",e[e.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",e[e.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",e[e.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",e[e.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",e[e.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",e[e.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",e[e.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",e[e.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",e[e.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",e[e.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",e[e.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",e[e.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",e[e.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",e[e.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",e[e.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",e[e.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",e[e.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",e[e.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",e[e.RED=6403]="RED",e[e.RGB8=32849]="RGB8",e[e.RGBA8=32856]="RGBA8",e[e.RGB10_A2=32857]="RGB10_A2",e[e.TEXTURE_3D=32879]="TEXTURE_3D",e[e.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",e[e.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",e[e.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",e[e.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",e[e.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",e[e.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",e[e.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",e[e.SRGB=35904]="SRGB",e[e.SRGB8=35905]="SRGB8",e[e.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",e[e.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",e[e.RGBA32F=34836]="RGBA32F",e[e.RGB32F=34837]="RGB32F",e[e.RGBA16F=34842]="RGBA16F",e[e.RGB16F=34843]="RGB16F",e[e.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",e[e.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",e[e.R11F_G11F_B10F=35898]="R11F_G11F_B10F",e[e.RGB9_E5=35901]="RGB9_E5",e[e.RGBA32UI=36208]="RGBA32UI",e[e.RGB32UI=36209]="RGB32UI",e[e.RGBA16UI=36214]="RGBA16UI",e[e.RGB16UI=36215]="RGB16UI",e[e.RGBA8UI=36220]="RGBA8UI",e[e.RGB8UI=36221]="RGB8UI",e[e.RGBA32I=36226]="RGBA32I",e[e.RGB32I=36227]="RGB32I",e[e.RGBA16I=36232]="RGBA16I",e[e.RGB16I=36233]="RGB16I",e[e.RGBA8I=36238]="RGBA8I",e[e.RGB8I=36239]="RGB8I",e[e.RED_INTEGER=36244]="RED_INTEGER",e[e.RGB_INTEGER=36248]="RGB_INTEGER",e[e.RGBA_INTEGER=36249]="RGBA_INTEGER",e[e.R8=33321]="R8",e[e.RG8=33323]="RG8",e[e.R16F=33325]="R16F",e[e.R32F=33326]="R32F",e[e.RG16F=33327]="RG16F",e[e.RG32F=33328]="RG32F",e[e.R8I=33329]="R8I",e[e.R8UI=33330]="R8UI",e[e.R16I=33331]="R16I",e[e.R16UI=33332]="R16UI",e[e.R32I=33333]="R32I",e[e.R32UI=33334]="R32UI",e[e.RG8I=33335]="RG8I",e[e.RG8UI=33336]="RG8UI",e[e.RG16I=33337]="RG16I",e[e.RG16UI=33338]="RG16UI",e[e.RG32I=33339]="RG32I",e[e.RG32UI=33340]="RG32UI",e[e.R8_SNORM=36756]="R8_SNORM",e[e.RG8_SNORM=36757]="RG8_SNORM",e[e.RGB8_SNORM=36758]="RGB8_SNORM",e[e.RGBA8_SNORM=36759]="RGBA8_SNORM",e[e.RGB10_A2UI=36975]="RGB10_A2UI",e[e.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",e[e.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",e[e.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",e[e.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",e[e.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",e[e.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",e[e.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",e[e.HALF_FLOAT=5131]="HALF_FLOAT",e[e.RG=33319]="RG",e[e.RG_INTEGER=33320]="RG_INTEGER",e[e.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",e[e.CURRENT_QUERY=34917]="CURRENT_QUERY",e[e.QUERY_RESULT=34918]="QUERY_RESULT",e[e.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",e[e.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",e[e.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",e[e.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",e[e.DRAW_BUFFER0=34853]="DRAW_BUFFER0",e[e.DRAW_BUFFER1=34854]="DRAW_BUFFER1",e[e.DRAW_BUFFER2=34855]="DRAW_BUFFER2",e[e.DRAW_BUFFER3=34856]="DRAW_BUFFER3",e[e.DRAW_BUFFER4=34857]="DRAW_BUFFER4",e[e.DRAW_BUFFER5=34858]="DRAW_BUFFER5",e[e.DRAW_BUFFER6=34859]="DRAW_BUFFER6",e[e.DRAW_BUFFER7=34860]="DRAW_BUFFER7",e[e.DRAW_BUFFER8=34861]="DRAW_BUFFER8",e[e.DRAW_BUFFER9=34862]="DRAW_BUFFER9",e[e.DRAW_BUFFER10=34863]="DRAW_BUFFER10",e[e.DRAW_BUFFER11=34864]="DRAW_BUFFER11",e[e.DRAW_BUFFER12=34865]="DRAW_BUFFER12",e[e.DRAW_BUFFER13=34866]="DRAW_BUFFER13",e[e.DRAW_BUFFER14=34867]="DRAW_BUFFER14",e[e.DRAW_BUFFER15=34868]="DRAW_BUFFER15",e[e.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",e[e.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",e[e.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",e[e.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",e[e.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",e[e.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",e[e.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",e[e.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",e[e.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",e[e.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",e[e.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",e[e.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",e[e.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",e[e.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",e[e.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",e[e.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",e[e.SAMPLER_3D=35679]="SAMPLER_3D",e[e.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",e[e.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",e[e.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",e[e.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",e[e.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",e[e.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",e[e.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",e[e.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",e[e.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",e[e.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",e[e.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",e[e.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",e[e.MAX_SAMPLES=36183]="MAX_SAMPLES",e[e.SAMPLER_BINDING=35097]="SAMPLER_BINDING",e[e.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",e[e.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",e[e.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",e[e.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",e[e.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",e[e.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",e[e.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",e[e.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",e[e.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",e[e.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",e[e.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",e[e.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",e[e.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",e[e.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",e[e.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",e[e.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",e[e.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",e[e.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",e[e.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",e[e.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",e[e.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",e[e.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",e[e.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",e[e.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",e[e.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",e[e.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",e[e.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",e[e.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",e[e.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",e[e.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",e[e.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",e[e.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",e[e.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",e[e.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",e[e.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",e[e.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",e[e.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",e[e.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",e[e.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",e[e.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",e[e.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",e[e.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",e[e.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",e[e.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",e[e.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",e[e.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",e[e.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",e[e.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",e[e.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",e[e.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",e[e.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",e[e.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",e[e.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",e[e.UNIFORM_TYPE=35383]="UNIFORM_TYPE",e[e.UNIFORM_SIZE=35384]="UNIFORM_SIZE",e[e.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",e[e.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",e[e.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",e[e.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",e[e.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",e[e.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",e[e.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",e[e.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",e[e.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",e[e.OBJECT_TYPE=37138]="OBJECT_TYPE",e[e.SYNC_CONDITION=37139]="SYNC_CONDITION",e[e.SYNC_STATUS=37140]="SYNC_STATUS",e[e.SYNC_FLAGS=37141]="SYNC_FLAGS",e[e.SYNC_FENCE=37142]="SYNC_FENCE",e[e.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",e[e.UNSIGNALED=37144]="UNSIGNALED",e[e.SIGNALED=37145]="SIGNALED",e[e.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",e[e.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",e[e.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",e[e.WAIT_FAILED=37149]="WAIT_FAILED",e[e.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",e[e.COLOR=6144]="COLOR",e[e.DEPTH=6145]="DEPTH",e[e.STENCIL=6146]="STENCIL",e[e.MIN=32775]="MIN",e[e.MAX=32776]="MAX",e[e.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",e[e.STREAM_READ=35041]="STREAM_READ",e[e.STREAM_COPY=35042]="STREAM_COPY",e[e.STATIC_READ=35045]="STATIC_READ",e[e.STATIC_COPY=35046]="STATIC_COPY",e[e.DYNAMIC_READ=35049]="DYNAMIC_READ",e[e.DYNAMIC_COPY=35050]="DYNAMIC_COPY",e[e.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",e[e.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",e[e.INVALID_INDEX=4294967295]="INVALID_INDEX",e[e.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",e[e.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",e[e.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",e[e.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",e[e.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",e[e.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",e[e.R16_EXT=33322]="R16_EXT",e[e.RG16_EXT=33324]="RG16_EXT",e[e.RGB16_EXT=32852]="RGB16_EXT",e[e.RGBA16_EXT=32859]="RGBA16_EXT",e[e.R16_SNORM_EXT=36760]="R16_SNORM_EXT",e[e.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",e[e.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",e[e.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",e[e.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",e[e.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",e[e.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",e[e.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",e[e.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",e[e.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",e[e.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",e[e.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",e[e.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",e[e.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",e[e.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",e[e.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",e[e.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",e[e.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",e[e.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",e[e.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",e[e.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",e[e.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",e[e.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",e[e.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",e[e.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",e[e.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",e[e.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",e[e.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",e[e.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",e[e.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",e[e.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",e[e.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",e[e.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",e[e.COMPLETION_STATUS_KHR=37297]="COMPLETION_STATUS_KHR",e[e.DEPTH_CLAMP_EXT=34383]="DEPTH_CLAMP_EXT",e[e.FIRST_VERTEX_CONVENTION_WEBGL=36429]="FIRST_VERTEX_CONVENTION_WEBGL",e[e.LAST_VERTEX_CONVENTION_WEBGL=36430]="LAST_VERTEX_CONVENTION_WEBGL",e[e.PROVOKING_VERTEX_WEBL=36431]="PROVOKING_VERTEX_WEBL",e[e.POLYGON_MODE_WEBGL=2880]="POLYGON_MODE_WEBGL",e[e.POLYGON_OFFSET_LINE_WEBGL=10754]="POLYGON_OFFSET_LINE_WEBGL",e[e.LINE_WEBGL=6913]="LINE_WEBGL",e[e.FILL_WEBGL=6914]="FILL_WEBGL",e[e.MAX_CLIP_DISTANCES_WEBGL=3378]="MAX_CLIP_DISTANCES_WEBGL",e[e.MAX_CULL_DISTANCES_WEBGL=33529]="MAX_CULL_DISTANCES_WEBGL",e[e.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL=33530]="MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL",e[e.CLIP_DISTANCE0_WEBGL=12288]="CLIP_DISTANCE0_WEBGL",e[e.CLIP_DISTANCE1_WEBGL=12289]="CLIP_DISTANCE1_WEBGL",e[e.CLIP_DISTANCE2_WEBGL=12290]="CLIP_DISTANCE2_WEBGL",e[e.CLIP_DISTANCE3_WEBGL=12291]="CLIP_DISTANCE3_WEBGL",e[e.CLIP_DISTANCE4_WEBGL=12292]="CLIP_DISTANCE4_WEBGL",e[e.CLIP_DISTANCE5_WEBGL=12293]="CLIP_DISTANCE5_WEBGL",e[e.CLIP_DISTANCE6_WEBGL=12294]="CLIP_DISTANCE6_WEBGL",e[e.CLIP_DISTANCE7_WEBGL=12295]="CLIP_DISTANCE7_WEBGL",e[e.POLYGON_OFFSET_CLAMP_EXT=36379]="POLYGON_OFFSET_CLAMP_EXT",e[e.LOWER_LEFT_EXT=36001]="LOWER_LEFT_EXT",e[e.UPPER_LEFT_EXT=36002]="UPPER_LEFT_EXT",e[e.NEGATIVE_ONE_TO_ONE_EXT=37726]="NEGATIVE_ONE_TO_ONE_EXT",e[e.ZERO_TO_ONE_EXT=37727]="ZERO_TO_ONE_EXT",e[e.CLIP_ORIGIN_EXT=37724]="CLIP_ORIGIN_EXT",e[e.CLIP_DEPTH_MODE_EXT=37725]="CLIP_DEPTH_MODE_EXT",e[e.SRC1_COLOR_WEBGL=35065]="SRC1_COLOR_WEBGL",e[e.SRC1_ALPHA_WEBGL=34185]="SRC1_ALPHA_WEBGL",e[e.ONE_MINUS_SRC1_COLOR_WEBGL=35066]="ONE_MINUS_SRC1_COLOR_WEBGL",e[e.ONE_MINUS_SRC1_ALPHA_WEBGL=35067]="ONE_MINUS_SRC1_ALPHA_WEBGL",e[e.MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL=35068]="MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL",e[e.MIRROR_CLAMP_TO_EDGE_EXT=34627]="MIRROR_CLAMP_TO_EDGE_EXT"})(or||(or={}))});var Fm=A(()=>{Dm()});function Bm(e=!0){let t=HTMLCanvasElement.prototype;if(!e&&t.originalGetContext){t.getContext=t.originalGetContext,t.originalGetContext=void 0;return}t.originalGetContext=t.getContext,t.getContext=function(r,i){if(r==="webgl"||r==="experimental-webgl"){let s=this.originalGetContext("webgl2",i);return s instanceof HTMLElement&&g3(s),s}return this.originalGetContext(r,i)}}function g3(e){e.getExtension("EXT_color_buffer_float");let t={...h3,WEBGL_disjoint_timer_query:e.getExtension("EXT_disjoint_timer_query_webgl2"),WEBGL_draw_buffers:u3(e),OES_vertex_array_object:d3(e),ANGLE_instanced_arrays:p3(e)},r=e.getExtension;e.getExtension=function(s){let o=r.call(e,s);return o||(s in t?t[s]:null)};let i=e.getSupportedExtensions;e.getSupportedExtensions=function(){return(i.apply(e)||[])?.concat(Object.keys(t))}}var h3,u3,d3,p3,Lm=A(()=>{h3={WEBGL_depth_texture:{UNSIGNED_INT_24_8_WEBGL:34042},OES_element_index_uint:{},OES_texture_float:{},OES_texture_half_float:{HALF_FLOAT_OES:5131},EXT_color_buffer_float:{},OES_standard_derivatives:{FRAGMENT_SHADER_DERIVATIVE_HINT_OES:35723},EXT_frag_depth:{},EXT_blend_minmax:{MIN_EXT:32775,MAX_EXT:32776},EXT_shader_texture_lod:{}},u3=e=>({drawBuffersWEBGL(t){return e.drawBuffers(t)},COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067}),d3=e=>({VERTEX_ARRAY_BINDING_OES:34229,createVertexArrayOES(){return e.createVertexArray()},deleteVertexArrayOES(t){return e.deleteVertexArray(t)},isVertexArrayOES(t){return e.isVertexArray(t)},bindVertexArrayOES(t){return e.bindVertexArray(t)}}),p3=e=>({VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:35070,drawArraysInstancedANGLE(...t){return e.drawArraysInstanced(...t)},drawElementsInstancedANGLE(...t){return e.drawElementsInstanced(...t)},vertexAttribDivisorANGLE(...t){return e.vertexAttribDivisor(...t)}})});async function wa(e,t){let r=document.getElementsByTagName("head")[0];if(!r)throw new Error("loadScript");let i=document.createElement("script");return i.setAttribute("type","text/javascript"),i.setAttribute("src",e),t&&(i.id=t),new Promise((s,o)=>{i.onload=s,i.onerror=n=>o(new Error(`Unable to load script '${e}': ${n}`)),r.appendChild(i)})}var wh=A(()=>{});async function km(e){if(!globalThis.SPECTOR)try{await wa(e.debugSpectorJSUrl||Pa.debugSpectorJSUrl)}catch(t){b.warn(String(t))}}function Vm(e){if(e={...Pa,...e},!e.debugSpectorJS)return null;if(!Rt&&globalThis.SPECTOR&&!globalThis.luma?.spector){b.probe(m3,"SPECTOR found and initialized. Start with `luma.spector.displayUI()`")();let{Spector:t}=globalThis.SPECTOR;Rt=new t,globalThis.luma&&(globalThis.luma.spector=Rt)}if(!Rt)return null;if(Um||(Um=!0,Rt.spyCanvases(),Rt?.onCaptureStarted.add(t=>b.info("Spector capture started:",t)()),Rt?.onCapture.add(t=>{b.info("Spector capture complete:",t)(),Rt?.getResultUI(),Rt?.resultView.display(),Rt?.resultView.addCapture(t)})),e.gl){let t=e.gl,r=t.device;Rt?.startCapture(e.gl,500),t.device=r,new Promise(i=>setTimeout(i,2e3)).then(i=>{b.info("Spector capture stopped after 2 seconds")(),Rt?.stopCapture()})}return Rt}var m3,Rt,Um,Pa,Ph=A(()=>{D();wh();m3=1,Rt=null,Um=!1,Pa={debugSpectorJS:b.get("debug-spectorjs"),debugSpectorJSUrl:"https://cdn.jsdelivr.net/npm/spectorjs@0.9.30/dist/spector.bundle.js",gl:void 0}});function jm(e){return e.luma=e.luma||{},e.luma}async function Wm(){ye()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await wa(_3))}function Hm(e,t={}){return t.debugWebGL||t.traceWebGL?y3(e,t):T3(e)}function T3(e){let t=jm(e);return t.realContext?t.realContext:e}function y3(e,t){if(!globalThis.WebGLDebugUtils)return b.warn("webgl-debug not loaded")(),e;let r=jm(e);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({...or,...e});let i=globalThis.WebGLDebugUtils.makeDebugContext(e,b3.bind(null,t),x3.bind(null,t));for(let n in or)!(n in i)&&typeof or[n]=="number"&&(i[n]=or[n]);class s{}Object.setPrototypeOf(i,Object.getPrototypeOf(e)),Object.setPrototypeOf(s,i);let o=Object.create(s);return r.realContext=e,r.debugContext=o,o.debug=!0,o}function zm(e,t){t=Array.from(t).map(i=>i===void 0?"undefined":i);let r=globalThis.WebGLDebugUtils.glFunctionArgsToString(e,t);return r=`${r.slice(0,100)}${r.length>100?"...":""}`,`gl.${e}(${r})`}function b3(e,t,r,i){i=Array.from(i).map(a=>a===void 0?"undefined":a);let s=globalThis.WebGLDebugUtils.glEnumToString(t),o=globalThis.WebGLDebugUtils.glFunctionArgsToString(r,i),n=`${s} in gl.${r}(${o})`;b.error("%cWebGL","color: white; background: red; padding: 2px 6px; border-radius: 3px;",n)();debugger;throw new Error(n)}function x3(e,t,r){let i="";e.traceWebGL&&b.level>=1&&(i=zm(t,r),b.info(1,"%cWebGL","color: white; background: blue; padding: 2px 6px; border-radius: 3px;",i)());for(let s of r)if(s===void 0){i=i||zm(t,r);debugger}}var _3,Mh=A(()=>{D();Fm();Zi();wh();_3="https://unpkg.com/webgl-debug@2.0.1/index.js"});function vh(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Q(e,t,r){return t[e]!==void 0?t[e]:r[e]}var lo,st,Xm,wt,$m,co,Ym,Km,Ch,ce,Ih,qm,Oh=A(()=>{lo={[3042]:!1,[32773]:new Float32Array([0,0,0,0]),[32777]:32774,[34877]:32774,[32969]:1,[32968]:0,[32971]:1,[32970]:0,[3106]:new Float32Array([0,0,0,0]),[3107]:[!0,!0,!0,!0],[2884]:!1,[2885]:1029,[2929]:!1,[2931]:1,[2932]:513,[2928]:new Float32Array([0,1]),[2930]:!0,[3024]:!0,[35725]:null,[36006]:null,[36007]:null,[34229]:null,[34964]:null,[2886]:2305,[33170]:4352,[2849]:1,[32823]:!1,[32824]:0,[10752]:0,[32926]:!1,[32928]:!1,[32938]:1,[32939]:!1,[3089]:!1,[3088]:new Int32Array([0,0,1024,1024]),[2960]:!1,[2961]:0,[2968]:4294967295,[36005]:4294967295,[2962]:519,[2967]:0,[2963]:4294967295,[34816]:519,[36003]:0,[36004]:4294967295,[2964]:7680,[2965]:7680,[2966]:7680,[34817]:7680,[34818]:7680,[34819]:7680,[2978]:[0,0,1024,1024],[36389]:null,[36662]:null,[36663]:null,[35053]:null,[35055]:null,[35723]:4352,[36010]:null,[35977]:!1,[3333]:4,[3317]:4,[37440]:!1,[37441]:!1,[37443]:37444,[3330]:0,[3332]:0,[3331]:0,[3314]:0,[32878]:0,[3316]:0,[3315]:0,[32877]:0},st=(e,t,r)=>t?e.enable(r):e.disable(r),Xm=(e,t,r)=>e.hint(r,t),wt=(e,t,r)=>e.pixelStorei(r,t),$m=(e,t,r)=>{let i=r===36006?36009:36008;return e.bindFramebuffer(i,t)},co=(e,t,r)=>{let s={[34964]:34962,[36662]:36662,[36663]:36663,[35053]:35051,[35055]:35052}[r];e.bindBuffer(s,t)};Ym={[3042]:st,[32773]:(e,t)=>e.blendColor(...t),[32777]:"blendEquation",[34877]:"blendEquation",[32969]:"blendFunc",[32968]:"blendFunc",[32971]:"blendFunc",[32970]:"blendFunc",[3106]:(e,t)=>e.clearColor(...t),[3107]:(e,t)=>e.colorMask(...t),[2884]:st,[2885]:(e,t)=>e.cullFace(t),[2929]:st,[2931]:(e,t)=>e.clearDepth(t),[2932]:(e,t)=>e.depthFunc(t),[2928]:(e,t)=>e.depthRange(...t),[2930]:(e,t)=>e.depthMask(t),[3024]:st,[35723]:Xm,[35725]:(e,t)=>e.useProgram(t),[36007]:(e,t)=>e.bindRenderbuffer(36161,t),[36389]:(e,t)=>e.bindTransformFeedback?.(36386,t),[34229]:(e,t)=>e.bindVertexArray(t),[36006]:$m,[36010]:$m,[34964]:co,[36662]:co,[36663]:co,[35053]:co,[35055]:co,[2886]:(e,t)=>e.frontFace(t),[33170]:Xm,[2849]:(e,t)=>e.lineWidth(t),[32823]:st,[32824]:"polygonOffset",[10752]:"polygonOffset",[35977]:st,[32926]:st,[32928]:st,[32938]:"sampleCoverage",[32939]:"sampleCoverage",[3089]:st,[3088]:(e,t)=>e.scissor(...t),[2960]:st,[2961]:(e,t)=>e.clearStencil(t),[2968]:(e,t)=>e.stencilMaskSeparate(1028,t),[36005]:(e,t)=>e.stencilMaskSeparate(1029,t),[2962]:"stencilFuncFront",[2967]:"stencilFuncFront",[2963]:"stencilFuncFront",[34816]:"stencilFuncBack",[36003]:"stencilFuncBack",[36004]:"stencilFuncBack",[2964]:"stencilOpFront",[2965]:"stencilOpFront",[2966]:"stencilOpFront",[34817]:"stencilOpBack",[34818]:"stencilOpBack",[34819]:"stencilOpBack",[2978]:(e,t)=>e.viewport(...t),[34383]:st,[10754]:st,[12288]:st,[12289]:st,[12290]:st,[12291]:st,[12292]:st,[12293]:st,[12294]:st,[12295]:st,[3333]:wt,[3317]:wt,[37440]:wt,[37441]:wt,[37443]:wt,[3330]:wt,[3332]:wt,[3331]:wt,[3314]:wt,[32878]:wt,[3316]:wt,[3315]:wt,[32877]:wt,framebuffer:(e,t)=>{let r=t&&"handle"in t?t.handle:t;return e.bindFramebuffer(36160,r)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{let r=typeof t=="number"?[t,t]:t;e.blendEquationSeparate(...r)},blendFunc:(e,t)=>{let r=t?.length===2?[...t,...t]:t;e.blendFuncSeparate(...r)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(t[0],t[1]||!1),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{t=vh(t)?t:[t,t];let[r,i]=t;e.stencilMaskSeparate(1028,r),e.stencilMaskSeparate(1029,i)},stencilFunc:(e,t)=>{t=vh(t)&&t.length===3?[...t,...t]:t;let[r,i,s,o,n,a]=t;e.stencilFuncSeparate(1028,r,i,s),e.stencilFuncSeparate(1029,o,n,a)},stencilOp:(e,t)=>{t=vh(t)&&t.length===3?[...t,...t]:t;let[r,i,s,o,n,a]=t;e.stencilOpSeparate(1028,r,i,s),e.stencilOpSeparate(1029,o,n,a)},viewport:(e,t)=>e.viewport(...t)};Km={blendEquation:(e,t,r)=>e.blendEquationSeparate(Q(32777,t,r),Q(34877,t,r)),blendFunc:(e,t,r)=>e.blendFuncSeparate(Q(32969,t,r),Q(32968,t,r),Q(32971,t,r),Q(32970,t,r)),polygonOffset:(e,t,r)=>e.polygonOffset(Q(32824,t,r),Q(10752,t,r)),sampleCoverage:(e,t,r)=>e.sampleCoverage(Q(32938,t,r),Q(32939,t,r)),stencilFuncFront:(e,t,r)=>e.stencilFuncSeparate(1028,Q(2962,t,r),Q(2967,t,r),Q(2963,t,r)),stencilFuncBack:(e,t,r)=>e.stencilFuncSeparate(1029,Q(34816,t,r),Q(36003,t,r),Q(36004,t,r)),stencilOpFront:(e,t,r)=>e.stencilOpSeparate(1028,Q(2964,t,r),Q(2965,t,r),Q(2966,t,r)),stencilOpBack:(e,t,r)=>e.stencilOpSeparate(1029,Q(34817,t,r),Q(34818,t,r),Q(34819,t,r))},Ch={enable:(e,t)=>e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,r)=>e({[t]:r}),hint:(e,t,r)=>e({[t]:r}),useProgram:(e,t)=>e({[35725]:t}),bindRenderbuffer:(e,t,r)=>e({[36007]:r}),bindTransformFeedback:(e,t,r)=>e({[36389]:r}),bindVertexArray:(e,t)=>e({[34229]:t}),bindFramebuffer:(e,t,r)=>{switch(t){case 36160:return e({[36006]:r,[36010]:r});case 36009:return e({[36006]:r});case 36008:return e({[36010]:r});default:return null}},bindBuffer:(e,t,r)=>{let i={[34962]:[34964],[36662]:[36662],[36663]:[36663],[35051]:[35053],[35052]:[35055]}[t];return i?e({[i]:r}):{valueChanged:!0}},blendColor:(e,t,r,i,s)=>e({[32773]:new Float32Array([t,r,i,s])}),blendEquation:(e,t)=>e({[32777]:t,[34877]:t}),blendEquationSeparate:(e,t,r)=>e({[32777]:t,[34877]:r}),blendFunc:(e,t,r)=>e({[32969]:t,[32968]:r,[32971]:t,[32970]:r}),blendFuncSeparate:(e,t,r,i,s)=>e({[32969]:t,[32968]:r,[32971]:i,[32970]:s}),clearColor:(e,t,r,i,s)=>e({[3106]:new Float32Array([t,r,i,s])}),clearDepth:(e,t)=>e({[2931]:t}),clearStencil:(e,t)=>e({[2961]:t}),colorMask:(e,t,r,i,s)=>e({[3107]:[t,r,i,s]}),cullFace:(e,t)=>e({[2885]:t}),depthFunc:(e,t)=>e({[2932]:t}),depthRange:(e,t,r)=>e({[2928]:new Float32Array([t,r])}),depthMask:(e,t)=>e({[2930]:t}),frontFace:(e,t)=>e({[2886]:t}),lineWidth:(e,t)=>e({[2849]:t}),polygonOffset:(e,t,r)=>e({[32824]:t,[10752]:r}),sampleCoverage:(e,t,r)=>e({[32938]:t,[32939]:r}),scissor:(e,t,r,i,s)=>e({[3088]:new Int32Array([t,r,i,s])}),stencilMask:(e,t)=>e({[2968]:t,[36005]:t}),stencilMaskSeparate:(e,t,r)=>e({[t===1028?2968:36005]:r}),stencilFunc:(e,t,r,i)=>e({[2962]:t,[2967]:r,[2963]:i,[34816]:t,[36003]:r,[36004]:i}),stencilFuncSeparate:(e,t,r,i,s)=>e({[t===1028?2962:34816]:r,[t===1028?2967:36003]:i,[t===1028?2963:36004]:s}),stencilOp:(e,t,r,i)=>e({[2964]:t,[2965]:r,[2966]:i,[34817]:t,[34818]:r,[34819]:i}),stencilOpSeparate:(e,t,r,i,s)=>e({[t===1028?2964:34817]:r,[t===1028?2965:34818]:i,[t===1028?2966:34819]:s}),viewport:(e,t,r,i,s)=>e({[2978]:[t,r,i,s]})},ce=(e,t)=>e.isEnabled(t),Ih={[3042]:ce,[2884]:ce,[2929]:ce,[3024]:ce,[32823]:ce,[32926]:ce,[32928]:ce,[3089]:ce,[2960]:ce,[35977]:ce},qm=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068])});function Yt(e,t){if(A3(t))return;let r={};for(let s in t){let o=Number(s),n=Ym[s];n&&(typeof n=="string"?r[n]=!0:n(e,t[s],o))}let i=e.state&&e.state.cache;if(i)for(let s in r){let o=Km[s];o(e,t,i)}}function Ma(e,t=lo){if(typeof t=="number"){let s=t,o=Ih[s];return o?o(e,s):e.getParameter(s)}let r=Array.isArray(t)?t:Object.keys(t),i={};for(let s of r){let o=Ih[s];i[s]=o?o(e,Number(s)):e.getParameter(Number(s))}return i}function Zm(e){Yt(e,lo)}function A3(e){for(let t in e)return!1;return!0}var Oi=A(()=>{Oh()});function Qm(e,t){if(e===t)return!0;if(Jm(e)&&Jm(t)&&e.length===t.length){for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}return!1}function Jm(e){return Array.isArray(e)||ArrayBuffer.isView(e)}var Gm=A(()=>{});function t_(e,t){let r=e[t].bind(e);e[t]=function(s){if(s===void 0||qm.has(s))return r(s);let o=Kt.get(e);return s in o.cache||(o.cache[s]=r(s)),o.enable?o.cache[s]:r(s)},Object.defineProperty(e[t],"name",{value:`${t}-from-cache`,configurable:!1})}function S3(e,t,r){if(!e[t])return;let i=e[t].bind(e);e[t]=function(...o){let n=Kt.get(e),{valueChanged:a,oldValue:c}=r(n._updateCache,...o);return a&&i(...o),c},Object.defineProperty(e[t],"name",{value:`${t}-to-cache`,configurable:!1})}function E3(e){let t=e.useProgram.bind(e);e.useProgram=function(i){let s=Kt.get(e);s.program!==i&&(t(i),s.program=i)}}var Kt,Nh=A(()=>{Oi();Gm();Oh();Kt=class{static get(t){return t.state}gl;program=null;stateStack=[];enable=!0;cache=null;log;initialized=!1;constructor(t,r){this.gl=t,this.log=r?.log||(()=>{}),this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(t={}){this.stateStack.push({})}pop(){let t=this.stateStack[this.stateStack.length-1];Yt(this.gl,t),this.stateStack.pop()}trackState(t,r){if(this.cache=r?.copyState?Ma(t):Object.assign({},lo),this.initialized)throw new Error("WebGLStateTracker");this.initialized=!0,this.gl.state=this,E3(t);for(let i in Ch){let s=Ch[i];S3(t,i,s)}t_(t,"getParameter"),t_(t,"isEnabled")}_updateCache(t){let r=!1,i,s=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let o in t){let n=t[o],a=this.cache[o];Qm(n,a)||(r=!0,i=a,s&&!(o in s)&&(s[o]=a),this.cache[o]=n)}return{valueChanged:r,oldValue:i}}}});function e_(e,t,r){let i="",s=c=>{let l=c.statusMessage;l&&(i||=l)};e.addEventListener("webglcontextcreationerror",s,!1);let o=r.failIfMajorPerformanceCaveat!==!0,n={preserveDrawingBuffer:!0,...r,failIfMajorPerformanceCaveat:!0},a=null;try{if(a||=e.getContext("webgl2",n),!a&&n.failIfMajorPerformanceCaveat&&(i||="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow."),!a&&o&&(n.failIfMajorPerformanceCaveat=!1,a=e.getContext("webgl2",n),a&&(a.luma||={},a.luma.softwareRenderer=!0)),a||(a=e.getContext("webgl",{}),a&&(a=null,i||="Your browser only supports WebGL1")),!a)throw i||="Your browser does not support WebGL",new Error(`Failed to create WebGL context: ${i}`);let{onContextLost:c,onContextRestored:l}=t;return e.addEventListener("webglcontextlost",f=>c(f),!1),e.addEventListener("webglcontextrestored",f=>l(f),!1),a.luma||={},a}finally{e.removeEventListener("webglcontextcreationerror",s,!1)}}var r_=A(()=>{});function le(e,t,r){return r[t]===void 0&&(r[t]=e.getExtension(t)||null),r[t]}var fo=A(()=>{});function i_(e,t){let r=e.getParameter(7936),i=e.getParameter(7937);le(e,"WEBGL_debug_renderer_info",t);let s=t.WEBGL_debug_renderer_info,o=e.getParameter(s?s.UNMASKED_VENDOR_WEBGL:7936),n=e.getParameter(s?s.UNMASKED_RENDERER_WEBGL:7937),a=o||r,c=n||i,l=e.getParameter(7938),f=s_(a,c),h=R3(a,c),u=w3(a,c);return{type:"webgl",gpu:f,gpuType:u,gpuBackend:h,vendor:a,renderer:c,version:l,shadingLanguage:"glsl",shadingLanguageVersion:300}}function s_(e,t){return/NVIDIA/i.exec(e)||/NVIDIA/i.exec(t)?"nvidia":/INTEL/i.exec(e)||/INTEL/i.exec(t)?"intel":/Apple/i.exec(e)||/Apple/i.exec(t)?"apple":/AMD/i.exec(e)||/AMD/i.exec(t)||/ATI/i.exec(e)||/ATI/i.exec(t)?"amd":/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t)?"software":"unknown"}function R3(e,t){return/Metal/i.exec(e)||/Metal/i.exec(t)?"metal":/ANGLE/i.exec(e)||/ANGLE/i.exec(t)?"opengl":"unknown"}function w3(e,t){if(/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t))return"cpu";switch(s_(e,t)){case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}var o_=A(()=>{fo()});function va(e){switch(e){case"uint8":return 5121;case"sint8":return 5120;case"unorm8":return 5121;case"snorm8":return 5120;case"uint16":return 5123;case"sint16":return 5122;case"unorm16":return 5123;case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw new Error(String(e))}var Dh=A(()=>{});function c_(e){return e in Ca}function l_(e,t,r){return(Ca[t]||[]).every(s=>le(e,s,r))}function f_(e,t,r){let i=t.create,s=Fh[t.format];return s?.gl===void 0&&(i=!1),s?.x&&(i=i&&Boolean(le(e,s.x,r))),{format:t.format,create:i&&t.create,render:i&&t.render,filter:i&&t.filter,blend:i&&t.blend,store:i&&t.store}}function Ia(e){let t=Fh[e],r=D3(e),i=Pt.getInfo(e);return i.compressed&&(t.dataFormat=r),{internalFormat:r,format:t?.dataFormat||N3(i.channels,i.integer,i.normalized,r),type:i.dataType?va(i.dataType):t?.types?.[0]||5121,compressed:i.compressed||!1}}function h_(e){switch(Pt.getInfo(e).attachment){case"depth":return 36096;case"stencil":return 36128;case"depth-stencil":return 33306;default:throw new Error(`Not a depth stencil format: ${e}`)}}function N3(e,t,r,i){if(i===6408||i===6407)return i;switch(e){case"r":return t&&!r?36244:6403;case"rg":return t&&!r?33320:33319;case"rgb":return t&&!r?36248:6407;case"rgba":return t&&!r?36249:6408;case"bgra":throw new Error("bgra pixels not supported by WebGL");default:return 6408}}function D3(e){let r=Fh[e]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${e}`);return r}var ho,uo,Ni,Di,P3,M3,v3,C3,I3,n_,a_,O3,Ca,Fh,Fi=A(()=>{D();fo();Dh();ho="WEBGL_compressed_texture_s3tc",uo="WEBGL_compressed_texture_s3tc_srgb",Ni="EXT_texture_compression_rgtc",Di="EXT_texture_compression_bptc",P3="WEBGL_compressed_texture_etc",M3="WEBGL_compressed_texture_astc",v3="WEBGL_compressed_texture_etc1",C3="WEBGL_compressed_texture_pvrtc",I3="WEBGL_compressed_texture_atc",n_="EXT_texture_norm16",a_="EXT_render_snorm",O3="EXT_color_buffer_float",Ca={"float32-renderable-webgl":["EXT_color_buffer_float"],"float16-renderable-webgl":["EXT_color_buffer_half_float"],"rgb9e5ufloat-renderable-webgl":["WEBGL_render_shared_exponent"],"snorm8-renderable-webgl":[a_],"norm16-renderable-webgl":[n_],"snorm16-renderable-webgl":[n_,a_],"float32-filterable":["OES_texture_float_linear"],"float16-filterable-webgl":["OES_texture_half_float_linear"],"texture-filterable-anisotropic-webgl":["EXT_texture_filter_anisotropic"],"texture-blend-float-webgl":["EXT_float_blend"],"texture-compression-bc":[ho,uo,Ni,Di],"texture-compression-bc5-webgl":[Ni],"texture-compression-bc7-webgl":[Di],"texture-compression-etc2":[P3],"texture-compression-astc":[M3],"texture-compression-etc1-webgl":[v3],"texture-compression-pvrtc-webgl":[C3],"texture-compression-atc-webgl":[I3]};Fh={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757},rg8uint:{gl:33336,rb:!0},rg8sint:{gl:33335,rb:!0},r16uint:{gl:33332,rb:!0},r16sint:{gl:33331,rb:!0},r16float:{gl:33325,rb:!0},r16unorm:{gl:33322,rb:!0},r16snorm:{gl:36760},"rgba4unorm-webgl":{gl:32854,rb:!0},"rgb565unorm-webgl":{gl:36194,rb:!0},"rgb5a1unorm-webgl":{gl:32855,rb:!0},"rgb8unorm-webgl":{gl:32849},"rgb8snorm-webgl":{gl:36758},rgba8unorm:{gl:32856},"rgba8unorm-srgb":{gl:35907},rgba8snorm:{gl:36759},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0},rg16unorm:{gl:33324},rg16snorm:{gl:36761},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326},rgb9e5ufloat:{gl:35901},rg11b10ufloat:{gl:35898,rb:!0},rgb10a2unorm:{gl:32857,rb:!0},rgb10a2uint:{gl:36975,rb:!0},"rgb16unorm-webgl":{gl:32852},"rgb16snorm-webgl":{gl:36762},rg32uint:{gl:33340,rb:!0},rg32sint:{gl:33339,rb:!0},rg32float:{gl:33328,rb:!0},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842},rgba16unorm:{gl:32859,rb:!0},rgba16snorm:{gl:36763},"rgb32float-webgl":{gl:34837,x:O3,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0},stencil8:{gl:36168,rb:!0},depth16unorm:{gl:33189,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,dataFormat:6402,types:[5125]},depth32float:{gl:36012,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth32float-stencil8":{gl:36013,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:ho},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:uo},"bc1-rgba-unorm":{gl:33777,x:ho},"bc1-rgba-unorm-srgb":{gl:35916,x:uo},"bc2-rgba-unorm":{gl:33778,x:ho},"bc2-rgba-unorm-srgb":{gl:35918,x:uo},"bc3-rgba-unorm":{gl:33779,x:ho},"bc3-rgba-unorm-srgb":{gl:35919,x:uo},"bc4-r-unorm":{gl:36283,x:Ni},"bc4-r-snorm":{gl:36284,x:Ni},"bc5-rg-unorm":{gl:36285,x:Ni},"bc5-rg-snorm":{gl:36286,x:Ni},"bc6h-rgb-ufloat":{gl:36495,x:Di},"bc6h-rgb-float":{gl:36494,x:Di},"bc7-rgba-unorm":{gl:36492,x:Di},"bc7-rgba-unorm-srgb":{gl:36493,x:Di},"etc2-rgb8unorm":{gl:37492},"etc2-rgb8unorm-srgb":{gl:37494},"etc2-rgb8a1unorm":{gl:37496},"etc2-rgb8a1unorm-srgb":{gl:37497},"etc2-rgba8unorm":{gl:37493},"etc2-rgba8unorm-srgb":{gl:37495},"eac-r11unorm":{gl:37488},"eac-r11snorm":{gl:37489},"eac-rg11unorm":{gl:37490},"eac-rg11snorm":{gl:37491},"astc-4x4-unorm":{gl:37808},"astc-4x4-unorm-srgb":{gl:37840},"astc-5x4-unorm":{gl:37809},"astc-5x4-unorm-srgb":{gl:37841},"astc-5x5-unorm":{gl:37810},"astc-5x5-unorm-srgb":{gl:37842},"astc-6x5-unorm":{gl:37811},"astc-6x5-unorm-srgb":{gl:37843},"astc-6x6-unorm":{gl:37812},"astc-6x6-unorm-srgb":{gl:37844},"astc-8x5-unorm":{gl:37813},"astc-8x5-unorm-srgb":{gl:37845},"astc-8x6-unorm":{gl:37814},"astc-8x6-unorm-srgb":{gl:37846},"astc-8x8-unorm":{gl:37815},"astc-8x8-unorm-srgb":{gl:37847},"astc-10x5-unorm":{gl:37819},"astc-10x5-unorm-srgb":{gl:37851},"astc-10x6-unorm":{gl:37817},"astc-10x6-unorm-srgb":{gl:37849},"astc-10x8-unorm":{gl:37818},"astc-10x8-unorm-srgb":{gl:37850},"astc-10x10-unorm":{gl:37819},"astc-10x10-unorm-srgb":{gl:37851},"astc-12x10-unorm":{gl:37820},"astc-12x10-unorm-srgb":{gl:37852},"astc-12x12-unorm":{gl:37821},"astc-12x12-unorm-srgb":{gl:37853},"pvrtc-rgb4unorm-webgl":{gl:35840},"pvrtc-rgba4unorm-webgl":{gl:35842},"pvrtc-rbg2unorm-webgl":{gl:35841},"pvrtc-rgba2unorm-webgl":{gl:35843},"etc1-rbg-unorm-webgl":{gl:36196},"atc-rgb-unorm-webgl":{gl:35986},"atc-rgba-unorm-webgl":{gl:35986},"atc-rgbai-unorm-webgl":{gl:34798}}});var u_,Oa,d_=A(()=>{D();fo();Fi();u_={"depth-clip-control":"EXT_depth_clamp","timer-query-webgl":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"},Oa=class extends qi{gl;extensions;testedFeatures=new Set;constructor(t,r,i){super([],i),this.gl=t,this.extensions=r,le(t,"EXT_color_buffer_float",r)}*[Symbol.iterator](){let t=this.getFeatures();for(let r of t)this.has(r)&&(yield r);return[]}has(t){return this.disabledFeatures?.[t]?!1:(this.testedFeatures.has(t)||(this.testedFeatures.add(t),c_(t)&&l_(this.gl,t,this.extensions)&&this.features.add(t),this.getWebGLFeature(t)&&this.features.add(t)),this.features.has(t))}initializeFeatures(){let t=this.getFeatures().filter(r=>r!=="polygon-mode-webgl");for(let r of t)this.has(r)}getFeatures(){return[...Object.keys(u_),...Object.keys(Ca)]}getWebGLFeature(t){let r=u_[t];return Boolean(typeof r=="string"?le(this.gl,r,this.extensions):r)}}});var Na,p_=A(()=>{D();Na=class extends Ki{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderVariables(){return this.getParameter(35659)}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(t){super(),this.gl=t}getParameter(t){return this.limits[t]===void 0&&(this.limits[t]=this.gl.getParameter(t)),this.limits[t]||0}}});function F3(e){return e<34069?e+34069:e}function B3(e){switch(e){case 36053:return"success";case 36054:return"Mismatched attachments";case 36055:return"No attachments";case 36057:return"Height/width mismatch";case 36061:return"Unsupported or split attachments";case 36182:return"Samples mismatch";default:return`${e}`}}var fe,Da=A(()=>{D();Fi();fe=class extends Qt{device;gl;handle;colorAttachments=[];depthStencilAttachment=null;constructor(t,r){super(t,r);let i=r.handle===null;this.device=t,this.gl=t.gl,this.handle=this.props.handle||i?this.props.handle:this.gl.createFramebuffer(),i||(t._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.autoCreateAttachmentTextures(),this.updateAttachments())}destroy(){super.destroy(),!this.destroyed&&this.handle!==null&&this.gl.deleteFramebuffer(this.handle)}updateAttachments(){let t=this.gl.bindFramebuffer(36160,this.handle);for(let r=0;r<this.colorAttachments.length;++r){let i=this.colorAttachments[r];if(i){let s=36064+r;this._attachTextureView(s,i)}}if(this.depthStencilAttachment){let r=h_(this.depthStencilAttachment.props.format);this._attachTextureView(r,this.depthStencilAttachment)}if(this.device.props.debug){let r=this.gl.checkFramebufferStatus(36160);if(r!==36053)throw new Error(`Framebuffer ${B3(r)}`)}this.gl.bindFramebuffer(36160,t)}_attachTextureView(t,r){let{gl:i}=this.device,{texture:s}=r,o=r.props.baseMipLevel,n=r.props.baseArrayLayer;switch(i.bindTexture(s.glTarget,s.handle),s.glTarget){case 35866:case 32879:i.framebufferTextureLayer(36160,t,s.handle,o,n);break;case 34067:let a=F3(n);i.framebufferTexture2D(36160,t,a,s.handle,o);break;case 3553:i.framebufferTexture2D(36160,t,3553,s.handle,o);break;default:throw new Error("Illegal texture type")}i.bindTexture(s.glTarget,null)}}});var Fa,g_=A(()=>{D();Da();Fa=class extends hr{device;handle=null;_framebuffer=null;get[Symbol.toStringTag](){return"WebGLCanvasContext"}constructor(t,r){super(r),this.device=t,this._setAutoCreatedCanvasId(`${this.device.id}-canvas`),this._configureDevice()}_configureDevice(){(this.drawingBufferWidth!==this._framebuffer?.width||this.drawingBufferHeight!==this._framebuffer?.height)&&this._framebuffer?.resize([this.drawingBufferWidth,this.drawingBufferHeight])}_getCurrentFramebuffer(){return this._framebuffer||=new fe(this.device,{id:"canvas-context-framebuffer",handle:null,width:this.drawingBufferWidth,height:this.drawingBufferHeight}),this._framebuffer}}});function m_(e="id"){Bh[e]=Bh[e]||1;let t=Bh[e]++;return`${e}-${t}`}var Bh,__=A(()=>{Bh={}});function L3(e){return e&O.INDEX?34963:e&O.VERTEX?34962:e&O.UNIFORM?35345:34962}function U3(e){return e&O.INDEX||e&O.VERTEX?35044:e&O.UNIFORM?35048:35044}var qt,Ba=A(()=>{D();qt=class extends O{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength=0;bytesUsed=0;constructor(t,r={}){super(t,r),this.device=t,this.gl=this.device.gl;let i=typeof r=="object"?r.handle:void 0;this.handle=i||this.gl.createBuffer(),t._setWebGLDebugMetadata(this.handle,this,{spector:{...this.props,data:typeof this.props.data}}),this.glTarget=L3(this.props.usage),this.glUsage=U3(this.props.usage),this.glIndexType=this.props.indexType==="uint32"?5125:5123,r.data?this._initWithData(r.data,r.byteOffset,r.byteLength):this._initWithByteLength(r.byteLength||0)}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle),this.destroyed=!0,this.handle=null)}_initWithData(t,r=0,i=t.byteLength+r){let s=this.glTarget;this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,this.glUsage),this.gl.bufferSubData(s,r,t),this.gl.bindBuffer(s,null),this.bytesUsed=i,this.byteLength=i,this._setDebugData(t,r,i),this.trackAllocatedMemory(i)}_initWithByteLength(t){let r=t;t===0&&(r=new Float32Array(0));let i=this.glTarget;return this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,r,this.glUsage),this.gl.bindBuffer(i,null),this.bytesUsed=t,this.byteLength=t,this._setDebugData(null,0,t),this.trackAllocatedMemory(t),this}write(t,r=0){let i=ArrayBuffer.isView(t)?t:new Uint8Array(t),s=0,o=void 0,n=36663;this.gl.bindBuffer(n,this.handle),s!==0||o!==void 0?this.gl.bufferSubData(n,r,i,s,o):this.gl.bufferSubData(n,r,i),this.gl.bindBuffer(n,null),this._setDebugData(t,r,t.byteLength)}async mapAndWriteAsync(t,r=0,i=this.byteLength-r){let s=new ArrayBuffer(i);await t(s,"copied"),this.write(s,r)}async readAsync(t=0,r){return this.readSyncWebGL(t,r)}async mapAndReadAsync(t,r=0,i){let s=await this.readAsync(r,i);return await t(s.buffer,"copied")}readSyncWebGL(t=0,r){r=r??this.byteLength-t;let i=new Uint8Array(r),s=0;return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,t,i,s,r),this.gl.bindBuffer(36662,null),this._setDebugData(i,t,r),i}}});function y_(e){let t=e.split(/\r?\n/),r=[];for(let i of t){if(i.length<=1)continue;let s=i.split(":");if(s.length===2){let[h,u]=s;r.push({message:u.trim(),type:T_(h),lineNum:0,linePos:0});continue}let[o,n,a,...c]=s,l=parseInt(a,10);isNaN(l)&&(l=0);let f=parseInt(n,10);isNaN(f)&&(f=0),r.push({message:c.join(":").trim(),type:T_(o),lineNum:l,linePos:f})}return r}function T_(e){let t=["warning","error","info"],r=e.toLowerCase();return t.includes(r)?r:"info"}var b_=A(()=>{});var La,x_=A(()=>{D();b_();La=class extends ze{device;handle;constructor(t,r){switch(super(t,r),this.device=t,this.props.stage){case"vertex":this.handle=this.props.handle||this.device.gl.createShader(35633);break;case"fragment":this.handle=this.props.handle||this.device.gl.createShader(35632);break;default:throw new Error(this.props.stage)}t._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this._compile(this.source)}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0,this.handle.destroyed=!0)}get asyncCompilationStatus(){return this._waitForCompilationComplete().then(()=>(this._getCompilationStatus(),this.compilationStatus))}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let t=this.device.gl.getShaderInfoLog(this.handle);return t?y_(t):[]}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)||null}async _compile(t){t=t.startsWith("#version ")?t:`#version 300 es
18
- ${t}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,t),r.compileShader(this.handle),!this.device.props.debug){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),this.compilationStatus==="error")throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);return}b.once(1,"Shader compilation is asynchronous")(),await this._waitForCompilationComplete(),b.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()}async _waitForCompilationComplete(){let t=async s=>await new Promise(o=>setTimeout(o,s));if(!this.device.features.has("compilation-status-async-webgl")){await t(10);return}let{gl:i}=this.device;for(;;){if(i.getShaderParameter(this.handle,37297))return;await t(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error"}}});function S_(e,t,r,i){if(j3(t))return i(e);let s=e;s.pushState();try{return k3(e,t),Yt(s.gl,r),i(e)}finally{s.popState()}}function k3(e,t){let r=e,{gl:i}=r;if(t.cullMode)switch(t.cullMode){case"none":i.disable(2884);break;case"front":i.enable(2884),i.cullFace(1028);break;case"back":i.enable(2884),i.cullFace(1029);break}if(t.frontFace&&i.frontFace(Lr("frontFace",t.frontFace,{ccw:2305,cw:2304})),t.unclippedDepth&&e.features.has("depth-clip-control")&&i.enable(34383),t.depthBias!==void 0&&(i.enable(32823),i.polygonOffset(t.depthBias,t.depthBiasSlopeScale||0)),t.provokingVertex&&e.features.has("provoking-vertex-webgl")){let o=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,n=Lr("provokingVertex",t.provokingVertex,{first:36429,last:36430});o?.provokingVertexWEBGL(n)}if((t.polygonMode||t.polygonOffsetLine)&&e.features.has("polygon-mode-webgl")){if(t.polygonMode){let o=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,n=Lr("polygonMode",t.polygonMode,{fill:6914,line:6913});o?.polygonModeWEBGL(1028,n),o?.polygonModeWEBGL(1029,n)}t.polygonOffsetLine&&i.enable(10754)}if(e.features.has("shader-clip-cull-distance-webgl")&&(t.clipDistance0&&i.enable(12288),t.clipDistance1&&i.enable(12289),t.clipDistance2&&i.enable(12290),t.clipDistance3&&i.enable(12291),t.clipDistance4&&i.enable(12292),t.clipDistance5&&i.enable(12293),t.clipDistance6&&i.enable(12294),t.clipDistance7&&i.enable(12295)),t.depthWriteEnabled!==void 0&&i.depthMask(z3("depthWriteEnabled",t.depthWriteEnabled)),t.depthCompare&&(t.depthCompare!=="always"?i.enable(2929):i.disable(2929),i.depthFunc(ka("depthCompare",t.depthCompare))),t.stencilWriteMask){let s=t.stencilWriteMask;i.stencilMaskSeparate(1028,s),i.stencilMaskSeparate(1029,s)}if(t.stencilReadMask&&b.warn("stencilReadMask not supported under WebGL"),t.stencilCompare){let s=t.stencilReadMask||4294967295,o=ka("depthCompare",t.stencilCompare);t.stencilCompare!=="always"?i.enable(2960):i.disable(2960),i.stencilFuncSeparate(1028,o,0,s),i.stencilFuncSeparate(1029,o,0,s)}if(t.stencilPassOperation&&t.stencilFailOperation&&t.stencilDepthFailOperation){let s=Lh("stencilPassOperation",t.stencilPassOperation),o=Lh("stencilFailOperation",t.stencilFailOperation),n=Lh("stencilDepthFailOperation",t.stencilDepthFailOperation);i.stencilOpSeparate(1028,o,n,s),i.stencilOpSeparate(1029,o,n,s)}switch(t.blend){case!0:i.enable(3042);break;case!1:i.disable(3042);break;default:}if(t.blendColorOperation||t.blendAlphaOperation){let s=A_("blendColorOperation",t.blendColorOperation||"add"),o=A_("blendAlphaOperation",t.blendAlphaOperation||"add");i.blendEquationSeparate(s,o);let n=Ua("blendColorSrcFactor",t.blendColorSrcFactor||"one"),a=Ua("blendColorDstFactor",t.blendColorDstFactor||"zero"),c=Ua("blendAlphaSrcFactor",t.blendAlphaSrcFactor||"one"),l=Ua("blendAlphaDstFactor",t.blendAlphaDstFactor||"zero");i.blendFuncSeparate(n,a,c,l)}}function ka(e,t){return Lr(e,t,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function Lh(e,t){return Lr(e,t,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function A_(e,t){return Lr(e,t,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function Ua(e,t,r="color"){return Lr(e,t,{one:1,zero:0,src:768,"one-minus-src":769,dst:774,"one-minus-dst":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,constant:r==="color"?32769:32771,"one-minus-constant":r==="color"?32770:32772,src1:768,"one-minus-src1":769,"src1-alpha":770,"one-minus-src1-alpha":771})}function V3(e,t){return`Illegal parameter ${t} for ${e}`}function Lr(e,t,r){if(!(t in r))throw new Error(V3(e,t));return r[t]}function z3(e,t){return t}function j3(e){let t=!0;for(let r in e){t=!1;break}return t}var Uh=A(()=>{D();Oi()});function Va(e){let t={};return e.addressModeU&&(t[10242]=kh(e.addressModeU)),e.addressModeV&&(t[10243]=kh(e.addressModeV)),e.addressModeW&&(t[32882]=kh(e.addressModeW)),e.magFilter&&(t[10240]=Vh(e.magFilter)),(e.minFilter||e.mipmapFilter)&&(t[10241]=W3(e.minFilter||"linear",e.mipmapFilter)),e.lodMinClamp!==void 0&&(t[33082]=e.lodMinClamp),e.lodMaxClamp!==void 0&&(t[33083]=e.lodMaxClamp),e.type==="comparison-sampler"&&(t[34892]=34894),e.compare&&(t[34893]=ka("compare",e.compare)),e.maxAnisotropy&&(t[34046]=e.maxAnisotropy),t}function kh(e){switch(e){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function Vh(e){switch(e){case"nearest":return 9728;case"linear":return 9729}}function W3(e,t="none"){if(!t)return Vh(e);switch(t){case"none":return Vh(e);case"nearest":switch(e){case"nearest":return 9984;case"linear":return 9985}break;case"linear":switch(e){case"nearest":return 9986;case"linear":return 9987}}}var zh=A(()=>{Uh()});var za,E_=A(()=>{D();zh();za=class extends Mt{device;handle;parameters;constructor(t,r){super(t,r),this.device=t,this.parameters=Va(r),this.handle=r.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(t){for(let[r,i]of Object.entries(t)){let s=Number(r);switch(s){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,s,i);break;default:this.device.gl.samplerParameteri(this.handle,s,i);break}}}}});function Fe(e,t,r){if(H3(t))return r(e);let{nocatch:i=!0}=t,s=Kt.get(e);s.push(),Yt(e,t);let o;if(i)o=r(e),s.pop();else try{o=r(e)}finally{s.pop()}return o}function H3(e){for(let t in e)return!1;return!0}var ja=A(()=>{Oi();Nh()});var he,jh=A(()=>{D();he=class extends Ve{device;gl;handle;texture;constructor(t,r){super(t,{...k.defaultProps,...r}),this.device=t,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}}});function Wa(e){return $3[e]}function Ha(e){return X3[e]}function R_(e){return Boolean(P_[e])}function w_(e){return P_[e]}var X3,P_,$3,Xa=A(()=>{X3={[5126]:"f32",[35664]:"vec2<f32>",[35665]:"vec3<f32>",[35666]:"vec4<f32>",[5124]:"i32",[35667]:"vec2<i32>",[35668]:"vec3<i32>",[35669]:"vec4<i32>",[5125]:"u32",[36294]:"vec2<u32>",[36295]:"vec3<u32>",[36296]:"vec4<u32>",[35670]:"f32",[35671]:"vec2<f32>",[35672]:"vec3<f32>",[35673]:"vec4<f32>",[35674]:"mat2x2<f32>",[35685]:"mat2x3<f32>",[35686]:"mat2x4<f32>",[35687]:"mat3x2<f32>",[35675]:"mat3x3<f32>",[35688]:"mat3x4<f32>",[35689]:"mat4x2<f32>",[35690]:"mat4x3<f32>",[35676]:"mat4x4<f32>"},P_={[35678]:{viewDimension:"2d",sampleType:"float"},[35680]:{viewDimension:"cube",sampleType:"float"},[35679]:{viewDimension:"3d",sampleType:"float"},[35682]:{viewDimension:"3d",sampleType:"depth"},[36289]:{viewDimension:"2d-array",sampleType:"float"},[36292]:{viewDimension:"2d-array",sampleType:"depth"},[36293]:{viewDimension:"cube",sampleType:"float"},[36298]:{viewDimension:"2d",sampleType:"sint"},[36299]:{viewDimension:"3d",sampleType:"sint"},[36300]:{viewDimension:"cube",sampleType:"sint"},[36303]:{viewDimension:"2d-array",sampleType:"uint"},[36306]:{viewDimension:"2d",sampleType:"uint"},[36307]:{viewDimension:"3d",sampleType:"uint"},[36308]:{viewDimension:"cube",sampleType:"uint"},[36311]:{viewDimension:"2d-array",sampleType:"uint"}},$3={uint8:5121,sint8:5120,unorm8:5121,snorm8:5120,uint16:5123,sint16:5122,unorm16:5123,snorm16:5122,uint32:5125,sint32:5124,float16:5131,float32:5126}});function $a(e){return Y3[e]}var Y3,Wh=A(()=>{Y3={[5124]:"sint32",[5125]:"uint32",[5122]:"sint16",[5123]:"uint16",[5120]:"sint8",[5121]:"uint8",[5126]:"float32",[5131]:"float16",[33635]:"uint16",[32819]:"uint16",[32820]:"uint16",[33640]:"uint32",[35899]:"uint32",[35902]:"uint32",[34042]:"uint32",[36269]:"uint32"}});function K3(e){switch(e){case"1d":break;case"2d":return 3553;case"3d":return 32879;case"cube":return 34067;case"2d-array":return 35866;case"cube-array":break}throw new Error(e)}function Hh(e,t,r){return t==="cube"?34069+r:e}var ue,Ya=A(()=>{D();Fi();zh();ja();jh();Xa();Wh();D();ue=class extends k{device;gl;handle;sampler=void 0;view;glTarget;glFormat;glType;glInternalFormat;compressed;_textureUnit=0;_framebuffer=null;constructor(t,r){super(t,r,{byteAlignment:1}),this.device=t,this.gl=this.device.gl;let i=Ia(this.props.format);this.glTarget=K3(this.props.dimension),this.glInternalFormat=i.internalFormat,this.glFormat=i.format,this.glType=i.type,this.compressed=i.compressed,this.handle=this.props.handle||this.gl.createTexture(),this.device._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.gl.bindTexture(this.glTarget,this.handle);let{dimension:s,width:o,height:n,depth:a,mipLevels:c,glTarget:l,glInternalFormat:f}=this;switch(s){case"2d":case"cube":this.gl.texStorage2D(l,c,f,o,n);break;case"2d-array":case"3d":this.gl.texStorage3D(l,c,f,o,n,a);break;default:throw new Error(s)}this.gl.bindTexture(this.glTarget,null),this._initializeData(r.data),this.setSampler(this.props.sampler),this.view=new he(this.device,{...this.props,texture:this}),Object.seal(this)}destroy(){this.handle&&(this._framebuffer?.destroy(),this._framebuffer=null,this.gl.deleteTexture(this.handle),this.removeStats(),this.trackDeallocatedMemory("Texture"),this.destroyed=!0)}createView(t){return new he(this.device,{...t,texture:this})}setSampler(t={}){super.setSampler(t);let r=Va(this.sampler.props);this._setSamplerParameters(r)}copyExternalImage(t){let r=this._normalizeCopyExternalImageOptions(t);if(r.sourceX||r.sourceY)throw new Error("WebGL does not support sourceX/sourceY)");let{glFormat:i,glType:s}=this,{image:o,depth:n,mipLevel:a,x:c,y:l,z:f,width:h,height:u}=r,d=Hh(this.glTarget,this.dimension,f),p=r.flipY?{[37440]:!0}:{};return this.gl.bindTexture(this.glTarget,this.handle),Fe(this.gl,p,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(d,a,c,l,h,u,i,s,o);break;case"2d-array":case"3d":this.gl.texSubImage3D(d,a,c,l,f,h,u,n,i,s,o);break;default:}}),this.gl.bindTexture(this.glTarget,null),{width:r.width,height:r.height}}copyImageData(t){let r=this._normalizeCopyImageDataOptions(t),i=r.data,{width:s,height:o,depth:n,z:a=0}=r,{mipLevel:c=0,byteOffset:l=0,x:f=0,y:h=0}=r,{glFormat:u,glType:d,compressed:p}=this,g=Hh(this.glTarget,this.dimension,a),m;if(!this.compressed){let{bytesPerPixel:y}=this.device.getTextureFormatInfo(this.format);if(y){if(r.bytesPerRow%y!==0)throw new Error(`bytesPerRow (${r.bytesPerRow}) must be a multiple of bytesPerPixel (${y}) for ${this.format}`);m=r.bytesPerRow/y}}let _=this.compressed?{}:{[3317]:this.byteAlignment,...m!==void 0?{[3314]:m}:{},[32878]:r.rowsPerImage};this.gl.bindTexture(this.glTarget,this.handle),Fe(this.gl,_,()=>{switch(this.dimension){case"2d":case"cube":p?this.gl.compressedTexSubImage2D(g,c,f,h,s,o,u,i,l):this.gl.texSubImage2D(g,c,f,h,s,o,u,d,i,l);break;case"2d-array":case"3d":p?this.gl.compressedTexSubImage3D(g,c,f,h,a,s,o,n,u,i,l):this.gl.texSubImage3D(g,c,f,h,a,s,o,n,u,d,i,l);break;default:}}),this.gl.bindTexture(this.glTarget,null)}readBuffer(t={},r){throw new Error("readBuffer not implemented")}async readDataAsync(t={}){return this.readDataSyncWebGL(t)}writeBuffer(t,r={}){}writeData(t,r={}){let i=this._normalizeTextureWriteOptions(r),s=ArrayBuffer.isView(t)?t:new Uint8Array(t),{}=this,{width:o,height:n,mipLevel:a,x:c,y:l,z:f}=i,{glFormat:h,glType:u,compressed:d}=this,p=0,g=Hh(this.glTarget,this.dimension,p),m=this.compressed?{}:{[3317]:this.byteAlignment};this.gl.bindTexture(g,this.handle),this.gl.bindBuffer(35052,null),Fe(this.gl,m,()=>{switch(this.dimension){case"2d":case"cube":d?this.gl.compressedTexSubImage2D(g,a,c,l,o,n,h,s):this.gl.texSubImage2D(g,a,c,l,o,n,h,u,s);break;case"2d-array":case"3d":d?this.gl.compressedTexSubImage3D(g,a,c,l,f,o,n,p,h,s):this.gl.texSubImage3D(g,a,c,l,f,o,n,p,h,u,s);break;default:}}),this.gl.bindTexture(g,null)}_getRowByteAlignment(t,r){return 1}_getFramebuffer(){return this._framebuffer||=this.device.createFramebuffer({id:`framebuffer-for-${this.id}`,width:this.width,height:this.height,colorAttachments:[this]}),this._framebuffer}readDataSyncWebGL(t={}){let r=this._normalizeTextureReadOptions(t),i=this.computeMemoryLayout(r),s=$a(this.glType),o=Te(s),n=new o(i.byteLength),a=_e(n),c=Wa(a),l=this._getFramebuffer(),f=this.gl.bindFramebuffer(36160,l.handle);return this.gl.readBuffer(36064),this.gl.readPixels(r.x,r.y,r.width,r.height,this.glFormat,c,n),this.gl.bindFramebuffer(36160,f||null),n.buffer}generateMipmapsWebGL(t){if(!(!(this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format))&&(b.warn(`${this} is not renderable or filterable, may not be able to generate mipmaps`)(),!t?.force)))try{this.gl.bindTexture(this.glTarget,this.handle),this.gl.generateMipmap(this.glTarget)}catch(i){b.warn(`Error generating mipmap for ${this}: ${i.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}_setSamplerParameters(t){b.log(2,`${this.id} sampler parameters`,this.device.getGLKeys(t))(),this.gl.bindTexture(this.glTarget,this.handle);for(let[r,i]of Object.entries(t)){let s=Number(r),o=i;switch(s){case 33082:case 33083:this.gl.texParameterf(this.glTarget,s,o);break;case 10240:case 10241:this.gl.texParameteri(this.glTarget,s,o);break;case 10242:case 10243:case 32882:this.gl.texParameteri(this.glTarget,s,o);break;case 34046:this.device.features.has("texture-filterable-anisotropic-webgl")&&this.gl.texParameteri(this.glTarget,s,o);break;case 34892:case 34893:this.gl.texParameteri(this.glTarget,s,o);break}}this.gl.bindTexture(this.glTarget,null)}_getActiveUnit(){return this.gl.getParameter(34016)-33984}_bind(t){let{gl:r}=this;return t!==void 0&&(this._textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,this.handle),t}_unbind(t){let{gl:r}=this;return t!==void 0&&(this._textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,null),t}}});function M_(e,t){let r={attributes:[],bindings:[]};r.attributes=q3(e,t);let i=Q3(e,t);for(let a of i){let c=a.uniforms.map(l=>({name:l.name,format:l.format,byteOffset:l.byteOffset,byteStride:l.byteStride,arrayLength:l.arrayLength}));r.bindings.push({type:"uniform",name:a.name,group:0,location:a.location,visibility:(a.vertex?1:0)&(a.fragment?2:0),minBindingSize:a.byteLength,uniforms:c})}let s=J3(e,t),o=0;for(let a of s)if(R_(a.type)){let{viewDimension:c,sampleType:l}=w_(a.type);r.bindings.push({type:"texture",name:a.name,group:0,location:o,viewDimension:c,sampleType:l}),a.textureUnit=o,o+=1}s.length&&(r.uniforms=s);let n=Z3(e,t);return n?.length&&(r.varyings=n),r}function q3(e,t){let r=[],i=e.getProgramParameter(t,35721);for(let s=0;s<i;s++){let o=e.getActiveAttrib(t,s);if(!o)throw new Error("activeInfo");let{name:n,type:a}=o,c=e.getAttribLocation(t,n);if(c>=0){let l=Ha(a),f=/instance/i.test(n)?"instance":"vertex";r.push({name:n,location:c,stepMode:f,type:l})}}return r.sort((s,o)=>s.location-o.location),r}function Z3(e,t){let r=[],i=e.getProgramParameter(t,35971);for(let s=0;s<i;s++){let o=e.getTransformFeedbackVarying(t,s);if(!o)throw new Error("activeInfo");let{name:n,type:a,size:c}=o,l=Ha(a),{type:f,components:h}=Qi(l);r.push({location:s,name:n,type:f,size:c*h})}return r.sort((s,o)=>s.location-o.location),r}function J3(e,t){let r=[],i=e.getProgramParameter(t,35718);for(let s=0;s<i;s++){let o=e.getActiveUniform(t,s);if(!o)throw new Error("activeInfo");let{name:n,size:a,type:c}=o,{name:l,isArray:f}=G3(n),h=e.getUniformLocation(t,l),u={location:h,name:l,size:a,type:c,isArray:f};if(r.push(u),u.size>1)for(let d=0;d<u.size;d++){let p=`${l}[${d}]`;h=e.getUniformLocation(t,p);let g={...u,name:p,location:h};r.push(g)}}return r}function Q3(e,t){let r=(o,n)=>e.getActiveUniformBlockParameter(t,o,n),i=[],s=e.getProgramParameter(t,35382);for(let o=0;o<s;o++){let n={name:e.getActiveUniformBlockName(t,o)||"",location:r(o,35391),byteLength:r(o,35392),vertex:r(o,35396),fragment:r(o,35398),uniformCount:r(o,35394),uniforms:[]},a=r(o,35395)||[],c=e.getActiveUniforms(t,a,35383),l=e.getActiveUniforms(t,a,35384),f=e.getActiveUniforms(t,a,35387),h=e.getActiveUniforms(t,a,35388);for(let u=0;u<n.uniformCount;++u){let d=e.getActiveUniform(t,a[u]);if(!d)throw new Error("activeInfo");let p=Ha(c[u]);n.uniforms.push({name:d.name,format:p,type:c[u],arrayLength:l[u],byteOffset:f[u],byteStride:h[u]})}i.push(n)}return i.sort((o,n)=>o.location-n.location),i}function G3(e){if(e[e.length-1]!=="]")return{name:e,length:1,isArray:!1};let r=/([^[]*)(\[[0-9]+\])?/.exec(e);if(!r||r.length<2)throw new Error(`Failed to parse GLSL uniform name ${e}`);return{name:r[1],length:r[2]?1:0,isArray:Boolean(r[2])}}var v_=A(()=>{D();Xa()});function C_(e,t,r,i){let s=e,o=i;o===!0&&(o=1),o===!1&&(o=0);let n=typeof o=="number"?[o]:o;switch(r){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if(typeof i!="number")throw new Error("samplers must be set to integers");return e.uniform1i(t,i);case 5126:return e.uniform1fv(t,n);case 35664:return e.uniform2fv(t,n);case 35665:return e.uniform3fv(t,n);case 35666:return e.uniform4fv(t,n);case 5124:return e.uniform1iv(t,n);case 35667:return e.uniform2iv(t,n);case 35668:return e.uniform3iv(t,n);case 35669:return e.uniform4iv(t,n);case 35670:return e.uniform1iv(t,n);case 35671:return e.uniform2iv(t,n);case 35672:return e.uniform3iv(t,n);case 35673:return e.uniform4iv(t,n);case 5125:return s.uniform1uiv(t,n,1);case 36294:return s.uniform2uiv(t,n,2);case 36295:return s.uniform3uiv(t,n,3);case 36296:return s.uniform4uiv(t,n,4);case 35674:return e.uniformMatrix2fv(t,!1,n);case 35675:return e.uniformMatrix3fv(t,!1,n);case 35676:return e.uniformMatrix4fv(t,!1,n);case 35685:return s.uniformMatrix2x3fv(t,!1,n);case 35686:return s.uniformMatrix2x4fv(t,!1,n);case 35687:return s.uniformMatrix3x2fv(t,!1,n);case 35688:return s.uniformMatrix3x4fv(t,!1,n);case 35689:return s.uniformMatrix4x2fv(t,!1,n);case 35690:return s.uniformMatrix4x3fv(t,!1,n)}throw new Error("Illegal uniform")}var I_=A(()=>{});function O_(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"triangle-list":return 4;case"triangle-strip":return 5;default:throw new Error(e)}}function N_(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 1;case"triangle-list":return 4;case"triangle-strip":return 4;default:throw new Error(e)}}var Xh=A(()=>{});function tR(e,t){let r={...e,attributes:e.attributes.map(i=>({...i}))};for(let i of t?.attributes||[]){let s=r.attributes.find(o=>o.name===i.name);s?(s.type=i.type||s.type,s.stepMode=i.stepMode||s.stepMode):b.warn(`shader layout attribute ${i.name} not present in shader`)}return r}var D_,Ka,F_=A(()=>{D();v_();Uh();I_();Ba();Da();Ya();jh();Xh();D_=4,Ka=class extends vt{device;handle;vs;fs;introspectedLayout;uniforms={};bindings={};varyings=null;_uniformCount=0;_uniformSetters={};get[Symbol.toStringTag](){return"WEBGLRenderPipeline"}constructor(t,r){super(t,r),this.device=t,this.handle=this.props.handle||this.device.gl.createProgram(),this.device._setWebGLDebugMetadata(this.handle,this,{spector:{id:this.props.id}}),this.vs=r.vs,this.fs=r.fs;let{varyings:i,bufferMode:s=35981}=r;i&&i.length>0&&(this.varyings=i,this.device.gl.transformFeedbackVaryings(this.handle,i,s)),this._linkShaders(),b.time(3,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=M_(this.device.gl,this.handle),b.timeEnd(3,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.shaderLayout=r.shaderLayout?tR(this.introspectedLayout,r.shaderLayout):this.introspectedLayout}destroy(){this.handle&&(this.device.gl.useProgram(null),this.device.gl.deleteProgram(this.handle),this.destroyed=!0,this.handle.destroyed=!0,this.handle=null)}setBindings(t,r){for(let[i,s]of Object.entries(t)){let o=this.shaderLayout.bindings.find(n=>n.name===i)||this.shaderLayout.bindings.find(n=>n.name===`${i}Uniforms`);if(!o){let n=this.shaderLayout.bindings.map(a=>`"${a.name}"`).join(", ");r?.disableWarnings||b.warn(`No binding "${i}" in render pipeline "${this.id}", expected one of ${n}`,s)();continue}switch(s||b.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),o.type){case"uniform":if(!(s instanceof qt)&&!(s.buffer instanceof qt))throw new Error("buffer value");break;case"texture":if(!(s instanceof he||s instanceof ue||s instanceof fe))throw new Error(`${this} Bad texture binding for ${i}`);break;case"sampler":b.warn(`Ignoring sampler ${i}`)();break;default:throw new Error(o.type)}this.bindings[i]=s}}draw(t){let{renderPass:r,parameters:i=this.props.parameters,topology:s=this.props.topology,vertexArray:o,vertexCount:n,instanceCount:a,isInstanced:c=!1,firstVertex:l=0,transformFeedback:f}=t,h=O_(s),u=Boolean(o.indexBuffer),d=o.indexBuffer?.glIndexType;if(this.linkStatus!=="success")return b.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable())return b.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(this.handle),o.bindBeforeRender(r),f&&f.begin(this.props.topology),this._applyBindings(),this._applyUniforms();let p=r;return S_(this.device,i,p.glParameters,()=>{u&&c?this.device.gl.drawElementsInstanced(h,n||0,d,l,a||0):u?this.device.gl.drawElements(h,n||0,d,l):c?this.device.gl.drawArraysInstanced(h,l,n||0,a||0):this.device.gl.drawArrays(h,l,n||0),f&&f.end()}),o.unbindAfterRender(r),!0}async _linkShaders(){let{gl:t}=this.device;if(t.attachShader(this.handle,this.vs.handle),t.attachShader(this.handle,this.fs.handle),b.time(D_,`linkProgram for ${this.id}`)(),t.linkProgram(this.handle),b.timeEnd(D_,`linkProgram for ${this.id}`)(),b.level,!this.device.features.has("compilation-status-async-webgl")){let i=this._getLinkStatus();this._reportLinkStatus(i);return}b.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),b.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();let r=this._getLinkStatus();this._reportLinkStatus(r)}async _reportLinkStatus(t){switch(t){case"success":return;default:let r=t==="link-error"?"Link error":"Validation error";switch(this.vs.compilationStatus){case"error":throw this.vs.debugShader(),new Error(`${this} ${r} during compilation of ${this.vs}`);case"pending":await this.vs.asyncCompilationStatus,this.vs.debugShader();break;case"success":break}switch(this.fs?.compilationStatus){case"error":throw this.fs.debugShader(),new Error(`${this} ${r} during compilation of ${this.fs}`);case"pending":await this.fs.asyncCompilationStatus,this.fs.debugShader();break;case"success":break}let i=this.device.gl.getProgramInfoLog(this.handle);this.device.reportError(new Error(`${r} during ${t}: ${i}`),this)(),this.device.debug()}}_getLinkStatus(){let{gl:t}=this.device;return t.getProgramParameter(this.handle,35714)?(t.validateProgram(this.handle),t.getProgramParameter(this.handle,35715)?(this.linkStatus="success","success"):(this.linkStatus="error","validation-error")):(this.linkStatus="error","link-error")}async _waitForLinkComplete(){let t=async s=>await new Promise(o=>setTimeout(o,s));if(!this.device.features.has("compilation-status-async-webgl")){await t(10);return}let{gl:i}=this.device;for(;;){if(i.getProgramParameter(this.handle,37297))return;await t(10)}}_areTexturesRenderable(){let t=!0;for(let r of this.shaderLayout.bindings)!this.bindings[r.name]&&!this.bindings[r.name.replace(/Uniforms$/,"")]&&(b.warn(`Binding ${r.name} not found in ${this.id}`)(),t=!1);return t}_applyBindings(){if(this.linkStatus!=="success")return;let{gl:t}=this.device;t.useProgram(this.handle);let r=0,i=0;for(let s of this.shaderLayout.bindings){let o=this.bindings[s.name]||this.bindings[s.name.replace(/Uniforms$/,"")];if(!o)throw new Error(`No value for binding ${s.name} in ${this.id}`);switch(s.type){case"uniform":let{name:n}=s,a=t.getUniformBlockIndex(this.handle,n);if(a===4294967295)throw new Error(`Invalid uniform block name ${n}`);t.uniformBlockBinding(this.handle,i,a),o instanceof qt?t.bindBufferBase(35345,i,o.handle):t.bindBufferRange(35345,i,o.buffer.handle,o.offset||0,o.size||o.buffer.byteLength-o.offset),i+=1;break;case"texture":if(!(o instanceof he||o instanceof ue||o instanceof fe))throw new Error("texture");let c;if(o instanceof he)c=o.texture;else if(o instanceof ue)c=o;else if(o instanceof fe&&o.colorAttachments[0]instanceof he)b.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),c=o.colorAttachments[0].texture;else throw new Error("No texture");t.activeTexture(33984+r),t.bindTexture(c.glTarget,c.handle),r+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw new Error(`binding type '${s.type}' not supported in WebGL`)}}}_applyUniforms(){for(let t of this.shaderLayout.uniforms||[]){let{name:r,location:i,type:s,textureUnit:o}=t,n=this.uniforms[r]??o;n!==void 0&&C_(this.device.gl,i,s,n)}}}});function eR(e,t){let r=t.sourceBuffer,i=t.destinationBuffer;e.gl.bindBuffer(36662,r.handle),e.gl.bindBuffer(36663,i.handle),e.gl.copyBufferSubData(36662,36663,t.sourceOffset??0,t.destinationOffset??0,t.size),e.gl.bindBuffer(36662,null),e.gl.bindBuffer(36663,null)}function rR(e,t){throw new Error("Not implemented")}function iR(e,t){let{sourceTexture:r,mipLevel:i=0,aspect:s="all",width:o=t.sourceTexture.width,height:n=t.sourceTexture.height,depthOrArrayLayers:a=0,origin:c=[0,0],destinationBuffer:l,byteOffset:f=0,bytesPerRow:h,rowsPerImage:u}=t;if(s!=="all")throw new Error("aspect not supported in WebGL");if(i!==0||a!==0||h||u)throw new Error("not implemented");let{framebuffer:d,destroyFramebuffer:p}=B_(r),g;try{let m=l,_=o||d.width,y=n||d.height,T=Ia(d.colorAttachments[0].texture.props.format),x=T.format,S=T.type;e.gl.bindBuffer(35051,m.handle),g=e.gl.bindFramebuffer(36160,d.handle),e.gl.readPixels(c[0],c[1],_,y,x,S,f)}finally{e.gl.bindBuffer(35051,null),g!==void 0&&e.gl.bindFramebuffer(36160,g),p&&d.destroy()}}function sR(e,t){let{sourceTexture:r,destinationMipLevel:i=0,origin:s=[0,0],destinationOrigin:o=[0,0],destinationTexture:n}=t,{width:a=t.destinationTexture.width,height:c=t.destinationTexture.height}=t,{framebuffer:l,destroyFramebuffer:f}=B_(r),[h,u]=s,[d,p,g]=o,m=e.gl.bindFramebuffer(36160,l.handle),_,y;if(n instanceof ue)_=n,a=Number.isFinite(a)?a:_.width,c=Number.isFinite(c)?c:_.height,_._bind(0),y=_.glTarget;else throw new Error("invalid destination");switch(y){case 3553:case 34067:e.gl.copyTexSubImage2D(y,i,d,p,h,u,a,c);break;case 35866:case 32879:e.gl.copyTexSubImage3D(y,i,d,p,g,h,u,a,c);break;default:}_&&_._unbind(),e.gl.bindFramebuffer(36160,m),f&&l.destroy()}function B_(e){if(e instanceof k){let{width:t,height:r,id:i}=e;return{framebuffer:e.device.createFramebuffer({id:`framebuffer-for-${i}`,width:t,height:r,colorAttachments:[e]}),destroyFramebuffer:!0}}return{framebuffer:e,destroyFramebuffer:!1}}var qa,L_=A(()=>{D();Ya();Fi();qa=class extends Gr{device;handle=null;commands=[];constructor(t){super(t,{}),this.device=t}_executeCommands(t=this.commands){for(let r of t)switch(r.name){case"copy-buffer-to-buffer":eR(this.device,r.options);break;case"copy-buffer-to-texture":rR(this.device,r.options);break;case"copy-texture-to-buffer":iR(this.device,r.options);break;case"copy-texture-to-texture":sR(this.device,r.options);break;default:throw new Error(r.name)}}}});var oR,Za,U_=A(()=>{D();ja();Oi();oR=[1,2,4,8],Za=class extends be{device;handle=null;glParameters={};constructor(t,r){super(t,r),this.device=t;let i;if(!r?.parameters?.viewport)if(r?.framebuffer){let{width:o,height:n}=r.framebuffer;i=[0,0,o,n]}else{let[o,n]=t.getDefaultCanvasContext().getDrawingBufferSize();i=[0,0,o,n]}this.device.pushState(),this.setParameters({viewport:i,...this.props.parameters});let s=this.props.framebuffer;if(this.props.framebuffer&&s?.handle){let o=this.props.framebuffer.colorAttachments.map((n,a)=>36064+a);this.device.gl.drawBuffers(o)}else this.props.framebuffer||this.device.gl.drawBuffers([1029]);this.clear()}end(){this.device.popState()}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}setParameters(t={}){let r={...this.glParameters};r.framebuffer=this.props.framebuffer||null,this.props.depthReadOnly&&(r.depthMask=!this.props.depthReadOnly),r.stencilMask=this.props.stencilReadOnly?0:1,r[35977]=this.props.discard,t.viewport&&(t.viewport.length>=6?(r.viewport=t.viewport.slice(0,4),r.depthRange=[t.viewport[4],t.viewport[5]]):r.viewport=t.viewport),t.scissorRect&&(r.scissorTest=!0,r.scissor=t.scissorRect),t.blendConstant&&(r.blendColor=t.blendConstant),t.stencilReference!==void 0&&(r[2967]=t.stencilReference,r[36003]=t.stencilReference),"colorMask"in t&&(r.colorMask=oR.map(i=>Boolean(i&t.colorMask))),this.glParameters=r,Yt(this.device.gl,r)}beginOcclusionQuery(t){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let t={...this.glParameters},r=0;this.props.clearColors&&this.props.clearColors.forEach((i,s)=>{i&&this.clearColorBuffer(s,i)}),this.props.clearColor!==!1&&this.props.clearColors===void 0&&(r|=16384,t.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(r|=256,t.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(r|=1024,t.clearStencil=this.props.clearStencil),r!==0&&Fe(this.device.gl,t,()=>{this.device.gl.clear(r)})}clearColorBuffer(t=0,r=[0,0,0,0]){Fe(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(r.constructor){case Int8Array:case Int16Array:case Int32Array:this.device.gl.clearBufferiv(6144,t,r);break;case Uint8Array:case Uint8ClampedArray:case Uint16Array:case Uint32Array:this.device.gl.clearBufferuiv(6144,t,r);break;case Float32Array:this.device.gl.clearBufferfv(6144,t,r);break;default:throw new Error("clearColorBuffer: color must be typed array")}})}}});var po,k_=A(()=>{D();L_();U_();po=class extends Qr{device;handle=null;commandBuffer;constructor(t,r){super(t,r),this.device=t,this.commandBuffer=new qa(t)}destroy(){}finish(){return this.commandBuffer}beginRenderPass(t){return new Za(this.device,t)}beginComputePass(t){throw new Error("ComputePass not supported in WebGL")}copyBufferToBuffer(t){this.commandBuffer.commands.push({name:"copy-buffer-to-buffer",options:t})}copyBufferToTexture(t){this.commandBuffer.commands.push({name:"copy-buffer-to-texture",options:t})}copyTextureToBuffer(t){this.commandBuffer.commands.push({name:"copy-texture-to-buffer",options:t})}copyTextureToTexture(t){this.commandBuffer.commands.push({name:"copy-texture-to-texture",options:t})}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}resolveQuerySet(t,r,i){}}});function V_(e){let{target:t,source:r,start:i=0,count:s=1}=e,o=r.length,n=s*o,a=0;for(let c=i;a<o;a++)t[c++]=r[a];for(;a<n;)a<n-a?(t.copyWithin(i+a,i,i+a),a*=2):(t.copyWithin(i+a,i,i+n-a),a=n);return e.target}var z_=A(()=>{});function nR(e){return Array.isArray(e)?new Float32Array(e):e}function aR(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}var Bi,j_=A(()=>{D();Zi();Dh();z_();Bi=class extends ti{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(t){return Jc()==="Chrome"}constructor(t,r){super(t,r),this.device=t,this.handle=this.device.gl.createVertexArray()}destroy(){super.destroy(),this.buffer&&this.buffer?.destroy(),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(t){let r=t;if(r&&r.glTarget!==34963)throw new Error("Use .setBuffer()");this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,r?r.handle:null),this.indexBuffer=r,this.device.gl.bindVertexArray(null)}setBuffer(t,r){let i=r;if(i.glTarget===34963)throw new Error("Use .setIndexBuffer()");let{size:s,type:o,stride:n,offset:a,normalized:c,integer:l,divisor:f}=this._getAccessor(t);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,i.handle),l?this.device.gl.vertexAttribIPointer(t,s,o,n,a):this.device.gl.vertexAttribPointer(t,s,o,c,n,a),this.device.gl.bindBuffer(34962,null),this.device.gl.enableVertexAttribArray(t),this.device.gl.vertexAttribDivisor(t,f||0),this.attributes[t]=i,this.device.gl.bindVertexArray(null)}setConstantWebGL(t,r){this._enable(t,!1),this.attributes[t]=r}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let t=0;t<this.maxVertexAttributes;++t){let r=this.attributes[t];ArrayBuffer.isView(r)&&this.device.setConstantAttributeWebGL(t,r)}}_getAccessor(t){let r=this.attributeInfos[t];if(!r)throw new Error(`Unknown attribute location ${t}`);let i=va(r.bufferDataType);return{size:r.bufferComponents,type:i,stride:r.byteStride,offset:r.byteOffset,normalized:r.normalized,integer:r.integer,divisor:r.stepMode==="instance"?1:0}}_enable(t,r=!0){let s=Bi.isConstantAttributeZeroSupported(this.device)||t!==0;(r||s)&&(t=Number(t),this.device.gl.bindVertexArray(this.handle),r?this.device.gl.enableVertexAttribArray(t):this.device.gl.disableVertexAttribArray(t),this.device.gl.bindVertexArray(null))}getConstantBuffer(t,r){let i=nR(r),s=i.byteLength*t,o=i.length*t;if(this.buffer&&s!==this.buffer.byteLength)throw new Error(`Buffer size is immutable, byte length ${s} !== ${this.buffer.byteLength}.`);let n=!this.buffer;if(this.buffer=this.buffer||this.device.createBuffer({byteLength:s}),n||=!aR(i,this.bufferValue),n){let a=gl(r.constructor,o);V_({target:a,source:i,start:0,count:o}),this.buffer.write(a),this.bufferValue=r}return this.buffer}}});function W_(e){return typeof e=="number"?Number.isInteger(e):/^\d+$/.test(e)}var Ja,H_=A(()=>{D();Qa();Xh();Ja=class extends ei{device;gl;handle;layout;buffers={};unusedBuffers={};bindOnUse=!0;_bound=!1;constructor(t,r){super(t,r),this.device=t,this.gl=t.gl,this.handle=this.props.handle||this.gl.createTransformFeedback(),this.layout=this.props.layout,r.buffers&&this.setBuffers(r.buffers),Object.seal(this)}destroy(){this.gl.deleteTransformFeedback(this.handle),super.destroy()}begin(t="point-list"){this.gl.bindTransformFeedback(36386,this.handle),this.bindOnUse&&this._bindBuffers(),this.gl.beginTransformFeedback(N_(t))}end(){this.gl.endTransformFeedback(),this.bindOnUse&&this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null)}setBuffers(t){this.buffers={},this.unusedBuffers={},this.bind(()=>{for(let r in t)this.setBuffer(r,t[r])})}setBuffer(t,r){let i=this._getVaryingIndex(t),{buffer:s,byteLength:o,byteOffset:n}=this._getBufferRange(r);if(i<0){this.unusedBuffers[t]=s,b.warn(`${this.id} unusedBuffers varying buffer ${t}`)();return}this.buffers[i]={buffer:s,byteLength:o,byteOffset:n},this.bindOnUse||this._bindBuffer(i,s,n,o)}getBuffer(t){if(W_(t))return this.buffers[t]||null;let r=this._getVaryingIndex(t);return r>=0?this.buffers[r]:null}bind(t=this.handle){if(typeof t!="function")return this.gl.bindTransformFeedback(36386,t),this;let r;return this._bound?r=t():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,r=t(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),r}unbind(){this.bind(null)}_getBufferRange(t){if(t instanceof qt)return{buffer:t,byteOffset:0,byteLength:t.byteLength};let{buffer:r,byteOffset:i=0,byteLength:s=t.buffer.byteLength}=t;return{buffer:r,byteOffset:i,byteLength:s}}_getVaryingIndex(t){if(W_(t))return Number(t);for(let r of this.layout.varyings||[])if(t===r.name)return r.location;return-1}_bindBuffers(){for(let t in this.buffers){let{buffer:r,byteLength:i,byteOffset:s}=this._getBufferRange(this.buffers[t]);this._bindBuffer(Number(t),r,s,i)}}_unbindBuffers(){for(let t in this.buffers)this.gl.bindBufferBase(35982,Number(t),null)}_bindBuffer(t,r,i=0,s){let o=r&&r.handle;!o||s===void 0?this.gl.bindBufferBase(35982,t,o):this.gl.bindBufferRange(35982,t,o,i,s)}}});var Ga,X_=A(()=>{D();Ga=class extends ri{device;handle;target=null;_queryPending=!1;_pollingPromise=null;get[Symbol.toStringTag](){return"Query"}constructor(t,r){if(super(t,r),this.device=t,r.count>1)throw new Error("WebGL QuerySet can only have one value");let i=this.device.gl.createQuery();if(!i)throw new Error("WebGL query not supported");this.handle=i,Object.seal(this)}destroy(){this.device.gl.deleteQuery(this.handle)}beginTimestampQuery(){return this._begin(35007)}endTimestampQuery(){this._end()}beginOcclusionQuery(t){return this._begin(t?.conservative?36202:35887)}endOcclusionQuery(){this._end()}beginTransformFeedbackQuery(){return this._begin(35976)}endTransformFeedbackQuery(){this._end()}async resolveQuery(){return[await this.pollQuery()]}_begin(t){this._queryPending||(this.target=t,this.device.gl.beginQuery(this.target,this.handle))}_end(){this._queryPending||this.target&&(this.device.gl.endQuery(this.target),this.target=null,this._queryPending=!0)}isResultAvailable(){if(!this._queryPending)return!1;let t=this.device.gl.getQueryParameter(this.handle,34919);return t&&(this._queryPending=!1),t}isTimerDisjoint(){return this.device.gl.getParameter(36795)}getResult(){return this.device.gl.getQueryParameter(this.handle,34918)}getTimerMilliseconds(){return this.getResult()/1e6}pollQuery(t=Number.POSITIVE_INFINITY){if(this._pollingPromise)return this._pollingPromise;let r=0;return this._pollingPromise=new Promise((i,s)=>{let o=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):r++>t?(s("Timed out"),this._pollingPromise=null):requestAnimationFrame(o)};requestAnimationFrame(o)}),this._pollingPromise}}});var tc,$_=A(()=>{D();tc=class extends ii{device;gl;handle;signaled;_signaled=!1;constructor(t,r={}){super(t,{}),this.device=t,this.gl=t.gl;let i=this.props.handle||this.gl.fenceSync(this.gl.SYNC_GPU_COMMANDS_COMPLETE,0);if(!i)throw new Error("Failed to create WebGL fence");this.handle=i,this.signaled=new Promise(s=>{let o=()=>{let n=this.gl.clientWaitSync(this.handle,0,0);n===this.gl.ALREADY_SIGNALED||n===this.gl.CONDITION_SATISFIED?(this._signaled=!0,s()):setTimeout(o,1)};o()})}isSignaled(){if(this._signaled)return!0;let t=this.gl.getSyncParameter(this.handle,this.gl.SYNC_STATUS);return this._signaled=t===this.gl.SIGNALED,this._signaled}destroy(){this.destroyed||this.gl.deleteSync(this.handle)}}});function $h(e){switch(e){case 6406:case 33326:case 6403:case 36244:return 1;case 33339:case 33340:case 33328:case 33320:case 33319:return 2;case 6407:case 36248:case 34837:return 3;case 6408:case 36249:case 34836:return 4;default:return 0}}function Y_(e){switch(e){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}var K_=A(()=>{});function q_(e,t){let{sourceX:r=0,sourceY:i=0,sourceAttachment:s=0}=t||{},{target:o=null,sourceWidth:n,sourceHeight:a,sourceDepth:c,sourceFormat:l,sourceType:f}=t||{},{framebuffer:h,deleteFramebuffer:u}=J_(e),{gl:d,handle:p}=h;n||=h.width,a||=h.height;let g=h.colorAttachments[s]?.texture;if(!g)throw new Error(`Invalid framebuffer attachment ${s}`);c=g?.depth||1,l||=g?.glFormat||6408,f||=g?.glType||5121,o=lR(o,f,l,n,a,c);let m=_e(o);f=f||Wa(m);let _=d.bindFramebuffer(36160,p);return d.readBuffer(36064+s),d.readPixels(r,i,n,a,l,f,o),d.readBuffer(36064),d.bindFramebuffer(36160,_||null),u&&h.destroy(),o}function Z_(e,t){let{target:r,sourceX:i=0,sourceY:s=0,sourceFormat:o=6408,targetByteOffset:n=0}=t||{},{sourceWidth:a,sourceHeight:c,sourceType:l}=t||{},{framebuffer:f,deleteFramebuffer:h}=J_(e);a=a||f.width,c=c||f.height;let u=f;l=l||5121;let d=r;if(!d){let g=$h(o),m=Y_(l),_=n+a*c*g*m;d=u.device.createBuffer({byteLength:_})}let p=e.device.createCommandEncoder();return p.copyTextureToBuffer({sourceTexture:e,width:a,height:c,origin:[i,s],destinationBuffer:d,byteOffset:n}),p.destroy(),h&&f.destroy(),d}function J_(e){return e instanceof Qt?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:cR(e),deleteFramebuffer:!0}}function cR(e,t){let{device:r,width:i,height:s,id:o}=e;return r.createFramebuffer({...t,id:`framebuffer-for-${o}`,width:i,height:s,colorAttachments:[e]})}function lR(e,t,r,i,s,o){if(e)return e;t||=5121;let n=$a(t),a=Te(n),c=$h(r);return new a(i*s*c)}var Q_=A(()=>{D();Xa();K_();Wh()});var Yh={};ge(Yh,{WebGLDevice:()=>Ur});function fR(e,t,r){switch(r.length){case 1:e.gl.vertexAttrib1fv(t,r);break;case 2:e.gl.vertexAttrib2fv(t,r);break;case 3:e.gl.vertexAttrib3fv(t,r);break;case 4:e.gl.vertexAttrib4fv(t,r);break;default:}}function hR(e,t,r){e.gl.vertexAttribI4iv(t,r)}function uR(e,t,r){e.gl.vertexAttribI4uiv(t,r)}function dR(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}var Ur,ec=A(()=>{D();Nh();r_();o_();d_();p_();g_();Ph();Mh();Fi();__();Ba();x_();E_();Ya();Da();F_();k_();j_();H_();X_();$_();Q_();Oi();ja();fo();Ur=class extends mt{type="webgl";handle;features;limits;info;canvasContext;preferredColorFormat="rgba8unorm";preferredDepthFormat="depth24plus";commandEncoder;lost;_resolveContextLost;gl;_constants;_extensions={};_polyfilled=!1;spectorJS;get[Symbol.toStringTag](){return"WebGLDevice"}toString(){return`${this[Symbol.toStringTag]}(${this.id})`}isVertexFormatSupported(t){switch(t){case"unorm8x4-bgra":return!1;default:return!0}}constructor(t){super({...t,id:t.id||m_("webgl-device")});let r=mt._getCanvasContextProps(t);if(!r)throw new Error("WebGLDevice requires props.createCanvasContext to be set");let i=r.canvas?.gl?.device;if(i)throw new Error(`WebGL context already attached to device ${i.id}`);this.canvasContext=new Fa(this,r),this.lost=new Promise(c=>{this._resolveContextLost=c});let s={...t.webgl};r.alphaMode==="premultiplied"&&(s.premultipliedAlpha=!0),t.powerPreference!==void 0&&(s.powerPreference=t.powerPreference),t.failIfMajorPerformanceCaveat!==void 0&&(s.failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat);let n=this.props._handle||e_(this.canvasContext.canvas,{onContextLost:c=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."}),onContextRestored:c=>console.log("WebGL context restored")},s);if(!n)throw new Error("WebGL context creation failed");if(i=n.device,i){if(t._reuseDevices)return b.log(1,`Not creating a new Device, instead returning a reference to Device ${i.id} already attached to WebGL context`,i)(),i._reused=!0,i;throw new Error(`WebGL context already attached to device ${i.id}`)}this.handle=n,this.gl=n,this.spectorJS=Vm({...this.props,gl:this.handle}),this.gl.device=this,this.info=i_(this.gl,this._extensions),this.limits=new Na(this.gl),this.features=new Oa(this.gl,this._extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new Kt(this.gl,{log:(...c)=>b.log(1,...c)()}).trackState(this.gl,{copyState:!1}),(t.debug||t.debugWebGL)&&(this.gl=Hm(this.gl,{debugWebGL:!0,traceWebGL:t.debugWebGL}),b.warn("WebGL debug mode activated. Performance reduced.")()),t.debugWebGL&&(b.level=Math.max(b.level,1)),this.commandEncoder=new po(this,{id:`${this}-command-encoder`})}destroy(){!this.props._reuseDevices&&!this._reused&&delete this.gl.device}get isLost(){return this.gl.isContextLost()}createCanvasContext(t){throw new Error("WebGL only supports a single canvas")}createBuffer(t){let r=this._normalizeBufferProps(t);return new qt(this,r)}createTexture(t){return new ue(this,t)}createExternalTexture(t){throw new Error("createExternalTexture() not implemented")}createSampler(t){return new za(this,t)}createShader(t){return new La(this,t)}createFramebuffer(t){return new fe(this,t)}createVertexArray(t){return new Bi(this,t)}createTransformFeedback(t){return new Ja(this,t)}createQuerySet(t){return new Ga(this,t)}createFence(){return new tc(this)}createRenderPipeline(t){return new Ka(this,t)}createComputePipeline(t){throw new Error("ComputePipeline not supported in WebGL")}createCommandEncoder(t={}){return new po(this,t)}submit(t){t||(t=this.commandEncoder.finish(),this.commandEncoder.destroy(),this.commandEncoder=this.createCommandEncoder({id:`${this.id}-default-encoder`})),t._executeCommands()}readPixelsToArrayWebGL(t,r){return q_(t,r)}readPixelsToBufferWebGL(t,r){return Z_(t,r)}setParametersWebGL(t){Yt(this.gl,t)}getParametersWebGL(t){return Ma(this.gl,t)}withParametersWebGL(t,r){return Fe(this.gl,t,r)}resetWebGL(){b.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),Zm(this.gl)}_getDeviceSpecificTextureFormatCapabilities(t){return f_(this.gl,t,this._extensions)}loseDevice(){let t=!1,i=this.getExtension("WEBGL_lose_context").WEBGL_lose_context;return i&&(t=!0,i.loseContext()),this._resolveContextLost?.({reason:"destroyed",message:"Application triggered context loss"}),t}pushState(){Kt.get(this.gl).push()}popState(){Kt.get(this.gl).pop()}getGLKey(t,r){let i=Number(t);for(let s in this.gl)if(this.gl[s]===i)return`GL.${s}`;return r?.emptyIfUnknown?"":String(t)}getGLKeys(t){let r={emptyIfUnknown:!0};return Object.entries(t).reduce((i,[s,o])=>(i[`${s}:${this.getGLKey(s,r)}`]=`${o}:${this.getGLKey(o,r)}`,i),{})}setConstantAttributeWebGL(t,r){let i=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(i).fill(null);let s=this._constants[t];switch(s&&dR(s,r)&&b.info(1,`setConstantAttributeWebGL(${t}) could have been skipped, value unchanged`)(),this._constants[t]=r,r.constructor){case Float32Array:fR(this,t,r);break;case Int32Array:hR(this,t,r);break;case Uint32Array:uR(this,t,r);break;default:throw new Error("constant")}}getExtension(t){return le(this.gl,t,this._extensions),this._extensions}_setWebGLDebugMetadata(t,r,i){t.luma=r;let s={props:i.spector,id:i.spector.id};t.__SPECTOR_Metadata=s}}});function pR(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:Boolean(e&&typeof e.createVertexArray=="function")}var go,Kh,mo,G_=A(()=>{D();Lm();Ph();Mh();go=1,Kh=class extends Ji{type="webgl";constructor(){super(),mt.defaultProps={...mt.defaultProps,...Pa}}enforceWebGL2(t){Bm(t)}isSupported(){return typeof WebGL2RenderingContext<"u"}isDeviceHandle(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?!0:(typeof WebGLRenderingContext<"u"&&t instanceof WebGLRenderingContext&&b.warn("WebGL1 is not supported",t)(),!1)}async attach(t,r={}){let{WebGLDevice:i}=await Promise.resolve().then(()=>(ec(),Yh));if(t instanceof i)return t;if(t?.device instanceof i)return t.device;if(!pR(t))throw new Error("Invalid WebGL2RenderingContext");let s=r.createCanvasContext===!0?{}:r.createCanvasContext;return new i({...r,_handle:t,createCanvasContext:{canvas:t.canvas,autoResize:!1,...s}})}async create(t={}){let{WebGLDevice:r}=await Promise.resolve().then(()=>(ec(),Yh)),i=[];(t.debugWebGL||t.debug)&&i.push(Wm()),t.debugSpectorJS&&i.push(km(t));let s=await Promise.allSettled(i);for(let o of s)o.status==="rejected"&&b.error(`Failed to initialize debug libraries ${o.reason}`)();try{let o=new r(t);b.groupCollapsed(go,`WebGLDevice ${o.id} created`)();let n=`${o._reused?"Reusing":"Created"} device with WebGL2 ${o.props.debug?"debug ":""}context: ${o.info.vendor}, ${o.info.renderer} for canvas: ${o.canvasContext.id}`;return b.probe(go,n)(),b.table(go,o.info)(),o}finally{b.groupEnd(go)(),b.info(go,"%cWebGL call tracing: luma.log.set('debug-webgl') ","color: white; background: blue; padding: 2px 6px; border-radius: 3px;")()}}};mo=new Kh});var Qa=A(()=>{G_();ec();Ba()});var Tw={};ge(Tw,{AmbientLight:()=>Si,Attribute:()=>Be,AttributeManager:()=>kr,COORDINATE_SYSTEM:()=>B,CompositeLayer:()=>w0,Controller:()=>gt,Deck:()=>rc,DeckGL:()=>Lo,DeckRenderer:()=>Br,DirectionalLight:()=>Pe,FirstPersonController:()=>jr,FirstPersonView:()=>M0,FirstPersonViewport:()=>xc,FlyToInterpolator:()=>Fo,Layer:()=>pc,LayerExtension:()=>O0,LayerManager:()=>Or,LightingEffect:()=>Ge,LinearInterpolator:()=>at,MapController:()=>Fr,MapView:()=>xa,OPERATION:()=>Gg,OrbitController:()=>Wr,OrbitView:()=>v0,OrbitViewport:()=>_c,OrthographicController:()=>Hr,OrthographicView:()=>C0,OrthographicViewport:()=>yc,PointLight:()=>Pi,PostProcessEffect:()=>qs,TRANSITION_EVENTS:()=>to,Tesselator:()=>Bo,TransitionInterpolator:()=>Oe,UNIT:()=>Ze,VERSION:()=>Hn,View:()=>pt,Viewport:()=>bt,WebMercatorViewport:()=>tr,Widget:()=>sr,_CameraLight:()=>$s,_Component:()=>ki,_ComponentState:()=>Vr,_GlobeController:()=>Xr,_GlobeView:()=>I0,_GlobeViewport:()=>Ci,_LayersPass:()=>Wt,_PickLayersPass:()=>Me,_SunLight:()=>Ys,_applyStyles:()=>no,_compareProps:()=>hc,_count:()=>uc,_deepEqual:()=>q,_fillArray:()=>ga,_flatten:()=>rr,_memoize:()=>Ot,_mergeShaders:()=>Po,_registerLoggers:()=>Wn,_removeStyles:()=>Ra,assert:()=>Y,color:()=>Zf,createIterable:()=>Li,fp64LowPart:()=>_h,getShaderAssembler:()=>la,gouraudMaterial:()=>as,log:()=>F,phongMaterial:()=>cs,picking:()=>gh,project:()=>Je,project32:()=>ah,shadow:()=>Ai});var pf={};ge(pf,{Buffer:()=>O,BufferTransform:()=>Ut,CubeGeometry:()=>ms,Device:()=>mt,Framebuffer:()=>Qt,Geometry:()=>kt,GroupNode:()=>yr,Model:()=>At,ModelNode:()=>gs,ScenegraphNode:()=>te,SphereGeometry:()=>_s,Texture:()=>k,TextureTransform:()=>ds,attachDevice:()=>T1,createDevice:()=>y1,enforceWebGL2:()=>b1,getSupportedAdapters:()=>m1,setDefaultDeviceProps:()=>_1,stats:()=>g1});D();D();var DT=1,FT=1,pr=class{time=0;channels=new Map;animations=new Map;playing=!1;lastEngineTime=-1;constructor(){}addChannel(t){let{delay:r=0,duration:i=Number.POSITIVE_INFINITY,rate:s=1,repeat:o=1}=t,n=DT++,a={time:0,delay:r,duration:i,rate:s,repeat:o};return this._setChannelTime(a,this.time),this.channels.set(n,a),n}removeChannel(t){this.channels.delete(t);for(let[r,i]of this.animations)i.channel===t&&this.detachAnimation(r)}isFinished(t){let r=this.channels.get(t);return r===void 0?!1:this.time>=r.delay+r.duration*r.repeat}getTime(t){if(t===void 0)return this.time;let r=this.channels.get(t);return r===void 0?-1:r.time}setTime(t){this.time=Math.max(0,t);let r=this.channels.values();for(let s of r)this._setChannelTime(s,this.time);let i=this.animations.values();for(let s of i){let{animation:o,channel:n}=s;o.setTime(this.getTime(n))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(t,r){let i=FT++;return this.animations.set(i,{animation:t,channel:r}),t.setTime(this.getTime(r)),i}detachAnimation(t){this.animations.delete(t)}update(t){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=t),this.setTime(this.time+(t-this.lastEngineTime)),this.lastEngineTime=t)}_setChannelTime(t,r){let i=r-t.delay,s=t.duration*t.repeat;i>=s?t.time=t.duration*t.rate:(t.time=Math.max(0,i)%t.duration,t.time*=t.rate)}};D();function ud(e){return typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(e):setTimeout(e,1e3/60)}function dd(e){return typeof window<"u"&&window.cancelAnimationFrame?window.cancelAnimationFrame(e):clearTimeout(e)}vc();var BT=0,_l=class{device=null;canvas=null;props;animationProps=null;timeline=null;stats;cpuTime;gpuTime;frameRate;display;_needsRedraw="initialized";_initialized=!1;_running=!1;_animationFrameId=null;_nextFramePromise=null;_resolveNextFrame=null;_cpuStartTime=0;_error=null;constructor(t){if(this.props={..._l.defaultAnimationLoopProps,...t},t=this.props,!t.device)throw new Error("No device provided");this.stats=t.stats||new Le({id:"animation-loop-stats"}),this.cpuTime=this.stats.get("CPU Time"),this.gpuTime=this.stats.get("GPU Time"),this.frameRate=this.stats.get("Frame Rate"),this.setProps({autoResizeViewport:t.autoResizeViewport}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}destroy(){this.stop(),this._setDisplay(null)}delete(){this.destroy()}reportError(t){this.props.onError(t),this._error=t}setNeedsRedraw(t){return this._needsRedraw=this._needsRedraw||t,this}needsRedraw(){let t=this._needsRedraw;return this._needsRedraw=!1,t}setProps(t){return"autoResizeViewport"in t&&(this.props.autoResizeViewport=t.autoResizeViewport||!1),this}async start(){if(this._running)return this;this._running=!0;try{let t;return this._initialized||(this._initialized=!0,await this._initDevice(),this._initialize(),await this.props.onInitialize(this._getAnimationProps())),this._running?(t!==!1&&(this._cancelAnimationFrame(),this._requestAnimationFrame()),this):null}catch(t){let r=t instanceof Error?t:new Error("Unknown error");throw this.props.onError(r),r}}stop(){return this._running&&(this.animationProps&&!this._error&&this.props.onFinalize(this.animationProps),this._cancelAnimationFrame(),this._nextFramePromise=null,this._resolveNextFrame=null,this._running=!1),this}redraw(){return this.device?.isLost||this._error?this:(this._beginFrameTimers(),this._setupFrame(),this._updateAnimationProps(),this._renderFrame(this._getAnimationProps()),this._clearNeedsRedraw(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endFrameTimers(),this)}attachTimeline(t){return this.timeline=t,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(t=>{this._resolveNextFrame=t})),this._nextFramePromise}async toDataURL(){if(this.setNeedsRedraw("toDataURL"),await this.waitForRender(),this.canvas instanceof HTMLCanvasElement)return this.canvas.toDataURL();throw new Error("OffscreenCanvas")}_initialize(){this._startEventHandling(),this._initializeAnimationProps(),this._updateAnimationProps(),this._resizeViewport()}_setDisplay(t){this.display&&(this.display.destroy(),this.display.animationLoop=null),t&&(t.animationLoop=this),this.display=t}_requestAnimationFrame(){this._running&&(this._animationFrameId=ud(this._animationFrame.bind(this)))}_cancelAnimationFrame(){this._animationFrameId!==null&&(dd(this._animationFrameId),this._animationFrameId=null)}_animationFrame(){this._running&&(this.redraw(),this._requestAnimationFrame())}_renderFrame(t){if(this.display){this.display._renderFrame(t);return}this.props.onRender(this._getAnimationProps()),this.device?.submit()}_clearNeedsRedraw(){this._needsRedraw=!1}_setupFrame(){this._resizeViewport()}_initializeAnimationProps(){let t=this.device?.getDefaultCanvasContext();if(!this.device||!t)throw new Error("loop");let r=t?.canvas,i=t.props.useDevicePixels;this.animationProps={animationLoop:this,device:this.device,canvasContext:t,canvas:r,useDevicePixels:i,timeline:this.timeline,needsRedraw:!1,width:1,height:1,aspect:1,time:0,startTime:Date.now(),engineTime:0,tick:0,tock:0,_mousePosition:null}}_getAnimationProps(){if(!this.animationProps)throw new Error("animationProps");return this.animationProps}_updateAnimationProps(){if(!this.animationProps)return;let{width:t,height:r,aspect:i}=this._getSizeAndAspect();(t!==this.animationProps.width||r!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=t,this.animationProps.height=r,this.animationProps.aspect=i,this.animationProps.needsRedraw=this._needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime}async _initDevice(){if(this.device=await this.props.device,!this.device)throw new Error("No device provided");this.canvas=this.device.getDefaultCanvasContext().canvas||null}_createInfoDiv(){if(this.canvas&&this.props.onAddHTML){let t=document.createElement("div");document.body.appendChild(t),t.style.position="relative";let r=document.createElement("div");r.style.position="absolute",r.style.left="10px",r.style.bottom="10px",r.style.width="300px",r.style.background="white",this.canvas instanceof HTMLCanvasElement&&t.appendChild(this.canvas),t.appendChild(r);let i=this.props.onAddHTML(r);i&&(r.innerHTML=i)}}_getSizeAndAspect(){if(!this.device)return{width:1,height:1,aspect:1};let[t,r]=this.device?.getDefaultCanvasContext().getDevicePixelSize()||[1,1],i=1,s=this.device?.getDefaultCanvasContext().canvas;return s&&s.clientHeight?i=s.clientWidth/s.clientHeight:t>0&&r>0&&(i=t/r),{width:t,height:r,aspect:i}}_resizeViewport(){this.props.autoResizeViewport&&this.device.gl&&this.device.gl.viewport(0,0,this.device.gl.drawingBufferWidth,this.device.gl.drawingBufferHeight)}_beginFrameTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this.cpuTime.timeStart()}_endFrameTimers(){this.cpuTime.timeEnd()}_startEventHandling(){this.canvas&&(this.canvas.addEventListener("mousemove",this._onMousemove.bind(this)),this.canvas.addEventListener("mouseleave",this._onMouseleave.bind(this)))}_onMousemove(t){t instanceof MouseEvent&&(this._getAnimationProps()._mousePosition=[t.offsetX,t.offsetY])}_onMouseleave(t){this._getAnimationProps()._mousePosition=null}},si=_l;w(si,"defaultAnimationLoopProps",{device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:t=>console.error(t),stats:ke.stats.get(`animation-loop-${BT++}`),autoResizeViewport:!1});D();function un(e,t){if(!e)throw new Error(t||"shadertools: assertion failed.")}var Tl={number:{type:"number",validate(e,t){return Number.isFinite(e)&&typeof t=="object"&&(t.max===void 0||e<=t.max)&&(t.min===void 0||e>=t.min)}},array:{type:"array",validate(e,t){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function gd(e){let t={};for(let[r,i]of Object.entries(e))t[r]=LT(i);return t}function LT(e){let t=pd(e);if(t!=="object")return{value:e,...Tl[t],type:t};if(typeof e=="object")return e?e.type!==void 0?{...e,...Tl[e.type],type:e.type}:e.value===void 0?{type:"object",value:e}:(t=pd(e.value),{...e,...Tl[t],type:t}):{type:"object",value:null};throw new Error("props")}function pd(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}var md=`#ifdef MODULE_LOGDEPTH
10
+ ${o}${n}${t.type.toUpperCase()}: ${t.message}
11
+
12
+ `}let s=t.type==="error"?"red":"orange";return i?.html?`<div class='luma-compiler-log-${t.type}' style="color:${s};"><b> ${t.type.toUpperCase()}: ${t.message}</b></div>`:`${t.type.toUpperCase()}: ${t.message}`}function TT(t,e,r){let i="";for(let s=e-2;s<=e;s++){let o=t[s-1];o!==void 0&&(i+=Rd(o,e,r))}return i}function Rd(t,e,r){let i=r?.html?xT(t):t;return`${bT(String(e),4)}: ${i}${r?.html?"<br/>":`
13
+ `}`}function bT(t,e){let r="";for(let i=t.length;i<e;++i)r+=" ";return r+t}function xT(t){return t.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#039;")}var Pd=E(()=>{});function AT(t){return ST(t.source)||t.id||Ht(`unnamed ${t.stage}-shader`)}function ST(t,e="unnamed"){return/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(t)?.[1]??e}var bl,Kt,vd=E(()=>{ae();Hi();Pd();bl=class extends N{get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(e,r){r={...r,debugShaders:r.debugShaders||e.props.debugShaders||"errors"},super(e,{id:AT(r),...r},bl.defaultProps),this.stage=this.props.stage,this.source=this.props.source}getCompilationInfoSync(){return null}getTranslatedSource(){return null}async debugShader(){let e=this.props.debugShaders;switch(e){case"never":return;case"errors":if(this.compilationStatus==="success")return;break;case"warnings":case"always":break}let r=await this.getCompilationInfo();e==="warnings"&&r?.length===0||this._displayShaderLog(r,this.id)}_displayShaderLog(e,r){if(typeof document>"u"||!document?.createElement)return;let i=r,s=`${this.stage} shader "${i}"`,o=wd(e,this.source,{showSourceCode:"all",html:!0}),n=this.getTranslatedSource(),a=document.createElement("div");a.innerHTML=`<h1>Compilation error in ${s}</h1>
14
+ <div style="display:flex;position:fixed;top:10px;right:20px;gap:2px;">
15
+ <button id="copy">Copy source</button><br/>
16
+ <button id="close">Close</button>
17
+ </div>
18
+ <code><pre>${o}</pre></code>`,n&&(a.innerHTML+=`<br /><h1>Translated Source</h1><br /><br /><code><pre>${n}</pre></code>`),a.style.top="0",a.style.left="0",a.style.background="white",a.style.position="fixed",a.style.zIndex="9999",a.style.maxWidth="100vw",a.style.maxHeight="100vh",a.style.overflowY="auto",document.body.appendChild(a),a.querySelector(".luma-compiler-log-error")?.scrollIntoView(),a.querySelector("button#close").onclick=()=>{a.remove()},a.querySelector("button#copy").onclick=()=>{navigator.clipboard.writeText(this.source)}}},Kt=bl;P(Kt,"defaultProps",{...N.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debugShaders:void 0})});var xl,rt,Md=E(()=>{ae();_l();St();xl=class extends N{get[Symbol.toStringTag](){return"Framebuffer"}width;height;constructor(e,r={}){super(e,r,xl.defaultProps),this.width=this.props.width,this.height=this.props.height}clone(e){let r=this.colorAttachments.map(s=>s.texture.clone(e)),i=this.depthStencilAttachment&&this.depthStencilAttachment.texture.clone(e);return this.device.createFramebuffer({...this.props,...e,colorAttachments:r,depthStencilAttachment:i})}resize(e){let r=!e;if(e){let[i,s]=Array.isArray(e)?e:[e.width,e.height];r=r||s!==this.height||i!==this.width,this.width=i,this.height=s}r&&(b.log(2,`Resizing framebuffer ${this.id} to ${this.width}x${this.height}`)(),this.resizeAttachments(this.width,this.height))}autoCreateAttachmentTextures(){if(this.props.colorAttachments.length===0&&!this.props.depthStencilAttachment)throw new Error("Framebuffer has noattachments");this.colorAttachments=this.props.colorAttachments.map((r,i)=>{if(typeof r=="string"){let s=this.createColorTexture(r,i);return this.attachResource(s),s.view}return r instanceof U?r.view:r});let e=this.props.depthStencilAttachment;if(e)if(typeof e=="string"){let r=this.createDepthStencilTexture(e);this.attachResource(r),this.depthStencilAttachment=r.view}else e instanceof U?this.depthStencilAttachment=e.view:this.depthStencilAttachment=e}createColorTexture(e,r){return this.device.createTexture({id:`${this.id}-color-attachment-${r}`,usage:U.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height,sampler:{magFilter:"linear",minFilter:"linear"}})}createDepthStencilTexture(e){return this.device.createTexture({id:`${this.id}-depth-stencil-attachment`,usage:U.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height})}resizeAttachments(e,r){if(this.colorAttachments.forEach((i,s)=>{let o=i.texture.clone({width:e,height:r});this.destroyAttachedResource(i),this.colorAttachments[s]=o.view,this.attachResource(o.view)}),this.depthStencilAttachment){let i=this.depthStencilAttachment.texture.clone({width:e,height:r});this.destroyAttachedResource(this.depthStencilAttachment),this.depthStencilAttachment=i.view,this.attachResource(i)}this.updateAttachments()}},rt=xl;P(rt,"defaultProps",{...N.defaultProps,width:1,height:1,colorAttachments:[],depthStencilAttachment:null})});var Al,we,Cd=E(()=>{ae();Al=class extends N{get[Symbol.toStringTag](){return"RenderPipeline"}shaderLayout;bufferLayout;linkStatus="pending";hash="";sharedRenderPipeline=null;get isPending(){return this.linkStatus==="pending"||this.vs.compilationStatus==="pending"||this.fs?.compilationStatus==="pending"}get isErrored(){return this.linkStatus==="error"||this.vs.compilationStatus==="error"||this.fs?.compilationStatus==="error"}constructor(e,r){super(e,r,Al.defaultProps),this.shaderLayout=this.props.shaderLayout,this.bufferLayout=this.props.bufferLayout||[],this.sharedRenderPipeline=this.props._sharedRenderPipeline||null}},we=Al;P(we,"defaultProps",{...N.defaultProps,vs:null,vertexEntryPoint:"vertexMain",vsConstants:{},fs:null,fragmentEntryPoint:"fragmentMain",fsConstants:{},shaderLayout:null,bufferLayout:[],topology:"triangle-list",colorAttachmentFormats:void 0,depthStencilAttachmentFormat:void 0,parameters:{},varyings:void 0,bufferMode:void 0,disableWarnings:!1,_sharedRenderPipeline:void 0,bindings:void 0})});var ts,Id=E(()=>{ae();ts=class extends N{get[Symbol.toStringTag](){return"SharedRenderPipeline"}constructor(e,r){super(e,r,{...N.defaultProps,handle:void 0,vs:void 0,fs:void 0,varyings:void 0,bufferMode:void 0})}}});var br,Rt,Od=E(()=>{ae();br=class extends N{get[Symbol.toStringTag](){return"RenderPass"}constructor(e,r){r=br.normalizeProps(e,r),super(e,r,br.defaultProps)}static normalizeProps(e,r){return r}},Rt=br;P(Rt,"defaultClearColor",[0,0,0,1]),P(Rt,"defaultClearDepth",1),P(Rt,"defaultClearStencil",0),P(Rt,"defaultProps",{...N.defaultProps,framebuffer:null,parameters:void 0,clearColor:br.defaultClearColor,clearColors:void 0,clearDepth:br.defaultClearDepth,clearStencil:br.defaultClearStencil,depthReadOnly:!1,stencilReadOnly:!1,discard:!1,occlusionQuerySet:void 0,timestampQuerySet:void 0,beginTimestampIndex:void 0,endTimestampIndex:void 0})});var Sl,xr,Nd=E(()=>{ae();Sl=class extends N{get[Symbol.toStringTag](){return"ComputePipeline"}hash="";shaderLayout;constructor(e,r){super(e,r,Sl.defaultProps),this.shaderLayout=r.shaderLayout}},xr=Sl;P(xr,"defaultProps",{...N.defaultProps,shader:void 0,entryPoint:void 0,constants:{},shaderLayout:void 0})});var El,ri,Dd=E(()=>{ae();El=class extends N{get[Symbol.toStringTag](){return"CommandEncoder"}_timeProfilingQuerySet=null;_timeProfilingSlotCount=0;_gpuTimeMs;constructor(e,r){super(e,r,El.defaultProps),this._timeProfilingQuerySet=r.timeProfilingQuerySet??null,this._timeProfilingSlotCount=0,this._gpuTimeMs=void 0}async resolveTimeProfilingQuerySet(){if(this._gpuTimeMs=void 0,!this._timeProfilingQuerySet)return;let e=Math.floor(this._timeProfilingSlotCount/2);if(e<=0)return;let r=e*2,i=await this._timeProfilingQuerySet.readResults({firstQuery:0,queryCount:r}),s=0n;for(let o=0;o<r;o+=2)s+=i[o+1]-i[o];this._gpuTimeMs=Number(s)/1e6}getTimeProfilingSlotCount(){return this._timeProfilingSlotCount}getTimeProfilingQuerySet(){return this._timeProfilingQuerySet}_applyTimeProfilingToPassProps(e){let r=e||{};if(!this._supportsTimestampQueries()||!this._timeProfilingQuerySet||r.timestampQuerySet!==void 0||r.beginTimestampIndex!==void 0||r.endTimestampIndex!==void 0)return r;let i=this._timeProfilingSlotCount;return i+1>=this._timeProfilingQuerySet.props.count?r:(this._timeProfilingSlotCount+=2,{...r,timestampQuerySet:this._timeProfilingQuerySet,beginTimestampIndex:i,endTimestampIndex:i+1})}_supportsTimestampQueries(){return this.device.features.has("timestamp-query")}},ri=El;P(ri,"defaultProps",{...N.defaultProps,measureExecutionTime:void 0,timeProfilingQuerySet:void 0})});var wl,ii,Fd=E(()=>{ae();wl=class extends N{get[Symbol.toStringTag](){return"CommandBuffer"}constructor(e,r){super(e,r,wl.defaultProps)}},ii=wl;P(ii,"defaultProps",{...N.defaultProps})});function rs(t){let e=wT(t),r=vT[e];if(!r)throw new Error(`Unsupported variable shader type: ${t}`);return r}function Rl(t){let e=ET(t),r=PT[e];if(!r)throw new Error(`Unsupported attribute shader type: ${t}`);let[i,s]=r,o=i==="i32"||i==="u32",n=i!=="u32",a=RT[i]*s;return{primitiveType:i,components:s,byteLength:a,integer:o,signed:n}}function ET(t){return Bd[t]||t}function wT(t){return MT[t]||t}var RT,PT,vT,Bd,MT,hn=E(()=>{RT={f32:4,f16:2,i32:4,u32:4},PT={f32:["f32",1],"vec2<f32>":["f32",2],"vec3<f32>":["f32",3],"vec4<f32>":["f32",4],f16:["f16",1],"vec2<f16>":["f16",2],"vec3<f16>":["f16",3],"vec4<f16>":["f16",4],i32:["i32",1],"vec2<i32>":["i32",2],"vec3<i32>":["i32",3],"vec4<i32>":["i32",4],u32:["u32",1],"vec2<u32>":["u32",2],"vec3<u32>":["u32",3],"vec4<u32>":["u32",4]},vT={f32:{type:"f32",components:1},f16:{type:"f16",components:1},i32:{type:"i32",components:1},u32:{type:"u32",components:1},"vec2<f32>":{type:"f32",components:2},"vec3<f32>":{type:"f32",components:3},"vec4<f32>":{type:"f32",components:4},"vec2<f16>":{type:"f16",components:2},"vec3<f16>":{type:"f16",components:3},"vec4<f16>":{type:"f16",components:4},"vec2<i32>":{type:"i32",components:2},"vec3<i32>":{type:"i32",components:3},"vec4<i32>":{type:"i32",components:4},"vec2<u32>":{type:"u32",components:2},"vec3<u32>":{type:"u32",components:3},"vec4<u32>":{type:"u32",components:4},"mat2x2<f32>":{type:"f32",components:4},"mat2x3<f32>":{type:"f32",components:6},"mat2x4<f32>":{type:"f32",components:8},"mat3x2<f32>":{type:"f32",components:6},"mat3x3<f32>":{type:"f32",components:9},"mat3x4<f32>":{type:"f32",components:12},"mat4x2<f32>":{type:"f32",components:8},"mat4x3<f32>":{type:"f32",components:12},"mat4x4<f32>":{type:"f32",components:16},"mat2x2<f16>":{type:"f16",components:4},"mat2x3<f16>":{type:"f16",components:6},"mat2x4<f16>":{type:"f16",components:8},"mat3x2<f16>":{type:"f16",components:6},"mat3x3<f16>":{type:"f16",components:9},"mat3x4<f16>":{type:"f16",components:12},"mat4x2<f16>":{type:"f16",components:8},"mat4x3<f16>":{type:"f16",components:12},"mat4x4<f16>":{type:"f16",components:16},"mat2x2<i32>":{type:"i32",components:4},"mat2x3<i32>":{type:"i32",components:6},"mat2x4<i32>":{type:"i32",components:8},"mat3x2<i32>":{type:"i32",components:6},"mat3x3<i32>":{type:"i32",components:9},"mat3x4<i32>":{type:"i32",components:12},"mat4x2<i32>":{type:"i32",components:8},"mat4x3<i32>":{type:"i32",components:12},"mat4x4<i32>":{type:"i32",components:16},"mat2x2<u32>":{type:"u32",components:4},"mat2x3<u32>":{type:"u32",components:6},"mat2x4<u32>":{type:"u32",components:8},"mat3x2<u32>":{type:"u32",components:6},"mat3x3<u32>":{type:"u32",components:9},"mat3x4<u32>":{type:"u32",components:12},"mat4x2<u32>":{type:"u32",components:8},"mat4x3<u32>":{type:"u32",components:12},"mat4x4<u32>":{type:"u32",components:16}},Bd={vec2i:"vec2<i32>",vec3i:"vec3<i32>",vec4i:"vec4<i32>",vec2u:"vec2<u32>",vec3u:"vec3<u32>",vec4u:"vec4<u32>",vec2f:"vec2<f32>",vec3f:"vec3<f32>",vec4f:"vec4<f32>",vec2h:"vec2<f16>",vec3h:"vec3<f16>",vec4h:"vec4<f16>"},MT={...Bd,mat2x2f:"mat2x2<f32>",mat2x3f:"mat2x3<f32>",mat2x4f:"mat2x4<f32>",mat3x2f:"mat3x2<f32>",mat3x3f:"mat3x3<f32>",mat3x4f:"mat3x4<f32>",mat4x2f:"mat4x2<f32>",mat4x3f:"mat4x3<f32>",mat4x4f:"mat4x4<f32>",mat2x2i:"mat2x2<i32>",mat2x3i:"mat2x3<i32>",mat2x4i:"mat2x4<i32>",mat3x2i:"mat3x2<i32>",mat3x3i:"mat3x3<i32>",mat3x4i:"mat3x4<i32>",mat4x2i:"mat4x2<i32>",mat4x3i:"mat4x3<i32>",mat4x4i:"mat4x4<i32>",mat2x2u:"mat2x2<u32>",mat2x3u:"mat2x3<u32>",mat2x4u:"mat2x4<u32>",mat3x2u:"mat3x2<u32>",mat3x3u:"mat3x3<u32>",mat3x4u:"mat3x4<u32>",mat4x2u:"mat4x2<u32>",mat4x3u:"mat4x3<u32>",mat4x4u:"mat4x4<u32>",mat2x2h:"mat2x2<f16>",mat2x3h:"mat2x3<f16>",mat2x4h:"mat2x4<f16>",mat3x2h:"mat3x2<f16>",mat3x3h:"mat3x3<f16>",mat3x4h:"mat3x4<f16>",mat4x2h:"mat4x2<f16>",mat4x3h:"mat4x3<f16>",mat4x4h:"mat4x4<f16>"}});function un(t,e){let r={};for(let i of t.attributes){let s=CT(t,e,i.name);s&&(r[i.name]=s)}return r}function Ld(t,e,r=16){let i=un(t,e),s=new Array(r).fill(null);for(let o of Object.values(i))s[o.location]=o;return s}function CT(t,e,r){let i=IT(t,r),s=OT(e,r);if(!i)return null;let o=Rl(i.type),n=ld(o),a=s?.vertexFormat||n,c=Jr(a);return{attributeName:s?.attributeName||i.name,bufferName:s?.bufferName||i.name,location:i.location,shaderType:i.type,primitiveType:o.primitiveType,shaderComponents:o.components,vertexFormat:a,bufferDataType:c.type,bufferComponents:c.components,normalized:c.normalized,integer:o.integer,stepMode:s?.stepMode||i.stepMode||"vertex",byteOffset:s?.byteOffset||0,byteStride:s?.byteStride||0}}function IT(t,e){let r=t.attributes.find(i=>i.name===e);return r||b.warn(`shader layout attribute "${e}" not present in shader`),r||null}function OT(t,e){NT(t);let r=DT(t,e);return r||(r=FT(t,e),r)?r:(b.warn(`layout for attribute "${e}" not present in buffer layout`),null)}function NT(t){for(let e of t)(e.attributes&&e.format||!e.attributes&&!e.format)&&b.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`)}function DT(t,e){for(let r of t)if(r.format&&r.name===e)return{attributeName:r.name,bufferName:e,stepMode:r.stepMode,vertexFormat:r.format,byteOffset:0,byteStride:r.byteStride||0};return null}function FT(t,e){for(let r of t){let i=r.byteStride;if(typeof r.byteStride!="number")for(let o of r.attributes||[]){let n=Jr(o.format);i+=n.byteLength}let s=r.attributes?.find(o=>o.attribute===e);if(s)return{attributeName:s.attribute,bufferName:r.name,stepMode:r.stepMode,vertexFormat:s.format,byteOffset:s.byteOffset,byteStride:i}}return null}var Pl=E(()=>{St();hn();Jo()});var vl,si,Ud=E(()=>{Pl();ae();vl=class extends N{get[Symbol.toStringTag](){return"VertexArray"}maxVertexAttributes;attributeInfos;indexBuffer=null;attributes;constructor(e,r){super(e,r,vl.defaultProps),this.maxVertexAttributes=e.limits.maxVertexAttributes,this.attributes=new Array(this.maxVertexAttributes).fill(null),this.attributeInfos=Ld(r.shaderLayout,r.bufferLayout,this.maxVertexAttributes)}setConstantWebGL(e,r){this.device.reportError(new Error("constant attributes not supported"),this)()}},si=vl;P(si,"defaultProps",{...N.defaultProps,shaderLayout:void 0,bufferLayout:[]})});var Ml,oi,kd=E(()=>{ae();Ml=class extends N{get[Symbol.toStringTag](){return"TransformFeedback"}constructor(e,r){super(e,r,Ml.defaultProps)}},oi=Ml;P(oi,"defaultProps",{...N.defaultProps,layout:void 0,buffers:{}})});var Cl,ni,Vd=E(()=>{ae();Cl=class extends N{get[Symbol.toStringTag](){return"QuerySet"}constructor(e,r){super(e,r,Cl.defaultProps)}},ni=Cl;P(ni,"defaultProps",{...N.defaultProps,type:void 0,count:void 0})});var Il,ai,zd=E(()=>{ae();Il=class extends N{get[Symbol.toStringTag](){return"Fence"}constructor(e,r={}){super(e,r,Il.defaultProps)}},ai=Il;P(ai,"defaultProps",{...N.defaultProps})});function Ol(t){return(!dn||dn.byteLength<t)&&(dn=new ArrayBuffer(t)),dn}function Nl(t,e){let r=Ol(t.BYTES_PER_ELEMENT*e);return new t(r,0,e)}var dn,Dl=E(()=>{});var BT,pn,Wd=E(()=>{Zi();hn();Dl();St();BT=1024,pn=class{layout={};byteLength;constructor(e,r={}){let i=0;for(let[s,o]of Object.entries(e))i=this._addToLayout(s,o,i,r?.[s]);i+=(4-i%4)%4,this.byteLength=Math.max(i*4,BT)}has(e){return Boolean(this.layout[e])}get(e){return this.layout[e]}getData(e){let r=Ol(this.byteLength),i={i32:new Int32Array(r),u32:new Uint32Array(r),f32:new Float32Array(r),f16:new Uint16Array(r)};for(let[s,o]of Object.entries(e))this._writeCompositeValue(i,s,o);return new Uint8Array(r,0,this.byteLength)}_addToLayout(e,r,i,s=1){if(typeof r=="string"){let o=rs(r),n=o.components*s,a=Go(i,o.components);return this.layout[e]={offset:a,size:n,type:o.type},a+n}if(Array.isArray(r)){let o=r[0],n=s>1?s:r.length>1?r[1]:1,a=Go(i,4);for(let c=0;c<n;c++)a=this._addToLayout(`${e}[${c}]`,o,a);return a}if(typeof r=="object"){let o=Go(i,4);for(let[n,a]of Object.entries(r))o=this._addToLayout(`${e}.${n}`,a,o);return o}throw new Error(`Unsupported CompositeShaderType for ${e}`)}_writeCompositeValue(e,r,i){if(this.layout[r]){this._writeToBuffer(e,r,i);return}if(Array.isArray(i)){for(let s=0;s<i.length;s++){let o=i[s],n=`${r}[${s}]`;this._writeCompositeValue(e,n,o)}return}if(typeof i=="object"&&i!==null){for(let[s,o]of Object.entries(i)){let n=`${r}.${s}`;this._writeCompositeValue(e,n,o)}return}b.warn(`Unsupported uniform value for ${r}:`,i)()}_writeToBuffer(e,r,i){let s=this.layout[r];if(!s){b.warn(`Uniform ${r} not found in layout`)();return}let{type:o,size:n,offset:a}=s,c=e[o];n===1?c[a]=Number(i):c.set(i,a)}}});function LT(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function gn(t){return Array.isArray(t)?t.length===0||typeof t[0]=="number":LT(t)}var jd=E(()=>{});function Hd(t,e,r=16){if(t===e)return!0;let i=t,s=e;if(!gn(i)||!gn(s)||i.length!==s.length)return!1;let o=Math.min(r,UT);if(i.length>o)return!1;for(let n=0;n<i.length;++n)if(s[n]!==i[n])return!1;return!0}function $d(t){return gn(t)?t.slice():t}var UT,Xd=E(()=>{jd();UT=128});var mn,Yd=E(()=>{Xd();mn=class{name;uniforms={};modifiedUniforms={};modified=!0;bindingLayout={};needsRedraw="initialized";constructor(e){if(this.name=e?.name||"unnamed",e?.name&&e?.shaderLayout){let r=e?.shaderLayout.bindings?.find(s=>s.type==="uniform"&&s.name===e?.name);if(!r)throw new Error(e?.name);let i=r;for(let s of i.uniforms||[])this.bindingLayout[s.name]=s}}setUniforms(e){for(let[r,i]of Object.entries(e))this._setUniform(r,i),this.needsRedraw||this.setNeedsRedraw(`${this.name}.${r}=${i}`)}setNeedsRedraw(e){this.needsRedraw=this.needsRedraw||e}getAllUniforms(){return this.modifiedUniforms={},this.needsRedraw=!1,this.uniforms||{}}_setUniform(e,r){Hd(this.uniforms[e],r)||(this.uniforms[e]=$d(r),this.modifiedUniforms[e]=!0,this.modified=!0)}}});var is,Zd=E(()=>{Qo();St();Yd();Wd();is=class{uniformBlocks=new Map;uniformBufferLayouts=new Map;uniformBuffers=new Map;constructor(e){for(let[r,i]of Object.entries(e)){let s=r,o=new pn(i.uniformTypes??{},i.uniformSizes??{});this.uniformBufferLayouts.set(s,o);let n=new mn({name:r});n.setUniforms(i.defaultUniforms||{}),this.uniformBlocks.set(s,n)}}destroy(){for(let e of this.uniformBuffers.values())e.destroy()}setUniforms(e){for(let[r,i]of Object.entries(e))this.uniformBlocks.get(r)?.setUniforms(i);this.updateUniformBuffers()}getUniformBufferByteLength(e){return this.uniformBufferLayouts.get(e)?.byteLength||0}getUniformBufferData(e){let r=this.uniformBlocks.get(e)?.getAllUniforms()||{};return this.uniformBufferLayouts.get(e)?.getData(r)}createUniformBuffer(e,r,i){i&&this.setUniforms(i);let s=this.getUniformBufferByteLength(r),o=e.createBuffer({usage:D.UNIFORM|D.COPY_DST,byteLength:s}),n=this.getUniformBufferData(r);return o.write(n),o}getManagedUniformBuffer(e,r){if(!this.uniformBuffers.get(r)){let i=this.getUniformBufferByteLength(r),s=e.createBuffer({usage:D.UNIFORM|D.COPY_DST,byteLength:i});this.uniformBuffers.set(r,s)}return this.uniformBuffers.get(r)}updateUniformBuffers(){let e=!1;for(let r of this.uniformBlocks.keys()){let i=this.updateUniformBuffer(r);e||=i}return e&&b.log(3,`UniformStore.updateUniformBuffers(): ${e}`)(),e}updateUniformBuffer(e){let r=this.uniformBlocks.get(e),i=this.uniformBuffers.get(e),s=!1;if(i&&r?.needsRedraw){s||=r.needsRedraw;let o=this.getUniformBufferData(e);i=this.uniformBuffers.get(e),i?.write(o);let n=this.uniformBlocks.get(e)?.getAllUniforms();b.log(4,`Writing to uniform buffer ${String(e)}`,o,n)()}return s}}});var F=E(()=>{gd();md();ul();Ad();Sd();Qo();_l();Ed();vd();ml();Md();Cd();Id();Od();Nd();Dd();Fd();Ud();kd();Vd();zd();Zd();Zi();hn();Jo();on();fl();St();pl();Dl();Pl()});var dr,y_=E(()=>{(function(t){t[t.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",t[t.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",t[t.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",t[t.POINTS=0]="POINTS",t[t.LINES=1]="LINES",t[t.LINE_LOOP=2]="LINE_LOOP",t[t.LINE_STRIP=3]="LINE_STRIP",t[t.TRIANGLES=4]="TRIANGLES",t[t.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",t[t.TRIANGLE_FAN=6]="TRIANGLE_FAN",t[t.ZERO=0]="ZERO",t[t.ONE=1]="ONE",t[t.SRC_COLOR=768]="SRC_COLOR",t[t.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",t[t.SRC_ALPHA=770]="SRC_ALPHA",t[t.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",t[t.DST_ALPHA=772]="DST_ALPHA",t[t.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",t[t.DST_COLOR=774]="DST_COLOR",t[t.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",t[t.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",t[t.CONSTANT_COLOR=32769]="CONSTANT_COLOR",t[t.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",t[t.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",t[t.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",t[t.FUNC_ADD=32774]="FUNC_ADD",t[t.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",t[t.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",t[t.BLEND_EQUATION=32777]="BLEND_EQUATION",t[t.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",t[t.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",t[t.BLEND_DST_RGB=32968]="BLEND_DST_RGB",t[t.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",t[t.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",t[t.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",t[t.BLEND_COLOR=32773]="BLEND_COLOR",t[t.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",t[t.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",t[t.LINE_WIDTH=2849]="LINE_WIDTH",t[t.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",t[t.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",t[t.CULL_FACE_MODE=2885]="CULL_FACE_MODE",t[t.FRONT_FACE=2886]="FRONT_FACE",t[t.DEPTH_RANGE=2928]="DEPTH_RANGE",t[t.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",t[t.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",t[t.DEPTH_FUNC=2932]="DEPTH_FUNC",t[t.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",t[t.STENCIL_FUNC=2962]="STENCIL_FUNC",t[t.STENCIL_FAIL=2964]="STENCIL_FAIL",t[t.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",t[t.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",t[t.STENCIL_REF=2967]="STENCIL_REF",t[t.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",t[t.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",t[t.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",t[t.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",t[t.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",t[t.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",t[t.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",t[t.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",t[t.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",t[t.VIEWPORT=2978]="VIEWPORT",t[t.SCISSOR_BOX=3088]="SCISSOR_BOX",t[t.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",t[t.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",t[t.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",t[t.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",t[t.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",t[t.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",t[t.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",t[t.RED_BITS=3410]="RED_BITS",t[t.GREEN_BITS=3411]="GREEN_BITS",t[t.BLUE_BITS=3412]="BLUE_BITS",t[t.ALPHA_BITS=3413]="ALPHA_BITS",t[t.DEPTH_BITS=3414]="DEPTH_BITS",t[t.STENCIL_BITS=3415]="STENCIL_BITS",t[t.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",t[t.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",t[t.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",t[t.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",t[t.SAMPLES=32937]="SAMPLES",t[t.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",t[t.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",t[t.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",t[t.VENDOR=7936]="VENDOR",t[t.RENDERER=7937]="RENDERER",t[t.VERSION=7938]="VERSION",t[t.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",t[t.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",t[t.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",t[t.STATIC_DRAW=35044]="STATIC_DRAW",t[t.STREAM_DRAW=35040]="STREAM_DRAW",t[t.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.BUFFER_SIZE=34660]="BUFFER_SIZE",t[t.BUFFER_USAGE=34661]="BUFFER_USAGE",t[t.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",t[t.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",t[t.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",t[t.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",t[t.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",t[t.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",t[t.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",t[t.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",t[t.CULL_FACE=2884]="CULL_FACE",t[t.FRONT=1028]="FRONT",t[t.BACK=1029]="BACK",t[t.FRONT_AND_BACK=1032]="FRONT_AND_BACK",t[t.BLEND=3042]="BLEND",t[t.DEPTH_TEST=2929]="DEPTH_TEST",t[t.DITHER=3024]="DITHER",t[t.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",t[t.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",t[t.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",t[t.SCISSOR_TEST=3089]="SCISSOR_TEST",t[t.STENCIL_TEST=2960]="STENCIL_TEST",t[t.NO_ERROR=0]="NO_ERROR",t[t.INVALID_ENUM=1280]="INVALID_ENUM",t[t.INVALID_VALUE=1281]="INVALID_VALUE",t[t.INVALID_OPERATION=1282]="INVALID_OPERATION",t[t.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",t[t.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",t[t.CW=2304]="CW",t[t.CCW=2305]="CCW",t[t.DONT_CARE=4352]="DONT_CARE",t[t.FASTEST=4353]="FASTEST",t[t.NICEST=4354]="NICEST",t[t.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",t[t.BYTE=5120]="BYTE",t[t.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",t[t.SHORT=5122]="SHORT",t[t.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",t[t.INT=5124]="INT",t[t.UNSIGNED_INT=5125]="UNSIGNED_INT",t[t.FLOAT=5126]="FLOAT",t[t.DOUBLE=5130]="DOUBLE",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.ALPHA=6406]="ALPHA",t[t.RGB=6407]="RGB",t[t.RGBA=6408]="RGBA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",t[t.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",t[t.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",t[t.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",t[t.VERTEX_SHADER=35633]="VERTEX_SHADER",t[t.COMPILE_STATUS=35713]="COMPILE_STATUS",t[t.DELETE_STATUS=35712]="DELETE_STATUS",t[t.LINK_STATUS=35714]="LINK_STATUS",t[t.VALIDATE_STATUS=35715]="VALIDATE_STATUS",t[t.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",t[t.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",t[t.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",t[t.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",t[t.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",t[t.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",t[t.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",t[t.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",t[t.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",t[t.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",t[t.SHADER_TYPE=35663]="SHADER_TYPE",t[t.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",t[t.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",t[t.NEVER=512]="NEVER",t[t.LESS=513]="LESS",t[t.EQUAL=514]="EQUAL",t[t.LEQUAL=515]="LEQUAL",t[t.GREATER=516]="GREATER",t[t.NOTEQUAL=517]="NOTEQUAL",t[t.GEQUAL=518]="GEQUAL",t[t.ALWAYS=519]="ALWAYS",t[t.KEEP=7680]="KEEP",t[t.REPLACE=7681]="REPLACE",t[t.INCR=7682]="INCR",t[t.DECR=7683]="DECR",t[t.INVERT=5386]="INVERT",t[t.INCR_WRAP=34055]="INCR_WRAP",t[t.DECR_WRAP=34056]="DECR_WRAP",t[t.NEAREST=9728]="NEAREST",t[t.LINEAR=9729]="LINEAR",t[t.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",t[t.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",t[t.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",t[t.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",t[t.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",t[t.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",t[t.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",t[t.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",t[t.TEXTURE_2D=3553]="TEXTURE_2D",t[t.TEXTURE=5890]="TEXTURE",t[t.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",t[t.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",t[t.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",t[t.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",t[t.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",t[t.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",t[t.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",t[t.TEXTURE0=33984]="TEXTURE0",t[t.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",t[t.REPEAT=10497]="REPEAT",t[t.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",t[t.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",t[t.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",t[t.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",t[t.FLOAT_VEC2=35664]="FLOAT_VEC2",t[t.FLOAT_VEC3=35665]="FLOAT_VEC3",t[t.FLOAT_VEC4=35666]="FLOAT_VEC4",t[t.INT_VEC2=35667]="INT_VEC2",t[t.INT_VEC3=35668]="INT_VEC3",t[t.INT_VEC4=35669]="INT_VEC4",t[t.BOOL=35670]="BOOL",t[t.BOOL_VEC2=35671]="BOOL_VEC2",t[t.BOOL_VEC3=35672]="BOOL_VEC3",t[t.BOOL_VEC4=35673]="BOOL_VEC4",t[t.FLOAT_MAT2=35674]="FLOAT_MAT2",t[t.FLOAT_MAT3=35675]="FLOAT_MAT3",t[t.FLOAT_MAT4=35676]="FLOAT_MAT4",t[t.SAMPLER_2D=35678]="SAMPLER_2D",t[t.SAMPLER_CUBE=35680]="SAMPLER_CUBE",t[t.LOW_FLOAT=36336]="LOW_FLOAT",t[t.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",t[t.HIGH_FLOAT=36338]="HIGH_FLOAT",t[t.LOW_INT=36339]="LOW_INT",t[t.MEDIUM_INT=36340]="MEDIUM_INT",t[t.HIGH_INT=36341]="HIGH_INT",t[t.FRAMEBUFFER=36160]="FRAMEBUFFER",t[t.RENDERBUFFER=36161]="RENDERBUFFER",t[t.RGBA4=32854]="RGBA4",t[t.RGB5_A1=32855]="RGB5_A1",t[t.RGB565=36194]="RGB565",t[t.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",t[t.STENCIL_INDEX=6401]="STENCIL_INDEX",t[t.STENCIL_INDEX8=36168]="STENCIL_INDEX8",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",t[t.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",t[t.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",t[t.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",t[t.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",t[t.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",t[t.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",t[t.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",t[t.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",t[t.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",t[t.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",t[t.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",t[t.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",t[t.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",t[t.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",t[t.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",t[t.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",t[t.NONE=0]="NONE",t[t.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",t[t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",t[t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",t[t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",t[t.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",t[t.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",t[t.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",t[t.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",t[t.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",t[t.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",t[t.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",t[t.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",t[t.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",t[t.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",t[t.READ_BUFFER=3074]="READ_BUFFER",t[t.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",t[t.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",t[t.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",t[t.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",t[t.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",t[t.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",t[t.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",t[t.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",t[t.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",t[t.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",t[t.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",t[t.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",t[t.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",t[t.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",t[t.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",t[t.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",t[t.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",t[t.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",t[t.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",t[t.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",t[t.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",t[t.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",t[t.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",t[t.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",t[t.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",t[t.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",t[t.RED=6403]="RED",t[t.RGB8=32849]="RGB8",t[t.RGBA8=32856]="RGBA8",t[t.RGB10_A2=32857]="RGB10_A2",t[t.TEXTURE_3D=32879]="TEXTURE_3D",t[t.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",t[t.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",t[t.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",t[t.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",t[t.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",t[t.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",t[t.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",t[t.SRGB=35904]="SRGB",t[t.SRGB8=35905]="SRGB8",t[t.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",t[t.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",t[t.RGBA32F=34836]="RGBA32F",t[t.RGB32F=34837]="RGB32F",t[t.RGBA16F=34842]="RGBA16F",t[t.RGB16F=34843]="RGB16F",t[t.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",t[t.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",t[t.R11F_G11F_B10F=35898]="R11F_G11F_B10F",t[t.RGB9_E5=35901]="RGB9_E5",t[t.RGBA32UI=36208]="RGBA32UI",t[t.RGB32UI=36209]="RGB32UI",t[t.RGBA16UI=36214]="RGBA16UI",t[t.RGB16UI=36215]="RGB16UI",t[t.RGBA8UI=36220]="RGBA8UI",t[t.RGB8UI=36221]="RGB8UI",t[t.RGBA32I=36226]="RGBA32I",t[t.RGB32I=36227]="RGB32I",t[t.RGBA16I=36232]="RGBA16I",t[t.RGB16I=36233]="RGB16I",t[t.RGBA8I=36238]="RGBA8I",t[t.RGB8I=36239]="RGB8I",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.R8=33321]="R8",t[t.RG8=33323]="RG8",t[t.R16F=33325]="R16F",t[t.R32F=33326]="R32F",t[t.RG16F=33327]="RG16F",t[t.RG32F=33328]="RG32F",t[t.R8I=33329]="R8I",t[t.R8UI=33330]="R8UI",t[t.R16I=33331]="R16I",t[t.R16UI=33332]="R16UI",t[t.R32I=33333]="R32I",t[t.R32UI=33334]="R32UI",t[t.RG8I=33335]="RG8I",t[t.RG8UI=33336]="RG8UI",t[t.RG16I=33337]="RG16I",t[t.RG16UI=33338]="RG16UI",t[t.RG32I=33339]="RG32I",t[t.RG32UI=33340]="RG32UI",t[t.R8_SNORM=36756]="R8_SNORM",t[t.RG8_SNORM=36757]="RG8_SNORM",t[t.RGB8_SNORM=36758]="RGB8_SNORM",t[t.RGBA8_SNORM=36759]="RGBA8_SNORM",t[t.RGB10_A2UI=36975]="RGB10_A2UI",t[t.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",t[t.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",t[t.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",t[t.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",t[t.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",t[t.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",t[t.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",t[t.HALF_FLOAT=5131]="HALF_FLOAT",t[t.RG=33319]="RG",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",t[t.CURRENT_QUERY=34917]="CURRENT_QUERY",t[t.QUERY_RESULT=34918]="QUERY_RESULT",t[t.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",t[t.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",t[t.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",t[t.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",t[t.DRAW_BUFFER0=34853]="DRAW_BUFFER0",t[t.DRAW_BUFFER1=34854]="DRAW_BUFFER1",t[t.DRAW_BUFFER2=34855]="DRAW_BUFFER2",t[t.DRAW_BUFFER3=34856]="DRAW_BUFFER3",t[t.DRAW_BUFFER4=34857]="DRAW_BUFFER4",t[t.DRAW_BUFFER5=34858]="DRAW_BUFFER5",t[t.DRAW_BUFFER6=34859]="DRAW_BUFFER6",t[t.DRAW_BUFFER7=34860]="DRAW_BUFFER7",t[t.DRAW_BUFFER8=34861]="DRAW_BUFFER8",t[t.DRAW_BUFFER9=34862]="DRAW_BUFFER9",t[t.DRAW_BUFFER10=34863]="DRAW_BUFFER10",t[t.DRAW_BUFFER11=34864]="DRAW_BUFFER11",t[t.DRAW_BUFFER12=34865]="DRAW_BUFFER12",t[t.DRAW_BUFFER13=34866]="DRAW_BUFFER13",t[t.DRAW_BUFFER14=34867]="DRAW_BUFFER14",t[t.DRAW_BUFFER15=34868]="DRAW_BUFFER15",t[t.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",t[t.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",t[t.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",t[t.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",t[t.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",t[t.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",t[t.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",t[t.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",t[t.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",t[t.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",t[t.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",t[t.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",t[t.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",t[t.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",t[t.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",t[t.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",t[t.SAMPLER_3D=35679]="SAMPLER_3D",t[t.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",t[t.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",t[t.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",t[t.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",t[t.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",t[t.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",t[t.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",t[t.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",t[t.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",t[t.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",t[t.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",t[t.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",t[t.MAX_SAMPLES=36183]="MAX_SAMPLES",t[t.SAMPLER_BINDING=35097]="SAMPLER_BINDING",t[t.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",t[t.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",t[t.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",t[t.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",t[t.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",t[t.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",t[t.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",t[t.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",t[t.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",t[t.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",t[t.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",t[t.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",t[t.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",t[t.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",t[t.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",t[t.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",t[t.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",t[t.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",t[t.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",t[t.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",t[t.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",t[t.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",t[t.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",t[t.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",t[t.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",t[t.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",t[t.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",t[t.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",t[t.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",t[t.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",t[t.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",t[t.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",t[t.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",t[t.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",t[t.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",t[t.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",t[t.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",t[t.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",t[t.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",t[t.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",t[t.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",t[t.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",t[t.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",t[t.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",t[t.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",t[t.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",t[t.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",t[t.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",t[t.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",t[t.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",t[t.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",t[t.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",t[t.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",t[t.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",t[t.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",t[t.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",t[t.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",t[t.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",t[t.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",t[t.UNIFORM_TYPE=35383]="UNIFORM_TYPE",t[t.UNIFORM_SIZE=35384]="UNIFORM_SIZE",t[t.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",t[t.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",t[t.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",t[t.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",t[t.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",t[t.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",t[t.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",t[t.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",t[t.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",t[t.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",t[t.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",t[t.OBJECT_TYPE=37138]="OBJECT_TYPE",t[t.SYNC_CONDITION=37139]="SYNC_CONDITION",t[t.SYNC_STATUS=37140]="SYNC_STATUS",t[t.SYNC_FLAGS=37141]="SYNC_FLAGS",t[t.SYNC_FENCE=37142]="SYNC_FENCE",t[t.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",t[t.UNSIGNALED=37144]="UNSIGNALED",t[t.SIGNALED=37145]="SIGNALED",t[t.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",t[t.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",t[t.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",t[t.WAIT_FAILED=37149]="WAIT_FAILED",t[t.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",t[t.COLOR=6144]="COLOR",t[t.DEPTH=6145]="DEPTH",t[t.STENCIL=6146]="STENCIL",t[t.MIN=32775]="MIN",t[t.MAX=32776]="MAX",t[t.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",t[t.STREAM_READ=35041]="STREAM_READ",t[t.STREAM_COPY=35042]="STREAM_COPY",t[t.STATIC_READ=35045]="STATIC_READ",t[t.STATIC_COPY=35046]="STATIC_COPY",t[t.DYNAMIC_READ=35049]="DYNAMIC_READ",t[t.DYNAMIC_COPY=35050]="DYNAMIC_COPY",t[t.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",t[t.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",t[t.INVALID_INDEX=4294967295]="INVALID_INDEX",t[t.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",t[t.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",t[t.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",t[t.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",t[t.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",t[t.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",t[t.R16_EXT=33322]="R16_EXT",t[t.RG16_EXT=33324]="RG16_EXT",t[t.RGB16_EXT=32852]="RGB16_EXT",t[t.RGBA16_EXT=32859]="RGBA16_EXT",t[t.R16_SNORM_EXT=36760]="R16_SNORM_EXT",t[t.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",t[t.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",t[t.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",t[t.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",t[t.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",t[t.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",t[t.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",t[t.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",t[t.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",t[t.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",t[t.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",t[t.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",t[t.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",t[t.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",t[t.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",t[t.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",t[t.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",t[t.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",t[t.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",t[t.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",t[t.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",t[t.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",t[t.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",t[t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",t[t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",t[t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",t[t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",t[t.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",t[t.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",t[t.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",t[t.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",t[t.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",t[t.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",t[t.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",t[t.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",t[t.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",t[t.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",t[t.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",t[t.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",t[t.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",t[t.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",t[t.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",t[t.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",t[t.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",t[t.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",t[t.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",t[t.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",t[t.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",t[t.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",t[t.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",t[t.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",t[t.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",t[t.COMPLETION_STATUS_KHR=37297]="COMPLETION_STATUS_KHR",t[t.DEPTH_CLAMP_EXT=34383]="DEPTH_CLAMP_EXT",t[t.FIRST_VERTEX_CONVENTION_WEBGL=36429]="FIRST_VERTEX_CONVENTION_WEBGL",t[t.LAST_VERTEX_CONVENTION_WEBGL=36430]="LAST_VERTEX_CONVENTION_WEBGL",t[t.PROVOKING_VERTEX_WEBL=36431]="PROVOKING_VERTEX_WEBL",t[t.POLYGON_MODE_WEBGL=2880]="POLYGON_MODE_WEBGL",t[t.POLYGON_OFFSET_LINE_WEBGL=10754]="POLYGON_OFFSET_LINE_WEBGL",t[t.LINE_WEBGL=6913]="LINE_WEBGL",t[t.FILL_WEBGL=6914]="FILL_WEBGL",t[t.MAX_CLIP_DISTANCES_WEBGL=3378]="MAX_CLIP_DISTANCES_WEBGL",t[t.MAX_CULL_DISTANCES_WEBGL=33529]="MAX_CULL_DISTANCES_WEBGL",t[t.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL=33530]="MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL",t[t.CLIP_DISTANCE0_WEBGL=12288]="CLIP_DISTANCE0_WEBGL",t[t.CLIP_DISTANCE1_WEBGL=12289]="CLIP_DISTANCE1_WEBGL",t[t.CLIP_DISTANCE2_WEBGL=12290]="CLIP_DISTANCE2_WEBGL",t[t.CLIP_DISTANCE3_WEBGL=12291]="CLIP_DISTANCE3_WEBGL",t[t.CLIP_DISTANCE4_WEBGL=12292]="CLIP_DISTANCE4_WEBGL",t[t.CLIP_DISTANCE5_WEBGL=12293]="CLIP_DISTANCE5_WEBGL",t[t.CLIP_DISTANCE6_WEBGL=12294]="CLIP_DISTANCE6_WEBGL",t[t.CLIP_DISTANCE7_WEBGL=12295]="CLIP_DISTANCE7_WEBGL",t[t.POLYGON_OFFSET_CLAMP_EXT=36379]="POLYGON_OFFSET_CLAMP_EXT",t[t.LOWER_LEFT_EXT=36001]="LOWER_LEFT_EXT",t[t.UPPER_LEFT_EXT=36002]="UPPER_LEFT_EXT",t[t.NEGATIVE_ONE_TO_ONE_EXT=37726]="NEGATIVE_ONE_TO_ONE_EXT",t[t.ZERO_TO_ONE_EXT=37727]="ZERO_TO_ONE_EXT",t[t.CLIP_ORIGIN_EXT=37724]="CLIP_ORIGIN_EXT",t[t.CLIP_DEPTH_MODE_EXT=37725]="CLIP_DEPTH_MODE_EXT",t[t.SRC1_COLOR_WEBGL=35065]="SRC1_COLOR_WEBGL",t[t.SRC1_ALPHA_WEBGL=34185]="SRC1_ALPHA_WEBGL",t[t.ONE_MINUS_SRC1_COLOR_WEBGL=35066]="ONE_MINUS_SRC1_COLOR_WEBGL",t[t.ONE_MINUS_SRC1_ALPHA_WEBGL=35067]="ONE_MINUS_SRC1_ALPHA_WEBGL",t[t.MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL=35068]="MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL",t[t.MIRROR_CLAMP_TO_EDGE_EXT=34627]="MIRROR_CLAMP_TO_EDGE_EXT"})(dr||(dr={}))});var T_=E(()=>{y_()});function b_(t=!0){let e=HTMLCanvasElement.prototype;if(!t&&e.originalGetContext){e.getContext=e.originalGetContext,e.originalGetContext=void 0;return}e.originalGetContext=e.getContext,e.getContext=function(r,i){if(r==="webgl"||r==="experimental-webgl"){let s=this.originalGetContext("webgl2",i);return s instanceof HTMLElement&&vR(s),s}return this.originalGetContext(r,i)}}function vR(t){t.getExtension("EXT_color_buffer_float");let e={...ER,WEBGL_disjoint_timer_query:t.getExtension("EXT_disjoint_timer_query_webgl2"),WEBGL_draw_buffers:wR(t),OES_vertex_array_object:RR(t),ANGLE_instanced_arrays:PR(t)},r=t.getExtension;t.getExtension=function(s){let o=r.call(t,s);return o||(s in e?e[s]:null)};let i=t.getSupportedExtensions;t.getSupportedExtensions=function(){return(i.apply(t)||[])?.concat(Object.keys(e))}}var ER,wR,RR,PR,x_=E(()=>{ER={WEBGL_depth_texture:{UNSIGNED_INT_24_8_WEBGL:34042},OES_element_index_uint:{},OES_texture_float:{},OES_texture_half_float:{HALF_FLOAT_OES:5131},EXT_color_buffer_float:{},OES_standard_derivatives:{FRAGMENT_SHADER_DERIVATIVE_HINT_OES:35723},EXT_frag_depth:{},EXT_blend_minmax:{MIN_EXT:32775,MAX_EXT:32776},EXT_shader_texture_lod:{}},wR=t=>({drawBuffersWEBGL(e){return t.drawBuffers(e)},COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067}),RR=t=>({VERTEX_ARRAY_BINDING_OES:34229,createVertexArrayOES(){return t.createVertexArray()},deleteVertexArrayOES(e){return t.deleteVertexArray(e)},isVertexArrayOES(e){return t.isVertexArray(e)},bindVertexArrayOES(e){return t.bindVertexArray(e)}}),PR=t=>({VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:35070,drawArraysInstancedANGLE(...e){return t.drawArraysInstanced(...e)},drawElementsInstancedANGLE(...e){return t.drawElementsInstanced(...e)},vertexAttribDivisorANGLE(...e){return t.vertexAttribDivisor(...e)}})});async function Oa(t,e){let r=document.getElementsByTagName("head")[0];if(!r)throw new Error("loadScript");let i=document.createElement("script");return i.setAttribute("type","text/javascript"),i.setAttribute("src",t),e&&(i.id=e),new Promise((s,o)=>{i.onload=s,i.onerror=n=>o(new Error(`Unable to load script '${t}': ${n}`)),r.appendChild(i)})}var Kh=E(()=>{});function zr(t){let e=t.luma||{_polyfilled:!1,extensions:{},softwareRenderer:!1};return e._polyfilled??=!1,e.extensions||={},t.luma=e,e}var Na=E(()=>{});async function S_(t){if(!globalThis.SPECTOR)try{await Oa(t.debugSpectorJSUrl||Da.debugSpectorJSUrl)}catch(e){b.warn(String(e))}}function E_(t){if(t={...Da,...t},!t.debugSpectorJS)return null;if(!Ce&&globalThis.SPECTOR&&!globalThis.luma?.spector){b.probe(MR,"SPECTOR found and initialized. Start with `luma.spector.displayUI()`")();let{Spector:e}=globalThis.SPECTOR;Ce=new e,globalThis.luma&&(globalThis.luma.spector=Ce)}if(!Ce)return null;if(A_||(A_=!0,Ce.spyCanvases(),Ce?.onCaptureStarted.add(e=>b.info("Spector capture started:",e)()),Ce?.onCapture.add(e=>{b.info("Spector capture complete:",e)(),Ce?.getResultUI(),Ce?.resultView.display(),Ce?.resultView.addCapture(e)})),t.gl){let e=t.gl,r=zr(e),i=r.device;Ce?.startCapture(t.gl,500),r.device=i,new Promise(s=>setTimeout(s,2e3)).then(s=>{b.info("Spector capture stopped after 2 seconds")(),Ce?.stopCapture()})}return Ce}var MR,Ce,A_,Da,qh=E(()=>{F();Kh();Na();MR=1,Ce=null,A_=!1,Da={debugSpectorJS:b.get("debug-spectorjs"),debugSpectorJSUrl:"https://cdn.jsdelivr.net/npm/spectorjs@0.9.30/dist/spector.bundle.js",gl:void 0}});function R_(t){return t.luma=t.luma||{},t.luma}async function P_(){he()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await Oa(CR))}function v_(t,e={}){return e.debugWebGL||e.traceWebGL?OR(t,e):IR(t)}function IR(t){let e=R_(t);return e.realContext?e.realContext:t}function OR(t,e){if(!globalThis.WebGLDebugUtils)return b.warn("webgl-debug not loaded")(),t;let r=R_(t);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({...dr,...t});let i=globalThis.WebGLDebugUtils.makeDebugContext(t,NR.bind(null,e),DR.bind(null,e));for(let n in dr)!(n in i)&&typeof dr[n]=="number"&&(i[n]=dr[n]);class s{}Object.setPrototypeOf(i,Object.getPrototypeOf(t)),Object.setPrototypeOf(s,i);let o=Object.create(s);return r.realContext=t,r.debugContext=o,o.luma=r,o.debug=!0,o}function w_(t,e){e=Array.from(e).map(i=>i===void 0?"undefined":i);let r=globalThis.WebGLDebugUtils.glFunctionArgsToString(t,e);return r=`${r.slice(0,100)}${r.length>100?"...":""}`,`gl.${t}(${r})`}function NR(t,e,r,i){i=Array.from(i).map(a=>a===void 0?"undefined":a);let s=globalThis.WebGLDebugUtils.glEnumToString(e),o=globalThis.WebGLDebugUtils.glFunctionArgsToString(r,i),n=`${s} in gl.${r}(${o})`;b.error("%cWebGL","color: white; background: red; padding: 2px 6px; border-radius: 3px;",n)();debugger;throw new Error(n)}function DR(t,e,r){let i="";t.traceWebGL&&b.level>=1&&(i=w_(e,r),b.info(1,"%cWebGL","color: white; background: blue; padding: 2px 6px; border-radius: 3px;",i)());for(let s of r)if(s===void 0){i=i||w_(e,r);debugger}}var CR,Qh=E(()=>{F();T_();jt();Kh();CR="https://unpkg.com/webgl-debug@2.0.1/index.js"});function Gh(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function G(t,e,r){return e[t]!==void 0?e[t]:r[t]}var go,se,M_,Ie,C_,po,I_,O_,Jh,pt,eu,N_,tu=E(()=>{go={[3042]:!1,[32773]:new Float32Array([0,0,0,0]),[32777]:32774,[34877]:32774,[32969]:1,[32968]:0,[32971]:1,[32970]:0,[3106]:new Float32Array([0,0,0,0]),[3107]:[!0,!0,!0,!0],[2884]:!1,[2885]:1029,[2929]:!1,[2931]:1,[2932]:513,[2928]:new Float32Array([0,1]),[2930]:!0,[3024]:!0,[35725]:null,[36006]:null,[36007]:null,[34229]:null,[34964]:null,[2886]:2305,[33170]:4352,[2849]:1,[32823]:!1,[32824]:0,[10752]:0,[32926]:!1,[32928]:!1,[32938]:1,[32939]:!1,[3089]:!1,[3088]:new Int32Array([0,0,1024,1024]),[2960]:!1,[2961]:0,[2968]:4294967295,[36005]:4294967295,[2962]:519,[2967]:0,[2963]:4294967295,[34816]:519,[36003]:0,[36004]:4294967295,[2964]:7680,[2965]:7680,[2966]:7680,[34817]:7680,[34818]:7680,[34819]:7680,[2978]:[0,0,1024,1024],[36389]:null,[36662]:null,[36663]:null,[35053]:null,[35055]:null,[35723]:4352,[36010]:null,[35977]:!1,[3333]:4,[3317]:4,[37440]:!1,[37441]:!1,[37443]:37444,[3330]:0,[3332]:0,[3331]:0,[3314]:0,[32878]:0,[3316]:0,[3315]:0,[32877]:0},se=(t,e,r)=>e?t.enable(r):t.disable(r),M_=(t,e,r)=>t.hint(r,e),Ie=(t,e,r)=>t.pixelStorei(r,e),C_=(t,e,r)=>{let i=r===36006?36009:36008;return t.bindFramebuffer(i,e)},po=(t,e,r)=>{let s={[34964]:34962,[36662]:36662,[36663]:36663,[35053]:35051,[35055]:35052}[r];t.bindBuffer(s,e)};I_={[3042]:se,[32773]:(t,e)=>t.blendColor(...e),[32777]:"blendEquation",[34877]:"blendEquation",[32969]:"blendFunc",[32968]:"blendFunc",[32971]:"blendFunc",[32970]:"blendFunc",[3106]:(t,e)=>t.clearColor(...e),[3107]:(t,e)=>t.colorMask(...e),[2884]:se,[2885]:(t,e)=>t.cullFace(e),[2929]:se,[2931]:(t,e)=>t.clearDepth(e),[2932]:(t,e)=>t.depthFunc(e),[2928]:(t,e)=>t.depthRange(...e),[2930]:(t,e)=>t.depthMask(e),[3024]:se,[35723]:M_,[35725]:(t,e)=>t.useProgram(e),[36007]:(t,e)=>t.bindRenderbuffer(36161,e),[36389]:(t,e)=>t.bindTransformFeedback?.(36386,e),[34229]:(t,e)=>t.bindVertexArray(e),[36006]:C_,[36010]:C_,[34964]:po,[36662]:po,[36663]:po,[35053]:po,[35055]:po,[2886]:(t,e)=>t.frontFace(e),[33170]:M_,[2849]:(t,e)=>t.lineWidth(e),[32823]:se,[32824]:"polygonOffset",[10752]:"polygonOffset",[35977]:se,[32926]:se,[32928]:se,[32938]:"sampleCoverage",[32939]:"sampleCoverage",[3089]:se,[3088]:(t,e)=>t.scissor(...e),[2960]:se,[2961]:(t,e)=>t.clearStencil(e),[2968]:(t,e)=>t.stencilMaskSeparate(1028,e),[36005]:(t,e)=>t.stencilMaskSeparate(1029,e),[2962]:"stencilFuncFront",[2967]:"stencilFuncFront",[2963]:"stencilFuncFront",[34816]:"stencilFuncBack",[36003]:"stencilFuncBack",[36004]:"stencilFuncBack",[2964]:"stencilOpFront",[2965]:"stencilOpFront",[2966]:"stencilOpFront",[34817]:"stencilOpBack",[34818]:"stencilOpBack",[34819]:"stencilOpBack",[2978]:(t,e)=>t.viewport(...e),[34383]:se,[10754]:se,[12288]:se,[12289]:se,[12290]:se,[12291]:se,[12292]:se,[12293]:se,[12294]:se,[12295]:se,[3333]:Ie,[3317]:Ie,[37440]:Ie,[37441]:Ie,[37443]:Ie,[3330]:Ie,[3332]:Ie,[3331]:Ie,[3314]:Ie,[32878]:Ie,[3316]:Ie,[3315]:Ie,[32877]:Ie,framebuffer:(t,e)=>{let r=e&&"handle"in e?e.handle:e;return t.bindFramebuffer(36160,r)},blend:(t,e)=>e?t.enable(3042):t.disable(3042),blendColor:(t,e)=>t.blendColor(...e),blendEquation:(t,e)=>{let r=typeof e=="number"?[e,e]:e;t.blendEquationSeparate(...r)},blendFunc:(t,e)=>{let r=e?.length===2?[...e,...e]:e;t.blendFuncSeparate(...r)},clearColor:(t,e)=>t.clearColor(...e),clearDepth:(t,e)=>t.clearDepth(e),clearStencil:(t,e)=>t.clearStencil(e),colorMask:(t,e)=>t.colorMask(...e),cull:(t,e)=>e?t.enable(2884):t.disable(2884),cullFace:(t,e)=>t.cullFace(e),depthTest:(t,e)=>e?t.enable(2929):t.disable(2929),depthFunc:(t,e)=>t.depthFunc(e),depthMask:(t,e)=>t.depthMask(e),depthRange:(t,e)=>t.depthRange(...e),dither:(t,e)=>e?t.enable(3024):t.disable(3024),derivativeHint:(t,e)=>{t.hint(35723,e)},frontFace:(t,e)=>t.frontFace(e),mipmapHint:(t,e)=>t.hint(33170,e),lineWidth:(t,e)=>t.lineWidth(e),polygonOffsetFill:(t,e)=>e?t.enable(32823):t.disable(32823),polygonOffset:(t,e)=>t.polygonOffset(...e),sampleCoverage:(t,e)=>t.sampleCoverage(e[0],e[1]||!1),scissorTest:(t,e)=>e?t.enable(3089):t.disable(3089),scissor:(t,e)=>t.scissor(...e),stencilTest:(t,e)=>e?t.enable(2960):t.disable(2960),stencilMask:(t,e)=>{e=Gh(e)?e:[e,e];let[r,i]=e;t.stencilMaskSeparate(1028,r),t.stencilMaskSeparate(1029,i)},stencilFunc:(t,e)=>{e=Gh(e)&&e.length===3?[...e,...e]:e;let[r,i,s,o,n,a]=e;t.stencilFuncSeparate(1028,r,i,s),t.stencilFuncSeparate(1029,o,n,a)},stencilOp:(t,e)=>{e=Gh(e)&&e.length===3?[...e,...e]:e;let[r,i,s,o,n,a]=e;t.stencilOpSeparate(1028,r,i,s),t.stencilOpSeparate(1029,o,n,a)},viewport:(t,e)=>t.viewport(...e)};O_={blendEquation:(t,e,r)=>t.blendEquationSeparate(G(32777,e,r),G(34877,e,r)),blendFunc:(t,e,r)=>t.blendFuncSeparate(G(32969,e,r),G(32968,e,r),G(32971,e,r),G(32970,e,r)),polygonOffset:(t,e,r)=>t.polygonOffset(G(32824,e,r),G(10752,e,r)),sampleCoverage:(t,e,r)=>t.sampleCoverage(G(32938,e,r),G(32939,e,r)),stencilFuncFront:(t,e,r)=>t.stencilFuncSeparate(1028,G(2962,e,r),G(2967,e,r),G(2963,e,r)),stencilFuncBack:(t,e,r)=>t.stencilFuncSeparate(1029,G(34816,e,r),G(36003,e,r),G(36004,e,r)),stencilOpFront:(t,e,r)=>t.stencilOpSeparate(1028,G(2964,e,r),G(2965,e,r),G(2966,e,r)),stencilOpBack:(t,e,r)=>t.stencilOpSeparate(1029,G(34817,e,r),G(34818,e,r),G(34819,e,r))},Jh={enable:(t,e)=>t({[e]:!0}),disable:(t,e)=>t({[e]:!1}),pixelStorei:(t,e,r)=>t({[e]:r}),hint:(t,e,r)=>t({[e]:r}),useProgram:(t,e)=>t({[35725]:e}),bindRenderbuffer:(t,e,r)=>t({[36007]:r}),bindTransformFeedback:(t,e,r)=>t({[36389]:r}),bindVertexArray:(t,e)=>t({[34229]:e}),bindFramebuffer:(t,e,r)=>{switch(e){case 36160:return t({[36006]:r,[36010]:r});case 36009:return t({[36006]:r});case 36008:return t({[36010]:r});default:return null}},bindBuffer:(t,e,r)=>{let i={[34962]:[34964],[36662]:[36662],[36663]:[36663],[35051]:[35053],[35052]:[35055]}[e];return i?t({[i]:r}):{valueChanged:!0}},blendColor:(t,e,r,i,s)=>t({[32773]:new Float32Array([e,r,i,s])}),blendEquation:(t,e)=>t({[32777]:e,[34877]:e}),blendEquationSeparate:(t,e,r)=>t({[32777]:e,[34877]:r}),blendFunc:(t,e,r)=>t({[32969]:e,[32968]:r,[32971]:e,[32970]:r}),blendFuncSeparate:(t,e,r,i,s)=>t({[32969]:e,[32968]:r,[32971]:i,[32970]:s}),clearColor:(t,e,r,i,s)=>t({[3106]:new Float32Array([e,r,i,s])}),clearDepth:(t,e)=>t({[2931]:e}),clearStencil:(t,e)=>t({[2961]:e}),colorMask:(t,e,r,i,s)=>t({[3107]:[e,r,i,s]}),cullFace:(t,e)=>t({[2885]:e}),depthFunc:(t,e)=>t({[2932]:e}),depthRange:(t,e,r)=>t({[2928]:new Float32Array([e,r])}),depthMask:(t,e)=>t({[2930]:e}),frontFace:(t,e)=>t({[2886]:e}),lineWidth:(t,e)=>t({[2849]:e}),polygonOffset:(t,e,r)=>t({[32824]:e,[10752]:r}),sampleCoverage:(t,e,r)=>t({[32938]:e,[32939]:r}),scissor:(t,e,r,i,s)=>t({[3088]:new Int32Array([e,r,i,s])}),stencilMask:(t,e)=>t({[2968]:e,[36005]:e}),stencilMaskSeparate:(t,e,r)=>t({[e===1028?2968:36005]:r}),stencilFunc:(t,e,r,i)=>t({[2962]:e,[2967]:r,[2963]:i,[34816]:e,[36003]:r,[36004]:i}),stencilFuncSeparate:(t,e,r,i,s)=>t({[e===1028?2962:34816]:r,[e===1028?2967:36003]:i,[e===1028?2963:36004]:s}),stencilOp:(t,e,r,i)=>t({[2964]:e,[2965]:r,[2966]:i,[34817]:e,[34818]:r,[34819]:i}),stencilOpSeparate:(t,e,r,i,s)=>t({[e===1028?2964:34817]:r,[e===1028?2965:34818]:i,[e===1028?2966:34819]:s}),viewport:(t,e,r,i,s)=>t({[2978]:[e,r,i,s]})},pt=(t,e)=>t.isEnabled(e),eu={[3042]:pt,[2884]:pt,[2929]:pt,[3024]:pt,[32823]:pt,[32926]:pt,[32928]:pt,[3089]:pt,[2960]:pt,[35977]:pt},N_=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068])});function qe(t,e){if(FR(e))return;let r={};for(let s in e){let o=Number(s),n=I_[s];n&&(typeof n=="string"?r[n]=!0:n(t,e[s],o))}let i=t.lumaState?.cache;if(i)for(let s in r){let o=O_[s];o(t,e,i)}}function Fa(t,e=go){if(typeof e=="number"){let s=e,o=eu[s];return o?o(t,s):t.getParameter(s)}let r=Array.isArray(e)?e:Object.keys(e),i={};for(let s of r){let o=eu[s];i[s]=o?o(t,Number(s)):t.getParameter(Number(s))}return i}function D_(t){qe(t,go)}function FR(t){for(let e in t)return!1;return!0}var Ni=E(()=>{tu()});function B_(t,e){if(t===e)return!0;if(F_(t)&&F_(e)&&t.length===e.length){for(let r=0;r<t.length;++r)if(t[r]!==e[r])return!1;return!0}return!1}function F_(t){return Array.isArray(t)||ArrayBuffer.isView(t)}var L_=E(()=>{});function U_(t,e){let r=t[e].bind(t);t[e]=function(s){if(s===void 0||N_.has(s))return r(s);let o=Qe.get(t);return s in o.cache||(o.cache[s]=r(s)),o.enable?o.cache[s]:r(s)},Object.defineProperty(t[e],"name",{value:`${e}-from-cache`,configurable:!1})}function BR(t,e,r){if(!t[e])return;let i=t[e].bind(t);t[e]=function(...o){let n=Qe.get(t),{valueChanged:a,oldValue:c}=r(n._updateCache,...o);return a&&i(...o),c},Object.defineProperty(t[e],"name",{value:`${e}-to-cache`,configurable:!1})}function LR(t){let e=t.useProgram.bind(t);t.useProgram=function(i){let s=Qe.get(t);s.program!==i&&(e(i),s.program=i)}}var Qe,ru=E(()=>{Ni();L_();tu();Qe=class{static get(e){return e.lumaState}gl;program=null;stateStack=[];enable=!0;cache=null;log;initialized=!1;constructor(e,r){this.gl=e,this.log=r?.log||(()=>{}),this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(e={}){this.stateStack.push({})}pop(){let e=this.stateStack[this.stateStack.length-1];qe(this.gl,e),this.stateStack.pop()}trackState(e,r){if(this.cache=r?.copyState?Fa(e):Object.assign({},go),this.initialized)throw new Error("WebGLStateTracker");this.initialized=!0,this.gl.lumaState=this,LR(e);for(let i in Jh){let s=Jh[i];BR(e,i,s)}U_(e,"getParameter"),U_(e,"isEnabled")}_updateCache(e){let r=!1,i,s=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let o in e){let n=e[o],a=this.cache[o];B_(n,a)||(r=!0,i=a,s&&!(o in s)&&(s[o]=a),this.cache[o]=n)}return{valueChanged:r,oldValue:i}}}});function k_(t,e,r){let i="",s=c=>{let l=c.statusMessage;l&&(i||=l)};t.addEventListener("webglcontextcreationerror",s,!1);let o=r.failIfMajorPerformanceCaveat!==!0,n={preserveDrawingBuffer:!0,...r,failIfMajorPerformanceCaveat:!0},a=null;try{a||=t.getContext("webgl2",n),!a&&n.failIfMajorPerformanceCaveat&&(i||="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow.");let c=!1;if(!a&&o&&(n.failIfMajorPerformanceCaveat=!1,a=t.getContext("webgl2",n),c=!0),a||(a=t.getContext("webgl",{}),a&&(a=null,i||="Your browser only supports WebGL1")),!a)throw i||="Your browser does not support WebGL",new Error(`Failed to create WebGL context: ${i}`);let l=zr(a);l.softwareRenderer=c;let{onContextLost:f,onContextRestored:h}=e;return t.addEventListener("webglcontextlost",u=>f(u),!1),t.addEventListener("webglcontextrestored",u=>h(u),!1),a}finally{t.removeEventListener("webglcontextcreationerror",s,!1)}}var V_=E(()=>{Na()});function Ge(t,e,r){return r[e]===void 0&&(r[e]=t.getExtension(e)||null),r[e]}var mo=E(()=>{});function z_(t,e){let r=t.getParameter(7936),i=t.getParameter(7937);Ge(t,"WEBGL_debug_renderer_info",e);let s=e.WEBGL_debug_renderer_info,o=t.getParameter(s?s.UNMASKED_VENDOR_WEBGL:7936),n=t.getParameter(s?s.UNMASKED_RENDERER_WEBGL:7937),a=o||r,c=n||i,l=t.getParameter(7938),f=W_(a,c),h=UR(a,c),u=kR(a,c);return{type:"webgl",gpu:f,gpuType:u,gpuBackend:h,vendor:a,renderer:c,version:l,shadingLanguage:"glsl",shadingLanguageVersion:300}}function W_(t,e){return/NVIDIA/i.exec(t)||/NVIDIA/i.exec(e)?"nvidia":/INTEL/i.exec(t)||/INTEL/i.exec(e)?"intel":/Apple/i.exec(t)||/Apple/i.exec(e)?"apple":/AMD/i.exec(t)||/AMD/i.exec(e)||/ATI/i.exec(t)||/ATI/i.exec(e)?"amd":/SwiftShader/i.exec(t)||/SwiftShader/i.exec(e)?"software":"unknown"}function UR(t,e){return/Metal/i.exec(t)||/Metal/i.exec(e)?"metal":/ANGLE/i.exec(t)||/ANGLE/i.exec(e)?"opengl":"unknown"}function kR(t,e){if(/SwiftShader/i.exec(t)||/SwiftShader/i.exec(e))return"cpu";switch(W_(t,e)){case"apple":return VR(t,e)?"integrated":"unknown";case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}function VR(t,e){return/Apple (M\d|A\d|GPU)/i.test(`${t} ${e}`)}var j_=E(()=>{mo()});function Ba(t){switch(t){case"uint8":return 5121;case"sint8":return 5120;case"unorm8":return 5121;case"snorm8":return 5120;case"uint16":return 5123;case"sint16":return 5122;case"unorm16":return 5123;case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw new Error(String(t))}var iu=E(()=>{});function X_(t){return t in Ua}function cu(t,e,r){return Y_(t,e,r,new Set)}function Y_(t,e,r,i){let s=Ua[e];if(!s||i.has(e))return!1;i.add(e);let o=(s.features||[]).every(n=>Y_(t,n,r,i));return i.delete(e),o?(s.extensions||[]).every(n=>Boolean(Ge(t,n,r))):!1}function Z_(t,e,r){let i=e.create,s=ka[e.format];s?.gl===void 0&&(i=!1),s?.x&&(i=i&&Boolean(Ge(t,s.x,r))),e.format==="stencil8"&&(i=!1);let o=s?.r===!1?!1:s?.r===void 0||cu(t,s.r,r),n=i&&e.render&&o&&ZR(t,e.format,r);return{format:e.format,create:i&&e.create,render:n,filter:i&&e.filter,blend:i&&e.blend,store:i&&e.store}}function ZR(t,e,r){let i=ka[e],s=i?.gl;if(s===void 0||i?.x&&!Ge(t,i.x,r))return!1;let o=t.getParameter(32873),n=t.getParameter(36006),a=t.createTexture(),c=t.createFramebuffer();if(!a||!c)return!1;let l=Number(0),f=Number(t.getError());for(;f!==l;)f=t.getError();let h=!1;try{if(t.bindTexture(3553,a),t.texStorage2D(3553,1,s,1,1),Number(t.getError())!==l)return!1;t.bindFramebuffer(36160,c),t.framebufferTexture2D(36160,36064,3553,a,0),h=Number(t.checkFramebufferStatus(36160))===Number(36053)&&Number(t.getError())===l}finally{t.bindFramebuffer(36160,n),t.deleteFramebuffer(c),t.bindTexture(3553,o),t.deleteTexture(a)}return h}function Va(t){let e=ka[t],r=qR(t),i=de.getInfo(t);return i.compressed&&(e.dataFormat=r),{internalFormat:r,format:e?.dataFormat||KR(i.channels,i.integer,i.normalized,r),type:i.dataType?Ba(i.dataType):e?.types?.[0]||5121,compressed:i.compressed||!1}}function K_(t){switch(de.getInfo(t).attachment){case"depth":return 36096;case"stencil":return 36128;case"depth-stencil":return 33306;default:throw new Error(`Not a depth stencil format: ${t}`)}}function KR(t,e,r,i){if(i===6408||i===6407)return i;switch(t){case"r":return e&&!r?36244:6403;case"rg":return e&&!r?33320:33319;case"rgb":return e&&!r?36248:6407;case"rgba":return e&&!r?36249:6408;case"bgra":throw new Error("bgra pixels not supported by WebGL");default:return 6408}}function qR(t){let r=ka[t]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${t}`);return r}var _o,yo,Di,Fi,zR,WR,jR,HR,$R,XR,H_,$_,su,ou,nu,au,La,YR,Ua,ka,Bi=E(()=>{F();mo();iu();_o="WEBGL_compressed_texture_s3tc",yo="WEBGL_compressed_texture_s3tc_srgb",Di="EXT_texture_compression_rgtc",Fi="EXT_texture_compression_bptc",zR="WEBGL_compressed_texture_etc",WR="WEBGL_compressed_texture_astc",jR="WEBGL_compressed_texture_etc1",HR="WEBGL_compressed_texture_pvrtc",$R="WEBGL_compressed_texture_atc",XR="EXT_texture_norm16",H_="EXT_render_snorm",$_="EXT_color_buffer_float",su="snorm8-renderable-webgl",ou="norm16-renderable-webgl",nu="snorm16-renderable-webgl",au="float16-renderable-webgl",La="float32-renderable-webgl",YR="rgb9e5ufloat-renderable-webgl",Ua={"float32-renderable-webgl":{extensions:[$_]},"float16-renderable-webgl":{extensions:["EXT_color_buffer_half_float"]},"rgb9e5ufloat-renderable-webgl":{extensions:["WEBGL_render_shared_exponent"]},"snorm8-renderable-webgl":{extensions:[H_]},"norm16-webgl":{extensions:[XR]},"norm16-renderable-webgl":{features:["norm16-webgl"]},"snorm16-renderable-webgl":{features:["norm16-webgl"],extensions:[H_]},"float32-filterable":{extensions:["OES_texture_float_linear"]},"float16-filterable-webgl":{extensions:["OES_texture_half_float_linear"]},"texture-filterable-anisotropic-webgl":{extensions:["EXT_texture_filter_anisotropic"]},"texture-blend-float-webgl":{extensions:["EXT_float_blend"]},"texture-compression-bc":{extensions:[_o,yo,Di,Fi]},"texture-compression-bc5-webgl":{extensions:[Di]},"texture-compression-bc7-webgl":{extensions:[Fi]},"texture-compression-etc2":{extensions:[zR]},"texture-compression-astc":{extensions:[WR]},"texture-compression-etc1-webgl":{extensions:[jR]},"texture-compression-pvrtc-webgl":{extensions:[HR]},"texture-compression-atc-webgl":{extensions:[$R]}};ka={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756,r:su},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757,r:su},rg8uint:{gl:33336,rb:!0},rg8sint:{gl:33335,rb:!0},r16uint:{gl:33332,rb:!0},r16sint:{gl:33331,rb:!0},r16float:{gl:33325,rb:!0,r:au},r16unorm:{gl:33322,rb:!0,r:ou},r16snorm:{gl:36760,r:nu},"rgba4unorm-webgl":{gl:32854,rb:!0},"rgb565unorm-webgl":{gl:36194,rb:!0},"rgb5a1unorm-webgl":{gl:32855,rb:!0},"rgb8unorm-webgl":{gl:32849},"rgb8snorm-webgl":{gl:36758},rgba8unorm:{gl:32856},"rgba8unorm-srgb":{gl:35907},rgba8snorm:{gl:36759,r:su},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0,r:au},rg16unorm:{gl:33324,r:ou},rg16snorm:{gl:36761,r:nu},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326,r:La},rgb9e5ufloat:{gl:35901,r:YR},rg11b10ufloat:{gl:35898,rb:!0},rgb10a2unorm:{gl:32857,rb:!0},rgb10a2uint:{gl:36975,rb:!0},"rgb16unorm-webgl":{gl:32852,r:!1},"rgb16snorm-webgl":{gl:36762,r:!1},rg32uint:{gl:33340,rb:!0},rg32sint:{gl:33339,rb:!0},rg32float:{gl:33328,rb:!0,r:La},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842,r:au},rgba16unorm:{gl:32859,rb:!0,r:ou},rgba16snorm:{gl:36763,r:nu},"rgb32float-webgl":{gl:34837,x:$_,r:La,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0,r:La},stencil8:{gl:36168,rb:!0},depth16unorm:{gl:33189,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,dataFormat:6402,types:[5125]},depth32float:{gl:36012,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth32float-stencil8":{gl:36013,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:_o},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:yo},"bc1-rgba-unorm":{gl:33777,x:_o},"bc1-rgba-unorm-srgb":{gl:35916,x:yo},"bc2-rgba-unorm":{gl:33778,x:_o},"bc2-rgba-unorm-srgb":{gl:35918,x:yo},"bc3-rgba-unorm":{gl:33779,x:_o},"bc3-rgba-unorm-srgb":{gl:35919,x:yo},"bc4-r-unorm":{gl:36283,x:Di},"bc4-r-snorm":{gl:36284,x:Di},"bc5-rg-unorm":{gl:36285,x:Di},"bc5-rg-snorm":{gl:36286,x:Di},"bc6h-rgb-ufloat":{gl:36495,x:Fi},"bc6h-rgb-float":{gl:36494,x:Fi},"bc7-rgba-unorm":{gl:36492,x:Fi},"bc7-rgba-unorm-srgb":{gl:36493,x:Fi},"etc2-rgb8unorm":{gl:37492},"etc2-rgb8unorm-srgb":{gl:37494},"etc2-rgb8a1unorm":{gl:37496},"etc2-rgb8a1unorm-srgb":{gl:37497},"etc2-rgba8unorm":{gl:37493},"etc2-rgba8unorm-srgb":{gl:37495},"eac-r11unorm":{gl:37488},"eac-r11snorm":{gl:37489},"eac-rg11unorm":{gl:37490},"eac-rg11snorm":{gl:37491},"astc-4x4-unorm":{gl:37808},"astc-4x4-unorm-srgb":{gl:37840},"astc-5x4-unorm":{gl:37809},"astc-5x4-unorm-srgb":{gl:37841},"astc-5x5-unorm":{gl:37810},"astc-5x5-unorm-srgb":{gl:37842},"astc-6x5-unorm":{gl:37811},"astc-6x5-unorm-srgb":{gl:37843},"astc-6x6-unorm":{gl:37812},"astc-6x6-unorm-srgb":{gl:37844},"astc-8x5-unorm":{gl:37813},"astc-8x5-unorm-srgb":{gl:37845},"astc-8x6-unorm":{gl:37814},"astc-8x6-unorm-srgb":{gl:37846},"astc-8x8-unorm":{gl:37815},"astc-8x8-unorm-srgb":{gl:37847},"astc-10x5-unorm":{gl:37816},"astc-10x5-unorm-srgb":{gl:37848},"astc-10x6-unorm":{gl:37817},"astc-10x6-unorm-srgb":{gl:37849},"astc-10x8-unorm":{gl:37818},"astc-10x8-unorm-srgb":{gl:37850},"astc-10x10-unorm":{gl:37819},"astc-10x10-unorm-srgb":{gl:37851},"astc-12x10-unorm":{gl:37820},"astc-12x10-unorm-srgb":{gl:37852},"astc-12x12-unorm":{gl:37821},"astc-12x12-unorm-srgb":{gl:37853},"pvrtc-rgb4unorm-webgl":{gl:35840},"pvrtc-rgba4unorm-webgl":{gl:35842},"pvrtc-rgb2unorm-webgl":{gl:35841},"pvrtc-rgba2unorm-webgl":{gl:35843},"etc1-rbg-unorm-webgl":{gl:36196},"atc-rgb-unorm-webgl":{gl:35986},"atc-rgba-unorm-webgl":{gl:35986},"atc-rgbai-unorm-webgl":{gl:34798}}});var q_,za,Q_=E(()=>{F();mo();Bi();q_={"depth-clip-control":"EXT_depth_clamp","timestamp-query":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"},za=class extends Qi{gl;extensions;testedFeatures=new Set;constructor(e,r,i){super([],i),this.gl=e,this.extensions=r,Ge(e,"EXT_color_buffer_float",r)}*[Symbol.iterator](){let e=this.getFeatures();for(let r of e)this.has(r)&&(yield r);return[]}has(e){return this.disabledFeatures?.[e]?!1:(this.testedFeatures.has(e)||(this.testedFeatures.add(e),X_(e)&&cu(this.gl,e,this.extensions)&&this.features.add(e),this.getWebGLFeature(e)&&this.features.add(e)),this.features.has(e))}initializeFeatures(){let e=this.getFeatures().filter(r=>r!=="polygon-mode-webgl");for(let r of e)this.has(r)}getFeatures(){return[...Object.keys(q_),...Object.keys(Ua)]}getWebGLFeature(e){let r=q_[e];return Boolean(typeof r=="string"?Ge(this.gl,r,this.extensions):r)}}});var Wa,G_=E(()=>{F();Wa=class extends qi{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderVariables(){return this.getParameter(35659)}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(e){super(),this.gl=e}getParameter(e){return this.limits[e]===void 0&&(this.limits[e]=this.gl.getParameter(e)),this.limits[e]||0}}});function QR(t){return t<34069?t+34069:t}function GR(t){switch(t){case 36053:return"success";case 36054:return"Mismatched attachments";case 36055:return"No attachments";case 36057:return"Height/width mismatch";case 36061:return"Unsupported or split attachments";case 36182:return"Samples mismatch";default:return`${t}`}}var gt,ja=E(()=>{F();Bi();gt=class extends rt{device;gl;handle;colorAttachments=[];depthStencilAttachment=null;constructor(e,r){super(e,r);let i=r.handle===null;this.device=e,this.gl=e.gl,this.handle=this.props.handle||i?this.props.handle:this.gl.createFramebuffer(),i||(e._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.autoCreateAttachmentTextures(),this.updateAttachments())}destroy(){super.destroy(),!this.destroyed&&this.handle!==null&&this.gl.deleteFramebuffer(this.handle)}updateAttachments(){let e=this.gl.bindFramebuffer(36160,this.handle);for(let r=0;r<this.colorAttachments.length;++r){let i=this.colorAttachments[r];if(i){let s=36064+r;this._attachTextureView(s,i)}}if(this.depthStencilAttachment){let r=K_(this.depthStencilAttachment.props.format);this._attachTextureView(r,this.depthStencilAttachment)}if(this.device.props.debug){let r=this.gl.checkFramebufferStatus(36160);if(r!==36053)throw new Error(`Framebuffer ${GR(r)}`)}this.gl.bindFramebuffer(36160,e)}_attachTextureView(e,r){let{gl:i}=this.device,{texture:s}=r,o=r.props.baseMipLevel,n=r.props.baseArrayLayer;switch(i.bindTexture(s.glTarget,s.handle),s.glTarget){case 35866:case 32879:i.framebufferTextureLayer(36160,e,s.handle,o,n);break;case 34067:let a=QR(n);i.framebufferTexture2D(36160,e,a,s.handle,o);break;case 3553:i.framebufferTexture2D(36160,e,3553,s.handle,o);break;default:throw new Error("Illegal texture type")}i.bindTexture(s.glTarget,null)}}});var Ha,J_=E(()=>{F();ja();Ha=class extends ti{device;handle=null;_framebuffer=null;get[Symbol.toStringTag](){return"WebGLCanvasContext"}constructor(e,r){super(r),this.device=e,this._setAutoCreatedCanvasId(`${this.device.id}-canvas`),this._configureDevice()}_configureDevice(){(this.drawingBufferWidth!==this._framebuffer?.width||this.drawingBufferHeight!==this._framebuffer?.height)&&this._framebuffer?.resize([this.drawingBufferWidth,this.drawingBufferHeight])}_getCurrentFramebuffer(){return this._framebuffer||=new gt(this.device,{id:"canvas-context-framebuffer",handle:null,width:this.drawingBufferWidth,height:this.drawingBufferHeight}),this._framebuffer}}});var $a,e0=E(()=>{F();$a=class extends es{device;handle=null;context2d;get[Symbol.toStringTag](){return"WebGLPresentationContext"}constructor(e,r={}){super(r),this.device=e;let i=`${this[Symbol.toStringTag]}(${this.id})`;if(!this.device.getDefaultCanvasContext().offscreenCanvas)throw new Error(`${i}: WebGL PresentationContext requires the default CanvasContext canvas to be an OffscreenCanvas`);let o=this.canvas.getContext("2d");if(!o)throw new Error(`${i}: Failed to create 2d presentation context`);this.context2d=o,this._setAutoCreatedCanvasId(`${this.device.id}-presentation-canvas`),this._configureDevice(),this._startObservers()}present(){this._resizeDrawingBufferIfNeeded(),this.device.submit();let e=this.device.getDefaultCanvasContext(),[r,i]=e.getDrawingBufferSize();if(!(this.drawingBufferWidth===0||this.drawingBufferHeight===0||r===0||i===0||e.canvas.width===0||e.canvas.height===0)){if(r!==this.drawingBufferWidth||i!==this.drawingBufferHeight||e.canvas.width!==this.drawingBufferWidth||e.canvas.height!==this.drawingBufferHeight)throw new Error(`${this[Symbol.toStringTag]}(${this.id}): Default canvas context size ${r}x${i} does not match presentation size ${this.drawingBufferWidth}x${this.drawingBufferHeight}`);this.context2d.clearRect(0,0,this.drawingBufferWidth,this.drawingBufferHeight),this.context2d.drawImage(e.canvas,0,0)}}_configureDevice(){}_getCurrentFramebuffer(e){let r=this.device.getDefaultCanvasContext();return r.setDrawingBufferSize(this.drawingBufferWidth,this.drawingBufferHeight),r.getCurrentFramebuffer(e)}}});function t0(t="id"){lu[t]=lu[t]||1;let e=lu[t]++;return`${t}-${e}`}var lu,r0=E(()=>{lu={}});function JR(t){return t&D.INDEX?34963:t&D.VERTEX?34962:t&D.UNIFORM?35345:34962}function e3(t){return t&D.INDEX||t&D.VERTEX?35044:t&D.UNIFORM?35048:35044}var Je,Xa=E(()=>{F();Je=class extends D{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength=0;bytesUsed=0;constructor(e,r={}){super(e,r),this.device=e,this.gl=this.device.gl;let i=typeof r=="object"?r.handle:void 0;this.handle=i||this.gl.createBuffer(),e._setWebGLDebugMetadata(this.handle,this,{spector:{...this.props,data:typeof this.props.data}}),this.glTarget=JR(this.props.usage),this.glUsage=e3(this.props.usage),this.glIndexType=this.props.indexType==="uint32"?5125:5123,r.data?this._initWithData(r.data,r.byteOffset,r.byteLength):this._initWithByteLength(r.byteLength||0)}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.props.handle?this.trackDeallocatedReferencedMemory("Buffer"):(this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle)),this.destroyed=!0,this.handle=null)}_initWithData(e,r=0,i=e.byteLength+r){let s=this.glTarget;this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,this.glUsage),this.gl.bufferSubData(s,r,e),this.gl.bindBuffer(s,null),this.bytesUsed=i,this.byteLength=i,this._setDebugData(e,r,i),this.props.handle?this.trackReferencedMemory(i,"Buffer"):this.trackAllocatedMemory(i)}_initWithByteLength(e){let r=e;e===0&&(r=new Float32Array(0));let i=this.glTarget;return this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,r,this.glUsage),this.gl.bindBuffer(i,null),this.bytesUsed=e,this.byteLength=e,this._setDebugData(null,0,e),this.props.handle?this.trackReferencedMemory(e,"Buffer"):this.trackAllocatedMemory(e),this}write(e,r=0){let i=ArrayBuffer.isView(e)?e:new Uint8Array(e),s=0,o=void 0,n=36663;this.gl.bindBuffer(n,this.handle),s!==0||o!==void 0?this.gl.bufferSubData(n,r,i,s,o):this.gl.bufferSubData(n,r,i),this.gl.bindBuffer(n,null),this._setDebugData(e,r,e.byteLength)}async mapAndWriteAsync(e,r=0,i=this.byteLength-r){let s=new ArrayBuffer(i);await e(s,"copied"),this.write(s,r)}async readAsync(e=0,r){return this.readSyncWebGL(e,r)}async mapAndReadAsync(e,r=0,i){let s=await this.readAsync(r,i);return await e(s.buffer,"copied")}readSyncWebGL(e=0,r){r=r??this.byteLength-e;let i=new Uint8Array(r),s=0;return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,e,i,s,r),this.gl.bindBuffer(36662,null),this._setDebugData(i,e,r),i}}});function i0(t){let e=t.split(/\r?\n/),r=[];for(let i of e){if(i.length<=1)continue;let s=i.trim(),o=i.split(":"),n=o[0]?.trim();if(o.length===2){let[d,p]=o;if(!d||!p){r.push({message:s,type:Ya(n||"info"),lineNum:0,linePos:0});continue}r.push({message:p.trim(),type:Ya(d),lineNum:0,linePos:0});continue}let[a,c,l,...f]=o;if(!a||!c||!l){r.push({message:o.slice(1).join(":").trim()||s,type:Ya(n||"info"),lineNum:0,linePos:0});continue}let h=parseInt(l,10);isNaN(h)&&(h=0);let u=parseInt(c,10);isNaN(u)&&(u=0),r.push({message:f.join(":").trim(),type:Ya(a),lineNum:h,linePos:u})}return r}function Ya(t){let e=["warning","error","info"],r=t.toLowerCase();return e.includes(r)?r:"info"}var s0=E(()=>{});var Za,o0=E(()=>{F();s0();Za=class extends Kt{device;handle;constructor(e,r){switch(super(e,r),this.device=e,this.props.stage){case"vertex":this.handle=this.props.handle||this.device.gl.createShader(35633);break;case"fragment":this.handle=this.props.handle||this.device.gl.createShader(35632);break;default:throw new Error(this.props.stage)}e._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this._compile(this.source)}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0,this.handle.destroyed=!0)}get asyncCompilationStatus(){return this._waitForCompilationComplete().then(()=>(this._getCompilationStatus(),this.compilationStatus))}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let e=this.device.gl.getShaderInfoLog(this.handle);return e?i0(e):[]}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)||null}async _compile(e){e=e.startsWith("#version ")?e:`#version 300 es
19
+ ${e}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,e),r.compileShader(this.handle),!this.device.props.debug){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),this.compilationStatus==="error")throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);return}b.once(1,"Shader compilation is asynchronous")(),await this._waitForCompilationComplete(),b.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()}async _waitForCompilationComplete(){let e=async s=>await new Promise(o=>setTimeout(o,s));if(!this.device.features.has("compilation-status-async-webgl")){await e(10);return}let{gl:i}=this.device;for(;;){if(i.getShaderParameter(this.handle,37297))return;await e(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error"}}});function a0(t,e,r,i){if(s3(e))return i(t);let s=t;s.pushState();try{return t3(t,e),qe(s.gl,r),i(t)}finally{s.popState()}}function t3(t,e){let r=t,{gl:i}=r;if(e.cullMode)switch(e.cullMode){case"none":i.disable(2884);break;case"front":i.enable(2884),i.cullFace(1028);break;case"back":i.enable(2884),i.cullFace(1029);break}if(e.frontFace&&i.frontFace(Wr("frontFace",e.frontFace,{ccw:2305,cw:2304})),e.unclippedDepth&&t.features.has("depth-clip-control")&&i.enable(34383),e.depthBias!==void 0&&(i.enable(32823),i.polygonOffset(e.depthBias,e.depthBiasSlopeScale||0)),e.provokingVertex&&t.features.has("provoking-vertex-webgl")){let o=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,n=Wr("provokingVertex",e.provokingVertex,{first:36429,last:36430});o?.provokingVertexWEBGL(n)}if((e.polygonMode||e.polygonOffsetLine)&&t.features.has("polygon-mode-webgl")){if(e.polygonMode){let o=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,n=Wr("polygonMode",e.polygonMode,{fill:6914,line:6913});o?.polygonModeWEBGL(1028,n),o?.polygonModeWEBGL(1029,n)}e.polygonOffsetLine&&i.enable(10754)}if(t.features.has("shader-clip-cull-distance-webgl")&&(e.clipDistance0&&i.enable(12288),e.clipDistance1&&i.enable(12289),e.clipDistance2&&i.enable(12290),e.clipDistance3&&i.enable(12291),e.clipDistance4&&i.enable(12292),e.clipDistance5&&i.enable(12293),e.clipDistance6&&i.enable(12294),e.clipDistance7&&i.enable(12295)),e.depthWriteEnabled!==void 0&&i.depthMask(i3("depthWriteEnabled",e.depthWriteEnabled)),e.depthCompare&&(e.depthCompare!=="always"?i.enable(2929):i.disable(2929),i.depthFunc(qa("depthCompare",e.depthCompare))),e.stencilWriteMask){let s=e.stencilWriteMask;i.stencilMaskSeparate(1028,s),i.stencilMaskSeparate(1029,s)}if(e.stencilReadMask&&b.warn("stencilReadMask not supported under WebGL"),e.stencilCompare){let s=e.stencilReadMask||4294967295,o=qa("depthCompare",e.stencilCompare);e.stencilCompare!=="always"?i.enable(2960):i.disable(2960),i.stencilFuncSeparate(1028,o,0,s),i.stencilFuncSeparate(1029,o,0,s)}if(e.stencilPassOperation&&e.stencilFailOperation&&e.stencilDepthFailOperation){let s=fu("stencilPassOperation",e.stencilPassOperation),o=fu("stencilFailOperation",e.stencilFailOperation),n=fu("stencilDepthFailOperation",e.stencilDepthFailOperation);i.stencilOpSeparate(1028,o,n,s),i.stencilOpSeparate(1029,o,n,s)}switch(e.blend){case!0:i.enable(3042);break;case!1:i.disable(3042);break;default:}if(e.blendColorOperation||e.blendAlphaOperation){let s=n0("blendColorOperation",e.blendColorOperation||"add"),o=n0("blendAlphaOperation",e.blendAlphaOperation||"add");i.blendEquationSeparate(s,o);let n=Ka("blendColorSrcFactor",e.blendColorSrcFactor||"one"),a=Ka("blendColorDstFactor",e.blendColorDstFactor||"zero"),c=Ka("blendAlphaSrcFactor",e.blendAlphaSrcFactor||"one"),l=Ka("blendAlphaDstFactor",e.blendAlphaDstFactor||"zero");i.blendFuncSeparate(n,a,c,l)}}function qa(t,e){return Wr(t,e,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function fu(t,e){return Wr(t,e,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function n0(t,e){return Wr(t,e,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function Ka(t,e,r="color"){return Wr(t,e,{one:1,zero:0,src:768,"one-minus-src":769,dst:774,"one-minus-dst":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,constant:r==="color"?32769:32771,"one-minus-constant":r==="color"?32770:32772,src1:768,"one-minus-src1":769,"src1-alpha":770,"one-minus-src1-alpha":771})}function r3(t,e){return`Illegal parameter ${e} for ${t}`}function Wr(t,e,r){if(!(e in r))throw new Error(r3(t,e));return r[e]}function i3(t,e){return e}function s3(t){let e=!0;for(let r in t){e=!1;break}return e}var hu=E(()=>{F();Ni()});function Qa(t){let e={};return t.addressModeU&&(e[10242]=uu(t.addressModeU)),t.addressModeV&&(e[10243]=uu(t.addressModeV)),t.addressModeW&&(e[32882]=uu(t.addressModeW)),t.magFilter&&(e[10240]=du(t.magFilter)),(t.minFilter||t.mipmapFilter)&&(e[10241]=o3(t.minFilter||"linear",t.mipmapFilter)),t.lodMinClamp!==void 0&&(e[33082]=t.lodMinClamp),t.lodMaxClamp!==void 0&&(e[33083]=t.lodMaxClamp),t.type==="comparison-sampler"&&(e[34892]=34894),t.compare&&(e[34893]=qa("compare",t.compare)),t.maxAnisotropy&&(e[34046]=t.maxAnisotropy),e}function uu(t){switch(t){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function du(t){switch(t){case"nearest":return 9728;case"linear":return 9729}}function o3(t,e="none"){if(!e)return du(t);switch(e){case"none":return du(t);case"nearest":switch(t){case"nearest":return 9984;case"linear":return 9985}break;case"linear":switch(t){case"nearest":return 9986;case"linear":return 9987}}}var pu=E(()=>{hu()});var Ga,c0=E(()=>{F();pu();Ga=class extends Ne{device;handle;parameters;constructor(e,r){super(e,r),this.device=e,this.parameters=Qa(r),this.handle=r.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(e){for(let[r,i]of Object.entries(e)){let s=Number(r);switch(s){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,s,i);break;default:this.device.gl.samplerParameteri(this.handle,s,i);break}}}}});function mt(t,e,r){if(n3(e))return r(t);let{nocatch:i=!0}=e,s=Qe.get(t);s.push(),qe(t,e);let o;if(i)o=r(t),s.pop();else try{o=r(t)}finally{s.pop()}return o}function n3(t){for(let e in t)return!1;return!0}var Ja=E(()=>{Ni();ru()});var _t,gu=E(()=>{F();_t=class extends Zt{device;gl;handle;texture;constructor(e,r){super(e,{...U.defaultProps,...r}),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}}});function ec(t){return a3[t]}var a3,mu=E(()=>{a3={[5124]:"sint32",[5125]:"uint32",[5122]:"sint16",[5123]:"uint16",[5120]:"sint8",[5121]:"uint8",[5126]:"float32",[5131]:"float16",[33635]:"uint16",[32819]:"uint16",[32820]:"uint16",[33640]:"uint32",[35899]:"uint32",[35902]:"uint32",[34042]:"uint32",[36269]:"uint32"}});function c3(t,e=0){return e?new t.constructor(t.buffer,t.byteOffset+e,(t.byteLength-e)/t.BYTES_PER_ELEMENT):t}function l3(t,e){if(e%t.BYTES_PER_ELEMENT!==0)throw new Error(`Texture byteOffset ${e} must align to typed array element size ${t.BYTES_PER_ELEMENT}`);return e/t.BYTES_PER_ELEMENT}function f3(t){switch(t){case"1d":break;case"2d":return 3553;case"3d":return 32879;case"cube":return 34067;case"2d-array":return 35866;case"cube-array":break}throw new Error(t)}function tc(t,e,r){return e==="cube"?34069+r:t}var yt,rc=E(()=>{F();Bi();pu();Ja();gu();mu();F();yt=class extends U{device;gl;handle;sampler=void 0;view;glTarget;glFormat;glType;glInternalFormat;compressed;_textureUnit=0;_framebuffer=null;_framebufferAttachmentKey=null;constructor(e,r){super(e,r,{byteAlignment:1}),this.device=e,this.gl=this.device.gl;let i=Va(this.props.format);this.glTarget=f3(this.props.dimension),this.glInternalFormat=i.internalFormat,this.glFormat=i.format,this.glType=i.type,this.compressed=i.compressed,this.handle=this.props.handle||this.gl.createTexture(),this.device._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.gl.bindTexture(this.glTarget,this.handle);let{dimension:s,width:o,height:n,depth:a,mipLevels:c,glTarget:l,glInternalFormat:f}=this;if(!this.compressed)switch(s){case"2d":case"cube":this.gl.texStorage2D(l,c,f,o,n);break;case"2d-array":case"3d":this.gl.texStorage3D(l,c,f,o,n,a);break;default:throw new Error(s)}this.gl.bindTexture(this.glTarget,null),this._initializeData(r.data),this.props.handle?this.trackReferencedMemory(this.getAllocatedByteLength(),"Texture"):this.trackAllocatedMemory(this.getAllocatedByteLength(),"Texture"),this.setSampler(this.props.sampler),this.view=new _t(this.device,{...this.props,texture:this}),Object.seal(this)}destroy(){this.handle&&(this._framebuffer?.destroy(),this._framebuffer=null,this._framebufferAttachmentKey=null,this.removeStats(),this.props.handle?this.trackDeallocatedReferencedMemory("Texture"):(this.gl.deleteTexture(this.handle),this.trackDeallocatedMemory("Texture")),this.destroyed=!0)}createView(e){return new _t(this.device,{...e,texture:this})}setSampler(e={}){super.setSampler(e);let r=Qa(this.sampler.props);this._setSamplerParameters(r)}copyExternalImage(e){let r=this._normalizeCopyExternalImageOptions(e);if(r.sourceX||r.sourceY)throw new Error("WebGL does not support sourceX/sourceY)");let{glFormat:i,glType:s}=this,{image:o,depth:n,mipLevel:a,x:c,y:l,z:f,width:h,height:u}=r,d=tc(this.glTarget,this.dimension,f),p=r.flipY?{[37440]:!0}:{};return this.gl.bindTexture(this.glTarget,this.handle),mt(this.gl,p,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(d,a,c,l,h,u,i,s,o);break;case"2d-array":case"3d":this.gl.texSubImage3D(d,a,c,l,f,h,u,n,i,s,o);break;default:}}),this.gl.bindTexture(this.glTarget,null),{width:r.width,height:r.height}}copyImageData(e){super.copyImageData(e)}readBuffer(e={},r){let i=this._getSupportedColorReadOptions(e),s=this.computeMemoryLayout(i),o=r||this.device.createBuffer({byteLength:s.byteLength,usage:D.COPY_DST|D.MAP_READ});if(o.byteLength<s.byteLength)throw new Error(`${this} readBuffer target is too small (${o.byteLength} < ${s.byteLength})`);let n=o;this.gl.bindBuffer(35051,n.handle);try{this._readColorTextureLayers(i,s,a=>{this.gl.readPixels(i.x,i.y,i.width,i.height,this.glFormat,this.glType,a)})}finally{this.gl.bindBuffer(35051,null)}return o}async readDataAsync(e={}){let r=this.readBuffer(e),i=await r.readAsync();return r.destroy(),i.buffer}writeBuffer(e,r={}){let i=this._normalizeTextureWriteOptions(r),{width:s,height:o,depthOrArrayLayers:n,mipLevel:a,byteOffset:c,x:l,y:f,z:h}=i,{glFormat:u,glType:d,compressed:p}=this,g=tc(this.glTarget,this.dimension,h);if(p)throw new Error("writeBuffer for compressed textures is not implemented in WebGL");let{bytesPerPixel:m}=this.device.getTextureFormatInfo(this.format),_=m?i.bytesPerRow/m:void 0,T={[3317]:this.byteAlignment,..._!==void 0?{[3314]:_}:{},[32878]:i.rowsPerImage};this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,e.handle),mt(this.gl,T,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(g,a,l,f,s,o,u,d,c);break;case"2d-array":case"3d":this.gl.texSubImage3D(g,a,l,f,h,s,o,n,u,d,c);break;default:}}),this.gl.bindBuffer(35052,null),this.gl.bindTexture(this.glTarget,null)}writeData(e,r={}){let i=this._normalizeTextureWriteOptions(r),s=ArrayBuffer.isView(e)?e:new Uint8Array(e),{width:o,height:n,depthOrArrayLayers:a,mipLevel:c,x:l,y:f,z:h,byteOffset:u}=i,{glFormat:d,glType:p,compressed:g}=this,m=tc(this.glTarget,this.dimension,h),_;if(!g){let{bytesPerPixel:w}=this.device.getTextureFormatInfo(this.format);w&&(_=i.bytesPerRow/w)}let T=this.compressed?{}:{[3317]:this.byteAlignment,..._!==void 0?{[3314]:_}:{},[32878]:i.rowsPerImage},y=l3(s,u),x=g?c3(s,u):s,S=this._getMipLevelSize(c),A=l===0&&f===0&&h===0&&o===S.width&&n===S.height&&a===S.depthOrArrayLayers;this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,null),mt(this.gl,T,()=>{switch(this.dimension){case"2d":case"cube":g?A?this.gl.compressedTexImage2D(m,c,d,o,n,0,x):this.gl.compressedTexSubImage2D(m,c,l,f,o,n,d,x):this.gl.texSubImage2D(m,c,l,f,o,n,d,p,s,y);break;case"2d-array":case"3d":g?A?this.gl.compressedTexImage3D(m,c,d,o,n,a,0,x):this.gl.compressedTexSubImage3D(m,c,l,f,h,o,n,a,d,x):this.gl.texSubImage3D(m,c,l,f,h,o,n,a,d,p,s,y);break;default:}}),this.gl.bindTexture(this.glTarget,null)}_getRowByteAlignment(e,r){return 1}_getFramebuffer(){return this._framebuffer||=this.device.createFramebuffer({id:`framebuffer-for-${this.id}`,width:this.width,height:this.height,colorAttachments:[this]}),this._framebuffer}readDataSyncWebGL(e={}){let r=this._getSupportedColorReadOptions(e),i=this.computeMemoryLayout(r),s=ec(this.glType),o=Et(s),n=new o(i.byteLength/o.BYTES_PER_ELEMENT);return this._readColorTextureLayers(r,i,a=>{let c=new o(n.buffer,n.byteOffset+a,i.bytesPerImage/o.BYTES_PER_ELEMENT);this.gl.readPixels(r.x,r.y,r.width,r.height,this.glFormat,this.glType,c)}),n.buffer}_readColorTextureLayers(e,r,i){let s=this._getFramebuffer(),o=r.bytesPerRow/r.bytesPerPixel,n={[3333]:this.byteAlignment,...o!==e.width?{[3330]:o}:{}},a=this.gl.getParameter(3074),c=this.gl.bindFramebuffer(36160,s.handle);try{this.gl.readBuffer(36064),mt(this.gl,n,()=>{for(let l=0;l<e.depthOrArrayLayers;l++)this._attachReadSubresource(s,e.mipLevel,e.z+l),i(l*r.bytesPerImage)})}finally{this.gl.bindFramebuffer(36160,c||null),this.gl.readBuffer(a)}}_attachReadSubresource(e,r,i){let s=`${r}:${i}`;if(this._framebufferAttachmentKey!==s){switch(this.dimension){case"2d":this.gl.framebufferTexture2D(36160,36064,3553,this.handle,r);break;case"cube":this.gl.framebufferTexture2D(36160,36064,tc(this.glTarget,this.dimension,i),this.handle,r);break;case"2d-array":case"3d":this.gl.framebufferTextureLayer(36160,36064,this.handle,r,i);break;default:throw new Error(`${this} color readback does not support ${this.dimension} textures`)}if(this.device.props.debug){let o=Number(this.gl.checkFramebufferStatus(36160));if(o!==Number(36053))throw new Error(`${e} incomplete for ${this} readback (${o})`)}this._framebufferAttachmentKey=s}}generateMipmapsWebGL(e){if(!(!(this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format))&&(b.warn(`${this} is not renderable or filterable, may not be able to generate mipmaps`)(),!e?.force)))try{this.gl.bindTexture(this.glTarget,this.handle),this.gl.generateMipmap(this.glTarget)}catch(i){b.warn(`Error generating mipmap for ${this}: ${i.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}_setSamplerParameters(e){b.log(2,`${this.id} sampler parameters`,this.device.getGLKeys(e))(),this.gl.bindTexture(this.glTarget,this.handle);for(let[r,i]of Object.entries(e)){let s=Number(r),o=i;switch(s){case 33082:case 33083:this.gl.texParameterf(this.glTarget,s,o);break;case 10240:case 10241:this.gl.texParameteri(this.glTarget,s,o);break;case 10242:case 10243:case 32882:this.gl.texParameteri(this.glTarget,s,o);break;case 34046:this.device.features.has("texture-filterable-anisotropic-webgl")&&this.gl.texParameteri(this.glTarget,s,o);break;case 34892:case 34893:this.gl.texParameteri(this.glTarget,s,o);break}}this.gl.bindTexture(this.glTarget,null)}_getActiveUnit(){return this.gl.getParameter(34016)-33984}_bind(e){let{gl:r}=this;return e!==void 0&&(this._textureUnit=e,r.activeTexture(33984+e)),r.bindTexture(this.glTarget,this.handle),e}_unbind(e){let{gl:r}=this;return e!==void 0&&(this._textureUnit=e,r.activeTexture(33984+e)),r.bindTexture(this.glTarget,null),e}}});function l0(t,e,r,i){let s=t,o=i;o===!0&&(o=1),o===!1&&(o=0);let n=typeof o=="number"?[o]:o;switch(r){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if(typeof i!="number")throw new Error("samplers must be set to integers");return t.uniform1i(e,i);case 5126:return t.uniform1fv(e,n);case 35664:return t.uniform2fv(e,n);case 35665:return t.uniform3fv(e,n);case 35666:return t.uniform4fv(e,n);case 5124:return t.uniform1iv(e,n);case 35667:return t.uniform2iv(e,n);case 35668:return t.uniform3iv(e,n);case 35669:return t.uniform4iv(e,n);case 35670:return t.uniform1iv(e,n);case 35671:return t.uniform2iv(e,n);case 35672:return t.uniform3iv(e,n);case 35673:return t.uniform4iv(e,n);case 5125:return s.uniform1uiv(e,n,1);case 36294:return s.uniform2uiv(e,n,2);case 36295:return s.uniform3uiv(e,n,3);case 36296:return s.uniform4uiv(e,n,4);case 35674:return t.uniformMatrix2fv(e,!1,n);case 35675:return t.uniformMatrix3fv(e,!1,n);case 35676:return t.uniformMatrix4fv(e,!1,n);case 35685:return s.uniformMatrix2x3fv(e,!1,n);case 35686:return s.uniformMatrix2x4fv(e,!1,n);case 35687:return s.uniformMatrix3x2fv(e,!1,n);case 35688:return s.uniformMatrix3x4fv(e,!1,n);case 35689:return s.uniformMatrix4x2fv(e,!1,n);case 35690:return s.uniformMatrix4x3fv(e,!1,n)}throw new Error("Illegal uniform")}var f0=E(()=>{});function h0(t){switch(t){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"triangle-list":return 4;case"triangle-strip":return 5;default:throw new Error(t)}}function u0(t){switch(t){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 1;case"triangle-list":return 4;case"triangle-strip":return 4;default:throw new Error(t)}}var _u=E(()=>{});function h3(t,e){let r={...t,attributes:t.attributes.map(i=>({...i}))};for(let i of e?.attributes||[]){let s=r.attributes.find(o=>o.name===i.name);s?(s.type=i.type||s.type,s.stepMode=i.stepMode||s.stepMode):b.warn(`shader layout attribute ${i.name} not present in shader`)}return r}var ic,d0=E(()=>{F();hu();f0();Xa();ja();rc();gu();_u();ic=class extends we{device;handle;vs;fs;introspectedLayout;bindings={};uniforms={};varyings=null;_uniformCount=0;_uniformSetters={};get[Symbol.toStringTag](){return"WEBGLRenderPipeline"}constructor(e,r){super(e,r),this.device=e;let i=this.sharedRenderPipeline||this.device._createSharedRenderPipelineWebGL(r);this.sharedRenderPipeline=i,this.handle=i.handle,this.vs=i.vs,this.fs=i.fs,this.linkStatus=i.linkStatus,this.introspectedLayout=i.introspectedLayout,this.device._setWebGLDebugMetadata(this.handle,this,{spector:{id:this.props.id}}),this.shaderLayout=r.shaderLayout?h3(this.introspectedLayout,r.shaderLayout):this.introspectedLayout}destroy(){this.destroyed||(this.sharedRenderPipeline&&!this.props._sharedRenderPipeline&&this.sharedRenderPipeline.destroy(),this.destroyResource())}setBindings(e,r){for(let[i,s]of Object.entries(e)){let o=this.shaderLayout.bindings.find(n=>n.name===i)||this.shaderLayout.bindings.find(n=>n.name===`${i}Uniforms`);if(!o){let n=this.shaderLayout.bindings.map(a=>`"${a.name}"`).join(", ");r?.disableWarnings||b.warn(`No binding "${i}" in render pipeline "${this.id}", expected one of ${n}`,s)();continue}switch(s||b.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),o.type){case"uniform":if(!(s instanceof Je)&&!(s.buffer instanceof Je))throw new Error("buffer value");break;case"texture":if(!(s instanceof _t||s instanceof yt||s instanceof gt))throw new Error(`${this} Bad texture binding for ${i}`);break;case"sampler":b.warn(`Ignoring sampler ${i}`)();break;default:throw new Error(o.type)}this.bindings[i]=s}}draw(e){this._syncLinkStatus();let{renderPass:r,parameters:i=this.props.parameters,topology:s=this.props.topology,vertexArray:o,vertexCount:n,instanceCount:a,isInstanced:c=!1,firstVertex:l=0,transformFeedback:f,bindings:h=this.bindings,uniforms:u=this.uniforms}=e,d=h0(s),p=Boolean(o.indexBuffer),g=o.indexBuffer?.glIndexType;if(this.linkStatus!=="success")return b.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable(h))return b.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(this.handle),o.bindBeforeRender(r),f&&f.begin(this.props.topology),this._applyBindings(h,{disableWarnings:this.props.disableWarnings}),this._applyUniforms(u);let m=r;return a0(this.device,i,m.glParameters,()=>{p&&c?this.device.gl.drawElementsInstanced(d,n||0,g,l,a||0):p?this.device.gl.drawElements(d,n||0,g,l):c?this.device.gl.drawArraysInstanced(d,l,n||0,a||0):this.device.gl.drawArrays(d,l,n||0),f&&f.end()}),o.unbindAfterRender(r),!0}_areTexturesRenderable(e){let r=!0;for(let i of this.shaderLayout.bindings)!e[i.name]&&!e[i.name.replace(/Uniforms$/,"")]&&(b.warn(`Binding ${i.name} not found in ${this.id}`)(),r=!1);return r}_applyBindings(e,r){if(this._syncLinkStatus(),this.linkStatus!=="success")return;let{gl:i}=this.device;i.useProgram(this.handle);let s=0,o=0;for(let n of this.shaderLayout.bindings){let a=e[n.name]||e[n.name.replace(/Uniforms$/,"")];if(!a)throw new Error(`No value for binding ${n.name} in ${this.id}`);switch(n.type){case"uniform":let{name:c}=n,l=i.getUniformBlockIndex(this.handle,c);if(l===4294967295)throw new Error(`Invalid uniform block name ${c}`);i.uniformBlockBinding(this.handle,l,o),a instanceof Je?i.bindBufferBase(35345,o,a.handle):i.bindBufferRange(35345,o,a.buffer.handle,a.offset||0,a.size||a.buffer.byteLength-a.offset),o+=1;break;case"texture":if(!(a instanceof _t||a instanceof yt||a instanceof gt))throw new Error("texture");let f;if(a instanceof _t)f=a.texture;else if(a instanceof yt)f=a;else if(a instanceof gt&&a.colorAttachments[0]instanceof _t)b.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),f=a.colorAttachments[0].texture;else throw new Error("No texture");i.activeTexture(33984+s),i.bindTexture(f.glTarget,f.handle),s+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw new Error(`binding type '${n.type}' not supported in WebGL`)}}}_applyUniforms(e){for(let r of this.shaderLayout.uniforms||[]){let{name:i,location:s,type:o,textureUnit:n}=r,a=e[i]??n;a!==void 0&&l0(this.device.gl,s,o,a)}}_syncLinkStatus(){this.linkStatus=this.sharedRenderPipeline.linkStatus}}});function p0(t){return d3[t]}function sc(t){return u3[t]}function oc(t){return Boolean(m0[t])}function g0(t){return m0[t]}var u3,m0,d3,nc=E(()=>{u3={[5126]:"f32",[35664]:"vec2<f32>",[35665]:"vec3<f32>",[35666]:"vec4<f32>",[5124]:"i32",[35667]:"vec2<i32>",[35668]:"vec3<i32>",[35669]:"vec4<i32>",[5125]:"u32",[36294]:"vec2<u32>",[36295]:"vec3<u32>",[36296]:"vec4<u32>",[35670]:"f32",[35671]:"vec2<f32>",[35672]:"vec3<f32>",[35673]:"vec4<f32>",[35674]:"mat2x2<f32>",[35685]:"mat2x3<f32>",[35686]:"mat2x4<f32>",[35687]:"mat3x2<f32>",[35675]:"mat3x3<f32>",[35688]:"mat3x4<f32>",[35689]:"mat4x2<f32>",[35690]:"mat4x3<f32>",[35676]:"mat4x4<f32>"},m0={[35678]:{viewDimension:"2d",sampleType:"float"},[35680]:{viewDimension:"cube",sampleType:"float"},[35679]:{viewDimension:"3d",sampleType:"float"},[35682]:{viewDimension:"3d",sampleType:"depth"},[36289]:{viewDimension:"2d-array",sampleType:"float"},[36292]:{viewDimension:"2d-array",sampleType:"depth"},[36293]:{viewDimension:"cube",sampleType:"float"},[36298]:{viewDimension:"2d",sampleType:"sint"},[36299]:{viewDimension:"3d",sampleType:"sint"},[36300]:{viewDimension:"cube",sampleType:"sint"},[36303]:{viewDimension:"2d-array",sampleType:"uint"},[36306]:{viewDimension:"2d",sampleType:"uint"},[36307]:{viewDimension:"3d",sampleType:"uint"},[36308]:{viewDimension:"cube",sampleType:"uint"},[36311]:{viewDimension:"2d-array",sampleType:"uint"}},d3={uint8:5121,sint8:5120,unorm8:5121,snorm8:5120,uint16:5123,sint16:5122,unorm16:5123,snorm16:5122,uint32:5125,sint32:5124,float16:5131,float32:5126}});function _0(t,e){let r={attributes:[],bindings:[]};r.attributes=p3(t,e);let i=_3(t,e);for(let a of i){let c=a.uniforms.map(l=>({name:l.name,format:l.format,byteOffset:l.byteOffset,byteStride:l.byteStride,arrayLength:l.arrayLength}));r.bindings.push({type:"uniform",name:a.name,group:0,location:a.location,visibility:(a.vertex?1:0)&(a.fragment?2:0),minBindingSize:a.byteLength,uniforms:c})}let s=m3(t,e),o=0;for(let a of s)if(oc(a.type)){let{viewDimension:c,sampleType:l}=g0(a.type);r.bindings.push({type:"texture",name:a.name,group:0,location:o,viewDimension:c,sampleType:l}),a.textureUnit=o,o+=1}s.length&&(r.uniforms=s);let n=g3(t,e);return n?.length&&(r.varyings=n),r}function p3(t,e){let r=[],i=t.getProgramParameter(e,35721);for(let s=0;s<i;s++){let o=t.getActiveAttrib(e,s);if(!o)throw new Error("activeInfo");let{name:n,type:a}=o,c=t.getAttribLocation(e,n);if(c>=0){let l=sc(a),f=/instance/i.test(n)?"instance":"vertex";r.push({name:n,location:c,stepMode:f,type:l})}}return r.sort((s,o)=>s.location-o.location),r}function g3(t,e){let r=[],i=t.getProgramParameter(e,35971);for(let s=0;s<i;s++){let o=t.getTransformFeedbackVarying(e,s);if(!o)throw new Error("activeInfo");let{name:n,type:a,size:c}=o,l=sc(a),{type:f,components:h}=rs(l);r.push({location:s,name:n,type:f,size:c*h})}return r.sort((s,o)=>s.location-o.location),r}function m3(t,e){let r=[],i=t.getProgramParameter(e,35718);for(let s=0;s<i;s++){let o=t.getActiveUniform(e,s);if(!o)throw new Error("activeInfo");let{name:n,size:a,type:c}=o,{name:l,isArray:f}=y3(n),h=t.getUniformLocation(e,l),u={location:h,name:l,size:a,type:c,isArray:f};if(r.push(u),u.size>1)for(let d=0;d<u.size;d++){let p=`${l}[${d}]`;h=t.getUniformLocation(e,p);let g={...u,name:p,location:h};r.push(g)}}return r}function _3(t,e){let r=(o,n)=>t.getActiveUniformBlockParameter(e,o,n),i=[],s=t.getProgramParameter(e,35382);for(let o=0;o<s;o++){let n={name:t.getActiveUniformBlockName(e,o)||"",location:r(o,35391),byteLength:r(o,35392),vertex:r(o,35396),fragment:r(o,35398),uniformCount:r(o,35394),uniforms:[]},a=r(o,35395)||[],c=t.getActiveUniforms(e,a,35383),l=t.getActiveUniforms(e,a,35384),f=t.getActiveUniforms(e,a,35387),h=t.getActiveUniforms(e,a,35388);for(let u=0;u<n.uniformCount;++u){let d=a[u];if(d!==void 0){let p=t.getActiveUniform(e,d);if(!p)throw new Error("activeInfo");let g=sc(c[u]);n.uniforms.push({name:p.name,format:g,type:c[u],arrayLength:l[u],byteOffset:f[u],byteStride:h[u]})}}i.push(n)}return i.sort((o,n)=>o.location-n.location),i}function y3(t){if(t[t.length-1]!=="]")return{name:t,length:1,isArray:!1};let r=/([^[]*)(\[[0-9]+\])?/.exec(t);return{name:Tr(r?.[1],`Failed to parse GLSL uniform name ${t}`),length:r?.[2]?1:0,isArray:Boolean(r?.[2])}}var y0=E(()=>{F();nc()});var T0,ac,b0=E(()=>{F();y0();nc();T0=4,ac=class extends ts{device;handle;vs;fs;introspectedLayout={attributes:[],bindings:[],uniforms:[]};linkStatus="pending";constructor(e,r){super(e,r),this.device=e,this.handle=r.handle||this.device.gl.createProgram(),this.vs=r.vs,this.fs=r.fs,r.varyings&&r.varyings.length>0&&this.device.gl.transformFeedbackVaryings(this.handle,r.varyings,r.bufferMode||35981),this._linkShaders(),b.time(3,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=_0(this.device.gl,this.handle),b.timeEnd(3,`RenderPipeline ${this.id} - shaderLayout introspection`)()}destroy(){this.destroyed||(this.device.gl.useProgram(null),this.device.gl.deleteProgram(this.handle),this.handle.destroyed=!0,this.destroyResource())}async _linkShaders(){let{gl:e}=this.device;if(e.attachShader(this.handle,this.vs.handle),e.attachShader(this.handle,this.fs.handle),b.time(T0,`linkProgram for ${this.id}`)(),e.linkProgram(this.handle),b.timeEnd(T0,`linkProgram for ${this.id}`)(),!this.device.features.has("compilation-status-async-webgl")){let i=this._getLinkStatus();this._reportLinkStatus(i);return}b.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),b.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();let r=this._getLinkStatus();this._reportLinkStatus(r)}async _reportLinkStatus(e){switch(e){case"success":return;default:let r=e==="link-error"?"Link error":"Validation error";switch(this.vs.compilationStatus){case"error":throw this.vs.debugShader(),new Error(`${this} ${r} during compilation of ${this.vs}`);case"pending":await this.vs.asyncCompilationStatus,this.vs.debugShader();break;case"success":break}switch(this.fs?.compilationStatus){case"error":throw this.fs.debugShader(),new Error(`${this} ${r} during compilation of ${this.fs}`);case"pending":await this.fs.asyncCompilationStatus,this.fs.debugShader();break;case"success":break}let i=this.device.gl.getProgramInfoLog(this.handle);this.device.reportError(new Error(`${r} during ${e}: ${i}`),this)(),this.device.debug()}}_getLinkStatus(){let{gl:e}=this.device;return e.getProgramParameter(this.handle,35714)?(this._initializeSamplerUniforms(),e.validateProgram(this.handle),e.getProgramParameter(this.handle,35715)?(this.linkStatus="success","success"):(this.linkStatus="error","validation-error")):(this.linkStatus="error","link-error")}_initializeSamplerUniforms(){let{gl:e}=this.device;e.useProgram(this.handle);let r=0,i=e.getProgramParameter(this.handle,35718);for(let s=0;s<i;s++){let o=e.getActiveUniform(this.handle,s);if(o&&oc(o.type)){let n=o.name.endsWith("[0]"),a=n?o.name.slice(0,-3):o.name,c=e.getUniformLocation(this.handle,a);c!==null&&(r=this._assignSamplerUniform(c,o,n,r))}}}_assignSamplerUniform(e,r,i,s){let{gl:o}=this.device;if(i&&r.size>1){let n=Int32Array.from({length:r.size},(a,c)=>s+c);return o.uniform1iv(e,n),s+r.size}return o.uniform1i(e,s),s+1}async _waitForLinkComplete(){let e=async s=>await new Promise(o=>setTimeout(o,s));if(!this.device.features.has("compilation-status-async-webgl")){await e(10);return}let{gl:i}=this.device;for(;;){if(i.getProgramParameter(this.handle,37297))return;await e(10)}}}});function T3(t,e){let r=e.sourceBuffer,i=e.destinationBuffer;t.gl.bindBuffer(36662,r.handle),t.gl.bindBuffer(36663,i.handle),t.gl.copyBufferSubData(36662,36663,e.sourceOffset??0,e.destinationOffset??0,e.size),t.gl.bindBuffer(36662,null),t.gl.bindBuffer(36663,null)}function b3(t,e){throw new Error("Not implemented")}function x3(t,e){let{sourceTexture:r,mipLevel:i=0,aspect:s="all",width:o=e.sourceTexture.width,height:n=e.sourceTexture.height,depthOrArrayLayers:a=0,origin:c=[0,0,0],destinationBuffer:l,byteOffset:f=0,bytesPerRow:h,rowsPerImage:u}=e;if(s!=="all")throw new Error("aspect not supported in WebGL");if(i!==0||a!==0||h||u)throw new Error("not implemented");let{framebuffer:d,destroyFramebuffer:p}=x0(r),g;try{let m=l,_=o||d.width,T=n||d.height,y=Tr(d.colorAttachments[0]),x=Va(y.texture.props.format),S=x.format,A=x.type;t.gl.bindBuffer(35051,m.handle),g=t.gl.bindFramebuffer(36160,d.handle),t.gl.readPixels(c[0],c[1],_,T,S,A,f)}finally{t.gl.bindBuffer(35051,null),g!==void 0&&t.gl.bindFramebuffer(36160,g),p&&d.destroy()}}function A3(t,e){let{sourceTexture:r,destinationMipLevel:i=0,origin:s=[0,0],destinationOrigin:o=[0,0,0],destinationTexture:n}=e,{width:a=e.destinationTexture.width,height:c=e.destinationTexture.height}=e,{framebuffer:l,destroyFramebuffer:f}=x0(r),[h=0,u=0]=s,[d,p,g]=o,m=t.gl.bindFramebuffer(36160,l.handle),_,T;if(n instanceof yt)_=n,a=Number.isFinite(a)?a:_.width,c=Number.isFinite(c)?c:_.height,_._bind(0),T=_.glTarget;else throw new Error("invalid destination");switch(T){case 3553:case 34067:t.gl.copyTexSubImage2D(T,i,d,p,h,u,a,c);break;case 35866:case 32879:t.gl.copyTexSubImage3D(T,i,d,p,g,h,u,a,c);break;default:}_&&_._unbind(),t.gl.bindFramebuffer(36160,m),f&&l.destroy()}function x0(t){if(t instanceof U){let{width:e,height:r,id:i}=t;return{framebuffer:t.device.createFramebuffer({id:`framebuffer-for-${i}`,width:e,height:r,colorAttachments:[t]}),destroyFramebuffer:!0}}return{framebuffer:t,destroyFramebuffer:!1}}var cc,A0=E(()=>{F();rc();Bi();cc=class extends ii{device;handle=null;commands=[];constructor(e,r={}){super(e,r),this.device=e}_executeCommands(e=this.commands){for(let r of e)switch(r.name){case"copy-buffer-to-buffer":T3(this.device,r.options);break;case"copy-buffer-to-texture":b3(this.device,r.options);break;case"copy-texture-to-buffer":x3(this.device,r.options);break;case"copy-texture-to-texture":A3(this.device,r.options);break;default:throw new Error(r.name)}}}});var S3,lc,S0=E(()=>{F();Ja();Ni();S3=[1,2,4,8],lc=class extends Rt{device;handle=null;glParameters={};constructor(e,r){super(e,r),this.device=e,r?.framebuffer||e.getDefaultCanvasContext()._resizeDrawingBufferIfNeeded();let i;if(!r?.parameters?.viewport)if(r?.framebuffer){let{width:o,height:n}=r.framebuffer;i=[0,0,o,n]}else{let[o,n]=e.getDefaultCanvasContext().getDrawingBufferSize();i=[0,0,o,n]}this.device.pushState(),this.setParameters({viewport:i,...this.props.parameters});let s=this.props.framebuffer;if(this.props.framebuffer&&s?.handle){let o=this.props.framebuffer.colorAttachments.map((n,a)=>36064+a);this.device.gl.drawBuffers(o)}else this.props.framebuffer||this.device.gl.drawBuffers([1029]);this.clear(),this.props.timestampQuerySet&&this.props.beginTimestampIndex!==void 0&&this.props.timestampQuerySet.writeTimestamp(this.props.beginTimestampIndex)}end(){this.destroyed||(this.props.timestampQuerySet&&this.props.endTimestampIndex!==void 0&&this.props.timestampQuerySet.writeTimestamp(this.props.endTimestampIndex),this.device.popState(),this.destroy())}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}setParameters(e={}){let r={...this.glParameters};r.framebuffer=this.props.framebuffer||null,this.props.depthReadOnly&&(r.depthMask=!this.props.depthReadOnly),r.stencilMask=this.props.stencilReadOnly?0:1,r[35977]=this.props.discard,e.viewport&&(e.viewport.length>=6?(r.viewport=e.viewport.slice(0,4),r.depthRange=[e.viewport[4],e.viewport[5]]):r.viewport=e.viewport),e.scissorRect&&(r.scissorTest=!0,r.scissor=e.scissorRect),e.blendConstant&&(r.blendColor=e.blendConstant),e.stencilReference!==void 0&&(r[2967]=e.stencilReference,r[36003]=e.stencilReference),"colorMask"in e&&(r.colorMask=S3.map(i=>Boolean(i&e.colorMask))),this.glParameters=r,qe(this.device.gl,r)}beginOcclusionQuery(e){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let e={...this.glParameters},r=0;this.props.clearColors&&this.props.clearColors.forEach((i,s)=>{i&&this.clearColorBuffer(s,i)}),this.props.clearColor!==!1&&this.props.clearColors===void 0&&(r|=16384,e.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(r|=256,e.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(r|=1024,e.clearStencil=this.props.clearStencil),r!==0&&mt(this.device.gl,e,()=>{this.device.gl.clear(r)})}clearColorBuffer(e=0,r=[0,0,0,0]){mt(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(r.constructor){case Int8Array:case Int16Array:case Int32Array:this.device.gl.clearBufferiv(6144,e,r);break;case Uint8Array:case Uint8ClampedArray:case Uint16Array:case Uint32Array:this.device.gl.clearBufferuiv(6144,e,r);break;case Float32Array:this.device.gl.clearBufferfv(6144,e,r);break;default:throw new Error("clearColorBuffer: color must be typed array")}})}}});var To,E0=E(()=>{F();A0();S0();To=class extends ri{device;handle=null;commandBuffer;constructor(e,r){super(e,r),this.device=e,this.commandBuffer=new cc(e,{id:`${this.props.id}-command-buffer`})}destroy(){this.destroyResource()}finish(e){return e?.id&&this.commandBuffer.id!==e.id&&(this.commandBuffer.id=e.id,this.commandBuffer.props.id=e.id),this.destroy(),this.commandBuffer}beginRenderPass(e={}){return new lc(this.device,this._applyTimeProfilingToPassProps(e))}beginComputePass(e={}){throw new Error("ComputePass not supported in WebGL")}copyBufferToBuffer(e){this.commandBuffer.commands.push({name:"copy-buffer-to-buffer",options:e})}copyBufferToTexture(e){this.commandBuffer.commands.push({name:"copy-buffer-to-texture",options:e})}copyTextureToBuffer(e){this.commandBuffer.commands.push({name:"copy-texture-to-buffer",options:e})}copyTextureToTexture(e){this.commandBuffer.commands.push({name:"copy-texture-to-texture",options:e})}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}resolveQuerySet(e,r,i){}writeTimestamp(e,r){e.writeTimestamp(r)}}});function w0(t){let{target:e,source:r,start:i=0,count:s=1}=t,o=r.length,n=s*o,a=0;for(let c=i;a<o;a++)e[c++]=r[a]??0;for(;a<n;)a<n-a?(e.copyWithin(i+a,i,i+a),a*=2):(e.copyWithin(i+a,i,i+n-a),a=n);return t.target}var R0=E(()=>{});function E3(t){return Array.isArray(t)?new Float32Array(t):t}function w3(t,e){if(!t||!e||t.length!==e.length||t.constructor!==e.constructor)return!1;for(let r=0;r<t.length;++r)if(t[r]!==e[r])return!1;return!0}var Li,P0=E(()=>{F();jt();iu();R0();Li=class extends si{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(e){return Yc()==="Chrome"}constructor(e,r){super(e,r),this.device=e,this.handle=this.device.gl.createVertexArray()}destroy(){super.destroy(),this.buffer&&this.buffer?.destroy(),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(e){let r=e;if(r&&r.glTarget!==34963)throw new Error("Use .setBuffer()");this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,r?r.handle:null),this.indexBuffer=r,this.device.gl.bindVertexArray(null)}setBuffer(e,r){let i=r;if(i.glTarget===34963)throw new Error("Use .setIndexBuffer()");let{size:s,type:o,stride:n,offset:a,normalized:c,integer:l,divisor:f}=this._getAccessor(e);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,i.handle),l?this.device.gl.vertexAttribIPointer(e,s,o,n,a):this.device.gl.vertexAttribPointer(e,s,o,c,n,a),this.device.gl.bindBuffer(34962,null),this.device.gl.enableVertexAttribArray(e),this.device.gl.vertexAttribDivisor(e,f||0),this.attributes[e]=i,this.device.gl.bindVertexArray(null)}setConstantWebGL(e,r){this._enable(e,!1),this.attributes[e]=r}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let e=0;e<this.maxVertexAttributes;++e){let r=this.attributes[e];ArrayBuffer.isView(r)&&this.device.setConstantAttributeWebGL(e,r)}}_getAccessor(e){let r=this.attributeInfos[e];if(!r)throw new Error(`Unknown attribute location ${e}`);let i=Ba(r.bufferDataType);return{size:r.bufferComponents,type:i,stride:r.byteStride,offset:r.byteOffset,normalized:r.normalized,integer:r.integer,divisor:r.stepMode==="instance"?1:0}}_enable(e,r=!0){let s=Li.isConstantAttributeZeroSupported(this.device)||e!==0;(r||s)&&(e=Number(e),this.device.gl.bindVertexArray(this.handle),r?this.device.gl.enableVertexAttribArray(e):this.device.gl.disableVertexAttribArray(e),this.device.gl.bindVertexArray(null))}getConstantBuffer(e,r){let i=E3(r),s=i.byteLength*e,o=i.length*e;if(this.buffer&&s!==this.buffer.byteLength)throw new Error(`Buffer size is immutable, byte length ${s} !== ${this.buffer.byteLength}.`);let n=!this.buffer;if(this.buffer=this.buffer||this.device.createBuffer({byteLength:s}),n||=!w3(i,this.bufferValue),n){let a=Nl(r.constructor,o);w0({target:a,source:i,start:0,count:o}),this.buffer.write(a),this.bufferValue=r}return this.buffer}}});function v0(t){return typeof t=="number"?Number.isInteger(t):/^\d+$/.test(t)}var fc,M0=E(()=>{F();hc();_u();fc=class extends oi{device;gl;handle;layout;buffers={};unusedBuffers={};bindOnUse=!0;_bound=!1;constructor(e,r){super(e,r),this.device=e,this.gl=e.gl,this.handle=this.props.handle||this.gl.createTransformFeedback(),this.layout=this.props.layout,r.buffers&&this.setBuffers(r.buffers),Object.seal(this)}destroy(){this.gl.deleteTransformFeedback(this.handle),super.destroy()}begin(e="point-list"){this.gl.bindTransformFeedback(36386,this.handle),this.bindOnUse&&this._bindBuffers(),this.gl.beginTransformFeedback(u0(e))}end(){this.gl.endTransformFeedback(),this.bindOnUse&&this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null)}setBuffers(e){this.buffers={},this.unusedBuffers={},this.bind(()=>{for(let[r,i]of Object.entries(e))this.setBuffer(r,i)})}setBuffer(e,r){let i=this._getVaryingIndex(e),{buffer:s,byteLength:o,byteOffset:n}=this._getBufferRange(r);if(i<0){this.unusedBuffers[e]=s,b.warn(`${this.id} unusedBuffers varying buffer ${e}`)();return}this.buffers[i]={buffer:s,byteLength:o,byteOffset:n},this.bindOnUse||this._bindBuffer(i,s,n,o)}getBuffer(e){if(v0(e))return this.buffers[e]||null;let r=this._getVaryingIndex(e);return this.buffers[r]??null}bind(e=this.handle){if(typeof e!="function")return this.gl.bindTransformFeedback(36386,e),this;let r;return this._bound?r=e():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,r=e(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),r}unbind(){this.bind(null)}_getBufferRange(e){if(e instanceof Je)return{buffer:e,byteOffset:0,byteLength:e.byteLength};let{buffer:r,byteOffset:i=0,byteLength:s=e.buffer.byteLength}=e;return{buffer:r,byteOffset:i,byteLength:s}}_getVaryingIndex(e){if(v0(e))return Number(e);for(let r of this.layout.varyings||[])if(e===r.name)return r.location;return-1}_bindBuffers(){for(let[e,r]of Object.entries(this.buffers)){let{buffer:i,byteLength:s,byteOffset:o}=this._getBufferRange(r);this._bindBuffer(Number(e),i,o,s)}}_unbindBuffers(){for(let e in this.buffers)this.gl.bindBufferBase(35982,Number(e),null)}_bindBuffer(e,r,i=0,s){let o=r&&r.handle;!o||s===void 0?this.gl.bindBufferBase(35982,e,o):this.gl.bindBufferRange(35982,e,o,i,s)}}});var uc,C0=E(()=>{F();uc=class extends ni{device;handle;_timestampPairs=[];_occlusionQuery=null;_occlusionActive=!1;get[Symbol.toStringTag](){return"QuerySet"}constructor(e,r){if(super(e,r),this.device=e,r.type==="timestamp"){if(r.count<2)throw new Error("Timestamp QuerySet requires at least two query slots");this._timestampPairs=new Array(Math.ceil(r.count/2)).fill(null).map(()=>({activeQuery:null,completedQueries:[]})),this.handle=null}else{if(r.count>1)throw new Error("WebGL occlusion QuerySet can only have one value");let i=this.device.gl.createQuery();if(!i)throw new Error("WebGL query not supported");this.handle=i}Object.seal(this)}destroy(){if(!this.destroyed){this.handle&&this.device.gl.deleteQuery(this.handle);for(let e of this._timestampPairs){e.activeQuery&&this.device.gl.deleteQuery(e.activeQuery.handle);for(let r of e.completedQueries)this.device.gl.deleteQuery(r.handle)}this._occlusionQuery&&this.device.gl.deleteQuery(this._occlusionQuery.handle),this.destroyResource()}}isResultAvailable(e){return this.props.type==="timestamp"?e===void 0?this._timestampPairs.some((r,i)=>this._isTimestampPairAvailable(i)):this._isTimestampPairAvailable(this._getTimestampPairIndex(e)):this._occlusionQuery?this._pollQueryAvailability(this._occlusionQuery):!1}async readResults(e){let r=e?.firstQuery||0,i=e?.queryCount||this.props.count-r;if(this._validateRange(r,i),this.props.type==="timestamp"){let s=new Array(i).fill(0n),o=Math.floor(r/2),n=Math.floor((r+i-1)/2);for(let a=o;a<=n;a++){let c=await this._consumeTimestampPairResult(a),l=a*2,f=l+1;l>=r&&l<r+i&&(s[l-r]=0n),f>=r&&f<r+i&&(s[f-r]=c)}return s}if(!this._occlusionQuery)throw new Error("Occlusion query has not been started");return[await this._consumeQueryResult(this._occlusionQuery)]}async readTimestampDuration(e,r){if(this.props.type!=="timestamp")throw new Error("Timestamp durations require a timestamp QuerySet");if(e<0||r>=this.props.count||r<=e)throw new Error("Timestamp duration range is out of bounds");if(e%2!==0||r!==e+1)throw new Error("WebGL timestamp durations require adjacent even/odd query indices");let i=await this._consumeTimestampPairResult(this._getTimestampPairIndex(e));return Number(i)/1e6}beginOcclusionQuery(){if(this.props.type!=="occlusion")throw new Error("Occlusion queries require an occlusion QuerySet");if(!this.handle)throw new Error("WebGL occlusion query is not available");if(this._occlusionActive)throw new Error("Occlusion query is already active");this.device.gl.beginQuery(35887,this.handle),this._occlusionQuery={handle:this.handle,promise:null,result:null,disjoint:!1},this._occlusionActive=!0}endOcclusionQuery(){if(!this._occlusionActive)throw new Error("Occlusion query is not active");this.device.gl.endQuery(35887),this._occlusionActive=!1}writeTimestamp(e){if(this.props.type!=="timestamp")throw new Error("Timestamp writes require a timestamp QuerySet");let r=this._getTimestampPairIndex(e),i=this._timestampPairs[r];if(e%2===0){if(i.activeQuery)throw new Error("Timestamp query pair is already active");let s=this.device.gl.createQuery();if(!s)throw new Error("WebGL query not supported");let o={handle:s,promise:null,result:null,disjoint:!1};this.device.gl.beginQuery(35007,s),i.activeQuery=o;return}if(!i.activeQuery)throw new Error("Timestamp query pair was ended before it was started");this.device.gl.endQuery(35007),i.completedQueries.push(i.activeQuery),i.activeQuery=null}_validateRange(e,r){if(e<0||r<0||e+r>this.props.count)throw new Error("Query read range is out of bounds")}_getTimestampPairIndex(e){if(e<0||e>=this.props.count)throw new Error("Query index is out of bounds");return Math.floor(e/2)}_isTimestampPairAvailable(e){let r=this._timestampPairs[e];return!r||r.completedQueries.length===0?!1:this._pollQueryAvailability(r.completedQueries[0])}_pollQueryAvailability(e){if(e.result!==null||e.disjoint)return!0;if(!this.device.gl.getQueryParameter(e.handle,34919))return!1;let i=Boolean(this.device.gl.getParameter(36795));return e.disjoint=i,e.result=i?0n:BigInt(this.device.gl.getQueryParameter(e.handle,34918)),!0}async _consumeTimestampPairResult(e){let r=this._timestampPairs[e];if(!r||r.completedQueries.length===0)throw new Error("Timestamp query pair has no completed result");let i=r.completedQueries.shift();try{return await this._consumeQueryResult(i)}finally{this.device.gl.deleteQuery(i.handle)}}_consumeQueryResult(e){return e.promise||(e.promise=new Promise((r,i)=>{let s=()=>{if(!this._pollQueryAvailability(e)){requestAnimationFrame(s);return}e.promise=null,e.disjoint?i(new Error("GPU timestamp query was invalidated by a disjoint event")):r(e.result||0n)};s()})),e.promise}}});var dc,I0=E(()=>{F();dc=class extends ai{device;gl;handle;signaled;_signaled=!1;constructor(e,r={}){super(e,{}),this.device=e,this.gl=e.gl;let i=this.props.handle||this.gl.fenceSync(this.gl.SYNC_GPU_COMMANDS_COMPLETE,0);if(!i)throw new Error("Failed to create WebGL fence");this.handle=i,this.signaled=new Promise(s=>{let o=()=>{let n=this.gl.clientWaitSync(this.handle,0,0);n===this.gl.ALREADY_SIGNALED||n===this.gl.CONDITION_SATISFIED?(this._signaled=!0,s()):setTimeout(o,1)};o()})}isSignaled(){if(this._signaled)return!0;let e=this.gl.getSyncParameter(this.handle,this.gl.SYNC_STATUS);return this._signaled=e===this.gl.SIGNALED,this._signaled}destroy(){this.destroyed||this.gl.deleteSync(this.handle)}}});function yu(t){switch(t){case 6406:case 33326:case 6403:case 36244:return 1;case 33339:case 33340:case 33328:case 33320:case 33319:return 2;case 6407:case 36248:case 34837:return 3;case 6408:case 36249:case 34836:return 4;default:return 0}}function O0(t){switch(t){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}var N0=E(()=>{});function D0(t,e){let{sourceX:r=0,sourceY:i=0,sourceAttachment:s=0}=e||{},{target:o=null,sourceWidth:n,sourceHeight:a,sourceDepth:c,sourceFormat:l,sourceType:f}=e||{},{framebuffer:h,deleteFramebuffer:u}=B0(t),{gl:d,handle:p}=h;n||=h.width,a||=h.height;let g=h.colorAttachments[s]?.texture;if(!g)throw new Error(`Invalid framebuffer attachment ${s}`);c=g?.depth||1,l||=g?.glFormat||6408,f||=g?.glType||5121,o=P3(o,f,l,n,a,c);let m=yr(o);f=f||p0(m);let _=d.bindFramebuffer(36160,p);return d.readBuffer(36064+s),d.readPixels(r,i,n,a,l,f,o),d.readBuffer(36064),d.bindFramebuffer(36160,_||null),u&&h.destroy(),o}function F0(t,e){let{target:r,sourceX:i=0,sourceY:s=0,sourceFormat:o=6408,targetByteOffset:n=0}=e||{},{sourceWidth:a,sourceHeight:c,sourceType:l}=e||{},{framebuffer:f,deleteFramebuffer:h}=B0(t);a=a||f.width,c=c||f.height;let u=f;l=l||5121;let d=r;if(!d){let g=yu(o),m=O0(l),_=n+a*c*g*m;d=u.device.createBuffer({byteLength:_})}let p=t.device.createCommandEncoder();return p.copyTextureToBuffer({sourceTexture:t,width:a,height:c,origin:[i,s],destinationBuffer:d,byteOffset:n}),p.destroy(),h&&f.destroy(),d}function B0(t){return t instanceof rt?{framebuffer:t,deleteFramebuffer:!1}:{framebuffer:R3(t),deleteFramebuffer:!0}}function R3(t,e){let{device:r,width:i,height:s,id:o}=t;return r.createFramebuffer({...e,id:`framebuffer-for-${o}`,width:i,height:s,colorAttachments:[t]})}function P3(t,e,r,i,s,o){if(t)return t;e||=5121;let n=ec(e),a=Et(n),c=yu(r);return new a(i*s*c)}var L0=E(()=>{F();nc();N0();mu()});var Tu={};At(Tu,{WebGLDevice:()=>Tt});function v3(t,e,r){switch(r.length){case 1:t.gl.vertexAttrib1fv(e,r);break;case 2:t.gl.vertexAttrib2fv(e,r);break;case 3:t.gl.vertexAttrib3fv(e,r);break;case 4:t.gl.vertexAttrib4fv(e,r);break;default:}}function M3(t,e,r){t.gl.vertexAttribI4iv(e,r)}function C3(t,e,r){t.gl.vertexAttribI4uiv(e,r)}function I3(t,e){if(!t||!e||t.length!==e.length||t.constructor!==e.constructor)return!1;for(let r=0;r<t.length;++r)if(t[r]!==e[r])return!1;return!0}var Tt,pc=E(()=>{F();ru();V_();Na();j_();Q_();G_();J_();e0();qh();Qh();Bi();r0();Xa();o0();c0();rc();ja();d0();b0();E0();P0();M0();C0();I0();L0();Ni();Ja();mo();Tt=class extends be{static getDeviceFromContext(e){return e?e.luma?.device??null:null}type="webgl";handle;features;limits;info;canvasContext;preferredColorFormat="rgba8unorm";preferredDepthFormat="depth24plus";commandEncoder;lost;_resolveContextLost;gl;_constants;extensions;_polyfilled=!1;spectorJS;get[Symbol.toStringTag](){return"WebGLDevice"}toString(){return`${this[Symbol.toStringTag]}(${this.id})`}isVertexFormatSupported(e){switch(e){case"unorm8x4-bgra":return!1;default:return!0}}constructor(e){super({...e,id:e.id||t0("webgl-device")});let r=be._getCanvasContextProps(e);if(!r)throw new Error("WebGLDevice requires props.createCanvasContext to be set");let i=r.canvas?.gl??null,s=Tt.getDeviceFromContext(i);if(s)throw new Error(`WebGL context already attached to device ${s.id}`);this.canvasContext=new Ha(this,r),this.lost=new Promise(f=>{this._resolveContextLost=f});let o={...e.webgl};r.alphaMode==="premultiplied"&&(o.premultipliedAlpha=!0),e.powerPreference!==void 0&&(o.powerPreference=e.powerPreference),e.failIfMajorPerformanceCaveat!==void 0&&(o.failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat);let a=this.props._handle||k_(this.canvasContext.canvas,{onContextLost:f=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."}),onContextRestored:f=>console.log("WebGL context restored")},o);if(!a)throw new Error("WebGL context creation failed");if(s=Tt.getDeviceFromContext(a),s){if(e._reuseDevices)return b.log(1,`Not creating a new Device, instead returning a reference to Device ${s.id} already attached to WebGL context`,s)(),this.canvasContext.destroy(),s._reused=!0,s;throw new Error(`WebGL context already attached to device ${s.id}`)}this.handle=a,this.gl=a,this.spectorJS=E_({...this.props,gl:this.handle});let c=zr(this.handle);c.device=this,this.extensions=c.extensions||(c.extensions={}),this.info=z_(this.gl,this.extensions),this.limits=new Wa(this.gl),this.features=new za(this.gl,this.extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new Qe(this.gl,{log:(...f)=>b.log(1,...f)()}).trackState(this.gl,{copyState:!1}),(e.debug||e.debugWebGL)&&(this.gl=v_(this.gl,{debugWebGL:!0,traceWebGL:e.debugWebGL}),b.warn("WebGL debug mode activated. Performance reduced.")()),e.debugWebGL&&(b.level=Math.max(b.level,1)),this.commandEncoder=new To(this,{id:`${this}-command-encoder`}),this.canvasContext._startObservers()}destroy(){if(this.commandEncoder?.destroy(),!this.props._reuseDevices&&!this._reused){let e=zr(this.handle);e.device=null}}get isLost(){return this.gl.isContextLost()}createCanvasContext(e){throw new Error("WebGL only supports a single canvas")}createPresentationContext(e){return new $a(this,e||{})}createBuffer(e){let r=this._normalizeBufferProps(e);return new Je(this,r)}createTexture(e){return new yt(this,e)}createExternalTexture(e){throw new Error("createExternalTexture() not implemented")}createSampler(e){return new Ga(this,e)}createShader(e){return new Za(this,e)}createFramebuffer(e){return new gt(this,e)}createVertexArray(e){return new Li(this,e)}createTransformFeedback(e){return new fc(this,e)}createQuerySet(e){return new uc(this,e)}createFence(){return new dc(this)}createRenderPipeline(e){return new ic(this,e)}_createSharedRenderPipelineWebGL(e){return new ac(this,e)}createComputePipeline(e){throw new Error("ComputePipeline not supported in WebGL")}createCommandEncoder(e={}){return new To(this,e)}submit(e){let r=null;e||(r=this.commandEncoder,e=r.finish(),this.commandEncoder.destroy(),this.commandEncoder=this.createCommandEncoder({id:r.props.id,timeProfilingQuerySet:r.getTimeProfilingQuerySet()}));try{e._executeCommands(),r&&r.resolveTimeProfilingQuerySet().then(()=>{this.commandEncoder._gpuTimeMs=r._gpuTimeMs}).catch(()=>{})}finally{e.destroy()}}readPixelsToArrayWebGL(e,r){return D0(e,r)}readPixelsToBufferWebGL(e,r){return F0(e,r)}setParametersWebGL(e){qe(this.gl,e)}getParametersWebGL(e){return Fa(this.gl,e)}withParametersWebGL(e,r){return mt(this.gl,e,r)}resetWebGL(){b.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),D_(this.gl)}_getDeviceSpecificTextureFormatCapabilities(e){return Z_(this.gl,e,this.extensions)}loseDevice(){let e=!1,i=this.getExtension("WEBGL_lose_context").WEBGL_lose_context;return i&&(e=!0,i.loseContext()),this._resolveContextLost?.({reason:"destroyed",message:"Application triggered context loss"}),e}pushState(){Qe.get(this.gl).push()}popState(){Qe.get(this.gl).pop()}getGLKey(e,r){let i=Number(e);for(let s in this.gl)if(this.gl[s]===i)return`GL.${s}`;return r?.emptyIfUnknown?"":String(e)}getGLKeys(e){let r={emptyIfUnknown:!0};return Object.entries(e).reduce((i,[s,o])=>(i[`${s}:${this.getGLKey(s,r)}`]=`${o}:${this.getGLKey(o,r)}`,i),{})}setConstantAttributeWebGL(e,r){let i=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(i).fill(null);let s=this._constants[e];switch(s&&I3(s,r)&&b.info(1,`setConstantAttributeWebGL(${e}) could have been skipped, value unchanged`)(),this._constants[e]=r,r.constructor){case Float32Array:v3(this,e,r);break;case Int32Array:M3(this,e,r);break;case Uint32Array:C3(this,e,r);break;default:throw new Error("constant")}}getExtension(e){return Ge(this.gl,e,this.extensions),this.extensions}_setWebGLDebugMetadata(e,r,i){e.luma=r;let s={props:i.spector,id:i.spector.id};e.__SPECTOR_Metadata=s}}});function O3(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?!0:Boolean(t&&typeof t.createVertexArray=="function")}var bo,bu,xo,U0=E(()=>{F();x_();qh();Qh();bo=1,bu=class extends Gi{type="webgl";constructor(){super(),be.defaultProps={...be.defaultProps,...Da}}enforceWebGL2(e){b_(e)}isSupported(){return typeof WebGL2RenderingContext<"u"}isDeviceHandle(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:(typeof WebGLRenderingContext<"u"&&e instanceof WebGLRenderingContext&&b.warn("WebGL1 is not supported",e)(),!1)}async attach(e,r={}){let{WebGLDevice:i}=await Promise.resolve().then(()=>(pc(),Tu));if(e instanceof i)return e;let s=i.getDeviceFromContext(e);if(s)return s;if(!O3(e))throw new Error("Invalid WebGL2RenderingContext");let o=r.createCanvasContext===!0?{}:r.createCanvasContext;return new i({...r,_handle:e,createCanvasContext:{canvas:e.canvas,autoResize:!1,...o}})}async create(e={}){let{WebGLDevice:r}=await Promise.resolve().then(()=>(pc(),Tu)),i=[];(e.debugWebGL||e.debug)&&i.push(P_()),e.debugSpectorJS&&i.push(S_(e));let s=await Promise.allSettled(i);for(let o of s)o.status==="rejected"&&b.error(`Failed to initialize debug libraries ${o.reason}`)();try{let o=new r(e);b.groupCollapsed(bo,`WebGLDevice ${o.id} created`)();let n=`${o._reused?"Reusing":"Created"} device with WebGL2 ${o.props.debug?"debug ":""}context: ${o.info.vendor}, ${o.info.renderer} for canvas: ${o.canvasContext.id}`;return b.probe(bo,n)(),b.table(bo,o.info)(),o}finally{b.groupEnd(bo)(),b.info(bo,"%cWebGL call tracing: luma.log.set('debug-webgl') ","color: white; background: blue; padding: 2px 6px; border-radius: 3px;")()}}};xo=new bu});var hc=E(()=>{U0();pc();Xa()});var LP={};At(LP,{AmbientLight:()=>wi,Attribute:()=>Wt,AttributeManager:()=>jr,COORDINATE_SYSTEM:()=>k,CompositeLayer:()=>hy,Controller:()=>Te,Deck:()=>gc,DeckGL:()=>Wo,DeckRenderer:()=>Vr,DirectionalLight:()=>Nt,FirstPersonController:()=>Xr,FirstPersonView:()=>dy,FirstPersonViewport:()=>Dc,FlyToInterpolator:()=>Vo,Layer:()=>Pc,LayerExtension:()=>by,LayerManager:()=>Ur,LightingEffect:()=>cr,LinearInterpolator:()=>ce,MapController:()=>zt,MapView:()=>Pa,OPERATION:()=>Dm,OrbitController:()=>Yr,OrbitView:()=>py,OrbitViewport:()=>Cc,OrthographicController:()=>Zr,OrthographicView:()=>my,OrthographicViewport:()=>Oc,PointLight:()=>Mi,PostProcessEffect:()=>to,TRANSITION_EVENTS:()=>oo,TerrainController:()=>Uo,Tesselator:()=>zo,TransitionInterpolator:()=>Ut,UNIT:()=>or,VERSION:()=>Kn,View:()=>ye,Viewport:()=>Se,WebMercatorViewport:()=>lr,Widget:()=>ur,_CameraLight:()=>Gs,_Component:()=>Vi,_ComponentState:()=>Hr,_GlobeController:()=>Kr,_GlobeView:()=>Ty,_GlobeViewport:()=>Ii,_LayersPass:()=>$e,_PickLayersPass:()=>Dt,_SunLight:()=>Js,_applyStyles:()=>ho,_compareProps:()=>Ec,_count:()=>wc,_deepEqual:()=>K,_fillArray:()=>ba,_flatten:()=>hr,_memoize:()=>Be,_mergeShaders:()=>Oo,_registerLoggers:()=>Zn,_removeStyles:()=>Ia,assert:()=>Y,color:()=>xh,createIterable:()=>Ui,fp64LowPart:()=>Vh,getShaderAssembler:()=>pa,gouraudMaterial:()=>us,log:()=>L,phongMaterial:()=>ds,picking:()=>Uh,project:()=>nr,project32:()=>Oh,shadow:()=>Ei});var kf={};At(kf,{Buffer:()=>D,BufferTransform:()=>ze,CubeGeometry:()=>xs,Device:()=>be,Framebuffer:()=>rt,Geometry:()=>We,GroupNode:()=>Gt,Model:()=>Pe,ModelNode:()=>bs,ScenegraphNode:()=>st,SphereGeometry:()=>As,Texture:()=>U,TextureTransform:()=>ys,attachDevice:()=>CA,createDevice:()=>IA,enforceWebGL2:()=>OA,getSupportedAdapters:()=>vA,setDefaultDeviceProps:()=>MA,stats:()=>PA});F();F();var kT=1,VT=1,Ar=class{time=0;channels=new Map;animations=new Map;playing=!1;lastEngineTime=-1;constructor(){}addChannel(e){let{delay:r=0,duration:i=Number.POSITIVE_INFINITY,rate:s=1,repeat:o=1}=e,n=kT++,a={time:0,delay:r,duration:i,rate:s,repeat:o};return this._setChannelTime(a,this.time),this.channels.set(n,a),n}removeChannel(e){this.channels.delete(e);for(let[r,i]of this.animations)i.channel===e&&this.detachAnimation(r)}isFinished(e){let r=this.channels.get(e);return r===void 0?!1:this.time>=r.delay+r.duration*r.repeat}getTime(e){if(e===void 0)return this.time;let r=this.channels.get(e);return r===void 0?-1:r.time}setTime(e){this.time=Math.max(0,e);let r=this.channels.values();for(let s of r)this._setChannelTime(s,this.time);let i=this.animations.values();for(let s of i){let{animation:o,channel:n}=s;o.setTime(this.getTime(n))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(e,r){let i=VT++;return this.animations.set(i,{animation:e,channel:r}),e.setTime(this.getTime(r)),i}detachAnimation(e){this.animations.delete(e)}update(e){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=e),this.setTime(this.time+(e-this.lastEngineTime)),this.lastEngineTime=e)}_setChannelTime(e,r){let i=r-e.delay,s=e.duration*e.repeat;i>=s?e.time=e.duration*e.rate:(e.time=Math.max(0,i)%e.duration,e.time*=e.rate)}};F();function Kd(t){let e=typeof window<"u"?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame:null;return e?e.call(window,t):setTimeout(()=>t(typeof performance<"u"?performance.now():Date.now()),1e3/60)}function qd(t){let e=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame:null;if(e){e.call(window,t);return}clearTimeout(t)}Wi();var zT=0,WT="Animation Loop",Fl=class{device=null;canvas=null;props;animationProps=null;timeline=null;stats;sharedStats;cpuTime;gpuTime;frameRate;display;_needsRedraw="initialized";_initialized=!1;_running=!1;_animationFrameId=null;_nextFramePromise=null;_resolveNextFrame=null;_cpuStartTime=0;_error=null;_lastFrameTime=0;constructor(e){if(this.props={...Fl.defaultAnimationLoopProps,...e},e=this.props,!e.device)throw new Error("No device provided");this.stats=e.stats||new Oe({id:`animation-loop-${zT++}`}),this.sharedStats=Yt.stats.get(WT),this.frameRate=this.stats.get("Frame Rate"),this.frameRate.setSampleSize(1),this.cpuTime=this.stats.get("CPU Time"),this.gpuTime=this.stats.get("GPU Time"),this.setProps({autoResizeViewport:e.autoResizeViewport}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}destroy(){this.stop(),this._setDisplay(null),this.device?._disableDebugGPUTime()}delete(){this.destroy()}reportError(e){this.props.onError(e),this._error=e}setNeedsRedraw(e){return this._needsRedraw=this._needsRedraw||e,this}needsRedraw(){let e=this._needsRedraw;return this._needsRedraw=!1,e}setProps(e){return"autoResizeViewport"in e&&(this.props.autoResizeViewport=e.autoResizeViewport||!1),this}async start(){if(this._running)return this;this._running=!0;try{let e;return this._initialized||(this._initialized=!0,await this._initDevice(),this._initialize(),await this.props.onInitialize(this._getAnimationProps())),this._running?(e!==!1&&(this._cancelAnimationFrame(),this._requestAnimationFrame()),this):null}catch(e){let r=e instanceof Error?e:new Error("Unknown error");throw this.props.onError(r),r}}stop(){return this._running&&(this.animationProps&&!this._error&&this.props.onFinalize(this.animationProps),this._cancelAnimationFrame(),this._nextFramePromise=null,this._resolveNextFrame=null,this._running=!1,this._lastFrameTime=0),this}redraw(e){return this.device?.isLost||this._error?this:(this._beginFrameTimers(e),this._setupFrame(),this._updateAnimationProps(),this._renderFrame(this._getAnimationProps()),this._clearNeedsRedraw(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endFrameTimers(),this)}attachTimeline(e){return this.timeline=e,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(e=>{this._resolveNextFrame=e})),this._nextFramePromise}async toDataURL(){if(this.setNeedsRedraw("toDataURL"),await this.waitForRender(),this.canvas instanceof HTMLCanvasElement)return this.canvas.toDataURL();throw new Error("OffscreenCanvas")}_initialize(){this._startEventHandling(),this._initializeAnimationProps(),this._updateAnimationProps(),this._resizeViewport(),this.device?._enableDebugGPUTime()}_setDisplay(e){this.display&&(this.display.destroy(),this.display.animationLoop=null),e&&(e.animationLoop=this),this.display=e}_requestAnimationFrame(){this._running&&(this._animationFrameId=Kd(this._animationFrame.bind(this)))}_cancelAnimationFrame(){this._animationFrameId!==null&&(qd(this._animationFrameId),this._animationFrameId=null)}_animationFrame(e){this._running&&(this.redraw(e),this._requestAnimationFrame())}_renderFrame(e){if(this.display){this.display._renderFrame(e);return}this.props.onRender(this._getAnimationProps()),this.device?.submit()}_clearNeedsRedraw(){this._needsRedraw=!1}_setupFrame(){this._resizeViewport()}_initializeAnimationProps(){let e=this.device?.getDefaultCanvasContext();if(!this.device||!e)throw new Error("loop");let r=e?.canvas,i=e.props.useDevicePixels;this.animationProps={animationLoop:this,device:this.device,canvasContext:e,canvas:r,useDevicePixels:i,timeline:this.timeline,needsRedraw:!1,width:1,height:1,aspect:1,time:0,startTime:Date.now(),engineTime:0,tick:0,tock:0,_mousePosition:null}}_getAnimationProps(){if(!this.animationProps)throw new Error("animationProps");return this.animationProps}_updateAnimationProps(){if(!this.animationProps)return;let{width:e,height:r,aspect:i}=this._getSizeAndAspect();(e!==this.animationProps.width||r!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=e,this.animationProps.height=r,this.animationProps.aspect=i,this.animationProps.needsRedraw=this._needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime}async _initDevice(){if(this.device=await this.props.device,!this.device)throw new Error("No device provided");this.canvas=this.device.getDefaultCanvasContext().canvas||null}_createInfoDiv(){if(this.canvas&&this.props.onAddHTML){let e=document.createElement("div");document.body.appendChild(e),e.style.position="relative";let r=document.createElement("div");r.style.position="absolute",r.style.left="10px",r.style.bottom="10px",r.style.width="300px",r.style.background="white",this.canvas instanceof HTMLCanvasElement&&e.appendChild(this.canvas),e.appendChild(r);let i=this.props.onAddHTML(r);i&&(r.innerHTML=i)}}_getSizeAndAspect(){if(!this.device)return{width:1,height:1,aspect:1};let[e,r]=this.device.getDefaultCanvasContext().getDrawingBufferSize(),i=e>0&&r>0?e/r:1;return{width:e,height:r,aspect:i}}_resizeViewport(){this.props.autoResizeViewport&&this.device.gl&&this.device.gl.viewport(0,0,this.device.gl.drawingBufferWidth,this.device.gl.drawingBufferHeight)}_beginFrameTimers(e){let r=e??(typeof performance<"u"?performance.now():Date.now());if(this._lastFrameTime){let i=r-this._lastFrameTime;i>0&&this.frameRate.addTime(i)}this._lastFrameTime=r,this.device?._isDebugGPUTimeEnabled()&&this._consumeEncodedGpuTime(),this.cpuTime.timeStart()}_endFrameTimers(){this.device?._isDebugGPUTimeEnabled()&&this._consumeEncodedGpuTime(),this.cpuTime.timeEnd(),this._updateSharedStats()}_consumeEncodedGpuTime(){if(!this.device)return;let e=this.device.commandEncoder._gpuTimeMs;e!==void 0&&(this.gpuTime.addTime(e),this.device.commandEncoder._gpuTimeMs=void 0)}_updateSharedStats(){if(this.stats!==this.sharedStats){for(let e of Object.keys(this.sharedStats.stats))this.stats.stats[e]||delete this.sharedStats.stats[e];this.stats.forEach(e=>{let r=this.sharedStats.get(e.name,e.type);r.sampleSize=e.sampleSize,r.time=e.time,r.count=e.count,r.samples=e.samples,r.lastTiming=e.lastTiming,r.lastSampleTime=e.lastSampleTime,r.lastSampleCount=e.lastSampleCount,r._count=e._count,r._time=e._time,r._samples=e._samples,r._startTime=e._startTime,r._timerPending=e._timerPending})}}_startEventHandling(){this.canvas&&(this.canvas.addEventListener("mousemove",this._onMousemove.bind(this)),this.canvas.addEventListener("mouseleave",this._onMouseleave.bind(this)))}_onMousemove(e){e instanceof MouseEvent&&(this._getAnimationProps()._mousePosition=[e.offsetX,e.offsetY])}_onMouseleave(e){this._getAnimationProps()._mousePosition=null}},ci=Fl;P(ci,"defaultAnimationLoopProps",{device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:e=>console.error(e),stats:void 0,autoResizeViewport:!1});F();function ss(t,e){if(!t){let r=new Error(e||"shadertools: assertion failed.");throw Error.captureStackTrace?.(r,ss),r}}var Bl={number:{type:"number",validate(t,e){return Number.isFinite(t)&&typeof e=="object"&&(e.max===void 0||t<=e.max)&&(e.min===void 0||t>=e.min)}},array:{type:"array",validate(t,e){return Array.isArray(t)||ArrayBuffer.isView(t)}}};function Gd(t){let e={};for(let[r,i]of Object.entries(t))e[r]=jT(i);return e}function jT(t){let e=Qd(t);if(e!=="object")return{value:t,...Bl[e],type:e};if(typeof t=="object")return t?t.type!==void 0?{...t,...Bl[t.type],type:t.type}:t.value===void 0?{type:"object",value:t}:(e=Qd(t.value),{...t,...Bl[e],type:e}):{type:"object",value:null};throw new Error("props")}function Qd(t){return Array.isArray(t)||ArrayBuffer.isView(t)?"array":typeof t}var Jd=`#ifdef MODULE_LOGDEPTH
19
20
  logdepth_adjustPosition(gl_Position);
20
21
  #endif
21
- `,_d=`#ifdef MODULE_MATERIAL
22
+ `,ep=`#ifdef MODULE_MATERIAL
22
23
  fragColor = material_filterColor(fragColor);
23
24
  #endif
24
25
 
@@ -38,9 +39,9 @@ ${t}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,t),r.compileShader(thi
38
39
  #ifdef MODULE_LOGDEPTH
39
40
  logdepth_setFragDepth();
40
41
  #endif
41
- `;var UT={vertex:md,fragment:_d},Td=/void\s+main\s*\([^)]*\)\s*\{\n?/,yd=/}\n?[^{}]*$/,yl=[],ts="__LUMA_INJECT_DECLARATIONS__";function bd(e){let t={vertex:{},fragment:{}};for(let r in e){let i=e[r],s=kT(r);typeof i=="string"&&(i={order:0,injection:i}),t[s][r]=i}return t}function kT(e){let t=e.slice(0,2);switch(t){case"vs":return"vertex";case"fs":return"fragment";default:throw new Error(t)}}function es(e,t,r,i=!1){let s=t==="vertex";for(let o in r){let n=r[o];n.sort((c,l)=>c.order-l.order),yl.length=n.length;for(let c=0,l=n.length;c<l;++c)yl[c]=n[c].injection;let a=`${yl.join(`
42
+ `;var HT={vertex:Jd,fragment:ep},tp=/void\s+main\s*\([^)]*\)\s*\{\n?/,rp=/}\n?[^{}]*$/,Ll=[],os="__LUMA_INJECT_DECLARATIONS__";function ip(t){let e={vertex:{},fragment:{}};for(let r in t){let i=t[r],s=$T(r);typeof i=="string"&&(i={order:0,injection:i}),e[s][r]=i}return e}function $T(t){let e=t.slice(0,2);switch(e){case"vs":return"vertex";case"fs":return"fragment";default:throw new Error(e)}}function ns(t,e,r,i=!1){let s=e==="vertex";for(let o in r){let n=r[o];n.sort((c,l)=>c.order-l.order),Ll.length=n.length;for(let c=0,l=n.length;c<l;++c)Ll[c]=n[c].injection;let a=`${Ll.join(`
42
43
  `)}
43
- `;switch(o){case"vs:#decl":s&&(e=e.replace(ts,a));break;case"vs:#main-start":s&&(e=e.replace(Td,c=>c+a));break;case"vs:#main-end":s&&(e=e.replace(yd,c=>a+c));break;case"fs:#decl":s||(e=e.replace(ts,a));break;case"fs:#main-start":s||(e=e.replace(Td,c=>c+a));break;case"fs:#main-end":s||(e=e.replace(yd,c=>a+c));break;default:e=e.replace(o,c=>c+a)}}return e=e.replace(ts,""),i&&(e=e.replace(/\}\s*$/,o=>o+UT[t])),e}function gr(e){e.map(t=>dn(t))}function dn(e){if(e.instance)return;gr(e.dependencies||[]);let{propTypes:t={},deprecations:r=[],inject:i={}}=e,s={normalizedInjections:bd(i),parsedDeprecations:VT(r)};t&&(s.propValidators=gd(t)),e.instance=s;let o={};t&&(o=Object.entries(t).reduce((n,[a,c])=>{let l=c?.value;return l&&(n[a]=l),n},{})),e.defaultUniforms={...e.defaultUniforms,...o}}function bl(e,t,r){e.deprecations?.forEach(i=>{i.regex?.test(t)&&(i.deprecated?r.deprecated(i.old,i.new)():r.removed(i.old,i.new)())})}function VT(e){return e.forEach(t=>{switch(t.type){case"function":t.regex=new RegExp(`\\b${t.old}\\(`);break;default:t.regex=new RegExp(`${t.type} ${t.old};`)}}),e}function oi(e){gr(e);let t={},r={};xd({modules:e,level:0,moduleMap:t,moduleDepth:r});let i=Object.keys(r).sort((s,o)=>r[o]-r[s]).map(s=>t[s]);return gr(i),i}function xd(e){let{modules:t,level:r,moduleMap:i,moduleDepth:s}=e;if(r>=5)throw new Error("Possible loop in shader dependency graph");for(let o of t)i[o.name]=o,(s[o.name]===void 0||s[o.name]<r)&&(s[o.name]=r);for(let o of t)o.dependencies&&xd({modules:o.dependencies,level:r+1,moduleMap:i,moduleDepth:s})}function Ad(e){switch(e?.gpu.toLowerCase()){case"apple":return`#define APPLE_GPU
44
+ `;switch(o){case"vs:#decl":s&&(t=t.replace(os,a));break;case"vs:#main-start":s&&(t=t.replace(tp,c=>c+a));break;case"vs:#main-end":s&&(t=t.replace(rp,c=>a+c));break;case"fs:#decl":s||(t=t.replace(os,a));break;case"fs:#main-start":s||(t=t.replace(tp,c=>c+a));break;case"fs:#main-end":s||(t=t.replace(rp,c=>a+c));break;default:t=t.replace(o,c=>c+a)}}return t=t.replace(os,""),i&&(t=t.replace(/\}\s*$/,o=>o+HT[e])),t}function Sr(t){t.map(e=>_n(e))}function _n(t){if(t.instance)return;Sr(t.dependencies||[]);let{propTypes:e={},deprecations:r=[],inject:i={}}=t,s={normalizedInjections:ip(i),parsedDeprecations:XT(r)};e&&(s.propValidators=Gd(e)),t.instance=s;let o={};e&&(o=Object.entries(e).reduce((n,[a,c])=>{let l=c?.value;return l&&(n[a]=l),n},{})),t.defaultUniforms={...t.defaultUniforms,...o}}function Ul(t,e,r){t.deprecations?.forEach(i=>{i.regex?.test(e)&&(i.deprecated?r.deprecated(i.old,i.new)():r.removed(i.old,i.new)())})}function XT(t){return t.forEach(e=>{switch(e.type){case"function":e.regex=new RegExp(`\\b${e.old}\\(`);break;default:e.regex=new RegExp(`${e.type} ${e.old};`)}}),t}function li(t){Sr(t);let e={},r={};sp({modules:t,level:0,moduleMap:e,moduleDepth:r});let i=Object.keys(r).sort((s,o)=>r[o]-r[s]).map(s=>e[s]);return Sr(i),i}function sp(t){let{modules:e,level:r,moduleMap:i,moduleDepth:s}=t;if(r>=5)throw new Error("Possible loop in shader dependency graph");for(let o of e)i[o.name]=o,(s[o.name]===void 0||s[o.name]<r)&&(s[o.name]=r);for(let o of e)o.dependencies&&sp({modules:o.dependencies,level:r+1,moduleMap:i,moduleDepth:s})}function op(t){switch(t?.gpu.toLowerCase()){case"apple":return`#define APPLE_GPU
44
45
  // Apple optimizes away the calculation necessary for emulated fp64
45
46
  #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
46
47
  #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
@@ -64,46 +65,46 @@ ${t}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,t),r.compileShader(thi
64
65
  #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
65
66
  // If the GPU doesn't have full 32 bits precision, will causes overflow
66
67
  #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
67
- `}}function Ed(e,t){if(Number(e.match(/^#version[ \t]+(\d+)/m)?.[1]||100)!==300)throw new Error("luma.gl v9 only supports GLSL 3.00 shader sources");switch(t){case"vertex":return e=Sd(e,zT),e;case"fragment":return e=Sd(e,jT),e;default:throw new Error(t)}}var Rd=[[/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/,`#version 300 es
68
- `],[/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g,"textureLod("],[/\btexture(2D|2DProj|Cube)(EXT)?\(/g,"texture("]],zT=[...Rd,[xl("attribute"),"in $1"],[xl("varying"),"out $1"]],jT=[...Rd,[xl("varying"),"in $1"]];function Sd(e,t){for(let[r,i]of t)e=e.replace(r,i);return e}function xl(e){return new RegExp(`\\b${e}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`,"g")}function Al(e,t){let r="";for(let i in e){let s=e[i];if(r+=`void ${s.signature} {
69
- `,s.header&&(r+=` ${s.header}`),t[i]){let o=t[i];o.sort((n,a)=>n.order-a.order);for(let n of o)r+=` ${n.injection}
68
+ `}}function ap(t,e){if(Number(t.match(/^#version[ \t]+(\d+)/m)?.[1]||100)!==300)throw new Error("luma.gl v9 only supports GLSL 3.00 shader sources");switch(e){case"vertex":return t=np(t,YT),t;case"fragment":return t=np(t,ZT),t;default:throw new Error(e)}}var cp=[[/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/,`#version 300 es
69
+ `],[/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g,"textureLod("],[/\btexture(2D|2DProj|Cube)(EXT)?\(/g,"texture("]],YT=[...cp,[kl("attribute"),"in $1"],[kl("varying"),"out $1"]],ZT=[...cp,[kl("varying"),"in $1"]];function np(t,e){for(let[r,i]of e)t=t.replace(r,i);return t}function kl(t){return new RegExp(`\\b${t}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`,"g")}function Vl(t,e){let r="";for(let i in t){let s=t[i];if(r+=`void ${s.signature} {
70
+ `,s.header&&(r+=` ${s.header}`),e[i]){let o=e[i];o.sort((n,a)=>n.order-a.order);for(let n of o)r+=` ${n.injection}
70
71
  `}s.footer&&(r+=` ${s.footer}`),r+=`}
71
- `}return r}function Sl(e){let t={vertex:{},fragment:{}};for(let r of e){let i,s;typeof r!="string"?(i=r,s=i.hook):(i={},s=r),s=s.trim();let[o,n]=s.split(":"),a=s.replace(/\(.+/,""),c=Object.assign(i,{signature:n});switch(o){case"vs":t.vertex[a]=c;break;case"fs":t.fragment[a]=c;break;default:throw new Error(o)}}return t}function wd(e,t){return{name:WT(e,t),language:"glsl",version:HT(e)}}function WT(e,t="unnamed"){let i=/#define[^\S\r\n]*SHADER_NAME[^\S\r\n]*([A-Za-z0-9_-]+)\s*/.exec(e);return i?i[1]:t}function HT(e){let t=100,r=e.match(/[^\s]+/g);if(r&&r.length>=2&&r[0]==="#version"){let i=parseInt(r[1],10);Number.isFinite(i)&&(t=i)}if(t!==100&&t!==300)throw new Error(`Invalid GLSL version ${t}`);return t}var Md=`
72
+ `}return r}function zl(t){let e={vertex:{},fragment:{}};for(let r of t){let i,s;typeof r!="string"?(i=r,s=i.hook):(i={},s=r),s=s.trim();let[o,n]=s.split(":"),a=s.replace(/\(.+/,""),c=Object.assign(i,{signature:n});switch(o){case"vs":e.vertex[a]=c;break;case"fs":e.fragment[a]=c;break;default:throw new Error(o)}}return e}function lp(t,e){return{name:KT(t,e),language:"glsl",version:qT(t)}}function KT(t,e="unnamed"){let i=/#define[^\S\r\n]*SHADER_NAME[^\S\r\n]*([A-Za-z0-9_-]+)\s*/.exec(t);return i?i[1]:e}function qT(t){let e=100,r=t.match(/[^\s]+/g);if(r&&r.length>=2&&r[0]==="#version"){let i=parseInt(r[1],10);Number.isFinite(i)&&(e=i)}if(e!==100&&e!==300)throw new Error(`Invalid GLSL version ${e}`);return e}var hp=`
72
73
 
73
- ${ts}
74
- `,XT=`precision highp float;
75
- `;function vd(e){let t=oi(e.modules||[]);return{source:$T(e.platformInfo,{...e,source:e.source,stage:"vertex",modules:t}),getUniforms:Id(t)}}function Cd(e){let{vs:t,fs:r}=e,i=oi(e.modules||[]);return{vs:Pd(e.platformInfo,{...e,source:t,stage:"vertex",modules:i}),fs:Pd(e.platformInfo,{...e,source:r,stage:"fragment",modules:i}),getUniforms:Id(i)}}function $T(e,t){let{source:r,stage:i,modules:s,hookFunctions:o=[],inject:n={},log:a}=t;un(typeof r=="string","shader source must be a string");let c=r,l="",f=Sl(o),h={},u={},d={};for(let g in n){let m=typeof n[g]=="string"?{injection:n[g],order:0}:n[g],_=/^(v|f)s:(#)?([\w-]+)$/.exec(g);if(_){let y=_[2],T=_[3];y?T==="decl"?u[g]=[m]:d[g]=[m]:h[g]=[m]}else d[g]=[m]}let p=s;for(let g of p){a&&bl(g,c,a);let m=Od(g,"wgsl");l+=m;let _=g.injections?.[i]||{};for(let y in _){let T=/^(v|f)s:#([\w-]+)$/.exec(y);if(T){let S=T[2]==="decl"?u:d;S[y]=S[y]||[],S[y].push(_[y])}else h[y]=h[y]||[],h[y].push(_[y])}}return l+=Md,l=es(l,i,u),l+=Al(f[i],h),l+=c,l=es(l,i,d),l}function Pd(e,t){let{source:r,stage:i,language:s="glsl",modules:o,defines:n={},hookFunctions:a=[],inject:c={},prologue:l=!0,log:f}=t;un(typeof r=="string","shader source must be a string");let h=s==="glsl"?wd(r).version:-1,u=e.shaderLanguageVersion,d=h===100?"#version 100":"#version 300 es",g=r.split(`
74
+ ${os}
75
+ `,QT=`precision highp float;
76
+ `;function up(t){let e=li(t.modules||[]);return{source:GT(t.platformInfo,{...t,source:t.source,stage:"vertex",modules:e}),getUniforms:pp(e)}}function dp(t){let{vs:e,fs:r}=t,i=li(t.modules||[]);return{vs:fp(t.platformInfo,{...t,source:e,stage:"vertex",modules:i}),fs:fp(t.platformInfo,{...t,source:r,stage:"fragment",modules:i}),getUniforms:pp(i)}}function GT(t,e){let{source:r,stage:i,modules:s,hookFunctions:o=[],inject:n={},log:a}=e;ss(typeof r=="string","shader source must be a string");let c=r,l="",f=zl(o),h={},u={},d={};for(let g in n){let m=typeof n[g]=="string"?{injection:n[g],order:0}:n[g],_=/^(v|f)s:(#)?([\w-]+)$/.exec(g);if(_){let T=_[2],y=_[3];T?y==="decl"?u[g]=[m]:d[g]=[m]:h[g]=[m]}else d[g]=[m]}let p=s;for(let g of p){a&&Ul(g,c,a);let m=gp(g,"wgsl");l+=m;let _=g.injections?.[i]||{};for(let T in _){let y=/^(v|f)s:#([\w-]+)$/.exec(T);if(y){let S=y[2]==="decl"?u:d;S[T]=S[T]||[],S[T].push(_[T])}else h[T]=h[T]||[],h[T].push(_[T])}}return l+=hp,l=ns(l,i,u),l+=Vl(f[i],h),l+=c,l=ns(l,i,d),l}function fp(t,e){let{source:r,stage:i,language:s="glsl",modules:o,defines:n={},hookFunctions:a=[],inject:c={},prologue:l=!0,log:f}=e;ss(typeof r=="string","shader source must be a string");let h=s==="glsl"?lp(r).version:-1,u=t.shaderLanguageVersion,d=h===100?"#version 100":"#version 300 es",g=r.split(`
76
77
  `).slice(1).join(`
77
- `),m={};o.forEach(E=>{Object.assign(m,E.defines)}),Object.assign(m,n);let _="";switch(s){case"wgsl":break;case"glsl":_=l?`${d}
78
+ `),m={};o.forEach(A=>{Object.assign(m,A.defines)}),Object.assign(m,n);let _="";switch(s){case"wgsl":break;case"glsl":_=l?`${d}
78
79
 
79
80
  // ----- PROLOGUE -------------------------
80
81
  ${`#define SHADER_TYPE_${i.toUpperCase()}`}
81
82
 
82
- ${Ad(e)}
83
- ${i==="fragment"?XT:""}
83
+ ${op(t)}
84
+ ${i==="fragment"?QT:""}
84
85
 
85
86
  // ----- APPLICATION DEFINES -------------------------
86
87
 
87
- ${YT(m)}
88
+ ${JT(m)}
88
89
 
89
90
  `:`${d}
90
- `;break}let y=Sl(a),T={},x={},S={};for(let E in c){let v=typeof c[E]=="string"?{injection:c[E],order:0}:c[E],P=/^(v|f)s:(#)?([\w-]+)$/.exec(E);if(P){let R=P[2],M=P[3];R?M==="decl"?x[E]=[v]:S[E]=[v]:T[E]=[v]}else S[E]=[v]}for(let E of o){f&&bl(E,g,f);let v=Od(E,i);_+=v;let P=E.instance?.normalizedInjections[i]||{};for(let R in P){let M=/^(v|f)s:#([\w-]+)$/.exec(R);if(M){let C=M[2]==="decl"?x:S;C[R]=C[R]||[],C[R].push(P[R])}else T[R]=T[R]||[],T[R].push(P[R])}}return _+="// ----- MAIN SHADER SOURCE -------------------------",_+=Md,_=es(_,i,x),_+=Al(y[i],T),_+=g,_=es(_,i,S),s==="glsl"&&h!==u&&(_=Ed(_,i)),_.trim()}function Id(e){return function(r){let i={};for(let s of e){let o=s.getUniforms?.(r,i);Object.assign(i,o)}return i}}function YT(e={}){let t="";for(let r in e){let i=e[r];(i||Number.isFinite(i))&&(t+=`#define ${r.toUpperCase()} ${e[r]}
91
- `)}return t}function Od(e,t){let r;switch(t){case"vertex":r=e.vs||"";break;case"fragment":r=e.fs||"";break;case"wgsl":r=e.source||"";break;default:un(!1)}if(!e.name)throw new Error("Shader module must have a name");let i=e.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),s=`// ----- MODULE ${e.name} ---------------
91
+ `;break}let T=zl(a),y={},x={},S={};for(let A in c){let w=typeof c[A]=="string"?{injection:c[A],order:0}:c[A],v=/^(v|f)s:(#)?([\w-]+)$/.exec(A);if(v){let R=v[2],M=v[3];R?M==="decl"?x[A]=[w]:S[A]=[w]:y[A]=[w]}else S[A]=[w]}for(let A of o){f&&Ul(A,g,f);let w=gp(A,i);_+=w;let v=A.instance?.normalizedInjections[i]||{};for(let R in v){let M=/^(v|f)s:#([\w-]+)$/.exec(R);if(M){let C=M[2]==="decl"?x:S;C[R]=C[R]||[],C[R].push(v[R])}else y[R]=y[R]||[],y[R].push(v[R])}}return _+="// ----- MAIN SHADER SOURCE -------------------------",_+=hp,_=ns(_,i,x),_+=Vl(T[i],y),_+=g,_=ns(_,i,S),s==="glsl"&&h!==u&&(_=ap(_,i)),_.trim()}function pp(t){return function(r){let i={};for(let s of t){let o=s.getUniforms?.(r,i);Object.assign(i,o)}return i}}function JT(t={}){let e="";for(let r in t){let i=t[r];(i||Number.isFinite(i))&&(e+=`#define ${r.toUpperCase()} ${t[r]}
92
+ `)}return e}function gp(t,e){let r;switch(e){case"vertex":r=t.vs||"";break;case"fragment":r=t.fs||"";break;case"wgsl":r=t.source||"";break;default:ss(!1)}if(!t.name)throw new Error("Shader module must have a name");let i=t.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),s=`// ----- MODULE ${t.name} ---------------
92
93
 
93
- `;return t!=="wgsl"&&(s+=`#define MODULE_${i}
94
+ `;return e!=="wgsl"&&(s+=`#define MODULE_${i}
94
95
  `),s+=`${r}
95
- `,s}var KT=/^\s*\#\s*ifdef\s*([a-zA-Z_]+)\s*$/,qT=/^\s*\#\s*endif\s*$/;function Nd(e,t){let r=e.split(`
96
- `),i=[],s=!0,o=null;for(let n of r){let a=n.match(KT),c=n.match(qT);a?(o=a[1],s=Boolean(t?.defines?.[o])):c?s=!0:s&&i.push(n)}return i.join(`
97
- `)}var ni=class{_hookFunctions=[];_defaultModules=[];static getDefaultShaderAssembler(){return ni.defaultShaderAssembler=ni.defaultShaderAssembler||new ni,ni.defaultShaderAssembler}addDefaultModule(t){this._defaultModules.find(r=>r.name===(typeof t=="string"?t:t.name))||this._defaultModules.push(t)}removeDefaultModule(t){let r=typeof t=="string"?t:t.name;this._defaultModules=this._defaultModules.filter(i=>i.name!==r)}addShaderHook(t,r){r&&(t=Object.assign(r,{hook:t})),this._hookFunctions.push(t)}assembleWGSLShader(t){let r=this._getModuleList(t.modules),i=this._hookFunctions,{source:s,getUniforms:o}=vd({...t,source:t.source,modules:r,hookFunctions:i});return{source:t.platformInfo.shaderLanguage==="wgsl"?Nd(s):s,getUniforms:o,modules:r}}assembleGLSLShaderPair(t){let r=this._getModuleList(t.modules),i=this._hookFunctions;return{...Cd({...t,vs:t.vs,fs:t.fs,modules:r,hookFunctions:i}),modules:r}}_getModuleList(t=[]){let r=new Array(this._defaultModules.length+t.length),i={},s=0;for(let o=0,n=this._defaultModules.length;o<n;++o){let a=this._defaultModules[o],c=a.name;r[s++]=a,i[c]=!0}for(let o=0,n=t.length;o<n;++o){let a=t[o],c=a.name;i[c]||(r[s++]=a,i[c]=!0)}return r.length=s,gr(r),r}},je=ni;w(je,"defaultShaderAssembler");var ZT=`out vec4 transform_output;
96
+ `,s}var eb=/^\s*\#\s*ifdef\s*([a-zA-Z_]+)\s*$/,tb=/^\s*\#\s*ifndef\s*([a-zA-Z_]+)\s*(?:\/\/.*)?$/,rb=/^\s*\#\s*else\s*(?:\/\/.*)?$/,ib=/^\s*\#\s*endif\s*$/,sb=/^\s*\#\s*ifdef\s*([a-zA-Z_]+)\s*(?:\/\/.*)?$/,ob=/^\s*\#\s*endif\s*(?:\/\/.*)?$/;function mp(t,e){let r=t.split(`
97
+ `),i=[],s=[],o=!0;for(let n of r){let a=n.match(sb)||n.match(eb),c=n.match(tb),l=n.match(rb),f=n.match(ob)||n.match(ib);if(a||c){let h=(a||c)?.[1],u=Boolean(e?.defines?.[h]),d=a?u:!u,p=o&&d;s.push({parentActive:o,branchTaken:d,active:p}),o=p}else if(l){let h=s[s.length-1];if(!h)throw new Error("Encountered #else without matching #ifdef or #ifndef");h.active=h.parentActive&&!h.branchTaken,h.branchTaken=!0,o=h.active}else f?(s.pop(),o=s.length?s[s.length-1].active:!0):o&&i.push(n)}if(s.length>0)throw new Error("Unterminated conditional block in shader source");return i.join(`
98
+ `)}var fi=class{_hookFunctions=[];_defaultModules=[];static getDefaultShaderAssembler(){return fi.defaultShaderAssembler=fi.defaultShaderAssembler||new fi,fi.defaultShaderAssembler}addDefaultModule(e){this._defaultModules.find(r=>r.name===(typeof e=="string"?e:e.name))||this._defaultModules.push(e)}removeDefaultModule(e){let r=typeof e=="string"?e:e.name;this._defaultModules=this._defaultModules.filter(i=>i.name!==r)}addShaderHook(e,r){r&&(e=Object.assign(r,{hook:e})),this._hookFunctions.push(e)}assembleWGSLShader(e){let r=this._getModuleList(e.modules),i=this._hookFunctions,{source:s,getUniforms:o}=up({...e,source:e.source,modules:r,hookFunctions:i}),n={...r.reduce((c,l)=>(Object.assign(c,l.defines),c),{}),...e.defines};return{source:e.platformInfo.shaderLanguage==="wgsl"?mp(s,{defines:n}):s,getUniforms:o,modules:r}}assembleGLSLShaderPair(e){let r=this._getModuleList(e.modules),i=this._hookFunctions;return{...dp({...e,vs:e.vs,fs:e.fs,modules:r,hookFunctions:i}),modules:r}}_getModuleList(e=[]){let r=new Array(this._defaultModules.length+e.length),i={},s=0;for(let o=0,n=this._defaultModules.length;o<n;++o){let a=this._defaultModules[o],c=a.name;r[s++]=a,i[c]=!0}for(let o=0,n=e.length;o<n;++o){let a=e[o],c=a.name;i[c]||(r[s++]=a,i[c]=!0)}return r.length=s,Sr(r),r}},qt=fi;P(qt,"defaultShaderAssembler");var nb=`out vec4 transform_output;
98
99
  void main() {
99
100
  transform_output = vec4(0);
100
- }`,JT=`#version 300 es
101
- ${ZT}`;function rs(e){let{input:t,inputChannels:r,output:i}=e||{};if(!t)return JT;if(!r)throw new Error("inputChannels");let s=QT(r),o=Dd(t,r);return`#version 300 es
102
- in ${s} ${t};
101
+ }`,ab=`#version 300 es
102
+ ${nb}`;function as(t){let{input:e,inputChannels:r,output:i}=t||{};if(!e)return ab;if(!r)throw new Error("inputChannels");let s=cb(r),o=_p(e,r);return`#version 300 es
103
+ in ${s} ${e};
103
104
  out vec4 ${i};
104
105
  void main() {
105
106
  ${i} = ${o};
106
- }`}function QT(e){switch(e){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error(`invalid channels: ${e}`)}}function Dd(e,t){switch(t){case 1:return`vec4(${e}, 0.0, 0.0, 1.0)`;case 2:return`vec4(${e}, 0.0, 1.0)`;case 3:return`vec4(${e}, 1.0)`;case 4:return e;default:throw new Error(`invalid channels: ${t}`)}}var GT=1/Math.PI*180,ty=1/180*Math.PI,ey={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...ey}};var et=globalThis.mathgl.config;function is(e,{precision:t=et.precision}={}){return e=ry(e),`${parseFloat(e.toPrecision(t))}`}function xe(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function ai(e,t){return El(e,r=>r*ty,t)}function We(e,t){return El(e,r=>r*GT,t)}function H(e,t,r){return El(e,i=>Math.max(t,Math.min(r,i)))}function Ae(e,t,r){return xe(e)?e.map((i,s)=>Ae(i,t[s],r)):r*t+(1-r)*e}function xt(e,t,r){let i=et.EPSILON;r&&(et.EPSILON=r);try{if(e===t)return!0;if(xe(e)&&xe(t)){if(e.length!==t.length)return!1;for(let s=0;s<e.length;++s)if(!xt(e[s],t[s]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<=et.EPSILON*Math.max(1,Math.abs(e),Math.abs(t)):!1}finally{et.EPSILON=i}}function ry(e){return Math.round(e/et.EPSILON)*et.EPSILON}function iy(e){return e.clone?e.clone():new Array(e.length)}function El(e,t,r){if(xe(e)){let i=e;r=r||iy(i);for(let s=0;s<r.length&&s<i.length;++s){let o=typeof e=="number"?e:e[s];r[s]=t(o,s,r)}return r}return t(e)}var ci=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(t,r=0){for(let i=0;i<this.ELEMENTS;++i)this[i]=t[i+r];return this.check()}toArray(t=[],r=0){for(let i=0;i<this.ELEMENTS;++i)t[r+i]=this[i];return t}toObject(t){return t}from(t){return Array.isArray(t)?this.copy(t):this.fromObject(t)}to(t){return t===this?this:xe(t)?this.toArray(t):this.toObject(t)}toTarget(t){return t?this.to(t):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(et)}formatString(t){let r="";for(let i=0;i<this.ELEMENTS;++i)r+=(i>0?", ":"")+is(this[i],t);return`${t.printTypes?this.constructor.name:""}[${r}]`}equals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(!xt(this[r],t[r]))return!1;return!0}exactEquals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(this[r]!==t[r])return!1;return!0}negate(){for(let t=0;t<this.ELEMENTS;++t)this[t]=-this[t];return this.check()}lerp(t,r,i){if(i===void 0)return this.lerp(this,t,r);for(let s=0;s<this.ELEMENTS;++s){let o=t[s],n=typeof r=="number"?r:r[s];this[s]=o+i*(n-o)}return this.check()}min(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(t[r],this[r]);return this.check()}max(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.max(t[r],this[r]);return this.check()}clamp(t,r){for(let i=0;i<this.ELEMENTS;++i)this[i]=Math.min(Math.max(this[i],t[i]),r[i]);return this.check()}add(...t){for(let r of t)for(let i=0;i<this.ELEMENTS;++i)this[i]+=r[i];return this.check()}subtract(...t){for(let r of t)for(let i=0;i<this.ELEMENTS;++i)this[i]-=r[i];return this.check()}scale(t){if(typeof t=="number")for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;else for(let r=0;r<this.ELEMENTS&&r<t.length;++r)this[r]*=t[r];return this.check()}multiplyByScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;return this.check()}check(){if(et.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let t=this.length===this.ELEMENTS;for(let r=0;r<this.ELEMENTS;++r)t=t&&Number.isFinite(this[r]);return t}sub(t){return this.subtract(t)}setScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=t;return this.check()}addScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]+=t;return this.check()}subScalar(t){return this.addScalar(-t)}multiplyScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;return this.check()}divideScalar(t){return this.multiplyByScalar(1/t)}clampScalar(t,r){for(let i=0;i<this.ELEMENTS;++i)this[i]=Math.min(Math.max(this[i],t),r);return this.check()}get elements(){return this}};function sy(e,t){if(e.length!==t)return!1;for(let r=0;r<e.length;++r)if(!Number.isFinite(e[r]))return!1;return!0}function ft(e){if(!Number.isFinite(e))throw new Error(`Invalid number ${JSON.stringify(e)}`);return e}function pn(e,t,r=""){if(et.debug&&!sy(e,t))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return e}function Rl(e,t){if(!e)throw new Error(`math.gl assertion ${t}`)}var gn=class extends ci{get x(){return this[0]}set x(t){this[0]=ft(t)}get y(){return this[1]}set y(t){this[1]=ft(t)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let t=0;for(let r=0;r<this.ELEMENTS;++r)t+=this[r]*this[r];return t}magnitudeSquared(){return this.lengthSquared()}distance(t){return Math.sqrt(this.distanceSquared(t))}distanceSquared(t){let r=0;for(let i=0;i<this.ELEMENTS;++i){let s=this[i]-t[i];r+=s*s}return ft(r)}dot(t){let r=0;for(let i=0;i<this.ELEMENTS;++i)r+=this[i]*t[i];return ft(r)}normalize(){let t=this.magnitude();if(t!==0)for(let r=0;r<this.ELEMENTS;++r)this[r]/=t;return this.check()}multiply(...t){for(let r of t)for(let i=0;i<this.ELEMENTS;++i)this[i]*=r[i];return this.check()}divide(...t){for(let r of t)for(let i=0;i<this.ELEMENTS;++i)this[i]/=r[i];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(t){return this.distance(t)}distanceToSquared(t){return this.distanceSquared(t)}getComponent(t){return Rl(t>=0&&t<this.ELEMENTS,"index is out of range"),ft(this[t])}setComponent(t,r){return Rl(t>=0&&t<this.ELEMENTS,"index is out of range"),this[t]=r,this.check()}addVectors(t,r){return this.copy(t).add(r)}subVectors(t,r){return this.copy(t).subtract(r)}multiplyVectors(t,r){return this.copy(t).multiply(r)}addScaledVector(t,r){return this.add(new this.constructor(t).multiplyScalar(r))}};var tt={};ge(tt,{add:()=>ly,angle:()=>My,ceil:()=>fy,clone:()=>oy,copy:()=>ay,create:()=>Fd,cross:()=>xy,dist:()=>Ly,distance:()=>kd,div:()=>By,divide:()=>Ud,dot:()=>by,equals:()=>Oy,exactEquals:()=>Iy,floor:()=>hy,forEach:()=>Vy,fromValues:()=>ny,inverse:()=>Ty,len:()=>Ny,length:()=>zd,lerp:()=>Ay,max:()=>dy,min:()=>uy,mul:()=>Fy,multiply:()=>Ld,negate:()=>_y,normalize:()=>yy,random:()=>Sy,rotate:()=>Py,round:()=>py,scale:()=>gy,scaleAndAdd:()=>my,set:()=>cy,sqrDist:()=>Uy,sqrLen:()=>ky,squaredDistance:()=>Vd,squaredLength:()=>jd,str:()=>Cy,sub:()=>Dy,subtract:()=>Bd,transformMat2:()=>Ey,transformMat2d:()=>Ry,transformMat3:()=>wy,transformMat4:()=>wl,zero:()=>vy});var Z=typeof Float32Array<"u"?Float32Array:Array,Gt=Math.random;function Ct(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var Gv=Math.PI/180;function Fd(){let e=new Z(2);return Z!=Float32Array&&(e[0]=0,e[1]=0),e}function oy(e){let t=new Z(2);return t[0]=e[0],t[1]=e[1],t}function ny(e,t){let r=new Z(2);return r[0]=e,r[1]=t,r}function ay(e,t){return e[0]=t[0],e[1]=t[1],e}function cy(e,t,r){return e[0]=t,e[1]=r,e}function ly(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e}function Bd(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e}function Ld(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e}function Ud(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e}function fy(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e}function hy(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e}function uy(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e}function dy(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e}function py(e,t){return e[0]=Ct(t[0]),e[1]=Ct(t[1]),e}function gy(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e}function my(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e}function kd(e,t){let r=t[0]-e[0],i=t[1]-e[1];return Math.sqrt(r*r+i*i)}function Vd(e,t){let r=t[0]-e[0],i=t[1]-e[1];return r*r+i*i}function zd(e){let t=e[0],r=e[1];return Math.sqrt(t*t+r*r)}function jd(e){let t=e[0],r=e[1];return t*t+r*r}function _y(e,t){return e[0]=-t[0],e[1]=-t[1],e}function Ty(e,t){return e[0]=1/t[0],e[1]=1/t[1],e}function yy(e,t){let r=t[0],i=t[1],s=r*r+i*i;return s>0&&(s=1/Math.sqrt(s)),e[0]=t[0]*s,e[1]=t[1]*s,e}function by(e,t){return e[0]*t[0]+e[1]*t[1]}function xy(e,t,r){let i=t[0]*r[1]-t[1]*r[0];return e[0]=e[1]=0,e[2]=i,e}function Ay(e,t,r,i){let s=t[0],o=t[1];return e[0]=s+i*(r[0]-s),e[1]=o+i*(r[1]-o),e}function Sy(e,t){t=t===void 0?1:t;let r=Gt()*2*Math.PI;return e[0]=Math.cos(r)*t,e[1]=Math.sin(r)*t,e}function Ey(e,t,r){let i=t[0],s=t[1];return e[0]=r[0]*i+r[2]*s,e[1]=r[1]*i+r[3]*s,e}function Ry(e,t,r){let i=t[0],s=t[1];return e[0]=r[0]*i+r[2]*s+r[4],e[1]=r[1]*i+r[3]*s+r[5],e}function wy(e,t,r){let i=t[0],s=t[1];return e[0]=r[0]*i+r[3]*s+r[6],e[1]=r[1]*i+r[4]*s+r[7],e}function wl(e,t,r){let i=t[0],s=t[1];return e[0]=r[0]*i+r[4]*s+r[12],e[1]=r[1]*i+r[5]*s+r[13],e}function Py(e,t,r,i){let s=t[0]-r[0],o=t[1]-r[1],n=Math.sin(i),a=Math.cos(i);return e[0]=s*a-o*n+r[0],e[1]=s*n+o*a+r[1],e}function My(e,t){let r=e[0],i=e[1],s=t[0],o=t[1],n=Math.sqrt((r*r+i*i)*(s*s+o*o)),a=n&&(r*s+i*o)/n;return Math.acos(Math.min(Math.max(a,-1),1))}function vy(e){return e[0]=0,e[1]=0,e}function Cy(e){return`vec2(${e[0]}, ${e[1]})`}function Iy(e,t){return e[0]===t[0]&&e[1]===t[1]}function Oy(e,t){let r=e[0],i=e[1],s=t[0],o=t[1];return Math.abs(r-s)<=1e-6*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=1e-6*Math.max(1,Math.abs(i),Math.abs(o))}var Ny=zd,Dy=Bd,Fy=Ld,By=Ud,Ly=kd,Uy=Vd,ky=jd,Vy=function(){let e=Fd();return function(t,r,i,s,o,n){let a,c;for(r||(r=2),i||(i=0),s?c=Math.min(s*r+i,t.length):c=t.length,a=i;a<c;a+=r)e[0]=t[a],e[1]=t[a+1],o(e,e,n),t[a]=e[0],t[a+1]=e[1];return t}}();function Wd(e,t,r){let i=t[0],s=t[1],o=r[3]*i+r[7]*s||1;return e[0]=(r[0]*i+r[4]*s)/o,e[1]=(r[1]*i+r[5]*s)/o,e}function _n(e,t,r){let i=t[0],s=t[1],o=t[2],n=r[3]*i+r[7]*s+r[11]*o||1;return e[0]=(r[0]*i+r[4]*s+r[8]*o)/n,e[1]=(r[1]*i+r[5]*s+r[9]*o)/n,e[2]=(r[2]*i+r[6]*s+r[10]*o)/n,e}function Hd(e,t,r){let i=t[0],s=t[1];return e[0]=r[0]*i+r[2]*s,e[1]=r[1]*i+r[3]*s,e[2]=t[2],e}var ut={};ge(ut,{add:()=>Xy,angle:()=>Dl,bezier:()=>ob,ceil:()=>$y,clone:()=>zy,copy:()=>Wy,create:()=>Xd,cross:()=>Ml,dist:()=>pb,distance:()=>qd,div:()=>db,divide:()=>Kd,dot:()=>Pl,equals:()=>fb,exactEquals:()=>lb,floor:()=>Yy,forEach:()=>Tb,fromValues:()=>jy,hermite:()=>sb,inverse:()=>tb,len:()=>mb,length:()=>Tn,lerp:()=>rb,max:()=>qy,min:()=>Ky,mul:()=>ub,multiply:()=>Yd,negate:()=>Gy,normalize:()=>eb,random:()=>nb,rotateX:()=>Il,rotateY:()=>Ol,rotateZ:()=>Nl,round:()=>Zy,scale:()=>Jy,scaleAndAdd:()=>Qy,set:()=>Hy,slerp:()=>ib,sqrDist:()=>gb,sqrLen:()=>_b,squaredDistance:()=>Zd,squaredLength:()=>Jd,str:()=>cb,sub:()=>hb,subtract:()=>$d,transformMat3:()=>vl,transformMat4:()=>ss,transformQuat:()=>Cl,zero:()=>ab});function Xd(){let e=new Z(3);return Z!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function zy(e){let t=new Z(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Tn(e){let t=e[0],r=e[1],i=e[2];return Math.sqrt(t*t+r*r+i*i)}function jy(e,t,r){let i=new Z(3);return i[0]=e,i[1]=t,i[2]=r,i}function Wy(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Hy(e,t,r,i){return e[0]=t,e[1]=r,e[2]=i,e}function Xy(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e}function $d(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e}function Yd(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e[2]=t[2]*r[2],e}function Kd(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e}function $y(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Yy(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Ky(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e[2]=Math.min(t[2],r[2]),e}function qy(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e[2]=Math.max(t[2],r[2]),e}function Zy(e,t){return e[0]=Ct(t[0]),e[1]=Ct(t[1]),e[2]=Ct(t[2]),e}function Jy(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e}function Qy(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e[2]=t[2]+r[2]*i,e}function qd(e,t){let r=t[0]-e[0],i=t[1]-e[1],s=t[2]-e[2];return Math.sqrt(r*r+i*i+s*s)}function Zd(e,t){let r=t[0]-e[0],i=t[1]-e[1],s=t[2]-e[2];return r*r+i*i+s*s}function Jd(e){let t=e[0],r=e[1],i=e[2];return t*t+r*r+i*i}function Gy(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function tb(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function eb(e,t){let r=t[0],i=t[1],s=t[2],o=r*r+i*i+s*s;return o>0&&(o=1/Math.sqrt(o)),e[0]=t[0]*o,e[1]=t[1]*o,e[2]=t[2]*o,e}function Pl(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Ml(e,t,r){let i=t[0],s=t[1],o=t[2],n=r[0],a=r[1],c=r[2];return e[0]=s*c-o*a,e[1]=o*n-i*c,e[2]=i*a-s*n,e}function rb(e,t,r,i){let s=t[0],o=t[1],n=t[2];return e[0]=s+i*(r[0]-s),e[1]=o+i*(r[1]-o),e[2]=n+i*(r[2]-n),e}function ib(e,t,r,i){let s=Math.acos(Math.min(Math.max(Pl(t,r),-1),1)),o=Math.sin(s),n=Math.sin((1-i)*s)/o,a=Math.sin(i*s)/o;return e[0]=n*t[0]+a*r[0],e[1]=n*t[1]+a*r[1],e[2]=n*t[2]+a*r[2],e}function sb(e,t,r,i,s,o){let n=o*o,a=n*(2*o-3)+1,c=n*(o-2)+o,l=n*(o-1),f=n*(3-2*o);return e[0]=t[0]*a+r[0]*c+i[0]*l+s[0]*f,e[1]=t[1]*a+r[1]*c+i[1]*l+s[1]*f,e[2]=t[2]*a+r[2]*c+i[2]*l+s[2]*f,e}function ob(e,t,r,i,s,o){let n=1-o,a=n*n,c=o*o,l=a*n,f=3*o*a,h=3*c*n,u=c*o;return e[0]=t[0]*l+r[0]*f+i[0]*h+s[0]*u,e[1]=t[1]*l+r[1]*f+i[1]*h+s[1]*u,e[2]=t[2]*l+r[2]*f+i[2]*h+s[2]*u,e}function nb(e,t){t=t===void 0?1:t;let r=Gt()*2*Math.PI,i=Gt()*2-1,s=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(r)*s,e[1]=Math.sin(r)*s,e[2]=i*t,e}function ss(e,t,r){let i=t[0],s=t[1],o=t[2],n=r[3]*i+r[7]*s+r[11]*o+r[15];return n=n||1,e[0]=(r[0]*i+r[4]*s+r[8]*o+r[12])/n,e[1]=(r[1]*i+r[5]*s+r[9]*o+r[13])/n,e[2]=(r[2]*i+r[6]*s+r[10]*o+r[14])/n,e}function vl(e,t,r){let i=t[0],s=t[1],o=t[2];return e[0]=i*r[0]+s*r[3]+o*r[6],e[1]=i*r[1]+s*r[4]+o*r[7],e[2]=i*r[2]+s*r[5]+o*r[8],e}function Cl(e,t,r){let i=r[0],s=r[1],o=r[2],n=r[3],a=t[0],c=t[1],l=t[2],f=s*l-o*c,h=o*a-i*l,u=i*c-s*a,d=s*u-o*h,p=o*f-i*u,g=i*h-s*f,m=n*2;return f*=m,h*=m,u*=m,d*=2,p*=2,g*=2,e[0]=a+f+d,e[1]=c+h+p,e[2]=l+u+g,e}function Il(e,t,r,i){let s=[],o=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],o[0]=s[0],o[1]=s[1]*Math.cos(i)-s[2]*Math.sin(i),o[2]=s[1]*Math.sin(i)+s[2]*Math.cos(i),e[0]=o[0]+r[0],e[1]=o[1]+r[1],e[2]=o[2]+r[2],e}function Ol(e,t,r,i){let s=[],o=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],o[0]=s[2]*Math.sin(i)+s[0]*Math.cos(i),o[1]=s[1],o[2]=s[2]*Math.cos(i)-s[0]*Math.sin(i),e[0]=o[0]+r[0],e[1]=o[1]+r[1],e[2]=o[2]+r[2],e}function Nl(e,t,r,i){let s=[],o=[];return s[0]=t[0]-r[0],s[1]=t[1]-r[1],s[2]=t[2]-r[2],o[0]=s[0]*Math.cos(i)-s[1]*Math.sin(i),o[1]=s[0]*Math.sin(i)+s[1]*Math.cos(i),o[2]=s[2],e[0]=o[0]+r[0],e[1]=o[1]+r[1],e[2]=o[2]+r[2],e}function Dl(e,t){let r=e[0],i=e[1],s=e[2],o=t[0],n=t[1],a=t[2],c=Math.sqrt((r*r+i*i+s*s)*(o*o+n*n+a*a)),l=c&&Pl(e,t)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function ab(e){return e[0]=0,e[1]=0,e[2]=0,e}function cb(e){return`vec3(${e[0]}, ${e[1]}, ${e[2]})`}function lb(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function fb(e,t){let r=e[0],i=e[1],s=e[2],o=t[0],n=t[1],a=t[2];return Math.abs(r-o)<=1e-6*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-n)<=1e-6*Math.max(1,Math.abs(i),Math.abs(n))&&Math.abs(s-a)<=1e-6*Math.max(1,Math.abs(s),Math.abs(a))}var hb=$d,ub=Yd,db=Kd,pb=qd,gb=Zd,mb=Tn,_b=Jd,Tb=function(){let e=Xd();return function(t,r,i,s,o,n){let a,c;for(r||(r=3),i||(i=0),s?c=Math.min(s*r+i,t.length):c=t.length,a=i;a<c;a+=r)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],o(e,e,n),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2];return t}}();var Fl=[0,0,0],yn,z=class extends gn{static get ZERO(){return yn||(yn=new z(0,0,0),Object.freeze(yn)),yn}constructor(t=0,r=0,i=0){super(-0,-0,-0),arguments.length===1&&xe(t)?this.copy(t):(et.debug&&(ft(t),ft(r),ft(i)),this[0]=t,this[1]=r,this[2]=i)}set(t,r,i){return this[0]=t,this[1]=r,this[2]=i,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this.check()}fromObject(t){return et.debug&&(ft(t.x),ft(t.y),ft(t.z)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t}get ELEMENTS(){return 3}get z(){return this[2]}set z(t){this[2]=ft(t)}angle(t){return Dl(this,t)}cross(t){return Ml(this,this,t),this.check()}rotateX({radians:t,origin:r=Fl}){return Il(this,this,r,t),this.check()}rotateY({radians:t,origin:r=Fl}){return Ol(this,this,r,t),this.check()}rotateZ({radians:t,origin:r=Fl}){return Nl(this,this,r,t),this.check()}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return ss(this,this,t),this.check()}transformAsVector(t){return _n(this,this,t),this.check()}transformByMatrix3(t){return vl(this,this,t),this.check()}transformByMatrix2(t){return Hd(this,this,t),this.check()}transformByQuaternion(t){return Cl(this,this,t),this.check()}};var bn=class extends ci{toString(){let t="[";if(et.printRowMajor){t+="row-major:";for(let r=0;r<this.RANK;++r)for(let i=0;i<this.RANK;++i)t+=` ${this[i*this.RANK+r]}`}else{t+="column-major:";for(let r=0;r<this.ELEMENTS;++r)t+=` ${this[r]}`}return t+="]",t}getElementIndex(t,r){return r*this.RANK+t}getElement(t,r){return this[r*this.RANK+t]}setElement(t,r,i){return this[r*this.RANK+t]=ft(i),this}getColumn(t,r=new Array(this.RANK).fill(-0)){let i=t*this.RANK;for(let s=0;s<this.RANK;++s)r[s]=this[i+s];return r}setColumn(t,r){let i=t*this.RANK;for(let s=0;s<this.RANK;++s)this[i+s]=r[s];return this}};var rt={};ge(rt,{add:()=>Wb,adjoint:()=>Eb,clone:()=>bb,copy:()=>xb,create:()=>yb,decompose:()=>Db,determinant:()=>Ul,equals:()=>Yb,exactEquals:()=>$b,frob:()=>jb,fromQuat:()=>Xl,fromQuat2:()=>Ib,fromRotation:()=>Pb,fromRotationTranslation:()=>Gd,fromRotationTranslationScale:()=>Fb,fromRotationTranslationScaleOrigin:()=>Bb,fromScaling:()=>wb,fromTranslation:()=>Rb,fromValues:()=>Ab,fromXRotation:()=>Mb,fromYRotation:()=>vb,fromZRotation:()=>Cb,frustum:()=>$l,getRotation:()=>Nb,getScaling:()=>tp,getTranslation:()=>Ob,identity:()=>Qd,invert:()=>Ll,lookAt:()=>ql,mul:()=>Kb,multiply:()=>os,multiplyScalar:()=>Hb,multiplyScalarAndAdd:()=>Xb,ortho:()=>Kl,orthoNO:()=>rp,orthoZO:()=>kb,perspective:()=>Yl,perspectiveFromFieldOfView:()=>Ub,perspectiveNO:()=>ep,perspectiveZO:()=>Lb,rotate:()=>zl,rotateX:()=>jl,rotateY:()=>Wl,rotateZ:()=>Hl,scale:()=>Vl,set:()=>Sb,str:()=>zb,sub:()=>qb,subtract:()=>ip,targetTo:()=>Vb,translate:()=>kl,transpose:()=>Bl});function yb(){let e=new Z(16);return Z!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function bb(e){let t=new Z(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function xb(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Ab(e,t,r,i,s,o,n,a,c,l,f,h,u,d,p,g){let m=new Z(16);return m[0]=e,m[1]=t,m[2]=r,m[3]=i,m[4]=s,m[5]=o,m[6]=n,m[7]=a,m[8]=c,m[9]=l,m[10]=f,m[11]=h,m[12]=u,m[13]=d,m[14]=p,m[15]=g,m}function Sb(e,t,r,i,s,o,n,a,c,l,f,h,u,d,p,g,m){return e[0]=t,e[1]=r,e[2]=i,e[3]=s,e[4]=o,e[5]=n,e[6]=a,e[7]=c,e[8]=l,e[9]=f,e[10]=h,e[11]=u,e[12]=d,e[13]=p,e[14]=g,e[15]=m,e}function Qd(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Bl(e,t){if(e===t){let r=t[1],i=t[2],s=t[3],o=t[6],n=t[7],a=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=o,e[11]=t[14],e[12]=s,e[13]=n,e[14]=a}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Ll(e,t){let r=t[0],i=t[1],s=t[2],o=t[3],n=t[4],a=t[5],c=t[6],l=t[7],f=t[8],h=t[9],u=t[10],d=t[11],p=t[12],g=t[13],m=t[14],_=t[15],y=r*a-i*n,T=r*c-s*n,x=r*l-o*n,S=i*c-s*a,E=i*l-o*a,v=s*l-o*c,P=f*g-h*p,R=f*m-u*p,M=f*_-d*p,L=h*m-u*g,C=h*_-d*g,W=u*_-d*m,U=y*W-T*C+x*L+S*M-E*R+v*P;return U?(U=1/U,e[0]=(a*W-c*C+l*L)*U,e[1]=(s*C-i*W-o*L)*U,e[2]=(g*v-m*E+_*S)*U,e[3]=(u*E-h*v-d*S)*U,e[4]=(c*M-n*W-l*R)*U,e[5]=(r*W-s*M+o*R)*U,e[6]=(m*x-p*v-_*T)*U,e[7]=(f*v-u*x+d*T)*U,e[8]=(n*C-a*M+l*P)*U,e[9]=(i*M-r*C-o*P)*U,e[10]=(p*E-g*x+_*y)*U,e[11]=(h*x-f*E-d*y)*U,e[12]=(a*R-n*L-c*P)*U,e[13]=(r*L-i*R+s*P)*U,e[14]=(g*T-p*S-m*y)*U,e[15]=(f*S-h*T+u*y)*U,e):null}function Eb(e,t){let r=t[0],i=t[1],s=t[2],o=t[3],n=t[4],a=t[5],c=t[6],l=t[7],f=t[8],h=t[9],u=t[10],d=t[11],p=t[12],g=t[13],m=t[14],_=t[15],y=r*a-i*n,T=r*c-s*n,x=r*l-o*n,S=i*c-s*a,E=i*l-o*a,v=s*l-o*c,P=f*g-h*p,R=f*m-u*p,M=f*_-d*p,L=h*m-u*g,C=h*_-d*g,W=u*_-d*m;return e[0]=a*W-c*C+l*L,e[1]=s*C-i*W-o*L,e[2]=g*v-m*E+_*S,e[3]=u*E-h*v-d*S,e[4]=c*M-n*W-l*R,e[5]=r*W-s*M+o*R,e[6]=m*x-p*v-_*T,e[7]=f*v-u*x+d*T,e[8]=n*C-a*M+l*P,e[9]=i*M-r*C-o*P,e[10]=p*E-g*x+_*y,e[11]=h*x-f*E-d*y,e[12]=a*R-n*L-c*P,e[13]=r*L-i*R+s*P,e[14]=g*T-p*S-m*y,e[15]=f*S-h*T+u*y,e}function Ul(e){let t=e[0],r=e[1],i=e[2],s=e[3],o=e[4],n=e[5],a=e[6],c=e[7],l=e[8],f=e[9],h=e[10],u=e[11],d=e[12],p=e[13],g=e[14],m=e[15],_=t*n-r*o,y=t*a-i*o,T=r*a-i*n,x=l*p-f*d,S=l*g-h*d,E=f*g-h*p,v=t*E-r*S+i*x,P=o*E-n*S+a*x,R=l*T-f*y+h*_,M=d*T-p*y+g*_;return c*v-s*P+m*R-u*M}function os(e,t,r){let i=t[0],s=t[1],o=t[2],n=t[3],a=t[4],c=t[5],l=t[6],f=t[7],h=t[8],u=t[9],d=t[10],p=t[11],g=t[12],m=t[13],_=t[14],y=t[15],T=r[0],x=r[1],S=r[2],E=r[3];return e[0]=T*i+x*a+S*h+E*g,e[1]=T*s+x*c+S*u+E*m,e[2]=T*o+x*l+S*d+E*_,e[3]=T*n+x*f+S*p+E*y,T=r[4],x=r[5],S=r[6],E=r[7],e[4]=T*i+x*a+S*h+E*g,e[5]=T*s+x*c+S*u+E*m,e[6]=T*o+x*l+S*d+E*_,e[7]=T*n+x*f+S*p+E*y,T=r[8],x=r[9],S=r[10],E=r[11],e[8]=T*i+x*a+S*h+E*g,e[9]=T*s+x*c+S*u+E*m,e[10]=T*o+x*l+S*d+E*_,e[11]=T*n+x*f+S*p+E*y,T=r[12],x=r[13],S=r[14],E=r[15],e[12]=T*i+x*a+S*h+E*g,e[13]=T*s+x*c+S*u+E*m,e[14]=T*o+x*l+S*d+E*_,e[15]=T*n+x*f+S*p+E*y,e}function kl(e,t,r){let i=r[0],s=r[1],o=r[2],n,a,c,l,f,h,u,d,p,g,m,_;return t===e?(e[12]=t[0]*i+t[4]*s+t[8]*o+t[12],e[13]=t[1]*i+t[5]*s+t[9]*o+t[13],e[14]=t[2]*i+t[6]*s+t[10]*o+t[14],e[15]=t[3]*i+t[7]*s+t[11]*o+t[15]):(n=t[0],a=t[1],c=t[2],l=t[3],f=t[4],h=t[5],u=t[6],d=t[7],p=t[8],g=t[9],m=t[10],_=t[11],e[0]=n,e[1]=a,e[2]=c,e[3]=l,e[4]=f,e[5]=h,e[6]=u,e[7]=d,e[8]=p,e[9]=g,e[10]=m,e[11]=_,e[12]=n*i+f*s+p*o+t[12],e[13]=a*i+h*s+g*o+t[13],e[14]=c*i+u*s+m*o+t[14],e[15]=l*i+d*s+_*o+t[15]),e}function Vl(e,t,r){let i=r[0],s=r[1],o=r[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*s,e[5]=t[5]*s,e[6]=t[6]*s,e[7]=t[7]*s,e[8]=t[8]*o,e[9]=t[9]*o,e[10]=t[10]*o,e[11]=t[11]*o,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function zl(e,t,r,i){let s=i[0],o=i[1],n=i[2],a=Math.sqrt(s*s+o*o+n*n),c,l,f,h,u,d,p,g,m,_,y,T,x,S,E,v,P,R,M,L,C,W,U,G;return a<1e-6?null:(a=1/a,s*=a,o*=a,n*=a,l=Math.sin(r),c=Math.cos(r),f=1-c,h=t[0],u=t[1],d=t[2],p=t[3],g=t[4],m=t[5],_=t[6],y=t[7],T=t[8],x=t[9],S=t[10],E=t[11],v=s*s*f+c,P=o*s*f+n*l,R=n*s*f-o*l,M=s*o*f-n*l,L=o*o*f+c,C=n*o*f+s*l,W=s*n*f+o*l,U=o*n*f-s*l,G=n*n*f+c,e[0]=h*v+g*P+T*R,e[1]=u*v+m*P+x*R,e[2]=d*v+_*P+S*R,e[3]=p*v+y*P+E*R,e[4]=h*M+g*L+T*C,e[5]=u*M+m*L+x*C,e[6]=d*M+_*L+S*C,e[7]=p*M+y*L+E*C,e[8]=h*W+g*U+T*G,e[9]=u*W+m*U+x*G,e[10]=d*W+_*U+S*G,e[11]=p*W+y*U+E*G,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function jl(e,t,r){let i=Math.sin(r),s=Math.cos(r),o=t[4],n=t[5],a=t[6],c=t[7],l=t[8],f=t[9],h=t[10],u=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=o*s+l*i,e[5]=n*s+f*i,e[6]=a*s+h*i,e[7]=c*s+u*i,e[8]=l*s-o*i,e[9]=f*s-n*i,e[10]=h*s-a*i,e[11]=u*s-c*i,e}function Wl(e,t,r){let i=Math.sin(r),s=Math.cos(r),o=t[0],n=t[1],a=t[2],c=t[3],l=t[8],f=t[9],h=t[10],u=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=o*s-l*i,e[1]=n*s-f*i,e[2]=a*s-h*i,e[3]=c*s-u*i,e[8]=o*i+l*s,e[9]=n*i+f*s,e[10]=a*i+h*s,e[11]=c*i+u*s,e}function Hl(e,t,r){let i=Math.sin(r),s=Math.cos(r),o=t[0],n=t[1],a=t[2],c=t[3],l=t[4],f=t[5],h=t[6],u=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=o*s+l*i,e[1]=n*s+f*i,e[2]=a*s+h*i,e[3]=c*s+u*i,e[4]=l*s-o*i,e[5]=f*s-n*i,e[6]=h*s-a*i,e[7]=u*s-c*i,e}function Rb(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function wb(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Pb(e,t,r){let i=r[0],s=r[1],o=r[2],n=Math.sqrt(i*i+s*s+o*o),a,c,l;return n<1e-6?null:(n=1/n,i*=n,s*=n,o*=n,c=Math.sin(t),a=Math.cos(t),l=1-a,e[0]=i*i*l+a,e[1]=s*i*l+o*c,e[2]=o*i*l-s*c,e[3]=0,e[4]=i*s*l-o*c,e[5]=s*s*l+a,e[6]=o*s*l+i*c,e[7]=0,e[8]=i*o*l+s*c,e[9]=s*o*l-i*c,e[10]=o*o*l+a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function Mb(e,t){let r=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=r,e[7]=0,e[8]=0,e[9]=-r,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function vb(e,t){let r=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=0,e[2]=-r,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=r,e[9]=0,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Cb(e,t){let r=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=r,e[2]=0,e[3]=0,e[4]=-r,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Gd(e,t,r){let i=t[0],s=t[1],o=t[2],n=t[3],a=i+i,c=s+s,l=o+o,f=i*a,h=i*c,u=i*l,d=s*c,p=s*l,g=o*l,m=n*a,_=n*c,y=n*l;return e[0]=1-(d+g),e[1]=h+y,e[2]=u-_,e[3]=0,e[4]=h-y,e[5]=1-(f+g),e[6]=p+m,e[7]=0,e[8]=u+_,e[9]=p-m,e[10]=1-(f+d),e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}function Ib(e,t){let r=new Z(3),i=-t[0],s=-t[1],o=-t[2],n=t[3],a=t[4],c=t[5],l=t[6],f=t[7],h=i*i+s*s+o*o+n*n;return h>0?(r[0]=(a*n+f*i+c*o-l*s)*2/h,r[1]=(c*n+f*s+l*i-a*o)*2/h,r[2]=(l*n+f*o+a*s-c*i)*2/h):(r[0]=(a*n+f*i+c*o-l*s)*2,r[1]=(c*n+f*s+l*i-a*o)*2,r[2]=(l*n+f*o+a*s-c*i)*2),Gd(e,t,r),e}function Ob(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function tp(e,t){let r=t[0],i=t[1],s=t[2],o=t[4],n=t[5],a=t[6],c=t[8],l=t[9],f=t[10];return e[0]=Math.sqrt(r*r+i*i+s*s),e[1]=Math.sqrt(o*o+n*n+a*a),e[2]=Math.sqrt(c*c+l*l+f*f),e}function Nb(e,t){let r=new Z(3);tp(r,t);let i=1/r[0],s=1/r[1],o=1/r[2],n=t[0]*i,a=t[1]*s,c=t[2]*o,l=t[4]*i,f=t[5]*s,h=t[6]*o,u=t[8]*i,d=t[9]*s,p=t[10]*o,g=n+f+p,m=0;return g>0?(m=Math.sqrt(g+1)*2,e[3]=.25*m,e[0]=(h-d)/m,e[1]=(u-c)/m,e[2]=(a-l)/m):n>f&&n>p?(m=Math.sqrt(1+n-f-p)*2,e[3]=(h-d)/m,e[0]=.25*m,e[1]=(a+l)/m,e[2]=(u+c)/m):f>p?(m=Math.sqrt(1+f-n-p)*2,e[3]=(u-c)/m,e[0]=(a+l)/m,e[1]=.25*m,e[2]=(h+d)/m):(m=Math.sqrt(1+p-n-f)*2,e[3]=(a-l)/m,e[0]=(u+c)/m,e[1]=(h+d)/m,e[2]=.25*m),e}function Db(e,t,r,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];let s=i[0],o=i[1],n=i[2],a=i[4],c=i[5],l=i[6],f=i[8],h=i[9],u=i[10];r[0]=Math.sqrt(s*s+o*o+n*n),r[1]=Math.sqrt(a*a+c*c+l*l),r[2]=Math.sqrt(f*f+h*h+u*u);let d=1/r[0],p=1/r[1],g=1/r[2],m=s*d,_=o*p,y=n*g,T=a*d,x=c*p,S=l*g,E=f*d,v=h*p,P=u*g,R=m+x+P,M=0;return R>0?(M=Math.sqrt(R+1)*2,e[3]=.25*M,e[0]=(S-v)/M,e[1]=(E-y)/M,e[2]=(_-T)/M):m>x&&m>P?(M=Math.sqrt(1+m-x-P)*2,e[3]=(S-v)/M,e[0]=.25*M,e[1]=(_+T)/M,e[2]=(E+y)/M):x>P?(M=Math.sqrt(1+x-m-P)*2,e[3]=(E-y)/M,e[0]=(_+T)/M,e[1]=.25*M,e[2]=(S+v)/M):(M=Math.sqrt(1+P-m-x)*2,e[3]=(_-T)/M,e[0]=(E+y)/M,e[1]=(S+v)/M,e[2]=.25*M),e}function Fb(e,t,r,i){let s=t[0],o=t[1],n=t[2],a=t[3],c=s+s,l=o+o,f=n+n,h=s*c,u=s*l,d=s*f,p=o*l,g=o*f,m=n*f,_=a*c,y=a*l,T=a*f,x=i[0],S=i[1],E=i[2];return e[0]=(1-(p+m))*x,e[1]=(u+T)*x,e[2]=(d-y)*x,e[3]=0,e[4]=(u-T)*S,e[5]=(1-(h+m))*S,e[6]=(g+_)*S,e[7]=0,e[8]=(d+y)*E,e[9]=(g-_)*E,e[10]=(1-(h+p))*E,e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}function Bb(e,t,r,i,s){let o=t[0],n=t[1],a=t[2],c=t[3],l=o+o,f=n+n,h=a+a,u=o*l,d=o*f,p=o*h,g=n*f,m=n*h,_=a*h,y=c*l,T=c*f,x=c*h,S=i[0],E=i[1],v=i[2],P=s[0],R=s[1],M=s[2],L=(1-(g+_))*S,C=(d+x)*S,W=(p-T)*S,U=(d-x)*E,G=(1-(u+_))*E,de=(m+y)*E,pe=(p+T)*v,nu=(m-y)*v,au=(1-(u+g))*v;return e[0]=L,e[1]=C,e[2]=W,e[3]=0,e[4]=U,e[5]=G,e[6]=de,e[7]=0,e[8]=pe,e[9]=nu,e[10]=au,e[11]=0,e[12]=r[0]+P-(L*P+U*R+pe*M),e[13]=r[1]+R-(C*P+G*R+nu*M),e[14]=r[2]+M-(W*P+de*R+au*M),e[15]=1,e}function Xl(e,t){let r=t[0],i=t[1],s=t[2],o=t[3],n=r+r,a=i+i,c=s+s,l=r*n,f=i*n,h=i*a,u=s*n,d=s*a,p=s*c,g=o*n,m=o*a,_=o*c;return e[0]=1-h-p,e[1]=f+_,e[2]=u-m,e[3]=0,e[4]=f-_,e[5]=1-l-p,e[6]=d+g,e[7]=0,e[8]=u+m,e[9]=d-g,e[10]=1-l-h,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function $l(e,t,r,i,s,o,n){let a=1/(r-t),c=1/(s-i),l=1/(o-n);return e[0]=o*2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o*2*c,e[6]=0,e[7]=0,e[8]=(r+t)*a,e[9]=(s+i)*c,e[10]=(n+o)*l,e[11]=-1,e[12]=0,e[13]=0,e[14]=n*o*2*l,e[15]=0,e}function ep(e,t,r,i,s){let o=1/Math.tan(t/2);if(e[0]=o/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,s!=null&&s!==1/0){let n=1/(i-s);e[10]=(s+i)*n,e[14]=2*s*i*n}else e[10]=-1,e[14]=-2*i;return e}var Yl=ep;function Lb(e,t,r,i,s){let o=1/Math.tan(t/2);if(e[0]=o/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,s!=null&&s!==1/0){let n=1/(i-s);e[10]=s*n,e[14]=s*i*n}else e[10]=-1,e[14]=-i;return e}function Ub(e,t,r,i){let s=Math.tan(t.upDegrees*Math.PI/180),o=Math.tan(t.downDegrees*Math.PI/180),n=Math.tan(t.leftDegrees*Math.PI/180),a=Math.tan(t.rightDegrees*Math.PI/180),c=2/(n+a),l=2/(s+o);return e[0]=c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=l,e[6]=0,e[7]=0,e[8]=-((n-a)*c*.5),e[9]=(s-o)*l*.5,e[10]=i/(r-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*r/(r-i),e[15]=0,e}function rp(e,t,r,i,s,o,n){let a=1/(t-r),c=1/(i-s),l=1/(o-n);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*a,e[13]=(s+i)*c,e[14]=(n+o)*l,e[15]=1,e}var Kl=rp;function kb(e,t,r,i,s,o,n){let a=1/(t-r),c=1/(i-s),l=1/(o-n);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=l,e[11]=0,e[12]=(t+r)*a,e[13]=(s+i)*c,e[14]=o*l,e[15]=1,e}function ql(e,t,r,i){let s,o,n,a,c,l,f,h,u,d,p=t[0],g=t[1],m=t[2],_=i[0],y=i[1],T=i[2],x=r[0],S=r[1],E=r[2];return Math.abs(p-x)<1e-6&&Math.abs(g-S)<1e-6&&Math.abs(m-E)<1e-6?Qd(e):(h=p-x,u=g-S,d=m-E,s=1/Math.sqrt(h*h+u*u+d*d),h*=s,u*=s,d*=s,o=y*d-T*u,n=T*h-_*d,a=_*u-y*h,s=Math.sqrt(o*o+n*n+a*a),s?(s=1/s,o*=s,n*=s,a*=s):(o=0,n=0,a=0),c=u*a-d*n,l=d*o-h*a,f=h*n-u*o,s=Math.sqrt(c*c+l*l+f*f),s?(s=1/s,c*=s,l*=s,f*=s):(c=0,l=0,f=0),e[0]=o,e[1]=c,e[2]=h,e[3]=0,e[4]=n,e[5]=l,e[6]=u,e[7]=0,e[8]=a,e[9]=f,e[10]=d,e[11]=0,e[12]=-(o*p+n*g+a*m),e[13]=-(c*p+l*g+f*m),e[14]=-(h*p+u*g+d*m),e[15]=1,e)}function Vb(e,t,r,i){let s=t[0],o=t[1],n=t[2],a=i[0],c=i[1],l=i[2],f=s-r[0],h=o-r[1],u=n-r[2],d=f*f+h*h+u*u;d>0&&(d=1/Math.sqrt(d),f*=d,h*=d,u*=d);let p=c*u-l*h,g=l*f-a*u,m=a*h-c*f;return d=p*p+g*g+m*m,d>0&&(d=1/Math.sqrt(d),p*=d,g*=d,m*=d),e[0]=p,e[1]=g,e[2]=m,e[3]=0,e[4]=h*m-u*g,e[5]=u*p-f*m,e[6]=f*g-h*p,e[7]=0,e[8]=f,e[9]=h,e[10]=u,e[11]=0,e[12]=s,e[13]=o,e[14]=n,e[15]=1,e}function zb(e){return`mat4(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]}, ${e[4]}, ${e[5]}, ${e[6]}, ${e[7]}, ${e[8]}, ${e[9]}, ${e[10]}, ${e[11]}, ${e[12]}, ${e[13]}, ${e[14]}, ${e[15]})`}function jb(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function Wb(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e[4]=t[4]+r[4],e[5]=t[5]+r[5],e[6]=t[6]+r[6],e[7]=t[7]+r[7],e[8]=t[8]+r[8],e[9]=t[9]+r[9],e[10]=t[10]+r[10],e[11]=t[11]+r[11],e[12]=t[12]+r[12],e[13]=t[13]+r[13],e[14]=t[14]+r[14],e[15]=t[15]+r[15],e}function ip(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e[4]=t[4]-r[4],e[5]=t[5]-r[5],e[6]=t[6]-r[6],e[7]=t[7]-r[7],e[8]=t[8]-r[8],e[9]=t[9]-r[9],e[10]=t[10]-r[10],e[11]=t[11]-r[11],e[12]=t[12]-r[12],e[13]=t[13]-r[13],e[14]=t[14]-r[14],e[15]=t[15]-r[15],e}function Hb(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*r,e[9]=t[9]*r,e[10]=t[10]*r,e[11]=t[11]*r,e[12]=t[12]*r,e[13]=t[13]*r,e[14]=t[14]*r,e[15]=t[15]*r,e}function Xb(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e[2]=t[2]+r[2]*i,e[3]=t[3]+r[3]*i,e[4]=t[4]+r[4]*i,e[5]=t[5]+r[5]*i,e[6]=t[6]+r[6]*i,e[7]=t[7]+r[7]*i,e[8]=t[8]+r[8]*i,e[9]=t[9]+r[9]*i,e[10]=t[10]+r[10]*i,e[11]=t[11]+r[11]*i,e[12]=t[12]+r[12]*i,e[13]=t[13]+r[13]*i,e[14]=t[14]+r[14]*i,e[15]=t[15]+r[15]*i,e}function $b(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Yb(e,t){let r=e[0],i=e[1],s=e[2],o=e[3],n=e[4],a=e[5],c=e[6],l=e[7],f=e[8],h=e[9],u=e[10],d=e[11],p=e[12],g=e[13],m=e[14],_=e[15],y=t[0],T=t[1],x=t[2],S=t[3],E=t[4],v=t[5],P=t[6],R=t[7],M=t[8],L=t[9],C=t[10],W=t[11],U=t[12],G=t[13],de=t[14],pe=t[15];return Math.abs(r-y)<=1e-6*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(i-T)<=1e-6*Math.max(1,Math.abs(i),Math.abs(T))&&Math.abs(s-x)<=1e-6*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(o-S)<=1e-6*Math.max(1,Math.abs(o),Math.abs(S))&&Math.abs(n-E)<=1e-6*Math.max(1,Math.abs(n),Math.abs(E))&&Math.abs(a-v)<=1e-6*Math.max(1,Math.abs(a),Math.abs(v))&&Math.abs(c-P)<=1e-6*Math.max(1,Math.abs(c),Math.abs(P))&&Math.abs(l-R)<=1e-6*Math.max(1,Math.abs(l),Math.abs(R))&&Math.abs(f-M)<=1e-6*Math.max(1,Math.abs(f),Math.abs(M))&&Math.abs(h-L)<=1e-6*Math.max(1,Math.abs(h),Math.abs(L))&&Math.abs(u-C)<=1e-6*Math.max(1,Math.abs(u),Math.abs(C))&&Math.abs(d-W)<=1e-6*Math.max(1,Math.abs(d),Math.abs(W))&&Math.abs(p-U)<=1e-6*Math.max(1,Math.abs(p),Math.abs(U))&&Math.abs(g-G)<=1e-6*Math.max(1,Math.abs(g),Math.abs(G))&&Math.abs(m-de)<=1e-6*Math.max(1,Math.abs(m),Math.abs(de))&&Math.abs(_-pe)<=1e-6*Math.max(1,Math.abs(_),Math.abs(pe))}var Kb=os,qb=ip;var _t={};ge(_t,{add:()=>tx,ceil:()=>ex,clone:()=>Zb,copy:()=>Qb,create:()=>sp,cross:()=>ux,dist:()=>Sx,distance:()=>cp,div:()=>Ax,divide:()=>ap,dot:()=>hx,equals:()=>yx,exactEquals:()=>Tx,floor:()=>rx,forEach:()=>Px,fromValues:()=>Jb,inverse:()=>lx,len:()=>Rx,length:()=>fp,lerp:()=>dx,max:()=>sx,min:()=>ix,mul:()=>xx,multiply:()=>np,negate:()=>cx,normalize:()=>fx,random:()=>px,round:()=>ox,scale:()=>nx,scaleAndAdd:()=>ax,set:()=>Gb,sqrDist:()=>Ex,sqrLen:()=>wx,squaredDistance:()=>lp,squaredLength:()=>hp,str:()=>_x,sub:()=>bx,subtract:()=>op,transformMat4:()=>Zl,transformQuat:()=>gx,zero:()=>mx});function sp(){let e=new Z(4);return Z!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function Zb(e){let t=new Z(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Jb(e,t,r,i){let s=new Z(4);return s[0]=e,s[1]=t,s[2]=r,s[3]=i,s}function Qb(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function Gb(e,t,r,i,s){return e[0]=t,e[1]=r,e[2]=i,e[3]=s,e}function tx(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e}function op(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e}function np(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e[2]=t[2]*r[2],e[3]=t[3]*r[3],e}function ap(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e[3]=t[3]/r[3],e}function ex(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e[3]=Math.ceil(t[3]),e}function rx(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e[3]=Math.floor(t[3]),e}function ix(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e[2]=Math.min(t[2],r[2]),e[3]=Math.min(t[3],r[3]),e}function sx(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e[2]=Math.max(t[2],r[2]),e[3]=Math.max(t[3],r[3]),e}function ox(e,t){return e[0]=Ct(t[0]),e[1]=Ct(t[1]),e[2]=Ct(t[2]),e[3]=Ct(t[3]),e}function nx(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e}function ax(e,t,r,i){return e[0]=t[0]+r[0]*i,e[1]=t[1]+r[1]*i,e[2]=t[2]+r[2]*i,e[3]=t[3]+r[3]*i,e}function cp(e,t){let r=t[0]-e[0],i=t[1]-e[1],s=t[2]-e[2],o=t[3]-e[3];return Math.sqrt(r*r+i*i+s*s+o*o)}function lp(e,t){let r=t[0]-e[0],i=t[1]-e[1],s=t[2]-e[2],o=t[3]-e[3];return r*r+i*i+s*s+o*o}function fp(e){let t=e[0],r=e[1],i=e[2],s=e[3];return Math.sqrt(t*t+r*r+i*i+s*s)}function hp(e){let t=e[0],r=e[1],i=e[2],s=e[3];return t*t+r*r+i*i+s*s}function cx(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e}function lx(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e}function fx(e,t){let r=t[0],i=t[1],s=t[2],o=t[3],n=r*r+i*i+s*s+o*o;return n>0&&(n=1/Math.sqrt(n)),e[0]=r*n,e[1]=i*n,e[2]=s*n,e[3]=o*n,e}function hx(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function ux(e,t,r,i){let s=r[0]*i[1]-r[1]*i[0],o=r[0]*i[2]-r[2]*i[0],n=r[0]*i[3]-r[3]*i[0],a=r[1]*i[2]-r[2]*i[1],c=r[1]*i[3]-r[3]*i[1],l=r[2]*i[3]-r[3]*i[2],f=t[0],h=t[1],u=t[2],d=t[3];return e[0]=h*l-u*c+d*a,e[1]=-(f*l)+u*n-d*o,e[2]=f*c-h*n+d*s,e[3]=-(f*a)+h*o-u*s,e}function dx(e,t,r,i){let s=t[0],o=t[1],n=t[2],a=t[3];return e[0]=s+i*(r[0]-s),e[1]=o+i*(r[1]-o),e[2]=n+i*(r[2]-n),e[3]=a+i*(r[3]-a),e}function px(e,t){t=t===void 0?1:t;let r,i,s,o,n,a;do r=Gt()*2-1,i=Gt()*2-1,n=r*r+i*i;while(n>=1);do s=Gt()*2-1,o=Gt()*2-1,a=s*s+o*o;while(a>=1);let c=Math.sqrt((1-n)/a);return e[0]=t*r,e[1]=t*i,e[2]=t*s*c,e[3]=t*o*c,e}function Zl(e,t,r){let i=t[0],s=t[1],o=t[2],n=t[3];return e[0]=r[0]*i+r[4]*s+r[8]*o+r[12]*n,e[1]=r[1]*i+r[5]*s+r[9]*o+r[13]*n,e[2]=r[2]*i+r[6]*s+r[10]*o+r[14]*n,e[3]=r[3]*i+r[7]*s+r[11]*o+r[15]*n,e}function gx(e,t,r){let i=t[0],s=t[1],o=t[2],n=r[0],a=r[1],c=r[2],l=r[3],f=l*i+a*o-c*s,h=l*s+c*i-n*o,u=l*o+n*s-a*i,d=-n*i-a*s-c*o;return e[0]=f*l+d*-n+h*-c-u*-a,e[1]=h*l+d*-a+u*-n-f*-c,e[2]=u*l+d*-c+f*-a-h*-n,e[3]=t[3],e}function mx(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e}function _x(e){return`vec4(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`}function Tx(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]}function yx(e,t){let r=e[0],i=e[1],s=e[2],o=e[3],n=t[0],a=t[1],c=t[2],l=t[3];return Math.abs(r-n)<=1e-6*Math.max(1,Math.abs(r),Math.abs(n))&&Math.abs(i-a)<=1e-6*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(s-c)<=1e-6*Math.max(1,Math.abs(s),Math.abs(c))&&Math.abs(o-l)<=1e-6*Math.max(1,Math.abs(o),Math.abs(l))}var bx=op,xx=np,Ax=ap,Sx=cp,Ex=lp,Rx=fp,wx=hp,Px=function(){let e=sp();return function(t,r,i,s,o,n){let a,c;for(r||(r=4),i||(i=0),s?c=Math.min(s*r+i,t.length):c=t.length,a=i;a<c;a+=r)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],e[3]=t[a+3],o(e,e,n),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2],t[a+3]=e[3];return t}}();var Gl;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"})(Gl||(Gl={}));var Mx=45*Math.PI/180,vx=1,Jl=.1,Ql=500,Cx=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),j=class extends bn{static get IDENTITY(){return Ox()}static get ZERO(){return Ix()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return Gl}constructor(t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this.check()}set(t,r,i,s,o,n,a,c,l,f,h,u,d,p,g,m){return this[0]=t,this[1]=r,this[2]=i,this[3]=s,this[4]=o,this[5]=n,this[6]=a,this[7]=c,this[8]=l,this[9]=f,this[10]=h,this[11]=u,this[12]=d,this[13]=p,this[14]=g,this[15]=m,this.check()}setRowMajor(t,r,i,s,o,n,a,c,l,f,h,u,d,p,g,m){return this[0]=t,this[1]=o,this[2]=l,this[3]=d,this[4]=r,this[5]=n,this[6]=f,this[7]=p,this[8]=i,this[9]=a,this[10]=h,this[11]=g,this[12]=s,this[13]=c,this[14]=u,this[15]=m,this.check()}toRowMajor(t){return t[0]=this[0],t[1]=this[4],t[2]=this[8],t[3]=this[12],t[4]=this[1],t[5]=this[5],t[6]=this[9],t[7]=this[13],t[8]=this[2],t[9]=this[6],t[10]=this[10],t[11]=this[14],t[12]=this[3],t[13]=this[7],t[14]=this[11],t[15]=this[15],t}identity(){return this.copy(Cx)}fromObject(t){return this.check()}fromQuaternion(t){return Xl(this,t),this.check()}frustum(t){let{left:r,right:i,bottom:s,top:o,near:n=Jl,far:a=Ql}=t;return a===1/0?Nx(this,r,i,s,o,n):$l(this,r,i,s,o,n,a),this.check()}lookAt(t){let{eye:r,center:i=[0,0,0],up:s=[0,1,0]}=t;return ql(this,r,i,s),this.check()}ortho(t){let{left:r,right:i,bottom:s,top:o,near:n=Jl,far:a=Ql}=t;return Kl(this,r,i,s,o,n,a),this.check()}orthographic(t){let{fovy:r=Mx,aspect:i=vx,focalDistance:s=1,near:o=Jl,far:n=Ql}=t;up(r);let a=r/2,c=s*Math.tan(a),l=c*i;return this.ortho({left:-l,right:l,bottom:-c,top:c,near:o,far:n})}perspective(t){let{fovy:r=45*Math.PI/180,aspect:i=1,near:s=.1,far:o=500}=t;return up(r),Yl(this,r,i,s,o),this.check()}determinant(){return Ul(this)}getScale(t=[-0,-0,-0]){return t[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),t[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),t[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),t}getTranslation(t=[-0,-0,-0]){return t[0]=this[12],t[1]=this[13],t[2]=this[14],t}getRotation(t,r){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let i=this.getScale(r),s=1/i[0],o=1/i[1],n=1/i[2];return t[0]=this[0]*s,t[1]=this[1]*o,t[2]=this[2]*n,t[3]=0,t[4]=this[4]*s,t[5]=this[5]*o,t[6]=this[6]*n,t[7]=0,t[8]=this[8]*s,t[9]=this[9]*o,t[10]=this[10]*n,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}getRotationMatrix3(t,r){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let i=this.getScale(r),s=1/i[0],o=1/i[1],n=1/i[2];return t[0]=this[0]*s,t[1]=this[1]*o,t[2]=this[2]*n,t[3]=this[4]*s,t[4]=this[5]*o,t[5]=this[6]*n,t[6]=this[8]*s,t[7]=this[9]*o,t[8]=this[10]*n,t}transpose(){return Bl(this,this),this.check()}invert(){return Ll(this,this),this.check()}multiplyLeft(t){return os(this,t,this),this.check()}multiplyRight(t){return os(this,this,t),this.check()}rotateX(t){return jl(this,this,t),this.check()}rotateY(t){return Wl(this,this,t),this.check()}rotateZ(t){return Hl(this,this,t),this.check()}rotateXYZ(t){return this.rotateX(t[0]).rotateY(t[1]).rotateZ(t[2])}rotateAxis(t,r){return zl(this,this,t,r),this.check()}scale(t){return Vl(this,this,Array.isArray(t)?t:[t,t,t]),this.check()}translate(t){return kl(this,this,t),this.check()}transform(t,r){return t.length===4?(r=Zl(r||[-0,-0,-0,-0],t,this),pn(r,4),r):this.transformAsPoint(t,r)}transformAsPoint(t,r){let{length:i}=t,s;switch(i){case 2:s=wl(r||[-0,-0],t,this);break;case 3:s=ss(r||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return pn(s,t.length),s}transformAsVector(t,r){let i;switch(t.length){case 2:i=Wd(r||[-0,-0],t,this);break;case 3:i=_n(r||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return pn(i,t.length),i}transformPoint(t,r){return this.transformAsPoint(t,r)}transformVector(t,r){return this.transformAsPoint(t,r)}transformDirection(t,r){return this.transformAsVector(t,r)}makeRotationX(t){return this.identity().rotateX(t)}makeTranslation(t,r,i){return this.identity().translate([t,r,i])}},xn,An;function Ix(){return xn||(xn=new j([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(xn)),xn}function Ox(){return An||(An=new j,Object.freeze(An)),An}function up(e){if(e>Math.PI*2)throw Error("expected radians")}function Nx(e,t,r,i,s,o){let n=2*o/(r-t),a=2*o/(s-i),c=(r+t)/(r-t),l=(s+i)/(s-i),f=-1,h=-1,u=-2*o;return e[0]=n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=c,e[9]=l,e[10]=f,e[11]=h,e[12]=0,e[13]=0,e[14]=u,e[15]=0,e}var dp=1e-6,Dx=6371e3,Lt=class{constructor({phi:t=0,theta:r=0,radius:i=1,bearing:s,pitch:o,altitude:n,radiusScale:a=Dx}={}){this.phi=t,this.theta=r,this.radius=i||n||1,this.radiusScale=a||1,s!==void 0&&(this.bearing=s),o!==void 0&&(this.pitch=o),this.check()}toString(){return this.formatString(et)}formatString({printTypes:t=!1}){let r=is;return`${t?"Spherical":""}[rho:${r(this.radius)},theta:${r(this.theta)},phi:${r(this.phi)}]`}equals(t){return xt(this.radius,t.radius)&&xt(this.theta,t.theta)&&xt(this.phi,t.phi)}exactEquals(t){return this.radius===t.radius&&this.theta===t.theta&&this.phi===t.phi}get bearing(){return 180-We(this.phi)}set bearing(t){this.phi=Math.PI-ai(t)}get pitch(){return We(this.theta)}set pitch(t){this.theta=ai(t)}get longitude(){return We(this.phi)}get latitude(){return We(this.theta)}get lng(){return We(this.phi)}get lat(){return We(this.theta)}get z(){return(this.radius-1)*this.radiusScale}set(t,r,i){return this.radius=t,this.phi=r,this.theta=i,this.check()}clone(){return new Lt().copy(this)}copy(t){return this.radius=t.radius,this.phi=t.phi,this.theta=t.theta,this.check()}fromLngLatZ([t,r,i]){return this.radius=1+i/this.radiusScale,this.phi=ai(r),this.theta=ai(t),this.check()}fromVector3(t){return this.radius=Tn(t),this.radius>0&&(this.theta=Math.atan2(t[0],t[1]),this.phi=Math.acos(H(t[2]/this.radius,-1,1))),this.check()}toVector3(){return new z(0,0,this.radius).rotateX({radians:this.theta}).rotateZ({radians:this.phi})}makeSafe(){return this.phi=Math.max(dp,Math.min(Math.PI-dp,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}};function tf(e,t=[],r=0){let i=Math.fround(e),s=e-i;return t[r]=i,t[r+1]=s,t}function pp(e){return e-Math.fround(e)}function gp(e){let t=new Float32Array(32);for(let r=0;r<4;++r)for(let i=0;i<4;++i){let s=r*4+i;tf(e[i*4+r],t,s*2)}return t}var Fx=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND
107
+ }`}function cb(t){switch(t){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error(`invalid channels: ${t}`)}}function _p(t,e){switch(e){case 1:return`vec4(${t}, 0.0, 0.0, 1.0)`;case 2:return`vec4(${t}, 0.0, 1.0)`;case 3:return`vec4(${t}, 1.0)`;case 4:return t;default:throw new Error(`invalid channels: ${e}`)}}var lb=1/Math.PI*180,fb=1/180*Math.PI,hb={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...hb}};var te=globalThis.mathgl.config;function cs(t,{precision:e=te.precision}={}){return t=ub(t),`${parseFloat(t.toPrecision(e))}`}function Pt(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function hi(t,e){return Wl(t,r=>r*fb,e)}function Qt(t,e){return Wl(t,r=>r*lb,e)}function B(t,e,r){return Wl(t,i=>Math.max(e,Math.min(r,i)))}function vt(t,e,r){return Pt(t)?t.map((i,s)=>vt(i,e[s],r)):r*e+(1-r)*t}function Re(t,e,r){let i=te.EPSILON;r&&(te.EPSILON=r);try{if(t===e)return!0;if(Pt(t)&&Pt(e)){if(t.length!==e.length)return!1;for(let s=0;s<t.length;++s)if(!Re(t[s],e[s]))return!1;return!0}return t&&t.equals?t.equals(e):e&&e.equals?e.equals(t):typeof t=="number"&&typeof e=="number"?Math.abs(t-e)<=te.EPSILON*Math.max(1,Math.abs(t),Math.abs(e)):!1}finally{te.EPSILON=i}}function ub(t){return Math.round(t/te.EPSILON)*te.EPSILON}function db(t){return t.clone?t.clone():new Array(t.length)}function Wl(t,e,r){if(Pt(t)){let i=t;r=r||db(i);for(let s=0;s<r.length&&s<i.length;++s){let o=typeof t=="number"?t:t[s];r[s]=e(o,s,r)}return r}return e(t)}var ui=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,r=0){for(let i=0;i<this.ELEMENTS;++i)this[i]=e[i+r];return this.check()}toArray(e=[],r=0){for(let i=0;i<this.ELEMENTS;++i)e[r+i]=this[i];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:Pt(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(te)}formatString(e){let r="";for(let i=0;i<this.ELEMENTS;++i)r+=(i>0?", ":"")+cs(this[i],e);return`${e.printTypes?this.constructor.name:""}[${r}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(!Re(this[r],e[r]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(this[r]!==e[r])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,r,i){if(i===void 0)return this.lerp(this,e,r);for(let s=0;s<this.ELEMENTS;++s){let o=e[s],n=typeof r=="number"?r:r[s];this[s]=o+i*(n-o)}return this.check()}min(e){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(e[r],this[r]);return this.check()}max(e){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.max(e[r],this[r]);return this.check()}clamp(e,r){for(let i=0;i<this.ELEMENTS;++i)this[i]=Math.min(Math.max(this[i],e[i]),r[i]);return this.check()}add(...e){for(let r of e)for(let i=0;i<this.ELEMENTS;++i)this[i]+=r[i];return this.check()}subtract(...e){for(let r of e)for(let i=0;i<this.ELEMENTS;++i)this[i]-=r[i];return this.check()}scale(e){if(typeof e=="number")for(let r=0;r<this.ELEMENTS;++r)this[r]*=e;else for(let r=0;r<this.ELEMENTS&&r<e.length;++r)this[r]*=e[r];return this.check()}multiplyByScalar(e){for(let r=0;r<this.ELEMENTS;++r)this[r]*=e;return this.check()}check(){if(te.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let r=0;r<this.ELEMENTS;++r)e=e&&Number.isFinite(this[r]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let r=0;r<this.ELEMENTS;++r)this[r]=e;return this.check()}addScalar(e){for(let r=0;r<this.ELEMENTS;++r)this[r]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let r=0;r<this.ELEMENTS;++r)this[r]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,r){for(let i=0;i<this.ELEMENTS;++i)this[i]=Math.min(Math.max(this[i],e),r);return this.check()}get elements(){return this}};function pb(t,e){if(t.length!==e)return!1;for(let r=0;r<t.length;++r)if(!Number.isFinite(t[r]))return!1;return!0}function fe(t){if(!Number.isFinite(t))throw new Error(`Invalid number ${JSON.stringify(t)}`);return t}function yn(t,e,r=""){if(te.debug&&!pb(t,e))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return t}function jl(t,e){if(!t)throw new Error(`math.gl assertion ${e}`)}var Tn=class extends ui{get x(){return this[0]}set x(e){this[0]=fe(e)}get y(){return this[1]}set y(e){this[1]=fe(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let r=0;r<this.ELEMENTS;++r)e+=this[r]*this[r];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let r=0;for(let i=0;i<this.ELEMENTS;++i){let s=this[i]-e[i];r+=s*s}return fe(r)}dot(e){let r=0;for(let i=0;i<this.ELEMENTS;++i)r+=this[i]*e[i];return fe(r)}normalize(){let e=this.magnitude();if(e!==0)for(let r=0;r<this.ELEMENTS;++r)this[r]/=e;return this.check()}multiply(...e){for(let r of e)for(let i=0;i<this.ELEMENTS;++i)this[i]*=r[i];return this.check()}divide(...e){for(let r of e)for(let i=0;i<this.ELEMENTS;++i)this[i]/=r[i];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return jl(e>=0&&e<this.ELEMENTS,"index is out of range"),fe(this[e])}setComponent(e,r){return jl(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=r,this.check()}addVectors(e,r){return this.copy(e).add(r)}subVectors(e,r){return this.copy(e).subtract(r)}multiplyVectors(e,r){return this.copy(e).multiply(r)}addScaledVector(e,r){return this.add(new this.constructor(e).multiplyScalar(r))}};var ee={};At(ee,{add:()=>Tb,angle:()=>Ub,ceil:()=>bb,clone:()=>gb,copy:()=>_b,create:()=>yp,cross:()=>Ib,dist:()=>Yb,distance:()=>Ap,div:()=>Xb,divide:()=>xp,dot:()=>Cb,equals:()=>Wb,exactEquals:()=>zb,floor:()=>xb,forEach:()=>qb,fromValues:()=>mb,inverse:()=>vb,len:()=>jb,length:()=>Ep,lerp:()=>Ob,max:()=>Sb,min:()=>Ab,mul:()=>$b,multiply:()=>bp,negate:()=>Pb,normalize:()=>Mb,random:()=>Nb,rotate:()=>Lb,round:()=>Eb,scale:()=>wb,scaleAndAdd:()=>Rb,set:()=>yb,sqrDist:()=>Zb,sqrLen:()=>Kb,squaredDistance:()=>Sp,squaredLength:()=>wp,str:()=>Vb,sub:()=>Hb,subtract:()=>Tp,transformMat2:()=>Db,transformMat2d:()=>Fb,transformMat3:()=>Bb,transformMat4:()=>Hl,zero:()=>kb});var q=typeof Float32Array<"u"?Float32Array:Array,it=Math.random;function De(t){return t>=0?Math.round(t):t%.5===0?Math.floor(t):Math.round(t)}var AI=Math.PI/180;function yp(){let t=new q(2);return q!=Float32Array&&(t[0]=0,t[1]=0),t}function gb(t){let e=new q(2);return e[0]=t[0],e[1]=t[1],e}function mb(t,e){let r=new q(2);return r[0]=t,r[1]=e,r}function _b(t,e){return t[0]=e[0],t[1]=e[1],t}function yb(t,e,r){return t[0]=e,t[1]=r,t}function Tb(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function Tp(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function bp(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}function xp(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}function bb(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t}function xb(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t}function Ab(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t}function Sb(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t}function Eb(t,e){return t[0]=De(e[0]),t[1]=De(e[1]),t}function wb(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function Rb(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t}function Ap(t,e){let r=e[0]-t[0],i=e[1]-t[1];return Math.sqrt(r*r+i*i)}function Sp(t,e){let r=e[0]-t[0],i=e[1]-t[1];return r*r+i*i}function Ep(t){let e=t[0],r=t[1];return Math.sqrt(e*e+r*r)}function wp(t){let e=t[0],r=t[1];return e*e+r*r}function Pb(t,e){return t[0]=-e[0],t[1]=-e[1],t}function vb(t,e){return t[0]=1/e[0],t[1]=1/e[1],t}function Mb(t,e){let r=e[0],i=e[1],s=r*r+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t}function Cb(t,e){return t[0]*e[0]+t[1]*e[1]}function Ib(t,e,r){let i=e[0]*r[1]-e[1]*r[0];return t[0]=t[1]=0,t[2]=i,t}function Ob(t,e,r,i){let s=e[0],o=e[1];return t[0]=s+i*(r[0]-s),t[1]=o+i*(r[1]-o),t}function Nb(t,e){e=e===void 0?1:e;let r=it()*2*Math.PI;return t[0]=Math.cos(r)*e,t[1]=Math.sin(r)*e,t}function Db(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[2]*s,t[1]=r[1]*i+r[3]*s,t}function Fb(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[2]*s+r[4],t[1]=r[1]*i+r[3]*s+r[5],t}function Bb(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[3]*s+r[6],t[1]=r[1]*i+r[4]*s+r[7],t}function Hl(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[4]*s+r[12],t[1]=r[1]*i+r[5]*s+r[13],t}function Lb(t,e,r,i){let s=e[0]-r[0],o=e[1]-r[1],n=Math.sin(i),a=Math.cos(i);return t[0]=s*a-o*n+r[0],t[1]=s*n+o*a+r[1],t}function Ub(t,e){let r=t[0],i=t[1],s=e[0],o=e[1],n=Math.sqrt((r*r+i*i)*(s*s+o*o)),a=n&&(r*s+i*o)/n;return Math.acos(Math.min(Math.max(a,-1),1))}function kb(t){return t[0]=0,t[1]=0,t}function Vb(t){return`vec2(${t[0]}, ${t[1]})`}function zb(t,e){return t[0]===e[0]&&t[1]===e[1]}function Wb(t,e){let r=t[0],i=t[1],s=e[0],o=e[1];return Math.abs(r-s)<=1e-6*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=1e-6*Math.max(1,Math.abs(i),Math.abs(o))}var jb=Ep,Hb=Tp,$b=bp,Xb=xp,Yb=Ap,Zb=Sp,Kb=wp,qb=function(){let t=yp();return function(e,r,i,s,o,n){let a,c;for(r||(r=2),i||(i=0),s?c=Math.min(s*r+i,e.length):c=e.length,a=i;a<c;a+=r)t[0]=e[a],t[1]=e[a+1],o(t,t,n),e[a]=t[0],e[a+1]=t[1];return e}}();function Rp(t,e,r){let i=e[0],s=e[1],o=r[3]*i+r[7]*s||1;return t[0]=(r[0]*i+r[4]*s)/o,t[1]=(r[1]*i+r[5]*s)/o,t}function xn(t,e,r){let i=e[0],s=e[1],o=e[2],n=r[3]*i+r[7]*s+r[11]*o||1;return t[0]=(r[0]*i+r[4]*s+r[8]*o)/n,t[1]=(r[1]*i+r[5]*s+r[9]*o)/n,t[2]=(r[2]*i+r[6]*s+r[10]*o)/n,t}function Pp(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[2]*s,t[1]=r[1]*i+r[3]*s,t[2]=e[2],t}var pe={};At(pe,{add:()=>tx,angle:()=>Gl,bezier:()=>gx,ceil:()=>rx,clone:()=>Qb,copy:()=>Jb,create:()=>vp,cross:()=>Xl,dist:()=>Ex,distance:()=>Op,div:()=>Sx,divide:()=>Ip,dot:()=>$l,equals:()=>bx,exactEquals:()=>Tx,floor:()=>ix,forEach:()=>vx,fromValues:()=>Gb,hermite:()=>px,inverse:()=>fx,len:()=>Rx,length:()=>An,lerp:()=>ux,max:()=>ox,min:()=>sx,mul:()=>Ax,multiply:()=>Cp,negate:()=>lx,normalize:()=>hx,random:()=>mx,rotateX:()=>Kl,rotateY:()=>ql,rotateZ:()=>Ql,round:()=>nx,scale:()=>ax,scaleAndAdd:()=>cx,set:()=>ex,slerp:()=>dx,sqrDist:()=>wx,sqrLen:()=>Px,squaredDistance:()=>Np,squaredLength:()=>Dp,str:()=>yx,sub:()=>xx,subtract:()=>Mp,transformMat3:()=>Yl,transformMat4:()=>ls,transformQuat:()=>Zl,zero:()=>_x});function vp(){let t=new q(3);return q!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function Qb(t){let e=new q(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function An(t){let e=t[0],r=t[1],i=t[2];return Math.sqrt(e*e+r*r+i*i)}function Gb(t,e,r){let i=new q(3);return i[0]=t,i[1]=e,i[2]=r,i}function Jb(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function ex(t,e,r,i){return t[0]=e,t[1]=r,t[2]=i,t}function tx(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function Mp(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function Cp(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function Ip(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function rx(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}function ix(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}function sx(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}function ox(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function nx(t,e){return t[0]=De(e[0]),t[1]=De(e[1]),t[2]=De(e[2]),t}function ax(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function cx(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t[2]=e[2]+r[2]*i,t}function Op(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2];return Math.sqrt(r*r+i*i+s*s)}function Np(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2];return r*r+i*i+s*s}function Dp(t){let e=t[0],r=t[1],i=t[2];return e*e+r*r+i*i}function lx(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function fx(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function hx(t,e){let r=e[0],i=e[1],s=e[2],o=r*r+i*i+s*s;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t[2]=e[2]*o,t}function $l(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Xl(t,e,r){let i=e[0],s=e[1],o=e[2],n=r[0],a=r[1],c=r[2];return t[0]=s*c-o*a,t[1]=o*n-i*c,t[2]=i*a-s*n,t}function ux(t,e,r,i){let s=e[0],o=e[1],n=e[2];return t[0]=s+i*(r[0]-s),t[1]=o+i*(r[1]-o),t[2]=n+i*(r[2]-n),t}function dx(t,e,r,i){let s=Math.acos(Math.min(Math.max($l(e,r),-1),1)),o=Math.sin(s),n=Math.sin((1-i)*s)/o,a=Math.sin(i*s)/o;return t[0]=n*e[0]+a*r[0],t[1]=n*e[1]+a*r[1],t[2]=n*e[2]+a*r[2],t}function px(t,e,r,i,s,o){let n=o*o,a=n*(2*o-3)+1,c=n*(o-2)+o,l=n*(o-1),f=n*(3-2*o);return t[0]=e[0]*a+r[0]*c+i[0]*l+s[0]*f,t[1]=e[1]*a+r[1]*c+i[1]*l+s[1]*f,t[2]=e[2]*a+r[2]*c+i[2]*l+s[2]*f,t}function gx(t,e,r,i,s,o){let n=1-o,a=n*n,c=o*o,l=a*n,f=3*o*a,h=3*c*n,u=c*o;return t[0]=e[0]*l+r[0]*f+i[0]*h+s[0]*u,t[1]=e[1]*l+r[1]*f+i[1]*h+s[1]*u,t[2]=e[2]*l+r[2]*f+i[2]*h+s[2]*u,t}function mx(t,e){e=e===void 0?1:e;let r=it()*2*Math.PI,i=it()*2-1,s=Math.sqrt(1-i*i)*e;return t[0]=Math.cos(r)*s,t[1]=Math.sin(r)*s,t[2]=i*e,t}function ls(t,e,r){let i=e[0],s=e[1],o=e[2],n=r[3]*i+r[7]*s+r[11]*o+r[15];return n=n||1,t[0]=(r[0]*i+r[4]*s+r[8]*o+r[12])/n,t[1]=(r[1]*i+r[5]*s+r[9]*o+r[13])/n,t[2]=(r[2]*i+r[6]*s+r[10]*o+r[14])/n,t}function Yl(t,e,r){let i=e[0],s=e[1],o=e[2];return t[0]=i*r[0]+s*r[3]+o*r[6],t[1]=i*r[1]+s*r[4]+o*r[7],t[2]=i*r[2]+s*r[5]+o*r[8],t}function Zl(t,e,r){let i=r[0],s=r[1],o=r[2],n=r[3],a=e[0],c=e[1],l=e[2],f=s*l-o*c,h=o*a-i*l,u=i*c-s*a,d=s*u-o*h,p=o*f-i*u,g=i*h-s*f,m=n*2;return f*=m,h*=m,u*=m,d*=2,p*=2,g*=2,t[0]=a+f+d,t[1]=c+h+p,t[2]=l+u+g,t}function Kl(t,e,r,i){let s=[],o=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],o[0]=s[0],o[1]=s[1]*Math.cos(i)-s[2]*Math.sin(i),o[2]=s[1]*Math.sin(i)+s[2]*Math.cos(i),t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function ql(t,e,r,i){let s=[],o=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],o[0]=s[2]*Math.sin(i)+s[0]*Math.cos(i),o[1]=s[1],o[2]=s[2]*Math.cos(i)-s[0]*Math.sin(i),t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function Ql(t,e,r,i){let s=[],o=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],o[0]=s[0]*Math.cos(i)-s[1]*Math.sin(i),o[1]=s[0]*Math.sin(i)+s[1]*Math.cos(i),o[2]=s[2],t[0]=o[0]+r[0],t[1]=o[1]+r[1],t[2]=o[2]+r[2],t}function Gl(t,e){let r=t[0],i=t[1],s=t[2],o=e[0],n=e[1],a=e[2],c=Math.sqrt((r*r+i*i+s*s)*(o*o+n*n+a*a)),l=c&&$l(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function _x(t){return t[0]=0,t[1]=0,t[2]=0,t}function yx(t){return`vec3(${t[0]}, ${t[1]}, ${t[2]})`}function Tx(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function bx(t,e){let r=t[0],i=t[1],s=t[2],o=e[0],n=e[1],a=e[2];return Math.abs(r-o)<=1e-6*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-n)<=1e-6*Math.max(1,Math.abs(i),Math.abs(n))&&Math.abs(s-a)<=1e-6*Math.max(1,Math.abs(s),Math.abs(a))}var xx=Mp,Ax=Cp,Sx=Ip,Ex=Op,wx=Np,Rx=An,Px=Dp,vx=function(){let t=vp();return function(e,r,i,s,o,n){let a,c;for(r||(r=3),i||(i=0),s?c=Math.min(s*r+i,e.length):c=e.length,a=i;a<c;a+=r)t[0]=e[a],t[1]=e[a+1],t[2]=e[a+2],o(t,t,n),e[a]=t[0],e[a+1]=t[1],e[a+2]=t[2];return e}}();var Jl=[0,0,0],Sn,H=class extends Tn{static get ZERO(){return Sn||(Sn=new H(0,0,0),Object.freeze(Sn)),Sn}constructor(e=0,r=0,i=0){super(-0,-0,-0),arguments.length===1&&Pt(e)?this.copy(e):(te.debug&&(fe(e),fe(r),fe(i)),this[0]=e,this[1]=r,this[2]=i)}set(e,r,i){return this[0]=e,this[1]=r,this[2]=i,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return te.debug&&(fe(e.x),fe(e.y),fe(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=fe(e)}angle(e){return Gl(this,e)}cross(e){return Xl(this,this,e),this.check()}rotateX({radians:e,origin:r=Jl}){return Kl(this,this,r,e),this.check()}rotateY({radians:e,origin:r=Jl}){return ql(this,this,r,e),this.check()}rotateZ({radians:e,origin:r=Jl}){return Ql(this,this,r,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return ls(this,this,e),this.check()}transformAsVector(e){return xn(this,this,e),this.check()}transformByMatrix3(e){return Yl(this,this,e),this.check()}transformByMatrix2(e){return Pp(this,this,e),this.check()}transformByQuaternion(e){return Zl(this,this,e),this.check()}};var En=class extends ui{toString(){let e="[";if(te.printRowMajor){e+="row-major:";for(let r=0;r<this.RANK;++r)for(let i=0;i<this.RANK;++i)e+=` ${this[i*this.RANK+r]}`}else{e+="column-major:";for(let r=0;r<this.ELEMENTS;++r)e+=` ${this[r]}`}return e+="]",e}getElementIndex(e,r){return r*this.RANK+e}getElement(e,r){return this[r*this.RANK+e]}setElement(e,r,i){return this[r*this.RANK+e]=fe(i),this}getColumn(e,r=new Array(this.RANK).fill(-0)){let i=e*this.RANK;for(let s=0;s<this.RANK;++s)r[s]=this[i+s];return r}setColumn(e,r){let i=e*this.RANK;for(let s=0;s<this.RANK;++s)this[i+s]=r[s];return this}};var re={};At(re,{add:()=>Jx,adjoint:()=>Dx,clone:()=>Cx,copy:()=>Ix,create:()=>Mx,decompose:()=>Hx,determinant:()=>rf,equals:()=>i1,exactEquals:()=>r1,frob:()=>Gx,fromQuat:()=>ff,fromQuat2:()=>zx,fromRotation:()=>Lx,fromRotationTranslation:()=>Bp,fromRotationTranslationScale:()=>$x,fromRotationTranslationScaleOrigin:()=>Xx,fromScaling:()=>Bx,fromTranslation:()=>Fx,fromValues:()=>Ox,fromXRotation:()=>Ux,fromYRotation:()=>kx,fromZRotation:()=>Vx,frustum:()=>hf,getRotation:()=>jx,getScaling:()=>Lp,getTranslation:()=>Wx,identity:()=>Fp,invert:()=>tf,lookAt:()=>pf,mul:()=>s1,multiply:()=>fs,multiplyScalar:()=>e1,multiplyScalarAndAdd:()=>t1,ortho:()=>df,orthoNO:()=>kp,orthoZO:()=>Kx,perspective:()=>uf,perspectiveFromFieldOfView:()=>Zx,perspectiveNO:()=>Up,perspectiveZO:()=>Yx,rotate:()=>nf,rotateX:()=>af,rotateY:()=>cf,rotateZ:()=>lf,scale:()=>of,set:()=>Nx,str:()=>Qx,sub:()=>o1,subtract:()=>Vp,targetTo:()=>qx,translate:()=>sf,transpose:()=>ef});function Mx(){let t=new q(16);return q!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function Cx(t){let e=new q(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Ix(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Ox(t,e,r,i,s,o,n,a,c,l,f,h,u,d,p,g){let m=new q(16);return m[0]=t,m[1]=e,m[2]=r,m[3]=i,m[4]=s,m[5]=o,m[6]=n,m[7]=a,m[8]=c,m[9]=l,m[10]=f,m[11]=h,m[12]=u,m[13]=d,m[14]=p,m[15]=g,m}function Nx(t,e,r,i,s,o,n,a,c,l,f,h,u,d,p,g,m){return t[0]=e,t[1]=r,t[2]=i,t[3]=s,t[4]=o,t[5]=n,t[6]=a,t[7]=c,t[8]=l,t[9]=f,t[10]=h,t[11]=u,t[12]=d,t[13]=p,t[14]=g,t[15]=m,t}function Fp(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function ef(t,e){if(t===e){let r=e[1],i=e[2],s=e[3],o=e[6],n=e[7],a=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=i,t[9]=o,t[11]=e[14],t[12]=s,t[13]=n,t[14]=a}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function tf(t,e){let r=e[0],i=e[1],s=e[2],o=e[3],n=e[4],a=e[5],c=e[6],l=e[7],f=e[8],h=e[9],u=e[10],d=e[11],p=e[12],g=e[13],m=e[14],_=e[15],T=r*a-i*n,y=r*c-s*n,x=r*l-o*n,S=i*c-s*a,A=i*l-o*a,w=s*l-o*c,v=f*g-h*p,R=f*m-u*p,M=f*_-d*p,I=h*m-u*g,C=h*_-d*g,W=u*_-d*m,V=T*W-y*C+x*I+S*M-A*R+w*v;return V?(V=1/V,t[0]=(a*W-c*C+l*I)*V,t[1]=(s*C-i*W-o*I)*V,t[2]=(g*w-m*A+_*S)*V,t[3]=(u*A-h*w-d*S)*V,t[4]=(c*M-n*W-l*R)*V,t[5]=(r*W-s*M+o*R)*V,t[6]=(m*x-p*w-_*y)*V,t[7]=(f*w-u*x+d*y)*V,t[8]=(n*C-a*M+l*v)*V,t[9]=(i*M-r*C-o*v)*V,t[10]=(p*A-g*x+_*T)*V,t[11]=(h*x-f*A-d*T)*V,t[12]=(a*R-n*I-c*v)*V,t[13]=(r*I-i*R+s*v)*V,t[14]=(g*y-p*S-m*T)*V,t[15]=(f*S-h*y+u*T)*V,t):null}function Dx(t,e){let r=e[0],i=e[1],s=e[2],o=e[3],n=e[4],a=e[5],c=e[6],l=e[7],f=e[8],h=e[9],u=e[10],d=e[11],p=e[12],g=e[13],m=e[14],_=e[15],T=r*a-i*n,y=r*c-s*n,x=r*l-o*n,S=i*c-s*a,A=i*l-o*a,w=s*l-o*c,v=f*g-h*p,R=f*m-u*p,M=f*_-d*p,I=h*m-u*g,C=h*_-d*g,W=u*_-d*m;return t[0]=a*W-c*C+l*I,t[1]=s*C-i*W-o*I,t[2]=g*w-m*A+_*S,t[3]=u*A-h*w-d*S,t[4]=c*M-n*W-l*R,t[5]=r*W-s*M+o*R,t[6]=m*x-p*w-_*y,t[7]=f*w-u*x+d*y,t[8]=n*C-a*M+l*v,t[9]=i*M-r*C-o*v,t[10]=p*A-g*x+_*T,t[11]=h*x-f*A-d*T,t[12]=a*R-n*I-c*v,t[13]=r*I-i*R+s*v,t[14]=g*y-p*S-m*T,t[15]=f*S-h*y+u*T,t}function rf(t){let e=t[0],r=t[1],i=t[2],s=t[3],o=t[4],n=t[5],a=t[6],c=t[7],l=t[8],f=t[9],h=t[10],u=t[11],d=t[12],p=t[13],g=t[14],m=t[15],_=e*n-r*o,T=e*a-i*o,y=r*a-i*n,x=l*p-f*d,S=l*g-h*d,A=f*g-h*p,w=e*A-r*S+i*x,v=o*A-n*S+a*x,R=l*y-f*T+h*_,M=d*y-p*T+g*_;return c*w-s*v+m*R-u*M}function fs(t,e,r){let i=e[0],s=e[1],o=e[2],n=e[3],a=e[4],c=e[5],l=e[6],f=e[7],h=e[8],u=e[9],d=e[10],p=e[11],g=e[12],m=e[13],_=e[14],T=e[15],y=r[0],x=r[1],S=r[2],A=r[3];return t[0]=y*i+x*a+S*h+A*g,t[1]=y*s+x*c+S*u+A*m,t[2]=y*o+x*l+S*d+A*_,t[3]=y*n+x*f+S*p+A*T,y=r[4],x=r[5],S=r[6],A=r[7],t[4]=y*i+x*a+S*h+A*g,t[5]=y*s+x*c+S*u+A*m,t[6]=y*o+x*l+S*d+A*_,t[7]=y*n+x*f+S*p+A*T,y=r[8],x=r[9],S=r[10],A=r[11],t[8]=y*i+x*a+S*h+A*g,t[9]=y*s+x*c+S*u+A*m,t[10]=y*o+x*l+S*d+A*_,t[11]=y*n+x*f+S*p+A*T,y=r[12],x=r[13],S=r[14],A=r[15],t[12]=y*i+x*a+S*h+A*g,t[13]=y*s+x*c+S*u+A*m,t[14]=y*o+x*l+S*d+A*_,t[15]=y*n+x*f+S*p+A*T,t}function sf(t,e,r){let i=r[0],s=r[1],o=r[2],n,a,c,l,f,h,u,d,p,g,m,_;return e===t?(t[12]=e[0]*i+e[4]*s+e[8]*o+e[12],t[13]=e[1]*i+e[5]*s+e[9]*o+e[13],t[14]=e[2]*i+e[6]*s+e[10]*o+e[14],t[15]=e[3]*i+e[7]*s+e[11]*o+e[15]):(n=e[0],a=e[1],c=e[2],l=e[3],f=e[4],h=e[5],u=e[6],d=e[7],p=e[8],g=e[9],m=e[10],_=e[11],t[0]=n,t[1]=a,t[2]=c,t[3]=l,t[4]=f,t[5]=h,t[6]=u,t[7]=d,t[8]=p,t[9]=g,t[10]=m,t[11]=_,t[12]=n*i+f*s+p*o+e[12],t[13]=a*i+h*s+g*o+e[13],t[14]=c*i+u*s+m*o+e[14],t[15]=l*i+d*s+_*o+e[15]),t}function of(t,e,r){let i=r[0],s=r[1],o=r[2];return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3]*i,t[4]=e[4]*s,t[5]=e[5]*s,t[6]=e[6]*s,t[7]=e[7]*s,t[8]=e[8]*o,t[9]=e[9]*o,t[10]=e[10]*o,t[11]=e[11]*o,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function nf(t,e,r,i){let s=i[0],o=i[1],n=i[2],a=Math.sqrt(s*s+o*o+n*n),c,l,f,h,u,d,p,g,m,_,T,y,x,S,A,w,v,R,M,I,C,W,V,J;return a<1e-6?null:(a=1/a,s*=a,o*=a,n*=a,l=Math.sin(r),c=Math.cos(r),f=1-c,h=e[0],u=e[1],d=e[2],p=e[3],g=e[4],m=e[5],_=e[6],T=e[7],y=e[8],x=e[9],S=e[10],A=e[11],w=s*s*f+c,v=o*s*f+n*l,R=n*s*f-o*l,M=s*o*f-n*l,I=o*o*f+c,C=n*o*f+s*l,W=s*n*f+o*l,V=o*n*f-s*l,J=n*n*f+c,t[0]=h*w+g*v+y*R,t[1]=u*w+m*v+x*R,t[2]=d*w+_*v+S*R,t[3]=p*w+T*v+A*R,t[4]=h*M+g*I+y*C,t[5]=u*M+m*I+x*C,t[6]=d*M+_*I+S*C,t[7]=p*M+T*I+A*C,t[8]=h*W+g*V+y*J,t[9]=u*W+m*V+x*J,t[10]=d*W+_*V+S*J,t[11]=p*W+T*V+A*J,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function af(t,e,r){let i=Math.sin(r),s=Math.cos(r),o=e[4],n=e[5],a=e[6],c=e[7],l=e[8],f=e[9],h=e[10],u=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=o*s+l*i,t[5]=n*s+f*i,t[6]=a*s+h*i,t[7]=c*s+u*i,t[8]=l*s-o*i,t[9]=f*s-n*i,t[10]=h*s-a*i,t[11]=u*s-c*i,t}function cf(t,e,r){let i=Math.sin(r),s=Math.cos(r),o=e[0],n=e[1],a=e[2],c=e[3],l=e[8],f=e[9],h=e[10],u=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*s-l*i,t[1]=n*s-f*i,t[2]=a*s-h*i,t[3]=c*s-u*i,t[8]=o*i+l*s,t[9]=n*i+f*s,t[10]=a*i+h*s,t[11]=c*i+u*s,t}function lf(t,e,r){let i=Math.sin(r),s=Math.cos(r),o=e[0],n=e[1],a=e[2],c=e[3],l=e[4],f=e[5],h=e[6],u=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=o*s+l*i,t[1]=n*s+f*i,t[2]=a*s+h*i,t[3]=c*s+u*i,t[4]=l*s-o*i,t[5]=f*s-n*i,t[6]=h*s-a*i,t[7]=u*s-c*i,t}function Fx(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}function Bx(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Lx(t,e,r){let i=r[0],s=r[1],o=r[2],n=Math.sqrt(i*i+s*s+o*o),a,c,l;return n<1e-6?null:(n=1/n,i*=n,s*=n,o*=n,c=Math.sin(e),a=Math.cos(e),l=1-a,t[0]=i*i*l+a,t[1]=s*i*l+o*c,t[2]=o*i*l-s*c,t[3]=0,t[4]=i*s*l-o*c,t[5]=s*s*l+a,t[6]=o*s*l+i*c,t[7]=0,t[8]=i*o*l+s*c,t[9]=s*o*l-i*c,t[10]=o*o*l+a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}function Ux(t,e){let r=Math.sin(e),i=Math.cos(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=i,t[6]=r,t[7]=0,t[8]=0,t[9]=-r,t[10]=i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function kx(t,e){let r=Math.sin(e),i=Math.cos(e);return t[0]=i,t[1]=0,t[2]=-r,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=r,t[9]=0,t[10]=i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Vx(t,e){let r=Math.sin(e),i=Math.cos(e);return t[0]=i,t[1]=r,t[2]=0,t[3]=0,t[4]=-r,t[5]=i,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Bp(t,e,r){let i=e[0],s=e[1],o=e[2],n=e[3],a=i+i,c=s+s,l=o+o,f=i*a,h=i*c,u=i*l,d=s*c,p=s*l,g=o*l,m=n*a,_=n*c,T=n*l;return t[0]=1-(d+g),t[1]=h+T,t[2]=u-_,t[3]=0,t[4]=h-T,t[5]=1-(f+g),t[6]=p+m,t[7]=0,t[8]=u+_,t[9]=p-m,t[10]=1-(f+d),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function zx(t,e){let r=new q(3),i=-e[0],s=-e[1],o=-e[2],n=e[3],a=e[4],c=e[5],l=e[6],f=e[7],h=i*i+s*s+o*o+n*n;return h>0?(r[0]=(a*n+f*i+c*o-l*s)*2/h,r[1]=(c*n+f*s+l*i-a*o)*2/h,r[2]=(l*n+f*o+a*s-c*i)*2/h):(r[0]=(a*n+f*i+c*o-l*s)*2,r[1]=(c*n+f*s+l*i-a*o)*2,r[2]=(l*n+f*o+a*s-c*i)*2),Bp(t,e,r),t}function Wx(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function Lp(t,e){let r=e[0],i=e[1],s=e[2],o=e[4],n=e[5],a=e[6],c=e[8],l=e[9],f=e[10];return t[0]=Math.sqrt(r*r+i*i+s*s),t[1]=Math.sqrt(o*o+n*n+a*a),t[2]=Math.sqrt(c*c+l*l+f*f),t}function jx(t,e){let r=new q(3);Lp(r,e);let i=1/r[0],s=1/r[1],o=1/r[2],n=e[0]*i,a=e[1]*s,c=e[2]*o,l=e[4]*i,f=e[5]*s,h=e[6]*o,u=e[8]*i,d=e[9]*s,p=e[10]*o,g=n+f+p,m=0;return g>0?(m=Math.sqrt(g+1)*2,t[3]=.25*m,t[0]=(h-d)/m,t[1]=(u-c)/m,t[2]=(a-l)/m):n>f&&n>p?(m=Math.sqrt(1+n-f-p)*2,t[3]=(h-d)/m,t[0]=.25*m,t[1]=(a+l)/m,t[2]=(u+c)/m):f>p?(m=Math.sqrt(1+f-n-p)*2,t[3]=(u-c)/m,t[0]=(a+l)/m,t[1]=.25*m,t[2]=(h+d)/m):(m=Math.sqrt(1+p-n-f)*2,t[3]=(a-l)/m,t[0]=(u+c)/m,t[1]=(h+d)/m,t[2]=.25*m),t}function Hx(t,e,r,i){e[0]=i[12],e[1]=i[13],e[2]=i[14];let s=i[0],o=i[1],n=i[2],a=i[4],c=i[5],l=i[6],f=i[8],h=i[9],u=i[10];r[0]=Math.sqrt(s*s+o*o+n*n),r[1]=Math.sqrt(a*a+c*c+l*l),r[2]=Math.sqrt(f*f+h*h+u*u);let d=1/r[0],p=1/r[1],g=1/r[2],m=s*d,_=o*p,T=n*g,y=a*d,x=c*p,S=l*g,A=f*d,w=h*p,v=u*g,R=m+x+v,M=0;return R>0?(M=Math.sqrt(R+1)*2,t[3]=.25*M,t[0]=(S-w)/M,t[1]=(A-T)/M,t[2]=(_-y)/M):m>x&&m>v?(M=Math.sqrt(1+m-x-v)*2,t[3]=(S-w)/M,t[0]=.25*M,t[1]=(_+y)/M,t[2]=(A+T)/M):x>v?(M=Math.sqrt(1+x-m-v)*2,t[3]=(A-T)/M,t[0]=(_+y)/M,t[1]=.25*M,t[2]=(S+w)/M):(M=Math.sqrt(1+v-m-x)*2,t[3]=(_-y)/M,t[0]=(A+T)/M,t[1]=(S+w)/M,t[2]=.25*M),t}function $x(t,e,r,i){let s=e[0],o=e[1],n=e[2],a=e[3],c=s+s,l=o+o,f=n+n,h=s*c,u=s*l,d=s*f,p=o*l,g=o*f,m=n*f,_=a*c,T=a*l,y=a*f,x=i[0],S=i[1],A=i[2];return t[0]=(1-(p+m))*x,t[1]=(u+y)*x,t[2]=(d-T)*x,t[3]=0,t[4]=(u-y)*S,t[5]=(1-(h+m))*S,t[6]=(g+_)*S,t[7]=0,t[8]=(d+T)*A,t[9]=(g-_)*A,t[10]=(1-(h+p))*A,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function Xx(t,e,r,i,s){let o=e[0],n=e[1],a=e[2],c=e[3],l=o+o,f=n+n,h=a+a,u=o*l,d=o*f,p=o*h,g=n*f,m=n*h,_=a*h,T=c*l,y=c*f,x=c*h,S=i[0],A=i[1],w=i[2],v=s[0],R=s[1],M=s[2],I=(1-(g+_))*S,C=(d+x)*S,W=(p-y)*S,V=(d-x)*A,J=(1-(u+_))*A,bt=(m+T)*A,xt=(p+y)*w,Du=(m-T)*w,Fu=(1-(u+g))*w;return t[0]=I,t[1]=C,t[2]=W,t[3]=0,t[4]=V,t[5]=J,t[6]=bt,t[7]=0,t[8]=xt,t[9]=Du,t[10]=Fu,t[11]=0,t[12]=r[0]+v-(I*v+V*R+xt*M),t[13]=r[1]+R-(C*v+J*R+Du*M),t[14]=r[2]+M-(W*v+bt*R+Fu*M),t[15]=1,t}function ff(t,e){let r=e[0],i=e[1],s=e[2],o=e[3],n=r+r,a=i+i,c=s+s,l=r*n,f=i*n,h=i*a,u=s*n,d=s*a,p=s*c,g=o*n,m=o*a,_=o*c;return t[0]=1-h-p,t[1]=f+_,t[2]=u-m,t[3]=0,t[4]=f-_,t[5]=1-l-p,t[6]=d+g,t[7]=0,t[8]=u+m,t[9]=d-g,t[10]=1-l-h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function hf(t,e,r,i,s,o,n){let a=1/(r-e),c=1/(s-i),l=1/(o-n);return t[0]=o*2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o*2*c,t[6]=0,t[7]=0,t[8]=(r+e)*a,t[9]=(s+i)*c,t[10]=(n+o)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=n*o*2*l,t[15]=0,t}function Up(t,e,r,i,s){let o=1/Math.tan(e/2);if(t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,s!=null&&s!==1/0){let n=1/(i-s);t[10]=(s+i)*n,t[14]=2*s*i*n}else t[10]=-1,t[14]=-2*i;return t}var uf=Up;function Yx(t,e,r,i,s){let o=1/Math.tan(e/2);if(t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,s!=null&&s!==1/0){let n=1/(i-s);t[10]=s*n,t[14]=s*i*n}else t[10]=-1,t[14]=-i;return t}function Zx(t,e,r,i){let s=Math.tan(e.upDegrees*Math.PI/180),o=Math.tan(e.downDegrees*Math.PI/180),n=Math.tan(e.leftDegrees*Math.PI/180),a=Math.tan(e.rightDegrees*Math.PI/180),c=2/(n+a),l=2/(s+o);return t[0]=c,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=l,t[6]=0,t[7]=0,t[8]=-((n-a)*c*.5),t[9]=(s-o)*l*.5,t[10]=i/(r-i),t[11]=-1,t[12]=0,t[13]=0,t[14]=i*r/(r-i),t[15]=0,t}function kp(t,e,r,i,s,o,n){let a=1/(e-r),c=1/(i-s),l=1/(o-n);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+r)*a,t[13]=(s+i)*c,t[14]=(n+o)*l,t[15]=1,t}var df=kp;function Kx(t,e,r,i,s,o,n){let a=1/(e-r),c=1/(i-s),l=1/(o-n);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=l,t[11]=0,t[12]=(e+r)*a,t[13]=(s+i)*c,t[14]=o*l,t[15]=1,t}function pf(t,e,r,i){let s,o,n,a,c,l,f,h,u,d,p=e[0],g=e[1],m=e[2],_=i[0],T=i[1],y=i[2],x=r[0],S=r[1],A=r[2];return Math.abs(p-x)<1e-6&&Math.abs(g-S)<1e-6&&Math.abs(m-A)<1e-6?Fp(t):(h=p-x,u=g-S,d=m-A,s=1/Math.sqrt(h*h+u*u+d*d),h*=s,u*=s,d*=s,o=T*d-y*u,n=y*h-_*d,a=_*u-T*h,s=Math.sqrt(o*o+n*n+a*a),s?(s=1/s,o*=s,n*=s,a*=s):(o=0,n=0,a=0),c=u*a-d*n,l=d*o-h*a,f=h*n-u*o,s=Math.sqrt(c*c+l*l+f*f),s?(s=1/s,c*=s,l*=s,f*=s):(c=0,l=0,f=0),t[0]=o,t[1]=c,t[2]=h,t[3]=0,t[4]=n,t[5]=l,t[6]=u,t[7]=0,t[8]=a,t[9]=f,t[10]=d,t[11]=0,t[12]=-(o*p+n*g+a*m),t[13]=-(c*p+l*g+f*m),t[14]=-(h*p+u*g+d*m),t[15]=1,t)}function qx(t,e,r,i){let s=e[0],o=e[1],n=e[2],a=i[0],c=i[1],l=i[2],f=s-r[0],h=o-r[1],u=n-r[2],d=f*f+h*h+u*u;d>0&&(d=1/Math.sqrt(d),f*=d,h*=d,u*=d);let p=c*u-l*h,g=l*f-a*u,m=a*h-c*f;return d=p*p+g*g+m*m,d>0&&(d=1/Math.sqrt(d),p*=d,g*=d,m*=d),t[0]=p,t[1]=g,t[2]=m,t[3]=0,t[4]=h*m-u*g,t[5]=u*p-f*m,t[6]=f*g-h*p,t[7]=0,t[8]=f,t[9]=h,t[10]=u,t[11]=0,t[12]=s,t[13]=o,t[14]=n,t[15]=1,t}function Qx(t){return`mat4(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]}, ${t[4]}, ${t[5]}, ${t[6]}, ${t[7]}, ${t[8]}, ${t[9]}, ${t[10]}, ${t[11]}, ${t[12]}, ${t[13]}, ${t[14]}, ${t[15]})`}function Gx(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]+t[3]*t[3]+t[4]*t[4]+t[5]*t[5]+t[6]*t[6]+t[7]*t[7]+t[8]*t[8]+t[9]*t[9]+t[10]*t[10]+t[11]*t[11]+t[12]*t[12]+t[13]*t[13]+t[14]*t[14]+t[15]*t[15])}function Jx(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t[9]=e[9]+r[9],t[10]=e[10]+r[10],t[11]=e[11]+r[11],t[12]=e[12]+r[12],t[13]=e[13]+r[13],t[14]=e[14]+r[14],t[15]=e[15]+r[15],t}function Vp(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t[9]=e[9]-r[9],t[10]=e[10]-r[10],t[11]=e[11]-r[11],t[12]=e[12]-r[12],t[13]=e[13]-r[13],t[14]=e[14]-r[14],t[15]=e[15]-r[15],t}function e1(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t[9]=e[9]*r,t[10]=e[10]*r,t[11]=e[11]*r,t[12]=e[12]*r,t[13]=e[13]*r,t[14]=e[14]*r,t[15]=e[15]*r,t}function t1(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t[2]=e[2]+r[2]*i,t[3]=e[3]+r[3]*i,t[4]=e[4]+r[4]*i,t[5]=e[5]+r[5]*i,t[6]=e[6]+r[6]*i,t[7]=e[7]+r[7]*i,t[8]=e[8]+r[8]*i,t[9]=e[9]+r[9]*i,t[10]=e[10]+r[10]*i,t[11]=e[11]+r[11]*i,t[12]=e[12]+r[12]*i,t[13]=e[13]+r[13]*i,t[14]=e[14]+r[14]*i,t[15]=e[15]+r[15]*i,t}function r1(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function i1(t,e){let r=t[0],i=t[1],s=t[2],o=t[3],n=t[4],a=t[5],c=t[6],l=t[7],f=t[8],h=t[9],u=t[10],d=t[11],p=t[12],g=t[13],m=t[14],_=t[15],T=e[0],y=e[1],x=e[2],S=e[3],A=e[4],w=e[5],v=e[6],R=e[7],M=e[8],I=e[9],C=e[10],W=e[11],V=e[12],J=e[13],bt=e[14],xt=e[15];return Math.abs(r-T)<=1e-6*Math.max(1,Math.abs(r),Math.abs(T))&&Math.abs(i-y)<=1e-6*Math.max(1,Math.abs(i),Math.abs(y))&&Math.abs(s-x)<=1e-6*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(o-S)<=1e-6*Math.max(1,Math.abs(o),Math.abs(S))&&Math.abs(n-A)<=1e-6*Math.max(1,Math.abs(n),Math.abs(A))&&Math.abs(a-w)<=1e-6*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(c-v)<=1e-6*Math.max(1,Math.abs(c),Math.abs(v))&&Math.abs(l-R)<=1e-6*Math.max(1,Math.abs(l),Math.abs(R))&&Math.abs(f-M)<=1e-6*Math.max(1,Math.abs(f),Math.abs(M))&&Math.abs(h-I)<=1e-6*Math.max(1,Math.abs(h),Math.abs(I))&&Math.abs(u-C)<=1e-6*Math.max(1,Math.abs(u),Math.abs(C))&&Math.abs(d-W)<=1e-6*Math.max(1,Math.abs(d),Math.abs(W))&&Math.abs(p-V)<=1e-6*Math.max(1,Math.abs(p),Math.abs(V))&&Math.abs(g-J)<=1e-6*Math.max(1,Math.abs(g),Math.abs(J))&&Math.abs(m-bt)<=1e-6*Math.max(1,Math.abs(m),Math.abs(bt))&&Math.abs(_-xt)<=1e-6*Math.max(1,Math.abs(_),Math.abs(xt))}var s1=fs,o1=Vp;var xe={};At(xe,{add:()=>f1,ceil:()=>h1,clone:()=>n1,copy:()=>c1,create:()=>zp,cross:()=>A1,dist:()=>N1,distance:()=>$p,div:()=>O1,divide:()=>Hp,dot:()=>x1,equals:()=>M1,exactEquals:()=>v1,floor:()=>u1,forEach:()=>L1,fromValues:()=>a1,inverse:()=>T1,len:()=>F1,length:()=>Yp,lerp:()=>S1,max:()=>p1,min:()=>d1,mul:()=>I1,multiply:()=>jp,negate:()=>y1,normalize:()=>b1,random:()=>E1,round:()=>g1,scale:()=>m1,scaleAndAdd:()=>_1,set:()=>l1,sqrDist:()=>D1,sqrLen:()=>B1,squaredDistance:()=>Xp,squaredLength:()=>Zp,str:()=>P1,sub:()=>C1,subtract:()=>Wp,transformMat4:()=>gf,transformQuat:()=>w1,zero:()=>R1});function zp(){let t=new q(4);return q!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function n1(t){let e=new q(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function a1(t,e,r,i){let s=new q(4);return s[0]=t,s[1]=e,s[2]=r,s[3]=i,s}function c1(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function l1(t,e,r,i,s){return t[0]=e,t[1]=r,t[2]=i,t[3]=s,t}function f1(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}function Wp(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}function jp(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}function Hp(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t[3]=e[3]/r[3],t}function h1(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t[3]=Math.ceil(e[3]),t}function u1(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t[3]=Math.floor(e[3]),t}function d1(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t[3]=Math.min(e[3],r[3]),t}function p1(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t[3]=Math.max(e[3],r[3]),t}function g1(t,e){return t[0]=De(e[0]),t[1]=De(e[1]),t[2]=De(e[2]),t[3]=De(e[3]),t}function m1(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}function _1(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t[2]=e[2]+r[2]*i,t[3]=e[3]+r[3]*i,t}function $p(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2],o=e[3]-t[3];return Math.sqrt(r*r+i*i+s*s+o*o)}function Xp(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2],o=e[3]-t[3];return r*r+i*i+s*s+o*o}function Yp(t){let e=t[0],r=t[1],i=t[2],s=t[3];return Math.sqrt(e*e+r*r+i*i+s*s)}function Zp(t){let e=t[0],r=t[1],i=t[2],s=t[3];return e*e+r*r+i*i+s*s}function y1(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}function T1(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t}function b1(t,e){let r=e[0],i=e[1],s=e[2],o=e[3],n=r*r+i*i+s*s+o*o;return n>0&&(n=1/Math.sqrt(n)),t[0]=r*n,t[1]=i*n,t[2]=s*n,t[3]=o*n,t}function x1(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function A1(t,e,r,i){let s=r[0]*i[1]-r[1]*i[0],o=r[0]*i[2]-r[2]*i[0],n=r[0]*i[3]-r[3]*i[0],a=r[1]*i[2]-r[2]*i[1],c=r[1]*i[3]-r[3]*i[1],l=r[2]*i[3]-r[3]*i[2],f=e[0],h=e[1],u=e[2],d=e[3];return t[0]=h*l-u*c+d*a,t[1]=-(f*l)+u*n-d*o,t[2]=f*c-h*n+d*s,t[3]=-(f*a)+h*o-u*s,t}function S1(t,e,r,i){let s=e[0],o=e[1],n=e[2],a=e[3];return t[0]=s+i*(r[0]-s),t[1]=o+i*(r[1]-o),t[2]=n+i*(r[2]-n),t[3]=a+i*(r[3]-a),t}function E1(t,e){e=e===void 0?1:e;let r,i,s,o,n,a;do r=it()*2-1,i=it()*2-1,n=r*r+i*i;while(n>=1);do s=it()*2-1,o=it()*2-1,a=s*s+o*o;while(a>=1);let c=Math.sqrt((1-n)/a);return t[0]=e*r,t[1]=e*i,t[2]=e*s*c,t[3]=e*o*c,t}function gf(t,e,r){let i=e[0],s=e[1],o=e[2],n=e[3];return t[0]=r[0]*i+r[4]*s+r[8]*o+r[12]*n,t[1]=r[1]*i+r[5]*s+r[9]*o+r[13]*n,t[2]=r[2]*i+r[6]*s+r[10]*o+r[14]*n,t[3]=r[3]*i+r[7]*s+r[11]*o+r[15]*n,t}function w1(t,e,r){let i=e[0],s=e[1],o=e[2],n=r[0],a=r[1],c=r[2],l=r[3],f=l*i+a*o-c*s,h=l*s+c*i-n*o,u=l*o+n*s-a*i,d=-n*i-a*s-c*o;return t[0]=f*l+d*-n+h*-c-u*-a,t[1]=h*l+d*-a+u*-n-f*-c,t[2]=u*l+d*-c+f*-a-h*-n,t[3]=e[3],t}function R1(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}function P1(t){return`vec4(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]})`}function v1(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function M1(t,e){let r=t[0],i=t[1],s=t[2],o=t[3],n=e[0],a=e[1],c=e[2],l=e[3];return Math.abs(r-n)<=1e-6*Math.max(1,Math.abs(r),Math.abs(n))&&Math.abs(i-a)<=1e-6*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(s-c)<=1e-6*Math.max(1,Math.abs(s),Math.abs(c))&&Math.abs(o-l)<=1e-6*Math.max(1,Math.abs(o),Math.abs(l))}var C1=Wp,I1=jp,O1=Hp,N1=$p,D1=Xp,F1=Yp,B1=Zp,L1=function(){let t=zp();return function(e,r,i,s,o,n){let a,c;for(r||(r=4),i||(i=0),s?c=Math.min(s*r+i,e.length):c=e.length,a=i;a<c;a+=r)t[0]=e[a],t[1]=e[a+1],t[2]=e[a+2],t[3]=e[a+3],o(t,t,n),e[a]=t[0],e[a+1]=t[1],e[a+2]=t[2],e[a+3]=t[3];return e}}();var yf;(function(t){t[t.COL0ROW0=0]="COL0ROW0",t[t.COL0ROW1=1]="COL0ROW1",t[t.COL0ROW2=2]="COL0ROW2",t[t.COL0ROW3=3]="COL0ROW3",t[t.COL1ROW0=4]="COL1ROW0",t[t.COL1ROW1=5]="COL1ROW1",t[t.COL1ROW2=6]="COL1ROW2",t[t.COL1ROW3=7]="COL1ROW3",t[t.COL2ROW0=8]="COL2ROW0",t[t.COL2ROW1=9]="COL2ROW1",t[t.COL2ROW2=10]="COL2ROW2",t[t.COL2ROW3=11]="COL2ROW3",t[t.COL3ROW0=12]="COL3ROW0",t[t.COL3ROW1=13]="COL3ROW1",t[t.COL3ROW2=14]="COL3ROW2",t[t.COL3ROW3=15]="COL3ROW3"})(yf||(yf={}));var U1=45*Math.PI/180,k1=1,mf=.1,_f=500,V1=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),z=class extends En{static get IDENTITY(){return W1()}static get ZERO(){return z1()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return yf}constructor(e){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this[9]=e[9],this[10]=e[10],this[11]=e[11],this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15],this.check()}set(e,r,i,s,o,n,a,c,l,f,h,u,d,p,g,m){return this[0]=e,this[1]=r,this[2]=i,this[3]=s,this[4]=o,this[5]=n,this[6]=a,this[7]=c,this[8]=l,this[9]=f,this[10]=h,this[11]=u,this[12]=d,this[13]=p,this[14]=g,this[15]=m,this.check()}setRowMajor(e,r,i,s,o,n,a,c,l,f,h,u,d,p,g,m){return this[0]=e,this[1]=o,this[2]=l,this[3]=d,this[4]=r,this[5]=n,this[6]=f,this[7]=p,this[8]=i,this[9]=a,this[10]=h,this[11]=g,this[12]=s,this[13]=c,this[14]=u,this[15]=m,this.check()}toRowMajor(e){return e[0]=this[0],e[1]=this[4],e[2]=this[8],e[3]=this[12],e[4]=this[1],e[5]=this[5],e[6]=this[9],e[7]=this[13],e[8]=this[2],e[9]=this[6],e[10]=this[10],e[11]=this[14],e[12]=this[3],e[13]=this[7],e[14]=this[11],e[15]=this[15],e}identity(){return this.copy(V1)}fromObject(e){return this.check()}fromQuaternion(e){return ff(this,e),this.check()}frustum(e){let{left:r,right:i,bottom:s,top:o,near:n=mf,far:a=_f}=e;return a===1/0?j1(this,r,i,s,o,n):hf(this,r,i,s,o,n,a),this.check()}lookAt(e){let{eye:r,center:i=[0,0,0],up:s=[0,1,0]}=e;return pf(this,r,i,s),this.check()}ortho(e){let{left:r,right:i,bottom:s,top:o,near:n=mf,far:a=_f}=e;return df(this,r,i,s,o,n,a),this.check()}orthographic(e){let{fovy:r=U1,aspect:i=k1,focalDistance:s=1,near:o=mf,far:n=_f}=e;Kp(r);let a=r/2,c=s*Math.tan(a),l=c*i;return this.ortho({left:-l,right:l,bottom:-c,top:c,near:o,far:n})}perspective(e){let{fovy:r=45*Math.PI/180,aspect:i=1,near:s=.1,far:o=500}=e;return Kp(r),uf(this,r,i,s,o),this.check()}determinant(){return rf(this)}getScale(e=[-0,-0,-0]){return e[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),e[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),e[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),e}getTranslation(e=[-0,-0,-0]){return e[0]=this[12],e[1]=this[13],e[2]=this[14],e}getRotation(e,r){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let i=this.getScale(r),s=1/i[0],o=1/i[1],n=1/i[2];return e[0]=this[0]*s,e[1]=this[1]*o,e[2]=this[2]*n,e[3]=0,e[4]=this[4]*s,e[5]=this[5]*o,e[6]=this[6]*n,e[7]=0,e[8]=this[8]*s,e[9]=this[9]*o,e[10]=this[10]*n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}getRotationMatrix3(e,r){e=e||[-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let i=this.getScale(r),s=1/i[0],o=1/i[1],n=1/i[2];return e[0]=this[0]*s,e[1]=this[1]*o,e[2]=this[2]*n,e[3]=this[4]*s,e[4]=this[5]*o,e[5]=this[6]*n,e[6]=this[8]*s,e[7]=this[9]*o,e[8]=this[10]*n,e}transpose(){return ef(this,this),this.check()}invert(){return tf(this,this),this.check()}multiplyLeft(e){return fs(this,e,this),this.check()}multiplyRight(e){return fs(this,this,e),this.check()}rotateX(e){return af(this,this,e),this.check()}rotateY(e){return cf(this,this,e),this.check()}rotateZ(e){return lf(this,this,e),this.check()}rotateXYZ(e){return this.rotateX(e[0]).rotateY(e[1]).rotateZ(e[2])}rotateAxis(e,r){return nf(this,this,e,r),this.check()}scale(e){return of(this,this,Array.isArray(e)?e:[e,e,e]),this.check()}translate(e){return sf(this,this,e),this.check()}transform(e,r){return e.length===4?(r=gf(r||[-0,-0,-0,-0],e,this),yn(r,4),r):this.transformAsPoint(e,r)}transformAsPoint(e,r){let{length:i}=e,s;switch(i){case 2:s=Hl(r||[-0,-0],e,this);break;case 3:s=ls(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return yn(s,e.length),s}transformAsVector(e,r){let i;switch(e.length){case 2:i=Rp(r||[-0,-0],e,this);break;case 3:i=xn(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return yn(i,e.length),i}transformPoint(e,r){return this.transformAsPoint(e,r)}transformVector(e,r){return this.transformAsPoint(e,r)}transformDirection(e,r){return this.transformAsVector(e,r)}makeRotationX(e){return this.identity().rotateX(e)}makeTranslation(e,r,i){return this.identity().translate([e,r,i])}},wn,Rn;function z1(){return wn||(wn=new z([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(wn)),wn}function W1(){return Rn||(Rn=new z,Object.freeze(Rn)),Rn}function Kp(t){if(t>Math.PI*2)throw Error("expected radians")}function j1(t,e,r,i,s,o){let n=2*o/(r-e),a=2*o/(s-i),c=(r+e)/(r-e),l=(s+i)/(s-i),f=-1,h=-1,u=-2*o;return t[0]=n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=c,t[9]=l,t[10]=f,t[11]=h,t[12]=0,t[13]=0,t[14]=u,t[15]=0,t}var qp=1e-6,H1=6371e3,Ve=class{constructor({phi:e=0,theta:r=0,radius:i=1,bearing:s,pitch:o,altitude:n,radiusScale:a=H1}={}){this.phi=e,this.theta=r,this.radius=i||n||1,this.radiusScale=a||1,s!==void 0&&(this.bearing=s),o!==void 0&&(this.pitch=o),this.check()}toString(){return this.formatString(te)}formatString({printTypes:e=!1}){let r=cs;return`${e?"Spherical":""}[rho:${r(this.radius)},theta:${r(this.theta)},phi:${r(this.phi)}]`}equals(e){return Re(this.radius,e.radius)&&Re(this.theta,e.theta)&&Re(this.phi,e.phi)}exactEquals(e){return this.radius===e.radius&&this.theta===e.theta&&this.phi===e.phi}get bearing(){return 180-Qt(this.phi)}set bearing(e){this.phi=Math.PI-hi(e)}get pitch(){return Qt(this.theta)}set pitch(e){this.theta=hi(e)}get longitude(){return Qt(this.phi)}get latitude(){return Qt(this.theta)}get lng(){return Qt(this.phi)}get lat(){return Qt(this.theta)}get z(){return(this.radius-1)*this.radiusScale}set(e,r,i){return this.radius=e,this.phi=r,this.theta=i,this.check()}clone(){return new Ve().copy(this)}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this.check()}fromLngLatZ([e,r,i]){return this.radius=1+i/this.radiusScale,this.phi=hi(r),this.theta=hi(e),this.check()}fromVector3(e){return this.radius=An(e),this.radius>0&&(this.theta=Math.atan2(e[0],e[1]),this.phi=Math.acos(B(e[2]/this.radius,-1,1))),this.check()}toVector3(){return new H(0,0,this.radius).rotateX({radians:this.theta}).rotateZ({radians:this.phi})}makeSafe(){return this.phi=Math.max(qp,Math.min(Math.PI-qp,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}};function Tf(t,e=[],r=0){let i=Math.fround(t),s=t-i;return e[r]=i,e[r+1]=s,e}function Qp(t){return t-Math.fround(t)}function Gp(t){let e=new Float32Array(32);for(let r=0;r<4;++r)for(let i=0;i<4;++i){let s=r*4+i;Tf(t[i*4+r],e,s*2)}return e}var $1=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND
107
108
 
108
109
  // All these functions are for substituting tan() function from Intel GPU only
109
110
  const float TWO_PI = 6.2831854820251465;
@@ -253,7 +254,7 @@ float tan_fp32(float a) {
253
254
  return tan(a);
254
255
  #endif
255
256
  }
256
- `,ef={name:"fp32",vs:Fx};var mp=`
257
+ `,bf={name:"fp32",vs:$1};var Jp=`
257
258
  uniform fp64arithmeticUniforms {
258
259
  uniform float ONE;
259
260
  } fp64;
@@ -421,7 +422,7 @@ vec2 sqrt_fp64(vec2 a) {
421
422
  return sum_fp64(vec2(yn, 0.0), prod);
422
423
  #endif
423
424
  }
424
- `;var Bx={ONE:1},rf={name:"fp64arithmetic",vs:mp,defaultUniforms:Bx,uniformTypes:{ONE:"f32"},fp64ify:tf,fp64LowPart:pp,fp64ifyMatrix4:gp};var Lx=[0,1,1,1],Ux=`uniform pickingUniforms {
425
+ `;var X1={ONE:1},xf={name:"fp64arithmetic",vs:Jp,defaultUniforms:X1,uniformTypes:{ONE:"f32"},fp64ify:Tf,fp64LowPart:Qp,fp64ifyMatrix4:Gp};var Y1=[0,1,1,1],Z1=`uniform pickingUniforms {
425
426
  float isActive;
426
427
  float isAttribute;
427
428
  float isHighlightActive;
@@ -492,7 +493,7 @@ void picking_setPickingAttribute(vec3 value) {
492
493
  picking_vRGBcolor_Avalid.rgb = value;
493
494
  }
494
495
  }
495
- `,kx=`uniform pickingUniforms {
496
+ `,K1=`uniform pickingUniforms {
496
497
  float isActive;
497
498
  float isAttribute;
498
499
  float isHighlightActive;
@@ -548,7 +549,7 @@ vec4 picking_filterColor(vec4 color) {
548
549
  vec4 highlightColor = picking_filterHighlightColor(color);
549
550
  return picking_filterPickingColor(highlightColor);
550
551
  }
551
- `,Sn={props:{},uniforms:{},name:"picking",uniformTypes:{isActive:"f32",isAttribute:"f32",isHighlightActive:"f32",useFloatColors:"f32",highlightedObjectColor:"vec3<f32>",highlightColor:"vec4<f32>"},defaultUniforms:{isActive:!1,isAttribute:!1,isHighlightActive:!1,useFloatColors:!0,highlightedObjectColor:[0,0,0],highlightColor:Lx},vs:Ux,fs:kx,getUniforms:Vx};function Vx(e={},t){let r={};if(e.highlightedObjectColor!==void 0)if(e.highlightedObjectColor===null)r.isHighlightActive=!1;else{r.isHighlightActive=!0;let i=e.highlightedObjectColor.slice(0,3);r.highlightedObjectColor=i}if(e.highlightColor){let i=Array.from(e.highlightColor,s=>s/255);Number.isFinite(i[3])||(i[3]=1),r.highlightColor=i}return e.isActive!==void 0&&(r.isActive=Boolean(e.isActive),r.isAttribute=Boolean(e.isAttribute)),e.useFloatColors!==void 0&&(r.useFloatColors=Boolean(e.useFloatColors)),r}D();var sf=`precision highp int;
552
+ `,Pn={props:{},uniforms:{},name:"picking",uniformTypes:{isActive:"f32",isAttribute:"f32",isHighlightActive:"f32",useFloatColors:"f32",highlightedObjectColor:"vec3<f32>",highlightColor:"vec4<f32>"},defaultUniforms:{isActive:!1,isAttribute:!1,isHighlightActive:!1,useFloatColors:!0,highlightedObjectColor:[0,0,0],highlightColor:Y1},vs:Z1,fs:K1,getUniforms:q1};function q1(t={},e){let r={};if(t.highlightedObjectColor!==void 0)if(t.highlightedObjectColor===null)r.isHighlightActive=!1;else{r.isHighlightActive=!0;let i=t.highlightedObjectColor.slice(0,3);r.highlightedObjectColor=i}if(t.highlightColor){let i=Array.from(t.highlightColor,s=>s/255);Number.isFinite(i[3])||(i[3]=1),r.highlightColor=i}return t.isActive!==void 0&&(r.isActive=Boolean(t.isActive),r.isAttribute=Boolean(t.isAttribute)),t.useFloatColors!==void 0&&(r.useFloatColors=Boolean(t.useFloatColors)),r}F();var Af=`precision highp int;
552
553
 
553
554
  // #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
554
555
  struct AmbientLight {
@@ -589,6 +590,16 @@ uniform lightingUniforms {
589
590
  vec3 lightPosition2;
590
591
  vec3 lightDirection2;
591
592
  vec3 lightAttenuation2;
593
+
594
+ vec3 lightColor3;
595
+ vec3 lightPosition3;
596
+ vec3 lightDirection3;
597
+ vec3 lightAttenuation3;
598
+
599
+ vec3 lightColor4;
600
+ vec3 lightPosition4;
601
+ vec3 lightDirection4;
602
+ vec3 lightAttenuation4;
592
603
  } lighting;
593
604
 
594
605
  PointLight lighting_getPointLight(int index) {
@@ -598,8 +609,12 @@ PointLight lighting_getPointLight(int index) {
598
609
  case 1:
599
610
  return PointLight(lighting.lightColor1, lighting.lightPosition1, lighting.lightAttenuation1);
600
611
  case 2:
601
- default:
602
612
  return PointLight(lighting.lightColor2, lighting.lightPosition2, lighting.lightAttenuation2);
613
+ case 3:
614
+ return PointLight(lighting.lightColor3, lighting.lightPosition3, lighting.lightAttenuation3);
615
+ case 4:
616
+ default:
617
+ return PointLight(lighting.lightColor4, lighting.lightPosition4, lighting.lightAttenuation4);
603
618
  }
604
619
  }
605
620
 
@@ -610,8 +625,12 @@ DirectionalLight lighting_getDirectionalLight(int index) {
610
625
  case 1:
611
626
  return DirectionalLight(lighting.lightColor1, lighting.lightDirection1);
612
627
  case 2:
613
- default:
614
628
  return DirectionalLight(lighting.lightColor2, lighting.lightDirection2);
629
+ case 3:
630
+ return DirectionalLight(lighting.lightColor3, lighting.lightDirection3);
631
+ case 4:
632
+ default:
633
+ return DirectionalLight(lighting.lightColor4, lighting.lightDirection4);
615
634
  }
616
635
  }
617
636
 
@@ -622,7 +641,9 @@ float getPointLightAttenuation(PointLight pointLight, float distance) {
622
641
  }
623
642
 
624
643
  // #endif
625
- `;var _p=`// #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
644
+ `;var eg=`// #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
645
+ const MAX_LIGHTS: i32 = 5;
646
+
626
647
  struct AmbientLight {
627
648
  color: vec3<f32>,
628
649
  };
@@ -640,32 +661,80 @@ struct DirectionalLight {
640
661
 
641
662
  struct lightingUniforms {
642
663
  enabled: i32,
643
- pointLightCount: i32,
664
+ lightType: i32,
665
+
644
666
  directionalLightCount: i32,
667
+ pointLightCount: i32,
645
668
 
646
669
  ambientColor: vec3<f32>,
647
670
 
648
- // TODO - support multiple lights by uncommenting arrays below
649
- lightType: i32,
650
- lightColor: vec3<f32>,
651
- lightDirection: vec3<f32>,
652
- lightPosition: vec3<f32>,
653
- lightAttenuation: vec3<f32>,
654
-
655
- // AmbientLight ambientLight;
656
- // PointLight pointLight[MAX_LIGHTS];
657
- // DirectionalLight directionalLight[MAX_LIGHTS];
671
+ lightColor0: vec3<f32>,
672
+ lightPosition0: vec3<f32>,
673
+ lightDirection0: vec3<f32>,
674
+ lightAttenuation0: vec3<f32>,
675
+
676
+ lightColor1: vec3<f32>,
677
+ lightPosition1: vec3<f32>,
678
+ lightDirection1: vec3<f32>,
679
+ lightAttenuation1: vec3<f32>,
680
+
681
+ lightColor2: vec3<f32>,
682
+ lightPosition2: vec3<f32>,
683
+ lightDirection2: vec3<f32>,
684
+ lightAttenuation2: vec3<f32>,
685
+
686
+ lightColor3: vec3<f32>,
687
+ lightPosition3: vec3<f32>,
688
+ lightDirection3: vec3<f32>,
689
+ lightAttenuation3: vec3<f32>,
690
+
691
+ lightColor4: vec3<f32>,
692
+ lightPosition4: vec3<f32>,
693
+ lightDirection4: vec3<f32>,
694
+ lightAttenuation4: vec3<f32>,
658
695
  };
659
696
 
660
697
  // Binding 0:1 is reserved for lighting (Note: could go into separate bind group as it is stable across draw calls)
661
698
  @binding(1) @group(0) var<uniform> lighting : lightingUniforms;
662
699
 
663
700
  fn lighting_getPointLight(index: i32) -> PointLight {
664
- return PointLight(lighting.lightColor, lighting.lightPosition, lighting.lightAttenuation);
701
+ switch (index) {
702
+ case 0: {
703
+ return PointLight(lighting.lightColor0, lighting.lightPosition0, lighting.lightAttenuation0);
704
+ }
705
+ case 1: {
706
+ return PointLight(lighting.lightColor1, lighting.lightPosition1, lighting.lightAttenuation1);
707
+ }
708
+ case 2: {
709
+ return PointLight(lighting.lightColor2, lighting.lightPosition2, lighting.lightAttenuation2);
710
+ }
711
+ case 3: {
712
+ return PointLight(lighting.lightColor3, lighting.lightPosition3, lighting.lightAttenuation3);
713
+ }
714
+ case 4, default: {
715
+ return PointLight(lighting.lightColor4, lighting.lightPosition4, lighting.lightAttenuation4);
716
+ }
717
+ }
665
718
  }
666
719
 
667
720
  fn lighting_getDirectionalLight(index: i32) -> DirectionalLight {
668
- return DirectionalLight(lighting.lightColor, lighting.lightDirection);
721
+ switch (index) {
722
+ case 0: {
723
+ return DirectionalLight(lighting.lightColor0, lighting.lightDirection0);
724
+ }
725
+ case 1: {
726
+ return DirectionalLight(lighting.lightColor1, lighting.lightDirection1);
727
+ }
728
+ case 2: {
729
+ return DirectionalLight(lighting.lightColor2, lighting.lightDirection2);
730
+ }
731
+ case 3: {
732
+ return DirectionalLight(lighting.lightColor3, lighting.lightDirection3);
733
+ }
734
+ case 4, default: {
735
+ return DirectionalLight(lighting.lightColor4, lighting.lightDirection4);
736
+ }
737
+ }
669
738
  }
670
739
 
671
740
  fn getPointLightAttenuation(pointLight: PointLight, distance: f32) -> f32 {
@@ -673,13 +742,13 @@ fn getPointLightAttenuation(pointLight: PointLight, distance: f32) -> f32 {
673
742
  + pointLight.attenuation.y * distance
674
743
  + pointLight.attenuation.z * distance * distance;
675
744
  }
676
- `;var zx=5,jx=255,ns;(function(e){e[e.POINT=0]="POINT",e[e.DIRECTIONAL=1]="DIRECTIONAL"})(ns||(ns={}));var mr={props:{},uniforms:{},name:"lighting",defines:{},uniformTypes:{enabled:"i32",lightType:"i32",directionalLightCount:"i32",pointLightCount:"i32",ambientColor:"vec3<f32>",lightColor0:"vec3<f32>",lightPosition0:"vec3<f32>",lightDirection0:"vec3<f32>",lightAttenuation0:"vec3<f32>",lightColor1:"vec3<f32>",lightPosition1:"vec3<f32>",lightDirection1:"vec3<f32>",lightAttenuation1:"vec3<f32>",lightColor2:"vec3<f32>",lightPosition2:"vec3<f32>",lightDirection2:"vec3<f32>",lightAttenuation2:"vec3<f32>"},defaultUniforms:{enabled:1,lightType:ns.POINT,directionalLightCount:0,pointLightCount:0,ambientColor:[.1,.1,.1],lightColor0:[1,1,1],lightPosition0:[1,1,2],lightDirection0:[1,1,1],lightAttenuation0:[1,0,0],lightColor1:[1,1,1],lightPosition1:[1,1,2],lightDirection1:[1,1,1],lightAttenuation1:[1,0,0],lightColor2:[1,1,1],lightPosition2:[1,1,2],lightDirection2:[1,1,1],lightAttenuation2:[1,0,0]},source:_p,vs:sf,fs:sf,getUniforms:Wx};function Wx(e,t={}){if(e=e&&{...e},!e)return{...mr.defaultUniforms};e.lights&&(e={...e,...Xx(e.lights),lights:void 0});let{ambientLight:r,pointLights:i,directionalLights:s}=e||{};if(!(r||i&&i.length>0||s&&s.length>0))return{...mr.defaultUniforms,enabled:0};let n={...mr.defaultUniforms,...t,...Hx({ambientLight:r,pointLights:i,directionalLights:s})};return e.enabled!==void 0&&(n.enabled=e.enabled?1:0),n}function Hx({ambientLight:e,pointLights:t=[],directionalLights:r=[]}){let i={};i.ambientColor=of(e);let s=0;for(let o of t){i.lightType=ns.POINT;let n=s;i[`lightColor${n}`]=of(o),i[`lightPosition${n}`]=o.position,i[`lightAttenuation${n}`]=o.attenuation||[1,0,0],s++}for(let o of r){i.lightType=ns.DIRECTIONAL;let n=s;i[`lightColor${n}`]=of(o),i[`lightDirection${n}`]=o.direction,s++}return s>zx&&b.warn("MAX_LIGHTS exceeded")(),i.directionalLightCount=r.length,i.pointLightCount=t.length,i}function Xx(e){let t={pointLights:[],directionalLights:[]};for(let r of e||[])switch(r.type){case"ambient":t.ambientLight=r;break;case"directional":t.directionalLights?.push(r);break;case"point":t.pointLights?.push(r);break;default:}return t}function of(e={}){let{color:t=[0,0,0],intensity:r=1}=e;return t.map(i=>i*r/jx)}var En=`uniform phongMaterialUniforms {
745
+ `;var vn=5,Q1=255,hs;(function(t){t[t.POINT=0]="POINT",t[t.DIRECTIONAL=1]="DIRECTIONAL"})(hs||(hs={}));var Er={props:{},uniforms:{},name:"lighting",defines:{},uniformTypes:{enabled:"i32",lightType:"i32",directionalLightCount:"i32",pointLightCount:"i32",ambientColor:"vec3<f32>",lightColor0:"vec3<f32>",lightPosition0:"vec3<f32>",lightDirection0:"vec3<f32>",lightAttenuation0:"vec3<f32>",lightColor1:"vec3<f32>",lightPosition1:"vec3<f32>",lightDirection1:"vec3<f32>",lightAttenuation1:"vec3<f32>",lightColor2:"vec3<f32>",lightPosition2:"vec3<f32>",lightDirection2:"vec3<f32>",lightAttenuation2:"vec3<f32>",lightColor3:"vec3<f32>",lightPosition3:"vec3<f32>",lightDirection3:"vec3<f32>",lightAttenuation3:"vec3<f32>",lightColor4:"vec3<f32>",lightPosition4:"vec3<f32>",lightDirection4:"vec3<f32>",lightAttenuation4:"vec3<f32>"},defaultUniforms:{enabled:1,lightType:hs.POINT,directionalLightCount:0,pointLightCount:0,ambientColor:[.1,.1,.1],lightColor0:[1,1,1],lightPosition0:[1,1,2],lightDirection0:[1,1,1],lightAttenuation0:[1,0,0],lightColor1:[1,1,1],lightPosition1:[1,1,2],lightDirection1:[1,1,1],lightAttenuation1:[1,0,0],lightColor2:[1,1,1],lightPosition2:[1,1,2],lightDirection2:[1,1,1],lightAttenuation2:[1,0,0],lightColor3:[1,1,1],lightPosition3:[1,1,2],lightDirection3:[1,1,1],lightAttenuation3:[1,0,0],lightColor4:[1,1,1],lightPosition4:[1,1,2],lightDirection4:[1,1,1],lightAttenuation4:[1,0,0]},source:eg,vs:Af,fs:Af,getUniforms:G1};function G1(t,e={}){if(t=t&&{...t},!t)return{...Er.defaultUniforms};t.lights&&(t={...t,...eA(t.lights),lights:void 0});let{ambientLight:r,pointLights:i,directionalLights:s}=t||{};if(!(r||i&&i.length>0||s&&s.length>0))return{...Er.defaultUniforms,enabled:0};let n={...Er.defaultUniforms,...e,...J1({ambientLight:r,pointLights:i,directionalLights:s})};return t.enabled!==void 0&&(n.enabled=t.enabled?1:0),n}function J1({ambientLight:t,pointLights:e=[],directionalLights:r=[]}){let i={};i.ambientColor=Sf(t);let s=0,o=0,n=0;for(let a of e){if(s>=vn)break;i.lightType=hs.POINT;let c=s;i[`lightColor${c}`]=Sf(a),i[`lightPosition${c}`]=a.position,i[`lightAttenuation${c}`]=a.attenuation||[1,0,0],s++,o++}for(let a of r){if(s>=vn)break;i.lightType=hs.DIRECTIONAL;let c=s;i[`lightColor${c}`]=Sf(a),i[`lightDirection${c}`]=a.direction,s++,n++}return e.length+r.length>vn&&b.warn(`MAX_LIGHTS exceeded, truncating to ${vn}`)(),i.directionalLightCount=n,i.pointLightCount=o,i}function eA(t){let e={pointLights:[],directionalLights:[]};for(let r of t||[])switch(r.type){case"ambient":e.ambientLight=r;break;case"directional":e.directionalLights?.push(r);break;case"point":e.pointLights?.push(r);break;default:}return e}function Sf(t={}){let{color:e=[0,0,0],intensity:r=1}=t;return e.map(i=>i*r/Q1)}var Mn=`uniform phongMaterialUniforms {
677
746
  uniform float ambient;
678
747
  uniform float diffuse;
679
748
  uniform float shininess;
680
749
  uniform vec3 specularColor;
681
750
  } material;
682
- `,Rn=`#define MAX_LIGHTS 3
751
+ `,Cn=`#define MAX_LIGHTS 3
683
752
 
684
753
  uniform phongMaterialUniforms {
685
754
  uniform float ambient;
@@ -726,7 +795,7 @@ vec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 positio
726
795
 
727
796
  return lightColor;
728
797
  }
729
- `;var wn=`struct phongMaterialUniforms {
798
+ `;var In=`struct phongMaterialUniforms {
730
799
  ambient: f32,
731
800
  diffuse: f32,
732
801
  shininess: f32,
@@ -757,64 +826,68 @@ fn lighting_getLightColor2(surfaceColor: vec3<f32>, cameraPosition: vec3<f32>, p
757
826
  let view_direction: vec3<f32> = normalize(cameraPosition - position_worldspace);
758
827
  lightColor = phongMaterial.ambient * surfaceColor * lighting.ambientColor;
759
828
 
760
- if (lighting.lightType == 0) {
761
- let pointLight: PointLight = lighting_getPointLight(0);
829
+ for (var i: i32 = 0; i < lighting.pointLightCount; i++) {
830
+ let pointLight: PointLight = lighting_getPointLight(i);
762
831
  let light_position_worldspace: vec3<f32> = pointLight.position;
763
832
  let light_direction: vec3<f32> = normalize(light_position_worldspace - position_worldspace);
764
- lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);
765
- } else if (lighting.lightType == 1) {
766
- var directionalLight: DirectionalLight = lighting_getDirectionalLight(0);
767
- lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);
768
- }
769
-
770
- return lightColor;
771
- /*
772
- for (int i = 0; i < MAX_LIGHTS; i++) {
773
- if (i >= lighting.pointLightCount) {
774
- break;
775
- }
776
- PointLight pointLight = lighting.pointLight[i];
777
- vec3 light_position_worldspace = pointLight.position;
778
- vec3 light_direction = normalize(light_position_worldspace - position_worldspace);
779
- lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);
833
+ let light_attenuation = getPointLightAttenuation(
834
+ pointLight,
835
+ distance(light_position_worldspace, position_worldspace)
836
+ );
837
+ lightColor += lighting_getLightColor(
838
+ surfaceColor,
839
+ light_direction,
840
+ view_direction,
841
+ normal_worldspace,
842
+ pointLight.color / light_attenuation
843
+ );
780
844
  }
781
845
 
782
- for (int i = 0; i < MAX_LIGHTS; i++) {
783
- if (i >= lighting.directionalLightCount) {
784
- break;
785
- }
786
- DirectionalLight directionalLight = lighting.directionalLight[i];
846
+ let totalLights = min(MAX_LIGHTS, lighting.pointLightCount + lighting.directionalLightCount);
847
+ for (var i: i32 = lighting.pointLightCount; i < totalLights; i++) {
848
+ let directionalLight: DirectionalLight = lighting_getDirectionalLight(i);
787
849
  lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);
788
- }
789
- */
850
+ }
851
+
852
+ return lightColor;
790
853
  }
791
854
 
792
855
  fn lighting_getSpecularLightColor(cameraPosition: vec3<f32>, position_worldspace: vec3<f32>, normal_worldspace: vec3<f32>) -> vec3<f32>{
793
856
  var lightColor = vec3<f32>(0, 0, 0);
794
857
  let surfaceColor = vec3<f32>(0, 0, 0);
795
858
 
796
- if (lighting.enabled == 0) {
859
+ if (lighting.enabled != 0) {
797
860
  let view_direction = normalize(cameraPosition - position_worldspace);
798
861
 
799
- switch (lighting.lightType) {
800
- case 0, default: {
801
- let pointLight: PointLight = lighting_getPointLight(0);
802
- let light_position_worldspace: vec3<f32> = pointLight.position;
803
- let light_direction: vec3<f32> = normalize(light_position_worldspace - position_worldspace);
804
- lightColor += lighting_getLightColor(surfaceColor, light_direction, view_direction, normal_worldspace, pointLight.color);
805
- }
806
- case 1: {
807
- let directionalLight: DirectionalLight = lighting_getDirectionalLight(0);
862
+ for (var i: i32 = 0; i < lighting.pointLightCount; i++) {
863
+ let pointLight: PointLight = lighting_getPointLight(i);
864
+ let light_position_worldspace: vec3<f32> = pointLight.position;
865
+ let light_direction: vec3<f32> = normalize(light_position_worldspace - position_worldspace);
866
+ let light_attenuation = getPointLightAttenuation(
867
+ pointLight,
868
+ distance(light_position_worldspace, position_worldspace)
869
+ );
870
+ lightColor += lighting_getLightColor(
871
+ surfaceColor,
872
+ light_direction,
873
+ view_direction,
874
+ normal_worldspace,
875
+ pointLight.color / light_attenuation
876
+ );
877
+ }
878
+
879
+ let totalLights = min(MAX_LIGHTS, lighting.pointLightCount + lighting.directionalLightCount);
880
+ for (var i: i32 = lighting.pointLightCount; i < totalLights; i++) {
881
+ let directionalLight: DirectionalLight = lighting_getDirectionalLight(i);
808
882
  lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);
809
- }
810
883
  }
811
884
  }
812
885
  return lightColor;
813
886
  }
814
- `;var as={props:{},name:"gouraudMaterial",vs:Rn.replace("phongMaterial","gouraudMaterial"),fs:En.replace("phongMaterial","gouraudMaterial"),source:wn.replaceAll("phongMaterial","gouraudMaterial"),defines:{LIGHTING_VERTEX:!0},dependencies:[mr],uniformTypes:{ambient:"f32",diffuse:"f32",shininess:"f32",specularColor:"vec3<f32>"},defaultUniforms:{ambient:.35,diffuse:.6,shininess:32,specularColor:[.15,.15,.15]},getUniforms(e){let t={...e};return t.specularColor&&(t.specularColor=t.specularColor.map(r=>r/255)),{...as.defaultUniforms,...t}}};var cs={name:"phongMaterial",dependencies:[mr],source:wn,vs:En,fs:Rn,defines:{LIGHTING_FRAGMENT:!0},uniformTypes:{ambient:"f32",diffuse:"f32",shininess:"f32",specularColor:"vec3<f32>"},defaultUniforms:{ambient:.35,diffuse:.6,shininess:32,specularColor:[.15,.15,.15]},getUniforms(e){let t={...e};return t.specularColor&&(t.specularColor=t.specularColor.map(r=>r/255)),{...cs.defaultUniforms,...t}}};D();var nf={};function it(e="id"){nf[e]=nf[e]||1;let t=nf[e]++;return`${e}-${t}`}var Pn=class{id;userData={};topology;bufferLayout=[];vertexCount;indices;attributes;constructor(t){if(this.id=t.id||it("geometry"),this.topology=t.topology,this.indices=t.indices||null,this.attributes=t.attributes,this.vertexCount=t.vertexCount,this.bufferLayout=t.bufferLayout||[],this.indices&&!(this.indices.usage&O.INDEX))throw new Error("Index buffer must have INDEX usage")}destroy(){this.indices?.destroy();for(let t of Object.values(this.attributes))t.destroy()}getVertexCount(){return this.vertexCount}getAttributes(){return this.attributes}getIndexes(){return this.indices||null}_calculateVertexCount(t){return t.byteLength/12}};function Tp(e,t){if(t instanceof Pn)return t;let r=$x(e,t),{attributes:i,bufferLayout:s}=Yx(e,t);return new Pn({topology:t.topology||"triangle-list",bufferLayout:s,vertexCount:t.vertexCount,indices:r,attributes:i})}function $x(e,t){if(!t.indices)return;let r=t.indices.value;return e.createBuffer({usage:O.INDEX,data:r})}function Yx(e,t){let r=[],i={};for(let[o,n]of Object.entries(t.attributes)){let a=o;switch(o){case"POSITION":a="positions";break;case"NORMAL":a="normals";break;case"TEXCOORD_0":a="texCoords";break;case"COLOR_0":a="colors";break}if(n){i[a]=e.createBuffer({data:n.value,id:`${o}-buffer`});let{value:c,size:l,normalized:f}=n;r.push({name:a,format:Vc(c,l,f)})}}let s=t._calculateVertexCount(t.attributes,t.indices);return{attributes:i,bufferLayout:r,vertexCount:s}}D();var af=class{static getDefaultPipelineFactory(t){let r=t.getModuleData("@luma.gl/engine");return r.defaultPipelineFactory||=new af(t),r.defaultPipelineFactory}device;cachingEnabled;destroyPolicy;debug;_hashCounter=0;_hashes={};_renderPipelineCache={};_computePipelineCache={};get[Symbol.toStringTag](){return"PipelineFactory"}toString(){return`PipelineFactory(${this.device.id})`}constructor(t){this.device=t,this.cachingEnabled=t.props._cachePipelines,this.destroyPolicy=t.props._cacheDestroyPolicy,this.debug=t.props.debugFactories}createRenderPipeline(t){if(!this.cachingEnabled)return this.device.createRenderPipeline(t);let r={...vt.defaultProps,...t},i=this._renderPipelineCache,s=this._hashRenderPipeline(r),o=i[s]?.pipeline;return o?(i[s].useCount++,this.debug&&b.log(3,`${this}: ${i[s].pipeline} reused, count=${i[s].useCount}, (id=${t.id})`)()):(o=this.device.createRenderPipeline({...r,id:r.id?`${r.id}-cached`:it("unnamed-cached")}),o.hash=s,i[s]={pipeline:o,useCount:1},this.debug&&b.log(3,`${this}: ${o} created, count=${i[s].useCount}`)()),o}createComputePipeline(t){if(!this.cachingEnabled)return this.device.createComputePipeline(t);let r={...dr.defaultProps,...t},i=this._computePipelineCache,s=this._hashComputePipeline(r),o=i[s]?.pipeline;return o?(i[s].useCount++,this.debug&&b.log(3,`${this}: ${i[s].pipeline} reused, count=${i[s].useCount}, (id=${t.id})`)()):(o=this.device.createComputePipeline({...r,id:r.id?`${r.id}-cached`:void 0}),o.hash=s,i[s]={pipeline:o,useCount:1},this.debug&&b.log(3,`${this}: ${o} created, count=${i[s].useCount}`)()),o}release(t){if(!this.cachingEnabled){t.destroy();return}let r=this._getCache(t),i=t.hash;r[i].useCount--,r[i].useCount===0?(this._destroyPipeline(t),this.debug&&b.log(3,`${this}: ${t} released and destroyed`)()):r[i].useCount<0?(b.error(`${this}: ${t} released, useCount < 0, resetting`)(),r[i].useCount=0):this.debug&&b.log(3,`${this}: ${t} released, count=${r[i].useCount}`)()}_destroyPipeline(t){let r=this._getCache(t);switch(this.destroyPolicy){case"never":return!1;case"unused":return delete r[t.hash],t.destroy(),!0}}_getCache(t){let r;if(t instanceof dr&&(r=this._computePipelineCache),t instanceof vt&&(r=this._renderPipelineCache),!r)throw new Error(`${this}`);if(!r[t.hash])throw new Error(`${this}: ${t} matched incorrect entry`);return r}_hashComputePipeline(t){let{type:r}=this.device,i=this._getHash(t.shader.source);return`${r}/C/${i}`}_hashRenderPipeline(t){let r=t.vs?this._getHash(t.vs.source):0,i=t.fs?this._getHash(t.fs.source):0,s="-",o=this._getHash(JSON.stringify(t.bufferLayout)),{type:n}=this.device;switch(n){case"webgl":return`${n}/R/${r}/${i}V${s}BL${o}`;case"webgpu":default:let a=this._getHash(JSON.stringify(t.parameters));return`${n}/R/${r}/${i}V${s}T${t.topology}P${a}BL${o}`}}_getHash(t){return this._hashes[t]===void 0&&(this._hashes[t]=this._hashCounter++),this._hashes[t]}},ls=af;w(ls,"defaultProps",{...vt.defaultProps});D();var cf=class{static getDefaultShaderFactory(t){let r=t.getModuleData("@luma.gl/engine");return r.defaultShaderFactory||=new cf(t),r.defaultShaderFactory}device;cachingEnabled;destroyPolicy;debug;_cache={};get[Symbol.toStringTag](){return"ShaderFactory"}toString(){return`${this[Symbol.toStringTag]}(${this.device.id})`}constructor(t){this.device=t,this.cachingEnabled=t.props._cacheShaders,this.destroyPolicy=t.props._cacheDestroyPolicy,this.debug=!0}createShader(t){if(!this.cachingEnabled)return this.device.createShader(t);let r=this._hashShader(t),i=this._cache[r];if(i)i.useCount++,this.debug&&b.log(3,`${this}: Reusing shader ${i.shader.id} count=${i.useCount}`)();else{let s=this.device.createShader({...t,id:t.id?`${t.id}-cached`:void 0});this._cache[r]=i={shader:s,useCount:1},this.debug&&b.log(3,`${this}: Created new shader ${s.id}`)()}return i.shader}release(t){if(!this.cachingEnabled){t.destroy();return}let r=this._hashShader(t),i=this._cache[r];if(i)if(i.useCount--,i.useCount===0)this.destroyPolicy==="unused"&&(delete this._cache[r],i.shader.destroy(),this.debug&&b.log(3,`${this}: Releasing shader ${t.id}, destroyed`)());else{if(i.useCount<0)throw new Error(`ShaderFactory: Shader ${t.id} released too many times`);this.debug&&b.log(3,`${this}: Releasing shader ${t.id} count=${i.useCount}`)()}}_hashShader(t){return`${t.stage}:${t.source}`}},fs=cf;w(fs,"defaultProps",{...ze.defaultProps});function yp(e,t){let r={},i="Values";if(e.attributes.length===0&&!e.varyings?.length)return{"No attributes or varyings":{[i]:"N/A"}};for(let s of e.attributes)if(s){let o=`${s.location} ${s.name}: ${s.type}`;r[`in ${o}`]={[i]:s.stepMode||"vertex"}}for(let s of e.varyings||[]){let o=`${s.location} ${s.name}`;r[`out ${o}`]={[i]:JSON.stringify(s)}}return r}var nt=null,lf=null;function bp(e,{id:t,minimap:r,opaque:i,top:s="0",left:o="0",rgbaScale:n=1}){nt||(nt=document.createElement("canvas"),nt.id=t,nt.title=t,nt.style.zIndex="100",nt.style.position="absolute",nt.style.top=s,nt.style.left=o,nt.style.border="blue 5px solid",nt.style.transform="scaleY(-1)",document.body.appendChild(nt),lf=nt.getContext("2d")),(nt.width!==e.width||nt.height!==e.height)&&(nt.width=e.width/2,nt.height=e.height/2,nt.style.width="400px",nt.style.height="400px");let a=e.device.readPixelsToArrayWebGL(e),c=lf?.createImageData(e.width,e.height);if(c){for(let f=0;f<a.length;f+=4)c.data[0+f+0]=a[f+0]*n,c.data[0+f+1]=a[f+1]*n,c.data[0+f+2]=a[f+2]*n,c.data[0+f+3]=i?255:a[f+3]*n;lf?.putImageData(c,0,0)}}function Mn(e,t,r){if(e===t)return!0;if(!r||!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!Mn(e[i],t[i],r-1))return!1;return!0}if(Array.isArray(t))return!1;if(typeof e=="object"&&typeof t=="object"){let i=Object.keys(e),s=Object.keys(t);if(i.length!==s.length)return!1;for(let o of i)if(!t.hasOwnProperty(o)||!Mn(e[o],t[o],r-1))return!1;return!0}return!1}D();var li=class{bufferLayouts;constructor(t){this.bufferLayouts=t}getBufferLayout(t){return this.bufferLayouts.find(r=>r.name===t)||null}getAttributeNamesForBuffer(t){return t.attributes?t.attributes?.map(r=>r.attribute):[t.name]}mergeBufferLayouts(t,r){let i=[...t];for(let s of r){let o=i.findIndex(n=>n.name===s.name);o<0?i.push(s):i[o]=s}return i}getBufferIndex(t){let r=this.bufferLayouts.findIndex(i=>i.name===t);return r===-1&&b.warn(`BufferLayout: Missing buffer for "${t}".`)(),r}};function xp(e,t){let r=Object.fromEntries(e.attributes.map(s=>[s.name,s.location])),i=t.slice();return i.sort((s,o)=>{let n=s.attributes?s.attributes.map(f=>f.attribute):[s.name],a=o.attributes?o.attributes.map(f=>f.attribute):[o.name],c=Math.min(...n.map(f=>r[f])),l=Math.min(...a.map(f=>r[f]));return c-l}),i}D();function Ap(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Sp(e){return Array.isArray(e)?e.length===0||typeof e[0]=="number":!1}function ff(e){return Ap(e)||Sp(e)}function Kx(e){return ff(e)||typeof e=="number"||typeof e=="boolean"}function Ep(e){let t={bindings:{},uniforms:{}};return Object.keys(e).forEach(r=>{let i=e[r];Kx(i)?t.uniforms[r]=i:t.bindings[r]=i}),t}var vn=class{options={disableWarnings:!1};modules;moduleUniforms;moduleBindings;constructor(t,r){Object.assign(this.options,r);let i=oi(Object.values(t).filter(s=>s.dependencies));for(let s of i)t[s.name]=s;b.log(1,"Creating ShaderInputs with modules",Object.keys(t))(),this.modules=t,this.moduleUniforms={},this.moduleBindings={};for(let[s,o]of Object.entries(t))this._addModule(o),o.name&&s!==o.name&&!this.options.disableWarnings&&b.warn(`Module name: ${s} vs ${o.name}`)()}destroy(){}setProps(t){for(let r of Object.keys(t)){let i=r,s=t[i]||{},o=this.modules[i];if(!o){this.options.disableWarnings||b.warn(`Module ${r} not found`)();continue}let n=this.moduleUniforms[i],a=this.moduleBindings[i],c=o.getUniforms?.(s,n)||s,{uniforms:l,bindings:f}=Ep(c);this.moduleUniforms[i]={...n,...l},this.moduleBindings[i]={...a,...f}}}getModules(){return Object.values(this.modules)}getUniformValues(){return this.moduleUniforms}getBindingValues(){let t={};for(let r of Object.values(this.moduleBindings))Object.assign(t,r);return t}getDebugTable(){let t={};for(let[r,i]of Object.entries(this.moduleUniforms))for(let[s,o]of Object.entries(i))t[`${r}.${s}`]={type:this.modules[r].uniformTypes?.[s],value:String(o)};return t}_addModule(t){let r=t.name;this.moduleUniforms[r]=t.defaultUniforms||{},this.moduleBindings[r]={}}};D();D();var hf={"+X":0,"-X":1,"+Y":2,"-Y":3,"+Z":4,"-Z":5};function hs(e){return e?Array.isArray(e)?e[0]??null:e:null}function Rp(e){let{dimension:t,data:r}=e;if(!r)return null;switch(t){case"1d":{let i=hs(r);if(!i)return null;let{width:s}=us(i);return{width:s,height:1}}case"2d":{let i=hs(r);return i?us(i):null}case"3d":case"2d-array":{if(!Array.isArray(r)||r.length===0)return null;let i=hs(r[0]);return i?us(i):null}case"cube":{let i=Object.keys(r)[0]??null;if(!i)return null;let s=r[i],o=hs(s);return o?us(o):null}case"cube-array":{if(!Array.isArray(r)||r.length===0)return null;let i=r[0],s=Object.keys(i)[0]??null;if(!s)return null;let o=hs(i[s]);return o?us(o):null}default:return null}}function us(e){if(Zr(e))return Yi(e);if(typeof e=="object"&&"width"in e&&"height"in e)return{width:e.width,height:e.height};throw new Error("Unsupported mip-level data")}function qx(e){return typeof e=="object"&&e!==null&&"data"in e&&"width"in e&&"height"in e}function wp(e){let t=hf[e];if(t===void 0)throw new Error(`Invalid cube face: ${e}`);return t}function Zx(e,t){return 6*e+wp(t)}function Pp(e){throw new Error("setTexture1DData not supported in WebGL.")}function Jx(e){return Array.isArray(e)?e:[e]}function fi(e,t){let r=Jx(t),i=e,s=[];for(let o=0;o<r.length;o++){let n=r[o];if(Zr(n))s.push({type:"external-image",image:n,z:i,mipLevel:o});else if(qx(n))s.push({type:"texture-data",data:n,z:i,mipLevel:o});else throw new Error("Unsupported 2D mip-level payload")}return s}function Mp(e){let t=[];for(let r=0;r<e.length;r++)t.push(...fi(r,e[r]));return t}function vp(e){let t=[];for(let r=0;r<e.length;r++)t.push(...fi(r,e[r]));return t}function Cp(e){let t=[];for(let[r,i]of Object.entries(e)){let s=wp(r);t.push(...fi(s,i))}return t}function Ip(e){let t=[];return e.forEach((r,i)=>{for(let[s,o]of Object.entries(r)){let n=Zx(i,s);fi(n,o)}}),t}var uf=class{device;id;props;_texture=null;_sampler=null;_view=null;ready;isReady=!1;destroyed=!1;resolveReady=()=>{};rejectReady=()=>{};get texture(){if(!this._texture)throw new Error("Texture not initialized yet");return this._texture}get sampler(){if(!this._sampler)throw new Error("Sampler not initialized yet");return this._sampler}get view(){if(!this._view)throw new Error("View not initialized yet");return this._view}get[Symbol.toStringTag](){return"DynamicTexture"}toString(){return`DynamicTexture:"${this.id}":${this.texture.width}x${this.texture.height}px:(${this.isReady?"ready":"loading..."})`}constructor(t,r){this.device=t;let i=it("dynamic-texture"),s=r;this.props={...uf.defaultProps,id:i,...r,data:null},this.id=this.props.id,this.ready=new Promise((o,n)=>{this.resolveReady=o,this.rejectReady=n}),this.initAsync(s)}async initAsync(t){try{let r=await this._loadAllData(t);this._checkNotDestroyed();let s=(()=>{if(this.props.width&&this.props.height)return{width:this.props.width,height:this.props.height};let l=Rp(r);return l||{width:this.props.width||1,height:this.props.height||1}})();if(!s||s.width<=0||s.height<=0)throw new Error(`${this} size could not be determined or was zero`);let o={...this.props,...s,mipLevels:1,data:void 0},n=this.device.getMipLevelCount(o.width,o.height),a=this.props.mipLevels==="auto"?n:Math.max(1,Math.min(n,this.props.mipLevels??1)),c={...o,mipLevels:a};if(this._texture=this.device.createTexture(c),this._sampler=this.texture.sampler,this._view=this.texture.view,r.data)switch(r.dimension){case"1d":this.setTexture1DData(r.data);break;case"2d":this.setTexture2DData(r.data);break;case"3d":this.setTexture3DData(r.data);break;case"2d-array":this.setTextureArrayData(r.data);break;case"cube":this.setTextureCubeData(r.data);break;case"cube-array":this.setTextureCubeArrayData(r.data);break;default:throw new Error(`Unhandled dimension ${r.dimension}`)}this.props.mipmaps&&this.generateMipmaps(),this.isReady=!0,this.resolveReady(this.texture),b.info(0,`${this} created`)()}catch(r){let i=r instanceof Error?r:new Error(String(r));throw this.rejectReady(i),i}}destroy(){this._texture&&(this._texture.destroy(),this._texture=null,this._sampler=null,this._view=null),this.destroyed=!0}generateMipmaps(){this.device.type==="webgl"?this.texture.generateMipmapsWebGL():b.warn("Mipmap generation not yet implemented on WebGPU: your texture data will not be correctly initialized")}setSampler(t={}){this._checkReady();let r=t instanceof Mt?t:this.device.createSampler(t);this.texture.setSampler(r),this._sampler=r}resize(t){if(this._checkReady(),t.width===this.texture.width&&t.height===this.texture.height)return!1;let r=this.texture;return this._texture=r.clone(t),this._sampler=this.texture.sampler,this._view=this.texture.view,r.destroy(),b.info(`${this} resized`),!0}getCubeFaceIndex(t){let r=hf[t];if(r===void 0)throw new Error(`Invalid cube face: ${t}`);return r}getCubeArrayFaceIndex(t,r){return 6*t+this.getCubeFaceIndex(r)}setTexture1DData(t){if(this._checkReady(),this.texture.props.dimension!=="1d")throw new Error(`${this} is not 1d`);let r=Pp(t);this._setTextureSubresources(r)}setTexture2DData(t,r=0){if(this._checkReady(),this.texture.props.dimension!=="2d")throw new Error(`${this} is not 2d`);let i=fi(r,t);this._setTextureSubresources(i)}setTexture3DData(t){if(this.texture.props.dimension!=="3d")throw new Error(`${this} is not 3d`);let r=Mp(t);this._setTextureSubresources(r)}setTextureArrayData(t){if(this.texture.props.dimension!=="2d-array")throw new Error(`${this} is not 2d-array`);let r=vp(t);this._setTextureSubresources(r)}setTextureCubeData(t){if(this.texture.props.dimension!=="cube")throw new Error(`${this} is not cube`);let r=Cp(t);this._setTextureSubresources(r)}setTextureCubeArrayData(t){if(this.texture.props.dimension!=="cube-array")throw new Error(`${this} is not cube-array`);let r=Ip(t);this._setTextureSubresources(r)}_setTextureSubresources(t){for(let r of t){let{z:i,mipLevel:s}=r;switch(r.type){case"external-image":let{image:o,flipY:n}=r;this.texture.copyExternalImage({image:o,z:i,mipLevel:s,flipY:n});break;case"texture-data":let{data:a}=r;this.texture.copyImageData({data:a.data,z:i,mipLevel:s});break;default:throw new Error("Unsupported 2D mip-level payload")}}}async _loadAllData(t){let r=await Op(t.data);return{dimension:t.dimension??"2d",data:r??null}}_checkNotDestroyed(){this.destroyed&&b.warn(`${this} already destroyed`)}_checkReady(){this.isReady||b.warn(`${this} Cannot perform this operation before ready`)}},_r=uf;w(_r,"defaultProps",{...k.defaultProps,dimension:"2d",data:null,mipmaps:!1});async function Op(e){if(e=await e,Array.isArray(e))return await Promise.all(e.map(Op));if(e&&typeof e=="object"&&e.constructor===Object){let t=e,r=await Promise.all(Object.values(t)),i=Object.keys(t),s={};for(let o=0;o<i.length;o++)s[i[o]]=r[o];return s}return e}var Tr=2,Qx=1e4,df=class{device;id;source;vs;fs;pipelineFactory;shaderFactory;userData={};parameters;topology;bufferLayout;isInstanced=void 0;instanceCount=0;vertexCount;indexBuffer=null;bufferAttributes={};constantAttributes={};bindings={};vertexArray;transformFeedback=null;pipeline;shaderInputs;_uniformStore;_attributeInfos={};_gpuGeometry=null;props;_pipelineNeedsUpdate="newly created";_needsRedraw="initializing";_destroyed=!1;_lastDrawTimestamp=-1;get[Symbol.toStringTag](){return"Model"}toString(){return`Model(${this.id})`}constructor(t,r){this.props={...df.defaultProps,...r},r=this.props,this.id=r.id||it("model"),this.device=t,Object.assign(this.userData,r.userData);let i=Object.fromEntries(this.props.modules?.map(c=>[c.name,c])||[]),s=r.shaderInputs||new vn(i,{disableWarnings:this.props.disableWarnings});this.setShaderInputs(s);let o=t1(t),n=(this.props.modules?.length>0?this.props.modules:this.shaderInputs?.getModules())||[];if(this.device.type==="webgpu"&&this.props.source){let{source:c,getUniforms:l}=this.props.shaderAssembler.assembleWGSLShader({platformInfo:o,...this.props,modules:n});this.source=c,this._getModuleUniforms=l,this.props.shaderLayout||=t.getShaderLayout(this.source)}else{let{vs:c,fs:l,getUniforms:f}=this.props.shaderAssembler.assembleGLSLShaderPair({platformInfo:o,...this.props,modules:n});this.vs=c,this.fs=l,this._getModuleUniforms=f}this.vertexCount=this.props.vertexCount,this.instanceCount=this.props.instanceCount,this.topology=this.props.topology,this.bufferLayout=this.props.bufferLayout,this.parameters=this.props.parameters,r.geometry&&this.setGeometry(r.geometry),this.pipelineFactory=r.pipelineFactory||ls.getDefaultPipelineFactory(this.device),this.shaderFactory=r.shaderFactory||fs.getDefaultShaderFactory(this.device),this.pipeline=this._updatePipeline(),this.vertexArray=t.createVertexArray({shaderLayout:this.pipeline.shaderLayout,bufferLayout:this.pipeline.bufferLayout}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry),"isInstanced"in r&&(this.isInstanced=r.isInstanced),r.instanceCount&&this.setInstanceCount(r.instanceCount),r.vertexCount&&this.setVertexCount(r.vertexCount),r.indexBuffer&&this.setIndexBuffer(r.indexBuffer),r.attributes&&this.setAttributes(r.attributes),r.constantAttributes&&this.setConstantAttributes(r.constantAttributes),r.bindings&&this.setBindings(r.bindings),r.transformFeedback&&(this.transformFeedback=r.transformFeedback)}destroy(){this._destroyed||(this.pipelineFactory.release(this.pipeline),this.shaderFactory.release(this.pipeline.vs),this.pipeline.fs&&this.shaderFactory.release(this.pipeline.fs),this._uniformStore.destroy(),this._gpuGeometry?.destroy(),this._destroyed=!0)}needsRedraw(){this._getBindingsUpdateTimestamp()>this._lastDrawTimestamp&&this.setNeedsRedraw("contents of bound textures or buffers updated");let t=this._needsRedraw;return this._needsRedraw=!1,t}setNeedsRedraw(t){this._needsRedraw||=t}predraw(){this.updateShaderInputs(),this.pipeline=this._updatePipeline()}draw(t){let r=this._areBindingsLoading();if(r)return b.info(Tr,`>>> DRAWING ABORTED ${this.id}: ${r} not loaded`)(),!1;try{t.pushDebugGroup(`${this}.predraw(${t})`),this.predraw()}finally{t.popDebugGroup()}let i;try{t.pushDebugGroup(`${this}.draw(${t})`),this._logDrawCallStart(),this.pipeline=this._updatePipeline();let s=this._getBindings();this.pipeline.setBindings(s,{disableWarnings:this.props.disableWarnings});let{indexBuffer:o}=this.vertexArray,n=o?o.byteLength/(o.indexType==="uint32"?4:2):void 0;i=this.pipeline.draw({renderPass:t,vertexArray:this.vertexArray,isInstanced:this.isInstanced,vertexCount:this.vertexCount,instanceCount:this.instanceCount,indexCount:n,transformFeedback:this.transformFeedback||void 0,parameters:this.parameters,topology:this.topology})}finally{t.popDebugGroup(),this._logDrawCallEnd()}return this._logFramebuffer(t),i?(this._lastDrawTimestamp=this.device.timestamp,this._needsRedraw=!1):this._needsRedraw="waiting for resource initialization",i}setGeometry(t){this._gpuGeometry?.destroy();let r=t&&Tp(this.device,t);if(r){this.setTopology(r.topology||"triangle-list");let i=new li(this.bufferLayout);this.bufferLayout=i.mergeBufferLayouts(r.bufferLayout,this.bufferLayout),this.vertexArray&&this._setGeometryAttributes(r)}this._gpuGeometry=r}setTopology(t){t!==this.topology&&(this.topology=t,this._setPipelineNeedsUpdate("topology"))}setBufferLayout(t){let r=new li(this.bufferLayout);this.bufferLayout=this._gpuGeometry?r.mergeBufferLayouts(t,this._gpuGeometry.bufferLayout):t,this._setPipelineNeedsUpdate("bufferLayout"),this.pipeline=this._updatePipeline(),this.vertexArray=this.device.createVertexArray({shaderLayout:this.pipeline.shaderLayout,bufferLayout:this.pipeline.bufferLayout}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry)}setParameters(t){Mn(t,this.parameters,2)||(this.parameters=t,this._setPipelineNeedsUpdate("parameters"))}setInstanceCount(t){this.instanceCount=t,this.isInstanced===void 0&&t>0&&(this.isInstanced=!0),this.setNeedsRedraw("instanceCount")}setVertexCount(t){this.vertexCount=t,this.setNeedsRedraw("vertexCount")}setShaderInputs(t){this.shaderInputs=t,this._uniformStore=new Gi(this.shaderInputs.modules);for(let[r,i]of Object.entries(this.shaderInputs.modules))if(Gx(i)){let s=this._uniformStore.getManagedUniformBuffer(this.device,r);this.bindings[`${r}Uniforms`]=s}this.setNeedsRedraw("shaderInputs")}updateShaderInputs(){this._uniformStore.setUniforms(this.shaderInputs.getUniformValues()),this.setBindings(this.shaderInputs.getBindingValues()),this.setNeedsRedraw("shaderInputs")}setBindings(t){Object.assign(this.bindings,t),this.setNeedsRedraw("bindings")}setTransformFeedback(t){this.transformFeedback=t,this.setNeedsRedraw("transformFeedback")}setIndexBuffer(t){this.vertexArray.setIndexBuffer(t),this.setNeedsRedraw("indexBuffer")}setAttributes(t,r){let i=r?.disableWarnings??this.props.disableWarnings;t.indices&&b.warn(`Model:${this.id} setAttributes() - indexBuffer should be set using setIndexBuffer()`)(),this.bufferLayout=xp(this.pipeline.shaderLayout,this.bufferLayout);let s=new li(this.bufferLayout);for(let[o,n]of Object.entries(t)){let a=s.getBufferLayout(o);if(!a){i||b.warn(`Model(${this.id}): Missing layout for buffer "${o}".`)();continue}let c=s.getAttributeNamesForBuffer(a),l=!1;for(let f of c){let h=this._attributeInfos[f];if(h){let u=this.device.type==="webgpu"?s.getBufferIndex(h.bufferName):h.location;this.vertexArray.setBuffer(u,n),l=!0}}!l&&!i&&b.warn(`Model(${this.id}): Ignoring buffer "${n.id}" for unknown attribute "${o}"`)()}this.setNeedsRedraw("attributes")}setConstantAttributes(t,r){for(let[i,s]of Object.entries(t)){let o=this._attributeInfos[i];o?this.vertexArray.setConstantWebGL(o.location,s):(r?.disableWarnings??this.props.disableWarnings)||b.warn(`Model "${this.id}: Ignoring constant supplied for unknown attribute "${i}"`)()}this.setNeedsRedraw("constants")}_areBindingsLoading(){for(let t of Object.values(this.bindings))if(t instanceof _r&&!t.isReady)return t.id;return!1}_getBindings(){let t={};for(let[r,i]of Object.entries(this.bindings))i instanceof _r?i.isReady&&(t[r]=i.texture):t[r]=i;return t}_getBindingsUpdateTimestamp(){let t=0;for(let r of Object.values(this.bindings))r instanceof Ve?t=Math.max(t,r.texture.updateTimestamp):r instanceof O||r instanceof k?t=Math.max(t,r.updateTimestamp):r instanceof _r?t=r.texture?Math.max(t,r.texture.updateTimestamp):1/0:r instanceof Mt||(t=Math.max(t,r.buffer.updateTimestamp));return t}_setGeometryAttributes(t){let r={...t.attributes};for(let[i]of Object.entries(r))!this.pipeline.shaderLayout.attributes.find(s=>s.name===i)&&i!=="positions"&&delete r[i];this.vertexCount=t.vertexCount,this.setIndexBuffer(t.indices||null),this.setAttributes(t.attributes,{disableWarnings:!0}),this.setAttributes(r,{disableWarnings:this.props.disableWarnings}),this.setNeedsRedraw("geometry attributes")}_setPipelineNeedsUpdate(t){this._pipelineNeedsUpdate||=t,this.setNeedsRedraw(t)}_updatePipeline(){if(this._pipelineNeedsUpdate){let t=null,r=null;this.pipeline&&(b.log(1,`Model ${this.id}: Recreating pipeline because "${this._pipelineNeedsUpdate}".`)(),t=this.pipeline.vs,r=this.pipeline.fs),this._pipelineNeedsUpdate=!1;let i=this.shaderFactory.createShader({id:`${this.id}-vertex`,stage:"vertex",source:this.source||this.vs,debugShaders:this.props.debugShaders}),s=null;this.source?s=i:this.fs&&(s=this.shaderFactory.createShader({id:`${this.id}-fragment`,stage:"fragment",source:this.source||this.fs,debugShaders:this.props.debugShaders})),this.pipeline=this.pipelineFactory.createRenderPipeline({...this.props,bufferLayout:this.bufferLayout,topology:this.topology,parameters:this.parameters,bindings:this._getBindings(),vs:i,fs:s}),this._attributeInfos=an(this.pipeline.shaderLayout,this.bufferLayout),t&&this.shaderFactory.release(t),r&&this.shaderFactory.release(r)}return this.pipeline}_lastLogTime=0;_logOpen=!1;_logDrawCallStart(){let t=b.level>3?0:Qx;b.level<2||Date.now()-this._lastLogTime<t||(this._lastLogTime=Date.now(),this._logOpen=!0,b.group(Tr,`>>> DRAWING MODEL ${this.id}`,{collapsed:b.level<=2})())}_logDrawCallEnd(){if(this._logOpen){let t=yp(this.pipeline.shaderLayout,this.id);b.table(Tr,t)();let r=this.shaderInputs.getDebugTable();b.table(Tr,r)();let i=this._getAttributeDebugTable();b.table(Tr,this._attributeInfos)(),b.table(Tr,i)(),b.groupEnd(Tr)(),this._logOpen=!1}}_drawCount=0;_logFramebuffer(t){let r=this.device.props.debugFramebuffers;if(this._drawCount++,!r)return;let i=t.props.framebuffer;i&&bp(i,{id:i.id,minimap:!0})}_getAttributeDebugTable(){let t={};for(let[r,i]of Object.entries(this._attributeInfos)){let s=this.vertexArray.attributes[i.location];t[i.location]={name:r,type:i.shaderType,values:s?this._getBufferOrConstantValues(s,i.bufferDataType):"null"}}if(this.vertexArray.indexBuffer){let{indexBuffer:r}=this.vertexArray,i=r.indexType==="uint32"?new Uint32Array(r.debugData):new Uint16Array(r.debugData);t.indices={name:"indices",type:r.indexType,values:i.toString()}}return t}_getBufferOrConstantValues(t,r){let i=Te(r);return(t instanceof O?new i(t.debugData):t).toString()}},At=df;w(At,"defaultProps",{...vt.defaultProps,source:void 0,vs:null,fs:null,id:"unnamed",handle:void 0,userData:{},defines:{},modules:[],geometry:null,indexBuffer:null,attributes:{},constantAttributes:{},varyings:[],isInstanced:void 0,instanceCount:0,vertexCount:0,shaderInputs:void 0,pipelineFactory:void 0,shaderFactory:void 0,transformFeedback:void 0,shaderAssembler:je.getDefaultShaderAssembler(),debugShaders:void 0,disableWarnings:void 0});function Gx(e){return Boolean(e.uniformTypes&&!e1(e.uniformTypes))}function t1(e){return{type:e.type,shaderLanguage:e.info.shadingLanguage,shaderLanguageVersion:e.info.shadingLanguageVersion,gpu:e.info.gpu,features:e.features}}function e1(e){for(let t in e)return!1;return!0}D();var Cn=class{device;model;transformFeedback;static isSupported(t){return t?.info?.type==="webgl"}constructor(t,r=Cn.defaultProps){if(!Cn.isSupported(t))throw new Error("BufferTransform not yet implemented on WebGPU");this.device=t,this.model=new At(this.device,{id:r.id||"buffer-transform-model",fs:r.fs||rs(),topology:r.topology||"point-list",varyings:r.outputs||r.varyings,...r}),this.transformFeedback=this.device.createTransformFeedback({layout:this.model.pipeline.shaderLayout,buffers:r.feedbackBuffers}),this.model.setTransformFeedback(this.transformFeedback),Object.seal(this)}destroy(){this.model&&this.model.destroy()}delete(){this.destroy()}run(t){t?.inputBuffers&&this.model.setAttributes(t.inputBuffers),t?.outputBuffers&&this.transformFeedback.setBuffers(t.outputBuffers);let r=this.device.beginRenderPass(t);this.model.draw(r),r.end()}getBuffer(t){return this.transformFeedback.getBuffer(t)}readAsync(t){let r=this.getBuffer(t);if(!r)throw new Error("BufferTransform#getBuffer");if(r instanceof O)return r.readAsync();let{buffer:i,byteOffset:s=0,byteLength:o=i.byteLength}=r;return i.readAsync(s,o)}},Ut=Cn;w(Ut,"defaultProps",{...At.defaultProps,outputs:void 0,feedbackBuffers:void 0});var r1="transform_output",ds=class{device;model;sampler;currentIndex=0;samplerTextureMap=null;bindings=[];resources={};constructor(t,r){this.device=t,this.sampler=t.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",minFilter:"nearest",magFilter:"nearest",mipmapFilter:"nearest"}),this.model=new At(this.device,{id:r.id||it("texture-transform-model"),fs:r.fs||rs({input:r.targetTextureVarying,inputChannels:r.targetTextureChannels,output:r1}),vertexCount:r.vertexCount,...r}),this._initialize(r),Object.seal(this)}destroy(){this.model.destroy();for(let t of this.bindings)t.framebuffer?.destroy()}delete(){this.destroy()}run(t){let{framebuffer:r}=this.bindings[this.currentIndex],i=this.device.beginRenderPass({framebuffer:r,...t});this.model.draw(i),i.end(),this.device.submit()}getTargetTexture(){let{targetTexture:t}=this.bindings[this.currentIndex];return t}getFramebuffer(){return this.bindings[this.currentIndex].framebuffer}_initialize(t){this._updateBindings(t)}_updateBindings(t){this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],t)}_updateBinding(t,{sourceBuffers:r,sourceTextures:i,targetTexture:s}){if(t||(t={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(t.sourceTextures,i),Object.assign(t.sourceBuffers,r),s){t.targetTexture=s;let{width:o,height:n}=s;t.framebuffer&&t.framebuffer.destroy(),t.framebuffer=this.device.createFramebuffer({id:"transform-framebuffer",width:o,height:n,colorAttachments:[s]}),t.framebuffer.resize({width:o,height:n})}return t}_setSourceTextureParameters(){let t=this.currentIndex,{sourceTextures:r}=this.bindings[t];for(let i in r)r[i].sampler=this.sampler}};var kt=class{id;topology;vertexCount;indices;attributes;userData={};constructor(t){let{attributes:r={},indices:i=null,vertexCount:s=null}=t;this.id=t.id||it("geometry"),this.topology=t.topology,i&&(this.indices=ArrayBuffer.isView(i)?{value:i,size:1}:i),this.attributes={};for(let[o,n]of Object.entries(r)){let a=ArrayBuffer.isView(n)?{value:n}:n;if(!ArrayBuffer.isView(a.value))throw new Error(`${this._print(o)}: must be typed array or object with value as typed array`);if((o==="POSITION"||o==="positions")&&!a.size&&(a.size=3),o==="indices"){if(this.indices)throw new Error("Multiple indices detected");this.indices=a}else this.attributes[o]=a}this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this.vertexCount=s||this._calculateVertexCount(this.attributes,this.indices)}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(t){return`Geometry ${this.id} attribute ${t}`}_setAttributes(t,r){return this}_calculateVertexCount(t,r){if(r)return r.value.length;let i=1/0;for(let s of Object.values(t)){let{value:o,size:n,constant:a}=s;!a&&o&&n!==void 0&&n>=1&&(i=Math.min(i,o.length/n))}return i}};var i1=`struct VertexInputs {
815
- @location(0) clipSpacePosition: vec2<f32>,
816
- @location(1) texCoord: vec2<f32>,
817
- @location(2) coordinate: vec2<f32>
887
+ `;var us={props:{},name:"gouraudMaterial",vs:Cn.replace("phongMaterial","gouraudMaterial"),fs:Mn.replace("phongMaterial","gouraudMaterial"),source:In.replaceAll("phongMaterial","gouraudMaterial"),defines:{LIGHTING_VERTEX:!0},dependencies:[Er],uniformTypes:{ambient:"f32",diffuse:"f32",shininess:"f32",specularColor:"vec3<f32>"},defaultUniforms:{ambient:.35,diffuse:.6,shininess:32,specularColor:[.15,.15,.15]},getUniforms(t){let e={...t};return e.specularColor&&(e.specularColor=e.specularColor.map(r=>r/255)),{...us.defaultUniforms,...e}}};var ds={name:"phongMaterial",dependencies:[Er],source:In,vs:Mn,fs:Cn,defines:{LIGHTING_FRAGMENT:!0},uniformTypes:{ambient:"f32",diffuse:"f32",shininess:"f32",specularColor:"vec3<f32>"},defaultUniforms:{ambient:.35,diffuse:.6,shininess:32,specularColor:[.15,.15,.15]},getUniforms(t){let e={...t};return e.specularColor&&(e.specularColor=e.specularColor.map(r=>r/255)),{...ds.defaultUniforms,...e}}};F();var Ef={};function ie(t="id"){Ef[t]=Ef[t]||1;let e=Ef[t]++;return`${t}-${e}`}var On=class{id;userData={};topology;bufferLayout=[];vertexCount;indices;attributes;constructor(e){if(this.id=e.id||ie("geometry"),this.topology=e.topology,this.indices=e.indices||null,this.attributes=e.attributes,this.vertexCount=e.vertexCount,this.bufferLayout=e.bufferLayout||[],this.indices&&!(this.indices.usage&D.INDEX))throw new Error("Index buffer must have INDEX usage")}destroy(){this.indices?.destroy();for(let e of Object.values(this.attributes))e.destroy()}getVertexCount(){return this.vertexCount}getAttributes(){return this.attributes}getIndexes(){return this.indices||null}_calculateVertexCount(e){return e.byteLength/12}};function tg(t,e){if(e instanceof On)return e;let r=tA(t,e),{attributes:i,bufferLayout:s}=rA(t,e);return new On({topology:e.topology||"triangle-list",bufferLayout:s,vertexCount:e.vertexCount,indices:r,attributes:i})}function tA(t,e){if(!e.indices)return;let r=e.indices.value;return t.createBuffer({usage:D.INDEX,data:r})}function rA(t,e){let r=[],i={};for(let[o,n]of Object.entries(e.attributes)){let a=o;switch(o){case"POSITION":a="positions";break;case"NORMAL":a="normals";break;case"TEXCOORD_0":a="texCoords";break;case"COLOR_0":a="colors";break}if(n){i[a]=t.createBuffer({data:n.value,id:`${o}-buffer`});let{value:c,size:l,normalized:f}=n;r.push({name:a,format:rl(c,l,f)})}}let s=e._calculateVertexCount(e.attributes,e.indices);return{attributes:i,bufferLayout:r,vertexCount:s}}F();var wf=class{static getDefaultPipelineFactory(e){let r=e.getModuleData("@luma.gl/engine");return r.defaultPipelineFactory||=new wf(e),r.defaultPipelineFactory}device;_hashCounter=0;_hashes={};_renderPipelineCache={};_computePipelineCache={};_sharedRenderPipelineCache={};get[Symbol.toStringTag](){return"PipelineFactory"}toString(){return`PipelineFactory(${this.device.id})`}constructor(e){this.device=e}createRenderPipeline(e){if(!this.device.props._cachePipelines)return this.device.createRenderPipeline(e);let r={...we.defaultProps,...e},i=this._renderPipelineCache,s=this._hashRenderPipeline(r),o=i[s]?.resource;if(o)i[s].useCount++,this.device.props.debugFactories&&b.log(3,`${this}: ${i[s].resource} reused, count=${i[s].useCount}, (id=${e.id})`)();else{let n=this.device.type==="webgl"&&this.device.props._sharePipelines?this.createSharedRenderPipeline(r):void 0;o=this.device.createRenderPipeline({...r,id:r.id?`${r.id}-cached`:ie("unnamed-cached"),_sharedRenderPipeline:n}),o.hash=s,i[s]={resource:o,useCount:1},this.device.props.debugFactories&&b.log(3,`${this}: ${o} created, count=${i[s].useCount}`)()}return o}createComputePipeline(e){if(!this.device.props._cachePipelines)return this.device.createComputePipeline(e);let r={...xr.defaultProps,...e},i=this._computePipelineCache,s=this._hashComputePipeline(r),o=i[s]?.resource;return o?(i[s].useCount++,this.device.props.debugFactories&&b.log(3,`${this}: ${i[s].resource} reused, count=${i[s].useCount}, (id=${e.id})`)()):(o=this.device.createComputePipeline({...r,id:r.id?`${r.id}-cached`:void 0}),o.hash=s,i[s]={resource:o,useCount:1},this.device.props.debugFactories&&b.log(3,`${this}: ${o} created, count=${i[s].useCount}`)()),o}release(e){if(!this.device.props._cachePipelines){e.destroy();return}let r=this._getCache(e),i=e.hash;r[i].useCount--,r[i].useCount===0?(this._destroyPipeline(e),this.device.props.debugFactories&&b.log(3,`${this}: ${e} released and destroyed`)()):r[i].useCount<0?(b.error(`${this}: ${e} released, useCount < 0, resetting`)(),r[i].useCount=0):this.device.props.debugFactories&&b.log(3,`${this}: ${e} released, count=${r[i].useCount}`)()}createSharedRenderPipeline(e){let r=this._hashSharedRenderPipeline(e),i=this._sharedRenderPipelineCache[r];return i||(i={resource:this.device._createSharedRenderPipelineWebGL(e),useCount:0},this._sharedRenderPipelineCache[r]=i),i.useCount++,i.resource}releaseSharedRenderPipeline(e){if(!e.sharedRenderPipeline)return;let r=this._hashSharedRenderPipeline(e.sharedRenderPipeline.props),i=this._sharedRenderPipelineCache[r];i&&(i.useCount--,i.useCount===0&&(i.resource.destroy(),delete this._sharedRenderPipelineCache[r]))}_destroyPipeline(e){let r=this._getCache(e);return this.device.props._destroyPipelines?(delete r[e.hash],e.destroy(),e instanceof we&&this.releaseSharedRenderPipeline(e),!0):!1}_getCache(e){let r;if(e instanceof xr&&(r=this._computePipelineCache),e instanceof we&&(r=this._renderPipelineCache),!r)throw new Error(`${this}`);if(!r[e.hash])throw new Error(`${this}: ${e} matched incorrect entry`);return r}_hashComputePipeline(e){let{type:r}=this.device,i=this._getHash(e.shader.source);return`${r}/C/${i}`}_hashRenderPipeline(e){let r=e.vs?this._getHash(e.vs.source):0,i=e.fs?this._getHash(e.fs.source):0,s=this._getWebGLVaryingHash(e),o=this._getHash(JSON.stringify(e.bufferLayout)),{type:n}=this.device;switch(n){case"webgl":let a=this._getHash(JSON.stringify(e.parameters));return`${n}/R/${r}/${i}V${s}T${e.topology}P${a}BL${o}`;case"webgpu":default:let c=this._getHash(JSON.stringify(e.parameters));return`${n}/R/${r}/${i}V${s}T${e.topology}P${c}BL${o}`}}_hashSharedRenderPipeline(e){let r=e.vs?this._getHash(e.vs.source):0,i=e.fs?this._getHash(e.fs.source):0,s=this._getWebGLVaryingHash(e);return`webgl/S/${r}/${i}V${s}`}_getHash(e){return this._hashes[e]===void 0&&(this._hashes[e]=this._hashCounter++),this._hashes[e]}_getWebGLVaryingHash(e){let{varyings:r=[],bufferMode:i=null}=e;return this._getHash(JSON.stringify({varyings:r,bufferMode:i}))}},ps=wf;P(ps,"defaultProps",{...we.defaultProps});F();var Rf=class{static getDefaultShaderFactory(e){let r=e.getModuleData("@luma.gl/engine");return r.defaultShaderFactory||=new Rf(e),r.defaultShaderFactory}device;_cache={};get[Symbol.toStringTag](){return"ShaderFactory"}toString(){return`${this[Symbol.toStringTag]}(${this.device.id})`}constructor(e){this.device=e}createShader(e){if(!this.device.props._cacheShaders)return this.device.createShader(e);let r=this._hashShader(e),i=this._cache[r];if(i)i.useCount++,this.device.props.debugFactories&&b.log(3,`${this}: Reusing shader ${i.resource.id} count=${i.useCount}`)();else{let s=this.device.createShader({...e,id:e.id?`${e.id}-cached`:void 0});this._cache[r]=i={resource:s,useCount:1},this.device.props.debugFactories&&b.log(3,`${this}: Created new shader ${s.id}`)()}return i.resource}release(e){if(!this.device.props._cacheShaders){e.destroy();return}let r=this._hashShader(e),i=this._cache[r];if(i)if(i.useCount--,i.useCount===0)this.device.props._destroyShaders&&(delete this._cache[r],i.resource.destroy(),this.device.props.debugFactories&&b.log(3,`${this}: Releasing shader ${e.id}, destroyed`)());else{if(i.useCount<0)throw new Error(`ShaderFactory: Shader ${e.id} released too many times`);this.device.props.debugFactories&&b.log(3,`${this}: Releasing shader ${e.id} count=${i.useCount}`)()}}_hashShader(e){return`${e.stage}:${e.source}`}},gs=Rf;P(gs,"defaultProps",{...Kt.defaultProps});function rg(t,e){let r={},i="Values";if(t.attributes.length===0&&!t.varyings?.length)return{"No attributes or varyings":{[i]:"N/A"}};for(let s of t.attributes)if(s){let o=`${s.location} ${s.name}: ${s.type}`;r[`in ${o}`]={[i]:s.stepMode||"vertex"}}for(let s of t.varyings||[]){let o=`${s.location} ${s.name}`;r[`out ${o}`]={[i]:JSON.stringify(s)}}return r}var ne=null,Pf=null;function ig(t,{id:e,minimap:r,opaque:i,top:s="0",left:o="0",rgbaScale:n=1}){ne||(ne=document.createElement("canvas"),ne.id=e,ne.title=e,ne.style.zIndex="100",ne.style.position="absolute",ne.style.top=s,ne.style.left=o,ne.style.border="blue 5px solid",ne.style.transform="scaleY(-1)",document.body.appendChild(ne),Pf=ne.getContext("2d")),(ne.width!==t.width||ne.height!==t.height)&&(ne.width=t.width/2,ne.height=t.height/2,ne.style.width="400px",ne.style.height="400px");let a=t.device.readPixelsToArrayWebGL(t),c=Pf?.createImageData(t.width,t.height);if(c){for(let f=0;f<a.length;f+=4)c.data[0+f+0]=a[f+0]*n,c.data[0+f+1]=a[f+1]*n,c.data[0+f+2]=a[f+2]*n,c.data[0+f+3]=i?255:a[f+3]*n;Pf?.putImageData(c,0,0)}}function Nn(t,e,r){if(t===e)return!0;if(!r||!t||!e)return!1;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let i=0;i<t.length;i++)if(!Nn(t[i],e[i],r-1))return!1;return!0}if(Array.isArray(e))return!1;if(typeof t=="object"&&typeof e=="object"){let i=Object.keys(t),s=Object.keys(e);if(i.length!==s.length)return!1;for(let o of i)if(!e.hasOwnProperty(o)||!Nn(t[o],e[o],r-1))return!1;return!0}return!1}F();var di=class{bufferLayouts;constructor(e){this.bufferLayouts=e}getBufferLayout(e){return this.bufferLayouts.find(r=>r.name===e)||null}getAttributeNamesForBuffer(e){return e.attributes?e.attributes?.map(r=>r.attribute):[e.name]}mergeBufferLayouts(e,r){let i=[...e];for(let s of r){let o=i.findIndex(n=>n.name===s.name);o<0?i.push(s):i[o]=s}return i}getBufferIndex(e){let r=this.bufferLayouts.findIndex(i=>i.name===e);return r===-1&&b.warn(`BufferLayout: Missing buffer for "${e}".`)(),r}};function sg(t,e){let r=1/0;for(let i of t){let s=e[i];s!==void 0&&(r=Math.min(r,s))}return r}function og(t,e){let r=Object.fromEntries(t.attributes.map(s=>[s.name,s.location])),i=e.slice();return i.sort((s,o)=>{let n=s.attributes?s.attributes.map(f=>f.attribute):[s.name],a=o.attributes?o.attributes.map(f=>f.attribute):[o.name],c=sg(n,r),l=sg(a,r);return c-l}),i}F();function ng(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function ag(t){return Array.isArray(t)?t.length===0||typeof t[0]=="number":!1}function vf(t){return ng(t)||ag(t)}function iA(t){return vf(t)||typeof t=="number"||typeof t=="boolean"}function cg(t){let e={bindings:{},uniforms:{}};return Object.keys(t).forEach(r=>{let i=t[r];iA(i)?e.uniforms[r]=i:e.bindings[r]=i}),e}var Dn=class{options={disableWarnings:!1};modules;moduleUniforms;moduleBindings;constructor(e,r){Object.assign(this.options,r);let i=li(Object.values(e).filter(s=>s.dependencies));for(let s of i)e[s.name]=s;b.log(1,"Creating ShaderInputs with modules",Object.keys(e))(),this.modules=e,this.moduleUniforms={},this.moduleBindings={};for(let[s,o]of Object.entries(e))this._addModule(o),o.name&&s!==o.name&&!this.options.disableWarnings&&b.warn(`Module name: ${s} vs ${o.name}`)()}destroy(){}setProps(e){for(let r of Object.keys(e)){let i=r,s=e[i]||{},o=this.modules[i];if(!o){this.options.disableWarnings||b.warn(`Module ${r} not found`)();continue}let n=this.moduleUniforms[i],a=this.moduleBindings[i],c=o.getUniforms?.(s,n)||s,{uniforms:l,bindings:f}=cg(c);this.moduleUniforms[i]={...n,...l},this.moduleBindings[i]={...a,...f}}}getModules(){return Object.values(this.modules)}getUniformValues(){return this.moduleUniforms}getBindingValues(){let e={};for(let r of Object.values(this.moduleBindings))Object.assign(e,r);return e}getDebugTable(){let e={};for(let[r,i]of Object.entries(this.moduleUniforms))for(let[s,o]of Object.entries(i))e[`${r}.${s}`]={type:this.modules[r].uniformTypes?.[s],value:String(o)};return e}_addModule(e){let r=e.name;this.moduleUniforms[r]=e.defaultUniforms||{},this.moduleBindings[r]={}}};F();F();var Mf={"+X":0,"-X":1,"+Y":2,"-Y":3,"+Z":4,"-Z":5};function ms(t){return t?Array.isArray(t)?t[0]??null:t:null}function lg(t){let{dimension:e,data:r}=t;if(!r)return null;switch(e){case"1d":{let i=ms(r);if(!i)return null;let{width:s}=_s(i);return{width:s,height:1}}case"2d":{let i=ms(r);return i?_s(i):null}case"3d":case"2d-array":{if(!Array.isArray(r)||r.length===0)return null;let i=ms(r[0]);return i?_s(i):null}case"cube":{let i=Object.keys(r)[0]??null;if(!i)return null;let s=r[i],o=ms(s);return o?_s(o):null}case"cube-array":{if(!Array.isArray(r)||r.length===0)return null;let i=r[0],s=Object.keys(i)[0]??null;if(!s)return null;let o=ms(i[s]);return o?_s(o):null}default:return null}}function _s(t){if(ei(t))return Ki(t);if(typeof t=="object"&&"width"in t&&"height"in t)return{width:t.width,height:t.height};throw new Error("Unsupported mip-level data")}function sA(t){return typeof t=="object"&&t!==null&&"data"in t&&"width"in t&&"height"in t}function Cf(t){let{textureFormat:e,format:r}=t;if(e&&r&&e!==r)throw new Error(`Conflicting texture formats "${e}" and "${r}" provided for the same mip level`);return e??r}function fg(t){let e=Mf[t];if(e===void 0)throw new Error(`Invalid cube face: ${t}`);return e}function oA(t,e){return 6*t+fg(e)}function If(t){throw new Error("setTexture1DData not supported in WebGL.")}function nA(t){return Array.isArray(t)?t:[t]}function wr(t,e){let r=nA(e),i=t,s=[];for(let o=0;o<r.length;o++){let n=r[o];if(ei(n))s.push({type:"external-image",image:n,z:i,mipLevel:o});else if(sA(n))s.push({type:"texture-data",data:n,textureFormat:Cf(n),z:i,mipLevel:o});else throw new Error("Unsupported 2D mip-level payload")}return s}function Of(t){let e=[];for(let r=0;r<t.length;r++)e.push(...wr(r,t[r]));return e}function Nf(t){let e=[];for(let r=0;r<t.length;r++)e.push(...wr(r,t[r]));return e}function Df(t){let e=[];for(let[r,i]of Object.entries(t)){let s=fg(r);e.push(...wr(s,i))}return e}function Ff(t){let e=[];return t.forEach((r,i)=>{for(let[s,o]of Object.entries(r)){let n=oA(i,s);e.push(...wr(n,o))}}),e}var Bf=class{device;id;props;_texture=null;_sampler=null;_view=null;ready;isReady=!1;destroyed=!1;resolveReady=()=>{};rejectReady=()=>{};get texture(){if(!this._texture)throw new Error("Texture not initialized yet");return this._texture}get sampler(){if(!this._sampler)throw new Error("Sampler not initialized yet");return this._sampler}get view(){if(!this._view)throw new Error("View not initialized yet");return this._view}get[Symbol.toStringTag](){return"DynamicTexture"}toString(){return`DynamicTexture:"${this.id}":${this.texture.width}x${this.texture.height}px:(${this.isReady?"ready":"loading..."})`}constructor(e,r){this.device=e;let i=ie("dynamic-texture"),s=r;this.props={...Bf.defaultProps,id:i,...r,data:null},this.id=this.props.id,this.ready=new Promise((o,n)=>{this.resolveReady=o,this.rejectReady=n}),this.initAsync(s)}async initAsync(e){try{let r=await this._loadAllData(e);this._checkNotDestroyed();let i=r.data?aA(r):[],s="format"in e&&e.format!==void 0,o="usage"in e&&e.usage!==void 0,a=(()=>{if(this.props.width&&this.props.height)return{width:this.props.width,height:this.props.height};let g=lg(r);return g||{width:this.props.width||1,height:this.props.height||1}})();if(!a||a.width<=0||a.height<=0)throw new Error(`${this} size could not be determined or was zero`);let c=cA(this.device,i,a,{format:s?e.format:void 0}),l=c.format??this.props.format,f={...this.props,...a,format:l,mipLevels:1,data:void 0};this.device.isTextureFormatCompressed(l)&&!o&&(f.usage=U.SAMPLE|U.COPY_DST);let h=this.props.mipmaps&&!c.hasExplicitMipChain&&!this.device.isTextureFormatCompressed(l);if(this.device.type==="webgpu"&&h){let g=this.props.dimension==="3d"?U.SAMPLE|U.STORAGE|U.COPY_DST|U.COPY_SRC:U.SAMPLE|U.RENDER|U.COPY_DST|U.COPY_SRC;f.usage|=g}let u=this.device.getMipLevelCount(f.width,f.height),d=c.hasExplicitMipChain?c.mipLevels:this.props.mipLevels==="auto"?u:Math.max(1,Math.min(u,this.props.mipLevels??1)),p={...f,mipLevels:d};this._texture=this.device.createTexture(p),this._sampler=this.texture.sampler,this._view=this.texture.view,c.subresources.length&&this._setTextureSubresources(c.subresources),this.props.mipmaps&&!c.hasExplicitMipChain&&!h&&b.warn(`${this} skipping auto-generated mipmaps for compressed texture format`)(),h&&this.generateMipmaps(),this.isReady=!0,this.resolveReady(this.texture),b.info(0,`${this} created`)()}catch(r){let i=r instanceof Error?r:new Error(String(r));throw this.rejectReady(i),i}}destroy(){this._texture&&(this._texture.destroy(),this._texture=null,this._sampler=null,this._view=null),this.destroyed=!0}generateMipmaps(){this.device.type==="webgl"?this.texture.generateMipmapsWebGL():this.device.type==="webgpu"?this.device.generateMipmapsWebGPU(this.texture):b.warn(`${this} mipmaps not supported on ${this.device.type}`)}setSampler(e={}){this._checkReady();let r=e instanceof Ne?e:this.device.createSampler(e);this.texture.setSampler(r),this._sampler=r}resize(e){if(this._checkReady(),e.width===this.texture.width&&e.height===this.texture.height)return!1;let r=this.texture;return this._texture=r.clone(e),this._sampler=this.texture.sampler,this._view=this.texture.view,r.destroy(),b.info(`${this} resized`),!0}getCubeFaceIndex(e){let r=Mf[e];if(r===void 0)throw new Error(`Invalid cube face: ${e}`);return r}getCubeArrayFaceIndex(e,r){return 6*e+this.getCubeFaceIndex(r)}setTexture1DData(e){if(this._checkReady(),this.texture.props.dimension!=="1d")throw new Error(`${this} is not 1d`);let r=If(e);this._setTextureSubresources(r)}setTexture2DData(e,r=0){if(this._checkReady(),this.texture.props.dimension!=="2d")throw new Error(`${this} is not 2d`);let i=wr(r,e);this._setTextureSubresources(i)}setTexture3DData(e){if(this.texture.props.dimension!=="3d")throw new Error(`${this} is not 3d`);let r=Of(e);this._setTextureSubresources(r)}setTextureArrayData(e){if(this.texture.props.dimension!=="2d-array")throw new Error(`${this} is not 2d-array`);let r=Nf(e);this._setTextureSubresources(r)}setTextureCubeData(e){if(this.texture.props.dimension!=="cube")throw new Error(`${this} is not cube`);let r=Df(e);this._setTextureSubresources(r)}setTextureCubeArrayData(e){if(this.texture.props.dimension!=="cube-array")throw new Error(`${this} is not cube-array`);let r=Ff(e);this._setTextureSubresources(r)}_setTextureSubresources(e){for(let r of e){let{z:i,mipLevel:s}=r;switch(r.type){case"external-image":let{image:o,flipY:n}=r;this.texture.copyExternalImage({image:o,z:i,mipLevel:s,flipY:n});break;case"texture-data":let{data:a,textureFormat:c}=r;if(c&&c!==this.texture.format)throw new Error(`${this} mip level ${s} uses format "${c}" but texture format is "${this.texture.format}"`);this.texture.writeData(a.data,{x:0,y:0,z:i,width:a.width,height:a.height,depthOrArrayLayers:1,mipLevel:s});break;default:throw new Error("Unsupported 2D mip-level payload")}}}async _loadAllData(e){let r=await dg(e.data);return{dimension:e.dimension??"2d",data:r??null}}_checkNotDestroyed(){this.destroyed&&b.warn(`${this} already destroyed`)}_checkReady(){this.isReady||b.warn(`${this} Cannot perform this operation before ready`)}},Rr=Bf;P(Rr,"defaultProps",{...U.defaultProps,dimension:"2d",data:null,mipmaps:!1});function aA(t){if(!t.data)return[];switch(t.dimension){case"1d":return If(t.data);case"2d":return wr(0,t.data);case"3d":return Of(t.data);case"2d-array":return Nf(t.data);case"cube":return Df(t.data);case"cube-array":return Ff(t.data);default:throw new Error(`Unhandled dimension ${t.dimension}`)}}function cA(t,e,r,i){if(e.length===0)return{subresources:e,mipLevels:1,format:i.format,hasExplicitMipChain:!1};let s=new Map;for(let f of e){let h=s.get(f.z)??[];h.push(f),s.set(f.z,h)}let o=e.some(f=>f.mipLevel>0),n=i.format,a=Number.POSITIVE_INFINITY,c=[];for(let[f,h]of s){let u=[...h].sort((T,y)=>T.mipLevel-y.mipLevel),d=u[0];if(!d||d.mipLevel!==0)throw new Error(`DynamicTexture: slice ${f} is missing mip level 0`);let p=ug(t,d);if(p.width!==r.width||p.height!==r.height)throw new Error(`DynamicTexture: slice ${f} base level dimensions ${p.width}x${p.height} do not match expected ${r.width}x${r.height}`);let g=hg(d);if(g){if(n&&n!==g)throw new Error(`DynamicTexture: slice ${f} base level format "${g}" does not match texture format "${n}"`);n=g}let m=n&&t.isTextureFormatCompressed(n)?lA(t,p.width,p.height,n):t.getMipLevelCount(p.width,p.height),_=0;for(let T=0;T<u.length;T++){let y=u[T];if(!y||y.mipLevel!==T||T>=m)break;let x=ug(t,y),S=Math.max(1,p.width>>T),A=Math.max(1,p.height>>T);if(x.width!==S||x.height!==A)break;let w=hg(y);if(w&&(n||(n=w),w!==n))break;_++,c.push(y)}a=Math.min(a,_)}let l=Number.isFinite(a)?Math.max(1,a):1;return{subresources:c.filter(f=>f.mipLevel<l),mipLevels:l,format:n,hasExplicitMipChain:o}}function hg(t){if(t.type==="texture-data")return t.textureFormat??Cf(t.data)}function ug(t,e){switch(e.type){case"external-image":return t.getExternalImageSize(e.image);case"texture-data":return{width:e.data.width,height:e.data.height};default:throw new Error("Unsupported texture subresource")}}function lA(t,e,r,i){let{blockWidth:s=1,blockHeight:o=1}=t.getTextureFormatInfo(i),n=1;for(let a=1;;a++){let c=Math.max(1,e>>a),l=Math.max(1,r>>a);if(c<s||l<o)break;n++}return n}async function dg(t){if(t=await t,Array.isArray(t))return await Promise.all(t.map(dg));if(t&&typeof t=="object"&&t.constructor===Object){let e=t,r=await Promise.all(Object.values(e)),i=Object.keys(e),s={};for(let o=0;o<i.length;o++)s[i[o]]=r[o];return s}return t}var Pr=2,fA=1e4,Lf=class{device;id;source;vs;fs;pipelineFactory;shaderFactory;userData={};parameters;topology;bufferLayout;isInstanced=void 0;instanceCount=0;vertexCount;indexBuffer=null;bufferAttributes={};constantAttributes={};bindings={};vertexArray;transformFeedback=null;pipeline;shaderInputs;_uniformStore;_attributeInfos={};_gpuGeometry=null;props;_pipelineNeedsUpdate="newly created";_needsRedraw="initializing";_destroyed=!1;_lastDrawTimestamp=-1;get[Symbol.toStringTag](){return"Model"}toString(){return`Model(${this.id})`}constructor(e,r){this.props={...Lf.defaultProps,...r},r=this.props,this.id=r.id||ie("model"),this.device=e,Object.assign(this.userData,r.userData);let i=Object.fromEntries(this.props.modules?.map(c=>[c.name,c])||[]),s=r.shaderInputs||new Dn(i,{disableWarnings:this.props.disableWarnings});this.setShaderInputs(s);let o=uA(e),n=(this.props.modules?.length>0?this.props.modules:this.shaderInputs?.getModules())||[];if(this.device.type==="webgpu"&&this.props.source){let{source:c,getUniforms:l}=this.props.shaderAssembler.assembleWGSLShader({platformInfo:o,...this.props,modules:n});this.source=c,this._getModuleUniforms=l,this.props.shaderLayout||=e.getShaderLayout(this.source)}else{let{vs:c,fs:l,getUniforms:f}=this.props.shaderAssembler.assembleGLSLShaderPair({platformInfo:o,...this.props,modules:n});this.vs=c,this.fs=l,this._getModuleUniforms=f}this.vertexCount=this.props.vertexCount,this.instanceCount=this.props.instanceCount,this.topology=this.props.topology,this.bufferLayout=this.props.bufferLayout,this.parameters=this.props.parameters,r.geometry&&this.setGeometry(r.geometry),this.pipelineFactory=r.pipelineFactory||ps.getDefaultPipelineFactory(this.device),this.shaderFactory=r.shaderFactory||gs.getDefaultShaderFactory(this.device),this.pipeline=this._updatePipeline(),this.vertexArray=e.createVertexArray({shaderLayout:this.pipeline.shaderLayout,bufferLayout:this.pipeline.bufferLayout}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry),"isInstanced"in r&&(this.isInstanced=r.isInstanced),r.instanceCount&&this.setInstanceCount(r.instanceCount),r.vertexCount&&this.setVertexCount(r.vertexCount),r.indexBuffer&&this.setIndexBuffer(r.indexBuffer),r.attributes&&this.setAttributes(r.attributes),r.constantAttributes&&this.setConstantAttributes(r.constantAttributes),r.bindings&&this.setBindings(r.bindings),r.transformFeedback&&(this.transformFeedback=r.transformFeedback)}destroy(){this._destroyed||(this.pipelineFactory.release(this.pipeline),this.shaderFactory.release(this.pipeline.vs),this.pipeline.fs&&this.pipeline.fs!==this.pipeline.vs&&this.shaderFactory.release(this.pipeline.fs),this._uniformStore.destroy(),this._gpuGeometry?.destroy(),this._destroyed=!0)}needsRedraw(){this._getBindingsUpdateTimestamp()>this._lastDrawTimestamp&&this.setNeedsRedraw("contents of bound textures or buffers updated");let e=this._needsRedraw;return this._needsRedraw=!1,e}setNeedsRedraw(e){this._needsRedraw||=e}predraw(){this.updateShaderInputs(),this.pipeline=this._updatePipeline()}draw(e){let r=this._areBindingsLoading();if(r)return b.info(Pr,`>>> DRAWING ABORTED ${this.id}: ${r} not loaded`)(),!1;try{e.pushDebugGroup(`${this}.predraw(${e})`),this.predraw()}finally{e.popDebugGroup()}let i;try{e.pushDebugGroup(`${this}.draw(${e})`),this._logDrawCallStart(),this.pipeline=this._updatePipeline();let s=this._getBindings(),{indexBuffer:o}=this.vertexArray,n=o?o.byteLength/(o.indexType==="uint32"?4:2):void 0;i=this.pipeline.draw({renderPass:e,vertexArray:this.vertexArray,isInstanced:this.isInstanced,vertexCount:this.vertexCount,instanceCount:this.instanceCount,indexCount:n,transformFeedback:this.transformFeedback||void 0,bindings:s,uniforms:this.props.uniforms,parameters:this.parameters,topology:this.topology})}finally{e.popDebugGroup(),this._logDrawCallEnd()}return this._logFramebuffer(e),i?(this._lastDrawTimestamp=this.device.timestamp,this._needsRedraw=!1):this._needsRedraw="waiting for resource initialization",i}setGeometry(e){this._gpuGeometry?.destroy();let r=e&&tg(this.device,e);if(r){this.setTopology(r.topology||"triangle-list");let i=new di(this.bufferLayout);this.bufferLayout=i.mergeBufferLayouts(r.bufferLayout,this.bufferLayout),this.vertexArray&&this._setGeometryAttributes(r)}this._gpuGeometry=r}setTopology(e){e!==this.topology&&(this.topology=e,this._setPipelineNeedsUpdate("topology"))}setBufferLayout(e){let r=new di(this.bufferLayout);this.bufferLayout=this._gpuGeometry?r.mergeBufferLayouts(e,this._gpuGeometry.bufferLayout):e,this._setPipelineNeedsUpdate("bufferLayout"),this.pipeline=this._updatePipeline(),this.vertexArray=this.device.createVertexArray({shaderLayout:this.pipeline.shaderLayout,bufferLayout:this.pipeline.bufferLayout}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry)}setParameters(e){Nn(e,this.parameters,2)||(this.parameters=e,this._setPipelineNeedsUpdate("parameters"))}setInstanceCount(e){this.instanceCount=e,this.isInstanced===void 0&&e>0&&(this.isInstanced=!0),this.setNeedsRedraw("instanceCount")}setVertexCount(e){this.vertexCount=e,this.setNeedsRedraw("vertexCount")}setShaderInputs(e){this.shaderInputs=e,this._uniformStore=new is(this.shaderInputs.modules);for(let[r,i]of Object.entries(this.shaderInputs.modules))if(hA(i)){let s=this._uniformStore.getManagedUniformBuffer(this.device,r);this.bindings[`${r}Uniforms`]=s}this.setNeedsRedraw("shaderInputs")}updateShaderInputs(){this._uniformStore.setUniforms(this.shaderInputs.getUniformValues()),this.setBindings(this.shaderInputs.getBindingValues()),this.setNeedsRedraw("shaderInputs")}setBindings(e){Object.assign(this.bindings,e),this.setNeedsRedraw("bindings")}setTransformFeedback(e){this.transformFeedback=e,this.setNeedsRedraw("transformFeedback")}setIndexBuffer(e){this.vertexArray.setIndexBuffer(e),this.setNeedsRedraw("indexBuffer")}setAttributes(e,r){let i=r?.disableWarnings??this.props.disableWarnings;e.indices&&b.warn(`Model:${this.id} setAttributes() - indexBuffer should be set using setIndexBuffer()`)(),this.bufferLayout=og(this.pipeline.shaderLayout,this.bufferLayout);let s=new di(this.bufferLayout);for(let[o,n]of Object.entries(e)){let a=s.getBufferLayout(o);if(!a){i||b.warn(`Model(${this.id}): Missing layout for buffer "${o}".`)();continue}let c=s.getAttributeNamesForBuffer(a),l=!1;for(let f of c){let h=this._attributeInfos[f];if(h){let u=this.device.type==="webgpu"?s.getBufferIndex(h.bufferName):h.location;this.vertexArray.setBuffer(u,n),l=!0}}!l&&!i&&b.warn(`Model(${this.id}): Ignoring buffer "${n.id}" for unknown attribute "${o}"`)()}this.setNeedsRedraw("attributes")}setConstantAttributes(e,r){for(let[i,s]of Object.entries(e)){let o=this._attributeInfos[i];o?this.vertexArray.setConstantWebGL(o.location,s):(r?.disableWarnings??this.props.disableWarnings)||b.warn(`Model "${this.id}: Ignoring constant supplied for unknown attribute "${i}"`)()}this.setNeedsRedraw("constants")}_areBindingsLoading(){for(let e of Object.values(this.bindings))if(e instanceof Rr&&!e.isReady)return e.id;return!1}_getBindings(){let e={};for(let[r,i]of Object.entries(this.bindings))i instanceof Rr?i.isReady&&(e[r]=i.texture):e[r]=i;return e}_getBindingsUpdateTimestamp(){let e=0;for(let r of Object.values(this.bindings))r instanceof Zt?e=Math.max(e,r.texture.updateTimestamp):r instanceof D||r instanceof U?e=Math.max(e,r.updateTimestamp):r instanceof Rr?e=r.texture?Math.max(e,r.texture.updateTimestamp):1/0:r instanceof Ne||(e=Math.max(e,r.buffer.updateTimestamp));return e}_setGeometryAttributes(e){let r={...e.attributes};for(let[i]of Object.entries(r))!this.pipeline.shaderLayout.attributes.find(s=>s.name===i)&&i!=="positions"&&delete r[i];this.vertexCount=e.vertexCount,this.setIndexBuffer(e.indices||null),this.setAttributes(e.attributes,{disableWarnings:!0}),this.setAttributes(r,{disableWarnings:this.props.disableWarnings}),this.setNeedsRedraw("geometry attributes")}_setPipelineNeedsUpdate(e){this._pipelineNeedsUpdate||=e,this.setNeedsRedraw(e)}_updatePipeline(){if(this._pipelineNeedsUpdate){let e=null,r=null;this.pipeline&&(b.log(1,`Model ${this.id}: Recreating pipeline because "${this._pipelineNeedsUpdate}".`)(),e=this.pipeline.vs,r=this.pipeline.fs),this._pipelineNeedsUpdate=!1;let i=this.shaderFactory.createShader({id:`${this.id}-vertex`,stage:"vertex",source:this.source||this.vs,debugShaders:this.props.debugShaders}),s=null;this.source?s=i:this.fs&&(s=this.shaderFactory.createShader({id:`${this.id}-fragment`,stage:"fragment",source:this.source||this.fs,debugShaders:this.props.debugShaders})),this.pipeline=this.pipelineFactory.createRenderPipeline({...this.props,bufferLayout:this.bufferLayout,topology:this.topology,parameters:this.parameters,bindings:this._getBindings(),vs:i,fs:s}),this._attributeInfos=un(this.pipeline.shaderLayout,this.bufferLayout),e&&this.shaderFactory.release(e),r&&r!==e&&this.shaderFactory.release(r)}return this.pipeline}_lastLogTime=0;_logOpen=!1;_logDrawCallStart(){let e=b.level>3?0:fA;b.level<2||Date.now()-this._lastLogTime<e||(this._lastLogTime=Date.now(),this._logOpen=!0,b.group(Pr,`>>> DRAWING MODEL ${this.id}`,{collapsed:b.level<=2})())}_logDrawCallEnd(){if(this._logOpen){let e=rg(this.pipeline.shaderLayout,this.id);b.table(Pr,e)();let r=this.shaderInputs.getDebugTable();b.table(Pr,r)();let i=this._getAttributeDebugTable();b.table(Pr,this._attributeInfos)(),b.table(Pr,i)(),b.groupEnd(Pr)(),this._logOpen=!1}}_drawCount=0;_logFramebuffer(e){let r=this.device.props.debugFramebuffers;if(this._drawCount++,!r)return;let i=e.props.framebuffer;i&&ig(i,{id:i.id,minimap:!0})}_getAttributeDebugTable(){let e={};for(let[r,i]of Object.entries(this._attributeInfos)){let s=this.vertexArray.attributes[i.location];e[i.location]={name:r,type:i.shaderType,values:s?this._getBufferOrConstantValues(s,i.bufferDataType):"null"}}if(this.vertexArray.indexBuffer){let{indexBuffer:r}=this.vertexArray,i=r.indexType==="uint32"?new Uint32Array(r.debugData):new Uint16Array(r.debugData);e.indices={name:"indices",type:r.indexType,values:i.toString()}}return e}_getBufferOrConstantValues(e,r){let i=Et(r);return(e instanceof D?new i(e.debugData):e).toString()}},Pe=Lf;P(Pe,"defaultProps",{...we.defaultProps,source:void 0,vs:null,fs:null,id:"unnamed",handle:void 0,userData:{},defines:{},modules:[],geometry:null,indexBuffer:null,attributes:{},constantAttributes:{},bindings:{},uniforms:{},varyings:[],isInstanced:void 0,instanceCount:0,vertexCount:0,shaderInputs:void 0,pipelineFactory:void 0,shaderFactory:void 0,transformFeedback:void 0,shaderAssembler:qt.getDefaultShaderAssembler(),debugShaders:void 0,disableWarnings:void 0});function hA(t){return Boolean(t.uniformTypes&&!dA(t.uniformTypes))}function uA(t){return{type:t.type,shaderLanguage:t.info.shadingLanguage,shaderLanguageVersion:t.info.shadingLanguageVersion,gpu:t.info.gpu,features:t.features}}function dA(t){for(let e in t)return!1;return!0}F();var Fn=class{device;model;transformFeedback;static isSupported(e){return e?.info?.type==="webgl"}constructor(e,r=Fn.defaultProps){if(!Fn.isSupported(e))throw new Error("BufferTransform not yet implemented on WebGPU");this.device=e,this.model=new Pe(this.device,{id:r.id||"buffer-transform-model",fs:r.fs||as(),topology:r.topology||"point-list",varyings:r.outputs||r.varyings,...r}),this.transformFeedback=this.device.createTransformFeedback({layout:this.model.pipeline.shaderLayout,buffers:r.feedbackBuffers}),this.model.setTransformFeedback(this.transformFeedback),Object.seal(this)}destroy(){this.model&&this.model.destroy()}delete(){this.destroy()}run(e){e?.inputBuffers&&this.model.setAttributes(e.inputBuffers),e?.outputBuffers&&this.transformFeedback.setBuffers(e.outputBuffers);let r=this.device.beginRenderPass(e);this.model.draw(r),r.end()}getBuffer(e){return this.transformFeedback.getBuffer(e)}readAsync(e){let r=this.getBuffer(e);if(!r)throw new Error("BufferTransform#getBuffer");if(r instanceof D)return r.readAsync();let{buffer:i,byteOffset:s=0,byteLength:o=i.byteLength}=r;return i.readAsync(s,o)}},ze=Fn;P(ze,"defaultProps",{...Pe.defaultProps,outputs:void 0,feedbackBuffers:void 0});var pA="transform_output",ys=class{device;model;sampler;currentIndex=0;samplerTextureMap=null;bindings=[];resources={};constructor(e,r){this.device=e,this.sampler=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",minFilter:"nearest",magFilter:"nearest",mipmapFilter:"nearest"}),this.model=new Pe(this.device,{id:r.id||ie("texture-transform-model"),fs:r.fs||as({input:r.targetTextureVarying,inputChannels:r.targetTextureChannels,output:pA}),vertexCount:r.vertexCount,...r}),this._initialize(r),Object.seal(this)}destroy(){this.model.destroy();for(let e of this.bindings)e.framebuffer?.destroy()}delete(){this.destroy()}run(e){let{framebuffer:r}=this.bindings[this.currentIndex],i=this.device.beginRenderPass({framebuffer:r,...e});this.model.draw(i),i.end(),this.device.submit()}getTargetTexture(){let{targetTexture:e}=this.bindings[this.currentIndex];return e}getFramebuffer(){return this.bindings[this.currentIndex].framebuffer}_initialize(e){this._updateBindings(e)}_updateBindings(e){this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],e)}_updateBinding(e,{sourceBuffers:r,sourceTextures:i,targetTexture:s}){if(e||(e={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(e.sourceTextures,i),Object.assign(e.sourceBuffers,r),s){e.targetTexture=s;let{width:o,height:n}=s;e.framebuffer&&e.framebuffer.destroy(),e.framebuffer=this.device.createFramebuffer({id:"transform-framebuffer",width:o,height:n,colorAttachments:[s]}),e.framebuffer.resize({width:o,height:n})}return e}_setSourceTextureParameters(){let e=this.currentIndex,{sourceTextures:r}=this.bindings[e];for(let i in r)r[i].sampler=this.sampler}};var We=class{id;topology;vertexCount;indices;attributes;userData={};constructor(e){let{attributes:r={},indices:i=null,vertexCount:s=null}=e;this.id=e.id||ie("geometry"),this.topology=e.topology,i&&(this.indices=ArrayBuffer.isView(i)?{value:i,size:1}:i),this.attributes={};for(let[o,n]of Object.entries(r)){let a=ArrayBuffer.isView(n)?{value:n}:n;if(!ArrayBuffer.isView(a.value))throw new Error(`${this._print(o)}: must be typed array or object with value as typed array`);if((o==="POSITION"||o==="positions")&&!a.size&&(a.size=3),o==="indices"){if(this.indices)throw new Error("Multiple indices detected");this.indices=a}else this.attributes[o]=a}this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this.vertexCount=s||this._calculateVertexCount(this.attributes,this.indices)}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(e){return`Geometry ${this.id} attribute ${e}`}_setAttributes(e,r){return this}_calculateVertexCount(e,r){if(r)return r.value.length;let i=1/0;for(let s of Object.values(e)){let{value:o,size:n,constant:a}=s;!a&&o&&n!==void 0&&n>=1&&(i=Math.min(i,o.length/n))}return i}};var gA=`struct VertexInputs {
888
+ @location(0) clipSpacePositions: vec2<f32>,
889
+ @location(1) texCoords: vec2<f32>,
890
+ @location(2) coordinates: vec2<f32>
818
891
  }
819
892
 
820
893
  struct FragmentInputs {
@@ -827,13 +900,13 @@ struct FragmentInputs {
827
900
  @vertex
828
901
  fn vertexMain(inputs: VertexInputs) -> FragmentInputs {
829
902
  var outputs: FragmentInputs;
830
- outputs.Position = vec4(inputs.clipSpacePosition, 0., 1.);
831
- outputs.position = inputs.clipSpacePosition;
832
- outputs.coordinate = inputs.coordinate;
833
- outputs.uv = inputs.texCoord;
903
+ outputs.Position = vec4(inputs.clipSpacePositions, 0., 1.);
904
+ outputs.position = inputs.clipSpacePositions;
905
+ outputs.coordinate = inputs.coordinates;
906
+ outputs.uv = inputs.texCoords;
834
907
  return outputs;
835
908
  }
836
- `,s1=`#version 300 es
909
+ `,mA=`#version 300 es
837
910
  in vec2 clipSpacePositions;
838
911
  in vec2 texCoords;
839
912
  in vec2 coordinates;
@@ -848,16 +921,16 @@ void main(void) {
848
921
  coordinate = coordinates;
849
922
  uv = texCoords;
850
923
  }
851
- `,Np=[-1,-1,1,-1,-1,1,1,1],ps=class extends At{constructor(t,r){let i=Np.map(s=>s===-1?0:s);r.source&&(r={...r,source:`${i1}
852
- ${r.source}`}),super(t,{id:r.id||it("clip-space"),...r,vs:s1,vertexCount:4,geometry:new kt({topology:"triangle-strip",vertexCount:4,attributes:{clipSpacePositions:{size:2,value:new Float32Array(Np)},texCoords:{size:2,value:new Float32Array(i)},coordinates:{size:2,value:new Float32Array(i)}}})})}};var te=class{id;matrix=new j;display=!0;position=new z;rotation=new z;scale=new z(1,1,1);userData={};props={};constructor(t={}){let{id:r}=t;this.id=r||it(this.constructor.name),this._setScenegraphNodeProps(t)}getBounds(){return null}destroy(){}delete(){this.destroy()}setProps(t){return this._setScenegraphNodeProps(t),this}toString(){return`{type: ScenegraphNode, id: ${this.id})}`}setPosition(t){return this.position=t,this}setRotation(t){return this.rotation=t,this}setScale(t){return this.scale=t,this}setMatrix(t,r=!0){r?this.matrix.copy(t):this.matrix=t}setMatrixComponents(t){let{position:r,rotation:i,scale:s,update:o=!0}=t;return r&&this.setPosition(r),i&&this.setRotation(i),s&&this.setScale(s),o&&this.updateMatrix(),this}updateMatrix(){let t=this.position,r=this.rotation,i=this.scale;return this.matrix.identity(),this.matrix.translate(t),this.matrix.rotateXYZ(r),this.matrix.scale(i),this}update(t={}){let{position:r,rotation:i,scale:s}=t;return r&&this.setPosition(r),i&&this.setRotation(i),s&&this.setScale(s),this.updateMatrix(),this}getCoordinateUniforms(t,r){r=r||this.matrix;let i=new j(t).multiplyRight(r),s=i.invert(),o=s.transpose();return{viewMatrix:t,modelMatrix:r,objectMatrix:r,worldMatrix:i,worldInverseMatrix:s,worldInverseTransposeMatrix:o}}_setScenegraphNodeProps(t){"position"in t&&this.setPosition(t.position),"rotation"in t&&this.setRotation(t.rotation),"scale"in t&&this.setScale(t.scale),"matrix"in t&&this.setMatrix(t.matrix),Object.assign(this.props,t)}};D();var yr=class extends te{children;constructor(t={}){t=Array.isArray(t)?{children:t}:t;let{children:r=[]}=t;b.assert(r.every(i=>i instanceof te),"every child must an instance of ScenegraphNode"),super(t),this.children=r}getBounds(){let t=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]];return this.traverse((r,{worldMatrix:i})=>{let s=r.getBounds();if(!s)return;let[o,n]=s,a=new z(o).add(n).divide([2,2,2]);i.transformAsPoint(a,a);let c=new z(n).subtract(o).divide([2,2,2]);i.transformAsVector(c,c);for(let l=0;l<8;l++){let f=new z(l&1?-1:1,l&2?-1:1,l&4?-1:1).multiply(c).add(a);for(let h=0;h<3;h++)t[0][h]=Math.min(t[0][h],f[h]),t[1][h]=Math.max(t[1][h],f[h])}}),Number.isFinite(t[0][0])?t:null}destroy(){this.children.forEach(t=>t.destroy()),this.removeAll(),super.destroy()}add(...t){for(let r of t)Array.isArray(r)?this.add(...r):this.children.push(r);return this}remove(t){let r=this.children,i=r.indexOf(t);return i>-1&&r.splice(i,1),this}removeAll(){return this.children=[],this}traverse(t,{worldMatrix:r=new j}={}){let i=new j(r).multiplyRight(this.matrix);for(let s of this.children)s instanceof yr?s.traverse(t,{worldMatrix:i}):t(s,{worldMatrix:i})}};var gs=class extends te{model;bounds=null;managedResources;constructor(t){super(t),this.model=t.model,this.managedResources=t.managedResources||[],this.bounds=t.bounds||null,this.setProps(t)}destroy(){this.model&&(this.model.destroy(),this.model=null),this.managedResources.forEach(t=>t.destroy()),this.managedResources=[]}getBounds(){return this.bounds}draw(t){return this.model.draw(t)}};var ms=class extends kt{constructor(t={}){let{id:r=it("cube-geometry"),indices:i=!0}=t;super(i?{...t,id:r,topology:"triangle-list",indices:{size:1,value:o1},attributes:{...u1,...t.attributes}}:{...t,id:r,topology:"triangle-list",indices:void 0,attributes:{...d1,...t.attributes}})}},o1=new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]),n1=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1]),a1=new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0]),c1=new Float32Array([0,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1]),l1=new Float32Array([1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1]),f1=new Float32Array([1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0]),h1=new Float32Array([1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1]),u1={POSITION:{size:3,value:n1},NORMAL:{size:3,value:a1},TEXCOORD_0:{size:2,value:c1}},d1={POSITION:{size:3,value:l1},TEXCOORD_0:{size:2,value:f1},COLOR_0:{size:3,value:h1}};var _s=class extends kt{constructor(t={}){let{id:r=it("sphere-geometry")}=t,{indices:i,attributes:s}=p1(t);super({...t,id:r,topology:"triangle-list",indices:i,attributes:{...s,...t.attributes}})}};function p1(e){let{nlat:t=10,nlong:r=10}=e,o=Math.PI-0,n=0,c=2*Math.PI-n,l=(t+1)*(r+1),f=(_,y,T,x,S)=>e.radius||1,h=new Float32Array(l*3),u=new Float32Array(l*3),d=new Float32Array(l*2),p=l>65535?Uint32Array:Uint16Array,g=new p(t*r*6);for(let _=0;_<=t;_++)for(let y=0;y<=r;y++){let T=y/r,x=_/t,S=y+_*(r+1),E=S*2,v=S*3,P=c*T,R=o*x,M=Math.sin(P),L=Math.cos(P),C=Math.sin(R),W=Math.cos(R),U=L*C,G=W,de=M*C,pe=f(U,G,de,T,x);h[v+0]=pe*U,h[v+1]=pe*G,h[v+2]=pe*de,u[v+0]=U,u[v+1]=G,u[v+2]=de,d[E+0]=T,d[E+1]=1-x}let m=r+1;for(let _=0;_<r;_++)for(let y=0;y<t;y++){let T=(_*t+y)*6;g[T+0]=y*m+_,g[T+1]=y*m+_+1,g[T+2]=(y+1)*m+_,g[T+3]=(y+1)*m+_,g[T+4]=y*m+_+1,g[T+5]=(y+1)*m+_+1}return{indices:{size:1,value:g},attributes:{POSITION:{size:3,value:h},NORMAL:{size:3,value:u},TEXCOORD_0:{size:2,value:d}}}}var{stats:g1,getSupportedAdapters:m1,setDefaultDeviceProps:_1,attachDevice:T1,createDevice:y1,enforceWebGL2:b1}=ke;var jf={};ge(jf,{fetchFile:()=>gi,load:()=>Ke,parse:()=>Ye,registerLoaders:()=>Ps});function He(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var ee={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},x1=ee.self||ee.window||ee.global||{},A1=ee.window||ee.self||ee.global||{},S1=ee.global||ee.self||ee.window||{},E1=ee.document||{};var br=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var Dp=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),R1=Dp&&parseFloat(Dp[1])||0;zi();var gf="4.4.0-alpha.16",w1=gf[0]>="0"&&gf[0]<="9"?`v${gf}`:"";function P1(){let e=new ht({id:"loaders.gl"});return globalThis.loaders||={},globalThis.loaders.log=e,globalThis.loaders.version=w1,globalThis.probe||={},globalThis.probe.loaders=e,e}var mf=P1();var M1=e=>typeof e=="boolean",re=e=>typeof e=="function",ie=e=>e!==null&&typeof e=="object",In=e=>ie(e)&&e.constructor==={}.constructor;var _f=e=>typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer,hi=e=>ie(e)&&typeof e.byteLength=="number"&&typeof e.slice=="function";var Tf=e=>Boolean(e)&&re(e[Symbol.iterator]),yf=e=>Boolean(e)&&re(e[Symbol.asyncIterator]);var St=e=>typeof Response<"u"&&e instanceof Response||ie(e)&&re(e.arrayBuffer)&&re(e.text)&&re(e.json);var Et=e=>typeof Blob<"u"&&e instanceof Blob;var Fp=e=>typeof ReadableStream<"u"&&e instanceof ReadableStream||ie(e)&&re(e.tee)&&re(e.cancel)&&re(e.getReader);var Bp=e=>ie(e)&&re(e.read)&&re(e.pipe)&&M1(e.readable),Ts=e=>Fp(e)||Bp(e);function bf(e,t){return Lp(e||{},t)}function Lp(e,t,r=0){if(r>3)return t;let i={...e};for(let[s,o]of Object.entries(t))o&&typeof o=="object"&&!Array.isArray(o)?i[s]=Lp(i[s]||{},t[s],r+1):i[s]=t[s];return i}var Up="beta";function v1(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.16"),globalThis._loadersgl_.version}var kp=v1();function dt(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}var se={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},_N=se.self||se.window||se.global||{},TN=se.window||se.self||se.global||{},yN=se.global||se.self||se.window||{},bN=se.document||{};var It=typeof process!="object"||String(process)!=="[object process]"||process.browser;var zp=typeof window<"u"&&typeof window.orientation<"u",Vp=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),xN=Vp&&parseFloat(Vp[1])||0;var ys=class{name;workerThread;isRunning=!0;result;_resolve=()=>{};_reject=()=>{};constructor(t,r){this.name=t,this.workerThread=r,this.result=new Promise((i,s)=>{this._resolve=i,this._reject=s})}postMessage(t,r){this.workerThread.postMessage({source:"loaders.gl",type:t,payload:r})}done(t){dt(this.isRunning),this.isRunning=!1,this._resolve(t)}error(t){dt(this.isRunning),this.isRunning=!1,this._reject(t)}};var ui=class{terminate(){}};var xf=new Map;function jp(e){dt(e.source&&!e.url||!e.source&&e.url);let t=xf.get(e.source||e.url);return t||(e.url&&(t=C1(e.url),xf.set(e.url,t)),e.source&&(t=Wp(e.source),xf.set(e.source,t))),dt(t),t}function C1(e){if(!e.startsWith("http"))return e;let t=I1(e);return Wp(t)}function Wp(e){let t=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(t)}function I1(e){return`try {
853
- importScripts('${e}');
924
+ `,pg=[-1,-1,1,-1,-1,1,1,1],Ts=class extends Pe{constructor(e,r){let i=pg.map(s=>s===-1?0:s);r.source&&(r={...r,source:`${gA}
925
+ ${r.source}`}),super(e,{id:r.id||ie("clip-space"),...r,vs:mA,vertexCount:4,geometry:new We({topology:"triangle-strip",vertexCount:4,attributes:{clipSpacePositions:{size:2,value:new Float32Array(pg)},texCoords:{size:2,value:new Float32Array(i)},coordinates:{size:2,value:new Float32Array(i)}}})})}};function Uf(t,e){if(!t)throw new Error(e)}var st=class{id;matrix=new z;display=!0;position=new H;rotation=new H;scale=new H(1,1,1);userData={};props={};constructor(e={}){let{id:r}=e;this.id=r||ie(this.constructor.name),this._setScenegraphNodeProps(e)}getBounds(){return null}destroy(){}delete(){this.destroy()}setProps(e){return this._setScenegraphNodeProps(e),this}toString(){return`{type: ScenegraphNode, id: ${this.id})}`}setPosition(e){return Uf(e.length===3,"setPosition requires vector argument"),this.position=e,this}setRotation(e){return Uf(e.length===3||e.length===4,"setRotation requires vector argument"),this.rotation=e,this}setScale(e){return Uf(e.length===3,"setScale requires vector argument"),this.scale=e,this}setMatrix(e,r=!0){r?this.matrix.copy(e):this.matrix=e}setMatrixComponents(e){let{position:r,rotation:i,scale:s,update:o=!0}=e;return r&&this.setPosition(r),i&&this.setRotation(i),s&&this.setScale(s),o&&this.updateMatrix(),this}updateMatrix(){if(this.matrix.identity(),this.matrix.translate(this.position),this.rotation.length===4){let e=new z().fromQuaternion(this.rotation);this.matrix.multiplyRight(e)}else this.matrix.rotateXYZ(this.rotation);return this.matrix.scale(this.scale),this}update({position:e,rotation:r,scale:i}={}){return e&&this.setPosition(e),r&&this.setRotation(r),i&&this.setScale(i),this.updateMatrix(),this}getCoordinateUniforms(e,r){r=r||this.matrix;let i=new z(e).multiplyRight(r),s=i.invert(),o=s.transpose();return{viewMatrix:e,modelMatrix:r,objectMatrix:r,worldMatrix:i,worldInverseMatrix:s,worldInverseTransposeMatrix:o}}_setScenegraphNodeProps(e){e?.position&&this.setPosition(e.position),e?.rotation&&this.setRotation(e.rotation),e?.scale&&this.setScale(e.scale),this.updateMatrix(),e?.matrix&&this.setMatrix(e.matrix),Object.assign(this.props,e)}};F();var Gt=class extends st{children;constructor(e={}){e=Array.isArray(e)?{children:e}:e;let{children:r=[]}=e;b.assert(r.every(i=>i instanceof st),"every child must an instance of ScenegraphNode"),super(e),this.children=r}getBounds(){let e=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]];return this.traverse((r,{worldMatrix:i})=>{let s=r.getBounds();if(!s)return;let[o,n]=s,a=new H(o).add(n).divide([2,2,2]);i.transformAsPoint(a,a);let c=new H(n).subtract(o).divide([2,2,2]);i.transformAsVector(c,c);for(let l=0;l<8;l++){let f=new H(l&1?-1:1,l&2?-1:1,l&4?-1:1).multiply(c).add(a);for(let h=0;h<3;h++)e[0][h]=Math.min(e[0][h],f[h]),e[1][h]=Math.max(e[1][h],f[h])}}),Number.isFinite(e[0][0])?e:null}destroy(){this.children.forEach(e=>e.destroy()),this.removeAll(),super.destroy()}add(...e){for(let r of e)Array.isArray(r)?this.add(...r):this.children.push(r);return this}remove(e){let r=this.children,i=r.indexOf(e);return i>-1&&r.splice(i,1),this}removeAll(){return this.children=[],this}traverse(e,{worldMatrix:r=new z}={}){let i=new z(r).multiplyRight(this.matrix);for(let s of this.children)s instanceof Gt?s.traverse(e,{worldMatrix:i}):e(s,{worldMatrix:i})}preorderTraversal(e,{worldMatrix:r=new z}={}){let i=new z(r).multiplyRight(this.matrix);e(this,{worldMatrix:i});for(let s of this.children)s instanceof Gt?s.preorderTraversal(e,{worldMatrix:i}):e(s,{worldMatrix:i})}};var bs=class extends st{model;bounds=null;managedResources;constructor(e){super(e),this.model=e.model,this.managedResources=e.managedResources||[],this.bounds=e.bounds||null,this.setProps(e)}destroy(){this.model&&(this.model.destroy(),this.model=null),this.managedResources.forEach(e=>e.destroy()),this.managedResources=[]}getBounds(){return this.bounds}draw(e){return this.model.draw(e)}};var xs=class extends We{constructor(e={}){let{id:r=ie("cube-geometry"),indices:i=!0}=e;super(i?{...e,id:r,topology:"triangle-list",indices:{size:1,value:_A},attributes:{...EA,...e.attributes}}:{...e,id:r,topology:"triangle-list",indices:void 0,attributes:{...wA,...e.attributes}})}},_A=new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]),yA=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1]),TA=new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0]),bA=new Float32Array([0,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1]),xA=new Float32Array([1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1]),AA=new Float32Array([1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0]),SA=new Float32Array([1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1]),EA={POSITION:{size:3,value:yA},NORMAL:{size:3,value:TA},TEXCOORD_0:{size:2,value:bA}},wA={POSITION:{size:3,value:xA},TEXCOORD_0:{size:2,value:AA},COLOR_0:{size:3,value:SA}};var As=class extends We{constructor(e={}){let{id:r=ie("sphere-geometry")}=e,{indices:i,attributes:s}=RA(e);super({...e,id:r,topology:"triangle-list",indices:i,attributes:{...s,...e.attributes}})}};function RA(t){let{nlat:e=10,nlong:r=10}=t,o=Math.PI-0,n=0,c=2*Math.PI-n,l=(e+1)*(r+1),f=(_,T,y,x,S)=>t.radius||1,h=new Float32Array(l*3),u=new Float32Array(l*3),d=new Float32Array(l*2),p=l>65535?Uint32Array:Uint16Array,g=new p(e*r*6);for(let _=0;_<=e;_++)for(let T=0;T<=r;T++){let y=T/r,x=_/e,S=T+_*(r+1),A=S*2,w=S*3,v=c*y,R=o*x,M=Math.sin(v),I=Math.cos(v),C=Math.sin(R),W=Math.cos(R),V=I*C,J=W,bt=M*C,xt=f(V,J,bt,y,x);h[w+0]=xt*V,h[w+1]=xt*J,h[w+2]=xt*bt,u[w+0]=V,u[w+1]=J,u[w+2]=bt,d[A+0]=y,d[A+1]=1-x}let m=r+1;for(let _=0;_<r;_++)for(let T=0;T<e;T++){let y=(_*e+T)*6;g[y+0]=T*m+_,g[y+1]=T*m+_+1,g[y+2]=(T+1)*m+_,g[y+3]=(T+1)*m+_,g[y+4]=T*m+_+1,g[y+5]=(T+1)*m+_+1}return{indices:{size:1,value:g},attributes:{POSITION:{size:3,value:h},NORMAL:{size:3,value:u},TEXCOORD_0:{size:2,value:d}}}}var{stats:PA,getSupportedAdapters:vA,setDefaultDeviceProps:MA,attachDevice:CA,createDevice:IA,enforceWebGL2:OA}=Yt;var dh={};At(dh,{fetchFile:()=>yi,load:()=>ir,parse:()=>rr,registerLoaders:()=>Os});function Jt(t,e){if(!t)throw new Error(e||"loader assertion failed.")}var ot={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},NA=ot.self||ot.window||ot.global||{},DA=ot.window||ot.self||ot.global||{},FA=ot.global||ot.self||ot.window||{},BA=ot.document||{};var vr=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var gg=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),LA=gg&&parseFloat(gg[1])||0;ji();var Vf="4.4.0-alpha.18",UA=Vf[0]>="0"&&Vf[0]<="9"?`v${Vf}`:"";function kA(){let t=new ue({id:"loaders.gl"});return globalThis.loaders||={},globalThis.loaders.log=t,globalThis.loaders.version=UA,globalThis.probe||={},globalThis.probe.loaders=t,t}var zf=kA();var VA=t=>typeof t=="boolean",nt=t=>typeof t=="function",at=t=>t!==null&&typeof t=="object",Bn=t=>at(t)&&t.constructor==={}.constructor;var Wf=t=>typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer,pi=t=>at(t)&&typeof t.byteLength=="number"&&typeof t.slice=="function";var jf=t=>Boolean(t)&&nt(t[Symbol.iterator]),Hf=t=>Boolean(t)&&nt(t[Symbol.asyncIterator]);var ve=t=>typeof Response<"u"&&t instanceof Response||at(t)&&nt(t.arrayBuffer)&&nt(t.text)&&nt(t.json);var Me=t=>typeof Blob<"u"&&t instanceof Blob;var mg=t=>typeof ReadableStream<"u"&&t instanceof ReadableStream||at(t)&&nt(t.tee)&&nt(t.cancel)&&nt(t.getReader);var _g=t=>at(t)&&nt(t.read)&&nt(t.pipe)&&VA(t.readable),Ss=t=>mg(t)||_g(t);function $f(t,e){return yg(t||{},e)}function yg(t,e,r=0){if(r>3)return e;let i={...t};for(let[s,o]of Object.entries(e))o&&typeof o=="object"&&!Array.isArray(o)?i[s]=yg(i[s]||{},e[s],r+1):i[s]=e[s];return i}var Tg="beta";function zA(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.18"),globalThis._loadersgl_.version}var bg=zA();function ge(t,e){if(!t)throw new Error(e||"loaders.gl assertion failed.")}var ct={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},VD=ct.self||ct.window||ct.global||{},zD=ct.window||ct.self||ct.global||{},WD=ct.global||ct.self||ct.window||{},jD=ct.document||{};var Fe=typeof process!="object"||String(process)!=="[object process]"||process.browser;var Ag=typeof window<"u"&&typeof window.orientation<"u",xg=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),HD=xg&&parseFloat(xg[1])||0;var Es=class{name;workerThread;isRunning=!0;result;_resolve=()=>{};_reject=()=>{};constructor(e,r){this.name=e,this.workerThread=r,this.result=new Promise((i,s)=>{this._resolve=i,this._reject=s})}postMessage(e,r){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:r})}done(e){ge(this.isRunning),this.isRunning=!1,this._resolve(e)}error(e){ge(this.isRunning),this.isRunning=!1,this._reject(e)}};var gi=class{terminate(){}};var Xf=new Map;function Sg(t){ge(t.source&&!t.url||!t.source&&t.url);let e=Xf.get(t.source||t.url);return e||(t.url&&(e=WA(t.url),Xf.set(t.url,e)),t.source&&(e=Eg(t.source),Xf.set(t.source,e))),ge(e),e}function WA(t){if(!t.startsWith("http"))return t;let e=jA(t);return Eg(e)}function Eg(t){let e=new Blob([t],{type:"application/javascript"});return URL.createObjectURL(e)}function jA(t){return`try {
926
+ importScripts('${t}');
854
927
  } catch (error) {
855
928
  console.error(error);
856
929
  throw error;
857
- }`}function Af(e,t=!0,r){let i=r||new Set;if(e){if(Hp(e))i.add(e);else if(Hp(e.buffer))i.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(t&&typeof e=="object")for(let s in e)Af(e[s],t,i)}}return r===void 0?Array.from(i):[]}function Hp(e){return e?e instanceof ArrayBuffer||typeof MessagePort<"u"&&e instanceof MessagePort||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas:!1}var Sf=()=>{},Xe=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&It||typeof ui<"u"&&!It}constructor(t){let{name:r,source:i,url:s}=t;dt(i||s),this.name=r,this.source=i,this.url=s,this.onMessage=Sf,this.onError=o=>console.log(o),this.worker=It?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Sf,this.onError=Sf,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(t,r){r=r||Af(t),this.worker.postMessage(t,r)}_getErrorFromErrorEvent(t){let r="Failed to load ";return r+=`worker ${this.name} from ${this.url}. `,t.message&&(r+=`${t.message} in `),t.lineno&&(r+=`:${t.lineno}:${t.colno}`),new Error(r)}_createBrowserWorker(){this._loadableURL=jp({source:this.source,url:this.url});let t=new Worker(this._loadableURL,{name:this.name});return t.onmessage=r=>{r.data?this.onMessage(r.data):this.onError(new Error("No data received"))},t.onerror=r=>{this.onError(this._getErrorFromErrorEvent(r)),this.terminated=!0},t.onmessageerror=r=>console.error(r),t}_createNodeWorker(){let t;if(this.url){let i=this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`,s=this.url.endsWith(".ts")||this.url.endsWith(".mjs")?"module":"commonjs";t=new ui(i,{eval:!1,type:s})}else if(this.source)t=new ui(this.source,{eval:!0});else throw new Error("no worker");return t.on("message",r=>{this.onMessage(r)}),t.on("error",r=>{this.onError(r)}),t.on("exit",r=>{}),t}};var bs=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return Xe.isSupported()}constructor(t){this.source=t.source,this.url=t.url,this.setProps(t)}destroy(){this.idleQueue.forEach(t=>t.destroy()),this.isDestroyed=!0}setProps(t){this.props={...this.props,...t},t.name!==void 0&&(this.name=t.name),t.maxConcurrency!==void 0&&(this.maxConcurrency=t.maxConcurrency),t.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=t.maxMobileConcurrency),t.reuseWorkers!==void 0&&(this.reuseWorkers=t.reuseWorkers),t.onDebug!==void 0&&(this.onDebug=t.onDebug)}async startJob(t,r=(s,o,n)=>s.done(n),i=(s,o)=>s.error(o)){let s=new Promise(o=>(this.jobQueue.push({name:t,onMessage:r,onError:i,onStart:o}),this));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;let t=this._getAvailableWorker();if(!t)return;let r=this.jobQueue.shift();if(r){this.onDebug({message:"Starting job",name:r.name,workerThread:t,backlog:this.jobQueue.length});let i=new ys(r.name,t);t.onMessage=s=>r.onMessage(i,s.type,s.payload),t.onError=s=>r.onError(i,s),r.onStart(i);try{await i.result}catch(s){console.error(`Worker exception: ${s}`)}finally{this.returnWorkerToQueue(t)}}}returnWorkerToQueue(t){!It||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(t.destroy(),this.count--):this.idleQueue.push(t),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count<this._getMaxConcurrency()){this.count++;let t=`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;return new Xe({name:t,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return zp?this.maxMobileConcurrency:this.maxConcurrency}};var O1={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},xr=class{props;workerPools=new Map;static isSupported(){return Xe.isSupported()}static getWorkerFarm(t={}){return xr._workerFarm=xr._workerFarm||new xr({}),xr._workerFarm.setProps(t),xr._workerFarm}constructor(t){this.props={...O1},this.setProps(t),this.workerPools=new Map}destroy(){for(let t of this.workerPools.values())t.destroy();this.workerPools=new Map}setProps(t){this.props={...this.props,...t};for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(t){let{name:r,source:i,url:s}=t,o=this.workerPools.get(r);return o||(o=new bs({name:r,source:i,url:s}),o.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,o)),o}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}},$e=xr;w($e,"_workerFarm");function Ef(e,t={}){let r=t[e.id]||{},i=It?`${e.id}-worker.js`:`${e.id}-worker-node.js`,s=r.workerUrl;if(!s&&e.id==="compression"&&(s=t.workerUrl),(t._workerType||t?.core?._workerType)==="test"&&(It?s=`modules/${e.module}/dist/${i}`:s=`modules/${e.module}/src/workers/${e.id}-worker-node.ts`),!s){let n=e.version;n==="latest"&&(n=Up);let a=n?`@${n}`:"";s=`https://unpkg.com/@loaders.gl/${e.module}${a}/dist/${i}`}return dt(s),s}function Rf(e,t=kp){dt(e,"no worker provided");let r=e.version;return!(!t||!r)}function wf(e,t){if(!$e.isSupported())return!1;let r=t?._nodeWorkers??t?.core?._nodeWorkers;if(!It&&!r)return!1;let i=t?.worker??t?.core?.worker;return Boolean(e.worker&&i)}async function Pf(e,t,r,i,s){let o=e.id,n=Ef(e,r),c=$e.getWorkerFarm(r?.core).getWorkerPool({name:o,url:n});r=JSON.parse(JSON.stringify(r)),i=JSON.parse(JSON.stringify(i||{}));let l=await c.startJob("process-on-worker",N1.bind(null,s));return l.postMessage("process",{input:t,options:r,context:i}),await(await l.result).result}async function N1(e,t,r,i){switch(r){case"done":t.done(i);break;case"error":t.error(new Error(i.error));break;case"process":let{id:s,input:o,options:n}=i;try{let a=await e(o,n);t.postMessage("done",{id:s,result:a})}catch(a){let c=a instanceof Error?a.message:"unknown error";t.postMessage("error",{id:s,error:c})}break;default:console.warn(`parse-with-worker unknown message ${r}`)}}function Mf(e,t,r){if(r=r||e.byteLength,e.byteLength<r||t.byteLength<r)return!1;let i=new Uint8Array(e),s=new Uint8Array(t);for(let o=0;o<i.length;++o)if(i[o]!==s[o])return!1;return!0}function vf(...e){return Xp(e)}function Xp(e){let t=e.map(o=>o instanceof ArrayBuffer?new Uint8Array(o):o),r=t.reduce((o,n)=>o+n.byteLength,0),i=new Uint8Array(r),s=0;for(let o of t)i.set(o,s),s+=o.byteLength;return i.buffer}async function Cf(e){let t=[];for await(let r of e)t.push(D1(r));return vf(...t)}function D1(e){if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e)){let{buffer:t,byteOffset:r,byteLength:i}=e;return $p(t,r,i)}return $p(e)}function $p(e,t=0,r=e.byteLength-t){let i=new Uint8Array(e,t,r),s=new Uint8Array(i.length);return s.set(i),s.buffer}var F1="",Yp={};function If(e){for(let t in Yp)if(e.startsWith(t)){let r=Yp[t];e=e.replace(t,r)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${F1}${e}`),e}function Nn(e){return e&&typeof e=="object"&&e.isBuffer}function di(e){if(Nn(e))return e;if(e instanceof ArrayBuffer)return e;if(_f(e))return On(e);if(ArrayBuffer.isView(e)){let t=e.buffer;return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?t:t.slice(e.byteOffset,e.byteOffset+e.byteLength)}if(typeof e=="string"){let t=e;return new TextEncoder().encode(t).buffer}if(e&&typeof e=="object"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function xs(e){if(e instanceof ArrayBuffer)return e;if(_f(e))return On(e);let{buffer:t,byteOffset:r,byteLength:i}=e;return t instanceof ArrayBuffer&&r===0&&i===t.byteLength?t:On(t,r,i)}function On(e,t=0,r=e.byteLength-t){let i=new Uint8Array(e,t,r),s=new Uint8Array(i.length);return s.set(i),s.buffer}function Of(e){return ArrayBuffer.isView(e)?e:new Uint8Array(e)}var Ar={};ge(Ar,{dirname:()=>L1,filename:()=>B1,join:()=>U1,resolve:()=>k1});function Kp(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function B1(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):e}function L1(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}function U1(...e){let t="/";return e=e.map((r,i)=>(i&&(r=r.replace(new RegExp(`^${t}`),"")),i!==e.length-1&&(r=r.replace(new RegExp(`${t}$`),"")),r)),e.join(t)}function k1(...e){let t=[];for(let o=0;o<e.length;o++)t[o]=e[o];let r="",i=!1,s;for(let o=t.length-1;o>=-1&&!i;o--){let n;o>=0?n=t[o]:(s===void 0&&(s=Kp()),n=s),n.length!==0&&(r=`${n}/${r}`,i=n.charCodeAt(0)===As)}return r=V1(r,!i),i?`/${r}`:r.length>0?r:"."}var As=47,Nf=46;function V1(e,t){let r="",i=-1,s=0,o,n=!1;for(let a=0;a<=e.length;++a){if(a<e.length)o=e.charCodeAt(a);else{if(o===As)break;o=As}if(o===As){if(!(i===a-1||s===1))if(i!==a-1&&s===2){if(r.length<2||!n||r.charCodeAt(r.length-1)!==Nf||r.charCodeAt(r.length-2)!==Nf){if(r.length>2){let c=r.length-1,l=c;for(;l>=0&&r.charCodeAt(l)!==As;--l);if(l!==c){r=l===-1?"":r.slice(0,l),i=a,s=0,n=!1;continue}}else if(r.length===2||r.length===1){r="",i=a,s=0,n=!1;continue}}t&&(r.length>0?r+="/..":r="..",n=!0)}else{let c=e.slice(i+1,a);r.length>0?r+=`/${c}`:r=c,n=!1}i=a,s=0}else o===Nf&&s!==-1?++s:s=-1}return r}var Dn=class extends Error{constructor(t,r){super(t),this.reason=r.reason,this.url=r.url,this.response=r.response}reason;url;response};var W1=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,H1=/^([-\w.]+\/[-\w.+]+)/;function Df(e,t){return e.toLowerCase()===t.toLowerCase()}function qp(e){let t=H1.exec(e);return t?t[1]:e}function Ff(e){let t=W1.exec(e);return t?t[1]:""}var Zp=/\?.*/;function Jp(e){let t=e.match(Zp);return t&&t[0]}function pi(e){return e.replace(Zp,"")}function Qp(e){if(e.length<50)return e;let t=e.slice(e.length-15);return`${e.substr(0,32)}...${t}`}function Sr(e){return St(e)?e.url:Et(e)?("name"in e?e.name:"")||"":typeof e=="string"?e:""}function Ss(e){if(St(e)){let t=e.headers.get("content-type")||"",r=pi(e.url);return qp(t)||Ff(r)}return Et(e)?e.type||"":typeof e=="string"?Ff(e):""}function Gp(e){return St(e)?e.headers["content-length"]||-1:Et(e)?e.size:typeof e=="string"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}async function Fn(e){if(St(e))return e;let t={},r=Gp(e);r>=0&&(t["content-length"]=String(r));let i=Sr(e),s=Ss(e);s&&(t["content-type"]=s);let o=await $1(e);o&&(t["x-first-bytes"]=o),typeof e=="string"&&(e=new TextEncoder().encode(e));let n=new Response(e,{headers:t});return Object.defineProperty(n,"url",{value:i}),n}async function tg(e){if(!e.ok)throw await X1(e)}async function X1(e){let t=Qp(e.url),r=`Failed to fetch resource (${e.status}) ${e.statusText}: ${t}`;r=r.length>100?`${r.slice(0,100)}...`:r;let i={reason:e.statusText,url:e.url,response:e};try{let s=e.headers.get("Content-Type");i.reason=!e.bodyUsed&&s?.includes("application/json")?await e.json():await e.text()}catch{}return new Dn(r,i)}async function $1(e){if(typeof e=="string")return`data:,${e.slice(0,5)}`;if(e instanceof Blob){let r=e.slice(0,5);return await new Promise(i=>{let s=new FileReader;s.onload=o=>i(o?.target?.result),s.readAsDataURL(r)})}if(e instanceof ArrayBuffer){let r=e.slice(0,5);return`data:base64,${Y1(r)}`}return null}function Y1(e){let t="",r=new Uint8Array(e);for(let i=0;i<r.byteLength;i++)t+=String.fromCharCode(r[i]);return btoa(t)}function K1(e){return!q1(e)&&!Z1(e)}function q1(e){return e.startsWith("http:")||e.startsWith("https:")}function Z1(e){return e.startsWith("data:")}async function gi(e,t){if(typeof e=="string"){let r=If(e);return K1(r)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,t):await fetch(r,t)}return await Fn(e)}zi();var Es=new ht({id:"loaders.gl"}),Bn=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},Ln=class{console;constructor(){this.console=console}log(...t){return this.console.log.bind(this.console,...t)}info(...t){return this.console.info.bind(this.console,...t)}warn(...t){return this.console.warn.bind(this.console,...t)}error(...t){return this.console.error.bind(this.console,...t)}};var Un={core:{baseUri:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new Ln,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:br,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]}},eg={baseUri:"core.baseUri",fetch:"core.fetch",mimeType:"core.mimeType",fallbackMimeType:"core.fallbackMimeType",ignoreRegisteredLoaders:"core.ignoreRegisteredLoaders",nothrow:"core.nothrow",log:"core.log",useLocalLibraries:"core.useLocalLibraries",CDN:"core.CDN",worker:"core.worker",maxConcurrency:"core.maxConcurrency",maxMobileConcurrency:"core.maxMobileConcurrency",reuseWorkers:"core.reuseWorkers",_nodeWorkers:"core.nodeWorkers",_workerType:"core._workerType",_worker:"core._workerType",limit:"core.limit",_limitMB:"core._limitMB",batchSize:"core.batchSize",batchDebounceMs:"core.batchDebounceMs",metadata:"core.metadata",transforms:"core.transforms",throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"core.fetch.method",headers:"core.fetch.headers",body:"core.fetch.body",mode:"core.fetch.mode",credentials:"core.fetch.credentials",cache:"core.fetch.cache",redirect:"core.fetch.redirect",referrer:"core.fetch.referrer",referrerPolicy:"core.fetch.referrerPolicy",integrity:"core.fetch.integrity",keepalive:"core.fetch.keepalive",signal:"core.fetch.signal"};var Bf=["baseUri","fetch","mimeType","fallbackMimeType","ignoreRegisteredLoaders","nothrow","log","useLocalLibraries","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms"];function Lf(){globalThis.loaders=globalThis.loaders||{};let{loaders:e}=globalThis;return e._state||(e._state={}),e._state}function Uf(){let e=Lf();return e.globalOptions=e.globalOptions||{...Un,core:{...Un.core}},Er(e.globalOptions)}function sg(e,t,r,i){return r=r||[],r=Array.isArray(r)?r:[r],J1(e,r),Er(G1(t,e,i))}function Er(e){let t=eA(e);og(t);for(let r of Bf)t.core&&t.core[r]!==void 0&&delete t[r];return t.core&&t.core._workerType!==void 0&&delete t._worker,t}function J1(e,t){rg(e,null,Un,eg,t);for(let r of t){let i=e&&e[r.id]||{},s=r.options&&r.options[r.id]||{},o=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};rg(i,r.id,s,o,t)}}function rg(e,t,r,i,s){let o=t||"Top level",n=t?`${t}.`:"";for(let a in e){let c=!t&&ie(e[a]),l=a==="baseUri"&&!t,f=a==="workerUrl"&&t;if(!(a in r)&&!l&&!f){if(a in i)Es.level>0&&Es.warn(`${o} loader option '${n}${a}' no longer supported, use '${i[a]}'`)();else if(!c&&Es.level>0){let h=Q1(a,s);Es.warn(`${o} loader option '${n}${a}' not recognized. ${h}`)()}}}}function Q1(e,t){let r=e.toLowerCase(),i="";for(let s of t)for(let o in s.options){if(e===o)return`Did you mean '${s.id}.${o}'?`;let n=o.toLowerCase();(r.startsWith(n)||n.startsWith(r))&&(i=i||`Did you mean '${s.id}.${o}'?`)}return i}function G1(e,t,r){let i=e.options||{},s={...i};i.core&&(s.core={...i.core}),og(s),s.core?.log===null&&(s.core={...s.core,log:new Bn}),ig(s,Er(Uf()));let o=Er(t);return ig(s,o),tA(s,r),rA(s),s}function ig(e,t){for(let r in t)if(r in t){let i=t[r];In(i)&&In(e[r])?e[r]={...e[r],...t[r]}:e[r]=t[r]}}function tA(e,t){if(!t)return;let r=e.baseUri!==void 0,i=e.core?.baseUri!==void 0;!r&&!i&&(e.core||={},e.core.baseUri=t)}function eA(e){let t={...e};return e.core&&(t.core={...e.core}),t}function og(e){for(let r of Bf)if(e[r]!==void 0){let s=e.core=e.core||{};s[r]===void 0&&(s[r]=e[r])}let t=e._worker;t!==void 0&&(e.core||={},e.core._workerType===void 0&&(e.core._workerType=t))}function rA(e){let t=e.core;if(t)for(let r of Bf)t[r]!==void 0&&(e[r]=t[r])}function Rs(e){return e?(Array.isArray(e)&&(e=e[0]),Array.isArray(e?.extensions)):!1}function ws(e){He(e,"null loader"),He(Rs(e),"invalid loader");let t;return Array.isArray(e)&&(t=e[1],e=e[0],e={...e,options:{...e.options,...t}}),(e?.parseTextSync||e?.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}var ng=()=>{let e=Lf();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function Ps(e){let t=ng();e=Array.isArray(e)?e:[e];for(let r of e){let i=ws(r);t.find(s=>i===s)||t.unshift(i)}}function ag(){return ng()}var iA=/\.([^.]+)$/;async function fg(e,t=[],r,i){if(!hg(e))return null;let s=Er(r||{});s.core||={};let o=cg(e,t,{...s,core:{...s.core,nothrow:!0}},i);if(o)return o;if(Et(e)&&(e=await e.slice(0,10).arrayBuffer(),o=cg(e,t,s,i)),!o&&!s.core.nothrow)throw new Error(ug(e));return o}function cg(e,t=[],r,i){if(!hg(e))return null;let s=Er(r||{});if(s.core||={},t&&!Array.isArray(t))return ws(t);let o=[];t&&(o=o.concat(t)),s.core.ignoreRegisteredLoaders||o.push(...ag()),oA(o);let n=sA(e,o,s,i);if(!n&&!s.core.nothrow)throw new Error(ug(e));return n}function sA(e,t,r,i){let s=Sr(e),o=Ss(e),n=pi(s)||i?.url,a=null,c="";return r?.core?.mimeType&&(a=kf(t,r?.core?.mimeType),c=`match forced by supplied MIME type ${r?.core?.mimeType}`),a=a||nA(t,n),c=c||(a?`matched url ${n}`:""),a=a||kf(t,o),c=c||(a?`matched MIME type ${o}`:""),a=a||cA(t,e),c=c||(a?`matched initial data ${dg(e)}`:""),r?.core?.fallbackMimeType&&(a=a||kf(t,r?.core?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${o}`:"")),c&&mf.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function hg(e){return!(e instanceof Response&&e.status===204)}function ug(e){let t=Sr(e),r=Ss(e),i="No valid loader found (";i+=t?`${Ar.filename(t)}, `:"no url provided, ",i+=`MIME type: ${r?`"${r}"`:"not provided"}, `;let s=e?dg(e):"";return i+=s?` first bytes: "${s}"`:"first bytes: not available",i+=")",i}function oA(e){for(let t of e)ws(t)}function nA(e,t){let r=t&&iA.exec(t),i=r&&r[1];return i?aA(e,i):null}function aA(e,t){t=t.toLowerCase();for(let r of e)for(let i of r.extensions)if(i.toLowerCase()===t)return r;return null}function kf(e,t){for(let r of e)if(r.mimeTypes?.some(i=>Df(t,i))||Df(t,`application/x.${r.id}`))return r;return null}function cA(e,t){if(!t)return null;for(let r of e)if(typeof t=="string"){if(lA(t,r))return r}else if(ArrayBuffer.isView(t)){if(lg(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer&&lg(t,0,r))return r;return null}function lA(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some(i=>e.startsWith(i))}function lg(e,t,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(s=>fA(e,t,r,s))}function fA(e,t,r,i){if(hi(i))return Mf(i,e,i.byteLength);switch(typeof i){case"function":return i(xs(e));case"string":let s=Vf(e,t,i.length);return i===s;default:return!1}}function dg(e,t=5){return typeof e=="string"?e.slice(0,t):ArrayBuffer.isView(e)?Vf(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?Vf(e,0,t):""}function Vf(e,t,r){if(e.byteLength<t+r)return"";let i=new DataView(e),s="";for(let o=0;o<r;o++)s+=String.fromCharCode(i.getUint8(t+o));return s}var hA=256*1024;function*pg(e,t){let r=t?.chunkSize||hA,i=0,s=new TextEncoder;for(;i<e.length;){let o=Math.min(e.length-i,r),n=e.slice(i,i+o);i+=o,yield xs(s.encode(n))}}function*gg(e,t={}){let{chunkSize:r=262144}=t,i=0;for(;i<e.byteLength;){let s=Math.min(e.byteLength-i,r),o=new ArrayBuffer(s),n=new Uint8Array(e,i,s);new Uint8Array(o).set(n),i+=s,yield o}}async function*mg(e,t){let r=t?.chunkSize||1048576,i=0;for(;i<e.size;){let s=i+r,o=await e.slice(i,s).arrayBuffer();i=s,yield o}}function zf(e,t){return br?uA(e,t):dA(e,t)}async function*uA(e,t){let r=e.getReader(),i;try{for(;;){let s=i||r.read();t?._streamReadAhead&&(i=r.read());let{done:o,value:n}=await s;if(o)return;yield di(n)}}catch{r.releaseLock()}}async function*dA(e,t){for await(let r of e)yield di(r)}function _g(e,t){if(typeof e=="string")return pg(e,t);if(e instanceof ArrayBuffer)return gg(e,t);if(Et(e))return mg(e,t);if(Ts(e))return zf(e,t);if(St(e)){let r=e.body;if(!r)throw new Error("Readable stream not available on Response");return zf(r,t)}throw new Error("makeIterator")}var Tg="Cannot convert supplied data type";function pA(e,t,r){if(t.text&&typeof e=="string")return e;if(Nn(e)&&(e=e.buffer),hi(e)){let i=Of(e);return t.text&&!t.binary?new TextDecoder("utf8").decode(i):di(i)}throw new Error(Tg)}async function yg(e,t,r){if(typeof e=="string"||hi(e))return pA(e,t,r);if(Et(e)&&(e=await Fn(e)),St(e))return await tg(e),t.binary?await e.arrayBuffer():await e.text();if(Ts(e)&&(e=_g(e,r)),Tf(e)||yf(e))return Cf(e);throw new Error(Tg)}function kn(e,t){let r=Uf(),i=e||r,s=i.fetch??i.core?.fetch;return typeof s=="function"?s:ie(s)?o=>gi(o,s):t?.fetch?t?.fetch:gi}function bg(e,t,r){if(r)return r;let i={fetch:kn(t,e),...e};if(i.url){let s=pi(i.url);i.baseUrl=s,i.queryString=Jp(i.url),i.filename=Ar.filename(s),i.baseUrl=Ar.dirname(s)}return Array.isArray(i.loaders)||(i.loaders=null),i}function xg(e,t){if(e&&!Array.isArray(e))return e;let r;if(e&&(r=Array.isArray(e)?e:[e]),t&&t.loaders){let i=Array.isArray(t.loaders)?t.loaders:[t.loaders];r=r?[...r,...i]:i}return r&&r.length?r:void 0}async function Ye(e,t,r,i){t&&!Array.isArray(t)&&!Rs(t)&&(i=void 0,r=t,t=void 0),e=await e,r=r||{};let s=Sr(e),n=xg(t,i),a=await fg(e,n,r);if(!a)return null;let c=sg(r,a,n,s);return i=bg({url:s,_parse:Ye,loaders:n},c,i||null),await gA(a,e,c,i)}async function gA(e,t,r,i){if(Rf(e),r=bf(e.options,r),St(t)){let{ok:o,redirected:n,status:a,statusText:c,type:l,url:f}=t,h=Object.fromEntries(t.headers.entries());i.response={headers:h,ok:o,redirected:n,status:a,statusText:c,type:l,url:f}}t=await yg(t,e,r);let s=e;if(s.parseTextSync&&typeof t=="string")return s.parseTextSync(t,r,i);if(wf(e,r))return await Pf(e,t,r,i,Ye);if(s.parseText&&typeof t=="string")return await s.parseText(t,r,i);if(s.parse)return await s.parse(t,r,i);throw dt(!s.parseSync),new Error(`${e.id} loader - no parser found and worker is disabled`)}async function Ke(e,t,r,i){let s,o;!Array.isArray(t)&&!Rs(t)?(s=[],o=t,i=void 0):(s=t,o=r);let n=kn(o),a=e;return typeof e=="string"&&(a=await n(e)),Et(e)&&(a=await n(e)),Array.isArray(s)?await Ye(a,s,o):await Ye(a,s,o)}var Ag="4.4.0-alpha.16";var mA=globalThis.loaders?.parseImageNode,Wf=typeof Image<"u",Hf=typeof ImageBitmap<"u",_A=Boolean(mA),Xf=br?!0:_A;function Sg(e){switch(e){case"auto":return Hf||Wf||Xf;case"imagebitmap":return Hf;case"image":return Wf;case"data":return Xf;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function Eg(){if(Hf)return"imagebitmap";if(Wf)return"image";if(Xf)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function TA(e){let t=yA(e);if(!t)throw new Error("Not an image");return t}function Rg(e){switch(TA(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),r=t.getContext("2d");if(!r)throw new Error("getImageData");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function yA(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&e instanceof Image?"image":e&&typeof e=="object"&&e.data&&e.width&&e.height?"data":null}var bA=/^data:image\/svg\+xml/,xA=/\.svg((\?|#).*)?$/;function Vn(e){return e&&(bA.test(e)||xA.test(e))}function wg(e,t){if(Vn(t)){let i=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(i=unescape(encodeURIComponent(i)))}catch(o){throw new Error(o.message)}return`data:image/svg+xml;base64,${btoa(i)}`}return $f(e,t)}function $f(e,t){if(Vn(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function zn(e,t,r){let i=wg(e,r),s=self.URL||self.webkitURL,o=typeof i!="string"&&s.createObjectURL(i);try{return await AA(o||i,t)}finally{o&&s.revokeObjectURL(o)}}async function AA(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((i,s)=>{try{r.onload=()=>i(r),r.onerror=o=>{let n=o instanceof Error?o.message:"error";s(new Error(n))}}catch(o){s(o)}})}var Pg=!0;async function Mg(e,t,r){let i;Vn(r)?i=await zn(e,t,r):i=$f(e,r);let s=t&&t.imagebitmap;return await SA(i,s)}async function SA(e,t=null){if((EA(t)||!Pg)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),Pg=!1}return await createImageBitmap(e)}function EA(e){if(!e)return!0;for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function vg(e){return!MA(e,"ftyp",4)||!(e[8]&96)?null:RA(e)}function RA(e){switch(wA(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function wA(e,t,r){return String.fromCharCode(...e.slice(t,r))}function PA(e){return[...e].map(t=>t.charCodeAt(0))}function MA(e,t,r=0){let i=PA(t);for(let s=0;s<i.length;++s)if(i[s]!==e[s+r])return!1;return!0}var oe=!1,Ms=!0;function jn(e){let t=vs(e);return CA(t)||NA(t)||IA(t)||OA(t)||vA(t)}function vA(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=vg(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function CA(e){let t=vs(e);return t.byteLength>=24&&t.getUint32(0,oe)===2303741511?{mimeType:"image/png",width:t.getUint32(16,oe),height:t.getUint32(20,oe)}:null}function IA(e){let t=vs(e);return t.byteLength>=10&&t.getUint32(0,oe)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,Ms),height:t.getUint16(8,Ms)}:null}function OA(e){let t=vs(e);return t.byteLength>=14&&t.getUint16(0,oe)===16973&&t.getUint32(2,Ms)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,Ms),height:t.getUint32(22,Ms)}:null}function NA(e){let t=vs(e);if(!(t.byteLength>=3&&t.getUint16(0,oe)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:i,sofMarkers:s}=DA(),o=2;for(;o+9<t.byteLength;){let n=t.getUint16(o,oe);if(s.has(n))return{mimeType:"image/jpeg",height:t.getUint16(o+5,oe),width:t.getUint16(o+7,oe)};if(!i.has(n))return null;o+=2,o+=t.getUint16(o,oe)}return null}function DA(){let e=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)e.add(r);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function vs(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}async function Cg(e,t){let{mimeType:r}=jn(e)||{},i=globalThis.loaders?.parseImageNode;return He(i),await i(e,r)}async function Ig(e,t,r){t=t||{};let s=(t.image||{}).type||"auto",{url:o}=r||{},n=FA(s),a;switch(n){case"imagebitmap":a=await Mg(e,t,o);break;case"image":a=await zn(e,t,o);break;case"data":a=await Cg(e,t);break;default:He(!1)}return s==="data"&&(a=Rg(a)),a}function FA(e){switch(e){case"auto":case"data":return Eg();default:return Sg(e),e}}var BA=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],LA=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],UA={image:{type:"auto",decode:!0}},Yf={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:Ag,mimeTypes:LA,extensions:BA,parse:Ig,tests:[e=>Boolean(jn(new DataView(e)))],options:UA};zi();var kA=new ht({id:"deck"}),F=kA;var Kf={};function Wn(e){Kf=e}function J(e,t,r,i){F.level>0&&Kf[e]&&Kf[e].call(null,t,r,i)}function VA(e){let t=e[0],r=e[e.length-1];return t==="{"&&r==="}"||t==="["&&r==="]"}var Og={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:VA,parseTextSync:JSON.parse};function zA(){let e="9.3.0-alpha.1",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==e)throw new Error(`deck.gl - multiple versions detected: ${t} vs ${e}`);return t||(F.log(1,`deck.gl ${e}`)(),globalThis.deck={...globalThis.deck,VERSION:e,version:e,log:F,_registerLoggers:Wn},Ps([Og,[Yf,{imagebitmap:{premultiplyAlpha:"none"}}]])),e}var Hn=zA();var Ng=`uniform layerUniforms {
930
+ }`}function Yf(t,e=!0,r){let i=r||new Set;if(t){if(wg(t))i.add(t);else if(wg(t.buffer))i.add(t.buffer);else if(!ArrayBuffer.isView(t)){if(e&&typeof t=="object")for(let s in t)Yf(t[s],e,i)}}return r===void 0?Array.from(i):[]}function wg(t){return t?t instanceof ArrayBuffer||typeof MessagePort<"u"&&t instanceof MessagePort||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas:!1}var Zf=()=>{},er=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&Fe||typeof gi<"u"&&!Fe}constructor(e){let{name:r,source:i,url:s}=e;ge(i||s),this.name=r,this.source=i,this.url=s,this.onMessage=Zf,this.onError=o=>console.log(o),this.worker=Fe?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Zf,this.onError=Zf,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(e,r){r=r||Yf(e),this.worker.postMessage(e,r)}_getErrorFromErrorEvent(e){let r="Failed to load ";return r+=`worker ${this.name} from ${this.url}. `,e.message&&(r+=`${e.message} in `),e.lineno&&(r+=`:${e.lineno}:${e.colno}`),new Error(r)}_createBrowserWorker(){this._loadableURL=Sg({source:this.source,url:this.url});let e=new Worker(this._loadableURL,{name:this.name});return e.onmessage=r=>{r.data?this.onMessage(r.data):this.onError(new Error("No data received"))},e.onerror=r=>{this.onError(this._getErrorFromErrorEvent(r)),this.terminated=!0},e.onmessageerror=r=>console.error(r),e}_createNodeWorker(){let e;if(this.url){let i=this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`,s=this.url.endsWith(".ts")||this.url.endsWith(".mjs")?"module":"commonjs";e=new gi(i,{eval:!1,type:s})}else if(this.source)e=new gi(this.source,{eval:!0});else throw new Error("no worker");return e.on("message",r=>{this.onMessage(r)}),e.on("error",r=>{this.onError(r)}),e.on("exit",r=>{}),e}};var ws=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return er.isSupported()}constructor(e){this.source=e.source,this.url=e.url,this.setProps(e)}destroy(){this.idleQueue.forEach(e=>e.destroy()),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},e.name!==void 0&&(this.name=e.name),e.maxConcurrency!==void 0&&(this.maxConcurrency=e.maxConcurrency),e.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=e.maxMobileConcurrency),e.reuseWorkers!==void 0&&(this.reuseWorkers=e.reuseWorkers),e.onDebug!==void 0&&(this.onDebug=e.onDebug)}async startJob(e,r=(s,o,n)=>s.done(n),i=(s,o)=>s.error(o)){let s=new Promise(o=>(this.jobQueue.push({name:e,onMessage:r,onError:i,onStart:o}),this));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;let e=this._getAvailableWorker();if(!e)return;let r=this.jobQueue.shift();if(r){this.onDebug({message:"Starting job",name:r.name,workerThread:e,backlog:this.jobQueue.length});let i=new Es(r.name,e);e.onMessage=s=>r.onMessage(i,s.type,s.payload),e.onError=s=>r.onError(i,s),r.onStart(i);try{await i.result}catch(s){console.error(`Worker exception: ${s}`)}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){!Fe||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count<this._getMaxConcurrency()){this.count++;let e=`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;return new er({name:e,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return Ag?this.maxMobileConcurrency:this.maxConcurrency}};var HA={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},Mr=class{props;workerPools=new Map;static isSupported(){return er.isSupported()}static getWorkerFarm(e={}){return Mr._workerFarm=Mr._workerFarm||new Mr({}),Mr._workerFarm.setProps(e),Mr._workerFarm}constructor(e){this.props={...HA},this.setProps(e),this.workerPools=new Map}destroy(){for(let e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){this.props={...this.props,...e};for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(e){let{name:r,source:i,url:s}=e,o=this.workerPools.get(r);return o||(o=new ws({name:r,source:i,url:s}),o.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,o)),o}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}},tr=Mr;P(tr,"_workerFarm");function Kf(t,e={}){let r=e[t.id]||{},i=Fe?`${t.id}-worker.js`:`${t.id}-worker-node.js`,s=r.workerUrl;if(!s&&t.id==="compression"&&(s=e.workerUrl),(e._workerType||e?.core?._workerType)==="test"&&(Fe?s=`modules/${t.module}/dist/${i}`:s=`modules/${t.module}/src/workers/${t.id}-worker-node.ts`),!s){let n=t.version;n==="latest"&&(n=Tg);let a=n?`@${n}`:"";s=`https://unpkg.com/@loaders.gl/${t.module}${a}/dist/${i}`}return ge(s),s}function qf(t,e=bg){ge(t,"no worker provided");let r=t.version;return!(!e||!r)}function Qf(t,e){if(!tr.isSupported())return!1;let r=e?._nodeWorkers??e?.core?._nodeWorkers;if(!Fe&&!r)return!1;let i=e?.worker??e?.core?.worker;return Boolean(t.worker&&i)}async function Gf(t,e,r,i,s){let o=t.id,n=Kf(t,r),c=tr.getWorkerFarm(r?.core).getWorkerPool({name:o,url:n});r=JSON.parse(JSON.stringify(r)),i=JSON.parse(JSON.stringify(i||{}));let l=await c.startJob("process-on-worker",$A.bind(null,s));return l.postMessage("process",{input:e,options:r,context:i}),await(await l.result).result}async function $A(t,e,r,i){switch(r){case"done":e.done(i);break;case"error":e.error(new Error(i.error));break;case"process":let{id:s,input:o,options:n}=i;try{let a=await t(o,n);e.postMessage("done",{id:s,result:a})}catch(a){let c=a instanceof Error?a.message:"unknown error";e.postMessage("error",{id:s,error:c})}break;default:console.warn(`parse-with-worker unknown message ${r}`)}}function Jf(t,e,r){if(r=r||t.byteLength,t.byteLength<r||e.byteLength<r)return!1;let i=new Uint8Array(t),s=new Uint8Array(e);for(let o=0;o<i.length;++o)if(i[o]!==s[o])return!1;return!0}function eh(...t){return Rg(t)}function Rg(t){let e=t.map(o=>o instanceof ArrayBuffer?new Uint8Array(o):o),r=e.reduce((o,n)=>o+n.byteLength,0),i=new Uint8Array(r),s=0;for(let o of e)i.set(o,s),s+=o.byteLength;return i.buffer}async function th(t){let e=[];for await(let r of t)e.push(XA(r));return eh(...e)}function XA(t){if(t instanceof ArrayBuffer)return t;if(ArrayBuffer.isView(t)){let{buffer:e,byteOffset:r,byteLength:i}=t;return Pg(e,r,i)}return Pg(t)}function Pg(t,e=0,r=t.byteLength-e){let i=new Uint8Array(t,e,r),s=new Uint8Array(i.length);return s.set(i),s.buffer}var YA="",vg={};function rh(t){for(let e in vg)if(t.startsWith(e)){let r=vg[e];t=t.replace(e,r)}return!t.startsWith("http://")&&!t.startsWith("https://")&&(t=`${YA}${t}`),t}function Un(t){return t&&typeof t=="object"&&t.isBuffer}function mi(t){if(Un(t))return t;if(t instanceof ArrayBuffer)return t;if(Wf(t))return Ln(t);if(ArrayBuffer.isView(t)){let e=t.buffer;return t.byteOffset===0&&t.byteLength===t.buffer.byteLength?e:e.slice(t.byteOffset,t.byteOffset+t.byteLength)}if(typeof t=="string"){let e=t;return new TextEncoder().encode(e).buffer}if(t&&typeof t=="object"&&t._toArrayBuffer)return t._toArrayBuffer();throw new Error("toArrayBuffer")}function Rs(t){if(t instanceof ArrayBuffer)return t;if(Wf(t))return Ln(t);let{buffer:e,byteOffset:r,byteLength:i}=t;return e instanceof ArrayBuffer&&r===0&&i===e.byteLength?e:Ln(e,r,i)}function Ln(t,e=0,r=t.byteLength-e){let i=new Uint8Array(t,e,r),s=new Uint8Array(i.length);return s.set(i),s.buffer}function ih(t){return ArrayBuffer.isView(t)?t:new Uint8Array(t)}var Cr={};At(Cr,{dirname:()=>KA,filename:()=>ZA,join:()=>qA,resolve:()=>QA});function Mg(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let t=window.location?.pathname;return t?.slice(0,t.lastIndexOf("/")+1)||""}function ZA(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(e+1):t}function KA(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(0,e):""}function qA(...t){let e="/";return t=t.map((r,i)=>(i&&(r=r.replace(new RegExp(`^${e}`),"")),i!==t.length-1&&(r=r.replace(new RegExp(`${e}$`),"")),r)),t.join(e)}function QA(...t){let e=[];for(let o=0;o<t.length;o++)e[o]=t[o];let r="",i=!1,s;for(let o=e.length-1;o>=-1&&!i;o--){let n;o>=0?n=e[o]:(s===void 0&&(s=Mg()),n=s),n.length!==0&&(r=`${n}/${r}`,i=n.charCodeAt(0)===Ps)}return r=GA(r,!i),i?`/${r}`:r.length>0?r:"."}var Ps=47,sh=46;function GA(t,e){let r="",i=-1,s=0,o,n=!1;for(let a=0;a<=t.length;++a){if(a<t.length)o=t.charCodeAt(a);else{if(o===Ps)break;o=Ps}if(o===Ps){if(!(i===a-1||s===1))if(i!==a-1&&s===2){if(r.length<2||!n||r.charCodeAt(r.length-1)!==sh||r.charCodeAt(r.length-2)!==sh){if(r.length>2){let c=r.length-1,l=c;for(;l>=0&&r.charCodeAt(l)!==Ps;--l);if(l!==c){r=l===-1?"":r.slice(0,l),i=a,s=0,n=!1;continue}}else if(r.length===2||r.length===1){r="",i=a,s=0,n=!1;continue}}e&&(r.length>0?r+="/..":r="..",n=!0)}else{let c=t.slice(i+1,a);r.length>0?r+=`/${c}`:r=c,n=!1}i=a,s=0}else o===sh&&s!==-1?++s:s=-1}return r}var kn=class extends Error{constructor(e,r){super(e),this.reason=r.reason,this.url=r.url,this.response=r.response}reason;url;response};var tS=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,rS=/^([-\w.]+\/[-\w.+]+)/;function oh(t,e){return t.toLowerCase()===e.toLowerCase()}function Cg(t){let e=rS.exec(t);return e?e[1]:t}function nh(t){let e=tS.exec(t);return e?e[1]:""}var Ig=/\?.*/;function Og(t){let e=t.match(Ig);return e&&e[0]}function _i(t){return t.replace(Ig,"")}function Ng(t){if(t.length<50)return t;let e=t.slice(t.length-15);return`${t.substr(0,32)}...${e}`}function Ir(t){return ve(t)?t.url:Me(t)?("name"in t?t.name:"")||"":typeof t=="string"?t:""}function vs(t){if(ve(t)){let e=t.headers.get("content-type")||"",r=_i(t.url);return Cg(e)||nh(r)}return Me(t)?t.type||"":typeof t=="string"?nh(t):""}function Dg(t){return ve(t)?t.headers["content-length"]||-1:Me(t)?t.size:typeof t=="string"?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1}async function Vn(t){if(ve(t))return t;let e={},r=Dg(t);r>=0&&(e["content-length"]=String(r));let i=Ir(t),s=vs(t);s&&(e["content-type"]=s);let o=await sS(t);o&&(e["x-first-bytes"]=o),typeof t=="string"&&(t=new TextEncoder().encode(t));let n=new Response(t,{headers:e});return Object.defineProperty(n,"url",{value:i}),n}async function Fg(t){if(!t.ok)throw await iS(t)}async function iS(t){let e=Ng(t.url),r=`Failed to fetch resource (${t.status}) ${t.statusText}: ${e}`;r=r.length>100?`${r.slice(0,100)}...`:r;let i={reason:t.statusText,url:t.url,response:t};try{let s=t.headers.get("Content-Type");i.reason=!t.bodyUsed&&s?.includes("application/json")?await t.json():await t.text()}catch{}return new kn(r,i)}async function sS(t){if(typeof t=="string")return`data:,${t.slice(0,5)}`;if(t instanceof Blob){let r=t.slice(0,5);return await new Promise(i=>{let s=new FileReader;s.onload=o=>i(o?.target?.result),s.readAsDataURL(r)})}if(t instanceof ArrayBuffer){let r=t.slice(0,5);return`data:base64,${oS(r)}`}return null}function oS(t){let e="",r=new Uint8Array(t);for(let i=0;i<r.byteLength;i++)e+=String.fromCharCode(r[i]);return btoa(e)}function nS(t){return!aS(t)&&!cS(t)}function aS(t){return t.startsWith("http:")||t.startsWith("https:")}function cS(t){return t.startsWith("data:")}async function yi(t,e){if(typeof t=="string"){let r=rh(t);return nS(r)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,e):await fetch(r,e)}return await Vn(t)}ji();var Ms=new ue({id:"loaders.gl"}),zn=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},Wn=class{console;constructor(){this.console=console}log(...e){return this.console.log.bind(this.console,...e)}info(...e){return this.console.info.bind(this.console,...e)}warn(...e){return this.console.warn.bind(this.console,...e)}error(...e){return this.console.error.bind(this.console,...e)}};var jn={core:{baseUri:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new Wn,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:vr,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]}},Bg={baseUri:"core.baseUri",fetch:"core.fetch",mimeType:"core.mimeType",fallbackMimeType:"core.fallbackMimeType",ignoreRegisteredLoaders:"core.ignoreRegisteredLoaders",nothrow:"core.nothrow",log:"core.log",useLocalLibraries:"core.useLocalLibraries",CDN:"core.CDN",worker:"core.worker",maxConcurrency:"core.maxConcurrency",maxMobileConcurrency:"core.maxMobileConcurrency",reuseWorkers:"core.reuseWorkers",_nodeWorkers:"core.nodeWorkers",_workerType:"core._workerType",_worker:"core._workerType",limit:"core.limit",_limitMB:"core._limitMB",batchSize:"core.batchSize",batchDebounceMs:"core.batchDebounceMs",metadata:"core.metadata",transforms:"core.transforms",throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"core.fetch.method",headers:"core.fetch.headers",body:"core.fetch.body",mode:"core.fetch.mode",credentials:"core.fetch.credentials",cache:"core.fetch.cache",redirect:"core.fetch.redirect",referrer:"core.fetch.referrer",referrerPolicy:"core.fetch.referrerPolicy",integrity:"core.fetch.integrity",keepalive:"core.fetch.keepalive",signal:"core.fetch.signal"};var ah=["baseUri","fetch","mimeType","fallbackMimeType","ignoreRegisteredLoaders","nothrow","log","useLocalLibraries","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms"];function ch(){globalThis.loaders=globalThis.loaders||{};let{loaders:t}=globalThis;return t._state||(t._state={}),t._state}function lh(){let t=ch();return t.globalOptions=t.globalOptions||{...jn,core:{...jn.core}},Or(t.globalOptions)}function kg(t,e,r,i){return r=r||[],r=Array.isArray(r)?r:[r],lS(t,r),Or(hS(e,t,i))}function Or(t){let e=dS(t);Vg(e);for(let r of ah)e.core&&e.core[r]!==void 0&&delete e[r];return e.core&&e.core._workerType!==void 0&&delete e._worker,e}function lS(t,e){Lg(t,null,jn,Bg,e);for(let r of e){let i=t&&t[r.id]||{},s=r.options&&r.options[r.id]||{},o=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};Lg(i,r.id,s,o,e)}}function Lg(t,e,r,i,s){let o=e||"Top level",n=e?`${e}.`:"";for(let a in t){let c=!e&&at(t[a]),l=a==="baseUri"&&!e,f=a==="workerUrl"&&e;if(!(a in r)&&!l&&!f){if(a in i)Ms.level>0&&Ms.warn(`${o} loader option '${n}${a}' no longer supported, use '${i[a]}'`)();else if(!c&&Ms.level>0){let h=fS(a,s);Ms.warn(`${o} loader option '${n}${a}' not recognized. ${h}`)()}}}}function fS(t,e){let r=t.toLowerCase(),i="";for(let s of e)for(let o in s.options){if(t===o)return`Did you mean '${s.id}.${o}'?`;let n=o.toLowerCase();(r.startsWith(n)||n.startsWith(r))&&(i=i||`Did you mean '${s.id}.${o}'?`)}return i}function hS(t,e,r){let i=t.options||{},s={...i};i.core&&(s.core={...i.core}),Vg(s),s.core?.log===null&&(s.core={...s.core,log:new zn}),Ug(s,Or(lh()));let o=Or(e);return Ug(s,o),uS(s,r),pS(s),s}function Ug(t,e){for(let r in e)if(r in e){let i=e[r];Bn(i)&&Bn(t[r])?t[r]={...t[r],...e[r]}:t[r]=e[r]}}function uS(t,e){if(!e)return;let r=t.baseUri!==void 0,i=t.core?.baseUri!==void 0;!r&&!i&&(t.core||={},t.core.baseUri=e)}function dS(t){let e={...t};return t.core&&(e.core={...t.core}),e}function Vg(t){for(let r of ah)if(t[r]!==void 0){let s=t.core=t.core||{};s[r]===void 0&&(s[r]=t[r])}let e=t._worker;e!==void 0&&(t.core||={},t.core._workerType===void 0&&(t.core._workerType=e))}function pS(t){let e=t.core;if(e)for(let r of ah)e[r]!==void 0&&(t[r]=e[r])}function Cs(t){return t?(Array.isArray(t)&&(t=t[0]),Array.isArray(t?.extensions)):!1}function Is(t){Jt(t,"null loader"),Jt(Cs(t),"invalid loader");let e;return Array.isArray(t)&&(e=t[1],t=t[0],t={...t,options:{...t.options,...e}}),(t?.parseTextSync||t?.parseText)&&(t.text=!0),t.text||(t.binary=!0),t}var zg=()=>{let t=ch();return t.loaderRegistry=t.loaderRegistry||[],t.loaderRegistry};function Os(t){let e=zg();t=Array.isArray(t)?t:[t];for(let r of t){let i=Is(r);e.find(s=>i===s)||e.unshift(i)}}function Wg(){return zg()}var gS=/\.([^.]+)$/;async function $g(t,e=[],r,i){if(!Xg(t))return null;let s=Or(r||{});s.core||={};let o=jg(t,e,{...s,core:{...s.core,nothrow:!0}},i);if(o)return o;if(Me(t)&&(t=await t.slice(0,10).arrayBuffer(),o=jg(t,e,s,i)),!o&&!s.core.nothrow)throw new Error(Yg(t));return o}function jg(t,e=[],r,i){if(!Xg(t))return null;let s=Or(r||{});if(s.core||={},e&&!Array.isArray(e))return Is(e);let o=[];e&&(o=o.concat(e)),s.core.ignoreRegisteredLoaders||o.push(...Wg()),_S(o);let n=mS(t,o,s,i);if(!n&&!s.core.nothrow)throw new Error(Yg(t));return n}function mS(t,e,r,i){let s=Ir(t),o=vs(t),n=_i(s)||i?.url,a=null,c="";return r?.core?.mimeType&&(a=fh(e,r?.core?.mimeType),c=`match forced by supplied MIME type ${r?.core?.mimeType}`),a=a||yS(e,n),c=c||(a?`matched url ${n}`:""),a=a||fh(e,o),c=c||(a?`matched MIME type ${o}`:""),a=a||bS(e,t),c=c||(a?`matched initial data ${Zg(t)}`:""),r?.core?.fallbackMimeType&&(a=a||fh(e,r?.core?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${o}`:"")),c&&zf.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function Xg(t){return!(t instanceof Response&&t.status===204)}function Yg(t){let e=Ir(t),r=vs(t),i="No valid loader found (";i+=e?`${Cr.filename(e)}, `:"no url provided, ",i+=`MIME type: ${r?`"${r}"`:"not provided"}, `;let s=t?Zg(t):"";return i+=s?` first bytes: "${s}"`:"first bytes: not available",i+=")",i}function _S(t){for(let e of t)Is(e)}function yS(t,e){let r=e&&gS.exec(e),i=r&&r[1];return i?TS(t,i):null}function TS(t,e){e=e.toLowerCase();for(let r of t)for(let i of r.extensions)if(i.toLowerCase()===e)return r;return null}function fh(t,e){for(let r of t)if(r.mimeTypes?.some(i=>oh(e,i))||oh(e,`application/x.${r.id}`))return r;return null}function bS(t,e){if(!e)return null;for(let r of t)if(typeof e=="string"){if(xS(e,r))return r}else if(ArrayBuffer.isView(e)){if(Hg(e.buffer,e.byteOffset,r))return r}else if(e instanceof ArrayBuffer&&Hg(e,0,r))return r;return null}function xS(t,e){return e.testText?e.testText(t):(Array.isArray(e.tests)?e.tests:[e.tests]).some(i=>t.startsWith(i))}function Hg(t,e,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(s=>AS(t,e,r,s))}function AS(t,e,r,i){if(pi(i))return Jf(i,t,i.byteLength);switch(typeof i){case"function":return i(Rs(t));case"string":let s=hh(t,e,i.length);return i===s;default:return!1}}function Zg(t,e=5){return typeof t=="string"?t.slice(0,e):ArrayBuffer.isView(t)?hh(t.buffer,t.byteOffset,e):t instanceof ArrayBuffer?hh(t,0,e):""}function hh(t,e,r){if(t.byteLength<e+r)return"";let i=new DataView(t),s="";for(let o=0;o<r;o++)s+=String.fromCharCode(i.getUint8(e+o));return s}var SS=256*1024;function*Kg(t,e){let r=e?.chunkSize||SS,i=0,s=new TextEncoder;for(;i<t.length;){let o=Math.min(t.length-i,r),n=t.slice(i,i+o);i+=o,yield Rs(s.encode(n))}}function*qg(t,e={}){let{chunkSize:r=262144}=e,i=0;for(;i<t.byteLength;){let s=Math.min(t.byteLength-i,r),o=new ArrayBuffer(s),n=new Uint8Array(t,i,s);new Uint8Array(o).set(n),i+=s,yield o}}async function*Qg(t,e){let r=e?.chunkSize||1048576,i=0;for(;i<t.size;){let s=i+r,o=await t.slice(i,s).arrayBuffer();i=s,yield o}}function uh(t,e){return vr?ES(t,e):wS(t,e)}async function*ES(t,e){let r=t.getReader(),i;try{for(;;){let s=i||r.read();e?._streamReadAhead&&(i=r.read());let{done:o,value:n}=await s;if(o)return;yield mi(n)}}catch{r.releaseLock()}}async function*wS(t,e){for await(let r of t)yield mi(r)}function Gg(t,e){if(typeof t=="string")return Kg(t,e);if(t instanceof ArrayBuffer)return qg(t,e);if(Me(t))return Qg(t,e);if(Ss(t))return uh(t,e);if(ve(t)){let r=t.body;if(!r)throw new Error("Readable stream not available on Response");return uh(r,e)}throw new Error("makeIterator")}var Jg="Cannot convert supplied data type";function RS(t,e,r){if(e.text&&typeof t=="string")return t;if(Un(t)&&(t=t.buffer),pi(t)){let i=ih(t);return e.text&&!e.binary?new TextDecoder("utf8").decode(i):mi(i)}throw new Error(Jg)}async function em(t,e,r){if(typeof t=="string"||pi(t))return RS(t,e,r);if(Me(t)&&(t=await Vn(t)),ve(t))return await Fg(t),e.binary?await t.arrayBuffer():await t.text();if(Ss(t)&&(t=Gg(t,r)),jf(t)||Hf(t))return th(t);throw new Error(Jg)}function Hn(t,e){let r=lh(),i=t||r,s=i.fetch??i.core?.fetch;return typeof s=="function"?s:at(s)?o=>yi(o,s):e?.fetch?e?.fetch:yi}function tm(t,e,r){if(r)return r;let i={fetch:Hn(e,t),...t};if(i.url){let s=_i(i.url);i.baseUrl=s,i.queryString=Og(i.url),i.filename=Cr.filename(s),i.baseUrl=Cr.dirname(s)}return Array.isArray(i.loaders)||(i.loaders=null),i}function rm(t,e){if(t&&!Array.isArray(t))return t;let r;if(t&&(r=Array.isArray(t)?t:[t]),e&&e.loaders){let i=Array.isArray(e.loaders)?e.loaders:[e.loaders];r=r?[...r,...i]:i}return r&&r.length?r:void 0}async function rr(t,e,r,i){e&&!Array.isArray(e)&&!Cs(e)&&(i=void 0,r=e,e=void 0),t=await t,r=r||{};let s=Ir(t),n=rm(e,i),a=await $g(t,n,r);if(!a)return null;let c=kg(r,a,n,s);return i=tm({url:s,_parse:rr,loaders:n},c,i||null),await PS(a,t,c,i)}async function PS(t,e,r,i){if(qf(t),r=$f(t.options,r),ve(e)){let{ok:o,redirected:n,status:a,statusText:c,type:l,url:f}=e,h=Object.fromEntries(e.headers.entries());i.response={headers:h,ok:o,redirected:n,status:a,statusText:c,type:l,url:f}}e=await em(e,t,r);let s=t;if(s.parseTextSync&&typeof e=="string")return s.parseTextSync(e,r,i);if(Qf(t,r))return await Gf(t,e,r,i,rr);if(s.parseText&&typeof e=="string")return await s.parseText(e,r,i);if(s.parse)return await s.parse(e,r,i);throw ge(!s.parseSync),new Error(`${t.id} loader - no parser found and worker is disabled`)}async function ir(t,e,r,i){let s,o;!Array.isArray(e)&&!Cs(e)?(s=[],o=e,i=void 0):(s=e,o=r);let n=Hn(o),a=t;return typeof t=="string"&&(a=await n(t)),Me(t)&&(a=await n(t)),Array.isArray(s)?await rr(a,s,o):await rr(a,s,o)}var im="4.4.0-alpha.18";var vS=globalThis.loaders?.parseImageNode,ph=typeof Image<"u",gh=typeof ImageBitmap<"u",MS=Boolean(vS),mh=vr?!0:MS;function sm(t){switch(t){case"auto":return gh||ph||mh;case"imagebitmap":return gh;case"image":return ph;case"data":return mh;default:throw new Error(`@loaders.gl/images: image ${t} not supported in this environment`)}}function om(){if(gh)return"imagebitmap";if(ph)return"image";if(mh)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function CS(t){let e=IS(t);if(!e)throw new Error("Not an image");return e}function nm(t){switch(CS(t)){case"data":return t;case"image":case"imagebitmap":let e=document.createElement("canvas"),r=e.getContext("2d");if(!r)throw new Error("getImageData");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0),r.getImageData(0,0,t.width,t.height);default:throw new Error("getImageData")}}function IS(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&t instanceof Image?"image":t&&typeof t=="object"&&t.data&&t.width&&t.height?"data":null}var OS=/^data:image\/svg\+xml/,NS=/\.svg((\?|#).*)?$/;function $n(t){return t&&(OS.test(t)||NS.test(t))}function am(t,e){if($n(e)){let i=new TextDecoder().decode(t);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(i=unescape(encodeURIComponent(i)))}catch(o){throw new Error(o.message)}return`data:image/svg+xml;base64,${btoa(i)}`}return _h(t,e)}function _h(t,e){if($n(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(t)])}async function Xn(t,e,r){let i=am(t,r),s=self.URL||self.webkitURL,o=typeof i!="string"&&s.createObjectURL(i);try{return await DS(o||i,e)}finally{o&&s.revokeObjectURL(o)}}async function DS(t,e){let r=new Image;return r.src=t,e.image&&e.image.decode&&r.decode?(await r.decode(),r):await new Promise((i,s)=>{try{r.onload=()=>i(r),r.onerror=o=>{let n=o instanceof Error?o.message:"error";s(new Error(n))}}catch(o){s(o)}})}var cm=!0;async function lm(t,e,r){let i;$n(r)?i=await Xn(t,e,r):i=_h(t,r);let s=e&&e.imagebitmap;return await FS(i,s)}async function FS(t,e=null){if((BS(e)||!cm)&&(e=null),e)try{return await createImageBitmap(t,e)}catch(r){console.warn(r),cm=!1}return await createImageBitmap(t)}function BS(t){if(!t)return!0;for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0}function fm(t){return!VS(t,"ftyp",4)||!(t[8]&96)?null:LS(t)}function LS(t){switch(US(t,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function US(t,e,r){return String.fromCharCode(...t.slice(e,r))}function kS(t){return[...t].map(e=>e.charCodeAt(0))}function VS(t,e,r=0){let i=kS(e);for(let s=0;s<i.length;++s)if(i[s]!==t[s+r])return!1;return!0}var lt=!1,Ns=!0;function Yn(t){let e=Ds(t);return WS(e)||$S(e)||jS(e)||HS(e)||zS(e)}function zS(t){let e=new Uint8Array(t instanceof DataView?t.buffer:t),r=fm(e);return r?{mimeType:r.mimeType,width:0,height:0}:null}function WS(t){let e=Ds(t);return e.byteLength>=24&&e.getUint32(0,lt)===2303741511?{mimeType:"image/png",width:e.getUint32(16,lt),height:e.getUint32(20,lt)}:null}function jS(t){let e=Ds(t);return e.byteLength>=10&&e.getUint32(0,lt)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,Ns),height:e.getUint16(8,Ns)}:null}function HS(t){let e=Ds(t);return e.byteLength>=14&&e.getUint16(0,lt)===16973&&e.getUint32(2,Ns)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,Ns),height:e.getUint32(22,Ns)}:null}function $S(t){let e=Ds(t);if(!(e.byteLength>=3&&e.getUint16(0,lt)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:i,sofMarkers:s}=XS(),o=2;for(;o+9<e.byteLength;){let n=e.getUint16(o,lt);if(s.has(n))return{mimeType:"image/jpeg",height:e.getUint16(o+5,lt),width:e.getUint16(o+7,lt)};if(!i.has(n))return null;o+=2,o+=e.getUint16(o,lt)}return null}function XS(){let t=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)t.add(r);return{tableMarkers:t,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function Ds(t){if(t instanceof DataView)return t;if(ArrayBuffer.isView(t))return new DataView(t.buffer);if(t instanceof ArrayBuffer)return new DataView(t);throw new Error("toDataView")}async function hm(t,e){let{mimeType:r}=Yn(t)||{},i=globalThis.loaders?.parseImageNode;return Jt(i),await i(t,r)}async function um(t,e,r){e=e||{};let s=(e.image||{}).type||"auto",{url:o}=r||{},n=YS(s),a;switch(n){case"imagebitmap":a=await lm(t,e,o);break;case"image":a=await Xn(t,e,o);break;case"data":a=await hm(t,e);break;default:Jt(!1)}return s==="data"&&(a=nm(a)),a}function YS(t){switch(t){case"auto":case"data":return om();default:return sm(t),t}}var ZS=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],KS=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],qS={image:{type:"auto",decode:!0}},yh={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:im,mimeTypes:KS,extensions:ZS,parse:um,tests:[t=>Boolean(Yn(new DataView(t)))],options:qS};ji();var QS=new ue({id:"deck"}),L=QS;var Th={};function Zn(t){Th=t}function Q(t,e,r,i){L.level>0&&Th[t]&&Th[t].call(null,e,r,i)}function GS(t){let e=t[0],r=t[t.length-1];return e==="{"&&r==="}"||e==="["&&r==="]"}var dm={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:GS,parseTextSync:JSON.parse};function JS(){let t="9.3.0-alpha.3",e=globalThis.deck&&globalThis.deck.VERSION;if(e&&e!==t)throw new Error(`deck.gl - multiple versions detected: ${e} vs ${t}`);return e||(L.log(1,`deck.gl ${t}`)(),globalThis.deck={...globalThis.deck,VERSION:t,version:t,log:L,_registerLoggers:Zn},Os([dm,[yh,{imagebitmap:{premultiplyAlpha:"none"}}]])),t}var Kn=JS();var pm=`uniform layerUniforms {
858
931
  uniform float opacity;
859
932
  } layer;
860
- `,qf={name:"layer",vs:Ng,fs:Ng,getUniforms:e=>({opacity:Math.pow(e.opacity,.45454545454545453)}),uniformTypes:{opacity:"f32"}};var jA=`
933
+ `,bh={name:"layer",vs:pm,fs:pm,getUniforms:t=>({opacity:Math.pow(t.opacity,.45454545454545453)}),uniformTypes:{opacity:"f32"}};var eE=`
861
934
 
862
935
  struct ColorUniforms {
863
936
  opacity: f32,
@@ -872,7 +945,7 @@ var<private> color: ColorUniforms = ColorUniforms(1.0);
872
945
  fn deckgl_premultiplied_alpha(fragColor: vec4<f32>) -> vec4<f32> {
873
946
  return vec4(fragColor.rgb * fragColor.a, fragColor.a);
874
947
  };
875
- `,Zf={name:"color",dependencies:[],source:jA,getUniforms:e=>({}),uniformTypes:{opacity:"f32"}};var WA=`const SMOOTH_EDGE_RADIUS: f32 = 0.5;
948
+ `,xh={name:"color",dependencies:[],source:eE,getUniforms:t=>({}),uniformTypes:{opacity:"f32"}};var tE=`const SMOOTH_EDGE_RADIUS: f32 = 0.5;
876
949
 
877
950
  struct VertexGeometry {
878
951
  position: vec4<f32>,
@@ -901,7 +974,7 @@ var<private> fragmentGeometry: FragmentGeometry;
901
974
  fn smoothedge(edge: f32, x: f32) -> f32 {
902
975
  return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);
903
976
  }
904
- `,Dg="#define SMOOTH_EDGE_RADIUS 0.5",HA=`${Dg}
977
+ `,gm="#define SMOOTH_EDGE_RADIUS 0.5",rE=`${gm}
905
978
 
906
979
  struct VertexGeometry {
907
980
  vec4 position;
@@ -918,7 +991,7 @@ struct VertexGeometry {
918
991
  vec2(0.0),
919
992
  vec3(0.0)
920
993
  );
921
- `,XA=`${Dg}
994
+ `,iE=`${gm}
922
995
 
923
996
  struct FragmentGeometry {
924
997
  vec2 uv;
@@ -927,9 +1000,9 @@ struct FragmentGeometry {
927
1000
  float smoothedge(float edge, float x) {
928
1001
  return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);
929
1002
  }
930
- `,Xn={name:"geometry",source:WA,vs:HA,fs:XA};var X;(function(e){e[e.Start=1]="Start",e[e.Move=2]="Move",e[e.End=4]="End",e[e.Cancel=8]="Cancel"})(X||(X={}));var K;(function(e){e[e.None=0]="None",e[e.Left=1]="Left",e[e.Right=2]="Right",e[e.Up=4]="Up",e[e.Down=8]="Down",e[e.Horizontal=3]="Horizontal",e[e.Vertical=12]="Vertical",e[e.All=15]="All"})(K||(K={}));var I;(function(e){e[e.Possible=1]="Possible",e[e.Began=2]="Began",e[e.Changed=4]="Changed",e[e.Ended=8]="Ended",e[e.Recognized=8]="Recognized",e[e.Cancelled=16]="Cancelled",e[e.Failed=32]="Failed"})(I||(I={}));var Fg="compute",Jf="auto",Cs="manipulation",Rr="none",Is="pan-x",Os="pan-y";function Qf(e){if(e.includes(Rr))return Rr;let t=e.includes(Is),r=e.includes(Os);return t&&r?Rr:t||r?t?Is:Os:e.includes(Cs)?Cs:Jf}var Ns=class{constructor(t,r){this.actions="",this.manager=t,this.set(r)}set(t){t===Fg&&(t=this.compute()),this.manager.element&&(this.manager.element.style.touchAction=t,this.actions=t)}update(){this.set(this.manager.options.touchAction)}compute(){let t=[];for(let r of this.manager.recognizers)r.options.enable&&(t=t.concat(r.getTouchAction()));return Qf(t.join(" "))}};function mi(e){return e.trim().split(/\s+/g)}function $n(e,t,r){if(e)for(let i of mi(t))e.addEventListener(i,r,!1)}function Yn(e,t,r){if(e)for(let i of mi(t))e.removeEventListener(i,r,!1)}function Gf(e){return(e.ownerDocument||e).defaultView}function th(e,t){let r=e;for(;r;){if(r===t)return!0;r=r.parentNode}return!1}function Kn(e){let t=e.length;if(t===1)return{x:Math.round(e[0].clientX),y:Math.round(e[0].clientY)};let r=0,i=0,s=0;for(;s<t;)r+=e[s].clientX,i+=e[s].clientY,s++;return{x:Math.round(r/t),y:Math.round(i/t)}}function eh(e){let t=[],r=0;for(;r<e.pointers.length;)t[r]={clientX:Math.round(e.pointers[r].clientX),clientY:Math.round(e.pointers[r].clientY)},r++;return{timeStamp:Date.now(),pointers:t,center:Kn(t),deltaX:e.deltaX,deltaY:e.deltaY}}function qn(e,t){let r=t.x-e.x,i=t.y-e.y;return Math.sqrt(r*r+i*i)}function rh(e,t){let r=t.clientX-e.clientX,i=t.clientY-e.clientY;return Math.sqrt(r*r+i*i)}function Bg(e,t){let r=t.x-e.x,i=t.y-e.y;return Math.atan2(i,r)*180/Math.PI}function ih(e,t){let r=t.clientX-e.clientX,i=t.clientY-e.clientY;return Math.atan2(i,r)*180/Math.PI}function Zn(e,t){return e===t?K.None:Math.abs(e)>=Math.abs(t)?e<0?K.Left:K.Right:t<0?K.Up:K.Down}function Lg(e,t){let r=t.center,i=e.offsetDelta,s=e.prevDelta,o=e.prevInput;return(t.eventType===X.Start||o?.eventType===X.End)&&(s=e.prevDelta={x:o?.deltaX||0,y:o?.deltaY||0},i=e.offsetDelta={x:r.x,y:r.y}),{deltaX:s.x+(r.x-i.x),deltaY:s.y+(r.y-i.y)}}function Jn(e,t,r){return{x:t/e||0,y:r/e||0}}function Ug(e,t){return rh(t[0],t[1])/rh(e[0],e[1])}function kg(e,t){return ih(t[1],t[0])-ih(e[1],e[0])}function Vg(e,t){let r=e.lastInterval||t,i=t.timeStamp-r.timeStamp,s,o,n,a;if(t.eventType!==X.Cancel&&(i>25||r.velocity===void 0)){let c=t.deltaX-r.deltaX,l=t.deltaY-r.deltaY,f=Jn(i,c,l);o=f.x,n=f.y,s=Math.abs(f.x)>Math.abs(f.y)?f.x:f.y,a=Zn(c,l),e.lastInterval=t}else s=r.velocity,o=r.velocityX,n=r.velocityY,a=r.direction;t.velocity=s,t.velocityX=o,t.velocityY=n,t.direction=a}function zg(e,t){let{session:r}=e,{pointers:i}=t,{length:s}=i;r.firstInput||(r.firstInput=eh(t)),s>1&&!r.firstMultiple?r.firstMultiple=eh(t):s===1&&(r.firstMultiple=!1);let{firstInput:o,firstMultiple:n}=r,a=n?n.center:o.center,c=t.center=Kn(i);t.timeStamp=Date.now(),t.deltaTime=t.timeStamp-o.timeStamp,t.angle=Bg(a,c),t.distance=qn(a,c);let{deltaX:l,deltaY:f}=Lg(r,t);t.deltaX=l,t.deltaY=f,t.offsetDirection=Zn(t.deltaX,t.deltaY);let h=Jn(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=h.x,t.overallVelocityY=h.y,t.overallVelocity=Math.abs(h.x)>Math.abs(h.y)?h.x:h.y,t.scale=n?Ug(n.pointers,i):1,t.rotation=n?kg(n.pointers,i):0,t.maxPointers=r.prevInput?t.pointers.length>r.prevInput.maxPointers?t.pointers.length:r.prevInput.maxPointers:t.pointers.length;let u=e.element;return th(t.srcEvent.target,u)&&(u=t.srcEvent.target),t.target=u,Vg(r,t),t}function jg(e,t,r){let i=r.pointers.length,s=r.changedPointers.length,o=t&X.Start&&i-s===0,n=t&(X.End|X.Cancel)&&i-s===0;r.isFirst=Boolean(o),r.isFinal=Boolean(n),o&&(e.session={}),r.eventType=t;let a=zg(e,r);e.emit("hammer.input",a),e.recognize(a),e.session.prevInput=a}var Ds=class{constructor(t){this.evEl="",this.evWin="",this.evTarget="",this.domHandler=r=>{this.manager.options.enable&&this.handler(r)},this.manager=t,this.element=t.element,this.target=t.options.inputTarget||t.element}callback(t,r){jg(this.manager,t,r)}init(){$n(this.element,this.evEl,this.domHandler),$n(this.target,this.evTarget,this.domHandler),$n(Gf(this.element),this.evWin,this.domHandler)}destroy(){Yn(this.element,this.evEl,this.domHandler),Yn(this.target,this.evTarget,this.domHandler),Yn(Gf(this.element),this.evWin,this.domHandler)}};var YA={pointerdown:X.Start,pointermove:X.Move,pointerup:X.End,pointercancel:X.Cancel,pointerout:X.Cancel},KA="pointerdown",qA="pointermove pointerup pointercancel",Fs=class extends Ds{constructor(t){super(t),this.evEl=KA,this.evWin=qA,this.store=this.manager.session.pointerEvents=[],this.init()}handler(t){let{store:r}=this,i=!1,s=YA[t.type],o=t.pointerType,n=o==="touch",a=r.findIndex(c=>c.pointerId===t.pointerId);s&X.Start&&(t.buttons||n)?a<0&&(r.push(t),a=r.length-1):s&(X.End|X.Cancel)&&(i=!0),!(a<0)&&(r[a]=t,this.callback(s,{pointers:r,changedPointers:[t],eventType:s,pointerType:o,srcEvent:t}),i&&r.splice(a,1))}};var ZA=["","webkit","Moz","MS","ms","o"];function Wg(e,t){let r=t[0].toUpperCase()+t.slice(1);for(let i of ZA){let s=i?i+r:t;if(s in e)return s}}var JA=1,Hg=2,Xg={touchAction:"compute",enable:!0,inputTarget:null,cssProps:{userSelect:"none",userDrag:"none",touchCallout:"none",tapHighlightColor:"rgba(0,0,0,0)"}},Bs=class{constructor(t,r){this.options={...Xg,...r,cssProps:{...Xg.cssProps,...r.cssProps},inputTarget:r.inputTarget||t},this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new Fs(this),this.touchAction=new Ns(this,this.options.touchAction),this.toggleCssProps(!0)}set(t){return Object.assign(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this}stop(t){this.session.stopped=t?Hg:JA}recognize(t){let{session:r}=this;if(r.stopped)return;this.session.prevented&&t.srcEvent.preventDefault();let i,{recognizers:s}=this,{curRecognizer:o}=r;(!o||o&&o.state&I.Recognized)&&(o=r.curRecognizer=null);let n=0;for(;n<s.length;)i=s[n],r.stopped!==Hg&&(!o||i===o||i.canRecognizeWith(o))?i.recognize(t):i.reset(),!o&&i.state&(I.Began|I.Changed|I.Ended)&&(o=r.curRecognizer=i),n++}get(t){let{recognizers:r}=this;for(let i=0;i<r.length;i++)if(r[i].options.event===t)return r[i];return null}add(t){if(Array.isArray(t)){for(let i of t)this.add(i);return this}let r=this.get(t.options.event);return r&&this.remove(r),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t}remove(t){if(Array.isArray(t)){for(let i of t)this.remove(i);return this}let r=typeof t=="string"?this.get(t):t;if(r){let{recognizers:i}=this,s=i.indexOf(r);s!==-1&&(i.splice(s,1),this.touchAction.update())}return this}on(t,r){if(!t||!r)return;let{handlers:i}=this;for(let s of mi(t))i[s]=i[s]||[],i[s].push(r)}off(t,r){if(!t)return;let{handlers:i}=this;for(let s of mi(t))r?i[s]&&i[s].splice(i[s].indexOf(r),1):delete i[s]}emit(t,r){let i=this.handlers[t]&&this.handlers[t].slice();if(!i||!i.length)return;let s=r;s.type=t,s.preventDefault=function(){r.srcEvent.preventDefault()};let o=0;for(;o<i.length;)i[o](s),o++}destroy(){this.toggleCssProps(!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}toggleCssProps(t){let{element:r}=this;if(r){for(let[i,s]of Object.entries(this.options.cssProps)){let o=Wg(r.style,i);t?(this.oldCssProps[o]=r.style[o],r.style[o]=s):r.style[o]=this.oldCssProps[o]||""}t||(this.oldCssProps={})}}};var QA=1;function $g(){return QA++}function sh(e){return e&I.Cancelled?"cancel":e&I.Ended?"end":e&I.Changed?"move":e&I.Began?"start":""}var Se=class{constructor(t){this.options=t,this.id=$g(),this.state=I.Possible,this.simultaneous={},this.requireFail=[]}set(t){return Object.assign(this.options,t),this.manager.touchAction.update(),this}recognizeWith(t){if(Array.isArray(t)){for(let s of t)this.recognizeWith(s);return this}let r;if(typeof t=="string"){if(r=this.manager.get(t),!r)throw new Error(`Cannot find recognizer ${t}`)}else r=t;let{simultaneous:i}=this;return i[r.id]||(i[r.id]=r,r.recognizeWith(this)),this}dropRecognizeWith(t){if(Array.isArray(t)){for(let i of t)this.dropRecognizeWith(i);return this}let r;return typeof t=="string"?r=this.manager.get(t):r=t,r&&delete this.simultaneous[r.id],this}requireFailure(t){if(Array.isArray(t)){for(let s of t)this.requireFailure(s);return this}let r;if(typeof t=="string"){if(r=this.manager.get(t),!r)throw new Error(`Cannot find recognizer ${t}`)}else r=t;let{requireFail:i}=this;return i.indexOf(r)===-1&&(i.push(r),r.requireFailure(this)),this}dropRequireFailure(t){if(Array.isArray(t)){for(let i of t)this.dropRequireFailure(i);return this}let r;if(typeof t=="string"?r=this.manager.get(t):r=t,r){let i=this.requireFail.indexOf(r);i>-1&&this.requireFail.splice(i,1)}return this}hasRequireFailures(){return Boolean(this.requireFail.find(t=>t.options.enable))}canRecognizeWith(t){return Boolean(this.simultaneous[t.id])}emit(t){if(!t)return;let{state:r}=this;r<I.Ended&&this.manager.emit(this.options.event+sh(r),t),this.manager.emit(this.options.event,t),t.additionalEvent&&this.manager.emit(t.additionalEvent,t),r>=I.Ended&&this.manager.emit(this.options.event+sh(r),t)}tryEmit(t){this.canEmit()?this.emit(t):this.state=I.Failed}canEmit(){let t=0;for(;t<this.requireFail.length;){if(!(this.requireFail[t].state&(I.Failed|I.Possible)))return!1;t++}return!0}recognize(t){let r={...t};if(!this.options.enable){this.reset(),this.state=I.Failed;return}this.state&(I.Recognized|I.Cancelled|I.Failed)&&(this.state=I.Possible),this.state=this.process(r),this.state&(I.Began|I.Changed|I.Ended|I.Cancelled)&&this.tryEmit(r)}getEventNames(){return[this.options.event]}reset(){}};var Ee=class extends Se{attrTest(t){let r=this.options.pointers;return r===0||t.pointers.length===r}process(t){let{state:r}=this,{eventType:i}=t,s=r&(I.Began|I.Changed),o=this.attrTest(t);return s&&(i&X.Cancel||!o)?r|I.Cancelled:s||o?i&X.End?r|I.Ended:r&I.Began?r|I.Changed:I.Began:I.Failed}};var wr=class extends Se{constructor(t={}){super({enable:!0,event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10,...t}),this.pTime=null,this.pCenter=null,this._timer=null,this._input=null,this.count=0}getTouchAction(){return[Cs]}process(t){let{options:r}=this,i=t.pointers.length===r.pointers,s=t.distance<r.threshold,o=t.deltaTime<r.time;if(this.reset(),t.eventType&X.Start&&this.count===0)return this.failTimeout();if(s&&o&&i){if(t.eventType!==X.End)return this.failTimeout();let n=this.pTime?t.timeStamp-this.pTime<r.interval:!0,a=!this.pCenter||qn(this.pCenter,t.center)<r.posThreshold;if(this.pTime=t.timeStamp,this.pCenter=t.center,!a||!n?this.count=1:this.count+=1,this._input=t,this.count%r.taps===0)return this.hasRequireFailures()?(this._timer=setTimeout(()=>{this.state=I.Recognized,this.tryEmit(this._input)},r.interval),I.Began):I.Recognized}return I.Failed}failTimeout(){return this._timer=setTimeout(()=>{this.state=I.Failed},this.options.interval),I.Failed}reset(){clearTimeout(this._timer)}emit(t){this.state===I.Recognized&&(t.tapCount=this.count,this.manager.emit(this.options.event,t))}};var GA=["","start","move","end","cancel","up","down","left","right"],qe=class extends Ee{constructor(t={}){super({enable:!0,pointers:1,event:"pan",threshold:10,direction:K.All,...t}),this.pX=null,this.pY=null}getTouchAction(){let{options:{direction:t}}=this,r=[];return t&K.Horizontal&&r.push(Os),t&K.Vertical&&r.push(Is),r}getEventNames(){return GA.map(t=>this.options.event+t)}directionTest(t){let{options:r}=this,i=!0,{distance:s}=t,{direction:o}=t,n=t.deltaX,a=t.deltaY;return o&r.direction||(r.direction&K.Horizontal?(o=n===0?K.None:n<0?K.Left:K.Right,i=n!==this.pX,s=Math.abs(t.deltaX)):(o=a===0?K.None:a<0?K.Up:K.Down,i=a!==this.pY,s=Math.abs(t.deltaY))),t.direction=o,i&&s>r.threshold&&Boolean(o&r.direction)}attrTest(t){return super.attrTest(t)&&(Boolean(this.state&I.Began)||!(this.state&I.Began)&&this.directionTest(t))}emit(t){this.pX=t.deltaX,this.pY=t.deltaY;let r=K[t.direction].toLowerCase();r&&(t.additionalEvent=this.options.event+r),super.emit(t)}};var tS=["","start","move","end","cancel","in","out"],_i=class extends Ee{constructor(t={}){super({enable:!0,event:"pinch",threshold:0,pointers:2,...t})}getTouchAction(){return[Rr]}getEventNames(){return tS.map(t=>this.options.event+t)}attrTest(t){return super.attrTest(t)&&(Math.abs(t.scale-1)>this.options.threshold||Boolean(this.state&I.Began))}emit(t){if(t.scale!==1){let r=t.scale<1?"in":"out";t.additionalEvent=this.options.event+r}super.emit(t)}};var ne=class{constructor(t,r,i){this.element=t,this.callback=r,this.options=i}};var Yg=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",l4=typeof window<"u"?window:global;var sS=Yg.indexOf("firefox")!==-1,Kg=4.000244140625,oS=40,nS=.25,Qn=class extends ne{constructor(t,r,i){super(t,r,{enable:!0,...i}),this.handleEvent=s=>{if(!this.options.enable)return;let o=s.deltaY;globalThis.WheelEvent&&(sS&&s.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(o/=globalThis.devicePixelRatio),s.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(o*=oS)),o!==0&&o%Kg===0&&(o=Math.floor(o/Kg)),s.shiftKey&&o&&(o=o*nS),this.callback({type:"wheel",center:{x:s.clientX,y:s.clientY},delta:-o,srcEvent:s,pointerType:"mouse",target:s.target})},t.addEventListener("wheel",this.handleEvent,{passive:!1})}destroy(){this.element.removeEventListener("wheel",this.handleEvent)}enableEventType(t,r){t==="wheel"&&(this.options.enable=r)}};var qg=["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],Gn=class extends ne{constructor(t,r,i){super(t,r,{enable:!0,...i}),this.handleEvent=o=>{this.handleOverEvent(o),this.handleOutEvent(o),this.handleEnterEvent(o),this.handleLeaveEvent(o),this.handleMoveEvent(o)},this.pressed=!1;let{enable:s}=this.options;this.enableMoveEvent=s,this.enableLeaveEvent=s,this.enableEnterEvent=s,this.enableOutEvent=s,this.enableOverEvent=s,qg.forEach(o=>t.addEventListener(o,this.handleEvent))}destroy(){qg.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){switch(t){case"pointermove":this.enableMoveEvent=r;break;case"pointerover":this.enableOverEvent=r;break;case"pointerout":this.enableOutEvent=r;break;case"pointerenter":this.enableEnterEvent=r;break;case"pointerleave":this.enableLeaveEvent=r;break;default:}}handleOverEvent(t){this.enableOverEvent&&t.type==="mouseover"&&this._emit("pointerover",t)}handleOutEvent(t){this.enableOutEvent&&t.type==="mouseout"&&this._emit("pointerout",t)}handleEnterEvent(t){this.enableEnterEvent&&t.type==="mouseenter"&&this._emit("pointerenter",t)}handleLeaveEvent(t){this.enableLeaveEvent&&t.type==="mouseleave"&&this._emit("pointerleave",t)}handleMoveEvent(t){if(this.enableMoveEvent)switch(t.type){case"mousedown":t.button>=0&&(this.pressed=!0);break;case"mousemove":t.buttons===0&&(this.pressed=!1),this.pressed||this._emit("pointermove",t);break;case"mouseup":this.pressed=!1;break;default:}}_emit(t,r){this.callback({type:t,center:{x:r.clientX,y:r.clientY},srcEvent:r,pointerType:"mouse",target:r.target})}};var Zg=["keydown","keyup"],ta=class extends ne{constructor(t,r,i){super(t,r,{enable:!0,tabIndex:0,...i}),this.handleEvent=s=>{let o=s.target||s.srcElement;o.tagName==="INPUT"&&o.type==="text"||o.tagName==="TEXTAREA"||(this.enableDownEvent&&s.type==="keydown"&&this.callback({type:"keydown",srcEvent:s,key:s.key,target:s.target}),this.enableUpEvent&&s.type==="keyup"&&this.callback({type:"keyup",srcEvent:s,key:s.key,target:s.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,t.tabIndex=this.options.tabIndex,t.style.outline="none",Zg.forEach(s=>t.addEventListener(s,this.handleEvent))}destroy(){Zg.forEach(t=>this.element.removeEventListener(t,this.handleEvent))}enableEventType(t,r){t==="keydown"&&(this.enableDownEvent=r),t==="keyup"&&(this.enableUpEvent=r)}};var ea=class extends ne{constructor(t,r,i){super(t,r,i),this.handleEvent=s=>{this.options.enable&&this.callback({type:"contextmenu",center:{x:s.clientX,y:s.clientY},srcEvent:s,pointerType:"mouse",target:s.target})},t.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(t,r){t==="contextmenu"&&(this.options.enable=r)}};var aS={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},cS=0,lS=1,fS=2,hS=1,uS=2,dS=4;function Jg(e){let t=aS[e.srcEvent.type];if(!t)return null;let{buttons:r,button:i}=e.srcEvent,s=!1,o=!1,n=!1;return t===2?(s=Boolean(r&hS),o=Boolean(r&dS),n=Boolean(r&uS)):(s=i===cS,o=i===lS,n=i===fS),{leftButton:s,middleButton:o,rightButton:n}}function Qg(e,t){let r=e.center;if(!r)return null;let i=t.getBoundingClientRect(),s=i.width/t.offsetWidth||1,o=i.height/t.offsetHeight||1,n={x:(r.x-i.left-t.clientLeft)/s,y:(r.y-i.top-t.clientTop)/o};return{center:r,offsetCenter:n}}var pS={srcElement:"root",priority:0},ra=class{constructor(t,r){this.handleEvent=i=>{if(this.isEmpty())return;let s=this._normalizeEvent(i),o=i.srcEvent.target;for(;o&&o!==s.rootElement;){if(this._emit(s,o),s.handled)return;o=o.parentNode}this._emit(s,"root")},this.eventManager=t,this.recognizerName=r,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(t,r,i,s=!1,o=!1){let{handlers:n,handlersByElement:a}=this,c={...pS,...i},l=a.get(c.srcElement);l||(l=[],a.set(c.srcElement,l));let f={type:t,handler:r,srcElement:c.srcElement,priority:c.priority};s&&(f.once=!0),o&&(f.passive=!0),n.push(f),this._active=this._active||!f.passive;let h=l.length-1;for(;h>=0&&!(l[h].priority>=f.priority);)h--;l.splice(h+1,0,f)}remove(t,r){let{handlers:i,handlersByElement:s}=this;for(let o=i.length-1;o>=0;o--){let n=i[o];if(n.type===t&&n.handler===r){i.splice(o,1);let a=s.get(n.srcElement);a.splice(a.indexOf(n),1),a.length===0&&s.delete(n.srcElement)}}this._active=i.some(o=>!o.passive)}_emit(t,r){let i=this.handlersByElement.get(r);if(i){let s=!1,o=()=>{t.handled=!0},n=()=>{t.handled=!0,s=!0},a=[];for(let c=0;c<i.length;c++){let{type:l,handler:f,once:h}=i[c];if(f({...t,type:l,stopPropagation:o,stopImmediatePropagation:n}),h&&a.push(i[c]),s)break}for(let c=0;c<a.length;c++){let{type:l,handler:f}=a[c];this.remove(l,f)}}}_normalizeEvent(t){let r=this.eventManager.getElement();return{...t,...Jg(t),...Qg(t,r),preventDefault:()=>{t.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:r}}};function gS(e){if("recognizer"in e)return e;let t,r=Array.isArray(e)?[...e]:[e];if(typeof r[0]=="function"){let i=r.shift(),s=r.shift()||{};t=new i(s)}else t=r.shift();return{recognizer:t,recognizeWith:typeof r[0]=="string"?[r[0]]:r[0],requireFailure:typeof r[1]=="string"?[r[1]]:r[1]}}var Ls=class{constructor(t=null,r={}){if(this._onBasicInput=i=>{this.manager.emit(i.srcEvent.type,i)},this._onOtherEvent=i=>{this.manager.emit(i.type,i)},this.options={recognizers:[],events:{},touchAction:"compute",tabIndex:0,cssProps:{},...r},this.events=new Map,this.element=t,!!t){this.manager=new Bs(t,this.options);for(let i of this.options.recognizers){let{recognizer:s,recognizeWith:o,requireFailure:n}=gS(i);this.manager.add(s),o&&s.recognizeWith(o),n&&s.requireFailure(n)}this.manager.on("hammer.input",this._onBasicInput),this.wheelInput=new Qn(t,this._onOtherEvent,{enable:!1}),this.moveInput=new Gn(t,this._onOtherEvent,{enable:!1}),this.keyInput=new ta(t,this._onOtherEvent,{enable:!1,tabIndex:r.tabIndex}),this.contextmenuInput=new ea(t,this._onOtherEvent,{enable:!1}),this.on(this.options.events)}}getElement(){return this.element}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy())}on(t,r,i){this._addEventHandler(t,r,i,!1)}once(t,r,i){this._addEventHandler(t,r,i,!0)}watch(t,r,i){this._addEventHandler(t,r,i,!1,!0)}off(t,r){this._removeEventHandler(t,r)}_toggleRecognizer(t,r){let{manager:i}=this;if(!i)return;let s=i.get(t);s&&(s.set({enable:r}),i.touchAction.update()),this.wheelInput?.enableEventType(t,r),this.moveInput?.enableEventType(t,r),this.keyInput?.enableEventType(t,r),this.contextmenuInput?.enableEventType(t,r)}_addEventHandler(t,r,i,s,o){if(typeof t!="string"){i=r;for(let[l,f]of Object.entries(t))this._addEventHandler(l,f,i,s,o);return}let{manager:n,events:a}=this;if(!n)return;let c=a.get(t);if(!c){let l=this._getRecognizerName(t)||t;c=new ra(this,l),a.set(t,c),n&&n.on(t,c.handleEvent)}c.add(t,r,i,s,o),c.isEmpty()||this._toggleRecognizer(c.recognizerName,!0)}_removeEventHandler(t,r){if(typeof t!="string"){for(let[o,n]of Object.entries(t))this._removeEventHandler(o,n);return}let{events:i}=this,s=i.get(t);if(s&&(s.remove(t,r),s.isEmpty())){let{recognizerName:o}=s,n=!1;for(let a of i.values())if(a.recognizerName===o&&!a.isEmpty()){n=!0;break}n||this._toggleRecognizer(o,!1)}}_getRecognizerName(t){return this.manager.recognizers.find(r=>r.getEventNames().includes(t))?.options.event}};var B={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(B,"IDENTITY",{get:()=>(F.deprecated("COORDINATE_SYSTEM.IDENTITY","COORDINATE_SYSTEM.CARTESIAN")(),0)});var ot={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},Ze={common:0,meters:1,pixels:2},Us={click:"onClick",dblclick:"onClick",panstart:"onDragStart",panmove:"onDrag",panend:"onDragEnd"},oh={multipan:[qe,{threshold:10,direction:K.Vertical,pointers:2}],pinch:[_i,{},null,["multipan"]],pan:[qe,{threshold:1},["pinch"],["multipan"]],dblclick:[wr,{event:"dblclick",taps:2}],click:[wr,{event:"click"},null,["dblclick"]]},Gg={DRAW:"draw",MASK:"mask",TERRAIN:"terrain"};function mS(e,t){if(e===t)return!0;if(Array.isArray(e)){let r=e.length;if(!t||t.length!==r)return!1;for(let i=0;i<r;i++)if(e[i]!==t[i])return!1;return!0}return!1}function Ot(e){let t={},r;return i=>{for(let s in i)if(!mS(i[s],t[s])){r=e(i),t=i;break}return r}}var tm=[0,0,0,0],_S=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],em=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],TS=[0,0,0],rm=[0,0,0],yS=Ot(xS);function nh(e,t,r=rm){r.length<3&&(r=[r[0],r[1],0]);let i=r,s,o=!0;switch(t===B.LNGLAT_OFFSETS||t===B.METER_OFFSETS?s=r:s=e.isGeospatial?[Math.fround(e.longitude),Math.fround(e.latitude),0]:null,e.projectionMode){case ot.WEB_MERCATOR:(t===B.LNGLAT||t===B.CARTESIAN)&&(s=[0,0,0],o=!1);break;case ot.WEB_MERCATOR_AUTO_OFFSET:t===B.LNGLAT?i=s:t===B.CARTESIAN&&(i=[Math.fround(e.center[0]),Math.fround(e.center[1]),0],s=e.unprojectPosition(i),i[0]-=r[0],i[1]-=r[1],i[2]-=r[2]);break;case ot.IDENTITY:i=e.position.map(Math.fround),i[2]=i[2]||0;break;case ot.GLOBE:o=!1,s=null;break;default:o=!1}return{geospatialOrigin:s,shaderCoordinateOrigin:i,offsetMode:o}}function bS(e,t,r){let{viewMatrixUncentered:i,projectionMatrix:s}=e,{viewMatrix:o,viewProjectionMatrix:n}=e,a=tm,c=tm,l=e.cameraPosition,{geospatialOrigin:f,shaderCoordinateOrigin:h,offsetMode:u}=nh(e,t,r);return u&&(c=e.projectPosition(f||h),l=[l[0]-c[0],l[1]-c[1],l[2]-c[2]],c[3]=1,a=_t.transformMat4([],c,n),o=i||o,n=rt.multiply([],s,o),n=rt.multiply([],n,_S)),{viewMatrix:o,viewProjectionMatrix:n,projectionCenter:a,originCommon:c,cameraPosCommon:l,shaderCoordinateOrigin:h,geospatialOrigin:f}}function ia({viewport:e,devicePixelRatio:t=1,modelMatrix:r=null,coordinateSystem:i=B.DEFAULT,coordinateOrigin:s=rm,autoWrapLongitude:o=!1}){i===B.DEFAULT&&(i=e.isGeospatial?B.LNGLAT:B.CARTESIAN);let n=yS({viewport:e,devicePixelRatio:t,coordinateSystem:i,coordinateOrigin:s});return n.wrapLongitude=o,n.modelMatrix=r||em,n}function xS({viewport:e,devicePixelRatio:t,coordinateSystem:r,coordinateOrigin:i}){let{projectionCenter:s,viewProjectionMatrix:o,originCommon:n,cameraPosCommon:a,shaderCoordinateOrigin:c,geospatialOrigin:l}=bS(e,r,i),f=e.getDistanceScales(),h=[e.width*t,e.height*t],u=_t.transformMat4([],[0,0,-e.focalDistance,1],e.projectionMatrix)[3]||1,d={coordinateSystem:r,projectionMode:e.projectionMode,coordinateOrigin:c,commonOrigin:n.slice(0,3),center:s,pseudoMeters:Boolean(e._pseudoMeters),viewportSize:h,devicePixelRatio:t,focalDistance:u,commonUnitsPerMeter:f.unitsPerMeter,commonUnitsPerWorldUnit:f.unitsPerMeter,commonUnitsPerWorldUnit2:TS,scale:e.scale,wrapLongitude:!1,viewProjectionMatrix:o,modelMatrix:em,cameraPosition:a};if(l){let p=e.getDistanceScales(l);switch(r){case B.METER_OFFSETS:d.commonUnitsPerWorldUnit=p.unitsPerMeter,d.commonUnitsPerWorldUnit2=p.unitsPerMeter2;break;case B.LNGLAT:case B.LNGLAT_OFFSETS:e._pseudoMeters||(d.commonUnitsPerMeter=p.unitsPerMeter),d.commonUnitsPerWorldUnit=p.unitsPerDegree,d.commonUnitsPerWorldUnit2=p.unitsPerDegree2;break;case B.CARTESIAN:d.commonUnitsPerWorldUnit=[1,1,p.unitsPerMeter[2]],d.commonUnitsPerWorldUnit2=[0,0,p.unitsPerMeter2[2]];break;default:break}}return d}var AS=Object.keys(B).map(e=>`const COORDINATE_SYSTEM_${e}: i32 = ${B[e]};`).join(""),SS=Object.keys(ot).map(e=>`const PROJECTION_MODE_${e}: i32 = ${ot[e]};`).join(""),ES=Object.keys(Ze).map(e=>`const UNIT_${e.toUpperCase()}: i32 = ${Ze[e]};`).join(""),RS=`${AS}
931
- ${SS}
932
- ${ES}
1003
+ `,qn={name:"geometry",source:tE,vs:rE,fs:iE};var $;(function(t){t[t.Start=1]="Start",t[t.Move=2]="Move",t[t.End=4]="End",t[t.Cancel=8]="Cancel"})($||($={}));var Z;(function(t){t[t.None=0]="None",t[t.Left=1]="Left",t[t.Right=2]="Right",t[t.Up=4]="Up",t[t.Down=8]="Down",t[t.Horizontal=3]="Horizontal",t[t.Vertical=12]="Vertical",t[t.All=15]="All"})(Z||(Z={}));var O;(function(t){t[t.Possible=1]="Possible",t[t.Began=2]="Began",t[t.Changed=4]="Changed",t[t.Ended=8]="Ended",t[t.Recognized=8]="Recognized",t[t.Cancelled=16]="Cancelled",t[t.Failed=32]="Failed"})(O||(O={}));var mm="compute",Ah="auto",Fs="manipulation",Nr="none",Bs="pan-x",Ls="pan-y";function Sh(t){if(t.includes(Nr))return Nr;let e=t.includes(Bs),r=t.includes(Ls);return e&&r?Nr:e||r?e?Bs:Ls:t.includes(Fs)?Fs:Ah}var Us=class{constructor(e,r){this.actions="",this.manager=e,this.set(r)}set(e){e===mm&&(e=this.compute()),this.manager.element&&(this.manager.element.style.touchAction=e,this.actions=e)}update(){this.set(this.manager.options.touchAction)}compute(){let e=[];for(let r of this.manager.recognizers)r.options.enable&&(e=e.concat(r.getTouchAction()));return Sh(e.join(" "))}};function Ti(t){return t.trim().split(/\s+/g)}function Qn(t,e,r){if(t)for(let i of Ti(e))t.addEventListener(i,r,!1)}function Gn(t,e,r){if(t)for(let i of Ti(e))t.removeEventListener(i,r,!1)}function Eh(t){return(t.ownerDocument||t).defaultView}function wh(t,e){let r=t;for(;r;){if(r===e)return!0;r=r.parentNode}return!1}function Jn(t){let e=t.length;if(e===1)return{x:Math.round(t[0].clientX),y:Math.round(t[0].clientY)};let r=0,i=0,s=0;for(;s<e;)r+=t[s].clientX,i+=t[s].clientY,s++;return{x:Math.round(r/e),y:Math.round(i/e)}}function Rh(t){let e=[],r=0;for(;r<t.pointers.length;)e[r]={clientX:Math.round(t.pointers[r].clientX),clientY:Math.round(t.pointers[r].clientY)},r++;return{timeStamp:Date.now(),pointers:e,center:Jn(e),deltaX:t.deltaX,deltaY:t.deltaY}}function ea(t,e){let r=e.x-t.x,i=e.y-t.y;return Math.sqrt(r*r+i*i)}function Ph(t,e){let r=e.clientX-t.clientX,i=e.clientY-t.clientY;return Math.sqrt(r*r+i*i)}function _m(t,e){let r=e.x-t.x,i=e.y-t.y;return Math.atan2(i,r)*180/Math.PI}function vh(t,e){let r=e.clientX-t.clientX,i=e.clientY-t.clientY;return Math.atan2(i,r)*180/Math.PI}function ta(t,e){return t===e?Z.None:Math.abs(t)>=Math.abs(e)?t<0?Z.Left:Z.Right:e<0?Z.Up:Z.Down}function ym(t,e){let r=e.center,i=t.offsetDelta,s=t.prevDelta,o=t.prevInput;return(e.eventType===$.Start||o?.eventType===$.End)&&(s=t.prevDelta={x:o?.deltaX||0,y:o?.deltaY||0},i=t.offsetDelta={x:r.x,y:r.y}),{deltaX:s.x+(r.x-i.x),deltaY:s.y+(r.y-i.y)}}function ra(t,e,r){return{x:e/t||0,y:r/t||0}}function Tm(t,e){return Ph(e[0],e[1])/Ph(t[0],t[1])}function bm(t,e){return vh(e[1],e[0])-vh(t[1],t[0])}function xm(t,e){let r=t.lastInterval||e,i=e.timeStamp-r.timeStamp,s,o,n,a;if(e.eventType!==$.Cancel&&(i>25||r.velocity===void 0)){let c=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,f=ra(i,c,l);o=f.x,n=f.y,s=Math.abs(f.x)>Math.abs(f.y)?f.x:f.y,a=ta(c,l),t.lastInterval=e}else s=r.velocity,o=r.velocityX,n=r.velocityY,a=r.direction;e.velocity=s,e.velocityX=o,e.velocityY=n,e.direction=a}function Am(t,e){let{session:r}=t,{pointers:i}=e,{length:s}=i;r.firstInput||(r.firstInput=Rh(e)),s>1&&!r.firstMultiple?r.firstMultiple=Rh(e):s===1&&(r.firstMultiple=!1);let{firstInput:o,firstMultiple:n}=r,a=n?n.center:o.center,c=e.center=Jn(i);e.timeStamp=Date.now(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=_m(a,c),e.distance=ea(a,c);let{deltaX:l,deltaY:f}=ym(r,e);e.deltaX=l,e.deltaY=f,e.offsetDirection=ta(e.deltaX,e.deltaY);let h=ra(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=h.x,e.overallVelocityY=h.y,e.overallVelocity=Math.abs(h.x)>Math.abs(h.y)?h.x:h.y,e.scale=n?Tm(n.pointers,i):1,e.rotation=n?bm(n.pointers,i):0,e.maxPointers=r.prevInput?e.pointers.length>r.prevInput.maxPointers?e.pointers.length:r.prevInput.maxPointers:e.pointers.length;let u=t.element;return wh(e.srcEvent.target,u)&&(u=e.srcEvent.target),e.target=u,xm(r,e),e}function Sm(t,e,r){let i=r.pointers.length,s=r.changedPointers.length,o=e&$.Start&&i-s===0,n=e&($.End|$.Cancel)&&i-s===0;r.isFirst=Boolean(o),r.isFinal=Boolean(n),o&&(t.session={}),r.eventType=e;let a=Am(t,r);t.emit("hammer.input",a),t.recognize(a),t.session.prevInput=a}var ks=class{constructor(e){this.evEl="",this.evWin="",this.evTarget="",this.domHandler=r=>{this.manager.options.enable&&this.handler(r)},this.manager=e,this.element=e.element,this.target=e.options.inputTarget||e.element}callback(e,r){Sm(this.manager,e,r)}init(){Qn(this.element,this.evEl,this.domHandler),Qn(this.target,this.evTarget,this.domHandler),Qn(Eh(this.element),this.evWin,this.domHandler)}destroy(){Gn(this.element,this.evEl,this.domHandler),Gn(this.target,this.evTarget,this.domHandler),Gn(Eh(this.element),this.evWin,this.domHandler)}};var oE={pointerdown:$.Start,pointermove:$.Move,pointerup:$.End,pointercancel:$.Cancel,pointerout:$.Cancel},nE="pointerdown",aE="pointermove pointerup pointercancel",Vs=class extends ks{constructor(e){super(e),this.evEl=nE,this.evWin=aE,this.store=this.manager.session.pointerEvents=[],this.init()}handler(e){let{store:r}=this,i=!1,s=oE[e.type],o=e.pointerType,n=o==="touch",a=r.findIndex(c=>c.pointerId===e.pointerId);s&$.Start&&(e.buttons||n)?a<0&&(r.push(e),a=r.length-1):s&($.End|$.Cancel)&&(i=!0),!(a<0)&&(r[a]=e,this.callback(s,{pointers:r,changedPointers:[e],eventType:s,pointerType:o,srcEvent:e}),i&&r.splice(a,1))}};var cE=["","webkit","Moz","MS","ms","o"];function Em(t,e){let r=e[0].toUpperCase()+e.slice(1);for(let i of cE){let s=i?i+r:e;if(s in t)return s}}var lE=1,wm=2,Rm={touchAction:"compute",enable:!0,inputTarget:null,cssProps:{userSelect:"none",userDrag:"none",touchCallout:"none",tapHighlightColor:"rgba(0,0,0,0)"}},zs=class{constructor(e,r){this.options={...Rm,...r,cssProps:{...Rm.cssProps,...r.cssProps},inputTarget:r.inputTarget||e},this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=new Vs(this),this.touchAction=new Us(this,this.options.touchAction),this.toggleCssProps(!0)}set(e){return Object.assign(this.options,e),e.touchAction&&this.touchAction.update(),e.inputTarget&&(this.input.destroy(),this.input.target=e.inputTarget,this.input.init()),this}stop(e){this.session.stopped=e?wm:lE}recognize(e){let{session:r}=this;if(r.stopped)return;this.session.prevented&&e.srcEvent.preventDefault();let i,{recognizers:s}=this,{curRecognizer:o}=r;(!o||o&&o.state&O.Recognized)&&(o=r.curRecognizer=null);let n=0;for(;n<s.length;)i=s[n],r.stopped!==wm&&(!o||i===o||i.canRecognizeWith(o))?i.recognize(e):i.reset(),!o&&i.state&(O.Began|O.Changed|O.Ended)&&(o=r.curRecognizer=i),n++}get(e){let{recognizers:r}=this;for(let i=0;i<r.length;i++)if(r[i].options.event===e)return r[i];return null}add(e){if(Array.isArray(e)){for(let i of e)this.add(i);return this}let r=this.get(e.options.event);return r&&this.remove(r),this.recognizers.push(e),e.manager=this,this.touchAction.update(),e}remove(e){if(Array.isArray(e)){for(let i of e)this.remove(i);return this}let r=typeof e=="string"?this.get(e):e;if(r){let{recognizers:i}=this,s=i.indexOf(r);s!==-1&&(i.splice(s,1),this.touchAction.update())}return this}on(e,r){if(!e||!r)return;let{handlers:i}=this;for(let s of Ti(e))i[s]=i[s]||[],i[s].push(r)}off(e,r){if(!e)return;let{handlers:i}=this;for(let s of Ti(e))r?i[s]&&i[s].splice(i[s].indexOf(r),1):delete i[s]}emit(e,r){let i=this.handlers[e]&&this.handlers[e].slice();if(!i||!i.length)return;let s=r;s.type=e,s.preventDefault=function(){r.srcEvent.preventDefault()};let o=0;for(;o<i.length;)i[o](s),o++}destroy(){this.toggleCssProps(!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}toggleCssProps(e){let{element:r}=this;if(r){for(let[i,s]of Object.entries(this.options.cssProps)){let o=Em(r.style,i);e?(this.oldCssProps[o]=r.style[o],r.style[o]=s):r.style[o]=this.oldCssProps[o]||""}e||(this.oldCssProps={})}}};var fE=1;function Pm(){return fE++}function Mh(t){return t&O.Cancelled?"cancel":t&O.Ended?"end":t&O.Changed?"move":t&O.Began?"start":""}var Mt=class{constructor(e){this.options=e,this.id=Pm(),this.state=O.Possible,this.simultaneous={},this.requireFail=[]}set(e){return Object.assign(this.options,e),this.manager.touchAction.update(),this}recognizeWith(e){if(Array.isArray(e)){for(let s of e)this.recognizeWith(s);return this}let r;if(typeof e=="string"){if(r=this.manager.get(e),!r)throw new Error(`Cannot find recognizer ${e}`)}else r=e;let{simultaneous:i}=this;return i[r.id]||(i[r.id]=r,r.recognizeWith(this)),this}dropRecognizeWith(e){if(Array.isArray(e)){for(let i of e)this.dropRecognizeWith(i);return this}let r;return typeof e=="string"?r=this.manager.get(e):r=e,r&&delete this.simultaneous[r.id],this}requireFailure(e){if(Array.isArray(e)){for(let s of e)this.requireFailure(s);return this}let r;if(typeof e=="string"){if(r=this.manager.get(e),!r)throw new Error(`Cannot find recognizer ${e}`)}else r=e;let{requireFail:i}=this;return i.indexOf(r)===-1&&(i.push(r),r.requireFailure(this)),this}dropRequireFailure(e){if(Array.isArray(e)){for(let i of e)this.dropRequireFailure(i);return this}let r;if(typeof e=="string"?r=this.manager.get(e):r=e,r){let i=this.requireFail.indexOf(r);i>-1&&this.requireFail.splice(i,1)}return this}hasRequireFailures(){return Boolean(this.requireFail.find(e=>e.options.enable))}canRecognizeWith(e){return Boolean(this.simultaneous[e.id])}emit(e){if(!e)return;let{state:r}=this;r<O.Ended&&this.manager.emit(this.options.event+Mh(r),e),this.manager.emit(this.options.event,e),e.additionalEvent&&this.manager.emit(e.additionalEvent,e),r>=O.Ended&&this.manager.emit(this.options.event+Mh(r),e)}tryEmit(e){this.canEmit()?this.emit(e):this.state=O.Failed}canEmit(){let e=0;for(;e<this.requireFail.length;){if(!(this.requireFail[e].state&(O.Failed|O.Possible)))return!1;e++}return!0}recognize(e){let r={...e};if(!this.options.enable){this.reset(),this.state=O.Failed;return}this.state&(O.Recognized|O.Cancelled|O.Failed)&&(this.state=O.Possible),this.state=this.process(r),this.state&(O.Began|O.Changed|O.Ended|O.Cancelled)&&this.tryEmit(r)}getEventNames(){return[this.options.event]}reset(){}};var Ct=class extends Mt{attrTest(e){let r=this.options.pointers;return r===0||e.pointers.length===r}process(e){let{state:r}=this,{eventType:i}=e,s=r&(O.Began|O.Changed),o=this.attrTest(e);return s&&(i&$.Cancel||!o)?r|O.Cancelled:s||o?i&$.End?r|O.Ended:r&O.Began?r|O.Changed:O.Began:O.Failed}};var Dr=class extends Mt{constructor(e={}){super({enable:!0,event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10,...e}),this.pTime=null,this.pCenter=null,this._timer=null,this._input=null,this.count=0}getTouchAction(){return[Fs]}process(e){let{options:r}=this,i=e.pointers.length===r.pointers,s=e.distance<r.threshold,o=e.deltaTime<r.time;if(this.reset(),e.eventType&$.Start&&this.count===0)return this.failTimeout();if(s&&o&&i){if(e.eventType!==$.End)return this.failTimeout();let n=this.pTime?e.timeStamp-this.pTime<r.interval:!0,a=!this.pCenter||ea(this.pCenter,e.center)<r.posThreshold;if(this.pTime=e.timeStamp,this.pCenter=e.center,!a||!n?this.count=1:this.count+=1,this._input=e,this.count%r.taps===0)return this.hasRequireFailures()?(this._timer=setTimeout(()=>{this.state=O.Recognized,this.tryEmit(this._input)},r.interval),O.Began):O.Recognized}return O.Failed}failTimeout(){return this._timer=setTimeout(()=>{this.state=O.Failed},this.options.interval),O.Failed}reset(){clearTimeout(this._timer)}emit(e){this.state===O.Recognized&&(e.tapCount=this.count,this.manager.emit(this.options.event,e))}};var hE=["","start","move","end","cancel","up","down","left","right"],sr=class extends Ct{constructor(e={}){super({enable:!0,pointers:1,event:"pan",threshold:10,direction:Z.All,...e}),this.pX=null,this.pY=null}getTouchAction(){let{options:{direction:e}}=this,r=[];return e&Z.Horizontal&&r.push(Ls),e&Z.Vertical&&r.push(Bs),r}getEventNames(){return hE.map(e=>this.options.event+e)}directionTest(e){let{options:r}=this,i=!0,{distance:s}=e,{direction:o}=e,n=e.deltaX,a=e.deltaY;return o&r.direction||(r.direction&Z.Horizontal?(o=n===0?Z.None:n<0?Z.Left:Z.Right,i=n!==this.pX,s=Math.abs(e.deltaX)):(o=a===0?Z.None:a<0?Z.Up:Z.Down,i=a!==this.pY,s=Math.abs(e.deltaY))),e.direction=o,i&&s>r.threshold&&Boolean(o&r.direction)}attrTest(e){return super.attrTest(e)&&(Boolean(this.state&O.Began)||!(this.state&O.Began)&&this.directionTest(e))}emit(e){this.pX=e.deltaX,this.pY=e.deltaY;let r=Z[e.direction].toLowerCase();r&&(e.additionalEvent=this.options.event+r),super.emit(e)}};var uE=["","start","move","end","cancel","in","out"],bi=class extends Ct{constructor(e={}){super({enable:!0,event:"pinch",threshold:0,pointers:2,...e})}getTouchAction(){return[Nr]}getEventNames(){return uE.map(e=>this.options.event+e)}attrTest(e){return super.attrTest(e)&&(Math.abs(e.scale-1)>this.options.threshold||Boolean(this.state&O.Began))}emit(e){if(e.scale!==1){let r=e.scale<1?"in":"out";e.additionalEvent=this.options.event+r}super.emit(e)}};var ft=class{constructor(e,r,i){this.element=e,this.callback=r,this.options=i}};var vm=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",O6=typeof window<"u"?window:global;var mE=vm.indexOf("firefox")!==-1,Mm=4.000244140625,_E=40,yE=.25,ia=class extends ft{constructor(e,r,i){super(e,r,{enable:!0,...i}),this.handleEvent=s=>{if(!this.options.enable)return;let o=s.deltaY;globalThis.WheelEvent&&(mE&&s.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(o/=globalThis.devicePixelRatio),s.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(o*=_E)),o!==0&&o%Mm===0&&(o=Math.floor(o/Mm)),s.shiftKey&&o&&(o=o*yE),this.callback({type:"wheel",center:{x:s.clientX,y:s.clientY},delta:-o,srcEvent:s,pointerType:"mouse",target:s.target})},e.addEventListener("wheel",this.handleEvent,{passive:!1})}destroy(){this.element.removeEventListener("wheel",this.handleEvent)}enableEventType(e,r){e==="wheel"&&(this.options.enable=r)}};var Cm=["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],sa=class extends ft{constructor(e,r,i){super(e,r,{enable:!0,...i}),this.handleEvent=o=>{this.handleOverEvent(o),this.handleOutEvent(o),this.handleEnterEvent(o),this.handleLeaveEvent(o),this.handleMoveEvent(o)},this.pressed=!1;let{enable:s}=this.options;this.enableMoveEvent=s,this.enableLeaveEvent=s,this.enableEnterEvent=s,this.enableOutEvent=s,this.enableOverEvent=s,Cm.forEach(o=>e.addEventListener(o,this.handleEvent))}destroy(){Cm.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,r){switch(e){case"pointermove":this.enableMoveEvent=r;break;case"pointerover":this.enableOverEvent=r;break;case"pointerout":this.enableOutEvent=r;break;case"pointerenter":this.enableEnterEvent=r;break;case"pointerleave":this.enableLeaveEvent=r;break;default:}}handleOverEvent(e){this.enableOverEvent&&e.type==="mouseover"&&this._emit("pointerover",e)}handleOutEvent(e){this.enableOutEvent&&e.type==="mouseout"&&this._emit("pointerout",e)}handleEnterEvent(e){this.enableEnterEvent&&e.type==="mouseenter"&&this._emit("pointerenter",e)}handleLeaveEvent(e){this.enableLeaveEvent&&e.type==="mouseleave"&&this._emit("pointerleave",e)}handleMoveEvent(e){if(this.enableMoveEvent)switch(e.type){case"mousedown":e.button>=0&&(this.pressed=!0);break;case"mousemove":e.buttons===0&&(this.pressed=!1),this.pressed||this._emit("pointermove",e);break;case"mouseup":this.pressed=!1;break;default:}}_emit(e,r){this.callback({type:e,center:{x:r.clientX,y:r.clientY},srcEvent:r,pointerType:"mouse",target:r.target})}};var Im=["keydown","keyup"],oa=class extends ft{constructor(e,r,i){super(e,r,{enable:!0,tabIndex:0,...i}),this.handleEvent=s=>{let o=s.target||s.srcElement;o.tagName==="INPUT"&&o.type==="text"||o.tagName==="TEXTAREA"||(this.enableDownEvent&&s.type==="keydown"&&this.callback({type:"keydown",srcEvent:s,key:s.key,target:s.target}),this.enableUpEvent&&s.type==="keyup"&&this.callback({type:"keyup",srcEvent:s,key:s.key,target:s.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,e.tabIndex=this.options.tabIndex,e.style.outline="none",Im.forEach(s=>e.addEventListener(s,this.handleEvent))}destroy(){Im.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,r){e==="keydown"&&(this.enableDownEvent=r),e==="keyup"&&(this.enableUpEvent=r)}};var na=class extends ft{constructor(e,r,i){super(e,r,i),this.handleEvent=s=>{this.options.enable&&this.callback({type:"contextmenu",center:{x:s.clientX,y:s.clientY},srcEvent:s,pointerType:"mouse",target:s.target})},e.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(e,r){e==="contextmenu"&&(this.options.enable=r)}};var TE={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},bE=0,xE=1,AE=2,SE=1,EE=2,wE=4;function Om(t){let e=TE[t.srcEvent.type];if(!e)return null;let{buttons:r,button:i}=t.srcEvent,s=!1,o=!1,n=!1;return e===2?(s=Boolean(r&SE),o=Boolean(r&wE),n=Boolean(r&EE)):(s=i===bE,o=i===xE,n=i===AE),{leftButton:s,middleButton:o,rightButton:n}}function Nm(t,e){let r=t.center;if(!r)return null;let i=e.getBoundingClientRect(),s=i.width/e.offsetWidth||1,o=i.height/e.offsetHeight||1,n={x:(r.x-i.left-e.clientLeft)/s,y:(r.y-i.top-e.clientTop)/o};return{center:r,offsetCenter:n}}var RE={srcElement:"root",priority:0},aa=class{constructor(e,r){this.handleEvent=i=>{if(this.isEmpty())return;let s=this._normalizeEvent(i),o=i.srcEvent.target;for(;o&&o!==s.rootElement;){if(this._emit(s,o),s.handled)return;o=o.parentNode}this._emit(s,"root")},this.eventManager=e,this.recognizerName=r,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(e,r,i,s=!1,o=!1){let{handlers:n,handlersByElement:a}=this,c={...RE,...i},l=a.get(c.srcElement);l||(l=[],a.set(c.srcElement,l));let f={type:e,handler:r,srcElement:c.srcElement,priority:c.priority};s&&(f.once=!0),o&&(f.passive=!0),n.push(f),this._active=this._active||!f.passive;let h=l.length-1;for(;h>=0&&!(l[h].priority>=f.priority);)h--;l.splice(h+1,0,f)}remove(e,r){let{handlers:i,handlersByElement:s}=this;for(let o=i.length-1;o>=0;o--){let n=i[o];if(n.type===e&&n.handler===r){i.splice(o,1);let a=s.get(n.srcElement);a.splice(a.indexOf(n),1),a.length===0&&s.delete(n.srcElement)}}this._active=i.some(o=>!o.passive)}_emit(e,r){let i=this.handlersByElement.get(r);if(i){let s=!1,o=()=>{e.handled=!0},n=()=>{e.handled=!0,s=!0},a=[];for(let c=0;c<i.length;c++){let{type:l,handler:f,once:h}=i[c];if(f({...e,type:l,stopPropagation:o,stopImmediatePropagation:n}),h&&a.push(i[c]),s)break}for(let c=0;c<a.length;c++){let{type:l,handler:f}=a[c];this.remove(l,f)}}}_normalizeEvent(e){let r=this.eventManager.getElement();return{...e,...Om(e),...Nm(e,r),preventDefault:()=>{e.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:r}}};function PE(t){if("recognizer"in t)return t;let e,r=Array.isArray(t)?[...t]:[t];if(typeof r[0]=="function"){let i=r.shift(),s=r.shift()||{};e=new i(s)}else e=r.shift();return{recognizer:e,recognizeWith:typeof r[0]=="string"?[r[0]]:r[0],requireFailure:typeof r[1]=="string"?[r[1]]:r[1]}}var Ws=class{constructor(e=null,r={}){if(this._onBasicInput=i=>{this.manager.emit(i.srcEvent.type,i)},this._onOtherEvent=i=>{this.manager.emit(i.type,i)},this.options={recognizers:[],events:{},touchAction:"compute",tabIndex:0,cssProps:{},...r},this.events=new Map,this.element=e,!!e){this.manager=new zs(e,this.options);for(let i of this.options.recognizers){let{recognizer:s,recognizeWith:o,requireFailure:n}=PE(i);this.manager.add(s),o&&s.recognizeWith(o),n&&s.requireFailure(n)}this.manager.on("hammer.input",this._onBasicInput),this.wheelInput=new ia(e,this._onOtherEvent,{enable:!1}),this.moveInput=new sa(e,this._onOtherEvent,{enable:!1}),this.keyInput=new oa(e,this._onOtherEvent,{enable:!1,tabIndex:r.tabIndex}),this.contextmenuInput=new na(e,this._onOtherEvent,{enable:!1}),this.on(this.options.events)}}getElement(){return this.element}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy())}on(e,r,i){this._addEventHandler(e,r,i,!1)}once(e,r,i){this._addEventHandler(e,r,i,!0)}watch(e,r,i){this._addEventHandler(e,r,i,!1,!0)}off(e,r){this._removeEventHandler(e,r)}_toggleRecognizer(e,r){let{manager:i}=this;if(!i)return;let s=i.get(e);s&&(s.set({enable:r}),i.touchAction.update()),this.wheelInput?.enableEventType(e,r),this.moveInput?.enableEventType(e,r),this.keyInput?.enableEventType(e,r),this.contextmenuInput?.enableEventType(e,r)}_addEventHandler(e,r,i,s,o){if(typeof e!="string"){i=r;for(let[l,f]of Object.entries(e))this._addEventHandler(l,f,i,s,o);return}let{manager:n,events:a}=this;if(!n)return;let c=a.get(e);if(!c){let l=this._getRecognizerName(e)||e;c=new aa(this,l),a.set(e,c),n&&n.on(e,c.handleEvent)}c.add(e,r,i,s,o),c.isEmpty()||this._toggleRecognizer(c.recognizerName,!0)}_removeEventHandler(e,r){if(typeof e!="string"){for(let[o,n]of Object.entries(e))this._removeEventHandler(o,n);return}let{events:i}=this,s=i.get(e);if(s&&(s.remove(e,r),s.isEmpty())){let{recognizerName:o}=s,n=!1;for(let a of i.values())if(a.recognizerName===o&&!a.isEmpty()){n=!0;break}n||this._toggleRecognizer(o,!1)}}_getRecognizerName(e){return this.manager.recognizers.find(r=>r.getEventNames().includes(e))?.options.event}};var k={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(k,"IDENTITY",{get:()=>(L.deprecated("COORDINATE_SYSTEM.IDENTITY","COORDINATE_SYSTEM.CARTESIAN")(),0)});var oe={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},or={common:0,meters:1,pixels:2},js={click:"onClick",dblclick:"onClick",panstart:"onDragStart",panmove:"onDrag",panend:"onDragEnd"},Ch={multipan:[sr,{threshold:10,direction:Z.Vertical,pointers:2}],pinch:[bi,{},null,["multipan"]],pan:[sr,{threshold:1},["pinch"],["multipan"]],dblclick:[Dr,{event:"dblclick",taps:2}],click:[Dr,{event:"click"},null,["dblclick"]]},Dm={DRAW:"draw",MASK:"mask",TERRAIN:"terrain"};function vE(t,e){if(t===e)return!0;if(Array.isArray(t)){let r=t.length;if(!e||e.length!==r)return!1;for(let i=0;i<r;i++)if(t[i]!==e[i])return!1;return!0}return!1}function Be(t){let e={},r;return i=>{for(let s in i)if(!vE(i[s],e[s])){r=t(i),e=i;break}return r}}var Fm=[0,0,0,0],ME=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],Bm=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],CE=[0,0,0],Lm=[0,0,0],IE=Be(NE);function Ih(t,e,r=Lm){r.length<3&&(r=[r[0],r[1],0]);let i=r,s,o=!0;switch(e===k.LNGLAT_OFFSETS||e===k.METER_OFFSETS?s=r:s=t.isGeospatial?[Math.fround(t.longitude),Math.fround(t.latitude),0]:null,t.projectionMode){case oe.WEB_MERCATOR:(e===k.LNGLAT||e===k.CARTESIAN)&&(s=[0,0,0],o=!1);break;case oe.WEB_MERCATOR_AUTO_OFFSET:e===k.LNGLAT?i=s:e===k.CARTESIAN&&(i=[Math.fround(t.center[0]),Math.fround(t.center[1]),0],s=t.unprojectPosition(i),i[0]-=r[0],i[1]-=r[1],i[2]-=r[2]);break;case oe.IDENTITY:i=t.position.map(Math.fround),i[2]=i[2]||0;break;case oe.GLOBE:o=!1,s=null;break;default:o=!1}return{geospatialOrigin:s,shaderCoordinateOrigin:i,offsetMode:o}}function OE(t,e,r){let{viewMatrixUncentered:i,projectionMatrix:s}=t,{viewMatrix:o,viewProjectionMatrix:n}=t,a=Fm,c=Fm,l=t.cameraPosition,{geospatialOrigin:f,shaderCoordinateOrigin:h,offsetMode:u}=Ih(t,e,r);return u&&(c=t.projectPosition(f||h),l=[l[0]-c[0],l[1]-c[1],l[2]-c[2]],c[3]=1,a=xe.transformMat4([],c,n),o=i||o,n=re.multiply([],s,o),n=re.multiply([],n,ME)),{viewMatrix:o,viewProjectionMatrix:n,projectionCenter:a,originCommon:c,cameraPosCommon:l,shaderCoordinateOrigin:h,geospatialOrigin:f}}function ca({viewport:t,devicePixelRatio:e=1,modelMatrix:r=null,coordinateSystem:i=k.DEFAULT,coordinateOrigin:s=Lm,autoWrapLongitude:o=!1}){i===k.DEFAULT&&(i=t.isGeospatial?k.LNGLAT:k.CARTESIAN);let n=IE({viewport:t,devicePixelRatio:e,coordinateSystem:i,coordinateOrigin:s});return n.wrapLongitude=o,n.modelMatrix=r||Bm,n}function NE({viewport:t,devicePixelRatio:e,coordinateSystem:r,coordinateOrigin:i}){let{projectionCenter:s,viewProjectionMatrix:o,originCommon:n,cameraPosCommon:a,shaderCoordinateOrigin:c,geospatialOrigin:l}=OE(t,r,i),f=t.getDistanceScales(),h=[t.width*e,t.height*e],u=xe.transformMat4([],[0,0,-t.focalDistance,1],t.projectionMatrix)[3]||1,d={coordinateSystem:r,projectionMode:t.projectionMode,coordinateOrigin:c,commonOrigin:n.slice(0,3),center:s,pseudoMeters:Boolean(t._pseudoMeters),viewportSize:h,devicePixelRatio:e,focalDistance:u,commonUnitsPerMeter:f.unitsPerMeter,commonUnitsPerWorldUnit:f.unitsPerMeter,commonUnitsPerWorldUnit2:CE,scale:t.scale,wrapLongitude:!1,viewProjectionMatrix:o,modelMatrix:Bm,cameraPosition:a};if(l){let p=t.getDistanceScales(l);switch(r){case k.METER_OFFSETS:d.commonUnitsPerWorldUnit=p.unitsPerMeter,d.commonUnitsPerWorldUnit2=p.unitsPerMeter2;break;case k.LNGLAT:case k.LNGLAT_OFFSETS:t._pseudoMeters||(d.commonUnitsPerMeter=p.unitsPerMeter),d.commonUnitsPerWorldUnit=p.unitsPerDegree,d.commonUnitsPerWorldUnit2=p.unitsPerDegree2;break;case k.CARTESIAN:d.commonUnitsPerWorldUnit=[1,1,p.unitsPerMeter[2]],d.commonUnitsPerWorldUnit2=[0,0,p.unitsPerMeter2[2]];break;default:break}}return d}var DE=Object.keys(k).map(t=>`const COORDINATE_SYSTEM_${t}: i32 = ${k[t]};`).join(""),FE=Object.keys(oe).map(t=>`const PROJECTION_MODE_${t}: i32 = ${oe[t]};`).join(""),BE=Object.keys(or).map(t=>`const UNIT_${t.toUpperCase()}: i32 = ${or[t]};`).join(""),LE=`${DE}
1004
+ ${FE}
1005
+ ${BE}
933
1006
 
934
1007
  const TILE_SIZE: f32 = 512.0;
935
1008
  const PI: f32 = 3.1415926536;
@@ -983,7 +1056,7 @@ struct Geometry {
983
1056
 
984
1057
  // @group(0) @binding(1)
985
1058
  var<private> geometry: Geometry;
986
- `,im=`${RS}
1059
+ `,Um=`${LE}
987
1060
 
988
1061
  // -----------------------------------------------------------------------------
989
1062
  // Functions
@@ -1210,9 +1283,9 @@ fn project_pixel_size_float(pixels: f32) -> f32 {
1210
1283
  fn project_pixel_size_vec2(pixels: vec2<f32>) -> vec2<f32> {
1211
1284
  return pixels / project.scale;
1212
1285
  }
1213
- `;var wS=Object.keys(B).map(e=>`const int COORDINATE_SYSTEM_${e} = ${B[e]};`).join(""),PS=Object.keys(ot).map(e=>`const int PROJECTION_MODE_${e} = ${ot[e]};`).join(""),MS=Object.keys(Ze).map(e=>`const int UNIT_${e.toUpperCase()} = ${Ze[e]};`).join(""),sm=`${wS}
1214
- ${PS}
1215
- ${MS}
1286
+ `;var UE=Object.keys(k).map(t=>`const int COORDINATE_SYSTEM_${t} = ${k[t]};`).join(""),kE=Object.keys(oe).map(t=>`const int PROJECTION_MODE_${t} = ${oe[t]};`).join(""),VE=Object.keys(or).map(t=>`const int UNIT_${t.toUpperCase()} = ${or[t]};`).join(""),km=`${UE}
1287
+ ${kE}
1288
+ ${VE}
1216
1289
  uniform projectUniforms {
1217
1290
  bool wrapLongitude;
1218
1291
  int coordinateSystem;
@@ -1390,6 +1463,9 @@ return offset * project.focalDistance;
1390
1463
  float project_size_to_pixel(float meters) {
1391
1464
  return project_size(meters) * project.scale;
1392
1465
  }
1466
+ vec2 project_size_to_pixel(vec2 meters) {
1467
+ return project_size(meters) * project.scale;
1468
+ }
1393
1469
  float project_size_to_pixel(float size, int unit) {
1394
1470
  if (unit == UNIT_METERS) return project_size_to_pixel(size);
1395
1471
  if (unit == UNIT_COMMON) return size * project.scale;
@@ -1401,7 +1477,7 @@ return pixels / project.scale;
1401
1477
  vec2 project_pixel_size(vec2 pixels) {
1402
1478
  return pixels / project.scale;
1403
1479
  }
1404
- `;var vS={};function CS(e=vS){return"viewport"in e?ia(e):{}}var Je={name:"project",dependencies:[ef,Xn],source:im,vs:sm,getUniforms:CS,uniformTypes:{wrapLongitude:"f32",coordinateSystem:"i32",commonUnitsPerMeter:"vec3<f32>",projectionMode:"i32",scale:"f32",commonUnitsPerWorldUnit:"vec3<f32>",commonUnitsPerWorldUnit2:"vec3<f32>",center:"vec4<f32>",modelMatrix:"mat4x4<f32>",viewProjectionMatrix:"mat4x4<f32>",viewportSize:"vec2<f32>",devicePixelRatio:"f32",focalDistance:"f32",cameraPosition:"vec3<f32>",coordinateOrigin:"vec3<f32>",commonOrigin:"vec3<f32>",pseudoMeters:"f32"}};var IS=`// Define a structure to hold both the clip-space position and the common position.
1480
+ `;var zE={};function WE(t=zE){return"viewport"in t?ca(t):{}}var nr={name:"project",dependencies:[bf,qn],source:Um,vs:km,getUniforms:WE,uniformTypes:{wrapLongitude:"f32",coordinateSystem:"i32",commonUnitsPerMeter:"vec3<f32>",projectionMode:"i32",scale:"f32",commonUnitsPerWorldUnit:"vec3<f32>",commonUnitsPerWorldUnit2:"vec3<f32>",center:"vec4<f32>",modelMatrix:"mat4x4<f32>",viewProjectionMatrix:"mat4x4<f32>",viewportSize:"vec2<f32>",devicePixelRatio:"f32",focalDistance:"f32",cameraPosition:"vec3<f32>",coordinateOrigin:"vec3<f32>",commonOrigin:"vec3<f32>",pseudoMeters:"f32"}};var jE=`// Define a structure to hold both the clip-space position and the common position.
1405
1481
  struct ProjectResult {
1406
1482
  clipPosition: vec4<f32>,
1407
1483
  commonPosition: vec4<f32>,
@@ -1444,7 +1520,7 @@ fn project_position_to_clipspace(
1444
1520
  ) -> vec4<f32> {
1445
1521
  return project_position_to_clipspace_and_commonspace(position, position64Low, offset).clipPosition;
1446
1522
  }
1447
- `,OS=`vec4 project_position_to_clipspace(
1523
+ `,HE=`vec4 project_position_to_clipspace(
1448
1524
  vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition
1449
1525
  ) {
1450
1526
  vec3 projectedPosition = project_position(position, position64Low);
@@ -1464,7 +1540,7 @@ vec4 project_position_to_clipspace(
1464
1540
  vec4 commonPosition;
1465
1541
  return project_position_to_clipspace(position, position64Low, offset, commonPosition);
1466
1542
  }
1467
- `,ah={name:"project32",dependencies:[Je],source:IS,vs:OS};function ch(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Qe(e,t){let r=_t.transformMat4([],t,e);return _t.scale(r,r,1/r[3]),r}function lh(e,t){let r=e%t;return r<0?t+r:r}function om(e,t,r){return r*t+(1-r)*e}function ks(e,t,r){return e<t?t:e>r?r:e}function NS(e){return Math.log(e)*Math.LOG2E}var Ti=Math.log2||NS;function Vt(e,t){if(!e)throw new Error(t||"@math.gl/web-mercator: assertion failed.")}var zt=Math.PI,nm=zt/4,Nt=zt/180,fh=180/zt,yi=512,sa=4003e4,Tt=85.051129,am=1.5;function Vs(e){return Math.pow(2,e)}function oa(e){return Ti(e)}function jt(e){let[t,r]=e;Vt(Number.isFinite(t)),Vt(Number.isFinite(r)&&r>=-90&&r<=90,"invalid latitude");let i=t*Nt,s=r*Nt,o=yi*(i+zt)/(2*zt),n=yi*(zt+Math.log(Math.tan(nm+s*.5)))/(2*zt);return[o,n]}function yt(e){let[t,r]=e,i=t/yi*(2*zt)-zt,s=2*(Math.atan(Math.exp(r/yi*(2*zt)-zt))-nm);return[i*fh,s*fh]}function zs(e){let{latitude:t}=e;Vt(Number.isFinite(t));let r=Math.cos(t*Nt);return oa(sa*r)-9}function js(e){let t=Math.cos(e*Nt);return yi/sa/t}function bi(e){let{latitude:t,longitude:r,highPrecision:i=!1}=e;Vt(Number.isFinite(t)&&Number.isFinite(r));let s=yi,o=Math.cos(t*Nt),n=s/360,a=n/o,c=s/sa/o,l={unitsPerMeter:[c,c,c],metersPerUnit:[1/c,1/c,1/c],unitsPerDegree:[n,a,c],degreesPerUnit:[1/n,1/a,1/c]};if(i){let f=Nt*Math.tan(t*Nt)/o,h=n*f/2,u=s/sa*f,d=u/a*c;l.unitsPerDegree2=[0,h,u],l.unitsPerMeter2=[d,0,d]}return l}function Ws(e,t){let[r,i,s]=e,[o,n,a]=t,{unitsPerMeter:c,unitsPerMeter2:l}=bi({longitude:r,latitude:i,highPrecision:!0}),f=jt(e);f[0]+=o*(c[0]+l[0]*n),f[1]+=n*(c[1]+l[1]*n);let h=yt(f),u=(s||0)+(a||0);return Number.isFinite(s)||Number.isFinite(a)?[h[0],h[1],u]:h}function na(e){let{height:t,pitch:r,bearing:i,altitude:s,scale:o,center:n}=e,a=ch();rt.translate(a,a,[0,0,-s]),rt.rotateX(a,a,-r*Nt),rt.rotateZ(a,a,i*Nt);let c=o/t;return rt.scale(a,a,[c,c,c]),n&&rt.translate(a,a,ut.negate([],n)),a}function hh(e){let{width:t,height:r,altitude:i,pitch:s=0,offset:o,center:n,scale:a,nearZMultiplier:c=1,farZMultiplier:l=1}=e,{fovy:f=Re(am)}=e;i!==void 0&&(f=Re(i));let h=f*Nt,u=s*Nt,d=we(f),p=d;n&&(p+=n[2]*a/Math.cos(u)/r);let g=h*(.5+(o?o[1]:0)/r),m=Math.sin(g)*p/Math.sin(ks(Math.PI/2-u-g,.01,Math.PI-.01)),_=Math.sin(u)*m+p,y=p*10,T=Math.min(_*l,y);return{fov:h,aspect:t/r,focalDistance:d,near:c,far:T}}function Re(e){return 2*Math.atan(.5/e)*fh}function we(e){return .5/Math.tan(.5*e*Nt)}function xi(e,t){let[r,i,s=0]=e;return Vt(Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(s)),Qe(t,[r,i,s,1])}function Dt(e,t,r=0){let[i,s,o]=e;if(Vt(Number.isFinite(i)&&Number.isFinite(s),"invalid pixel coordinate"),Number.isFinite(o))return Qe(t,[i,s,o,1]);let n=Qe(t,[i,s,0,1]),a=Qe(t,[i,s,1,1]),c=n[2],l=a[2],f=c===l?0:((r||0)-c)/(l-c);return tt.lerp([],n,a,f)}function aa(e){let{width:t,height:r,bounds:i,minExtent:s=0,maxZoom:o=24,offset:n=[0,0]}=e,[[a,c],[l,f]]=i,h=DS(e.padding),u=jt([a,ks(f,-Tt,Tt)]),d=jt([l,ks(c,-Tt,Tt)]),p=[Math.max(Math.abs(d[0]-u[0]),s),Math.max(Math.abs(d[1]-u[1]),s)],g=[t-h.left-h.right-Math.abs(n[0])*2,r-h.top-h.bottom-Math.abs(n[1])*2];Vt(g[0]>0&&g[1]>0);let m=g[0]/p[0],_=g[1]/p[1],y=(h.right-h.left)/2/m,T=(h.top-h.bottom)/2/_,x=[(d[0]+u[0])/2+y,(d[1]+u[1])/2+T],S=yt(x),E=Math.min(o,Ti(Math.abs(Math.min(m,_))));return Vt(Number.isFinite(E)),{longitude:S[0],latitude:S[1],zoom:E}}function DS(e=0){return typeof e=="number"?{top:e,bottom:e,left:e,right:e}:(Vt(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}var cm=Math.PI/180;function ca(e,t=0){let{width:r,height:i,unproject:s}=e,o={targetZ:t},n=s([0,i],o),a=s([r,i],o),c,l,f=e.fovy?.5*e.fovy*cm:Math.atan(.5/e.altitude),h=(90-e.pitch)*cm;return f>h-.01?(c=lm(e,0,t),l=lm(e,r,t)):(c=s([0,0],o),l=s([r,0],o)),[n,a,l,c]}function lm(e,t,r){let{pixelUnprojectionMatrix:i}=e,s=Qe(i,[t,0,1,1]),o=Qe(i,[t,e.height,1,1]),a=(r*e.distanceScales.unitsPerMeter[2]-s[2])/(o[2]-s[2]),c=tt.lerp([],s,o,a),l=yt(c);return l.push(r),l}var fm=512;function uh(e){let{width:t,height:r,pitch:i=0}=e,{longitude:s,latitude:o,zoom:n,bearing:a=0}=e;(s<-180||s>180)&&(s=lh(s+180,360)-180),(a<-180||a>180)&&(a=lh(a+180,360)-180);let c=Ti(r/fm);if(n<=c)n=c,o=0;else{let l=r/2/Math.pow(2,n),f=yt([0,l])[1];if(o<f)o=f;else{let h=yt([0,fm-l])[1];o>h&&(o=h)}}return{width:t,height:r,longitude:s,latitude:o,zoom:n,pitch:i,bearing:a}}var hm=.01,BS=["longitude","latitude","zoom"],um={curve:1.414,speed:1.2};function dh(e,t,r,i){let{startZoom:s,startCenterXY:o,uDelta:n,w0:a,u1:c,S:l,rho:f,rho2:h,r0:u}=dm(e,t,i);if(c<hm){let x={};for(let S of BS){let E=e[S],v=t[S];x[S]=om(E,v,r)}return x}let d=r*l,p=Math.cosh(u)/Math.cosh(u+f*d),g=a*((Math.cosh(u)*Math.tanh(u+f*d)-Math.sinh(u))/h)/c,m=1/p,_=s+oa(m),y=tt.scale([],n,g);tt.add(y,y,o);let T=yt(y);return{longitude:T[0],latitude:T[1],zoom:_}}function ph(e,t,r){let i={...um,...r},{screenSpeed:s,speed:o,maxDuration:n}=i,{S:a,rho:c}=dm(e,t,i),l=1e3*a,f;return Number.isFinite(s)?f=l/(s/c):f=l/o,Number.isFinite(n)&&f>n?0:f}function dm(e,t,r){r=Object.assign({},um,r);let i=r.curve,s=e.zoom,o=[e.longitude,e.latitude],n=Vs(s),a=t.zoom,c=[t.longitude,t.latitude],l=Vs(a-s),f=jt(o),h=jt(c),u=tt.sub([],h,f),d=Math.max(e.width,e.height),p=d/l,g=tt.length(u)*n,m=Math.max(g,hm),_=i*i,y=(p*p-d*d+_*_*m*m)/(2*d*_*m),T=(p*p-d*d-_*_*m*m)/(2*p*_*m),x=Math.log(Math.sqrt(y*y+1)-y),S=Math.log(Math.sqrt(T*T+1)-T),E=(S-x)/i;return{startZoom:s,startCenterXY:f,uDelta:u,w0:d,u1:g,S:E,rho:i,rho2:_,r0:x,r1:S}}var pm=`
1543
+ `,Oh={name:"project32",dependencies:[nr],source:jE,vs:HE};function Nh(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function ar(t,e){let r=xe.transformMat4([],e,t);return xe.scale(r,r,1/r[3]),r}function Vm(t,e,r){return r*e+(1-r)*t}function Hs(t,e,r){return t<e?e:t>r?r:t}function $E(t){return Math.log(t)*Math.LOG2E}var $s=Math.log2||$E;function je(t,e){if(!t)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var He=Math.PI,zm=He/4,Le=He/180,Dh=180/He,xi=512,la=4003e4,me=85.051129,Wm=1.5;function Xs(t){return Math.pow(2,t)}function fa(t){return $s(t)}function Ae(t){let[e,r]=t;je(Number.isFinite(e)),je(Number.isFinite(r)&&r>=-90&&r<=90,"invalid latitude");let i=e*Le,s=r*Le,o=xi*(i+He)/(2*He),n=xi*(He+Math.log(Math.tan(zm+s*.5)))/(2*He);return[o,n]}function _e(t){let[e,r]=t,i=e/xi*(2*He)-He,s=2*(Math.atan(Math.exp(r/xi*(2*He)-He))-zm);return[i*Dh,s*Dh]}function Ys(t){let{latitude:e}=t;je(Number.isFinite(e));let r=Math.cos(e*Le);return fa(la*r)-9}function Zs(t){let e=Math.cos(t*Le);return xi/la/e}function Ai(t){let{latitude:e,longitude:r,highPrecision:i=!1}=t;je(Number.isFinite(e)&&Number.isFinite(r));let s=xi,o=Math.cos(e*Le),n=s/360,a=n/o,c=s/la/o,l={unitsPerMeter:[c,c,c],metersPerUnit:[1/c,1/c,1/c],unitsPerDegree:[n,a,c],degreesPerUnit:[1/n,1/a,1/c]};if(i){let f=Le*Math.tan(e*Le)/o,h=n*f/2,u=s/la*f,d=u/a*c;l.unitsPerDegree2=[0,h,u],l.unitsPerMeter2=[d,0,d]}return l}function Ks(t,e){let[r,i,s]=t,[o,n,a]=e,{unitsPerMeter:c,unitsPerMeter2:l}=Ai({longitude:r,latitude:i,highPrecision:!0}),f=Ae(t);f[0]+=o*(c[0]+l[0]*n),f[1]+=n*(c[1]+l[1]*n);let h=_e(f),u=(s||0)+(a||0);return Number.isFinite(s)||Number.isFinite(a)?[h[0],h[1],u]:h}function ha(t){let{height:e,pitch:r,bearing:i,altitude:s,scale:o,center:n}=t,a=Nh();re.translate(a,a,[0,0,-s]),re.rotateX(a,a,-r*Le),re.rotateZ(a,a,i*Le);let c=o/e;return re.scale(a,a,[c,c,c]),n&&re.translate(a,a,pe.negate([],n)),a}function Fh(t){let{width:e,height:r,altitude:i,pitch:s=0,offset:o,center:n,scale:a,nearZMultiplier:c=1,farZMultiplier:l=1}=t,{fovy:f=It(Wm)}=t;i!==void 0&&(f=It(i));let h=f*Le,u=s*Le,d=Ot(f),p=d;n&&(p+=n[2]*a/Math.cos(u)/r);let g=h*(.5+(o?o[1]:0)/r),m=Math.sin(g)*p/Math.sin(Hs(Math.PI/2-u-g,.01,Math.PI-.01)),_=Math.sin(u)*m+p,T=p*10,y=Math.min(_*l,T);return{fov:h,aspect:e/r,focalDistance:d,near:c,far:y}}function It(t){return 2*Math.atan(.5/t)*Dh}function Ot(t){return .5/Math.tan(.5*t*Le)}function Si(t,e){let[r,i,s=0]=t;return je(Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(s)),ar(e,[r,i,s,1])}function Ue(t,e,r=0){let[i,s,o]=t;if(je(Number.isFinite(i)&&Number.isFinite(s),"invalid pixel coordinate"),Number.isFinite(o))return ar(e,[i,s,o,1]);let n=ar(e,[i,s,0,1]),a=ar(e,[i,s,1,1]),c=n[2],l=a[2],f=c===l?0:((r||0)-c)/(l-c);return ee.lerp([],n,a,f)}function ua(t){let{width:e,height:r,bounds:i,minExtent:s=0,maxZoom:o=24,offset:n=[0,0]}=t,[[a,c],[l,f]]=i,h=XE(t.padding),u=Ae([a,Hs(f,-me,me)]),d=Ae([l,Hs(c,-me,me)]),p=[Math.max(Math.abs(d[0]-u[0]),s),Math.max(Math.abs(d[1]-u[1]),s)],g=[e-h.left-h.right-Math.abs(n[0])*2,r-h.top-h.bottom-Math.abs(n[1])*2];je(g[0]>0&&g[1]>0);let m=g[0]/p[0],_=g[1]/p[1],T=(h.right-h.left)/2/m,y=(h.top-h.bottom)/2/_,x=[(d[0]+u[0])/2+T,(d[1]+u[1])/2+y],S=_e(x),A=Math.min(o,$s(Math.abs(Math.min(m,_))));return je(Number.isFinite(A)),{longitude:S[0],latitude:S[1],zoom:A}}function XE(t=0){return typeof t=="number"?{top:t,bottom:t,left:t,right:t}:(je(Number.isFinite(t.top)&&Number.isFinite(t.bottom)&&Number.isFinite(t.left)&&Number.isFinite(t.right)),t)}var jm=Math.PI/180;function da(t,e=0){let{width:r,height:i,unproject:s}=t,o={targetZ:e},n=s([0,i],o),a=s([r,i],o),c,l,f=t.fovy?.5*t.fovy*jm:Math.atan(.5/t.altitude),h=(90-t.pitch)*jm;return f>h-.01?(c=Hm(t,0,e),l=Hm(t,r,e)):(c=s([0,0],o),l=s([r,0],o)),[n,a,l,c]}function Hm(t,e,r){let{pixelUnprojectionMatrix:i}=t,s=ar(i,[e,0,1,1]),o=ar(i,[e,t.height,1,1]),a=(r*t.distanceScales.unitsPerMeter[2]-s[2])/(o[2]-s[2]),c=ee.lerp([],s,o,a),l=_e(c);return l.push(r),l}var $m=.01,ZE=["longitude","latitude","zoom"],Xm={curve:1.414,speed:1.2};function Bh(t,e,r,i){let{startZoom:s,startCenterXY:o,uDelta:n,w0:a,u1:c,S:l,rho:f,rho2:h,r0:u}=Ym(t,e,i);if(c<$m){let x={};for(let S of ZE){let A=t[S],w=e[S];x[S]=Vm(A,w,r)}return x}let d=r*l,p=Math.cosh(u)/Math.cosh(u+f*d),g=a*((Math.cosh(u)*Math.tanh(u+f*d)-Math.sinh(u))/h)/c,m=1/p,_=s+fa(m),T=ee.scale([],n,g);ee.add(T,T,o);let y=_e(T);return{longitude:y[0],latitude:y[1],zoom:_}}function Lh(t,e,r){let i={...Xm,...r},{screenSpeed:s,speed:o,maxDuration:n}=i,{S:a,rho:c}=Ym(t,e,i),l=1e3*a,f;return Number.isFinite(s)?f=l/(s/c):f=l/o,Number.isFinite(n)&&f>n?0:f}function Ym(t,e,r){r=Object.assign({},Xm,r);let i=r.curve,s=t.zoom,o=[t.longitude,t.latitude],n=Xs(s),a=e.zoom,c=[e.longitude,e.latitude],l=Xs(a-s),f=Ae(o),h=Ae(c),u=ee.sub([],h,f),d=Math.max(t.width,t.height),p=d/l,g=ee.length(u)*n,m=Math.max(g,$m),_=i*i,T=(p*p-d*d+_*_*m*m)/(2*d*_*m),y=(p*p-d*d-_*_*m*m)/(2*p*_*m),x=Math.log(Math.sqrt(T*T+1)-T),S=Math.log(Math.sqrt(y*y+1)-y),A=(S-x)/i;return{startZoom:s,startCenterXY:f,uDelta:u,w0:d,u1:g,S:A,rho:i,rho2:_,r0:x,r1:S}}var Zm=`
1468
1544
  uniform shadowUniforms {
1469
1545
  bool drawShadowMap;
1470
1546
  bool useShadowMap;
@@ -1476,7 +1552,7 @@ uniform shadowUniforms {
1476
1552
  vec4 projectCenter0;
1477
1553
  vec4 projectCenter1;
1478
1554
  } shadow;
1479
- `,US=`
1555
+ `,qE=`
1480
1556
  const int max_lights = 2;
1481
1557
 
1482
1558
  out vec3 shadow_vPosition[max_lights];
@@ -1502,10 +1578,10 @@ vec4 shadow_setVertexPosition(vec4 position_commonspace) {
1502
1578
  }
1503
1579
  return gl_Position;
1504
1580
  }
1505
- `,kS=`
1506
- ${pm}
1507
- ${US}
1508
- `,VS=`
1581
+ `,QE=`
1582
+ ${Zm}
1583
+ ${qE}
1584
+ `,GE=`
1509
1585
  const int max_lights = 2;
1510
1586
  uniform sampler2D shadow_uShadowMap0;
1511
1587
  uniform sampler2D shadow_uShadowMap1;
@@ -1545,14 +1621,14 @@ vec4 shadow_filterShadowColor(vec4 color) {
1545
1621
  }
1546
1622
  return color;
1547
1623
  }
1548
- `,zS=`
1549
- ${pm}
1550
- ${VS}
1551
- `,jS=Ot(YS),WS=Ot(KS),HS=[0,0,0,1],XS=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function $S(e,t){let[r,i,s]=e,o=Dt([r,i,s],t);return Number.isFinite(s)?o:[o[0],o[1],0]}function YS({viewport:e,center:t}){return new j(e.viewProjectionMatrix).invert().transform(t)}function KS({viewport:e,shadowMatrices:t}){let r=[],i=e.pixelUnprojectionMatrix,s=e.isGeospatial?void 0:1,o=[[0,0,s],[e.width,0,s],[0,e.height,s],[e.width,e.height,s],[0,0,-1],[e.width,0,-1],[0,e.height,-1],[e.width,e.height,-1]].map(n=>$S(n,i));for(let n of t){let a=n.clone().translate(new z(e.center).negate()),c=o.map(f=>a.transform(f)),l=new j().ortho({left:Math.min(...c.map(f=>f[0])),right:Math.max(...c.map(f=>f[0])),bottom:Math.min(...c.map(f=>f[1])),top:Math.max(...c.map(f=>f[1])),near:Math.min(...c.map(f=>-f[2])),far:Math.max(...c.map(f=>-f[2]))});r.push(l.multiplyRight(n))}return r}function qS(e){let{shadowEnabled:t=!0,project:r}=e;if(!t||!r||!e.shadowMatrices||!e.shadowMatrices.length)return{drawShadowMap:!1,useShadowMap:!1,shadow_uShadowMap0:e.dummyShadowMap,shadow_uShadowMap1:e.dummyShadowMap};let i=Je.getUniforms(r),s=jS({viewport:r.viewport,center:i.center}),o=[],n=WS({shadowMatrices:e.shadowMatrices,viewport:r.viewport}).slice();for(let c=0;c<e.shadowMatrices.length;c++){let l=n[c],f=l.clone().translate(new z(r.viewport.center).negate());i.coordinateSystem===B.LNGLAT&&i.projectionMode===ot.WEB_MERCATOR?(n[c]=f,o[c]=s):(n[c]=l.clone().multiplyRight(XS),o[c]=f.transform(s))}let a={drawShadowMap:Boolean(e.drawToShadowMap),useShadowMap:e.shadowMaps?e.shadowMaps.length>0:!1,color:e.shadowColor||HS,lightId:e.shadowLightId||0,lightCount:e.shadowMatrices.length,shadow_uShadowMap0:e.dummyShadowMap,shadow_uShadowMap1:e.dummyShadowMap};for(let c=0;c<n.length;c++)a[`viewProjectionMatrix${c}`]=n[c],a[`projectCenter${c}`]=o[c];for(let c=0;c<2;c++)a[`shadow_uShadowMap${c}`]=e.shadowMaps&&e.shadowMaps[c]||e.dummyShadowMap;return a}var Ai={name:"shadow",dependencies:[Je],vs:kS,fs:zS,inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1624
+ `,JE=`
1625
+ ${Zm}
1626
+ ${GE}
1627
+ `,ew=Be(ow),tw=Be(nw),rw=[0,0,0,1],iw=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function sw(t,e){let[r,i,s]=t,o=Ue([r,i,s],e);return Number.isFinite(s)?o:[o[0],o[1],0]}function ow({viewport:t,center:e}){return new z(t.viewProjectionMatrix).invert().transform(e)}function nw({viewport:t,shadowMatrices:e}){let r=[],i=t.pixelUnprojectionMatrix,s=t.isGeospatial?void 0:1,o=[[0,0,s],[t.width,0,s],[0,t.height,s],[t.width,t.height,s],[0,0,-1],[t.width,0,-1],[0,t.height,-1],[t.width,t.height,-1]].map(n=>sw(n,i));for(let n of e){let a=n.clone().translate(new H(t.center).negate()),c=o.map(f=>a.transform(f)),l=new z().ortho({left:Math.min(...c.map(f=>f[0])),right:Math.max(...c.map(f=>f[0])),bottom:Math.min(...c.map(f=>f[1])),top:Math.max(...c.map(f=>f[1])),near:Math.min(...c.map(f=>-f[2])),far:Math.max(...c.map(f=>-f[2]))});r.push(l.multiplyRight(n))}return r}function aw(t){let{shadowEnabled:e=!0,project:r}=t;if(!e||!r||!t.shadowMatrices||!t.shadowMatrices.length)return{drawShadowMap:!1,useShadowMap:!1,shadow_uShadowMap0:t.dummyShadowMap,shadow_uShadowMap1:t.dummyShadowMap};let i=nr.getUniforms(r),s=ew({viewport:r.viewport,center:i.center}),o=[],n=tw({shadowMatrices:t.shadowMatrices,viewport:r.viewport}).slice();for(let c=0;c<t.shadowMatrices.length;c++){let l=n[c],f=l.clone().translate(new H(r.viewport.center).negate());i.coordinateSystem===k.LNGLAT&&i.projectionMode===oe.WEB_MERCATOR?(n[c]=f,o[c]=s):(n[c]=l.clone().multiplyRight(iw),o[c]=f.transform(s))}let a={drawShadowMap:Boolean(t.drawToShadowMap),useShadowMap:t.shadowMaps?t.shadowMaps.length>0:!1,color:t.shadowColor||rw,lightId:t.shadowLightId||0,lightCount:t.shadowMatrices.length,shadow_uShadowMap0:t.dummyShadowMap,shadow_uShadowMap1:t.dummyShadowMap};for(let c=0;c<n.length;c++)a[`viewProjectionMatrix${c}`]=n[c],a[`projectCenter${c}`]=o[c];for(let c=0;c<2;c++)a[`shadow_uShadowMap${c}`]=t.shadowMaps&&t.shadowMaps[c]||t.dummyShadowMap;return a}var Ei={name:"shadow",dependencies:[nr],vs:QE,fs:JE,inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1552
1628
  position = shadow_setVertexPosition(geometry.position);
1553
1629
  `,"fs:DECKGL_FILTER_COLOR":`
1554
1630
  color = shadow_filterShadowColor(color);
1555
- `},getUniforms:qS,uniformTypes:{drawShadowMap:"f32",useShadowMap:"f32",color:"vec4<f32>",lightId:"i32",lightCount:"f32",viewProjectionMatrix0:"mat4x4<f32>",viewProjectionMatrix1:"mat4x4<f32>",projectCenter0:"vec4<f32>",projectCenter1:"vec4<f32>"}};var gh={...Sn,defaultUniforms:{...Sn.defaultUniforms,useFloatColors:!1},inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1631
+ `},getUniforms:aw,uniformTypes:{drawShadowMap:"f32",useShadowMap:"f32",color:"vec4<f32>",lightId:"i32",lightCount:"f32",viewProjectionMatrix0:"mat4x4<f32>",viewProjectionMatrix1:"mat4x4<f32>",projectCenter0:"vec4<f32>",projectCenter1:"vec4<f32>"}};var Uh={...Pn,defaultUniforms:{...Pn.defaultUniforms,useFloatColors:!1},inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1556
1632
  // for picking depth values
1557
1633
  picking_setPickingAttribute(position.z / position.w);
1558
1634
  `,"vs:DECKGL_FILTER_COLOR":`
@@ -1563,10 +1639,10 @@ ${VS}
1563
1639
 
1564
1640
  // use picking color if rendering to picking FBO.
1565
1641
  color = picking_filterPickingColor(color);
1566
- `}}};var ZS=[Xn],JS=["vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)","vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)","vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)","fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)"],QS=[];function la(e){let t=je.getDefaultShaderAssembler();for(let i of ZS)t.addDefaultModule(i);t._hookFunctions.length=0;let r=e==="glsl"?JS:QS;for(let i of r)t.addShaderHook(i);return t}var GS=[255,255,255],tE=1,eE=0,Si=class{constructor(t={}){this.type="ambient";let{color:r=GS}=t,{intensity:i=tE}=t;this.id=t.id||`ambient-${eE++}`,this.color=r,this.intensity=i}};var rE=[255,255,255],iE=1,sE=[0,0,-1],oE=0,Pe=class{constructor(t={}){this.type="directional";let{color:r=rE}=t,{intensity:i=iE}=t,{direction:s=sE}=t,{_shadow:o=!1}=t;this.id=t.id||`directional-${oE++}`,this.color=r,this.intensity=i,this.type="directional",this.direction=new z(s).normalize().toArray(),this.shadow=o}getProjectedLight(t){return this}};var Pr=class{constructor(t,r={id:"pass"}){let{id:i}=r;this.id=i,this.device=t,this.props={...r}}setProps(t){Object.assign(this.props,t)}render(t){}cleanup(){}};var Wt=class extends Pr{constructor(){super(...arguments),this._lastRenderIndex=-1}render(t){let r=this.device.canvasContext,i=t.target??r.getCurrentFramebuffer(),[s,o]=r.getDrawingBufferSize(),n=t.clearCanvas??!0,a=t.clearColor??(n?[0,0,0,0]:!1),c=n?1:!1,l=n?0:!1,f=t.colorMask??15,h={viewport:[0,0,s,o]};t.colorMask&&(h.colorMask=f),t.scissorRect&&(h.scissorRect=t.scissorRect);let u=this.device.beginRenderPass({framebuffer:i,parameters:h,clearColor:a,clearDepth:c,clearStencil:l});try{return this._drawLayers(u,t)}finally{u.end(),this.device.submit()}}_drawLayers(t,r){let{target:i,shaderModuleProps:s,viewports:o,views:n,onViewportActive:a,clearStack:c=!0}=r;r.pass=r.pass||"unknown",c&&(this._lastRenderIndex=-1);let l=[];for(let f of o){let h=n&&n[f.id];a?.(f);let u=this._getDrawLayerParams(f,r),d=f.subViewports||[f];for(let p of d){let g=this._drawLayersInViewport(t,{target:i,shaderModuleProps:s,viewport:p,view:h,pass:r.pass,layers:r.layers},u);l.push(g)}}return l}_getDrawLayerParams(t,{layers:r,pass:i,isPicking:s=!1,layerFilter:o,cullRect:n,effects:a,shaderModuleProps:c},l=!1){let f=[],h=mm(this._lastRenderIndex+1),u={layer:r[0],viewport:t,isPicking:s,renderPass:i,cullRect:n},d={};for(let p=0;p<r.length;p++){let g=r[p],m=this._shouldDrawLayer(g,u,o,d),_={shouldDrawLayer:m};m&&!l&&(_.shouldDrawLayer=!0,_.layerRenderIndex=h(g,m),_.shaderModuleProps=this._getShaderModuleProps(g,a,i,c),_.layerParameters={...g.context.deck?.props.parameters,...this.getLayerParameters(g,p,t)}),f[p]=_}return f}_drawLayersInViewport(t,{layers:r,shaderModuleProps:i,pass:s,target:o,viewport:n,view:a},c){let l=nE(this.device,{shaderModuleProps:i,target:o,viewport:n});if(a){let{clear:h,clearColor:u,clearDepth:d,clearStencil:p}=a.props;if(h){let g=[0,0,0,0],m=1,_=0;Array.isArray(u)?g=[...u.slice(0,3),u[3]||255].map(T=>T/255):u===!1&&(g=!1),d!==void 0&&(m=d),p!==void 0&&(_=p),this.device.beginRenderPass({framebuffer:o,parameters:{viewport:l,scissorRect:l},clearColor:g,clearDepth:m,clearStencil:_}).end()}}let f={totalCount:r.length,visibleCount:0,compositeCount:0,pickableCount:0};t.setParameters({viewport:l});for(let h=0;h<r.length;h++){let u=r[h],d=c[h],{shouldDrawLayer:p}=d;if(p&&u.props.pickable&&f.pickableCount++,u.isComposite&&f.compositeCount++,u.isDrawable&&d.shouldDrawLayer){let{layerRenderIndex:g,shaderModuleProps:m,layerParameters:_}=d;f.visibleCount++,this._lastRenderIndex=Math.max(this._lastRenderIndex,g),m.project&&(m.project.viewport=n),u.context.renderPass=t;try{u._drawLayer({renderPass:t,shaderModuleProps:m,uniforms:{layerIndex:g},parameters:_})}catch(y){u.raiseError(y,`drawing ${u} to ${s}`)}}}return f}shouldDrawLayer(t){return!0}getShaderModuleProps(t,r,i){return null}getLayerParameters(t,r,i){return t.props.parameters}_shouldDrawLayer(t,r,i,s){if(!(t.props.visible&&this.shouldDrawLayer(t)))return!1;r.layer=t;let n=t.parent;for(;n;){if(!n.props.visible||!n.filterSubLayer(r))return!1;r.layer=n,n=n.parent}if(i){let a=r.layer.id;if(a in s||(s[a]=i(r)),!s[a])return!1}return t.activateViewport(r.viewport),!0}_getShaderModuleProps(t,r,i,s){let o=this.device.canvasContext.cssToDeviceRatio(),n=t.internalState?.propsInTransition||t.props,a={layer:n,picking:{isActive:!1},project:{viewport:t.context.viewport,devicePixelRatio:o,modelMatrix:n.modelMatrix,coordinateSystem:n.coordinateSystem,coordinateOrigin:n.coordinateOrigin,autoWrapLongitude:t.wrapLongitude}};if(r)for(let c of r)gm(a,c.getShaderModuleProps?.(t,a));return gm(a,this.getShaderModuleProps(t,r,a),s)}};function mm(e=0,t={}){let r={},i=(s,o)=>{let n=s.props._offset,a=s.id,c=s.parent&&s.parent.id,l;if(c&&!(c in t)&&i(s.parent,!1),c in r){let f=r[c]=r[c]||mm(t[c],t);l=f(s,o),r[a]=f}else Number.isFinite(n)?(l=n+(t[c]||0),r[a]=null):l=e;return o&&l>=e&&(e=l+1),t[a]=l,l};return i}function nE(e,{shaderModuleProps:t,target:r,viewport:i}){let s=t?.project?.devicePixelRatio??e.canvasContext.cssToDeviceRatio(),[,o]=e.canvasContext.getDrawingBufferSize(),n=r?r.height:o,a=i;return[a.x*s,n-(a.y+a.height)*s,a.width*s,a.height*s]}function gm(e,...t){for(let r of t)if(r)for(let i in r)e[i]?Object.assign(e[i],r[i]):e[i]=r[i];return e}var Hs=class extends Wt{constructor(t,r){super(t,r);let i=t.createTexture({format:"rgba8unorm",width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),s=t.createTexture({format:"depth16unorm",width:1,height:1});this.fbo=t.createFramebuffer({id:"shadowmap",width:1,height:1,colorAttachments:[i],depthStencilAttachment:s})}delete(){this.fbo&&(this.fbo.destroy(),this.fbo=null)}getShadowMap(){return this.fbo.colorAttachments[0].texture}render(t){let r=this.fbo,i=this.device.canvasContext.cssToDeviceRatio(),s=t.viewports[0],o=s.width*i,n=s.height*i,a=[1,1,1,1];(o!==r.width||n!==r.height)&&r.resize({width:o,height:n}),super.render({...t,clearColor:a,target:r,pass:"shadow"})}getLayerParameters(t,r,i){return{...t.props.parameters,blend:!1,depthWriteEnabled:!0,depthCompare:"less-equal"}}shouldDrawLayer(t){return t.props.shadowEnabled!==!1}getShaderModuleProps(t,r,i){return{shadow:{project:i.project,drawToShadowMap:!0}}}};var aE={color:[255,255,255],intensity:1},_m=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],cE=[0,0,0,200/255],Ge=class{constructor(t={}){this.id="lighting-effect",this.shadowColor=cE,this.shadow=!1,this.directionalLights=[],this.pointLights=[],this.shadowPasses=[],this.dummyShadowMap=null,this.setProps(t)}setup(t){this.context=t;let{device:r,deck:i}=t;this.shadow&&!this.dummyShadowMap&&(this._createShadowPasses(r),i._addDefaultShaderModule(Ai),this.dummyShadowMap=r.createTexture({width:1,height:1}))}setProps(t){this.ambientLight=void 0,this.directionalLights=[],this.pointLights=[];for(let r in t){let i=t[r];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i);break;default:}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(r=>r.shadow),this.context&&this.setup(this.context),this.props=t}preRender({layers:t,layerFilter:r,viewports:i,onViewportActive:s,views:o}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let n=0;n<this.shadowPasses.length;n++)this.shadowPasses[n].render({layers:t,layerFilter:r,viewports:i,onViewportActive:s,views:o,shaderModuleProps:{shadow:{shadowLightId:n,dummyShadowMap:this.dummyShadowMap,shadowMatrices:this.shadowMatrices}}})}}getShaderModuleProps(t,r){let i=this.shadow?{project:r.project,shadowMaps:this.shadowPasses.map(n=>n.getShadowMap()),dummyShadowMap:this.dummyShadowMap,shadowColor:this.shadowColor,shadowMatrices:this.shadowMatrices}:{},s={enabled:!0,ambientLight:this.ambientLight,directionalLights:this.directionalLights.map(n=>n.getProjectedLight({layer:t})),pointLights:this.pointLights.map(n=>n.getProjectedLight({layer:t}))},o=t.props.material;return{shadow:i,lighting:s,phongMaterial:o,gouraudMaterial:o}}cleanup(t){for(let r of this.shadowPasses)r.delete();this.shadowPasses.length=0,this.dummyShadowMap&&(this.dummyShadowMap.destroy(),this.dummyShadowMap=null,t.deck._removeDefaultShaderModule(Ai))}_calculateMatrices(){let t=[];for(let r of this.directionalLights){let i=new j().lookAt({eye:new z(r.direction).negate()});t.push(i)}return t}_createShadowPasses(t){for(let r=0;r<this.directionalLights.length;r++){let i=new Hs(t);this.shadowPasses[r]=i}}_applyDefaultLights(){let{ambientLight:t,pointLights:r,directionalLights:i}=this;!t&&r.length===0&&i.length===0&&(this.ambientLight=new Si(aE),this.directionalLights.push(new Pe(_m[0]),new Pe(_m[1])))}};var mh=class{constructor(t={}){this._pool=[],this.opts={overAlloc:2,poolSize:100},this.setOptions(t)}setOptions(t){Object.assign(this.opts,t)}allocate(t,r,{size:i=1,type:s,padding:o=0,copy:n=!1,initialize:a=!1,maxCount:c}){let l=s||t&&t.constructor||Float32Array,f=r*i+o;if(ArrayBuffer.isView(t)){if(f<=t.length)return t;if(f*t.BYTES_PER_ELEMENT<=t.buffer.byteLength)return new l(t.buffer,0,f)}let h=1/0;c&&(h=c*i+o);let u=this._allocate(l,f,a,h);return t&&n?u.set(t):a||u.fill(0,0,4),this._release(t),u}release(t){this._release(t)}_allocate(t,r,i,s){let o=Math.max(Math.ceil(r*this.opts.overAlloc),1);o>s&&(o=s);let n=this._pool,a=t.BYTES_PER_ELEMENT*o,c=n.findIndex(l=>l.byteLength>=a);if(c>=0){let l=new t(n.splice(c,1)[0],0,o);return i&&l.fill(0),l}return new t(o)}_release(t){if(!ArrayBuffer.isView(t))return;let r=this._pool,{buffer:i}=t,{byteLength:s}=i,o=r.findIndex(n=>n.byteLength>=s);o<0?r.push(i):(o>0||r.length<this.opts.poolSize)&&r.splice(o,0,i),r.length>this.opts.poolSize&&r.shift()}},Ht=new mh;function Ri(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Mr(e,t){let r=e%t;return r<0?t+r:r}function ym(e){return[e[12],e[13],e[14]]}function bm(e){return{left:Ei(e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]),right:Ei(e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]),bottom:Ei(e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]),top:Ei(e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]),near:Ei(e[3]+e[2],e[7]+e[6],e[11]+e[10],e[15]+e[14]),far:Ei(e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14])}}var Tm=new z;function Ei(e,t,r,i){Tm.set(e,t,r);let s=Tm.len();return{distance:i/s,normal:new z(-e/s,-t/s,-r/s)}}function _h(e){return e-Math.fround(e)}var Xs;function fa(e,t){let{size:r=1,startIndex:i=0}=t,s=t.endIndex!==void 0?t.endIndex:e.length,o=(s-i)/r;Xs=Ht.allocate(Xs,o,{type:Float32Array,size:r*2});let n=i,a=0;for(;n<s;){for(let c=0;c<r;c++){let l=e[n++];Xs[a+c]=l,Xs[a+c+r]=_h(l)}a+=r*2}return Xs.subarray(0,o*r*2)}function xm(e){let t=null,r=!1;for(let i of e)i&&(t?(r||(t=[[t[0][0],t[0][1]],[t[1][0],t[1][1]]],r=!0),t[0][0]=Math.min(t[0][0],i[0][0]),t[0][1]=Math.min(t[0][1],i[0][1]),t[1][0]=Math.max(t[1][0],i[1][0]),t[1][1]=Math.max(t[1][1],i[1][1])):t=i);return t}var lE=Math.PI/180,fE=Ri(),Am=[0,0,0],hE={unitsPerMeter:[1,1,1],metersPerUnit:[1,1,1]};function uE({width:e,height:t,orthographic:r,fovyRadians:i,focalDistance:s,padding:o,near:n,far:a}){let c=e/t,l=r?new j().orthographic({fovy:i,aspect:c,focalDistance:s,near:n,far:a}):new j().perspective({fovy:i,aspect:c,near:n,far:a});if(o){let{left:f=0,right:h=0,top:u=0,bottom:d=0}=o,p=H((f+e-h)/2,0,e)-e/2,g=H((u+t-d)/2,0,t)-t/2;l[8]-=p*2/e,l[9]+=g*2/t}return l}var wi=class{constructor(t={}){this._frustumPlanes={},this.id=t.id||this.constructor.displayName||"viewport",this.x=t.x||0,this.y=t.y||0,this.width=t.width||1,this.height=t.height||1,this.zoom=t.zoom||0,this.padding=t.padding,this.distanceScales=t.distanceScales||hE,this.focalDistance=t.focalDistance||1,this.position=t.position||Am,this.modelMatrix=t.modelMatrix||null;let{longitude:r,latitude:i}=t;this.isGeospatial=Number.isFinite(i)&&Number.isFinite(r),this._initProps(t),this._initMatrices(t),this.equals=this.equals.bind(this),this.project=this.project.bind(this),this.unproject=this.unproject.bind(this),this.projectPosition=this.projectPosition.bind(this),this.unprojectPosition=this.unprojectPosition.bind(this),this.projectFlat=this.projectFlat.bind(this),this.unprojectFlat=this.unprojectFlat.bind(this)}get subViewports(){return null}get metersPerPixel(){return this.distanceScales.metersPerUnit[2]/this.scale}get projectionMode(){return this.isGeospatial?this.zoom<12?ot.WEB_MERCATOR:ot.WEB_MERCATOR_AUTO_OFFSET:ot.IDENTITY}equals(t){return t instanceof wi?this===t?!0:t.width===this.width&&t.height===this.height&&t.scale===this.scale&&xt(t.projectionMatrix,this.projectionMatrix)&&xt(t.viewMatrix,this.viewMatrix):!1}project(t,{topLeft:r=!0}={}){let i=this.projectPosition(t),s=xi(i,this.pixelProjectionMatrix),[o,n]=s,a=r?n:this.height-n;return t.length===2?[o,a]:[o,a,s[2]]}unproject(t,{topLeft:r=!0,targetZ:i}={}){let[s,o,n]=t,a=r?o:this.height-o,c=i&&i*this.distanceScales.unitsPerMeter[2],l=Dt([s,a,n],this.pixelUnprojectionMatrix,c),[f,h,u]=this.unprojectPosition(l);return Number.isFinite(n)?[f,h,u]:Number.isFinite(i)?[f,h,i]:[f,h]}projectPosition(t){let[r,i]=this.projectFlat(t),s=(t[2]||0)*this.distanceScales.unitsPerMeter[2];return[r,i,s]}unprojectPosition(t){let[r,i]=this.unprojectFlat(t),s=(t[2]||0)*this.distanceScales.metersPerUnit[2];return[r,i,s]}projectFlat(t){if(this.isGeospatial){let r=jt(t);return r[1]=H(r[1],-318,830),r}return t}unprojectFlat(t){return this.isGeospatial?yt(t):t}getBounds(t={}){let r={targetZ:t.z||0},i=this.unproject([0,0],r),s=this.unproject([this.width,0],r),o=this.unproject([0,this.height],r),n=this.unproject([this.width,this.height],r);return[Math.min(i[0],s[0],o[0],n[0]),Math.min(i[1],s[1],o[1],n[1]),Math.max(i[0],s[0],o[0],n[0]),Math.max(i[1],s[1],o[1],n[1])]}getDistanceScales(t){return t&&this.isGeospatial?bi({longitude:t[0],latitude:t[1],highPrecision:!0}):this.distanceScales}containsPixel({x:t,y:r,width:i=1,height:s=1}){return t<this.x+this.width&&this.x<t+i&&r<this.y+this.height&&this.y<r+s}getFrustumPlanes(){return this._frustumPlanes.near?this._frustumPlanes:(Object.assign(this._frustumPlanes,bm(this.viewProjectionMatrix)),this._frustumPlanes)}panByPosition(t,r,i){return null}_initProps(t){let r=t.longitude,i=t.latitude;this.isGeospatial&&(Number.isFinite(t.zoom)||(this.zoom=zs({latitude:i})+Math.log2(this.focalDistance)),this.distanceScales=t.distanceScales||bi({latitude:i,longitude:r}));let s=Math.pow(2,this.zoom);this.scale=s;let{position:o,modelMatrix:n}=t,a=Am;if(o&&(a=n?new j(n).transformAsVector(o,[]):o),this.isGeospatial){let c=this.projectPosition([r,i,0]);this.center=new z(a).scale(this.distanceScales.unitsPerMeter).add(c)}else this.center=this.projectPosition(a)}_initMatrices(t){let{viewMatrix:r=fE,projectionMatrix:i=null,orthographic:s=!1,fovyRadians:o,fovy:n=75,near:a=.1,far:c=1e3,padding:l=null,focalDistance:f=1}=t;this.viewMatrixUncentered=r,this.viewMatrix=new j().multiplyRight(r).translate(new z(this.center).negate()),this.projectionMatrix=i||uE({width:this.width,height:this.height,orthographic:s,fovyRadians:o||n*lE,focalDistance:f,padding:l,near:a,far:c});let h=Ri();rt.multiply(h,h,this.projectionMatrix),rt.multiply(h,h,this.viewMatrix),this.viewProjectionMatrix=h,this.viewMatrixInverse=rt.invert([],this.viewMatrix)||this.viewMatrix,this.cameraPosition=ym(this.viewMatrixInverse);let u=Ri(),d=Ri();rt.scale(u,u,[this.width/2,-this.height/2,1]),rt.translate(u,u,[1,-1,0]),rt.multiply(d,u,this.viewProjectionMatrix),this.pixelProjectionMatrix=d,this.pixelUnprojectionMatrix=rt.invert(Ri(),this.pixelProjectionMatrix),this.pixelUnprojectionMatrix||F.warn("Pixel project matrix not invertible")()}};wi.displayName="Viewport";var bt=wi;var vr=class extends bt{constructor(t={}){let{latitude:r=0,longitude:i=0,zoom:s=0,pitch:o=0,bearing:n=0,nearZMultiplier:a=.1,farZMultiplier:c=1.01,nearZ:l,farZ:f,orthographic:h=!1,projectionMatrix:u,repeat:d=!1,worldOffset:p=0,position:g,padding:m,legacyMeterSizes:_=!1}=t,{width:y,height:T,altitude:x=1.5}=t,S=Math.pow(2,s);y=y||1,T=T||1;let E,v=null;if(u)x=u[5]/2,E=Re(x);else{t.fovy?(E=t.fovy,x=we(E)):E=Re(x);let R;if(m){let{top:M=0,bottom:L=0}=m;R=[0,H((M+T-L)/2,0,T)-T/2]}v=hh({width:y,height:T,scale:S,center:g&&[0,0,g[2]*js(r)],offset:R,pitch:o,fovy:E,nearZMultiplier:a,farZMultiplier:c}),Number.isFinite(l)&&(v.near=l),Number.isFinite(f)&&(v.far=f)}let P=na({height:T,pitch:o,bearing:n,scale:S,altitude:x});p&&(P=new j().translate([512*p,0,0]).multiplyLeft(P)),super({...t,width:y,height:T,viewMatrix:P,longitude:i,latitude:r,zoom:s,...v,fovy:E,focalDistance:x}),this.latitude=r,this.longitude=i,this.zoom=s,this.pitch=o,this.bearing=n,this.altitude=x,this.fovy=E,this.orthographic=h,this._subViewports=d?[]:null,this._pseudoMeters=_,Object.freeze(this)}get subViewports(){if(this._subViewports&&!this._subViewports.length){let t=this.getBounds(),r=Math.floor((t[0]+180)/360),i=Math.ceil((t[2]-180)/360);for(let s=r;s<=i;s++){let o=s?new vr({...this,worldOffset:s}):this;this._subViewports.push(o)}}return this._subViewports}projectPosition(t){if(this._pseudoMeters)return super.projectPosition(t);let[r,i]=this.projectFlat(t),s=(t[2]||0)*js(t[1]);return[r,i,s]}unprojectPosition(t){if(this._pseudoMeters)return super.unprojectPosition(t);let[r,i]=this.unprojectFlat(t),s=(t[2]||0)/js(i);return[r,i,s]}addMetersToLngLat(t,r){return Ws(t,r)}panByPosition(t,r,i){let s=Dt(r,this.pixelUnprojectionMatrix),o=this.projectFlat(t),n=tt.add([],o,tt.negate([],s)),a=tt.add([],this.center,n),[c,l]=this.unprojectFlat(a);return{longitude:c,latitude:l}}panByPosition3D(t,r){let i=t[2]||0,s=tt.sub([],t,this.unproject(r,{targetZ:i}));return{longitude:this.longitude+s[0],latitude:this.latitude+s[1]}}getBounds(t={}){let r=ca(this,t.z||0);return[Math.min(r[0][0],r[1][0],r[2][0],r[3][0]),Math.min(r[0][1],r[1][1],r[2][1],r[3][1]),Math.max(r[0][0],r[1][0],r[2][0],r[3][0]),Math.max(r[0][1],r[1][1],r[2][1],r[3][1])]}fitBounds(t,r={}){let{width:i,height:s}=this,{longitude:o,latitude:n,zoom:a}=aa({width:i,height:s,bounds:t,...r});return new vr({width:i,height:s,longitude:o,latitude:n,zoom:a})}};vr.displayName="WebMercatorViewport";var tr=vr;var Sm=[0,0,0];function Th(e,t,r=!1){let i=t.projectPosition(e);if(r&&t instanceof tr){let[s,o,n=0]=e,a=t.getDistanceScales([s,o]);i[2]=n*a.unitsPerMeter[2]}return i}function dE(e){let{viewport:t,modelMatrix:r,coordinateOrigin:i}=e,{coordinateSystem:s,fromCoordinateSystem:o,fromCoordinateOrigin:n}=e;return s===B.DEFAULT&&(s=t.isGeospatial?B.LNGLAT:B.CARTESIAN),o===void 0&&(o=s),n===void 0&&(n=i),{viewport:t,coordinateSystem:s,coordinateOrigin:i,modelMatrix:r,fromCoordinateSystem:o,fromCoordinateOrigin:n}}function yh(e,{viewport:t,modelMatrix:r,coordinateSystem:i,coordinateOrigin:s,offsetMode:o}){let[n,a,c=0]=e;switch(r&&([n,a,c]=_t.transformMat4([],[n,a,c,1],r)),i){case B.LNGLAT:return Th([n,a,c],t,o);case B.LNGLAT_OFFSETS:return Th([n+s[0],a+s[1],c+(s[2]||0)],t,o);case B.METER_OFFSETS:return Th(Ws(s,[n,a,c]),t,o);case B.CARTESIAN:default:return t.isGeospatial?[n+s[0],a+s[1],c+s[2]]:t.projectPosition([n,a,c])}}function ha(e,t){let{viewport:r,coordinateSystem:i,coordinateOrigin:s,modelMatrix:o,fromCoordinateSystem:n,fromCoordinateOrigin:a}=dE(t),{autoOffset:c=!0}=t,{geospatialOrigin:l=Sm,shaderCoordinateOrigin:f=Sm,offsetMode:h=!1}=c?nh(r,i,s):{},u=yh(e,{viewport:r,modelMatrix:o,coordinateSystem:n,coordinateOrigin:a,offsetMode:h});if(h){let d=r.projectPosition(l||f);ut.sub(u,u,d)}return u}var pE=[255,255,255],gE=1,mE=[1,0,0],_E=[0,0,1],TE=0,Pi=class{constructor(t={}){this.type="point";let{color:r=pE}=t,{intensity:i=gE}=t,{position:s=_E}=t;this.id=t.id||`point-${TE++}`,this.color=r,this.intensity=i,this.type="point",this.position=s,this.attenuation=yE(t),this.projectedLight={...this}}getProjectedLight({layer:t}){let{projectedLight:r}=this,i=t.context.viewport,{coordinateSystem:s,coordinateOrigin:o}=t.props,n=ha(this.position,{viewport:i,coordinateSystem:s,coordinateOrigin:o,fromCoordinateSystem:i.isGeospatial?B.LNGLAT:B.CARTESIAN,fromCoordinateOrigin:[0,0,0]});return r.color=this.color,r.intensity=this.intensity,r.position=n,r}};function yE(e){return e.attenuation?e.attenuation:mE}var $s=class extends Pi{getProjectedLight({layer:t}){let{projectedLight:r}=this,i=t.context.viewport,{coordinateSystem:s,coordinateOrigin:o,modelMatrix:n}=t.props,{cameraPosition:a}=ia({viewport:i,modelMatrix:n,coordinateSystem:s,coordinateOrigin:o});return r.color=this.color,r.intensity=this.intensity,r.position=a,r}};var Cr=Math.PI/180,bE=1e3*60*60*24,xE=2440588,AE=2451545,ua=Cr*23.4397,SE=357.5291,EE=.98560028,RE=280.147,wE=360.9856235;function Em(e,t,r){let i=Cr*-r,s=Cr*t,o=ME(e),n=BE(o),a=NE(o,i)-n.rightAscension;return{azimuth:IE(a,s,n.declination),altitude:OE(a,s,n.declination)}}function da(e,t,r){let{azimuth:i,altitude:s}=Em(e,t,r);return[Math.sin(i)*Math.cos(s),Math.cos(i)*Math.cos(s),-Math.sin(s)]}function PE(e){return(typeof e=="number"?e:e.getTime())/bE-.5+xE}function ME(e){return PE(e)-AE}function vE(e,t){let r=e;return Math.atan2(Math.sin(r)*Math.cos(ua)-Math.tan(t)*Math.sin(ua),Math.cos(r))}function CE(e,t){let r=e;return Math.asin(Math.sin(t)*Math.cos(ua)+Math.cos(t)*Math.sin(ua)*Math.sin(r))}function IE(e,t,r){let i=e,s=t,o=r;return Math.atan2(Math.sin(i),Math.cos(i)*Math.sin(s)-Math.tan(o)*Math.cos(s))}function OE(e,t,r){let i=e,s=t,o=r;return Math.asin(Math.sin(s)*Math.sin(o)+Math.cos(s)*Math.cos(o)*Math.cos(i))}function NE(e,t){return Cr*(RE+wE*e)-t}function DE(e){return Cr*(SE+EE*e)}function FE(e){let t=e,r=Cr*(1.9148*Math.sin(t)+.02*Math.sin(2*t)+3e-4*Math.sin(3*t)),i=Cr*102.9372;return t+r+i+Math.PI}function BE(e){let t=DE(e),r=FE(t);return{declination:CE(r,0),rightAscension:vE(r,0)}}var Ys=class extends Pe{constructor(t){super(t),this.timestamp=t.timestamp}getProjectedLight({layer:t}){let{viewport:r}=t.context;if(r.resolution&&r.resolution>0){let[s,o,n]=da(this.timestamp,0,0);this.direction=[s,-n,o]}else{let{latitude:s,longitude:o}=r;this.direction=da(this.timestamp,s,o)}return this}};var LE=`uniform screenUniforms {
1642
+ `}}};var cw=[qn],lw=["vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)","vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)","vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)","fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)"],fw=[];function pa(t){let e=qt.getDefaultShaderAssembler();for(let i of cw)e.addDefaultModule(i);e._hookFunctions.length=0;let r=t==="glsl"?lw:fw;for(let i of r)e.addShaderHook(i);return e}var hw=[255,255,255],uw=1,dw=0,wi=class{constructor(e={}){this.type="ambient";let{color:r=hw}=e,{intensity:i=uw}=e;this.id=e.id||`ambient-${dw++}`,this.color=r,this.intensity=i}};var pw=[255,255,255],gw=1,mw=[0,0,-1],_w=0,Nt=class{constructor(e={}){this.type="directional";let{color:r=pw}=e,{intensity:i=gw}=e,{direction:s=mw}=e,{_shadow:o=!1}=e;this.id=e.id||`directional-${_w++}`,this.color=r,this.intensity=i,this.type="directional",this.direction=new H(s).normalize().toArray(),this.shadow=o}getProjectedLight(e){return this}};var Fr=class{constructor(e,r={id:"pass"}){let{id:i}=r;this.id=i,this.device=e,this.props={...r}}setProps(e){Object.assign(this.props,e)}render(e){}cleanup(){}};var $e=class extends Fr{constructor(){super(...arguments),this._lastRenderIndex=-1}render(e){this._render(e)}_render(e){let r=this.device.canvasContext,i=e.target??r.getCurrentFramebuffer(),[s,o]=r.getDrawingBufferSize(),n=e.clearCanvas??!0,a=e.clearColor??(n?[0,0,0,0]:!1),c=n?1:!1,l=n?0:!1,f=e.colorMask??15,h={viewport:[0,0,s,o]};e.colorMask&&(h.colorMask=f),e.scissorRect&&(h.scissorRect=e.scissorRect);let u=this.device.beginRenderPass({framebuffer:i,parameters:h,clearColor:a,clearDepth:c,clearStencil:l});try{return this._drawLayers(u,e)}finally{u.end(),this.device.submit()}}_drawLayers(e,r){let{target:i,shaderModuleProps:s,viewports:o,views:n,onViewportActive:a,clearStack:c=!0}=r;r.pass=r.pass||"unknown",c&&(this._lastRenderIndex=-1);let l=[];for(let f of o){let h=n&&n[f.id];a?.(f);let u=this._getDrawLayerParams(f,r),d=f.subViewports||[f];for(let p of d){let g=this._drawLayersInViewport(e,{target:i,shaderModuleProps:s,viewport:p,view:h,pass:r.pass,layers:r.layers},u);l.push(g)}}return l}_getDrawLayerParams(e,{layers:r,pass:i,isPicking:s=!1,layerFilter:o,cullRect:n,effects:a,shaderModuleProps:c},l=!1){let f=[],h=qm(this._lastRenderIndex+1),u={layer:r[0],viewport:e,isPicking:s,renderPass:i,cullRect:n},d={};for(let p=0;p<r.length;p++){let g=r[p],m=this._shouldDrawLayer(g,u,o,d),_={shouldDrawLayer:m};m&&!l&&(_.shouldDrawLayer=!0,_.layerRenderIndex=h(g,m),_.shaderModuleProps=this._getShaderModuleProps(g,a,i,c),_.layerParameters={...g.context.deck?.props.parameters,...this.getLayerParameters(g,p,e)}),f[p]=_}return f}_drawLayersInViewport(e,{layers:r,shaderModuleProps:i,pass:s,target:o,viewport:n,view:a},c){let l=yw(this.device,{shaderModuleProps:i,target:o,viewport:n});if(a){let{clear:h,clearColor:u,clearDepth:d,clearStencil:p}=a.props;if(h){let g=[0,0,0,0],m=1,_=0;Array.isArray(u)?g=[...u.slice(0,3),u[3]||255].map(y=>y/255):u===!1&&(g=!1),d!==void 0&&(m=d),p!==void 0&&(_=p),this.device.beginRenderPass({framebuffer:o,parameters:{viewport:l,scissorRect:l},clearColor:g,clearDepth:m,clearStencil:_}).end()}}let f={totalCount:r.length,visibleCount:0,compositeCount:0,pickableCount:0};e.setParameters({viewport:l});for(let h=0;h<r.length;h++){let u=r[h],d=c[h],{shouldDrawLayer:p}=d;if(p&&u.props.pickable&&f.pickableCount++,u.isComposite&&f.compositeCount++,u.isDrawable&&d.shouldDrawLayer){let{layerRenderIndex:g,shaderModuleProps:m,layerParameters:_}=d;f.visibleCount++,this._lastRenderIndex=Math.max(this._lastRenderIndex,g),m.project&&(m.project.viewport=n),u.context.renderPass=e;try{u._drawLayer({renderPass:e,shaderModuleProps:m,uniforms:{layerIndex:g},parameters:_})}catch(T){u.raiseError(T,`drawing ${u} to ${s}`)}}}return f}shouldDrawLayer(e){return!0}getShaderModuleProps(e,r,i){return null}getLayerParameters(e,r,i){return e.props.parameters}_shouldDrawLayer(e,r,i,s){if(!(e.props.visible&&this.shouldDrawLayer(e)))return!1;r.layer=e;let n=e.parent;for(;n;){if(!n.props.visible||!n.filterSubLayer(r))return!1;r.layer=n,n=n.parent}if(i){let a=r.layer.id;if(a in s||(s[a]=i(r)),!s[a])return!1}return e.activateViewport(r.viewport),!0}_getShaderModuleProps(e,r,i,s){let o=this.device.canvasContext.cssToDeviceRatio(),n=e.internalState?.propsInTransition||e.props,a={layer:n,picking:{isActive:!1},project:{viewport:e.context.viewport,devicePixelRatio:o,modelMatrix:n.modelMatrix,coordinateSystem:n.coordinateSystem,coordinateOrigin:n.coordinateOrigin,autoWrapLongitude:e.wrapLongitude}};if(r)for(let c of r)Km(a,c.getShaderModuleProps?.(e,a));return Km(a,this.getShaderModuleProps(e,r,a),s)}};function qm(t=0,e={}){let r={},i=(s,o)=>{let n=s.props._offset,a=s.id,c=s.parent&&s.parent.id,l;if(c&&!(c in e)&&i(s.parent,!1),c in r){let f=r[c]=r[c]||qm(e[c],e);l=f(s,o),r[a]=f}else Number.isFinite(n)?(l=n+(e[c]||0),r[a]=null):l=t;return o&&l>=t&&(t=l+1),e[a]=l,l};return i}function yw(t,{shaderModuleProps:e,target:r,viewport:i}){let s=e?.project?.devicePixelRatio??t.canvasContext.cssToDeviceRatio(),[,o]=t.canvasContext.getDrawingBufferSize(),n=r?r.height:o,a=i;return[a.x*s,n-(a.y+a.height)*s,a.width*s,a.height*s]}function Km(t,...e){for(let r of e)if(r)for(let i in r)t[i]?Object.assign(t[i],r[i]):t[i]=r[i];return t}var qs=class extends $e{constructor(e,r){super(e,r);let i=e.createTexture({format:"rgba8unorm",width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),s=e.createTexture({format:"depth16unorm",width:1,height:1});this.fbo=e.createFramebuffer({id:"shadowmap",width:1,height:1,colorAttachments:[i],depthStencilAttachment:s})}delete(){this.fbo&&(this.fbo.destroy(),this.fbo=null)}getShadowMap(){return this.fbo.colorAttachments[0].texture}render(e){let r=this.fbo,i=this.device.canvasContext.cssToDeviceRatio(),s=e.viewports[0],o=s.width*i,n=s.height*i,a=[1,1,1,1];(o!==r.width||n!==r.height)&&r.resize({width:o,height:n}),super.render({...e,clearColor:a,target:r,pass:"shadow"})}getLayerParameters(e,r,i){return{...e.props.parameters,blend:!1,depthWriteEnabled:!0,depthCompare:"less-equal"}}shouldDrawLayer(e){return e.props.shadowEnabled!==!1}getShaderModuleProps(e,r,i){return{shadow:{project:i.project,drawToShadowMap:!0}}}};var Tw={color:[255,255,255],intensity:1},Qm=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],bw=[0,0,0,200/255],cr=class{constructor(e={}){this.id="lighting-effect",this.shadowColor=bw,this.shadow=!1,this.directionalLights=[],this.pointLights=[],this.shadowPasses=[],this.dummyShadowMap=null,this.setProps(e)}setup(e){this.context=e;let{device:r,deck:i}=e;this.shadow&&!this.dummyShadowMap&&(this._createShadowPasses(r),i._addDefaultShaderModule(Ei),this.dummyShadowMap=r.createTexture({width:1,height:1}))}setProps(e){this.ambientLight=void 0,this.directionalLights=[],this.pointLights=[];for(let r in e){let i=e[r];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i);break;default:}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(r=>r.shadow),this.context&&this.setup(this.context),this.props=e}preRender({layers:e,layerFilter:r,viewports:i,onViewportActive:s,views:o}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let n=0;n<this.shadowPasses.length;n++)this.shadowPasses[n].render({layers:e,layerFilter:r,viewports:i,onViewportActive:s,views:o,shaderModuleProps:{shadow:{shadowLightId:n,dummyShadowMap:this.dummyShadowMap,shadowMatrices:this.shadowMatrices}}})}}getShaderModuleProps(e,r){let i=this.shadow?{project:r.project,shadowMaps:this.shadowPasses.map(n=>n.getShadowMap()),dummyShadowMap:this.dummyShadowMap,shadowColor:this.shadowColor,shadowMatrices:this.shadowMatrices}:{},s={enabled:!0,lights:this._getLights(e)},o=e.props.material;return{shadow:i,lighting:s,phongMaterial:o,gouraudMaterial:o}}cleanup(e){for(let r of this.shadowPasses)r.delete();this.shadowPasses.length=0,this.dummyShadowMap&&(this.dummyShadowMap.destroy(),this.dummyShadowMap=null,e.deck._removeDefaultShaderModule(Ei))}_calculateMatrices(){let e=[];for(let r of this.directionalLights){let i=new z().lookAt({eye:new H(r.direction).negate()});e.push(i)}return e}_createShadowPasses(e){for(let r=0;r<this.directionalLights.length;r++){let i=new qs(e);this.shadowPasses[r]=i}}_applyDefaultLights(){let{ambientLight:e,pointLights:r,directionalLights:i}=this;!e&&r.length===0&&i.length===0&&(this.ambientLight=new wi(Tw),this.directionalLights.push(new Nt(Qm[0]),new Nt(Qm[1])))}_getLights(e){let r=[];this.ambientLight&&r.push(this.ambientLight);for(let i of this.pointLights)r.push(i.getProjectedLight({layer:e}));for(let i of this.directionalLights)r.push(i.getProjectedLight({layer:e}));return r}};var kh=class{constructor(e={}){this._pool=[],this.opts={overAlloc:2,poolSize:100},this.setOptions(e)}setOptions(e){Object.assign(this.opts,e)}allocate(e,r,{size:i=1,type:s,padding:o=0,copy:n=!1,initialize:a=!1,maxCount:c}){let l=s||e&&e.constructor||Float32Array,f=r*i+o;if(ArrayBuffer.isView(e)){if(f<=e.length)return e;if(f*e.BYTES_PER_ELEMENT<=e.buffer.byteLength)return new l(e.buffer,0,f)}let h=1/0;c&&(h=c*i+o);let u=this._allocate(l,f,a,h);return e&&n?u.set(e):a||u.fill(0,0,4),this._release(e),u}release(e){this._release(e)}_allocate(e,r,i,s){let o=Math.max(Math.ceil(r*this.opts.overAlloc),1);o>s&&(o=s);let n=this._pool,a=e.BYTES_PER_ELEMENT*o,c=n.findIndex(l=>l.byteLength>=a);if(c>=0){let l=new e(n.splice(c,1)[0],0,o);return i&&l.fill(0),l}return new e(o)}_release(e){if(!ArrayBuffer.isView(e))return;let r=this._pool,{buffer:i}=e,{byteLength:s}=i,o=r.findIndex(n=>n.byteLength>=s);o<0?r.push(i):(o>0||r.length<this.opts.poolSize)&&r.splice(o,0,i),r.length>this.opts.poolSize&&r.shift()}},Xe=new kh;function Pi(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function ht(t,e){let r=t%e;return r<0?e+r:r}function Jm(t){return[t[12],t[13],t[14]]}function e_(t){let e=t[10],r=t[14];return{near:r/(e-1),far:r/(e+1)}}function t_(t){return{left:Ri(t[3]+t[0],t[7]+t[4],t[11]+t[8],t[15]+t[12]),right:Ri(t[3]-t[0],t[7]-t[4],t[11]-t[8],t[15]-t[12]),bottom:Ri(t[3]+t[1],t[7]+t[5],t[11]+t[9],t[15]+t[13]),top:Ri(t[3]-t[1],t[7]-t[5],t[11]-t[9],t[15]-t[13]),near:Ri(t[3]+t[2],t[7]+t[6],t[11]+t[10],t[15]+t[14]),far:Ri(t[3]-t[2],t[7]-t[6],t[11]-t[10],t[15]-t[14])}}var Gm=new H;function Ri(t,e,r,i){Gm.set(t,e,r);let s=Gm.len();return{distance:i/s,normal:new H(-t/s,-e/s,-r/s)}}function Vh(t){return t-Math.fround(t)}var Qs;function ga(t,e){let{size:r=1,startIndex:i=0}=e,s=e.endIndex!==void 0?e.endIndex:t.length,o=(s-i)/r;Qs=Xe.allocate(Qs,o,{type:Float32Array,size:r*2});let n=i,a=0;for(;n<s;){for(let c=0;c<r;c++){let l=t[n++];Qs[a+c]=l,Qs[a+c+r]=Vh(l)}a+=r*2}return Qs.subarray(0,o*r*2)}function r_(t){let e=null,r=!1;for(let i of t)i&&(e?(r||(e=[[e[0][0],e[0][1]],[e[1][0],e[1][1]]],r=!0),e[0][0]=Math.min(e[0][0],i[0][0]),e[0][1]=Math.min(e[0][1],i[0][1]),e[1][0]=Math.max(e[1][0],i[1][0]),e[1][1]=Math.max(e[1][1],i[1][1])):e=i);return e}var xw=Math.PI/180,Aw=Pi(),i_=[0,0,0],Sw={unitsPerMeter:[1,1,1],metersPerUnit:[1,1,1]};function Ew({width:t,height:e,orthographic:r,fovyRadians:i,focalDistance:s,padding:o,near:n,far:a}){let c=t/e,l=r?new z().orthographic({fovy:i,aspect:c,focalDistance:s,near:n,far:a}):new z().perspective({fovy:i,aspect:c,near:n,far:a});if(o){let{left:f=0,right:h=0,top:u=0,bottom:d=0}=o,p=B((f+t-h)/2,0,t)-t/2,g=B((u+e-d)/2,0,e)-e/2;l[8]-=p*2/t,l[9]+=g*2/e}return l}var vi=class{constructor(e={}){this._frustumPlanes={},this.id=e.id||this.constructor.displayName||"viewport",this.x=e.x||0,this.y=e.y||0,this.width=e.width||1,this.height=e.height||1,this.zoom=e.zoom||0,this.padding=e.padding,this.distanceScales=e.distanceScales||Sw,this.focalDistance=e.focalDistance||1,this.position=e.position||i_,this.modelMatrix=e.modelMatrix||null;let{longitude:r,latitude:i}=e;this.isGeospatial=Number.isFinite(i)&&Number.isFinite(r),this._initProps(e),this._initMatrices(e),this.equals=this.equals.bind(this),this.project=this.project.bind(this),this.unproject=this.unproject.bind(this),this.projectPosition=this.projectPosition.bind(this),this.unprojectPosition=this.unprojectPosition.bind(this),this.projectFlat=this.projectFlat.bind(this),this.unprojectFlat=this.unprojectFlat.bind(this)}get subViewports(){return null}get metersPerPixel(){return this.distanceScales.metersPerUnit[2]/this.scale}get projectionMode(){return this.isGeospatial?this.zoom<12?oe.WEB_MERCATOR:oe.WEB_MERCATOR_AUTO_OFFSET:oe.IDENTITY}equals(e){return e instanceof vi?this===e?!0:e.width===this.width&&e.height===this.height&&e.scale===this.scale&&Re(e.projectionMatrix,this.projectionMatrix)&&Re(e.viewMatrix,this.viewMatrix):!1}project(e,{topLeft:r=!0}={}){let i=this.projectPosition(e),s=Si(i,this.pixelProjectionMatrix),[o,n]=s,a=r?n:this.height-n;return e.length===2?[o,a]:[o,a,s[2]]}unproject(e,{topLeft:r=!0,targetZ:i}={}){let[s,o,n]=e,a=r?o:this.height-o,c=i&&i*this.distanceScales.unitsPerMeter[2],l=Ue([s,a,n],this.pixelUnprojectionMatrix,c),[f,h,u]=this.unprojectPosition(l);return Number.isFinite(n)?[f,h,u]:Number.isFinite(i)?[f,h,i]:[f,h]}projectPosition(e){let[r,i]=this.projectFlat(e),s=(e[2]||0)*this.distanceScales.unitsPerMeter[2];return[r,i,s]}unprojectPosition(e){let[r,i]=this.unprojectFlat(e),s=(e[2]||0)*this.distanceScales.metersPerUnit[2];return[r,i,s]}projectFlat(e){if(this.isGeospatial){let r=Ae(e);return r[1]=B(r[1],-318,830),r}return e}unprojectFlat(e){return this.isGeospatial?_e(e):e}getBounds(e={}){let r={targetZ:e.z||0},i=this.unproject([0,0],r),s=this.unproject([this.width,0],r),o=this.unproject([0,this.height],r),n=this.unproject([this.width,this.height],r);return[Math.min(i[0],s[0],o[0],n[0]),Math.min(i[1],s[1],o[1],n[1]),Math.max(i[0],s[0],o[0],n[0]),Math.max(i[1],s[1],o[1],n[1])]}getDistanceScales(e){return e&&this.isGeospatial?Ai({longitude:e[0],latitude:e[1],highPrecision:!0}):this.distanceScales}containsPixel({x:e,y:r,width:i=1,height:s=1}){return e<this.x+this.width&&this.x<e+i&&r<this.y+this.height&&this.y<r+s}getFrustumPlanes(){return this._frustumPlanes.near?this._frustumPlanes:(Object.assign(this._frustumPlanes,t_(this.viewProjectionMatrix)),this._frustumPlanes)}panByPosition(e,r,i){return null}_initProps(e){let r=e.longitude,i=e.latitude;this.isGeospatial&&(Number.isFinite(e.zoom)||(this.zoom=Ys({latitude:i})+Math.log2(this.focalDistance)),this.distanceScales=e.distanceScales||Ai({latitude:i,longitude:r}));let s=Math.pow(2,this.zoom);this.scale=s;let{position:o,modelMatrix:n}=e,a=i_;if(o&&(a=n?new z(n).transformAsVector(o,[]):o),this.isGeospatial){let c=this.projectPosition([r,i,0]);this.center=new H(a).scale(this.distanceScales.unitsPerMeter).add(c)}else this.center=this.projectPosition(a)}_initMatrices(e){let{viewMatrix:r=Aw,projectionMatrix:i=null,orthographic:s=!1,fovyRadians:o,fovy:n=75,near:a=.1,far:c=1e3,padding:l=null,focalDistance:f=1}=e;this.viewMatrixUncentered=r,this.viewMatrix=new z().multiplyRight(r).translate(new H(this.center).negate()),this.projectionMatrix=i||Ew({width:this.width,height:this.height,orthographic:s,fovyRadians:o||n*xw,focalDistance:f,padding:l,near:a,far:c});let h=Pi();re.multiply(h,h,this.projectionMatrix),re.multiply(h,h,this.viewMatrix),this.viewProjectionMatrix=h,this.viewMatrixInverse=re.invert([],this.viewMatrix)||this.viewMatrix,this.cameraPosition=Jm(this.viewMatrixInverse);let u=Pi(),d=Pi();re.scale(u,u,[this.width/2,-this.height/2,1]),re.translate(u,u,[1,-1,0]),re.multiply(d,u,this.viewProjectionMatrix),this.pixelProjectionMatrix=d,this.pixelUnprojectionMatrix=re.invert(Pi(),this.pixelProjectionMatrix),this.pixelUnprojectionMatrix||L.warn("Pixel project matrix not invertible")()}};vi.displayName="Viewport";var Se=vi;var Br=class extends Se{constructor(e={}){let{latitude:r=0,longitude:i=0,zoom:s=0,pitch:o=0,bearing:n=0,nearZMultiplier:a=.1,farZMultiplier:c=1.01,nearZ:l,farZ:f,orthographic:h=!1,projectionMatrix:u,repeat:d=!1,worldOffset:p=0,position:g,padding:m,legacyMeterSizes:_=!1}=e,{width:T,height:y,altitude:x=1.5}=e,S=Math.pow(2,s);T=T||1,y=y||1;let A,w=null;if(u)x=u[5]/2,A=It(x);else{e.fovy?(A=e.fovy,x=Ot(A)):A=It(x);let R;if(m){let{top:M=0,bottom:I=0}=m;R=[0,B((M+y-I)/2,0,y)-y/2]}w=Fh({width:T,height:y,scale:S,center:g&&[0,0,g[2]*Zs(r)],offset:R,pitch:o,fovy:A,nearZMultiplier:a,farZMultiplier:c}),Number.isFinite(l)&&(w.near=l),Number.isFinite(f)&&(w.far=f)}let v=ha({height:y,pitch:o,bearing:n,scale:S,altitude:x});p&&(v=new z().translate([512*p,0,0]).multiplyLeft(v)),super({...e,width:T,height:y,viewMatrix:v,longitude:i,latitude:r,zoom:s,...w,fovy:A,focalDistance:x}),this.latitude=r,this.longitude=i,this.zoom=s,this.pitch=o,this.bearing=n,this.altitude=x,this.fovy=A,this.orthographic=h,this._subViewports=d?[]:null,this._pseudoMeters=_,Object.freeze(this)}get subViewports(){if(this._subViewports&&!this._subViewports.length){let e=this.getBounds(),r=Math.floor((e[0]+180)/360),i=Math.ceil((e[2]-180)/360);for(let s=r;s<=i;s++){let o=s?new Br({...this,worldOffset:s}):this;this._subViewports.push(o)}}return this._subViewports}projectPosition(e){if(this._pseudoMeters)return super.projectPosition(e);let[r,i]=this.projectFlat(e),s=(e[2]||0)*Zs(e[1]);return[r,i,s]}unprojectPosition(e){if(this._pseudoMeters)return super.unprojectPosition(e);let[r,i]=this.unprojectFlat(e),s=(e[2]||0)/Zs(i);return[r,i,s]}addMetersToLngLat(e,r){return Ks(e,r)}panByPosition(e,r,i){let s=Ue(r,this.pixelUnprojectionMatrix),o=this.projectFlat(e),n=ee.add([],o,ee.negate([],s)),a=ee.add([],this.center,n),[c,l]=this.unprojectFlat(a);return{longitude:c,latitude:l}}panByPosition3D(e,r){let i=e[2]||0,s=ee.sub([],e,this.unproject(r,{targetZ:i}));return{longitude:this.longitude+s[0],latitude:this.latitude+s[1]}}getBounds(e={}){let r=da(this,e.z||0);return[Math.min(r[0][0],r[1][0],r[2][0],r[3][0]),Math.min(r[0][1],r[1][1],r[2][1],r[3][1]),Math.max(r[0][0],r[1][0],r[2][0],r[3][0]),Math.max(r[0][1],r[1][1],r[2][1],r[3][1])]}fitBounds(e,r={}){let{width:i,height:s}=this,{longitude:o,latitude:n,zoom:a}=ua({width:i,height:s,bounds:e,...r});return new Br({width:i,height:s,longitude:o,latitude:n,zoom:a})}};Br.displayName="WebMercatorViewport";var lr=Br;var s_=[0,0,0];function zh(t,e,r=!1){let i=e.projectPosition(t);if(r&&e instanceof lr){let[s,o,n=0]=t,a=e.getDistanceScales([s,o]);i[2]=n*a.unitsPerMeter[2]}return i}function ww(t){let{viewport:e,modelMatrix:r,coordinateOrigin:i}=t,{coordinateSystem:s,fromCoordinateSystem:o,fromCoordinateOrigin:n}=t;return s===k.DEFAULT&&(s=e.isGeospatial?k.LNGLAT:k.CARTESIAN),o===void 0&&(o=s),n===void 0&&(n=i),{viewport:e,coordinateSystem:s,coordinateOrigin:i,modelMatrix:r,fromCoordinateSystem:o,fromCoordinateOrigin:n}}function Wh(t,{viewport:e,modelMatrix:r,coordinateSystem:i,coordinateOrigin:s,offsetMode:o}){let[n,a,c=0]=t;switch(r&&([n,a,c]=xe.transformMat4([],[n,a,c,1],r)),i){case k.LNGLAT:return zh([n,a,c],e,o);case k.LNGLAT_OFFSETS:return zh([n+s[0],a+s[1],c+(s[2]||0)],e,o);case k.METER_OFFSETS:return zh(Ks(s,[n,a,c]),e,o);case k.CARTESIAN:default:return e.isGeospatial?[n+s[0],a+s[1],c+s[2]]:e.projectPosition([n,a,c])}}function ma(t,e){let{viewport:r,coordinateSystem:i,coordinateOrigin:s,modelMatrix:o,fromCoordinateSystem:n,fromCoordinateOrigin:a}=ww(e),{autoOffset:c=!0}=e,{geospatialOrigin:l=s_,shaderCoordinateOrigin:f=s_,offsetMode:h=!1}=c?Ih(r,i,s):{},u=Wh(t,{viewport:r,modelMatrix:o,coordinateSystem:n,coordinateOrigin:a,offsetMode:h});if(h){let d=r.projectPosition(l||f);pe.sub(u,u,d)}return u}var Rw=[255,255,255],Pw=1,vw=[1,0,0],Mw=[0,0,1],Cw=0,Mi=class{constructor(e={}){this.type="point";let{color:r=Rw}=e,{intensity:i=Pw}=e,{position:s=Mw}=e;this.id=e.id||`point-${Cw++}`,this.color=r,this.intensity=i,this.type="point",this.position=s,this.attenuation=Iw(e),this.projectedLight={...this}}getProjectedLight({layer:e}){let{projectedLight:r}=this,i=e.context.viewport,{coordinateSystem:s,coordinateOrigin:o}=e.props,n=ma(this.position,{viewport:i,coordinateSystem:s,coordinateOrigin:o,fromCoordinateSystem:i.isGeospatial?k.LNGLAT:k.CARTESIAN,fromCoordinateOrigin:[0,0,0]});return r.color=this.color,r.intensity=this.intensity,r.position=n,r}};function Iw(t){return t.attenuation?t.attenuation:vw}var Gs=class extends Mi{getProjectedLight({layer:e}){let{projectedLight:r}=this,i=e.context.viewport,{coordinateSystem:s,coordinateOrigin:o,modelMatrix:n}=e.props,{cameraPosition:a}=ca({viewport:i,modelMatrix:n,coordinateSystem:s,coordinateOrigin:o});return r.color=this.color,r.intensity=this.intensity,r.position=a,r}};var Lr=Math.PI/180,Ow=1e3*60*60*24,Nw=2440588,Dw=2451545,_a=Lr*23.4397,Fw=357.5291,Bw=.98560028,Lw=280.147,Uw=360.9856235;function o_(t,e,r){let i=Lr*-r,s=Lr*e,o=Vw(t),n=Zw(o),a=$w(o,i)-n.rightAscension;return{azimuth:jw(a,s,n.declination),altitude:Hw(a,s,n.declination)}}function ya(t,e,r){let{azimuth:i,altitude:s}=o_(t,e,r);return[Math.sin(i)*Math.cos(s),Math.cos(i)*Math.cos(s),-Math.sin(s)]}function kw(t){return(typeof t=="number"?t:t.getTime())/Ow-.5+Nw}function Vw(t){return kw(t)-Dw}function zw(t,e){let r=t;return Math.atan2(Math.sin(r)*Math.cos(_a)-Math.tan(e)*Math.sin(_a),Math.cos(r))}function Ww(t,e){let r=t;return Math.asin(Math.sin(e)*Math.cos(_a)+Math.cos(e)*Math.sin(_a)*Math.sin(r))}function jw(t,e,r){let i=t,s=e,o=r;return Math.atan2(Math.sin(i),Math.cos(i)*Math.sin(s)-Math.tan(o)*Math.cos(s))}function Hw(t,e,r){let i=t,s=e,o=r;return Math.asin(Math.sin(s)*Math.sin(o)+Math.cos(s)*Math.cos(o)*Math.cos(i))}function $w(t,e){return Lr*(Lw+Uw*t)-e}function Xw(t){return Lr*(Fw+Bw*t)}function Yw(t){let e=t,r=Lr*(1.9148*Math.sin(e)+.02*Math.sin(2*e)+3e-4*Math.sin(3*e)),i=Lr*102.9372;return e+r+i+Math.PI}function Zw(t){let e=Xw(t),r=Yw(e);return{declination:Ww(r,0),rightAscension:zw(r,0)}}var Js=class extends Nt{constructor(e){super(e),this.timestamp=e.timestamp}getProjectedLight({layer:e}){let{viewport:r}=e.context;if(r.resolution&&r.resolution>0){let[s,o,n]=ya(this.timestamp,0,0);this.direction=[s,-n,o]}else{let{latitude:s,longitude:o}=r;this.direction=ya(this.timestamp,s,o)}return this}};var Kw=`uniform screenUniforms {
1567
1643
  vec2 texSize;
1568
1644
  } screen;
1569
- `,Rm={name:"screen",fs:LE,uniformTypes:{texSize:"vec2<f32>"}};var Ks=class extends Pr{constructor(t,r){super(t,r);let{module:i,fs:s,id:o}=r,n={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 ps(t,{id:o,fs:s,modules:[i,Rm],parameters:n})}render(t){this._renderPass(this.device,t)}delete(){this.model.destroy(),this.model=null}_renderPass(t,r){let{clearCanvas:i,inputBuffer:s,outputBuffer:o}=r,n=[s.width,s.height],a={texSrc:s.colorAttachments[0],texSize:n};this.model.shaderInputs.setProps({screen:a,...r.moduleProps});let c=this.device.beginRenderPass({framebuffer:o,parameters:{viewport:[0,0,...n]},clearColor:i?[0,0,0,0]:!1,clearDepth:1,clearStencil:!1});this.model.draw(c),c.end()}};var qs=class{constructor(t,r){this.id=`${t.name}-pass`,this.props=r,dn(t),this.module=t}setup({device:t}){this.passes=UE(t,this.module,this.id)}setProps(t){this.props=t}preRender(){}postRender(t){let r=this.passes,{target:i}=t,s=t.inputBuffer,o=t.swapBuffer;for(let n=0;n<r.length;n++){let a=n===r.length-1,c=i!==void 0&&a;c&&(o=i);let l=!c||Boolean(t.clearCanvas),f={},h=this.module.passes[n].uniforms;f[this.module.name]={...this.props,...h},r[n].render({clearCanvas:l,inputBuffer:s,outputBuffer:o,moduleProps:f});let u=o;o=s,s=u}return s}cleanup(){if(this.passes){for(let t of this.passes)t.delete();this.passes=void 0}}};function UE(e,t,r){return t.passes.map((i,s)=>{let o=zE(t,i),n=`${r}-${s}`;return new Ks(e,{id:n,module:t,fs:o})})}var wm=`#version 300 es
1645
+ `,n_={name:"screen",fs:Kw,uniformTypes:{texSize:"vec2<f32>"}};var eo=class extends Fr{constructor(e,r){super(e,r);let{module:i,fs:s,id:o}=r,n={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 Ts(e,{id:o,fs:s,modules:[i,n_],parameters:n})}render(e){this._renderPass(this.device,e)}delete(){this.model.destroy(),this.model=null}_renderPass(e,r){let{clearCanvas:i,inputBuffer:s,outputBuffer:o}=r,n=[s.width,s.height],a={texSrc:s.colorAttachments[0],texSize:n};this.model.shaderInputs.setProps({screen:a,...r.moduleProps});let c=this.device.beginRenderPass({framebuffer:o,parameters:{viewport:[0,0,...n]},clearColor:i?[0,0,0,0]:!1,clearDepth:1,clearStencil:!1});this.model.draw(c),c.end()}};var to=class{constructor(e,r){this.id=`${e.name}-pass`,this.props=r,_n(e),this.module=e}setup({device:e}){this.passes=qw(e,this.module,this.id)}setProps(e){this.props=e}preRender(){}postRender(e){let r=this.passes,{target:i}=e,s=e.inputBuffer,o=e.swapBuffer;for(let n=0;n<r.length;n++){let a=n===r.length-1,c=i!==void 0&&a;c&&(o=i);let l=!c||Boolean(e.clearCanvas),f={},h=this.module.passes[n].uniforms;f[this.module.name]={...this.props,...h},r[n].render({clearCanvas:l,inputBuffer:s,outputBuffer:o,moduleProps:f});let u=o;o=s,s=u}return s}cleanup(){if(this.passes){for(let e of this.passes)e.delete();this.passes=void 0}}};function qw(t,e,r){return e.passes.map((i,s)=>{let o=Jw(e,i),n=`${r}-${s}`;return new eo(t,{id:n,module:e,fs:o})})}var a_=`#version 300 es
1570
1646
  uniform sampler2D texSrc;
1571
1647
 
1572
1648
  in vec2 position;
@@ -1574,19 +1650,19 @@ in vec2 coordinate;
1574
1650
  in vec2 uv;
1575
1651
 
1576
1652
  out vec4 fragColor;
1577
- `,kE=e=>`${wm}
1653
+ `,Qw=t=>`${a_}
1578
1654
  void main() {
1579
1655
  fragColor = texture(texSrc, coordinate);
1580
- fragColor = ${e}(fragColor, screen.texSize, coordinate);
1656
+ fragColor = ${t}(fragColor, screen.texSize, coordinate);
1581
1657
  }
1582
- `,VE=e=>`${wm}
1658
+ `,Gw=t=>`${a_}
1583
1659
  void main() {
1584
- fragColor = ${e}(texSrc, screen.texSize, coordinate);
1660
+ fragColor = ${t}(texSrc, screen.texSize, coordinate);
1585
1661
  }
1586
- `;function zE(e,t){if(t.filter){let r=typeof t.filter=="string"?t.filter:`${e.name}_filterColor_ext`;return kE(r)}if(t.sampler){let r=typeof t.sampler=="string"?t.sampler:`${e.name}_sampleColor`;return VE(r)}return""}var jE={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"},Me=class extends Wt{constructor(){super(...arguments),this._colorEncoderState=null}render(t){return"pickingFBO"in t?this._drawPickingBuffer(t):super.render(t)}_drawPickingBuffer({layers:t,layerFilter:r,views:i,viewports:s,onViewportActive:o,pickingFBO:n,deviceRect:{x:a,y:c,width:l,height:f},cullRect:h,effects:u,pass:d="picking",pickZ:p,shaderModuleProps:g,clearColor:m}){this.pickZ=p;let _=this._resetColorEncoder(p),y=[a,c,l,f],T=super.render({target:n,layers:t,layerFilter:r,views:i,viewports:s,onViewportActive:o,cullRect:h,effects:u?.filter(S=>S.useInPicking),pass:d,isPicking:!0,shaderModuleProps:g,clearColor:m??[0,0,0,0],colorMask:15,scissorRect:y});return this._colorEncoderState=null,{decodePickingColor:_&&HE.bind(null,_),stats:T}}shouldDrawLayer(t){let{pickable:r,operation:i}=t.props;return r&&i.includes("draw")||i.includes("terrain")||i.includes("mask")}getShaderModuleProps(t,r,i){return{picking:{isActive:1,isAttribute:this.pickZ},lighting:{enabled:!1}}}getLayerParameters(t,r,i){let s={...t.props.parameters},{pickable:o,operation:n}=t.props;return this._colorEncoderState?o&&n.includes("draw")?(Object.assign(s,jE),s.blend=!0,s.blendColor=WE(this._colorEncoderState,t,i),n.includes("terrain")&&t.state?._hasPickingCover&&(s.blendAlphaSrcFactor="one")):n.includes("terrain")&&(s.blend=!1):s.blend=!1,s}_resetColorEncoder(t){return this._colorEncoderState=t?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function WE(e,t,r){let{byLayer:i,byAlpha:s}=e,o,n=i.get(t);return n?(n.viewports.push(r),o=n.a):(o=i.size+1,o<=255?(n={a:o,layer:t,viewports:[r]},i.set(t,n),s[o]=n):(F.warn("Too many pickable layers, only picking the first 255")(),o=0)),[0,0,0,o/255]}function HE(e,t){let r=e.byAlpha[t[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(t)}}var er={NO_STATE:"Awaiting state",MATCHED:"Matched. State transferred from previous layer",INITIALIZED:"Initialized",AWAITING_GC:"Discarded. Awaiting garbage collection",AWAITING_FINALIZATION:"No longer matched. Awaiting garbage collection",FINALIZED:"Finalized! Awaiting garbage collection"},Mi=Symbol.for("component"),Ft=Symbol.for("propTypes"),pa=Symbol.for("deprecatedProps"),ve=Symbol.for("asyncPropDefaults"),ae=Symbol.for("asyncPropOriginal"),Xt=Symbol.for("asyncPropResolved");function rr(e,t=()=>!0){return Array.isArray(e)?Pm(e,t,[]):t(e)?[e]:[]}function Pm(e,t,r){let i=-1;for(;++i<e.length;){let s=e[i];Array.isArray(s)?Pm(s,t,r):t(s)&&r.push(s)}return r}function ga({target:e,source:t,start:r=0,count:i=1}){let s=t.length,o=i*s,n=0;for(let a=r;n<s;n++)e[a++]=t[n];for(;n<o;)n<o-n?(e.copyWithin(r+n,r,r+n),n*=2):(e.copyWithin(r+n,r,r+o-n),n=o);return e}function Zs(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var Ir=class{constructor(t,r){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=Zs(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(Zs()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var ir=class{constructor(t){this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t,r="count"){return this._getOrCreate({name:t,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let r of Object.values(this.stats))t(r)}getTable(){let t={};return this.forEach(r=>{t[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),t}_initializeStats(t=[]){t.forEach(r=>this._getOrCreate(r))}_getOrCreate(t){let{name:r,type:i}=t,s=this.stats[r];return s||(t instanceof Ir?s=t:s=new Ir(r,i),this.stats[r]=s),s}};var Js=class{constructor(t,r,i){this._loadCount=0,this._subscribers=new Set,this.id=t,this.context=i,this.setData(r)}subscribe(t){this._subscribers.add(t)}unsubscribe(t){this._subscribers.delete(t)}inUse(){return this._subscribers.size>0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(t,r){if(t===this._data&&!r)return;this._data=t;let i=++this._loadCount,s=t;typeof t=="string"&&(s=Ke(t)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(o=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=o)}).catch(o=>{this._loadCount===i&&(this.isLoaded=!0,this._error=o||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=t);for(let o of this._subscribers)o.onChange(this.getData())}};var Qs=class{constructor(t){this.protocol=t.protocol||"resource://",this._context={device:t.device,gl:t.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(t){return t.startsWith(this.protocol)?!0:t in this._resources}add({resourceId:t,data:r,forceUpdate:i=!1,persistent:s=!0}){let o=this._resources[t];o?o.setData(r,i):(o=new Js(t,r,this._context),this._resources[t]=o),o.persistent=s}remove(t){let r=this._resources[t];r&&(r.delete(),delete this._resources[t])}unsubscribe({consumerId:t}){let r=this._consumers[t];if(r){for(let i in r){let s=r[i],o=this._resources[s.resourceId];o&&o.unsubscribe(s)}delete this._consumers[t],this.prune()}}subscribe({resourceId:t,onChange:r,consumerId:i,requestId:s="default"}){let{_resources:o,protocol:n}=this;t.startsWith(n)&&(t=t.replace(n,""),o[t]||this.add({resourceId:t,data:null,persistent:!1}));let a=o[t];if(this._track(i,s,a,r),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let t in this._resources)this._resources[t].delete()}_track(t,r,i,s){let o=this._consumers,n=o[t]=o[t]||{},a=n[r],c=a&&a.resourceId&&this._resources[a.resourceId];c&&(c.unsubscribe(a),this.prune()),i&&(a?(a.onChange=s,a.resourceId=i.id):a={onChange:s,resourceId:i.id},n[r]=a,i.subscribe(a))}_prune(){this._pruneRequest=null;for(let t of Object.keys(this._resources)){let r=this._resources[t];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[t])}}};var XE="layerManager.setLayers",$E="layerManager.activateViewport",Or=class{constructor(t,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{J($E,this,a),a&&(this.context.viewport=a)};let{deck:i,stats:s,viewport:o,timeline:n}=r||{};this.layers=[],this.resourceManager=new Qs({device:t,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:t,gl:t?.gl,deck:i,shaderAssembler:la(t?.info?.shadingLanguage||"glsl"),defaultShaderModules:[qf],renderPass:void 0,stats:s||new ir({id:"deck.gl"}),viewport:o||new bt({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:n||new pr,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let t of this.layers)this._finalizeLayer(t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);for(let i of this.layers){let s=i.getNeedsRedraw(t);r=r||s}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(t){this._needsRedraw=this._needsRedraw||t}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t}getLayers({layerIds:t}={}){return t?this.layers.filter(r=>t.find(i=>r.id.indexOf(i)===0)):this.layers}setProps(t){"debug"in t&&(this._debug=t.debug),"userData"in t&&(this.context.userData=t.userData),"layers"in t&&(this._nextLayers=t.layers),"onError"in t&&(this.context.onError=t.onError)}setLayers(t,r){J(XE,this,r,t),this._lastRenderedLayers=t;let i=rr(t,Boolean);for(let s of i)s.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){let t=this.needsUpdate();t&&(this.setNeedsRedraw(`updating layers: ${t}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,t)),this._nextLayers=null}addDefaultShaderModule(t){let{defaultShaderModules:r}=this.context;r.find(i=>i.name===t.name)||(r.push(t),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(t){let{defaultShaderModules:r}=this.context,i=r.findIndex(s=>s.name===t.name);i>=0&&(r.splice(i,1),this._defaultShaderModulesChanged=!0)}_handleError(t,r,i){i.raiseError(r,`${t} of ${i}`)}_updateLayers(t,r){let i={};for(let n of t)i[n.id]?F.warn(`Multiple old layers with same id ${n.id}`)():i[n.id]=n;if(this._defaultShaderModulesChanged){for(let n of t)n.setNeedsUpdate(),n.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let s=[];this._updateSublayersRecursively(r,i,s),this._finalizeOldLayers(i);let o=!1;for(let n of s)if(n.hasUniformTransition()){o=`Uniform transition in ${n}`;break}this._needsUpdate=o,this.layers=s}_updateSublayersRecursively(t,r,i){for(let s of t){s.context=this.context;let o=r[s.id];o===null&&F.warn(`Multiple new layers with same id ${s.id}`)(),r[s.id]=null;let n=null;try{this._debug&&o!==s&&s.validateProps(),o?(this._transferLayerState(o,s),this._updateLayer(s)):this._initializeLayer(s),i.push(s),n=s.isComposite?s.getSubLayers():null}catch(a){this._handleError("matching",a,s)}n&&this._updateSublayersRecursively(n,r,i)}}_finalizeOldLayers(t){for(let r in t){let i=t[r];i&&this._finalizeLayer(i)}}_initializeLayer(t){try{t._initialize(),t.lifecycle=er.INITIALIZED}catch(r){this._handleError("initialization",r,t)}}_transferLayerState(t,r){r._transferState(t),r.lifecycle=er.MATCHED,r!==t&&(t.lifecycle=er.AWAITING_GC)}_updateLayer(t){try{t._update()}catch(r){this._handleError("update",r,t)}}_finalizeLayer(t){this._needsRedraw=this._needsRedraw||`finalized ${t}`,t.lifecycle=er.AWAITING_FINALIZATION;try{t._finalize(),t.lifecycle=er.FINALIZED}catch(r){this._handleError("finalization",r,t)}}};function q(e,t,r){if(e===t)return!0;if(!r||!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!q(e[i],t[i],r-1))return!1;return!0}if(Array.isArray(t))return!1;if(typeof e=="object"&&typeof t=="object"){let i=Object.keys(e),s=Object.keys(t);if(i.length!==s.length)return!1;for(let o of i)if(!t.hasOwnProperty(o)||!q(e[o],t[o],r-1))return!1;return!0}return!1}var Gs=class{constructor(t){this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=t.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=t.eventManager,this._eventCallbacks={onViewStateChange:t.onViewStateChange,onInteractionStateChange:t.onInteractionStateChange},this._pickPosition=t.pickPosition,Object.seal(this),this.setProps(t)}finalize(){for(let t in this.controllers){let r=this.controllers[t];r&&r.finalize()}this.controllers={}}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t,this._needsRedraw=this._needsRedraw||t}updateViewStates(){for(let t in this.controllers){let r=this.controllers[t];r&&r.updateTransition()}}getViewports(t){return t?this._viewports.filter(r=>r.containsPixel(t)):this._viewports}getViews(){let t={};return this.views.forEach(r=>{t[r.id]=r}),t}getView(t){return this.views.find(r=>r.id===t)}getViewState(t){let r=typeof t=="string"?this.getView(t):t,i=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(i):i}getViewport(t){return this._viewportMap[t]}unproject(t,r){let i=this.getViewports(),s={x:t[0],y:t[1]};for(let o=i.length-1;o>=0;--o){let n=i[o];if(n.containsPixel(s)){let a=t.slice();return a[0]-=n.x,a[1]-=n.y,n.unproject(a,r)}}return null}setProps(t){t.views&&this._setViews(t.views),t.viewState&&this._setViewState(t.viewState),("width"in t||"height"in t)&&this._setSize(t.width,t.height),"pickPosition"in t&&(this._pickPosition=t.pickPosition),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(t,r){(t!==this.width||r!==this.height)&&(this.width=t,this.height=r,this.setNeedsUpdate("Size changed"))}_setViews(t){t=rr(t,Boolean),this._diffViews(t,this.views)&&this.setNeedsUpdate("views changed"),this.views=t}_setViewState(t){t?(!q(t,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=t):F.warn("missing `viewState` or `initialViewState`")()}_createController(t,r){let i=r.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:o=>this.getView(t.id)?.makeViewport({viewState:o,width:this.width,height:this.height}),pickPosition:this._pickPosition})}_updateController(t,r,i,s){let o=t.controller;if(o&&i){let n={...r,...o,id:t.id,x:i.x,y:i.y,width:i.width,height:i.height};return(!s||s.constructor!==o.type)&&(s=this._createController(t,n)),s&&s.setProps(n),s}return null}_rebuildViewports(){let{views:t}=this,r=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let s=t.length;s--;){let o=t[s],n=this.getViewState(o),a=o.makeViewport({viewState:n,width:this.width,height:this.height}),c=r[o.id],l=Boolean(o.controller);l&&!c&&(i=!0),(i||!l)&&c&&(c.finalize(),c=null),this.controllers[o.id]=this._updateController(o,n,a,c),a&&this._viewports.unshift(a)}for(let s in r){let o=r[s];o&&!this.controllers[s]&&o.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(t=>{t.id&&(this._viewportMap[t.id]=this._viewportMap[t.id]||t)})}_diffViews(t,r){return t.length!==r.length?!0:t.some((i,s)=>!t[s].equals(r[s]))}};var YE=/^(?:\d+\.?\d*|\.\d+)$/;function Ce(e){switch(typeof e){case"number":if(!Number.isFinite(e))throw new Error(`Could not parse position string ${e}`);return{type:"literal",value:e};case"string":try{let t=KE(e);return new xh(t).parseExpression()}catch(t){let r=t instanceof Error?t.message:String(t);throw new Error(`Could not parse position string ${e}: ${r}`)}default:throw new Error(`Could not parse position string ${e}`)}}function bh(e,t){switch(e.type){case"literal":return e.value;case"percentage":return Math.round(e.value*t);case"binary":let r=bh(e.left,t),i=bh(e.right,t);return e.operator==="+"?r+i:r-i;default:throw new Error("Unknown layout expression type")}}function Ie(e,t){return bh(e,t)}function KE(e){let t=[],r=0;for(;r<e.length;){let i=e[r];if(/\s/.test(i)){r++;continue}if(i==="+"||i==="-"||i==="("||i===")"||i==="%"){t.push({type:"symbol",value:i}),r++;continue}if(Mm(i)||i==="."){let s=r,o=i===".";for(r++;r<e.length;){let a=e[r];if(Mm(a)){r++;continue}if(a==="."&&!o){o=!0,r++;continue}break}let n=e.slice(s,r);if(!YE.test(n))throw new Error("Invalid number token");t.push({type:"number",value:parseFloat(n)});continue}if(vm(i)){let s=r;for(;r<e.length&&vm(e[r]);)r++;let o=e.slice(s,r).toLowerCase();t.push({type:"word",value:o});continue}throw new Error("Invalid token in position string")}return t}var xh=class{constructor(t){this.index=0,this.tokens=t}parseExpression(){let t=this.parseBinaryExpression();if(this.index<this.tokens.length)throw new Error("Unexpected token at end of expression");return t}parseBinaryExpression(){let t=this.parseFactor(),r=this.peek();for(;qE(r);){this.index++;let i=this.parseFactor();t={type:"binary",operator:r.value,left:t,right:i},r=this.peek()}return t}parseFactor(){let t=this.peek();if(!t)throw new Error("Unexpected end of expression");if(t.type==="symbol"&&t.value==="+")return this.index++,this.parseFactor();if(t.type==="symbol"&&t.value==="-"){this.index++;let r=this.parseFactor();return{type:"binary",operator:"-",left:{type:"literal",value:0},right:r}}if(t.type==="symbol"&&t.value==="("){this.index++;let r=this.parseBinaryExpression();if(!this.consumeSymbol(")"))throw new Error("Missing closing parenthesis");return r}if(t.type==="word"&&t.value==="calc"){if(this.index++,!this.consumeSymbol("("))throw new Error("Missing opening parenthesis after calc");let r=this.parseBinaryExpression();if(!this.consumeSymbol(")"))throw new Error("Missing closing parenthesis");return r}if(t.type==="number"){this.index++;let r=t.value,i=this.peek();return i&&i.type==="symbol"&&i.value==="%"?(this.index++,{type:"percentage",value:r/100}):i&&i.type==="word"&&i.value==="px"?(this.index++,{type:"literal",value:r}):{type:"literal",value:r}}throw new Error("Unexpected token in expression")}consumeSymbol(t){let r=this.peek();return r&&r.type==="symbol"&&r.value===t?(this.index++,!0):!1}peek(){return this.tokens[this.index]||null}};function Mm(e){return e>="0"&&e<="9"}function vm(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"}function qE(e){return Boolean(e&&e.type==="symbol"&&(e.value==="+"||e.value==="-"))}var pt=class{constructor(t){let{id:r,x:i=0,y:s=0,width:o="100%",height:n="100%",padding:a=null}=t;this.id=r||this.constructor.displayName||"view",this.props={...t,id:this.id},this._x=Ce(i),this._y=Ce(s),this._width=Ce(o),this._height=Ce(n),this._padding=a&&{left:Ce(a.left||0),right:Ce(a.right||0),top:Ce(a.top||0),bottom:Ce(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(t){return this===t?!0:this.constructor===t.constructor&&q(this.props,t.props,2)}clone(t){let r=this.constructor;return new r({...this.props,...t})}makeViewport({width:t,height:r,viewState:i}){i=this.filterViewState(i);let s=this.getDimensions({width:t,height:r});if(!s.height||!s.width)return null;let o=this.getViewportType(i);return new o({...i,...this.props,...s})}getViewStateId(){let{viewState:t}=this.props;return typeof t=="string"?t:t?.id||this.id}filterViewState(t){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;let r={...t};for(let i in this.props.viewState)i!=="id"&&(r[i]=this.props.viewState[i]);return r}return t}getDimensions({width:t,height:r}){let i={x:Ie(this._x,t),y:Ie(this._y,r),width:Ie(this._width,t),height:Ie(this._height,r)};return this._padding&&(i.padding={left:Ie(this._padding.left,t),top:Ie(this._padding.top,r),right:Ie(this._padding.right,t),bottom:Ie(this._padding.bottom,r)}),i}get controller(){let t=this.props.controller;return t?t===!0?{type:this.ControllerType}:typeof t=="function"?{type:t}:{type:this.ControllerType,...t}:null}};var $t=class{constructor(t){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=t}get inProgress(){return this._inProgress}start(t){this.cancel(),this.settings=t,this._inProgress=!0,this.settings.onStart?.(this)}end(){this._inProgress&&(this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,this.settings.onEnd?.(this))}cancel(){this._inProgress&&(this.settings.onInterrupt?.(this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1)}update(){if(!this._inProgress)return!1;if(this._handle===null){let{_timeline:t,settings:r}=this;this._handle=t.addChannel({delay:t.getTime(),duration:r.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),this.settings.onUpdate?.(this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};var Cm=()=>{},to={BREAK:1,SNAP_TO_END:2,IGNORE:3},ZE=e=>e,JE=to.BREAK,eo=class{constructor(t){this._onTransitionUpdate=r=>{let{time:i,settings:{interpolator:s,startProps:o,endProps:n,duration:a,easing:c}}=r,l=c(i/a),f=s.interpolateProps(o,n,l);this.propsInTransition=this.getControllerState({...this.props,...f}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=t.getControllerState,this.propsInTransition=null,this.transition=new $t(t.timeline),this.onViewStateChange=t.onViewStateChange||Cm,this.onStateChange=t.onStateChange||Cm}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(t){let r=!1,i=this.props;if(this.props=t,!i||this._shouldIgnoreViewportChange(i,t))return!1;if(this._isTransitionEnabled(t)){let s=i;if(this.transition.inProgress){let{interruption:o,endProps:n}=this.transition.settings;s={...i,...o===to.SNAP_TO_END?n:this.propsInTransition||i}}this._triggerTransition(s,t),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(t){let{transitionDuration:r,transitionInterpolator:i}=t;return(r>0||r==="auto")&&Boolean(i)}_isUpdateDueToCurrentTransition(t){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(t,this.propsInTransition):!1}_shouldIgnoreViewportChange(t,r){return this.transition.inProgress?this.transition.settings.interruption===to.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(t,r):!0}_triggerTransition(t,r){let i=this.getControllerState(t),s=this.getControllerState(r).shortestPathFrom(i),o=r.transitionInterpolator,n=o.getDuration?o.getDuration(t,r):r.transitionDuration;if(n===0)return;let a=o.initializeProps(t,s);this.propsInTransition={};let c={duration:n,easing:r.transitionEasing||ZE,interpolator:o,interruption:r.transitionInterruption||JE,startProps:a.start,endProps:a.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(c),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(t){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),t?.(r)}}};function Y(e,t){if(!e)throw new Error(t||"deck.gl: assertion failed.")}var Oe=class{constructor(t){let{compare:r,extract:i,required:s}=t;this._propsToCompare=r,this._propsToExtract=i||r,this._requiredProps=s}arePropsEqual(t,r){for(let i of this._propsToCompare)if(!(i in t)||!(i in r)||!xt(t[i],r[i]))return!1;return!0}initializeProps(t,r){let i={},s={};for(let o of this._propsToExtract)(o in t||o in r)&&(i[o]=t[o],s[o]=r[o]);return this._checkRequiredProps(i),this._checkRequiredProps(s),{start:i,end:s}}getDuration(t,r){return r.transitionDuration}_checkRequiredProps(t){this._requiredProps&&this._requiredProps.forEach(r=>{let i=t[r];Y(Number.isFinite(i)||Array.isArray(i),`${r} is required for transition`)})}};var ma=Math.PI/180,Im=180/Math.PI,_a=6370972,vi=256;function QE(){let e=vi/_a,t=Math.PI/180*vi;return{unitsPerMeter:[e,e,e],unitsPerMeter2:[0,0,0],metersPerUnit:[1/e,1/e,1/e],unitsPerDegree:[t,t,e],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/t,1/t,1/e]}}var Ta=class extends bt{constructor(t={}){let{longitude:r=0,zoom:i=0,nearZMultiplier:s=.5,farZMultiplier:o=1,resolution:n=10}=t,{latitude:a=0,height:c,altitude:l=1.5,fovy:f}=t;a=Math.max(Math.min(a,Tt),-Tt),c=c||1,f?l=we(f):f=Re(l);let h=Math.pow(2,i-Nr(a)),u=t.nearZ??s,d=t.farZ??(l+vi*2*h/c)*o,p=new j().lookAt({eye:[0,-l,0],up:[0,0,1]});p.rotateX(a*ma),p.rotateZ(-r*ma),p.scale(h/c),super({...t,height:c,viewMatrix:p,longitude:r,latitude:a,zoom:i,distanceScales:QE(),fovy:f,focalDistance:l,near:u,far:d}),this.scale=h,this.latitude=a,this.longitude=r,this.fovy=f,this.resolution=n}get projectionMode(){return ot.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(t={}){let r={targetZ:t.z||0},i=this.unproject([0,this.height/2],r),s=this.unproject([this.width/2,0],r),o=this.unproject([this.width,this.height/2],r),n=this.unproject([this.width/2,this.height],r);return o[0]<this.longitude&&(o[0]+=360),i[0]>this.longitude&&(i[0]-=360),[Math.min(i[0],o[0],s[0],n[0]),Math.min(i[1],o[1],s[1],n[1]),Math.max(i[0],o[0],s[0],n[0]),Math.max(i[1],o[1],s[1],n[1])]}unproject(t,{topLeft:r=!0,targetZ:i}={}){let[s,o,n]=t,a=r?o:this.height-o,{pixelUnprojectionMatrix:c}=this,l;if(Number.isFinite(n))l=Ah(c,[s,a,n,1]);else{let d=Ah(c,[s,a,-1,1]),p=Ah(c,[s,a,1,1]),g=((i||0)/_a+1)*vi,m=ut.sqrLen(ut.sub([],d,p)),_=ut.sqrLen(d),y=ut.sqrLen(p),x=4*((4*_*y-(m-_-y)**2)/16)/m,S=Math.sqrt(_-x),E=Math.sqrt(Math.max(0,g*g-x)),v=(S-E)/Math.sqrt(m);l=ut.lerp([],d,p,v)}let[f,h,u]=this.unprojectPosition(l);return Number.isFinite(n)?[f,h,u]:Number.isFinite(i)?[f,h,i]:[f,h]}projectPosition(t){let[r,i,s=0]=t,o=r*ma,n=i*ma,a=Math.cos(n),c=(s/_a+1)*vi;return[Math.sin(o)*a*c,-Math.cos(o)*a*c,Math.sin(n)*c]}unprojectPosition(t){let[r,i,s]=t,o=ut.len(t),n=Math.asin(s/o),c=Math.atan2(r,-i)*Im,l=n*Im,f=(o/vi-1)*_a;return[c,l,f]}projectFlat(t){return t}unprojectFlat(t){return t}panByPosition([t,r,i],s,o){let a=.25/Math.pow(2,this.zoom-Nr(this.latitude)),c=t+a*(o[0]-s[0]),l=r-a*(o[1]-s[1]);l=Math.max(Math.min(l,Tt),-Tt);let f={longitude:c,latitude:l,zoom:i-Nr(r)};return f.zoom+=Nr(f.latitude),f}};Ta.displayName="GlobeViewport";var Ci=Ta;function Nr(e){let t=Math.PI*Math.cos(e*Math.PI/180);return Math.log2(t)}function Ah(e,t){let r=_t.transformMat4([],t,e);return _t.scale(r,r,1/r[3]),r}var GE=["longitude","latitude","zoom","bearing","pitch"],t3=["longitude","latitude","zoom"],at=class extends Oe{constructor(t={}){let r=Array.isArray(t)?t:t.transitionProps,i=Array.isArray(t)?{}:t;i.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:GE,required:t3},super(i.transitionProps),this.opts=i}initializeProps(t,r){let i=super.initializeProps(t,r),{makeViewport:s,around:o}=this.opts;if(s&&o)if(s(t)instanceof Ci)F.warn("around not supported in GlobeView")();else{let a=s(t),c=s(r),l=a.unproject(o);i.start.around=o,Object.assign(i.end,{around:c.project(l),aroundPosition:l,width:r.width,height:r.height})}return i}interpolateProps(t,r,i){let s={};for(let o of this._propsToExtract)s[o]=Ae(t[o]||0,r[o]||0,i);if(r.aroundPosition&&this.opts.makeViewport){let o=this.opts.makeViewport({...r,...s});Object.assign(s,o.panByPosition(r.aroundPosition,Ae(t.around,r.around,i)))}return s}};var Ne={transitionDuration:0},e3=300,ya=e=>1-(1-e)*(1-e),Ii={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],KEYBOARD:["keydown"]},Dr={},gt=class{constructor(t){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.keyboard=!0,this.transitionManager=new eo({...t,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=t.eventManager,this.onViewStateChange=t.onViewStateChange||(()=>{}),this.onStateChange=t.onStateChange||(()=>{}),this.makeViewport=t.makeViewport}set events(t){this.toggleEvents(this._customEvents,!1),this.toggleEvents(t,!0),this._customEvents=t,this.props&&this.setProps(this.props)}finalize(){for(let t in this._events)this._events[t]&&this.eventManager?.off(t,this.handleEvent);this.transitionManager.finalize()}handleEvent(t){this._controllerState=void 0;let r=this._eventStartBlocked;switch(t.type){case"panstart":return r?!1:this._onPanStart(t);case"panmove":return this._onPan(t);case"panend":return this._onPanEnd(t);case"pinchstart":return r?!1:this._onPinchStart(t);case"pinchmove":return this._onPinch(t);case"pinchend":return this._onPinchEnd(t);case"multipanstart":return r?!1:this._onMultiPanStart(t);case"multipanmove":return this._onMultiPan(t);case"multipanend":return this._onMultiPanEnd(t);case"dblclick":return this._onDoubleClick(t);case"wheel":return this._onWheel(t);case"keydown":return this._onKeyDown(t);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(t){let{x:r,y:i}=this.props,{offsetCenter:s}=t;return[s.x-r,s.y-i]}isPointInBounds(t,r){let{width:i,height:s}=this.props;if(r&&r.handled)return!1;let o=t[0]>=0&&t[0]<=i&&t[1]>=0&&t[1]<=s;return o&&r&&r.stopPropagation(),o}isFunctionKeyPressed(t){let{srcEvent:r}=t;return Boolean(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(t){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},t);this._eventStartBlocked=r}setProps(t){t.dragMode&&(this.dragMode=t.dragMode),this.props=t,"transitionInterpolator"in t||(t.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(t);let{inertia:r}=t;this.inertia=Number.isFinite(r)?r:r===!0?e3:0;let{scrollZoom:i=!0,dragPan:s=!0,dragRotate:o=!0,doubleClickZoom:n=!0,touchZoom:a=!0,touchRotate:c=!1,keyboard:l=!0}=t,f=Boolean(this.onViewStateChange);this.toggleEvents(Ii.WHEEL,f&&i),this.toggleEvents(Ii.PAN,f),this.toggleEvents(Ii.PINCH,f&&(a||c)),this.toggleEvents(Ii.MULTI_PAN,f&&c),this.toggleEvents(Ii.DOUBLE_CLICK,f&&n),this.toggleEvents(Ii.KEYBOARD,f&&l),this.scrollZoom=i,this.dragPan=s,this.dragRotate=o,this.doubleClickZoom=n,this.touchZoom=a,this.touchRotate=c,this.keyboard=l}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(t,r){this.eventManager&&t.forEach(i=>{this._events[i]!==r&&(this._events[i]=r,r?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(t,r=null,i={}){let s={...t.getViewportProps(),...r},o=this.controllerState!==t;if(this.state=t.getState(),this._setInteractionState(i),o){let n=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:n,viewId:this.props.id})}}_onTransition(t){this.onViewStateChange({...t,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(t){Object.assign(this._interactionState,t),this.onStateChange(this._interactionState)}_onPanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.isFunctionKeyPressed(t)||t.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(i=!i);let s=i?this.controllerState.panStart({pos:r}):this.controllerState.rotateStart(this._getRotateStartParams(r));return this._panMove=i,this.updateViewport(s,Ne,{isDragging:!0}),!0}_getRotateStartParams(t){return{pos:t}}_onPan(t){return this.isDragging()?this._panMove?this._onPanMove(t):this._onPanRotate(t):!1}_onPanEnd(t){return this.isDragging()?this._panMove?this._onPanMoveEnd(t):this._onPanRotateEnd(t):!1}_onPanMove(t){if(!this.dragPan)return!1;let r=this.getCenter(t),i=this.controllerState.pan({pos:r});return this.updateViewport(i,Ne,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(t){let{inertia:r}=this;if(this.dragPan&&r&&t.velocity){let i=this.getCenter(t),s=[i[0]+t.velocityX*r/2,i[1]+t.velocityY*r/2],o=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:ya},{isDragging:!1,isPanning:!0})}else{let i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(t){if(!this.dragRotate)return!1;let r=this.getCenter(t),i=this.controllerState.rotate({pos:r});return this.updateViewport(i,Ne,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(t){let{inertia:r}=this;if(this.dragRotate&&r&&t.velocity){let i=this.getCenter(t),s=[i[0]+t.velocityX*r/2,i[1]+t.velocityY*r/2],o=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:ya},{isDragging:!1,isRotating:!0})}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(t){if(!this.scrollZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;t.srcEvent.preventDefault();let{speed:i=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:o}=t,n=2/(1+Math.exp(-Math.abs(o*i)));o<0&&n!==0&&(n=1/n);let a=s?{...this._getTransitionProps({around:r}),transitionDuration:250}:Ne,c=this.controllerState.zoom({pos:r,scale:n});return this.updateViewport(c,a,{isZooming:!0,isPanning:!0}),s||this._setInteractionState({isZooming:!1,isPanning:!1}),!0}_onMultiPanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.controllerState.rotateStart({pos:r});return this.updateViewport(i,Ne,{isDragging:!0}),!0}_onMultiPan(t){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(t);r[0]-=t.deltaX;let i=this.controllerState.rotate({pos:r});return this.updateViewport(i,Ne,{isDragging:!0,isRotating:!0}),!0}_onMultiPanEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&t.velocityY){let i=this.getCenter(t),s=[i[0],i[1]+=t.velocityY*r/2],o=this.controllerState.rotate({pos:s});this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:ya},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return Dr._startPinchRotation=t.rotation,Dr._lastPinchEvent=t,this.updateViewport(i,Ne,{isDragging:!0}),!0}_onPinch(t){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:i}=t,s=this.getCenter(t);r=r.zoom({pos:s,scale:i})}if(this.touchRotate){let{rotation:i}=t;r=r.rotate({deltaAngleX:Dr._startPinchRotation-i})}return this.updateViewport(r,Ne,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),Dr._lastPinchEvent=t,!0}_onPinchEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:i}=Dr;if(this.touchZoom&&r&&i&&t.scale!==i.scale){let s=this.getCenter(t),o=this.controllerState.rotateEnd(),n=Math.log2(t.scale),a=(n-Math.log2(i.scale))/(t.deltaTime-i.deltaTime),c=Math.pow(2,n+a*r/2);o=o.zoom({pos:s,scale:c}).zoomEnd(),this.updateViewport(o,{...this._getTransitionProps({around:s}),transitionDuration:r,transitionEasing:ya},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return Dr._startPinchRotation=null,Dr._lastPinchEvent=null,!0}_onDoubleClick(t){if(!this.doubleClickZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let i=this.isFunctionKeyPressed(t),s=this.controllerState.zoom({pos:r,scale:i?.5:2});return this.updateViewport(s,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(t){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(t),{zoomSpeed:i,moveSpeed:s,rotateSpeedX:o,rotateSpeedY:n}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this,c,l={};switch(t.srcEvent.code){case"Minus":c=r?a.zoomOut(i).zoomOut(i):a.zoomOut(i),l.isZooming=!0;break;case"Equal":c=r?a.zoomIn(i).zoomIn(i):a.zoomIn(i),l.isZooming=!0;break;case"ArrowLeft":r?(c=a.rotateLeft(o),l.isRotating=!0):(c=a.moveLeft(s),l.isPanning=!0);break;case"ArrowRight":r?(c=a.rotateRight(o),l.isRotating=!0):(c=a.moveRight(s),l.isPanning=!0);break;case"ArrowUp":r?(c=a.rotateUp(n),l.isRotating=!0):(c=a.moveUp(s),l.isPanning=!0);break;case"ArrowDown":r?(c=a.rotateDown(n),l.isRotating=!0):(c=a.moveDown(s),l.isPanning=!0);break;default:return!1}return this.updateViewport(c,this._getTransitionProps(),l),!0}_getTransitionProps(t){let{transition:r}=this;return!r||!r.transitionInterpolator?Ne:t?{...r,transitionInterpolator:new at({...t,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var De=class{constructor(t,r){this._viewportProps=this.applyConstraints(t),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var Om=5,r3=1.2,ro=class extends De{constructor(t){let{width:r,height:i,latitude:s,longitude:o,zoom:n,bearing:a=0,pitch:c=0,altitude:l=1.5,position:f=[0,0,0],maxZoom:h=20,minZoom:u=0,maxPitch:d=60,minPitch:p=0,startPanLngLat:g,startZoomLngLat:m,startRotatePos:_,startRotateLngLat:y,startBearing:T,startPitch:x,startZoom:S,normalize:E=!0}=t;Y(Number.isFinite(o)),Y(Number.isFinite(s)),Y(Number.isFinite(n)),super({width:r,height:i,latitude:s,longitude:o,zoom:n,bearing:a,pitch:c,altitude:l,maxZoom:h,minZoom:u,maxPitch:d,minPitch:p,normalize:E,position:f},{startPanLngLat:g,startZoomLngLat:m,startRotatePos:_,startRotateLngLat:y,startBearing:T,startPitch:x,startZoom:S}),this.makeViewport=t.makeViewport}panStart({pos:t}){return this._getUpdatedState({startPanLngLat:this._unproject(t)})}pan({pos:t,startPos:r}){let i=this.getState().startPanLngLat||this._unproject(r);if(!i)return this;let o=this.makeViewport(this.getViewportProps()).panByPosition(i,t);return this._getUpdatedState(o)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:t,altitude:r}){return this._getUpdatedState({startRotatePos:t,startRotateLngLat:r!==void 0?this._unproject3D(t,r):void 0,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:t,deltaAngleX:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startRotateLngLat:o,startBearing:n,startPitch:a}=this.getState();if(!s||n===void 0||a===void 0)return this;let c;if(t?c=this._getNewRotation(t,s,a,n):c={bearing:n+r,pitch:a+i},o){let l=this.makeViewport({...this.getViewportProps(),...c}),f="panByPosition3D"in l?"panByPosition3D":"panByPosition";return this._getUpdatedState({...c,...l[f](o,s)})}return this._getUpdatedState(c)}rotateEnd(){return this._getUpdatedState({startRotatePos:null,startRotateLngLat:null,startBearing:null,startPitch:null})}zoomStart({pos:t}){return this._getUpdatedState({startZoomLngLat:this._unproject(t),startZoom:this.getViewportProps().zoom})}zoom({pos:t,startPos:r,scale:i}){let{startZoom:s,startZoomLngLat:o}=this.getState();if(o||(s=this.getViewportProps().zoom,o=this._unproject(r)||this._unproject(t)),!o)return this;let{maxZoom:n,minZoom:a}=this.getViewportProps(),c=s+Math.log2(i);c=H(c,a,n);let l=this.makeViewport({...this.getViewportProps(),zoom:c});return this._getUpdatedState({zoom:c,...l.panByPosition(o,t)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(t=2){return this._zoomFromCenter(t)}zoomOut(t=2){return this._zoomFromCenter(1/t)}moveLeft(t=100){return this._panFromCenter([t,0])}moveRight(t=100){return this._panFromCenter([-t,0])}moveUp(t=100){return this._panFromCenter([0,t])}moveDown(t=100){return this._panFromCenter([0,-t])}rotateLeft(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-t})}rotateRight(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+t})}rotateUp(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+t})}rotateDown(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-t})}shortestPathFrom(t){let r=t.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:o}=i;return Math.abs(s-r.bearing)>180&&(i.bearing=s<0?s+360:s-360),Math.abs(o-r.longitude)>180&&(i.longitude=o<0?o+360:o-360),i}applyConstraints(t){let{maxZoom:r,minZoom:i,zoom:s}=t;t.zoom=H(s,i,r);let{maxPitch:o,minPitch:n,pitch:a}=t;t.pitch=H(a,n,o);let{normalize:c=!0}=t;return c&&Object.assign(t,uh(t)),t}_zoomFromCenter(t){let{width:r,height:i}=this.getViewportProps();return this.zoom({pos:[r/2,i/2],scale:t})}_panFromCenter(t){let{width:r,height:i}=this.getViewportProps();return this.pan({startPos:[r/2,i/2],pos:[r/2+t[0],i/2+t[1]]})}_getUpdatedState(t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}_unproject(t){let r=this.makeViewport(this.getViewportProps());return t&&r.unproject(t)}_unproject3D(t,r){return this.makeViewport(this.getViewportProps()).unproject(t,{targetZ:r})}_getNewRotation(t,r,i,s){let o=t[0]-r[0],n=t[1]-r[1],a=t[1],c=r[1],{width:l,height:f}=this.getViewportProps(),h=o/l,u=0;n>0?Math.abs(f-c)>Om&&(u=n/(c-f)*r3):n<0&&c>Om&&(u=1-a/c),u=H(u,-1,1);let{minPitch:d,maxPitch:p}=this.getViewportProps(),g=s+180*h,m=i;return u>0?m=i+u*(p-i):u<0&&(m=i-u*(d-i)),{pitch:m,bearing:g}}},Fr=class extends gt{constructor(t){super(t),this.ControllerState=ro,this.transition={transitionDuration:300,transitionInterpolator:new at({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan",this.rotationPivot="center",this.pickPosition=t.pickPosition}setProps(t){"rotationPivot"in t&&(this.rotationPivot=t.rotationPivot||"center"),t.position=t.position||[0,0,0];let r=this.props;super.setProps(t),(!r||r.height!==t.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...t,...this.state}))}updateViewport(t,r=null,i={}){let s=t.getState();i.isDragging&&s.startRotateLngLat?i={...i,rotationPivotPosition:s.startRotateLngLat}:i.isDragging===!1&&(i={...i,rotationPivotPosition:void 0}),super.updateViewport(t,r,i)}_getRotateStartParams(t){let r;if(this.rotationPivot==="2d")r=0;else if(this.rotationPivot==="3d"&&this.pickPosition){let{x:i,y:s}=this.props,o=this.pickPosition(i+t[0],s+t[1]);o&&o.coordinate&&o.coordinate.length>=3&&(r=o.coordinate[2])}return{pos:t,altitude:r}}};var ba=class extends pt{constructor(t={}){super(t)}getViewportType(){return tr}get ControllerType(){return Fr}};ba.displayName="MapView";var xa=ba;var i3=new Ge;function s3(e,t){let r=e.order??1/0,i=t.order??1/0;return r-i}var io=class{constructor(t){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=t,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(t){let r=this._defaultEffects;if(!r.find(i=>i.id===t.id)){let i=r.findIndex(s=>s3(s,t)>0);i<0?r.push(t):r.splice(i,0,t),t.setup(this._context),this._setEffects(this.effects)}}setProps(t){"effects"in t&&(q(t.effects,this.effects,1)||this._setEffects(t.effects))}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(t){let r={};for(let s of this.effects)r[s.id]=s;let i=[];for(let s of t){let o=r[s.id],n=s;o&&o!==s?o.setProps?(o.setProps(s.props),n=o):o.cleanup(this._context):o||s.setup(this._context),i.push(n),delete r[s.id]}for(let s in r)r[s].cleanup(this._context);this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),t.some(s=>s instanceof Ge)||this._resolvedEffects.push(i3),this._needsRedraw="effects changed"}finalize(){for(let t of this._resolvedEffects)t.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var so=class extends Wt{shouldDrawLayer(t){let{operation:r}=t.props;return r.includes("draw")||r.includes("terrain")}};var o3="deckRenderer.renderLayers",Br=class{constructor(t){this.device=t,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new so(t),this.pickLayersPass=new Me(t),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(t){this.layerFilter!==t.layerFilter&&(this.layerFilter=t.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==t.drawPickingColors&&(this.drawPickingColors=t.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(t){if(!t.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...t};i.effects&&this._preRender(i.effects,i);let s=this.lastPostProcessEffect?this.renderBuffers[0]:i.target;this.lastPostProcessEffect&&(i.clearColor=[0,0,0,0],i.clearCanvas=!0);let o=r.render({...i,target:s});i.effects&&(this.lastPostProcessEffect&&(i.clearCanvas=t.clearCanvas===void 0?!0:t.clearCanvas),this._postRender(i.effects,i)),this.renderCount++,J(o3,this,o,t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:t}=this;for(let r of t)r.delete();t.length=0}_preRender(t,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let i of t)r.preRenderStats[i.id]=i.preRender(r),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:t}=this,r=this.device.canvasContext.getDrawingBufferSize(),[i,s]=r;t.length===0&&[0,1].map(o=>{let n=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:i,height:s});t.push(this.device.createFramebuffer({id:`deck-renderbuffer-${o}`,colorAttachments:[n]}))});for(let o of t)o.resize(r)}_postRender(t,r){let{renderBuffers:i}=this,s={...r,inputBuffer:i[0],swapBuffer:i[1]};for(let o of t)if(o.postRender){s.target=o.id===this.lastPostProcessEffect?r.target:void 0;let n=o.postRender(s);s.inputBuffer=n,s.swapBuffer=n===i[0]?i[1]:i[0]}}};var n3={pickedColor:null,pickedObjectIndex:-1};function Sh({pickedColors:e,decodePickingColor:t,deviceX:r,deviceY:i,deviceRadius:s,deviceRect:o}){let{x:n,y:a,width:c,height:l}=o,f=s*s,h=-1,u=0;for(let d=0;d<l;d++){let p=d+a-i,g=p*p;if(g>f)u+=4*c;else for(let m=0;m<c;m++){if(e[u+3]-1>=0){let y=m+n-r,T=y*y+g;T<=f&&(f=T,h=u)}u+=4}}if(h>=0){let d=e.slice(h,h+4),p=t(d);if(p){let g=Math.floor(h/4/c),m=h/4-g*c;return{...p,pickedColor:d,pickedX:n+m,pickedY:a+g}}F.error("Picked non-existent layer. Is picking buffer corrupt?")()}return n3}function Eh({pickedColors:e,decodePickingColor:t}){let r=new Map;if(e){for(let i=0;i<e.length;i+=4)if(e[i+3]-1>=0){let o=e.slice(i,i+4),n=o.join(",");if(!r.has(n)){let a=t(o);a?r.set(n,{...a,color:o}):F.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function Aa({pickInfo:e,viewports:t,pixelRatio:r,x:i,y:s,z:o}){let n=t[0];t.length>1&&(n=a3(e?.pickedViewports||t,{x:i,y:s}));let a;if(n){let c=[i-n.x,s-n.y];o!==void 0&&(c[2]=o),a=n.unproject(c)}return{color:null,layer:null,viewport:n,index:-1,picked:!1,x:i,y:s,pixel:[i,s],coordinate:a,devicePixel:e&&"pickedX"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:r}}function Rh(e){let{pickInfo:t,lastPickedInfo:r,mode:i,layers:s}=e,{pickedColor:o,pickedLayer:n,pickedObjectIndex:a}=t,c=n?[n]:[];if(i==="hover"){let h=r.index,u=r.layerId,d=n?n.props.id:null;if(d!==u||a!==h){if(d!==u){let p=s.find(g=>g.props.id===u);p&&c.unshift(p)}r.layerId=d,r.index=a,r.info=null}}let l=Aa(e),f=new Map;return f.set(null,l),c.forEach(h=>{let u={...l};h===n&&(u.color=o,u.index=a,u.picked=!0),u=Sa({layer:h,info:u,mode:i});let d=u.layer;h===n&&i==="hover"&&(r.info=u),f.set(d.id,u),i==="hover"&&d.updateAutoHighlight(u)}),f}function Sa({layer:e,info:t,mode:r}){for(;e&&t;){let i=t.layer||null;t.sourceLayer=i,t.layer=e,t=e.getPickingInfo({info:t,mode:r,sourceLayer:i}),e=e.parent}return t}function a3(e,t){for(let r=e.length-1;r>=0;r--){let i=e[r];if(i.containsPixel(t))return i}return e[0]}var oo=class{constructor(t){this._pickable=!0,this.device=t,this.pickLayersPass=new Me(t),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(t){"layerFilter"in t&&(this.layerFilter=t.layerFilter),"_pickable"in t&&(this._pickable=t._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObjectAsync(t){return this._pickClosestObjectAsync(t)}pickObjectsAsync(t){return this._pickVisibleObjectsAsync(t)}pickObject(t){return this._pickClosestObject(t)}pickObjects(t){return this._pickVisibleObjects(t)}getLastPickedObject({x:t,y:r,layers:i,viewports:s},o=this.lastPickedInfo.info){let n=o&&o.layer&&o.layer.id,a=o&&o.viewport&&o.viewport.id,c=n?i.find(u=>u.id===n):null,l=a&&s.find(u=>u.id===a)||s[0],f=l&&l.unproject([t-l.x,r-l.y]);return{...o,...{x:t,y:r,viewport:l,coordinate:f,layer:c}}}_resizeBuffer(){if(!this.pickingFBO&&(this.pickingFBO=this.device.createFramebuffer({colorAttachments:["rgba8unorm"],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float"))){let r=this.device.createFramebuffer({colorAttachments:["rgba32float"],depthStencilAttachment:"depth16unorm"});this.depthFBO=r}let{canvas:t}=this.device.getDefaultCanvasContext();this.pickingFBO?.resize({width:t.width,height:t.height}),this.depthFBO?.resize({width:t.width,height:t.height})}_getPickable(t){if(this._pickable===!1)return null;let r=t.filter(i=>this.pickLayersPass.shouldDrawLayer(i)&&!i.isComposite);return r.length?r:null}async _pickClosestObjectAsync({layers:t,views:r,viewports:i,x:s,y:o,radius:n=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:f,effects:h}){let u=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(t);if(!d||i.length===0)return{result:[],emptyInfo:Aa({viewports:i,x:s,y:o,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,o],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],m=Math.round(n*u),{width:_,height:y}=this.pickingFBO,T=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceWidth:_,deviceHeight:y}),x={x:s-n,y:o-n,width:n*2+1,height:n*2+1},S,E=[],v=new Set;for(let P=0;P<a;P++){let R;if(T){let C=this._drawAndSample({layers:d,views:r,viewports:i,onViewportActive:f,deviceRect:T,cullRect:x,effects:h,pass:`picking:${c}`});R=Sh({...C,deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceRect:T})}else R={pickedColor:null,pickedObjectIndex:-1};let M,L=this._getDepthLayers(R,d,l);if(L.length>0){let{pickedColors:C}=this._drawAndSample({layers:L,views:r,viewports:i,onViewportActive:f,deviceRect:{x:R.pickedX??g[0],y:R.pickedY??g[1],width:1,height:1},cullRect:x,effects:h,pass:`picking:${c}:z`},!0);C[3]&&(M=C[0])}R.pickedLayer&&P+1<a&&(v.add(R.pickedLayer),R.pickedLayer.disablePickingIndex(R.pickedObjectIndex)),S=Rh({pickInfo:R,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:i,x:s,y:o,z:M,pixelRatio:u});for(let C of S.values())C.layer&&E.push(C);if(!R.pickedColor)break}for(let P of v)P.restorePickingColors();return{result:E,emptyInfo:S.get(null)}}_pickClosestObject({layers:t,views:r,viewports:i,x:s,y:o,radius:n=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:f,effects:h}){let u=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(t);if(!d||i.length===0)return{result:[],emptyInfo:Aa({viewports:i,x:s,y:o,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,o],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],m=Math.round(n*u),{width:_,height:y}=this.pickingFBO,T=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceWidth:_,deviceHeight:y}),x={x:s-n,y:o-n,width:n*2+1,height:n*2+1},S,E=[],v=new Set;for(let P=0;P<a;P++){let R;if(T){let C=this._drawAndSample({layers:d,views:r,viewports:i,onViewportActive:f,deviceRect:T,cullRect:x,effects:h,pass:`picking:${c}`});R=Sh({...C,deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceRect:T})}else R={pickedColor:null,pickedObjectIndex:-1};let M,L=this._getDepthLayers(R,d,l);if(L.length>0){let{pickedColors:C}=this._drawAndSample({layers:L,views:r,viewports:i,onViewportActive:f,deviceRect:{x:R.pickedX??g[0],y:R.pickedY??g[1],width:1,height:1},cullRect:x,effects:h,pass:`picking:${c}:z`},!0);C[3]&&(M=C[0])}R.pickedLayer&&P+1<a&&(v.add(R.pickedLayer),R.pickedLayer.disablePickingIndex(R.pickedObjectIndex)),S=Rh({pickInfo:R,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:i,x:s,y:o,z:M,pixelRatio:u});for(let C of S.values())C.layer&&E.push(C);if(!R.pickedColor)break}for(let P of v)P.restorePickingColors();return{result:E,emptyInfo:S.get(null)}}async _pickVisibleObjectsAsync({layers:t,views:r,viewports:i,x:s,y:o,width:n=1,height:a=1,mode:c="query",maxObjects:l=null,onViewportActive:f,effects:h}){let u=this._getPickable(t);if(!u||i.length===0)return[];this._resizeBuffer();let d=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,o],!0),g=p.x,m=p.y+p.height,_=this.device.canvasContext.cssToDevicePixels([s+n,o+a],!0),y=_.x+_.width,T=_.y,x={x:g,y:T,width:y-g,height:m-T},S=this._drawAndSample({layers:u,views:r,viewports:i,onViewportActive:f,deviceRect:x,cullRect:{x:s,y:o,width:n,height:a},effects:h,pass:`picking:${c}`}),E=Eh(S),v=new Map,P=[],R=Number.isFinite(l);for(let M=0;M<E.length&&!(R&&P.length>=l);M++){let L=E[M],C={color:L.pickedColor,layer:null,index:L.pickedObjectIndex,picked:!0,x:s,y:o,pixelRatio:d};C=Sa({layer:L.pickedLayer,info:C,mode:c});let W=C.layer.id;v.has(W)||v.set(W,new Set);let U=v.get(W),G=C.object??C.index;U.has(G)||(U.add(G),P.push(C))}return P}_pickVisibleObjects({layers:t,views:r,viewports:i,x:s,y:o,width:n=1,height:a=1,mode:c="query",maxObjects:l=null,onViewportActive:f,effects:h}){let u=this._getPickable(t);if(!u||i.length===0)return[];this._resizeBuffer();let d=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,o],!0),g=p.x,m=p.y+p.height,_=this.device.canvasContext.cssToDevicePixels([s+n,o+a],!0),y=_.x+_.width,T=_.y,x={x:g,y:T,width:y-g,height:m-T},S=this._drawAndSample({layers:u,views:r,viewports:i,onViewportActive:f,deviceRect:x,cullRect:{x:s,y:o,width:n,height:a},effects:h,pass:`picking:${c}`}),E=Eh(S),v=new Map,P=[],R=Number.isFinite(l);for(let M=0;M<E.length&&!(R&&P.length>=l);M++){let L=E[M],C={color:L.pickedColor,layer:null,index:L.pickedObjectIndex,picked:!0,x:s,y:o,pixelRatio:d};C=Sa({layer:L.pickedLayer,info:C,mode:c});let W=C.layer.id;v.has(W)||v.set(W,new Set);let U=v.get(W),G=C.object??C.index;U.has(G)||(U.add(G),P.push(C))}return P}async _drawAndSampleAsync({layers:t,views:r,viewports:i,onViewportActive:s,deviceRect:o,cullRect:n,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:t,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:s,pickingFBO:f,deviceRect:o,cullRect:n,effects:a,pass:c,pickZ:l,preRenderStats:{},isPicking:!0};for(let y of a)y.useInPicking&&(h.preRenderStats[y.id]=y.preRender(h));let{decodePickingColor:u}=this.pickLayersPass.render(h),{x:d,y:p,width:g,height:m}=o,_=new(l?Float32Array:Uint8Array)(g*m*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:d,sourceY:p,sourceWidth:g,sourceHeight:m,target:_}),{pickedColors:_,decodePickingColor:u}}_drawAndSample({layers:t,views:r,viewports:i,onViewportActive:s,deviceRect:o,cullRect:n,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:t,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:s,pickingFBO:f,deviceRect:o,cullRect:n,effects:a,pass:c,pickZ:l,preRenderStats:{},isPicking:!0};for(let y of a)y.useInPicking&&(h.preRenderStats[y.id]=y.preRender(h));let{decodePickingColor:u}=this.pickLayersPass.render(h),{x:d,y:p,width:g,height:m}=o,_=new(l?Float32Array:Uint8Array)(g*m*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:d,sourceY:p,sourceWidth:g,sourceHeight:m,target:_}),{pickedColors:_,decodePickingColor:u}}_getDepthLayers(t,r,i){if(!i||!this.depthFBO)return[];let{pickedLayer:s}=t,o=s?.state?.terrainDrawMode==="drape";return s&&!o?[s]:r.filter(n=>n.props.operation.includes("terrain"))}_getPickingRect({deviceX:t,deviceY:r,deviceRadius:i,deviceWidth:s,deviceHeight:o}){let n=Math.max(0,t-i),a=Math.max(0,r-i),c=Math.min(s,t+i+1)-n,l=Math.min(o,r+i+1)-a;return c<=0||l<=0?null:{x:n,y:a,width:c,height:l}}};var c3={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},l3="top-left",Nm="root",Ea=class{constructor({deck:t,parentElement:r}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=t,r?.classList.add("deck-widget-container"),this.parentElement=r}getWidgets(){return this.resolvedWidgets}setProps(t){if(t.widgets&&!q(t.widgets,this.widgets,1)){let r=t.widgets.filter(Boolean);this._setWidgets(r)}}finalize(){for(let t of this.getWidgets())this._removeWidget(t);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(let t in this.containers)this.containers[t].remove()}addDefault(t){this.defaultWidgets.find(r=>r.id===t.id)||(this._addWidget(t),this.defaultWidgets.push(t),this._setWidgets(this.widgets))}onRedraw({viewports:t,layers:r}){let i=t.reduce((s,o)=>(s[o.id]=o,s),{});for(let s of this.getWidgets()){let{viewId:o}=s;if(o){let n=i[o];n&&(s.onViewportChange&&s.onViewportChange(n),s.onRedraw?.({viewports:[n],layers:r}))}else{if(s.onViewportChange)for(let n of t)s.onViewportChange(n);s.onRedraw?.({viewports:t,layers:r})}}this.lastViewports=i,this._updateContainers()}onHover(t,r){for(let i of this.getWidgets()){let{viewId:s}=i;(!s||s===t.viewport?.id)&&i.onHover?.(t,r)}}onEvent(t,r){let i=Us[r.type];if(i)for(let s of this.getWidgets()){let{viewId:o}=s;(!o||o===t.viewport?.id)&&s[i]?.(t,r)}}_setWidgets(t){let r={};for(let i of this.resolvedWidgets)r[i.id]=i;this.resolvedWidgets.length=0;for(let i of this.defaultWidgets)r[i.id]=null,this.resolvedWidgets.push(i);for(let i of t){let s=r[i.id];s?s.viewId!==i.viewId||s.placement!==i.placement?(this._removeWidget(s),this._addWidget(i)):i!==s&&(s.setProps(i.props),i=s):this._addWidget(i),r[i.id]=null,this.resolvedWidgets.push(i)}for(let i in r){let s=r[i];s&&this._removeWidget(s)}this.widgets=t}_addWidget(t){let{viewId:r=null,placement:i=l3}=t,s=t.props._container??r;t.widgetManager=this,t.deck=this.deck,t.rootElement=t._onAdd({deck:this.deck,viewId:r}),t.rootElement&&this._getContainer(s,i).append(t.rootElement),t.updateHTML()}_removeWidget(t){t.onRemove?.(),t.rootElement&&t.rootElement.remove(),t.rootElement=void 0,t.deck=void 0,t.widgetManager=void 0}_getContainer(t,r){if(t&&typeof t!="string")return t;let i=t||Nm,s=this.containers[i];s||(s=document.createElement("div"),s.style.pointerEvents="none",s.style.position="absolute",s.style.overflow="hidden",this.parentElement?.append(s),this.containers[i]=s);let o=s.querySelector(`.${r}`);return o||(o=globalThis.document.createElement("div"),o.className=r,o.style.position="absolute",o.style.zIndex="2",Object.assign(o.style,c3[r]),s.append(o)),o}_updateContainers(){let t=this.deck.width,r=this.deck.height;for(let i in this.containers){let s=this.lastViewports[i]||null,o=i===Nm||s,n=this.containers[i];o?(n.style.display="block",n.style.left=`${s?s.x:0}px`,n.style.top=`${s?s.y:0}px`,n.style.width=`${s?s.width:t}px`,n.style.height=`${s?s.height:r}px`):n.style.display="none"}}};function no(e,t){t&&Object.entries(t).map(([r,i])=>{r.startsWith("--")?e.style.setProperty(r,i):e.style[r]=i})}function Ra(e,t){t&&Object.keys(t).map(r=>{r.startsWith("--")?e.style.removeProperty(r):e.style[r]=""})}var sr=class{constructor(t){this.viewId=null,this.props={...this.constructor.defaultProps,...t},this.id=this.props.id}setProps(t){let r=this.props,i=this.rootElement;i&&r.className!==t.className&&(r.className&&i.classList.remove(r.className),t.className&&i.classList.add(t.className)),i&&!q(r.style,t.style,1)&&(Ra(i,r.style),no(i,t.style)),Object.assign(this.props,t),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}getViewState(t){return this.deck?.viewManager?.getViewState(t)||{}}setViewState(t,r){this.deck?._onViewStateChange({viewId:t,viewState:r,interactionState:{}})}onCreateRootElement(){let t=["deck-widget",this.className,this.props.className],r=document.createElement("div");return t.filter(i=>typeof i=="string"&&i.length>0).forEach(i=>r.classList.add(i)),no(r,this.props.style),r}_onAdd(t){return this.onAdd(t)??this.onCreateRootElement()}onAdd(t){}onRemove(){}onViewportChange(t){}onRedraw(t){}onHover(t,r){}onClick(t,r){}onDrag(t,r){}onDragStart(t,r){}onDragEnd(t,r){}};sr.defaultProps={id:"widget",style:{},_container:null,className:""};var f3={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},ao=class extends sr{constructor(t={}){super(t),this.id="default-tooltip",this.placement="fill",this.className="deck-tooltip",this.isVisible=!1,this.setProps(t)}onCreateRootElement(){let t=document.createElement("div");return t.className=this.className,Object.assign(t.style,f3),t}onRenderHTML(t){}onViewportChange(t){this.isVisible&&t.id===this.lastViewport?.id&&!t.equals(this.lastViewport)&&this.setTooltip(null),this.lastViewport=t}onHover(t){let{deck:r}=this,i=r&&r.props.getTooltip;if(!i)return;let s=i(t);this.setTooltip(s,t.x,t.y)}setTooltip(t,r,i){let s=this.rootElement;if(s){if(typeof t=="string")s.innerText=t;else if(t)t.text&&(s.innerText=t.text),t.html&&(s.innerHTML=t.html),t.className&&(s.className=t.className);else{this.isVisible=!1,s.style.display="none";return}this.isVisible=!0,s.style.display="block",s.style.transform=`translate(${r}px, ${i}px)`,t&&typeof t=="object"&&"style"in t&&Object.assign(s.style,t.style)}}};ao.defaultProps={...sr.defaultProps};D();Qa();function nr(){}var gR=({isDragging:e})=>e?"grabbing":"grab",t0={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,parameters:{},parent:null,device:null,deviceProps:{},gl:null,canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:"none",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,widgets:[],onDeviceInitialized:nr,onWebGLInitialized:nr,onResize:nr,onViewStateChange:nr,onInteractionStateChange:nr,onBeforeRender:nr,onAfterRender:nr,onLoad:nr,onError:e=>F.error(e.message,e.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:gR,getTooltip:null,debug:!1,drawPickingColors:!1},_o=class{constructor(t){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new ir({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null,unproject3D:!1},this._lastPointerDownInfo=null,this._onPointerMove=i=>{let{_pickRequest:s}=this;if(i.type==="pointerleave")s.x=-1,s.y=-1,s.radius=0;else{if(i.leftButton||i.rightButton)return;{let o=i.offsetCenter;if(!o)return;s.x=o.x,s.y=o.y,s.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:s.x,y:s.y}),s.event=i},this._onEvent=i=>{let s=Us[i.type],o=i.offsetCenter;if(!s||!o||!this.layerManager)return;let n,a=this.layerManager.getLayers(),c=a.some(d=>d.props.pickable==="3d");if(i.type==="click"&&c){let d=this._pick("pickObject","pickObject Time",{x:o.x,y:o.y,radius:this.props.pickingRadius,unproject3D:!0});n=d.result[0]||d.emptyInfo}else n=this.deckPicker.getLastPickedObject({x:o.x,y:o.y,layers:a,viewports:this.getViewports(o)},this._lastPointerDownInfo);let{layer:l}=n,f=l&&(l[s]||l.props[s]),h=this.props[s],u=!1;f&&(u=f.call(l,n,i)),u||(h?.(n,i),this.widgetManager.onEvent(n,i))},this._onPointerDown=i=>{if(this.device?.type==="webgpu")return;let s=i.offsetCenter,o=this._pick("pickObject","pickObject Time",{x:s.x,y:s.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=o.result[0]||o.emptyInfo},this.props={...t0,...t},t=this.props,t.viewState&&t.initialViewState&&F.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,t.device&&(this.device=t.device);let r=this.device;if(!r&&t.gl){t.gl instanceof WebGLRenderingContext&&F.error("WebGL1 context not supported.")();let i=this.props.deviceProps?.onResize;r=mo.attach(t.gl,{_cacheShaders:!0,_cachePipelines:!0,...this.props.deviceProps,onResize:(s,o)=>{let{width:n,height:a}=s.canvas;s.setDrawingBufferSize(n,a),this._needsRedraw="Canvas resized",i?.(s,o)}})}r||(r=this._createDevice(t)),this.animationLoop=this._createAnimationLoop(r,t),this.setProps(t),t._typedArrayManagerProps&&Ht.setOptions(t._typedArrayManagerProps),this.animationLoop.start()}finalize(){this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._lastPointerDownInfo=null,this.layerManager?.finalize(),this.layerManager=null,this.viewManager?.finalize(),this.viewManager=null,this.effectManager?.finalize(),this.effectManager=null,this.deckRenderer?.finalize(),this.deckRenderer=null,this.deckPicker?.finalize(),this.deckPicker=null,this.eventManager?.destroy(),this.eventManager=null,this.widgetManager?.finalize(),this.widgetManager=null,!this.props.canvas&&!this.props.device&&!this.props.gl&&this.canvas&&(this.canvas.parentElement?.removeChild(this.canvas),this.canvas=null)}setProps(t){this.stats.get("setProps Time").timeStart(),"onLayerHover"in t&&F.removed("onLayerHover","onHover")(),"onLayerClick"in t&&F.removed("onLayerClick","onClick")(),t.initialViewState&&!q(this.props.initialViewState,t.initialViewState,3)&&(this.viewState=t.initialViewState),Object.assign(this.props,t),this._setCanvasSize(this.props);let r=Object.create(this.props);Object.assign(r,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),t.device&&t.device.id!==this.device?.id&&(this.animationLoop?.stop(),this.canvas!==t.device.canvasContext?.canvas&&(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),F.log(`recreating animation loop for new device! id=${t.device.id}`)(),this.animationLoop=this._createAnimationLoop(t.device,t),this.animationLoop.start()),this.animationLoop?.setProps(r),t.useDevicePixels!==void 0&&this.device?.canvasContext?.setProps&&this.device.canvasContext.setProps({useDevicePixels:t.useDevicePixels}),this.layerManager&&(this.viewManager.setProps(r),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(r),this.effectManager.setProps(r),this.deckRenderer.setProps(r),this.deckPicker.setProps(r),this.widgetManager.setProps(r)),this.stats.get("setProps Time").timeEnd()}needsRedraw(t={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);let i=this.viewManager.needsRedraw(t),s=this.layerManager.needsRedraw(t),o=this.effectManager.needsRedraw(t),n=this.deckRenderer.needsRedraw(t);return r=r||i||s||o||n,r}redraw(t){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=t||r,r&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(r):this._drawLayers(r))}get isInitialized(){return this.viewManager!==null}getViews(){return Y(this.viewManager),this.viewManager.views}getView(t){return Y(this.viewManager),this.viewManager.getView(t)}getViewports(t){return Y(this.viewManager),this.viewManager.getViewports(t)}getCanvas(){return this.canvas}pickObject(t){let r=this._pick("pickObject","pickObject Time",t).result;return r.length?r[0]:null}pickMultipleObjects(t){return t.depth=t.depth||10,this._pick("pickObject","pickMultipleObjects Time",t).result}pickObjects(t){return this._pick("pickObjects","pickObjects Time",t)}_pickPositionForController(t,r){return this.pickObject({x:t,y:r,radius:0,unproject3D:!0})}_addResources(t,r=!1){for(let i in t)this.layerManager.resourceManager.add({resourceId:i,data:t[i],forceUpdate:r})}_removeResources(t){for(let r of t)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(t){this.effectManager.addDefaultEffect(t)}_addDefaultShaderModule(t){this.layerManager.addDefaultShaderModule(t)}_removeDefaultShaderModule(t){this.layerManager?.removeDefaultShaderModule(t)}_pick(t,r,i){Y(this.deckPicker);let{stats:s}=this;s.get("Pick Count").incrementCount(),s.get(r).timeStart();let o=this.deckPicker[t]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return s.get(r).timeEnd(),o}_createCanvas(t){let r=t.canvas;return typeof r=="string"&&(r=document.getElementById(r),Y(r)),r||(r=document.createElement("canvas"),r.id=t.id||"deckgl-overlay",t.width&&typeof t.width=="number"&&(r.width=t.width),t.height&&typeof t.height=="number"&&(r.height=t.height),(t.parent||document.body).appendChild(r)),Object.assign(r.style,t.style),r}_setCanvasSize(t){if(!this.canvas)return;let{width:r,height:i}=t;if(r||r===0){let s=Number.isFinite(r)?`${r}px`:r;this.canvas.style.width=s}if(i||i===0){let s=Number.isFinite(i)?`${i}px`:i;this.canvas.style.position=t.style?.position||"absolute",this.canvas.style.height=s}}_updateCanvasSize(){let{canvas:t}=this;if(!t)return;let r=t.clientWidth??t.width,i=t.clientHeight??t.height;(r!==this.width||i!==this.height)&&(this.width=r,this.height=i,this.viewManager?.setProps({width:r,height:i}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:r,height:i}))}_createAnimationLoop(t,r){let{gl:i,onError:s}=r;return new si({device:t,autoResizeDrawingBuffer:!i,autoResizeViewport:!1,onInitialize:o=>this._setDevice(o.device),onRender:this._onRenderFrame.bind(this),onError:s})}_createDevice(t){let r=this.props.deviceProps?.createCanvasContext,i=typeof r=="object"?r:void 0,s={adapters:[],_cacheShaders:!0,_cachePipelines:!0,...t.deviceProps};s.adapters.includes(mo)||s.adapters.push(mo);let o={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0},n=this.props.deviceProps?.onResize;return ke.createDevice({_reuseDevices:!0,type:"webgl",...s,createCanvasContext:{...o,...i,canvas:this._createCanvas(t),useDevicePixels:this.props.useDevicePixels,autoResize:!0},onResize:(a,c)=>{this._needsRedraw="Canvas resized",n?.(a,c)}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:t}=this.props,r=Array.isArray(t)?t:t?[t]:[new xa({id:"default-view"})];return r.length&&this.props.controller&&(r[0].props.controller=this.props.controller),r}_onContextLost(){let{onError:t}=this.props;this.animationLoop&&t&&t(new Error("WebGL context is lost"))}_pickAndCallback(){if(this.device?.type==="webgpu")return;let{_pickRequest:t}=this;if(t.event){let i=(this.layerManager?.getLayers()||[]).some(c=>c.props.pickable==="3d");t.unproject3D=i;let{result:s,emptyInfo:o}=this._pick("pickObject","pickObject Time",t);this.cursorState.isHovering=s.length>0;let n=o,a=!1;for(let c of s)n=c,a=c.layer?.onHover(c,t.event)||a;a||(this.props.onHover?.(n,t.event),this.widgetManager.onHover(n,t.event)),t.event=null}}_updateCursor(){let t=this.props.parent||this.canvas;t&&(t.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(t){if(this.device=t,!this.animationLoop)return;this.canvas||(this.canvas=this.device.canvasContext?.canvas,!this.canvas.isConnected&&this.props.parent&&this.props.parent.insertBefore(this.canvas,this.props.parent.firstChild)),this.device.type==="webgl"&&this.device.setParametersWebGL({blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onDeviceInitialized(this.device),this.device.type==="webgl"&&this.props.onWebGLInitialized(this.device.gl);let r=new pr;r.play(),this.animationLoop.attachTimeline(r);let i=this.props.parent?.querySelector(".deck-events-root")||this.canvas;this.eventManager=new Ls(i,{touchAction:this.props.touchAction,recognizers:Object.keys(oh).map(n=>{let[a,c,l,f]=oh[n],h=this.props.eventRecognizerOptions?.[n],u={...c,...h,event:n};return{recognizer:new a(u),recognizeWith:l,requestFailure:f}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let n in Us)this.eventManager.on(n,this._onEvent);this.viewManager=new Gs({timeline:r,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),pickPosition:this._pickPositionForController.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let s=this.viewManager.getViewports()[0];this.layerManager=new Or(this.device,{deck:this,stats:this.stats,viewport:s,timeline:r}),this.effectManager=new io({deck:this,device:this.device}),this.deckRenderer=new Br(this.device),this.deckPicker=new oo(this.device);let o=this.props.parent?.querySelector(".deck-widgets-root")||this.canvas?.parentElement;this.widgetManager=new Ea({deck:this,parentElement:o}),this.widgetManager.addDefault(new ao),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(t,r){let{device:i,gl:s}=this.layerManager.context;this.props.onBeforeRender({device:i,gl:s});let o={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...r};this.deckRenderer?.renderLayers(o),o.pass==="screen"&&this.widgetManager.onRedraw({viewports:o.viewports,layers:o.layers}),this.props.onAfterRender({device:i,gl:s})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),F.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.layerManager.updateLayers(),this.device?.type!=="webgpu"&&this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(t){let r=this.props.onViewStateChange(t)||t.viewState;this.viewState&&(this.viewState={...this.viewState,[t.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(t){this.cursorState.isDragging=t.isDragging||!1,this.props.onInteractionStateChange(t)}_getFrameStats(){let{stats:t}=this;t.get("frameRate").timeEnd(),t.get("frameRate").timeStart();let r=this.animationLoop.stats;t.get("GPU Time").addTime(r.get("GPU Time").lastTiming),t.get("CPU Time").addTime(r.get("CPU Time").lastTiming)}_getMetrics(){let{metrics:t,stats:r}=this;t.fps=r.get("frameRate").getHz(),t.setPropsTime=r.get("setProps Time").time,t.updateAttributesTime=r.get("Update Attributes").time,t.framesRedrawn=r.get("Redraw Count").count,t.pickTime=r.get("pickObject Time").time+r.get("pickMultipleObjects Time").time+r.get("pickObjects Time").time,t.pickCount=r.get("Pick Count").count,t.gpuTime=r.get("GPU Time").time,t.cpuTime=r.get("CPU Time").time,t.gpuTimePerFrame=r.get("GPU Time").getAverageTime(),t.cpuTimePerFrame=r.get("CPU Time").getAverageTime();let i=ke.stats.get("Memory Usage");t.bufferMemory=i.get("Buffer Memory").count,t.textureMemory=i.get("Texture Memory").count,t.renderbufferMemory=i.get("Renderbuffer Memory").count,t.gpuMemory=i.get("GPU Memory").count}};_o.defaultProps=t0;_o.VERSION=Hn;var rc=_o;D();D();function e0(e){switch(e){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return Te(e)}}var r0=_e;function To(e,t,r){if(t.size>4)return null;let i=r==="webgpu"&&t.type==="uint8"?"unorm8":t.type;return{attribute:e,format:t.size>1?`${i}x${t.size}`:t.type,byteOffset:t.offset||0}}function ar(e){return e.stride||e.size*e.bytesPerElement}function i0(e,t){return e.type===t.type&&e.size===t.size&&ar(e)===ar(t)&&(e.offset||0)===(t.offset||0)}function qh(e,t){t.offset&&F.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let r=ar(e),i=t.vertexOffset!==void 0?t.vertexOffset:e.vertexOffset||0,s=t.elementOffset||0,o=i*r+s*e.bytesPerElement+(e.offset||0);return{...t,offset:o,stride:r}}function mR(e,t){let r=qh(e,t);return{high:r,low:{...r,offset:r.offset+e.size*4}}}var yo=class{constructor(t,r,i){this._buffer=null,this.device=t,this.id=r.id||"",this.size=r.size||1;let s=r.logicalType||r.type,o=s==="float64",{defaultValue:n}=r;n=Number.isFinite(n)?[n]:n||new Array(this.size).fill(0);let a;o?a="float32":!s&&r.isIndexed?a="uint32":a=s||"float32";let c=e0(s||a);this.doublePrecision=o,o&&r.fp64===!1&&(c=Float32Array),this.value=null,this.settings={...r,defaultType:c,defaultValue:n,logicalType:s,type:a,normalized:a.includes("norm"),size:this.size,bytesPerElement:c.BYTES_PER_ELEMENT},this.state={...i,externalBuffer:null,bufferAccessor:this.settings,allocatedValue:null,numInstances:0,bounds:null,constant:!1}}get isConstant(){return this.state.constant}get buffer(){return this._buffer}get byteOffset(){let t=this.getAccessor();return t.vertexOffset?t.vertexOffset*ar(t):0}get numInstances(){return this.state.numInstances}set numInstances(t){this.state.numInstances=t}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),Ht.release(this.state.allocatedValue)}getBuffer(){return this.state.constant?null:this.state.externalBuffer||this._buffer}getValue(t=this.id,r=null){let i={};if(this.state.constant){let s=this.value;if(r){let o=qh(this.getAccessor(),r),n=o.offset/s.BYTES_PER_ELEMENT,a=o.size||this.size;i[t]=s.subarray(n,n+a)}else i[t]=s}else i[t]=this.getBuffer();return this.doublePrecision&&(this.value instanceof Float64Array?i[`${t}64Low`]=i[t]:i[`${t}64Low`]=new Float32Array(this.size)),i}_getBufferLayout(t=this.id,r=null){let i=this.getAccessor(),s=[],o={name:this.id,byteStride:ar(i)};if(this.doublePrecision){let n=mR(i,r||{});s.push(To(t,{...i,...n.high},this.device.type),To(`${t}64Low`,{...i,...n.low},this.device.type))}else if(r){let n=qh(i,r);s.push(To(t,{...i,...n},this.device.type))}else s.push(To(t,i,this.device.type));return o.attributes=s.filter(Boolean),o}setAccessor(t){this.state.bufferAccessor=t}getAccessor(){return this.state.bufferAccessor}getBounds(){if(this.state.bounds)return this.state.bounds;let t=null;if(this.state.constant&&this.value){let r=Array.from(this.value);t=[r,r]}else{let{value:r,numInstances:i,size:s}=this,o=i*s;if(r&&o&&r.length>=o){let n=new Array(s).fill(1/0),a=new Array(s).fill(-1/0);for(let c=0;c<o;)for(let l=0;l<s;l++){let f=r[c++];f<n[l]&&(n[l]=f),f>a[l]&&(a[l]=f)}t=[n,a]}}return this.state.bounds=t,t}setData(t){let{state:r}=this,i;ArrayBuffer.isView(t)?i={value:t}:t instanceof O?i={buffer:t}:i=t;let s={...this.settings,...i};if(ArrayBuffer.isView(i.value)){if(!i.type)if(this.doublePrecision&&i.value instanceof Float64Array)s.type="float32";else{let n=r0(i.value);s.type=s.normalized?n.replace("int","norm"):n}s.bytesPerElement=i.value.BYTES_PER_ELEMENT,s.stride=ar(s)}if(r.bounds=null,i.constant){let o=i.value;if(o=this._normalizeValue(o,[],0),this.settings.normalized&&(o=this.normalizeConstant(o)),!(!r.constant||!this._areValuesEqual(o,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=ArrayBuffer.isView(o)?o:new Float32Array(o)}else if(i.buffer){let o=i.buffer;r.externalBuffer=o,r.constant=!1,this.value=i.value||null}else if(i.value){this._checkExternalBuffer(i);let o=i.value;r.externalBuffer=null,r.constant=!1,this.value=o;let{buffer:n}=this,a=ar(s),c=(s.vertexOffset||0)*a;if(this.doublePrecision&&o instanceof Float64Array&&(o=fa(o,s)),this.settings.isIndexed){let f=this.settings.defaultType;o.constructor!==f&&(o=new f(o))}let l=o.byteLength+c+a*2;(!n||n.byteLength<l)&&(n=this._createBuffer(l)),n.write(o,c)}return this.setAccessor(s),!0}updateSubBuffer(t={}){this.state.bounds=null;let r=this.value,{startOffset:i=0,endOffset:s}=t;this.buffer.write(this.doublePrecision&&r instanceof Float64Array?fa(r,{size:this.size,startIndex:i,endIndex:s}):r.subarray(i,s),i*r.BYTES_PER_ELEMENT+this.byteOffset)}allocate(t,r=!1){let{state:i}=this,s=i.allocatedValue,o=Ht.allocate(s,t+1,{size:this.size,type:this.settings.defaultType,copy:r});this.value=o;let{byteOffset:n}=this,{buffer:a}=this;return(!a||a.byteLength<o.byteLength+n)&&(a=this._createBuffer(o.byteLength+n),r&&s&&a.write(s instanceof Float64Array?fa(s,this):s,n)),i.allocatedValue=o,i.constant=!1,i.externalBuffer=null,this.setAccessor(this.settings),!0}_checkExternalBuffer(t){let{value:r}=t;if(!ArrayBuffer.isView(r))throw new Error(`Attribute ${this.id} value is not TypedArray`);let i=this.settings.defaultType,s=!1;if(this.doublePrecision&&(s=r.BYTES_PER_ELEMENT<4),s)throw new Error(`Attribute ${this.id} does not support ${r.constructor.name}`);!(r instanceof i)&&this.settings.normalized&&!("normalized"in t)&&F.warn(`Attribute ${this.id} is normalized`)()}normalizeConstant(t){switch(this.settings.type){case"snorm8":return new Float32Array(t).map(r=>(r+128)/255*2-1);case"snorm16":return new Float32Array(t).map(r=>(r+32768)/65535*2-1);case"unorm8":return new Float32Array(t).map(r=>r/255);case"unorm16":return new Float32Array(t).map(r=>r/65535);default:return t}}_normalizeValue(t,r,i){let{defaultValue:s,size:o}=this.settings;if(Number.isFinite(t))return r[i]=t,r;if(!t){let n=o;for(;--n>=0;)r[i+n]=s[n];return r}switch(o){case 4:r[i+3]=Number.isFinite(t[3])?t[3]:s[3];case 3:r[i+2]=Number.isFinite(t[2])?t[2]:s[2];case 2:r[i+1]=Number.isFinite(t[1])?t[1]:s[1];case 1:r[i+0]=Number.isFinite(t[0])?t[0]:s[0];break;default:let n=o;for(;--n>=0;)r[i+n]=Number.isFinite(t[n])?t[n]:s[n]}return r}_areValuesEqual(t,r){if(!t||!r)return!1;let{size:i}=this;for(let s=0;s<i;s++)if(t[s]!==r[s])return!1;return!0}_createBuffer(t){this._buffer&&this._buffer.destroy();let{isIndexed:r,type:i}=this.settings;return this._buffer=this.device.createBuffer({...this._buffer?.props,id:this.id,usage:(r?O.INDEX:O.VERTEX)|O.COPY_DST,indexType:r?i:void 0,byteLength:t}),this._buffer}};var s0=[],o0=[];function Li(e,t=0,r=1/0){let i=s0,s={index:-1,data:e,target:[]};return e?typeof e[Symbol.iterator]=="function"?i=e:e.length>0&&(o0.length=e.length,i=o0):i=s0,(t>0||Number.isFinite(r))&&(i=(Array.isArray(i)?i:Array.from(i)).slice(t,r),s.index=t-1),{iterable:i,objectInfo:s}}function ic(e){return e&&e[Symbol.asyncIterator]}function sc(e,t){let{size:r,stride:i,offset:s,startIndices:o,nested:n}=t,a=e.BYTES_PER_ELEMENT,c=i?i/a:r,l=s?s/a:0,f=Math.floor((e.length-l)/c);return(h,{index:u,target:d})=>{if(!o){let _=u*c+l;for(let y=0;y<r;y++)d[y]=e[_+y];return d}let p=o[u],g=o[u+1]||f,m;if(n){m=new Array(g-p);for(let _=p;_<g;_++){let y=_*c+l;d=new Array(r);for(let T=0;T<r;T++)d[T]=e[y+T];m[_-p]=d}}else if(c===r)m=e.subarray(p*r+l,g*r+l);else{m=new e.constructor((g-p)*r);let _=0;for(let y=p;y<g;y++){let T=y*c+l;for(let x=0;x<r;x++)m[_++]=e[T+x]}}return m}}var n0=[],bo=[[0,1/0]];function a0(e,t){if(e===bo||(t[0]<0&&(t[0]=0),t[0]>=t[1]))return e;let r=[],i=e.length,s=0;for(let o=0;o<i;o++){let n=e[o];n[1]<t[0]?(r.push(n),s=o+1):n[0]>t[1]?r.push(n):t=[Math.min(n[0],t[0]),Math.max(n[1],t[1])]}return r.splice(s,0,t),r}var TR={interpolation:{duration:0,easing:e=>e},spring:{stiffness:.05,damping:.5}};function oc(e,t){if(!e)return null;Number.isFinite(e)&&(e={type:"interpolation",duration:e});let r=e.type||"interpolation";return{...TR[r],...t,...e,type:r}}var Be=class extends yo{constructor(t,r){super(t,r,{startIndices:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:bo}),this.constant=!1,this.settings.update=r.update||(r.accessor?this._autoUpdater:void 0),Object.seal(this.settings),Object.seal(this.state),this._validateAttributeUpdaters()}get startIndices(){return this.state.startIndices}set startIndices(t){this.state.startIndices=t}needsUpdate(){return this.state.needsUpdate}needsRedraw({clearChangedFlags:t=!1}={}){let r=this.state.needsRedraw;return this.state.needsRedraw=r&&!t,r}layoutChanged(){return this.state.layoutChanged}setAccessor(t){var r;(r=this.state).layoutChanged||(r.layoutChanged=!i0(t,this.getAccessor())),super.setAccessor(t)}getUpdateTriggers(){let{accessor:t}=this.settings;return[this.id].concat(typeof t!="function"&&t||[])}supportsTransition(){return Boolean(this.settings.transition)}getTransitionSetting(t){if(!t||!this.supportsTransition())return null;let{accessor:r}=this.settings,i=this.settings.transition,s=Array.isArray(r)?t[r.find(o=>t[o])]:t[r];return oc(s,i)}setNeedsUpdate(t=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||t,this.setNeedsRedraw(t),r){let{startRow:i=0,endRow:s=1/0}=r;this.state.updateRanges=a0(this.state.updateRanges,[i,s])}else this.state.updateRanges=bo}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=n0}setNeedsRedraw(t=this.id){this.state.needsRedraw=this.state.needsRedraw||t}allocate(t){let{state:r,settings:i}=this;return i.noAlloc?!1:i.update?(super.allocate(t,r.updateRanges!==bo),!0):!1}updateBuffer({numInstances:t,data:r,props:i,context:s}){if(!this.needsUpdate())return!1;let{state:{updateRanges:o},settings:{update:n,noAlloc:a}}=this,c=!0;if(n){for(let[l,f]of o)n.call(s,this,{data:r,startRow:l,endRow:f,props:i,numInstances:t});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLength<this.value.byteLength+this.byteOffset)this.setData({value:this.value,constant:this.constant}),this.constant=!1;else for(let[l,f]of o){let h=Number.isFinite(l)?this.getVertexOffset(l):0,u=Number.isFinite(f)?this.getVertexOffset(f):a||!Number.isFinite(t)?this.value.length:t*this.size;super.updateSubBuffer({startOffset:h,endOffset:u})}this._checkAttributeArray()}else c=!1;return this.clearNeedsUpdate(),this.setNeedsRedraw(),c}setConstantValue(t,r){let i=this.device.type==="webgpu";if(i||r===void 0||typeof r=="function"){if(i&&typeof r!="function"){let n=this._normalizeValue(r,[],0);this._areValuesEqual(n,this.value)||this.setNeedsUpdate("WebGPU constant updated")}return!1}let s=this.settings.transform&&t?this.settings.transform.call(t,r):r;return this.setData({constant:!0,value:s})&&this.setNeedsRedraw(),this.clearNeedsUpdate(),!0}setExternalBuffer(t){let{state:r}=this;return t?(this.clearNeedsUpdate(),r.lastExternalBuffer===t||(r.lastExternalBuffer=t,this.setNeedsRedraw(),this.setData(t)),!0):(r.lastExternalBuffer=null,!1)}setBinaryValue(t,r=null){let{state:i,settings:s}=this;if(!t)return i.binaryValue=null,i.binaryAccessor=null,!1;if(s.noAlloc)return!1;if(i.binaryValue===t)return this.clearNeedsUpdate(),!0;if(i.binaryValue=t,this.setNeedsRedraw(),s.transform||r!==this.startIndices){ArrayBuffer.isView(t)&&(t={value:t});let n=t;Y(ArrayBuffer.isView(n.value),`invalid ${s.accessor}`);let a=Boolean(n.size)&&n.size!==this.size;return i.binaryAccessor=sc(n.value,{size:n.size||this.size,stride:n.stride,offset:n.offset,startIndices:r,nested:a}),!1}return this.clearNeedsUpdate(),this.setData(t),!0}getVertexOffset(t){let{startIndices:r}=this;return(r?t<r.length?r[t]:this.numInstances:t)*this.size}getValue(){let t=this.settings.shaderAttributes,r=super.getValue();if(!t)return r;for(let i in t)Object.assign(r,super.getValue(i,t[i]));return r}getBufferLayout(t){this.state.layoutChanged=!1;let r=this.settings.shaderAttributes,i=super._getBufferLayout(),{stepMode:s}=this.settings;if(s==="dynamic"?i.stepMode=t?t.isInstanced?"instance":"vertex":"instance":i.stepMode=s??"vertex",!r)return i;for(let o in r){let n=super._getBufferLayout(o,r[o]);i.attributes.push(...n.attributes)}return i}_autoUpdater(t,{data:r,startRow:i,endRow:s,props:o,numInstances:n}){if(t.constant&&this.context.device.type!=="webgpu")return;let{settings:a,state:c,value:l,size:f,startIndices:h}=t,{accessor:u,transform:d}=a,p=c.binaryAccessor||(typeof u=="function"?u:o[u]);typeof p!="function"&&typeof u=="string"&&(p=()=>o[u]),Y(typeof p=="function",`accessor "${u}" is not a function`);let g=t.getVertexOffset(i),{iterable:m,objectInfo:_}=Li(r,i,s);for(let y of m){_.index++;let T=p(y,_);if(d&&(T=d.call(this,T)),h){let x=(_.index<h.length-1?h[_.index+1]:n)-h[_.index];if(T&&Array.isArray(T[0])){let S=g;for(let E of T)t._normalizeValue(E,l,S),S+=f}else T&&T.length>f?l.set(T,g):(t._normalizeValue(T,_.target,0),ga({target:l,source:_.target,start:g,count:x}));g+=x*f}else t._normalizeValue(T,l,g),g+=f}}_validateAttributeUpdaters(){let{settings:t}=this;if(!(t.noAlloc||typeof t.update=="function"))throw new Error(`Attribute ${this.id} missing update or accessor`)}_checkAttributeArray(){let{value:t}=this,r=Math.min(4,this.size);if(t&&t.length>=r){let i=!0;switch(r){case 4:i=i&&Number.isFinite(t[3]);case 3:i=i&&Number.isFinite(t[2]);case 2:i=i&&Number.isFinite(t[1]);case 1:i=i&&Number.isFinite(t[0]);break;default:i=!1}if(!i)throw new Error(`Illegal attribute generated for ${this.id}`)}}};function Zh(e){let{source:t,target:r,start:i=0,size:s,getData:o}=e,n=e.end||r.length,a=t.length,c=n-i;if(a>c){r.set(t.subarray(0,c),i);return}if(r.set(t,i),!o)return;let l=a;for(;l<c;){let f=o(l,t);for(let h=0;h<s;h++)r[i+l]=f[h]||0,l++}}function c0({source:e,target:t,size:r,getData:i,sourceStartIndices:s,targetStartIndices:o}){if(!s||!o)return Zh({source:e,target:t,size:r,getData:i}),t;let n=0,a=0,c=i&&((f,h)=>i(f+a,h)),l=Math.min(s.length,o.length);for(let f=1;f<l;f++){let h=s[f]*r,u=o[f]*r;Zh({source:e.subarray(n,h),target:t,start:a,end:u,size:r,getData:c}),n=h,a=u}return a<t.length&&Zh({source:[],target:t,start:a,size:r,getData:c}),t}function l0(e){let{device:t,settings:r,value:i}=e,s=new Be(t,r);return s.setData({value:i instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:r.normalized}),s}function nc(e){switch(e){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error(`No defined attribute type for size "${e}"`)}}function ac(e){switch(e){case 1:return"float32";case 2:return"float32x2";case 3:return"float32x3";case 4:return"float32x4";default:throw new Error("invalid type size")}}function cc(e){e.push(e.shift())}function f0(e,t){let{doublePrecision:r,settings:i,value:s,size:o}=e,n=r&&s instanceof Float64Array?2:1,a=0,{shaderAttributes:c}=e.settings;if(c)for(let l of Object.values(c))a=Math.max(a,l.vertexOffset??0);return(i.noAlloc?s.length:(t+a)*o)*n}function lc({device:e,source:t,target:r}){return(!r||r.byteLength<t.byteLength)&&(r?.destroy(),r=e.createBuffer({byteLength:t.byteLength,usage:t.usage})),r}function fc({device:e,buffer:t,attribute:r,fromLength:i,toLength:s,fromStartIndices:o,getData:n=a=>a}){let a=r.doublePrecision&&r.value instanceof Float64Array?2:1,c=r.size*a,l=r.byteOffset,f=r.settings.bytesPerElement<4?l/r.settings.bytesPerElement*4:l,h=r.startIndices,u=o&&h,d=r.isConstant;if(!u&&t&&i>=s)return t;let p=r.value instanceof Float64Array?Float32Array:r.value.constructor,g=d?r.value:new p(r.getBuffer().readSyncWebGL(l,s*p.BYTES_PER_ELEMENT).buffer);if(r.settings.normalized&&!d){let T=n;n=(x,S)=>r.normalizeConstant(T(x,S))}let m=d?(T,x)=>n(g,x):(T,x)=>n(g.subarray(T+l,T+l+c),x),_=t?new Float32Array(t.readSyncWebGL(f,i*4).buffer):new Float32Array(0),y=new Float32Array(s);return c0({source:_,target:y,sourceStartIndices:o,targetStartIndices:h,size:c,getData:m}),(!t||t.byteLength<y.byteLength+f)&&(t?.destroy(),t=e.createBuffer({byteLength:y.byteLength+f,usage:35050})),t.write(y,f),t}var Ui=class{constructor({device:t,attribute:r,timeline:i}){this.buffers=[],this.currentLength=0,this.device=t,this.transition=new $t(i),this.attribute=r,this.attributeInTransition=l0(r),this.currentStartIndices=r.startIndices}get inProgress(){return this.transition.inProgress}start(t,r,i=1/0){this.settings=t,this.currentStartIndices=this.attribute.startIndices,this.currentLength=f0(this.attribute,r),this.transition.start({...t,duration:i})}update(){let t=this.transition.update();return t&&this.onUpdate(),t}setBuffer(t){this.attributeInTransition.setData({buffer:t,normalized:this.attribute.settings.normalized,value:this.attributeInTransition.value})}cancel(){this.transition.cancel()}delete(){this.cancel();for(let t of this.buffers)t.destroy();this.buffers.length=0}};var xo=class extends Ui{constructor({device:t,attribute:r,timeline:i}){super({device:t,attribute:r,timeline:i}),this.type="interpolation",this.transform=AR(t,r)}start(t,r){let i=this.currentLength,s=this.currentStartIndices;if(super.start(t,r,t.duration),t.duration<=0){this.transition.cancel();return}let{buffers:o,attribute:n}=this;cc(o),o[0]=fc({device:this.device,buffer:o[0],attribute:n,fromLength:i,toLength:this.currentLength,fromStartIndices:s,getData:t.enter}),o[1]=lc({device:this.device,source:o[0],target:o[1]}),this.setBuffer(o[1]);let{transform:a}=this,c=a.model,l=Math.floor(this.currentLength/n.size);u0(n)&&(l/=2),c.setVertexCount(l),n.isConstant?(c.setAttributes({aFrom:o[0]}),c.setConstantAttributes({aTo:n.value})):c.setAttributes({aFrom:o[0],aTo:n.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:o[1]})}onUpdate(){let{duration:t,easing:r}=this.settings,{time:i}=this.transition,s=i/t;r&&(s=r(s));let{model:o}=this.transform,n={time:s};o.shaderInputs.setProps({interpolation:n}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}},yR=`uniform interpolationUniforms {
1662
+ `;function Jw(t,e){if(e.filter){let r=typeof e.filter=="string"?e.filter:`${t.name}_filterColor_ext`;return Qw(r)}if(e.sampler){let r=typeof e.sampler=="string"?e.sampler:`${t.name}_sampleColor`;return Gw(r)}return""}var eR={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"},Dt=class extends $e{constructor(){super(...arguments),this._colorEncoderState=null}render(e){return"pickingFBO"in e?this._drawPickingBuffer(e):{decodePickingColor:null,stats:super._render(e)}}_drawPickingBuffer({layers:e,layerFilter:r,views:i,viewports:s,onViewportActive:o,pickingFBO:n,deviceRect:{x:a,y:c,width:l,height:f},cullRect:h,effects:u,pass:d="picking",pickZ:p,shaderModuleProps:g,clearColor:m}){this.pickZ=p;let _=this._resetColorEncoder(p),T=[a,c,l,f],y=super._render({target:n,layers:e,layerFilter:r,views:i,viewports:s,onViewportActive:o,cullRect:h,effects:u?.filter(S=>S.useInPicking),pass:d,isPicking:!0,shaderModuleProps:g,clearColor:m??[0,0,0,0],colorMask:15,scissorRect:T});return this._colorEncoderState=null,{decodePickingColor:_&&rR.bind(null,_),stats:y}}shouldDrawLayer(e){let{pickable:r,operation:i}=e.props;return r&&i.includes("draw")||i.includes("terrain")||i.includes("mask")}getShaderModuleProps(e,r,i){return{picking:{isActive:1,isAttribute:this.pickZ},lighting:{enabled:!1}}}getLayerParameters(e,r,i){let s={...e.props.parameters},{pickable:o,operation:n}=e.props;return this._colorEncoderState?o&&n.includes("draw")?(Object.assign(s,eR),s.blend=!0,s.blendColor=tR(this._colorEncoderState,e,i),n.includes("terrain")&&e.state?._hasPickingCover&&(s.blendAlphaSrcFactor="one")):n.includes("terrain")&&(s.blend=!1):s.blend=!1,s}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function tR(t,e,r){let{byLayer:i,byAlpha:s}=t,o,n=i.get(e);return n?(n.viewports.push(r),o=n.a):(o=i.size+1,o<=255?(n={a:o,layer:e,viewports:[r]},i.set(e,n),s[o]=n):(L.warn("Too many pickable layers, only picking the first 255")(),o=0)),[0,0,0,o/255]}function rR(t,e){let r=t.byAlpha[e[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(e)}}var fr={NO_STATE:"Awaiting state",MATCHED:"Matched. State transferred from previous layer",INITIALIZED:"Initialized",AWAITING_GC:"Discarded. Awaiting garbage collection",AWAITING_FINALIZATION:"No longer matched. Awaiting garbage collection",FINALIZED:"Finalized! Awaiting garbage collection"},Ci=Symbol.for("component"),ke=Symbol.for("propTypes"),Ta=Symbol.for("deprecatedProps"),Ft=Symbol.for("asyncPropDefaults"),ut=Symbol.for("asyncPropOriginal"),Ye=Symbol.for("asyncPropResolved");function hr(t,e=()=>!0){return Array.isArray(t)?c_(t,e,[]):e(t)?[t]:[]}function c_(t,e,r){let i=-1;for(;++i<t.length;){let s=t[i];Array.isArray(s)?c_(s,e,r):e(s)&&r.push(s)}return r}function ba({target:t,source:e,start:r=0,count:i=1}){let s=e.length,o=i*s,n=0;for(let a=r;n<s;n++)t[a++]=e[n];for(;n<o;)n<o-n?(t.copyWithin(r+n,r,r+n),n*=2):(t.copyWithin(r+n,r,r+o-n),n=o);return t}Wi();var ro=class{constructor(e,r,i){this._loadCount=0,this._subscribers=new Set,this.id=e,this.context=i,this.setData(r)}subscribe(e){this._subscribers.add(e)}unsubscribe(e){this._subscribers.delete(e)}inUse(){return this._subscribers.size>0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(e,r){if(e===this._data&&!r)return;this._data=e;let i=++this._loadCount,s=e;typeof e=="string"&&(s=ir(e)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(o=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=o)}).catch(o=>{this._loadCount===i&&(this.isLoaded=!0,this._error=o||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e);for(let o of this._subscribers)o.onChange(this.getData())}};var io=class{constructor(e){this.protocol=e.protocol||"resource://",this._context={device:e.device,gl:e.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(e){return e.startsWith(this.protocol)?!0:e in this._resources}add({resourceId:e,data:r,forceUpdate:i=!1,persistent:s=!0}){let o=this._resources[e];o?o.setData(r,i):(o=new ro(e,r,this._context),this._resources[e]=o),o.persistent=s}remove(e){let r=this._resources[e];r&&(r.delete(),delete this._resources[e])}unsubscribe({consumerId:e}){let r=this._consumers[e];if(r){for(let i in r){let s=r[i],o=this._resources[s.resourceId];o&&o.unsubscribe(s)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:r,consumerId:i,requestId:s="default"}){let{_resources:o,protocol:n}=this;e.startsWith(n)&&(e=e.replace(n,""),o[e]||this.add({resourceId:e,data:null,persistent:!1}));let a=o[e];if(this._track(i,s,a,r),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let e in this._resources)this._resources[e].delete()}_track(e,r,i,s){let o=this._consumers,n=o[e]=o[e]||{},a=n[r],c=a&&a.resourceId&&this._resources[a.resourceId];c&&(c.unsubscribe(a),this.prune()),i&&(a?(a.onChange=s,a.resourceId=i.id):a={onChange:s,resourceId:i.id},n[r]=a,i.subscribe(a))}_prune(){this._pruneRequest=null;for(let e of Object.keys(this._resources)){let r=this._resources[e];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[e])}}};var iR="layerManager.setLayers",sR="layerManager.activateViewport",Ur=class{constructor(e,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{Q(sR,this,a),a&&(this.context.viewport=a)};let{deck:i,stats:s,viewport:o,timeline:n}=r||{};this.layers=[],this.resourceManager=new io({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:e?.gl,deck:i,shaderAssembler:pa(e?.info?.shadingLanguage||"glsl"),defaultShaderModules:[bh],renderPass:void 0,stats:s||new Oe({id:"deck.gl"}),viewport:o||new Se({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:n||new Ar,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let e of this.layers)this._finalizeLayer(e)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);for(let i of this.layers){let s=i.getNeedsRedraw(e);r=r||s}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(e){this._needsRedraw=this._needsRedraw||e}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e}getLayers({layerIds:e}={}){return e?this.layers.filter(r=>e.find(i=>r.id.indexOf(i)===0)):this.layers}setProps(e){"debug"in e&&(this._debug=e.debug),"userData"in e&&(this.context.userData=e.userData),"layers"in e&&(this._nextLayers=e.layers),"onError"in e&&(this.context.onError=e.onError)}setLayers(e,r){Q(iR,this,r,e),this._lastRenderedLayers=e;let i=hr(e,Boolean);for(let s of i)s.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){let e=this.needsUpdate();e&&(this.setNeedsRedraw(`updating layers: ${e}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,e)),this._nextLayers=null}addDefaultShaderModule(e){let{defaultShaderModules:r}=this.context;r.find(i=>i.name===e.name)||(r.push(e),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(e){let{defaultShaderModules:r}=this.context,i=r.findIndex(s=>s.name===e.name);i>=0&&(r.splice(i,1),this._defaultShaderModulesChanged=!0)}_handleError(e,r,i){i.raiseError(r,`${e} of ${i}`)}_updateLayers(e,r){let i={};for(let n of e)i[n.id]?L.warn(`Multiple old layers with same id ${n.id}`)():i[n.id]=n;if(this._defaultShaderModulesChanged){for(let n of e)n.setNeedsUpdate(),n.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let s=[];this._updateSublayersRecursively(r,i,s),this._finalizeOldLayers(i);let o=!1;for(let n of s)if(n.hasUniformTransition()){o=`Uniform transition in ${n}`;break}this._needsUpdate=o,this.layers=s}_updateSublayersRecursively(e,r,i){for(let s of e){s.context=this.context;let o=r[s.id];o===null&&L.warn(`Multiple new layers with same id ${s.id}`)(),r[s.id]=null;let n=null;try{this._debug&&o!==s&&s.validateProps(),o?(this._transferLayerState(o,s),this._updateLayer(s)):this._initializeLayer(s),i.push(s),n=s.isComposite?s.getSubLayers():null}catch(a){this._handleError("matching",a,s)}n&&this._updateSublayersRecursively(n,r,i)}}_finalizeOldLayers(e){for(let r in e){let i=e[r];i&&this._finalizeLayer(i)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=fr.INITIALIZED}catch(r){this._handleError("initialization",r,e)}}_transferLayerState(e,r){r._transferState(e),r.lifecycle=fr.MATCHED,r!==e&&(e.lifecycle=fr.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(r){this._handleError("update",r,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle=fr.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=fr.FINALIZED}catch(r){this._handleError("finalization",r,e)}}};function K(t,e,r){if(t===e)return!0;if(!r||!t||!e)return!1;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let i=0;i<t.length;i++)if(!K(t[i],e[i],r-1))return!1;return!0}if(Array.isArray(e))return!1;if(typeof t=="object"&&typeof e=="object"){let i=Object.keys(t),s=Object.keys(e);if(i.length!==s.length)return!1;for(let o of i)if(!e.hasOwnProperty(o)||!K(t[o],e[o],r-1))return!1;return!0}return!1}var so=class{constructor(e){this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=e.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=e.eventManager,this._eventCallbacks={onViewStateChange:e.onViewStateChange,onInteractionStateChange:e.onInteractionStateChange},this._pickPosition=e.pickPosition,Object.seal(this),this.setProps(e)}finalize(){for(let e in this.controllers){let r=this.controllers[e];r&&r.finalize()}this.controllers={}}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e,this._needsRedraw=this._needsRedraw||e}updateViewStates(){for(let e in this.controllers){let r=this.controllers[e];r&&r.updateTransition()}}getViewports(e){return e?this._viewports.filter(r=>r.containsPixel(e)):this._viewports}getViews(){let e={};return this.views.forEach(r=>{e[r.id]=r}),e}getView(e){return this.views.find(r=>r.id===e)}getViewState(e){let r=typeof e=="string"?this.getView(e):e,i=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(i):i}getViewport(e){return this._viewportMap[e]}unproject(e,r){let i=this.getViewports(),s={x:e[0],y:e[1]};for(let o=i.length-1;o>=0;--o){let n=i[o];if(n.containsPixel(s)){let a=e.slice();return a[0]-=n.x,a[1]-=n.y,n.unproject(a,r)}}return null}setProps(e){e.views&&this._setViews(e.views),e.viewState&&this._setViewState(e.viewState),("width"in e||"height"in e)&&this._setSize(e.width,e.height),"pickPosition"in e&&(this._pickPosition=e.pickPosition),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(e,r){(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.setNeedsUpdate("Size changed"))}_setViews(e){e=hr(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?(!K(e,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=e):L.warn("missing `viewState` or `initialViewState`")()}_createController(e,r){let i=r.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:o=>this.getView(e.id)?.makeViewport({viewState:o,width:this.width,height:this.height}),pickPosition:this._pickPosition})}_updateController(e,r,i,s){let o=e.controller;if(o&&i){let n={...r,...o,id:e.id,x:i.x,y:i.y,width:i.width,height:i.height};return(!s||s.constructor!==o.type)&&(s=this._createController(e,n)),s&&s.setProps(n),s}return null}_rebuildViewports(){let{views:e}=this,r=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let s=e.length;s--;){let o=e[s],n=this.getViewState(o),a=o.makeViewport({viewState:n,width:this.width,height:this.height}),c=r[o.id],l=Boolean(o.controller);l&&!c&&(i=!0),(i||!l)&&c&&(c.finalize(),c=null),this.controllers[o.id]=this._updateController(o,n,a,c),a&&this._viewports.unshift(a)}for(let s in r){let o=r[s];o&&!this.controllers[s]&&o.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(e=>{e.id&&(this._viewportMap[e.id]=this._viewportMap[e.id]||e)})}_diffViews(e,r){return e.length!==r.length?!0:e.some((i,s)=>!e[s].equals(r[s]))}};var oR=/^(?:\d+\.?\d*|\.\d+)$/;function Bt(t){switch(typeof t){case"number":if(!Number.isFinite(t))throw new Error(`Could not parse position string ${t}`);return{type:"literal",value:t};case"string":try{let e=nR(t);return new Hh(e).parseExpression()}catch(e){let r=e instanceof Error?e.message:String(e);throw new Error(`Could not parse position string ${t}: ${r}`)}default:throw new Error(`Could not parse position string ${t}`)}}function jh(t,e){switch(t.type){case"literal":return t.value;case"percentage":return Math.round(t.value*e);case"binary":let r=jh(t.left,e),i=jh(t.right,e);return t.operator==="+"?r+i:r-i;default:throw new Error("Unknown layout expression type")}}function Lt(t,e){return jh(t,e)}function nR(t){let e=[],r=0;for(;r<t.length;){let i=t[r];if(/\s/.test(i)){r++;continue}if(i==="+"||i==="-"||i==="("||i===")"||i==="%"){e.push({type:"symbol",value:i}),r++;continue}if(l_(i)||i==="."){let s=r,o=i===".";for(r++;r<t.length;){let a=t[r];if(l_(a)){r++;continue}if(a==="."&&!o){o=!0,r++;continue}break}let n=t.slice(s,r);if(!oR.test(n))throw new Error("Invalid number token");e.push({type:"number",value:parseFloat(n)});continue}if(f_(i)){let s=r;for(;r<t.length&&f_(t[r]);)r++;let o=t.slice(s,r).toLowerCase();e.push({type:"word",value:o});continue}throw new Error("Invalid token in position string")}return e}var Hh=class{constructor(e){this.index=0,this.tokens=e}parseExpression(){let e=this.parseBinaryExpression();if(this.index<this.tokens.length)throw new Error("Unexpected token at end of expression");return e}parseBinaryExpression(){let e=this.parseFactor(),r=this.peek();for(;aR(r);){this.index++;let i=this.parseFactor();e={type:"binary",operator:r.value,left:e,right:i},r=this.peek()}return e}parseFactor(){let e=this.peek();if(!e)throw new Error("Unexpected end of expression");if(e.type==="symbol"&&e.value==="+")return this.index++,this.parseFactor();if(e.type==="symbol"&&e.value==="-"){this.index++;let r=this.parseFactor();return{type:"binary",operator:"-",left:{type:"literal",value:0},right:r}}if(e.type==="symbol"&&e.value==="("){this.index++;let r=this.parseBinaryExpression();if(!this.consumeSymbol(")"))throw new Error("Missing closing parenthesis");return r}if(e.type==="word"&&e.value==="calc"){if(this.index++,!this.consumeSymbol("("))throw new Error("Missing opening parenthesis after calc");let r=this.parseBinaryExpression();if(!this.consumeSymbol(")"))throw new Error("Missing closing parenthesis");return r}if(e.type==="number"){this.index++;let r=e.value,i=this.peek();return i&&i.type==="symbol"&&i.value==="%"?(this.index++,{type:"percentage",value:r/100}):i&&i.type==="word"&&i.value==="px"?(this.index++,{type:"literal",value:r}):{type:"literal",value:r}}throw new Error("Unexpected token in expression")}consumeSymbol(e){let r=this.peek();return r&&r.type==="symbol"&&r.value===e?(this.index++,!0):!1}peek(){return this.tokens[this.index]||null}};function l_(t){return t>="0"&&t<="9"}function f_(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"}function aR(t){return Boolean(t&&t.type==="symbol"&&(t.value==="+"||t.value==="-"))}function h_(t,e){let r={...t};for(let i in e)i!=="id"&&(Array.isArray(r[i])&&Array.isArray(e[i])?r[i]=cR(r[i],e[i]):r[i]=e[i]);return r}function cR(t,e){t=t.slice();for(let r=0;r<e.length;r++){let i=e[r];Number.isFinite(i)&&(t[r]=i)}return t}var ye=class{constructor(e){let{id:r,x:i=0,y:s=0,width:o="100%",height:n="100%",padding:a=null}=e;this.id=r||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=Bt(i),this._y=Bt(s),this._width=Bt(o),this._height=Bt(n),this._padding=a&&{left:Bt(a.left||0),right:Bt(a.right||0),top:Bt(a.top||0),bottom:Bt(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e?!0:this.constructor===e.constructor&&K(this.props,e.props,2)}clone(e){let r=this.constructor;return new r({...this.props,...e})}makeViewport({width:e,height:r,viewState:i}){i=this.filterViewState(i);let s=this.getDimensions({width:e,height:r});if(!s.height||!s.width)return null;let o=this.getViewportType(i);return new o({...i,...this.props,...s})}getViewStateId(){let{viewState:e}=this.props;return typeof e=="string"?e:e?.id||this.id}filterViewState(e){return this.props.viewState&&typeof this.props.viewState=="object"?this.props.viewState.id?h_(e,this.props.viewState):this.props.viewState:e}getDimensions({width:e,height:r}){let i={x:Lt(this._x,e),y:Lt(this._y,r),width:Lt(this._width,e),height:Lt(this._height,r)};return this._padding&&(i.padding={left:Lt(this._padding.left,e),top:Lt(this._padding.top,r),right:Lt(this._padding.right,e),bottom:Lt(this._padding.bottom,r)}),i}get controller(){let e=this.props.controller;return e?e===!0?{type:this.ControllerType}:typeof e=="function"?{type:e}:{type:this.ControllerType,...e}:null}};var Ze=class{constructor(e){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=e}get inProgress(){return this._inProgress}start(e){this.cancel(),this.settings=e,this._inProgress=!0,this.settings.onStart?.(this)}end(){this._inProgress&&(this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,this.settings.onEnd?.(this))}cancel(){this._inProgress&&(this.settings.onInterrupt?.(this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1)}update(){if(!this._inProgress)return!1;if(this._handle===null){let{_timeline:e,settings:r}=this;this._handle=e.addChannel({delay:e.getTime(),duration:r.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),this.settings.onUpdate?.(this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};var u_=()=>{},oo={BREAK:1,SNAP_TO_END:2,IGNORE:3},lR=t=>t,fR=oo.BREAK,no=class{constructor(e){this._onTransitionUpdate=r=>{let{time:i,settings:{interpolator:s,startProps:o,endProps:n,duration:a,easing:c}}=r,l=c(i/a),f=s.interpolateProps(o,n,l);this.propsInTransition=this.getControllerState({...this.props,...f}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=e.getControllerState,this.propsInTransition=null,this.transition=new Ze(e.timeline),this.onViewStateChange=e.onViewStateChange||u_,this.onStateChange=e.onStateChange||u_}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(e){let r=!1,i=this.props;if(this.props=e,!i||this._shouldIgnoreViewportChange(i,e))return!1;if(this._isTransitionEnabled(e)){let s=i;if(this.transition.inProgress){let{interruption:o,endProps:n}=this.transition.settings;s={...i,...o===oo.SNAP_TO_END?n:this.propsInTransition||i}}this._triggerTransition(s,e),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(e){let{transitionDuration:r,transitionInterpolator:i}=e;return(r>0||r==="auto")&&Boolean(i)}_isUpdateDueToCurrentTransition(e){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(e,this.propsInTransition):!1}_shouldIgnoreViewportChange(e,r){return this.transition.inProgress?this.transition.settings.interruption===oo.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(e,r):!0}_triggerTransition(e,r){let i=this.getControllerState(e),s=this.getControllerState(r).shortestPathFrom(i),o=r.transitionInterpolator,n=o.getDuration?o.getDuration(e,r):r.transitionDuration;if(n===0)return;let a=o.initializeProps(e,s);this.propsInTransition={};let c={duration:n,easing:r.transitionEasing||lR,interpolator:o,interruption:r.transitionInterruption||fR,startProps:a.start,endProps:a.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(c),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(e){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),e?.(r)}}};function Y(t,e){if(!t)throw new Error(e||"deck.gl: assertion failed.")}var Ut=class{constructor(e){let{compare:r,extract:i,required:s}=e;this._propsToCompare=r,this._propsToExtract=i||r,this._requiredProps=s}arePropsEqual(e,r){for(let i of this._propsToCompare)if(!(i in e)||!(i in r)||!Re(e[i],r[i]))return!1;return!0}initializeProps(e,r){let i={},s={};for(let o of this._propsToExtract)(o in e||o in r)&&(i[o]=e[o],s[o]=r[o]);return this._checkRequiredProps(i),this._checkRequiredProps(s),{start:i,end:s}}getDuration(e,r){return r.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(r=>{let i=e[r];Y(Number.isFinite(i)||Array.isArray(i),`${r} is required for transition`)})}};var xa=Math.PI/180,d_=180/Math.PI,Aa=6370972,kt=256;function hR(){let t=kt/Aa,e=Math.PI/180*kt;return{unitsPerMeter:[t,t,t],unitsPerMeter2:[0,0,0],metersPerUnit:[1/t,1/t,1/t],unitsPerDegree:[e,e,t],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/e,1/e,1/t]}}var Sa=class extends Se{constructor(e={}){let{longitude:r=0,zoom:i=0,nearZMultiplier:s=.5,farZMultiplier:o=1,resolution:n=10}=e,{latitude:a=0,height:c,altitude:l=1.5,fovy:f}=e;a=Math.max(Math.min(a,me),-me),c=c||1,f?l=Ot(f):f=It(l);let h=Math.pow(2,i-dt(a)),u=e.nearZ??s,d=e.farZ??(l+kt*2*h/c)*o,p=new z().lookAt({eye:[0,-l,0],up:[0,0,1]});p.rotateX(a*xa),p.rotateZ(-r*xa),p.scale(h/c),super({...e,height:c,viewMatrix:p,longitude:r,latitude:a,zoom:i,distanceScales:hR(),fovy:f,focalDistance:l,near:u,far:d}),this.scale=h,this.latitude=a,this.longitude=r,this.fovy=f,this.resolution=n}get projectionMode(){return oe.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(e={}){let r={targetZ:e.z||0},i=this.unproject([0,this.height/2],r),s=this.unproject([this.width/2,0],r),o=this.unproject([this.width,this.height/2],r),n=this.unproject([this.width/2,this.height],r);return o[0]<this.longitude&&(o[0]+=360),i[0]>this.longitude&&(i[0]-=360),[Math.min(i[0],o[0],s[0],n[0]),Math.min(i[1],o[1],s[1],n[1]),Math.max(i[0],o[0],s[0],n[0]),Math.max(i[1],o[1],s[1],n[1])]}unproject(e,{topLeft:r=!0,targetZ:i}={}){let[s,o,n]=e,a=r?o:this.height-o,{pixelUnprojectionMatrix:c}=this,l;if(Number.isFinite(n))l=$h(c,[s,a,n,1]);else{let d=$h(c,[s,a,-1,1]),p=$h(c,[s,a,1,1]),g=((i||0)/Aa+1)*kt,m=pe.sqrLen(pe.sub([],d,p)),_=pe.sqrLen(d),T=pe.sqrLen(p),x=4*((4*_*T-(m-_-T)**2)/16)/m,S=Math.sqrt(_-x),A=Math.sqrt(Math.max(0,g*g-x)),w=(S-A)/Math.sqrt(m);l=pe.lerp([],d,p,w)}let[f,h,u]=this.unprojectPosition(l);return Number.isFinite(n)?[f,h,u]:Number.isFinite(i)?[f,h,i]:[f,h]}projectPosition(e){let[r,i,s=0]=e,o=r*xa,n=i*xa,a=Math.cos(n),c=(s/Aa+1)*kt;return[Math.sin(o)*a*c,-Math.cos(o)*a*c,Math.sin(n)*c]}unprojectPosition(e){let[r,i,s]=e,o=pe.len(e),n=Math.asin(s/o),c=Math.atan2(r,-i)*d_,l=n*d_,f=(o/kt-1)*Aa;return[c,l,f]}projectFlat(e){return e}unprojectFlat(e){return e}panByPosition([e,r,i],s,o){let a=.25/Math.pow(2,this.zoom-dt(this.latitude)),c=e+a*(o[0]-s[0]),l=r-a*(o[1]-s[1]);l=Math.max(Math.min(l,me),-me);let f={longitude:c,latitude:l,zoom:i-dt(r)};return f.zoom+=dt(f.latitude),f}};Sa.displayName="GlobeViewport";var Ii=Sa;function dt(t){let e=Math.PI*Math.cos(t*Math.PI/180);return Math.log2(e)}function $h(t,e){let r=xe.transformMat4([],e,t);return xe.scale(r,r,1/r[3]),r}var uR=["longitude","latitude","zoom","bearing","pitch"],dR=["longitude","latitude","zoom"],ce=class extends Ut{constructor(e={}){let r=Array.isArray(e)?e:e.transitionProps,i=Array.isArray(e)?{}:e;i.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:uR,required:dR},super(i.transitionProps),this.opts=i}initializeProps(e,r){let i=super.initializeProps(e,r),{makeViewport:s,around:o}=this.opts;if(s&&o)if(s(e)instanceof Ii)L.warn("around not supported in GlobeView")();else{let a=s(e),c=s(r),l=a.unproject(o);i.start.around=o,Object.assign(i.end,{around:c.project(l),aroundPosition:l,width:r.width,height:r.height})}return i}interpolateProps(e,r,i){let s={};for(let o of this._propsToExtract)s[o]=vt(e[o]||0,r[o]||0,i);if(r.aroundPosition&&this.opts.makeViewport){let o=this.opts.makeViewport({...r,...s});Object.assign(s,o.panByPosition(r.aroundPosition,vt(e.around,r.around,i)))}return s}};var Vt={transitionDuration:0},pR=300,Ea=t=>1-(1-t)*(1-t),Oi={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],KEYBOARD:["keydown"]},kr={},Te=class{constructor(e){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.keyboard=!0,this.transitionManager=new no({...e,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=e.eventManager,this.onViewStateChange=e.onViewStateChange||(()=>{}),this.onStateChange=e.onStateChange||(()=>{}),this.makeViewport=e.makeViewport,this.pickPosition=e.pickPosition}set events(e){this.toggleEvents(this._customEvents,!1),this.toggleEvents(e,!0),this._customEvents=e,this.props&&this.setProps(this.props)}finalize(){for(let e in this._events)this._events[e]&&this.eventManager?.off(e,this.handleEvent);this.transitionManager.finalize()}handleEvent(e){this._controllerState=void 0;let r=this._eventStartBlocked;switch(e.type){case"panstart":return r?!1:this._onPanStart(e);case"panmove":return this._onPan(e);case"panend":return this._onPanEnd(e);case"pinchstart":return r?!1:this._onPinchStart(e);case"pinchmove":return this._onPinch(e);case"pinchend":return this._onPinchEnd(e);case"multipanstart":return r?!1:this._onMultiPanStart(e);case"multipanmove":return this._onMultiPan(e);case"multipanend":return this._onMultiPanEnd(e);case"dblclick":return this._onDoubleClick(e);case"wheel":return this._onWheel(e);case"keydown":return this._onKeyDown(e);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(e){let{x:r,y:i}=this.props,{offsetCenter:s}=e;return[s.x-r,s.y-i]}isPointInBounds(e,r){let{width:i,height:s}=this.props;if(r&&r.handled)return!1;let o=e[0]>=0&&e[0]<=i&&e[1]>=0&&e[1]<=s;return o&&r&&r.stopPropagation(),o}isFunctionKeyPressed(e){let{srcEvent:r}=e;return Boolean(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(e){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},e);this._eventStartBlocked=r}setProps(e){e.dragMode&&(this.dragMode=e.dragMode);let r=this.props;this.props=e,"transitionInterpolator"in e||(e.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(e);let{inertia:i}=e;this.inertia=Number.isFinite(i)?i:i===!0?pR:0;let{scrollZoom:s=!0,dragPan:o=!0,dragRotate:n=!0,doubleClickZoom:a=!0,touchZoom:c=!0,touchRotate:l=!1,keyboard:f=!0}=e,h=Boolean(this.onViewStateChange);if(this.toggleEvents(Oi.WHEEL,h&&s),this.toggleEvents(Oi.PAN,h),this.toggleEvents(Oi.PINCH,h&&(c||l)),this.toggleEvents(Oi.MULTI_PAN,h&&l),this.toggleEvents(Oi.DOUBLE_CLICK,h&&a),this.toggleEvents(Oi.KEYBOARD,h&&f),this.scrollZoom=s,this.dragPan=o,this.dragRotate=n,this.doubleClickZoom=a,this.touchZoom=c,this.touchRotate=l,this.keyboard=f,(!r||r.height!==e.height||r.width!==e.width||r.maxBounds!==e.maxBounds)&&e.maxBounds){let d=new this.ControllerState({...e,makeViewport:this.makeViewport}),p=d.getViewportProps();Object.keys(p).some(m=>!K(p[m],e[m],1))&&this.updateViewport(d)}}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(e,r){this.eventManager&&e.forEach(i=>{this._events[i]!==r&&(this._events[i]=r,r?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(e,r=null,i={}){let s={...e.getViewportProps(),...r},o=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(i),o){let n=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:n,viewId:this.props.id})}}_onTransition(e){this.onViewStateChange({...e,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(e){Object.assign(this._interactionState,e),this.onStateChange(this._interactionState)}_onPanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.isFunctionKeyPressed(e)||e.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(i=!i);let s=this.controllerState[i?"panStart":"rotateStart"]({pos:r});return this._panMove=i,this.updateViewport(s,Vt,{isDragging:!0}),!0}_onPan(e){return this.isDragging()?this._panMove?this._onPanMove(e):this._onPanRotate(e):!1}_onPanEnd(e){return this.isDragging()?this._panMove?this._onPanMoveEnd(e):this._onPanRotateEnd(e):!1}_onPanMove(e){if(!this.dragPan)return!1;let r=this.getCenter(e),i=this.controllerState.pan({pos:r});return this.updateViewport(i,Vt,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){let{inertia:r}=this;if(this.dragPan&&r&&e.velocity){let i=this.getCenter(e),s=[i[0]+e.velocityX*r/2,i[1]+e.velocityY*r/2],o=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:Ea},{isDragging:!1,isPanning:!0})}else{let i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(e){if(!this.dragRotate)return!1;let r=this.getCenter(e),i=this.controllerState.rotate({pos:r});return this.updateViewport(i,Vt,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){let{inertia:r}=this;if(this.dragRotate&&r&&e.velocity){let i=this.getCenter(e),s=[i[0]+e.velocityX*r/2,i[1]+e.velocityY*r/2],o=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:Ea},{isDragging:!1,isRotating:!0})}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(e){if(!this.scrollZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;e.srcEvent.preventDefault();let{speed:i=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:o}=e,n=2/(1+Math.exp(-Math.abs(o*i)));o<0&&n!==0&&(n=1/n);let a=s?{...this._getTransitionProps({around:r}),transitionDuration:250}:Vt,c=this.controllerState.zoom({pos:r,scale:n});return this.updateViewport(c,a,{isZooming:!0,isPanning:!0}),s||this._setInteractionState({isZooming:!1,isPanning:!1}),!0}_onMultiPanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.controllerState.rotateStart({pos:r});return this.updateViewport(i,Vt,{isDragging:!0}),!0}_onMultiPan(e){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(e);r[0]-=e.deltaX;let i=this.controllerState.rotate({pos:r});return this.updateViewport(i,Vt,{isDragging:!0,isRotating:!0}),!0}_onMultiPanEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&e.velocityY){let i=this.getCenter(e),s=[i[0],i[1]+=e.velocityY*r/2],o=this.controllerState.rotate({pos:s});this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:Ea},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return kr._startPinchRotation=e.rotation,kr._lastPinchEvent=e,this.updateViewport(i,Vt,{isDragging:!0}),!0}_onPinch(e){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:i}=e,s=this.getCenter(e);r=r.zoom({pos:s,scale:i})}if(this.touchRotate){let{rotation:i}=e;r=r.rotate({deltaAngleX:kr._startPinchRotation-i})}return this.updateViewport(r,Vt,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),kr._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:i}=kr;if(this.touchZoom&&r&&i&&e.scale!==i.scale){let s=this.getCenter(e),o=this.controllerState.rotateEnd(),n=Math.log2(e.scale),a=(n-Math.log2(i.scale))/(e.deltaTime-i.deltaTime),c=Math.pow(2,n+a*r/2);o=o.zoom({pos:s,scale:c}).zoomEnd(),this.updateViewport(o,{...this._getTransitionProps({around:s}),transitionDuration:r,transitionEasing:Ea},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return kr._startPinchRotation=null,kr._lastPinchEvent=null,!0}_onDoubleClick(e){if(!this.doubleClickZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.isFunctionKeyPressed(e),s=this.controllerState.zoom({pos:r,scale:i?.5:2});return this.updateViewport(s,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(e){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(e),{zoomSpeed:i,moveSpeed:s,rotateSpeedX:o,rotateSpeedY:n}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this,c,l={};switch(e.srcEvent.code){case"Minus":c=r?a.zoomOut(i).zoomOut(i):a.zoomOut(i),l.isZooming=!0;break;case"Equal":c=r?a.zoomIn(i).zoomIn(i):a.zoomIn(i),l.isZooming=!0;break;case"ArrowLeft":r?(c=a.rotateLeft(o),l.isRotating=!0):(c=a.moveLeft(s),l.isPanning=!0);break;case"ArrowRight":r?(c=a.rotateRight(o),l.isRotating=!0):(c=a.moveRight(s),l.isPanning=!0);break;case"ArrowUp":r?(c=a.rotateUp(n),l.isRotating=!0):(c=a.moveUp(s),l.isPanning=!0);break;case"ArrowDown":r?(c=a.rotateDown(n),l.isRotating=!0):(c=a.moveDown(s),l.isPanning=!0);break;default:return!1}return this.updateViewport(c,this._getTransitionProps(),l),!0}_getTransitionProps(e){let{transition:r}=this;return!r||!r.transitionInterpolator?Vt:e?{...r,transitionInterpolator:new ce({...e,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var Ke=class{constructor(e,r,i){this.makeViewport=i,this._viewportProps=this.applyConstraints(e),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var p_=5,gR=1.2,g_=512,m_=[[-1/0,-90],[1/0,90]];function wa([t,e]){if(Math.abs(e)>90&&(e=Math.sign(e)*90),Number.isFinite(t)){let[i,s]=Ae([t,e]);return[i,B(s,0,g_)]}let[,r]=Ae([0,e]);return[t,B(r,0,g_)]}var ao=class extends Ke{constructor(e){let{width:r,height:i,latitude:s,longitude:o,zoom:n,bearing:a=0,pitch:c=0,altitude:l=1.5,position:f=[0,0,0],maxZoom:h=20,minZoom:u=0,maxPitch:d=60,minPitch:p=0,startPanLngLat:g,startZoomLngLat:m,startRotatePos:_,startRotateLngLat:T,startBearing:y,startPitch:x,startZoom:S,normalize:A=!0}=e;Y(Number.isFinite(o)),Y(Number.isFinite(s)),Y(Number.isFinite(n));let w=e.maxBounds||(A?m_:null);super({width:r,height:i,latitude:s,longitude:o,zoom:n,bearing:a,pitch:c,altitude:l,maxZoom:h,minZoom:u,maxPitch:d,minPitch:p,normalize:A,position:f,maxBounds:w},{startPanLngLat:g,startZoomLngLat:m,startRotatePos:_,startRotateLngLat:T,startBearing:y,startPitch:x,startZoom:S},e.makeViewport),this.getAltitude=e.getAltitude}panStart({pos:e}){return this._getUpdatedState({startPanLngLat:this._unproject(e)})}pan({pos:e,startPos:r}){let i=this.getState().startPanLngLat||this._unproject(r);if(!i)return this;let o=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(o)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:e}){let r=this.getAltitude?.(e);return this._getUpdatedState({startRotatePos:e,startRotateLngLat:r!==void 0?this._unproject3D(e,r):void 0,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startRotateLngLat:o,startBearing:n,startPitch:a}=this.getState();if(!s||n===void 0||a===void 0)return this;let c;if(e?c=this._getNewRotation(e,s,a,n):c={bearing:n+r,pitch:a+i},o){let l=this.makeViewport({...this.getViewportProps(),...c}),f="panByPosition3D"in l?"panByPosition3D":"panByPosition";return this._getUpdatedState({...c,...l[f](o,s)})}return this._getUpdatedState(c)}rotateEnd(){return this._getUpdatedState({startRotatePos:null,startRotateLngLat:null,startBearing:null,startPitch:null})}zoomStart({pos:e}){return this._getUpdatedState({startZoomLngLat:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:r,scale:i}){let{startZoom:s,startZoomLngLat:o}=this.getState();if(o||(s=this.getViewportProps().zoom,o=this._unproject(r)||this._unproject(e)),!o)return this;let n=this._constrainZoom(s+Math.log2(i)),a=this.makeViewport({...this.getViewportProps(),zoom:n});return this._getUpdatedState({zoom:n,...a.panByPosition(o,e)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(e=2){return this._zoomFromCenter(e)}zoomOut(e=2){return this._zoomFromCenter(1/e)}moveLeft(e=100){return this._panFromCenter([e,0])}moveRight(e=100){return this._panFromCenter([-e,0])}moveUp(e=100){return this._panFromCenter([0,e])}moveDown(e=100){return this._panFromCenter([0,-e])}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}shortestPathFrom(e){let r=e.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:o}=i;return Math.abs(s-r.bearing)>180&&(i.bearing=s<0?s+360:s-360),Math.abs(o-r.longitude)>180&&(i.longitude=o<0?o+360:o-360),i}applyConstraints(e){let{maxPitch:r,minPitch:i,pitch:s,longitude:o,bearing:n,normalize:a,maxBounds:c}=e;if(a&&((o<-180||o>180)&&(e.longitude=ht(o+180,360)-180),(n<-180||n>180)&&(e.bearing=ht(n+180,360)-180)),e.pitch=B(s,i,r),e.zoom=this._constrainZoom(e.zoom,e),c){let l=wa(c[0]),f=wa(c[1]),h=2**e.zoom,u=e.width/2/h,d=e.height/2/h,[p,g]=_e([l[0]+u,l[1]+d]),[m,_]=_e([f[0]-u,f[1]-d]);e.longitude=B(e.longitude,p,m),e.latitude=B(e.latitude,g,_)}return e}_constrainZoom(e,r){r||(r=this.getViewportProps());let{maxZoom:i,maxBounds:s}=r,o=s!==null&&r.width>0&&r.height>0,{minZoom:n}=r;if(o){let a=wa(s[0]),c=wa(s[1]),l=c[0]-a[0],f=c[1]-a[1];Number.isFinite(l)&&l>0&&(n=Math.max(n,Math.log2(r.width/l))),Number.isFinite(f)&&f>0&&(n=Math.max(n,Math.log2(r.height/f))),n>i&&(n=i)}return B(e,n,i)}_zoomFromCenter(e){let{width:r,height:i}=this.getViewportProps();return this.zoom({pos:[r/2,i/2],scale:e})}_panFromCenter(e){let{width:r,height:i}=this.getViewportProps();return this.pan({startPos:[r/2,i/2],pos:[r/2+e[0],i/2+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}_unproject(e){let r=this.makeViewport(this.getViewportProps());return e&&r.unproject(e)}_unproject3D(e,r){return this.makeViewport(this.getViewportProps()).unproject(e,{targetZ:r})}_getNewRotation(e,r,i,s){let o=e[0]-r[0],n=e[1]-r[1],a=e[1],c=r[1],{width:l,height:f}=this.getViewportProps(),h=o/l,u=0;n>0?Math.abs(f-c)>p_&&(u=n/(c-f)*gR):n<0&&c>p_&&(u=1-a/c),u=B(u,-1,1);let{minPitch:d,maxPitch:p}=this.getViewportProps(),g=s+180*h,m=i;return u>0?m=i+u*(p-i):u<0&&(m=i-u*(d-i)),{pitch:m,bearing:g}}},zt=class extends Te{constructor(){super(...arguments),this.ControllerState=ao,this.transition={transitionDuration:300,transitionInterpolator:new ce({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan",this.rotationPivot="center",this._getAltitude=e=>{if(this.rotationPivot==="2d")return 0;if(this.rotationPivot==="3d"&&this.pickPosition){let{x:r,y:i}=this.props,s=this.pickPosition(r+e[0],i+e[1]);if(s&&s.coordinate&&s.coordinate.length>=3)return s.coordinate[2]}}}setProps(e){"rotationPivot"in e&&(this.rotationPivot=e.rotationPivot||"center"),e.getAltitude=this._getAltitude,e.position=e.position||[0,0,0],e.maxBounds=e.maxBounds||(e.normalize===!1?null:m_),super.setProps(e)}updateViewport(e,r=null,i={}){let s=e.getState();i.isDragging&&s.startRotateLngLat?i={...i,rotationPivotPosition:s.startRotateLngLat}:i.isDragging===!1&&(i={...i,rotationPivotPosition:void 0}),super.updateViewport(e,r,i)}};var Ra=class extends ye{constructor(e={}){super(e)}getViewportType(){return lr}get ControllerType(){return zt}};Ra.displayName="MapView";var Pa=Ra;var mR=new cr;function _R(t,e){let r=t.order??1/0,i=e.order??1/0;return r-i}var co=class{constructor(e){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=e,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(e){let r=this._defaultEffects;if(!r.find(i=>i.id===e.id)){let i=r.findIndex(s=>_R(s,e)>0);i<0?r.push(e):r.splice(i,0,e),e.setup(this._context),this._setEffects(this.effects)}}setProps(e){"effects"in e&&(K(e.effects,this.effects,1)||this._setEffects(e.effects))}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(e){let r={};for(let s of this.effects)r[s.id]=s;let i=[];for(let s of e){let o=r[s.id],n=s;o&&o!==s?o.setProps?(o.setProps(s.props),n=o):o.cleanup(this._context):o||s.setup(this._context),i.push(n),delete r[s.id]}for(let s in r)r[s].cleanup(this._context);this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),e.some(s=>s instanceof cr)||this._resolvedEffects.push(mR),this._needsRedraw="effects changed"}finalize(){for(let e of this._resolvedEffects)e.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var lo=class extends $e{shouldDrawLayer(e){let{operation:r}=e.props;return r.includes("draw")||r.includes("terrain")}render(e){return this._render(e)}};var yR="deckRenderer.renderLayers",Vr=class{constructor(e,r={}){this.device=e,this.stats=r.stats,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new lo(e),this.pickLayersPass=new Dt(e),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(e){this.layerFilter!==e.layerFilter&&(this.layerFilter=e.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==e.drawPickingColors&&(this.drawPickingColors=e.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(e){if(!e.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...e};i.effects&&this._preRender(i.effects,i);let s=this.lastPostProcessEffect?this.renderBuffers[0]:i.target;this.lastPostProcessEffect&&(i.clearColor=[0,0,0,0],i.clearCanvas=!0);let o=r.render({...i,target:s}),n="stats"in o?o.stats:o;i.effects&&(this.lastPostProcessEffect&&(i.clearCanvas=e.clearCanvas===void 0?!0:e.clearCanvas),this._postRender(i.effects,i)),this.renderCount++,Q(yR,this,n,e),this._updateStats(n)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:e}=this;for(let r of e)r.delete();e.length=0}_updateStats(e){if(!this.stats)return;let r=0;for(let{visibleCount:i}of e)r+=i;this.stats.get("Layers rendered").addCount(r)}_preRender(e,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let i of e)r.preRenderStats[i.id]=i.preRender(r),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:e}=this,r=this.device.canvasContext.getDrawingBufferSize(),[i,s]=r;e.length===0&&[0,1].map(o=>{let n=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:i,height:s});e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${o}`,colorAttachments:[n]}))});for(let o of e)o.resize(r)}_postRender(e,r){let{renderBuffers:i}=this,s={...r,inputBuffer:i[0],swapBuffer:i[1]};for(let o of e)if(o.postRender){s.target=o.id===this.lastPostProcessEffect?r.target:void 0;let n=o.postRender(s);s.inputBuffer=n,s.swapBuffer=n===i[0]?i[1]:i[0]}}};var TR={pickedColor:null,pickedObjectIndex:-1};function Xh({pickedColors:t,decodePickingColor:e,deviceX:r,deviceY:i,deviceRadius:s,deviceRect:o}){let{x:n,y:a,width:c,height:l}=o,f=s*s,h=-1,u=0;for(let d=0;d<l;d++){let p=d+a-i,g=p*p;if(g>f)u+=4*c;else for(let m=0;m<c;m++){if(t[u+3]-1>=0){let T=m+n-r,y=T*T+g;y<=f&&(f=y,h=u)}u+=4}}if(h>=0){let d=t.slice(h,h+4),p=e(d);if(p){let g=Math.floor(h/4/c),m=h/4-g*c;return{...p,pickedColor:d,pickedX:n+m,pickedY:a+g}}L.error("Picked non-existent layer. Is picking buffer corrupt?")()}return TR}function Yh({pickedColors:t,decodePickingColor:e}){let r=new Map;if(t){for(let i=0;i<t.length;i+=4)if(t[i+3]-1>=0){let o=t.slice(i,i+4),n=o.join(",");if(!r.has(n)){let a=e(o);a?r.set(n,{...a,color:o}):L.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function va({pickInfo:t,viewports:e,pixelRatio:r,x:i,y:s,z:o}){let n=e[0];e.length>1&&(n=bR(t?.pickedViewports||e,{x:i,y:s}));let a;if(n){let c=[i-n.x,s-n.y];o!==void 0&&(c[2]=o),a=n.unproject(c)}return{color:null,layer:null,viewport:n,index:-1,picked:!1,x:i,y:s,pixel:[i,s],coordinate:a,devicePixel:t&&"pickedX"in t?[t.pickedX,t.pickedY]:void 0,pixelRatio:r}}function Zh(t){let{pickInfo:e,lastPickedInfo:r,mode:i,layers:s}=t,{pickedColor:o,pickedLayer:n,pickedObjectIndex:a}=e,c=n?[n]:[];if(i==="hover"){let h=r.index,u=r.layerId,d=n?n.props.id:null;if(d!==u||a!==h){if(d!==u){let p=s.find(g=>g.props.id===u);p&&c.unshift(p)}r.layerId=d,r.index=a,r.info=null}}let l=va(t),f=new Map;return f.set(null,l),c.forEach(h=>{let u={...l};h===n&&(u.color=o,u.index=a,u.picked=!0),u=Ma({layer:h,info:u,mode:i});let d=u.layer;h===n&&i==="hover"&&(r.info=u),f.set(d.id,u),i==="hover"&&d.updateAutoHighlight(u)}),f}function Ma({layer:t,info:e,mode:r}){for(;t&&e;){let i=e.layer||null;e.sourceLayer=i,e.layer=t,e=t.getPickingInfo({info:e,mode:r,sourceLayer:i}),t=t.parent}return e}function bR(t,e){for(let r=t.length-1;r>=0;r--){let i=t[r];if(i.containsPixel(e))return i}return t[0]}var fo=class{constructor(e,r={}){this._pickable=!0,this.device=e,this.stats=r.stats,this.pickLayersPass=new Dt(e),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(e){"layerFilter"in e&&(this.layerFilter=e.layerFilter),"_pickable"in e&&(this._pickable=e._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObjectAsync(e){return this._pickClosestObjectAsync(e)}pickObjectsAsync(e){return this._pickVisibleObjectsAsync(e)}pickObject(e){return this._pickClosestObject(e)}pickObjects(e){return this._pickVisibleObjects(e)}getLastPickedObject({x:e,y:r,layers:i,viewports:s},o=this.lastPickedInfo.info){let n=o&&o.layer&&o.layer.id,a=o&&o.viewport&&o.viewport.id,c=n?i.find(u=>u.id===n):null,l=a&&s.find(u=>u.id===a)||s[0],f=l&&l.unproject([e-l.x,r-l.y]);return{...o,...{x:e,y:r,viewport:l,coordinate:f,layer:c}}}_resizeBuffer(){if(!this.pickingFBO&&(this.pickingFBO=this.device.createFramebuffer({colorAttachments:["rgba8unorm"],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float"))){let r=this.device.createFramebuffer({colorAttachments:["rgba32float"],depthStencilAttachment:"depth16unorm"});this.depthFBO=r}let{canvas:e}=this.device.getDefaultCanvasContext();this.pickingFBO?.resize({width:e.width,height:e.height}),this.depthFBO?.resize({width:e.width,height:e.height})}_getPickable(e){if(this._pickable===!1)return null;let r=e.filter(i=>this.pickLayersPass.shouldDrawLayer(i)&&!i.isComposite);return r.length?r:null}async _pickClosestObjectAsync({layers:e,views:r,viewports:i,x:s,y:o,radius:n=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:f,effects:h}){let u=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(e);if(!d||i.length===0)return{result:[],emptyInfo:va({viewports:i,x:s,y:o,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,o],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],m=Math.round(n*u),{width:_,height:T}=this.pickingFBO,y=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceWidth:_,deviceHeight:T}),x={x:s-n,y:o-n,width:n*2+1,height:n*2+1},S,A=[],w=new Set;for(let v=0;v<a;v++){let R;if(y){let C=this._drawAndSample({layers:d,views:r,viewports:i,onViewportActive:f,deviceRect:y,cullRect:x,effects:h,pass:`picking:${c}`});R=Xh({...C,deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceRect:y})}else R={pickedColor:null,pickedObjectIndex:-1};let M,I=this._getDepthLayers(R,d,l);if(I.length>0){let{pickedColors:C}=this._drawAndSample({layers:I,views:r,viewports:i,onViewportActive:f,deviceRect:{x:R.pickedX??g[0],y:R.pickedY??g[1],width:1,height:1},cullRect:x,effects:h,pass:`picking:${c}:z`},!0);C[3]&&(M=C[0])}R.pickedLayer&&v+1<a&&(w.add(R.pickedLayer),R.pickedLayer.disablePickingIndex(R.pickedObjectIndex)),S=Zh({pickInfo:R,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:i,x:s,y:o,z:M,pixelRatio:u});for(let C of S.values())C.layer&&A.push(C);if(!R.pickedColor)break}for(let v of w)v.restorePickingColors();return{result:A,emptyInfo:S.get(null)}}_pickClosestObject({layers:e,views:r,viewports:i,x:s,y:o,radius:n=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:f,effects:h}){let u=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(e);if(!d||i.length===0)return{result:[],emptyInfo:va({viewports:i,x:s,y:o,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,o],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],m=Math.round(n*u),{width:_,height:T}=this.pickingFBO,y=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceWidth:_,deviceHeight:T}),x={x:s-n,y:o-n,width:n*2+1,height:n*2+1},S,A=[],w=new Set;for(let v=0;v<a;v++){let R;if(y){let C=this._drawAndSample({layers:d,views:r,viewports:i,onViewportActive:f,deviceRect:y,cullRect:x,effects:h,pass:`picking:${c}`});R=Xh({...C,deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceRect:y})}else R={pickedColor:null,pickedObjectIndex:-1};let M,I=this._getDepthLayers(R,d,l);if(I.length>0){let{pickedColors:C}=this._drawAndSample({layers:I,views:r,viewports:i,onViewportActive:f,deviceRect:{x:R.pickedX??g[0],y:R.pickedY??g[1],width:1,height:1},cullRect:x,effects:h,pass:`picking:${c}:z`},!0);C[3]&&(M=C[0])}R.pickedLayer&&v+1<a&&(w.add(R.pickedLayer),R.pickedLayer.disablePickingIndex(R.pickedObjectIndex)),S=Zh({pickInfo:R,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:i,x:s,y:o,z:M,pixelRatio:u});for(let C of S.values())C.layer&&A.push(C);if(!R.pickedColor)break}for(let v of w)v.restorePickingColors();return{result:A,emptyInfo:S.get(null)}}async _pickVisibleObjectsAsync({layers:e,views:r,viewports:i,x:s,y:o,width:n=1,height:a=1,mode:c="query",maxObjects:l=null,onViewportActive:f,effects:h}){let u=this._getPickable(e);if(!u||i.length===0)return[];this._resizeBuffer();let d=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,o],!0),g=p.x,m=p.y+p.height,_=this.device.canvasContext.cssToDevicePixels([s+n,o+a],!0),T=_.x+_.width,y=_.y,x={x:g,y,width:T-g,height:m-y},S=this._drawAndSample({layers:u,views:r,viewports:i,onViewportActive:f,deviceRect:x,cullRect:{x:s,y:o,width:n,height:a},effects:h,pass:`picking:${c}`}),A=Yh(S),w=new Map,v=[],R=Number.isFinite(l);for(let M=0;M<A.length&&!(R&&v.length>=l);M++){let I=A[M],C={color:I.pickedColor,layer:null,index:I.pickedObjectIndex,picked:!0,x:s,y:o,pixelRatio:d};C=Ma({layer:I.pickedLayer,info:C,mode:c});let W=C.layer.id;w.has(W)||w.set(W,new Set);let V=w.get(W),J=C.object??C.index;V.has(J)||(V.add(J),v.push(C))}return v}_pickVisibleObjects({layers:e,views:r,viewports:i,x:s,y:o,width:n=1,height:a=1,mode:c="query",maxObjects:l=null,onViewportActive:f,effects:h}){let u=this._getPickable(e);if(!u||i.length===0)return[];this._resizeBuffer();let d=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,o],!0),g=p.x,m=p.y+p.height,_=this.device.canvasContext.cssToDevicePixels([s+n,o+a],!0),T=_.x+_.width,y=_.y,x={x:g,y,width:T-g,height:m-y},S=this._drawAndSample({layers:u,views:r,viewports:i,onViewportActive:f,deviceRect:x,cullRect:{x:s,y:o,width:n,height:a},effects:h,pass:`picking:${c}`}),A=Yh(S),w=new Map,v=[],R=Number.isFinite(l);for(let M=0;M<A.length&&!(R&&v.length>=l);M++){let I=A[M],C={color:I.pickedColor,layer:null,index:I.pickedObjectIndex,picked:!0,x:s,y:o,pixelRatio:d};C=Ma({layer:I.pickedLayer,info:C,mode:c});let W=C.layer.id;w.has(W)||w.set(W,new Set);let V=w.get(W),J=C.object??C.index;V.has(J)||(V.add(J),v.push(C))}return v}async _drawAndSampleAsync({layers:e,views:r,viewports:i,onViewportActive:s,deviceRect:o,cullRect:n,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:e,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:s,pickingFBO:f,deviceRect:o,cullRect:n,effects:a,pass:c,pickZ:l,preRenderStats:{},isPicking:!0};for(let y of a)y.useInPicking&&(h.preRenderStats[y.id]=y.preRender(h));let{decodePickingColor:u,stats:d}=this.pickLayersPass.render(h);this._updateStats(d);let{x:p,y:g,width:m,height:_}=o,T=new(l?Float32Array:Uint8Array)(m*_*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:p,sourceY:g,sourceWidth:m,sourceHeight:_,target:T}),{pickedColors:T,decodePickingColor:u}}_drawAndSample({layers:e,views:r,viewports:i,onViewportActive:s,deviceRect:o,cullRect:n,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:e,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:s,pickingFBO:f,deviceRect:o,cullRect:n,effects:a,pass:c,pickZ:l,preRenderStats:{},isPicking:!0};for(let y of a)y.useInPicking&&(h.preRenderStats[y.id]=y.preRender(h));let{decodePickingColor:u,stats:d}=this.pickLayersPass.render(h);this._updateStats(d);let{x:p,y:g,width:m,height:_}=o,T=new(l?Float32Array:Uint8Array)(m*_*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:p,sourceY:g,sourceWidth:m,sourceHeight:_,target:T}),{pickedColors:T,decodePickingColor:u}}_updateStats(e){if(!this.stats)return;let r=0;for(let{visibleCount:i}of e)r+=i;this.stats.get("Layers picked").addCount(r)}_getDepthLayers(e,r,i){if(!i||!this.depthFBO)return[];let{pickedLayer:s}=e,o=s?.state?.terrainDrawMode==="drape";return s&&!o?[s]:r.filter(n=>n.props.operation.includes("terrain"))}_getPickingRect({deviceX:e,deviceY:r,deviceRadius:i,deviceWidth:s,deviceHeight:o}){let n=Math.max(0,e-i),a=Math.max(0,r-i),c=Math.min(s,e+i+1)-n,l=Math.min(o,r+i+1)-a;return c<=0||l<=0?null:{x:n,y:a,width:c,height:l}}};var xR={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},AR="top-left",__="root",Ca=class{constructor({deck:e,parentElement:r}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=e,r?.classList.add("deck-widget-container"),this.parentElement=r}getWidgets(){return this.resolvedWidgets}setProps(e){if(e.widgets&&!K(e.widgets,this.widgets,1)){let r=e.widgets.filter(Boolean);this._setWidgets(r)}}finalize(){for(let e of this.getWidgets())this._removeWidget(e);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(let e in this.containers)this.containers[e].remove()}addDefault(e){this.defaultWidgets.find(r=>r.id===e.id)||(this._addWidget(e),this.defaultWidgets.push(e),this._setWidgets(this.widgets))}onRedraw({viewports:e,layers:r}){let i=e.reduce((s,o)=>(s[o.id]=o,s),{});for(let s of this.getWidgets()){let{viewId:o}=s;if(o){let n=i[o];n&&(s.onViewportChange&&s.onViewportChange(n),s.onRedraw?.({viewports:[n],layers:r}))}else{if(s.onViewportChange)for(let n of e)s.onViewportChange(n);s.onRedraw?.({viewports:e,layers:r})}}this.lastViewports=i,this._updateContainers()}onHover(e,r){for(let i of this.getWidgets()){let{viewId:s}=i;(!s||s===e.viewport?.id)&&i.onHover?.(e,r)}}onEvent(e,r){let i=js[r.type];if(i)for(let s of this.getWidgets()){let{viewId:o}=s;(!o||o===e.viewport?.id)&&s[i]?.(e,r)}}_setWidgets(e){let r={};for(let i of this.resolvedWidgets)r[i.id]=i;this.resolvedWidgets.length=0;for(let i of this.defaultWidgets)r[i.id]=null,this.resolvedWidgets.push(i);for(let i of e){let s=r[i.id];s?s.viewId!==i.viewId||s.placement!==i.placement?(this._removeWidget(s),this._addWidget(i)):i!==s&&(s.setProps(i.props),i=s):this._addWidget(i),r[i.id]=null,this.resolvedWidgets.push(i)}for(let i in r){let s=r[i];s&&this._removeWidget(s)}this.widgets=e}_addWidget(e){let{viewId:r=null,placement:i=AR}=e,s=e.props._container??r;e.widgetManager=this,e.deck=this.deck,e.rootElement=e._onAdd({deck:this.deck,viewId:r}),e.rootElement&&this._getContainer(s,i).append(e.rootElement),e.updateHTML()}_removeWidget(e){e.onRemove?.(),e.rootElement&&e.rootElement.remove(),e.rootElement=void 0,e.deck=void 0,e.widgetManager=void 0}_getContainer(e,r){if(e&&typeof e!="string")return e;let i=e||__,s=this.containers[i];s||(s=document.createElement("div"),s.style.pointerEvents="none",s.style.position="absolute",s.style.overflow="hidden",this.parentElement?.append(s),this.containers[i]=s);let o=s.querySelector(`.${r}`);return o||(o=globalThis.document.createElement("div"),o.className=r,o.style.position="absolute",o.style.zIndex="2",Object.assign(o.style,xR[r]),s.append(o)),o}_updateContainers(){let e=this.deck.width,r=this.deck.height;for(let i in this.containers){let s=this.lastViewports[i]||null,o=i===__||s,n=this.containers[i];o?(n.style.display="block",n.style.left=`${s?s.x:0}px`,n.style.top=`${s?s.y:0}px`,n.style.width=`${s?s.width:e}px`,n.style.height=`${s?s.height:r}px`):n.style.display="none"}}};function ho(t,e){e&&Object.entries(e).map(([r,i])=>{r.startsWith("--")?t.style.setProperty(r,i):t.style[r]=i})}function Ia(t,e){e&&Object.keys(e).map(r=>{r.startsWith("--")?t.style.removeProperty(r):t.style[r]=""})}var ur=class{constructor(e){this.viewId=null,this.props={...this.constructor.defaultProps,...e},this.id=this.props.id}setProps(e){let r=this.props,i=this.rootElement;i&&r.className!==e.className&&(r.className&&i.classList.remove(r.className),e.className&&i.classList.add(e.className)),i&&!K(r.style,e.style,1)&&(Ia(i,r.style),ho(i,e.style)),Object.assign(this.props,e),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}getViewState(e){return this.deck?.viewManager?.getViewState(e)||{}}setViewState(e,r){this.deck?._onViewStateChange({viewId:e,viewState:r,interactionState:{}})}onCreateRootElement(){let e=["deck-widget",this.className,this.props.className],r=document.createElement("div");return e.filter(i=>typeof i=="string"&&i.length>0).forEach(i=>r.classList.add(i)),ho(r,this.props.style),r}_onAdd(e){return this.onAdd(e)??this.onCreateRootElement()}onAdd(e){}onRemove(){}onViewportChange(e){}onRedraw(e){}onHover(e,r){}onClick(e,r){}onDrag(e,r){}onDragStart(e,r){}onDragEnd(e,r){}};ur.defaultProps={id:"widget",style:{},_container:null,className:""};var SR={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},uo=class extends ur{constructor(e={}){super(e),this.id="default-tooltip",this.placement="fill",this.className="deck-tooltip",this.isVisible=!1,this.setProps(e)}onCreateRootElement(){let e=document.createElement("div");return e.className=this.className,Object.assign(e.style,SR),e}onRenderHTML(e){}onViewportChange(e){this.isVisible&&e.id===this.lastViewport?.id&&!e.equals(this.lastViewport)&&this.setTooltip(null),this.lastViewport=e}onHover(e){let{deck:r}=this,i=r&&r.props.getTooltip;if(!i)return;let s=i(e);this.setTooltip(s,e.x,e.y)}setTooltip(e,r,i){let s=this.rootElement;if(s){if(typeof e=="string")s.innerText=e;else if(e)e.text&&(s.innerText=e.text),e.html&&(s.innerHTML=e.html),e.className&&(s.className=e.className);else{this.isVisible=!1,s.style.display="none";return}this.isVisible=!0,s.style.display="block",s.style.transform=`translate(${r}px, ${i}px)`,e&&typeof e=="object"&&"style"in e&&Object.assign(s.style,e.style)}}};uo.defaultProps={...ur.defaultProps};F();hc();Wi();function pr(){}var N3=({isDragging:t})=>t?"grabbing":"grab",k0={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,parameters:{},parent:null,device:null,deviceProps:{},gl:null,canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:"none",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,widgets:[],onDeviceInitialized:pr,onWebGLInitialized:pr,onResize:pr,onViewStateChange:pr,onInteractionStateChange:pr,onBeforeRender:pr,onAfterRender:pr,onLoad:pr,onError:t=>L.error(t.message,t.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:N3,getTooltip:null,debug:!1,drawPickingColors:!1},Ao=class{constructor(e){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new Oe({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,layersCount:0,drawLayersCount:0,updateLayersCount:0,updateAttributesCount:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,pickLayersCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null,unproject3D:!1},this._lastPointerDownInfo=null,this._onPointerMove=i=>{let{_pickRequest:s}=this;if(i.type==="pointerleave")s.x=-1,s.y=-1,s.radius=0;else{if(i.leftButton||i.rightButton)return;{let o=i.offsetCenter;if(!o)return;s.x=o.x,s.y=o.y,s.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:s.x,y:s.y}),s.event=i},this._onEvent=i=>{let s=js[i.type],o=i.offsetCenter;if(!s||!o||!this.layerManager)return;let n,a=this.layerManager.getLayers(),c=a.some(d=>d.props.pickable==="3d");if(i.type==="click"&&c){let d=this._pick("pickObject","pickObject Time",{x:o.x,y:o.y,radius:this.props.pickingRadius,unproject3D:!0});n=d.result[0]||d.emptyInfo}else n=this.deckPicker.getLastPickedObject({x:o.x,y:o.y,layers:a,viewports:this.getViewports(o)},this._lastPointerDownInfo);let{layer:l}=n,f=l&&(l[s]||l.props[s]),h=this.props[s],u=!1;f&&(u=f.call(l,n,i)),u||(h?.(n,i),this.widgetManager.onEvent(n,i))},this._onPointerDown=i=>{if(this.device?.type==="webgpu")return;let s=i.offsetCenter,o=this._pick("pickObject","pickObject Time",{x:s.x,y:s.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=o.result[0]||o.emptyInfo},this.props={...k0,...e},e=this.props,e.viewState&&e.initialViewState&&L.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,e.device&&(this.device=e.device);let r=this.device;if(!r&&e.gl){e.gl instanceof WebGLRenderingContext&&L.error("WebGL1 context not supported.")();let i=this.props.deviceProps?.onResize;r=xo.attach(e.gl,{_cacheShaders:!0,_cachePipelines:!0,...this.props.deviceProps,onResize:(s,o)=>{let{width:n,height:a}=s.canvas;s.setDrawingBufferSize(n,a),this._needsRedraw="Canvas resized",i?.(s,o)}})}r||(r=this._createDevice(e)),this.animationLoop=this._createAnimationLoop(r,e),this.setProps(e),e._typedArrayManagerProps&&Xe.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._lastPointerDownInfo=null,this.layerManager?.finalize(),this.layerManager=null,this.viewManager?.finalize(),this.viewManager=null,this.effectManager?.finalize(),this.effectManager=null,this.deckRenderer?.finalize(),this.deckRenderer=null,this.deckPicker?.finalize(),this.deckPicker=null,this.eventManager?.destroy(),this.eventManager=null,this.widgetManager?.finalize(),this.widgetManager=null,!this.props.canvas&&!this.props.device&&!this.props.gl&&this.canvas&&(this.canvas.parentElement?.removeChild(this.canvas),this.canvas=null)}setProps(e){this.stats.get("setProps Time").timeStart(),"onLayerHover"in e&&L.removed("onLayerHover","onHover")(),"onLayerClick"in e&&L.removed("onLayerClick","onClick")(),e.initialViewState&&!K(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),Object.assign(this.props,e),this._setCanvasSize(this.props);let r=Object.create(this.props);Object.assign(r,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),e.device&&e.device.id!==this.device?.id&&(this.animationLoop?.stop(),this.canvas!==e.device.canvasContext?.canvas&&(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),L.log(`recreating animation loop for new device! id=${e.device.id}`)(),this.animationLoop=this._createAnimationLoop(e.device,e),this.animationLoop.start()),this.animationLoop?.setProps(r),e.useDevicePixels!==void 0&&this.device?.canvasContext?.setProps&&this.device.canvasContext.setProps({useDevicePixels:e.useDevicePixels}),this.layerManager&&(this.viewManager.setProps(r),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(r),this.effectManager.setProps(r),this.deckRenderer.setProps(r),this.deckPicker.setProps(r),this.widgetManager.setProps(r)),this.stats.get("setProps Time").timeEnd()}needsRedraw(e={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);let i=this.viewManager.needsRedraw(e),s=this.layerManager.needsRedraw(e),o=this.effectManager.needsRedraw(e),n=this.deckRenderer.needsRedraw(e);return r=r||i||s||o||n,r}redraw(e){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=e||r,r&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(r):this._drawLayers(r))}get isInitialized(){return this.viewManager!==null}getViews(){return Y(this.viewManager),this.viewManager.views}getView(e){return Y(this.viewManager),this.viewManager.getView(e)}getViewports(e){return Y(this.viewManager),this.viewManager.getViewports(e)}getCanvas(){return this.canvas}pickObject(e){let r=this._pick("pickObject","pickObject Time",e).result;return r.length?r[0]:null}pickMultipleObjects(e){return e.depth=e.depth||10,this._pick("pickObject","pickMultipleObjects Time",e).result}pickObjects(e){return this._pick("pickObjects","pickObjects Time",e)}_pickPositionForController(e,r){return this.pickObject({x:e,y:r,radius:0,unproject3D:!0})}_addResources(e,r=!1){for(let i in e)this.layerManager.resourceManager.add({resourceId:i,data:e[i],forceUpdate:r})}_removeResources(e){for(let r of e)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(e){this.effectManager.addDefaultEffect(e)}_addDefaultShaderModule(e){this.layerManager.addDefaultShaderModule(e)}_removeDefaultShaderModule(e){this.layerManager?.removeDefaultShaderModule(e)}_pick(e,r,i){Y(this.deckPicker);let{stats:s}=this;s.get("Pick Count").incrementCount(),s.get(r).timeStart();let o=this.deckPicker[e]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return s.get(r).timeEnd(),o}_createCanvas(e){let r=e.canvas;return typeof r=="string"&&(r=document.getElementById(r),Y(r)),r||(r=document.createElement("canvas"),r.id=e.id||"deckgl-overlay",e.width&&typeof e.width=="number"&&(r.width=e.width),e.height&&typeof e.height=="number"&&(r.height=e.height),(e.parent||document.body).appendChild(r)),Object.assign(r.style,e.style),r}_setCanvasSize(e){if(!this.canvas)return;let{width:r,height:i}=e;if(r||r===0){let s=Number.isFinite(r)?`${r}px`:r;this.canvas.style.width=s}if(i||i===0){let s=Number.isFinite(i)?`${i}px`:i;this.canvas.style.position=e.style?.position||"absolute",this.canvas.style.height=s}}_updateCanvasSize(){let{canvas:e}=this;if(!e)return;let r=e.clientWidth??e.width,i=e.clientHeight??e.height;(r!==this.width||i!==this.height)&&(this.width=r,this.height=i,this.viewManager?.setProps({width:r,height:i}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:r,height:i}))}_createAnimationLoop(e,r){let{gl:i,onError:s}=r;return new ci({device:e,autoResizeDrawingBuffer:!i,autoResizeViewport:!1,onInitialize:o=>this._setDevice(o.device),onRender:this._onRenderFrame.bind(this),onError:s})}_createDevice(e){let r=this.props.deviceProps?.createCanvasContext,i=typeof r=="object"?r:void 0,s={adapters:[],_cacheShaders:!0,_cachePipelines:!0,...e.deviceProps};s.adapters.includes(xo)||s.adapters.push(xo);let o={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0},n=this.props.deviceProps?.onResize;return Yt.createDevice({_reuseDevices:!0,type:"webgl",...s,createCanvasContext:{...o,...i,canvas:this._createCanvas(e),useDevicePixels:this.props.useDevicePixels,autoResize:!0},onResize:(a,c)=>{this._needsRedraw="Canvas resized",n?.(a,c)}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:e}=this.props,r=Array.isArray(e)?e:e?[e]:[new Pa({id:"default-view"})];return r.length&&this.props.controller&&(r[0].props.controller=this.props.controller),r}_onContextLost(){let{onError:e}=this.props;this.animationLoop&&e&&e(new Error("WebGL context is lost"))}_pickAndCallback(){if(this.device?.type==="webgpu")return;let{_pickRequest:e}=this;if(e.event){let i=(this.layerManager?.getLayers()||[]).some(c=>c.props.pickable==="3d");e.unproject3D=i;let{result:s,emptyInfo:o}=this._pick("pickObject","pickObject Time",e);this.cursorState.isHovering=s.length>0;let n=o,a=!1;for(let c of s)n=c,a=c.layer?.onHover(c,e.event)||a;a||(this.props.onHover?.(n,e.event),this.widgetManager.onHover(n,e.event)),e.event=null}}_updateCursor(){let e=this.props.parent||this.canvas;e&&(e.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(e){if(this.device=e,!this.animationLoop)return;this.canvas||(this.canvas=this.device.canvasContext?.canvas,!this.canvas.isConnected&&this.props.parent&&this.props.parent.insertBefore(this.canvas,this.props.parent.firstChild)),this.device.type==="webgl"&&this.device.setParametersWebGL({blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onDeviceInitialized(this.device),this.device.type==="webgl"&&this.props.onWebGLInitialized(this.device.gl);let r=new Ar;r.play(),this.animationLoop.attachTimeline(r);let i=this.props.parent?.querySelector(".deck-events-root")||this.canvas;this.eventManager=new Ws(i,{touchAction:this.props.touchAction,recognizers:Object.keys(Ch).map(n=>{let[a,c,l,f]=Ch[n],h=this.props.eventRecognizerOptions?.[n],u={...c,...h,event:n};return{recognizer:new a(u),recognizeWith:l,requestFailure:f}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let n in js)this.eventManager.on(n,this._onEvent);this.viewManager=new so({timeline:r,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),pickPosition:this._pickPositionForController.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let s=this.viewManager.getViewports()[0];this.layerManager=new Ur(this.device,{deck:this,stats:this.stats,viewport:s,timeline:r}),this.effectManager=new co({deck:this,device:this.device}),this.deckRenderer=new Vr(this.device,{stats:this.stats}),this.deckPicker=new fo(this.device,{stats:this.stats});let o=this.props.parent?.querySelector(".deck-widgets-root")||this.canvas?.parentElement;this.widgetManager=new Ca({deck:this,parentElement:o}),this.widgetManager.addDefault(new uo),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(e,r){let{device:i,gl:s}=this.layerManager.context;this.props.onBeforeRender({device:i,gl:s});let o={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...r};this.deckRenderer?.renderLayers(o),o.pass==="screen"&&this.widgetManager.onRedraw({viewports:o.viewports,layers:o.layers}),this.props.onAfterRender({device:i,gl:s})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),L.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.layerManager.updateLayers(),this.device?.type!=="webgpu"&&this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(e){let r=this.props.onViewStateChange(e)||e.viewState;this.viewState&&(this.viewState={...this.viewState,[e.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(e){this.cursorState.isDragging=e.isDragging||!1,this.props.onInteractionStateChange(e)}_getFrameStats(){let{stats:e}=this;e.get("frameRate").timeEnd(),e.get("frameRate").timeStart();let r=this.animationLoop.stats;e.get("GPU Time").addTime(r.get("GPU Time").lastTiming),e.get("CPU Time").addTime(r.get("CPU Time").lastTiming)}_getMetrics(){let{metrics:e,stats:r}=this;e.fps=r.get("frameRate").getHz(),e.setPropsTime=r.get("setProps Time").time,e.updateAttributesTime=r.get("Update Attributes").time,e.framesRedrawn=r.get("Redraw Count").count,e.pickTime=r.get("pickObject Time").time+r.get("pickMultipleObjects Time").time+r.get("pickObjects Time").time,e.pickCount=r.get("Pick Count").count,e.layersCount=this.layerManager?.layers.length??0,e.drawLayersCount=r.get("Layers rendered").lastSampleCount,e.pickLayersCount=r.get("Layers picked").lastSampleCount,e.updateAttributesCount=r.get("Layers updated").count,e.updateAttributesCount=r.get("Attributes updated").count,e.gpuTime=r.get("GPU Time").time,e.cpuTime=r.get("CPU Time").time,e.gpuTimePerFrame=r.get("GPU Time").getAverageTime(),e.cpuTimePerFrame=r.get("CPU Time").getAverageTime();let i=Yt.stats.get("GPU Time and Memory");e.bufferMemory=i.get("Buffer Memory").count,e.textureMemory=i.get("Texture Memory").count,e.renderbufferMemory=i.get("Renderbuffer Memory").count,e.gpuMemory=i.get("GPU Memory").count}};Ao.defaultProps=k0;Ao.VERSION=Kn;var gc=Ao;F();F();function V0(t){switch(t){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return Et(t)}}var z0=yr;function So(t,e,r){if(e.size>4)return null;let i=r==="webgpu"&&e.type==="uint8"?"unorm8":e.type;return{attribute:t,format:e.size>1?`${i}x${e.size}`:e.type,byteOffset:e.offset||0}}function gr(t){return t.stride||t.size*t.bytesPerElement}function W0(t,e){return t.type===e.type&&t.size===e.size&&gr(t)===gr(e)&&(t.offset||0)===(e.offset||0)}function xu(t,e){e.offset&&L.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let r=gr(t),i=e.vertexOffset!==void 0?e.vertexOffset:t.vertexOffset||0,s=e.elementOffset||0,o=i*r+s*t.bytesPerElement+(t.offset||0);return{...e,offset:o,stride:r}}function D3(t,e){let r=xu(t,e);return{high:r,low:{...r,offset:r.offset+t.size*4}}}var Eo=class{constructor(e,r,i){this._buffer=null,this.device=e,this.id=r.id||"",this.size=r.size||1;let s=r.logicalType||r.type,o=s==="float64",{defaultValue:n}=r;n=Number.isFinite(n)?[n]:n||new Array(this.size).fill(0);let a;o?a="float32":!s&&r.isIndexed?a="uint32":a=s||"float32";let c=V0(s||a);this.doublePrecision=o,o&&r.fp64===!1&&(c=Float32Array),this.value=null,this.settings={...r,defaultType:c,defaultValue:n,logicalType:s,type:a,normalized:a.includes("norm"),size:this.size,bytesPerElement:c.BYTES_PER_ELEMENT},this.state={...i,externalBuffer:null,bufferAccessor:this.settings,allocatedValue:null,numInstances:0,bounds:null,constant:!1}}get isConstant(){return this.state.constant}get buffer(){return this._buffer}get byteOffset(){let e=this.getAccessor();return e.vertexOffset?e.vertexOffset*gr(e):0}get numInstances(){return this.state.numInstances}set numInstances(e){this.state.numInstances=e}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),Xe.release(this.state.allocatedValue)}getBuffer(){return this.state.constant?null:this.state.externalBuffer||this._buffer}getValue(e=this.id,r=null){let i={};if(this.state.constant){let s=this.value;if(r){let o=xu(this.getAccessor(),r),n=o.offset/s.BYTES_PER_ELEMENT,a=o.size||this.size;i[e]=s.subarray(n,n+a)}else i[e]=s}else i[e]=this.getBuffer();return this.doublePrecision&&(this.value instanceof Float64Array?i[`${e}64Low`]=i[e]:i[`${e}64Low`]=new Float32Array(this.size)),i}_getBufferLayout(e=this.id,r=null){let i=this.getAccessor(),s=[],o={name:this.id,byteStride:gr(i)};if(this.doublePrecision){let n=D3(i,r||{});s.push(So(e,{...i,...n.high},this.device.type),So(`${e}64Low`,{...i,...n.low},this.device.type))}else if(r){let n=xu(i,r);s.push(So(e,{...i,...n},this.device.type))}else s.push(So(e,i,this.device.type));return o.attributes=s.filter(Boolean),o}setAccessor(e){this.state.bufferAccessor=e}getAccessor(){return this.state.bufferAccessor}getBounds(){if(this.state.bounds)return this.state.bounds;let e=null;if(this.state.constant&&this.value){let r=Array.from(this.value);e=[r,r]}else{let{value:r,numInstances:i,size:s}=this,o=i*s;if(r&&o&&r.length>=o){let n=new Array(s).fill(1/0),a=new Array(s).fill(-1/0);for(let c=0;c<o;)for(let l=0;l<s;l++){let f=r[c++];f<n[l]&&(n[l]=f),f>a[l]&&(a[l]=f)}e=[n,a]}}return this.state.bounds=e,e}setData(e){let{state:r}=this,i;ArrayBuffer.isView(e)?i={value:e}:e instanceof D?i={buffer:e}:i=e;let s={...this.settings,...i};if(ArrayBuffer.isView(i.value)){if(!i.type)if(this.doublePrecision&&i.value instanceof Float64Array)s.type="float32";else{let n=z0(i.value);s.type=s.normalized?n.replace("int","norm"):n}s.bytesPerElement=i.value.BYTES_PER_ELEMENT,s.stride=gr(s)}if(r.bounds=null,i.constant){let o=i.value;if(o=this._normalizeValue(o,[],0),this.settings.normalized&&(o=this.normalizeConstant(o)),!(!r.constant||!this._areValuesEqual(o,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=ArrayBuffer.isView(o)?o:new Float32Array(o)}else if(i.buffer){let o=i.buffer;r.externalBuffer=o,r.constant=!1,this.value=i.value||null}else if(i.value){this._checkExternalBuffer(i);let o=i.value;r.externalBuffer=null,r.constant=!1,this.value=o;let{buffer:n}=this,a=gr(s),c=(s.vertexOffset||0)*a;if(this.doublePrecision&&o instanceof Float64Array&&(o=ga(o,s)),this.settings.isIndexed){let f=this.settings.defaultType;o.constructor!==f&&(o=new f(o))}let l=o.byteLength+c+a*2;(!n||n.byteLength<l)&&(n=this._createBuffer(l)),n.write(o,c)}return this.setAccessor(s),!0}updateSubBuffer(e={}){this.state.bounds=null;let r=this.value,{startOffset:i=0,endOffset:s}=e;this.buffer.write(this.doublePrecision&&r instanceof Float64Array?ga(r,{size:this.size,startIndex:i,endIndex:s}):r.subarray(i,s),i*r.BYTES_PER_ELEMENT+this.byteOffset)}allocate(e,r=!1){let{state:i}=this,s=i.allocatedValue,o=Xe.allocate(s,e+1,{size:this.size,type:this.settings.defaultType,copy:r});this.value=o;let{byteOffset:n}=this,{buffer:a}=this;return(!a||a.byteLength<o.byteLength+n)&&(a=this._createBuffer(o.byteLength+n),r&&s&&a.write(s instanceof Float64Array?ga(s,this):s,n)),i.allocatedValue=o,i.constant=!1,i.externalBuffer=null,this.setAccessor(this.settings),!0}_checkExternalBuffer(e){let{value:r}=e;if(!ArrayBuffer.isView(r))throw new Error(`Attribute ${this.id} value is not TypedArray`);let i=this.settings.defaultType,s=!1;if(this.doublePrecision&&(s=r.BYTES_PER_ELEMENT<4),s)throw new Error(`Attribute ${this.id} does not support ${r.constructor.name}`);!(r instanceof i)&&this.settings.normalized&&!("normalized"in e)&&L.warn(`Attribute ${this.id} is normalized`)()}normalizeConstant(e){switch(this.settings.type){case"snorm8":return new Float32Array(e).map(r=>(r+128)/255*2-1);case"snorm16":return new Float32Array(e).map(r=>(r+32768)/65535*2-1);case"unorm8":return new Float32Array(e).map(r=>r/255);case"unorm16":return new Float32Array(e).map(r=>r/65535);default:return e}}_normalizeValue(e,r,i){let{defaultValue:s,size:o}=this.settings;if(Number.isFinite(e))return r[i]=e,r;if(!e){let n=o;for(;--n>=0;)r[i+n]=s[n];return r}switch(o){case 4:r[i+3]=Number.isFinite(e[3])?e[3]:s[3];case 3:r[i+2]=Number.isFinite(e[2])?e[2]:s[2];case 2:r[i+1]=Number.isFinite(e[1])?e[1]:s[1];case 1:r[i+0]=Number.isFinite(e[0])?e[0]:s[0];break;default:let n=o;for(;--n>=0;)r[i+n]=Number.isFinite(e[n])?e[n]:s[n]}return r}_areValuesEqual(e,r){if(!e||!r)return!1;let{size:i}=this;for(let s=0;s<i;s++)if(e[s]!==r[s])return!1;return!0}_createBuffer(e){this._buffer&&this._buffer.destroy();let{isIndexed:r,type:i}=this.settings;return this._buffer=this.device.createBuffer({...this._buffer?.props,id:this.id,usage:(r?D.INDEX:D.VERTEX)|D.COPY_DST,indexType:r?i:void 0,byteLength:e}),this._buffer}};var j0=[],H0=[];function Ui(t,e=0,r=1/0){let i=j0,s={index:-1,data:t,target:[]};return t?typeof t[Symbol.iterator]=="function"?i=t:t.length>0&&(H0.length=t.length,i=H0):i=j0,(e>0||Number.isFinite(r))&&(i=(Array.isArray(i)?i:Array.from(i)).slice(e,r),s.index=e-1),{iterable:i,objectInfo:s}}function mc(t){return t&&t[Symbol.asyncIterator]}function _c(t,e){let{size:r,stride:i,offset:s,startIndices:o,nested:n}=e,a=t.BYTES_PER_ELEMENT,c=i?i/a:r,l=s?s/a:0,f=Math.floor((t.length-l)/c);return(h,{index:u,target:d})=>{if(!o){let _=u*c+l;for(let T=0;T<r;T++)d[T]=t[_+T];return d}let p=o[u],g=o[u+1]||f,m;if(n){m=new Array(g-p);for(let _=p;_<g;_++){let T=_*c+l;d=new Array(r);for(let y=0;y<r;y++)d[y]=t[T+y];m[_-p]=d}}else if(c===r)m=t.subarray(p*r+l,g*r+l);else{m=new t.constructor((g-p)*r);let _=0;for(let T=p;T<g;T++){let y=T*c+l;for(let x=0;x<r;x++)m[_++]=t[y+x]}}return m}}var $0=[],wo=[[0,1/0]];function X0(t,e){if(t===wo||(e[0]<0&&(e[0]=0),e[0]>=e[1]))return t;let r=[],i=t.length,s=0;for(let o=0;o<i;o++){let n=t[o];n[1]<e[0]?(r.push(n),s=o+1):n[0]>e[1]?r.push(n):e=[Math.min(n[0],e[0]),Math.max(n[1],e[1])]}return r.splice(s,0,e),r}var B3={interpolation:{duration:0,easing:t=>t},spring:{stiffness:.05,damping:.5}};function yc(t,e){if(!t)return null;Number.isFinite(t)&&(t={type:"interpolation",duration:t});let r=t.type||"interpolation";return{...B3[r],...e,...t,type:r}}var Wt=class extends Eo{constructor(e,r){super(e,r,{startIndices:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:wo}),this.constant=!1,this.settings.update=r.update||(r.accessor?this._autoUpdater:void 0),Object.seal(this.settings),Object.seal(this.state),this._validateAttributeUpdaters()}get startIndices(){return this.state.startIndices}set startIndices(e){this.state.startIndices=e}needsUpdate(){return this.state.needsUpdate}needsRedraw({clearChangedFlags:e=!1}={}){let r=this.state.needsRedraw;return this.state.needsRedraw=r&&!e,r}layoutChanged(){return this.state.layoutChanged}setAccessor(e){var r;(r=this.state).layoutChanged||(r.layoutChanged=!W0(e,this.getAccessor())),super.setAccessor(e)}getUpdateTriggers(){let{accessor:e}=this.settings;return[this.id].concat(typeof e!="function"&&e||[])}supportsTransition(){return Boolean(this.settings.transition)}getTransitionSetting(e){if(!e||!this.supportsTransition())return null;let{accessor:r}=this.settings,i=this.settings.transition,s=Array.isArray(r)?e[r.find(o=>e[o])]:e[r];return yc(s,i)}setNeedsUpdate(e=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||e,this.setNeedsRedraw(e),r){let{startRow:i=0,endRow:s=1/0}=r;this.state.updateRanges=X0(this.state.updateRanges,[i,s])}else this.state.updateRanges=wo}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=$0}setNeedsRedraw(e=this.id){this.state.needsRedraw=this.state.needsRedraw||e}allocate(e){let{state:r,settings:i}=this;return i.noAlloc?!1:i.update?(super.allocate(e,r.updateRanges!==wo),!0):!1}updateBuffer({numInstances:e,data:r,props:i,context:s}){if(!this.needsUpdate())return!1;let{state:{updateRanges:o},settings:{update:n,noAlloc:a}}=this,c=!0;if(n){for(let[l,f]of o)n.call(s,this,{data:r,startRow:l,endRow:f,props:i,numInstances:e});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLength<this.value.byteLength+this.byteOffset)this.setData({value:this.value,constant:this.constant}),this.constant=!1;else for(let[l,f]of o){let h=Number.isFinite(l)?this.getVertexOffset(l):0,u=Number.isFinite(f)?this.getVertexOffset(f):a||!Number.isFinite(e)?this.value.length:e*this.size;super.updateSubBuffer({startOffset:h,endOffset:u})}this._checkAttributeArray()}else c=!1;return this.clearNeedsUpdate(),this.setNeedsRedraw(),c}setConstantValue(e,r){let i=this.device.type==="webgpu";if(i||r===void 0||typeof r=="function"){if(i&&typeof r!="function"){let n=this._normalizeValue(r,[],0);this._areValuesEqual(n,this.value)||this.setNeedsUpdate("WebGPU constant updated")}return!1}let s=this.settings.transform&&e?this.settings.transform.call(e,r):r;return this.setData({constant:!0,value:s})&&this.setNeedsRedraw(),this.clearNeedsUpdate(),!0}setExternalBuffer(e){let{state:r}=this;return e?(this.clearNeedsUpdate(),r.lastExternalBuffer===e||(r.lastExternalBuffer=e,this.setNeedsRedraw(),this.setData(e)),!0):(r.lastExternalBuffer=null,!1)}setBinaryValue(e,r=null){let{state:i,settings:s}=this;if(!e)return i.binaryValue=null,i.binaryAccessor=null,!1;if(s.noAlloc)return!1;if(i.binaryValue===e)return this.clearNeedsUpdate(),!0;if(i.binaryValue=e,this.setNeedsRedraw(),s.transform||r!==this.startIndices){ArrayBuffer.isView(e)&&(e={value:e});let n=e;Y(ArrayBuffer.isView(n.value),`invalid ${s.accessor}`);let a=Boolean(n.size)&&n.size!==this.size;return i.binaryAccessor=_c(n.value,{size:n.size||this.size,stride:n.stride,offset:n.offset,startIndices:r,nested:a}),!1}return this.clearNeedsUpdate(),this.setData(e),!0}getVertexOffset(e){let{startIndices:r}=this;return(r?e<r.length?r[e]:this.numInstances:e)*this.size}getValue(){let e=this.settings.shaderAttributes,r=super.getValue();if(!e)return r;for(let i in e)Object.assign(r,super.getValue(i,e[i]));return r}getBufferLayout(e){this.state.layoutChanged=!1;let r=this.settings.shaderAttributes,i=super._getBufferLayout(),{stepMode:s}=this.settings;if(s==="dynamic"?i.stepMode=e?e.isInstanced?"instance":"vertex":"instance":i.stepMode=s??"vertex",!r)return i;for(let o in r){let n=super._getBufferLayout(o,r[o]);i.attributes.push(...n.attributes)}return i}_autoUpdater(e,{data:r,startRow:i,endRow:s,props:o,numInstances:n}){if(e.constant&&this.context.device.type!=="webgpu")return;let{settings:a,state:c,value:l,size:f,startIndices:h}=e,{accessor:u,transform:d}=a,p=c.binaryAccessor||(typeof u=="function"?u:o[u]);typeof p!="function"&&typeof u=="string"&&(p=()=>o[u]),Y(typeof p=="function",`accessor "${u}" is not a function`);let g=e.getVertexOffset(i),{iterable:m,objectInfo:_}=Ui(r,i,s);for(let T of m){_.index++;let y=p(T,_);if(d&&(y=d.call(this,y)),h){let x=(_.index<h.length-1?h[_.index+1]:n)-h[_.index];if(y&&Array.isArray(y[0])){let S=g;for(let A of y)e._normalizeValue(A,l,S),S+=f}else y&&y.length>f?l.set(y,g):(e._normalizeValue(y,_.target,0),ba({target:l,source:_.target,start:g,count:x}));g+=x*f}else e._normalizeValue(y,l,g),g+=f}}_validateAttributeUpdaters(){let{settings:e}=this;if(!(e.noAlloc||typeof e.update=="function"))throw new Error(`Attribute ${this.id} missing update or accessor`)}_checkAttributeArray(){let{value:e}=this,r=Math.min(4,this.size);if(e&&e.length>=r){let i=!0;switch(r){case 4:i=i&&Number.isFinite(e[3]);case 3:i=i&&Number.isFinite(e[2]);case 2:i=i&&Number.isFinite(e[1]);case 1:i=i&&Number.isFinite(e[0]);break;default:i=!1}if(!i)throw new Error(`Illegal attribute generated for ${this.id}`)}}};function Au(t){let{source:e,target:r,start:i=0,size:s,getData:o}=t,n=t.end||r.length,a=e.length,c=n-i;if(a>c){r.set(e.subarray(0,c),i);return}if(r.set(e,i),!o)return;let l=a;for(;l<c;){let f=o(l,e);for(let h=0;h<s;h++)r[i+l]=f[h]||0,l++}}function Y0({source:t,target:e,size:r,getData:i,sourceStartIndices:s,targetStartIndices:o}){if(!s||!o)return Au({source:t,target:e,size:r,getData:i}),e;let n=0,a=0,c=i&&((f,h)=>i(f+a,h)),l=Math.min(s.length,o.length);for(let f=1;f<l;f++){let h=s[f]*r,u=o[f]*r;Au({source:t.subarray(n,h),target:e,start:a,end:u,size:r,getData:c}),n=h,a=u}return a<e.length&&Au({source:[],target:e,start:a,size:r,getData:c}),e}function Z0(t){let{device:e,settings:r,value:i}=t,s=new Wt(e,r);return s.setData({value:i instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:r.normalized}),s}function Tc(t){switch(t){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error(`No defined attribute type for size "${t}"`)}}function bc(t){switch(t){case 1:return"float32";case 2:return"float32x2";case 3:return"float32x3";case 4:return"float32x4";default:throw new Error("invalid type size")}}function xc(t){t.push(t.shift())}function K0(t,e){let{doublePrecision:r,settings:i,value:s,size:o}=t,n=r&&s instanceof Float64Array?2:1,a=0,{shaderAttributes:c}=t.settings;if(c)for(let l of Object.values(c))a=Math.max(a,l.vertexOffset??0);return(i.noAlloc?s.length:(e+a)*o)*n}function Ac({device:t,source:e,target:r}){return(!r||r.byteLength<e.byteLength)&&(r?.destroy(),r=t.createBuffer({byteLength:e.byteLength,usage:e.usage})),r}function Sc({device:t,buffer:e,attribute:r,fromLength:i,toLength:s,fromStartIndices:o,getData:n=a=>a}){let a=r.doublePrecision&&r.value instanceof Float64Array?2:1,c=r.size*a,l=r.byteOffset,f=r.settings.bytesPerElement<4?l/r.settings.bytesPerElement*4:l,h=r.startIndices,u=o&&h,d=r.isConstant;if(!u&&e&&i>=s)return e;let p=r.value instanceof Float64Array?Float32Array:r.value.constructor,g=d?r.value:new p(r.getBuffer().readSyncWebGL(l,s*p.BYTES_PER_ELEMENT).buffer);if(r.settings.normalized&&!d){let y=n;n=(x,S)=>r.normalizeConstant(y(x,S))}let m=d?(y,x)=>n(g,x):(y,x)=>n(g.subarray(y+l,y+l+c),x),_=e?new Float32Array(e.readSyncWebGL(f,i*4).buffer):new Float32Array(0),T=new Float32Array(s);return Y0({source:_,target:T,sourceStartIndices:o,targetStartIndices:h,size:c,getData:m}),(!e||e.byteLength<T.byteLength+f)&&(e?.destroy(),e=t.createBuffer({byteLength:T.byteLength+f,usage:35050})),e.write(T,f),e}var ki=class{constructor({device:e,attribute:r,timeline:i}){this.buffers=[],this.currentLength=0,this.device=e,this.transition=new Ze(i),this.attribute=r,this.attributeInTransition=Z0(r),this.currentStartIndices=r.startIndices}get inProgress(){return this.transition.inProgress}start(e,r,i=1/0){this.settings=e,this.currentStartIndices=this.attribute.startIndices,this.currentLength=K0(this.attribute,r),this.transition.start({...e,duration:i})}update(){let e=this.transition.update();return e&&this.onUpdate(),e}setBuffer(e){this.attributeInTransition.setData({buffer:e,normalized:this.attribute.settings.normalized,value:this.attributeInTransition.value})}cancel(){this.transition.cancel()}delete(){this.cancel();for(let e of this.buffers)e.destroy();this.buffers.length=0}};var Ro=class extends ki{constructor({device:e,attribute:r,timeline:i}){super({device:e,attribute:r,timeline:i}),this.type="interpolation",this.transform=V3(e,r)}start(e,r){let i=this.currentLength,s=this.currentStartIndices;if(super.start(e,r,e.duration),e.duration<=0){this.transition.cancel();return}let{buffers:o,attribute:n}=this;xc(o),o[0]=Sc({device:this.device,buffer:o[0],attribute:n,fromLength:i,toLength:this.currentLength,fromStartIndices:s,getData:e.enter}),o[1]=Ac({device:this.device,source:o[0],target:o[1]}),this.setBuffer(o[1]);let{transform:a}=this,c=a.model,l=Math.floor(this.currentLength/n.size);Q0(n)&&(l/=2),c.setVertexCount(l),n.isConstant?(c.setAttributes({aFrom:o[0]}),c.setConstantAttributes({aTo:n.value})):c.setAttributes({aFrom:o[0],aTo:n.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:o[1]})}onUpdate(){let{duration:e,easing:r}=this.settings,{time:i}=this.transition,s=i/e;r&&(s=r(s));let{model:o}=this.transform,n={time:s};o.shaderInputs.setProps({interpolation:n}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}},L3=`uniform interpolationUniforms {
1587
1663
  float time;
1588
1664
  } interpolation;
1589
- `,h0={name:"interpolation",vs:yR,uniformTypes:{time:"f32"}},bR=`#version 300 es
1665
+ `,q0={name:"interpolation",vs:L3,uniformTypes:{time:"f32"}},U3=`#version 300 es
1590
1666
  #define SHADER_NAME interpolation-transition-vertex-shader
1591
1667
 
1592
1668
  in ATTRIBUTE_TYPE aFrom;
@@ -1597,7 +1673,7 @@ void main(void) {
1597
1673
  vCurrent = mix(aFrom, aTo, interpolation.time);
1598
1674
  gl_Position = vec4(0.0);
1599
1675
  }
1600
- `,xR=`#version 300 es
1676
+ `,k3=`#version 300 es
1601
1677
  #define SHADER_NAME interpolation-transition-vertex-shader
1602
1678
 
1603
1679
  in ATTRIBUTE_TYPE aFrom;
@@ -1620,11 +1696,11 @@ void main(void) {
1620
1696
  }
1621
1697
  gl_Position = vec4(0.0);
1622
1698
  }
1623
- `;function u0(e){return e.doublePrecision&&e.value instanceof Float64Array}function AR(e,t){let r=t.size,i=nc(r),s=ac(r),o=t.getBufferLayout();return u0(t)?new Ut(e,{vs:xR,bufferLayout:[{name:"aFrom",byteStride:8*r,attributes:[{attribute:"aFrom",format:s,byteOffset:0},{attribute:"aFrom64Low",format:s,byteOffset:4*r}]},{name:"aTo",byteStride:8*r,attributes:[{attribute:"aTo",format:s,byteOffset:0},{attribute:"aTo64Low",format:s,byteOffset:4*r}]}],modules:[rf,h0],defines:{ATTRIBUTE_TYPE:i,ATTRIBUTE_SIZE:r},moduleSettings:{},varyings:["vCurrent","vCurrent64Low"],bufferMode:35980,disableWarnings:!0}):new Ut(e,{vs:bR,bufferLayout:[{name:"aFrom",format:s},{name:"aTo",format:o.attributes[0].format}],modules:[h0],defines:{ATTRIBUTE_TYPE:i},varyings:["vCurrent"],disableWarnings:!0})}var Ao=class extends Ui{constructor({device:t,attribute:r,timeline:i}){super({device:t,attribute:r,timeline:i}),this.type="spring",this.texture=MR(t),this.framebuffer=vR(t,this.texture),this.transform=PR(t,r)}start(t,r){let i=this.currentLength,s=this.currentStartIndices;super.start(t,r);let{buffers:o,attribute:n}=this;for(let c=0;c<2;c++)o[c]=fc({device:this.device,buffer:o[c],attribute:n,fromLength:i,toLength:this.currentLength,fromStartIndices:s,getData:t.enter});o[2]=lc({device:this.device,source:o[0],target:o[2]}),this.setBuffer(o[1]);let{model:a}=this.transform;a.setVertexCount(Math.floor(this.currentLength/n.size)),n.isConstant?a.setConstantAttributes({aTo:n.value}):a.setAttributes({aTo:n.getBuffer()})}onUpdate(){let{buffers:t,transform:r,framebuffer:i,transition:s}=this,o=this.settings;r.model.setAttributes({aPrev:t[0],aCur:t[1]}),r.transformFeedback.setBuffers({vNext:t[2]});let n={stiffness:o.stiffness,damping:o.damping};r.model.shaderInputs.setProps({spring:n}),r.run({framebuffer:i,discard:!1,parameters:{viewport:[0,0,1,1]},clearColor:[0,0,0,0]}),cc(t),this.setBuffer(t[1]),this.device.readPixelsToArrayWebGL(i)[0]>0||s.end()}delete(){super.delete(),this.transform.destroy(),this.texture.destroy(),this.framebuffer.destroy()}},SR=`uniform springUniforms {
1699
+ `;function Q0(t){return t.doublePrecision&&t.value instanceof Float64Array}function V3(t,e){let r=e.size,i=Tc(r),s=bc(r),o=e.getBufferLayout();return Q0(e)?new ze(t,{vs:k3,bufferLayout:[{name:"aFrom",byteStride:8*r,attributes:[{attribute:"aFrom",format:s,byteOffset:0},{attribute:"aFrom64Low",format:s,byteOffset:4*r}]},{name:"aTo",byteStride:8*r,attributes:[{attribute:"aTo",format:s,byteOffset:0},{attribute:"aTo64Low",format:s,byteOffset:4*r}]}],modules:[xf,q0],defines:{ATTRIBUTE_TYPE:i,ATTRIBUTE_SIZE:r},moduleSettings:{},varyings:["vCurrent","vCurrent64Low"],bufferMode:35980,disableWarnings:!0}):new ze(t,{vs:U3,bufferLayout:[{name:"aFrom",format:s},{name:"aTo",format:o.attributes[0].format}],modules:[q0],defines:{ATTRIBUTE_TYPE:i},varyings:["vCurrent"],disableWarnings:!0})}var Po=class extends ki{constructor({device:e,attribute:r,timeline:i}){super({device:e,attribute:r,timeline:i}),this.type="spring",this.texture=X3(e),this.framebuffer=Y3(e,this.texture),this.transform=$3(e,r)}start(e,r){let i=this.currentLength,s=this.currentStartIndices;super.start(e,r);let{buffers:o,attribute:n}=this;for(let c=0;c<2;c++)o[c]=Sc({device:this.device,buffer:o[c],attribute:n,fromLength:i,toLength:this.currentLength,fromStartIndices:s,getData:e.enter});o[2]=Ac({device:this.device,source:o[0],target:o[2]}),this.setBuffer(o[1]);let{model:a}=this.transform;a.setVertexCount(Math.floor(this.currentLength/n.size)),n.isConstant?a.setConstantAttributes({aTo:n.value}):a.setAttributes({aTo:n.getBuffer()})}onUpdate(){let{buffers:e,transform:r,framebuffer:i,transition:s}=this,o=this.settings;r.model.setAttributes({aPrev:e[0],aCur:e[1]}),r.transformFeedback.setBuffers({vNext:e[2]});let n={stiffness:o.stiffness,damping:o.damping};r.model.shaderInputs.setProps({spring:n}),r.run({framebuffer:i,discard:!1,parameters:{viewport:[0,0,1,1]},clearColor:[0,0,0,0]}),xc(e),this.setBuffer(e[1]),this.device.readPixelsToArrayWebGL(i)[0]>0||s.end()}delete(){super.delete(),this.transform.destroy(),this.texture.destroy(),this.framebuffer.destroy()}},z3=`uniform springUniforms {
1624
1700
  float damping;
1625
1701
  float stiffness;
1626
1702
  } spring;
1627
- `,ER={name:"spring",vs:SR,uniformTypes:{damping:"f32",stiffness:"f32"}},RR=`#version 300 es
1703
+ `,W3={name:"spring",vs:z3,uniformTypes:{damping:"f32",stiffness:"f32"}},j3=`#version 300 es
1628
1704
  #define SHADER_NAME spring-transition-vertex-shader
1629
1705
 
1630
1706
  #define EPSILON 0.00001
@@ -1651,7 +1727,7 @@ void main(void) {
1651
1727
  gl_Position = vec4(0, 0, 0, 1);
1652
1728
  gl_PointSize = 100.0;
1653
1729
  }
1654
- `,wR=`#version 300 es
1730
+ `,H3=`#version 300 es
1655
1731
  #define SHADER_NAME spring-transition-is-transitioning-fragment-shader
1656
1732
 
1657
1733
  in float vIsTransitioningFlag;
@@ -1663,6 +1739,6 @@ void main(void) {
1663
1739
  discard;
1664
1740
  }
1665
1741
  fragColor = vec4(1.0);
1666
- }`;function PR(e,t){let r=nc(t.size),i=ac(t.size);return new Ut(e,{vs:RR,fs:wR,bufferLayout:[{name:"aPrev",format:i},{name:"aCur",format:i},{name:"aTo",format:t.getBufferLayout().attributes[0].format}],varyings:["vNext"],modules:[ER],defines:{ATTRIBUTE_TYPE:r},parameters:{depthCompare:"always",blendColorOperation:"max",blendColorSrcFactor:"one",blendColorDstFactor:"one",blendAlphaOperation:"max",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one"}})}function MR(e){return e.createTexture({data:new Uint8Array(4),format:"rgba8unorm",width:1,height:1})}function vR(e,t){return e.createFramebuffer({id:"spring-transition-is-transitioning-framebuffer",width:1,height:1,colorAttachments:[t]})}var CR={interpolation:xo,spring:Ao},So=class{constructor(t,{id:r,timeline:i}){if(!t)throw new Error("AttributeTransitionManager is constructed without device");this.id=r,this.device=t,this.timeline=i,this.transitions={},this.needsRedraw=!1,this.numInstances=1}finalize(){for(let t in this.transitions)this._removeTransition(t)}update({attributes:t,transitions:r,numInstances:i}){this.numInstances=i||1;for(let s in t){let o=t[s],n=o.getTransitionSetting(r);n&&this._updateAttribute(s,o,n)}for(let s in this.transitions){let o=t[s];(!o||!o.getTransitionSetting(r))&&this._removeTransition(s)}}hasAttribute(t){let r=this.transitions[t];return r&&r.inProgress}getAttributes(){let t={};for(let r in this.transitions){let i=this.transitions[r];i.inProgress&&(t[r]=i.attributeInTransition)}return t}run(){if(this.numInstances===0)return!1;for(let r in this.transitions)this.transitions[r].update()&&(this.needsRedraw=!0);let t=this.needsRedraw;return this.needsRedraw=!1,t}_removeTransition(t){this.transitions[t].delete(),delete this.transitions[t]}_updateAttribute(t,r,i){let s=this.transitions[t],o=!s||s.type!==i.type;if(o){s&&this._removeTransition(t);let n=CR[i.type];n?this.transitions[t]=new n({attribute:r,timeline:this.timeline,device:this.device}):(F.error(`unsupported transition type '${i.type}'`)(),o=!1)}(o||r.needsRedraw())&&(this.needsRedraw=!0,this.transitions[t].start(i,this.numInstances))}};var d0="attributeManager.invalidate",IR="attributeManager.updateStart",OR="attributeManager.updateEnd",NR="attribute.updateStart",DR="attribute.allocate",FR="attribute.updateEnd",kr=class{constructor(t,{id:r="attribute-manager",stats:i,timeline:s}={}){this.mergeBoundsMemoized=Ot(xm),this.id=r,this.device=t,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new So(t,{id:`${r}-transitions`,timeline:s}),Object.seal(this)}finalize(){for(let t in this.attributes)this.attributes[t].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(t={clearRedrawFlags:!1}){let r=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!t.clearRedrawFlags,r&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(t){this._add(t)}addInstanced(t){this._add(t,{stepMode:"instance"})}remove(t){for(let r of t)this.attributes[r]!==void 0&&(this.attributes[r].delete(),delete this.attributes[r])}invalidate(t,r){let i=this._invalidateTrigger(t,r);J(d0,this,t,i)}invalidateAll(t){for(let r in this.attributes)this.attributes[r].setNeedsUpdate(r,t);J(d0,this,"all")}update({data:t,numInstances:r,startIndices:i=null,transitions:s,props:o={},buffers:n={},context:a={}}){let c=!1;J(IR,this),this.stats&&this.stats.get("Update Attributes").timeStart();for(let l in this.attributes){let f=this.attributes[l],h=f.settings.accessor;f.startIndices=i,f.numInstances=r,o[l]&&F.removed(`props.${l}`,`data.attributes.${l}`)(),f.setExternalBuffer(n[l])||f.setBinaryValue(typeof h=="string"?n[h]:void 0,t.startIndices)||typeof h=="string"&&!n[h]&&f.setConstantValue(a,o[h])||f.needsUpdate()&&(c=!0,this._updateAttribute({attribute:f,numInstances:r,data:t,props:o,context:a})),this.needsRedraw=this.needsRedraw||f.needsRedraw()}c&&J(OR,this,r),this.stats&&this.stats.get("Update Attributes").timeEnd(),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:r,transitions:s})}updateTransition(){let{attributeTransitionManager:t}=this,r=t.run();return this.needsRedraw=this.needsRedraw||r,r}getAttributes(){return{...this.attributes,...this.attributeTransitionManager.getAttributes()}}getBounds(t){let r=t.map(i=>this.attributes[i]?.getBounds());return this.mergeBoundsMemoized(r)}getChangedAttributes(t={clearChangedFlags:!1}){let{attributes:r,attributeTransitionManager:i}=this,s={...i.getAttributes()};for(let o in r){let n=r[o];n.needsRedraw(t)&&!i.hasAttribute(o)&&(s[o]=n)}return s}getBufferLayouts(t){return Object.values(this.getAttributes()).map(r=>r.getBufferLayout(t))}_add(t,r){for(let i in t){let s=t[i],o={...s,id:i,size:s.isIndexed&&1||s.size||1,...r};this.attributes[i]=new Be(this.device,o)}this._mapUpdateTriggersToAttributes()}_mapUpdateTriggersToAttributes(){let t={};for(let r in this.attributes)this.attributes[r].getUpdateTriggers().forEach(s=>{t[s]||(t[s]=[]),t[s].push(r)});this.updateTriggers=t}_invalidateTrigger(t,r){let{attributes:i,updateTriggers:s}=this,o=s[t];return o&&o.forEach(n=>{let a=i[n];a&&a.setNeedsUpdate(a.id,r)}),o}_updateAttribute(t){let{attribute:r,numInstances:i}=t;if(J(NR,r),r.constant){r.setConstantValue(t.context,r.value);return}r.allocate(i)&&J(DR,r,i),r.updateBuffer(t)&&(this.needsRedraw=!0,J(FR,r,i))}};D();Qa();var Eo=class extends $t{get value(){return this._value}_onUpdate(){let{time:t,settings:{fromValue:r,toValue:i,duration:s,easing:o}}=this,n=o(t/s);this._value=Ae(r,i,n)}};var p0=1e-5;function g0(e,t,r,i,s){let o=t-e,a=(r-t)*s,c=-o*i;return a+c+o+t}function BR(e,t,r,i,s){if(Array.isArray(r)){let o=[];for(let n=0;n<r.length;n++)o[n]=g0(e[n],t[n],r[n],i,s);return o}return g0(e,t,r,i,s)}function m0(e,t){if(Array.isArray(e)){let r=0;for(let i=0;i<e.length;i++){let s=e[i]-t[i];r+=s*s}return Math.sqrt(r)}return Math.abs(e-t)}var Ro=class extends $t{get value(){return this._currValue}_onUpdate(){let{fromValue:t,toValue:r,damping:i,stiffness:s}=this.settings,{_prevValue:o=t,_currValue:n=t}=this,a=BR(o,n,r,i,s),c=m0(a,r),l=m0(a,n);c<p0&&l<p0&&(a=r,this.end()),this._prevValue=n,this._currValue=a}};var LR={interpolation:Eo,spring:Ro},wo=class{constructor(t){this.transitions=new Map,this.timeline=t}get active(){return this.transitions.size>0}add(t,r,i,s){let{transitions:o}=this;if(o.has(t)){let c=o.get(t),{value:l=c.settings.fromValue}=c;r=l,this.remove(t)}if(s=oc(s),!s)return;let n=LR[s.type];if(!n){F.error(`unsupported transition type '${s.type}'`)();return}let a=new n(this.timeline);a.start({...s,fromValue:r,toValue:i}),o.set(t,a)}remove(t){let{transitions:r}=this;r.has(t)&&(r.get(t).cancel(),r.delete(t))}update(){let t={};for(let[r,i]of this.transitions)i.update(),t[r]=i.value,i.inProgress||this.remove(r);return t}clear(){for(let t of this.transitions.keys())this.remove(t)}};function T0(e){let t=e[Ft];for(let r in t){let i=t[r],{validate:s}=i;if(s&&!s(e[r],i))throw new Error(`Invalid prop ${r}: ${e[r]}`)}}function y0(e,t){let r=hc({newProps:e,oldProps:t,propTypes:e[Ft],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),i=kR(e,t),s=!1;return i||(s=VR(e,t)),{dataChanged:i,propsChanged:r,updateTriggersChanged:s,extensionsChanged:zR(e,t),transitionsChanged:UR(e,t)}}function UR(e,t){if(!e.transitions)return!1;let r={},i=e[Ft],s=!1;for(let o in e.transitions){let n=i[o],a=n&&n.type;(a==="number"||a==="color"||a==="array")&&Jh(e[o],t[o],n)&&(r[o]=!0,s=!0)}return s?r:!1}function hc({newProps:e,oldProps:t,ignoreProps:r={},propTypes:i={},triggerName:s="props"}){if(t===e)return!1;if(typeof e!="object"||e===null)return`${s} changed shallowly`;if(typeof t!="object"||t===null)return`${s} changed shallowly`;for(let o of Object.keys(e))if(!(o in r)){if(!(o in t))return`${s}.${o} added`;let n=Jh(e[o],t[o],i[o]);if(n)return`${s}.${o} ${n}`}for(let o of Object.keys(t))if(!(o in r)){if(!(o in e))return`${s}.${o} dropped`;if(!Object.hasOwnProperty.call(e,o)){let n=Jh(e[o],t[o],i[o]);if(n)return`${s}.${o} ${n}`}}return!1}function Jh(e,t,r){let i=r&&r.equal;return i&&!i(e,t,r)||!i&&(i=e&&t&&e.equals,i&&!i.call(e,t))?"changed deeply":!i&&t!==e?"changed shallowly":null}function kR(e,t){if(t===null)return"oldProps is null, initial diff";let r=!1,{dataComparator:i,_dataDiff:s}=e;return i?i(e.data,t.data)||(r="Data comparator detected a change"):e.data!==t.data&&(r="A new data container was supplied"),r&&s&&(r=s(e.data,t.data)||r),r}function VR(e,t){if(t===null)return{all:!0};if("all"in e.updateTriggers&&_0(e,t,"all"))return{all:!0};let r={},i=!1;for(let s in e.updateTriggers)s!=="all"&&_0(e,t,s)&&(r[s]=!0,i=!0);return i?r:!1}function zR(e,t){if(t===null)return!0;let r=t.extensions,{extensions:i}=e;if(i===r)return!1;if(!r||!i||i.length!==r.length)return!0;for(let s=0;s<i.length;s++)if(!i[s].equals(r[s]))return!0;return!1}function _0(e,t,r){let i=e.updateTriggers[r];i=i??{};let s=t.updateTriggers[r];return s=s??{},hc({oldProps:s,newProps:i,triggerName:r})}var jR="count(): argument not an object",WR="count(): argument not a container";function uc(e){if(!XR(e))throw new Error(jR);if(typeof e.count=="function")return e.count();if(Number.isFinite(e.size))return e.size;if(Number.isFinite(e.length))return e.length;if(HR(e))return Object.keys(e).length;throw new Error(WR)}function HR(e){return e!==null&&typeof e=="object"&&e.constructor===Object}function XR(e){return e!==null&&typeof e=="object"}function Po(e,t){if(!t)return e;let r={...e,...t};if("defines"in t&&(r.defines={...e.defines,...t.defines}),"modules"in t&&(r.modules=(e.modules||[]).concat(t.modules),t.modules.some(i=>i.name==="project64"))){let i=r.modules.findIndex(s=>s.name==="project32");i>=0&&r.modules.splice(i,1)}if("inject"in t)if(!e.inject)r.inject=t.inject;else{let i={...e.inject};for(let s in t.inject)i[s]=(i[s]||"")+t.inject[s];r.inject=i}return r}D();var $R={minFilter:"linear",mipmapFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"},Qh={};function b0(e,t,r,i){if(r instanceof k)return r;r.constructor&&r.constructor.name!=="Object"&&(r={data:r});let s=null;r.compressed&&(s={minFilter:"linear",mipmapFilter:r.data.length>1?"nearest":"linear"});let{width:o,height:n}=r.data,a=t.createTexture({...r,sampler:{...$R,...s,...i},mipLevels:t.getMipLevelCount(o,n)});return t.type==="webgl"&&a.generateMipmapsWebGL(),Qh[a.id]=e,a}function x0(e,t){!t||!(t instanceof k)||Qh[t.id]===e&&(t.delete(),delete Qh[t.id])}var YR={boolean:{validate(e,t){return!0},equal(e,t,r){return Boolean(e)===Boolean(t)}},number:{validate(e,t){return Number.isFinite(e)&&(!("max"in t)||e<=t.max)&&(!("min"in t)||e>=t.min)}},color:{validate(e,t){return t.optional&&!e||Gh(e)&&(e.length===3||e.length===4)},equal(e,t,r){return q(e,t,1)}},accessor:{validate(e,t){let r=dc(e);return r==="function"||r===dc(t.value)},equal(e,t,r){return typeof t=="function"?!0:q(e,t,1)}},array:{validate(e,t){return t.optional&&!e||Gh(e)},equal(e,t,r){let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?q(e,t,s):e===t}},object:{equal(e,t,r){if(r.ignore)return!0;let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?q(e,t,s):e===t}},function:{validate(e,t){return t.optional&&!e||typeof e=="function"},equal(e,t,r){return!r.compare&&r.ignore!==!1||e===t}},data:{transform:(e,t,r)=>{if(!e)return e;let{dataTransform:i}=r.props;return i?i(e):typeof e.shape=="string"&&e.shape.endsWith("-table")&&Array.isArray(e.data)?e.data:e}},image:{transform:(e,t,r)=>{let i=r.context;return!i||!i.device?null:b0(r.id,i.device,e,{...t.parameters,...r.props.textureParameters})},release:(e,t,r)=>{x0(r.id,e)}}};function A0(e){let t={},r={},i={};for(let[s,o]of Object.entries(e)){let n=o?.deprecatedFor;if(n)i[s]=Array.isArray(n)?n:[n];else{let a=KR(s,o);t[s]=a,r[s]=a.value}}return{propTypes:t,defaultProps:r,deprecatedProps:i}}function KR(e,t){switch(dc(t)){case"object":return Mo(e,t);case"array":return Mo(e,{type:"array",value:t,compare:!1});case"boolean":return Mo(e,{type:"boolean",value:t});case"number":return Mo(e,{type:"number",value:t});case"function":return Mo(e,{type:"function",value:t,compare:!0});default:return{name:e,type:"unknown",value:t}}}function Mo(e,t){return"type"in t?{name:e,...YR[t.type],...t}:"value"in t?{name:e,type:dc(t.value),...t}:{name:e,type:"object",value:t}}function Gh(e){return Array.isArray(e)||ArrayBuffer.isView(e)}function dc(e){return Gh(e)?"array":e===null?"null":typeof e}function S0(e,t){let r;for(let o=t.length-1;o>=0;o--){let n=t[o];"extensions"in n&&(r=n.extensions)}let i=tu(e.constructor,r),s=Object.create(i);s[Mi]=e,s[ae]={},s[Xt]={};for(let o=0;o<t.length;++o){let n=t[o];for(let a in n)s[a]=n[a]}return Object.freeze(s),s}var qR="_mergedDefaultProps";function tu(e,t){if(!(e instanceof ki.constructor))return{};let r=qR;if(t)for(let s of t){let o=s.constructor;o&&(r+=`:${o.extensionName||o.name}`)}let i=E0(e,r);return i||(e[r]=ZR(e,t||[]))}function ZR(e,t){if(!e.prototype)return null;let i=Object.getPrototypeOf(e),s=tu(i),o=E0(e,"defaultProps")||{},n=A0(o),a=Object.assign(Object.create(null),s,n.defaultProps),c=Object.assign(Object.create(null),s?.[Ft],n.propTypes),l=Object.assign(Object.create(null),s?.[pa],n.deprecatedProps);for(let f of t){let h=tu(f.constructor);h&&(Object.assign(a,h),Object.assign(c,h[Ft]),Object.assign(l,h[pa]))}return JR(a,e),GR(a,c),QR(a,l),a[Ft]=c,a[pa]=l,t.length===0&&!eu(e,"_propTypes")&&(e._propTypes=c),a}function JR(e,t){let r=ew(t);Object.defineProperties(e,{id:{writable:!0,value:r}})}function QR(e,t){for(let r in t)Object.defineProperty(e,r,{enumerable:!1,set(i){let s=`${this.id}: ${r}`;for(let o of t[r])eu(this,o)||(this[o]=i);F.deprecated(s,t[r].join("/"))()}})}function GR(e,t){let r={},i={};for(let s in t){let o=t[s],{name:n,value:a}=o;o.async&&(r[n]=a,i[n]=tw(n))}e[ve]=r,e[ae]={},Object.defineProperties(e,i)}function tw(e){return{enumerable:!0,set(t){typeof t=="string"||t instanceof Promise||ic(t)?this[ae][e]=t:this[Xt][e]=t},get(){if(this[Xt]){if(e in this[Xt])return this[Xt][e]||this[ve][e];if(e in this[ae]){let t=this[Mi]&&this[Mi].internalState;if(t&&t.hasAsyncProp(e))return t.getAsyncProp(e)||this[ve][e]}}return this[ve][e]}}}function eu(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function E0(e,t){return eu(e,t)&&e[t]}function ew(e){let t=e.componentName;return t||F.warn(`${e.name}.componentName not specified`)(),t||e.name}var rw=0,vo=class{constructor(...t){this.props=S0(this,t),this.id=this.props.id,this.count=rw++}clone(t){let{props:r}=this,i={};for(let s in r[ve])s in r[Xt]?i[s]=r[Xt][s]:s in r[ae]&&(i[s]=r[ae][s]);return new this.constructor({...r,...i,...t})}};vo.componentName="Component";vo.defaultProps={};var ki=vo;var iw=Object.freeze({}),Vr=class{constructor(t){this.component=t,this.asyncProps={},this.onAsyncPropUpdated=()=>{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(let t in this.asyncProps){let r=this.asyncProps[t];r&&r.type&&r.type.release&&r.type.release(r.resolvedValue,r.type,this.component)}this.asyncProps={},this.component=null,this.resetOldProps()}getOldProps(){return this.oldAsyncProps||this.oldProps||iw}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component?this.component.props:null}hasAsyncProp(t){return t in this.asyncProps}getAsyncProp(t){let r=this.asyncProps[t];return r&&r.resolvedValue}isAsyncPropLoading(t){if(t){let r=this.asyncProps[t];return Boolean(r&&r.pendingLoadCount>0&&r.pendingLoadCount!==r.resolvedLoadCount)}for(let r in this.asyncProps)if(this.isAsyncPropLoading(r))return!0;return!1}reloadAsyncProp(t,r){this._watchPromise(t,Promise.resolve(r))}setAsyncProps(t){this.component=t[Mi]||this.component;let r=t[Xt]||{},i=t[ae]||t,s=t[ve]||{};for(let o in r){let n=r[o];this._createAsyncPropData(o,s[o]),this._updateAsyncProp(o,n),r[o]=this.getAsyncProp(o)}for(let o in i){let n=i[o];this._createAsyncPropData(o,s[o]),this._updateAsyncProp(o,n)}}_fetch(t,r){return null}_onResolve(t,r){}_onError(t,r){}_updateAsyncProp(t,r){if(this._didAsyncInputValueChange(t,r)){if(typeof r=="string"&&(r=this._fetch(t,r)),r instanceof Promise){this._watchPromise(t,r);return}if(ic(r)){this._resolveAsyncIterable(t,r);return}this._setPropValue(t,r)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps){this.oldAsyncProps=Object.create(this.oldProps);for(let t in this.asyncProps)Object.defineProperty(this.oldAsyncProps,t,{enumerable:!0,value:this.oldProps[t]})}}_didAsyncInputValueChange(t,r){let i=this.asyncProps[t];return r===i.resolvedValue||r===i.lastValue?!1:(i.lastValue=r,!0)}_setPropValue(t,r){this._freezeAsyncOldProps();let i=this.asyncProps[t];i&&(r=this._postProcessValue(i,r),i.resolvedValue=r,i.pendingLoadCount++,i.resolvedLoadCount=i.pendingLoadCount)}_setAsyncPropValue(t,r,i){let s=this.asyncProps[t];s&&i>=s.resolvedLoadCount&&r!==void 0&&(this._freezeAsyncOldProps(),s.resolvedValue=r,s.resolvedLoadCount=i,this.onAsyncPropUpdated(t,r))}_watchPromise(t,r){let i=this.asyncProps[t];if(i){i.pendingLoadCount++;let s=i.pendingLoadCount;r.then(o=>{this.component&&(o=this._postProcessValue(i,o),this._setAsyncPropValue(t,o,s),this._onResolve(t,o))}).catch(o=>{this._onError(t,o)})}}async _resolveAsyncIterable(t,r){if(t!=="data"){this._setPropValue(t,r);return}let i=this.asyncProps[t];if(!i)return;i.pendingLoadCount++;let s=i.pendingLoadCount,o=[],n=0;for await(let a of r){if(!this.component)return;let{dataTransform:c}=this.component.props;c?o=c(a,o):o=o.concat(a),Object.defineProperty(o,"__diff",{enumerable:!1,value:[{startRow:n,endRow:o.length}]}),n=o.length,this._setAsyncPropValue(t,o,s)}this._onResolve(t,o)}_postProcessValue(t,r){let i=t.type;return i&&this.component&&(i.release&&i.release(t.resolvedValue,i,this.component),i.transform)?i.transform(r,i,this.component):r}_createAsyncPropData(t,r){if(!this.asyncProps[t]){let s=this.component&&this.component.props[Ft];this.asyncProps[t]={type:s&&s[t],lastValue:null,resolvedValue:r,pendingLoadCount:0,resolvedLoadCount:0}}}};var Co=class extends Vr{constructor({attributeManager:t,layer:r}){super(r),this.attributeManager=t,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1}get layer(){return this.component}_fetch(t,r){let i=this.layer,s=i?.props.fetch;return s?s(r,{propName:t,layer:i}):super._fetch(t,r)}_onResolve(t,r){let i=this.layer;if(i){let s=i.props.onDataLoad;t==="data"&&s&&s(r,{propName:t,layer:i})}}_onError(t,r){let i=this.layer;i&&i.raiseError(r,`loading ${t} of ${this.layer}`)}};var sw="layer.changeFlag",ow="layer.initialize",nw="layer.update",aw="layer.finalize",cw="layer.matched",R0=2**24-1,lw=Object.freeze([]),fw=Ot(({oldViewport:e,viewport:t})=>e.equals(t)),Zt=new Uint8ClampedArray(0),hw={data:{type:"data",value:lw,async:!0},dataComparator:{type:"function",value:null,optional:!0},_dataDiff:{type:"function",value:e=>e&&e.__diff,optional:!0},dataTransform:{type:"function",value:null,optional:!0},onDataLoad:{type:"function",value:null,optional:!0},onError:{type:"function",value:null,optional:!0},fetch:{type:"function",value:(e,{propName:t,layer:r,loaders:i,loadOptions:s,signal:o})=>{let{resourceManager:n}=r.context;s=s||r.getLoadOptions(),i=i||r.props.loaders,o&&(s={...s,core:{...s?.core,fetch:{...s?.core?.fetch,signal:o}}});let a=n.contains(e);return!a&&!s&&(n.add({resourceId:e,data:Ke(e,i),persistent:!1}),a=!0),a?n.subscribe({resourceId:e,onChange:c=>r.internalState?.reloadAsyncProp(t,c),consumerId:r.id,requestId:t}):Ke(e,i,s)}},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:"number",min:0,max:1,value:1},operation:"draw",onHover:{type:"function",value:null,optional:!0},onClick:{type:"function",value:null,optional:!0},onDragStart:{type:"function",value:null,optional:!0},onDrag:{type:"function",value:null,optional:!0},onDragEnd:{type:"function",value:null,optional:!0},coordinateSystem:B.DEFAULT,coordinateOrigin:{type:"array",value:[0,0,0],compare:!0},modelMatrix:{type:"array",value:null,compare:!0,optional:!0},wrapLongitude:!1,positionFormat:"XYZ",colorFormat:"RGBA",parameters:{type:"object",value:{},optional:!0,compare:2},loadOptions:{type:"object",value:null,optional:!0,ignore:!0},transitions:null,extensions:[],loaders:{type:"array",value:[],optional:!0,ignore:!0},getPolygonOffset:{type:"function",value:({layerIndex:e})=>[0,-e*100]},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:"accessor",value:[0,0,128,128]}},Io=class extends ki{constructor(){super(...arguments),this.internalState=null,this.lifecycle=er.NO_STATE,this.parent=null}static get componentName(){return Object.prototype.hasOwnProperty.call(this,"layerName")?this.layerName:""}get root(){let t=this;for(;t.parent;)t=t.parent;return t}toString(){return`${this.constructor.layerName||this.constructor.name}({id: '${this.props.id}'})`}project(t){Y(this.internalState);let r=this.internalState.viewport||this.context.viewport,i=yh(t,{viewport:r,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[s,o,n]=xi(i,r.pixelProjectionMatrix);return t.length===2?[s,o]:[s,o,n]}unproject(t){return Y(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(t)}projectPosition(t,r){Y(this.internalState);let i=this.internalState.viewport||this.context.viewport;return ha(t,{viewport:i,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...r})}get isComposite(){return!1}get isDrawable(){return!0}setState(t){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,t),this.setNeedsRedraw()}setNeedsRedraw(){this.internalState&&(this.internalState.needsRedraw=!0)}setNeedsUpdate(){this.internalState&&(this.context.layerManager.setNeedsUpdate(String(this)),this.internalState.needsUpdate=!0)}get isLoaded(){return this.internalState?!this.internalState.isAsyncPropLoading():!1}get wrapLongitude(){return this.props.wrapLongitude}isPickable(){return this.props.pickable&&this.props.visible}getModels(){let t=this.state;return t&&(t.models||t.model&&[t.model])||[]}setShaderModuleProps(...t){for(let r of this.getModels())r.shaderInputs.setProps(...t)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){let{coordinateSystem:t}=this.props;return t===B.DEFAULT||t===B.LNGLAT||t===B.CARTESIAN}onHover(t,r){return this.props.onHover&&this.props.onHover(t,r)||!1}onClick(t,r){return this.props.onClick&&this.props.onClick(t,r)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(t,r=[]){return r[0]=t+1&255,r[1]=t+1>>8&255,r[2]=t+1>>8>>8&255,r}decodePickingColor(t){Y(t instanceof Uint8Array);let[r,i,s]=t;return r+i*256+s*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:uc(this.props.data)}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){return this.getAttributeManager()?.getBounds(["positions","instancePositions"])}getShaders(t){t=Po(t,{disableWarnings:!0,modules:this.context.defaultShaderModules});for(let r of this.props.extensions)t=Po(t,r.getShaders.call(this,r));return t}shouldUpdateState(t){return t.changeFlags.propsOrDataChanged}updateState(t){let r=this.getAttributeManager(),{dataChanged:i}=t.changeFlags;if(i&&r)if(Array.isArray(i))for(let s of i)r.invalidateAll(s);else r.invalidateAll();if(r){let{props:s}=t,o=this.internalState.hasPickingBuffer,n=Number.isInteger(s.highlightedObjectIndex)||Boolean(s.pickable)||s.extensions.some(a=>a.getNeedsPickingBuffer.call(this,a));if(o!==n){this.internalState.hasPickingBuffer=n;let{pickingColors:a,instancePickingColors:c}=r.attributes,l=a||c;l&&(n&&l.constant&&(l.constant=!1,r.invalidate(l.id)),!l.value&&!n&&(l.constant=!0,l.value=[0,0,0]))}}}finalizeState(t){for(let i of this.getModels())i.destroy();let r=this.getAttributeManager();r&&r.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(t){for(let r of this.getModels())r.draw(t.renderPass)}getPickingInfo({info:t,mode:r,sourceLayer:i}){let{index:s}=t;return s>=0&&Array.isArray(this.props.data)&&(t.object=this.props.data[s]),t}raiseError(t,r){r&&(t=new Error(`${r}: ${t.message}`,{cause:t})),this.props.onError?.(t)||this.context?.onError?.(t,this)}getNeedsRedraw(t={clearRedrawFlags:!1}){return this._getNeedsRedraw(t)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){return this.internalState?.uniformTransitions.active||!1}activateViewport(t){if(!this.internalState)return;let r=this.internalState.viewport;this.internalState.viewport=t,(!r||!fw({oldViewport:r,viewport:t}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(t="all"){let r=this.getAttributeManager();r&&(t==="all"?r.invalidateAll():r.invalidate(t))}updateAttributes(t){let r=!1;for(let i in t)t[i].layoutChanged()&&(r=!0);for(let i of this.getModels())this._setModelAttributes(i,t,r)}_updateAttributes(){let t=this.getAttributeManager();if(!t)return;let r=this.props,i=this.getNumInstances(),s=this.getStartIndices();t.update({data:r.data,numInstances:i,startIndices:s,props:r,transitions:r.transitions,buffers:r.data.attributes,context:this});let o=t.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(o)}_updateAttributeTransition(){let t=this.getAttributeManager();t&&t.updateTransition()}_updateUniformTransition(){let{uniformTransitions:t}=this.internalState;if(t.active){let r=t.update(),i=Object.create(this.props);for(let s in r)Object.defineProperty(i,s,{value:r[s]});return i}return this.props}calculateInstancePickingColors(t,{numInstances:r}){if(t.constant)return;let i=Math.floor(Zt.length/4);if(this.internalState.usesPickingColorCache=!0,i<r){r>R0&&F.warn("Layer has too many data objects. Picking might not be able to distinguish all objects.")(),Zt=Ht.allocate(Zt,r,{size:4,copy:!0,maxCount:Math.max(r,R0)});let s=Math.floor(Zt.length/4),o=[0,0,0];for(let n=i;n<s;n++)this.encodePickingColor(n,o),Zt[n*4+0]=o[0],Zt[n*4+1]=o[1],Zt[n*4+2]=o[2],Zt[n*4+3]=0}t.value=Zt.subarray(0,r*4)}_setModelAttributes(t,r,i=!1){if(!Object.keys(r).length)return;if(i){let a=this.getAttributeManager();t.setBufferLayout(a.getBufferLayouts(t)),r=a.getAttributes()}let s=t.userData?.excludeAttributes||{},o={},n={};for(let a in r){if(s[a])continue;let c=r[a].getValue();for(let l in c){let f=c[l];f instanceof O?r[a].settings.isIndexed?t.setIndexBuffer(f):o[l]=f:f&&(n[l]=f)}}t.setAttributes(o),t.setConstantAttributes(n)}disablePickingIndex(t){let r=this.props.data;if(!("attributes"in r)){this._disablePickingIndex(t);return}let{pickingColors:i,instancePickingColors:s}=this.getAttributeManager().attributes,o=i||s,n=o&&r.attributes&&r.attributes[o.id];if(n&&n.value){let a=n.value,c=this.encodePickingColor(t);for(let l=0;l<r.length;l++){let f=o.getVertexOffset(l);a[f]===c[0]&&a[f+1]===c[1]&&a[f+2]===c[2]&&this._disablePickingIndex(l)}}else this._disablePickingIndex(t)}_disablePickingIndex(t){let{pickingColors:r,instancePickingColors:i}=this.getAttributeManager().attributes,s=r||i;if(!s)return;let o=s.getVertexOffset(t),n=s.getVertexOffset(t+1);s.buffer.write(new Uint8Array(n-o),o)}restorePickingColors(){let{pickingColors:t,instancePickingColors:r}=this.getAttributeManager().attributes,i=t||r;i&&(this.internalState.usesPickingColorCache&&i.value.buffer!==Zt.buffer&&(i.value=Zt.subarray(0,i.value.length)),i.updateSubBuffer({startOffset:0}))}_initialize(){Y(!this.internalState),Y(Number.isFinite(this.props.coordinateSystem)),J(ow,this);let t=this._getAttributeManager();t&&t.addInstanced({instancePickingColors:{type:"uint8",size:4,noAlloc:!0,update:this.calculateInstancePickingColors}}),this.internalState=new Co({attributeManager:t,layer:this}),this._clearChangeFlags(),this.state={},Object.defineProperty(this.state,"attributeManager",{get:()=>(F.deprecated("layer.state.attributeManager","layer.getAttributeManager()")(),t)}),this.internalState.uniformTransitions=new wo(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(let r of this.props.extensions)r.initializeState.call(this,this.context,r);this.setChangeFlags({dataChanged:"init",propsChanged:"init",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(t){J(cw,this,this===t);let{state:r,internalState:i}=t;this!==t&&(this.internalState=i,this.state=r,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){let t=this.needsUpdate();if(J(nw,this,t),!t)return;let r=this.props,i=this.context,s=this.internalState,o=i.viewport,n=this._updateUniformTransition();s.propsInTransition=n,i.viewport=s.viewport||o,this.props=n;try{let a=this._getUpdateParams(),c=this.getModels();if(i.device)this.updateState(a);else try{this.updateState(a)}catch{}for(let f of this.props.extensions)f.updateState.call(this,a,f);this.setNeedsRedraw(),this._updateAttributes();let l=this.getModels()[0]!==c[0];this._postUpdate(a,l)}finally{i.viewport=o,this.props=r,this._clearChangeFlags(),s.needsUpdate=!1,s.resetOldProps()}}_finalize(){J(aw,this),this.finalizeState(this.context);for(let t of this.props.extensions)t.finalizeState.call(this,this.context,t)}_drawLayer({renderPass:t,shaderModuleProps:r=null,uniforms:i={},parameters:s={}}){this._updateAttributeTransition();let o=this.props,n=this.context;this.props=this.internalState.propsInTransition||o;try{r&&this.setShaderModuleProps(r);let{getPolygonOffset:a}=this.props,c=a&&a(i)||[0,0];n.device instanceof Ur&&n.device.setParametersWebGL({polygonOffset:c});for(let l of this.getModels())l.device.type==="webgpu"?l.setParameters({...l.parameters,...s}):l.setParameters(s);if(n.device instanceof Ur)n.device.withParametersWebGL(s,()=>{let l={renderPass:t,shaderModuleProps:r,uniforms:i,parameters:s,context:n};for(let f of this.props.extensions)f.draw.call(this,l,f);this.draw(l)});else{let l={renderPass:t,shaderModuleProps:r,uniforms:i,parameters:s,context:n};for(let f of this.props.extensions)f.draw.call(this,l,f);this.draw(l)}}finally{this.props=o}}getChangeFlags(){return this.internalState?.changeFlags}setChangeFlags(t){if(!this.internalState)return;let{changeFlags:r}=this.internalState;for(let s in t)if(t[s]){let o=!1;switch(s){case"dataChanged":let n=t[s],a=r[s];n&&Array.isArray(a)&&(r.dataChanged=Array.isArray(n)?a.concat(n):n,o=!0);default:r[s]||(r[s]=t[s],o=!0)}o&&J(sw,this,s,t)}let i=Boolean(r.dataChanged||r.updateTriggersChanged||r.propsChanged||r.extensionsChanged);r.propsOrDataChanged=i,r.somethingChanged=i||r.viewportChanged||r.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(t,r){let i=y0(t,r);if(i.updateTriggersChanged)for(let s in i.updateTriggersChanged)i.updateTriggersChanged[s]&&this.invalidateAttribute(s);if(i.transitionsChanged)for(let s in i.transitionsChanged)this.internalState.uniformTransitions.add(s,r[s],t[s],t.transitions?.[s]);return this.setChangeFlags(i)}validateProps(){T0(this.props)}updateAutoHighlight(t){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(t)}_updateAutoHighlight(t){let r={highlightedObjectColor:t.picked?t.color:null},{highlightColor:i}=this.props;t.picked&&typeof i=="function"&&(r.highlightColor=i(t)),this.setShaderModuleProps({picking:r}),this.setNeedsRedraw()}_getAttributeManager(){let t=this.context;return new kr(t.device,{id:this.props.id,stats:t.stats,timeline:t.timeline})}_postUpdate(t,r){let{props:i,oldProps:s}=t,o=this.state.model;o?.isInstanced&&o.setInstanceCount(this.getNumInstances());let{autoHighlight:n,highlightedObjectIndex:a,highlightColor:c}=i;if(r||s.autoHighlight!==n||s.highlightedObjectIndex!==a||s.highlightColor!==c){let l={};Array.isArray(c)&&(l.highlightColor=c),(r||s.autoHighlight!==n||a!==s.highlightedObjectIndex)&&(l.highlightedObjectColor=Number.isFinite(a)&&a>=0?this.encodePickingColor(a):null),this.setShaderModuleProps({picking:l})}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(t){if(!this.internalState)return!1;let r=!1;r=r||this.internalState.needsRedraw&&this.id;let i=this.getAttributeManager(),s=i?i.getNeedsRedraw(t):!1;if(r=r||s,r)for(let o of this.props.extensions)o.onNeedsRedraw.call(this,o);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!t.clearRedrawFlags,r}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}};Io.defaultProps=hw;Io.layerName="Layer";var pc=Io;var uw="compositeLayer.renderLayers",gc=class extends pc{get isComposite(){return!0}get isDrawable(){return!1}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(t=>t.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(t){}setState(t){super.setState(t),this.setNeedsUpdate()}getPickingInfo({info:t}){let{object:r}=t;return r&&r.__source&&r.__source.parent&&r.__source.parent.id===this.id&&(t.object=r.__source.object,t.index=r.__source.index),t}filterSubLayer(t){return!0}shouldRenderSubLayer(t,r){return r&&r.length}getSubLayerClass(t,r){let{_subLayerProps:i}=this.props;return i&&i[t]&&i[t].type||r}getSubLayerRow(t,r,i){return t.__source={parent:this,object:r,index:i},t}getSubLayerAccessor(t){if(typeof t=="function"){let r={index:-1,data:this.props.data,target:[]};return(i,s)=>i&&i.__source?(r.index=i.__source.index,t(i.__source.object,r)):t(i,s)}return t}getSubLayerProps(t={}){let{opacity:r,pickable:i,visible:s,parameters:o,getPolygonOffset:n,highlightedObjectIndex:a,autoHighlight:c,highlightColor:l,coordinateSystem:f,coordinateOrigin:h,wrapLongitude:u,positionFormat:d,modelMatrix:p,extensions:g,fetch:m,operation:_,_subLayerProps:y}=this.props,T={id:"",updateTriggers:{},opacity:r,pickable:i,visible:s,parameters:o,getPolygonOffset:n,highlightedObjectIndex:a,autoHighlight:c,highlightColor:l,coordinateSystem:f,coordinateOrigin:h,wrapLongitude:u,positionFormat:d,modelMatrix:p,extensions:g,fetch:m,operation:_},x=y&&t.id&&y[t.id],S=x&&x.updateTriggers,E=t.id||"sublayer";if(x){let v=this.props[Ft],P=t.type?t.type._propTypes:{};for(let R in x){let M=P[R]||v[R];M&&M.type==="accessor"&&(x[R]=this.getSubLayerAccessor(x[R]))}}Object.assign(T,t,x),T.id=`${this.props.id}-${E}`,T.updateTriggers={all:this.props.updateTriggers?.all,...t.updateTriggers,...S};for(let v of g){let P=v.getSubLayerProps.call(this,v);P&&Object.assign(T,P,{updateTriggers:Object.assign(T.updateTriggers,P.updateTriggers)})}return T}_updateAutoHighlight(t){for(let r of this.getSubLayers())r.updateAutoHighlight(t)}_getAttributeManager(){return null}_postUpdate(t,r){let i=this.internalState.subLayers,s=!i||this.needsUpdate();if(s){let o=this.renderLayers();i=rr(o,Boolean),this.internalState.subLayers=i}J(uw,this,s,i);for(let o of i)o.parent=this}};gc.layerName="CompositeLayer";var w0=gc;var ru=Math.PI/180;function dw({height:e,focalDistance:t,orbitAxis:r,rotationX:i,rotationOrbit:s,zoom:o}){let n=r==="Z"?[0,0,1]:[0,1,0],a=r==="Z"?[0,-t,0]:[0,0,t],c=new j().lookAt({eye:a,up:n});c.rotateX(i*ru),r==="Z"?c.rotateZ(s*ru):c.rotateY(s*ru);let l=Math.pow(2,o)/e;return c.scale(l),c}var mc=class extends bt{constructor(t){let{height:r,projectionMatrix:i,fovy:s=50,orbitAxis:o="Z",target:n=[0,0,0],rotationX:a=0,rotationOrbit:c=0,zoom:l=0}=t,f=i?i[5]/2:we(s);super({...t,longitude:void 0,viewMatrix:dw({height:r||1,focalDistance:f,orbitAxis:o,rotationX:a,rotationOrbit:c,zoom:l}),fovy:s,focalDistance:f,position:n,zoom:l}),this.target=n,this.orbitAxis=o,this.rotationX=a,this.rotationOrbit=c,this.fovy=s,this.projectedCenter=this.project(this.center)}unproject(t,{topLeft:r=!0}={}){let[i,s,o=this.projectedCenter[2]]=t,n=r?s:this.height-s,[a,c,l]=Dt([i,n,o],this.pixelUnprojectionMatrix);return[a,c,l]}panByPosition(t,r,i){let s=this.project(t),o=[this.width/2+s[0]-r[0],this.height/2+s[1]-r[1],this.projectedCenter[2]];return{target:this.unproject(o)}}};mc.displayName="OrbitViewport";var _c=mc;var pw=new j().lookAt({eye:[0,0,1]});function gw({width:e,height:t,near:r,far:i,padding:s}){let o=-e/2,n=e/2,a=-t/2,c=t/2;if(s){let{left:l=0,right:f=0,top:h=0,bottom:u=0}=s,d=H((l+e-f)/2,0,e)-e/2,p=H((h+t-u)/2,0,t)-t/2;o-=d,n-=d,a+=p,c+=p}return new j().ortho({left:o,right:n,bottom:a,top:c,near:r,far:i})}var Tc=class extends bt{constructor(t){let{width:r,height:i,near:s=.1,far:o=1e3,zoom:n=0,target:a=[0,0,0],padding:c=null,flipY:l=!0}=t,f=t.zoomX??(Array.isArray(n)?n[0]:n),h=t.zoomY??(Array.isArray(n)?n[1]:n),u=Math.min(f,h),d=Math.pow(2,u),p;if(f!==h){let g=Math.pow(2,f),m=Math.pow(2,h);p={unitsPerMeter:[g/d,m/d,1],metersPerUnit:[d/g,d/m,1]}}super({...t,longitude:void 0,position:a,viewMatrix:pw.clone().scale([d,d*(l?-1:1),d]),projectionMatrix:gw({width:r||1,height:i||1,padding:c,near:s,far:o}),zoom:u,distanceScales:p}),this.target=a,this.zoomX=f,this.zoomY=h,this.flipY=l}projectFlat([t,r]){let{unitsPerMeter:i}=this.distanceScales;return[t*i[0],r*i[1]]}unprojectFlat([t,r]){let{metersPerUnit:i}=this.distanceScales;return[t*i[0],r*i[1]]}panByPosition(t,r,i){let s=Dt(r,this.pixelUnprojectionMatrix),o=this.projectFlat(t),n=tt.add([],o,tt.negate([],s)),a=tt.add([],this.center,n);return{target:this.unprojectFlat(a)}}};Tc.displayName="OrthographicViewport";var yc=Tc;var bc=class extends bt{constructor(t){let{longitude:r,latitude:i,modelMatrix:s,bearing:o=0,pitch:n=0,up:a=[0,0,1]}=t,l=new Lt({bearing:o,pitch:n===-90?1e-4:90+n}).toVector3().normalize(),f=s?new j(s).transformAsVector(l):l,h=Number.isFinite(i)?zs({latitude:i}):0,u=Math.pow(2,h),d=new j().lookAt({eye:[0,0,0],center:f,up:a}).scale(u);super({...t,zoom:h,viewMatrix:d}),this.latitude=i,this.longitude=r,this.pitch=n,this.bearing=o,this.up=a}};bc.displayName="FirstPersonViewport";var xc=bc;var zr=20,P0=500,Oo=class extends De{constructor(t){let{width:r,height:i,position:s=[0,0,0],bearing:o=0,pitch:n=0,longitude:a=null,latitude:c=null,maxPitch:l=90,minPitch:f=-90,startRotatePos:h,startBearing:u,startPitch:d,startZoomPosition:p,startPanPos:g,startPanPosition:m}=t;super({width:r,height:i,position:s,bearing:o,pitch:n,longitude:a,latitude:c,maxPitch:l,minPitch:f},{startRotatePos:h,startBearing:u,startPitch:d,startZoomPosition:p,startPanPos:g,startPanPosition:m}),this.makeViewport=t.makeViewport}panStart({pos:t}){let{position:r}=this.getViewportProps();return this._getUpdatedState({startPanPos:t,startPanPosition:r})}pan({pos:t}){if(!t)return this;let{startPanPos:r=[0,0],startPanPosition:i=[0,0]}=this.getState(),{width:s,height:o,bearing:n,pitch:a}=this.getViewportProps(),c=P0*(t[0]-r[0])/s,l=P0*(t[1]-r[1])/o,f=new Lt({bearing:n,pitch:a}),h=new Lt({bearing:n,pitch:-90}),u=f.toVector3().normalize(),d=h.toVector3().cross(u).normalize();return this._getUpdatedState({position:new z(i).add(d.scale(c)).add(u.scale(l))})}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:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startBearing:o,startPitch:n}=this.getState(),{width:a,height:c}=this.getViewportProps();if(!s||o===void 0||n===void 0)return this;let l;if(t){let f=(t[0]-s[0])/a,h=(t[1]-s[1])/c;l={bearing:o-f*180,pitch:n-h*90}}else l={bearing:o-r,pitch:n-i};return this._getUpdatedState(l)}rotateEnd(){return this._getUpdatedState({startRotatePos:null,startBearing:null,startPitch:null})}zoomStart(){return this._getUpdatedState({startZoomPosition:this.getViewportProps().position})}zoom({pos:t,scale:r}){let i=this.getViewportProps(),s=this.getState().startZoomPosition||i.position,o=this.makeViewport(i),{projectionMatrix:n,width:a}=o,l=2*Math.atan(1/n[0])*(t[0]/a-.5),f=this.getDirection(!0);return this._move(f.rotateZ({radians:-l}),Math.log2(r)*zr,s)}zoomEnd(){return this._getUpdatedState({startZoomPosition:null})}moveLeft(t=zr){let r=this.getDirection(!0);return this._move(r.rotateZ({radians:Math.PI/2}),t)}moveRight(t=zr){let r=this.getDirection(!0);return this._move(r.rotateZ({radians:-Math.PI/2}),t)}moveUp(t=zr){let r=this.getDirection(!0);return this._move(r,t)}moveDown(t=zr){let r=this.getDirection(!0);return this._move(r.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=zr){return this._move(new z(0,0,1),t)}zoomOut(t=zr){return this._move(new z(0,0,-1),t)}shortestPathFrom(t){let r=t.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:o}=i;return Math.abs(s-r.bearing)>180&&(i.bearing=s<0?s+360:s-360),o!==null&&r.longitude!==null&&Math.abs(o-r.longitude)>180&&(i.longitude=o<0?o+360:o-360),i}_move(t,r,i=this.getViewportProps().position){let s=t.scale(r);return this._getUpdatedState({position:new z(i).add(s)})}getDirection(t=!1){return new Lt({bearing:this.getViewportProps().bearing,pitch:t?90:90+this.getViewportProps().pitch}).toVector3().normalize()}_getUpdatedState(t){return new Oo({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}applyConstraints(t){let{pitch:r,maxPitch:i,minPitch:s,longitude:o,bearing:n}=t;return t.pitch=H(r,s,i),o!==null&&(o<-180||o>180)&&(t.longitude=Mr(o+180,360)-180),(n<-180||n>180)&&(t.bearing=Mr(n+180,360)-180),t}},jr=class extends gt{constructor(){super(...arguments),this.ControllerState=Oo,this.transition={transitionDuration:300,transitionInterpolator:new at(["position","pitch","bearing"])}}};var Ac=class extends pt{constructor(t={}){super(t)}getViewportType(){return xc}get ControllerType(){return jr}};Ac.displayName="FirstPersonView";var M0=Ac;var No=class extends De{constructor(t){let{width:r,height:i,rotationX:s=0,rotationOrbit:o=0,target:n=[0,0,0],zoom:a=0,minRotationX:c=-90,maxRotationX:l=90,minZoom:f=-1/0,maxZoom:h=1/0,startPanPosition:u,startRotatePos:d,startRotationX:p,startRotationOrbit:g,startZoomPosition:m,startZoom:_}=t;super({width:r,height:i,rotationX:s,rotationOrbit:o,target:n,zoom:a,minRotationX:c,maxRotationX:l,minZoom:f,maxZoom:h},{startPanPosition:u,startRotatePos:d,startRotationX:p,startRotationOrbit:g,startZoomPosition:m,startZoom:_}),this.makeViewport=t.makeViewport}panStart({pos:t}){return this._getUpdatedState({startPanPosition:this._unproject(t)})}pan({pos:t,startPosition:r}){let i=this.getState().startPanPosition||r;if(!i)return this;let o=this.makeViewport(this.getViewportProps()).panByPosition(i,t);return this._getUpdatedState(o)}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:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startRotationX:o,startRotationOrbit:n}=this.getState(),{width:a,height:c}=this.getViewportProps();if(!s||o===void 0||n===void 0)return this;let l;if(t){let f=(t[0]-s[0])/a,h=(t[1]-s[1])/c;(o<-90||o>90)&&(f*=-1),l={rotationX:o+h*180,rotationOrbit:n+f*180}}else l={rotationX:o+i,rotationOrbit:n+r};return this._getUpdatedState(l)}rotateEnd(){return this._getUpdatedState({startRotationX:null,startRotationOrbit:null})}shortestPathFrom(t){let r=t.getViewportProps(),i={...this.getViewportProps()},{rotationOrbit:s}=i;return Math.abs(s-r.rotationOrbit)>180&&(i.rotationOrbit=s<0?s+360:s-360),i}zoomStart({pos:t}){return this._getUpdatedState({startZoomPosition:this._unproject(t),startZoom:this.getViewportProps().zoom})}zoom({pos:t,startPos:r,scale:i}){let{startZoom:s,startZoomPosition:o}=this.getState();if(o||(s=this.getViewportProps().zoom,o=this._unproject(r||t)),!o)return this;let n=this._calculateNewZoom({scale:i,startZoom:s}),a=this.makeViewport({...this.getViewportProps(),zoom:n});return this._getUpdatedState({zoom:n,...a.panByPosition(o,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})}_project(t){return this.makeViewport(this.getViewportProps()).project(t)}_unproject(t){return this.makeViewport(this.getViewportProps()).unproject(t)}_calculateNewZoom({scale:t,startZoom:r}){let{maxZoom:i,minZoom:s}=this.getViewportProps();r===void 0&&(r=this.getViewportProps().zoom);let o=r+Math.log2(t);return H(o,s,i)}_panFromCenter(t){let{target:r}=this.getViewportProps(),i=this._project(r);return this.pan({startPosition:r,pos:[i[0]+t[0],i[1]+t[1]]})}_getUpdatedState(t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}applyConstraints(t){let{maxZoom:r,minZoom:i,zoom:s,maxRotationX:o,minRotationX:n,rotationOrbit:a}=t;return t.zoom=Array.isArray(s)?[H(s[0],i,r),H(s[1],i,r)]:H(s,i,r),t.rotationX=H(t.rotationX,n,o),(a<-180||a>180)&&(t.rotationOrbit=Mr(a+180,360)-180),t}},Wr=class extends gt{constructor(){super(...arguments),this.ControllerState=No,this.transition={transitionDuration:300,transitionInterpolator:new at({transitionProps:{compare:["target","zoom","rotationX","rotationOrbit"],required:["target","zoom"]}})}}};var Sc=class extends pt{constructor(t={}){super(t),this.props.orbitAxis=t.orbitAxis||"Z"}getViewportType(){return _c}get ControllerType(){return Wr}};Sc.displayName="OrbitView";var v0=Sc;var iu=class extends No{constructor(t){super(t),this.zoomAxis=t.zoomAxis||"all"}_calculateNewZoom({scale:t,startZoom:r}){let{maxZoom:i,minZoom:s}=this.getViewportProps();r===void 0&&(r=this.getViewportProps().zoom);let o=Math.log2(t);if(Array.isArray(r)){let[n,a]=r;switch(this.zoomAxis){case"X":n=H(n+o,s,i);break;case"Y":a=H(a+o,s,i);break;default:let c=Math.min(n+o,a+o);c<s&&(o+=s-c),c=Math.max(n+o,a+o),c>i&&(o+=i-c),n+=o,a+=o}return[n,a]}return H(r+o,s,i)}},Hr=class extends gt{constructor(){super(...arguments),this.ControllerState=iu,this.transition={transitionDuration:300,transitionInterpolator:new at(["target","zoom"])},this.dragMode="pan"}_onPanRotate(){return!1}};var Ec=class extends pt{constructor(t={}){super(t)}getViewportType(){return yc}get ControllerType(){return Hr}};Ec.displayName="OrthographicView";var C0=Ec;var su=class extends ro{constructor(t){let{startPanPos:r,...i}=t;super(i),r!==void 0&&(this._state.startPanPos=r)}panStart({pos:t}){let{latitude:r,longitude:i,zoom:s}=this.getViewportProps();return this._getUpdatedState({startPanLngLat:[i,r],startPanPos:t,startZoom:s})}pan({pos:t,startPos:r}){let i=this.getState(),s=i.startPanLngLat||this._unproject(r);if(!s)return this;let o=i.startZoom??this.getViewportProps().zoom,n=i.startPanPos||r,a=[s[0],s[1],o],l=this.makeViewport(this.getViewportProps()).panByPosition(a,t,n);return this._getUpdatedState(l)}panEnd(){return this._getUpdatedState({startPanLngLat:null,startPanPos:null,startZoom:null})}zoom({scale:t}){let i=(this.getState().startZoom||this.getViewportProps().zoom)+Math.log2(t);return this._getUpdatedState({zoom:i})}applyConstraints(t){let{longitude:r,latitude:i,maxZoom:s,minZoom:o,zoom:n}=t,a=Nr(0),c=Nr(i)-a;return t.zoom=H(n,o+c,s+c),(r<-180||r>180)&&(t.longitude=Mr(r+180,360)-180),t.latitude=H(i,-Tt,Tt),t}},Xr=class extends gt{constructor(){super(...arguments),this.ControllerState=su,this.transition={transitionDuration:300,transitionInterpolator:new at(["longitude","latitude","zoom"])},this.dragMode="pan"}setProps(t){super.setProps(t),this.dragRotate=!1,this.touchRotate=!1}};var Rc=class extends pt{constructor(t={}){super(t)}getViewportType(t){return t.zoom>12?tr:Ci}get ControllerType(){return Xr}};Rc.displayName="GlobeView";var I0=Rc;var Do=class{static get componentName(){return Object.prototype.hasOwnProperty.call(this,"extensionName")?this.extensionName:""}constructor(t){t&&(this.opts=t)}equals(t){return this===t?!0:this.constructor===t.constructor&&q(this.opts,t.opts,1)}getShaders(t){return null}getSubLayerProps(t){let{defaultProps:r}=t.constructor,i={updateTriggers:{}};for(let s in r)if(s in this.props){let o=r[s],n=this.props[s];i[s]=n,o&&o.type==="accessor"&&(i.updateTriggers[s]=this.props.updateTriggers[s],typeof n=="function"&&(i[s]=this.getSubLayerAccessor(n)))}return i}initializeState(t,r){}updateState(t,r){}onNeedsRedraw(t){}getNeedsPickingBuffer(t){return!1}draw(t,r){}finalizeState(t,r){}};Do.defaultProps={};Do.extensionName="LayerExtension";var O0=Do;var ou={bearing:0,pitch:0,position:[0,0,0]},mw={speed:1.2,curve:1.414},Fo=class extends Oe{constructor(t={}){super({compare:["longitude","latitude","zoom","bearing","pitch","position"],extract:["width","height","longitude","latitude","zoom","bearing","pitch","position"],required:["width","height","latitude","longitude","zoom"]}),this.opts={...mw,...t}}interpolateProps(t,r,i){let s=dh(t,r,i,this.opts);for(let o in ou)s[o]=Ae(t[o]||ou[o],r[o]||ou[o],i);return s}getDuration(t,r){let{transitionDuration:i}=r;return i==="auto"&&(i=ph(t,r,this.opts)),i}};D();var Bo=class{constructor(t){this.indexStarts=[0],this.vertexStarts=[0],this.vertexCount=0,this.instanceCount=0;let{attributes:r={}}=t;this.typedArrayManager=Ht,this.attributes={},this._attributeDefs=r,this.opts=t,this.updateGeometry(t)}updateGeometry(t){Object.assign(this.opts,t);let{data:r,buffers:i={},getGeometry:s,geometryBuffer:o,positionFormat:n,dataChanged:a,normalize:c=!0}=this.opts;if(this.data=r,this.getGeometry=s,this.positionSize=o&&o.size||(n==="XY"?2:3),this.buffers=i,this.normalize=c,o&&(Y(r.startIndices),this.getGeometry=this.getGeometryFromBuffer(o),c||(i.vertexPositions=o)),this.geometryBuffer=i.vertexPositions,Array.isArray(a))for(let l of a)this._rebuildGeometry(l);else this._rebuildGeometry()}updatePartialGeometry({startRow:t,endRow:r}){this._rebuildGeometry({startRow:t,endRow:r})}getGeometryFromBuffer(t){let r=t.value||t;return ArrayBuffer.isView(r)?sc(r,{size:this.positionSize,offset:t.offset,stride:t.stride,startIndices:this.data.startIndices}):null}_allocate(t,r){let{attributes:i,buffers:s,_attributeDefs:o,typedArrayManager:n}=this;for(let a in o)if(a in s)n.release(i[a]),i[a]=null;else{let c=o[a];c.copy=r,i[a]=n.allocate(i[a],t,c)}}_forEachGeometry(t,r,i){let{data:s,getGeometry:o}=this,{iterable:n,objectInfo:a}=Li(s,r,i);for(let c of n){a.index++;let l=o?o(c,a):null;t(l,a.index)}}_rebuildGeometry(t){if(!this.data)return;let{indexStarts:r,vertexStarts:i,instanceCount:s}=this,{data:o,geometryBuffer:n}=this,{startRow:a=0,endRow:c=1/0}=t||{},l={};if(t||(r=[0],i=[0]),this.normalize||!n)this._forEachGeometry((h,u)=>{let d=h&&this.normalizeGeometry(h);l[u]=d,i[u+1]=i[u]+(d?this.getGeometrySize(d):0)},a,c),s=i[i.length-1];else if(i=o.startIndices,s=i[o.length]||0,ArrayBuffer.isView(n))s=s||n.length/this.positionSize;else if(n instanceof O){let h=this.positionSize*4;s=s||n.byteLength/h}else if(n.buffer){let h=n.stride||this.positionSize*4;s=s||n.buffer.byteLength/h}else if(n.value){let h=n.value,u=n.stride/h.BYTES_PER_ELEMENT||this.positionSize;s=s||h.length/u}this._allocate(s,Boolean(t)),this.indexStarts=r,this.vertexStarts=i,this.instanceCount=s;let f={};this._forEachGeometry((h,u)=>{let d=l[u]||h;f.vertexStart=i[u],f.indexStart=r[u];let p=u<i.length-1?i[u+1]:s;f.geometrySize=p-i[u],f.geometryIndex=u,this.updateGeometryAttributes(d,f)},a,c),this.vertexCount=r[r.length-1]}};var wc=class{constructor(t){this.map=null,this.width=0,this.height=0,this.props={...t},this._initialize(this.props)}finalize(){this.map?.remove(),this.map=null}setProps(t){let r=this.props,i={...this.props,...t};if(this.props=i,!this.map)return;this._update(r,i)&&this.redraw()}redraw(){let t=this.map;t.style&&(t._frame&&(t._frame.cancel(),t._frame=null),t._render())}getMap(){return this.map}_initialize(t){let{mapLib:r,container:i}=t;r.accessToken=t.mapboxApiAccessToken||"",this.map=new t.mapLib.Map({container:i,maxZoom:24,...t.mapOptions,...N0(t.viewState),style:t.mapStyle,interactive:!1,trackResize:!1}),Object.defineProperty(i,"offsetWidth",{get:()=>this.width}),Object.defineProperty(i,"clientWidth",{get:()=>this.width}),Object.defineProperty(i,"offsetHeight",{get:()=>this.height}),Object.defineProperty(i,"clientHeight",{get:()=>this.height}),this.map.resize()}_update(t,r){t.mapStyle!==r.mapStyle&&this.map.setStyle(r.mapStyle);let s=t.width!==r.width||t.height!==r.height;s&&(this.width=r.width,this.height=r.height,this.map.resize());let o=t.viewState,n=r.viewState,a=n.latitude!==o.latitude||n.longitude!==o.longitude||n.zoom!==o.zoom||n.pitch!==o.pitch||n.bearing!==o.bearing;return a&&this.map.jumpTo(N0(n)),s||a}};function N0(e){return{center:[e.longitude,e.latitude],zoom:e.zoom,bearing:e.bearing??0,pitch:e.pitch??0}}var D0={position:"absolute",left:0,top:0,width:"100%",height:"100%"};function _w(e){let{container:t=document.body}=e;if(typeof t=="string"&&(t=document.getElementById(t)),!t)throw Error("Deck: container not found");window.getComputedStyle(t).position==="static"&&(t.style.position="relative");let i=document.createElement("div");t.appendChild(i),Object.assign(i.style,D0);let s=document.createElement("canvas");return t.appendChild(s),Object.assign(s.style,D0),{container:t,mapCanvas:i,deckCanvas:s}}var Lo=class extends rc{constructor(t){if(typeof document>"u")throw Error("Deck can only be used in the browser");let{mapCanvas:r,deckCanvas:i}=_w(t),s=t.viewState||t.initialViewState,o=Number.isFinite(s&&s.latitude),{map:n=globalThis.mapboxgl||globalThis.maplibregl}=t;super({canvas:i,...t}),n&&n.Map?this._map=o&&new wc({...t,width:0,height:0,viewState:s,container:r,mapLib:n}):this._map=n}getMapboxMap(){return this._map&&this._map.getMap()}finalize(){this._map&&this._map.finalize(),super.finalize()}setProps(t){"mapStyle"in t&&this._map&&this._map.setProps({mapStyle:t.mapStyle}),super.setProps(t)}_drawLayers(t,r){if(this._map){let i=this.getViewports()[0];i&&this._map.setProps({width:i.width,height:i.height,viewState:i})}super._drawLayers(t,r)}};globalThis.luma=globalThis.luma||{};globalThis.loaders=globalThis.loaders||{};Object.assign(globalThis.luma,pf);Object.assign(globalThis.loaders,jf);return V0(Tw);})();
1742
+ }`;function $3(t,e){let r=Tc(e.size),i=bc(e.size);return new ze(t,{vs:j3,fs:H3,bufferLayout:[{name:"aPrev",format:i},{name:"aCur",format:i},{name:"aTo",format:e.getBufferLayout().attributes[0].format}],varyings:["vNext"],modules:[W3],defines:{ATTRIBUTE_TYPE:r},parameters:{depthCompare:"always",blendColorOperation:"max",blendColorSrcFactor:"one",blendColorDstFactor:"one",blendAlphaOperation:"max",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one"}})}function X3(t){return t.createTexture({data:new Uint8Array(4),format:"rgba8unorm",width:1,height:1})}function Y3(t,e){return t.createFramebuffer({id:"spring-transition-is-transitioning-framebuffer",width:1,height:1,colorAttachments:[e]})}var Z3={interpolation:Ro,spring:Po},vo=class{constructor(e,{id:r,timeline:i}){if(!e)throw new Error("AttributeTransitionManager is constructed without device");this.id=r,this.device=e,this.timeline=i,this.transitions={},this.needsRedraw=!1,this.numInstances=1}finalize(){for(let e in this.transitions)this._removeTransition(e)}update({attributes:e,transitions:r,numInstances:i}){this.numInstances=i||1;for(let s in e){let o=e[s],n=o.getTransitionSetting(r);n&&this._updateAttribute(s,o,n)}for(let s in this.transitions){let o=e[s];(!o||!o.getTransitionSetting(r))&&this._removeTransition(s)}}hasAttribute(e){let r=this.transitions[e];return r&&r.inProgress}getAttributes(){let e={};for(let r in this.transitions){let i=this.transitions[r];i.inProgress&&(e[r]=i.attributeInTransition)}return e}run(){if(this.numInstances===0)return!1;for(let r in this.transitions)this.transitions[r].update()&&(this.needsRedraw=!0);let e=this.needsRedraw;return this.needsRedraw=!1,e}_removeTransition(e){this.transitions[e].delete(),delete this.transitions[e]}_updateAttribute(e,r,i){let s=this.transitions[e],o=!s||s.type!==i.type;if(o){s&&this._removeTransition(e);let n=Z3[i.type];n?this.transitions[e]=new n({attribute:r,timeline:this.timeline,device:this.device}):(L.error(`unsupported transition type '${i.type}'`)(),o=!1)}(o||r.needsRedraw())&&(this.needsRedraw=!0,this.transitions[e].start(i,this.numInstances))}};var G0="attributeManager.invalidate",K3="attributeManager.updateStart",q3="attributeManager.updateEnd",Q3="attribute.updateStart",G3="attribute.allocate",J3="attribute.updateEnd",jr=class{constructor(e,{id:r="attribute-manager",stats:i,timeline:s}={}){this.mergeBoundsMemoized=Be(r_),this.id=r,this.device=e,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new vo(e,{id:`${r}-transitions`,timeline:s}),Object.seal(this)}finalize(){for(let e in this.attributes)this.attributes[e].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(e={clearRedrawFlags:!1}){let r=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!e.clearRedrawFlags,r&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(e){this._add(e)}addInstanced(e){this._add(e,{stepMode:"instance"})}remove(e){for(let r of e)this.attributes[r]!==void 0&&(this.attributes[r].delete(),delete this.attributes[r])}invalidate(e,r){let i=this._invalidateTrigger(e,r);Q(G0,this,e,i)}invalidateAll(e){for(let r in this.attributes)this.attributes[r].setNeedsUpdate(r,e);Q(G0,this,"all")}update({data:e,numInstances:r,startIndices:i=null,transitions:s,props:o={},buffers:n={},context:a={}}){let c=!1;Q(K3,this),this.stats&&this.stats.get("Update Attributes").timeStart();for(let l in this.attributes){let f=this.attributes[l],h=f.settings.accessor;f.startIndices=i,f.numInstances=r,o[l]&&L.removed(`props.${l}`,`data.attributes.${l}`)(),f.setExternalBuffer(n[l])||f.setBinaryValue(typeof h=="string"?n[h]:void 0,e.startIndices)||typeof h=="string"&&!n[h]&&f.setConstantValue(a,o[h])||f.needsUpdate()&&(c=!0,this._updateAttribute({attribute:f,numInstances:r,data:e,props:o,context:a})),this.needsRedraw=this.needsRedraw||f.needsRedraw()}c&&Q(q3,this,r),this.stats&&(this.stats.get("Update Attributes").timeEnd(),c&&this.stats.get("Attributes updated").incrementCount()),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:r,transitions:s})}updateTransition(){let{attributeTransitionManager:e}=this,r=e.run();return this.needsRedraw=this.needsRedraw||r,r}getAttributes(){return{...this.attributes,...this.attributeTransitionManager.getAttributes()}}getBounds(e){let r=e.map(i=>this.attributes[i]?.getBounds());return this.mergeBoundsMemoized(r)}getChangedAttributes(e={clearChangedFlags:!1}){let{attributes:r,attributeTransitionManager:i}=this,s={...i.getAttributes()};for(let o in r){let n=r[o];n.needsRedraw(e)&&!i.hasAttribute(o)&&(s[o]=n)}return s}getBufferLayouts(e){return Object.values(this.getAttributes()).map(r=>r.getBufferLayout(e))}_add(e,r){for(let i in e){let s=e[i],o={...s,id:i,size:s.isIndexed&&1||s.size||1,...r};this.attributes[i]=new Wt(this.device,o)}this._mapUpdateTriggersToAttributes()}_mapUpdateTriggersToAttributes(){let e={};for(let r in this.attributes)this.attributes[r].getUpdateTriggers().forEach(s=>{e[s]||(e[s]=[]),e[s].push(r)});this.updateTriggers=e}_invalidateTrigger(e,r){let{attributes:i,updateTriggers:s}=this,o=s[e];return o&&o.forEach(n=>{let a=i[n];a&&a.setNeedsUpdate(a.id,r)}),o}_updateAttribute(e){let{attribute:r,numInstances:i}=e;if(Q(Q3,r),r.constant){r.setConstantValue(e.context,r.value);return}r.allocate(i)&&Q(G3,r,i),r.updateBuffer(e)&&(this.needsRedraw=!0,Q(J3,r,i))}};F();hc();var Mo=class extends Ze{get value(){return this._value}_onUpdate(){let{time:e,settings:{fromValue:r,toValue:i,duration:s,easing:o}}=this,n=o(e/s);this._value=vt(r,i,n)}};var J0=1e-5;function ey(t,e,r,i,s){let o=e-t,a=(r-e)*s,c=-o*i;return a+c+o+e}function eP(t,e,r,i,s){if(Array.isArray(r)){let o=[];for(let n=0;n<r.length;n++)o[n]=ey(t[n],e[n],r[n],i,s);return o}return ey(t,e,r,i,s)}function ty(t,e){if(Array.isArray(t)){let r=0;for(let i=0;i<t.length;i++){let s=t[i]-e[i];r+=s*s}return Math.sqrt(r)}return Math.abs(t-e)}var Co=class extends Ze{get value(){return this._currValue}_onUpdate(){let{fromValue:e,toValue:r,damping:i,stiffness:s}=this.settings,{_prevValue:o=e,_currValue:n=e}=this,a=eP(o,n,r,i,s),c=ty(a,r),l=ty(a,n);c<J0&&l<J0&&(a=r,this.end()),this._prevValue=n,this._currValue=a}};var tP={interpolation:Mo,spring:Co},Io=class{constructor(e){this.transitions=new Map,this.timeline=e}get active(){return this.transitions.size>0}add(e,r,i,s){let{transitions:o}=this;if(o.has(e)){let c=o.get(e),{value:l=c.settings.fromValue}=c;r=l,this.remove(e)}if(s=yc(s),!s)return;let n=tP[s.type];if(!n){L.error(`unsupported transition type '${s.type}'`)();return}let a=new n(this.timeline);a.start({...s,fromValue:r,toValue:i}),o.set(e,a)}remove(e){let{transitions:r}=this;r.has(e)&&(r.get(e).cancel(),r.delete(e))}update(){let e={};for(let[r,i]of this.transitions)i.update(),e[r]=i.value,i.inProgress||this.remove(r);return e}clear(){for(let e of this.transitions.keys())this.remove(e)}};function iy(t){let e=t[ke];for(let r in e){let i=e[r],{validate:s}=i;if(s&&!s(t[r],i))throw new Error(`Invalid prop ${r}: ${t[r]}`)}}function sy(t,e){let r=Ec({newProps:t,oldProps:e,propTypes:t[ke],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),i=iP(t,e),s=!1;return i||(s=sP(t,e)),{dataChanged:i,propsChanged:r,updateTriggersChanged:s,extensionsChanged:oP(t,e),transitionsChanged:rP(t,e)}}function rP(t,e){if(!t.transitions)return!1;let r={},i=t[ke],s=!1;for(let o in t.transitions){let n=i[o],a=n&&n.type;(a==="number"||a==="color"||a==="array")&&Su(t[o],e[o],n)&&(r[o]=!0,s=!0)}return s?r:!1}function Ec({newProps:t,oldProps:e,ignoreProps:r={},propTypes:i={},triggerName:s="props"}){if(e===t)return!1;if(typeof t!="object"||t===null)return`${s} changed shallowly`;if(typeof e!="object"||e===null)return`${s} changed shallowly`;for(let o of Object.keys(t))if(!(o in r)){if(!(o in e))return`${s}.${o} added`;let n=Su(t[o],e[o],i[o]);if(n)return`${s}.${o} ${n}`}for(let o of Object.keys(e))if(!(o in r)){if(!(o in t))return`${s}.${o} dropped`;if(!Object.hasOwnProperty.call(t,o)){let n=Su(t[o],e[o],i[o]);if(n)return`${s}.${o} ${n}`}}return!1}function Su(t,e,r){let i=r&&r.equal;return i&&!i(t,e,r)||!i&&(i=t&&e&&t.equals,i&&!i.call(t,e))?"changed deeply":!i&&e!==t?"changed shallowly":null}function iP(t,e){if(e===null)return"oldProps is null, initial diff";let r=!1,{dataComparator:i,_dataDiff:s}=t;return i?i(t.data,e.data)||(r="Data comparator detected a change"):t.data!==e.data&&(r="A new data container was supplied"),r&&s&&(r=s(t.data,e.data)||r),r}function sP(t,e){if(e===null)return{all:!0};if("all"in t.updateTriggers&&ry(t,e,"all"))return{all:!0};let r={},i=!1;for(let s in t.updateTriggers)s!=="all"&&ry(t,e,s)&&(r[s]=!0,i=!0);return i?r:!1}function oP(t,e){if(e===null)return!0;let r=e.extensions,{extensions:i}=t;if(i===r)return!1;if(!r||!i||i.length!==r.length)return!0;for(let s=0;s<i.length;s++)if(!i[s].equals(r[s]))return!0;return!1}function ry(t,e,r){let i=t.updateTriggers[r];i=i??{};let s=e.updateTriggers[r];return s=s??{},Ec({oldProps:s,newProps:i,triggerName:r})}var nP="count(): argument not an object",aP="count(): argument not a container";function wc(t){if(!lP(t))throw new Error(nP);if(typeof t.count=="function")return t.count();if(Number.isFinite(t.size))return t.size;if(Number.isFinite(t.length))return t.length;if(cP(t))return Object.keys(t).length;throw new Error(aP)}function cP(t){return t!==null&&typeof t=="object"&&t.constructor===Object}function lP(t){return t!==null&&typeof t=="object"}function Oo(t,e){if(!e)return t;let r={...t,...e};if("defines"in e&&(r.defines={...t.defines,...e.defines}),"modules"in e&&(r.modules=(t.modules||[]).concat(e.modules),e.modules.some(i=>i.name==="project64"))){let i=r.modules.findIndex(s=>s.name==="project32");i>=0&&r.modules.splice(i,1)}if("inject"in e)if(!t.inject)r.inject=e.inject;else{let i={...t.inject};for(let s in e.inject)i[s]=(i[s]||"")+e.inject[s];r.inject=i}return r}F();var fP={minFilter:"linear",mipmapFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"},Eu={};function oy(t,e,r,i){if(r instanceof U)return r;r.constructor&&r.constructor.name!=="Object"&&(r={data:r});let s=null;r.compressed&&(s={minFilter:"linear",mipmapFilter:r.data.length>1?"nearest":"linear"});let{width:o,height:n}=r.data,a=e.createTexture({...r,sampler:{...fP,...s,...i},mipLevels:e.getMipLevelCount(o,n)});return e.type==="webgl"&&a.generateMipmapsWebGL(),Eu[a.id]=t,a}function ny(t,e){!e||!(e instanceof U)||Eu[e.id]===t&&(e.delete(),delete Eu[e.id])}var hP={boolean:{validate(t,e){return!0},equal(t,e,r){return Boolean(t)===Boolean(e)}},number:{validate(t,e){return Number.isFinite(t)&&(!("max"in e)||t<=e.max)&&(!("min"in e)||t>=e.min)}},color:{validate(t,e){return e.optional&&!t||wu(t)&&(t.length===3||t.length===4)},equal(t,e,r){return K(t,e,1)}},accessor:{validate(t,e){let r=Rc(t);return r==="function"||r===Rc(e.value)},equal(t,e,r){return typeof e=="function"?!0:K(t,e,1)}},array:{validate(t,e){return e.optional&&!t||wu(t)},equal(t,e,r){let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?K(t,e,s):t===e}},object:{equal(t,e,r){if(r.ignore)return!0;let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?K(t,e,s):t===e}},function:{validate(t,e){return e.optional&&!t||typeof t=="function"},equal(t,e,r){return!r.compare&&r.ignore!==!1||t===e}},data:{transform:(t,e,r)=>{if(!t)return t;let{dataTransform:i}=r.props;return i?i(t):typeof t.shape=="string"&&t.shape.endsWith("-table")&&Array.isArray(t.data)?t.data:t}},image:{transform:(t,e,r)=>{let i=r.context;return!i||!i.device?null:oy(r.id,i.device,t,{...e.parameters,...r.props.textureParameters})},release:(t,e,r)=>{ny(r.id,t)}}};function ay(t){let e={},r={},i={};for(let[s,o]of Object.entries(t)){let n=o?.deprecatedFor;if(n)i[s]=Array.isArray(n)?n:[n];else{let a=uP(s,o);e[s]=a,r[s]=a.value}}return{propTypes:e,defaultProps:r,deprecatedProps:i}}function uP(t,e){switch(Rc(e)){case"object":return No(t,e);case"array":return No(t,{type:"array",value:e,compare:!1});case"boolean":return No(t,{type:"boolean",value:e});case"number":return No(t,{type:"number",value:e});case"function":return No(t,{type:"function",value:e,compare:!0});default:return{name:t,type:"unknown",value:e}}}function No(t,e){return"type"in e?{name:t,...hP[e.type],...e}:"value"in e?{name:t,type:Rc(e.value),...e}:{name:t,type:"object",value:e}}function wu(t){return Array.isArray(t)||ArrayBuffer.isView(t)}function Rc(t){return wu(t)?"array":t===null?"null":typeof t}function cy(t,e){let r;for(let o=e.length-1;o>=0;o--){let n=e[o];"extensions"in n&&(r=n.extensions)}let i=Ru(t.constructor,r),s=Object.create(i);s[Ci]=t,s[ut]={},s[Ye]={};for(let o=0;o<e.length;++o){let n=e[o];for(let a in n)s[a]=n[a]}return Object.freeze(s),s}var dP="_mergedDefaultProps";function Ru(t,e){if(!(t instanceof Vi.constructor))return{};let r=dP;if(e)for(let s of e){let o=s.constructor;o&&(r+=`:${o.extensionName||o.name}`)}let i=ly(t,r);return i||(t[r]=pP(t,e||[]))}function pP(t,e){if(!t.prototype)return null;let i=Object.getPrototypeOf(t),s=Ru(i),o=ly(t,"defaultProps")||{},n=ay(o),a=Object.assign(Object.create(null),s,n.defaultProps),c=Object.assign(Object.create(null),s?.[ke],n.propTypes),l=Object.assign(Object.create(null),s?.[Ta],n.deprecatedProps);for(let f of e){let h=Ru(f.constructor);h&&(Object.assign(a,h),Object.assign(c,h[ke]),Object.assign(l,h[Ta]))}return gP(a,t),_P(a,c),mP(a,l),a[ke]=c,a[Ta]=l,e.length===0&&!Pu(t,"_propTypes")&&(t._propTypes=c),a}function gP(t,e){let r=TP(e);Object.defineProperties(t,{id:{writable:!0,value:r}})}function mP(t,e){for(let r in e)Object.defineProperty(t,r,{enumerable:!1,set(i){let s=`${this.id}: ${r}`;for(let o of e[r])Pu(this,o)||(this[o]=i);L.deprecated(s,e[r].join("/"))()}})}function _P(t,e){let r={},i={};for(let s in e){let o=e[s],{name:n,value:a}=o;o.async&&(r[n]=a,i[n]=yP(n))}t[Ft]=r,t[ut]={},Object.defineProperties(t,i)}function yP(t){return{enumerable:!0,set(e){typeof e=="string"||e instanceof Promise||mc(e)?this[ut][t]=e:this[Ye][t]=e},get(){if(this[Ye]){if(t in this[Ye])return this[Ye][t]||this[Ft][t];if(t in this[ut]){let e=this[Ci]&&this[Ci].internalState;if(e&&e.hasAsyncProp(t))return e.getAsyncProp(t)||this[Ft][t]}}return this[Ft][t]}}}function Pu(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ly(t,e){return Pu(t,e)&&t[e]}function TP(t){let e=t.componentName;return e||L.warn(`${t.name}.componentName not specified`)(),e||t.name}var bP=0,Do=class{constructor(...e){this.props=cy(this,e),this.id=this.props.id,this.count=bP++}clone(e){let{props:r}=this,i={};for(let s in r[Ft])s in r[Ye]?i[s]=r[Ye][s]:s in r[ut]&&(i[s]=r[ut][s]);return new this.constructor({...r,...i,...e})}};Do.componentName="Component";Do.defaultProps={};var Vi=Do;var xP=Object.freeze({}),Hr=class{constructor(e){this.component=e,this.asyncProps={},this.onAsyncPropUpdated=()=>{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(let e in this.asyncProps){let r=this.asyncProps[e];r&&r.type&&r.type.release&&r.type.release(r.resolvedValue,r.type,this.component)}this.asyncProps={},this.component=null,this.resetOldProps()}getOldProps(){return this.oldAsyncProps||this.oldProps||xP}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component?this.component.props:null}hasAsyncProp(e){return e in this.asyncProps}getAsyncProp(e){let r=this.asyncProps[e];return r&&r.resolvedValue}isAsyncPropLoading(e){if(e){let r=this.asyncProps[e];return Boolean(r&&r.pendingLoadCount>0&&r.pendingLoadCount!==r.resolvedLoadCount)}for(let r in this.asyncProps)if(this.isAsyncPropLoading(r))return!0;return!1}reloadAsyncProp(e,r){this._watchPromise(e,Promise.resolve(r))}setAsyncProps(e){this.component=e[Ci]||this.component;let r=e[Ye]||{},i=e[ut]||e,s=e[Ft]||{};for(let o in r){let n=r[o];this._createAsyncPropData(o,s[o]),this._updateAsyncProp(o,n),r[o]=this.getAsyncProp(o)}for(let o in i){let n=i[o];this._createAsyncPropData(o,s[o]),this._updateAsyncProp(o,n)}}_fetch(e,r){return null}_onResolve(e,r){}_onError(e,r){}_updateAsyncProp(e,r){if(this._didAsyncInputValueChange(e,r)){if(typeof r=="string"&&(r=this._fetch(e,r)),r instanceof Promise){this._watchPromise(e,r);return}if(mc(r)){this._resolveAsyncIterable(e,r);return}this._setPropValue(e,r)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps){this.oldAsyncProps=Object.create(this.oldProps);for(let e in this.asyncProps)Object.defineProperty(this.oldAsyncProps,e,{enumerable:!0,value:this.oldProps[e]})}}_didAsyncInputValueChange(e,r){let i=this.asyncProps[e];return r===i.resolvedValue||r===i.lastValue?!1:(i.lastValue=r,!0)}_setPropValue(e,r){this._freezeAsyncOldProps();let i=this.asyncProps[e];i&&(r=this._postProcessValue(i,r),i.resolvedValue=r,i.pendingLoadCount++,i.resolvedLoadCount=i.pendingLoadCount)}_setAsyncPropValue(e,r,i){let s=this.asyncProps[e];s&&i>=s.resolvedLoadCount&&r!==void 0&&(this._freezeAsyncOldProps(),s.resolvedValue=r,s.resolvedLoadCount=i,this.onAsyncPropUpdated(e,r))}_watchPromise(e,r){let i=this.asyncProps[e];if(i){i.pendingLoadCount++;let s=i.pendingLoadCount;r.then(o=>{this.component&&(o=this._postProcessValue(i,o),this._setAsyncPropValue(e,o,s),this._onResolve(e,o))}).catch(o=>{this._onError(e,o)})}}async _resolveAsyncIterable(e,r){if(e!=="data"){this._setPropValue(e,r);return}let i=this.asyncProps[e];if(!i)return;i.pendingLoadCount++;let s=i.pendingLoadCount,o=[],n=0;for await(let a of r){if(!this.component)return;let{dataTransform:c}=this.component.props;c?o=c(a,o):o=o.concat(a),Object.defineProperty(o,"__diff",{enumerable:!1,value:[{startRow:n,endRow:o.length}]}),n=o.length,this._setAsyncPropValue(e,o,s)}this._onResolve(e,o)}_postProcessValue(e,r){let i=e.type;return i&&this.component&&(i.release&&i.release(e.resolvedValue,i,this.component),i.transform)?i.transform(r,i,this.component):r}_createAsyncPropData(e,r){if(!this.asyncProps[e]){let s=this.component&&this.component.props[ke];this.asyncProps[e]={type:s&&s[e],lastValue:null,resolvedValue:r,pendingLoadCount:0,resolvedLoadCount:0}}}};var Fo=class extends Hr{constructor({attributeManager:e,layer:r}){super(r),this.attributeManager=e,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1}get layer(){return this.component}_fetch(e,r){let i=this.layer,s=i?.props.fetch;return s?s(r,{propName:e,layer:i}):super._fetch(e,r)}_onResolve(e,r){let i=this.layer;if(i){let s=i.props.onDataLoad;e==="data"&&s&&s(r,{propName:e,layer:i})}}_onError(e,r){let i=this.layer;i&&i.raiseError(r,`loading ${e} of ${this.layer}`)}};var AP="layer.changeFlag",SP="layer.initialize",EP="layer.update",wP="layer.finalize",RP="layer.matched",fy=2**24-1,PP=Object.freeze([]),vP=Be(({oldViewport:t,viewport:e})=>t.equals(e)),et=new Uint8ClampedArray(0),MP={data:{type:"data",value:PP,async:!0},dataComparator:{type:"function",value:null,optional:!0},_dataDiff:{type:"function",value:t=>t&&t.__diff,optional:!0},dataTransform:{type:"function",value:null,optional:!0},onDataLoad:{type:"function",value:null,optional:!0},onError:{type:"function",value:null,optional:!0},fetch:{type:"function",value:(t,{propName:e,layer:r,loaders:i,loadOptions:s,signal:o})=>{let{resourceManager:n}=r.context;s=s||r.getLoadOptions(),i=i||r.props.loaders,o&&(s={...s,core:{...s?.core,fetch:{...s?.core?.fetch,signal:o}}});let a=n.contains(t);return!a&&!s&&(n.add({resourceId:t,data:ir(t,i),persistent:!1}),a=!0),a?n.subscribe({resourceId:t,onChange:c=>r.internalState?.reloadAsyncProp(e,c),consumerId:r.id,requestId:e}):ir(t,i,s)}},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:"number",min:0,max:1,value:1},operation:"draw",onHover:{type:"function",value:null,optional:!0},onClick:{type:"function",value:null,optional:!0},onDragStart:{type:"function",value:null,optional:!0},onDrag:{type:"function",value:null,optional:!0},onDragEnd:{type:"function",value:null,optional:!0},coordinateSystem:k.DEFAULT,coordinateOrigin:{type:"array",value:[0,0,0],compare:!0},modelMatrix:{type:"array",value:null,compare:!0,optional:!0},wrapLongitude:!1,positionFormat:"XYZ",colorFormat:"RGBA",parameters:{type:"object",value:{},optional:!0,compare:2},loadOptions:{type:"object",value:null,optional:!0,ignore:!0},transitions:null,extensions:[],loaders:{type:"array",value:[],optional:!0,ignore:!0},getPolygonOffset:{type:"function",value:({layerIndex:t})=>[0,-t*100]},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:"accessor",value:[0,0,128,128]}},Bo=class extends Vi{constructor(){super(...arguments),this.internalState=null,this.lifecycle=fr.NO_STATE,this.parent=null}static get componentName(){return Object.prototype.hasOwnProperty.call(this,"layerName")?this.layerName:""}get root(){let e=this;for(;e.parent;)e=e.parent;return e}toString(){return`${this.constructor.layerName||this.constructor.name}({id: '${this.props.id}'})`}project(e){Y(this.internalState);let r=this.internalState.viewport||this.context.viewport,i=Wh(e,{viewport:r,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[s,o,n]=Si(i,r.pixelProjectionMatrix);return e.length===2?[s,o]:[s,o,n]}unproject(e){return Y(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(e)}projectPosition(e,r){Y(this.internalState);let i=this.internalState.viewport||this.context.viewport;return ma(e,{viewport:i,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...r})}get isComposite(){return!1}get isDrawable(){return!0}setState(e){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,e),this.setNeedsRedraw()}setNeedsRedraw(){this.internalState&&(this.internalState.needsRedraw=!0)}setNeedsUpdate(){this.internalState&&(this.context.layerManager.setNeedsUpdate(String(this)),this.internalState.needsUpdate=!0)}get isLoaded(){return this.internalState?!this.internalState.isAsyncPropLoading():!1}get wrapLongitude(){return this.props.wrapLongitude}isPickable(){return this.props.pickable&&this.props.visible}getModels(){let e=this.state;return e&&(e.models||e.model&&[e.model])||[]}setShaderModuleProps(...e){for(let r of this.getModels())r.shaderInputs.setProps(...e)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){let{coordinateSystem:e}=this.props;return e===k.DEFAULT||e===k.LNGLAT||e===k.CARTESIAN}onHover(e,r){return this.props.onHover&&this.props.onHover(e,r)||!1}onClick(e,r){return this.props.onClick&&this.props.onClick(e,r)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(e,r=[]){return r[0]=e+1&255,r[1]=e+1>>8&255,r[2]=e+1>>8>>8&255,r}decodePickingColor(e){Y(e instanceof Uint8Array);let[r,i,s]=e;return r+i*256+s*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:wc(this.props.data)}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){return this.getAttributeManager()?.getBounds(["positions","instancePositions"])}getShaders(e){e=Oo(e,{disableWarnings:!0,modules:this.context.defaultShaderModules});for(let r of this.props.extensions)e=Oo(e,r.getShaders.call(this,r));return e}shouldUpdateState(e){return e.changeFlags.propsOrDataChanged}updateState(e){let r=this.getAttributeManager(),{dataChanged:i}=e.changeFlags;if(i&&r)if(Array.isArray(i))for(let s of i)r.invalidateAll(s);else r.invalidateAll();if(r){let{props:s}=e,o=this.internalState.hasPickingBuffer,n=Number.isInteger(s.highlightedObjectIndex)||Boolean(s.pickable)||s.extensions.some(a=>a.getNeedsPickingBuffer.call(this,a));if(o!==n){this.internalState.hasPickingBuffer=n;let{pickingColors:a,instancePickingColors:c}=r.attributes,l=a||c;l&&(n&&l.constant&&(l.constant=!1,r.invalidate(l.id)),!l.value&&!n&&(l.constant=!0,l.value=[0,0,0]))}}}finalizeState(e){for(let i of this.getModels())i.destroy();let r=this.getAttributeManager();r&&r.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(e){for(let r of this.getModels())r.draw(e.renderPass)}getPickingInfo({info:e,mode:r,sourceLayer:i}){let{index:s}=e;return s>=0&&Array.isArray(this.props.data)&&(e.object=this.props.data[s]),e}raiseError(e,r){r&&(e=new Error(`${r}: ${e.message}`,{cause:e})),this.props.onError?.(e)||this.context?.onError?.(e,this)}getNeedsRedraw(e={clearRedrawFlags:!1}){return this._getNeedsRedraw(e)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){return this.internalState?.uniformTransitions.active||!1}activateViewport(e){if(!this.internalState)return;let r=this.internalState.viewport;this.internalState.viewport=e,(!r||!vP({oldViewport:r,viewport:e}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(e="all"){let r=this.getAttributeManager();r&&(e==="all"?r.invalidateAll():r.invalidate(e))}updateAttributes(e){let r=!1;for(let i in e)e[i].layoutChanged()&&(r=!0);for(let i of this.getModels())this._setModelAttributes(i,e,r)}_updateAttributes(){let e=this.getAttributeManager();if(!e)return;let r=this.props,i=this.getNumInstances(),s=this.getStartIndices();e.update({data:r.data,numInstances:i,startIndices:s,props:r,transitions:r.transitions,buffers:r.data.attributes,context:this});let o=e.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(o)}_updateAttributeTransition(){let e=this.getAttributeManager();e&&e.updateTransition()}_updateUniformTransition(){let{uniformTransitions:e}=this.internalState;if(e.active){let r=e.update(),i=Object.create(this.props);for(let s in r)Object.defineProperty(i,s,{value:r[s]});return i}return this.props}calculateInstancePickingColors(e,{numInstances:r}){if(e.constant)return;let i=Math.floor(et.length/4);if(this.internalState.usesPickingColorCache=!0,i<r){r>fy&&L.warn("Layer has too many data objects. Picking might not be able to distinguish all objects.")(),et=Xe.allocate(et,r,{size:4,copy:!0,maxCount:Math.max(r,fy)});let s=Math.floor(et.length/4),o=[0,0,0];for(let n=i;n<s;n++)this.encodePickingColor(n,o),et[n*4+0]=o[0],et[n*4+1]=o[1],et[n*4+2]=o[2],et[n*4+3]=0}e.value=et.subarray(0,r*4)}_setModelAttributes(e,r,i=!1){if(!Object.keys(r).length)return;if(i){let a=this.getAttributeManager();e.setBufferLayout(a.getBufferLayouts(e)),r=a.getAttributes()}let s=e.userData?.excludeAttributes||{},o={},n={};for(let a in r){if(s[a])continue;let c=r[a].getValue();for(let l in c){let f=c[l];f instanceof D?r[a].settings.isIndexed?e.setIndexBuffer(f):o[l]=f:f&&(n[l]=f)}}e.setAttributes(o),e.setConstantAttributes(n)}disablePickingIndex(e){let r=this.props.data;if(!("attributes"in r)){this._disablePickingIndex(e);return}let{pickingColors:i,instancePickingColors:s}=this.getAttributeManager().attributes,o=i||s,n=o&&r.attributes&&r.attributes[o.id];if(n&&n.value){let a=n.value,c=this.encodePickingColor(e);for(let l=0;l<r.length;l++){let f=o.getVertexOffset(l);a[f]===c[0]&&a[f+1]===c[1]&&a[f+2]===c[2]&&this._disablePickingIndex(l)}}else this._disablePickingIndex(e)}_disablePickingIndex(e){let{pickingColors:r,instancePickingColors:i}=this.getAttributeManager().attributes,s=r||i;if(!s)return;let o=s.getVertexOffset(e),n=s.getVertexOffset(e+1);s.buffer.write(new Uint8Array(n-o),o)}restorePickingColors(){let{pickingColors:e,instancePickingColors:r}=this.getAttributeManager().attributes,i=e||r;i&&(this.internalState.usesPickingColorCache&&i.value.buffer!==et.buffer&&(i.value=et.subarray(0,i.value.length)),i.updateSubBuffer({startOffset:0}))}_initialize(){Y(!this.internalState),Y(Number.isFinite(this.props.coordinateSystem)),Q(SP,this);let e=this._getAttributeManager();e&&e.addInstanced({instancePickingColors:{type:"uint8",size:4,noAlloc:!0,update:this.calculateInstancePickingColors}}),this.internalState=new Fo({attributeManager:e,layer:this}),this._clearChangeFlags(),this.state={},Object.defineProperty(this.state,"attributeManager",{get:()=>(L.deprecated("layer.state.attributeManager","layer.getAttributeManager()")(),e)}),this.internalState.uniformTransitions=new Io(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(let r of this.props.extensions)r.initializeState.call(this,this.context,r);this.setChangeFlags({dataChanged:"init",propsChanged:"init",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(e){Q(RP,this,this===e);let{state:r,internalState:i}=e;this!==e&&(this.internalState=i,this.state=r,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){let e=this.needsUpdate();if(Q(EP,this,e),!e)return;this.context.stats.get("Layer updates").incrementCount();let r=this.props,i=this.context,s=this.internalState,o=i.viewport,n=this._updateUniformTransition();s.propsInTransition=n,i.viewport=s.viewport||o,this.props=n;try{let a=this._getUpdateParams(),c=this.getModels();if(i.device)this.updateState(a);else try{this.updateState(a)}catch{}for(let f of this.props.extensions)f.updateState.call(this,a,f);this.setNeedsRedraw(),this._updateAttributes();let l=this.getModels()[0]!==c[0];this._postUpdate(a,l)}finally{i.viewport=o,this.props=r,this._clearChangeFlags(),s.needsUpdate=!1,s.resetOldProps()}}_finalize(){Q(wP,this),this.finalizeState(this.context);for(let e of this.props.extensions)e.finalizeState.call(this,this.context,e)}_drawLayer({renderPass:e,shaderModuleProps:r=null,uniforms:i={},parameters:s={}}){this._updateAttributeTransition();let o=this.props,n=this.context;this.props=this.internalState.propsInTransition||o;try{r&&this.setShaderModuleProps(r);let{getPolygonOffset:a}=this.props,c=a&&a(i)||[0,0];n.device instanceof Tt&&n.device.setParametersWebGL({polygonOffset:c});for(let l of this.getModels())l.device.type==="webgpu"?l.setParameters({...l.parameters,...s}):l.setParameters(s);if(n.device instanceof Tt)n.device.withParametersWebGL(s,()=>{let l={renderPass:e,shaderModuleProps:r,uniforms:i,parameters:s,context:n};for(let f of this.props.extensions)f.draw.call(this,l,f);this.draw(l)});else{let l={renderPass:e,shaderModuleProps:r,uniforms:i,parameters:s,context:n};for(let f of this.props.extensions)f.draw.call(this,l,f);this.draw(l)}}finally{this.props=o}}getChangeFlags(){return this.internalState?.changeFlags}setChangeFlags(e){if(!this.internalState)return;let{changeFlags:r}=this.internalState;for(let s in e)if(e[s]){let o=!1;switch(s){case"dataChanged":let n=e[s],a=r[s];n&&Array.isArray(a)&&(r.dataChanged=Array.isArray(n)?a.concat(n):n,o=!0);default:r[s]||(r[s]=e[s],o=!0)}o&&Q(AP,this,s,e)}let i=Boolean(r.dataChanged||r.updateTriggersChanged||r.propsChanged||r.extensionsChanged);r.propsOrDataChanged=i,r.somethingChanged=i||r.viewportChanged||r.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(e,r){let i=sy(e,r);if(i.updateTriggersChanged)for(let s in i.updateTriggersChanged)i.updateTriggersChanged[s]&&this.invalidateAttribute(s);if(i.transitionsChanged)for(let s in i.transitionsChanged)this.internalState.uniformTransitions.add(s,r[s],e[s],e.transitions?.[s]);return this.setChangeFlags(i)}validateProps(){iy(this.props)}updateAutoHighlight(e){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(e)}_updateAutoHighlight(e){let r={highlightedObjectColor:e.picked?e.color:null},{highlightColor:i}=this.props;e.picked&&typeof i=="function"&&(r.highlightColor=i(e)),this.setShaderModuleProps({picking:r}),this.setNeedsRedraw()}_getAttributeManager(){let e=this.context;return new jr(e.device,{id:this.props.id,stats:e.stats,timeline:e.timeline})}_postUpdate(e,r){let{props:i,oldProps:s}=e,o=this.state.model;o?.isInstanced&&o.setInstanceCount(this.getNumInstances());let{autoHighlight:n,highlightedObjectIndex:a,highlightColor:c}=i;if(r||s.autoHighlight!==n||s.highlightedObjectIndex!==a||s.highlightColor!==c){let l={};Array.isArray(c)&&(l.highlightColor=c),(r||s.autoHighlight!==n||a!==s.highlightedObjectIndex)&&(l.highlightedObjectColor=Number.isFinite(a)&&a>=0?this.encodePickingColor(a):null),this.setShaderModuleProps({picking:l})}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(e){if(!this.internalState)return!1;let r=!1;r=r||this.internalState.needsRedraw&&this.id;let i=this.getAttributeManager(),s=i?i.getNeedsRedraw(e):!1;if(r=r||s,r)for(let o of this.props.extensions)o.onNeedsRedraw.call(this,o);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!e.clearRedrawFlags,r}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}};Bo.defaultProps=MP;Bo.layerName="Layer";var Pc=Bo;var CP="compositeLayer.renderLayers",vc=class extends Pc{get isComposite(){return!0}get isDrawable(){return!1}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(e=>e.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(e){}setState(e){super.setState(e),this.setNeedsUpdate()}getPickingInfo({info:e}){let{object:r}=e;return r&&r.__source&&r.__source.parent&&r.__source.parent.id===this.id&&(e.object=r.__source.object,e.index=r.__source.index),e}filterSubLayer(e){return!0}shouldRenderSubLayer(e,r){return r&&r.length}getSubLayerClass(e,r){let{_subLayerProps:i}=this.props;return i&&i[e]&&i[e].type||r}getSubLayerRow(e,r,i){return e.__source={parent:this,object:r,index:i},e}getSubLayerAccessor(e){if(typeof e=="function"){let r={index:-1,data:this.props.data,target:[]};return(i,s)=>i&&i.__source?(r.index=i.__source.index,e(i.__source.object,r)):e(i,s)}return e}getSubLayerProps(e={}){let{opacity:r,pickable:i,visible:s,parameters:o,getPolygonOffset:n,highlightedObjectIndex:a,autoHighlight:c,highlightColor:l,coordinateSystem:f,coordinateOrigin:h,wrapLongitude:u,positionFormat:d,modelMatrix:p,extensions:g,fetch:m,operation:_,_subLayerProps:T}=this.props,y={id:"",updateTriggers:{},opacity:r,pickable:i,visible:s,parameters:o,getPolygonOffset:n,highlightedObjectIndex:a,autoHighlight:c,highlightColor:l,coordinateSystem:f,coordinateOrigin:h,wrapLongitude:u,positionFormat:d,modelMatrix:p,extensions:g,fetch:m,operation:_},x=T&&e.id&&T[e.id],S=x&&x.updateTriggers,A=e.id||"sublayer";if(x){let w=this.props[ke],v=e.type?e.type._propTypes:{};for(let R in x){let M=v[R]||w[R];M&&M.type==="accessor"&&(x[R]=this.getSubLayerAccessor(x[R]))}}Object.assign(y,e,x),y.id=`${this.props.id}-${A}`,y.updateTriggers={all:this.props.updateTriggers?.all,...e.updateTriggers,...S};for(let w of g){let v=w.getSubLayerProps.call(this,w);v&&Object.assign(y,v,{updateTriggers:Object.assign(y.updateTriggers,v.updateTriggers)})}return y}_updateAutoHighlight(e){for(let r of this.getSubLayers())r.updateAutoHighlight(e)}_getAttributeManager(){return null}_postUpdate(e,r){let i=this.internalState.subLayers,s=!i||this.needsUpdate();if(s){let o=this.renderLayers();i=hr(o,Boolean),this.internalState.subLayers=i}Q(CP,this,s,i);for(let o of i)o.parent=this}};vc.layerName="CompositeLayer";var hy=vc;var vu=Math.PI/180;function IP({height:t,focalDistance:e,orbitAxis:r,rotationX:i,rotationOrbit:s,zoom:o}){let n=r==="Z"?[0,0,1]:[0,1,0],a=r==="Z"?[0,-e,0]:[0,0,e],c=new z().lookAt({eye:a,up:n});c.rotateX(i*vu),r==="Z"?c.rotateZ(s*vu):c.rotateY(s*vu);let l=Math.pow(2,o)/t;return c.scale(l),c}var Mc=class extends Se{constructor(e){let{height:r,projectionMatrix:i,fovy:s=50,orbitAxis:o="Z",target:n=[0,0,0],rotationX:a=0,rotationOrbit:c=0,zoom:l=0}=e,f=i?i[5]/2:Ot(s);super({...e,longitude:void 0,viewMatrix:IP({height:r||1,focalDistance:f,orbitAxis:o,rotationX:a,rotationOrbit:c,zoom:l}),fovy:s,focalDistance:f,position:n,zoom:l}),this.target=n,this.orbitAxis=o,this.rotationX=a,this.rotationOrbit=c,this.fovy=s,this.projectedCenter=this.project(this.center)}unproject(e,{topLeft:r=!0}={}){let[i,s,o=this.projectedCenter[2]]=e,n=r?s:this.height-s,[a,c,l]=Ue([i,n,o],this.pixelUnprojectionMatrix);return[a,c,l]}panByPosition(e,r,i){let s=this.project(e),{near:o,far:n}=e_(this.projectionMatrix),a=o*n/(n-s[2]*(n-o)),c=o*n/(n-this.projectedCenter[2]*(n-o)),l=a/c,f=[this.width/2+(s[0]-r[0])*l,this.height/2+(s[1]-r[1])*l,this.projectedCenter[2]];return{target:this.unproject(f)}}};Mc.displayName="OrbitViewport";var Cc=Mc;var OP=new z().lookAt({eye:[0,0,1]});function NP({width:t,height:e,near:r,far:i,padding:s}){let o=-t/2,n=t/2,a=-e/2,c=e/2;if(s){let{left:l=0,right:f=0,top:h=0,bottom:u=0}=s,d=B((l+t-f)/2,0,t)-t/2,p=B((h+e-u)/2,0,e)-e/2;o-=d,n-=d,a+=p,c+=p}return new z().ortho({left:o,right:n,bottom:a,top:c,near:r,far:i})}var Ic=class extends Se{constructor(e){let{width:r,height:i,near:s=.1,far:o=1e3,zoom:n=0,target:a=[0,0,0],padding:c=null,flipY:l=!0}=e,f=e.zoomX??(Array.isArray(n)?n[0]:n),h=e.zoomY??(Array.isArray(n)?n[1]:n),u=Math.min(f,h),d=Math.pow(2,u),p;if(f!==h){let g=Math.pow(2,f),m=Math.pow(2,h);p={unitsPerMeter:[g/d,m/d,1],metersPerUnit:[d/g,d/m,1]}}super({...e,longitude:void 0,position:a,viewMatrix:OP.clone().scale([d,d*(l?-1:1),d]),projectionMatrix:NP({width:r||1,height:i||1,padding:c,near:s,far:o}),zoom:u,distanceScales:p}),this.target=a,this.zoomX=f,this.zoomY=h,this.flipY=l}projectFlat([e,r]){let{unitsPerMeter:i}=this.distanceScales;return[e*i[0],r*i[1]]}unprojectFlat([e,r]){let{metersPerUnit:i}=this.distanceScales;return[e*i[0],r*i[1]]}panByPosition(e,r,i){let s=Ue(r,this.pixelUnprojectionMatrix),o=this.projectFlat(e),n=ee.add([],o,ee.negate([],s)),a=ee.add([],this.center,n);return{target:this.unprojectFlat(a)}}};Ic.displayName="OrthographicViewport";var Oc=Ic;var Nc=class extends Se{constructor(e){let{longitude:r,latitude:i,modelMatrix:s,bearing:o=0,pitch:n=0,up:a=[0,0,1]}=e,l=new Ve({bearing:o,pitch:n===-90?1e-4:90+n}).toVector3().normalize(),f=s?new z(s).transformAsVector(l):l,h=Number.isFinite(i)?Ys({latitude:i}):0,u=Math.pow(2,h),d=new z().lookAt({eye:[0,0,0],center:f,up:a}).scale(u);super({...e,zoom:h,viewMatrix:d}),this.latitude=i,this.longitude=r,this.pitch=n,this.bearing=o,this.up=a}};Nc.displayName="FirstPersonViewport";var Dc=Nc;var $r=20,uy=500,Lo=class extends Ke{constructor(e){let{width:r,height:i,position:s=[0,0,0],bearing:o=0,pitch:n=0,longitude:a=null,latitude:c=null,maxPitch:l=90,minPitch:f=-90,maxBounds:h=null,startRotatePos:u,startBearing:d,startPitch:p,startZoomPosition:g,startPanPos:m,startPanPosition:_}=e;super({width:r,height:i,position:s,bearing:o,pitch:n,longitude:a,latitude:c,maxPitch:l,minPitch:f,maxBounds:h},{startRotatePos:u,startBearing:d,startPitch:p,startZoomPosition:g,startPanPos:m,startPanPosition:_},e.makeViewport)}panStart({pos:e}){let{position:r}=this.getViewportProps();return this._getUpdatedState({startPanPos:e,startPanPosition:r})}pan({pos:e}){if(!e)return this;let{startPanPos:r=[0,0],startPanPosition:i=[0,0]}=this.getState(),{width:s,height:o,bearing:n,pitch:a}=this.getViewportProps(),c=uy*(e[0]-r[0])/s,l=uy*(e[1]-r[1])/o,f=new Ve({bearing:n,pitch:a}),h=new Ve({bearing:n,pitch:-90}),u=f.toVector3().normalize(),d=h.toVector3().cross(u).normalize();return this._getUpdatedState({position:new H(i).add(d.scale(c)).add(u.scale(l))})}panEnd(){return this._getUpdatedState({startPanPos:null,startPanPosition:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startBearing:o,startPitch:n}=this.getState(),{width:a,height:c}=this.getViewportProps();if(!s||o===void 0||n===void 0)return this;let l;if(e){let f=(e[0]-s[0])/a,h=(e[1]-s[1])/c;l={bearing:o-f*180,pitch:n-h*90}}else l={bearing:o-r,pitch:n-i};return this._getUpdatedState(l)}rotateEnd(){return this._getUpdatedState({startRotatePos:null,startBearing:null,startPitch:null})}zoomStart(){return this._getUpdatedState({startZoomPosition:this.getViewportProps().position})}zoom({pos:e,scale:r}){let i=this.getViewportProps(),s=this.getState().startZoomPosition||i.position,o=this.makeViewport(i),{projectionMatrix:n,width:a}=o,l=2*Math.atan(1/n[0])*(e[0]/a-.5),f=this.getDirection(!0);return this._move(f.rotateZ({radians:-l}),Math.log2(r)*$r,s)}zoomEnd(){return this._getUpdatedState({startZoomPosition:null})}moveLeft(e=$r){let r=this.getDirection(!0);return this._move(r.rotateZ({radians:Math.PI/2}),e)}moveRight(e=$r){let r=this.getDirection(!0);return this._move(r.rotateZ({radians:-Math.PI/2}),e)}moveUp(e=$r){let r=this.getDirection(!0);return this._move(r,e)}moveDown(e=$r){let r=this.getDirection(!0);return this._move(r.negate(),e)}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}zoomIn(e=$r){return this._move(new H(0,0,1),e)}zoomOut(e=$r){return this._move(new H(0,0,-1),e)}shortestPathFrom(e){let r=e.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:o}=i;return Math.abs(s-r.bearing)>180&&(i.bearing=s<0?s+360:s-360),o!==null&&r.longitude!==null&&Math.abs(o-r.longitude)>180&&(i.longitude=o<0?o+360:o-360),i}_move(e,r,i=this.getViewportProps().position){let s=e.scale(r);return this._getUpdatedState({position:new H(i).add(s)})}getDirection(e=!1){return new Ve({bearing:this.getViewportProps().bearing,pitch:e?90:90+this.getViewportProps().pitch}).toVector3().normalize()}_getUpdatedState(e){return new Lo({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}applyConstraints(e){let{pitch:r,maxPitch:i,minPitch:s,longitude:o,position:n,bearing:a,maxBounds:c}=e;if(e.pitch=B(r,s,i),o!==null&&(o<-180||o>180)&&(e.longitude=ht(o+180,360)-180),(a<-180||a>180)&&(e.bearing=ht(a+180,360)-180),c){let l=B(n[0],c[0][0],c[1][0]),f=B(n[1],c[0][1],c[1][1]),h=B(n[2]??0,c[0][2]??0,c[1][2]??0);(l!==n[0]||f!==n[1]||h!==n[2])&&(e.position=[l,f,h])}return e}},Xr=class extends Te{constructor(){super(...arguments),this.ControllerState=Lo,this.transition={transitionDuration:300,transitionInterpolator:new ce(["position","pitch","bearing"])}}};var Fc=class extends ye{constructor(e={}){super(e)}getViewportType(){return Dc}get ControllerType(){return Xr}};Fc.displayName="FirstPersonView";var dy=Fc;var Mu=class extends Ke{constructor(e){let{width:r,height:i,rotationX:s=0,rotationOrbit:o=0,target:n=[0,0,0],zoom:a=0,minRotationX:c=-90,maxRotationX:l=90,minZoom:f=-1/0,maxZoom:h=1/0,maxBounds:u=null,startPanPosition:d,startRotatePos:p,startRotationX:g,startRotationOrbit:m,startZoomPosition:_,startZoom:T}=e;super({width:r,height:i,rotationX:s,rotationOrbit:o,target:n,zoom:a,minRotationX:c,maxRotationX:l,minZoom:f,maxZoom:h,maxBounds:u},{startPanPosition:d,startRotatePos:p,startRotationX:g,startRotationOrbit:m,startZoomPosition:_,startZoom:T},e.makeViewport),this.unproject3D=e.unproject3D}panStart({pos:e}){return this._getUpdatedState({startPanPosition:this._unproject(e)})}pan({pos:e,startPosition:r}){let i=this.getState().startPanPosition||r;if(!i)return this;let o=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(o)}panEnd(){return this._getUpdatedState({startPanPosition:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startRotationX:this.getViewportProps().rotationX,startRotationOrbit:this.getViewportProps().rotationOrbit})}rotate({pos:e,deltaAngleX:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startRotationX:o,startRotationOrbit:n}=this.getState(),{width:a,height:c}=this.getViewportProps();if(!s||o===void 0||n===void 0)return this;let l;if(e){let f=(e[0]-s[0])/a,h=(e[1]-s[1])/c;(o<-90||o>90)&&(f*=-1),l={rotationX:o+h*180,rotationOrbit:n+f*180}}else l={rotationX:o+i,rotationOrbit:n+r};return this._getUpdatedState(l)}rotateEnd(){return this._getUpdatedState({startRotationX:null,startRotationOrbit:null})}shortestPathFrom(e){let r=e.getViewportProps(),i={...this.getViewportProps()},{rotationOrbit:s}=i;return Math.abs(s-r.rotationOrbit)>180&&(i.rotationOrbit=s<0?s+360:s-360),i}zoomStart({pos:e}){return this._getUpdatedState({startZoomPosition:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:r,scale:i}){let{startZoom:s,startZoomPosition:o}=this.getState();if(o||(s=this.getViewportProps().zoom,o=this._unproject(r||e)),!o)return this;let n=this._calculateNewZoom({scale:i,startZoom:s}),a=this.makeViewport({...this.getViewportProps(),zoom:n});return this._getUpdatedState({zoom:n,...a.panByPosition(o,e)})}zoomEnd(){return this._getUpdatedState({startZoomPosition:null,startZoom:null})}zoomIn(e=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:e})})}zoomOut(e=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:1/e})})}moveLeft(e=50){return this._panFromCenter([-e,0])}moveRight(e=50){return this._panFromCenter([e,0])}moveUp(e=50){return this._panFromCenter([0,-e])}moveDown(e=50){return this._panFromCenter([0,e])}rotateLeft(e=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit-e})}rotateRight(e=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit+e})}rotateUp(e=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX-e})}rotateDown(e=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX+e})}_project(e){return this.makeViewport(this.getViewportProps()).project(e)}_unproject(e){let r=this.unproject3D?.(e);return r||this.makeViewport(this.getViewportProps()).unproject(e)}_calculateNewZoom({scale:e,startZoom:r}){r===void 0&&(r=this.getViewportProps().zoom);let i=r+Math.log2(e);return this._constrainZoom(i)}_panFromCenter(e){let{target:r}=this.getViewportProps(),i=this._project(r);return this.pan({startPosition:r,pos:[i[0]+e[0],i[1]+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}applyConstraints(e){let{maxRotationX:r,minRotationX:i,rotationOrbit:s}=e;return e.zoom=this._constrainZoom(e.zoom,e),e.rotationX=B(e.rotationX,i,r),(s<-180||s>180)&&(e.rotationOrbit=ht(s+180,360)-180),e.target=this._constrainTarget(e),e}_constrainZoom(e,r){r||(r=this.getViewportProps());let{maxZoom:i,maxBounds:s}=r,{minZoom:o}=r;if(s&&r.width>0&&r.height>0){let n=s[1][0]-s[0][0],a=s[1][1]-s[0][1],c=(s[1][2]??0)-(s[0][2]??0),l=Math.sqrt(n*n+a*a+c*c);l>0&&(o=Math.max(o,Math.log2(Math.min(r.width,r.height)/l)),o>i&&(o=i))}return B(e,o,i)}_constrainTarget(e){let{target:r,maxBounds:i}=e;if(!i)return r;let[[s,o,n=0],[a,c,l=0]]=i;if(r[0]>=s&&r[0]<=a&&r[1]>=o&&r[1]<=c&&r[2]>=n&&r[2]<=l)return r;let f=this.makeViewport?.(e);if(f){let{cameraPosition:h}=f,u=h[0]-r[0],d=h[1]-r[1],p=h[2]-r[2],g=u*r[0]+d*r[1]+p*r[2],m=u*(u>=0?s:a)+d*(d>=0?o:c)+p*(p>=0?n:l),_=u*(u>=0?a:s)+d*(d>=0?c:o)+p*(p>=0?l:n);if((u||d||p)&&g>=m&&g<=_){let T=I=>B(I,s,a),y=I=>B(I,o,c),x=I=>B(I,n,l),S=I=>u*T(r[0]-I*u)+d*y(r[1]-I*d)+p*x(r[2]-I*p)-g,A=-1,w=1,v=S(A),R=S(w);for(;v<0;)w=A,R=v,A*=2,v=S(A);for(;R>0;)A=w,v=R,w*=2,R=S(w);for(let I=0;I<30;I++){let C=(A+w)/2;S(C)>0?A=C:w=C}let M=(A+w)/2;return[T(r[0]-M*u),y(r[1]-M*d),x(r[2]-M*p)]}}return[B(r[0],s,a),B(r[1],o,c),B(r[2],n,l)]}},Yr=class extends Te{constructor(){super(...arguments),this.ControllerState=Mu,this.transition={transitionDuration:300,transitionInterpolator:new ce({transitionProps:{compare:["target","zoom","rotationX","rotationOrbit"],required:["target","zoom"]}})},this._unproject3D=e=>{if(this.pickPosition){let{x:r,y:i}=this.props,s=this.pickPosition(r+e[0],i+e[1]);if(s&&s.coordinate)return s.coordinate}return null}}setProps(e){e.unproject3D=this._unproject3D,super.setProps(e)}};var Bc=class extends ye{constructor(e={}){super(e),this.props.orbitAxis=e.orbitAxis||"Z"}getViewportType(){return Cc}get ControllerType(){return Yr}};Bc.displayName="OrbitView";var py=Bc;function gy({zoom:t=0,zoomX:e,zoomY:r}){return e=e??(Array.isArray(t)?t[0]:t),r=r??(Array.isArray(t)?t[1]:t),{zoomX:e,zoomY:r}}var Cu=class extends Ke{constructor(e){let{width:r,height:i,target:s=[0,0,0],zoom:o=0,zoomAxis:n="all",minZoom:a=-1/0,maxZoom:c=1/0,minZoomX:l=a,maxZoomX:f=c,minZoomY:h=a,maxZoomY:u=c,maxBounds:d=null,startPanPosition:p,startZoomPosition:g,startZoom:m}=e,{zoomX:_,zoomY:T}=gy(e);super({width:r,height:i,target:s,zoom:o,zoomX:_,zoomY:T,zoomAxis:n,minZoomX:l,maxZoomX:f,minZoomY:h,maxZoomY:u,maxBounds:d},{startPanPosition:p,startZoomPosition:g,startZoom:m},e.makeViewport)}panStart({pos:e}){return this._getUpdatedState({startPanPosition:this._unproject(e)})}pan({pos:e,startPosition:r}){let i=this.getState().startPanPosition||r;if(!i)return this;let o=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(o)}panEnd(){return this._getUpdatedState({startPanPosition:null})}rotateStart(){return this}rotate(){return this}rotateEnd(){return this}shortestPathFrom(e){let r=e.getViewportProps();return{...this.getViewportProps()}}zoomStart({pos:e}){let{zoomX:r,zoomY:i}=this.getViewportProps();return this._getUpdatedState({startZoomPosition:this._unproject(e),startZoom:[r,i]})}zoom({pos:e,startPos:r,scale:i}){let{startZoom:s,startZoomPosition:o}=this.getState();if(!o){let{zoomX:c,zoomY:l}=this.getViewportProps();s=[c,l],o=this._unproject(r||e)}if(!o)return this;let n=this._constrainZoom(this._calculateNewZoom({scale:i,startZoom:s})),a=this.makeViewport({...this.getViewportProps(),...n});return this._getUpdatedState({...n,...a.panByPosition(o,e)})}zoomEnd(){return this._getUpdatedState({startZoomPosition:null,startZoom:null})}zoomIn(e=2){return this._getUpdatedState(this._calculateNewZoom({scale:e}))}zoomOut(e=2){return this._getUpdatedState(this._calculateNewZoom({scale:1/e}))}moveLeft(e=50){return this._panFromCenter([-e,0])}moveRight(e=50){return this._panFromCenter([e,0])}moveUp(e=50){return this._panFromCenter([0,-e])}moveDown(e=50){return this._panFromCenter([0,e])}rotateLeft(e=15){return this}rotateRight(e=15){return this}rotateUp(e=10){return this}rotateDown(e=10){return this}_project(e){return this.makeViewport(this.getViewportProps()).project(e)}_unproject(e){return this.makeViewport(this.getViewportProps()).unproject(e)}_calculateNewZoom({scale:e,startZoom:r}){let{zoomX:i,zoomY:s,zoomAxis:o}=this.getViewportProps();r===void 0&&(r=[i,s]);let n=Math.log2(e),[a,c]=r;switch(o){case"X":a+=n;break;case"Y":c+=n;break;default:a+=n,c+=n}return{zoomX:a,zoomY:c}}_panFromCenter(e){let{target:r}=this.getViewportProps(),i=this._project(r);return this.pan({startPosition:r,pos:[i[0]+e[0],i[1]+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}applyConstraints(e){let{zoomX:r,zoomY:i}=this._constrainZoom(e,e);e.zoomX=r,e.zoomY=i,e.zoom=Array.isArray(e.zoom)||e.zoomX!==e.zoomY?[e.zoomX,e.zoomY]:e.zoomX;let{maxBounds:s,target:o}=e;if(s){let n=e.width/2/2**r,a=e.height/2/2**i,c=s[0][0]+n,l=s[1][0]-n,f=s[0][1]+a,h=s[1][1]-a,u=B(o[0],c,l),d=B(o[1],f,h);(u!==o[0]||d!==o[1])&&(e.target=o.slice(),e.target[0]=u,e.target[1]=d)}return e}_constrainZoom({zoomX:e,zoomY:r},i){i||(i=this.getViewportProps());let{zoomAxis:s,maxZoomX:o,maxZoomY:n,maxBounds:a}=i,{minZoomX:c,minZoomY:l}=i;if(a!==null&&i.width>0&&i.height>0){let h=a[0],u=a[1],d=u[0]-h[0],p=u[1]-h[1];Number.isFinite(d)&&d>0&&(c=Math.max(c,Math.log2(i.width/d)),c>o&&(c=o)),Number.isFinite(p)&&p>0&&(l=Math.max(l,Math.log2(i.height/p)),l>n&&(l=n))}switch(s){case"X":e=B(e,c,o);break;case"Y":r=B(r,l,n);break;default:let h=Math.min(o-e,n-r,0);h===0&&(h=Math.max(c-e,l-r,0)),h!==0&&(e+=h,r+=h)}return{zoomX:e,zoomY:r}}},Zr=class extends Te{constructor(){super(...arguments),this.ControllerState=Cu,this.transition={transitionDuration:300,transitionInterpolator:new ce(["target","zoomX","zoomY"])},this.dragMode="pan"}setProps(e){Object.assign(e,gy(e)),super.setProps(e)}_onPanRotate(){return!1}};var Lc=class extends ye{constructor(e={}){super(e)}getViewportType(){return Oc}get ControllerType(){return Zr}};Lc.displayName="OrthographicView";var my=Lc;var Iu=Math.PI/180,DP=180/Math.PI;function _y(t,e=0){let r=Math.min(180,t)*Iu;return kt*2*Math.sin(r/2)*Math.pow(2,e)}function yy(t,e=0){let r=t/Math.pow(2,e);return Math.asin(Math.min(1,r/kt/2))*2*DP}var Ou=class extends ao{constructor(e){let{startPanPos:r,...i}=e;i.normalize=!1,super(i),r!==void 0&&(this._state.startPanPos=r)}panStart({pos:e}){let{latitude:r,longitude:i,zoom:s}=this.getViewportProps();return this._getUpdatedState({startPanLngLat:[i,r],startPanPos:e,startZoom:s})}pan({pos:e,startPos:r}){let i=this.getState(),s=i.startPanLngLat||this._unproject(r);if(!s)return this;let o=i.startZoom??this.getViewportProps().zoom,n=i.startPanPos||r,a=[s[0],s[1],o],l=this.makeViewport(this.getViewportProps()).panByPosition(a,e,n);return this._getUpdatedState(l)}panEnd(){return this._getUpdatedState({startPanLngLat:null,startPanPos:null,startZoom:null})}zoom({scale:e}){let i=(this.getState().startZoom||this.getViewportProps().zoom)+Math.log2(e);return this._getUpdatedState({zoom:i})}applyConstraints(e){let{longitude:r,latitude:i,maxBounds:s}=e;if(e.zoom=this._constrainZoom(e.zoom,e),(r<-180||r>180)&&(e.longitude=ht(r+180,360)-180),e.latitude=B(i,-me,me),s&&(e.longitude=B(e.longitude,s[0][0],s[1][0]),e.latitude=B(e.latitude,s[0][1],s[1][1])),s){let o=e.zoom-dt(i),n=s[1][0]-s[0][0],a=s[1][1]-s[0][1];if(a>0&&a<me*2){let c=Math.min(yy(e.height,o),a)/2;e.latitude=B(e.latitude,s[0][1]+c,s[1][1]-c)}if(n>0&&n<360){let c=Math.min(yy(e.width/Math.cos(e.latitude*Iu),o),n)/2;e.longitude=B(e.longitude,s[0][0]+c,s[1][0]-c)}}return e.latitude!==i&&(e.zoom+=dt(e.latitude)-dt(i)),e}_constrainZoom(e,r){r||(r=this.getViewportProps());let{latitude:i,maxZoom:s,maxBounds:o}=r,{minZoom:n}=r,a=dt(0),c=dt(i)-a;if(o!==null&&r.width>0&&r.height>0){let f=o[0][1],h=o[1][1],u=Math.sign(f)===Math.sign(h)?Math.min(Math.abs(f),Math.abs(h)):0,d=_y(o[1][0]-o[0][0])*Math.cos(u*Iu),p=_y(o[1][1]-o[0][1]);d>0&&(n=Math.max(n,Math.log2(r.width/d)+a)),p>0&&(n=Math.max(n,Math.log2(r.height/p)+a)),n>s&&(n=s)}return B(e,n+c,s+c)}},Kr=class extends Te{constructor(){super(...arguments),this.ControllerState=Ou,this.transition={transitionDuration:300,transitionInterpolator:new ce(["longitude","latitude","zoom"])},this.dragMode="pan"}setProps(e){super.setProps(e),this.dragRotate=!1,this.touchRotate=!1}};var Uc=class extends ye{constructor(e={}){super(e)}getViewportType(e){return e.zoom>12?lr:Ii}get ControllerType(){return Kr}};Uc.displayName="GlobeView";var Ty=Uc;var Uo=class extends zt{constructor(){super(...arguments),this._terrainAltitude=void 0,this._terrainAltitudeTarget=void 0}setProps(e){super.setProps({rotationPivot:"3d",...e}),this._terrainAltitude!==void 0&&this._terrainAltitudeTarget!==void 0&&Math.abs(this._terrainAltitudeTarget-this._terrainAltitude)>.01&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}))}updateViewport(e,r=null,i={}){if(this._terrainAltitudeTarget===void 0)return;this._terrainAltitude===void 0?(this._terrainAltitude=this._terrainAltitudeTarget,r=this._rebaseViewport(this._terrainAltitudeTarget,e,r)):this._terrainAltitude+=(this._terrainAltitudeTarget-this._terrainAltitude)*.05;let n=e.getViewportProps().position||[0,0,0];r={...r,position:[n[0],n[1],this._terrainAltitude]},super.updateViewport(e,r,i)}_onPanStart(e){return this._pickTerrainCenterAltitude(),super._onPanStart(e)}_onWheel(e){return this._pickTerrainCenterAltitude(),super._onWheel(e)}_onDoubleClick(e){return this._pickTerrainCenterAltitude(),super._onDoubleClick(e)}_pickTerrainCenterAltitude(){if(!this.pickPosition)return;let{x:e,y:r,width:i,height:s}=this.props,o=this.pickPosition(e+i/2,r+s/2);o?.coordinate&&o.coordinate.length>=3&&(this._terrainAltitudeTarget=o.coordinate[2])}_rebaseViewport(e,r,i){let s=r.getViewportProps(),o=this.makeViewport({...s,position:[0,0,0]}),n=o.cameraPosition,a=e*o.distanceScales.unitsPerMeter[2],c=n[2],l=c-a;if(l<=0)return i;let f=Math.log2(c/l),h=s.zoom+f,u=this.makeViewport({...s,zoom:h,position:[0,0,e]}),{width:d,height:p}=s,g=[d/2,p/2],m=o.unproject(g,{targetZ:e});if(m&&"panByPosition3D"in u&&typeof u.panByPosition3D=="function"){let _=u.panByPosition3D(m,g);return{...i,position:[0,0,e],zoom:h,..._}}return i}};var ko=class{static get componentName(){return Object.prototype.hasOwnProperty.call(this,"extensionName")?this.extensionName:""}constructor(e){e&&(this.opts=e)}equals(e){return this===e?!0:this.constructor===e.constructor&&K(this.opts,e.opts,1)}getShaders(e){return null}getSubLayerProps(e){let{defaultProps:r}=e.constructor,i={updateTriggers:{}};for(let s in r)if(s in this.props){let o=r[s],n=this.props[s];i[s]=n,o&&o.type==="accessor"&&(i.updateTriggers[s]=this.props.updateTriggers[s],typeof n=="function"&&(i[s]=this.getSubLayerAccessor(n)))}return i}initializeState(e,r){}updateState(e,r){}onNeedsRedraw(e){}getNeedsPickingBuffer(e){return!1}draw(e,r){}finalizeState(e,r){}};ko.defaultProps={};ko.extensionName="LayerExtension";var by=ko;var Nu={bearing:0,pitch:0,position:[0,0,0]},FP={speed:1.2,curve:1.414},Vo=class extends Ut{constructor(e={}){super({compare:["longitude","latitude","zoom","bearing","pitch","position"],extract:["width","height","longitude","latitude","zoom","bearing","pitch","position"],required:["width","height","latitude","longitude","zoom"]}),this.opts={...FP,...e}}interpolateProps(e,r,i){let s=Bh(e,r,i,this.opts);for(let o in Nu)s[o]=vt(e[o]||Nu[o],r[o]||Nu[o],i);return s}getDuration(e,r){let{transitionDuration:i}=r;return i==="auto"&&(i=Lh(e,r,this.opts)),i}};F();var zo=class{constructor(e){this.indexStarts=[0],this.vertexStarts=[0],this.vertexCount=0,this.instanceCount=0;let{attributes:r={}}=e;this.typedArrayManager=Xe,this.attributes={},this._attributeDefs=r,this.opts=e,this.updateGeometry(e)}updateGeometry(e){Object.assign(this.opts,e);let{data:r,buffers:i={},getGeometry:s,geometryBuffer:o,positionFormat:n,dataChanged:a,normalize:c=!0}=this.opts;if(this.data=r,this.getGeometry=s,this.positionSize=o&&o.size||(n==="XY"?2:3),this.buffers=i,this.normalize=c,o&&(Y(r.startIndices),this.getGeometry=this.getGeometryFromBuffer(o),c||(i.vertexPositions=o)),this.geometryBuffer=i.vertexPositions,Array.isArray(a))for(let l of a)this._rebuildGeometry(l);else this._rebuildGeometry()}updatePartialGeometry({startRow:e,endRow:r}){this._rebuildGeometry({startRow:e,endRow:r})}getGeometryFromBuffer(e){let r=e.value||e;return ArrayBuffer.isView(r)?_c(r,{size:this.positionSize,offset:e.offset,stride:e.stride,startIndices:this.data.startIndices}):null}_allocate(e,r){let{attributes:i,buffers:s,_attributeDefs:o,typedArrayManager:n}=this;for(let a in o)if(a in s)n.release(i[a]),i[a]=null;else{let c=o[a];c.copy=r,i[a]=n.allocate(i[a],e,c)}}_forEachGeometry(e,r,i){let{data:s,getGeometry:o}=this,{iterable:n,objectInfo:a}=Ui(s,r,i);for(let c of n){a.index++;let l=o?o(c,a):null;e(l,a.index)}}_rebuildGeometry(e){if(!this.data)return;let{indexStarts:r,vertexStarts:i,instanceCount:s}=this,{data:o,geometryBuffer:n}=this,{startRow:a=0,endRow:c=1/0}=e||{},l={};if(e||(r=[0],i=[0]),this.normalize||!n)this._forEachGeometry((h,u)=>{let d=h&&this.normalizeGeometry(h);l[u]=d,i[u+1]=i[u]+(d?this.getGeometrySize(d):0)},a,c),s=i[i.length-1];else if(i=o.startIndices,s=i[o.length]||0,ArrayBuffer.isView(n))s=s||n.length/this.positionSize;else if(n instanceof D){let h=this.positionSize*4;s=s||n.byteLength/h}else if(n.buffer){let h=n.stride||this.positionSize*4;s=s||n.buffer.byteLength/h}else if(n.value){let h=n.value,u=n.stride/h.BYTES_PER_ELEMENT||this.positionSize;s=s||h.length/u}this._allocate(s,Boolean(e)),this.indexStarts=r,this.vertexStarts=i,this.instanceCount=s;let f={};this._forEachGeometry((h,u)=>{let d=l[u]||h;f.vertexStart=i[u],f.indexStart=r[u];let p=u<i.length-1?i[u+1]:s;f.geometrySize=p-i[u],f.geometryIndex=u,this.updateGeometryAttributes(d,f)},a,c),this.vertexCount=r[r.length-1]}};var kc=class{constructor(e){this.map=null,this.width=0,this.height=0,this.props={...e},this._initialize(this.props)}finalize(){this.map?.remove(),this.map=null}setProps(e){let r=this.props,i={...this.props,...e};if(this.props=i,!this.map)return;this._update(r,i)&&this.redraw()}redraw(){let e=this.map;e.style&&(e._frame&&(e._frame.cancel(),e._frame=null),e._render())}getMap(){return this.map}_initialize(e){let{mapLib:r,container:i}=e;r.accessToken=e.mapboxApiAccessToken||"",this.map=new e.mapLib.Map({container:i,maxZoom:24,...e.mapOptions,...xy(e.viewState),style:e.mapStyle,interactive:!1,trackResize:!1}),Object.defineProperty(i,"offsetWidth",{get:()=>this.width}),Object.defineProperty(i,"clientWidth",{get:()=>this.width}),Object.defineProperty(i,"offsetHeight",{get:()=>this.height}),Object.defineProperty(i,"clientHeight",{get:()=>this.height}),this.map.resize()}_update(e,r){e.mapStyle!==r.mapStyle&&this.map.setStyle(r.mapStyle);let s=e.width!==r.width||e.height!==r.height;s&&(this.width=r.width,this.height=r.height,this.map.resize());let o=e.viewState,n=r.viewState,a=n.latitude!==o.latitude||n.longitude!==o.longitude||n.zoom!==o.zoom||n.pitch!==o.pitch||n.bearing!==o.bearing;return a&&this.map.jumpTo(xy(n)),s||a}};function xy(t){return{center:[t.longitude,t.latitude],zoom:t.zoom,bearing:t.bearing??0,pitch:t.pitch??0}}var Ay={position:"absolute",left:0,top:0,width:"100%",height:"100%"};function BP(t){let{container:e=document.body}=t;if(typeof e=="string"&&(e=document.getElementById(e)),!e)throw Error("Deck: container not found");window.getComputedStyle(e).position==="static"&&(e.style.position="relative");let i=document.createElement("div");e.appendChild(i),Object.assign(i.style,Ay);let s=document.createElement("canvas");return e.appendChild(s),Object.assign(s.style,Ay),{container:e,mapCanvas:i,deckCanvas:s}}var Wo=class extends gc{constructor(e){if(typeof document>"u")throw Error("Deck can only be used in the browser");let{mapCanvas:r,deckCanvas:i}=BP(e),s=e.viewState||e.initialViewState,o=Number.isFinite(s&&s.latitude),{map:n=globalThis.mapboxgl||globalThis.maplibregl}=e;super({canvas:i,...e}),n&&n.Map?this._map=o&&new kc({...e,width:0,height:0,viewState:s,container:r,mapLib:n}):this._map=n}getMapboxMap(){return this._map&&this._map.getMap()}finalize(){this._map&&this._map.finalize(),super.finalize()}setProps(e){"mapStyle"in e&&this._map&&this._map.setProps({mapStyle:e.mapStyle}),super.setProps(e)}_drawLayers(e,r){if(this._map){let i=this.getViewports()[0];i&&this._map.setProps({width:i.width,height:i.height,viewState:i})}super._drawLayers(e,r)}};globalThis.luma=globalThis.luma||{};globalThis.loaders=globalThis.loaders||{};Object.assign(globalThis.luma,kf);Object.assign(globalThis.loaders,dh);return vy(LP);})();
1667
1743
  return __exports__;
1668
1744
  });