@deck.gl/core 9.3.0-alpha.5 → 9.3.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist.min.js CHANGED
@@ -4,22 +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 Yo=Object.defineProperty;var m0=Object.getOwnPropertyDescriptor;var _0=Object.getOwnPropertyNames;var y0=Object.prototype.hasOwnProperty;var b0=(t,e,r)=>e in t?Yo(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var E=(t,e)=>()=>(t&&(e=t(t=0)),e);var Rt=(t,e)=>{for(var r in e)Yo(t,r,{get:e[r],enumerable:!0})},T0=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of _0(e))!y0.call(t,s)&&s!==r&&Yo(t,s,{get:()=>e[s],enumerable:!(i=m0(e,s))||i.enumerable});return t};var x0=t=>T0(Yo({},"__esModule",{value:!0}),t);var P=(t,e,r)=>(b0(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 Zc=E(()=>{});var Tr,qc=E(()=>{Zc();Tr=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 Ne,ad=E(()=>{qc();Ne=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 Tr?s=e:s=new Tr(r,i),this.stats[r]=s),s}}});var qi=E(()=>{ad();qc();Zc()});function E0(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=cd.get(t);if(!i&&o?.orderedStatNames===e&&o.statCount===s)return;let n={},a=ld.get(e);a||(a=new Set(e),ld.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),cd.set(t,{orderedStatNames:e,statCount:s})}var A0,S0,cd,ld,Gc,Ko,Qc=E(()=>{qi();A0="GPU Time and Memory",S0=["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"],cd=new WeakMap,ld=new WeakMap,Gc=class{stats=new Map;getStats(e){return this.get(e)}get(e){this.stats.has(e)||this.stats.set(e,new Ne({id:e}));let r=this.stats.get(e);return e===A0&&E0(r,S0),r}},Ko=new Gc});var Zo,w0,qo,R0,fd,Jc=E(()=>{Zo=globalThis,w0=globalThis.document||{},qo=globalThis.process||{},R0=globalThis.console,fd=globalThis.navigator||{}});function Go(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 el=E(()=>{});function he(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||Go()}var tl=E(()=>{el()});function rl(t){return!t&&!he()?"Node":Go(t)?"Electron":(t||fd.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var hd=E(()=>{tl();el();Jc()});var il,Xt=E(()=>{Jc();tl();hd();il="4.1.1"});function Qr(t,e){if(!t)throw new Error(e||"Assertion failed")}var sl=E(()=>{});function ol(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 ud(t){let{logLevel:e,message:r}=t;t.logLevel=ol(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 dd=E(()=>{sl()});var xr,Qo,pd=E(()=>{dd();xr=()=>{},Qo=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=ud({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 xr;let s=this._getOnceTag(i.tag??r.tag??r.message);if((i.once||r.once)&&s!==void 0){if(this._onceCache.has(s))return xr;this._onceCache.add(s)}return this._emit(e,r)}_shouldLog(e){return this.getLevel()>=ol(e)}_getOnceTag(e){if(e!==void 0)try{return typeof e=="string"?e:String(e)}catch{return}}}});function v0(t){try{let e=window[t],r="__storage_test__";return e.setItem(r,r),e.removeItem(r),e}catch{return null}}var Jo,gd=E(()=>{Jo=class{constructor(e,r,i="sessionStorage"){this.storage=v0(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 md(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 _d(t,e=8){let r=Math.max(e-t.length,0);return`${" ".repeat(r)}${t}`}var yd=E(()=>{});function bd(t){return typeof t!="string"?t:(t=t.toUpperCase(),en[t]||en.WHITE)}function Td(t,e,r){return!he&&typeof t=="string"&&(e&&(t=`\x1B[${bd(e)}m${t}\x1B[39m`),r&&(t=`\x1B[${bd(r)+M0}m${t}\x1B[49m`)),t}var en,M0,xd=E(()=>{Xt();(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"})(en||(en={}));M0=10});function Ad(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 Sd=E(()=>{});function Jr(){let t;if(he()&&Zo.performance)t=Zo?.performance?.now?.();else if("hrtime"in qo){let e=qo?.hrtime?.();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}var Ed=E(()=>{Xt()});function C0(t,e,r){if(typeof e=="string"){let i=r.time?_d(md(r.total)):"";e=r.time?`${t}: ${i} ${e}`:`${t}: ${e}`,e=Td(e,r.color,r.background)}return e}function I0(t){for(let e in t)for(let r in t[e])return r||"untitled";return"empty"}var ei,nl,ue,al=E(()=>{Xt();pd();gd();yd();xd();Sd();sl();Ed();ei={debug:he()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},nl={enabled:!0,level:0},ue=class extends Qo{constructor({id:e}={id:""}){super({level:0}),this.VERSION=il,this._startTs=Jr(),this._deltaTs=Jr(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=e,this.userData={},this._storage=new Jo(`__probe-${this.id}__`,{[this.id]:nl}),this.timeStamp(`${this.id} started`),Ad(this),Object.seal(this)}isEnabled(){return this._getConfiguration().enabled}getLevel(){return this._getConfiguration().level}getTotal(){return Number((Jr()-this._startTs).toPrecision(10))}getDelta(){return Number((Jr()-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:ei.warn,once:!0})}error(e,...r){return this._log("error",0,e,r,{method:ei.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:ei.log,time:!0,once:!0})}log(e,r,...i){return this._log("log",e,r,i,{method:ei.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:ei.debug||ei.info,once:!0})}table(e,r,i){return r?this._log("table",e,r,i&&[i]||[],{method:console.table||xr,tag:I0(r)}):xr}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||xr})}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||xr})}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=Jr();let s=C0(this.id,r.message,r);return i.bind(console,s,...r.args)}_getConfiguration(){return this._storage.config[this.id]||this._updateConfiguration(nl),this._storage.config[this.id]}_updateConfiguration(e){let r=this._storage.config[this.id]||{...nl};this._storage.setConfiguration({[this.id]:{...r,...e}})}};ue.VERSION=il});var wd=E(()=>{globalThis.probe={}});var gM,Gi=E(()=>{al();al();wd();gM=new ue({id:"@probe.gl/log"})});var x,De=E(()=>{Gi();x=new ue({id:"luma.gl"})});function st(t="id"){cl[t]=cl[t]||1;let e=cl[t]++;return`${t}-${e}`}var cl,ti=E(()=>{cl={}});function L0(t,e){let r={...e};for(let i in t)t[i]!==void 0&&(r[i]=t[i]);return r}function Id(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=Md.get(t);if(!i&&o?.orderedStatNames===e&&o.statCount===s)return;let n={},a=Cd.get(e);a||(a=new Set(e),Cd.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),Md.set(t,{orderedStatNames:e,statCount:s})}function Od(t){return t.type==="webgl"?F0:B0}function Qi(t){let e=t.userData[O0];return e?.enabled?e:null}function Yt(){return globalThis.performance?.now?.()??Date.now()}function U0(t,e){let r=Qi(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 k0(t){let e=Object.getPrototypeOf(t);for(;e;){let r=Object.getPrototypeOf(e);if(!r||r===D.prototype)return V0(e)||t[Symbol.toStringTag]||t.constructor.name;e=r}return t[Symbol.toStringTag]||t.constructor.name}function V0(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 O0,Rd,Pd,vd,N0,D0,B0,F0,Md,Cd,D,ae=E(()=>{ti();O0="cpu-hotspot-profiler",Rd="GPU Resource Counts",Pd="Resource Counts",vd="GPU Time and Memory",N0=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],D0=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","SharedRenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],B0=N0.flatMap(t=>[`${t} Created`,`${t} Active`]),F0=D0.flatMap(t=>[`${t} Created`,`${t} Active`]),Md=new WeakMap,Cd=new WeakMap,D=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=L0(r,i);let s=this.props.id!=="undefined"?this.props.id:st(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=Qi(this._device),r=e?Yt():0,i=[this._device.statsManager.getStats(Rd),this._device.statsManager.getStats(Pd)],s=Od(this._device);for(let n of i)Id(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)+(Yt()-r))}trackAllocatedMemory(e,r=this.getStatsName()){let i=Qi(this._device),s=i?Yt():0,o=this._device.statsManager.getStats(vd);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)+(Yt()-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=Qi(this._device),i=r?Yt():0,s=this._device.statsManager.getStats(vd);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)+(Yt()-i)),this.allocatedBytes=0,this.allocatedBytesName=null}trackDeallocatedReferencedMemory(e=this.getStatsName()){this.trackDeallocatedMemory(`Referenced ${e}`)}addStats(){let e=this.getStatsName(),r=Qi(this._device),i=r?Yt():0,s=[this._device.statsManager.getStats(Rd),this._device.statsManager.getStats(Pd)],o=Od(this._device);for(let n of s)Id(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)+(Yt()-i)),U0(this._device,e)}getStatsName(){return k0(this)}};P(D,"defaultProps",{id:"undefined",handle:void 0,userData:void 0})});var Ji,I,tn=E(()=>{ae();Ji=class extends D{get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(e,r){let i={...r};(r.usage||0)&Ji.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,Ji.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,Ji.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}}},I=Ji;P(I,"INDEX",16),P(I,"VERTEX",32),P(I,"UNIFORM",64),P(I,"STORAGE",128),P(I,"INDIRECT",256),P(I,"QUERY_RESOLVE",512),P(I,"MAP_READ",1),P(I,"MAP_WRITE",2),P(I,"COPY_SRC",4),P(I,"COPY_DST",8),P(I,"DEBUG_DATA_MAX_LENGTH",32),P(I,"defaultProps",{...D.defaultProps,usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",onMapped:void 0})});var fl,de,ll,rn=E(()=>{fl=class{getDataTypeInfo(e){let[r,i,s]=ll[e],o=e.includes("norm"),n=!o&&!e.startsWith("float"),a=e.startsWith("s");return{signedType:r,primitiveType:i,byteLength:s,normalized:o,integer:n,signed:a}}getNormalizedDataType(e){let r=e;switch(r){case"uint8":return"unorm8";case"sint8":return"snorm8";case"uint16":return"unorm16";case"sint16":return"snorm16";default:return r}}alignTo(e,r){switch(r){case 1:return e;case 2:return e+e%2;default:return e+(4-e%4)%4}}getDataType(e){let r=ArrayBuffer.isView(e)?e.constructor:e;if(r===Uint8ClampedArray)return"uint8";let i=Object.values(ll).find(s=>r===s[4]);if(!i)throw new Error(r.name);return i[0]}getTypedArrayConstructor(e){let[,,,,r]=ll[e];return r}},de=new fl,ll={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]}});var hl,Pt,sn=E(()=>{rn();hl=class{getVertexFormatInfo(e){let r;e.endsWith("-webgl")&&(e.replace("-webgl",""),r=!0);let[i,s]=e.split("x"),o=i,n=s?parseInt(s):1,a=de.getDataTypeInfo(o),c={type:o,components:n,byteLength:a.byteLength*n,integer:a.integer,signed:a.signed,normalized:a.normalized};return r&&(c.webglOnly=!0),c}makeVertexFormat(e,r,i){let s=i?de.getNormalizedDataType(e):e;switch(s){case"unorm8":return r===1?"unorm8":r===3?"unorm8x3-webgl":`${s}x${r}`;case"snorm8":case"uint8":case"sint8":case"uint16":case"sint16":case"unorm16":case"snorm16":case"float16":if(r===1||r===3)throw new Error(`size: ${r}`);return`${s}x${r}`;default:return r===1?s:`${s}x${r}`}}getVertexFormatFromAttribute(e,r,i){if(!r||r>4)throw new Error(`size ${r}`);let s=r,o=de.getDataType(e);return this.makeVertexFormat(o,s,i)}getCompatibleVertexFormat(e){let r;switch(e.primitiveType){case"f32":r="float32";break;case"i32":r="sint32";break;case"u32":r="uint32";break;case"f16":return e.components<=2?"float16x2":"float16x4"}return e.components===1?r:`${r}x${e.components}`}},Pt=new hl});function _l(t){let e=Bd[t];if(!e)throw new Error(`Unsupported texture format ${t}`);return e}function Dd(){return Bd}var le,X,ot,z0,on,ul,nn,dl,W0,pl,Kt,gl,ml,an,Nd,j0,H0,Bd,yl=E(()=>{le="texture-compression-bc",X="texture-compression-astc",ot="texture-compression-etc2",z0="texture-compression-etc1-webgl",on="texture-compression-pvrtc-webgl",ul="texture-compression-atc-webgl",nn="float32-renderable-webgl",dl="float16-renderable-webgl",W0="rgb9e5ufloat-renderable-webgl",pl="snorm8-renderable-webgl",Kt="norm16-webgl",gl="norm16-renderable-webgl",ml="snorm16-renderable-webgl",an="float32-filterable",Nd="float16-filterable-webgl";j0={r8unorm:{},rg8unorm:{},"rgb8unorm-webgl":{},rgba8unorm:{},"rgba8unorm-srgb":{},r8snorm:{render:pl},rg8snorm:{render:pl},"rgb8snorm-webgl":{},rgba8snorm:{render:pl},r8uint:{},rg8uint:{},rgba8uint:{},r8sint:{},rg8sint:{},rgba8sint:{},bgra8unorm:{},"bgra8unorm-srgb":{},r16unorm:{f:Kt,render:gl},rg16unorm:{f:Kt,render:gl},"rgb16unorm-webgl":{f:Kt,render:!1},rgba16unorm:{f:Kt,render:gl},r16snorm:{f:Kt,render:ml},rg16snorm:{f:Kt,render:ml},"rgb16snorm-webgl":{f:Kt,render:!1},rgba16snorm:{f:Kt,render:ml},r16uint:{},rg16uint:{},rgba16uint:{},r16sint:{},rg16sint:{},rgba16sint:{},r16float:{render:dl,filter:"float16-filterable-webgl"},rg16float:{render:dl,filter:Nd},rgba16float:{render:dl,filter:Nd},r32uint:{},rg32uint:{},rgba32uint:{},r32sint:{},rg32sint:{},rgba32sint:{},r32float:{render:nn,filter:an},rg32float:{render:!1,filter:an},"rgb32float-webgl":{render:nn,filter:an},rgba32float:{render:nn,filter:an},"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:W0},rg11b10ufloat:{channels:"rgb",bitsPerChannel:[11,11,10,0],packed:!0,p:1,render:nn},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}},H0={"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:ot},"etc2-rgb8unorm-srgb":{f:ot},"etc2-rgb8a1unorm":{f:ot},"etc2-rgb8a1unorm-srgb":{f:ot},"etc2-rgba8unorm":{f:ot},"etc2-rgba8unorm-srgb":{f:ot},"eac-r11unorm":{f:ot},"eac-r11snorm":{f:ot},"eac-rg11unorm":{f:ot},"eac-rg11snorm":{f:ot},"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:on},"pvrtc-rgba4unorm-webgl":{f:on},"pvrtc-rgb2unorm-webgl":{f:on},"pvrtc-rgba2unorm-webgl":{f:on},"etc1-rbg-unorm-webgl":{f:z0},"atc-rgb-unorm-webgl":{f:ul},"atc-rgba-unorm-webgl":{f:ul},"atc-rgbai-unorm-webgl":{f:ul}},Bd={...j0,...H0}});function Z0({format:t,width:e,height:r,depth:i,byteAlignment:s}){let o=pe.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 q0(t){let e=_l(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=Fd(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 Fd(t){let e=G0(t);if(pe.isCompressed(t)){e.channels="rgb",e.components=3,e.bytesPerPixel=1,e.srgb=!1,e.compressed=!0,e.bytesPerBlock=J0(t);let i=Q0(t);i&&(e.blockWidth=i.blockWidth,e.blockHeight=i.blockHeight)}let r=e.packed?null:$0.exec(t);if(r){let[,i,s,o,n,a]=r,c=`${o}${s}`,l=de.getDataTypeInfo(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 G0(t){let e=_l(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 Q0(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 J0(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 $0,X0,Y0,K0,bl,pe,cn=E(()=>{rn();yl();$0=/^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/,X0=["rgb","rgba","bgra"],Y0=["depth","stencil"],K0=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],bl=class{isColor(e){return X0.some(r=>e.startsWith(r))}isDepthStencil(e){return Y0.some(r=>e.startsWith(r))}isCompressed(e){return K0.some(r=>e.startsWith(r))}getInfo(e){return Fd(e)}getCapabilities(e){return q0(e)}computeMemoryLayout(e){return Z0(e)}},pe=new bl});function ri(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 es(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 Tl=E(()=>{});function eT(t,e){let r=xl(t),i=e.map(xl).filter(s=>s!==void 0);return[r,...i].filter(s=>s!==void 0)}function xl(t){if(t!==void 0){if(t===null||typeof t=="string"||typeof t=="number"||typeof t=="boolean")return t;if(t instanceof Error)return t.message;if(Array.isArray(t))return t.map(xl);if(typeof t=="object"){if(tT(t)){let e=String(t);if(e!=="[object Object]")return e}return rT(t)?iT(t):t.constructor?.name||"Object"}return String(t)}}function tT(t){return"toString"in t&&typeof t.toString=="function"&&t.toString!==Object.prototype.toString}function rT(t){return"message"in t&&"type"in t}function iT(t){let e=typeof t.type=="string"?t.type:"message",r=typeof t.message=="string"?t.message:"",i=typeof t.lineNum=="number"?t.lineNum:null,s=typeof t.linePos=="number"?t.linePos:null,o=i!==null&&s!==null?` @ ${i}:${s}`:i!==null?` @ ${i}`:"";return`${e}${o}: ${r}`.trim()}function sT(t,e){return t!=null?Boolean(t):e!==void 0?e!=="production":!1}function oT(){return sT(x.get("debug"),nT())}function nT(){let t=globalThis.process;if(t?.env)return t.env.NODE_ENV}var ts,rs,Al,xe,Sl=E(()=>{Qc();De();ti();tn();sn();cn();Tl();yl();ts=class{};rs=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)}},Al=class{get[Symbol.toStringTag](){return"Device"}toString(){return`Device(${this.id})`}id;props;userData={};statsManager=Ko;_factories={};timestamp=0;_reused=!1;_moduleData={};_textureCaps={};_debugGPUTimeQuery=null;constructor(e){this.props={...Al.defaultProps,...e},this.id=this.props.id||st(this[Symbol.toStringTag].toLowerCase())}getVertexFormatInfo(e){return Pt.getVertexFormatInfo(e)}isVertexFormatSupported(e){return!0}getTextureFormatInfo(e){return pe.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 ri(e)}getExternalImageSize(e){return es(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 pe.isCompressed(e)}getSupportedCompressedTextureFormats(){let e=[];for(let r of Object.keys(Dd()))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){if(!this.props.onError(e,r)){let o=eT(r,i);return x.error(this.type==="webgl"?"%cWebGL":"%cWebGPU","color: white; background: red; padding: 2px 6px; border-radius: 3px;",e.message,...o)}return()=>{}}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.`;x.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")}_createBindGroupLayoutWebGPU(e,r){throw new Error("_createBindGroupLayoutWebGPU() not implemented")}_createBindGroupWebGPU(e,r,i,s){throw new Error("_createBindGroupWebGPU() 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=pe.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)&I.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}},xe=Al;P(xe,"defaultProps",{id:null,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,createCanvasContext:void 0,webgl:{},onError:(e,r)=>{},onResize:(e,r)=>{let[i,s]=e.getDevicePixelSize();x.log(1,`${e} resized => ${i}x${s}px`)()},onPositionChange:(e,r)=>{let[i,s]=e.getPosition();x.log(1,`${e} repositioned => ${i},${s}`)()},onVisibilityChange:e=>x.log(1,`${e} Visibility changed ${e.isVisible}`)(),onDevicePixelRatioChange:(e,r)=>x.log(1,`${e} DPR changed ${r.oldRatio} => ${e.devicePixelRatio}`)(),debug:oT(),debugGPUTime:!1,debugShaders:x.get("debug-shaders")||void 0,debugFramebuffers:Boolean(x.get("debug-framebuffers")),debugFactories:Boolean(x.get("debug-factories")),debugWebGL:Boolean(x.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 aT,Ld,fn,ln,Zt,Ud=E(()=>{Sl();Qc();De();aT="set luma.log.level=1 (or higher) to trace rendering",Ld="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.",fn=class{stats=Ko;log=x;VERSION="9.3.0-alpha.10";spector;preregisteredAdapters=new Map;constructor(){if(globalThis.luma){if(globalThis.luma.VERSION!==this.VERSION)throw x.error(`Found luma.gl ${globalThis.luma.VERSION} while initialzing ${this.VERSION}`)(),x.error("'yarn why @luma.gl/core' can help identify the source of the conflict")(),new Error("luma.gl - multiple versions detected: see console log");x.error("This version of luma.gl has already been initialized")()}x.log(1,`${this.VERSION} - ${aT}`)(),globalThis.luma=this}async createDevice(e={}){let r={...fn.defaultProps,...e},i=this.selectAdapter(r.type,r.adapters);if(!i)throw new Error(Ld);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(Ld);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||x.warn("enforceWebGL2: webgl adapter not found")(),s?.enforceWebGL2?.(e)}setDefaultDeviceProps(e){Object.assign(fn.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?x.warn("WebGL1 is not supported",e)():x.warn("Unknown handle type",e)(),null)}},ln=fn;P(ln,"defaultProps",{...xe.defaultProps,type:"best-available",adapters:void 0,waitForPageLoad:!0});Zt=new ln});function fT(){return hn||(lT()||typeof window>"u"?hn=Promise.resolve():hn=new Promise(t=>window.addEventListener("load",()=>t()))),hn}var is,cT,lT,hn,kd=E(()=>{Xt();is=class{get pageLoaded(){return fT()}},cT=he()&&typeof document<"u",lT=()=>cT&&document.readyState==="complete",hn=null});var un,Vd=E(()=>{un=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 zd(){let t,e;return{promise:new Promise((i,s)=>{t=i,e=s}),resolve:t,reject:e}}var Wd=E(()=>{});function El(t,e){if(!t){let r=new Error(e??"luma.gl assertion failed.");throw Error.captureStackTrace?.(r,El),r}}function Ar(t,e){return El(t,e),t}var wl=E(()=>{});function hT(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 uT(t){let e=document.getElementById(t);if(!vt.isHTMLCanvas(e))throw new Error("Object is not a canvas element");return e}function dT(t){let{width:e,height:r}=t,i=document.createElement("canvas");i.id=st("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=hT(t?.container||null);return s.insertBefore(i,s.firstChild),i}function pT(t,e,r,i,s){let o=t,n=jd(o[0],e,r),a=Hd(o[1],e,i,s),c=jd(o[0]+1,e,r),l=c===r-1?c:c-1;c=Hd(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 jd(t,e,r){return Math.min(Math.round(t*e),r-1)}function Hd(t,e,r,i){return i?Math.max(0,r-1-Math.round(t*e)):Math.min(Math.round(t*e),r-1)}var ss,vt,Rl=E(()=>{Xt();Vd();ti();Wd();wl();ss=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=zd();_canvasObserver;_position=[0,0];destroyed=!1;_needsDrawingBufferResize=!0;toString(){return`${this[Symbol.toStringTag]}(${this.id})`}constructor(e){this.props={...ss.defaultProps,...e},e=this.props,this.initialized=this._initializedResolvers.promise,he()?e.canvas?typeof e.canvas=="string"?this.canvas=uT(e.canvas):this.canvas=e.canvas:this.canvas=dT(e):this.canvas={width:e.width||1,height:e.height||1},ss.isHTMLCanvas(this.canvas)?(this.id=e.id||this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):ss.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 un({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 pT(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=Ar(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})}}}},vt=ss;P(vt,"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 ii,$d=E(()=>{Rl();ii=class extends vt{};P(ii,"defaultProps",vt.defaultProps)});var os,Xd=E(()=>{Rl();os=class extends vt{}});var dn,Be,Pl=E(()=>{ae();dn=class extends D{get[Symbol.toStringTag](){return"Sampler"}constructor(e,r){r=dn.normalizeProps(e,r),super(e,r,dn.defaultProps)}static normalizeProps(e,r){return r}},Be=dn;P(Be,"defaultProps",{...D.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 gT,we,B,vl=E(()=>{ae();Pl();De();cn();gT={"1d":"1d","2d":"2d","2d-array":"2d",cube:"2d","cube-array":"2d","3d":"3d"},we=class extends D{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=we.normalizeProps(e,r),super(e,r,we.defaultProps),this.dimension=this.props.dimension,this.baseDimension=gT[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)&&x.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 Be?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 pe.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=we._omitUndefined(e),i=r.mipLevel??0,s=this._getMipLevelSize(i),o=this.device.getExternalImageSize(e.image),n={...we.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=we._omitUndefined(e),i=r.mipLevel??0,s=this._getMipLevelSize(i),o={...we.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=pe.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=we._omitUndefined(e),i=r.mipLevel??0,s=this._getMipLevelSize(i),o={...we.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=pe.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+=pe.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))}},B=we;P(B,"SAMPLE",4),P(B,"STORAGE",8),P(B,"RENDER",16),P(B,"COPY_SRC",1),P(B,"COPY_DST",2),P(B,"TEXTURE",4),P(B,"RENDER_ATTACHMENT",16),P(B,"defaultProps",{...D.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",usage:we.SAMPLE|we.RENDER|we.COPY_DST,width:void 0,height:void 0,depth:1,mipLevels:1,samples:void 0,sampler:{},view:void 0}),P(B,"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(B,"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(B,"defaultTextureReadOptions",{x:0,y:0,z:0,width:void 0,height:void 0,depthOrArrayLayers:1,mipLevel:0,aspect:"all"}),P(B,"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 Ml,qt,Yd=E(()=>{ae();Ml=class extends D{get[Symbol.toStringTag](){return"TextureView"}constructor(e,r){super(e,r,Ml.defaultProps)}},qt=Ml;P(qt,"defaultProps",{...D.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0})});function Kd(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+=Zd(c,a,r));o.length>n&&l.lineNum===a;){let f=o[n++];f&&(i+=Cl(f,s,f.lineNum,{...r,inlineSource:!1}))}}for(;o.length>n;){let a=o[n++];a&&(i+=Cl(a,[],0,{...r,inlineSource:!1}))}return i;case"issues":case"no":for(let a of t)i+=Cl(a,s,a.lineNum,{inlineSource:r?.showSourceCode!=="no"});return i}}function Cl(t,e,r,i){if(i?.inlineSource){let o=mT(e,r),n=t.linePos>0?`${" ".repeat(t.linePos+5)}^^^
7
+ "use strict";var __exports__=(()=>{var Qn=Object.defineProperty;var O0=Object.getOwnPropertyDescriptor;var N0=Object.getOwnPropertyNames;var D0=Object.prototype.hasOwnProperty;var B0=(t,e,r)=>e in t?Qn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var E=(t,e)=>()=>(t&&(e=t(t=0)),e);var Pt=(t,e)=>{for(var r in e)Qn(t,r,{get:e[r],enumerable:!0})},L0=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of N0(e))!D0.call(t,o)&&o!==r&&Qn(t,o,{get:()=>e[o],enumerable:!(i=O0(e,o))||i.enumerable});return t};var F0=t=>L0(Qn({},"__esModule",{value:!0}),t);var M=(t,e,r)=>(B0(t,typeof e!="symbol"?e+"":e,r),r);function eo(){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 rl=E(()=>{});var wr,il=E(()=>{rl();wr=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=eo(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(eo()-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 Ne,yd=E(()=>{il();Ne=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,o=this.stats[r];return o||(e instanceof wr?o=e:o=new wr(r,i),this.stats[r]=o),o}}});var to=E(()=>{yd();il();rl()});function V0(t,e){let r=t.stats,i=!1;for(let c of e)r[c]||(t.get(c),i=!0);let o=Object.keys(r).length,n=bd.get(t);if(!i&&n?.orderedStatNames===e&&n.statCount===o)return;let s={},a=Td.get(e);a||(a=new Set(e),Td.set(e,a));for(let c of e)r[c]&&(s[c]=r[c]);for(let[c,l]of Object.entries(r))a.has(c)||(s[c]=l);for(let c of Object.keys(r))delete r[c];Object.assign(r,s),bd.set(t,{orderedStatNames:e,statCount:o})}var U0,k0,bd,Td,ol,Jn,nl=E(()=>{to();U0="GPU Time and Memory",k0=["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"],bd=new WeakMap,Td=new WeakMap,ol=class{stats=new Map;getStats(e){return this.get(e)}get(e){this.stats.has(e)||this.stats.set(e,new Ne({id:e}));let r=this.stats.get(e);return e===U0&&V0(r,k0),r}},Jn=new ol});var es,z0,ts,W0,xd,sl=E(()=>{es=globalThis,z0=globalThis.document||{},ts=globalThis.process||{},W0=globalThis.console,xd=globalThis.navigator||{}});function rs(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 al=E(()=>{});function fe(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||rs()}var cl=E(()=>{al()});function ll(t){return!t&&!fe()?"Node":rs(t)?"Electron":(t||xd.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var Ad=E(()=>{cl();al();sl()});var fl,Zt=E(()=>{sl();cl();Ad();fl="4.1.1"});function ti(t,e){if(!t)throw new Error(e||"Assertion failed")}var hl=E(()=>{});function ul(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 ti(Number.isFinite(e)&&e>=0),e}function Sd(t){let{logLevel:e,message:r}=t;t.logLevel=ul(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 o=typeof t.message;return ti(o==="string"||o==="object"),Object.assign(t,{args:i},t.opts)}var Ed=E(()=>{hl()});var Rr,is,wd=E(()=>{Ed();Rr=()=>{},is=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,o,n={}){let s=Sd({logLevel:r,message:i,args:this._buildArgs(r,i,o),opts:n});return this._createLogFunction(e,s,n)}_buildArgs(e,r,i){return[e,r,...i]}_createLogFunction(e,r,i){if(!this._shouldLog(r.logLevel))return Rr;let o=this._getOnceTag(i.tag??r.tag??r.message);if((i.once||r.once)&&o!==void 0){if(this._onceCache.has(o))return Rr;this._onceCache.add(o)}return this._emit(e,r)}_shouldLog(e){return this.getLevel()>=ul(e)}_getOnceTag(e){if(e!==void 0)try{return typeof e=="string"?e:String(e)}catch{return}}}});function $0(t){try{let e=window[t],r="__storage_test__";return e.setItem(r,r),e.removeItem(r),e}catch{return null}}var os,Rd=E(()=>{os=class{constructor(e,r,i="sessionStorage"){this.storage=$0(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 Pd(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 vd(t,e=8){let r=Math.max(e-t.length,0);return`${" ".repeat(r)}${t}`}var Md=E(()=>{});function Cd(t){return typeof t!="string"?t:(t=t.toUpperCase(),ns[t]||ns.WHITE)}function Id(t,e,r){return!fe&&typeof t=="string"&&(e&&(t=`\x1B[${Cd(e)}m${t}\x1B[39m`),r&&(t=`\x1B[${Cd(r)+H0}m${t}\x1B[49m`)),t}var ns,H0,Od=E(()=>{Zt();(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"})(ns||(ns={}));H0=10});function Nd(t,e=["constructor"]){let r=Object.getPrototypeOf(t),i=Object.getOwnPropertyNames(r),o=t;for(let n of i){let s=o[n];typeof s=="function"&&(e.find(a=>n===a)||(o[n]=s.bind(t)))}}var Dd=E(()=>{});function ri(){let t;if(fe()&&es.performance)t=es?.performance?.now?.();else if("hrtime"in ts){let e=ts?.hrtime?.();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}var Bd=E(()=>{Zt()});function X0(t,e,r){if(typeof e=="string"){let i=r.time?vd(Pd(r.total)):"";e=r.time?`${t}: ${i} ${e}`:`${t}: ${e}`,e=Id(e,r.color,r.background)}return e}function Y0(t){for(let e in t)for(let r in t[e])return r||"untitled";return"empty"}var ii,dl,he,pl=E(()=>{Zt();wd();Rd();Md();Od();Dd();hl();Bd();ii={debug:fe()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},dl={enabled:!0,level:0},he=class extends is{constructor({id:e}={id:""}){super({level:0}),this.VERSION=fl,this._startTs=ri(),this._deltaTs=ri(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=e,this.userData={},this._storage=new os(`__probe-${this.id}__`,{[this.id]:dl}),this.timeStamp(`${this.id} started`),Nd(this),Object.seal(this)}isEnabled(){return this._getConfiguration().enabled}getLevel(){return this._getConfiguration().level}getTotal(){return Number((ri()-this._startTs).toPrecision(10))}getDelta(){return Number((ri()-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:ii.warn,once:!0})}error(e,...r){return this._log("error",0,e,r,{method:ii.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:ii.log,time:!0,once:!0})}log(e,r,...i){return this._log("log",e,r,i,{method:ii.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:ii.debug||ii.info,once:!0})}table(e,r,i){return r?this._log("table",e,r,i&&[i]||[],{method:console.table||Rr,tag:Y0(r)}):Rr}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||Rr})}group(e,r,i={collapsed:!1}){let o=(i.collapsed?console.groupCollapsed:console.group)||console.info;return this._log("group",e,r,[],{method:o})}groupCollapsed(e,r,i={}){return this.group(e,r,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._log("groupEnd",e,"",[],{method:console.groupEnd||Rr})}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;ti(i),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=ri();let o=X0(this.id,r.message,r);return i.bind(console,o,...r.args)}_getConfiguration(){return this._storage.config[this.id]||this._updateConfiguration(dl),this._storage.config[this.id]}_updateConfiguration(e){let r=this._storage.config[this.id]||{...dl};this._storage.setConfiguration({[this.id]:{...r,...e}})}};he.VERSION=fl});var Ld=E(()=>{globalThis.probe={}});var XM,ro=E(()=>{pl();pl();Ld();XM=new he({id:"@probe.gl/log"})});var x,De=E(()=>{ro();x=new he({id:"luma.gl"})});function nt(t="id"){gl[t]=gl[t]||1;let e=gl[t]++;return`${t}-${e}`}var gl,oi=E(()=>{gl={}});function J0(t,e){let r={...e};for(let i in t)t[i]!==void 0&&(r[i]=t[i]);return r}function Wd(t,e){let r=t.stats,i=!1;for(let c of e)r[c]||(t.get(c),i=!0);let o=Object.keys(r).length,n=Vd.get(t);if(!i&&n?.orderedStatNames===e&&n.statCount===o)return;let s={},a=zd.get(e);a||(a=new Set(e),zd.set(e,a));for(let c of e)r[c]&&(s[c]=r[c]);for(let[c,l]of Object.entries(r))a.has(c)||(s[c]=l);for(let c of Object.keys(r))delete r[c];Object.assign(r,s),Vd.set(t,{orderedStatNames:e,statCount:o})}function jd(t){return t.type==="webgl"?Q0:G0}function io(t){let e=t.userData[K0];return e?.enabled?e:null}function qt(){return globalThis.performance?.now?.()??Date.now()}function eT(t,e){let r=io(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 tT(t){let e=Object.getPrototypeOf(t);for(;e;){let r=Object.getPrototypeOf(e);if(!r||r===D.prototype)return rT(e)||t[Symbol.toStringTag]||t.constructor.name;e=r}return t[Symbol.toStringTag]||t.constructor.name}function rT(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 K0,Fd,Ud,kd,Z0,q0,G0,Q0,Vd,zd,D,se=E(()=>{oi();K0="cpu-hotspot-profiler",Fd="GPU Resource Counts",Ud="Resource Counts",kd="GPU Time and Memory",Z0=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],q0=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","SharedRenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],G0=Z0.flatMap(t=>[`${t} Created`,`${t} Active`]),Q0=q0.flatMap(t=>[`${t} Created`,`${t} Active`]),Vd=new WeakMap,zd=new WeakMap,D=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=J0(r,i);let o=this.props.id!=="undefined"?this.props.id:nt(this[Symbol.toStringTag]);this.props.id=o,this.id=o,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=io(this._device),r=e?qt():0,i=[this._device.statsManager.getStats(Fd),this._device.statsManager.getStats(Ud)],o=jd(this._device);for(let s of i)Wd(s,o);let n=this.getStatsName();for(let s of i)s.get("Resources Active").decrementCount(),s.get(`${n}s Active`).decrementCount();e&&(e.statsBookkeepingCalls=(e.statsBookkeepingCalls||0)+1,e.statsBookkeepingTimeMs=(e.statsBookkeepingTimeMs||0)+(qt()-r))}trackAllocatedMemory(e,r=this.getStatsName()){let i=io(this._device),o=i?qt():0,n=this._device.statsManager.getStats(kd);this.allocatedBytes>0&&this.allocatedBytesName&&(n.get("GPU Memory").subtractCount(this.allocatedBytes),n.get(`${this.allocatedBytesName} Memory`).subtractCount(this.allocatedBytes)),n.get("GPU Memory").addCount(e),n.get(`${r} Memory`).addCount(e),i&&(i.statsBookkeepingCalls=(i.statsBookkeepingCalls||0)+1,i.statsBookkeepingTimeMs=(i.statsBookkeepingTimeMs||0)+(qt()-o)),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=io(this._device),i=r?qt():0,o=this._device.statsManager.getStats(kd);o.get("GPU Memory").subtractCount(this.allocatedBytes),o.get(`${this.allocatedBytesName||e} Memory`).subtractCount(this.allocatedBytes),r&&(r.statsBookkeepingCalls=(r.statsBookkeepingCalls||0)+1,r.statsBookkeepingTimeMs=(r.statsBookkeepingTimeMs||0)+(qt()-i)),this.allocatedBytes=0,this.allocatedBytesName=null}trackDeallocatedReferencedMemory(e=this.getStatsName()){this.trackDeallocatedMemory(`Referenced ${e}`)}addStats(){let e=this.getStatsName(),r=io(this._device),i=r?qt():0,o=[this._device.statsManager.getStats(Fd),this._device.statsManager.getStats(Ud)],n=jd(this._device);for(let s of o)Wd(s,n);for(let s of o)s.get("Resources Created").incrementCount(),s.get("Resources Active").incrementCount(),s.get(`${e}s Created`).incrementCount(),s.get(`${e}s Active`).incrementCount();r&&(r.statsBookkeepingCalls=(r.statsBookkeepingCalls||0)+1,r.statsBookkeepingTimeMs=(r.statsBookkeepingTimeMs||0)+(qt()-i)),eT(this._device,e)}getStatsName(){return tT(this)}};M(D,"defaultProps",{id:"undefined",handle:void 0,userData:void 0})});var oo,I,ss=E(()=>{se();oo=class extends D{get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(e,r){let i={...r};(r.usage||0)&oo.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,oo.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 o=null,n;ArrayBuffer.isView(e)?(o=e,n=e.buffer):n=e;let s=Math.min(e?e.byteLength:i,oo.DEBUG_DATA_MAX_LENGTH);if(n===null)this.debugData=new ArrayBuffer(s);else{let a=Math.min(o?.byteOffset||0,n.byteLength),c=Math.max(0,n.byteLength-a),l=Math.min(s,c);this.debugData=new Uint8Array(n,a,l).slice().buffer}}},I=oo;M(I,"INDEX",16),M(I,"VERTEX",32),M(I,"UNIFORM",64),M(I,"STORAGE",128),M(I,"INDIRECT",256),M(I,"QUERY_RESOLVE",512),M(I,"MAP_READ",1),M(I,"MAP_WRITE",2),M(I,"COPY_SRC",4),M(I,"COPY_DST",8),M(I,"DEBUG_DATA_MAX_LENGTH",32),M(I,"defaultProps",{...D.defaultProps,usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",onMapped:void 0})});var _l,ue,ml,as=E(()=>{_l=class{getDataTypeInfo(e){let[r,i,o]=ml[e],n=e.includes("norm"),s=!n&&!e.startsWith("float"),a=e.startsWith("s");return{signedType:r,primitiveType:i,byteLength:o,normalized:n,integer:s,signed:a}}getNormalizedDataType(e){let r=e;switch(r){case"uint8":return"unorm8";case"sint8":return"snorm8";case"uint16":return"unorm16";case"sint16":return"snorm16";default:return r}}alignTo(e,r){switch(r){case 1:return e;case 2:return e+e%2;default:return e+(4-e%4)%4}}getDataType(e){let r=ArrayBuffer.isView(e)?e.constructor:e;if(r===Uint8ClampedArray)return"uint8";let i=Object.values(ml).find(o=>r===o[4]);if(!i)throw new Error(r.name);return i[0]}getTypedArrayConstructor(e){let[,,,,r]=ml[e];return r}},ue=new _l,ml={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]}});var yl,vt,cs=E(()=>{as();yl=class{getVertexFormatInfo(e){let r;e.endsWith("-webgl")&&(e.replace("-webgl",""),r=!0);let[i,o]=e.split("x"),n=i,s=o?parseInt(o):1,a=ue.getDataTypeInfo(n),c={type:n,components:s,byteLength:a.byteLength*s,integer:a.integer,signed:a.signed,normalized:a.normalized};return r&&(c.webglOnly=!0),c}makeVertexFormat(e,r,i){let o=i?ue.getNormalizedDataType(e):e;switch(o){case"unorm8":return r===1?"unorm8":r===3?"unorm8x3-webgl":`${o}x${r}`;case"snorm8":return r===1?"snorm8":r===3?"snorm8x3-webgl":`${o}x${r}`;case"uint8":case"sint8":if(r===1||r===3)throw new Error(`size: ${r}`);return`${o}x${r}`;case"uint16":return r===1?"uint16":r===3?"uint16x3-webgl":`${o}x${r}`;case"sint16":return r===1?"sint16":r===3?"sint16x3-webgl":`${o}x${r}`;case"unorm16":return r===1?"unorm16":r===3?"unorm16x3-webgl":`${o}x${r}`;case"snorm16":return r===1?"snorm16":r===3?"snorm16x3-webgl":`${o}x${r}`;case"float16":if(r===1||r===3)throw new Error(`size: ${r}`);return`${o}x${r}`;default:return r===1?o:`${o}x${r}`}}getVertexFormatFromAttribute(e,r,i){if(!r||r>4)throw new Error(`size ${r}`);let o=r,n=ue.getDataType(e);return this.makeVertexFormat(n,o,i)}getCompatibleVertexFormat(e){let r;switch(e.primitiveType){case"f32":r="float32";break;case"i32":r="sint32";break;case"u32":r="uint32";break;case"f16":return e.components<=2?"float16x2":"float16x4"}return e.components===1?r:`${r}x${e.components}`}},vt=new yl});function El(t){let e=Xd[t];if(!e)throw new Error(`Unsupported texture format ${t}`);return e}function Hd(){return Xd}var ce,X,st,iT,ls,bl,fs,Tl,oT,xl,Gt,Al,Sl,hs,$d,nT,sT,Xd,wl=E(()=>{ce="texture-compression-bc",X="texture-compression-astc",st="texture-compression-etc2",iT="texture-compression-etc1-webgl",ls="texture-compression-pvrtc-webgl",bl="texture-compression-atc-webgl",fs="float32-renderable-webgl",Tl="float16-renderable-webgl",oT="rgb9e5ufloat-renderable-webgl",xl="snorm8-renderable-webgl",Gt="norm16-webgl",Al="norm16-renderable-webgl",Sl="snorm16-renderable-webgl",hs="float32-filterable",$d="float16-filterable-webgl";nT={r8unorm:{},rg8unorm:{},"rgb8unorm-webgl":{},rgba8unorm:{},"rgba8unorm-srgb":{},r8snorm:{render:xl},rg8snorm:{render:xl},"rgb8snorm-webgl":{},rgba8snorm:{render:xl},r8uint:{},rg8uint:{},rgba8uint:{},r8sint:{},rg8sint:{},rgba8sint:{},bgra8unorm:{},"bgra8unorm-srgb":{},r16unorm:{f:Gt,render:Al},rg16unorm:{f:Gt,render:Al},"rgb16unorm-webgl":{f:Gt,render:!1},rgba16unorm:{f:Gt,render:Al},r16snorm:{f:Gt,render:Sl},rg16snorm:{f:Gt,render:Sl},"rgb16snorm-webgl":{f:Gt,render:!1},rgba16snorm:{f:Gt,render:Sl},r16uint:{},rg16uint:{},rgba16uint:{},r16sint:{},rg16sint:{},rgba16sint:{},r16float:{render:Tl,filter:"float16-filterable-webgl"},rg16float:{render:Tl,filter:$d},rgba16float:{render:Tl,filter:$d},r32uint:{},rg32uint:{},rgba32uint:{},r32sint:{},rg32sint:{},rgba32sint:{},r32float:{render:fs,filter:hs},rg32float:{render:!1,filter:hs},"rgb32float-webgl":{render:fs,filter:hs},rgba32float:{render:fs,filter:hs},"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:oT},rg11b10ufloat:{channels:"rgb",bitsPerChannel:[11,11,10,0],packed:!0,p:1,render:fs},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}},sT={"bc1-rgb-unorm-webgl":{f:ce},"bc1-rgb-unorm-srgb-webgl":{f:ce},"bc1-rgba-unorm":{f:ce},"bc1-rgba-unorm-srgb":{f:ce},"bc2-rgba-unorm":{f:ce},"bc2-rgba-unorm-srgb":{f:ce},"bc3-rgba-unorm":{f:ce},"bc3-rgba-unorm-srgb":{f:ce},"bc4-r-unorm":{f:ce},"bc4-r-snorm":{f:ce},"bc5-rg-unorm":{f:ce},"bc5-rg-snorm":{f:ce},"bc6h-rgb-ufloat":{f:ce},"bc6h-rgb-float":{f:ce},"bc7-rgba-unorm":{f:ce},"bc7-rgba-unorm-srgb":{f:ce},"etc2-rgb8unorm":{f:st},"etc2-rgb8unorm-srgb":{f:st},"etc2-rgb8a1unorm":{f:st},"etc2-rgb8a1unorm-srgb":{f:st},"etc2-rgba8unorm":{f:st},"etc2-rgba8unorm-srgb":{f:st},"eac-r11unorm":{f:st},"eac-r11snorm":{f:st},"eac-rg11unorm":{f:st},"eac-rg11snorm":{f:st},"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:ls},"pvrtc-rgba4unorm-webgl":{f:ls},"pvrtc-rgb2unorm-webgl":{f:ls},"pvrtc-rgba2unorm-webgl":{f:ls},"etc1-rbg-unorm-webgl":{f:iT},"atc-rgb-unorm-webgl":{f:bl},"atc-rgba-unorm-webgl":{f:bl},"atc-rgbai-unorm-webgl":{f:bl}},Xd={...nT,...sT}});function hT({format:t,width:e,height:r,depth:i,byteAlignment:o}){let n=de.getInfo(t),{bytesPerPixel:s,bytesPerBlock:a=s,blockWidth:c=1,blockHeight:l=1,compressed:f=!1}=n,h=f?Math.ceil(e/c):e,u=f?Math.ceil(r/l):r,d=h*a,p=Math.ceil(d/o)*o,g=u,m=p*g*i;return{bytesPerPixel:s,bytesPerRow:p,rowsPerImage:g,depthOrArrayLayers:i,bytesPerImage:p*g,byteLength:m}}function uT(t){let e=El(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=Yd(t),o=t.startsWith("depth")||t.startsWith("stencil"),n=i?.signed,s=i?.integer,a=i?.webgl,c=Boolean(i?.compressed);return r.render&&=!o&&!c,r.filter&&=!o&&!n&&!s&&!a,r}function Yd(t){let e=dT(t);if(de.isCompressed(t)){e.channels="rgb",e.components=3,e.bytesPerPixel=1,e.srgb=!1,e.compressed=!0,e.bytesPerBlock=gT(t);let i=pT(t);i&&(e.blockWidth=i.blockWidth,e.blockHeight=i.blockHeight)}let r=e.packed?null:aT.exec(t);if(r){let[,i,o,n,s,a]=r,c=`${n}${o}`,l=ue.getDataTypeInfo(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),s==="-srgb"&&(e.srgb=!0)}return t.endsWith("-webgl")&&(e.webgl=!0),t.endsWith("-srgb")&&(e.srgb=!0),e}function dT(t){let e=El(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 pT(t){let r=/.*-(\d+)x(\d+)-.*/.exec(t);if(r){let[,i,o]=r;return{blockWidth:Number(i),blockHeight:Number(o)}}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 gT(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 aT,cT,lT,fT,Rl,de,us=E(()=>{as();wl();aT=/^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/,cT=["rgb","rgba","bgra"],lT=["depth","stencil"],fT=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],Rl=class{isColor(e){return cT.some(r=>e.startsWith(r))}isDepthStencil(e){return lT.some(r=>e.startsWith(r))}isCompressed(e){return fT.some(r=>e.startsWith(r))}getInfo(e){return Yd(e)}getCapabilities(e){return uT(e)}computeMemoryLayout(e){return hT(e)}},de=new Rl});function ni(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 no(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 Pl=E(()=>{});function mT(t,e){let r=vl(t),i=e.map(vl).filter(o=>o!==void 0);return[r,...i].filter(o=>o!==void 0)}function vl(t){if(t!==void 0){if(t===null||typeof t=="string"||typeof t=="number"||typeof t=="boolean")return t;if(t instanceof Error)return t.message;if(Array.isArray(t))return t.map(vl);if(typeof t=="object"){if(_T(t)){let e=String(t);if(e!=="[object Object]")return e}return yT(t)?bT(t):t.constructor?.name||"Object"}return String(t)}}function _T(t){return"toString"in t&&typeof t.toString=="function"&&t.toString!==Object.prototype.toString}function yT(t){return"message"in t&&"type"in t}function bT(t){let e=typeof t.type=="string"?t.type:"message",r=typeof t.message=="string"?t.message:"",i=typeof t.lineNum=="number"?t.lineNum:null,o=typeof t.linePos=="number"?t.linePos:null,n=i!==null&&o!==null?` @ ${i}:${o}`:i!==null?` @ ${i}`:"";return`${e}${n}: ${r}`.trim()}function TT(t,e){return t!=null?Boolean(t):e!==void 0?e!=="production":!1}function xT(){return TT(x.get("debug"),AT())}function AT(){let t=globalThis.process;if(t?.env)return t.env.NODE_ENV}var so,ao,Ml,Te,Cl=E(()=>{nl();De();oi();ss();cs();us();Pl();wl();so=class{};ao=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)}},Ml=class{get[Symbol.toStringTag](){return"Device"}toString(){return`Device(${this.id})`}id;props;userData={};statsManager=Jn;_factories={};timestamp=0;_reused=!1;_moduleData={};_textureCaps={};_debugGPUTimeQuery=null;constructor(e){this.props={...Ml.defaultProps,...e},this.id=this.props.id||nt(this[Symbol.toStringTag].toLowerCase())}getVertexFormatInfo(e){return vt.getVertexFormatInfo(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 o=Math.max(e,r,i);return 1+Math.floor(Math.log2(o))}isExternalImage(e){return ni(e)}getExternalImageSize(e){return no(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){if(!this.props.onError(e,r)){let n=mT(r,i);return x.error(this.type==="webgl"?"%cWebGL":"%cWebGPU","color: white; background: red; padding: 2px 6px; border-radius: 3px;",e.message,...n)}return()=>{}}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.`;x.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")}_createBindGroupLayoutWebGPU(e,r){throw new Error("_createBindGroupLayoutWebGPU() not implemented")}_createBindGroupWebGPU(e,r,i,o,n){throw new Error("_createBindGroupWebGPU() 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=n=>(typeof n=="string"?this.features.has(n):n)??!0,o=i(r.create);return{format:e,create:o,render:o&&i(r.render),filter:o&&i(r.filter),blend:o&&i(r.blend),store:o&&i(r.store)}}_normalizeBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});let r={...e};if((e.usage||0)&I.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}},Te=Ml;M(Te,"defaultProps",{id:null,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,createCanvasContext:void 0,webgl:{},onError:(e,r)=>{},onResize:(e,r)=>{let[i,o]=e.getDevicePixelSize();x.log(1,`${e} resized => ${i}x${o}px`)()},onPositionChange:(e,r)=>{let[i,o]=e.getPosition();x.log(1,`${e} repositioned => ${i},${o}`)()},onVisibilityChange:e=>x.log(1,`${e} Visibility changed ${e.isVisible}`)(),onDevicePixelRatioChange:(e,r)=>x.log(1,`${e} DPR changed ${r.oldRatio} => ${e.devicePixelRatio}`)(),debug:xT(),debugGPUTime:!1,debugShaders:x.get("debug-shaders")||void 0,debugFramebuffers:Boolean(x.get("debug-framebuffers")),debugFactories:Boolean(x.get("debug-factories")),debugWebGL:Boolean(x.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 ST,Kd,ps,ds,Qt,Zd=E(()=>{Cl();nl();De();ST="set luma.log.level=1 (or higher) to trace rendering",Kd="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.",ps=class{stats=Jn;log=x;VERSION="9.3.2";spector;preregisteredAdapters=new Map;constructor(){if(globalThis.luma){if(globalThis.luma.VERSION!==this.VERSION)throw x.error(`Found luma.gl ${globalThis.luma.VERSION} while initialzing ${this.VERSION}`)(),x.error("'yarn why @luma.gl/core' can help identify the source of the conflict")(),new Error("luma.gl - multiple versions detected: see console log");x.error("This version of luma.gl has already been initialized")()}x.log(1,`${this.VERSION} - ${ST}`)(),globalThis.luma=this}async createDevice(e={}){let r={...ps.defaultProps,...e},i=this.selectAdapter(r.type,r.adapters);if(!i)throw new Error(Kd);return r.waitForPageLoad&&await i.pageLoaded,await i.create(r)}async attachDevice(e,r){let i=this._getTypeFromHandle(e,r.adapters),o=i&&this.selectAdapter(i,r.adapters);if(!o)throw new Error(Kd);return await o?.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 o of r)if(i.get(o)?.isSupported?.())return o;return null}selectAdapter(e,r=[]){let i=e;e==="best-available"&&(i=this.getBestAvailableAdapterType(r));let o=this._getAdapterMap(r);return i&&o.get(i)||null}enforceWebGL2(e=!0,r=[]){let o=this._getAdapterMap(r).get("webgl");o||x.warn("enforceWebGL2: webgl adapter not found")(),o?.enforceWebGL2?.(e)}setDefaultDeviceProps(e){Object.assign(ps.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?x.warn("WebGL1 is not supported",e)():x.warn("Unknown handle type",e)(),null)}},ds=ps;M(ds,"defaultProps",{...Te.defaultProps,type:"best-available",adapters:void 0,waitForPageLoad:!0});Qt=new ds});function RT(){return gs||(wT()||typeof window>"u"?gs=Promise.resolve():gs=new Promise(t=>window.addEventListener("load",()=>t()))),gs}var co,ET,wT,gs,qd=E(()=>{Zt();co=class{get pageLoaded(){return RT()}},ET=fe()&&typeof document<"u",wT=()=>ET&&document.readyState==="complete",gs=null});var ms,Gd=E(()=>{ms=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 Qd(){let t,e;return{promise:new Promise((i,o)=>{t=i,e=o}),resolve:t,reject:e}}var Jd=E(()=>{});function Il(t,e){if(!t){let r=new Error(e??"luma.gl assertion failed.");throw Error.captureStackTrace?.(r,Il),r}}function Pr(t,e){return Il(t,e),t}var Ol=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 vT(t){let e=document.getElementById(t);if(!Mt.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=nt("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 o=PT(t?.container||null);return o.insertBefore(i,o.firstChild),i}function CT(t,e,r,i,o){let n=t,s=ep(n[0],e,r),a=tp(n[1],e,i,o),c=ep(n[0]+1,e,r),l=c===r-1?c:c-1;c=tp(n[1]+1,e,i,o);let f;return o?(c=c===0?c:c+1,f=a,a=c):f=c===i-1?c:c-1,{x:s,y:a,width:Math.max(l-s+1,1),height:Math.max(f-a+1,1)}}function ep(t,e,r){return Math.min(Math.round(t*e),r-1)}function tp(t,e,r,i){return i?Math.max(0,r-1-Math.round(t*e)):Math.min(Math.round(t*e),r-1)}var lo,Mt,Nl=E(()=>{Zt();Gd();oi();Jd();Ol();lo=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=Qd();_canvasObserver;_position=[0,0];destroyed=!1;_needsDrawingBufferResize=!0;toString(){return`${this[Symbol.toStringTag]}(${this.id})`}constructor(e){this.props={...lo.defaultProps,...e},e=this.props,this.initialized=this._initializedResolvers.promise,fe()?e.canvas?typeof e.canvas=="string"?this.canvas=vT(e.canvas):this.canvas=e.canvas:this.canvas=MT(e):this.canvas={width:e.width||1,height:e.height||1},lo.isHTMLCanvas(this.canvas)?(this.id=e.id||this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):lo.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 ms({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(),[o,n]=this.getDrawingBufferSize();return CT(e,i,o,n,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(o=>o.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=Pr(r.contentBoxSize?.[0]);this.cssWidth=i.inlineSize,this.cssHeight=i.blockSize;let o=this.getDevicePixelSize(),n=r.devicePixelContentBoxSize?.[0]?.inlineSize||i.inlineSize*devicePixelRatio,s=r.devicePixelContentBoxSize?.[0]?.blockSize||i.blockSize*devicePixelRatio,[a,c]=this.getMaxDrawingBufferSize();this.devicePixelWidth=Math.max(1,Math.min(n,a)),this.devicePixelHeight=Math.max(1,Math.min(s,c)),this._updateDrawingBufferSize(),this.device.props.onResize(this,{oldPixelSize:o})}_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 o=this._position;this._position=r,this.device.props.onPositionChange?.(this,{oldPosition:o})}}}},Mt=lo;M(Mt,"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 si,rp=E(()=>{Nl();si=class extends Mt{};M(si,"defaultProps",Mt.defaultProps)});var fo,ip=E(()=>{Nl();fo=class extends Mt{}});var _s,Be,Dl=E(()=>{se();_s=class extends D{get[Symbol.toStringTag](){return"Sampler"}constructor(e,r){r=_s.normalizeProps(e,r),super(e,r,_s.defaultProps)}static normalizeProps(e,r){return r}},Be=_s;M(Be,"defaultProps",{...D.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 IT,Ee,B,Bl=E(()=>{se();Dl();De();us();IT={"1d":"1d","2d":"2d","2d-array":"2d",cube:"2d","cube-array":"2d","3d":"3d"},Ee=class extends D{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=IT[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 o=e.getExternalImageSize(r.data);this.width=o?.width||1,this.height=o?.height||1}else this.width=1,this.height=1,(this.props.width===void 0||this.props.height===void 0)&&x.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 Be?e:this.device.createSampler(e)}copyImageData(e){let{data:r,depth:i,...o}=e;this.writeData(r,{...o,depthOrArrayLayers:o.depthOrArrayLayers??i})}computeMemoryLayout(e={}){let r=this._normalizeTextureReadOptions(e),{width:i=this.width,height:o=this.height,depthOrArrayLayers:n=this.depth}=r,{format:s,byteAlignment:a}=this;return de.computeMemoryLayout({format:s,width:i,height:o,depth:n,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:o,height:n}=i;return typeof o=="number"&&(i.width=Math.max(1,Math.ceil(o))),typeof n=="number"&&(i.height=Math.max(1,Math.ceil(n))),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,...o}=e,n=this._normalizeTextureWriteOptions({...o,depthOrArrayLayers:o.depthOrArrayLayers??i});return{data:r,depth:n.depthOrArrayLayers,...n}}_normalizeCopyExternalImageOptions(e){let r=Ee._omitUndefined(e),i=r.mipLevel??0,o=this._getMipLevelSize(i),n=this.device.getExternalImageSize(e.image),s={...Ee.defaultCopyExternalImageOptions,...o,...n,...r};return s.width=Math.min(s.width,o.width-s.x),s.height=Math.min(s.height,o.height-s.y),s.depth=Math.min(s.depth,o.depthOrArrayLayers-s.z),s}_normalizeTextureReadOptions(e){let r=Ee._omitUndefined(e),i=r.mipLevel??0,o=this._getMipLevelSize(i),n={...Ee.defaultTextureReadOptions,...o,...r};return n.width=Math.min(n.width,o.width-n.x),n.height=Math.min(n.height,o.height-n.y),n.depthOrArrayLayers=Math.min(n.depthOrArrayLayers,o.depthOrArrayLayers-n.z),n}_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,o=this._getMipLevelSize(i),n={...Ee.defaultTextureWriteOptions,...o,...r};n.width=Math.min(n.width,o.width-n.x),n.height=Math.min(n.height,o.height-n.y),n.depthOrArrayLayers=Math.min(n.depthOrArrayLayers,o.depthOrArrayLayers-n.z);let s=de.computeMemoryLayout({format:this.format,width:n.width,height:n.height,depth:n.depthOrArrayLayers,byteAlignment:this.byteAlignment}),a=s.bytesPerPixel*n.width;if(n.bytesPerRow=r.bytesPerRow??s.bytesPerRow,n.rowsPerImage=r.rowsPerImage??n.height,n.bytesPerRow<a)throw new Error(`bytesPerRow (${n.bytesPerRow}) must be at least ${a} for ${this.format}`);if(n.rowsPerImage<n.height)throw new Error(`rowsPerImage (${n.rowsPerImage}) must be at least ${n.height} for ${this.format}`);let c=this.device.getTextureFormatInfo(this.format).bytesPerPixel;if(c&&n.bytesPerRow%c!==0)throw new Error(`bytesPerRow (${n.bytesPerRow}) must be a multiple of bytesPerPixel (${c}) for ${this.format}`);return n}_getMipLevelSize(e){let r=Math.max(1,this.width>>e),i=this.baseDimension==="1d"?1:Math.max(1,this.height>>e),o=this.dimension==="3d"?Math.max(1,this.depth>>e):this.depth;return{width:r,height:i,depthOrArrayLayers:o}}getAllocatedByteLength(){let e=0;for(let r=0;r<this.mipLevels;r++){let{width:i,height:o,depthOrArrayLayers:n}=this._getMipLevelSize(r);e+=de.computeMemoryLayout({format:this.format,width:i,height:o,depth:n,byteAlignment:1}).byteLength}return e*this.samples}static _omitUndefined(e){return Object.fromEntries(Object.entries(e).filter(([,r])=>r!==void 0))}},B=Ee;M(B,"SAMPLE",4),M(B,"STORAGE",8),M(B,"RENDER",16),M(B,"COPY_SRC",1),M(B,"COPY_DST",2),M(B,"TEXTURE",4),M(B,"RENDER_ATTACHMENT",16),M(B,"defaultProps",{...D.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}),M(B,"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"}),M(B,"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}),M(B,"defaultTextureReadOptions",{x:0,y:0,z:0,width:void 0,height:void 0,depthOrArrayLayers:1,mipLevel:0,aspect:"all"}),M(B,"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 Ll,Jt,op=E(()=>{se();Ll=class extends D{get[Symbol.toStringTag](){return"TextureView"}constructor(e,r){super(e,r,Ll.defaultProps)}},Jt=Ll;M(Jt,"defaultProps",{...D.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0})});function np(t,e,r){let i="",o=e.split(/\r?\n/),n=t.slice().sort((s,a)=>s.lineNum-a.lineNum);switch(r?.showSourceCode||"no"){case"all":let s=0;for(let a=1;a<=o.length;a++){let c=o[a-1],l=n[s];for(c&&l&&(i+=sp(c,a,r));n.length>s&&l.lineNum===a;){let f=n[s++];f&&(i+=Fl(f,o,f.lineNum,{...r,inlineSource:!1}))}}for(;n.length>s;){let a=n[s++];a&&(i+=Fl(a,[],0,{...r,inlineSource:!1}))}return i;case"issues":case"no":for(let a of t)i+=Fl(a,o,a.lineNum,{inlineSource:r?.showSourceCode!=="no"});return i}}function Fl(t,e,r,i){if(i?.inlineSource){let n=OT(e,r),s=t.linePos>0?`${" ".repeat(t.linePos+5)}^^^
9
9
  `:"";return`
10
- ${o}${n}${t.type.toUpperCase()}: ${t.message}
10
+ ${n}${s}${t.type.toUpperCase()}: ${t.message}
11
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 mT(t,e,r){let i="";for(let s=e-2;s<=e;s++){let o=t[s-1];o!==void 0&&(i+=Zd(o,e,r))}return i}function Zd(t,e,r){let i=r?.html?yT(t):t;return`${_T(String(e),4)}: ${i}${r?.html?"<br/>":`
13
- `}`}function _T(t,e){let r="";for(let i=t.length;i<e;++i)r+=" ";return r+t}function yT(t){return t.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#039;")}var qd=E(()=>{});function bT(t){return TT(t.source)||t.id||st(`unnamed ${t.stage}-shader`)}function TT(t,e="unnamed"){return/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(t)?.[1]??e}var Il,Gt,Ol=E(()=>{ae();ti();qd();Il=class extends D{get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(e,r){r={...r,debugShaders:r.debugShaders||e.props.debugShaders||"errors"},super(e,{id:bT(r),...r},Il.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=Kd(e,this.source,{showSourceCode:"all",html:!0}),n=this.getTranslatedSource(),a=document.createElement("div");a.innerHTML=`<h1>Compilation error in ${s}</h1>
12
+ `}let o=t.type==="error"?"red":"orange";return i?.html?`<div class='luma-compiler-log-${t.type}' style="color:${o};"><b> ${t.type.toUpperCase()}: ${t.message}</b></div>`:`${t.type.toUpperCase()}: ${t.message}`}function OT(t,e,r){let i="";for(let o=e-2;o<=e;o++){let n=t[o-1];n!==void 0&&(i+=sp(n,e,r))}return i}function sp(t,e,r){let i=r?.html?DT(t):t;return`${NT(String(e),4)}: ${i}${r?.html?"<br/>":`
13
+ `}`}function NT(t,e){let r="";for(let i=t.length;i<e;++i)r+=" ";return r+t}function DT(t){return t.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("'","&#039;")}var ap=E(()=>{});function BT(t){return LT(t.source)||t.id||nt(`unnamed ${t.stage}-shader`)}function LT(t,e="unnamed"){return/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(t)?.[1]??e}var Ul,er,kl=E(()=>{se();oi();ap();Ul=class extends D{get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(e,r){r={...r,debugShaders:r.debugShaders||e.props.debugShaders||"errors"},super(e,{id:BT(r),...r},Ul.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,o=`${this.stage} shader "${i}"`,n=np(e,this.source,{showSourceCode:"all",html:!0}),s=this.getTranslatedSource(),a=document.createElement("div");a.innerHTML=`<h1>Compilation error in ${o}</h1>
14
14
  <div style="display:flex;position:fixed;top:10px;right:20px;gap:2px;">
15
15
  <button id="copy">Copy source</button><br/>
16
16
  <button id="close">Close</button>
17
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)}}},Gt=Il;P(Gt,"defaultProps",{...D.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debugShaders:void 0})});var Nl,nt,Gd=E(()=>{ae();vl();De();Nl=class extends D{get[Symbol.toStringTag](){return"Framebuffer"}width;height;constructor(e,r={}){super(e,r,Nl.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&&(x.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 B?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 B?this.depthStencilAttachment=e.view:this.depthStencilAttachment=e}createColorTexture(e,r){return this.device.createTexture({id:`${this.id}-color-attachment-${r}`,usage:B.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:B.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()}},nt=Nl;P(nt,"defaultProps",{...D.defaultProps,width:1,height:1,colorAttachments:[],depthStencilAttachment:null})});var Dl,Re,Bl=E(()=>{ae();Dl=class extends D{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,Dl.defaultProps),this.shaderLayout=this.props.shaderLayout,this.bufferLayout=this.props.bufferLayout||[],this.sharedRenderPipeline=this.props._sharedRenderPipeline||null}},Re=Dl;P(Re,"defaultProps",{...D.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,bindGroups:void 0})});var ns,Qd=E(()=>{ae();ns=class extends D{get[Symbol.toStringTag](){return"SharedRenderPipeline"}constructor(e,r){super(e,r,{...D.defaultProps,handle:void 0,vs:void 0,fs:void 0,varyings:void 0,bufferMode:void 0})}}});var Fl,si,Jd=E(()=>{ae();Fl=class extends D{get[Symbol.toStringTag](){return"ComputePipeline"}hash="";shaderLayout;constructor(e,r){super(e,r,Fl.defaultProps),this.shaderLayout=r.shaderLayout}},si=Fl;P(si,"defaultProps",{...D.defaultProps,shader:void 0,entryPoint:void 0,constants:{},shaderLayout:void 0})});var Ll,oi,ep=E(()=>{Jd();Bl();De();ti();Ll=class{static getDefaultPipelineFactory(e){let r=e.getModuleData("@luma.gl/core");return r.defaultPipelineFactory||=new Ll(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={...Re.defaultProps,...e},i=this._renderPipelineCache,s=this._hashRenderPipeline(r),o=i[s]?.resource;if(o)i[s].useCount++,this.device.props.debugFactories&&x.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`:st("unnamed-cached"),_sharedRenderPipeline:n}),o.hash=s,i[s]={resource:o,useCount:1},this.device.props.debugFactories&&x.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={...si.defaultProps,...e},i=this._computePipelineCache,s=this._hashComputePipeline(r),o=i[s]?.resource;return o?(i[s].useCount++,this.device.props.debugFactories&&x.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&&x.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&&x.log(3,`${this}: ${e} released and destroyed`)()):r[i].useCount<0?(x.error(`${this}: ${e} released, useCount < 0, resetting`)(),r[i].useCount=0):this.device.props.debugFactories&&x.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 Re&&this.releaseSharedRenderPipeline(e),!0):!1}_getCache(e){let r;if(e instanceof si&&(r=this._computePipelineCache),e instanceof Re&&(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),s=this._getHash(JSON.stringify(e.shaderLayout));return`${r}/C/${i}SL${s}`}_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.shaderLayout)),n=this._getHash(JSON.stringify(e.bufferLayout)),{type:a}=this.device;switch(a){case"webgl":let c=this._getHash(JSON.stringify(e.parameters));return`${a}/R/${r}/${i}V${s}T${e.topology}P${c}SL${o}BL${n}`;case"webgpu":default:let l=this._getHash(JSON.stringify({vertexEntryPoint:e.vertexEntryPoint,fragmentEntryPoint:e.fragmentEntryPoint})),f=this._getHash(JSON.stringify(e.parameters)),h=this._getWebGPUAttachmentHash(e);return`${a}/R/${r}/${i}V${s}T${e.topology}EP${l}P${f}SL${o}BL${n}A${h}`}}_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}))}_getWebGPUAttachmentHash(e){let r=e.colorAttachmentFormats??[this.device.preferredColorFormat],i=e.parameters?.depthWriteEnabled?e.depthStencilAttachmentFormat||this.device.preferredDepthFormat:null;return this._getHash(JSON.stringify({colorAttachmentFormats:r,depthStencilAttachmentFormat:i}))}},oi=Ll;P(oi,"defaultProps",{...Re.defaultProps})});var Ul,ni,tp=E(()=>{Ol();De();Ul=class{static getDefaultShaderFactory(e){let r=e.getModuleData("@luma.gl/core");return r.defaultShaderFactory||=new Ul(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&&x.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&&x.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&&x.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&&x.log(3,`${this}: Releasing shader ${e.id} count=${i.useCount}`)()}}_hashShader(e){return`${e.stage}:${e.source}`}},ni=Ul;P(ni,"defaultProps",{...Gt.defaultProps})});function rp(t,e,r){let i=t.bindings.find(s=>s.name===e||`${s.name.toLocaleLowerCase()}uniforms`===e.toLocaleLowerCase());return!i&&!r?.ignoreWarnings&&x.warn(`Binding ${e} not set: Not found in shader layout.`)(),i||null}function as(t,e){if(!e)return{};if(xT(e))return Object.fromEntries(Object.entries(e).map(([s,o])=>[Number(s),{...o}]));let r={};for(let[i,s]of Object.entries(e)){let n=rp(t,i)?.group??0;r[n]||={},r[n][i]=s}return r}function pn(t){let e={};for(let r of Object.values(t))Object.assign(e,r);return e}function xT(t){let e=Object.keys(t);return e.length>0&&e.every(r=>/^\d+$/.test(r))}var ip=E(()=>{De()});var Sr,Mt,sp=E(()=>{ae();Sr=class extends D{get[Symbol.toStringTag](){return"RenderPass"}constructor(e,r){r=Sr.normalizeProps(e,r),super(e,r,Sr.defaultProps)}static normalizeProps(e,r){return r}},Mt=Sr;P(Mt,"defaultClearColor",[0,0,0,1]),P(Mt,"defaultClearDepth",1),P(Mt,"defaultClearStencil",0),P(Mt,"defaultProps",{...D.defaultProps,framebuffer:null,parameters:void 0,clearColor:Sr.defaultClearColor,clearColors:void 0,clearDepth:Sr.defaultClearDepth,clearStencil:Sr.defaultClearStencil,depthReadOnly:!1,stencilReadOnly:!1,discard:!1,occlusionQuerySet:void 0,timestampQuerySet:void 0,beginTimestampIndex:void 0,endTimestampIndex:void 0})});var kl,ai,op=E(()=>{ae();kl=class extends D{get[Symbol.toStringTag](){return"CommandEncoder"}_timeProfilingQuerySet=null;_timeProfilingSlotCount=0;_gpuTimeMs;constructor(e,r){super(e,r,kl.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")}},ai=kl;P(ai,"defaultProps",{...D.defaultProps,measureExecutionTime:void 0,timeProfilingQuerySet:void 0})});var Vl,ci,np=E(()=>{ae();Vl=class extends D{get[Symbol.toStringTag](){return"CommandBuffer"}constructor(e,r){super(e,r,Vl.defaultProps)}},ci=Vl;P(ci,"defaultProps",{...D.defaultProps})});function li(t){let e=gn(t),r=wT[e];if(!r)throw new Error(`Unsupported variable shader type: ${t}`);return r}function ap(t){let e=cp(t),r=ET[e];if(!r)throw new Error(`Unsupported attribute shader type: ${t}`);let[i,s]=r,o=i==="i32"||i==="u32",n=i!=="u32",a=ST[i]*s;return{primitiveType:i,components:s,byteLength:a,integer:o,signed:n}}function AT(t,e){return e===1?t:`vec${e}<${t}>`}function cp(t){return RT[t]||t}function gn(t){return PT[t]||t}var zl,Wl,ST,ET,wT,RT,PT,mn=E(()=>{zl=class{getVariableShaderTypeInfo(e){return li(e)}getAttributeShaderTypeInfo(e){return ap(e)}makeShaderAttributeType(e,r){return AT(e,r)}resolveAttributeShaderTypeAlias(e){return cp(e)}resolveVariableShaderTypeAlias(e){return gn(e)}};Wl=new zl,ST={f32:4,f16:2,i32:4,u32:4},ET={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]},wT={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>"},PT={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>",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 _n(t,e){let r={};for(let i of t.attributes){let s=vT(t,e,i.name);s&&(r[i.name]=s)}return r}function lp(t,e,r=16){let i=_n(t,e),s=new Array(r).fill(null);for(let o of Object.values(i))s[o.location]=o;return s}function vT(t,e,r){let i=MT(t,r),s=CT(e,r);if(!i)return null;let o=Wl.getAttributeShaderTypeInfo(i.type),n=Pt.getCompatibleVertexFormat(o),a=s?.vertexFormat||n,c=Pt.getVertexFormatInfo(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 MT(t,e){let r=t.attributes.find(i=>i.name===e);return r||x.warn(`shader layout attribute "${e}" not present in shader`),r||null}function CT(t,e){IT(t);let r=OT(t,e);return r||(r=NT(t,e),r)?r:(x.warn(`layout for attribute "${e}" not present in buffer layout`),null)}function IT(t){for(let e of t)(e.attributes&&e.format||!e.attributes&&!e.format)&&x.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`)}function OT(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 NT(t,e){for(let r of t){let i=r.byteStride;if(typeof r.byteStride!="number")for(let o of r.attributes||[]){let n=Pt.getVertexFormatInfo(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 jl=E(()=>{De();mn();sn()});var Hl,fi,fp=E(()=>{jl();ae();Hl=class extends D{get[Symbol.toStringTag](){return"VertexArray"}maxVertexAttributes;attributeInfos;indexBuffer=null;attributes;constructor(e,r){super(e,r,Hl.defaultProps),this.maxVertexAttributes=e.limits.maxVertexAttributes,this.attributes=new Array(this.maxVertexAttributes).fill(null),this.attributeInfos=lp(r.shaderLayout,r.bufferLayout,this.maxVertexAttributes)}setConstantWebGL(e,r){this.device.reportError(new Error("constant attributes not supported"),this)()}},fi=Hl;P(fi,"defaultProps",{...D.defaultProps,shaderLayout:void 0,bufferLayout:[]})});var $l,hi,hp=E(()=>{ae();$l=class extends D{get[Symbol.toStringTag](){return"TransformFeedback"}constructor(e,r){super(e,r,$l.defaultProps)}},hi=$l;P(hi,"defaultProps",{...D.defaultProps,layout:void 0,buffers:{}})});var Xl,ui,up=E(()=>{ae();Xl=class extends D{get[Symbol.toStringTag](){return"QuerySet"}constructor(e,r){super(e,r,Xl.defaultProps)}},ui=Xl;P(ui,"defaultProps",{...D.defaultProps,type:void 0,count:void 0})});var Yl,di,dp=E(()=>{ae();Yl=class extends D{get[Symbol.toStringTag](){return"Fence"}constructor(e,r={}){super(e,r,Yl.defaultProps)}},di=Yl;P(di,"defaultProps",{...D.defaultProps})});function at(t,e){switch(e){case 1:return t;case 2:return t+t%2;default:return t+(4-t%4)%4}}function cs(t){let[,,,,e]=DT[t];return e}var DT,Kl=E(()=>{DT={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 gp(t,e={}){let r={...t},i=e.layout??"std140",s={},o=0;for(let[n,a]of Object.entries(r))o=Zl(s,n,a,o,i);return o=at(o,Qt(r,i)),{layout:i,byteLength:o*4,uniformTypes:r,fields:s}}function ls(t,e){let r=gn(t),i=li(r),s=/^mat(\d)x(\d)<.+>$/.exec(r);if(s){let n=Number(s[1]),a=Number(s[2]),c=pp(a,r,i.type,e),l=FT(c.size,c.alignment,e);return{alignment:c.alignment,size:n*l,components:n*a,columns:n,rows:a,columnStride:l,shaderType:r,type:i.type}}let o=/^vec(\d)<.+>$/.exec(r);return o?pp(Number(o[1]),r,i.type,e):{alignment:1,size:1,components:1,columns:1,rows:1,columnStride:1,shaderType:r,type:i.type}}function ql(t){return Boolean(t)&&typeof t=="object"&&!Array.isArray(t)}function Zl(t,e,r,i,s){if(typeof r=="string"){let o=ls(r,s),n=at(i,o.alignment);return t[e]={offset:n,...o},n+o.size}if(Array.isArray(r)){if(Array.isArray(r[0]))throw new Error(`Nested arrays are not supported for ${e}`);let o=r[0],n=r[1],a=_p(o,s),c=at(i,Qt(r,s));for(let l=0;l<n;l++)Zl(t,`${e}[${l}]`,o,c+l*a,s);return c+a*n}if(ql(r)){let o=Qt(r,s),n=at(i,o);for(let[a,c]of Object.entries(r))n=Zl(t,`${e}.${a}`,c,n,s);return at(n,o)}throw new Error(`Unsupported CompositeShaderType for ${e}`)}function mp(t,e){if(typeof t=="string")return ls(t,e).size;if(Array.isArray(t)){let i=t[0],s=t[1];if(Array.isArray(i))throw new Error("Nested arrays are not supported");return _p(i,e)*s}let r=0;for(let i of Object.values(t)){let s=i;r=at(r,Qt(s,e)),r+=mp(s,e)}return at(r,Qt(t,e))}function Qt(t,e){if(typeof t=="string")return ls(t,e).alignment;if(Array.isArray(t)){let i=t[0],s=Qt(i,e);return yp(e)?Math.max(s,4):s}let r=1;for(let i of Object.values(t)){let s=Qt(i,e);r=Math.max(r,s)}return LT(e)?Math.max(r,4):r}function pp(t,e,r,i){return{alignment:t===2?2:4,size:t===3?3:t,components:t,columns:1,rows:t,columnStride:t===3?3:t,shaderType:e,type:r}}function _p(t,e){let r=mp(t,e),i=Qt(t,e);return BT(r,i,e)}function BT(t,e,r){return at(t,yp(r)?4:e)}function FT(t,e,r){return r==="std140"?4:at(t,e)}function yp(t){return t==="std140"||t==="wgsl-uniform"}function LT(t){return t==="std140"||t==="wgsl-uniform"}var Gl=E(()=>{Kl();mn()});function Ql(t){return(!yn||yn.byteLength<t)&&(yn=new ArrayBuffer(t)),yn}function Jl(t,e){let r=Ql(t.BYTES_PER_ELEMENT*e);return new t(r,0,e)}var yn,ef=E(()=>{});function UT(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function pi(t){return Array.isArray(t)?t.length===0||typeof t[0]=="number":UT(t)}var tf=E(()=>{});function kT(t){return Boolean(t)&&typeof t=="object"&&!Array.isArray(t)&&!ArrayBuffer.isView(t)}function VT(t,e,r){return Array.prototype.slice.call(t,e,r)}var bn,bp=E(()=>{ef();tf();De();Gl();bn=class{layout;constructor(e){this.layout=e}has(e){return Boolean(this.layout.fields[e])}get(e){let r=this.layout.fields[e];return r?{offset:r.offset,size:r.size}:void 0}getFlatUniformValues(e){let r={};for(let[i,s]of Object.entries(e)){let o=this.layout.uniformTypes[i];o?this._flattenCompositeValue(r,i,o,s):this.layout.fields[i]&&(r[i]=s)}return r}getData(e){let r=Ql(this.layout.byteLength);new Uint8Array(r,0,this.layout.byteLength).fill(0);let i={i32:new Int32Array(r),u32:new Uint32Array(r),f32:new Float32Array(r),f16:new Uint16Array(r)},s=this.getFlatUniformValues(e);for(let[o,n]of Object.entries(s))this._writeLeafValue(i,o,n);return new Uint8Array(r,0,this.layout.byteLength)}_flattenCompositeValue(e,r,i,s){if(s!==void 0){if(typeof i=="string"||this.layout.fields[r]){e[r]=s;return}if(Array.isArray(i)){let o=i[0],n=i[1];if(Array.isArray(o))throw new Error(`Nested arrays are not supported for ${r}`);if(typeof o=="string"&&pi(s)){this._flattenPackedArray(e,r,o,n,s);return}if(!Array.isArray(s)){x.warn(`Unsupported uniform array value for ${r}:`,s)();return}for(let a=0;a<Math.min(s.length,n);a++){let c=s[a];c!==void 0&&this._flattenCompositeValue(e,`${r}[${a}]`,o,c)}return}if(ql(i)&&kT(s)){for(let[o,n]of Object.entries(s)){if(n===void 0)continue;let a=`${r}.${o}`;this._flattenCompositeValue(e,a,i[o],n)}return}x.warn(`Unsupported uniform value for ${r}:`,s)()}}_flattenPackedArray(e,r,i,s,o){let n=o,c=ls(i,this.layout.layout).components;for(let l=0;l<s;l++){let f=l*c;if(f>=n.length)break;c===1?e[`${r}[${l}]`]=Number(n[f]):e[`${r}[${l}]`]=VT(o,f,f+c)}}_writeLeafValue(e,r,i){let s=this.layout.fields[r];if(!s){x.warn(`Uniform ${r} not found in layout`)();return}let{type:o,components:n,columns:a,rows:c,offset:l,columnStride:f}=s,h=e[o];if(n===1){h[l]=Number(i);return}let u=i;if(a===1){for(let p=0;p<n;p++)h[l+p]=Number(u[p]??0);return}let d=0;for(let p=0;p<a;p++){let g=l+p*f;for(let m=0;m<c;m++)h[g+m]=Number(u[d++]??0)}}}});function Tp(t,e,r=16){if(t===e)return!0;let i=t,s=e;if(!pi(i)||!pi(s)||i.length!==s.length)return!1;let o=Math.min(r,zT);if(i.length>o)return!1;for(let n=0;n<i.length;++n)if(s[n]!==i[n])return!1;return!0}function xp(t){return pi(t)?t.slice():t}var zT,Ap=E(()=>{tf();zT=128});var Tn,Sp=E(()=>{Ap();Tn=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){Tp(this.uniforms[e],r)||(this.uniforms[e]=xp(r),this.modifiedUniforms[e]=!0,this.modified=!0)}}});function jT(t){return t.type==="webgpu"?"wgsl-uniform":"std140"}var WT,fs,Ep=E(()=>{tn();De();Gl();Sp();bp();WT=1024,fs=class{device;uniformBlocks=new Map;shaderBlockLayouts=new Map;shaderBlockWriters=new Map;uniformBuffers=new Map;constructor(e,r){this.device=e;for(let[i,s]of Object.entries(r)){let o=i,n=gp(s.uniformTypes??{},{layout:s.layout??jT(e)}),a=new bn(n);this.shaderBlockLayouts.set(o,n),this.shaderBlockWriters.set(o,a);let c=new Tn({name:i});c.setUniforms(a.getFlatUniformValues(s.defaultUniforms||{})),this.uniformBlocks.set(o,c)}}destroy(){for(let e of this.uniformBuffers.values())e.destroy()}setUniforms(e){for(let[r,i]of Object.entries(e)){let s=r,n=this.shaderBlockWriters.get(s)?.getFlatUniformValues(i||{});this.uniformBlocks.get(s)?.setUniforms(n||{})}this.updateUniformBuffers()}getUniformBufferByteLength(e){let r=this.shaderBlockLayouts.get(e)?.byteLength||0;return Math.max(r,WT)}getUniformBufferData(e){let r=this.uniformBlocks.get(e)?.getAllUniforms()||{};return this.shaderBlockWriters.get(e)?.getData(r)||new Uint8Array(0)}createUniformBuffer(e,r){r&&this.setUniforms(r);let i=this.getUniformBufferByteLength(e),s=this.device.createBuffer({usage:I.UNIFORM|I.COPY_DST,byteLength:i}),o=this.getUniformBufferData(e);return s.write(o),s}getManagedUniformBuffer(e){if(!this.uniformBuffers.get(e)){let r=this.getUniformBufferByteLength(e),i=this.device.createBuffer({usage:I.UNIFORM|I.COPY_DST,byteLength:r});this.uniformBuffers.set(e,i)}return this.uniformBuffers.get(e)}updateUniformBuffers(){let e=!1;for(let r of this.uniformBlocks.keys()){let i=this.updateUniformBuffer(r);e||=i}return e&&x.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();x.log(4,`Writing to uniform buffer ${String(e)}`,o,n)()}return s}}});var L=E(()=>{Ud();kd();Sl();$d();Xd();tn();vl();Yd();Ol();Pl();Gd();Bl();Qd();ep();tp();sp();op();np();fp();hp();up();dp();Ep();rn();Kl();mn();sn();cn();Tl();De();ip();wl();ef();jl()});var _r,ly=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"})(_r||(_r={}))});var fy=E(()=>{ly()});function hy(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&&cP(s),s}return this.originalGetContext(r,i)}}function cP(t){t.getExtension("EXT_color_buffer_float");let e={...sP,WEBGL_disjoint_timer_query:t.getExtension("EXT_disjoint_timer_query_webgl2"),WEBGL_draw_buffers:oP(t),OES_vertex_array_object:nP(t),ANGLE_instanced_arrays:aP(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 sP,oP,nP,aP,uy=E(()=>{sP={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:{}},oP=t=>({drawBuffersWEBGL(e){return t.drawBuffers(e)},COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067}),nP=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)}}),aP=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 za(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 Tu=E(()=>{});function jr(t){let e=t.luma||{_polyfilled:!1,extensions:{},softwareRenderer:!1};return e._polyfilled??=!1,e.extensions||={},t.luma=e,e}var Wa=E(()=>{});async function py(t){if(!globalThis.SPECTOR)try{await za(t.debugSpectorJSUrl||ja.debugSpectorJSUrl)}catch(e){x.warn(String(e))}}function gy(t){if(t={...ja,...t},!t.debugSpectorJS)return null;if(!Ie&&globalThis.SPECTOR&&!globalThis.luma?.spector){x.probe(lP,"SPECTOR found and initialized. Start with `luma.spector.displayUI()`")();let{Spector:e}=globalThis.SPECTOR;Ie=new e,globalThis.luma&&(globalThis.luma.spector=Ie)}if(!Ie)return null;if(dy||(dy=!0,Ie.spyCanvases(),Ie?.onCaptureStarted.add(e=>x.info("Spector capture started:",e)()),Ie?.onCapture.add(e=>{x.info("Spector capture complete:",e)(),Ie?.getResultUI(),Ie?.resultView.display(),Ie?.resultView.addCapture(e)})),t.gl){let e=t.gl,r=jr(e),i=r.device;Ie?.startCapture(t.gl,500),r.device=i,new Promise(s=>setTimeout(s,2e3)).then(s=>{x.info("Spector capture stopped after 2 seconds")(),Ie?.stopCapture()})}return Ie}var lP,Ie,dy,ja,xu=E(()=>{L();Tu();Wa();lP=1,Ie=null,dy=!1,ja={debugSpectorJS:x.get("debug-spectorjs"),debugSpectorJSUrl:"https://cdn.jsdelivr.net/npm/spectorjs@0.9.30/dist/spector.bundle.js",gl:void 0}});function _y(t){return t.luma=t.luma||{},t.luma}async function yy(){he()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await za(fP))}function by(t,e={}){return e.debugWebGL||e.traceWebGL?uP(t,e):hP(t)}function hP(t){let e=_y(t);return e.realContext?e.realContext:t}function uP(t,e){if(!globalThis.WebGLDebugUtils)return x.warn("webgl-debug not loaded")(),t;let r=_y(t);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({..._r,...t});let i=globalThis.WebGLDebugUtils.makeDebugContext(t,dP.bind(null,e),pP.bind(null,e));for(let n in _r)!(n in i)&&typeof _r[n]=="number"&&(i[n]=_r[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 my(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 dP(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})`;x.error("%cWebGL","color: white; background: red; padding: 2px 6px; border-radius: 3px;",n)();debugger;throw new Error(n)}function pP(t,e,r){let i="";t.traceWebGL&&x.level>=1&&(i=my(e,r),x.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||my(e,r);debugger}}var fP,Au=E(()=>{L();fy();Xt();Tu();fP="https://unpkg.com/webgl-debug@2.0.1/index.js"});function Su(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Q(t,e,r){return e[t]!==void 0?e[t]:r[t]}var bo,ie,Ty,Oe,xy,yo,Ay,Sy,Eu,bt,wu,Ey,Ru=E(()=>{bo={[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},ie=(t,e,r)=>e?t.enable(r):t.disable(r),Ty=(t,e,r)=>t.hint(r,e),Oe=(t,e,r)=>t.pixelStorei(r,e),xy=(t,e,r)=>{let i=r===36006?36009:36008;return t.bindFramebuffer(i,e)},yo=(t,e,r)=>{let s={[34964]:34962,[36662]:36662,[36663]:36663,[35053]:35051,[35055]:35052}[r];t.bindBuffer(s,e)};Ay={[3042]:ie,[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]:ie,[2885]:(t,e)=>t.cullFace(e),[2929]:ie,[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]:ie,[35723]:Ty,[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]:xy,[36010]:xy,[34964]:yo,[36662]:yo,[36663]:yo,[35053]:yo,[35055]:yo,[2886]:(t,e)=>t.frontFace(e),[33170]:Ty,[2849]:(t,e)=>t.lineWidth(e),[32823]:ie,[32824]:"polygonOffset",[10752]:"polygonOffset",[35977]:ie,[32926]:ie,[32928]:ie,[32938]:"sampleCoverage",[32939]:"sampleCoverage",[3089]:ie,[3088]:(t,e)=>t.scissor(...e),[2960]:ie,[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]:ie,[10754]:ie,[12288]:ie,[12289]:ie,[12290]:ie,[12291]:ie,[12292]:ie,[12293]:ie,[12294]:ie,[12295]:ie,[3333]:Oe,[3317]:Oe,[37440]:Oe,[37441]:Oe,[37443]:Oe,[3330]:Oe,[3332]:Oe,[3331]:Oe,[3314]:Oe,[32878]:Oe,[3316]:Oe,[3315]:Oe,[32877]:Oe,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=Su(e)?e:[e,e];let[r,i]=e;t.stencilMaskSeparate(1028,r),t.stencilMaskSeparate(1029,i)},stencilFunc:(t,e)=>{e=Su(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=Su(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)};Sy={blendEquation:(t,e,r)=>t.blendEquationSeparate(Q(32777,e,r),Q(34877,e,r)),blendFunc:(t,e,r)=>t.blendFuncSeparate(Q(32969,e,r),Q(32968,e,r),Q(32971,e,r),Q(32970,e,r)),polygonOffset:(t,e,r)=>t.polygonOffset(Q(32824,e,r),Q(10752,e,r)),sampleCoverage:(t,e,r)=>t.sampleCoverage(Q(32938,e,r),Q(32939,e,r)),stencilFuncFront:(t,e,r)=>t.stencilFuncSeparate(1028,Q(2962,e,r),Q(2967,e,r),Q(2963,e,r)),stencilFuncBack:(t,e,r)=>t.stencilFuncSeparate(1029,Q(34816,e,r),Q(36003,e,r),Q(36004,e,r)),stencilOpFront:(t,e,r)=>t.stencilOpSeparate(1028,Q(2964,e,r),Q(2965,e,r),Q(2966,e,r)),stencilOpBack:(t,e,r)=>t.stencilOpSeparate(1029,Q(34817,e,r),Q(34818,e,r),Q(34819,e,r))},Eu={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]})},bt=(t,e)=>t.isEnabled(e),wu={[3042]:bt,[2884]:bt,[2929]:bt,[3024]:bt,[32823]:bt,[32926]:bt,[32928]:bt,[3089]:bt,[2960]:bt,[35977]:bt},Ey=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(gP(e))return;let r={};for(let s in e){let o=Number(s),n=Ay[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=Sy[s];o(t,e,i)}}function Ha(t,e=bo){if(typeof e=="number"){let s=e,o=wu[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=wu[s];i[s]=o?o(t,Number(s)):t.getParameter(Number(s))}return i}function wy(t){Qe(t,bo)}function gP(t){for(let e in t)return!1;return!0}var zi=E(()=>{Ru()});function Py(t,e){if(t===e)return!0;if(Ry(t)&&Ry(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 Ry(t){return Array.isArray(t)||ArrayBuffer.isView(t)}var vy=E(()=>{});function My(t,e){let r=t[e].bind(t);t[e]=function(s){if(s===void 0||Ey.has(s))return r(s);let o=Je.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 mP(t,e,r){if(!t[e])return;let i=t[e].bind(t);t[e]=function(...o){let n=Je.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 _P(t){let e=t.useProgram.bind(t);t.useProgram=function(i){let s=Je.get(t);s.program!==i&&(e(i),s.program=i)}}var Je,Pu=E(()=>{zi();vy();Ru();Je=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?Ha(e):Object.assign({},bo),this.initialized)throw new Error("WebGLStateTracker");this.initialized=!0,this.gl.lumaState=this,_P(e);for(let i in Eu){let s=Eu[i];mP(e,i,s)}My(e,"getParameter"),My(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];Py(n,a)||(r=!0,i=a,s&&!(o in s)&&(s[o]=a),this.cache[o]=n)}return{valueChanged:r,oldValue:i}}}});function Cy(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=jr(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 Iy=E(()=>{Wa()});function et(t,e,r){return r[e]===void 0&&(r[e]=t.getExtension(e)||null),r[e]}var To=E(()=>{});function Oy(t,e){let r=t.getParameter(7936),i=t.getParameter(7937);et(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=Ny(a,c),h=yP(a,c),u=bP(a,c);return{type:"webgl",gpu:f,gpuType:u,gpuBackend:h,vendor:a,renderer:c,version:l,shadingLanguage:"glsl",shadingLanguageVersion:300}}function Ny(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 yP(t,e){return/Metal/i.exec(t)||/Metal/i.exec(e)?"metal":/ANGLE/i.exec(t)||/ANGLE/i.exec(e)?"opengl":"unknown"}function bP(t,e){if(/SwiftShader/i.exec(t)||/SwiftShader/i.exec(e))return"cpu";switch(Ny(t,e)){case"apple":return TP(t,e)?"integrated":"unknown";case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}function TP(t,e){return/Apple (M\d|A\d|GPU)/i.test(`${t} ${e}`)}var Dy=E(()=>{To()});function $a(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 vu=E(()=>{});function Ly(t){return t in Ya}function Nu(t,e,r){return Uy(t,e,r,new Set)}function Uy(t,e,r,i){let s=Ya[e];if(!s||i.has(e))return!1;i.add(e);let o=(s.features||[]).every(n=>Uy(t,n,r,i));return i.delete(e),o?(s.extensions||[]).every(n=>Boolean(et(t,n,r))):!1}function ky(t,e,r){let i=e.create,s=Ka[e.format];s?.gl===void 0&&(i=!1),s?.x&&(i=i&&Boolean(et(t,s.x,r))),e.format==="stencil8"&&(i=!1);let o=s?.r===!1?!1:s?.r===void 0||Nu(t,s.r,r),n=i&&e.render&&o&&vP(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 vP(t,e,r){let i=Ka[e],s=i?.gl;if(s===void 0||i?.x&&!et(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 Za(t){let e=Ka[t],r=CP(t),i=pe.getInfo(t);return i.compressed&&(e.dataFormat=r),{internalFormat:r,format:e?.dataFormat||MP(i.channels,i.integer,i.normalized,r),type:i.dataType?$a(i.dataType):e?.types?.[0]||5121,compressed:i.compressed||!1}}function Vy(t){switch(pe.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 MP(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 CP(t){let r=Ka[t]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${t}`);return r}var xo,Ao,Wi,ji,xP,AP,SP,EP,wP,RP,By,Fy,Mu,Cu,Iu,Ou,Xa,PP,Ya,Ka,Hi=E(()=>{L();To();vu();xo="WEBGL_compressed_texture_s3tc",Ao="WEBGL_compressed_texture_s3tc_srgb",Wi="EXT_texture_compression_rgtc",ji="EXT_texture_compression_bptc",xP="WEBGL_compressed_texture_etc",AP="WEBGL_compressed_texture_astc",SP="WEBGL_compressed_texture_etc1",EP="WEBGL_compressed_texture_pvrtc",wP="WEBGL_compressed_texture_atc",RP="EXT_texture_norm16",By="EXT_render_snorm",Fy="EXT_color_buffer_float",Mu="snorm8-renderable-webgl",Cu="norm16-renderable-webgl",Iu="snorm16-renderable-webgl",Ou="float16-renderable-webgl",Xa="float32-renderable-webgl",PP="rgb9e5ufloat-renderable-webgl",Ya={"float32-renderable-webgl":{extensions:[Fy]},"float16-renderable-webgl":{extensions:["EXT_color_buffer_half_float"]},"rgb9e5ufloat-renderable-webgl":{extensions:["WEBGL_render_shared_exponent"]},"snorm8-renderable-webgl":{extensions:[By]},"norm16-webgl":{extensions:[RP]},"norm16-renderable-webgl":{features:["norm16-webgl"]},"snorm16-renderable-webgl":{features:["norm16-webgl"],extensions:[By]},"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:[xo,Ao,Wi,ji]},"texture-compression-bc5-webgl":{extensions:[Wi]},"texture-compression-bc7-webgl":{extensions:[ji]},"texture-compression-etc2":{extensions:[xP]},"texture-compression-astc":{extensions:[AP]},"texture-compression-etc1-webgl":{extensions:[SP]},"texture-compression-pvrtc-webgl":{extensions:[EP]},"texture-compression-atc-webgl":{extensions:[wP]}};Ka={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756,r:Mu},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757,r:Mu},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:Ou},r16unorm:{gl:33322,rb:!0,r:Cu},r16snorm:{gl:36760,r:Iu},"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:Mu},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0,r:Ou},rg16unorm:{gl:33324,r:Cu},rg16snorm:{gl:36761,r:Iu},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326,r:Xa},rgb9e5ufloat:{gl:35901,r:PP},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:Xa},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842,r:Ou},rgba16unorm:{gl:32859,rb:!0,r:Cu},rgba16snorm:{gl:36763,r:Iu},"rgb32float-webgl":{gl:34837,x:Fy,r:Xa,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0,r:Xa},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:xo},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:Ao},"bc1-rgba-unorm":{gl:33777,x:xo},"bc1-rgba-unorm-srgb":{gl:35916,x:Ao},"bc2-rgba-unorm":{gl:33778,x:xo},"bc2-rgba-unorm-srgb":{gl:35918,x:Ao},"bc3-rgba-unorm":{gl:33779,x:xo},"bc3-rgba-unorm-srgb":{gl:35919,x:Ao},"bc4-r-unorm":{gl:36283,x:Wi},"bc4-r-snorm":{gl:36284,x:Wi},"bc5-rg-unorm":{gl:36285,x:Wi},"bc5-rg-snorm":{gl:36286,x:Wi},"bc6h-rgb-ufloat":{gl:36495,x:ji},"bc6h-rgb-float":{gl:36494,x:ji},"bc7-rgba-unorm":{gl:36492,x:ji},"bc7-rgba-unorm-srgb":{gl:36493,x:ji},"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 zy,qa,Wy=E(()=>{L();To();Hi();zy={"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"},qa=class extends rs{gl;extensions;testedFeatures=new Set;constructor(e,r,i){super([],i),this.gl=e,this.extensions=r,et(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),Ly(e)&&Nu(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(zy),...Object.keys(Ya)]}getWebGLFeature(e){let r=zy[e];return Boolean(typeof r=="string"?et(this.gl,r,this.extensions):r)}}});var Ga,jy=E(()=>{L();Ga=class extends ts{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 IP(t){return t<34069?t+34069:t}function OP(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 Tt,Qa=E(()=>{L();Hi();Tt=class extends nt{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=Vy(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 ${OP(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=IP(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)}resizeAttachments(e,r){if(this.handle===null){this.width=e,this.height=r;return}super.resizeAttachments(e,r)}}});var Ja,Hy=E(()=>{L();Qa();Ja=class extends ii{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 Tt(this.device,{id:"canvas-context-framebuffer",handle:null,width:this.drawingBufferWidth,height:this.drawingBufferHeight}),this._framebuffer}}});var ec,$y=E(()=>{L();ec=class extends os{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 Xy(t="id"){Du[t]=Du[t]||1;let e=Du[t]++;return`${t}-${e}`}var Du,Yy=E(()=>{Du={}});function NP(t){return t&I.INDEX?34963:t&I.VERTEX?34962:t&I.UNIFORM?35345:34962}function DP(t){return t&I.INDEX||t&I.VERTEX?35044:t&I.UNIFORM?35048:35044}var tt,tc=E(()=>{L();tt=class extends I{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=NP(this.props.usage),this.glUsage=DP(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 Ky(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:rc(n||"info"),lineNum:0,linePos:0});continue}r.push({message:p.trim(),type:rc(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:rc(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:rc(a),lineNum:h,linePos:u})}return r}function rc(t){let e=["warning","error","info"],r=t.toLowerCase();return e.includes(r)?r:"info"}var Zy=E(()=>{});var ic,qy=E(()=>{L();Zy();ic=class extends Gt{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});let i=this._compile(this.source);i&&typeof i.catch=="function"&&i.catch(()=>{this.compilationStatus="error"})}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?Ky(e):[]}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)||null}_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}return x.once(1,"Shader compilation is asynchronous")(),this._waitForCompilationComplete().then(()=>{x.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 Qy(t,e,r,i){if(UP(e))return i(t);let s=t;s.pushState();try{return BP(t,e),Qe(s.gl,r),i(t)}finally{s.popState()}}function BP(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(Hr("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=Hr("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=Hr("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(LP("depthWriteEnabled",e.depthWriteEnabled)),e.depthCompare&&(e.depthCompare!=="always"?i.enable(2929):i.disable(2929),i.depthFunc(oc("depthCompare",e.depthCompare))),e.clearDepth!==void 0&&i.clearDepth(e.clearDepth),e.stencilWriteMask){let s=e.stencilWriteMask;i.stencilMaskSeparate(1028,s),i.stencilMaskSeparate(1029,s)}if(e.stencilReadMask&&x.warn("stencilReadMask not supported under WebGL"),e.stencilCompare){let s=e.stencilReadMask||4294967295,o=oc("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=Bu("stencilPassOperation",e.stencilPassOperation),o=Bu("stencilFailOperation",e.stencilFailOperation),n=Bu("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=Gy("blendColorOperation",e.blendColorOperation||"add"),o=Gy("blendAlphaOperation",e.blendAlphaOperation||"add");i.blendEquationSeparate(s,o);let n=sc("blendColorSrcFactor",e.blendColorSrcFactor||"one"),a=sc("blendColorDstFactor",e.blendColorDstFactor||"zero"),c=sc("blendAlphaSrcFactor",e.blendAlphaSrcFactor||"one"),l=sc("blendAlphaDstFactor",e.blendAlphaDstFactor||"zero");i.blendFuncSeparate(n,a,c,l)}}function oc(t,e){return Hr(t,e,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function Bu(t,e){return Hr(t,e,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function Gy(t,e){return Hr(t,e,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function sc(t,e,r="color"){return Hr(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 FP(t,e){return`Illegal parameter ${e} for ${t}`}function Hr(t,e,r){if(!(e in r))throw new Error(FP(t,e));return r[e]}function LP(t,e){return e}function UP(t){let e=!0;for(let r in t){e=!1;break}return e}var Fu=E(()=>{L();zi()});function nc(t){let e={};return t.addressModeU&&(e[10242]=Lu(t.addressModeU)),t.addressModeV&&(e[10243]=Lu(t.addressModeV)),t.addressModeW&&(e[32882]=Lu(t.addressModeW)),t.magFilter&&(e[10240]=Uu(t.magFilter)),(t.minFilter||t.mipmapFilter)&&(e[10241]=kP(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]=oc("compare",t.compare)),t.maxAnisotropy&&(e[34046]=t.maxAnisotropy),e}function Lu(t){switch(t){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function Uu(t){switch(t){case"nearest":return 9728;case"linear":return 9729}}function kP(t,e="none"){if(!e)return Uu(t);switch(e){case"none":return Uu(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 ku=E(()=>{Fu()});var ac,Jy=E(()=>{L();ku();ac=class extends Be{device;handle;parameters;constructor(e,r){super(e,r),this.device=e,this.parameters=nc(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 xt(t,e,r){if(VP(e))return r(t);let{nocatch:i=!0}=e,s=Je.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 VP(t){for(let e in t)return!1;return!0}var cc=E(()=>{zi();Pu()});var At,Vu=E(()=>{L();At=class extends qt{device;gl;handle;texture;constructor(e,r){super(e,{...B.defaultProps,...r}),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}}});function lc(t){return zP[t]}var zP,zu=E(()=>{zP={[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 WP(t,e=0){return e?new t.constructor(t.buffer,t.byteOffset+e,(t.byteLength-e)/t.BYTES_PER_ELEMENT):t}function jP(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 HP(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 fc(t,e,r){return e==="cube"?34069+r:t}var St,hc=E(()=>{L();Hi();ku();cc();Vu();zu();St=class extends B{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=Za(this.props.format);this.glTarget=HP(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 At(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 At(this.device,{...e,texture:this})}setSampler(e={}){super.setSampler(e);let r=nc(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=fc(this.glTarget,this.dimension,f),p=r.flipY?{[37440]:!0}:{};return this.gl.bindTexture(this.glTarget,this.handle),xt(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){if(!r)throw new Error(`${this} readBuffer requires a destination buffer`);let i=this._getSupportedColorReadOptions(e),s=e.byteOffset??0,o=this.computeMemoryLayout(i);if(r.byteLength<s+o.byteLength)throw new Error(`${this} readBuffer target is too small (${r.byteLength} < ${s+o.byteLength})`);let n=r;this.gl.bindBuffer(35051,n.handle);try{this._readColorTextureLayers(i,o,a=>{this.gl.readPixels(i.x,i.y,i.width,i.height,this.glFormat,this.glType,s+a)})}finally{this.gl.bindBuffer(35051,null)}return r}async readDataAsync(e={}){throw new Error(`${this} readDataAsync is deprecated; use readBuffer() with an explicit destination buffer or DynamicTexture.readAsync()`)}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=fc(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,b={[3317]:this.byteAlignment,..._!==void 0?{[3314]:_}:{},[32878]:i.rowsPerImage};this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,e.handle),xt(this.gl,b,()=>{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=fc(this.glTarget,this.dimension,h),_;if(!g){let{bytesPerPixel:w}=this.device.getTextureFormatInfo(this.format);w&&(_=i.bytesPerRow/w)}let b=this.compressed?{}:{[3317]:this.byteAlignment,..._!==void 0?{[3314]:_}:{},[32878]:i.rowsPerImage},y=jP(s,u),T=g?WP(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),xt(this.gl,b,()=>{switch(this.dimension){case"2d":case"cube":g?A?this.gl.compressedTexImage2D(m,c,d,o,n,0,T):this.gl.compressedTexSubImage2D(m,c,l,f,o,n,d,T):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,T):this.gl.compressedTexSubImage3D(m,c,l,f,h,o,n,a,d,T):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=lc(this.glType),o=cs(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),xt(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,fc(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))&&(x.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){x.warn(`Error generating mipmap for ${this}: ${i.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}_setSamplerParameters(e){x.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 eb(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 tb=E(()=>{});function rb(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 ib(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 Wu=E(()=>{});function $P(t,e){let r={...t,attributes:t.attributes.map(i=>({...i})),bindings:t.bindings.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):x.warn(`shader layout attribute ${i.name} not present in shader`)}for(let i of e?.bindings||[]){let s=ob(r,i.name);if(!s){x.warn(`shader layout binding ${i.name} not present in shader`);continue}Object.assign(s,i)}return r}function ob(t,e){return t.bindings.find(r=>r.name===e||r.name===`${e}Uniforms`||`${r.name}Uniforms`===e)}function sb(t,e){return t[e]||t[`${e}Uniforms`]||t[e.replace(/Uniforms$/,"")]}var uc,nb=E(()=>{L();Fu();tb();tc();Qa();hc();Vu();Wu();uc=class extends Re{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?$P(this.introspectedLayout,r.shaderLayout):this.introspectedLayout}destroy(){this.destroyed||(this.sharedRenderPipeline&&!this.props._sharedRenderPipeline&&this.sharedRenderPipeline.destroy(),this.destroyResource())}setBindings(e,r){let i=pn(as(this.shaderLayout,e));for(let[s,o]of Object.entries(i)){let n=ob(this.shaderLayout,s);if(!n){let a=this.shaderLayout.bindings.map(c=>`"${c.name}"`).join(", ");r?.disableWarnings||x.warn(`No binding "${s}" in render pipeline "${this.id}", expected one of ${a}`,o)();continue}switch(o||x.warn(`Unsetting binding "${s}" in render pipeline "${this.id}"`)(),n.type){case"uniform":if(!(o instanceof tt)&&!(o.buffer instanceof tt))throw new Error("buffer value");break;case"texture":if(!(o instanceof At||o instanceof St||o instanceof Tt))throw new Error(`${this} Bad texture binding for ${s}`);break;case"sampler":x.warn(`Ignoring sampler ${s}`)();break;default:throw new Error(n.type)}this.bindings[s]=o}}draw(e){this._syncLinkStatus();let r=e.bindGroups?pn(e.bindGroups):e.bindings||this.bindings,{renderPass:i,parameters:s=this.props.parameters,topology:o=this.props.topology,vertexArray:n,vertexCount:a,instanceCount:c,isInstanced:l=!1,firstVertex:f=0,transformFeedback:h,uniforms:u=this.uniforms}=e,d=rb(o),p=Boolean(n.indexBuffer),g=n.indexBuffer?.glIndexType;if(this.linkStatus!=="success")return x.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable(r))return x.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(this.handle),n.bindBeforeRender(i),h&&h.begin(this.props.topology),this._applyBindings(r,{disableWarnings:this.props.disableWarnings}),this._applyUniforms(u);let m=i;return Qy(this.device,s,m.glParameters,()=>{p&&l?this.device.gl.drawElementsInstanced(d,a||0,g,f,c||0):p?this.device.gl.drawElements(d,a||0,g,f):l?this.device.gl.drawArraysInstanced(d,f,a||0,c||0):this.device.gl.drawArrays(d,f,a||0),h&&h.end()}),n.unbindAfterRender(i),!0}_areTexturesRenderable(e){let r=!0;for(let i of this.shaderLayout.bindings)sb(e,i.name)||(x.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=sb(e,n.name);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}`);if(i.uniformBlockBinding(this.handle,l,o),a instanceof tt)i.bindBufferBase(35345,o,a.handle);else{let h=a;i.bindBufferRange(35345,o,h.buffer.handle,h.offset||0,h.size||h.buffer.byteLength-(h.offset||0))}o+=1;break;case"texture":if(!(a instanceof At||a instanceof St||a instanceof Tt))throw new Error("texture");let f;if(a instanceof At)f=a.texture;else if(a instanceof St)f=a;else if(a instanceof Tt&&a.colorAttachments[0]instanceof At)x.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&&eb(this.device.gl,s,o,a)}}_syncLinkStatus(){this.linkStatus=this.sharedRenderPipeline.linkStatus}}});function ab(t){return YP[t]}function dc(t){return XP[t]}function pc(t){return Boolean(lb[t])}function cb(t){return lb[t]}var XP,lb,YP,gc=E(()=>{XP={[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>"},lb={[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"}},YP={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 fb(t,e){let r={attributes:[],bindings:[]};r.attributes=KP(t,e);let i=GP(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=qP(t,e),o=0;for(let a of s)if(pc(a.type)){let{viewDimension:c,sampleType:l}=cb(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=ZP(t,e);return n?.length&&(r.varyings=n),r}function KP(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=dc(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 ZP(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=dc(a),{type:f,components:h}=li(l);r.push({location:s,name:n,type:f,size:c*h})}return r.sort((s,o)=>s.location-o.location),r}function qP(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}=QP(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 GP(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 p=0;p<n.uniformCount;++p){let g=a[p];if(g!==void 0){let m=t.getActiveUniform(e,g);if(!m)throw new Error("activeInfo");let _=dc(c[p]);n.uniforms.push({name:m.name,format:_,type:c[p],arrayLength:l[p],byteOffset:f[p],byteStride:h[p]})}}let u=new Set(n.uniforms.map(p=>p.name.split(".")[0]).filter(p=>Boolean(p))),d=n.name.replace(/Uniforms$/,"");if(u.size===1&&!u.has(n.name)&&!u.has(d)){let[p]=u;x.warn(`Uniform block "${n.name}" uses GLSL instance "${p}". luma.gl binds uniform buffers by block name ("${n.name}") and alias ("${d}"). Prefer matching the instance name to one of those to avoid confusing silent mismatches.`)()}i.push(n)}return i.sort((o,n)=>o.location-n.location),i}function QP(t){if(t[t.length-1]!=="]")return{name:t,length:1,isArray:!1};let r=/([^[]*)(\[[0-9]+\])?/.exec(t);return{name:Ar(r?.[1],`Failed to parse GLSL uniform name ${t}`),length:r?.[2]?1:0,isArray:Boolean(r?.[2])}}var hb=E(()=>{L();gc()});var ub,mc,db=E(()=>{L();hb();gc();ub=4,mc=class extends ns{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(),x.time(3,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=fb(this.device.gl,this.handle),x.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),x.time(ub,`linkProgram for ${this.id}`)(),e.linkProgram(this.handle),x.timeEnd(ub,`linkProgram for ${this.id}`)(),!this.device.features.has("compilation-status-async-webgl")){let i=this._getLinkStatus();this._reportLinkStatus(i);return}x.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),x.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&&pc(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 JP(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 ev(t,e){throw new Error("copyBufferToTexture is not supported in WebGL")}function tv(t,e){let{sourceTexture:r,mipLevel:i=0,aspect:s="all",width:o=e.sourceTexture.width,height:n=e.sourceTexture.height,depthOrArrayLayers:a,origin:c=[0,0,0],destinationBuffer:l,byteOffset:f=0,bytesPerRow:h,rowsPerImage:u}=e;if(r instanceof B){r.readBuffer({x:c[0]??0,y:c[1]??0,z:c[2]??0,width:o,height:n,depthOrArrayLayers:a,mipLevel:i,aspect:s,byteOffset:f},l);return}if(s!=="all")throw new Error("aspect not supported in WebGL");if(i!==0||a!==void 0||h||u)throw new Error("not implemented");let{framebuffer:d,destroyFramebuffer:p}=pb(r),g;try{let m=l,_=o||d.width,b=n||d.height,y=Ar(d.colorAttachments[0]),T=Za(y.texture.props.format),S=T.format,A=T.type;t.gl.bindBuffer(35051,m.handle),g=t.gl.bindFramebuffer(36160,d.handle),t.gl.readPixels(c[0],c[1],_,b,S,A,f)}finally{t.gl.bindBuffer(35051,null),g!==void 0&&t.gl.bindFramebuffer(36160,g),p&&d.destroy()}}function rv(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}=pb(r),[h=0,u=0]=s,[d,p,g]=o,m=t.gl.bindFramebuffer(36160,l.handle),_,b;if(n instanceof St)_=n,a=Number.isFinite(a)?a:_.width,c=Number.isFinite(c)?c:_.height,_._bind(0),b=_.glTarget;else throw new Error("invalid destination");switch(b){case 3553:case 34067:t.gl.copyTexSubImage2D(b,i,d,p,h,u,a,c);break;case 35866:case 32879:t.gl.copyTexSubImage3D(b,i,d,p,g,h,u,a,c);break;default:}_&&_._unbind(),t.gl.bindFramebuffer(36160,m),f&&l.destroy()}function pb(t){if(t instanceof B){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 _c,gb=E(()=>{L();Hi();hc();_c=class extends ci{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":JP(this.device,r.options);break;case"copy-buffer-to-texture":ev(this.device,r.options);break;case"copy-texture-to-buffer":tv(this.device,r.options);break;case"copy-texture-to-texture":rv(this.device,r.options);break;default:throw new Error(r.name)}}}});var iv,yc,mb=E(()=>{L();cc();zi();iv=[1,2,4,8],yc=class extends Mt{device;handle=null;glParameters={};constructor(e,r){super(e,r),this.device=e;let i=this.props.framebuffer,s=!i||i.handle===null;s&&e.getDefaultCanvasContext()._resizeDrawingBufferIfNeeded();let o;if(!r?.parameters?.viewport)if(s){let[n,a]=e.getDefaultCanvasContext().getDrawingBufferSize();o=[0,0,n,a]}else{let{width:n,height:a}=i;o=[0,0,n,a]}if(this.device.pushState(),this.setParameters({viewport:o,...this.props.parameters}),s)this.device.gl.drawBuffers([1029]);else{let n=i.colorAttachments.map((a,c)=>36064+c);this.device.gl.drawBuffers(n)}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=iv.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&&xt(this.device.gl,e,()=>{this.device.gl.clear(r)})}clearColorBuffer(e=0,r=[0,0,0,0]){xt(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 So,_b=E(()=>{L();gb();mb();So=class extends ai{device;handle=null;commandBuffer;constructor(e,r){super(e,r),this.device=e,this.commandBuffer=new _c(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 yc(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){throw new Error("resolveQuerySet is not supported in WebGL")}writeTimestamp(e,r){e.writeTimestamp(r)}}});function yb(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 bb=E(()=>{});function sv(t){return Array.isArray(t)?new Float32Array(t):t}function ov(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 $i,Tb=E(()=>{L();Xt();vu();bb();$i=class extends fi{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(e){return rl()==="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=$a(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=$i.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=sv(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||=!ov(i,this.bufferValue),n){let a=Jl(r.constructor,o);yb({target:a,source:i,start:0,count:o}),this.buffer.write(a),this.bufferValue=r}return this.buffer}}});function xb(t){return typeof t=="number"?Number.isInteger(t):/^\d+$/.test(t)}var bc,Ab=E(()=>{L();Tc();Wu();bc=class extends hi{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(ib(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,x.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(xb(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 tt)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(xb(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 xc,Sb=E(()=>{L();xc=class extends ui{device;handle;_timestampPairs=[];_pendingReads=new Set;_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._cancelPendingQuery(e.activeQuery),this.device.gl.deleteQuery(e.activeQuery.handle));for(let r of e.completedQueries)this._cancelPendingQuery(r),this.device.gl.deleteQuery(r.handle)}this._occlusionQuery&&(this._cancelPendingQuery(this._occlusionQuery),this.device.gl.deleteQuery(this._occlusionQuery.handle));for(let e of Array.from(this._pendingReads))this._cancelPendingQuery(e);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,cancelled:!1,pollRequestId:null,resolve:null,reject:null},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,cancelled:!1,pollRequestId:null,resolve:null,reject:null};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.cancelled||this.destroyed)return e.result=0n,!0;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||(this._pendingReads.add(e),e.promise=new Promise((r,i)=>{e.resolve=r,e.reject=i;let s=()=>{if(e.pollRequestId=null,e.cancelled||this.destroyed){this._pendingReads.delete(e),e.promise=null,e.resolve=null,e.reject=null,r(0n);return}if(!this._pollQueryAvailability(e)){e.pollRequestId=this._requestAnimationFrame(s);return}this._pendingReads.delete(e),e.promise=null,e.resolve=null,e.reject=null,e.disjoint?i(new Error("GPU timestamp query was invalidated by a disjoint event")):r(e.result||0n)};s()})),e.promise}_cancelPendingQuery(e){if(this._pendingReads.delete(e),e.cancelled=!0,e.pollRequestId!==null&&(this._cancelAnimationFrame(e.pollRequestId),e.pollRequestId=null),e.resolve){let r=e.resolve;e.promise=null,e.resolve=null,e.reject=null,r(0n)}}_requestAnimationFrame(e){return requestAnimationFrame(e)}_cancelAnimationFrame(e){cancelAnimationFrame(e)}}});var Ac,Eb=E(()=>{L();Ac=class extends di{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 ju(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 wb(t){switch(t){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}var Rb=E(()=>{});function Pb(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}=Mb(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=av(o,f,l,n,a,c);let m=de.getDataType(o);f=f||ab(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 vb(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}=Mb(t);a=a||f.width,c=c||f.height;let u=f;l=l||5121;let d=r;if(!d){let g=ju(o),m=wb(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 Mb(t){return t instanceof nt?{framebuffer:t,deleteFramebuffer:!1}:{framebuffer:nv(t),deleteFramebuffer:!0}}function nv(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 av(t,e,r,i,s,o){if(t)return t;e||=5121;let n=lc(e),a=de.getTypedArrayConstructor(n),c=ju(r);return new a(i*s*c)}var Cb=E(()=>{L();gc();Rb();zu()});var Hu={};Rt(Hu,{WebGLDevice:()=>rt});function cv(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 lv(t,e,r){t.gl.vertexAttribI4iv(e,r)}function fv(t,e,r){t.gl.vertexAttribI4uiv(e,r)}function hv(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 rt,Sc=E(()=>{L();Pu();Iy();Wa();Dy();Wy();jy();Hy();$y();xu();Au();Hi();Yy();tc();qy();Jy();hc();Qa();nb();db();_b();Tb();Ab();Sb();Eb();Cb();zi();cc();To();rt=class extends xe{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||Xy("webgl-device")});let r=xe._getCanvasContextProps(e);if(!r)throw new Error("WebGLDevice requires props.createCanvasContext to be set");let i=r.canvas?.gl??null,s=rt.getDeviceFromContext(i);if(s)throw new Error(`WebGL context already attached to device ${s.id}`);this.canvasContext=new Ja(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||Cy(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=rt.getDeviceFromContext(a),s){if(e._reuseDevices)return x.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=gy({...this.props,gl:this.handle});let c=jr(this.handle);c.device=this,this.extensions=c.extensions||(c.extensions={}),this.info=Oy(this.gl,this.extensions),this.limits=new Ga(this.gl),this.features=new qa(this.gl,this.extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new Je(this.gl,{log:(...f)=>x.log(1,...f)()}).trackState(this.gl,{copyState:!1}),(e.debug||e.debugWebGL)&&(this.gl=by(this.gl,{debugWebGL:!0,traceWebGL:e.debugWebGL}),x.warn("WebGL debug mode activated. Performance reduced.")()),e.debugWebGL&&(x.level=Math.max(x.level,1)),this.commandEncoder=new So(this,{id:`${this}-command-encoder`}),this.canvasContext._startObservers()}destroy(){if(this.commandEncoder?.destroy(),!this.props._reuseDevices&&!this._reused){let e=jr(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 ec(this,e||{})}createBuffer(e){let r=this._normalizeBufferProps(e);return new tt(this,r)}createTexture(e){return new St(this,e)}createExternalTexture(e){throw new Error("createExternalTexture() not implemented")}createSampler(e){return new ac(this,e)}createShader(e){return new ic(this,e)}createFramebuffer(e){return new Tt(this,e)}createVertexArray(e){return new $i(this,e)}createTransformFeedback(e){return new bc(this,e)}createQuerySet(e){return new xc(this,e)}createFence(){return new Ac(this)}createRenderPipeline(e){return new uc(this,e)}_createSharedRenderPipelineWebGL(e){return new mc(this,e)}createComputePipeline(e){throw new Error("ComputePipeline not supported in WebGL")}createCommandEncoder(e={}){return new So(this,e)}submit(e){let r=null;e||({submittedCommandEncoder:r,commandBuffer:e}=this._finalizeDefaultCommandEncoderForSubmit());try{e._executeCommands(),r&&r.resolveTimeProfilingQuerySet().then(()=>{this.commandEncoder._gpuTimeMs=r._gpuTimeMs}).catch(()=>{})}finally{e.destroy()}}_finalizeDefaultCommandEncoderForSubmit(){let e=this.commandEncoder,r=e.finish();return this.commandEncoder.destroy(),this.commandEncoder=this.createCommandEncoder({id:e.props.id,timeProfilingQuerySet:e.getTimeProfilingQuerySet()}),{submittedCommandEncoder:e,commandBuffer:r}}readPixelsToArrayWebGL(e,r){return Pb(e,r)}readPixelsToBufferWebGL(e,r){return vb(e,r)}setParametersWebGL(e){Qe(this.gl,e)}getParametersWebGL(e){return Ha(this.gl,e)}withParametersWebGL(e,r){return xt(this.gl,e,r)}resetWebGL(){x.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),wy(this.gl)}_getDeviceSpecificTextureFormatCapabilities(e){return ky(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(){Je.get(this.gl).push()}popState(){Je.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&&hv(s,r)&&x.info(1,`setConstantAttributeWebGL(${e}) could have been skipped, value unchanged`)(),this._constants[e]=r,r.constructor){case Float32Array:cv(this,e,r);break;case Int32Array:lv(this,e,r);break;case Uint32Array:fv(this,e,r);break;default:throw new Error("constant")}}getExtension(e){return et(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 uv(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?!0:Boolean(t&&typeof t.createVertexArray=="function")}var Eo,$u,wo,Ib=E(()=>{L();uy();xu();Au();Eo=1,$u=class extends is{type="webgl";constructor(){super(),xe.defaultProps={...xe.defaultProps,...ja}}enforceWebGL2(e){hy(e)}isSupported(){return typeof WebGL2RenderingContext<"u"}isDeviceHandle(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:(typeof WebGLRenderingContext<"u"&&e instanceof WebGLRenderingContext&&x.warn("WebGL1 is not supported",e)(),!1)}async attach(e,r={}){let{WebGLDevice:i}=await Promise.resolve().then(()=>(Sc(),Hu));if(e instanceof i)return e;let s=i.getDeviceFromContext(e);if(s)return s;if(!uv(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(()=>(Sc(),Hu)),i=[];(e.debugWebGL||e.debug)&&i.push(yy()),e.debugSpectorJS&&i.push(py(e));let s=await Promise.allSettled(i);for(let o of s)o.status==="rejected"&&x.error(`Failed to initialize debug libraries ${o.reason}`)();try{let o=new r(e);x.groupCollapsed(Eo,`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 x.probe(Eo,n)(),x.table(Eo,o.info)(),o}finally{x.groupEnd(Eo)(),x.info(Eo,"%cWebGL call tracing: luma.log.set('debug-webgl') ","color: white; background: blue; padding: 2px 6px; border-radius: 3px;")()}}};wo=new $u});var Tc=E(()=>{Ib();Sc();tc()});var x2={};Rt(x2,{AmbientLight:()=>Ni,Attribute:()=>$t,AttributeManager:()=>$r,COORDINATE_SYSTEM:()=>k,CompositeLayer:()=>s0,Controller:()=>Te,Deck:()=>Ec,DeckGL:()=>Xo,DeckRenderer:()=>Wr,DirectionalLight:()=>Ft,FirstPersonController:()=>Kr,FirstPersonView:()=>n0,FirstPersonViewport:()=>jc,FlyToInterpolator:()=>Ho,Layer:()=>Fc,LayerExtension:()=>d0,LayerManager:()=>Vr,LightingEffect:()=>ur,LinearInterpolator:()=>ce,MapController:()=>Ht,MapView:()=>Fa,OPERATION:()=>E_,OrbitController:()=>Zr,OrbitView:()=>a0,OrbitViewport:()=>kc,OrthographicController:()=>qr,OrthographicView:()=>l0,OrthographicViewport:()=>zc,PointLight:()=>Li,PostProcessEffect:()=>oo,TRANSITION_EVENTS:()=>lo,TerrainController:()=>Wo,Tesselator:()=>$o,TransitionInterpolator:()=>zt,UNIT:()=>lr,VERSION:()=>sa,View:()=>be,Viewport:()=>Ee,WebMercatorViewport:()=>dr,Widget:()=>mr,_CameraLight:()=>ro,_Component:()=>Ki,_ComponentState:()=>Xr,_GlobeController:()=>Gr,_GlobeView:()=>u0,_GlobeViewport:()=>ki,_LayersPass:()=>Ye,_PickLayersPass:()=>Lt,_SunLight:()=>io,_applyStyles:()=>mo,_compareProps:()=>Nc,_count:()=>Dc,_deepEqual:()=>Z,_fillArray:()=>Ma,_flatten:()=>gr,_memoize:()=>Ue,_mergeShaders:()=>Fo,_registerLoggers:()=>ia,_removeStyles:()=>Va,assert:()=>Y,color:()=>Xh,createIterable:()=>Xi,fp64LowPart:()=>hu,getShaderAssembler:()=>Sa,gouraudMaterial:()=>ys,log:()=>F,phongMaterial:()=>bs,picking:()=>lu,project:()=>fr,project32:()=>iu,shadow:()=>Oi});var fh={};Rt(fh,{Buffer:()=>I,BufferTransform:()=>je,CubeGeometry:()=>Ps,Device:()=>xe,Framebuffer:()=>nt,Geometry:()=>He,GroupNode:()=>rr,Model:()=>ve,ModelNode:()=>Rs,ScenegraphNode:()=>lt,SphereGeometry:()=>ws,Texture:()=>B,TextureTransform:()=>Ss,attachDevice:()=>lE,createDevice:()=>fE,enforceWebGL2:()=>hE,getSupportedAdapters:()=>aE,setDefaultDeviceProps:()=>cE,stats:()=>nE});L();L();var HT=1,$T=1,Er=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=HT++,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=$T++;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)}};L();function wp(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 Rp(t){let e=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame:null;if(e){e.call(window,t);return}clearTimeout(t)}qi();var XT=0,YT="Animation Loop",rf=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={...rf.defaultAnimationLoopProps,...e},e=this.props,!e.device)throw new Error("No device provided");this.stats=e.stats||new Ne({id:`animation-loop-${XT++}`}),this.sharedStats=Zt.stats.get(YT),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;if(!this._initialized){if(this._initialized=!0,await this._initDevice(),this._initialize(),!this._running)return null;await this.props.onInitialize(this._getAnimationProps())}return 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=wp(this._animationFrame.bind(this)))}_cancelAnimationFrame(){this._animationFrameId!==null&&(Rp(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}},gi=rf;P(gi,"defaultAnimationLoopProps",{device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:e=>console.error(e),stats:void 0,autoResizeViewport:!1});L();function wr(t,e){if(!t){let r=new Error(e||"shadertools: assertion failed.");throw Error.captureStackTrace?.(r,wr),r}}var sf={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 vp(t){let e={};for(let[r,i]of Object.entries(t))e[r]=KT(i);return e}function KT(t){let e=Pp(t);if(e!=="object")return{value:t,...sf[e],type:e};if(typeof t=="object")return t?t.type!==void 0?{...t,...sf[t.type],type:t.type}:t.value===void 0?{type:"object",value:t}:(e=Pp(t.value),{...t,...sf[e],type:e}):{type:"object",value:null};throw new Error("props")}function Pp(t){return Array.isArray(t)||ArrayBuffer.isView(t)?"array":typeof t}var Mp=`#ifdef MODULE_LOGDEPTH
18
+ <code><pre>${n}</pre></code>`,s&&(a.innerHTML+=`<br /><h1>Translated Source</h1><br /><br /><code><pre>${s}</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)}}},er=Ul;M(er,"defaultProps",{...D.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debugShaders:void 0})});var Vl,at,cp=E(()=>{se();Bl();De();Vl=class extends D{get[Symbol.toStringTag](){return"Framebuffer"}width;height;constructor(e,r={}){super(e,r,Vl.defaultProps),this.width=this.props.width,this.height=this.props.height}clone(e){let r=this.colorAttachments.map(o=>o.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,o]=Array.isArray(e)?e:[e.width,e.height];r=r||o!==this.height||i!==this.width,this.width=i,this.height=o}r&&(x.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 o=this.createColorTexture(r,i);return this.attachResource(o),o.view}return r instanceof B?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 B?this.depthStencilAttachment=e.view:this.depthStencilAttachment=e}createColorTexture(e,r){return this.device.createTexture({id:`${this.id}-color-attachment-${r}`,usage:B.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:B.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height})}resizeAttachments(e,r){if(this.colorAttachments.forEach((i,o)=>{let n=i.texture.clone({width:e,height:r});this.destroyAttachedResource(i),this.colorAttachments[o]=n.view,this.attachResource(n.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()}},at=Vl;M(at,"defaultProps",{...D.defaultProps,width:1,height:1,colorAttachments:[],depthStencilAttachment:null})});var zl,we,Wl=E(()=>{se();zl=class extends D{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,zl.defaultProps),this.shaderLayout=this.props.shaderLayout,this.bufferLayout=this.props.bufferLayout||[],this.sharedRenderPipeline=this.props._sharedRenderPipeline||null}},we=zl;M(we,"defaultProps",{...D.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,bindGroups:void 0})});var ho,lp=E(()=>{se();ho=class extends D{get[Symbol.toStringTag](){return"SharedRenderPipeline"}constructor(e,r){super(e,r,{...D.defaultProps,handle:void 0,vs:void 0,fs:void 0,varyings:void 0,bufferMode:void 0})}}});var jl,ai,fp=E(()=>{se();jl=class extends D{get[Symbol.toStringTag](){return"ComputePipeline"}hash="";shaderLayout;constructor(e,r){super(e,r,jl.defaultProps),this.shaderLayout=r.shaderLayout}},ai=jl;M(ai,"defaultProps",{...D.defaultProps,shader:void 0,entryPoint:void 0,constants:{},shaderLayout:void 0})});var $l,ci,hp=E(()=>{fp();Wl();De();oi();$l=class{static getDefaultPipelineFactory(e){let r=e.getModuleData("@luma.gl/core");return r.defaultPipelineFactory||=new $l(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,o=this._hashRenderPipeline(r),n=i[o]?.resource;if(n)i[o].useCount++,this.device.props.debugFactories&&x.log(3,`${this}: ${i[o].resource} reused, count=${i[o].useCount}, (id=${e.id})`)();else{let s=this.device.type==="webgl"&&this.device.props._sharePipelines?this.createSharedRenderPipeline(r):void 0;n=this.device.createRenderPipeline({...r,id:r.id?`${r.id}-cached`:nt("unnamed-cached"),_sharedRenderPipeline:s}),n.hash=o,i[o]={resource:n,useCount:1},this.device.props.debugFactories&&x.log(3,`${this}: ${n} created, count=${i[o].useCount}`)()}return n}createComputePipeline(e){if(!this.device.props._cachePipelines)return this.device.createComputePipeline(e);let r={...ai.defaultProps,...e},i=this._computePipelineCache,o=this._hashComputePipeline(r),n=i[o]?.resource;return n?(i[o].useCount++,this.device.props.debugFactories&&x.log(3,`${this}: ${i[o].resource} reused, count=${i[o].useCount}, (id=${e.id})`)()):(n=this.device.createComputePipeline({...r,id:r.id?`${r.id}-cached`:void 0}),n.hash=o,i[o]={resource:n,useCount:1},this.device.props.debugFactories&&x.log(3,`${this}: ${n} created, count=${i[o].useCount}`)()),n}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&&x.log(3,`${this}: ${e} released and destroyed`)()):r[i].useCount<0?(x.error(`${this}: ${e} released, useCount < 0, resetting`)(),r[i].useCount=0):this.device.props.debugFactories&&x.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 ai&&(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),o=this._getHash(JSON.stringify(e.shaderLayout));return`${r}/C/${i}SL${o}`}_hashRenderPipeline(e){let r=e.vs?this._getHash(e.vs.source):0,i=e.fs?this._getHash(e.fs.source):0,o=this._getWebGLVaryingHash(e),n=this._getHash(JSON.stringify(e.shaderLayout)),s=this._getHash(JSON.stringify(e.bufferLayout)),{type:a}=this.device;switch(a){case"webgl":let c=this._getHash(JSON.stringify(e.parameters));return`${a}/R/${r}/${i}V${o}T${e.topology}P${c}SL${n}BL${s}`;case"webgpu":default:let l=this._getHash(JSON.stringify({vertexEntryPoint:e.vertexEntryPoint,fragmentEntryPoint:e.fragmentEntryPoint})),f=this._getHash(JSON.stringify(e.parameters)),h=this._getWebGPUAttachmentHash(e);return`${a}/R/${r}/${i}V${o}T${e.topology}EP${l}P${f}SL${n}BL${s}A${h}`}}_hashSharedRenderPipeline(e){let r=e.vs?this._getHash(e.vs.source):0,i=e.fs?this._getHash(e.fs.source):0,o=this._getWebGLVaryingHash(e);return`webgl/S/${r}/${i}V${o}`}_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}))}_getWebGPUAttachmentHash(e){let r=e.colorAttachmentFormats??[this.device.preferredColorFormat],i=e.parameters?.depthWriteEnabled?e.depthStencilAttachmentFormat||this.device.preferredDepthFormat:null;return this._getHash(JSON.stringify({colorAttachmentFormats:r,depthStencilAttachmentFormat:i}))}},ci=$l;M(ci,"defaultProps",{...we.defaultProps})});var Hl,li,up=E(()=>{kl();De();Hl=class{static getDefaultShaderFactory(e){let r=e.getModuleData("@luma.gl/core");return r.defaultShaderFactory||=new Hl(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&&x.log(3,`${this}: Reusing shader ${i.resource.id} count=${i.useCount}`)();else{let o=this.device.createShader({...e,id:e.id?`${e.id}-cached`:void 0});this._cache[r]=i={resource:o,useCount:1},this.device.props.debugFactories&&x.log(3,`${this}: Created new shader ${o.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&&x.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&&x.log(3,`${this}: Releasing shader ${e.id} count=${i.useCount}`)()}}_hashShader(e){return`${e.stage}:${e.source}`}},li=Hl;M(li,"defaultProps",{...er.defaultProps})});function dp(t,e,r){let i=t.bindings.find(o=>o.name===e||`${o.name.toLocaleLowerCase()}uniforms`===e.toLocaleLowerCase());return!i&&!r?.ignoreWarnings&&x.warn(`Binding ${e} not set: Not found in shader layout.`)(),i||null}function uo(t,e){if(!e)return{};if(FT(e))return Object.fromEntries(Object.entries(e).map(([o,n])=>[Number(o),{...n}]));let r={};for(let[i,o]of Object.entries(e)){let s=dp(t,i)?.group??0;r[s]||={},r[s][i]=o}return r}function ys(t){let e={};for(let r of Object.values(t))Object.assign(e,r);return e}function FT(t){let e=Object.keys(t);return e.length>0&&e.every(r=>/^\d+$/.test(r))}var pp=E(()=>{De()});var vr,Ct,gp=E(()=>{se();vr=class extends D{get[Symbol.toStringTag](){return"RenderPass"}constructor(e,r){r=vr.normalizeProps(e,r),super(e,r,vr.defaultProps)}static normalizeProps(e,r){return r}},Ct=vr;M(Ct,"defaultClearColor",[0,0,0,1]),M(Ct,"defaultClearDepth",1),M(Ct,"defaultClearStencil",0),M(Ct,"defaultProps",{...D.defaultProps,framebuffer:null,parameters:void 0,clearColor:vr.defaultClearColor,clearColors:void 0,clearDepth:vr.defaultClearDepth,clearStencil:vr.defaultClearStencil,depthReadOnly:!1,stencilReadOnly:!1,discard:!1,occlusionQuerySet:void 0,timestampQuerySet:void 0,beginTimestampIndex:void 0,endTimestampIndex:void 0})});var Xl,fi,mp=E(()=>{se();Xl=class extends D{get[Symbol.toStringTag](){return"CommandEncoder"}_timeProfilingQuerySet=null;_timeProfilingSlotCount=0;_gpuTimeMs;constructor(e,r){super(e,r,Xl.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}),o=0n;for(let n=0;n<r;n+=2)o+=i[n+1]-i[n];this._gpuTimeMs=Number(o)/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")}},fi=Xl;M(fi,"defaultProps",{...D.defaultProps,measureExecutionTime:void 0,timeProfilingQuerySet:void 0})});var Yl,hi,_p=E(()=>{se();Yl=class extends D{get[Symbol.toStringTag](){return"CommandBuffer"}constructor(e,r){super(e,r,Yl.defaultProps)}},hi=Yl;M(hi,"defaultProps",{...D.defaultProps})});function ui(t){let e=bs(t),r=zT[e];if(!r)throw new Error(`Unsupported variable shader type: ${t}`);return r}function yp(t){let e=bp(t),r=VT[e];if(!r)throw new Error(`Unsupported attribute shader type: ${t}`);let[i,o]=r,n=i==="i32"||i==="u32",s=i!=="u32",a=kT[i]*o;return{primitiveType:i,components:o,byteLength:a,integer:n,signed:s}}function UT(t,e){return e===1?t:`vec${e}<${t}>`}function bp(t){return WT[t]||t}function bs(t){return jT[t]||t}var Kl,Zl,kT,VT,zT,WT,jT,Ts=E(()=>{Kl=class{getVariableShaderTypeInfo(e){return ui(e)}getAttributeShaderTypeInfo(e){return yp(e)}makeShaderAttributeType(e,r){return UT(e,r)}resolveAttributeShaderTypeAlias(e){return bp(e)}resolveVariableShaderTypeAlias(e){return bs(e)}};Zl=new Kl,kT={f32:4,f16:2,i32:4,u32:4},VT={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]},zT={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}},WT={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>"},jT={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>",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 xs(t,e){let r={};for(let i of t.attributes){let o=$T(t,e,i.name);o&&(r[i.name]=o)}return r}function Tp(t,e,r=16){let i=xs(t,e),o=new Array(r).fill(null);for(let n of Object.values(i))o[n.location]=n;return o}function $T(t,e,r){let i=HT(t,r),o=XT(e,r);if(!i)return null;let n=Zl.getAttributeShaderTypeInfo(i.type),s=vt.getCompatibleVertexFormat(n),a=o?.vertexFormat||s,c=vt.getVertexFormatInfo(a);return{attributeName:o?.attributeName||i.name,bufferName:o?.bufferName||i.name,location:i.location,shaderType:i.type,primitiveType:n.primitiveType,shaderComponents:n.components,vertexFormat:a,bufferDataType:c.type,bufferComponents:c.components,normalized:c.normalized,integer:n.integer,stepMode:o?.stepMode||i.stepMode||"vertex",byteOffset:o?.byteOffset||0,byteStride:o?.byteStride||0}}function HT(t,e){let r=t.attributes.find(i=>i.name===e);return r||x.warn(`shader layout attribute "${e}" not present in shader`),r||null}function XT(t,e){YT(t);let r=KT(t,e);return r||(r=ZT(t,e),r)?r:(x.warn(`layout for attribute "${e}" not present in buffer layout`),null)}function YT(t){for(let e of t)(e.attributes&&e.format||!e.attributes&&!e.format)&&x.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`)}function KT(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 ZT(t,e){for(let r of t){let i=r.byteStride;if(typeof r.byteStride!="number")for(let n of r.attributes||[]){let s=vt.getVertexFormatInfo(n.format);i+=s.byteLength}let o=r.attributes?.find(n=>n.attribute===e);if(o)return{attributeName:o.attribute,bufferName:r.name,stepMode:r.stepMode,vertexFormat:o.format,byteOffset:o.byteOffset,byteStride:i}}return null}var ql=E(()=>{De();Ts();cs()});var Gl,di,xp=E(()=>{ql();se();Gl=class extends D{get[Symbol.toStringTag](){return"VertexArray"}maxVertexAttributes;attributeInfos;indexBuffer=null;attributes;constructor(e,r){super(e,r,Gl.defaultProps),this.maxVertexAttributes=e.limits.maxVertexAttributes,this.attributes=new Array(this.maxVertexAttributes).fill(null),this.attributeInfos=Tp(r.shaderLayout,r.bufferLayout,this.maxVertexAttributes)}setConstantWebGL(e,r){this.device.reportError(new Error("constant attributes not supported"),this)()}},di=Gl;M(di,"defaultProps",{...D.defaultProps,shaderLayout:void 0,bufferLayout:[]})});var Ql,pi,Ap=E(()=>{se();Ql=class extends D{get[Symbol.toStringTag](){return"TransformFeedback"}constructor(e,r){super(e,r,Ql.defaultProps)}},pi=Ql;M(pi,"defaultProps",{...D.defaultProps,layout:void 0,buffers:{}})});var Jl,gi,Sp=E(()=>{se();Jl=class extends D{get[Symbol.toStringTag](){return"QuerySet"}constructor(e,r){super(e,r,Jl.defaultProps)}},gi=Jl;M(gi,"defaultProps",{...D.defaultProps,type:void 0,count:void 0})});var ef,mi,Ep=E(()=>{se();ef=class extends D{get[Symbol.toStringTag](){return"Fence"}constructor(e,r={}){super(e,r,ef.defaultProps)}},mi=ef;M(mi,"defaultProps",{...D.defaultProps})});function ct(t,e){switch(e){case 1:return t;case 2:return t+t%2;default:return t+(4-t%4)%4}}function po(t){let[,,,,e]=qT[t];return e}var qT,tf=E(()=>{qT={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 Rp(t,e={}){let r={...t},i=e.layout??"std140",o={},n=0;for(let[s,a]of Object.entries(r))n=rf(o,s,a,n,i);return n=ct(n,tr(r,i)),{layout:i,byteLength:n*4,uniformTypes:r,fields:o}}function go(t,e){let r=bs(t),i=ui(r),o=/^mat(\d)x(\d)<.+>$/.exec(r);if(o){let s=Number(o[1]),a=Number(o[2]),c=wp(a,r,i.type,e),l=QT(c.size,c.alignment,e);return{alignment:c.alignment,size:s*l,components:s*a,columns:s,rows:a,columnStride:l,shaderType:r,type:i.type}}let n=/^vec(\d)<.+>$/.exec(r);return n?wp(Number(n[1]),r,i.type,e):{alignment:1,size:1,components:1,columns:1,rows:1,columnStride:1,shaderType:r,type:i.type}}function of(t){return Boolean(t)&&typeof t=="object"&&!Array.isArray(t)}function rf(t,e,r,i,o){if(typeof r=="string"){let n=go(r,o),s=ct(i,n.alignment);return t[e]={offset:s,...n},s+n.size}if(Array.isArray(r)){if(Array.isArray(r[0]))throw new Error(`Nested arrays are not supported for ${e}`);let n=r[0],s=r[1],a=vp(n,o),c=ct(i,tr(r,o));for(let l=0;l<s;l++)rf(t,`${e}[${l}]`,n,c+l*a,o);return c+a*s}if(of(r)){let n=tr(r,o),s=ct(i,n);for(let[a,c]of Object.entries(r))s=rf(t,`${e}.${a}`,c,s,o);return ct(s,n)}throw new Error(`Unsupported CompositeShaderType for ${e}`)}function Pp(t,e){if(typeof t=="string")return go(t,e).size;if(Array.isArray(t)){let i=t[0],o=t[1];if(Array.isArray(i))throw new Error("Nested arrays are not supported");return vp(i,e)*o}let r=0;for(let i of Object.values(t)){let o=i;r=ct(r,tr(o,e)),r+=Pp(o,e)}return ct(r,tr(t,e))}function tr(t,e){if(typeof t=="string")return go(t,e).alignment;if(Array.isArray(t)){let i=t[0],o=tr(i,e);return Mp(e)?Math.max(o,4):o}let r=1;for(let i of Object.values(t)){let o=tr(i,e);r=Math.max(r,o)}return JT(e)?Math.max(r,4):r}function wp(t,e,r,i){return{alignment:t===2?2:4,size:t===3?3:t,components:t,columns:1,rows:t,columnStride:t===3?3:t,shaderType:e,type:r}}function vp(t,e){let r=Pp(t,e),i=tr(t,e);return GT(r,i,e)}function GT(t,e,r){return ct(t,Mp(r)?4:e)}function QT(t,e,r){return r==="std140"?4:ct(t,e)}function Mp(t){return t==="std140"||t==="wgsl-uniform"}function JT(t){return t==="std140"||t==="wgsl-uniform"}var nf=E(()=>{tf();Ts()});function sf(t){return(!As||As.byteLength<t)&&(As=new ArrayBuffer(t)),As}function af(t,e){let r=sf(t.BYTES_PER_ELEMENT*e);return new t(r,0,e)}var As,cf=E(()=>{});function ex(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function _i(t){return Array.isArray(t)?t.length===0||typeof t[0]=="number":ex(t)}var lf=E(()=>{});function tx(t){return Boolean(t)&&typeof t=="object"&&!Array.isArray(t)&&!ArrayBuffer.isView(t)}function rx(t,e,r){return Array.prototype.slice.call(t,e,r)}var Ss,Cp=E(()=>{cf();lf();De();nf();Ss=class{layout;constructor(e){this.layout=e}has(e){return Boolean(this.layout.fields[e])}get(e){let r=this.layout.fields[e];return r?{offset:r.offset,size:r.size}:void 0}getFlatUniformValues(e){let r={};for(let[i,o]of Object.entries(e)){let n=this.layout.uniformTypes[i];n?this._flattenCompositeValue(r,i,n,o):this.layout.fields[i]&&(r[i]=o)}return r}getData(e){let r=sf(this.layout.byteLength);new Uint8Array(r,0,this.layout.byteLength).fill(0);let i={i32:new Int32Array(r),u32:new Uint32Array(r),f32:new Float32Array(r),f16:new Uint16Array(r)},o=this.getFlatUniformValues(e);for(let[n,s]of Object.entries(o))this._writeLeafValue(i,n,s);return new Uint8Array(r,0,this.layout.byteLength)}_flattenCompositeValue(e,r,i,o){if(o!==void 0){if(typeof i=="string"||this.layout.fields[r]){e[r]=o;return}if(Array.isArray(i)){let n=i[0],s=i[1];if(Array.isArray(n))throw new Error(`Nested arrays are not supported for ${r}`);if(typeof n=="string"&&_i(o)){this._flattenPackedArray(e,r,n,s,o);return}if(!Array.isArray(o)){x.warn(`Unsupported uniform array value for ${r}:`,o)();return}for(let a=0;a<Math.min(o.length,s);a++){let c=o[a];c!==void 0&&this._flattenCompositeValue(e,`${r}[${a}]`,n,c)}return}if(of(i)&&tx(o)){for(let[n,s]of Object.entries(o)){if(s===void 0)continue;let a=`${r}.${n}`;this._flattenCompositeValue(e,a,i[n],s)}return}x.warn(`Unsupported uniform value for ${r}:`,o)()}}_flattenPackedArray(e,r,i,o,n){let s=n,c=go(i,this.layout.layout).components;for(let l=0;l<o;l++){let f=l*c;if(f>=s.length)break;c===1?e[`${r}[${l}]`]=Number(s[f]):e[`${r}[${l}]`]=rx(n,f,f+c)}}_writeLeafValue(e,r,i){let o=this.layout.fields[r];if(!o){x.warn(`Uniform ${r} not found in layout`)();return}let{type:n,components:s,columns:a,rows:c,offset:l,columnStride:f}=o,h=e[n];if(s===1){h[l]=Number(i);return}let u=i;if(a===1){for(let p=0;p<s;p++)h[l+p]=Number(u[p]??0);return}let d=0;for(let p=0;p<a;p++){let g=l+p*f;for(let m=0;m<c;m++)h[g+m]=Number(u[d++]??0)}}}});function Ip(t,e,r=16){if(t===e)return!0;let i=t,o=e;if(!_i(i)||!_i(o)||i.length!==o.length)return!1;let n=Math.min(r,ix);if(i.length>n)return!1;for(let s=0;s<i.length;++s)if(o[s]!==i[s])return!1;return!0}function Op(t){return _i(t)?t.slice():t}var ix,Np=E(()=>{lf();ix=128});var Es,Dp=E(()=>{Np();Es=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(o=>o.type==="uniform"&&o.name===e?.name);if(!r)throw new Error(e?.name);let i=r;for(let o of i.uniforms||[])this.bindingLayout[o.name]=o}}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){Ip(this.uniforms[e],r)||(this.uniforms[e]=Op(r),this.modifiedUniforms[e]=!0,this.modified=!0)}}});function nx(t){return t.type==="webgpu"?"wgsl-uniform":"std140"}var ox,mo,Bp=E(()=>{ss();De();nf();Dp();Cp();ox=1024,mo=class{device;uniformBlocks=new Map;shaderBlockLayouts=new Map;shaderBlockWriters=new Map;uniformBuffers=new Map;constructor(e,r){this.device=e;for(let[i,o]of Object.entries(r)){let n=i,s=Rp(o.uniformTypes??{},{layout:o.layout??nx(e)}),a=new Ss(s);this.shaderBlockLayouts.set(n,s),this.shaderBlockWriters.set(n,a);let c=new Es({name:i});c.setUniforms(a.getFlatUniformValues(o.defaultUniforms||{})),this.uniformBlocks.set(n,c)}}destroy(){for(let e of this.uniformBuffers.values())e.destroy()}setUniforms(e){for(let[r,i]of Object.entries(e)){let o=r,s=this.shaderBlockWriters.get(o)?.getFlatUniformValues(i||{});this.uniformBlocks.get(o)?.setUniforms(s||{})}this.updateUniformBuffers()}getUniformBufferByteLength(e){let r=this.shaderBlockLayouts.get(e)?.byteLength||0;return Math.max(r,ox)}getUniformBufferData(e){let r=this.uniformBlocks.get(e)?.getAllUniforms()||{};return this.shaderBlockWriters.get(e)?.getData(r)||new Uint8Array(0)}createUniformBuffer(e,r){r&&this.setUniforms(r);let i=this.getUniformBufferByteLength(e),o=this.device.createBuffer({usage:I.UNIFORM|I.COPY_DST,byteLength:i}),n=this.getUniformBufferData(e);return o.write(n),o}getManagedUniformBuffer(e){if(!this.uniformBuffers.get(e)){let r=this.getUniformBufferByteLength(e),i=this.device.createBuffer({usage:I.UNIFORM|I.COPY_DST,byteLength:r});this.uniformBuffers.set(e,i)}return this.uniformBuffers.get(e)}updateUniformBuffers(){let e=!1;for(let r of this.uniformBlocks.keys()){let i=this.updateUniformBuffer(r);e||=i}return e&&x.log(3,`UniformStore.updateUniformBuffers(): ${e}`)(),e}updateUniformBuffer(e){let r=this.uniformBlocks.get(e),i=this.uniformBuffers.get(e),o=!1;if(i&&r?.needsRedraw){o||=r.needsRedraw;let n=this.getUniformBufferData(e);i=this.uniformBuffers.get(e),i?.write(n);let s=this.uniformBlocks.get(e)?.getAllUniforms();x.log(4,`Writing to uniform buffer ${String(e)}`,n,s)()}return o}}});var F=E(()=>{Zd();qd();Cl();rp();ip();ss();Bl();op();kl();Dl();cp();Wl();lp();hp();up();gp();mp();_p();xp();Ap();Sp();Ep();Bp();as();tf();Ts();cs();us();Pl();De();pp();Ol();cf();ql()});var Ar,wy=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"})(Ar||(Ar={}))});var Ry=E(()=>{wy()});function Py(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 o=this.originalGetContext("webgl2",i);return o instanceof HTMLElement&&kP(o),o}return this.originalGetContext(r,i)}}function kP(t){t.getExtension("EXT_color_buffer_float");let e={...BP,WEBGL_disjoint_timer_query:t.getExtension("EXT_disjoint_timer_query_webgl2"),WEBGL_draw_buffers:LP(t),OES_vertex_array_object:FP(t),ANGLE_instanced_arrays:UP(t)},r=t.getExtension;t.getExtension=function(o){let n=r.call(t,o);return n||(o in e?e[o]:null)};let i=t.getSupportedExtensions;t.getSupportedExtensions=function(){return(i.apply(t)||[])?.concat(Object.keys(e))}}var BP,LP,FP,UP,vy=E(()=>{BP={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:{}},LP=t=>({drawBuffersWEBGL(e){return t.drawBuffers(e)},COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067}),FP=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)}}),UP=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 Ka(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((o,n)=>{i.onload=o,i.onerror=s=>n(new Error(`Unable to load script '${t}': ${s}`)),r.appendChild(i)})}var Iu=E(()=>{});function Xr(t){let e=t.luma||{_polyfilled:!1,extensions:{},softwareRenderer:!1};return e._polyfilled??=!1,e.extensions||={},t.luma=e,e}var Za=E(()=>{});async function Cy(t){if(!globalThis.SPECTOR)try{await Ka(t.debugSpectorJSUrl||qa.debugSpectorJSUrl)}catch(e){x.warn(String(e))}}function Iy(t){if(t={...qa,...t},!t.debugSpectorJS)return null;if(!Ie&&globalThis.SPECTOR&&!globalThis.luma?.spector){x.probe(VP,"SPECTOR found and initialized. Start with `luma.spector.displayUI()`")();let{Spector:e}=globalThis.SPECTOR;Ie=new e,globalThis.luma&&(globalThis.luma.spector=Ie)}if(!Ie)return null;if(My||(My=!0,Ie.spyCanvases(),Ie?.onCaptureStarted.add(e=>x.info("Spector capture started:",e)()),Ie?.onCapture.add(e=>{x.info("Spector capture complete:",e)(),Ie?.getResultUI(),Ie?.resultView.display(),Ie?.resultView.addCapture(e)})),t.gl){let e=t.gl,r=Xr(e),i=r.device;Ie?.startCapture(t.gl,500),r.device=i,new Promise(o=>setTimeout(o,2e3)).then(o=>{x.info("Spector capture stopped after 2 seconds")(),Ie?.stopCapture()})}return Ie}var VP,Ie,My,qa,Ou=E(()=>{F();Iu();Za();VP=1,Ie=null,My=!1,qa={debugSpectorJS:x.get("debug-spectorjs"),debugSpectorJSUrl:"https://cdn.jsdelivr.net/npm/spectorjs@0.9.30/dist/spector.bundle.js",gl:void 0}});function Ny(t){return t.luma=t.luma||{},t.luma}async function Dy(){fe()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await Ka(zP))}function By(t,e={}){return e.debugWebGL||e.traceWebGL?jP(t,e):WP(t)}function WP(t){let e=Ny(t);return e.realContext?e.realContext:t}function jP(t,e){if(!globalThis.WebGLDebugUtils)return x.warn("webgl-debug not loaded")(),t;let r=Ny(t);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({...Ar,...t});let i=globalThis.WebGLDebugUtils.makeDebugContext(t,$P.bind(null,e),HP.bind(null,e));for(let s in Ar)!(s in i)&&typeof Ar[s]=="number"&&(i[s]=Ar[s]);class o{}Object.setPrototypeOf(i,Object.getPrototypeOf(t)),Object.setPrototypeOf(o,i);let n=Object.create(o);return r.realContext=t,r.debugContext=n,n.luma=r,n.debug=!0,n}function Oy(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 $P(t,e,r,i){i=Array.from(i).map(a=>a===void 0?"undefined":a);let o=globalThis.WebGLDebugUtils.glEnumToString(e),n=globalThis.WebGLDebugUtils.glFunctionArgsToString(r,i),s=`${o} in gl.${r}(${n})`;x.error("%cWebGL","color: white; background: red; padding: 2px 6px; border-radius: 3px;",s)();debugger;throw new Error(s)}function HP(t,e,r){let i="";t.traceWebGL&&x.level>=1&&(i=Oy(e,r),x.info(1,"%cWebGL","color: white; background: blue; padding: 2px 6px; border-radius: 3px;",i)());for(let o of r)if(o===void 0){i=i||Oy(e,r);debugger}}var zP,Nu=E(()=>{F();Ry();Zt();Iu();zP="https://unpkg.com/webgl-debug@2.0.1/index.js"});function Du(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Q(t,e,r){return e[t]!==void 0?e[t]:r[t]}var En,ie,Ly,Oe,Fy,Sn,Uy,ky,Bu,Tt,Lu,Vy,Fu=E(()=>{En={[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},ie=(t,e,r)=>e?t.enable(r):t.disable(r),Ly=(t,e,r)=>t.hint(r,e),Oe=(t,e,r)=>t.pixelStorei(r,e),Fy=(t,e,r)=>{let i=r===36006?36009:36008;return t.bindFramebuffer(i,e)},Sn=(t,e,r)=>{let o={[34964]:34962,[36662]:36662,[36663]:36663,[35053]:35051,[35055]:35052}[r];t.bindBuffer(o,e)};Uy={[3042]:ie,[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]:ie,[2885]:(t,e)=>t.cullFace(e),[2929]:ie,[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]:ie,[35723]:Ly,[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]:Fy,[36010]:Fy,[34964]:Sn,[36662]:Sn,[36663]:Sn,[35053]:Sn,[35055]:Sn,[2886]:(t,e)=>t.frontFace(e),[33170]:Ly,[2849]:(t,e)=>t.lineWidth(e),[32823]:ie,[32824]:"polygonOffset",[10752]:"polygonOffset",[35977]:ie,[32926]:ie,[32928]:ie,[32938]:"sampleCoverage",[32939]:"sampleCoverage",[3089]:ie,[3088]:(t,e)=>t.scissor(...e),[2960]:ie,[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]:ie,[10754]:ie,[12288]:ie,[12289]:ie,[12290]:ie,[12291]:ie,[12292]:ie,[12293]:ie,[12294]:ie,[12295]:ie,[3333]:Oe,[3317]:Oe,[37440]:Oe,[37441]:Oe,[37443]:Oe,[3330]:Oe,[3332]:Oe,[3331]:Oe,[3314]:Oe,[32878]:Oe,[3316]:Oe,[3315]:Oe,[32877]:Oe,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=Du(e)?e:[e,e];let[r,i]=e;t.stencilMaskSeparate(1028,r),t.stencilMaskSeparate(1029,i)},stencilFunc:(t,e)=>{e=Du(e)&&e.length===3?[...e,...e]:e;let[r,i,o,n,s,a]=e;t.stencilFuncSeparate(1028,r,i,o),t.stencilFuncSeparate(1029,n,s,a)},stencilOp:(t,e)=>{e=Du(e)&&e.length===3?[...e,...e]:e;let[r,i,o,n,s,a]=e;t.stencilOpSeparate(1028,r,i,o),t.stencilOpSeparate(1029,n,s,a)},viewport:(t,e)=>t.viewport(...e)};ky={blendEquation:(t,e,r)=>t.blendEquationSeparate(Q(32777,e,r),Q(34877,e,r)),blendFunc:(t,e,r)=>t.blendFuncSeparate(Q(32969,e,r),Q(32968,e,r),Q(32971,e,r),Q(32970,e,r)),polygonOffset:(t,e,r)=>t.polygonOffset(Q(32824,e,r),Q(10752,e,r)),sampleCoverage:(t,e,r)=>t.sampleCoverage(Q(32938,e,r),Q(32939,e,r)),stencilFuncFront:(t,e,r)=>t.stencilFuncSeparate(1028,Q(2962,e,r),Q(2967,e,r),Q(2963,e,r)),stencilFuncBack:(t,e,r)=>t.stencilFuncSeparate(1029,Q(34816,e,r),Q(36003,e,r),Q(36004,e,r)),stencilOpFront:(t,e,r)=>t.stencilOpSeparate(1028,Q(2964,e,r),Q(2965,e,r),Q(2966,e,r)),stencilOpBack:(t,e,r)=>t.stencilOpSeparate(1029,Q(34817,e,r),Q(34818,e,r),Q(34819,e,r))},Bu={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,o)=>t({[32773]:new Float32Array([e,r,i,o])}),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,o)=>t({[32969]:e,[32968]:r,[32971]:i,[32970]:o}),clearColor:(t,e,r,i,o)=>t({[3106]:new Float32Array([e,r,i,o])}),clearDepth:(t,e)=>t({[2931]:e}),clearStencil:(t,e)=>t({[2961]:e}),colorMask:(t,e,r,i,o)=>t({[3107]:[e,r,i,o]}),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,o)=>t({[3088]:new Int32Array([e,r,i,o])}),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,o)=>t({[e===1028?2962:34816]:r,[e===1028?2967:36003]:i,[e===1028?2963:36004]:o}),stencilOp:(t,e,r,i)=>t({[2964]:e,[2965]:r,[2966]:i,[34817]:e,[34818]:r,[34819]:i}),stencilOpSeparate:(t,e,r,i,o)=>t({[e===1028?2964:34817]:r,[e===1028?2965:34818]:i,[e===1028?2966:34819]:o}),viewport:(t,e,r,i,o)=>t({[2978]:[e,r,i,o]})},Tt=(t,e)=>t.isEnabled(e),Lu={[3042]:Tt,[2884]:Tt,[2929]:Tt,[3024]:Tt,[32823]:Tt,[32926]:Tt,[32928]:Tt,[3089]:Tt,[2960]:Tt,[35977]:Tt},Vy=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 Je(t,e){if(XP(e))return;let r={};for(let o in e){let n=Number(o),s=Uy[o];s&&(typeof s=="string"?r[s]=!0:s(t,e[o],n))}let i=t.lumaState?.cache;if(i)for(let o in r){let n=ky[o];n(t,e,i)}}function Ga(t,e=En){if(typeof e=="number"){let o=e,n=Lu[o];return n?n(t,o):t.getParameter(o)}let r=Array.isArray(e)?e:Object.keys(e),i={};for(let o of r){let n=Lu[o];i[o]=n?n(t,Number(o)):t.getParameter(Number(o))}return i}function zy(t){Je(t,En)}function XP(t){for(let e in t)return!1;return!0}var Xi=E(()=>{Fu()});function jy(t,e){if(t===e)return!0;if(Wy(t)&&Wy(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 Wy(t){return Array.isArray(t)||ArrayBuffer.isView(t)}var $y=E(()=>{});function Hy(t,e){let r=t[e].bind(t);t[e]=function(o){if(o===void 0||Vy.has(o))return r(o);let n=et.get(t);return o in n.cache||(n.cache[o]=r(o)),n.enable?n.cache[o]:r(o)},Object.defineProperty(t[e],"name",{value:`${e}-from-cache`,configurable:!1})}function YP(t,e,r){if(!t[e])return;let i=t[e].bind(t);t[e]=function(...n){let s=et.get(t),{valueChanged:a,oldValue:c}=r(s._updateCache,...n);return a&&i(...n),c},Object.defineProperty(t[e],"name",{value:`${e}-to-cache`,configurable:!1})}function KP(t){let e=t.useProgram.bind(t);t.useProgram=function(i){let o=et.get(t);o.program!==i&&(e(i),o.program=i)}}var et,Uu=E(()=>{Xi();$y();Fu();et=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];Je(this.gl,e),this.stateStack.pop()}trackState(e,r){if(this.cache=r?.copyState?Ga(e):Object.assign({},En),this.initialized)throw new Error("WebGLStateTracker");this.initialized=!0,this.gl.lumaState=this,KP(e);for(let i in Bu){let o=Bu[i];YP(e,i,o)}Hy(e,"getParameter"),Hy(e,"isEnabled")}_updateCache(e){let r=!1,i,o=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let n in e){let s=e[n],a=this.cache[n];jy(s,a)||(r=!0,i=a,o&&!(n in o)&&(o[n]=a),this.cache[n]=s)}return{valueChanged:r,oldValue:i}}}});function Xy(t,e,r){let i="",o=c=>{let l=c.statusMessage;l&&(i||=l)};t.addEventListener("webglcontextcreationerror",o,!1);let n=r.failIfMajorPerformanceCaveat!==!0,s={preserveDrawingBuffer:!0,...r,failIfMajorPerformanceCaveat:!0},a=null;try{a||=t.getContext("webgl2",s),!a&&s.failIfMajorPerformanceCaveat&&(i||="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow.");let c=!1;if(!a&&n&&(s.failIfMajorPerformanceCaveat=!1,a=t.getContext("webgl2",s),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=Xr(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",o,!1)}}var Yy=E(()=>{Za()});function tt(t,e,r){return r[e]===void 0&&(r[e]=t.getExtension(e)||null),r[e]}var wn=E(()=>{});function Ky(t,e){let r=t.getParameter(7936),i=t.getParameter(7937);tt(t,"WEBGL_debug_renderer_info",e);let o=e.WEBGL_debug_renderer_info,n=t.getParameter(o?o.UNMASKED_VENDOR_WEBGL:7936),s=t.getParameter(o?o.UNMASKED_RENDERER_WEBGL:7937),a=n||r,c=s||i,l=t.getParameter(7938),f=Zy(a,c),h=ZP(a,c),u=qP(a,c);return{type:"webgl",gpu:f,gpuType:u,gpuBackend:h,vendor:a,renderer:c,version:l,shadingLanguage:"glsl",shadingLanguageVersion:300}}function Zy(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 ZP(t,e){return/Metal/i.exec(t)||/Metal/i.exec(e)?"metal":/ANGLE/i.exec(t)||/ANGLE/i.exec(e)?"opengl":"unknown"}function qP(t,e){if(/SwiftShader/i.exec(t)||/SwiftShader/i.exec(e))return"cpu";switch(Zy(t,e)){case"apple":return GP(t,e)?"integrated":"unknown";case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}function GP(t,e){return/Apple (M\d|A\d|GPU)/i.test(`${t} ${e}`)}var qy=E(()=>{wn()});function Qa(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 ku=E(()=>{});function Jy(t){return t in ec}function $u(t,e,r){return eb(t,e,r,new Set)}function eb(t,e,r,i){let o=ec[e];if(!o||i.has(e))return!1;i.add(e);let n=(o.features||[]).every(s=>eb(t,s,r,i));return i.delete(e),n?(o.extensions||[]).every(s=>Boolean(tt(t,s,r))):!1}function tb(t,e,r){let i=e.create,o=tc[e.format];o?.gl===void 0&&(i=!1),o?.x&&(i=i&&Boolean(tt(t,o.x,r))),e.format==="stencil8"&&(i=!1);let n=o?.r===!1?!1:o?.r===void 0||$u(t,o.r,r),s=i&&e.render&&n&&nv(t,e.format,r);return{format:e.format,create:i&&e.create,render:s,filter:i&&e.filter,blend:i&&e.blend,store:i&&e.store}}function nv(t,e,r){let i=tc[e],o=i?.gl;if(o===void 0||i?.x&&!tt(t,i.x,r))return!1;let n=t.getParameter(32873),s=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,o,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,s),t.deleteFramebuffer(c),t.bindTexture(3553,n),t.deleteTexture(a)}return h}function rc(t){let e=tc[t],r=av(t),i=de.getInfo(t);return i.compressed&&(e.dataFormat=r),{internalFormat:r,format:e?.dataFormat||sv(i.channels,i.integer,i.normalized,r),type:i.dataType?Qa(i.dataType):e?.types?.[0]||5121,compressed:i.compressed||!1}}function rb(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 sv(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 av(t){let r=tc[t]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${t}`);return r}var Rn,Pn,Yi,Ki,QP,JP,ev,tv,rv,iv,Gy,Qy,Vu,zu,Wu,ju,Ja,ov,ec,tc,Zi=E(()=>{F();wn();ku();Rn="WEBGL_compressed_texture_s3tc",Pn="WEBGL_compressed_texture_s3tc_srgb",Yi="EXT_texture_compression_rgtc",Ki="EXT_texture_compression_bptc",QP="WEBGL_compressed_texture_etc",JP="WEBGL_compressed_texture_astc",ev="WEBGL_compressed_texture_etc1",tv="WEBGL_compressed_texture_pvrtc",rv="WEBGL_compressed_texture_atc",iv="EXT_texture_norm16",Gy="EXT_render_snorm",Qy="EXT_color_buffer_float",Vu="snorm8-renderable-webgl",zu="norm16-renderable-webgl",Wu="snorm16-renderable-webgl",ju="float16-renderable-webgl",Ja="float32-renderable-webgl",ov="rgb9e5ufloat-renderable-webgl",ec={"float32-renderable-webgl":{extensions:[Qy]},"float16-renderable-webgl":{extensions:["EXT_color_buffer_half_float"]},"rgb9e5ufloat-renderable-webgl":{extensions:["WEBGL_render_shared_exponent"]},"snorm8-renderable-webgl":{extensions:[Gy]},"norm16-webgl":{extensions:[iv]},"norm16-renderable-webgl":{features:["norm16-webgl"]},"snorm16-renderable-webgl":{features:["norm16-webgl"],extensions:[Gy]},"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:[Rn,Pn,Yi,Ki]},"texture-compression-bc5-webgl":{extensions:[Yi]},"texture-compression-bc7-webgl":{extensions:[Ki]},"texture-compression-etc2":{extensions:[QP]},"texture-compression-astc":{extensions:[JP]},"texture-compression-etc1-webgl":{extensions:[ev]},"texture-compression-pvrtc-webgl":{extensions:[tv]},"texture-compression-atc-webgl":{extensions:[rv]}};tc={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756,r:Vu},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757,r:Vu},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:ju},r16unorm:{gl:33322,rb:!0,r:zu},r16snorm:{gl:36760,r:Wu},"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:Vu},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0,r:ju},rg16unorm:{gl:33324,r:zu},rg16snorm:{gl:36761,r:Wu},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326,r:Ja},rgb9e5ufloat:{gl:35901,r:ov},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:Ja},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842,r:ju},rgba16unorm:{gl:32859,rb:!0,r:zu},rgba16snorm:{gl:36763,r:Wu},"rgb32float-webgl":{gl:34837,x:Qy,r:Ja,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0,r:Ja},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:Rn},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:Pn},"bc1-rgba-unorm":{gl:33777,x:Rn},"bc1-rgba-unorm-srgb":{gl:35916,x:Pn},"bc2-rgba-unorm":{gl:33778,x:Rn},"bc2-rgba-unorm-srgb":{gl:35918,x:Pn},"bc3-rgba-unorm":{gl:33779,x:Rn},"bc3-rgba-unorm-srgb":{gl:35919,x:Pn},"bc4-r-unorm":{gl:36283,x:Yi},"bc4-r-snorm":{gl:36284,x:Yi},"bc5-rg-unorm":{gl:36285,x:Yi},"bc5-rg-snorm":{gl:36286,x:Yi},"bc6h-rgb-ufloat":{gl:36495,x:Ki},"bc6h-rgb-float":{gl:36494,x:Ki},"bc7-rgba-unorm":{gl:36492,x:Ki},"bc7-rgba-unorm-srgb":{gl:36493,x:Ki},"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 ib,ic,ob=E(()=>{F();wn();Zi();ib={"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"},ic=class extends ao{gl;extensions;testedFeatures=new Set;constructor(e,r,i){super([],i),this.gl=e,this.extensions=r,tt(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),Jy(e)&&$u(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(ib),...Object.keys(ec)]}getWebGLFeature(e){let r=ib[e];return Boolean(typeof r=="string"?tt(this.gl,r,this.extensions):r)}}});var oc,nb=E(()=>{F();oc=class extends so{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 cv(t){return t<34069?t+34069:t}function lv(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 xt,nc=E(()=>{F();Zi();xt=class extends at{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 o=36064+r;this._attachTextureView(o,i)}}if(this.depthStencilAttachment){let r=rb(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 ${lv(r)}`)}this.gl.bindFramebuffer(36160,e)}_attachTextureView(e,r){let{gl:i}=this.device,{texture:o}=r,n=r.props.baseMipLevel,s=r.props.baseArrayLayer;switch(i.bindTexture(o.glTarget,o.handle),o.glTarget){case 35866:case 32879:i.framebufferTextureLayer(36160,e,o.handle,n,s);break;case 34067:let a=cv(s);i.framebufferTexture2D(36160,e,a,o.handle,n);break;case 3553:i.framebufferTexture2D(36160,e,3553,o.handle,n);break;default:throw new Error("Illegal texture type")}i.bindTexture(o.glTarget,null)}resizeAttachments(e,r){if(this.handle===null){this.width=e,this.height=r;return}super.resizeAttachments(e,r)}}});var sc,sb=E(()=>{F();nc();sc=class extends si{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 xt(this.device,{id:"canvas-context-framebuffer",handle:null,width:this.drawingBufferWidth,height:this.drawingBufferHeight}),this._framebuffer}}});var ac,ab=E(()=>{F();ac=class extends fo{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 n=this.canvas.getContext("2d");if(!n)throw new Error(`${i}: Failed to create 2d presentation context`);this.context2d=n,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 cb(t="id"){Hu[t]=Hu[t]||1;let e=Hu[t]++;return`${t}-${e}`}var Hu,lb=E(()=>{Hu={}});function fv(t){return t&I.INDEX?34963:t&I.VERTEX?34962:t&I.UNIFORM?35345:34962}function hv(t){return t&I.INDEX||t&I.VERTEX?35044:t&I.UNIFORM?35048:35044}var rt,cc=E(()=>{F();rt=class extends I{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=fv(this.props.usage),this.glUsage=hv(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 o=this.glTarget;this.gl.bindBuffer(o,this.handle),this.gl.bufferData(o,i,this.glUsage),this.gl.bufferSubData(o,r,e),this.gl.bindBuffer(o,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),o=0,n=void 0,s=36663;this.gl.bindBuffer(s,this.handle),o!==0||n!==void 0?this.gl.bufferSubData(s,r,i,o,n):this.gl.bufferSubData(s,r,i),this.gl.bindBuffer(s,null),this._setDebugData(e,r,e.byteLength)}async mapAndWriteAsync(e,r=0,i=this.byteLength-r){let o=new ArrayBuffer(i);await e(o,"copied"),this.write(o,r)}async readAsync(e=0,r){return this.readSyncWebGL(e,r)}async mapAndReadAsync(e,r=0,i){let o=await this.readAsync(r,i);return await e(o.buffer,"copied")}readSyncWebGL(e=0,r){r=r??this.byteLength-e;let i=new Uint8Array(r),o=0;return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,e,i,o,r),this.gl.bindBuffer(36662,null),this._setDebugData(i,e,r),i}}});function fb(t){let e=t.split(/\r?\n/),r=[];for(let i of e){if(i.length<=1)continue;let o=i.trim(),n=i.split(":"),s=n[0]?.trim();if(n.length===2){let[d,p]=n;if(!d||!p){r.push({message:o,type:lc(s||"info"),lineNum:0,linePos:0});continue}r.push({message:p.trim(),type:lc(d),lineNum:0,linePos:0});continue}let[a,c,l,...f]=n;if(!a||!c||!l){r.push({message:n.slice(1).join(":").trim()||o,type:lc(s||"info"),lineNum:0,linePos:0});continue}let h=parseInt(l,10);Number.isNaN(h)&&(h=0);let u=parseInt(c,10);Number.isNaN(u)&&(u=0),r.push({message:f.join(":").trim(),type:lc(a),lineNum:h,linePos:u})}return r}function lc(t){let e=["warning","error","info"],r=t.toLowerCase();return e.includes(r)?r:"info"}var hb=E(()=>{});var fc,ub=E(()=>{F();hb();fc=class extends er{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});let i=this._compile(this.source);i&&typeof i.catch=="function"&&i.catch(()=>{this.compilationStatus="error"})}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?fb(e):[]}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)||null}_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}return x.once(1,"Shader compilation is asynchronous")(),this._waitForCompilationComplete().then(()=>{x.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()})}async _waitForCompilationComplete(){let e=async o=>await new Promise(n=>setTimeout(n,o));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 pb(t,e,r,i){if(gv(e))return i(t);let o=t;o.pushState();try{return uv(t,e),Je(o.gl,r),i(t)}finally{o.popState()}}function uv(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(Yr("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 n=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,s=Yr("provokingVertex",e.provokingVertex,{first:36429,last:36430});n?.provokingVertexWEBGL(s)}if((e.polygonMode||e.polygonOffsetLine)&&t.features.has("polygon-mode-webgl")){if(e.polygonMode){let n=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,s=Yr("polygonMode",e.polygonMode,{fill:6914,line:6913});n?.polygonModeWEBGL(1028,s),n?.polygonModeWEBGL(1029,s)}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(pv("depthWriteEnabled",e.depthWriteEnabled)),e.depthCompare&&(e.depthCompare!=="always"?i.enable(2929):i.disable(2929),i.depthFunc(uc("depthCompare",e.depthCompare))),e.clearDepth!==void 0&&i.clearDepth(e.clearDepth),e.stencilWriteMask){let o=e.stencilWriteMask;i.stencilMaskSeparate(1028,o),i.stencilMaskSeparate(1029,o)}if(e.stencilReadMask&&x.warn("stencilReadMask not supported under WebGL"),e.stencilCompare){let o=e.stencilReadMask||4294967295,n=uc("depthCompare",e.stencilCompare);e.stencilCompare!=="always"?i.enable(2960):i.disable(2960),i.stencilFuncSeparate(1028,n,0,o),i.stencilFuncSeparate(1029,n,0,o)}if(e.stencilPassOperation&&e.stencilFailOperation&&e.stencilDepthFailOperation){let o=Xu("stencilPassOperation",e.stencilPassOperation),n=Xu("stencilFailOperation",e.stencilFailOperation),s=Xu("stencilDepthFailOperation",e.stencilDepthFailOperation);i.stencilOpSeparate(1028,n,s,o),i.stencilOpSeparate(1029,n,s,o)}switch(e.blend){case!0:i.enable(3042);break;case!1:i.disable(3042);break;default:}if(e.blendColorOperation||e.blendAlphaOperation){let o=db("blendColorOperation",e.blendColorOperation||"add"),n=db("blendAlphaOperation",e.blendAlphaOperation||"add");i.blendEquationSeparate(o,n);let s=hc("blendColorSrcFactor",e.blendColorSrcFactor||"one"),a=hc("blendColorDstFactor",e.blendColorDstFactor||"zero"),c=hc("blendAlphaSrcFactor",e.blendAlphaSrcFactor||"one"),l=hc("blendAlphaDstFactor",e.blendAlphaDstFactor||"zero");i.blendFuncSeparate(s,a,c,l)}}function uc(t,e){return Yr(t,e,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function Xu(t,e){return Yr(t,e,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function db(t,e){return Yr(t,e,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function hc(t,e,r="color"){return Yr(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 dv(t,e){return`Illegal parameter ${e} for ${t}`}function Yr(t,e,r){if(!(e in r))throw new Error(dv(t,e));return r[e]}function pv(t,e){return e}function gv(t){let e=!0;for(let r in t){e=!1;break}return e}var Yu=E(()=>{F();Xi()});function dc(t){let e={};return t.addressModeU&&(e[10242]=Ku(t.addressModeU)),t.addressModeV&&(e[10243]=Ku(t.addressModeV)),t.addressModeW&&(e[32882]=Ku(t.addressModeW)),t.magFilter&&(e[10240]=Zu(t.magFilter)),(t.minFilter||t.mipmapFilter)&&(e[10241]=mv(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]=uc("compare",t.compare)),t.maxAnisotropy&&(e[34046]=t.maxAnisotropy),e}function Ku(t){switch(t){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function Zu(t){switch(t){case"nearest":return 9728;case"linear":return 9729}}function mv(t,e="none"){if(!e)return Zu(t);switch(e){case"none":return Zu(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 qu=E(()=>{Yu()});var pc,gb=E(()=>{F();qu();pc=class extends Be{device;handle;parameters;constructor(e,r){super(e,r),this.device=e,this.parameters=dc(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 o=Number(r);switch(o){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,o,i);break;default:this.device.gl.samplerParameteri(this.handle,o,i);break}}}}});function At(t,e,r){if(_v(e))return r(t);let{nocatch:i=!0}=e,o=et.get(t);o.push(),Je(t,e);let n;if(i)n=r(t),o.pop();else try{n=r(t)}finally{o.pop()}return n}function _v(t){for(let e in t)return!1;return!0}var gc=E(()=>{Xi();Uu()});var St,Gu=E(()=>{F();St=class extends Jt{device;gl;handle;texture;constructor(e,r){super(e,{...B.defaultProps,...r}),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}}});function mc(t){return yv[t]}var yv,Qu=E(()=>{yv={[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 bv(t,e=0){return e?new t.constructor(t.buffer,t.byteOffset+e,(t.byteLength-e)/t.BYTES_PER_ELEMENT):t}function Tv(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 xv(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 _c(t,e,r){return e==="cube"?34069+r:t}var Et,yc=E(()=>{F();Zi();qu();gc();Gu();Qu();Et=class extends B{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=rc(this.props.format);this.glTarget=xv(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:o,width:n,height:s,depth:a,mipLevels:c,glTarget:l,glInternalFormat:f}=this;if(!this.compressed)switch(o){case"2d":case"cube":this.gl.texStorage2D(l,c,f,n,s);break;case"2d-array":case"3d":this.gl.texStorage3D(l,c,f,n,s,a);break;default:throw new Error(o)}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 St(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 St(this.device,{...e,texture:this})}setSampler(e={}){super.setSampler(e);let r=dc(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:o}=this,{image:n,depth:s,mipLevel:a,x:c,y:l,z:f,width:h,height:u}=r,d=_c(this.glTarget,this.dimension,f),p=r.flipY?{[37440]:!0}:{};return this.gl.bindTexture(this.glTarget,this.handle),At(this.gl,p,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(d,a,c,l,h,u,i,o,n);break;case"2d-array":case"3d":this.gl.texSubImage3D(d,a,c,l,f,h,u,s,i,o,n);break;default:}}),this.gl.bindTexture(this.glTarget,null),{width:r.width,height:r.height}}copyImageData(e){super.copyImageData(e)}readBuffer(e={},r){if(!r)throw new Error(`${this} readBuffer requires a destination buffer`);let i=this._getSupportedColorReadOptions(e),o=e.byteOffset??0,n=this.computeMemoryLayout(i);if(r.byteLength<o+n.byteLength)throw new Error(`${this} readBuffer target is too small (${r.byteLength} < ${o+n.byteLength})`);let s=r;this.gl.bindBuffer(35051,s.handle);try{this._readColorTextureLayers(i,n,a=>{this.gl.readPixels(i.x,i.y,i.width,i.height,this.glFormat,this.glType,o+a)})}finally{this.gl.bindBuffer(35051,null)}return r}async readDataAsync(e={}){throw new Error(`${this} readDataAsync is deprecated; use readBuffer() with an explicit destination buffer or DynamicTexture.readAsync()`)}writeBuffer(e,r={}){let i=this._normalizeTextureWriteOptions(r),{width:o,height:n,depthOrArrayLayers:s,mipLevel:a,byteOffset:c,x:l,y:f,z:h}=i,{glFormat:u,glType:d,compressed:p}=this,g=_c(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,b={[3317]:this.byteAlignment,..._!==void 0?{[3314]:_}:{},[32878]:i.rowsPerImage};this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,e.handle),At(this.gl,b,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(g,a,l,f,o,n,u,d,c);break;case"2d-array":case"3d":this.gl.texSubImage3D(g,a,l,f,h,o,n,s,u,d,c);break;default:}}),this.gl.bindBuffer(35052,null),this.gl.bindTexture(this.glTarget,null)}writeData(e,r={}){let i=this._normalizeTextureWriteOptions(r),o=ArrayBuffer.isView(e)?e:new Uint8Array(e),{width:n,height:s,depthOrArrayLayers:a,mipLevel:c,x:l,y:f,z:h,byteOffset:u}=i,{glFormat:d,glType:p,compressed:g}=this,m=_c(this.glTarget,this.dimension,h),_;if(!g){let{bytesPerPixel:w}=this.device.getTextureFormatInfo(this.format);w&&(_=i.bytesPerRow/w)}let b=this.compressed?{}:{[3317]:this.byteAlignment,..._!==void 0?{[3314]:_}:{},[32878]:i.rowsPerImage},y=Tv(o,u),T=g?bv(o,u):o,S=this._getMipLevelSize(c),A=l===0&&f===0&&h===0&&n===S.width&&s===S.height&&a===S.depthOrArrayLayers;this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,null),At(this.gl,b,()=>{switch(this.dimension){case"2d":case"cube":g?A?this.gl.compressedTexImage2D(m,c,d,n,s,0,T):this.gl.compressedTexSubImage2D(m,c,l,f,n,s,d,T):this.gl.texSubImage2D(m,c,l,f,n,s,d,p,o,y);break;case"2d-array":case"3d":g?A?this.gl.compressedTexImage3D(m,c,d,n,s,a,0,T):this.gl.compressedTexSubImage3D(m,c,l,f,h,n,s,a,d,T):this.gl.texSubImage3D(m,c,l,f,h,n,s,a,d,p,o,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),o=mc(this.glType),n=po(o),s=new n(i.byteLength/n.BYTES_PER_ELEMENT);return this._readColorTextureLayers(r,i,a=>{let c=new n(s.buffer,s.byteOffset+a,i.bytesPerImage/n.BYTES_PER_ELEMENT);this.gl.readPixels(r.x,r.y,r.width,r.height,this.glFormat,this.glType,c)}),s.buffer}_readColorTextureLayers(e,r,i){let o=this._getFramebuffer(),n=r.bytesPerRow/r.bytesPerPixel,s={[3333]:this.byteAlignment,...n!==e.width?{[3330]:n}:{}},a=this.gl.getParameter(3074),c=this.gl.bindFramebuffer(36160,o.handle);try{this.gl.readBuffer(36064),At(this.gl,s,()=>{for(let l=0;l<e.depthOrArrayLayers;l++)this._attachReadSubresource(o,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 o=`${r}:${i}`;if(this._framebufferAttachmentKey!==o){switch(this.dimension){case"2d":this.gl.framebufferTexture2D(36160,36064,3553,this.handle,r);break;case"cube":this.gl.framebufferTexture2D(36160,36064,_c(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 n=Number(this.gl.checkFramebufferStatus(36160));if(n!==Number(36053))throw new Error(`${e} incomplete for ${this} readback (${n})`)}this._framebufferAttachmentKey=o}}generateMipmapsWebGL(e){if(!(!(this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format))&&(x.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){x.warn(`Error generating mipmap for ${this}: ${i.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}_setSamplerParameters(e){x.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 o=Number(r),n=i;switch(o){case 33082:case 33083:this.gl.texParameterf(this.glTarget,o,n);break;case 10240:case 10241:this.gl.texParameteri(this.glTarget,o,n);break;case 10242:case 10243:case 32882:this.gl.texParameteri(this.glTarget,o,n);break;case 34046:this.device.features.has("texture-filterable-anisotropic-webgl")&&this.gl.texParameteri(this.glTarget,o,n);break;case 34892:case 34893:this.gl.texParameteri(this.glTarget,o,n);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 mb(t,e,r,i){let o=t,n=i;n===!0&&(n=1),n===!1&&(n=0);let s=typeof n=="number"?[n]:n;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,s);case 35664:return t.uniform2fv(e,s);case 35665:return t.uniform3fv(e,s);case 35666:return t.uniform4fv(e,s);case 5124:return t.uniform1iv(e,s);case 35667:return t.uniform2iv(e,s);case 35668:return t.uniform3iv(e,s);case 35669:return t.uniform4iv(e,s);case 35670:return t.uniform1iv(e,s);case 35671:return t.uniform2iv(e,s);case 35672:return t.uniform3iv(e,s);case 35673:return t.uniform4iv(e,s);case 5125:return o.uniform1uiv(e,s,1);case 36294:return o.uniform2uiv(e,s,2);case 36295:return o.uniform3uiv(e,s,3);case 36296:return o.uniform4uiv(e,s,4);case 35674:return t.uniformMatrix2fv(e,!1,s);case 35675:return t.uniformMatrix3fv(e,!1,s);case 35676:return t.uniformMatrix4fv(e,!1,s);case 35685:return o.uniformMatrix2x3fv(e,!1,s);case 35686:return o.uniformMatrix2x4fv(e,!1,s);case 35687:return o.uniformMatrix3x2fv(e,!1,s);case 35688:return o.uniformMatrix3x4fv(e,!1,s);case 35689:return o.uniformMatrix4x2fv(e,!1,s);case 35690:return o.uniformMatrix4x3fv(e,!1,s)}throw new Error("Illegal uniform")}var _b=E(()=>{});function yb(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 bb(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 Ju=E(()=>{});function Av(t,e){let r={...t,attributes:t.attributes.map(i=>({...i})),bindings:t.bindings.map(i=>({...i}))};for(let i of e?.attributes||[]){let o=r.attributes.find(n=>n.name===i.name);o?(o.type=i.type||o.type,o.stepMode=i.stepMode||o.stepMode):x.warn(`shader layout attribute ${i.name} not present in shader`)}for(let i of e?.bindings||[]){let o=xb(r,i.name);if(!o){x.warn(`shader layout binding ${i.name} not present in shader`);continue}Object.assign(o,i)}return r}function xb(t,e){return t.bindings.find(r=>r.name===e||r.name===`${e}Uniforms`||`${r.name}Uniforms`===e)}function Tb(t,e){return t[e]||t[`${e}Uniforms`]||t[e.replace(/Uniforms$/,"")]}var bc,Ab=E(()=>{F();Yu();_b();cc();nc();yc();Gu();Ju();bc=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?Av(this.introspectedLayout,r.shaderLayout):this.introspectedLayout}destroy(){this.destroyed||(this.sharedRenderPipeline&&!this.props._sharedRenderPipeline&&this.sharedRenderPipeline.destroy(),this.destroyResource())}setBindings(e,r){let i=ys(uo(this.shaderLayout,e));for(let[o,n]of Object.entries(i)){let s=xb(this.shaderLayout,o);if(s){switch(n||x.warn(`Unsetting binding "${o}" in render pipeline "${this.id}"`)(),s.type){case"uniform":if(!(n instanceof rt)&&!(n.buffer instanceof rt))throw new Error("buffer value");break;case"texture":if(!(n instanceof St||n instanceof Et||n instanceof xt))throw new Error(`${this} Bad texture binding for ${o}`);break;case"sampler":x.warn(`Ignoring sampler ${o}`)();break;default:throw new Error(s.type)}this.bindings[o]=n}else{let a=this.shaderLayout.bindings.map(c=>`"${c.name}"`).join(", ");r?.disableWarnings||x.warn(`No binding "${o}" in render pipeline "${this.id}", expected one of ${a}`,n)()}}}draw(e){this._syncLinkStatus();let r=e.bindGroups?ys(e.bindGroups):e.bindings||this.bindings,{renderPass:i,parameters:o=this.props.parameters,topology:n=this.props.topology,vertexArray:s,vertexCount:a,instanceCount:c,isInstanced:l=!1,firstVertex:f=0,transformFeedback:h,uniforms:u=this.uniforms}=e,d=yb(n),p=Boolean(s.indexBuffer),g=s.indexBuffer?.glIndexType;if(this.linkStatus!=="success")return x.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable(r))return x.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(this.handle),s.bindBeforeRender(i),h&&h.begin(this.props.topology),this._applyBindings(r,{disableWarnings:this.props.disableWarnings}),this._applyUniforms(u);let m=i;return pb(this.device,o,m.glParameters,()=>{p&&l?this.device.gl.drawElementsInstanced(d,a||0,g,f,c||0):p?this.device.gl.drawElements(d,a||0,g,f):l?this.device.gl.drawArraysInstanced(d,f,a||0,c||0):this.device.gl.drawArrays(d,f,a||0),h&&h.end()}),s.unbindAfterRender(i),!0}_areTexturesRenderable(e){let r=!0;for(let i of this.shaderLayout.bindings)Tb(e,i.name)||(x.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 o=0,n=0;for(let s of this.shaderLayout.bindings){let a=Tb(e,s.name);if(!a)throw new Error(`No value for binding ${s.name} in ${this.id}`);switch(s.type){case"uniform":let{name:c}=s,l=i.getUniformBlockIndex(this.handle,c);if(l===4294967295)throw new Error(`Invalid uniform block name ${c}`);if(i.uniformBlockBinding(this.handle,l,n),a instanceof rt)i.bindBufferBase(35345,n,a.handle);else{let h=a;i.bindBufferRange(35345,n,h.buffer.handle,h.offset||0,h.size||h.buffer.byteLength-(h.offset||0))}n+=1;break;case"texture":if(!(a instanceof St||a instanceof Et||a instanceof xt))throw new Error("texture");let f;if(a instanceof St)f=a.texture;else if(a instanceof Et)f=a;else if(a instanceof xt&&a.colorAttachments[0]instanceof St)x.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+o),i.bindTexture(f.glTarget,f.handle),o+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw new Error(`binding type '${s.type}' not supported in WebGL`)}}}_applyUniforms(e){for(let r of this.shaderLayout.uniforms||[]){let{name:i,location:o,type:n,textureUnit:s}=r,a=e[i]??s;a!==void 0&&mb(this.device.gl,o,n,a)}}_syncLinkStatus(){this.linkStatus=this.sharedRenderPipeline.linkStatus}}});function Sb(t){return Ev[t]}function Tc(t){return Sv[t]}function xc(t){return Boolean(wb[t])}function Eb(t){return wb[t]}var Sv,wb,Ev,Ac=E(()=>{Sv={[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>"},wb={[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"}},Ev={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 Rb(t,e){let r={attributes:[],bindings:[]};r.attributes=wv(t,e);let i=vv(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 o=Pv(t,e),n=0;for(let a of o)if(xc(a.type)){let{viewDimension:c,sampleType:l}=Eb(a.type);r.bindings.push({type:"texture",name:a.name,group:0,location:n,viewDimension:c,sampleType:l}),a.textureUnit=n,n+=1}o.length&&(r.uniforms=o);let s=Rv(t,e);return s?.length&&(r.varyings=s),r}function wv(t,e){let r=[],i=t.getProgramParameter(e,35721);for(let o=0;o<i;o++){let n=t.getActiveAttrib(e,o);if(!n)throw new Error("activeInfo");let{name:s,type:a}=n,c=t.getAttribLocation(e,s);if(c>=0){let l=Tc(a),f=/instance/i.test(s)?"instance":"vertex";r.push({name:s,location:c,stepMode:f,type:l})}}return r.sort((o,n)=>o.location-n.location),r}function Rv(t,e){let r=[],i=t.getProgramParameter(e,35971);for(let o=0;o<i;o++){let n=t.getTransformFeedbackVarying(e,o);if(!n)throw new Error("activeInfo");let{name:s,type:a,size:c}=n,l=Tc(a),{type:f,components:h}=ui(l);r.push({location:o,name:s,type:f,size:c*h})}return r.sort((o,n)=>o.location-n.location),r}function Pv(t,e){let r=[],i=t.getProgramParameter(e,35718);for(let o=0;o<i;o++){let n=t.getActiveUniform(e,o);if(!n)throw new Error("activeInfo");let{name:s,size:a,type:c}=n,{name:l,isArray:f}=Mv(s),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 vv(t,e){let r=(n,s)=>t.getActiveUniformBlockParameter(e,n,s),i=[],o=t.getProgramParameter(e,35382);for(let n=0;n<o;n++){let s={name:t.getActiveUniformBlockName(e,n)||"",location:r(n,35391),byteLength:r(n,35392),vertex:r(n,35396),fragment:r(n,35398),uniformCount:r(n,35394),uniforms:[]},a=r(n,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 p=0;p<s.uniformCount;++p){let g=a[p];if(g!==void 0){let m=t.getActiveUniform(e,g);if(!m)throw new Error("activeInfo");let _=Tc(c[p]);s.uniforms.push({name:m.name,format:_,type:c[p],arrayLength:l[p],byteOffset:f[p],byteStride:h[p]})}}let u=new Set(s.uniforms.map(p=>p.name.split(".")[0]).filter(p=>Boolean(p))),d=s.name.replace(/Uniforms$/,"");if(u.size===1&&!u.has(s.name)&&!u.has(d)){let[p]=u;x.warn(`Uniform block "${s.name}" uses GLSL instance "${p}". luma.gl binds uniform buffers by block name ("${s.name}") and alias ("${d}"). Prefer matching the instance name to one of those to avoid confusing silent mismatches.`)()}i.push(s)}return i.sort((n,s)=>n.location-s.location),i}function Mv(t){if(t[t.length-1]!=="]")return{name:t,length:1,isArray:!1};let r=/([^[]*)(\[[0-9]+\])?/.exec(t);return{name:Pr(r?.[1],`Failed to parse GLSL uniform name ${t}`),length:r?.[2]?1:0,isArray:Boolean(r?.[2])}}var Pb=E(()=>{F();Ac()});var vb,Sc,Mb=E(()=>{F();Pb();Ac();vb=4,Sc=class extends ho{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(),x.time(3,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=Rb(this.device.gl,this.handle),x.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),x.time(vb,`linkProgram for ${this.id}`)(),e.linkProgram(this.handle),x.timeEnd(vb,`linkProgram for ${this.id}`)(),!this.device.features.has("compilation-status-async-webgl")){let i=this._getLinkStatus();this._reportLinkStatus(i);return}x.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),x.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 o=0;o<i;o++){let n=e.getActiveUniform(this.handle,o);if(n&&xc(n.type)){let s=n.name.endsWith("[0]"),a=s?n.name.slice(0,-3):n.name,c=e.getUniformLocation(this.handle,a);c!==null&&(r=this._assignSamplerUniform(c,n,s,r))}}}_assignSamplerUniform(e,r,i,o){let{gl:n}=this.device;if(i&&r.size>1){let s=Int32Array.from({length:r.size},(a,c)=>o+c);return n.uniform1iv(e,s),o+r.size}return n.uniform1i(e,o),o+1}async _waitForLinkComplete(){let e=async o=>await new Promise(n=>setTimeout(n,o));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 Cv(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 Iv(t,e){throw new Error("copyBufferToTexture is not supported in WebGL")}function Ov(t,e){let{sourceTexture:r,mipLevel:i=0,aspect:o="all",width:n=e.sourceTexture.width,height:s=e.sourceTexture.height,depthOrArrayLayers:a,origin:c=[0,0,0],destinationBuffer:l,byteOffset:f=0,bytesPerRow:h,rowsPerImage:u}=e;if(r instanceof B){r.readBuffer({x:c[0]??0,y:c[1]??0,z:c[2]??0,width:n,height:s,depthOrArrayLayers:a,mipLevel:i,aspect:o,byteOffset:f},l);return}if(o!=="all")throw new Error("aspect not supported in WebGL");if(i!==0||a!==void 0||h||u)throw new Error("not implemented");let{framebuffer:d,destroyFramebuffer:p}=Cb(r),g;try{let m=l,_=n||d.width,b=s||d.height,y=Pr(d.colorAttachments[0]),T=rc(y.texture.props.format),S=T.format,A=T.type;t.gl.bindBuffer(35051,m.handle),g=t.gl.bindFramebuffer(36160,d.handle),t.gl.readPixels(c[0],c[1],_,b,S,A,f)}finally{t.gl.bindBuffer(35051,null),g!==void 0&&t.gl.bindFramebuffer(36160,g),p&&d.destroy()}}function Nv(t,e){let{sourceTexture:r,destinationMipLevel:i=0,origin:o=[0,0],destinationOrigin:n=[0,0,0],destinationTexture:s}=e,{width:a=e.destinationTexture.width,height:c=e.destinationTexture.height}=e,{framebuffer:l,destroyFramebuffer:f}=Cb(r),[h=0,u=0]=o,[d,p,g]=n,m=t.gl.bindFramebuffer(36160,l.handle),_,b;if(s instanceof Et)_=s,a=Number.isFinite(a)?a:_.width,c=Number.isFinite(c)?c:_.height,_._bind(0),b=_.glTarget;else throw new Error("invalid destination");switch(b){case 3553:case 34067:t.gl.copyTexSubImage2D(b,i,d,p,h,u,a,c);break;case 35866:case 32879:t.gl.copyTexSubImage3D(b,i,d,p,g,h,u,a,c);break;default:}_&&_._unbind(),t.gl.bindFramebuffer(36160,m),f&&l.destroy()}function Cb(t){if(t instanceof B){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 Ec,Ib=E(()=>{F();Zi();yc();Ec=class extends hi{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":Cv(this.device,r.options);break;case"copy-buffer-to-texture":Iv(this.device,r.options);break;case"copy-texture-to-buffer":Ov(this.device,r.options);break;case"copy-texture-to-texture":Nv(this.device,r.options);break;default:throw new Error(r.name)}}}});var Dv,wc,Ob=E(()=>{F();gc();Xi();Dv=[1,2,4,8],wc=class extends Ct{device;handle=null;glParameters={};constructor(e,r){super(e,r),this.device=e;let i=this.props.framebuffer,o=!i||i.handle===null;o&&e.getDefaultCanvasContext()._resizeDrawingBufferIfNeeded();let n;if(!r?.parameters?.viewport)if(o){let[s,a]=e.getDefaultCanvasContext().getDrawingBufferSize();n=[0,0,s,a]}else{let{width:s,height:a}=i;n=[0,0,s,a]}if(this.device.pushState(),this.setParameters({viewport:n,...this.props.parameters}),o)this.device.gl.drawBuffers([1029]);else{let s=i.colorAttachments.map((a,c)=>36064+c);this.device.gl.drawBuffers(s)}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=Dv.map(i=>Boolean(i&e.colorMask))),this.glParameters=r,Je(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,o)=>{i&&this.clearColorBuffer(o,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&&At(this.device.gl,e,()=>{this.device.gl.clear(r)})}clearColorBuffer(e=0,r=[0,0,0,0]){At(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 vn,Nb=E(()=>{F();Ib();Ob();vn=class extends fi{device;handle=null;commandBuffer;constructor(e,r){super(e,r),this.device=e,this.commandBuffer=new Ec(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 wc(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){throw new Error("resolveQuerySet is not supported in WebGL")}writeTimestamp(e,r){e.writeTimestamp(r)}}});function Db(t){let{target:e,source:r,start:i=0,count:o=1}=t,n=r.length,s=o*n,a=0;for(let c=i;a<n;a++)e[c++]=r[a]??0;for(;a<s;)a<s-a?(e.copyWithin(i+a,i,i+a),a*=2):(e.copyWithin(i+a,i,i+s-a),a=s);return t.target}var Bb=E(()=>{});function Bv(t){return Array.isArray(t)?new Float32Array(t):t}function Lv(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 qi,Lb=E(()=>{F();Zt();ku();Bb();qi=class extends di{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(e){return ll()==="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:o,type:n,stride:s,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,o,n,s,a):this.device.gl.vertexAttribPointer(e,o,n,c,s,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=Qa(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 o=qi.isConstantAttributeZeroSupported(this.device)||e!==0;(r||o)&&(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=Bv(r),o=i.byteLength*e,n=i.length*e;if(this.buffer&&o!==this.buffer.byteLength)throw new Error(`Buffer size is immutable, byte length ${o} !== ${this.buffer.byteLength}.`);let s=!this.buffer;if(this.buffer=this.buffer||this.device.createBuffer({byteLength:o}),s||=!Lv(i,this.bufferValue),s){let a=af(r.constructor,n);Db({target:a,source:i,start:0,count:n}),this.buffer.write(a),this.bufferValue=r}return this.buffer}}});function Fb(t){return typeof t=="number"?Number.isInteger(t):/^\d+$/.test(t)}var Rc,Ub=E(()=>{F();Pc();Ju();Rc=class extends pi{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(bb(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:o,byteLength:n,byteOffset:s}=this._getBufferRange(r);if(i<0){this.unusedBuffers[e]=o,x.warn(`${this.id} unusedBuffers varying buffer ${e}`)();return}this.buffers[i]={buffer:o,byteLength:n,byteOffset:s},this.bindOnUse||this._bindBuffer(i,o,s,n)}getBuffer(e){if(Fb(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 rt)return{buffer:e,byteOffset:0,byteLength:e.byteLength};let{buffer:r,byteOffset:i=0,byteLength:o=e.buffer.byteLength}=e;return{buffer:r,byteOffset:i,byteLength:o}}_getVaryingIndex(e){if(Fb(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:o,byteOffset:n}=this._getBufferRange(r);this._bindBuffer(Number(e),i,n,o)}}_unbindBuffers(){for(let e in this.buffers)this.gl.bindBufferBase(35982,Number(e),null)}_bindBuffer(e,r,i=0,o){let n=r&&r.handle;!n||o===void 0?this.gl.bindBufferBase(35982,e,n):this.gl.bindBufferRange(35982,e,n,i,o)}}});var vc,kb=E(()=>{F();vc=class extends gi{device;handle;_timestampPairs=[];_pendingReads=new Set;_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._cancelPendingQuery(e.activeQuery),this.device.gl.deleteQuery(e.activeQuery.handle));for(let r of e.completedQueries)this._cancelPendingQuery(r),this.device.gl.deleteQuery(r.handle)}this._occlusionQuery&&(this._cancelPendingQuery(this._occlusionQuery),this.device.gl.deleteQuery(this._occlusionQuery.handle));for(let e of Array.from(this._pendingReads))this._cancelPendingQuery(e);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 o=new Array(i).fill(0n),n=Math.floor(r/2),s=Math.floor((r+i-1)/2);for(let a=n;a<=s;a++){let c=await this._consumeTimestampPairResult(a),l=a*2,f=l+1;l>=r&&l<r+i&&(o[l-r]=0n),f>=r&&f<r+i&&(o[f-r]=c)}return o}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,cancelled:!1,pollRequestId:null,resolve:null,reject:null},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 o=this.device.gl.createQuery();if(!o)throw new Error("WebGL query not supported");let n={handle:o,promise:null,result:null,disjoint:!1,cancelled:!1,pollRequestId:null,resolve:null,reject:null};this.device.gl.beginQuery(35007,o),i.activeQuery=n;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.cancelled||this.destroyed)return e.result=0n,!0;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||(this._pendingReads.add(e),e.promise=new Promise((r,i)=>{e.resolve=r,e.reject=i;let o=()=>{if(e.pollRequestId=null,e.cancelled||this.destroyed){this._pendingReads.delete(e),e.promise=null,e.resolve=null,e.reject=null,r(0n);return}if(!this._pollQueryAvailability(e)){e.pollRequestId=this._requestAnimationFrame(o);return}this._pendingReads.delete(e),e.promise=null,e.resolve=null,e.reject=null,e.disjoint?i(new Error("GPU timestamp query was invalidated by a disjoint event")):r(e.result||0n)};o()})),e.promise}_cancelPendingQuery(e){if(this._pendingReads.delete(e),e.cancelled=!0,e.pollRequestId!==null&&(this._cancelAnimationFrame(e.pollRequestId),e.pollRequestId=null),e.resolve){let r=e.resolve;e.promise=null,e.resolve=null,e.reject=null,r(0n)}}_requestAnimationFrame(e){return requestAnimationFrame(e)}_cancelAnimationFrame(e){cancelAnimationFrame(e)}}});var Mc,Vb=E(()=>{F();Mc=class extends mi{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(o=>{let n=()=>{let s=this.gl.clientWaitSync(this.handle,0,0);s===this.gl.ALREADY_SIGNALED||s===this.gl.CONDITION_SATISFIED?(this._signaled=!0,o()):setTimeout(n,1)};n()})}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 ed(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 zb(t){switch(t){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}var Wb=E(()=>{});function jb(t,e){let{sourceX:r=0,sourceY:i=0,sourceAttachment:o=0}=e||{},{target:n=null,sourceWidth:s,sourceHeight:a,sourceDepth:c,sourceFormat:l,sourceType:f}=e||{},{framebuffer:h,deleteFramebuffer:u}=Hb(t),{gl:d,handle:p}=h;s||=h.width,a||=h.height;let g=h.colorAttachments[o]?.texture;if(!g)throw new Error(`Invalid framebuffer attachment ${o}`);c=g?.depth||1,l||=g?.glFormat||6408,f||=g?.glType||5121,n=Uv(n,f,l,s,a,c);let m=ue.getDataType(n);f=f||Sb(m);let _=d.bindFramebuffer(36160,p);return d.readBuffer(36064+o),d.readPixels(r,i,s,a,l,f,n),d.readBuffer(36064),d.bindFramebuffer(36160,_||null),u&&h.destroy(),n}function $b(t,e){let{target:r,sourceX:i=0,sourceY:o=0,sourceFormat:n=6408,targetByteOffset:s=0}=e||{},{sourceWidth:a,sourceHeight:c,sourceType:l}=e||{},{framebuffer:f,deleteFramebuffer:h}=Hb(t);a=a||f.width,c=c||f.height;let u=f;l=l||5121;let d=r;if(!d){let g=ed(n),m=zb(l),_=s+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,o],destinationBuffer:d,byteOffset:s}),p.destroy(),h&&f.destroy(),d}function Hb(t){return t instanceof at?{framebuffer:t,deleteFramebuffer:!1}:{framebuffer:Fv(t),deleteFramebuffer:!0}}function Fv(t,e){let{device:r,width:i,height:o,id:n}=t;return r.createFramebuffer({...e,id:`framebuffer-for-${n}`,width:i,height:o,colorAttachments:[t]})}function Uv(t,e,r,i,o,n){if(t)return t;e||=5121;let s=mc(e),a=ue.getTypedArrayConstructor(s),c=ed(r);return new a(i*o*c)}var Xb=E(()=>{F();Ac();Wb();Qu()});var td={};Pt(td,{WebGLDevice:()=>it});function kv(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 Vv(t,e,r){t.gl.vertexAttribI4iv(e,r)}function zv(t,e,r){t.gl.vertexAttribI4uiv(e,r)}function Wv(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 it,Cc=E(()=>{F();Uu();Yy();Za();qy();ob();nb();sb();ab();Ou();Nu();Zi();lb();cc();ub();gb();yc();nc();Ab();Mb();Nb();Lb();Ub();kb();Vb();Xb();Xi();gc();wn();it=class extends Te{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||cb("webgl-device")});let r=Te._getCanvasContextProps(e);if(!r)throw new Error("WebGLDevice requires props.createCanvasContext to be set");let i=r.canvas?.gl??null,o=it.getDeviceFromContext(i);if(o)throw new Error(`WebGL context already attached to device ${o.id}`);this.canvasContext=new sc(this,r),this.lost=new Promise(f=>{this._resolveContextLost=f});let n={...e.webgl};r.alphaMode==="premultiplied"&&(n.premultipliedAlpha=!0),e.powerPreference!==void 0&&(n.powerPreference=e.powerPreference),e.failIfMajorPerformanceCaveat!==void 0&&(n.failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat);let a=this.props._handle||Xy(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")},n);if(!a)throw new Error("WebGL context creation failed");if(o=it.getDeviceFromContext(a),o){if(e._reuseDevices)return x.log(1,`Not creating a new Device, instead returning a reference to Device ${o.id} already attached to WebGL context`,o)(),this.canvasContext.destroy(),o._reused=!0,o;throw new Error(`WebGL context already attached to device ${o.id}`)}this.handle=a,this.gl=a,this.spectorJS=Iy({...this.props,gl:this.handle});let c=Xr(this.handle);c.device=this,c.extensions||(c.extensions={}),this.extensions=c.extensions,this.info=Ky(this.gl,this.extensions),this.limits=new oc(this.gl),this.features=new ic(this.gl,this.extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new et(this.gl,{log:(...f)=>x.log(1,...f)()}).trackState(this.gl,{copyState:!1}),(e.debug||e.debugWebGL)&&(this.gl=By(this.gl,{debugWebGL:!0,traceWebGL:e.debugWebGL}),x.warn("WebGL debug mode activated. Performance reduced.")()),e.debugWebGL&&(x.level=Math.max(x.level,1)),this.commandEncoder=new vn(this,{id:`${this}-command-encoder`}),this.canvasContext._startObservers()}destroy(){if(this.commandEncoder?.destroy(),!this.props._reuseDevices&&!this._reused){let e=Xr(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 ac(this,e||{})}createBuffer(e){let r=this._normalizeBufferProps(e);return new rt(this,r)}createTexture(e){return new Et(this,e)}createExternalTexture(e){throw new Error("createExternalTexture() not implemented")}createSampler(e){return new pc(this,e)}createShader(e){return new fc(this,e)}createFramebuffer(e){return new xt(this,e)}createVertexArray(e){return new qi(this,e)}createTransformFeedback(e){return new Rc(this,e)}createQuerySet(e){return new vc(this,e)}createFence(){return new Mc(this)}createRenderPipeline(e){return new bc(this,e)}_createSharedRenderPipelineWebGL(e){return new Sc(this,e)}createComputePipeline(e){throw new Error("ComputePipeline not supported in WebGL")}createCommandEncoder(e={}){return new vn(this,e)}submit(e){let r=null;e||({submittedCommandEncoder:r,commandBuffer:e}=this._finalizeDefaultCommandEncoderForSubmit());try{e._executeCommands(),r&&r.resolveTimeProfilingQuerySet().then(()=>{this.commandEncoder._gpuTimeMs=r._gpuTimeMs}).catch(()=>{})}finally{e.destroy()}}_finalizeDefaultCommandEncoderForSubmit(){let e=this.commandEncoder,r=e.finish();return this.commandEncoder.destroy(),this.commandEncoder=this.createCommandEncoder({id:e.props.id,timeProfilingQuerySet:e.getTimeProfilingQuerySet()}),{submittedCommandEncoder:e,commandBuffer:r}}readPixelsToArrayWebGL(e,r){return jb(e,r)}readPixelsToBufferWebGL(e,r){return $b(e,r)}setParametersWebGL(e){Je(this.gl,e)}getParametersWebGL(e){return Ga(this.gl,e)}withParametersWebGL(e,r){return At(this.gl,e,r)}resetWebGL(){x.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),zy(this.gl)}_getDeviceSpecificTextureFormatCapabilities(e){return tb(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(){et.get(this.gl).push()}popState(){et.get(this.gl).pop()}getGLKey(e,r){let i=Number(e);for(let o in this.gl)if(this.gl[o]===i)return`GL.${o}`;return r?.emptyIfUnknown?"":String(e)}getGLKeys(e){let r={emptyIfUnknown:!0};return Object.entries(e).reduce((i,[o,n])=>(i[`${o}:${this.getGLKey(o,r)}`]=`${n}:${this.getGLKey(n,r)}`,i),{})}setConstantAttributeWebGL(e,r){let i=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(i).fill(null);let o=this._constants[e];switch(o&&Wv(o,r)&&x.info(1,`setConstantAttributeWebGL(${e}) could have been skipped, value unchanged`)(),this._constants[e]=r,r.constructor){case Float32Array:kv(this,e,r);break;case Int32Array:Vv(this,e,r);break;case Uint32Array:zv(this,e,r);break;default:throw new Error("constant")}}getExtension(e){return tt(this.gl,e,this.extensions),this.extensions}_setWebGLDebugMetadata(e,r,i){e.luma=r;let o={props:i.spector,id:i.spector.id};e.__SPECTOR_Metadata=o}}});function jv(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?!0:Boolean(t&&typeof t.createVertexArray=="function")}var Mn,rd,Cn,Yb=E(()=>{F();vy();Ou();Nu();Mn=1,rd=class extends co{type="webgl";constructor(){super(),Te.defaultProps={...Te.defaultProps,...qa}}enforceWebGL2(e){Py(e)}isSupported(){return typeof WebGL2RenderingContext<"u"}isDeviceHandle(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:(typeof WebGLRenderingContext<"u"&&e instanceof WebGLRenderingContext&&x.warn("WebGL1 is not supported",e)(),!1)}async attach(e,r={}){let{WebGLDevice:i}=await Promise.resolve().then(()=>(Cc(),td));if(e instanceof i)return e;let o=i.getDeviceFromContext(e);if(o)return o;if(!jv(e))throw new Error("Invalid WebGL2RenderingContext");let n=r.createCanvasContext===!0?{}:r.createCanvasContext;return new i({...r,_handle:e,createCanvasContext:{canvas:e.canvas,autoResize:!1,...n}})}async create(e={}){let{WebGLDevice:r}=await Promise.resolve().then(()=>(Cc(),td)),i=[];(e.debugWebGL||e.debug)&&i.push(Dy()),e.debugSpectorJS&&i.push(Cy(e));let o=await Promise.allSettled(i);for(let n of o)n.status==="rejected"&&x.error(`Failed to initialize debug libraries ${n.reason}`)();try{let n=new r(e);x.groupCollapsed(Mn,`WebGLDevice ${n.id} created`)();let s=`${n._reused?"Reusing":"Created"} device with WebGL2 ${n.props.debug?"debug ":""}context: ${n.info.vendor}, ${n.info.renderer} for canvas: ${n.canvasContext.id}`;return x.probe(Mn,s)(),x.table(Mn,n.info)(),n}finally{x.groupEnd(Mn)(),x.info(Mn,"%cWebGL call tracing: luma.log.set('debug-webgl') ","color: white; background: blue; padding: 2px 6px; border-radius: 3px;")()}}};Cn=new rd});var Pc=E(()=>{Yb();Cc();cc()});var Q2={};Pt(Q2,{AmbientLight:()=>Ui,Attribute:()=>Kt,AttributeManager:()=>Kr,COORDINATE_SYSTEM:()=>k,CompositeLayer:()=>T0,Controller:()=>be,Deck:()=>Ic,DeckGL:()=>Gn,DeckRenderer:()=>Hr,DirectionalLight:()=>kt,FirstPersonController:()=>Gr,FirstPersonView:()=>A0,FirstPersonViewport:()=>qc,FlyToInterpolator:()=>Zn,Layer:()=>jc,LayerExtension:()=>M0,LayerManager:()=>jr,LightingEffect:()=>_r,LinearInterpolator:()=>ae,MapController:()=>Yt,MapView:()=>ja,OPERATION:()=>V_,OrbitController:()=>Qr,OrbitView:()=>S0,OrbitViewport:()=>Xc,OrthographicController:()=>Jr,OrthographicView:()=>w0,OrthographicViewport:()=>Kc,PointLight:()=>Wi,PostProcessEffect:()=>hn,TRANSITION_EVENTS:()=>gn,TerrainController:()=>Yn,Tesselator:()=>qn,TransitionInterpolator:()=>$t,UNIT:()=>pr,VERSION:()=>ha,View:()=>ye,Viewport:()=>Se,WebMercatorViewport:()=>yr,Widget:()=>xr,_CameraLight:()=>cn,_Component:()=>Ji,_ComponentState:()=>Zr,_GlobeController:()=>ei,_GlobeView:()=>v0,_GlobeViewport:()=>$i,_LayersPass:()=>Ke,_PickLayersPass:()=>Vt,_SunLight:()=>ln,_applyStyles:()=>xn,_compareProps:()=>Vc,_count:()=>zc,_deepEqual:()=>Z,_fillArray:()=>La,_flatten:()=>Tr,_memoize:()=>ke,_mergeShaders:()=>zn,_registerLoggers:()=>fa,_removeStyles:()=>Ya,assert:()=>Y,color:()=>iu,createIterable:()=>Gi,fp64LowPart:()=>Au,getShaderAssembler:()=>Ca,gouraudMaterial:()=>Eo,log:()=>L,phongMaterial:()=>wo,picking:()=>Tu,project:()=>gr,project32:()=>pu,shadow:()=>Fi});var xh={};Pt(xh,{Buffer:()=>I,BufferTransform:()=>$e,CubeGeometry:()=>No,Device:()=>Te,Framebuffer:()=>at,Geometry:()=>He,GroupNode:()=>sr,Model:()=>ve,ModelNode:()=>Oo,ScenegraphNode:()=>ft,SphereGeometry:()=>Io,Texture:()=>B,TextureTransform:()=>Mo,attachDevice:()=>kE,createDevice:()=>VE,enforceWebGL2:()=>zE,getSupportedAdapters:()=>FE,setDefaultDeviceProps:()=>UE,stats:()=>LE});F();F();var sx=1,ax=1,Mr=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:o=1,repeat:n=1}=e,s=sx++,a={time:0,delay:r,duration:i,rate:o,repeat:n};return this._setChannelTime(a,this.time),this.channels.set(s,a),s}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 o of r)this._setChannelTime(o,this.time);let i=this.animations.values();for(let o of i){let{animation:n,channel:s}=o;n.setTime(this.getTime(s))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(e,r){let i=ax++;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,o=e.duration*e.repeat;i>=o?e.time=e.duration*e.rate:(e.time=Math.max(0,i)%e.duration,e.time*=e.rate)}};F();function Lp(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 Fp(t){let e=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame:null;if(e){e.call(window,t);return}clearTimeout(t)}to();var cx=0,lx="Animation Loop",ff=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={...ff.defaultAnimationLoopProps,...e},e=this.props,!e.device)throw new Error("No device provided");this.stats=e.stats||new Ne({id:`animation-loop-${cx++}`}),this.sharedStats=Qt.stats.get(lx),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;if(!this._initialized){if(this._initialized=!0,await this._initDevice(),this._initialize(),!this._running)return null;await this.props.onInitialize(this._getAnimationProps())}return 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=Lp(this._animationFrame.bind(this)))}_cancelAnimationFrame(){this._animationFrameId!==null&&(Fp(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}},yi=ff;M(yi,"defaultAnimationLoopProps",{device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:e=>console.error(e),stats:void 0,autoResizeViewport:!1});F();function Cr(t,e){if(!t){let r=new Error(e||"shadertools: assertion failed.");throw Error.captureStackTrace?.(r,Cr),r}}var hf={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 kp(t){let e={};for(let[r,i]of Object.entries(t))e[r]=fx(i);return e}function fx(t){let e=Up(t);if(e!=="object")return{value:t,...hf[e],type:e};if(typeof t=="object")return t?t.type!==void 0?{...t,...hf[t.type],type:t.type}:t.value===void 0?{type:"object",value:t}:(e=Up(t.value),{...t,...hf[e],type:e}):{type:"object",value:null};throw new Error("props")}function Up(t){return Array.isArray(t)||ArrayBuffer.isView(t)?"array":typeof t}var Vp=`#ifdef MODULE_LOGDEPTH
20
20
  logdepth_adjustPosition(gl_Position);
21
21
  #endif
22
- `,Cp=`#ifdef MODULE_MATERIAL
22
+ `,zp=`#ifdef MODULE_MATERIAL
23
23
  fragColor = material_filterColor(fragColor);
24
24
  #endif
25
25
 
@@ -39,12 +39,10 @@ ${e}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,e),r.compileShader(thi
39
39
  #ifdef MODULE_LOGDEPTH
40
40
  logdepth_setFragDepth();
41
41
  #endif
42
- `;var ZT={vertex:Mp,fragment:Cp},Ip=/void\s+main\s*\([^)]*\)\s*\{\n?/,Op=/}\n?[^{}]*$/,of=[],hs="__LUMA_INJECT_DECLARATIONS__";function Np(t){let e={vertex:{},fragment:{}};for(let r in t){let i=t[r],s=qT(r);typeof i=="string"&&(i={order:0,injection:i}),e[s][r]=i}return e}function qT(t){let e=t.slice(0,2);switch(e){case"vs":return"vertex";case"fs":return"fragment";default:throw new Error(e)}}function us(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),of.length=n.length;for(let c=0,l=n.length;c<l;++c)of[c]=n[c].injection;let a=`${of.join(`
42
+ `;var hx={vertex:Vp,fragment:zp},Wp=/void\s+main\s*\([^)]*\)\s*\{\n?/,jp=/}\n?[^{}]*$/,uf=[],_o="__LUMA_INJECT_DECLARATIONS__";function $p(t){let e={vertex:{},fragment:{}};for(let r in t){let i=t[r],o=ux(r);typeof i=="string"&&(i={order:0,injection:i}),e[o][r]=i}return e}function ux(t){let e=t.slice(0,2);switch(e){case"vs":return"vertex";case"fs":return"fragment";default:throw new Error(e)}}function yo(t,e,r,i=!1){let o=e==="vertex";for(let n in r){let s=r[n];s.sort((c,l)=>c.order-l.order),uf.length=s.length;for(let c=0,l=s.length;c<l;++c)uf[c]=s[c].injection;let a=`${uf.join(`
43
43
  `)}
44
- `;switch(o){case"vs:#decl":s&&(t=t.replace(hs,a));break;case"vs:#main-start":s&&(t=t.replace(Ip,c=>c+a));break;case"vs:#main-end":s&&(t=t.replace(Op,c=>a+c));break;case"fs:#decl":s||(t=t.replace(hs,a));break;case"fs:#main-start":s||(t=t.replace(Ip,c=>c+a));break;case"fs:#main-end":s||(t=t.replace(Op,c=>a+c));break;default:t=t.replace(o,c=>c+a)}}return t=t.replace(hs,""),i&&(t=t.replace(/\}\s*$/,o=>o+ZT[e])),t}function Rr(t){t.map(e=>xn(e))}function xn(t){if(t.instance)return;Rr(t.dependencies||[]);let{propTypes:e={},deprecations:r=[],inject:i={}}=t,s={normalizedInjections:Np(i),parsedDeprecations:GT(r)};e&&(s.propValidators=vp(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 nf(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 GT(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 mi(t){Rr(t);let e={},r={};Dp({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 Rr(i),i}function Dp(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&&Dp({modules:o.dependencies,level:r+1,moduleMap:i,moduleDepth:s})}var QT=/^(?:uniform\s+)?(?:(?:lowp|mediump|highp)\s+)?[A-Za-z0-9_]+(?:<[^>]+>)?\s+([A-Za-z0-9_]+)(?:\s*\[[^\]]+\])?\s*;/,JT=/((?:layout\s*\([^)]*\)\s*)*)uniform\s+([A-Za-z_][A-Za-z0-9_]*)\s*\{([\s\S]*?)\}\s*([A-Za-z_][A-Za-z0-9_]*)?\s*;/g;function Bp(t){return`${t.name}Uniforms`}function ex(t,e){let r=e==="wgsl"?t.source:e==="vertex"?t.vs:t.fs;if(!r)return null;let i=Bp(t);return rx(r,e==="wgsl"?"wgsl":"glsl",i)}function tx(t,e){let r=Object.keys(t.uniformTypes||{});if(!r.length)return null;let i=ex(t,e);return i?{moduleName:t.name,uniformBlockName:Bp(t),stage:e,expectedUniformNames:r,actualUniformNames:i,matches:ox(r,i)}:null}function Fp(t,e,r={}){let i=tx(t,e);if(!i||i.matches)return i;let s=nx(i);return r.log?.error?.(s,i)(),r.throwOnError!==!1&&wr(!1,s),i}function Lp(t){let e=[],r=ax(t);for(let i of r.matchAll(JT)){let s=i[1]?.trim()||null;e.push({blockName:i[2],body:i[3],instanceName:i[4]||null,layoutQualifier:s,hasLayoutQualifier:Boolean(s),isStd140:Boolean(s&&/\blayout\s*\([^)]*\bstd140\b[^)]*\)/.exec(s))})}return e}function Up(t,e,r,i){let s=Lp(t).filter(n=>!n.isStd140),o=new Set;for(let n of s){if(o.has(n.blockName))continue;o.add(n.blockName);let a=i?.label?`${i.label} `:"",c=n.hasLayoutQualifier?`declares ${cx(n.layoutQualifier)} instead of layout(std140)`:"does not declare layout(std140)",l=`${a}${e} shader uniform block ${n.blockName} ${c}. luma.gl host-side shader block packing assumes explicit layout(std140) for GLSL uniform blocks. Add \`layout(std140)\` to the block declaration.`;r?.warn?.(l,n)()}return s}function rx(t,e,r){let i=e==="wgsl"?ix(t,r):sx(t,r);if(!i)return null;let s=[];for(let o of i.split(`
45
- `)){let n=o.replace(/\/\/.*$/,"").trim();if(!n||n.startsWith("#"))continue;let a=e==="wgsl"?n.match(/^([A-Za-z0-9_]+)\s*:/):n.match(QT);a&&s.push(a[1])}return s}function ix(t,e){let r=new RegExp(`\\bstruct\\s+${e}\\b`,"m").exec(t);if(!r)return null;let i=t.indexOf("{",r.index);if(i<0)return null;let s=0;for(let o=i;o<t.length;o++){let n=t[o];if(n==="{"){s++;continue}if(n==="}"&&(s--,s===0))return t.slice(i+1,o)}return null}function sx(t,e){return Lp(t).find(i=>i.blockName===e)?.body||null}function ox(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}function nx(t){return`${t.moduleName}: ${t.stage} shader uniform block ${t.uniformBlockName} does not match module.uniformTypes.
46
- Expected: ${t.expectedUniformNames.join(", ")}
47
- Actual: ${t.actualUniformNames.join(", ")}`}function ax(t){return t.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"")}function cx(t){return t.replace(/\s+/g," ").trim()}function kp(t){switch(t?.gpu.toLowerCase()){case"apple":return`#define APPLE_GPU
44
+ `;switch(n){case"vs:#decl":o&&(t=t.replace(_o,a));break;case"vs:#main-start":o&&(t=t.replace(Wp,c=>c+a));break;case"vs:#main-end":o&&(t=t.replace(jp,c=>a+c));break;case"fs:#decl":o||(t=t.replace(_o,a));break;case"fs:#main-start":o||(t=t.replace(Wp,c=>c+a));break;case"fs:#main-end":o||(t=t.replace(jp,c=>a+c));break;default:t=t.replace(n,c=>c+a)}}return t=t.replace(_o,""),i&&(t=t.replace(/\}\s*$/,n=>n+hx[e])),t}function Ir(t){t.map(e=>ws(e))}function ws(t){if(t.instance)return;Ir(t.dependencies||[]);let{propTypes:e={},deprecations:r=[],inject:i={}}=t,o={normalizedInjections:$p(i),parsedDeprecations:dx(r)};e&&(o.propValidators=kp(e)),t.instance=o;let n={};e&&(n=Object.entries(e).reduce((s,[a,c])=>{let l=c?.value;return l&&(s[a]=l),s},{})),t.defaultUniforms={...t.defaultUniforms,...n}}function df(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 dx(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 bi(t){Ir(t);let e={},r={};Hp({modules:t,level:0,moduleMap:e,moduleDepth:r});let i=Object.keys(r).sort((o,n)=>r[n]-r[o]).map(o=>e[o]);return Ir(i),i}function Hp(t){let{modules:e,level:r,moduleMap:i,moduleDepth:o}=t;if(r>=5)throw new Error("Possible loop in shader dependency graph");for(let n of e)i[n.name]=n,(o[n.name]===void 0||o[n.name]<r)&&(o[n.name]=r);for(let n of e)n.dependencies&&Hp({modules:n.dependencies,level:r+1,moduleMap:i,moduleDepth:o})}var px=/^(?:uniform\s+)?(?:(?:lowp|mediump|highp)\s+)?[A-Za-z0-9_]+(?:<[^>]+>)?\s+([A-Za-z0-9_]+)(?:\s*\[[^\]]+\])?\s*;/,gx=/((?:layout\s*\([^)]*\)\s*)*)uniform\s+([A-Za-z_][A-Za-z0-9_]*)\s*\{([\s\S]*?)\}\s*([A-Za-z_][A-Za-z0-9_]*)?\s*;/g;function Yp(t){return`${t.name}Uniforms`}function mx(t,e){let r=e==="wgsl"?t.source:e==="vertex"?t.vs:t.fs;if(!r)return null;let i=Yp(t);return yx(r,e==="wgsl"?"wgsl":"glsl",i)}function _x(t,e){let r=Object.keys(t.uniformTypes||{});if(!r.length)return null;let i=mx(t,e);return i?{moduleName:t.name,uniformBlockName:Yp(t),stage:e,expectedUniformNames:r,actualUniformNames:i,matches:xx(r,i)}:null}function Kp(t,e,r={}){let i=_x(t,e);if(!i||i.matches)return i;let o=Ax(i);return r.log?.error?.(o,i)(),r.throwOnError!==!1&&Cr(!1,o),i}function Zp(t){let e=[],r=Sx(t);for(let i of r.matchAll(gx)){let o=i[1]?.trim()||null;e.push({blockName:i[2],body:i[3],instanceName:i[4]||null,layoutQualifier:o,hasLayoutQualifier:Boolean(o),isStd140:Boolean(o&&/\blayout\s*\([^)]*\bstd140\b[^)]*\)/.exec(o))})}return e}function qp(t,e,r,i){let o=Zp(t).filter(s=>!s.isStd140),n=new Set;for(let s of o){if(n.has(s.blockName))continue;n.add(s.blockName);let a=i?.label?`${i.label} `:"",c=s.hasLayoutQualifier?`declares ${Ex(s.layoutQualifier)} instead of layout(std140)`:"does not declare layout(std140)",l=`${a}${e} shader uniform block ${s.blockName} ${c}. luma.gl host-side shader block packing assumes explicit layout(std140) for GLSL uniform blocks. Add \`layout(std140)\` to the block declaration.`;r?.warn?.(l,s)()}return o}function yx(t,e,r){let i=e==="wgsl"?bx(t,r):Tx(t,r);if(!i)return null;let o=[];for(let n of i.split(`
45
+ `)){let s=n.replace(/\/\/.*$/,"").trim();if(!s||s.startsWith("#"))continue;let a=e==="wgsl"?s.match(/^([A-Za-z0-9_]+)\s*:/):s.match(px);a&&o.push(a[1])}return o}function bx(t,e){let r=new RegExp(`\\bstruct\\s+${e}\\b`,"m").exec(t);if(!r)return null;let i=t.indexOf("{",r.index);if(i<0)return null;let o=0;for(let n=i;n<t.length;n++){let s=t[n];if(s==="{"){o++;continue}if(s==="}"&&(o--,o===0))return t.slice(i+1,n)}return null}function Tx(t,e){return Zp(t).find(i=>i.blockName===e)?.body||null}function xx(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}function Ax(t){let{expectedUniformNames:e,actualUniformNames:r}=t,i=e.filter(a=>!r.includes(a)),o=r.filter(a=>!e.includes(a)),n=[`Expected ${e.length} fields, found ${r.length}.`],s=wx(e,r);return s&&n.push(s),i.length&&n.push(`Missing from shader block (${i.length}): ${Xp(i)}.`),o.length&&n.push(`Unexpected in shader block (${o.length}): ${Xp(o)}.`),e.length<=12&&r.length<=12&&(i.length||o.length)&&(n.push(`Expected: ${e.join(", ")}.`),n.push(`Actual: ${r.join(", ")}.`)),`${t.moduleName}: ${t.stage} shader uniform block ${t.uniformBlockName} does not match module.uniformTypes. ${n.join(" ")}`}function Sx(t){return t.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"")}function Ex(t){return t.replace(/\s+/g," ").trim()}function wx(t,e){let r=Math.min(t.length,e.length);for(let i=0;i<r;i++)if(t[i]!==e[i])return`First mismatch at field ${i+1}: expected ${t[i]}, found ${e[i]}.`;return t.length>e.length?`Shader block ends after field ${e.length}; expected next field ${t[e.length]}.`:e.length>t.length?`Shader block has extra field ${e.length}: ${e[t.length]}.`:null}function Xp(t,e=8){if(t.length<=e)return t.join(", ");let r=t.length-e;return`${t.slice(0,e).join(", ")}, ... (${r} more)`}function Gp(t){switch(t?.gpu.toLowerCase()){case"apple":return`#define APPLE_GPU
48
46
  // Apple optimizes away the calculation necessary for emulated fp64
49
47
  #define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1
50
48
  #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
@@ -68,49 +66,51 @@ Actual: ${t.actualUniformNames.join(", ")}`}function ax(t){return t.replace(/\/\
68
66
  #define LUMA_FP32_TAN_PRECISION_WORKAROUND 1
69
67
  // If the GPU doesn't have full 32 bits precision, will causes overflow
70
68
  #define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1
71
- `}}function zp(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=Vp(t,lx),t;case"fragment":return t=Vp(t,fx),t;default:throw new Error(e)}}var Wp=[[/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/,`#version 300 es
72
- `],[/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g,"textureLod("],[/\btexture(2D|2DProj|Cube)(EXT)?\(/g,"texture("]],lx=[...Wp,[af("attribute"),"in $1"],[af("varying"),"out $1"]],fx=[...Wp,[af("varying"),"in $1"]];function Vp(t,e){for(let[r,i]of e)t=t.replace(r,i);return t}function af(t){return new RegExp(`\\b${t}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`,"g")}function cf(t,e){let r="";for(let i in t){let s=t[i];if(r+=`void ${s.signature} {
73
- `,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}
74
- `}s.footer&&(r+=` ${s.footer}`),r+=`}
75
- `}return r}function lf(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 jp(t,e){return{name:hx(t,e),language:"glsl",version:ux(t)}}function hx(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 ux(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=[/@binding\(\s*(\d+)\s*\)\s*@group\(\s*(\d+)\s*\)\s*var(?:<([^>]+)>)?\s+([A-Za-z_][A-Za-z0-9_]*)\s*:\s*([^;]+);/g,/@group\(\s*(\d+)\s*\)\s*@binding\(\s*(\d+)\s*\)\s*var(?:<([^>]+)>)?\s+([A-Za-z_][A-Za-z0-9_]*)\s*:\s*([^;]+);/g];function An(t,e=[]){let r=new Map;for(let s of e)r.set($p(s.name,s.group,s.location),s.moduleName);let i=[];for(let s of Hp){s.lastIndex=0;let o;for(;o=s.exec(t);){let n=s===Hp[0],a=Number(o[n?1:2]),c=Number(o[n?2:1]),l=o[3]?.trim(),f=o[4],h=o[5].trim(),u=r.get($p(f,c,a));i.push(dx({name:f,group:c,binding:a,owner:u?"module":"application",moduleName:u,accessDeclaration:l,resourceType:h}))}}return i.sort((s,o)=>s.group!==o.group?s.group-o.group:s.binding!==o.binding?s.binding-o.binding:s.name.localeCompare(o.name))}function dx(t){let e={name:t.name,group:t.group,binding:t.binding,owner:t.owner,kind:"unknown",moduleName:t.moduleName,resourceType:t.resourceType};if(t.accessDeclaration){let r=t.accessDeclaration.split(",").map(i=>i.trim());if(r[0]==="uniform")return{...e,kind:"uniform",access:"uniform"};if(r[0]==="storage"){let i=r[1]||"read_write";return{...e,kind:i==="read"?"read-only-storage":"storage",access:i}}}return t.resourceType==="sampler"||t.resourceType==="sampler_comparison"?{...e,kind:"sampler",samplerKind:t.resourceType==="sampler_comparison"?"comparison":"filtering"}:t.resourceType.startsWith("texture_storage_")?{...e,kind:"storage-texture",access:gx(t.resourceType),viewDimension:Xp(t.resourceType)}:t.resourceType.startsWith("texture_")?{...e,kind:"texture",viewDimension:Xp(t.resourceType),sampleType:px(t.resourceType),multisampled:t.resourceType.startsWith("texture_multisampled_")}:e}function $p(t,e,r){return`${e}:${r}:${t}`}function Xp(t){if(t.includes("cube_array"))return"cube-array";if(t.includes("2d_array"))return"2d-array";if(t.includes("cube"))return"cube";if(t.includes("3d"))return"3d";if(t.includes("2d"))return"2d";if(t.includes("1d"))return"1d"}function px(t){if(t.startsWith("texture_depth_"))return"depth";if(t.includes("<i32>"))return"sint";if(t.includes("<u32>"))return"uint";if(t.includes("<f32>"))return"float"}function gx(t){return/,\s*([A-Za-z_][A-Za-z0-9_]*)\s*>$/.exec(t)?.[1]}var Qp=`
76
-
77
- ${hs}
78
- `,Sn=[/@binding\(\s*(auto|\d+)\s*\)\s*@group\(\s*(\d+)\s*\)\s*(var(?:<[^>]+>)?\s+([A-Za-z_][A-Za-z0-9_]*))/g,/@group\(\s*(\d+)\s*\)\s*@binding\(\s*(auto|\d+)\s*\)\s*(var(?:<[^>]+>)?\s+([A-Za-z_][A-Za-z0-9_]*))/g],Yp=[/@binding\(\s*(\d+)\s*\)\s*@group\(\s*(\d+)\s*\)\s*(var(?:<[^>]+>)?\s+([A-Za-z_][A-Za-z0-9_]*))/g,/@group\(\s*(\d+)\s*\)\s*@binding\(\s*(\d+)\s*\)\s*(var(?:<[^>]+>)?\s+([A-Za-z_][A-Za-z0-9_]*))/g],ds=100,mx=`precision highp float;
79
- `;function Jp(t){let e=mi(t.modules||[]),{source:r,bindingAssignments:i}=_x(t.platformInfo,{...t,source:t.source,stage:"vertex",modules:e});return{source:r,getUniforms:tg(e),bindingAssignments:i,bindingTable:An(r,i)}}function eg(t){let{vs:e,fs:r}=t,i=mi(t.modules||[]);return{vs:Kp(t.platformInfo,{...t,source:e,stage:"vertex",modules:i}),fs:Kp(t.platformInfo,{...t,source:r,stage:"fragment",modules:i}),getUniforms:tg(i)}}function _x(t,e){let{source:r,stage:i,modules:s,hookFunctions:o=[],inject:n={},log:a}=e;wr(typeof r=="string","shader source must be a string");let c=r,l="",f=lf(o),h={},u={},d={};for(let b in n){let y=typeof n[b]=="string"?{injection:n[b],order:0}:n[b],T=/^(v|f)s:(#)?([\w-]+)$/.exec(b);if(T){let S=T[2],A=T[3];S?A==="decl"?u[b]=[y]:d[b]=[y]:h[b]=[y]}else d[b]=[y]}let p=s,g=bx(c),m=Ax(p,e._bindingRegistry,g),_=[];for(let b of p){a&&nf(b,c,a);let y=Tx(rg(b,"wgsl",a),b,{usedBindingsByGroup:g,bindingRegistry:e._bindingRegistry,reservedBindingKeysByGroup:m});_.push(...y.bindingAssignments);let T=y.source;l+=T;let S=b.injections?.[i]||{};for(let A in S){let w=/^(v|f)s:#([\w-]+)$/.exec(A);if(w){let R=w[2]==="decl"?u:d;R[A]=R[A]||[],R[A].push(S[A])}else h[A]=h[A]||[],h[A].push(S[A])}}return l+=Qp,l=us(l,i,u),l+=cf(f[i],h),l+=Px(_),l+=c,l=us(l,i,d),Rx(l),{source:l,bindingAssignments:_}}function Kp(t,e){let{source:r,stage:i,language:s="glsl",modules:o,defines:n={},hookFunctions:a=[],inject:c={},prologue:l=!0,log:f}=e;wr(typeof r=="string","shader source must be a string");let h=s==="glsl"?jp(r).version:-1,u=t.shaderLanguageVersion,d=h===100?"#version 100":"#version 300 es",g=r.split(`
69
+ `}}function Jp(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=Qp(t,Rx),t;case"fragment":return t=Qp(t,Px),t;default:throw new Error(e)}}var eg=[[/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/,`#version 300 es
70
+ `],[/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g,"textureLod("],[/\btexture(2D|2DProj|Cube)(EXT)?\(/g,"texture("]],Rx=[...eg,[pf("attribute"),"in $1"],[pf("varying"),"out $1"]],Px=[...eg,[pf("varying"),"in $1"]];function Qp(t,e){for(let[r,i]of e)t=t.replace(r,i);return t}function pf(t){return new RegExp(`\\b${t}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`,"g")}function gf(t,e){let r="";for(let i in t){let o=t[i];if(r+=`void ${o.signature} {
71
+ `,o.header&&(r+=` ${o.header}`),e[i]){let n=e[i];n.sort((s,a)=>s.order-a.order);for(let s of n)r+=` ${s.injection}
72
+ `}o.footer&&(r+=` ${o.footer}`),r+=`}
73
+ `}return r}function mf(t){let e={vertex:{},fragment:{}};for(let r of t){let i,o;typeof r!="string"?(i=r,o=i.hook):(i={},o=r),o=o.trim();let[n,s]=o.split(":"),a=o.replace(/\(.+/,""),c=Object.assign(i,{signature:s});switch(n){case"vs":e.vertex[a]=c;break;case"fs":e.fragment[a]=c;break;default:throw new Error(n)}}return e}function tg(t,e){return{name:vx(t,e),language:"glsl",version:Mx(t)}}function vx(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 Mx(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 Re="(?:var<\\s*(uniform|storage(?:\\s*,\\s*[A-Za-z_][A-Za-z0-9_]*)?)\\s*>|var)\\s+([A-Za-z_][A-Za-z0-9_]*)",Le="\\s*",Ti=[new RegExp(`@binding\\(\\s*(auto|\\d+)\\s*\\)${Le}@group\\(\\s*(\\d+)\\s*\\)${Le}${Re}`,"g"),new RegExp(`@group\\(\\s*(\\d+)\\s*\\)${Le}@binding\\(\\s*(auto|\\d+)\\s*\\)${Le}${Re}`,"g")],Rs=[new RegExp(`@binding\\(\\s*(auto|\\d+)\\s*\\)${Le}@group\\(\\s*(\\d+)\\s*\\)${Le}${Re}`,"g"),new RegExp(`@group\\(\\s*(\\d+)\\s*\\)${Le}@binding\\(\\s*(auto|\\d+)\\s*\\)${Le}${Re}`,"g")],rg=[new RegExp(`@binding\\(\\s*(\\d+)\\s*\\)${Le}@group\\(\\s*(\\d+)\\s*\\)${Le}${Re}`,"g"),new RegExp(`@group\\(\\s*(\\d+)\\s*\\)${Le}@binding\\(\\s*(\\d+)\\s*\\)${Le}${Re}`,"g")],Cx=[new RegExp(`@binding\\(\\s*(auto)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)\\s*${Re}`,"g"),new RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(auto)\\s*\\)\\s*${Re}`,"g"),new RegExp(`@binding\\(\\s*(auto)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)(?:[\\s\\n\\r]*@[A-Za-z_][^\\n\\r]*)*[\\s\\n\\r]*${Re}`,"g"),new RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(auto)\\s*\\)(?:[\\s\\n\\r]*@[A-Za-z_][^\\n\\r]*)*[\\s\\n\\r]*${Re}`,"g")];function Ps(t){let e=t.split(""),r=0,i=0,o=!1,n=!1,s=!1;for(;r<t.length;){let a=t[r],c=t[r+1];if(n){s?s=!1:a==="\\"?s=!0:a==='"'&&(n=!1),r++;continue}if(o){a===`
74
+ `||a==="\r"?o=!1:e[r]=" ",r++;continue}if(i>0){if(a==="/"&&c==="*"){e[r]=" ",e[r+1]=" ",i++,r+=2;continue}if(a==="*"&&c==="/"){e[r]=" ",e[r+1]=" ",i--,r+=2;continue}a!==`
75
+ `&&a!=="\r"&&(e[r]=" "),r++;continue}if(a==='"'){n=!0,r++;continue}if(a==="/"&&c==="/"){e[r]=" ",e[r+1]=" ",o=!0,r+=2;continue}if(a==="/"&&c==="*"){e[r]=" ",e[r+1]=" ",i=1,r+=2;continue}r++}return e.join("")}function Or(t,e){let r=Ps(t),i=[];for(let o of e){o.lastIndex=0;let n;for(n=o.exec(r);n;){let s=o===e[0],a=n.index,c=n[0].length;i.push({match:t.slice(a,a+c),index:a,length:c,bindingToken:n[s?1:2],groupToken:n[s?2:1],accessDeclaration:n[3]?.trim(),name:n[4]}),n=o.exec(r)}}return i.sort((o,n)=>o.index-n.index)}function _f(t,e,r){let i=Or(t,e);if(!i.length)return t;let o="",n=0;for(let s of i)o+=t.slice(n,s.index),o+=r(s),n=s.index+s.length;return o+=t.slice(n),o}function yf(t){return/@binding\(\s*auto\s*\)/.test(Ps(t))}function ig(t,e){return Or(t,e===Ti||e===Rs?Cx:e).find(i=>i.bindingToken==="auto")}var og=[new RegExp(`@binding\\(\\s*(\\d+)\\s*\\)\\s*@group\\(\\s*(\\d+)\\s*\\)\\s*${Re}\\s*:\\s*([^;]+);`,"g"),new RegExp(`@group\\(\\s*(\\d+)\\s*\\)\\s*@binding\\(\\s*(\\d+)\\s*\\)\\s*${Re}\\s*:\\s*([^;]+);`,"g")];function vs(t,e=[]){let r=Ps(t),i=new Map;for(let n of e)i.set(ng(n.name,n.group,n.location),n.moduleName);let o=[];for(let n of og){n.lastIndex=0;let s;for(s=n.exec(r);s;){let a=n===og[0],c=Number(s[a?1:2]),l=Number(s[a?2:1]),f=s[3]?.trim(),h=s[4],u=s[5].trim(),d=i.get(ng(h,l,c));o.push(Ix({name:h,group:l,binding:c,owner:d?"module":"application",moduleName:d,accessDeclaration:f,resourceType:u})),s=n.exec(r)}}return o.sort((n,s)=>n.group!==s.group?n.group-s.group:n.binding!==s.binding?n.binding-s.binding:n.name.localeCompare(s.name))}function Ix(t){let e={name:t.name,group:t.group,binding:t.binding,owner:t.owner,kind:"unknown",moduleName:t.moduleName,resourceType:t.resourceType};if(t.accessDeclaration){let r=t.accessDeclaration.split(",").map(i=>i.trim());if(r[0]==="uniform")return{...e,kind:"uniform",access:"uniform"};if(r[0]==="storage"){let i=r[1]||"read_write";return{...e,kind:i==="read"?"read-only-storage":"storage",access:i}}}return t.resourceType==="sampler"||t.resourceType==="sampler_comparison"?{...e,kind:"sampler",samplerKind:t.resourceType==="sampler_comparison"?"comparison":"filtering"}:t.resourceType.startsWith("texture_storage_")?{...e,kind:"storage-texture",access:Nx(t.resourceType),viewDimension:sg(t.resourceType)}:t.resourceType.startsWith("texture_")?{...e,kind:"texture",viewDimension:sg(t.resourceType),sampleType:Ox(t.resourceType),multisampled:t.resourceType.startsWith("texture_multisampled_")}:e}function ng(t,e,r){return`${e}:${r}:${t}`}function sg(t){if(t.includes("cube_array"))return"cube-array";if(t.includes("2d_array"))return"2d-array";if(t.includes("cube"))return"cube";if(t.includes("3d"))return"3d";if(t.includes("2d"))return"2d";if(t.includes("1d"))return"1d"}function Ox(t){if(t.startsWith("texture_depth_"))return"depth";if(t.includes("<i32>"))return"sint";if(t.includes("<u32>"))return"uint";if(t.includes("<f32>"))return"float"}function Nx(t){return/,\s*([A-Za-z_][A-Za-z0-9_]*)\s*>$/.exec(t)?.[1]}var bf=`
76
+
77
+ ${_o}
78
+ `,bo=100,Dx=`precision highp float;
79
+ `;function fg(t){let e=bi(t.modules||[]),{source:r,bindingAssignments:i}=Bx(t.platformInfo,{...t,source:t.source,stage:"vertex",modules:e});return{source:r,getUniforms:ug(e),bindingAssignments:i,bindingTable:vs(r,i)}}function hg(t){let{vs:e,fs:r}=t,i=bi(t.modules||[]);return{vs:ag(t.platformInfo,{...t,source:e,stage:"vertex",modules:i}),fs:ag(t.platformInfo,{...t,source:r,stage:"fragment",modules:i}),getUniforms:ug(i)}}function Bx(t,e){let{source:r,stage:i,modules:o,hookFunctions:n=[],inject:s={},log:a}=e;Cr(typeof r=="string","shader source must be a string");let c=r,l="",f=mf(n),h={},u={},d={};for(let y in s){let T=typeof s[y]=="string"?{injection:s[y],order:0}:s[y],S=/^(v|f)s:(#)?([\w-]+)$/.exec(y);if(S){let A=S[2],w=S[3];A?w==="decl"?u[y]=[T]:d[y]=[T]:h[y]=[T]}else d[y]=[T]}let p=o,g=Ux(c),m=Fx(g.source),_=Wx(p,e._bindingRegistry,m),b=[];for(let y of p){a&&df(y,c,a);let T=kx(dg(y,"wgsl",a),y,{usedBindingsByGroup:m,bindingRegistry:e._bindingRegistry,reservedBindingKeysByGroup:_});b.push(...T.bindingAssignments);let S=T.source;l+=S;let A=y.injections?.[i]||{};for(let w in A){let P=/^(v|f)s:#([\w-]+)$/.exec(w);if(P){let v=P[2]==="decl"?u:d;v[w]=v[w]||[],v[w].push(A[w])}else h[w]=h[w]||[],h[w].push(A[w])}}return l+=bf,l=yo(l,i,u),l+=gf(f[i],h),l+=Yx(b),l+=g.source,l=yo(l,i,d),Xx(l),{source:l,bindingAssignments:b}}function ag(t,e){let{source:r,stage:i,language:o="glsl",modules:n,defines:s={},hookFunctions:a=[],inject:c={},prologue:l=!0,log:f}=e;Cr(typeof r=="string","shader source must be a string");let h=o==="glsl"?tg(r).version:-1,u=t.shaderLanguageVersion,d=h===100?"#version 100":"#version 300 es",g=r.split(`
80
80
  `).slice(1).join(`
81
- `),m={};o.forEach(A=>{Object.assign(m,A.defines)}),Object.assign(m,n);let _="";switch(s){case"wgsl":break;case"glsl":_=l?`${d}
81
+ `),m={};n.forEach(A=>{Object.assign(m,A.defines)}),Object.assign(m,s);let _="";switch(o){case"wgsl":break;case"glsl":_=l?`${d}
82
82
 
83
83
  // ----- PROLOGUE -------------------------
84
84
  ${`#define SHADER_TYPE_${i.toUpperCase()}`}
85
85
 
86
- ${kp(t)}
87
- ${i==="fragment"?mx:""}
86
+ ${Gp(t)}
87
+ ${i==="fragment"?Dx:""}
88
88
 
89
89
  // ----- APPLICATION DEFINES -------------------------
90
90
 
91
- ${yx(m)}
91
+ ${Lx(m)}
92
92
 
93
93
  `:`${d}
94
- `;break}let b=lf(a),y={},T={},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"?T[A]=[w]:S[A]=[w]:y[A]=[w]}else S[A]=[w]}for(let A of o){f&&nf(A,g,f);let w=rg(A,i,f);_+=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"?T:S;C[R]=C[R]||[],C[R].push(v[R])}else y[R]=y[R]||[],y[R].push(v[R])}}return _+="// ----- MAIN SHADER SOURCE -------------------------",_+=Qp,_=us(_,i,T),_+=cf(b[i],y),_+=g,_=us(_,i,S),s==="glsl"&&h!==u&&(_=zp(_,i)),s==="glsl"&&Up(_,i,f),_.trim()}function tg(t){return function(r){let i={};for(let s of t){let o=s.getUniforms?.(r,i);Object.assign(i,o)}return i}}function yx(t={}){let e="";for(let r in t){let i=t[r];(i||Number.isFinite(i))&&(e+=`#define ${r.toUpperCase()} ${t[r]}
95
- `)}return e}function rg(t,e,r){let i;switch(e){case"vertex":i=t.vs||"";break;case"fragment":i=t.fs||"";break;case"wgsl":i=t.source||"";break;default:wr(!1)}if(!t.name)throw new Error("Shader module must have a name");Fp(t,e,{log:r});let s=t.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),o=`// ----- MODULE ${t.name} ---------------
94
+ `;break}let b=mf(a),y={},T={},S={};for(let A in c){let w=typeof c[A]=="string"?{injection:c[A],order:0}:c[A],P=/^(v|f)s:(#)?([\w-]+)$/.exec(A);if(P){let R=P[2],v=P[3];R?v==="decl"?T[A]=[w]:S[A]=[w]:y[A]=[w]}else S[A]=[w]}for(let A of n){f&&df(A,g,f);let w=dg(A,i,f);_+=w;let P=A.instance?.normalizedInjections[i]||{};for(let R in P){let v=/^(v|f)s:#([\w-]+)$/.exec(R);if(v){let C=v[2]==="decl"?T:S;C[R]=C[R]||[],C[R].push(P[R])}else y[R]=y[R]||[],y[R].push(P[R])}}return _+="// ----- MAIN SHADER SOURCE -------------------------",_+=bf,_=yo(_,i,T),_+=gf(b[i],y),_+=g,_=yo(_,i,S),o==="glsl"&&h!==u&&(_=Jp(_,i)),o==="glsl"&&qp(_,i,f),_.trim()}function ug(t){return function(r){let i={};for(let o of t){let n=o.getUniforms?.(r,i);Object.assign(i,n)}return i}}function Lx(t={}){let e="";for(let r in t){let i=t[r];(i||Number.isFinite(i))&&(e+=`#define ${r.toUpperCase()} ${t[r]}
95
+ `)}return e}function dg(t,e,r){let i;switch(e){case"vertex":i=t.vs||"";break;case"fragment":i=t.fs||"";break;case"wgsl":i=t.source||"";break;default:Cr(!1)}if(!t.name)throw new Error("Shader module must have a name");Kp(t,e,{log:r});let o=t.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),n=`// ----- MODULE ${t.name} ---------------
96
96
 
97
- `;return e!=="wgsl"&&(o+=`#define MODULE_${s}
98
- `),o+=`${i}
99
- `,o}function bx(t){let e=new Map;for(let r of Yp){r.lastIndex=0;let i;for(;i=r.exec(t);){let s=r===Yp[0],o=Number(i[s?1:2]),n=Number(i[s?2:1]),a=i[4];wx(n,o,a),En(e,n,o,`application binding "${a}"`)}}return e}function Tx(t,e,r){let i=[],s={sawSupportedBindingDeclaration:!1,nextHintedBindingLocation:typeof e.firstBindingSlot=="number"?e.firstBindingSlot:null},o=Zp(t,Sn[0],{isBindingFirst:!0,module:e,context:r,bindingAssignments:i,relocationState:s});if(o=Zp(o,Sn[1],{isBindingFirst:!1,module:e,context:r,bindingAssignments:i,relocationState:s}),t.includes("@binding(auto)")&&!s.sawSupportedBindingDeclaration)throw new Error(`Unsupported @binding(auto) declaration form in module "${e.name}". Use "@group(N) @binding(auto) var ..." or "@binding(auto) @group(N) var ..." on a single line.`);return{source:o,bindingAssignments:i}}function Zp(t,e,r){return t.replace(e,(...i)=>xx(i,r))}function xx(t,e){let{isBindingFirst:r,module:i,context:s,bindingAssignments:o,relocationState:n}=e;n.sawSupportedBindingDeclaration=!0;let a=t[0],c=t[r?1:2],l=t[r?2:1],f=t[4],h=Number(l);if(c==="auto"){let d=ig(h,i.name,f),p=s.bindingRegistry?.get(d),g=p!==void 0?p:n.nextHintedBindingLocation===null?Gp(h,s.usedBindingsByGroup):Gp(h,s.usedBindingsByGroup,n.nextHintedBindingLocation);return qp(i.name,h,g,f),p!==void 0&&Sx(s.reservedBindingKeysByGroup,h,g,d)?(o.push({moduleName:i.name,name:f,group:h,location:g}),a.replace(/@binding\(\s*auto\s*\)/,`@binding(${g})`)):(En(s.usedBindingsByGroup,h,g,`module "${i.name}" binding "${f}"`),s.bindingRegistry?.set(d,g),o.push({moduleName:i.name,name:f,group:h,location:g}),n.nextHintedBindingLocation!==null&&p===void 0&&(n.nextHintedBindingLocation=g+1),a.replace(/@binding\(\s*auto\s*\)/,`@binding(${g})`))}let u=Number(c);return qp(i.name,h,u,f),En(s.usedBindingsByGroup,h,u,`module "${i.name}" binding "${f}"`),o.push({moduleName:i.name,name:f,group:h,location:u}),a}function Ax(t,e,r){let i=new Map;if(!e)return i;for(let s of t)for(let o of Ex(s)){let n=ig(o.group,s.name,o.name),a=e.get(n);if(a!==void 0){let c=i.get(o.group)||new Map,l=c.get(a);if(l&&l!==n)throw new Error(`Duplicate WGSL binding reservation for modules "${l}" and "${n}": group ${o.group}, binding ${a}.`);En(r,o.group,a,`registered module binding "${n}"`),c.set(a,n),i.set(o.group,c)}}return i}function Sx(t,e,r,i){let s=t.get(e);if(!s)return!1;let o=s.get(r);if(!o)return!1;if(o!==i)throw new Error(`Registered module binding "${i}" collided with "${o}": group ${e}, binding ${r}.`);return!0}function Ex(t){let e=[],r=t.source||"";for(let i of Sn){i.lastIndex=0;let s;for(;s=i.exec(r);){let o=i===Sn[0];e.push({name:s[4],group:Number(s[o?2:1])})}}return e}function wx(t,e,r){if(t===0&&e>=ds)throw new Error(`Application binding "${r}" in group 0 uses reserved binding ${e}. Application-owned explicit group-0 bindings must stay below ${ds}.`)}function qp(t,e,r,i){if(e===0&&r<ds)throw new Error(`Module "${t}" binding "${i}" in group 0 uses reserved application binding ${r}. Module-owned explicit group-0 bindings must be ${ds} or higher.`)}function En(t,e,r,i){let s=t.get(e)||new Set;if(s.has(r))throw new Error(`Duplicate WGSL binding assignment for ${i}: group ${e}, binding ${r}.`);s.add(r),t.set(e,s)}function Gp(t,e,r){let i=e.get(t)||new Set,s=r??(t===0?ds:i.size>0?Math.max(...i)+1:0);for(;i.has(s);)s++;return s}function Rx(t){if(/@binding\(\s*auto\s*\)/.test(t))throw new Error("Unresolved @binding(auto) remained in assembled WGSL source.")}function Px(t){if(t.length===0)return"";let e=`// ----- MODULE WGSL BINDING ASSIGNMENTS ---------------
97
+ `;return e!=="wgsl"&&(n+=`#define MODULE_${o}
98
+ `),n+=`${i}
99
+ `,n}function Fx(t){let e=new Map;for(let r of Or(t,rg)){let i=Number(r.bindingToken),o=Number(r.groupToken);Tf(o,i,r.name),xi(e,o,i,`application binding "${r.name}"`)}return e}function Ux(t){let e=Or(t,Rs),r=new Map;for(let n of e){if(n.bindingToken==="auto")continue;let s=Number(n.bindingToken),a=Number(n.groupToken);Tf(a,s,n.name),xi(r,a,s,`application binding "${n.name}"`)}let i={sawSupportedBindingDeclaration:e.length>0},o=_f(t,Rs,n=>zx(n,r,i));if(yf(t)&&!i.sawSupportedBindingDeclaration)throw new Error('Unsupported @binding(auto) declaration form in application WGSL. Use adjacent "@group(N)" and "@binding(auto)" decorators followed by a bindable "var" declaration.');return{source:o}}function kx(t,e,r){let i=[],n={sawSupportedBindingDeclaration:Or(t,Ti).length>0,nextHintedBindingLocation:typeof e.firstBindingSlot=="number"?e.firstBindingSlot:null},s=_f(t,Ti,a=>Vx(a,{module:e,context:r,bindingAssignments:i,relocationState:n}));if(yf(t)&&!n.sawSupportedBindingDeclaration)throw new Error(`Unsupported @binding(auto) declaration form in module "${e.name}". Use adjacent "@group(N)" and "@binding(auto)" decorators followed by a bindable "var" declaration.`);return{source:s,bindingAssignments:i}}function Vx(t,e){let{module:r,context:i,bindingAssignments:o,relocationState:n}=e,{match:s,bindingToken:a,groupToken:c,name:l}=t,f=Number(c);if(a==="auto"){let u=pg(f,r.name,l),d=i.bindingRegistry?.get(u),p=d!==void 0?d:n.nextHintedBindingLocation===null?lg(f,i.usedBindingsByGroup):lg(f,i.usedBindingsByGroup,n.nextHintedBindingLocation);return cg(r.name,f,p,l),d!==void 0&&jx(i.reservedBindingKeysByGroup,f,p,u)?(o.push({moduleName:r.name,name:l,group:f,location:p}),s.replace(/@binding\(\s*auto\s*\)/,`@binding(${p})`)):(xi(i.usedBindingsByGroup,f,p,`module "${r.name}" binding "${l}"`),i.bindingRegistry?.set(u,p),o.push({moduleName:r.name,name:l,group:f,location:p}),n.nextHintedBindingLocation!==null&&d===void 0&&(n.nextHintedBindingLocation=p+1),s.replace(/@binding\(\s*auto\s*\)/,`@binding(${p})`))}let h=Number(a);return cg(r.name,f,h,l),xi(i.usedBindingsByGroup,f,h,`module "${r.name}" binding "${l}"`),o.push({moduleName:r.name,name:l,group:f,location:h}),s}function zx(t,e,r){let{match:i,bindingToken:o,groupToken:n,name:s}=t,a=Number(n);if(o==="auto"){let c=Hx(a,e);return Tf(a,c,s),xi(e,a,c,`application binding "${s}"`),i.replace(/@binding\(\s*auto\s*\)/,`@binding(${c})`)}return r.sawSupportedBindingDeclaration=!0,i}function Wx(t,e,r){let i=new Map;if(!e)return i;for(let o of t)for(let n of $x(o)){let s=pg(n.group,o.name,n.name),a=e.get(s);if(a!==void 0){let c=i.get(n.group)||new Map,l=c.get(a);if(l&&l!==s)throw new Error(`Duplicate WGSL binding reservation for modules "${l}" and "${s}": group ${n.group}, binding ${a}.`);xi(r,n.group,a,`registered module binding "${s}"`),c.set(a,s),i.set(n.group,c)}}return i}function jx(t,e,r,i){let o=t.get(e);if(!o)return!1;let n=o.get(r);if(!n)return!1;if(n!==i)throw new Error(`Registered module binding "${i}" collided with "${n}": group ${e}, binding ${r}.`);return!0}function $x(t){let e=[],r=t.source||"";for(let i of Or(r,Ti))e.push({name:i.name,group:Number(i.groupToken)});return e}function Tf(t,e,r){if(t===0&&e>=bo)throw new Error(`Application binding "${r}" in group 0 uses reserved binding ${e}. Application-owned explicit group-0 bindings must stay below ${bo}.`)}function cg(t,e,r,i){if(e===0&&r<bo)throw new Error(`Module "${t}" binding "${i}" in group 0 uses reserved application binding ${r}. Module-owned explicit group-0 bindings must be ${bo} or higher.`)}function xi(t,e,r,i){let o=t.get(e)||new Set;if(o.has(r))throw new Error(`Duplicate WGSL binding assignment for ${i}: group ${e}, binding ${r}.`);o.add(r),t.set(e,o)}function lg(t,e,r){let i=e.get(t)||new Set,o=r??(t===0?bo:i.size>0?Math.max(...i)+1:0);for(;i.has(o);)o++;return o}function Hx(t,e){let r=e.get(t)||new Set,i=0;for(;r.has(i);)i++;return i}function Xx(t){let e=ig(t,Ti);if(!e)return;let r=Kx(t,e.index);throw r?new Error(`Unresolved @binding(auto) for module "${r}" binding "${e.name}" remained in assembled WGSL source.`):Zx(t,e.index)?new Error(`Unresolved @binding(auto) for application binding "${e.name}" remained in assembled WGSL source.`):new Error(`Unresolved @binding(auto) remained in assembled WGSL source near "${qx(e.match)}".`)}function Yx(t){if(t.length===0)return"";let e=`// ----- MODULE WGSL BINDING ASSIGNMENTS ---------------
100
100
  `;for(let r of t)e+=`// ${r.moduleName}.${r.name} -> @group(${r.group}) @binding(${r.location})
101
101
  `;return e+=`
102
- `,e}function ig(t,e,r){return`${t}:${e}:${r}`}var ff="([a-zA-Z_][a-zA-Z0-9_]*)",vx=new RegExp(`^\\s*\\#\\s*ifdef\\s*${ff}\\s*$`),Mx=new RegExp(`^\\s*\\#\\s*ifndef\\s*${ff}\\s*(?:\\/\\/.*)?$`),Cx=/^\s*\#\s*else\s*(?:\/\/.*)?$/,Ix=/^\s*\#\s*endif\s*$/,Ox=new RegExp(`^\\s*\\#\\s*ifdef\\s*${ff}\\s*(?:\\/\\/.*)?$`),Nx=/^\s*\#\s*endif\s*(?:\/\/.*)?$/;function sg(t,e){let r=t.split(`
103
- `),i=[],s=[],o=!0;for(let n of r){let a=n.match(Ox)||n.match(vx),c=n.match(Mx),l=n.match(Cx),f=n.match(Nx)||n.match(Ix);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(`
104
- `)}var _i=class{_hookFunctions=[];_defaultModules=[];_wgslBindingRegistry=new Map;static getDefaultShaderAssembler(){return _i.defaultShaderAssembler=_i.defaultShaderAssembler||new _i,_i.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,bindingAssignments:n}=Jp({...e,source:e.source,_bindingRegistry:this._wgslBindingRegistry,modules:r,hookFunctions:i}),a={...r.reduce((l,f)=>(Object.assign(l,f.defines),l),{}),...e.defines},c=e.platformInfo.shaderLanguage==="wgsl"?sg(s,{defines:a}):s;return{source:c,getUniforms:o,modules:r,bindingAssignments:n,bindingTable:An(c,n)}}assembleGLSLShaderPair(e){let r=this._getModuleList(e.modules),i=this._hookFunctions;return{...eg({...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,Rr(r),r}},Jt=_i;P(Jt,"defaultShaderAssembler");var Dx=`out vec4 transform_output;
102
+ `,e}function pg(t,e,r){return`${t}:${e}:${r}`}function Kx(t,e){let r=/^\/\/ ----- MODULE ([^\n]+) ---------------$/gm,i,o;for(o=r.exec(t);o&&o.index<=e;)i=o[1],o=r.exec(t);return i}function Zx(t,e){let r=t.indexOf(bf);return r>=0?e>r:!0}function qx(t){return t.replace(/\s+/g," ").trim()}var xf="([a-zA-Z_][a-zA-Z0-9_]*)",Gx=new RegExp(`^\\s*\\#\\s*ifdef\\s*${xf}\\s*$`),Qx=new RegExp(`^\\s*\\#\\s*ifndef\\s*${xf}\\s*(?:\\/\\/.*)?$`),Jx=/^\s*\#\s*else\s*(?:\/\/.*)?$/,eA=/^\s*\#\s*endif\s*$/,tA=new RegExp(`^\\s*\\#\\s*ifdef\\s*${xf}\\s*(?:\\/\\/.*)?$`),rA=/^\s*\#\s*endif\s*(?:\/\/.*)?$/;function gg(t,e){let r=t.split(`
103
+ `),i=[],o=[],n=!0;for(let s of r){let a=s.match(tA)||s.match(Gx),c=s.match(Qx),l=s.match(Jx),f=s.match(rA)||s.match(eA);if(a||c){let h=(a||c)?.[1],u=Boolean(e?.defines?.[h]),d=a?u:!u,p=n&&d;o.push({parentActive:n,branchTaken:d,active:p}),n=p}else if(l){let h=o[o.length-1];if(!h)throw new Error("Encountered #else without matching #ifdef or #ifndef");h.active=h.parentActive&&!h.branchTaken,h.branchTaken=!0,n=h.active}else f?(o.pop(),n=o.length?o[o.length-1].active:!0):n&&i.push(s)}if(o.length>0)throw new Error("Unterminated conditional block in shader source");return i.join(`
104
+ `)}var Ai=class{_hookFunctions=[];_defaultModules=[];_wgslBindingRegistry=new Map;static getDefaultShaderAssembler(){return Ai.defaultShaderAssembler=Ai.defaultShaderAssembler||new Ai,Ai.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:o,getUniforms:n,bindingAssignments:s}=fg({...e,source:e.source,_bindingRegistry:this._wgslBindingRegistry,modules:r,hookFunctions:i}),a={...r.reduce((l,f)=>(Object.assign(l,f.defines),l),{}),...e.defines},c=e.platformInfo.shaderLanguage==="wgsl"?gg(o,{defines:a}):o;return{source:c,getUniforms:n,modules:r,bindingAssignments:s,bindingTable:vs(c,s)}}assembleGLSLShaderPair(e){let r=this._getModuleList(e.modules),i=this._hookFunctions;return{...hg({...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={},o=0;for(let n=0,s=this._defaultModules.length;n<s;++n){let a=this._defaultModules[n],c=a.name;r[o++]=a,i[c]=!0}for(let n=0,s=e.length;n<s;++n){let a=e[n],c=a.name;i[c]||(r[o++]=a,i[c]=!0)}return r.length=o,Ir(r),r}},rr=Ai;M(rr,"defaultShaderAssembler");var iA=`out vec4 transform_output;
105
105
  void main() {
106
106
  transform_output = vec4(0);
107
- }`,Bx=`#version 300 es
108
- ${Dx}`;function ps(t){let{input:e,inputChannels:r,output:i}=t||{};if(!e)return Bx;if(!r)throw new Error("inputChannels");let s=Fx(r),o=og(e,r);return`#version 300 es
109
- in ${s} ${e};
107
+ }`,oA=`#version 300 es
108
+ ${iA}`;function To(t){let{input:e,inputChannels:r,output:i}=t||{};if(!e)return oA;if(!r)throw new Error("inputChannels");let o=nA(r),n=mg(e,r);return`#version 300 es
109
+ in ${o} ${e};
110
110
  out vec4 ${i};
111
111
  void main() {
112
- ${i} = ${o};
113
- }`}function Fx(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 og(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 Lx=1/Math.PI*180,Ux=1/180*Math.PI,kx={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...kx}};var te=globalThis.mathgl.config;function gs(t,{precision:e=te.precision}={}){return t=Vx(t),`${parseFloat(t.toPrecision(e))}`}function Ct(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function yi(t,e){return hf(t,r=>r*Ux,e)}function er(t,e){return hf(t,r=>r*Lx,e)}function U(t,e,r){return hf(t,i=>Math.max(e,Math.min(r,i)))}function It(t,e,r){return Ct(t)?t.map((i,s)=>It(i,e[s],r)):r*e+(1-r)*t}function Pe(t,e,r){let i=te.EPSILON;r&&(te.EPSILON=r);try{if(t===e)return!0;if(Ct(t)&&Ct(e)){if(t.length!==e.length)return!1;for(let s=0;s<t.length;++s)if(!Pe(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 Vx(t){return Math.round(t/te.EPSILON)*te.EPSILON}function zx(t){return t.clone?t.clone():new Array(t.length)}function hf(t,e,r){if(Ct(t)){let i=t;r=r||zx(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 bi=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:Ct(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?", ":"")+gs(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(!Pe(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 Wx(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 wn(t,e,r=""){if(te.debug&&!Wx(t,e))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return t}function uf(t,e){if(!t)throw new Error(`math.gl assertion ${e}`)}var Rn=class extends bi{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 uf(e>=0&&e<this.ELEMENTS,"index is out of range"),fe(this[e])}setComponent(e,r){return uf(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={};Rt(ee,{add:()=>Yx,angle:()=>u1,ceil:()=>Kx,clone:()=>jx,copy:()=>$x,create:()=>ng,cross:()=>o1,dist:()=>x1,distance:()=>fg,div:()=>T1,divide:()=>lg,dot:()=>s1,equals:()=>m1,exactEquals:()=>g1,floor:()=>Zx,forEach:()=>E1,fromValues:()=>Hx,inverse:()=>r1,len:()=>_1,length:()=>ug,lerp:()=>n1,max:()=>Gx,min:()=>qx,mul:()=>b1,multiply:()=>cg,negate:()=>t1,normalize:()=>i1,random:()=>a1,rotate:()=>h1,round:()=>Qx,scale:()=>Jx,scaleAndAdd:()=>e1,set:()=>Xx,sqrDist:()=>A1,sqrLen:()=>S1,squaredDistance:()=>hg,squaredLength:()=>dg,str:()=>p1,sub:()=>y1,subtract:()=>ag,transformMat2:()=>c1,transformMat2d:()=>l1,transformMat3:()=>f1,transformMat4:()=>df,zero:()=>d1});var q=typeof Float32Array<"u"?Float32Array:Array,ct=Math.random;function Fe(t){return t>=0?Math.round(t):t%.5===0?Math.floor(t):Math.round(t)}var ON=Math.PI/180;function ng(){let t=new q(2);return q!=Float32Array&&(t[0]=0,t[1]=0),t}function jx(t){let e=new q(2);return e[0]=t[0],e[1]=t[1],e}function Hx(t,e){let r=new q(2);return r[0]=t,r[1]=e,r}function $x(t,e){return t[0]=e[0],t[1]=e[1],t}function Xx(t,e,r){return t[0]=e,t[1]=r,t}function Yx(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function ag(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function cg(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}function lg(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}function Kx(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t}function Zx(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t}function qx(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t}function Gx(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t}function Qx(t,e){return t[0]=Fe(e[0]),t[1]=Fe(e[1]),t}function Jx(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function e1(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t}function fg(t,e){let r=e[0]-t[0],i=e[1]-t[1];return Math.sqrt(r*r+i*i)}function hg(t,e){let r=e[0]-t[0],i=e[1]-t[1];return r*r+i*i}function ug(t){let e=t[0],r=t[1];return Math.sqrt(e*e+r*r)}function dg(t){let e=t[0],r=t[1];return e*e+r*r}function t1(t,e){return t[0]=-e[0],t[1]=-e[1],t}function r1(t,e){return t[0]=1/e[0],t[1]=1/e[1],t}function i1(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 s1(t,e){return t[0]*e[0]+t[1]*e[1]}function o1(t,e,r){let i=e[0]*r[1]-e[1]*r[0];return t[0]=t[1]=0,t[2]=i,t}function n1(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 a1(t,e){e=e===void 0?1:e;let r=ct()*2*Math.PI;return t[0]=Math.cos(r)*e,t[1]=Math.sin(r)*e,t}function c1(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 l1(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 f1(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 df(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 h1(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 u1(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 d1(t){return t[0]=0,t[1]=0,t}function p1(t){return`vec2(${t[0]}, ${t[1]})`}function g1(t,e){return t[0]===e[0]&&t[1]===e[1]}function m1(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 _1=ug,y1=ag,b1=cg,T1=lg,x1=fg,A1=hg,S1=dg,E1=function(){let t=ng();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 pg(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 vn(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 gg(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 ge={};Rt(ge,{add:()=>M1,angle:()=>xf,bezier:()=>j1,ceil:()=>C1,clone:()=>w1,copy:()=>P1,create:()=>mg,cross:()=>gf,dist:()=>Q1,distance:()=>Tg,div:()=>G1,divide:()=>bg,dot:()=>pf,equals:()=>K1,exactEquals:()=>Y1,floor:()=>I1,forEach:()=>rA,fromValues:()=>R1,hermite:()=>W1,inverse:()=>U1,len:()=>eA,length:()=>Mn,lerp:()=>V1,max:()=>N1,min:()=>O1,mul:()=>q1,multiply:()=>yg,negate:()=>L1,normalize:()=>k1,random:()=>H1,rotateX:()=>yf,rotateY:()=>bf,rotateZ:()=>Tf,round:()=>D1,scale:()=>B1,scaleAndAdd:()=>F1,set:()=>v1,slerp:()=>z1,sqrDist:()=>J1,sqrLen:()=>tA,squaredDistance:()=>xg,squaredLength:()=>Ag,str:()=>X1,sub:()=>Z1,subtract:()=>_g,transformMat3:()=>mf,transformMat4:()=>ms,transformQuat:()=>_f,zero:()=>$1});function mg(){let t=new q(3);return q!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function w1(t){let e=new q(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Mn(t){let e=t[0],r=t[1],i=t[2];return Math.sqrt(e*e+r*r+i*i)}function R1(t,e,r){let i=new q(3);return i[0]=t,i[1]=e,i[2]=r,i}function P1(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function v1(t,e,r,i){return t[0]=e,t[1]=r,t[2]=i,t}function M1(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function _g(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function yg(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function bg(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function C1(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}function I1(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}function O1(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 N1(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 D1(t,e){return t[0]=Fe(e[0]),t[1]=Fe(e[1]),t[2]=Fe(e[2]),t}function B1(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function F1(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 Tg(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 xg(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 Ag(t){let e=t[0],r=t[1],i=t[2];return e*e+r*r+i*i}function L1(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function U1(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function k1(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 pf(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function gf(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 V1(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 z1(t,e,r,i){let s=Math.acos(Math.min(Math.max(pf(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 W1(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 j1(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 H1(t,e){e=e===void 0?1:e;let r=ct()*2*Math.PI,i=ct()*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 ms(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 mf(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 _f(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 yf(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 bf(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 Tf(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 xf(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&&pf(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function $1(t){return t[0]=0,t[1]=0,t[2]=0,t}function X1(t){return`vec3(${t[0]}, ${t[1]}, ${t[2]})`}function Y1(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function K1(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 Z1=_g,q1=yg,G1=bg,Q1=Tg,J1=xg,eA=Mn,tA=Ag,rA=function(){let t=mg();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 Af=[0,0,0],Cn,H=class extends Rn{static get ZERO(){return Cn||(Cn=new H(0,0,0),Object.freeze(Cn)),Cn}constructor(e=0,r=0,i=0){super(-0,-0,-0),arguments.length===1&&Ct(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 xf(this,e)}cross(e){return gf(this,this,e),this.check()}rotateX({radians:e,origin:r=Af}){return yf(this,this,r,e),this.check()}rotateY({radians:e,origin:r=Af}){return bf(this,this,r,e),this.check()}rotateZ({radians:e,origin:r=Af}){return Tf(this,this,r,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return ms(this,this,e),this.check()}transformAsVector(e){return vn(this,this,e),this.check()}transformByMatrix3(e){return mf(this,this,e),this.check()}transformByMatrix2(e){return gg(this,this,e),this.check()}transformByQuaternion(e){return _f(this,this,e),this.check()}};var In=class extends bi{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={};Rt(re,{add:()=>PA,adjoint:()=>cA,clone:()=>sA,copy:()=>oA,create:()=>iA,decompose:()=>yA,determinant:()=>wf,equals:()=>IA,exactEquals:()=>CA,frob:()=>RA,fromQuat:()=>Of,fromQuat2:()=>gA,fromRotation:()=>hA,fromRotationTranslation:()=>Eg,fromRotationTranslationScale:()=>bA,fromRotationTranslationScaleOrigin:()=>TA,fromScaling:()=>fA,fromTranslation:()=>lA,fromValues:()=>nA,fromXRotation:()=>uA,fromYRotation:()=>dA,fromZRotation:()=>pA,frustum:()=>Nf,getRotation:()=>_A,getScaling:()=>wg,getTranslation:()=>mA,identity:()=>Sg,invert:()=>Ef,lookAt:()=>Ff,mul:()=>OA,multiply:()=>_s,multiplyScalar:()=>vA,multiplyScalarAndAdd:()=>MA,ortho:()=>Bf,orthoNO:()=>Pg,orthoZO:()=>SA,perspective:()=>Df,perspectiveFromFieldOfView:()=>AA,perspectiveNO:()=>Rg,perspectiveZO:()=>xA,rotate:()=>vf,rotateX:()=>Mf,rotateY:()=>Cf,rotateZ:()=>If,scale:()=>Pf,set:()=>aA,str:()=>wA,sub:()=>NA,subtract:()=>vg,targetTo:()=>EA,translate:()=>Rf,transpose:()=>Sf});function iA(){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 sA(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 oA(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 nA(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 aA(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 Sg(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 Sf(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 Ef(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],b=r*a-i*n,y=r*c-s*n,T=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,O=h*m-u*g,C=h*_-d*g,W=u*_-d*m,V=b*W-y*C+T*O+S*M-A*R+w*v;return V?(V=1/V,t[0]=(a*W-c*C+l*O)*V,t[1]=(s*C-i*W-o*O)*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*T-p*w-_*y)*V,t[7]=(f*w-u*T+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*T+_*b)*V,t[11]=(h*T-f*A-d*b)*V,t[12]=(a*R-n*O-c*v)*V,t[13]=(r*O-i*R+s*v)*V,t[14]=(g*y-p*S-m*b)*V,t[15]=(f*S-h*y+u*b)*V,t):null}function cA(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],b=r*a-i*n,y=r*c-s*n,T=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,O=h*m-u*g,C=h*_-d*g,W=u*_-d*m;return t[0]=a*W-c*C+l*O,t[1]=s*C-i*W-o*O,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*T-p*w-_*y,t[7]=f*w-u*T+d*y,t[8]=n*C-a*M+l*v,t[9]=i*M-r*C-o*v,t[10]=p*A-g*T+_*b,t[11]=h*T-f*A-d*b,t[12]=a*R-n*O-c*v,t[13]=r*O-i*R+s*v,t[14]=g*y-p*S-m*b,t[15]=f*S-h*y+u*b,t}function wf(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,b=e*a-i*o,y=r*a-i*n,T=l*p-f*d,S=l*g-h*d,A=f*g-h*p,w=e*A-r*S+i*T,v=o*A-n*S+a*T,R=l*y-f*b+h*_,M=d*y-p*b+g*_;return c*w-s*v+m*R-u*M}function _s(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],b=e[15],y=r[0],T=r[1],S=r[2],A=r[3];return t[0]=y*i+T*a+S*h+A*g,t[1]=y*s+T*c+S*u+A*m,t[2]=y*o+T*l+S*d+A*_,t[3]=y*n+T*f+S*p+A*b,y=r[4],T=r[5],S=r[6],A=r[7],t[4]=y*i+T*a+S*h+A*g,t[5]=y*s+T*c+S*u+A*m,t[6]=y*o+T*l+S*d+A*_,t[7]=y*n+T*f+S*p+A*b,y=r[8],T=r[9],S=r[10],A=r[11],t[8]=y*i+T*a+S*h+A*g,t[9]=y*s+T*c+S*u+A*m,t[10]=y*o+T*l+S*d+A*_,t[11]=y*n+T*f+S*p+A*b,y=r[12],T=r[13],S=r[14],A=r[15],t[12]=y*i+T*a+S*h+A*g,t[13]=y*s+T*c+S*u+A*m,t[14]=y*o+T*l+S*d+A*_,t[15]=y*n+T*f+S*p+A*b,t}function Rf(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 Pf(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 vf(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,_,b,y,T,S,A,w,v,R,M,O,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],b=e[7],y=e[8],T=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,O=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+T*R,t[2]=d*w+_*v+S*R,t[3]=p*w+b*v+A*R,t[4]=h*M+g*O+y*C,t[5]=u*M+m*O+T*C,t[6]=d*M+_*O+S*C,t[7]=p*M+b*O+A*C,t[8]=h*W+g*V+y*J,t[9]=u*W+m*V+T*J,t[10]=d*W+_*V+S*J,t[11]=p*W+b*V+A*J,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function Mf(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 If(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 lA(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 fA(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 hA(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 uA(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 dA(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 pA(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 Eg(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,b=n*l;return t[0]=1-(d+g),t[1]=h+b,t[2]=u-_,t[3]=0,t[4]=h-b,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 gA(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),Eg(t,e,r),t}function mA(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function wg(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 _A(t,e){let r=new q(3);wg(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 yA(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,b=n*g,y=a*d,T=c*p,S=l*g,A=f*d,w=h*p,v=u*g,R=m+T+v,M=0;return R>0?(M=Math.sqrt(R+1)*2,t[3]=.25*M,t[0]=(S-w)/M,t[1]=(A-b)/M,t[2]=(_-y)/M):m>T&&m>v?(M=Math.sqrt(1+m-T-v)*2,t[3]=(S-w)/M,t[0]=.25*M,t[1]=(_+y)/M,t[2]=(A+b)/M):T>v?(M=Math.sqrt(1+T-m-v)*2,t[3]=(A-b)/M,t[0]=(_+y)/M,t[1]=.25*M,t[2]=(S+w)/M):(M=Math.sqrt(1+v-m-T)*2,t[3]=(_-y)/M,t[0]=(A+b)/M,t[1]=(S+w)/M,t[2]=.25*M),t}function bA(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,b=a*l,y=a*f,T=i[0],S=i[1],A=i[2];return t[0]=(1-(p+m))*T,t[1]=(u+y)*T,t[2]=(d-b)*T,t[3]=0,t[4]=(u-y)*S,t[5]=(1-(h+m))*S,t[6]=(g+_)*S,t[7]=0,t[8]=(d+b)*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 TA(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,b=c*l,y=c*f,T=c*h,S=i[0],A=i[1],w=i[2],v=s[0],R=s[1],M=s[2],O=(1-(g+_))*S,C=(d+T)*S,W=(p-y)*S,V=(d-T)*A,J=(1-(u+_))*A,Et=(m+b)*A,wt=(p+y)*w,od=(m-b)*w,nd=(1-(u+g))*w;return t[0]=O,t[1]=C,t[2]=W,t[3]=0,t[4]=V,t[5]=J,t[6]=Et,t[7]=0,t[8]=wt,t[9]=od,t[10]=nd,t[11]=0,t[12]=r[0]+v-(O*v+V*R+wt*M),t[13]=r[1]+R-(C*v+J*R+od*M),t[14]=r[2]+M-(W*v+Et*R+nd*M),t[15]=1,t}function Of(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 Nf(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 Rg(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 Df=Rg;function xA(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 AA(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 Pg(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 Bf=Pg;function SA(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 Ff(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],b=i[1],y=i[2],T=r[0],S=r[1],A=r[2];return Math.abs(p-T)<1e-6&&Math.abs(g-S)<1e-6&&Math.abs(m-A)<1e-6?Sg(t):(h=p-T,u=g-S,d=m-A,s=1/Math.sqrt(h*h+u*u+d*d),h*=s,u*=s,d*=s,o=b*d-y*u,n=y*h-_*d,a=_*u-b*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 EA(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 wA(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 RA(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 PA(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 vg(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 vA(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 MA(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 CA(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 IA(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],b=e[0],y=e[1],T=e[2],S=e[3],A=e[4],w=e[5],v=e[6],R=e[7],M=e[8],O=e[9],C=e[10],W=e[11],V=e[12],J=e[13],Et=e[14],wt=e[15];return Math.abs(r-b)<=1e-6*Math.max(1,Math.abs(r),Math.abs(b))&&Math.abs(i-y)<=1e-6*Math.max(1,Math.abs(i),Math.abs(y))&&Math.abs(s-T)<=1e-6*Math.max(1,Math.abs(s),Math.abs(T))&&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-O)<=1e-6*Math.max(1,Math.abs(h),Math.abs(O))&&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-Et)<=1e-6*Math.max(1,Math.abs(m),Math.abs(Et))&&Math.abs(_-wt)<=1e-6*Math.max(1,Math.abs(_),Math.abs(wt))}var OA=_s,NA=vg;var Ae={};Rt(Ae,{add:()=>UA,ceil:()=>kA,clone:()=>DA,copy:()=>FA,create:()=>Mg,cross:()=>qA,dist:()=>aS,distance:()=>Ng,div:()=>nS,divide:()=>Og,dot:()=>ZA,equals:()=>iS,exactEquals:()=>rS,floor:()=>VA,forEach:()=>hS,fromValues:()=>BA,inverse:()=>YA,len:()=>lS,length:()=>Bg,lerp:()=>GA,max:()=>WA,min:()=>zA,mul:()=>oS,multiply:()=>Ig,negate:()=>XA,normalize:()=>KA,random:()=>QA,round:()=>jA,scale:()=>HA,scaleAndAdd:()=>$A,set:()=>LA,sqrDist:()=>cS,sqrLen:()=>fS,squaredDistance:()=>Dg,squaredLength:()=>Fg,str:()=>tS,sub:()=>sS,subtract:()=>Cg,transformMat4:()=>Lf,transformQuat:()=>JA,zero:()=>eS});function Mg(){let t=new q(4);return q!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function DA(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 BA(t,e,r,i){let s=new q(4);return s[0]=t,s[1]=e,s[2]=r,s[3]=i,s}function FA(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function LA(t,e,r,i,s){return t[0]=e,t[1]=r,t[2]=i,t[3]=s,t}function UA(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 Cg(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 Ig(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 Og(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 kA(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 VA(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 zA(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 WA(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 jA(t,e){return t[0]=Fe(e[0]),t[1]=Fe(e[1]),t[2]=Fe(e[2]),t[3]=Fe(e[3]),t}function HA(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 $A(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 Ng(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 Dg(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 Bg(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 Fg(t){let e=t[0],r=t[1],i=t[2],s=t[3];return e*e+r*r+i*i+s*s}function XA(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}function YA(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 KA(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 ZA(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function qA(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 GA(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 QA(t,e){e=e===void 0?1:e;let r,i,s,o,n,a;do r=ct()*2-1,i=ct()*2-1,n=r*r+i*i;while(n>=1);do s=ct()*2-1,o=ct()*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 Lf(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 JA(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 eS(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}function tS(t){return`vec4(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]})`}function rS(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function iS(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 sS=Cg,oS=Ig,nS=Og,aS=Ng,cS=Dg,lS=Bg,fS=Fg,hS=function(){let t=Mg();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 Vf;(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"})(Vf||(Vf={}));var uS=45*Math.PI/180,dS=1,Uf=.1,kf=500,pS=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),z=class extends In{static get IDENTITY(){return mS()}static get ZERO(){return gS()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return Vf}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(pS)}fromObject(e){return this.check()}fromQuaternion(e){return Of(this,e),this.check()}frustum(e){let{left:r,right:i,bottom:s,top:o,near:n=Uf,far:a=kf}=e;return a===1/0?_S(this,r,i,s,o,n):Nf(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 Ff(this,r,i,s),this.check()}ortho(e){let{left:r,right:i,bottom:s,top:o,near:n=Uf,far:a=kf}=e;return Bf(this,r,i,s,o,n,a),this.check()}orthographic(e){let{fovy:r=uS,aspect:i=dS,focalDistance:s=1,near:o=Uf,far:n=kf}=e;Lg(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 Lg(r),Df(this,r,i,s,o),this.check()}determinant(){return wf(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 Sf(this,this),this.check()}invert(){return Ef(this,this),this.check()}multiplyLeft(e){return _s(this,e,this),this.check()}multiplyRight(e){return _s(this,this,e),this.check()}rotateX(e){return Mf(this,this,e),this.check()}rotateY(e){return Cf(this,this,e),this.check()}rotateZ(e){return If(this,this,e),this.check()}rotateXYZ(e){return this.rotateX(e[0]).rotateY(e[1]).rotateZ(e[2])}rotateAxis(e,r){return vf(this,this,e,r),this.check()}scale(e){return Pf(this,this,Array.isArray(e)?e:[e,e,e]),this.check()}translate(e){return Rf(this,this,e),this.check()}transform(e,r){return e.length===4?(r=Lf(r||[-0,-0,-0,-0],e,this),wn(r,4),r):this.transformAsPoint(e,r)}transformAsPoint(e,r){let{length:i}=e,s;switch(i){case 2:s=df(r||[-0,-0],e,this);break;case 3:s=ms(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return wn(s,e.length),s}transformAsVector(e,r){let i;switch(e.length){case 2:i=pg(r||[-0,-0],e,this);break;case 3:i=vn(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return wn(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])}},On,Nn;function gS(){return On||(On=new z([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(On)),On}function mS(){return Nn||(Nn=new z,Object.freeze(Nn)),Nn}function Lg(t){if(t>Math.PI*2)throw Error("expected radians")}function _S(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 Ug=1e-6,yS=6371e3,We=class{constructor({phi:e=0,theta:r=0,radius:i=1,bearing:s,pitch:o,altitude:n,radiusScale:a=yS}={}){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=gs;return`${e?"Spherical":""}[rho:${r(this.radius)},theta:${r(this.theta)},phi:${r(this.phi)}]`}equals(e){return Pe(this.radius,e.radius)&&Pe(this.theta,e.theta)&&Pe(this.phi,e.phi)}exactEquals(e){return this.radius===e.radius&&this.theta===e.theta&&this.phi===e.phi}get bearing(){return 180-er(this.phi)}set bearing(e){this.phi=Math.PI-yi(e)}get pitch(){return er(this.theta)}set pitch(e){this.theta=yi(e)}get longitude(){return er(this.phi)}get latitude(){return er(this.theta)}get lng(){return er(this.phi)}get lat(){return er(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 We().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=yi(r),this.theta=yi(e),this.check()}fromVector3(e){return this.radius=Mn(e),this.radius>0&&(this.theta=Math.atan2(e[0],e[1]),this.phi=Math.acos(U(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(Ug,Math.min(Math.PI-Ug,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 zf(t,e=[],r=0){let i=Math.fround(t),s=t-i;return e[r]=i,e[r+1]=s,e}function kg(t){return t-Math.fround(t)}function Vg(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;zf(t[i*4+r],e,s*2)}return e}var bS=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND
112
+ ${i} = ${n};
113
+ }`}function nA(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 mg(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 sA=1/Math.PI*180,aA=1/180*Math.PI,cA={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...cA}};var te=globalThis.mathgl.config;function xo(t,{precision:e=te.precision}={}){return t=lA(t),`${parseFloat(t.toPrecision(e))}`}function It(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Si(t,e){return Af(t,r=>r*aA,e)}function ir(t,e){return Af(t,r=>r*sA,e)}function U(t,e,r){return Af(t,i=>Math.max(e,Math.min(r,i)))}function Ot(t,e,r){return It(t)?t.map((i,o)=>Ot(i,e[o],r)):r*e+(1-r)*t}function Pe(t,e,r){let i=te.EPSILON;r&&(te.EPSILON=r);try{if(t===e)return!0;if(It(t)&&It(e)){if(t.length!==e.length)return!1;for(let o=0;o<t.length;++o)if(!Pe(t[o],e[o]))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 lA(t){return Math.round(t/te.EPSILON)*te.EPSILON}function fA(t){return t.clone?t.clone():new Array(t.length)}function Af(t,e,r){if(It(t)){let i=t;r=r||fA(i);for(let o=0;o<r.length&&o<i.length;++o){let n=typeof t=="number"?t:t[o];r[o]=e(n,o,r)}return r}return e(t)}var Ei=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:It(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?", ":"")+xo(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(!Pe(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 o=0;o<this.ELEMENTS;++o){let n=e[o],s=typeof r=="number"?r:r[o];this[o]=n+i*(s-n)}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 hA(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 le(t){if(!Number.isFinite(t))throw new Error(`Invalid number ${JSON.stringify(t)}`);return t}function Ms(t,e,r=""){if(te.debug&&!hA(t,e))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return t}function Sf(t,e){if(!t)throw new Error(`math.gl assertion ${e}`)}var Cs=class extends Ei{get x(){return this[0]}set x(e){this[0]=le(e)}get y(){return this[1]}set y(e){this[1]=le(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 o=this[i]-e[i];r+=o*o}return le(r)}dot(e){let r=0;for(let i=0;i<this.ELEMENTS;++i)r+=this[i]*e[i];return le(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 Sf(e>=0&&e<this.ELEMENTS,"index is out of range"),le(this[e])}setComponent(e,r){return Sf(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={};Pt(ee,{add:()=>mA,angle:()=>BA,ceil:()=>_A,clone:()=>uA,copy:()=>pA,create:()=>_g,cross:()=>vA,dist:()=>$A,distance:()=>xg,div:()=>jA,divide:()=>Tg,dot:()=>PA,equals:()=>kA,exactEquals:()=>UA,floor:()=>yA,forEach:()=>YA,fromValues:()=>dA,inverse:()=>wA,len:()=>VA,length:()=>Sg,lerp:()=>MA,max:()=>TA,min:()=>bA,mul:()=>WA,multiply:()=>bg,negate:()=>EA,normalize:()=>RA,random:()=>CA,rotate:()=>DA,round:()=>xA,scale:()=>AA,scaleAndAdd:()=>SA,set:()=>gA,sqrDist:()=>HA,sqrLen:()=>XA,squaredDistance:()=>Ag,squaredLength:()=>Eg,str:()=>FA,sub:()=>zA,subtract:()=>yg,transformMat2:()=>IA,transformMat2d:()=>OA,transformMat3:()=>NA,transformMat4:()=>Ef,zero:()=>LA});var q=typeof Float32Array<"u"?Float32Array:Array,lt=Math.random;function Fe(t){return t>=0?Math.round(t):t%.5===0?Math.floor(t):Math.round(t)}var uD=Math.PI/180;function _g(){let t=new q(2);return q!=Float32Array&&(t[0]=0,t[1]=0),t}function uA(t){let e=new q(2);return e[0]=t[0],e[1]=t[1],e}function dA(t,e){let r=new q(2);return r[0]=t,r[1]=e,r}function pA(t,e){return t[0]=e[0],t[1]=e[1],t}function gA(t,e,r){return t[0]=e,t[1]=r,t}function mA(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function yg(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function bg(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}function Tg(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}function _A(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t}function yA(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t}function bA(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t}function TA(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t}function xA(t,e){return t[0]=Fe(e[0]),t[1]=Fe(e[1]),t}function AA(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function SA(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t}function xg(t,e){let r=e[0]-t[0],i=e[1]-t[1];return Math.sqrt(r*r+i*i)}function Ag(t,e){let r=e[0]-t[0],i=e[1]-t[1];return r*r+i*i}function Sg(t){let e=t[0],r=t[1];return Math.sqrt(e*e+r*r)}function Eg(t){let e=t[0],r=t[1];return e*e+r*r}function EA(t,e){return t[0]=-e[0],t[1]=-e[1],t}function wA(t,e){return t[0]=1/e[0],t[1]=1/e[1],t}function RA(t,e){let r=e[0],i=e[1],o=r*r+i*i;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t}function PA(t,e){return t[0]*e[0]+t[1]*e[1]}function vA(t,e,r){let i=e[0]*r[1]-e[1]*r[0];return t[0]=t[1]=0,t[2]=i,t}function MA(t,e,r,i){let o=e[0],n=e[1];return t[0]=o+i*(r[0]-o),t[1]=n+i*(r[1]-n),t}function CA(t,e){e=e===void 0?1:e;let r=lt()*2*Math.PI;return t[0]=Math.cos(r)*e,t[1]=Math.sin(r)*e,t}function IA(t,e,r){let i=e[0],o=e[1];return t[0]=r[0]*i+r[2]*o,t[1]=r[1]*i+r[3]*o,t}function OA(t,e,r){let i=e[0],o=e[1];return t[0]=r[0]*i+r[2]*o+r[4],t[1]=r[1]*i+r[3]*o+r[5],t}function NA(t,e,r){let i=e[0],o=e[1];return t[0]=r[0]*i+r[3]*o+r[6],t[1]=r[1]*i+r[4]*o+r[7],t}function Ef(t,e,r){let i=e[0],o=e[1];return t[0]=r[0]*i+r[4]*o+r[12],t[1]=r[1]*i+r[5]*o+r[13],t}function DA(t,e,r,i){let o=e[0]-r[0],n=e[1]-r[1],s=Math.sin(i),a=Math.cos(i);return t[0]=o*a-n*s+r[0],t[1]=o*s+n*a+r[1],t}function BA(t,e){let r=t[0],i=t[1],o=e[0],n=e[1],s=Math.sqrt((r*r+i*i)*(o*o+n*n)),a=s&&(r*o+i*n)/s;return Math.acos(Math.min(Math.max(a,-1),1))}function LA(t){return t[0]=0,t[1]=0,t}function FA(t){return`vec2(${t[0]}, ${t[1]})`}function UA(t,e){return t[0]===e[0]&&t[1]===e[1]}function kA(t,e){let r=t[0],i=t[1],o=e[0],n=e[1];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))}var VA=Sg,zA=yg,WA=bg,jA=Tg,$A=xg,HA=Ag,XA=Eg,YA=function(){let t=_g();return function(e,r,i,o,n,s){let a,c;for(r||(r=2),i||(i=0),o?c=Math.min(o*r+i,e.length):c=e.length,a=i;a<c;a+=r)t[0]=e[a],t[1]=e[a+1],n(t,t,s),e[a]=t[0],e[a+1]=t[1];return e}}();function wg(t,e,r){let i=e[0],o=e[1],n=r[3]*i+r[7]*o||1;return t[0]=(r[0]*i+r[4]*o)/n,t[1]=(r[1]*i+r[5]*o)/n,t}function Os(t,e,r){let i=e[0],o=e[1],n=e[2],s=r[3]*i+r[7]*o+r[11]*n||1;return t[0]=(r[0]*i+r[4]*o+r[8]*n)/s,t[1]=(r[1]*i+r[5]*o+r[9]*n)/s,t[2]=(r[2]*i+r[6]*o+r[10]*n)/s,t}function Rg(t,e,r){let i=e[0],o=e[1];return t[0]=r[0]*i+r[2]*o,t[1]=r[1]*i+r[3]*o,t[2]=e[2],t}var pe={};Pt(pe,{add:()=>QA,angle:()=>Of,bezier:()=>u1,ceil:()=>JA,clone:()=>KA,copy:()=>qA,create:()=>Pg,cross:()=>Rf,dist:()=>x1,distance:()=>Ig,div:()=>T1,divide:()=>Cg,dot:()=>wf,equals:()=>_1,exactEquals:()=>m1,floor:()=>e1,forEach:()=>w1,fromValues:()=>ZA,hermite:()=>h1,inverse:()=>a1,len:()=>S1,length:()=>Ns,lerp:()=>l1,max:()=>r1,min:()=>t1,mul:()=>b1,multiply:()=>Mg,negate:()=>s1,normalize:()=>c1,random:()=>d1,rotateX:()=>Mf,rotateY:()=>Cf,rotateZ:()=>If,round:()=>i1,scale:()=>o1,scaleAndAdd:()=>n1,set:()=>GA,slerp:()=>f1,sqrDist:()=>A1,sqrLen:()=>E1,squaredDistance:()=>Og,squaredLength:()=>Ng,str:()=>g1,sub:()=>y1,subtract:()=>vg,transformMat3:()=>Pf,transformMat4:()=>Ao,transformQuat:()=>vf,zero:()=>p1});function Pg(){let t=new q(3);return q!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function KA(t){let e=new q(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Ns(t){let e=t[0],r=t[1],i=t[2];return Math.sqrt(e*e+r*r+i*i)}function ZA(t,e,r){let i=new q(3);return i[0]=t,i[1]=e,i[2]=r,i}function qA(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function GA(t,e,r,i){return t[0]=e,t[1]=r,t[2]=i,t}function QA(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function vg(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function Mg(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function Cg(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function JA(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}function e1(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}function t1(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 r1(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 i1(t,e){return t[0]=Fe(e[0]),t[1]=Fe(e[1]),t[2]=Fe(e[2]),t}function o1(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function n1(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 Ig(t,e){let r=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2];return Math.sqrt(r*r+i*i+o*o)}function Og(t,e){let r=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2];return r*r+i*i+o*o}function Ng(t){let e=t[0],r=t[1],i=t[2];return e*e+r*r+i*i}function s1(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function a1(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function c1(t,e){let r=e[0],i=e[1],o=e[2],n=r*r+i*i+o*o;return n>0&&(n=1/Math.sqrt(n)),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function wf(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Rf(t,e,r){let i=e[0],o=e[1],n=e[2],s=r[0],a=r[1],c=r[2];return t[0]=o*c-n*a,t[1]=n*s-i*c,t[2]=i*a-o*s,t}function l1(t,e,r,i){let o=e[0],n=e[1],s=e[2];return t[0]=o+i*(r[0]-o),t[1]=n+i*(r[1]-n),t[2]=s+i*(r[2]-s),t}function f1(t,e,r,i){let o=Math.acos(Math.min(Math.max(wf(e,r),-1),1)),n=Math.sin(o),s=Math.sin((1-i)*o)/n,a=Math.sin(i*o)/n;return t[0]=s*e[0]+a*r[0],t[1]=s*e[1]+a*r[1],t[2]=s*e[2]+a*r[2],t}function h1(t,e,r,i,o,n){let s=n*n,a=s*(2*n-3)+1,c=s*(n-2)+n,l=s*(n-1),f=s*(3-2*n);return t[0]=e[0]*a+r[0]*c+i[0]*l+o[0]*f,t[1]=e[1]*a+r[1]*c+i[1]*l+o[1]*f,t[2]=e[2]*a+r[2]*c+i[2]*l+o[2]*f,t}function u1(t,e,r,i,o,n){let s=1-n,a=s*s,c=n*n,l=a*s,f=3*n*a,h=3*c*s,u=c*n;return t[0]=e[0]*l+r[0]*f+i[0]*h+o[0]*u,t[1]=e[1]*l+r[1]*f+i[1]*h+o[1]*u,t[2]=e[2]*l+r[2]*f+i[2]*h+o[2]*u,t}function d1(t,e){e=e===void 0?1:e;let r=lt()*2*Math.PI,i=lt()*2-1,o=Math.sqrt(1-i*i)*e;return t[0]=Math.cos(r)*o,t[1]=Math.sin(r)*o,t[2]=i*e,t}function Ao(t,e,r){let i=e[0],o=e[1],n=e[2],s=r[3]*i+r[7]*o+r[11]*n+r[15];return s=s||1,t[0]=(r[0]*i+r[4]*o+r[8]*n+r[12])/s,t[1]=(r[1]*i+r[5]*o+r[9]*n+r[13])/s,t[2]=(r[2]*i+r[6]*o+r[10]*n+r[14])/s,t}function Pf(t,e,r){let i=e[0],o=e[1],n=e[2];return t[0]=i*r[0]+o*r[3]+n*r[6],t[1]=i*r[1]+o*r[4]+n*r[7],t[2]=i*r[2]+o*r[5]+n*r[8],t}function vf(t,e,r){let i=r[0],o=r[1],n=r[2],s=r[3],a=e[0],c=e[1],l=e[2],f=o*l-n*c,h=n*a-i*l,u=i*c-o*a,d=o*u-n*h,p=n*f-i*u,g=i*h-o*f,m=s*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 Mf(t,e,r,i){let o=[],n=[];return o[0]=e[0]-r[0],o[1]=e[1]-r[1],o[2]=e[2]-r[2],n[0]=o[0],n[1]=o[1]*Math.cos(i)-o[2]*Math.sin(i),n[2]=o[1]*Math.sin(i)+o[2]*Math.cos(i),t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t}function Cf(t,e,r,i){let o=[],n=[];return o[0]=e[0]-r[0],o[1]=e[1]-r[1],o[2]=e[2]-r[2],n[0]=o[2]*Math.sin(i)+o[0]*Math.cos(i),n[1]=o[1],n[2]=o[2]*Math.cos(i)-o[0]*Math.sin(i),t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t}function If(t,e,r,i){let o=[],n=[];return o[0]=e[0]-r[0],o[1]=e[1]-r[1],o[2]=e[2]-r[2],n[0]=o[0]*Math.cos(i)-o[1]*Math.sin(i),n[1]=o[0]*Math.sin(i)+o[1]*Math.cos(i),n[2]=o[2],t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t}function Of(t,e){let r=t[0],i=t[1],o=t[2],n=e[0],s=e[1],a=e[2],c=Math.sqrt((r*r+i*i+o*o)*(n*n+s*s+a*a)),l=c&&wf(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function p1(t){return t[0]=0,t[1]=0,t[2]=0,t}function g1(t){return`vec3(${t[0]}, ${t[1]}, ${t[2]})`}function m1(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function _1(t,e){let r=t[0],i=t[1],o=t[2],n=e[0],s=e[1],a=e[2];return Math.abs(r-n)<=1e-6*Math.max(1,Math.abs(r),Math.abs(n))&&Math.abs(i-s)<=1e-6*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(o-a)<=1e-6*Math.max(1,Math.abs(o),Math.abs(a))}var y1=vg,b1=Mg,T1=Cg,x1=Ig,A1=Og,S1=Ns,E1=Ng,w1=function(){let t=Pg();return function(e,r,i,o,n,s){let a,c;for(r||(r=3),i||(i=0),o?c=Math.min(o*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],n(t,t,s),e[a]=t[0],e[a+1]=t[1],e[a+2]=t[2];return e}}();var Nf=[0,0,0],Ds,$=class extends Cs{static get ZERO(){return Ds||(Ds=new $(0,0,0),Object.freeze(Ds)),Ds}constructor(e=0,r=0,i=0){super(-0,-0,-0),arguments.length===1&&It(e)?this.copy(e):(te.debug&&(le(e),le(r),le(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&&(le(e.x),le(e.y),le(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]=le(e)}angle(e){return Of(this,e)}cross(e){return Rf(this,this,e),this.check()}rotateX({radians:e,origin:r=Nf}){return Mf(this,this,r,e),this.check()}rotateY({radians:e,origin:r=Nf}){return Cf(this,this,r,e),this.check()}rotateZ({radians:e,origin:r=Nf}){return If(this,this,r,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return Ao(this,this,e),this.check()}transformAsVector(e){return Os(this,this,e),this.check()}transformByMatrix3(e){return Pf(this,this,e),this.check()}transformByMatrix2(e){return Rg(this,this,e),this.check()}transformByQuaternion(e){return vf(this,this,e),this.check()}};var Bs=class extends Ei{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]=le(i),this}getColumn(e,r=new Array(this.RANK).fill(-0)){let i=e*this.RANK;for(let o=0;o<this.RANK;++o)r[o]=this[i+o];return r}setColumn(e,r){let i=e*this.RANK;for(let o=0;o<this.RANK;++o)this[i+o]=r[o];return this}};var re={};Pt(re,{add:()=>q1,adjoint:()=>I1,clone:()=>P1,copy:()=>v1,create:()=>R1,decompose:()=>z1,determinant:()=>Lf,equals:()=>eS,exactEquals:()=>J1,frob:()=>Z1,fromQuat:()=>jf,fromQuat2:()=>U1,fromRotation:()=>D1,fromRotationTranslation:()=>Bg,fromRotationTranslationScale:()=>W1,fromRotationTranslationScaleOrigin:()=>j1,fromScaling:()=>N1,fromTranslation:()=>O1,fromValues:()=>M1,fromXRotation:()=>B1,fromYRotation:()=>L1,fromZRotation:()=>F1,frustum:()=>$f,getRotation:()=>V1,getScaling:()=>Lg,getTranslation:()=>k1,identity:()=>Dg,invert:()=>Bf,lookAt:()=>Yf,mul:()=>tS,multiply:()=>So,multiplyScalar:()=>G1,multiplyScalarAndAdd:()=>Q1,ortho:()=>Xf,orthoNO:()=>Ug,orthoZO:()=>X1,perspective:()=>Hf,perspectiveFromFieldOfView:()=>H1,perspectiveNO:()=>Fg,perspectiveZO:()=>$1,rotate:()=>kf,rotateX:()=>Vf,rotateY:()=>zf,rotateZ:()=>Wf,scale:()=>Uf,set:()=>C1,str:()=>K1,sub:()=>rS,subtract:()=>kg,targetTo:()=>Y1,translate:()=>Ff,transpose:()=>Df});function R1(){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 P1(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 v1(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 M1(t,e,r,i,o,n,s,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]=o,m[5]=n,m[6]=s,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 C1(t,e,r,i,o,n,s,a,c,l,f,h,u,d,p,g,m){return t[0]=e,t[1]=r,t[2]=i,t[3]=o,t[4]=n,t[5]=s,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 Dg(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 Df(t,e){if(t===e){let r=e[1],i=e[2],o=e[3],n=e[6],s=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]=n,t[11]=e[14],t[12]=o,t[13]=s,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 Bf(t,e){let r=e[0],i=e[1],o=e[2],n=e[3],s=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],b=r*a-i*s,y=r*c-o*s,T=r*l-n*s,S=i*c-o*a,A=i*l-n*a,w=o*l-n*c,P=f*g-h*p,R=f*m-u*p,v=f*_-d*p,O=h*m-u*g,C=h*_-d*g,W=u*_-d*m,V=b*W-y*C+T*O+S*v-A*R+w*P;return V?(V=1/V,t[0]=(a*W-c*C+l*O)*V,t[1]=(o*C-i*W-n*O)*V,t[2]=(g*w-m*A+_*S)*V,t[3]=(u*A-h*w-d*S)*V,t[4]=(c*v-s*W-l*R)*V,t[5]=(r*W-o*v+n*R)*V,t[6]=(m*T-p*w-_*y)*V,t[7]=(f*w-u*T+d*y)*V,t[8]=(s*C-a*v+l*P)*V,t[9]=(i*v-r*C-n*P)*V,t[10]=(p*A-g*T+_*b)*V,t[11]=(h*T-f*A-d*b)*V,t[12]=(a*R-s*O-c*P)*V,t[13]=(r*O-i*R+o*P)*V,t[14]=(g*y-p*S-m*b)*V,t[15]=(f*S-h*y+u*b)*V,t):null}function I1(t,e){let r=e[0],i=e[1],o=e[2],n=e[3],s=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],b=r*a-i*s,y=r*c-o*s,T=r*l-n*s,S=i*c-o*a,A=i*l-n*a,w=o*l-n*c,P=f*g-h*p,R=f*m-u*p,v=f*_-d*p,O=h*m-u*g,C=h*_-d*g,W=u*_-d*m;return t[0]=a*W-c*C+l*O,t[1]=o*C-i*W-n*O,t[2]=g*w-m*A+_*S,t[3]=u*A-h*w-d*S,t[4]=c*v-s*W-l*R,t[5]=r*W-o*v+n*R,t[6]=m*T-p*w-_*y,t[7]=f*w-u*T+d*y,t[8]=s*C-a*v+l*P,t[9]=i*v-r*C-n*P,t[10]=p*A-g*T+_*b,t[11]=h*T-f*A-d*b,t[12]=a*R-s*O-c*P,t[13]=r*O-i*R+o*P,t[14]=g*y-p*S-m*b,t[15]=f*S-h*y+u*b,t}function Lf(t){let e=t[0],r=t[1],i=t[2],o=t[3],n=t[4],s=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*s-r*n,b=e*a-i*n,y=r*a-i*s,T=l*p-f*d,S=l*g-h*d,A=f*g-h*p,w=e*A-r*S+i*T,P=n*A-s*S+a*T,R=l*y-f*b+h*_,v=d*y-p*b+g*_;return c*w-o*P+m*R-u*v}function So(t,e,r){let i=e[0],o=e[1],n=e[2],s=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],b=e[15],y=r[0],T=r[1],S=r[2],A=r[3];return t[0]=y*i+T*a+S*h+A*g,t[1]=y*o+T*c+S*u+A*m,t[2]=y*n+T*l+S*d+A*_,t[3]=y*s+T*f+S*p+A*b,y=r[4],T=r[5],S=r[6],A=r[7],t[4]=y*i+T*a+S*h+A*g,t[5]=y*o+T*c+S*u+A*m,t[6]=y*n+T*l+S*d+A*_,t[7]=y*s+T*f+S*p+A*b,y=r[8],T=r[9],S=r[10],A=r[11],t[8]=y*i+T*a+S*h+A*g,t[9]=y*o+T*c+S*u+A*m,t[10]=y*n+T*l+S*d+A*_,t[11]=y*s+T*f+S*p+A*b,y=r[12],T=r[13],S=r[14],A=r[15],t[12]=y*i+T*a+S*h+A*g,t[13]=y*o+T*c+S*u+A*m,t[14]=y*n+T*l+S*d+A*_,t[15]=y*s+T*f+S*p+A*b,t}function Ff(t,e,r){let i=r[0],o=r[1],n=r[2],s,a,c,l,f,h,u,d,p,g,m,_;return e===t?(t[12]=e[0]*i+e[4]*o+e[8]*n+e[12],t[13]=e[1]*i+e[5]*o+e[9]*n+e[13],t[14]=e[2]*i+e[6]*o+e[10]*n+e[14],t[15]=e[3]*i+e[7]*o+e[11]*n+e[15]):(s=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]=s,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]=s*i+f*o+p*n+e[12],t[13]=a*i+h*o+g*n+e[13],t[14]=c*i+u*o+m*n+e[14],t[15]=l*i+d*o+_*n+e[15]),t}function Uf(t,e,r){let i=r[0],o=r[1],n=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]*o,t[5]=e[5]*o,t[6]=e[6]*o,t[7]=e[7]*o,t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11]*n,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function kf(t,e,r,i){let o=i[0],n=i[1],s=i[2],a=Math.sqrt(o*o+n*n+s*s),c,l,f,h,u,d,p,g,m,_,b,y,T,S,A,w,P,R,v,O,C,W,V,J;return a<1e-6?null:(a=1/a,o*=a,n*=a,s*=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],b=e[7],y=e[8],T=e[9],S=e[10],A=e[11],w=o*o*f+c,P=n*o*f+s*l,R=s*o*f-n*l,v=o*n*f-s*l,O=n*n*f+c,C=s*n*f+o*l,W=o*s*f+n*l,V=n*s*f-o*l,J=s*s*f+c,t[0]=h*w+g*P+y*R,t[1]=u*w+m*P+T*R,t[2]=d*w+_*P+S*R,t[3]=p*w+b*P+A*R,t[4]=h*v+g*O+y*C,t[5]=u*v+m*O+T*C,t[6]=d*v+_*O+S*C,t[7]=p*v+b*O+A*C,t[8]=h*W+g*V+y*J,t[9]=u*W+m*V+T*J,t[10]=d*W+_*V+S*J,t[11]=p*W+b*V+A*J,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function Vf(t,e,r){let i=Math.sin(r),o=Math.cos(r),n=e[4],s=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]=n*o+l*i,t[5]=s*o+f*i,t[6]=a*o+h*i,t[7]=c*o+u*i,t[8]=l*o-n*i,t[9]=f*o-s*i,t[10]=h*o-a*i,t[11]=u*o-c*i,t}function zf(t,e,r){let i=Math.sin(r),o=Math.cos(r),n=e[0],s=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]=n*o-l*i,t[1]=s*o-f*i,t[2]=a*o-h*i,t[3]=c*o-u*i,t[8]=n*i+l*o,t[9]=s*i+f*o,t[10]=a*i+h*o,t[11]=c*i+u*o,t}function Wf(t,e,r){let i=Math.sin(r),o=Math.cos(r),n=e[0],s=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]=n*o+l*i,t[1]=s*o+f*i,t[2]=a*o+h*i,t[3]=c*o+u*i,t[4]=l*o-n*i,t[5]=f*o-s*i,t[6]=h*o-a*i,t[7]=u*o-c*i,t}function O1(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 N1(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 D1(t,e,r){let i=r[0],o=r[1],n=r[2],s=Math.sqrt(i*i+o*o+n*n),a,c,l;return s<1e-6?null:(s=1/s,i*=s,o*=s,n*=s,c=Math.sin(e),a=Math.cos(e),l=1-a,t[0]=i*i*l+a,t[1]=o*i*l+n*c,t[2]=n*i*l-o*c,t[3]=0,t[4]=i*o*l-n*c,t[5]=o*o*l+a,t[6]=n*o*l+i*c,t[7]=0,t[8]=i*n*l+o*c,t[9]=o*n*l-i*c,t[10]=n*n*l+a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}function B1(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 L1(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 F1(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 Bg(t,e,r){let i=e[0],o=e[1],n=e[2],s=e[3],a=i+i,c=o+o,l=n+n,f=i*a,h=i*c,u=i*l,d=o*c,p=o*l,g=n*l,m=s*a,_=s*c,b=s*l;return t[0]=1-(d+g),t[1]=h+b,t[2]=u-_,t[3]=0,t[4]=h-b,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 U1(t,e){let r=new q(3),i=-e[0],o=-e[1],n=-e[2],s=e[3],a=e[4],c=e[5],l=e[6],f=e[7],h=i*i+o*o+n*n+s*s;return h>0?(r[0]=(a*s+f*i+c*n-l*o)*2/h,r[1]=(c*s+f*o+l*i-a*n)*2/h,r[2]=(l*s+f*n+a*o-c*i)*2/h):(r[0]=(a*s+f*i+c*n-l*o)*2,r[1]=(c*s+f*o+l*i-a*n)*2,r[2]=(l*s+f*n+a*o-c*i)*2),Bg(t,e,r),t}function k1(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function Lg(t,e){let r=e[0],i=e[1],o=e[2],n=e[4],s=e[5],a=e[6],c=e[8],l=e[9],f=e[10];return t[0]=Math.sqrt(r*r+i*i+o*o),t[1]=Math.sqrt(n*n+s*s+a*a),t[2]=Math.sqrt(c*c+l*l+f*f),t}function V1(t,e){let r=new q(3);Lg(r,e);let i=1/r[0],o=1/r[1],n=1/r[2],s=e[0]*i,a=e[1]*o,c=e[2]*n,l=e[4]*i,f=e[5]*o,h=e[6]*n,u=e[8]*i,d=e[9]*o,p=e[10]*n,g=s+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):s>f&&s>p?(m=Math.sqrt(1+s-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-s-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-s-f)*2,t[3]=(a-l)/m,t[0]=(u+c)/m,t[1]=(h+d)/m,t[2]=.25*m),t}function z1(t,e,r,i){e[0]=i[12],e[1]=i[13],e[2]=i[14];let o=i[0],n=i[1],s=i[2],a=i[4],c=i[5],l=i[6],f=i[8],h=i[9],u=i[10];r[0]=Math.sqrt(o*o+n*n+s*s),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=o*d,_=n*p,b=s*g,y=a*d,T=c*p,S=l*g,A=f*d,w=h*p,P=u*g,R=m+T+P,v=0;return R>0?(v=Math.sqrt(R+1)*2,t[3]=.25*v,t[0]=(S-w)/v,t[1]=(A-b)/v,t[2]=(_-y)/v):m>T&&m>P?(v=Math.sqrt(1+m-T-P)*2,t[3]=(S-w)/v,t[0]=.25*v,t[1]=(_+y)/v,t[2]=(A+b)/v):T>P?(v=Math.sqrt(1+T-m-P)*2,t[3]=(A-b)/v,t[0]=(_+y)/v,t[1]=.25*v,t[2]=(S+w)/v):(v=Math.sqrt(1+P-m-T)*2,t[3]=(_-y)/v,t[0]=(A+b)/v,t[1]=(S+w)/v,t[2]=.25*v),t}function W1(t,e,r,i){let o=e[0],n=e[1],s=e[2],a=e[3],c=o+o,l=n+n,f=s+s,h=o*c,u=o*l,d=o*f,p=n*l,g=n*f,m=s*f,_=a*c,b=a*l,y=a*f,T=i[0],S=i[1],A=i[2];return t[0]=(1-(p+m))*T,t[1]=(u+y)*T,t[2]=(d-b)*T,t[3]=0,t[4]=(u-y)*S,t[5]=(1-(h+m))*S,t[6]=(g+_)*S,t[7]=0,t[8]=(d+b)*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 j1(t,e,r,i,o){let n=e[0],s=e[1],a=e[2],c=e[3],l=n+n,f=s+s,h=a+a,u=n*l,d=n*f,p=n*h,g=s*f,m=s*h,_=a*h,b=c*l,y=c*f,T=c*h,S=i[0],A=i[1],w=i[2],P=o[0],R=o[1],v=o[2],O=(1-(g+_))*S,C=(d+T)*S,W=(p-y)*S,V=(d-T)*A,J=(1-(u+_))*A,wt=(m+b)*A,Rt=(p+y)*w,md=(m-b)*w,_d=(1-(u+g))*w;return t[0]=O,t[1]=C,t[2]=W,t[3]=0,t[4]=V,t[5]=J,t[6]=wt,t[7]=0,t[8]=Rt,t[9]=md,t[10]=_d,t[11]=0,t[12]=r[0]+P-(O*P+V*R+Rt*v),t[13]=r[1]+R-(C*P+J*R+md*v),t[14]=r[2]+v-(W*P+wt*R+_d*v),t[15]=1,t}function jf(t,e){let r=e[0],i=e[1],o=e[2],n=e[3],s=r+r,a=i+i,c=o+o,l=r*s,f=i*s,h=i*a,u=o*s,d=o*a,p=o*c,g=n*s,m=n*a,_=n*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 $f(t,e,r,i,o,n,s){let a=1/(r-e),c=1/(o-i),l=1/(n-s);return t[0]=n*2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n*2*c,t[6]=0,t[7]=0,t[8]=(r+e)*a,t[9]=(o+i)*c,t[10]=(s+n)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*n*2*l,t[15]=0,t}function Fg(t,e,r,i,o){let n=1/Math.tan(e/2);if(t[0]=n/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,o!=null&&o!==1/0){let s=1/(i-o);t[10]=(o+i)*s,t[14]=2*o*i*s}else t[10]=-1,t[14]=-2*i;return t}var Hf=Fg;function $1(t,e,r,i,o){let n=1/Math.tan(e/2);if(t[0]=n/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,o!=null&&o!==1/0){let s=1/(i-o);t[10]=o*s,t[14]=o*i*s}else t[10]=-1,t[14]=-i;return t}function H1(t,e,r,i){let o=Math.tan(e.upDegrees*Math.PI/180),n=Math.tan(e.downDegrees*Math.PI/180),s=Math.tan(e.leftDegrees*Math.PI/180),a=Math.tan(e.rightDegrees*Math.PI/180),c=2/(s+a),l=2/(o+n);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]=-((s-a)*c*.5),t[9]=(o-n)*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 Ug(t,e,r,i,o,n,s){let a=1/(e-r),c=1/(i-o),l=1/(n-s);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]=(o+i)*c,t[14]=(s+n)*l,t[15]=1,t}var Xf=Ug;function X1(t,e,r,i,o,n,s){let a=1/(e-r),c=1/(i-o),l=1/(n-s);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]=(o+i)*c,t[14]=n*l,t[15]=1,t}function Yf(t,e,r,i){let o,n,s,a,c,l,f,h,u,d,p=e[0],g=e[1],m=e[2],_=i[0],b=i[1],y=i[2],T=r[0],S=r[1],A=r[2];return Math.abs(p-T)<1e-6&&Math.abs(g-S)<1e-6&&Math.abs(m-A)<1e-6?Dg(t):(h=p-T,u=g-S,d=m-A,o=1/Math.sqrt(h*h+u*u+d*d),h*=o,u*=o,d*=o,n=b*d-y*u,s=y*h-_*d,a=_*u-b*h,o=Math.sqrt(n*n+s*s+a*a),o?(o=1/o,n*=o,s*=o,a*=o):(n=0,s=0,a=0),c=u*a-d*s,l=d*n-h*a,f=h*s-u*n,o=Math.sqrt(c*c+l*l+f*f),o?(o=1/o,c*=o,l*=o,f*=o):(c=0,l=0,f=0),t[0]=n,t[1]=c,t[2]=h,t[3]=0,t[4]=s,t[5]=l,t[6]=u,t[7]=0,t[8]=a,t[9]=f,t[10]=d,t[11]=0,t[12]=-(n*p+s*g+a*m),t[13]=-(c*p+l*g+f*m),t[14]=-(h*p+u*g+d*m),t[15]=1,t)}function Y1(t,e,r,i){let o=e[0],n=e[1],s=e[2],a=i[0],c=i[1],l=i[2],f=o-r[0],h=n-r[1],u=s-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]=o,t[13]=n,t[14]=s,t[15]=1,t}function K1(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 Z1(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 q1(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 kg(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 G1(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 Q1(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 J1(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 eS(t,e){let r=t[0],i=t[1],o=t[2],n=t[3],s=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],b=e[0],y=e[1],T=e[2],S=e[3],A=e[4],w=e[5],P=e[6],R=e[7],v=e[8],O=e[9],C=e[10],W=e[11],V=e[12],J=e[13],wt=e[14],Rt=e[15];return Math.abs(r-b)<=1e-6*Math.max(1,Math.abs(r),Math.abs(b))&&Math.abs(i-y)<=1e-6*Math.max(1,Math.abs(i),Math.abs(y))&&Math.abs(o-T)<=1e-6*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(n-S)<=1e-6*Math.max(1,Math.abs(n),Math.abs(S))&&Math.abs(s-A)<=1e-6*Math.max(1,Math.abs(s),Math.abs(A))&&Math.abs(a-w)<=1e-6*Math.max(1,Math.abs(a),Math.abs(w))&&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-v)<=1e-6*Math.max(1,Math.abs(f),Math.abs(v))&&Math.abs(h-O)<=1e-6*Math.max(1,Math.abs(h),Math.abs(O))&&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-wt)<=1e-6*Math.max(1,Math.abs(m),Math.abs(wt))&&Math.abs(_-Rt)<=1e-6*Math.max(1,Math.abs(_),Math.abs(Rt))}var tS=So,rS=kg;var xe={};Pt(xe,{add:()=>aS,ceil:()=>cS,clone:()=>iS,copy:()=>nS,create:()=>Vg,cross:()=>bS,dist:()=>CS,distance:()=>$g,div:()=>MS,divide:()=>jg,dot:()=>yS,equals:()=>RS,exactEquals:()=>wS,floor:()=>lS,forEach:()=>DS,fromValues:()=>oS,inverse:()=>mS,len:()=>OS,length:()=>Xg,lerp:()=>TS,max:()=>hS,min:()=>fS,mul:()=>vS,multiply:()=>Wg,negate:()=>gS,normalize:()=>_S,random:()=>xS,round:()=>uS,scale:()=>dS,scaleAndAdd:()=>pS,set:()=>sS,sqrDist:()=>IS,sqrLen:()=>NS,squaredDistance:()=>Hg,squaredLength:()=>Yg,str:()=>ES,sub:()=>PS,subtract:()=>zg,transformMat4:()=>Kf,transformQuat:()=>AS,zero:()=>SS});function Vg(){let t=new q(4);return q!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function iS(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 oS(t,e,r,i){let o=new q(4);return o[0]=t,o[1]=e,o[2]=r,o[3]=i,o}function nS(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function sS(t,e,r,i,o){return t[0]=e,t[1]=r,t[2]=i,t[3]=o,t}function aS(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 zg(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 Wg(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 jg(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 cS(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 lS(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 fS(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 hS(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 uS(t,e){return t[0]=Fe(e[0]),t[1]=Fe(e[1]),t[2]=Fe(e[2]),t[3]=Fe(e[3]),t}function dS(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 pS(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 $g(t,e){let r=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2],n=e[3]-t[3];return Math.sqrt(r*r+i*i+o*o+n*n)}function Hg(t,e){let r=e[0]-t[0],i=e[1]-t[1],o=e[2]-t[2],n=e[3]-t[3];return r*r+i*i+o*o+n*n}function Xg(t){let e=t[0],r=t[1],i=t[2],o=t[3];return Math.sqrt(e*e+r*r+i*i+o*o)}function Yg(t){let e=t[0],r=t[1],i=t[2],o=t[3];return e*e+r*r+i*i+o*o}function gS(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}function mS(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 _S(t,e){let r=e[0],i=e[1],o=e[2],n=e[3],s=r*r+i*i+o*o+n*n;return s>0&&(s=1/Math.sqrt(s)),t[0]=r*s,t[1]=i*s,t[2]=o*s,t[3]=n*s,t}function yS(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function bS(t,e,r,i){let o=r[0]*i[1]-r[1]*i[0],n=r[0]*i[2]-r[2]*i[0],s=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*s-d*n,t[2]=f*c-h*s+d*o,t[3]=-(f*a)+h*n-u*o,t}function TS(t,e,r,i){let o=e[0],n=e[1],s=e[2],a=e[3];return t[0]=o+i*(r[0]-o),t[1]=n+i*(r[1]-n),t[2]=s+i*(r[2]-s),t[3]=a+i*(r[3]-a),t}function xS(t,e){e=e===void 0?1:e;let r,i,o,n,s,a;do r=lt()*2-1,i=lt()*2-1,s=r*r+i*i;while(s>=1);do o=lt()*2-1,n=lt()*2-1,a=o*o+n*n;while(a>=1);let c=Math.sqrt((1-s)/a);return t[0]=e*r,t[1]=e*i,t[2]=e*o*c,t[3]=e*n*c,t}function Kf(t,e,r){let i=e[0],o=e[1],n=e[2],s=e[3];return t[0]=r[0]*i+r[4]*o+r[8]*n+r[12]*s,t[1]=r[1]*i+r[5]*o+r[9]*n+r[13]*s,t[2]=r[2]*i+r[6]*o+r[10]*n+r[14]*s,t[3]=r[3]*i+r[7]*o+r[11]*n+r[15]*s,t}function AS(t,e,r){let i=e[0],o=e[1],n=e[2],s=r[0],a=r[1],c=r[2],l=r[3],f=l*i+a*n-c*o,h=l*o+c*i-s*n,u=l*n+s*o-a*i,d=-s*i-a*o-c*n;return t[0]=f*l+d*-s+h*-c-u*-a,t[1]=h*l+d*-a+u*-s-f*-c,t[2]=u*l+d*-c+f*-a-h*-s,t[3]=e[3],t}function SS(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}function ES(t){return`vec4(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]})`}function wS(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function RS(t,e){let r=t[0],i=t[1],o=t[2],n=t[3],s=e[0],a=e[1],c=e[2],l=e[3];return Math.abs(r-s)<=1e-6*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-a)<=1e-6*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(o-c)<=1e-6*Math.max(1,Math.abs(o),Math.abs(c))&&Math.abs(n-l)<=1e-6*Math.max(1,Math.abs(n),Math.abs(l))}var PS=zg,vS=Wg,MS=jg,CS=$g,IS=Hg,OS=Xg,NS=Yg,DS=function(){let t=Vg();return function(e,r,i,o,n,s){let a,c;for(r||(r=4),i||(i=0),o?c=Math.min(o*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],n(t,t,s),e[a]=t[0],e[a+1]=t[1],e[a+2]=t[2],e[a+3]=t[3];return e}}();var Gf;(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"})(Gf||(Gf={}));var BS=45*Math.PI/180,LS=1,Zf=.1,qf=500,FS=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),z=class extends Bs{static get IDENTITY(){return kS()}static get ZERO(){return US()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return Gf}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,o,n,s,a,c,l,f,h,u,d,p,g,m){return this[0]=e,this[1]=r,this[2]=i,this[3]=o,this[4]=n,this[5]=s,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,o,n,s,a,c,l,f,h,u,d,p,g,m){return this[0]=e,this[1]=n,this[2]=l,this[3]=d,this[4]=r,this[5]=s,this[6]=f,this[7]=p,this[8]=i,this[9]=a,this[10]=h,this[11]=g,this[12]=o,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(FS)}fromObject(e){return this.check()}fromQuaternion(e){return jf(this,e),this.check()}frustum(e){let{left:r,right:i,bottom:o,top:n,near:s=Zf,far:a=qf}=e;return a===1/0?VS(this,r,i,o,n,s):$f(this,r,i,o,n,s,a),this.check()}lookAt(e){let{eye:r,center:i=[0,0,0],up:o=[0,1,0]}=e;return Yf(this,r,i,o),this.check()}ortho(e){let{left:r,right:i,bottom:o,top:n,near:s=Zf,far:a=qf}=e;return Xf(this,r,i,o,n,s,a),this.check()}orthographic(e){let{fovy:r=BS,aspect:i=LS,focalDistance:o=1,near:n=Zf,far:s=qf}=e;Kg(r);let a=r/2,c=o*Math.tan(a),l=c*i;return this.ortho({left:-l,right:l,bottom:-c,top:c,near:n,far:s})}perspective(e){let{fovy:r=45*Math.PI/180,aspect:i=1,near:o=.1,far:n=500}=e;return Kg(r),Hf(this,r,i,o,n),this.check()}determinant(){return Lf(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),o=1/i[0],n=1/i[1],s=1/i[2];return e[0]=this[0]*o,e[1]=this[1]*n,e[2]=this[2]*s,e[3]=0,e[4]=this[4]*o,e[5]=this[5]*n,e[6]=this[6]*s,e[7]=0,e[8]=this[8]*o,e[9]=this[9]*n,e[10]=this[10]*s,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),o=1/i[0],n=1/i[1],s=1/i[2];return e[0]=this[0]*o,e[1]=this[1]*n,e[2]=this[2]*s,e[3]=this[4]*o,e[4]=this[5]*n,e[5]=this[6]*s,e[6]=this[8]*o,e[7]=this[9]*n,e[8]=this[10]*s,e}transpose(){return Df(this,this),this.check()}invert(){return Bf(this,this),this.check()}multiplyLeft(e){return So(this,e,this),this.check()}multiplyRight(e){return So(this,this,e),this.check()}rotateX(e){return Vf(this,this,e),this.check()}rotateY(e){return zf(this,this,e),this.check()}rotateZ(e){return Wf(this,this,e),this.check()}rotateXYZ(e){return this.rotateX(e[0]).rotateY(e[1]).rotateZ(e[2])}rotateAxis(e,r){return kf(this,this,e,r),this.check()}scale(e){return Uf(this,this,Array.isArray(e)?e:[e,e,e]),this.check()}translate(e){return Ff(this,this,e),this.check()}transform(e,r){return e.length===4?(r=Kf(r||[-0,-0,-0,-0],e,this),Ms(r,4),r):this.transformAsPoint(e,r)}transformAsPoint(e,r){let{length:i}=e,o;switch(i){case 2:o=Ef(r||[-0,-0],e,this);break;case 3:o=Ao(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Ms(o,e.length),o}transformAsVector(e,r){let i;switch(e.length){case 2:i=wg(r||[-0,-0],e,this);break;case 3:i=Os(r||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Ms(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])}},Ls,Fs;function US(){return Ls||(Ls=new z([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(Ls)),Ls}function kS(){return Fs||(Fs=new z,Object.freeze(Fs)),Fs}function Kg(t){if(t>Math.PI*2)throw Error("expected radians")}function VS(t,e,r,i,o,n){let s=2*n/(r-e),a=2*n/(o-i),c=(r+e)/(r-e),l=(o+i)/(o-i),f=-1,h=-1,u=-2*n;return t[0]=s,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 Zg=1e-6,zS=6371e3,je=class{constructor({phi:e=0,theta:r=0,radius:i=1,bearing:o,pitch:n,altitude:s,radiusScale:a=zS}={}){this.phi=e,this.theta=r,this.radius=i||s||1,this.radiusScale=a||1,o!==void 0&&(this.bearing=o),n!==void 0&&(this.pitch=n),this.check()}toString(){return this.formatString(te)}formatString({printTypes:e=!1}){let r=xo;return`${e?"Spherical":""}[rho:${r(this.radius)},theta:${r(this.theta)},phi:${r(this.phi)}]`}equals(e){return Pe(this.radius,e.radius)&&Pe(this.theta,e.theta)&&Pe(this.phi,e.phi)}exactEquals(e){return this.radius===e.radius&&this.theta===e.theta&&this.phi===e.phi}get bearing(){return 180-ir(this.phi)}set bearing(e){this.phi=Math.PI-Si(e)}get pitch(){return ir(this.theta)}set pitch(e){this.theta=Si(e)}get longitude(){return ir(this.phi)}get latitude(){return ir(this.theta)}get lng(){return ir(this.phi)}get lat(){return ir(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 je().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=Si(r),this.theta=Si(e),this.check()}fromVector3(e){return this.radius=Ns(e),this.radius>0&&(this.theta=Math.atan2(e[0],e[1]),this.phi=Math.acos(U(e[2]/this.radius,-1,1))),this.check()}toVector3(){return new $(0,0,this.radius).rotateX({radians:this.theta}).rotateZ({radians:this.phi})}makeSafe(){return this.phi=Math.max(Zg,Math.min(Math.PI-Zg,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 Qf(t,e=[],r=0){let i=Math.fround(t),o=t-i;return e[r]=i,e[r+1]=o,e}function qg(t){return t-Math.fround(t)}function Gg(t){let e=new Float32Array(32);for(let r=0;r<4;++r)for(let i=0;i<4;++i){let o=r*4+i;Qf(t[i*4+r],e,o*2)}return e}function Us(t,e=!0){return t??e}function Jf(t=[0,0,0],e=!0){return e?t.map(r=>r/255):[...t]}function Qg(t,e=!0){let r=Jf(t.slice(0,3),e),i=Number.isFinite(t[3]),o=i?t[3]:1;return[r[0],r[1],r[2],e&&i?o/255:o]}var WS=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND
114
114
 
115
115
  // All these functions are for substituting tan() function from Intel GPU only
116
116
  const float TWO_PI = 6.2831854820251465;
@@ -260,7 +260,7 @@ float tan_fp32(float a) {
260
260
  return tan(a);
261
261
  #endif
262
262
  }
263
- `,Wf={name:"fp32",vs:bS};var jf=`
263
+ `,eh={name:"fp32",vs:WS};var th=`
264
264
  layout(std140) uniform fp64arithmeticUniforms {
265
265
  uniform float ONE;
266
266
  uniform float SPLIT;
@@ -459,7 +459,7 @@ vec2 sqrt_fp64(vec2 a) {
459
459
  return sum_fp64(vec2(yn, 0.0), prod);
460
460
  #endif
461
461
  }
462
- `;var zg=`struct Fp64ArithmeticUniforms {
462
+ `;var Jg=`struct Fp64ArithmeticUniforms {
463
463
  ONE: f32,
464
464
  SPLIT: f32,
465
465
  };
@@ -665,11 +665,71 @@ fn sqrt_fp64(a: vec2f) -> vec2f {
665
665
  return sum_fp64(vec2f(yn, 0.0), prod);
666
666
  #endif
667
667
  }
668
- `;var TS={ONE:1,SPLIT:4097},Hf={name:"fp64arithmetic",source:zg,fs:jf,vs:jf,defaultUniforms:TS,uniformTypes:{ONE:"f32",SPLIT:"f32"},fp64ify:zf,fp64LowPart:kg,fp64ifyMatrix4:Vg};var xS=[0,1,1,1],AS=`layout(std140) uniform pickingUniforms {
668
+ `;var jS={ONE:1,SPLIT:4097},rh={name:"fp64arithmetic",source:Jg,fs:th,vs:th,defaultUniforms:jS,uniformTypes:{ONE:"f32",SPLIT:"f32"},fp64ify:Qf,fp64LowPart:qg,fp64ifyMatrix4:Gg};var em=`layout(std140) uniform floatColorsUniforms {
669
+ float useByteColors;
670
+ } floatColors;
671
+
672
+ vec3 floatColors_normalize(vec3 inputColor) {
673
+ return floatColors.useByteColors > 0.5 ? inputColor / 255.0 : inputColor;
674
+ }
675
+
676
+ vec4 floatColors_normalize(vec4 inputColor) {
677
+ return floatColors.useByteColors > 0.5 ? inputColor / 255.0 : inputColor;
678
+ }
679
+
680
+ vec4 floatColors_premultiplyAlpha(vec4 inputColor) {
681
+ return vec4(inputColor.rgb * inputColor.a, inputColor.a);
682
+ }
683
+
684
+ vec4 floatColors_unpremultiplyAlpha(vec4 inputColor) {
685
+ return inputColor.a > 0.0 ? vec4(inputColor.rgb / inputColor.a, inputColor.a) : vec4(0.0);
686
+ }
687
+
688
+ vec4 floatColors_premultiply_alpha(vec4 inputColor) {
689
+ return floatColors_premultiplyAlpha(inputColor);
690
+ }
691
+
692
+ vec4 floatColors_unpremultiply_alpha(vec4 inputColor) {
693
+ return floatColors_unpremultiplyAlpha(inputColor);
694
+ }
695
+ `,$S=`struct floatColorsUniforms {
696
+ useByteColors: f32
697
+ };
698
+
699
+ @group(0) @binding(auto) var<uniform> floatColors : floatColorsUniforms;
700
+
701
+ fn floatColors_normalize(inputColor: vec3<f32>) -> vec3<f32> {
702
+ return select(inputColor, inputColor / 255.0, floatColors.useByteColors > 0.5);
703
+ }
704
+
705
+ fn floatColors_normalize4(inputColor: vec4<f32>) -> vec4<f32> {
706
+ return select(inputColor, inputColor / 255.0, floatColors.useByteColors > 0.5);
707
+ }
708
+
709
+ fn floatColors_premultiplyAlpha(inputColor: vec4<f32>) -> vec4<f32> {
710
+ return vec4<f32>(inputColor.rgb * inputColor.a, inputColor.a);
711
+ }
712
+
713
+ fn floatColors_unpremultiplyAlpha(inputColor: vec4<f32>) -> vec4<f32> {
714
+ return select(
715
+ vec4<f32>(0.0),
716
+ vec4<f32>(inputColor.rgb / inputColor.a, inputColor.a),
717
+ inputColor.a > 0.0
718
+ );
719
+ }
720
+
721
+ fn floatColors_premultiply_alpha(inputColor: vec4<f32>) -> vec4<f32> {
722
+ return floatColors_premultiplyAlpha(inputColor);
723
+ }
724
+
725
+ fn floatColors_unpremultiply_alpha(inputColor: vec4<f32>) -> vec4<f32> {
726
+ return floatColors_unpremultiplyAlpha(inputColor);
727
+ }
728
+ `,ks={name:"floatColors",props:{},uniforms:{},vs:em,fs:em,source:$S,uniformTypes:{useByteColors:"f32"},defaultUniforms:{useByteColors:!0}};var HS=[0,1,1,1],XS=`layout(std140) uniform pickingUniforms {
669
729
  float isActive;
670
730
  float isAttribute;
671
731
  float isHighlightActive;
672
- float useFloatColors;
732
+ float useByteColors;
673
733
  vec3 highlightedObjectColor;
674
734
  vec4 highlightColor;
675
735
  } picking;
@@ -678,12 +738,12 @@ out vec4 picking_vRGBcolor_Avalid;
678
738
 
679
739
  // Normalize unsigned byte color to 0-1 range
680
740
  vec3 picking_normalizeColor(vec3 color) {
681
- return picking.useFloatColors > 0.5 ? color : color / 255.0;
741
+ return picking.useByteColors > 0.5 ? color / 255.0 : color;
682
742
  }
683
743
 
684
744
  // Normalize unsigned byte color to 0-1 range
685
745
  vec4 picking_normalizeColor(vec4 color) {
686
- return picking.useFloatColors > 0.5 ? color : color / 255.0;
746
+ return picking.useByteColors > 0.5 ? color / 255.0 : color;
687
747
  }
688
748
 
689
749
  bool picking_isColorZero(vec3 color) {
@@ -736,11 +796,11 @@ void picking_setPickingAttribute(vec3 value) {
736
796
  picking_vRGBcolor_Avalid.rgb = value;
737
797
  }
738
798
  }
739
- `,SS=`layout(std140) uniform pickingUniforms {
799
+ `,YS=`layout(std140) uniform pickingUniforms {
740
800
  float isActive;
741
801
  float isAttribute;
742
802
  float isHighlightActive;
743
- float useFloatColors;
803
+ float useByteColors;
744
804
  vec3 highlightedObjectColor;
745
805
  vec4 highlightColor;
746
806
  } picking;
@@ -792,7 +852,7 @@ vec4 picking_filterColor(vec4 color) {
792
852
  vec4 highlightColor = picking_filterHighlightColor(color);
793
853
  return picking_filterPickingColor(highlightColor);
794
854
  }
795
- `,Dn={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:xS},vs:AS,fs:SS,getUniforms:ES};function ES(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}L();var $f=`precision highp int;
855
+ `,Vs={props:{},uniforms:{},name:"picking",uniformTypes:{isActive:"f32",isAttribute:"f32",isHighlightActive:"f32",useByteColors:"f32",highlightedObjectColor:"vec3<f32>",highlightColor:"vec4<f32>"},defaultUniforms:{isActive:!1,isAttribute:!1,isHighlightActive:!1,useByteColors:!0,highlightedObjectColor:[0,0,0],highlightColor:HS},vs:XS,fs:YS,getUniforms:KS};function KS(t={},e){let r={},i=Us(t.useByteColors,!0);if(t.highlightedObjectColor!==void 0)if(t.highlightedObjectColor===null)r.isHighlightActive=!1;else{r.isHighlightActive=!0;let o=t.highlightedObjectColor.slice(0,3);r.highlightedObjectColor=o}return t.highlightColor&&(r.highlightColor=Qg(t.highlightColor,i)),t.isActive!==void 0&&(r.isActive=Boolean(t.isActive),r.isAttribute=Boolean(t.isAttribute)),t.useByteColors!==void 0&&(r.useByteColors=Boolean(t.useByteColors)),r}F();var ih=`precision highp int;
796
856
 
797
857
  // #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
798
858
  struct AmbientLight {
@@ -872,7 +932,7 @@ float getSpotLightAttenuation(SpotLight spotLight, vec3 positionWorldspace) {
872
932
  }
873
933
 
874
934
  // #endif
875
- `;var Wg=`// #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
935
+ `;var tm=`// #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
876
936
  const MAX_LIGHTS: i32 = 5;
877
937
 
878
938
  struct AmbientLight {
@@ -951,14 +1011,14 @@ fn getSpotLightAttenuation(spotLight: SpotLight, positionWorldspace: vec3<f32>)
951
1011
  );
952
1012
  return distanceAttenuation / max(coneFactor, 0.0001);
953
1013
  }
954
- `;var Pr=5,wS=255,RS={color:"vec3<f32>",position:"vec3<f32>",direction:"vec3<f32>",attenuation:"vec3<f32>",coneCos:"vec2<f32>"},Ln={props:{},uniforms:{},name:"lighting",defines:{},uniformTypes:{enabled:"i32",directionalLightCount:"i32",pointLightCount:"i32",spotLightCount:"i32",ambientColor:"vec3<f32>",lights:[RS,Pr]},defaultUniforms:Fn(),bindingLayout:[{name:"lighting",group:2}],firstBindingSlot:0,source:Wg,vs:$f,fs:$f,getUniforms:PS};function PS(t,e={}){if(t=t&&{...t},!t)return Fn();t.lights&&(t={...t,...MS(t.lights),lights:void 0});let{ambientLight:r,pointLights:i,spotLights:s,directionalLights:o}=t||{};if(!(r||i&&i.length>0||s&&s.length>0||o&&o.length>0))return{...Fn(),enabled:0};let a={...Fn(),...vS({ambientLight:r,pointLights:i,spotLights:s,directionalLights:o})};return t.enabled!==void 0&&(a.enabled=t.enabled?1:0),a}function vS({ambientLight:t,pointLights:e=[],spotLights:r=[],directionalLights:i=[]}){let s=jg(),o=0,n=0,a=0,c=0;for(let l of e){if(o>=Pr)break;s[o]={...s[o],color:Bn(l),position:l.position,attenuation:l.attenuation||[1,0,0]},o++,n++}for(let l of r){if(o>=Pr)break;s[o]={...s[o],color:Bn(l),position:l.position,direction:l.direction,attenuation:l.attenuation||[1,0,0],coneCos:IS(l)},o++,a++}for(let l of i){if(o>=Pr)break;s[o]={...s[o],color:Bn(l),direction:l.direction},o++,c++}return e.length+r.length+i.length>Pr&&x.warn(`MAX_LIGHTS exceeded, truncating to ${Pr}`)(),{ambientColor:Bn(t),directionalLightCount:c,pointLightCount:n,spotLightCount:a,lights:s}}function MS(t){let e={pointLights:[],spotLights:[],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;case"spot":e.spotLights?.push(r);break;default:}return e}function Bn(t={}){let{color:e=[0,0,0],intensity:r=1}=t;return e.map(i=>i*r/wS)}function Fn(){return{enabled:1,directionalLightCount:0,pointLightCount:0,spotLightCount:0,ambientColor:[.1,.1,.1],lights:jg()}}function jg(){return Array.from({length:Pr},()=>CS())}function CS(){return{color:[1,1,1],position:[1,1,2],direction:[1,1,1],attenuation:[1,0,0],coneCos:[1,0]}}function IS(t){let e=t.innerConeAngle??0,r=t.outerConeAngle??Math.PI/4;return[Math.cos(e),Math.cos(r)]}var Un=`layout(std140) uniform phongMaterialUniforms {
1014
+ `;var Nr=5,ZS={color:"vec3<f32>",position:"vec3<f32>",direction:"vec3<f32>",attenuation:"vec3<f32>",coneCos:"vec2<f32>"},js={props:{},uniforms:{},name:"lighting",defines:{},uniformTypes:{enabled:"i32",directionalLightCount:"i32",pointLightCount:"i32",spotLightCount:"i32",ambientColor:"vec3<f32>",lights:[ZS,Nr]},defaultUniforms:Ws(),bindingLayout:[{name:"lighting",group:2}],firstBindingSlot:0,source:tm,vs:ih,fs:ih,getUniforms:qS};function qS(t,e={}){if(t=t&&{...t},!t)return Ws();t.lights&&(t={...t,...QS(t.lights),lights:void 0});let{useByteColors:r,ambientLight:i,pointLights:o,spotLights:n,directionalLights:s}=t||{};if(!(i||o&&o.length>0||n&&n.length>0||s&&s.length>0))return{...Ws(),enabled:0};let c={...Ws(),...GS({useByteColors:r,ambientLight:i,pointLights:o,spotLights:n,directionalLights:s})};return t.enabled!==void 0&&(c.enabled=t.enabled?1:0),c}function GS({useByteColors:t,ambientLight:e,pointLights:r=[],spotLights:i=[],directionalLights:o=[]}){let n=rm(),s=0,a=0,c=0,l=0;for(let f of r){if(s>=Nr)break;n[s]={...n[s],color:zs(f,t),position:f.position,attenuation:f.attenuation||[1,0,0]},s++,a++}for(let f of i){if(s>=Nr)break;n[s]={...n[s],color:zs(f,t),position:f.position,direction:f.direction,attenuation:f.attenuation||[1,0,0],coneCos:eE(f)},s++,c++}for(let f of o){if(s>=Nr)break;n[s]={...n[s],color:zs(f,t),direction:f.direction},s++,l++}return r.length+i.length+o.length>Nr&&x.warn(`MAX_LIGHTS exceeded, truncating to ${Nr}`)(),{ambientColor:zs(e,t),directionalLightCount:l,pointLightCount:a,spotLightCount:c,lights:n}}function QS(t){let e={pointLights:[],spotLights:[],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;case"spot":e.spotLights?.push(r);break;default:}return e}function zs(t={},e){let{color:r=[0,0,0],intensity:i=1}=t;return Jf(r,Us(e,!0)).map(n=>n*i)}function Ws(){return{enabled:1,directionalLightCount:0,pointLightCount:0,spotLightCount:0,ambientColor:[.1,.1,.1],lights:rm()}}function rm(){return Array.from({length:Nr},()=>JS())}function JS(){return{color:[1,1,1],position:[1,1,2],direction:[1,1,1],attenuation:[1,0,0],coneCos:[1,0]}}function eE(t){let e=t.innerConeAngle??0,r=t.outerConeAngle??Math.PI/4;return[Math.cos(e),Math.cos(r)]}var $s=`layout(std140) uniform phongMaterialUniforms {
955
1015
  uniform bool unlit;
956
1016
  uniform float ambient;
957
1017
  uniform float diffuse;
958
1018
  uniform float shininess;
959
1019
  uniform vec3 specularColor;
960
1020
  } material;
961
- `,kn=`layout(std140) uniform phongMaterialUniforms {
1021
+ `,Hs=`layout(std140) uniform phongMaterialUniforms {
962
1022
  uniform bool unlit;
963
1023
  uniform float ambient;
964
1024
  uniform float diffuse;
@@ -975,7 +1035,7 @@ vec3 lighting_getLightColor(vec3 surfaceColor, vec3 light_direction, vec3 view_d
975
1035
  specular = pow(specular_angle, material.shininess);
976
1036
  }
977
1037
  lambertian = max(lambertian, 0.0);
978
- return (lambertian * material.diffuse * surfaceColor + specular * material.specularColor) * color;
1038
+ return (lambertian * material.diffuse * surfaceColor + specular * floatColors_normalize(material.specularColor)) * color;
979
1039
  }
980
1040
 
981
1041
  vec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 position_worldspace, vec3 normal_worldspace) {
@@ -1015,7 +1075,7 @@ vec3 lighting_getLightColor(vec3 surfaceColor, vec3 cameraPosition, vec3 positio
1015
1075
 
1016
1076
  return lightColor;
1017
1077
  }
1018
- `;var Vn=`struct phongMaterialUniforms {
1078
+ `;var Xs=`struct phongMaterialUniforms {
1019
1079
  unlit: u32,
1020
1080
  ambient: f32,
1021
1081
  diffuse: f32,
@@ -1034,7 +1094,10 @@ fn lighting_getLightColor(surfaceColor: vec3<f32>, light_direction: vec3<f32>, v
1034
1094
  specular = pow(specular_angle, phongMaterial.shininess);
1035
1095
  }
1036
1096
  lambertian = max(lambertian, 0.0);
1037
- return (lambertian * phongMaterial.diffuse * surfaceColor + specular * phongMaterial.specularColor) * color;
1097
+ return (
1098
+ lambertian * phongMaterial.diffuse * surfaceColor +
1099
+ specular * floatColors_normalize(phongMaterial.specularColor)
1100
+ ) * color;
1038
1101
  }
1039
1102
 
1040
1103
  fn lighting_getLightColor2(surfaceColor: vec3<f32>, cameraPosition: vec3<f32>, position_worldspace: vec3<f32>, normal_worldspace: vec3<f32>) -> vec3<f32> {
@@ -1135,7 +1198,7 @@ fn lighting_getSpecularLightColor(cameraPosition: vec3<f32>, position_worldspace
1135
1198
  }
1136
1199
  return lightColor;
1137
1200
  }
1138
- `;var ys={props:{},name:"gouraudMaterial",bindingLayout:[{name:"gouraudMaterial",group:3}],vs:kn.replace("phongMaterial","gouraudMaterial"),fs:Un.replace("phongMaterial","gouraudMaterial"),source:Vn.replaceAll("phongMaterial","gouraudMaterial"),defines:{LIGHTING_VERTEX:!0},dependencies:[Ln],uniformTypes:{unlit:"i32",ambient:"f32",diffuse:"f32",shininess:"f32",specularColor:"vec3<f32>"},defaultUniforms:{unlit:!1,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)),{...ys.defaultUniforms,...e}}};var bs={name:"phongMaterial",firstBindingSlot:0,bindingLayout:[{name:"phongMaterial",group:3}],dependencies:[Ln],source:Vn,vs:Un,fs:kn,defines:{LIGHTING_FRAGMENT:!0},uniformTypes:{unlit:"i32",ambient:"f32",diffuse:"f32",shininess:"f32",specularColor:"vec3<f32>"},defaultUniforms:{unlit:!1,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)),{...bs.defaultUniforms,...e}}};L();var Xf={};function oe(t="id"){Xf[t]=Xf[t]||1;let e=Xf[t]++;return`${t}-${e}`}var zn=class{id;userData={};topology;bufferLayout=[];vertexCount;indices;attributes;constructor(e){if(this.id=e.id||oe("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&I.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 Hg(t,e){if(e instanceof zn)return e;let r=OS(t,e),{attributes:i,bufferLayout:s}=NS(t,e);return new zn({topology:e.topology||"triangle-list",bufferLayout:s,vertexCount:e.vertexCount,indices:r,attributes:i})}function OS(t,e){if(!e.indices)return;let r=e.indices.value;return t.createBuffer({usage:I.INDEX,data:r})}function NS(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;if(l===void 0)throw new Error(`Attribute ${o} is missing a size`);r.push({name:a,format:Pt.getVertexFormatFromAttribute(c,l,f)})}}let s=e._calculateVertexCount(e.attributes,e.indices);return{attributes:i,bufferLayout:r,vertexCount:s}}function $g(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,Yf=null;function Xg(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),Yf=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=Yf?.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;Yf?.putImageData(c,0,0)}}function Wn(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(!Wn(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)||!Wn(t[o],e[o],r-1))return!1;return!0}return!1}L();var Ti=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&&x.warn(`BufferLayout: Missing buffer for "${e}".`)(),r}};function Yg(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 Kg(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=Yg(n,r),l=Yg(a,r);return c-l}),i}function Kf(t,e){if(!t||!e.some(i=>i.bindingLayout?.length))return t;let r={...t,bindings:t.bindings.map(i=>({...i}))};"attributes"in(t||{})&&(r.attributes=t?.attributes||[]);for(let i of e)for(let s of i.bindingLayout||[])for(let o of DS(s.name)){let n=r.bindings.find(a=>a.name===o);n?.group===0&&(n.group=s.group)}return r}function Zg(t){return Boolean(t.uniformTypes&&!BS(t.uniformTypes))}function DS(t){let e=new Set([t,`${t}Uniforms`]);return t.endsWith("Uniforms")||e.add(`${t}Sampler`),[...e]}function BS(t){for(let e in t)return!1;return!0}L();function qg(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Gg(t){return Array.isArray(t)?t.length===0||typeof t[0]=="number":!1}function Zf(t){return qg(t)||Gg(t)}function FS(t){return Zf(t)||typeof t=="number"||typeof t=="boolean"}function Qg(t,e={}){let r={bindings:{},uniforms:{}};return Object.keys(t).forEach(i=>{let s=t[i];Object.prototype.hasOwnProperty.call(e,i)||FS(s)?r.uniforms[i]=s:r.bindings[i]=s}),r}var jn=class{options={disableWarnings:!1};modules;moduleUniforms;moduleBindings;constructor(e,r){Object.assign(this.options,r);let i=mi(Object.values(e).filter(LS));for(let s of i)e[s.name]=s;x.log(1,"Creating ShaderInputs with modules",Object.keys(e))(),this.modules=e,this.moduleUniforms={},this.moduleBindings={};for(let[s,o]of Object.entries(e))o&&(this._addModule(o),o.name&&s!==o.name&&!this.options.disableWarnings&&x.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||x.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}=Qg(c,o.uniformTypes);this.moduleUniforms[i]=Jg(n,l,o.uniformTypes),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]=Jg({},e.defaultUniforms||{},e.uniformTypes),this.moduleBindings[r]={}}};function Jg(t={},e={},r={}){let i={...t};for(let[s,o]of Object.entries(e))o!==void 0&&(i[s]=qf(t[s],o,r[s]));return i}function qf(t,e,r){if(!r||typeof r=="string")return Ts(e);if(Array.isArray(r)){if(Gf(e)||!Array.isArray(e))return Ts(e);let n=Array.isArray(t)&&!Gf(t)?[...t]:[],a=n.slice();for(let c=0;c<e.length;c++){let l=e[c];l!==void 0&&(a[c]=qf(n[c],l,r[0]))}return a}if(!Qf(e))return Ts(e);let i=r,s=Qf(t)?t:{},o={...s};for(let[n,a]of Object.entries(e))a!==void 0&&(o[n]=qf(s[n],a,i[n]));return o}function Ts(t){return ArrayBuffer.isView(t)?Array.prototype.slice.call(t):Array.isArray(t)?Gf(t)?t.slice():t.map(r=>r===void 0?void 0:Ts(r)):Qf(t)?Object.fromEntries(Object.entries(t).map(([e,r])=>[e,r===void 0?void 0:Ts(r)])):t}function Gf(t){return ArrayBuffer.isView(t)||Array.isArray(t)&&(t.length===0||typeof t[0]=="number")}function Qf(t){return Boolean(t)&&typeof t=="object"&&!Array.isArray(t)&&!ArrayBuffer.isView(t)}function LS(t){return Boolean(t?.dependencies)}L();L();var Jf={"+X":0,"-X":1,"+Y":2,"-Y":3,"+Z":4,"-Z":5};function xs(t){return t?Array.isArray(t)?t[0]??null:t:null}function em(t){let{dimension:e,data:r}=t;if(!r)return null;switch(e){case"1d":{let i=xs(r);if(!i)return null;let{width:s}=As(i);return{width:s,height:1}}case"2d":{let i=xs(r);return i?As(i):null}case"3d":case"2d-array":{if(!Array.isArray(r)||r.length===0)return null;let i=xs(r[0]);return i?As(i):null}case"cube":{let i=Object.keys(r)[0]??null;if(!i)return null;let s=r[i],o=xs(s);return o?As(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=xs(i[s]);return o?As(o):null}default:return null}}function As(t){if(ri(t))return es(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 US(t){return typeof t=="object"&&t!==null&&"data"in t&&"width"in t&&"height"in t}function kS(t){return ArrayBuffer.isView(t)}function eh(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 tm(t){let e=Jf[t];if(e===void 0)throw new Error(`Invalid cube face: ${t}`);return e}function VS(t,e){return 6*t+tm(e)}function th(t){throw new Error("setTexture1DData not supported in WebGL.")}function zS(t){return Array.isArray(t)?t:[t]}function vr(t,e,r,i){let s=zS(e),o=t,n=[];for(let a=0;a<s.length;a++){let c=s[a];if(ri(c))n.push({type:"external-image",image:c,z:o,mipLevel:a});else if(US(c))n.push({type:"texture-data",data:c,textureFormat:eh(c),z:o,mipLevel:a});else if(kS(c)&&r)n.push({type:"texture-data",data:{data:c,width:Math.max(1,r.width>>a),height:Math.max(1,r.height>>a),...i?{format:i}:{}},textureFormat:i,z:o,mipLevel:a});else throw new Error("Unsupported 2D mip-level payload")}return n}function rh(t){let e=[];for(let r=0;r<t.length;r++)e.push(...vr(r,t[r]));return e}function ih(t){let e=[];for(let r=0;r<t.length;r++)e.push(...vr(r,t[r]));return e}function sh(t){let e=[];for(let[r,i]of Object.entries(t)){let s=tm(r);e.push(...vr(s,i))}return e}function oh(t){let e=[];return t.forEach((r,i)=>{for(let[s,o]of Object.entries(r)){let n=VS(i,s);e.push(...vr(n,o))}}),e}var ah=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=oe("dynamic-texture"),s=r;this.props={...ah.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?WS({...r,width:e.width,height:e.height,format:e.format}):[],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=em(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=jS(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=B.SAMPLE|B.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"?B.SAMPLE|B.STORAGE|B.COPY_DST|B.COPY_SRC:B.SAMPLE|B.RENDER|B.COPY_DST|B.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&&x.warn(`${this} skipping auto-generated mipmaps for compressed texture format`)(),h&&this.generateMipmaps(),this.isReady=!0,this.resolveReady(this.texture),x.info(0,`${this} created`)()}catch(r){let i=r instanceof Error?r:new Error(String(r));this.rejectReady(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):x.warn(`${this} mipmaps not supported on ${this.device.type}`)}setSampler(e={}){this._checkReady();let r=e instanceof Be?e:this.device.createSampler(e);this.texture.setSampler(r),this._sampler=r}async readBuffer(e={}){this.isReady||await this.ready;let r=e.width??this.texture.width,i=e.height??this.texture.height,s=e.depthOrArrayLayers??this.texture.depth,o=this.texture.computeMemoryLayout({width:r,height:i,depthOrArrayLayers:s}),n=this.device.createBuffer({byteLength:o.byteLength,usage:I.COPY_DST|I.MAP_READ});this.texture.readBuffer({...e,width:r,height:i,depthOrArrayLayers:s},n);let a=this.device.createFence();return await a.signaled,a.destroy(),n}async readAsync(e={}){this.isReady||await this.ready;let r=e.width??this.texture.width,i=e.height??this.texture.height,s=e.depthOrArrayLayers??this.texture.depth,o=this.texture.computeMemoryLayout({width:r,height:i,depthOrArrayLayers:s}),n=await this.readBuffer(e),a=await n.readAsync(0,o.byteLength);return n.destroy(),a.buffer}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(),x.info(`${this} resized`),!0}getCubeFaceIndex(e){let r=Jf[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=th(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=vr(r,e);this._setTextureSubresources(i)}setTexture3DData(e){if(this.texture.props.dimension!=="3d")throw new Error(`${this} is not 3d`);let r=rh(e);this._setTextureSubresources(r)}setTextureArrayData(e){if(this.texture.props.dimension!=="2d-array")throw new Error(`${this} is not 2d-array`);let r=ih(e);this._setTextureSubresources(r)}setTextureCubeData(e){if(this.texture.props.dimension!=="cube")throw new Error(`${this} is not cube`);let r=sh(e);this._setTextureSubresources(r)}setTextureCubeArrayData(e){if(this.texture.props.dimension!=="cube-array")throw new Error(`${this} is not cube-array`);let r=oh(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 nh(e.data);return{dimension:e.dimension??"2d",data:r??null}}_checkNotDestroyed(){this.destroyed&&x.warn(`${this} already destroyed`)}_checkReady(){this.isReady||x.warn(`${this} Cannot perform this operation before ready`)}},tr=ah;P(tr,"defaultProps",{...B.defaultProps,dimension:"2d",data:null,mipmaps:!1});function WS(t){if(!t.data)return[];let e=t.width&&t.height?{width:t.width,height:t.height}:void 0,r="format"in t?t.format:void 0;switch(t.dimension){case"1d":return th(t.data);case"2d":return vr(0,t.data,e,r);case"3d":return rh(t.data);case"2d-array":return ih(t.data);case"cube":return sh(t.data);case"cube-array":return oh(t.data);default:throw new Error(`Unhandled dimension ${t.dimension}`)}}function jS(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((b,y)=>b.mipLevel-y.mipLevel),d=u[0];if(!d||d.mipLevel!==0)throw new Error(`DynamicTexture: slice ${f} is missing mip level 0`);let p=im(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=rm(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)?HS(t,p.width,p.height,n):t.getMipLevelCount(p.width,p.height),_=0;for(let b=0;b<u.length;b++){let y=u[b];if(!y||y.mipLevel!==b||b>=m)break;let T=im(t,y),S=Math.max(1,p.width>>b),A=Math.max(1,p.height>>b);if(T.width!==S||T.height!==A)break;let w=rm(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 rm(t){if(t.type==="texture-data")return t.textureFormat??eh(t.data)}function im(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 HS(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 nh(t){if(t=await t,Array.isArray(t))return await Promise.all(t.map(nh));if(t&&typeof t=="object"&&t.constructor===Object){let e=t,r=await Promise.all(Object.values(e).map(nh)),i=Object.keys(e),s={};for(let o=0;o<i.length;o++)s[i[o]]=r[o];return s}return t}var Mr=2,$S=1e4,ch=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;material=null;_uniformStore;_attributeInfos={};_gpuGeometry=null;props;_pipelineNeedsUpdate="newly created";_needsRedraw="initializing";_destroyed=!1;_lastDrawTimestamp=-1;_bindingTable=[];get[Symbol.toStringTag](){return"Model"}toString(){return`Model(${this.id})`}constructor(e,r){this.props={...ch.defaultProps,...r},r=this.props,this.id=r.id||oe("model"),this.device=e,Object.assign(this.userData,r.userData),this.material=r.material||null;let i=Object.fromEntries(this.props.modules?.map(c=>[c.name,c])||[]),s=r.shaderInputs||new jn(i,{disableWarnings:this.props.disableWarnings});this.setShaderInputs(s);let o=XS(e),n=(this.props.modules?.length>0?this.props.modules:this.shaderInputs?.getModules())||[];if(this.props.shaderLayout=Kf(this.props.shaderLayout,n)||null,this.device.type==="webgpu"&&this.props.source){let{source:c,getUniforms:l,bindingTable:f}=this.props.shaderAssembler.assembleWGSLShader({platformInfo:o,...this.props,modules:n});this.source=c,this._getModuleUniforms=l,this._bindingTable=f;let h=e.getShaderLayout?.(this.source);this.props.shaderLayout=Kf(this.props.shaderLayout||h||null,n)||null}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._bindingTable=[]}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||oi.getDefaultPipelineFactory(this.device),this.shaderFactory=r.shaderFactory||ni.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}getBindingDebugTable(){return this._bindingTable}predraw(){this.updateShaderInputs(),this.pipeline=this._updatePipeline()}draw(e){let r=this._areBindingsLoading();if(r)return x.info(Mr,`>>> 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(),o=this._getBindGroups(),{indexBuffer:n}=this.vertexArray,a=n?n.byteLength/(n.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:a,transformFeedback:this.transformFeedback||void 0,bindings:s,bindGroups:o,_bindGroupCacheKeys:this._getBindGroupCacheKeys(),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&&Hg(this.device,e);if(r){this.setTopology(r.topology||"triangle-list");let i=new Ti(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 Ti(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){Wn(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 fs(this.device,this.shaderInputs.modules);for(let[r,i]of Object.entries(this.shaderInputs.modules))if(Zg(i)&&!this.material?.ownsModule(r)){let s=this._uniformStore.getManagedUniformBuffer(r);this.bindings[`${r}Uniforms`]=s}this.setNeedsRedraw("shaderInputs")}setMaterial(e){this.material=e,this.setNeedsRedraw("material")}updateShaderInputs(){this._uniformStore.setUniforms(this.shaderInputs.getUniformValues()),this.setBindings(this._getNonMaterialBindings(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&&x.warn(`Model:${this.id} setAttributes() - indexBuffer should be set using setIndexBuffer()`)(),this.bufferLayout=Kg(this.pipeline.shaderLayout,this.bufferLayout);let s=new Ti(this.bufferLayout);for(let[o,n]of Object.entries(e)){let a=s.getBufferLayout(o);if(!a){i||x.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&&x.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)||x.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 tr&&!e.isReady)return e.id;for(let e of Object.values(this.material?.bindings||{}))if(e instanceof tr&&!e.isReady)return e.id;return!1}_getBindings(){let e={};for(let[r,i]of Object.entries(this.bindings))i instanceof tr?i.isReady&&(e[r]=i.texture):e[r]=i;return e}_getBindGroups(){let e=this.pipeline?.shaderLayout||this.props.shaderLayout||{bindings:[]},r=e.bindings.length?as(e,this._getBindings()):{0:this._getBindings()};if(!this.material)return r;for(let[i,s]of Object.entries(this.material.getBindingsByGroup())){let o=Number(i);r[o]={...r[o]||{},...s}}return r}_getBindGroupCacheKeys(){let e=this.material?.getBindGroupCacheKey(3);return e?{3:e}:{}}_getBindingsUpdateTimestamp(){let e=0;for(let r of Object.values(this.bindings))r instanceof qt?e=Math.max(e,r.texture.updateTimestamp):r instanceof I||r instanceof B?e=Math.max(e,r.updateTimestamp):r instanceof tr?e=r.texture?Math.max(e,r.texture.updateTimestamp):1/0:r instanceof Be||(e=Math.max(e,r.buffer.updateTimestamp));return Math.max(e,this.material?.getBindingsUpdateTimestamp()||0)}_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&&(x.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,bindings:void 0,bufferLayout:this.bufferLayout,topology:this.topology,parameters:this.parameters,bindGroups:this._getBindGroups(),vs:i,fs:s}),this._attributeInfos=_n(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=x.level>3?0:$S;x.level<2||Date.now()-this._lastLogTime<e||(this._lastLogTime=Date.now(),this._logOpen=!0,x.group(Mr,`>>> DRAWING MODEL ${this.id}`,{collapsed:x.level<=2})())}_logDrawCallEnd(){if(this._logOpen){let e=$g(this.pipeline.shaderLayout,this.id);x.table(Mr,e)();let r=this.shaderInputs.getDebugTable();x.table(Mr,r)();let i=this._getAttributeDebugTable();x.table(Mr,this._attributeInfos)(),x.table(Mr,i)(),x.groupEnd(Mr)(),this._logOpen=!1}}_drawCount=0;_logFramebuffer(e){let r=this.device.props.debugFramebuffers;if(this._drawCount++,!r)return;let i=e.props.framebuffer;i&&Xg(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=de.getTypedArrayConstructor(r);return(e instanceof I?new i(e.debugData):e).toString()}_getNonMaterialBindings(e){if(!this.material)return e;let r={};for(let[i,s]of Object.entries(e))this.material.ownsBinding(i)||(r[i]=s);return r}},ve=ch;P(ve,"defaultProps",{...Re.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,material:void 0,pipelineFactory:void 0,shaderFactory:void 0,transformFeedback:void 0,shaderAssembler:Jt.getDefaultShaderAssembler(),debugShaders:void 0,disableWarnings:void 0});function XS(t){return{type:t.type,shaderLanguage:t.info.shadingLanguage,shaderLanguageVersion:t.info.shadingLanguageVersion,gpu:t.info.gpu,features:t.features}}L();var Hn=class{device;model;transformFeedback;static isSupported(e){return e?.info?.type==="webgl"}constructor(e,r=Hn.defaultProps){if(!Hn.isSupported(e))throw new Error("BufferTransform not yet implemented on WebGPU");this.device=e,this.model=new ve(this.device,{id:r.id||"buffer-transform-model",fs:r.fs||ps(),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 I)return r.readAsync();let{buffer:i,byteOffset:s=0,byteLength:o=i.byteLength}=r;return i.readAsync(s,o)}},je=Hn;P(je,"defaultProps",{...ve.defaultProps,outputs:void 0,feedbackBuffers:void 0});var YS="transform_output",Ss=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 ve(this.device,{id:r.id||oe("texture-transform-model"),fs:r.fs||ps({input:r.targetTextureVarying,inputChannels:r.targetTextureChannels,output:YS}),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 He=class{id;topology;vertexCount;indices;attributes;userData={};constructor(e){let{attributes:r={},indices:i=null,vertexCount:s=null}=e;this.id=e.id||oe("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 KS=`struct VertexInputs {
1201
+ `;var tE=[38.25,38.25,38.25],Eo={props:{},name:"gouraudMaterial",bindingLayout:[{name:"gouraudMaterial",group:3}],vs:Hs.replace("phongMaterial","gouraudMaterial"),fs:$s.replace("phongMaterial","gouraudMaterial"),source:Xs.replaceAll("phongMaterial","gouraudMaterial"),defines:{LIGHTING_VERTEX:!0},dependencies:[js,ks],uniformTypes:{unlit:"i32",ambient:"f32",diffuse:"f32",shininess:"f32",specularColor:"vec3<f32>"},defaultUniforms:{unlit:!1,ambient:.35,diffuse:.6,shininess:32,specularColor:tE},getUniforms(t){return{...Eo.defaultUniforms,...t}}};var rE=[38.25,38.25,38.25],wo={name:"phongMaterial",firstBindingSlot:0,bindingLayout:[{name:"phongMaterial",group:3}],dependencies:[js,ks],source:Xs,vs:$s,fs:Hs,defines:{LIGHTING_FRAGMENT:!0},uniformTypes:{unlit:"i32",ambient:"f32",diffuse:"f32",shininess:"f32",specularColor:"vec3<f32>"},defaultUniforms:{unlit:!1,ambient:.35,diffuse:.6,shininess:32,specularColor:rE},getUniforms(t){return{...wo.defaultUniforms,...t}}};F();var oh={};function ne(t="id"){oh[t]=oh[t]||1;let e=oh[t]++;return`${t}-${e}`}var Ys=class{id;userData={};topology;bufferLayout=[];vertexCount;indices;attributes;constructor(e){if(this.id=e.id||ne("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&I.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 im(t,e){if(e instanceof Ys)return e;let r=iE(t,e),{attributes:i,bufferLayout:o}=oE(t,e);return new Ys({topology:e.topology||"triangle-list",bufferLayout:o,vertexCount:e.vertexCount,indices:r,attributes:i})}function iE(t,e){if(!e.indices)return;let r=e.indices.value;return t.createBuffer({usage:I.INDEX,data:r})}function oE(t,e){let r=[],i={};for(let[n,s]of Object.entries(e.attributes)){let a=n;switch(n){case"POSITION":a="positions";break;case"NORMAL":a="normals";break;case"TEXCOORD_0":a="texCoords";break;case"TEXCOORD_1":a="texCoords1";break;case"COLOR_0":a="colors";break}if(s){i[a]=t.createBuffer({data:s.value,id:`${n}-buffer`});let{value:c,size:l,normalized:f}=s;if(l===void 0)throw new Error(`Attribute ${n} is missing a size`);r.push({name:a,format:vt.getVertexFormatFromAttribute(c,l,f)})}}let o=e._calculateVertexCount(e.attributes,e.indices);return{attributes:i,bufferLayout:r,vertexCount:o}}function om(t,e){let r={},i="Values";if(t.attributes.length===0&&!t.varyings?.length)return{"No attributes or varyings":{[i]:"N/A"}};for(let o of t.attributes)if(o){let n=`${o.location} ${o.name}: ${o.type}`;r[`in ${n}`]={[i]:o.stepMode||"vertex"}}for(let o of t.varyings||[]){let n=`${o.location} ${o.name}`;r[`out ${n}`]={[i]:JSON.stringify(o)}}return r}var nm="__debugFramebufferState";function am(t,e,r){if(t.device.type!=="webgl")return;let i=aE(t.device);if(!i.flushing){if(lE(t)){nE(t,r,i);return}e&&cE(e)&&e.handle!==null&&(i.queuedFramebuffers.includes(e)||i.queuedFramebuffers.push(e))}}function nE(t,e,r){if(r.queuedFramebuffers.length===0)return;let i=t.device,{gl:o}=i,n=o.getParameter(36010),s=o.getParameter(36006),[a,c]=t.device.getDefaultCanvasContext().getDrawingBufferSize(),l=sm(e.top,8),f=sm(e.left,8);r.flushing=!0;try{for(let h of r.queuedFramebuffers){let[u,d,p,g,m]=sE({framebuffer:h,targetWidth:a,targetHeight:c,topPx:l,leftPx:f,minimap:e.minimap});o.bindFramebuffer(36008,h.handle),o.bindFramebuffer(36009,null),o.blitFramebuffer(0,0,h.width,h.height,u,d,p,g,16384,9728),l+=m+8}}finally{o.bindFramebuffer(36008,n),o.bindFramebuffer(36009,s),r.flushing=!1}}function sE(t){let{framebuffer:e,targetWidth:r,targetHeight:i,topPx:o,leftPx:n,minimap:s}=t,a=s?Math.max(Math.floor(r/4),1):r,c=s?Math.max(Math.floor(i/4),1):i,l=Math.min(a/e.width,c/e.height),f=Math.max(Math.floor(e.width*l),1),h=Math.max(Math.floor(e.height*l),1),u=n,d=Math.max(i-o-h,0),p=u+f,g=d+h;return[u,d,p,g,h]}function aE(t){return t.userData[nm]||={flushing:!1,queuedFramebuffers:[]},t.userData[nm]}function cE(t){return"colorAttachments"in t}function lE(t){let e=t.props.framebuffer;return!e||e.handle===null}function sm(t,e){if(!t)return e;let r=Number.parseInt(t,10);return Number.isFinite(r)?r:e}function Ks(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(!Ks(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),o=Object.keys(e);if(i.length!==o.length)return!1;for(let n of i)if(!e.hasOwnProperty(n)||!Ks(t[n],e[n],r-1))return!1;return!0}return!1}F();var wi=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 o of r){let n=i.findIndex(s=>s.name===o.name);n<0?i.push(o):i[n]=o}return i}getBufferIndex(e){let r=this.bufferLayouts.findIndex(i=>i.name===e);return r===-1&&x.warn(`BufferLayout: Missing buffer for "${e}".`)(),r}};function cm(t,e){let r=1/0;for(let i of t){let o=e[i];o!==void 0&&(r=Math.min(r,o))}return r}function lm(t,e){let r=Object.fromEntries(t.attributes.map(o=>[o.name,o.location])),i=e.slice();return i.sort((o,n)=>{let s=o.attributes?o.attributes.map(f=>f.attribute):[o.name],a=n.attributes?n.attributes.map(f=>f.attribute):[n.name],c=cm(s,r),l=cm(a,r);return c-l}),i}function nh(t,e){if(!t||!e.some(i=>i.bindingLayout?.length))return t;let r={...t,bindings:t.bindings.map(i=>({...i}))};"attributes"in(t||{})&&(r.attributes=t?.attributes||[]);for(let i of e)for(let o of i.bindingLayout||[])for(let n of fE(o.name)){let s=r.bindings.find(a=>a.name===n);s?.group===0&&(s.group=o.group)}return r}function fm(t){return Boolean(t.uniformTypes&&!hE(t.uniformTypes))}function fE(t){let e=new Set([t,`${t}Uniforms`]);return t.endsWith("Uniforms")||e.add(`${t}Sampler`),[...e]}function hE(t){for(let e in t)return!1;return!0}F();function hm(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function um(t){return Array.isArray(t)?t.length===0||typeof t[0]=="number":!1}function sh(t){return hm(t)||um(t)}function uE(t){return sh(t)||typeof t=="number"||typeof t=="boolean"}function dm(t,e={}){let r={bindings:{},uniforms:{}};return Object.keys(t).forEach(i=>{let o=t[i];Object.prototype.hasOwnProperty.call(e,i)||uE(o)?r.uniforms[i]=o:r.bindings[i]=o}),r}var Zs=class{options={disableWarnings:!1};modules;moduleUniforms;moduleBindings;constructor(e,r){Object.assign(this.options,r);let i=bi(Object.values(e).filter(dE));for(let o of i)e[o.name]=o;x.log(1,"Creating ShaderInputs with modules",Object.keys(e))(),this.modules=e,this.moduleUniforms={},this.moduleBindings={};for(let[o,n]of Object.entries(e))n&&(this._addModule(n),n.name&&o!==n.name&&!this.options.disableWarnings&&x.warn(`Module name: ${o} vs ${n.name}`)())}destroy(){}setProps(e){for(let r of Object.keys(e)){let i=r,o=e[i]||{},n=this.modules[i];if(!n)this.options.disableWarnings||x.warn(`Module ${r} not found`)();else{let s=this.moduleUniforms[i],a=this.moduleBindings[i],c=n.getUniforms?.(o,s)||o,{uniforms:l,bindings:f}=dm(c,n.uniformTypes);this.moduleUniforms[i]=pm(s,l,n.uniformTypes),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[o,n]of Object.entries(i))e[`${r}.${o}`]={type:this.modules[r].uniformTypes?.[o],value:String(n)};return e}_addModule(e){let r=e.name;this.moduleUniforms[r]=pm({},e.defaultUniforms||{},e.uniformTypes),this.moduleBindings[r]={}}};function pm(t={},e={},r={}){let i={...t};for(let[o,n]of Object.entries(e))n!==void 0&&(i[o]=ah(t[o],n,r[o]));return i}function ah(t,e,r){if(!r||typeof r=="string")return Ro(e);if(Array.isArray(r)){if(ch(e)||!Array.isArray(e))return Ro(e);let s=Array.isArray(t)&&!ch(t)?[...t]:[],a=s.slice();for(let c=0;c<e.length;c++){let l=e[c];l!==void 0&&(a[c]=ah(s[c],l,r[0]))}return a}if(!lh(e))return Ro(e);let i=r,o=lh(t)?t:{},n={...o};for(let[s,a]of Object.entries(e))a!==void 0&&(n[s]=ah(o[s],a,i[s]));return n}function Ro(t){return ArrayBuffer.isView(t)?Array.prototype.slice.call(t):Array.isArray(t)?ch(t)?t.slice():t.map(r=>r===void 0?void 0:Ro(r)):lh(t)?Object.fromEntries(Object.entries(t).map(([e,r])=>[e,r===void 0?void 0:Ro(r)])):t}function ch(t){return ArrayBuffer.isView(t)||Array.isArray(t)&&(t.length===0||typeof t[0]=="number")}function lh(t){return Boolean(t)&&typeof t=="object"&&!Array.isArray(t)&&!ArrayBuffer.isView(t)}function dE(t){return Boolean(t?.dependencies)}F();F();var fh={"+X":0,"-X":1,"+Y":2,"-Y":3,"+Z":4,"-Z":5};function Po(t){return t?Array.isArray(t)?t[0]??null:t:null}function gm(t){let{dimension:e,data:r}=t;if(!r)return null;switch(e){case"1d":{let i=Po(r);if(!i)return null;let{width:o}=vo(i);return{width:o,height:1}}case"2d":{let i=Po(r);return i?vo(i):null}case"3d":case"2d-array":{if(!Array.isArray(r)||r.length===0)return null;let i=Po(r[0]);return i?vo(i):null}case"cube":{let i=Object.keys(r)[0]??null;if(!i)return null;let o=r[i],n=Po(o);return n?vo(n):null}case"cube-array":{if(!Array.isArray(r)||r.length===0)return null;let i=r[0],o=Object.keys(i)[0]??null;if(!o)return null;let n=Po(i[o]);return n?vo(n):null}default:return null}}function vo(t){if(ni(t))return no(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 pE(t){return typeof t=="object"&&t!==null&&"data"in t&&"width"in t&&"height"in t}function gE(t){return ArrayBuffer.isView(t)}function hh(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 mm(t){let e=fh[t];if(e===void 0)throw new Error(`Invalid cube face: ${t}`);return e}function mE(t,e){return 6*t+mm(e)}function uh(t){throw new Error("setTexture1DData not supported in WebGL.")}function _E(t){return Array.isArray(t)?t:[t]}function Dr(t,e,r,i){let o=_E(e),n=t,s=[];for(let a=0;a<o.length;a++){let c=o[a];if(ni(c))s.push({type:"external-image",image:c,z:n,mipLevel:a});else if(pE(c))s.push({type:"texture-data",data:c,textureFormat:hh(c),z:n,mipLevel:a});else if(gE(c)&&r)s.push({type:"texture-data",data:{data:c,width:Math.max(1,r.width>>a),height:Math.max(1,r.height>>a),...i?{format:i}:{}},textureFormat:i,z:n,mipLevel:a});else throw new Error("Unsupported 2D mip-level payload")}return s}function dh(t){let e=[];for(let r=0;r<t.length;r++)e.push(...Dr(r,t[r]));return e}function ph(t){let e=[];for(let r=0;r<t.length;r++)e.push(...Dr(r,t[r]));return e}function gh(t){let e=[];for(let[r,i]of Object.entries(t)){let o=mm(r);e.push(...Dr(o,i))}return e}function mh(t){let e=[];return t.forEach((r,i)=>{for(let[o,n]of Object.entries(r)){let s=mE(i,o);e.push(...Dr(s,n))}}),e}var yh=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(){let e=this._texture?.width??this.props.width??"?",r=this._texture?.height??this.props.height??"?";return`DynamicTexture:"${this.id}":${e}x${r}px:(${this.isReady?"ready":"loading..."})`}constructor(e,r){this.device=e;let i=ne("dynamic-texture"),o=r;this.props={...yh.defaultProps,id:i,...r,data:null},this.id=this.props.id,this.ready=new Promise((n,s)=>{this.resolveReady=n,this.rejectReady=s}),this.initAsync(o)}async initAsync(e){try{let r=await this._loadAllData(e);this._checkNotDestroyed();let i=r.data?yE({...r,width:e.width,height:e.height,format:e.format}):[],o="format"in e&&e.format!==void 0,n="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=gm(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=bE(this.device,i,a,{format:o?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)&&!n&&(f.usage=B.SAMPLE|B.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"?B.SAMPLE|B.STORAGE|B.COPY_DST|B.COPY_SRC:B.SAMPLE|B.RENDER|B.COPY_DST|B.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&&x.warn(`${this} skipping auto-generated mipmaps for compressed texture format`)(),h&&this.generateMipmaps(),this.isReady=!0,this.resolveReady(this.texture),x.info(0,`${this} created`)()}catch(r){let i=r instanceof Error?r:new Error(String(r));this.rejectReady(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):x.warn(`${this} mipmaps not supported on ${this.device.type}`)}setSampler(e={}){this._checkReady();let r=e instanceof Be?e:this.device.createSampler(e);this.texture.setSampler(r),this._sampler=r}async readBuffer(e={}){this.isReady||await this.ready;let r=e.width??this.texture.width,i=e.height??this.texture.height,o=e.depthOrArrayLayers??this.texture.depth,n=this.texture.computeMemoryLayout({width:r,height:i,depthOrArrayLayers:o}),s=this.device.createBuffer({byteLength:n.byteLength,usage:I.COPY_DST|I.MAP_READ});this.texture.readBuffer({...e,width:r,height:i,depthOrArrayLayers:o},s);let a=this.device.createFence();return await a.signaled,a.destroy(),s}async readAsync(e={}){this.isReady||await this.ready;let r=e.width??this.texture.width,i=e.height??this.texture.height,o=e.depthOrArrayLayers??this.texture.depth,n=this.texture.computeMemoryLayout({width:r,height:i,depthOrArrayLayers:o}),s=await this.readBuffer(e),a=await s.readAsync(0,n.byteLength);return s.destroy(),a.buffer}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(),x.info(`${this} resized`),!0}getCubeFaceIndex(e){let r=fh[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=uh(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=Dr(r,e);this._setTextureSubresources(i)}setTexture3DData(e){if(this.texture.props.dimension!=="3d")throw new Error(`${this} is not 3d`);let r=dh(e);this._setTextureSubresources(r)}setTextureArrayData(e){if(this.texture.props.dimension!=="2d-array")throw new Error(`${this} is not 2d-array`);let r=ph(e);this._setTextureSubresources(r)}setTextureCubeData(e){if(this.texture.props.dimension!=="cube")throw new Error(`${this} is not cube`);let r=gh(e);this._setTextureSubresources(r)}setTextureCubeArrayData(e){if(this.texture.props.dimension!=="cube-array")throw new Error(`${this} is not cube-array`);let r=mh(e);this._setTextureSubresources(r)}_setTextureSubresources(e){for(let r of e){let{z:i,mipLevel:o}=r;switch(r.type){case"external-image":let{image:n,flipY:s}=r;this.texture.copyExternalImage({image:n,z:i,mipLevel:o,flipY:s});break;case"texture-data":let{data:a,textureFormat:c}=r;if(c&&c!==this.texture.format)throw new Error(`${this} mip level ${o} 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:o});break;default:throw new Error("Unsupported 2D mip-level payload")}}}async _loadAllData(e){let r=await _h(e.data);return{dimension:e.dimension??"2d",data:r??null}}_checkNotDestroyed(){this.destroyed&&x.warn(`${this} already destroyed`)}_checkReady(){this.isReady||x.warn(`${this} Cannot perform this operation before ready`)}},or=yh;M(or,"defaultProps",{...B.defaultProps,dimension:"2d",data:null,mipmaps:!1});function yE(t){if(!t.data)return[];let e=t.width&&t.height?{width:t.width,height:t.height}:void 0,r="format"in t?t.format:void 0;switch(t.dimension){case"1d":return uh(t.data);case"2d":return Dr(0,t.data,e,r);case"3d":return dh(t.data);case"2d-array":return ph(t.data);case"cube":return gh(t.data);case"cube-array":return mh(t.data);default:throw new Error(`Unhandled dimension ${t.dimension}`)}}function bE(t,e,r,i){if(e.length===0)return{subresources:e,mipLevels:1,format:i.format,hasExplicitMipChain:!1};let o=new Map;for(let f of e){let h=o.get(f.z)??[];h.push(f),o.set(f.z,h)}let n=e.some(f=>f.mipLevel>0),s=i.format,a=Number.POSITIVE_INFINITY,c=[];for(let[f,h]of o){let u=[...h].sort((b,y)=>b.mipLevel-y.mipLevel),d=u[0];if(!d||d.mipLevel!==0)throw new Error(`DynamicTexture: slice ${f} is missing mip level 0`);let p=ym(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=_m(d);if(g){if(s&&s!==g)throw new Error(`DynamicTexture: slice ${f} base level format "${g}" does not match texture format "${s}"`);s=g}let m=s&&t.isTextureFormatCompressed(s)?TE(t,p.width,p.height,s):t.getMipLevelCount(p.width,p.height),_=0;for(let b=0;b<u.length;b++){let y=u[b];if(!y||y.mipLevel!==b||b>=m)break;let T=ym(t,y),S=Math.max(1,p.width>>b),A=Math.max(1,p.height>>b);if(T.width!==S||T.height!==A)break;let w=_m(y);if(w&&(s||(s=w),w!==s))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:s,hasExplicitMipChain:n}}function _m(t){if(t.type==="texture-data")return t.textureFormat??hh(t.data)}function ym(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 TE(t,e,r,i){let{blockWidth:o=1,blockHeight:n=1}=t.getTextureFormatInfo(i),s=1;for(let a=1;;a++){let c=Math.max(1,e>>a),l=Math.max(1,r>>a);if(c<o||l<n)break;s++}return s}async function _h(t){if(t=await t,Array.isArray(t))return await Promise.all(t.map(_h));if(t&&typeof t=="object"&&t.constructor===Object){let e=t,r=await Promise.all(Object.values(e).map(_h)),i=Object.keys(e),o={};for(let n=0;n<i.length;n++)o[i[n]]=r[n];return o}return t}var nr=2,xE=1e4,bm="render pipeline initialization failed",bh=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;material=null;_uniformStore;_attributeInfos={};_gpuGeometry=null;props;_pipelineNeedsUpdate="newly created";_needsRedraw="initializing";_destroyed=!1;_lastDrawTimestamp=-1;_bindingTable=[];get[Symbol.toStringTag](){return"Model"}toString(){return`Model(${this.id})`}constructor(e,r){this.props={...bh.defaultProps,...r},r=this.props,this.id=r.id||ne("model"),this.device=e,Object.assign(this.userData,r.userData),this.material=r.material||null;let i=Object.fromEntries(this.props.modules?.map(c=>[c.name,c])||[]),o=r.shaderInputs||new Zs(i,{disableWarnings:this.props.disableWarnings});this.setShaderInputs(o);let n=AE(e),s=(this.props.modules?.length>0?this.props.modules:this.shaderInputs?.getModules())||[];if(this.props.shaderLayout=nh(this.props.shaderLayout,s)||null,this.device.type==="webgpu"&&this.props.source){let{source:c,getUniforms:l,bindingTable:f}=this.props.shaderAssembler.assembleWGSLShader({platformInfo:n,...this.props,modules:s});this.source=c,this._getModuleUniforms=l,this._bindingTable=f;let h=e.getShaderLayout?.(this.source);this.props.shaderLayout=nh(this.props.shaderLayout||h||null,s)||null}else{let{vs:c,fs:l,getUniforms:f}=this.props.shaderAssembler.assembleGLSLShaderPair({platformInfo:n,...this.props,modules:s});this.vs=c,this.fs=l,this._getModuleUniforms=f,this._bindingTable=[]}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||ci.getDefaultPipelineFactory(this.device),this.shaderFactory=r.shaderFactory||li.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}getBindingDebugTable(){return this._bindingTable}predraw(){this.updateShaderInputs(),this.pipeline=this._updatePipeline()}draw(e){let r=this._areBindingsLoading();if(r)return x.info(nr,`>>> DRAWING ABORTED ${this.id}: ${r} not loaded`)(),!1;try{e.pushDebugGroup(`${this}.predraw(${e})`),this.predraw()}finally{e.popDebugGroup()}let i,o=this.pipeline.isErrored;try{if(e.pushDebugGroup(`${this}.draw(${e})`),this._logDrawCallStart(),this.pipeline=this._updatePipeline(),o=this.pipeline.isErrored,o)x.info(nr,`>>> DRAWING ABORTED ${this.id}: ${bm}`)(),i=!1;else{let n=this._getBindings(),s=this._getBindGroups(),{indexBuffer:a}=this.vertexArray,c=a?a.byteLength/(a.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:c,transformFeedback:this.transformFeedback||void 0,bindings:n,bindGroups:s,_bindGroupCacheKeys:this._getBindGroupCacheKeys(),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):o?this._needsRedraw=bm:this._needsRedraw="waiting for resource initialization",i}setGeometry(e){this._gpuGeometry?.destroy();let r=e&&im(this.device,e);if(r){this.setTopology(r.topology||"triangle-list");let i=new wi(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 wi(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){Ks(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 mo(this.device,this.shaderInputs.modules);for(let[r,i]of Object.entries(this.shaderInputs.modules))if(fm(i)&&!this.material?.ownsModule(r)){let o=this._uniformStore.getManagedUniformBuffer(r);this.bindings[`${r}Uniforms`]=o}this.setNeedsRedraw("shaderInputs")}setMaterial(e){this.material=e,this.setNeedsRedraw("material")}updateShaderInputs(){this._uniformStore.setUniforms(this.shaderInputs.getUniformValues()),this.setBindings(this._getNonMaterialBindings(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&&x.warn(`Model:${this.id} setAttributes() - indexBuffer should be set using setIndexBuffer()`)(),this.bufferLayout=lm(this.pipeline.shaderLayout,this.bufferLayout);let o=new wi(this.bufferLayout);for(let[n,s]of Object.entries(e)){let a=o.getBufferLayout(n);if(!a){i||x.warn(`Model(${this.id}): Missing layout for buffer "${n}".`)();continue}let c=o.getAttributeNamesForBuffer(a),l=!1;for(let f of c){let h=this._attributeInfos[f];if(h){let u=this.device.type==="webgpu"?o.getBufferIndex(h.bufferName):h.location;this.vertexArray.setBuffer(u,s),l=!0}}!l&&!i&&x.warn(`Model(${this.id}): Ignoring buffer "${s.id}" for unknown attribute "${n}"`)()}this.setNeedsRedraw("attributes")}setConstantAttributes(e,r){for(let[i,o]of Object.entries(e)){let n=this._attributeInfos[i];n?this.vertexArray.setConstantWebGL(n.location,o):(r?.disableWarnings??this.props.disableWarnings)||x.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 or&&!e.isReady)return e.id;for(let e of Object.values(this.material?.bindings||{}))if(e instanceof or&&!e.isReady)return e.id;return!1}_getBindings(){let e={};for(let[r,i]of Object.entries(this.bindings))i instanceof or?i.isReady&&(e[r]=i.texture):e[r]=i;return e}_getBindGroups(){let e=this.pipeline?.shaderLayout||this.props.shaderLayout||{bindings:[]},r=e.bindings.length?uo(e,this._getBindings()):{0:this._getBindings()};if(!this.material)return r;for(let[i,o]of Object.entries(this.material.getBindingsByGroup())){let n=Number(i);r[n]={...r[n]||{},...o}}return r}_getBindGroupCacheKeys(){let e=this.material?.getBindGroupCacheKey(3);return e?{3:e}:{}}_getBindingsUpdateTimestamp(){let e=0;for(let r of Object.values(this.bindings))r instanceof Jt?e=Math.max(e,r.texture.updateTimestamp):r instanceof I||r instanceof B?e=Math.max(e,r.updateTimestamp):r instanceof or?e=r.texture?Math.max(e,r.texture.updateTimestamp):1/0:r instanceof Be||(e=Math.max(e,r.buffer.updateTimestamp));return Math.max(e,this.material?.getBindingsUpdateTimestamp()||0)}_setGeometryAttributes(e){let r={...e.attributes};for(let[i]of Object.entries(r))!this.pipeline.shaderLayout.attributes.find(o=>o.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&&(x.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}),o=null;this.source?o=i:this.fs&&(o=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,bindings:void 0,bufferLayout:this.bufferLayout,topology:this.topology,parameters:this.parameters,bindGroups:this._getBindGroups(),vs:i,fs:o}),this._attributeInfos=xs(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=x.level>3?0:xE;x.level<2||Date.now()-this._lastLogTime<e||(this._lastLogTime=Date.now(),this._logOpen=!0,x.group(nr,`>>> DRAWING MODEL ${this.id}`,{collapsed:x.level<=2})())}_logDrawCallEnd(){if(this._logOpen){let e=om(this.pipeline.shaderLayout,this.id);x.table(nr,e)();let r=this.shaderInputs.getDebugTable();x.table(nr,r)();let i=this._getAttributeDebugTable();x.table(nr,this._attributeInfos)(),x.table(nr,i)(),x.groupEnd(nr)(),this._logOpen=!1}}_drawCount=0;_logFramebuffer(e){let r=this.device.props.debugFramebuffers;if(this._drawCount++,!r)return;let i=e.props.framebuffer;am(e,i,{id:i?.id||`${this.id}-framebuffer`,minimap:!0})}_getAttributeDebugTable(){let e={};for(let[r,i]of Object.entries(this._attributeInfos)){let o=this.vertexArray.attributes[i.location];e[i.location]={name:r,type:i.shaderType,values:o?this._getBufferOrConstantValues(o,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=ue.getTypedArrayConstructor(r);return(e instanceof I?new i(e.debugData):e).toString()}_getNonMaterialBindings(e){if(!this.material)return e;let r={};for(let[i,o]of Object.entries(e))this.material.ownsBinding(i)||(r[i]=o);return r}},ve=bh;M(ve,"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,material:void 0,pipelineFactory:void 0,shaderFactory:void 0,transformFeedback:void 0,shaderAssembler:rr.getDefaultShaderAssembler(),debugShaders:void 0,disableWarnings:void 0});function AE(t){return{type:t.type,shaderLanguage:t.info.shadingLanguage,shaderLanguageVersion:t.info.shadingLanguageVersion,gpu:t.info.gpu,features:t.features}}F();var qs=class{device;model;transformFeedback;static isSupported(e){return e?.info?.type==="webgl"}constructor(e,r=qs.defaultProps){if(!qs.isSupported(e))throw new Error("BufferTransform not yet implemented on WebGPU");this.device=e,this.model=new ve(this.device,{id:r.id||"buffer-transform-model",fs:r.fs||To(),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 I)return r.readAsync();let{buffer:i,byteOffset:o=0,byteLength:n=i.byteLength}=r;return i.readAsync(o,n)}},$e=qs;M($e,"defaultProps",{...ve.defaultProps,outputs:void 0,feedbackBuffers:void 0});var SE="transform_output",Mo=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 ve(this.device,{id:r.id||ne("texture-transform-model"),fs:r.fs||To({input:r.targetTextureVarying,inputChannels:r.targetTextureChannels,output:SE}),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:o}){if(e||(e={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(e.sourceTextures,i),Object.assign(e.sourceBuffers,r),o){e.targetTexture=o;let{width:n,height:s}=o;e.framebuffer&&e.framebuffer.destroy(),e.framebuffer=this.device.createFramebuffer({id:"transform-framebuffer",width:n,height:s,colorAttachments:[o]}),e.framebuffer.resize({width:n,height:s})}return e}_setSourceTextureParameters(){let e=this.currentIndex,{sourceTextures:r}=this.bindings[e];for(let i in r)r[i].sampler=this.sampler}};var He=class{id;topology;vertexCount;indices;attributes;userData={};constructor(e){let{attributes:r={},indices:i=null,vertexCount:o=null}=e;this.id=e.id||ne("geometry"),this.topology=e.topology,i&&(this.indices=ArrayBuffer.isView(i)?{value:i,size:1}:i),this.attributes={};for(let[n,s]of Object.entries(r)){let a=ArrayBuffer.isView(s)?{value:s}:s;if(!ArrayBuffer.isView(a.value))throw new Error(`${this._print(n)}: must be typed array or object with value as typed array`);if((n==="POSITION"||n==="positions")&&!a.size&&(a.size=3),n==="indices"){if(this.indices)throw new Error("Multiple indices detected");this.indices=a}else this.attributes[n]=a}this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this.vertexCount=o||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 o of Object.values(e)){let{value:n,size:s,constant:a}=o;!a&&n&&s!==void 0&&s>=1&&(i=Math.min(i,n.length/s))}return i}};var EE=`struct VertexInputs {
1139
1202
  @location(0) clipSpacePositions: vec2<f32>,
1140
1203
  @location(1) texCoords: vec2<f32>,
1141
1204
  @location(2) coordinates: vec2<f32>
@@ -1157,7 +1220,7 @@ fn vertexMain(inputs: VertexInputs) -> FragmentInputs {
1157
1220
  outputs.uv = inputs.texCoords;
1158
1221
  return outputs;
1159
1222
  }
1160
- `,ZS=`#version 300 es
1223
+ `,wE=`#version 300 es
1161
1224
  in vec2 clipSpacePositions;
1162
1225
  in vec2 texCoords;
1163
1226
  in vec2 coordinates;
@@ -1172,28 +1235,28 @@ void main(void) {
1172
1235
  coordinate = coordinates;
1173
1236
  uv = texCoords;
1174
1237
  }
1175
- `,sm=[-1,-1,1,-1,-1,1,1,1],Es=class extends ve{constructor(e,r){let i=sm.map(s=>s===-1?0:s);r.source&&(r={...r,source:`${KS}
1176
- ${r.source}`}),super(e,{id:r.id||oe("clip-space"),...r,vs:ZS,vertexCount:4,geometry:new He({topology:"triangle-strip",vertexCount:4,attributes:{clipSpacePositions:{size:2,value:new Float32Array(sm)},texCoords:{size:2,value:new Float32Array(i)},coordinates:{size:2,value:new Float32Array(i)}}})})}};var ws=class extends He{constructor(e={}){let{id:r=oe("sphere-geometry")}=e,{indices:i,attributes:s}=qS(e);super({...e,id:r,topology:"triangle-list",indices:i,attributes:{...s,...e.attributes}})}};function qS(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=(_,b,y,T,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 b=0;b<=r;b++){let y=b/r,T=_/e,S=b+_*(r+1),A=S*2,w=S*3,v=c*y,R=o*T,M=Math.sin(v),O=Math.cos(v),C=Math.sin(R),W=Math.cos(R),V=O*C,J=W,Et=M*C,wt=f(V,J,Et,y,T);h[w+0]=wt*V,h[w+1]=wt*J,h[w+2]=wt*Et,u[w+0]=V,u[w+1]=J,u[w+2]=Et,d[A+0]=y,d[A+1]=1-T}let m=r+1;for(let _=0;_<r;_++)for(let b=0;b<e;b++){let y=(_*e+b)*6;g[y+0]=b*m+_,g[y+1]=b*m+_+1,g[y+2]=(b+1)*m+_,g[y+3]=(b+1)*m+_,g[y+4]=b*m+_+1,g[y+5]=(b+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}}}}function lh(t,e){if(!t)throw new Error(e)}var lt=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||oe(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 lh(e.length===3,"setPosition requires vector argument"),this.position=e,this}setRotation(e){return lh(e.length===3||e.length===4,"setRotation requires vector argument"),this.rotation=e,this}setScale(e){return lh(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)}};L();var rr=class extends lt{children;constructor(e={}){e=Array.isArray(e)?{children:e}:e;let{children:r=[]}=e;x.assert(r.every(i=>i instanceof lt),"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 rr?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 rr?s.preorderTraversal(e,{worldMatrix:i}):e(s,{worldMatrix:i})}};var Rs=class extends lt{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 Ps=class extends He{constructor(e={}){let{id:r=oe("cube-geometry"),indices:i=!0}=e;super(i?{...e,id:r,topology:"triangle-list",indices:{size:1,value:GS},attributes:{...sE,...e.attributes}}:{...e,id:r,topology:"triangle-list",indices:void 0,attributes:{...oE,...e.attributes}})}},GS=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]),QS=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]),JS=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]),eE=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]),tE=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]),rE=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]),iE=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]),sE={POSITION:{size:3,value:QS},NORMAL:{size:3,value:JS},TEXCOORD_0:{size:2,value:eE}},oE={POSITION:{size:3,value:tE},TEXCOORD_0:{size:2,value:rE},COLOR_0:{size:3,value:iE}};var{stats:nE,getSupportedAdapters:aE,setDefaultDeviceProps:cE,attachDevice:lE,createDevice:fE,enforceWebGL2:hE}=Zt;var Uh={};Rt(Uh,{fetchFile:()=>wi,load:()=>ar,parse:()=>nr,registerLoaders:()=>Ls});function ir(t,e){if(!t)throw new Error(e||"loader assertion failed.")}var ft={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},uE=ft.self||ft.window||ft.global||{},dE=ft.window||ft.self||ft.global||{},pE=ft.global||ft.self||ft.window||{},gE=ft.document||{};var Cr=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var om=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),mE=om&&parseFloat(om[1])||0;Gi();var hh="4.4.0-alpha.18",_E=hh[0]>="0"&&hh[0]<="9"?`v${hh}`:"";function yE(){let t=new ue({id:"loaders.gl"});return globalThis.loaders||={},globalThis.loaders.log=t,globalThis.loaders.version=_E,globalThis.probe||={},globalThis.probe.loaders=t,t}var uh=yE();var bE=t=>typeof t=="boolean",ht=t=>typeof t=="function",ut=t=>t!==null&&typeof t=="object",$n=t=>ut(t)&&t.constructor==={}.constructor;var dh=t=>typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer,xi=t=>ut(t)&&typeof t.byteLength=="number"&&typeof t.slice=="function";var ph=t=>Boolean(t)&&ht(t[Symbol.iterator]),gh=t=>Boolean(t)&&ht(t[Symbol.asyncIterator]);var Me=t=>typeof Response<"u"&&t instanceof Response||ut(t)&&ht(t.arrayBuffer)&&ht(t.text)&&ht(t.json);var Ce=t=>typeof Blob<"u"&&t instanceof Blob;var nm=t=>typeof ReadableStream<"u"&&t instanceof ReadableStream||ut(t)&&ht(t.tee)&&ht(t.cancel)&&ht(t.getReader);var am=t=>ut(t)&&ht(t.read)&&ht(t.pipe)&&bE(t.readable),vs=t=>nm(t)||am(t);function mh(t,e){return cm(t||{},e)}function cm(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]=cm(i[s]||{},e[s],r+1):i[s]=e[s];return i}var lm="beta";function TE(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.18"),globalThis._loadersgl_.version}var fm=TE();function me(t,e){if(!t)throw new Error(e||"loaders.gl assertion failed.")}var dt={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},$F=dt.self||dt.window||dt.global||{},XF=dt.window||dt.self||dt.global||{},YF=dt.global||dt.self||dt.window||{},KF=dt.document||{};var Le=typeof process!="object"||String(process)!=="[object process]"||process.browser;var um=typeof window<"u"&&typeof window.orientation<"u",hm=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),ZF=hm&&parseFloat(hm[1])||0;var Ms=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){me(this.isRunning),this.isRunning=!1,this._resolve(e)}error(e){me(this.isRunning),this.isRunning=!1,this._reject(e)}};var Ai=class{terminate(){}};var _h=new Map;function dm(t){me(t.source&&!t.url||!t.source&&t.url);let e=_h.get(t.source||t.url);return e||(t.url&&(e=xE(t.url),_h.set(t.url,e)),t.source&&(e=pm(t.source),_h.set(t.source,e))),me(e),e}function xE(t){if(!t.startsWith("http"))return t;let e=AE(t);return pm(e)}function pm(t){let e=new Blob([t],{type:"application/javascript"});return URL.createObjectURL(e)}function AE(t){return`try {
1238
+ `,Tm=[-1,-1,1,-1,-1,1,1,1],Co=class extends ve{constructor(e,r){let i=Tm.map(o=>o===-1?0:o);r.source&&(r={...r,source:`${EE}
1239
+ ${r.source}`}),super(e,{id:r.id||ne("clip-space"),...r,vs:wE,vertexCount:4,geometry:new He({topology:"triangle-strip",vertexCount:4,attributes:{clipSpacePositions:{size:2,value:new Float32Array(Tm)},texCoords:{size:2,value:new Float32Array(i)},coordinates:{size:2,value:new Float32Array(i)}}})})}};var Io=class extends He{constructor(e={}){let{id:r=ne("sphere-geometry")}=e,{indices:i,attributes:o}=RE(e);super({...e,id:r,topology:"triangle-list",indices:i,attributes:{...o,...e.attributes}})}};function RE(t){let{nlat:e=10,nlong:r=10}=t,n=Math.PI-0,s=0,c=2*Math.PI-s,l=(e+1)*(r+1),f=(_,b,y,T,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 b=0;b<=r;b++){let y=b/r,T=_/e,S=b+_*(r+1),A=S*2,w=S*3,P=c*y,R=n*T,v=Math.sin(P),O=Math.cos(P),C=Math.sin(R),W=Math.cos(R),V=O*C,J=W,wt=v*C,Rt=f(V,J,wt,y,T);h[w+0]=Rt*V,h[w+1]=Rt*J,h[w+2]=Rt*wt,u[w+0]=V,u[w+1]=J,u[w+2]=wt,d[A+0]=y,d[A+1]=1-T}let m=r+1;for(let _=0;_<r;_++)for(let b=0;b<e;b++){let y=(_*e+b)*6;g[y+0]=b*m+_,g[y+1]=b*m+_+1,g[y+2]=(b+1)*m+_,g[y+3]=(b+1)*m+_,g[y+4]=b*m+_+1,g[y+5]=(b+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}}}}function Th(t,e){if(!t)throw new Error(e)}var ft=class{id;matrix=new z;display=!0;position=new $;rotation=new $;scale=new $(1,1,1);userData={};props={};constructor(e={}){let{id:r}=e;this.id=r||ne(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 Th(e.length===3,"setPosition requires vector argument"),this.position=e,this}setRotation(e){return Th(e.length===3||e.length===4,"setRotation requires vector argument"),this.rotation=e,this}setScale(e){return Th(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:o,update:n=!0}=e;return r&&this.setPosition(r),i&&this.setRotation(i),o&&this.setScale(o),n&&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),o=i.invert(),n=o.transpose();return{viewMatrix:e,modelMatrix:r,objectMatrix:r,worldMatrix:i,worldInverseMatrix:o,worldInverseTransposeMatrix:n}}_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 sr=class extends ft{children;constructor(e={}){e=Array.isArray(e)?{children:e}:e;let{children:r=[]}=e;x.assert(r.every(i=>i instanceof ft),"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 o=r.getBounds();if(!o)return;let[n,s]=o,a=new $(n).add(s).divide([2,2,2]);i.transformAsPoint(a,a);let c=new $(s).subtract(n).divide([2,2,2]);i.transformAsVector(c,c);for(let l=0;l<8;l++){let f=new $(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 o of this.children)o instanceof sr?o.traverse(e,{worldMatrix:i}):e(o,{worldMatrix:i})}preorderTraversal(e,{worldMatrix:r=new z}={}){let i=new z(r).multiplyRight(this.matrix);e(this,{worldMatrix:i});for(let o of this.children)o instanceof sr?o.preorderTraversal(e,{worldMatrix:i}):e(o,{worldMatrix:i})}};var Oo=class extends ft{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 No=class extends He{constructor(e={}){let{id:r=ne("cube-geometry"),indices:i=!0}=e;super(i?{...e,id:r,topology:"triangle-list",indices:{size:1,value:PE},attributes:{...DE,...e.attributes}}:{...e,id:r,topology:"triangle-list",indices:void 0,attributes:{...BE,...e.attributes}})}},PE=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]),vE=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]),ME=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]),CE=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]),IE=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]),OE=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]),NE=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]),DE={POSITION:{size:3,value:vE},NORMAL:{size:3,value:ME},TEXCOORD_0:{size:2,value:CE}},BE={POSITION:{size:3,value:IE},TEXCOORD_0:{size:2,value:OE},COLOR_0:{size:3,value:NE}};var{stats:LE,getSupportedAdapters:FE,setDefaultDeviceProps:UE,attachDevice:kE,createDevice:VE,enforceWebGL2:zE}=Qt;var Zh={};Pt(Zh,{fetchFile:()=>Ci,load:()=>ur,parse:()=>hr,registerLoaders:()=>Wo});function ar(t,e){if(!t)throw new Error(e||"loader assertion failed.")}var ht={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},WE=ht.self||ht.window||ht.global||{},jE=ht.window||ht.self||ht.global||{},$E=ht.global||ht.self||ht.window||{},HE=ht.document||{};var Br=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var xm=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),XE=xm&&parseFloat(xm[1])||0;ro();var Ah="4.4.1",YE=Ah[0]>="0"&&Ah[0]<="9"?`v${Ah}`:"";function KE(){let t=new he({id:"loaders.gl"});return globalThis.loaders||={},globalThis.loaders.log=t,globalThis.loaders.version=YE,globalThis.probe||={},globalThis.probe.loaders=t,t}var Sh=KE();var ZE=t=>typeof t=="boolean",ut=t=>typeof t=="function",dt=t=>t!==null&&typeof t=="object",Gs=t=>dt(t)&&t.constructor==={}.constructor;var Eh=t=>typeof SharedArrayBuffer<"u"&&t instanceof SharedArrayBuffer,Ri=t=>dt(t)&&typeof t.byteLength=="number"&&typeof t.slice=="function";var wh=t=>Boolean(t)&&ut(t[Symbol.iterator]),Rh=t=>Boolean(t)&&ut(t[Symbol.asyncIterator]);var Me=t=>typeof Response<"u"&&t instanceof Response||dt(t)&&ut(t.arrayBuffer)&&ut(t.text)&&ut(t.json);var Ce=t=>typeof Blob<"u"&&t instanceof Blob;var Am=t=>typeof ReadableStream<"u"&&t instanceof ReadableStream||dt(t)&&ut(t.tee)&&ut(t.cancel)&&ut(t.getReader);var Sm=t=>dt(t)&&ut(t.read)&&ut(t.pipe)&&ZE(t.readable),Do=t=>Am(t)||Sm(t);function Ph(t,e){return Em(t||{},e)}function Em(t,e,r=0){if(r>3)return e;let i={...t};for(let[o,n]of Object.entries(e))n&&typeof n=="object"&&!Array.isArray(n)?i[o]=Em(i[o]||{},e[o],r+1):i[o]=e[o];return i}var wm="latest";function qE(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.1"),globalThis._loadersgl_.version}var Rm=qE();function ge(t,e){if(!t)throw new Error(e||"loaders.gl assertion failed.")}var pt={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},IF=pt.self||pt.window||pt.global||{},OF=pt.window||pt.self||pt.global||{},NF=pt.global||pt.self||pt.window||{},DF=pt.document||{};var Ue=typeof process!="object"||String(process)!=="[object process]"||process.browser;var vm=typeof window<"u"&&typeof window.orientation<"u",Pm=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),BF=Pm&&parseFloat(Pm[1])||0;var Bo=class{name;workerThread;isRunning=!0;result;_resolve=()=>{};_reject=()=>{};constructor(e,r){this.name=e,this.workerThread=r,this.result=new Promise((i,o)=>{this._resolve=i,this._reject=o})}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 Pi=class{terminate(){}};var vh=new Map;function Mm(t){ge(t.source&&!t.url||!t.source&&t.url);let e=vh.get(t.source||t.url);return e||(t.url&&(e=GE(t.url),vh.set(t.url,e)),t.source&&(e=Cm(t.source),vh.set(t.source,e))),ge(e),e}function GE(t){if(!t.startsWith("http"))return t;let e=QE(t);return Cm(e)}function Cm(t){let e=new Blob([t],{type:"application/javascript"});return URL.createObjectURL(e)}function QE(t){return`try {
1177
1240
  importScripts('${t}');
1178
1241
  } catch (error) {
1179
1242
  console.error(error);
1180
1243
  throw error;
1181
- }`}function yh(t,e=!0,r){let i=r||new Set;if(t){if(gm(t))i.add(t);else if(gm(t.buffer))i.add(t.buffer);else if(!ArrayBuffer.isView(t)){if(e&&typeof t=="object")for(let s in t)yh(t[s],e,i)}}return r===void 0?Array.from(i):[]}function gm(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 bh=()=>{},sr=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&Le||typeof Ai<"u"&&!Le}constructor(e){let{name:r,source:i,url:s}=e;me(i||s),this.name=r,this.source=i,this.url=s,this.onMessage=bh,this.onError=o=>console.log(o),this.worker=Le?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=bh,this.onError=bh,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(e,r){r=r||yh(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=dm({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 Ai(i,{eval:!1,type:s})}else if(this.source)e=new Ai(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 Cs=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return sr.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 Ms(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){!Le||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 sr({name:e,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return um?this.maxMobileConcurrency:this.maxConcurrency}};var SE={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},Ir=class{props;workerPools=new Map;static isSupported(){return sr.isSupported()}static getWorkerFarm(e={}){return Ir._workerFarm=Ir._workerFarm||new Ir({}),Ir._workerFarm.setProps(e),Ir._workerFarm}constructor(e){this.props={...SE},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 Cs({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}}},or=Ir;P(or,"_workerFarm");function Th(t,e={}){let r=e[t.id]||{},i=Le?`${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"&&(Le?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=lm);let a=n?`@${n}`:"";s=`https://unpkg.com/@loaders.gl/${t.module}${a}/dist/${i}`}return me(s),s}function xh(t,e=fm){me(t,"no worker provided");let r=t.version;return!(!e||!r)}function Ah(t,e){if(!or.isSupported())return!1;let r=e?._nodeWorkers??e?.core?._nodeWorkers;if(!Le&&!r)return!1;let i=e?.worker??e?.core?.worker;return Boolean(t.worker&&i)}async function Sh(t,e,r,i,s){let o=t.id,n=Th(t,r),c=or.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",EE.bind(null,s));return l.postMessage("process",{input:e,options:r,context:i}),await(await l.result).result}async function EE(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 Eh(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 wh(...t){return mm(t)}function mm(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 Rh(t){let e=[];for await(let r of t)e.push(wE(r));return wh(...e)}function wE(t){if(t instanceof ArrayBuffer)return t;if(ArrayBuffer.isView(t)){let{buffer:e,byteOffset:r,byteLength:i}=t;return _m(e,r,i)}return _m(t)}function _m(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 RE="",ym={};function Ph(t){for(let e in ym)if(t.startsWith(e)){let r=ym[e];t=t.replace(e,r)}return!t.startsWith("http://")&&!t.startsWith("https://")&&(t=`${RE}${t}`),t}function Yn(t){return t&&typeof t=="object"&&t.isBuffer}function Si(t){if(Yn(t))return t;if(t instanceof ArrayBuffer)return t;if(dh(t))return Xn(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 Is(t){if(t instanceof ArrayBuffer)return t;if(dh(t))return Xn(t);let{buffer:e,byteOffset:r,byteLength:i}=t;return e instanceof ArrayBuffer&&r===0&&i===e.byteLength?e:Xn(e,r,i)}function Xn(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 vh(t){return ArrayBuffer.isView(t)?t:new Uint8Array(t)}var Or={};Rt(Or,{dirname:()=>vE,filename:()=>PE,join:()=>ME,resolve:()=>CE});function bm(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let t=window.location?.pathname;return t?.slice(0,t.lastIndexOf("/")+1)||""}function PE(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(e+1):t}function vE(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(0,e):""}function ME(...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 CE(...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=bm()),n=s),n.length!==0&&(r=`${n}/${r}`,i=n.charCodeAt(0)===Os)}return r=IE(r,!i),i?`/${r}`:r.length>0?r:"."}var Os=47,Mh=46;function IE(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===Os)break;o=Os}if(o===Os){if(!(i===a-1||s===1))if(i!==a-1&&s===2){if(r.length<2||!n||r.charCodeAt(r.length-1)!==Mh||r.charCodeAt(r.length-2)!==Mh){if(r.length>2){let c=r.length-1,l=c;for(;l>=0&&r.charCodeAt(l)!==Os;--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===Mh&&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 DE=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,BE=/^([-\w.]+\/[-\w.+]+)/;function Ch(t,e){return t.toLowerCase()===e.toLowerCase()}function Tm(t){let e=BE.exec(t);return e?e[1]:t}function Ih(t){let e=DE.exec(t);return e?e[1]:""}var xm=/\?.*/;function Am(t){let e=t.match(xm);return e&&e[0]}function Ei(t){return t.replace(xm,"")}function Sm(t){if(t.length<50)return t;let e=t.slice(t.length-15);return`${t.substr(0,32)}...${e}`}function Nr(t){return Me(t)?t.url:Ce(t)?("name"in t?t.name:"")||"":typeof t=="string"?t:""}function Ns(t){if(Me(t)){let e=t.headers.get("content-type")||"",r=Ei(t.url);return Tm(e)||Ih(r)}return Ce(t)?t.type||"":typeof t=="string"?Ih(t):""}function Em(t){return Me(t)?t.headers["content-length"]||-1:Ce(t)?t.size:typeof t=="string"?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1}async function Zn(t){if(Me(t))return t;let e={},r=Em(t);r>=0&&(e["content-length"]=String(r));let i=Nr(t),s=Ns(t);s&&(e["content-type"]=s);let o=await LE(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 wm(t){if(!t.ok)throw await FE(t)}async function FE(t){let e=Sm(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 LE(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,${UE(r)}`}return null}function UE(t){let e="",r=new Uint8Array(t);for(let i=0;i<r.byteLength;i++)e+=String.fromCharCode(r[i]);return btoa(e)}function kE(t){return!VE(t)&&!zE(t)}function VE(t){return t.startsWith("http:")||t.startsWith("https:")}function zE(t){return t.startsWith("data:")}async function wi(t,e){if(typeof t=="string"){let r=Ph(t);return kE(r)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,e):await fetch(r,e)}return await Zn(t)}Gi();var Ds=new ue({id:"loaders.gl"}),qn=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},Gn=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 Qn={core:{baseUri:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new Gn,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:Cr,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]}},Rm={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 Oh=["baseUri","fetch","mimeType","fallbackMimeType","ignoreRegisteredLoaders","nothrow","log","useLocalLibraries","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms"];function Nh(){globalThis.loaders=globalThis.loaders||{};let{loaders:t}=globalThis;return t._state||(t._state={}),t._state}function Dh(){let t=Nh();return t.globalOptions=t.globalOptions||{...Qn,core:{...Qn.core}},Dr(t.globalOptions)}function Mm(t,e,r,i){return r=r||[],r=Array.isArray(r)?r:[r],WE(t,r),Dr(HE(e,t,i))}function Dr(t){let e=XE(t);Cm(e);for(let r of Oh)e.core&&e.core[r]!==void 0&&delete e[r];return e.core&&e.core._workerType!==void 0&&delete e._worker,e}function WE(t,e){Pm(t,null,Qn,Rm,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]||{};Pm(i,r.id,s,o,e)}}function Pm(t,e,r,i,s){let o=e||"Top level",n=e?`${e}.`:"";for(let a in t){let c=!e&&ut(t[a]),l=a==="baseUri"&&!e,f=a==="workerUrl"&&e;if(!(a in r)&&!l&&!f){if(a in i)Ds.level>0&&Ds.warn(`${o} loader option '${n}${a}' no longer supported, use '${i[a]}'`)();else if(!c&&Ds.level>0){let h=jE(a,s);Ds.warn(`${o} loader option '${n}${a}' not recognized. ${h}`)()}}}}function jE(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 HE(t,e,r){let i=t.options||{},s={...i};i.core&&(s.core={...i.core}),Cm(s),s.core?.log===null&&(s.core={...s.core,log:new qn}),vm(s,Dr(Dh()));let o=Dr(e);return vm(s,o),$E(s,r),YE(s),s}function vm(t,e){for(let r in e)if(r in e){let i=e[r];$n(i)&&$n(t[r])?t[r]={...t[r],...e[r]}:t[r]=e[r]}}function $E(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 XE(t){let e={...t};return t.core&&(e.core={...t.core}),e}function Cm(t){for(let r of Oh)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 YE(t){let e=t.core;if(e)for(let r of Oh)e[r]!==void 0&&(t[r]=e[r])}function Bs(t){return t?(Array.isArray(t)&&(t=t[0]),Array.isArray(t?.extensions)):!1}function Fs(t){ir(t,"null loader"),ir(Bs(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 Im=()=>{let t=Nh();return t.loaderRegistry=t.loaderRegistry||[],t.loaderRegistry};function Ls(t){let e=Im();t=Array.isArray(t)?t:[t];for(let r of t){let i=Fs(r);e.find(s=>i===s)||e.unshift(i)}}function Om(){return Im()}var KE=/\.([^.]+)$/;async function Bm(t,e=[],r,i){if(!Fm(t))return null;let s=Dr(r||{});s.core||={};let o=Nm(t,e,{...s,core:{...s.core,nothrow:!0}},i);if(o)return o;if(Ce(t)&&(t=await t.slice(0,10).arrayBuffer(),o=Nm(t,e,s,i)),!o&&!s.core.nothrow)throw new Error(Lm(t));return o}function Nm(t,e=[],r,i){if(!Fm(t))return null;let s=Dr(r||{});if(s.core||={},e&&!Array.isArray(e))return Fs(e);let o=[];e&&(o=o.concat(e)),s.core.ignoreRegisteredLoaders||o.push(...Om()),qE(o);let n=ZE(t,o,s,i);if(!n&&!s.core.nothrow)throw new Error(Lm(t));return n}function ZE(t,e,r,i){let s=Nr(t),o=Ns(t),n=Ei(s)||i?.url,a=null,c="";return r?.core?.mimeType&&(a=Bh(e,r?.core?.mimeType),c=`match forced by supplied MIME type ${r?.core?.mimeType}`),a=a||GE(e,n),c=c||(a?`matched url ${n}`:""),a=a||Bh(e,o),c=c||(a?`matched MIME type ${o}`:""),a=a||JE(e,t),c=c||(a?`matched initial data ${Um(t)}`:""),r?.core?.fallbackMimeType&&(a=a||Bh(e,r?.core?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${o}`:"")),c&&uh.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function Fm(t){return!(t instanceof Response&&t.status===204)}function Lm(t){let e=Nr(t),r=Ns(t),i="No valid loader found (";i+=e?`${Or.filename(e)}, `:"no url provided, ",i+=`MIME type: ${r?`"${r}"`:"not provided"}, `;let s=t?Um(t):"";return i+=s?` first bytes: "${s}"`:"first bytes: not available",i+=")",i}function qE(t){for(let e of t)Fs(e)}function GE(t,e){let r=e&&KE.exec(e),i=r&&r[1];return i?QE(t,i):null}function QE(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 Bh(t,e){for(let r of t)if(r.mimeTypes?.some(i=>Ch(e,i))||Ch(e,`application/x.${r.id}`))return r;return null}function JE(t,e){if(!e)return null;for(let r of t)if(typeof e=="string"){if(ew(e,r))return r}else if(ArrayBuffer.isView(e)){if(Dm(e.buffer,e.byteOffset,r))return r}else if(e instanceof ArrayBuffer&&Dm(e,0,r))return r;return null}function ew(t,e){return e.testText?e.testText(t):(Array.isArray(e.tests)?e.tests:[e.tests]).some(i=>t.startsWith(i))}function Dm(t,e,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(s=>tw(t,e,r,s))}function tw(t,e,r,i){if(xi(i))return Eh(i,t,i.byteLength);switch(typeof i){case"function":return i(Is(t));case"string":let s=Fh(t,e,i.length);return i===s;default:return!1}}function Um(t,e=5){return typeof t=="string"?t.slice(0,e):ArrayBuffer.isView(t)?Fh(t.buffer,t.byteOffset,e):t instanceof ArrayBuffer?Fh(t,0,e):""}function Fh(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 rw=256*1024;function*km(t,e){let r=e?.chunkSize||rw,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 Is(s.encode(n))}}function*Vm(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*zm(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 Lh(t,e){return Cr?iw(t,e):sw(t,e)}async function*iw(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 Si(n)}}catch{r.releaseLock()}}async function*sw(t,e){for await(let r of t)yield Si(r)}function Wm(t,e){if(typeof t=="string")return km(t,e);if(t instanceof ArrayBuffer)return Vm(t,e);if(Ce(t))return zm(t,e);if(vs(t))return Lh(t,e);if(Me(t)){let r=t.body;if(!r)throw new Error("Readable stream not available on Response");return Lh(r,e)}throw new Error("makeIterator")}var jm="Cannot convert supplied data type";function ow(t,e,r){if(e.text&&typeof t=="string")return t;if(Yn(t)&&(t=t.buffer),xi(t)){let i=vh(t);return e.text&&!e.binary?new TextDecoder("utf8").decode(i):Si(i)}throw new Error(jm)}async function Hm(t,e,r){if(typeof t=="string"||xi(t))return ow(t,e,r);if(Ce(t)&&(t=await Zn(t)),Me(t))return await wm(t),e.binary?await t.arrayBuffer():await t.text();if(vs(t)&&(t=Wm(t,r)),ph(t)||gh(t))return Rh(t);throw new Error(jm)}function Jn(t,e){let r=Dh(),i=t||r,s=i.fetch??i.core?.fetch;return typeof s=="function"?s:ut(s)?o=>wi(o,s):e?.fetch?e?.fetch:wi}function $m(t,e,r){if(r)return r;let i={fetch:Jn(e,t),...t};if(i.url){let s=Ei(i.url);i.baseUrl=s,i.queryString=Am(i.url),i.filename=Or.filename(s),i.baseUrl=Or.dirname(s)}return Array.isArray(i.loaders)||(i.loaders=null),i}function Xm(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 nr(t,e,r,i){e&&!Array.isArray(e)&&!Bs(e)&&(i=void 0,r=e,e=void 0),t=await t,r=r||{};let s=Nr(t),n=Xm(e,i),a=await Bm(t,n,r);if(!a)return null;let c=Mm(r,a,n,s);return i=$m({url:s,_parse:nr,loaders:n},c,i||null),await nw(a,t,c,i)}async function nw(t,e,r,i){if(xh(t),r=mh(t.options,r),Me(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 Hm(e,t,r);let s=t;if(s.parseTextSync&&typeof e=="string")return s.parseTextSync(e,r,i);if(Ah(t,r))return await Sh(t,e,r,i,nr);if(s.parseText&&typeof e=="string")return await s.parseText(e,r,i);if(s.parse)return await s.parse(e,r,i);throw me(!s.parseSync),new Error(`${t.id} loader - no parser found and worker is disabled`)}async function ar(t,e,r,i){let s,o;!Array.isArray(e)&&!Bs(e)?(s=[],o=e,i=void 0):(s=e,o=r);let n=Jn(o),a=t;return typeof t=="string"&&(a=await n(t)),Ce(t)&&(a=await n(t)),Array.isArray(s)?await nr(a,s,o):await nr(a,s,o)}var Ym="4.4.0-alpha.18";var aw=globalThis.loaders?.parseImageNode,kh=typeof Image<"u",Vh=typeof ImageBitmap<"u",cw=Boolean(aw),zh=Cr?!0:cw;function Km(t){switch(t){case"auto":return Vh||kh||zh;case"imagebitmap":return Vh;case"image":return kh;case"data":return zh;default:throw new Error(`@loaders.gl/images: image ${t} not supported in this environment`)}}function Zm(){if(Vh)return"imagebitmap";if(kh)return"image";if(zh)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function lw(t){let e=fw(t);if(!e)throw new Error("Not an image");return e}function qm(t){switch(lw(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 fw(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 hw=/^data:image\/svg\+xml/,uw=/\.svg((\?|#).*)?$/;function ea(t){return t&&(hw.test(t)||uw.test(t))}function Gm(t,e){if(ea(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 Wh(t,e)}function Wh(t,e){if(ea(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(t)])}async function ta(t,e,r){let i=Gm(t,r),s=self.URL||self.webkitURL,o=typeof i!="string"&&s.createObjectURL(i);try{return await dw(o||i,e)}finally{o&&s.revokeObjectURL(o)}}async function dw(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 Qm=!0;async function Jm(t,e,r){let i;ea(r)?i=await ta(t,e,r):i=Wh(t,r);let s=e&&e.imagebitmap;return await pw(i,s)}async function pw(t,e=null){if((gw(e)||!Qm)&&(e=null),e)try{return await createImageBitmap(t,e)}catch(r){console.warn(r),Qm=!1}return await createImageBitmap(t)}function gw(t){if(!t)return!0;for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0}function e_(t){return!bw(t,"ftyp",4)||!(t[8]&96)?null:mw(t)}function mw(t){switch(_w(t,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function _w(t,e,r){return String.fromCharCode(...t.slice(e,r))}function yw(t){return[...t].map(e=>e.charCodeAt(0))}function bw(t,e,r=0){let i=yw(e);for(let s=0;s<i.length;++s)if(i[s]!==t[s+r])return!1;return!0}var pt=!1,Us=!0;function ra(t){let e=ks(t);return xw(e)||Ew(e)||Aw(e)||Sw(e)||Tw(e)}function Tw(t){let e=new Uint8Array(t instanceof DataView?t.buffer:t),r=e_(e);return r?{mimeType:r.mimeType,width:0,height:0}:null}function xw(t){let e=ks(t);return e.byteLength>=24&&e.getUint32(0,pt)===2303741511?{mimeType:"image/png",width:e.getUint32(16,pt),height:e.getUint32(20,pt)}:null}function Aw(t){let e=ks(t);return e.byteLength>=10&&e.getUint32(0,pt)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,Us),height:e.getUint16(8,Us)}:null}function Sw(t){let e=ks(t);return e.byteLength>=14&&e.getUint16(0,pt)===16973&&e.getUint32(2,Us)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,Us),height:e.getUint32(22,Us)}:null}function Ew(t){let e=ks(t);if(!(e.byteLength>=3&&e.getUint16(0,pt)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:i,sofMarkers:s}=ww(),o=2;for(;o+9<e.byteLength;){let n=e.getUint16(o,pt);if(s.has(n))return{mimeType:"image/jpeg",height:e.getUint16(o+5,pt),width:e.getUint16(o+7,pt)};if(!i.has(n))return null;o+=2,o+=e.getUint16(o,pt)}return null}function ww(){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 ks(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 t_(t,e){let{mimeType:r}=ra(t)||{},i=globalThis.loaders?.parseImageNode;return ir(i),await i(t,r)}async function r_(t,e,r){e=e||{};let s=(e.image||{}).type||"auto",{url:o}=r||{},n=Rw(s),a;switch(n){case"imagebitmap":a=await Jm(t,e,o);break;case"image":a=await ta(t,e,o);break;case"data":a=await t_(t,e);break;default:ir(!1)}return s==="data"&&(a=qm(a)),a}function Rw(t){switch(t){case"auto":case"data":return Zm();default:return Km(t),t}}var Pw=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],vw=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],Mw={image:{type:"auto",decode:!0}},jh={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:Ym,mimeTypes:vw,extensions:Pw,parse:r_,tests:[t=>Boolean(ra(new DataView(t)))],options:Mw};Gi();var Cw=new ue({id:"deck"}),F=Cw;var Hh={};function ia(t){Hh=t}function G(t,e,r,i){F.level>0&&Hh[t]&&Hh[t].call(null,e,r,i)}function Iw(t){let e=t[0],r=t[t.length-1];return e==="{"&&r==="}"||e==="["&&r==="]"}var i_={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:Iw,parseTextSync:JSON.parse};function Ow(){let t="9.3.0-alpha.5",e=globalThis.deck&&globalThis.deck.VERSION;if(e&&e!==t)throw new Error(`deck.gl - multiple versions detected: ${e} vs ${t}`);return e||(F.log(1,`deck.gl ${t}`)(),globalThis.deck={...globalThis.deck,VERSION:t,version:t,log:F,_registerLoggers:ia},Ls([i_,[jh,{imagebitmap:{premultiplyAlpha:"none"}}]])),t}var sa=Ow();var Nw=`struct LayerUniforms {
1244
+ }`}function Mh(t,e=!0,r){let i=r||new Set;if(t){if(Im(t))i.add(t);else if(Im(t.buffer))i.add(t.buffer);else if(!ArrayBuffer.isView(t)){if(e&&typeof t=="object")for(let o in t)Mh(t[o],e,i)}}return r===void 0?Array.from(i):[]}function Im(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 Ch=()=>{},cr=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&Ue||typeof Pi<"u"&&!Ue}constructor(e){let{name:r,source:i,url:o}=e;ge(i||o),this.name=r,this.source=i,this.url=o,this.onMessage=Ch,this.onError=n=>console.log(n),this.worker=Ue?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Ch,this.onError=Ch,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(e,r){r=r||Mh(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=Mm({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}`,o=this.url.endsWith(".ts")||this.url.endsWith(".mjs")?"module":"commonjs";e=new Pi(i,{eval:!1,type:o})}else if(this.source)e=new Pi(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 Lo=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return cr.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=(o,n,s)=>o.done(s),i=(o,n)=>o.error(n)){let o=new Promise(n=>(this.jobQueue.push({name:e,onMessage:r,onError:i,onStart:n}),this));return this._startQueuedJob(),await o}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 Bo(r.name,e);e.onMessage=o=>r.onMessage(i,o.type,o.payload),e.onError=o=>r.onError(i,o),r.onStart(i);try{await i.result}catch(o){console.error(`Worker exception: ${o}`)}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){!Ue||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 cr({name:e,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return vm?this.maxMobileConcurrency:this.maxConcurrency}};var JE={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},Lr=class{props;workerPools=new Map;static isSupported(){return cr.isSupported()}static getWorkerFarm(e={}){return Lr._workerFarm=Lr._workerFarm||new Lr({}),Lr._workerFarm.setProps(e),Lr._workerFarm}constructor(e){this.props={...JE},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:o}=e,n=this.workerPools.get(r);return n||(n=new Lo({name:r,source:i,url:o}),n.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,n)),n}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}},lr=Lr;M(lr,"_workerFarm");function Ih(t,e={}){let r=e[t.id]||{},i=Ue?`${t.id}-worker.js`:`${t.id}-worker-node.js`,o=r.workerUrl;if(!o&&t.id==="compression"&&(o=e.workerUrl),(e._workerType||e?.core?._workerType)==="test"&&(Ue?o=`modules/${t.module}/dist/${i}`:o=`modules/${t.module}/src/workers/${t.id}-worker-node.ts`),!o){let s=t.version;s==="latest"&&(s=wm);let a=s?`@${s}`:"";o=`https://unpkg.com/@loaders.gl/${t.module}${a}/dist/${i}`}return ge(o),o}function Oh(t,e=Rm){ge(t,"no worker provided");let r=t.version;return!(!e||!r)}function Nh(t,e){if(!lr.isSupported())return!1;let r=e?._nodeWorkers??e?.core?._nodeWorkers;if(!Ue&&!r)return!1;let i=e?.worker??e?.core?.worker;return Boolean(t.worker&&i)}async function Dh(t,e,r,i,o){let n=t.id,s=Ih(t,r),c=lr.getWorkerFarm(r?.core).getWorkerPool({name:n,url:s});r=JSON.parse(JSON.stringify(r)),i=JSON.parse(JSON.stringify(i||{}));let l=await c.startJob("process-on-worker",ew.bind(null,o));return l.postMessage("process",{input:e,options:r,context:i}),await(await l.result).result}async function ew(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:o,input:n,options:s}=i;try{let a=await t(n,s);e.postMessage("done",{id:o,result:a})}catch(a){let c=a instanceof Error?a.message:"unknown error";e.postMessage("error",{id:o,error:c})}break;default:console.warn(`parse-with-worker unknown message ${r}`)}}function Bh(t,e,r){if(r=r||t.byteLength,t.byteLength<r||e.byteLength<r)return!1;let i=new Uint8Array(t),o=new Uint8Array(e);for(let n=0;n<i.length;++n)if(i[n]!==o[n])return!1;return!0}function Lh(...t){return Om(t)}function Om(t){let e=t.map(n=>n instanceof ArrayBuffer?new Uint8Array(n):n),r=e.reduce((n,s)=>n+s.byteLength,0),i=new Uint8Array(r),o=0;for(let n of e)i.set(n,o),o+=n.byteLength;return i.buffer}async function Fh(t){let e=[];for await(let r of t)e.push(tw(r));return Lh(...e)}function tw(t){if(t instanceof ArrayBuffer)return t;if(ArrayBuffer.isView(t)){let{buffer:e,byteOffset:r,byteLength:i}=t;return Nm(e,r,i)}return Nm(t)}function Nm(t,e=0,r=t.byteLength-e){let i=new Uint8Array(t,e,r),o=new Uint8Array(i.length);return o.set(i),o.buffer}var rw="",Dm={};function Uh(t){for(let e in Dm)if(t.startsWith(e)){let r=Dm[e];t=t.replace(e,r)}return!t.startsWith("http://")&&!t.startsWith("https://")&&(t=`${rw}${t}`),t}function Js(t){return t&&typeof t=="object"&&t.isBuffer}function vi(t){if(Js(t))return t;if(t instanceof ArrayBuffer)return t;if(Eh(t))return Qs(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 Fo(t){if(t instanceof ArrayBuffer)return t;if(Eh(t))return Qs(t);let{buffer:e,byteOffset:r,byteLength:i}=t;return e instanceof ArrayBuffer&&r===0&&i===e.byteLength?e:Qs(e,r,i)}function Qs(t,e=0,r=t.byteLength-e){let i=new Uint8Array(t,e,r),o=new Uint8Array(i.length);return o.set(i),o.buffer}function kh(t){return ArrayBuffer.isView(t)?t:new Uint8Array(t)}var Nt={};Pt(Nt,{dirname:()=>ow,filename:()=>iw,join:()=>nw,resolve:()=>sw});function Bm(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let t=window.location?.pathname;return t?.slice(0,t.lastIndexOf("/")+1)||""}function iw(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(e+1):t}function ow(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(0,e):""}function nw(...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 sw(...t){let e=[];for(let n=0;n<t.length;n++)e[n]=t[n];let r="",i=!1,o;for(let n=e.length-1;n>=-1&&!i;n--){let s;n>=0?s=e[n]:(o===void 0&&(o=Bm()),s=o),s.length!==0&&(r=`${s}/${r}`,i=s.charCodeAt(0)===Uo)}return r=aw(r,!i),i?`/${r}`:r.length>0?r:"."}var Uo=47,Vh=46;function aw(t,e){let r="",i=-1,o=0,n,s=!1;for(let a=0;a<=t.length;++a){if(a<t.length)n=t.charCodeAt(a);else{if(n===Uo)break;n=Uo}if(n===Uo){if(!(i===a-1||o===1))if(i!==a-1&&o===2){if(r.length<2||!s||r.charCodeAt(r.length-1)!==Vh||r.charCodeAt(r.length-2)!==Vh){if(r.length>2){let c=r.length-1,l=c;for(;l>=0&&r.charCodeAt(l)!==Uo;--l);if(l!==c){r=l===-1?"":r.slice(0,l),i=a,o=0,s=!1;continue}}else if(r.length===2||r.length===1){r="",i=a,o=0,s=!1;continue}}e&&(r.length>0?r+="/..":r="..",s=!0)}else{let c=t.slice(i+1,a);r.length>0?r+=`/${c}`:r=c,s=!1}i=a,o=0}else n===Vh&&o!==-1?++o:o=-1}return r}var ea=class extends Error{constructor(e,r){super(e),this.reason=r.reason,this.url=r.url,this.response=r.response}reason;url;response};var fw=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,hw=/^([-\w.]+\/[-\w.+]+)/;function zh(t,e){return t.toLowerCase()===e.toLowerCase()}function Lm(t){let e=hw.exec(t);return e?e[1]:t}function Wh(t){let e=fw.exec(t);return e?e[1]:""}var Fm=/\?.*/;function Um(t){let e=t.match(Fm);return e&&e[0]}function fr(t){return t.replace(Fm,"")}function km(t){if(t.length<50)return t;let e=t.slice(t.length-15);return`${t.substr(0,32)}...${e}`}function Fr(t){return Me(t)?t.url:Ce(t)?("name"in t?t.name:"")||"":typeof t=="string"?t:""}function Mi(t){if(Me(t)){let e=t.headers.get("content-type")||"",r=fr(t.url);return Lm(e)||Wh(r)}return Ce(t)?t.type||"":typeof t=="string"?Wh(t):""}function Vm(t){return Me(t)?t.headers["content-length"]||-1:Ce(t)?t.size:typeof t=="string"?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1}async function ta(t){if(Me(t))return t;let e={},r=Vm(t);r>=0&&(e["content-length"]=String(r));let i=Fr(t),o=Mi(t);o&&(e["content-type"]=o);let n=await dw(t);n&&(e["x-first-bytes"]=n),typeof t=="string"&&(t=new TextEncoder().encode(t));let s=new Response(t,{headers:e});return Object.defineProperty(s,"url",{value:i}),s}async function zm(t){if(!t.ok)throw await uw(t)}async function uw(t){let e=km(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 o=t.headers.get("Content-Type");i.reason=!t.bodyUsed&&o?.includes("application/json")?await t.json():await t.text()}catch{}return new ea(r,i)}async function dw(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 o=new FileReader;o.onload=n=>i(n?.target?.result),o.readAsDataURL(r)})}if(t instanceof ArrayBuffer){let r=t.slice(0,5);return`data:base64,${pw(r)}`}return null}function pw(t){let e="",r=new Uint8Array(t);for(let i=0;i<r.byteLength;i++)e+=String.fromCharCode(r[i]);return btoa(e)}function gw(t){return!mw(t)&&!_w(t)}function mw(t){return t.startsWith("http:")||t.startsWith("https:")}function _w(t){return t.startsWith("data:")}async function Ci(t,e){if(typeof t=="string"){let r=Uh(t);return gw(r)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,e):await fetch(r,e)}return await ta(t)}ro();var ko=new he({id:"loaders.gl"}),ra=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},ia=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 oa={core:{baseUrl:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new ia,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:[]}},Wm={baseUri:"core.baseUrl",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:"core.baseUrl",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 jh=["baseUrl","fetch","mimeType","fallbackMimeType","ignoreRegisteredLoaders","nothrow","log","useLocalLibraries","CDN","worker","maxConcurrency","maxMobileConcurrency","reuseWorkers","_nodeWorkers","_workerType","limit","_limitMB","batchSize","batchDebounceMs","metadata","transforms"];function $h(){globalThis.loaders=globalThis.loaders||{};let{loaders:t}=globalThis;return t._state||(t._state={}),t._state}function Hh(){let t=$h();return t.globalOptions=t.globalOptions||{...oa,core:{...oa.core}},Dt(t.globalOptions)}function Hm(t,e,r,i){return r=r||[],r=Array.isArray(r)?r:[r],yw(t,r),Dt(Tw(e,t,i))}function Dt(t){let e=Aw(t);Xm(e);for(let r of jh)e.core&&e.core[r]!==void 0&&delete e[r];return e.core&&e.core._workerType!==void 0&&delete e._worker,e}function yw(t,e){jm(t,null,oa,Wm,e);for(let r of e){let i=t&&t[r.id]||{},o=r.options&&r.options[r.id]||{},n=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};jm(i,r.id,o,n,e)}}function jm(t,e,r,i,o){let n=e||"Top level",s=e?`${e}.`:"";for(let a in t){let c=!e&&dt(t[a]),l=a==="baseUri"&&!e,f=a==="workerUrl"&&e;if(!(a in r)&&!l&&!f){if(a in i)ko.level>0&&ko.warn(`${n} loader option '${s}${a}' no longer supported, use '${i[a]}'`)();else if(!c&&ko.level>0){let h=bw(a,o);ko.warn(`${n} loader option '${s}${a}' not recognized. ${h}`)()}}}}function bw(t,e){let r=t.toLowerCase(),i="";for(let o of e)for(let n in o.options){if(t===n)return`Did you mean '${o.id}.${n}'?`;let s=n.toLowerCase();(r.startsWith(s)||s.startsWith(r))&&(i=i||`Did you mean '${o.id}.${n}'?`)}return i}function Tw(t,e,r){let i=t.options||{},o={...i};i.core&&(o.core={...i.core}),Xm(o),o.core?.log===null&&(o.core={...o.core,log:new ra}),$m(o,Dt(Hh()));let n=Dt(e);return $m(o,n),xw(o,r),Sw(o),o}function $m(t,e){for(let r in e)if(r in e){let i=e[r];Gs(i)&&Gs(t[r])?t[r]={...t[r],...e[r]}:t[r]=e[r]}}function xw(t,e){if(!e)return;t.core?.baseUrl!==void 0||(t.core||={},t.core.baseUrl=Nt.dirname(fr(e)))}function Aw(t){let e={...t};return t.core&&(e.core={...t.core}),e}function Xm(t){t.baseUri!==void 0&&(t.core||={},t.core.baseUrl===void 0&&(t.core.baseUrl=t.baseUri));for(let r of jh)if(t[r]!==void 0){let o=t.core=t.core||{};o[r]===void 0&&(o[r]=t[r])}let e=t._worker;e!==void 0&&(t.core||={},t.core._workerType===void 0&&(t.core._workerType=e))}function Sw(t){let e=t.core;if(e)for(let r of jh)e[r]!==void 0&&(t[r]=e[r])}function Vo(t){return t?(Array.isArray(t)&&(t=t[0]),Array.isArray(t?.extensions)):!1}function zo(t){ar(t,"null loader"),ar(Vo(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 Ym=()=>{let t=$h();return t.loaderRegistry=t.loaderRegistry||[],t.loaderRegistry};function Wo(t){let e=Ym();t=Array.isArray(t)?t:[t];for(let r of t){let i=zo(r);e.find(o=>i===o)||e.unshift(i)}}function Km(){return Ym()}var Ew=/\.([^.]+)$/;async function Gm(t,e=[],r,i){if(!Qm(t))return null;let o=Dt(r||{});if(o.core||={},t instanceof Response&&Zm(t)){let s=await t.clone().text(),a=na(s,e,{...o,core:{...o.core,nothrow:!0}},i);if(a)return a}let n=na(t,e,{...o,core:{...o.core,nothrow:!0}},i);if(n)return n;if(Ce(t)&&(t=await t.slice(0,10).arrayBuffer(),n=na(t,e,o,i)),!n&&t instanceof Response&&Zm(t)){let s=await t.clone().text();n=na(s,e,o,i)}if(!n&&!o.core.nothrow)throw new Error(Jm(t));return n}function Zm(t){let e=Mi(t);return Boolean(e&&(e.startsWith("text/")||e==="application/json"||e.endsWith("+json")))}function na(t,e=[],r,i){if(!Qm(t))return null;let o=Dt(r||{});if(o.core||={},e&&!Array.isArray(e))return zo(e);let n=[];e&&(n=n.concat(e)),o.core.ignoreRegisteredLoaders||n.push(...Km()),Rw(n);let s=ww(t,n,o,i);if(!s&&!o.core.nothrow)throw new Error(Jm(t));return s}function ww(t,e,r,i){let o=Fr(t),n=Mi(t),s=fr(o)||i?.url,a=null,c="";return r?.core?.mimeType&&(a=Xh(e,r?.core?.mimeType),c=`match forced by supplied MIME type ${r?.core?.mimeType}`),a=a||Pw(e,s),c=c||(a?`matched url ${s}`:""),a=a||Xh(e,n),c=c||(a?`matched MIME type ${n}`:""),a=a||Mw(e,t),c=c||(a?`matched initial data ${e_(t)}`:""),r?.core?.fallbackMimeType&&(a=a||Xh(e,r?.core?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${n}`:"")),c&&Sh.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function Qm(t){return!(t instanceof Response&&t.status===204)}function Jm(t){let e=Fr(t),r=Mi(t),i="No valid loader found (";i+=e?`${Nt.filename(e)}, `:"no url provided, ",i+=`MIME type: ${r?`"${r}"`:"not provided"}, `;let o=t?e_(t):"";return i+=o?` first bytes: "${o}"`:"first bytes: not available",i+=")",i}function Rw(t){for(let e of t)zo(e)}function Pw(t,e){let r=e&&Ew.exec(e),i=r&&r[1];return i?vw(t,i):null}function vw(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 Xh(t,e){for(let r of t)if(r.mimeTypes?.some(i=>zh(e,i))||zh(e,`application/x.${r.id}`))return r;return null}function Mw(t,e){if(!e)return null;for(let r of t)if(typeof e=="string"){if(Cw(e,r))return r}else if(ArrayBuffer.isView(e)){if(qm(e.buffer,e.byteOffset,r))return r}else if(e instanceof ArrayBuffer&&qm(e,0,r))return r;return null}function Cw(t,e){return e.testText?e.testText(t):(Array.isArray(e.tests)?e.tests:[e.tests]).some(i=>t.startsWith(i))}function qm(t,e,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(o=>Iw(t,e,r,o))}function Iw(t,e,r,i){if(Ri(i))return Bh(i,t,i.byteLength);switch(typeof i){case"function":return i(Fo(t));case"string":let o=Yh(t,e,i.length);return i===o;default:return!1}}function e_(t,e=5){return typeof t=="string"?t.slice(0,e):ArrayBuffer.isView(t)?Yh(t.buffer,t.byteOffset,e):t instanceof ArrayBuffer?Yh(t,0,e):""}function Yh(t,e,r){if(t.byteLength<e+r)return"";let i=new DataView(t),o="";for(let n=0;n<r;n++)o+=String.fromCharCode(i.getUint8(e+n));return o}var Ow=256*1024;function*t_(t,e){let r=e?.chunkSize||Ow,i=0,o=new TextEncoder;for(;i<t.length;){let n=Math.min(t.length-i,r),s=t.slice(i,i+n);i+=n,yield Fo(o.encode(s))}}function*r_(t,e={}){let{chunkSize:r=262144}=e,i=0;for(;i<t.byteLength;){let o=Math.min(t.byteLength-i,r),n=new ArrayBuffer(o),s=new Uint8Array(t,i,o);new Uint8Array(n).set(s),i+=o,yield n}}async function*i_(t,e){let r=e?.chunkSize||1048576,i=0;for(;i<t.size;){let o=i+r,n=await t.slice(i,o).arrayBuffer();i=o,yield n}}function Kh(t,e){return Br?Nw(t,e):Dw(t,e)}async function*Nw(t,e){let r=t.getReader(),i;try{for(;;){let o=i||r.read();e?._streamReadAhead&&(i=r.read());let{done:n,value:s}=await o;if(n)return;yield vi(s)}}catch{r.releaseLock()}}async function*Dw(t,e){for await(let r of t)yield vi(r)}function o_(t,e){if(typeof t=="string")return t_(t,e);if(t instanceof ArrayBuffer)return r_(t,e);if(Ce(t))return i_(t,e);if(Do(t))return Kh(t,e);if(Me(t)){let r=t.body;if(!r)throw new Error("Readable stream not available on Response");return Kh(r,e)}throw new Error("makeIterator")}var n_="Cannot convert supplied data type";function Bw(t,e,r){if(e.text&&typeof t=="string")return t;if(Js(t)&&(t=t.buffer),Ri(t)){let i=kh(t);return e.text&&!e.binary?new TextDecoder("utf8").decode(i):vi(i)}throw new Error(n_)}async function s_(t,e,r){if(typeof t=="string"||Ri(t))return Bw(t,e,r);if(Ce(t)&&(t=await ta(t)),Me(t))return await zm(t),e.binary?await t.arrayBuffer():await t.text();if(Do(t)&&(t=o_(t,r)),wh(t)||Rh(t))return Fh(t);throw new Error(n_)}function sa(t,e){let r=Hh(),i=t||r,o=i.fetch??i.core?.fetch;return typeof o=="function"?o:dt(o)?n=>Ci(n,o):e?.fetch?e?.fetch:Ci}function a_(t,e,r){if(r)return r;let i={fetch:sa(e,t),...t};if(i.url){let o=fr(i.url);i.baseUrl=o,i.queryString=Um(i.url),i.filename=Nt.filename(o),i.baseUrl=Nt.dirname(o)}return Array.isArray(i.loaders)||(i.loaders=null),i}function c_(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 hr(t,e,r,i){e&&!Array.isArray(e)&&!Vo(e)&&(i=void 0,r=e,e=void 0),t=await t,r=r||{};let o=Fr(t),s=c_(e,i),a=await Gm(t,s,r);if(!a)return null;let c=Hm(r,a,s,o);return i=a_({url:o,_parse:hr,loaders:s},c,i||null),await Lw(a,t,c,i)}async function Lw(t,e,r,i){if(Oh(t),r=Ph(t.options,r),Me(e)){let{ok:n,redirected:s,status:a,statusText:c,type:l,url:f}=e,h=Object.fromEntries(e.headers.entries());i.response={headers:h,ok:n,redirected:s,status:a,statusText:c,type:l,url:f}}e=await s_(e,t,r);let o=t;if(o.parseTextSync&&typeof e=="string")return o.parseTextSync(e,r,i);if(Nh(t,r))return await Dh(t,e,r,i,hr);if(o.parseText&&typeof e=="string")return await o.parseText(e,r,i);if(o.parse)return await o.parse(e,r,i);throw ge(!o.parseSync),new Error(`${t.id} loader - no parser found and worker is disabled`)}async function ur(t,e,r,i){let o,n;!Array.isArray(e)&&!Vo(e)?(o=[],n=e,i=void 0):(o=e,n=r);let s=sa(n),a=t;return typeof t=="string"&&(a=await s(t)),Ce(t)&&(a=await s(t)),typeof t=="string"&&(Dt(n||{}).core?.baseUrl||(n={...n,core:{...n?.core,baseUrl:t}})),Array.isArray(o)?await hr(a,o,n):await hr(a,o,n)}var l_="4.4.1";var Fw=globalThis.loaders?.parseImageNode,qh=typeof Image<"u",Gh=typeof ImageBitmap<"u",Uw=Boolean(Fw),Qh=Br?!0:Uw;function f_(t){switch(t){case"auto":return Gh||qh||Qh;case"imagebitmap":return Gh;case"image":return qh;case"data":return Qh;default:throw new Error(`@loaders.gl/images: image ${t} not supported in this environment`)}}function h_(){if(Gh)return"imagebitmap";if(qh)return"image";if(Qh)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function kw(t){let e=Vw(t);if(!e)throw new Error("Not an image");return e}function u_(t){switch(kw(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 Vw(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 zw=/^data:image\/svg\+xml/,Ww=/\.svg((\?|#).*)?$/;function aa(t){return t&&(zw.test(t)||Ww.test(t))}function d_(t,e){if(aa(e)){let i=new TextDecoder().decode(t);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(i=unescape(encodeURIComponent(i)))}catch(n){throw new Error(n.message)}return`data:image/svg+xml;base64,${btoa(i)}`}return Jh(t,e)}function Jh(t,e){if(aa(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(t)])}async function ca(t,e,r){let i=d_(t,r),o=self.URL||self.webkitURL,n=typeof i!="string"&&o.createObjectURL(i);try{return await jw(n||i,e)}finally{n&&o.revokeObjectURL(n)}}async function jw(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,o)=>{try{r.onload=()=>i(r),r.onerror=n=>{let s=n instanceof Error?n.message:"error";o(new Error(s))}}catch(n){o(n)}})}var p_=!0;async function g_(t,e,r){let i;aa(r)?i=await ca(t,e,r):i=Jh(t,r);let o=e&&e.imagebitmap;return await $w(i,o)}async function $w(t,e=null){if((Hw(e)||!p_)&&(e=null),e)try{return await createImageBitmap(t,e)}catch(r){console.warn(r),p_=!1}return await createImageBitmap(t)}function Hw(t){if(!t)return!0;for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0}function m_(t){return!Zw(t,"ftyp",4)||!(t[8]&96)?null:Xw(t)}function Xw(t){switch(Yw(t,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function Yw(t,e,r){return String.fromCharCode(...t.slice(e,r))}function Kw(t){return[...t].map(e=>e.charCodeAt(0))}function Zw(t,e,r=0){let i=Kw(e);for(let o=0;o<i.length;++o)if(i[o]!==t[o+r])return!1;return!0}var gt=!1,jo=!0;function la(t){let e=$o(t);return Gw(e)||eR(e)||Qw(e)||Jw(e)||qw(e)}function qw(t){let e=new Uint8Array(t instanceof DataView?t.buffer:t),r=m_(e);return r?{mimeType:r.mimeType,width:0,height:0}:null}function Gw(t){let e=$o(t);return e.byteLength>=24&&e.getUint32(0,gt)===2303741511?{mimeType:"image/png",width:e.getUint32(16,gt),height:e.getUint32(20,gt)}:null}function Qw(t){let e=$o(t);return e.byteLength>=10&&e.getUint32(0,gt)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,jo),height:e.getUint16(8,jo)}:null}function Jw(t){let e=$o(t);return e.byteLength>=14&&e.getUint16(0,gt)===16973&&e.getUint32(2,jo)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,jo),height:e.getUint32(22,jo)}:null}function eR(t){let e=$o(t);if(!(e.byteLength>=3&&e.getUint16(0,gt)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:i,sofMarkers:o}=tR(),n=2;for(;n+9<e.byteLength;){let s=e.getUint16(n,gt);if(o.has(s))return{mimeType:"image/jpeg",height:e.getUint16(n+5,gt),width:e.getUint16(n+7,gt)};if(!i.has(s))return null;n+=2,n+=e.getUint16(n,gt)}return null}function tR(){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 $o(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 __(t,e){let{mimeType:r}=la(t)||{},i=globalThis.loaders?.parseImageNode;return ar(i),await i(t,r)}async function y_(t,e,r){e=e||{};let o=(e.image||{}).type||"auto",{url:n}=r||{},s=rR(o),a;switch(s){case"imagebitmap":a=await g_(t,e,n);break;case"image":a=await ca(t,e,n);break;case"data":a=await __(t,e);break;default:ar(!1)}return o==="data"&&(a=u_(a)),a}function rR(t){switch(t){case"auto":case"data":return h_();default:return f_(t),t}}var iR=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],oR=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],nR={image:{type:"auto",decode:!0}},eu={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:l_,mimeTypes:oR,extensions:iR,parse:y_,tests:[t=>Boolean(la(new DataView(t)))],options:nR};ro();var sR=new he({id:"deck"}),L=sR;var tu={};function fa(t){tu=t}function G(t,e,r,i){L.level>0&&tu[t]&&tu[t].call(null,e,r,i)}function aR(t){let e=t[0],r=t[t.length-1];return e==="{"&&r==="}"||e==="["&&r==="]"}var b_={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:aR,parseTextSync:JSON.parse};function cR(){let t="9.3.0-alpha.6",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:fa},Wo([b_,[eu,{imagebitmap:{premultiplyAlpha:"none"}}]])),t}var ha=cR();var lR=`struct LayerUniforms {
1182
1245
  opacity: f32,
1183
1246
  };
1184
1247
 
1185
1248
  @group(0) @binding(auto)
1186
1249
  var<uniform> layer: LayerUniforms;
1187
- `,s_=`layout(std140) uniform layerUniforms {
1250
+ `,T_=`layout(std140) uniform layerUniforms {
1188
1251
  uniform float opacity;
1189
1252
  } layer;
1190
- `,$h={name:"layer",source:Nw,vs:s_,fs:s_,getUniforms:t=>({opacity:Math.pow(t.opacity,.45454545454545453)}),uniformTypes:{opacity:"f32"}};var Dw=`
1253
+ `,ru={name:"layer",source:lR,vs:T_,fs:T_,getUniforms:t=>({opacity:Math.pow(t.opacity,.45454545454545453)}),uniformTypes:{opacity:"f32"}};var fR=`
1191
1254
 
1192
1255
  @must_use
1193
1256
  fn deckgl_premultiplied_alpha(fragColor: vec4<f32>) -> vec4<f32> {
1194
1257
  return vec4(fragColor.rgb * fragColor.a, fragColor.a);
1195
1258
  };
1196
- `,Xh={name:"color",dependencies:[],source:Dw,getUniforms:t=>({})};var Bw=`const SMOOTH_EDGE_RADIUS: f32 = 0.5;
1259
+ `,iu={name:"color",dependencies:[],source:fR,getUniforms:t=>({})};var hR=`const SMOOTH_EDGE_RADIUS: f32 = 0.5;
1197
1260
 
1198
1261
  struct VertexGeometry {
1199
1262
  position: vec4<f32>,
@@ -1222,7 +1285,7 @@ var<private> fragmentGeometry: FragmentGeometry;
1222
1285
  fn smoothedge(edge: f32, x: f32) -> f32 {
1223
1286
  return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);
1224
1287
  }
1225
- `,o_="#define SMOOTH_EDGE_RADIUS 0.5",Fw=`${o_}
1288
+ `,x_="#define SMOOTH_EDGE_RADIUS 0.5",uR=`${x_}
1226
1289
 
1227
1290
  struct VertexGeometry {
1228
1291
  vec4 position;
@@ -1239,7 +1302,7 @@ struct VertexGeometry {
1239
1302
  vec2(0.0),
1240
1303
  vec3(0.0)
1241
1304
  );
1242
- `,Lw=`${o_}
1305
+ `,dR=`${x_}
1243
1306
 
1244
1307
  struct FragmentGeometry {
1245
1308
  vec2 uv;
@@ -1248,9 +1311,9 @@ struct FragmentGeometry {
1248
1311
  float smoothedge(float edge, float x) {
1249
1312
  return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);
1250
1313
  }
1251
- `,oa={name:"geometry",source:Bw,vs:Fw,fs:Lw};var $;(function(t){t[t.Start=1]="Start",t[t.Move=2]="Move",t[t.End=4]="End",t[t.Cancel=8]="Cancel"})($||($={}));var K;(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"})(K||(K={}));var N;(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"})(N||(N={}));var n_="compute",Yh="auto",Vs="manipulation",Br="none",zs="pan-x",Ws="pan-y";function Kh(t){if(t.includes(Br))return Br;let e=t.includes(zs),r=t.includes(Ws);return e&&r?Br:e||r?e?zs:Ws:t.includes(Vs)?Vs:Yh}var js=class{constructor(e,r){this.actions="",this.manager=e,this.set(r)}set(e){e===n_&&(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 Kh(e.join(" "))}};function Ri(t){return t.trim().split(/\s+/g)}function na(t,e,r){if(t)for(let i of Ri(e))t.addEventListener(i,r,!1)}function aa(t,e,r){if(t)for(let i of Ri(e))t.removeEventListener(i,r,!1)}function Zh(t){return(t.ownerDocument||t).defaultView}function qh(t,e){let r=t;for(;r;){if(r===e)return!0;r=r.parentNode}return!1}function ca(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 Gh(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:ca(e),deltaX:t.deltaX,deltaY:t.deltaY}}function la(t,e){let r=e.x-t.x,i=e.y-t.y;return Math.sqrt(r*r+i*i)}function Qh(t,e){let r=e.clientX-t.clientX,i=e.clientY-t.clientY;return Math.sqrt(r*r+i*i)}function a_(t,e){let r=e.x-t.x,i=e.y-t.y;return Math.atan2(i,r)*180/Math.PI}function Jh(t,e){let r=e.clientX-t.clientX,i=e.clientY-t.clientY;return Math.atan2(i,r)*180/Math.PI}function fa(t,e){return t===e?K.None:Math.abs(t)>=Math.abs(e)?t<0?K.Left:K.Right:e<0?K.Up:K.Down}function c_(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 ha(t,e,r){return{x:e/t||0,y:r/t||0}}function l_(t,e){return Qh(e[0],e[1])/Qh(t[0],t[1])}function f_(t,e){return Jh(e[1],e[0])-Jh(t[1],t[0])}function h_(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=ha(i,c,l);o=f.x,n=f.y,s=Math.abs(f.x)>Math.abs(f.y)?f.x:f.y,a=fa(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 u_(t,e){let{session:r}=t,{pointers:i}=e,{length:s}=i;r.firstInput||(r.firstInput=Gh(e)),s>1&&!r.firstMultiple?r.firstMultiple=Gh(e):s===1&&(r.firstMultiple=!1);let{firstInput:o,firstMultiple:n}=r,a=n?n.center:o.center,c=e.center=ca(i);e.timeStamp=Date.now(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=a_(a,c),e.distance=la(a,c);let{deltaX:l,deltaY:f}=c_(r,e);e.deltaX=l,e.deltaY=f,e.offsetDirection=fa(e.deltaX,e.deltaY);let h=ha(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?l_(n.pointers,i):1,e.rotation=n?f_(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 qh(e.srcEvent.target,u)&&(u=e.srcEvent.target),e.target=u,h_(r,e),e}function d_(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=u_(t,r);t.emit("hammer.input",a),t.recognize(a),t.session.prevInput=a}var Hs=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){d_(this.manager,e,r)}init(){na(this.element,this.evEl,this.domHandler),na(this.target,this.evTarget,this.domHandler),na(Zh(this.element),this.evWin,this.domHandler)}destroy(){aa(this.element,this.evEl,this.domHandler),aa(this.target,this.evTarget,this.domHandler),aa(Zh(this.element),this.evWin,this.domHandler)}};var kw={pointerdown:$.Start,pointermove:$.Move,pointerup:$.End,pointercancel:$.Cancel,pointerout:$.Cancel},Vw="pointerdown",zw="pointermove pointerup pointercancel",$s=class extends Hs{constructor(e){super(e),this.evEl=Vw,this.evWin=zw,this.store=this.manager.session.pointerEvents=[],this.init()}handler(e){let{store:r}=this,i=!1,s=kw[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 Ww=["","webkit","Moz","MS","ms","o"];function p_(t,e){let r=e[0].toUpperCase()+e.slice(1);for(let i of Ww){let s=i?i+r:e;if(s in t)return s}}var jw=1,g_=2,m_={touchAction:"compute",enable:!0,inputTarget:null,cssProps:{userSelect:"none",userDrag:"none",touchCallout:"none",tapHighlightColor:"rgba(0,0,0,0)"}},Xs=class{constructor(e,r){this.options={...m_,...r,cssProps:{...m_.cssProps,...r.cssProps},inputTarget:r.inputTarget||e},this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=new $s(this),this.touchAction=new js(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?g_:jw}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&N.Recognized)&&(o=r.curRecognizer=null);let n=0;for(;n<s.length;)i=s[n],r.stopped!==g_&&(!o||i===o||i.canRecognizeWith(o))?i.recognize(e):i.reset(),!o&&i.state&(N.Began|N.Changed|N.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 Ri(e))i[s]=i[s]||[],i[s].push(r)}off(e,r){if(!e)return;let{handlers:i}=this;for(let s of Ri(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=p_(r.style,i);e?(this.oldCssProps[o]=r.style[o],r.style[o]=s):r.style[o]=this.oldCssProps[o]||""}e||(this.oldCssProps={})}}};var Hw=1;function __(){return Hw++}function eu(t){return t&N.Cancelled?"cancel":t&N.Ended?"end":t&N.Changed?"move":t&N.Began?"start":""}var Ot=class{constructor(e){this.options=e,this.id=__(),this.state=N.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<N.Ended&&this.manager.emit(this.options.event+eu(r),e),this.manager.emit(this.options.event,e),e.additionalEvent&&this.manager.emit(e.additionalEvent,e),r>=N.Ended&&this.manager.emit(this.options.event+eu(r),e)}tryEmit(e){this.canEmit()?this.emit(e):this.state=N.Failed}canEmit(){let e=0;for(;e<this.requireFail.length;){if(!(this.requireFail[e].state&(N.Failed|N.Possible)))return!1;e++}return!0}recognize(e){let r={...e};if(!this.options.enable){this.reset(),this.state=N.Failed;return}this.state&(N.Recognized|N.Cancelled|N.Failed)&&(this.state=N.Possible),this.state=this.process(r),this.state&(N.Began|N.Changed|N.Ended|N.Cancelled)&&this.tryEmit(r)}getEventNames(){return[this.options.event]}reset(){}};var Nt=class extends Ot{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&(N.Began|N.Changed),o=this.attrTest(e);return s&&(i&$.Cancel||!o)?r|N.Cancelled:s||o?i&$.End?r|N.Ended:r&N.Began?r|N.Changed:N.Began:N.Failed}};var Fr=class extends Ot{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[Vs]}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||la(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=N.Recognized,this.tryEmit(this._input)},r.interval),N.Began):N.Recognized}return N.Failed}failTimeout(){return this._timer=setTimeout(()=>{this.state=N.Failed},this.options.interval),N.Failed}reset(){clearTimeout(this._timer)}emit(e){this.state===N.Recognized&&(e.tapCount=this.count,this.manager.emit(this.options.event,e))}};var $w=["","start","move","end","cancel","up","down","left","right"],cr=class extends Nt{constructor(e={}){super({enable:!0,pointers:1,event:"pan",threshold:10,direction:K.All,...e}),this.pX=null,this.pY=null}getTouchAction(){let{options:{direction:e}}=this,r=[];return e&K.Horizontal&&r.push(Ws),e&K.Vertical&&r.push(zs),r}getEventNames(){return $w.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&K.Horizontal?(o=n===0?K.None:n<0?K.Left:K.Right,i=n!==this.pX,s=Math.abs(e.deltaX)):(o=a===0?K.None:a<0?K.Up:K.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&N.Began)||!(this.state&N.Began)&&this.directionTest(e))}emit(e){this.pX=e.deltaX,this.pY=e.deltaY;let r=K[e.direction].toLowerCase();r&&(e.additionalEvent=this.options.event+r),super.emit(e)}};var Xw=["","start","move","end","cancel","in","out"],Pi=class extends Nt{constructor(e={}){super({enable:!0,event:"pinch",threshold:0,pointers:2,...e})}getTouchAction(){return[Br]}getEventNames(){return Xw.map(e=>this.options.event+e)}attrTest(e){return super.attrTest(e)&&(Math.abs(e.scale-1)>this.options.threshold||Boolean(this.state&N.Began))}emit(e){if(e.scale!==1){let r=e.scale<1?"in":"out";e.additionalEvent=this.options.event+r}super.emit(e)}};var gt=class{constructor(e,r,i){this.element=e,this.callback=r,this.options=i}};var y_=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",L5=typeof window<"u"?window:global;var qw=y_.indexOf("firefox")!==-1,b_=4.000244140625,Gw=40,Qw=.25,ua=class extends gt{constructor(e,r,i){super(e,r,{enable:!0,...i}),this.handleEvent=s=>{if(!this.options.enable)return;let o=s.deltaY;globalThis.WheelEvent&&(qw&&s.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(o/=globalThis.devicePixelRatio),s.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(o*=Gw)),o!==0&&o%b_===0&&(o=Math.floor(o/b_)),s.shiftKey&&o&&(o=o*Qw),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 T_=["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],da=class extends gt{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,T_.forEach(o=>e.addEventListener(o,this.handleEvent))}destroy(){T_.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 x_=["keydown","keyup"],pa=class extends gt{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",x_.forEach(s=>e.addEventListener(s,this.handleEvent))}destroy(){x_.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,r){e==="keydown"&&(this.enableDownEvent=r),e==="keyup"&&(this.enableUpEvent=r)}};var ga=class extends gt{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 Jw={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},eR=0,tR=1,rR=2,iR=1,sR=2,oR=4;function A_(t){let e=Jw[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&iR),o=Boolean(r&oR),n=Boolean(r&sR)):(s=i===eR,o=i===tR,n=i===rR),{leftButton:s,middleButton:o,rightButton:n}}function S_(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 nR={srcElement:"root",priority:0},ma=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={...nR,...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,...A_(e),...S_(e,r),preventDefault:()=>{e.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:r}}};function aR(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 Ys=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 Xs(e,this.options);for(let i of this.options.recognizers){let{recognizer:s,recognizeWith:o,requireFailure:n}=aR(i);this.manager.add(s),o&&s.recognizeWith(o),n&&s.requireFailure(n)}this.manager.on("hammer.input",this._onBasicInput),this.wheelInput=new ua(e,this._onOtherEvent,{enable:!1}),this.moveInput=new da(e,this._onOtherEvent,{enable:!1}),this.keyInput=new pa(e,this._onOtherEvent,{enable:!1,tabIndex:r.tabIndex}),this.contextmenuInput=new ga(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 ma(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:()=>(F.deprecated("COORDINATE_SYSTEM.IDENTITY","COORDINATE_SYSTEM.CARTESIAN")(),0)});var se={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},lr={common:0,meters:1,pixels:2},vi={click:"onClick",dblclick:"onClick",panstart:"onDragStart",panmove:"onDrag",panend:"onDragEnd"},tu={multipan:[cr,{threshold:10,direction:K.Vertical,pointers:2}],pinch:[Pi,{},null,["multipan"]],pan:[cr,{threshold:1},["pinch"],["multipan"]],dblclick:[Fr,{event:"dblclick",taps:2}],click:[Fr,{event:"click"},null,["dblclick"]]},E_={DRAW:"draw",MASK:"mask",TERRAIN:"terrain"};function cR(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 Ue(t){let e={},r;return i=>{for(let s in i)if(!cR(i[s],e[s])){r=t(i),e=i;break}return r}}var w_=[0,0,0,0],lR=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],R_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],fR=[0,0,0],P_=[0,0,0],hR=Ue(dR);function ru(t,e,r=P_){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 se.WEB_MERCATOR:(e===k.LNGLAT||e===k.CARTESIAN)&&(s=[0,0,0],o=!1);break;case se.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 se.IDENTITY:i=t.position.map(Math.fround),i[2]=i[2]||0;break;case se.GLOBE:o=!1,s=null;break;default:o=!1}return{geospatialOrigin:s,shaderCoordinateOrigin:i,offsetMode:o}}function uR(t,e,r){let{viewMatrixUncentered:i,projectionMatrix:s}=t,{viewMatrix:o,viewProjectionMatrix:n}=t,a=w_,c=w_,l=t.cameraPosition,{geospatialOrigin:f,shaderCoordinateOrigin:h,offsetMode:u}=ru(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=Ae.transformMat4([],c,n),o=i||o,n=re.multiply([],s,o),n=re.multiply([],n,lR)),{viewMatrix:o,viewProjectionMatrix:n,projectionCenter:a,originCommon:c,cameraPosCommon:l,shaderCoordinateOrigin:h,geospatialOrigin:f}}function _a({viewport:t,devicePixelRatio:e=1,modelMatrix:r=null,coordinateSystem:i=k.DEFAULT,coordinateOrigin:s=P_,autoWrapLongitude:o=!1}){i===k.DEFAULT&&(i=t.isGeospatial?k.LNGLAT:k.CARTESIAN);let n=hR({viewport:t,devicePixelRatio:e,coordinateSystem:i,coordinateOrigin:s});return n.wrapLongitude=o,n.modelMatrix=r||R_,n}function dR({viewport:t,devicePixelRatio:e,coordinateSystem:r,coordinateOrigin:i}){let{projectionCenter:s,viewProjectionMatrix:o,originCommon:n,cameraPosCommon:a,shaderCoordinateOrigin:c,geospatialOrigin:l}=uR(t,r,i),f=t.getDistanceScales(),h=[t.width*e,t.height*e],u=Ae.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:fR,scale:t.scale,wrapLongitude:!1,viewProjectionMatrix:o,modelMatrix:R_,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 pR=Object.keys(k).map(t=>`const COORDINATE_SYSTEM_${t}: i32 = ${k[t]};`).join(""),gR=Object.keys(se).map(t=>`const PROJECTION_MODE_${t}: i32 = ${se[t]};`).join(""),mR=Object.keys(lr).map(t=>`const UNIT_${t.toUpperCase()}: i32 = ${lr[t]};`).join(""),_R=`${pR}
1252
- ${gR}
1253
- ${mR}
1314
+ `,ua={name:"geometry",source:hR,vs:uR,fs:dR};var H;(function(t){t[t.Start=1]="Start",t[t.Move=2]="Move",t[t.End=4]="End",t[t.Cancel=8]="Cancel"})(H||(H={}));var K;(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"})(K||(K={}));var N;(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"})(N||(N={}));var A_="compute",ou="auto",Ho="manipulation",Ur="none",Xo="pan-x",Yo="pan-y";function nu(t){if(t.includes(Ur))return Ur;let e=t.includes(Xo),r=t.includes(Yo);return e&&r?Ur:e||r?e?Xo:Yo:t.includes(Ho)?Ho:ou}var Ko=class{constructor(e,r){this.actions="",this.manager=e,this.set(r)}set(e){e===A_&&(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 nu(e.join(" "))}};function Ii(t){return t.trim().split(/\s+/g)}function da(t,e,r){if(t)for(let i of Ii(e))t.addEventListener(i,r,!1)}function pa(t,e,r){if(t)for(let i of Ii(e))t.removeEventListener(i,r,!1)}function su(t){return(t.ownerDocument||t).defaultView}function au(t,e){let r=t;for(;r;){if(r===e)return!0;r=r.parentNode}return!1}function ga(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,o=0;for(;o<e;)r+=t[o].clientX,i+=t[o].clientY,o++;return{x:Math.round(r/e),y:Math.round(i/e)}}function cu(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:ga(e),deltaX:t.deltaX,deltaY:t.deltaY}}function ma(t,e){let r=e.x-t.x,i=e.y-t.y;return Math.sqrt(r*r+i*i)}function lu(t,e){let r=e.clientX-t.clientX,i=e.clientY-t.clientY;return Math.sqrt(r*r+i*i)}function S_(t,e){let r=e.x-t.x,i=e.y-t.y;return Math.atan2(i,r)*180/Math.PI}function fu(t,e){let r=e.clientX-t.clientX,i=e.clientY-t.clientY;return Math.atan2(i,r)*180/Math.PI}function _a(t,e){return t===e?K.None:Math.abs(t)>=Math.abs(e)?t<0?K.Left:K.Right:e<0?K.Up:K.Down}function E_(t,e){let r=e.center,i=t.offsetDelta,o=t.prevDelta,n=t.prevInput;return(e.eventType===H.Start||n?.eventType===H.End)&&(o=t.prevDelta={x:n?.deltaX||0,y:n?.deltaY||0},i=t.offsetDelta={x:r.x,y:r.y}),{deltaX:o.x+(r.x-i.x),deltaY:o.y+(r.y-i.y)}}function ya(t,e,r){return{x:e/t||0,y:r/t||0}}function w_(t,e){return lu(e[0],e[1])/lu(t[0],t[1])}function R_(t,e){return fu(e[1],e[0])-fu(t[1],t[0])}function P_(t,e){let r=t.lastInterval||e,i=e.timeStamp-r.timeStamp,o,n,s,a;if(e.eventType!==H.Cancel&&(i>25||r.velocity===void 0)){let c=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,f=ya(i,c,l);n=f.x,s=f.y,o=Math.abs(f.x)>Math.abs(f.y)?f.x:f.y,a=_a(c,l),t.lastInterval=e}else o=r.velocity,n=r.velocityX,s=r.velocityY,a=r.direction;e.velocity=o,e.velocityX=n,e.velocityY=s,e.direction=a}function v_(t,e){let{session:r}=t,{pointers:i}=e,{length:o}=i;r.firstInput||(r.firstInput=cu(e)),o>1&&!r.firstMultiple?r.firstMultiple=cu(e):o===1&&(r.firstMultiple=!1);let{firstInput:n,firstMultiple:s}=r,a=s?s.center:n.center,c=e.center=ga(i);e.timeStamp=Date.now(),e.deltaTime=e.timeStamp-n.timeStamp,e.angle=S_(a,c),e.distance=ma(a,c);let{deltaX:l,deltaY:f}=E_(r,e);e.deltaX=l,e.deltaY=f,e.offsetDirection=_a(e.deltaX,e.deltaY);let h=ya(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=s?w_(s.pointers,i):1,e.rotation=s?R_(s.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 au(e.srcEvent.target,u)&&(u=e.srcEvent.target),e.target=u,P_(r,e),e}function M_(t,e,r){let i=r.pointers.length,o=r.changedPointers.length,n=e&H.Start&&i-o===0,s=e&(H.End|H.Cancel)&&i-o===0;r.isFirst=Boolean(n),r.isFinal=Boolean(s),n&&(t.session={}),r.eventType=e;let a=v_(t,r);t.emit("hammer.input",a),t.recognize(a),t.session.prevInput=a}var Zo=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){M_(this.manager,e,r)}init(){da(this.element,this.evEl,this.domHandler),da(this.target,this.evTarget,this.domHandler),da(su(this.element),this.evWin,this.domHandler)}destroy(){pa(this.element,this.evEl,this.domHandler),pa(this.target,this.evTarget,this.domHandler),pa(su(this.element),this.evWin,this.domHandler)}};var gR={pointerdown:H.Start,pointermove:H.Move,pointerup:H.End,pointercancel:H.Cancel,pointerout:H.Cancel},mR="pointerdown",_R="pointermove pointerup pointercancel",qo=class extends Zo{constructor(e){super(e),this.evEl=mR,this.evWin=_R,this.store=this.manager.session.pointerEvents=[],this.init()}handler(e){let{store:r}=this,i=!1,o=gR[e.type],n=e.pointerType,s=n==="touch",a=r.findIndex(c=>c.pointerId===e.pointerId);o&H.Start&&(e.buttons||s)?a<0&&(r.push(e),a=r.length-1):o&(H.End|H.Cancel)&&(i=!0),!(a<0)&&(r[a]=e,this.callback(o,{pointers:r,changedPointers:[e],eventType:o,pointerType:n,srcEvent:e}),i&&r.splice(a,1))}};var yR=["","webkit","Moz","MS","ms","o"];function C_(t,e){let r=e[0].toUpperCase()+e.slice(1);for(let i of yR){let o=i?i+r:e;if(o in t)return o}}var bR=1,I_=2,O_={touchAction:"compute",enable:!0,inputTarget:null,cssProps:{userSelect:"none",userDrag:"none",touchCallout:"none",tapHighlightColor:"rgba(0,0,0,0)"}},Go=class{constructor(e,r){this.options={...O_,...r,cssProps:{...O_.cssProps,...r.cssProps},inputTarget:r.inputTarget||e},this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=e,this.input=new qo(this),this.touchAction=new Ko(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?I_:bR}recognize(e){let{session:r}=this;if(r.stopped)return;this.session.prevented&&e.srcEvent.preventDefault();let i,{recognizers:o}=this,{curRecognizer:n}=r;(!n||n&&n.state&N.Recognized)&&(n=r.curRecognizer=null);let s=0;for(;s<o.length;)i=o[s],r.stopped!==I_&&(!n||i===n||i.canRecognizeWith(n))?i.recognize(e):i.reset(),!n&&i.state&(N.Began|N.Changed|N.Ended)&&(n=r.curRecognizer=i),s++}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,o=i.indexOf(r);o!==-1&&(i.splice(o,1),this.touchAction.update())}return this}on(e,r){if(!e||!r)return;let{handlers:i}=this;for(let o of Ii(e))i[o]=i[o]||[],i[o].push(r)}off(e,r){if(!e)return;let{handlers:i}=this;for(let o of Ii(e))r?i[o]&&i[o].splice(i[o].indexOf(r),1):delete i[o]}emit(e,r){let i=this.handlers[e]&&this.handlers[e].slice();if(!i||!i.length)return;let o=r;o.type=e,o.preventDefault=function(){r.srcEvent.preventDefault()};let n=0;for(;n<i.length;)i[n](o),n++}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,o]of Object.entries(this.options.cssProps)){let n=C_(r.style,i);e?(this.oldCssProps[n]=r.style[n],r.style[n]=o):r.style[n]=this.oldCssProps[n]||""}e||(this.oldCssProps={})}}};var TR=1;function N_(){return TR++}function hu(t){return t&N.Cancelled?"cancel":t&N.Ended?"end":t&N.Changed?"move":t&N.Began?"start":""}var Bt=class{constructor(e){this.options=e,this.id=N_(),this.state=N.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 o of e)this.recognizeWith(o);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 o of e)this.requireFailure(o);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<N.Ended&&this.manager.emit(this.options.event+hu(r),e),this.manager.emit(this.options.event,e),e.additionalEvent&&this.manager.emit(e.additionalEvent,e),r>=N.Ended&&this.manager.emit(this.options.event+hu(r),e)}tryEmit(e){this.canEmit()?this.emit(e):this.state=N.Failed}canEmit(){let e=0;for(;e<this.requireFail.length;){if(!(this.requireFail[e].state&(N.Failed|N.Possible)))return!1;e++}return!0}recognize(e){let r={...e};if(!this.options.enable){this.reset(),this.state=N.Failed;return}this.state&(N.Recognized|N.Cancelled|N.Failed)&&(this.state=N.Possible),this.state=this.process(r),this.state&(N.Began|N.Changed|N.Ended|N.Cancelled)&&this.tryEmit(r)}getEventNames(){return[this.options.event]}reset(){}};var Lt=class extends Bt{attrTest(e){let r=this.options.pointers;return r===0||e.pointers.length===r}process(e){let{state:r}=this,{eventType:i}=e,o=r&(N.Began|N.Changed),n=this.attrTest(e);return o&&(i&H.Cancel||!n)?r|N.Cancelled:o||n?i&H.End?r|N.Ended:r&N.Began?r|N.Changed:N.Began:N.Failed}};var kr=class extends Bt{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[Ho]}process(e){let{options:r}=this,i=e.pointers.length===r.pointers,o=e.distance<r.threshold,n=e.deltaTime<r.time;if(this.reset(),e.eventType&H.Start&&this.count===0)return this.failTimeout();if(o&&n&&i){if(e.eventType!==H.End)return this.failTimeout();let s=this.pTime?e.timeStamp-this.pTime<r.interval:!0,a=!this.pCenter||ma(this.pCenter,e.center)<r.posThreshold;if(this.pTime=e.timeStamp,this.pCenter=e.center,!a||!s?this.count=1:this.count+=1,this._input=e,this.count%r.taps===0)return this.hasRequireFailures()?(this._timer=setTimeout(()=>{this.state=N.Recognized,this.tryEmit(this._input)},r.interval),N.Began):N.Recognized}return N.Failed}failTimeout(){return this._timer=setTimeout(()=>{this.state=N.Failed},this.options.interval),N.Failed}reset(){clearTimeout(this._timer)}emit(e){this.state===N.Recognized&&(e.tapCount=this.count,this.manager.emit(this.options.event,e))}};var xR=["","start","move","end","cancel","up","down","left","right"],dr=class extends Lt{constructor(e={}){super({enable:!0,pointers:1,event:"pan",threshold:10,direction:K.All,...e}),this.pX=null,this.pY=null}getTouchAction(){let{options:{direction:e}}=this,r=[];return e&K.Horizontal&&r.push(Yo),e&K.Vertical&&r.push(Xo),r}getEventNames(){return xR.map(e=>this.options.event+e)}directionTest(e){let{options:r}=this,i=!0,{distance:o}=e,{direction:n}=e,s=e.deltaX,a=e.deltaY;return n&r.direction||(r.direction&K.Horizontal?(n=s===0?K.None:s<0?K.Left:K.Right,i=s!==this.pX,o=Math.abs(e.deltaX)):(n=a===0?K.None:a<0?K.Up:K.Down,i=a!==this.pY,o=Math.abs(e.deltaY))),e.direction=n,i&&o>r.threshold&&Boolean(n&r.direction)}attrTest(e){return super.attrTest(e)&&(Boolean(this.state&N.Began)||!(this.state&N.Began)&&this.directionTest(e))}emit(e){this.pX=e.deltaX,this.pY=e.deltaY;let r=K[e.direction].toLowerCase();r&&(e.additionalEvent=this.options.event+r),super.emit(e)}};var AR=["","start","move","end","cancel","in","out"],Oi=class extends Lt{constructor(e={}){super({enable:!0,event:"pinch",threshold:0,pointers:2,...e})}getTouchAction(){return[Ur]}getEventNames(){return AR.map(e=>this.options.event+e)}attrTest(e){return super.attrTest(e)&&(Math.abs(e.scale-1)>this.options.threshold||Boolean(this.state&N.Began))}emit(e){if(e.scale!==1){let r=e.scale<1?"in":"out";e.additionalEvent=this.options.event+r}super.emit(e)}};var mt=class{constructor(e,r,i){this.element=e,this.callback=r,this.options=i}};var D_=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",wV=typeof window<"u"?window:global;var RR=D_.indexOf("firefox")!==-1,B_=4.000244140625,PR=40,vR=.25,ba=class extends mt{constructor(e,r,i){super(e,r,{enable:!0,...i}),this.handleEvent=o=>{if(!this.options.enable)return;let n=o.deltaY;globalThis.WheelEvent&&(RR&&o.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(n/=globalThis.devicePixelRatio),o.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(n*=PR)),n!==0&&n%B_===0&&(n=Math.floor(n/B_)),o.shiftKey&&n&&(n=n*vR),this.callback({type:"wheel",center:{x:o.clientX,y:o.clientY},delta:-n,srcEvent:o,pointerType:"mouse",target:o.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 L_=["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],Ta=class extends mt{constructor(e,r,i){super(e,r,{enable:!0,...i}),this.handleEvent=n=>{this.handleOverEvent(n),this.handleOutEvent(n),this.handleEnterEvent(n),this.handleLeaveEvent(n),this.handleMoveEvent(n)},this.pressed=!1;let{enable:o}=this.options;this.enableMoveEvent=o,this.enableLeaveEvent=o,this.enableEnterEvent=o,this.enableOutEvent=o,this.enableOverEvent=o,L_.forEach(n=>e.addEventListener(n,this.handleEvent))}destroy(){L_.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 F_=["keydown","keyup"],xa=class extends mt{constructor(e,r,i){super(e,r,{enable:!0,tabIndex:0,...i}),this.handleEvent=o=>{let n=o.target||o.srcElement;n.tagName==="INPUT"&&n.type==="text"||n.tagName==="TEXTAREA"||(this.enableDownEvent&&o.type==="keydown"&&this.callback({type:"keydown",srcEvent:o,key:o.key,target:o.target}),this.enableUpEvent&&o.type==="keyup"&&this.callback({type:"keyup",srcEvent:o,key:o.key,target:o.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,e.tabIndex=this.options.tabIndex,e.style.outline="none",F_.forEach(o=>e.addEventListener(o,this.handleEvent))}destroy(){F_.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,r){e==="keydown"&&(this.enableDownEvent=r),e==="keyup"&&(this.enableUpEvent=r)}};var Aa=class extends mt{constructor(e,r,i){super(e,r,i),this.handleEvent=o=>{this.options.enable&&this.callback({type:"contextmenu",center:{x:o.clientX,y:o.clientY},srcEvent:o,pointerType:"mouse",target:o.target})},e.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(e,r){e==="contextmenu"&&(this.options.enable=r)}};var MR={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},CR=0,IR=1,OR=2,NR=1,DR=2,BR=4;function U_(t){let e=MR[t.srcEvent.type];if(!e)return null;let{buttons:r,button:i}=t.srcEvent,o=!1,n=!1,s=!1;return e===2?(o=Boolean(r&NR),n=Boolean(r&BR),s=Boolean(r&DR)):(o=i===CR,n=i===IR,s=i===OR),{leftButton:o,middleButton:n,rightButton:s}}function k_(t,e){let r=t.center;if(!r)return null;let i=e.getBoundingClientRect(),o=i.width/e.offsetWidth||1,n=i.height/e.offsetHeight||1,s={x:(r.x-i.left-e.clientLeft)/o,y:(r.y-i.top-e.clientTop)/n};return{center:r,offsetCenter:s}}var LR={srcElement:"root",priority:0},Sa=class{constructor(e,r){this.handleEvent=i=>{if(this.isEmpty())return;let o=this._normalizeEvent(i),n=i.srcEvent.target;for(;n&&n!==o.rootElement;){if(this._emit(o,n),o.handled)return;n=n.parentNode}this._emit(o,"root")},this.eventManager=e,this.recognizerName=r,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(e,r,i,o=!1,n=!1){let{handlers:s,handlersByElement:a}=this,c={...LR,...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};o&&(f.once=!0),n&&(f.passive=!0),s.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:o}=this;for(let n=i.length-1;n>=0;n--){let s=i[n];if(s.type===e&&s.handler===r){i.splice(n,1);let a=o.get(s.srcElement);a.splice(a.indexOf(s),1),a.length===0&&o.delete(s.srcElement)}}this._active=i.some(n=>!n.passive)}_emit(e,r){let i=this.handlersByElement.get(r);if(i){let o=!1,n=()=>{e.handled=!0},s=()=>{e.handled=!0,o=!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:n,stopImmediatePropagation:s}),h&&a.push(i[c]),o)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,...U_(e),...k_(e,r),preventDefault:()=>{e.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:r}}};function FR(t){if("recognizer"in t)return t;let e,r=Array.isArray(t)?[...t]:[t];if(typeof r[0]=="function"){let i=r.shift(),o=r.shift()||{};e=new i(o)}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 Qo=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 Go(e,this.options);for(let i of this.options.recognizers){let{recognizer:o,recognizeWith:n,requireFailure:s}=FR(i);this.manager.add(o),n&&o.recognizeWith(n),s&&o.requireFailure(s)}this.manager.on("hammer.input",this._onBasicInput),this.wheelInput=new ba(e,this._onOtherEvent,{enable:!1}),this.moveInput=new Ta(e,this._onOtherEvent,{enable:!1}),this.keyInput=new xa(e,this._onOtherEvent,{enable:!1,tabIndex:r.tabIndex}),this.contextmenuInput=new Aa(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 o=i.get(e);o&&(o.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,o,n){if(typeof e!="string"){i=r;for(let[l,f]of Object.entries(e))this._addEventHandler(l,f,i,o,n);return}let{manager:s,events:a}=this;if(!s)return;let c=a.get(e);if(!c){let l=this._getRecognizerName(e)||e;c=new Sa(this,l),a.set(e,c),s&&s.on(e,c.handleEvent)}c.add(e,r,i,o,n),c.isEmpty()||this._toggleRecognizer(c.recognizerName,!0)}_removeEventHandler(e,r){if(typeof e!="string"){for(let[n,s]of Object.entries(e))this._removeEventHandler(n,s);return}let{events:i}=this,o=i.get(e);if(o&&(o.remove(e,r),o.isEmpty())){let{recognizerName:n}=o,s=!1;for(let a of i.values())if(a.recognizerName===n&&!a.isEmpty()){s=!0;break}s||this._toggleRecognizer(n,!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},pr={common:0,meters:1,pixels:2},Ni={click:"onClick",dblclick:"onClick",panstart:"onDragStart",panmove:"onDrag",panend:"onDragEnd"},uu={multipan:[dr,{threshold:10,direction:K.Vertical,pointers:2}],pinch:[Oi,{},null,["multipan"]],pan:[dr,{threshold:1},["pinch"],["multipan"]],dblclick:[kr,{event:"dblclick",taps:2}],click:[kr,{event:"click"},null,["dblclick"]]},V_={DRAW:"draw",MASK:"mask",TERRAIN:"terrain"};function UR(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 ke(t){let e={},r;return i=>{for(let o in i)if(!UR(i[o],e[o])){r=t(i),e=i;break}return r}}var z_=[0,0,0,0],kR=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],W_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],VR=[0,0,0],j_=[0,0,0],zR=ke(jR);function du(t,e,r=j_){r.length<3&&(r=[r[0],r[1],0]);let i=r,o,n=!0;switch(e===k.LNGLAT_OFFSETS||e===k.METER_OFFSETS?o=r:o=t.isGeospatial?[Math.fround(t.longitude),Math.fround(t.latitude),0]:null,t.projectionMode){case oe.WEB_MERCATOR:(e===k.LNGLAT||e===k.CARTESIAN)&&(o=[0,0,0],n=!1);break;case oe.WEB_MERCATOR_AUTO_OFFSET:e===k.LNGLAT?i=o:e===k.CARTESIAN&&(i=[Math.fround(t.center[0]),Math.fround(t.center[1]),0],o=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:n=!1,o=null;break;default:n=!1}return{geospatialOrigin:o,shaderCoordinateOrigin:i,offsetMode:n}}function WR(t,e,r){let{viewMatrixUncentered:i,projectionMatrix:o}=t,{viewMatrix:n,viewProjectionMatrix:s}=t,a=z_,c=z_,l=t.cameraPosition,{geospatialOrigin:f,shaderCoordinateOrigin:h,offsetMode:u}=du(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,s),n=i||n,s=re.multiply([],o,n),s=re.multiply([],s,kR)),{viewMatrix:n,viewProjectionMatrix:s,projectionCenter:a,originCommon:c,cameraPosCommon:l,shaderCoordinateOrigin:h,geospatialOrigin:f}}function Ea({viewport:t,devicePixelRatio:e=1,modelMatrix:r=null,coordinateSystem:i=k.DEFAULT,coordinateOrigin:o=j_,autoWrapLongitude:n=!1}){i===k.DEFAULT&&(i=t.isGeospatial?k.LNGLAT:k.CARTESIAN);let s=zR({viewport:t,devicePixelRatio:e,coordinateSystem:i,coordinateOrigin:o});return s.wrapLongitude=n,s.modelMatrix=r||W_,s}function jR({viewport:t,devicePixelRatio:e,coordinateSystem:r,coordinateOrigin:i}){let{projectionCenter:o,viewProjectionMatrix:n,originCommon:s,cameraPosCommon:a,shaderCoordinateOrigin:c,geospatialOrigin:l}=WR(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:s.slice(0,3),center:o,pseudoMeters:Boolean(t._pseudoMeters),viewportSize:h,devicePixelRatio:e,focalDistance:u,commonUnitsPerMeter:f.unitsPerMeter,commonUnitsPerWorldUnit:f.unitsPerMeter,commonUnitsPerWorldUnit2:VR,scale:t.scale,wrapLongitude:!1,viewProjectionMatrix:n,modelMatrix:W_,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 $R=Object.keys(k).map(t=>`const COORDINATE_SYSTEM_${t}: i32 = ${k[t]};`).join(""),HR=Object.keys(oe).map(t=>`const PROJECTION_MODE_${t}: i32 = ${oe[t]};`).join(""),XR=Object.keys(pr).map(t=>`const UNIT_${t.toUpperCase()}: i32 = ${pr[t]};`).join(""),YR=`${$R}
1315
+ ${HR}
1316
+ ${XR}
1254
1317
 
1255
1318
  const TILE_SIZE: f32 = 512.0;
1256
1319
  const PI: f32 = 3.1415926536;
@@ -1302,7 +1365,7 @@ struct Geometry {
1302
1365
  };
1303
1366
 
1304
1367
  var<private> geometry: Geometry;
1305
- `,v_=`${_R}
1368
+ `,$_=`${YR}
1306
1369
 
1307
1370
  // -----------------------------------------------------------------------------
1308
1371
  // Functions
@@ -1529,9 +1592,9 @@ fn project_pixel_size_float(pixels: f32) -> f32 {
1529
1592
  fn project_pixel_size_vec2(pixels: vec2<f32>) -> vec2<f32> {
1530
1593
  return pixels / project.scale;
1531
1594
  }
1532
- `;var yR=Object.keys(k).map(t=>`const int COORDINATE_SYSTEM_${t} = ${k[t]};`).join(""),bR=Object.keys(se).map(t=>`const int PROJECTION_MODE_${t} = ${se[t]};`).join(""),TR=Object.keys(lr).map(t=>`const int UNIT_${t.toUpperCase()} = ${lr[t]};`).join(""),M_=`${yR}
1533
- ${bR}
1534
- ${TR}
1595
+ `;var KR=Object.keys(k).map(t=>`const int COORDINATE_SYSTEM_${t} = ${k[t]};`).join(""),ZR=Object.keys(oe).map(t=>`const int PROJECTION_MODE_${t} = ${oe[t]};`).join(""),qR=Object.keys(pr).map(t=>`const int UNIT_${t.toUpperCase()} = ${pr[t]};`).join(""),H_=`${KR}
1596
+ ${ZR}
1597
+ ${qR}
1535
1598
  layout(std140) uniform projectUniforms {
1536
1599
  bool wrapLongitude;
1537
1600
  int coordinateSystem;
@@ -1723,7 +1786,7 @@ return pixels / project.scale;
1723
1786
  vec2 project_pixel_size(vec2 pixels) {
1724
1787
  return pixels / project.scale;
1725
1788
  }
1726
- `;var xR={};function AR(t=xR){return"viewport"in t?_a(t):{}}var fr={name:"project",dependencies:[Wf,oa],source:v_,vs:M_,getUniforms:AR,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 SR=`// Define a structure to hold both the clip-space position and the common position.
1789
+ `;var GR={};function QR(t=GR){return"viewport"in t?Ea(t):{}}var gr={name:"project",dependencies:[eh,ua],source:$_,vs:H_,getUniforms:QR,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 JR=`// Define a structure to hold both the clip-space position and the common position.
1727
1790
  struct ProjectResult {
1728
1791
  clipPosition: vec4<f32>,
1729
1792
  commonPosition: vec4<f32>,
@@ -1766,7 +1829,7 @@ fn project_position_to_clipspace(
1766
1829
  ) -> vec4<f32> {
1767
1830
  return project_position_to_clipspace_and_commonspace(position, position64Low, offset).clipPosition;
1768
1831
  }
1769
- `,ER=`vec4 project_position_to_clipspace(
1832
+ `,e3=`vec4 project_position_to_clipspace(
1770
1833
  vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition
1771
1834
  ) {
1772
1835
  vec3 projectedPosition = project_position(position, position64Low);
@@ -1786,7 +1849,7 @@ vec4 project_position_to_clipspace(
1786
1849
  vec4 commonPosition;
1787
1850
  return project_position_to_clipspace(position, position64Low, offset, commonPosition);
1788
1851
  }
1789
- `,iu={name:"project32",dependencies:[fr],source:SR,vs:ER};function su(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function hr(t,e){let r=Ae.transformMat4([],e,t);return Ae.scale(r,r,1/r[3]),r}function C_(t,e,r){return r*e+(1-r)*t}function Ks(t,e,r){return t<e?e:t>r?r:t}function wR(t){return Math.log(t)*Math.LOG2E}var Zs=Math.log2||wR;function $e(t,e){if(!t)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var Xe=Math.PI,I_=Xe/4,ke=Xe/180,ou=180/Xe,Mi=512,ya=4003e4,_e=85.051129,O_=1.5;function qs(t){return Math.pow(2,t)}function ba(t){return Zs(t)}function Se(t){let[e,r]=t;$e(Number.isFinite(e)),$e(Number.isFinite(r)&&r>=-90&&r<=90,"invalid latitude");let i=e*ke,s=r*ke,o=Mi*(i+Xe)/(2*Xe),n=Mi*(Xe+Math.log(Math.tan(I_+s*.5)))/(2*Xe);return[o,n]}function ye(t){let[e,r]=t,i=e/Mi*(2*Xe)-Xe,s=2*(Math.atan(Math.exp(r/Mi*(2*Xe)-Xe))-I_);return[i*ou,s*ou]}function Gs(t){let{latitude:e}=t;$e(Number.isFinite(e));let r=Math.cos(e*ke);return ba(ya*r)-9}function Qs(t){let e=Math.cos(t*ke);return Mi/ya/e}function Ci(t){let{latitude:e,longitude:r,highPrecision:i=!1}=t;$e(Number.isFinite(e)&&Number.isFinite(r));let s=Mi,o=Math.cos(e*ke),n=s/360,a=n/o,c=s/ya/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=ke*Math.tan(e*ke)/o,h=n*f/2,u=s/ya*f,d=u/a*c;l.unitsPerDegree2=[0,h,u],l.unitsPerMeter2=[d,0,d]}return l}function Js(t,e){let[r,i,s]=t,[o,n,a]=e,{unitsPerMeter:c,unitsPerMeter2:l}=Ci({longitude:r,latitude:i,highPrecision:!0}),f=Se(t);f[0]+=o*(c[0]+l[0]*n),f[1]+=n*(c[1]+l[1]*n);let h=ye(f),u=(s||0)+(a||0);return Number.isFinite(s)||Number.isFinite(a)?[h[0],h[1],u]:h}function Ta(t){let{height:e,pitch:r,bearing:i,altitude:s,scale:o,center:n}=t,a=su();re.translate(a,a,[0,0,-s]),re.rotateX(a,a,-r*ke),re.rotateZ(a,a,i*ke);let c=o/e;return re.scale(a,a,[c,c,c]),n&&re.translate(a,a,ge.negate([],n)),a}function nu(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=Dt(O_)}=t;i!==void 0&&(f=Dt(i));let h=f*ke,u=s*ke,d=Bt(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,b=p*10,y=Math.min(_*l,b);return{fov:h,aspect:e/r,focalDistance:d,near:c,far:y}}function Dt(t){return 2*Math.atan(.5/t)*ou}function Bt(t){return .5/Math.tan(.5*t*ke)}function Ii(t,e){let[r,i,s=0]=t;return $e(Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(s)),hr(e,[r,i,s,1])}function Ve(t,e,r=0){let[i,s,o]=t;if($e(Number.isFinite(i)&&Number.isFinite(s),"invalid pixel coordinate"),Number.isFinite(o))return hr(e,[i,s,o,1]);let n=hr(e,[i,s,0,1]),a=hr(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 xa(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=RR(t.padding),u=Se([a,Ks(f,-_e,_e)]),d=Se([l,Ks(c,-_e,_e)]),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];$e(g[0]>0&&g[1]>0);let m=g[0]/p[0],_=g[1]/p[1],b=(h.right-h.left)/2/m,y=(h.top-h.bottom)/2/_,T=[(d[0]+u[0])/2+b,(d[1]+u[1])/2+y],S=ye(T),A=Math.min(o,Zs(Math.abs(Math.min(m,_))));return $e(Number.isFinite(A)),{longitude:S[0],latitude:S[1],zoom:A}}function RR(t=0){return typeof t=="number"?{top:t,bottom:t,left:t,right:t}:($e(Number.isFinite(t.top)&&Number.isFinite(t.bottom)&&Number.isFinite(t.left)&&Number.isFinite(t.right)),t)}var N_=Math.PI/180;function Aa(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*N_:Math.atan(.5/t.altitude),h=(90-t.pitch)*N_;return f>h-.01?(c=D_(t,0,e),l=D_(t,r,e)):(c=s([0,0],o),l=s([r,0],o)),[n,a,l,c]}function D_(t,e,r){let{pixelUnprojectionMatrix:i}=t,s=hr(i,[e,0,1,1]),o=hr(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=ye(c);return l.push(r),l}var B_=.01,vR=["longitude","latitude","zoom"],F_={curve:1.414,speed:1.2};function au(t,e,r,i){let{startZoom:s,startCenterXY:o,uDelta:n,w0:a,u1:c,S:l,rho:f,rho2:h,r0:u}=L_(t,e,i);if(c<B_){let T={};for(let S of vR){let A=t[S],w=e[S];T[S]=C_(A,w,r)}return T}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+ba(m),b=ee.scale([],n,g);ee.add(b,b,o);let y=ye(b);return{longitude:y[0],latitude:y[1],zoom:_}}function cu(t,e,r){let i={...F_,...r},{screenSpeed:s,speed:o,maxDuration:n}=i,{S:a,rho:c}=L_(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 L_(t,e,r){r=Object.assign({},F_,r);let i=r.curve,s=t.zoom,o=[t.longitude,t.latitude],n=qs(s),a=e.zoom,c=[e.longitude,e.latitude],l=qs(a-s),f=Se(o),h=Se(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,B_),_=i*i,b=(p*p-d*d+_*_*m*m)/(2*d*_*m),y=(p*p-d*d-_*_*m*m)/(2*p*_*m),T=Math.log(Math.sqrt(b*b+1)-b),S=Math.log(Math.sqrt(y*y+1)-y),A=(S-T)/i;return{startZoom:s,startCenterXY:f,uDelta:u,w0:d,u1:g,S:A,rho:i,rho2:_,r0:T,r1:S}}var U_=`
1852
+ `,pu={name:"project32",dependencies:[gr],source:JR,vs:e3};function gu(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function mr(t,e){let r=xe.transformMat4([],e,t);return xe.scale(r,r,1/r[3]),r}function X_(t,e,r){return r*e+(1-r)*t}function Jo(t,e,r){return t<e?e:t>r?r:t}function t3(t){return Math.log(t)*Math.LOG2E}var en=Math.log2||t3;function Xe(t,e){if(!t)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var Ye=Math.PI,Y_=Ye/4,Ve=Ye/180,mu=180/Ye,Di=512,wa=4003e4,me=85.051129,K_=1.5;function tn(t){return Math.pow(2,t)}function Ra(t){return en(t)}function Ae(t){let[e,r]=t;Xe(Number.isFinite(e)),Xe(Number.isFinite(r)&&r>=-90&&r<=90,"invalid latitude");let i=e*Ve,o=r*Ve,n=Di*(i+Ye)/(2*Ye),s=Di*(Ye+Math.log(Math.tan(Y_+o*.5)))/(2*Ye);return[n,s]}function _e(t){let[e,r]=t,i=e/Di*(2*Ye)-Ye,o=2*(Math.atan(Math.exp(r/Di*(2*Ye)-Ye))-Y_);return[i*mu,o*mu]}function rn(t){let{latitude:e}=t;Xe(Number.isFinite(e));let r=Math.cos(e*Ve);return Ra(wa*r)-9}function on(t){let e=Math.cos(t*Ve);return Di/wa/e}function Bi(t){let{latitude:e,longitude:r,highPrecision:i=!1}=t;Xe(Number.isFinite(e)&&Number.isFinite(r));let o=Di,n=Math.cos(e*Ve),s=o/360,a=s/n,c=o/wa/n,l={unitsPerMeter:[c,c,c],metersPerUnit:[1/c,1/c,1/c],unitsPerDegree:[s,a,c],degreesPerUnit:[1/s,1/a,1/c]};if(i){let f=Ve*Math.tan(e*Ve)/n,h=s*f/2,u=o/wa*f,d=u/a*c;l.unitsPerDegree2=[0,h,u],l.unitsPerMeter2=[d,0,d]}return l}function nn(t,e){let[r,i,o]=t,[n,s,a]=e,{unitsPerMeter:c,unitsPerMeter2:l}=Bi({longitude:r,latitude:i,highPrecision:!0}),f=Ae(t);f[0]+=n*(c[0]+l[0]*s),f[1]+=s*(c[1]+l[1]*s);let h=_e(f),u=(o||0)+(a||0);return Number.isFinite(o)||Number.isFinite(a)?[h[0],h[1],u]:h}function Pa(t){let{height:e,pitch:r,bearing:i,altitude:o,scale:n,center:s}=t,a=gu();re.translate(a,a,[0,0,-o]),re.rotateX(a,a,-r*Ve),re.rotateZ(a,a,i*Ve);let c=n/e;return re.scale(a,a,[c,c,c]),s&&re.translate(a,a,pe.negate([],s)),a}function _u(t){let{width:e,height:r,altitude:i,pitch:o=0,offset:n,center:s,scale:a,nearZMultiplier:c=1,farZMultiplier:l=1}=t,{fovy:f=Ft(K_)}=t;i!==void 0&&(f=Ft(i));let h=f*Ve,u=o*Ve,d=Ut(f),p=d;s&&(p+=s[2]*a/Math.cos(u)/r);let g=h*(.5+(n?n[1]:0)/r),m=Math.sin(g)*p/Math.sin(Jo(Math.PI/2-u-g,.01,Math.PI-.01)),_=Math.sin(u)*m+p,b=p*10,y=Math.min(_*l,b);return{fov:h,aspect:e/r,focalDistance:d,near:c,far:y}}function Ft(t){return 2*Math.atan(.5/t)*mu}function Ut(t){return .5/Math.tan(.5*t*Ve)}function Li(t,e){let[r,i,o=0]=t;return Xe(Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(o)),mr(e,[r,i,o,1])}function ze(t,e,r=0){let[i,o,n]=t;if(Xe(Number.isFinite(i)&&Number.isFinite(o),"invalid pixel coordinate"),Number.isFinite(n))return mr(e,[i,o,n,1]);let s=mr(e,[i,o,0,1]),a=mr(e,[i,o,1,1]),c=s[2],l=a[2],f=c===l?0:((r||0)-c)/(l-c);return ee.lerp([],s,a,f)}function va(t){let{width:e,height:r,bounds:i,minExtent:o=0,maxZoom:n=24,offset:s=[0,0]}=t,[[a,c],[l,f]]=i,h=r3(t.padding),u=Ae([a,Jo(f,-me,me)]),d=Ae([l,Jo(c,-me,me)]),p=[Math.max(Math.abs(d[0]-u[0]),o),Math.max(Math.abs(d[1]-u[1]),o)],g=[e-h.left-h.right-Math.abs(s[0])*2,r-h.top-h.bottom-Math.abs(s[1])*2];Xe(g[0]>0&&g[1]>0);let m=g[0]/p[0],_=g[1]/p[1],b=(h.right-h.left)/2/m,y=(h.top-h.bottom)/2/_,T=[(d[0]+u[0])/2+b,(d[1]+u[1])/2+y],S=_e(T),A=Math.min(n,en(Math.abs(Math.min(m,_))));return Xe(Number.isFinite(A)),{longitude:S[0],latitude:S[1],zoom:A}}function r3(t=0){return typeof t=="number"?{top:t,bottom:t,left:t,right:t}:(Xe(Number.isFinite(t.top)&&Number.isFinite(t.bottom)&&Number.isFinite(t.left)&&Number.isFinite(t.right)),t)}var Z_=Math.PI/180;function Ma(t,e=0){let{width:r,height:i,unproject:o}=t,n={targetZ:e},s=o([0,i],n),a=o([r,i],n),c,l,f=t.fovy?.5*t.fovy*Z_:Math.atan(.5/t.altitude),h=(90-t.pitch)*Z_;return f>h-.01?(c=q_(t,0,e),l=q_(t,r,e)):(c=o([0,0],n),l=o([r,0],n)),[s,a,l,c]}function q_(t,e,r){let{pixelUnprojectionMatrix:i}=t,o=mr(i,[e,0,1,1]),n=mr(i,[e,t.height,1,1]),a=(r*t.distanceScales.unitsPerMeter[2]-o[2])/(n[2]-o[2]),c=ee.lerp([],o,n,a),l=_e(c);return l.push(r),l}var G_=.01,o3=["longitude","latitude","zoom"],Q_={curve:1.414,speed:1.2};function yu(t,e,r,i){let{startZoom:o,startCenterXY:n,uDelta:s,w0:a,u1:c,S:l,rho:f,rho2:h,r0:u}=J_(t,e,i);if(c<G_){let T={};for(let S of o3){let A=t[S],w=e[S];T[S]=X_(A,w,r)}return T}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,_=o+Ra(m),b=ee.scale([],s,g);ee.add(b,b,n);let y=_e(b);return{longitude:y[0],latitude:y[1],zoom:_}}function bu(t,e,r){let i={...Q_,...r},{screenSpeed:o,speed:n,maxDuration:s}=i,{S:a,rho:c}=J_(t,e,i),l=1e3*a,f;return Number.isFinite(o)?f=l/(o/c):f=l/n,Number.isFinite(s)&&f>s?0:f}function J_(t,e,r){r=Object.assign({},Q_,r);let i=r.curve,o=t.zoom,n=[t.longitude,t.latitude],s=tn(o),a=e.zoom,c=[e.longitude,e.latitude],l=tn(a-o),f=Ae(n),h=Ae(c),u=ee.sub([],h,f),d=Math.max(t.width,t.height),p=d/l,g=ee.length(u)*s,m=Math.max(g,G_),_=i*i,b=(p*p-d*d+_*_*m*m)/(2*d*_*m),y=(p*p-d*d-_*_*m*m)/(2*p*_*m),T=Math.log(Math.sqrt(b*b+1)-b),S=Math.log(Math.sqrt(y*y+1)-y),A=(S-T)/i;return{startZoom:o,startCenterXY:f,uDelta:u,w0:d,u1:g,S:A,rho:i,rho2:_,r0:T,r1:S}}var ey=`
1790
1853
  layout(std140) uniform shadowUniforms {
1791
1854
  bool drawShadowMap;
1792
1855
  bool useShadowMap;
@@ -1798,7 +1861,7 @@ layout(std140) uniform shadowUniforms {
1798
1861
  vec4 projectCenter0;
1799
1862
  vec4 projectCenter1;
1800
1863
  } shadow;
1801
- `,CR=`
1864
+ `,s3=`
1802
1865
  const int max_lights = 2;
1803
1866
 
1804
1867
  out vec3 shadow_vPosition[max_lights];
@@ -1824,10 +1887,10 @@ vec4 shadow_setVertexPosition(vec4 position_commonspace) {
1824
1887
  }
1825
1888
  return gl_Position;
1826
1889
  }
1827
- `,IR=`
1828
- ${U_}
1829
- ${CR}
1830
- `,OR=`
1890
+ `,a3=`
1891
+ ${ey}
1892
+ ${s3}
1893
+ `,c3=`
1831
1894
  const int max_lights = 2;
1832
1895
  uniform sampler2D shadow_uShadowMap0;
1833
1896
  uniform sampler2D shadow_uShadowMap1;
@@ -1867,14 +1930,14 @@ vec4 shadow_filterShadowColor(vec4 color) {
1867
1930
  }
1868
1931
  return color;
1869
1932
  }
1870
- `,NR=`
1871
- ${U_}
1872
- ${OR}
1873
- `,DR=Ue(kR),BR=Ue(VR),FR=[0,0,0,1],LR=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function UR(t,e){let[r,i,s]=t,o=Ve([r,i,s],e);return Number.isFinite(s)?o:[o[0],o[1],0]}function kR({viewport:t,center:e}){return new z(t.viewProjectionMatrix).invert().transform(e)}function VR({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=>UR(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 zR(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=fr.getUniforms(r),s=DR({viewport:r.viewport,center:i.center}),o=[],n=BR({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===se.WEB_MERCATOR?(n[c]=f,o[c]=s):(n[c]=l.clone().multiplyRight(LR),o[c]=f.transform(s))}let a={drawShadowMap:Boolean(t.drawToShadowMap),useShadowMap:t.shadowMaps?t.shadowMaps.length>0:!1,color:t.shadowColor||FR,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 Oi={name:"shadow",dependencies:[fr],vs:IR,fs:NR,inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1933
+ `,l3=`
1934
+ ${ey}
1935
+ ${c3}
1936
+ `,f3=ke(g3),h3=ke(m3),u3=[0,0,0,1],d3=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function p3(t,e){let[r,i,o]=t,n=ze([r,i,o],e);return Number.isFinite(o)?n:[n[0],n[1],0]}function g3({viewport:t,center:e}){return new z(t.viewProjectionMatrix).invert().transform(e)}function m3({viewport:t,shadowMatrices:e}){let r=[],i=t.pixelUnprojectionMatrix,o=t.isGeospatial?void 0:1,n=[[0,0,o],[t.width,0,o],[0,t.height,o],[t.width,t.height,o],[0,0,-1],[t.width,0,-1],[0,t.height,-1],[t.width,t.height,-1]].map(s=>p3(s,i));for(let s of e){let a=s.clone().translate(new $(t.center).negate()),c=n.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(s))}return r}function _3(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=gr.getUniforms(r),o=f3({viewport:r.viewport,center:i.center}),n=[],s=h3({shadowMatrices:t.shadowMatrices,viewport:r.viewport}).slice();for(let c=0;c<t.shadowMatrices.length;c++){let l=s[c],f=l.clone().translate(new $(r.viewport.center).negate());i.coordinateSystem===k.LNGLAT&&i.projectionMode===oe.WEB_MERCATOR?(s[c]=f,n[c]=o):(s[c]=l.clone().multiplyRight(d3),n[c]=f.transform(o))}let a={drawShadowMap:Boolean(t.drawToShadowMap),useShadowMap:t.shadowMaps?t.shadowMaps.length>0:!1,color:t.shadowColor||u3,lightId:t.shadowLightId||0,lightCount:t.shadowMatrices.length,shadow_uShadowMap0:t.dummyShadowMap,shadow_uShadowMap1:t.dummyShadowMap};for(let c=0;c<s.length;c++)a[`viewProjectionMatrix${c}`]=s[c],a[`projectCenter${c}`]=n[c];for(let c=0;c<2;c++)a[`shadow_uShadowMap${c}`]=t.shadowMaps&&t.shadowMaps[c]||t.dummyShadowMap;return a}var Fi={name:"shadow",dependencies:[gr],vs:a3,fs:l3,inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1874
1937
  position = shadow_setVertexPosition(geometry.position);
1875
1938
  `,"fs:DECKGL_FILTER_COLOR":`
1876
1939
  color = shadow_filterShadowColor(color);
1877
- `},getUniforms:zR,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 WR=`struct pickingUniforms {
1940
+ `},getUniforms:_3,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 y3=`struct pickingUniforms {
1878
1941
  isActive: f32,
1879
1942
  isAttribute: f32,
1880
1943
  isHighlightActive: f32,
@@ -1900,7 +1963,7 @@ fn picking_isColorZero(color: vec3<f32>) -> bool {
1900
1963
  fn picking_isColorValid(color: vec3<f32>) -> bool {
1901
1964
  return dot(color, vec3<f32>(1.0)) > 0.00001;
1902
1965
  }
1903
- `,lu={...Dn,source:WR,defaultUniforms:{...Dn.defaultUniforms,useFloatColors:!1},inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1966
+ `,Tu={...Vs,source:y3,defaultUniforms:{...Vs.defaultUniforms,useFloatColors:!1},inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1904
1967
  // for picking depth values
1905
1968
  picking_setPickingAttribute(position.z / position.w);
1906
1969
  `,"vs:DECKGL_FILTER_COLOR":`
@@ -1911,10 +1974,10 @@ fn picking_isColorValid(color: vec3<f32>) -> bool {
1911
1974
 
1912
1975
  // use picking color if rendering to picking FBO.
1913
1976
  color = picking_filterPickingColor(color);
1914
- `}}};var jR=[oa],HR=["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)"],$R=[];function Sa(t){let e=Jt.getDefaultShaderAssembler();for(let i of jR)e.addDefaultModule(i);e._hookFunctions.length=0;let r=t==="glsl"?HR:$R;for(let i of r)e.addShaderHook(i);return e}var XR=[255,255,255],YR=1,KR=0,Ni=class{constructor(e={}){this.type="ambient";let{color:r=XR}=e,{intensity:i=YR}=e;this.id=e.id||`ambient-${KR++}`,this.color=r,this.intensity=i}};var ZR=[255,255,255],qR=1,GR=[0,0,-1],QR=0,Ft=class{constructor(e={}){this.type="directional";let{color:r=ZR}=e,{intensity:i=qR}=e,{direction:s=GR}=e,{_shadow:o=!1}=e;this.id=e.id||`directional-${QR++}`,this.color=r,this.intensity=i,this.type="directional",this.direction=new H(s).normalize().toArray(),this.shadow=o}getProjectedLight(e){return this}};var Lr=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 Ye=class extends Lr{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=V_(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=JR(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(b){u.raiseError(b,`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)k_(a,c.getShaderModuleProps?.(e,a));return k_(a,this.getShaderModuleProps(e,r,a),s)}};function V_(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]||V_(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 JR(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 k_(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 eo=class extends Ye{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 e3={color:[255,255,255],intensity:1},z_=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],t3=[0,0,0,200/255],ur=class{constructor(e={}){this.id="lighting-effect",this.shadowColor=t3,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(Oi),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(Oi))}_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 eo(e);this.shadowPasses[r]=i}}_applyDefaultLights(){let{ambientLight:e,pointLights:r,directionalLights:i}=this;!e&&r.length===0&&i.length===0&&(this.ambientLight=new Ni(e3),this.directionalLights.push(new Ft(z_[0]),new Ft(z_[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 fu=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()}},Ke=new fu;function Bi(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function mt(t,e){let r=t%e;return r<0?e+r:r}function j_(t){return[t[12],t[13],t[14]]}function H_(t){let e=t[10],r=t[14];return{near:r/(e-1),far:r/(e+1)}}function $_(t){return{left:Di(t[3]+t[0],t[7]+t[4],t[11]+t[8],t[15]+t[12]),right:Di(t[3]-t[0],t[7]-t[4],t[11]-t[8],t[15]-t[12]),bottom:Di(t[3]+t[1],t[7]+t[5],t[11]+t[9],t[15]+t[13]),top:Di(t[3]-t[1],t[7]-t[5],t[11]-t[9],t[15]-t[13]),near:Di(t[3]+t[2],t[7]+t[6],t[11]+t[10],t[15]+t[14]),far:Di(t[3]-t[2],t[7]-t[6],t[11]-t[10],t[15]-t[14])}}var W_=new H;function Di(t,e,r,i){W_.set(t,e,r);let s=W_.len();return{distance:i/s,normal:new H(-t/s,-e/s,-r/s)}}function hu(t){return t-Math.fround(t)}var to;function Ea(t,e){let{size:r=1,startIndex:i=0}=e,s=e.endIndex!==void 0?e.endIndex:t.length,o=(s-i)/r;to=Ke.allocate(to,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++];to[a+c]=l,to[a+c+r]=hu(l)}a+=r*2}return to.subarray(0,o*r*2)}function X_(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 r3=Math.PI/180,i3=Bi(),Y_=[0,0,0],s3={unitsPerMeter:[1,1,1],metersPerUnit:[1,1,1]};function o3({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=U((f+t-h)/2,0,t)-t/2,g=U((u+e-d)/2,0,e)-e/2;l[8]-=p*2/t,l[9]+=g*2/e}return l}var Fi=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||s3,this.focalDistance=e.focalDistance||1,this.position=e.position||Y_,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?se.WEB_MERCATOR:se.WEB_MERCATOR_AUTO_OFFSET:se.IDENTITY}equals(e){return e instanceof Fi?this===e?!0:e.width===this.width&&e.height===this.height&&e.scale===this.scale&&Pe(e.projectionMatrix,this.projectionMatrix)&&Pe(e.viewMatrix,this.viewMatrix):!1}project(e,{topLeft:r=!0}={}){let i=this.projectPosition(e),s=Ii(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=Ve([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=Se(e);return r[1]=U(r[1],-318,830),r}return e}unprojectFlat(e){return this.isGeospatial?ye(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?Ci({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,$_(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=Gs({latitude:i})+Math.log2(this.focalDistance)),this.distanceScales=e.distanceScales||Ci({latitude:i,longitude:r}));let s=Math.pow(2,this.zoom);this.scale=s;let{position:o,modelMatrix:n}=e,a=Y_;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=i3,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||o3({width:this.width,height:this.height,orthographic:s,fovyRadians:o||n*r3,focalDistance:f,padding:l,near:a,far:c});let h=Bi();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=j_(this.viewMatrixInverse);let u=Bi(),d=Bi();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(Bi(),this.pixelProjectionMatrix),this.pixelUnprojectionMatrix||F.warn("Pixel project matrix not invertible")()}};Fi.displayName="Viewport";var Ee=Fi;var Ur=class extends Ee{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:b,height:y,altitude:T=1.5}=e,S=Math.pow(2,s);b=b||1,y=y||1;let A,w=null;if(u)T=u[5]/2,A=Dt(T);else{e.fovy?(A=e.fovy,T=Bt(A)):A=Dt(T);let R;if(m){let{top:M=0,bottom:O=0}=m;R=[0,U((M+y-O)/2,0,y)-y/2]}w=nu({width:b,height:y,scale:S,center:g&&[0,0,g[2]*Qs(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=Ta({height:y,pitch:o,bearing:n,scale:S,altitude:T});p&&(v=new z().translate([512*p,0,0]).multiplyLeft(v)),super({...e,width:b,height:y,viewMatrix:v,longitude:i,latitude:r,zoom:s,...w,fovy:A,focalDistance:T}),this.latitude=r,this.longitude=i,this.zoom=s,this.pitch=o,this.bearing=n,this.altitude=T,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 Ur({...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)*Qs(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)/Qs(i);return[r,i,s]}addMetersToLngLat(e,r){return Js(e,r)}panByPosition(e,r,i){let s=Ve(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=Aa(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}=xa({width:i,height:s,bounds:e,...r});return new Ur({width:i,height:s,longitude:o,latitude:n,zoom:a})}};Ur.displayName="WebMercatorViewport";var dr=Ur;var K_=[0,0,0];function uu(t,e,r=!1){let i=e.projectPosition(t);if(r&&e instanceof dr){let[s,o,n=0]=t,a=e.getDistanceScales([s,o]);i[2]=n*a.unitsPerMeter[2]}return i}function n3(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 du(t,{viewport:e,modelMatrix:r,coordinateSystem:i,coordinateOrigin:s,offsetMode:o}){let[n,a,c=0]=t;switch(r&&([n,a,c]=Ae.transformMat4([],[n,a,c,1],r)),i){case k.LNGLAT:return uu([n,a,c],e,o);case k.LNGLAT_OFFSETS:return uu([n+s[0],a+s[1],c+(s[2]||0)],e,o);case k.METER_OFFSETS:return uu(Js(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 wa(t,e){let{viewport:r,coordinateSystem:i,coordinateOrigin:s,modelMatrix:o,fromCoordinateSystem:n,fromCoordinateOrigin:a}=n3(e),{autoOffset:c=!0}=e,{geospatialOrigin:l=K_,shaderCoordinateOrigin:f=K_,offsetMode:h=!1}=c?ru(r,i,s):{},u=du(t,{viewport:r,modelMatrix:o,coordinateSystem:n,coordinateOrigin:a,offsetMode:h});if(h){let d=r.projectPosition(l||f);ge.sub(u,u,d)}return u}var a3=[255,255,255],c3=1,l3=[1,0,0],f3=[0,0,1],h3=0,Li=class{constructor(e={}){this.type="point";let{color:r=a3}=e,{intensity:i=c3}=e,{position:s=f3}=e;this.id=e.id||`point-${h3++}`,this.color=r,this.intensity=i,this.type="point",this.position=s,this.attenuation=u3(e),this.projectedLight={...this}}getProjectedLight({layer:e}){let{projectedLight:r}=this,i=e.context.viewport,{coordinateSystem:s,coordinateOrigin:o}=e.props,n=wa(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 u3(t){return t.attenuation?t.attenuation:l3}var ro=class extends Li{getProjectedLight({layer:e}){let{projectedLight:r}=this,i=e.context.viewport,{coordinateSystem:s,coordinateOrigin:o,modelMatrix:n}=e.props,{cameraPosition:a}=_a({viewport:i,modelMatrix:n,coordinateSystem:s,coordinateOrigin:o});return r.color=this.color,r.intensity=this.intensity,r.position=a,r}};var kr=Math.PI/180,d3=1e3*60*60*24,p3=2440588,g3=2451545,Ra=kr*23.4397,m3=357.5291,_3=.98560028,y3=280.147,b3=360.9856235;function Z_(t,e,r){let i=kr*-r,s=kr*e,o=x3(t),n=M3(o),a=R3(o,i)-n.rightAscension;return{azimuth:E3(a,s,n.declination),altitude:w3(a,s,n.declination)}}function Pa(t,e,r){let{azimuth:i,altitude:s}=Z_(t,e,r);return[Math.sin(i)*Math.cos(s),Math.cos(i)*Math.cos(s),-Math.sin(s)]}function T3(t){return(typeof t=="number"?t:t.getTime())/d3-.5+p3}function x3(t){return T3(t)-g3}function A3(t,e){let r=t;return Math.atan2(Math.sin(r)*Math.cos(Ra)-Math.tan(e)*Math.sin(Ra),Math.cos(r))}function S3(t,e){let r=t;return Math.asin(Math.sin(e)*Math.cos(Ra)+Math.cos(e)*Math.sin(Ra)*Math.sin(r))}function E3(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 w3(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 R3(t,e){return kr*(y3+b3*t)-e}function P3(t){return kr*(m3+_3*t)}function v3(t){let e=t,r=kr*(1.9148*Math.sin(e)+.02*Math.sin(2*e)+3e-4*Math.sin(3*e)),i=kr*102.9372;return e+r+i+Math.PI}function M3(t){let e=P3(t),r=v3(e);return{declination:S3(r,0),rightAscension:A3(r,0)}}var io=class extends Ft{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]=Pa(this.timestamp,0,0);this.direction=[s,-n,o]}else{let{latitude:s,longitude:o}=r;this.direction=Pa(this.timestamp,s,o)}return this}};var C3=`layout(std140) uniform screenUniforms {
1977
+ `}}};var b3=[ua],T3=["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)"],x3=[];function Ca(t){let e=rr.getDefaultShaderAssembler();for(let i of b3)e.addDefaultModule(i);e._hookFunctions.length=0;let r=t==="glsl"?T3:x3;for(let i of r)e.addShaderHook(i);return e}var A3=[255,255,255],S3=1,E3=0,Ui=class{constructor(e={}){this.type="ambient";let{color:r=A3}=e,{intensity:i=S3}=e;this.id=e.id||`ambient-${E3++}`,this.color=r,this.intensity=i}};var w3=[255,255,255],R3=1,P3=[0,0,-1],v3=0,kt=class{constructor(e={}){this.type="directional";let{color:r=w3}=e,{intensity:i=R3}=e,{direction:o=P3}=e,{_shadow:n=!1}=e;this.id=e.id||`directional-${v3++}`,this.color=r,this.intensity=i,this.type="directional",this.direction=new $(o).normalize().toArray(),this.shadow=n}getProjectedLight(e){return this}};var Vr=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 M3={depthWriteEnabled:!0,depthCompare:"less-equal",blendColorOperation:"add",blendColorSrcFactor:"src-alpha",blendColorDstFactor:"one",blendAlphaOperation:"add",blendAlphaSrcFactor:"one-minus-dst-alpha",blendAlphaDstFactor:"one"},Ke=class extends Vr{constructor(){super(...arguments),this._lastRenderIndex=-1}render(e){this._render(e)}_render(e){let r=this.device.canvasContext,i=e.target??r.getCurrentFramebuffer(),[o,n]=r.getDrawingBufferSize(),s=e.clearCanvas??!0,a=e.clearColor??(s?[0,0,0,0]:!1),c=s?1:!1,l=s?0:!1,f=e.colorMask??15,h={viewport:[0,0,o,n]};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:o,viewports:n,views:s,onViewportActive:a,clearStack:c=!0}=r;r.pass=r.pass||"unknown",c&&(this._lastRenderIndex=-1);let l=[];for(let f of n){let h=s&&s[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:o,viewport:p,view:h,pass:r.pass,layers:r.layers},u);l.push(g)}}return l}_getDrawLayerParams(e,{layers:r,pass:i,isPicking:o=!1,layerFilter:n,cullRect:s,effects:a,shaderModuleProps:c},l=!1){let f=[],h=ry(this._lastRenderIndex+1),u={layer:r[0],viewport:e,isPicking:o,renderPass:i,cullRect:s},d={};for(let p=0;p<r.length;p++){let g=r[p],m=this._shouldDrawLayer(g,u,n,d),_={shouldDrawLayer:m};if(m&&!l){_.shouldDrawLayer=!0,_.layerRenderIndex=h(g,m),_.shaderModuleProps=this._getShaderModuleProps(g,a,i,c);let b=g.context.device.type==="webgpu"?M3:null;_.layerParameters={...b,...g.context.deck?.props.parameters,...this.getLayerParameters(g,p,e)}}f[p]=_}return f}_drawLayersInViewport(e,{layers:r,shaderModuleProps:i,pass:o,target:n,viewport:s,view:a},c){let l=C3(this.device,{shaderModuleProps:i,target:n,viewport:s});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:n,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=s),u.context.renderPass=e;try{u._drawLayer({renderPass:e,shaderModuleProps:m,uniforms:{layerIndex:g},parameters:_})}catch(b){u.raiseError(b,`drawing ${u} to ${o}`)}}}return f}shouldDrawLayer(e){return!0}getShaderModuleProps(e,r,i){return null}getLayerParameters(e,r,i){return e.props.parameters}_shouldDrawLayer(e,r,i,o){if(!(e.props.visible&&this.shouldDrawLayer(e)))return!1;r.layer=e;let s=e.parent;for(;s;){if(!s.props.visible||!s.filterSubLayer(r))return!1;r.layer=s,s=s.parent}if(i){let a=r.layer.id;if(a in o||(o[a]=i(r)),!o[a])return!1}return e.activateViewport(r.viewport),!0}_getShaderModuleProps(e,r,i,o){let n=this.device.canvasContext.cssToDeviceRatio(),s=e.internalState?.propsInTransition||e.props,a={layer:s,picking:{isActive:!1},project:{viewport:e.context.viewport,devicePixelRatio:n,modelMatrix:s.modelMatrix,coordinateSystem:s.coordinateSystem,coordinateOrigin:s.coordinateOrigin,autoWrapLongitude:e.wrapLongitude}};if(r)for(let c of r)ty(a,c.getShaderModuleProps?.(e,a));return ty(a,this.getShaderModuleProps(e,r,a),o)}};function ry(t=0,e={}){let r={},i=(o,n)=>{let s=o.props._offset,a=o.id,c=o.parent&&o.parent.id,l;if(c&&!(c in e)&&i(o.parent,!1),c in r){let f=r[c]=r[c]||ry(e[c],e);l=f(o,n),r[a]=f}else Number.isFinite(s)?(l=s+(e[c]||0),r[a]=null):l=t;return n&&l>=t&&(t=l+1),e[a]=l,l};return i}function C3(t,{shaderModuleProps:e,target:r,viewport:i}){let o=e?.project?.devicePixelRatio??t.canvasContext.cssToDeviceRatio(),[,n]=t.canvasContext.getDrawingBufferSize(),s=r?r.height:n,a=i;return[a.x*o,s-(a.y+a.height)*o,a.width*o,a.height*o]}function ty(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 sn=class extends Ke{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"}}),o=e.createTexture({format:"depth16unorm",width:1,height:1});this.fbo=e.createFramebuffer({id:"shadowmap",width:1,height:1,colorAttachments:[i],depthStencilAttachment:o})}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(),o=e.viewports[0],n=o.width*i,s=o.height*i,a=[1,1,1,1];(n!==r.width||s!==r.height)&&r.resize({width:n,height:s}),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 I3={color:[255,255,255],intensity:1},iy=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],O3=[0,0,0,200/255],_r=class{constructor(e={}){this.id="lighting-effect",this.shadowColor=O3,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(Fi),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:o,views:n}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let s=0;s<this.shadowPasses.length;s++)this.shadowPasses[s].render({layers:e,layerFilter:r,viewports:i,onViewportActive:o,views:n,shaderModuleProps:{shadow:{shadowLightId:s,dummyShadowMap:this.dummyShadowMap,shadowMatrices:this.shadowMatrices}}})}}getShaderModuleProps(e,r){let i=this.shadow?{project:r.project,shadowMaps:this.shadowPasses.map(s=>s.getShadowMap()),dummyShadowMap:this.dummyShadowMap,shadowColor:this.shadowColor,shadowMatrices:this.shadowMatrices}:{},o={enabled:!0,lights:this._getLights(e)},n=e.props.material;return{shadow:i,lighting:o,phongMaterial:n,gouraudMaterial:n}}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(Fi))}_calculateMatrices(){let e=[];for(let r of this.directionalLights){let i=new z().lookAt({eye:new $(r.direction).negate()});e.push(i)}return e}_createShadowPasses(e){for(let r=0;r<this.directionalLights.length;r++){let i=new sn(e);this.shadowPasses[r]=i}}_applyDefaultLights(){let{ambientLight:e,pointLights:r,directionalLights:i}=this;!e&&r.length===0&&i.length===0&&(this.ambientLight=new Ui(I3),this.directionalLights.push(new kt(iy[0]),new kt(iy[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 xu=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:o,padding:n=0,copy:s=!1,initialize:a=!1,maxCount:c}){let l=o||e&&e.constructor||Float32Array,f=r*i+n;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+n);let u=this._allocate(l,f,a,h);return e&&s?u.set(e):a||u.fill(0,0,4),this._release(e),u}release(e){this._release(e)}_allocate(e,r,i,o){let n=Math.max(Math.ceil(r*this.opts.overAlloc),1);n>o&&(n=o);let s=this._pool,a=e.BYTES_PER_ELEMENT*n,c=s.findIndex(l=>l.byteLength>=a);if(c>=0){let l=new e(s.splice(c,1)[0],0,n);return i&&l.fill(0),l}return new e(n)}_release(e){if(!ArrayBuffer.isView(e))return;let r=this._pool,{buffer:i}=e,{byteLength:o}=i,n=r.findIndex(s=>s.byteLength>=o);n<0?r.push(i):(n>0||r.length<this.opts.poolSize)&&r.splice(n,0,i),r.length>this.opts.poolSize&&r.shift()}},Ze=new xu;function Vi(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function _t(t,e){let r=t%e;return r<0?e+r:r}function ny(t){return[t[12],t[13],t[14]]}function sy(t){let e=t[10],r=t[14];return{near:r/(e-1),far:r/(e+1)}}function ay(t){return{left:ki(t[3]+t[0],t[7]+t[4],t[11]+t[8],t[15]+t[12]),right:ki(t[3]-t[0],t[7]-t[4],t[11]-t[8],t[15]-t[12]),bottom:ki(t[3]+t[1],t[7]+t[5],t[11]+t[9],t[15]+t[13]),top:ki(t[3]-t[1],t[7]-t[5],t[11]-t[9],t[15]-t[13]),near:ki(t[3]+t[2],t[7]+t[6],t[11]+t[10],t[15]+t[14]),far:ki(t[3]-t[2],t[7]-t[6],t[11]-t[10],t[15]-t[14])}}var oy=new $;function ki(t,e,r,i){oy.set(t,e,r);let o=oy.len();return{distance:i/o,normal:new $(-t/o,-e/o,-r/o)}}function Au(t){return t-Math.fround(t)}var an;function Ia(t,e){let{size:r=1,startIndex:i=0}=e,o=e.endIndex!==void 0?e.endIndex:t.length,n=(o-i)/r;an=Ze.allocate(an,n,{type:Float32Array,size:r*2});let s=i,a=0;for(;s<o;){for(let c=0;c<r;c++){let l=t[s++];an[a+c]=l,an[a+c+r]=Au(l)}a+=r*2}return an.subarray(0,n*r*2)}function cy(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 N3=Math.PI/180,D3=Vi(),ly=[0,0,0],B3={unitsPerMeter:[1,1,1],metersPerUnit:[1,1,1]};function L3({width:t,height:e,orthographic:r,fovyRadians:i,focalDistance:o,padding:n,near:s,far:a}){let c=t/e,l=r?new z().orthographic({fovy:i,aspect:c,focalDistance:o,near:s,far:a}):new z().perspective({fovy:i,aspect:c,near:s,far:a});if(n){let{left:f=0,right:h=0,top:u=0,bottom:d=0}=n,p=U((f+t-h)/2,0,t)-t/2,g=U((u+e-d)/2,0,e)-e/2;l[8]-=p*2/t,l[9]+=g*2/e}return l}var zi=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||B3,this.focalDistance=e.focalDistance||1,this.position=e.position||ly,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 zi?this===e?!0:e.width===this.width&&e.height===this.height&&e.scale===this.scale&&Pe(e.projectionMatrix,this.projectionMatrix)&&Pe(e.viewMatrix,this.viewMatrix):!1}project(e,{topLeft:r=!0}={}){let i=this.projectPosition(e),o=Li(i,this.pixelProjectionMatrix),[n,s]=o,a=r?s:this.height-s;return e.length===2?[n,a]:[n,a,o[2]]}unproject(e,{topLeft:r=!0,targetZ:i}={}){let[o,n,s]=e,a=r?n:this.height-n,c=i&&i*this.distanceScales.unitsPerMeter[2],l=ze([o,a,s],this.pixelUnprojectionMatrix,c),[f,h,u]=this.unprojectPosition(l);return Number.isFinite(s)?[f,h,u]:Number.isFinite(i)?[f,h,i]:[f,h]}projectPosition(e){let[r,i]=this.projectFlat(e),o=(e[2]||0)*this.distanceScales.unitsPerMeter[2];return[r,i,o]}unprojectPosition(e){let[r,i]=this.unprojectFlat(e),o=(e[2]||0)*this.distanceScales.metersPerUnit[2];return[r,i,o]}projectFlat(e){if(this.isGeospatial){let r=Ae(e);return r[1]=U(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),o=this.unproject([this.width,0],r),n=this.unproject([0,this.height],r),s=this.unproject([this.width,this.height],r);return[Math.min(i[0],o[0],n[0],s[0]),Math.min(i[1],o[1],n[1],s[1]),Math.max(i[0],o[0],n[0],s[0]),Math.max(i[1],o[1],n[1],s[1])]}getDistanceScales(e){return e&&this.isGeospatial?Bi({longitude:e[0],latitude:e[1],highPrecision:!0}):this.distanceScales}containsPixel({x:e,y:r,width:i=1,height:o=1}){return e<this.x+this.width&&this.x<e+i&&r<this.y+this.height&&this.y<r+o}getFrustumPlanes(){return this._frustumPlanes.near?this._frustumPlanes:(Object.assign(this._frustumPlanes,ay(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=rn({latitude:i})+Math.log2(this.focalDistance)),this.distanceScales=e.distanceScales||Bi({latitude:i,longitude:r}));let o=Math.pow(2,this.zoom);this.scale=o;let{position:n,modelMatrix:s}=e,a=ly;if(n&&(a=s?new z(s).transformAsVector(n,[]):n),this.isGeospatial){let c=this.projectPosition([r,i,0]);this.center=new $(a).scale(this.distanceScales.unitsPerMeter).add(c)}else this.center=this.projectPosition(a)}_initMatrices(e){let{viewMatrix:r=D3,projectionMatrix:i=null,orthographic:o=!1,fovyRadians:n,fovy:s=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 $(this.center).negate()),this.projectionMatrix=i||L3({width:this.width,height:this.height,orthographic:o,fovyRadians:n||s*N3,focalDistance:f,padding:l,near:a,far:c});let h=Vi();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=ny(this.viewMatrixInverse);let u=Vi(),d=Vi();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(Vi(),this.pixelProjectionMatrix),this.pixelUnprojectionMatrix||L.warn("Pixel project matrix not invertible")()}};zi.displayName="Viewport";var Se=zi;var zr=class extends Se{constructor(e={}){let{latitude:r=0,longitude:i=0,zoom:o=0,pitch:n=0,bearing:s=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:b,height:y,altitude:T=1.5}=e,S=Math.pow(2,o);b=b||1,y=y||1;let A,w=null;if(u)T=u[5]/2,A=Ft(T);else{e.fovy?(A=e.fovy,T=Ut(A)):A=Ft(T);let R;if(m){let{top:v=0,bottom:O=0}=m;R=[0,U((v+y-O)/2,0,y)-y/2]}w=_u({width:b,height:y,scale:S,center:g&&[0,0,g[2]*on(r)],offset:R,pitch:n,fovy:A,nearZMultiplier:a,farZMultiplier:c}),Number.isFinite(l)&&(w.near=l),Number.isFinite(f)&&(w.far=f)}let P=Pa({height:y,pitch:n,bearing:s,scale:S,altitude:T});p&&(P=new z().translate([512*p,0,0]).multiplyLeft(P)),super({...e,width:b,height:y,viewMatrix:P,longitude:i,latitude:r,zoom:o,...w,fovy:A,focalDistance:T}),this.latitude=r,this.longitude=i,this.zoom=o,this.pitch=n,this.bearing=s,this.altitude=T,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 o=r;o<=i;o++){let n=o?new zr({...this,worldOffset:o}):this;this._subViewports.push(n)}}return this._subViewports}projectPosition(e){if(this._pseudoMeters)return super.projectPosition(e);let[r,i]=this.projectFlat(e),o=(e[2]||0)*on(e[1]);return[r,i,o]}unprojectPosition(e){if(this._pseudoMeters)return super.unprojectPosition(e);let[r,i]=this.unprojectFlat(e),o=(e[2]||0)/on(i);return[r,i,o]}addMetersToLngLat(e,r){return nn(e,r)}panByPosition(e,r,i){let o=ze(r,this.pixelUnprojectionMatrix),n=this.projectFlat(e),s=ee.add([],n,ee.negate([],o)),a=ee.add([],this.center,s),[c,l]=this.unprojectFlat(a);return{longitude:c,latitude:l}}panByPosition3D(e,r){let i=e[2]||0,o=ee.sub([],e,this.unproject(r,{targetZ:i}));return{longitude:this.longitude+o[0],latitude:this.latitude+o[1]}}getBounds(e={}){let r=Ma(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:o}=this,{longitude:n,latitude:s,zoom:a}=va({width:i,height:o,bounds:e,...r});return new zr({width:i,height:o,longitude:n,latitude:s,zoom:a})}};zr.displayName="WebMercatorViewport";var yr=zr;var fy=[0,0,0];function Su(t,e,r=!1){let i=e.projectPosition(t);if(r&&e instanceof yr){let[o,n,s=0]=t,a=e.getDistanceScales([o,n]);i[2]=s*a.unitsPerMeter[2]}return i}function F3(t){let{viewport:e,modelMatrix:r,coordinateOrigin:i}=t,{coordinateSystem:o,fromCoordinateSystem:n,fromCoordinateOrigin:s}=t;return o===k.DEFAULT&&(o=e.isGeospatial?k.LNGLAT:k.CARTESIAN),n===void 0&&(n=o),s===void 0&&(s=i),{viewport:e,coordinateSystem:o,coordinateOrigin:i,modelMatrix:r,fromCoordinateSystem:n,fromCoordinateOrigin:s}}function Eu(t,{viewport:e,modelMatrix:r,coordinateSystem:i,coordinateOrigin:o,offsetMode:n}){let[s,a,c=0]=t;switch(r&&([s,a,c]=xe.transformMat4([],[s,a,c,1],r)),i){case k.LNGLAT:return Su([s,a,c],e,n);case k.LNGLAT_OFFSETS:return Su([s+o[0],a+o[1],c+(o[2]||0)],e,n);case k.METER_OFFSETS:return Su(nn(o,[s,a,c]),e,n);case k.CARTESIAN:default:return e.isGeospatial?[s+o[0],a+o[1],c+o[2]]:e.projectPosition([s,a,c])}}function Oa(t,e){let{viewport:r,coordinateSystem:i,coordinateOrigin:o,modelMatrix:n,fromCoordinateSystem:s,fromCoordinateOrigin:a}=F3(e),{autoOffset:c=!0}=e,{geospatialOrigin:l=fy,shaderCoordinateOrigin:f=fy,offsetMode:h=!1}=c?du(r,i,o):{},u=Eu(t,{viewport:r,modelMatrix:n,coordinateSystem:s,coordinateOrigin:a,offsetMode:h});if(h){let d=r.projectPosition(l||f);pe.sub(u,u,d)}return u}var U3=[255,255,255],k3=1,V3=[1,0,0],z3=[0,0,1],W3=0,Wi=class{constructor(e={}){this.type="point";let{color:r=U3}=e,{intensity:i=k3}=e,{position:o=z3}=e;this.id=e.id||`point-${W3++}`,this.color=r,this.intensity=i,this.type="point",this.position=o,this.attenuation=j3(e),this.projectedLight={...this}}getProjectedLight({layer:e}){let{projectedLight:r}=this,i=e.context.viewport,{coordinateSystem:o,coordinateOrigin:n}=e.props,s=Oa(this.position,{viewport:i,coordinateSystem:o,coordinateOrigin:n,fromCoordinateSystem:i.isGeospatial?k.LNGLAT:k.CARTESIAN,fromCoordinateOrigin:[0,0,0]});return r.color=this.color,r.intensity=this.intensity,r.position=s,r}};function j3(t){return t.attenuation?t.attenuation:V3}var cn=class extends Wi{getProjectedLight({layer:e}){let{projectedLight:r}=this,i=e.context.viewport,{coordinateSystem:o,coordinateOrigin:n,modelMatrix:s}=e.props,{cameraPosition:a}=Ea({viewport:i,modelMatrix:s,coordinateSystem:o,coordinateOrigin:n});return r.color=this.color,r.intensity=this.intensity,r.position=a,r}};var Wr=Math.PI/180,$3=1e3*60*60*24,H3=2440588,X3=2451545,Na=Wr*23.4397,Y3=357.5291,K3=.98560028,Z3=280.147,q3=360.9856235;function hy(t,e,r){let i=Wr*-r,o=Wr*e,n=Q3(t),s=sP(n),a=iP(n,i)-s.rightAscension;return{azimuth:tP(a,o,s.declination),altitude:rP(a,o,s.declination)}}function Da(t,e,r){let{azimuth:i,altitude:o}=hy(t,e,r);return[Math.sin(i)*Math.cos(o),Math.cos(i)*Math.cos(o),-Math.sin(o)]}function G3(t){return(typeof t=="number"?t:t.getTime())/$3-.5+H3}function Q3(t){return G3(t)-X3}function J3(t,e){let r=t;return Math.atan2(Math.sin(r)*Math.cos(Na)-Math.tan(e)*Math.sin(Na),Math.cos(r))}function eP(t,e){let r=t;return Math.asin(Math.sin(e)*Math.cos(Na)+Math.cos(e)*Math.sin(Na)*Math.sin(r))}function tP(t,e,r){let i=t,o=e,n=r;return Math.atan2(Math.sin(i),Math.cos(i)*Math.sin(o)-Math.tan(n)*Math.cos(o))}function rP(t,e,r){let i=t,o=e,n=r;return Math.asin(Math.sin(o)*Math.sin(n)+Math.cos(o)*Math.cos(n)*Math.cos(i))}function iP(t,e){return Wr*(Z3+q3*t)-e}function oP(t){return Wr*(Y3+K3*t)}function nP(t){let e=t,r=Wr*(1.9148*Math.sin(e)+.02*Math.sin(2*e)+3e-4*Math.sin(3*e)),i=Wr*102.9372;return e+r+i+Math.PI}function sP(t){let e=oP(t),r=nP(e);return{declination:eP(r,0),rightAscension:J3(r,0)}}var ln=class extends kt{constructor(e){super(e),this.timestamp=e.timestamp}getProjectedLight({layer:e}){let{viewport:r}=e.context;if(r.resolution&&r.resolution>0){let[o,n,s]=Da(this.timestamp,0,0);this.direction=[o,-s,n]}else{let{latitude:o,longitude:n}=r;this.direction=Da(this.timestamp,o,n)}return this}};var aP=`layout(std140) uniform screenUniforms {
1915
1978
  vec2 texSize;
1916
1979
  } screen;
1917
- `,q_={name:"screen",fs:C3,uniformTypes:{texSize:"vec2<f32>"}};var so=class extends Lr{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 Es(e,{id:o,fs:s,modules:[i,q_],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 oo=class{constructor(e,r){this.id=`${e.name}-pass`,this.props=r,xn(e),this.module=e}setup({device:e}){this.passes=I3(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 I3(t,e,r){return e.passes.map((i,s)=>{let o=D3(e,i),n=`${r}-${s}`;return new so(t,{id:n,module:e,fs:o})})}var G_=`#version 300 es
1980
+ `,uy={name:"screen",fs:aP,uniformTypes:{texSize:"vec2<f32>"}};var fn=class extends Vr{constructor(e,r){super(e,r);let{module:i,fs:o,id:n}=r,s={depthWriteEnabled:!1,depthCompare:"always",depthBias:0,blend:!0,blendColorSrcFactor:"one",blendColorDstFactor:"one-minus-src-alpha",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one-minus-src-alpha",blendColorOperation:"add",blendAlphaOperation:"add"};this.model=new Co(e,{id:n,fs:o,modules:[i,uy],parameters:s})}render(e){this._renderPass(this.device,e)}delete(){this.model.destroy(),this.model=null}_renderPass(e,r){let{clearCanvas:i,inputBuffer:o,outputBuffer:n}=r,s=[o.width,o.height],a={texSrc:o.colorAttachments[0],texSize:s};this.model.shaderInputs.setProps({screen:a,...r.moduleProps});let c=this.device.beginRenderPass({framebuffer:n,parameters:{viewport:[0,0,...s]},clearColor:i?[0,0,0,0]:!1,clearDepth:1,clearStencil:!1});this.model.draw(c),c.end()}};var hn=class{constructor(e,r){this.id=`${e.name}-pass`,this.props=r,ws(e),this.module=e}setup({device:e}){this.passes=cP(e,this.module,this.id)}setProps(e){this.props=e}preRender(){}postRender(e){let r=this.passes,{target:i}=e,o=e.inputBuffer,n=e.swapBuffer;for(let s=0;s<r.length;s++){let a=s===r.length-1,c=i!==void 0&&a;c&&(n=i);let l=!c||Boolean(e.clearCanvas),f={},h=this.module.passes[s].uniforms;f[this.module.name]={...this.props,...h},r[s].render({clearCanvas:l,inputBuffer:o,outputBuffer:n,moduleProps:f});let u=n;n=o,o=u}return o}cleanup(){if(this.passes){for(let e of this.passes)e.delete();this.passes=void 0}}};function cP(t,e,r){return e.passes.map((i,o)=>{let n=hP(e,i),s=`${r}-${o}`;return new fn(t,{id:s,module:e,fs:n})})}var dy=`#version 300 es
1918
1981
  uniform sampler2D texSrc;
1919
1982
 
1920
1983
  in vec2 position;
@@ -1922,19 +1985,19 @@ in vec2 coordinate;
1922
1985
  in vec2 uv;
1923
1986
 
1924
1987
  out vec4 fragColor;
1925
- `,O3=t=>`${G_}
1988
+ `,lP=t=>`${dy}
1926
1989
  void main() {
1927
1990
  fragColor = texture(texSrc, coordinate);
1928
1991
  fragColor = ${t}(fragColor, screen.texSize, coordinate);
1929
1992
  }
1930
- `,N3=t=>`${G_}
1993
+ `,fP=t=>`${dy}
1931
1994
  void main() {
1932
1995
  fragColor = ${t}(texSrc, screen.texSize, coordinate);
1933
1996
  }
1934
- `;function D3(t,e){if(e.filter){let r=typeof e.filter=="string"?e.filter:`${t.name}_filterColor_ext`;return O3(r)}if(e.sampler){let r=typeof e.sampler=="string"?e.sampler:`${t.name}_sampleColor`;return N3(r)}return""}var B3={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"},Lt=class extends Ye{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),b=[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:b});return this._colorEncoderState=null,{decodePickingColor:_&&F3.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,B3),s.blend=!0,this.device.type==="webgpu"?s.blendConstant=Q_(this._colorEncoderState,e,i):s.blendColor=Q_(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 Q_(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):(F.warn("Too many pickable layers, only picking the first 255")(),o=0)),[0,0,0,o/255]}function F3(t,e){let r=t.byAlpha[e[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(e)}}var pr={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"},Ui=Symbol.for("component"),ze=Symbol.for("propTypes"),va=Symbol.for("deprecatedProps"),Ut=Symbol.for("asyncPropDefaults"),_t=Symbol.for("asyncPropOriginal"),Ze=Symbol.for("asyncPropResolved");function gr(t,e=()=>!0){return Array.isArray(t)?J_(t,e,[]):e(t)?[t]:[]}function J_(t,e,r){let i=-1;for(;++i<t.length;){let s=t[i];Array.isArray(s)?J_(s,e,r):e(s)&&r.push(s)}return r}function Ma({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}qi();var no=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=ar(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 ao=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 no(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 L3="layerManager.setLayers",U3="layerManager.activateViewport",Vr=class{constructor(e,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{G(U3,this,a),a&&(this.context.viewport=a)};let{deck:i,stats:s,viewport:o,timeline:n}=r||{};this.layers=[],this.resourceManager=new ao({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:e?.gl,deck:i,shaderAssembler:Sa(e?.info?.shadingLanguage||"glsl"),defaultShaderModules:[$h],renderPass:void 0,stats:s||new Ne({id:"deck.gl"}),viewport:o||new Ee({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:n||new Er,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){G(L3,this,r,e),this._lastRenderedLayers=e;let i=gr(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]?F.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&&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(e){for(let r in e){let i=e[r];i&&this._finalizeLayer(i)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=pr.INITIALIZED}catch(r){this._handleError("initialization",r,e)}}_transferLayerState(e,r){r._transferState(e),r.lifecycle=pr.MATCHED,r!==e&&(e.lifecycle=pr.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(r){this._handleError("update",r,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle=pr.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=pr.FINALIZED}catch(r){this._handleError("finalization",r,e)}}};function Z(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(!Z(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)||!Z(t[o],e[o],r-1))return!1;return!0}return!1}var co=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=gr(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?(!Z(e,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=e):F.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 k3=/^(?:\d+\.?\d*|\.\d+)$/;function kt(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=V3(t);return new gu(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 pu(t,e){switch(t.type){case"literal":return t.value;case"percentage":return Math.round(t.value*e);case"binary":let r=pu(t.left,e),i=pu(t.right,e);return t.operator==="+"?r+i:r-i;default:throw new Error("Unknown layout expression type")}}function Vt(t,e){return pu(t,e)}function V3(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(ey(i)||i==="."){let s=r,o=i===".";for(r++;r<t.length;){let a=t[r];if(ey(a)){r++;continue}if(a==="."&&!o){o=!0,r++;continue}break}let n=t.slice(s,r);if(!k3.test(n))throw new Error("Invalid number token");e.push({type:"number",value:parseFloat(n)});continue}if(ty(i)){let s=r;for(;r<t.length&&ty(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 gu=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(;z3(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 ey(t){return t>="0"&&t<="9"}function ty(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"}function z3(t){return Boolean(t&&t.type==="symbol"&&(t.value==="+"||t.value==="-"))}function ry(t,e){let r={...t};for(let i in e)i!=="id"&&(Array.isArray(r[i])&&Array.isArray(e[i])?r[i]=W3(r[i],e[i]):r[i]=e[i]);return r}function W3(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 be=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=kt(i),this._y=kt(s),this._width=kt(o),this._height=kt(n),this._padding=a&&{left:kt(a.left||0),right:kt(a.right||0),top:kt(a.top||0),bottom:kt(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e?!0:this.constructor===e.constructor&&Z(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?ry(e,this.props.viewState):this.props.viewState:e}getDimensions({width:e,height:r}){let i={x:Vt(this._x,e),y:Vt(this._y,r),width:Vt(this._width,e),height:Vt(this._height,r)};return this._padding&&(i.padding={left:Vt(this._padding.left,e),top:Vt(this._padding.top,r),right:Vt(this._padding.right,e),bottom:Vt(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 qe=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 iy=()=>{},lo={BREAK:1,SNAP_TO_END:2,IGNORE:3},j3=t=>t,H3=lo.BREAK,fo=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 qe(e.timeline),this.onViewStateChange=e.onViewStateChange||iy,this.onStateChange=e.onStateChange||iy}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===lo.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===lo.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||j3,interpolator:o,interruption:r.transitionInterruption||H3,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 zt=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)||!Pe(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 Ca=Math.PI/180,sy=180/Math.PI,Ia=6370972,Wt=256;function $3(){let t=Wt/Ia,e=Math.PI/180*Wt;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 Oa=class extends Ee{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,_e),-_e),c=c||1,f?l=Bt(f):f=Dt(l);let h=Math.pow(2,i-yt(a)),u=e.nearZ??s,d=e.farZ??(l+Wt*2*h/c)*o,p=new z().lookAt({eye:[0,-l,0],up:[0,0,1]});p.rotateX(a*Ca),p.rotateZ(-r*Ca),p.scale(h/c),super({...e,height:c,viewMatrix:p,longitude:r,latitude:a,zoom:i,distanceScales:$3(),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 se.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=mu(c,[s,a,n,1]);else{let d=mu(c,[s,a,-1,1]),p=mu(c,[s,a,1,1]),g=((i||0)/Ia+1)*Wt,m=ge.sqrLen(ge.sub([],d,p)),_=ge.sqrLen(d),b=ge.sqrLen(p),T=4*((4*_*b-(m-_-b)**2)/16)/m,S=Math.sqrt(_-T),A=Math.sqrt(Math.max(0,g*g-T)),w=(S-A)/Math.sqrt(m);l=ge.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*Ca,n=i*Ca,a=Math.cos(n),c=(s/Ia+1)*Wt;return[Math.sin(o)*a*c,-Math.cos(o)*a*c,Math.sin(n)*c]}unprojectPosition(e){let[r,i,s]=e,o=ge.len(e),n=Math.asin(s/o),c=Math.atan2(r,-i)*sy,l=n*sy,f=(o/Wt-1)*Ia;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-yt(this.latitude)),c=e+a*(o[0]-s[0]),l=r-a*(o[1]-s[1]);l=Math.max(Math.min(l,_e),-_e);let f={longitude:c,latitude:l,zoom:i-yt(r)};return f.zoom+=yt(f.latitude),f}};Oa.displayName="GlobeViewport";var ki=Oa;function yt(t){let e=Math.PI*Math.cos(t*Math.PI/180);return Math.log2(e)}function mu(t,e){let r=Ae.transformMat4([],e,t);return Ae.scale(r,r,1/r[3]),r}var X3=["longitude","latitude","zoom","bearing","pitch"],Y3=["longitude","latitude","zoom"],ce=class extends zt{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:X3,required:Y3},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 ki)F.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]=It(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,It(e.around,r.around,i)))}return s}};var jt={transitionDuration:0},K3=300,Na=t=>1-(1-t)*(1-t),Vi={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],KEYBOARD:["keydown"]},zr={},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 fo({...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?K3: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(Vi.WHEEL,h&&s),this.toggleEvents(Vi.PAN,h),this.toggleEvents(Vi.PINCH,h&&(c||l)),this.toggleEvents(Vi.MULTI_PAN,h&&l),this.toggleEvents(Vi.DOUBLE_CLICK,h&&a),this.toggleEvents(Vi.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=>!Z(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,jt,{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,jt,{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:Na},{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,jt,{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:Na},{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}:jt,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,jt,{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,jt,{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:Na},{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 zr._startPinchRotation=e.rotation,zr._lastPinchEvent=e,this.updateViewport(i,jt,{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:zr._startPinchRotation-i})}return this.updateViewport(r,jt,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),zr._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:i}=zr;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:Na},{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 zr._startPinchRotation=null,zr._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?jt:e?{...r,transitionInterpolator:new ce({...e,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var Ge=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 oy=5,Z3=1.2,ny=512,ay=[[-1/0,-90],[1/0,90]];function Da([t,e]){if(Math.abs(e)>90&&(e=Math.sign(e)*90),Number.isFinite(t)){let[i,s]=Se([t,e]);return[i,U(s,0,ny)]}let[,r]=Se([0,e]);return[t,U(r,0,ny)]}var ho=class extends Ge{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:b,startBearing:y,startPitch:T,startZoom:S,normalize:A=!0}=e;Y(Number.isFinite(o)),Y(Number.isFinite(s)),Y(Number.isFinite(n));let w=e.maxBounds||(A?ay: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:b,startBearing:y,startPitch:T,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=mt(o+180,360)-180),(n<-180||n>180)&&(e.bearing=mt(n+180,360)-180)),e.pitch=U(s,i,r),e.zoom=this._constrainZoom(e.zoom,e),c){let l=Da(c[0]),f=Da(c[1]),h=2**e.zoom,u=e.width/2/h,d=e.height/2/h,[p,g]=ye([l[0]+u,l[1]+d]),[m,_]=ye([f[0]-u,f[1]-d]);e.longitude=U(e.longitude,p,m),e.latitude=U(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=Da(s[0]),c=Da(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 U(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)>oy&&(u=n/(c-f)*Z3):n<0&&c>oy&&(u=1-a/c),u=U(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}}},Ht=class extends Te{constructor(){super(...arguments),this.ControllerState=ho,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:ay),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 Ba=class extends be{constructor(e={}){super(e)}getViewportType(){return dr}get ControllerType(){return Ht}};Ba.displayName="MapView";var Fa=Ba;var q3=new ur;function G3(t,e){let r=t.order??1/0,i=e.order??1/0;return r-i}var uo=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=>G3(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&&(Z(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 ur)||this._resolvedEffects.push(q3),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 po=class extends Ye{shouldDrawLayer(e){let{operation:r}=e.props;return r.includes("draw")||r.includes("terrain")}render(e){return this._render(e)}};var Q3="deckRenderer.renderLayers",Wr=class{constructor(e,r={}){this.device=e,this.stats=r.stats,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new po(e),this.pickLayersPass=new Lt(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++,G(Q3,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]}}};L();var J3={pickedColor:null,pickedObjectIndex:-1};function _u({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 b=m+n-r,y=b*b+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}}F.error("Picked non-existent layer. Is picking buffer corrupt?")()}return J3}function yu({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}):F.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function La({pickInfo:t,viewports:e,pixelRatio:r,x:i,y:s,z:o}){let n=e[0];e.length>1&&(n=eP(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 bu(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=La(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=Ua({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 Ua({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 eP(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 go=class{constructor(e,r={}){this._pickable=!0,this.device=e,this.stats=r.stats,this.pickLayersPass=new Lt(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){let r=this.device.createTexture({format:"rgba8unorm",width:1,height:1,usage:B.RENDER_ATTACHMENT|B.COPY_SRC});if(this.pickingFBO=this.device.createFramebuffer({colorAttachments:[r],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float")){let i=this.device.createTexture({format:"rgba32float",width:1,height:1,usage:B.RENDER_ATTACHMENT|B.COPY_SRC}),s=this.device.createFramebuffer({colorAttachments:[i],depthStencilAttachment:"depth16unorm"});this.depthFBO=s}}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:La({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:b}=this.pickingFBO,y=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceWidth:_,deviceHeight:b}),T={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=await this._drawAndSampleAsync({layers:d,views:r,viewports:i,onViewportActive:f,deviceRect:y,cullRect:T,effects:h,pass:`picking:${c}`});R=_u({...C,deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceRect:y})}else R={pickedColor:null,pickedObjectIndex:-1};let M,O=this._getDepthLayers(R,d,l);if(O.length>0){let{pickedColors:C}=await this._drawAndSampleAsync({layers:O,views:r,viewports:i,onViewportActive:f,deviceRect:{x:R.pickedX??g[0],y:R.pickedY??g[1],width:1,height:1},cullRect:T,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=bu({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:La({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:b}=this.pickingFBO,y=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceWidth:_,deviceHeight:b}),T={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:T,effects:h,pass:`picking:${c}`});R=_u({...C,deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceRect:y})}else R={pickedColor:null,pickedObjectIndex:-1};let M,O=this._getDepthLayers(R,d,l);if(O.length>0){let{pickedColors:C}=this._drawAndSample({layers:O,views:r,viewports:i,onViewportActive:f,deviceRect:{x:R.pickedX??g[0],y:R.pickedY??g[1],width:1,height:1},cullRect:T,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=bu({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),b=_.x+_.width,y=_.y,T={x:g,y,width:b-g,height:m-y},S=await this._drawAndSampleAsync({layers:u,views:r,viewports:i,onViewportActive:f,deviceRect:T,cullRect:{x:s,y:o,width:n,height:a},effects:h,pass:`picking:${c}`}),A=yu(S),w=new Map,v=[],R=Number.isFinite(l);for(let M=0;M<A.length&&!(R&&v.length>=l);M++){let O=A[M],C={color:O.pickedColor,layer:null,index:O.pickedObjectIndex,picked:!0,x:s,y:o,pixelRatio:d};C=Ua({layer:O.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),b=_.x+_.width,y=_.y,T={x:g,y,width:b-g,height:m-y},S=this._drawAndSample({layers:u,views:r,viewports:i,onViewportActive:f,deviceRect:T,cullRect:{x:s,y:o,width:n,height:a},effects:h,pass:`picking:${c}`}),A=yu(S),w=new Map,v=[],R=Number.isFinite(l);for(let M=0;M<A.length&&!(R&&v.length>=l);M++){let O=A[M],C={color:O.pickedColor,layer:null,index:O.pickedObjectIndex,picked:!0,x:s,y:o,pixelRatio:d};C=Ua({layer:O.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 T of a)T.useInPicking&&(h.preRenderStats[T.id]=T.preRender(h));let{decodePickingColor:u,stats:d}=this.pickLayersPass.render(h);this._updateStats(d);let{x:p,y:g,width:m,height:_}=o,b=f.colorAttachments[0]?.texture;if(!b)throw new Error("Picking framebuffer color attachment is missing");let y=await this._readTextureDataAsync(b,{x:p,y:g,width:m,height:_},l?Float32Array:Uint8Array);if(!l){let T=!1;for(let S=3;S<y.length;S+=4)if(y[S]!==0){T=!0;break}!T&&y.length>0&&F.warn("Async pick readback returned only zero alpha values",{deviceRect:o,bytes:Array.from(y.subarray(0,Math.min(y.length,16)))})()}return{pickedColors:y,decodePickingColor:u}}async _readTextureDataAsync(e,r,i){let{width:s,height:o}=r,n=e.computeMemoryLayout(r),a=this.device.createBuffer({byteLength:n.byteLength,usage:I.COPY_DST|I.MAP_READ});try{e.readBuffer(r,a);let c=await a.readAsync(0,n.byteLength),l=i.BYTES_PER_ELEMENT;if(n.bytesPerRow%l!==0)throw new Error(`Texture readback row stride ${n.bytesPerRow} is not aligned to ${l}-byte elements.`);let f=new i(c.buffer,c.byteOffset,n.byteLength/l),h=s*4,u=n.bytesPerRow/l;if(u<h)throw new Error(`Texture readback row stride ${u} is smaller than packed row length ${h}.`);let d=new i(s*o*4);for(let p=0;p<o;p++){let g=p*u;d.set(f.subarray(g,g+h),p*h)}return d}finally{a.destroy()}}_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,b=new(l?Float32Array:Uint8Array)(m*_*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:p,sourceY:g,sourceWidth:m,sourceHeight:_,target:b}),{pickedColors:b,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 tP={"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}},rP="top-left",cy="root",ka=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&&!Z(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=vi[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=rP}=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||cy,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,tP[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===cy||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 mo(t,e){e&&Object.entries(e).map(([r,i])=>{r.startsWith("--")?t.style.setProperty(r,i):t.style[r]=i})}function Va(t,e){e&&Object.keys(e).map(r=>{r.startsWith("--")?t.style.removeProperty(r):t.style[r]=""})}var mr=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&&!Z(r.style,e.style,1)&&(Va(i,r.style),mo(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)),mo(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){}};mr.defaultProps={id:"widget",style:{},_container:null,className:""};var iP={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},_o=class extends mr{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,iP),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)}}};_o.defaultProps={...mr.defaultProps};L();Tc();qi();function yr(){}var dv=({isDragging:t})=>t?"grabbing":"grab",Ob={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,pickAsync:"auto",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:yr,onWebGLInitialized:yr,onResize:yr,onViewStateChange:yr,onInteractionStateChange:yr,onBeforeRender:yr,onAfterRender:yr,onLoad:yr,onError:t=>F.error(t.message,t.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:dv,getTooltip:null,debug:!1,drawPickingColors:!1},Ro=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 Ne({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._hoverPickSequence=0,this._pointerDownPickSequence=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null,unproject3D:!1},this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=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=vi[i.type],o=i.offsetCenter;if(!s||!o||!this.layerManager)return;let n=this.layerManager.getLayers(),a=this._getInternalPickingMode();if(!a)return;if(a==="sync"){let l=i.type==="click"&&this._shouldUnproject3D(n)?this._getFirstPickedInfo(this._pickPointSync(this._getPointPickOptions(o.x,o.y,{unproject3D:!0},n))):this._getLastPointerDownPickingInfo(o.x,o.y,n);this._dispatchPickingEvent(l,i);return}(this._lastPointerDownInfoPromise||Promise.resolve(this._getLastPointerDownPickingInfo(o.x,o.y,n))).then(l=>{this._dispatchPickingEvent(l,i)}).catch(l=>this.props.onError?.(l))},this._onPointerDown=i=>{let s=i.offsetCenter;if(!s)return;let o=this._getInternalPickingMode();if(!o)return;let n=this.layerManager?.getLayers()||[],a=++this._pointerDownPickSequence;if(o==="sync"){let l=this._pickPointSync({x:s.x,y:s.y,radius:this.props.pickingRadius}),f=this._getFirstPickedInfo(l);this._lastPointerDownInfo=f,this._lastPointerDownInfoPromise=Promise.resolve(f);return}let c=this._pickPointAsync(this._getPointPickOptions(s.x,s.y,{},n)).then(l=>this._getFirstPickedInfo(l)).then(l=>(a===this._pointerDownPickSequence&&(this._lastPointerDownInfo=l),l)).catch(l=>{this.props.onError?.(l);let f=this.deckPicker&&this.viewManager?this._getLastPointerDownPickingInfo(s.x,s.y,n):{};return a===this._pointerDownPickSequence&&(this._lastPointerDownInfo=f),f});this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=c},this.props={...Ob,...e},e=this.props,e.viewState&&e.initialViewState&&F.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&&F.error("WebGL1 context not supported.")();let i=this.props.deviceProps?.onResize;r=wo.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&&Ke.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._hoverPickSequence++,this._pointerDownPickSequence++,this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=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&&F.removed("onLayerHover","onHover")(),"onLayerClick"in e&&F.removed("onLayerClick","onClick")(),e.initialViewState&&!Z(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),Object.assign(this.props,e),this._validateInternalPickingMode(),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),F.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}async pickObjectAsync(e){let r=(await this._pickAsync("pickObjectAsync","pickObject Time",e)).result;return r.length?r[0]:null}async pickObjectsAsync(e){return await this._pickAsync("pickObjectsAsync","pickObjects Time",e)}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._getInternalPickingMode()!=="sync"?null: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)}_resolveInternalPickingMode(){let{pickAsync:e}=this.props,r=this.device?.type||this.props.deviceProps?.type;if(e==="auto")return r==="webgpu"?"async":"sync";if(e==="sync"&&r==="webgpu")throw new Error('`pickAsync: "sync"` is not supported when Deck is using a WebGPU device.');return e}_getInternalPickingMode(){try{return this._resolveInternalPickingMode()}catch(e){return this.props.onError?.(e),null}}_validateInternalPickingMode(){this._getInternalPickingMode()}_getFirstPickedInfo({result:e,emptyInfo:r}){return e[0]||r}_shouldUnproject3D(e=this.layerManager?.getLayers()||[]){return e.some(r=>r.props.pickable==="3d")}_getPointPickOptions(e,r,i={},s=this.layerManager?.getLayers()||[]){return{x:e,y:r,radius:this.props.pickingRadius,unproject3D:this._shouldUnproject3D(s),...i}}_pickPointSync(e){return this._pick("pickObject","pickObject Time",e)}_pickPointAsync(e){return this._pickAsync("pickObjectAsync","pickObject Time",e)}_getLastPointerDownPickingInfo(e,r,i=this.layerManager?.getLayers()||[]){return this.deckPicker.getLastPickedObject({x:e,y:r,layers:i,viewports:this.getViewports({x:e,y:r})},this._lastPointerDownInfo)}_applyHoverCallbacks({result:e,emptyInfo:r},i){if(!this.widgetManager)return;this.cursorState.isHovering=e.length>0;let s=r,o=!1;for(let n of e)s=n,o=n.layer?.onHover(n,i)||o;o||(this.props.onHover?.(s,i),this.widgetManager.onHover(s,i))}_dispatchPickingEvent(e,r){if(!this.layerManager||!this.widgetManager)return;let i=vi[r.type];if(!i)return;let{layer:s}=e,o=s&&(s[i]||s.props[i]),n=this.props[i],a=!1;o&&(a=o.call(s,e,r)),a||(n?.(e,r),this.widgetManager.onEvent(e,r))}_pickAsync(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}_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 gi({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(wo)||s.adapters.push(wo);let o={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0},n=this.props.deviceProps?.onResize;return Zt.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 Fa({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(){let{_pickRequest:e}=this;if(e.event){let r=e.event,i=this.layerManager?.getLayers()||[],s=this._getPointPickOptions(e.x,e.y,{radius:e.radius,mode:e.mode},i),o=this._getInternalPickingMode(),n=++this._hoverPickSequence;if(e.event=null,!o)return;if(o==="sync"){this._applyHoverCallbacks(this._pickPointSync(s),r);return}this._pickPointAsync(s).then(({result:a,emptyInfo:c})=>{n===this._hoverPickSequence&&this._applyHoverCallbacks({result:a,emptyInfo:c},r)}).catch(a=>this.props.onError?.(a))}}_updateCursor(){let e=this.props.parent||this.canvas;e&&(e.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(e){if(this.device=e,this._validateInternalPickingMode(),!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 Er;r.play(),this.animationLoop.attachTimeline(r);let i=this.props.parent?.querySelector(".deck-events-root")||this.canvas;this.eventManager=new Ys(i,{touchAction:this.props.touchAction,recognizers:Object.keys(tu).map(n=>{let[a,c,l,f]=tu[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 vi)this.eventManager.on(n,this._onEvent);this.viewManager=new co({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 Vr(this.device,{deck:this,stats:this.stats,viewport:s,timeline:r}),this.effectManager=new uo({deck:this,device:this.device}),this.deckRenderer=new Wr(this.device,{stats:this.stats}),this.deckPicker=new go(this.device,{stats:this.stats});let o=this.props.parent?.querySelector(".deck-widgets-root")||this.canvas?.parentElement;this.widgetManager=new ka({deck:this,parentElement:o}),this.widgetManager.addDefault(new _o),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(),F.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.layerManager.updateLayers(),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=Zt.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}};Ro.defaultProps=Ob;Ro.VERSION=sa;var Ec=Ro;L();L();function Nb(t){switch(t){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return cs(t)}}var Db=de.getDataType.bind(de);function Po(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 br(t){return t.stride||t.size*t.bytesPerElement}function Bb(t,e){return t.type===e.type&&t.size===e.size&&br(t)===br(e)&&(t.offset||0)===(e.offset||0)}function Xu(t,e){e.offset&&F.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let r=br(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 pv(t,e){let r=Xu(t,e);return{high:r,low:{...r,offset:r.offset+t.size*4}}}var vo=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=Nb(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*br(e):0}get numInstances(){return this.state.numInstances}set numInstances(e){this.state.numInstances=e}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),Ke.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:br(i)};if(this.doublePrecision){let n=pv(i,r||{});s.push(Po(e,{...i,...n.high},this.device.type),Po(`${e}64Low`,{...i,...n.low},this.device.type))}else if(r){let n=Xu(i,r);s.push(Po(e,{...i,...n},this.device.type))}else s.push(Po(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 I?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=Db(i.value);s.type=s.normalized?n.replace("int","norm"):n}s.bytesPerElement=i.value.BYTES_PER_ELEMENT,s.stride=br(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=br(s),c=(s.vertexOffset||0)*a;if(this.doublePrecision&&o instanceof Float64Array&&(o=Ea(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?Ea(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=Ke.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?Ea(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)&&F.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?I.INDEX:I.VERTEX)|I.COPY_DST,indexType:r?i:void 0,byteLength:e}),this._buffer}};var Fb=[],Lb=[];function Xi(t,e=0,r=1/0){let i=Fb,s={index:-1,data:t,target:[]};return t?typeof t[Symbol.iterator]=="function"?i=t:t.length>0&&(Lb.length=t.length,i=Lb):i=Fb,(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 wc(t){return t&&t[Symbol.asyncIterator]}function Rc(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 b=0;b<r;b++)d[b]=t[_+b];return d}let p=o[u],g=o[u+1]||f,m;if(n){m=new Array(g-p);for(let _=p;_<g;_++){let b=_*c+l;d=new Array(r);for(let y=0;y<r;y++)d[y]=t[b+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 b=p;b<g;b++){let y=b*c+l;for(let T=0;T<r;T++)m[_++]=t[y+T]}}return m}}var Ub=[],Mo=[[0,1/0]];function kb(t,e){if(t===Mo||(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 mv={interpolation:{duration:0,easing:t=>t},spring:{stiffness:.05,damping:.5}};function Pc(t,e){if(!t)return null;Number.isFinite(t)&&(t={type:"interpolation",duration:t});let r=t.type||"interpolation";return{...mv[r],...e,...t,type:r}}var $t=class extends vo{constructor(e,r){super(e,r,{startIndices:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:Mo}),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=!Bb(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 Pc(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=kb(this.state.updateRanges,[i,s])}else this.state.updateRanges=Mo}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=Ub}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!==Mo),!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=Rc(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:_}=Xi(r,i,s);for(let b of m){_.index++;let y=p(b,_);if(d&&(y=d.call(this,y)),h){let T=(_.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),Ma({target:l,source:_.target,start:g,count:T}));g+=T*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 Yu(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 Vb({source:t,target:e,size:r,getData:i,sourceStartIndices:s,targetStartIndices:o}){if(!s||!o)return Yu({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;Yu({source:t.subarray(n,h),target:e,start:a,end:u,size:r,getData:c}),n=h,a=u}return a<e.length&&Yu({source:[],target:e,start:a,size:r,getData:c}),e}function zb(t){let{device:e,settings:r,value:i}=t,s=new $t(e,r);return s.setData({value:i instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:r.normalized}),s}function vc(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 Mc(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 Cc(t){t.push(t.shift())}function Wb(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 Ic({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 Oc({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=(T,S)=>r.normalizeConstant(y(T,S))}let m=d?(y,T)=>n(g,T):(y,T)=>n(g.subarray(y+l,y+l+c),T),_=e?new Float32Array(e.readSyncWebGL(f,i*4).buffer):new Float32Array(0),b=new Float32Array(s);return Vb({source:_,target:b,sourceStartIndices:o,targetStartIndices:h,size:c,getData:m}),(!e||e.byteLength<b.byteLength+f)&&(e?.destroy(),e=t.createBuffer({byteLength:b.byteLength+f,usage:35050})),e.write(b,f),e}var Yi=class{constructor({device:e,attribute:r,timeline:i}){this.buffers=[],this.currentLength=0,this.device=e,this.transition=new qe(i),this.attribute=r,this.attributeInTransition=zb(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=Wb(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 Co=class extends Yi{constructor({device:e,attribute:r,timeline:i}){super({device:e,attribute:r,timeline:i}),this.type="interpolation",this.transform=Tv(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;Cc(o),o[0]=Oc({device:this.device,buffer:o[0],attribute:n,fromLength:i,toLength:this.currentLength,fromStartIndices:s,getData:e.enter}),o[1]=Ic({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);Hb(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()}},_v=`layout(std140) uniform interpolationUniforms {
1997
+ `;function hP(t,e){if(e.filter){let r=typeof e.filter=="string"?e.filter:`${t.name}_filterColor_ext`;return lP(r)}if(e.sampler){let r=typeof e.sampler=="string"?e.sampler:`${t.name}_sampleColor`;return fP(r)}return""}var uP={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"},Vt=class extends Ke{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:o,onViewportActive:n,pickingFBO:s,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),b=[a,c,l,f],y=super._render({target:s,layers:e,layerFilter:r,views:i,viewports:o,onViewportActive:n,cullRect:h,effects:u?.filter(S=>S.useInPicking),pass:d,isPicking:!0,shaderModuleProps:g,clearColor:m??[0,0,0,0],colorMask:15,scissorRect:b});return this._colorEncoderState=null,{decodePickingColor:_&&dP.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 o={...e.props.parameters},{pickable:n,operation:s}=e.props;return this._colorEncoderState?n&&s.includes("draw")?(Object.assign(o,uP),o.blend=!0,this.device.type==="webgpu"?o.blendConstant=py(this._colorEncoderState,e,i):o.blendColor=py(this._colorEncoderState,e,i),s.includes("terrain")&&e.state?._hasPickingCover&&(o.blendAlphaSrcFactor="one")):s.includes("terrain")&&(o.blend=!1):o.blend=!1,o}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function py(t,e,r){let{byLayer:i,byAlpha:o}=t,n,s=i.get(e);return s?(s.viewports.push(r),n=s.a):(n=i.size+1,n<=255?(s={a:n,layer:e,viewports:[r]},i.set(e,s),o[n]=s):(L.warn("Too many pickable layers, only picking the first 255")(),n=0)),[0,0,0,n/255]}function dP(t,e){let r=t.byAlpha[e[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(e)}}var br={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"},ji=Symbol.for("component"),We=Symbol.for("propTypes"),Ba=Symbol.for("deprecatedProps"),zt=Symbol.for("asyncPropDefaults"),yt=Symbol.for("asyncPropOriginal"),qe=Symbol.for("asyncPropResolved");function Tr(t,e=()=>!0){return Array.isArray(t)?gy(t,e,[]):e(t)?[t]:[]}function gy(t,e,r){let i=-1;for(;++i<t.length;){let o=t[i];Array.isArray(o)?gy(o,e,r):e(o)&&r.push(o)}return r}function La({target:t,source:e,start:r=0,count:i=1}){let o=e.length,n=i*o,s=0;for(let a=r;s<o;s++)t[a++]=e[s];for(;s<n;)s<n-s?(t.copyWithin(r+s,r,r+s),s*=2):(t.copyWithin(r+s,r,r+n-s),s=n);return t}to();var un=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,o=e;typeof e=="string"&&(o=ur(e)),o instanceof Promise?(this.isLoaded=!1,this._loader=o.then(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=n)}).catch(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=n||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e);for(let n of this._subscribers)n.onChange(this.getData())}};var dn=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:o=!0}){let n=this._resources[e];n?n.setData(r,i):(n=new un(e,r,this._context),this._resources[e]=n),n.persistent=o}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 o=r[i],n=this._resources[o.resourceId];n&&n.unsubscribe(o)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:r,consumerId:i,requestId:o="default"}){let{_resources:n,protocol:s}=this;e.startsWith(s)&&(e=e.replace(s,""),n[e]||this.add({resourceId:e,data:null,persistent:!1}));let a=n[e];if(this._track(i,o,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,o){let n=this._consumers,s=n[e]=n[e]||{},a=s[r],c=a&&a.resourceId&&this._resources[a.resourceId];c&&(c.unsubscribe(a),this.prune()),i&&(a?(a.onChange=o,a.resourceId=i.id):a={onChange:o,resourceId:i.id},s[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 pP="layerManager.setLayers",gP="layerManager.activateViewport",jr=class{constructor(e,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{G(gP,this,a),a&&(this.context.viewport=a)};let{deck:i,stats:o,viewport:n,timeline:s}=r||{};this.layers=[],this.resourceManager=new dn({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:e?.gl,deck:i,shaderAssembler:Ca(e?.info?.shadingLanguage||"glsl"),defaultShaderModules:[ru],renderPass:void 0,stats:o||new Ne({id:"deck.gl"}),viewport:n||new Se({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:s||new Mr,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 o=i.getNeedsRedraw(e);r=r||o}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){G(pP,this,r,e),this._lastRenderedLayers=e;let i=Tr(e,Boolean);for(let o of i)o.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(o=>o.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 s of e)i[s.id]?L.warn(`Multiple old layers with same id ${s.id}`)():i[s.id]=s;if(this._defaultShaderModulesChanged){for(let s of e)s.setNeedsUpdate(),s.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let o=[];this._updateSublayersRecursively(r,i,o),this._finalizeOldLayers(i);let n=!1;for(let s of o)if(s.hasUniformTransition()){n=`Uniform transition in ${s}`;break}this._needsUpdate=n,this.layers=o}_updateSublayersRecursively(e,r,i){for(let o of e){o.context=this.context;let n=r[o.id];n===null&&L.warn(`Multiple new layers with same id ${o.id}`)(),r[o.id]=null;let s=null;try{this._debug&&n!==o&&o.validateProps(),n?(this._transferLayerState(n,o),this._updateLayer(o)):this._initializeLayer(o),i.push(o),s=o.isComposite?o.getSubLayers():null}catch(a){this._handleError("matching",a,o)}s&&this._updateSublayersRecursively(s,r,i)}}_finalizeOldLayers(e){for(let r in e){let i=e[r];i&&this._finalizeLayer(i)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=br.INITIALIZED}catch(r){this._handleError("initialization",r,e)}}_transferLayerState(e,r){r._transferState(e),r.lifecycle=br.MATCHED,r!==e&&(e.lifecycle=br.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(r){this._handleError("update",r,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle=br.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=br.FINALIZED}catch(r){this._handleError("finalization",r,e)}}};function Z(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(!Z(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),o=Object.keys(e);if(i.length!==o.length)return!1;for(let n of i)if(!e.hasOwnProperty(n)||!Z(t[n],e[n],r-1))return!1;return!0}return!1}var pn=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(),o={x:e[0],y:e[1]};for(let n=i.length-1;n>=0;--n){let s=i[n];if(s.containsPixel(o)){let a=e.slice();return a[0]-=s.x,a[1]-=s.y,s.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=Tr(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?(!Z(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:n=>this.getView(e.id)?.makeViewport({viewState:n,width:this.width,height:this.height}),pickPosition:this._pickPosition})}_updateController(e,r,i,o){let n=e.controller;if(n&&i){let s={...r,...n,id:e.id,x:i.x,y:i.y,width:i.width,height:i.height};return(!o||o.constructor!==n.type)&&(o=this._createController(e,s)),o&&o.setProps(s),o}return null}_rebuildViewports(){let{views:e}=this,r=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let o=e.length;o--;){let n=e[o],s=this.getViewState(n),a=n.makeViewport({viewState:s,width:this.width,height:this.height}),c=r[n.id],l=Boolean(n.controller);l&&!c&&(i=!0),(i||!l)&&c&&(c.finalize(),c=null),this.controllers[n.id]=this._updateController(n,s,a,c),a&&this._viewports.unshift(a)}for(let o in r){let n=r[o];n&&!this.controllers[o]&&n.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,o)=>!e[o].equals(r[o]))}};var mP=/^(?:\d+\.?\d*|\.\d+)$/;function Wt(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=_P(t);return new Ru(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 wu(t,e){switch(t.type){case"literal":return t.value;case"percentage":return Math.round(t.value*e);case"binary":let r=wu(t.left,e),i=wu(t.right,e);return t.operator==="+"?r+i:r-i;default:throw new Error("Unknown layout expression type")}}function jt(t,e){return wu(t,e)}function _P(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(my(i)||i==="."){let o=r,n=i===".";for(r++;r<t.length;){let a=t[r];if(my(a)){r++;continue}if(a==="."&&!n){n=!0,r++;continue}break}let s=t.slice(o,r);if(!mP.test(s))throw new Error("Invalid number token");e.push({type:"number",value:parseFloat(s)});continue}if(_y(i)){let o=r;for(;r<t.length&&_y(t[r]);)r++;let n=t.slice(o,r).toLowerCase();e.push({type:"word",value:n});continue}throw new Error("Invalid token in position string")}return e}var Ru=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(;yP(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 my(t){return t>="0"&&t<="9"}function _y(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"}function yP(t){return Boolean(t&&t.type==="symbol"&&(t.value==="+"||t.value==="-"))}function yy(t,e){let r={...t};for(let i in e)i!=="id"&&(Array.isArray(r[i])&&Array.isArray(e[i])?r[i]=bP(r[i],e[i]):r[i]=e[i]);return r}function bP(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:o=0,width:n="100%",height:s="100%",padding:a=null}=e;this.id=r||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=Wt(i),this._y=Wt(o),this._width=Wt(n),this._height=Wt(s),this._padding=a&&{left:Wt(a.left||0),right:Wt(a.right||0),top:Wt(a.top||0),bottom:Wt(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e?!0:this.constructor===e.constructor&&Z(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 o=this.getDimensions({width:e,height:r});if(!o.height||!o.width)return null;let n=this.getViewportType(i);return new n({...i,...this.props,...o})}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?yy(e,this.props.viewState):this.props.viewState:e}getDimensions({width:e,height:r}){let i={x:jt(this._x,e),y:jt(this._y,r),width:jt(this._width,e),height:jt(this._height,r)};return this._padding&&(i.padding={left:jt(this._padding.left,e),top:jt(this._padding.top,r),right:jt(this._padding.right,e),bottom:jt(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 Ge=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 by=()=>{},gn={BREAK:1,SNAP_TO_END:2,IGNORE:3},TP=t=>t,xP=gn.BREAK,mn=class{constructor(e){this._onTransitionUpdate=r=>{let{time:i,settings:{interpolator:o,startProps:n,endProps:s,duration:a,easing:c}}=r,l=c(i/a),f=o.interpolateProps(n,s,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 Ge(e.timeline),this.onViewStateChange=e.onViewStateChange||by,this.onStateChange=e.onStateChange||by}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 o=i;if(this.transition.inProgress){let{interruption:n,endProps:s}=this.transition.settings;o={...i,...n===gn.SNAP_TO_END?s:this.propsInTransition||i}}this._triggerTransition(o,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===gn.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(e,r):!0}_triggerTransition(e,r){let i=this.getControllerState(e),o=this.getControllerState(r).shortestPathFrom(i),n=r.transitionInterpolator,s=n.getDuration?n.getDuration(e,r):r.transitionDuration;if(s===0)return;let a=n.initializeProps(e,o);this.propsInTransition={};let c={duration:s,easing:r.transitionEasing||TP,interpolator:n,interruption:r.transitionInterruption||xP,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 $t=class{constructor(e){let{compare:r,extract:i,required:o}=e;this._propsToCompare=r,this._propsToExtract=i||r,this._requiredProps=o}arePropsEqual(e,r){for(let i of this._propsToCompare)if(!(i in e)||!(i in r)||!Pe(e[i],r[i]))return!1;return!0}initializeProps(e,r){let i={},o={};for(let n of this._propsToExtract)(n in e||n in r)&&(i[n]=e[n],o[n]=r[n]);return this._checkRequiredProps(i),this._checkRequiredProps(o),{start:i,end:o}}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 Fa=Math.PI/180,Ty=180/Math.PI,Ua=6370972,Ht=256;function AP(){let t=Ht/Ua,e=Math.PI/180*Ht;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 ka=class extends Se{constructor(e={}){let{longitude:r=0,zoom:i=0,nearZMultiplier:o=.5,farZMultiplier:n=1,resolution:s=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=Ut(f):f=Ft(l);let h=Math.pow(2,i-bt(a)),u=e.nearZ??o,d=e.farZ??(l+Ht*2*h/c)*n,p=new z().lookAt({eye:[0,-l,0],up:[0,0,1]});p.rotateX(a*Fa),p.rotateZ(-r*Fa),p.scale(h/c),super({...e,height:c,viewMatrix:p,longitude:r,latitude:a,zoom:i,distanceScales:AP(),fovy:f,focalDistance:l,near:u,far:d}),this.scale=h,this.latitude=a,this.longitude=r,this.fovy=f,this.resolution=s}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),o=this.unproject([this.width/2,0],r),n=this.unproject([this.width,this.height/2],r),s=this.unproject([this.width/2,this.height],r);return n[0]<this.longitude&&(n[0]+=360),i[0]>this.longitude&&(i[0]-=360),[Math.min(i[0],n[0],o[0],s[0]),Math.min(i[1],n[1],o[1],s[1]),Math.max(i[0],n[0],o[0],s[0]),Math.max(i[1],n[1],o[1],s[1])]}unproject(e,{topLeft:r=!0,targetZ:i}={}){let[o,n,s]=e,a=r?n:this.height-n,{pixelUnprojectionMatrix:c}=this,l;if(Number.isFinite(s))l=Pu(c,[o,a,s,1]);else{let d=Pu(c,[o,a,-1,1]),p=Pu(c,[o,a,1,1]),g=((i||0)/Ua+1)*Ht,m=pe.sqrLen(pe.sub([],d,p)),_=pe.sqrLen(d),b=pe.sqrLen(p),T=4*((4*_*b-(m-_-b)**2)/16)/m,S=Math.sqrt(_-T),A=Math.sqrt(Math.max(0,g*g-T)),w=(S-A)/Math.sqrt(m);l=pe.lerp([],d,p,w)}let[f,h,u]=this.unprojectPosition(l);return Number.isFinite(s)?[f,h,u]:Number.isFinite(i)?[f,h,i]:[f,h]}projectPosition(e){let[r,i,o=0]=e,n=r*Fa,s=i*Fa,a=Math.cos(s),c=(o/Ua+1)*Ht;return[Math.sin(n)*a*c,-Math.cos(n)*a*c,Math.sin(s)*c]}unprojectPosition(e){let[r,i,o]=e,n=pe.len(e),s=Math.asin(o/n),c=Math.atan2(r,-i)*Ty,l=s*Ty,f=(n/Ht-1)*Ua;return[c,l,f]}projectFlat(e){return e}unprojectFlat(e){return e}panByPosition([e,r,i],o,n){let a=.25/Math.pow(2,this.zoom-bt(this.latitude)),c=e+a*(n[0]-o[0]),l=r-a*(n[1]-o[1]);l=Math.max(Math.min(l,me),-me);let f={longitude:c,latitude:l,zoom:i-bt(r)};return f.zoom+=bt(f.latitude),f}};ka.displayName="GlobeViewport";var $i=ka;function bt(t){let e=Math.PI*Math.cos(t*Math.PI/180);return Math.log2(e)}function Pu(t,e){let r=xe.transformMat4([],e,t);return xe.scale(r,r,1/r[3]),r}var SP=["longitude","latitude","zoom","bearing","pitch"],EP=["longitude","latitude","zoom"],ae=class extends $t{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:SP,required:EP},super(i.transitionProps),this.opts=i}initializeProps(e,r){let i=super.initializeProps(e,r),{makeViewport:o,around:n}=this.opts;if(o&&n)if(o(e)instanceof $i)L.warn("around not supported in GlobeView")();else{let a=o(e),c=o(r),l=a.unproject(n);i.start.around=n,Object.assign(i.end,{around:c.project(l),aroundPosition:l,width:r.width,height:r.height})}return i}interpolateProps(e,r,i){let o={};for(let n of this._propsToExtract)o[n]=Ot(e[n]||0,r[n]||0,i);if(r.aroundPosition&&this.opts.makeViewport){let n=this.opts.makeViewport({...r,...o});Object.assign(o,n.panByPosition(r.aroundPosition,Ot(e.around,r.around,i)))}return o}};var Xt={transitionDuration:0},wP=300,Va=t=>1-(1-t)*(1-t),Hi={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],KEYBOARD:["keydown"]},$r={},be=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 mn({...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:o}=e;return[o.x-r,o.y-i]}isPointInBounds(e,r){let{width:i,height:o}=this.props;if(r&&r.handled)return!1;let n=e[0]>=0&&e[0]<=i&&e[1]>=0&&e[1]<=o;return n&&r&&r.stopPropagation(),n}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?wP:0;let{scrollZoom:o=!0,dragPan:n=!0,dragRotate:s=!0,doubleClickZoom:a=!0,touchZoom:c=!0,touchRotate:l=!1,keyboard:f=!0}=e,h=Boolean(this.onViewStateChange);if(this.toggleEvents(Hi.WHEEL,h&&o),this.toggleEvents(Hi.PAN,h),this.toggleEvents(Hi.PINCH,h&&(c||l)),this.toggleEvents(Hi.MULTI_PAN,h&&l),this.toggleEvents(Hi.DOUBLE_CLICK,h&&a),this.toggleEvents(Hi.KEYBOARD,h&&f),this.scrollZoom=o,this.dragPan=n,this.dragRotate=s,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=>!Z(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 o={...e.getViewportProps(),...r},n=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(i),n){let s=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:o,interactionState:this._interactionState,oldViewState:s,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 o=this.controllerState[i?"panStart":"rotateStart"]({pos:r});return this._panMove=i,this.updateViewport(o,Xt,{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,Xt,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){let{inertia:r}=this;if(this.dragPan&&r&&e.velocity){let i=this.getCenter(e),o=[i[0]+e.velocityX*r/2,i[1]+e.velocityY*r/2],n=this.controllerState.pan({pos:o}).panEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:Va},{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,Xt,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){let{inertia:r}=this;if(this.dragRotate&&r&&e.velocity){let i=this.getCenter(e),o=[i[0]+e.velocityX*r/2,i[1]+e.velocityY*r/2],n=this.controllerState.rotate({pos:o}).rotateEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:Va},{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:o=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:n}=e,s=2/(1+Math.exp(-Math.abs(n*i)));n<0&&s!==0&&(s=1/s);let a=o?{...this._getTransitionProps({around:r}),transitionDuration:250}:Xt,c=this.controllerState.zoom({pos:r,scale:s});return this.updateViewport(c,a,{isZooming:!0,isPanning:!0}),o||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,Xt,{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,Xt,{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),o=[i[0],i[1]+=e.velocityY*r/2],n=this.controllerState.rotate({pos:o});this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:Va},{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 $r._startPinchRotation=e.rotation,$r._lastPinchEvent=e,this.updateViewport(i,Xt,{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,o=this.getCenter(e);r=r.zoom({pos:o,scale:i})}if(this.touchRotate){let{rotation:i}=e;r=r.rotate({deltaAngleX:$r._startPinchRotation-i})}return this.updateViewport(r,Xt,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),$r._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:i}=$r;if(this.touchZoom&&r&&i&&e.scale!==i.scale){let o=this.getCenter(e),n=this.controllerState.rotateEnd(),s=Math.log2(e.scale),a=(s-Math.log2(i.scale))/(e.deltaTime-i.deltaTime),c=Math.pow(2,s+a*r/2);n=n.zoom({pos:o,scale:c}).zoomEnd(),this.updateViewport(n,{...this._getTransitionProps({around:o}),transitionDuration:r,transitionEasing:Va},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let o=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(o,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return $r._startPinchRotation=null,$r._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),o=this.controllerState.zoom({pos:r,scale:i?.5:2});return this.updateViewport(o,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:o,rotateSpeedX:n,rotateSpeedY:s}=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(n),l.isRotating=!0):(c=a.moveLeft(o),l.isPanning=!0);break;case"ArrowRight":r?(c=a.rotateRight(n),l.isRotating=!0):(c=a.moveRight(o),l.isPanning=!0);break;case"ArrowUp":r?(c=a.rotateUp(s),l.isRotating=!0):(c=a.moveUp(o),l.isPanning=!0);break;case"ArrowDown":r?(c=a.rotateDown(s),l.isRotating=!0):(c=a.moveDown(o),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?Xt:e?{...r,transitionInterpolator:new ae({...e,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var Qe=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 xy=5,RP=1.2,Ay=512,Sy=[[-1/0,-90],[1/0,90]];function za([t,e]){if(Math.abs(e)>90&&(e=Math.sign(e)*90),Number.isFinite(t)){let[i,o]=Ae([t,e]);return[i,U(o,0,Ay)]}let[,r]=Ae([0,e]);return[t,U(r,0,Ay)]}var _n=class extends Qe{constructor(e){let{width:r,height:i,latitude:o,longitude:n,zoom:s,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:b,startBearing:y,startPitch:T,startZoom:S,normalize:A=!0}=e;Y(Number.isFinite(n)),Y(Number.isFinite(o)),Y(Number.isFinite(s));let w=e.maxBounds||(A?Sy:null);super({width:r,height:i,latitude:o,longitude:n,zoom:s,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:b,startBearing:y,startPitch:T,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 n=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(n)}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:o,startRotateLngLat:n,startBearing:s,startPitch:a}=this.getState();if(!o||s===void 0||a===void 0)return this;let c;if(e?c=this._getNewRotation(e,o,a,s):c={bearing:s+r,pitch:a+i},n){let l=this.makeViewport({...this.getViewportProps(),...c}),f="panByPosition3D"in l?"panByPosition3D":"panByPosition";return this._getUpdatedState({...c,...l[f](n,o)})}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:o,startZoomLngLat:n}=this.getState();if(n||(o=this.getViewportProps().zoom,n=this._unproject(r)||this._unproject(e)),!n)return this;let s=this._constrainZoom(o+Math.log2(i)),a=this.makeViewport({...this.getViewportProps(),zoom:s});return this._getUpdatedState({zoom:s,...a.panByPosition(n,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:o,longitude:n}=i;return Math.abs(o-r.bearing)>180&&(i.bearing=o<0?o+360:o-360),Math.abs(n-r.longitude)>180&&(i.longitude=n<0?n+360:n-360),i}applyConstraints(e){let{maxPitch:r,minPitch:i,pitch:o,longitude:n,bearing:s,normalize:a,maxBounds:c}=e;if(a&&((n<-180||n>180)&&(e.longitude=_t(n+180,360)-180),(s<-180||s>180)&&(e.bearing=_t(s+180,360)-180)),e.pitch=U(o,i,r),e.zoom=this._constrainZoom(e.zoom,e),c){let l=za(c[0]),f=za(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=U(e.longitude,p,m),e.latitude=U(e.latitude,g,_)}return e}_constrainZoom(e,r){r||(r=this.getViewportProps());let{maxZoom:i,maxBounds:o}=r,n=o!==null&&r.width>0&&r.height>0,{minZoom:s}=r;if(n){let a=za(o[0]),c=za(o[1]),l=c[0]-a[0],f=c[1]-a[1];Number.isFinite(l)&&l>0&&(s=Math.max(s,Math.log2(r.width/l))),Number.isFinite(f)&&f>0&&(s=Math.max(s,Math.log2(r.height/f))),s>i&&(s=i)}return U(e,s,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,o){let n=e[0]-r[0],s=e[1]-r[1],a=e[1],c=r[1],{width:l,height:f}=this.getViewportProps(),h=n/l,u=0;s>0?Math.abs(f-c)>xy&&(u=s/(c-f)*RP):s<0&&c>xy&&(u=1-a/c),u=U(u,-1,1);let{minPitch:d,maxPitch:p}=this.getViewportProps(),g=o+180*h,m=i;return u>0?m=i+u*(p-i):u<0&&(m=i-u*(d-i)),{pitch:m,bearing:g}}},Yt=class extends be{constructor(){super(...arguments),this.ControllerState=_n,this.transition={transitionDuration:300,transitionInterpolator:new ae({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,o=this.pickPosition(r+e[0],i+e[1]);if(o&&o.coordinate&&o.coordinate.length>=3)return o.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:Sy),super.setProps(e)}updateViewport(e,r=null,i={}){let o=e.getState();i.isDragging&&o.startRotateLngLat?i={...i,rotationPivotPosition:o.startRotateLngLat}:i.isDragging===!1&&(i={...i,rotationPivotPosition:void 0}),super.updateViewport(e,r,i)}};var Wa=class extends ye{constructor(e={}){super(e)}getViewportType(){return yr}get ControllerType(){return Yt}};Wa.displayName="MapView";var ja=Wa;var PP=new _r;function vP(t,e){let r=t.order??1/0,i=e.order??1/0;return r-i}var yn=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(o=>vP(o,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&&(Z(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 o of this.effects)r[o.id]=o;let i=[];for(let o of e){let n=r[o.id],s=o;n&&n!==o?n.setProps?(n.setProps(o.props),s=n):n.cleanup(this._context):n||o.setup(this._context),i.push(s),delete r[o.id]}for(let o in r)r[o].cleanup(this._context);this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),e.some(o=>o instanceof _r)||this._resolvedEffects.push(PP),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 bn=class extends Ke{shouldDrawLayer(e){let{operation:r}=e.props;return r.includes("draw")||r.includes("terrain")}render(e){return this._render(e)}};var MP="deckRenderer.renderLayers",Hr=class{constructor(e,r={}){this.device=e,this.stats=r.stats,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new bn(e),this.pickLayersPass=new Vt(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 o=this.lastPostProcessEffect?this.renderBuffers[0]:i.target;this.lastPostProcessEffect&&(i.clearColor=[0,0,0,0],i.clearCanvas=!0);let n=r.render({...i,target:o}),s="stats"in n?n.stats:n;i.effects&&(this.lastPostProcessEffect&&(i.clearCanvas=e.clearCanvas===void 0?!0:e.clearCanvas),this._postRender(i.effects,i)),this.renderCount++,G(MP,this,s,e),this._updateStats(s)}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,o]=r;e.length===0&&[0,1].map(n=>{let s=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:i,height:o});e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${n}`,colorAttachments:[s]}))});for(let n of e)n.resize(r)}_postRender(e,r){let{renderBuffers:i}=this,o={...r,inputBuffer:i[0],swapBuffer:i[1]};for(let n of e)if(n.postRender){o.target=n.id===this.lastPostProcessEffect?r.target:void 0;let s=n.postRender(o);o.inputBuffer=s,o.swapBuffer=s===i[0]?i[1]:i[0]}}};F();var CP={pickedColor:null,pickedObjectIndex:-1};function vu({pickedColors:t,decodePickingColor:e,deviceX:r,deviceY:i,deviceRadius:o,deviceRect:n}){let{x:s,y:a,width:c,height:l}=n,f=o*o,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 b=m+s-r,y=b*b+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:s+m,pickedY:a+g}}L.error("Picked non-existent layer. Is picking buffer corrupt?")()}return CP}function Mu({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 n=t.slice(i,i+4),s=n.join(",");if(!r.has(s)){let a=e(n);a?r.set(s,{...a,color:n}):L.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function $a({pickInfo:t,viewports:e,pixelRatio:r,x:i,y:o,z:n}){let s=e[0];e.length>1&&(s=IP(t?.pickedViewports||e,{x:i,y:o}));let a;if(s){let c=[i-s.x,o-s.y];n!==void 0&&(c[2]=n),a=s.unproject(c)}return{color:null,layer:null,viewport:s,index:-1,picked:!1,x:i,y:o,pixel:[i,o],coordinate:a,devicePixel:t&&"pickedX"in t?[t.pickedX,t.pickedY]:void 0,pixelRatio:r}}function Cu(t){let{pickInfo:e,lastPickedInfo:r,mode:i,layers:o}=t,{pickedColor:n,pickedLayer:s,pickedObjectIndex:a}=e,c=s?[s]:[];if(i==="hover"){let h=r.index,u=r.layerId,d=s?s.props.id:null;if(d!==u||a!==h){if(d!==u){let p=o.find(g=>g.props.id===u);p&&c.unshift(p)}r.layerId=d,r.index=a,r.info=null}}let l=$a(t),f=new Map;return f.set(null,l),c.forEach(h=>{let u={...l};h===s&&(u.color=n,u.index=a,u.picked=!0),u=Ha({layer:h,info:u,mode:i});let d=u.layer;h===s&&i==="hover"&&(r.info=u),f.set(d.id,u),i==="hover"&&d.updateAutoHighlight(u)}),f}function Ha({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 IP(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 Tn=class{constructor(e,r={}){this._pickable=!0,this.device=e,this.stats=r.stats,this.pickLayersPass=new Vt(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:o},n=this.lastPickedInfo.info){let s=n&&n.layer&&n.layer.id,a=n&&n.viewport&&n.viewport.id,c=s?i.find(u=>u.id===s):null,l=a&&o.find(u=>u.id===a)||o[0],f=l&&l.unproject([e-l.x,r-l.y]);return{...n,...{x:e,y:r,viewport:l,coordinate:f,layer:c}}}_resizeBuffer(){if(!this.pickingFBO){let r=this.device.createTexture({format:"rgba8unorm",width:1,height:1,usage:B.RENDER_ATTACHMENT|B.COPY_SRC});if(this.pickingFBO=this.device.createFramebuffer({colorAttachments:[r],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float")){let i=this.device.createTexture({format:"rgba32float",width:1,height:1,usage:B.RENDER_ATTACHMENT|B.COPY_SRC}),o=this.device.createFramebuffer({colorAttachments:[i],depthStencilAttachment:"depth16unorm"});this.depthFBO=o}}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:o,y:n,radius:s=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:$a({viewports:i,x:o,y:n,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([o,n],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],m=Math.round(s*u),{width:_,height:b}=this.pickingFBO,y=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceWidth:_,deviceHeight:b}),T={x:o-s,y:n-s,width:s*2+1,height:s*2+1},S,A=[],w=new Set;for(let P=0;P<a;P++){let R;if(y){let C=await this._drawAndSampleAsync({layers:d,views:r,viewports:i,onViewportActive:f,deviceRect:y,cullRect:T,effects:h,pass:`picking:${c}`});R=vu({...C,deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceRect:y})}else R={pickedColor:null,pickedObjectIndex:-1};let v,O=this._getDepthLayers(R,d,l);if(O.length>0){let{pickedColors:C}=await this._drawAndSampleAsync({layers:O,views:r,viewports:i,onViewportActive:f,deviceRect:{x:R.pickedX??g[0],y:R.pickedY??g[1],width:1,height:1},cullRect:T,effects:h,pass:`picking:${c}:z`},!0);C[3]&&(v=C[0])}R.pickedLayer&&P+1<a&&(w.add(R.pickedLayer),R.pickedLayer.disablePickingIndex(R.pickedObjectIndex)),S=Cu({pickInfo:R,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:i,x:o,y:n,z:v,pixelRatio:u});for(let C of S.values())C.layer&&A.push(C);if(!R.pickedColor)break}for(let P of w)P.restorePickingColors();return{result:A,emptyInfo:S.get(null)}}_pickClosestObject({layers:e,views:r,viewports:i,x:o,y:n,radius:s=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:$a({viewports:i,x:o,y:n,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([o,n],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],m=Math.round(s*u),{width:_,height:b}=this.pickingFBO,y=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceWidth:_,deviceHeight:b}),T={x:o-s,y:n-s,width:s*2+1,height:s*2+1},S,A=[],w=new Set;for(let P=0;P<a;P++){let R;if(y){let C=this._drawAndSample({layers:d,views:r,viewports:i,onViewportActive:f,deviceRect:y,cullRect:T,effects:h,pass:`picking:${c}`});R=vu({...C,deviceX:g[0],deviceY:g[1],deviceRadius:m,deviceRect:y})}else R={pickedColor:null,pickedObjectIndex:-1};let v,O=this._getDepthLayers(R,d,l);if(O.length>0){let{pickedColors:C}=this._drawAndSample({layers:O,views:r,viewports:i,onViewportActive:f,deviceRect:{x:R.pickedX??g[0],y:R.pickedY??g[1],width:1,height:1},cullRect:T,effects:h,pass:`picking:${c}:z`},!0);C[3]&&(v=C[0])}R.pickedLayer&&P+1<a&&(w.add(R.pickedLayer),R.pickedLayer.disablePickingIndex(R.pickedObjectIndex)),S=Cu({pickInfo:R,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:i,x:o,y:n,z:v,pixelRatio:u});for(let C of S.values())C.layer&&A.push(C);if(!R.pickedColor)break}for(let P of w)P.restorePickingColors();return{result:A,emptyInfo:S.get(null)}}async _pickVisibleObjectsAsync({layers:e,views:r,viewports:i,x:o,y:n,width:s=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([o,n],!0),g=p.x,m=p.y+p.height,_=this.device.canvasContext.cssToDevicePixels([o+s,n+a],!0),b=_.x+_.width,y=_.y,T={x:g,y,width:b-g,height:m-y},S=await this._drawAndSampleAsync({layers:u,views:r,viewports:i,onViewportActive:f,deviceRect:T,cullRect:{x:o,y:n,width:s,height:a},effects:h,pass:`picking:${c}`}),A=Mu(S),w=new Map,P=[],R=Number.isFinite(l);for(let v=0;v<A.length&&!(R&&P.length>=l);v++){let O=A[v],C={color:O.pickedColor,layer:null,index:O.pickedObjectIndex,picked:!0,x:o,y:n,pixelRatio:d};C=Ha({layer:O.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),P.push(C))}return P}_pickVisibleObjects({layers:e,views:r,viewports:i,x:o,y:n,width:s=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([o,n],!0),g=p.x,m=p.y+p.height,_=this.device.canvasContext.cssToDevicePixels([o+s,n+a],!0),b=_.x+_.width,y=_.y,T={x:g,y,width:b-g,height:m-y},S=this._drawAndSample({layers:u,views:r,viewports:i,onViewportActive:f,deviceRect:T,cullRect:{x:o,y:n,width:s,height:a},effects:h,pass:`picking:${c}`}),A=Mu(S),w=new Map,P=[],R=Number.isFinite(l);for(let v=0;v<A.length&&!(R&&P.length>=l);v++){let O=A[v],C={color:O.pickedColor,layer:null,index:O.pickedObjectIndex,picked:!0,x:o,y:n,pixelRatio:d};C=Ha({layer:O.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),P.push(C))}return P}async _drawAndSampleAsync({layers:e,views:r,viewports:i,onViewportActive:o,deviceRect:n,cullRect:s,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:e,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:o,pickingFBO:f,deviceRect:n,cullRect:s,effects:a,pass:c,pickZ:l,preRenderStats:{},isPicking:!0};for(let T of a)T.useInPicking&&(h.preRenderStats[T.id]=T.preRender(h));let{decodePickingColor:u,stats:d}=this.pickLayersPass.render(h);this._updateStats(d);let{x:p,y:g,width:m,height:_}=n,b=f.colorAttachments[0]?.texture;if(!b)throw new Error("Picking framebuffer color attachment is missing");let y=await this._readTextureDataAsync(b,{x:p,y:g,width:m,height:_},l?Float32Array:Uint8Array);if(!l){let T=!1;for(let S=3;S<y.length;S+=4)if(y[S]!==0){T=!0;break}!T&&y.length>0&&L.warn("Async pick readback returned only zero alpha values",{deviceRect:n,bytes:Array.from(y.subarray(0,Math.min(y.length,16)))})()}return{pickedColors:y,decodePickingColor:u}}async _readTextureDataAsync(e,r,i){let{width:o,height:n}=r,s=e.computeMemoryLayout(r),a=this.device.createBuffer({byteLength:s.byteLength,usage:I.COPY_DST|I.MAP_READ});try{e.readBuffer(r,a);let c=await a.readAsync(0,s.byteLength),l=i.BYTES_PER_ELEMENT;if(s.bytesPerRow%l!==0)throw new Error(`Texture readback row stride ${s.bytesPerRow} is not aligned to ${l}-byte elements.`);let f=new i(c.buffer,c.byteOffset,s.byteLength/l),h=o*4,u=s.bytesPerRow/l;if(u<h)throw new Error(`Texture readback row stride ${u} is smaller than packed row length ${h}.`);let d=new i(o*n*4);for(let p=0;p<n;p++){let g=p*u;d.set(f.subarray(g,g+h),p*h)}return d}finally{a.destroy()}}_drawAndSample({layers:e,views:r,viewports:i,onViewportActive:o,deviceRect:n,cullRect:s,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:e,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:o,pickingFBO:f,deviceRect:n,cullRect:s,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:_}=n,b=new(l?Float32Array:Uint8Array)(m*_*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:p,sourceY:g,sourceWidth:m,sourceHeight:_,target:b}),{pickedColors:b,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:o}=e,n=o?.state?.terrainDrawMode==="drape";return o&&!n?[o]:r.filter(s=>s.props.operation.includes("terrain"))}_getPickingRect({deviceX:e,deviceY:r,deviceRadius:i,deviceWidth:o,deviceHeight:n}){let s=Math.max(0,e-i),a=Math.max(0,r-i),c=Math.min(o,e+i+1)-s,l=Math.min(n,r+i+1)-a;return c<=0||l<=0?null:{x:s,y:a,width:c,height:l}}};var OP={"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}},NP="top-left",Ey="root",Xa=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&&!Z(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((o,n)=>(o[n.id]=n,o),{});for(let o of this.getWidgets()){let{viewId:n}=o;if(n){let s=i[n];s&&(o.onViewportChange&&o.onViewportChange(s),o.onRedraw?.({viewports:[s],layers:r}))}else{if(o.onViewportChange)for(let s of e)o.onViewportChange(s);o.onRedraw?.({viewports:e,layers:r})}}this.lastViewports=i,this._updateContainers()}onHover(e,r){for(let i of this.getWidgets()){let{viewId:o}=i;(!o||o===e.viewport?.id)&&i.onHover?.(e,r)}}onEvent(e,r){let i=Ni[r.type];if(i)for(let o of this.getWidgets()){let{viewId:n}=o;(!n||n===e.viewport?.id)&&o[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 o=r[i.id];o?o.viewId!==i.viewId||o.placement!==i.placement?(this._removeWidget(o),this._addWidget(i)):i!==o&&(o.setProps(i.props),i=o):this._addWidget(i),r[i.id]=null,this.resolvedWidgets.push(i)}for(let i in r){let o=r[i];o&&this._removeWidget(o)}this.widgets=e}_addWidget(e){let{viewId:r=null,placement:i=NP}=e,o=e.props._container??r;e.widgetManager=this,e.deck=this.deck,e.rootElement=e._onAdd({deck:this.deck,viewId:r}),e.rootElement&&this._getContainer(o,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||Ey,o=this.containers[i];o||(o=document.createElement("div"),o.style.pointerEvents="none",o.style.position="absolute",o.style.overflow="hidden",this.parentElement?.append(o),this.containers[i]=o);let n=o.querySelector(`.${r}`);return n||(n=globalThis.document.createElement("div"),n.className=r,n.style.position="absolute",n.style.zIndex="2",Object.assign(n.style,OP[r]),o.append(n)),n}_updateContainers(){let e=this.deck.width,r=this.deck.height;for(let i in this.containers){let o=this.lastViewports[i]||null,n=i===Ey||o,s=this.containers[i];n?(s.style.display="block",s.style.left=`${o?o.x:0}px`,s.style.top=`${o?o.y:0}px`,s.style.width=`${o?o.width:e}px`,s.style.height=`${o?o.height:r}px`):s.style.display="none"}}};function xn(t,e){e&&Object.entries(e).map(([r,i])=>{r.startsWith("--")?t.style.setProperty(r,i):t.style[r]=i})}function Ya(t,e){e&&Object.keys(e).map(r=>{r.startsWith("--")?t.style.removeProperty(r):t.style[r]=""})}var xr=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&&!Z(r.style,e.style,1)&&(Ya(i,r.style),xn(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)),xn(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){}};xr.defaultProps={id:"widget",style:{},_container:null,className:""};var DP={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},An=class extends xr{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,DP),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 o=i(e);this.setTooltip(o,e.x,e.y)}setTooltip(e,r,i){let o=this.rootElement;if(o){if(typeof e=="string")o.innerText=e;else if(e)e.text&&(o.innerText=e.text),e.html&&(o.innerHTML=e.html),e.className&&(o.className=e.className);else{this.isVisible=!1,o.style.display="none";return}this.isVisible=!0,o.style.display="block",o.style.transform=`translate(${r}px, ${i}px)`,e&&typeof e=="object"&&"style"in e&&Object.assign(o.style,e.style)}}};An.defaultProps={...xr.defaultProps};F();Pc();to();function Sr(){}var $v=({isDragging:t})=>t?"grabbing":"grab",Kb={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,pickAsync:"auto",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:Sr,onWebGLInitialized:Sr,onResize:Sr,onViewStateChange:Sr,onInteractionStateChange:Sr,onBeforeRender:Sr,onAfterRender:Sr,onLoad:Sr,onError:t=>L.error(t.message,t.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:$v,getTooltip:null,debug:!1,drawPickingColors:!1},In=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 Ne({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._hoverPickSequence=0,this._pointerDownPickSequence=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null,unproject3D:!1},this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=null,this._onPointerMove=i=>{let{_pickRequest:o}=this;if(i.type==="pointerleave")o.x=-1,o.y=-1,o.radius=0;else{if(i.leftButton||i.rightButton)return;{let n=i.offsetCenter;if(!n)return;o.x=n.x,o.y=n.y,o.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:o.x,y:o.y}),o.event=i},this._onEvent=i=>{let o=Ni[i.type],n=i.offsetCenter;if(!o||!n||!this.layerManager)return;let s=this.layerManager.getLayers(),a=this._getInternalPickingMode();if(!a)return;if(a==="sync"){let l=i.type==="click"&&this._shouldUnproject3D(s)?this._getFirstPickedInfo(this._pickPointSync(this._getPointPickOptions(n.x,n.y,{unproject3D:!0},s))):this._getLastPointerDownPickingInfo(n.x,n.y,s);this._dispatchPickingEvent(l,i);return}(this._lastPointerDownInfoPromise||Promise.resolve(this._getLastPointerDownPickingInfo(n.x,n.y,s))).then(l=>{this._dispatchPickingEvent(l,i)}).catch(l=>this.props.onError?.(l))},this._onPointerDown=i=>{let o=i.offsetCenter;if(!o)return;let n=this._getInternalPickingMode();if(!n)return;let s=this.layerManager?.getLayers()||[],a=++this._pointerDownPickSequence;if(n==="sync"){let l=this._pickPointSync({x:o.x,y:o.y,radius:this.props.pickingRadius}),f=this._getFirstPickedInfo(l);this._lastPointerDownInfo=f,this._lastPointerDownInfoPromise=Promise.resolve(f);return}let c=this._pickPointAsync(this._getPointPickOptions(o.x,o.y,{},s)).then(l=>this._getFirstPickedInfo(l)).then(l=>(a===this._pointerDownPickSequence&&(this._lastPointerDownInfo=l),l)).catch(l=>{this.props.onError?.(l);let f=this.deckPicker&&this.viewManager?this._getLastPointerDownPickingInfo(o.x,o.y,s):{};return a===this._pointerDownPickSequence&&(this._lastPointerDownInfo=f),f});this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=c},this.props={...Kb,...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=Cn.attach(e.gl,{_cacheShaders:!0,_cachePipelines:!0,...this.props.deviceProps,onResize:(o,n)=>{let{width:s,height:a}=o.canvas;o.setDrawingBufferSize(s,a),this._needsRedraw="Canvas resized",i?.(o,n)}})}r||(r=this._createDevice(e)),this.animationLoop=this._createAnimationLoop(r,e),this.setProps(e),e._typedArrayManagerProps&&Ze.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._hoverPickSequence++,this._pointerDownPickSequence++,this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=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&&!Z(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),Object.assign(this.props,e),this._validateInternalPickingMode(),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),o=this.layerManager.needsRedraw(e),n=this.effectManager.needsRedraw(e),s=this.deckRenderer.needsRedraw(e);return r=r||i||o||n||s,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}async pickObjectAsync(e){let r=(await this._pickAsync("pickObjectAsync","pickObject Time",e)).result;return r.length?r[0]:null}async pickObjectsAsync(e){return await this._pickAsync("pickObjectsAsync","pickObjects Time",e)}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._getInternalPickingMode()!=="sync"?null: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)}_resolveInternalPickingMode(){let{pickAsync:e}=this.props,r=this.device?.type||this.props.deviceProps?.type;if(e==="auto")return r==="webgpu"?"async":"sync";if(e==="sync"&&r==="webgpu")throw new Error('`pickAsync: "sync"` is not supported when Deck is using a WebGPU device.');return e}_getInternalPickingMode(){try{return this._resolveInternalPickingMode()}catch(e){return this.props.onError?.(e),null}}_validateInternalPickingMode(){this._getInternalPickingMode()}_getFirstPickedInfo({result:e,emptyInfo:r}){return e[0]||r}_shouldUnproject3D(e=this.layerManager?.getLayers()||[]){return e.some(r=>r.props.pickable==="3d")}_getPointPickOptions(e,r,i={},o=this.layerManager?.getLayers()||[]){return{x:e,y:r,radius:this.props.pickingRadius,unproject3D:this._shouldUnproject3D(o),...i}}_pickPointSync(e){return this._pick("pickObject","pickObject Time",e)}_pickPointAsync(e){return this._pickAsync("pickObjectAsync","pickObject Time",e)}_getLastPointerDownPickingInfo(e,r,i=this.layerManager?.getLayers()||[]){return this.deckPicker.getLastPickedObject({x:e,y:r,layers:i,viewports:this.getViewports({x:e,y:r})},this._lastPointerDownInfo)}_applyHoverCallbacks({result:e,emptyInfo:r},i){if(!this.widgetManager)return;this.cursorState.isHovering=e.length>0;let o=r,n=!1;for(let s of e)o=s,n=s.layer?.onHover(s,i)||n;n||(this.props.onHover?.(o,i),this.widgetManager.onHover(o,i))}_dispatchPickingEvent(e,r){if(!this.layerManager||!this.widgetManager)return;let i=Ni[r.type];if(!i)return;let{layer:o}=e,n=o&&(o[i]||o.props[i]),s=this.props[i],a=!1;n&&(a=n.call(o,e,r)),a||(s?.(e,r),this.widgetManager.onEvent(e,r))}_pickAsync(e,r,i){Y(this.deckPicker);let{stats:o}=this;o.get("Pick Count").incrementCount(),o.get(r).timeStart();let n=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 o.get(r).timeEnd(),n}_pick(e,r,i){Y(this.deckPicker);let{stats:o}=this;o.get("Pick Count").incrementCount(),o.get(r).timeStart();let n=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 o.get(r).timeEnd(),n}_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 o=Number.isFinite(r)?`${r}px`:r;this.canvas.style.width=o}if(i||i===0){let o=Number.isFinite(i)?`${i}px`:i;this.canvas.style.position=e.style?.position||"absolute",this.canvas.style.height=o}}_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:o}=r;return new yi({device:e,autoResizeDrawingBuffer:!i,autoResizeViewport:!1,onInitialize:n=>this._setDevice(n.device),onRender:this._onRenderFrame.bind(this),onError:o})}_createDevice(e){let r=this.props.deviceProps?.createCanvasContext,i=typeof r=="object"?r:void 0,o={adapters:[],_cacheShaders:!0,_cachePipelines:!0,...e.deviceProps};o.adapters.includes(Cn)||o.adapters.push(Cn);let n={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0},s=this.props.deviceProps?.onResize;return Qt.createDevice({_reuseDevices:!0,type:"webgl",...o,createCanvasContext:{...n,...i,canvas:this._createCanvas(e),useDevicePixels:this.props.useDevicePixels,autoResize:!0},onResize:(a,c)=>{this._needsRedraw="Canvas resized",s?.(a,c)}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:e}=this.props,r=Array.isArray(e)?e:e?[e]:[new ja({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(){let{_pickRequest:e}=this;if(e.event){let r=e.event,i=this.layerManager?.getLayers()||[],o=this._getPointPickOptions(e.x,e.y,{radius:e.radius,mode:e.mode},i),n=this._getInternalPickingMode(),s=++this._hoverPickSequence;if(e.event=null,!n)return;if(n==="sync"){this._applyHoverCallbacks(this._pickPointSync(o),r);return}this._pickPointAsync(o).then(({result:a,emptyInfo:c})=>{s===this._hoverPickSequence&&this._applyHoverCallbacks({result:a,emptyInfo:c},r)}).catch(a=>this.props.onError?.(a))}}_updateCursor(){let e=this.props.parent||this.canvas;e&&(e.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(e){if(this.device=e,this._validateInternalPickingMode(),!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 Mr;r.play(),this.animationLoop.attachTimeline(r);let i=this.props.parent?.querySelector(".deck-events-root")||this.canvas;this.eventManager=new Qo(i,{touchAction:this.props.touchAction,recognizers:Object.keys(uu).map(s=>{let[a,c,l,f]=uu[s],h=this.props.eventRecognizerOptions?.[s],u={...c,...h,event:s};return{recognizer:new a(u),recognizeWith:l,requestFailure:f}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let s in Ni)this.eventManager.on(s,this._onEvent);this.viewManager=new pn({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 o=this.viewManager.getViewports()[0];this.layerManager=new jr(this.device,{deck:this,stats:this.stats,viewport:o,timeline:r}),this.effectManager=new yn({deck:this,device:this.device}),this.deckRenderer=new Hr(this.device,{stats:this.stats}),this.deckPicker=new Tn(this.device,{stats:this.stats});let n=this.props.parent?.querySelector(".deck-widgets-root")||this.canvas?.parentElement;this.widgetManager=new Xa({deck:this,parentElement:n}),this.widgetManager.addDefault(new An),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(e,r){let{device:i,gl:o}=this.layerManager.context;this.props.onBeforeRender({device:i,gl:o});let n={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...r};this.deckRenderer?.renderLayers(n),n.pass==="screen"&&this.widgetManager.onRedraw({viewports:n.viewports,layers:n.layers}),this.props.onAfterRender({device:i,gl:o})}_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._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=Qt.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}};In.defaultProps=Kb;In.VERSION=ha;var Ic=In;F();F();function Zb(t){switch(t){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return po(t)}}var qb=ue.getDataType.bind(ue);function On(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 Er(t){return t.stride||t.size*t.bytesPerElement}function Gb(t,e){return t.type===e.type&&t.size===e.size&&Er(t)===Er(e)&&(t.offset||0)===(e.offset||0)}function id(t,e){e.offset&&L.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let r=Er(t),i=e.vertexOffset!==void 0?e.vertexOffset:t.vertexOffset||0,o=e.elementOffset||0,n=i*r+o*t.bytesPerElement+(t.offset||0);return{...e,offset:n,stride:r}}function Hv(t,e){let r=id(t,e);return{high:r,low:{...r,offset:r.offset+t.size*4}}}var Nn=class{constructor(e,r,i){this._buffer=null,this.device=e,this.id=r.id||"",this.size=r.size||1;let o=r.logicalType||r.type,n=o==="float64",{defaultValue:s}=r;s=Number.isFinite(s)?[s]:s||new Array(this.size).fill(0);let a;n?a="float32":!o&&r.isIndexed?a="uint32":a=o||"float32";let c=Zb(o||a);this.doublePrecision=n,n&&r.fp64===!1&&(c=Float32Array),this.value=null,this.settings={...r,defaultType:c,defaultValue:s,logicalType:o,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*Er(e):0}get numInstances(){return this.state.numInstances}set numInstances(e){this.state.numInstances=e}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),Ze.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 o=this.value;if(r){let n=id(this.getAccessor(),r),s=n.offset/o.BYTES_PER_ELEMENT,a=n.size||this.size;i[e]=o.subarray(s,s+a)}else i[e]=o}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(),o=[],n={name:this.id,byteStride:Er(i)};if(this.doublePrecision){let s=Hv(i,r||{});o.push(On(e,{...i,...s.high},this.device.type),On(`${e}64Low`,{...i,...s.low},this.device.type))}else if(r){let s=id(i,r);o.push(On(e,{...i,...s},this.device.type))}else o.push(On(e,i,this.device.type));return n.attributes=o.filter(Boolean),n}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:o}=this,n=i*o;if(r&&n&&r.length>=n){let s=new Array(o).fill(1/0),a=new Array(o).fill(-1/0);for(let c=0;c<n;)for(let l=0;l<o;l++){let f=r[c++];f<s[l]&&(s[l]=f),f>a[l]&&(a[l]=f)}e=[s,a]}}return this.state.bounds=e,e}setData(e){let{state:r}=this,i;ArrayBuffer.isView(e)?i={value:e}:e instanceof I?i={buffer:e}:i=e;let o={...this.settings,...i};if(ArrayBuffer.isView(i.value)){if(!i.type)if(this.doublePrecision&&i.value instanceof Float64Array)o.type="float32";else{let s=qb(i.value);o.type=o.normalized?s.replace("int","norm"):s}o.bytesPerElement=i.value.BYTES_PER_ELEMENT,o.stride=Er(o)}if(r.bounds=null,i.constant){let n=i.value;if(n=this._normalizeValue(n,[],0),this.settings.normalized&&(n=this.normalizeConstant(n)),!(!r.constant||!this._areValuesEqual(n,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=ArrayBuffer.isView(n)?n:new Float32Array(n)}else if(i.buffer){let n=i.buffer;r.externalBuffer=n,r.constant=!1,this.value=i.value||null}else if(i.value){this._checkExternalBuffer(i);let n=i.value;r.externalBuffer=null,r.constant=!1,this.value=n;let{buffer:s}=this,a=Er(o),c=(o.vertexOffset||0)*a;if(this.doublePrecision&&n instanceof Float64Array&&(n=Ia(n,o)),this.settings.isIndexed){let f=this.settings.defaultType;n.constructor!==f&&(n=new f(n))}let l=n.byteLength+c+a*2;(!s||s.byteLength<l)&&(s=this._createBuffer(l)),s.write(n,c)}return this.setAccessor(o),!0}updateSubBuffer(e={}){this.state.bounds=null;let r=this.value,{startOffset:i=0,endOffset:o}=e;this.buffer.write(this.doublePrecision&&r instanceof Float64Array?Ia(r,{size:this.size,startIndex:i,endIndex:o}):r.subarray(i,o),i*r.BYTES_PER_ELEMENT+this.byteOffset)}allocate(e,r=!1){let{state:i}=this,o=i.allocatedValue,n=Ze.allocate(o,e+1,{size:this.size,type:this.settings.defaultType,copy:r});this.value=n;let{byteOffset:s}=this,{buffer:a}=this;return(!a||a.byteLength<n.byteLength+s)&&(a=this._createBuffer(n.byteLength+s),r&&o&&a.write(o instanceof Float64Array?Ia(o,this):o,s)),i.allocatedValue=n,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,o=!1;if(this.doublePrecision&&(o=r.BYTES_PER_ELEMENT<4),o)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:o,size:n}=this.settings;if(Number.isFinite(e))return r[i]=e,r;if(!e){let s=n;for(;--s>=0;)r[i+s]=o[s];return r}switch(n){case 4:r[i+3]=Number.isFinite(e[3])?e[3]:o[3];case 3:r[i+2]=Number.isFinite(e[2])?e[2]:o[2];case 2:r[i+1]=Number.isFinite(e[1])?e[1]:o[1];case 1:r[i+0]=Number.isFinite(e[0])?e[0]:o[0];break;default:let s=n;for(;--s>=0;)r[i+s]=Number.isFinite(e[s])?e[s]:o[s]}return r}_areValuesEqual(e,r){if(!e||!r)return!1;let{size:i}=this;for(let o=0;o<i;o++)if(e[o]!==r[o])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?I.INDEX:I.VERTEX)|I.COPY_DST,indexType:r?i:void 0,byteLength:e}),this._buffer}};var Qb=[],Jb=[];function Gi(t,e=0,r=1/0){let i=Qb,o={index:-1,data:t,target:[]};return t?typeof t[Symbol.iterator]=="function"?i=t:t.length>0&&(Jb.length=t.length,i=Jb):i=Qb,(e>0||Number.isFinite(r))&&(i=(Array.isArray(i)?i:Array.from(i)).slice(e,r),o.index=e-1),{iterable:i,objectInfo:o}}function Oc(t){return t&&t[Symbol.asyncIterator]}function Nc(t,e){let{size:r,stride:i,offset:o,startIndices:n,nested:s}=e,a=t.BYTES_PER_ELEMENT,c=i?i/a:r,l=o?o/a:0,f=Math.floor((t.length-l)/c);return(h,{index:u,target:d})=>{if(!n){let _=u*c+l;for(let b=0;b<r;b++)d[b]=t[_+b];return d}let p=n[u],g=n[u+1]||f,m;if(s){m=new Array(g-p);for(let _=p;_<g;_++){let b=_*c+l;d=new Array(r);for(let y=0;y<r;y++)d[y]=t[b+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 b=p;b<g;b++){let y=b*c+l;for(let T=0;T<r;T++)m[_++]=t[y+T]}}return m}}var e0=[],Dn=[[0,1/0]];function t0(t,e){if(t===Dn||(e[0]<0&&(e[0]=0),e[0]>=e[1]))return t;let r=[],i=t.length,o=0;for(let n=0;n<i;n++){let s=t[n];s[1]<e[0]?(r.push(s),o=n+1):s[0]>e[1]?r.push(s):e=[Math.min(s[0],e[0]),Math.max(s[1],e[1])]}return r.splice(o,0,e),r}var Yv={interpolation:{duration:0,easing:t=>t},spring:{stiffness:.05,damping:.5}};function Dc(t,e){if(!t)return null;Number.isFinite(t)&&(t={type:"interpolation",duration:t});let r=t.type||"interpolation";return{...Yv[r],...e,...t,type:r}}var Kt=class extends Nn{constructor(e,r){super(e,r,{startIndices:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:Dn}),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=!Gb(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,o=Array.isArray(r)?e[r.find(n=>e[n])]:e[r];return Dc(o,i)}setNeedsUpdate(e=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||e,this.setNeedsRedraw(e),r){let{startRow:i=0,endRow:o=1/0}=r;this.state.updateRanges=t0(this.state.updateRanges,[i,o])}else this.state.updateRanges=Dn}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=e0}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!==Dn),!0):!1}updateBuffer({numInstances:e,data:r,props:i,context:o}){if(!this.needsUpdate())return!1;let{state:{updateRanges:n},settings:{update:s,noAlloc:a}}=this,c=!0;if(s){for(let[l,f]of n)s.call(o,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 n){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 s=this._normalizeValue(r,[],0);this._areValuesEqual(s,this.value)||this.setNeedsUpdate("WebGPU constant updated")}return!1}let o=this.settings.transform&&e?this.settings.transform.call(e,r):r;return this.setData({constant:!0,value:o})&&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:o}=this;if(!e)return i.binaryValue=null,i.binaryAccessor=null,!1;if(o.noAlloc)return!1;if(i.binaryValue===e)return this.clearNeedsUpdate(),!0;if(i.binaryValue=e,this.setNeedsRedraw(),o.transform||r!==this.startIndices){ArrayBuffer.isView(e)&&(e={value:e});let s=e;Y(ArrayBuffer.isView(s.value),`invalid ${o.accessor}`);let a=Boolean(s.size)&&s.size!==this.size;return i.binaryAccessor=Nc(s.value,{size:s.size||this.size,stride:s.stride,offset:s.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:o}=this.settings;if(o==="dynamic"?i.stepMode=e?e.isInstanced?"instance":"vertex":"instance":i.stepMode=o??"vertex",!r)return i;for(let n in r){let s=super._getBufferLayout(n,r[n]);i.attributes.push(...s.attributes)}return i}_autoUpdater(e,{data:r,startRow:i,endRow:o,props:n,numInstances:s}){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:n[u]);typeof p!="function"&&typeof u=="string"&&(p=()=>n[u]),Y(typeof p=="function",`accessor "${u}" is not a function`);let g=e.getVertexOffset(i),{iterable:m,objectInfo:_}=Gi(r,i,o);for(let b of m){_.index++;let y=p(b,_);if(d&&(y=d.call(this,y)),h){let T=(_.index<h.length-1?h[_.index+1]:s)-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),La({target:l,source:_.target,start:g,count:T}));g+=T*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 od(t){let{source:e,target:r,start:i=0,size:o,getData:n}=t,s=t.end||r.length,a=e.length,c=s-i;if(a>c){r.set(e.subarray(0,c),i);return}if(r.set(e,i),!n)return;let l=a;for(;l<c;){let f=n(l,e);for(let h=0;h<o;h++)r[i+l]=f[h]||0,l++}}function r0({source:t,target:e,size:r,getData:i,sourceStartIndices:o,targetStartIndices:n}){if(!o||!n)return od({source:t,target:e,size:r,getData:i}),e;let s=0,a=0,c=i&&((f,h)=>i(f+a,h)),l=Math.min(o.length,n.length);for(let f=1;f<l;f++){let h=o[f]*r,u=n[f]*r;od({source:t.subarray(s,h),target:e,start:a,end:u,size:r,getData:c}),s=h,a=u}return a<e.length&&od({source:[],target:e,start:a,size:r,getData:c}),e}function i0(t){let{device:e,settings:r,value:i}=t,o=new Kt(e,r);return o.setData({value:i instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:r.normalized}),o}function Bc(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 Lc(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 Fc(t){t.push(t.shift())}function o0(t,e){let{doublePrecision:r,settings:i,value:o,size:n}=t,s=r&&o 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?o.length:(e+a)*n)*s}function Uc({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 kc({device:t,buffer:e,attribute:r,fromLength:i,toLength:o,fromStartIndices:n,getData:s=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=n&&h,d=r.isConstant;if(!u&&e&&i>=o)return e;let p=r.value instanceof Float64Array?Float32Array:r.value.constructor,g=d?r.value:new p(r.getBuffer().readSyncWebGL(l,o*p.BYTES_PER_ELEMENT).buffer);if(r.settings.normalized&&!d){let y=s;s=(T,S)=>r.normalizeConstant(y(T,S))}let m=d?(y,T)=>s(g,T):(y,T)=>s(g.subarray(y+l,y+l+c),T),_=e?new Float32Array(e.readSyncWebGL(f,i*4).buffer):new Float32Array(0),b=new Float32Array(o);return r0({source:_,target:b,sourceStartIndices:n,targetStartIndices:h,size:c,getData:m}),(!e||e.byteLength<b.byteLength+f)&&(e?.destroy(),e=t.createBuffer({byteLength:b.byteLength+f,usage:35050})),e.write(b,f),e}var Qi=class{constructor({device:e,attribute:r,timeline:i}){this.buffers=[],this.currentLength=0,this.device=e,this.transition=new Ge(i),this.attribute=r,this.attributeInTransition=i0(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=o0(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 Bn=class extends Qi{constructor({device:e,attribute:r,timeline:i}){super({device:e,attribute:r,timeline:i}),this.type="interpolation",this.transform=Gv(e,r)}start(e,r){let i=this.currentLength,o=this.currentStartIndices;if(super.start(e,r,e.duration),e.duration<=0){this.transition.cancel();return}let{buffers:n,attribute:s}=this;Fc(n),n[0]=kc({device:this.device,buffer:n[0],attribute:s,fromLength:i,toLength:this.currentLength,fromStartIndices:o,getData:e.enter}),n[1]=Uc({device:this.device,source:n[0],target:n[1]}),this.setBuffer(n[1]);let{transform:a}=this,c=a.model,l=Math.floor(this.currentLength/s.size);s0(s)&&(l/=2),c.setVertexCount(l),s.isConstant?(c.setAttributes({aFrom:n[0]}),c.setConstantAttributes({aTo:s.value})):c.setAttributes({aFrom:n[0],aTo:s.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:n[1]})}onUpdate(){let{duration:e,easing:r}=this.settings,{time:i}=this.transition,o=i/e;r&&(o=r(o));let{model:n}=this.transform,s={time:o};n.shaderInputs.setProps({interpolation:s}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}},Kv=`layout(std140) uniform interpolationUniforms {
1935
1998
  float time;
1936
1999
  } interpolation;
1937
- `,jb={name:"interpolation",vs:_v,uniformTypes:{time:"f32"}},yv=`#version 300 es
2000
+ `,n0={name:"interpolation",vs:Kv,uniformTypes:{time:"f32"}},Zv=`#version 300 es
1938
2001
  #define SHADER_NAME interpolation-transition-vertex-shader
1939
2002
 
1940
2003
  in ATTRIBUTE_TYPE aFrom;
@@ -1945,7 +2008,7 @@ void main(void) {
1945
2008
  vCurrent = mix(aFrom, aTo, interpolation.time);
1946
2009
  gl_Position = vec4(0.0);
1947
2010
  }
1948
- `,bv=`#version 300 es
2011
+ `,qv=`#version 300 es
1949
2012
  #define SHADER_NAME interpolation-transition-vertex-shader
1950
2013
 
1951
2014
  in ATTRIBUTE_TYPE aFrom;
@@ -1968,11 +2031,11 @@ void main(void) {
1968
2031
  }
1969
2032
  gl_Position = vec4(0.0);
1970
2033
  }
1971
- `;function Hb(t){return t.doublePrecision&&t.value instanceof Float64Array}function Tv(t,e){let r=e.size,i=vc(r),s=Mc(r),o=e.getBufferLayout();return Hb(e)?new je(t,{vs:bv,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:[Hf,jb],defines:{ATTRIBUTE_TYPE:i,ATTRIBUTE_SIZE:r},moduleSettings:{},varyings:["vCurrent","vCurrent64Low"],bufferMode:35980,disableWarnings:!0}):new je(t,{vs:yv,bufferLayout:[{name:"aFrom",format:s},{name:"aTo",format:o.attributes[0].format}],modules:[jb],defines:{ATTRIBUTE_TYPE:i},varyings:["vCurrent"],disableWarnings:!0})}var Io=class extends Yi{constructor({device:e,attribute:r,timeline:i}){super({device:e,attribute:r,timeline:i}),this.type="spring",this.texture=Rv(e),this.framebuffer=Pv(e,this.texture),this.transform=wv(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]=Oc({device:this.device,buffer:o[c],attribute:n,fromLength:i,toLength:this.currentLength,fromStartIndices:s,getData:e.enter});o[2]=Ic({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]}),Cc(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()}},xv=`layout(std140) uniform springUniforms {
2034
+ `;function s0(t){return t.doublePrecision&&t.value instanceof Float64Array}function Gv(t,e){let r=e.size,i=Bc(r),o=Lc(r),n=e.getBufferLayout();return s0(e)?new $e(t,{vs:qv,bufferLayout:[{name:"aFrom",byteStride:8*r,attributes:[{attribute:"aFrom",format:o,byteOffset:0},{attribute:"aFrom64Low",format:o,byteOffset:4*r}]},{name:"aTo",byteStride:8*r,attributes:[{attribute:"aTo",format:o,byteOffset:0},{attribute:"aTo64Low",format:o,byteOffset:4*r}]}],modules:[rh,n0],defines:{ATTRIBUTE_TYPE:i,ATTRIBUTE_SIZE:r},moduleSettings:{},varyings:["vCurrent","vCurrent64Low"],bufferMode:35980,disableWarnings:!0}):new $e(t,{vs:Zv,bufferLayout:[{name:"aFrom",format:o},{name:"aTo",format:n.attributes[0].format}],modules:[n0],defines:{ATTRIBUTE_TYPE:i},varyings:["vCurrent"],disableWarnings:!0})}var Ln=class extends Qi{constructor({device:e,attribute:r,timeline:i}){super({device:e,attribute:r,timeline:i}),this.type="spring",this.texture=i2(e),this.framebuffer=o2(e,this.texture),this.transform=r2(e,r)}start(e,r){let i=this.currentLength,o=this.currentStartIndices;super.start(e,r);let{buffers:n,attribute:s}=this;for(let c=0;c<2;c++)n[c]=kc({device:this.device,buffer:n[c],attribute:s,fromLength:i,toLength:this.currentLength,fromStartIndices:o,getData:e.enter});n[2]=Uc({device:this.device,source:n[0],target:n[2]}),this.setBuffer(n[1]);let{model:a}=this.transform;a.setVertexCount(Math.floor(this.currentLength/s.size)),s.isConstant?a.setConstantAttributes({aTo:s.value}):a.setAttributes({aTo:s.getBuffer()})}onUpdate(){let{buffers:e,transform:r,framebuffer:i,transition:o}=this,n=this.settings;r.model.setAttributes({aPrev:e[0],aCur:e[1]}),r.transformFeedback.setBuffers({vNext:e[2]});let s={stiffness:n.stiffness,damping:n.damping};r.model.shaderInputs.setProps({spring:s}),r.run({framebuffer:i,discard:!1,parameters:{viewport:[0,0,1,1]},clearColor:[0,0,0,0]}),Fc(e),this.setBuffer(e[1]),this.device.readPixelsToArrayWebGL(i)[0]>0||o.end()}delete(){super.delete(),this.transform.destroy(),this.texture.destroy(),this.framebuffer.destroy()}},Qv=`layout(std140) uniform springUniforms {
1972
2035
  float damping;
1973
2036
  float stiffness;
1974
2037
  } spring;
1975
- `,Av={name:"spring",vs:xv,uniformTypes:{damping:"f32",stiffness:"f32"}},Sv=`#version 300 es
2038
+ `,Jv={name:"spring",vs:Qv,uniformTypes:{damping:"f32",stiffness:"f32"}},e2=`#version 300 es
1976
2039
  #define SHADER_NAME spring-transition-vertex-shader
1977
2040
 
1978
2041
  #define EPSILON 0.00001
@@ -1999,7 +2062,7 @@ void main(void) {
1999
2062
  gl_Position = vec4(0, 0, 0, 1);
2000
2063
  gl_PointSize = 100.0;
2001
2064
  }
2002
- `,Ev=`#version 300 es
2065
+ `,t2=`#version 300 es
2003
2066
  #define SHADER_NAME spring-transition-is-transitioning-fragment-shader
2004
2067
 
2005
2068
  in float vIsTransitioningFlag;
@@ -2011,6 +2074,6 @@ void main(void) {
2011
2074
  discard;
2012
2075
  }
2013
2076
  fragColor = vec4(1.0);
2014
- }`;function wv(t,e){let r=vc(e.size),i=Mc(e.size);return new je(t,{vs:Sv,fs:Ev,bufferLayout:[{name:"aPrev",format:i},{name:"aCur",format:i},{name:"aTo",format:e.getBufferLayout().attributes[0].format}],varyings:["vNext"],modules:[Av],defines:{ATTRIBUTE_TYPE:r},parameters:{depthCompare:"always",blendColorOperation:"max",blendColorSrcFactor:"one",blendColorDstFactor:"one",blendAlphaOperation:"max",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one"}})}function Rv(t){return t.createTexture({data:new Uint8Array(4),format:"rgba8unorm",width:1,height:1})}function Pv(t,e){return t.createFramebuffer({id:"spring-transition-is-transitioning-framebuffer",width:1,height:1,colorAttachments:[e]})}var vv={interpolation:Co,spring:Io},Oo=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=vv[i.type];n?this.transitions[e]=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[e].start(i,this.numInstances))}};var $b="attributeManager.invalidate",Mv="attributeManager.updateStart",Cv="attributeManager.updateEnd",Iv="attribute.updateStart",Ov="attribute.allocate",Nv="attribute.updateEnd",$r=class{constructor(e,{id:r="attribute-manager",stats:i,timeline:s}={}){this.mergeBoundsMemoized=Ue(X_),this.id=r,this.device=e,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new Oo(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);G($b,this,e,i)}invalidateAll(e){for(let r in this.attributes)this.attributes[r].setNeedsUpdate(r,e);G($b,this,"all")}update({data:e,numInstances:r,startIndices:i=null,transitions:s,props:o={},buffers:n={},context:a={}}){let c=!1;G(Mv,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,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&&G(Cv,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 $t(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(G(Iv,r),r.constant){r.setConstantValue(e.context,r.value);return}r.allocate(i)&&G(Ov,r,i),r.updateBuffer(e)&&(this.needsRedraw=!0,G(Nv,r,i))}};L();Tc();var No=class extends qe{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=It(r,i,n)}};var Xb=1e-5;function Yb(t,e,r,i,s){let o=e-t,a=(r-e)*s,c=-o*i;return a+c+o+e}function Dv(t,e,r,i,s){if(Array.isArray(r)){let o=[];for(let n=0;n<r.length;n++)o[n]=Yb(t[n],e[n],r[n],i,s);return o}return Yb(t,e,r,i,s)}function Kb(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 Do=class extends qe{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=Dv(o,n,r,i,s),c=Kb(a,r),l=Kb(a,n);c<Xb&&l<Xb&&(a=r,this.end()),this._prevValue=n,this._currValue=a}};var Bv={interpolation:No,spring:Do},Bo=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=Pc(s),!s)return;let n=Bv[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(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 qb(t){let e=t[ze];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 Gb(t,e){let r=Nc({newProps:t,oldProps:e,propTypes:t[ze],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),i=Lv(t,e),s=!1;return i||(s=Uv(t,e)),{dataChanged:i,propsChanged:r,updateTriggersChanged:s,extensionsChanged:kv(t,e),transitionsChanged:Fv(t,e)}}function Fv(t,e){if(!t.transitions)return!1;let r={},i=t[ze],s=!1;for(let o in t.transitions){let n=i[o],a=n&&n.type;(a==="number"||a==="color"||a==="array")&&Ku(t[o],e[o],n)&&(r[o]=!0,s=!0)}return s?r:!1}function Nc({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=Ku(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=Ku(t[o],e[o],i[o]);if(n)return`${s}.${o} ${n}`}}return!1}function Ku(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 Lv(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 Uv(t,e){if(e===null)return{all:!0};if("all"in t.updateTriggers&&Zb(t,e,"all"))return{all:!0};let r={},i=!1;for(let s in t.updateTriggers)s!=="all"&&Zb(t,e,s)&&(r[s]=!0,i=!0);return i?r:!1}function kv(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 Zb(t,e,r){let i=t.updateTriggers[r];i=i??{};let s=e.updateTriggers[r];return s=s??{},Nc({oldProps:s,newProps:i,triggerName:r})}var Vv="count(): argument not an object",zv="count(): argument not a container";function Dc(t){if(!jv(t))throw new Error(Vv);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(Wv(t))return Object.keys(t).length;throw new Error(zv)}function Wv(t){return t!==null&&typeof t=="object"&&t.constructor===Object}function jv(t){return t!==null&&typeof t=="object"}function Fo(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}L();var Hv={minFilter:"linear",mipmapFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"},Zu={};function Qb(t,e,r,i){if(r instanceof B)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:{...Hv,...s,...i},mipLevels:e.getMipLevelCount(o,n)});return e.type==="webgl"&&a.generateMipmapsWebGL(),Zu[a.id]=t,a}function Jb(t,e){!e||!(e instanceof B)||Zu[e.id]===t&&(e.delete(),delete Zu[e.id])}var $v={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||qu(t)&&(t.length===3||t.length===4)},equal(t,e,r){return Z(t,e,1)}},accessor:{validate(t,e){let r=Bc(t);return r==="function"||r===Bc(e.value)},equal(t,e,r){return typeof e=="function"?!0:Z(t,e,1)}},array:{validate(t,e){return e.optional&&!t||qu(t)},equal(t,e,r){let{compare:i}=r,s=Number.isInteger(i)?i:i?1:0;return i?Z(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?Z(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:Qb(r.id,i.device,t,{...e.parameters,...r.props.textureParameters})},release:(t,e,r)=>{Jb(r.id,t)}}};function e0(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=Xv(s,o);e[s]=a,r[s]=a.value}}return{propTypes:e,defaultProps:r,deprecatedProps:i}}function Xv(t,e){switch(Bc(e)){case"object":return Lo(t,e);case"array":return Lo(t,{type:"array",value:e,compare:!1});case"boolean":return Lo(t,{type:"boolean",value:e});case"number":return Lo(t,{type:"number",value:e});case"function":return Lo(t,{type:"function",value:e,compare:!0});default:return{name:t,type:"unknown",value:e}}}function Lo(t,e){return"type"in e?{name:t,...$v[e.type],...e}:"value"in e?{name:t,type:Bc(e.value),...e}:{name:t,type:"object",value:e}}function qu(t){return Array.isArray(t)||ArrayBuffer.isView(t)}function Bc(t){return qu(t)?"array":t===null?"null":typeof t}function t0(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=Gu(t.constructor,r),s=Object.create(i);s[Ui]=t,s[_t]={},s[Ze]={};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 Yv="_mergedDefaultProps";function Gu(t,e){if(!(t instanceof Ki.constructor))return{};let r=Yv;if(e)for(let s of e){let o=s.constructor;o&&(r+=`:${o.extensionName||o.name}`)}let i=r0(t,r);return i||(t[r]=Kv(t,e||[]))}function Kv(t,e){if(!t.prototype)return null;let i=Object.getPrototypeOf(t),s=Gu(i),o=r0(t,"defaultProps")||{},n=e0(o),a=Object.assign(Object.create(null),s,n.defaultProps),c=Object.assign(Object.create(null),s?.[ze],n.propTypes),l=Object.assign(Object.create(null),s?.[va],n.deprecatedProps);for(let f of e){let h=Gu(f.constructor);h&&(Object.assign(a,h),Object.assign(c,h[ze]),Object.assign(l,h[va]))}return Zv(a,t),Gv(a,c),qv(a,l),a[ze]=c,a[va]=l,e.length===0&&!Qu(t,"_propTypes")&&(t._propTypes=c),a}function Zv(t,e){let r=Jv(e);Object.defineProperties(t,{id:{writable:!0,value:r}})}function qv(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])Qu(this,o)||(this[o]=i);F.deprecated(s,e[r].join("/"))()}})}function Gv(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]=Qv(n))}t[Ut]=r,t[_t]={},Object.defineProperties(t,i)}function Qv(t){return{enumerable:!0,set(e){typeof e=="string"||e instanceof Promise||wc(e)?this[_t][t]=e:this[Ze][t]=e},get(){if(this[Ze]){if(t in this[Ze])return this[Ze][t]||this[Ut][t];if(t in this[_t]){let e=this[Ui]&&this[Ui].internalState;if(e&&e.hasAsyncProp(t))return e.getAsyncProp(t)||this[Ut][t]}}return this[Ut][t]}}}function Qu(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function r0(t,e){return Qu(t,e)&&t[e]}function Jv(t){let e=t.componentName;return e||F.warn(`${t.name}.componentName not specified`)(),e||t.name}var e2=0,Uo=class{constructor(...e){this.props=t0(this,e),this.id=this.props.id,this.count=e2++}clone(e){let{props:r}=this,i={};for(let s in r[Ut])s in r[Ze]?i[s]=r[Ze][s]:s in r[_t]&&(i[s]=r[_t][s]);return new this.constructor({...r,...i,...e})}};Uo.componentName="Component";Uo.defaultProps={};var Ki=Uo;var t2=Object.freeze({}),Xr=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||t2}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[Ui]||this.component;let r=e[Ze]||{},i=e[_t]||e,s=e[Ut]||{};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(wc(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[ze];this.asyncProps[e]={type:s&&s[e],lastValue:null,resolvedValue:r,pendingLoadCount:0,resolvedLoadCount:0}}}};var ko=class extends Xr{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 r2="layer.changeFlag",i2="layer.initialize",s2="layer.update",o2="layer.finalize",n2="layer.matched",i0=2**24-1,a2=Object.freeze([]),c2=Ue(({oldViewport:t,viewport:e})=>t.equals(e)),it=new Uint8ClampedArray(0),l2={data:{type:"data",value:a2,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:ar(t,i),persistent:!1}),a=!0),a?n.subscribe({resourceId:t,onChange:c=>r.internalState?.reloadAsyncProp(e,c),consumerId:r.id,requestId:e}):ar(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]}},Vo=class extends Ki{constructor(){super(...arguments),this.internalState=null,this.lifecycle=pr.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=du(e,{viewport:r,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[s,o,n]=Ii(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 wa(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:Dc(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=Fo(e,{disableWarnings:!0,modules:this.context.defaultShaderModules});for(let r of this.props.extensions)e=Fo(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||!c2({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(it.length/4);if(this.internalState.usesPickingColorCache=!0,i<r){r>i0&&F.warn("Layer has too many data objects. Picking might not be able to distinguish all objects.")(),it=Ke.allocate(it,r,{size:4,copy:!0,maxCount:Math.max(r,i0)});let s=Math.floor(it.length/4),o=[0,0,0];for(let n=i;n<s;n++)this.encodePickingColor(n,o),it[n*4+0]=o[0],it[n*4+1]=o[1],it[n*4+2]=o[2],it[n*4+3]=0}e.value=it.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 I?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!==it.buffer&&(i.value=it.subarray(0,i.value.length)),i.updateSubBuffer({startOffset:0}))}_initialize(){Y(!this.internalState),Y(Number.isFinite(this.props.coordinateSystem)),G(i2,this);let e=this._getAttributeManager();e&&e.addInstanced({instancePickingColors:{type:"uint8",size:4,noAlloc:!0,update:this.calculateInstancePickingColors}}),this.internalState=new ko({attributeManager:e,layer:this}),this._clearChangeFlags(),this.state={},Object.defineProperty(this.state,"attributeManager",{get:()=>(F.deprecated("layer.state.attributeManager","layer.getAttributeManager()")(),e)}),this.internalState.uniformTransitions=new Bo(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){G(n2,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(G(s2,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(){G(o2,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 rt&&n.device.setParametersWebGL({polygonOffset:c});let l=n.device instanceof rt?null:f2(s);if(h2(this.getModels(),e,s,l),n.device instanceof rt)n.device.withParametersWebGL(s,()=>{let f={renderPass:e,shaderModuleProps:r,uniforms:i,parameters:s,context:n};for(let h of this.props.extensions)h.draw.call(this,f,h);this.draw(f)});else{l?.renderPassParameters&&e.setParameters(l.renderPassParameters);let f={renderPass:e,shaderModuleProps:r,uniforms:i,parameters:s,context:n};for(let h of this.props.extensions)h.draw.call(this,f,h);this.draw(f)}}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&&G(r2,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=Gb(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(){qb(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 $r(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()}};Vo.defaultProps=l2;Vo.layerName="Layer";var Fc=Vo;function f2(t){let{blendConstant:e,...r}=t;return e?{pipelineParameters:r,renderPassParameters:{blendConstant:e}}:{pipelineParameters:r}}function h2(t,e,r,i){for(let s of t)s.device.type==="webgpu"?(u2(s,e),s.setParameters({...s.parameters,...i?.pipelineParameters})):s.setParameters(r)}function u2(t,e){let r=e.props.framebuffer||(e.framebuffer??null);if(!r)return;let i=r.colorAttachments.map(n=>n?.texture?.format??null),s=r.depthStencilAttachment?.texture?.format,o=t;(!d2(o.props.colorAttachmentFormats,i)||o.props.depthStencilAttachmentFormat!==s)&&(o.props.colorAttachmentFormats=i,o.props.depthStencilAttachmentFormat=s,o._setPipelineNeedsUpdate("attachment formats"))}function d2(t,e){if(t===e)return!0;if(!t||!e||t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}var p2="compositeLayer.renderLayers",Lc=class extends Fc{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:b}=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:_},T=b&&e.id&&b[e.id],S=T&&T.updateTriggers,A=e.id||"sublayer";if(T){let w=this.props[ze],v=e.type?e.type._propTypes:{};for(let R in T){let M=v[R]||w[R];M&&M.type==="accessor"&&(T[R]=this.getSubLayerAccessor(T[R]))}}Object.assign(y,e,T),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=gr(o,Boolean),this.internalState.subLayers=i}G(p2,this,s,i);for(let o of i)o.parent=this}};Lc.layerName="CompositeLayer";var s0=Lc;var Ju=Math.PI/180;function g2({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*Ju),r==="Z"?c.rotateZ(s*Ju):c.rotateY(s*Ju);let l=Math.pow(2,o)/t;return c.scale(l),c}var Uc=class extends Ee{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:Bt(s);super({...e,longitude:void 0,viewMatrix:g2({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]=Ve([i,n,o],this.pixelUnprojectionMatrix);return[a,c,l]}panByPosition(e,r,i){let s=this.project(e),{near:o,far:n}=H_(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)}}};Uc.displayName="OrbitViewport";var kc=Uc;var m2=new z().lookAt({eye:[0,0,1]});function _2({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=U((l+t-f)/2,0,t)-t/2,p=U((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 Vc=class extends Ee{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:m2.clone().scale([d,d*(l?-1:1),d]),projectionMatrix:_2({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=Ve(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)}}};Vc.displayName="OrthographicViewport";var zc=Vc;var Wc=class extends Ee{constructor(e){let{longitude:r,latitude:i,modelMatrix:s,bearing:o=0,pitch:n=0,up:a=[0,0,1]}=e,l=new We({bearing:o,pitch:n===-90?1e-4:90+n}).toVector3().normalize(),f=s?new z(s).transformAsVector(l):l,h=Number.isFinite(i)?Gs({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}};Wc.displayName="FirstPersonViewport";var jc=Wc;var Yr=20,o0=500,zo=class extends Ge{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=o0*(e[0]-r[0])/s,l=o0*(e[1]-r[1])/o,f=new We({bearing:n,pitch:a}),h=new We({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)*Yr,s)}zoomEnd(){return this._getUpdatedState({startZoomPosition:null})}moveLeft(e=Yr){let r=this.getDirection(!0);return this._move(r.rotateZ({radians:Math.PI/2}),e)}moveRight(e=Yr){let r=this.getDirection(!0);return this._move(r.rotateZ({radians:-Math.PI/2}),e)}moveUp(e=Yr){let r=this.getDirection(!0);return this._move(r,e)}moveDown(e=Yr){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=Yr){return this._move(new H(0,0,1),e)}zoomOut(e=Yr){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 We({bearing:this.getViewportProps().bearing,pitch:e?90:90+this.getViewportProps().pitch}).toVector3().normalize()}_getUpdatedState(e){return new zo({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=U(r,s,i),o!==null&&(o<-180||o>180)&&(e.longitude=mt(o+180,360)-180),(a<-180||a>180)&&(e.bearing=mt(a+180,360)-180),c){let l=U(n[0],c[0][0],c[1][0]),f=U(n[1],c[0][1],c[1][1]),h=U(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}},Kr=class extends Te{constructor(){super(...arguments),this.ControllerState=zo,this.transition={transitionDuration:300,transitionInterpolator:new ce(["position","pitch","bearing"])}}};var Hc=class extends be{constructor(e={}){super(e)}getViewportType(){return jc}get ControllerType(){return Kr}};Hc.displayName="FirstPersonView";var n0=Hc;var ed=class extends Ge{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:b}=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:b},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=U(e.rotationX,i,r),(s<-180||s>180)&&(e.rotationOrbit=mt(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 U(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 b=O=>U(O,s,a),y=O=>U(O,o,c),T=O=>U(O,n,l),S=O=>u*b(r[0]-O*u)+d*y(r[1]-O*d)+p*T(r[2]-O*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 O=0;O<30;O++){let C=(A+w)/2;S(C)>0?A=C:w=C}let M=(A+w)/2;return[b(r[0]-M*u),y(r[1]-M*d),T(r[2]-M*p)]}}return[U(r[0],s,a),U(r[1],o,c),U(r[2],n,l)]}},Zr=class extends Te{constructor(){super(...arguments),this.ControllerState=ed,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 $c=class extends be{constructor(e={}){super(e),this.props.orbitAxis=e.orbitAxis||"Z"}getViewportType(){return kc}get ControllerType(){return Zr}};$c.displayName="OrbitView";var a0=$c;function c0({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 td=class extends Ge{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:b}=c0(e);super({width:r,height:i,target:s,zoom:o,zoomX:_,zoomY:b,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=U(o[0],c,l),d=U(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=U(e,c,o);break;case"Y":r=U(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}}},qr=class extends Te{constructor(){super(...arguments),this.ControllerState=td,this.transition={transitionDuration:300,transitionInterpolator:new ce(["target","zoomX","zoomY"])},this.dragMode="pan"}setProps(e){Object.assign(e,c0(e)),super.setProps(e)}_onPanRotate(){return!1}};var Xc=class extends be{constructor(e={}){super(e)}getViewportType(){return zc}get ControllerType(){return qr}};Xc.displayName="OrthographicView";var l0=Xc;var rd=Math.PI/180,y2=180/Math.PI;function f0(t,e=0){let r=Math.min(180,t)*rd;return Wt*2*Math.sin(r/2)*Math.pow(2,e)}function h0(t,e=0){let r=t/Math.pow(2,e);return Math.asin(Math.min(1,r/Wt/2))*2*y2}var id=class extends ho{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=mt(r+180,360)-180),e.latitude=U(i,-_e,_e),s&&(e.longitude=U(e.longitude,s[0][0],s[1][0]),e.latitude=U(e.latitude,s[0][1],s[1][1])),s){let o=e.zoom-yt(i),n=s[1][0]-s[0][0],a=s[1][1]-s[0][1];if(a>0&&a<_e*2){let c=Math.min(h0(e.height,o),a)/2;e.latitude=U(e.latitude,s[0][1]+c,s[1][1]-c)}if(n>0&&n<360){let c=Math.min(h0(e.width/Math.cos(e.latitude*rd),o),n)/2;e.longitude=U(e.longitude,s[0][0]+c,s[1][0]-c)}}return e.latitude!==i&&(e.zoom+=yt(e.latitude)-yt(i)),e}_constrainZoom(e,r){r||(r=this.getViewportProps());let{latitude:i,maxZoom:s,maxBounds:o}=r,{minZoom:n}=r,a=yt(0),c=yt(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=f0(o[1][0]-o[0][0])*Math.cos(u*rd),p=f0(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 U(e,n+c,s+c)}},Gr=class extends Te{constructor(){super(...arguments),this.ControllerState=id,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 Yc=class extends be{constructor(e={}){super(e)}getViewportType(e){return e.zoom>12?dr:ki}get ControllerType(){return Gr}};Yc.displayName="GlobeView";var u0=Yc;var Wo=class extends Ht{constructor(){super(...arguments),this._terrainAltitude=void 0,this._terrainAltitudeTarget=void 0,this._pickFrameId=null,this._lastPickTime=0}setProps(e){if(super.setProps({rotationPivot:"3d",...e}),this._pickFrameId===null){let r=()=>{let i=Date.now();if(i-this._lastPickTime>500&&!this.isDragging()&&(this._lastPickTime=i,this._pickTerrainCenterAltitude(),this._terrainAltitude===void 0&&this._terrainAltitudeTarget!==void 0)){this._terrainAltitude=this._terrainAltitudeTarget;let s=new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),o=this._rebaseViewport(this._terrainAltitudeTarget,s);if(o){let n=new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state,...o});super.updateViewport(n)}}this._pickFrameId=requestAnimationFrame(r)};this._pickFrameId=requestAnimationFrame(r)}}finalize(){this._pickFrameId!==null&&(cancelAnimationFrame(this._pickFrameId),this._pickFrameId=null),super.finalize()}updateViewport(e,r=null,i={}){if(this._terrainAltitude===void 0){super.updateViewport(e,r,i);return}let s=.05;this._terrainAltitude+=(this._terrainAltitudeTarget-this._terrainAltitude)*s;let n=e.getViewportProps().position||[0,0,0];r={...r,position:[n[0],n[1],this._terrainAltitude]},super.updateViewport(e,r,i)}_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){let i=r.getViewportProps(),s=this.makeViewport({...i,position:[0,0,0]}),o=s.cameraPosition,n=e*s.distanceScales.unitsPerMeter[2],a=o[2],c=a-n;if(c<=0)return null;let l=Math.log2(a/c),f=i.zoom+l,h=this.makeViewport({...i,zoom:f,position:[0,0,e]}),{width:u,height:d}=i,p=[u/2,d/2],g=s.unproject(p,{targetZ:e});if(g&&"panByPosition3D"in h&&typeof h.panByPosition3D=="function"){let m=h.panByPosition3D(g,p);return{position:[0,0,e],zoom:f,...m}}return null}};var jo=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&&Z(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){}};jo.defaultProps={};jo.extensionName="LayerExtension";var d0=jo;var sd={bearing:0,pitch:0,position:[0,0,0]},b2={speed:1.2,curve:1.414},Ho=class extends zt{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={...b2,...e}}interpolateProps(e,r,i){let s=au(e,r,i,this.opts);for(let o in sd)s[o]=It(e[o]||sd[o],r[o]||sd[o],i);return s}getDuration(e,r){let{transitionDuration:i}=r;return i==="auto"&&(i=cu(e,r,this.opts)),i}};L();var $o=class{constructor(e){this.indexStarts=[0],this.vertexStarts=[0],this.vertexCount=0,this.instanceCount=0;let{attributes:r={}}=e;this.typedArrayManager=Ke,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)?Rc(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}=Xi(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 I){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,...p0(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(p0(n)),s||a}};function p0(t){return{center:[t.longitude,t.latitude],zoom:t.zoom,bearing:t.bearing??0,pitch:t.pitch??0}}var g0={position:"absolute",left:0,top:0,width:"100%",height:"100%"};function T2(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,g0);let s=document.createElement("canvas");return e.appendChild(s),Object.assign(s.style,g0),{container:e,mapCanvas:i,deckCanvas:s}}var Xo=class extends Ec{constructor(e){if(typeof document>"u")throw Error("Deck can only be used in the browser");let{mapCanvas:r,deckCanvas:i}=T2(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,fh);Object.assign(globalThis.loaders,Uh);return x0(x2);})();
2077
+ }`;function r2(t,e){let r=Bc(e.size),i=Lc(e.size);return new $e(t,{vs:e2,fs:t2,bufferLayout:[{name:"aPrev",format:i},{name:"aCur",format:i},{name:"aTo",format:e.getBufferLayout().attributes[0].format}],varyings:["vNext"],modules:[Jv],defines:{ATTRIBUTE_TYPE:r},parameters:{depthCompare:"always",blendColorOperation:"max",blendColorSrcFactor:"one",blendColorDstFactor:"one",blendAlphaOperation:"max",blendAlphaSrcFactor:"one",blendAlphaDstFactor:"one"}})}function i2(t){return t.createTexture({data:new Uint8Array(4),format:"rgba8unorm",width:1,height:1})}function o2(t,e){return t.createFramebuffer({id:"spring-transition-is-transitioning-framebuffer",width:1,height:1,colorAttachments:[e]})}var n2={interpolation:Bn,spring:Ln},Fn=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 o in e){let n=e[o],s=n.getTransitionSetting(r);s&&this._updateAttribute(o,n,s)}for(let o in this.transitions){let n=e[o];(!n||!n.getTransitionSetting(r))&&this._removeTransition(o)}}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 o=this.transitions[e],n=!o||o.type!==i.type;if(n){o&&this._removeTransition(e);let s=n2[i.type];s?this.transitions[e]=new s({attribute:r,timeline:this.timeline,device:this.device}):(L.error(`unsupported transition type '${i.type}'`)(),n=!1)}(n||r.needsRedraw())&&(this.needsRedraw=!0,this.transitions[e].start(i,this.numInstances))}};var a0="attributeManager.invalidate",s2="attributeManager.updateStart",a2="attributeManager.updateEnd",c2="attribute.updateStart",l2="attribute.allocate",f2="attribute.updateEnd",Kr=class{constructor(e,{id:r="attribute-manager",stats:i,timeline:o}={}){this.mergeBoundsMemoized=ke(cy),this.id=r,this.device=e,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new Fn(e,{id:`${r}-transitions`,timeline:o}),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);G(a0,this,e,i)}invalidateAll(e){for(let r in this.attributes)this.attributes[r].setNeedsUpdate(r,e);G(a0,this,"all")}update({data:e,numInstances:r,startIndices:i=null,transitions:o,props:n={},buffers:s={},context:a={}}){let c=!1;G(s2,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,n[l]&&L.removed(`props.${l}`,`data.attributes.${l}`)(),f.setExternalBuffer(s[l])||f.setBinaryValue(typeof h=="string"?s[h]:void 0,e.startIndices)||typeof h=="string"&&!s[h]&&f.setConstantValue(a,n[h])||f.needsUpdate()&&(c=!0,this._updateAttribute({attribute:f,numInstances:r,data:e,props:n,context:a})),this.needsRedraw=this.needsRedraw||f.needsRedraw()}c&&G(a2,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:o})}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,o={...i.getAttributes()};for(let n in r){let s=r[n];s.needsRedraw(e)&&!i.hasAttribute(n)&&(o[n]=s)}return o}getBufferLayouts(e){return Object.values(this.getAttributes()).map(r=>r.getBufferLayout(e))}_add(e,r){for(let i in e){let o=e[i],n={...o,id:i,size:o.isIndexed&&1||o.size||1,...r};this.attributes[i]=new Kt(this.device,n)}this._mapUpdateTriggersToAttributes()}_mapUpdateTriggersToAttributes(){let e={};for(let r in this.attributes)this.attributes[r].getUpdateTriggers().forEach(o=>{e[o]||(e[o]=[]),e[o].push(r)});this.updateTriggers=e}_invalidateTrigger(e,r){let{attributes:i,updateTriggers:o}=this,n=o[e];return n&&n.forEach(s=>{let a=i[s];a&&a.setNeedsUpdate(a.id,r)}),n}_updateAttribute(e){let{attribute:r,numInstances:i}=e;if(G(c2,r),r.constant){r.setConstantValue(e.context,r.value);return}r.allocate(i)&&G(l2,r,i),r.updateBuffer(e)&&(this.needsRedraw=!0,G(f2,r,i))}};F();Pc();var Un=class extends Ge{get value(){return this._value}_onUpdate(){let{time:e,settings:{fromValue:r,toValue:i,duration:o,easing:n}}=this,s=n(e/o);this._value=Ot(r,i,s)}};var c0=1e-5;function l0(t,e,r,i,o){let n=e-t,a=(r-e)*o,c=-n*i;return a+c+n+e}function h2(t,e,r,i,o){if(Array.isArray(r)){let n=[];for(let s=0;s<r.length;s++)n[s]=l0(t[s],e[s],r[s],i,o);return n}return l0(t,e,r,i,o)}function f0(t,e){if(Array.isArray(t)){let r=0;for(let i=0;i<t.length;i++){let o=t[i]-e[i];r+=o*o}return Math.sqrt(r)}return Math.abs(t-e)}var kn=class extends Ge{get value(){return this._currValue}_onUpdate(){let{fromValue:e,toValue:r,damping:i,stiffness:o}=this.settings,{_prevValue:n=e,_currValue:s=e}=this,a=h2(n,s,r,i,o),c=f0(a,r),l=f0(a,s);c<c0&&l<c0&&(a=r,this.end()),this._prevValue=s,this._currValue=a}};var u2={interpolation:Un,spring:kn},Vn=class{constructor(e){this.transitions=new Map,this.timeline=e}get active(){return this.transitions.size>0}add(e,r,i,o){let{transitions:n}=this;if(n.has(e)){let c=n.get(e),{value:l=c.settings.fromValue}=c;r=l,this.remove(e)}if(o=Dc(o),!o)return;let s=u2[o.type];if(!s){L.error(`unsupported transition type '${o.type}'`)();return}let a=new s(this.timeline);a.start({...o,fromValue:r,toValue:i}),n.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 u0(t){let e=t[We];for(let r in e){let i=e[r],{validate:o}=i;if(o&&!o(t[r],i))throw new Error(`Invalid prop ${r}: ${t[r]}`)}}function d0(t,e){let r=Vc({newProps:t,oldProps:e,propTypes:t[We],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),i=p2(t,e),o=!1;return i||(o=g2(t,e)),{dataChanged:i,propsChanged:r,updateTriggersChanged:o,extensionsChanged:m2(t,e),transitionsChanged:d2(t,e)}}function d2(t,e){if(!t.transitions)return!1;let r={},i=t[We],o=!1;for(let n in t.transitions){let s=i[n],a=s&&s.type;(a==="number"||a==="color"||a==="array")&&nd(t[n],e[n],s)&&(r[n]=!0,o=!0)}return o?r:!1}function Vc({newProps:t,oldProps:e,ignoreProps:r={},propTypes:i={},triggerName:o="props"}){if(e===t)return!1;if(typeof t!="object"||t===null)return`${o} changed shallowly`;if(typeof e!="object"||e===null)return`${o} changed shallowly`;for(let n of Object.keys(t))if(!(n in r)){if(!(n in e))return`${o}.${n} added`;let s=nd(t[n],e[n],i[n]);if(s)return`${o}.${n} ${s}`}for(let n of Object.keys(e))if(!(n in r)){if(!(n in t))return`${o}.${n} dropped`;if(!Object.hasOwnProperty.call(t,n)){let s=nd(t[n],e[n],i[n]);if(s)return`${o}.${n} ${s}`}}return!1}function nd(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 p2(t,e){if(e===null)return"oldProps is null, initial diff";let r=!1,{dataComparator:i,_dataDiff:o}=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&&o&&(r=o(t.data,e.data)||r),r}function g2(t,e){if(e===null)return{all:!0};if("all"in t.updateTriggers&&h0(t,e,"all"))return{all:!0};let r={},i=!1;for(let o in t.updateTriggers)o!=="all"&&h0(t,e,o)&&(r[o]=!0,i=!0);return i?r:!1}function m2(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 o=0;o<i.length;o++)if(!i[o].equals(r[o]))return!0;return!1}function h0(t,e,r){let i=t.updateTriggers[r];i=i??{};let o=e.updateTriggers[r];return o=o??{},Vc({oldProps:o,newProps:i,triggerName:r})}var _2="count(): argument not an object",y2="count(): argument not a container";function zc(t){if(!T2(t))throw new Error(_2);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(b2(t))return Object.keys(t).length;throw new Error(y2)}function b2(t){return t!==null&&typeof t=="object"&&t.constructor===Object}function T2(t){return t!==null&&typeof t=="object"}function zn(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(o=>o.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 o in e.inject)i[o]=(i[o]||"")+e.inject[o];r.inject=i}return r}F();var x2={minFilter:"linear",mipmapFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"},sd={};function p0(t,e,r,i){if(r instanceof B)return r;r.constructor&&r.constructor.name!=="Object"&&(r={data:r});let o=null;r.compressed&&(o={minFilter:"linear",mipmapFilter:r.data.length>1?"nearest":"linear"});let{width:n,height:s}=r.data,a=e.createTexture({...r,sampler:{...x2,...o,...i},mipLevels:e.getMipLevelCount(n,s)});return e.type==="webgl"?a.generateMipmapsWebGL():e.type==="webgpu"&&e.generateMipmapsWebGPU(a),sd[a.id]=t,a}function g0(t,e){!e||!(e instanceof B)||sd[e.id]===t&&(e.delete(),delete sd[e.id])}var A2={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||ad(t)&&(t.length===3||t.length===4)},equal(t,e,r){return Z(t,e,1)}},accessor:{validate(t,e){let r=Wc(t);return r==="function"||r===Wc(e.value)},equal(t,e,r){return typeof e=="function"?!0:Z(t,e,1)}},array:{validate(t,e){return e.optional&&!t||ad(t)},equal(t,e,r){let{compare:i}=r,o=Number.isInteger(i)?i:i?1:0;return i?Z(t,e,o):t===e}},object:{equal(t,e,r){if(r.ignore)return!0;let{compare:i}=r,o=Number.isInteger(i)?i:i?1:0;return i?Z(t,e,o):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:p0(r.id,i.device,t,{...e.parameters,...r.props.textureParameters})},release:(t,e,r)=>{g0(r.id,t)}}};function m0(t){let e={},r={},i={};for(let[o,n]of Object.entries(t)){let s=n?.deprecatedFor;if(s)i[o]=Array.isArray(s)?s:[s];else{let a=S2(o,n);e[o]=a,r[o]=a.value}}return{propTypes:e,defaultProps:r,deprecatedProps:i}}function S2(t,e){switch(Wc(e)){case"object":return Wn(t,e);case"array":return Wn(t,{type:"array",value:e,compare:!1});case"boolean":return Wn(t,{type:"boolean",value:e});case"number":return Wn(t,{type:"number",value:e});case"function":return Wn(t,{type:"function",value:e,compare:!0});default:return{name:t,type:"unknown",value:e}}}function Wn(t,e){return"type"in e?{name:t,...A2[e.type],...e}:"value"in e?{name:t,type:Wc(e.value),...e}:{name:t,type:"object",value:e}}function ad(t){return Array.isArray(t)||ArrayBuffer.isView(t)}function Wc(t){return ad(t)?"array":t===null?"null":typeof t}function _0(t,e){let r;for(let n=e.length-1;n>=0;n--){let s=e[n];"extensions"in s&&(r=s.extensions)}let i=cd(t.constructor,r),o=Object.create(i);o[ji]=t,o[yt]={},o[qe]={};for(let n=0;n<e.length;++n){let s=e[n];for(let a in s)o[a]=s[a]}return Object.freeze(o),o}var E2="_mergedDefaultProps";function cd(t,e){if(!(t instanceof Ji.constructor))return{};let r=E2;if(e)for(let o of e){let n=o.constructor;n&&(r+=`:${n.extensionName||n.name}`)}let i=y0(t,r);return i||(t[r]=w2(t,e||[]))}function w2(t,e){if(!t.prototype)return null;let i=Object.getPrototypeOf(t),o=cd(i),n=y0(t,"defaultProps")||{},s=m0(n),a=Object.assign(Object.create(null),o,s.defaultProps),c=Object.assign(Object.create(null),o?.[We],s.propTypes),l=Object.assign(Object.create(null),o?.[Ba],s.deprecatedProps);for(let f of e){let h=cd(f.constructor);h&&(Object.assign(a,h),Object.assign(c,h[We]),Object.assign(l,h[Ba]))}return R2(a,t),v2(a,c),P2(a,l),a[We]=c,a[Ba]=l,e.length===0&&!ld(t,"_propTypes")&&(t._propTypes=c),a}function R2(t,e){let r=C2(e);Object.defineProperties(t,{id:{writable:!0,value:r}})}function P2(t,e){for(let r in e)Object.defineProperty(t,r,{enumerable:!1,set(i){let o=`${this.id}: ${r}`;for(let n of e[r])ld(this,n)||(this[n]=i);L.deprecated(o,e[r].join("/"))()}})}function v2(t,e){let r={},i={};for(let o in e){let n=e[o],{name:s,value:a}=n;n.async&&(r[s]=a,i[s]=M2(s))}t[zt]=r,t[yt]={},Object.defineProperties(t,i)}function M2(t){return{enumerable:!0,set(e){typeof e=="string"||e instanceof Promise||Oc(e)?this[yt][t]=e:this[qe][t]=e},get(){if(this[qe]){if(t in this[qe])return this[qe][t]||this[zt][t];if(t in this[yt]){let e=this[ji]&&this[ji].internalState;if(e&&e.hasAsyncProp(t))return e.getAsyncProp(t)||this[zt][t]}}return this[zt][t]}}}function ld(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function y0(t,e){return ld(t,e)&&t[e]}function C2(t){let e=t.componentName;return e||L.warn(`${t.name}.componentName not specified`)(),e||t.name}var I2=0,jn=class{constructor(...e){this.props=_0(this,e),this.id=this.props.id,this.count=I2++}clone(e){let{props:r}=this,i={};for(let o in r[zt])o in r[qe]?i[o]=r[qe][o]:o in r[yt]&&(i[o]=r[yt][o]);return new this.constructor({...r,...i,...e})}};jn.componentName="Component";jn.defaultProps={};var Ji=jn;var O2=Object.freeze({}),Zr=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||O2}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[ji]||this.component;let r=e[qe]||{},i=e[yt]||e,o=e[zt]||{};for(let n in r){let s=r[n];this._createAsyncPropData(n,o[n]),this._updateAsyncProp(n,s),r[n]=this.getAsyncProp(n)}for(let n in i){let s=i[n];this._createAsyncPropData(n,o[n]),this._updateAsyncProp(n,s)}}_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(Oc(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 o=this.asyncProps[e];o&&i>=o.resolvedLoadCount&&r!==void 0&&(this._freezeAsyncOldProps(),o.resolvedValue=r,o.resolvedLoadCount=i,this.onAsyncPropUpdated(e,r))}_watchPromise(e,r){let i=this.asyncProps[e];if(i){i.pendingLoadCount++;let o=i.pendingLoadCount;r.then(n=>{this.component&&(n=this._postProcessValue(i,n),this._setAsyncPropValue(e,n,o),this._onResolve(e,n))}).catch(n=>{this._onError(e,n)})}}async _resolveAsyncIterable(e,r){if(e!=="data"){this._setPropValue(e,r);return}let i=this.asyncProps[e];if(!i)return;i.pendingLoadCount++;let o=i.pendingLoadCount,n=[],s=0;for await(let a of r){if(!this.component)return;let{dataTransform:c}=this.component.props;c?n=c(a,n):n=n.concat(a),Object.defineProperty(n,"__diff",{enumerable:!1,value:[{startRow:s,endRow:n.length}]}),s=n.length,this._setAsyncPropValue(e,n,o)}this._onResolve(e,n)}_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 o=this.component&&this.component.props[We];this.asyncProps[e]={type:o&&o[e],lastValue:null,resolvedValue:r,pendingLoadCount:0,resolvedLoadCount:0}}}};var $n=class extends Zr{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,o=i?.props.fetch;return o?o(r,{propName:e,layer:i}):super._fetch(e,r)}_onResolve(e,r){let i=this.layer;if(i){let o=i.props.onDataLoad;e==="data"&&o&&o(r,{propName:e,layer:i})}}_onError(e,r){let i=this.layer;i&&i.raiseError(r,`loading ${e} of ${this.layer}`)}};var N2="layer.changeFlag",D2="layer.initialize",B2="layer.update",L2="layer.finalize",F2="layer.matched",b0=2**24-1,U2=Object.freeze([]),k2=ke(({oldViewport:t,viewport:e})=>t.equals(e)),ot=new Uint8ClampedArray(0),V2={data:{type:"data",value:U2,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:o,signal:n})=>{let{resourceManager:s}=r.context;o=o||r.getLoadOptions(),i=i||r.props.loaders,n&&(o={...o,core:{...o?.core,fetch:{...o?.core?.fetch,signal:n}}});let a=s.contains(t);return!a&&!o&&(s.add({resourceId:t,data:ur(t,i),persistent:!1}),a=!0),a?s.subscribe({resourceId:t,onChange:c=>r.internalState?.reloadAsyncProp(e,c),consumerId:r.id,requestId:e}):ur(t,i,o)}},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]}},Hn=class extends Ji{constructor(){super(...arguments),this.internalState=null,this.lifecycle=br.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=Eu(e,{viewport:r,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[o,n,s]=Li(i,r.pixelProjectionMatrix);return e.length===2?[o,n]:[o,n,s]}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 Oa(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,o]=e;return r+i*256+o*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:zc(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=zn(e,{disableWarnings:!0,modules:this.context.defaultShaderModules});for(let r of this.props.extensions)e=zn(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 o of i)r.invalidateAll(o);else r.invalidateAll();if(r){let{props:o}=e,n=this.internalState.hasPickingBuffer,s=Number.isInteger(o.highlightedObjectIndex)||Boolean(o.pickable)||o.extensions.some(a=>a.getNeedsPickingBuffer.call(this,a));if(n!==s){this.internalState.hasPickingBuffer=s;let{pickingColors:a,instancePickingColors:c}=r.attributes,l=a||c;l&&(s&&l.constant&&(l.constant=!1,r.invalidate(l.id)),!l.value&&!s&&(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:o}=e;return o>=0&&Array.isArray(this.props.data)&&(e.object=this.props.data[o]),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||!k2({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(),o=this.getStartIndices();e.update({data:r.data,numInstances:i,startIndices:o,props:r,transitions:r.transitions,buffers:r.data.attributes,context:this});let n=e.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(n)}_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 o in r)Object.defineProperty(i,o,{value:r[o]});return i}return this.props}calculateInstancePickingColors(e,{numInstances:r}){if(e.constant)return;let i=Math.floor(ot.length/4);if(this.internalState.usesPickingColorCache=!0,i<r){r>b0&&L.warn("Layer has too many data objects. Picking might not be able to distinguish all objects.")(),ot=Ze.allocate(ot,r,{size:4,copy:!0,maxCount:Math.max(r,b0)});let o=Math.floor(ot.length/4),n=[0,0,0];for(let s=i;s<o;s++)this.encodePickingColor(s,n),ot[s*4+0]=n[0],ot[s*4+1]=n[1],ot[s*4+2]=n[2],ot[s*4+3]=0}e.value=ot.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 o=e.userData?.excludeAttributes||{},n={},s={};for(let a in r){if(o[a])continue;let c=r[a].getValue();for(let l in c){let f=c[l];f instanceof I?r[a].settings.isIndexed?e.setIndexBuffer(f):n[l]=f:f&&(s[l]=f)}}e.setAttributes(n),e.setConstantAttributes(s)}disablePickingIndex(e){let r=this.props.data;if(!("attributes"in r)){this._disablePickingIndex(e);return}let{pickingColors:i,instancePickingColors:o}=this.getAttributeManager().attributes,n=i||o,s=n&&r.attributes&&r.attributes[n.id];if(s&&s.value){let a=s.value,c=this.encodePickingColor(e);for(let l=0;l<r.length;l++){let f=n.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,o=r||i;if(!o)return;let n=o.getVertexOffset(e),s=o.getVertexOffset(e+1);o.buffer.write(new Uint8Array(s-n),n)}restorePickingColors(){let{pickingColors:e,instancePickingColors:r}=this.getAttributeManager().attributes,i=e||r;i&&(this.internalState.usesPickingColorCache&&i.value.buffer!==ot.buffer&&(i.value=ot.subarray(0,i.value.length)),i.updateSubBuffer({startOffset:0}))}_initialize(){Y(!this.internalState),Y(Number.isFinite(this.props.coordinateSystem)),G(D2,this);let e=this._getAttributeManager();e&&e.addInstanced({instancePickingColors:{type:"uint8",size:4,noAlloc:!0,update:this.calculateInstancePickingColors}}),this.internalState=new $n({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 Vn(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){G(F2,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(G(B2,this,e),!e)return;this.context.stats.get("Layer updates").incrementCount();let r=this.props,i=this.context,o=this.internalState,n=i.viewport,s=this._updateUniformTransition();o.propsInTransition=s,i.viewport=o.viewport||n,this.props=s;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=n,this.props=r,this._clearChangeFlags(),o.needsUpdate=!1,o.resetOldProps()}}_finalize(){G(L2,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:o={}}){this._updateAttributeTransition();let n=this.props,s=this.context;this.props=this.internalState.propsInTransition||n;try{r&&this.setShaderModuleProps(r);let{getPolygonOffset:a}=this.props,c=a&&a(i)||[0,0];s.device instanceof it&&s.device.setParametersWebGL({polygonOffset:c});let l=s.device instanceof it?null:z2(o);if(W2(this.getModels(),e,o,l),s.device instanceof it)s.device.withParametersWebGL(o,()=>{let f={renderPass:e,shaderModuleProps:r,uniforms:i,parameters:o,context:s};for(let h of this.props.extensions)h.draw.call(this,f,h);this.draw(f)});else{l?.renderPassParameters&&e.setParameters(l.renderPassParameters);let f={renderPass:e,shaderModuleProps:r,uniforms:i,parameters:o,context:s};for(let h of this.props.extensions)h.draw.call(this,f,h);this.draw(f)}}finally{this.props=n}}getChangeFlags(){return this.internalState?.changeFlags}setChangeFlags(e){if(!this.internalState)return;let{changeFlags:r}=this.internalState;for(let o in e)if(e[o]){let n=!1;switch(o){case"dataChanged":let s=e[o],a=r[o];s&&Array.isArray(a)&&(r.dataChanged=Array.isArray(s)?a.concat(s):s,n=!0);default:r[o]||(r[o]=e[o],n=!0)}n&&G(N2,this,o,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=d0(e,r);if(i.updateTriggersChanged)for(let o in i.updateTriggersChanged)i.updateTriggersChanged[o]&&this.invalidateAttribute(o);if(i.transitionsChanged)for(let o in i.transitionsChanged)this.internalState.uniformTransitions.add(o,r[o],e[o],e.transitions?.[o]);return this.setChangeFlags(i)}validateProps(){u0(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 Kr(e.device,{id:this.props.id,stats:e.stats,timeline:e.timeline})}_postUpdate(e,r){let{props:i,oldProps:o}=e,n=this.state.model;n?.isInstanced&&n.setInstanceCount(this.getNumInstances());let{autoHighlight:s,highlightedObjectIndex:a,highlightColor:c}=i;if(r||o.autoHighlight!==s||o.highlightedObjectIndex!==a||o.highlightColor!==c){let l={};Array.isArray(c)&&(l.highlightColor=c),(r||o.autoHighlight!==s||a!==o.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(),o=i?i.getNeedsRedraw(e):!1;if(r=r||o,r)for(let n of this.props.extensions)n.onNeedsRedraw.call(this,n);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!e.clearRedrawFlags,r}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}};Hn.defaultProps=V2;Hn.layerName="Layer";var jc=Hn;function z2(t){let{blendConstant:e,...r}=t;return e?{pipelineParameters:r,renderPassParameters:{blendConstant:e}}:{pipelineParameters:r}}function W2(t,e,r,i){for(let o of t)o.device.type==="webgpu"?(j2(o,e),o.setParameters({...o.parameters,...i?.pipelineParameters})):o.setParameters(r)}function j2(t,e){let r=e.props.framebuffer||(e.framebuffer??null);if(!r)return;let i=r.colorAttachments.map(s=>s?.texture?.format??null),o=r.depthStencilAttachment?.texture?.format,n=t;(!$2(n.props.colorAttachmentFormats,i)||n.props.depthStencilAttachmentFormat!==o)&&(n.props.colorAttachmentFormats=i,n.props.depthStencilAttachmentFormat=o,n._setPipelineNeedsUpdate("attachment formats"))}function $2(t,e){if(t===e)return!0;if(!t||!e||t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}var H2="compositeLayer.renderLayers",$c=class extends jc{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,o)=>i&&i.__source?(r.index=i.__source.index,e(i.__source.object,r)):e(i,o)}return e}getSubLayerProps(e={}){let{opacity:r,pickable:i,visible:o,parameters:n,getPolygonOffset:s,highlightedObjectIndex:a,autoHighlight:c,highlightColor:l,coordinateSystem:f,coordinateOrigin:h,wrapLongitude:u,positionFormat:d,modelMatrix:p,extensions:g,fetch:m,operation:_,_subLayerProps:b}=this.props,y={id:"",updateTriggers:{},opacity:r,pickable:i,visible:o,parameters:n,getPolygonOffset:s,highlightedObjectIndex:a,autoHighlight:c,highlightColor:l,coordinateSystem:f,coordinateOrigin:h,wrapLongitude:u,positionFormat:d,modelMatrix:p,extensions:g,fetch:m,operation:_},T=b&&e.id&&b[e.id],S=T&&T.updateTriggers,A=e.id||"sublayer";if(T){let w=this.props[We],P=e.type?e.type._propTypes:{};for(let R in T){let v=P[R]||w[R];v&&v.type==="accessor"&&(T[R]=this.getSubLayerAccessor(T[R]))}}Object.assign(y,e,T),y.id=`${this.props.id}-${A}`,y.updateTriggers={all:this.props.updateTriggers?.all,...e.updateTriggers,...S};for(let w of g){let P=w.getSubLayerProps.call(this,w);P&&Object.assign(y,P,{updateTriggers:Object.assign(y.updateTriggers,P.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,o=!i||this.needsUpdate();if(o){let n=this.renderLayers();i=Tr(n,Boolean),this.internalState.subLayers=i}G(H2,this,o,i);for(let n of i)n.parent=this}};$c.layerName="CompositeLayer";var T0=$c;var fd=Math.PI/180;function X2({height:t,focalDistance:e,orbitAxis:r,rotationX:i,rotationOrbit:o,zoom:n}){let s=r==="Z"?[0,0,1]:[0,1,0],a=r==="Z"?[0,-e,0]:[0,0,e],c=new z().lookAt({eye:a,up:s});c.rotateX(i*fd),r==="Z"?c.rotateZ(o*fd):c.rotateY(o*fd);let l=Math.pow(2,n)/t;return c.scale(l),c}var Hc=class extends Se{constructor(e){let{height:r,projectionMatrix:i,fovy:o=50,orbitAxis:n="Z",target:s=[0,0,0],rotationX:a=0,rotationOrbit:c=0,zoom:l=0}=e,f=i?i[5]/2:Ut(o);super({...e,longitude:void 0,viewMatrix:X2({height:r||1,focalDistance:f,orbitAxis:n,rotationX:a,rotationOrbit:c,zoom:l}),fovy:o,focalDistance:f,position:s,zoom:l}),this.target=s,this.orbitAxis=n,this.rotationX=a,this.rotationOrbit=c,this.fovy=o,this.projectedCenter=this.project(this.center)}unproject(e,{topLeft:r=!0}={}){let[i,o,n=this.projectedCenter[2]]=e,s=r?o:this.height-o,[a,c,l]=ze([i,s,n],this.pixelUnprojectionMatrix);return[a,c,l]}panByPosition(e,r,i){let o=this.project(e),{near:n,far:s}=sy(this.projectionMatrix),a=n*s/(s-o[2]*(s-n)),c=n*s/(s-this.projectedCenter[2]*(s-n)),l=a/c,f=[this.width/2+(o[0]-r[0])*l,this.height/2+(o[1]-r[1])*l,this.projectedCenter[2]];return{target:this.unproject(f)}}};Hc.displayName="OrbitViewport";var Xc=Hc;var Y2=new z().lookAt({eye:[0,0,1]});function K2({width:t,height:e,near:r,far:i,padding:o}){let n=-t/2,s=t/2,a=-e/2,c=e/2;if(o){let{left:l=0,right:f=0,top:h=0,bottom:u=0}=o,d=U((l+t-f)/2,0,t)-t/2,p=U((h+e-u)/2,0,e)-e/2;n-=d,s-=d,a+=p,c+=p}return new z().ortho({left:n,right:s,bottom:a,top:c,near:r,far:i})}var Yc=class extends Se{constructor(e){let{width:r,height:i,near:o=.1,far:n=1e3,zoom:s=0,target:a=[0,0,0],padding:c=null,flipY:l=!0}=e,f=e.zoomX??(Array.isArray(s)?s[0]:s),h=e.zoomY??(Array.isArray(s)?s[1]:s),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:Y2.clone().scale([d,d*(l?-1:1),d]),projectionMatrix:K2({width:r||1,height:i||1,padding:c,near:o,far:n}),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 o=ze(r,this.pixelUnprojectionMatrix),n=this.projectFlat(e),s=ee.add([],n,ee.negate([],o)),a=ee.add([],this.center,s);return{target:this.unprojectFlat(a)}}};Yc.displayName="OrthographicViewport";var Kc=Yc;var Zc=class extends Se{constructor(e){let{longitude:r,latitude:i,modelMatrix:o,bearing:n=0,pitch:s=0,up:a=[0,0,1]}=e,l=new je({bearing:n,pitch:s===-90?1e-4:90+s}).toVector3().normalize(),f=o?new z(o).transformAsVector(l):l,h=Number.isFinite(i)?rn({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=s,this.bearing=n,this.up=a}};Zc.displayName="FirstPersonViewport";var qc=Zc;var qr=20,x0=500,Xn=class extends Qe{constructor(e){let{width:r,height:i,position:o=[0,0,0],bearing:n=0,pitch:s=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:o,bearing:n,pitch:s,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:o,height:n,bearing:s,pitch:a}=this.getViewportProps(),c=x0*(e[0]-r[0])/o,l=x0*(e[1]-r[1])/n,f=new je({bearing:s,pitch:a}),h=new je({bearing:s,pitch:-90}),u=f.toVector3().normalize(),d=h.toVector3().cross(u).normalize();return this._getUpdatedState({position:new $(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:o,startBearing:n,startPitch:s}=this.getState(),{width:a,height:c}=this.getViewportProps();if(!o||n===void 0||s===void 0)return this;let l;if(e){let f=(e[0]-o[0])/a,h=(e[1]-o[1])/c;l={bearing:n-f*180,pitch:s-h*90}}else l={bearing:n-r,pitch:s-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(),o=this.getState().startZoomPosition||i.position,n=this.makeViewport(i),{projectionMatrix:s,width:a}=n,l=2*Math.atan(1/s[0])*(e[0]/a-.5),f=this.getDirection(!0);return this._move(f.rotateZ({radians:-l}),Math.log2(r)*qr,o)}zoomEnd(){return this._getUpdatedState({startZoomPosition:null})}moveLeft(e=qr){let r=this.getDirection(!0);return this._move(r.rotateZ({radians:Math.PI/2}),e)}moveRight(e=qr){let r=this.getDirection(!0);return this._move(r.rotateZ({radians:-Math.PI/2}),e)}moveUp(e=qr){let r=this.getDirection(!0);return this._move(r,e)}moveDown(e=qr){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=qr){return this._move(new $(0,0,1),e)}zoomOut(e=qr){return this._move(new $(0,0,-1),e)}shortestPathFrom(e){let r=e.getViewportProps(),i={...this.getViewportProps()},{bearing:o,longitude:n}=i;return Math.abs(o-r.bearing)>180&&(i.bearing=o<0?o+360:o-360),n!==null&&r.longitude!==null&&Math.abs(n-r.longitude)>180&&(i.longitude=n<0?n+360:n-360),i}_move(e,r,i=this.getViewportProps().position){let o=e.scale(r);return this._getUpdatedState({position:new $(i).add(o)})}getDirection(e=!1){return new je({bearing:this.getViewportProps().bearing,pitch:e?90:90+this.getViewportProps().pitch}).toVector3().normalize()}_getUpdatedState(e){return new Xn({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}applyConstraints(e){let{pitch:r,maxPitch:i,minPitch:o,longitude:n,position:s,bearing:a,maxBounds:c}=e;if(e.pitch=U(r,o,i),n!==null&&(n<-180||n>180)&&(e.longitude=_t(n+180,360)-180),(a<-180||a>180)&&(e.bearing=_t(a+180,360)-180),c){let l=U(s[0],c[0][0],c[1][0]),f=U(s[1],c[0][1],c[1][1]),h=U(s[2]??0,c[0][2]??0,c[1][2]??0);(l!==s[0]||f!==s[1]||h!==s[2])&&(e.position=[l,f,h])}return e}},Gr=class extends be{constructor(){super(...arguments),this.ControllerState=Xn,this.transition={transitionDuration:300,transitionInterpolator:new ae(["position","pitch","bearing"])}}};var Gc=class extends ye{constructor(e={}){super(e)}getViewportType(){return qc}get ControllerType(){return Gr}};Gc.displayName="FirstPersonView";var A0=Gc;var hd=class extends Qe{constructor(e){let{width:r,height:i,rotationX:o=0,rotationOrbit:n=0,target:s=[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:b}=e;super({width:r,height:i,rotationX:o,rotationOrbit:n,target:s,zoom:a,minRotationX:c,maxRotationX:l,minZoom:f,maxZoom:h,maxBounds:u},{startPanPosition:d,startRotatePos:p,startRotationX:g,startRotationOrbit:m,startZoomPosition:_,startZoom:b},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 n=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(n)}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:o,startRotationX:n,startRotationOrbit:s}=this.getState(),{width:a,height:c}=this.getViewportProps();if(!o||n===void 0||s===void 0)return this;let l;if(e){let f=(e[0]-o[0])/a,h=(e[1]-o[1])/c;(n<-90||n>90)&&(f*=-1),l={rotationX:n+h*180,rotationOrbit:s+f*180}}else l={rotationX:n+i,rotationOrbit:s+r};return this._getUpdatedState(l)}rotateEnd(){return this._getUpdatedState({startRotationX:null,startRotationOrbit:null})}shortestPathFrom(e){let r=e.getViewportProps(),i={...this.getViewportProps()},{rotationOrbit:o}=i;return Math.abs(o-r.rotationOrbit)>180&&(i.rotationOrbit=o<0?o+360:o-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:o,startZoomPosition:n}=this.getState();if(n||(o=this.getViewportProps().zoom,n=this._unproject(r||e)),!n)return this;let s=this._calculateNewZoom({scale:i,startZoom:o}),a=this.makeViewport({...this.getViewportProps(),zoom:s});return this._getUpdatedState({zoom:s,...a.panByPosition(n,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:o}=e;return e.zoom=this._constrainZoom(e.zoom,e),e.rotationX=U(e.rotationX,i,r),(o<-180||o>180)&&(e.rotationOrbit=_t(o+180,360)-180),e.target=this._constrainTarget(e),e}_constrainZoom(e,r){r||(r=this.getViewportProps());let{maxZoom:i,maxBounds:o}=r,{minZoom:n}=r;if(o&&r.width>0&&r.height>0){let s=o[1][0]-o[0][0],a=o[1][1]-o[0][1],c=(o[1][2]??0)-(o[0][2]??0),l=Math.sqrt(s*s+a*a+c*c);l>0&&(n=Math.max(n,Math.log2(Math.min(r.width,r.height)/l)),n>i&&(n=i))}return U(e,n,i)}_constrainTarget(e){let{target:r,maxBounds:i}=e;if(!i)return r;let[[o,n,s=0],[a,c,l=0]]=i;if(r[0]>=o&&r[0]<=a&&r[1]>=n&&r[1]<=c&&r[2]>=s&&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?o:a)+d*(d>=0?n:c)+p*(p>=0?s:l),_=u*(u>=0?a:o)+d*(d>=0?c:n)+p*(p>=0?l:s);if((u||d||p)&&g>=m&&g<=_){let b=O=>U(O,o,a),y=O=>U(O,n,c),T=O=>U(O,s,l),S=O=>u*b(r[0]-O*u)+d*y(r[1]-O*d)+p*T(r[2]-O*p)-g,A=-1,w=1,P=S(A),R=S(w);for(;P<0;)w=A,R=P,A*=2,P=S(A);for(;R>0;)A=w,P=R,w*=2,R=S(w);for(let O=0;O<30;O++){let C=(A+w)/2;S(C)>0?A=C:w=C}let v=(A+w)/2;return[b(r[0]-v*u),y(r[1]-v*d),T(r[2]-v*p)]}}return[U(r[0],o,a),U(r[1],n,c),U(r[2],s,l)]}},Qr=class extends be{constructor(){super(...arguments),this.ControllerState=hd,this.transition={transitionDuration:300,transitionInterpolator:new ae({transitionProps:{compare:["target","zoom","rotationX","rotationOrbit"],required:["target","zoom"]}})},this._unproject3D=e=>{if(this.pickPosition){let{x:r,y:i}=this.props,o=this.pickPosition(r+e[0],i+e[1]);if(o&&o.coordinate)return o.coordinate}return null}}setProps(e){e.unproject3D=this._unproject3D,super.setProps(e)}};var Qc=class extends ye{constructor(e={}){super(e),this.props.orbitAxis=e.orbitAxis||"Z"}getViewportType(){return Xc}get ControllerType(){return Qr}};Qc.displayName="OrbitView";var S0=Qc;function E0({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 ud=class extends Qe{constructor(e){let{width:r,height:i,target:o=[0,0,0],zoom:n=0,zoomAxis:s="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:b}=E0(e);super({width:r,height:i,target:o,zoom:n,zoomX:_,zoomY:b,zoomAxis:s,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 n=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(n)}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:o,startZoomPosition:n}=this.getState();if(!n){let{zoomX:c,zoomY:l}=this.getViewportProps();o=[c,l],n=this._unproject(r||e)}if(!n)return this;let s=this._constrainZoom(this._calculateNewZoom({scale:i,startZoom:o})),a=this.makeViewport({...this.getViewportProps(),...s});return this._getUpdatedState({...s,...a.panByPosition(n,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:o,zoomAxis:n}=this.getViewportProps();r===void 0&&(r=[i,o]);let s=Math.log2(e),[a,c]=r;switch(n){case"X":a+=s;break;case"Y":c+=s;break;default:a+=s,c+=s}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:o,target:n}=e;if(o){let s=e.width/2/2**r,a=e.height/2/2**i,c=o[0][0]+s,l=o[1][0]-s,f=o[0][1]+a,h=o[1][1]-a,u=U(n[0],c,l),d=U(n[1],f,h);(u!==n[0]||d!==n[1])&&(e.target=n.slice(),e.target[0]=u,e.target[1]=d)}return e}_constrainZoom({zoomX:e,zoomY:r},i){i||(i=this.getViewportProps());let{zoomAxis:o,maxZoomX:n,maxZoomY:s,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>n&&(c=n)),Number.isFinite(p)&&p>0&&(l=Math.max(l,Math.log2(i.height/p)),l>s&&(l=s))}switch(o){case"X":e=U(e,c,n);break;case"Y":r=U(r,l,s);break;default:let h=Math.min(n-e,s-r,0);h===0&&(h=Math.max(c-e,l-r,0)),h!==0&&(e+=h,r+=h)}return{zoomX:e,zoomY:r}}},Jr=class extends be{constructor(){super(...arguments),this.ControllerState=ud,this.transition={transitionDuration:300,transitionInterpolator:new ae(["target","zoomX","zoomY"])},this.dragMode="pan"}setProps(e){Object.assign(e,E0(e)),super.setProps(e)}_onPanRotate(){return!1}};var Jc=class extends ye{constructor(e={}){super(e)}getViewportType(){return Kc}get ControllerType(){return Jr}};Jc.displayName="OrthographicView";var w0=Jc;var dd=Math.PI/180,Z2=180/Math.PI;function R0(t,e=0){let r=Math.min(180,t)*dd;return Ht*2*Math.sin(r/2)*Math.pow(2,e)}function P0(t,e=0){let r=t/Math.pow(2,e);return Math.asin(Math.min(1,r/Ht/2))*2*Z2}var pd=class extends _n{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:o}=this.getViewportProps();return this._getUpdatedState({startPanLngLat:[i,r],startPanPos:e,startZoom:o})}pan({pos:e,startPos:r}){let i=this.getState(),o=i.startPanLngLat||this._unproject(r);if(!o)return this;let n=i.startZoom??this.getViewportProps().zoom,s=i.startPanPos||r,a=[o[0],o[1],n],l=this.makeViewport(this.getViewportProps()).panByPosition(a,e,s);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:o}=e;if(e.zoom=this._constrainZoom(e.zoom,e),(r<-180||r>180)&&(e.longitude=_t(r+180,360)-180),e.latitude=U(i,-me,me),o&&(e.longitude=U(e.longitude,o[0][0],o[1][0]),e.latitude=U(e.latitude,o[0][1],o[1][1])),o){let n=e.zoom-bt(i),s=o[1][0]-o[0][0],a=o[1][1]-o[0][1];if(a>0&&a<me*2){let c=Math.min(P0(e.height,n),a)/2;e.latitude=U(e.latitude,o[0][1]+c,o[1][1]-c)}if(s>0&&s<360){let c=Math.min(P0(e.width/Math.cos(e.latitude*dd),n),s)/2;e.longitude=U(e.longitude,o[0][0]+c,o[1][0]-c)}}return e.latitude!==i&&(e.zoom+=bt(e.latitude)-bt(i)),e}_constrainZoom(e,r){r||(r=this.getViewportProps());let{latitude:i,maxZoom:o,maxBounds:n}=r,{minZoom:s}=r,a=bt(0),c=bt(i)-a;if(n!==null&&r.width>0&&r.height>0){let f=n[0][1],h=n[1][1],u=Math.sign(f)===Math.sign(h)?Math.min(Math.abs(f),Math.abs(h)):0,d=R0(n[1][0]-n[0][0])*Math.cos(u*dd),p=R0(n[1][1]-n[0][1]);d>0&&(s=Math.max(s,Math.log2(r.width/d)+a)),p>0&&(s=Math.max(s,Math.log2(r.height/p)+a)),s>o&&(s=o)}return U(e,s+c,o+c)}},ei=class extends be{constructor(){super(...arguments),this.ControllerState=pd,this.transition={transitionDuration:300,transitionInterpolator:new ae(["longitude","latitude","zoom"])},this.dragMode="pan"}setProps(e){super.setProps(e),this.dragRotate=!1,this.touchRotate=!1}};var el=class extends ye{constructor(e={}){super(e)}getViewportType(e){return e.zoom>12?yr:$i}get ControllerType(){return ei}};el.displayName="GlobeView";var v0=el;var Yn=class extends Yt{constructor(){super(...arguments),this._terrainAltitude=void 0,this._terrainAltitudeTarget=void 0,this._pickFrameId=null,this._lastPickTime=0}setProps(e){if(super.setProps({rotationPivot:"3d",...e}),this._pickFrameId===null){let r=()=>{let i=Date.now();if(i-this._lastPickTime>500&&!this.isDragging()&&(this._lastPickTime=i,this._pickTerrainCenterAltitude(),this._terrainAltitude===void 0&&this._terrainAltitudeTarget!==void 0)){this._terrainAltitude=this._terrainAltitudeTarget;let o=new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),n=this._rebaseViewport(this._terrainAltitudeTarget,o);if(n){let s=new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state,...n});super.updateViewport(s)}}this._pickFrameId=requestAnimationFrame(r)};this._pickFrameId=requestAnimationFrame(r)}}finalize(){this._pickFrameId!==null&&(cancelAnimationFrame(this._pickFrameId),this._pickFrameId=null),super.finalize()}updateViewport(e,r=null,i={}){if(this._terrainAltitude===void 0){super.updateViewport(e,r,i);return}let o=.05;this._terrainAltitude+=(this._terrainAltitudeTarget-this._terrainAltitude)*o;let s=e.getViewportProps().position||[0,0,0];r={...r,position:[s[0],s[1],this._terrainAltitude]},super.updateViewport(e,r,i)}_pickTerrainCenterAltitude(){if(!this.pickPosition)return;let{x:e,y:r,width:i,height:o}=this.props,n=this.pickPosition(e+i/2,r+o/2);n?.coordinate&&n.coordinate.length>=3&&(this._terrainAltitudeTarget=n.coordinate[2])}_rebaseViewport(e,r){let i=r.getViewportProps(),o=this.makeViewport({...i,position:[0,0,0]}),n=o.cameraPosition,s=e*o.distanceScales.unitsPerMeter[2],a=n[2],c=a-s;if(c<=0)return null;let l=Math.log2(a/c),f=i.zoom+l,h=this.makeViewport({...i,zoom:f,position:[0,0,e]}),{width:u,height:d}=i,p=[u/2,d/2],g=o.unproject(p,{targetZ:e});if(g&&"panByPosition3D"in h&&typeof h.panByPosition3D=="function"){let m=h.panByPosition3D(g,p);return{position:[0,0,e],zoom:f,...m}}return null}};var Kn=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&&Z(this.opts,e.opts,1)}getShaders(e){return null}getSubLayerProps(e){let{defaultProps:r}=e.constructor,i={updateTriggers:{}};for(let o in r)if(o in this.props){let n=r[o],s=this.props[o];i[o]=s,n&&n.type==="accessor"&&(i.updateTriggers[o]=this.props.updateTriggers[o],typeof s=="function"&&(i[o]=this.getSubLayerAccessor(s)))}return i}initializeState(e,r){}updateState(e,r){}onNeedsRedraw(e){}getNeedsPickingBuffer(e){return!1}draw(e,r){}finalizeState(e,r){}};Kn.defaultProps={};Kn.extensionName="LayerExtension";var M0=Kn;var gd={bearing:0,pitch:0,position:[0,0,0]},q2={speed:1.2,curve:1.414},Zn=class extends $t{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={...q2,...e}}interpolateProps(e,r,i){let o=yu(e,r,i,this.opts);for(let n in gd)o[n]=Ot(e[n]||gd[n],r[n]||gd[n],i);return o}getDuration(e,r){let{transitionDuration:i}=r;return i==="auto"&&(i=bu(e,r,this.opts)),i}};F();var qn=class{constructor(e){this.indexStarts=[0],this.vertexStarts=[0],this.vertexCount=0,this.instanceCount=0;let{attributes:r={}}=e;this.typedArrayManager=Ze,this.attributes={},this._attributeDefs=r,this.opts=e,this.updateGeometry(e)}updateGeometry(e){Object.assign(this.opts,e);let{data:r,buffers:i={},getGeometry:o,geometryBuffer:n,positionFormat:s,dataChanged:a,normalize:c=!0}=this.opts;if(this.data=r,this.getGeometry=o,this.positionSize=n&&n.size||(s==="XY"?2:3),this.buffers=i,this.normalize=c,n&&(Y(r.startIndices),this.getGeometry=this.getGeometryFromBuffer(n),c||(i.vertexPositions=n)),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)?Nc(r,{size:this.positionSize,offset:e.offset,stride:e.stride,startIndices:this.data.startIndices}):null}_allocate(e,r){let{attributes:i,buffers:o,_attributeDefs:n,typedArrayManager:s}=this;for(let a in n)if(a in o)s.release(i[a]),i[a]=null;else{let c=n[a];c.copy=r,i[a]=s.allocate(i[a],e,c)}}_forEachGeometry(e,r,i){let{data:o,getGeometry:n}=this,{iterable:s,objectInfo:a}=Gi(o,r,i);for(let c of s){a.index++;let l=n?n(c,a):null;e(l,a.index)}}_rebuildGeometry(e){if(!this.data)return;let{indexStarts:r,vertexStarts:i,instanceCount:o}=this,{data:n,geometryBuffer:s}=this,{startRow:a=0,endRow:c=1/0}=e||{},l={};if(e||(r=[0],i=[0]),this.normalize||!s)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),o=i[i.length-1];else if(i=n.startIndices,o=i[n.length]||0,ArrayBuffer.isView(s))o=o||s.length/this.positionSize;else if(s instanceof I){let h=this.positionSize*4;o=o||s.byteLength/h}else if(s.buffer){let h=s.stride||this.positionSize*4;o=o||s.buffer.byteLength/h}else if(s.value){let h=s.value,u=s.stride/h.BYTES_PER_ELEMENT||this.positionSize;o=o||h.length/u}this._allocate(o,Boolean(e)),this.indexStarts=r,this.vertexStarts=i,this.instanceCount=o;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]:o;f.geometrySize=p-i[u],f.geometryIndex=u,this.updateGeometryAttributes(d,f)},a,c),this.vertexCount=r[r.length-1]}};var tl=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,...C0(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 o=e.width!==r.width||e.height!==r.height;o&&(this.width=r.width,this.height=r.height,this.map.resize());let n=e.viewState,s=r.viewState,a=s.latitude!==n.latitude||s.longitude!==n.longitude||s.zoom!==n.zoom||s.pitch!==n.pitch||s.bearing!==n.bearing;return a&&this.map.jumpTo(C0(s)),o||a}};function C0(t){return{center:[t.longitude,t.latitude],zoom:t.zoom,bearing:t.bearing??0,pitch:t.pitch??0}}var I0={position:"absolute",left:0,top:0,width:"100%",height:"100%"};function G2(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,I0);let o=document.createElement("canvas");return e.appendChild(o),Object.assign(o.style,I0),{container:e,mapCanvas:i,deckCanvas:o}}var Gn=class extends Ic{constructor(e){if(typeof document>"u")throw Error("Deck can only be used in the browser");let{mapCanvas:r,deckCanvas:i}=G2(e),o=e.viewState||e.initialViewState,n=Number.isFinite(o&&o.latitude),{map:s=globalThis.mapboxgl||globalThis.maplibregl}=e;super({canvas:i,...e}),s&&s.Map?this._map=n&&new tl({...e,width:0,height:0,viewState:o,container:r,mapLib:s}):this._map=s}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,xh);Object.assign(globalThis.loaders,Zh);return F0(Q2);})();
2015
2078
  return __exports__;
2016
2079
  });