@deck.gl/jupyter-widget 9.2.1 → 9.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -549,7 +549,7 @@ __p+='`),u}),o+=`';
549
549
  } catch (error) {
550
550
  console.error(error);
551
551
  throw error;
552
- }`}function bB(t,e=!0,r){let n=r||new Set;if(t){if(tH(t))n.add(t);else if(tH(t.buffer))n.add(t.buffer);else if(!ArrayBuffer.isView(t)){if(e&&typeof t=="object")for(let i in t)bB(t[i],e,n)}}return r===void 0?Array.from(n):[]}function tH(t){return t?t instanceof ArrayBuffer||typeof MessagePort<"u"&&t instanceof MessagePort||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas:!1}var wB=()=>{},Fm=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&bc||typeof g_<"u"&&!bc}constructor(e){let{name:r,source:n,url:i}=e;Gc(n||i),this.name=r,this.source=n,this.url=i,this.onMessage=wB,this.onError=o=>console.log(o),this.worker=bc?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=wB,this.onError=wB,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(e,r){r=r||bB(e),this.worker.postMessage(e,r)}_getErrorFromErrorEvent(e){let r="Failed to load ";return r+=`worker ${this.name} from ${this.url}. `,e.message&&(r+=`${e.message} in `),e.lineno&&(r+=`:${e.lineno}:${e.colno}`),new Error(r)}_createBrowserWorker(){this._loadableURL=Jj({source:this.source,url:this.url});let e=new Worker(this._loadableURL,{name:this.name});return e.onmessage=r=>{r.data?this.onMessage(r.data):this.onError(new Error("No data received"))},e.onerror=r=>{this.onError(this._getErrorFromErrorEvent(r)),this.terminated=!0},e.onmessageerror=r=>console.error(r),e}_createNodeWorker(){let e;if(this.url){let n=this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`;e=new g_(n,{eval:!1})}else if(this.source)e=new g_(this.source,{eval:!0});else throw new Error("no worker");return e.on("message",r=>{this.onMessage(r)}),e.on("error",r=>{this.onError(r)}),e.on("exit",r=>{}),e}};var _2=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return Fm.isSupported()}constructor(e){this.source=e.source,this.url=e.url,this.setProps(e)}destroy(){this.idleQueue.forEach(e=>e.destroy()),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},e.name!==void 0&&(this.name=e.name),e.maxConcurrency!==void 0&&(this.maxConcurrency=e.maxConcurrency),e.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=e.maxMobileConcurrency),e.reuseWorkers!==void 0&&(this.reuseWorkers=e.reuseWorkers),e.onDebug!==void 0&&(this.onDebug=e.onDebug)}async startJob(e,r=(i,o,s)=>i.done(s),n=(i,o)=>i.error(o)){let i=new Promise(o=>(this.jobQueue.push({name:e,onMessage:r,onError:n,onStart:o}),this));return this._startQueuedJob(),await i}async _startQueuedJob(){if(!this.jobQueue.length)return;let e=this._getAvailableWorker();if(!e)return;let r=this.jobQueue.shift();if(r){this.onDebug({message:"Starting job",name:r.name,workerThread:e,backlog:this.jobQueue.length});let n=new y2(r.name,e);e.onMessage=i=>r.onMessage(n,i.type,i.payload),e.onError=i=>r.onError(n,i),r.onStart(n);try{await n.result}catch(i){console.error(`Worker exception: ${i}`)}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){!bc||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count<this._getMaxConcurrency()){this.count++;let e=`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;return new Fm({name:e,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return Qj?this.maxMobileConcurrency:this.maxConcurrency}};var sye={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},EA=class{props;workerPools=new Map;static isSupported(){return Fm.isSupported()}static getWorkerFarm(e={}){return EA._workerFarm=EA._workerFarm||new EA({}),EA._workerFarm.setProps(e),EA._workerFarm}constructor(e){this.props={...sye},this.setProps(e),this.workerPools=new Map}destroy(){for(let e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){this.props={...this.props,...e};for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(e){let{name:r,source:n,url:i}=e,o=this.workerPools.get(r);return o||(o=new _2({name:r,source:n,url:i}),o.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,o)),o}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}},zm=EA;Dr(zm,"_workerFarm");function TB(t,e={}){let r=e[t.id]||{},n=bc?`${t.id}-worker.js`:`${t.id}-worker-node.js`,i=r.workerUrl;if(!i&&t.id==="compression"&&(i=e.workerUrl),e._workerType==="test"&&(bc?i=`modules/${t.module}/dist/${n}`:i=`modules/${t.module}/src/workers/${t.id}-worker-node.ts`),!i){let o=t.version;o==="latest"&&(o=Kj);let s=o?`@${o}`:"";i=`https://unpkg.com/@loaders.gl/${t.module}${s}/dist/${n}`}return Gc(i),i}function EB(t,e=A2){Gc(t,"no worker provided");let r=t.version;return!(!e||!r)}var MB={};async function fp(t,e=null,r={},n=null){return e&&(t=rH(t,e,r,n)),MB[t]=MB[t]||aye(t),await MB[t]}function rH(t,e,r={},n=null){if(!r.useLocalLibraries&&t.startsWith("http"))return t;n=n||t;let i=r.modules||{};return i[n]?i[n]:bc?r.CDN?(Gc(r.CDN.startsWith("http")),`${r.CDN}/${e}@${A2}/dist/libs/${n}`):g2?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function aye(t){if(t.endsWith("wasm"))return await lye(t);if(!bc)try{let{requireFromFile:r}=globalThis.loaders||{};return await r?.(t)}catch(r){return console.error(r),null}if(g2)return importScripts(t);let e=await uye(t);return cye(e,t)}function cye(t,e){if(!bc){let{requireFromString:n}=globalThis.loaders||{};return n?.(t,e)}if(g2)return eval.call(globalThis,t),null;let r=document.createElement("script");r.id=e;try{r.appendChild(document.createTextNode(t))}catch{r.text=t}return document.body.appendChild(r),null}async function lye(t){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};return bc||!e||t.startsWith("http")?await(await fetch(t)).arrayBuffer():await e(t)}async function uye(t){let{readFileAsText:e}=globalThis.loaders||{};return bc||!e||t.startsWith("http")?await(await fetch(t)).text():await e(t)}function SB(t,e){return!zm.isSupported()||!bc&&!e?._nodeWorkers?!1:t.worker&&e?.worker}async function CB(t,e,r,n,i){let o=t.id,s=TB(t,r),l=zm.getWorkerFarm(r).getWorkerPool({name:o,url:s});r=JSON.parse(JSON.stringify(r)),n=JSON.parse(JSON.stringify(n||{}));let u=await l.startJob("process-on-worker",hye.bind(null,i));return u.postMessage("process",{input:e,options:r,context:n}),await(await u.result).result}async function hye(t,e,r,n){switch(r){case"done":e.done(n);break;case"error":e.error(new Error(n.error));break;case"process":let{id:i,input:o,options:s}=n;try{let a=await t(o,s);e.postMessage("done",{id:i,result:a})}catch(a){let l=a instanceof Error?a.message:"unknown error";e.postMessage("error",{id:i,error:l})}break;default:console.warn(`parse-with-worker unknown message ${r}`)}}function iH(t,e=5){return typeof t=="string"?t.slice(0,e):ArrayBuffer.isView(t)?nH(t.buffer,t.byteOffset,e):t instanceof ArrayBuffer?nH(t,0,e):""}function nH(t,e,r){if(t.byteLength<=e+r)return"";let n=new DataView(t),i="";for(let o=0;o<r;o++)i+=String.fromCharCode(n.getUint8(e+o));return i}function IB(t){try{return JSON.parse(t)}catch{throw new Error(`Failed to parse JSON from data starting with "${iH(t)}"`)}}function PB(t,e,r){if(r=r||t.byteLength,t.byteLength<r||e.byteLength<r)return!1;let n=new Uint8Array(t),i=new Uint8Array(e);for(let o=0;o<n.length;++o)if(n[o]!==i[o])return!1;return!0}function RB(...t){return oH(t)}function oH(t){let e=t.map(o=>o instanceof ArrayBuffer?new Uint8Array(o):o),r=e.reduce((o,s)=>o+s.byteLength,0),n=new Uint8Array(r),i=0;for(let o of e)n.set(o,i),i+=o.byteLength;return n.buffer}function x2(...t){let e=t,r=e&&e.length>1&&e[0].constructor||null;if(!r)throw new Error('"concatenateTypedArrays" - incorrect quantity of arguments or arguments have incompatible data types');let n=e.reduce((s,a)=>s+a.length,0),i=new r(n),o=0;for(let s of e)i.set(s,o),o+=s.length;return i}function MA(t,e,r){let n=r!==void 0?new Uint8Array(t).subarray(e,e+r):new Uint8Array(t).subarray(e);return new Uint8Array(n).buffer}function Um(t,e){return Bi(t>=0),Bi(e>0),t+(e-1)&~(e-1)}function LB(t,e,r){let n;if(t instanceof ArrayBuffer)n=new Uint8Array(t);else{let i=t.byteOffset,o=t.byteLength;n=new Uint8Array(t.buffer||t.arrayBuffer,i,o)}return e.set(n,r),r+Um(n.byteLength,4)}async function OB(t){let e=[];for await(let r of t)e.push(r);return RB(...e)}CA();var fye="Queued Requests",pye="Active Requests",dye="Cancelled Requests",mye="Queued Requests Ever",Aye="Active Requests Ever",gye={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},Vm=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(e={}){this.props={...gye,...e},this.stats=new ol({id:this.props.id}),this.stats.get(fye),this.stats.get(pye),this.stats.get(dye),this.stats.get(mye),this.stats.get(Aye)}scheduleRequest(e,r=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(e))return this.requestMap.get(e);let n={handle:e,priority:0,getPriority:r},i=new Promise(o=>(n.resolve=o,n));return this.requestQueue.push(n),this.requestMap.set(e,i),this._issueNewRequests(),i}_issueRequest(e){let{handle:r,resolve:n}=e,i=!1,o=()=>{i||(i=!0,this.requestMap.delete(r),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,n?n({done:o}):Promise.resolve({done:o})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let e=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(e!==0){this._updateAllRequests();for(let r=0;r<e;++r){let n=this.requestQueue.shift();n&&this._issueRequest(n)}}}_updateAllRequests(){let e=this.requestQueue;for(let r=0;r<e.length;++r){let n=e[r];this._updateRequest(n)||(e.splice(r,1),this.requestMap.delete(n.handle),r--)}e.sort((r,n)=>r.priority-n.priority)}_updateRequest(e){return e.priority=e.getPriority(e.handle),e.priority<0?(e.resolve(null),!1):!0}};var yye="",aH={};function DB(t){for(let e in aH)if(t.startsWith(e)){let r=aH[e];t=t.replace(e,r)}return!t.startsWith("http://")&&!t.startsWith("https://")&&(t=`${yye}${t}`),t}function cH(t){return t&&typeof t=="object"&&t.isBuffer}function dM(t){if(cH(t))return t;if(t instanceof ArrayBuffer)return t;if(ArrayBuffer.isView(t))return t.byteOffset===0&&t.byteLength===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);if(typeof t=="string"){let e=t;return new TextEncoder().encode(e).buffer}if(t&&typeof t=="object"&&t._toArrayBuffer)return t._toArrayBuffer();throw new Error("toArrayBuffer")}var ku={};Uo(ku,{dirname:()=>xye,filename:()=>_ye,join:()=>vye,resolve:()=>bye});function lH(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let t=window.location?.pathname;return t?.slice(0,t.lastIndexOf("/")+1)||""}function _ye(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(e+1):""}function xye(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(0,e):""}function vye(...t){let e="/";return t=t.map((r,n)=>(n&&(r=r.replace(new RegExp(`^${e}`),"")),n!==t.length-1&&(r=r.replace(new RegExp(`${e}$`),"")),r)),t.join(e)}function bye(...t){let e=[];for(let o=0;o<t.length;o++)e[o]=t[o];let r="",n=!1,i;for(let o=e.length-1;o>=-1&&!n;o--){let s;o>=0?s=e[o]:(i===void 0&&(i=lH()),s=i),s.length!==0&&(r=`${s}/${r}`,n=s.charCodeAt(0)===b2)}return r=wye(r,!n),n?`/${r}`:r.length>0?r:"."}var b2=47,NB=46;function wye(t,e){let r="",n=-1,i=0,o,s=!1;for(let a=0;a<=t.length;++a){if(a<t.length)o=t.charCodeAt(a);else{if(o===b2)break;o=b2}if(o===b2){if(!(n===a-1||i===1))if(n!==a-1&&i===2){if(r.length<2||!s||r.charCodeAt(r.length-1)!==NB||r.charCodeAt(r.length-2)!==NB){if(r.length>2){let l=r.length-1,u=l;for(;u>=0&&r.charCodeAt(u)!==b2;--u);if(u!==l){r=u===-1?"":r.slice(0,u),n=a,i=0,s=!1;continue}}else if(r.length===2||r.length===1){r="",n=a,i=0,s=!1;continue}}e&&(r.length>0?r+="/..":r="..",s=!0)}else{let l=t.slice(n+1,a);r.length>0?r+=`/${l}`:r=l,s=!1}n=a,i=0}else o===NB&&i!==-1?++i:i=-1}return r}var mM=class{fetch;loadOptions;_needsRefresh=!0;props;constructor(e){this.props={...e},this.loadOptions={...e.loadOptions},this.fetch=Tye(this.loadOptions)}setProps(e){this.props=Object.assign(this.props,e),this.setNeedsRefresh()}setNeedsRefresh(){this._needsRefresh=!0}getNeedsRefresh(e=!0){let r=this._needsRefresh;return e&&(this._needsRefresh=!1),r}};function Tye(t){let e=t?.fetch;if(e&&typeof e=="function")return(n,i)=>e(n,i);let r=t?.fetch;return r&&typeof r!="function"?n=>fetch(n,r):n=>fetch(n)}var gh=class extends mM{};Dr(gh,"type","template"),Dr(gh,"testURL",e=>!1);var Eye=t=>typeof t=="boolean",w2=t=>typeof t=="function",IA=t=>t!==null&&typeof t=="object",FB=t=>IA(t)&&t.constructor==={}.constructor;var uH=t=>Boolean(t)&&typeof t[Symbol.iterator]=="function",hH=t=>t&&typeof t[Symbol.asyncIterator]=="function";var yh=t=>typeof Response<"u"&&t instanceof Response||t&&t.arrayBuffer&&t.text&&t.json;var _h=t=>typeof Blob<"u"&&t instanceof Blob,fH=t=>t&&typeof t=="object"&&t.isBuffer;var Mye=t=>typeof ReadableStream<"u"&&t instanceof ReadableStream||IA(t)&&w2(t.tee)&&w2(t.cancel)&&w2(t.getReader);var Sye=t=>IA(t)&&w2(t.read)&&w2(t.pipe)&&Eye(t.readable),AM=t=>Mye(t)||Sye(t);var gM=class extends Error{constructor(e,r){super(e),this.reason=r.reason,this.url=r.url,this.response=r.response}reason;url;response};var Cye=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,Iye=/^([-\w.]+\/[-\w.+]+)/;function zB(t,e){return t.toLowerCase()===e.toLowerCase()}function pH(t){let e=Iye.exec(t);return e?e[1]:t}function UB(t){let e=Cye.exec(t);return e?e[1]:""}var dH=/\?.*/;function mH(t){let e=t.match(dH);return e&&e[0]}function y_(t){return t.replace(dH,"")}function AH(t){if(t.length<50)return t;let e=t.slice(t.length-15);return`${t.substr(0,32)}...${e}`}function PA(t){return yh(t)?t.url:_h(t)?t.name||"":typeof t=="string"?t:""}function T2(t){if(yh(t)){let e=t,r=e.headers.get("content-type")||"",n=y_(e.url);return pH(r)||UB(n)}return _h(t)?t.type||"":typeof t=="string"?UB(t):""}function gH(t){return yh(t)?t.headers["content-length"]||-1:_h(t)?t.size:typeof t=="string"?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1}async function yM(t){if(yh(t))return t;let e={},r=gH(t);r>=0&&(e["content-length"]=String(r));let n=PA(t),i=T2(t);i&&(e["content-type"]=i);let o=await Rye(t);o&&(e["x-first-bytes"]=o),typeof t=="string"&&(t=new TextEncoder().encode(t));let s=new Response(t,{headers:e});return Object.defineProperty(s,"url",{value:n}),s}async function yH(t){if(!t.ok)throw await Pye(t)}async function Pye(t){let e=AH(t.url),r=`Failed to fetch resource (${t.status}) ${t.statusText}: ${e}`;r=r.length>100?`${r.slice(0,100)}...`:r;let n={reason:t.statusText,url:t.url,response:t};try{let i=t.headers.get("Content-Type");n.reason=i?.includes("application/json")?await t.json():t.text()}catch{}return new gM(r,n)}async function Rye(t){if(typeof t=="string")return`data:,${t.slice(0,5)}`;if(t instanceof Blob){let r=t.slice(0,5);return await new Promise(n=>{let i=new FileReader;i.onload=o=>n(o?.target?.result),i.readAsDataURL(r)})}if(t instanceof ArrayBuffer){let r=t.slice(0,5);return`data:base64,${Lye(r)}`}return null}function Lye(t){let e="",r=new Uint8Array(t);for(let n=0;n<r.byteLength;n++)e+=String.fromCharCode(r[n]);return btoa(e)}function Oye(t){return!Bye(t)&&!kye(t)}function Bye(t){return t.startsWith("http:")||t.startsWith("https:")}function kye(t){return t.startsWith("data:")}async function __(t,e){if(typeof t=="string"){let r=DB(t);return Oye(r)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,e):await fetch(r,e)}return await yM(t)}A_();var VB=new au({id:"loaders.gl"}),_M=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},xM=class{console;constructor(){this.console=console}log(...e){return this.console.log.bind(this.console,...e)}info(...e){return this.console.info.bind(this.console,...e)}warn(...e){return this.console.warn.bind(this.console,...e)}error(...e){return this.console.error.bind(this.console,...e)}};var jB={fetch:null,mimeType:void 0,nothrow:!1,log:new xM,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:vd,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},_H={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function HB(){globalThis.loaders=globalThis.loaders||{};let{loaders:t}=globalThis;return t._state||(t._state={}),t._state}function WB(){let t=HB();return t.globalOptions=t.globalOptions||{...jB},t.globalOptions}function bH(t,e,r,n){return r=r||[],r=Array.isArray(r)?r:[r],Dye(t,r),Fye(e,t,n)}function Dye(t,e){xH(t,null,jB,_H,e);for(let r of e){let n=t&&t[r.id]||{},i=r.options&&r.options[r.id]||{},o=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};xH(n,r.id,i,o,e)}}function xH(t,e,r,n,i){let o=e||"Top level",s=e?`${e}.`:"";for(let a in t){let l=!e&&IA(t[a]),u=a==="baseUri"&&!e,f=a==="workerUrl"&&e;if(!(a in r)&&!u&&!f){if(a in n)VB.warn(`${o} loader option '${s}${a}' no longer supported, use '${n[a]}'`)();else if(!l){let m=Nye(a,i);VB.warn(`${o} loader option '${s}${a}' not recognized. ${m}`)()}}}}function Nye(t,e){let r=t.toLowerCase(),n="";for(let i of e)for(let o in i.options){if(t===o)return`Did you mean '${i.id}.${o}'?`;let s=o.toLowerCase();(r.startsWith(s)||s.startsWith(r))&&(n=n||`Did you mean '${i.id}.${o}'?`)}return n}function Fye(t,e,r){let i={...t.options||{}};return zye(i,r),i.log===null&&(i.log=new _M),vH(i,WB()),vH(i,e),i}function vH(t,e){for(let r in e)if(r in e){let n=e[r];FB(n)&&FB(t[r])?t[r]={...t[r],...e[r]}:t[r]=e[r]}}function zye(t,e){e&&!("baseUri"in t)&&(t.baseUri=e)}function E2(t){return t?(Array.isArray(t)&&(t=t[0]),Array.isArray(t?.extensions)):!1}function M2(t){Bi(t,"null loader"),Bi(E2(t),"invalid loader");let e;return Array.isArray(t)&&(e=t[1],t=t[0],t={...t,options:{...t.options,...e}}),(t?.parseTextSync||t?.parseText)&&(t.text=!0),t.text||(t.binary=!0),t}var wH=()=>{let t=HB();return t.loaderRegistry=t.loaderRegistry||[],t.loaderRegistry};function RA(t){let e=wH();t=Array.isArray(t)?t:[t];for(let r of t){let n=M2(r);e.find(i=>n===i)||e.unshift(n)}}function TH(){return wH()}A_();var EH=new au({id:"loaders.gl"});var Uye=/\.([^.]+)$/;async function CH(t,e=[],r,n){if(!IH(t))return null;let i=MH(t,e,{...r,nothrow:!0},n);if(i)return i;if(_h(t)&&(t=await t.slice(0,10).arrayBuffer(),i=MH(t,e,r,n)),!i&&!r?.nothrow)throw new Error(PH(t));return i}function MH(t,e=[],r,n){if(!IH(t))return null;if(e&&!Array.isArray(e))return M2(e);let i=[];e&&(i=i.concat(e)),r?.ignoreRegisteredLoaders||i.push(...TH()),jye(i);let o=Vye(t,i,r,n);if(!o&&!r?.nothrow)throw new Error(PH(t));return o}function Vye(t,e,r,n){let i=PA(t),o=T2(t),s=y_(i)||n?.url,a=null,l="";return r?.mimeType&&(a=qB(e,r?.mimeType),l=`match forced by supplied MIME type ${r?.mimeType}`),a=a||Hye(e,s),l=l||(a?`matched url ${s}`:""),a=a||qB(e,o),l=l||(a?`matched MIME type ${o}`:""),a=a||qye(e,t),l=l||(a?`matched initial data ${RH(t)}`:""),r?.fallbackMimeType&&(a=a||qB(e,r?.fallbackMimeType),l=l||(a?`matched fallback MIME type ${o}`:"")),l&&EH.log(1,`selectLoader selected ${a?.name}: ${l}.`),a}function IH(t){return!(t instanceof Response&&t.status===204)}function PH(t){let e=PA(t),r=T2(t),n="No valid loader found (";n+=e?`${ku.filename(e)}, `:"no url provided, ",n+=`MIME type: ${r?`"${r}"`:"not provided"}, `;let i=t?RH(t):"";return n+=i?` first bytes: "${i}"`:"first bytes: not available",n+=")",n}function jye(t){for(let e of t)M2(e)}function Hye(t,e){let r=e&&Uye.exec(e),n=r&&r[1];return n?Wye(t,n):null}function Wye(t,e){e=e.toLowerCase();for(let r of t)for(let n of r.extensions)if(n.toLowerCase()===e)return r;return null}function qB(t,e){for(let r of t)if(r.mimeTypes?.some(n=>zB(e,n))||zB(e,`application/x.${r.id}`))return r;return null}function qye(t,e){if(!e)return null;for(let r of t)if(typeof e=="string"){if(Gye(e,r))return r}else if(ArrayBuffer.isView(e)){if(SH(e.buffer,e.byteOffset,r))return r}else if(e instanceof ArrayBuffer&&SH(e,0,r))return r;return null}function Gye(t,e){return e.testText?e.testText(t):(Array.isArray(e.tests)?e.tests:[e.tests]).some(n=>t.startsWith(n))}function SH(t,e,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(i=>Xye(t,e,r,i))}function Xye(t,e,r,n){if(n instanceof ArrayBuffer)return PB(n,t,n.byteLength);switch(typeof n){case"function":return n(t);case"string":let i=GB(t,e,n.length);return n===i;default:return!1}}function RH(t,e=5){return typeof t=="string"?t.slice(0,e):ArrayBuffer.isView(t)?GB(t.buffer,t.byteOffset,e):t instanceof ArrayBuffer?GB(t,0,e):""}function GB(t,e,r){if(t.byteLength<e+r)return"";let n=new DataView(t),i="";for(let o=0;o<r;o++)i+=String.fromCharCode(n.getUint8(e+o));return i}function*LH(t,e){let r=e?.chunkSize||262144,n=0,i=new TextEncoder;for(;n<t.length;){let o=Math.min(t.length-n,r),s=t.slice(n,n+o);n+=o,yield i.encode(s)}}function*OH(t,e={}){let{chunkSize:r=262144}=e,n=0;for(;n<t.byteLength;){let i=Math.min(t.byteLength-n,r),o=new ArrayBuffer(i),s=new Uint8Array(t,n,i);new Uint8Array(o).set(s),n+=i,yield o}}async function*BH(t,e){let r=e?.chunkSize||1048576,n=0;for(;n<t.size;){let i=n+r,o=await t.slice(n,i).arrayBuffer();n=i,yield o}}function XB(t,e){return vd?Yye(t,e):$ye(t,e)}async function*Yye(t,e){let r=t.getReader(),n;try{for(;;){let i=n||r.read();e?._streamReadAhead&&(n=r.read());let{done:o,value:s}=await i;if(o)return;yield dM(s)}}catch{r.releaseLock()}}async function*$ye(t,e){for await(let r of t)yield dM(r)}function kH(t,e){if(typeof t=="string")return LH(t,e);if(t instanceof ArrayBuffer)return OH(t,e);if(_h(t))return BH(t,e);if(AM(t))return XB(t,e);if(yh(t))return XB(t.body,e);throw new Error("makeIterator")}var DH="Cannot convert supplied data type";function Kye(t,e,r){if(e.text&&typeof t=="string")return t;if(fH(t)&&(t=t.buffer),t instanceof ArrayBuffer){let n=t;return e.text&&!e.binary?new TextDecoder("utf8").decode(n):n}if(ArrayBuffer.isView(t)){if(e.text&&!e.binary)return new TextDecoder("utf8").decode(t);let n=t.buffer,i=t.byteLength||t.length;return(t.byteOffset!==0||i!==n.byteLength)&&(n=n.slice(t.byteOffset,t.byteOffset+i)),n}throw new Error(DH)}async function NH(t,e,r){let n=t instanceof ArrayBuffer||ArrayBuffer.isView(t);if(typeof t=="string"||n)return Kye(t,e,r);if(_h(t)&&(t=await yM(t)),yh(t)){let i=t;return await yH(i),e.binary?await i.arrayBuffer():await i.text()}if(AM(t)&&(t=kH(t,r)),uH(t)||hH(t))return OB(t);throw new Error(DH)}function vM(t,e){let r=WB(),n=t||r;return typeof n.fetch=="function"?n.fetch:IA(n.fetch)?i=>__(i,n.fetch):e?.fetch?e?.fetch:__}function FH(t,e,r){if(r)return r;let n={fetch:vM(e,t),...t};if(n.url){let i=y_(n.url);n.baseUrl=i,n.queryString=mH(n.url),n.filename=ku.filename(i),n.baseUrl=ku.dirname(i)}return Array.isArray(n.loaders)||(n.loaders=null),n}function zH(t,e){if(t&&!Array.isArray(t))return t;let r;if(t&&(r=Array.isArray(t)?t:[t]),e&&e.loaders){let n=Array.isArray(e.loaders)?e.loaders:[e.loaders];r=r?[...r,...n]:n}return r&&r.length?r:void 0}async function jm(t,e,r,n){e&&!Array.isArray(e)&&!E2(e)&&(n=void 0,r=e,e=void 0),t=await t,r=r||{};let i=PA(t),s=zH(e,n),a=await CH(t,s,r);return a?(r=bH(r,a,s,i),n=FH({url:i,_parse:jm,loaders:s},r,n||null),await Zye(a,t,r,n)):null}async function Zye(t,e,r,n){if(EB(t),r=m2(t.options,r),yh(e)){let o=e,{ok:s,redirected:a,status:l,statusText:u,type:f,url:m}=o,v=Object.fromEntries(o.headers.entries());n.response={headers:v,ok:s,redirected:a,status:l,statusText:u,type:f,url:m}}e=await NH(e,t,r);let i=t;if(i.parseTextSync&&typeof e=="string")return i.parseTextSync(e,r,n);if(SB(t,r))return await CB(t,e,r,n,jm);if(i.parseText&&typeof e=="string")return await i.parseText(e,r,n);if(i.parse)return await i.parse(e,r,n);throw Gc(!i.parseSync),new Error(`${t.id} loader - no parser found and worker is disabled`)}async function za(t,e,r,n){let i,o;!Array.isArray(e)&&!E2(e)?(i=[],o=e,n=void 0):(i=e,o=r);let s=vM(o),a=t;return typeof t=="string"&&(a=await s(t)),_h(t)&&(a=await s(t)),Array.isArray(i)?await jm(a,i,o):await jm(a,i,o)}YB();var VH,jH,WH={fontFamily:'"Helvetica Neue", Helvetica, Arial, sans-serif',display:"flex",flex:"wrap",maxWidth:"500px",flexDirection:"column",zIndex:2};function bM(){return document.createElement("div")}function Qye(t){if(!t.picked)return null;if(t.object===VH)return jH;let e={html:e_e(t.object),style:WH};return jH=e,VH=t.object,e}var Jye=new Set(["position","index"]);function e_e(t){let e=bM();for(let r in t){if(Jye.has(r))continue;let n=bM();n.className="header",n.textContent=r;let i=bM();i.className="value",i.textContent=r_e(t[r]);let o=bM();t_e(o,n,i),o.appendChild(n),o.appendChild(i),e.appendChild(o)}return e.innerHTML}function t_e(t,e,r){Object.assign(e.style,{fontWeight:700,marginRight:"10px",flex:"1 1 0%"}),Object.assign(r.style,{flex:"none",maxWidth:"250px",overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}),Object.assign(t.style,{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"stretch"})}function r_e(t){let e;if(Array.isArray(t)&&t.length>4)e=`Array<${t.length}>`;else if(typeof t=="string")e=t;else if(typeof t=="number")e=String(t);else try{e=JSON.stringify(t)}catch{e="<Non-Serializable Object>"}let r=50;return e.length>r&&(e=e.slice(0,r)),e}function HH(t,e){let r,n=t,i="properties",o=/{[^}]*}/g,s=l=>l.replace(/[{}]/g,""),a=[...new Set(t.match(o).map(s))];for(let l of a){if(l.includes(".")){r=e;let u=l.split(".");for(let f of u)if(r.hasOwnProperty(f))r=r[f];else{r=void 0;break}}else e.hasOwnProperty(l)?r=e[l]:e[i]&&e[i].hasOwnProperty(l)?r=e[i][l]:r=void 0;n=n.replaceAll(`{${l}}`,r)}return n}function $B(t){return t?t.html||t.text?e=>{if(!e.picked)return null;let r={style:t.style||WH};return t.html?r.html=HH(t.html,e.object):r.text=HH(t.text,e.object),r}:Qye:null}function qH(t){let e=document.createElement("link");e.type="text/css",e.rel="stylesheet",e.href=t,document.getElementsByTagName("head")[0].appendChild(e)}function GH(t,e){let r=document.createElement("div");return r.style.width=Number.isFinite(t)?`${t}px`:t,r.style.height=`${e}px`,r.style.position="relative",r}var YH=vc(XH()),n_e="https://api.tiles.mapbox.com/mapbox-gl-js/v1.13.2/mapbox-gl.css",QB=YH.default;function $H(t=n_e){qH(t)}function KH(){let t=["mapboxgl-missing-css"];for(let e of t){let r=document.getElementsByClassName(e)[0];r&&r.style&&(r.style.display="none")}}var JB={};function ZH(t){if(!JB[t]){let e=document.createElement("script");e.type="text/javascript",e.src=t,document.querySelector("head").appendChild(e),JB[t]=new Promise(n=>{e.onload=n})}return JB[t]}var QH="4.2.1";var i_e=globalThis.loaders?.parseImageNode,ek=typeof Image<"u",tk=typeof ImageBitmap<"u",o_e=Boolean(i_e),rk=vd?!0:o_e;function JH(t){switch(t){case"auto":return tk||ek||rk;case"imagebitmap":return tk;case"image":return ek;case"data":return rk;default:throw new Error(`@loaders.gl/images: image ${t} not supported in this environment`)}}function eW(){if(tk)return"imagebitmap";if(ek)return"image";if(rk)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function tW(t){let e=s_e(t);if(!e)throw new Error("Not an image");return e}function S2(t){switch(tW(t)){case"data":return t;case"image":case"imagebitmap":let e=document.createElement("canvas"),r=e.getContext("2d");if(!r)throw new Error("getImageData");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0),r.getImageData(0,0,t.width,t.height);default:throw new Error("getImageData")}}function s_e(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&t instanceof Image?"image":t&&typeof t=="object"&&t.data&&t.width&&t.height?"data":null}var a_e=/^data:image\/svg\+xml/,c_e=/\.svg((\?|#).*)?$/;function wM(t){return t&&(a_e.test(t)||c_e.test(t))}function rW(t,e){if(wM(e)){let n=new TextDecoder().decode(t);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(o){throw new Error(o.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return nk(t,e)}function nk(t,e){if(wM(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(t)])}async function TM(t,e,r){let n=rW(t,r),i=self.URL||self.webkitURL,o=typeof n!="string"&&i.createObjectURL(n);try{return await l_e(o||n,e)}finally{o&&i.revokeObjectURL(o)}}async function l_e(t,e){let r=new Image;return r.src=t,e.image&&e.image.decode&&r.decode?(await r.decode(),r):await new Promise((n,i)=>{try{r.onload=()=>n(r),r.onerror=o=>{let s=o instanceof Error?o.message:"error";i(new Error(s))}}catch(o){i(o)}})}var u_e={},nW=!0;async function iW(t,e,r){let n;wM(r)?n=await TM(t,e,r):n=nk(t,r);let i=e&&e.imagebitmap;return await h_e(n,i)}async function h_e(t,e=null){if((f_e(e)||!nW)&&(e=null),e)try{return await createImageBitmap(t,e)}catch(r){console.warn(r),nW=!1}return await createImageBitmap(t)}function f_e(t){for(let e in t||u_e)return!1;return!0}function oW(t){return!A_e(t,"ftyp",4)||!(t[8]&96)?null:p_e(t)}function p_e(t){switch(d_e(t,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function d_e(t,e,r){return String.fromCharCode(...t.slice(e,r))}function m_e(t){return[...t].map(e=>e.charCodeAt(0))}function A_e(t,e,r=0){let n=m_e(e);for(let i=0;i<n.length;++i)if(n[i]!==t[i+r])return!1;return!0}var dp=!1,C2=!0;function LA(t){let e=I2(t);return y_e(e)||v_e(e)||__e(e)||x_e(e)||g_e(e)}function g_e(t){let e=new Uint8Array(t instanceof DataView?t.buffer:t),r=oW(e);return r?{mimeType:r.mimeType,width:0,height:0}:null}function y_e(t){let e=I2(t);return e.byteLength>=24&&e.getUint32(0,dp)===2303741511?{mimeType:"image/png",width:e.getUint32(16,dp),height:e.getUint32(20,dp)}:null}function __e(t){let e=I2(t);return e.byteLength>=10&&e.getUint32(0,dp)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,C2),height:e.getUint16(8,C2)}:null}function x_e(t){let e=I2(t);return e.byteLength>=14&&e.getUint16(0,dp)===16973&&e.getUint32(2,C2)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,C2),height:e.getUint32(22,C2)}:null}function v_e(t){let e=I2(t);if(!(e.byteLength>=3&&e.getUint16(0,dp)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:i}=b_e(),o=2;for(;o+9<e.byteLength;){let s=e.getUint16(o,dp);if(i.has(s))return{mimeType:"image/jpeg",height:e.getUint16(o+5,dp),width:e.getUint16(o+7,dp)};if(!n.has(s))return null;o+=2,o+=e.getUint16(o,dp)}return null}function b_e(){let t=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)t.add(r);return{tableMarkers:t,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function I2(t){if(t instanceof DataView)return t;if(ArrayBuffer.isView(t))return new DataView(t.buffer);if(t instanceof ArrayBuffer)return new DataView(t);throw new Error("toDataView")}async function sW(t,e){let{mimeType:r}=LA(t)||{},n=globalThis.loaders?.parseImageNode;return Bi(n),await n(t,r)}async function aW(t,e,r){e=e||{};let i=(e.image||{}).type||"auto",{url:o}=r||{},s=w_e(i),a;switch(s){case"imagebitmap":a=await iW(t,e,o);break;case"image":a=await TM(t,e,o);break;case"data":a=await sW(t,e);break;default:Bi(!1)}return i==="data"&&(a=S2(a)),a}function w_e(t){switch(t){case"auto":case"data":return eW();default:return JH(t),t}}var T_e=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],E_e=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],M_e={image:{type:"auto",decode:!0}},mp={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:QH,mimeTypes:E_e,extensions:T_e,parse:aW,tests:[t=>Boolean(LA(new DataView(t)))],options:M_e};var ik={};function ok(t){if(ik[t]===void 0){let e=vd?C_e(t):S_e(t);ik[t]=e}return ik[t]}function S_e(t){let e=["image/png","image/jpeg","image/gif"],r=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&r.includes(t)}function C_e(t){switch(t){case"image/avif":case"image/webp":return I_e(t);default:return!0}}function I_e(t){try{return document.createElement("canvas").toDataURL(t).indexOf(`data:${t}`)===0}catch{return!1}}A_();var P_e=new au({id:"deck"}),Ar=P_e;var sk={};function cW(t){sk=t}function sa(t,e,r,n){Ar.level>0&&sk[t]&&sk[t].call(null,e,r,n)}function R_e(t){let e=t[0],r=t[t.length-1];return e==="{"&&r==="}"||e==="["&&r==="]"}var lW={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:R_e,parseTextSync:JSON.parse};function L_e(){let t="9.2.1",e=globalThis.deck&&globalThis.deck.VERSION;if(e&&e!==t)throw new Error(`deck.gl - multiple versions detected: ${e} vs ${t}`);return e||(Ar.log(1,`deck.gl ${t}`)(),globalThis.deck={...globalThis.deck,VERSION:t,version:t,log:Ar,_registerLoggers:cW},RA([lW,[mp,{imagebitmap:{premultiplyAlpha:"none"}}]])),t}var EM=L_e();function MM(t,e){if(!t)throw new Error(e||"shadertools: assertion failed.")}var ak={number:{type:"number",validate(t,e){return Number.isFinite(t)&&typeof e=="object"&&(e.max===void 0||t<=e.max)&&(e.min===void 0||t>=e.min)}},array:{type:"array",validate(t,e){return Array.isArray(t)||ArrayBuffer.isView(t)}}};function hW(t){let e={};for(let[r,n]of Object.entries(t))e[r]=O_e(n);return e}function O_e(t){let e=uW(t);if(e!=="object")return{value:t,...ak[e],type:e};if(typeof t=="object")return t?t.type!==void 0?{...t,...ak[t.type],type:t.type}:t.value===void 0?{type:"object",value:t}:(e=uW(t.value),{...t,...ak[e],type:e}):{type:"object",value:null};throw new Error("props")}function uW(t){return Array.isArray(t)||ArrayBuffer.isView(t)?"array":typeof t}var fW=`#ifdef MODULE_LOGDEPTH
552
+ }`}function bB(t,e=!0,r){let n=r||new Set;if(t){if(tH(t))n.add(t);else if(tH(t.buffer))n.add(t.buffer);else if(!ArrayBuffer.isView(t)){if(e&&typeof t=="object")for(let i in t)bB(t[i],e,n)}}return r===void 0?Array.from(n):[]}function tH(t){return t?t instanceof ArrayBuffer||typeof MessagePort<"u"&&t instanceof MessagePort||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas:!1}var wB=()=>{},Fm=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&bc||typeof g_<"u"&&!bc}constructor(e){let{name:r,source:n,url:i}=e;Gc(n||i),this.name=r,this.source=n,this.url=i,this.onMessage=wB,this.onError=o=>console.log(o),this.worker=bc?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=wB,this.onError=wB,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(e,r){r=r||bB(e),this.worker.postMessage(e,r)}_getErrorFromErrorEvent(e){let r="Failed to load ";return r+=`worker ${this.name} from ${this.url}. `,e.message&&(r+=`${e.message} in `),e.lineno&&(r+=`:${e.lineno}:${e.colno}`),new Error(r)}_createBrowserWorker(){this._loadableURL=Jj({source:this.source,url:this.url});let e=new Worker(this._loadableURL,{name:this.name});return e.onmessage=r=>{r.data?this.onMessage(r.data):this.onError(new Error("No data received"))},e.onerror=r=>{this.onError(this._getErrorFromErrorEvent(r)),this.terminated=!0},e.onmessageerror=r=>console.error(r),e}_createNodeWorker(){let e;if(this.url){let n=this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`;e=new g_(n,{eval:!1})}else if(this.source)e=new g_(this.source,{eval:!0});else throw new Error("no worker");return e.on("message",r=>{this.onMessage(r)}),e.on("error",r=>{this.onError(r)}),e.on("exit",r=>{}),e}};var _2=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return Fm.isSupported()}constructor(e){this.source=e.source,this.url=e.url,this.setProps(e)}destroy(){this.idleQueue.forEach(e=>e.destroy()),this.isDestroyed=!0}setProps(e){this.props={...this.props,...e},e.name!==void 0&&(this.name=e.name),e.maxConcurrency!==void 0&&(this.maxConcurrency=e.maxConcurrency),e.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=e.maxMobileConcurrency),e.reuseWorkers!==void 0&&(this.reuseWorkers=e.reuseWorkers),e.onDebug!==void 0&&(this.onDebug=e.onDebug)}async startJob(e,r=(i,o,s)=>i.done(s),n=(i,o)=>i.error(o)){let i=new Promise(o=>(this.jobQueue.push({name:e,onMessage:r,onError:n,onStart:o}),this));return this._startQueuedJob(),await i}async _startQueuedJob(){if(!this.jobQueue.length)return;let e=this._getAvailableWorker();if(!e)return;let r=this.jobQueue.shift();if(r){this.onDebug({message:"Starting job",name:r.name,workerThread:e,backlog:this.jobQueue.length});let n=new y2(r.name,e);e.onMessage=i=>r.onMessage(n,i.type,i.payload),e.onError=i=>r.onError(n,i),r.onStart(n);try{await n.result}catch(i){console.error(`Worker exception: ${i}`)}finally{this.returnWorkerToQueue(e)}}}returnWorkerToQueue(e){!bc||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count<this._getMaxConcurrency()){this.count++;let e=`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;return new Fm({name:e,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return Qj?this.maxMobileConcurrency:this.maxConcurrency}};var sye={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},EA=class{props;workerPools=new Map;static isSupported(){return Fm.isSupported()}static getWorkerFarm(e={}){return EA._workerFarm=EA._workerFarm||new EA({}),EA._workerFarm.setProps(e),EA._workerFarm}constructor(e){this.props={...sye},this.setProps(e),this.workerPools=new Map}destroy(){for(let e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){this.props={...this.props,...e};for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(e){let{name:r,source:n,url:i}=e,o=this.workerPools.get(r);return o||(o=new _2({name:r,source:n,url:i}),o.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,o)),o}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}},zm=EA;Dr(zm,"_workerFarm");function TB(t,e={}){let r=e[t.id]||{},n=bc?`${t.id}-worker.js`:`${t.id}-worker-node.js`,i=r.workerUrl;if(!i&&t.id==="compression"&&(i=e.workerUrl),e._workerType==="test"&&(bc?i=`modules/${t.module}/dist/${n}`:i=`modules/${t.module}/src/workers/${t.id}-worker-node.ts`),!i){let o=t.version;o==="latest"&&(o=Kj);let s=o?`@${o}`:"";i=`https://unpkg.com/@loaders.gl/${t.module}${s}/dist/${n}`}return Gc(i),i}function EB(t,e=A2){Gc(t,"no worker provided");let r=t.version;return!(!e||!r)}var MB={};async function fp(t,e=null,r={},n=null){return e&&(t=rH(t,e,r,n)),MB[t]=MB[t]||aye(t),await MB[t]}function rH(t,e,r={},n=null){if(!r.useLocalLibraries&&t.startsWith("http"))return t;n=n||t;let i=r.modules||{};return i[n]?i[n]:bc?r.CDN?(Gc(r.CDN.startsWith("http")),`${r.CDN}/${e}@${A2}/dist/libs/${n}`):g2?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function aye(t){if(t.endsWith("wasm"))return await lye(t);if(!bc)try{let{requireFromFile:r}=globalThis.loaders||{};return await r?.(t)}catch(r){return console.error(r),null}if(g2)return importScripts(t);let e=await uye(t);return cye(e,t)}function cye(t,e){if(!bc){let{requireFromString:n}=globalThis.loaders||{};return n?.(t,e)}if(g2)return eval.call(globalThis,t),null;let r=document.createElement("script");r.id=e;try{r.appendChild(document.createTextNode(t))}catch{r.text=t}return document.body.appendChild(r),null}async function lye(t){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};return bc||!e||t.startsWith("http")?await(await fetch(t)).arrayBuffer():await e(t)}async function uye(t){let{readFileAsText:e}=globalThis.loaders||{};return bc||!e||t.startsWith("http")?await(await fetch(t)).text():await e(t)}function SB(t,e){return!zm.isSupported()||!bc&&!e?._nodeWorkers?!1:t.worker&&e?.worker}async function CB(t,e,r,n,i){let o=t.id,s=TB(t,r),l=zm.getWorkerFarm(r).getWorkerPool({name:o,url:s});r=JSON.parse(JSON.stringify(r)),n=JSON.parse(JSON.stringify(n||{}));let u=await l.startJob("process-on-worker",hye.bind(null,i));return u.postMessage("process",{input:e,options:r,context:n}),await(await u.result).result}async function hye(t,e,r,n){switch(r){case"done":e.done(n);break;case"error":e.error(new Error(n.error));break;case"process":let{id:i,input:o,options:s}=n;try{let a=await t(o,s);e.postMessage("done",{id:i,result:a})}catch(a){let l=a instanceof Error?a.message:"unknown error";e.postMessage("error",{id:i,error:l})}break;default:console.warn(`parse-with-worker unknown message ${r}`)}}function iH(t,e=5){return typeof t=="string"?t.slice(0,e):ArrayBuffer.isView(t)?nH(t.buffer,t.byteOffset,e):t instanceof ArrayBuffer?nH(t,0,e):""}function nH(t,e,r){if(t.byteLength<=e+r)return"";let n=new DataView(t),i="";for(let o=0;o<r;o++)i+=String.fromCharCode(n.getUint8(e+o));return i}function IB(t){try{return JSON.parse(t)}catch{throw new Error(`Failed to parse JSON from data starting with "${iH(t)}"`)}}function PB(t,e,r){if(r=r||t.byteLength,t.byteLength<r||e.byteLength<r)return!1;let n=new Uint8Array(t),i=new Uint8Array(e);for(let o=0;o<n.length;++o)if(n[o]!==i[o])return!1;return!0}function RB(...t){return oH(t)}function oH(t){let e=t.map(o=>o instanceof ArrayBuffer?new Uint8Array(o):o),r=e.reduce((o,s)=>o+s.byteLength,0),n=new Uint8Array(r),i=0;for(let o of e)n.set(o,i),i+=o.byteLength;return n.buffer}function x2(...t){let e=t,r=e&&e.length>1&&e[0].constructor||null;if(!r)throw new Error('"concatenateTypedArrays" - incorrect quantity of arguments or arguments have incompatible data types');let n=e.reduce((s,a)=>s+a.length,0),i=new r(n),o=0;for(let s of e)i.set(s,o),o+=s.length;return i}function MA(t,e,r){let n=r!==void 0?new Uint8Array(t).subarray(e,e+r):new Uint8Array(t).subarray(e);return new Uint8Array(n).buffer}function Um(t,e){return Bi(t>=0),Bi(e>0),t+(e-1)&~(e-1)}function LB(t,e,r){let n;if(t instanceof ArrayBuffer)n=new Uint8Array(t);else{let i=t.byteOffset,o=t.byteLength;n=new Uint8Array(t.buffer||t.arrayBuffer,i,o)}return e.set(n,r),r+Um(n.byteLength,4)}async function OB(t){let e=[];for await(let r of t)e.push(r);return RB(...e)}CA();var fye="Queued Requests",pye="Active Requests",dye="Cancelled Requests",mye="Queued Requests Ever",Aye="Active Requests Ever",gye={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},Vm=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(e={}){this.props={...gye,...e},this.stats=new ol({id:this.props.id}),this.stats.get(fye),this.stats.get(pye),this.stats.get(dye),this.stats.get(mye),this.stats.get(Aye)}scheduleRequest(e,r=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(e))return this.requestMap.get(e);let n={handle:e,priority:0,getPriority:r},i=new Promise(o=>(n.resolve=o,n));return this.requestQueue.push(n),this.requestMap.set(e,i),this._issueNewRequests(),i}_issueRequest(e){let{handle:r,resolve:n}=e,i=!1,o=()=>{i||(i=!0,this.requestMap.delete(r),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,n?n({done:o}):Promise.resolve({done:o})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let e=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(e!==0){this._updateAllRequests();for(let r=0;r<e;++r){let n=this.requestQueue.shift();n&&this._issueRequest(n)}}}_updateAllRequests(){let e=this.requestQueue;for(let r=0;r<e.length;++r){let n=e[r];this._updateRequest(n)||(e.splice(r,1),this.requestMap.delete(n.handle),r--)}e.sort((r,n)=>r.priority-n.priority)}_updateRequest(e){return e.priority=e.getPriority(e.handle),e.priority<0?(e.resolve(null),!1):!0}};var yye="",aH={};function DB(t){for(let e in aH)if(t.startsWith(e)){let r=aH[e];t=t.replace(e,r)}return!t.startsWith("http://")&&!t.startsWith("https://")&&(t=`${yye}${t}`),t}function cH(t){return t&&typeof t=="object"&&t.isBuffer}function dM(t){if(cH(t))return t;if(t instanceof ArrayBuffer)return t;if(ArrayBuffer.isView(t))return t.byteOffset===0&&t.byteLength===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);if(typeof t=="string"){let e=t;return new TextEncoder().encode(e).buffer}if(t&&typeof t=="object"&&t._toArrayBuffer)return t._toArrayBuffer();throw new Error("toArrayBuffer")}var ku={};Uo(ku,{dirname:()=>xye,filename:()=>_ye,join:()=>vye,resolve:()=>bye});function lH(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let t=window.location?.pathname;return t?.slice(0,t.lastIndexOf("/")+1)||""}function _ye(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(e+1):""}function xye(t){let e=t?t.lastIndexOf("/"):-1;return e>=0?t.substr(0,e):""}function vye(...t){let e="/";return t=t.map((r,n)=>(n&&(r=r.replace(new RegExp(`^${e}`),"")),n!==t.length-1&&(r=r.replace(new RegExp(`${e}$`),"")),r)),t.join(e)}function bye(...t){let e=[];for(let o=0;o<t.length;o++)e[o]=t[o];let r="",n=!1,i;for(let o=e.length-1;o>=-1&&!n;o--){let s;o>=0?s=e[o]:(i===void 0&&(i=lH()),s=i),s.length!==0&&(r=`${s}/${r}`,n=s.charCodeAt(0)===b2)}return r=wye(r,!n),n?`/${r}`:r.length>0?r:"."}var b2=47,NB=46;function wye(t,e){let r="",n=-1,i=0,o,s=!1;for(let a=0;a<=t.length;++a){if(a<t.length)o=t.charCodeAt(a);else{if(o===b2)break;o=b2}if(o===b2){if(!(n===a-1||i===1))if(n!==a-1&&i===2){if(r.length<2||!s||r.charCodeAt(r.length-1)!==NB||r.charCodeAt(r.length-2)!==NB){if(r.length>2){let l=r.length-1,u=l;for(;u>=0&&r.charCodeAt(u)!==b2;--u);if(u!==l){r=u===-1?"":r.slice(0,u),n=a,i=0,s=!1;continue}}else if(r.length===2||r.length===1){r="",n=a,i=0,s=!1;continue}}e&&(r.length>0?r+="/..":r="..",s=!0)}else{let l=t.slice(n+1,a);r.length>0?r+=`/${l}`:r=l,s=!1}n=a,i=0}else o===NB&&i!==-1?++i:i=-1}return r}var mM=class{fetch;loadOptions;_needsRefresh=!0;props;constructor(e){this.props={...e},this.loadOptions={...e.loadOptions},this.fetch=Tye(this.loadOptions)}setProps(e){this.props=Object.assign(this.props,e),this.setNeedsRefresh()}setNeedsRefresh(){this._needsRefresh=!0}getNeedsRefresh(e=!0){let r=this._needsRefresh;return e&&(this._needsRefresh=!1),r}};function Tye(t){let e=t?.fetch;if(e&&typeof e=="function")return(n,i)=>e(n,i);let r=t?.fetch;return r&&typeof r!="function"?n=>fetch(n,r):n=>fetch(n)}var gh=class extends mM{};Dr(gh,"type","template"),Dr(gh,"testURL",e=>!1);var Eye=t=>typeof t=="boolean",w2=t=>typeof t=="function",IA=t=>t!==null&&typeof t=="object",FB=t=>IA(t)&&t.constructor==={}.constructor;var uH=t=>Boolean(t)&&typeof t[Symbol.iterator]=="function",hH=t=>t&&typeof t[Symbol.asyncIterator]=="function";var yh=t=>typeof Response<"u"&&t instanceof Response||t&&t.arrayBuffer&&t.text&&t.json;var _h=t=>typeof Blob<"u"&&t instanceof Blob,fH=t=>t&&typeof t=="object"&&t.isBuffer;var Mye=t=>typeof ReadableStream<"u"&&t instanceof ReadableStream||IA(t)&&w2(t.tee)&&w2(t.cancel)&&w2(t.getReader);var Sye=t=>IA(t)&&w2(t.read)&&w2(t.pipe)&&Eye(t.readable),AM=t=>Mye(t)||Sye(t);var gM=class extends Error{constructor(e,r){super(e),this.reason=r.reason,this.url=r.url,this.response=r.response}reason;url;response};var Cye=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,Iye=/^([-\w.]+\/[-\w.+]+)/;function zB(t,e){return t.toLowerCase()===e.toLowerCase()}function pH(t){let e=Iye.exec(t);return e?e[1]:t}function UB(t){let e=Cye.exec(t);return e?e[1]:""}var dH=/\?.*/;function mH(t){let e=t.match(dH);return e&&e[0]}function y_(t){return t.replace(dH,"")}function AH(t){if(t.length<50)return t;let e=t.slice(t.length-15);return`${t.substr(0,32)}...${e}`}function PA(t){return yh(t)?t.url:_h(t)?t.name||"":typeof t=="string"?t:""}function T2(t){if(yh(t)){let e=t,r=e.headers.get("content-type")||"",n=y_(e.url);return pH(r)||UB(n)}return _h(t)?t.type||"":typeof t=="string"?UB(t):""}function gH(t){return yh(t)?t.headers["content-length"]||-1:_h(t)?t.size:typeof t=="string"?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1}async function yM(t){if(yh(t))return t;let e={},r=gH(t);r>=0&&(e["content-length"]=String(r));let n=PA(t),i=T2(t);i&&(e["content-type"]=i);let o=await Rye(t);o&&(e["x-first-bytes"]=o),typeof t=="string"&&(t=new TextEncoder().encode(t));let s=new Response(t,{headers:e});return Object.defineProperty(s,"url",{value:n}),s}async function yH(t){if(!t.ok)throw await Pye(t)}async function Pye(t){let e=AH(t.url),r=`Failed to fetch resource (${t.status}) ${t.statusText}: ${e}`;r=r.length>100?`${r.slice(0,100)}...`:r;let n={reason:t.statusText,url:t.url,response:t};try{let i=t.headers.get("Content-Type");n.reason=i?.includes("application/json")?await t.json():t.text()}catch{}return new gM(r,n)}async function Rye(t){if(typeof t=="string")return`data:,${t.slice(0,5)}`;if(t instanceof Blob){let r=t.slice(0,5);return await new Promise(n=>{let i=new FileReader;i.onload=o=>n(o?.target?.result),i.readAsDataURL(r)})}if(t instanceof ArrayBuffer){let r=t.slice(0,5);return`data:base64,${Lye(r)}`}return null}function Lye(t){let e="",r=new Uint8Array(t);for(let n=0;n<r.byteLength;n++)e+=String.fromCharCode(r[n]);return btoa(e)}function Oye(t){return!Bye(t)&&!kye(t)}function Bye(t){return t.startsWith("http:")||t.startsWith("https:")}function kye(t){return t.startsWith("data:")}async function __(t,e){if(typeof t=="string"){let r=DB(t);return Oye(r)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,e):await fetch(r,e)}return await yM(t)}A_();var VB=new au({id:"loaders.gl"}),_M=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},xM=class{console;constructor(){this.console=console}log(...e){return this.console.log.bind(this.console,...e)}info(...e){return this.console.info.bind(this.console,...e)}warn(...e){return this.console.warn.bind(this.console,...e)}error(...e){return this.console.error.bind(this.console,...e)}};var jB={fetch:null,mimeType:void 0,nothrow:!1,log:new xM,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:vd,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},_H={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function HB(){globalThis.loaders=globalThis.loaders||{};let{loaders:t}=globalThis;return t._state||(t._state={}),t._state}function WB(){let t=HB();return t.globalOptions=t.globalOptions||{...jB},t.globalOptions}function bH(t,e,r,n){return r=r||[],r=Array.isArray(r)?r:[r],Dye(t,r),Fye(e,t,n)}function Dye(t,e){xH(t,null,jB,_H,e);for(let r of e){let n=t&&t[r.id]||{},i=r.options&&r.options[r.id]||{},o=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};xH(n,r.id,i,o,e)}}function xH(t,e,r,n,i){let o=e||"Top level",s=e?`${e}.`:"";for(let a in t){let l=!e&&IA(t[a]),u=a==="baseUri"&&!e,f=a==="workerUrl"&&e;if(!(a in r)&&!u&&!f){if(a in n)VB.warn(`${o} loader option '${s}${a}' no longer supported, use '${n[a]}'`)();else if(!l){let m=Nye(a,i);VB.warn(`${o} loader option '${s}${a}' not recognized. ${m}`)()}}}}function Nye(t,e){let r=t.toLowerCase(),n="";for(let i of e)for(let o in i.options){if(t===o)return`Did you mean '${i.id}.${o}'?`;let s=o.toLowerCase();(r.startsWith(s)||s.startsWith(r))&&(n=n||`Did you mean '${i.id}.${o}'?`)}return n}function Fye(t,e,r){let i={...t.options||{}};return zye(i,r),i.log===null&&(i.log=new _M),vH(i,WB()),vH(i,e),i}function vH(t,e){for(let r in e)if(r in e){let n=e[r];FB(n)&&FB(t[r])?t[r]={...t[r],...e[r]}:t[r]=e[r]}}function zye(t,e){e&&!("baseUri"in t)&&(t.baseUri=e)}function E2(t){return t?(Array.isArray(t)&&(t=t[0]),Array.isArray(t?.extensions)):!1}function M2(t){Bi(t,"null loader"),Bi(E2(t),"invalid loader");let e;return Array.isArray(t)&&(e=t[1],t=t[0],t={...t,options:{...t.options,...e}}),(t?.parseTextSync||t?.parseText)&&(t.text=!0),t.text||(t.binary=!0),t}var wH=()=>{let t=HB();return t.loaderRegistry=t.loaderRegistry||[],t.loaderRegistry};function RA(t){let e=wH();t=Array.isArray(t)?t:[t];for(let r of t){let n=M2(r);e.find(i=>n===i)||e.unshift(n)}}function TH(){return wH()}A_();var EH=new au({id:"loaders.gl"});var Uye=/\.([^.]+)$/;async function CH(t,e=[],r,n){if(!IH(t))return null;let i=MH(t,e,{...r,nothrow:!0},n);if(i)return i;if(_h(t)&&(t=await t.slice(0,10).arrayBuffer(),i=MH(t,e,r,n)),!i&&!r?.nothrow)throw new Error(PH(t));return i}function MH(t,e=[],r,n){if(!IH(t))return null;if(e&&!Array.isArray(e))return M2(e);let i=[];e&&(i=i.concat(e)),r?.ignoreRegisteredLoaders||i.push(...TH()),jye(i);let o=Vye(t,i,r,n);if(!o&&!r?.nothrow)throw new Error(PH(t));return o}function Vye(t,e,r,n){let i=PA(t),o=T2(t),s=y_(i)||n?.url,a=null,l="";return r?.mimeType&&(a=qB(e,r?.mimeType),l=`match forced by supplied MIME type ${r?.mimeType}`),a=a||Hye(e,s),l=l||(a?`matched url ${s}`:""),a=a||qB(e,o),l=l||(a?`matched MIME type ${o}`:""),a=a||qye(e,t),l=l||(a?`matched initial data ${RH(t)}`:""),r?.fallbackMimeType&&(a=a||qB(e,r?.fallbackMimeType),l=l||(a?`matched fallback MIME type ${o}`:"")),l&&EH.log(1,`selectLoader selected ${a?.name}: ${l}.`),a}function IH(t){return!(t instanceof Response&&t.status===204)}function PH(t){let e=PA(t),r=T2(t),n="No valid loader found (";n+=e?`${ku.filename(e)}, `:"no url provided, ",n+=`MIME type: ${r?`"${r}"`:"not provided"}, `;let i=t?RH(t):"";return n+=i?` first bytes: "${i}"`:"first bytes: not available",n+=")",n}function jye(t){for(let e of t)M2(e)}function Hye(t,e){let r=e&&Uye.exec(e),n=r&&r[1];return n?Wye(t,n):null}function Wye(t,e){e=e.toLowerCase();for(let r of t)for(let n of r.extensions)if(n.toLowerCase()===e)return r;return null}function qB(t,e){for(let r of t)if(r.mimeTypes?.some(n=>zB(e,n))||zB(e,`application/x.${r.id}`))return r;return null}function qye(t,e){if(!e)return null;for(let r of t)if(typeof e=="string"){if(Gye(e,r))return r}else if(ArrayBuffer.isView(e)){if(SH(e.buffer,e.byteOffset,r))return r}else if(e instanceof ArrayBuffer&&SH(e,0,r))return r;return null}function Gye(t,e){return e.testText?e.testText(t):(Array.isArray(e.tests)?e.tests:[e.tests]).some(n=>t.startsWith(n))}function SH(t,e,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(i=>Xye(t,e,r,i))}function Xye(t,e,r,n){if(n instanceof ArrayBuffer)return PB(n,t,n.byteLength);switch(typeof n){case"function":return n(t);case"string":let i=GB(t,e,n.length);return n===i;default:return!1}}function RH(t,e=5){return typeof t=="string"?t.slice(0,e):ArrayBuffer.isView(t)?GB(t.buffer,t.byteOffset,e):t instanceof ArrayBuffer?GB(t,0,e):""}function GB(t,e,r){if(t.byteLength<e+r)return"";let n=new DataView(t),i="";for(let o=0;o<r;o++)i+=String.fromCharCode(n.getUint8(e+o));return i}function*LH(t,e){let r=e?.chunkSize||262144,n=0,i=new TextEncoder;for(;n<t.length;){let o=Math.min(t.length-n,r),s=t.slice(n,n+o);n+=o,yield i.encode(s)}}function*OH(t,e={}){let{chunkSize:r=262144}=e,n=0;for(;n<t.byteLength;){let i=Math.min(t.byteLength-n,r),o=new ArrayBuffer(i),s=new Uint8Array(t,n,i);new Uint8Array(o).set(s),n+=i,yield o}}async function*BH(t,e){let r=e?.chunkSize||1048576,n=0;for(;n<t.size;){let i=n+r,o=await t.slice(n,i).arrayBuffer();n=i,yield o}}function XB(t,e){return vd?Yye(t,e):$ye(t,e)}async function*Yye(t,e){let r=t.getReader(),n;try{for(;;){let i=n||r.read();e?._streamReadAhead&&(n=r.read());let{done:o,value:s}=await i;if(o)return;yield dM(s)}}catch{r.releaseLock()}}async function*$ye(t,e){for await(let r of t)yield dM(r)}function kH(t,e){if(typeof t=="string")return LH(t,e);if(t instanceof ArrayBuffer)return OH(t,e);if(_h(t))return BH(t,e);if(AM(t))return XB(t,e);if(yh(t))return XB(t.body,e);throw new Error("makeIterator")}var DH="Cannot convert supplied data type";function Kye(t,e,r){if(e.text&&typeof t=="string")return t;if(fH(t)&&(t=t.buffer),t instanceof ArrayBuffer){let n=t;return e.text&&!e.binary?new TextDecoder("utf8").decode(n):n}if(ArrayBuffer.isView(t)){if(e.text&&!e.binary)return new TextDecoder("utf8").decode(t);let n=t.buffer,i=t.byteLength||t.length;return(t.byteOffset!==0||i!==n.byteLength)&&(n=n.slice(t.byteOffset,t.byteOffset+i)),n}throw new Error(DH)}async function NH(t,e,r){let n=t instanceof ArrayBuffer||ArrayBuffer.isView(t);if(typeof t=="string"||n)return Kye(t,e,r);if(_h(t)&&(t=await yM(t)),yh(t)){let i=t;return await yH(i),e.binary?await i.arrayBuffer():await i.text()}if(AM(t)&&(t=kH(t,r)),uH(t)||hH(t))return OB(t);throw new Error(DH)}function vM(t,e){let r=WB(),n=t||r;return typeof n.fetch=="function"?n.fetch:IA(n.fetch)?i=>__(i,n.fetch):e?.fetch?e?.fetch:__}function FH(t,e,r){if(r)return r;let n={fetch:vM(e,t),...t};if(n.url){let i=y_(n.url);n.baseUrl=i,n.queryString=mH(n.url),n.filename=ku.filename(i),n.baseUrl=ku.dirname(i)}return Array.isArray(n.loaders)||(n.loaders=null),n}function zH(t,e){if(t&&!Array.isArray(t))return t;let r;if(t&&(r=Array.isArray(t)?t:[t]),e&&e.loaders){let n=Array.isArray(e.loaders)?e.loaders:[e.loaders];r=r?[...r,...n]:n}return r&&r.length?r:void 0}async function jm(t,e,r,n){e&&!Array.isArray(e)&&!E2(e)&&(n=void 0,r=e,e=void 0),t=await t,r=r||{};let i=PA(t),s=zH(e,n),a=await CH(t,s,r);return a?(r=bH(r,a,s,i),n=FH({url:i,_parse:jm,loaders:s},r,n||null),await Zye(a,t,r,n)):null}async function Zye(t,e,r,n){if(EB(t),r=m2(t.options,r),yh(e)){let o=e,{ok:s,redirected:a,status:l,statusText:u,type:f,url:m}=o,v=Object.fromEntries(o.headers.entries());n.response={headers:v,ok:s,redirected:a,status:l,statusText:u,type:f,url:m}}e=await NH(e,t,r);let i=t;if(i.parseTextSync&&typeof e=="string")return i.parseTextSync(e,r,n);if(SB(t,r))return await CB(t,e,r,n,jm);if(i.parseText&&typeof e=="string")return await i.parseText(e,r,n);if(i.parse)return await i.parse(e,r,n);throw Gc(!i.parseSync),new Error(`${t.id} loader - no parser found and worker is disabled`)}async function za(t,e,r,n){let i,o;!Array.isArray(e)&&!E2(e)?(i=[],o=e,n=void 0):(i=e,o=r);let s=vM(o),a=t;return typeof t=="string"&&(a=await s(t)),_h(t)&&(a=await s(t)),Array.isArray(i)?await jm(a,i,o):await jm(a,i,o)}YB();var VH,jH,WH={fontFamily:'"Helvetica Neue", Helvetica, Arial, sans-serif',display:"flex",flex:"wrap",maxWidth:"500px",flexDirection:"column",zIndex:2};function bM(){return document.createElement("div")}function Qye(t){if(!t.picked)return null;if(t.object===VH)return jH;let e={html:e_e(t.object),style:WH};return jH=e,VH=t.object,e}var Jye=new Set(["position","index"]);function e_e(t){let e=bM();for(let r in t){if(Jye.has(r))continue;let n=bM();n.className="header",n.textContent=r;let i=bM();i.className="value",i.textContent=r_e(t[r]);let o=bM();t_e(o,n,i),o.appendChild(n),o.appendChild(i),e.appendChild(o)}return e.innerHTML}function t_e(t,e,r){Object.assign(e.style,{fontWeight:700,marginRight:"10px",flex:"1 1 0%"}),Object.assign(r.style,{flex:"none",maxWidth:"250px",overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}),Object.assign(t.style,{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"stretch"})}function r_e(t){let e;if(Array.isArray(t)&&t.length>4)e=`Array<${t.length}>`;else if(typeof t=="string")e=t;else if(typeof t=="number")e=String(t);else try{e=JSON.stringify(t)}catch{e="<Non-Serializable Object>"}let r=50;return e.length>r&&(e=e.slice(0,r)),e}function HH(t,e){let r,n=t,i="properties",o=/{[^}]*}/g,s=l=>l.replace(/[{}]/g,""),a=[...new Set(t.match(o).map(s))];for(let l of a){if(l.includes(".")){r=e;let u=l.split(".");for(let f of u)if(r.hasOwnProperty(f))r=r[f];else{r=void 0;break}}else e.hasOwnProperty(l)?r=e[l]:e[i]&&e[i].hasOwnProperty(l)?r=e[i][l]:r=void 0;n=n.replaceAll(`{${l}}`,r)}return n}function $B(t){return t?t.html||t.text?e=>{if(!e.picked)return null;let r={style:t.style||WH};return t.html?r.html=HH(t.html,e.object):r.text=HH(t.text,e.object),r}:Qye:null}function qH(t){let e=document.createElement("link");e.type="text/css",e.rel="stylesheet",e.href=t,document.getElementsByTagName("head")[0].appendChild(e)}function GH(t,e){let r=document.createElement("div");return r.style.width=Number.isFinite(t)?`${t}px`:t,r.style.height=`${e}px`,r.style.position="relative",r}var YH=vc(XH()),n_e="https://api.tiles.mapbox.com/mapbox-gl-js/v1.13.2/mapbox-gl.css",QB=YH.default;function $H(t=n_e){qH(t)}function KH(){let t=["mapboxgl-missing-css"];for(let e of t){let r=document.getElementsByClassName(e)[0];r&&r.style&&(r.style.display="none")}}var JB={};function ZH(t){if(!JB[t]){let e=document.createElement("script");e.type="text/javascript",e.src=t,document.querySelector("head").appendChild(e),JB[t]=new Promise(n=>{e.onload=n})}return JB[t]}var QH="4.2.1";var i_e=globalThis.loaders?.parseImageNode,ek=typeof Image<"u",tk=typeof ImageBitmap<"u",o_e=Boolean(i_e),rk=vd?!0:o_e;function JH(t){switch(t){case"auto":return tk||ek||rk;case"imagebitmap":return tk;case"image":return ek;case"data":return rk;default:throw new Error(`@loaders.gl/images: image ${t} not supported in this environment`)}}function eW(){if(tk)return"imagebitmap";if(ek)return"image";if(rk)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function tW(t){let e=s_e(t);if(!e)throw new Error("Not an image");return e}function S2(t){switch(tW(t)){case"data":return t;case"image":case"imagebitmap":let e=document.createElement("canvas"),r=e.getContext("2d");if(!r)throw new Error("getImageData");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0),r.getImageData(0,0,t.width,t.height);default:throw new Error("getImageData")}}function s_e(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&t instanceof Image?"image":t&&typeof t=="object"&&t.data&&t.width&&t.height?"data":null}var a_e=/^data:image\/svg\+xml/,c_e=/\.svg((\?|#).*)?$/;function wM(t){return t&&(a_e.test(t)||c_e.test(t))}function rW(t,e){if(wM(e)){let n=new TextDecoder().decode(t);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(o){throw new Error(o.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return nk(t,e)}function nk(t,e){if(wM(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(t)])}async function TM(t,e,r){let n=rW(t,r),i=self.URL||self.webkitURL,o=typeof n!="string"&&i.createObjectURL(n);try{return await l_e(o||n,e)}finally{o&&i.revokeObjectURL(o)}}async function l_e(t,e){let r=new Image;return r.src=t,e.image&&e.image.decode&&r.decode?(await r.decode(),r):await new Promise((n,i)=>{try{r.onload=()=>n(r),r.onerror=o=>{let s=o instanceof Error?o.message:"error";i(new Error(s))}}catch(o){i(o)}})}var u_e={},nW=!0;async function iW(t,e,r){let n;wM(r)?n=await TM(t,e,r):n=nk(t,r);let i=e&&e.imagebitmap;return await h_e(n,i)}async function h_e(t,e=null){if((f_e(e)||!nW)&&(e=null),e)try{return await createImageBitmap(t,e)}catch(r){console.warn(r),nW=!1}return await createImageBitmap(t)}function f_e(t){for(let e in t||u_e)return!1;return!0}function oW(t){return!A_e(t,"ftyp",4)||!(t[8]&96)?null:p_e(t)}function p_e(t){switch(d_e(t,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function d_e(t,e,r){return String.fromCharCode(...t.slice(e,r))}function m_e(t){return[...t].map(e=>e.charCodeAt(0))}function A_e(t,e,r=0){let n=m_e(e);for(let i=0;i<n.length;++i)if(n[i]!==t[i+r])return!1;return!0}var dp=!1,C2=!0;function LA(t){let e=I2(t);return y_e(e)||v_e(e)||__e(e)||x_e(e)||g_e(e)}function g_e(t){let e=new Uint8Array(t instanceof DataView?t.buffer:t),r=oW(e);return r?{mimeType:r.mimeType,width:0,height:0}:null}function y_e(t){let e=I2(t);return e.byteLength>=24&&e.getUint32(0,dp)===2303741511?{mimeType:"image/png",width:e.getUint32(16,dp),height:e.getUint32(20,dp)}:null}function __e(t){let e=I2(t);return e.byteLength>=10&&e.getUint32(0,dp)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,C2),height:e.getUint16(8,C2)}:null}function x_e(t){let e=I2(t);return e.byteLength>=14&&e.getUint16(0,dp)===16973&&e.getUint32(2,C2)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,C2),height:e.getUint32(22,C2)}:null}function v_e(t){let e=I2(t);if(!(e.byteLength>=3&&e.getUint16(0,dp)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:i}=b_e(),o=2;for(;o+9<e.byteLength;){let s=e.getUint16(o,dp);if(i.has(s))return{mimeType:"image/jpeg",height:e.getUint16(o+5,dp),width:e.getUint16(o+7,dp)};if(!n.has(s))return null;o+=2,o+=e.getUint16(o,dp)}return null}function b_e(){let t=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)t.add(r);return{tableMarkers:t,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function I2(t){if(t instanceof DataView)return t;if(ArrayBuffer.isView(t))return new DataView(t.buffer);if(t instanceof ArrayBuffer)return new DataView(t);throw new Error("toDataView")}async function sW(t,e){let{mimeType:r}=LA(t)||{},n=globalThis.loaders?.parseImageNode;return Bi(n),await n(t,r)}async function aW(t,e,r){e=e||{};let i=(e.image||{}).type||"auto",{url:o}=r||{},s=w_e(i),a;switch(s){case"imagebitmap":a=await iW(t,e,o);break;case"image":a=await TM(t,e,o);break;case"data":a=await sW(t,e);break;default:Bi(!1)}return i==="data"&&(a=S2(a)),a}function w_e(t){switch(t){case"auto":case"data":return eW();default:return JH(t),t}}var T_e=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],E_e=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],M_e={image:{type:"auto",decode:!0}},mp={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:QH,mimeTypes:E_e,extensions:T_e,parse:aW,tests:[t=>Boolean(LA(new DataView(t)))],options:M_e};var ik={};function ok(t){if(ik[t]===void 0){let e=vd?C_e(t):S_e(t);ik[t]=e}return ik[t]}function S_e(t){let e=["image/png","image/jpeg","image/gif"],r=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&r.includes(t)}function C_e(t){switch(t){case"image/avif":case"image/webp":return I_e(t);default:return!0}}function I_e(t){try{return document.createElement("canvas").toDataURL(t).indexOf(`data:${t}`)===0}catch{return!1}}A_();var P_e=new au({id:"deck"}),Ar=P_e;var sk={};function cW(t){sk=t}function sa(t,e,r,n){Ar.level>0&&sk[t]&&sk[t].call(null,e,r,n)}function R_e(t){let e=t[0],r=t[t.length-1];return e==="{"&&r==="}"||e==="["&&r==="]"}var lW={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:R_e,parseTextSync:JSON.parse};function L_e(){let t="9.2.3",e=globalThis.deck&&globalThis.deck.VERSION;if(e&&e!==t)throw new Error(`deck.gl - multiple versions detected: ${e} vs ${t}`);return e||(Ar.log(1,`deck.gl ${t}`)(),globalThis.deck={...globalThis.deck,VERSION:t,version:t,log:Ar,_registerLoggers:cW},RA([lW,[mp,{imagebitmap:{premultiplyAlpha:"none"}}]])),t}var EM=L_e();function MM(t,e){if(!t)throw new Error(e||"shadertools: assertion failed.")}var ak={number:{type:"number",validate(t,e){return Number.isFinite(t)&&typeof e=="object"&&(e.max===void 0||t<=e.max)&&(e.min===void 0||t>=e.min)}},array:{type:"array",validate(t,e){return Array.isArray(t)||ArrayBuffer.isView(t)}}};function hW(t){let e={};for(let[r,n]of Object.entries(t))e[r]=O_e(n);return e}function O_e(t){let e=uW(t);if(e!=="object")return{value:t,...ak[e],type:e};if(typeof t=="object")return t?t.type!==void 0?{...t,...ak[t.type],type:t.type}:t.value===void 0?{type:"object",value:t}:(e=uW(t.value),{...t,...ak[e],type:e}):{type:"object",value:null};throw new Error("props")}function uW(t){return Array.isArray(t)||ArrayBuffer.isView(t)?"array":typeof t}var fW=`#ifdef MODULE_LOGDEPTH
553
553
  logdepth_adjustPosition(gl_Position);
554
554
  #endif
555
555
  `,pW=`#ifdef MODULE_MATERIAL
@@ -2969,7 +2969,7 @@ void main() {
2969
2969
  void main() {
2970
2970
  fragColor = ${t}(texSrc, screen.texSize, coordinate);
2971
2971
  }
2972
- `;function yTe(t,e){if(e.filter){let r=typeof e.filter=="string"?e.filter:`${t.name}_filterColor_ext`;return ATe(r)}if(e.sampler){let r=typeof e.sampler=="string"?e.sampler:`${t.name}_sampleColor`;return gTe(r)}return""}var _Te={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"},Nd=class extends df{constructor(){super(...arguments),this._colorEncoderState=null}render(e){return"pickingFBO"in e?this._drawPickingBuffer(e):super.render(e)}_drawPickingBuffer({layers:e,layerFilter:r,views:n,viewports:i,onViewportActive:o,pickingFBO:s,deviceRect:{x:a,y:l,width:u,height:f},cullRect:m,effects:v,pass:E="picking",pickZ:S,shaderModuleProps:L}){this.pickZ=S;let O=this._resetColorEncoder(S),q=[a,l,u,f],G=super.render({target:s,layers:e,layerFilter:r,views:n,viewports:i,onViewportActive:o,cullRect:m,effects:v?.filter(Y=>Y.useInPicking),pass:E,isPicking:!0,shaderModuleProps:L,clearColor:[0,0,0,0],colorMask:15,scissorRect:q});return this._colorEncoderState=null,{decodePickingColor:O&&vTe.bind(null,O),stats:G}}shouldDrawLayer(e){let{pickable:r,operation:n}=e.props;return r&&n.includes("draw")||n.includes("terrain")||n.includes("mask")}getShaderModuleProps(e,r,n){return{picking:{isActive:1,isAttribute:this.pickZ},lighting:{enabled:!1}}}getLayerParameters(e,r,n){let i={...e.props.parameters},{pickable:o,operation:s}=e.props;return!this._colorEncoderState||s.includes("terrain")?i.blend=!1:o&&s.includes("draw")&&(Object.assign(i,_Te),i.blend=!0,i.blendColor=xTe(this._colorEncoderState,e,n)),i}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function xTe(t,e,r){let{byLayer:n,byAlpha:i}=t,o,s=n.get(e);return s?(s.viewports.push(r),o=s.a):(o=n.size+1,o<=255?(s={a:o,layer:e,viewports:[r]},n.set(e,s),i[o]=s):(Ar.warn("Too many pickable layers, only picking the first 255")(),o=0)),[0,0,0,o/255]}function vTe(t,e){let r=t.byAlpha[e[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(e)}}var s0={NO_STATE:"Awaiting state",MATCHED:"Matched. State transferred from previous layer",INITIALIZED:"Initialized",AWAITING_GC:"Discarded. Awaiting garbage collection",AWAITING_FINALIZATION:"No longer matched. Awaiting garbage collection",FINALIZED:"Finalized! Awaiting garbage collection"},r1=Symbol.for("component"),Rh=Symbol.for("propTypes"),lC=Symbol.for("deprecatedProps"),Fd=Symbol.for("asyncPropDefaults"),Ep=Symbol.for("asyncPropOriginal"),Af=Symbol.for("asyncPropResolved");function Mp(t,e=()=>!0){return Array.isArray(t)?UX(t,e,[]):e(t)?[t]:[]}function UX(t,e,r){let n=-1;for(;++n<t.length;){let i=t[n];Array.isArray(i)?UX(i,e,r):e(i)&&r.push(i)}return r}function uC({target:t,source:e,start:r=0,count:n=1}){let i=e.length,o=n*i,s=0;for(let a=r;s<i;s++)t[a++]=e[s];for(;s<o;)s<o-s?(t.copyWithin(r+s,r,r+s),s*=2):(t.copyWithin(r+s,r,r+o-s),s=o);return t}CA();var Ob=class{constructor(e,r,n){this._loadCount=0,this._subscribers=new Set,this.id=e,this.context=n,this.setData(r)}subscribe(e){this._subscribers.add(e)}unsubscribe(e){this._subscribers.delete(e)}inUse(){return this._subscribers.size>0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(e,r){if(e===this._data&&!r)return;this._data=e;let n=++this._loadCount,i=e;typeof e=="string"&&(i=za(e)),i instanceof Promise?(this.isLoaded=!1,this._loader=i.then(o=>{this._loadCount===n&&(this.isLoaded=!0,this._error=void 0,this._content=o)}).catch(o=>{this._loadCount===n&&(this.isLoaded=!0,this._error=o||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e);for(let o of this._subscribers)o.onChange(this.getData())}};var Bb=class{constructor(e){this.protocol=e.protocol||"resource://",this._context={device:e.device,gl:e.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(e){return e.startsWith(this.protocol)?!0:e in this._resources}add({resourceId:e,data:r,forceUpdate:n=!1,persistent:i=!0}){let o=this._resources[e];o?o.setData(r,n):(o=new Ob(e,r,this._context),this._resources[e]=o),o.persistent=i}remove(e){let r=this._resources[e];r&&(r.delete(),delete this._resources[e])}unsubscribe({consumerId:e}){let r=this._consumers[e];if(r){for(let n in r){let i=r[n],o=this._resources[i.resourceId];o&&o.unsubscribe(i)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:r,consumerId:n,requestId:i="default"}){let{_resources:o,protocol:s}=this;e.startsWith(s)&&(e=e.replace(s,""),o[e]||this.add({resourceId:e,data:null,persistent:!1}));let a=o[e];if(this._track(n,i,a,r),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let e in this._resources)this._resources[e].delete()}_track(e,r,n,i){let o=this._consumers,s=o[e]=o[e]||{},a=s[r],l=a&&a.resourceId&&this._resources[a.resourceId];l&&(l.unsubscribe(a),this.prune()),n&&(a?(a.onChange=i,a.resourceId=n.id):a={onChange:i,resourceId:n.id},s[r]=a,n.subscribe(a))}_prune(){this._pruneRequest=null;for(let e of Object.keys(this._resources)){let r=this._resources[e];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[e])}}};var bTe="layerManager.setLayers",wTe="layerManager.activateViewport",rg=class{constructor(e,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{sa(wTe,this,a),a&&(this.context.viewport=a)};let{deck:n,stats:i,viewport:o,timeline:s}=r||{};this.layers=[],this.resourceManager=new Bb({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:e?.gl,deck:n,shaderAssembler:eC(e?.info?.shadingLanguage||"glsl"),defaultShaderModules:[iN],renderPass:void 0,stats:i||new ol({id:"deck.gl"}),viewport:o||new Va({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:s||new JA,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let e of this.layers)this._finalizeLayer(e)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);for(let n of this.layers){let i=n.getNeedsRedraw(e);r=r||i}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(e){this._needsRedraw=this._needsRedraw||e}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e}getLayers({layerIds:e}={}){return e?this.layers.filter(r=>e.find(n=>r.id.indexOf(n)===0)):this.layers}setProps(e){"debug"in e&&(this._debug=e.debug),"userData"in e&&(this.context.userData=e.userData),"layers"in e&&(this._nextLayers=e.layers),"onError"in e&&(this.context.onError=e.onError)}setLayers(e,r){sa(bTe,this,r,e),this._lastRenderedLayers=e;let n=Mp(e,Boolean);for(let i of n)i.context=this.context;this._updateLayers(this.layers,n)}updateLayers(){let e=this.needsUpdate();e&&(this.setNeedsRedraw(`updating layers: ${e}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,e)),this._nextLayers=null}addDefaultShaderModule(e){let{defaultShaderModules:r}=this.context;r.find(n=>n.name===e.name)||(r.push(e),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(e){let{defaultShaderModules:r}=this.context,n=r.findIndex(i=>i.name===e.name);n>=0&&(r.splice(n,1),this._defaultShaderModulesChanged=!0)}_handleError(e,r,n){n.raiseError(r,`${e} of ${n}`)}_updateLayers(e,r){let n={};for(let s of e)n[s.id]?Ar.warn(`Multiple old layers with same id ${s.id}`)():n[s.id]=s;if(this._defaultShaderModulesChanged){for(let s of e)s.setNeedsUpdate(),s.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let i=[];this._updateSublayersRecursively(r,n,i),this._finalizeOldLayers(n);let o=!1;for(let s of i)if(s.hasUniformTransition()){o=`Uniform transition in ${s}`;break}this._needsUpdate=o,this.layers=i}_updateSublayersRecursively(e,r,n){for(let i of e){i.context=this.context;let o=r[i.id];o===null&&Ar.warn(`Multiple new layers with same id ${i.id}`)(),r[i.id]=null;let s=null;try{this._debug&&o!==i&&i.validateProps(),o?(this._transferLayerState(o,i),this._updateLayer(i)):this._initializeLayer(i),n.push(i),s=i.isComposite?i.getSubLayers():null}catch(a){this._handleError("matching",a,i)}s&&this._updateSublayersRecursively(s,r,n)}}_finalizeOldLayers(e){for(let r in e){let n=e[r];n&&this._finalizeLayer(n)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=s0.INITIALIZED}catch(r){this._handleError("initialization",r,e)}}_transferLayerState(e,r){r._transferState(e),r.lifecycle=s0.MATCHED,r!==e&&(e.lifecycle=s0.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(r){this._handleError("update",r,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle=s0.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=s0.FINALIZED}catch(r){this._handleError("finalization",r,e)}}};function Gi(t,e,r){if(t===e)return!0;if(!r||!t||!e)return!1;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(!Gi(t[n],e[n],r-1))return!1;return!0}if(Array.isArray(e))return!1;if(typeof t=="object"&&typeof e=="object"){let n=Object.keys(t),i=Object.keys(e);if(n.length!==i.length)return!1;for(let o of n)if(!e.hasOwnProperty(o)||!Gi(t[o],e[o],r-1))return!1;return!0}return!1}var kb=class{constructor(e){this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=e.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=e.eventManager,this._eventCallbacks={onViewStateChange:e.onViewStateChange,onInteractionStateChange:e.onInteractionStateChange},Object.seal(this),this.setProps(e)}finalize(){for(let e in this.controllers){let r=this.controllers[e];r&&r.finalize()}this.controllers={}}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e,this._needsRedraw=this._needsRedraw||e}updateViewStates(){for(let e in this.controllers){let r=this.controllers[e];r&&r.updateTransition()}}getViewports(e){return e?this._viewports.filter(r=>r.containsPixel(e)):this._viewports}getViews(){let e={};return this.views.forEach(r=>{e[r.id]=r}),e}getView(e){return this.views.find(r=>r.id===e)}getViewState(e){let r=typeof e=="string"?this.getView(e):e,n=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(n):n}getViewport(e){return this._viewportMap[e]}unproject(e,r){let n=this.getViewports(),i={x:e[0],y:e[1]};for(let o=n.length-1;o>=0;--o){let s=n[o];if(s.containsPixel(i)){let a=e.slice();return a[0]-=s.x,a[1]-=s.y,s.unproject(a,r)}}return null}setProps(e){e.views&&this._setViews(e.views),e.viewState&&this._setViewState(e.viewState),("width"in e||"height"in e)&&this._setSize(e.width,e.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(e,r){(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.setNeedsUpdate("Size changed"))}_setViews(e){e=Mp(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?(!Gi(e,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=e):Ar.warn("missing `viewState` or `initialViewState`")()}_createController(e,r){let n=r.type;return new n({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:o=>this.getView(e.id)?.makeViewport({viewState:o,width:this.width,height:this.height})})}_updateController(e,r,n,i){let o=e.controller;if(o&&n){let s={...r,...o,id:e.id,x:n.x,y:n.y,width:n.width,height:n.height};return(!i||i.constructor!==o.type)&&(i=this._createController(e,s)),i&&i.setProps(s),i}return null}_rebuildViewports(){let{views:e}=this,r=this.controllers;this._viewports=[],this.controllers={};let n=!1;for(let i=e.length;i--;){let o=e[i],s=this.getViewState(o),a=o.makeViewport({viewState:s,width:this.width,height:this.height}),l=r[o.id],u=Boolean(o.controller);u&&!l&&(n=!0),(n||!u)&&l&&(l.finalize(),l=null),this.controllers[o.id]=this._updateController(o,s,a,l),a&&this._viewports.unshift(a)}for(let i in r){let o=r[i];o&&!this.controllers[i]&&o.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(e=>{e.id&&(this._viewportMap[e.id]=this._viewportMap[e.id]||e)})}_diffViews(e,r){return e.length!==r.length?!0:e.some((n,i)=>!e[i].equals(r[i]))}};var TTe=/([0-9]+\.?[0-9]*)(%|px)/;function zd(t){switch(typeof t){case"number":return{position:t,relative:!1};case"string":let e=TTe.exec(t);if(e&&e.length>=3){let r=e[2]==="%",n=parseFloat(e[1]);return{position:r?n/100:n,relative:r}}default:throw new Error(`Could not parse position string ${t}`)}}function Ud(t,e){return t.relative?Math.round(t.position*e):t.position}var Nl=class{constructor(e){let{id:r,x:n=0,y:i=0,width:o="100%",height:s="100%",padding:a=null}=e;this.id=r||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=zd(n),this._y=zd(i),this._width=zd(o),this._height=zd(s),this._padding=a&&{left:zd(a.left||0),right:zd(a.right||0),top:zd(a.top||0),bottom:zd(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e?!0:this.constructor===e.constructor&&Gi(this.props,e.props,2)}clone(e){let r=this.constructor;return new r({...this.props,...e})}makeViewport({width:e,height:r,viewState:n}){n=this.filterViewState(n);let i=this.getDimensions({width:e,height:r});if(!i.height||!i.width)return null;let o=this.getViewportType(n);return new o({...n,...this.props,...i})}getViewStateId(){let{viewState:e}=this.props;return typeof e=="string"?e:e?.id||this.id}filterViewState(e){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;let r={...e};for(let n in this.props.viewState)n!=="id"&&(r[n]=this.props.viewState[n]);return r}return e}getDimensions({width:e,height:r}){let n={x:Ud(this._x,e),y:Ud(this._y,r),width:Ud(this._width,e),height:Ud(this._height,r)};return this._padding&&(n.padding={left:Ud(this._padding.left,e),top:Ud(this._padding.top,r),right:Ud(this._padding.right,e),bottom:Ud(this._padding.bottom,r)}),n}get controller(){let e=this.props.controller;return e?e===!0?{type:this.ControllerType}:typeof e=="function"?{type:e}:{type:this.ControllerType,...e}:null}};var gf=class{constructor(e){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=e}get inProgress(){return this._inProgress}start(e){this.cancel(),this.settings=e,this._inProgress=!0,this.settings.onStart?.(this)}end(){this._inProgress&&(this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,this.settings.onEnd?.(this))}cancel(){this._inProgress&&(this.settings.onInterrupt?.(this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1)}update(){if(!this._inProgress)return!1;if(this._handle===null){let{_timeline:e,settings:r}=this;this._handle=e.addChannel({delay:e.getTime(),duration:r.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),this.settings.onUpdate?.(this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};var VX=()=>{},Db={BREAK:1,SNAP_TO_END:2,IGNORE:3},ETe=t=>t,MTe=Db.BREAK,Nb=class{constructor(e){this._onTransitionUpdate=r=>{let{time:n,settings:{interpolator:i,startProps:o,endProps:s,duration:a,easing:l}}=r,u=l(n/a),f=i.interpolateProps(o,s,u);this.propsInTransition=this.getControllerState({...this.props,...f}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=e.getControllerState,this.propsInTransition=null,this.transition=new gf(e.timeline),this.onViewStateChange=e.onViewStateChange||VX,this.onStateChange=e.onStateChange||VX}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(e){let r=!1,n=this.props;if(this.props=e,!n||this._shouldIgnoreViewportChange(n,e))return!1;if(this._isTransitionEnabled(e)){let i=n;if(this.transition.inProgress){let{interruption:o,endProps:s}=this.transition.settings;i={...n,...o===Db.SNAP_TO_END?s:this.propsInTransition||n}}this._triggerTransition(i,e),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(e){let{transitionDuration:r,transitionInterpolator:n}=e;return(r>0||r==="auto")&&Boolean(n)}_isUpdateDueToCurrentTransition(e){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(e,this.propsInTransition):!1}_shouldIgnoreViewportChange(e,r){return this.transition.inProgress?this.transition.settings.interruption===Db.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(e,r):!0}_triggerTransition(e,r){let n=this.getControllerState(e),i=this.getControllerState(r).shortestPathFrom(n),o=r.transitionInterpolator,s=o.getDuration?o.getDuration(e,r):r.transitionDuration;if(s===0)return;let a=o.initializeProps(e,i);this.propsInTransition={};let l={duration:s,easing:r.transitionEasing||ETe,interpolator:o,interruption:r.transitionInterruption||MTe,startProps:a.start,endProps:a.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(l),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(e){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),e?.(r)}}};function ps(t,e){if(!t)throw new Error(e||"deck.gl: assertion failed.")}var Vd=class{constructor(e){let{compare:r,extract:n,required:i}=e;this._propsToCompare=r,this._propsToExtract=n||r,this._requiredProps=i}arePropsEqual(e,r){for(let n of this._propsToCompare)if(!(n in e)||!(n in r)||!ic(e[n],r[n]))return!1;return!0}initializeProps(e,r){let n={},i={};for(let o of this._propsToExtract)(o in e||o in r)&&(n[o]=e[o],i[o]=r[o]);return this._checkRequiredProps(n),this._checkRequiredProps(i),{start:n,end:i}}getDuration(e,r){return r.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(r=>{let n=e[r];ps(Number.isFinite(n)||Array.isArray(n),`${r} is required for transition`)})}};var STe=["longitude","latitude","zoom","bearing","pitch"],CTe=["longitude","latitude","zoom"],Gs=class extends Vd{constructor(e={}){let r=Array.isArray(e)?e:e.transitionProps,n=Array.isArray(e)?{}:e;n.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:STe,required:CTe},super(n.transitionProps),this.opts=n}initializeProps(e,r){let n=super.initializeProps(e,r),{makeViewport:i,around:o}=this.opts;if(i&&o){let s=i(e),a=i(r),l=s.unproject(o);n.start.around=o,Object.assign(n.end,{around:a.project(l),aroundPosition:l,width:r.width,height:r.height})}return n}interpolateProps(e,r,n){let i={};for(let o of this._propsToExtract)i[o]=nc(e[o]||0,r[o]||0,n);if(r.aroundPosition&&this.opts.makeViewport){let o=this.opts.makeViewport({...r,...i});Object.assign(i,o.panByPosition(r.aroundPosition,nc(e.around,r.around,n)))}return i}};var jd={transitionDuration:0},ITe=300,hC=t=>1-(1-t)*(1-t),n1={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],KEYBOARD:["keydown"]},ng={},Fl=class{constructor(e){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.keyboard=!0,this.transitionManager=new Nb({...e,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=e.eventManager,this.onViewStateChange=e.onViewStateChange||(()=>{}),this.onStateChange=e.onStateChange||(()=>{}),this.makeViewport=e.makeViewport}set events(e){this.toggleEvents(this._customEvents,!1),this.toggleEvents(e,!0),this._customEvents=e,this.props&&this.setProps(this.props)}finalize(){for(let e in this._events)this._events[e]&&this.eventManager?.off(e,this.handleEvent);this.transitionManager.finalize()}handleEvent(e){this._controllerState=void 0;let r=this._eventStartBlocked;switch(e.type){case"panstart":return r?!1:this._onPanStart(e);case"panmove":return this._onPan(e);case"panend":return this._onPanEnd(e);case"pinchstart":return r?!1:this._onPinchStart(e);case"pinchmove":return this._onPinch(e);case"pinchend":return this._onPinchEnd(e);case"multipanstart":return r?!1:this._onMultiPanStart(e);case"multipanmove":return this._onMultiPan(e);case"multipanend":return this._onMultiPanEnd(e);case"dblclick":return this._onDoubleClick(e);case"wheel":return this._onWheel(e);case"keydown":return this._onKeyDown(e);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(e){let{x:r,y:n}=this.props,{offsetCenter:i}=e;return[i.x-r,i.y-n]}isPointInBounds(e,r){let{width:n,height:i}=this.props;if(r&&r.handled)return!1;let o=e[0]>=0&&e[0]<=n&&e[1]>=0&&e[1]<=i;return o&&r&&r.stopPropagation(),o}isFunctionKeyPressed(e){let{srcEvent:r}=e;return Boolean(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(e){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},e);this._eventStartBlocked=r}setProps(e){e.dragMode&&(this.dragMode=e.dragMode),this.props=e,"transitionInterpolator"in e||(e.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(e);let{inertia:r}=e;this.inertia=Number.isFinite(r)?r:r===!0?ITe:0;let{scrollZoom:n=!0,dragPan:i=!0,dragRotate:o=!0,doubleClickZoom:s=!0,touchZoom:a=!0,touchRotate:l=!1,keyboard:u=!0}=e,f=Boolean(this.onViewStateChange);this.toggleEvents(n1.WHEEL,f&&n),this.toggleEvents(n1.PAN,f),this.toggleEvents(n1.PINCH,f&&(a||l)),this.toggleEvents(n1.MULTI_PAN,f&&l),this.toggleEvents(n1.DOUBLE_CLICK,f&&s),this.toggleEvents(n1.KEYBOARD,f&&u),this.scrollZoom=n,this.dragPan=i,this.dragRotate=o,this.doubleClickZoom=s,this.touchZoom=a,this.touchRotate=l,this.keyboard=u}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(e,r){this.eventManager&&e.forEach(n=>{this._events[n]!==r&&(this._events[n]=r,r?this.eventManager.on(n,this.handleEvent):this.eventManager.off(n,this.handleEvent))})}updateViewport(e,r=null,n={}){let i={...e.getViewportProps(),...r},o=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(n),o){let s=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:i,interactionState:this._interactionState,oldViewState:s,viewId:this.props.id})}}_onTransition(e){this.onViewStateChange({...e,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(e){Object.assign(this._interactionState,e),this.onStateChange(this._interactionState)}_onPanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let n=this.isFunctionKeyPressed(e)||e.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(n=!n);let i=this.controllerState[n?"panStart":"rotateStart"]({pos:r});return this._panMove=n,this.updateViewport(i,jd,{isDragging:!0}),!0}_onPan(e){return this.isDragging()?this._panMove?this._onPanMove(e):this._onPanRotate(e):!1}_onPanEnd(e){return this.isDragging()?this._panMove?this._onPanMoveEnd(e):this._onPanRotateEnd(e):!1}_onPanMove(e){if(!this.dragPan)return!1;let r=this.getCenter(e),n=this.controllerState.pan({pos:r});return this.updateViewport(n,jd,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){let{inertia:r}=this;if(this.dragPan&&r&&e.velocity){let n=this.getCenter(e),i=[n[0]+e.velocityX*r/2,n[1]+e.velocityY*r/2],o=this.controllerState.pan({pos:i}).panEnd();this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:hC},{isDragging:!1,isPanning:!0})}else{let n=this.controllerState.panEnd();this.updateViewport(n,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(e){if(!this.dragRotate)return!1;let r=this.getCenter(e),n=this.controllerState.rotate({pos:r});return this.updateViewport(n,jd,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){let{inertia:r}=this;if(this.dragRotate&&r&&e.velocity){let n=this.getCenter(e),i=[n[0]+e.velocityX*r/2,n[1]+e.velocityY*r/2],o=this.controllerState.rotate({pos:i}).rotateEnd();this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:hC},{isDragging:!1,isRotating:!0})}else{let n=this.controllerState.rotateEnd();this.updateViewport(n,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(e){if(!this.scrollZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;e.srcEvent.preventDefault();let{speed:n=.01,smooth:i=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:o}=e,s=2/(1+Math.exp(-Math.abs(o*n)));o<0&&s!==0&&(s=1/s);let a=i?{...this._getTransitionProps({around:r}),transitionDuration:250}:jd,l=this.controllerState.zoom({pos:r,scale:s});return this.updateViewport(l,a,{isZooming:!0,isPanning:!0}),!0}_onMultiPanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let n=this.controllerState.rotateStart({pos:r});return this.updateViewport(n,jd,{isDragging:!0}),!0}_onMultiPan(e){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(e);r[0]-=e.deltaX;let n=this.controllerState.rotate({pos:r});return this.updateViewport(n,jd,{isDragging:!0,isRotating:!0}),!0}_onMultiPanEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&e.velocityY){let n=this.getCenter(e),i=[n[0],n[1]+=e.velocityY*r/2],o=this.controllerState.rotate({pos:i});this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:hC},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let n=this.controllerState.rotateEnd();this.updateViewport(n,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let n=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return ng._startPinchRotation=e.rotation,ng._lastPinchEvent=e,this.updateViewport(n,jd,{isDragging:!0}),!0}_onPinch(e){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:n}=e,i=this.getCenter(e);r=r.zoom({pos:i,scale:n})}if(this.touchRotate){let{rotation:n}=e;r=r.rotate({deltaAngleX:ng._startPinchRotation-n})}return this.updateViewport(r,jd,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),ng._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:n}=ng;if(this.touchZoom&&r&&n&&e.scale!==n.scale){let i=this.getCenter(e),o=this.controllerState.rotateEnd(),s=Math.log2(e.scale),a=(s-Math.log2(n.scale))/(e.deltaTime-n.deltaTime),l=Math.pow(2,s+a*r/2);o=o.zoom({pos:i,scale:l}).zoomEnd(),this.updateViewport(o,{...this._getTransitionProps({around:i}),transitionDuration:r,transitionEasing:hC},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let i=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return ng._startPinchRotation=null,ng._lastPinchEvent=null,!0}_onDoubleClick(e){if(!this.doubleClickZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let n=this.isFunctionKeyPressed(e),i=this.controllerState.zoom({pos:r,scale:n?.5:2});return this.updateViewport(i,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(e){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(e),{zoomSpeed:n,moveSpeed:i,rotateSpeedX:o,rotateSpeedY:s}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this,l,u={};switch(e.srcEvent.code){case"Minus":l=r?a.zoomOut(n).zoomOut(n):a.zoomOut(n),u.isZooming=!0;break;case"Equal":l=r?a.zoomIn(n).zoomIn(n):a.zoomIn(n),u.isZooming=!0;break;case"ArrowLeft":r?(l=a.rotateLeft(o),u.isRotating=!0):(l=a.moveLeft(i),u.isPanning=!0);break;case"ArrowRight":r?(l=a.rotateRight(o),u.isRotating=!0):(l=a.moveRight(i),u.isPanning=!0);break;case"ArrowUp":r?(l=a.rotateUp(s),u.isRotating=!0):(l=a.moveUp(i),u.isPanning=!0);break;case"ArrowDown":r?(l=a.rotateDown(s),u.isRotating=!0):(l=a.moveDown(i),u.isPanning=!0);break;default:return!1}return this.updateViewport(l,this._getTransitionProps(),u),!0}_getTransitionProps(e){let{transition:r}=this;return!r||!r.transitionInterpolator?jd:e?{...r,transitionInterpolator:new Gs({...e,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var Hd=class{constructor(e,r){this._viewportProps=this.applyConstraints(e),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var jX=5,PTe=1.2,Fb=class extends Hd{constructor(e){let{width:r,height:n,latitude:i,longitude:o,zoom:s,bearing:a=0,pitch:l=0,altitude:u=1.5,position:f=[0,0,0],maxZoom:m=20,minZoom:v=0,maxPitch:E=60,minPitch:S=0,startPanLngLat:L,startZoomLngLat:O,startRotatePos:q,startBearing:G,startPitch:H,startZoom:Y,normalize:te=!0}=e;ps(Number.isFinite(o)),ps(Number.isFinite(i)),ps(Number.isFinite(s)),super({width:r,height:n,latitude:i,longitude:o,zoom:s,bearing:a,pitch:l,altitude:u,maxZoom:m,minZoom:v,maxPitch:E,minPitch:S,normalize:te,position:f},{startPanLngLat:L,startZoomLngLat:O,startRotatePos:q,startBearing:G,startPitch:H,startZoom:Y}),this.makeViewport=e.makeViewport}panStart({pos:e}){return this._getUpdatedState({startPanLngLat:this._unproject(e)})}pan({pos:e,startPos:r}){let n=this.getState().startPanLngLat||this._unproject(r);if(!n)return this;let o=this.makeViewport(this.getViewportProps()).panByPosition(n,e);return this._getUpdatedState(o)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:r=0,deltaAngleY:n=0}){let{startRotatePos:i,startBearing:o,startPitch:s}=this.getState();if(!i||o===void 0||s===void 0)return this;let a;return e?a=this._getNewRotation(e,i,s,o):a={bearing:o+r,pitch:s+n},this._getUpdatedState(a)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:e}){return this._getUpdatedState({startZoomLngLat:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:r,scale:n}){let{startZoom:i,startZoomLngLat:o}=this.getState();if(o||(i=this.getViewportProps().zoom,o=this._unproject(r)||this._unproject(e)),!o)return this;let{maxZoom:s,minZoom:a}=this.getViewportProps(),l=i+Math.log2(n);l=mo(l,a,s);let u=this.makeViewport({...this.getViewportProps(),zoom:l});return this._getUpdatedState({zoom:l,...u.panByPosition(o,e)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(e=2){return this._zoomFromCenter(e)}zoomOut(e=2){return this._zoomFromCenter(1/e)}moveLeft(e=100){return this._panFromCenter([e,0])}moveRight(e=100){return this._panFromCenter([-e,0])}moveUp(e=100){return this._panFromCenter([0,e])}moveDown(e=100){return this._panFromCenter([0,-e])}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}shortestPathFrom(e){let r=e.getViewportProps(),n={...this.getViewportProps()},{bearing:i,longitude:o}=n;return Math.abs(i-r.bearing)>180&&(n.bearing=i<0?i+360:i-360),Math.abs(o-r.longitude)>180&&(n.longitude=o<0?o+360:o-360),n}applyConstraints(e){let{maxZoom:r,minZoom:n,zoom:i}=e;e.zoom=mo(i,n,r);let{maxPitch:o,minPitch:s,pitch:a}=e;e.pitch=mo(a,s,o);let{normalize:l=!0}=e;return l&&Object.assign(e,_N(e)),e}_zoomFromCenter(e){let{width:r,height:n}=this.getViewportProps();return this.zoom({pos:[r/2,n/2],scale:e})}_panFromCenter(e){let{width:r,height:n}=this.getViewportProps();return this.pan({startPos:[r/2,n/2],pos:[r/2+e[0],n/2+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}_unproject(e){let r=this.makeViewport(this.getViewportProps());return e&&r.unproject(e)}_getNewRotation(e,r,n,i){let o=e[0]-r[0],s=e[1]-r[1],a=e[1],l=r[1],{width:u,height:f}=this.getViewportProps(),m=o/u,v=0;s>0?Math.abs(f-l)>jX&&(v=s/(l-f)*PTe):s<0&&l>jX&&(v=1-a/l),v=mo(v,-1,1);let{minPitch:E,maxPitch:S}=this.getViewportProps(),L=i+180*m,O=n;return v>0?O=n+v*(S-n):v<0&&(O=n-v*(E-n)),{pitch:O,bearing:L}}},ig=class extends Fl{constructor(){super(...arguments),this.ControllerState=Fb,this.transition={transitionDuration:300,transitionInterpolator:new Gs({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan"}setProps(e){e.position=e.position||[0,0,0];let r=this.props;super.setProps(e),(!r||r.height!==e.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...e,...this.state}))}};var fC=class extends Nl{constructor(e={}){super(e)}getViewportType(){return ll}get ControllerType(){return ig}};fC.displayName="MapView";var i1=fC;var RTe=new i0;function LTe(t,e){let r=t.order??1/0,n=e.order??1/0;return r-n}var zb=class{constructor(e){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=e,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(e){let r=this._defaultEffects;if(!r.find(n=>n.id===e.id)){let n=r.findIndex(i=>LTe(i,e)>0);n<0?r.push(e):r.splice(n,0,e),e.setup(this._context),this._setEffects(this.effects)}}setProps(e){"effects"in e&&(Gi(e.effects,this.effects,1)||this._setEffects(e.effects))}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(e){let r={};for(let i of this.effects)r[i.id]=i;let n=[];for(let i of e){let o=r[i.id],s=i;o&&o!==i?o.setProps?(o.setProps(i.props),s=o):o.cleanup(this._context):o||i.setup(this._context),n.push(s),delete r[i.id]}for(let i in r)r[i].cleanup(this._context);this.effects=n,this._resolvedEffects=n.concat(this._defaultEffects),e.some(i=>i instanceof i0)||this._resolvedEffects.push(RTe),this._needsRedraw="effects changed"}finalize(){for(let e of this._resolvedEffects)e.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var Ub=class extends df{shouldDrawLayer(e){let{operation:r}=e.props;return r.includes("draw")||r.includes("terrain")}};var OTe="deckRenderer.renderLayers",og=class{constructor(e){this.device=e,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Ub(e),this.pickLayersPass=new Nd(e),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(e){this.layerFilter!==e.layerFilter&&(this.layerFilter=e.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==e.drawPickingColors&&(this.drawPickingColors=e.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(e){if(!e.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,n={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...e};n.effects&&this._preRender(n.effects,n);let i=this.lastPostProcessEffect?this.renderBuffers[0]:n.target;this.lastPostProcessEffect&&(n.clearColor=[0,0,0,0],n.clearCanvas=!0);let o=r.render({...n,target:i});n.effects&&(this.lastPostProcessEffect&&(n.clearCanvas=e.clearCanvas===void 0?!0:e.clearCanvas),this._postRender(n.effects,n)),this.renderCount++,sa(OTe,this,o,e)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:e}=this;for(let r of e)r.delete();e.length=0}_preRender(e,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let n of e)r.preRenderStats[n.id]=n.preRender(r),n.postRender&&(this.lastPostProcessEffect=n.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:e}=this,r=this.device.canvasContext.getDrawingBufferSize(),[n,i]=r;e.length===0&&[0,1].map(o=>{let s=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:n,height:i});e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${o}`,colorAttachments:[s]}))});for(let o of e)o.resize(r)}_postRender(e,r){let{renderBuffers:n}=this,i={...r,inputBuffer:n[0],swapBuffer:n[1]};for(let o of e)if(o.postRender){i.target=o.id===this.lastPostProcessEffect?r.target:void 0;let s=o.postRender(i);i.inputBuffer=s,i.swapBuffer=s===n[0]?n[1]:n[0]}}};var BTe={pickedColor:null,pickedObjectIndex:-1};function BN({pickedColors:t,decodePickingColor:e,deviceX:r,deviceY:n,deviceRadius:i,deviceRect:o}){let{x:s,y:a,width:l,height:u}=o,f=i*i,m=-1,v=0;for(let E=0;E<u;E++){let S=E+a-n,L=S*S;if(L>f)v+=4*l;else for(let O=0;O<l;O++){if(t[v+3]-1>=0){let G=O+s-r,H=G*G+L;H<=f&&(f=H,m=v)}v+=4}}if(m>=0){let E=t.slice(m,m+4),S=e(E);if(S){let L=Math.floor(m/4/l),O=m/4-L*l;return{...S,pickedColor:E,pickedX:s+O,pickedY:a+L}}Ar.error("Picked non-existent layer. Is picking buffer corrupt?")()}return BTe}function kN({pickedColors:t,decodePickingColor:e}){let r=new Map;if(t){for(let n=0;n<t.length;n+=4)if(t[n+3]-1>=0){let o=t.slice(n,n+4),s=o.join(",");if(!r.has(s)){let a=e(o);a?r.set(s,{...a,color:o}):Ar.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function pC({pickInfo:t,viewports:e,pixelRatio:r,x:n,y:i,z:o}){let s=e[0];e.length>1&&(s=kTe(t?.pickedViewports||e,{x:n,y:i}));let a;if(s){let l=[n-s.x,i-s.y];o!==void 0&&(l[2]=o),a=s.unproject(l)}return{color:null,layer:null,viewport:s,index:-1,picked:!1,x:n,y:i,pixel:[n,i],coordinate:a,devicePixel:t&&"pickedX"in t?[t.pickedX,t.pickedY]:void 0,pixelRatio:r}}function DN(t){let{pickInfo:e,lastPickedInfo:r,mode:n,layers:i}=t,{pickedColor:o,pickedLayer:s,pickedObjectIndex:a}=e,l=s?[s]:[];if(n==="hover"){let m=r.index,v=r.layerId,E=s?s.props.id:null;if(E!==v||a!==m){if(E!==v){let S=i.find(L=>L.props.id===v);S&&l.unshift(S)}r.layerId=E,r.index=a,r.info=null}}let u=pC(t),f=new Map;return f.set(null,u),l.forEach(m=>{let v={...u};m===s&&(v.color=o,v.index=a,v.picked=!0),v=dC({layer:m,info:v,mode:n});let E=v.layer;m===s&&n==="hover"&&(r.info=v),f.set(E.id,v),n==="hover"&&E.updateAutoHighlight(v)}),f}function dC({layer:t,info:e,mode:r}){for(;t&&e;){let n=e.layer||null;e.sourceLayer=n,e.layer=t,e=t.getPickingInfo({info:e,mode:r,sourceLayer:n}),t=t.parent}return e}function kTe(t,e){for(let r=t.length-1;r>=0;r--){let n=t[r];if(n.containsPixel(e))return n}return t[0]}var Vb=class{constructor(e){this._pickable=!0,this.device=e,this.pickLayersPass=new Nd(e),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(e){"layerFilter"in e&&(this.layerFilter=e.layerFilter),"_pickable"in e&&(this._pickable=e._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObjectAsync(e){return this._pickClosestObjectAsync(e)}pickObjectsAsync(e){return this._pickVisibleObjectsAsync(e)}pickObject(e){return this._pickClosestObject(e)}pickObjects(e){return this._pickVisibleObjects(e)}getLastPickedObject({x:e,y:r,layers:n,viewports:i},o=this.lastPickedInfo.info){let s=o&&o.layer&&o.layer.id,a=o&&o.viewport&&o.viewport.id,l=s?n.find(v=>v.id===s):null,u=a&&i.find(v=>v.id===a)||i[0],f=u&&u.unproject([e-u.x,r-u.y]);return{...o,...{x:e,y:r,viewport:u,coordinate:f,layer:l}}}_resizeBuffer(){if(!this.pickingFBO&&(this.pickingFBO=this.device.createFramebuffer({colorAttachments:["rgba8unorm"],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float"))){let r=this.device.createFramebuffer({colorAttachments:["rgba32float"],depthStencilAttachment:"depth16unorm"});this.depthFBO=r}let{canvas:e}=this.device.getDefaultCanvasContext();this.pickingFBO?.resize({width:e.width,height:e.height}),this.depthFBO?.resize({width:e.width,height:e.height})}_getPickable(e){if(this._pickable===!1)return null;let r=e.filter(n=>this.pickLayersPass.shouldDrawLayer(n)&&!n.isComposite);return r.length?r:null}async _pickClosestObjectAsync({layers:e,views:r,viewports:n,x:i,y:o,radius:s=0,depth:a=1,mode:l="query",unproject3D:u,onViewportActive:f,effects:m}){let v=this.device.canvasContext.cssToDeviceRatio(),E=this._getPickable(e);if(!E||n.length===0)return{result:[],emptyInfo:pC({viewports:n,x:i,y:o,pixelRatio:v})};this._resizeBuffer();let S=this.device.canvasContext.cssToDevicePixels([i,o],!0),L=[S.x+Math.floor(S.width/2),S.y+Math.floor(S.height/2)],O=Math.round(s*v),{width:q,height:G}=this.pickingFBO,H=this._getPickingRect({deviceX:L[0],deviceY:L[1],deviceRadius:O,deviceWidth:q,deviceHeight:G}),Y={x:i-s,y:o-s,width:s*2+1,height:s*2+1},te,D=[],le=new Set;for(let ie=0;ie<a;ie++){let J;if(H){let me=this._drawAndSample({layers:E,views:r,viewports:n,onViewportActive:f,deviceRect:H,cullRect:Y,effects:m,pass:`picking:${l}`});J=BN({...me,deviceX:L[0],deviceY:L[1],deviceRadius:O,deviceRect:H})}else J={pickedColor:null,pickedObjectIndex:-1};let X;if(J.pickedLayer&&u&&this.depthFBO){let{pickedColors:me}=this._drawAndSample({layers:[J.pickedLayer],views:r,viewports:n,onViewportActive:f,deviceRect:{x:J.pickedX,y:J.pickedY,width:1,height:1},cullRect:Y,effects:m,pass:`picking:${l}:z`},!0);me[3]&&(X=me[0])}J.pickedLayer&&ie+1<a&&(le.add(J.pickedLayer),J.pickedLayer.disablePickingIndex(J.pickedObjectIndex)),te=DN({pickInfo:J,lastPickedInfo:this.lastPickedInfo,mode:l,layers:E,viewports:n,x:i,y:o,z:X,pixelRatio:v});for(let me of te.values())me.layer&&D.push(me);if(!J.pickedColor)break}for(let ie of le)ie.restorePickingColors();return{result:D,emptyInfo:te.get(null)}}_pickClosestObject({layers:e,views:r,viewports:n,x:i,y:o,radius:s=0,depth:a=1,mode:l="query",unproject3D:u,onViewportActive:f,effects:m}){let v=this.device.canvasContext.cssToDeviceRatio(),E=this._getPickable(e);if(!E||n.length===0)return{result:[],emptyInfo:pC({viewports:n,x:i,y:o,pixelRatio:v})};this._resizeBuffer();let S=this.device.canvasContext.cssToDevicePixels([i,o],!0),L=[S.x+Math.floor(S.width/2),S.y+Math.floor(S.height/2)],O=Math.round(s*v),{width:q,height:G}=this.pickingFBO,H=this._getPickingRect({deviceX:L[0],deviceY:L[1],deviceRadius:O,deviceWidth:q,deviceHeight:G}),Y={x:i-s,y:o-s,width:s*2+1,height:s*2+1},te,D=[],le=new Set;for(let ie=0;ie<a;ie++){let J;if(H){let me=this._drawAndSample({layers:E,views:r,viewports:n,onViewportActive:f,deviceRect:H,cullRect:Y,effects:m,pass:`picking:${l}`});J=BN({...me,deviceX:L[0],deviceY:L[1],deviceRadius:O,deviceRect:H})}else J={pickedColor:null,pickedObjectIndex:-1};let X;if(J.pickedLayer&&u&&this.depthFBO){let{pickedColors:me}=this._drawAndSample({layers:[J.pickedLayer],views:r,viewports:n,onViewportActive:f,deviceRect:{x:J.pickedX,y:J.pickedY,width:1,height:1},cullRect:Y,effects:m,pass:`picking:${l}:z`},!0);me[3]&&(X=me[0])}J.pickedLayer&&ie+1<a&&(le.add(J.pickedLayer),J.pickedLayer.disablePickingIndex(J.pickedObjectIndex)),te=DN({pickInfo:J,lastPickedInfo:this.lastPickedInfo,mode:l,layers:E,viewports:n,x:i,y:o,z:X,pixelRatio:v});for(let me of te.values())me.layer&&D.push(me);if(!J.pickedColor)break}for(let ie of le)ie.restorePickingColors();return{result:D,emptyInfo:te.get(null)}}async _pickVisibleObjectsAsync({layers:e,views:r,viewports:n,x:i,y:o,width:s=1,height:a=1,mode:l="query",maxObjects:u=null,onViewportActive:f,effects:m}){let v=this._getPickable(e);if(!v||n.length===0)return[];this._resizeBuffer();let E=this.device.canvasContext.cssToDeviceRatio(),S=this.device.canvasContext.cssToDevicePixels([i,o],!0),L=S.x,O=S.y+S.height,q=this.device.canvasContext.cssToDevicePixels([i+s,o+a],!0),G=q.x+q.width,H=q.y,Y={x:L,y:H,width:G-L,height:O-H},te=this._drawAndSample({layers:v,views:r,viewports:n,onViewportActive:f,deviceRect:Y,cullRect:{x:i,y:o,width:s,height:a},effects:m,pass:`picking:${l}`}),D=kN(te),le=new Map,ie=[],J=Number.isFinite(u);for(let X=0;X<D.length&&!(J&&ie.length>=u);X++){let me=D[X],Me={color:me.pickedColor,layer:null,index:me.pickedObjectIndex,picked:!0,x:i,y:o,pixelRatio:E};Me=dC({layer:me.pickedLayer,info:Me,mode:l});let ce=Me.layer.id;le.has(ce)||le.set(ce,new Set);let Ae=le.get(ce),rt=Me.object??Me.index;Ae.has(rt)||(Ae.add(rt),ie.push(Me))}return ie}_pickVisibleObjects({layers:e,views:r,viewports:n,x:i,y:o,width:s=1,height:a=1,mode:l="query",maxObjects:u=null,onViewportActive:f,effects:m}){let v=this._getPickable(e);if(!v||n.length===0)return[];this._resizeBuffer();let E=this.device.canvasContext.cssToDeviceRatio(),S=this.device.canvasContext.cssToDevicePixels([i,o],!0),L=S.x,O=S.y+S.height,q=this.device.canvasContext.cssToDevicePixels([i+s,o+a],!0),G=q.x+q.width,H=q.y,Y={x:L,y:H,width:G-L,height:O-H},te=this._drawAndSample({layers:v,views:r,viewports:n,onViewportActive:f,deviceRect:Y,cullRect:{x:i,y:o,width:s,height:a},effects:m,pass:`picking:${l}`}),D=kN(te),le=new Map,ie=[],J=Number.isFinite(u);for(let X=0;X<D.length&&!(J&&ie.length>=u);X++){let me=D[X],Me={color:me.pickedColor,layer:null,index:me.pickedObjectIndex,picked:!0,x:i,y:o,pixelRatio:E};Me=dC({layer:me.pickedLayer,info:Me,mode:l});let ce=Me.layer.id;le.has(ce)||le.set(ce,new Set);let Ae=le.get(ce),rt=Me.object??Me.index;Ae.has(rt)||(Ae.add(rt),ie.push(Me))}return ie}async _drawAndSampleAsync({layers:e,views:r,viewports:n,onViewportActive:i,deviceRect:o,cullRect:s,effects:a,pass:l},u=!1){let f=u?this.depthFBO:this.pickingFBO,m={layers:e,layerFilter:this.layerFilter,views:r,viewports:n,onViewportActive:i,pickingFBO:f,deviceRect:o,cullRect:s,effects:a,pass:l,pickZ:u,preRenderStats:{},isPicking:!0};for(let G of a)G.useInPicking&&(m.preRenderStats[G.id]=G.preRender(m));let{decodePickingColor:v}=this.pickLayersPass.render(m),{x:E,y:S,width:L,height:O}=o,q=new(u?Float32Array:Uint8Array)(L*O*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:E,sourceY:S,sourceWidth:L,sourceHeight:O,target:q}),{pickedColors:q,decodePickingColor:v}}_drawAndSample({layers:e,views:r,viewports:n,onViewportActive:i,deviceRect:o,cullRect:s,effects:a,pass:l},u=!1){let f=u?this.depthFBO:this.pickingFBO,m={layers:e,layerFilter:this.layerFilter,views:r,viewports:n,onViewportActive:i,pickingFBO:f,deviceRect:o,cullRect:s,effects:a,pass:l,pickZ:u,preRenderStats:{},isPicking:!0};for(let G of a)G.useInPicking&&(m.preRenderStats[G.id]=G.preRender(m));let{decodePickingColor:v}=this.pickLayersPass.render(m),{x:E,y:S,width:L,height:O}=o,q=new(u?Float32Array:Uint8Array)(L*O*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:E,sourceY:S,sourceWidth:L,sourceHeight:O,target:q}),{pickedColors:q,decodePickingColor:v}}_getPickingRect({deviceX:e,deviceY:r,deviceRadius:n,deviceWidth:i,deviceHeight:o}){let s=Math.max(0,e-n),a=Math.max(0,r-n),l=Math.min(i,e+n+1)-s,u=Math.min(o,r+n+1)-a;return l<=0||u<=0?null:{x:s,y:a,width:l,height:u}}};var DTe={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},NTe="top-left",HX="__root",mC=class{constructor({deck:e,parentElement:r}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=e,r?.classList.add("deck-widget-container"),this.parentElement=r}getWidgets(){return this.resolvedWidgets}setProps(e){if(e.widgets&&!Gi(e.widgets,this.widgets,1)){let r=e.widgets.filter(Boolean);this._setWidgets(r)}}finalize(){for(let e of this.getWidgets())this._removeWidget(e);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(let e in this.containers)this.containers[e].remove()}addDefault(e){this.defaultWidgets.find(r=>r.id===e.id)||(this._addWidget(e),this.defaultWidgets.push(e),this._setWidgets(this.widgets))}onRedraw({viewports:e,layers:r}){let n=e.reduce((i,o)=>(i[o.id]=o,i),{});for(let i of this.getWidgets()){let{viewId:o}=i;if(o){let s=n[o];s&&(i.onViewportChange&&i.onViewportChange(s),i.onRedraw?.({viewports:[s],layers:r}))}else{if(i.onViewportChange)for(let s of e)i.onViewportChange(s);i.onRedraw?.({viewports:e,layers:r})}}this.lastViewports=n,this._updateContainers()}onHover(e,r){for(let n of this.getWidgets()){let{viewId:i}=n;(!i||i===e.viewport?.id)&&n.onHover?.(e,r)}}onEvent(e,r){let n=gb[r.type];if(n)for(let i of this.getWidgets()){let{viewId:o}=i;(!o||o===e.viewport?.id)&&i[n]?.(e,r)}}_setWidgets(e){let r={};for(let n of this.resolvedWidgets)r[n.id]=n;this.resolvedWidgets.length=0;for(let n of this.defaultWidgets)r[n.id]=null,this.resolvedWidgets.push(n);for(let n of e){let i=r[n.id];i?i.viewId!==n.viewId||i.placement!==n.placement?(this._removeWidget(i),this._addWidget(n)):n!==i&&(i.setProps(n.props),n=i):this._addWidget(n),r[n.id]=null,this.resolvedWidgets.push(n)}for(let n in r){let i=r[n];i&&this._removeWidget(i)}this.widgets=e}_addWidget(e){let{viewId:r=null,placement:n=NTe}=e;e.widgetManager=this,e.deck=this.deck,e.rootElement=e._onAdd({deck:this.deck,viewId:r}),e.rootElement&&this._getContainer(r,n).append(e.rootElement),e.updateHTML()}_removeWidget(e){e.onRemove?.(),e.rootElement&&e.rootElement.remove(),e.rootElement=void 0,e.deck=void 0,e.widgetManager=void 0}_getContainer(e,r){let n=e||HX,i=this.containers[n];i||(i=document.createElement("div"),i.style.pointerEvents="none",i.style.position="absolute",i.style.overflow="hidden",this.parentElement?.append(i),this.containers[n]=i);let o=i.querySelector(`.${r}`);return o||(o=globalThis.document.createElement("div"),o.className=r,o.style.position="absolute",o.style.zIndex="2",Object.assign(o.style,DTe[r]),i.append(o)),o}_updateContainers(){let e=this.deck.width,r=this.deck.height;for(let n in this.containers){let i=this.lastViewports[n]||null,o=n===HX||i,s=this.containers[n];o?(s.style.display="block",s.style.left=`${i?i.x:0}px`,s.style.top=`${i?i.y:0}px`,s.style.width=`${i?i.width:e}px`,s.style.height=`${i?i.height:r}px`):s.style.display="none"}}};function sg(t,e){e&&Object.entries(e).map(([r,n])=>{r.startsWith("--")?t.style.setProperty(r,n):t.style[r]=n})}function AC(t,e){e&&Object.keys(e).map(r=>{r.startsWith("--")?t.style.removeProperty(r):t.style[r]=""})}var Tn=class{constructor(e){this.viewId=null,this.props={...this.constructor.defaultProps,...e},this.id=this.props.id}setProps(e){let r=this.props,n=this.rootElement;n&&r.className!==e.className&&(r.className&&n.classList.remove(r.className),e.className&&n.classList.add(e.className)),n&&!Gi(r.style,e.style,1)&&(AC(n,r.style),sg(n,e.style)),Object.assign(this.props,e),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}onCreateRootElement(){let e=["deck-widget",this.className,this.props.className],r=document.createElement("div");return e.filter(n=>typeof n=="string"&&n.length>0).forEach(n=>r.classList.add(n)),sg(r,this.props.style),r}_onAdd(e){return this.onAdd(e)??this.onCreateRootElement()}onAdd(e){}onRemove(){}onViewportChange(e){}onRedraw(e){}onHover(e,r){}onClick(e,r){}onDrag(e,r){}onDragStart(e,r){}onDragEnd(e,r){}};Tn.defaultProps={id:"widget",style:{},className:""};var FTe={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},jb=class extends Tn{constructor(e={}){super(e),this.id="default-tooltip",this.placement="fill",this.className="deck-tooltip",this.isVisible=!1,this.setProps(e)}onCreateRootElement(){let e=document.createElement("div");return e.className=this.className,Object.assign(e.style,FTe),e}onRenderHTML(e){}onViewportChange(e){this.isVisible&&e.id===this.lastViewport?.id&&e!==this.lastViewport&&this.setTooltip(null)}onHover(e){let{deck:r}=this,n=r&&r.props.getTooltip;if(!n)return;let i=n(e);this.lastViewport=e.viewport,this.setTooltip(i,e.x,e.y)}setTooltip(e,r,n){let i=this.rootElement;if(i){if(typeof e=="string")i.innerText=e;else if(e)e.text&&(i.innerText=e.text),e.html&&(i.innerHTML=e.html),e.className&&(i.className=e.className);else{this.isVisible=!1,i.style.display="none";return}this.isVisible=!0,i.style.display="block",i.style.transform=`translate(${r}px, ${n}px)`,e&&typeof e=="object"&&"style"in e&&Object.assign(i.style,e.style)}}};jb.defaultProps={...Tn.defaultProps};Fn();$b();CA();function c0(){}var H3e=({isDragging:t})=>t?"grabbing":"grab",h$={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,parameters:{},parent:null,device:null,deviceProps:{},gl:null,canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:"none",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,widgets:[],onDeviceInitialized:c0,onWebGLInitialized:c0,onResize:c0,onViewStateChange:c0,onInteractionStateChange:c0,onBeforeRender:c0,onAfterRender:c0,onLoad:c0,onError:t=>Ar.error(t.message,t.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:H3e,getTooltip:null,debug:!1,drawPickingColors:!1},Zb=class{constructor(e){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new ol({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null},this._lastPointerDownInfo=null,this._onPointerMove=n=>{let{_pickRequest:i}=this;if(n.type==="pointerleave")i.x=-1,i.y=-1,i.radius=0;else{if(n.leftButton||n.rightButton)return;{let o=n.offsetCenter;if(!o)return;i.x=o.x,i.y=o.y,i.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:i.x,y:i.y}),i.event=n},this._onEvent=n=>{let i=gb[n.type],o=n.offsetCenter;if(!i||!o||!this.layerManager)return;let s=this.layerManager.getLayers(),a=this.deckPicker.getLastPickedObject({x:o.x,y:o.y,layers:s,viewports:this.getViewports(o)},this._lastPointerDownInfo),{layer:l}=a,u=l&&(l[i]||l.props[i]),f=this.props[i],m=!1;u&&(m=u.call(l,a,n)),m||(f?.(a,n),this.widgetManager.onEvent(a,n))},this._onPointerDown=n=>{if(this.device?.type==="webgpu")return;let i=n.offsetCenter,o=this._pick("pickObject","pickObject Time",{x:i.x,y:i.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=o.result[0]||o.emptyInfo},this.props={...h$,...e},e=this.props,e.viewState&&e.initialViewState&&Ar.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,e.device&&(this.device=e.device);let r=this.device;!r&&e.gl&&(e.gl instanceof WebGLRenderingContext&&Ar.error("WebGL1 context not supported.")(),r=Kb.attach(e.gl,this.props.deviceProps)),r||(r=this._createDevice(e)),this.animationLoop=this._createAnimationLoop(r,e),this.setProps(e),e._typedArrayManagerProps&&mf.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._lastPointerDownInfo=null,this.layerManager?.finalize(),this.layerManager=null,this.viewManager?.finalize(),this.viewManager=null,this.effectManager?.finalize(),this.effectManager=null,this.deckRenderer?.finalize(),this.deckRenderer=null,this.deckPicker?.finalize(),this.deckPicker=null,this.eventManager?.destroy(),this.eventManager=null,this.widgetManager?.finalize(),this.widgetManager=null,!this.props.canvas&&!this.props.device&&!this.props.gl&&this.canvas&&(this.canvas.parentElement?.removeChild(this.canvas),this.canvas=null)}setProps(e){this.stats.get("setProps Time").timeStart(),"onLayerHover"in e&&Ar.removed("onLayerHover","onHover")(),"onLayerClick"in e&&Ar.removed("onLayerClick","onClick")(),e.initialViewState&&!Gi(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),Object.assign(this.props,e),this._setCanvasSize(this.props);let r=Object.create(this.props);if(Object.assign(r,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),e.device&&e.device.id!==this.device?.id&&(this.animationLoop?.stop(),this.canvas!==e.device.canvasContext?.canvas&&(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),Ar.log(`recreating animation loop for new device! id=${e.device.id}`)(),this.animationLoop=this._createAnimationLoop(e.device,e),this.animationLoop.start()),this.animationLoop?.setProps(r),e.useDevicePixels!==void 0&&this.device?.canvasContext?.canvas instanceof HTMLCanvasElement){this.device.canvasContext.props.useDevicePixels=e.useDevicePixels;let n=this.device.canvasContext.canvas,i={target:n,contentBoxSize:[{inlineSize:n.clientWidth,blockSize:n.clientHeight}],devicePixelContentBoxSize:[{inlineSize:n.clientWidth,blockSize:n.clientHeight}],borderBoxSize:[{inlineSize:n.clientWidth,blockSize:n.clientHeight}]};this.device.canvasContext._handleResize([i])}this.layerManager&&(this.viewManager.setProps(r),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(r),this.effectManager.setProps(r),this.deckRenderer.setProps(r),this.deckPicker.setProps(r),this.widgetManager.setProps(r)),this.stats.get("setProps Time").timeEnd()}needsRedraw(e={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);let n=this.viewManager.needsRedraw(e),i=this.layerManager.needsRedraw(e),o=this.effectManager.needsRedraw(e),s=this.deckRenderer.needsRedraw(e);return r=r||n||i||o||s,r}redraw(e){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=e||r,r&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(r):this._drawLayers(r))}get isInitialized(){return this.viewManager!==null}getViews(){return ps(this.viewManager),this.viewManager.views}getViewports(e){return ps(this.viewManager),this.viewManager.getViewports(e)}getCanvas(){return this.canvas}pickObject(e){let r=this._pick("pickObject","pickObject Time",e).result;return r.length?r[0]:null}pickMultipleObjects(e){return e.depth=e.depth||10,this._pick("pickObject","pickMultipleObjects Time",e).result}pickObjects(e){return this._pick("pickObjects","pickObjects Time",e)}_addResources(e,r=!1){for(let n in e)this.layerManager.resourceManager.add({resourceId:n,data:e[n],forceUpdate:r})}_removeResources(e){for(let r of e)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(e){this.effectManager.addDefaultEffect(e)}_addDefaultShaderModule(e){this.layerManager.addDefaultShaderModule(e)}_removeDefaultShaderModule(e){this.layerManager?.removeDefaultShaderModule(e)}_pick(e,r,n){ps(this.deckPicker);let{stats:i}=this;i.get("Pick Count").incrementCount(),i.get(r).timeStart();let o=this.deckPicker[e]({layers:this.layerManager.getLayers(n),views:this.viewManager.getViews(),viewports:this.getViewports(n),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...n});return i.get(r).timeEnd(),o}_createCanvas(e){let r=e.canvas;return typeof r=="string"&&(r=document.getElementById(r),ps(r)),r||(r=document.createElement("canvas"),r.id=e.id||"deckgl-overlay",e.width&&typeof e.width=="number"&&(r.width=e.width),e.height&&typeof e.height=="number"&&(r.height=e.height),(e.parent||document.body).appendChild(r)),Object.assign(r.style,e.style),r}_setCanvasSize(e){if(!this.canvas)return;let{width:r,height:n}=e;if(r||r===0){let i=Number.isFinite(r)?`${r}px`:r;this.canvas.style.width=i}if(n||n===0){let i=Number.isFinite(n)?`${n}px`:n;this.canvas.style.position=e.style?.position||"absolute",this.canvas.style.height=i}}_updateCanvasSize(){let{canvas:e}=this;if(!e)return;let r=e.clientWidth??e.width,n=e.clientHeight??e.height;(r!==this.width||n!==this.height)&&(this.width=r,this.height=n,this.viewManager?.setProps({width:r,height:n}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:r,height:n}))}_createAnimationLoop(e,r){let{gl:n,onError:i}=r;return new e1({device:e,autoResizeDrawingBuffer:!n,autoResizeViewport:!1,onInitialize:o=>this._setDevice(o.device),onRender:this._onRenderFrame.bind(this),onError:i})}_createDevice(e){let r=this.props.deviceProps?.createCanvasContext,n=typeof r=="object"?r:void 0,i={adapters:[],...e.deviceProps};i.adapters.includes(Kb)||i.adapters.push(Kb);let o={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0};return gp.createDevice({_reuseDevices:!0,type:"webgl",...i,createCanvasContext:{...o,...n,canvas:this._createCanvas(e),useDevicePixels:this.props.useDevicePixels,autoResize:!0}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:e}=this.props,r=Array.isArray(e)?e:e?[e]:[new i1({id:"default-view"})];return r.length&&this.props.controller&&(r[0].props.controller=this.props.controller),r}_onContextLost(){let{onError:e}=this.props;this.animationLoop&&e&&e(new Error("WebGL context is lost"))}_pickAndCallback(){if(this.device?.type==="webgpu")return;let{_pickRequest:e}=this;if(e.event){let{result:r,emptyInfo:n}=this._pick("pickObject","pickObject Time",e);this.cursorState.isHovering=r.length>0;let i=n,o=!1;for(let s of r)i=s,o=s.layer?.onHover(s,e.event)||o;o||(this.props.onHover?.(i,e.event),this.widgetManager.onHover(i,e.event)),e.event=null}}_updateCursor(){let e=this.props.parent||this.canvas;e&&(e.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(e){if(this.device=e,!this.animationLoop)return;this.canvas||(this.canvas=this.device.canvasContext?.canvas,!this.canvas.isConnected&&this.props.parent&&this.props.parent.insertBefore(this.canvas,this.props.parent.firstChild)),this.device.type==="webgl"&&this.device.setParametersWebGL({blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onDeviceInitialized(this.device),this.device.type==="webgl"&&this.props.onWebGLInitialized(this.device.gl);let r=new JA;r.play(),this.animationLoop.attachTimeline(r),this.eventManager=new Ab(this.props.parent||this.canvas,{touchAction:this.props.touchAction,recognizers:Object.keys(pN).map(i=>{let[o,s,a,l]=pN[i],u=this.props.eventRecognizerOptions?.[i],f={...s,...u,event:i};return{recognizer:new o(f),recognizeWith:a,requestFailure:l}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let i in gb)this.eventManager.on(i,this._onEvent);this.viewManager=new kb({timeline:r,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let n=this.viewManager.getViewports()[0];this.layerManager=new rg(this.device,{deck:this,stats:this.stats,viewport:n,timeline:r}),this.effectManager=new zb({deck:this,device:this.device}),this.deckRenderer=new og(this.device),this.deckPicker=new Vb(this.device),this.widgetManager=new mC({deck:this,parentElement:this.canvas?.parentElement}),this.widgetManager.addDefault(new jb),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(e,r){let{device:n,gl:i}=this.layerManager.context;this.props.onBeforeRender({device:n,gl:i});let o={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...r};this.deckRenderer?.renderLayers(o),o.pass==="screen"&&this.widgetManager.onRedraw({viewports:o.viewports,layers:o.layers}),this.props.onAfterRender({device:n,gl:i})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),Ar.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.layerManager.updateLayers(),this.device?.type!=="webgpu"&&this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(e){let r=this.props.onViewStateChange(e)||e.viewState;this.viewState&&(this.viewState={...this.viewState,[e.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(e){this.cursorState.isDragging=e.isDragging||!1,this.props.onInteractionStateChange(e)}_getFrameStats(){let{stats:e}=this;e.get("frameRate").timeEnd(),e.get("frameRate").timeStart();let r=this.animationLoop.stats;e.get("GPU Time").addTime(r.get("GPU Time").lastTiming),e.get("CPU Time").addTime(r.get("CPU Time").lastTiming)}_getMetrics(){let{metrics:e,stats:r}=this;e.fps=r.get("frameRate").getHz(),e.setPropsTime=r.get("setProps Time").time,e.updateAttributesTime=r.get("Update Attributes").time,e.framesRedrawn=r.get("Redraw Count").count,e.pickTime=r.get("pickObject Time").time+r.get("pickMultipleObjects Time").time+r.get("pickObjects Time").time,e.pickCount=r.get("Pick Count").count,e.gpuTime=r.get("GPU Time").time,e.cpuTime=r.get("CPU Time").time,e.gpuTimePerFrame=r.get("GPU Time").getAverageTime(),e.cpuTimePerFrame=r.get("CPU Time").getAverageTime();let n=gp.stats.get("Memory Usage");e.bufferMemory=n.get("Buffer Memory").count,e.textureMemory=n.get("Texture Memory").count,e.renderbufferMemory=n.get("Renderbuffer Memory").count,e.gpuMemory=n.get("GPU Memory").count}};Zb.defaultProps=h$;Zb.VERSION=EM;var u1=Zb;Fn();Fn();function f$(t){switch(t){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return kA(t)}}var p$=BA;function Qb(t,e,r){let n=r==="webgpu"&&e.type==="uint8"?"unorm8":e.type;return{attribute:t,format:e.size>1?`${n}x${e.size}`:e.type,byteOffset:e.offset||0}}function l0(t){return t.stride||t.size*t.bytesPerElement}function d$(t,e){return t.type===e.type&&t.size===e.size&&l0(t)===l0(e)&&(t.offset||0)===(e.offset||0)}function oF(t,e){e.offset&&Ar.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let r=l0(t),n=e.vertexOffset!==void 0?e.vertexOffset:t.vertexOffset||0,i=e.elementOffset||0,o=n*r+i*t.bytesPerElement+(t.offset||0);return{...e,offset:o,stride:r}}function W3e(t,e){let r=oF(t,e);return{high:r,low:{...r,offset:r.offset+t.size*4}}}var Jb=class{constructor(e,r,n){this._buffer=null,this.device=e,this.id=r.id||"",this.size=r.size||1;let i=r.logicalType||r.type,o=i==="float64",{defaultValue:s}=r;s=Number.isFinite(s)?[s]:s||new Array(this.size).fill(0);let a;o?a="float32":!i&&r.isIndexed?a="uint32":a=i||"float32";let l=f$(i||a);this.doublePrecision=o,o&&r.fp64===!1&&(l=Float32Array),this.value=null,this.settings={...r,defaultType:l,defaultValue:s,logicalType:i,type:a,normalized:a.includes("norm"),size:this.size,bytesPerElement:l.BYTES_PER_ELEMENT},this.state={...n,externalBuffer:null,bufferAccessor:this.settings,allocatedValue:null,numInstances:0,bounds:null,constant:!1}}get isConstant(){return this.state.constant}get buffer(){return this._buffer}get byteOffset(){let e=this.getAccessor();return e.vertexOffset?e.vertexOffset*l0(e):0}get numInstances(){return this.state.numInstances}set numInstances(e){this.state.numInstances=e}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),mf.release(this.state.allocatedValue)}getBuffer(){return this.state.constant?null:this.state.externalBuffer||this._buffer}getValue(e=this.id,r=null){let n={};if(this.state.constant){let i=this.value;if(r){let o=oF(this.getAccessor(),r),s=o.offset/i.BYTES_PER_ELEMENT,a=o.size||this.size;n[e]=i.subarray(s,s+a)}else n[e]=i}else n[e]=this.getBuffer();return this.doublePrecision&&(this.value instanceof Float64Array?n[`${e}64Low`]=n[e]:n[`${e}64Low`]=new Float32Array(this.size)),n}_getBufferLayout(e=this.id,r=null){let n=this.getAccessor(),i=[],o={name:this.id,byteStride:l0(n),attributes:i};if(this.doublePrecision){let s=W3e(n,r||{});i.push(Qb(e,{...n,...s.high},this.device.type),Qb(`${e}64Low`,{...n,...s.low},this.device.type))}else if(r){let s=oF(n,r);i.push(Qb(e,{...n,...s},this.device.type))}else i.push(Qb(e,n,this.device.type));return o}setAccessor(e){this.state.bufferAccessor=e}getAccessor(){return this.state.bufferAccessor}getBounds(){if(this.state.bounds)return this.state.bounds;let e=null;if(this.state.constant&&this.value){let r=Array.from(this.value);e=[r,r]}else{let{value:r,numInstances:n,size:i}=this,o=n*i;if(r&&o&&r.length>=o){let s=new Array(i).fill(1/0),a=new Array(i).fill(-1/0);for(let l=0;l<o;)for(let u=0;u<i;u++){let f=r[l++];f<s[u]&&(s[u]=f),f>a[u]&&(a[u]=f)}e=[s,a]}}return this.state.bounds=e,e}setData(e){let{state:r}=this,n;ArrayBuffer.isView(e)?n={value:e}:e instanceof $n?n={buffer:e}:n=e;let i={...this.settings,...n};if(ArrayBuffer.isView(n.value)){if(!n.type)if(this.doublePrecision&&n.value instanceof Float64Array)i.type="float32";else{let s=p$(n.value);i.type=i.normalized?s.replace("int","norm"):s}i.bytesPerElement=n.value.BYTES_PER_ELEMENT,i.stride=l0(i)}if(r.bounds=null,n.constant){let o=n.value;if(o=this._normalizeValue(o,[],0),this.settings.normalized&&(o=this.normalizeConstant(o)),!(!r.constant||!this._areValuesEqual(o,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=ArrayBuffer.isView(o)?o:new Float32Array(o)}else if(n.buffer){let o=n.buffer;r.externalBuffer=o,r.constant=!1,this.value=n.value||null}else if(n.value){this._checkExternalBuffer(n);let o=n.value;r.externalBuffer=null,r.constant=!1,this.value=o;let{buffer:s}=this,a=l0(i),l=(i.vertexOffset||0)*a;if(this.doublePrecision&&o instanceof Float64Array&&(o=tC(o,i)),this.settings.isIndexed){let f=this.settings.defaultType;o.constructor!==f&&(o=new f(o))}let u=o.byteLength+l+a*2;(!s||s.byteLength<u)&&(s=this._createBuffer(u)),s.write(o,l)}return this.setAccessor(i),!0}updateSubBuffer(e={}){this.state.bounds=null;let r=this.value,{startOffset:n=0,endOffset:i}=e;this.buffer.write(this.doublePrecision&&r instanceof Float64Array?tC(r,{size:this.size,startIndex:n,endIndex:i}):r.subarray(n,i),n*r.BYTES_PER_ELEMENT+this.byteOffset)}allocate(e,r=!1){let{state:n}=this,i=n.allocatedValue,o=mf.allocate(i,e+1,{size:this.size,type:this.settings.defaultType,copy:r});this.value=o;let{byteOffset:s}=this,{buffer:a}=this;return(!a||a.byteLength<o.byteLength+s)&&(a=this._createBuffer(o.byteLength+s),r&&i&&a.write(i instanceof Float64Array?tC(i,this):i,s)),n.allocatedValue=o,n.constant=!1,n.externalBuffer=null,this.setAccessor(this.settings),!0}_checkExternalBuffer(e){let{value:r}=e;if(!ArrayBuffer.isView(r))throw new Error(`Attribute ${this.id} value is not TypedArray`);let n=this.settings.defaultType,i=!1;if(this.doublePrecision&&(i=r.BYTES_PER_ELEMENT<4),i)throw new Error(`Attribute ${this.id} does not support ${r.constructor.name}`);!(r instanceof n)&&this.settings.normalized&&!("normalized"in e)&&Ar.warn(`Attribute ${this.id} is normalized`)()}normalizeConstant(e){switch(this.settings.type){case"snorm8":return new Float32Array(e).map(r=>(r+128)/255*2-1);case"snorm16":return new Float32Array(e).map(r=>(r+32768)/65535*2-1);case"unorm8":return new Float32Array(e).map(r=>r/255);case"unorm16":return new Float32Array(e).map(r=>r/65535);default:return e}}_normalizeValue(e,r,n){let{defaultValue:i,size:o}=this.settings;if(Number.isFinite(e))return r[n]=e,r;if(!e){let s=o;for(;--s>=0;)r[n+s]=i[s];return r}switch(o){case 4:r[n+3]=Number.isFinite(e[3])?e[3]:i[3];case 3:r[n+2]=Number.isFinite(e[2])?e[2]:i[2];case 2:r[n+1]=Number.isFinite(e[1])?e[1]:i[1];case 1:r[n+0]=Number.isFinite(e[0])?e[0]:i[0];break;default:let s=o;for(;--s>=0;)r[n+s]=Number.isFinite(e[s])?e[s]:i[s]}return r}_areValuesEqual(e,r){if(!e||!r)return!1;let{size:n}=this;for(let i=0;i<n;i++)if(e[i]!==r[i])return!1;return!0}_createBuffer(e){this._buffer&&this._buffer.destroy();let{isIndexed:r,type:n}=this.settings;return this._buffer=this.device.createBuffer({...this._buffer?.props,id:this.id,usage:(r?$n.INDEX:$n.VERTEX)|$n.COPY_DST,indexType:r?n:void 0,byteLength:e}),this._buffer}};var m$=[],A$=[];function ua(t,e=0,r=1/0){let n=m$,i={index:-1,data:t,target:[]};return t?typeof t[Symbol.iterator]=="function"?n=t:t.length>0&&(A$.length=t.length,n=A$):n=m$,(e>0||Number.isFinite(r))&&(n=(Array.isArray(n)?n:Array.from(n)).slice(e,r),i.index=e-1),{iterable:n,objectInfo:i}}function HC(t){return t&&t[Symbol.asyncIterator]}function WC(t,e){let{size:r,stride:n,offset:i,startIndices:o,nested:s}=e,a=t.BYTES_PER_ELEMENT,l=n?n/a:r,u=i?i/a:0,f=Math.floor((t.length-u)/l);return(m,{index:v,target:E})=>{if(!o){let q=v*l+u;for(let G=0;G<r;G++)E[G]=t[q+G];return E}let S=o[v],L=o[v+1]||f,O;if(s){O=new Array(L-S);for(let q=S;q<L;q++){let G=q*l+u;E=new Array(r);for(let H=0;H<r;H++)E[H]=t[G+H];O[q-S]=E}}else if(l===r)O=t.subarray(S*r+u,L*r+u);else{O=new t.constructor((L-S)*r);let q=0;for(let G=S;G<L;G++){let H=G*l+u;for(let Y=0;Y<r;Y++)O[q++]=t[H+Y]}}return O}}var g$=[],ew=[[0,1/0]];function y$(t,e){if(t===ew||(e[0]<0&&(e[0]=0),e[0]>=e[1]))return t;let r=[],n=t.length,i=0;for(let o=0;o<n;o++){let s=t[o];s[1]<e[0]?(r.push(s),i=o+1):s[0]>e[1]?r.push(s):e=[Math.min(s[0],e[0]),Math.max(s[1],e[1])]}return r.splice(i,0,e),r}var G3e={interpolation:{duration:0,easing:t=>t},spring:{stiffness:.05,damping:.5}};function qC(t,e){if(!t)return null;Number.isFinite(t)&&(t={type:"interpolation",duration:t});let r=t.type||"interpolation";return{...G3e[r],...e,...t,type:r}}var Wd=class extends Jb{constructor(e,r){super(e,r,{startIndices:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:ew}),this.constant=!1,this.settings.update=r.update||(r.accessor?this._autoUpdater:void 0),Object.seal(this.settings),Object.seal(this.state),this._validateAttributeUpdaters()}get startIndices(){return this.state.startIndices}set startIndices(e){this.state.startIndices=e}needsUpdate(){return this.state.needsUpdate}needsRedraw({clearChangedFlags:e=!1}={}){let r=this.state.needsRedraw;return this.state.needsRedraw=r&&!e,r}layoutChanged(){return this.state.layoutChanged}setAccessor(e){var r;(r=this.state).layoutChanged||(r.layoutChanged=!d$(e,this.getAccessor())),super.setAccessor(e)}getUpdateTriggers(){let{accessor:e}=this.settings;return[this.id].concat(typeof e!="function"&&e||[])}supportsTransition(){return Boolean(this.settings.transition)}getTransitionSetting(e){if(!e||!this.supportsTransition())return null;let{accessor:r}=this.settings,n=this.settings.transition,i=Array.isArray(r)?e[r.find(o=>e[o])]:e[r];return qC(i,n)}setNeedsUpdate(e=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||e,this.setNeedsRedraw(e),r){let{startRow:n=0,endRow:i=1/0}=r;this.state.updateRanges=y$(this.state.updateRanges,[n,i])}else this.state.updateRanges=ew}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=g$}setNeedsRedraw(e=this.id){this.state.needsRedraw=this.state.needsRedraw||e}allocate(e){let{state:r,settings:n}=this;return n.noAlloc?!1:n.update?(super.allocate(e,r.updateRanges!==ew),!0):!1}updateBuffer({numInstances:e,data:r,props:n,context:i}){if(!this.needsUpdate())return!1;let{state:{updateRanges:o},settings:{update:s,noAlloc:a}}=this,l=!0;if(s){for(let[u,f]of o)s.call(i,this,{data:r,startRow:u,endRow:f,props:n,numInstances:e});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLength<this.value.byteLength+this.byteOffset)this.setData({value:this.value,constant:this.constant}),this.constant=!1;else for(let[u,f]of o){let m=Number.isFinite(u)?this.getVertexOffset(u):0,v=Number.isFinite(f)?this.getVertexOffset(f):a||!Number.isFinite(e)?this.value.length:e*this.size;super.updateSubBuffer({startOffset:m,endOffset:v})}this._checkAttributeArray()}else l=!1;return this.clearNeedsUpdate(),this.setNeedsRedraw(),l}setConstantValue(e,r){let n=this.device.type==="webgpu";if(n||r===void 0||typeof r=="function"){if(n&&typeof r!="function"){let s=this._normalizeValue(r,[],0);this._areValuesEqual(s,this.value)||this.setNeedsUpdate("WebGPU constant updated")}return!1}let i=this.settings.transform&&e?this.settings.transform.call(e,r):r;return this.setData({constant:!0,value:i})&&this.setNeedsRedraw(),this.clearNeedsUpdate(),!0}setExternalBuffer(e){let{state:r}=this;return e?(this.clearNeedsUpdate(),r.lastExternalBuffer===e||(r.lastExternalBuffer=e,this.setNeedsRedraw(),this.setData(e)),!0):(r.lastExternalBuffer=null,!1)}setBinaryValue(e,r=null){let{state:n,settings:i}=this;if(!e)return n.binaryValue=null,n.binaryAccessor=null,!1;if(i.noAlloc)return!1;if(n.binaryValue===e)return this.clearNeedsUpdate(),!0;if(n.binaryValue=e,this.setNeedsRedraw(),i.transform||r!==this.startIndices){ArrayBuffer.isView(e)&&(e={value:e});let s=e;ps(ArrayBuffer.isView(s.value),`invalid ${i.accessor}`);let a=Boolean(s.size)&&s.size!==this.size;return n.binaryAccessor=WC(s.value,{size:s.size||this.size,stride:s.stride,offset:s.offset,startIndices:r,nested:a}),!1}return this.clearNeedsUpdate(),this.setData(e),!0}getVertexOffset(e){let{startIndices:r}=this;return(r?e<r.length?r[e]:this.numInstances:e)*this.size}getValue(){let e=this.settings.shaderAttributes,r=super.getValue();if(!e)return r;for(let n in e)Object.assign(r,super.getValue(n,e[n]));return r}getBufferLayout(e){this.state.layoutChanged=!1;let r=this.settings.shaderAttributes,n=super._getBufferLayout(),{stepMode:i}=this.settings;if(i==="dynamic"?n.stepMode=e?e.isInstanced?"instance":"vertex":"instance":n.stepMode=i??"vertex",!r)return n;for(let o in r){let s=super._getBufferLayout(o,r[o]);n.attributes.push(...s.attributes)}return n}_autoUpdater(e,{data:r,startRow:n,endRow:i,props:o,numInstances:s}){if(e.constant&&this.context.device.type!=="webgpu")return;let{settings:a,state:l,value:u,size:f,startIndices:m}=e,{accessor:v,transform:E}=a,S=l.binaryAccessor||(typeof v=="function"?v:o[v]);typeof S!="function"&&typeof v=="string"&&(S=()=>o[v]),ps(typeof S=="function",`accessor "${v}" is not a function`);let L=e.getVertexOffset(n),{iterable:O,objectInfo:q}=ua(r,n,i);for(let G of O){q.index++;let H=S(G,q);if(E&&(H=E.call(this,H)),m){let Y=(q.index<m.length-1?m[q.index+1]:s)-m[q.index];if(H&&Array.isArray(H[0])){let te=L;for(let D of H)e._normalizeValue(D,u,te),te+=f}else H&&H.length>f?u.set(H,L):(e._normalizeValue(H,q.target,0),uC({target:u,source:q.target,start:L,count:Y}));L+=Y*f}else e._normalizeValue(H,u,L),L+=f}}_validateAttributeUpdaters(){let{settings:e}=this;if(!(e.noAlloc||typeof e.update=="function"))throw new Error(`Attribute ${this.id} missing update or accessor`)}_checkAttributeArray(){let{value:e}=this,r=Math.min(4,this.size);if(e&&e.length>=r){let n=!0;switch(r){case 4:n=n&&Number.isFinite(e[3]);case 3:n=n&&Number.isFinite(e[2]);case 2:n=n&&Number.isFinite(e[1]);case 1:n=n&&Number.isFinite(e[0]);break;default:n=!1}if(!n)throw new Error(`Illegal attribute generated for ${this.id}`)}}};function sF(t){let{source:e,target:r,start:n=0,size:i,getData:o}=t,s=t.end||r.length,a=e.length,l=s-n;if(a>l){r.set(e.subarray(0,l),n);return}if(r.set(e,n),!o)return;let u=a;for(;u<l;){let f=o(u,e);for(let m=0;m<i;m++)r[n+u]=f[m]||0,u++}}function _$({source:t,target:e,size:r,getData:n,sourceStartIndices:i,targetStartIndices:o}){if(!i||!o)return sF({source:t,target:e,size:r,getData:n}),e;let s=0,a=0,l=n&&((f,m)=>n(f+a,m)),u=Math.min(i.length,o.length);for(let f=1;f<u;f++){let m=i[f]*r,v=o[f]*r;sF({source:t.subarray(s,m),target:e,start:a,end:v,size:r,getData:l}),s=m,a=v}return a<e.length&&sF({source:[],target:e,start:a,size:r,getData:l}),e}function x$(t){let{device:e,settings:r,value:n}=t,i=new Wd(e,r);return i.setData({value:n instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:r.normalized}),i}function GC(t){switch(t){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error(`No defined attribute type for size "${t}"`)}}function XC(t){switch(t){case 1:return"float32";case 2:return"float32x2";case 3:return"float32x3";case 4:return"float32x4";default:throw new Error("invalid type size")}}function YC(t){t.push(t.shift())}function v$(t,e){let{doublePrecision:r,settings:n,value:i,size:o}=t,s=r&&i instanceof Float64Array?2:1,a=0,{shaderAttributes:l}=t.settings;if(l)for(let u of Object.values(l))a=Math.max(a,u.vertexOffset??0);return(n.noAlloc?i.length:(e+a)*o)*s}function $C({device:t,source:e,target:r}){return(!r||r.byteLength<e.byteLength)&&(r?.destroy(),r=t.createBuffer({byteLength:e.byteLength,usage:e.usage})),r}function KC({device:t,buffer:e,attribute:r,fromLength:n,toLength:i,fromStartIndices:o,getData:s=a=>a}){let a=r.doublePrecision&&r.value instanceof Float64Array?2:1,l=r.size*a,u=r.byteOffset,f=r.settings.bytesPerElement<4?u/r.settings.bytesPerElement*4:u,m=r.startIndices,v=o&&m,E=r.isConstant;if(!v&&e&&n>=i)return e;let S=r.value instanceof Float64Array?Float32Array:r.value.constructor,L=E?r.value:new S(r.getBuffer().readSyncWebGL(u,i*S.BYTES_PER_ELEMENT).buffer);if(r.settings.normalized&&!E){let H=s;s=(Y,te)=>r.normalizeConstant(H(Y,te))}let O=E?(H,Y)=>s(L,Y):(H,Y)=>s(L.subarray(H+u,H+u+l),Y),q=e?new Float32Array(e.readSyncWebGL(f,n*4).buffer):new Float32Array(0),G=new Float32Array(i);return _$({source:q,target:G,sourceStartIndices:o,targetStartIndices:m,size:l,getData:O}),(!e||e.byteLength<G.byteLength+f)&&(e?.destroy(),e=t.createBuffer({byteLength:G.byteLength+f,usage:35050})),e.write(G,f),e}var h1=class{constructor({device:e,attribute:r,timeline:n}){this.buffers=[],this.currentLength=0,this.device=e,this.transition=new gf(n),this.attribute=r,this.attributeInTransition=x$(r),this.currentStartIndices=r.startIndices}get inProgress(){return this.transition.inProgress}start(e,r,n=1/0){this.settings=e,this.currentStartIndices=this.attribute.startIndices,this.currentLength=v$(this.attribute,r),this.transition.start({...e,duration:n})}update(){let e=this.transition.update();return e&&this.onUpdate(),e}setBuffer(e){this.attributeInTransition.setData({buffer:e,normalized:this.attribute.settings.normalized,value:this.attributeInTransition.value})}cancel(){this.transition.cancel()}delete(){this.cancel();for(let e of this.buffers)e.destroy();this.buffers.length=0}};var tw=class extends h1{constructor({device:e,attribute:r,timeline:n}){super({device:e,attribute:r,timeline:n}),this.type="interpolation",this.transform=K3e(e,r)}start(e,r){let n=this.currentLength,i=this.currentStartIndices;if(super.start(e,r,e.duration),e.duration<=0){this.transition.cancel();return}let{buffers:o,attribute:s}=this;YC(o),o[0]=KC({device:this.device,buffer:o[0],attribute:s,fromLength:n,toLength:this.currentLength,fromStartIndices:i,getData:e.enter}),o[1]=$C({device:this.device,source:o[0],target:o[1]}),this.setBuffer(o[1]);let{transform:a}=this,l=a.model,u=Math.floor(this.currentLength/s.size);w$(s)&&(u/=2),l.setVertexCount(u),s.isConstant?(l.setAttributes({aFrom:o[0]}),l.setConstantAttributes({aTo:s.value})):l.setAttributes({aFrom:o[0],aTo:s.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:o[1]})}onUpdate(){let{duration:e,easing:r}=this.settings,{time:n}=this.transition,i=n/e;r&&(i=r(i));let{model:o}=this.transform,s={time:i};o.shaderInputs.setProps({interpolation:s}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}},X3e=`uniform interpolationUniforms {
2972
+ `;function yTe(t,e){if(e.filter){let r=typeof e.filter=="string"?e.filter:`${t.name}_filterColor_ext`;return ATe(r)}if(e.sampler){let r=typeof e.sampler=="string"?e.sampler:`${t.name}_sampleColor`;return gTe(r)}return""}var _Te={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"},Nd=class extends df{constructor(){super(...arguments),this._colorEncoderState=null}render(e){return"pickingFBO"in e?this._drawPickingBuffer(e):super.render(e)}_drawPickingBuffer({layers:e,layerFilter:r,views:n,viewports:i,onViewportActive:o,pickingFBO:s,deviceRect:{x:a,y:l,width:u,height:f},cullRect:m,effects:v,pass:E="picking",pickZ:S,shaderModuleProps:L}){this.pickZ=S;let O=this._resetColorEncoder(S),q=[a,l,u,f],G=super.render({target:s,layers:e,layerFilter:r,views:n,viewports:i,onViewportActive:o,cullRect:m,effects:v?.filter(Y=>Y.useInPicking),pass:E,isPicking:!0,shaderModuleProps:L,clearColor:[0,0,0,0],colorMask:15,scissorRect:q});return this._colorEncoderState=null,{decodePickingColor:O&&vTe.bind(null,O),stats:G}}shouldDrawLayer(e){let{pickable:r,operation:n}=e.props;return r&&n.includes("draw")||n.includes("terrain")||n.includes("mask")}getShaderModuleProps(e,r,n){return{picking:{isActive:1,isAttribute:this.pickZ},lighting:{enabled:!1}}}getLayerParameters(e,r,n){let i={...e.props.parameters},{pickable:o,operation:s}=e.props;return!this._colorEncoderState||s.includes("terrain")?i.blend=!1:o&&s.includes("draw")&&(Object.assign(i,_Te),i.blend=!0,i.blendColor=xTe(this._colorEncoderState,e,n)),i}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function xTe(t,e,r){let{byLayer:n,byAlpha:i}=t,o,s=n.get(e);return s?(s.viewports.push(r),o=s.a):(o=n.size+1,o<=255?(s={a:o,layer:e,viewports:[r]},n.set(e,s),i[o]=s):(Ar.warn("Too many pickable layers, only picking the first 255")(),o=0)),[0,0,0,o/255]}function vTe(t,e){let r=t.byAlpha[e[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(e)}}var s0={NO_STATE:"Awaiting state",MATCHED:"Matched. State transferred from previous layer",INITIALIZED:"Initialized",AWAITING_GC:"Discarded. Awaiting garbage collection",AWAITING_FINALIZATION:"No longer matched. Awaiting garbage collection",FINALIZED:"Finalized! Awaiting garbage collection"},r1=Symbol.for("component"),Rh=Symbol.for("propTypes"),lC=Symbol.for("deprecatedProps"),Fd=Symbol.for("asyncPropDefaults"),Ep=Symbol.for("asyncPropOriginal"),Af=Symbol.for("asyncPropResolved");function Mp(t,e=()=>!0){return Array.isArray(t)?UX(t,e,[]):e(t)?[t]:[]}function UX(t,e,r){let n=-1;for(;++n<t.length;){let i=t[n];Array.isArray(i)?UX(i,e,r):e(i)&&r.push(i)}return r}function uC({target:t,source:e,start:r=0,count:n=1}){let i=e.length,o=n*i,s=0;for(let a=r;s<i;s++)t[a++]=e[s];for(;s<o;)s<o-s?(t.copyWithin(r+s,r,r+s),s*=2):(t.copyWithin(r+s,r,r+o-s),s=o);return t}CA();var Ob=class{constructor(e,r,n){this._loadCount=0,this._subscribers=new Set,this.id=e,this.context=n,this.setData(r)}subscribe(e){this._subscribers.add(e)}unsubscribe(e){this._subscribers.delete(e)}inUse(){return this._subscribers.size>0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(e,r){if(e===this._data&&!r)return;this._data=e;let n=++this._loadCount,i=e;typeof e=="string"&&(i=za(e)),i instanceof Promise?(this.isLoaded=!1,this._loader=i.then(o=>{this._loadCount===n&&(this.isLoaded=!0,this._error=void 0,this._content=o)}).catch(o=>{this._loadCount===n&&(this.isLoaded=!0,this._error=o||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e);for(let o of this._subscribers)o.onChange(this.getData())}};var Bb=class{constructor(e){this.protocol=e.protocol||"resource://",this._context={device:e.device,gl:e.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(e){return e.startsWith(this.protocol)?!0:e in this._resources}add({resourceId:e,data:r,forceUpdate:n=!1,persistent:i=!0}){let o=this._resources[e];o?o.setData(r,n):(o=new Ob(e,r,this._context),this._resources[e]=o),o.persistent=i}remove(e){let r=this._resources[e];r&&(r.delete(),delete this._resources[e])}unsubscribe({consumerId:e}){let r=this._consumers[e];if(r){for(let n in r){let i=r[n],o=this._resources[i.resourceId];o&&o.unsubscribe(i)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:r,consumerId:n,requestId:i="default"}){let{_resources:o,protocol:s}=this;e.startsWith(s)&&(e=e.replace(s,""),o[e]||this.add({resourceId:e,data:null,persistent:!1}));let a=o[e];if(this._track(n,i,a,r),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let e in this._resources)this._resources[e].delete()}_track(e,r,n,i){let o=this._consumers,s=o[e]=o[e]||{},a=s[r],l=a&&a.resourceId&&this._resources[a.resourceId];l&&(l.unsubscribe(a),this.prune()),n&&(a?(a.onChange=i,a.resourceId=n.id):a={onChange:i,resourceId:n.id},s[r]=a,n.subscribe(a))}_prune(){this._pruneRequest=null;for(let e of Object.keys(this._resources)){let r=this._resources[e];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[e])}}};var bTe="layerManager.setLayers",wTe="layerManager.activateViewport",rg=class{constructor(e,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{sa(wTe,this,a),a&&(this.context.viewport=a)};let{deck:n,stats:i,viewport:o,timeline:s}=r||{};this.layers=[],this.resourceManager=new Bb({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:e?.gl,deck:n,shaderAssembler:eC(e?.info?.shadingLanguage||"glsl"),defaultShaderModules:[iN],renderPass:void 0,stats:i||new ol({id:"deck.gl"}),viewport:o||new Va({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:s||new JA,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let e of this.layers)this._finalizeLayer(e)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);for(let n of this.layers){let i=n.getNeedsRedraw(e);r=r||i}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(e){this._needsRedraw=this._needsRedraw||e}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e}getLayers({layerIds:e}={}){return e?this.layers.filter(r=>e.find(n=>r.id.indexOf(n)===0)):this.layers}setProps(e){"debug"in e&&(this._debug=e.debug),"userData"in e&&(this.context.userData=e.userData),"layers"in e&&(this._nextLayers=e.layers),"onError"in e&&(this.context.onError=e.onError)}setLayers(e,r){sa(bTe,this,r,e),this._lastRenderedLayers=e;let n=Mp(e,Boolean);for(let i of n)i.context=this.context;this._updateLayers(this.layers,n)}updateLayers(){let e=this.needsUpdate();e&&(this.setNeedsRedraw(`updating layers: ${e}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,e)),this._nextLayers=null}addDefaultShaderModule(e){let{defaultShaderModules:r}=this.context;r.find(n=>n.name===e.name)||(r.push(e),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(e){let{defaultShaderModules:r}=this.context,n=r.findIndex(i=>i.name===e.name);n>=0&&(r.splice(n,1),this._defaultShaderModulesChanged=!0)}_handleError(e,r,n){n.raiseError(r,`${e} of ${n}`)}_updateLayers(e,r){let n={};for(let s of e)n[s.id]?Ar.warn(`Multiple old layers with same id ${s.id}`)():n[s.id]=s;if(this._defaultShaderModulesChanged){for(let s of e)s.setNeedsUpdate(),s.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let i=[];this._updateSublayersRecursively(r,n,i),this._finalizeOldLayers(n);let o=!1;for(let s of i)if(s.hasUniformTransition()){o=`Uniform transition in ${s}`;break}this._needsUpdate=o,this.layers=i}_updateSublayersRecursively(e,r,n){for(let i of e){i.context=this.context;let o=r[i.id];o===null&&Ar.warn(`Multiple new layers with same id ${i.id}`)(),r[i.id]=null;let s=null;try{this._debug&&o!==i&&i.validateProps(),o?(this._transferLayerState(o,i),this._updateLayer(i)):this._initializeLayer(i),n.push(i),s=i.isComposite?i.getSubLayers():null}catch(a){this._handleError("matching",a,i)}s&&this._updateSublayersRecursively(s,r,n)}}_finalizeOldLayers(e){for(let r in e){let n=e[r];n&&this._finalizeLayer(n)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=s0.INITIALIZED}catch(r){this._handleError("initialization",r,e)}}_transferLayerState(e,r){r._transferState(e),r.lifecycle=s0.MATCHED,r!==e&&(e.lifecycle=s0.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(r){this._handleError("update",r,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle=s0.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=s0.FINALIZED}catch(r){this._handleError("finalization",r,e)}}};function Gi(t,e,r){if(t===e)return!0;if(!r||!t||!e)return!1;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(!Gi(t[n],e[n],r-1))return!1;return!0}if(Array.isArray(e))return!1;if(typeof t=="object"&&typeof e=="object"){let n=Object.keys(t),i=Object.keys(e);if(n.length!==i.length)return!1;for(let o of n)if(!e.hasOwnProperty(o)||!Gi(t[o],e[o],r-1))return!1;return!0}return!1}var kb=class{constructor(e){this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=e.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=e.eventManager,this._eventCallbacks={onViewStateChange:e.onViewStateChange,onInteractionStateChange:e.onInteractionStateChange},Object.seal(this),this.setProps(e)}finalize(){for(let e in this.controllers){let r=this.controllers[e];r&&r.finalize()}this.controllers={}}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e,this._needsRedraw=this._needsRedraw||e}updateViewStates(){for(let e in this.controllers){let r=this.controllers[e];r&&r.updateTransition()}}getViewports(e){return e?this._viewports.filter(r=>r.containsPixel(e)):this._viewports}getViews(){let e={};return this.views.forEach(r=>{e[r.id]=r}),e}getView(e){return this.views.find(r=>r.id===e)}getViewState(e){let r=typeof e=="string"?this.getView(e):e,n=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(n):n}getViewport(e){return this._viewportMap[e]}unproject(e,r){let n=this.getViewports(),i={x:e[0],y:e[1]};for(let o=n.length-1;o>=0;--o){let s=n[o];if(s.containsPixel(i)){let a=e.slice();return a[0]-=s.x,a[1]-=s.y,s.unproject(a,r)}}return null}setProps(e){e.views&&this._setViews(e.views),e.viewState&&this._setViewState(e.viewState),("width"in e||"height"in e)&&this._setSize(e.width,e.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(e,r){(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.setNeedsUpdate("Size changed"))}_setViews(e){e=Mp(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?(!Gi(e,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=e):Ar.warn("missing `viewState` or `initialViewState`")()}_createController(e,r){let n=r.type;return new n({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:o=>this.getView(e.id)?.makeViewport({viewState:o,width:this.width,height:this.height})})}_updateController(e,r,n,i){let o=e.controller;if(o&&n){let s={...r,...o,id:e.id,x:n.x,y:n.y,width:n.width,height:n.height};return(!i||i.constructor!==o.type)&&(i=this._createController(e,s)),i&&i.setProps(s),i}return null}_rebuildViewports(){let{views:e}=this,r=this.controllers;this._viewports=[],this.controllers={};let n=!1;for(let i=e.length;i--;){let o=e[i],s=this.getViewState(o),a=o.makeViewport({viewState:s,width:this.width,height:this.height}),l=r[o.id],u=Boolean(o.controller);u&&!l&&(n=!0),(n||!u)&&l&&(l.finalize(),l=null),this.controllers[o.id]=this._updateController(o,s,a,l),a&&this._viewports.unshift(a)}for(let i in r){let o=r[i];o&&!this.controllers[i]&&o.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(e=>{e.id&&(this._viewportMap[e.id]=this._viewportMap[e.id]||e)})}_diffViews(e,r){return e.length!==r.length?!0:e.some((n,i)=>!e[i].equals(r[i]))}};var TTe=/([0-9]+\.?[0-9]*)(%|px)/;function zd(t){switch(typeof t){case"number":return{position:t,relative:!1};case"string":let e=TTe.exec(t);if(e&&e.length>=3){let r=e[2]==="%",n=parseFloat(e[1]);return{position:r?n/100:n,relative:r}}default:throw new Error(`Could not parse position string ${t}`)}}function Ud(t,e){return t.relative?Math.round(t.position*e):t.position}var Nl=class{constructor(e){let{id:r,x:n=0,y:i=0,width:o="100%",height:s="100%",padding:a=null}=e;this.id=r||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=zd(n),this._y=zd(i),this._width=zd(o),this._height=zd(s),this._padding=a&&{left:zd(a.left||0),right:zd(a.right||0),top:zd(a.top||0),bottom:zd(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e?!0:this.constructor===e.constructor&&Gi(this.props,e.props,2)}clone(e){let r=this.constructor;return new r({...this.props,...e})}makeViewport({width:e,height:r,viewState:n}){n=this.filterViewState(n);let i=this.getDimensions({width:e,height:r});if(!i.height||!i.width)return null;let o=this.getViewportType(n);return new o({...n,...this.props,...i})}getViewStateId(){let{viewState:e}=this.props;return typeof e=="string"?e:e?.id||this.id}filterViewState(e){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;let r={...e};for(let n in this.props.viewState)n!=="id"&&(r[n]=this.props.viewState[n]);return r}return e}getDimensions({width:e,height:r}){let n={x:Ud(this._x,e),y:Ud(this._y,r),width:Ud(this._width,e),height:Ud(this._height,r)};return this._padding&&(n.padding={left:Ud(this._padding.left,e),top:Ud(this._padding.top,r),right:Ud(this._padding.right,e),bottom:Ud(this._padding.bottom,r)}),n}get controller(){let e=this.props.controller;return e?e===!0?{type:this.ControllerType}:typeof e=="function"?{type:e}:{type:this.ControllerType,...e}:null}};var gf=class{constructor(e){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=e}get inProgress(){return this._inProgress}start(e){this.cancel(),this.settings=e,this._inProgress=!0,this.settings.onStart?.(this)}end(){this._inProgress&&(this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,this.settings.onEnd?.(this))}cancel(){this._inProgress&&(this.settings.onInterrupt?.(this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1)}update(){if(!this._inProgress)return!1;if(this._handle===null){let{_timeline:e,settings:r}=this;this._handle=e.addChannel({delay:e.getTime(),duration:r.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),this.settings.onUpdate?.(this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};var VX=()=>{},Db={BREAK:1,SNAP_TO_END:2,IGNORE:3},ETe=t=>t,MTe=Db.BREAK,Nb=class{constructor(e){this._onTransitionUpdate=r=>{let{time:n,settings:{interpolator:i,startProps:o,endProps:s,duration:a,easing:l}}=r,u=l(n/a),f=i.interpolateProps(o,s,u);this.propsInTransition=this.getControllerState({...this.props,...f}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=e.getControllerState,this.propsInTransition=null,this.transition=new gf(e.timeline),this.onViewStateChange=e.onViewStateChange||VX,this.onStateChange=e.onStateChange||VX}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(e){let r=!1,n=this.props;if(this.props=e,!n||this._shouldIgnoreViewportChange(n,e))return!1;if(this._isTransitionEnabled(e)){let i=n;if(this.transition.inProgress){let{interruption:o,endProps:s}=this.transition.settings;i={...n,...o===Db.SNAP_TO_END?s:this.propsInTransition||n}}this._triggerTransition(i,e),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(e){let{transitionDuration:r,transitionInterpolator:n}=e;return(r>0||r==="auto")&&Boolean(n)}_isUpdateDueToCurrentTransition(e){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(e,this.propsInTransition):!1}_shouldIgnoreViewportChange(e,r){return this.transition.inProgress?this.transition.settings.interruption===Db.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(e,r):!0}_triggerTransition(e,r){let n=this.getControllerState(e),i=this.getControllerState(r).shortestPathFrom(n),o=r.transitionInterpolator,s=o.getDuration?o.getDuration(e,r):r.transitionDuration;if(s===0)return;let a=o.initializeProps(e,i);this.propsInTransition={};let l={duration:s,easing:r.transitionEasing||ETe,interpolator:o,interruption:r.transitionInterruption||MTe,startProps:a.start,endProps:a.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(l),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(e){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),e?.(r)}}};function ps(t,e){if(!t)throw new Error(e||"deck.gl: assertion failed.")}var Vd=class{constructor(e){let{compare:r,extract:n,required:i}=e;this._propsToCompare=r,this._propsToExtract=n||r,this._requiredProps=i}arePropsEqual(e,r){for(let n of this._propsToCompare)if(!(n in e)||!(n in r)||!ic(e[n],r[n]))return!1;return!0}initializeProps(e,r){let n={},i={};for(let o of this._propsToExtract)(o in e||o in r)&&(n[o]=e[o],i[o]=r[o]);return this._checkRequiredProps(n),this._checkRequiredProps(i),{start:n,end:i}}getDuration(e,r){return r.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(r=>{let n=e[r];ps(Number.isFinite(n)||Array.isArray(n),`${r} is required for transition`)})}};var STe=["longitude","latitude","zoom","bearing","pitch"],CTe=["longitude","latitude","zoom"],Gs=class extends Vd{constructor(e={}){let r=Array.isArray(e)?e:e.transitionProps,n=Array.isArray(e)?{}:e;n.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:STe,required:CTe},super(n.transitionProps),this.opts=n}initializeProps(e,r){let n=super.initializeProps(e,r),{makeViewport:i,around:o}=this.opts;if(i&&o){let s=i(e),a=i(r),l=s.unproject(o);n.start.around=o,Object.assign(n.end,{around:a.project(l),aroundPosition:l,width:r.width,height:r.height})}return n}interpolateProps(e,r,n){let i={};for(let o of this._propsToExtract)i[o]=nc(e[o]||0,r[o]||0,n);if(r.aroundPosition&&this.opts.makeViewport){let o=this.opts.makeViewport({...r,...i});Object.assign(i,o.panByPosition(r.aroundPosition,nc(e.around,r.around,n)))}return i}};var jd={transitionDuration:0},ITe=300,hC=t=>1-(1-t)*(1-t),n1={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],KEYBOARD:["keydown"]},ng={},Fl=class{constructor(e){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.keyboard=!0,this.transitionManager=new Nb({...e,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=e.eventManager,this.onViewStateChange=e.onViewStateChange||(()=>{}),this.onStateChange=e.onStateChange||(()=>{}),this.makeViewport=e.makeViewport}set events(e){this.toggleEvents(this._customEvents,!1),this.toggleEvents(e,!0),this._customEvents=e,this.props&&this.setProps(this.props)}finalize(){for(let e in this._events)this._events[e]&&this.eventManager?.off(e,this.handleEvent);this.transitionManager.finalize()}handleEvent(e){this._controllerState=void 0;let r=this._eventStartBlocked;switch(e.type){case"panstart":return r?!1:this._onPanStart(e);case"panmove":return this._onPan(e);case"panend":return this._onPanEnd(e);case"pinchstart":return r?!1:this._onPinchStart(e);case"pinchmove":return this._onPinch(e);case"pinchend":return this._onPinchEnd(e);case"multipanstart":return r?!1:this._onMultiPanStart(e);case"multipanmove":return this._onMultiPan(e);case"multipanend":return this._onMultiPanEnd(e);case"dblclick":return this._onDoubleClick(e);case"wheel":return this._onWheel(e);case"keydown":return this._onKeyDown(e);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(e){let{x:r,y:n}=this.props,{offsetCenter:i}=e;return[i.x-r,i.y-n]}isPointInBounds(e,r){let{width:n,height:i}=this.props;if(r&&r.handled)return!1;let o=e[0]>=0&&e[0]<=n&&e[1]>=0&&e[1]<=i;return o&&r&&r.stopPropagation(),o}isFunctionKeyPressed(e){let{srcEvent:r}=e;return Boolean(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(e){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},e);this._eventStartBlocked=r}setProps(e){e.dragMode&&(this.dragMode=e.dragMode),this.props=e,"transitionInterpolator"in e||(e.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(e);let{inertia:r}=e;this.inertia=Number.isFinite(r)?r:r===!0?ITe:0;let{scrollZoom:n=!0,dragPan:i=!0,dragRotate:o=!0,doubleClickZoom:s=!0,touchZoom:a=!0,touchRotate:l=!1,keyboard:u=!0}=e,f=Boolean(this.onViewStateChange);this.toggleEvents(n1.WHEEL,f&&n),this.toggleEvents(n1.PAN,f),this.toggleEvents(n1.PINCH,f&&(a||l)),this.toggleEvents(n1.MULTI_PAN,f&&l),this.toggleEvents(n1.DOUBLE_CLICK,f&&s),this.toggleEvents(n1.KEYBOARD,f&&u),this.scrollZoom=n,this.dragPan=i,this.dragRotate=o,this.doubleClickZoom=s,this.touchZoom=a,this.touchRotate=l,this.keyboard=u}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(e,r){this.eventManager&&e.forEach(n=>{this._events[n]!==r&&(this._events[n]=r,r?this.eventManager.on(n,this.handleEvent):this.eventManager.off(n,this.handleEvent))})}updateViewport(e,r=null,n={}){let i={...e.getViewportProps(),...r},o=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(n),o){let s=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:i,interactionState:this._interactionState,oldViewState:s,viewId:this.props.id})}}_onTransition(e){this.onViewStateChange({...e,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(e){Object.assign(this._interactionState,e),this.onStateChange(this._interactionState)}_onPanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let n=this.isFunctionKeyPressed(e)||e.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(n=!n);let i=this.controllerState[n?"panStart":"rotateStart"]({pos:r});return this._panMove=n,this.updateViewport(i,jd,{isDragging:!0}),!0}_onPan(e){return this.isDragging()?this._panMove?this._onPanMove(e):this._onPanRotate(e):!1}_onPanEnd(e){return this.isDragging()?this._panMove?this._onPanMoveEnd(e):this._onPanRotateEnd(e):!1}_onPanMove(e){if(!this.dragPan)return!1;let r=this.getCenter(e),n=this.controllerState.pan({pos:r});return this.updateViewport(n,jd,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){let{inertia:r}=this;if(this.dragPan&&r&&e.velocity){let n=this.getCenter(e),i=[n[0]+e.velocityX*r/2,n[1]+e.velocityY*r/2],o=this.controllerState.pan({pos:i}).panEnd();this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:hC},{isDragging:!1,isPanning:!0})}else{let n=this.controllerState.panEnd();this.updateViewport(n,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(e){if(!this.dragRotate)return!1;let r=this.getCenter(e),n=this.controllerState.rotate({pos:r});return this.updateViewport(n,jd,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){let{inertia:r}=this;if(this.dragRotate&&r&&e.velocity){let n=this.getCenter(e),i=[n[0]+e.velocityX*r/2,n[1]+e.velocityY*r/2],o=this.controllerState.rotate({pos:i}).rotateEnd();this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:hC},{isDragging:!1,isRotating:!0})}else{let n=this.controllerState.rotateEnd();this.updateViewport(n,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(e){if(!this.scrollZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;e.srcEvent.preventDefault();let{speed:n=.01,smooth:i=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:o}=e,s=2/(1+Math.exp(-Math.abs(o*n)));o<0&&s!==0&&(s=1/s);let a=i?{...this._getTransitionProps({around:r}),transitionDuration:250}:jd,l=this.controllerState.zoom({pos:r,scale:s});return this.updateViewport(l,a,{isZooming:!0,isPanning:!0}),!0}_onMultiPanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let n=this.controllerState.rotateStart({pos:r});return this.updateViewport(n,jd,{isDragging:!0}),!0}_onMultiPan(e){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(e);r[0]-=e.deltaX;let n=this.controllerState.rotate({pos:r});return this.updateViewport(n,jd,{isDragging:!0,isRotating:!0}),!0}_onMultiPanEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&e.velocityY){let n=this.getCenter(e),i=[n[0],n[1]+=e.velocityY*r/2],o=this.controllerState.rotate({pos:i});this.updateViewport(o,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:hC},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let n=this.controllerState.rotateEnd();this.updateViewport(n,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let n=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return ng._startPinchRotation=e.rotation,ng._lastPinchEvent=e,this.updateViewport(n,jd,{isDragging:!0}),!0}_onPinch(e){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:n}=e,i=this.getCenter(e);r=r.zoom({pos:i,scale:n})}if(this.touchRotate){let{rotation:n}=e;r=r.rotate({deltaAngleX:ng._startPinchRotation-n})}return this.updateViewport(r,jd,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),ng._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:n}=ng;if(this.touchZoom&&r&&n&&e.scale!==n.scale){let i=this.getCenter(e),o=this.controllerState.rotateEnd(),s=Math.log2(e.scale),a=(s-Math.log2(n.scale))/(e.deltaTime-n.deltaTime),l=Math.pow(2,s+a*r/2);o=o.zoom({pos:i,scale:l}).zoomEnd(),this.updateViewport(o,{...this._getTransitionProps({around:i}),transitionDuration:r,transitionEasing:hC},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let i=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return ng._startPinchRotation=null,ng._lastPinchEvent=null,!0}_onDoubleClick(e){if(!this.doubleClickZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let n=this.isFunctionKeyPressed(e),i=this.controllerState.zoom({pos:r,scale:n?.5:2});return this.updateViewport(i,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(e){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(e),{zoomSpeed:n,moveSpeed:i,rotateSpeedX:o,rotateSpeedY:s}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this,l,u={};switch(e.srcEvent.code){case"Minus":l=r?a.zoomOut(n).zoomOut(n):a.zoomOut(n),u.isZooming=!0;break;case"Equal":l=r?a.zoomIn(n).zoomIn(n):a.zoomIn(n),u.isZooming=!0;break;case"ArrowLeft":r?(l=a.rotateLeft(o),u.isRotating=!0):(l=a.moveLeft(i),u.isPanning=!0);break;case"ArrowRight":r?(l=a.rotateRight(o),u.isRotating=!0):(l=a.moveRight(i),u.isPanning=!0);break;case"ArrowUp":r?(l=a.rotateUp(s),u.isRotating=!0):(l=a.moveUp(i),u.isPanning=!0);break;case"ArrowDown":r?(l=a.rotateDown(s),u.isRotating=!0):(l=a.moveDown(i),u.isPanning=!0);break;default:return!1}return this.updateViewport(l,this._getTransitionProps(),u),!0}_getTransitionProps(e){let{transition:r}=this;return!r||!r.transitionInterpolator?jd:e?{...r,transitionInterpolator:new Gs({...e,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var Hd=class{constructor(e,r){this._viewportProps=this.applyConstraints(e),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var jX=5,PTe=1.2,Fb=class extends Hd{constructor(e){let{width:r,height:n,latitude:i,longitude:o,zoom:s,bearing:a=0,pitch:l=0,altitude:u=1.5,position:f=[0,0,0],maxZoom:m=20,minZoom:v=0,maxPitch:E=60,minPitch:S=0,startPanLngLat:L,startZoomLngLat:O,startRotatePos:q,startBearing:G,startPitch:H,startZoom:Y,normalize:te=!0}=e;ps(Number.isFinite(o)),ps(Number.isFinite(i)),ps(Number.isFinite(s)),super({width:r,height:n,latitude:i,longitude:o,zoom:s,bearing:a,pitch:l,altitude:u,maxZoom:m,minZoom:v,maxPitch:E,minPitch:S,normalize:te,position:f},{startPanLngLat:L,startZoomLngLat:O,startRotatePos:q,startBearing:G,startPitch:H,startZoom:Y}),this.makeViewport=e.makeViewport}panStart({pos:e}){return this._getUpdatedState({startPanLngLat:this._unproject(e)})}pan({pos:e,startPos:r}){let n=this.getState().startPanLngLat||this._unproject(r);if(!n)return this;let o=this.makeViewport(this.getViewportProps()).panByPosition(n,e);return this._getUpdatedState(o)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:r=0,deltaAngleY:n=0}){let{startRotatePos:i,startBearing:o,startPitch:s}=this.getState();if(!i||o===void 0||s===void 0)return this;let a;return e?a=this._getNewRotation(e,i,s,o):a={bearing:o+r,pitch:s+n},this._getUpdatedState(a)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:e}){return this._getUpdatedState({startZoomLngLat:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:r,scale:n}){let{startZoom:i,startZoomLngLat:o}=this.getState();if(o||(i=this.getViewportProps().zoom,o=this._unproject(r)||this._unproject(e)),!o)return this;let{maxZoom:s,minZoom:a}=this.getViewportProps(),l=i+Math.log2(n);l=mo(l,a,s);let u=this.makeViewport({...this.getViewportProps(),zoom:l});return this._getUpdatedState({zoom:l,...u.panByPosition(o,e)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(e=2){return this._zoomFromCenter(e)}zoomOut(e=2){return this._zoomFromCenter(1/e)}moveLeft(e=100){return this._panFromCenter([e,0])}moveRight(e=100){return this._panFromCenter([-e,0])}moveUp(e=100){return this._panFromCenter([0,e])}moveDown(e=100){return this._panFromCenter([0,-e])}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}shortestPathFrom(e){let r=e.getViewportProps(),n={...this.getViewportProps()},{bearing:i,longitude:o}=n;return Math.abs(i-r.bearing)>180&&(n.bearing=i<0?i+360:i-360),Math.abs(o-r.longitude)>180&&(n.longitude=o<0?o+360:o-360),n}applyConstraints(e){let{maxZoom:r,minZoom:n,zoom:i}=e;e.zoom=mo(i,n,r);let{maxPitch:o,minPitch:s,pitch:a}=e;e.pitch=mo(a,s,o);let{normalize:l=!0}=e;return l&&Object.assign(e,_N(e)),e}_zoomFromCenter(e){let{width:r,height:n}=this.getViewportProps();return this.zoom({pos:[r/2,n/2],scale:e})}_panFromCenter(e){let{width:r,height:n}=this.getViewportProps();return this.pan({startPos:[r/2,n/2],pos:[r/2+e[0],n/2+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}_unproject(e){let r=this.makeViewport(this.getViewportProps());return e&&r.unproject(e)}_getNewRotation(e,r,n,i){let o=e[0]-r[0],s=e[1]-r[1],a=e[1],l=r[1],{width:u,height:f}=this.getViewportProps(),m=o/u,v=0;s>0?Math.abs(f-l)>jX&&(v=s/(l-f)*PTe):s<0&&l>jX&&(v=1-a/l),v=mo(v,-1,1);let{minPitch:E,maxPitch:S}=this.getViewportProps(),L=i+180*m,O=n;return v>0?O=n+v*(S-n):v<0&&(O=n-v*(E-n)),{pitch:O,bearing:L}}},ig=class extends Fl{constructor(){super(...arguments),this.ControllerState=Fb,this.transition={transitionDuration:300,transitionInterpolator:new Gs({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan"}setProps(e){e.position=e.position||[0,0,0];let r=this.props;super.setProps(e),(!r||r.height!==e.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...e,...this.state}))}};var fC=class extends Nl{constructor(e={}){super(e)}getViewportType(){return ll}get ControllerType(){return ig}};fC.displayName="MapView";var i1=fC;var RTe=new i0;function LTe(t,e){let r=t.order??1/0,n=e.order??1/0;return r-n}var zb=class{constructor(e){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=e,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(e){let r=this._defaultEffects;if(!r.find(n=>n.id===e.id)){let n=r.findIndex(i=>LTe(i,e)>0);n<0?r.push(e):r.splice(n,0,e),e.setup(this._context),this._setEffects(this.effects)}}setProps(e){"effects"in e&&(Gi(e.effects,this.effects,1)||this._setEffects(e.effects))}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(e){let r={};for(let i of this.effects)r[i.id]=i;let n=[];for(let i of e){let o=r[i.id],s=i;o&&o!==i?o.setProps?(o.setProps(i.props),s=o):o.cleanup(this._context):o||i.setup(this._context),n.push(s),delete r[i.id]}for(let i in r)r[i].cleanup(this._context);this.effects=n,this._resolvedEffects=n.concat(this._defaultEffects),e.some(i=>i instanceof i0)||this._resolvedEffects.push(RTe),this._needsRedraw="effects changed"}finalize(){for(let e of this._resolvedEffects)e.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var Ub=class extends df{shouldDrawLayer(e){let{operation:r}=e.props;return r.includes("draw")||r.includes("terrain")}};var OTe="deckRenderer.renderLayers",og=class{constructor(e){this.device=e,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Ub(e),this.pickLayersPass=new Nd(e),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(e){this.layerFilter!==e.layerFilter&&(this.layerFilter=e.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==e.drawPickingColors&&(this.drawPickingColors=e.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(e){if(!e.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,n={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...e};n.effects&&this._preRender(n.effects,n);let i=this.lastPostProcessEffect?this.renderBuffers[0]:n.target;this.lastPostProcessEffect&&(n.clearColor=[0,0,0,0],n.clearCanvas=!0);let o=r.render({...n,target:i});n.effects&&(this.lastPostProcessEffect&&(n.clearCanvas=e.clearCanvas===void 0?!0:e.clearCanvas),this._postRender(n.effects,n)),this.renderCount++,sa(OTe,this,o,e)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:e}=this;for(let r of e)r.delete();e.length=0}_preRender(e,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let n of e)r.preRenderStats[n.id]=n.preRender(r),n.postRender&&(this.lastPostProcessEffect=n.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:e}=this,r=this.device.canvasContext.getDrawingBufferSize(),[n,i]=r;e.length===0&&[0,1].map(o=>{let s=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:n,height:i});e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${o}`,colorAttachments:[s]}))});for(let o of e)o.resize(r)}_postRender(e,r){let{renderBuffers:n}=this,i={...r,inputBuffer:n[0],swapBuffer:n[1]};for(let o of e)if(o.postRender){i.target=o.id===this.lastPostProcessEffect?r.target:void 0;let s=o.postRender(i);i.inputBuffer=s,i.swapBuffer=s===n[0]?n[1]:n[0]}}};var BTe={pickedColor:null,pickedObjectIndex:-1};function BN({pickedColors:t,decodePickingColor:e,deviceX:r,deviceY:n,deviceRadius:i,deviceRect:o}){let{x:s,y:a,width:l,height:u}=o,f=i*i,m=-1,v=0;for(let E=0;E<u;E++){let S=E+a-n,L=S*S;if(L>f)v+=4*l;else for(let O=0;O<l;O++){if(t[v+3]-1>=0){let G=O+s-r,H=G*G+L;H<=f&&(f=H,m=v)}v+=4}}if(m>=0){let E=t.slice(m,m+4),S=e(E);if(S){let L=Math.floor(m/4/l),O=m/4-L*l;return{...S,pickedColor:E,pickedX:s+O,pickedY:a+L}}Ar.error("Picked non-existent layer. Is picking buffer corrupt?")()}return BTe}function kN({pickedColors:t,decodePickingColor:e}){let r=new Map;if(t){for(let n=0;n<t.length;n+=4)if(t[n+3]-1>=0){let o=t.slice(n,n+4),s=o.join(",");if(!r.has(s)){let a=e(o);a?r.set(s,{...a,color:o}):Ar.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function pC({pickInfo:t,viewports:e,pixelRatio:r,x:n,y:i,z:o}){let s=e[0];e.length>1&&(s=kTe(t?.pickedViewports||e,{x:n,y:i}));let a;if(s){let l=[n-s.x,i-s.y];o!==void 0&&(l[2]=o),a=s.unproject(l)}return{color:null,layer:null,viewport:s,index:-1,picked:!1,x:n,y:i,pixel:[n,i],coordinate:a,devicePixel:t&&"pickedX"in t?[t.pickedX,t.pickedY]:void 0,pixelRatio:r}}function DN(t){let{pickInfo:e,lastPickedInfo:r,mode:n,layers:i}=t,{pickedColor:o,pickedLayer:s,pickedObjectIndex:a}=e,l=s?[s]:[];if(n==="hover"){let m=r.index,v=r.layerId,E=s?s.props.id:null;if(E!==v||a!==m){if(E!==v){let S=i.find(L=>L.props.id===v);S&&l.unshift(S)}r.layerId=E,r.index=a,r.info=null}}let u=pC(t),f=new Map;return f.set(null,u),l.forEach(m=>{let v={...u};m===s&&(v.color=o,v.index=a,v.picked=!0),v=dC({layer:m,info:v,mode:n});let E=v.layer;m===s&&n==="hover"&&(r.info=v),f.set(E.id,v),n==="hover"&&E.updateAutoHighlight(v)}),f}function dC({layer:t,info:e,mode:r}){for(;t&&e;){let n=e.layer||null;e.sourceLayer=n,e.layer=t,e=t.getPickingInfo({info:e,mode:r,sourceLayer:n}),t=t.parent}return e}function kTe(t,e){for(let r=t.length-1;r>=0;r--){let n=t[r];if(n.containsPixel(e))return n}return t[0]}var Vb=class{constructor(e){this._pickable=!0,this.device=e,this.pickLayersPass=new Nd(e),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(e){"layerFilter"in e&&(this.layerFilter=e.layerFilter),"_pickable"in e&&(this._pickable=e._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObjectAsync(e){return this._pickClosestObjectAsync(e)}pickObjectsAsync(e){return this._pickVisibleObjectsAsync(e)}pickObject(e){return this._pickClosestObject(e)}pickObjects(e){return this._pickVisibleObjects(e)}getLastPickedObject({x:e,y:r,layers:n,viewports:i},o=this.lastPickedInfo.info){let s=o&&o.layer&&o.layer.id,a=o&&o.viewport&&o.viewport.id,l=s?n.find(v=>v.id===s):null,u=a&&i.find(v=>v.id===a)||i[0],f=u&&u.unproject([e-u.x,r-u.y]);return{...o,...{x:e,y:r,viewport:u,coordinate:f,layer:l}}}_resizeBuffer(){if(!this.pickingFBO&&(this.pickingFBO=this.device.createFramebuffer({colorAttachments:["rgba8unorm"],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float"))){let r=this.device.createFramebuffer({colorAttachments:["rgba32float"],depthStencilAttachment:"depth16unorm"});this.depthFBO=r}let{canvas:e}=this.device.getDefaultCanvasContext();this.pickingFBO?.resize({width:e.width,height:e.height}),this.depthFBO?.resize({width:e.width,height:e.height})}_getPickable(e){if(this._pickable===!1)return null;let r=e.filter(n=>this.pickLayersPass.shouldDrawLayer(n)&&!n.isComposite);return r.length?r:null}async _pickClosestObjectAsync({layers:e,views:r,viewports:n,x:i,y:o,radius:s=0,depth:a=1,mode:l="query",unproject3D:u,onViewportActive:f,effects:m}){let v=this.device.canvasContext.cssToDeviceRatio(),E=this._getPickable(e);if(!E||n.length===0)return{result:[],emptyInfo:pC({viewports:n,x:i,y:o,pixelRatio:v})};this._resizeBuffer();let S=this.device.canvasContext.cssToDevicePixels([i,o],!0),L=[S.x+Math.floor(S.width/2),S.y+Math.floor(S.height/2)],O=Math.round(s*v),{width:q,height:G}=this.pickingFBO,H=this._getPickingRect({deviceX:L[0],deviceY:L[1],deviceRadius:O,deviceWidth:q,deviceHeight:G}),Y={x:i-s,y:o-s,width:s*2+1,height:s*2+1},te,D=[],le=new Set;for(let ie=0;ie<a;ie++){let J;if(H){let me=this._drawAndSample({layers:E,views:r,viewports:n,onViewportActive:f,deviceRect:H,cullRect:Y,effects:m,pass:`picking:${l}`});J=BN({...me,deviceX:L[0],deviceY:L[1],deviceRadius:O,deviceRect:H})}else J={pickedColor:null,pickedObjectIndex:-1};let X;if(J.pickedLayer&&u&&this.depthFBO){let{pickedColors:me}=this._drawAndSample({layers:[J.pickedLayer],views:r,viewports:n,onViewportActive:f,deviceRect:{x:J.pickedX,y:J.pickedY,width:1,height:1},cullRect:Y,effects:m,pass:`picking:${l}:z`},!0);me[3]&&(X=me[0])}J.pickedLayer&&ie+1<a&&(le.add(J.pickedLayer),J.pickedLayer.disablePickingIndex(J.pickedObjectIndex)),te=DN({pickInfo:J,lastPickedInfo:this.lastPickedInfo,mode:l,layers:E,viewports:n,x:i,y:o,z:X,pixelRatio:v});for(let me of te.values())me.layer&&D.push(me);if(!J.pickedColor)break}for(let ie of le)ie.restorePickingColors();return{result:D,emptyInfo:te.get(null)}}_pickClosestObject({layers:e,views:r,viewports:n,x:i,y:o,radius:s=0,depth:a=1,mode:l="query",unproject3D:u,onViewportActive:f,effects:m}){let v=this.device.canvasContext.cssToDeviceRatio(),E=this._getPickable(e);if(!E||n.length===0)return{result:[],emptyInfo:pC({viewports:n,x:i,y:o,pixelRatio:v})};this._resizeBuffer();let S=this.device.canvasContext.cssToDevicePixels([i,o],!0),L=[S.x+Math.floor(S.width/2),S.y+Math.floor(S.height/2)],O=Math.round(s*v),{width:q,height:G}=this.pickingFBO,H=this._getPickingRect({deviceX:L[0],deviceY:L[1],deviceRadius:O,deviceWidth:q,deviceHeight:G}),Y={x:i-s,y:o-s,width:s*2+1,height:s*2+1},te,D=[],le=new Set;for(let ie=0;ie<a;ie++){let J;if(H){let me=this._drawAndSample({layers:E,views:r,viewports:n,onViewportActive:f,deviceRect:H,cullRect:Y,effects:m,pass:`picking:${l}`});J=BN({...me,deviceX:L[0],deviceY:L[1],deviceRadius:O,deviceRect:H})}else J={pickedColor:null,pickedObjectIndex:-1};let X;if(J.pickedLayer&&u&&this.depthFBO){let{pickedColors:me}=this._drawAndSample({layers:[J.pickedLayer],views:r,viewports:n,onViewportActive:f,deviceRect:{x:J.pickedX,y:J.pickedY,width:1,height:1},cullRect:Y,effects:m,pass:`picking:${l}:z`},!0);me[3]&&(X=me[0])}J.pickedLayer&&ie+1<a&&(le.add(J.pickedLayer),J.pickedLayer.disablePickingIndex(J.pickedObjectIndex)),te=DN({pickInfo:J,lastPickedInfo:this.lastPickedInfo,mode:l,layers:E,viewports:n,x:i,y:o,z:X,pixelRatio:v});for(let me of te.values())me.layer&&D.push(me);if(!J.pickedColor)break}for(let ie of le)ie.restorePickingColors();return{result:D,emptyInfo:te.get(null)}}async _pickVisibleObjectsAsync({layers:e,views:r,viewports:n,x:i,y:o,width:s=1,height:a=1,mode:l="query",maxObjects:u=null,onViewportActive:f,effects:m}){let v=this._getPickable(e);if(!v||n.length===0)return[];this._resizeBuffer();let E=this.device.canvasContext.cssToDeviceRatio(),S=this.device.canvasContext.cssToDevicePixels([i,o],!0),L=S.x,O=S.y+S.height,q=this.device.canvasContext.cssToDevicePixels([i+s,o+a],!0),G=q.x+q.width,H=q.y,Y={x:L,y:H,width:G-L,height:O-H},te=this._drawAndSample({layers:v,views:r,viewports:n,onViewportActive:f,deviceRect:Y,cullRect:{x:i,y:o,width:s,height:a},effects:m,pass:`picking:${l}`}),D=kN(te),le=new Map,ie=[],J=Number.isFinite(u);for(let X=0;X<D.length&&!(J&&ie.length>=u);X++){let me=D[X],Me={color:me.pickedColor,layer:null,index:me.pickedObjectIndex,picked:!0,x:i,y:o,pixelRatio:E};Me=dC({layer:me.pickedLayer,info:Me,mode:l});let ce=Me.layer.id;le.has(ce)||le.set(ce,new Set);let Ae=le.get(ce),rt=Me.object??Me.index;Ae.has(rt)||(Ae.add(rt),ie.push(Me))}return ie}_pickVisibleObjects({layers:e,views:r,viewports:n,x:i,y:o,width:s=1,height:a=1,mode:l="query",maxObjects:u=null,onViewportActive:f,effects:m}){let v=this._getPickable(e);if(!v||n.length===0)return[];this._resizeBuffer();let E=this.device.canvasContext.cssToDeviceRatio(),S=this.device.canvasContext.cssToDevicePixels([i,o],!0),L=S.x,O=S.y+S.height,q=this.device.canvasContext.cssToDevicePixels([i+s,o+a],!0),G=q.x+q.width,H=q.y,Y={x:L,y:H,width:G-L,height:O-H},te=this._drawAndSample({layers:v,views:r,viewports:n,onViewportActive:f,deviceRect:Y,cullRect:{x:i,y:o,width:s,height:a},effects:m,pass:`picking:${l}`}),D=kN(te),le=new Map,ie=[],J=Number.isFinite(u);for(let X=0;X<D.length&&!(J&&ie.length>=u);X++){let me=D[X],Me={color:me.pickedColor,layer:null,index:me.pickedObjectIndex,picked:!0,x:i,y:o,pixelRatio:E};Me=dC({layer:me.pickedLayer,info:Me,mode:l});let ce=Me.layer.id;le.has(ce)||le.set(ce,new Set);let Ae=le.get(ce),rt=Me.object??Me.index;Ae.has(rt)||(Ae.add(rt),ie.push(Me))}return ie}async _drawAndSampleAsync({layers:e,views:r,viewports:n,onViewportActive:i,deviceRect:o,cullRect:s,effects:a,pass:l},u=!1){let f=u?this.depthFBO:this.pickingFBO,m={layers:e,layerFilter:this.layerFilter,views:r,viewports:n,onViewportActive:i,pickingFBO:f,deviceRect:o,cullRect:s,effects:a,pass:l,pickZ:u,preRenderStats:{},isPicking:!0};for(let G of a)G.useInPicking&&(m.preRenderStats[G.id]=G.preRender(m));let{decodePickingColor:v}=this.pickLayersPass.render(m),{x:E,y:S,width:L,height:O}=o,q=new(u?Float32Array:Uint8Array)(L*O*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:E,sourceY:S,sourceWidth:L,sourceHeight:O,target:q}),{pickedColors:q,decodePickingColor:v}}_drawAndSample({layers:e,views:r,viewports:n,onViewportActive:i,deviceRect:o,cullRect:s,effects:a,pass:l},u=!1){let f=u?this.depthFBO:this.pickingFBO,m={layers:e,layerFilter:this.layerFilter,views:r,viewports:n,onViewportActive:i,pickingFBO:f,deviceRect:o,cullRect:s,effects:a,pass:l,pickZ:u,preRenderStats:{},isPicking:!0};for(let G of a)G.useInPicking&&(m.preRenderStats[G.id]=G.preRender(m));let{decodePickingColor:v}=this.pickLayersPass.render(m),{x:E,y:S,width:L,height:O}=o,q=new(u?Float32Array:Uint8Array)(L*O*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:E,sourceY:S,sourceWidth:L,sourceHeight:O,target:q}),{pickedColors:q,decodePickingColor:v}}_getPickingRect({deviceX:e,deviceY:r,deviceRadius:n,deviceWidth:i,deviceHeight:o}){let s=Math.max(0,e-n),a=Math.max(0,r-n),l=Math.min(i,e+n+1)-s,u=Math.min(o,r+n+1)-a;return l<=0||u<=0?null:{x:s,y:a,width:l,height:u}}};var DTe={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},NTe="top-left",HX="__root",mC=class{constructor({deck:e,parentElement:r}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=e,r?.classList.add("deck-widget-container"),this.parentElement=r}getWidgets(){return this.resolvedWidgets}setProps(e){if(e.widgets&&!Gi(e.widgets,this.widgets,1)){let r=e.widgets.filter(Boolean);this._setWidgets(r)}}finalize(){for(let e of this.getWidgets())this._removeWidget(e);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(let e in this.containers)this.containers[e].remove()}addDefault(e){this.defaultWidgets.find(r=>r.id===e.id)||(this._addWidget(e),this.defaultWidgets.push(e),this._setWidgets(this.widgets))}onRedraw({viewports:e,layers:r}){let n=e.reduce((i,o)=>(i[o.id]=o,i),{});for(let i of this.getWidgets()){let{viewId:o}=i;if(o){let s=n[o];s&&(i.onViewportChange&&i.onViewportChange(s),i.onRedraw?.({viewports:[s],layers:r}))}else{if(i.onViewportChange)for(let s of e)i.onViewportChange(s);i.onRedraw?.({viewports:e,layers:r})}}this.lastViewports=n,this._updateContainers()}onHover(e,r){for(let n of this.getWidgets()){let{viewId:i}=n;(!i||i===e.viewport?.id)&&n.onHover?.(e,r)}}onEvent(e,r){let n=gb[r.type];if(n)for(let i of this.getWidgets()){let{viewId:o}=i;(!o||o===e.viewport?.id)&&i[n]?.(e,r)}}_setWidgets(e){let r={};for(let n of this.resolvedWidgets)r[n.id]=n;this.resolvedWidgets.length=0;for(let n of this.defaultWidgets)r[n.id]=null,this.resolvedWidgets.push(n);for(let n of e){let i=r[n.id];i?i.viewId!==n.viewId||i.placement!==n.placement?(this._removeWidget(i),this._addWidget(n)):n!==i&&(i.setProps(n.props),n=i):this._addWidget(n),r[n.id]=null,this.resolvedWidgets.push(n)}for(let n in r){let i=r[n];i&&this._removeWidget(i)}this.widgets=e}_addWidget(e){let{viewId:r=null,placement:n=NTe}=e;e.widgetManager=this,e.deck=this.deck,e.rootElement=e._onAdd({deck:this.deck,viewId:r}),e.rootElement&&this._getContainer(r,n).append(e.rootElement),e.updateHTML()}_removeWidget(e){e.onRemove?.(),e.rootElement&&e.rootElement.remove(),e.rootElement=void 0,e.deck=void 0,e.widgetManager=void 0}_getContainer(e,r){let n=e||HX,i=this.containers[n];i||(i=document.createElement("div"),i.style.pointerEvents="none",i.style.position="absolute",i.style.overflow="hidden",this.parentElement?.append(i),this.containers[n]=i);let o=i.querySelector(`.${r}`);return o||(o=globalThis.document.createElement("div"),o.className=r,o.style.position="absolute",o.style.zIndex="2",Object.assign(o.style,DTe[r]),i.append(o)),o}_updateContainers(){let e=this.deck.width,r=this.deck.height;for(let n in this.containers){let i=this.lastViewports[n]||null,o=n===HX||i,s=this.containers[n];o?(s.style.display="block",s.style.left=`${i?i.x:0}px`,s.style.top=`${i?i.y:0}px`,s.style.width=`${i?i.width:e}px`,s.style.height=`${i?i.height:r}px`):s.style.display="none"}}};function sg(t,e){e&&Object.entries(e).map(([r,n])=>{r.startsWith("--")?t.style.setProperty(r,n):t.style[r]=n})}function AC(t,e){e&&Object.keys(e).map(r=>{r.startsWith("--")?t.style.removeProperty(r):t.style[r]=""})}var Tn=class{constructor(e){this.viewId=null,this.props={...this.constructor.defaultProps,...e},this.id=this.props.id}setProps(e){let r=this.props,n=this.rootElement;n&&r.className!==e.className&&(r.className&&n.classList.remove(r.className),e.className&&n.classList.add(e.className)),n&&!Gi(r.style,e.style,1)&&(AC(n,r.style),sg(n,e.style)),Object.assign(this.props,e),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}onCreateRootElement(){let e=["deck-widget",this.className,this.props.className],r=document.createElement("div");return e.filter(n=>typeof n=="string"&&n.length>0).forEach(n=>r.classList.add(n)),sg(r,this.props.style),r}_onAdd(e){return this.onAdd(e)??this.onCreateRootElement()}onAdd(e){}onRemove(){}onViewportChange(e){}onRedraw(e){}onHover(e,r){}onClick(e,r){}onDrag(e,r){}onDragStart(e,r){}onDragEnd(e,r){}};Tn.defaultProps={id:"widget",style:{},className:""};var FTe={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},jb=class extends Tn{constructor(e={}){super(e),this.id="default-tooltip",this.placement="fill",this.className="deck-tooltip",this.isVisible=!1,this.setProps(e)}onCreateRootElement(){let e=document.createElement("div");return e.className=this.className,Object.assign(e.style,FTe),e}onRenderHTML(e){}onViewportChange(e){this.isVisible&&e.id===this.lastViewport?.id&&e!==this.lastViewport&&this.setTooltip(null)}onHover(e){let{deck:r}=this,n=r&&r.props.getTooltip;if(!n)return;let i=n(e);this.lastViewport=e.viewport,this.setTooltip(i,e.x,e.y)}setTooltip(e,r,n){let i=this.rootElement;if(i){if(typeof e=="string")i.innerText=e;else if(e)e.text&&(i.innerText=e.text),e.html&&(i.innerHTML=e.html),e.className&&(i.className=e.className);else{this.isVisible=!1,i.style.display="none";return}this.isVisible=!0,i.style.display="block",i.style.transform=`translate(${r}px, ${n}px)`,e&&typeof e=="object"&&"style"in e&&Object.assign(i.style,e.style)}}};jb.defaultProps={...Tn.defaultProps};Fn();$b();CA();function c0(){}var H3e=({isDragging:t})=>t?"grabbing":"grab",h$={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,parameters:{},parent:null,device:null,deviceProps:{},gl:null,canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:"none",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,widgets:[],onDeviceInitialized:c0,onWebGLInitialized:c0,onResize:c0,onViewStateChange:c0,onInteractionStateChange:c0,onBeforeRender:c0,onAfterRender:c0,onLoad:c0,onError:t=>Ar.error(t.message,t.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:H3e,getTooltip:null,debug:!1,drawPickingColors:!1},Zb=class{constructor(e){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new ol({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null},this._lastPointerDownInfo=null,this._onPointerMove=n=>{let{_pickRequest:i}=this;if(n.type==="pointerleave")i.x=-1,i.y=-1,i.radius=0;else{if(n.leftButton||n.rightButton)return;{let o=n.offsetCenter;if(!o)return;i.x=o.x,i.y=o.y,i.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:i.x,y:i.y}),i.event=n},this._onEvent=n=>{let i=gb[n.type],o=n.offsetCenter;if(!i||!o||!this.layerManager)return;let s=this.layerManager.getLayers(),a=this.deckPicker.getLastPickedObject({x:o.x,y:o.y,layers:s,viewports:this.getViewports(o)},this._lastPointerDownInfo),{layer:l}=a,u=l&&(l[i]||l.props[i]),f=this.props[i],m=!1;u&&(m=u.call(l,a,n)),m||(f?.(a,n),this.widgetManager.onEvent(a,n))},this._onPointerDown=n=>{if(this.device?.type==="webgpu")return;let i=n.offsetCenter,o=this._pick("pickObject","pickObject Time",{x:i.x,y:i.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=o.result[0]||o.emptyInfo},this.props={...h$,...e},e=this.props,e.viewState&&e.initialViewState&&Ar.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,e.device&&(this.device=e.device);let r=this.device;if(!r&&e.gl){e.gl instanceof WebGLRenderingContext&&Ar.error("WebGL1 context not supported.")();let n=this.props.deviceProps?.onResize;r=Kb.attach(e.gl,{...this.props.deviceProps,onResize:(i,o)=>{let{width:s,height:a}=i.canvas;i.drawingBufferWidth=s,i.drawingBufferHeight=a,this._needsRedraw="Canvas resized",n?.(i,o)}})}r||(r=this._createDevice(e)),this.animationLoop=this._createAnimationLoop(r,e),this.setProps(e),e._typedArrayManagerProps&&mf.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._lastPointerDownInfo=null,this.layerManager?.finalize(),this.layerManager=null,this.viewManager?.finalize(),this.viewManager=null,this.effectManager?.finalize(),this.effectManager=null,this.deckRenderer?.finalize(),this.deckRenderer=null,this.deckPicker?.finalize(),this.deckPicker=null,this.eventManager?.destroy(),this.eventManager=null,this.widgetManager?.finalize(),this.widgetManager=null,!this.props.canvas&&!this.props.device&&!this.props.gl&&this.canvas&&(this.canvas.parentElement?.removeChild(this.canvas),this.canvas=null)}setProps(e){this.stats.get("setProps Time").timeStart(),"onLayerHover"in e&&Ar.removed("onLayerHover","onHover")(),"onLayerClick"in e&&Ar.removed("onLayerClick","onClick")(),e.initialViewState&&!Gi(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),Object.assign(this.props,e),this._setCanvasSize(this.props);let r=Object.create(this.props);Object.assign(r,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),e.device&&e.device.id!==this.device?.id&&(this.animationLoop?.stop(),this.canvas!==e.device.canvasContext?.canvas&&(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),Ar.log(`recreating animation loop for new device! id=${e.device.id}`)(),this.animationLoop=this._createAnimationLoop(e.device,e),this.animationLoop.start()),this.animationLoop?.setProps(r),e.useDevicePixels!==void 0&&this.device?.canvasContext&&this.device.canvasContext.setProps({useDevicePixels:e.useDevicePixels}),this.layerManager&&(this.viewManager.setProps(r),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(r),this.effectManager.setProps(r),this.deckRenderer.setProps(r),this.deckPicker.setProps(r),this.widgetManager.setProps(r)),this.stats.get("setProps Time").timeEnd()}needsRedraw(e={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);let n=this.viewManager.needsRedraw(e),i=this.layerManager.needsRedraw(e),o=this.effectManager.needsRedraw(e),s=this.deckRenderer.needsRedraw(e);return r=r||n||i||o||s,r}redraw(e){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=e||r,r&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(r):this._drawLayers(r))}get isInitialized(){return this.viewManager!==null}getViews(){return ps(this.viewManager),this.viewManager.views}getViewports(e){return ps(this.viewManager),this.viewManager.getViewports(e)}getCanvas(){return this.canvas}pickObject(e){let r=this._pick("pickObject","pickObject Time",e).result;return r.length?r[0]:null}pickMultipleObjects(e){return e.depth=e.depth||10,this._pick("pickObject","pickMultipleObjects Time",e).result}pickObjects(e){return this._pick("pickObjects","pickObjects Time",e)}_addResources(e,r=!1){for(let n in e)this.layerManager.resourceManager.add({resourceId:n,data:e[n],forceUpdate:r})}_removeResources(e){for(let r of e)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(e){this.effectManager.addDefaultEffect(e)}_addDefaultShaderModule(e){this.layerManager.addDefaultShaderModule(e)}_removeDefaultShaderModule(e){this.layerManager?.removeDefaultShaderModule(e)}_pick(e,r,n){ps(this.deckPicker);let{stats:i}=this;i.get("Pick Count").incrementCount(),i.get(r).timeStart();let o=this.deckPicker[e]({layers:this.layerManager.getLayers(n),views:this.viewManager.getViews(),viewports:this.getViewports(n),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...n});return i.get(r).timeEnd(),o}_createCanvas(e){let r=e.canvas;return typeof r=="string"&&(r=document.getElementById(r),ps(r)),r||(r=document.createElement("canvas"),r.id=e.id||"deckgl-overlay",e.width&&typeof e.width=="number"&&(r.width=e.width),e.height&&typeof e.height=="number"&&(r.height=e.height),(e.parent||document.body).appendChild(r)),Object.assign(r.style,e.style),r}_setCanvasSize(e){if(!this.canvas)return;let{width:r,height:n}=e;if(r||r===0){let i=Number.isFinite(r)?`${r}px`:r;this.canvas.style.width=i}if(n||n===0){let i=Number.isFinite(n)?`${n}px`:n;this.canvas.style.position=e.style?.position||"absolute",this.canvas.style.height=i}}_updateCanvasSize(){let{canvas:e}=this;if(!e)return;let r=e.clientWidth??e.width,n=e.clientHeight??e.height;(r!==this.width||n!==this.height)&&(this.width=r,this.height=n,this.viewManager?.setProps({width:r,height:n}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:r,height:n}))}_createAnimationLoop(e,r){let{gl:n,onError:i}=r;return new e1({device:e,autoResizeDrawingBuffer:!n,autoResizeViewport:!1,onInitialize:o=>this._setDevice(o.device),onRender:this._onRenderFrame.bind(this),onError:i})}_createDevice(e){let r=this.props.deviceProps?.createCanvasContext,n=typeof r=="object"?r:void 0,i={adapters:[],...e.deviceProps};i.adapters.includes(Kb)||i.adapters.push(Kb);let o={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0},s=this.props.deviceProps?.onResize;return gp.createDevice({_reuseDevices:!0,type:"webgl",...i,createCanvasContext:{...o,...n,canvas:this._createCanvas(e),useDevicePixels:this.props.useDevicePixels,autoResize:!0},onResize:(a,l)=>{this._needsRedraw="Canvas resized",s?.(a,l)}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:e}=this.props,r=Array.isArray(e)?e:e?[e]:[new i1({id:"default-view"})];return r.length&&this.props.controller&&(r[0].props.controller=this.props.controller),r}_onContextLost(){let{onError:e}=this.props;this.animationLoop&&e&&e(new Error("WebGL context is lost"))}_pickAndCallback(){if(this.device?.type==="webgpu")return;let{_pickRequest:e}=this;if(e.event){let{result:r,emptyInfo:n}=this._pick("pickObject","pickObject Time",e);this.cursorState.isHovering=r.length>0;let i=n,o=!1;for(let s of r)i=s,o=s.layer?.onHover(s,e.event)||o;o||(this.props.onHover?.(i,e.event),this.widgetManager.onHover(i,e.event)),e.event=null}}_updateCursor(){let e=this.props.parent||this.canvas;e&&(e.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(e){if(this.device=e,!this.animationLoop)return;this.canvas||(this.canvas=this.device.canvasContext?.canvas,!this.canvas.isConnected&&this.props.parent&&this.props.parent.insertBefore(this.canvas,this.props.parent.firstChild)),this.device.type==="webgl"&&this.device.setParametersWebGL({blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onDeviceInitialized(this.device),this.device.type==="webgl"&&this.props.onWebGLInitialized(this.device.gl);let r=new JA;r.play(),this.animationLoop.attachTimeline(r),this.eventManager=new Ab(this.props.parent||this.canvas,{touchAction:this.props.touchAction,recognizers:Object.keys(pN).map(i=>{let[o,s,a,l]=pN[i],u=this.props.eventRecognizerOptions?.[i],f={...s,...u,event:i};return{recognizer:new o(f),recognizeWith:a,requestFailure:l}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let i in gb)this.eventManager.on(i,this._onEvent);this.viewManager=new kb({timeline:r,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let n=this.viewManager.getViewports()[0];this.layerManager=new rg(this.device,{deck:this,stats:this.stats,viewport:n,timeline:r}),this.effectManager=new zb({deck:this,device:this.device}),this.deckRenderer=new og(this.device),this.deckPicker=new Vb(this.device),this.widgetManager=new mC({deck:this,parentElement:this.canvas?.parentElement}),this.widgetManager.addDefault(new jb),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(e,r){let{device:n,gl:i}=this.layerManager.context;this.props.onBeforeRender({device:n,gl:i});let o={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...r};this.deckRenderer?.renderLayers(o),o.pass==="screen"&&this.widgetManager.onRedraw({viewports:o.viewports,layers:o.layers}),this.props.onAfterRender({device:n,gl:i})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),Ar.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.layerManager.updateLayers(),this.device?.type!=="webgpu"&&this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(e){let r=this.props.onViewStateChange(e)||e.viewState;this.viewState&&(this.viewState={...this.viewState,[e.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(e){this.cursorState.isDragging=e.isDragging||!1,this.props.onInteractionStateChange(e)}_getFrameStats(){let{stats:e}=this;e.get("frameRate").timeEnd(),e.get("frameRate").timeStart();let r=this.animationLoop.stats;e.get("GPU Time").addTime(r.get("GPU Time").lastTiming),e.get("CPU Time").addTime(r.get("CPU Time").lastTiming)}_getMetrics(){let{metrics:e,stats:r}=this;e.fps=r.get("frameRate").getHz(),e.setPropsTime=r.get("setProps Time").time,e.updateAttributesTime=r.get("Update Attributes").time,e.framesRedrawn=r.get("Redraw Count").count,e.pickTime=r.get("pickObject Time").time+r.get("pickMultipleObjects Time").time+r.get("pickObjects Time").time,e.pickCount=r.get("Pick Count").count,e.gpuTime=r.get("GPU Time").time,e.cpuTime=r.get("CPU Time").time,e.gpuTimePerFrame=r.get("GPU Time").getAverageTime(),e.cpuTimePerFrame=r.get("CPU Time").getAverageTime();let n=gp.stats.get("Memory Usage");e.bufferMemory=n.get("Buffer Memory").count,e.textureMemory=n.get("Texture Memory").count,e.renderbufferMemory=n.get("Renderbuffer Memory").count,e.gpuMemory=n.get("GPU Memory").count}};Zb.defaultProps=h$;Zb.VERSION=EM;var u1=Zb;Fn();Fn();function f$(t){switch(t){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return kA(t)}}var p$=BA;function Qb(t,e,r){let n=r==="webgpu"&&e.type==="uint8"?"unorm8":e.type;return{attribute:t,format:e.size>1?`${n}x${e.size}`:e.type,byteOffset:e.offset||0}}function l0(t){return t.stride||t.size*t.bytesPerElement}function d$(t,e){return t.type===e.type&&t.size===e.size&&l0(t)===l0(e)&&(t.offset||0)===(e.offset||0)}function oF(t,e){e.offset&&Ar.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let r=l0(t),n=e.vertexOffset!==void 0?e.vertexOffset:t.vertexOffset||0,i=e.elementOffset||0,o=n*r+i*t.bytesPerElement+(t.offset||0);return{...e,offset:o,stride:r}}function W3e(t,e){let r=oF(t,e);return{high:r,low:{...r,offset:r.offset+t.size*4}}}var Jb=class{constructor(e,r,n){this._buffer=null,this.device=e,this.id=r.id||"",this.size=r.size||1;let i=r.logicalType||r.type,o=i==="float64",{defaultValue:s}=r;s=Number.isFinite(s)?[s]:s||new Array(this.size).fill(0);let a;o?a="float32":!i&&r.isIndexed?a="uint32":a=i||"float32";let l=f$(i||a);this.doublePrecision=o,o&&r.fp64===!1&&(l=Float32Array),this.value=null,this.settings={...r,defaultType:l,defaultValue:s,logicalType:i,type:a,normalized:a.includes("norm"),size:this.size,bytesPerElement:l.BYTES_PER_ELEMENT},this.state={...n,externalBuffer:null,bufferAccessor:this.settings,allocatedValue:null,numInstances:0,bounds:null,constant:!1}}get isConstant(){return this.state.constant}get buffer(){return this._buffer}get byteOffset(){let e=this.getAccessor();return e.vertexOffset?e.vertexOffset*l0(e):0}get numInstances(){return this.state.numInstances}set numInstances(e){this.state.numInstances=e}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),mf.release(this.state.allocatedValue)}getBuffer(){return this.state.constant?null:this.state.externalBuffer||this._buffer}getValue(e=this.id,r=null){let n={};if(this.state.constant){let i=this.value;if(r){let o=oF(this.getAccessor(),r),s=o.offset/i.BYTES_PER_ELEMENT,a=o.size||this.size;n[e]=i.subarray(s,s+a)}else n[e]=i}else n[e]=this.getBuffer();return this.doublePrecision&&(this.value instanceof Float64Array?n[`${e}64Low`]=n[e]:n[`${e}64Low`]=new Float32Array(this.size)),n}_getBufferLayout(e=this.id,r=null){let n=this.getAccessor(),i=[],o={name:this.id,byteStride:l0(n),attributes:i};if(this.doublePrecision){let s=W3e(n,r||{});i.push(Qb(e,{...n,...s.high},this.device.type),Qb(`${e}64Low`,{...n,...s.low},this.device.type))}else if(r){let s=oF(n,r);i.push(Qb(e,{...n,...s},this.device.type))}else i.push(Qb(e,n,this.device.type));return o}setAccessor(e){this.state.bufferAccessor=e}getAccessor(){return this.state.bufferAccessor}getBounds(){if(this.state.bounds)return this.state.bounds;let e=null;if(this.state.constant&&this.value){let r=Array.from(this.value);e=[r,r]}else{let{value:r,numInstances:n,size:i}=this,o=n*i;if(r&&o&&r.length>=o){let s=new Array(i).fill(1/0),a=new Array(i).fill(-1/0);for(let l=0;l<o;)for(let u=0;u<i;u++){let f=r[l++];f<s[u]&&(s[u]=f),f>a[u]&&(a[u]=f)}e=[s,a]}}return this.state.bounds=e,e}setData(e){let{state:r}=this,n;ArrayBuffer.isView(e)?n={value:e}:e instanceof $n?n={buffer:e}:n=e;let i={...this.settings,...n};if(ArrayBuffer.isView(n.value)){if(!n.type)if(this.doublePrecision&&n.value instanceof Float64Array)i.type="float32";else{let s=p$(n.value);i.type=i.normalized?s.replace("int","norm"):s}i.bytesPerElement=n.value.BYTES_PER_ELEMENT,i.stride=l0(i)}if(r.bounds=null,n.constant){let o=n.value;if(o=this._normalizeValue(o,[],0),this.settings.normalized&&(o=this.normalizeConstant(o)),!(!r.constant||!this._areValuesEqual(o,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=ArrayBuffer.isView(o)?o:new Float32Array(o)}else if(n.buffer){let o=n.buffer;r.externalBuffer=o,r.constant=!1,this.value=n.value||null}else if(n.value){this._checkExternalBuffer(n);let o=n.value;r.externalBuffer=null,r.constant=!1,this.value=o;let{buffer:s}=this,a=l0(i),l=(i.vertexOffset||0)*a;if(this.doublePrecision&&o instanceof Float64Array&&(o=tC(o,i)),this.settings.isIndexed){let f=this.settings.defaultType;o.constructor!==f&&(o=new f(o))}let u=o.byteLength+l+a*2;(!s||s.byteLength<u)&&(s=this._createBuffer(u)),s.write(o,l)}return this.setAccessor(i),!0}updateSubBuffer(e={}){this.state.bounds=null;let r=this.value,{startOffset:n=0,endOffset:i}=e;this.buffer.write(this.doublePrecision&&r instanceof Float64Array?tC(r,{size:this.size,startIndex:n,endIndex:i}):r.subarray(n,i),n*r.BYTES_PER_ELEMENT+this.byteOffset)}allocate(e,r=!1){let{state:n}=this,i=n.allocatedValue,o=mf.allocate(i,e+1,{size:this.size,type:this.settings.defaultType,copy:r});this.value=o;let{byteOffset:s}=this,{buffer:a}=this;return(!a||a.byteLength<o.byteLength+s)&&(a=this._createBuffer(o.byteLength+s),r&&i&&a.write(i instanceof Float64Array?tC(i,this):i,s)),n.allocatedValue=o,n.constant=!1,n.externalBuffer=null,this.setAccessor(this.settings),!0}_checkExternalBuffer(e){let{value:r}=e;if(!ArrayBuffer.isView(r))throw new Error(`Attribute ${this.id} value is not TypedArray`);let n=this.settings.defaultType,i=!1;if(this.doublePrecision&&(i=r.BYTES_PER_ELEMENT<4),i)throw new Error(`Attribute ${this.id} does not support ${r.constructor.name}`);!(r instanceof n)&&this.settings.normalized&&!("normalized"in e)&&Ar.warn(`Attribute ${this.id} is normalized`)()}normalizeConstant(e){switch(this.settings.type){case"snorm8":return new Float32Array(e).map(r=>(r+128)/255*2-1);case"snorm16":return new Float32Array(e).map(r=>(r+32768)/65535*2-1);case"unorm8":return new Float32Array(e).map(r=>r/255);case"unorm16":return new Float32Array(e).map(r=>r/65535);default:return e}}_normalizeValue(e,r,n){let{defaultValue:i,size:o}=this.settings;if(Number.isFinite(e))return r[n]=e,r;if(!e){let s=o;for(;--s>=0;)r[n+s]=i[s];return r}switch(o){case 4:r[n+3]=Number.isFinite(e[3])?e[3]:i[3];case 3:r[n+2]=Number.isFinite(e[2])?e[2]:i[2];case 2:r[n+1]=Number.isFinite(e[1])?e[1]:i[1];case 1:r[n+0]=Number.isFinite(e[0])?e[0]:i[0];break;default:let s=o;for(;--s>=0;)r[n+s]=Number.isFinite(e[s])?e[s]:i[s]}return r}_areValuesEqual(e,r){if(!e||!r)return!1;let{size:n}=this;for(let i=0;i<n;i++)if(e[i]!==r[i])return!1;return!0}_createBuffer(e){this._buffer&&this._buffer.destroy();let{isIndexed:r,type:n}=this.settings;return this._buffer=this.device.createBuffer({...this._buffer?.props,id:this.id,usage:(r?$n.INDEX:$n.VERTEX)|$n.COPY_DST,indexType:r?n:void 0,byteLength:e}),this._buffer}};var m$=[],A$=[];function ua(t,e=0,r=1/0){let n=m$,i={index:-1,data:t,target:[]};return t?typeof t[Symbol.iterator]=="function"?n=t:t.length>0&&(A$.length=t.length,n=A$):n=m$,(e>0||Number.isFinite(r))&&(n=(Array.isArray(n)?n:Array.from(n)).slice(e,r),i.index=e-1),{iterable:n,objectInfo:i}}function HC(t){return t&&t[Symbol.asyncIterator]}function WC(t,e){let{size:r,stride:n,offset:i,startIndices:o,nested:s}=e,a=t.BYTES_PER_ELEMENT,l=n?n/a:r,u=i?i/a:0,f=Math.floor((t.length-u)/l);return(m,{index:v,target:E})=>{if(!o){let q=v*l+u;for(let G=0;G<r;G++)E[G]=t[q+G];return E}let S=o[v],L=o[v+1]||f,O;if(s){O=new Array(L-S);for(let q=S;q<L;q++){let G=q*l+u;E=new Array(r);for(let H=0;H<r;H++)E[H]=t[G+H];O[q-S]=E}}else if(l===r)O=t.subarray(S*r+u,L*r+u);else{O=new t.constructor((L-S)*r);let q=0;for(let G=S;G<L;G++){let H=G*l+u;for(let Y=0;Y<r;Y++)O[q++]=t[H+Y]}}return O}}var g$=[],ew=[[0,1/0]];function y$(t,e){if(t===ew||(e[0]<0&&(e[0]=0),e[0]>=e[1]))return t;let r=[],n=t.length,i=0;for(let o=0;o<n;o++){let s=t[o];s[1]<e[0]?(r.push(s),i=o+1):s[0]>e[1]?r.push(s):e=[Math.min(s[0],e[0]),Math.max(s[1],e[1])]}return r.splice(i,0,e),r}var G3e={interpolation:{duration:0,easing:t=>t},spring:{stiffness:.05,damping:.5}};function qC(t,e){if(!t)return null;Number.isFinite(t)&&(t={type:"interpolation",duration:t});let r=t.type||"interpolation";return{...G3e[r],...e,...t,type:r}}var Wd=class extends Jb{constructor(e,r){super(e,r,{startIndices:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:ew}),this.constant=!1,this.settings.update=r.update||(r.accessor?this._autoUpdater:void 0),Object.seal(this.settings),Object.seal(this.state),this._validateAttributeUpdaters()}get startIndices(){return this.state.startIndices}set startIndices(e){this.state.startIndices=e}needsUpdate(){return this.state.needsUpdate}needsRedraw({clearChangedFlags:e=!1}={}){let r=this.state.needsRedraw;return this.state.needsRedraw=r&&!e,r}layoutChanged(){return this.state.layoutChanged}setAccessor(e){var r;(r=this.state).layoutChanged||(r.layoutChanged=!d$(e,this.getAccessor())),super.setAccessor(e)}getUpdateTriggers(){let{accessor:e}=this.settings;return[this.id].concat(typeof e!="function"&&e||[])}supportsTransition(){return Boolean(this.settings.transition)}getTransitionSetting(e){if(!e||!this.supportsTransition())return null;let{accessor:r}=this.settings,n=this.settings.transition,i=Array.isArray(r)?e[r.find(o=>e[o])]:e[r];return qC(i,n)}setNeedsUpdate(e=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||e,this.setNeedsRedraw(e),r){let{startRow:n=0,endRow:i=1/0}=r;this.state.updateRanges=y$(this.state.updateRanges,[n,i])}else this.state.updateRanges=ew}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=g$}setNeedsRedraw(e=this.id){this.state.needsRedraw=this.state.needsRedraw||e}allocate(e){let{state:r,settings:n}=this;return n.noAlloc?!1:n.update?(super.allocate(e,r.updateRanges!==ew),!0):!1}updateBuffer({numInstances:e,data:r,props:n,context:i}){if(!this.needsUpdate())return!1;let{state:{updateRanges:o},settings:{update:s,noAlloc:a}}=this,l=!0;if(s){for(let[u,f]of o)s.call(i,this,{data:r,startRow:u,endRow:f,props:n,numInstances:e});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLength<this.value.byteLength+this.byteOffset)this.setData({value:this.value,constant:this.constant}),this.constant=!1;else for(let[u,f]of o){let m=Number.isFinite(u)?this.getVertexOffset(u):0,v=Number.isFinite(f)?this.getVertexOffset(f):a||!Number.isFinite(e)?this.value.length:e*this.size;super.updateSubBuffer({startOffset:m,endOffset:v})}this._checkAttributeArray()}else l=!1;return this.clearNeedsUpdate(),this.setNeedsRedraw(),l}setConstantValue(e,r){let n=this.device.type==="webgpu";if(n||r===void 0||typeof r=="function"){if(n&&typeof r!="function"){let s=this._normalizeValue(r,[],0);this._areValuesEqual(s,this.value)||this.setNeedsUpdate("WebGPU constant updated")}return!1}let i=this.settings.transform&&e?this.settings.transform.call(e,r):r;return this.setData({constant:!0,value:i})&&this.setNeedsRedraw(),this.clearNeedsUpdate(),!0}setExternalBuffer(e){let{state:r}=this;return e?(this.clearNeedsUpdate(),r.lastExternalBuffer===e||(r.lastExternalBuffer=e,this.setNeedsRedraw(),this.setData(e)),!0):(r.lastExternalBuffer=null,!1)}setBinaryValue(e,r=null){let{state:n,settings:i}=this;if(!e)return n.binaryValue=null,n.binaryAccessor=null,!1;if(i.noAlloc)return!1;if(n.binaryValue===e)return this.clearNeedsUpdate(),!0;if(n.binaryValue=e,this.setNeedsRedraw(),i.transform||r!==this.startIndices){ArrayBuffer.isView(e)&&(e={value:e});let s=e;ps(ArrayBuffer.isView(s.value),`invalid ${i.accessor}`);let a=Boolean(s.size)&&s.size!==this.size;return n.binaryAccessor=WC(s.value,{size:s.size||this.size,stride:s.stride,offset:s.offset,startIndices:r,nested:a}),!1}return this.clearNeedsUpdate(),this.setData(e),!0}getVertexOffset(e){let{startIndices:r}=this;return(r?e<r.length?r[e]:this.numInstances:e)*this.size}getValue(){let e=this.settings.shaderAttributes,r=super.getValue();if(!e)return r;for(let n in e)Object.assign(r,super.getValue(n,e[n]));return r}getBufferLayout(e){this.state.layoutChanged=!1;let r=this.settings.shaderAttributes,n=super._getBufferLayout(),{stepMode:i}=this.settings;if(i==="dynamic"?n.stepMode=e?e.isInstanced?"instance":"vertex":"instance":n.stepMode=i??"vertex",!r)return n;for(let o in r){let s=super._getBufferLayout(o,r[o]);n.attributes.push(...s.attributes)}return n}_autoUpdater(e,{data:r,startRow:n,endRow:i,props:o,numInstances:s}){if(e.constant&&this.context.device.type!=="webgpu")return;let{settings:a,state:l,value:u,size:f,startIndices:m}=e,{accessor:v,transform:E}=a,S=l.binaryAccessor||(typeof v=="function"?v:o[v]);typeof S!="function"&&typeof v=="string"&&(S=()=>o[v]),ps(typeof S=="function",`accessor "${v}" is not a function`);let L=e.getVertexOffset(n),{iterable:O,objectInfo:q}=ua(r,n,i);for(let G of O){q.index++;let H=S(G,q);if(E&&(H=E.call(this,H)),m){let Y=(q.index<m.length-1?m[q.index+1]:s)-m[q.index];if(H&&Array.isArray(H[0])){let te=L;for(let D of H)e._normalizeValue(D,u,te),te+=f}else H&&H.length>f?u.set(H,L):(e._normalizeValue(H,q.target,0),uC({target:u,source:q.target,start:L,count:Y}));L+=Y*f}else e._normalizeValue(H,u,L),L+=f}}_validateAttributeUpdaters(){let{settings:e}=this;if(!(e.noAlloc||typeof e.update=="function"))throw new Error(`Attribute ${this.id} missing update or accessor`)}_checkAttributeArray(){let{value:e}=this,r=Math.min(4,this.size);if(e&&e.length>=r){let n=!0;switch(r){case 4:n=n&&Number.isFinite(e[3]);case 3:n=n&&Number.isFinite(e[2]);case 2:n=n&&Number.isFinite(e[1]);case 1:n=n&&Number.isFinite(e[0]);break;default:n=!1}if(!n)throw new Error(`Illegal attribute generated for ${this.id}`)}}};function sF(t){let{source:e,target:r,start:n=0,size:i,getData:o}=t,s=t.end||r.length,a=e.length,l=s-n;if(a>l){r.set(e.subarray(0,l),n);return}if(r.set(e,n),!o)return;let u=a;for(;u<l;){let f=o(u,e);for(let m=0;m<i;m++)r[n+u]=f[m]||0,u++}}function _$({source:t,target:e,size:r,getData:n,sourceStartIndices:i,targetStartIndices:o}){if(!i||!o)return sF({source:t,target:e,size:r,getData:n}),e;let s=0,a=0,l=n&&((f,m)=>n(f+a,m)),u=Math.min(i.length,o.length);for(let f=1;f<u;f++){let m=i[f]*r,v=o[f]*r;sF({source:t.subarray(s,m),target:e,start:a,end:v,size:r,getData:l}),s=m,a=v}return a<e.length&&sF({source:[],target:e,start:a,size:r,getData:l}),e}function x$(t){let{device:e,settings:r,value:n}=t,i=new Wd(e,r);return i.setData({value:n instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:r.normalized}),i}function GC(t){switch(t){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error(`No defined attribute type for size "${t}"`)}}function XC(t){switch(t){case 1:return"float32";case 2:return"float32x2";case 3:return"float32x3";case 4:return"float32x4";default:throw new Error("invalid type size")}}function YC(t){t.push(t.shift())}function v$(t,e){let{doublePrecision:r,settings:n,value:i,size:o}=t,s=r&&i instanceof Float64Array?2:1,a=0,{shaderAttributes:l}=t.settings;if(l)for(let u of Object.values(l))a=Math.max(a,u.vertexOffset??0);return(n.noAlloc?i.length:(e+a)*o)*s}function $C({device:t,source:e,target:r}){return(!r||r.byteLength<e.byteLength)&&(r?.destroy(),r=t.createBuffer({byteLength:e.byteLength,usage:e.usage})),r}function KC({device:t,buffer:e,attribute:r,fromLength:n,toLength:i,fromStartIndices:o,getData:s=a=>a}){let a=r.doublePrecision&&r.value instanceof Float64Array?2:1,l=r.size*a,u=r.byteOffset,f=r.settings.bytesPerElement<4?u/r.settings.bytesPerElement*4:u,m=r.startIndices,v=o&&m,E=r.isConstant;if(!v&&e&&n>=i)return e;let S=r.value instanceof Float64Array?Float32Array:r.value.constructor,L=E?r.value:new S(r.getBuffer().readSyncWebGL(u,i*S.BYTES_PER_ELEMENT).buffer);if(r.settings.normalized&&!E){let H=s;s=(Y,te)=>r.normalizeConstant(H(Y,te))}let O=E?(H,Y)=>s(L,Y):(H,Y)=>s(L.subarray(H+u,H+u+l),Y),q=e?new Float32Array(e.readSyncWebGL(f,n*4).buffer):new Float32Array(0),G=new Float32Array(i);return _$({source:q,target:G,sourceStartIndices:o,targetStartIndices:m,size:l,getData:O}),(!e||e.byteLength<G.byteLength+f)&&(e?.destroy(),e=t.createBuffer({byteLength:G.byteLength+f,usage:35050})),e.write(G,f),e}var h1=class{constructor({device:e,attribute:r,timeline:n}){this.buffers=[],this.currentLength=0,this.device=e,this.transition=new gf(n),this.attribute=r,this.attributeInTransition=x$(r),this.currentStartIndices=r.startIndices}get inProgress(){return this.transition.inProgress}start(e,r,n=1/0){this.settings=e,this.currentStartIndices=this.attribute.startIndices,this.currentLength=v$(this.attribute,r),this.transition.start({...e,duration:n})}update(){let e=this.transition.update();return e&&this.onUpdate(),e}setBuffer(e){this.attributeInTransition.setData({buffer:e,normalized:this.attribute.settings.normalized,value:this.attributeInTransition.value})}cancel(){this.transition.cancel()}delete(){this.cancel();for(let e of this.buffers)e.destroy();this.buffers.length=0}};var tw=class extends h1{constructor({device:e,attribute:r,timeline:n}){super({device:e,attribute:r,timeline:n}),this.type="interpolation",this.transform=K3e(e,r)}start(e,r){let n=this.currentLength,i=this.currentStartIndices;if(super.start(e,r,e.duration),e.duration<=0){this.transition.cancel();return}let{buffers:o,attribute:s}=this;YC(o),o[0]=KC({device:this.device,buffer:o[0],attribute:s,fromLength:n,toLength:this.currentLength,fromStartIndices:i,getData:e.enter}),o[1]=$C({device:this.device,source:o[0],target:o[1]}),this.setBuffer(o[1]);let{transform:a}=this,l=a.model,u=Math.floor(this.currentLength/s.size);w$(s)&&(u/=2),l.setVertexCount(u),s.isConstant?(l.setAttributes({aFrom:o[0]}),l.setConstantAttributes({aTo:s.value})):l.setAttributes({aFrom:o[0],aTo:s.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:o[1]})}onUpdate(){let{duration:e,easing:r}=this.settings,{time:n}=this.transition,i=n/e;r&&(i=r(i));let{model:o}=this.transform,s={time:i};o.shaderInputs.setProps({interpolation:s}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}},X3e=`uniform interpolationUniforms {
2973
2973
  float time;
2974
2974
  } interpolation;
2975
2975
  `,b$={name:"interpolation",vs:X3e,uniformTypes:{time:"f32"}},Y3e=`#version 300 es