UNPKG

@deck.gl/core

Version:

deck.gl core library

8 lines 663 kB
(function webpackUniversalModuleDefinition(root, factory) { if (typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if (typeof define === 'function' && define.amd) define([], factory); else if (typeof exports === 'object') exports['deck'] = factory(); else root['deck'] = factory();})(globalThis, function () { "use strict";var __exports__=(()=>{var Jn=Object.defineProperty;var N0=Object.getOwnPropertyDescriptor;var D0=Object.getOwnPropertyNames;var B0=Object.prototype.hasOwnProperty;var F0=(t,e,r)=>e in t?Jn(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)Jn(t,r,{get:e[r],enumerable:!0})},L0=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of D0(e))!B0.call(t,o)&&o!==r&&Jn(t,o,{get:()=>e[o],enumerable:!(i=N0(e,o))||i.enumerable});return t};var U0=t=>L0(Jn({},"__esModule",{value:!0}),t);var M=(t,e,r)=>(F0(t,typeof e!="symbol"?e+"":e,r),r);function to(){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 ol=E(()=>{});var Er,nl=E(()=>{ol();Er=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=to(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(to()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}}});var Oe,bd=E(()=>{nl();Oe=class{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,r="count"){return this._getOrCreate({name:e,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let e of Object.values(this.stats))e.reset();return this}forEach(e){for(let r of Object.values(this.stats))e(r)}getTable(){let e={};return this.forEach(r=>{e[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),e}_initializeStats(e=[]){e.forEach(r=>this._getOrCreate(r))}_getOrCreate(e){let{name:r,type:i}=e,o=this.stats[r];return o||(e instanceof Er?o=e:o=new Er(r,i),this.stats[r]=o),o}}});var ro=E(()=>{bd();nl();ol()});function z0(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=Td.get(t);if(!i&&n?.orderedStatNames===e&&n.statCount===o)return;let s={},a=xd.get(e);a||(a=new Set(e),xd.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),Td.set(t,{orderedStatNames:e,statCount:o})}var k0,V0,Td,xd,sl,es,al=E(()=>{ro();k0="GPU Time and Memory",V0=["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"],Td=new WeakMap,xd=new WeakMap,sl=class{stats=new Map;getStats(e){return this.get(e)}get(e){this.stats.has(e)||this.stats.set(e,new Oe({id:e}));let r=this.stats.get(e);return e===k0&&z0(r,V0),r}},es=new sl});var ts,W0,rs,j0,Ad,cl=E(()=>{ts=globalThis,W0=globalThis.document||{},rs=globalThis.process||{},j0=globalThis.console,Ad=globalThis.navigator||{}});function is(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 ll=E(()=>{});function le(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||is()}var fl=E(()=>{ll()});function hl(t){return!t&&!le()?"Node":is(t)?"Electron":(t||Ad.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var Sd=E(()=>{fl();ll();cl()});var ul,Kt=E(()=>{cl();fl();Sd();ul="4.1.1"});function ri(t,e){if(!t)throw new Error(e||"Assertion failed")}var dl=E(()=>{});function pl(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 ri(Number.isFinite(e)&&e>=0),e}function Ed(t){let{logLevel:e,message:r}=t;t.logLevel=pl(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 ri(o==="string"||o==="object"),Object.assign(t,{args:i},t.opts)}var wd=E(()=>{dl()});var wr,os,Rd=E(()=>{wd();wr=()=>{},os=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=Ed({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 wr;let o=this._getOnceTag(i.tag??r.tag??r.message);if((i.once||r.once)&&o!==void 0){if(this._onceCache.has(o))return wr;this._onceCache.add(o)}return this._emit(e,r)}_shouldLog(e){return this.getLevel()>=pl(e)}_getOnceTag(e){if(e!==void 0)try{return typeof e=="string"?e:String(e)}catch{return}}}});function H0(t){try{let e=window[t],r="__storage_test__";return e.setItem(r,r),e.removeItem(r),e}catch{return null}}var ns,Pd=E(()=>{ns=class{constructor(e,r,i="sessionStorage"){this.storage=H0(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 vd(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 Md(t,e=8){let r=Math.max(e-t.length,0);return`${" ".repeat(r)}${t}`}var Cd=E(()=>{});function Id(t){return typeof t!="string"?t:(t=t.toUpperCase(),ss[t]||ss.WHITE)}function Od(t,e,r){return!le&&typeof t=="string"&&(e&&(t=`\x1B[${Id(e)}m${t}\x1B[39m`),r&&(t=`\x1B[${Id(r)+X0}m${t}\x1B[49m`)),t}var ss,X0,Nd=E(()=>{Kt();(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"})(ss||(ss={}));X0=10});function Dd(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 Bd=E(()=>{});function ii(){let t;if(le()&&ts.performance)t=ts?.performance?.now?.();else if("hrtime"in rs){let e=rs?.hrtime?.();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}var Fd=E(()=>{Kt()});function Y0(t,e,r){if(typeof e=="string"){let i=r.time?Md(vd(r.total)):"";e=r.time?`${t}: ${i} ${e}`:`${t}: ${e}`,e=Od(e,r.color,r.background)}return e}function K0(t){for(let e in t)for(let r in t[e])return r||"untitled";return"empty"}var oi,gl,fe,ml=E(()=>{Kt();Rd();Pd();Cd();Nd();Bd();dl();Fd();oi={debug:le()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},gl={enabled:!0,level:0},fe=class extends os{constructor({id:e}={id:""}){super({level:0}),this.VERSION=ul,this._startTs=ii(),this._deltaTs=ii(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=e,this.userData={},this._storage=new ns(`__probe-${this.id}__`,{[this.id]:gl}),this.timeStamp(`${this.id} started`),Dd(this),Object.seal(this)}isEnabled(){return this._getConfiguration().enabled}getLevel(){return this._getConfiguration().level}getTotal(){return Number((ii()-this._startTs).toPrecision(10))}getDelta(){return Number((ii()-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:oi.warn,once:!0})}error(e,...r){return this._log("error",0,e,r,{method:oi.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:oi.log,time:!0,once:!0})}log(e,r,...i){return this._log("log",e,r,i,{method:oi.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:oi.debug||oi.info,once:!0})}table(e,r,i){return r?this._log("table",e,r,i&&[i]||[],{method:console.table||wr,tag:K0(r)}):wr}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||wr})}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||wr})}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;ri(i),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=ii();let o=Y0(this.id,r.message,r);return i.bind(console,o,...r.args)}_getConfiguration(){return this._storage.config[this.id]||this._updateConfiguration(gl),this._storage.config[this.id]}_updateConfiguration(e){let r=this._storage.config[this.id]||{...gl};this._storage.setConfiguration({[this.id]:{...r,...e}})}};fe.VERSION=ul});var Ld=E(()=>{globalThis.probe={}});var qM,io=E(()=>{ml();ml();Ld();qM=new fe({id:"@probe.gl/log"})});var x,Ne=E(()=>{io();x=new fe({id:"luma.gl"})});function ot(t="id"){_l[t]=_l[t]||1;let e=_l[t]++;return`${t}-${e}`}var _l,ni=E(()=>{_l={}});function eT(t,e){let r={...e};for(let i in t)t[i]!==void 0&&(r[i]=t[i]);return r}function jd(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=zd.get(t);if(!i&&n?.orderedStatNames===e&&n.statCount===o)return;let s={},a=Wd.get(e);a||(a=new Set(e),Wd.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),zd.set(t,{orderedStatNames:e,statCount:o})}function $d(t){return t.type==="webgl"?J0:Q0}function oo(t){let e=t.userData[Z0];return e?.enabled?e:null}function Zt(){return globalThis.performance?.now?.()??Date.now()}function tT(t,e){let r=oo(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 rT(t){let e=Object.getPrototypeOf(t);for(;e;){let r=Object.getPrototypeOf(e);if(!r||r===D.prototype)return iT(e)||t[Symbol.toStringTag]||t.constructor.name;e=r}return t[Symbol.toStringTag]||t.constructor.name}function iT(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 Z0,Ud,kd,Vd,q0,G0,Q0,J0,zd,Wd,D,ne=E(()=>{ni();Z0="cpu-hotspot-profiler",Ud="GPU Resource Counts",kd="Resource Counts",Vd="GPU Time and Memory",q0=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],G0=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","SharedRenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],Q0=q0.flatMap(t=>[`${t} Created`,`${t} Active`]),J0=G0.flatMap(t=>[`${t} Created`,`${t} Active`]),zd=new WeakMap,Wd=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=eT(r,i);let o=this.props.id!=="undefined"?this.props.id:ot(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=oo(this._device),r=e?Zt():0,i=[this._device.statsManager.getStats(Ud),this._device.statsManager.getStats(kd)],o=$d(this._device);for(let s of i)jd(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)+(Zt()-r))}trackAllocatedMemory(e,r=this.getStatsName()){let i=oo(this._device),o=i?Zt():0,n=this._device.statsManager.getStats(Vd);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)+(Zt()-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=oo(this._device),i=r?Zt():0,o=this._device.statsManager.getStats(Vd);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)+(Zt()-i)),this.allocatedBytes=0,this.allocatedBytesName=null}trackDeallocatedReferencedMemory(e=this.getStatsName()){this.trackDeallocatedMemory(`Referenced ${e}`)}addStats(){let e=this.getStatsName(),r=oo(this._device),i=r?Zt():0,o=[this._device.statsManager.getStats(Ud),this._device.statsManager.getStats(kd)],n=$d(this._device);for(let s of o)jd(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)+(Zt()-i)),tT(this._device,e)}getStatsName(){return rT(this)}};M(D,"defaultProps",{id:"undefined",handle:void 0,userData:void 0})});var no,I,as=E(()=>{ne();no=class extends D{get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(e,r){let i={...r};(r.usage||0)&no.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,no.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,no.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=no;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 bl,he,yl,cs=E(()=>{bl=class{getDataTypeInfo(e){let[r,i,o]=yl[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(yl).find(o=>r===o[4]);if(!i)throw new Error(r.name);return i[0]}getTypedArrayConstructor(e){let[,,,,r]=yl[e];return r}},he=new bl,yl={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 Tl,Pt,ls=E(()=>{cs();Tl=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=he.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?he.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=he.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}`}},Pt=new Tl});function Rl(t){let e=Yd[t];if(!e)throw new Error(`Unsupported texture format ${t}`);return e}function Xd(){return Yd}var ae,H,nt,oT,fs,xl,hs,Al,nT,Sl,qt,El,wl,us,Hd,sT,aT,Yd,Pl=E(()=>{ae="texture-compression-bc",H="texture-compression-astc",nt="texture-compression-etc2",oT="texture-compression-etc1-webgl",fs="texture-compression-pvrtc-webgl",xl="texture-compression-atc-webgl",hs="float32-renderable-webgl",Al="float16-renderable-webgl",nT="rgb9e5ufloat-renderable-webgl",Sl="snorm8-renderable-webgl",qt="norm16-webgl",El="norm16-renderable-webgl",wl="snorm16-renderable-webgl",us="float32-filterable",Hd="float16-filterable-webgl";sT={r8unorm:{},rg8unorm:{},"rgb8unorm-webgl":{},rgba8unorm:{},"rgba8unorm-srgb":{},r8snorm:{render:Sl},rg8snorm:{render:Sl},"rgb8snorm-webgl":{},rgba8snorm:{render:Sl},r8uint:{},rg8uint:{},rgba8uint:{},r8sint:{},rg8sint:{},rgba8sint:{},bgra8unorm:{},"bgra8unorm-srgb":{},r16unorm:{f:qt,render:El},rg16unorm:{f:qt,render:El},"rgb16unorm-webgl":{f:qt,render:!1},rgba16unorm:{f:qt,render:El},r16snorm:{f:qt,render:wl},rg16snorm:{f:qt,render:wl},"rgb16snorm-webgl":{f:qt,render:!1},rgba16snorm:{f:qt,render:wl},r16uint:{},rg16uint:{},rgba16uint:{},r16sint:{},rg16sint:{},rgba16sint:{},r16float:{render:Al,filter:"float16-filterable-webgl"},rg16float:{render:Al,filter:Hd},rgba16float:{render:Al,filter:Hd},r32uint:{},rg32uint:{},rgba32uint:{},r32sint:{},rg32sint:{},rgba32sint:{},r32float:{render:hs,filter:us},rg32float:{render:!1,filter:us},"rgb32float-webgl":{render:hs,filter:us},rgba32float:{render:hs,filter:us},"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:nT},rg11b10ufloat:{channels:"rgb",bitsPerChannel:[11,11,10,0],packed:!0,p:1,render:hs},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}},aT={"bc1-rgb-unorm-webgl":{f:ae},"bc1-rgb-unorm-srgb-webgl":{f:ae},"bc1-rgba-unorm":{f:ae},"bc1-rgba-unorm-srgb":{f:ae},"bc2-rgba-unorm":{f:ae},"bc2-rgba-unorm-srgb":{f:ae},"bc3-rgba-unorm":{f:ae},"bc3-rgba-unorm-srgb":{f:ae},"bc4-r-unorm":{f:ae},"bc4-r-snorm":{f:ae},"bc5-rg-unorm":{f:ae},"bc5-rg-snorm":{f:ae},"bc6h-rgb-ufloat":{f:ae},"bc6h-rgb-float":{f:ae},"bc7-rgba-unorm":{f:ae},"bc7-rgba-unorm-srgb":{f:ae},"etc2-rgb8unorm":{f:nt},"etc2-rgb8unorm-srgb":{f:nt},"etc2-rgb8a1unorm":{f:nt},"etc2-rgb8a1unorm-srgb":{f:nt},"etc2-rgba8unorm":{f:nt},"etc2-rgba8unorm-srgb":{f:nt},"eac-r11unorm":{f:nt},"eac-r11snorm":{f:nt},"eac-rg11unorm":{f:nt},"eac-rg11snorm":{f:nt},"astc-4x4-unorm":{f:H},"astc-4x4-unorm-srgb":{f:H},"astc-5x4-unorm":{f:H},"astc-5x4-unorm-srgb":{f:H},"astc-5x5-unorm":{f:H},"astc-5x5-unorm-srgb":{f:H},"astc-6x5-unorm":{f:H},"astc-6x5-unorm-srgb":{f:H},"astc-6x6-unorm":{f:H},"astc-6x6-unorm-srgb":{f:H},"astc-8x5-unorm":{f:H},"astc-8x5-unorm-srgb":{f:H},"astc-8x6-unorm":{f:H},"astc-8x6-unorm-srgb":{f:H},"astc-8x8-unorm":{f:H},"astc-8x8-unorm-srgb":{f:H},"astc-10x5-unorm":{f:H},"astc-10x5-unorm-srgb":{f:H},"astc-10x6-unorm":{f:H},"astc-10x6-unorm-srgb":{f:H},"astc-10x8-unorm":{f:H},"astc-10x8-unorm-srgb":{f:H},"astc-10x10-unorm":{f:H},"astc-10x10-unorm-srgb":{f:H},"astc-12x10-unorm":{f:H},"astc-12x10-unorm-srgb":{f:H},"astc-12x12-unorm":{f:H},"astc-12x12-unorm-srgb":{f:H},"pvrtc-rgb4unorm-webgl":{f:fs},"pvrtc-rgba4unorm-webgl":{f:fs},"pvrtc-rgb2unorm-webgl":{f:fs},"pvrtc-rgba2unorm-webgl":{f:fs},"etc1-rbg-unorm-webgl":{f:oT},"atc-rgb-unorm-webgl":{f:xl},"atc-rgba-unorm-webgl":{f:xl},"atc-rgbai-unorm-webgl":{f:xl}},Yd={...sT,...aT}});function uT({format:t,width:e,height:r,depth:i,byteAlignment:o}){let n=ue.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 dT(t){let e=Rl(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=Kd(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 Kd(t){let e=pT(t);if(ue.isCompressed(t)){e.channels="rgb",e.components=3,e.bytesPerPixel=1,e.srgb=!1,e.compressed=!0,e.bytesPerBlock=mT(t);let i=gT(t);i&&(e.blockWidth=i.blockWidth,e.blockHeight=i.blockHeight)}let r=e.packed?null:cT.exec(t);if(r){let[,i,o,n,s,a]=r,c=`${n}${o}`,l=he.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 pT(t){let e=Rl(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 gT(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 mT(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 cT,lT,fT,hT,vl,ue,ds=E(()=>{cs();Pl();cT=/^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/,lT=["rgb","rgba","bgra"],fT=["depth","stencil"],hT=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],vl=class{isColor(e){return lT.some(r=>e.startsWith(r))}isDepthStencil(e){return fT.some(r=>e.startsWith(r))}isCompressed(e){return hT.some(r=>e.startsWith(r))}getInfo(e){return Kd(e)}getCapabilities(e){return dT(e)}computeMemoryLayout(e){return uT(e)}},ue=new vl});function si(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 so(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 Ml=E(()=>{});function _T(t,e){let r=Cl(t),i=e.map(Cl).filter(o=>o!==void 0);return[r,...i].filter(o=>o!==void 0)}function Cl(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(Cl);if(typeof t=="object"){if(yT(t)){let e=String(t);if(e!=="[object Object]")return e}return bT(t)?TT(t):t.constructor?.name||"Object"}return String(t)}}function yT(t){return"toString"in t&&typeof t.toString=="function"&&t.toString!==Object.prototype.toString}function bT(t){return"message"in t&&"type"in t}function TT(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 xT(t,e){return t!=null?Boolean(t):e!==void 0?e!=="production":!1}function AT(){return xT(x.get("debug"),ST())}function ST(){let t=globalThis.process;if(t?.env)return t.env.NODE_ENV}var ao,co,Il,be,Ol=E(()=>{al();Ne();ni();as();ls();ds();Ml();Pl();ao=class{};co=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)}},Il=class{get[Symbol.toStringTag](){return"Device"}toString(){return`Device(${this.id})`}id;props;userData={};statsManager=es;_factories={};timestamp=0;_reused=!1;_moduleData={};_textureCaps={};_debugGPUTimeQuery=null;constructor(e){this.props={...Il.defaultProps,...e},this.id=this.props.id||ot(this[Symbol.toStringTag].toLowerCase())}getVertexFormatInfo(e){return Pt.getVertexFormatInfo(e)}isVertexFormatSupported(e){return!0}getTextureFormatInfo(e){return ue.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 si(e)}getExternalImageSize(e){return so(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 ue.isCompressed(e)}getSupportedCompressedTextureFormats(){let e=[];for(let r of Object.keys(Xd()))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=_T(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', 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=ue.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}},be=Il;M(be,"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:AT(),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 ET,Zd,gs,ps,Gt,qd=E(()=>{Ol();al();Ne();ET="set luma.log.level=1 (or higher) to trace rendering",Zd="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.",gs=class{stats=es;log=x;VERSION="9.3.3";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} - ${ET}`)(),globalThis.luma=this}async createDevice(e={}){let r={...gs.defaultProps,...e},i=this.selectAdapter(r.type,r.adapters);if(!i)throw new Error(Zd);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(Zd);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(gs.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)}},ps=gs;M(ps,"defaultProps",{...be.defaultProps,type:"best-available",adapters:void 0,waitForPageLoad:!0});Gt=new ps});function PT(){return ms||(RT()||typeof window>"u"?ms=Promise.resolve():ms=new Promise(t=>window.addEventListener("load",()=>t()))),ms}var lo,wT,RT,ms,Gd=E(()=>{Kt();lo=class{get pageLoaded(){return PT()}},wT=le()&&typeof document<"u",RT=()=>wT&&document.readyState==="complete",ms=null});var _s,Qd=E(()=>{_s=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 Jd(){let t,e;return{promise:new Promise((i,o)=>{t=i,e=o}),resolve:t,reject:e}}var ep=E(()=>{});function Nl(t,e){if(!t){let r=new Error(e??"luma.gl assertion failed.");throw Error.captureStackTrace?.(r,Nl),r}}function Rr(t,e){return Nl(t,e),t}var Dl=E(()=>{});function vT(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 MT(t){let e=document.getElementById(t);if(!vt.isHTMLCanvas(e))throw new Error("Object is not a canvas element");return e}function CT(t){let{width:e,height:r}=t,i=document.createElement("canvas");i.id=ot("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=vT(t?.container||null);return o.insertBefore(i,o.firstChild),i}function IT(t,e,r,i,o){let n=t,s=tp(n[0],e,r),a=rp(n[1],e,i,o),c=tp(n[0]+1,e,r),l=c===r-1?c:c-1;c=rp(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 tp(t,e,r){return Math.min(Math.round(t*e),r-1)}function rp(t,e,r,i){return i?Math.max(0,r-1-Math.round(t*e)):Math.min(Math.round(t*e),r-1)}var fo,vt,Bl=E(()=>{Kt();Qd();ni();ep();Dl();fo=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=Jd();_canvasObserver;_position=[0,0];destroyed=!1;_needsDrawingBufferResize=!0;toString(){return`${this[Symbol.toStringTag]}(${this.id})`}constructor(e){this.props={...fo.defaultProps,...e},e=this.props,this.initialized=this._initializedResolvers.promise,le()?e.canvas?typeof e.canvas=="string"?this.canvas=MT(e.canvas):this.canvas=e.canvas:this.canvas=CT(e):this.canvas={width:e.width||1,height:e.height||1},fo.isHTMLCanvas(this.canvas)?(this.id=e.id||this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):fo.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 _s({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 IT(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=Rr(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})}}}},vt=fo;M(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 ai,ip=E(()=>{Bl();ai=class extends vt{};M(ai,"defaultProps",vt.defaultProps)});var ho,op=E(()=>{Bl();ho=class extends vt{}});var ys,De,Fl=E(()=>{ne();ys=class extends D{get[Symbol.toStringTag](){return"Sampler"}constructor(e,r){r=ys.normalizeProps(e,r),super(e,r,ys.defaultProps)}static normalizeProps(e,r){return r}},De=ys;M(De,"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 OT,Se,B,Ll=E(()=>{ne();Fl();Ne();ds();OT={"1d":"1d","2d":