@deck.gl/core
Version:
deck.gl core library
16 lines (15 loc) • 723 kB
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 uo=Object.defineProperty;var q_=Object.getOwnPropertyDescriptor;var K_=Object.getOwnPropertyNames;var Z_=Object.prototype.hasOwnProperty;var Q_=(r,e,t)=>e in r?uo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var or=(r,e)=>{for(var t in e)uo(r,t,{get:e[t],enumerable:!0})},J_=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of K_(e))!Z_.call(r,s)&&s!==t&&uo(r,s,{get:()=>e[s],enumerable:!(n=q_(e,s))||n.enumerable});return r};var G_=r=>J_(uo({},"__esModule",{value:!0}),r);var D=(r,e,t)=>(Q_(r,typeof e!="symbol"?e+"":e,t),t);var PA={};or(PA,{AmbientLight:()=>ns,Attribute:()=>ir,AttributeManager:()=>hn,COORDINATE_SYSTEM:()=>$,CompositeLayer:()=>F_,Controller:()=>ke,Deck:()=>Pc,DeckGL:()=>lo,DeckRenderer:()=>cn,DirectionalLight:()=>Jt,FirstPersonController:()=>xn,FirstPersonView:()=>L_,FirstPersonViewport:()=>_n,FlyToInterpolator:()=>ao,Layer:()=>Wc,LayerExtension:()=>j_,LayerManager:()=>sn,LightingEffect:()=>Er,LinearInterpolator:()=>Te,MapController:()=>an,MapView:()=>ac,OPERATION:()=>Cm,OrbitController:()=>bn,OrbitView:()=>V_,OrbitViewport:()=>mn,OrthographicController:()=>Tn,OrthographicView:()=>z_,OrthographicViewport:()=>gn,PointLight:()=>as,PostProcessEffect:()=>Ii,TRANSITION_EVENTS:()=>Oi,Tesselator:()=>co,TransitionInterpolator:()=>nr,UNIT:()=>vr,VERSION:()=>ka,View:()=>Oe,Viewport:()=>Ve,WebMercatorViewport:()=>Rr,_CameraLight:()=>Si,_Component:()=>ms,_ComponentState:()=>dn,_GlobeController:()=>wn,_GlobeView:()=>W_,_GlobeViewport:()=>pn,_LayersPass:()=>mt,_PickLayersPass:()=>Gt,_SunLight:()=>Ei,_applyStyles:()=>$_,_compareProps:()=>Lc,_count:()=>Vc,_deepEqual:()=>he,_fillArray:()=>sc,_flatten:()=>Mr,_memoize:()=>et,_mergeShaders:()=>Gi,_registerLoggers:()=>Oa,_removeStyles:()=>H_,assert:()=>se,createIterable:()=>ds,fp64LowPart:()=>Vf,getShaderAssembler:()=>Ja,gouraudLighting:()=>ma,log:()=>j,phongLighting:()=>ga,picking:()=>Uf,project:()=>Ar,project32:()=>Pf,shadow:()=>rs});var Vu={};or(Vu,{Buffer:()=>V,BufferTransform:()=>ut,CubeGeometry:()=>Qs,Device:()=>Re,Framebuffer:()=>St,Geometry:()=>ft,GroupNode:()=>Xr,Model:()=>$e,ModelNode:()=>Zs,ScenegraphNode:()=>Mt,SphereGeometry:()=>Js,Texture:()=>H,TextureTransform:()=>qs,attachDevice:()=>B1,createDevice:()=>U1,enforceWebGL2:()=>L1,getBestAvailableAdapter:()=>D1,getSupportedAdapters:()=>N1,registerDevices:()=>k1,setDefaultDeviceProps:()=>F1,stats:()=>O1});var fo=globalThis,ey=globalThis.document||{},ho=globalThis.process||{},ty=globalThis.console,yh=globalThis.navigator||{};function po(r){if(typeof window<"u"&&window.process?.type==="renderer"||typeof process<"u"&&Boolean(process.versions?.electron))return!0;let e=typeof navigator<"u"&&navigator.userAgent,t=r||e;return Boolean(t&&t.indexOf("Electron")>=0)}function Ee(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||po()}function Qc(r){return!r&&!Ee()?"Node":po(r)?"Electron":(r||yh.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var Jc="4.1.0";function _s(){let r;if(typeof window<"u"&&window.performance)r=window.performance.now();else if(typeof process<"u"&&process.hrtime){let e=process.hrtime();r=e[0]*1e3+e[1]/1e6}else r=Date.now();return r}var Nr=class{constructor(e,t){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=t,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=_s(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(_s()-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 Ye=class{constructor(e){this.stats={},this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}get(e,t="count"){return this._getOrCreate({name:e,type:t})}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 t of Object.values(this.stats))e(t)}getTable(){let e={};return this.forEach(t=>{e[t.name]={time:t.time||0,count:t.count||0,average:t.getAverageTime()||0,hz:t.getHz()||0}}),e}_initializeStats(e=[]){e.forEach(t=>this._getOrCreate(t))}_getOrCreate(e){let{name:t,type:n}=e,s=this.stats[t];return s||(e instanceof Nr?s=e:s=new Nr(t,n),this.stats[t]=s),s}};var Gc=class{stats=new Map;getStats(e){return this.get(e)}get(e){return this.stats.has(e)||this.stats.set(e,new Ye({id:e})),this.stats.get(e)}},mo=new Gc;function ny(r){try{let e=window[r],t="__storage_test__";return e.setItem(t,t),e.removeItem(t),e}catch{return null}}var go=class{constructor(e,t,n="sessionStorage"){this.storage=ny(n),this.id=e,this.config=t,this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(e){if(Object.assign(this.config,e),this.storage){let t=JSON.stringify(this.config);this.storage.setItem(this.id,t)}}_loadConfiguration(){let e={};if(this.storage){let t=this.storage.getItem(this.id);e=t?JSON.parse(t):{}}return Object.assign(this.config,e),this}};function xh(r){let e;return r<10?e=`${r.toFixed(2)}ms`:r<100?e=`${r.toFixed(1)}ms`:r<1e3?e=`${r.toFixed(0)}ms`:e=`${(r/1e3).toFixed(2)}s`,e}function bh(r,e=8){let t=Math.max(e-r.length,0);return`${" ".repeat(t)}${r}`}var _o;(function(r){r[r.BLACK=30]="BLACK",r[r.RED=31]="RED",r[r.GREEN=32]="GREEN",r[r.YELLOW=33]="YELLOW",r[r.BLUE=34]="BLUE",r[r.MAGENTA=35]="MAGENTA",r[r.CYAN=36]="CYAN",r[r.WHITE=37]="WHITE",r[r.BRIGHT_BLACK=90]="BRIGHT_BLACK",r[r.BRIGHT_RED=91]="BRIGHT_RED",r[r.BRIGHT_GREEN=92]="BRIGHT_GREEN",r[r.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",r[r.BRIGHT_BLUE=94]="BRIGHT_BLUE",r[r.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",r[r.BRIGHT_CYAN=96]="BRIGHT_CYAN",r[r.BRIGHT_WHITE=97]="BRIGHT_WHITE"})(_o||(_o={}));var sy=10;function Th(r){return typeof r!="string"?r:(r=r.toUpperCase(),_o[r]||_o.WHITE)}function wh(r,e,t){return!Ee&&typeof r=="string"&&(e&&(r=`\x1B[${Th(e)}m${r}\x1B[39m`),t&&(r=`\x1B[${Th(t)+sy}m${r}\x1B[49m`)),r}function vh(r,e=["constructor"]){let t=Object.getPrototypeOf(r),n=Object.getOwnPropertyNames(t),s=r;for(let i of n){let o=s[i];typeof o=="function"&&(e.find(a=>i===a)||(s[i]=o.bind(r)))}}function ys(r,e){if(!r)throw new Error(e||"Assertion failed")}function Dr(){let r;if(Ee()&&fo.performance)r=fo?.performance?.now?.();else if("hrtime"in ho){let e=ho?.hrtime?.();r=e[0]*1e3+e[1]/1e6}else r=Date.now();return r}var vn={debug:Ee()&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},iy={enabled:!0,level:0};function An(){}var Ah={},Sh={once:!0},Ne=class{constructor({id:e}={id:""}){this.VERSION=Jc,this._startTs=Dr(),this._deltaTs=Dr(),this.userData={},this.LOG_THROTTLE_TIMEOUT=0,this.id=e,this.userData={},this._storage=new go(`__probe-${this.id}__`,iy),this.timeStamp(`${this.id} started`),vh(this),Object.seal(this)}set level(e){this.setLevel(e)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((Dr()-this._startTs).toPrecision(10))}getDelta(){return Number((Dr()-this._deltaTs).toPrecision(10))}set priority(e){this.level=e}get priority(){return this.level}getPriority(){return this.level}enable(e=!0){return this._storage.setConfiguration({enabled:e}),this}setLevel(e){return this._storage.setConfiguration({level:e}),this}get(e){return this._storage.config[e]}set(e,t){this._storage.setConfiguration({[e]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(e,t){if(!e)throw new Error(t||"Assertion failed")}warn(e){return this._getLogFunction(0,e,vn.warn,arguments,Sh)}error(e){return this._getLogFunction(0,e,vn.error,arguments)}deprecated(e,t){return this.warn(`\`${e}\` is deprecated and will be removed in a later version. Use \`${t}\` instead`)}removed(e,t){return this.error(`\`${e}\` has been removed. Use \`${t}\` instead`)}probe(e,t){return this._getLogFunction(e,t,vn.log,arguments,{time:!0,once:!0})}log(e,t){return this._getLogFunction(e,t,vn.debug,arguments)}info(e,t){return this._getLogFunction(e,t,console.info,arguments)}once(e,t){return this._getLogFunction(e,t,vn.debug||vn.info,arguments,Sh)}table(e,t,n){return t?this._getLogFunction(e,t,console.table||An,n&&[n],{tag:ay(t)}):An}time(e,t){return this._getLogFunction(e,t,console.time?console.time:console.info)}timeEnd(e,t){return this._getLogFunction(e,t,console.timeEnd?console.timeEnd:console.info)}timeStamp(e,t){return this._getLogFunction(e,t,console.timeStamp||An)}group(e,t,n={collapsed:!1}){let s=Eh({logLevel:e,message:t,opts:n}),{collapsed:i}=n;return s.method=(i?console.groupCollapsed:console.group)||console.info,this._getLogFunction(s)}groupCollapsed(e,t,n={}){return this.group(e,t,Object.assign({},n,{collapsed:!0}))}groupEnd(e){return this._getLogFunction(e,"",console.groupEnd||An)}withGroup(e,t,n){this.group(e,t)();try{n()}finally{this.groupEnd(e)()}}trace(){console.trace&&console.trace()}_shouldLog(e){return this.isEnabled()&&this.getLevel()>=Rh(e)}_getLogFunction(e,t,n,s,i){if(this._shouldLog(e)){i=Eh({logLevel:e,message:t,args:s,opts:i}),n=n||i.method,ys(n),i.total=this.getTotal(),i.delta=this.getDelta(),this._deltaTs=Dr();let o=i.tag||i.message;if(i.once&&o)if(!Ah[o])Ah[o]=Dr();else return An;return t=oy(this.id,i.message,i),n.bind(console,t,...i.args)}return An}};Ne.VERSION=Jc;function Rh(r){if(!r)return 0;let e;switch(typeof r){case"number":e=r;break;case"object":e=r.logLevel||r.priority||0;break;default:return 0}return ys(Number.isFinite(e)&&e>=0),e}function Eh(r){let{logLevel:e,message:t}=r;r.logLevel=Rh(e);let n=r.args?Array.from(r.args):[];for(;n.length&&n.shift()!==t;);switch(typeof e){case"string":case"function":t!==void 0&&n.unshift(t),r.message=e;break;case"object":Object.assign(r,e);break;default:}typeof r.message=="function"&&(r.message=r.message());let s=typeof r.message;return ys(s==="string"||s==="object"),Object.assign(r,{args:n},r.opts)}function oy(r,e,t){if(typeof e=="string"){let n=t.time?bh(xh(t.total)):"";e=t.time?`${r}: ${n} ${e}`:`${r}: ${e}`,e=wh(e,t.color,t.background)}return e}function ay(r){for(let e in r)for(let t in r[e])return t||"untitled";return"empty"}globalThis.probe={};var xS=new Ne({id:"@probe.gl/log"});var P=new Ne({id:"luma.gl"});var el={};function ar(r="id"){el[r]=el[r]||1;let e=el[r]++;return`${r}-${e}`}var W=class{toString(){return`${this[Symbol.toStringTag]||this.constructor.name}:"${this.id}"`}id;props;userData={};_device;destroyed=!1;allocatedBytes=0;_attachedResources=new Set;constructor(e,t,n){if(!e)throw new Error("no device");this._device=e,this.props=cy(t,n);let s=this.props.id!=="undefined"?this.props.id:ar(this[Symbol.toStringTag]);this.props.id=s,this.id=s,this.userData=this.props.userData||{},this.addStats()}destroy(){this.destroyResource()}delete(){return this.destroy(),this}getProps(){return this.props}attachResource(e){this._attachedResources.add(e)}detachResource(e){this._attachedResources.delete(e)}destroyAttachedResource(e){this._attachedResources.delete(e)&&e.destroy()}destroyAttachedResources(){for(let e of Object.values(this._attachedResources))e.destroy();this._attachedResources=new Set}destroyResource(){this.destroyAttachedResources(),this.removeStats(),this.destroyed=!0}removeStats(){let e=this._device.statsManager.getStats("Resource Counts"),t=this[Symbol.toStringTag];e.get(`${t}s Active`).decrementCount()}trackAllocatedMemory(e,t=this[Symbol.toStringTag]){let n=this._device.statsManager.getStats("Resource Counts");n.get("GPU Memory").addCount(e),n.get(`${t} Memory`).addCount(e),this.allocatedBytes=e}trackDeallocatedMemory(e=this[Symbol.toStringTag]){let t=this._device.statsManager.getStats("Resource Counts");t.get("GPU Memory").subtractCount(this.allocatedBytes),t.get(`${e} Memory`).subtractCount(this.allocatedBytes),this.allocatedBytes=0}addStats(){let e=this._device.statsManager.getStats("Resource Counts"),t=this[Symbol.toStringTag];e.get("Resources Created").incrementCount(),e.get(`${t}s Created`).incrementCount(),e.get(`${t}s Active`).incrementCount()}};D(W,"defaultProps",{id:"undefined",handle:void 0,userData:void 0});function cy(r,e){let t={...e};for(let n in r)r[n]!==void 0&&(t[n]=r[n]);return t}var xs=class extends W{get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(e,t){let n={...t};(t.usage||0)&xs.INDEX&&!t.indexType&&(t.data instanceof Uint32Array?n.indexType="uint32":t.data instanceof Uint16Array&&(n.indexType="uint16")),delete n.data,super(e,n,xs.defaultProps),this.usage=n.usage||0,this.indexType=n.indexType,this.updateTimestamp=e.incrementTimestamp()}clone(e){return this.device.createBuffer({...this.props,...e})}readSyncWebGL(e,t){throw new Error("not implemented")}debugData=new ArrayBuffer(0);_setDebugData(e,t,n){let s=ArrayBuffer.isView(e)?e.buffer:e,i=Math.min(e?e.byteLength:n,xs.DEBUG_DATA_MAX_LENGTH);s===null?this.debugData=new ArrayBuffer(i):t===0&&n===s.byteLength?this.debugData=s.slice(0,i):this.debugData=s.slice(t,t+i)}},V=xs;D(V,"defaultProps",{...W.defaultProps,usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",mappedAtCreation:!1}),D(V,"MAP_READ",1),D(V,"MAP_WRITE",2),D(V,"COPY_SRC",4),D(V,"COPY_DST",8),D(V,"INDEX",16),D(V,"VERTEX",32),D(V,"UNIFORM",64),D(V,"STORAGE",128),D(V,"INDIRECT",256),D(V,"QUERY_RESOLVE",512),D(V,"DEBUG_DATA_MAX_LENGTH",32);function yo(r){let e=Ih[r],t=ly(e),n=r.includes("norm"),s=!n&&!r.startsWith("float"),i=r.startsWith("s");return{dataType:Ih[r],byteLength:t,integer:s,signed:i,normalized:n}}function ly(r){return uy[r]}var Ih={uint8:"uint8",sint8:"sint8",unorm8:"uint8",snorm8:"sint8",uint16:"uint16",sint16:"sint16",unorm16:"uint16",snorm16:"sint16",float16:"float16",float32:"float32",uint32:"uint32",sint32:"sint32"},uy={uint8:1,sint8:1,uint16:2,sint16:2,float16:2,float32:4,uint32:4,sint32:4};var we="texture-compression-bc",re="texture-compression-astc",At="texture-compression-etc2",fy="texture-compression-etc1-webgl",xo="texture-compression-pvrtc-webgl",tl="texture-compression-atc-webgl",bo="float32-renderable-webgl",rl="float16-renderable-webgl",hy="rgb9e5ufloat-renderable-webgl",nl="snorm8-renderable-webgl",bs="norm16-renderable-webgl",sl="snorm16-renderable-webgl",To="float32-filterable",Mh="float16-filterable-webgl";function wo(r){let e=dy[r];if(!e)throw new Error(`Unsupported texture format ${r}`);return e}var dy={r8unorm:{},r8snorm:{render:nl},r8uint:{},r8sint:{},rg8unorm:{},rg8snorm:{render:nl},rg8uint:{},rg8sint:{},r16uint:{},r16sint:{},r16float:{render:rl,filter:"float16-filterable-webgl"},"r16unorm-webgl":{f:bs},"r16snorm-webgl":{f:sl},"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},"rgb8unorm-webgl":{},"rgb8snorm-webgl":{},rgba8unorm:{},"rgba8unorm-srgb":{},rgba8snorm:{render:nl},rgba8uint:{},rgba8sint:{},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{},rg16sint:{},rg16float:{render:rl,filter:Mh},"rg16unorm-webgl":{render:bs},"rg16snorm-webgl":{render:sl},r32uint:{},r32sint:{},r32float:{render:bo,filter:To},rgb9e5ufloat:{channels:"rgb",packed:!0,render:hy},rg11b10ufloat:{channels:"rgb",bitsPerChannel:[11,11,10,0],packed:!0,p:1,render:bo},rgb10a2unorm:{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1},"rgb10a2uint-webgl":{channels:"rgba",bitsPerChannel:[10,10,10,2],packed:!0,p:1,wgpu:!1},"rgb16unorm-webgl":{f:bs},"rgb16snorm-webgl":{f:bs},rg32uint:{},rg32sint:{},rg32float:{render:!1,filter:To},rgba16uint:{},rgba16sint:{},rgba16float:{render:rl,filter:Mh},"rgba16unorm-webgl":{render:bs},"rgba16snorm-webgl":{render:sl},"rgb32float-webgl":{render:bo,filter:To},rgba32uint:{},rgba32sint:{},rgba32float:{render:bo,filter:To},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},"bc1-rgb-unorm-webgl":{f:we},"bc1-rgb-unorm-srgb-webgl":{f:we},"bc1-rgba-unorm":{f:we},"bc1-rgba-unorm-srgb":{f:we},"bc2-rgba-unorm":{f:we},"bc2-rgba-unorm-srgb":{f:we},"bc3-rgba-unorm":{f:we},"bc3-rgba-unorm-srgb":{f:we},"bc4-r-unorm":{f:we},"bc4-r-snorm":{f:we},"bc5-rg-unorm":{f:we},"bc5-rg-snorm":{f:we},"bc6h-rgb-ufloat":{f:we},"bc6h-rgb-float":{f:we},"bc7-rgba-unorm":{f:we},"bc7-rgba-unorm-srgb":{f:we},"etc2-rgb8unorm":{f:At},"etc2-rgb8unorm-srgb":{f:At},"etc2-rgb8a1unorm":{f:At},"etc2-rgb8a1unorm-srgb":{f:At},"etc2-rgba8unorm":{f:At},"etc2-rgba8unorm-srgb":{f:At},"eac-r11unorm":{f:At},"eac-r11snorm":{f:At},"eac-rg11unorm":{f:At},"eac-rg11snorm":{f:At},"astc-4x4-unorm":{f:re},"astc-4x4-unorm-srgb":{f:re},"astc-5x4-unorm":{f:re},"astc-5x4-unorm-srgb":{f:re},"astc-5x5-unorm":{f:re},"astc-5x5-unorm-srgb":{f:re},"astc-6x5-unorm":{f:re},"astc-6x5-unorm-srgb":{f:re},"astc-6x6-unorm":{f:re},"astc-6x6-unorm-srgb":{f:re},"astc-8x5-unorm":{f:re},"astc-8x5-unorm-srgb":{f:re},"astc-8x6-unorm":{f:re},"astc-8x6-unorm-srgb":{f:re},"astc-8x8-unorm":{f:re},"astc-8x8-unorm-srgb":{f:re},"astc-10x5-unorm":{f:re},"astc-10x5-unorm-srgb":{f:re},"astc-10x6-unorm":{f:re},"astc-10x6-unorm-srgb":{f:re},"astc-10x8-unorm":{f:re},"astc-10x8-unorm-srgb":{f:re},"astc-10x10-unorm":{f:re},"astc-10x10-unorm-srgb":{f:re},"astc-12x10-unorm":{f:re},"astc-12x10-unorm-srgb":{f:re},"astc-12x12-unorm":{f:re},"astc-12x12-unorm-srgb":{f:re},"pvrtc-rgb4unorm-webgl":{f:xo},"pvrtc-rgba4unorm-webgl":{f:xo},"pvrtc-rbg2unorm-webgl":{f:xo},"pvrtc-rgba2unorm-webgl":{f:xo},"etc1-rbg-unorm-webgl":{f:fy},"atc-rgb-unorm-webgl":{f:tl},"atc-rgba-unorm-webgl":{f:tl},"atc-rgbai-unorm-webgl":{f:tl}};var py=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],my=/^(r|rg|rgb|rgba|bgra)([0-9]*)([a-z]*)(-srgb)?(-webgl)?$/;function il(r){return py.some(e=>r.startsWith(e))}function Sn(r){let e=gy(r);if(il(r)){e.channels="rgb",e.components=3,e.bytesPerPixel=1,e.srgb=!1,e.compressed=!0;let n=_y(r);n&&(e.blockWidth=n.blockWidth,e.blockHeight=n.blockHeight)}let t=my.exec(r);if(t){let[,n,s,i,o,a]=t,c=`${i}${s}`,l=yo(c),u=l.byteLength*8,f=n.length,h=[u,f>=2?u:0,f>=3?u:0,f>=4?u:0];e={format:r,attachment:e.attachment,dataType:l.dataType,components:f,channels:n,integer:l.integer,signed:l.signed,normalized:l.normalized,bitsPerChannel:h,bytesPerPixel:l.byteLength*n.length,packed:e.packed,srgb:e.srgb},a==="-webgl"&&(e.webgl=!0),o==="-srgb"&&(e.srgb=!0)}return r.endsWith("-webgl")&&(e.webgl=!0),r.endsWith("-srgb")&&(e.srgb=!0),e}function gy(r){let e=wo(r),t=e.bytesPerPixel||1,n=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:r,attachment:e.attachment||"color",channels:e.channels||"r",components:e.components||e.channels?.length||1,bytesPerPixel:t,bitsPerChannel:n,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 _y(r){let t=/.*-(\d+)x(\d+)-.*/.exec(r);if(t){let[,n,s]=t;return{blockWidth:Number(n),blockHeight:Number(s)}}return null}function Ph(r){let e=wo(r),t={format:r,create:e.f??!0,render:e.render??!0,filter:e.filter??!0,blend:e.blend??!0,store:e.store??!0},n=Sn(r),s=r.startsWith("depth")||r.startsWith("stencil"),i=n?.signed,o=n?.integer,a=n?.webgl;return t.render&&=!i,t.filter&&=!s&&!i&&!o&&!a,t}var Ts=class{},ws=class{features;disabledFeatures;constructor(e=[],t){this.features=new Set(e),this.disabledFeatures=t||{}}*[Symbol.iterator](){yield*this.features}has(e){return!this.disabledFeatures?.[e]&&this.features.has(e)}},ol=class{get[Symbol.toStringTag](){return"Device"}constructor(e){this.props={...ol.defaultProps,...e},this.id=this.props.id||ar(this[Symbol.toStringTag].toLowerCase())}id;props;userData={};statsManager=mo;timestamp=0;_reused=!1;_lumaData={};getTextureFormatCapabilities(e){let t=Ph(e),n=o=>(typeof o=="string"?this.features.has(o):o)??!0,s=n(t.create),i={format:e,create:s,render:s&&n(t.render),filter:s&&n(t.filter),blend:s&&n(t.blend),store:s&&n(t.store)};return this._getDeviceSpecificTextureFormatCapabilities(i)}isTextureFormatSupported(e,t){return this.getTextureFormatCapabilities(e).create}isTextureFormatFilterable(e){return this.getTextureFormatCapabilities(e).filter}isTextureFormatRenderable(e){return this.getTextureFormatCapabilities(e).render}isTextureFormatCompressed(e){return il(e)}loseDevice(){return!1}reportError(e){this.props.onError(e)}getDefaultCanvasContext(){if(!this.canvasContext)throw new Error("Device has no default CanvasContext. See props.createCanvasContext");return this.canvasContext}createCommandEncoder(e={}){throw new Error("not implemented")}incrementTimestamp(){return this.timestamp++}onError(e){this.props.onError(e)}getCanvasContext(){return this.getDefaultCanvasContext()}readPixelsToArrayWebGL(e,t){throw new Error("not implemented")}readPixelsToBufferWebGL(e,t){throw new Error("not implemented")}setParametersWebGL(e){throw new Error("not implemented")}getParametersWebGL(e){throw new Error("not implemented")}withParametersWebGL(e,t){throw new Error("not implemented")}clearWebGL(e){throw new Error("not implemented")}resetWebGL(){throw new Error("not implemented")}static _getCanvasContextProps(e){return e.createCanvasContext===!0?{}:e.createCanvasContext}_normalizeBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});let t={...e};return(e.usage||0)&V.INDEX&&!e.indexType&&(e.data instanceof Uint32Array?t.indexType="uint32":e.data instanceof Uint16Array?t.indexType="uint16":P.warn("indices buffer content must be of integer type")()),t}},Re=ol;D(Re,"defaultProps",{id:null,powerPreference:"high-performance",failIfMajorPerformanceCaveat:!1,createCanvasContext:void 0,onError:e=>P.error(e.message)(),_reuseDevices:!1,_requestMaxLimits:!0,_factoryDestroyPolicy:"unused",_initializeFeatures:!0,_disabledFeatures:{"compilation-status-async-webgl":!0},_resourceDefaults:{},webgl:{},debug:P.get("debug")||void 0,debugShaders:P.get("debug-shaders")||void 0,debugFramebuffers:Boolean(P.get("debug-framebuffers")),debugWebGL:Boolean(P.get("debug-webgl")),debugSpectorJS:void 0,debugSpectorJSUrl:void 0,_handle:void 0});var yy=Ee()&&typeof document<"u",xy=()=>yy&&document.readyState==="complete",by="set luma.log.level=1 (or higher) to trace rendering",Ch="No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.",En=class{stats=mo;log=P;VERSION="9.1.9";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} - ${by}`)(),globalThis.luma=this}registerAdapters(e){for(let t of e)this.preregisteredAdapters.set(t.type,t)}getSupportedAdapters(e=[]){let t=this.getAdapterMap(e);return Array.from(t).map(([,n])=>n).filter(n=>n.isSupported?.()).map(n=>n.type)}getBestAvailableAdapter(e=[]){let t=this.getAdapterMap(e);return t.get("webgpu")?.isSupported?.()?"webgpu":t.get("webgl")?.isSupported?.()?"webgl":null}setDefaultDeviceProps(e){Object.assign(En.defaultProps,e)}async createDevice(e={}){e={...En.defaultProps,...e},e.waitForPageLoad&&await En.pageLoaded;let t=this.getAdapterMap(e.adapters),n=e.type||"";n==="best-available"&&(n=this.getBestAvailableAdapter(e.adapters)||n);let o=await(this.getAdapterMap(e.adapters)||t).get(n)?.create?.(e);if(o)return o;throw new Error(Ch)}async attachDevice(e){let t=this.getAdapterMap(e.adapters),n="";e.handle instanceof WebGL2RenderingContext&&(n="webgl"),e.createCanvasContext&&await En.pageLoaded,e.handle===null&&(n="unknown");let i=await t.get(n)?.attach?.(null);if(i)return i;throw new Error(Ch)}enforceWebGL2(e=!0,t=[]){let s=this.getAdapterMap(t).get("webgl");s||P.warn("enforceWebGL2: webgl adapter not found")(),s?.enforceWebGL2?.(e)}getAdapterMap(e=[]){let t=new Map(this.preregisteredAdapters);for(let n of e)t.set(n.type,n);return t}registerDevices(e){P.warn("luma.registerDevices() is deprecated, use luma.registerAdapters() instead");for(let t of e){let n=t.adapter;n&&this.preregisteredAdapters.set(n.type,n)}}},vs=En;D(vs,"defaultProps",{...Re.defaultProps,type:"best-available",adapters:void 0,waitForPageLoad:!0}),D(vs,"pageLoaded",Ty().then(()=>{P.probe(2,"DOM is loaded")()}));var cr=new vs;function Ty(){return xy()||typeof window>"u"?Promise.resolve():new Promise(r=>{window.addEventListener("load",()=>r())})}var As=class{};var al=class{id;props;canvas;htmlCanvas;offscreenCanvas;type;width=1;height=1;resizeObserver;_canvasSizeInfo={clientWidth:0,clientHeight:0,devicePixelRatio:1};toString(){return`${this[Symbol.toStringTag]}(${this.id})`}constructor(e){if(this.props={...al.defaultProps,...e},e=this.props,!Ee()){this.id="node-canvas-context",this.type="node",this.width=this.props.width,this.height=this.props.height,this.canvas=null;return}if(e.canvas)typeof e.canvas=="string"?this.canvas=vy(e.canvas):this.canvas=e.canvas;else{let t=Ay(e),n=wy(e?.container||null);n.insertBefore(t,n.firstChild),this.canvas=t,e?.visible||(this.canvas.style.visibility="hidden")}this.canvas instanceof HTMLCanvasElement?(this.id=this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):(this.id="offscreen-canvas",this.type="offscreen-canvas",this.offscreenCanvas=this.canvas),this.canvas instanceof HTMLCanvasElement&&e.autoResize&&(this.resizeObserver=new ResizeObserver(t=>{for(let n of t)n.target===this.canvas&&this.update()}),this.resizeObserver.observe(this.canvas))}getDevicePixelRatio(e){return typeof OffscreenCanvas<"u"&&this.canvas instanceof OffscreenCanvas||(e=e===void 0?this.props.useDevicePixels:e,!e||e<=0)?1:e===!0?typeof window<"u"&&window.devicePixelRatio||1:e}getPixelSize(){switch(this.type){case"node":return[this.width,this.height];case"offscreen-canvas":return[this.canvas.width,this.canvas.height];case"html-canvas":let e=this.getDevicePixelRatio(),t=this.canvas;return t.parentElement?[t.clientWidth*e,t.clientHeight*e]:[this.canvas.width,this.canvas.height];default:throw new Error(this.type)}}getAspect(){let[e,t]=this.getPixelSize();return e/t}cssToDeviceRatio(){try{let[e]=this.getDrawingBufferSize(),t=this._canvasSizeInfo.clientWidth||this.htmlCanvas?.clientWidth;return t?e/t:1}catch{return 1}}cssToDevicePixels(e,t=!0){let n=this.cssToDeviceRatio(),[s,i]=this.getDrawingBufferSize();return Sy(e,n,s,i,t)}setDevicePixelRatio(e,t={}){if(!this.htmlCanvas)return;let n="width"in t?t.width:this.htmlCanvas.clientWidth,s="height"in t?t.height:this.htmlCanvas.clientHeight;(!n||!s)&&(P.log(1,"Canvas clientWidth/clientHeight is 0")(),e=1,n=this.htmlCanvas.width||1,s=this.htmlCanvas.height||1);let i=this._canvasSizeInfo;if(i.clientWidth!==n||i.clientHeight!==s||i.devicePixelRatio!==e){let o=e,a=Math.floor(n*o),c=Math.floor(s*o);if(this.htmlCanvas.width=a,this.htmlCanvas.height=c,this.device.gl){let[u,f]=this.getDrawingBufferSize();(u!==a||f!==c)&&(o=Math.min(u/n,f/s),this.htmlCanvas.width=Math.floor(n*o),this.htmlCanvas.height=Math.floor(s*o),P.warn("Device pixel ratio clamped")()),this._canvasSizeInfo.clientWidth=n,this._canvasSizeInfo.clientHeight=s,this._canvasSizeInfo.devicePixelRatio=e}}}getDrawingBufferSize(){let e=this.device.gl;return e?[e.drawingBufferWidth,e.drawingBufferHeight]:this.getPixelSize()}_setAutoCreatedCanvasId(e){this.htmlCanvas?.id==="lumagl-auto-created-canvas"&&(this.htmlCanvas.id=e)}},Rn=al;D(Rn,"defaultProps",{canvas:null,width:800,height:600,useDevicePixels:!0,autoResize:!0,container:null,visible:!0,alphaMode:"opaque",colorSpace:"srgb"});function wy(r){if(typeof r=="string"){let e=document.getElementById(r);if(!e)throw new Error(`${r} is not an HTML element`);return e}else if(r)return r;return document.body}function vy(r){let e=document.getElementById(r);if(!(e instanceof HTMLCanvasElement))throw new Error("Object is not a canvas element");return e}function Ay(r){let{width:e,height:t}=r,n=document.createElement("canvas");return n.id=ar("lumagl-auto-created-canvas"),n.width=e||1,n.height=t||1,n.style.width=Number.isFinite(e)?`${e}px`:"100%",n.style.height=Number.isFinite(t)?`${t}px`:"100%",n}function Sy(r,e,t,n,s){let i=r,o=Oh(i[0],e,t),a=kh(i[1],e,n,s),c=Oh(i[0]+1,e,t),l=c===t-1?c:c-1;c=kh(i[1]+1,e,n,s);let u;return s?(c=c===0?c:c+1,u=a,a=c):u=c===n-1?c:c-1,{x:o,y:a,width:Math.max(l-o+1,1),height:Math.max(u-a+1,1)}}function Oh(r,e,t){return Math.min(Math.round(r*e),t-1)}function kh(r,e,t,n){return n?Math.max(0,t-1-Math.round(r*e)):Math.min(Math.round(r*e),t-1)}var Wt=class extends W{get[Symbol.toStringTag](){return"Texture"}toString(){return`Texture(${this.id},${this.format},${this.width}x${this.height})`}dimension;format;width;height;depth;mipLevels;updateTimestamp;constructor(e,t){if(t=Wt.normalizeProps(e,t),super(e,t,Wt.defaultProps),this.dimension=this.props.dimension,this.format=this.props.format,this.width=this.props.width,this.height=this.props.height,this.depth=this.props.depth,this.props.width===void 0||this.props.height===void 0){let n=Wt.getTextureDataSize(this.props.data);this.width=n?.width||1,this.height=n?.height||1}this.props.mipmaps&&this.props.mipLevels===void 0&&(this.props.mipLevels="pyramid"),this.mipLevels=this.props.mipLevels==="pyramid"?Wt.getMipLevelCount(this.width,this.height):this.props.mipLevels||1,this.updateTimestamp=e.incrementTimestamp()}clone(e){return this.device.createTexture({...this.props,...e})}static isExternalImage(e){return typeof ImageData<"u"&&e instanceof ImageData||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement||typeof VideoFrame<"u"&&e instanceof VideoFrame||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas}static getExternalImageSize(e){if(typeof ImageData<"u"&&e instanceof ImageData||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas)return{width:e.width,height:e.height};if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement)return{width:e.naturalWidth,height:e.naturalHeight};if(typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement)return{width:e.videoWidth,height:e.videoHeight};if(typeof VideoFrame<"u"&&e instanceof VideoFrame)return{width:e.displayWidth,height:e.displayHeight};throw new Error("Unknown image type")}static isTextureLevelData(e){let t=e?.data;return ArrayBuffer.isView(t)}static getTextureDataSize(e){if(!e||ArrayBuffer.isView(e))return null;if(Array.isArray(e))return Wt.getTextureDataSize(e[0]);if(Wt.isExternalImage(e))return Wt.getExternalImageSize(e);if(e&&typeof e=="object"&&e.constructor===Object){let n=Object.values(e)[0];return{width:n.width,height:n.height}}throw new Error("texture size deduction failed")}static normalizeTextureData(e,t){let n;return ArrayBuffer.isView(e)?n=[{data:e,width:t.width,height:t.height}]:Array.isArray(e)?n=e:n=[e],n}static getMipLevelCount(e,t){return Math.floor(Math.log2(Math.max(e,t)))+1}static getCubeFaceDepth(e){switch(e){case"+X":return 0;case"-X":return 1;case"+Y":return 2;case"-Y":return 3;case"+Z":return 4;case"-Z":return 5;default:throw new Error(e)}}static normalizeProps(e,t){let n={...t},s=e?.props?._resourceDefaults?.texture||{};Object.assign(n,s);let{width:i,height:o}=n;return typeof i=="number"&&(n.width=Math.max(1,Math.ceil(i))),typeof o=="number"&&(n.height=Math.max(1,Math.ceil(o))),n}},H=Wt;D(H,"COPY_SRC",1),D(H,"COPY_DST",2),D(H,"TEXTURE",4),D(H,"STORAGE",8),D(H,"RENDER_ATTACHMENT",16),D(H,"CubeFaces",["+X","-X","+Y","-Y","+Z","-Z"]),D(H,"defaultProps",{...W.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",width:void 0,height:void 0,depth:1,mipmaps:!1,compressed:!1,usage:0,mipLevels:void 0,samples:void 0,sampler:{},view:void 0,flipY:void 0}),D(H,"defaultCopyExternalImageOptions",{image:void 0,sourceX:0,sourceY:0,width:void 0,height:void 0,depth:1,mipLevel:0,x:0,y:0,z:0,aspect:"all",colorSpace:"srgb",premultipliedAlpha:!1,flipY:!1});var cl=class extends W{get[Symbol.toStringTag](){return"TextureView"}constructor(e,t){super(e,t,cl.defaultProps)}},lr=cl;D(lr,"defaultProps",{...W.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0});function Dh(r,e,t){let n="",s=e.split(/\r?\n/),i=r.slice().sort((o,a)=>o.lineNum-a.lineNum);switch(t?.showSourceCode||"no"){case"all":let o=0;for(let a=1;a<=s.length;a++)for(n+=Fh(s[a-1],a,t);i.length>o&&i[o].lineNum===a;){let c=i[o++];n+=Nh(c,s,c.lineNum,{...t,inlineSource:!1})}return n;case"issues":case"no":for(let a of r)n+=Nh(a,s,a.lineNum,{inlineSource:t?.showSourceCode!=="no"});return n}}function Nh(r,e,t,n){if(n?.inlineSource){let i=Ey(e,t),o=r.linePos>0?`${" ".repeat(r.linePos+5)}^^^
`:"";return`
${i}${o}${r.type.toUpperCase()}: ${r.message}
`}let s=r.type==="error"?"red":"#8B4000";return n?.html?`<div class='luma-compiler-log-error' style="color:${s};"><b> ${r.type.toUpperCase()}: ${r.message}</b></div>`:`${r.type.toUpperCase()}: ${r.message}`}function Ey(r,e,t){let n="";for(let s=e-2;s<=e;s++){let i=r[s-1];i!==void 0&&(n+=Fh(i,e,t))}return n}function Fh(r,e,t){let n=t?.html?Iy(r):r;return`${Ry(String(e),4)}: ${n}${t?.html?"<br/>":`
`}`}function Ry(r,e){let t="";for(let n=r.length;n<e;++n)t+=" ";return t+r}function Iy(r){return r.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("'","'")}var ll=class extends W{get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(e,t){t={...t,debugShaders:t.debugShaders||e.props.debugShaders||"errors"},super(e,{id:My(t),...t},ll.defaultProps),this.stage=this.props.stage,this.source=this.props.source}getCompilationInfoSync(){return null}getTranslatedSource(){return null}async debugShader(){let e=this.props.debugShaders;switch(e){case"never":return;case"errors":if(this.compilationStatus==="success")return;break;case"warnings":case"always":break}let t=await this.getCompilationInfo();e==="warnings"&&t?.length===0||this._displayShaderLog(t)}_displayShaderLog(e){if(typeof document>"u"||!document?.createElement)return;let t=Bh(this.source),n=`${this.stage} ${t}`,s=Dh(e,this.source,{showSourceCode:"all",html:!0}),i=this.getTranslatedSource();i&&(s+=`<br /><br /><h1>Translated Source</h1><br /><br /><code style="user-select:text;"><pre>${i}</pre></code>`);let o=document.createElement("Button");o.innerHTML=`
<h1>Shader Compilation Error in ${n}</h1><br /><br />
<code style="user-select:text;"><pre>
${s}
</pre></code>`,o.style.top="10px",o.style.left="10px",o.style.position="absolute",o.style.zIndex="9999",o.style.width="100%",o.style.textAlign="left",document.body.appendChild(o),document.getElementsByClassName("luma-compiler-log-error")[0]?.scrollIntoView(),o.onclick=()=>{let c=`data:text/plain,${encodeURIComponent(this.source)}`;navigator.clipboard.writeText(c)}}},ur=ll;D(ur,"defaultProps",{...W.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debugShaders:void 0});function My(r){return Bh(r.source)||r.id||ar(`unnamed ${r.stage}-shader`)}function Bh(r,e="unnamed"){let n=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(r);return n?n[1]:e}var vo=class extends W{get[Symbol.toStringTag](){return"Sampler"}constructor(e,t){t=vo.normalizeProps(e,t),super(e,t,vo.defaultProps)}static normalizeProps(e,t){let n=e?.props?._resourceDefaults?.sampler||{};return{...t,...n}}},fr=vo;D(fr,"defaultProps",{...W.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 ul=class extends W{get[Symbol.toStringTag](){return"Framebuffer"}width;height;constructor(e,t={}){super(e,t,ul.defaultProps),this.width=this.props.width,this.height=this.props.height}clone(e){let t=this.colorAttachments.map(s=>s.texture.clone(e)),n=this.depthStencilAttachment&&this.depthStencilAttachment.texture.clone(e);return this.device.createFramebuffer({...this.props,colorAttachments:t,depthStencilAttachment:n})}resize(e){let t=!e;if(e){let[n,s]=Array.isArray(e)?e:[e.width,e.height];t=t||s!==this.height||n!==this.width,this.width=n,this.height=s}t&&(P.log(2,`Resizing framebuffer ${this.id} to ${this.width}x${this.height}`)(),this.resizeAttachments(this.width,this.height))}autoCreateAttachmentTextures(){if(this.props.colorAttachments.length===0&&!this.props.depthStencilAttachment)throw new Error("Framebuffer has noattachments");this.colorAttachments=this.props.colorAttachments.map((t,n)=>{if(typeof t=="string"){let s=this.createColorTexture(t,n);return this.attachResource(s),s.view}return t instanceof H?t.view:t});let e=this.props.depthStencilAttachment;if(e)if(typeof e=="string"){let t=this.createDepthStencilTexture(e);this.attachResource(t),this.depthStencilAttachment=t.view}else e instanceof H?this.depthStencilAttachment=e.view:this.depthStencilAttachment=e}createColorTexture(e,t){return this.device.createTexture({id:`${this.id}-color-attachment-${t}`,usage:H.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height,sampler:{magFilter:"linear",minFilter:"linear"}})}createDepthStencilTexture(e){return this.device.createTexture({id:`${this.id}-depth-stencil-attachment`,usage:H.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height,mipmaps:!1})}resizeAttachments(e,t){for(let n=0;n<this.colorAttachments.length;++n)if(this.colorAttachments[n]){let s=this.colorAttachments[n].texture.clone({width:e,height:t});this.destroyAttachedResource(this.colorAttachments[n]),this.colorAttachments[n]=s.view,this.attachResource(s.view)}if(this.depthStencilAttachment){let n=this.depthStencilAttachment.texture.clone({width:e,height:t});this.destroyAttachedResource(this.depthStencilAttachment),this.depthStencilAttachment=n.view,this.attachResource(n)}this.updateAttachments()}},St=ul;D(St,"defaultProps",{...W.defaultProps,width:1,height:1,colorAttachments:[],depthStencilAttachment:null});var fl=class extends W{get[Symbol.toStringTag](){return"RenderPipeline"}shaderLayout;bufferLayout;linkStatus="pending";hash="";constructor(e,t){super(e,t,fl.defaultProps),this.shaderLayout=this.props.shaderLayout,this.bufferLayout=this.props.bufferLayout||[]}setUniformsWebGL(e){throw new Error("Use uniform blocks")}},it=fl;D(it,"defaultProps",{...W.defaultProps,vs:null,vertexEntryPoint:"vertexMain",vsConstants:{},fs:null,fragmentEntryPoint:"fragmentMain",fsConstants:{},shaderLayout:null,bufferLayout:[],topology:"triangle-list",parameters:{},bindings:{},uniforms:{}});var Fr=class extends W{get[Symbol.toStringTag](){return"RenderPass"}constructor(e,t){t=Fr.normalizeProps(e,t),super(e,t,Fr.defaultProps)}static normalizeProps(e,t){return{...e.props._resourceDefaults?.renderPass,...t}}},jt=Fr;D(jt,"defaultClearColor",[0,0,0,1]),D(jt,"defaultClearDepth",1),D(jt,"defaultClearStencil",0),D(jt,"defaultProps",{...W.defaultProps,framebuffer:null,parameters:void 0,clearColor:Fr.defaultClearColor,clearColors:void 0,clearDepth:Fr.defaultClearDepth,clearStencil:Fr.defaultClearStencil,depthReadOnly:!1,stencilReadOnly:!1,discard:!1,occlusionQuerySet:void 0,timestampQuerySet:void 0,beginTimestampIndex:void 0,endTimestampIndex:void 0});var hl=class extends W{get[Symbol.toStringTag](){return"ComputePipeline"}hash="";shaderLayout;constructor(e,t){super(e,t,hl.defaultProps),this.shaderLayout=t.shaderLayout}},Br=hl;D(Br,"defaultProps",{...W.defaultProps,shader:void 0,entryPoint:void 0,constants:{},shaderLayout:void 0});var dl=class extends W{get[Symbol.toStringTag](){return"CommandEncoder"}constructor(e,t){super(e,t,dl.defaultProps)}},In=dl;D(In,"defaultProps",{...W.defaultProps,measureExecutionTime:void 0});var pl=class extends W{get[Symbol.toStringTag](){return"CommandBuffer"}constructor(e,t){super(e,t,pl.defaultProps)}},Mn=pl;D(Mn,"defaultProps",{...W.defaultProps});function Uh(r){let[e,t]=Cy[r],n=e==="i32"||e==="u32",s=e!=="u32",i=Oy[e]*t,o=Py(e,t);return{dataType:e,components:t,defaultVertexFormat:o,byteLength:i,integer:n,signed:s}}function Py(r,e){let t;switch(r){case"f32":t="float32";break;case"i32":t="sint32";break;case"u32":t="uint32";break;case"f16":return e<=2?"float16x2":"float16x4"}return e===1?t:`${t}x${e}`}var Cy={f32:["f32",1],"vec2<f32>":["f32",2],"vec3<f32>":["f32",3],"vec4<f32>":["f32",4],f16:["f16",1],"vec2<f16>":["f16",2],"vec3<f16>":["f16",3],"vec4<f16>":["f16",4],i32:["i32",1],"vec2<i32>":["i32",2],"vec3<i32>":["i32",3],"vec4<i32>":["i32",4],u32:["u32",1],"vec2<u32>":["u32",2],"vec3<u32>":["u32",3],"vec4<u32>":["u32",4]},Oy={f32:4,f16:2,i32:4,u32:4};function ml(r){let e;r.endsWith("-webgl")&&(r.replace("-webgl",""),e=!0);let[t,n]=r.split("x"),s=t,i=n?parseInt(n):1,o=yo(s),a={type:s,components:i,byteLength:o.byteLength*i,integer:o.integer,signed:o.signed,normalized:o.normalized};return e&&(a.webglOnly=!0),a}function Ao(r,e){let t={};for(let n of r.attributes){let s=ky(r,e,n.name);s&&(t[n.name]=s)}return t}function Lh(r,e,t=16){let n=Ao(r,e),s=new Array(t).fill(null);for(let i of Object.values(n))s[i.location]=i;return s}function ky(r,e,t){let n=Ny(r,t),s=Dy(e,t);if(!n)return null;let i=Uh(n.type),o=s?.vertexFormat||i.defaultVertexFormat,a=ml(o);return{attributeName:s?.attributeName||n.name,bufferName:s?.bufferName||n.name,location:n.location,shaderType:n.type,shaderDataType:i.dataType,shaderComponents:i.components,vertexFormat:o,bufferDataType:a.type,bufferComponents:a.components,normalized:a.normalized,integer:i.integer,stepMode:s?.stepMode||n.stepMode||"vertex",byteOffset:s?.byteOffset||0,byteStride:s?.byteStride||0}}function Ny(r,e){let t=r.attributes.find(n=>n.name===e);return t||P.warn(`shader layout attribute "${e}" not present in shader`),t||null}function Dy(r,e){Fy(r);let t=By(r,e);return t||(t=Uy(r,e),t)?t:(P.warn(`layout for attribute "${e}" not present in buffer layout`),null)}function Fy(r){for(let e of r)(e.attributes&&e.format||!e.attributes&&!e.format)&&P.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`)}function By(r,e){for(let t of r)if(t.format&&t.name===e)return{attributeName:t.name,bufferName:e,stepMode:t.stepMode,vertexFormat:t.format,byteOffset:0,byteStride:t.byteStride||0};return null}function Uy(r,e){for(let t of r){let n=t.byteStride;if(typeof t.byteStride!="number")for(let i of t.attributes||[]){let o=ml(i.format);n+=o.byteLength}let s=t.attributes?.find(i=>i.attribute===e);if(s)return{attributeName:s.attribute,bufferName:t.name,stepMode:t.stepMode,vertexFormat:s.format,byteOffset:s.byteOffset,byteStride:n}}return null}var gl=class extends W{get[Symbol.toStringTag](){return"VertexArray"}maxVertexAttributes;attributeInfos;indexBuffer=null;attributes;constructor(e,t){super(e,t,gl.defaultProps),this.maxVertexAttributes=e.limits.maxVertexAttributes,this.attributes=new Array(this.maxVertexAttributes).fill(null);let{shaderLayout:n,bufferLayout:s}=t.renderPipeline||{};if(!n||!s)throw new Error("VertexArray");this.attributeInfos=Lh(n,s,this.maxVertexAttributes)}setConstantWebGL(e,t){this.device.reportError(new Error("constant attributes not supported"))}},Pn=gl;D(Pn,"defaultProps",{...W.defaultProps,renderPipeline:null});var _l=class extends W{get[Symbol.toStringTag](){return"TransformFeedback"}constructor(e,t){super(e,t,_l.defaultProps)}},Cn=_l;D(Cn,"defaultProps",{...W.defaultProps,layout:void 0,buffers:{}});var yl=class extends W{get[Symbol.toStringTag](){return"QuerySet"}constructor(e,t){super(e,t,yl.defaultProps)}},On=yl;D(On,"defaultProps",{...W.defaultProps,type:void 0,count:void 0});var Ly={f32:{type:"f32",components:1},i32:{type:"i32",components:1},u32:{type:"u32",components:1},"vec2<f32>":{type:"f32",components:2},"vec3<f32>":{type:"f32",components:3},"vec4<f32>":{type:"f32",components:4},"vec2<i32>":{type:"i32",components:2},"vec3<i32>":{type:"i32",components:3},"vec4<i32>":{type:"i32",components:4},"vec2<u32>":{type:"u32",components:2},"vec3<u32>":{type:"u32",components:3},"vec4<u32>":{type:"u32",components:4},"mat2x2<f32>":{type:"f32",components:4},"mat2x3<f32>":{type:"f32",components:6},"mat2x4<f32>":{type:"f32",components:8},"mat3x2<f32>":{type:"f32",components:6},"mat3x3<f32>":{type:"f32",components:9},"mat3x4<f32>":{type:"f32",components:12},"mat4x2<f32>":{type:"f32",components:8},"mat4x3<f32>":{type:"f32",components:12},"mat4x4<f32>":{type:"f32",components:16}};function Vh(r){return Ly[r]}function zh(r,e){switch(e){case 1:return r;case 2:return r+r%2;default:return r+(4-r%4)%4}}var So;function xl(r){return(!So||So.byteLength<r)&&(So=new ArrayBuffer(r)),So}function bl(r,e){let t=xl(r.BYTES_PER_ELEMENT*e);return new r(t,0,e)}function Vy(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}function kn(r){return Array.isArray(r)?r.length===0||typeof r[0]=="number":Vy(r)}var Wh=1024,Eo=class{layout={};byteLength;constructor(e){let t=0;for(let[s,i]of Object.entries(e)){let o=Vh(i),{type:a,components:c}=o;t=zh(t,c);let l=t;t+=c,this.layout[s]={type:a,size:c,offset:l}}t+=(4-t%4)%4;let n=t*4;this.byteLength=Math.max(n,Wh)}getData(e){let t=Math.max(this.byteLength,Wh),n=xl(t),s={i32:new Int32Array(n),u32:new Uint32Array(n),f32:new Float32Array(n),f16:new Uint16Array(n)};for(let[i,o]of Object.entries(e)){let a=this.layout[i];if(!a){P.warn(`Supplied uniform value ${i} not present in uniform block layout`)();continue}let{type:c,size:l,offset:u}=a,f=s[c];if(l===1){if(typeof o!="number"&&typeof o!="boolean"){P.warn(`Supplied value for single component uniform ${i} is not a number: ${o}`)();continue}f[u]=Number(o)}else{if(!kn(o)){P.warn(`Supplied value for multi component / array uniform ${i} is not a numeric array: ${o}`)();continue}f.set(o,u)}}return new Uint8Array(n)}has(e){return Boolean(this.layout[e])}get(e){return this.layout[e]}};function jh(r,e,t=16){if(r!==e)return!1;let n=r,s=e;if(!kn(n))return!1;if(kn(s)&&n.length===s.length){for(let i=0;i<n.length;++i)if(s[i]!==n[i])return!1}return!0}function $h(r){return kn(r)?r.slice():r}var Ro=class{name;uniforms={};modifiedUniforms={};modified=!0;bindingLayout={};needsRedraw="initialized";constructor(e){if(this.name=e?.name||"unnamed",e?.name&&e?.shaderLayout){let t=e?.shaderLayout.bindings?.find(s=>s.type==="uniform"&&s.name===e?.name);if(!t)throw new Error(e?.name);let n=t;for(let s of n.uniforms||[])this.bindingLayout[s.name]=s}}setUniforms(e){for(let[t,n]of Object.entries(e))this._setUniform(t,n),this.needsRedraw||this.setNeedsRedraw(`${this.name}.${t}=${n}`)}setNeedsRedraw(e){this.needsRedraw=this.needsRedraw||e}getAllUniforms(){return this.modifiedUniforms={},this.needsRedraw=!1,this.uniforms||{}}_setUniform(e,t){jh(this.uniforms[e],t)||(this.uniforms[e]=$h(t),this.modifiedUniforms[e]=!0,this.modified=!0)}};var Ss=class{uniformBlocks=new Map;uniformBufferLayouts=new Map;uniformBuffers=new Map;constructor(e){for(let[t,n]of Object.entries(e)){let s=t,i=new Eo(n.uniformTypes||{});this.uniformBufferLayouts.set(s,i);let o=new Ro({name:t});o.setUniforms(n.defaultUniforms||{}),this.uniformBlocks.set(s,o)}}destroy(){for(let e of this.uniformBuffers.values())e.destroy()}setUniforms(e){for(let[t,n]of Object.entries(e))this.uniformBlocks.get(t)?.setUniforms(n);this.updateUniformBuffers()}getUniformBufferByteLength(e){return this.uniformBufferLayouts.get(e)?.byteLength||0}getUniformBufferData(e){let t=this.uniformBlocks.get(e)?.getAllUniforms()||{};return this.uniformBufferLayouts.get(e)?.getData(t)}createUniformBuffer(e,t,n){n&&this.setUniforms(n);let s=this.getUniformBufferByteLength(t),i=e.createBuffer(