deck.gl 9.2.3 → 9.2.4
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/dist.dev.js +2 -2
- package/dist.min.js +2 -2
- package/package.json +15 -15
package/dist/dist.dev.js
CHANGED
|
@@ -43033,9 +43033,10 @@ void main() {
|
|
|
43033
43033
|
onRenderHTML(rootElement) {
|
|
43034
43034
|
}
|
|
43035
43035
|
onViewportChange(viewport) {
|
|
43036
|
-
if (this.isVisible && viewport.id === this.lastViewport?.id && viewport
|
|
43036
|
+
if (this.isVisible && viewport.id === this.lastViewport?.id && !viewport.equals(this.lastViewport)) {
|
|
43037
43037
|
this.setTooltip(null);
|
|
43038
43038
|
}
|
|
43039
|
+
this.lastViewport = viewport;
|
|
43039
43040
|
}
|
|
43040
43041
|
onHover(info) {
|
|
43041
43042
|
const { deck } = this;
|
|
@@ -43044,7 +43045,6 @@ void main() {
|
|
|
43044
43045
|
return;
|
|
43045
43046
|
}
|
|
43046
43047
|
const displayInfo = getTooltip(info);
|
|
43047
|
-
this.lastViewport = info.viewport;
|
|
43048
43048
|
this.setTooltip(displayInfo, info.x, info.y);
|
|
43049
43049
|
}
|
|
43050
43050
|
setTooltip(displayInfo, x4, y5) {
|
package/dist.min.js
CHANGED
|
@@ -26,7 +26,7 @@ ${t}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,t),r.compileShader(thi
|
|
|
26
26
|
} catch (error) {
|
|
27
27
|
console.error(error);
|
|
28
28
|
throw error;
|
|
29
|
-
}`}function y2(e,t=!0,r){let n=r||new Set;if(e){if(Cw(e))n.add(e);else if(Cw(e.buffer))n.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(t&&typeof e=="object")for(let s in e)y2(e[s],t,n)}}return r===void 0?Array.from(n):[]}function Cw(e){return e?e instanceof ArrayBuffer||typeof MessagePort<"u"&&e instanceof MessagePort||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas:!1}var v2=()=>{},ui=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&Fe||typeof Za<"u"&&!Fe}constructor(t){let{name:r,source:n,url:s}=t;je(n||s),this.name=r,this.source=n,this.url=s,this.onMessage=v2,this.onError=i=>console.log(i),this.worker=Fe?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=v2,this.onError=v2,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(t,r){r=r||y2(t),this.worker.postMessage(t,r)}_getErrorFromErrorEvent(t){let r="Failed to load ";return r+=`worker ${this.name} from ${this.url}. `,t.message&&(r+=`${t.message} in `),t.lineno&&(r+=`:${t.lineno}:${t.colno}`),new Error(r)}_createBrowserWorker(){this._loadableURL=Sw({source:this.source,url:this.url});let t=new Worker(this._loadableURL,{name:this.name});return t.onmessage=r=>{r.data?this.onMessage(r.data):this.onError(new Error("No data received"))},t.onerror=r=>{this.onError(this._getErrorFromErrorEvent(r)),this.terminated=!0},t.onmessageerror=r=>console.error(r),t}_createNodeWorker(){let t;if(this.url){let n=this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`;t=new Za(n,{eval:!1})}else if(this.source)t=new Za(this.source,{eval:!0});else throw new Error("no worker");return t.on("message",r=>{this.onMessage(r)}),t.on("error",r=>{this.onError(r)}),t.on("exit",r=>{}),t}};var Pf=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return ui.isSupported()}constructor(t){this.source=t.source,this.url=t.url,this.setProps(t)}destroy(){this.idleQueue.forEach(t=>t.destroy()),this.isDestroyed=!0}setProps(t){this.props={...this.props,...t},t.name!==void 0&&(this.name=t.name),t.maxConcurrency!==void 0&&(this.maxConcurrency=t.maxConcurrency),t.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=t.maxMobileConcurrency),t.reuseWorkers!==void 0&&(this.reuseWorkers=t.reuseWorkers),t.onDebug!==void 0&&(this.onDebug=t.onDebug)}async startJob(t,r=(s,i,o)=>s.done(o),n=(s,i)=>s.error(i)){let s=new Promise(i=>(this.jobQueue.push({name:t,onMessage:r,onError:n,onStart:i}),this));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;let t=this._getAvailableWorker();if(!t)return;let r=this.jobQueue.shift();if(r){this.onDebug({message:"Starting job",name:r.name,workerThread:t,backlog:this.jobQueue.length});let n=new Cf(r.name,t);t.onMessage=s=>r.onMessage(n,s.type,s.payload),t.onError=s=>r.onError(n,s),r.onStart(n);try{await n.result}catch(s){console.error(`Worker exception: ${s}`)}finally{this.returnWorkerToQueue(t)}}}returnWorkerToQueue(t){!Fe||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(t.destroy(),this.count--):this.idleQueue.push(t),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count<this._getMaxConcurrency()){this.count++;let t=`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;return new ui({name:t,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return Ew?this.maxMobileConcurrency:this.maxConcurrency}};var gj={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},xo=class{props;workerPools=new Map;static isSupported(){return ui.isSupported()}static getWorkerFarm(t={}){return xo._workerFarm=xo._workerFarm||new xo({}),xo._workerFarm.setProps(t),xo._workerFarm}constructor(t){this.props={...gj},this.setProps(t),this.workerPools=new Map}destroy(){for(let t of this.workerPools.values())t.destroy();this.workerPools=new Map}setProps(t){this.props={...this.props,...t};for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(t){let{name:r,source:n,url:s}=t,i=this.workerPools.get(r);return i||(i=new Pf({name:r,source:n,url:s}),i.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,i)),i}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}},di=xo;X(di,"_workerFarm");function A2(e,t={}){let r=t[e.id]||{},n=Fe?`${e.id}-worker.js`:`${e.id}-worker-node.js`,s=r.workerUrl;if(!s&&e.id==="compression"&&(s=t.workerUrl),t._workerType==="test"&&(Fe?s=`modules/${e.module}/dist/${n}`:s=`modules/${e.module}/src/workers/${e.id}-worker-node.ts`),!s){let i=e.version;i==="latest"&&(i=Tw);let o=i?`@${i}`:"";s=`https://unpkg.com/@loaders.gl/${e.module}${o}/dist/${n}`}return je(s),s}function b2(e,t=Sf){je(e,"no worker provided");let r=e.version;return!(!t||!r)}var T2={};async function Gn(e,t=null,r={},n=null){return t&&(e=Pw(e,t,r,n)),T2[e]=T2[e]||xj(e),await T2[e]}function Pw(e,t,r={},n=null){if(!r.useLocalLibraries&&e.startsWith("http"))return e;n=n||e;let s=r.modules||{};return s[n]?s[n]:Fe?r.CDN?(je(r.CDN.startsWith("http")),`${r.CDN}/${t}@${Sf}/dist/libs/${n}`):wf?`../src/libs/${n}`:`modules/${t}/src/libs/${n}`:`modules/${t}/dist/libs/${n}`}async function xj(e){if(e.endsWith("wasm"))return await yj(e);if(!Fe)try{let{requireFromFile:r}=globalThis.loaders||{};return await r?.(e)}catch(r){return console.error(r),null}if(wf)return importScripts(e);let t=await vj(e);return _j(t,e)}function _j(e,t){if(!Fe){let{requireFromString:n}=globalThis.loaders||{};return n?.(e,t)}if(wf)return eval.call(globalThis,e),null;let r=document.createElement("script");r.id=t;try{r.appendChild(document.createTextNode(e))}catch{r.text=e}return document.body.appendChild(r),null}async function yj(e){let{readFileAsArrayBuffer:t}=globalThis.loaders||{};return Fe||!t||e.startsWith("http")?await(await fetch(e)).arrayBuffer():await t(e)}async function vj(e){let{readFileAsText:t}=globalThis.loaders||{};return Fe||!t||e.startsWith("http")?await(await fetch(e)).text():await t(e)}function M2(e,t){return!di.isSupported()||!Fe&&!t?._nodeWorkers?!1:e.worker&&t?.worker}async function E2(e,t,r,n,s){let i=e.id,o=A2(e,r),c=di.getWorkerFarm(r).getWorkerPool({name:i,url:o});r=JSON.parse(JSON.stringify(r)),n=JSON.parse(JSON.stringify(n||{}));let l=await c.startJob("process-on-worker",Aj.bind(null,s));return l.postMessage("process",{input:t,options:r,context:n}),await(await l.result).result}async function Aj(e,t,r,n){switch(r){case"done":t.done(n);break;case"error":t.error(new Error(n.error));break;case"process":let{id:s,input:i,options:o}=n;try{let a=await e(i,o);t.postMessage("done",{id:s,result:a})}catch(a){let c=a instanceof Error?a.message:"unknown error";t.postMessage("error",{id:s,error:c})}break;default:console.warn(`parse-with-worker unknown message ${r}`)}}function Rw(e,t=5){return typeof e=="string"?e.slice(0,t):ArrayBuffer.isView(e)?Iw(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?Iw(e,0,t):""}function Iw(e,t,r){if(e.byteLength<=t+r)return"";let n=new DataView(e),s="";for(let i=0;i<r;i++)s+=String.fromCharCode(n.getUint8(t+i));return s}function S2(e){try{return JSON.parse(e)}catch{throw new Error(`Failed to parse JSON from data starting with "${Rw(e)}"`)}}function w2(e,t,r){if(r=r||e.byteLength,e.byteLength<r||t.byteLength<r)return!1;let n=new Uint8Array(e),s=new Uint8Array(t);for(let i=0;i<n.length;++i)if(n[i]!==s[i])return!1;return!0}function C2(...e){return Ow(e)}function Ow(e){let t=e.map(i=>i instanceof ArrayBuffer?new Uint8Array(i):i),r=t.reduce((i,o)=>i+o.byteLength,0),n=new Uint8Array(r),s=0;for(let i of t)n.set(i,s),s+=i.byteLength;return n.buffer}function If(...e){let t=e,r=t&&t.length>1&&t[0].constructor||null;if(!r)throw new Error('"concatenateTypedArrays" - incorrect quantity of arguments or arguments have incompatible data types');let n=t.reduce((o,a)=>o+a.length,0),s=new r(n),i=0;for(let o of t)s.set(o,i),i+=o.length;return s}function _o(e,t,r){let n=r!==void 0?new Uint8Array(e).subarray(t,t+r):new Uint8Array(e).subarray(t);return new Uint8Array(n).buffer}function pi(e,t){return pt(e>=0),pt(t>0),e+(t-1)&~(t-1)}function P2(e,t,r){let n;if(e instanceof ArrayBuffer)n=new Uint8Array(e);else{let s=e.byteOffset,i=e.byteLength;n=new Uint8Array(e.buffer||e.arrayBuffer,s,i)}return t.set(n,r),r+pi(n.byteLength,4)}async function I2(e){let t=[];for await(let r of e)t.push(r);return C2(...t)}vo();var bj="Queued Requests",Tj="Active Requests",Mj="Cancelled Requests",Ej="Queued Requests Ever",Sj="Active Requests Ever",wj={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},mi=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(t={}){this.props={...wj,...t},this.stats=new Ze({id:this.props.id}),this.stats.get(bj),this.stats.get(Tj),this.stats.get(Mj),this.stats.get(Ej),this.stats.get(Sj)}scheduleRequest(t,r=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let n={handle:t,priority:0,getPriority:r},s=new Promise(i=>(n.resolve=i,n));return this.requestQueue.push(n),this.requestMap.set(t,s),this._issueNewRequests(),s}_issueRequest(t){let{handle:r,resolve:n}=t,s=!1,i=()=>{s||(s=!0,this.requestMap.delete(r),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,n?n({done:i}):Promise.resolve({done:i})}_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 t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let r=0;r<t;++r){let n=this.requestQueue.shift();n&&this._issueRequest(n)}}}_updateAllRequests(){let t=this.requestQueue;for(let r=0;r<t.length;++r){let n=t[r];this._updateRequest(n)||(t.splice(r,1),this.requestMap.delete(n.handle),r--)}t.sort((r,n)=>r.priority-n.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var Cj="",Bw={};function L2(e){for(let t in Bw)if(e.startsWith(t)){let r=Bw[t];e=e.replace(t,r)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${Cj}${e}`),e}function Nw(e){return e&&typeof e=="object"&&e.isBuffer}function lm(e){if(Nw(e))return e;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if(typeof e=="string"){let t=e;return new TextEncoder().encode(t).buffer}if(e&&typeof e=="object"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}var Fr={};Yt(Fr,{dirname:()=>Ij,filename:()=>Pj,join:()=>Rj,resolve:()=>Oj});function Fw(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function Pj(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):""}function Ij(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}function Rj(...e){let t="/";return e=e.map((r,n)=>(n&&(r=r.replace(new RegExp(`^${t}`),"")),n!==e.length-1&&(r=r.replace(new RegExp(`${t}$`),"")),r)),e.join(t)}function Oj(...e){let t=[];for(let i=0;i<e.length;i++)t[i]=e[i];let r="",n=!1,s;for(let i=t.length-1;i>=-1&&!n;i--){let o;i>=0?o=t[i]:(s===void 0&&(s=Fw()),o=s),o.length!==0&&(r=`${o}/${r}`,n=o.charCodeAt(0)===Of)}return r=Lj(r,!n),n?`/${r}`:r.length>0?r:"."}var Of=47,B2=46;function Lj(e,t){let r="",n=-1,s=0,i,o=!1;for(let a=0;a<=e.length;++a){if(a<e.length)i=e.charCodeAt(a);else{if(i===Of)break;i=Of}if(i===Of){if(!(n===a-1||s===1))if(n!==a-1&&s===2){if(r.length<2||!o||r.charCodeAt(r.length-1)!==B2||r.charCodeAt(r.length-2)!==B2){if(r.length>2){let c=r.length-1,l=c;for(;l>=0&&r.charCodeAt(l)!==Of;--l);if(l!==c){r=l===-1?"":r.slice(0,l),n=a,s=0,o=!1;continue}}else if(r.length===2||r.length===1){r="",n=a,s=0,o=!1;continue}}t&&(r.length>0?r+="/..":r="..",o=!0)}else{let c=e.slice(n+1,a);r.length>0?r+=`/${c}`:r=c,o=!1}n=a,s=0}else i===B2&&s!==-1?++s:s=-1}return r}var fm=class{fetch;loadOptions;_needsRefresh=!0;props;constructor(t){this.props={...t},this.loadOptions={...t.loadOptions},this.fetch=Bj(this.loadOptions)}setProps(t){this.props=Object.assign(this.props,t),this.setNeedsRefresh()}setNeedsRefresh(){this._needsRefresh=!0}getNeedsRefresh(t=!0){let r=this._needsRefresh;return t&&(this._needsRefresh=!1),r}};function Bj(e){let t=e?.fetch;if(t&&typeof t=="function")return(n,s)=>t(n,s);let r=e?.fetch;return r&&typeof r!="function"?n=>fetch(n,r):n=>fetch(n)}var qr=class extends fm{};X(qr,"type","template"),X(qr,"testURL",t=>!1);var Nj=e=>typeof e=="boolean",Lf=e=>typeof e=="function",Ao=e=>e!==null&&typeof e=="object",N2=e=>Ao(e)&&e.constructor==={}.constructor;var Dw=e=>Boolean(e)&&typeof e[Symbol.iterator]=="function",kw=e=>e&&typeof e[Symbol.asyncIterator]=="function";var $r=e=>typeof Response<"u"&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json;var Xr=e=>typeof Blob<"u"&&e instanceof Blob,Uw=e=>e&&typeof e=="object"&&e.isBuffer;var Fj=e=>typeof ReadableStream<"u"&&e instanceof ReadableStream||Ao(e)&&Lf(e.tee)&&Lf(e.cancel)&&Lf(e.getReader);var Dj=e=>Ao(e)&&Lf(e.read)&&Lf(e.pipe)&&Nj(e.readable),hm=e=>Fj(e)||Dj(e);var um=class extends Error{constructor(t,r){super(t),this.reason=r.reason,this.url=r.url,this.response=r.response}reason;url;response};var kj=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,Uj=/^([-\w.]+\/[-\w.+]+)/;function F2(e,t){return e.toLowerCase()===t.toLowerCase()}function Vw(e){let t=Uj.exec(e);return t?t[1]:e}function D2(e){let t=kj.exec(e);return t?t[1]:""}var zw=/\?.*/;function Ww(e){let t=e.match(zw);return t&&t[0]}function Ja(e){return e.replace(zw,"")}function Hw(e){if(e.length<50)return e;let t=e.slice(e.length-15);return`${e.substr(0,32)}...${t}`}function bo(e){return $r(e)?e.url:Xr(e)?e.name||"":typeof e=="string"?e:""}function Bf(e){if($r(e)){let t=e,r=t.headers.get("content-type")||"",n=Ja(t.url);return Vw(r)||D2(n)}return Xr(e)?e.type||"":typeof e=="string"?D2(e):""}function Gw(e){return $r(e)?e.headers["content-length"]||-1:Xr(e)?e.size:typeof e=="string"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}async function dm(e){if($r(e))return e;let t={},r=Gw(e);r>=0&&(t["content-length"]=String(r));let n=bo(e),s=Bf(e);s&&(t["content-type"]=s);let i=await zj(e);i&&(t["x-first-bytes"]=i),typeof e=="string"&&(e=new TextEncoder().encode(e));let o=new Response(e,{headers:t});return Object.defineProperty(o,"url",{value:n}),o}async function jw(e){if(!e.ok)throw await Vj(e)}async function Vj(e){let t=Hw(e.url),r=`Failed to fetch resource (${e.status}) ${e.statusText}: ${t}`;r=r.length>100?`${r.slice(0,100)}...`:r;let n={reason:e.statusText,url:e.url,response:e};try{let s=e.headers.get("Content-Type");n.reason=s?.includes("application/json")?await e.json():e.text()}catch{}return new um(r,n)}async function zj(e){if(typeof e=="string")return`data:,${e.slice(0,5)}`;if(e instanceof Blob){let r=e.slice(0,5);return await new Promise(n=>{let s=new FileReader;s.onload=i=>n(i?.target?.result),s.readAsDataURL(r)})}if(e instanceof ArrayBuffer){let r=e.slice(0,5);return`data:base64,${Wj(r)}`}return null}function Wj(e){let t="",r=new Uint8Array(e);for(let n=0;n<r.byteLength;n++)t+=String.fromCharCode(r[n]);return btoa(t)}function Hj(e){return!Gj(e)&&!jj(e)}function Gj(e){return e.startsWith("http:")||e.startsWith("https:")}function jj(e){return e.startsWith("data:")}async function Qa(e,t){if(typeof e=="string"){let r=L2(e);return Hj(r)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,t):await fetch(r,t)}return await dm(e)}Ka();var k2=new Mr({id:"loaders.gl"}),pm=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},mm=class{console;constructor(){this.console=console}log(...t){return this.console.log.bind(this.console,...t)}info(...t){return this.console.info.bind(this.console,...t)}warn(...t){return this.console.warn.bind(this.console,...t)}error(...t){return this.console.error.bind(this.console,...t)}};var U2={fetch:null,mimeType:void 0,nothrow:!1,log:new mm,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:Ts,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},qw={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 V2(){globalThis.loaders=globalThis.loaders||{};let{loaders:e}=globalThis;return e._state||(e._state={}),e._state}function z2(){let e=V2();return e.globalOptions=e.globalOptions||{...U2},e.globalOptions}function Yw(e,t,r,n){return r=r||[],r=Array.isArray(r)?r:[r],qj(e,r),Xj(t,e,n)}function qj(e,t){$w(e,null,U2,qw,t);for(let r of t){let n=e&&e[r.id]||{},s=r.options&&r.options[r.id]||{},i=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};$w(n,r.id,s,i,t)}}function $w(e,t,r,n,s){let i=t||"Top level",o=t?`${t}.`:"";for(let a in e){let c=!t&&Ao(e[a]),l=a==="baseUri"&&!t,f=a==="workerUrl"&&t;if(!(a in r)&&!l&&!f){if(a in n)k2.warn(`${i} loader option '${o}${a}' no longer supported, use '${n[a]}'`)();else if(!c){let h=$j(a,s);k2.warn(`${i} loader option '${o}${a}' not recognized. ${h}`)()}}}}function $j(e,t){let r=e.toLowerCase(),n="";for(let s of t)for(let i in s.options){if(e===i)return`Did you mean '${s.id}.${i}'?`;let o=i.toLowerCase();(r.startsWith(o)||o.startsWith(r))&&(n=n||`Did you mean '${s.id}.${i}'?`)}return n}function Xj(e,t,r){let s={...e.options||{}};return Yj(s,r),s.log===null&&(s.log=new pm),Xw(s,z2()),Xw(s,t),s}function Xw(e,t){for(let r in t)if(r in t){let n=t[r];N2(n)&&N2(e[r])?e[r]={...e[r],...t[r]}:e[r]=t[r]}}function Yj(e,t){t&&!("baseUri"in e)&&(e.baseUri=t)}function Nf(e){return e?(Array.isArray(e)&&(e=e[0]),Array.isArray(e?.extensions)):!1}function Ff(e){pt(e,"null loader"),pt(Nf(e),"invalid loader");let t;return Array.isArray(e)&&(t=e[1],e=e[0],e={...e,options:{...e.options,...t}}),(e?.parseTextSync||e?.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}var Kw=()=>{let e=V2();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function Df(e){let t=Kw();e=Array.isArray(e)?e:[e];for(let r of e){let n=Ff(r);t.find(s=>n===s)||t.unshift(n)}}function Zw(){return Kw()}Ka();var Jw=new Mr({id:"loaders.gl"});var Kj=/\.([^.]+)$/;async function eC(e,t=[],r,n){if(!rC(e))return null;let s=Qw(e,t,{...r,nothrow:!0},n);if(s)return s;if(Xr(e)&&(e=await e.slice(0,10).arrayBuffer(),s=Qw(e,t,r,n)),!s&&!r?.nothrow)throw new Error(nC(e));return s}function Qw(e,t=[],r,n){if(!rC(e))return null;if(t&&!Array.isArray(t))return Ff(t);let s=[];t&&(s=s.concat(t)),r?.ignoreRegisteredLoaders||s.push(...Zw()),Jj(s);let i=Zj(e,s,r,n);if(!i&&!r?.nothrow)throw new Error(nC(e));return i}function Zj(e,t,r,n){let s=bo(e),i=Bf(e),o=Ja(s)||n?.url,a=null,c="";return r?.mimeType&&(a=W2(t,r?.mimeType),c=`match forced by supplied MIME type ${r?.mimeType}`),a=a||Qj(t,o),c=c||(a?`matched url ${o}`:""),a=a||W2(t,i),c=c||(a?`matched MIME type ${i}`:""),a=a||e7(t,e),c=c||(a?`matched initial data ${sC(e)}`:""),r?.fallbackMimeType&&(a=a||W2(t,r?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${i}`:"")),c&&Jw.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function rC(e){return!(e instanceof Response&&e.status===204)}function nC(e){let t=bo(e),r=Bf(e),n="No valid loader found (";n+=t?`${Fr.filename(t)}, `:"no url provided, ",n+=`MIME type: ${r?`"${r}"`:"not provided"}, `;let s=e?sC(e):"";return n+=s?` first bytes: "${s}"`:"first bytes: not available",n+=")",n}function Jj(e){for(let t of e)Ff(t)}function Qj(e,t){let r=t&&Kj.exec(t),n=r&&r[1];return n?t7(e,n):null}function t7(e,t){t=t.toLowerCase();for(let r of e)for(let n of r.extensions)if(n.toLowerCase()===t)return r;return null}function W2(e,t){for(let r of e)if(r.mimeTypes?.some(n=>F2(t,n))||F2(t,`application/x.${r.id}`))return r;return null}function e7(e,t){if(!t)return null;for(let r of e)if(typeof t=="string"){if(r7(t,r))return r}else if(ArrayBuffer.isView(t)){if(tC(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer&&tC(t,0,r))return r;return null}function r7(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some(n=>e.startsWith(n))}function tC(e,t,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(s=>n7(e,t,r,s))}function n7(e,t,r,n){if(n instanceof ArrayBuffer)return w2(n,e,n.byteLength);switch(typeof n){case"function":return n(e);case"string":let s=H2(e,t,n.length);return n===s;default:return!1}}function sC(e,t=5){return typeof e=="string"?e.slice(0,t):ArrayBuffer.isView(e)?H2(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?H2(e,0,t):""}function H2(e,t,r){if(e.byteLength<t+r)return"";let n=new DataView(e),s="";for(let i=0;i<r;i++)s+=String.fromCharCode(n.getUint8(t+i));return s}function*iC(e,t){let r=t?.chunkSize||262144,n=0,s=new TextEncoder;for(;n<e.length;){let i=Math.min(e.length-n,r),o=e.slice(n,n+i);n+=i,yield s.encode(o)}}function*oC(e,t={}){let{chunkSize:r=262144}=t,n=0;for(;n<e.byteLength;){let s=Math.min(e.byteLength-n,r),i=new ArrayBuffer(s),o=new Uint8Array(e,n,s);new Uint8Array(i).set(o),n+=s,yield i}}async function*aC(e,t){let r=t?.chunkSize||1048576,n=0;for(;n<e.size;){let s=n+r,i=await e.slice(n,s).arrayBuffer();n=s,yield i}}function G2(e,t){return Ts?s7(e,t):i7(e,t)}async function*s7(e,t){let r=e.getReader(),n;try{for(;;){let s=n||r.read();t?._streamReadAhead&&(n=r.read());let{done:i,value:o}=await s;if(i)return;yield lm(o)}}catch{r.releaseLock()}}async function*i7(e,t){for await(let r of e)yield lm(r)}function cC(e,t){if(typeof e=="string")return iC(e,t);if(e instanceof ArrayBuffer)return oC(e,t);if(Xr(e))return aC(e,t);if(hm(e))return G2(e,t);if($r(e))return G2(e.body,t);throw new Error("makeIterator")}var lC="Cannot convert supplied data type";function o7(e,t,r){if(t.text&&typeof e=="string")return e;if(Uw(e)&&(e=e.buffer),e instanceof ArrayBuffer){let n=e;return t.text&&!t.binary?new TextDecoder("utf8").decode(n):n}if(ArrayBuffer.isView(e)){if(t.text&&!t.binary)return new TextDecoder("utf8").decode(e);let n=e.buffer,s=e.byteLength||e.length;return(e.byteOffset!==0||s!==n.byteLength)&&(n=n.slice(e.byteOffset,e.byteOffset+s)),n}throw new Error(lC)}async function fC(e,t,r){let n=e instanceof ArrayBuffer||ArrayBuffer.isView(e);if(typeof e=="string"||n)return o7(e,t,r);if(Xr(e)&&(e=await dm(e)),$r(e)){let s=e;return await jw(s),t.binary?await s.arrayBuffer():await s.text()}if(hm(e)&&(e=cC(e,r)),Dw(e)||kw(e))return I2(e);throw new Error(lC)}function gm(e,t){let r=z2(),n=e||r;return typeof n.fetch=="function"?n.fetch:Ao(n.fetch)?s=>Qa(s,n.fetch):t?.fetch?t?.fetch:Qa}function hC(e,t,r){if(r)return r;let n={fetch:gm(t,e),...e};if(n.url){let s=Ja(n.url);n.baseUrl=s,n.queryString=Ww(n.url),n.filename=Fr.filename(s),n.baseUrl=Fr.dirname(s)}return Array.isArray(n.loaders)||(n.loaders=null),n}function uC(e,t){if(e&&!Array.isArray(e))return e;let r;if(e&&(r=Array.isArray(e)?e:[e]),t&&t.loaders){let n=Array.isArray(t.loaders)?t.loaders:[t.loaders];r=r?[...r,...n]:n}return r&&r.length?r:void 0}async function gi(e,t,r,n){t&&!Array.isArray(t)&&!Nf(t)&&(n=void 0,r=t,t=void 0),e=await e,r=r||{};let s=bo(e),o=uC(t,n),a=await eC(e,o,r);return a?(r=Yw(r,a,o,s),n=hC({url:s,_parse:gi,loaders:o},r,n||null),await a7(a,e,r,n)):null}async function a7(e,t,r,n){if(b2(e),r=Ef(e.options,r),$r(t)){let i=t,{ok:o,redirected:a,status:c,statusText:l,type:f,url:h}=i,u=Object.fromEntries(i.headers.entries());n.response={headers:u,ok:o,redirected:a,status:c,statusText:l,type:f,url:h}}t=await fC(t,e,r);let s=e;if(s.parseTextSync&&typeof t=="string")return s.parseTextSync(t,r,n);if(M2(e,r))return await E2(e,t,r,n,gi);if(s.parseText&&typeof t=="string")return await s.parseText(t,r,n);if(s.parse)return await s.parse(t,r,n);throw je(!s.parseSync),new Error(`${e.id} loader - no parser found and worker is disabled`)}function dC(e){switch(e.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function Ms(e){let t=1/0,r=1/0,n=1/0,s=-1/0,i=-1/0,o=-1/0,a=e.POSITION?e.POSITION.value:[],c=a&&a.length;for(let l=0;l<c;l+=3){let f=a[l],h=a[l+1],u=a[l+2];t=f<t?f:t,r=h<r?h:r,n=u<n?u:n,s=f>s?f:s,i=h>i?h:i,o=u>o?u:o}return[[t,r,n],[s,i,o]]}function j2(e,t,r){let n=dC(t.value),s=r||pC(t);return{name:e,type:{type:"fixed-size-list",listSize:t.size,children:[{name:"value",type:n}]},nullable:!1,metadata:s}}function pC(e){let t={};return"byteOffset"in e&&(t.byteOffset=e.byteOffset.toString(10)),"byteStride"in e&&(t.byteStride=e.byteStride.toString(10)),"normalized"in e&&(t.normalized=e.normalized.toString()),t}async function Me(e,t,r,n){let s,i;!Array.isArray(t)&&!Nf(t)?(s=[],i=t,n=void 0):(s=t,i=r);let o=gm(i),a=e;return typeof e=="string"&&(a=await o(e)),Xr(e)&&(a=await o(e)),Array.isArray(s)?await gi(a,s,i):await gi(a,s,i)}var mC="4.2.1";var c7=globalThis.loaders?.parseImageNode,q2=typeof Image<"u",$2=typeof ImageBitmap<"u",l7=Boolean(c7),X2=Ts?!0:l7;function gC(e){switch(e){case"auto":return $2||q2||X2;case"imagebitmap":return $2;case"image":return q2;case"data":return X2;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function xC(){if($2)return"imagebitmap";if(q2)return"image";if(X2)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function _C(e){let t=f7(e);if(!t)throw new Error("Not an image");return t}function kf(e){switch(_C(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),r=t.getContext("2d");if(!r)throw new Error("getImageData");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function f7(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&e instanceof Image?"image":e&&typeof e=="object"&&e.data&&e.width&&e.height?"data":null}var h7=/^data:image\/svg\+xml/,u7=/\.svg((\?|#).*)?$/;function xm(e){return e&&(h7.test(e)||u7.test(e))}function yC(e,t){if(xm(t)){let n=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(i){throw new Error(i.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return Y2(e,t)}function Y2(e,t){if(xm(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function _m(e,t,r){let n=yC(e,r),s=self.URL||self.webkitURL,i=typeof n!="string"&&s.createObjectURL(n);try{return await d7(i||n,t)}finally{i&&s.revokeObjectURL(i)}}async function d7(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((n,s)=>{try{r.onload=()=>n(r),r.onerror=i=>{let o=i instanceof Error?i.message:"error";s(new Error(o))}}catch(i){s(i)}})}var p7={},vC=!0;async function AC(e,t,r){let n;xm(r)?n=await _m(e,t,r):n=Y2(e,r);let s=t&&t.imagebitmap;return await m7(n,s)}async function m7(e,t=null){if((g7(t)||!vC)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),vC=!1}return await createImageBitmap(e)}function g7(e){for(let t in e||p7)return!1;return!0}function bC(e){return!v7(e,"ftyp",4)||!(e[8]&96)?null:x7(e)}function x7(e){switch(_7(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function _7(e,t,r){return String.fromCharCode(...e.slice(t,r))}function y7(e){return[...e].map(t=>t.charCodeAt(0))}function v7(e,t,r=0){let n=y7(t);for(let s=0;s<n.length;++s)if(n[s]!==e[s+r])return!1;return!0}var jn=!1,Uf=!0;function To(e){let t=Vf(e);return b7(t)||E7(t)||T7(t)||M7(t)||A7(t)}function A7(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=bC(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function b7(e){let t=Vf(e);return t.byteLength>=24&&t.getUint32(0,jn)===2303741511?{mimeType:"image/png",width:t.getUint32(16,jn),height:t.getUint32(20,jn)}:null}function T7(e){let t=Vf(e);return t.byteLength>=10&&t.getUint32(0,jn)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,Uf),height:t.getUint16(8,Uf)}:null}function M7(e){let t=Vf(e);return t.byteLength>=14&&t.getUint16(0,jn)===16973&&t.getUint32(2,Uf)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,Uf),height:t.getUint32(22,Uf)}:null}function E7(e){let t=Vf(e);if(!(t.byteLength>=3&&t.getUint16(0,jn)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:s}=S7(),i=2;for(;i+9<t.byteLength;){let o=t.getUint16(i,jn);if(s.has(o))return{mimeType:"image/jpeg",height:t.getUint16(i+5,jn),width:t.getUint16(i+7,jn)};if(!n.has(o))return null;i+=2,i+=t.getUint16(i,jn)}return null}function S7(){let e=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)e.add(r);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function Vf(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}async function TC(e,t){let{mimeType:r}=To(e)||{},n=globalThis.loaders?.parseImageNode;return pt(n),await n(e,r)}async function MC(e,t,r){t=t||{};let s=(t.image||{}).type||"auto",{url:i}=r||{},o=w7(s),a;switch(o){case"imagebitmap":a=await AC(e,t,i);break;case"image":a=await _m(e,t,i);break;case"data":a=await TC(e,t);break;default:pt(!1)}return s==="data"&&(a=kf(a)),a}function w7(e){switch(e){case"auto":case"data":return xC();default:return gC(e),e}}var C7=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],P7=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],I7={image:{type:"auto",decode:!0}},qn={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:mC,mimeTypes:P7,extensions:C7,parse:MC,tests:[e=>Boolean(To(new DataView(e)))],options:I7};var K2={};function Z2(e){if(K2[e]===void 0){let t=Ts?O7(e):R7(e);K2[e]=t}return K2[e]}function R7(e){let t=["image/png","image/jpeg","image/gif"],r=globalThis.loaders?.imageFormatsNode||t,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&r.includes(e)}function O7(e){switch(e){case"image/avif":case"image/webp":return L7(e);default:return!0}}function L7(e){try{return document.createElement("canvas").toDataURL(e).indexOf(`data:${e}`)===0}catch{return!1}}Ka();var B7=new Mr({id:"deck"}),H=B7;var J2={};function ym(e){J2=e}function ae(e,t,r,n){H.level>0&&J2[e]&&J2[e].call(null,t,r,n)}function N7(e){let t=e[0],r=e[e.length-1];return t==="{"&&r==="}"||t==="["&&r==="]"}var EC={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:N7,parseTextSync:JSON.parse};function F7(){let e="9.2.3",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==e)throw new Error(`deck.gl - multiple versions detected: ${t} vs ${e}`);return t||(H.log(1,`deck.gl ${e}`)(),globalThis.deck={...globalThis.deck,VERSION:e,version:e,log:H,_registerLoggers:ym},Df([EC,[qn,{imagebitmap:{premultiplyAlpha:"none"}}]])),e}var vm=F7();function Am(e,t){if(!e)throw new Error(t||"shadertools: assertion failed.")}var Q2={number:{type:"number",validate(e,t){return Number.isFinite(e)&&typeof t=="object"&&(t.max===void 0||e<=t.max)&&(t.min===void 0||e>=t.min)}},array:{type:"array",validate(e,t){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function wC(e){let t={};for(let[r,n]of Object.entries(e))t[r]=D7(n);return t}function D7(e){let t=SC(e);if(t!=="object")return{value:e,...Q2[t],type:t};if(typeof e=="object")return e?e.type!==void 0?{...e,...Q2[e.type],type:e.type}:e.value===void 0?{type:"object",value:e}:(t=SC(e.value),{...e,...Q2[t],type:t}):{type:"object",value:null};throw new Error("props")}function SC(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}var CC=`#ifdef MODULE_LOGDEPTH
|
|
29
|
+
}`}function y2(e,t=!0,r){let n=r||new Set;if(e){if(Cw(e))n.add(e);else if(Cw(e.buffer))n.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(t&&typeof e=="object")for(let s in e)y2(e[s],t,n)}}return r===void 0?Array.from(n):[]}function Cw(e){return e?e instanceof ArrayBuffer||typeof MessagePort<"u"&&e instanceof MessagePort||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas:!1}var v2=()=>{},ui=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL="";static isSupported(){return typeof Worker<"u"&&Fe||typeof Za<"u"&&!Fe}constructor(t){let{name:r,source:n,url:s}=t;je(n||s),this.name=r,this.source=n,this.url=s,this.onMessage=v2,this.onError=i=>console.log(i),this.worker=Fe?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=v2,this.onError=v2,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(t,r){r=r||y2(t),this.worker.postMessage(t,r)}_getErrorFromErrorEvent(t){let r="Failed to load ";return r+=`worker ${this.name} from ${this.url}. `,t.message&&(r+=`${t.message} in `),t.lineno&&(r+=`:${t.lineno}:${t.colno}`),new Error(r)}_createBrowserWorker(){this._loadableURL=Sw({source:this.source,url:this.url});let t=new Worker(this._loadableURL,{name:this.name});return t.onmessage=r=>{r.data?this.onMessage(r.data):this.onError(new Error("No data received"))},t.onerror=r=>{this.onError(this._getErrorFromErrorEvent(r)),this.terminated=!0},t.onmessageerror=r=>console.error(r),t}_createNodeWorker(){let t;if(this.url){let n=this.url.includes(":/")||this.url.startsWith("/")?this.url:`./${this.url}`;t=new Za(n,{eval:!1})}else if(this.source)t=new Za(this.source,{eval:!0});else throw new Error("no worker");return t.on("message",r=>{this.onMessage(r)}),t.on("error",r=>{this.onError(r)}),t.on("exit",r=>{}),t}};var Pf=class{name="unnamed";source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return ui.isSupported()}constructor(t){this.source=t.source,this.url=t.url,this.setProps(t)}destroy(){this.idleQueue.forEach(t=>t.destroy()),this.isDestroyed=!0}setProps(t){this.props={...this.props,...t},t.name!==void 0&&(this.name=t.name),t.maxConcurrency!==void 0&&(this.maxConcurrency=t.maxConcurrency),t.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=t.maxMobileConcurrency),t.reuseWorkers!==void 0&&(this.reuseWorkers=t.reuseWorkers),t.onDebug!==void 0&&(this.onDebug=t.onDebug)}async startJob(t,r=(s,i,o)=>s.done(o),n=(s,i)=>s.error(i)){let s=new Promise(i=>(this.jobQueue.push({name:t,onMessage:r,onError:n,onStart:i}),this));return this._startQueuedJob(),await s}async _startQueuedJob(){if(!this.jobQueue.length)return;let t=this._getAvailableWorker();if(!t)return;let r=this.jobQueue.shift();if(r){this.onDebug({message:"Starting job",name:r.name,workerThread:t,backlog:this.jobQueue.length});let n=new Cf(r.name,t);t.onMessage=s=>r.onMessage(n,s.type,s.payload),t.onError=s=>r.onError(n,s),r.onStart(n);try{await n.result}catch(s){console.error(`Worker exception: ${s}`)}finally{this.returnWorkerToQueue(t)}}}returnWorkerToQueue(t){!Fe||this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(t.destroy(),this.count--):this.idleQueue.push(t),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count<this._getMaxConcurrency()){this.count++;let t=`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`;return new ui({name:t,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return Ew?this.maxMobileConcurrency:this.maxConcurrency}};var gj={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}},xo=class{props;workerPools=new Map;static isSupported(){return ui.isSupported()}static getWorkerFarm(t={}){return xo._workerFarm=xo._workerFarm||new xo({}),xo._workerFarm.setProps(t),xo._workerFarm}constructor(t){this.props={...gj},this.setProps(t),this.workerPools=new Map}destroy(){for(let t of this.workerPools.values())t.destroy();this.workerPools=new Map}setProps(t){this.props={...this.props,...t};for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(t){let{name:r,source:n,url:s}=t,i=this.workerPools.get(r);return i||(i=new Pf({name:r,source:n,url:s}),i.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,i)),i}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}},di=xo;X(di,"_workerFarm");function A2(e,t={}){let r=t[e.id]||{},n=Fe?`${e.id}-worker.js`:`${e.id}-worker-node.js`,s=r.workerUrl;if(!s&&e.id==="compression"&&(s=t.workerUrl),t._workerType==="test"&&(Fe?s=`modules/${e.module}/dist/${n}`:s=`modules/${e.module}/src/workers/${e.id}-worker-node.ts`),!s){let i=e.version;i==="latest"&&(i=Tw);let o=i?`@${i}`:"";s=`https://unpkg.com/@loaders.gl/${e.module}${o}/dist/${n}`}return je(s),s}function b2(e,t=Sf){je(e,"no worker provided");let r=e.version;return!(!t||!r)}var T2={};async function Gn(e,t=null,r={},n=null){return t&&(e=Pw(e,t,r,n)),T2[e]=T2[e]||xj(e),await T2[e]}function Pw(e,t,r={},n=null){if(!r.useLocalLibraries&&e.startsWith("http"))return e;n=n||e;let s=r.modules||{};return s[n]?s[n]:Fe?r.CDN?(je(r.CDN.startsWith("http")),`${r.CDN}/${t}@${Sf}/dist/libs/${n}`):wf?`../src/libs/${n}`:`modules/${t}/src/libs/${n}`:`modules/${t}/dist/libs/${n}`}async function xj(e){if(e.endsWith("wasm"))return await yj(e);if(!Fe)try{let{requireFromFile:r}=globalThis.loaders||{};return await r?.(e)}catch(r){return console.error(r),null}if(wf)return importScripts(e);let t=await vj(e);return _j(t,e)}function _j(e,t){if(!Fe){let{requireFromString:n}=globalThis.loaders||{};return n?.(e,t)}if(wf)return eval.call(globalThis,e),null;let r=document.createElement("script");r.id=t;try{r.appendChild(document.createTextNode(e))}catch{r.text=e}return document.body.appendChild(r),null}async function yj(e){let{readFileAsArrayBuffer:t}=globalThis.loaders||{};return Fe||!t||e.startsWith("http")?await(await fetch(e)).arrayBuffer():await t(e)}async function vj(e){let{readFileAsText:t}=globalThis.loaders||{};return Fe||!t||e.startsWith("http")?await(await fetch(e)).text():await t(e)}function M2(e,t){return!di.isSupported()||!Fe&&!t?._nodeWorkers?!1:e.worker&&t?.worker}async function E2(e,t,r,n,s){let i=e.id,o=A2(e,r),c=di.getWorkerFarm(r).getWorkerPool({name:i,url:o});r=JSON.parse(JSON.stringify(r)),n=JSON.parse(JSON.stringify(n||{}));let l=await c.startJob("process-on-worker",Aj.bind(null,s));return l.postMessage("process",{input:t,options:r,context:n}),await(await l.result).result}async function Aj(e,t,r,n){switch(r){case"done":t.done(n);break;case"error":t.error(new Error(n.error));break;case"process":let{id:s,input:i,options:o}=n;try{let a=await e(i,o);t.postMessage("done",{id:s,result:a})}catch(a){let c=a instanceof Error?a.message:"unknown error";t.postMessage("error",{id:s,error:c})}break;default:console.warn(`parse-with-worker unknown message ${r}`)}}function Rw(e,t=5){return typeof e=="string"?e.slice(0,t):ArrayBuffer.isView(e)?Iw(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?Iw(e,0,t):""}function Iw(e,t,r){if(e.byteLength<=t+r)return"";let n=new DataView(e),s="";for(let i=0;i<r;i++)s+=String.fromCharCode(n.getUint8(t+i));return s}function S2(e){try{return JSON.parse(e)}catch{throw new Error(`Failed to parse JSON from data starting with "${Rw(e)}"`)}}function w2(e,t,r){if(r=r||e.byteLength,e.byteLength<r||t.byteLength<r)return!1;let n=new Uint8Array(e),s=new Uint8Array(t);for(let i=0;i<n.length;++i)if(n[i]!==s[i])return!1;return!0}function C2(...e){return Ow(e)}function Ow(e){let t=e.map(i=>i instanceof ArrayBuffer?new Uint8Array(i):i),r=t.reduce((i,o)=>i+o.byteLength,0),n=new Uint8Array(r),s=0;for(let i of t)n.set(i,s),s+=i.byteLength;return n.buffer}function If(...e){let t=e,r=t&&t.length>1&&t[0].constructor||null;if(!r)throw new Error('"concatenateTypedArrays" - incorrect quantity of arguments or arguments have incompatible data types');let n=t.reduce((o,a)=>o+a.length,0),s=new r(n),i=0;for(let o of t)s.set(o,i),i+=o.length;return s}function _o(e,t,r){let n=r!==void 0?new Uint8Array(e).subarray(t,t+r):new Uint8Array(e).subarray(t);return new Uint8Array(n).buffer}function pi(e,t){return pt(e>=0),pt(t>0),e+(t-1)&~(t-1)}function P2(e,t,r){let n;if(e instanceof ArrayBuffer)n=new Uint8Array(e);else{let s=e.byteOffset,i=e.byteLength;n=new Uint8Array(e.buffer||e.arrayBuffer,s,i)}return t.set(n,r),r+pi(n.byteLength,4)}async function I2(e){let t=[];for await(let r of e)t.push(r);return C2(...t)}vo();var bj="Queued Requests",Tj="Active Requests",Mj="Cancelled Requests",Ej="Queued Requests Ever",Sj="Active Requests Ever",wj={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},mi=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(t={}){this.props={...wj,...t},this.stats=new Ze({id:this.props.id}),this.stats.get(bj),this.stats.get(Tj),this.stats.get(Mj),this.stats.get(Ej),this.stats.get(Sj)}scheduleRequest(t,r=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let n={handle:t,priority:0,getPriority:r},s=new Promise(i=>(n.resolve=i,n));return this.requestQueue.push(n),this.requestMap.set(t,s),this._issueNewRequests(),s}_issueRequest(t){let{handle:r,resolve:n}=t,s=!1,i=()=>{s||(s=!0,this.requestMap.delete(r),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,n?n({done:i}):Promise.resolve({done:i})}_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 t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let r=0;r<t;++r){let n=this.requestQueue.shift();n&&this._issueRequest(n)}}}_updateAllRequests(){let t=this.requestQueue;for(let r=0;r<t.length;++r){let n=t[r];this._updateRequest(n)||(t.splice(r,1),this.requestMap.delete(n.handle),r--)}t.sort((r,n)=>r.priority-n.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var Cj="",Bw={};function L2(e){for(let t in Bw)if(e.startsWith(t)){let r=Bw[t];e=e.replace(t,r)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e=`${Cj}${e}`),e}function Nw(e){return e&&typeof e=="object"&&e.isBuffer}function lm(e){if(Nw(e))return e;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if(typeof e=="string"){let t=e;return new TextEncoder().encode(t).buffer}if(e&&typeof e=="object"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}var Fr={};Yt(Fr,{dirname:()=>Ij,filename:()=>Pj,join:()=>Rj,resolve:()=>Oj});function Fw(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function Pj(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):""}function Ij(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}function Rj(...e){let t="/";return e=e.map((r,n)=>(n&&(r=r.replace(new RegExp(`^${t}`),"")),n!==e.length-1&&(r=r.replace(new RegExp(`${t}$`),"")),r)),e.join(t)}function Oj(...e){let t=[];for(let i=0;i<e.length;i++)t[i]=e[i];let r="",n=!1,s;for(let i=t.length-1;i>=-1&&!n;i--){let o;i>=0?o=t[i]:(s===void 0&&(s=Fw()),o=s),o.length!==0&&(r=`${o}/${r}`,n=o.charCodeAt(0)===Of)}return r=Lj(r,!n),n?`/${r}`:r.length>0?r:"."}var Of=47,B2=46;function Lj(e,t){let r="",n=-1,s=0,i,o=!1;for(let a=0;a<=e.length;++a){if(a<e.length)i=e.charCodeAt(a);else{if(i===Of)break;i=Of}if(i===Of){if(!(n===a-1||s===1))if(n!==a-1&&s===2){if(r.length<2||!o||r.charCodeAt(r.length-1)!==B2||r.charCodeAt(r.length-2)!==B2){if(r.length>2){let c=r.length-1,l=c;for(;l>=0&&r.charCodeAt(l)!==Of;--l);if(l!==c){r=l===-1?"":r.slice(0,l),n=a,s=0,o=!1;continue}}else if(r.length===2||r.length===1){r="",n=a,s=0,o=!1;continue}}t&&(r.length>0?r+="/..":r="..",o=!0)}else{let c=e.slice(n+1,a);r.length>0?r+=`/${c}`:r=c,o=!1}n=a,s=0}else i===B2&&s!==-1?++s:s=-1}return r}var fm=class{fetch;loadOptions;_needsRefresh=!0;props;constructor(t){this.props={...t},this.loadOptions={...t.loadOptions},this.fetch=Bj(this.loadOptions)}setProps(t){this.props=Object.assign(this.props,t),this.setNeedsRefresh()}setNeedsRefresh(){this._needsRefresh=!0}getNeedsRefresh(t=!0){let r=this._needsRefresh;return t&&(this._needsRefresh=!1),r}};function Bj(e){let t=e?.fetch;if(t&&typeof t=="function")return(n,s)=>t(n,s);let r=e?.fetch;return r&&typeof r!="function"?n=>fetch(n,r):n=>fetch(n)}var qr=class extends fm{};X(qr,"type","template"),X(qr,"testURL",t=>!1);var Nj=e=>typeof e=="boolean",Lf=e=>typeof e=="function",Ao=e=>e!==null&&typeof e=="object",N2=e=>Ao(e)&&e.constructor==={}.constructor;var Dw=e=>Boolean(e)&&typeof e[Symbol.iterator]=="function",kw=e=>e&&typeof e[Symbol.asyncIterator]=="function";var $r=e=>typeof Response<"u"&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json;var Xr=e=>typeof Blob<"u"&&e instanceof Blob,Uw=e=>e&&typeof e=="object"&&e.isBuffer;var Fj=e=>typeof ReadableStream<"u"&&e instanceof ReadableStream||Ao(e)&&Lf(e.tee)&&Lf(e.cancel)&&Lf(e.getReader);var Dj=e=>Ao(e)&&Lf(e.read)&&Lf(e.pipe)&&Nj(e.readable),hm=e=>Fj(e)||Dj(e);var um=class extends Error{constructor(t,r){super(t),this.reason=r.reason,this.url=r.url,this.response=r.response}reason;url;response};var kj=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,Uj=/^([-\w.]+\/[-\w.+]+)/;function F2(e,t){return e.toLowerCase()===t.toLowerCase()}function Vw(e){let t=Uj.exec(e);return t?t[1]:e}function D2(e){let t=kj.exec(e);return t?t[1]:""}var zw=/\?.*/;function Ww(e){let t=e.match(zw);return t&&t[0]}function Ja(e){return e.replace(zw,"")}function Hw(e){if(e.length<50)return e;let t=e.slice(e.length-15);return`${e.substr(0,32)}...${t}`}function bo(e){return $r(e)?e.url:Xr(e)?e.name||"":typeof e=="string"?e:""}function Bf(e){if($r(e)){let t=e,r=t.headers.get("content-type")||"",n=Ja(t.url);return Vw(r)||D2(n)}return Xr(e)?e.type||"":typeof e=="string"?D2(e):""}function Gw(e){return $r(e)?e.headers["content-length"]||-1:Xr(e)?e.size:typeof e=="string"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}async function dm(e){if($r(e))return e;let t={},r=Gw(e);r>=0&&(t["content-length"]=String(r));let n=bo(e),s=Bf(e);s&&(t["content-type"]=s);let i=await zj(e);i&&(t["x-first-bytes"]=i),typeof e=="string"&&(e=new TextEncoder().encode(e));let o=new Response(e,{headers:t});return Object.defineProperty(o,"url",{value:n}),o}async function jw(e){if(!e.ok)throw await Vj(e)}async function Vj(e){let t=Hw(e.url),r=`Failed to fetch resource (${e.status}) ${e.statusText}: ${t}`;r=r.length>100?`${r.slice(0,100)}...`:r;let n={reason:e.statusText,url:e.url,response:e};try{let s=e.headers.get("Content-Type");n.reason=s?.includes("application/json")?await e.json():e.text()}catch{}return new um(r,n)}async function zj(e){if(typeof e=="string")return`data:,${e.slice(0,5)}`;if(e instanceof Blob){let r=e.slice(0,5);return await new Promise(n=>{let s=new FileReader;s.onload=i=>n(i?.target?.result),s.readAsDataURL(r)})}if(e instanceof ArrayBuffer){let r=e.slice(0,5);return`data:base64,${Wj(r)}`}return null}function Wj(e){let t="",r=new Uint8Array(e);for(let n=0;n<r.byteLength;n++)t+=String.fromCharCode(r[n]);return btoa(t)}function Hj(e){return!Gj(e)&&!jj(e)}function Gj(e){return e.startsWith("http:")||e.startsWith("https:")}function jj(e){return e.startsWith("data:")}async function Qa(e,t){if(typeof e=="string"){let r=L2(e);return Hj(r)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(r,t):await fetch(r,t)}return await dm(e)}Ka();var k2=new Mr({id:"loaders.gl"}),pm=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}},mm=class{console;constructor(){this.console=console}log(...t){return this.console.log.bind(this.console,...t)}info(...t){return this.console.info.bind(this.console,...t)}warn(...t){return this.console.warn.bind(this.console,...t)}error(...t){return this.console.error.bind(this.console,...t)}};var U2={fetch:null,mimeType:void 0,nothrow:!1,log:new mm,useLocalLibraries:!1,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:Ts,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},qw={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 V2(){globalThis.loaders=globalThis.loaders||{};let{loaders:e}=globalThis;return e._state||(e._state={}),e._state}function z2(){let e=V2();return e.globalOptions=e.globalOptions||{...U2},e.globalOptions}function Yw(e,t,r,n){return r=r||[],r=Array.isArray(r)?r:[r],qj(e,r),Xj(t,e,n)}function qj(e,t){$w(e,null,U2,qw,t);for(let r of t){let n=e&&e[r.id]||{},s=r.options&&r.options[r.id]||{},i=r.deprecatedOptions&&r.deprecatedOptions[r.id]||{};$w(n,r.id,s,i,t)}}function $w(e,t,r,n,s){let i=t||"Top level",o=t?`${t}.`:"";for(let a in e){let c=!t&&Ao(e[a]),l=a==="baseUri"&&!t,f=a==="workerUrl"&&t;if(!(a in r)&&!l&&!f){if(a in n)k2.warn(`${i} loader option '${o}${a}' no longer supported, use '${n[a]}'`)();else if(!c){let h=$j(a,s);k2.warn(`${i} loader option '${o}${a}' not recognized. ${h}`)()}}}}function $j(e,t){let r=e.toLowerCase(),n="";for(let s of t)for(let i in s.options){if(e===i)return`Did you mean '${s.id}.${i}'?`;let o=i.toLowerCase();(r.startsWith(o)||o.startsWith(r))&&(n=n||`Did you mean '${s.id}.${i}'?`)}return n}function Xj(e,t,r){let s={...e.options||{}};return Yj(s,r),s.log===null&&(s.log=new pm),Xw(s,z2()),Xw(s,t),s}function Xw(e,t){for(let r in t)if(r in t){let n=t[r];N2(n)&&N2(e[r])?e[r]={...e[r],...t[r]}:e[r]=t[r]}}function Yj(e,t){t&&!("baseUri"in e)&&(e.baseUri=t)}function Nf(e){return e?(Array.isArray(e)&&(e=e[0]),Array.isArray(e?.extensions)):!1}function Ff(e){pt(e,"null loader"),pt(Nf(e),"invalid loader");let t;return Array.isArray(e)&&(t=e[1],e=e[0],e={...e,options:{...e.options,...t}}),(e?.parseTextSync||e?.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}var Kw=()=>{let e=V2();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function Df(e){let t=Kw();e=Array.isArray(e)?e:[e];for(let r of e){let n=Ff(r);t.find(s=>n===s)||t.unshift(n)}}function Zw(){return Kw()}Ka();var Jw=new Mr({id:"loaders.gl"});var Kj=/\.([^.]+)$/;async function eC(e,t=[],r,n){if(!rC(e))return null;let s=Qw(e,t,{...r,nothrow:!0},n);if(s)return s;if(Xr(e)&&(e=await e.slice(0,10).arrayBuffer(),s=Qw(e,t,r,n)),!s&&!r?.nothrow)throw new Error(nC(e));return s}function Qw(e,t=[],r,n){if(!rC(e))return null;if(t&&!Array.isArray(t))return Ff(t);let s=[];t&&(s=s.concat(t)),r?.ignoreRegisteredLoaders||s.push(...Zw()),Jj(s);let i=Zj(e,s,r,n);if(!i&&!r?.nothrow)throw new Error(nC(e));return i}function Zj(e,t,r,n){let s=bo(e),i=Bf(e),o=Ja(s)||n?.url,a=null,c="";return r?.mimeType&&(a=W2(t,r?.mimeType),c=`match forced by supplied MIME type ${r?.mimeType}`),a=a||Qj(t,o),c=c||(a?`matched url ${o}`:""),a=a||W2(t,i),c=c||(a?`matched MIME type ${i}`:""),a=a||e7(t,e),c=c||(a?`matched initial data ${sC(e)}`:""),r?.fallbackMimeType&&(a=a||W2(t,r?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${i}`:"")),c&&Jw.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function rC(e){return!(e instanceof Response&&e.status===204)}function nC(e){let t=bo(e),r=Bf(e),n="No valid loader found (";n+=t?`${Fr.filename(t)}, `:"no url provided, ",n+=`MIME type: ${r?`"${r}"`:"not provided"}, `;let s=e?sC(e):"";return n+=s?` first bytes: "${s}"`:"first bytes: not available",n+=")",n}function Jj(e){for(let t of e)Ff(t)}function Qj(e,t){let r=t&&Kj.exec(t),n=r&&r[1];return n?t7(e,n):null}function t7(e,t){t=t.toLowerCase();for(let r of e)for(let n of r.extensions)if(n.toLowerCase()===t)return r;return null}function W2(e,t){for(let r of e)if(r.mimeTypes?.some(n=>F2(t,n))||F2(t,`application/x.${r.id}`))return r;return null}function e7(e,t){if(!t)return null;for(let r of e)if(typeof t=="string"){if(r7(t,r))return r}else if(ArrayBuffer.isView(t)){if(tC(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer&&tC(t,0,r))return r;return null}function r7(e,t){return t.testText?t.testText(e):(Array.isArray(t.tests)?t.tests:[t.tests]).some(n=>e.startsWith(n))}function tC(e,t,r){return(Array.isArray(r.tests)?r.tests:[r.tests]).some(s=>n7(e,t,r,s))}function n7(e,t,r,n){if(n instanceof ArrayBuffer)return w2(n,e,n.byteLength);switch(typeof n){case"function":return n(e);case"string":let s=H2(e,t,n.length);return n===s;default:return!1}}function sC(e,t=5){return typeof e=="string"?e.slice(0,t):ArrayBuffer.isView(e)?H2(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?H2(e,0,t):""}function H2(e,t,r){if(e.byteLength<t+r)return"";let n=new DataView(e),s="";for(let i=0;i<r;i++)s+=String.fromCharCode(n.getUint8(t+i));return s}function*iC(e,t){let r=t?.chunkSize||262144,n=0,s=new TextEncoder;for(;n<e.length;){let i=Math.min(e.length-n,r),o=e.slice(n,n+i);n+=i,yield s.encode(o)}}function*oC(e,t={}){let{chunkSize:r=262144}=t,n=0;for(;n<e.byteLength;){let s=Math.min(e.byteLength-n,r),i=new ArrayBuffer(s),o=new Uint8Array(e,n,s);new Uint8Array(i).set(o),n+=s,yield i}}async function*aC(e,t){let r=t?.chunkSize||1048576,n=0;for(;n<e.size;){let s=n+r,i=await e.slice(n,s).arrayBuffer();n=s,yield i}}function G2(e,t){return Ts?s7(e,t):i7(e,t)}async function*s7(e,t){let r=e.getReader(),n;try{for(;;){let s=n||r.read();t?._streamReadAhead&&(n=r.read());let{done:i,value:o}=await s;if(i)return;yield lm(o)}}catch{r.releaseLock()}}async function*i7(e,t){for await(let r of e)yield lm(r)}function cC(e,t){if(typeof e=="string")return iC(e,t);if(e instanceof ArrayBuffer)return oC(e,t);if(Xr(e))return aC(e,t);if(hm(e))return G2(e,t);if($r(e))return G2(e.body,t);throw new Error("makeIterator")}var lC="Cannot convert supplied data type";function o7(e,t,r){if(t.text&&typeof e=="string")return e;if(Uw(e)&&(e=e.buffer),e instanceof ArrayBuffer){let n=e;return t.text&&!t.binary?new TextDecoder("utf8").decode(n):n}if(ArrayBuffer.isView(e)){if(t.text&&!t.binary)return new TextDecoder("utf8").decode(e);let n=e.buffer,s=e.byteLength||e.length;return(e.byteOffset!==0||s!==n.byteLength)&&(n=n.slice(e.byteOffset,e.byteOffset+s)),n}throw new Error(lC)}async function fC(e,t,r){let n=e instanceof ArrayBuffer||ArrayBuffer.isView(e);if(typeof e=="string"||n)return o7(e,t,r);if(Xr(e)&&(e=await dm(e)),$r(e)){let s=e;return await jw(s),t.binary?await s.arrayBuffer():await s.text()}if(hm(e)&&(e=cC(e,r)),Dw(e)||kw(e))return I2(e);throw new Error(lC)}function gm(e,t){let r=z2(),n=e||r;return typeof n.fetch=="function"?n.fetch:Ao(n.fetch)?s=>Qa(s,n.fetch):t?.fetch?t?.fetch:Qa}function hC(e,t,r){if(r)return r;let n={fetch:gm(t,e),...e};if(n.url){let s=Ja(n.url);n.baseUrl=s,n.queryString=Ww(n.url),n.filename=Fr.filename(s),n.baseUrl=Fr.dirname(s)}return Array.isArray(n.loaders)||(n.loaders=null),n}function uC(e,t){if(e&&!Array.isArray(e))return e;let r;if(e&&(r=Array.isArray(e)?e:[e]),t&&t.loaders){let n=Array.isArray(t.loaders)?t.loaders:[t.loaders];r=r?[...r,...n]:n}return r&&r.length?r:void 0}async function gi(e,t,r,n){t&&!Array.isArray(t)&&!Nf(t)&&(n=void 0,r=t,t=void 0),e=await e,r=r||{};let s=bo(e),o=uC(t,n),a=await eC(e,o,r);return a?(r=Yw(r,a,o,s),n=hC({url:s,_parse:gi,loaders:o},r,n||null),await a7(a,e,r,n)):null}async function a7(e,t,r,n){if(b2(e),r=Ef(e.options,r),$r(t)){let i=t,{ok:o,redirected:a,status:c,statusText:l,type:f,url:h}=i,u=Object.fromEntries(i.headers.entries());n.response={headers:u,ok:o,redirected:a,status:c,statusText:l,type:f,url:h}}t=await fC(t,e,r);let s=e;if(s.parseTextSync&&typeof t=="string")return s.parseTextSync(t,r,n);if(M2(e,r))return await E2(e,t,r,n,gi);if(s.parseText&&typeof t=="string")return await s.parseText(t,r,n);if(s.parse)return await s.parse(t,r,n);throw je(!s.parseSync),new Error(`${e.id} loader - no parser found and worker is disabled`)}function dC(e){switch(e.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function Ms(e){let t=1/0,r=1/0,n=1/0,s=-1/0,i=-1/0,o=-1/0,a=e.POSITION?e.POSITION.value:[],c=a&&a.length;for(let l=0;l<c;l+=3){let f=a[l],h=a[l+1],u=a[l+2];t=f<t?f:t,r=h<r?h:r,n=u<n?u:n,s=f>s?f:s,i=h>i?h:i,o=u>o?u:o}return[[t,r,n],[s,i,o]]}function j2(e,t,r){let n=dC(t.value),s=r||pC(t);return{name:e,type:{type:"fixed-size-list",listSize:t.size,children:[{name:"value",type:n}]},nullable:!1,metadata:s}}function pC(e){let t={};return"byteOffset"in e&&(t.byteOffset=e.byteOffset.toString(10)),"byteStride"in e&&(t.byteStride=e.byteStride.toString(10)),"normalized"in e&&(t.normalized=e.normalized.toString()),t}async function Me(e,t,r,n){let s,i;!Array.isArray(t)&&!Nf(t)?(s=[],i=t,n=void 0):(s=t,i=r);let o=gm(i),a=e;return typeof e=="string"&&(a=await o(e)),Xr(e)&&(a=await o(e)),Array.isArray(s)?await gi(a,s,i):await gi(a,s,i)}var mC="4.2.1";var c7=globalThis.loaders?.parseImageNode,q2=typeof Image<"u",$2=typeof ImageBitmap<"u",l7=Boolean(c7),X2=Ts?!0:l7;function gC(e){switch(e){case"auto":return $2||q2||X2;case"imagebitmap":return $2;case"image":return q2;case"data":return X2;default:throw new Error(`@loaders.gl/images: image ${e} not supported in this environment`)}}function xC(){if($2)return"imagebitmap";if(q2)return"image";if(X2)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function _C(e){let t=f7(e);if(!t)throw new Error("Not an image");return t}function kf(e){switch(_C(e)){case"data":return e;case"image":case"imagebitmap":let t=document.createElement("canvas"),r=t.getContext("2d");if(!r)throw new Error("getImageData");return t.width=e.width,t.height=e.height,r.drawImage(e,0,0),r.getImageData(0,0,e.width,e.height);default:throw new Error("getImageData")}}function f7(e){return typeof ImageBitmap<"u"&&e instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&e instanceof Image?"image":e&&typeof e=="object"&&e.data&&e.width&&e.height?"data":null}var h7=/^data:image\/svg\+xml/,u7=/\.svg((\?|#).*)?$/;function xm(e){return e&&(h7.test(e)||u7.test(e))}function yC(e,t){if(xm(t)){let n=new TextDecoder().decode(e);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(i){throw new Error(i.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return Y2(e,t)}function Y2(e,t){if(xm(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}async function _m(e,t,r){let n=yC(e,r),s=self.URL||self.webkitURL,i=typeof n!="string"&&s.createObjectURL(n);try{return await d7(i||n,t)}finally{i&&s.revokeObjectURL(i)}}async function d7(e,t){let r=new Image;return r.src=e,t.image&&t.image.decode&&r.decode?(await r.decode(),r):await new Promise((n,s)=>{try{r.onload=()=>n(r),r.onerror=i=>{let o=i instanceof Error?i.message:"error";s(new Error(o))}}catch(i){s(i)}})}var p7={},vC=!0;async function AC(e,t,r){let n;xm(r)?n=await _m(e,t,r):n=Y2(e,r);let s=t&&t.imagebitmap;return await m7(n,s)}async function m7(e,t=null){if((g7(t)||!vC)&&(t=null),t)try{return await createImageBitmap(e,t)}catch(r){console.warn(r),vC=!1}return await createImageBitmap(e)}function g7(e){for(let t in e||p7)return!1;return!0}function bC(e){return!v7(e,"ftyp",4)||!(e[8]&96)?null:x7(e)}function x7(e){switch(_7(e,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function _7(e,t,r){return String.fromCharCode(...e.slice(t,r))}function y7(e){return[...e].map(t=>t.charCodeAt(0))}function v7(e,t,r=0){let n=y7(t);for(let s=0;s<n.length;++s)if(n[s]!==e[s+r])return!1;return!0}var jn=!1,Uf=!0;function To(e){let t=Vf(e);return b7(t)||E7(t)||T7(t)||M7(t)||A7(t)}function A7(e){let t=new Uint8Array(e instanceof DataView?e.buffer:e),r=bC(t);return r?{mimeType:r.mimeType,width:0,height:0}:null}function b7(e){let t=Vf(e);return t.byteLength>=24&&t.getUint32(0,jn)===2303741511?{mimeType:"image/png",width:t.getUint32(16,jn),height:t.getUint32(20,jn)}:null}function T7(e){let t=Vf(e);return t.byteLength>=10&&t.getUint32(0,jn)===1195984440?{mimeType:"image/gif",width:t.getUint16(6,Uf),height:t.getUint16(8,Uf)}:null}function M7(e){let t=Vf(e);return t.byteLength>=14&&t.getUint16(0,jn)===16973&&t.getUint32(2,Uf)===t.byteLength?{mimeType:"image/bmp",width:t.getUint32(18,Uf),height:t.getUint32(22,Uf)}:null}function E7(e){let t=Vf(e);if(!(t.byteLength>=3&&t.getUint16(0,jn)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:s}=S7(),i=2;for(;i+9<t.byteLength;){let o=t.getUint16(i,jn);if(s.has(o))return{mimeType:"image/jpeg",height:t.getUint16(i+5,jn),width:t.getUint16(i+7,jn)};if(!n.has(o))return null;i+=2,i+=t.getUint16(i,jn)}return null}function S7(){let e=new Set([65499,65476,65484,65501,65534]);for(let r=65504;r<65520;++r)e.add(r);return{tableMarkers:e,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function Vf(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}async function TC(e,t){let{mimeType:r}=To(e)||{},n=globalThis.loaders?.parseImageNode;return pt(n),await n(e,r)}async function MC(e,t,r){t=t||{};let s=(t.image||{}).type||"auto",{url:i}=r||{},o=w7(s),a;switch(o){case"imagebitmap":a=await AC(e,t,i);break;case"image":a=await _m(e,t,i);break;case"data":a=await TC(e,t);break;default:pt(!1)}return s==="data"&&(a=kf(a)),a}function w7(e){switch(e){case"auto":case"data":return xC();default:return gC(e),e}}var C7=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],P7=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],I7={image:{type:"auto",decode:!0}},qn={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:mC,mimeTypes:P7,extensions:C7,parse:MC,tests:[e=>Boolean(To(new DataView(e)))],options:I7};var K2={};function Z2(e){if(K2[e]===void 0){let t=Ts?O7(e):R7(e);K2[e]=t}return K2[e]}function R7(e){let t=["image/png","image/jpeg","image/gif"],r=globalThis.loaders?.imageFormatsNode||t,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&r.includes(e)}function O7(e){switch(e){case"image/avif":case"image/webp":return L7(e);default:return!0}}function L7(e){try{return document.createElement("canvas").toDataURL(e).indexOf(`data:${e}`)===0}catch{return!1}}Ka();var B7=new Mr({id:"deck"}),H=B7;var J2={};function ym(e){J2=e}function ae(e,t,r,n){H.level>0&&J2[e]&&J2[e].call(null,t,r,n)}function N7(e){let t=e[0],r=e[e.length-1];return t==="{"&&r==="}"||t==="["&&r==="]"}var EC={dataType:null,batchType:null,id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:N7,parseTextSync:JSON.parse};function F7(){let e="9.2.4",t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==e)throw new Error(`deck.gl - multiple versions detected: ${t} vs ${e}`);return t||(H.log(1,`deck.gl ${e}`)(),globalThis.deck={...globalThis.deck,VERSION:e,version:e,log:H,_registerLoggers:ym},Df([EC,[qn,{imagebitmap:{premultiplyAlpha:"none"}}]])),e}var vm=F7();function Am(e,t){if(!e)throw new Error(t||"shadertools: assertion failed.")}var Q2={number:{type:"number",validate(e,t){return Number.isFinite(e)&&typeof t=="object"&&(t.max===void 0||e<=t.max)&&(t.min===void 0||e>=t.min)}},array:{type:"array",validate(e,t){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function wC(e){let t={};for(let[r,n]of Object.entries(e))t[r]=D7(n);return t}function D7(e){let t=SC(e);if(t!=="object")return{value:e,...Q2[t],type:t};if(typeof e=="object")return e?e.type!==void 0?{...e,...Q2[e.type],type:e.type}:e.value===void 0?{type:"object",value:e}:(t=SC(e.value),{...e,...Q2[t],type:t}):{type:"object",value:null};throw new Error("props")}function SC(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}var CC=`#ifdef MODULE_LOGDEPTH
|
|
30
30
|
logdepth_adjustPosition(gl_Position);
|
|
31
31
|
#endif
|
|
32
32
|
`,PC=`#ifdef MODULE_MATERIAL
|
|
@@ -3115,7 +3115,7 @@ void main() {
|
|
|
3115
3115
|
void main() {
|
|
3116
3116
|
fragColor = ${e}(texSrc, screen.texSize, coordinate);
|
|
3117
3117
|
}
|
|
3118
|
-
`;function bJ(e,t){if(t.filter){let r=typeof t.filter=="string"?t.filter:`${e.name}_filterColor_ext`;return vJ(r)}if(t.sampler){let r=typeof t.sampler=="string"?t.sampler:`${e.name}_sampleColor`;return AJ(r)}return""}var TJ={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"},Mn=class extends $e{constructor(){super(...arguments),this._colorEncoderState=null}render(t){return"pickingFBO"in t?this._drawPickingBuffer(t):super.render(t)}_drawPickingBuffer({layers:t,layerFilter:r,views:n,viewports:s,onViewportActive:i,pickingFBO:o,deviceRect:{x:a,y:c,width:l,height:f},cullRect:h,effects:u,pass:d="picking",pickZ:p,shaderModuleProps:m}){this.pickZ=p;let g=this._resetColorEncoder(p),x=[a,c,l,f],v=super.render({target:o,layers:t,layerFilter:r,views:n,viewports:s,onViewportActive:i,cullRect:h,effects:u?.filter(y=>y.useInPicking),pass:d,isPicking:!0,shaderModuleProps:m,clearColor:[0,0,0,0],colorMask:15,scissorRect:x});return this._colorEncoderState=null,{decodePickingColor:g&&EJ.bind(null,g),stats:v}}shouldDrawLayer(t){let{pickable:r,operation:n}=t.props;return r&&n.includes("draw")||n.includes("terrain")||n.includes("mask")}getShaderModuleProps(t,r,n){return{picking:{isActive:1,isAttribute:this.pickZ},lighting:{enabled:!1}}}getLayerParameters(t,r,n){let s={...t.props.parameters},{pickable:i,operation:o}=t.props;return!this._colorEncoderState||o.includes("terrain")?s.blend=!1:i&&o.includes("draw")&&(Object.assign(s,TJ),s.blend=!0,s.blendColor=MJ(this._colorEncoderState,t,n)),s}_resetColorEncoder(t){return this._colorEncoderState=t?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function MJ(e,t,r){let{byLayer:n,byAlpha:s}=e,i,o=n.get(t);return o?(o.viewports.push(r),i=o.a):(i=n.size+1,i<=255?(o={a:i,layer:t,viewports:[r]},n.set(t,o),s[i]=o):(H.warn("Too many pickable layers, only picking the first 255")(),i=0)),[0,0,0,i/255]}function EJ(e,t){let r=e.byAlpha[t[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(t)}}var Li={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"},Dc=Symbol.for("component"),on=Symbol.for("propTypes"),a0=Symbol.for("deprecatedProps"),Vs=Symbol.for("asyncPropDefaults"),rs=Symbol.for("asyncPropOriginal"),En=Symbol.for("asyncPropResolved");function er(e,t=()=>!0){return Array.isArray(e)?eO(e,t,[]):t(e)?[e]:[]}function eO(e,t,r){let n=-1;for(;++n<e.length;){let s=e[n];Array.isArray(s)?eO(s,t,r):t(s)&&r.push(s)}return r}function c0({target:e,source:t,start:r=0,count:n=1}){let s=t.length,i=n*s,o=0;for(let a=r;o<s;o++)e[a++]=t[o];for(;o<i;)o<i-o?(e.copyWithin(r+o,r,r+o),o*=2):(e.copyWithin(r+o,r,r+i-o),o=i);return e}vo();var Hh=class{constructor(t,r,n){this._loadCount=0,this._subscribers=new Set,this.id=t,this.context=n,this.setData(r)}subscribe(t){this._subscribers.add(t)}unsubscribe(t){this._subscribers.delete(t)}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(t,r){if(t===this._data&&!r)return;this._data=t;let n=++this._loadCount,s=t;typeof t=="string"&&(s=Me(t)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(i=>{this._loadCount===n&&(this.isLoaded=!0,this._error=void 0,this._content=i)}).catch(i=>{this._loadCount===n&&(this.isLoaded=!0,this._error=i||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=t);for(let i of this._subscribers)i.onChange(this.getData())}};var Gh=class{constructor(t){this.protocol=t.protocol||"resource://",this._context={device:t.device,gl:t.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(t){return t.startsWith(this.protocol)?!0:t in this._resources}add({resourceId:t,data:r,forceUpdate:n=!1,persistent:s=!0}){let i=this._resources[t];i?i.setData(r,n):(i=new Hh(t,r,this._context),this._resources[t]=i),i.persistent=s}remove(t){let r=this._resources[t];r&&(r.delete(),delete this._resources[t])}unsubscribe({consumerId:t}){let r=this._consumers[t];if(r){for(let n in r){let s=r[n],i=this._resources[s.resourceId];i&&i.unsubscribe(s)}delete this._consumers[t],this.prune()}}subscribe({resourceId:t,onChange:r,consumerId:n,requestId:s="default"}){let{_resources:i,protocol:o}=this;t.startsWith(o)&&(t=t.replace(o,""),i[t]||this.add({resourceId:t,data:null,persistent:!1}));let a=i[t];if(this._track(n,s,a,r),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let t in this._resources)this._resources[t].delete()}_track(t,r,n,s){let i=this._consumers,o=i[t]=i[t]||{},a=o[r],c=a&&a.resourceId&&this._resources[a.resourceId];c&&(c.unsubscribe(a),this.prune()),n&&(a?(a.onChange=s,a.resourceId=n.id):a={onChange:s,resourceId:n.id},o[r]=a,n.subscribe(a))}_prune(){this._pruneRequest=null;for(let t of Object.keys(this._resources)){let r=this._resources[t];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[t])}}};var SJ="layerManager.setLayers",wJ="layerManager.activateViewport",Xo=class{constructor(t,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{ae(wJ,this,a),a&&(this.context.viewport=a)};let{deck:n,stats:s,viewport:i,timeline:o}=r||{};this.layers=[],this.resourceManager=new Gh({device:t,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:t,gl:t?.gl,deck:n,shaderAssembler:Jg(t?.info?.shadingLanguage||"glsl"),defaultShaderModules:[KA],renderPass:void 0,stats:s||new Ze({id:"deck.gl"}),viewport:i||new Se({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:o||new jo,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let t of this.layers)this._finalizeLayer(t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);for(let n of this.layers){let s=n.getNeedsRedraw(t);r=r||s}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(t){this._needsRedraw=this._needsRedraw||t}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t}getLayers({layerIds:t}={}){return t?this.layers.filter(r=>t.find(n=>r.id.indexOf(n)===0)):this.layers}setProps(t){"debug"in t&&(this._debug=t.debug),"userData"in t&&(this.context.userData=t.userData),"layers"in t&&(this._nextLayers=t.layers),"onError"in t&&(this.context.onError=t.onError)}setLayers(t,r){ae(SJ,this,r,t),this._lastRenderedLayers=t;let n=er(t,Boolean);for(let s of n)s.context=this.context;this._updateLayers(this.layers,n)}updateLayers(){let t=this.needsUpdate();t&&(this.setNeedsRedraw(`updating layers: ${t}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,t)),this._nextLayers=null}addDefaultShaderModule(t){let{defaultShaderModules:r}=this.context;r.find(n=>n.name===t.name)||(r.push(t),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(t){let{defaultShaderModules:r}=this.context,n=r.findIndex(s=>s.name===t.name);n>=0&&(r.splice(n,1),this._defaultShaderModulesChanged=!0)}_handleError(t,r,n){n.raiseError(r,`${t} of ${n}`)}_updateLayers(t,r){let n={};for(let o of t)n[o.id]?H.warn(`Multiple old layers with same id ${o.id}`)():n[o.id]=o;if(this._defaultShaderModulesChanged){for(let o of t)o.setNeedsUpdate(),o.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let s=[];this._updateSublayersRecursively(r,n,s),this._finalizeOldLayers(n);let i=!1;for(let o of s)if(o.hasUniformTransition()){i=`Uniform transition in ${o}`;break}this._needsUpdate=i,this.layers=s}_updateSublayersRecursively(t,r,n){for(let s of t){s.context=this.context;let i=r[s.id];i===null&&H.warn(`Multiple new layers with same id ${s.id}`)(),r[s.id]=null;let o=null;try{this._debug&&i!==s&&s.validateProps(),i?(this._transferLayerState(i,s),this._updateLayer(s)):this._initializeLayer(s),n.push(s),o=s.isComposite?s.getSubLayers():null}catch(a){this._handleError("matching",a,s)}o&&this._updateSublayersRecursively(o,r,n)}}_finalizeOldLayers(t){for(let r in t){let n=t[r];n&&this._finalizeLayer(n)}}_initializeLayer(t){try{t._initialize(),t.lifecycle=Li.INITIALIZED}catch(r){this._handleError("initialization",r,t)}}_transferLayerState(t,r){r._transferState(t),r.lifecycle=Li.MATCHED,r!==t&&(t.lifecycle=Li.AWAITING_GC)}_updateLayer(t){try{t._update()}catch(r){this._handleError("update",r,t)}}_finalizeLayer(t){this._needsRedraw=this._needsRedraw||`finalized ${t}`,t.lifecycle=Li.AWAITING_FINALIZATION;try{t._finalize(),t.lifecycle=Li.FINALIZED}catch(r){this._handleError("finalization",r,t)}}};function dt(e,t,r){if(e===t)return!0;if(!r||!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!dt(e[n],t[n],r-1))return!1;return!0}if(Array.isArray(t))return!1;if(typeof e=="object"&&typeof t=="object"){let n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;for(let i of n)if(!t.hasOwnProperty(i)||!dt(e[i],t[i],r-1))return!1;return!0}return!1}var jh=class{constructor(t){this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=t.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=t.eventManager,this._eventCallbacks={onViewStateChange:t.onViewStateChange,onInteractionStateChange:t.onInteractionStateChange},Object.seal(this),this.setProps(t)}finalize(){for(let t in this.controllers){let r=this.controllers[t];r&&r.finalize()}this.controllers={}}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t,this._needsRedraw=this._needsRedraw||t}updateViewStates(){for(let t in this.controllers){let r=this.controllers[t];r&&r.updateTransition()}}getViewports(t){return t?this._viewports.filter(r=>r.containsPixel(t)):this._viewports}getViews(){let t={};return this.views.forEach(r=>{t[r.id]=r}),t}getView(t){return this.views.find(r=>r.id===t)}getViewState(t){let r=typeof t=="string"?this.getView(t):t,n=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(n):n}getViewport(t){return this._viewportMap[t]}unproject(t,r){let n=this.getViewports(),s={x:t[0],y:t[1]};for(let i=n.length-1;i>=0;--i){let o=n[i];if(o.containsPixel(s)){let a=t.slice();return a[0]-=o.x,a[1]-=o.y,o.unproject(a,r)}}return null}setProps(t){t.views&&this._setViews(t.views),t.viewState&&this._setViewState(t.viewState),("width"in t||"height"in t)&&this._setSize(t.width,t.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(t,r){(t!==this.width||r!==this.height)&&(this.width=t,this.height=r,this.setNeedsUpdate("Size changed"))}_setViews(t){t=er(t,Boolean),this._diffViews(t,this.views)&&this.setNeedsUpdate("views changed"),this.views=t}_setViewState(t){t?(!dt(t,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=t):H.warn("missing `viewState` or `initialViewState`")()}_createController(t,r){let n=r.type;return new n({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:i=>this.getView(t.id)?.makeViewport({viewState:i,width:this.width,height:this.height})})}_updateController(t,r,n,s){let i=t.controller;if(i&&n){let o={...r,...i,id:t.id,x:n.x,y:n.y,width:n.width,height:n.height};return(!s||s.constructor!==i.type)&&(s=this._createController(t,o)),s&&s.setProps(o),s}return null}_rebuildViewports(){let{views:t}=this,r=this.controllers;this._viewports=[],this.controllers={};let n=!1;for(let s=t.length;s--;){let i=t[s],o=this.getViewState(i),a=i.makeViewport({viewState:o,width:this.width,height:this.height}),c=r[i.id],l=Boolean(i.controller);l&&!c&&(n=!0),(n||!l)&&c&&(c.finalize(),c=null),this.controllers[i.id]=this._updateController(i,o,a,c),a&&this._viewports.unshift(a)}for(let s in r){let i=r[s];i&&!this.controllers[s]&&i.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(t=>{t.id&&(this._viewportMap[t.id]=this._viewportMap[t.id]||t)})}_diffViews(t,r){return t.length!==r.length?!0:t.some((n,s)=>!t[s].equals(r[s]))}};var CJ=/([0-9]+\.?[0-9]*)(%|px)/;function zs(e){switch(typeof e){case"number":return{position:e,relative:!1};case"string":let t=CJ.exec(e);if(t&&t.length>=3){let r=t[2]==="%",n=parseFloat(t[1]);return{position:r?n/100:n,relative:r}}default:throw new Error(`Could not parse position string ${e}`)}}function Ws(e,t){return e.relative?Math.round(e.position*t):e.position}var gr=class{constructor(t){let{id:r,x:n=0,y:s=0,width:i="100%",height:o="100%",padding:a=null}=t;this.id=r||this.constructor.displayName||"view",this.props={...t,id:this.id},this._x=zs(n),this._y=zs(s),this._width=zs(i),this._height=zs(o),this._padding=a&&{left:zs(a.left||0),right:zs(a.right||0),top:zs(a.top||0),bottom:zs(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(t){return this===t?!0:this.constructor===t.constructor&&dt(this.props,t.props,2)}clone(t){let r=this.constructor;return new r({...this.props,...t})}makeViewport({width:t,height:r,viewState:n}){n=this.filterViewState(n);let s=this.getDimensions({width:t,height:r});if(!s.height||!s.width)return null;let i=this.getViewportType(n);return new i({...n,...this.props,...s})}getViewStateId(){let{viewState:t}=this.props;return typeof t=="string"?t:t?.id||this.id}filterViewState(t){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;let r={...t};for(let n in this.props.viewState)n!=="id"&&(r[n]=this.props.viewState[n]);return r}return t}getDimensions({width:t,height:r}){let n={x:Ws(this._x,t),y:Ws(this._y,r),width:Ws(this._width,t),height:Ws(this._height,r)};return this._padding&&(n.padding={left:Ws(this._padding.left,t),top:Ws(this._padding.top,r),right:Ws(this._padding.right,t),bottom:Ws(this._padding.bottom,r)}),n}get controller(){let t=this.props.controller;return t?t===!0?{type:this.ControllerType}:typeof t=="function"?{type:t}:{type:this.ControllerType,...t}:null}};var Sn=class{constructor(t){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=t}get inProgress(){return this._inProgress}start(t){this.cancel(),this.settings=t,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:t,settings:r}=this;this._handle=t.addChannel({delay:t.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 rO=()=>{},qh={BREAK:1,SNAP_TO_END:2,IGNORE:3},PJ=e=>e,IJ=qh.BREAK,$h=class{constructor(t){this._onTransitionUpdate=r=>{let{time:n,settings:{interpolator:s,startProps:i,endProps:o,duration:a,easing:c}}=r,l=c(n/a),f=s.interpolateProps(i,o,l);this.propsInTransition=this.getControllerState({...this.props,...f}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=t.getControllerState,this.propsInTransition=null,this.transition=new Sn(t.timeline),this.onViewStateChange=t.onViewStateChange||rO,this.onStateChange=t.onStateChange||rO}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(t){let r=!1,n=this.props;if(this.props=t,!n||this._shouldIgnoreViewportChange(n,t))return!1;if(this._isTransitionEnabled(t)){let s=n;if(this.transition.inProgress){let{interruption:i,endProps:o}=this.transition.settings;s={...n,...i===qh.SNAP_TO_END?o:this.propsInTransition||n}}this._triggerTransition(s,t),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(t){let{transitionDuration:r,transitionInterpolator:n}=t;return(r>0||r==="auto")&&Boolean(n)}_isUpdateDueToCurrentTransition(t){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(t,this.propsInTransition):!1}_shouldIgnoreViewportChange(t,r){return this.transition.inProgress?this.transition.settings.interruption===qh.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(t,r):!0}_triggerTransition(t,r){let n=this.getControllerState(t),s=this.getControllerState(r).shortestPathFrom(n),i=r.transitionInterpolator,o=i.getDuration?i.getDuration(t,r):r.transitionDuration;if(o===0)return;let a=i.initializeProps(t,s);this.propsInTransition={};let c={duration:o,easing:r.transitionEasing||PJ,interpolator:i,interruption:r.transitionInterruption||IJ,startProps:a.start,endProps:a.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(c),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(t){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),t?.(r)}}};function Bt(e,t){if(!e)throw new Error(t||"deck.gl: assertion failed.")}var Hs=class{constructor(t){let{compare:r,extract:n,required:s}=t;this._propsToCompare=r,this._propsToExtract=n||r,this._requiredProps=s}arePropsEqual(t,r){for(let n of this._propsToCompare)if(!(n in t)||!(n in r)||!te(t[n],r[n]))return!1;return!0}initializeProps(t,r){let n={},s={};for(let i of this._propsToExtract)(i in t||i in r)&&(n[i]=t[i],s[i]=r[i]);return this._checkRequiredProps(n),this._checkRequiredProps(s),{start:n,end:s}}getDuration(t,r){return r.transitionDuration}_checkRequiredProps(t){this._requiredProps&&this._requiredProps.forEach(r=>{let n=t[r];Bt(Number.isFinite(n)||Array.isArray(n),`${r} is required for transition`)})}};var RJ=["longitude","latitude","zoom","bearing","pitch"],OJ=["longitude","latitude","zoom"],re=class extends Hs{constructor(t={}){let r=Array.isArray(t)?t:t.transitionProps,n=Array.isArray(t)?{}:t;n.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:RJ,required:OJ},super(n.transitionProps),this.opts=n}initializeProps(t,r){let n=super.initializeProps(t,r),{makeViewport:s,around:i}=this.opts;if(s&&i){let o=s(t),a=s(r),c=o.unproject(i);n.start.around=i,Object.assign(n.end,{around:a.project(c),aroundPosition:c,width:r.width,height:r.height})}return n}interpolateProps(t,r,n){let s={};for(let i of this._propsToExtract)s[i]=Oe(t[i]||0,r[i]||0,n);if(r.aroundPosition&&this.opts.makeViewport){let i=this.opts.makeViewport({...r,...s});Object.assign(s,i.panByPosition(r.aroundPosition,Oe(t.around,r.around,n)))}return s}};var Gs={transitionDuration:0},LJ=300,l0=e=>1-(1-e)*(1-e),kc={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],KEYBOARD:["keydown"]},Yo={},xr=class{constructor(t){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 $h({...t,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=t.eventManager,this.onViewStateChange=t.onViewStateChange||(()=>{}),this.onStateChange=t.onStateChange||(()=>{}),this.makeViewport=t.makeViewport}set events(t){this.toggleEvents(this._customEvents,!1),this.toggleEvents(t,!0),this._customEvents=t,this.props&&this.setProps(this.props)}finalize(){for(let t in this._events)this._events[t]&&this.eventManager?.off(t,this.handleEvent);this.transitionManager.finalize()}handleEvent(t){this._controllerState=void 0;let r=this._eventStartBlocked;switch(t.type){case"panstart":return r?!1:this._onPanStart(t);case"panmove":return this._onPan(t);case"panend":return this._onPanEnd(t);case"pinchstart":return r?!1:this._onPinchStart(t);case"pinchmove":return this._onPinch(t);case"pinchend":return this._onPinchEnd(t);case"multipanstart":return r?!1:this._onMultiPanStart(t);case"multipanmove":return this._onMultiPan(t);case"multipanend":return this._onMultiPanEnd(t);case"dblclick":return this._onDoubleClick(t);case"wheel":return this._onWheel(t);case"keydown":return this._onKeyDown(t);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(t){let{x:r,y:n}=this.props,{offsetCenter:s}=t;return[s.x-r,s.y-n]}isPointInBounds(t,r){let{width:n,height:s}=this.props;if(r&&r.handled)return!1;let i=t[0]>=0&&t[0]<=n&&t[1]>=0&&t[1]<=s;return i&&r&&r.stopPropagation(),i}isFunctionKeyPressed(t){let{srcEvent:r}=t;return Boolean(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(t){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},t);this._eventStartBlocked=r}setProps(t){t.dragMode&&(this.dragMode=t.dragMode),this.props=t,"transitionInterpolator"in t||(t.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(t);let{inertia:r}=t;this.inertia=Number.isFinite(r)?r:r===!0?LJ:0;let{scrollZoom:n=!0,dragPan:s=!0,dragRotate:i=!0,doubleClickZoom:o=!0,touchZoom:a=!0,touchRotate:c=!1,keyboard:l=!0}=t,f=Boolean(this.onViewStateChange);this.toggleEvents(kc.WHEEL,f&&n),this.toggleEvents(kc.PAN,f),this.toggleEvents(kc.PINCH,f&&(a||c)),this.toggleEvents(kc.MULTI_PAN,f&&c),this.toggleEvents(kc.DOUBLE_CLICK,f&&o),this.toggleEvents(kc.KEYBOARD,f&&l),this.scrollZoom=n,this.dragPan=s,this.dragRotate=i,this.doubleClickZoom=o,this.touchZoom=a,this.touchRotate=c,this.keyboard=l}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(t,r){this.eventManager&&t.forEach(n=>{this._events[n]!==r&&(this._events[n]=r,r?this.eventManager.on(n,this.handleEvent):this.eventManager.off(n,this.handleEvent))})}updateViewport(t,r=null,n={}){let s={...t.getViewportProps(),...r},i=this.controllerState!==t;if(this.state=t.getState(),this._setInteractionState(n),i){let o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:o,viewId:this.props.id})}}_onTransition(t){this.onViewStateChange({...t,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(t){Object.assign(this._interactionState,t),this.onStateChange(this._interactionState)}_onPanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let n=this.isFunctionKeyPressed(t)||t.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(n=!n);let s=this.controllerState[n?"panStart":"rotateStart"]({pos:r});return this._panMove=n,this.updateViewport(s,Gs,{isDragging:!0}),!0}_onPan(t){return this.isDragging()?this._panMove?this._onPanMove(t):this._onPanRotate(t):!1}_onPanEnd(t){return this.isDragging()?this._panMove?this._onPanMoveEnd(t):this._onPanRotateEnd(t):!1}_onPanMove(t){if(!this.dragPan)return!1;let r=this.getCenter(t),n=this.controllerState.pan({pos:r});return this.updateViewport(n,Gs,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(t){let{inertia:r}=this;if(this.dragPan&&r&&t.velocity){let n=this.getCenter(t),s=[n[0]+t.velocityX*r/2,n[1]+t.velocityY*r/2],i=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(i,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:l0},{isDragging:!1,isPanning:!0})}else{let n=this.controllerState.panEnd();this.updateViewport(n,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(t){if(!this.dragRotate)return!1;let r=this.getCenter(t),n=this.controllerState.rotate({pos:r});return this.updateViewport(n,Gs,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(t){let{inertia:r}=this;if(this.dragRotate&&r&&t.velocity){let n=this.getCenter(t),s=[n[0]+t.velocityX*r/2,n[1]+t.velocityY*r/2],i=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(i,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:l0},{isDragging:!1,isRotating:!0})}else{let n=this.controllerState.rotateEnd();this.updateViewport(n,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(t){if(!this.scrollZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;t.srcEvent.preventDefault();let{speed:n=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:i}=t,o=2/(1+Math.exp(-Math.abs(i*n)));i<0&&o!==0&&(o=1/o);let a=s?{...this._getTransitionProps({around:r}),transitionDuration:250}:Gs,c=this.controllerState.zoom({pos:r,scale:o});return this.updateViewport(c,a,{isZooming:!0,isPanning:!0}),!0}_onMultiPanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let n=this.controllerState.rotateStart({pos:r});return this.updateViewport(n,Gs,{isDragging:!0}),!0}_onMultiPan(t){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(t);r[0]-=t.deltaX;let n=this.controllerState.rotate({pos:r});return this.updateViewport(n,Gs,{isDragging:!0,isRotating:!0}),!0}_onMultiPanEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&t.velocityY){let n=this.getCenter(t),s=[n[0],n[1]+=t.velocityY*r/2],i=this.controllerState.rotate({pos:s});this.updateViewport(i,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:l0},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let n=this.controllerState.rotateEnd();this.updateViewport(n,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let n=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return Yo._startPinchRotation=t.rotation,Yo._lastPinchEvent=t,this.updateViewport(n,Gs,{isDragging:!0}),!0}_onPinch(t){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:n}=t,s=this.getCenter(t);r=r.zoom({pos:s,scale:n})}if(this.touchRotate){let{rotation:n}=t;r=r.rotate({deltaAngleX:Yo._startPinchRotation-n})}return this.updateViewport(r,Gs,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),Yo._lastPinchEvent=t,!0}_onPinchEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:n}=Yo;if(this.touchZoom&&r&&n&&t.scale!==n.scale){let s=this.getCenter(t),i=this.controllerState.rotateEnd(),o=Math.log2(t.scale),a=(o-Math.log2(n.scale))/(t.deltaTime-n.deltaTime),c=Math.pow(2,o+a*r/2);i=i.zoom({pos:s,scale:c}).zoomEnd(),this.updateViewport(i,{...this._getTransitionProps({around:s}),transitionDuration:r,transitionEasing:l0},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return Yo._startPinchRotation=null,Yo._lastPinchEvent=null,!0}_onDoubleClick(t){if(!this.doubleClickZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let n=this.isFunctionKeyPressed(t),s=this.controllerState.zoom({pos:r,scale:n?.5:2});return this.updateViewport(s,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(t){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(t),{zoomSpeed:n,moveSpeed:s,rotateSpeedX:i,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this,c,l={};switch(t.srcEvent.code){case"Minus":c=r?a.zoomOut(n).zoomOut(n):a.zoomOut(n),l.isZooming=!0;break;case"Equal":c=r?a.zoomIn(n).zoomIn(n):a.zoomIn(n),l.isZooming=!0;break;case"ArrowLeft":r?(c=a.rotateLeft(i),l.isRotating=!0):(c=a.moveLeft(s),l.isPanning=!0);break;case"ArrowRight":r?(c=a.rotateRight(i),l.isRotating=!0):(c=a.moveRight(s),l.isPanning=!0);break;case"ArrowUp":r?(c=a.rotateUp(o),l.isRotating=!0):(c=a.moveUp(s),l.isPanning=!0);break;case"ArrowDown":r?(c=a.rotateDown(o),l.isRotating=!0):(c=a.moveDown(s),l.isPanning=!0);break;default:return!1}return this.updateViewport(c,this._getTransitionProps(),l),!0}_getTransitionProps(t){let{transition:r}=this;return!r||!r.transitionInterpolator?Gs:t?{...r,transitionInterpolator:new re({...t,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var js=class{constructor(t,r){this._viewportProps=this.applyConstraints(t),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var nO=5,BJ=1.2,Xh=class extends js{constructor(t){let{width:r,height:n,latitude:s,longitude:i,zoom:o,bearing:a=0,pitch:c=0,altitude:l=1.5,position:f=[0,0,0],maxZoom:h=20,minZoom:u=0,maxPitch:d=60,minPitch:p=0,startPanLngLat:m,startZoomLngLat:g,startRotatePos:x,startBearing:v,startPitch:_,startZoom:y,normalize:b=!0}=t;Bt(Number.isFinite(i)),Bt(Number.isFinite(s)),Bt(Number.isFinite(o)),super({width:r,height:n,latitude:s,longitude:i,zoom:o,bearing:a,pitch:c,altitude:l,maxZoom:h,minZoom:u,maxPitch:d,minPitch:p,normalize:b,position:f},{startPanLngLat:m,startZoomLngLat:g,startRotatePos:x,startBearing:v,startPitch:_,startZoom:y}),this.makeViewport=t.makeViewport}panStart({pos:t}){return this._getUpdatedState({startPanLngLat:this._unproject(t)})}pan({pos:t,startPos:r}){let n=this.getState().startPanLngLat||this._unproject(r);if(!n)return this;let i=this.makeViewport(this.getViewportProps()).panByPosition(n,t);return this._getUpdatedState(i)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:t}){return this._getUpdatedState({startRotatePos:t,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:t,deltaAngleX:r=0,deltaAngleY:n=0}){let{startRotatePos:s,startBearing:i,startPitch:o}=this.getState();if(!s||i===void 0||o===void 0)return this;let a;return t?a=this._getNewRotation(t,s,o,i):a={bearing:i+r,pitch:o+n},this._getUpdatedState(a)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:t}){return this._getUpdatedState({startZoomLngLat:this._unproject(t),startZoom:this.getViewportProps().zoom})}zoom({pos:t,startPos:r,scale:n}){let{startZoom:s,startZoomLngLat:i}=this.getState();if(i||(s=this.getViewportProps().zoom,i=this._unproject(r)||this._unproject(t)),!i)return this;let{maxZoom:o,minZoom:a}=this.getViewportProps(),c=s+Math.log2(n);c=Mt(c,a,o);let l=this.makeViewport({...this.getViewportProps(),zoom:c});return this._getUpdatedState({zoom:c,...l.panByPosition(i,t)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(t=2){return this._zoomFromCenter(t)}zoomOut(t=2){return this._zoomFromCenter(1/t)}moveLeft(t=100){return this._panFromCenter([t,0])}moveRight(t=100){return this._panFromCenter([-t,0])}moveUp(t=100){return this._panFromCenter([0,t])}moveDown(t=100){return this._panFromCenter([0,-t])}rotateLeft(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-t})}rotateRight(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+t})}rotateUp(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+t})}rotateDown(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-t})}shortestPathFrom(t){let r=t.getViewportProps(),n={...this.getViewportProps()},{bearing:s,longitude:i}=n;return Math.abs(s-r.bearing)>180&&(n.bearing=s<0?s+360:s-360),Math.abs(i-r.longitude)>180&&(n.longitude=i<0?i+360:i-360),n}applyConstraints(t){let{maxZoom:r,minZoom:n,zoom:s}=t;t.zoom=Mt(s,n,r);let{maxPitch:i,minPitch:o,pitch:a}=t;t.pitch=Mt(a,o,i);let{normalize:c=!0}=t;return c&&Object.assign(t,hb(t)),t}_zoomFromCenter(t){let{width:r,height:n}=this.getViewportProps();return this.zoom({pos:[r/2,n/2],scale:t})}_panFromCenter(t){let{width:r,height:n}=this.getViewportProps();return this.pan({startPos:[r/2,n/2],pos:[r/2+t[0],n/2+t[1]]})}_getUpdatedState(t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}_unproject(t){let r=this.makeViewport(this.getViewportProps());return t&&r.unproject(t)}_getNewRotation(t,r,n,s){let i=t[0]-r[0],o=t[1]-r[1],a=t[1],c=r[1],{width:l,height:f}=this.getViewportProps(),h=i/l,u=0;o>0?Math.abs(f-c)>nO&&(u=o/(c-f)*BJ):o<0&&c>nO&&(u=1-a/c),u=Mt(u,-1,1);let{minPitch:d,maxPitch:p}=this.getViewportProps(),m=s+180*h,g=n;return u>0?g=n+u*(p-n):u<0&&(g=n-u*(d-n)),{pitch:g,bearing:m}}},Ko=class extends xr{constructor(){super(...arguments),this.ControllerState=Xh,this.transition={transitionDuration:300,transitionInterpolator:new re({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan"}setProps(t){t.position=t.position||[0,0,0];let r=this.props;super.setProps(t),(!r||r.height!==t.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...t,...this.state}))}};var f0=class extends gr{constructor(t={}){super(t)}getViewportType(){return tr}get ControllerType(){return Ko}};f0.displayName="MapView";var Bi=f0;var NJ=new Ri;function FJ(e,t){let r=e.order??1/0,n=t.order??1/0;return r-n}var Yh=class{constructor(t){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=t,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(t){let r=this._defaultEffects;if(!r.find(n=>n.id===t.id)){let n=r.findIndex(s=>FJ(s,t)>0);n<0?r.push(t):r.splice(n,0,t),t.setup(this._context),this._setEffects(this.effects)}}setProps(t){"effects"in t&&(dt(t.effects,this.effects,1)||this._setEffects(t.effects))}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(t){let r={};for(let s of this.effects)r[s.id]=s;let n=[];for(let s of t){let i=r[s.id],o=s;i&&i!==s?i.setProps?(i.setProps(s.props),o=i):i.cleanup(this._context):i||s.setup(this._context),n.push(o),delete r[s.id]}for(let s in r)r[s].cleanup(this._context);this.effects=n,this._resolvedEffects=n.concat(this._defaultEffects),t.some(s=>s instanceof Ri)||this._resolvedEffects.push(NJ),this._needsRedraw="effects changed"}finalize(){for(let t of this._resolvedEffects)t.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var Kh=class extends $e{shouldDrawLayer(t){let{operation:r}=t.props;return r.includes("draw")||r.includes("terrain")}};var DJ="deckRenderer.renderLayers",Zo=class{constructor(t){this.device=t,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Kh(t),this.pickLayersPass=new Mn(t),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(t){this.layerFilter!==t.layerFilter&&(this.layerFilter=t.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==t.drawPickingColors&&(this.drawPickingColors=t.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(t){if(!t.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,n={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...t};n.effects&&this._preRender(n.effects,n);let s=this.lastPostProcessEffect?this.renderBuffers[0]:n.target;this.lastPostProcessEffect&&(n.clearColor=[0,0,0,0],n.clearCanvas=!0);let i=r.render({...n,target:s});n.effects&&(this.lastPostProcessEffect&&(n.clearCanvas=t.clearCanvas===void 0?!0:t.clearCanvas),this._postRender(n.effects,n)),this.renderCount++,ae(DJ,this,i,t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:t}=this;for(let r of t)r.delete();t.length=0}_preRender(t,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let n of t)r.preRenderStats[n.id]=n.preRender(r),n.postRender&&(this.lastPostProcessEffect=n.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:t}=this,r=this.device.canvasContext.getDrawingBufferSize(),[n,s]=r;t.length===0&&[0,1].map(i=>{let o=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:n,height:s});t.push(this.device.createFramebuffer({id:`deck-renderbuffer-${i}`,colorAttachments:[o]}))});for(let i of t)i.resize(r)}_postRender(t,r){let{renderBuffers:n}=this,s={...r,inputBuffer:n[0],swapBuffer:n[1]};for(let i of t)if(i.postRender){s.target=i.id===this.lastPostProcessEffect?r.target:void 0;let o=i.postRender(s);s.inputBuffer=o,s.swapBuffer=o===n[0]?n[1]:n[0]}}};var kJ={pickedColor:null,pickedObjectIndex:-1};function Eb({pickedColors:e,decodePickingColor:t,deviceX:r,deviceY:n,deviceRadius:s,deviceRect:i}){let{x:o,y:a,width:c,height:l}=i,f=s*s,h=-1,u=0;for(let d=0;d<l;d++){let p=d+a-n,m=p*p;if(m>f)u+=4*c;else for(let g=0;g<c;g++){if(e[u+3]-1>=0){let v=g+o-r,_=v*v+m;_<=f&&(f=_,h=u)}u+=4}}if(h>=0){let d=e.slice(h,h+4),p=t(d);if(p){let m=Math.floor(h/4/c),g=h/4-m*c;return{...p,pickedColor:d,pickedX:o+g,pickedY:a+m}}H.error("Picked non-existent layer. Is picking buffer corrupt?")()}return kJ}function Sb({pickedColors:e,decodePickingColor:t}){let r=new Map;if(e){for(let n=0;n<e.length;n+=4)if(e[n+3]-1>=0){let i=e.slice(n,n+4),o=i.join(",");if(!r.has(o)){let a=t(i);a?r.set(o,{...a,color:i}):H.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function h0({pickInfo:e,viewports:t,pixelRatio:r,x:n,y:s,z:i}){let o=t[0];t.length>1&&(o=UJ(e?.pickedViewports||t,{x:n,y:s}));let a;if(o){let c=[n-o.x,s-o.y];i!==void 0&&(c[2]=i),a=o.unproject(c)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:n,y:s,pixel:[n,s],coordinate:a,devicePixel:e&&"pickedX"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:r}}function wb(e){let{pickInfo:t,lastPickedInfo:r,mode:n,layers:s}=e,{pickedColor:i,pickedLayer:o,pickedObjectIndex:a}=t,c=o?[o]:[];if(n==="hover"){let h=r.index,u=r.layerId,d=o?o.props.id:null;if(d!==u||a!==h){if(d!==u){let p=s.find(m=>m.props.id===u);p&&c.unshift(p)}r.layerId=d,r.index=a,r.info=null}}let l=h0(e),f=new Map;return f.set(null,l),c.forEach(h=>{let u={...l};h===o&&(u.color=i,u.index=a,u.picked=!0),u=u0({layer:h,info:u,mode:n});let d=u.layer;h===o&&n==="hover"&&(r.info=u),f.set(d.id,u),n==="hover"&&d.updateAutoHighlight(u)}),f}function u0({layer:e,info:t,mode:r}){for(;e&&t;){let n=t.layer||null;t.sourceLayer=n,t.layer=e,t=e.getPickingInfo({info:t,mode:r,sourceLayer:n}),e=e.parent}return t}function UJ(e,t){for(let r=e.length-1;r>=0;r--){let n=e[r];if(n.containsPixel(t))return n}return e[0]}var Zh=class{constructor(t){this._pickable=!0,this.device=t,this.pickLayersPass=new Mn(t),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(t){"layerFilter"in t&&(this.layerFilter=t.layerFilter),"_pickable"in t&&(this._pickable=t._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObjectAsync(t){return this._pickClosestObjectAsync(t)}pickObjectsAsync(t){return this._pickVisibleObjectsAsync(t)}pickObject(t){return this._pickClosestObject(t)}pickObjects(t){return this._pickVisibleObjects(t)}getLastPickedObject({x:t,y:r,layers:n,viewports:s},i=this.lastPickedInfo.info){let o=i&&i.layer&&i.layer.id,a=i&&i.viewport&&i.viewport.id,c=o?n.find(u=>u.id===o):null,l=a&&s.find(u=>u.id===a)||s[0],f=l&&l.unproject([t-l.x,r-l.y]);return{...i,...{x:t,y:r,viewport:l,coordinate:f,layer:c}}}_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:t}=this.device.getDefaultCanvasContext();this.pickingFBO?.resize({width:t.width,height:t.height}),this.depthFBO?.resize({width:t.width,height:t.height})}_getPickable(t){if(this._pickable===!1)return null;let r=t.filter(n=>this.pickLayersPass.shouldDrawLayer(n)&&!n.isComposite);return r.length?r:null}async _pickClosestObjectAsync({layers:t,views:r,viewports:n,x:s,y:i,radius:o=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:f,effects:h}){let u=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(t);if(!d||n.length===0)return{result:[],emptyInfo:h0({viewports:n,x:s,y:i,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,i],!0),m=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],g=Math.round(o*u),{width:x,height:v}=this.pickingFBO,_=this._getPickingRect({deviceX:m[0],deviceY:m[1],deviceRadius:g,deviceWidth:x,deviceHeight:v}),y={x:s-o,y:i-o,width:o*2+1,height:o*2+1},b,T=[],C=new Set;for(let S=0;S<a;S++){let M;if(_){let I=this._drawAndSample({layers:d,views:r,viewports:n,onViewportActive:f,deviceRect:_,cullRect:y,effects:h,pass:`picking:${c}`});M=Eb({...I,deviceX:m[0],deviceY:m[1],deviceRadius:g,deviceRect:_})}else M={pickedColor:null,pickedObjectIndex:-1};let A;if(M.pickedLayer&&l&&this.depthFBO){let{pickedColors:I}=this._drawAndSample({layers:[M.pickedLayer],views:r,viewports:n,onViewportActive:f,deviceRect:{x:M.pickedX,y:M.pickedY,width:1,height:1},cullRect:y,effects:h,pass:`picking:${c}:z`},!0);I[3]&&(A=I[0])}M.pickedLayer&&S+1<a&&(C.add(M.pickedLayer),M.pickedLayer.disablePickingIndex(M.pickedObjectIndex)),b=wb({pickInfo:M,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:n,x:s,y:i,z:A,pixelRatio:u});for(let I of b.values())I.layer&&T.push(I);if(!M.pickedColor)break}for(let S of C)S.restorePickingColors();return{result:T,emptyInfo:b.get(null)}}_pickClosestObject({layers:t,views:r,viewports:n,x:s,y:i,radius:o=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:f,effects:h}){let u=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(t);if(!d||n.length===0)return{result:[],emptyInfo:h0({viewports:n,x:s,y:i,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,i],!0),m=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],g=Math.round(o*u),{width:x,height:v}=this.pickingFBO,_=this._getPickingRect({deviceX:m[0],deviceY:m[1],deviceRadius:g,deviceWidth:x,deviceHeight:v}),y={x:s-o,y:i-o,width:o*2+1,height:o*2+1},b,T=[],C=new Set;for(let S=0;S<a;S++){let M;if(_){let I=this._drawAndSample({layers:d,views:r,viewports:n,onViewportActive:f,deviceRect:_,cullRect:y,effects:h,pass:`picking:${c}`});M=Eb({...I,deviceX:m[0],deviceY:m[1],deviceRadius:g,deviceRect:_})}else M={pickedColor:null,pickedObjectIndex:-1};let A;if(M.pickedLayer&&l&&this.depthFBO){let{pickedColors:I}=this._drawAndSample({layers:[M.pickedLayer],views:r,viewports:n,onViewportActive:f,deviceRect:{x:M.pickedX,y:M.pickedY,width:1,height:1},cullRect:y,effects:h,pass:`picking:${c}:z`},!0);I[3]&&(A=I[0])}M.pickedLayer&&S+1<a&&(C.add(M.pickedLayer),M.pickedLayer.disablePickingIndex(M.pickedObjectIndex)),b=wb({pickInfo:M,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:n,x:s,y:i,z:A,pixelRatio:u});for(let I of b.values())I.layer&&T.push(I);if(!M.pickedColor)break}for(let S of C)S.restorePickingColors();return{result:T,emptyInfo:b.get(null)}}async _pickVisibleObjectsAsync({layers:t,views:r,viewports:n,x:s,y:i,width:o=1,height:a=1,mode:c="query",maxObjects:l=null,onViewportActive:f,effects:h}){let u=this._getPickable(t);if(!u||n.length===0)return[];this._resizeBuffer();let d=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,i],!0),m=p.x,g=p.y+p.height,x=this.device.canvasContext.cssToDevicePixels([s+o,i+a],!0),v=x.x+x.width,_=x.y,y={x:m,y:_,width:v-m,height:g-_},b=this._drawAndSample({layers:u,views:r,viewports:n,onViewportActive:f,deviceRect:y,cullRect:{x:s,y:i,width:o,height:a},effects:h,pass:`picking:${c}`}),T=Sb(b),C=new Map,S=[],M=Number.isFinite(l);for(let A=0;A<T.length&&!(M&&S.length>=l);A++){let I=T[A],D={color:I.pickedColor,layer:null,index:I.pickedObjectIndex,picked:!0,x:s,y:i,pixelRatio:d};D=u0({layer:I.pickedLayer,info:D,mode:c});let k=D.layer.id;C.has(k)||C.set(k,new Set);let P=C.get(k),q=D.object??D.index;P.has(q)||(P.add(q),S.push(D))}return S}_pickVisibleObjects({layers:t,views:r,viewports:n,x:s,y:i,width:o=1,height:a=1,mode:c="query",maxObjects:l=null,onViewportActive:f,effects:h}){let u=this._getPickable(t);if(!u||n.length===0)return[];this._resizeBuffer();let d=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,i],!0),m=p.x,g=p.y+p.height,x=this.device.canvasContext.cssToDevicePixels([s+o,i+a],!0),v=x.x+x.width,_=x.y,y={x:m,y:_,width:v-m,height:g-_},b=this._drawAndSample({layers:u,views:r,viewports:n,onViewportActive:f,deviceRect:y,cullRect:{x:s,y:i,width:o,height:a},effects:h,pass:`picking:${c}`}),T=Sb(b),C=new Map,S=[],M=Number.isFinite(l);for(let A=0;A<T.length&&!(M&&S.length>=l);A++){let I=T[A],D={color:I.pickedColor,layer:null,index:I.pickedObjectIndex,picked:!0,x:s,y:i,pixelRatio:d};D=u0({layer:I.pickedLayer,info:D,mode:c});let k=D.layer.id;C.has(k)||C.set(k,new Set);let P=C.get(k),q=D.object??D.index;P.has(q)||(P.add(q),S.push(D))}return S}async _drawAndSampleAsync({layers:t,views:r,viewports:n,onViewportActive:s,deviceRect:i,cullRect:o,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:t,layerFilter:this.layerFilter,views:r,viewports:n,onViewportActive:s,pickingFBO:f,deviceRect:i,cullRect:o,effects:a,pass:c,pickZ:l,preRenderStats:{},isPicking:!0};for(let v of a)v.useInPicking&&(h.preRenderStats[v.id]=v.preRender(h));let{decodePickingColor:u}=this.pickLayersPass.render(h),{x:d,y:p,width:m,height:g}=i,x=new(l?Float32Array:Uint8Array)(m*g*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:d,sourceY:p,sourceWidth:m,sourceHeight:g,target:x}),{pickedColors:x,decodePickingColor:u}}_drawAndSample({layers:t,views:r,viewports:n,onViewportActive:s,deviceRect:i,cullRect:o,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:t,layerFilter:this.layerFilter,views:r,viewports:n,onViewportActive:s,pickingFBO:f,deviceRect:i,cullRect:o,effects:a,pass:c,pickZ:l,preRenderStats:{},isPicking:!0};for(let v of a)v.useInPicking&&(h.preRenderStats[v.id]=v.preRender(h));let{decodePickingColor:u}=this.pickLayersPass.render(h),{x:d,y:p,width:m,height:g}=i,x=new(l?Float32Array:Uint8Array)(m*g*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:d,sourceY:p,sourceWidth:m,sourceHeight:g,target:x}),{pickedColors:x,decodePickingColor:u}}_getPickingRect({deviceX:t,deviceY:r,deviceRadius:n,deviceWidth:s,deviceHeight:i}){let o=Math.max(0,t-n),a=Math.max(0,r-n),c=Math.min(s,t+n+1)-o,l=Math.min(i,r+n+1)-a;return c<=0||l<=0?null:{x:o,y:a,width:c,height:l}}};var VJ={"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}},zJ="top-left",sO="__root",d0=class{constructor({deck:t,parentElement:r}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=t,r?.classList.add("deck-widget-container"),this.parentElement=r}getWidgets(){return this.resolvedWidgets}setProps(t){if(t.widgets&&!dt(t.widgets,this.widgets,1)){let r=t.widgets.filter(Boolean);this._setWidgets(r)}}finalize(){for(let t of this.getWidgets())this._removeWidget(t);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(let t in this.containers)this.containers[t].remove()}addDefault(t){this.defaultWidgets.find(r=>r.id===t.id)||(this._addWidget(t),this.defaultWidgets.push(t),this._setWidgets(this.widgets))}onRedraw({viewports:t,layers:r}){let n=t.reduce((s,i)=>(s[i.id]=i,s),{});for(let s of this.getWidgets()){let{viewId:i}=s;if(i){let o=n[i];o&&(s.onViewportChange&&s.onViewportChange(o),s.onRedraw?.({viewports:[o],layers:r}))}else{if(s.onViewportChange)for(let o of t)s.onViewportChange(o);s.onRedraw?.({viewports:t,layers:r})}}this.lastViewports=n,this._updateContainers()}onHover(t,r){for(let n of this.getWidgets()){let{viewId:s}=n;(!s||s===t.viewport?.id)&&n.onHover?.(t,r)}}onEvent(t,r){let n=Ch[r.type];if(n)for(let s of this.getWidgets()){let{viewId:i}=s;(!i||i===t.viewport?.id)&&s[n]?.(t,r)}}_setWidgets(t){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 t){let s=r[n.id];s?s.viewId!==n.viewId||s.placement!==n.placement?(this._removeWidget(s),this._addWidget(n)):n!==s&&(s.setProps(n.props),n=s):this._addWidget(n),r[n.id]=null,this.resolvedWidgets.push(n)}for(let n in r){let s=r[n];s&&this._removeWidget(s)}this.widgets=t}_addWidget(t){let{viewId:r=null,placement:n=zJ}=t;t.widgetManager=this,t.deck=this.deck,t.rootElement=t._onAdd({deck:this.deck,viewId:r}),t.rootElement&&this._getContainer(r,n).append(t.rootElement),t.updateHTML()}_removeWidget(t){t.onRemove?.(),t.rootElement&&t.rootElement.remove(),t.rootElement=void 0,t.deck=void 0,t.widgetManager=void 0}_getContainer(t,r){let n=t||sO,s=this.containers[n];s||(s=document.createElement("div"),s.style.pointerEvents="none",s.style.position="absolute",s.style.overflow="hidden",this.parentElement?.append(s),this.containers[n]=s);let i=s.querySelector(`.${r}`);return i||(i=globalThis.document.createElement("div"),i.className=r,i.style.position="absolute",i.style.zIndex="2",Object.assign(i.style,VJ[r]),s.append(i)),i}_updateContainers(){let t=this.deck.width,r=this.deck.height;for(let n in this.containers){let s=this.lastViewports[n]||null,i=n===sO||s,o=this.containers[n];i?(o.style.display="block",o.style.left=`${s?s.x:0}px`,o.style.top=`${s?s.y:0}px`,o.style.width=`${s?s.width:t}px`,o.style.height=`${s?s.height:r}px`):o.style.display="none"}}};function Jo(e,t){t&&Object.entries(t).map(([r,n])=>{r.startsWith("--")?e.style.setProperty(r,n):e.style[r]=n})}function p0(e,t){t&&Object.keys(t).map(r=>{r.startsWith("--")?e.style.removeProperty(r):e.style[r]=""})}var et=class{constructor(t){this.viewId=null,this.props={...this.constructor.defaultProps,...t},this.id=this.props.id}setProps(t){let r=this.props,n=this.rootElement;n&&r.className!==t.className&&(r.className&&n.classList.remove(r.className),t.className&&n.classList.add(t.className)),n&&!dt(r.style,t.style,1)&&(p0(n,r.style),Jo(n,t.style)),Object.assign(this.props,t),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}onCreateRootElement(){let t=["deck-widget",this.className,this.props.className],r=document.createElement("div");return t.filter(n=>typeof n=="string"&&n.length>0).forEach(n=>r.classList.add(n)),Jo(r,this.props.style),r}_onAdd(t){return this.onAdd(t)??this.onCreateRootElement()}onAdd(t){}onRemove(){}onViewportChange(t){}onRedraw(t){}onHover(t,r){}onClick(t,r){}onDrag(t,r){}onDragStart(t,r){}onDragEnd(t,r){}};et.defaultProps={id:"widget",style:{},className:""};var WJ={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},Jh=class extends et{constructor(t={}){super(t),this.id="default-tooltip",this.placement="fill",this.className="deck-tooltip",this.isVisible=!1,this.setProps(t)}onCreateRootElement(){let t=document.createElement("div");return t.className=this.className,Object.assign(t.style,WJ),t}onRenderHTML(t){}onViewportChange(t){this.isVisible&&t.id===this.lastViewport?.id&&t!==this.lastViewport&&this.setTooltip(null)}onHover(t){let{deck:r}=this,n=r&&r.props.getTooltip;if(!n)return;let s=n(t);this.lastViewport=t.viewport,this.setTooltip(s,t.x,t.y)}setTooltip(t,r,n){let s=this.rootElement;if(s){if(typeof t=="string")s.innerText=t;else if(t)t.text&&(s.innerText=t.text),t.html&&(s.innerHTML=t.html),t.className&&(s.className=t.className);else{this.isVisible=!1,s.style.display="none";return}this.isVisible=!0,s.style.display="block",s.style.transform=`translate(${r}px, ${n}px)`,t&&typeof t=="object"&&"style"in t&&Object.assign(s.style,t.style)}}};Jh.defaultProps={...et.defaultProps};it();iu();vo();function Di(){}var $Q=({isDragging:e})=>e?"grabbing":"grab",CL={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:Di,onWebGLInitialized:Di,onResize:Di,onViewStateChange:Di,onInteractionStateChange:Di,onBeforeRender:Di,onAfterRender:Di,onLoad:Di,onError:e=>H.error(e.message,e.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:$Q,getTooltip:null,debug:!1,drawPickingColors:!1},au=class{constructor(t){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 Ze({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:s}=this;if(n.type==="pointerleave")s.x=-1,s.y=-1,s.radius=0;else{if(n.leftButton||n.rightButton)return;{let i=n.offsetCenter;if(!i)return;s.x=i.x,s.y=i.y,s.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:s.x,y:s.y}),s.event=n},this._onEvent=n=>{let s=Ch[n.type],i=n.offsetCenter;if(!s||!i||!this.layerManager)return;let o=this.layerManager.getLayers(),a=this.deckPicker.getLastPickedObject({x:i.x,y:i.y,layers:o,viewports:this.getViewports(i)},this._lastPointerDownInfo),{layer:c}=a,l=c&&(c[s]||c.props[s]),f=this.props[s],h=!1;l&&(h=l.call(c,a,n)),h||(f?.(a,n),this.widgetManager.onEvent(a,n))},this._onPointerDown=n=>{if(this.device?.type==="webgpu")return;let s=n.offsetCenter,i=this._pick("pickObject","pickObject Time",{x:s.x,y:s.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=i.result[0]||i.emptyInfo},this.props={...CL,...t},t=this.props,t.viewState&&t.initialViewState&&H.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,t.device&&(this.device=t.device);let r=this.device;if(!r&&t.gl){t.gl instanceof WebGLRenderingContext&&H.error("WebGL1 context not supported.")();let n=this.props.deviceProps?.onResize;r=ou.attach(t.gl,{...this.props.deviceProps,onResize:(s,i)=>{let{width:o,height:a}=s.canvas;s.drawingBufferWidth=o,s.drawingBufferHeight=a,this._needsRedraw="Canvas resized",n?.(s,i)}})}r||(r=this._createDevice(t)),this.animationLoop=this._createAnimationLoop(r,t),this.setProps(t),t._typedArrayManagerProps&&Tn.setOptions(t._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(t){this.stats.get("setProps Time").timeStart(),"onLayerHover"in t&&H.removed("onLayerHover","onHover")(),"onLayerClick"in t&&H.removed("onLayerClick","onClick")(),t.initialViewState&&!dt(this.props.initialViewState,t.initialViewState,3)&&(this.viewState=t.initialViewState),Object.assign(this.props,t),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()}),t.device&&t.device.id!==this.device?.id&&(this.animationLoop?.stop(),this.canvas!==t.device.canvasContext?.canvas&&(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),H.log(`recreating animation loop for new device! id=${t.device.id}`)(),this.animationLoop=this._createAnimationLoop(t.device,t),this.animationLoop.start()),this.animationLoop?.setProps(r),t.useDevicePixels!==void 0&&this.device?.canvasContext&&this.device.canvasContext.setProps({useDevicePixels:t.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(t={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);let n=this.viewManager.needsRedraw(t),s=this.layerManager.needsRedraw(t),i=this.effectManager.needsRedraw(t),o=this.deckRenderer.needsRedraw(t);return r=r||n||s||i||o,r}redraw(t){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=t||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 Bt(this.viewManager),this.viewManager.views}getViewports(t){return Bt(this.viewManager),this.viewManager.getViewports(t)}getCanvas(){return this.canvas}pickObject(t){let r=this._pick("pickObject","pickObject Time",t).result;return r.length?r[0]:null}pickMultipleObjects(t){return t.depth=t.depth||10,this._pick("pickObject","pickMultipleObjects Time",t).result}pickObjects(t){return this._pick("pickObjects","pickObjects Time",t)}_addResources(t,r=!1){for(let n in t)this.layerManager.resourceManager.add({resourceId:n,data:t[n],forceUpdate:r})}_removeResources(t){for(let r of t)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(t){this.effectManager.addDefaultEffect(t)}_addDefaultShaderModule(t){this.layerManager.addDefaultShaderModule(t)}_removeDefaultShaderModule(t){this.layerManager?.removeDefaultShaderModule(t)}_pick(t,r,n){Bt(this.deckPicker);let{stats:s}=this;s.get("Pick Count").incrementCount(),s.get(r).timeStart();let i=this.deckPicker[t]({layers:this.layerManager.getLayers(n),views:this.viewManager.getViews(),viewports:this.getViewports(n),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...n});return s.get(r).timeEnd(),i}_createCanvas(t){let r=t.canvas;return typeof r=="string"&&(r=document.getElementById(r),Bt(r)),r||(r=document.createElement("canvas"),r.id=t.id||"deckgl-overlay",t.width&&typeof t.width=="number"&&(r.width=t.width),t.height&&typeof t.height=="number"&&(r.height=t.height),(t.parent||document.body).appendChild(r)),Object.assign(r.style,t.style),r}_setCanvasSize(t){if(!this.canvas)return;let{width:r,height:n}=t;if(r||r===0){let s=Number.isFinite(r)?`${r}px`:r;this.canvas.style.width=s}if(n||n===0){let s=Number.isFinite(n)?`${n}px`:n;this.canvas.style.position=t.style?.position||"absolute",this.canvas.style.height=s}}_updateCanvasSize(){let{canvas:t}=this;if(!t)return;let r=t.clientWidth??t.width,n=t.clientHeight??t.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(t,r){let{gl:n,onError:s}=r;return new Nc({device:t,autoResizeDrawingBuffer:!n,autoResizeViewport:!1,onInitialize:i=>this._setDevice(i.device),onRender:this._onRenderFrame.bind(this),onError:s})}_createDevice(t){let r=this.props.deviceProps?.createCanvasContext,n=typeof r=="object"?r:void 0,s={adapters:[],...t.deviceProps};s.adapters.includes(ou)||s.adapters.push(ou);let i={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0},o=this.props.deviceProps?.onResize;return Xn.createDevice({_reuseDevices:!0,type:"webgl",...s,createCanvasContext:{...i,...n,canvas:this._createCanvas(t),useDevicePixels:this.props.useDevicePixels,autoResize:!0},onResize:(a,c)=>{this._needsRedraw="Canvas resized",o?.(a,c)}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:t}=this.props,r=Array.isArray(t)?t:t?[t]:[new Bi({id:"default-view"})];return r.length&&this.props.controller&&(r[0].props.controller=this.props.controller),r}_onContextLost(){let{onError:t}=this.props;this.animationLoop&&t&&t(new Error("WebGL context is lost"))}_pickAndCallback(){if(this.device?.type==="webgpu")return;let{_pickRequest:t}=this;if(t.event){let{result:r,emptyInfo:n}=this._pick("pickObject","pickObject Time",t);this.cursorState.isHovering=r.length>0;let s=n,i=!1;for(let o of r)s=o,i=o.layer?.onHover(o,t.event)||i;i||(this.props.onHover?.(s,t.event),this.widgetManager.onHover(s,t.event)),t.event=null}}_updateCursor(){let t=this.props.parent||this.canvas;t&&(t.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(t){if(this.device=t,!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 jo;r.play(),this.animationLoop.attachTimeline(r),this.eventManager=new wh(this.props.parent||this.canvas,{touchAction:this.props.touchAction,recognizers:Object.keys(ib).map(s=>{let[i,o,a,c]=ib[s],l=this.props.eventRecognizerOptions?.[s],f={...o,...l,event:s};return{recognizer:new i(f),recognizeWith:a,requestFailure:c}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let s in Ch)this.eventManager.on(s,this._onEvent);this.viewManager=new jh({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 Xo(this.device,{deck:this,stats:this.stats,viewport:n,timeline:r}),this.effectManager=new Yh({deck:this,device:this.device}),this.deckRenderer=new Zo(this.device),this.deckPicker=new Zh(this.device),this.widgetManager=new d0({deck:this,parentElement:this.canvas?.parentElement}),this.widgetManager.addDefault(new Jh),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(t,r){let{device:n,gl:s}=this.layerManager.context;this.props.onBeforeRender({device:n,gl:s});let i={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(i),i.pass==="screen"&&this.widgetManager.onRedraw({viewports:i.viewports,layers:i.layers}),this.props.onAfterRender({device:n,gl:s})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),H.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(t){let r=this.props.onViewStateChange(t)||t.viewState;this.viewState&&(this.viewState={...this.viewState,[t.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(t){this.cursorState.isDragging=t.isDragging||!1,this.props.onInteractionStateChange(t)}_getFrameStats(){let{stats:t}=this;t.get("frameRate").timeEnd(),t.get("frameRate").timeStart();let r=this.animationLoop.stats;t.get("GPU Time").addTime(r.get("GPU Time").lastTiming),t.get("CPU Time").addTime(r.get("CPU Time").lastTiming)}_getMetrics(){let{metrics:t,stats:r}=this;t.fps=r.get("frameRate").getHz(),t.setPropsTime=r.get("setProps Time").time,t.updateAttributesTime=r.get("Update Attributes").time,t.framesRedrawn=r.get("Redraw Count").count,t.pickTime=r.get("pickObject Time").time+r.get("pickMultipleObjects Time").time+r.get("pickObjects Time").time,t.pickCount=r.get("Pick Count").count,t.gpuTime=r.get("GPU Time").time,t.cpuTime=r.get("CPU Time").time,t.gpuTimePerFrame=r.get("GPU Time").getAverageTime(),t.cpuTimePerFrame=r.get("CPU Time").getAverageTime();let n=Xn.stats.get("Memory Usage");t.bufferMemory=n.get("Buffer Memory").count,t.textureMemory=n.get("Texture Memory").count,t.renderbufferMemory=n.get("Renderbuffer Memory").count,t.gpuMemory=n.get("GPU Memory").count}};au.defaultProps=CL;au.VERSION=vm;var In=au;it();it();function PL(e){switch(e){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return So(e)}}var IL=Eo;function cu(e,t,r){let n=r==="webgpu"&&t.type==="uint8"?"unorm8":t.type;return{attribute:e,format:t.size>1?`${n}x${t.size}`:t.type,byteOffset:t.offset||0}}function ki(e){return e.stride||e.size*e.bytesPerElement}function RL(e,t){return e.type===t.type&&e.size===t.size&&ki(e)===ki(t)&&(e.offset||0)===(t.offset||0)}function Kb(e,t){t.offset&&H.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let r=ki(e),n=t.vertexOffset!==void 0?t.vertexOffset:e.vertexOffset||0,s=t.elementOffset||0,i=n*r+s*e.bytesPerElement+(e.offset||0);return{...t,offset:i,stride:r}}function XQ(e,t){let r=Kb(e,t);return{high:r,low:{...r,offset:r.offset+e.size*4}}}var lu=class{constructor(t,r,n){this._buffer=null,this.device=t,this.id=r.id||"",this.size=r.size||1;let s=r.logicalType||r.type,i=s==="float64",{defaultValue:o}=r;o=Number.isFinite(o)?[o]:o||new Array(this.size).fill(0);let a;i?a="float32":!s&&r.isIndexed?a="uint32":a=s||"float32";let c=PL(s||a);this.doublePrecision=i,i&&r.fp64===!1&&(c=Float32Array),this.value=null,this.settings={...r,defaultType:c,defaultValue:o,logicalType:s,type:a,normalized:a.includes("norm"),size:this.size,bytesPerElement:c.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 t=this.getAccessor();return t.vertexOffset?t.vertexOffset*ki(t):0}get numInstances(){return this.state.numInstances}set numInstances(t){this.state.numInstances=t}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),Tn.release(this.state.allocatedValue)}getBuffer(){return this.state.constant?null:this.state.externalBuffer||this._buffer}getValue(t=this.id,r=null){let n={};if(this.state.constant){let s=this.value;if(r){let i=Kb(this.getAccessor(),r),o=i.offset/s.BYTES_PER_ELEMENT,a=i.size||this.size;n[t]=s.subarray(o,o+a)}else n[t]=s}else n[t]=this.getBuffer();return this.doublePrecision&&(this.value instanceof Float64Array?n[`${t}64Low`]=n[t]:n[`${t}64Low`]=new Float32Array(this.size)),n}_getBufferLayout(t=this.id,r=null){let n=this.getAccessor(),s=[],i={name:this.id,byteStride:ki(n),attributes:s};if(this.doublePrecision){let o=XQ(n,r||{});s.push(cu(t,{...n,...o.high},this.device.type),cu(`${t}64Low`,{...n,...o.low},this.device.type))}else if(r){let o=Kb(n,r);s.push(cu(t,{...n,...o},this.device.type))}else s.push(cu(t,n,this.device.type));return i}setAccessor(t){this.state.bufferAccessor=t}getAccessor(){return this.state.bufferAccessor}getBounds(){if(this.state.bounds)return this.state.bounds;let t=null;if(this.state.constant&&this.value){let r=Array.from(this.value);t=[r,r]}else{let{value:r,numInstances:n,size:s}=this,i=n*s;if(r&&i&&r.length>=i){let o=new Array(s).fill(1/0),a=new Array(s).fill(-1/0);for(let c=0;c<i;)for(let l=0;l<s;l++){let f=r[c++];f<o[l]&&(o[l]=f),f>a[l]&&(a[l]=f)}t=[o,a]}}return this.state.bounds=t,t}setData(t){let{state:r}=this,n;ArrayBuffer.isView(t)?n={value:t}:t instanceof at?n={buffer:t}:n=t;let s={...this.settings,...n};if(ArrayBuffer.isView(n.value)){if(!n.type)if(this.doublePrecision&&n.value instanceof Float64Array)s.type="float32";else{let o=IL(n.value);s.type=s.normalized?o.replace("int","norm"):o}s.bytesPerElement=n.value.BYTES_PER_ELEMENT,s.stride=ki(s)}if(r.bounds=null,n.constant){let i=n.value;if(i=this._normalizeValue(i,[],0),this.settings.normalized&&(i=this.normalizeConstant(i)),!(!r.constant||!this._areValuesEqual(i,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=ArrayBuffer.isView(i)?i:new Float32Array(i)}else if(n.buffer){let i=n.buffer;r.externalBuffer=i,r.constant=!1,this.value=n.value||null}else if(n.value){this._checkExternalBuffer(n);let i=n.value;r.externalBuffer=null,r.constant=!1,this.value=i;let{buffer:o}=this,a=ki(s),c=(s.vertexOffset||0)*a;if(this.doublePrecision&&i instanceof Float64Array&&(i=Qg(i,s)),this.settings.isIndexed){let f=this.settings.defaultType;i.constructor!==f&&(i=new f(i))}let l=i.byteLength+c+a*2;(!o||o.byteLength<l)&&(o=this._createBuffer(l)),o.write(i,c)}return this.setAccessor(s),!0}updateSubBuffer(t={}){this.state.bounds=null;let r=this.value,{startOffset:n=0,endOffset:s}=t;this.buffer.write(this.doublePrecision&&r instanceof Float64Array?Qg(r,{size:this.size,startIndex:n,endIndex:s}):r.subarray(n,s),n*r.BYTES_PER_ELEMENT+this.byteOffset)}allocate(t,r=!1){let{state:n}=this,s=n.allocatedValue,i=Tn.allocate(s,t+1,{size:this.size,type:this.settings.defaultType,copy:r});this.value=i;let{byteOffset:o}=this,{buffer:a}=this;return(!a||a.byteLength<i.byteLength+o)&&(a=this._createBuffer(i.byteLength+o),r&&s&&a.write(s instanceof Float64Array?Qg(s,this):s,o)),n.allocatedValue=i,n.constant=!1,n.externalBuffer=null,this.setAccessor(this.settings),!0}_checkExternalBuffer(t){let{value:r}=t;if(!ArrayBuffer.isView(r))throw new Error(`Attribute ${this.id} value is not TypedArray`);let n=this.settings.defaultType,s=!1;if(this.doublePrecision&&(s=r.BYTES_PER_ELEMENT<4),s)throw new Error(`Attribute ${this.id} does not support ${r.constructor.name}`);!(r instanceof n)&&this.settings.normalized&&!("normalized"in t)&&H.warn(`Attribute ${this.id} is normalized`)()}normalizeConstant(t){switch(this.settings.type){case"snorm8":return new Float32Array(t).map(r=>(r+128)/255*2-1);case"snorm16":return new Float32Array(t).map(r=>(r+32768)/65535*2-1);case"unorm8":return new Float32Array(t).map(r=>r/255);case"unorm16":return new Float32Array(t).map(r=>r/65535);default:return t}}_normalizeValue(t,r,n){let{defaultValue:s,size:i}=this.settings;if(Number.isFinite(t))return r[n]=t,r;if(!t){let o=i;for(;--o>=0;)r[n+o]=s[o];return r}switch(i){case 4:r[n+3]=Number.isFinite(t[3])?t[3]:s[3];case 3:r[n+2]=Number.isFinite(t[2])?t[2]:s[2];case 2:r[n+1]=Number.isFinite(t[1])?t[1]:s[1];case 1:r[n+0]=Number.isFinite(t[0])?t[0]:s[0];break;default:let o=i;for(;--o>=0;)r[n+o]=Number.isFinite(t[o])?t[o]:s[o]}return r}_areValuesEqual(t,r){if(!t||!r)return!1;let{size:n}=this;for(let s=0;s<n;s++)if(t[s]!==r[s])return!1;return!0}_createBuffer(t){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?at.INDEX:at.VERTEX)|at.COPY_DST,indexType:r?n:void 0,byteLength:t}),this._buffer}};var OL=[],LL=[];function ue(e,t=0,r=1/0){let n=OL,s={index:-1,data:e,target:[]};return e?typeof e[Symbol.iterator]=="function"?n=e:e.length>0&&(LL.length=e.length,n=LL):n=OL,(t>0||Number.isFinite(r))&&(n=(Array.isArray(n)?n:Array.from(n)).slice(t,r),s.index=t-1),{iterable:n,objectInfo:s}}function z0(e){return e&&e[Symbol.asyncIterator]}function W0(e,t){let{size:r,stride:n,offset:s,startIndices:i,nested:o}=t,a=e.BYTES_PER_ELEMENT,c=n?n/a:r,l=s?s/a:0,f=Math.floor((e.length-l)/c);return(h,{index:u,target:d})=>{if(!i){let x=u*c+l;for(let v=0;v<r;v++)d[v]=e[x+v];return d}let p=i[u],m=i[u+1]||f,g;if(o){g=new Array(m-p);for(let x=p;x<m;x++){let v=x*c+l;d=new Array(r);for(let _=0;_<r;_++)d[_]=e[v+_];g[x-p]=d}}else if(c===r)g=e.subarray(p*r+l,m*r+l);else{g=new e.constructor((m-p)*r);let x=0;for(let v=p;v<m;v++){let _=v*c+l;for(let y=0;y<r;y++)g[x++]=e[_+y]}}return g}}var BL=[],fu=[[0,1/0]];function NL(e,t){if(e===fu||(t[0]<0&&(t[0]=0),t[0]>=t[1]))return e;let r=[],n=e.length,s=0;for(let i=0;i<n;i++){let o=e[i];o[1]<t[0]?(r.push(o),s=i+1):o[0]>t[1]?r.push(o):t=[Math.min(o[0],t[0]),Math.max(o[1],t[1])]}return r.splice(s,0,t),r}var KQ={interpolation:{duration:0,easing:e=>e},spring:{stiffness:.05,damping:.5}};function H0(e,t){if(!e)return null;Number.isFinite(e)&&(e={type:"interpolation",duration:e});let r=e.type||"interpolation";return{...KQ[r],...t,...e,type:r}}var qs=class extends lu{constructor(t,r){super(t,r,{startIndices:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:fu}),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(t){this.state.startIndices=t}needsUpdate(){return this.state.needsUpdate}needsRedraw({clearChangedFlags:t=!1}={}){let r=this.state.needsRedraw;return this.state.needsRedraw=r&&!t,r}layoutChanged(){return this.state.layoutChanged}setAccessor(t){var r;(r=this.state).layoutChanged||(r.layoutChanged=!RL(t,this.getAccessor())),super.setAccessor(t)}getUpdateTriggers(){let{accessor:t}=this.settings;return[this.id].concat(typeof t!="function"&&t||[])}supportsTransition(){return Boolean(this.settings.transition)}getTransitionSetting(t){if(!t||!this.supportsTransition())return null;let{accessor:r}=this.settings,n=this.settings.transition,s=Array.isArray(r)?t[r.find(i=>t[i])]:t[r];return H0(s,n)}setNeedsUpdate(t=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||t,this.setNeedsRedraw(t),r){let{startRow:n=0,endRow:s=1/0}=r;this.state.updateRanges=NL(this.state.updateRanges,[n,s])}else this.state.updateRanges=fu}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=BL}setNeedsRedraw(t=this.id){this.state.needsRedraw=this.state.needsRedraw||t}allocate(t){let{state:r,settings:n}=this;return n.noAlloc?!1:n.update?(super.allocate(t,r.updateRanges!==fu),!0):!1}updateBuffer({numInstances:t,data:r,props:n,context:s}){if(!this.needsUpdate())return!1;let{state:{updateRanges:i},settings:{update:o,noAlloc:a}}=this,c=!0;if(o){for(let[l,f]of i)o.call(s,this,{data:r,startRow:l,endRow:f,props:n,numInstances:t});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLength<this.value.byteLength+this.byteOffset)this.setData({value:this.value,constant:this.constant}),this.constant=!1;else for(let[l,f]of i){let h=Number.isFinite(l)?this.getVertexOffset(l):0,u=Number.isFinite(f)?this.getVertexOffset(f):a||!Number.isFinite(t)?this.value.length:t*this.size;super.updateSubBuffer({startOffset:h,endOffset:u})}this._checkAttributeArray()}else c=!1;return this.clearNeedsUpdate(),this.setNeedsRedraw(),c}setConstantValue(t,r){let n=this.device.type==="webgpu";if(n||r===void 0||typeof r=="function"){if(n&&typeof r!="function"){let o=this._normalizeValue(r,[],0);this._areValuesEqual(o,this.value)||this.setNeedsUpdate("WebGPU constant updated")}return!1}let s=this.settings.transform&&t?this.settings.transform.call(t,r):r;return this.setData({constant:!0,value:s})&&this.setNeedsRedraw(),this.clearNeedsUpdate(),!0}setExternalBuffer(t){let{state:r}=this;return t?(this.clearNeedsUpdate(),r.lastExternalBuffer===t||(r.lastExternalBuffer=t,this.setNeedsRedraw(),this.setData(t)),!0):(r.lastExternalBuffer=null,!1)}setBinaryValue(t,r=null){let{state:n,settings:s}=this;if(!t)return n.binaryValue=null,n.binaryAccessor=null,!1;if(s.noAlloc)return!1;if(n.binaryValue===t)return this.clearNeedsUpdate(),!0;if(n.binaryValue=t,this.setNeedsRedraw(),s.transform||r!==this.startIndices){ArrayBuffer.isView(t)&&(t={value:t});let o=t;Bt(ArrayBuffer.isView(o.value),`invalid ${s.accessor}`);let a=Boolean(o.size)&&o.size!==this.size;return n.binaryAccessor=W0(o.value,{size:o.size||this.size,stride:o.stride,offset:o.offset,startIndices:r,nested:a}),!1}return this.clearNeedsUpdate(),this.setData(t),!0}getVertexOffset(t){let{startIndices:r}=this;return(r?t<r.length?r[t]:this.numInstances:t)*this.size}getValue(){let t=this.settings.shaderAttributes,r=super.getValue();if(!t)return r;for(let n in t)Object.assign(r,super.getValue(n,t[n]));return r}getBufferLayout(t){this.state.layoutChanged=!1;let r=this.settings.shaderAttributes,n=super._getBufferLayout(),{stepMode:s}=this.settings;if(s==="dynamic"?n.stepMode=t?t.isInstanced?"instance":"vertex":"instance":n.stepMode=s??"vertex",!r)return n;for(let i in r){let o=super._getBufferLayout(i,r[i]);n.attributes.push(...o.attributes)}return n}_autoUpdater(t,{data:r,startRow:n,endRow:s,props:i,numInstances:o}){if(t.constant&&this.context.device.type!=="webgpu")return;let{settings:a,state:c,value:l,size:f,startIndices:h}=t,{accessor:u,transform:d}=a,p=c.binaryAccessor||(typeof u=="function"?u:i[u]);typeof p!="function"&&typeof u=="string"&&(p=()=>i[u]),Bt(typeof p=="function",`accessor "${u}" is not a function`);let m=t.getVertexOffset(n),{iterable:g,objectInfo:x}=ue(r,n,s);for(let v of g){x.index++;let _=p(v,x);if(d&&(_=d.call(this,_)),h){let y=(x.index<h.length-1?h[x.index+1]:o)-h[x.index];if(_&&Array.isArray(_[0])){let b=m;for(let T of _)t._normalizeValue(T,l,b),b+=f}else _&&_.length>f?l.set(_,m):(t._normalizeValue(_,x.target,0),c0({target:l,source:x.target,start:m,count:y}));m+=y*f}else t._normalizeValue(_,l,m),m+=f}}_validateAttributeUpdaters(){let{settings:t}=this;if(!(t.noAlloc||typeof t.update=="function"))throw new Error(`Attribute ${this.id} missing update or accessor`)}_checkAttributeArray(){let{value:t}=this,r=Math.min(4,this.size);if(t&&t.length>=r){let n=!0;switch(r){case 4:n=n&&Number.isFinite(t[3]);case 3:n=n&&Number.isFinite(t[2]);case 2:n=n&&Number.isFinite(t[1]);case 1:n=n&&Number.isFinite(t[0]);break;default:n=!1}if(!n)throw new Error(`Illegal attribute generated for ${this.id}`)}}};function Zb(e){let{source:t,target:r,start:n=0,size:s,getData:i}=e,o=e.end||r.length,a=t.length,c=o-n;if(a>c){r.set(t.subarray(0,c),n);return}if(r.set(t,n),!i)return;let l=a;for(;l<c;){let f=i(l,t);for(let h=0;h<s;h++)r[n+l]=f[h]||0,l++}}function FL({source:e,target:t,size:r,getData:n,sourceStartIndices:s,targetStartIndices:i}){if(!s||!i)return Zb({source:e,target:t,size:r,getData:n}),t;let o=0,a=0,c=n&&((f,h)=>n(f+a,h)),l=Math.min(s.length,i.length);for(let f=1;f<l;f++){let h=s[f]*r,u=i[f]*r;Zb({source:e.subarray(o,h),target:t,start:a,end:u,size:r,getData:c}),o=h,a=u}return a<t.length&&Zb({source:[],target:t,start:a,size:r,getData:c}),t}function DL(e){let{device:t,settings:r,value:n}=e,s=new qs(t,r);return s.setData({value:n instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:r.normalized}),s}function G0(e){switch(e){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 "${e}"`)}}function j0(e){switch(e){case 1:return"float32";case 2:return"float32x2";case 3:return"float32x3";case 4:return"float32x4";default:throw new Error("invalid type size")}}function q0(e){e.push(e.shift())}function kL(e,t){let{doublePrecision:r,settings:n,value:s,size:i}=e,o=r&&s instanceof Float64Array?2:1,a=0,{shaderAttributes:c}=e.settings;if(c)for(let l of Object.values(c))a=Math.max(a,l.vertexOffset??0);return(n.noAlloc?s.length:(t+a)*i)*o}function $0({device:e,source:t,target:r}){return(!r||r.byteLength<t.byteLength)&&(r?.destroy(),r=e.createBuffer({byteLength:t.byteLength,usage:t.usage})),r}function X0({device:e,buffer:t,attribute:r,fromLength:n,toLength:s,fromStartIndices:i,getData:o=a=>a}){let a=r.doublePrecision&&r.value instanceof Float64Array?2:1,c=r.size*a,l=r.byteOffset,f=r.settings.bytesPerElement<4?l/r.settings.bytesPerElement*4:l,h=r.startIndices,u=i&&h,d=r.isConstant;if(!u&&t&&n>=s)return t;let p=r.value instanceof Float64Array?Float32Array:r.value.constructor,m=d?r.value:new p(r.getBuffer().readSyncWebGL(l,s*p.BYTES_PER_ELEMENT).buffer);if(r.settings.normalized&&!d){let _=o;o=(y,b)=>r.normalizeConstant(_(y,b))}let g=d?(_,y)=>o(m,y):(_,y)=>o(m.subarray(_+l,_+l+c),y),x=t?new Float32Array(t.readSyncWebGL(f,n*4).buffer):new Float32Array(0),v=new Float32Array(s);return FL({source:x,target:v,sourceStartIndices:i,targetStartIndices:h,size:c,getData:g}),(!t||t.byteLength<v.byteLength+f)&&(t?.destroy(),t=e.createBuffer({byteLength:v.byteLength+f,usage:35050})),t.write(v,f),t}var Gc=class{constructor({device:t,attribute:r,timeline:n}){this.buffers=[],this.currentLength=0,this.device=t,this.transition=new Sn(n),this.attribute=r,this.attributeInTransition=DL(r),this.currentStartIndices=r.startIndices}get inProgress(){return this.transition.inProgress}start(t,r,n=1/0){this.settings=t,this.currentStartIndices=this.attribute.startIndices,this.currentLength=kL(this.attribute,r),this.transition.start({...t,duration:n})}update(){let t=this.transition.update();return t&&this.onUpdate(),t}setBuffer(t){this.attributeInTransition.setData({buffer:t,normalized:this.attribute.settings.normalized,value:this.attributeInTransition.value})}cancel(){this.transition.cancel()}delete(){this.cancel();for(let t of this.buffers)t.destroy();this.buffers.length=0}};var hu=class extends Gc{constructor({device:t,attribute:r,timeline:n}){super({device:t,attribute:r,timeline:n}),this.type="interpolation",this.transform=ttt(t,r)}start(t,r){let n=this.currentLength,s=this.currentStartIndices;if(super.start(t,r,t.duration),t.duration<=0){this.transition.cancel();return}let{buffers:i,attribute:o}=this;q0(i),i[0]=X0({device:this.device,buffer:i[0],attribute:o,fromLength:n,toLength:this.currentLength,fromStartIndices:s,getData:t.enter}),i[1]=$0({device:this.device,source:i[0],target:i[1]}),this.setBuffer(i[1]);let{transform:a}=this,c=a.model,l=Math.floor(this.currentLength/o.size);VL(o)&&(l/=2),c.setVertexCount(l),o.isConstant?(c.setAttributes({aFrom:i[0]}),c.setConstantAttributes({aTo:o.value})):c.setAttributes({aFrom:i[0],aTo:o.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:i[1]})}onUpdate(){let{duration:t,easing:r}=this.settings,{time:n}=this.transition,s=n/t;r&&(s=r(s));let{model:i}=this.transform,o={time:s};i.shaderInputs.setProps({interpolation:o}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}},ZQ=`uniform interpolationUniforms {
|
|
3118
|
+
`;function bJ(e,t){if(t.filter){let r=typeof t.filter=="string"?t.filter:`${e.name}_filterColor_ext`;return vJ(r)}if(t.sampler){let r=typeof t.sampler=="string"?t.sampler:`${e.name}_sampleColor`;return AJ(r)}return""}var TJ={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant",blendAlphaDstFactor:"zero"},Mn=class extends $e{constructor(){super(...arguments),this._colorEncoderState=null}render(t){return"pickingFBO"in t?this._drawPickingBuffer(t):super.render(t)}_drawPickingBuffer({layers:t,layerFilter:r,views:n,viewports:s,onViewportActive:i,pickingFBO:o,deviceRect:{x:a,y:c,width:l,height:f},cullRect:h,effects:u,pass:d="picking",pickZ:p,shaderModuleProps:m}){this.pickZ=p;let g=this._resetColorEncoder(p),x=[a,c,l,f],v=super.render({target:o,layers:t,layerFilter:r,views:n,viewports:s,onViewportActive:i,cullRect:h,effects:u?.filter(y=>y.useInPicking),pass:d,isPicking:!0,shaderModuleProps:m,clearColor:[0,0,0,0],colorMask:15,scissorRect:x});return this._colorEncoderState=null,{decodePickingColor:g&&EJ.bind(null,g),stats:v}}shouldDrawLayer(t){let{pickable:r,operation:n}=t.props;return r&&n.includes("draw")||n.includes("terrain")||n.includes("mask")}getShaderModuleProps(t,r,n){return{picking:{isActive:1,isAttribute:this.pickZ},lighting:{enabled:!1}}}getLayerParameters(t,r,n){let s={...t.props.parameters},{pickable:i,operation:o}=t.props;return!this._colorEncoderState||o.includes("terrain")?s.blend=!1:i&&o.includes("draw")&&(Object.assign(s,TJ),s.blend=!0,s.blendColor=MJ(this._colorEncoderState,t,n)),s}_resetColorEncoder(t){return this._colorEncoderState=t?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function MJ(e,t,r){let{byLayer:n,byAlpha:s}=e,i,o=n.get(t);return o?(o.viewports.push(r),i=o.a):(i=n.size+1,i<=255?(o={a:i,layer:t,viewports:[r]},n.set(t,o),s[i]=o):(H.warn("Too many pickable layers, only picking the first 255")(),i=0)),[0,0,0,i/255]}function EJ(e,t){let r=e.byAlpha[t[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(t)}}var Li={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"},Dc=Symbol.for("component"),on=Symbol.for("propTypes"),a0=Symbol.for("deprecatedProps"),Vs=Symbol.for("asyncPropDefaults"),rs=Symbol.for("asyncPropOriginal"),En=Symbol.for("asyncPropResolved");function er(e,t=()=>!0){return Array.isArray(e)?eO(e,t,[]):t(e)?[e]:[]}function eO(e,t,r){let n=-1;for(;++n<e.length;){let s=e[n];Array.isArray(s)?eO(s,t,r):t(s)&&r.push(s)}return r}function c0({target:e,source:t,start:r=0,count:n=1}){let s=t.length,i=n*s,o=0;for(let a=r;o<s;o++)e[a++]=t[o];for(;o<i;)o<i-o?(e.copyWithin(r+o,r,r+o),o*=2):(e.copyWithin(r+o,r,r+i-o),o=i);return e}vo();var Hh=class{constructor(t,r,n){this._loadCount=0,this._subscribers=new Set,this.id=t,this.context=n,this.setData(r)}subscribe(t){this._subscribers.add(t)}unsubscribe(t){this._subscribers.delete(t)}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(t,r){if(t===this._data&&!r)return;this._data=t;let n=++this._loadCount,s=t;typeof t=="string"&&(s=Me(t)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(i=>{this._loadCount===n&&(this.isLoaded=!0,this._error=void 0,this._content=i)}).catch(i=>{this._loadCount===n&&(this.isLoaded=!0,this._error=i||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=t);for(let i of this._subscribers)i.onChange(this.getData())}};var Gh=class{constructor(t){this.protocol=t.protocol||"resource://",this._context={device:t.device,gl:t.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(t){return t.startsWith(this.protocol)?!0:t in this._resources}add({resourceId:t,data:r,forceUpdate:n=!1,persistent:s=!0}){let i=this._resources[t];i?i.setData(r,n):(i=new Hh(t,r,this._context),this._resources[t]=i),i.persistent=s}remove(t){let r=this._resources[t];r&&(r.delete(),delete this._resources[t])}unsubscribe({consumerId:t}){let r=this._consumers[t];if(r){for(let n in r){let s=r[n],i=this._resources[s.resourceId];i&&i.unsubscribe(s)}delete this._consumers[t],this.prune()}}subscribe({resourceId:t,onChange:r,consumerId:n,requestId:s="default"}){let{_resources:i,protocol:o}=this;t.startsWith(o)&&(t=t.replace(o,""),i[t]||this.add({resourceId:t,data:null,persistent:!1}));let a=i[t];if(this._track(n,s,a,r),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let t in this._resources)this._resources[t].delete()}_track(t,r,n,s){let i=this._consumers,o=i[t]=i[t]||{},a=o[r],c=a&&a.resourceId&&this._resources[a.resourceId];c&&(c.unsubscribe(a),this.prune()),n&&(a?(a.onChange=s,a.resourceId=n.id):a={onChange:s,resourceId:n.id},o[r]=a,n.subscribe(a))}_prune(){this._pruneRequest=null;for(let t of Object.keys(this._resources)){let r=this._resources[t];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[t])}}};var SJ="layerManager.setLayers",wJ="layerManager.activateViewport",Xo=class{constructor(t,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{ae(wJ,this,a),a&&(this.context.viewport=a)};let{deck:n,stats:s,viewport:i,timeline:o}=r||{};this.layers=[],this.resourceManager=new Gh({device:t,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:t,gl:t?.gl,deck:n,shaderAssembler:Jg(t?.info?.shadingLanguage||"glsl"),defaultShaderModules:[KA],renderPass:void 0,stats:s||new Ze({id:"deck.gl"}),viewport:i||new Se({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:o||new jo,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let t of this.layers)this._finalizeLayer(t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);for(let n of this.layers){let s=n.getNeedsRedraw(t);r=r||s}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(t){this._needsRedraw=this._needsRedraw||t}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t}getLayers({layerIds:t}={}){return t?this.layers.filter(r=>t.find(n=>r.id.indexOf(n)===0)):this.layers}setProps(t){"debug"in t&&(this._debug=t.debug),"userData"in t&&(this.context.userData=t.userData),"layers"in t&&(this._nextLayers=t.layers),"onError"in t&&(this.context.onError=t.onError)}setLayers(t,r){ae(SJ,this,r,t),this._lastRenderedLayers=t;let n=er(t,Boolean);for(let s of n)s.context=this.context;this._updateLayers(this.layers,n)}updateLayers(){let t=this.needsUpdate();t&&(this.setNeedsRedraw(`updating layers: ${t}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,t)),this._nextLayers=null}addDefaultShaderModule(t){let{defaultShaderModules:r}=this.context;r.find(n=>n.name===t.name)||(r.push(t),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(t){let{defaultShaderModules:r}=this.context,n=r.findIndex(s=>s.name===t.name);n>=0&&(r.splice(n,1),this._defaultShaderModulesChanged=!0)}_handleError(t,r,n){n.raiseError(r,`${t} of ${n}`)}_updateLayers(t,r){let n={};for(let o of t)n[o.id]?H.warn(`Multiple old layers with same id ${o.id}`)():n[o.id]=o;if(this._defaultShaderModulesChanged){for(let o of t)o.setNeedsUpdate(),o.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let s=[];this._updateSublayersRecursively(r,n,s),this._finalizeOldLayers(n);let i=!1;for(let o of s)if(o.hasUniformTransition()){i=`Uniform transition in ${o}`;break}this._needsUpdate=i,this.layers=s}_updateSublayersRecursively(t,r,n){for(let s of t){s.context=this.context;let i=r[s.id];i===null&&H.warn(`Multiple new layers with same id ${s.id}`)(),r[s.id]=null;let o=null;try{this._debug&&i!==s&&s.validateProps(),i?(this._transferLayerState(i,s),this._updateLayer(s)):this._initializeLayer(s),n.push(s),o=s.isComposite?s.getSubLayers():null}catch(a){this._handleError("matching",a,s)}o&&this._updateSublayersRecursively(o,r,n)}}_finalizeOldLayers(t){for(let r in t){let n=t[r];n&&this._finalizeLayer(n)}}_initializeLayer(t){try{t._initialize(),t.lifecycle=Li.INITIALIZED}catch(r){this._handleError("initialization",r,t)}}_transferLayerState(t,r){r._transferState(t),r.lifecycle=Li.MATCHED,r!==t&&(t.lifecycle=Li.AWAITING_GC)}_updateLayer(t){try{t._update()}catch(r){this._handleError("update",r,t)}}_finalizeLayer(t){this._needsRedraw=this._needsRedraw||`finalized ${t}`,t.lifecycle=Li.AWAITING_FINALIZATION;try{t._finalize(),t.lifecycle=Li.FINALIZED}catch(r){this._handleError("finalization",r,t)}}};function dt(e,t,r){if(e===t)return!0;if(!r||!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!dt(e[n],t[n],r-1))return!1;return!0}if(Array.isArray(t))return!1;if(typeof e=="object"&&typeof t=="object"){let n=Object.keys(e),s=Object.keys(t);if(n.length!==s.length)return!1;for(let i of n)if(!t.hasOwnProperty(i)||!dt(e[i],t[i],r-1))return!1;return!0}return!1}var jh=class{constructor(t){this.views=[],this.width=100,this.height=100,this.viewState={},this.controllers={},this.timeline=t.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=t.eventManager,this._eventCallbacks={onViewStateChange:t.onViewStateChange,onInteractionStateChange:t.onInteractionStateChange},Object.seal(this),this.setProps(t)}finalize(){for(let t in this.controllers){let r=this.controllers[t];r&&r.finalize()}this.controllers={}}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t,this._needsRedraw=this._needsRedraw||t}updateViewStates(){for(let t in this.controllers){let r=this.controllers[t];r&&r.updateTransition()}}getViewports(t){return t?this._viewports.filter(r=>r.containsPixel(t)):this._viewports}getViews(){let t={};return this.views.forEach(r=>{t[r.id]=r}),t}getView(t){return this.views.find(r=>r.id===t)}getViewState(t){let r=typeof t=="string"?this.getView(t):t,n=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(n):n}getViewport(t){return this._viewportMap[t]}unproject(t,r){let n=this.getViewports(),s={x:t[0],y:t[1]};for(let i=n.length-1;i>=0;--i){let o=n[i];if(o.containsPixel(s)){let a=t.slice();return a[0]-=o.x,a[1]-=o.y,o.unproject(a,r)}}return null}setProps(t){t.views&&this._setViews(t.views),t.viewState&&this._setViewState(t.viewState),("width"in t||"height"in t)&&this._setSize(t.width,t.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(t,r){(t!==this.width||r!==this.height)&&(this.width=t,this.height=r,this.setNeedsUpdate("Size changed"))}_setViews(t){t=er(t,Boolean),this._diffViews(t,this.views)&&this.setNeedsUpdate("views changed"),this.views=t}_setViewState(t){t?(!dt(t,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=t):H.warn("missing `viewState` or `initialViewState`")()}_createController(t,r){let n=r.type;return new n({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:i=>this.getView(t.id)?.makeViewport({viewState:i,width:this.width,height:this.height})})}_updateController(t,r,n,s){let i=t.controller;if(i&&n){let o={...r,...i,id:t.id,x:n.x,y:n.y,width:n.width,height:n.height};return(!s||s.constructor!==i.type)&&(s=this._createController(t,o)),s&&s.setProps(o),s}return null}_rebuildViewports(){let{views:t}=this,r=this.controllers;this._viewports=[],this.controllers={};let n=!1;for(let s=t.length;s--;){let i=t[s],o=this.getViewState(i),a=i.makeViewport({viewState:o,width:this.width,height:this.height}),c=r[i.id],l=Boolean(i.controller);l&&!c&&(n=!0),(n||!l)&&c&&(c.finalize(),c=null),this.controllers[i.id]=this._updateController(i,o,a,c),a&&this._viewports.unshift(a)}for(let s in r){let i=r[s];i&&!this.controllers[s]&&i.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(t=>{t.id&&(this._viewportMap[t.id]=this._viewportMap[t.id]||t)})}_diffViews(t,r){return t.length!==r.length?!0:t.some((n,s)=>!t[s].equals(r[s]))}};var CJ=/([0-9]+\.?[0-9]*)(%|px)/;function zs(e){switch(typeof e){case"number":return{position:e,relative:!1};case"string":let t=CJ.exec(e);if(t&&t.length>=3){let r=t[2]==="%",n=parseFloat(t[1]);return{position:r?n/100:n,relative:r}}default:throw new Error(`Could not parse position string ${e}`)}}function Ws(e,t){return e.relative?Math.round(e.position*t):e.position}var gr=class{constructor(t){let{id:r,x:n=0,y:s=0,width:i="100%",height:o="100%",padding:a=null}=t;this.id=r||this.constructor.displayName||"view",this.props={...t,id:this.id},this._x=zs(n),this._y=zs(s),this._width=zs(i),this._height=zs(o),this._padding=a&&{left:zs(a.left||0),right:zs(a.right||0),top:zs(a.top||0),bottom:zs(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(t){return this===t?!0:this.constructor===t.constructor&&dt(this.props,t.props,2)}clone(t){let r=this.constructor;return new r({...this.props,...t})}makeViewport({width:t,height:r,viewState:n}){n=this.filterViewState(n);let s=this.getDimensions({width:t,height:r});if(!s.height||!s.width)return null;let i=this.getViewportType(n);return new i({...n,...this.props,...s})}getViewStateId(){let{viewState:t}=this.props;return typeof t=="string"?t:t?.id||this.id}filterViewState(t){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;let r={...t};for(let n in this.props.viewState)n!=="id"&&(r[n]=this.props.viewState[n]);return r}return t}getDimensions({width:t,height:r}){let n={x:Ws(this._x,t),y:Ws(this._y,r),width:Ws(this._width,t),height:Ws(this._height,r)};return this._padding&&(n.padding={left:Ws(this._padding.left,t),top:Ws(this._padding.top,r),right:Ws(this._padding.right,t),bottom:Ws(this._padding.bottom,r)}),n}get controller(){let t=this.props.controller;return t?t===!0?{type:this.ControllerType}:typeof t=="function"?{type:t}:{type:this.ControllerType,...t}:null}};var Sn=class{constructor(t){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=t}get inProgress(){return this._inProgress}start(t){this.cancel(),this.settings=t,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:t,settings:r}=this;this._handle=t.addChannel({delay:t.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 rO=()=>{},qh={BREAK:1,SNAP_TO_END:2,IGNORE:3},PJ=e=>e,IJ=qh.BREAK,$h=class{constructor(t){this._onTransitionUpdate=r=>{let{time:n,settings:{interpolator:s,startProps:i,endProps:o,duration:a,easing:c}}=r,l=c(n/a),f=s.interpolateProps(i,o,l);this.propsInTransition=this.getControllerState({...this.props,...f}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=t.getControllerState,this.propsInTransition=null,this.transition=new Sn(t.timeline),this.onViewStateChange=t.onViewStateChange||rO,this.onStateChange=t.onStateChange||rO}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(t){let r=!1,n=this.props;if(this.props=t,!n||this._shouldIgnoreViewportChange(n,t))return!1;if(this._isTransitionEnabled(t)){let s=n;if(this.transition.inProgress){let{interruption:i,endProps:o}=this.transition.settings;s={...n,...i===qh.SNAP_TO_END?o:this.propsInTransition||n}}this._triggerTransition(s,t),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(t){let{transitionDuration:r,transitionInterpolator:n}=t;return(r>0||r==="auto")&&Boolean(n)}_isUpdateDueToCurrentTransition(t){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(t,this.propsInTransition):!1}_shouldIgnoreViewportChange(t,r){return this.transition.inProgress?this.transition.settings.interruption===qh.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(t,r):!0}_triggerTransition(t,r){let n=this.getControllerState(t),s=this.getControllerState(r).shortestPathFrom(n),i=r.transitionInterpolator,o=i.getDuration?i.getDuration(t,r):r.transitionDuration;if(o===0)return;let a=i.initializeProps(t,s);this.propsInTransition={};let c={duration:o,easing:r.transitionEasing||PJ,interpolator:i,interruption:r.transitionInterruption||IJ,startProps:a.start,endProps:a.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(c),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(t){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),t?.(r)}}};function Bt(e,t){if(!e)throw new Error(t||"deck.gl: assertion failed.")}var Hs=class{constructor(t){let{compare:r,extract:n,required:s}=t;this._propsToCompare=r,this._propsToExtract=n||r,this._requiredProps=s}arePropsEqual(t,r){for(let n of this._propsToCompare)if(!(n in t)||!(n in r)||!te(t[n],r[n]))return!1;return!0}initializeProps(t,r){let n={},s={};for(let i of this._propsToExtract)(i in t||i in r)&&(n[i]=t[i],s[i]=r[i]);return this._checkRequiredProps(n),this._checkRequiredProps(s),{start:n,end:s}}getDuration(t,r){return r.transitionDuration}_checkRequiredProps(t){this._requiredProps&&this._requiredProps.forEach(r=>{let n=t[r];Bt(Number.isFinite(n)||Array.isArray(n),`${r} is required for transition`)})}};var RJ=["longitude","latitude","zoom","bearing","pitch"],OJ=["longitude","latitude","zoom"],re=class extends Hs{constructor(t={}){let r=Array.isArray(t)?t:t.transitionProps,n=Array.isArray(t)?{}:t;n.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:RJ,required:OJ},super(n.transitionProps),this.opts=n}initializeProps(t,r){let n=super.initializeProps(t,r),{makeViewport:s,around:i}=this.opts;if(s&&i){let o=s(t),a=s(r),c=o.unproject(i);n.start.around=i,Object.assign(n.end,{around:a.project(c),aroundPosition:c,width:r.width,height:r.height})}return n}interpolateProps(t,r,n){let s={};for(let i of this._propsToExtract)s[i]=Oe(t[i]||0,r[i]||0,n);if(r.aroundPosition&&this.opts.makeViewport){let i=this.opts.makeViewport({...r,...s});Object.assign(s,i.panByPosition(r.aroundPosition,Oe(t.around,r.around,n)))}return s}};var Gs={transitionDuration:0},LJ=300,l0=e=>1-(1-e)*(1-e),kc={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],MULTI_PAN:["multipanstart","multipanmove","multipanend"],DOUBLE_CLICK:["dblclick"],KEYBOARD:["keydown"]},Yo={},xr=class{constructor(t){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 $h({...t,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=t.eventManager,this.onViewStateChange=t.onViewStateChange||(()=>{}),this.onStateChange=t.onStateChange||(()=>{}),this.makeViewport=t.makeViewport}set events(t){this.toggleEvents(this._customEvents,!1),this.toggleEvents(t,!0),this._customEvents=t,this.props&&this.setProps(this.props)}finalize(){for(let t in this._events)this._events[t]&&this.eventManager?.off(t,this.handleEvent);this.transitionManager.finalize()}handleEvent(t){this._controllerState=void 0;let r=this._eventStartBlocked;switch(t.type){case"panstart":return r?!1:this._onPanStart(t);case"panmove":return this._onPan(t);case"panend":return this._onPanEnd(t);case"pinchstart":return r?!1:this._onPinchStart(t);case"pinchmove":return this._onPinch(t);case"pinchend":return this._onPinchEnd(t);case"multipanstart":return r?!1:this._onMultiPanStart(t);case"multipanmove":return this._onMultiPan(t);case"multipanend":return this._onMultiPanEnd(t);case"dblclick":return this._onDoubleClick(t);case"wheel":return this._onWheel(t);case"keydown":return this._onKeyDown(t);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(t){let{x:r,y:n}=this.props,{offsetCenter:s}=t;return[s.x-r,s.y-n]}isPointInBounds(t,r){let{width:n,height:s}=this.props;if(r&&r.handled)return!1;let i=t[0]>=0&&t[0]<=n&&t[1]>=0&&t[1]<=s;return i&&r&&r.stopPropagation(),i}isFunctionKeyPressed(t){let{srcEvent:r}=t;return Boolean(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(t){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},t);this._eventStartBlocked=r}setProps(t){t.dragMode&&(this.dragMode=t.dragMode),this.props=t,"transitionInterpolator"in t||(t.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(t);let{inertia:r}=t;this.inertia=Number.isFinite(r)?r:r===!0?LJ:0;let{scrollZoom:n=!0,dragPan:s=!0,dragRotate:i=!0,doubleClickZoom:o=!0,touchZoom:a=!0,touchRotate:c=!1,keyboard:l=!0}=t,f=Boolean(this.onViewStateChange);this.toggleEvents(kc.WHEEL,f&&n),this.toggleEvents(kc.PAN,f),this.toggleEvents(kc.PINCH,f&&(a||c)),this.toggleEvents(kc.MULTI_PAN,f&&c),this.toggleEvents(kc.DOUBLE_CLICK,f&&o),this.toggleEvents(kc.KEYBOARD,f&&l),this.scrollZoom=n,this.dragPan=s,this.dragRotate=i,this.doubleClickZoom=o,this.touchZoom=a,this.touchRotate=c,this.keyboard=l}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(t,r){this.eventManager&&t.forEach(n=>{this._events[n]!==r&&(this._events[n]=r,r?this.eventManager.on(n,this.handleEvent):this.eventManager.off(n,this.handleEvent))})}updateViewport(t,r=null,n={}){let s={...t.getViewportProps(),...r},i=this.controllerState!==t;if(this.state=t.getState(),this._setInteractionState(n),i){let o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:o,viewId:this.props.id})}}_onTransition(t){this.onViewStateChange({...t,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(t){Object.assign(this._interactionState,t),this.onStateChange(this._interactionState)}_onPanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let n=this.isFunctionKeyPressed(t)||t.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(n=!n);let s=this.controllerState[n?"panStart":"rotateStart"]({pos:r});return this._panMove=n,this.updateViewport(s,Gs,{isDragging:!0}),!0}_onPan(t){return this.isDragging()?this._panMove?this._onPanMove(t):this._onPanRotate(t):!1}_onPanEnd(t){return this.isDragging()?this._panMove?this._onPanMoveEnd(t):this._onPanRotateEnd(t):!1}_onPanMove(t){if(!this.dragPan)return!1;let r=this.getCenter(t),n=this.controllerState.pan({pos:r});return this.updateViewport(n,Gs,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(t){let{inertia:r}=this;if(this.dragPan&&r&&t.velocity){let n=this.getCenter(t),s=[n[0]+t.velocityX*r/2,n[1]+t.velocityY*r/2],i=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(i,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:l0},{isDragging:!1,isPanning:!0})}else{let n=this.controllerState.panEnd();this.updateViewport(n,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(t){if(!this.dragRotate)return!1;let r=this.getCenter(t),n=this.controllerState.rotate({pos:r});return this.updateViewport(n,Gs,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(t){let{inertia:r}=this;if(this.dragRotate&&r&&t.velocity){let n=this.getCenter(t),s=[n[0]+t.velocityX*r/2,n[1]+t.velocityY*r/2],i=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(i,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:l0},{isDragging:!1,isRotating:!0})}else{let n=this.controllerState.rotateEnd();this.updateViewport(n,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(t){if(!this.scrollZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;t.srcEvent.preventDefault();let{speed:n=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:i}=t,o=2/(1+Math.exp(-Math.abs(i*n)));i<0&&o!==0&&(o=1/o);let a=s?{...this._getTransitionProps({around:r}),transitionDuration:250}:Gs,c=this.controllerState.zoom({pos:r,scale:o});return this.updateViewport(c,a,{isZooming:!0,isPanning:!0}),!0}_onMultiPanStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let n=this.controllerState.rotateStart({pos:r});return this.updateViewport(n,Gs,{isDragging:!0}),!0}_onMultiPan(t){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(t);r[0]-=t.deltaX;let n=this.controllerState.rotate({pos:r});return this.updateViewport(n,Gs,{isDragging:!0,isRotating:!0}),!0}_onMultiPanEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&t.velocityY){let n=this.getCenter(t),s=[n[0],n[1]+=t.velocityY*r/2],i=this.controllerState.rotate({pos:s});this.updateViewport(i,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:l0},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let n=this.controllerState.rotateEnd();this.updateViewport(n,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(t){let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let n=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return Yo._startPinchRotation=t.rotation,Yo._lastPinchEvent=t,this.updateViewport(n,Gs,{isDragging:!0}),!0}_onPinch(t){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:n}=t,s=this.getCenter(t);r=r.zoom({pos:s,scale:n})}if(this.touchRotate){let{rotation:n}=t;r=r.rotate({deltaAngleX:Yo._startPinchRotation-n})}return this.updateViewport(r,Gs,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),Yo._lastPinchEvent=t,!0}_onPinchEnd(t){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:n}=Yo;if(this.touchZoom&&r&&n&&t.scale!==n.scale){let s=this.getCenter(t),i=this.controllerState.rotateEnd(),o=Math.log2(t.scale),a=(o-Math.log2(n.scale))/(t.deltaTime-n.deltaTime),c=Math.pow(2,o+a*r/2);i=i.zoom({pos:s,scale:c}).zoomEnd(),this.updateViewport(i,{...this._getTransitionProps({around:s}),transitionDuration:r,transitionEasing:l0},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return Yo._startPinchRotation=null,Yo._lastPinchEvent=null,!0}_onDoubleClick(t){if(!this.doubleClickZoom)return!1;let r=this.getCenter(t);if(!this.isPointInBounds(r,t))return!1;let n=this.isFunctionKeyPressed(t),s=this.controllerState.zoom({pos:r,scale:n?.5:2});return this.updateViewport(s,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(t){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(t),{zoomSpeed:n,moveSpeed:s,rotateSpeedX:i,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this,c,l={};switch(t.srcEvent.code){case"Minus":c=r?a.zoomOut(n).zoomOut(n):a.zoomOut(n),l.isZooming=!0;break;case"Equal":c=r?a.zoomIn(n).zoomIn(n):a.zoomIn(n),l.isZooming=!0;break;case"ArrowLeft":r?(c=a.rotateLeft(i),l.isRotating=!0):(c=a.moveLeft(s),l.isPanning=!0);break;case"ArrowRight":r?(c=a.rotateRight(i),l.isRotating=!0):(c=a.moveRight(s),l.isPanning=!0);break;case"ArrowUp":r?(c=a.rotateUp(o),l.isRotating=!0):(c=a.moveUp(s),l.isPanning=!0);break;case"ArrowDown":r?(c=a.rotateDown(o),l.isRotating=!0):(c=a.moveDown(s),l.isPanning=!0);break;default:return!1}return this.updateViewport(c,this._getTransitionProps(),l),!0}_getTransitionProps(t){let{transition:r}=this;return!r||!r.transitionInterpolator?Gs:t?{...r,transitionInterpolator:new re({...t,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var js=class{constructor(t,r){this._viewportProps=this.applyConstraints(t),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var nO=5,BJ=1.2,Xh=class extends js{constructor(t){let{width:r,height:n,latitude:s,longitude:i,zoom:o,bearing:a=0,pitch:c=0,altitude:l=1.5,position:f=[0,0,0],maxZoom:h=20,minZoom:u=0,maxPitch:d=60,minPitch:p=0,startPanLngLat:m,startZoomLngLat:g,startRotatePos:x,startBearing:v,startPitch:_,startZoom:y,normalize:b=!0}=t;Bt(Number.isFinite(i)),Bt(Number.isFinite(s)),Bt(Number.isFinite(o)),super({width:r,height:n,latitude:s,longitude:i,zoom:o,bearing:a,pitch:c,altitude:l,maxZoom:h,minZoom:u,maxPitch:d,minPitch:p,normalize:b,position:f},{startPanLngLat:m,startZoomLngLat:g,startRotatePos:x,startBearing:v,startPitch:_,startZoom:y}),this.makeViewport=t.makeViewport}panStart({pos:t}){return this._getUpdatedState({startPanLngLat:this._unproject(t)})}pan({pos:t,startPos:r}){let n=this.getState().startPanLngLat||this._unproject(r);if(!n)return this;let i=this.makeViewport(this.getViewportProps()).panByPosition(n,t);return this._getUpdatedState(i)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:t}){return this._getUpdatedState({startRotatePos:t,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:t,deltaAngleX:r=0,deltaAngleY:n=0}){let{startRotatePos:s,startBearing:i,startPitch:o}=this.getState();if(!s||i===void 0||o===void 0)return this;let a;return t?a=this._getNewRotation(t,s,o,i):a={bearing:i+r,pitch:o+n},this._getUpdatedState(a)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:t}){return this._getUpdatedState({startZoomLngLat:this._unproject(t),startZoom:this.getViewportProps().zoom})}zoom({pos:t,startPos:r,scale:n}){let{startZoom:s,startZoomLngLat:i}=this.getState();if(i||(s=this.getViewportProps().zoom,i=this._unproject(r)||this._unproject(t)),!i)return this;let{maxZoom:o,minZoom:a}=this.getViewportProps(),c=s+Math.log2(n);c=Mt(c,a,o);let l=this.makeViewport({...this.getViewportProps(),zoom:c});return this._getUpdatedState({zoom:c,...l.panByPosition(i,t)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(t=2){return this._zoomFromCenter(t)}zoomOut(t=2){return this._zoomFromCenter(1/t)}moveLeft(t=100){return this._panFromCenter([t,0])}moveRight(t=100){return this._panFromCenter([-t,0])}moveUp(t=100){return this._panFromCenter([0,t])}moveDown(t=100){return this._panFromCenter([0,-t])}rotateLeft(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-t})}rotateRight(t=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+t})}rotateUp(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+t})}rotateDown(t=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-t})}shortestPathFrom(t){let r=t.getViewportProps(),n={...this.getViewportProps()},{bearing:s,longitude:i}=n;return Math.abs(s-r.bearing)>180&&(n.bearing=s<0?s+360:s-360),Math.abs(i-r.longitude)>180&&(n.longitude=i<0?i+360:i-360),n}applyConstraints(t){let{maxZoom:r,minZoom:n,zoom:s}=t;t.zoom=Mt(s,n,r);let{maxPitch:i,minPitch:o,pitch:a}=t;t.pitch=Mt(a,o,i);let{normalize:c=!0}=t;return c&&Object.assign(t,hb(t)),t}_zoomFromCenter(t){let{width:r,height:n}=this.getViewportProps();return this.zoom({pos:[r/2,n/2],scale:t})}_panFromCenter(t){let{width:r,height:n}=this.getViewportProps();return this.pan({startPos:[r/2,n/2],pos:[r/2+t[0],n/2+t[1]]})}_getUpdatedState(t){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...t})}_unproject(t){let r=this.makeViewport(this.getViewportProps());return t&&r.unproject(t)}_getNewRotation(t,r,n,s){let i=t[0]-r[0],o=t[1]-r[1],a=t[1],c=r[1],{width:l,height:f}=this.getViewportProps(),h=i/l,u=0;o>0?Math.abs(f-c)>nO&&(u=o/(c-f)*BJ):o<0&&c>nO&&(u=1-a/c),u=Mt(u,-1,1);let{minPitch:d,maxPitch:p}=this.getViewportProps(),m=s+180*h,g=n;return u>0?g=n+u*(p-n):u<0&&(g=n-u*(d-n)),{pitch:g,bearing:m}}},Ko=class extends xr{constructor(){super(...arguments),this.ControllerState=Xh,this.transition={transitionDuration:300,transitionInterpolator:new re({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan"}setProps(t){t.position=t.position||[0,0,0];let r=this.props;super.setProps(t),(!r||r.height!==t.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...t,...this.state}))}};var f0=class extends gr{constructor(t={}){super(t)}getViewportType(){return tr}get ControllerType(){return Ko}};f0.displayName="MapView";var Bi=f0;var NJ=new Ri;function FJ(e,t){let r=e.order??1/0,n=t.order??1/0;return r-n}var Yh=class{constructor(t){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=t,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(t){let r=this._defaultEffects;if(!r.find(n=>n.id===t.id)){let n=r.findIndex(s=>FJ(s,t)>0);n<0?r.push(t):r.splice(n,0,t),t.setup(this._context),this._setEffects(this.effects)}}setProps(t){"effects"in t&&(dt(t.effects,this.effects,1)||this._setEffects(t.effects))}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(t){let r={};for(let s of this.effects)r[s.id]=s;let n=[];for(let s of t){let i=r[s.id],o=s;i&&i!==s?i.setProps?(i.setProps(s.props),o=i):i.cleanup(this._context):i||s.setup(this._context),n.push(o),delete r[s.id]}for(let s in r)r[s].cleanup(this._context);this.effects=n,this._resolvedEffects=n.concat(this._defaultEffects),t.some(s=>s instanceof Ri)||this._resolvedEffects.push(NJ),this._needsRedraw="effects changed"}finalize(){for(let t of this._resolvedEffects)t.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var Kh=class extends $e{shouldDrawLayer(t){let{operation:r}=t.props;return r.includes("draw")||r.includes("terrain")}};var DJ="deckRenderer.renderLayers",Zo=class{constructor(t){this.device=t,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Kh(t),this.pickLayersPass=new Mn(t),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(t){this.layerFilter!==t.layerFilter&&(this.layerFilter=t.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==t.drawPickingColors&&(this.drawPickingColors=t.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(t){if(!t.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,n={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...t};n.effects&&this._preRender(n.effects,n);let s=this.lastPostProcessEffect?this.renderBuffers[0]:n.target;this.lastPostProcessEffect&&(n.clearColor=[0,0,0,0],n.clearCanvas=!0);let i=r.render({...n,target:s});n.effects&&(this.lastPostProcessEffect&&(n.clearCanvas=t.clearCanvas===void 0?!0:t.clearCanvas),this._postRender(n.effects,n)),this.renderCount++,ae(DJ,this,i,t)}needsRedraw(t={clearRedrawFlags:!1}){let r=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:t}=this;for(let r of t)r.delete();t.length=0}_preRender(t,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let n of t)r.preRenderStats[n.id]=n.preRender(r),n.postRender&&(this.lastPostProcessEffect=n.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:t}=this,r=this.device.canvasContext.getDrawingBufferSize(),[n,s]=r;t.length===0&&[0,1].map(i=>{let o=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"},width:n,height:s});t.push(this.device.createFramebuffer({id:`deck-renderbuffer-${i}`,colorAttachments:[o]}))});for(let i of t)i.resize(r)}_postRender(t,r){let{renderBuffers:n}=this,s={...r,inputBuffer:n[0],swapBuffer:n[1]};for(let i of t)if(i.postRender){s.target=i.id===this.lastPostProcessEffect?r.target:void 0;let o=i.postRender(s);s.inputBuffer=o,s.swapBuffer=o===n[0]?n[1]:n[0]}}};var kJ={pickedColor:null,pickedObjectIndex:-1};function Eb({pickedColors:e,decodePickingColor:t,deviceX:r,deviceY:n,deviceRadius:s,deviceRect:i}){let{x:o,y:a,width:c,height:l}=i,f=s*s,h=-1,u=0;for(let d=0;d<l;d++){let p=d+a-n,m=p*p;if(m>f)u+=4*c;else for(let g=0;g<c;g++){if(e[u+3]-1>=0){let v=g+o-r,_=v*v+m;_<=f&&(f=_,h=u)}u+=4}}if(h>=0){let d=e.slice(h,h+4),p=t(d);if(p){let m=Math.floor(h/4/c),g=h/4-m*c;return{...p,pickedColor:d,pickedX:o+g,pickedY:a+m}}H.error("Picked non-existent layer. Is picking buffer corrupt?")()}return kJ}function Sb({pickedColors:e,decodePickingColor:t}){let r=new Map;if(e){for(let n=0;n<e.length;n+=4)if(e[n+3]-1>=0){let i=e.slice(n,n+4),o=i.join(",");if(!r.has(o)){let a=t(i);a?r.set(o,{...a,color:i}):H.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function h0({pickInfo:e,viewports:t,pixelRatio:r,x:n,y:s,z:i}){let o=t[0];t.length>1&&(o=UJ(e?.pickedViewports||t,{x:n,y:s}));let a;if(o){let c=[n-o.x,s-o.y];i!==void 0&&(c[2]=i),a=o.unproject(c)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:n,y:s,pixel:[n,s],coordinate:a,devicePixel:e&&"pickedX"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:r}}function wb(e){let{pickInfo:t,lastPickedInfo:r,mode:n,layers:s}=e,{pickedColor:i,pickedLayer:o,pickedObjectIndex:a}=t,c=o?[o]:[];if(n==="hover"){let h=r.index,u=r.layerId,d=o?o.props.id:null;if(d!==u||a!==h){if(d!==u){let p=s.find(m=>m.props.id===u);p&&c.unshift(p)}r.layerId=d,r.index=a,r.info=null}}let l=h0(e),f=new Map;return f.set(null,l),c.forEach(h=>{let u={...l};h===o&&(u.color=i,u.index=a,u.picked=!0),u=u0({layer:h,info:u,mode:n});let d=u.layer;h===o&&n==="hover"&&(r.info=u),f.set(d.id,u),n==="hover"&&d.updateAutoHighlight(u)}),f}function u0({layer:e,info:t,mode:r}){for(;e&&t;){let n=t.layer||null;t.sourceLayer=n,t.layer=e,t=e.getPickingInfo({info:t,mode:r,sourceLayer:n}),e=e.parent}return t}function UJ(e,t){for(let r=e.length-1;r>=0;r--){let n=e[r];if(n.containsPixel(t))return n}return e[0]}var Zh=class{constructor(t){this._pickable=!0,this.device=t,this.pickLayersPass=new Mn(t),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(t){"layerFilter"in t&&(this.layerFilter=t.layerFilter),"_pickable"in t&&(this._pickable=t._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObjectAsync(t){return this._pickClosestObjectAsync(t)}pickObjectsAsync(t){return this._pickVisibleObjectsAsync(t)}pickObject(t){return this._pickClosestObject(t)}pickObjects(t){return this._pickVisibleObjects(t)}getLastPickedObject({x:t,y:r,layers:n,viewports:s},i=this.lastPickedInfo.info){let o=i&&i.layer&&i.layer.id,a=i&&i.viewport&&i.viewport.id,c=o?n.find(u=>u.id===o):null,l=a&&s.find(u=>u.id===a)||s[0],f=l&&l.unproject([t-l.x,r-l.y]);return{...i,...{x:t,y:r,viewport:l,coordinate:f,layer:c}}}_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:t}=this.device.getDefaultCanvasContext();this.pickingFBO?.resize({width:t.width,height:t.height}),this.depthFBO?.resize({width:t.width,height:t.height})}_getPickable(t){if(this._pickable===!1)return null;let r=t.filter(n=>this.pickLayersPass.shouldDrawLayer(n)&&!n.isComposite);return r.length?r:null}async _pickClosestObjectAsync({layers:t,views:r,viewports:n,x:s,y:i,radius:o=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:f,effects:h}){let u=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(t);if(!d||n.length===0)return{result:[],emptyInfo:h0({viewports:n,x:s,y:i,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,i],!0),m=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],g=Math.round(o*u),{width:x,height:v}=this.pickingFBO,_=this._getPickingRect({deviceX:m[0],deviceY:m[1],deviceRadius:g,deviceWidth:x,deviceHeight:v}),y={x:s-o,y:i-o,width:o*2+1,height:o*2+1},b,T=[],C=new Set;for(let S=0;S<a;S++){let M;if(_){let I=this._drawAndSample({layers:d,views:r,viewports:n,onViewportActive:f,deviceRect:_,cullRect:y,effects:h,pass:`picking:${c}`});M=Eb({...I,deviceX:m[0],deviceY:m[1],deviceRadius:g,deviceRect:_})}else M={pickedColor:null,pickedObjectIndex:-1};let A;if(M.pickedLayer&&l&&this.depthFBO){let{pickedColors:I}=this._drawAndSample({layers:[M.pickedLayer],views:r,viewports:n,onViewportActive:f,deviceRect:{x:M.pickedX,y:M.pickedY,width:1,height:1},cullRect:y,effects:h,pass:`picking:${c}:z`},!0);I[3]&&(A=I[0])}M.pickedLayer&&S+1<a&&(C.add(M.pickedLayer),M.pickedLayer.disablePickingIndex(M.pickedObjectIndex)),b=wb({pickInfo:M,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:n,x:s,y:i,z:A,pixelRatio:u});for(let I of b.values())I.layer&&T.push(I);if(!M.pickedColor)break}for(let S of C)S.restorePickingColors();return{result:T,emptyInfo:b.get(null)}}_pickClosestObject({layers:t,views:r,viewports:n,x:s,y:i,radius:o=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:f,effects:h}){let u=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(t);if(!d||n.length===0)return{result:[],emptyInfo:h0({viewports:n,x:s,y:i,pixelRatio:u})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,i],!0),m=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],g=Math.round(o*u),{width:x,height:v}=this.pickingFBO,_=this._getPickingRect({deviceX:m[0],deviceY:m[1],deviceRadius:g,deviceWidth:x,deviceHeight:v}),y={x:s-o,y:i-o,width:o*2+1,height:o*2+1},b,T=[],C=new Set;for(let S=0;S<a;S++){let M;if(_){let I=this._drawAndSample({layers:d,views:r,viewports:n,onViewportActive:f,deviceRect:_,cullRect:y,effects:h,pass:`picking:${c}`});M=Eb({...I,deviceX:m[0],deviceY:m[1],deviceRadius:g,deviceRect:_})}else M={pickedColor:null,pickedObjectIndex:-1};let A;if(M.pickedLayer&&l&&this.depthFBO){let{pickedColors:I}=this._drawAndSample({layers:[M.pickedLayer],views:r,viewports:n,onViewportActive:f,deviceRect:{x:M.pickedX,y:M.pickedY,width:1,height:1},cullRect:y,effects:h,pass:`picking:${c}:z`},!0);I[3]&&(A=I[0])}M.pickedLayer&&S+1<a&&(C.add(M.pickedLayer),M.pickedLayer.disablePickingIndex(M.pickedObjectIndex)),b=wb({pickInfo:M,lastPickedInfo:this.lastPickedInfo,mode:c,layers:d,viewports:n,x:s,y:i,z:A,pixelRatio:u});for(let I of b.values())I.layer&&T.push(I);if(!M.pickedColor)break}for(let S of C)S.restorePickingColors();return{result:T,emptyInfo:b.get(null)}}async _pickVisibleObjectsAsync({layers:t,views:r,viewports:n,x:s,y:i,width:o=1,height:a=1,mode:c="query",maxObjects:l=null,onViewportActive:f,effects:h}){let u=this._getPickable(t);if(!u||n.length===0)return[];this._resizeBuffer();let d=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,i],!0),m=p.x,g=p.y+p.height,x=this.device.canvasContext.cssToDevicePixels([s+o,i+a],!0),v=x.x+x.width,_=x.y,y={x:m,y:_,width:v-m,height:g-_},b=this._drawAndSample({layers:u,views:r,viewports:n,onViewportActive:f,deviceRect:y,cullRect:{x:s,y:i,width:o,height:a},effects:h,pass:`picking:${c}`}),T=Sb(b),C=new Map,S=[],M=Number.isFinite(l);for(let A=0;A<T.length&&!(M&&S.length>=l);A++){let I=T[A],D={color:I.pickedColor,layer:null,index:I.pickedObjectIndex,picked:!0,x:s,y:i,pixelRatio:d};D=u0({layer:I.pickedLayer,info:D,mode:c});let k=D.layer.id;C.has(k)||C.set(k,new Set);let P=C.get(k),q=D.object??D.index;P.has(q)||(P.add(q),S.push(D))}return S}_pickVisibleObjects({layers:t,views:r,viewports:n,x:s,y:i,width:o=1,height:a=1,mode:c="query",maxObjects:l=null,onViewportActive:f,effects:h}){let u=this._getPickable(t);if(!u||n.length===0)return[];this._resizeBuffer();let d=this.device.canvasContext.cssToDeviceRatio(),p=this.device.canvasContext.cssToDevicePixels([s,i],!0),m=p.x,g=p.y+p.height,x=this.device.canvasContext.cssToDevicePixels([s+o,i+a],!0),v=x.x+x.width,_=x.y,y={x:m,y:_,width:v-m,height:g-_},b=this._drawAndSample({layers:u,views:r,viewports:n,onViewportActive:f,deviceRect:y,cullRect:{x:s,y:i,width:o,height:a},effects:h,pass:`picking:${c}`}),T=Sb(b),C=new Map,S=[],M=Number.isFinite(l);for(let A=0;A<T.length&&!(M&&S.length>=l);A++){let I=T[A],D={color:I.pickedColor,layer:null,index:I.pickedObjectIndex,picked:!0,x:s,y:i,pixelRatio:d};D=u0({layer:I.pickedLayer,info:D,mode:c});let k=D.layer.id;C.has(k)||C.set(k,new Set);let P=C.get(k),q=D.object??D.index;P.has(q)||(P.add(q),S.push(D))}return S}async _drawAndSampleAsync({layers:t,views:r,viewports:n,onViewportActive:s,deviceRect:i,cullRect:o,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:t,layerFilter:this.layerFilter,views:r,viewports:n,onViewportActive:s,pickingFBO:f,deviceRect:i,cullRect:o,effects:a,pass:c,pickZ:l,preRenderStats:{},isPicking:!0};for(let v of a)v.useInPicking&&(h.preRenderStats[v.id]=v.preRender(h));let{decodePickingColor:u}=this.pickLayersPass.render(h),{x:d,y:p,width:m,height:g}=i,x=new(l?Float32Array:Uint8Array)(m*g*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:d,sourceY:p,sourceWidth:m,sourceHeight:g,target:x}),{pickedColors:x,decodePickingColor:u}}_drawAndSample({layers:t,views:r,viewports:n,onViewportActive:s,deviceRect:i,cullRect:o,effects:a,pass:c},l=!1){let f=l?this.depthFBO:this.pickingFBO,h={layers:t,layerFilter:this.layerFilter,views:r,viewports:n,onViewportActive:s,pickingFBO:f,deviceRect:i,cullRect:o,effects:a,pass:c,pickZ:l,preRenderStats:{},isPicking:!0};for(let v of a)v.useInPicking&&(h.preRenderStats[v.id]=v.preRender(h));let{decodePickingColor:u}=this.pickLayersPass.render(h),{x:d,y:p,width:m,height:g}=i,x=new(l?Float32Array:Uint8Array)(m*g*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:d,sourceY:p,sourceWidth:m,sourceHeight:g,target:x}),{pickedColors:x,decodePickingColor:u}}_getPickingRect({deviceX:t,deviceY:r,deviceRadius:n,deviceWidth:s,deviceHeight:i}){let o=Math.max(0,t-n),a=Math.max(0,r-n),c=Math.min(s,t+n+1)-o,l=Math.min(i,r+n+1)-a;return c<=0||l<=0?null:{x:o,y:a,width:c,height:l}}};var VJ={"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}},zJ="top-left",sO="__root",d0=class{constructor({deck:t,parentElement:r}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=t,r?.classList.add("deck-widget-container"),this.parentElement=r}getWidgets(){return this.resolvedWidgets}setProps(t){if(t.widgets&&!dt(t.widgets,this.widgets,1)){let r=t.widgets.filter(Boolean);this._setWidgets(r)}}finalize(){for(let t of this.getWidgets())this._removeWidget(t);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(let t in this.containers)this.containers[t].remove()}addDefault(t){this.defaultWidgets.find(r=>r.id===t.id)||(this._addWidget(t),this.defaultWidgets.push(t),this._setWidgets(this.widgets))}onRedraw({viewports:t,layers:r}){let n=t.reduce((s,i)=>(s[i.id]=i,s),{});for(let s of this.getWidgets()){let{viewId:i}=s;if(i){let o=n[i];o&&(s.onViewportChange&&s.onViewportChange(o),s.onRedraw?.({viewports:[o],layers:r}))}else{if(s.onViewportChange)for(let o of t)s.onViewportChange(o);s.onRedraw?.({viewports:t,layers:r})}}this.lastViewports=n,this._updateContainers()}onHover(t,r){for(let n of this.getWidgets()){let{viewId:s}=n;(!s||s===t.viewport?.id)&&n.onHover?.(t,r)}}onEvent(t,r){let n=Ch[r.type];if(n)for(let s of this.getWidgets()){let{viewId:i}=s;(!i||i===t.viewport?.id)&&s[n]?.(t,r)}}_setWidgets(t){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 t){let s=r[n.id];s?s.viewId!==n.viewId||s.placement!==n.placement?(this._removeWidget(s),this._addWidget(n)):n!==s&&(s.setProps(n.props),n=s):this._addWidget(n),r[n.id]=null,this.resolvedWidgets.push(n)}for(let n in r){let s=r[n];s&&this._removeWidget(s)}this.widgets=t}_addWidget(t){let{viewId:r=null,placement:n=zJ}=t;t.widgetManager=this,t.deck=this.deck,t.rootElement=t._onAdd({deck:this.deck,viewId:r}),t.rootElement&&this._getContainer(r,n).append(t.rootElement),t.updateHTML()}_removeWidget(t){t.onRemove?.(),t.rootElement&&t.rootElement.remove(),t.rootElement=void 0,t.deck=void 0,t.widgetManager=void 0}_getContainer(t,r){let n=t||sO,s=this.containers[n];s||(s=document.createElement("div"),s.style.pointerEvents="none",s.style.position="absolute",s.style.overflow="hidden",this.parentElement?.append(s),this.containers[n]=s);let i=s.querySelector(`.${r}`);return i||(i=globalThis.document.createElement("div"),i.className=r,i.style.position="absolute",i.style.zIndex="2",Object.assign(i.style,VJ[r]),s.append(i)),i}_updateContainers(){let t=this.deck.width,r=this.deck.height;for(let n in this.containers){let s=this.lastViewports[n]||null,i=n===sO||s,o=this.containers[n];i?(o.style.display="block",o.style.left=`${s?s.x:0}px`,o.style.top=`${s?s.y:0}px`,o.style.width=`${s?s.width:t}px`,o.style.height=`${s?s.height:r}px`):o.style.display="none"}}};function Jo(e,t){t&&Object.entries(t).map(([r,n])=>{r.startsWith("--")?e.style.setProperty(r,n):e.style[r]=n})}function p0(e,t){t&&Object.keys(t).map(r=>{r.startsWith("--")?e.style.removeProperty(r):e.style[r]=""})}var et=class{constructor(t){this.viewId=null,this.props={...this.constructor.defaultProps,...t},this.id=this.props.id}setProps(t){let r=this.props,n=this.rootElement;n&&r.className!==t.className&&(r.className&&n.classList.remove(r.className),t.className&&n.classList.add(t.className)),n&&!dt(r.style,t.style,1)&&(p0(n,r.style),Jo(n,t.style)),Object.assign(this.props,t),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}onCreateRootElement(){let t=["deck-widget",this.className,this.props.className],r=document.createElement("div");return t.filter(n=>typeof n=="string"&&n.length>0).forEach(n=>r.classList.add(n)),Jo(r,this.props.style),r}_onAdd(t){return this.onAdd(t)??this.onCreateRootElement()}onAdd(t){}onRemove(){}onViewportChange(t){}onRedraw(t){}onHover(t,r){}onClick(t,r){}onDrag(t,r){}onDragStart(t,r){}onDragEnd(t,r){}};et.defaultProps={id:"widget",style:{},className:""};var WJ={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},Jh=class extends et{constructor(t={}){super(t),this.id="default-tooltip",this.placement="fill",this.className="deck-tooltip",this.isVisible=!1,this.setProps(t)}onCreateRootElement(){let t=document.createElement("div");return t.className=this.className,Object.assign(t.style,WJ),t}onRenderHTML(t){}onViewportChange(t){this.isVisible&&t.id===this.lastViewport?.id&&!t.equals(this.lastViewport)&&this.setTooltip(null),this.lastViewport=t}onHover(t){let{deck:r}=this,n=r&&r.props.getTooltip;if(!n)return;let s=n(t);this.setTooltip(s,t.x,t.y)}setTooltip(t,r,n){let s=this.rootElement;if(s){if(typeof t=="string")s.innerText=t;else if(t)t.text&&(s.innerText=t.text),t.html&&(s.innerHTML=t.html),t.className&&(s.className=t.className);else{this.isVisible=!1,s.style.display="none";return}this.isVisible=!0,s.style.display="block",s.style.transform=`translate(${r}px, ${n}px)`,t&&typeof t=="object"&&"style"in t&&Object.assign(s.style,t.style)}}};Jh.defaultProps={...et.defaultProps};it();iu();vo();function Di(){}var $Q=({isDragging:e})=>e?"grabbing":"grab",CL={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:Di,onWebGLInitialized:Di,onResize:Di,onViewStateChange:Di,onInteractionStateChange:Di,onBeforeRender:Di,onAfterRender:Di,onLoad:Di,onError:e=>H.error(e.message,e.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:$Q,getTooltip:null,debug:!1,drawPickingColors:!1},au=class{constructor(t){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 Ze({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:s}=this;if(n.type==="pointerleave")s.x=-1,s.y=-1,s.radius=0;else{if(n.leftButton||n.rightButton)return;{let i=n.offsetCenter;if(!i)return;s.x=i.x,s.y=i.y,s.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:s.x,y:s.y}),s.event=n},this._onEvent=n=>{let s=Ch[n.type],i=n.offsetCenter;if(!s||!i||!this.layerManager)return;let o=this.layerManager.getLayers(),a=this.deckPicker.getLastPickedObject({x:i.x,y:i.y,layers:o,viewports:this.getViewports(i)},this._lastPointerDownInfo),{layer:c}=a,l=c&&(c[s]||c.props[s]),f=this.props[s],h=!1;l&&(h=l.call(c,a,n)),h||(f?.(a,n),this.widgetManager.onEvent(a,n))},this._onPointerDown=n=>{if(this.device?.type==="webgpu")return;let s=n.offsetCenter,i=this._pick("pickObject","pickObject Time",{x:s.x,y:s.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=i.result[0]||i.emptyInfo},this.props={...CL,...t},t=this.props,t.viewState&&t.initialViewState&&H.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,t.device&&(this.device=t.device);let r=this.device;if(!r&&t.gl){t.gl instanceof WebGLRenderingContext&&H.error("WebGL1 context not supported.")();let n=this.props.deviceProps?.onResize;r=ou.attach(t.gl,{...this.props.deviceProps,onResize:(s,i)=>{let{width:o,height:a}=s.canvas;s.drawingBufferWidth=o,s.drawingBufferHeight=a,this._needsRedraw="Canvas resized",n?.(s,i)}})}r||(r=this._createDevice(t)),this.animationLoop=this._createAnimationLoop(r,t),this.setProps(t),t._typedArrayManagerProps&&Tn.setOptions(t._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(t){this.stats.get("setProps Time").timeStart(),"onLayerHover"in t&&H.removed("onLayerHover","onHover")(),"onLayerClick"in t&&H.removed("onLayerClick","onClick")(),t.initialViewState&&!dt(this.props.initialViewState,t.initialViewState,3)&&(this.viewState=t.initialViewState),Object.assign(this.props,t),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()}),t.device&&t.device.id!==this.device?.id&&(this.animationLoop?.stop(),this.canvas!==t.device.canvasContext?.canvas&&(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),H.log(`recreating animation loop for new device! id=${t.device.id}`)(),this.animationLoop=this._createAnimationLoop(t.device,t),this.animationLoop.start()),this.animationLoop?.setProps(r),t.useDevicePixels!==void 0&&this.device?.canvasContext&&this.device.canvasContext.setProps({useDevicePixels:t.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(t={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let r=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);let n=this.viewManager.needsRedraw(t),s=this.layerManager.needsRedraw(t),i=this.effectManager.needsRedraw(t),o=this.deckRenderer.needsRedraw(t);return r=r||n||s||i||o,r}redraw(t){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=t||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 Bt(this.viewManager),this.viewManager.views}getViewports(t){return Bt(this.viewManager),this.viewManager.getViewports(t)}getCanvas(){return this.canvas}pickObject(t){let r=this._pick("pickObject","pickObject Time",t).result;return r.length?r[0]:null}pickMultipleObjects(t){return t.depth=t.depth||10,this._pick("pickObject","pickMultipleObjects Time",t).result}pickObjects(t){return this._pick("pickObjects","pickObjects Time",t)}_addResources(t,r=!1){for(let n in t)this.layerManager.resourceManager.add({resourceId:n,data:t[n],forceUpdate:r})}_removeResources(t){for(let r of t)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(t){this.effectManager.addDefaultEffect(t)}_addDefaultShaderModule(t){this.layerManager.addDefaultShaderModule(t)}_removeDefaultShaderModule(t){this.layerManager?.removeDefaultShaderModule(t)}_pick(t,r,n){Bt(this.deckPicker);let{stats:s}=this;s.get("Pick Count").incrementCount(),s.get(r).timeStart();let i=this.deckPicker[t]({layers:this.layerManager.getLayers(n),views:this.viewManager.getViews(),viewports:this.getViewports(n),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...n});return s.get(r).timeEnd(),i}_createCanvas(t){let r=t.canvas;return typeof r=="string"&&(r=document.getElementById(r),Bt(r)),r||(r=document.createElement("canvas"),r.id=t.id||"deckgl-overlay",t.width&&typeof t.width=="number"&&(r.width=t.width),t.height&&typeof t.height=="number"&&(r.height=t.height),(t.parent||document.body).appendChild(r)),Object.assign(r.style,t.style),r}_setCanvasSize(t){if(!this.canvas)return;let{width:r,height:n}=t;if(r||r===0){let s=Number.isFinite(r)?`${r}px`:r;this.canvas.style.width=s}if(n||n===0){let s=Number.isFinite(n)?`${n}px`:n;this.canvas.style.position=t.style?.position||"absolute",this.canvas.style.height=s}}_updateCanvasSize(){let{canvas:t}=this;if(!t)return;let r=t.clientWidth??t.width,n=t.clientHeight??t.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(t,r){let{gl:n,onError:s}=r;return new Nc({device:t,autoResizeDrawingBuffer:!n,autoResizeViewport:!1,onInitialize:i=>this._setDevice(i.device),onRender:this._onRenderFrame.bind(this),onError:s})}_createDevice(t){let r=this.props.deviceProps?.createCanvasContext,n=typeof r=="object"?r:void 0,s={adapters:[],...t.deviceProps};s.adapters.includes(ou)||s.adapters.push(ou);let i={alphaMode:this.props.deviceProps?.type==="webgpu"?"premultiplied":void 0},o=this.props.deviceProps?.onResize;return Xn.createDevice({_reuseDevices:!0,type:"webgl",...s,createCanvasContext:{...i,...n,canvas:this._createCanvas(t),useDevicePixels:this.props.useDevicePixels,autoResize:!0},onResize:(a,c)=>{this._needsRedraw="Canvas resized",o?.(a,c)}})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:t}=this.props,r=Array.isArray(t)?t:t?[t]:[new Bi({id:"default-view"})];return r.length&&this.props.controller&&(r[0].props.controller=this.props.controller),r}_onContextLost(){let{onError:t}=this.props;this.animationLoop&&t&&t(new Error("WebGL context is lost"))}_pickAndCallback(){if(this.device?.type==="webgpu")return;let{_pickRequest:t}=this;if(t.event){let{result:r,emptyInfo:n}=this._pick("pickObject","pickObject Time",t);this.cursorState.isHovering=r.length>0;let s=n,i=!1;for(let o of r)s=o,i=o.layer?.onHover(o,t.event)||i;i||(this.props.onHover?.(s,t.event),this.widgetManager.onHover(s,t.event)),t.event=null}}_updateCursor(){let t=this.props.parent||this.canvas;t&&(t.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(t){if(this.device=t,!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 jo;r.play(),this.animationLoop.attachTimeline(r),this.eventManager=new wh(this.props.parent||this.canvas,{touchAction:this.props.touchAction,recognizers:Object.keys(ib).map(s=>{let[i,o,a,c]=ib[s],l=this.props.eventRecognizerOptions?.[s],f={...o,...l,event:s};return{recognizer:new i(f),recognizeWith:a,requestFailure:c}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let s in Ch)this.eventManager.on(s,this._onEvent);this.viewManager=new jh({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 Xo(this.device,{deck:this,stats:this.stats,viewport:n,timeline:r}),this.effectManager=new Yh({deck:this,device:this.device}),this.deckRenderer=new Zo(this.device),this.deckPicker=new Zh(this.device),this.widgetManager=new d0({deck:this,parentElement:this.canvas?.parentElement}),this.widgetManager.addDefault(new Jh),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(t,r){let{device:n,gl:s}=this.layerManager.context;this.props.onBeforeRender({device:n,gl:s});let i={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(i),i.pass==="screen"&&this.widgetManager.onRedraw({viewports:i.viewports,layers:i.layers}),this.props.onAfterRender({device:n,gl:s})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),H.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(t){let r=this.props.onViewStateChange(t)||t.viewState;this.viewState&&(this.viewState={...this.viewState,[t.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(t){this.cursorState.isDragging=t.isDragging||!1,this.props.onInteractionStateChange(t)}_getFrameStats(){let{stats:t}=this;t.get("frameRate").timeEnd(),t.get("frameRate").timeStart();let r=this.animationLoop.stats;t.get("GPU Time").addTime(r.get("GPU Time").lastTiming),t.get("CPU Time").addTime(r.get("CPU Time").lastTiming)}_getMetrics(){let{metrics:t,stats:r}=this;t.fps=r.get("frameRate").getHz(),t.setPropsTime=r.get("setProps Time").time,t.updateAttributesTime=r.get("Update Attributes").time,t.framesRedrawn=r.get("Redraw Count").count,t.pickTime=r.get("pickObject Time").time+r.get("pickMultipleObjects Time").time+r.get("pickObjects Time").time,t.pickCount=r.get("Pick Count").count,t.gpuTime=r.get("GPU Time").time,t.cpuTime=r.get("CPU Time").time,t.gpuTimePerFrame=r.get("GPU Time").getAverageTime(),t.cpuTimePerFrame=r.get("CPU Time").getAverageTime();let n=Xn.stats.get("Memory Usage");t.bufferMemory=n.get("Buffer Memory").count,t.textureMemory=n.get("Texture Memory").count,t.renderbufferMemory=n.get("Renderbuffer Memory").count,t.gpuMemory=n.get("GPU Memory").count}};au.defaultProps=CL;au.VERSION=vm;var In=au;it();it();function PL(e){switch(e){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return So(e)}}var IL=Eo;function cu(e,t,r){let n=r==="webgpu"&&t.type==="uint8"?"unorm8":t.type;return{attribute:e,format:t.size>1?`${n}x${t.size}`:t.type,byteOffset:t.offset||0}}function ki(e){return e.stride||e.size*e.bytesPerElement}function RL(e,t){return e.type===t.type&&e.size===t.size&&ki(e)===ki(t)&&(e.offset||0)===(t.offset||0)}function Kb(e,t){t.offset&&H.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let r=ki(e),n=t.vertexOffset!==void 0?t.vertexOffset:e.vertexOffset||0,s=t.elementOffset||0,i=n*r+s*e.bytesPerElement+(e.offset||0);return{...t,offset:i,stride:r}}function XQ(e,t){let r=Kb(e,t);return{high:r,low:{...r,offset:r.offset+e.size*4}}}var lu=class{constructor(t,r,n){this._buffer=null,this.device=t,this.id=r.id||"",this.size=r.size||1;let s=r.logicalType||r.type,i=s==="float64",{defaultValue:o}=r;o=Number.isFinite(o)?[o]:o||new Array(this.size).fill(0);let a;i?a="float32":!s&&r.isIndexed?a="uint32":a=s||"float32";let c=PL(s||a);this.doublePrecision=i,i&&r.fp64===!1&&(c=Float32Array),this.value=null,this.settings={...r,defaultType:c,defaultValue:o,logicalType:s,type:a,normalized:a.includes("norm"),size:this.size,bytesPerElement:c.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 t=this.getAccessor();return t.vertexOffset?t.vertexOffset*ki(t):0}get numInstances(){return this.state.numInstances}set numInstances(t){this.state.numInstances=t}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),Tn.release(this.state.allocatedValue)}getBuffer(){return this.state.constant?null:this.state.externalBuffer||this._buffer}getValue(t=this.id,r=null){let n={};if(this.state.constant){let s=this.value;if(r){let i=Kb(this.getAccessor(),r),o=i.offset/s.BYTES_PER_ELEMENT,a=i.size||this.size;n[t]=s.subarray(o,o+a)}else n[t]=s}else n[t]=this.getBuffer();return this.doublePrecision&&(this.value instanceof Float64Array?n[`${t}64Low`]=n[t]:n[`${t}64Low`]=new Float32Array(this.size)),n}_getBufferLayout(t=this.id,r=null){let n=this.getAccessor(),s=[],i={name:this.id,byteStride:ki(n),attributes:s};if(this.doublePrecision){let o=XQ(n,r||{});s.push(cu(t,{...n,...o.high},this.device.type),cu(`${t}64Low`,{...n,...o.low},this.device.type))}else if(r){let o=Kb(n,r);s.push(cu(t,{...n,...o},this.device.type))}else s.push(cu(t,n,this.device.type));return i}setAccessor(t){this.state.bufferAccessor=t}getAccessor(){return this.state.bufferAccessor}getBounds(){if(this.state.bounds)return this.state.bounds;let t=null;if(this.state.constant&&this.value){let r=Array.from(this.value);t=[r,r]}else{let{value:r,numInstances:n,size:s}=this,i=n*s;if(r&&i&&r.length>=i){let o=new Array(s).fill(1/0),a=new Array(s).fill(-1/0);for(let c=0;c<i;)for(let l=0;l<s;l++){let f=r[c++];f<o[l]&&(o[l]=f),f>a[l]&&(a[l]=f)}t=[o,a]}}return this.state.bounds=t,t}setData(t){let{state:r}=this,n;ArrayBuffer.isView(t)?n={value:t}:t instanceof at?n={buffer:t}:n=t;let s={...this.settings,...n};if(ArrayBuffer.isView(n.value)){if(!n.type)if(this.doublePrecision&&n.value instanceof Float64Array)s.type="float32";else{let o=IL(n.value);s.type=s.normalized?o.replace("int","norm"):o}s.bytesPerElement=n.value.BYTES_PER_ELEMENT,s.stride=ki(s)}if(r.bounds=null,n.constant){let i=n.value;if(i=this._normalizeValue(i,[],0),this.settings.normalized&&(i=this.normalizeConstant(i)),!(!r.constant||!this._areValuesEqual(i,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=ArrayBuffer.isView(i)?i:new Float32Array(i)}else if(n.buffer){let i=n.buffer;r.externalBuffer=i,r.constant=!1,this.value=n.value||null}else if(n.value){this._checkExternalBuffer(n);let i=n.value;r.externalBuffer=null,r.constant=!1,this.value=i;let{buffer:o}=this,a=ki(s),c=(s.vertexOffset||0)*a;if(this.doublePrecision&&i instanceof Float64Array&&(i=Qg(i,s)),this.settings.isIndexed){let f=this.settings.defaultType;i.constructor!==f&&(i=new f(i))}let l=i.byteLength+c+a*2;(!o||o.byteLength<l)&&(o=this._createBuffer(l)),o.write(i,c)}return this.setAccessor(s),!0}updateSubBuffer(t={}){this.state.bounds=null;let r=this.value,{startOffset:n=0,endOffset:s}=t;this.buffer.write(this.doublePrecision&&r instanceof Float64Array?Qg(r,{size:this.size,startIndex:n,endIndex:s}):r.subarray(n,s),n*r.BYTES_PER_ELEMENT+this.byteOffset)}allocate(t,r=!1){let{state:n}=this,s=n.allocatedValue,i=Tn.allocate(s,t+1,{size:this.size,type:this.settings.defaultType,copy:r});this.value=i;let{byteOffset:o}=this,{buffer:a}=this;return(!a||a.byteLength<i.byteLength+o)&&(a=this._createBuffer(i.byteLength+o),r&&s&&a.write(s instanceof Float64Array?Qg(s,this):s,o)),n.allocatedValue=i,n.constant=!1,n.externalBuffer=null,this.setAccessor(this.settings),!0}_checkExternalBuffer(t){let{value:r}=t;if(!ArrayBuffer.isView(r))throw new Error(`Attribute ${this.id} value is not TypedArray`);let n=this.settings.defaultType,s=!1;if(this.doublePrecision&&(s=r.BYTES_PER_ELEMENT<4),s)throw new Error(`Attribute ${this.id} does not support ${r.constructor.name}`);!(r instanceof n)&&this.settings.normalized&&!("normalized"in t)&&H.warn(`Attribute ${this.id} is normalized`)()}normalizeConstant(t){switch(this.settings.type){case"snorm8":return new Float32Array(t).map(r=>(r+128)/255*2-1);case"snorm16":return new Float32Array(t).map(r=>(r+32768)/65535*2-1);case"unorm8":return new Float32Array(t).map(r=>r/255);case"unorm16":return new Float32Array(t).map(r=>r/65535);default:return t}}_normalizeValue(t,r,n){let{defaultValue:s,size:i}=this.settings;if(Number.isFinite(t))return r[n]=t,r;if(!t){let o=i;for(;--o>=0;)r[n+o]=s[o];return r}switch(i){case 4:r[n+3]=Number.isFinite(t[3])?t[3]:s[3];case 3:r[n+2]=Number.isFinite(t[2])?t[2]:s[2];case 2:r[n+1]=Number.isFinite(t[1])?t[1]:s[1];case 1:r[n+0]=Number.isFinite(t[0])?t[0]:s[0];break;default:let o=i;for(;--o>=0;)r[n+o]=Number.isFinite(t[o])?t[o]:s[o]}return r}_areValuesEqual(t,r){if(!t||!r)return!1;let{size:n}=this;for(let s=0;s<n;s++)if(t[s]!==r[s])return!1;return!0}_createBuffer(t){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?at.INDEX:at.VERTEX)|at.COPY_DST,indexType:r?n:void 0,byteLength:t}),this._buffer}};var OL=[],LL=[];function ue(e,t=0,r=1/0){let n=OL,s={index:-1,data:e,target:[]};return e?typeof e[Symbol.iterator]=="function"?n=e:e.length>0&&(LL.length=e.length,n=LL):n=OL,(t>0||Number.isFinite(r))&&(n=(Array.isArray(n)?n:Array.from(n)).slice(t,r),s.index=t-1),{iterable:n,objectInfo:s}}function z0(e){return e&&e[Symbol.asyncIterator]}function W0(e,t){let{size:r,stride:n,offset:s,startIndices:i,nested:o}=t,a=e.BYTES_PER_ELEMENT,c=n?n/a:r,l=s?s/a:0,f=Math.floor((e.length-l)/c);return(h,{index:u,target:d})=>{if(!i){let x=u*c+l;for(let v=0;v<r;v++)d[v]=e[x+v];return d}let p=i[u],m=i[u+1]||f,g;if(o){g=new Array(m-p);for(let x=p;x<m;x++){let v=x*c+l;d=new Array(r);for(let _=0;_<r;_++)d[_]=e[v+_];g[x-p]=d}}else if(c===r)g=e.subarray(p*r+l,m*r+l);else{g=new e.constructor((m-p)*r);let x=0;for(let v=p;v<m;v++){let _=v*c+l;for(let y=0;y<r;y++)g[x++]=e[_+y]}}return g}}var BL=[],fu=[[0,1/0]];function NL(e,t){if(e===fu||(t[0]<0&&(t[0]=0),t[0]>=t[1]))return e;let r=[],n=e.length,s=0;for(let i=0;i<n;i++){let o=e[i];o[1]<t[0]?(r.push(o),s=i+1):o[0]>t[1]?r.push(o):t=[Math.min(o[0],t[0]),Math.max(o[1],t[1])]}return r.splice(s,0,t),r}var KQ={interpolation:{duration:0,easing:e=>e},spring:{stiffness:.05,damping:.5}};function H0(e,t){if(!e)return null;Number.isFinite(e)&&(e={type:"interpolation",duration:e});let r=e.type||"interpolation";return{...KQ[r],...t,...e,type:r}}var qs=class extends lu{constructor(t,r){super(t,r,{startIndices:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:fu}),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(t){this.state.startIndices=t}needsUpdate(){return this.state.needsUpdate}needsRedraw({clearChangedFlags:t=!1}={}){let r=this.state.needsRedraw;return this.state.needsRedraw=r&&!t,r}layoutChanged(){return this.state.layoutChanged}setAccessor(t){var r;(r=this.state).layoutChanged||(r.layoutChanged=!RL(t,this.getAccessor())),super.setAccessor(t)}getUpdateTriggers(){let{accessor:t}=this.settings;return[this.id].concat(typeof t!="function"&&t||[])}supportsTransition(){return Boolean(this.settings.transition)}getTransitionSetting(t){if(!t||!this.supportsTransition())return null;let{accessor:r}=this.settings,n=this.settings.transition,s=Array.isArray(r)?t[r.find(i=>t[i])]:t[r];return H0(s,n)}setNeedsUpdate(t=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||t,this.setNeedsRedraw(t),r){let{startRow:n=0,endRow:s=1/0}=r;this.state.updateRanges=NL(this.state.updateRanges,[n,s])}else this.state.updateRanges=fu}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=BL}setNeedsRedraw(t=this.id){this.state.needsRedraw=this.state.needsRedraw||t}allocate(t){let{state:r,settings:n}=this;return n.noAlloc?!1:n.update?(super.allocate(t,r.updateRanges!==fu),!0):!1}updateBuffer({numInstances:t,data:r,props:n,context:s}){if(!this.needsUpdate())return!1;let{state:{updateRanges:i},settings:{update:o,noAlloc:a}}=this,c=!0;if(o){for(let[l,f]of i)o.call(s,this,{data:r,startRow:l,endRow:f,props:n,numInstances:t});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLength<this.value.byteLength+this.byteOffset)this.setData({value:this.value,constant:this.constant}),this.constant=!1;else for(let[l,f]of i){let h=Number.isFinite(l)?this.getVertexOffset(l):0,u=Number.isFinite(f)?this.getVertexOffset(f):a||!Number.isFinite(t)?this.value.length:t*this.size;super.updateSubBuffer({startOffset:h,endOffset:u})}this._checkAttributeArray()}else c=!1;return this.clearNeedsUpdate(),this.setNeedsRedraw(),c}setConstantValue(t,r){let n=this.device.type==="webgpu";if(n||r===void 0||typeof r=="function"){if(n&&typeof r!="function"){let o=this._normalizeValue(r,[],0);this._areValuesEqual(o,this.value)||this.setNeedsUpdate("WebGPU constant updated")}return!1}let s=this.settings.transform&&t?this.settings.transform.call(t,r):r;return this.setData({constant:!0,value:s})&&this.setNeedsRedraw(),this.clearNeedsUpdate(),!0}setExternalBuffer(t){let{state:r}=this;return t?(this.clearNeedsUpdate(),r.lastExternalBuffer===t||(r.lastExternalBuffer=t,this.setNeedsRedraw(),this.setData(t)),!0):(r.lastExternalBuffer=null,!1)}setBinaryValue(t,r=null){let{state:n,settings:s}=this;if(!t)return n.binaryValue=null,n.binaryAccessor=null,!1;if(s.noAlloc)return!1;if(n.binaryValue===t)return this.clearNeedsUpdate(),!0;if(n.binaryValue=t,this.setNeedsRedraw(),s.transform||r!==this.startIndices){ArrayBuffer.isView(t)&&(t={value:t});let o=t;Bt(ArrayBuffer.isView(o.value),`invalid ${s.accessor}`);let a=Boolean(o.size)&&o.size!==this.size;return n.binaryAccessor=W0(o.value,{size:o.size||this.size,stride:o.stride,offset:o.offset,startIndices:r,nested:a}),!1}return this.clearNeedsUpdate(),this.setData(t),!0}getVertexOffset(t){let{startIndices:r}=this;return(r?t<r.length?r[t]:this.numInstances:t)*this.size}getValue(){let t=this.settings.shaderAttributes,r=super.getValue();if(!t)return r;for(let n in t)Object.assign(r,super.getValue(n,t[n]));return r}getBufferLayout(t){this.state.layoutChanged=!1;let r=this.settings.shaderAttributes,n=super._getBufferLayout(),{stepMode:s}=this.settings;if(s==="dynamic"?n.stepMode=t?t.isInstanced?"instance":"vertex":"instance":n.stepMode=s??"vertex",!r)return n;for(let i in r){let o=super._getBufferLayout(i,r[i]);n.attributes.push(...o.attributes)}return n}_autoUpdater(t,{data:r,startRow:n,endRow:s,props:i,numInstances:o}){if(t.constant&&this.context.device.type!=="webgpu")return;let{settings:a,state:c,value:l,size:f,startIndices:h}=t,{accessor:u,transform:d}=a,p=c.binaryAccessor||(typeof u=="function"?u:i[u]);typeof p!="function"&&typeof u=="string"&&(p=()=>i[u]),Bt(typeof p=="function",`accessor "${u}" is not a function`);let m=t.getVertexOffset(n),{iterable:g,objectInfo:x}=ue(r,n,s);for(let v of g){x.index++;let _=p(v,x);if(d&&(_=d.call(this,_)),h){let y=(x.index<h.length-1?h[x.index+1]:o)-h[x.index];if(_&&Array.isArray(_[0])){let b=m;for(let T of _)t._normalizeValue(T,l,b),b+=f}else _&&_.length>f?l.set(_,m):(t._normalizeValue(_,x.target,0),c0({target:l,source:x.target,start:m,count:y}));m+=y*f}else t._normalizeValue(_,l,m),m+=f}}_validateAttributeUpdaters(){let{settings:t}=this;if(!(t.noAlloc||typeof t.update=="function"))throw new Error(`Attribute ${this.id} missing update or accessor`)}_checkAttributeArray(){let{value:t}=this,r=Math.min(4,this.size);if(t&&t.length>=r){let n=!0;switch(r){case 4:n=n&&Number.isFinite(t[3]);case 3:n=n&&Number.isFinite(t[2]);case 2:n=n&&Number.isFinite(t[1]);case 1:n=n&&Number.isFinite(t[0]);break;default:n=!1}if(!n)throw new Error(`Illegal attribute generated for ${this.id}`)}}};function Zb(e){let{source:t,target:r,start:n=0,size:s,getData:i}=e,o=e.end||r.length,a=t.length,c=o-n;if(a>c){r.set(t.subarray(0,c),n);return}if(r.set(t,n),!i)return;let l=a;for(;l<c;){let f=i(l,t);for(let h=0;h<s;h++)r[n+l]=f[h]||0,l++}}function FL({source:e,target:t,size:r,getData:n,sourceStartIndices:s,targetStartIndices:i}){if(!s||!i)return Zb({source:e,target:t,size:r,getData:n}),t;let o=0,a=0,c=n&&((f,h)=>n(f+a,h)),l=Math.min(s.length,i.length);for(let f=1;f<l;f++){let h=s[f]*r,u=i[f]*r;Zb({source:e.subarray(o,h),target:t,start:a,end:u,size:r,getData:c}),o=h,a=u}return a<t.length&&Zb({source:[],target:t,start:a,size:r,getData:c}),t}function DL(e){let{device:t,settings:r,value:n}=e,s=new qs(t,r);return s.setData({value:n instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:r.normalized}),s}function G0(e){switch(e){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 "${e}"`)}}function j0(e){switch(e){case 1:return"float32";case 2:return"float32x2";case 3:return"float32x3";case 4:return"float32x4";default:throw new Error("invalid type size")}}function q0(e){e.push(e.shift())}function kL(e,t){let{doublePrecision:r,settings:n,value:s,size:i}=e,o=r&&s instanceof Float64Array?2:1,a=0,{shaderAttributes:c}=e.settings;if(c)for(let l of Object.values(c))a=Math.max(a,l.vertexOffset??0);return(n.noAlloc?s.length:(t+a)*i)*o}function $0({device:e,source:t,target:r}){return(!r||r.byteLength<t.byteLength)&&(r?.destroy(),r=e.createBuffer({byteLength:t.byteLength,usage:t.usage})),r}function X0({device:e,buffer:t,attribute:r,fromLength:n,toLength:s,fromStartIndices:i,getData:o=a=>a}){let a=r.doublePrecision&&r.value instanceof Float64Array?2:1,c=r.size*a,l=r.byteOffset,f=r.settings.bytesPerElement<4?l/r.settings.bytesPerElement*4:l,h=r.startIndices,u=i&&h,d=r.isConstant;if(!u&&t&&n>=s)return t;let p=r.value instanceof Float64Array?Float32Array:r.value.constructor,m=d?r.value:new p(r.getBuffer().readSyncWebGL(l,s*p.BYTES_PER_ELEMENT).buffer);if(r.settings.normalized&&!d){let _=o;o=(y,b)=>r.normalizeConstant(_(y,b))}let g=d?(_,y)=>o(m,y):(_,y)=>o(m.subarray(_+l,_+l+c),y),x=t?new Float32Array(t.readSyncWebGL(f,n*4).buffer):new Float32Array(0),v=new Float32Array(s);return FL({source:x,target:v,sourceStartIndices:i,targetStartIndices:h,size:c,getData:g}),(!t||t.byteLength<v.byteLength+f)&&(t?.destroy(),t=e.createBuffer({byteLength:v.byteLength+f,usage:35050})),t.write(v,f),t}var Gc=class{constructor({device:t,attribute:r,timeline:n}){this.buffers=[],this.currentLength=0,this.device=t,this.transition=new Sn(n),this.attribute=r,this.attributeInTransition=DL(r),this.currentStartIndices=r.startIndices}get inProgress(){return this.transition.inProgress}start(t,r,n=1/0){this.settings=t,this.currentStartIndices=this.attribute.startIndices,this.currentLength=kL(this.attribute,r),this.transition.start({...t,duration:n})}update(){let t=this.transition.update();return t&&this.onUpdate(),t}setBuffer(t){this.attributeInTransition.setData({buffer:t,normalized:this.attribute.settings.normalized,value:this.attributeInTransition.value})}cancel(){this.transition.cancel()}delete(){this.cancel();for(let t of this.buffers)t.destroy();this.buffers.length=0}};var hu=class extends Gc{constructor({device:t,attribute:r,timeline:n}){super({device:t,attribute:r,timeline:n}),this.type="interpolation",this.transform=ttt(t,r)}start(t,r){let n=this.currentLength,s=this.currentStartIndices;if(super.start(t,r,t.duration),t.duration<=0){this.transition.cancel();return}let{buffers:i,attribute:o}=this;q0(i),i[0]=X0({device:this.device,buffer:i[0],attribute:o,fromLength:n,toLength:this.currentLength,fromStartIndices:s,getData:t.enter}),i[1]=$0({device:this.device,source:i[0],target:i[1]}),this.setBuffer(i[1]);let{transform:a}=this,c=a.model,l=Math.floor(this.currentLength/o.size);VL(o)&&(l/=2),c.setVertexCount(l),o.isConstant?(c.setAttributes({aFrom:i[0]}),c.setConstantAttributes({aTo:o.value})):c.setAttributes({aFrom:i[0],aTo:o.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:i[1]})}onUpdate(){let{duration:t,easing:r}=this.settings,{time:n}=this.transition,s=n/t;r&&(s=r(s));let{model:i}=this.transform,o={time:s};i.shaderInputs.setProps({interpolation:o}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}},ZQ=`uniform interpolationUniforms {
|
|
3119
3119
|
float time;
|
|
3120
3120
|
} interpolation;
|
|
3121
3121
|
`,UL={name:"interpolation",vs:ZQ,uniformTypes:{time:"f32"}},JQ=`#version 300 es
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "A suite of 3D-enabled data visualization overlays, suitable for react-map-gl",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"version": "9.2.
|
|
6
|
+
"version": "9.2.4",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"webgl",
|
|
9
9
|
"visualization",
|
|
@@ -39,19 +39,19 @@
|
|
|
39
39
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@deck.gl/aggregation-layers": "9.2.
|
|
43
|
-
"@deck.gl/arcgis": "9.2.
|
|
44
|
-
"@deck.gl/carto": "9.2.
|
|
45
|
-
"@deck.gl/core": "9.2.
|
|
46
|
-
"@deck.gl/extensions": "9.2.
|
|
47
|
-
"@deck.gl/geo-layers": "9.2.
|
|
48
|
-
"@deck.gl/google-maps": "9.2.
|
|
49
|
-
"@deck.gl/json": "9.2.
|
|
50
|
-
"@deck.gl/layers": "9.2.
|
|
51
|
-
"@deck.gl/mapbox": "9.2.
|
|
52
|
-
"@deck.gl/mesh-layers": "9.2.
|
|
53
|
-
"@deck.gl/react": "9.2.
|
|
54
|
-
"@deck.gl/widgets": "9.2.
|
|
42
|
+
"@deck.gl/aggregation-layers": "9.2.4",
|
|
43
|
+
"@deck.gl/arcgis": "9.2.4",
|
|
44
|
+
"@deck.gl/carto": "9.2.4",
|
|
45
|
+
"@deck.gl/core": "9.2.4",
|
|
46
|
+
"@deck.gl/extensions": "9.2.4",
|
|
47
|
+
"@deck.gl/geo-layers": "9.2.4",
|
|
48
|
+
"@deck.gl/google-maps": "9.2.4",
|
|
49
|
+
"@deck.gl/json": "9.2.4",
|
|
50
|
+
"@deck.gl/layers": "9.2.4",
|
|
51
|
+
"@deck.gl/mapbox": "9.2.4",
|
|
52
|
+
"@deck.gl/mesh-layers": "9.2.4",
|
|
53
|
+
"@deck.gl/react": "9.2.4",
|
|
54
|
+
"@deck.gl/widgets": "9.2.4",
|
|
55
55
|
"@loaders.gl/core": "^4.2.0",
|
|
56
56
|
"@luma.gl/core": "^9.2.2",
|
|
57
57
|
"@luma.gl/engine": "^9.2.2"
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"optional": true
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "a23f59064b36dcb4428bbb00b5ce70a647842ed3"
|
|
76
76
|
}
|