deck.gl
Version:
A suite of 3D-enabled data visualization overlays, suitable for react-map-gl
8 lines • 1.62 MB
JavaScript
(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 sH=Object.create;var vl=Object.defineProperty;var aH=Object.getOwnPropertyDescriptor;var cH=Object.getOwnPropertyNames;var lH=Object.getPrototypeOf,uH=Object.prototype.hasOwnProperty;var fH=(t,e,r)=>e in t?vl(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var FE=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var B=(t,e)=>()=>(t&&(e=t(t=0)),e);var Tl=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Xe=(t,e)=>{for(var r in e)vl(t,r,{get:e[r],enumerable:!0})},NE=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of cH(e))!uH.call(t,n)&&n!==r&&vl(t,n,{get:()=>e[n],enumerable:!(i=aH(e,n))||i.enumerable});return t};var wn=(t,e,r)=>(r=t!=null?sH(lH(t)):{},NE(e||!t||!t.__esModule?vl(r,"default",{value:t,enumerable:!0}):r,t)),dH=t=>NE(vl({},"__esModule",{value:!0}),t);var k=(t,e,r)=>(fH(t,typeof e!="symbol"?e+"":e,r),r);var op,yH,sp,xH,UE,Lx=B(()=>{op=globalThis,yH=globalThis.document||{},sp=globalThis.process||{},xH=globalThis.console,UE=globalThis.navigator||{}});function ap(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 Bx=B(()=>{});function Ot(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||ap()}var Ox=B(()=>{Bx()});function Fx(t){return!t&&!Ot()?"Node":ap(t)?"Electron":(t||UE.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var kE=B(()=>{Ox();Bx();Lx()});var Nx,Pn=B(()=>{Lx();Ox();kE();Nx="4.1.1"});function ea(t,e){if(!t)throw new Error(e||"Assertion failed")}var Dx=B(()=>{});function Ux(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 ea(Number.isFinite(e)&&e>=0),e}function VE(t){let{logLevel:e,message:r}=t;t.logLevel=Ux(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 n=typeof t.message;return ea(n==="string"||n==="object"),Object.assign(t,{args:i},t.opts)}var zE=B(()=>{Dx()});var wo,cp,HE=B(()=>{zE();wo=()=>{},cp=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,n,o={}){let s=VE({logLevel:r,message:i,args:this._buildArgs(r,i,n),opts:o});return this._createLogFunction(e,s,o)}_buildArgs(e,r,i){return[e,r,...i]}_createLogFunction(e,r,i){if(!this._shouldLog(r.logLevel))return wo;let n=this._getOnceTag(i.tag??r.tag??r.message);if((i.once||r.once)&&n!==void 0){if(this._onceCache.has(n))return wo;this._onceCache.add(n)}return this._emit(e,r)}_shouldLog(e){return this.getLevel()>=Ux(e)}_getOnceTag(e){if(e!==void 0)try{return typeof e=="string"?e:String(e)}catch{return}}}});function AH(t){try{let e=window[t],r="__storage_test__";return e.setItem(r,r),e.removeItem(r),e}catch{return null}}var lp,jE=B(()=>{lp=class{constructor(e,r,i="sessionStorage"){this.storage=AH(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 GE(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 WE(t,e=8){let r=Math.max(e-t.length,0);return`${" ".repeat(r)}${t}`}var $E=B(()=>{});function XE(t){return typeof t!="string"?t:(t=t.toUpperCase(),up[t]||up.WHITE)}function YE(t,e,r){return!Ot&&typeof t=="string"&&(e&&(t=`\x1B[${XE(e)}m${t}\x1B[39m`),r&&(t=`\x1B[${XE(r)+vH}m${t}\x1B[49m`)),t}var up,vH,KE=B(()=>{Pn();(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"})(up||(up={}));vH=10});function qE(t,e=["constructor"]){let r=Object.getPrototypeOf(t),i=Object.getOwnPropertyNames(r),n=t;for(let o of i){let s=n[o];typeof s=="function"&&(e.find(a=>o===a)||(n[o]=s.bind(t)))}}var ZE=B(()=>{});function ta(){let t;if(Ot()&&op.performance)t=op?.performance?.now?.();else if("hrtime"in sp){let e=sp?.hrtime?.();t=e[0]*1e3+e[1]/1e6}else t=Date.now();return t}var JE=B(()=>{Pn()});function TH(t,e,r){if(typeof e=="string"){let i=r.time?WE(GE(r.total)):"";e=r.time?`${t}: ${i} ${e}`:`${t}: ${e}`,e=YE(e,r.color,r.background)}return e}function SH(t){for(let e in t)for(let r in t[e])return r||"untitled";return"empty"}var ra,kx,Ft,Vx=B(()=>{Pn();HE();jE();$E();KE();ZE();Dx();JE();ra={debug:Ot()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},kx={enabled:!0,level:0},Ft=class extends cp{constructor({id:e}={id:""}){super({level:0}),this.VERSION=Nx,this._startTs=ta(),this._deltaTs=ta(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=e,this.userData={},this._storage=new lp(`__probe-${this.id}__`,{[this.id]:kx}),this.timeStamp(`${this.id} started`),qE(this),Object.seal(this)}isEnabled(){return this._getConfiguration().enabled}getLevel(){return this._getConfiguration().level}getTotal(){return Number((ta()-this._startTs).toPrecision(10))}getDelta(){return Number((ta()-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:ra.warn,once:!0})}error(e,...r){return this._log("error",0,e,r,{method:ra.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:ra.log,time:!0,once:!0})}log(e,r,...i){return this._log("log",e,r,i,{method:ra.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:ra.debug||ra.info,once:!0})}table(e,r,i){return r?this._log("table",e,r,i&&[i]||[],{method:console.table||wo,tag:SH(r)}):wo}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||wo})}group(e,r,i={collapsed:!1}){let n=(i.collapsed?console.groupCollapsed:console.group)||console.info;return this._log("group",e,r,[],{method:n})}groupCollapsed(e,r,i={}){return this.group(e,r,Object.assign({},i,{collapsed:!0}))}groupEnd(e){return this._log("groupEnd",e,"",[],{method:console.groupEnd||wo})}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;ea(i),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=ta();let n=TH(this.id,r.message,r);return i.bind(console,n,...r.args)}_getConfiguration(){return this._storage.config[this.id]||this._updateConfiguration(kx),this._storage.config[this.id]}_updateConfiguration(e){let r=this._storage.config[this.id]||{...kx};this._storage.setConfiguration({[this.id]:{...r,...e}})}};Ft.VERSION=Nx});var QE=B(()=>{globalThis.probe={}});var zx,ia=B(()=>{Vx();Vx();QE();zx=new Ft({id:"@probe.gl/log"})});function Il(){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 sb=B(()=>{});var Io,ab=B(()=>{sb();Io=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=Il(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(Il()-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 Et,pw=B(()=>{ab();Et=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,n=this.stats[r];return n||(e instanceof Io?n=e:n=new Io(r,i),this.stats[r]=n),n}}});var Lo=B(()=>{pw();ab();sb()});function o9(t,e){let r=t.stats,i=!1;for(let c of e)r[c]||(t.get(c),i=!0);let n=Object.keys(r).length,o=WM.get(t);if(!i&&o?.orderedStatNames===e&&o.statCount===n)return;let s={},a=$M.get(e);a||(a=new Set(e),$M.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),WM.set(t,{orderedStatNames:e,statCount:n})}var i9,n9,WM,$M,OA,Kp,FA=B(()=>{Lo();i9="GPU Time and Memory",n9=["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"],WM=new WeakMap,$M=new WeakMap,OA=class{stats=new Map;getStats(e){return this.get(e)}get(e){this.stats.has(e)||this.stats.set(e,new Et({id:e}));let r=this.stats.get(e);return e===i9&&o9(r,n9),r}},Kp=new OA});var P,Tr=B(()=>{ia();P=new Ft({id:"luma.gl"})});function yi(t="id"){NA[t]=NA[t]||1;let e=NA[t]++;return`${t}-${e}`}var NA,xa=B(()=>{NA={}});function f9(t,e){let r={...e};for(let i in t)t[i]!==void 0&&(r[i]=t[i]);return r}function JM(t,e){let r=t.stats,i=!1;for(let c of e)r[c]||(t.get(c),i=!0);let n=Object.keys(r).length,o=qM.get(t);if(!i&&o?.orderedStatNames===e&&o.statCount===n)return;let s={},a=ZM.get(e);a||(a=new Set(e),ZM.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),qM.set(t,{orderedStatNames:e,statCount:n})}function QM(t){return t.type==="webgl"?u9:l9}function tu(t){let e=t.userData[s9];return e?.enabled?e:null}function zn(){return globalThis.performance?.now?.()??Date.now()}function d9(t,e){let r=tu(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 h9(t){let e=Object.getPrototypeOf(t);for(;e;){let r=Object.getPrototypeOf(e);if(!r||r===J.prototype)return p9(e)||t[Symbol.toStringTag]||t.constructor.name;e=r}return t[Symbol.toStringTag]||t.constructor.name}function p9(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 s9,XM,YM,KM,a9,c9,l9,u9,qM,ZM,J,xt=B(()=>{xa();s9="cpu-hotspot-profiler",XM="GPU Resource Counts",YM="Resource Counts",KM="GPU Time and Memory",a9=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],c9=["Resources","Buffers","Textures","Samplers","TextureViews","Framebuffers","QuerySets","Shaders","RenderPipelines","SharedRenderPipelines","ComputePipelines","PipelineLayouts","VertexArrays","RenderPasss","ComputePasss","CommandEncoders","CommandBuffers"],l9=a9.flatMap(t=>[`${t} Created`,`${t} Active`]),u9=c9.flatMap(t=>[`${t} Created`,`${t} Active`]),qM=new WeakMap,ZM=new WeakMap,J=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=f9(r,i);let n=this.props.id!=="undefined"?this.props.id:yi(this[Symbol.toStringTag]);this.props.id=n,this.id=n,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=tu(this._device),r=e?zn():0,i=[this._device.statsManager.getStats(XM),this._device.statsManager.getStats(YM)],n=QM(this._device);for(let s of i)JM(s,n);let o=this.getStatsName();for(let s of i)s.get("Resources Active").decrementCount(),s.get(`${o}s Active`).decrementCount();e&&(e.statsBookkeepingCalls=(e.statsBookkeepingCalls||0)+1,e.statsBookkeepingTimeMs=(e.statsBookkeepingTimeMs||0)+(zn()-r))}trackAllocatedMemory(e,r=this.getStatsName()){let i=tu(this._device),n=i?zn():0,o=this._device.statsManager.getStats(KM);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)+(zn()-n)),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=tu(this._device),i=r?zn():0,n=this._device.statsManager.getStats(KM);n.get("GPU Memory").subtractCount(this.allocatedBytes),n.get(`${this.allocatedBytesName||e} Memory`).subtractCount(this.allocatedBytes),r&&(r.statsBookkeepingCalls=(r.statsBookkeepingCalls||0)+1,r.statsBookkeepingTimeMs=(r.statsBookkeepingTimeMs||0)+(zn()-i)),this.allocatedBytes=0,this.allocatedBytesName=null}trackDeallocatedReferencedMemory(e=this.getStatsName()){this.trackDeallocatedMemory(`Referenced ${e}`)}addStats(){let e=this.getStatsName(),r=tu(this._device),i=r?zn():0,n=[this._device.statsManager.getStats(XM),this._device.statsManager.getStats(YM)],o=QM(this._device);for(let s of n)JM(s,o);for(let s of n)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)+(zn()-i)),d9(this._device,e)}getStatsName(){return h9(this)}};k(J,"defaultProps",{id:"undefined",handle:void 0,userData:void 0})});var ru,K,qp=B(()=>{xt();ru=class extends J{get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(e,r){let i={...r};(r.usage||0)&ru.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,ru.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 n=null,o;ArrayBuffer.isView(e)?(n=e,o=e.buffer):o=e;let s=Math.min(e?e.byteLength:i,ru.DEBUG_DATA_MAX_LENGTH);if(o===null)this.debugData=new ArrayBuffer(s);else{let a=Math.min(n?.byteOffset||0,o.byteLength),c=Math.max(0,o.byteLength-a),l=Math.min(s,c);this.debugData=new Uint8Array(o,a,l).slice().buffer}}},K=ru;k(K,"INDEX",16),k(K,"VERTEX",32),k(K,"UNIFORM",64),k(K,"STORAGE",128),k(K,"INDIRECT",256),k(K,"QUERY_RESOLVE",512),k(K,"MAP_READ",1),k(K,"MAP_WRITE",2),k(K,"COPY_SRC",4),k(K,"COPY_DST",8),k(K,"DEBUG_DATA_MAX_LENGTH",32),k(K,"defaultProps",{...J.defaultProps,usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",onMapped:void 0})});var UA,Ut,DA,Zp=B(()=>{UA=class{getDataTypeInfo(e){let[r,i,n]=DA[e],o=e.includes("norm"),s=!o&&!e.startsWith("float"),a=e.startsWith("s");return{signedType:r,primitiveType:i,byteLength:n,normalized:o,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(DA).find(n=>r===n[4]);if(!i)throw new Error(r.name);return i[0]}getTypedArrayConstructor(e){let[,,,,r]=DA[e];return r}},Ut=new UA,DA={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 kA,$i,Jp=B(()=>{Zp();kA=class{getVertexFormatInfo(e){let r;e.endsWith("-webgl")&&(e.replace("-webgl",""),r=!0);let[i,n]=e.split("x"),o=i,s=n?parseInt(n):1,a=Ut.getDataTypeInfo(o),c={type:o,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 n=i?Ut.getNormalizedDataType(e):e;switch(n){case"unorm8":return r===1?"unorm8":r===3?"unorm8x3-webgl":`${n}x${r}`;case"snorm8":return r===1?"snorm8":r===3?"snorm8x3-webgl":`${n}x${r}`;case"uint8":case"sint8":if(r===1||r===3)throw new Error(`size: ${r}`);return`${n}x${r}`;case"uint16":return r===1?"uint16":r===3?"uint16x3-webgl":`${n}x${r}`;case"sint16":return r===1?"sint16":r===3?"sint16x3-webgl":`${n}x${r}`;case"unorm16":return r===1?"unorm16":r===3?"unorm16x3-webgl":`${n}x${r}`;case"snorm16":return r===1?"snorm16":r===3?"snorm16x3-webgl":`${n}x${r}`;case"float16":if(r===1||r===3)throw new Error(`size: ${r}`);return`${n}x${r}`;default:return r===1?n:`${n}x${r}`}}getVertexFormatFromAttribute(e,r,i){if(!r||r>4)throw new Error(`size ${r}`);let n=r,o=Ut.getDataType(e);return this.makeVertexFormat(o,n,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}`}},$i=new kA});function WA(t){let e=rR[t];if(!e)throw new Error(`Unsupported texture format ${t}`);return e}function tR(){return rR}var wt,we,xi,m9,Qp,VA,em,zA,g9,HA,Hn,jA,GA,tm,eR,_9,y9,rR,$A=B(()=>{wt="texture-compression-bc",we="texture-compression-astc",xi="texture-compression-etc2",m9="texture-compression-etc1-webgl",Qp="texture-compression-pvrtc-webgl",VA="texture-compression-atc-webgl",em="float32-renderable-webgl",zA="float16-renderable-webgl",g9="rgb9e5ufloat-renderable-webgl",HA="snorm8-renderable-webgl",Hn="norm16-webgl",jA="norm16-renderable-webgl",GA="snorm16-renderable-webgl",tm="float32-filterable",eR="float16-filterable-webgl";_9={r8unorm:{},rg8unorm:{},"rgb8unorm-webgl":{},rgba8unorm:{},"rgba8unorm-srgb":{},r8snorm:{render:HA},rg8snorm:{render:HA},"rgb8snorm-webgl":{},rgba8snorm:{render:HA},r8uint:{},rg8uint:{},rgba8uint:{},r8sint:{},rg8sint:{},rgba8sint:{},bgra8unorm:{},"bgra8unorm-srgb":{},r16unorm:{f:Hn,render:jA},rg16unorm:{f:Hn,render:jA},"rgb16unorm-webgl":{f:Hn,render:!1},rgba16unorm:{f:Hn,render:jA},r16snorm:{f:Hn,render:GA},rg16snorm:{f:Hn,render:GA},"rgb16snorm-webgl":{f:Hn,render:!1},rgba16snorm:{f:Hn,render:GA},r16uint:{},rg16uint:{},rgba16uint:{},r16sint:{},rg16sint:{},rgba16sint:{},r16float:{render:zA,filter:"float16-filterable-webgl"},rg16float:{render:zA,filter:eR},rgba16float:{render:zA,filter:eR},r32uint:{},rg32uint:{},rgba32uint:{},r32sint:{},rg32sint:{},rgba32sint:{},r32float:{render:em,filter:tm},rg32float:{render:!1,filter:tm},"rgb32float-webgl":{render:em,filter:tm},rgba32float:{render:em,filter:tm},"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:g9},rg11b10ufloat:{channels:"rgb",bitsPerChannel:[11,11,10,0],packed:!0,p:1,render:em},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}},y9={"bc1-rgb-unorm-webgl":{f:wt},"bc1-rgb-unorm-srgb-webgl":{f:wt},"bc1-rgba-unorm":{f:wt},"bc1-rgba-unorm-srgb":{f:wt},"bc2-rgba-unorm":{f:wt},"bc2-rgba-unorm-srgb":{f:wt},"bc3-rgba-unorm":{f:wt},"bc3-rgba-unorm-srgb":{f:wt},"bc4-r-unorm":{f:wt},"bc4-r-snorm":{f:wt},"bc5-rg-unorm":{f:wt},"bc5-rg-snorm":{f:wt},"bc6h-rgb-ufloat":{f:wt},"bc6h-rgb-float":{f:wt},"bc7-rgba-unorm":{f:wt},"bc7-rgba-unorm-srgb":{f:wt},"etc2-rgb8unorm":{f:xi},"etc2-rgb8unorm-srgb":{f:xi},"etc2-rgb8a1unorm":{f:xi},"etc2-rgb8a1unorm-srgb":{f:xi},"etc2-rgba8unorm":{f:xi},"etc2-rgba8unorm-srgb":{f:xi},"eac-r11unorm":{f:xi},"eac-r11snorm":{f:xi},"eac-rg11unorm":{f:xi},"eac-rg11snorm":{f:xi},"astc-4x4-unorm":{f:we},"astc-4x4-unorm-srgb":{f:we},"astc-5x4-unorm":{f:we},"astc-5x4-unorm-srgb":{f:we},"astc-5x5-unorm":{f:we},"astc-5x5-unorm-srgb":{f:we},"astc-6x5-unorm":{f:we},"astc-6x5-unorm-srgb":{f:we},"astc-6x6-unorm":{f:we},"astc-6x6-unorm-srgb":{f:we},"astc-8x5-unorm":{f:we},"astc-8x5-unorm-srgb":{f:we},"astc-8x6-unorm":{f:we},"astc-8x6-unorm-srgb":{f:we},"astc-8x8-unorm":{f:we},"astc-8x8-unorm-srgb":{f:we},"astc-10x5-unorm":{f:we},"astc-10x5-unorm-srgb":{f:we},"astc-10x6-unorm":{f:we},"astc-10x6-unorm-srgb":{f:we},"astc-10x8-unorm":{f:we},"astc-10x8-unorm-srgb":{f:we},"astc-10x10-unorm":{f:we},"astc-10x10-unorm-srgb":{f:we},"astc-12x10-unorm":{f:we},"astc-12x10-unorm-srgb":{f:we},"astc-12x12-unorm":{f:we},"astc-12x12-unorm-srgb":{f:we},"pvrtc-rgb4unorm-webgl":{f:Qp},"pvrtc-rgba4unorm-webgl":{f:Qp},"pvrtc-rgb2unorm-webgl":{f:Qp},"pvrtc-rgba2unorm-webgl":{f:Qp},"etc1-rbg-unorm-webgl":{f:m9},"atc-rgb-unorm-webgl":{f:VA},"atc-rgba-unorm-webgl":{f:VA},"atc-rgbai-unorm-webgl":{f:VA}},rR={..._9,...y9}});function T9({format:t,width:e,height:r,depth:i,byteAlignment:n}){let o=bt.getInfo(t),{bytesPerPixel:s,bytesPerBlock:a=s,blockWidth:c=1,blockHeight:l=1,compressed:u=!1}=o,f=u?Math.ceil(e/c):e,d=u?Math.ceil(r/l):r,h=f*a,p=Math.ceil(h/n)*n,m=d,g=p*m*i;return{bytesPerPixel:s,bytesPerRow:p,rowsPerImage:m,depthOrArrayLayers:i,bytesPerImage:p*m,byteLength:g}}function S9(t){let e=WA(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=iR(t),n=t.startsWith("depth")||t.startsWith("stencil"),o=i?.signed,s=i?.integer,a=i?.webgl,c=Boolean(i?.compressed);return r.render&&=!n&&!c,r.filter&&=!n&&!o&&!s&&!a,r}function iR(t){let e=C9(t);if(bt.isCompressed(t)){e.channels="rgb",e.components=3,e.bytesPerPixel=1,e.srgb=!1,e.compressed=!0,e.bytesPerBlock=w9(t);let i=E9(t);i&&(e.blockWidth=i.blockWidth,e.blockHeight=i.blockHeight)}let r=e.packed?null:x9.exec(t);if(r){let[,i,n,o,s,a]=r,c=`${o}${n}`,l=Ut.getDataTypeInfo(c),u=l.byteLength*8,f=i?.length??1,d=[u,f>=2?u:0,f>=3?u:0,f>=4?u:0];e={format:t,attachment:e.attachment,dataType:l.signedType,components:f,channels:i,integer:l.integer,signed:l.signed,normalized:l.normalized,bitsPerChannel:d,bytesPerPixel:l.byteLength*f,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 C9(t){let e=WA(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 E9(t){let r=/.*-(\d+)x(\d+)-.*/.exec(t);if(r){let[,i,n]=r;return{blockWidth:Number(i),blockHeight:Number(n)}}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 w9(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 x9,b9,A9,v9,XA,bt,rm=B(()=>{Zp();$A();x9=/^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/,b9=["rgb","rgba","bgra"],A9=["depth","stencil"],v9=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],XA=class{isColor(e){return b9.some(r=>e.startsWith(r))}isDepthStencil(e){return A9.some(r=>e.startsWith(r))}isCompressed(e){return v9.some(r=>e.startsWith(r))}getInfo(e){return iR(e)}getCapabilities(e){return S9(e)}computeMemoryLayout(e){return T9(e)}},bt=new XA});function ba(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 iu(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 YA=B(()=>{});function P9(t,e){let r=KA(t),i=e.map(KA).filter(n=>n!==void 0);return[r,...i].filter(n=>n!==void 0)}function KA(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(KA);if(typeof t=="object"){if(M9(t)){let e=String(t);if(e!=="[object Object]")return e}return R9(t)?I9(t):t.constructor?.name||"Object"}return String(t)}}function M9(t){return"toString"in t&&typeof t.toString=="function"&&t.toString!==Object.prototype.toString}function R9(t){return"message"in t&&"type"in t}function I9(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,n=typeof t.linePos=="number"?t.linePos:null,o=i!==null&&n!==null?` @ ${i}:${n}`:i!==null?` @ ${i}`:"";return`${e}${o}: ${r}`.trim()}function L9(t,e){return t!=null?Boolean(t):e!==void 0?e!=="production":!1}function B9(){return L9(P.get("debug"),O9())}function O9(){let t=globalThis.process;if(t?.env)return t.env.NODE_ENV}var nu,ou,qA,Xt,ZA=B(()=>{FA();Tr();xa();qp();Jp();rm();YA();$A();nu=class{};ou=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)}},qA=class{get[Symbol.toStringTag](){return"Device"}toString(){return`Device(${this.id})`}id;props;userData={};statsManager=Kp;_factories={};timestamp=0;_reused=!1;_moduleData={};_textureCaps={};_debugGPUTimeQuery=null;constructor(e){this.props={...qA.defaultProps,...e},this.id=this.props.id||yi(this[Symbol.toStringTag].toLowerCase())}getVertexFormatInfo(e){return $i.getVertexFormatInfo(e)}isVertexFormatSupported(e){return!0}getTextureFormatInfo(e){return bt.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 n=Math.max(e,r,i);return 1+Math.floor(Math.log2(n))}isExternalImage(e){return ba(e)}getExternalImageSize(e){return iu(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 bt.isCompressed(e)}getSupportedCompressedTextureFormats(){let e=[];for(let r of Object.keys(tR()))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=P9(r,i);return P.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',
or create a device with the 'debug: true' prop.`;P.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,n,o){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=bt.getCapabilities(e),i=o=>(typeof o=="string"?this.features.has(o):o)??!0,n=i(r.create);return{format:e,create:n,render:n&&i(r.render),filter:n&&i(r.filter),blend:n&&i(r.blend),store:n&&i(r.store)}}_normalizeBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});let r={...e};if((e.usage||0)&K.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}},Xt=qA;k(Xt,"defaultProps",{id:null,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,createCanvasContext:void 0,webgl:{},onError:(e,r)=>{},onResize:(e,r)=>{let[i,n]=e.getDevicePixelSize();P.log(1,`${e} resized => ${i}x${n}px`)()},onPositionChange:(e,r)=>{let[i,n]=e.getPosition();P.log(1,`${e} repositioned => ${i},${n}`)()},onVisibilityChange:e=>P.log(1,`${e} Visibility changed ${e.isVisible}`)(),onDevicePixelRatioChange:(e,r)=>P.log(1,`${e} DPR changed ${r.oldRatio} => ${e.devicePixelRatio}`)(),debug:B9(),debugGPUTime:!1,debugShaders:P.get("debug-shaders")||void 0,debugFramebuffers:Boolean(P.get("debug-framebuffers")),debugFactories:Boolean(P.get("debug-factories")),debugWebGL:Boolean(P.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 F9,nR,nm,im,bi,oR=B(()=>{ZA();FA();Tr();F9="set luma.log.level=1 (or higher) to trace rendering",nR="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.",nm=class{stats=Kp;log=P;VERSION="9.3.3";spector;preregisteredAdapters=new Map;constructor(){if(globalThis.luma){if(globalThis.luma.VERSION!==this.VERSION)throw P.error(`Found luma.gl ${globalThis.luma.VERSION} while initialzing ${this.VERSION}`)(),P.error("'yarn why @luma.gl/core' can help identify the source of the conflict")(),new Error("luma.gl - multiple versions detected: see console log");P.error("This version of luma.gl has already been initialized")()}P.log(1,`${this.VERSION} - ${F9}`)(),globalThis.luma=this}async createDevice(e={}){let r={...nm.defaultProps,...e},i=this.selectAdapter(r.type,r.adapters);if(!i)throw new Error(nR);return r.waitForPageLoad&&await i.pageLoaded,await i.create(r)}async attachDevice(e,r){let i=this._getTypeFromHandle(e,r.adapters),n=i&&this.selectAdapter(i,r.adapters);if(!n)throw new Error(nR);return await n?.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 n of r)if(i.get(n)?.isSupported?.())return n;return null}selectAdapter(e,r=[]){let i=e;e==="best-available"&&(i=this.getBestAvailableAdapterType(r));let n=this._getAdapterMap(r);return i&&n.get(i)||null}enforceWebGL2(e=!0,r=[]){let n=this._getAdapterMap(r).get("webgl");n||P.warn("enforceWebGL2: webgl adapter not found")(),n?.enforceWebGL2?.(e)}setDefaultDeviceProps(e){Object.assign(nm.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?P.warn("WebGL1 is not supported",e)():P.warn("Unknown handle type",e)(),null)}},im=nm;k(im,"defaultProps",{...Xt.defaultProps,type:"best-available",adapters:void 0,waitForPageLoad:!0});bi=new im});function U9(){return om||(D9()||typeof window>"u"?om=Promise.resolve():om=new Promise(t=>window.addEventListener("load",()=>t()))),om}var su,N9,D9,om,sR=B(()=>{Pn();su=class{get pageLoaded(){return U9()}},N9=Ot()&&typeof document<"u",D9=()=>N9&&document.readyState==="complete",om=null});var sm,aR=B(()=>{sm=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 cR(){let t,e;return{promise:new Promise((i,n)=>{t=i,e=n}),resolve:t,reject:e}}var lR=B(()=>{});function JA(t,e){if(!t){let r=new Error(e??"luma.gl assertion failed.");throw Error.captureStackTrace?.(r,JA),r}}function Ho(t,e){return JA(t,e),t}var QA=B(()=>{});function k9(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 V9(t){let e=document.getElementById(t);if(!Xi.isHTMLCanvas(e))throw new Error("Object is not a canvas element");return e}function z9(t){let{width:e,height:r}=t,i=document.createElement("canvas");i.id=yi("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 n=k9(t?.container||null);return n.insertBefore(i,n.firstChild),i}function H9(t,e,r,i,n){let o=t,s=uR(o[0],e,r),a=fR(o[1],e,i,n),c=uR(o[0]+1,e,r),l=c===r-1?c:c-1;c=fR(o[1]+1,e,i,n);let u;return n?(c=c===0?c:c+1,u=a,a=c):u=c===i-1?c:c-1,{x:s,y:a,width:Math.max(l-s+1,1),height:Math.max(u-a+1,1)}}function uR(t,e,r){return Math.min(Math.round(t*e),r-1)}function fR(t,e,r,i){return i?Math.max(0,r-1-Math.round(t*e)):Math.min(Math.round(t*e),r-1)}var au,Xi,ev=B(()=>{Pn();aR();xa();lR();QA();au=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=cR();_canvasObserver;_position=[0,0];destroyed=!1;_needsDrawingBufferResize=!0;toString(){return`${this[Symbol.toStringTag]}(${this.id})`}constructor(e){this.props={...au.defaultProps,...e},e=this.props,this.initialized=this._initializedResolvers.promise,Ot()?e.canvas?typeof e.canvas=="string"?this.canvas=V9(e.canvas):this.canvas=e.canvas:this.canvas=z9(e):this.canvas={width:e.width||1,height:e.height||1},au.isHTMLCanvas(this.canvas)?(this.id=e.id||this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):au.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 sm({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(),[n,o]=this.getDrawingBufferSize();return H9(e,i,n,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(n=>n.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=Ho(r.contentBoxSize?.[0]);this.cssWidth=i.inlineSize,this.cssHeight=i.blockSize;let n=this.getDevicePixelSize(),o=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(o,a)),this.devicePixelHeight=Math.max(1,Math.min(s,c)),this._updateDrawingBufferSize(),this.device.props.onResize(this,{oldPixelSize:n})}_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 n=this._position;this._position=r,this.device.props.onPositionChange?.(this,{oldPosition:n})}}}},Xi=au;k(Xi,"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 Aa,dR=B(()=>{ev();Aa=class extends Xi{};k(Aa,"defaultProps",Xi.defaultProps)});var cu,hR=B(()=>{ev();cu=class extends Xi{}});var am,Pt,tv=B(()=>{xt();am=class extends