@mapvx/web-components-ssr 1.6.1 → 1.7.0-dev.1

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.
@@ -0,0 +1,1318 @@
1
+ import{i as u,n as s,o as w$1,t as r}from"./main.js";import{A as _i$1,B as le$2,C as Ve$2,D as Xe$2,E as X$2,F as ir$2,G as st$1,H as nt$1,I as it$1,J as ui$1,K as ti$1,L as j$3,M as de$3,N as et$1,O as Y$1,P as f$1,Q as x,R as je$2,W as rt$1,X as v,Y as ut$1,_ as P$2,a as Di$1,d as Je$1,et as ze$2,g as Ne$2,j as ci$1,k as Ze$1,l as I$2,o as Fe$2,p as L$1,q as tt$1,s as Ge$2,t as $$2,w as Vr$2,x as Se$3,y as Qr$2}from"./chunk-CzASft0S.js";import{C as Wp$1,F as ei$1,H as ir$3,I as fe$2,K as kv,O as Z$2,Q as qr$2,S as Vv,U as k$1,V as hr$2,X as pe$3,a as Hr$2,at as zi$1,b as Uf$1,c as Ki$1,d as Le$3,et as ti$2,f as Mt$2,g as Ov,h as Oe$2,it as ze$3,k as Zn$1,p as Ni$1,r as Gp$1,rt as za$1,y as U$2}from"./chunk-BK2bFfek.js";function w(e,t){let r=q$1(t),n=Math.max(1,Math.ceil(e)),o=Math.min(n,r),a=Math.min(Math.ceil(n/o),r),s=Math.ceil(n/o/a);if(s>r)throw new Error(`WebGPU dispatch requires ${n} workgroups, exceeding the 3D dispatch limit of ${r} per dimension`);return{x:o,y:a,z:s}}function M(e,t=`workgroupId`){return`((${t}.z * ${e.y}u + ${t}.y) * ${e.x}u + ${t}.x)`}function E$1(e,t,r=`workgroupId`,n=`localId`){return`(${M(e,r)} * ${t}u + ${n}.x)`}function q$1(e){return Number.isFinite(e)&&e>0?Math.floor(e):65535}function _(e,t){switch(e){case`u32`:return`${t}u`;case`f32`:return Number.isInteger(t)?`${t}.0`:`${t}`;default:return`${t}`}}function D$1(e,t){switch(e){case`uint32`:return _(`u32`,Math.trunc(t));case`sint32`:return`${Math.trunc(t)}`;case`float32`:return _(`f32`,t);default:throw new Error(`WebGPU operations only support 32-bit output types, got ${e}`)}}function I$1(e){switch(e){case`uint32`:return`0u`;case`sint32`:return`0`;case`float32`:return`0.0`;default:throw new Error(`WebGPU operations only support 32-bit output types, got ${e}`)}}function f(e){switch(e){case`uint32`:return`u32`;case`sint32`:return`i32`;case`float32`:return`f32`;default:throw new Error(`WebGPU operations only support 32-bit storage types, got ${e}`)}}var O=64;var X$1=`GPGPU Operation Counts`;var K$2=`Computation Runs`;var H$1=new Oe$2;function m({module:e,elementWise:t=!1,expression:r$96,inputs:n,output:o,operationType:a=o.type,outputBuffer:s$48}){if(!e.source)throw new Error(`WebGPU computation ${e.name} requires WGSL source`);let l=ne$1(n),i=l.map(([p,$])=>({name:p,input:$})),u=i.filter(({input:p})=>!p.isConstant).map((p,$)=>s(r({},p),{index:$})),c=f(a),d=f(o.type),x={TYPE:c,RESULT_LEN:o.size.toString()},h=w(Math.ceil(o.length/O),s$48.device.limits.maxComputeWorkgroupsPerDimension);for(let[p,$]of l)x[`${p.toUpperCase()}_LEN`]=$.size.toString();let v=`
2
+ ${ie$1(e.source,x)}
3
+ ${u.map(({name:p,input:$,index:Z})=>J$1(p,$,Z)).join(`
4
+ `)}
5
+ ${i.map(({name:p,input:$})=>Q$2(p,$,a)).join(`
6
+ `)}
7
+ ${ee$2(o,u.length)}
8
+ ${te$2(o)}
9
+
10
+ @compute @workgroup_size(${O}) fn main(
11
+ @builtin(workgroup_id) workgroupId: vec3<u32>,
12
+ @builtin(local_invocation_id) localId: vec3<u32>
13
+ ) {
14
+ let rowIndex = ${E$1(h,O)};
15
+ if (rowIndex >= ${o.length}u) {
16
+ return;
17
+ }
18
+
19
+ ${i.map(({name:p})=>` let ${p} = read_${p}(rowIndex);`).join(`
20
+ `)}
21
+ var result: array<${d}, ${o.size}>;
22
+ ${re$1(e.name,l,o,t,r$96)}
23
+ write_result(rowIndex, result);
24
+ }
25
+ `,P=new qr$2(s$48.device,{source:v,modules:e.dependencies,shaderAssembler:H$1,shaderLayout:{bindings:[...u.map(({name:p},$)=>({name:p,type:`storage`,group:0,location:$})),{name:`result`,type:`storage`,group:0,location:u.length}]}}),N=Object.fromEntries(u.map(({name:p,input:$})=>[p,$.buffer]));N.result=s$48,P.setBindings(N);let W=s$48.device.beginComputePass({});s$48.device.statsManager.getStats(X$1).get(K$2).incrementCount(),P.dispatch(W,h.x,h.y,h.z),W.end(),s$48.device.submit(),P.destroy()}function J$1(e,t,r){if(t.isConstant)return``;return`@group(0) @binding(${r}) var<storage, read> ${e}: array<${f(t.type)}>;`}function Q$2(e,t,r){let n=f(r),o=t.type===r?``:n,a=t.stride/t.ValueType.BYTES_PER_ELEMENT,s=t.offset/t.ValueType.BYTES_PER_ELEMENT;return t.isConstant?`fn read_${e}(_rowIndex: u32) -> array<${n}, ${t.size}> {
26
+ return array<${n}, ${t.size}>(${oe$2(t,o)});
27
+ }`:`fn read_${e}(rowIndex: u32) -> array<${n}, ${t.size}> {
28
+ var value: array<${n}, ${t.size}>;
29
+ let rowOffset = ${s}u + rowIndex * ${a}u;
30
+ ${Array.from({length:t.size},(l,i)=>o?` value[${i}] = ${o}(${e}[rowOffset + ${i}u]);`:` value[${i}] = ${e}[rowOffset + ${i}u];`).join(`
31
+ `)}
32
+ return value;
33
+ }`}function ee$2(e,t){return`@group(0) @binding(${t}) var<storage, read_write> result: array<${f(e.type)}>;`}function te$2(e){let t=e.stride/e.ValueType.BYTES_PER_ELEMENT,r=e.offset/e.ValueType.BYTES_PER_ELEMENT;return`fn write_result(rowIndex: u32, value: array<${f(e.type)}, ${e.size}>) {
34
+ let rowOffset = ${r}u + rowIndex * ${t}u;
35
+ ${Array.from({length:e.size},(o,a)=>` result[rowOffset + ${a}u] = value[${a}];`).join(`
36
+ `)}
37
+ }`}function re$1(e,t,r,n,o){let a=``;if(o)for(let s=0;s<r.size;s++)a+=` result[${s}] = ${o(s)};
38
+ `;else if(n){let s=I$1(r.type),l=f(r.type);for(let i=0;i<r.size;i++){let u=t.map(([c,d])=>i<d.size?f(d.type)===l?`${c}[${i}]`:`${l}(${c}[${i}])`:s);a+=` result[${i}] = ${e}(${u.join(`, `)});
39
+ `}}else a+=`result = ${e}(${t.map(([s])=>s).join(`, `)});`;return a.trimEnd()}function ne$1(e){return Array.isArray(e)?e.map((t,r)=>[`x${r}`,t]):Object.entries(e)}function oe$2(e,t){let r=e.value;if(!r)throw new Error(`Constant input ${e} is missing CPU values`);return Array.from({length:e.size},(n,o)=>_(t,r[o]??0)).join(`, `)}function ie$1(e,t){for(let r in t)e=e.replaceAll(`{${r}}`,t[r]);return e}var se$2=`fn arithmetic_add(x: {TYPE}, y: {TYPE}) -> {TYPE} {
40
+ return x + y;
41
+ }
42
+
43
+ fn arithmetic_subtract(x: {TYPE}, y: {TYPE}) -> {TYPE} {
44
+ return x - y;
45
+ }
46
+
47
+ fn arithmetic_multiply(x: {TYPE}, y: {TYPE}) -> {TYPE} {
48
+ return x * y;
49
+ }
50
+
51
+ fn arithmetic_divide(x: {TYPE}, y: {TYPE}) -> {TYPE} {
52
+ return x / y;
53
+ }
54
+
55
+ fn arithmetic_tan(x: f32) -> f32 {
56
+ return tan_fp32(x);
57
+ }
58
+ `;var ae$2=({inputs:e,output:t,target:r})=>{let n=t.type,o=f(n),a=I$1(n),s=e.namedInputs;return m({module:{name:`arithmetic`,source:se$2,dependencies:[Uf$1]},inputs:s,output:t,operationType:n,outputBuffer:r,expression:l=>kv(e.expression,{operations:Vv,inputs:s,laneIndex:l,formatInput:i=>`${i}[${l}]`,formatOutOfBoundsInput:i=>s[i].size===1?`${i}[0]`:a,formatLiteral:i=>{let u=Array.isArray(i)?i[l]??0:i;return`${o}(${D$1(n,u)})`},formatCall:(i,u)=>`${i}(${u.join(`, `)})`})}),{success:!0}};var ue$1=`fn row_dot(x: array<{TYPE}, {X_LEN}>, y: array<{TYPE}, {Y_LEN}>) -> array<f32, 1> {
59
+ var sum = 0.0;
60
+ for (var i = 0u; i < {X_LEN}u; i = i + 1u) {
61
+ sum += f32(x[i]) * f32(y[i]);
62
+ }
63
+ return array<f32, 1>(sum);
64
+ }
65
+ `;var ce$2=({inputs:e,output:t,target:r})=>(m({module:{name:`row_dot`,source:ue$1},inputs:e,output:t,operationType:`float32`,outputBuffer:r}),{success:!0});var le$1=`fn equalAll(x: array<{TYPE}, {X_LEN}>, y: array<{TYPE}, {Y_LEN}>) -> array<u32, 1> {
66
+ var allEqual = 1u;
67
+ for (var i = 0u; i < {X_LEN}u; i = i + 1u) {
68
+ if (x[i] != y[i]) {
69
+ allEqual = 0u;
70
+ break;
71
+ }
72
+ }
73
+ return array<u32, 1>(allEqual);
74
+ }
75
+ `;var fe$1=({inputs:e,output:t,target:r})=>(m({module:{name:`equalAll`,source:le$1},inputs:e,output:t,operationType:e.x.type,outputBuffer:r}),{success:!0});var g=64;function T$2(e,t,r){return`@group(0) @binding(${r}) var<storage, read> ${e}: array<${f(t.type)}>;`}function z$1(e,t,r,n=e){let o=f(r);if(t.isConstant){let u=t.value;if(!u)throw new Error(`Constant input ${t} is missing CPU values`);return`fn read_${n}(_sourceIndex: u32) -> array<${o}, ${t.size}> {
76
+ return array<${o}, ${t.size}>(${Array.from({length:t.size},(c,d)=>_(o,u[d]??0)).join(`, `)});
77
+ }`}let a=t.stride/t.ValueType.BYTES_PER_ELEMENT,s=t.offset/t.ValueType.BYTES_PER_ELEMENT,i=f(t.type)===o?``:`${o}`;return`fn read_${n}(sourceIndex: u32) -> array<${o}, ${t.size}> {
78
+ var value: array<${o}, ${t.size}>;
79
+ let rowOffset = ${s}u + sourceIndex * ${a}u;
80
+ ${Array.from({length:t.size},(u,c)=>i?` value[${c}] = ${i}(${e}[rowOffset + ${c}u]);`:` value[${c}] = ${e}[rowOffset + ${c}u];`).join(`
81
+ `)}
82
+ return value;
83
+ }`}function L(e,t){return z$1(`sourceValues`,e,t,`source_values`)}function S(e,t){return`@group(0) @binding(${t}) var<storage, read_write> result: array<${f(e.type)}>;`}function b(e){let t=e.stride/e.ValueType.BYTES_PER_ELEMENT,r=e.offset/e.ValueType.BYTES_PER_ELEMENT;return`fn write_result(rowIndex: u32, value: array<${f(e.type)}, ${e.size}>) {
84
+ let rowOffset = ${r}u + rowIndex * ${t}u;
85
+ ${Array.from({length:e.size},(o,a)=>` result[rowOffset + ${a}u] = value[${a}];`).join(`
86
+ `)}
87
+ }`}function j$2(e,t){let r=I$1(e);return`fn zero_result() -> array<${f(e)}, ${t}> {
88
+ var result: array<${f(e)}, ${t}>;
89
+ ${Array.from({length:t},(n,o)=>` result[${o}] = ${r};`).join(`
90
+ `)}
91
+ return result;
92
+ }`}var de$2=({inputs:e,output:t,target:r})=>{let{sourceValues:n}=e;if(n.length===0){let i=new t.ValueType(t.length*t.size);return r.write(i),{success:!0,value:i}}if(n.isConstant){let i=n.value;if(!i)throw new Error(`Constant input ${n} is missing CPU values`);let u=new t.ValueType(t.length*t.size);for(let c=0;c<t.length;c++){let d=i[c];u[c*2]=d,u[c*2+1]=d}return r.write(u),{success:!0,value:u}}let o=[],a=n,s=`raw`,l=n.length;try{for(;;){let i=Math.ceil(l/g),u=t.length*i,c=i===1?r:ze$3.createOrReuse(r.device,u*t.stride);if(i>1&&o.push(c),pe$2({input:a,inputMode:s,inputGroupCount:l,channelCount:t.length,outputType:t.type,outputBuffer:c,outputLength:u,outputStride:t.stride,outputOffset:t.offset}),i===1)break;a=new pe$3({buffer:c,type:t.type,size:2,length:u}),s=`partial`,l=i}return{success:!0}}finally{for(let i of o)ze$3.recycle(i)}};function pe$2({input:e,inputMode:t,inputGroupCount:r,channelCount:n,outputType:o,outputBuffer:a,outputLength:s,outputStride:l,outputOffset:i}){let u=f(o),c=w(s,a.device.limits.maxComputeWorkgroupsPerDimension),d=new pe$3({buffer:a,type:o,size:2,length:s,stride:l,offset:i}),x=`
93
+ ${e.isConstant?``:T$2(`sourceValues`,e,0)}
94
+ ${L(e,o)}
95
+ ${S(d,e.isConstant?0:1)}
96
+ ${b(d)}
97
+ ${me$2(t,o,n,r)}
98
+
99
+ var<workgroup> sharedMin: array<${u}, ${g}>;
100
+ var<workgroup> sharedMax: array<${u}, ${g}>;
101
+
102
+ @compute @workgroup_size(${g}) fn main(
103
+ @builtin(workgroup_id) workgroupId: vec3<u32>,
104
+ @builtin(local_invocation_id) localId: vec3<u32>
105
+ ) {
106
+ let outputRowIndex = ${M(c)};
107
+ if (outputRowIndex >= ${s}u) {
108
+ return;
109
+ }
110
+
111
+ let channelIndex = outputRowIndex % ${n}u;
112
+ let outputGroupIndex = outputRowIndex / ${n}u;
113
+ let inputGroupIndex = outputGroupIndex * ${g}u + localId.x;
114
+
115
+ let result = extent_pass(channelIndex, inputGroupIndex);
116
+ sharedMin[localId.x] = result[0];
117
+ sharedMax[localId.x] = result[1];
118
+ workgroupBarrier();
119
+
120
+ var stride = ${Math.floor(g/2)}u;
121
+ loop {
122
+ if (stride == 0u) {
123
+ break;
124
+ }
125
+ if (localId.x < stride) {
126
+ let compareIndex = localId.x + stride;
127
+ if (sharedMin[compareIndex] < sharedMin[localId.x]) {
128
+ sharedMin[localId.x] = sharedMin[compareIndex];
129
+ }
130
+ if (sharedMax[compareIndex] > sharedMax[localId.x]) {
131
+ sharedMax[localId.x] = sharedMax[compareIndex];
132
+ }
133
+ }
134
+ workgroupBarrier();
135
+ stride = stride / 2u;
136
+ }
137
+
138
+ if (localId.x == 0u) {
139
+ write_result(outputRowIndex, array<${u}, 2>(sharedMin[0], sharedMax[0]));
140
+ }
141
+ }
142
+ `,h=new qr$2(a.device,{source:x,shaderLayout:{bindings:[...e.isConstant?[]:[{name:`sourceValues`,type:`storage`,group:0,location:0}],{name:`result`,type:`storage`,group:0,location:e.isConstant?0:1}]}}),v={result:a};e.isConstant||(v.sourceValues=e.buffer),h.setBindings(v);let P=a.device.beginComputePass({});h.dispatch(P,c.x,c.y,c.z),P.end(),a.device.submit(),h.destroy()}function me$2(e,t,r,n){let o=f(t),[a,s]=ge$2(t);return e===`raw`?`fn extent_pass(channelIndex: u32, inputGroupIndex: u32) -> array<${o}, 2> {
143
+ var result: array<${o}, 2>;
144
+ result[0] = ${a};
145
+ result[1] = ${s};
146
+
147
+ if (inputGroupIndex < ${n}u) {
148
+ let value = read_source_values(inputGroupIndex);
149
+ result[0] = value[channelIndex];
150
+ result[1] = value[channelIndex];
151
+ }
152
+
153
+ return result;
154
+ }`:`fn extent_pass(channelIndex: u32, inputGroupIndex: u32) -> array<${o}, 2> {
155
+ var result: array<${o}, 2>;
156
+ result[0] = ${a};
157
+ result[1] = ${s};
158
+
159
+ if (inputGroupIndex < ${n}u) {
160
+ let rowIndex = inputGroupIndex * ${r}u + channelIndex;
161
+ let value = read_source_values(rowIndex);
162
+ result[0] = value[0];
163
+ result[1] = value[1];
164
+ }
165
+
166
+ return result;
167
+ }`}function ge$2(e){switch(e){case`uint32`:return[`0xffffffffu`,`0u`];case`sint32`:return[`2147483647`,`-2147483648`];case`float32`:return[`3.402823e38`,`-3.402823e38`];default:throw new Error(`Unsupported WebGPU extent type for ${e}`)}}function xe$2(){let e=new Uint16Array([255]);return new Uint8Array(e.buffer)[0]>0}var $e$1=`const LE: bool = ${xe$2()?`true`:`false`};
168
+ const F32_NAN: u32 = 0xffffffffu;
169
+ const F32_INF: u32 = 0x7f800000u;
170
+
171
+ fn roundShiftRight(value: u32, shift: i32) -> u32 {
172
+ if (shift <= 0) {
173
+ return value << u32(-shift);
174
+ }
175
+
176
+ if (shift >= 32) {
177
+ if (shift == 32 && value > 0x80000000u) {
178
+ return 1u;
179
+ }
180
+ return 0u;
181
+ }
182
+
183
+ let shiftU32 = u32(shift);
184
+ let truncated = value >> shiftU32;
185
+ let halfShift = 1u << u32(shift - 1);
186
+ let remainder = value & ((1u << shiftU32) - 1u);
187
+ if (remainder > halfShift || (remainder == halfShift && (truncated & 1u) == 1u)) {
188
+ return truncated + 1u;
189
+ }
190
+ return truncated;
191
+ }
192
+
193
+ fn makeFloatImmediate(sign: u32, exponent: i32, mantissa: u32) -> u32 {
194
+ return (sign << 31u) | (u32(exponent + 127) << 23u) | (mantissa & 0x7fffffu);
195
+ }
196
+
197
+ fn makeFloat(sign: u32, exponent: i32, significand: u32) -> u32 {
198
+ if (significand == 0u) {
199
+ return sign << 31u;
200
+ }
201
+
202
+ let leadingZeros = i32(countLeadingZeros(significand));
203
+ var normalizedExponent = exponent + 31 - leadingZeros;
204
+
205
+ if (normalizedExponent > 127) {
206
+ return (sign << 31u) | F32_INF;
207
+ }
208
+
209
+ var mantissa: u32;
210
+ if (normalizedExponent >= -126) {
211
+ mantissa = roundShiftRight(significand, 8 - leadingZeros);
212
+ if (mantissa >= 0x1000000u) {
213
+ mantissa = mantissa >> 1u;
214
+ normalizedExponent += 1;
215
+ if (normalizedExponent > 127) {
216
+ return (sign << 31u) | F32_INF;
217
+ }
218
+ }
219
+ return makeFloatImmediate(sign, normalizedExponent, mantissa);
220
+ }
221
+
222
+ let subnormalShift = -149 - exponent;
223
+ mantissa = roundShiftRight(significand, subnormalShift);
224
+ if (mantissa >= 0x800000u) {
225
+ return (sign << 31u) | (1u << 23u);
226
+ }
227
+ return (sign << 31u) | mantissa;
228
+ }
229
+
230
+ fn parseAsDouble(words: vec2<u32>) -> vec2<u32> {
231
+ var d = words;
232
+ if (LE) {
233
+ d = d.yx;
234
+ }
235
+
236
+ let sign = (d.x >> 31u) & 1u;
237
+ let exponentBits = (d.x >> 20u) & 0x7ffu;
238
+ let exponent = i32(exponentBits) - 1023;
239
+ let fractionHigh = d.x & 0xfffffu;
240
+ let fractionLow = d.y;
241
+
242
+ if (exponentBits == 0x7ffu) {
243
+ if (fractionHigh == 0u && fractionLow == 0u) {
244
+ return vec2<u32>((sign << 31u) | F32_INF, F32_NAN);
245
+ }
246
+ return vec2<u32>(F32_NAN);
247
+ }
248
+
249
+ if (exponentBits == 0u) {
250
+ return vec2<u32>(sign << 31u);
251
+ }
252
+
253
+ if (exponent > 127) {
254
+ return vec2<u32>((sign << 31u) | F32_INF, ((1u - sign) << 31u) | F32_INF);
255
+ }
256
+
257
+ let highSignificand = 0x800000u | (fractionHigh << 3u) | (fractionLow >> 29u);
258
+ let lowSignificand = fractionLow & 0x1fffffffu;
259
+
260
+ if (exponent < -126) {
261
+ let highPart = makeFloat(sign, exponent - 23, highSignificand);
262
+ let lowPart = makeFloat(sign, exponent - 52, lowSignificand);
263
+ return vec2<u32>(highPart, lowPart);
264
+ }
265
+
266
+ let roundUp = lowSignificand > 0x10000000u ||
267
+ (lowSignificand == 0x10000000u && (highSignificand & 1u) == 1u);
268
+
269
+ var roundedSignificand = highSignificand + select(0u, 1u, roundUp);
270
+ var highExponent = exponent;
271
+ if (roundedSignificand == 0x1000000u) {
272
+ roundedSignificand = 0x800000u;
273
+ highExponent += 1;
274
+ }
275
+
276
+ if (highExponent > 127) {
277
+ return vec2<u32>((sign << 31u) | F32_INF, ((1u - sign) << 31u) | F32_INF);
278
+ }
279
+
280
+ let highPart = makeFloatImmediate(sign, highExponent, roundedSignificand);
281
+
282
+ var remainder = i32(lowSignificand);
283
+ var lowSign = sign;
284
+ if (roundUp) {
285
+ remainder -= 0x20000000;
286
+ }
287
+ if (remainder < 0) {
288
+ lowSign = 1u - sign;
289
+ remainder = -remainder;
290
+ }
291
+
292
+ let lowPart = makeFloat(lowSign, exponent - 52, u32(remainder));
293
+ return vec2<u32>(highPart, lowPart);
294
+ }
295
+
296
+ fn fround(x: array<u32, {X_LEN}>) -> array<f32, {RESULT_LEN}> {
297
+ var result: array<f32, {RESULT_LEN}>;
298
+ let n = {X_LEN}u / 2u;
299
+ for (var i = 0u; i < n; i = i + 1u) {
300
+ let parts = parseAsDouble(vec2<u32>(x[i * 2u], x[i * 2u + 1u]));
301
+ result[i] = bitcast<f32>(parts.x);
302
+ result[i + n] = bitcast<f32>(parts.y);
303
+ }
304
+ return result;
305
+ }
306
+ `;var he$2=({inputs:e,output:t,target:r})=>(m({module:{name:`fround`,source:$e$1},inputs:e,output:t,operationType:`uint32`,outputBuffer:r}),{success:!0});var ye$2=async({inputs:e,output:t,target:r})=>{let{ids:n,sourceValues:o}=e,a=f(n.type),s=[];n.isConstant||s.push({name:`ids`,input:n,index:s.length}),o.isConstant||s.push({name:`sourceValues`,input:o,index:s.length});let l=w(Math.ceil(t.length/g),r.device.limits.maxComputeWorkgroupsPerDimension),i=`
307
+ ${s.map(({name:x,input:h,index:v})=>T$2(x,h,v)).join(`
308
+ `)}
309
+ ${we$2(n,a)}
310
+ ${L(o,t.type)}
311
+ ${S(t,s.length)}
312
+ ${b(t)}
313
+ ${j$2(t.type,t.size)}
314
+ ${Ee$2(n.type,t.type,t.size,o.length)}
315
+
316
+ @compute @workgroup_size(${g}) fn main(
317
+ @builtin(workgroup_id) workgroupId: vec3<u32>,
318
+ @builtin(local_invocation_id) localId: vec3<u32>
319
+ ) {
320
+ let rowIndex = ${E$1(l,g)};
321
+ if (rowIndex >= ${t.length}u) {
322
+ return;
323
+ }
324
+
325
+ let idsValue = read_ids(rowIndex);
326
+ let result = gather(idsValue);
327
+ write_result(rowIndex, result);
328
+ }
329
+ `,u=new qr$2(r.device,{source:i,shaderLayout:{bindings:[...s.map(({name:x,index:h})=>({name:x,type:`storage`,group:0,location:h})),{name:`result`,type:`storage`,group:0,location:s.length}]}}),c={};n.isConstant||(c.ids=n.buffer),o.isConstant||(c.sourceValues=o.buffer),c.result=r,u.setBindings(c);let d=r.device.beginComputePass({});return u.dispatch(d,l.x,l.y,l.z),d.end(),r.device.submit(),u.destroy(),{success:!0}};function we$2(e,t){if(e.isConstant){let o=e.value;if(!o)throw new Error(`Constant input ${e} is missing CPU values`);return`fn read_ids(_rowIndex: u32) -> ${t} {
330
+ return ${_(t,o[0]??0)};
331
+ }`}let r=e.stride/e.ValueType.BYTES_PER_ELEMENT;return`fn read_ids(rowIndex: u32) -> ${t} {
332
+ let rowOffset = ${e.offset/e.ValueType.BYTES_PER_ELEMENT}u + rowIndex * ${r}u;
333
+ return ids[rowOffset];
334
+ }`}function Ee$2(e,t,r,n){let o=f(e);return`fn gather(idsValue: ${o}) -> array<${f(t)}, ${r}> {
335
+ let sourceIndex = ${o===`u32`?`i32(idsValue)`:o===`i32`?`idsValue`:`i32(idsValue)`};
336
+ if (sourceIndex < 0 || sourceIndex >= ${n}) {
337
+ return zero_result();
338
+ }
339
+ return read_source_values(u32(sourceIndex));
340
+ }`}var _e$2=async({inputs:e,output:t,target:r})=>{let{segments:n}=e,o=n.isConstant?[]:[{name:`segments`,input:n,index:0}],a=w(Math.ceil(t.length/g),r.device.limits.maxComputeWorkgroupsPerDimension),s=`
341
+ ${o.map(({name:c,input:d,index:x})=>T$2(c,d,x)).join(`
342
+ `)}
343
+ ${z$1(`segments`,n,`uint32`)}
344
+ ${S(t,o.length)}
345
+ ${b(t)}
346
+ ${Ie$2(n.length)}
347
+
348
+ @compute @workgroup_size(${g}) fn main(
349
+ @builtin(workgroup_id) workgroupId: vec3<u32>,
350
+ @builtin(local_invocation_id) localId: vec3<u32>
351
+ ) {
352
+ let rowIndex = ${E$1(a,g)};
353
+ if (rowIndex >= ${t.length}u) {
354
+ return;
355
+ }
356
+
357
+ let result = segmented_map(rowIndex);
358
+ write_result(rowIndex, result);
359
+ }
360
+ `,l=new qr$2(r.device,{source:s,shaderLayout:{bindings:[...o.map(({name:c,index:d})=>({name:c,type:`storage`,group:0,location:d})),{name:`result`,type:`storage`,group:0,location:o.length}]}}),i=Object.fromEntries(o.map(({name:c,input:d})=>[c,d.buffer]));i.result=r,l.setBindings(i);let u=r.device.beginComputePass({});return l.dispatch(u,a.x,a.y,a.z),u.end(),r.device.submit(),l.destroy(),{success:!0}};function Ie$2(e){return`fn segmented_map(vertexIndex: u32) -> array<u32, 2> {
361
+ var low = 0i;
362
+ var high = ${e}i;
363
+ while (low < high) {
364
+ let mid = low + (high - low) / 2i;
365
+ let midStart = read_segments(u32(mid))[0];
366
+ if (midStart <= vertexIndex) {
367
+ low = mid + 1i;
368
+ } else {
369
+ high = mid;
370
+ }
371
+ }
372
+
373
+ let segmentIndex = u32(max(low - 1i, 0i));
374
+ let segmentStart = read_segments(segmentIndex)[0];
375
+ return array<u32, 2>(segmentIndex, vertexIndex - segmentStart);
376
+ }`}var ve$2=({inputs:e,output:t,target:r})=>{let n=e.map((i,u)=>[`x${u}`,i]);Pe$2(r.device.limits,n);let o=n.map(([i,u])=>`${i}: array<{TYPE}, ${u.size}>`).join(`, `),a=0;return m({module:{name:`interleave`,source:`fn interleave(${o}) -> array<{TYPE}, {RESULT_LEN}> {
377
+ var out: array<{TYPE}, {RESULT_LEN}>;
378
+ ${n.map(([i,u])=>{let c=Array.from({length:u.size},(d,x)=>` out[${a+x}] = ${i}[${x}];`).join(`
379
+ `);return a+=u.size,c}).join(`
380
+ `)}
381
+ return out;
382
+ }
383
+ `},inputs:e,output:t,outputBuffer:r}),{success:!0}};function Pe$2(e,t){let n=t.filter(([,o])=>!o.isConstant).length+1;if(n>e.maxStorageBuffersPerShaderStage)throw new Error(`interleave() requires ${n} storage buffers, exceeding device limit ${e.maxStorageBuffersPerShaderStage}`);if(n>e.maxBindingsPerBindGroup)throw new Error(`interleave() requires ${n} bindings, exceeding bind group limit ${e.maxBindingsPerBindGroup}`)}var Te$2=`fn row_length(x: array<{TYPE}, {X_LEN}>) -> array<f32, 1> {
384
+ var sum = 0.0;
385
+ for (var i = 0u; i < {X_LEN}u; i = i + 1u) {
386
+ sum += f32(x[i]) * f32(x[i]);
387
+ }
388
+ return array<f32, 1>(sqrt(sum));
389
+ }
390
+ `;var Se$2=({inputs:e,output:t,target:r})=>(m({module:{name:`row_length`,source:Te$2},inputs:e,output:t,operationType:`float32`,outputBuffer:r}),{success:!0});var be$2=async({inputs:e,output:t,target:r})=>{let n=I$1(t.type);return m({module:{name:`select`,source:`// inline expression select
391
+ `},inputs:e,output:t,operationType:t.type,outputBuffer:r,expression:o=>{let a=G$1(`condition`,e.condition,o,n),s=G$1(`whenTrue`,e.whenTrue,o,n);return`select(${G$1(`whenFalse`,e.whenFalse,o,n)}, ${s}, ${a} != ${n})`}}),{success:!0}};function G$1(e,t,r,n){return r<t.size?`${e}[${r}]`:t.size===1?`${e}[0]`:n}var U$1=64;var Le$2=({inputs:e,output:t,target:r})=>{let n=w(Math.ceil(t.length/U$1),r.device.limits.maxComputeWorkgroupsPerDimension),o=`@group(0) @binding(0) var<storage, read_write> result: array<i32>;
392
+
393
+ @compute @workgroup_size(${U$1}) fn main(
394
+ @builtin(workgroup_id) workgroupId: vec3<u32>,
395
+ @builtin(local_invocation_id) localId: vec3<u32>
396
+ ) {
397
+ let rowIndex = ${E$1(n,U$1)};
398
+ if (rowIndex >= ${t.length}u) {
399
+ return;
400
+ }
401
+
402
+ let rowOffset = ${t.offset/t.ValueType.BYTES_PER_ELEMENT}u + rowIndex * ${t.stride/t.ValueType.BYTES_PER_ELEMENT}u;
403
+ result[rowOffset] = ${e.start} + i32(rowIndex) * ${e.step};
404
+ }
405
+ `,a=new qr$2(r.device,{source:o,shaderLayout:{bindings:[{name:`result`,type:`storage`,group:0,location:0}]}});a.setBindings({result:r});let s=r.device.beginComputePass({});return a.dispatch(s,n.x,n.y,n.z),s.end(),r.device.submit(),a.destroy(),{success:!0}};var Ce$2=({inputs:e,output:t,target:r})=>{let{columns:n}=e;return m({module:{name:`swizzle`,source:`// swizzle expression handled inline`},expression:o=>`x[${n[o]}]`,inputs:{x:e.x},output:t,outputBuffer:r}),{success:!0}};var H={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,35725:null,36006:null,36007:null,34229:null,34964:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32926:!1,32928:!1,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:4294967295,36005:4294967295,2962:519,2967:0,2963:4294967295,34816:519,36003:0,36004:4294967295,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],36389:null,36662:null,36663:null,35053:null,35055:null,35723:4352,36010:null,35977:!1,3333:4,3317:4,37440:!1,37441:!1,37443:37444,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0};var E=(r,e,t)=>e?r.enable(t):r.disable(t);var Tt$1=(r,e,t)=>r.hint(t,e);var B$1=(r,e,t)=>r.pixelStorei(t,e);var Et$1=(r,e,t)=>{let n=t===36006?36009:36008;return r.bindFramebuffer(n,e)};var j$1=(r,e,t)=>{let i={34964:34962,36662:36662,36663:36663,35053:35051,35055:35052}[t];r.bindBuffer(i,e)};function Re$1(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}var Lt$1={3042:E,32773:(r,e)=>r.blendColor(...e),32777:`blendEquation`,34877:`blendEquation`,32969:`blendFunc`,32968:`blendFunc`,32971:`blendFunc`,32970:`blendFunc`,3106:(r,e)=>r.clearColor(...e),3107:(r,e)=>r.colorMask(...e),2884:E,2885:(r,e)=>r.cullFace(e),2929:E,2931:(r,e)=>r.clearDepth(e),2932:(r,e)=>r.depthFunc(e),2928:(r,e)=>r.depthRange(...e),2930:(r,e)=>r.depthMask(e),3024:E,35723:Tt$1,35725:(r,e)=>r.useProgram(e),36007:(r,e)=>r.bindRenderbuffer(36161,e),36389:(r,e)=>r.bindTransformFeedback?.(36386,e),34229:(r,e)=>r.bindVertexArray(e),36006:Et$1,36010:Et$1,34964:j$1,36662:j$1,36663:j$1,35053:j$1,35055:j$1,2886:(r,e)=>r.frontFace(e),33170:Tt$1,2849:(r,e)=>r.lineWidth(e),32823:E,32824:`polygonOffset`,10752:`polygonOffset`,35977:E,32926:E,32928:E,32938:`sampleCoverage`,32939:`sampleCoverage`,3089:E,3088:(r,e)=>r.scissor(...e),2960:E,2961:(r,e)=>r.clearStencil(e),2968:(r,e)=>r.stencilMaskSeparate(1028,e),36005:(r,e)=>r.stencilMaskSeparate(1029,e),2962:`stencilFuncFront`,2967:`stencilFuncFront`,2963:`stencilFuncFront`,34816:`stencilFuncBack`,36003:`stencilFuncBack`,36004:`stencilFuncBack`,2964:`stencilOpFront`,2965:`stencilOpFront`,2966:`stencilOpFront`,34817:`stencilOpBack`,34818:`stencilOpBack`,34819:`stencilOpBack`,2978:(r,e)=>r.viewport(...e),34383:E,10754:E,12288:E,12289:E,12290:E,12291:E,12292:E,12293:E,12294:E,12295:E,3333:B$1,3317:B$1,37440:B$1,37441:B$1,37443:B$1,3330:B$1,3332:B$1,3331:B$1,3314:B$1,32878:B$1,3316:B$1,3315:B$1,32877:B$1,framebuffer:(r,e)=>{let t=e&&`handle`in e?e.handle:e;return r.bindFramebuffer(36160,t)},blend:(r,e)=>e?r.enable(3042):r.disable(3042),blendColor:(r,e)=>r.blendColor(...e),blendEquation:(r,e)=>{let t=typeof e==`number`?[e,e]:e;r.blendEquationSeparate(...t)},blendFunc:(r,e)=>{let t=e?.length===2?[...e,...e]:e;r.blendFuncSeparate(...t)},clearColor:(r,e)=>r.clearColor(...e),clearDepth:(r,e)=>r.clearDepth(e),clearStencil:(r,e)=>r.clearStencil(e),colorMask:(r,e)=>r.colorMask(...e),cull:(r,e)=>e?r.enable(2884):r.disable(2884),cullFace:(r,e)=>r.cullFace(e),depthTest:(r,e)=>e?r.enable(2929):r.disable(2929),depthFunc:(r,e)=>r.depthFunc(e),depthMask:(r,e)=>r.depthMask(e),depthRange:(r,e)=>r.depthRange(...e),dither:(r,e)=>e?r.enable(3024):r.disable(3024),derivativeHint:(r,e)=>{r.hint(35723,e)},frontFace:(r,e)=>r.frontFace(e),mipmapHint:(r,e)=>r.hint(33170,e),lineWidth:(r,e)=>r.lineWidth(e),polygonOffsetFill:(r,e)=>e?r.enable(32823):r.disable(32823),polygonOffset:(r,e)=>r.polygonOffset(...e),sampleCoverage:(r,e)=>r.sampleCoverage(e[0],e[1]||!1),scissorTest:(r,e)=>e?r.enable(3089):r.disable(3089),scissor:(r,e)=>r.scissor(...e),stencilTest:(r,e)=>e?r.enable(2960):r.disable(2960),stencilMask:(r,e)=>{e=Re$1(e)?e:[e,e];let[t,n]=e;r.stencilMaskSeparate(1028,t),r.stencilMaskSeparate(1029,n)},stencilFunc:(r,e)=>{e=Re$1(e)&&e.length===3?[...e,...e]:e;let[t,n,i,s,o,a]=e;r.stencilFuncSeparate(1028,t,n,i),r.stencilFuncSeparate(1029,s,o,a)},stencilOp:(r,e)=>{e=Re$1(e)&&e.length===3?[...e,...e]:e;let[t,n,i,s,o,a]=e;r.stencilOpSeparate(1028,t,n,i),r.stencilOpSeparate(1029,s,o,a)},viewport:(r,e)=>r.viewport(...e)};function T$1(r,e,t){return e[r]!==void 0?e[r]:t[r]}var St$1={blendEquation:(r,e,t)=>r.blendEquationSeparate(T$1(32777,e,t),T$1(34877,e,t)),blendFunc:(r,e,t)=>r.blendFuncSeparate(T$1(32969,e,t),T$1(32968,e,t),T$1(32971,e,t),T$1(32970,e,t)),polygonOffset:(r,e,t)=>r.polygonOffset(T$1(32824,e,t),T$1(10752,e,t)),sampleCoverage:(r,e,t)=>r.sampleCoverage(T$1(32938,e,t),T$1(32939,e,t)),stencilFuncFront:(r,e,t)=>r.stencilFuncSeparate(1028,T$1(2962,e,t),T$1(2967,e,t),T$1(2963,e,t)),stencilFuncBack:(r,e,t)=>r.stencilFuncSeparate(1029,T$1(34816,e,t),T$1(36003,e,t),T$1(36004,e,t)),stencilOpFront:(r,e,t)=>r.stencilOpSeparate(1028,T$1(2964,e,t),T$1(2965,e,t),T$1(2966,e,t)),stencilOpBack:(r,e,t)=>r.stencilOpSeparate(1029,T$1(34817,e,t),T$1(34818,e,t),T$1(34819,e,t))};var Ie$1={enable:(r,e)=>r({[e]:!0}),disable:(r,e)=>r({[e]:!1}),pixelStorei:(r,e,t)=>r({[e]:t}),hint:(r,e,t)=>r({[e]:t}),useProgram:(r,e)=>r({35725:e}),bindRenderbuffer:(r,e,t)=>r({36007:t}),bindTransformFeedback:(r,e,t)=>r({36389:t}),bindVertexArray:(r,e)=>r({34229:e}),bindFramebuffer:(r,e,t)=>{switch(e){case 36160:return r({36006:t,36010:t});case 36009:return r({36006:t});case 36008:return r({36010:t});default:return null}},bindBuffer:(r,e,t)=>{let n={34962:[34964],36662:[36662],36663:[36663],35051:[35053],35052:[35055]}[e];return n?r({[n]:t}):{valueChanged:!0}},blendColor:(r,e,t,n,i)=>r({32773:new Float32Array([e,t,n,i])}),blendEquation:(r,e)=>r({32777:e,34877:e}),blendEquationSeparate:(r,e,t)=>r({32777:e,34877:t}),blendFunc:(r,e,t)=>r({32969:e,32968:t,32971:e,32970:t}),blendFuncSeparate:(r,e,t,n,i)=>r({32969:e,32968:t,32971:n,32970:i}),clearColor:(r,e,t,n,i)=>r({3106:new Float32Array([e,t,n,i])}),clearDepth:(r,e)=>r({2931:e}),clearStencil:(r,e)=>r({2961:e}),colorMask:(r,e,t,n,i)=>r({3107:[e,t,n,i]}),cullFace:(r,e)=>r({2885:e}),depthFunc:(r,e)=>r({2932:e}),depthRange:(r,e,t)=>r({2928:new Float32Array([e,t])}),depthMask:(r,e)=>r({2930:e}),frontFace:(r,e)=>r({2886:e}),lineWidth:(r,e)=>r({2849:e}),polygonOffset:(r,e,t)=>r({32824:e,10752:t}),sampleCoverage:(r,e,t)=>r({32938:e,32939:t}),scissor:(r,e,t,n,i)=>r({3088:new Int32Array([e,t,n,i])}),stencilMask:(r,e)=>r({2968:e,36005:e}),stencilMaskSeparate:(r,e,t)=>r({[e===1028?2968:36005]:t}),stencilFunc:(r,e,t,n)=>r({2962:e,2967:t,2963:n,34816:e,36003:t,36004:n}),stencilFuncSeparate:(r,e,t,n,i)=>r({[e===1028?2962:34816]:t,[e===1028?2967:36003]:n,[e===1028?2963:36004]:i}),stencilOp:(r,e,t,n)=>r({2964:e,2965:t,2966:n,34817:e,34818:t,34819:n}),stencilOpSeparate:(r,e,t,n,i)=>r({[e===1028?2964:34817]:t,[e===1028?2965:34818]:n,[e===1028?2966:34819]:i}),viewport:(r,e,t,n,i)=>r({2978:[e,t,n,i]})};var k=(r,e)=>r.isEnabled(e);var We$1={3042:k,2884:k,2929:k,3024:k,32823:k,32926:k,32928:k,3089:k,2960:k,35977:k};var vt$1=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068]);function A$1(r,e){if(wr$1(e))return;let t={};for(let i in e){let s=Number(i),o=Lt$1[i];o&&(typeof o==`string`?t[o]=!0:o(r,e[i],s))}let n=r.lumaState?.cache;if(n)for(let i in t){let s=St$1[i];s(r,e,n)}}function se$1(r,e=H){if(typeof e==`number`){let i=e,s=We$1[i];return s?s(r,i):r.getParameter(i)}let t=Array.isArray(e)?e:Object.keys(e),n={};for(let i of t){let s=We$1[i];n[i]=s?s(r,Number(i)):r.getParameter(Number(i))}return n}function Bt(r){A$1(r,H)}function wr$1(r){for(let e in r)return!1;return!0}function Ft$1(r,e){if(r===e)return!0;if(At(r)&&At(e)&&r.length===e.length){for(let t=0;t<r.length;++t)if(r[t]!==e[t])return!1;return!0}return!1}function At(r){return Array.isArray(r)||ArrayBuffer.isView(r)}var F$1=class{static get(e){return e.lumaState}gl;program=null;stateStack=[];enable=!0;cache=null;log;initialized=!1;constructor(e,t){this.gl=e,this.log=t?.log||(()=>{}),this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(e={}){this.stateStack.push({})}pop(){let e=this.stateStack[this.stateStack.length-1];A$1(this.gl,e),this.stateStack.pop()}trackState(e,t){if(this.cache=t?.copyState?se$1(e):Object.assign({},H),this.initialized)throw new Error(`WebGLStateTracker`);this.initialized=!0,this.gl.lumaState=this,Tr$1(e);for(let n in Ie$1){let i=Ie$1[n];_r$1(e,n,i)}Gt$1(e,`getParameter`),Gt$1(e,`isEnabled`)}_updateCache(e){let t=!1,n,i=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let s in e){let o=e[s],a=this.cache[s];Ft$1(o,a)||(t=!0,n=a,i&&!(s in i)&&(i[s]=a),this.cache[s]=o)}return{valueChanged:t,oldValue:n}}};function Gt$1(r,e){let t=r[e].bind(r);r[e]=function(i){if(i===void 0||vt$1.has(i))return t(i);let s=F$1.get(r);return i in s.cache||(s.cache[i]=t(i)),s.enable?s.cache[i]:t(i)},Object.defineProperty(r[e],"name",{value:`${e}-from-cache`,configurable:!1})}function _r$1(r,e,t){if(!r[e])return;let n=r[e].bind(r);r[e]=function(...s){let{valueChanged:a,oldValue:l}=t(F$1.get(r)._updateCache,...s);return a&&n(...s),l},Object.defineProperty(r[e],"name",{value:`${e}-to-cache`,configurable:!1})}function Tr$1(r){let e=r.useProgram.bind(r);r.useProgram=function(n){let i=F$1.get(r);i.program!==n&&(e(n),i.program=n)}}function Y(r){let e=r.luma||{_polyfilled:!1,extensions:{},softwareRenderer:!1};return e._polyfilled??=!1,e.extensions||={},r.luma=e,e}function Ct$1(r$88,e,t){let n=``,i=l=>{let c=l.statusMessage;c&&(n||=c)};r$88.addEventListener(`webglcontextcreationerror`,i,!1);let s$41=t.failIfMajorPerformanceCaveat!==!0,o=s(r({preserveDrawingBuffer:!0},t),{failIfMajorPerformanceCaveat:!0}),a=null;try{a||=r$88.getContext(`webgl2`,o),!a&&o.failIfMajorPerformanceCaveat&&(n||="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow.");let l=!1;if(!a&&s$41&&(o.failIfMajorPerformanceCaveat=!1,a=r$88.getContext(`webgl2`,o),l=!0),a||(a=r$88.getContext(`webgl`,{}),a&&(a=null,n||=`Your browser only supports WebGL1`)),!a)throw n||=`Your browser does not support WebGL`,new Error(`Failed to create WebGL context: ${n}`);let c=Y(a);c.softwareRenderer=l;let{onContextLost:u,onContextRestored:f}=e;return r$88.addEventListener(`webglcontextlost`,m=>u(m),!1),r$88.addEventListener(`webglcontextrestored`,m=>f(m),!1),a}finally{r$88.removeEventListener(`webglcontextcreationerror`,i,!1)}}function G(r,e,t){return t[e]===void 0&&(t[e]=r.getExtension(e)||null),t[e]}function Pt$1(r,e){let t=r.getParameter(7936),n=r.getParameter(7937);G(r,`WEBGL_debug_renderer_info`,e);let i=e.WEBGL_debug_renderer_info,s=r.getParameter(i?i.UNMASKED_VENDOR_WEBGL:7936),o=r.getParameter(i?i.UNMASKED_RENDERER_WEBGL:7937),a=s||t,l=o||n,c=r.getParameter(7938),u=kt$1(a,l),f=Er$1(a,l);return{type:`webgl`,gpu:u,gpuType:Lr(a,l),gpuBackend:f,vendor:a,renderer:l,version:c,shadingLanguage:`glsl`,shadingLanguageVersion:300}}function kt$1(r,e){return/NVIDIA/i.exec(r)||/NVIDIA/i.exec(e)?`nvidia`:/INTEL/i.exec(r)||/INTEL/i.exec(e)?`intel`:/Apple/i.exec(r)||/Apple/i.exec(e)?`apple`:/AMD/i.exec(r)||/AMD/i.exec(e)||/ATI/i.exec(r)||/ATI/i.exec(e)?`amd`:/SwiftShader/i.exec(r)||/SwiftShader/i.exec(e)?`software`:`unknown`}function Er$1(r,e){return/Metal/i.exec(r)||/Metal/i.exec(e)?`metal`:/ANGLE/i.exec(r)||/ANGLE/i.exec(e)?`opengl`:`unknown`}function Lr(r,e){if(/SwiftShader/i.exec(r)||/SwiftShader/i.exec(e))return`cpu`;switch(kt$1(r,e)){case`apple`:return Sr$1(r,e)?`integrated`:`unknown`;case`intel`:return`integrated`;case`software`:return`cpu`;case`unknown`:return`unknown`;default:return`discrete`}}function Sr$1(r,e){return/Apple (M\d|A\d|GPU)/i.test(`${r} ${e}`)}function oe$1(r){switch(r){case`uint8`:return 5121;case`sint8`:return 5120;case`unorm8`:return 5121;case`snorm8`:return 5120;case`uint16`:return 5123;case`sint16`:return 5122;case`unorm16`:return 5123;case`snorm16`:return 5122;case`uint32`:return 5125;case`sint32`:return 5124;case`float16`:return 5131;case`float32`:return 5126}throw new Error(String(r))}var K$1=`WEBGL_compressed_texture_s3tc`;var q=`WEBGL_compressed_texture_s3tc_srgb`;var V=`EXT_texture_compression_rgtc`;var Q$1=`EXT_texture_compression_bptc`;var vr$1=`WEBGL_compressed_texture_etc`;var Br$1=`WEBGL_compressed_texture_astc`;var Ar$1=`WEBGL_compressed_texture_etc1`;var Fr$1=`WEBGL_compressed_texture_pvrtc`;var Gr$1=`WEBGL_compressed_texture_atc`;var Cr$1=`EXT_texture_norm16`;var Dt=`EXT_render_snorm`;var Rt$1=`EXT_color_buffer_float`;var Oe$1=`snorm8-renderable-webgl`;var Me$1=`norm16-renderable-webgl`;var $e=`snorm16-renderable-webgl`;var Ne$1=`float16-renderable-webgl`;var ae$1=`float32-renderable-webgl`;var Pr$1=`rgb9e5ufloat-renderable-webgl`;var le={"float32-renderable-webgl":{extensions:[Rt$1]},"float16-renderable-webgl":{extensions:[`EXT_color_buffer_half_float`]},"rgb9e5ufloat-renderable-webgl":{extensions:[`WEBGL_render_shared_exponent`]},"snorm8-renderable-webgl":{extensions:[Dt]},"norm16-webgl":{extensions:[Cr$1]},"norm16-renderable-webgl":{features:[`norm16-webgl`]},"snorm16-renderable-webgl":{features:[`norm16-webgl`],extensions:[Dt]},"float32-filterable":{extensions:[`OES_texture_float_linear`]},"float16-filterable-webgl":{extensions:[`OES_texture_half_float_linear`]},"texture-filterable-anisotropic-webgl":{extensions:[`EXT_texture_filter_anisotropic`]},"texture-blend-float-webgl":{extensions:[`EXT_float_blend`]},"texture-compression-bc":{extensions:[K$1,q,V,Q$1]},"texture-compression-bc5-webgl":{extensions:[V]},"texture-compression-bc7-webgl":{extensions:[Q$1]},"texture-compression-etc2":{extensions:[vr$1]},"texture-compression-astc":{extensions:[Br$1]},"texture-compression-etc1-webgl":{extensions:[Ar$1]},"texture-compression-pvrtc-webgl":{extensions:[Fr$1]},"texture-compression-atc-webgl":{extensions:[Gr$1]}};function It$1(r){return r in le}function Ue$1(r,e,t){return Wt$1(r,e,t,new Set)}function Wt$1(r,e,t,n){let i=le[e];if(!i||n.has(e))return!1;n.add(e);let s=(i.features||[]).every(o=>Wt$1(r,o,t,n));return n.delete(e),s?(i.extensions||[]).every(o=>!!G(r,o,t)):!1}var ce$1={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756,r:Oe$1},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757,r:Oe$1},rg8uint:{gl:33336,rb:!0},rg8sint:{gl:33335,rb:!0},r16uint:{gl:33332,rb:!0},r16sint:{gl:33331,rb:!0},r16float:{gl:33325,rb:!0,r:Ne$1},r16unorm:{gl:33322,rb:!0,r:Me$1},r16snorm:{gl:36760,r:$e},"rgba4unorm-webgl":{gl:32854,rb:!0},"rgb565unorm-webgl":{gl:36194,rb:!0},"rgb5a1unorm-webgl":{gl:32855,rb:!0},"rgb8unorm-webgl":{gl:32849},"rgb8snorm-webgl":{gl:36758},rgba8unorm:{gl:32856},"rgba8unorm-srgb":{gl:35907},rgba8snorm:{gl:36759,r:Oe$1},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0,r:Ne$1},rg16unorm:{gl:33324,r:Me$1},rg16snorm:{gl:36761,r:$e},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326,r:ae$1},rgb9e5ufloat:{gl:35901,r:Pr$1},rg11b10ufloat:{gl:35898,rb:!0},rgb10a2unorm:{gl:32857,rb:!0},rgb10a2uint:{gl:36975,rb:!0},"rgb16unorm-webgl":{gl:32852,r:!1},"rgb16snorm-webgl":{gl:36762,r:!1},rg32uint:{gl:33340,rb:!0},rg32sint:{gl:33339,rb:!0},rg32float:{gl:33328,rb:!0,r:ae$1},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842,r:Ne$1},rgba16unorm:{gl:32859,rb:!0,r:Me$1},rgba16snorm:{gl:36763,r:$e},"rgb32float-webgl":{gl:34837,x:Rt$1,r:ae$1,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0,r:ae$1},stencil8:{gl:36168,rb:!0},depth16unorm:{gl:33189,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,dataFormat:6402,types:[5125]},depth32float:{gl:36012,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth32float-stencil8":{gl:36013,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:K$1},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:q},"bc1-rgba-unorm":{gl:33777,x:K$1},"bc1-rgba-unorm-srgb":{gl:35916,x:q},"bc2-rgba-unorm":{gl:33778,x:K$1},"bc2-rgba-unorm-srgb":{gl:35918,x:q},"bc3-rgba-unorm":{gl:33779,x:K$1},"bc3-rgba-unorm-srgb":{gl:35919,x:q},"bc4-r-unorm":{gl:36283,x:V},"bc4-r-snorm":{gl:36284,x:V},"bc5-rg-unorm":{gl:36285,x:V},"bc5-rg-snorm":{gl:36286,x:V},"bc6h-rgb-ufloat":{gl:36495,x:Q$1},"bc6h-rgb-float":{gl:36494,x:Q$1},"bc7-rgba-unorm":{gl:36492,x:Q$1},"bc7-rgba-unorm-srgb":{gl:36493,x:Q$1},"etc2-rgb8unorm":{gl:37492},"etc2-rgb8unorm-srgb":{gl:37494},"etc2-rgb8a1unorm":{gl:37496},"etc2-rgb8a1unorm-srgb":{gl:37497},"etc2-rgba8unorm":{gl:37493},"etc2-rgba8unorm-srgb":{gl:37495},"eac-r11unorm":{gl:37488},"eac-r11snorm":{gl:37489},"eac-rg11unorm":{gl:37490},"eac-rg11snorm":{gl:37491},"astc-4x4-unorm":{gl:37808},"astc-4x4-unorm-srgb":{gl:37840},"astc-5x4-unorm":{gl:37809},"astc-5x4-unorm-srgb":{gl:37841},"astc-5x5-unorm":{gl:37810},"astc-5x5-unorm-srgb":{gl:37842},"astc-6x5-unorm":{gl:37811},"astc-6x5-unorm-srgb":{gl:37843},"astc-6x6-unorm":{gl:37812},"astc-6x6-unorm-srgb":{gl:37844},"astc-8x5-unorm":{gl:37813},"astc-8x5-unorm-srgb":{gl:37845},"astc-8x6-unorm":{gl:37814},"astc-8x6-unorm-srgb":{gl:37846},"astc-8x8-unorm":{gl:37815},"astc-8x8-unorm-srgb":{gl:37847},"astc-10x5-unorm":{gl:37816},"astc-10x5-unorm-srgb":{gl:37848},"astc-10x6-unorm":{gl:37817},"astc-10x6-unorm-srgb":{gl:37849},"astc-10x8-unorm":{gl:37818},"astc-10x8-unorm-srgb":{gl:37850},"astc-10x10-unorm":{gl:37819},"astc-10x10-unorm-srgb":{gl:37851},"astc-12x10-unorm":{gl:37820},"astc-12x10-unorm-srgb":{gl:37852},"astc-12x12-unorm":{gl:37821},"astc-12x12-unorm-srgb":{gl:37853},"pvrtc-rgb4unorm-webgl":{gl:35840},"pvrtc-rgba4unorm-webgl":{gl:35842},"pvrtc-rgb2unorm-webgl":{gl:35841},"pvrtc-rgba2unorm-webgl":{gl:35843},"etc1-rbg-unorm-webgl":{gl:36196},"atc-rgb-unorm-webgl":{gl:35986},"atc-rgba-unorm-webgl":{gl:35986},"atc-rgbai-unorm-webgl":{gl:34798}};function Ot$1(r,e,t){let n=e.create,i=ce$1[e.format];i?.gl===void 0&&(n=!1),i?.x&&(n=n&&!!G(r,i.x,t)),e.format===`stencil8`&&(n=!1);let s=i?.r===!1?!1:i?.r===void 0||Ue$1(r,i.r,t),o=n&&e.render&&s&&kr(r,e.format,t);return{format:e.format,create:n&&e.create,render:o,filter:n&&e.filter,blend:n&&e.blend,store:n&&e.store}}function kr(r,e,t){let n=ce$1[e],i=n?.gl;if(i===void 0||n?.x&&!G(r,n.x,t))return!1;let s=r.getParameter(32873),o=r.getParameter(36006),a=r.createTexture(),l=r.createFramebuffer();if(!a||!l)return!1;let c=0,u=Number(r.getError());for(;u!==c;)u=r.getError();let f=!1;try{if(r.bindTexture(3553,a),r.texStorage2D(3553,1,i,1,1),Number(r.getError())!==c)return!1;r.bindFramebuffer(36160,l),r.framebufferTexture2D(36160,36064,3553,a,0),f=Number(r.checkFramebufferStatus(36160))===36053&&Number(r.getError())===c}finally{r.bindFramebuffer(36160,o),r.deleteFramebuffer(l),r.bindTexture(3553,s),r.deleteTexture(a)}return f}function ue(r){let e=ce$1[r],t=Rr$1(r),n=x.getInfo(r);return n.compressed&&(e.dataFormat=t),{internalFormat:t,format:e?.dataFormat||Dr(n.channels,n.integer,n.normalized,t),type:n.dataType?oe$1(n.dataType):e?.types?.[0]||5121,compressed:n.compressed||!1}}function Mt$1(r){switch(x.getInfo(r).attachment){case`depth`:return 36096;case`stencil`:return 36128;case`depth-stencil`:return 33306;default:throw new Error(`Not a depth stencil format: ${r}`)}}function Dr(r,e,t,n){if(n===6408||n===6407)return n;switch(r){case`r`:return e&&!t?36244:6403;case`rg`:return e&&!t?33320:33319;case`rgb`:return e&&!t?36248:6407;case`rgba`:return e&&!t?36249:6408;case`bgra`:throw new Error(`bgra pixels not supported by WebGL`);default:return 6408}}function Rr$1(r){let t=ce$1[r]?.gl;if(t===void 0)throw new Error(`Unsupported texture format ${r}`);return t}var $t$1={"depth-clip-control":`EXT_depth_clamp`,"timestamp-query":`EXT_disjoint_timer_query_webgl2`,"compilation-status-async-webgl":`KHR_parallel_shader_compile`,"html-in-canvas":r=>Vr$2()&&typeof r.texElementImage2D==`function`,"polygon-mode-webgl":`WEBGL_polygon_mode`,"provoking-vertex-webgl":`WEBGL_provoking_vertex`,"shader-clip-cull-distance-webgl":`WEBGL_clip_cull_distance`,"shader-noperspective-interpolation-webgl":`NV_shader_noperspective_interpolation`,"shader-conservative-depth-webgl":`EXT_conservative_depth`};var fe=class extends Ne$2{gl;extensions;testedFeatures=new Set;constructor(e,t,n){super([],n),this.gl=e,this.extensions=t,G(e,`EXT_color_buffer_float`,t)}*[Symbol.iterator](){let e=this.getFeatures();for(let t of e)this.has(t)&&(yield t);return[]}has(e){return this.disabledFeatures?.[e]?!1:(this.testedFeatures.has(e)||(this.testedFeatures.add(e),It$1(e)&&Ue$1(this.gl,e,this.extensions)&&this.features.add(e),this.getWebGLFeature(e)&&this.features.add(e)),this.features.has(e))}initializeFeatures(){let e=this.getFeatures().filter(t=>t!==`polygon-mode-webgl`);for(let t of e)this.has(t)}getFeatures(){return[...Object.keys($t$1),...Object.keys(le)]}getWebGLFeature(e){let t=$t$1[e];return typeof t==`string`?!!G(this.gl,t,this.extensions):typeof t==`function`?t(this.gl):!!t}};var de$1=class extends Ge$2{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxBindGroupsPlusVertexBuffers(){return 0}get maxBindingsPerBindGroup(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageBuffersInVertexStage(){return 0}get maxStorageBuffersInFragmentStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxStorageTexturesInVertexStage(){return 0}get maxStorageTexturesInFragmentStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get maxBufferSize(){return Number.MAX_SAFE_INTEGER}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderVariables(){return this.getParameter(35659)}get maxColorAttachments(){return this.getParameter(36063)}get maxColorAttachmentBytesPerSample(){return 0}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(e){super(),this.gl=e}getParameter(e){return this.limits[e]===void 0&&(this.limits[e]=this.gl.getParameter(e)),this.limits[e]||0}};var D=class extends Xe$2{device;gl;handle;colorAttachments=[];depthStencilAttachment=null;constructor(e,t){super(e,t);let n=t.handle,i=n===null;this.device=e,this.gl=e.gl,this.handle=n||i?n:this.gl.createFramebuffer(),i||(e._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),t.handle||(this.autoCreateAttachmentTextures(),this.updateAttachments()))}destroy(){super.destroy(),!this.destroyed&&this.handle!==null&&!this.props.handle&&this.gl.deleteFramebuffer(this.handle)}updateAttachments(){let e=this.gl.bindFramebuffer(36160,this.handle);for(let t=0;t<this.colorAttachments.length;++t){let n=this.colorAttachments[t];if(n){let i=36064+t;this._attachTextureView(i,n)}}if(this.depthStencilAttachment){let t=Mt$1(this.depthStencilAttachment.props.format);this._attachTextureView(t,this.depthStencilAttachment)}if(this.device.props.debug){let t=this.gl.checkFramebufferStatus(36160);if(t!==36053)throw new Error(`Framebuffer ${Wr$1(t)}`)}this.gl.bindFramebuffer(36160,e)}_attachTextureView(e,t){let{gl:n}=this.device,{texture:i}=t,s=t.props.baseMipLevel,o=t.props.baseArrayLayer;switch(n.bindTexture(i.glTarget,i.handle),i.glTarget){case 35866:case 32879:n.framebufferTextureLayer(36160,e,i.handle,s,o);break;case 34067:let a=Ir$1(o);n.framebufferTexture2D(36160,e,a,i.handle,s);break;case 3553:n.framebufferTexture2D(36160,e,3553,i.handle,s);break;default:throw new Error(`Illegal texture type`)}n.bindTexture(i.glTarget,null)}resizeAttachments(e,t){if(this.handle===null){this.width=e,this.height=t;return}super.resizeAttachments(e,t)}};function Ir$1(r){return r<34069?r+34069:r}function Wr$1(r){switch(r){case 36053:return`success`;case 36054:return`Mismatched attachments`;case 36055:return`No attachments`;case 36057:return`Height/width mismatch`;case 36061:return`Unsupported or split attachments`;case 36182:return`Samples mismatch`;default:return`${r}`}}var he$1=class extends ti$1{device;handle=null;_framebuffer=null;get[Symbol.toStringTag](){return`WebGLCanvasContext`}constructor(e,t){super(t),this.device=e,this._setAutoCreatedCanvasId(`${this.device.id}-canvas`),this._configureDevice()}_configureDevice(){(this.drawingBufferWidth!==this._framebuffer?.width||this.drawingBufferHeight!==this._framebuffer?.height)&&this._framebuffer?.resize([this.drawingBufferWidth,this.drawingBufferHeight])}_getCurrentFramebuffer(){return this._framebuffer||=new D(this.device,{id:`canvas-context-framebuffer`,handle:null,width:this.drawingBufferWidth,height:this.drawingBufferHeight}),this._framebuffer}};var me$1=class extends Ve$2{device;handle=null;context2d;get[Symbol.toStringTag](){return`WebGLPresentationContext`}constructor(e,t={}){super(t),this.device=e;let n=`${this[Symbol.toStringTag]}(${this.id})`;if(!this.device.getDefaultCanvasContext().offscreenCanvas)throw new Error(`${n}: WebGL PresentationContext requires the default CanvasContext canvas to be an OffscreenCanvas`);let s=this.canvas.getContext(`2d`);if(!s)throw new Error(`${n}: Failed to create 2d presentation context`);this.context2d=s,this._setAutoCreatedCanvasId(`${this.device.id}-presentation-canvas`),this._configureDevice(),this._startObservers()}present(){this._resizeDrawingBufferIfNeeded(),this.device.submit();let e=this.device.getDefaultCanvasContext(),[t,n]=e.getDrawingBufferSize();if(!(this.drawingBufferWidth===0||this.drawingBufferHeight===0||t===0||n===0||e.canvas.width===0||e.canvas.height===0)){if(t!==this.drawingBufferWidth||n!==this.drawingBufferHeight||e.canvas.width!==this.drawingBufferWidth||e.canvas.height!==this.drawingBufferHeight)throw new Error(`${this[Symbol.toStringTag]}(${this.id}): Default canvas context size ${t}x${n} does not match presentation size ${this.drawingBufferWidth}x${this.drawingBufferHeight}`);this.context2d.clearRect(0,0,this.drawingBufferWidth,this.drawingBufferHeight),this.context2d.drawImage(e.canvas,0,0)}}_configureDevice(){}_getCurrentFramebuffer(e){let t=this.device.getDefaultCanvasContext();return t.setDrawingBufferSize(this.drawingBufferWidth,this.drawingBufferHeight),t.getCurrentFramebuffer(e)}};var ge$1=null;var Ve$1=null;var Nt$1=!1;async function Ut$1(){if(!ge$1){Qe$1();return}await ge$1.load()}function Vt$1(r,e){return ge$1?ge$1.makeDebugContext(r,e):(Qe$1(),r)}async function Qt$1(r){if(!Ve$1){Qe$1();return}await Ve$1.load(r)}function zt$1(r){return Ve$1?.initialize(r)||null}function Qe$1(){Nt$1||(Nt$1=!0,f$1.warn(`Import @luma.gl/webgl/debug before enabling WebGL debugging.`)())}var ze$1={};function Xt$1(r=`id`){ze$1[r]=ze$1[r]||1;return`${r}-${ze$1[r]++}`}var C=class extends P$2{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength=0;bytesUsed=0;constructor(e,t={}){super(e,t),this.device=e,this.gl=this.device.gl;let n=typeof t==`object`?t.handle:void 0;this.handle=n||this.gl.createBuffer(),e._setWebGLDebugMetadata(this.handle,this,{spector:s(r({},this.props),{data:typeof this.props.data})}),this.glTarget=Or(this.props.usage),this.glUsage=Mr$1(this.props.usage),this.glIndexType=this.props.indexType===`uint32`?5125:5123,t.data?this._initWithData(t.data,t.byteOffset,t.byteLength):this._initWithByteLength(t.byteLength||0)}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.props.handle?this.trackDeallocatedReferencedMemory(`Buffer`):(this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle)),this.destroyed=!0,this.handle=null)}_initWithData(e,t=0,n=e.byteLength+t){let i=this.glTarget;this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,n,this.glUsage),this.gl.bufferSubData(i,t,e),this.gl.bindBuffer(i,null),this.bytesUsed=n,this.byteLength=n,this._setDebugData(e,t,n),this.props.handle?this.trackReferencedMemory(n,`Buffer`):this.trackAllocatedMemory(n)}_initWithByteLength(e){let t=e;e===0&&(t=new Float32Array(0));let n=this.glTarget;return this.gl.bindBuffer(n,this.handle),this.gl.bufferData(n,t,this.glUsage),this.gl.bindBuffer(n,null),this.bytesUsed=e,this.byteLength=e,this._setDebugData(null,0,e),this.props.handle?this.trackReferencedMemory(e,`Buffer`):this.trackAllocatedMemory(e),this}write(e,t=0){let n=ArrayBuffer.isView(e)?e:new Uint8Array(e),o=36663;this.gl.bindBuffer(o,this.handle),this.gl.bufferSubData(o,t,n),this.gl.bindBuffer(o,null),this._setDebugData(e,t,e.byteLength)}async mapAndWriteAsync(e,t=0,n=this.byteLength-t){let i=new ArrayBuffer(n);await e(i,`copied`),this.write(i,t)}async readAsync(e=0,t){return this.readSyncWebGL(e,t)}async mapAndReadAsync(e,t=0,n){return await e((await this.readAsync(t,n)).buffer,`copied`)}readSyncWebGL(e=0,t){t=t??this.byteLength-e;let n=new Uint8Array(t);return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,e,n,0,t),this.gl.bindBuffer(36662,null),this._setDebugData(n,e,t),n}};function Or(r){return r&P$2.INDEX?34963:r&P$2.VERTEX?34962:r&P$2.UNIFORM?35345:34962}function Mr$1(r){return r&P$2.INDEX||r&P$2.VERTEX?35044:r&P$2.UNIFORM?35048:35044}function jt$1(r){let e=r.split(/\r?\n/),t=[];for(let n of e){if(n.length<=1)continue;let i=n.trim(),s=n.split(`:`),o=s[0]?.trim();if(s.length===2){let[d,b]=s;if(!d||!b){t.push({message:i,type:pe$1(o||`info`),lineNum:0,linePos:0});continue}t.push({message:b.trim(),type:pe$1(d),lineNum:0,linePos:0});continue}let[a,l,c,...u]=s;if(!a||!l||!c){t.push({message:s.slice(1).join(`:`).trim()||i,type:pe$1(o||`info`),lineNum:0,linePos:0});continue}let f=parseInt(c,10);Number.isNaN(f)&&(f=0);let m=parseInt(l,10);Number.isNaN(m)&&(m=0),t.push({message:u.join(`:`).trim(),type:pe$1(a),lineNum:f,linePos:m})}return t}function pe$1(r){let e=[`warning`,`error`,`info`],t=r.toLowerCase();return e.includes(t)?t:`info`}var be$1=class extends X$2{device;handle;_compilationInfoLog=``;constructor(e,t){super(e,t),this.device=e;let n=this.props.handle;switch(this.props.stage){case`vertex`:this.handle=n||this.device.gl.createShader(35633);break;case`fragment`:this.handle=n||this.device.gl.createShader(35632);break;default:throw new Error(this.props.stage)}e._setWebGLDebugMetadata(this.handle,this,{spector:this.props});let i=this._compile(this.source);i&&typeof i.catch==`function`&&i.catch(()=>{this.compilationStatus=`error`})}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0,this.handle.destroyed=!0)}get asyncCompilationStatus(){return this._waitForCompilationComplete().then(()=>(this._getCompilationStatus(),this.compilationStatus))}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let e=this._getCompilationInfoLog();return e?jt$1(e):[]}getTranslatedSource(){return this.device.getExtension(`WEBGL_debug_shaders`).WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)||null}_compile(e){e=e.startsWith(`#version `)?e:`#version 300 es
406
+ ${e}`;let{gl:t}=this.device;if(t.shaderSource(this.handle,e),t.compileShader(this.handle),!this.device.props.debug){this.compilationStatus=`pending`;return}if(!this.device.features.has(`compilation-status-async-webgl`)){if(this._getCompilationStatus(),this.debugShader(),this.compilationStatus===`error`)throw new Error(this._getCompilationErrorMessage(e));return}return f$1.once(1,`Shader compilation is asynchronous`)(),this._waitForCompilationComplete().then(()=>{f$1.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()})}async _waitForCompilationComplete(){let e=async i=>await new Promise(s=>setTimeout(s,i));if(!this.device.features.has(`compilation-status-async-webgl`)){await e(10);return}let{gl:n}=this.device;for(;;){if(n.getShaderParameter(this.handle,37297))return;await e(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?`success`:`error`,this.compilationStatus===`error`&&this._getCompilationInfoLog()}_getCompilationErrorMessage(e){let t=`${this.props.stage} shader ${this.props.id}`,n=$r$1(this._getCompilationInfoLog()),i=this.getCompilationInfoSync(),s=i.find(u=>u.type===`error`&&u.message.trim())||i.find(u=>u.message.trim())||i.find(u=>u.type===`error`)||i[0];if(!s)return n?`GLSL compilation errors in ${t}: ${n}`:`GLSL compilation errors in ${t}: WebGL did not provide a shader compiler log`;let o=s.lineNum?e.split(/\r?\n/)[s.lineNum-1]?.trim():void 0,a=s.lineNum?` line ${s.lineNum}`:``,l=o?`
407
+ Source: ${o}`:``;return`GLSL compilation errors in ${t}:${a}: ${s.message.trim()||n||`WebGL did not provide a shader compiler log`}${l}`}_getCompilationInfoLog(){let e=this.device.gl.getShaderInfoLog(this.handle)?.trim();return e&&(this._compilationInfoLog=e),this._compilationInfoLog}};function $r$1(r){return r.split(/\r?\n/).find(e=>e.trim())?.trim()}function Yt$1(r,e,t,n){if(Qr$1(e))return n(r);let i=r;i.pushState();try{return Nr$1(r,e),A$1(i.gl,t),n(r)}finally{i.popState()}}function Nr$1(r,e){let t=r,{gl:n}=t;if(e.cullMode)switch(e.cullMode){case`none`:n.disable(2884);break;case`front`:n.enable(2884),n.cullFace(1028);break;case`back`:n.enable(2884),n.cullFace(1029);break}if(e.frontFace&&n.frontFace($$1(`frontFace`,e.frontFace,{ccw:2305,cw:2304})),e.unclippedDepth&&r.features.has(`depth-clip-control`)&&n.enable(34383),e.depthBias!==void 0&&(n.enable(32823),n.polygonOffset(e.depthBias,e.depthBiasSlopeScale||0)),e.provokingVertex&&r.features.has(`provoking-vertex-webgl`)){let s=t.getExtension(`WEBGL_provoking_vertex`).WEBGL_provoking_vertex,o=$$1(`provokingVertex`,e.provokingVertex,{first:36429,last:36430});s?.provokingVertexWEBGL(o)}if((e.polygonMode||e.polygonOffsetLine)&&r.features.has(`polygon-mode-webgl`)){if(e.polygonMode){let s=t.getExtension(`WEBGL_polygon_mode`).WEBGL_polygon_mode,o=$$1(`polygonMode`,e.polygonMode,{fill:6914,line:6913});s?.polygonModeWEBGL(1028,o),s?.polygonModeWEBGL(1029,o)}e.polygonOffsetLine&&n.enable(10754)}if(r.features.has(`shader-clip-cull-distance-webgl`)&&(e.clipDistance0&&n.enable(12288),e.clipDistance1&&n.enable(12289),e.clipDistance2&&n.enable(12290),e.clipDistance3&&n.enable(12291),e.clipDistance4&&n.enable(12292),e.clipDistance5&&n.enable(12293),e.clipDistance6&&n.enable(12294),e.clipDistance7&&n.enable(12295)),e.depthWriteEnabled!==void 0&&n.depthMask(Vr$1(`depthWriteEnabled`,e.depthWriteEnabled)),e.depthCompare&&(e.depthCompare!==`always`?n.enable(2929):n.disable(2929),n.depthFunc(xe$1(`depthCompare`,e.depthCompare))),e.clearDepth!==void 0&&n.clearDepth(e.clearDepth),e.stencilWriteMask){let i=e.stencilWriteMask;n.stencilMaskSeparate(1028,i),n.stencilMaskSeparate(1029,i)}if(e.stencilReadMask&&f$1.warn(`stencilReadMask not supported under WebGL`),e.stencilCompare){let i=e.stencilReadMask||4294967295,s=xe$1(`depthCompare`,e.stencilCompare);e.stencilCompare!==`always`?n.enable(2960):n.disable(2960),n.stencilFuncSeparate(1028,s,0,i),n.stencilFuncSeparate(1029,s,0,i)}if(e.stencilPassOperation&&e.stencilFailOperation&&e.stencilDepthFailOperation){let i=Xe$1(`stencilPassOperation`,e.stencilPassOperation),s=Xe$1(`stencilFailOperation`,e.stencilFailOperation),o=Xe$1(`stencilDepthFailOperation`,e.stencilDepthFailOperation);n.stencilOpSeparate(1028,s,o,i),n.stencilOpSeparate(1029,s,o,i)}switch(e.blend){case!0:n.enable(3042);break;case!1:n.disable(3042);break;default:}if(e.blendColorOperation||e.blendAlphaOperation){let i=Ht(`blendColorOperation`,e.blendColorOperation||`add`),s=Ht(`blendAlphaOperation`,e.blendAlphaOperation||`add`);n.blendEquationSeparate(i,s);let o=ye$1(`blendColorSrcFactor`,e.blendColorSrcFactor||`one`),a=ye$1(`blendColorDstFactor`,e.blendColorDstFactor||`zero`),l=ye$1(`blendAlphaSrcFactor`,e.blendAlphaSrcFactor||`one`),c=ye$1(`blendAlphaDstFactor`,e.blendAlphaDstFactor||`zero`);n.blendFuncSeparate(o,a,l,c)}}function xe$1(r,e){return $$1(r,e,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function Xe$1(r,e){return $$1(r,e,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function Ht(r,e){return $$1(r,e,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function ye$1(r,e,t=`color`){return $$1(r,e,{one:1,zero:0,src:768,"one-minus-src":769,dst:774,"one-minus-dst":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,constant:t===`color`?32769:32771,"one-minus-constant":t===`color`?32770:32772,src1:768,"one-minus-src1":769,"src1-alpha":770,"one-minus-src1-alpha":771})}function Ur$1(r,e){return`Illegal parameter ${e} for ${r}`}function $$1(r,e,t){if(!(e in t))throw new Error(Ur$1(r,e));return t[e]}function Vr$1(r,e){return e}function Qr$1(r){let e=!0;for(let t in r){e=!1;break}return e}function we$1(r){let e={};return r.addressModeU&&(e[10242]=je$1(r.addressModeU)),r.addressModeV&&(e[10243]=je$1(r.addressModeV)),r.addressModeW&&(e[32882]=je$1(r.addressModeW)),r.magFilter&&(e[10240]=He(r.magFilter)),(r.minFilter||r.mipmapFilter)&&(e[10241]=zr$1(r.minFilter||`linear`,r.mipmapFilter)),r.lodMinClamp!==void 0&&(e[33082]=r.lodMinClamp),r.lodMaxClamp!==void 0&&(e[33083]=r.lodMaxClamp),r.type===`comparison-sampler`&&(e[34892]=34894),r.compare&&(e[34893]=xe$1(`compare`,r.compare)),r.maxAnisotropy&&(e[34046]=r.maxAnisotropy),e}function je$1(r){switch(r){case`clamp-to-edge`:return 33071;case`repeat`:return 10497;case`mirror-repeat`:return 33648}}function He(r){switch(r){case`nearest`:return 9728;case`linear`:return 9729}}function zr$1(r,e=`none`){if(!e)return He(r);switch(e){case`none`:return He(r);case`nearest`:switch(r){case`nearest`:return 9984;case`linear`:return 9985}break;case`linear`:switch(r){case`nearest`:return 9986;case`linear`:return 9987}}}var _e$1=class extends Y$1{device;handle;parameters;constructor(e,t){super(e,t),this.device=e,this.parameters=we$1(t),this.handle=t.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(e){for(let[t,n]of Object.entries(e)){let i=Number(t);switch(i){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,i,n);break;default:this.device.gl.samplerParameteri(this.handle,i,n);break}}}};function P$1(r,e,t){if(Xr$1(e))return t(r);let{nocatch:n=!0}=e,i=F$1.get(r);i.push(),A$1(r,e);let s;if(n)s=t(r),i.pop();else try{s=t(r)}finally{i.pop()}return s}function Xr$1(r){for(let e in r)return!1;return!0}var R$1=class extends je$2{device;gl;handle;texture;constructor(e,t){super(e,r(r({},v.defaultProps),t)),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=t.texture}};function Te$1(r){return jr$1[r]}var jr$1={5124:`sint32`,5125:`uint32`,5122:`sint16`,5123:`uint16`,5120:`sint8`,5121:`uint8`,5126:`float32`,5131:`float16`,33635:`uint16`,32819:`uint16`,32820:`uint16`,33640:`uint32`,35899:`uint32`,35902:`uint32`,34042:`uint32`,36269:`uint32`};var I=class extends v{device;gl;handle;sampler=void 0;view;glTarget;glFormat;glType;glInternalFormat;compressed;_textureUnit=0;_framebuffer=null;_framebufferAttachmentKey=null;constructor(e,t){super(e,t,{byteAlignment:1}),this.device=e,this.gl=this.device.gl;let n=ue(this.props.format);if(this.glTarget=Kr$1(this.props.dimension),this.glInternalFormat=n.internalFormat,this.glFormat=n.format,this.glType=n.type,this.compressed=n.compressed,this.isHandleBorrowed&&this.props.handle===void 0)throw new Error(`Borrowed WebGL textures require a texture handle`);if(this.handle=this.props.handle||this.gl.createTexture(),this.device._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),!this.isHandleBorrowed){this.gl.bindTexture(this.glTarget,this.handle);let{dimension:i,width:s,height:o,depth:a,mipLevels:l,glTarget:c,glInternalFormat:u}=this;if(!this.compressed)switch(i){case`2d`:case`cube`:this.gl.texStorage2D(c,l,u,s,o);break;case`2d-array`:case`3d`:this.gl.texStorage3D(c,l,u,s,o,a);break;default:throw new Error(i)}this.gl.bindTexture(this.glTarget,null),this._initializeData(t.data)}this.ownsHandle?this.trackAllocatedMemory(this.getAllocatedByteLength(),`Texture`):this.trackReferencedMemory(this.getAllocatedByteLength(),`Texture`),this.isHandleBorrowed||this.setSampler(this.props.sampler),this.view=new R$1(this.device,s(r({},this.props),{texture:this})),Object.seal(this)}destroy(){this.handle&&(this._framebuffer?.destroy(),this._framebuffer=null,this._framebufferAttachmentKey=null,this.removeStats(),this.ownsHandle?(this.gl.deleteTexture(this.handle),this.trackDeallocatedMemory(`Texture`)):this.trackDeallocatedReferencedMemory(`Texture`),this.destroyed=!0)}createView(e){return new R$1(this.device,s(r({},e),{texture:this}))}clone(e){if(this.isHandleBorrowed&&e&&(e.width!==this.width||e.height!==this.height))throw new Error(`Cannot resize borrowed read-only ${this}`);return super.clone(e)}setSampler(e={}){this._assertWritable(`set sampler parameters on`),super.setSampler(e);let t=we$1(this.sampler.props);this._setSamplerParameters(t)}copyExternalImage(e){this._assertWritable(`copy external image data into`);let t=this._normalizeCopyExternalImageOptions(e);if(t.sourceX||t.sourceY)throw new Error(`WebGL does not support sourceX/sourceY)`);let{glFormat:n,glType:i}=this,{image:s,depth:o,mipLevel:a,x:l,y:c,z:u,width:f,height:m}=t,d=Z$1(this.glTarget,this.dimension,u),b=t.flipY?{37440:!0}:{};return this.gl.bindTexture(this.glTarget,this.handle),P$1(this.gl,b,()=>{switch(this.dimension){case`2d`:case`cube`:this.gl.texSubImage2D(d,a,l,c,f,m,n,i,s);break;case`2d-array`:case`3d`:this.gl.texSubImage3D(d,a,l,c,u,f,m,o,n,i,s);break;default:}}),this.gl.bindTexture(this.glTarget,null),{width:t.width,height:t.height}}copyElementImage(e){this._assertWritable(`copy element image data into`);let t=this._normalizeCopyElementImageOptions(e),{glFormat:n}=this,{element:i,depth:s,mipLevel:o,sourceX:a,sourceY:l,sourceWidth:c,sourceHeight:u,x:f,y:m,z:d,width:b,height:y}=t,x=Z$1(this.glTarget,this.dimension,d),p=t.flipY?{37440:!0}:{},L=this.gl;if(s!==1||this.dimension!==`2d`&&this.dimension!==`cube`)throw new Error(`${this} copyElementImage only supports 2d and cube textures on WebGL`);if(o!==0||f!==0||m!==0)throw new Error(`${this} copyElementImage only supports full base-level uploads on WebGL`);if(typeof L.texElementImage2D!=`function`)throw new Error(`${this} copyElementImage is not supported by this WebGL implementation`);return this.gl.bindTexture(this.glTarget,this.handle),P$1(this.gl,p,()=>{L.texElementImage2D?.(x,n,i,{sx:a,sy:l,swidth:c??b,sheight:u??y,width:b,height:y})}),this.gl.bindTexture(this.glTarget,null),{width:t.width,height:t.height}}copyImageData(e){super.copyImageData(e)}readBuffer(e={},t){if(!t)throw new Error(`${this} readBuffer requires a destination buffer`);let n=this._getSupportedColorReadOptions(e),i=e.byteOffset??0,s=this.computeMemoryLayout(n);if(t.byteLength<i+s.byteLength)throw new Error(`${this} readBuffer target is too small (${t.byteLength} < ${i+s.byteLength})`);let o=t;this.gl.bindBuffer(35051,o.handle);try{this._readColorTextureLayers(n,s,a=>{this.gl.readPixels(n.x,n.y,n.width,n.height,this.glFormat,this.glType,i+a)})}finally{this.gl.bindBuffer(35051,null)}return t}async readDataAsync(e={}){throw new Error(`${this} readDataAsync is deprecated; use readBuffer() with an explicit destination buffer or DynamicTexture.readAsync()`)}writeBuffer(e,t={}){this._assertWritable(`write buffer data into`);let n=this._normalizeTextureWriteOptions(t),{width:i,height:s$42,depthOrArrayLayers:o,mipLevel:a,byteOffset:l,x:c,y:u,z:f}=n,{glFormat:m,glType:d,compressed:b}=this,y=Z$1(this.glTarget,this.dimension,f);if(b)throw new Error(`writeBuffer for compressed textures is not implemented in WebGL`);let{bytesPerPixel:x}=this.device.getTextureFormatInfo(this.format),p=x?n.bytesPerRow/x:void 0,L=s(r({3317:this.byteAlignment},p!==void 0?{3314:p}:{}),{32878:n.rowsPerImage});this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,e.handle),P$1(this.gl,L,()=>{switch(this.dimension){case`2d`:case`cube`:this.gl.texSubImage2D(y,a,c,u,i,s$42,m,d,l);break;case`2d-array`:case`3d`:this.gl.texSubImage3D(y,a,c,u,f,i,s$42,o,m,d,l);break;default:}}),this.gl.bindBuffer(35052,null),this.gl.bindTexture(this.glTarget,null)}writeData(e,t={}){this._assertWritable(`write data into`);let n=this._normalizeTextureWriteOptions(t),i=ArrayBuffer.isView(e)?e:new Uint8Array(e),{width:s$43,height:o,depthOrArrayLayers:a,mipLevel:l,x:c,y:u,z:f,byteOffset:m}=n,{glFormat:d,glType:b,compressed:y}=this,x=Z$1(this.glTarget,this.dimension,f),p;if(!y){let{bytesPerPixel:z}=this.device.getTextureFormatInfo(this.format);z&&(p=n.bytesPerRow/z)}let L=this.compressed?{}:s(r({3317:this.byteAlignment},p!==void 0?{3314:p}:{}),{32878:n.rowsPerImage}),w=Yr$1(i,m),v=y?Hr$1(i,m):i,S=this._getMipLevelSize(l),O=c===0&&u===0&&f===0&&s$43===S.width&&o===S.height&&a===S.depthOrArrayLayers;this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,null),P$1(this.gl,L,()=>{switch(this.dimension){case`2d`:case`cube`:y?O?this.gl.compressedTexImage2D(x,l,d,s$43,o,0,v):this.gl.compressedTexSubImage2D(x,l,c,u,s$43,o,d,v):this.gl.texSubImage2D(x,l,c,u,s$43,o,d,b,i,w);break;case`2d-array`:case`3d`:y?O?this.gl.compressedTexImage3D(x,l,d,s$43,o,a,0,v):this.gl.compressedTexSubImage3D(x,l,c,u,f,s$43,o,a,d,v):this.gl.texSubImage3D(x,l,c,u,f,s$43,o,a,d,b,i,w);break;default:}}),this.gl.bindTexture(this.glTarget,null)}_getRowByteAlignment(e,t){return 1}_getFramebuffer(){return this._framebuffer||=this.device.createFramebuffer({id:`framebuffer-for-${this.id}`,width:this.width,height:this.height,colorAttachments:[this]}),this._framebuffer}readDataSyncWebGL(e={}){let t=this._getSupportedColorReadOptions(e),n=this.computeMemoryLayout(t),s=Se$3(Te$1(this.glType)),o=new s(n.byteLength/s.BYTES_PER_ELEMENT);return this._readColorTextureLayers(t,n,a=>{let l=new s(o.buffer,o.byteOffset+a,n.bytesPerImage/s.BYTES_PER_ELEMENT);this.gl.readPixels(t.x,t.y,t.width,t.height,this.glFormat,this.glType,l)}),o.buffer}_readColorTextureLayers(e,t,n){let i=this._getFramebuffer(),s=t.bytesPerRow/t.bytesPerPixel,o=r({3333:this.byteAlignment},s!==e.width?{3330:s}:{}),a=this.gl.getParameter(3074),l=this.gl.bindFramebuffer(36160,i.handle);try{this.gl.readBuffer(36064),P$1(this.gl,o,()=>{for(let c=0;c<e.depthOrArrayLayers;c++)this._attachReadSubresource(i,e.mipLevel,e.z+c),n(c*t.bytesPerImage)})}finally{this.gl.bindFramebuffer(36160,l||null),this.gl.readBuffer(a)}}_attachReadSubresource(e,t,n){let i=`${t}:${n}`;if(this._framebufferAttachmentKey!==i){switch(this.dimension){case`2d`:this.gl.framebufferTexture2D(36160,36064,3553,this.handle,t);break;case`cube`:this.gl.framebufferTexture2D(36160,36064,Z$1(this.glTarget,this.dimension,n),this.handle,t);break;case`2d-array`:case`3d`:this.gl.framebufferTextureLayer(36160,36064,this.handle,t,n);break;default:throw new Error(`${this} color readback does not support ${this.dimension} textures`)}if(this.device.props.debug){let s=Number(this.gl.checkFramebufferStatus(36160));if(s!==36053)throw new Error(`${e} incomplete for ${this} readback (${s})`)}this._framebufferAttachmentKey=i}}generateMipmapsWebGL(e){if(this._assertWritable(`generate mipmaps for`),!(!(this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format))&&(f$1.warn(`${this} is not renderable or filterable, may not be able to generate mipmaps`)(),!e?.force)))try{this.gl.bindTexture(this.glTarget,this.handle),this.gl.generateMipmap(this.glTarget)}catch(n){f$1.warn(`Error generating mipmap for ${this}: ${n.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}_setSamplerParameters(e){f$1.log(2,`${this.id} sampler parameters`,this.device.getGLKeys(e))(),this.gl.bindTexture(this.glTarget,this.handle);for(let[t,n]of Object.entries(e)){let i=Number(t),s=n;switch(i){case 33082:case 33083:this.gl.texParameterf(this.glTarget,i,s);break;case 10240:case 10241:this.gl.texParameteri(this.glTarget,i,s);break;case 10242:case 10243:case 32882:this.gl.texParameteri(this.glTarget,i,s);break;case 34046:this.device.features.has(`texture-filterable-anisotropic-webgl`)&&this.gl.texParameteri(this.glTarget,i,s);break;case 34892:case 34893:this.gl.texParameteri(this.glTarget,i,s);break}}this.gl.bindTexture(this.glTarget,null)}_getActiveUnit(){return this.gl.getParameter(34016)-33984}_bind(e){let{gl:t}=this;return e!==void 0&&(this._textureUnit=e,t.activeTexture(33984+e)),t.bindTexture(this.glTarget,this.handle),e}_unbind(e){let{gl:t}=this;return e!==void 0&&(this._textureUnit=e,t.activeTexture(33984+e)),t.bindTexture(this.glTarget,null),e}_assertWritable(e){if(this.isHandleBorrowed)throw new Error(`Cannot ${e} borrowed read-only ${this}`)}};function Hr$1(r,e=0){return e?new r.constructor(r.buffer,r.byteOffset+e,(r.byteLength-e)/r.BYTES_PER_ELEMENT):r}function Yr$1(r,e){if(e%r.BYTES_PER_ELEMENT!==0)throw new Error(`Texture byteOffset ${e} must align to typed array element size ${r.BYTES_PER_ELEMENT}`);return e/r.BYTES_PER_ELEMENT}function Kr$1(r){switch(r){case`1d`:break;case`2d`:return 3553;case`3d`:return 32879;case`cube`:return 34067;case`2d-array`:return 35866;case`cube-array`:break}throw new Error(r)}function Z$1(r,e,t){return e===`cube`?34069+t:r}function Kt$1(r,e,t,n){let i=r,s=n;s===!0&&(s=1),s===!1&&(s=0);let o=typeof s==`number`?[s]:s;switch(t){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if(typeof n!=`number`)throw new Error(`samplers must be set to integers`);return r.uniform1i(e,n);case 5126:return r.uniform1fv(e,o);case 35664:return r.uniform2fv(e,o);case 35665:return r.uniform3fv(e,o);case 35666:return r.uniform4fv(e,o);case 5124:return r.uniform1iv(e,o);case 35667:return r.uniform2iv(e,o);case 35668:return r.uniform3iv(e,o);case 35669:return r.uniform4iv(e,o);case 35670:return r.uniform1iv(e,o);case 35671:return r.uniform2iv(e,o);case 35672:return r.uniform3iv(e,o);case 35673:return r.uniform4iv(e,o);case 5125:return i.uniform1uiv(e,o,1);case 36294:return i.uniform2uiv(e,o,2);case 36295:return i.uniform3uiv(e,o,3);case 36296:return i.uniform4uiv(e,o,4);case 35674:return r.uniformMatrix2fv(e,!1,o);case 35675:return r.uniformMatrix3fv(e,!1,o);case 35676:return r.uniformMatrix4fv(e,!1,o);case 35685:return i.uniformMatrix2x3fv(e,!1,o);case 35686:return i.uniformMatrix2x4fv(e,!1,o);case 35687:return i.uniformMatrix3x2fv(e,!1,o);case 35688:return i.uniformMatrix3x4fv(e,!1,o);case 35689:return i.uniformMatrix4x2fv(e,!1,o);case 35690:return i.uniformMatrix4x3fv(e,!1,o)}throw new Error(`Illegal uniform`)}function qt(r){return Zr$1[r]}function Ee$1(r){return qr$1[r]}function Le$1(r){return!!Jt$1[r]}function Zt$1(r){return Jt$1[r]}var qr$1={5126:`f32`,35664:`vec2<f32>`,35665:`vec3<f32>`,35666:`vec4<f32>`,5124:`i32`,35667:`vec2<i32>`,35668:`vec3<i32>`,35669:`vec4<i32>`,5125:`u32`,36294:`vec2<u32>`,36295:`vec3<u32>`,36296:`vec4<u32>`,35670:`f32`,35671:`vec2<f32>`,35672:`vec3<f32>`,35673:`vec4<f32>`,35674:`mat2x2<f32>`,35685:`mat2x3<f32>`,35686:`mat2x4<f32>`,35687:`mat3x2<f32>`,35675:`mat3x3<f32>`,35688:`mat3x4<f32>`,35689:`mat4x2<f32>`,35690:`mat4x3<f32>`,35676:`mat4x4<f32>`};var Jt$1={35678:{viewDimension:`2d`,sampleType:`float`},35680:{viewDimension:`cube`,sampleType:`float`},35679:{viewDimension:`3d`,sampleType:`float`},35682:{viewDimension:`3d`,sampleType:`depth`},36289:{viewDimension:`2d-array`,sampleType:`float`},36292:{viewDimension:`2d-array`,sampleType:`depth`},36293:{viewDimension:`cube`,sampleType:`float`},36298:{viewDimension:`2d`,sampleType:`sint`},36299:{viewDimension:`3d`,sampleType:`sint`},36300:{viewDimension:`cube`,sampleType:`sint`},36303:{viewDimension:`2d-array`,sampleType:`uint`},36306:{viewDimension:`2d`,sampleType:`uint`},36307:{viewDimension:`3d`,sampleType:`uint`},36308:{viewDimension:`cube`,sampleType:`uint`},36311:{viewDimension:`2d-array`,sampleType:`uint`}};var Zr$1={uint8:5121,sint8:5120,unorm8:5121,snorm8:5120,uint16:5123,sint16:5122,unorm16:5123,snorm16:5122,uint32:5125,sint32:5124,float16:5131,float32:5126};function tr$1(r,e,t={}){let n={attributes:[],bindings:[]};n.attributes=Jr$1(r,e);let i=rn$1(r,e,t);for(let l of i){let c=l.uniforms.map(u=>({name:u.name,format:u.format,byteOffset:u.byteOffset,byteStride:u.byteStride,arrayLength:u.arrayLength}));n.bindings.push({type:`uniform`,name:l.name,group:0,location:l.location,visibility:(l.vertex?1:0)|(l.fragment?2:0),minBindingSize:l.byteLength,uniforms:c})}let s=tn$1(r,e),o=0;for(let l of s)if(Le$1(l.type)){let{viewDimension:c,sampleType:u}=Zt$1(l.type);n.bindings.push({type:`texture`,name:l.name,group:0,location:o,viewDimension:c,sampleType:u}),l.textureUnit=o,o+=1}s.length&&(n.uniforms=s);let a=en$1(r,e);return a?.length&&(n.varyings=a),n}function Jr$1(r,e){let t=[],n=r.getProgramParameter(e,35721);for(let i=0;i<n;i++){let s=r.getActiveAttrib(e,i);if(!s)throw new Error(`activeInfo`);let{name:o,type:a}=s,l=r.getAttribLocation(e,o);if(l>=0){let c=Ee$1(a),u=/instance/i.test(o)?`instance`:`vertex`;t.push({name:o,location:l,stepMode:u,type:c})}}return t.sort((i,s)=>i.location-s.location),t}function en$1(r,e){let t=[],n=r.getProgramParameter(e,35971);for(let i=0;i<n;i++){let s=r.getTransformFeedbackVarying(e,i);if(!s)throw new Error(`activeInfo`);let{name:o,type:a,size:l}=s,{type:u,components:f}=de$3(Ee$1(a));t.push({location:i,name:o,type:u,size:l*f})}return t.sort((i,s)=>i.location-s.location),t}function tn$1(r$89,e){let t=[],n=r$89.getProgramParameter(e,35718);for(let i=0;i<n;i++){let s$44=r$89.getActiveUniform(e,i);if(!s$44)throw new Error(`activeInfo`);let{name:o,size:a,type:l}=s$44,{name:c,isArray:u}=un(o),f=r$89.getUniformLocation(e,c),m={location:f,name:c,size:a,type:l,isArray:u};if(t.push(m),m.size>1)for(let d=0;d<m.size;d++){let b=`${c}[${d}]`;f=r$89.getUniformLocation(e,b);let y=s(r({},m),{name:b,location:f});t.push(y)}}return t}function rn$1(r,e,t){let n=[],i=sn$1(r,e,t);for(let[o,a]of i){n.push(a);try{nn$1(er$1(r,e,o,a.name),a)}catch(l){let c=l instanceof Error?l.message:String(l);f$1.once(0,`WebGL uniform block reflection failed for "${a.name}"; using supplied std140 metadata. ${c}`)()}}let s=r.getProgramParameter(e,35382);if(!Number.isInteger(s)||s<0)throw new Error(`Failed to reflect WebGL uniform blocks: ACTIVE_UNIFORM_BLOCKS returned ${String(s)}`);for(let o=0;o<s;o++)i.has(o)||n.push(er$1(r,e,o));return n.sort((o,a)=>o.location-a.location),n}function nn$1(r,e){for(let t of r.uniforms){let n=e.uniforms.find(i=>t.name===i.name||t.name.endsWith(`.${i.name}`));if(!n)throw new Error(`Failed to validate WebGL uniform block "${e.name}": reflected unexpected member "${t.name}"`);if(t.format!==n.format||t.arrayLength!==n.arrayLength||t.byteOffset!==n.byteOffset||t.byteStride!==n.byteStride)throw new Error(`Failed to validate WebGL uniform block "${e.name}": reflected layout for "${t.name}" does not match supplied std140 metadata`)}}function sn$1(r$90,e,t){let n=new Map;for(let s of t.uniformBlockLayouts||[])n.set(s.name,an$1(s));for(let s of t.shaderLayout?.bindings||[])cn(s)&&n.set(s.name,s);let i=new Map;for(let s of n.values()){let o=on$1(r$90,e,s.name);if(!o)continue;let{blockIndex:a,blockName:l}=o;if(i.has(a))throw new Error(`Multiple supplied uniform block layouts resolve to active WebGL block "${l}"`);i.set(a,{name:l,location:a,byteLength:s.minBindingSize,vertex:!!(s.visibility&&s.visibility&1),fragment:!!(s.visibility&&s.visibility&2),uniformCount:s.uniforms.length,uniforms:s.uniforms.map(c=>r({},c))})}return i}function on$1(r,e,t){let n=t.endsWith(`Uniforms`)?[t,t.slice(0,-8)]:[t,`${t}Uniforms`];for(let i of n){let s=r.getUniformBlockIndex(e,i);if(s!==4294967295){if(!Number.isInteger(s)||s<0)throw new Error(`Failed to resolve WebGL uniform block "${i}": getUniformBlockIndex returned ${String(s)}`);return{blockIndex:s,blockName:i}}}return null}function er$1(r,e,t,n){let i=n||r.getActiveUniformBlockName(e,t);if(!i)throw new Error(`Failed to reflect WebGL uniform block at index ${t}: missing block name`);let s=(w,v)=>{let S=r.getActiveUniformBlockParameter(e,t,w);if(S==null)throw new Error(`Failed to reflect WebGL uniform block "${i}": ${v} returned null`);return S},o=N$1(s(35391,`UNIFORM_BLOCK_BINDING`),i,`UNIFORM_BLOCK_BINDING`,0),a=N$1(s(35392,`UNIFORM_BLOCK_DATA_SIZE`),i,`UNIFORM_BLOCK_DATA_SIZE`,0),l=N$1(s(35394,`UNIFORM_BLOCK_ACTIVE_UNIFORMS`),i,`UNIFORM_BLOCK_ACTIVE_UNIFORMS`,0),c=rr$1(s(35395,`UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES`),i,`UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES`,l),u=J(r,e,c,35383,`UNIFORM_TYPE`,i,l),f=J(r,e,c,35384,`UNIFORM_SIZE`,i,l),m=J(r,e,c,35386,`UNIFORM_BLOCK_INDEX`,i,l),d=J(r,e,c,35387,`UNIFORM_OFFSET`,i,l),b=J(r,e,c,35388,`UNIFORM_ARRAY_STRIDE`,i,l),y=[];for(let w=0;w<l;w++){if(m[w]!==t)throw new Error(`Failed to reflect WebGL uniform block "${i}": active uniform index ${c[w]} belongs to block ${m[w]}, expected ${t}`);let v=c[w],S=r.getActiveUniform(e,v);if(!S)throw new Error(`Failed to reflect WebGL uniform block "${i}": getActiveUniform(${v}) returned null`);let O=N$1(u[w],i,`UNIFORM_TYPE[${w}]`,1),z=N$1(f[w],i,`UNIFORM_SIZE[${w}]`,1),yr=N$1(d[w],i,`UNIFORM_OFFSET[${w}]`,0),xr=N$1(b[w],i,`UNIFORM_ARRAY_STRIDE[${w}]`,0);if(S.type!==O||S.size!==z)throw new Error(`Failed to reflect WebGL uniform block "${i}": getActiveUniform(${v}) disagrees with getActiveUniforms`);y.push({name:S.name,format:Ee$1(O),arrayLength:z,byteOffset:yr,byteStride:xr})}let x={name:i,location:o,byteLength:a,vertex:!!s(35396,`UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER`),fragment:!!s(35398,`UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER`),uniformCount:l,uniforms:y},p=new Set(x.uniforms.map(w=>w.name.split(`.`)[0]).filter(w=>!!w)),L=x.name.replace(/Uniforms$/,``);if(p.size===1&&!p.has(x.name)&&!p.has(L)){let[w]=p;f$1.warn(`Uniform block "${x.name}" uses GLSL instance "${w}". luma.gl binds uniform buffers by block name ("${x.name}") and alias ("${L}"). Prefer matching the instance name to one of those to avoid confusing silent mismatches.`)()}return x}function J(r,e,t,n,i,s,o){let a=r.getActiveUniforms(e,t,n);if(a===null)throw new Error(`Failed to reflect WebGL uniform block "${s}": ${i} returned null`);return rr$1(a,s,i,o)}function rr$1(r,e,t,n){if(!Array.isArray(r)&&!ArrayBuffer.isView(r))throw new Error(`Failed to reflect WebGL uniform block "${e}": ${t} returned a non-array value`);let i=Array.from(r);if(i.length!==n||i.some(s=>!Number.isInteger(s)))throw new Error(`Failed to reflect WebGL uniform block "${e}": ${t} returned ${i.length} invalid values, expected ${n}`);return i}function N$1(r,e,t,n){if(!Number.isInteger(r)||r<n)throw new Error(`Failed to reflect WebGL uniform block "${e}": ${t} returned ${String(r)}`);return r}function an$1(r){let e=ut$1(r.uniformTypes,{layout:`std140`}),t=ln(r.uniformTypes,e.fields);return{type:`uniform`,name:r.name,group:0,location:0,minBindingSize:e.byteLength,uniforms:t}}function ln(r,e){let t=[],n=(s,o)=>{if(typeof o==`string`){let a=e[s];if(!a)throw new Error(`Missing std140 layout field ${s}`);t.push({name:s,format:a.shaderType,arrayLength:1,byteOffset:a.offset*4,byteStride:0});return}if(Array.isArray(o)){i(s,o[0],o[1]);return}for(let[a,l]of Object.entries(o))n(`${s}.${a}`,l)},i=(s,o,a)=>{if(typeof o==`string`){let l=e[`${s}[0]`],c=a>1?e[`${s}[1]`]:void 0;if(!l)throw new Error(`Missing std140 array layout field ${s}[0]`);t.push({name:`${s}[0]`,format:l.shaderType,arrayLength:a,byteOffset:l.offset*4,byteStride:c?(c.offset-l.offset)*4:0});return}if(Array.isArray(o))throw new Error(`Nested uniform arrays are not supported for ${s}`);for(let[l,c]of Object.entries(o)){if(typeof c!=`string`)throw new Error(`Composite uniform array members are not supported for ${s}`);let u=`${s}[0].${l}`,f=`${s}[1].${l}`,m=e[u],d=a>1?e[f]:void 0;if(!m)throw new Error(`Missing std140 array layout field ${u}`);t.push({name:u,format:m.shaderType,arrayLength:a,byteOffset:m.offset*4,byteStride:d?(d.offset-m.offset)*4:0})}};for(let[s,o]of Object.entries(r))n(s,o);return t}function cn(r){return r.type===`uniform`&&Number.isInteger(r.minBindingSize)&&r.minBindingSize>=0&&Array.isArray(r.uniforms)&&r.uniforms.every(e=>typeof e.name==`string`&&typeof e.format==`string`&&Number.isInteger(e.arrayLength)&&e.arrayLength>0&&Number.isInteger(e.byteOffset)&&e.byteOffset>=0&&Number.isInteger(e.byteStride)&&e.byteStride>=0)}function un(r){if(r[r.length-1]!==`]`)return{name:r,length:1,isArray:!1};let t=/([^[]*)(\[[0-9]+\])?/.exec(r);return{name:le$2(t?.[1],`Failed to parse GLSL uniform name ${r}`),length:t?.[2]?1:0,isArray:!!t?.[2]}}var Se$1=class extends L$1{device;handle;vs;fs;introspectedLayout;bindings={};uniforms={};varyings=null;_uniformCount=0;_uniformSetters={};get[Symbol.toStringTag](){return`WEBGLRenderPipeline`}constructor(e,t){super(e,t),this.device=e;let n=this.sharedRenderPipeline||this.device._createSharedRenderPipelineWebGL(t);this.sharedRenderPipeline=n,this.handle=n.handle,this.vs=n.vs,this.fs=n.fs,this.linkStatus=n.linkStatus,this.introspectedLayout=tr$1(this.device.gl,this.handle,{uniformBlockLayouts:t._uniformBlockLayouts,shaderLayout:t.shaderLayout}),this.device._setWebGLDebugMetadata(this.handle,this,{spector:{id:this.props.id}}),this.shaderLayout=t.shaderLayout?fn(this.introspectedLayout,t.shaderLayout):this.introspectedLayout}destroy(){this.destroyed||(this.sharedRenderPipeline&&!this.props._sharedRenderPipeline&&this.sharedRenderPipeline.destroy(),this.destroyResource())}setBindings(e,t){let n=ci$1(ui$1(this.shaderLayout,e));for(let[i,s]of Object.entries(n)){let o=ir$1(this.shaderLayout,i);if(o){switch(s||f$1.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),o.type){case`uniform`:if(!(s instanceof C)&&!(s.buffer instanceof C))throw new Error(`buffer value`);break;case`texture`:if(!(s instanceof R$1||s instanceof I||s instanceof D))throw new Error(`${this} Bad texture binding for ${i}`);break;case`sampler`:f$1.warn(`Ignoring sampler ${i}`)();break;default:throw new Error(o.type)}this.bindings[i]=s}else{let a=this.shaderLayout.bindings.map(l=>`"${l.name}"`).join(`, `);t?.disableWarnings||f$1.warn(`No binding "${i}" in render pipeline "${this.id}", expected one of ${a}`,s)()}}}draw(e){let t=e.renderPass,n=e.bindGroups?ci$1(e.bindGroups):e.bindings||this.bindings;return t.setPipeline(this),t.setBindings(n),t.setVertexArray(e.vertexArray),t.draw({parameters:e.parameters,topology:e.topology,isInstanced:e.isInstanced,vertexCount:e.vertexCount,indexCount:e.indexCount,instanceCount:e.instanceCount,firstVertex:e.firstVertex,firstIndex:e.firstIndex,firstInstance:e.firstInstance,baseVertex:e.baseVertex,transformFeedback:e.transformFeedback,uniforms:e.uniforms})}_areTexturesRenderable(e){let t=!0;for(let n of this.shaderLayout.bindings)nr$1(e,n.name)||(f$1.warn(`Binding ${n.name} not found in ${this.id}`)(),t=!1);return t}_applyBindings(e,t){if(this._syncLinkStatus(),this.linkStatus!==`success`)return;let{gl:n}=this.device;n.useProgram(this.handle);let i=0,s=0;for(let o of this.shaderLayout.bindings){let a=nr$1(e,o.name);if(!a)throw new Error(`No value for binding ${o.name} in ${this.id}`);switch(o.type){case`uniform`:let{name:l}=o,c=n.getUniformBlockIndex(this.handle,l);if(c===4294967295)throw new Error(`Invalid uniform block name ${l}`);if(n.uniformBlockBinding(this.handle,c,s),a instanceof C)n.bindBufferBase(35345,s,a.handle);else{let f=a;n.bindBufferRange(35345,s,f.buffer.handle,f.offset||0,f.size||f.buffer.byteLength-(f.offset||0))}s+=1;break;case`texture`:if(!(a instanceof R$1||a instanceof I||a instanceof D))throw new Error(`texture`);let u;if(a instanceof R$1)u=a.texture;else if(a instanceof I)u=a;else if(a instanceof D&&a.colorAttachments[0]instanceof R$1)f$1.warn(`Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead`)(),u=a.colorAttachments[0].texture;else throw new Error(`No texture`);n.activeTexture(33984+i),n.bindTexture(u.glTarget,u.handle),i+=1;break;case`sampler`:break;case`storage`:case`read-only-storage`:throw new Error(`binding type '${o.type}' not supported in WebGL`)}}}_applyUniforms(e){for(let t of this.shaderLayout.uniforms||[]){let{name:n,location:i,type:s,textureUnit:o}=t,a=e[n]??o;a!==void 0&&Kt$1(this.device.gl,i,s,a)}}_syncLinkStatus(){this.linkStatus=this.sharedRenderPipeline.linkStatus}};function fn(r$91,e){let t=s(r({},r$91),{attributes:r$91.attributes.map(n=>r({},n)),bindings:r$91.bindings.map(n=>r({},n))});for(let n of e?.attributes||[]){let i=t.attributes.find(s=>s.name===n.name);i?(i.type=n.type||i.type,i.stepMode=n.stepMode||i.stepMode):f$1.warn(`shader layout attribute ${n.name} not present in shader`)}for(let n of e?.bindings||[]){let i=ir$1(t,n.name);if(!i){f$1.warn(`shader layout binding ${n.name} not present in shader`);continue}Object.assign(i,n)}return t}function ir$1(r,e){return r.bindings.find(t=>t.name===e||t.name===`${e}Uniforms`||`${t.name}Uniforms`===e)}function nr$1(r,e){return r[e]||r[`${e}Uniforms`]||r[e.replace(/Uniforms$/,``)]}var sr$1=4;var ve$1=class extends Je$1{device;handle;vs;fs;linkStatus=`pending`;constructor(e,t){super(e,t),this.device=e,this.handle=t.handle||this.device.gl.createProgram(),this.vs=t.vs,this.fs=t.fs,t.varyings&&t.varyings.length>0&&this.device.gl.transformFeedbackVaryings(this.handle,t.varyings,t.bufferMode||35981),this._linkShaders()}destroy(){this.destroyed||(this.device.gl.useProgram(null),this.device.gl.deleteProgram(this.handle),this.handle.destroyed=!0,this.destroyResource())}async _linkShaders(){let{gl:e}=this.device;if(e.attachShader(this.handle,this.vs.handle),e.attachShader(this.handle,this.fs.handle),f$1.time(sr$1,`linkProgram for ${this.id}`)(),e.linkProgram(this.handle),f$1.timeEnd(sr$1,`linkProgram for ${this.id}`)(),!this.device.features.has(`compilation-status-async-webgl`)){let n=this._getLinkStatus();this._reportLinkStatus(n);return}f$1.once(1,`RenderPipeline linking is asynchronous`)(),await this._waitForLinkComplete(),f$1.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();let t=this._getLinkStatus();this._reportLinkStatus(t)}async _reportLinkStatus(e){switch(e){case`success`:return;default:let t=e===`link-error`?`Link error`:`Validation error`;switch(this.vs.compilationStatus){case`error`:throw this.vs.debugShader(),new Error(`${this} ${t} during compilation of ${this.vs}`);case`pending`:await this.vs.asyncCompilationStatus,this.vs.debugShader();break;case`success`:break}switch(this.fs?.compilationStatus){case`error`:throw this.fs.debugShader(),new Error(`${this} ${t} during compilation of ${this.fs}`);case`pending`:await this.fs.asyncCompilationStatus,this.fs.debugShader();break;case`success`:break}let n=this.device.gl.getProgramInfoLog(this.handle);this.device.reportError(new Error(`${t} during ${e}: ${n}`),this)(),this.device.debug()}}_getLinkStatus(){let{gl:e}=this.device;return e.getProgramParameter(this.handle,35714)?(this._initializeSamplerUniforms(),e.validateProgram(this.handle),e.getProgramParameter(this.handle,35715)?(this.linkStatus=`success`,`success`):(this.linkStatus=`error`,`validation-error`)):(this.linkStatus=`error`,`link-error`)}_initializeSamplerUniforms(){let{gl:e}=this.device;e.useProgram(this.handle);let t=0,n=e.getProgramParameter(this.handle,35718);for(let i=0;i<n;i++){let s=e.getActiveUniform(this.handle,i);if(s&&Le$1(s.type)){let o=s.name.endsWith(`[0]`),a=o?s.name.slice(0,-3):s.name,l=e.getUniformLocation(this.handle,a);l!==null&&(t=this._assignSamplerUniform(l,s,o,t))}}}_assignSamplerUniform(e,t,n,i){let{gl:s}=this.device;if(n&&t.size>1){let o=Int32Array.from({length:t.size},(a,l)=>i+l);return s.uniform1iv(e,o),i+t.size}return s.uniform1i(e,i),i+1}async _waitForLinkComplete(){let e=async i=>await new Promise(s=>setTimeout(s,i));if(!this.device.features.has(`compilation-status-async-webgl`)){await e(10);return}let{gl:n}=this.device;for(;;){if(n.getProgramParameter(this.handle,37297))return;await e(10)}}};var Be$1=class extends tt$1{device;handle=null;commands=[];constructor(e,t={}){super(e,t),this.device=e}_executeCommands(e=this.commands){for(let t of e)switch(t.name){case`copy-buffer-to-buffer`:dn(this.device,t.options);break;case`copy-buffer-to-texture`:hn(this.device,t.options);break;case`copy-texture-to-buffer`:mn(this.device,t.options);break;case`copy-texture-to-texture`:gn(this.device,t.options);break;default:throw new Error(t.name)}}};function dn(r,e){let t=e.sourceBuffer,n=e.destinationBuffer;r.gl.bindBuffer(36662,t.handle),r.gl.bindBuffer(36663,n.handle),r.gl.copyBufferSubData(36662,36663,e.sourceOffset??0,e.destinationOffset??0,e.size),r.gl.bindBuffer(36662,null),r.gl.bindBuffer(36663,null)}function hn(r,e){let{sourceBuffer:t,byteOffset:n=0,destinationTexture:i,mipLevel:s=0,origin:o=[0,0,0],aspect:a=`all`,bytesPerRow:l,rowsPerImage:c,size:u}=e;if(a!==`all`)throw new Error(`copyBufferToTexture aspect is not supported in WebGL`);i.writeBuffer(t,{byteOffset:n,bytesPerRow:l,rowsPerImage:c,mipLevel:s,x:o[0]??0,y:o[1]??0,z:o[2]??0,width:u[0],height:u[1],depthOrArrayLayers:u[2]})}function mn(r,e){let{sourceTexture:t,mipLevel:n=0,aspect:i=`all`,width:s=e.sourceTexture.width,height:o=e.sourceTexture.height,depthOrArrayLayers:a,origin:l=[0,0,0],destinationBuffer:c,byteOffset:u=0,bytesPerRow:f,rowsPerImage:m}=e;if(t instanceof v){t.readBuffer({x:l[0]??0,y:l[1]??0,z:l[2]??0,width:s,height:o,depthOrArrayLayers:a,mipLevel:n,aspect:i,byteOffset:u},c);return}if(i!==`all`)throw new Error(`aspect not supported in WebGL`);if(n!==0||a!==void 0||f||m)throw new Error(`not implemented`);let{framebuffer:d,destroyFramebuffer:b}=or$1(t),y;try{let x=c,p=s||d.width,L=o||d.height,v=ue(le$2(d.colorAttachments[0]).texture.props.format),S=v.format,O=v.type;r.gl.bindBuffer(35051,x.handle),y=r.gl.bindFramebuffer(36160,d.handle),r.gl.readPixels(l[0],l[1],p,L,S,O,u)}finally{r.gl.bindBuffer(35051,null),y!==void 0&&r.gl.bindFramebuffer(36160,y),b&&d.destroy()}}function gn(r,e){let{sourceTexture:t,destinationMipLevel:n=0,origin:i=[0,0],destinationOrigin:s=[0,0,0],destinationTexture:o}=e,{width:a=e.destinationTexture.width,height:l=e.destinationTexture.height}=e,{framebuffer:c,destroyFramebuffer:u}=or$1(t),[f=0,m=0]=i,[d,b,y]=s,x=r.gl.bindFramebuffer(36160,c.handle),p,L;if(o instanceof I)p=o,a=Number.isFinite(a)?a:p.width,l=Number.isFinite(l)?l:p.height,p._bind(0),L=p.glTarget;else throw new Error(`invalid destination`);switch(L){case 3553:case 34067:r.gl.copyTexSubImage2D(L,n,d,b,f,m,a,l);break;case 35866:case 32879:r.gl.copyTexSubImage3D(L,n,d,b,y,f,m,a,l);break;default:}p&&p._unbind(),r.gl.bindFramebuffer(36160,x),u&&c.destroy()}function or$1(r){if(r instanceof v){let{width:e,height:t,id:n}=r;return{framebuffer:r.device.createFramebuffer({id:`framebuffer-for-${n}`,width:e,height:t,colorAttachments:[r]}),destroyFramebuffer:!0}}return{framebuffer:r,destroyFramebuffer:!1}}function ar$1(r){switch(r){case`point-list`:return 0;case`line-list`:return 1;case`line-strip`:return 3;case`triangle-list`:return 4;case`triangle-strip`:return 5;default:throw new Error(r)}}function lr$1(r){switch(r){case`point-list`:return 0;case`line-list`:return 1;case`line-strip`:return 1;case`triangle-list`:return 4;case`triangle-strip`:return 4;default:throw new Error(r)}}var pn=[1,2,4,8];var Ae$1=class extends Ze$1{device;handle=null;glParameters={};pipeline=null;bindings={};bindingsPipeline=null;vertexArray=null;constructor(e,t){super(e,t),this.device=e;let n=this.props.framebuffer,i=!n||n.handle===null;i&&e.getDefaultCanvasContext()._resizeDrawingBufferIfNeeded();let s;if(!t?.parameters?.viewport)if(!i&&n){let{width:o,height:a}=n;s=[0,0,o,a]}else{let[o,a]=e.getDefaultCanvasContext().getDrawingBufferSize();s=[0,0,o,a]}if(this.device.pushState(),this.setParameters(r({viewport:s},this.props.parameters)),!i&&n?.colorAttachments.length){let o=n.colorAttachments.map((a,l)=>36064+l);this.device.gl.drawBuffers(o)}else i&&this.device.gl.drawBuffers([1029]);this.clear(),this.props.timestampQuerySet&&this.props.beginTimestampIndex!==void 0&&this.props.timestampQuerySet.writeTimestamp(this.props.beginTimestampIndex)}end(){this.destroyed||(this.props.timestampQuerySet&&this.props.endTimestampIndex!==void 0&&this.props.timestampQuerySet.writeTimestamp(this.props.endTimestampIndex),this.device.popState(),this.destroy())}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}executeBundles(e){throw new Error(`Render bundles are only supported in WebGPU`)}setParameters(e={}){let t=r({},this.glParameters);t.framebuffer=this.props.framebuffer||null,this.props.depthReadOnly&&(t.depthMask=!this.props.depthReadOnly),t.stencilMask=this.props.stencilReadOnly?0:1,t[35977]=this.props.discard,e.viewport&&(e.viewport.length>=6?(t.viewport=e.viewport.slice(0,4),t.depthRange=[e.viewport[4],e.viewport[5]]):t.viewport=e.viewport),e.scissorRect&&(t.scissorTest=!0,t.scissor=e.scissorRect),e.blendConstant&&(t.blendColor=e.blendConstant),e.stencilReference!==void 0&&(t[2967]=e.stencilReference,t[36003]=e.stencilReference),`colorMask`in e&&(t.colorMask=pn.map(n=>!!(n&e.colorMask))),this.glParameters=t,A$1(this.device.gl,t)}setPipeline(e){this.pipeline=e}setBindings(e,t){if(!this.pipeline)throw new Error(`RenderPass.setPipeline() must be called before setBindings()`);this.bindings=ci$1(ui$1(this.pipeline.shaderLayout,e)),this.bindingsPipeline=this.pipeline}setVertexArray(e){this.vertexArray=e}draw(e){let t=this.pipeline,n=this.vertexArray;if(!t)throw new Error(`RenderPass.setPipeline() must be called before draw()`);if(!n)throw new Error(`RenderPass.setVertexArray() must be called before draw()`);if(t.shaderLayout.bindings.length>0&&this.bindingsPipeline!==t)throw new Error(`RenderPass.setBindings() must be called after setPipeline() before draw()`);t._syncLinkStatus();let{parameters:i=t.props.parameters,topology:s=t.props.topology,vertexCount:o,indexCount:a,instanceCount:l,isInstanced:c=!1,firstVertex:u=0,transformFeedback:f,uniforms:m=t.uniforms}=e,d=ar$1(s),b=!!n.indexBuffer,y=n.indexBuffer?.glIndexType,x=a??o??0;if(t.linkStatus!==`success`)return f$1.info(2,`RenderPipeline:${t.id}.draw() aborted - waiting for shader linking`)(),!1;if(!t._areTexturesRenderable(this.bindings))return f$1.info(2,`RenderPipeline:${t.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(t.handle),n.bindBeforeRender(this);let p=f;return p&&p.begin(t.props.topology),t._applyBindings(this.bindings,{disableWarnings:t.props.disableWarnings}),t._applyUniforms(m),Yt$1(this.device,i,this.glParameters,()=>{b&&c?this.device.gl.drawElementsInstanced(d,x,y,u,l||0):b?this.device.gl.drawElements(d,x,y,u):c?this.device.gl.drawArraysInstanced(d,u,o||0,l||0):this.device.gl.drawArrays(d,u,o||0),p&&p.end()}),n.unbindAfterRender(this),!0}drawIndirect(e,t=0){throw new Error(`Indirect drawing is only supported in WebGPU`)}drawIndexedIndirect(e,t=0){throw new Error(`Indirect drawing is only supported in WebGPU`)}beginOcclusionQuery(e){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let e=r({},this.glParameters),t=0;this.props.clearColors&&this.props.clearColors.forEach((n,i)=>{n&&this.clearColorBuffer(i,n)}),this.props.clearColor!==!1&&this.props.clearColors===void 0&&(t|=16384,e.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(t|=256,e.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(t|=1024,e.clearStencil=this.props.clearStencil),t!==0&&P$1(this.device.gl,e,()=>{this.device.gl.clear(t)})}clearColorBuffer(e=0,t=[0,0,0,0]){P$1(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(t.constructor){case Int8Array:case Int16Array:case Int32Array:this.device.gl.clearBufferiv(6144,e,t);break;case Uint8Array:case Uint8ClampedArray:case Uint16Array:case Uint32Array:this.device.gl.clearBufferuiv(6144,e,t);break;case Float32Array:this.device.gl.clearBufferfv(6144,e,t);break;default:throw new Error(`clearColorBuffer: color must be typed array`)}})}};var ee$1=class extends et$1{device;handle=null;commandBuffer;constructor(e,t){super(e,t),this.device=e,this.commandBuffer=new Be$1(e,{id:this.id,userData:this.userData})}destroy(){this.destroyResource()}finish(){return this.destroy(),this.commandBuffer}beginRenderPass(e={}){return new Ae$1(this.device,this._applyTimeProfilingToPassProps(e))}beginComputePass(e={}){throw new Error(`ComputePass not supported in WebGL`)}copyBufferToBuffer(e){this.commandBuffer.commands.push({name:`copy-buffer-to-buffer`,options:e})}copyBufferToTexture(e){this.commandBuffer.commands.push({name:`copy-buffer-to-texture`,options:e})}copyTextureToBuffer(e){this.commandBuffer.commands.push({name:`copy-texture-to-buffer`,options:e})}copyTextureToTexture(e){this.commandBuffer.commands.push({name:`copy-texture-to-texture`,options:e})}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}resolveQuerySet(e,t,n){throw new Error(`resolveQuerySet is not supported in WebGL`)}writeTimestamp(e,t){e.writeTimestamp(t)}};function cr$1(r){let{target:e,source:t,start:n=0,count:i=1}=r,s=t.length,o=i*s,a=0;for(let l=n;a<s;a++)e[l++]=t[a]??0;for(;a<o;)a<o-a?(e.copyWithin(n+a,n,n+a),a*=2):(e.copyWithin(n+a,n,n+o-a),a=o);return r.target}var Fe$1=class r extends rt$1{get[Symbol.toStringTag](){return`VertexArray`}device;handle;attributeInfosByLocation;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(e){return ir$2()===`Chrome`}constructor(e,t){super(e,t),this.device=e,this.handle=this.device.gl.createVertexArray(),this.attributeInfosByLocation=new Array(this.maxVertexAttributes).fill(null);for(let n of Object.values(Di$1(t.shaderLayout,t.bufferLayout)))this.attributeInfosByLocation[n.location]=n}destroy(){super.destroy(),this.buffer&&this.buffer?.destroy(),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(e){let t=e;if(t&&t.glTarget!==34963)throw new Error(`Use .setBuffer()`);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,t?t.handle:null),this.indexBuffer=t,this.device.gl.bindVertexArray(null)}setBuffer(e,t){let n=t;if(n.glTarget===34963)throw new Error(`Use .setIndexBuffer()`);let{size:i,type:s,stride:o,offset:a,normalized:l,integer:c,divisor:u}=this._getAccessor(e);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,n.handle),c?this.device.gl.vertexAttribIPointer(e,i,s,o,a):this.device.gl.vertexAttribPointer(e,i,s,l,o,a),this.device.gl.bindBuffer(34962,null),this.device.gl.enableVertexAttribArray(e),this.device.gl.vertexAttribDivisor(e,u||0),this.attributes[e]=n,this.device.gl.bindVertexArray(null)}setConstantWebGL(e,t){this._enable(e,!1),this.attributes[e]=t}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let e=0;e<this.maxVertexAttributes;++e){let t=this.attributes[e];ArrayBuffer.isView(t)&&this.device.setConstantAttributeWebGL(e,t)}}_getAccessor(e){let t=this.attributeInfosByLocation[e];if(!t)throw new Error(`Unknown attribute location ${e}`);let n=oe$1(t.bufferDataType);return{size:t.bufferComponents,type:n,stride:t.byteStride,offset:t.byteOffset,normalized:t.normalized,integer:t.integer,divisor:t.stepMode===`instance`?1:0}}_enable(e,t=!0){let i=r.isConstantAttributeZeroSupported(this.device)||e!==0;(t||i)&&(e=Number(e),this.device.gl.bindVertexArray(this.handle),t?this.device.gl.enableVertexAttribArray(e):this.device.gl.disableVertexAttribArray(e),this.device.gl.bindVertexArray(null))}getConstantBuffer(e,t){let n=bn$1(t),i=n.byteLength*e,s=n.length*e;if(this.buffer&&i!==this.buffer.byteLength)throw new Error(`Buffer size is immutable, byte length ${i} !== ${this.buffer.byteLength}.`);let o=!this.buffer;if(this.buffer=this.buffer||this.device.createBuffer({byteLength:i}),o||=!yn$1(n,this.bufferValue),o){let a=_i$1(t.constructor,s);cr$1({target:a,source:n,start:0,count:s}),this.buffer.write(a),this.bufferValue=t}return this.buffer}};function bn$1(r){return Array.isArray(r)?new Float32Array(r):r}function yn$1(r,e){if(!r||!e||r.length!==e.length||r.constructor!==e.constructor)return!1;for(let t=0;t<r.length;++t)if(r[t]!==e[t])return!1;return!0}var xn$1={WEBGL_depth_texture:{UNSIGNED_INT_24_8_WEBGL:34042},OES_element_index_uint:{},OES_texture_float:{},OES_texture_half_float:{HALF_FLOAT_OES:5131},EXT_color_buffer_float:{},OES_standard_derivatives:{FRAGMENT_SHADER_DERIVATIVE_HINT_OES:35723},EXT_frag_depth:{},EXT_blend_minmax:{MIN_EXT:32775,MAX_EXT:32776},EXT_shader_texture_lod:{}};var wn$1=r=>({drawBuffersWEBGL(e){return r.drawBuffers(e)},COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067});var _n$1=r=>({VERTEX_ARRAY_BINDING_OES:34229,createVertexArrayOES(){return r.createVertexArray()},deleteVertexArrayOES(e){return r.deleteVertexArray(e)},isVertexArrayOES(e){return r.isVertexArray(e)},bindVertexArrayOES(e){return r.bindVertexArray(e)}});var Tn$1=r=>({VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:35070,drawArraysInstancedANGLE(...e){return r.drawArraysInstanced(...e)},drawElementsInstancedANGLE(...e){return r.drawElementsInstanced(...e)},vertexAttribDivisorANGLE(...e){return r.vertexAttribDivisor(...e)}});function ur$1(r=!0){let e=HTMLCanvasElement.prototype;if(!r&&e.originalGetContext){e.getContext=e.originalGetContext,e.originalGetContext=void 0;return}e.originalGetContext=e.getContext,e.getContext=function(t,n){if(t===`webgl`||t===`experimental-webgl`){let i=this.originalGetContext(`webgl2`,n);return i instanceof HTMLElement&&En$1(i),i}return this.originalGetContext(t,n)}}function En$1(r$92){r$92.getExtension(`EXT_color_buffer_float`);let e=s(r({},xn$1),{WEBGL_disjoint_timer_query:r$92.getExtension(`EXT_disjoint_timer_query_webgl2`),WEBGL_draw_buffers:wn$1(r$92),OES_vertex_array_object:_n$1(r$92),ANGLE_instanced_arrays:Tn$1(r$92)}),t=r$92.getExtension.bind(r$92);r$92.getExtension=function(i){return t(i)||(i in e?e[i]:null)};let n=r$92.getSupportedExtensions;r$92.getSupportedExtensions=function(){return(n.apply(r$92)||[])?.concat(Object.keys(e))}}var te$1=1;var Ye=class extends ze$2{type=`webgl`;enforceWebGL2(e){ur$1(e)}isSupported(){return typeof WebGL2RenderingContext<`u`}isDeviceHandle(e){return typeof WebGL2RenderingContext<`u`&&e instanceof WebGL2RenderingContext?!0:(typeof WebGLRenderingContext<`u`&&e instanceof WebGLRenderingContext&&f$1.warn(`WebGL1 is not supported`,e)(),!1)}async attach(e,t={}){let{WebGLDevice:n}=await import(`./chunk-ClYPPgpq.js`);if(e instanceof n)return e;let i=n.getDeviceFromContext(e);if(i)return i;if(!Ln$1(e))throw new Error(`Invalid WebGL2RenderingContext`);t=fr$1(t),await dr$1(t);let s$45=t.createCanvasContext===!0?{}:t.createCanvasContext;return new n(s(r({},t),{_handle:e,createCanvasContext:r({canvas:e.canvas,autoResize:!1},s$45)}))}async create(e={}){let{WebGLDevice:t}=await import(`./chunk-ClYPPgpq.js`);e=fr$1(e),await dr$1(e);try{let n=new t(e);f$1.groupCollapsed(te$1,`WebGLDevice ${n.id} created`)();let i=`${n._reused?`Reusing`:`Created`} device with WebGL2 ${n.props.debug?`debug `:``}context: ${n.info.vendor}, ${n.info.renderer} for canvas: ${n.canvasContext.id}`;return f$1.probe(te$1,i)(),f$1.table(te$1,n.info)(),n}finally{f$1.groupEnd(te$1)(),f$1.info(te$1,`%cWebGL call tracing: luma.log.set('debug-webgl') `,`color: white; background: blue; padding: 2px 6px; border-radius: 3px;`)()}}};function Ln$1(r){return typeof WebGL2RenderingContext<`u`&&r instanceof WebGL2RenderingContext?!0:!!(r&&typeof r.createVertexArray==`function`)}var Sn$1=new Ye;function fr$1(r$93){return s(r({},r$93),{debug:r$93.debug??Fe$2.defaultProps.debug,debugWebGL:r$93.debugWebGL??Fe$2.defaultProps.debugWebGL,debugSpectorJS:r$93.debugSpectorJS??!!f$1.get(`debug-spectorjs`)})}async function dr$1(r){let e=[];(r.debugWebGL||r.debug)&&e.push(Ut$1()),r.debugSpectorJS&&e.push(Qt$1(r));let t=await Promise.allSettled(e);for(let n of t)n.status===`rejected`&&f$1.error(`Failed to initialize debug libraries ${n.reason}`)()}var Ge$1=class extends nt$1{device;gl;handle;signaled;_signaled=!1;constructor(e,t={}){super(e,{}),this.device=e,this.gl=e.gl;let n=this.props.handle||this.gl.fenceSync(this.gl.SYNC_GPU_COMMANDS_COMPLETE,0);if(!n)throw new Error(`Failed to create WebGL fence`);this.handle=n,this.signaled=new Promise(i=>{let s=()=>{let o=this.gl.clientWaitSync(this.handle,0,0);o===this.gl.ALREADY_SIGNALED||o===this.gl.CONDITION_SATISFIED?(this._signaled=!0,i()):setTimeout(s,1)};s()})}isSignaled(){if(this._signaled)return!0;let e=this.gl.getSyncParameter(this.handle,this.gl.SYNC_STATUS);return this._signaled=e===this.gl.SIGNALED,this._signaled}destroy(){this.destroyed||this.gl.deleteSync(this.handle)}};var Ce$1=class extends it$1{device;gl;handle;layout;buffers={};unusedBuffers={};bindOnUse=!0;_bound=!1;constructor(e,t){super(e,t),this.device=e,this.gl=e.gl,this.handle=this.props.handle||this.gl.createTransformFeedback(),this.layout=this.props.layout,t.buffers&&this.setBuffers(t.buffers),Object.seal(this)}destroy(){this.gl.deleteTransformFeedback(this.handle),super.destroy()}begin(e=`point-list`){this.gl.bindTransformFeedback(36386,this.handle),this.bindOnUse&&this._bindBuffers(),this.gl.beginTransformFeedback(lr$1(e))}end(){this.gl.endTransformFeedback(),this.bindOnUse&&this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null)}setBuffers(e){this.buffers={},this.unusedBuffers={},this.bind(()=>{for(let[t,n]of Object.entries(e))this.setBuffer(t,n)})}setBuffer(e,t){let n=this._getVaryingIndex(e),{buffer:i,byteLength:s,byteOffset:o}=this._getBufferRange(t);if(n<0){this.unusedBuffers[e]=i,f$1.warn(`${this.id} unusedBuffers varying buffer ${e}`)();return}this.buffers[n]={buffer:i,byteLength:s,byteOffset:o},this.bindOnUse||this._bindBuffer(n,i,o,s)}getBuffer(e){if(hr$1(e))return this.buffers[e]||null;let t=this._getVaryingIndex(e);return this.buffers[t]??null}bind(e=this.handle){if(typeof e!=`function`)return this.gl.bindTransformFeedback(36386,e),this;let t;return this._bound?t=e():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,t=e(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),t}unbind(){this.bind(null)}_getBufferRange(e){if(e instanceof C)return{buffer:e,byteOffset:0,byteLength:e.byteLength};let{buffer:t,byteOffset:n=0,byteLength:i=e.buffer.byteLength}=e;return{buffer:t,byteOffset:n,byteLength:i}}_getVaryingIndex(e){if(hr$1(e))return Number(e);for(let t of this.layout.varyings||[])if(e===t.name)return t.location;return-1}_bindBuffers(){for(let[e,t]of Object.entries(this.buffers)){let{buffer:n,byteLength:i,byteOffset:s}=this._getBufferRange(t);this._bindBuffer(Number(e),n,s,i)}}_unbindBuffers(){for(let e in this.buffers)this.gl.bindBufferBase(35982,Number(e),null)}_bindBuffer(e,t,n=0,i){let s=t&&t.handle;!s||i===void 0?this.gl.bindBufferBase(35982,e,s):this.gl.bindBufferRange(35982,e,s,n,i)}};function hr$1(r){return typeof r==`number`?Number.isInteger(r):/^\d+$/.test(r)}var Pe$1=class extends st$1{device;handle;_timestampPairs=[];_pendingReads=new Set;_occlusionQuery=null;_occlusionActive=!1;get[Symbol.toStringTag](){return`QuerySet`}constructor(e,t){if(super(e,t),this.device=e,t.type===`timestamp`){if(t.count<2)throw new Error(`Timestamp QuerySet requires at least two query slots`);this._timestampPairs=new Array(Math.ceil(t.count/2)).fill(null).map(()=>({activeQuery:null,completedQueries:[]})),this.handle=null}else{if(t.count>1)throw new Error(`WebGL occlusion QuerySet can only have one value`);let n=this.device.gl.createQuery();if(!n)throw new Error(`WebGL query not supported`);this.handle=n}Object.seal(this)}destroy(){if(!this.destroyed){this.handle&&this.device.gl.deleteQuery(this.handle);for(let e of this._timestampPairs){e.activeQuery&&(this._cancelPendingQuery(e.activeQuery),this.device.gl.deleteQuery(e.activeQuery.handle));for(let t of e.completedQueries)this._cancelPendingQuery(t),this.device.gl.deleteQuery(t.handle)}this._occlusionQuery&&(this._cancelPendingQuery(this._occlusionQuery),this.device.gl.deleteQuery(this._occlusionQuery.handle));for(let e of Array.from(this._pendingReads))this._cancelPendingQuery(e);this.destroyResource()}}isResultAvailable(e){return this.props.type===`timestamp`?e===void 0?this._timestampPairs.some((t,n)=>this._isTimestampPairAvailable(n)):this._isTimestampPairAvailable(this._getTimestampPairIndex(e)):this._occlusionQuery?this._pollQueryAvailability(this._occlusionQuery):!1}async readResults(e){let t=e?.firstQuery||0,n=e?.queryCount||this.props.count-t;if(this._validateRange(t,n),this.props.type===`timestamp`){let i=new Array(n).fill(0n),s=Math.floor(t/2),o=Math.floor((t+n-1)/2);for(let a=s;a<=o;a++){let l=await this._consumeTimestampPairResult(a),c=a*2,u=c+1;c>=t&&c<t+n&&(i[c-t]=0n),u>=t&&u<t+n&&(i[u-t]=l)}return i}if(!this._occlusionQuery)throw new Error(`Occlusion query has not been started`);return[await this._consumeQueryResult(this._occlusionQuery)]}async readTimestampDuration(e,t){if(this.props.type!==`timestamp`)throw new Error(`Timestamp durations require a timestamp QuerySet`);if(e<0||t>=this.props.count||t<=e)throw new Error(`Timestamp duration range is out of bounds`);if(e%2!==0||t!==e+1)throw new Error(`WebGL timestamp durations require adjacent even/odd query indices`);let n=await this._consumeTimestampPairResult(this._getTimestampPairIndex(e));return Number(n)/1e6}beginOcclusionQuery(){if(this.props.type!==`occlusion`)throw new Error(`Occlusion queries require an occlusion QuerySet`);if(!this.handle)throw new Error(`WebGL occlusion query is not available`);if(this._occlusionActive)throw new Error(`Occlusion query is already active`);this.device.gl.beginQuery(35887,this.handle),this._occlusionQuery={handle:this.handle,promise:null,result:null,disjoint:!1,cancelled:!1,pollRequestId:null,resolve:null,reject:null},this._occlusionActive=!0}endOcclusionQuery(){if(!this._occlusionActive)throw new Error(`Occlusion query is not active`);this.device.gl.endQuery(35887),this._occlusionActive=!1}writeTimestamp(e){if(this.props.type!==`timestamp`)throw new Error(`Timestamp writes require a timestamp QuerySet`);let t=this._getTimestampPairIndex(e),n=this._timestampPairs[t];if(e%2===0){if(n.activeQuery)throw new Error(`Timestamp query pair is already active`);let i=this.device.gl.createQuery();if(!i)throw new Error(`WebGL query not supported`);let s={handle:i,promise:null,result:null,disjoint:!1,cancelled:!1,pollRequestId:null,resolve:null,reject:null};this.device.gl.beginQuery(35007,i),n.activeQuery=s;return}if(!n.activeQuery)throw new Error(`Timestamp query pair was ended before it was started`);this.device.gl.endQuery(35007),n.completedQueries.push(n.activeQuery),n.activeQuery=null}_validateRange(e,t){if(e<0||t<0||e+t>this.props.count)throw new Error(`Query read range is out of bounds`)}_getTimestampPairIndex(e){if(e<0||e>=this.props.count)throw new Error(`Query index is out of bounds`);return Math.floor(e/2)}_isTimestampPairAvailable(e){let t=this._timestampPairs[e];return!t||t.completedQueries.length===0?!1:this._pollQueryAvailability(t.completedQueries[0])}_pollQueryAvailability(e){if(e.cancelled||this.destroyed)return e.result=0n,!0;if(e.result!==null||e.disjoint)return!0;if(!this.device.gl.getQueryParameter(e.handle,34919))return!1;let n=!!this.device.gl.getParameter(36795);return e.disjoint=n,e.result=n?0n:BigInt(this.device.gl.getQueryParameter(e.handle,34918)),!0}async _consumeTimestampPairResult(e){let t=this._timestampPairs[e];if(!t||t.completedQueries.length===0)throw new Error(`Timestamp query pair has no completed result`);let n=t.completedQueries.shift();try{return await this._consumeQueryResult(n)}finally{this.device.gl.deleteQuery(n.handle)}}_consumeQueryResult(e){return e.promise||(this._pendingReads.add(e),e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n;let i=()=>{if(e.pollRequestId=null,e.cancelled||this.destroyed){this._pendingReads.delete(e),e.promise=null,e.resolve=null,e.reject=null,t(0n);return}if(!this._pollQueryAvailability(e)){e.pollRequestId=this._requestAnimationFrame(i);return}this._pendingReads.delete(e),e.promise=null,e.resolve=null,e.reject=null,e.disjoint?n(new Error(`GPU timestamp query was invalidated by a disjoint event`)):t(e.result||0n)};i()})),e.promise}_cancelPendingQuery(e){if(this._pendingReads.delete(e),e.cancelled=!0,e.pollRequestId!==null&&(this._cancelAnimationFrame(e.pollRequestId),e.pollRequestId=null),e.resolve){let t=e.resolve;e.promise=null,e.resolve=null,e.reject=null,t(0n)}}_requestAnimationFrame(e){return requestAnimationFrame(e)}_cancelAnimationFrame(e){cancelAnimationFrame(e)}};function qe(r){switch(r){case 6406:case 33326:case 6403:case 36244:return 1;case 33339:case 33340:case 33328:case 33320:case 33319:return 2;case 6407:case 36248:case 34837:return 3;case 6408:case 36249:case 34836:return 4;default:return 0}}function mr$1(r){switch(r){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}function gr$1(r,e){let{sourceX:t=0,sourceY:n=0,sourceAttachment:i=0}=e||{},{target:s=null,sourceWidth:o,sourceHeight:a,sourceDepth:l,sourceFormat:c,sourceType:u}=e||{},{framebuffer:f,deleteFramebuffer:m}=br$1(r),{gl:d,handle:b}=f;o||=f.width,a||=f.height;let y=f.colorAttachments[i]?.texture;if(!y)throw new Error(`Invalid framebuffer attachment ${i}`);l=y?.depth||1,c||=y?.glFormat||6408,u||=y?.glType||5121,s=Bn$1(s,u,c,o,a,l);let x=I$2.getDataType(s);u=u||qt(x);let p=d.bindFramebuffer(36160,b);return d.readBuffer(36064+i),d.readPixels(t,n,o,a,c,u,s),d.readBuffer(36064),d.bindFramebuffer(36160,p||null),m&&f.destroy(),s}function pr$1(r,e){let{target:t,sourceX:n=0,sourceY:i=0,sourceFormat:s=6408,targetByteOffset:o=0}=e||{},{sourceWidth:a,sourceHeight:l,sourceType:c}=e||{},{framebuffer:u,deleteFramebuffer:f}=br$1(r);a=a||u.width,l=l||u.height;let m=u;c=c||5121;let d=t;if(!d){let y=qe(s),x=mr$1(c),p=o+a*l*y*x;d=m.device.createBuffer({byteLength:p})}let b=r.device.createCommandEncoder();return b.copyTextureToBuffer({sourceTexture:r,width:a,height:l,origin:[n,i],destinationBuffer:d,byteOffset:o}),b.destroy(),f&&u.destroy(),d}function br$1(r){return r instanceof Xe$2?{framebuffer:r,deleteFramebuffer:!1}:{framebuffer:vn$1(r),deleteFramebuffer:!0}}function vn$1(r$94,e){let{device:t,width:n,height:i,id:s$46}=r$94;return t.createFramebuffer(s(r({},e),{id:`framebuffer-for-${s$46}`,width:n,height:i,colorAttachments:[r$94]}))}function Bn$1(r,e,t,n,i,s){if(r)return r;e||=5121;let o=Te$1(e),a=I$2.getTypedArrayConstructor(o),l=qe(t);return new a(n*i*l)}var Ke$1=class r$95 extends Fe$2{static getDeviceFromContext(e){return e?e.luma?.device??null:null}type=`webgl`;handle;features;limits;info;canvasContext;preferredColorFormat=`rgba8unorm`;preferredDepthFormat=`depth24plus`;commandEncoder;lost;_resolveContextLost;_isLost=!1;gl;_constants;extensions;_polyfilled=!1;spectorJS;get[Symbol.toStringTag](){return`WebGLDevice`}toString(){return`${this[Symbol.toStringTag]}(${this.id})`}isVertexFormatSupported(e){return e!==`unorm8x4-bgra`}constructor(e){super(s(r({},e),{id:e.id||Xt$1(`webgl-device`)}));let t=Fe$2._getCanvasContextProps(e);if(!t)throw new Error(`WebGLDevice requires props.createCanvasContext to be set`);let n=t.canvas?.gl??null,i=r$95.getDeviceFromContext(n);if(i)throw new Error(`WebGL context already attached to device ${i.id}`);this.canvasContext=new he$1(this,t),this.lost=new Promise(u=>{this._resolveContextLost=u});let s$47=r({},e.webgl);t.alphaMode===`premultiplied`&&(s$47.premultipliedAlpha=!0),e.powerPreference!==void 0&&(s$47.powerPreference=e.powerPreference),e.failIfMajorPerformanceCaveat!==void 0&&(s$47.failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat);let a=this.props._handle||Ct$1(this.canvasContext.canvas,{onContextLost:u=>this._resolveContextLost?.({reason:`destroyed`,message:`Entered sleep mode, or too many apps or browser tabs are using the GPU.`}),onContextRestored:u=>{console.log(`WebGL context restored`)}},s$47);if(!a)throw new Error(`WebGL context creation failed`);if(i=r$95.getDeviceFromContext(a),i){if(e._reuseDevices)return f$1.log(1,`Not creating a new Device, instead returning a reference to Device ${i.id} already attached to WebGL context`,i)(),this.canvasContext.destroy(),i._reused=!0,i;throw new Error(`WebGL context already attached to device ${i.id}`)}this.handle=a,this.gl=a,this.spectorJS=zt$1(s(r({},this.props),{gl:this.handle}));let l=Y(this.handle);l.device=this,l.extensions||(l.extensions={}),this.extensions=l.extensions,this.info=Pt$1(this.gl,this.extensions),this.limits=new de$1(this.gl),this.features=new fe(this.gl,this.extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new F$1(this.gl,{log:(...u)=>f$1.log(1,...u)()}).trackState(this.gl,{copyState:!1}),(e.debug||e.debugWebGL)&&(this.gl=Vt$1(this.gl,{debugWebGL:!0,traceWebGL:e.debugWebGL}),f$1.warn(`WebGL debug mode activated. Performance reduced.`)()),e.debugWebGL&&(f$1.level=Math.max(f$1.level,1)),this.commandEncoder=new ee$1(this,{id:`${this}-command-encoder`}),this.canvasContext._startObservers()}destroy(){if(!this.props._reuseDevices&&!this._reused){this._isLost=!0,this.commandEncoder?.destroy();let e=Y(this.handle);e.device=null}}get isLost(){return this._isLost||this.gl.isContextLost()}createCanvasContext(e){throw new Error(`WebGL only supports a single canvas`)}createPresentationContext(e){return new me$1(this,e||{})}createBuffer(e){let t=this._normalizeBufferProps(e);return new C(this,t)}createTexture(e){return new I(this,e)}createExternalTexture(e){throw new Error(`ExternalTexture is not available on WebGL`)}createSampler(e){return new _e$1(this,e)}createShader(e){return new be$1(this,e)}createFramebuffer(e){return new D(this,e)}createVertexArray(e){return new Fe$1(this,e)}createTransformFeedback(e){return new Ce$1(this,e)}createQuerySet(e){return new Pe$1(this,e)}createFence(){return new Ge$1(this)}createRenderPipeline(e){return new Se$1(this,e)}_createSharedRenderPipelineWebGL(e){return new ve$1(this,e)}createComputePipeline(e){throw new Error(`ComputePipeline not supported in WebGL`)}createRenderBundleEncoder(e){throw new Error(`Render bundles are only supported in WebGPU`)}createCommandEncoder(e={}){return new ee$1(this,e)}submit(e){let t=null;e||({submittedCommandEncoder:t,commandBuffer:e}=this._finalizeDefaultCommandEncoderForSubmit());try{e._executeCommands(),t&&t.resolveTimeProfilingQuerySet().then(()=>{this.commandEncoder._gpuTimeMs=t._gpuTimeMs}).catch(()=>{})}finally{e.destroy()}}writeBufferViaCommandEncoder(e,t,n,i=0){t.write(n,i)}_finalizeDefaultCommandEncoderForSubmit(){let e=this.commandEncoder,t=e.finish();return this.commandEncoder.destroy(),this.commandEncoder=this.createCommandEncoder({id:e.props.id,timeProfilingQuerySet:e.getTimeProfilingQuerySet()}),{submittedCommandEncoder:e,commandBuffer:t}}readPixelsToArrayWebGL(e,t){return gr$1(e,t)}readPixelsToBufferWebGL(e,t){return pr$1(e,t)}setParametersWebGL(e){A$1(this.gl,e)}getParametersWebGL(e){return se$1(this.gl,e)}withParametersWebGL(e,t){return P$1(this.gl,e,t)}resetWebGL(){f$1.warn(`WebGLDevice.resetWebGL is deprecated, use only for debugging`)(),Bt(this.gl)}_getDeviceSpecificTextureFormatCapabilities(e){return Ot$1(this.gl,e,this.extensions)}loseDevice(){let e=!1,n=this.getExtension(`WEBGL_lose_context`).WEBGL_lose_context;return n&&(e=!0,n.loseContext()),this._resolveContextLost?.({reason:`destroyed`,message:`Application triggered context loss`}),e}pushState(){F$1.get(this.gl).push()}popState(){F$1.get(this.gl).pop()}getGLKey(e,t){let n=Number(e);for(let i in this.gl)if(this.gl[i]===n)return`GL.${i}`;return t?.emptyIfUnknown?``:String(e)}getGLKeys(e){let t={emptyIfUnknown:!0};return Object.entries(e).reduce((n,[i,s])=>(n[`${i}:${this.getGLKey(i,t)}`]=`${s}:${this.getGLKey(s,t)}`,n),{})}setConstantAttributeWebGL(e,t){let n=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(n).fill(null);let i=this._constants[e];switch(i&&Cn$1(i,t)&&f$1.info(1,`setConstantAttributeWebGL(${e}) could have been skipped, value unchanged`)(),this._constants[e]=t,t.constructor){case Float32Array:An$1(this,e,t);break;case Int32Array:Fn$1(this,e,t);break;case Uint32Array:Gn$1(this,e,t);break;default:throw new Error(`constant`)}}getExtension(e){return G(this.gl,e,this.extensions),this.extensions}_setWebGLDebugMetadata(e,t,n){e.luma=t;e.__SPECTOR_Metadata={props:n.spector,id:n.spector.id}}};function An$1(r,e,t){switch(t.length){case 1:r.gl.vertexAttrib1fv(e,t);break;case 2:r.gl.vertexAttrib2fv(e,t);break;case 3:r.gl.vertexAttrib3fv(e,t);break;case 4:r.gl.vertexAttrib4fv(e,t);break;default:}}function Fn$1(r,e,t){r.gl.vertexAttribI4iv(e,t)}function Gn$1(r,e,t){r.gl.vertexAttribI4uiv(e,t)}function Cn$1(r,e){if(!r||!e||r.length!==e.length||r.constructor!==e.constructor)return!1;for(let t=0;t<r.length;++t)if(r[t]!==e[t])return!1;return!0}function Br(o,t){if(!o)throw new Error(t||`loader assertion failed.`)}var mt={self:typeof self<`u`&&self,window:typeof window<`u`&&window,global:typeof global<`u`&&global,document:typeof document<`u`&&document};mt.self||mt.window||mt.global;mt.window||mt.self||mt.global;mt.global||mt.self||mt.window;mt.document;var Ze=!!(typeof process!=`object`||String(process)!==`[object process]`||process.browser);var yn=typeof process<`u`&&process.version&&/v([0-9]*)/.exec(process.version);yn&&parseFloat(yn[1]);var gi=`4.4.5`;var Vl=gi[0]>=`0`&&gi[0]<=`9`?`v${gi}`:``;function zl(){let o=new $$2({id:`loaders.gl`});return globalThis.loaders||={},globalThis.loaders.log=o,globalThis.loaders.version=Vl,globalThis.probe||={},globalThis.probe.loaders=o,o}var yi=zl();var Fl=o=>typeof o==`boolean`;var gt=o=>typeof o==`function`;var yt=o=>o!==null&&typeof o==`object`;var Ur=o=>yt(o)&&o.constructor==={}.constructor;var _i=o=>typeof SharedArrayBuffer<`u`&&o instanceof SharedArrayBuffer;var he=o=>yt(o)&&typeof o.byteLength==`number`&&typeof o.slice==`function`;var wi=o=>!!o&&gt(o[Symbol.iterator]);var bi=o=>!!o&&gt(o[Symbol.asyncIterator]);var Q=o=>typeof Response<`u`&&o instanceof Response||yt(o)&&gt(o.arrayBuffer)&&gt(o.text)&&gt(o.json);var tt=o=>typeof Blob<`u`&&o instanceof Blob;var _n=o=>typeof ReadableStream<`u`&&o instanceof ReadableStream||yt(o)&&gt(o.tee)&&gt(o.cancel)&&gt(o.getReader);var wn=o=>yt(o)&&gt(o.read)&&gt(o.pipe)&&Fl(o.readable);var Xe=o=>_n(o)||wn(o);function vi(o,t){return bn(o||{},t)}function bn(o,t,e=0){if(e>3)return t;let r$1=r({},o);for(let[i,s]of Object.entries(t))s&&typeof s==`object`&&!Array.isArray(s)?r$1[i]=bn(r$1[i]||{},t[i],e+1):r$1[i]=t[i];return r$1}var vn=`latest`;function Wl(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version=`4.4.5`),globalThis._loadersgl_.version}var xn=Wl();function $(o,t){if(!o)throw new Error(t||`loaders.gl assertion failed.`)}var _t={self:typeof self<`u`&&self,window:typeof window<`u`&&window,global:typeof global<`u`&&global,document:typeof document<`u`&&document};_t.self||_t.window||_t.global;_t.window||_t.self||_t.global;_t.global||_t.self||_t.window;_t.document;var ot=typeof process!=`object`||String(process)!==`[object process]`||process.browser;var En=typeof window<`u`&&typeof window.orientation<`u`;var Pn=typeof process<`u`&&process.version&&/v([0-9]*)/.exec(process.version);Pn&&parseFloat(Pn[1]);var jr=class{name;workerThread;isRunning=!0;result;_resolve=()=>{};_reject=()=>{};constructor(t,e){this.name=t,this.workerThread=e,this.result=new Promise((r,i)=>{this._resolve=r,this._reject=i})}postMessage(t,e){this.workerThread.postMessage({source:`loaders.gl`,type:t,payload:e})}done(t){$(this.isRunning),this.isRunning=!1,this._resolve(t)}error(t){$(this.isRunning),this.isRunning=!1,this._reject(t)}};var de=class{terminate(){}};var xi=new Map;function Tn(o){$(o.source&&!o.url||!o.source&&o.url);let t=xi.get(o.source||o.url);return t||(o.url&&(t=Gl(o.url),xi.set(o.url,t)),o.source&&(t=An(o.source),xi.set(o.source,t))),$(t),t}function Gl(o){if(!o.startsWith(`http`))return o;return An(Yl(o))}function An(o){let t=new Blob([o],{type:`application/javascript`});return URL.createObjectURL(t)}function Yl(o){return`try {
408
+ importScripts('${o}');
409
+ } catch (error) {
410
+ console.error(error);
411
+ throw error;
412
+ }`}function Pi(o,t=!0,e){let r=e||new Set;if(o){if(Sn(o))r.add(o);else if(Sn(o.buffer))r.add(o.buffer);else if(!ArrayBuffer.isView(o)){if(t&&typeof o==`object`)for(let i in o)Pi(o[i],t,r)}}return e===void 0?Array.from(r):[]}function Sn(o){return o?o instanceof ArrayBuffer||typeof MessagePort<`u`&&o instanceof MessagePort||typeof ImageBitmap<`u`&&o instanceof ImageBitmap||typeof OffscreenCanvas<`u`&&o instanceof OffscreenCanvas:!1}var Ei=()=>{};var Zt=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL=``;static isSupported(){return typeof Worker<`u`&&ot||typeof de<`u`&&!ot}constructor(t){let{name:e,source:r,url:i}=t;$(r||i),this.name=e,this.source=r,this.url=i,this.onMessage=Ei,this.onError=s=>console.log(s),this.worker=ot?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Ei,this.onError=Ei,this.worker.terminate(),this.terminated=!0}get isRunning(){return!!this.onMessage}postMessage(t,e){e=e||Pi(t),this.worker.postMessage(t,e)}_getErrorFromErrorEvent(t){let e=`Failed to load `;return e+=`worker ${this.name} from ${this.url}. `,t.message&&(e+=`${t.message} in `),t.lineno&&(e+=`:${t.lineno}:${t.colno}`),new Error(e)}_createBrowserWorker(){this._loadableURL=Tn({source:this.source,url:this.url});let t=new Worker(this._loadableURL,{name:this.name});return t.onmessage=e=>{e.data?this.onMessage(e.data):this.onError(new Error(`No data received`))},t.onerror=e=>{this.onError(this._getErrorFromErrorEvent(e)),this.terminated=!0},t.onmessageerror=e=>console.error(e),t}_createNodeWorker(){let t;if(this.url)t=new de(this.url.includes(`:/`)||this.url.startsWith(`/`)?this.url:`./${this.url}`,{eval:!1,type:this.url.endsWith(`.ts`)||this.url.endsWith(`.mjs`)?`module`:`commonjs`});else if(this.source)t=new de(this.source,{eval:!0});else throw new Error(`no worker`);return t.on(`message`,e=>{this.onMessage(e)}),t.on(`error`,e=>{this.onError(e)}),t.on(`exit`,e=>{}),t}};var Nr=class{name=`unnamed`;source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return Zt.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=r(r({},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,e=(i,s,n)=>i.done(n),r=(i,s)=>i.error(s)){let i=new Promise(s=>(this.jobQueue.push({name:t,onMessage:e,onError:r,onStart:s}),this));return this._startQueuedJob(),await i}async _startQueuedJob(){if(!this.jobQueue.length)return;let t=this._getAvailableWorker();if(!t)return;let e=this.jobQueue.shift();if(e){this.onDebug({message:`Starting job`,name:e.name,workerThread:t,backlog:this.jobQueue.length});let r=new jr(e.name,t);t.onMessage=i=>e.onMessage(r,i.type,i.payload),t.onError=i=>e.onError(r,i),e.onStart(r);try{await r.result}catch(i){console.error(`Worker exception: ${i}`)}finally{this.returnWorkerToQueue(t)}}}returnWorkerToQueue(t){!ot||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++;return new Zt({name:`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return En?this.maxMobileConcurrency:this.maxConcurrency}};var $l={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}};var Vr=(()=>{class o{props;workerPools=new Map;static _workerFarm;static isSupported(){return Zt.isSupported()}static getWorkerFarm(e={}){return o._workerFarm=o._workerFarm||new o({}),o._workerFarm.setProps(e),o._workerFarm}constructor(e){this.props=r({},$l),this.setProps(e),this.workerPools=new Map}destroy(){for(let e of this.workerPools.values())e.destroy();this.workerPools=new Map}setProps(e){this.props=r(r({},this.props),e);for(let r of this.workerPools.values())r.setProps(this._getWorkerPoolProps())}getWorkerPool(e){let{name:r,source:i,url:s}=e,n=this.workerPools.get(r);return n||(n=new Nr({name:r,source:i,url:s}),n.setProps(this._getWorkerPoolProps()),this.workerPools.set(r,n)),n}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}return o})();function Ti(o,t={}){let e=t[o.id]||{},r=ot?`${o.id}-worker.js`:`${o.id}-worker-node.js`,i=e.workerUrl;if(!i&&o.id===`compression`&&(i=t.workerUrl),(t._workerType||t?.core?._workerType)===`test`&&(ot?i=`modules/${o.module}/dist/${r}`:i=`modules/${o.module}/src/workers/${o.id}-worker-node.ts`),!i){let n=o.version;n===`latest`&&(n=vn);let a=n?`@${n}`:``;i=`https://unpkg.com/@loaders.gl/${o.module}${a}/dist/${r}`}return $(i),i}function Ai(o,t=xn){$(o,`no worker provided`);let e=o.version;return!(!t||!e)}function Si(o,t){if(!Vr.isSupported())return!1;let e=t?._nodeWorkers??t?.core?._nodeWorkers;if(!ot&&!e)return!1;let r=t?.worker??t?.core?.worker;return!!(o.worker&&r)}async function Mi(o,t,e,r,i){let s=o.id,n=Ti(o,e),c=Vr.getWorkerFarm(e?.core).getWorkerPool({name:s,url:n});e=JSON.parse(JSON.stringify(e)),r=JSON.parse(JSON.stringify(r||{}));let l=await c.startJob(`process-on-worker`,Hl.bind(null,i));return l.postMessage(`process`,{input:t,options:e,context:r}),await(await l.result).result}async function Hl(o,t,e,r){switch(e){case`done`:t.done(r);break;case`error`:t.error(new Error(r.error));break;case`process`:let{id:i,input:s,options:n}=r;try{let a=await o(s,n);t.postMessage(`done`,{id:i,result:a})}catch(a){let c=a instanceof Error?a.message:`unknown error`;t.postMessage(`error`,{id:i,error:c})}break;default:console.warn(`parse-with-worker unknown message ${e}`)}}function Ci(o,t,e){if(e=e||o.byteLength,o.byteLength<e||t.byteLength<e)return!1;let r=new Uint8Array(o),i=new Uint8Array(t);for(let s=0;s<r.length;++s)if(r[s]!==i[s])return!1;return!0}function Ii(...o){return Mn(o)}function Mn(o){let t=o.map(s=>s instanceof ArrayBuffer?new Uint8Array(s):s),e=t.reduce((s,n)=>s+n.byteLength,0),r=new Uint8Array(e),i=0;for(let s of t)r.set(s,i),i+=s.byteLength;return r.buffer}async function Ri(o){let t=[];for await(let e of o)t.push(ql(e));return Ii(...t)}function ql(o){if(o instanceof ArrayBuffer)return o;if(ArrayBuffer.isView(o)){let{buffer:t,byteOffset:e,byteLength:r}=o;return Cn(t,e,r)}return Cn(o)}function Cn(o,t=0,e=o.byteLength-t){let r=new Uint8Array(o,t,e),i=new Uint8Array(r.length);return i.set(r),i.buffer}var Zl=``;var In={};function Li(o){for(let t in In)if(o.startsWith(t)){let e=In[t];o=o.replace(t,e)}return!o.startsWith(`http://`)&&!o.startsWith(`https://`)&&(o=`${Zl}${o}`),o}function Fr(o){return o&&typeof o==`object`&&o.isBuffer}function pe(o){if(Fr(o))return o;if(o instanceof ArrayBuffer)return o;if(_i(o))return zr(o);if(ArrayBuffer.isView(o)){let t=o.buffer;return o.byteOffset===0&&o.byteLength===o.buffer.byteLength?t:t.slice(o.byteOffset,o.byteOffset+o.byteLength)}if(typeof o==`string`){let t=o;return new TextEncoder().encode(t).buffer}if(o&&typeof o==`object`&&o._toArrayBuffer)return o._toArrayBuffer();throw new Error(`toArrayBuffer`)}function Ke(o){if(o instanceof ArrayBuffer)return o;if(_i(o))return zr(o);let{buffer:t,byteOffset:e,byteLength:r}=o;return t instanceof ArrayBuffer&&e===0&&r===t.byteLength?t:zr(t,e,r)}function zr(o,t=0,e=o.byteLength-t){let r=new Uint8Array(o,t,e),i=new Uint8Array(r.length);return i.set(r),i.buffer}function ki(o){return ArrayBuffer.isView(o)?o:new Uint8Array(o)}var St={};w$1(St,{dirname:()=>Kl,filename:()=>Xl,join:()=>Jl,resolve:()=>Ql});function Rn(){if(typeof process<`u`&&typeof process.cwd<`u`)return process.cwd();let o=window.location?.pathname;return o?.slice(0,o.lastIndexOf(`/`)+1)||``}function Xl(o){let t=o?o.lastIndexOf(`/`):-1;return t>=0?o.substr(t+1):o}function Kl(o){let t=o?o.lastIndexOf(`/`):-1;return t>=0?o.substr(0,t):``}function Jl(...o){return o=o.map((e,r)=>(r&&(e=e.replace(new RegExp(`^/`),``)),r!==o.length-1&&(e=e.replace(new RegExp(`/$`),``)),e)),o.join(`/`)}function Ql(...o){let t=[];for(let s=0;s<o.length;s++)t[s]=o[s];let e=``,r=!1,i;for(let s=t.length-1;s>=-1&&!r;s--){let n;s>=0?n=t[s]:(i===void 0&&(i=Rn()),n=i),n.length!==0&&(e=`${n}/${e}`,r=n.charCodeAt(0)===Je)}return e=tu(e,!r),r?`/${e}`:e.length>0?e:`.`}var Je=47;var Oi=46;function tu(o,t){let e=``,r=-1,i=0,s,n=!1;for(let a=0;a<=o.length;++a){if(a<o.length)s=o.charCodeAt(a);else{if(s===Je)break;s=Je}if(s===Je){if(!(r===a-1||i===1))if(r!==a-1&&i===2){if(e.length<2||!n||e.charCodeAt(e.length-1)!==Oi||e.charCodeAt(e.length-2)!==Oi){if(e.length>2){let c=e.length-1,l=c;for(;l>=0&&e.charCodeAt(l)!==Je;--l);if(l!==c){e=l===-1?``:e.slice(0,l),r=a,i=0,n=!1;continue}}else if(e.length===2||e.length===1){e=``,r=a,i=0,n=!1;continue}}t&&(e.length>0?e+=`/..`:e=`..`,n=!0)}else{let c=o.slice(r+1,a);e.length>0?e+=`/${c}`:e=c,n=!1}r=a,i=0}else s===Oi&&i!==-1?++i:i=-1}return e}function Qe(o){return o?(Array.isArray(o)&&(o=o[0]),Array.isArray(o?.extensions)):!1}function tr(o){Br(o,`null loader`),Br(Qe(o),`invalid loader`);let t;return Array.isArray(o)&&(t=o[1],o=o[0],o=s(r({},o),{options:r(r({},o.options),t)})),(o?.parseTextSync||o?.parseText)&&(o.text=!0),o.text||(o.binary=!0),o}var Wr=class extends Error{constructor(t,e){super(t),this.reason=e.reason,this.url=e.url,this.response=e.response}reason;url;response};var ou=/^data:([-\w.]+\/[-\w.+]+)(;|,)/;var iu=/^([-\w.]+\/[-\w.+]+)/;function Di(o,t){return o.toLowerCase()===t.toLowerCase()}function Ln(o){let t=iu.exec(o);return t?t[1]:o}function Bi(o){let t=ou.exec(o);return t?t[1]:``}var kn=/\?.*/;function On(o){let t=o.match(kn);return t&&t[0]}function Ut(o){return o.replace(kn,``)}function Dn(o){if(o.length<50)return o;let t=o.slice(o.length-15);return`${o.substr(0,32)}...${t}`}function Xt(o){return Q(o)?o.url:tt(o)?(`name`in o?o.name:``)||``:typeof o==`string`?o:``}function me(o){if(Q(o)){let t=o.headers.get(`content-type`)||``,e=Ut(o.url);return Ln(t)||Bi(e)}return tt(o)?o.type||``:typeof o==`string`?Bi(o):``}function Bn(o){return Q(o)?o.headers[`content-length`]||-1:tt(o)?o.size:typeof o==`string`?o.length:o instanceof ArrayBuffer||ArrayBuffer.isView(o)?o.byteLength:-1}async function Gr(o){if(Q(o))return o;let t={},e=Bn(o);e>=0&&(t[`content-length`]=String(e));let r=Xt(o),i=me(o);i&&(t[`content-type`]=i);let s=await nu(o);s&&(t[`x-first-bytes`]=s),typeof o==`string`&&(o=new TextEncoder().encode(o));let n=new Response(o,{headers:t});return Object.defineProperty(n,"url",{value:r}),n}async function Un(o){if(!o.ok)throw await su(o)}async function su(o){let t=Dn(o.url),e=`Failed to fetch resource (${o.status}) ${o.statusText}: ${t}`;e=e.length>100?`${e.slice(0,100)}...`:e;let r={reason:o.statusText,url:o.url,response:o};try{let i=o.headers.get(`Content-Type`);r.reason=!o.bodyUsed&&i?.includes(`application/json`)?await o.json():await o.text()}catch{}return new Wr(e,r)}async function nu(o){if(typeof o==`string`)return`data:,${o.slice(0,5)}`;if(o instanceof Blob){let e=o.slice(0,5);return await new Promise(r=>{let i=new FileReader;i.onload=s=>r(s?.target?.result),i.readAsDataURL(e)})}if(o instanceof ArrayBuffer)return`data:base64,${au(o.slice(0,5))}`;return null}function au(o){let t=``,e=new Uint8Array(o);for(let r=0;r<e.byteLength;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function cu(o){return!lu(o)&&!uu(o)}function lu(o){return o.startsWith(`http:`)||o.startsWith(`https:`)}function uu(o){return o.startsWith(`data:`)}async function Ui(o,t){if(typeof o==`string`){let e=Li(o);return cu(e)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(e,t):await fetch(e,t)}return await Gr(o)}var er=new $$2({id:`loaders.gl`});var Yr=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}};var $r=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 Hr={core:{baseUrl:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new $r,useLocalLibraries:!1,CDN:`https://unpkg.com/@loaders.gl`,worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:Ze,_nodeWorkers:!1,_workerType:``,limit:0,_limitMB:0,batchSize:`auto`,batchDebounceMs:0,metadata:!1,transforms:[]}};var jn={baseUri:`core.baseUrl`,fetch:`core.fetch`,mimeType:`core.mimeType`,fallbackMimeType:`core.fallbackMimeType`,ignoreRegisteredLoaders:`core.ignoreRegisteredLoaders`,nothrow:`core.nothrow`,log:`core.log`,useLocalLibraries:`core.useLocalLibraries`,CDN:`core.CDN`,worker:`core.worker`,maxConcurrency:`core.maxConcurrency`,maxMobileConcurrency:`core.maxMobileConcurrency`,reuseWorkers:`core.reuseWorkers`,_nodeWorkers:`core.nodeWorkers`,_workerType:`core._workerType`,_worker:`core._workerType`,limit:`core.limit`,_limitMB:`core._limitMB`,batchSize:`core.batchSize`,batchDebounceMs:`core.batchDebounceMs`,metadata:`core.metadata`,transforms:`core.transforms`,throws:`nothrow`,dataType:`(no longer used)`,uri:`core.baseUrl`,method:`core.fetch.method`,headers:`core.fetch.headers`,body:`core.fetch.body`,mode:`core.fetch.mode`,credentials:`core.fetch.credentials`,cache:`core.fetch.cache`,redirect:`core.fetch.redirect`,referrer:`core.fetch.referrer`,referrerPolicy:`core.fetch.referrerPolicy`,integrity:`core.fetch.integrity`,keepalive:`core.fetch.keepalive`,signal:`core.fetch.signal`};var ji=[`baseUrl`,`fetch`,`mimeType`,`fallbackMimeType`,`ignoreRegisteredLoaders`,`nothrow`,`log`,`useLocalLibraries`,`CDN`,`worker`,`maxConcurrency`,`maxMobileConcurrency`,`reuseWorkers`,`_nodeWorkers`,`_workerType`,`limit`,`_limitMB`,`batchSize`,`batchDebounceMs`,`metadata`,`transforms`];function Ni(){globalThis.loaders=globalThis.loaders||{};let{loaders:o}=globalThis;return o._state||(o._state={}),o._state}function Vi(){let o=Ni();return o.globalOptions=o.globalOptions||s(r({},Hr),{core:r({},Hr.core)}),Mt(o.globalOptions)}function zn(o,t,e,r){return e=e||[],e=Array.isArray(e)?e:[e],fu(o,e),Mt(du(t,o,r))}function Mt(o){let t=mu(o);Fn(t);for(let e of ji)t.core&&t.core[e]!==void 0&&delete t[e];return t.core&&t.core._workerType!==void 0&&delete t._worker,t}function fu(o,t){Nn(o,null,Hr,jn,t);for(let e of t){let r=o&&o[e.id]||{},i=e.options&&e.options[e.id]||{},s=e.deprecatedOptions&&e.deprecatedOptions[e.id]||{};Nn(r,e.id,i,s,t)}}function Nn(o,t,e,r,i){let s=t||`Top level`,n=t?`${t}.`:``;for(let a in o){let c=!t&&yt(o[a]),l=a===`baseUri`&&!t,u=a===`workerUrl`&&t;if(!(a in e)&&!l&&!u){if(a in r)er.level>0&&er.warn(`${s} loader option '${n}${a}' no longer supported, use '${r[a]}'`)();else if(!c&&er.level>0){let f=hu(a,i);er.warn(`${s} loader option '${n}${a}' not recognized. ${f}`)()}}}}function hu(o,t){let e=o.toLowerCase(),r=``;for(let i of t)for(let s in i.options){if(o===s)return`Did you mean '${i.id}.${s}'?`;let n=s.toLowerCase();(e.startsWith(n)||n.startsWith(e))&&(r=r||`Did you mean '${i.id}.${s}'?`)}return r}function du(o,t,e){let r$2=o.options||{},i=r({},r$2);r$2.core&&(i.core=r({},r$2.core)),Fn(i),i.core?.log===null&&(i.core=s(r({},i.core),{log:new Yr})),Vn(i,Mt(Vi()));return Vn(i,Mt(t)),pu(i,e),gu(i),i}function Vn(o,t){for(let e in t)if(e in t){let r$3=t[e];Ur(r$3)&&Ur(o[e])?o[e]=r(r({},o[e]),t[e]):o[e]=t[e]}}function pu(o,t){if(!t)return;o.core?.baseUrl!==void 0||(o.core||={},o.core.baseUrl=St.dirname(Ut(t)))}function mu(o){let t=r({},o);return o.core&&(t.core=r({},o.core)),t}function Fn(o){o.baseUri!==void 0&&(o.core||={},o.core.baseUrl===void 0&&(o.core.baseUrl=o.baseUri));for(let e of ji)if(o[e]!==void 0){let i=o.core=o.core||{};i[e]===void 0&&(i[e]=o[e])}let t=o._worker;t!==void 0&&(o.core||={},o.core._workerType===void 0&&(o.core._workerType=t))}function gu(o){let t=o.core;if(t)for(let e of ji)t[e]!==void 0&&(o[e]=t[e])}function qr(o,t){let e=Vi(),r=o||e,i=r.fetch??r.core?.fetch;return typeof i==`function`?i:yt(i)?s=>Ui(s,i):t?.fetch?t?.fetch:Ui}var yu=256*1024;function*Wn(o,t){let e=t?.chunkSize||yu,r=0,i=new TextEncoder;for(;r<o.length;){let s=Math.min(o.length-r,e),n=o.slice(r,r+s);r+=s,yield Ke(i.encode(n))}}function*Gn(o,t={}){let{chunkSize:e=262144}=t,r=0;for(;r<o.byteLength;){let i=Math.min(o.byteLength-r,e),s=new ArrayBuffer(i),n=new Uint8Array(o,r,i);new Uint8Array(s).set(n),r+=i,yield s}}async function*Yn(o,t){let e=t?.chunkSize||1048576,r=0;for(;r<o.size;){let i=r+e,s=await o.slice(r,i).arrayBuffer();r=i,yield s}}function zi(o,t){return Ze?_u(o,t):wu(o,t)}async function*_u(o,t){let e=o.getReader(),r;try{for(;;){let i=r||e.read();t?._streamReadAhead&&(r=e.read());let{done:s,value:n}=await i;if(s)return;yield pe(n)}}catch{e.releaseLock()}}async function*wu(o,t){for await(let e of o)yield pe(e)}function $n(o,t){if(typeof o==`string`)return Wn(o,t);if(o instanceof ArrayBuffer)return Gn(o,t);if(tt(o))return Yn(o,t);if(Xe(o))return zi(o,t);if(Q(o)){let e=o.body;if(!e)throw new Error(`Readable stream not available on Response`);return zi(e,t)}throw new Error(`makeIterator`)}var Hn=`Cannot convert supplied data type`;function bu(o,t,e){if(t.text&&typeof o==`string`)return o;if(Fr(o)&&(o=o.buffer),he(o)){let r=ki(o);return t.text&&!t.binary?new TextDecoder(`utf8`).decode(r):pe(r)}throw new Error(Hn)}async function qn(o,t,e){if(typeof o==`string`||he(o))return bu(o,t,e);if(tt(o)&&(o=await Gr(o)),Q(o))return await Un(o),t.binary?await o.arrayBuffer():await o.text();if(Xe(o)&&(o=$n(o,e)),wi(o)||bi(o))return Ri(o);throw new Error(Hn)}function Zn(o,t,e){if(e)return e;let r$4=r({fetch:qr(t,o)},o);if(r$4.url){let i=Ut(r$4.url);r$4.baseUrl=i,r$4.queryString=On(r$4.url),r$4.filename=St.filename(i),r$4.baseUrl=St.dirname(i)}return Array.isArray(r$4.loaders)||(r$4.loaders=null),r$4}function Xn(o,t){if(o&&!Array.isArray(o))return o;let e;if(o&&(e=Array.isArray(o)?o:[o]),t&&t.loaders){let r=Array.isArray(t.loaders)?t.loaders:[t.loaders];e=e?[...e,...r]:r}return e&&e.length?e:void 0}var Kn=()=>{let o=Ni();return o.loaderRegistry=o.loaderRegistry||[],o.loaderRegistry};function Fi(o){let t=Kn();o=Array.isArray(o)?o:[o];for(let e of o){let r=tr(e);t.find(i=>r===i)||t.unshift(r)}}function Jn(){return Kn()}var vu=/\.([^.]+)$/;async function ea(o,t=[],e,r$5){if(!ra(o))return null;let i=Mt(e||{});if(i.core||={},o instanceof Response&&Qn(o)){let a=Zr(await o.clone().text(),t,s(r({},i),{core:s(r({},i.core),{nothrow:!0})}),r$5);if(a)return a}let s$1=Zr(o,t,s(r({},i),{core:s(r({},i.core),{nothrow:!0})}),r$5);if(s$1)return s$1;if(tt(o)&&(o=await o.slice(0,10).arrayBuffer(),s$1=Zr(o,t,i,r$5)),!s$1&&o instanceof Response&&Qn(o))s$1=Zr(await o.clone().text(),t,i,r$5);if(!s$1&&!i.core.nothrow)throw new Error(oa(o));return s$1}function Qn(o){let t=me(o);return!!(t&&(t.startsWith(`text/`)||t===`application/json`||t.endsWith(`+json`)))}function Zr(o,t=[],e,r){if(!ra(o))return null;let i=Mt(e||{});if(i.core||={},t&&!Array.isArray(t))return tr(t);let s=[];t&&(s=s.concat(t)),i.core.ignoreRegisteredLoaders||s.push(...Jn()),Pu(s);let n=xu(o,s,i,r);if(!n&&!i.core.nothrow)throw new Error(oa(o));return n}function xu(o,t,e,r){let i=Xt(o),s=me(o),n=Ut(i)||r?.url,a=null,c=``;return e?.core?.mimeType&&(a=Wi(t,e?.core?.mimeType),c=`match forced by supplied MIME type ${e?.core?.mimeType}`),a=a||Eu(t,n),c=c||(a?`matched url ${n}`:``),a=a||Wi(t,s),c=c||(a?`matched MIME type ${s}`:``),a=a||Au(t,o),c=c||(a?`matched initial data ${ia(o)}`:``),e?.core?.fallbackMimeType&&(a=a||Wi(t,e?.core?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${s}`:``)),c&&yi.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function ra(o){return!(o instanceof Response&&o.status===204)}function oa(o){let t=Xt(o),e=me(o),r=`No valid loader found (`;r+=t?`${St.filename(t)}, `:`no url provided, `,r+=`MIME type: ${e?`"${e}"`:`not provided`}, `;let i=o?ia(o):``;return r+=i?` first bytes: "${i}"`:`first bytes: not available`,r+=`)`,r}function Pu(o){for(let t of o)tr(t)}function Eu(o,t){let e=t&&vu.exec(t),r=e&&e[1];return r?Tu(o,r):null}function Tu(o,t){t=t.toLowerCase();for(let e of o)for(let r of e.extensions)if(r.toLowerCase()===t)return e;return null}function Wi(o,t){for(let e of o)if(e.mimeTypes?.some(r=>Di(t,r))||Di(t,`application/x.${e.id}`))return e;return null}function Au(o,t){if(!t)return null;for(let e of o)if(typeof t==`string`){if(Su(t,e))return e}else if(ArrayBuffer.isView(t)){if(ta(t.buffer,t.byteOffset,e))return e}else if(t instanceof ArrayBuffer&&ta(t,0,e))return e;return null}function Su(o,t){return t.testText?t.testText(o):(Array.isArray(t.tests)?t.tests:[t.tests]).some(r=>o.startsWith(r))}function ta(o,t,e){return(Array.isArray(e.tests)?e.tests:[e.tests]).some(i=>Mu(o,t,e,i))}function Mu(o,t,e,r){if(he(r))return Ci(r,o,r.byteLength);switch(typeof r){case`function`:return r(Ke(o));case`string`:return r===Gi(o,t,r.length);default:return!1}}function ia(o,t=5){return typeof o==`string`?o.slice(0,t):ArrayBuffer.isView(o)?Gi(o.buffer,o.byteOffset,t):o instanceof ArrayBuffer?Gi(o,0,t):``}function Gi(o,t,e){if(o.byteLength<t+e)return``;let r=new DataView(o),i=``;for(let s=0;s<e;s++)i+=String.fromCharCode(r.getUint8(t+s));return i}async function rr(o,t,e,r){t&&!Array.isArray(t)&&!Qe(t)&&(r=void 0,e=t,t=void 0),o=await o,e=e||{};let i=Xt(o),n=Xn(t,r),a=await ea(o,n,e);if(!a)return null;let c=zn(e,a,n,i);return r=Zn({url:i,_parse:rr,loaders:n},c,r||null),await Cu(a,o,c,r)}async function Cu(o,t,e,r){if(Ai(o),e=vi(o.options,e),Q(t)){let{ok:s,redirected:n,status:a,statusText:c,type:l,url:u}=t;r.response={headers:Object.fromEntries(t.headers.entries()),ok:s,redirected:n,status:a,statusText:c,type:l,url:u}}t=await qn(t,o,e);let i=o;if(i.parseTextSync&&typeof t==`string`)return i.parseTextSync(t,e,r);if(Si(o,e))return await Mi(o,t,e,r,rr);if(i.parseText&&typeof t==`string`)return await i.parseText(t,e,r);if(i.parse)return await i.parse(t,e,r);throw $(!i.parseSync),new Error(`${o.id} loader - no parser found and worker is disabled`)}async function ge(o,t,e,r$6){let i,s$2;!Array.isArray(t)&&!Qe(t)?(i=[],s$2=t,r$6=void 0):(i=t,s$2=e);let n=qr(s$2),a=o;return typeof o==`string`&&(a=await n(o)),tt(o)&&(a=await n(o)),typeof o==`string`&&(Mt(s$2||{}).core?.baseUrl||(s$2=s(r({},s$2),{core:s(r({},s$2?.core),{baseUrl:o})}))),Array.isArray(i)?await rr(a,i,s$2):await rr(a,i,s$2)}function Iu(o,t,e){let r=e?.core?.type||e.type||`auto`,i=r===`auto`?Ru(o,t):Lu(r,t);if(!i)throw new Error(`Not a valid source type`);return i.createDataSource(o,e)}function Ru(o,t){for(let e of t)if(e.testURL&&e.testURL(o))return e;return null}function Lu(o,t){for(let e of t)if(e.type===o)return e;return null}var ku=`Queued Requests`;var Ou=`Active Requests`;var Du=`Cancelled Requests`;var Bu=`Queued Requests Ever`;var Uu=`Active Requests Ever`;var ju={id:`request-scheduler`,throttleRequests:!0,maxRequests:6,debounceTime:0};var Yi=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(t={}){this.props=r(r({},ju),t),this.stats=new j$3({id:this.props.id}),this.stats.get(ku),this.stats.get(Ou),this.stats.get(Du),this.stats.get(Bu),this.stats.get(Uu)}setProps(t){t.throttleRequests!==void 0&&(this.props.throttleRequests=t.throttleRequests),t.maxRequests!==void 0&&(this.props.maxRequests=t.maxRequests),t.debounceTime!==void 0&&(this.props.debounceTime=t.debounceTime)}scheduleRequest(t,e=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let r={handle:t,priority:0,getPriority:e},i=new Promise(s=>(r.resolve=s,r));return this.requestQueue.push(r),this.requestMap.set(t,i),this._issueNewRequests(),i}_issueRequest(t){let{handle:e,resolve:r}=t,i=!1,s=()=>{i||(i=!0,this.requestMap.delete(e),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,r?r({done:s}):Promise.resolve({done:s})}_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 e=0;e<t;++e){let r=this.requestQueue.shift();r&&this._issueRequest(r)}}}_updateAllRequests(){let t=this.requestQueue;for(let e=0;e<t.length;++e){let r=t[e];this._updateRequest(r)||(t.splice(e,1),this.requestMap.delete(r.handle),e--)}t.sort((e,r)=>e.priority-r.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var $i=class{static type=`template`;static testURL=t=>!1};async function Nu(o,t,e,r){return r._parse(o,t,e,r)}function jt(o,t){if(!o)throw new Error(t||`loader assertion failed.`)}var wt={self:typeof self<`u`&&self,window:typeof window<`u`&&window,global:typeof global<`u`&&global,document:typeof document<`u`&&document};wt.self||wt.window||wt.global;wt.window||wt.self||wt.global;wt.global||wt.self||wt.window;wt.document;var ye=!!(typeof process!=`object`||String(process)!==`[object process]`||process.browser);var sa=typeof process<`u`&&process.version&&/v([0-9]*)/.exec(process.version);sa&&parseFloat(sa[1]);var Hi=`4.5.1`;var Yu=Hi[0]>=`0`&&Hi[0]<=`9`?`v${Hi}`:``;function $u(){let o=new $$2({id:`loaders.gl`});return globalThis.loaders||={},globalThis.loaders.log=o,globalThis.loaders.version=Yu,globalThis.probe||={},globalThis.probe.loaders=o,o}var Hu=$u();var na=o=>typeof SharedArrayBuffer<`u`&&o instanceof SharedArrayBuffer;function qi(o,t){return aa(o||{},t)}function aa(o,t,e=0){if(e>3)return t;let r$7=r({},o);for(let[i,s]of Object.entries(t))s&&typeof s==`object`&&!Array.isArray(s)?r$7[i]=aa(r$7[i]||{},t[i],e+1):r$7[i]=t[i];return r$7}function qu(o){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,o)}function Zu(o){return globalThis.loaders?.modules?.[o]||null}function la(o,t=5){return typeof o==`string`?o.slice(0,t):ArrayBuffer.isView(o)?ca(o.buffer,o.byteOffset,t):o instanceof ArrayBuffer?ca(o,0,t):``}function ca(o,t,e){if(o.byteLength<=t+e)return``;let r=new DataView(o),i=``;for(let s=0;s<e;s++)i+=String.fromCharCode(r.getUint8(t+s));return i}function Xu(o){try{return JSON.parse(o)}catch{throw new Error(`Failed to parse JSON from data starting with "${la(o)}"`)}}function Ku(...o){let t=o,e=t&&t.length>1&&t[0].constructor||null;if(!e)throw new Error(`"concatenateTypedArrays" - incorrect quantity of arguments or arguments have incompatible data types`);let i=new e(t.reduce((n,a)=>n+a.length,0)),s=0;for(let n of t)i.set(n,s),s+=n.length;return i}function Ju(o,t,e){let r=e!==void 0?new Uint8Array(o).subarray(t,t+e):new Uint8Array(o).subarray(t);return new Uint8Array(r).buffer}function ua(o,t){return jt(o>=0),jt(t>0),o+(t-1)&~(t-1)}function Qu(o,t,e){let r;if(o instanceof ArrayBuffer)r=new Uint8Array(o);else{let i=o.byteOffset,s=o.byteLength;r=new Uint8Array(o.buffer||o.arrayBuffer,i,s)}return t.set(r,e),e+ua(r.byteLength,4)}var tf=``;var fa={};function ha(o){for(let t in fa)if(o.startsWith(t)){let e=fa[t];o=o.replace(t,e)}return!o.startsWith(`http://`)&&!o.startsWith(`https://`)&&(o=`${tf}${o}`),o}function ef(o){if(o instanceof ArrayBuffer)return o;if(na(o))return Zi(o);let{buffer:t,byteOffset:e,byteLength:r}=o;return t instanceof ArrayBuffer&&e===0&&r===t.byteLength?t:Zi(t,e,r)}function Zi(o,t=0,e=o.byteLength-t){let r=new Uint8Array(o,t,e),i=new Uint8Array(r.length);return i.set(r),i.buffer}var pa={};w$1(pa,{dirname:()=>of,filename:()=>rf,join:()=>sf,resolve:()=>nf});function da(){if(typeof process<`u`&&typeof process.cwd<`u`)return process.cwd();let o=window.location?.pathname;return o?.slice(0,o.lastIndexOf(`/`)+1)||``}function rf(o){let t=o?o.lastIndexOf(`/`):-1;return t>=0?o.substr(t+1):o}function of(o){let t=o?o.lastIndexOf(`/`):-1;return t>=0?o.substr(0,t):``}function sf(...o){return o=o.map((e,r)=>(r&&(e=e.replace(new RegExp(`^/`),``)),r!==o.length-1&&(e=e.replace(new RegExp(`/$`),``)),e)),o.join(`/`)}function nf(...o){let t=[];for(let s=0;s<o.length;s++)t[s]=o[s];let e=``,r=!1,i;for(let s=t.length-1;s>=-1&&!r;s--){let n;s>=0?n=t[s]:(i===void 0&&(i=da()),n=i),n.length!==0&&(e=`${n}/${e}`,r=n.charCodeAt(0)===or)}return e=af(e,!r),r?`/${e}`:e.length>0?e:`.`}var or=47;var Xi=46;function af(o,t){let e=``,r=-1,i=0,s,n=!1;for(let a=0;a<=o.length;++a){if(a<o.length)s=o.charCodeAt(a);else{if(s===or)break;s=or}if(s===or){if(!(r===a-1||i===1))if(r!==a-1&&i===2){if(e.length<2||!n||e.charCodeAt(e.length-1)!==Xi||e.charCodeAt(e.length-2)!==Xi){if(e.length>2){let c=e.length-1,l=c;for(;l>=0&&e.charCodeAt(l)!==or;--l);if(l!==c){e=l===-1?``:e.slice(0,l),r=a,i=0,n=!1;continue}}else if(e.length===2||e.length===1){e=``,r=a,i=0,n=!1;continue}}t&&(e.length>0?e+=`/..`:e=`..`,n=!0)}else{let c=o.slice(r+1,a);e.length>0?e+=`/${c}`:e=c,n=!1}r=a,i=0}else s===Xi&&i!==-1?++i:i=-1}return e}var cf=(()=>{class o{static defaultOptions={core:{type:`auto`,attributions:[],loadOptions:{},loaders:[]}};optionsType;options;data;url;loadOptions;fetch;_needsRefresh=!0;constructor(e,r$8,i){i?this.options=qi(s(r({},i),{core:o.defaultOptions}),r$8):this.options=r({},r$8),this.data=e,this.url=typeof e==`string`?ha(e):``,this.loadOptions=uf(this.options.core?.loadOptions),this.fetch=lf(this.loadOptions)}setProps(e){this.options=Object.assign(this.options,e),this.setNeedsRefresh()}setNeedsRefresh(){this._needsRefresh=!0}getNeedsRefresh(e=!0){let r=this._needsRefresh;return e&&(this._needsRefresh=!1),r}}return o})();function lf(o){let t=o?.core?.fetch;if(t&&typeof t==`function`)return(r,i)=>t(r,i);let e=o?.fetch;return e&&typeof e!=`function`?r=>fetch(r,e):r=>fetch(r)}function uf(o){let t=r({},o);o?.core&&(t.core=r({},o.core));let e=typeof t.baseUri==`string`?t.baseUri:void 0,r$9=typeof t.baseUrl==`string`?t.baseUrl:void 0;return(e!==void 0||r$9!==void 0)&&(t.core||={},t.core.baseUrl===void 0&&(t.core.baseUrl=r$9??e),delete t.baseUri,delete t.baseUrl),t}var A=new $$2({id:`deck`});var ma={name:`color`,dependencies:[],source:`
413
+
414
+ @must_use
415
+ fn deckgl_premultiplied_alpha(fragColor: vec4<f32>) -> vec4<f32> {
416
+ return vec4(fragColor.rgb * fragColor.a, fragColor.a);
417
+ };
418
+ `,getUniforms:o=>({})};var T=(function(o){return o[o.Start=1]=`Start`,o[o.Move=2]=`Move`,o[o.End=4]=`End`,o[o.Cancel=8]=`Cancel`,o})(T||{});var U=(function(o){return o[o.None=0]=`None`,o[o.Left=1]=`Left`,o[o.Right=2]=`Right`,o[o.Up=4]=`Up`,o[o.Down=8]=`Down`,o[o.Horizontal=3]=`Horizontal`,o[o.Vertical=12]=`Vertical`,o[o.All=15]=`All`,o})(U||{});var P=(function(o){return o[o.Possible=1]=`Possible`,o[o.Began=2]=`Began`,o[o.Changed=4]=`Changed`,o[o.Ended=8]=`Ended`,o[o.Recognized=8]=`Recognized`,o[o.Cancelled=16]=`Cancelled`,o[o.Failed=32]=`Failed`,o})(P||{});var ga=`compute`;var Ki=`auto`;var Kt=`manipulation`;var Jt=`none`;var ir=`pan-x`;var sr=`pan-y`;function Ji(o){if(o.includes(Jt))return Jt;let t=o.includes(ir),e=o.includes(sr);return t&&e?Jt:t||e?t?ir:sr:o.includes(Kt)?Kt:Ki}var nr=class{constructor(t,e){this.actions=``,this.manager=t,this.set(e)}set(t){t===ga&&(t=this.compute()),this.manager.element&&(this.manager.element.style.touchAction=t,this.actions=t)}update(){this.set(this.manager.options.touchAction)}compute(){let t=[];for(let e of this.manager.recognizers)e.options.enable&&(t=t.concat(e.getTouchAction()));return Ji(t.join(` `))}};function _e(o){return o.trim().split(/\s+/g)}function Xr(o,t,e){if(o)for(let r of _e(t))o.addEventListener(r,e,!1)}function Kr(o,t,e){if(o)for(let r of _e(t))o.removeEventListener(r,e,!1)}function Qi(o){return(o.ownerDocument||o).defaultView}function ts(o,t){let e=o;for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function Jr(o){let t=o.length;if(t===1)return{x:Math.round(o[0].clientX),y:Math.round(o[0].clientY)};let e=0,r=0,i=0;for(;i<t;)e+=o[i].clientX,r+=o[i].clientY,i++;return{x:Math.round(e/t),y:Math.round(r/t)}}function es(o){let t=[],e=0;for(;e<o.pointers.length;)t[e]={clientX:Math.round(o.pointers[e].clientX),clientY:Math.round(o.pointers[e].clientY)},e++;return{timeStamp:Date.now(),pointers:t,center:Jr(t),deltaX:o.deltaX,deltaY:o.deltaY}}function we(o,t){let e=t.x-o.x,r=t.y-o.y;return Math.sqrt(e*e+r*r)}function ar(o,t){let e=t.clientX-o.clientX,r=t.clientY-o.clientY;return Math.sqrt(e*e+r*r)}function ya(o,t){let e=t.x-o.x,r=t.y-o.y;return Math.atan2(r,e)*180/Math.PI}function rs(o,t){let e=t.clientX-o.clientX,r=t.clientY-o.clientY;return Math.atan2(r,e)*180/Math.PI}function be(o,t){return o===t?U.None:Math.abs(o)>=Math.abs(t)?o<0?U.Left:U.Right:t<0?U.Up:U.Down}function _a(o,t){let e=t.center,r=o.offsetDelta,i=o.prevDelta,s=o.prevInput;return(t.eventType===T.Start||s?.eventType===T.End)&&(i=o.prevDelta={x:s?.deltaX||0,y:s?.deltaY||0},r=o.offsetDelta={x:e.x,y:e.y}),{deltaX:i.x+(e.x-r.x),deltaY:i.y+(e.y-r.y)}}function Qr(o,t,e){return{x:t/o||0,y:e/o||0}}function wa(o,t){return ar(t[0],t[1])/ar(o[0],o[1])}function ba(o,t){return rs(t[1],t[0])-rs(o[1],o[0])}function va(o,t){let e=o.lastInterval||t,r=t.timeStamp-e.timeStamp,i,s,n,a;if(t.eventType!==T.Cancel&&(r>25||e.velocity===void 0)){let c=t.deltaX-e.deltaX,l=t.deltaY-e.deltaY,u=Qr(r,c,l);s=u.x,n=u.y,i=Math.abs(u.x)>Math.abs(u.y)?u.x:u.y,a=be(c,l),o.lastInterval=t}else i=e.velocity,s=e.velocityX,n=e.velocityY,a=e.direction;t.velocity=i,t.velocityX=s,t.velocityY=n,t.direction=a}function os(o,t){return`pointerId`in o?o.pointerId:t}function xa(o,t){o.movementOrigin=new Map(t.map((e,r)=>[os(e,r),{clientX:e.clientX,clientY:e.clientY}])),o.firstMovementTime=void 0}function pf(o,t){let e=t.pointers.map(os);if(o.movementOrigin?.size===e.length&&e.every(i=>o.movementOrigin.has(i))||xa(o,t.pointers),t.distancePerPointer=t.pointers.map((i,s)=>ar(o.movementOrigin.get(e[s]),i)),t.eventType&T.Move&&t.distancePerPointer.some(i=>i>0)&&(o.firstMovementTime??(o.firstMovementTime=t.timeStamp)),t.movementDeltaTime=o.firstMovementTime===void 0?0:t.timeStamp-o.firstMovementTime,t.eventType&(T.End|T.Cancel)){let i=t.changedPointers.map(s=>os(s,t.pointers.indexOf(s)));xa(o,t.pointers.filter((s,n)=>!i.includes(e[n])))}}function Pa(o,t){let{session:e}=o,{pointers:r}=t,{length:i}=r;e.firstInput||(e.firstInput=es(t)),i>1&&!e.firstMultiple?e.firstMultiple=es(t):i===1&&(e.firstMultiple=!1);let{firstInput:s,firstMultiple:n}=e,a=n?n.center:s.center,c=t.center=Jr(r);t.timeStamp=Date.now(),t.deltaTime=t.timeStamp-s.timeStamp,pf(e,t),t.angle=ya(a,c),t.distance=we(a,c);let{deltaX:l,deltaY:u}=_a(e,t);t.deltaX=l,t.deltaY=u,t.offsetDirection=be(t.deltaX,t.deltaY);let f=Qr(t.deltaTime,t.deltaX,t.deltaY);t.overallVelocityX=f.x,t.overallVelocityY=f.y,t.overallVelocity=Math.abs(f.x)>Math.abs(f.y)?f.x:f.y,t.scale=n?wa(n.pointers,r):1,t.rotation=n?ba(n.pointers,r):0,t.maxPointers=e.prevInput?t.pointers.length>e.prevInput.maxPointers?t.pointers.length:e.prevInput.maxPointers:t.pointers.length;let d=o.element;return ts(t.srcEvent.target,d)&&(d=t.srcEvent.target),t.target=d,va(e,t),t}function Ea(o,t,e){let r=e.pointers.length,i=e.changedPointers.length,s=t&T.Start&&r-i===0,n=t&(T.End|T.Cancel)&&r-i===0;e.isFirst=!!s,e.isFinal=!!n,s&&(o.session={}),e.eventType=t;let a=Pa(o,e);o.emit(`hammer.input`,a),o.recognize(a),o.session.prevInput=a}var cr=class{constructor(t){this.evEl=``,this.evWin=``,this.evTarget=``,this.domHandler=e=>{this.manager.options.enable&&this.handler(e)},this.manager=t,this.element=t.element,this.target=t.options.inputTarget||t.element}callback(t,e){Ea(this.manager,t,e)}init(){Xr(this.element,this.evEl,this.domHandler),Xr(this.target,this.evTarget,this.domHandler),Xr(Qi(this.element),this.evWin,this.domHandler)}destroy(){Kr(this.element,this.evEl,this.domHandler),Kr(this.target,this.evTarget,this.domHandler),Kr(Qi(this.element),this.evWin,this.domHandler)}};var mf={pointerdown:T.Start,pointermove:T.Move,pointerup:T.End,pointercancel:T.Cancel,pointerout:T.Cancel};var gf=`pointerdown`;var yf=`pointermove pointerup pointercancel`;var lr=class extends cr{constructor(t){super(t),this.evEl=gf,this.evWin=yf,this.store=this.manager.session.pointerEvents=[],this.init()}handler(t){let{store:e}=this,r=!1,i=mf[t.type],s=t.pointerType,n=s===`touch`,a=e.findIndex(c=>c.pointerId===t.pointerId);i&T.Start&&(t.buttons||n)?a<0&&(e.push(t),a=e.length-1):i&(T.End|T.Cancel)&&(r=!0),!(a<0)&&(e[a]=t,this.callback(i,{pointers:e,changedPointers:[t],eventType:i,pointerType:s,srcEvent:t}),r&&e.splice(a,1))}};var _f=[``,`webkit`,`Moz`,`MS`,`ms`,`o`];function Ta(o,t){let e=t[0].toUpperCase()+t.slice(1);for(let r of _f){let i=r?r+e:t;if(i in o)return i}}var wf=1;var Aa=2;var Sa={touchAction:`compute`,enable:!0,inputTarget:null,cssProps:{userSelect:`none`,userDrag:`none`,touchCallout:`none`,tapHighlightColor:`rgba(0,0,0,0)`}};var ur=class{constructor(t,e){this.options=s(r(r({},Sa),e),{cssProps:r(r({},Sa.cssProps),e.cssProps),inputTarget:e.inputTarget||t}),this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new lr(this),this.touchAction=new nr(this,this.options.touchAction),this.toggleCssProps(!0)}set(t){return Object.assign(this.options,t),t.touchAction&&this.touchAction.update(),t.inputTarget&&(this.input.destroy(),this.input.target=t.inputTarget,this.input.init()),this}stop(t){this.session.stopped=t?Aa:wf}recognize(t){let{session:e}=this;if(e.stopped)return;this.session.prevented&&t.srcEvent.preventDefault();let r,{recognizers:i}=this,{curRecognizer:s}=e;(!s||s&&s.state&P.Recognized)&&(s=e.curRecognizer=null);let n=0;for(;n<i.length;)r=i[n],e.stopped!==Aa&&(!s||r===s||r.canRecognizeWith(s))?r.recognize(t):r.reset(),!s&&r.state&(P.Began|P.Changed|P.Ended)&&(s=e.curRecognizer=r),n++}get(t){let{recognizers:e}=this;for(let r=0;r<e.length;r++)if(e[r].options.event===t)return e[r];return null}add(t){if(Array.isArray(t)){for(let r of t)this.add(r);return this}let e=this.get(t.options.event);return e&&this.remove(e),this.recognizers.push(t),t.manager=this,this.touchAction.update(),t}remove(t){if(Array.isArray(t)){for(let r of t)this.remove(r);return this}let e=typeof t==`string`?this.get(t):t;if(e){let{recognizers:r}=this,i=r.indexOf(e);i!==-1&&(r.splice(i,1),this.touchAction.update())}return this}on(t,e){if(!t||!e)return;let{handlers:r}=this;for(let i of _e(t))r[i]=r[i]||[],r[i].push(e)}off(t,e){if(!t)return;let{handlers:r}=this;for(let i of _e(t))e?r[i]&&r[i].splice(r[i].indexOf(e),1):delete r[i]}emit(t,e){let r=this.handlers[t]&&this.handlers[t].slice();if(!r||!r.length)return;let i=e;i.type=t,i.preventDefault=function(){e.srcEvent.preventDefault()};let s=0;for(;s<r.length;)r[s](i),s++}destroy(){this.toggleCssProps(!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}toggleCssProps(t){let{element:e}=this;if(e){for(let[r,i]of Object.entries(this.options.cssProps)){let s=Ta(e.style,r);t?(this.oldCssProps[s]=e.style[s],e.style[s]=i):e.style[s]=this.oldCssProps[s]||``}t||(this.oldCssProps={})}}};var bf=1;function Ma(){return bf++}function is(o){return o&P.Cancelled?`cancel`:o&P.Ended?`end`:o&P.Changed?`move`:o&P.Began?`start`:``}var ut=class{constructor(t){this.options=t,this.id=Ma(),this.state=P.Possible,this.simultaneous={},this.requireFail=[]}set(t){return Object.assign(this.options,t),this.manager.touchAction.update(),this}recognizeWith(t){if(Array.isArray(t)){for(let i of t)this.recognizeWith(i);return this}let e;if(typeof t==`string`){if(e=this.manager.get(t),!e)throw new Error(`Cannot find recognizer ${t}`)}else e=t;let{simultaneous:r}=this;return r[e.id]||(r[e.id]=e,e.recognizeWith(this)),this}dropRecognizeWith(t){if(Array.isArray(t)){for(let r of t)this.dropRecognizeWith(r);return this}let e;return typeof t==`string`?e=this.manager.get(t):e=t,e&&delete this.simultaneous[e.id],this}requireFailure(t){if(Array.isArray(t)){for(let i of t)this.requireFailure(i);return this}let e;if(typeof t==`string`){if(e=this.manager.get(t),!e)throw new Error(`Cannot find recognizer ${t}`)}else e=t;let{requireFail:r}=this;return r.indexOf(e)===-1&&(r.push(e),e.requireFailure(this)),this}dropRequireFailure(t){if(Array.isArray(t)){for(let r of t)this.dropRequireFailure(r);return this}let e;if(typeof t==`string`?e=this.manager.get(t):e=t,e){let r=this.requireFail.indexOf(e);r>-1&&this.requireFail.splice(r,1)}return this}hasRequireFailures(){return!!this.requireFail.find(t=>t.options.enable)}canRecognizeWith(t){return!!this.simultaneous[t.id]}emit(t){if(!t)return;let{state:e}=this;e<P.Ended&&this.manager.emit(this.options.event+is(e),t),this.manager.emit(this.options.event,t),t.additionalEvent&&this.manager.emit(t.additionalEvent,t),e>=P.Ended&&this.manager.emit(this.options.event+is(e),t)}tryEmit(t){this.canEmit()?this.emit(t):this.state=P.Failed}canEmit(){let t=0;for(;t<this.requireFail.length;){if(!(this.requireFail[t].state&(P.Failed|P.Possible)))return!1;t++}return!0}recognize(t){let e=r({},t);if(!this.options.enable){this.reset(),this.state=P.Failed;return}this.state&(P.Recognized|P.Cancelled|P.Failed)&&(this.state=P.Possible),this.state=this.process(e),this.state&(P.Began|P.Changed|P.Ended|P.Cancelled)&&this.tryEmit(e)}getEventNames(){return[this.options.event]}reset(){}};function vf(o){return Math.abs(((o+180)%360+360)%360-180)}function xf(o,t){return(t.distance===void 0||o.distance>=t.distance)&&(t.distancePerPointer===void 0||o.distancePerPointer.length>0&&o.distancePerPointer.every(e=>e>=t.distancePerPointer))&&(t.movementDeltaTime===void 0||o.movementDeltaTime>=t.movementDeltaTime)&&(t.rotation===void 0||vf(o.rotation)>=t.rotation)&&(t.scale===void 0||Math.abs(o.scale-1)>=t.scale)}var Qt=class extends ut{attrTest(t){let e=this.options.pointers;return e===0||t.pointers.length===e}coherentTest(t){let e=this.options.coherent;return!e?.length||e.some(r=>xf(t,r))}process(t){let{state:e}=this,{eventType:r}=t,i=e&(P.Began|P.Changed),s=this.attrTest(t);return i&&(r&T.Cancel||!s)?e|P.Cancelled:i||s?r&T.End?e|P.Ended:e&P.Began?e|P.Changed:P.Began:P.Failed}};var Pf=[``,`start`,`move`,`end`,`cancel`];var ve=class extends ut{constructor(t={}){super(r({enable:!0,event:`doubleclickdrag`,pointers:1,interval:500,time:350,threshold:28,dragThreshold:1,pixelsPerScale:120},t)),this._tapStart=null,this._lastTap=null,this._drag=null,this._emittedStart=!1}getTouchAction(){return[Kt]}getEventNames(){return Pf.map(t=>this.options.event+t)}process(t){let{options:e}=this;return t.pointers.length===e.pointers?t.eventType&T.Start?this._handleStart(t):t.eventType&T.Move?this._handleMove(t):t.eventType&T.Cancel?this._handleEnd(t,!0):t.eventType&T.End?this._handleEnd(t,!1):P.Failed:(this.reset(),P.Failed)}reset(){this._tapStart=null,this._lastTap=null,this._drag=null,this._emittedStart=!1}emit(t){if(t){if(this.state===P.Began){if(!this._drag?.active||this._emittedStart)return;this._emittedStart=!0,this.manager.emit(`${this.options.event}start`,t),this.manager.emit(this.options.event,t);return}if(this.state===P.Changed){if(!this._emittedStart)return;this.manager.emit(`${this.options.event}move`,t),this.manager.emit(this.options.event,t);return}if(this.state===P.Ended){if(!this._emittedStart)return;this.manager.emit(this.options.event,t),this.manager.emit(`${this.options.event}end`,t),this._emittedStart=!1;return}if(this.state===P.Cancelled){if(!this._emittedStart)return;this.manager.emit(this.options.event,t),this.manager.emit(`${this.options.event}cancel`,t),this._emittedStart=!1}}}_handleStart(t){let e=this._getPointerId(t);return this._lastTap&&this._isTapMatch(t,this._lastTap)?(this._tapStart=null,this._lastTap=null,this._drag={startCenter:t.center,pointerId:e,active:!1},this._emittedStart=!1,P.Began):(this._tapStart={center:t.center,timeStamp:t.timeStamp,pointerId:e},this._lastTap=null,this._drag=null,this._emittedStart=!1,P.Failed)}_handleMove(t){if(!this._drag||!this._isSamePointer(t,this._drag.pointerId))return P.Failed;let e=this._drag.startCenter.y-t.center.y;return!this._drag.active&&Math.abs(e)<this.options.dragThreshold?P.Began:(this._drag.active=!0,t.scale=Math.pow(2,e/this.options.pixelsPerScale),this._emittedStart?P.Changed:P.Began)}_handleEnd(t,e){if(this._drag&&this._isSamePointer(t,this._drag.pointerId)){let{active:r,startCenter:i}=this._drag;if(this._drag=null,this._tapStart=null,this._lastTap=null,!r)return this._emittedStart=!1,P.Failed;let s=i.y-t.center.y;return t.scale=Math.pow(2,s/this.options.pixelsPerScale),e?P.Cancelled:P.Ended}return!this._tapStart||!this._isSamePointer(t,this._tapStart.pointerId)?(e&&this.reset(),P.Failed):(this._isValidTap(t)?this._lastTap={center:t.center,timeStamp:t.timeStamp,pointerId:this._tapStart.pointerId}:this._lastTap=null,this._tapStart=null,P.Failed)}_isTapMatch(t,e){return t.timeStamp-e.timeStamp<=this.options.interval&&we(t.center,e.center)<=this.options.threshold}_isValidTap(t){return t.deltaTime<=this.options.time&&t.distance<=this.options.threshold}_getPointerId(t){return`pointerId`in t.srcEvent?t.srcEvent.pointerId:null}_isSamePointer(t,e){return e===null||this._getPointerId(t)===e}};var te=class extends ut{constructor(t={}){super(r({enable:!0,event:`tap`,pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},t)),this.pTime=null,this.pCenter=null,this._timer=null,this._input=null,this.count=0}getTouchAction(){return[Kt]}process(t){let{options:e}=this,r=t.pointers.length===e.pointers,i=t.distance<e.threshold,s=t.deltaTime<e.time;if(this.reset(),t.eventType&T.Start&&this.count===0)return this.failTimeout();if(i&&s&&r){if(t.eventType!==T.End)return this.failTimeout();let n=this.pTime?t.timeStamp-this.pTime<e.interval:!0,a=!this.pCenter||we(this.pCenter,t.center)<e.posThreshold;if(this.pTime=t.timeStamp,this.pCenter=t.center,!a||!n?this.count=1:this.count+=1,this._input=t,this.count%e.taps===0)return this.hasRequireFailures()?(this._timer=setTimeout(()=>{this.state=P.Recognized,this.tryEmit(this._input)},e.interval),P.Began):P.Recognized}return P.Failed}failTimeout(){return this._timer=setTimeout(()=>{this.state=P.Failed},this.options.interval),P.Failed}reset(){clearTimeout(this._timer)}emit(t){this.state===P.Recognized&&(t.tapCount=this.count,this.manager.emit(this.options.event,t))}};var xe=class extends Qt{constructor(){super(...arguments),this.wheelSession=null,this.wheelSessionUnsubscribe=null,this.handleWheelSessionEvent=t=>{t.device===`trackpad`&&this.handleTrackpadEvent(t)}}set(t){let i=t,{wheelSession:e}=i,r=u(i,[`wheelSession`]);return e&&e!==this.wheelSession&&(this.wheelSessionUnsubscribe?.(),this.wheelSessionUnsubscribe=null,this.wheelSession=e),super.set(r),this.updateWheelSessionSubscription(),this}getTrackpadInput(t,e={}){let{srcEvent:r$10}=t,i=e.deltaX??t.deltaX,s=e.deltaY??t.deltaY,n=be(i,s),a=Math.sqrt(t.deltaX*t.deltaX+t.deltaY*t.deltaY),c=r$10;return r({pointers:[c,c],changedPointers:[c,c],pointerType:`trackpad`,srcEvent:c,eventType:t.eventType,timeStamp:t.timeStamp,deltaTime:t.deltaTime,center:t.center,deltaX:i,deltaY:s,angle:Math.atan2(s,i)*180/Math.PI,distance:Math.sqrt(i*i+s*s),distancePerPointer:[a,a],movementDeltaTime:t.deltaTime,scale:1,rotation:0,direction:n,offsetDirection:n,velocity:t.velocity,velocityX:t.velocityX,velocityY:t.velocityY,overallVelocity:t.overallVelocity,overallVelocityX:t.overallVelocityX,overallVelocityY:t.overallVelocityY,maxPointers:2,target:r$10.target||this.manager.element,additionalEvent:``},e)}updateWheelSessionSubscription(){let t=!!(this.wheelSession&&this.options.enable&&this.options.trackpad&&this.options.pointers===2);t&&!this.wheelSessionUnsubscribe?this.wheelSessionUnsubscribe=this.wheelSession.on(this.handleWheelSessionEvent):!t&&this.wheelSessionUnsubscribe&&(this.wheelSessionUnsubscribe(),this.wheelSessionUnsubscribe=null)}};var Ef=[``,`start`,`move`,`end`,`cancel`,`up`,`down`,`left`,`right`];var Nt=class extends xe{constructor(t={}){super(r({enable:!0,pointers:1,event:`pan`,threshold:10,direction:U.All,trackpad:!1,coherent:[]},t)),this.trackpadGesture=!1,this.pX=null,this.pY=null}getTouchAction(){let{options:{direction:t}}=this,e=[];return t&U.Horizontal&&e.push(sr),t&U.Vertical&&e.push(ir),e}getEventNames(){return Ef.map(t=>this.options.event+t)}directionTest(t){let{options:e}=this,r=!0,{distance:i}=t,{direction:s}=t,n=t.deltaX,a=t.deltaY;return s&e.direction||(e.direction&U.Horizontal?(s=n===0?U.None:n<0?U.Left:U.Right,r=n!==this.pX,i=Math.abs(t.deltaX)):(s=a===0?U.None:a<0?U.Up:U.Down,r=a!==this.pY,i=Math.abs(t.deltaY))),t.direction=s,r&&i>e.threshold&&!!(s&e.direction)}attrTest(t){let e=!!(this.state&P.Began),r=!(this.options.coherent?.length&&t.eventType&(T.End|T.Cancel));return super.attrTest(t)&&(e||r&&this.coherentTest(t)&&this.directionTest(t))}emit(t){this.pX=t.deltaX,this.pY=t.deltaY;let e=U[t.direction].toLowerCase();e&&(t.additionalEvent=this.options.event+e),super.emit(t)}handleTrackpadEvent(t){t.isFirst&&(this.trackpadGesture=!t.srcEvent.ctrlKey,!this.trackpadGesture&&this.state&(P.Recognized|P.Cancelled|P.Failed)&&(this.state=P.Possible)),this.trackpadGesture&&(this.recognize(this.getTrackpadInput(t,{deltaX:-t.deltaX,deltaY:-t.deltaY,velocity:-t.velocity,velocityX:-t.velocityX,velocityY:-t.velocityY,overallVelocity:-t.overallVelocity,overallVelocityX:-t.overallVelocityX,overallVelocityY:-t.overallVelocityY})),t.isFinal&&(this.trackpadGesture=!1))}};var Tf=[``,`start`,`move`,`end`,`cancel`,`in`,`out`];var Pe=class extends xe{constructor(t={}){super(r({enable:!0,event:`pinch`,threshold:0,pointers:2,trackpad:!1,coherent:[]},t)),this.trackpadGesture=!1}getTouchAction(){return[Jt]}getEventNames(){return Tf.map(t=>this.options.event+t)}attrTest(t){let e=!!this.options.coherent?.length,r=!!(this.state&P.Began),i=!(e&&t.eventType&(T.End|T.Cancel));return super.attrTest(t)&&(r||i&&(e?this.coherentTest(t):Math.abs(t.scale-1)>this.options.threshold))}emit(t){if(t.scale!==1){let e=t.scale<1?`in`:`out`;t.additionalEvent=this.options.event+e}super.emit(t)}handleTrackpadEvent(t){t.isFirst&&(this.trackpadGesture=t.srcEvent.ctrlKey,!this.trackpadGesture&&this.state&(P.Recognized|P.Cancelled|P.Failed)&&(this.state=P.Possible)),this.trackpadGesture&&(this.recognize(this.getTrackpadInput(t,{deltaX:0,deltaY:0,velocity:0,velocityX:0,velocityY:0,overallVelocity:0,overallVelocityX:0,overallVelocityY:0,scale:Math.exp(-t.deltaY/100)})),t.isFinal&&(this.trackpadGesture=!1))}};var bt=class{constructor(t,e,r){this.element=t,this.callback=e,this.options=r}listen(t,e){e?this.element.addEventListener(t,this.handleEvent,{passive:!1}):this.element.removeEventListener(t,this.handleEvent)}};var Cf=(typeof navigator<`u`&&navigator.userAgent?navigator.userAgent.toLowerCase():``).indexOf(`firefox`)!==-1;var If=40;var Rf=.25;var to=class extends bt{constructor(t,e,r){r.enable=r.enable??!1,super(t,e,r),this.handleEvent=i=>{if(!this.options.enable)return;let s=i.deltaY;globalThis.WheelEvent&&(Cf&&i.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(s/=globalThis.devicePixelRatio),i.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(s*=If)),i.shiftKey&&s&&(s=s*Rf),this.callback({type:`wheel`,center:{x:i.clientX,y:i.clientY},delta:-s,device:this.options.wheelSession?.device??`unknown`,srcEvent:i,pointerType:`mouse`,target:i.target})},r.enable&&(this.wheelSessionUnsubscribe=this.options.wheelSession?.on(()=>{}),this.listen(`wheel`,!0))}destroy(){this.listen(`wheel`,!1),this.wheelSessionUnsubscribe?.(),this.wheelSessionUnsubscribe=void 0}enableEventType(t,e){t===`wheel`&&this.options.enable!==e&&(this.options.enable=e,e&&!this.wheelSessionUnsubscribe&&(this.wheelSessionUnsubscribe=this.options.wheelSession?.on(()=>{})),this.listen(`wheel`,e),e||(this.wheelSessionUnsubscribe?.(),this.wheelSessionUnsubscribe=void 0))}};var Lf=4.000244140625;var Ia=40;var kf=0;var Of=1;var Df=40;var Ra=40;var Bf=120;var Uf={classificationDelay:32,endDelay:80};var eo=class{constructor(t,e={}){this.subscriptions=new Map,this.session=null,this.classificationTimer=null,this.endTimer=null,this.pressedControlKeys=new Set,this.listeningForControlKeys=!1,this.handleEvent=r=>{if(!this.hasSubscribers)return`unknown`;let i=Nf(r,this.pressedControlKeys.size>0),s=this.session;if(s&&i.timeStamp-s.lastTimeStamp>=this.options.endDelay){if(this.end(),!this.hasSubscribers)return`unknown`;s=null}s?(this.scheduleEnd(),this.addSample(s,i)):(s=this.startPendingSession(i),this.scheduleEnd());let{device:n}=s;return n===`unknown`&&(n=ss(s.samples,!1),n!==`unknown`&&this.begin(s,n)),n},this.finishClassification=()=>{if(this.classificationTimer=null,!this.session||this.session.device!==`unknown`)return;let r=this.session,i=ss(r.samples,!0);this.begin(r,i===`unknown`?`mouse`:i)},this.end=()=>{if(!this.session)return;if(this.session.device===`unknown`){let i=this.session,s=ss(i.samples,!0);this.begin(i,s===`unknown`?`mouse`:s)}if(!this.session)return;let r=this.session;this.emit(T.End,r.lastEvent),this.reset()},this.handleKeyDown=r=>{r.key===`Control`&&this.pressedControlKeys.add(r.code||r.key)},this.handleKeyUp=r=>{r.key===`Control`&&(r.code?this.pressedControlKeys.delete(r.code):this.pressedControlKeys.clear())},this.handleWindowBlur=()=>{this.pressedControlKeys.clear()},this.element=t,this.options=r(r({},Uf),e),this.element?.addEventListener(`wheel`,this.handleEvent,{passive:!0})}get hasSubscribers(){return this.subscriptions.size>0}get device(){return this.session?.device??`unknown`}on(t){let e={listener:t};return this.subscriptions.set(t,e),this.updateControlKeyEventListeners(),()=>{this.subscriptions.get(t)===e&&this.off(t)}}off(t){this.subscriptions.delete(t),this.updateControlKeyEventListeners(),this.hasSubscribers||this.reset()}cancel(){let t=this.session;t&&t.device!==`unknown`&&this.emit(T.Cancel,t.lastEvent),this.reset()}destroy(){this.cancel(),this.subscriptions.clear(),this.updateControlKeyEventListeners(),this.element?.removeEventListener(`wheel`,this.handleEvent)}startPendingSession(t){let e={samples:[t],device:`unknown`,firstTimeStamp:t.timeStamp,lastTimeStamp:t.timeStamp,totalDeltaX:t.deltaX,totalDeltaY:t.deltaY,velocityX:0,velocityY:0,lastEvent:t.event};return this.session=e,this.classificationTimer=globalThis.setTimeout(this.finishClassification,this.options.classificationDelay),e}addSample(t,e){if(t.samples.push(e),t.lastTimeStamp=e.timeStamp,t.lastEvent=e.event,t.totalDeltaX+=e.deltaX,t.totalDeltaY+=e.deltaY,t.device!==`unknown`){let r=t.samples[t.samples.length-2],i=e.timeStamp-r.timeStamp;t.velocityX=i>0?e.deltaX/i:0,t.velocityY=i>0?e.deltaY/i:0,this.emit(T.Move,e.event,{velocityX:t.velocityX,velocityY:t.velocityY})}}begin(t,e){t.device=e,this.clearClassificationTimer(),this.emit(T.Start,t.samples[0].event);let r=t.lastTimeStamp-t.firstTimeStamp;t.velocityX=r>0?t.totalDeltaX/r:0,t.velocityY=r>0?t.totalDeltaY/r:0,this.emit(T.Move,t.lastEvent,{velocityX:t.velocityX,velocityY:t.velocityY})}scheduleEnd(){this.clearEndTimer(),this.endTimer=globalThis.setTimeout(this.end,this.options.endDelay)}emit(t,e,r){let i=this.session;if(!i||i.device===`unknown`)return;let s=t===T.Start,n=t===T.End||t===T.Cancel,a=s?i.firstTimeStamp:i.lastTimeStamp,c=s?0:Math.max(0,a-i.firstTimeStamp),l=s?0:i.totalDeltaX,u=s?0:i.totalDeltaY,f=c>0?l/c:0,d=c>0?u/c:0,p=s?0:r?.velocityX??i.velocityX,m=s?0:r?.velocityY??i.velocityY,g={eventType:t,device:i.device,srcEvent:e,timeStamp:a,center:{x:e.clientX,y:e.clientY},deltaX:l,deltaY:u,deltaTime:c,velocity:Math.abs(p)>Math.abs(m)?p:m,velocityX:p,velocityY:m,overallVelocity:Math.abs(f)>Math.abs(d)?f:d,overallVelocityX:f,overallVelocityY:d,isFirst:s,isFinal:n};for(let{listener:y}of[...this.subscriptions.values()])y(g)}reset(){this.clearClassificationTimer(),this.clearEndTimer(),this.session=null}clearClassificationTimer(){this.classificationTimer!==null&&(globalThis.clearTimeout(this.classificationTimer),this.classificationTimer=null)}clearEndTimer(){this.endTimer!==null&&(globalThis.clearTimeout(this.endTimer),this.endTimer=null)}updateControlKeyEventListeners(){let t=this.hasSubscribers,e=jf();!e||t===this.listeningForControlKeys||(this.listeningForControlKeys=t,t?(e.addEventListener(`keydown`,this.handleKeyDown,!0),e.addEventListener(`keyup`,this.handleKeyUp,!0),e.addEventListener(`blur`,this.handleWindowBlur)):(e.removeEventListener(`keydown`,this.handleKeyDown,!0),e.removeEventListener(`keyup`,this.handleKeyUp,!0),e.removeEventListener(`blur`,this.handleWindowBlur),this.pressedControlKeys.clear()))}};function jf(){return typeof window<`u`?window:globalThis.document?.defaultView}function Nf(o,t){let e=o.deltaX,r=o.deltaY;return o.deltaMode===Of&&(e*=Ia,r*=Ia),{event:o,timeStamp:o.timeStamp,deltaX:e,deltaY:r,isControlKeyDown:t}}function ss(o,t){return o.some(({event:e,isControlKeyDown:r})=>e.ctrlKey&&!r)?`trackpad`:o.some(({event:e})=>e.deltaMode!==kf)||o.some(Vf)||o.every(({event:e})=>{let r=e.wheelDelta;return r!==void 0&&Math.abs(r)%40===0})?`mouse`:o.some(({deltaX:e})=>e!==0)||o.length>1&&zf(o)?`trackpad`:t?`mouse`:`unknown`}function Vf({event:o,deltaX:t,deltaY:e}){if(t!==0||e===0)return!1;let r=Math.abs(e/Lf);if(Number.isInteger(r))return!0;let i=o.wheelDelta;return typeof i==`number`&&i!==0&&i%Bf===0}function zf(o){for(let t=0;t<o.length;t++){let e=o[t];if(Math.abs(e.deltaX)>Ra||Math.abs(e.deltaY)>Ra||t>0&&e.timeStamp-o[t-1].timeStamp>Df)return!1}return!0}var La=[`mousedown`,`mousemove`,`mouseup`,`mouseover`,`mouseout`,`mouseenter`,`mouseleave`];var ro=class extends bt{constructor(t,e,r$11){super(t,e,r({enable:!0},r$11)),this.handleEvent=s=>{this.handleOverEvent(s),this.handleOutEvent(s),this.handleEnterEvent(s),this.handleLeaveEvent(s),this.handleMoveEvent(s)},this.pressed=!1;let{enable:i=!1}=this.options;this.enableMoveEvent=i,this.enableLeaveEvent=i,this.enableEnterEvent=i,this.enableOutEvent=i,this.enableOverEvent=i,i&&La.forEach(s=>this.listen(s,!0))}destroy(){La.forEach(t=>this.listen(t,!1))}enableEventType(t,e){switch(t){case`pointermove`:this.enableMoveEvent!==e&&(this.enableMoveEvent=e,this.listen(`mousedown`,e),this.listen(`mousemove`,e),this.listen(`mouseup`,e));break;case`pointerover`:this.enableOverEvent!==e&&(this.enableOverEvent=e,this.listen(`mouseover`,e));break;case`pointerout`:this.enableOutEvent!==e&&(this.enableOutEvent=e,this.listen(`mouseout`,e));break;case`pointerenter`:this.enableEnterEvent!==e&&(this.enableEnterEvent=e,this.listen(`mouseenter`,e));break;case`pointerleave`:this.enableLeaveEvent!==e&&(this.enableLeaveEvent=e,this.listen(`mouseleave`,e));break;default:}}handleOverEvent(t){this.enableOverEvent&&t.type===`mouseover`&&this._emit(`pointerover`,t)}handleOutEvent(t){this.enableOutEvent&&t.type===`mouseout`&&this._emit(`pointerout`,t)}handleEnterEvent(t){this.enableEnterEvent&&t.type===`mouseenter`&&this._emit(`pointerenter`,t)}handleLeaveEvent(t){this.enableLeaveEvent&&t.type===`mouseleave`&&this._emit(`pointerleave`,t)}handleMoveEvent(t){if(this.enableMoveEvent)switch(t.type){case`mousedown`:t.button>=0&&(this.pressed=!0);break;case`mousemove`:t.buttons===0&&(this.pressed=!1),this.pressed||this._emit(`pointermove`,t);break;case`mouseup`:this.pressed=!1;break;default:}}_emit(t,e){this.callback({type:t,center:{x:e.clientX,y:e.clientY},srcEvent:e,pointerType:`mouse`,target:e.target})}};var ka=[`keydown`,`keyup`];var oo=class extends bt{constructor(t,e,r$12){super(t,e,r({enable:!0,tabIndex:0},r$12)),this.handleEvent=s=>{let n=s.target||s.srcElement;n.tagName===`INPUT`&&n.type===`text`||n.tagName===`TEXTAREA`||(this.enableDownEvent&&s.type===`keydown`&&this.callback({type:`keydown`,srcEvent:s,key:s.key,target:s.target}),this.enableUpEvent&&s.type===`keyup`&&this.callback({type:`keyup`,srcEvent:s,key:s.key,target:s.target}))};let{enable:i=!1}=this.options;this.enableDownEvent=i,this.enableUpEvent=i,t.tabIndex=this.options.tabIndex,t.style.outline=`none`,i&&ka.forEach(s=>this.listen(s,!0))}destroy(){ka.forEach(t=>this.listen(t,!1))}enableEventType(t,e){t===`keydown`&&this.enableDownEvent!==e&&(this.enableDownEvent=e,this.listen(t,e)),t===`keyup`&&this.enableUpEvent!==e&&(this.enableUpEvent=e,this.listen(t,e))}};var io=class extends bt{constructor(t,e,r){r.enable=r.enable??!1,super(t,e,r),this.handleEvent=i=>{this.options.enable&&this.callback({type:`contextmenu`,center:{x:i.clientX,y:i.clientY},srcEvent:i,pointerType:`mouse`,target:i.target})},r.enable&&this.listen(`contextmenu`,!0)}destroy(){this.listen(`contextmenu`,!1)}enableEventType(t,e){t===`contextmenu`&&this.options.enable!==e&&(this.options.enable=e,this.listen(`contextmenu`,e))}};var Ff={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4};var Wf=0;var Gf=1;var Yf=2;var $f=1;var Hf=2;var qf=4;function Oa(o){let t=Ff[o.srcEvent.type];if(!t)return null;let{buttons:e,button:r}=o.srcEvent,i=!1,s=!1,n=!1;return t===2?(i=!!(e&$f),s=!!(e&qf),n=!!(e&Hf)):(i=r===Wf,s=r===Gf,n=r===Yf),{leftButton:i,middleButton:s,rightButton:n}}function Da(o,t){let e=o.center;if(!e)return null;let r=t.getBoundingClientRect(),i=r.width/t.offsetWidth||1,s=r.height/t.offsetHeight||1;return{center:e,offsetCenter:{x:(e.x-r.left-t.clientLeft)/i,y:(e.y-r.top-t.clientTop)/s}}}var Zf={srcElement:`root`,priority:0};var so=class{constructor(t,e){this.handleEvent=r=>{if(this.isEmpty())return;let i=this._normalizeEvent(r),s=r.srcEvent.target;for(;s&&s!==i.rootElement;){if(this._emit(i,s),i.handled)return;s=s.parentNode}this._emit(i,`root`)},this.eventManager=t,this.recognizerName=e,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(t,e,r$13,i=!1,s=!1){let{handlers:n,handlersByElement:a}=this,c=r(r({},Zf),r$13),l=a.get(c.srcElement);l||(l=[],a.set(c.srcElement,l));let u={type:t,handler:e,srcElement:c.srcElement,priority:c.priority};i&&(u.once=!0),s&&(u.passive=!0),n.push(u),this._active=this._active||!u.passive;let f=l.length-1;for(;f>=0&&!(l[f].priority>=u.priority);)f--;l.splice(f+1,0,u)}remove(t,e){let{handlers:r,handlersByElement:i}=this;for(let s=r.length-1;s>=0;s--){let n=r[s];if(n.type===t&&n.handler===e){r.splice(s,1);let a=i.get(n.srcElement);a.splice(a.indexOf(n),1),a.length===0&&i.delete(n.srcElement)}}this._active=r.some(s=>!s.passive)}_emit(t,e){let r$14=this.handlersByElement.get(e);if(r$14){let i=!1,s$3=()=>{t.handled=!0},n=()=>{t.handled=!0,i=!0},a=[];for(let c=0;c<r$14.length;c++){let{type:l,handler:u,once:f}=r$14[c];if(u(s(r({},t),{type:l,stopPropagation:s$3,stopImmediatePropagation:n})),f&&a.push(r$14[c]),i)break}for(let c=0;c<a.length;c++){let{type:l,handler:u}=a[c];this.remove(l,u)}}}_normalizeEvent(t){let e=this.eventManager.getElement();return s(r(r(r({},t),Oa(t)),Da(t,e)),{preventDefault:()=>{t.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:e})}};function Xf(o){if(`recognizer`in o)return o;let t,e=Array.isArray(o)?[...o]:[o];if(typeof e[0]==`function`)t=new(e.shift())(e.shift()||{});else t=e.shift();return{recognizer:t,recognizeWith:typeof e[0]==`string`?[e[0]]:e[0],requireFailure:typeof e[1]==`string`?[e[1]]:e[1]}}var fr=class{constructor(t=null,e={}){if(this._onBasicInput=r=>{this.manager.emit(r.srcEvent.type,r)},this._onOtherEvent=r=>{this.manager.emit(r.type,r)},this.options=r({recognizers:[],events:{},touchAction:`compute`,tabIndex:0,cssProps:{}},e),this.events=new Map,this.element=t,this.wheelSession=new eo(t),!!t){this.manager=new ur(t,this.options);for(let r of this.options.recognizers){let{recognizer:i,recognizeWith:s,requireFailure:n}=Xf(r);this.manager.add(i),s&&i.recognizeWith(s),n&&i.requireFailure(n)}this.manager.on(`hammer.input`,this._onBasicInput),this.wheelInput=new to(t,this._onOtherEvent,{enable:!1,wheelSession:this.wheelSession}),this.moveInput=new ro(t,this._onOtherEvent,{enable:!1}),this.keyInput=new oo(t,this._onOtherEvent,{enable:!1,tabIndex:e.tabIndex}),this.contextmenuInput=new io(t,this._onOtherEvent,{enable:!1}),this.on(this.options.events)}}getElement(){return this.element}destroy(){if(!this.element){this.wheelSession.destroy();return}this.wheelInput.destroy(),this.wheelSession.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy()}on(t,e,r){this._addEventHandler(t,e,r,!1)}once(t,e,r){this._addEventHandler(t,e,r,!0)}watch(t,e,r){this._addEventHandler(t,e,r,!1,!0)}off(t,e){this._removeEventHandler(t,e)}emit(t){this.manager?.emit(t.type,t)}_toggleRecognizer(t,e){let{manager:r}=this;if(!r)return;let i=r.get(t);i&&(i.set({enable:e,wheelSession:this.wheelSession}),r.touchAction.update()),this.wheelInput?.enableEventType(t,e),this.moveInput?.enableEventType(t,e),this.keyInput?.enableEventType(t,e),this.contextmenuInput?.enableEventType(t,e)}_addEventHandler(t,e,r,i,s){if(typeof t!=`string`){r=e;for(let[l,u]of Object.entries(t))this._addEventHandler(l,u,r,i,s);return}let{manager:n,events:a}=this;if(!n)return;let c=a.get(t);if(!c){let l=this._getRecognizerName(t)||t;c=new so(this,l),a.set(t,c),n&&n.on(t,c.handleEvent)}c.add(t,e,r,i,s),c.isEmpty()||this._toggleRecognizer(c.recognizerName,!0)}_removeEventHandler(t,e){if(typeof t!=`string`){for(let[s,n]of Object.entries(t))this._removeEventHandler(s,n);return}let{events:r}=this,i=r.get(t);if(i&&(i.remove(t,e),i.isEmpty())){let{recognizerName:s}=i,n=!1;for(let a of r.values())if(a.recognizerName===s&&!a.isEmpty()){n=!0;break}n||this._toggleRecognizer(s,!1)}}_getRecognizerName(t){return this.manager.recognizers.find(e=>e.getEventNames().includes(t))?.options.event}};var ns={DEFAULT:`default`,LNGLAT:`lnglat`,METER_OFFSETS:`meter-offsets`,LNGLAT_OFFSETS:`lnglat-offsets`,CARTESIAN:`cartesian`};Object.defineProperty(ns,"IDENTITY",{get:()=>(A.deprecated(`COORDINATE_SYSTEM.IDENTITY`,`COORDINATE_SYSTEM.CARTESIAN`)(),ns.CARTESIAN)});var z={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0};var ee={common:0,meters:1,pixels:2};var Ee={click:`onClick`,dblclick:`onClick`,panstart:`onDragStart`,panmove:`onDrag`,panend:`onDragEnd`};var as={multipan:[Nt,{threshold:10,pointers:2,trackpad:!0}],pinch:[Pe,{trackpad:!0},null,[`multipan`]],pan:[Nt,{threshold:1},[`pinch`],[`multipan`]],dblclick:[te,{event:`dblclick`,taps:2,enable:!1}],dblclickdrag:[ve,{event:`dblclickdrag`,enable:!1},[`dblclick`],null],click:[te,{event:`click`},[`dblclickdrag`],[`dblclick`,`dblclickdrag`]]};var Kf=`const SMOOTH_EDGE_RADIUS: f32 = 0.5;
419
+
420
+ struct VertexGeometry {
421
+ position: vec4<f32>,
422
+ worldPosition: vec3<f32>,
423
+ worldPositionAlt: vec3<f32>,
424
+ normal: vec3<f32>,
425
+ uv: vec2<f32>,
426
+ pickingColor: vec3<f32>,
427
+ };
428
+
429
+ var<private> geometry_: VertexGeometry = VertexGeometry(
430
+ vec4<f32>(0.0, 0.0, 1.0, 0.0),
431
+ vec3<f32>(0.0, 0.0, 0.0),
432
+ vec3<f32>(0.0, 0.0, 0.0),
433
+ vec3<f32>(0.0, 0.0, 0.0),
434
+ vec2<f32>(0.0, 0.0),
435
+ vec3<f32>(0.0, 0.0, 0.0)
436
+ );
437
+
438
+ struct FragmentGeometry {
439
+ uv: vec2<f32>,
440
+ };
441
+
442
+ var<private> fragmentGeometry: FragmentGeometry;
443
+
444
+ fn smoothedge(edge: f32, x: f32) -> f32 {
445
+ return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);
446
+ }
447
+ `;var Ba=`#define SMOOTH_EDGE_RADIUS 0.5`;var no={name:`geometry`,source:Kf,vs:`${Ba}
448
+
449
+ struct VertexGeometry {
450
+ vec4 position;
451
+ vec3 worldPosition;
452
+ vec3 worldPositionAlt;
453
+ vec3 normal;
454
+ vec2 uv;
455
+ vec3 pickingColor;
456
+ } geometry = VertexGeometry(
457
+ vec4(0.0, 0.0, 1.0, 0.0),
458
+ vec3(0.0),
459
+ vec3(0.0),
460
+ vec3(0.0),
461
+ vec2(0.0),
462
+ vec3(0.0)
463
+ );
464
+ `,fs:`${Ba}
465
+
466
+ struct FragmentGeometry {
467
+ vec2 uv;
468
+ };
469
+ FragmentGeometry geometry;
470
+
471
+ float smoothedge(float edge, float x) {
472
+ return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x);
473
+ }
474
+ `};function th(o,t){if(o===t)return!0;if(Array.isArray(o)){let e=o.length;if(!t||t.length!==e)return!1;for(let r=0;r<e;r++)if(o[r]!==t[r])return!1;return!0}return!1}function vt(o){let t={},e;return r=>{for(let i in r)if(!th(r[i],t[i])){e=o(r),t=r;break}return e}}var Ua=[0,0,0,0];var eh=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];var ja=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];var rh=[0,0,0];var Na=[0,0,0];var oh={default:-1,cartesian:0,lnglat:1,"meter-offsets":2,"lnglat-offsets":3};function re(o){let t=oh[o];if(t===void 0)throw new Error(`Invalid coordinateSystem: ${o}`);return t}var ih=vt(nh);function cs(o,t,e=Na){e.length<3&&(e=[e[0],e[1],0]);let r=e,i,s=!0;switch(t===`lnglat-offsets`||t===`meter-offsets`?i=e:i=o.isGeospatial?[Math.fround(o.longitude),Math.fround(o.latitude),0]:null,o.projectionMode){case z.WEB_MERCATOR:(t===`lnglat`||t===`cartesian`)&&(i=[0,0,0],s=!1);break;case z.WEB_MERCATOR_AUTO_OFFSET:t===`lnglat`?r=i:t===`cartesian`&&(r=[Math.fround(o.center[0]),Math.fround(o.center[1]),0],i=o.unprojectPosition(r),r[0]-=e[0],r[1]-=e[1],r[2]-=e[2]);break;case z.IDENTITY:r=o.position.map(Math.fround),r[2]=r[2]||0;break;case z.GLOBE:s=!1,i=null;break;default:s=!1}return{geospatialOrigin:i,shaderCoordinateOrigin:r,offsetMode:s}}function sh(o,t,e){let{viewMatrixUncentered:r,projectionMatrix:i}=o,{viewMatrix:s,viewProjectionMatrix:n}=o,a=Ua,c=Ua,l=o.cameraPosition,{geospatialOrigin:u,shaderCoordinateOrigin:f,offsetMode:d}=cs(o,t,e);return d&&(c=o.projectPosition(u||f),l=[l[0]-c[0],l[1]-c[1],l[2]-c[2]],c[3]=1,a=ir$3.transformMat4([],c,n),s=r||s,n=zi$1.multiply([],i,s),n=zi$1.multiply([],n,eh)),{viewMatrix:s,viewProjectionMatrix:n,projectionCenter:a,originCommon:c,cameraPosCommon:l,shaderCoordinateOrigin:f,geospatialOrigin:u}}function Va({viewport:o,devicePixelRatio:t=1,modelMatrix:e=null,coordinateSystem:r=`default`,coordinateOrigin:i=Na,autoWrapLongitude:s=!1}){r==="default"&&(r=o.isGeospatial?`lnglat`:`cartesian`);let n=ih({viewport:o,devicePixelRatio:t,coordinateSystem:r,coordinateOrigin:i});return n.wrapLongitude=s,n.modelMatrix=e||ja,n}function nh({viewport:o,devicePixelRatio:t,coordinateSystem:e,coordinateOrigin:r}){let{projectionCenter:i,viewProjectionMatrix:s,originCommon:n,cameraPosCommon:a,shaderCoordinateOrigin:c,geospatialOrigin:l}=sh(o,e,r),u=o.getDistanceScales(),f=[o.width*t,o.height*t],d=ir$3.transformMat4([],[0,0,-o.focalDistance,1],o.projectionMatrix)[3]||1,p={coordinateSystem:re(e),projectionMode:o.projectionMode,coordinateOrigin:c,commonOrigin:n.slice(0,3),center:i,pseudoMeters:!!o._pseudoMeters,viewportSize:f,devicePixelRatio:t,focalDistance:d,commonUnitsPerMeter:u.unitsPerMeter,commonUnitsPerWorldUnit:u.unitsPerMeter,commonUnitsPerWorldUnit2:rh,scale:o.scale,wrapLongitude:!1,viewProjectionMatrix:s,modelMatrix:ja,cameraPosition:a};if(l){let m=o.getDistanceScales(l);switch(e){case`meter-offsets`:p.commonUnitsPerWorldUnit=m.unitsPerMeter,p.commonUnitsPerWorldUnit2=m.unitsPerMeter2;break;case`lnglat`:case`lnglat-offsets`:o._pseudoMeters||(p.commonUnitsPerMeter=m.unitsPerMeter),p.commonUnitsPerWorldUnit=m.unitsPerDegree,p.commonUnitsPerWorldUnit2=m.unitsPerDegree2;break;case`cartesian`:p.commonUnitsPerWorldUnit=[1,1,m.unitsPerMeter[2]],p.commonUnitsPerWorldUnit2=[0,0,m.unitsPerMeter2[2]];break;default:break}}if(o.projectionMode===z.GLOBE&&e===`meter-offsets`){let y=r[0]*Math.PI/180,b=r[1]*Math.PI/180,v=Math.cos(b),w=((r[2]||0)/6370972+1)*256;p.commonOrigin=[Math.sin(y)*v*w,-Math.cos(y)*v*w,Math.sin(b)*w]}return p}var za=`${`${[`default`,`lnglat`,`meter-offsets`,`lnglat-offsets`,`cartesian`].map(o=>`const COORDINATE_SYSTEM_${o.toUpperCase().replaceAll(`-`,`_`)}: i32 = ${re(o)};`).join(``)}
475
+ ${Object.keys(z).map(o=>`const PROJECTION_MODE_${o}: i32 = ${z[o]};`).join(``)}
476
+ ${Object.keys(ee).map(o=>`const UNIT_${o.toUpperCase()}: i32 = ${ee[o]};`).join(``)}
477
+
478
+ const TILE_SIZE: f32 = 512.0;
479
+ const PI: f32 = 3.1415926536;
480
+ const WORLD_SCALE: f32 = TILE_SIZE / (PI * 2.0);
481
+ const ZERO_64_LOW: vec3<f32> = vec3<f32>(0.0, 0.0, 0.0);
482
+ const EARTH_RADIUS: f32 = 6370972.0; // meters
483
+ const GLOBE_RADIUS: f32 = 256.0;
484
+
485
+ // -----------------------------------------------------------------------------
486
+ // Uniform block (converted from GLSL uniform block)
487
+ // -----------------------------------------------------------------------------
488
+ struct ProjectUniforms {
489
+ wrapLongitude: i32,
490
+ coordinateSystem: i32,
491
+ commonUnitsPerMeter: vec3<f32>,
492
+ projectionMode: i32,
493
+ scale: f32,
494
+ commonUnitsPerWorldUnit: vec3<f32>,
495
+ commonUnitsPerWorldUnit2: vec3<f32>,
496
+ center: vec4<f32>,
497
+ modelMatrix: mat4x4<f32>,
498
+ viewProjectionMatrix: mat4x4<f32>,
499
+ viewportSize: vec2<f32>,
500
+ devicePixelRatio: f32,
501
+ focalDistance: f32,
502
+ cameraPosition: vec3<f32>,
503
+ coordinateOrigin: vec3<f32>,
504
+ commonOrigin: vec3<f32>,
505
+ pseudoMeters: i32,
506
+ };
507
+
508
+ @group(0) @binding(auto)
509
+ var<uniform> project: ProjectUniforms;
510
+
511
+ // -----------------------------------------------------------------------------
512
+ // Geometry data shared across the project helpers.
513
+ // The active layer shader is responsible for populating this private module
514
+ // state before calling the project functions below.
515
+ // -----------------------------------------------------------------------------
516
+
517
+ // Structure to carry additional geometry data used by deck.gl filters.
518
+ struct Geometry {
519
+ worldPosition: vec3<f32>,
520
+ worldPositionAlt: vec3<f32>,
521
+ position: vec4<f32>,
522
+ normal: vec3<f32>,
523
+ uv: vec2<f32>,
524
+ pickingColor: vec3<f32>,
525
+ };
526
+
527
+ var<private> geometry: Geometry;
528
+ `}
529
+
530
+ // -----------------------------------------------------------------------------
531
+ // Functions
532
+ // -----------------------------------------------------------------------------
533
+
534
+ // Returns an adjustment factor for commonUnitsPerMeter
535
+ fn _project_size_at_latitude(lat: f32) -> f32 {
536
+ let y = clamp(lat, -89.9, 89.9);
537
+ return 1.0 / cos(radians(y));
538
+ }
539
+
540
+ // Overloaded version: scales a value in meters at a given latitude.
541
+ fn _project_size_at_latitude_m(meters: f32, lat: f32) -> f32 {
542
+ return meters * project.commonUnitsPerMeter.z * _project_size_at_latitude(lat);
543
+ }
544
+
545
+ // Computes a non-linear scale factor based on geometry.
546
+ // (Note: This function relies on "geometry" being provided.)
547
+ fn project_size() -> f32 {
548
+ if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR &&
549
+ project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT &&
550
+ project.pseudoMeters == 0) {
551
+ if (geometry.position.w == 0.0) {
552
+ return _project_size_at_latitude(geometry.worldPosition.y);
553
+ }
554
+ let y: f32 = geometry.position.y / TILE_SIZE * 2.0 - 1.0;
555
+ let y2 = y * y;
556
+ let y4 = y2 * y2;
557
+ let y6 = y4 * y2;
558
+ return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;
559
+ }
560
+ return 1.0;
561
+ }
562
+
563
+ // Overloads to scale offsets (meters to world units)
564
+ fn project_size_float(meters: f32) -> f32 {
565
+ return meters * project.commonUnitsPerMeter.z * project_size();
566
+ }
567
+
568
+ fn project_size_vec2(meters: vec2<f32>) -> vec2<f32> {
569
+ return meters * project.commonUnitsPerMeter.xy * project_size();
570
+ }
571
+
572
+ fn project_size_vec3(meters: vec3<f32>) -> vec3<f32> {
573
+ return meters * project.commonUnitsPerMeter * project_size();
574
+ }
575
+
576
+ fn project_size_vec4(meters: vec4<f32>) -> vec4<f32> {
577
+ return vec4<f32>(meters.xyz * project.commonUnitsPerMeter, meters.w);
578
+ }
579
+
580
+ // Returns a rotation matrix aligning the z\u2011axis with the given up vector.
581
+ fn project_get_orientation_matrix(up: vec3<f32>) -> mat3x3<f32> {
582
+ let uz = normalize(up);
583
+ let ux = select(
584
+ vec3<f32>(1.0, 0.0, 0.0),
585
+ normalize(vec3<f32>(uz.y, -uz.x, 0.0)),
586
+ abs(uz.z) == 1.0
587
+ );
588
+ let uy = cross(uz, ux);
589
+ return mat3x3<f32>(ux, uy, uz);
590
+ }
591
+
592
+ // Since WGSL does not support "out" parameters, we return a struct.
593
+ struct RotationResult {
594
+ needsRotation: bool,
595
+ transform: mat3x3<f32>,
596
+ };
597
+
598
+ fn project_needs_rotation(commonPosition: vec3<f32>) -> RotationResult {
599
+ if (project.projectionMode == PROJECTION_MODE_GLOBE) {
600
+ return RotationResult(true, project_get_orientation_matrix(commonPosition));
601
+ } else {
602
+ return RotationResult(false, mat3x3<f32>()); // identity alternative if needed
603
+ };
604
+ }
605
+
606
+ // Projects a normal vector from the current coordinate system to world space.
607
+ fn project_normal(vector: vec3<f32>) -> vec3<f32> {
608
+ let normal_modelspace = project.modelMatrix * vec4<f32>(vector, 0.0);
609
+ var n = normalize(normal_modelspace.xyz * project.commonUnitsPerMeter);
610
+ let rotResult = project_needs_rotation(geometry.position.xyz);
611
+ if (rotResult.needsRotation) {
612
+ n = rotResult.transform * n;
613
+ }
614
+ return n;
615
+ }
616
+
617
+ // Applies a scale offset based on y-offset (dy)
618
+ fn project_offset_(offset: vec4<f32>) -> vec4<f32> {
619
+ let dy: f32 = offset.y;
620
+ let commonUnitsPerWorldUnit = project.commonUnitsPerWorldUnit + project.commonUnitsPerWorldUnit2 * dy;
621
+ return vec4<f32>(offset.xyz * commonUnitsPerWorldUnit, offset.w);
622
+ }
623
+
624
+ // Projects lng/lat coordinates to a unit tile [0,1]
625
+ fn project_mercator_(lnglat: vec2<f32>) -> vec2<f32> {
626
+ var x = lnglat.x;
627
+ if (project.wrapLongitude != 0) {
628
+ x = ((x + 180.0) % 360.0) - 180.0;
629
+ }
630
+ let y = clamp(lnglat.y, -89.9, 89.9);
631
+ return vec2<f32>(
632
+ radians(x) + PI,
633
+ PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))
634
+ ) * WORLD_SCALE;
635
+ }
636
+
637
+ // Projects lng/lat/z coordinates for a globe projection.
638
+ fn project_globe_(lnglatz: vec3<f32>) -> vec3<f32> {
639
+ let lambda = radians(lnglatz.x);
640
+ let phi = radians(lnglatz.y);
641
+ let cosPhi = cos(phi);
642
+ let D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;
643
+ return vec3<f32>(
644
+ sin(lambda) * cosPhi,
645
+ -cos(lambda) * cosPhi,
646
+ sin(phi)
647
+ ) * D;
648
+ }
649
+
650
+ // Projects positions (with an optional 64-bit low part) from the input
651
+ // coordinate system to the common space.
652
+ fn project_position_vec4_f64(position: vec4<f32>, position64Low: vec3<f32>) -> vec4<f32> {
653
+ var position_world = project.modelMatrix * position;
654
+
655
+ // Work around for a Mac+NVIDIA bug:
656
+ if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR) {
657
+ if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
658
+ return vec4<f32>(
659
+ project_mercator_(position_world.xy),
660
+ _project_size_at_latitude_m(position_world.z, position_world.y),
661
+ position_world.w
662
+ );
663
+ }
664
+ if (project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {
665
+ position_world = vec4f(position_world.xyz + project.coordinateOrigin, position_world.w);
666
+ }
667
+ }
668
+ if (project.projectionMode == PROJECTION_MODE_GLOBE) {
669
+ if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
670
+ return vec4<f32>(
671
+ project_globe_(position_world.xyz),
672
+ position_world.w
673
+ );
674
+ }
675
+ if (project.coordinateSystem == COORDINATE_SYSTEM_METER_OFFSETS) {
676
+ let enuMatrix = project_get_orientation_matrix(project.commonOrigin);
677
+ let metersToCommon = GLOBE_RADIUS / EARTH_RADIUS;
678
+ let offsetCommon = (enuMatrix * vec3<f32>(-position_world.x, -position_world.y, position_world.z)) * metersToCommon;
679
+ return vec4<f32>(project.commonOrigin + offsetCommon, position_world.w);
680
+ }
681
+ }
682
+ if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
683
+ if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
684
+ if (abs(position_world.y - project.coordinateOrigin.y) > 0.25) {
685
+ return vec4<f32>(
686
+ project_mercator_(position_world.xy) - project.commonOrigin.xy,
687
+ project_size_float(position_world.z),
688
+ position_world.w
689
+ );
690
+ }
691
+ }
692
+ }
693
+ if (project.projectionMode == PROJECTION_MODE_IDENTITY ||
694
+ (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&
695
+ (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT ||
696
+ project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {
697
+ position_world = vec4f(position_world.xyz - project.coordinateOrigin, position_world.w);
698
+ }
699
+
700
+ return project_offset_(position_world) +
701
+ project_offset_(project.modelMatrix * vec4<f32>(position64Low, 0.0));
702
+ }
703
+
704
+ // Overloaded versions for different input types.
705
+ fn project_position_vec4_f32(position: vec4<f32>) -> vec4<f32> {
706
+ return project_position_vec4_f64(position, ZERO_64_LOW);
707
+ }
708
+
709
+ fn project_position_vec3_f64(position: vec3<f32>, position64Low: vec3<f32>) -> vec3<f32> {
710
+ let projected_position = project_position_vec4_f64(vec4<f32>(position, 1.0), position64Low);
711
+ return projected_position.xyz;
712
+ }
713
+
714
+ fn project_position_vec3_f32(position: vec3<f32>) -> vec3<f32> {
715
+ let projected_position = project_position_vec4_f64(vec4<f32>(position, 1.0), ZERO_64_LOW);
716
+ return projected_position.xyz;
717
+ }
718
+
719
+ fn project_position_vec2_f32(position: vec2<f32>) -> vec2<f32> {
720
+ let projected_position = project_position_vec4_f64(vec4<f32>(position, 0.0, 1.0), ZERO_64_LOW);
721
+ return projected_position.xy;
722
+ }
723
+
724
+ // Transforms a common space position to clip space.
725
+ fn project_common_position_to_clipspace_with_projection(position: vec4<f32>, viewProjectionMatrix: mat4x4<f32>, center: vec4<f32>) -> vec4<f32> {
726
+ var clipPosition = viewProjectionMatrix * position + center;
727
+ // deck.gl projection matrices use WebGL's [-w, w] depth range; WebGPU clips z to [0, w].
728
+ clipPosition.z = (clipPosition.z + clipPosition.w) * 0.5;
729
+ return clipPosition;
730
+ }
731
+
732
+ // Uses the project viewProjectionMatrix and center.
733
+ fn project_common_position_to_clipspace(position: vec4<f32>) -> vec4<f32> {
734
+ return project_common_position_to_clipspace_with_projection(position, project.viewProjectionMatrix, project.center);
735
+ }
736
+
737
+ // Returns a clip space offset corresponding to a given number of screen pixels.
738
+ fn project_pixel_size_to_clipspace(pixels: vec2<f32>) -> vec2<f32> {
739
+ let offset = pixels / project.viewportSize * project.devicePixelRatio * 2.0;
740
+ return offset * project.focalDistance;
741
+ }
742
+
743
+ fn project_meter_size_to_pixel(meters: f32) -> f32 {
744
+ return project_size_float(meters) * project.scale;
745
+ }
746
+
747
+ fn project_unit_size_to_pixel(size: f32, unit: i32) -> f32 {
748
+ if (unit == UNIT_METERS) {
749
+ return project_meter_size_to_pixel(size);
750
+ } else if (unit == UNIT_COMMON) {
751
+ return size * project.scale;
752
+ }
753
+ // UNIT_PIXELS: no scaling applied.
754
+ return size;
755
+ }
756
+
757
+ fn project_pixel_size_float(pixels: f32) -> f32 {
758
+ return pixels / project.scale;
759
+ }
760
+
761
+ fn project_pixel_size_vec2(pixels: vec2<f32>) -> vec2<f32> {
762
+ return pixels / project.scale;
763
+ }
764
+ `;var Fa=`${[`default`,`lnglat`,`meter-offsets`,`lnglat-offsets`,`cartesian`].map(o=>`const int COORDINATE_SYSTEM_${o.toUpperCase().replaceAll(`-`,`_`)} = ${re(o)};`).join(``)}
765
+ ${Object.keys(z).map(o=>`const int PROJECTION_MODE_${o} = ${z[o]};`).join(``)}
766
+ ${Object.keys(ee).map(o=>`const int UNIT_${o.toUpperCase()} = ${ee[o]};`).join(``)}
767
+ layout(std140) uniform projectUniforms {
768
+ bool wrapLongitude;
769
+ int coordinateSystem;
770
+ vec3 commonUnitsPerMeter;
771
+ int projectionMode;
772
+ float scale;
773
+ vec3 commonUnitsPerWorldUnit;
774
+ vec3 commonUnitsPerWorldUnit2;
775
+ vec4 center;
776
+ mat4 modelMatrix;
777
+ mat4 viewProjectionMatrix;
778
+ vec2 viewportSize;
779
+ float devicePixelRatio;
780
+ float focalDistance;
781
+ vec3 cameraPosition;
782
+ vec3 coordinateOrigin;
783
+ vec3 commonOrigin;
784
+ bool pseudoMeters;
785
+ } project;
786
+ const float TILE_SIZE = 512.0;
787
+ const float PI = 3.1415926536;
788
+ const float WORLD_SCALE = TILE_SIZE / (PI * 2.0);
789
+ const vec3 ZERO_64_LOW = vec3(0.0);
790
+ const float EARTH_RADIUS = 6370972.0;
791
+ const float GLOBE_RADIUS = 256.0;
792
+ float project_size_at_latitude(float lat) {
793
+ float y = clamp(lat, -89.9, 89.9);
794
+ return 1.0 / cos(radians(y));
795
+ }
796
+ float project_size() {
797
+ if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR &&
798
+ project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT &&
799
+ project.pseudoMeters == false) {
800
+ if (geometry.position.w == 0.0) {
801
+ return project_size_at_latitude(geometry.worldPosition.y);
802
+ }
803
+ float y = geometry.position.y / TILE_SIZE * 2.0 - 1.0;
804
+ float y2 = y * y;
805
+ float y4 = y2 * y2;
806
+ float y6 = y4 * y2;
807
+ return 1.0 + 4.9348 * y2 + 4.0587 * y4 + 1.5642 * y6;
808
+ }
809
+ return 1.0;
810
+ }
811
+ float project_size_at_latitude(float meters, float lat) {
812
+ return meters * project.commonUnitsPerMeter.z * project_size_at_latitude(lat);
813
+ }
814
+ float project_size(float meters) {
815
+ return meters * project.commonUnitsPerMeter.z * project_size();
816
+ }
817
+ vec2 project_size(vec2 meters) {
818
+ return meters * project.commonUnitsPerMeter.xy * project_size();
819
+ }
820
+ vec3 project_size(vec3 meters) {
821
+ return meters * project.commonUnitsPerMeter * project_size();
822
+ }
823
+ vec4 project_size(vec4 meters) {
824
+ return vec4(meters.xyz * project.commonUnitsPerMeter, meters.w);
825
+ }
826
+ mat3 project_get_orientation_matrix(vec3 up) {
827
+ vec3 uz = normalize(up);
828
+ vec3 ux = abs(uz.z) == 1.0 ? vec3(1.0, 0.0, 0.0) : normalize(vec3(uz.y, -uz.x, 0));
829
+ vec3 uy = cross(uz, ux);
830
+ return mat3(ux, uy, uz);
831
+ }
832
+ bool project_needs_rotation(vec3 commonPosition, out mat3 transform) {
833
+ if (project.projectionMode == PROJECTION_MODE_GLOBE) {
834
+ transform = project_get_orientation_matrix(commonPosition);
835
+ return true;
836
+ }
837
+ return false;
838
+ }
839
+ vec3 project_normal(vec3 vector) {
840
+ vec4 normal_modelspace = project.modelMatrix * vec4(vector, 0.0);
841
+ vec3 n = normalize(normal_modelspace.xyz * project.commonUnitsPerMeter);
842
+ mat3 rotation;
843
+ if (project_needs_rotation(geometry.position.xyz, rotation)) {
844
+ n = rotation * n;
845
+ }
846
+ return n;
847
+ }
848
+ vec4 project_offset_(vec4 offset) {
849
+ float dy = offset.y;
850
+ vec3 commonUnitsPerWorldUnit = project.commonUnitsPerWorldUnit + project.commonUnitsPerWorldUnit2 * dy;
851
+ return vec4(offset.xyz * commonUnitsPerWorldUnit, offset.w);
852
+ }
853
+ vec2 project_mercator_(vec2 lnglat) {
854
+ float x = lnglat.x;
855
+ if (project.wrapLongitude) {
856
+ x = mod(x + 180., 360.0) - 180.;
857
+ }
858
+ float y = clamp(lnglat.y, -89.9, 89.9);
859
+ return vec2(
860
+ radians(x) + PI,
861
+ PI + log(tan_fp32(PI * 0.25 + radians(y) * 0.5))
862
+ ) * WORLD_SCALE;
863
+ }
864
+ vec3 project_globe_(vec3 lnglatz) {
865
+ float lambda = radians(lnglatz.x);
866
+ float phi = radians(lnglatz.y);
867
+ float cosPhi = cos(phi);
868
+ float D = (lnglatz.z / EARTH_RADIUS + 1.0) * GLOBE_RADIUS;
869
+ return vec3(
870
+ sin(lambda) * cosPhi,
871
+ -cos(lambda) * cosPhi,
872
+ sin(phi)
873
+ ) * D;
874
+ }
875
+ vec4 project_position(vec4 position, vec3 position64Low) {
876
+ vec4 position_world = project.modelMatrix * position;
877
+ if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR) {
878
+ if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
879
+ return vec4(
880
+ project_mercator_(position_world.xy),
881
+ project_size_at_latitude(position_world.z, position_world.y),
882
+ position_world.w
883
+ );
884
+ }
885
+ if (project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN) {
886
+ position_world.xyz += project.coordinateOrigin;
887
+ }
888
+ }
889
+ if (project.projectionMode == PROJECTION_MODE_GLOBE) {
890
+ if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
891
+ return vec4(
892
+ project_globe_(position_world.xyz),
893
+ position_world.w
894
+ );
895
+ }
896
+ if (project.coordinateSystem == COORDINATE_SYSTEM_METER_OFFSETS) {
897
+ mat3 enuMatrix = project_get_orientation_matrix(project.commonOrigin);
898
+ float metersToCommon = GLOBE_RADIUS / EARTH_RADIUS;
899
+ vec3 offsetCommon = (enuMatrix * vec3(-position_world.xy, position_world.z)) * metersToCommon;
900
+ return vec4(project.commonOrigin + offsetCommon, position_world.w);
901
+ }
902
+ }
903
+ if (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET) {
904
+ if (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT) {
905
+ if (abs(position_world.y - project.coordinateOrigin.y) > 0.25) {
906
+ return vec4(
907
+ project_mercator_(position_world.xy) - project.commonOrigin.xy,
908
+ project_size(position_world.z),
909
+ position_world.w
910
+ );
911
+ }
912
+ }
913
+ }
914
+ if (project.projectionMode == PROJECTION_MODE_IDENTITY ||
915
+ (project.projectionMode == PROJECTION_MODE_WEB_MERCATOR_AUTO_OFFSET &&
916
+ (project.coordinateSystem == COORDINATE_SYSTEM_LNGLAT ||
917
+ project.coordinateSystem == COORDINATE_SYSTEM_CARTESIAN))) {
918
+ position_world.xyz -= project.coordinateOrigin;
919
+ }
920
+ return project_offset_(position_world) + project_offset_(project.modelMatrix * vec4(position64Low, 0.0));
921
+ }
922
+ vec4 project_position(vec4 position) {
923
+ return project_position(position, ZERO_64_LOW);
924
+ }
925
+ vec3 project_position(vec3 position, vec3 position64Low) {
926
+ vec4 projected_position = project_position(vec4(position, 1.0), position64Low);
927
+ return projected_position.xyz;
928
+ }
929
+ vec3 project_position(vec3 position) {
930
+ vec4 projected_position = project_position(vec4(position, 1.0), ZERO_64_LOW);
931
+ return projected_position.xyz;
932
+ }
933
+ vec2 project_position(vec2 position) {
934
+ vec4 projected_position = project_position(vec4(position, 0.0, 1.0), ZERO_64_LOW);
935
+ return projected_position.xy;
936
+ }
937
+ vec4 project_common_position_to_clipspace(vec4 position, mat4 viewProjectionMatrix, vec4 center) {
938
+ return viewProjectionMatrix * position + center;
939
+ }
940
+ vec4 project_common_position_to_clipspace(vec4 position) {
941
+ return project_common_position_to_clipspace(position, project.viewProjectionMatrix, project.center);
942
+ }
943
+ vec2 project_pixel_size_to_clipspace(vec2 pixels) {
944
+ vec2 offset = pixels / project.viewportSize * project.devicePixelRatio * 2.0;
945
+ return offset * project.focalDistance;
946
+ }
947
+ float project_size_to_pixel(float meters) {
948
+ return project_size(meters) * project.scale;
949
+ }
950
+ vec2 project_size_to_pixel(vec2 meters) {
951
+ return project_size(meters) * project.scale;
952
+ }
953
+ float project_size_to_pixel(float size, int unit) {
954
+ if (unit == UNIT_METERS) return project_size_to_pixel(size);
955
+ if (unit == UNIT_COMMON) return size * project.scale;
956
+ return size;
957
+ }
958
+ float project_pixel_size(float pixels) {
959
+ return pixels / project.scale;
960
+ }
961
+ vec2 project_pixel_size(vec2 pixels) {
962
+ return pixels / project.scale;
963
+ }
964
+ `;var gh={};function yh(o=gh){return`viewport`in o?Va(o):{}}var oe={name:`project`,dependencies:[Uf$1,no],source:za,vs:Fa,getUniforms:yh,uniformTypes:{wrapLongitude:`f32`,coordinateSystem:`i32`,commonUnitsPerMeter:`vec3<f32>`,projectionMode:`i32`,scale:`f32`,commonUnitsPerWorldUnit:`vec3<f32>`,commonUnitsPerWorldUnit2:`vec3<f32>`,center:`vec4<f32>`,modelMatrix:`mat4x4<f32>`,viewProjectionMatrix:`mat4x4<f32>`,viewportSize:`vec2<f32>`,devicePixelRatio:`f32`,focalDistance:`f32`,cameraPosition:`vec3<f32>`,coordinateOrigin:`vec3<f32>`,commonOrigin:`vec3<f32>`,pseudoMeters:`f32`}};var Wa={name:`project32`,dependencies:[oe],source:`// Define a structure to hold both the clip-space position and the common position.
965
+ struct ProjectResult {
966
+ clipPosition: vec4<f32>,
967
+ commonPosition: vec4<f32>,
968
+ };
969
+
970
+ // This function mimics the GLSL version with the 'out' parameter by returning both values.
971
+ fn project_position_to_clipspace_and_commonspace(
972
+ position: vec3<f32>,
973
+ position64Low: vec3<f32>,
974
+ offset: vec3<f32>
975
+ ) -> ProjectResult {
976
+ // Compute the projected position.
977
+ let projectedPosition: vec3<f32> = project_position_vec3_f64(position, position64Low);
978
+
979
+ // Start with the provided offset.
980
+ var finalOffset: vec3<f32> = offset;
981
+
982
+ // Get whether a rotation is needed and the rotation matrix.
983
+ let rotationResult = project_needs_rotation(projectedPosition);
984
+
985
+ // If rotation is needed, update the offset.
986
+ if (rotationResult.needsRotation) {
987
+ finalOffset = rotationResult.transform * offset;
988
+ }
989
+
990
+ // Compute the common position.
991
+ let commonPosition: vec4<f32> = vec4<f32>(projectedPosition + finalOffset, 1.0);
992
+
993
+ // Convert to clip-space.
994
+ let clipPosition: vec4<f32> = project_common_position_to_clipspace(commonPosition);
995
+
996
+ return ProjectResult(clipPosition, commonPosition);
997
+ }
998
+
999
+ // A convenience overload that returns only the clip-space position.
1000
+ fn project_position_to_clipspace(
1001
+ position: vec3<f32>,
1002
+ position64Low: vec3<f32>,
1003
+ offset: vec3<f32>
1004
+ ) -> vec4<f32> {
1005
+ return project_position_to_clipspace_and_commonspace(position, position64Low, offset).clipPosition;
1006
+ }
1007
+ `,vs:`vec4 project_position_to_clipspace(
1008
+ vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition
1009
+ ) {
1010
+ vec3 projectedPosition = project_position(position, position64Low);
1011
+ mat3 rotation;
1012
+ if (project_needs_rotation(projectedPosition, rotation)) {
1013
+ // offset is specified as ENU
1014
+ // when in globe projection, rotate offset so that the ground alighs with the surface of the globe
1015
+ offset = rotation * offset;
1016
+ }
1017
+ commonPosition = vec4(projectedPosition + offset, 1.0);
1018
+ return project_common_position_to_clipspace(commonPosition);
1019
+ }
1020
+
1021
+ vec4 project_position_to_clipspace(
1022
+ vec3 position, vec3 position64Low, vec3 offset
1023
+ ) {
1024
+ vec4 commonPosition;
1025
+ return project_position_to_clipspace(position, position64Low, offset, commonPosition);
1026
+ }
1027
+ `};function ls(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Vt(o,t){let e=ir$3.transformMat4([],t,o);return ir$3.scale(e,e,1/e[3]),e}function hr(o,t,e){return o<t?t:o>e?e:o}function bh(o){return Math.log(o)*Math.LOG2E}var dr=Math.log2||bh;function ft(o,t){if(!o)throw new Error(t||`@math.gl/web-mercator: assertion failed.`)}var ht=Math.PI;var Ga=ht/4;var it=ht/180;var us=180/ht;var Te=512;var ao=4003e4;var Z=85.051129;var Ya=1.5;function fs(o){return dr(o)}function st(o){let[t,e]=o;ft(Number.isFinite(t)),ft(Number.isFinite(e)&&e>=-90&&e<=90,`invalid latitude`);let r=t*it,i=e*it;return[Te*(r+ht)/(2*ht),Te*(ht+Math.log(Math.tan(Ga+i*.5)))/(2*ht)]}function et(o){let[t,e]=o,r=t/Te*(2*ht)-ht,i=2*(Math.atan(Math.exp(e/Te*(2*ht)-ht))-Ga);return[r*us,i*us]}function hs(o){let{latitude:t}=o;ft(Number.isFinite(t));return fs(ao*Math.cos(t*it))-9}function pr(o){let t=Math.cos(o*it);return Te/ao/t}function Ae(o){let{latitude:t,longitude:e,highPrecision:r=!1}=o;ft(Number.isFinite(t)&&Number.isFinite(e));let i=Te,s=Math.cos(t*it),n=i/360,a=n/s,c=i/ao/s,l={unitsPerMeter:[c,c,c],metersPerUnit:[1/c,1/c,1/c],unitsPerDegree:[n,a,c],degreesPerUnit:[1/n,1/a,1/c]};if(r){let u=it*Math.tan(t*it)/s,f=n*u/2,d=i/ao*u,p=d/a*c;l.unitsPerDegree2=[0,f,d],l.unitsPerMeter2=[p,0,p]}return l}function mr(o,t){let[e,r,i]=o,[s,n,a]=t,{unitsPerMeter:c,unitsPerMeter2:l}=Ae({longitude:e,latitude:r,highPrecision:!0}),u=st(o);u[0]+=s*(c[0]+l[0]*n),u[1]+=n*(c[1]+l[1]*n);let f=et(u),d=(i||0)+(a||0);return Number.isFinite(i)||Number.isFinite(a)?[f[0],f[1],d]:f}function co(o){let{height:t,pitch:e,bearing:r,altitude:i,scale:s,center:n}=o,a=ls();zi$1.translate(a,a,[0,0,-i]),zi$1.rotateX(a,a,-e*it),zi$1.rotateZ(a,a,r*it);let c=s/t;return zi$1.scale(a,a,[c,c,c]),n&&zi$1.translate(a,a,Zn$1.negate([],n)),a}function ds(o){let{width:t,height:e,altitude:r,pitch:i=0,offset:s,center:n,scale:a,nearZMultiplier:c=1,farZMultiplier:l=1}=o,{fovy:u=Ct(Ya)}=o;r!==void 0&&(u=Ct(r));let f=u*it,d=i*it,p=ie(u),m=p;n&&(m+=n[2]*a/Math.cos(d)/e);let g=f*(.5+(s?s[1]:0)/e),y=Math.sin(g)*m/Math.sin(hr(Math.PI/2-d-g,.01,Math.PI-.01)),b=Math.sin(d)*y+m,v=m*10,w=Math.min(b*l,v);return{fov:f,aspect:t/e,focalDistance:p,near:c,far:w}}function Ct(o){return 2*Math.atan(.5/o)*us}function ie(o){return .5/Math.tan(.5*o*it)}function zt(o,t){let[e,r,i=0]=o;return ft(Number.isFinite(e)&&Number.isFinite(r)&&Number.isFinite(i)),Vt(t,[e,r,i,1])}function Ft(o,t,e=0){let[r,i,s]=o;if(ft(Number.isFinite(r)&&Number.isFinite(i),`invalid pixel coordinate`),Number.isFinite(s))return Vt(t,[r,i,s,1]);let n=Vt(t,[r,i,0,1]),a=Vt(t,[r,i,1,1]),c=n[2],l=a[2],u=c===l?0:((e||0)-c)/(l-c);return Ki$1.lerp([],n,a,u)}function lo(o){let{width:t,height:e,bounds:r,minExtent:i=0,maxZoom:s=24,offset:n=[0,0]}=o,[[a,c],[l,u]]=r,f=vh(o.padding),d=st([a,hr(u,-Z,Z)]),p=st([l,hr(c,-Z,Z)]),m=[Math.max(Math.abs(p[0]-d[0]),i),Math.max(Math.abs(p[1]-d[1]),i)],g=[t-f.left-f.right-Math.abs(n[0])*2,e-f.top-f.bottom-Math.abs(n[1])*2];ft(g[0]>0&&g[1]>0);let y=g[0]/m[0],b=g[1]/m[1],v=(f.right-f.left)/2/y,w=(f.top-f.bottom)/2/b,E=et([(p[0]+d[0])/2+v,(p[1]+d[1])/2+w]),S=Math.min(s,dr(Math.abs(Math.min(y,b))));return ft(Number.isFinite(S)),{longitude:E[0],latitude:E[1],zoom:S}}function vh(o=0){return typeof o==`number`?{top:o,bottom:o,left:o,right:o}:(ft(Number.isFinite(o.top)&&Number.isFinite(o.bottom)&&Number.isFinite(o.left)&&Number.isFinite(o.right)),o)}var $a=Math.PI/180;function uo(o,t=0){let{width:e,height:r,unproject:i}=o,s={targetZ:t},n=i([0,r],s),a=i([e,r],s),c,l;return(o.fovy?.5*o.fovy*$a:Math.atan(.5/o.altitude))>(90-o.pitch)*$a-.01?(c=Ha(o,0,t),l=Ha(o,e,t)):(c=i([0,0],s),l=i([e,0],s)),[n,a,l,c]}function Ha(o,t,e){let{pixelUnprojectionMatrix:r}=o,i=Vt(r,[t,0,1,1]),s=Vt(r,[t,o.height,1,1]),a=(e*o.distanceScales.unitsPerMeter[2]-i[2])/(s[2]-i[2]),l=et(Ki$1.lerp([],i,s,a));return l.push(e),l}var fo=10;var gr=16777215;function Xa(o,t){o.length===fo?A.warn(`pickMultipleObjects can only exclude ${fo} previously picked objects for layers without picking buffers`)():o.push(t)}var Eh=` float disabledPickingIndexCount;
1028
+ vec4 disabledPickingIndices0;
1029
+ vec4 disabledPickingIndices1;
1030
+ vec4 disabledPickingIndices2;
1031
+ `;function Za(o){return o.replace(` vec4 highlightColor;
1032
+ } picking;`,` vec4 highlightColor;
1033
+ ${Eh}} picking;`)}function ps(o,t){return[o[t]||0,o[t+1]||0,o[t+2]||0,o[t+3]||0]}var Th=`vec3 picking_getPickingColorFromIndex(float objectIndex) {
1034
+ if (objectIndex < 0.0 || objectIndex >= ${gr}.0) {
1035
+ return vec3(0.0);
1036
+ }
1037
+
1038
+ for (int i = 0; i < ${fo}; i++) {
1039
+ if (float(i) >= picking.disabledPickingIndexCount) {
1040
+ break;
1041
+ }
1042
+ vec4 disabledIndices = i < 4
1043
+ ? picking.disabledPickingIndices0
1044
+ : (i < 8 ? picking.disabledPickingIndices1 : picking.disabledPickingIndices2);
1045
+ float disabledIndex = disabledIndices[i - (i / 4) * 4];
1046
+ if (disabledIndex == objectIndex) {
1047
+ return vec3(0.0);
1048
+ }
1049
+ }
1050
+
1051
+ float encodedIndex = objectIndex + 1.0;
1052
+ return vec3(
1053
+ mod(encodedIndex, 256.0),
1054
+ mod(floor(encodedIndex / 256.0), 256.0),
1055
+ mod(floor(encodedIndex / 65536.0), 256.0)
1056
+ );
1057
+ }
1058
+
1059
+ vec3 picking_getPickingColorFromIndex(uint objectIndex) {
1060
+ return picking_getPickingColorFromIndex(float(objectIndex));
1061
+ }
1062
+
1063
+ vec3 picking_getPickingColorFromInstanceID() {
1064
+ return picking_getPickingColorFromIndex(float(gl_InstanceID));
1065
+ }
1066
+
1067
+ void picking_setPickingColorFromInstanceID() {
1068
+ picking_setPickingColor(picking_getPickingColorFromInstanceID());
1069
+ }
1070
+ `;var Ah=`struct pickingUniforms {
1071
+ isActive: f32,
1072
+ isAttribute: f32,
1073
+ isHighlightActive: f32,
1074
+ useByteColors: f32,
1075
+ highlightedObjectColor: vec3<f32>,
1076
+ highlightColor: vec4<f32>,
1077
+ disabledPickingIndexCount: f32,
1078
+ disabledPickingIndices0: vec4<f32>,
1079
+ disabledPickingIndices1: vec4<f32>,
1080
+ disabledPickingIndices2: vec4<f32>,
1081
+ };
1082
+
1083
+ @group(0) @binding(auto) var<uniform> picking: pickingUniforms;
1084
+
1085
+ fn picking_normalizeColor(color: vec3<f32>) -> vec3<f32> {
1086
+ return select(color, color / 255.0, picking.useByteColors > 0.5);
1087
+ }
1088
+
1089
+ fn picking_normalizeColor4(color: vec4<f32>) -> vec4<f32> {
1090
+ return select(color, color / 255.0, picking.useByteColors > 0.5);
1091
+ }
1092
+
1093
+ fn picking_isColorZero(color: vec3<f32>) -> bool {
1094
+ return dot(color, vec3<f32>(1.0)) < 0.00001;
1095
+ }
1096
+
1097
+ fn picking_isColorValid(color: vec3<f32>) -> bool {
1098
+ return dot(color, vec3<f32>(1.0)) > 0.00001;
1099
+ }
1100
+
1101
+ fn picking_getPickingColorFromIndex(objectIndex: u32) -> vec3<f32> {
1102
+ if (objectIndex >= ${gr}u) {
1103
+ return vec3<f32>(0.0);
1104
+ }
1105
+
1106
+ for (var i = 0; i < ${fo}; i = i + 1) {
1107
+ if (f32(i) >= picking.disabledPickingIndexCount) {
1108
+ break;
1109
+ }
1110
+ let disabledIndices = select(
1111
+ picking.disabledPickingIndices2,
1112
+ select(picking.disabledPickingIndices1, picking.disabledPickingIndices0, i < 4),
1113
+ i < 8
1114
+ );
1115
+ let disabledIndex = disabledIndices[i % 4];
1116
+ if (disabledIndex == f32(objectIndex)) {
1117
+ return vec3<f32>(0.0);
1118
+ }
1119
+ }
1120
+
1121
+ let encodedIndex = objectIndex + 1u;
1122
+ return vec3<f32>(
1123
+ f32(encodedIndex % 256u),
1124
+ f32((encodedIndex / 256u) % 256u),
1125
+ f32((encodedIndex / 65536u) % 256u)
1126
+ ) / 255.0;
1127
+ }
1128
+ `;var Ka=s(r({},Wp$1),{vs:`${Za(Wp$1.vs)}
1129
+ ${Th}`,fs:Za(Wp$1.fs),source:Ah,uniformTypes:s(r({},Wp$1.uniformTypes),{disabledPickingIndexCount:`f32`,disabledPickingIndices0:`vec4<f32>`,disabledPickingIndices1:`vec4<f32>`,disabledPickingIndices2:`vec4<f32>`}),defaultUniforms:s(r({},Wp$1.defaultUniforms),{useByteColors:!0,disabledPickingIndexCount:0,disabledPickingIndices0:[0,0,0,0],disabledPickingIndices1:[0,0,0,0],disabledPickingIndices2:[0,0,0,0]}),getUniforms(o,t){let e=Wp$1.getUniforms(o,t),r=o.disabledPickingIndices||[];return e.disabledPickingIndexCount=r.length,e.disabledPickingIndices0=ps(r,0),e.disabledPickingIndices1=ps(r,4),e.disabledPickingIndices2=ps(r,8),e},inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1130
+ // for picking depth values
1131
+ picking_setPickingAttribute(position.z / position.w);
1132
+ `,"vs:DECKGL_FILTER_COLOR":`
1133
+ picking_setPickingColor(geometry.pickingColor);
1134
+ `,"fs:DECKGL_FILTER_COLOR":{order:99,injection:`
1135
+ // use highlight color if this fragment belongs to the selected object.
1136
+ color = picking_filterHighlightColor(color);
1137
+
1138
+ // use picking color if rendering to picking FBO.
1139
+ color = picking_filterPickingColor(color);
1140
+ `}}});var Sh=`struct LayerUniforms {
1141
+ opacity: f32,
1142
+ };
1143
+
1144
+ @group(0) @binding(auto)
1145
+ var<uniform> layer: LayerUniforms;
1146
+ `;var Ja=`layout(std140) uniform layerUniforms {
1147
+ uniform float opacity;
1148
+ } layer;
1149
+ `;var ms={name:`layer`,source:Sh,vs:Ja,fs:Ja,getUniforms:o=>({opacity:Math.pow(o.opacity,.45454545454545453)}),uniformTypes:{opacity:`f32`}};var Qa=`
1150
+ layout(std140) uniform shadowUniforms {
1151
+ bool drawShadowMap;
1152
+ bool useShadowMap;
1153
+ vec4 color;
1154
+ highp int lightId;
1155
+ float lightCount;
1156
+ mat4 viewProjectionMatrix0;
1157
+ mat4 viewProjectionMatrix1;
1158
+ vec4 projectCenter0;
1159
+ vec4 projectCenter1;
1160
+ } shadow;
1161
+ `;var Ch=`
1162
+ ${Qa}
1163
+
1164
+ const int max_lights = 2;
1165
+
1166
+ out vec3 shadow_vPosition[max_lights];
1167
+
1168
+ vec4 shadow_setVertexPosition(vec4 position_commonspace) {
1169
+ mat4 viewProjectionMatrices[max_lights];
1170
+ viewProjectionMatrices[0] = shadow.viewProjectionMatrix0;
1171
+ viewProjectionMatrices[1] = shadow.viewProjectionMatrix1;
1172
+ vec4 projectCenters[max_lights];
1173
+ projectCenters[0] = shadow.projectCenter0;
1174
+ projectCenters[1] = shadow.projectCenter1;
1175
+
1176
+ if (shadow.drawShadowMap) {
1177
+ return project_common_position_to_clipspace(position_commonspace, viewProjectionMatrices[shadow.lightId], projectCenters[shadow.lightId]);
1178
+ }
1179
+ if (shadow.useShadowMap) {
1180
+ for (int i = 0; i < max_lights; i++) {
1181
+ if(i < int(shadow.lightCount)) {
1182
+ vec4 shadowMap_position = project_common_position_to_clipspace(position_commonspace, viewProjectionMatrices[i], projectCenters[i]);
1183
+ shadow_vPosition[i] = (shadowMap_position.xyz / shadowMap_position.w + 1.0) / 2.0;
1184
+ }
1185
+ }
1186
+ }
1187
+ return gl_Position;
1188
+ }
1189
+
1190
+ `;var Rh=`
1191
+ ${Qa}
1192
+
1193
+ const int max_lights = 2;
1194
+ uniform sampler2D shadow_uShadowMap0;
1195
+ uniform sampler2D shadow_uShadowMap1;
1196
+
1197
+ in vec3 shadow_vPosition[max_lights];
1198
+
1199
+ const vec4 bitPackShift = vec4(1.0, 255.0, 65025.0, 16581375.0);
1200
+ const vec4 bitUnpackShift = 1.0 / bitPackShift;
1201
+ const vec4 bitMask = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);
1202
+
1203
+ float shadow_getShadowWeight(vec3 position, sampler2D shadowMap) {
1204
+ vec4 rgbaDepth = texture(shadowMap, position.xy);
1205
+
1206
+ float z = dot(rgbaDepth, bitUnpackShift);
1207
+ return smoothstep(0.001, 0.01, position.z - z);
1208
+ }
1209
+
1210
+ vec4 shadow_filterShadowColor(vec4 color) {
1211
+ if (shadow.drawShadowMap) {
1212
+ vec4 rgbaDepth = fract(gl_FragCoord.z * bitPackShift);
1213
+ rgbaDepth -= rgbaDepth.gbaa * bitMask;
1214
+ return rgbaDepth;
1215
+ }
1216
+ if (shadow.useShadowMap) {
1217
+ float shadowAlpha = 0.0;
1218
+ shadowAlpha += shadow_getShadowWeight(shadow_vPosition[0], shadow_uShadowMap0);
1219
+ if(shadow.lightCount > 1.0) {
1220
+ shadowAlpha += shadow_getShadowWeight(shadow_vPosition[1], shadow_uShadowMap1);
1221
+ }
1222
+ shadowAlpha *= shadow.color.a / shadow.lightCount;
1223
+ float blendedAlpha = shadowAlpha + color.a * (1.0 - shadowAlpha);
1224
+
1225
+ return vec4(
1226
+ mix(color.rgb, shadow.color.rgb, shadowAlpha / blendedAlpha),
1227
+ blendedAlpha
1228
+ );
1229
+ }
1230
+ return color;
1231
+ }
1232
+
1233
+ `;var Lh=vt(Uh);var kh=vt(jh);var Oh=[0,0,0,1];var Dh=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function Bh(o,t){let[e,r,i]=o,s=Ft([e,r,i],t);return Number.isFinite(i)?s:[s[0],s[1],0]}function Uh({viewport:o,center:t}){return new U$2(o.viewProjectionMatrix).invert().transform(t)}function jh({viewport:o,shadowMatrices:t}){let e=[],r=o.pixelUnprojectionMatrix,i=o.isGeospatial?void 0:1,s=[[0,0,i],[o.width,0,i],[0,o.height,i],[o.width,o.height,i],[0,0,-1],[o.width,0,-1],[0,o.height,-1],[o.width,o.height,-1]].map(n=>Bh(n,r));for(let n of t){let a=n.clone().translate(new Z$2(o.center).negate()),c=s.map(u=>a.transform(u)),l=new U$2().ortho({left:Math.min(...c.map(u=>u[0])),right:Math.max(...c.map(u=>u[0])),bottom:Math.min(...c.map(u=>u[1])),top:Math.max(...c.map(u=>u[1])),near:Math.min(...c.map(u=>-u[2])),far:Math.max(...c.map(u=>-u[2]))});e.push(l.multiplyRight(n))}return e}function Nh(o){let{shadowEnabled:t=!0,project:e}=o;if(!t||!e||!o.shadowMatrices||!o.shadowMatrices.length)return{drawShadowMap:!1,useShadowMap:!1,shadow_uShadowMap0:o.dummyShadowMap,shadow_uShadowMap1:o.dummyShadowMap};let r=oe.getUniforms(e),i=Lh({viewport:e.viewport,center:r.center}),s=[],n=kh({shadowMatrices:o.shadowMatrices,viewport:e.viewport}).slice();for(let c=0;c<o.shadowMatrices.length;c++){let l=n[c],u=l.clone().translate(new Z$2(e.viewport.center).negate());r.coordinateSystem===re(`lnglat`)&&r.projectionMode===z.WEB_MERCATOR?(n[c]=u,s[c]=i):(n[c]=l.clone().multiplyRight(Dh),s[c]=u.transform(i))}let a={drawShadowMap:!!o.drawToShadowMap,useShadowMap:o.shadowMaps?o.shadowMaps.length>0:!1,color:o.shadowColor||Oh,lightId:o.shadowLightId||0,lightCount:o.shadowMatrices.length,shadow_uShadowMap0:o.dummyShadowMap,shadow_uShadowMap1:o.dummyShadowMap};for(let c=0;c<n.length;c++)a[`viewProjectionMatrix${c}`]=n[c],a[`projectCenter${c}`]=s[c];for(let c=0;c<2;c++)a[`shadow_uShadowMap${c}`]=o.shadowMaps&&o.shadowMaps[c]||o.dummyShadowMap;return a}var ho={name:`shadow`,dependencies:[oe],vs:Ch,fs:Rh,inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1234
+ position = shadow_setVertexPosition(geometry.position);
1235
+ `,"fs:DECKGL_FILTER_COLOR":`
1236
+ color = shadow_filterShadowColor(color);
1237
+ `},getUniforms:Nh,uniformTypes:{drawShadowMap:`f32`,useShadowMap:`f32`,color:`vec4<f32>`,lightId:`i32`,lightCount:`f32`,viewProjectionMatrix0:`mat4x4<f32>`,viewProjectionMatrix1:`mat4x4<f32>`,projectCenter0:`vec4<f32>`,projectCenter1:`vec4<f32>`}};var Fh=[no];var Wh=[`vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)`,`vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)`,`vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)`,`fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)`];var Gh=[];function tc(o){let t=fe$2.getDefaultShaderAssembler(o);for(let r of Fh)t.addDefaultModule(r);t._hookFunctions.length=0;let e=o===`glsl`?Wh:Gh;for(let r of e)t.addShaderHook(r);return t}var gs=class{constructor(t={}){this._pool=[],this.opts={overAlloc:2,poolSize:100},this.setOptions(t)}setOptions(t){Object.assign(this.opts,t)}allocate(t,e,{size:r=1,type:i,padding:s=0,copy:n=!1,initialize:a=!1,maxCount:c}){let l=i||t&&t.constructor||Float32Array,u=e*r+s;if(ArrayBuffer.isView(t)){if(u<=t.length)return t;if(u*t.BYTES_PER_ELEMENT<=t.buffer.byteLength)return new l(t.buffer,0,u)}let f=Infinity;c&&(f=c*r+s);let d=this._allocate(l,u,a,f);return t&&n?d.set(t):a||d.fill(0,0,4),this._release(t),d}release(t){this._release(t)}_allocate(t,e,r,i){let s=Math.max(Math.ceil(e*this.opts.overAlloc),1);s>i&&(s=i);let n=this._pool,a=t.BYTES_PER_ELEMENT*s,c=n.findIndex(l=>l.byteLength>=a);if(c>=0){let l=new t(n.splice(c,1)[0],0,s);return r&&l.fill(0),l}return new t(s)}_release(t){if(!ArrayBuffer.isView(t))return;let e=this._pool,{buffer:r}=t,{byteLength:i}=r,s=e.findIndex(n=>n.byteLength>=i);s<0?e.push(r):(s>0||e.length<this.opts.poolSize)&&e.splice(s,0,r),e.length>this.opts.poolSize&&e.shift()}};var dt=new gs;function Me(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function It(o,t){let e=o%t;return e<0?t+e:e}function rc(o){return[o[12],o[13],o[14]]}function oc(o){return{left:Se(o[3]+o[0],o[7]+o[4],o[11]+o[8],o[15]+o[12]),right:Se(o[3]-o[0],o[7]-o[4],o[11]-o[8],o[15]-o[12]),bottom:Se(o[3]+o[1],o[7]+o[5],o[11]+o[9],o[15]+o[13]),top:Se(o[3]-o[1],o[7]-o[5],o[11]-o[9],o[15]-o[13]),near:Se(o[3]+o[2],o[7]+o[6],o[11]+o[10],o[15]+o[14]),far:Se(o[3]-o[2],o[7]-o[6],o[11]-o[10],o[15]-o[14])}}var ec=new Z$2;function Se(o,t,e,r){ec.set(o,t,e);let i=ec.len();return{distance:r/i,normal:new Z$2(-o/i,-t/i,-e/i)}}function Yh(o){return o-Math.fround(o)}var yr;function Ce(o,t){let{size:e=1,startIndex:r=0}=t,i=t.endIndex!==void 0?t.endIndex:o.length,s=(i-r)/e;yr=dt.allocate(yr,s,{type:Float32Array,size:e*2});let n=r,a=0;for(;n<i;){for(let c=0;c<e;c++){let l=o[n++];yr[a+c]=l,yr[a+c+e]=Yh(l)}a+=e*2}return yr.subarray(0,s*e*2)}function ic(o){let t=null,e=!1;for(let r of o)r&&(t?(e||(t=[[t[0][0],t[0][1]],[t[1][0],t[1][1]]],e=!0),t[0][0]=Math.min(t[0][0],r[0][0]),t[0][1]=Math.min(t[0][1],r[0][1]),t[1][0]=Math.max(t[1][0],r[1][0]),t[1][1]=Math.max(t[1][1],r[1][1])):t=r);return t}var $h=Math.PI/180;var Hh=Me();var sc=[0,0,0];var qh={unitsPerMeter:[1,1,1],metersPerUnit:[1,1,1]};function Zh({width:o,height:t,orthographic:e,fovyRadians:r,focalDistance:i,padding:s,near:n,far:a}){let c=o/t,l=e?new U$2().orthographic({fovy:r,aspect:c,focalDistance:i,near:n,far:a}):new U$2().perspective({fovy:r,aspect:c,near:n,far:a});if(s){let{left:u=0,right:f=0,top:d=0,bottom:p=0}=s,m=za$1((u+o-f)/2,0,o)-o/2,g=za$1((d+t-p)/2,0,t)-t/2;l[8]-=m*2/o,l[9]+=g*2/t}return l}var Ie=(()=>{class o{constructor(e={}){this._frustumPlanes={},this.id=e.id||this.constructor.displayName||`viewport`,this.x=e.x||0,this.y=e.y||0,this.width=e.width||1,this.height=e.height||1,this.zoom=e.zoom||0,this.padding=e.padding,this.distanceScales=e.distanceScales||qh,this.focalDistance=e.focalDistance||1,this.position=e.position||sc,this.modelMatrix=e.modelMatrix||null;let{longitude:r,latitude:i}=e;this.isGeospatial=Number.isFinite(i)&&Number.isFinite(r),this._initProps(e),this._initMatrices(e),this.equals=this.equals.bind(this),this.project=this.project.bind(this),this.unproject=this.unproject.bind(this),this.projectPosition=this.projectPosition.bind(this),this.unprojectPosition=this.unprojectPosition.bind(this),this.projectFlat=this.projectFlat.bind(this),this.unprojectFlat=this.unprojectFlat.bind(this)}get subViewports(){return null}get metersPerPixel(){return this.distanceScales.metersPerUnit[2]/this.scale}get projectionMode(){return this.isGeospatial?this.zoom<12?z.WEB_MERCATOR:z.WEB_MERCATOR_AUTO_OFFSET:z.IDENTITY}equals(e){return e instanceof o?this===e?!0:e.width===this.width&&e.height===this.height&&e.scale===this.scale&&e.projectionMode===this.projectionMode&&e.resolution===this.resolution&&Mt$2(e.distanceScales.unitsPerMeter,this.distanceScales.unitsPerMeter)&&Mt$2(e.projectionMatrix,this.projectionMatrix)&&Mt$2(e.viewMatrix,this.viewMatrix):!1}project(e,{topLeft:r=!0}={}){let s=zt(this.projectPosition(e),this.pixelProjectionMatrix),[n,a]=s,c=r?a:this.height-a;return e.length===2?[n,c]:[n,c,s[2]]}unproject(e,{topLeft:r=!0,targetZ:i}={}){let[s,n,a]=e,c=r?n:this.height-n,l=i&&i*this.distanceScales.unitsPerMeter[2],u=Ft([s,c,a],this.pixelUnprojectionMatrix,l),[f,d,p]=this.unprojectPosition(u);return Number.isFinite(a)?[f,d,p]:Number.isFinite(i)?[f,d,i]:[f,d]}projectPosition(e){let[r,i]=this.projectFlat(e);return[r,i,(e[2]||0)*this.distanceScales.unitsPerMeter[2]]}unprojectPosition(e){let[r,i]=this.unprojectFlat(e);return[r,i,(e[2]||0)*this.distanceScales.metersPerUnit[2]]}projectFlat(e){if(this.isGeospatial){let r=st(e);return r[1]=za$1(r[1],-318,830),r}return e}unprojectFlat(e){return this.isGeospatial?et(e):e}getBounds(e={}){let r={targetZ:e.z||0},i=this.unproject([0,0],r),s=this.unproject([this.width,0],r),n=this.unproject([0,this.height],r),a=this.unproject([this.width,this.height],r);return[Math.min(i[0],s[0],n[0],a[0]),Math.min(i[1],s[1],n[1],a[1]),Math.max(i[0],s[0],n[0],a[0]),Math.max(i[1],s[1],n[1],a[1])]}getDistanceScales(e){return e&&this.isGeospatial?Ae({longitude:e[0],latitude:e[1],highPrecision:!0}):this.distanceScales}containsPixel({x:e,y:r,width:i=1,height:s=1}){return e<this.x+this.width&&this.x<e+i&&r<this.y+this.height&&this.y<r+s}getFrustumPlanes(){return this._frustumPlanes.near?this._frustumPlanes:(Object.assign(this._frustumPlanes,oc(this.viewProjectionMatrix)),this._frustumPlanes)}panByPosition(e,r,i){return null}_initProps(e){let r=e.longitude,i=e.latitude;this.isGeospatial&&(Number.isFinite(e.zoom)||(this.zoom=hs({latitude:i})+Math.log2(this.focalDistance)),this.distanceScales=e.distanceScales||Ae({latitude:i,longitude:r}));let s=Math.pow(2,this.zoom);this.scale=s;let{position:n,modelMatrix:a}=e,c=sc;if(n&&(c=a?new U$2(a).transformAsVector(n,[]):n),this.isGeospatial){let l=this.projectPosition([r,i,0]);this.center=new Z$2(c).scale(this.distanceScales.unitsPerMeter).add(l)}else this.center=this.projectPosition(c)}_initMatrices(e){let{viewMatrix:r=Hh,projectionMatrix:i=null,orthographic:s=!1,fovyRadians:n,fovy:a=75,near:c=.1,far:l=1e3,padding:u=null,focalDistance:f=1}=e;this.viewMatrixUncentered=r,this.viewMatrix=new U$2().multiplyRight(r).translate(new Z$2(this.center).negate()),this.projectionMatrix=i||Zh({width:this.width,height:this.height,orthographic:s,fovyRadians:n||a*$h,focalDistance:f,padding:u,near:c,far:l});let d=Me();zi$1.multiply(d,d,this.projectionMatrix),zi$1.multiply(d,d,this.viewMatrix),this.viewProjectionMatrix=d,this.viewMatrixInverse=zi$1.invert([],this.viewMatrix)||this.viewMatrix,this.cameraPosition=rc(this.viewMatrixInverse);let p=Me(),m=Me();zi$1.scale(p,p,[this.width/2,-this.height/2,1]),zi$1.translate(p,p,[1,-1,0]),zi$1.multiply(m,p,this.viewProjectionMatrix),this.pixelProjectionMatrix=m,this.pixelUnprojectionMatrix=zi$1.invert(Me(),this.pixelProjectionMatrix),this.pixelUnprojectionMatrix||A.warn(`Pixel project matrix not invertible`)()}}return o.displayName=`Viewport`,o})();var se=(()=>{class o extends Ie{constructor(e={}){let{latitude:r$15=0,longitude:i=0,zoom:s$4=0,pitch:n=0,bearing:a=0,nearZMultiplier:c=.1,farZMultiplier:l=1.01,nearZ:u,farZ:f,orthographic:d=!1,projectionMatrix:p,repeat:m=!1,worldOffset:g=0,position:y,padding:b,legacyMeterSizes:v=!1}=e,{width:w,height:x,altitude:E=1.5}=e,S=Math.pow(2,s$4);w=w||1,x=x||1;let L,I=null;if(p)E=p[5]/2,L=Ct(E);else{e.fovy?(L=e.fovy,E=ie(L)):L=Ct(E);let M;if(b){let{top:V=0,bottom:W=0}=b;M=[0,za$1((V+x-W)/2,0,x)-x/2]}I=ds({width:w,height:x,scale:S,center:y&&[0,0,y[2]*pr(r$15)],offset:M,pitch:n,fovy:L,nearZMultiplier:c,farZMultiplier:l}),Number.isFinite(u)&&(I.near=u),Number.isFinite(f)&&(I.far=f)}let C=co({height:x,pitch:n,bearing:a,scale:S,altitude:E});g&&(C=new U$2().translate([512*g,0,0]).multiplyLeft(C)),super(s(r(s(r({},e),{width:w,height:x,viewMatrix:C,longitude:i,latitude:r$15,zoom:s$4}),I),{fovy:L,focalDistance:E})),this.latitude=r$15,this.longitude=i,this.zoom=s$4,this.pitch=n,this.bearing=a,this.altitude=E,this.fovy=L,this.orthographic=d,this._subViewports=m?[]:null,this._pseudoMeters=v,Object.freeze(this)}get subViewports(){if(this._subViewports&&!this._subViewports.length){let e=this.getBounds(),r$16=Math.floor((e[0]+180)/360),i=Math.ceil((e[2]-180)/360);for(let s$5=r$16;s$5<=i;s$5++){let n=s$5?new o(s(r({},this),{worldOffset:s$5})):this;this._subViewports.push(n)}}return this._subViewports}equals(e){return e instanceof o&&e._pseudoMeters===this._pseudoMeters&&super.equals(e)}projectPosition(e){if(this._pseudoMeters)return super.projectPosition(e);let[r,i]=this.projectFlat(e);return[r,i,(e[2]||0)*pr(e[1])]}unprojectPosition(e){if(this._pseudoMeters)return super.unprojectPosition(e);let[r,i]=this.unprojectFlat(e);return[r,i,(e[2]||0)/pr(i)]}addMetersToLngLat(e,r){return mr(e,r)}panByPosition(e,r,i){let s=Ft(r,this.pixelUnprojectionMatrix),n=this.projectFlat(e),a=Ki$1.add([],n,Ki$1.negate([],s)),c=Ki$1.add([],this.center,a),[l,u]=this.unprojectFlat(c);return{longitude:l,latitude:u}}panByPosition3D(e,r){let i=e[2]||0,s=Ki$1.sub([],e,this.unproject(r,{targetZ:i}));return{longitude:this.longitude+s[0],latitude:this.latitude+s[1]}}getBounds(e={}){let r=uo(this,e.z||0);return[Math.min(r[0][0],r[1][0],r[2][0],r[3][0]),Math.min(r[0][1],r[1][1],r[2][1],r[3][1]),Math.max(r[0][0],r[1][0],r[2][0],r[3][0]),Math.max(r[0][1],r[1][1],r[2][1],r[3][1])]}fitBounds(e,r$17={}){let{width:i,height:s}=this,{longitude:n,latitude:a,zoom:c}=lo(r({width:i,height:s,bounds:e},r$17));return new o({width:i,height:s,longitude:n,latitude:a,zoom:c})}}return o.displayName=`WebMercatorViewport`,o})();function ne(o,t=()=>!0){return Array.isArray(o)?nc(o,t,[]):t(o)?[o]:[]}function nc(o,t,e){let r=-1;for(;++r<o.length;){let i=o[r];Array.isArray(i)?nc(i,t,e):t(i)&&e.push(i)}return e}function ys({target:o,source:t,start:e=0,count:r=1}){let i=t.length,s=r*i,n=0;for(let a=e;n<i;n++)o[a++]=t[n];for(;n<s;)n<s-n?(o.copyWithin(e+n,e,e+n),n*=2):(o.copyWithin(e+n,e,e+s-n),n=s);return o}function B(o,t,e){if(o===t)return!0;if(!e||!o||!t)return!1;if(Array.isArray(o)){if(!Array.isArray(t)||o.length!==t.length)return!1;for(let r=0;r<o.length;r++)if(!B(o[r],t[r],e-1))return!1;return!0}if(Array.isArray(t))return!1;if(typeof o==`object`&&typeof t==`object`){let r=Object.keys(o),i=Object.keys(t);if(r.length!==i.length)return!1;for(let s of r)if(!t.hasOwnProperty(s)||!B(o[s],t[s],e-1))return!1;return!0}return!1}function R(o,t){if(!o)throw new Error(t||`deck.gl: assertion failed.`)}var Wt={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`};var Re=Symbol.for(`component`);var nt=Symbol.for(`propTypes`);var po=Symbol.for(`deprecatedProps`);var Rt=Symbol.for(`asyncPropDefaults`);var xt=Symbol.for(`asyncPropOriginal`);var pt=Symbol.for(`asyncPropResolved`);var _s={};function ac(o){_s=o}function j(o,t,e,r){A.level>0&&_s[o]&&_s[o].call(null,t,e,r)}var mo=class{constructor(t,e,r){this._loadCount=0,this._subscribers=new Set,this.id=t,this.context=r,this.setData(e)}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,e){if(t===this._data&&!e)return;this._data=t;let r=++this._loadCount,i=t;typeof t==`string`&&(i=ge(t)),i instanceof Promise?(this.isLoaded=!1,this._loader=i.then(s=>{this._loadCount===r&&(this.isLoaded=!0,this._error=void 0,this._content=s)}).catch(s=>{this._loadCount===r&&(this.isLoaded=!0,this._error=s||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=t);for(let s of this._subscribers)s.onChange(this.getData())}};var go=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:e,forceUpdate:r=!1,persistent:i=!0}){let s=this._resources[t];s?s.setData(e,r):(s=new mo(t,e,this._context),this._resources[t]=s),s.persistent=i}remove(t){let e=this._resources[t];e&&(e.delete(),delete this._resources[t])}unsubscribe({consumerId:t}){let e=this._consumers[t];if(e){for(let r in e){let i=e[r],s=this._resources[i.resourceId];s&&s.unsubscribe(i)}delete this._consumers[t],this.prune()}}subscribe({resourceId:t,onChange:e,consumerId:r,requestId:i=`default`}){let{_resources:s,protocol:n}=this;t.startsWith(n)&&(t=t.replace(n,``),s[t]||this.add({resourceId:t,data:null,persistent:!1}));let a=s[t];if(this._track(r,i,a,e),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,e,r,i){let s=this._consumers,n=s[t]=s[t]||{},a=n[e],c=a&&a.resourceId&&this._resources[a.resourceId];c&&(c.unsubscribe(a),this.prune()),r&&(a?(a.onChange=i,a.resourceId=r.id):a={onChange:i,resourceId:r.id},n[e]=a,r.subscribe(a))}_prune(){this._pruneRequest=null;for(let t of Object.keys(this._resources)){let e=this._resources[t];!e.persistent&&!e.inUse()&&(e.delete(),delete this._resources[t])}}};var Jh=`layerManager.setLayers`;var Qh=`layerManager.activateViewport`;var yo=class{constructor(t,e){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{j(Qh,this,a),a&&(this.context.viewport=a)};let{deck:r,stats:i,viewport:s,timeline:n}=e||{};this.layers=[],this.resourceManager=new go({device:t,protocol:`deck://`}),this.context={mousePosition:null,userData:{},layerManager:this,device:t,gl:t?.gl,deck:r,shaderAssembler:tc(t?.info?.shadingLanguage||`glsl`),defaultShaderModules:[ms],renderPass:void 0,stats:i||new j$3({id:`deck.gl`}),viewport:s||new Ie({id:`DEFAULT-INITIAL-VIEWPORT`}),timeline:n||new ei$1,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 e=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);for(let r of this.layers){let i=r.getNeedsRedraw(t);e=e||i}return e}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(e=>t.find(r=>e.id.indexOf(r)===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,e){j(Jh,this,e,t),this._lastRenderedLayers=t;let r=ne(t,Boolean);for(let i of r)i.context=this.context;this._updateLayers(this.layers,r)}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:e}=this.context;e.find(r=>r.name===t.name)||(e.push(t),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(t){let{defaultShaderModules:e}=this.context,r=e.findIndex(i=>i.name===t.name);r>=0&&(e.splice(r,1),this._defaultShaderModulesChanged=!0)}_handleError(t,e,r){r.raiseError(e,`${t} of ${r}`)}_updateLayers(t,e){let r={};for(let n of t)r[n.id]?A.warn(`Multiple old layers with same id ${n.id}`)():r[n.id]=n;if(this._defaultShaderModulesChanged){for(let n of t)n.setNeedsUpdate(),n.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let i=[];this._updateSublayersRecursively(e,r,i),this._finalizeOldLayers(r);let s=!1;for(let n of i)if(n.hasUniformTransition()){s=`Uniform transition in ${n}`;break}this._needsUpdate=s,this.layers=i}_updateSublayersRecursively(t,e,r){for(let i of t){i.context=this.context;let s=e[i.id];s===null&&A.warn(`Multiple new layers with same id ${i.id}`)(),e[i.id]=null;let n=null;try{this._debug&&s!==i&&i.validateProps(),s?(this._transferLayerState(s,i),this._updateLayer(i)):this._initializeLayer(i),r.push(i),n=i.isComposite?i.getSubLayers():null}catch(a){this._handleError(`matching`,a,i)}n&&this._updateSublayersRecursively(n,e,r)}}_finalizeOldLayers(t){for(let e in t){let r=t[e];r&&this._finalizeLayer(r)}}_initializeLayer(t){try{t._initialize(),t.lifecycle=Wt.INITIALIZED}catch(e){this._handleError(`initialization`,e,t)}}_transferLayerState(t,e){e._transferState(t),e.lifecycle=Wt.MATCHED,e!==t&&(t.lifecycle=Wt.AWAITING_GC)}_updateLayer(t){try{t._update()}catch(e){this._handleError(`update`,e,t)}}_finalizeLayer(t){this._needsRedraw=this._needsRedraw||`finalized ${t}`,t.lifecycle=Wt.AWAITING_FINALIZATION;try{t._finalize(),t.lifecycle=Wt.FINALIZED}catch(e){this._handleError(`finalization`,e,t)}}};var Gt=`default-canvas`;var _o=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._eventManagers=t.eventManagers||{},this._viewEventManagers={},this._eventCallbacks={onViewStateChange:t.onViewStateChange,onInteractionStateChange:t.onInteractionStateChange},this._pickPosition=t.pickPosition,this._getCanvasContext=t.getCanvasContext,Object.seal(this),this.setProps(t)}finalize(){for(let t in this.controllers){let e=this.controllers[t];e&&e.finalize()}this.controllers={}}needsRedraw(t={clearRedrawFlags:!1}){let e=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),e}setNeedsUpdate(t){this._needsUpdate=this._needsUpdate||t,this._needsRedraw=this._needsRedraw||t}updateViewStates(){for(let t in this.controllers){let e=this.controllers[t];e&&e.updateTransition()}}getViewports(t){return t?this._viewports.filter(e=>{let r=!t.canvasId||this.getCanvasId(e.id)===t.canvasId,i=!(`x`in t)||e.containsPixel(t);return r&&i}):this._viewports}getViews(){let t={};return this.views.forEach(e=>{t[e.id]=e}),t}getView(t){return this.views.find(e=>e.id===t)}getViewState(t){let e=typeof t==`string`?this.getView(t):t,r=e&&this.viewState[e.getViewStateId()]||this.viewState;return e?e.filterViewState(r):r}getViewport(t){return this._viewportMap[t]}getCanvasId(t){let e=typeof t==`string`?this.getView(t):t;return e?this._viewEventManagers[e.id]?.canvasId||this._getCanvasIdFromView(e):void 0}unproject(t,e){let r=this.getViewports(),i={x:t[0],y:t[1]};for(let s=r.length-1;s>=0;--s){let n=r[s];if(n.containsPixel(i)){let a=t.slice();return a[0]-=n.x,a[1]-=n.y,n.unproject(a,e)}}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),`pickPosition`in t&&(this._pickPosition=t.pickPosition),`eventManagers`in t&&this._setEventManagers(t.eventManagers||{}),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,e){(t!==this.width||e!==this.height)&&(this.width=t,this.height=e,this.setNeedsUpdate(`Size changed`))}_setViews(t){t=ne(t,Boolean),this._diffViews(t,this.views)&&this.setNeedsUpdate(`views changed`),this.views=t}_setViewState(t){t?(!B(t,this.viewState,3)&&this.setNeedsUpdate(`viewState changed`),this.viewState=t):A.warn("missing `viewState` or `initialViewState`")()}_setEventManagers(t){this._eventManagers!==t&&(this._eventManagers=t,this.setNeedsUpdate(`eventManagers changed`))}_getCanvasIdFromView(t){return t.props.canvasId||this._getCanvasContext?.(t.id)?.id||Gt}_getCanvasDimensions(t){let[r,i]=(this._getCanvasContext?.(t.id))?.getCSSSize()||[this.width,this.height];return{width:r,height:i}}_getViewEventManager(t){let e=this.getCanvasId(t)||Gt;return{canvasId:e,eventManager:this._eventManagers[e]||this._eventManager}}_startViewportRebuild(){let t=this.controllers,e=this._viewEventManagers;return this._viewports=[],this.controllers={},this._viewEventManagers={},{oldControllers:t,oldViewEventManagers:e}}_getReusableController(t,e,r){return t&&(e?.canvasId!==r.canvasId||e?.eventManager!==r.eventManager)?(t.finalize(),null):t}_createController(t,e){let r$18=e.type;return new r$18({timeline:this.timeline,eventManager:this._getViewEventManager(t).eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:s=>this.getView(t.id)?.makeViewport(r({viewState:s},this._getCanvasDimensions(t))),pickPosition:(s,n)=>this._pickPosition?.(s,n,t.id)})}_updateController(t,e,r$19,i){let s$6=t.controller;if(s$6&&r$19){let n=s(r(r({},e),s$6),{id:t.id,x:r$19.x,y:r$19.y,width:r$19.width,height:r$19.height});return(!i||i.constructor!==s$6.type)&&(i=this._createController(t,n)),i&&i.setProps(n),i}return null}_rebuildViewports(){let{views:t}=this,{oldControllers:e,oldViewEventManagers:r}=this._startViewportRebuild(),i=!1;for(let s=t.length;s--;){let n=t[s],{width:a,height:c}=this._getCanvasDimensions(n),l=this._getViewEventManager(n);this._viewEventManagers[n.id]=l;let u=this.getViewState(n),f=n.makeViewport({viewState:u,width:a,height:c}),d=this._getReusableController(e[n.id],r[n.id],l),p=!!n.controller;p&&!d&&(i=!0),(i||!p)&&d&&(d.finalize(),d=null),this.controllers[n.id]=this._updateController(n,u,f,d),f&&this._viewports.unshift(f)}for(let s in e){let n=e[s];n&&!this.controllers[s]&&n.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(t=>{t.id&&(this._viewportMap[t.id]=this._viewportMap[t.id]||t)})}_diffViews(t,e){return t.length!==e.length?!0:t.some((r,i)=>!t[i].equals(e[i]))}};var td=/^(?:\d+\.?\d*|\.\d+)$/;function X(o){switch(typeof o){case`number`:if(!Number.isFinite(o))throw new Error(`Could not parse position string ${o}`);return{type:`literal`,value:o};case`string`:try{return new bs(ed(o)).parseExpression()}catch(t){let e=t instanceof Error?t.message:String(t);throw new Error(`Could not parse position string ${o}: ${e}`)}default:throw new Error(`Could not parse position string ${o}`)}}function ws(o,t){switch(o.type){case`literal`:return o.value;case`percentage`:return Math.round(o.value*t);case`binary`:let e=ws(o.left,t),r=ws(o.right,t);return o.operator===`+`?e+r:e-r;default:throw new Error(`Unknown layout expression type`)}}function K(o,t){return ws(o,t)}function ed(o){let t=[],e=0;for(;e<o.length;){let r=o[e];if(/\s/.test(r)){e++;continue}if(r===`+`||r===`-`||r===`(`||r===`)`||r===`%`){t.push({type:`symbol`,value:r}),e++;continue}if(cc(r)||r===`.`){let i=e,s=r===`.`;for(e++;e<o.length;){let a=o[e];if(cc(a)){e++;continue}if(a===`.`&&!s){s=!0,e++;continue}break}let n=o.slice(i,e);if(!td.test(n))throw new Error(`Invalid number token`);t.push({type:`number`,value:parseFloat(n)});continue}if(lc(r)){let i=e;for(;e<o.length&&lc(o[e]);)e++;let s=o.slice(i,e).toLowerCase();t.push({type:`word`,value:s});continue}throw new Error(`Invalid token in position string`)}return t}var bs=class{constructor(t){this.index=0,this.tokens=t}parseExpression(){let t=this.parseBinaryExpression();if(this.index<this.tokens.length)throw new Error(`Unexpected token at end of expression`);return t}parseBinaryExpression(){let t=this.parseFactor(),e=this.peek();for(;rd(e);){this.index++;let r=this.parseFactor();t={type:`binary`,operator:e.value,left:t,right:r},e=this.peek()}return t}parseFactor(){let t=this.peek();if(!t)throw new Error(`Unexpected end of expression`);if(t.type===`symbol`&&t.value===`+`)return this.index++,this.parseFactor();if(t.type===`symbol`&&t.value===`-`){this.index++;return{type:`binary`,operator:`-`,left:{type:`literal`,value:0},right:this.parseFactor()}}if(t.type===`symbol`&&t.value===`(`){this.index++;let e=this.parseBinaryExpression();if(!this.consumeSymbol(`)`))throw new Error(`Missing closing parenthesis`);return e}if(t.type===`word`&&t.value===`calc`){if(this.index++,!this.consumeSymbol(`(`))throw new Error(`Missing opening parenthesis after calc`);let e=this.parseBinaryExpression();if(!this.consumeSymbol(`)`))throw new Error(`Missing closing parenthesis`);return e}if(t.type===`number`){this.index++;let e=t.value,r=this.peek();return r&&r.type===`symbol`&&r.value===`%`?(this.index++,{type:`percentage`,value:e/100}):r&&r.type===`word`&&r.value===`px`?(this.index++,{type:`literal`,value:e}):{type:`literal`,value:e}}throw new Error(`Unexpected token in expression`)}consumeSymbol(t){let e=this.peek();return e&&e.type===`symbol`&&e.value===t?(this.index++,!0):!1}peek(){return this.tokens[this.index]||null}};function cc(o){return o>=`0`&&o<=`9`}function lc(o){return o>=`a`&&o<=`z`||o>=`A`&&o<=`Z`}function rd(o){return!!(o&&o.type===`symbol`&&(o.value===`+`||o.value===`-`))}function uc(o,t){let e=r({},o);for(let r in t)r!==`id`&&(Array.isArray(e[r])&&Array.isArray(t[r])?e[r]=od(e[r],t[r]):e[r]=t[r]);return e}function od(o,t){o=o.slice();for(let e=0;e<t.length;e++){let r=t[e];Number.isFinite(r)&&(o[e]=r)}return o}var Le=class{constructor(t){let{id:e,x:r$20=0,y:i=0,width:s$7=`100%`,height:n=`100%`,padding:a=null}=t;this.id=e||this.constructor.displayName||`view`,this.props=s(r({},t),{id:this.id}),this._x=X(r$20),this._y=X(i),this._width=X(s$7),this._height=X(n),this._padding=a&&{left:X(a.left||0),right:X(a.right||0),top:X(a.top||0),bottom:X(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(t){return this===t?!0:this.constructor===t.constructor&&B(this.props,t.props,2)}clone(t){let e=this.constructor;return new e(r(r({},this.props),t))}makeViewport({width:t,height:e,viewState:r$21}){r$21=this.filterViewState(r$21);let i=this.getDimensions({width:t,height:e});if(!i.height||!i.width)return null;return new(this.getViewportType(r$21))(r(r(r({},r$21),this.props),i))}getViewStateId(){let{viewState:t}=this.props;return typeof t==`string`?t:t?.id||this.id}filterViewState(t){return this.props.viewState&&typeof this.props.viewState==`object`?this.props.viewState.id?uc(t,this.props.viewState):this.props.viewState:t}getDimensions({width:t,height:e}){let r={x:K(this._x,t),y:K(this._y,e),width:K(this._width,t),height:K(this._height,e)};return this._padding&&(r.padding={left:K(this._padding.left,t),top:K(this._padding.top,e),right:K(this._padding.right,t),bottom:K(this._padding.bottom,e)}),r}get controller(){let t=this.props.controller;return t?t===!0?{type:this.ControllerType}:typeof t==`function`?{type:t}:r({type:this.ControllerType},t):null}};var Pt=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:e}=this;this._handle=t.addChannel({delay:t.getTime(),duration:e.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 fc=()=>{};var hc={mode:`preserve`};var id={mode:`hard`};var vs={BREAK:1,SNAP_TO_END:2,IGNORE:3};var sd=o=>o;var nd=vs.BREAK;var wo=class{constructor(t){this._onTransitionUpdate=e=>{let{time:r$22,settings:{interpolator:i,startProps:s,endProps:n,duration:a,easing:c}}=e,l=c(r$22/a),u=i.interpolateProps(s,n,l);this.propsInTransition=this.getControllerState(r(r({},this.props),u),hc).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=t.getControllerState,this.propsInTransition=null,this.transition=new Pt(t.timeline),this.onViewStateChange=t.onViewStateChange||fc,this.onStateChange=t.onStateChange||fc}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(t){let e=!1,r$23=this.props;if(this.props=t,!r$23||this._shouldIgnoreViewportChange(r$23,t))return!1;if(this._isTransitionEnabled(t)){let i=r$23;if(this.transition.inProgress){let{interruption:s,endProps:n}=this.transition.settings;i=r(r({},r$23),s===vs.SNAP_TO_END?n:this.propsInTransition||r$23)}this._triggerTransition(i,t),e=!0}else this.transition.cancel();return e}updateTransition(){this.transition.update()}_isTransitionEnabled(t){let{transitionDuration:e,transitionInterpolator:r}=t;return(e>0||e===`auto`)&&!!r}_isUpdateDueToCurrentTransition(t){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(t,this.propsInTransition):!1}_shouldIgnoreViewportChange(t,e){return this.transition.inProgress?this.transition.settings.interruption===vs.IGNORE||this._isUpdateDueToCurrentTransition(e):this._isTransitionEnabled(e)?e.transitionInterpolator.arePropsEqual(t,e):!0}_triggerTransition(t,e){let r=this.getControllerState(t,hc),i=this.getControllerState(e,id).shortestPathFrom(r),s=e.transitionInterpolator,n=s.getDuration?s.getDuration(t,e):e.transitionDuration;if(n===0)return;let a=s.initializeProps(t,i);this.propsInTransition={};let c={duration:n,easing:e.transitionEasing||sd,interpolator:s,interruption:e.transitionInterruption||nd,startProps:a.start,endProps:a.end,onStart:e.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(e.onTransitionInterrupt),onEnd:this._onTransitionEnd(e.onTransitionEnd)};this.transition.start(c),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(t){return e=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),t?.(e)}}};var ke=class{constructor(t){let{compare:e,extract:r,required:i}=t;this._propsToCompare=e,this._propsToExtract=r||e,this._requiredProps=i}arePropsEqual(t,e){for(let r of this._propsToCompare)if(!(r in t)||!(r in e)||!Mt$2(t[r],e[r]))return!1;return!0}initializeProps(t,e){let r={},i={};for(let s of this._propsToExtract)(s in t||s in e)&&(r[s]=t[s],i[s]=e[s]);return this._checkRequiredProps(r),this._checkRequiredProps(i),{start:r,end:i}}getDuration(t,e){return e.transitionDuration}_checkRequiredProps(t){this._requiredProps&&this._requiredProps.forEach(e=>{let r=t[e];R(Number.isFinite(r)||Array.isArray(r),`${e} is required for transition`)})}};var ad=[`longitude`,`latitude`,`zoom`,`bearing`,`pitch`];var cd=[`longitude`,`latitude`,`zoom`];var Yt=class extends ke{constructor(t={}){let e=Array.isArray(t)?t:t.transitionProps,r=Array.isArray(t)?{}:t;r.transitionProps=Array.isArray(e)?{compare:e,required:e}:e||{compare:ad,required:cd},super(r.transitionProps),this.opts=r}initializeProps(t,e){let r=super.initializeProps(t,e),{makeViewport:i,around:s}=this.opts;if(i&&s){let n=i(t),a=i(e),c=n.unproject(s);r.start.around=s,Object.assign(r.end,{around:a.project(c),aroundPosition:c,width:e.width,height:e.height})}return r}interpolateProps(t,e,r$24){let i={};for(let s of this._propsToExtract)i[s]=Ni$1(t[s]||0,e[s]||0,r$24);if(e.aroundPosition&&this.opts.makeViewport){let s=this.opts.makeViewport(r(r({},e),i));Object.assign(i,s.panByPosition(e.aroundPosition,Ni$1(t.around,e.around,r$24)))}return i}};var Et={transitionDuration:0};var ld=300;var ud=300;var xs=o=>1-(1-o)*(1-o);var fd=o=>o===1?1:1-Math.pow(2,-10*o);var ae={WHEEL:[`wheel`],PAN:[`panstart`,`panmove`,`panend`],PINCH:[`pinchstart`,`pinchmove`,`pinchend`],MULTI_PAN:[`multipanstart`,`multipanmove`,`multipanend`],DOUBLE_CLICK:[`dblclick`],DOUBLE_CLICK_DRAG:[`dblclickdragstart`,`dblclickdragmove`,`dblclickdragend`,`dblclickdragcancel`],KEYBOARD:[`keydown`]};var ce={};var Oe=class{constructor(t){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this._multiPanMode=null,this._multiPanStartCenter=null,this._doubleClickDragAnchor=null,this._suppressDoubleClickUntil=0,this.invertPan=!1,this.dragMode=`rotate`,this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.doubleClickDragZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.multiTouchDrag=null,this.trackpadGesture=!1,this.zoomAround=`pointer`,this.keyboard=!0,this.transitionManager=new wo(s(r({},t),{getControllerState:(e,r$25)=>new this.ControllerState(s(r({},e),{constraintContext:r$25,makeViewport:t.makeViewport})),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,this.pickPosition=t.pickPosition}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 e=this._eventStartBlocked;switch(t.type){case`panstart`:return e?!1:this._onPanStart(t);case`panmove`:return this._onPan(t);case`panend`:return this._onPanEnd(t);case`pinchstart`:return e||!this._isTrackpadGestureAllowed(t)?!1:this._onPinchStart(t);case`pinchmove`:return this._isTrackpadGestureAllowed(t)?this._onPinch(t):!1;case`pinchend`:return this._isTrackpadGestureAllowed(t)?this._onPinchEnd(t):!1;case`multipanstart`:return e?!1:this._onMultiPanStart(t);case`multipanmove`:return this._onMultiPan(t);case`multipanend`:return this._onMultiPanEnd(t);case`dblclick`:return this._onDoubleClick(t);case`dblclickdragstart`:return e?!1:this._onDoubleClickDragStart(t);case`dblclickdragmove`:return this._onDoubleClickDrag(t);case`dblclickdragend`:case`dblclickdragcancel`:return this._onDoubleClickDragEnd(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(r(r({makeViewport:this.makeViewport},this.props),this.state)),this._controllerState}getCenter(t){let{x:e,y:r}=this.props,{offsetCenter:i}=t;return[i.x-e,i.y-r]}getZoomPosition(t){if(this.zoomAround===`pointer`)return t;let e=this.makeViewport(this.controllerState.getViewportProps()),[r,i]=zt(e.center,e.pixelProjectionMatrix);return[r,i]}isPointInBounds(t,e){let{width:r,height:i}=this.props;if(e&&e.handled)return!1;let s=t[0]>=0&&t[0]<=r&&t[1]>=0&&t[1]<=i;return s&&e&&e.stopPropagation(),s}isFunctionKeyPressed(t){let{srcEvent:e}=t;return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(t){let e=setTimeout(()=>{this._eventStartBlocked===e&&(this._eventStartBlocked=null)},t);this._eventStartBlocked=e}setProps(t){t.maxBoundsPadding===void 0&&(t.maxBoundsPadding=null),t.dragMode&&(this.dragMode=t.dragMode);let e=this.props;this.props=t,`transitionInterpolator`in t||(t.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(t);let{inertia:r$26}=t;this.inertia=Number.isFinite(r$26)?r$26:r$26===!0?ld:0;let{scrollZoom:i=!0,dragPan:s$8=!0,dragRotate:n=!0,doubleClickZoom:a=!0,doubleClickDragZoom:c=!1,touchZoom:l=!0,touchRotate:u=!1,multiTouchDrag:f=u?`rotate`:null,trackpadGesture:d=!1,zoomAround:p=`pointer`,keyboard:m=!0}=t,g=!!this.onViewStateChange;if(this.toggleEvents(ae.WHEEL,g&&i),this.toggleEvents(ae.PAN,g),this.toggleEvents(ae.PINCH,g&&(l||f===`rotate`)),this.toggleEvents(ae.MULTI_PAN,g&&!!f),this.toggleEvents(ae.DOUBLE_CLICK,g&&a),this.toggleEvents(ae.DOUBLE_CLICK_DRAG,g&&c),this.toggleEvents(ae.KEYBOARD,g&&m),this.scrollZoom=i,this.dragPan=s$8,this.dragRotate=n,this.doubleClickZoom=a,this.doubleClickDragZoom=c,this.touchZoom=l,this.touchRotate=f===`rotate`,this.multiTouchDrag=f,this.trackpadGesture=d,this.zoomAround=p,this.keyboard=m,(!e||e.height!==t.height||e.width!==t.width||e.maxBounds!==t.maxBounds||e.maxBoundsPadding!==t.maxBoundsPadding)&&t.maxBounds){let b=new this.ControllerState(s(r({},t),{makeViewport:this.makeViewport})),v=b.getViewportProps();Object.keys(v).some(x=>!B(v[x],t[x],1))&&this.updateViewport(b)}}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(t,e){this.eventManager&&t.forEach(r=>{this._events[r]!==e&&(this._events[r]=e,e?this.eventManager.on(r,this.handleEvent):this.eventManager.off(r,this.handleEvent))})}updateViewport(t,e=null,r$27={}){let i=r(r({},t.getViewportProps()),e),s=this.controllerState!==t;if(this.state=t.getState(),this._setInteractionState(r$27),s){let n=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:i,interactionState:this._interactionState,oldViewState:n,viewId:this.props.id})}}_onTransition(t){this.onViewStateChange(s(r({},t),{interactionState:this._interactionState,viewId:this.props.id}))}_setInteractionState(t){Object.assign(this._interactionState,t),this.onStateChange(this._interactionState)}_getConstraintContext(t,e){return this.props.rubberBand?{mode:e===`update`?`elastic`:e===`end`?`rebound`:`hard`}:{mode:`hard`}}_getReboundTransition(t,e){if(t.mode!==`rebound`)return null;let r$28=e.getViewportProps();return Object.keys(r$28).some(s=>!B(this.props[s],r$28[s],1))?s(r({},this._getTransitionProps()),{transitionDuration:ud,transitionEasing:fd}):null}_onPanStart(t){let e=this.getCenter(t);if(!this.isPointInBounds(e,t))return!1;let r=this.isFunctionKeyPressed(t)||t.rightButton||!1;(this.invertPan||this.dragMode===`pan`)&&(r=!r);let i=r?`pan`:`rotate`,s=this._getConstraintContext(i,`start`),n=r?this.controllerState.panStart({pos:e},s):this.controllerState.rotateStart({pos:e},s);return this._panMove=r,this.updateViewport(n,Et,{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 e=this.getCenter(t),r=this.controllerState.pan({pos:e},this._getConstraintContext(`pan`,`update`));return this.updateViewport(r,Et,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(t){let{inertia:e}=this;if(this.dragPan&&e&&t.velocity){let r$29=this.getCenter(t),i=[r$29[0]+t.velocityX*e/2,r$29[1]+t.velocityY*e/2],s$9=this.controllerState.pan({pos:i}).panEnd();this.updateViewport(s$9,s(r({},this._getTransitionProps()),{transitionDuration:e,transitionEasing:xs}),{isDragging:!1,isPanning:!0})}else{let r=this.controllerState,i=this._getConstraintContext(`pan`,`end`),s=r.panEnd(i),n=this._getReboundTransition(i,s);this.updateViewport(s,n,{isDragging:!1,isPanning:!!n})}return!0}_onPanRotate(t){if(!this.dragRotate)return!1;let e=this.getCenter(t),r=this.controllerState.rotate({pos:e},this._getConstraintContext(`rotate`,`update`));return this.updateViewport(r,Et,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(t){let{inertia:e}=this;if(this.dragRotate&&e&&t.velocity){let r$30=this.getCenter(t),i=[r$30[0]+t.velocityX*e/2,r$30[1]+t.velocityY*e/2],s$10=this.controllerState.rotate({pos:i}).rotateEnd();this.updateViewport(s$10,s(r({},this._getTransitionProps()),{transitionDuration:e,transitionEasing:xs}),{isDragging:!1,isRotating:!0})}else{let r=this.controllerState,i=this._getConstraintContext(`rotate`,`end`),s=r.rotateEnd(i),n=this._getReboundTransition(i,s);this.updateViewport(s,n,{isDragging:!1,isRotating:!!n})}return!0}_onWheel(t){if(!this.scrollZoom||this.trackpadGesture&&t.device!==`mouse`)return!1;let e=this.getCenter(t);if(!this.isPointInBounds(e,t))return!1;t.srcEvent.preventDefault();let{speed:r$31=.01,smooth:i=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:s$11}=t,n=2/(1+Math.exp(-Math.abs(s$11*r$31)));s$11<0&&n!==0&&(n=1/n);let a=this.getZoomPosition(e),c=i?s(r({},this._getTransitionProps({around:a})),{transitionDuration:250}):Et,l=this.controllerState.zoom({pos:a,scale:n});return this.updateViewport(l,c,{isZooming:!0,isPanning:!0}),i||this._setInteractionState({isZooming:!1,isPanning:!1}),!0}_onMultiPanStart(t){let{multiTouchDrag:e}=this;if(!e||!this._isMultiPanEventAllowed(t,e))return!1;let r$32=t.offsetCenter;if(!this.isPointInBounds(this.getCenter(t),t))return!1;let i=t.pointerType===`trackpad`,s$12={x:r$32.x-(i?0:t.deltaX),y:r$32.y-(i?0:t.deltaY)},n=s(r({},t),{offsetCenter:s$12}),a=this.getCenter(n),c=e===`pan`?this.controllerState.panStart({pos:a},this._getConstraintContext(`pan`,`start`)):this.controllerState.rotateStart({pos:a},this._getConstraintContext(`rotate`,`start`));return this._multiPanMode=e,this._multiPanStartCenter=s$12,this.updateViewport(c,Et,{isDragging:!0}),!0}_onMultiPan(t){let{mode:e,event:r}=this._getMultiPanEvent(t);return!e||!r||!this.isDragging()?!1:e===`pan`?this._onPanMove(r):this._onPanRotate(r)}_onMultiPanEnd(t){let{mode:e,event:r}=this._getMultiPanEvent(t);if(!e||!r||!this.isDragging())return this._resetMultiPan(),!1;let i=e===`pan`?this._onPanMoveEnd(r):this._onPanRotateEnd(r);return this._resetMultiPan(),i}_isTrackpadGestureAllowed(t){return t.pointerType!==`trackpad`||this.trackpadGesture}_isMultiPanEventAllowed(t,e){return t.pointerType===`trackpad`?this.trackpadGesture&&(e===`pan`?this.dragPan:this.dragRotate):t.pointerType===`touch`&&(e===`pan`?this.dragPan:this.dragRotate)}_getMultiPanEvent(t){let e=this._multiPanMode,r$33=this._multiPanStartCenter;return!e||!r$33?{mode:null,event:null}:{mode:e,event:s(r({},t),{offsetCenter:{x:r$33.x+t.deltaX,y:r$33.y+t.deltaY}})}}_resetMultiPan(){this._multiPanMode=null,this._multiPanStartCenter=null}_onPinchStart(t){this._doubleClickDragAnchor=null;let e=this.getCenter(t);if(!this.isPointInBounds(e,t))return!1;let r=this.controllerState.zoomStart({pos:this.getZoomPosition(e)},this._getConstraintContext(`zoom`,`start`)).rotateStart({pos:e},this._getConstraintContext(`rotate`,`start`));return ce._startPinchRotation=t.rotation,ce._lastPinchEvent=t,this.updateViewport(r,Et,{isDragging:!0}),!0}_onPinch(t){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let e=this.controllerState;if(this.touchZoom){let{scale:r}=t,i=this.getCenter(t);e=e.zoom({pos:this.getZoomPosition(i),scale:r},this._getConstraintContext(`zoom`,`update`))}if(this.touchRotate){let{rotation:r}=t;e=e.rotate({deltaAngleX:ce._startPinchRotation-r},this._getConstraintContext(`rotate`,`update`))}return this.updateViewport(e,Et,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),ce._lastPinchEvent=t,!0}_onPinchEnd(t){if(!this.isDragging())return!1;let{inertia:e}=this,{_lastPinchEvent:r$34}=ce;if(this.touchZoom&&e&&r$34&&t.scale!==r$34.scale){let i=this.getCenter(t),s$13=this.getZoomPosition(i),n=this.controllerState.rotateEnd(),a=Math.log2(t.scale),c=(a-Math.log2(r$34.scale))/(t.deltaTime-r$34.deltaTime),l=Math.pow(2,a+c*e/2);n=n.zoom({pos:s$13,scale:l}).zoomEnd(),this.updateViewport(n,s(r({},this._getTransitionProps({around:s$13})),{transitionDuration:e,transitionEasing:xs}),{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(e)}else{let i=this.controllerState,s=this._getConstraintContext(`zoom`,`end`),n=this._getConstraintContext(`rotate`,`end`),a=i.zoomEnd(s).rotateEnd(n),c=this._getReboundTransition(this.touchZoom?s:n,a);this.updateViewport(a,c,{isDragging:!1,isPanning:!!c&&this.touchZoom,isZooming:!!c&&this.touchZoom,isRotating:!!c&&this.touchRotate})}return ce._startPinchRotation=null,ce._lastPinchEvent=null,!0}_onDoubleClick(t){if(!this.doubleClickZoom||Date.now()<this._suppressDoubleClickUntil)return!1;let e=this.getCenter(t);if(!this.isPointInBounds(e,t))return!1;let r=this.isFunctionKeyPressed(t),i=this.getZoomPosition(e),s=this.controllerState.zoom({pos:i,scale:r?.5:2});return this.updateViewport(s,this._getTransitionProps({around:i}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onDoubleClickDragStart(t){if(!this.doubleClickDragZoom)return this._doubleClickDragAnchor=null,!1;let e=this.getCenter(t);if(!this.isPointInBounds(e,t))return this._doubleClickDragAnchor=null,!1;this._doubleClickDragAnchor=this.getZoomPosition(e);let r=this.controllerState.zoomStart({pos:this._doubleClickDragAnchor},this._getConstraintContext(`zoom`,`start`));return t.scale!==1&&(r=r.zoom({pos:this._doubleClickDragAnchor,scale:t.scale},this._getConstraintContext(`zoom`,`update`))),this.updateViewport(r,Et,{isDragging:!0,isPanning:!0,isZooming:!0}),!0}_onDoubleClickDrag(t){let e=this._doubleClickDragAnchor;if(!e)return!1;let r=this.controllerState.zoom({pos:e,scale:t.scale},this._getConstraintContext(`zoom`,`update`));return this.updateViewport(r,Et,{isDragging:!0,isPanning:!0,isZooming:!0}),!0}_onDoubleClickDragEnd(t){if(!this._doubleClickDragAnchor)return!1;this._doubleClickDragAnchor=null;let r=this.controllerState,i=this._getConstraintContext(`zoom`,`end`),s=r.zoomEnd(i),n=this._getReboundTransition(i,s);return this.updateViewport(s,n,{isDragging:!1,isPanning:!!n,isZooming:!!n}),this._suppressDoubleClickUntil=Date.now()+100,this.blockEvents(100),!0}_onKeyDown(t){if(!this.keyboard)return!1;let e=this.isFunctionKeyPressed(t),{zoomSpeed:r,moveSpeed:i,rotateSpeedX:s,rotateSpeedY:n}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this,c,l={};switch(t.srcEvent.code){case`Minus`:c=e?a.zoomOut(r).zoomOut(r):a.zoomOut(r),l.isZooming=!0;break;case`Equal`:c=e?a.zoomIn(r).zoomIn(r):a.zoomIn(r),l.isZooming=!0;break;case`ArrowLeft`:e?(c=a.rotateLeft(s),l.isRotating=!0):(c=a.moveLeft(i),l.isPanning=!0);break;case`ArrowRight`:e?(c=a.rotateRight(s),l.isRotating=!0):(c=a.moveRight(i),l.isPanning=!0);break;case`ArrowUp`:e?(c=a.rotateUp(n),l.isRotating=!0):(c=a.moveUp(i),l.isPanning=!0);break;case`ArrowDown`:e?(c=a.rotateDown(n),l.isRotating=!0):(c=a.moveDown(i),l.isPanning=!0);break;default:return!1}return this.updateViewport(c,this._getTransitionProps(),l),!0}_getTransitionProps(t){let{transition:e}=this;return!e||!e.transitionInterpolator?Et:t?s(r({},e),{transitionInterpolator:new Yt(s(r(r({},t),e.transitionInterpolator.opts),{makeViewport:this.controllerState.makeViewport}))}):e}};var Lt=Symbol(`constraintAround`);var bo=class{constructor(t,e,r,i){this.makeViewport=r,this._viewportProps=this.applyConstraints(t,i),this._state=e}getViewportProps(){return this._viewportProps}getState(){return this._state}};function vo(o,t,e){let r=o-t;return r&&Number.isFinite(r)?t+r*e/(e+Math.abs(r)):t}function De(o,t,e){let r=K(X(e?.left??0),o),i=K(X(e?.right??0),o),s=K(X(e?.top??0),t),n=K(X(e?.bottom??0),t);return{x:r,y:s,width:o-r-i,height:t-s-n}}function xo(o,t,e){let[r,i]=o.project(t);return r=Number.isFinite(r)?r:o.width/2,i=Number.isFinite(i)?i:o.height/2,{left:r-e.x,right:e.x+e.width-r,top:i-e.y,bottom:e.y+e.height-i}}var dc=5;var hd=1.2;var pc=512;var mc=[[-Infinity,-90],[Infinity,90]];var dd=1;function _r([o,t]){if(Math.abs(t)>90&&(t=Math.sign(t)*90),Number.isFinite(o)){let[r,i]=st([o,t]);return[r,za$1(i,0,pc)]}let[,e]=st([0,t]);return[o,za$1(e,0,pc)]}var wr=class extends bo{constructor(t){let{width:e,height:r,latitude:i,longitude:s,zoom:n,bearing:a=0,pitch:c=0,altitude:l=1.5,position:u=[0,0,0],maxZoom:f=20,minZoom:d=0,maxPitch:p=60,minPitch:m=0,startPanLngLat:g,startZoomLngLat:y,startRotatePos:b,startRotateLngLat:v,startBearing:w,startPitch:x,startZoom:E,normalize:S=!0,rubberBand:L=!1}=t,{[Lt]:I}=t;R(Number.isFinite(s)),R(Number.isFinite(i)),R(Number.isFinite(n));let C=t.maxBounds||(S?mc:null),M=t.maxBoundsPadding||null;super({width:e,height:r,latitude:i,longitude:s,zoom:n,bearing:a,pitch:c,altitude:l,maxZoom:f,minZoom:d,maxPitch:p,minPitch:m,normalize:S,position:u,maxBounds:C,maxBoundsPadding:M,rubberBand:L,[Lt]:I},{startPanLngLat:g,startZoomLngLat:y,startRotatePos:b,startRotateLngLat:v,startBearing:w,startPitch:x,startZoom:E},t.makeViewport,t.constraintContext),this.getAltitude=t.getAltitude}panStart({pos:t},e){return this._getUpdatedState({startPanLngLat:this._unproject(t)},e)}pan({pos:t,startPos:e},r){let i=this.getState().startPanLngLat||this._unproject(e);if(!i)return this;let n=this.makeViewport(this.getViewportProps()).panByPosition(i,t);return this._getUpdatedState(n,r)}panEnd(t){return this._getUpdatedState({startPanLngLat:null},t)}rotateStart({pos:t}){let e=this.getAltitude?.(t);return this._getUpdatedState({startRotatePos:t,startRotateLngLat:e!==void 0?this._unproject3D(t,e):void 0,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:t,deltaAngleX:e=0,deltaAngleY:r$35=0}){let{startRotatePos:i,startRotateLngLat:s,startBearing:n,startPitch:a}=this.getState();if(!i||n===void 0||a===void 0)return this;let c;if(t?c=this._getNewRotation(t,i,a,n):c={bearing:n+e,pitch:a+r$35},s){let l=this.makeViewport(r(r({},this.getViewportProps()),c)),u=`panByPosition3D`in l?`panByPosition3D`:`panByPosition`;return this._getUpdatedState(r(r({},c),l[u](s,i)))}return this._getUpdatedState(c)}rotateEnd(){return this._getUpdatedState({startRotatePos:null,startRotateLngLat:null,startBearing:null,startPitch:null})}zoomStart({pos:t},e){return this._getUpdatedState({startZoomLngLat:this._unproject(t),startZoom:this.getViewportProps().zoom},e)}zoom({pos:t,startPos:e,scale:r},i){let{startZoom:s,startZoomLngLat:n}=this.getState();return n||(s=this.getViewportProps().zoom,n=this._unproject(e)||this._unproject(t)),n?this._getUpdatedState({zoom:s+Math.log2(r),[Lt]:{position:n,screenPosition:t}},i):this}zoomEnd(t){return this._getUpdatedState({startZoomLngLat:null,startZoom:null},t)}zoomIn(t=2,e){return this._zoomFromCenter(t,e)}zoomOut(t=2,e){return this._zoomFromCenter(1/t,e)}moveLeft(t=100,e){return this._panFromCenter([t,0],e)}moveRight(t=100,e){return this._panFromCenter([-t,0],e)}moveUp(t=100,e){return this._panFromCenter([0,t],e)}moveDown(t=100,e){return this._panFromCenter([0,-t],e)}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 e=t.getViewportProps(),r$36=r({},this.getViewportProps()),{bearing:i,longitude:s}=r$36;return Math.abs(i-e.bearing)>180&&(r$36.bearing=i<0?i+360:i-360),Math.abs(s-e.longitude)>180&&(r$36.longitude=s<0?s+360:s-360),r$36}applyConstraints(t,e){let r$37=t,i=r$37[Lt];delete r$37[Lt];let{maxPitch:s$14,minPitch:n,pitch:a,bearing:c,normalize:l,maxBounds:u,rubberBand:f}=t;l&&(c<-180||c>180)&&(t.bearing=It(c+180,360)-180),t.pitch=za$1(a,n,s$14);let d=this._constrainZoom(t.zoom,t),p=f&&e?.mode===`elastic`;if(t.zoom=e?.mode===`preserve`?t.zoom:p?vo(t.zoom,d,dd):d,i){let m=this.makeViewport(t);Object.assign(t,m.panByPosition(i.position,i.screenPosition))}if(l&&(t.longitude<-180||t.longitude>180)&&(t.longitude=It(t.longitude+180,360)-180),u){let m=De(t.width,t.height,t.maxBoundsPadding),y=xo(this.makeViewport(s(r({},t),{bearing:0,pitch:0})),[t.longitude,t.latitude],m),b=_r(u[0]),v=_r(u[1]),w=2**t.zoom,x=[b[0]+y.left/w,b[1]+y.bottom/w],E=[v[0]-y.right/w,v[1]-y.top/w],S=_r([t.longitude,t.latitude]),L=[za$1(S[0],x[0],E[0]),za$1(S[1],x[1],E[1])],I=S.slice();if(m.width>=0&&(I[0]=e?.mode===`preserve`?S[0]:p?vo(S[0],L[0],m.width/2/w):L[0]),m.height>=0&&(I[1]=e?.mode===`preserve`?S[1]:p?vo(S[1],L[1],m.height/2/w):L[1]),I[0]!==S[0]||I[1]!==S[1]){let[C,M]=et(I);I[0]!==S[0]&&(t.longitude=C),I[1]!==S[1]&&(t.latitude=M)}}return t}_constrainZoom(t,e){e||(e=this.getViewportProps());let{maxZoom:r,maxBounds:i}=e,s=i!==null&&e.width>0&&e.height>0,{minZoom:n}=e;if(s){let a=De(e.width,e.height,e.maxBoundsPadding),c=_r(i[0]),l=_r(i[1]),u=l[0]-c[0],f=l[1]-c[1];a.width>0&&Number.isFinite(u)&&u>0&&(n=Math.max(n,Math.log2(a.width/u))),a.height>0&&Number.isFinite(f)&&f>0&&(n=Math.max(n,Math.log2(a.height/f))),n>r&&(n=r)}return za$1(t,n,r)}_zoomFromCenter(t,e){let{width:r,height:i}=this.getViewportProps();return this.zoom({pos:[r/2,i/2],scale:t},e)}_panFromCenter(t,e){let{width:r,height:i}=this.getViewportProps();return this.pan({startPos:[r/2,i/2],pos:[r/2+t[0],i/2+t[1]]},e)}_getUpdatedState(t,e){return new this.constructor(s(r(r(r({makeViewport:this.makeViewport},this.getViewportProps()),this.getState()),t),{constraintContext:e}))}_unproject(t){let e=this.makeViewport(this.getViewportProps());return t&&e.unproject(t)}_unproject3D(t,e){return this.makeViewport(this.getViewportProps()).unproject(t,{targetZ:e})}_getNewRotation(t,e,r,i){let s=t[0]-e[0],n=t[1]-e[1],a=t[1],c=e[1],{width:l,height:u}=this.getViewportProps(),f=s/l,d=0;n>0?Math.abs(u-c)>dc&&(d=n/(c-u)*hd):n<0&&c>dc&&(d=1-a/c),d=za$1(d,-1,1);let{minPitch:p,maxPitch:m}=this.getViewportProps(),g=i+180*f,y=r;return d>0?y=r+d*(m-r):d<0&&(y=r-d*(p-r)),{pitch:y,bearing:g}}};var Po=class extends Oe{constructor(){super(...arguments),this.ControllerState=wr,this.transition={transitionDuration:300,transitionInterpolator:new Yt({transitionProps:{compare:[`longitude`,`latitude`,`zoom`,`bearing`,`pitch`,`position`],required:[`longitude`,`latitude`,`zoom`]}})},this.dragMode=`pan`,this.rotationPivot=`center`,this._getAltitude=t=>{if(this.rotationPivot===`2d`)return 0;if(this.rotationPivot===`3d`&&this.pickPosition){let{x:e,y:r}=this.props,i=this.pickPosition(e+t[0],r+t[1]);if(i&&i.coordinate&&i.coordinate.length>=3)return i.coordinate[2]}}}setProps(t){`rotationPivot`in t&&(this.rotationPivot=t.rotationPivot||`center`),t.getAltitude=this._getAltitude,t.position=t.position||[0,0,0],t.maxBounds=t.maxBounds||(t.normalize===!1?null:mc),super.setProps(t)}updateViewport(t,e=null,r$38={}){let i=t.getState();r$38.isDragging&&i.startRotateLngLat?r$38=s(r({},r$38),{rotationPivotPosition:i.startRotateLngLat}):r$38.isDragging===!1&&(r$38=s(r({},r$38),{rotationPivotPosition:void 0})),super.updateViewport(t,e,r$38)}};var Ps=(()=>{class o extends Le{constructor(e={}){super(e)}getViewportType(){return se}get ControllerType(){return Po}}return o.displayName=`MapView`,o})();var md=[255,255,255];var gd=1;var yd=0;var Eo=class{constructor(t={}){this.type=`ambient`;let{color:e=md}=t,{intensity:r=gd}=t;this.id=t.id||`ambient-${yd++}`,this.color=e,this.intensity=r}};var _d=[255,255,255];var wd=1;var bd=[0,0,-1];var vd=0;var br=class{constructor(t={}){this.type=`directional`;let{color:e=_d}=t,{intensity:r=wd}=t,{direction:i=bd}=t,{_shadow:s=!1}=t;this.id=t.id||`directional-${vd++}`,this.color=e,this.intensity=r,this.type=`directional`,this.direction=new Z$2(i).normalize().toArray(),this.shadow=s}getProjectedLight(t){return this}};var To=class{constructor(t,e={id:`pass`}){let{id:r$39}=e;this.id=r$39,this.device=t,this.props=r({},e)}setProps(t){Object.assign(this.props,t)}render(t){}cleanup(){}};var xd={depthWriteEnabled:!0,depthCompare:`less-equal`,blendColorOperation:`add`,blendColorSrcFactor:`one`,blendColorDstFactor:`one-minus-src-alpha`,blendAlphaOperation:`add`,blendAlphaSrcFactor:`one`,blendAlphaDstFactor:`one-minus-src-alpha`};var $t=class extends To{constructor(){super(...arguments),this._lastRenderIndex=-1}render(t){this._render(t)}_render(t){let{canvasContext:e=this.device.canvasContext}=t,r=t.target??e.getCurrentFramebuffer(),[i,s]=e.getDrawingBufferSize(),n=t.clearCanvas??!0,a=t.clearColor??(n?[0,0,0,0]:!1),c=n?1:!1,l=n?0:!1,u=t.colorMask??15,f={viewport:[0,0,i,s]};t.colorMask&&(f.colorMask=u),t.scissorRect&&(f.scissorRect=t.scissorRect);let{shaderModuleProps:d,viewports:p,views:m,onViewportActive:g,clearStack:y=!0}=t,b=t.pass||`unknown`,v=this.device.type===`webgpu`;y&&(this._lastRenderIndex=-1);let w=[];if(!p.length)return this.device.beginRenderPass({framebuffer:r,parameters:f,clearColor:a,clearDepth:c,clearStencil:l}).end(),this.device.submit(),w;try{for(let x of p){g?.(x);let E=this._getDrawLayerParams(x,t),S=m&&m[x.id],L=x.subViewports||[x],I=v?L.map(C=>[C]):[L];for(let C of I){let M=this.device.beginRenderPass({framebuffer:r,parameters:f,clearColor:a,clearDepth:c,clearStencil:l});try{for(let V of C){let W=this._drawLayersInViewport(M,{target:r,canvasContext:e,shaderModuleProps:d,viewport:V,view:S,pass:b,layers:t.layers,isPicking:t.isPicking},E);w.push(W)}}finally{M.end(),v&&this.device.submit()}a=!1,c=!1,l=!1}}return w}finally{v||this.device.submit()}}_getDrawLayerParams(t,{layers:e,pass:r$40,isPicking:i=!1,layerFilter:s,cullRect:n,views:a,effects:c,canvasContext:l=this.device.canvasContext,shaderModuleProps:u},f=!1){let d=[],p=yc(this._lastRenderIndex+1),m={layer:e[0],viewport:t,isPicking:i,renderPass:r$40,cullRect:n},g={};for(let y=0;y<e.length;y++){let b=e[y],v=this._shouldDrawLayer(b,m,s,g),w={shouldDrawLayer:v};if(v&&!f){w.shouldDrawLayer=!0,w.layerRenderIndex=p(b,v),w.shaderModuleProps=this._getShaderModuleProps(b,c,r$40,l,u);w.layerParameters=r(r(r(r({},b.context.device.type===`webgpu`?xd:null),b.context.deck?.props.parameters),a?.[t.id]?.props.parameters),this.getLayerParameters(b,y,t))}d[y]=w}return d}_drawLayersInViewport(t,{layers:e,shaderModuleProps:r,pass:i,target:s,canvasContext:n,viewport:a,view:c,isPicking:l},u){let f=Pd(this.device,{canvasContext:n,shaderModuleProps:r,target:s,viewport:a});if(c){let{clear:p,clearColor:m,clearDepth:g,clearStencil:y}=c.props;if(p){let b=[0,0,0,0],v=1,w=0;Array.isArray(m)&&!l?b=[...m.slice(0,3),m[3]||255].map(E=>E/255):m===!1&&(b=!1),g!==void 0&&(v=g),y!==void 0&&(w=y),this.device.beginRenderPass({framebuffer:s,parameters:{viewport:f,scissorRect:f},clearColor:b,clearDepth:v,clearStencil:w}).end()}}let d={totalCount:e.length,visibleCount:0,compositeCount:0,pickableCount:0};t.setParameters({viewport:f});for(let p=0;p<e.length;p++){let m=e[p],g=u[p],{shouldDrawLayer:y}=g;if(y&&m.props.pickable&&d.pickableCount++,m.isComposite&&d.compositeCount++,m.isDrawable&&g.shouldDrawLayer){let{layerRenderIndex:b,shaderModuleProps:v,layerParameters:w}=g;d.visibleCount++,this._lastRenderIndex=Math.max(this._lastRenderIndex,b),v.project&&(v.project.viewport=a),m.context.renderPass=t;try{m._drawLayer({renderPass:t,shaderModuleProps:v,uniforms:{layerIndex:b},parameters:w})}catch(x){m.raiseError(x,`drawing ${m} to ${i}`)}}}return d}shouldDrawLayer(t){return!0}getShaderModuleProps(t,e,r){return null}getLayerParameters(t,e,r){return t.props.parameters}_shouldDrawLayer(t,e,r,i){if(!(t.props.visible&&this.shouldDrawLayer(t)))return!1;e.layer=t;let n=t.parent;for(;n;){if(!n.props.visible||!n.filterSubLayer(e))return!1;e.layer=n,n=n.parent}if(r){let a=e.layer.id;if(a in i||(i[a]=r(e)),!i[a])return!1}return t.activateViewport(e.viewport),!0}_getShaderModuleProps(t,e,r,i,s){let n=i.cssToDeviceRatio(),a=t.internalState?.propsInTransition||t.props,c={layer:a,picking:{isActive:!1},project:{viewport:t.context.viewport,devicePixelRatio:n,modelMatrix:a.modelMatrix,coordinateSystem:a.coordinateSystem,coordinateOrigin:a.coordinateOrigin,autoWrapLongitude:t.wrapLongitude}};if(e)for(let l of e)gc(c,l.getShaderModuleProps?.(t,c));for(let l of t.context.defaultShaderModules)l.name in c||(c[l.name]={});return gc(c,this.getShaderModuleProps(t,e,c),s)}};function yc(o=0,t={}){let e={},r=(i,s)=>{let n=i.props._offset,a=i.id,c=i.parent&&i.parent.id,l;if(c&&!(c in t)&&r(i.parent,!1),c in e){let u=e[c]=e[c]||yc(t[c],t);l=u(i,s),e[a]=u}else Number.isFinite(n)?(l=n+(t[c]||0),e[a]=null):l=o;return s&&l>=o&&(o=l+1),t[a]=l,l};return r}function Pd(o,{canvasContext:t=o.canvasContext,shaderModuleProps:e,target:r,viewport:i}){let s=e?.project?.devicePixelRatio??t.cssToDeviceRatio(),[,n]=t.getDrawingBufferSize(),a=r?r.height:n,c=i;return[c.x*s,a-(c.y+c.height)*s,c.width*s,c.height*s]}function gc(o,...t){for(let e of t)if(e)for(let r in e)o[r]?Object.assign(o[r],e[r]):o[r]=e[r];return o}var Ao=class extends $t{constructor(t,e){super(t,e);let r=t.createTexture({format:`rgba8unorm`,width:1,height:1,sampler:{minFilter:`linear`,magFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`}}),i=t.createTexture({format:`depth16unorm`,width:1,height:1});this.fbo=t.createFramebuffer({id:`shadowmap`,width:1,height:1,colorAttachments:[r],depthStencilAttachment:i})}delete(){this.fbo&&(this.fbo.destroy(),this.fbo=null)}getShadowMap(){return this.fbo.colorAttachments[0].texture}render(t){let e=this.fbo,r$41=this.device.canvasContext.cssToDeviceRatio(),i=t.viewports[0],s$15=i.width*r$41,n=i.height*r$41;(s$15!==e.width||n!==e.height)&&e.resize({width:s$15,height:n}),super.render(s(r({},t),{clearColor:[1,1,1,1],target:e,pass:`shadow`}))}getLayerParameters(t,e,r$42){return s(r({},t.props.parameters),{blend:!1,depthWriteEnabled:!0,depthCompare:`less-equal`})}shouldDrawLayer(t){return t.props.shadowEnabled!==!1}getShaderModuleProps(t,e,r){return{shadow:{project:r.project,drawToShadowMap:!0}}}};var Ed={color:[255,255,255],intensity:1};var _c=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}];var Td=[0,0,0,200/255];var vr=class{constructor(t={}){this.id=`lighting-effect`,this.shadowColor=Td,this.shadow=!1,this.directionalLights=[],this.pointLights=[],this.shadowPasses=[],this.dummyShadowMap=null,this.setProps(t)}setup(t){this.context=t;let{device:e,deck:r}=t;this.shadow&&!this.dummyShadowMap&&(this._createShadowPasses(e),r._addDefaultShaderModule(ho),this.dummyShadowMap=e.createTexture({width:1,height:1}))}setProps(t){this.ambientLight=void 0,this.directionalLights=[],this.pointLights=[];for(let e in t){let r=t[e];switch(r.type){case`ambient`:this.ambientLight=r;break;case`directional`:this.directionalLights.push(r);break;case`point`:this.pointLights.push(r);break;default:}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(e=>e.shadow),this.context&&this.setup(this.context),this.props=t}preRender({layers:t,layerFilter:e,viewports:r,onViewportActive:i,views:s}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let n=0;n<this.shadowPasses.length;n++)this.shadowPasses[n].render({layers:t,layerFilter:e,viewports:r,onViewportActive:i,views:s,shaderModuleProps:{shadow:{shadowLightId:n,dummyShadowMap:this.dummyShadowMap,shadowMatrices:this.shadowMatrices}}})}}getShaderModuleProps(t,e){let r=this.shadow?{project:e.project,shadowMaps:this.shadowPasses.map(n=>n.getShadowMap()),dummyShadowMap:this.dummyShadowMap,shadowColor:this.shadowColor,shadowMatrices:this.shadowMatrices}:{},i={enabled:!0,lights:this._getLights(t)},s=t.props.material;return{shadow:r,lighting:i,phongMaterial:s,gouraudMaterial:s}}cleanup(t){for(let e of this.shadowPasses)e.delete();this.shadowPasses.length=0,this.dummyShadowMap&&(this.dummyShadowMap.destroy(),this.dummyShadowMap=null,t.deck._removeDefaultShaderModule(ho))}_calculateMatrices(){let t=[];for(let e of this.directionalLights){let r=new U$2().lookAt({eye:new Z$2(e.direction).negate()});t.push(r)}return t}_createShadowPasses(t){for(let e=0;e<this.directionalLights.length;e++){let r=new Ao(t);this.shadowPasses[e]=r}}_applyDefaultLights(){let{ambientLight:t,pointLights:e,directionalLights:r}=this;!t&&e.length===0&&r.length===0&&(this.ambientLight=new Eo(Ed),this.directionalLights.push(new br(_c[0]),new br(_c[1])))}_getLights(t){let e=[];this.ambientLight&&e.push(this.ambientLight);for(let r of this.pointLights)e.push(r.getProjectedLight({layer:t}));for(let r of this.directionalLights)e.push(r.getProjectedLight({layer:t}));return e}};var Ad=new vr;function Sd(o,t){return(o.order??Infinity)-(t.order??Infinity)}var So=class{constructor(t){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=t,this._needsRedraw=`Initial render`,this._setEffects([])}addDefaultEffect(t){let e=this._defaultEffects;if(!e.find(r=>r.id===t.id)){let r=e.findIndex(i=>Sd(i,t)>0);r<0?e.push(t):e.splice(r,0,t),t.setup(this._context),this._setEffects(this.effects)}}setProps(t){`effects`in t&&(B(t.effects,this.effects,1)||this._setEffects(t.effects))}needsRedraw(t={clearRedrawFlags:!1}){let e=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),e}getEffects(){return this._resolvedEffects}_setEffects(t){let e={};for(let i of this.effects)e[i.id]=i;let r=[];for(let i of t){let s=e[i.id],n=i;s&&s!==i?s.setProps?(s.setProps(i.props),n=s):s.cleanup(this._context):s||i.setup(this._context),r.push(n),delete e[i.id]}for(let i in e)e[i].cleanup(this._context);this.effects=r,this._resolvedEffects=r.concat(this._defaultEffects),t.some(i=>i instanceof vr)||this._resolvedEffects.push(Ad),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 Mo=class extends $t{shouldDrawLayer(t){let{operation:e}=t.props;return e.includes(`draw`)||e.includes(`terrain`)}render(t){return this._render(t)}};var Md={blendColorOperation:`add`,blendColorSrcFactor:`one`,blendColorDstFactor:`zero`,blendAlphaOperation:`add`,blendAlphaSrcFactor:`constant`,blendAlphaDstFactor:`zero`};var Be=class extends $t{constructor(){super(...arguments),this._colorEncoderState=null}render(t){return`pickingFBO`in t?this._drawPickingBuffer(t):{decodePickingColor:null,stats:super._render(t)}}_drawPickingBuffer({layers:t,layerFilter:e,views:r,viewports:i,onViewportActive:s,pickingFBO:n,deviceRect:{x:a,y:c,width:l,height:u},cullRect:f,effects:d,pass:p=`picking`,pickZ:m,canvasContext:g,shaderModuleProps:y,clearColor:b}){this.pickZ=m;let v=this._resetColorEncoder(m),w=[a,c,l,u],x=super._render({target:n,layers:t,layerFilter:e,views:r,viewports:i,onViewportActive:s,cullRect:f,effects:d?.filter(S=>S.useInPicking),pass:p,canvasContext:g,isPicking:!0,shaderModuleProps:y,clearColor:b??[0,0,0,0],colorMask:15,scissorRect:w});return this._colorEncoderState=null,{decodePickingColor:v&&Cd.bind(null,v),stats:x}}shouldDrawLayer(t){let{pickable:e,operation:r}=t.props;return e&&r.includes(`draw`)||r.includes(`terrain`)||r.includes(`mask`)}getShaderModuleProps(t,e,r){return{picking:{isActive:1,isAttribute:this.pickZ,disabledPickingIndices:t.internalState?.disabledPickingIndices},lighting:{enabled:!1}}}getLayerParameters(t,e,r$43){let i=r({},t.props.parameters),{pickable:s,operation:n}=t.props;return this._colorEncoderState?s&&n.includes(`draw`)?(Object.assign(i,Md),i.blend=!0,this.device.type===`webgpu`?i.blendConstant=wc(this._colorEncoderState,t,r$43):i.blendColor=wc(this._colorEncoderState,t,r$43),n.includes(`terrain`)&&t.state?._hasPickingCover&&(i.blendAlphaSrcFactor=`one`)):n.includes(`terrain`)&&(i.blend=!1):i.blend=!1,i}_resetColorEncoder(t){return this._colorEncoderState=t?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function wc(o,t,e){let{byLayer:r,byAlpha:i}=o,s,n=r.get(t);return n?(n.viewports.push(e),s=n.a):(s=r.size+1,s<=255?(n={a:s,layer:t,viewports:[e]},r.set(t,n),i[s]=n):(A.warn(`Too many pickable layers, only picking the first 255`)(),s=0)),[0,0,0,s/255]}function Cd(o,t){let e=o.byAlpha[t[3]];return e&&{pickedLayer:e.layer,pickedViewports:e.viewports,pickedObjectIndex:e.layer.decodePickingColor(t)}}var Id=`deckRenderer.renderLayers`;var Co=class{constructor(t,e={}){this.device=t,this.stats=e.stats,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Mo(t),this.pickLayersPass=new Be(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){let e=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,r$44=r({layerFilter:this.layerFilter,isPicking:this.drawPickingColors},t);if(!t.viewports.length){let a=e.render(r$44),c=`stats`in a?a.stats:a;this._updateStats(c);return}r$44.effects&&this._preRender(r$44.effects,r$44);let i=this.lastPostProcessEffect?this.renderBuffers[0]:r$44.target;this.lastPostProcessEffect&&(r$44.clearColor=[0,0,0,0],r$44.clearCanvas=!0);let s$16=e.render(s(r({},r$44),{target:i})),n=`stats`in s$16?s$16.stats:s$16;r$44.effects&&(this.lastPostProcessEffect&&(r$44.clearCanvas=t.clearCanvas===void 0?!0:t.clearCanvas),this._postRender(r$44.effects,r$44)),this.renderCount++,j(Id,this,n,t),this._updateStats(n)}needsRedraw(t={clearRedrawFlags:!1}){let e=this._needsRedraw;return t.clearRedrawFlags&&(this._needsRedraw=!1),e}finalize(){let{renderBuffers:t}=this;for(let e of t)e.delete();t.length=0}_updateStats(t){if(!this.stats)return;let e=0;for(let{visibleCount:r}of t)e+=r;this.stats.get(`Layers rendered`).addCount(e)}_preRender(t,e){this.lastPostProcessEffect=null,e.preRenderStats=e.preRenderStats||{};for(let r of t)e.preRenderStats[r.id]=r.preRender(e),r.postRender&&(this.lastPostProcessEffect=r.id);this.lastPostProcessEffect&&this._resizeRenderBuffers(e.canvasContext)}_resizeRenderBuffers(t=this.device.canvasContext){let{renderBuffers:e}=this,r=t.getDrawingBufferSize(),[i,s]=r;e.length===0&&[0,1].map(n=>{let a=this.device.createTexture({sampler:{minFilter:`linear`,magFilter:`linear`},width:i,height:s});e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${n}`,colorAttachments:[a]}))});for(let n of e)n.resize(r)}_postRender(t,e){let{renderBuffers:r$45}=this,i=e.target??e.canvasContext?.getCurrentFramebuffer()??e.target,s$17=s(r({},e),{inputBuffer:r$45[0],swapBuffer:r$45[1]});for(let n of t)if(n.postRender){s$17.target=n.id===this.lastPostProcessEffect?i:void 0;let a=n.postRender(s$17);s$17.inputBuffer=a,s$17.swapBuffer=a===r$45[0]?r$45[1]:r$45[0]}}};var Rd={pickedColor:null,pickedObjectIndex:-1};function Es({pickedColors:o,decodePickingColor:t,deviceX:e,deviceY:r$46,deviceRadius:i,deviceRect:s$18}){let{x:n,y:a,width:c,height:l}=s$18,u=i*i,f=-1,d=0;for(let p=0;p<l;p++){let m=p+a-r$46,g=m*m;if(g>u)d+=4*c;else for(let y=0;y<c;y++){if(o[d+3]-1>=0){let v=y+n-e,w=v*v+g;w<=u&&(u=w,f=d)}d+=4}}if(f>=0){let p=o.slice(f,f+4),m=t(p);if(m){let g=Math.floor(f/4/c),y=f/4-g*c;return s(r({},m),{pickedColor:p,pickedX:n+y,pickedY:a+g})}A.error(`Picked non-existent layer. Is picking buffer corrupt?`)()}return Rd}function Ts({pickedColors:o,decodePickingColor:t}){let e=new Map;if(o){for(let r$47=0;r$47<o.length;r$47+=4)if(o[r$47+3]-1>=0){let s$19=o.slice(r$47,r$47+4),n=s$19.join(`,`);if(!e.has(n)){let a=t(s$19);a?e.set(n,s(r({},a),{color:s$19})):A.error(`Picked non-existent layer. Is picking buffer corrupt?`)()}}}return Array.from(e.values())}function Io({pickInfo:o,viewports:t,pixelRatio:e,x:r,y:i,z:s}){let n=t[0];t.length>1&&(n=Ld(o?.pickedViewports||t,{x:r,y:i}));let a;if(n){let c=[r-n.x,i-n.y];s!==void 0&&(c[2]=s),a=n.unproject(c)}return{color:null,layer:null,viewport:n,index:-1,picked:!1,x:r,y:i,pixel:[r,i],coordinate:a,devicePixel:o&&`pickedX`in o?[o.pickedX,o.pickedY]:void 0,pixelRatio:e}}function As(o){let{pickInfo:t,lastPickedInfo:e,mode:r$48,layers:i}=o,{pickedColor:s,pickedLayer:n,pickedObjectIndex:a}=t,c=n?[n]:[];if(r$48===`hover`){let f=e.index,d=e.layerId,p=n?n.props.id:null;if(p!==d||a!==f){if(p!==d){let m=i.find(g=>g.props.id===d);m&&c.unshift(m)}e.layerId=p,e.index=a,e.info=null}}let l=Io(o),u=new Map;return u.set(null,l),c.forEach(f=>{let d=r({},l);f===n&&(d.color=s,d.index=a,d.picked=!0),d=Ro({layer:f,info:d,mode:r$48});let p=d.layer;f===n&&r$48===`hover`&&(e.info=d),u.set(p.id,d),r$48===`hover`&&p.updateAutoHighlight(d)}),u}function Ro({layer:o,info:t,mode:e}){for(;o&&t;){let r=t.layer||null;t.sourceLayer=r,t.layer=o,t=o.getPickingInfo({info:t,mode:e,sourceLayer:r}),o=o.parent}return t}function Ld(o,t){for(let e=o.length-1;e>=0;e--){let r=o[e];if(r.containsPixel(t))return r}return o[0]}var Lo=class{constructor(t,e={}){this._pickable=!0,this.device=t,this.stats=e.stats,this.pickLayersPass=new Be(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:e,layers:r$49,viewports:i},s=this.lastPickedInfo.info){let n=s&&s.layer&&s.layer.id,a=s&&s.viewport&&s.viewport.id,c=n?r$49.find(d=>d.id===n):null,l=a&&i.find(d=>d.id===a)||i[0],f={x:t,y:e,viewport:l,coordinate:l&&l.unproject([t-l.x,e-l.y]),layer:c};return r(r({},s),f)}_resizeBuffer(t=this.device.getDefaultCanvasContext()){if(!this.pickingFBO){let i=this.device.createTexture({format:`rgba8unorm`,width:1,height:1,usage:v.RENDER_ATTACHMENT|v.COPY_SRC});if(this.pickingFBO=this.device.createFramebuffer({colorAttachments:[i],depthStencilAttachment:`depth16unorm`}),this.device.isTextureFormatRenderable(`rgba32float`)){let s=this.device.createTexture({format:`rgba32float`,width:1,height:1,usage:v.RENDER_ATTACHMENT|v.COPY_SRC}),n=this.device.createFramebuffer({colorAttachments:[s],depthStencilAttachment:`depth16unorm`});this.depthFBO=n}}let[e,r]=t.getDrawingBufferSize();this.pickingFBO?.resize({width:e,height:r}),this.depthFBO?.resize({width:e,height:r})}_getPickable(t){if(this._pickable===!1)return null;let e=t.filter(r=>this.pickLayersPass.shouldDrawLayer(r)&&!r.isComposite);return e.length?e:null}async _pickClosestObjectAsync({layers:t,views:e,viewports:r$50,x:i,y:s$20,radius:n=0,depth:a=1,mode:c=`query`,unproject3D:l,canvasContext:u=this.device.getDefaultCanvasContext(),onViewportActive:f,effects:d}){let p=u.cssToDeviceRatio(),m=this._getPickable(t);if(!m||r$50.length===0)return{result:[],emptyInfo:Io({viewports:r$50,x:i,y:s$20,pixelRatio:p})};this._resizeBuffer(u);let g=u.cssToDevicePixels([i,s$20],!0),y=[g.x+Math.floor(g.width/2),g.y+Math.floor(g.height/2)],b=Math.round(n*p),{width:v,height:w}=this.pickingFBO,x=this._getPickingRect({deviceX:y[0],deviceY:y[1],deviceRadius:b,deviceWidth:v,deviceHeight:w}),E={x:i-n,y:s$20-n,width:n*2+1,height:n*2+1},S,L=[],I=new Set;for(let C=0;C<a;C++){let M;if(x)M=Es(s(r({},await this._drawAndSampleAsync({layers:m,views:e,viewports:r$50,onViewportActive:f,deviceRect:x,cullRect:E,effects:d,pass:`picking:${c}`,canvasContext:u})),{deviceX:y[0],deviceY:y[1],deviceRadius:b,deviceRect:x}));else M={pickedColor:null,pickedObjectIndex:-1};let V,W=this._getDepthLayers(M,m,l);if(W.length>0){let{pickedColors:k}=await this._drawAndSampleAsync({layers:W,views:e,viewports:r$50,onViewportActive:f,deviceRect:{x:M.pickedX??y[0],y:M.pickedY??y[1],width:1,height:1},cullRect:E,effects:d,pass:`picking:${c}:z`,canvasContext:u},!0);k[3]&&(V=k[0])}M.pickedLayer&&C+1<a&&(I.add(M.pickedLayer),M.pickedLayer.disablePickingIndex(M.pickedObjectIndex)),S=As({pickInfo:M,lastPickedInfo:this.lastPickedInfo,mode:c,layers:m,viewports:r$50,x:i,y:s$20,z:V,pixelRatio:p});for(let k of S.values())k.layer&&L.push(k);if(!M.pickedColor)break}for(let C of I)C.restorePickingColors();return{result:L,emptyInfo:S.get(null)}}_pickClosestObject({layers:t,views:e,viewports:r$51,x:i,y:s$21,radius:n=0,depth:a=1,mode:c=`query`,unproject3D:l,canvasContext:u=this.device.getDefaultCanvasContext(),onViewportActive:f,effects:d}){let p=u.cssToDeviceRatio(),m=this._getPickable(t);if(!m||r$51.length===0)return{result:[],emptyInfo:Io({viewports:r$51,x:i,y:s$21,pixelRatio:p})};this._resizeBuffer(u);let g=u.cssToDevicePixels([i,s$21],!0),y=[g.x+Math.floor(g.width/2),g.y+Math.floor(g.height/2)],b=Math.round(n*p),{width:v,height:w}=this.pickingFBO,x=this._getPickingRect({deviceX:y[0],deviceY:y[1],deviceRadius:b,deviceWidth:v,deviceHeight:w}),E={x:i-n,y:s$21-n,width:n*2+1,height:n*2+1},S,L=[],I=new Set;for(let C=0;C<a;C++){let M;if(x)M=Es(s(r({},this._drawAndSample({layers:m,views:e,viewports:r$51,onViewportActive:f,deviceRect:x,cullRect:E,effects:d,pass:`picking:${c}`,canvasContext:u})),{deviceX:y[0],deviceY:y[1],deviceRadius:b,deviceRect:x}));else M={pickedColor:null,pickedObjectIndex:-1};let V,W=this._getDepthLayers(M,m,l);if(W.length>0){let{pickedColors:k}=this._drawAndSample({layers:W,views:e,viewports:r$51,onViewportActive:f,deviceRect:{x:M.pickedX??y[0],y:M.pickedY??y[1],width:1,height:1},cullRect:E,effects:d,pass:`picking:${c}:z`,canvasContext:u},!0);k[3]&&(V=k[0])}M.pickedLayer&&C+1<a&&(I.add(M.pickedLayer),M.pickedLayer.disablePickingIndex(M.pickedObjectIndex)),S=As({pickInfo:M,lastPickedInfo:this.lastPickedInfo,mode:c,layers:m,viewports:r$51,x:i,y:s$21,z:V,pixelRatio:p});for(let k of S.values())k.layer&&L.push(k);if(!M.pickedColor)break}for(let C of I)C.restorePickingColors();return{result:L,emptyInfo:S.get(null)}}async _pickVisibleObjectsAsync({layers:t,views:e,viewports:r,x:i,y:s,width:n=1,height:a=1,mode:c=`query`,maxObjects:l=null,canvasContext:u=this.device.getDefaultCanvasContext(),onViewportActive:f,effects:d}){let p=this._getPickable(t);if(!p||r.length===0)return[];this._resizeBuffer(u);let m=u.cssToDeviceRatio(),g=u.cssToDevicePixels([i,s],!0),y=g.x,b=g.y+g.height,v=u.cssToDevicePixels([i+n,s+a],!0),w=v.x+v.width,x=v.y,E={x:y,y:x,width:w-y,height:b-x},L=Ts(await this._drawAndSampleAsync({layers:p,views:e,viewports:r,onViewportActive:f,deviceRect:E,cullRect:{x:i,y:s,width:n,height:a},effects:d,pass:`picking:${c}`,canvasContext:u})),I=new Map,C=[],M=Number.isFinite(l);for(let V=0;V<L.length&&!(M&&C.length>=l);V++){let W=L[V],k={color:W.pickedColor,layer:null,index:W.pickedObjectIndex,picked:!0,x:i,y:s,pixelRatio:m};k=Ro({layer:W.pickedLayer,info:k,mode:c});let Ht=k.layer.id;I.has(Ht)||I.set(Ht,new Set);let Ye=I.get(Ht),$e=k.object??k.index;Ye.has($e)||(Ye.add($e),C.push(k))}return C}_pickVisibleObjects({layers:t,views:e,viewports:r,x:i,y:s,width:n=1,height:a=1,mode:c=`query`,maxObjects:l=null,canvasContext:u=this.device.getDefaultCanvasContext(),onViewportActive:f,effects:d}){let p=this._getPickable(t);if(!p||r.length===0)return[];this._resizeBuffer(u);let m=u.cssToDeviceRatio(),g=u.cssToDevicePixels([i,s],!0),y=g.x,b=g.y+g.height,v=u.cssToDevicePixels([i+n,s+a],!0),w=v.x+v.width,x=v.y,E={x:y,y:x,width:w-y,height:b-x},L=Ts(this._drawAndSample({layers:p,views:e,viewports:r,onViewportActive:f,deviceRect:E,cullRect:{x:i,y:s,width:n,height:a},effects:d,pass:`picking:${c}`,canvasContext:u})),I=new Map,C=[],M=Number.isFinite(l);for(let V=0;V<L.length&&!(M&&C.length>=l);V++){let W=L[V],k={color:W.pickedColor,layer:null,index:W.pickedObjectIndex,picked:!0,x:i,y:s,pixelRatio:m};k=Ro({layer:W.pickedLayer,info:k,mode:c});let Ht=k.layer.id;I.has(Ht)||I.set(Ht,new Set);let Ye=I.get(Ht),$e=k.object??k.index;Ye.has($e)||(Ye.add($e),C.push(k))}return C}async _drawAndSampleAsync({layers:t,views:e,viewports:r,onViewportActive:i,deviceRect:s,cullRect:n,effects:a,pass:c,canvasContext:l},u=!1){let f=u?this.depthFBO:this.pickingFBO,d={layers:t,layerFilter:this.layerFilter,views:e,viewports:r,onViewportActive:i,pickingFBO:f,deviceRect:s,cullRect:n,effects:a,pass:c,canvasContext:l,pickZ:u,preRenderStats:{},isPicking:!0};for(let E of a)E.useInPicking&&(d.preRenderStats[E.id]=E.preRender(d));let{decodePickingColor:p,stats:m}=this.pickLayersPass.render(d);this._updateStats(m);let{x:g,y,width:b,height:v}=s,w=f.colorAttachments[0]?.texture;if(!w)throw new Error(`Picking framebuffer color attachment is missing`);let x=await this._readTextureDataAsync(w,{x:g,y,width:b,height:v},u?Float32Array:Uint8Array);if(!u){let E=!1;for(let S=3;S<x.length;S+=4)if(x[S]!==0){E=!0;break}!E&&x.length>0&&A.warn(`Async pick readback returned only zero alpha values`,{deviceRect:s,bytes:Array.from(x.subarray(0,Math.min(x.length,16)))})()}return{pickedColors:x,decodePickingColor:p}}async _readTextureDataAsync(t,e,r){let{width:i,height:s}=e,n=t.computeMemoryLayout(e),a=this.device.createBuffer({byteLength:n.byteLength,usage:P$2.COPY_DST|P$2.MAP_READ});try{t.readBuffer(e,a);let c=await a.readAsync(0,n.byteLength),l=r.BYTES_PER_ELEMENT;if(n.bytesPerRow%l!==0)throw new Error(`Texture readback row stride ${n.bytesPerRow} is not aligned to ${l}-byte elements.`);let u=new r(c.buffer,c.byteOffset,n.byteLength/l),f=i*4,d=n.bytesPerRow/l;if(d<f)throw new Error(`Texture readback row stride ${d} is smaller than packed row length ${f}.`);let p=new r(i*s*4);for(let m=0;m<s;m++){let g=m*d;p.set(u.subarray(g,g+f),m*f)}return p}finally{a.destroy()}}_drawAndSample({layers:t,views:e,viewports:r,onViewportActive:i,deviceRect:s,cullRect:n,effects:a,pass:c,canvasContext:l},u=!1){let f=u?this.depthFBO:this.pickingFBO,d={layers:t,layerFilter:this.layerFilter,views:e,viewports:r,onViewportActive:i,pickingFBO:f,deviceRect:s,cullRect:n,effects:a,pass:c,canvasContext:l,pickZ:u,preRenderStats:{},isPicking:!0};for(let x of a)x.useInPicking&&(d.preRenderStats[x.id]=x.preRender(d));let{decodePickingColor:p,stats:m}=this.pickLayersPass.render(d);this._updateStats(m);let{x:g,y,width:b,height:v}=s,w=new(u?Float32Array:Uint8Array)(b*v*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:g,sourceY:y,sourceWidth:b,sourceHeight:v,target:w}),{pickedColors:w,decodePickingColor:p}}_updateStats(t){if(!this.stats)return;let e=0;for(let{visibleCount:r}of t)e+=r;this.stats.get(`Layers picked`).addCount(e)}_getDepthLayers(t,e,r){if(!r||!this.depthFBO)return[];let{pickedLayer:i}=t,s=i?.state?.terrainDrawMode===`drape`;return i&&!s?[i]:e.filter(n=>n.props.operation.includes(`terrain`))}_getPickingRect({deviceX:t,deviceY:e,deviceRadius:r,deviceWidth:i,deviceHeight:s}){let n=Math.max(0,t-r),a=Math.max(0,e-r),c=Math.min(i,t+r+1)-n,l=Math.min(s,e+r+1)-a;return c<=0||l<=0?null:{x:n,y:a,width:c,height:l}}};var kd={"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}};var Od=`top-left`;var bc=`root`;var ko=class{constructor({deck:t,parentElement:e}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=t,e?.classList.add(`deck-widget-container`),this.parentElement=e}getWidgets(){return this.resolvedWidgets}setProps(t){if(t.widgets&&!B(t.widgets,this.widgets,1)){let e=t.widgets.filter(Boolean);this._setWidgets(e)}}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(e=>e.id===t.id)||(this._addWidget(t),this.defaultWidgets.push(t),this._setWidgets(this.widgets))}onRedraw({viewports:t,layers:e}){let r=t.reduce((i,s)=>(i[s.id]=s,i),{});for(let i of this.getWidgets()){let{viewId:s}=i;if(s){let n=r[s];n&&(i.onViewportChange&&i.onViewportChange(n),i.onRedraw?.({viewports:[n],layers:e}))}else{if(i.onViewportChange)for(let n of t)i.onViewportChange(n);i.onRedraw?.({viewports:t,layers:e})}}this.lastViewports=r,this._updateContainers()}onHover(t,e){for(let r of this.getWidgets()){let{viewId:i}=r;(!i||i===t.viewport?.id)&&r.onHover?.(t,e)}}getCanvasBounds(t){let r=this.deck?.getCanvas?.()?.getBoundingClientRect(),i=this.parentElement?.getBoundingClientRect(),s=this.deck?.getCanvasContext?.(t?.id);if(s&&i){s.updatePosition();let[n,a]=s.getPosition(),[c,l]=s.getCSSSize();return{x:n-i.left,y:a-i.top,width:c,height:l}}return{x:r&&i?r.left-i.left:0,y:r&&i?r.top-i.top:0,width:r?.width||this.deck?.width||0,height:r?.height||this.deck?.height||0}}onEvent(t,e){let r=Ee[e.type];if(r)for(let i of this.getWidgets()){let{viewId:s}=i;(!s||s===t.viewport?.id)&&i[r]?.(t,e)}}_setWidgets(t){let e={};for(let r of this.resolvedWidgets)e[r.id]=r;this.resolvedWidgets.length=0;for(let r of this.defaultWidgets)e[r.id]=null,this.resolvedWidgets.push(r);for(let r of t){let i=e[r.id];i?i.viewId!==r.viewId||i.placement!==r.placement?(this._removeWidget(i),this._addWidget(r)):r!==i&&(i.setProps(r.props),r=i):this._addWidget(r),e[r.id]=null,this.resolvedWidgets.push(r)}for(let r in e){let i=e[r];i&&this._removeWidget(i)}this.widgets=t}_addWidget(t){let{viewId:e=null,placement:r=Od}=t,i=t.props._container??e;t.widgetManager=this,t.deck=this.deck,t.rootElement=t._onAdd({deck:this.deck,viewId:e}),t.rootElement&&this._getContainer(i,r).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,e){if(t&&typeof t!=`string`)return t;let r=t||bc,i=this.containers[r];i||(i=document.createElement(`div`),i.style.pointerEvents=`none`,i.style.position=`absolute`,i.style.overflow=`hidden`,this.parentElement?.append(i),this.containers[r]=i);let s=i.querySelector(`.${e}`);return s||(s=globalThis.document.createElement(`div`),s.className=e,s.style.position=`absolute`,s.style.zIndex=`2`,Object.assign(s.style,kd[e]),i.append(s)),s}_updateContainers(){for(let t in this.containers){let e=this.lastViewports[t]||null,r=t===bc||e,i=this.containers[t];if(r){let s=this._getContainerBounds(e);i.style.display=`block`,i.style.left=`${s.x}px`,i.style.top=`${s.y}px`,i.style.width=`${s.width}px`,i.style.height=`${s.height}px`}else i.style.display=`none`}}_getContainerBounds(t){if(!t)return{x:0,y:0,width:this.parentElement?.clientWidth||this.deck.width,height:this.parentElement?.clientHeight||this.deck.height};let e=this.getCanvasBounds(t);return{x:e.x+t.x,y:e.y+t.y,width:t.width,height:t.height}}};function Ss(o,t){t&&Object.entries(t).map(([e,r])=>{e.startsWith(`--`)?o.style.setProperty(e,r):o.style[e]=r})}function vc(o,t){t&&Object.keys(t).map(e=>{e.startsWith(`--`)?o.style.removeProperty(e):o.style[e]=``})}var Ms=(()=>{class o{constructor(e){this.viewId=null,this.props=r(r({},this.constructor.defaultProps),e),this.id=this.props.id}setProps(e){let r=this.props,i=this.rootElement;i&&r.className!==e.className&&(r.className&&i.classList.remove(r.className),e.className&&i.classList.add(e.className)),i&&!B(r.style,e.style,1)&&(vc(i,r.style),Ss(i,e.style)),Object.assign(this.props,e),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}get viewIds(){return this.viewId?[this.viewId]:this.deck?.getViews().map(e=>e.id)??[]}getViewState(e){return this.deck?.viewManager?.getViewState(e)||{}}setViewState(e,r){this.deck?._onViewStateChange({viewId:e,viewState:r,interactionState:{}})}onCreateRootElement(){let e=[`deck-widget`,this.className,this.props.className],r=document.createElement(`div`);return e.filter(i=>typeof i==`string`&&i.length>0).forEach(i=>r.classList.add(i)),Ss(r,this.props.style),r}_onAdd(e){return this.onAdd(e)??this.onCreateRootElement()}onAdd(e){}onRemove(){}onViewportChange(e){}onRedraw(e){}onHover(e,r){}onClick(e,r){}onDrag(e,r){}onDragStart(e,r){}onDragEnd(e,r){}}return o.defaultProps={id:`widget`,style:{},_container:null,className:``},o})();var Dd={zIndex:`1`,position:`absolute`,pointerEvents:`none`,color:`#a0a7b4`,backgroundColor:`#29323c`,padding:`10px`,top:`0`,left:`0`,display:`none`};var xr=class extends Ms{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,Dd),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:e}=this,r=e&&e.props.getTooltip;if(!r)return;let i=r(t),s=this.widgetManager?.getCanvasBounds(t.viewport),n=t.x+(s?.x||0),a=t.y+(s?.y||0);this.setTooltip(i,n,a)}setTooltip(t,e,r){let i=this.rootElement;if(i){if(typeof t==`string`)i.innerText=t;else if(t)t.text&&(i.innerText=t.text),t.html&&(i.innerHTML=t.html),t.className&&(i.className=t.className);else{this.isVisible=!1,i.style.display=`none`;return}this.isVisible=!0,i.style.display=`block`,i.style.transform=`translate(${e}px, ${r}px)`,t&&typeof t==`object`&&`style`in t&&Object.assign(i.style,t.style)}}};xr.defaultProps=r({},Ms.defaultProps);var Oo=class{constructor(t){this.targets={},this.order=[],this.eventManagers={},this._eventRootToCanvasId=new WeakMap,this._createEventManager=t.createEventManager,this._getEventRoot=t.getEventRoot}finalize(){for(let t of Object.values(this.targets))t.eventManager.destroy(),t.presentationContext.destroy();this.targets={},this.order=[],this.eventManagers={},this._eventRootToCanvasId=new WeakMap}syncCanvasEntries(t){let e=this._normalizeCanvasList(t.canvases),r={},i=[],s=new Map;for(let{canvas:a}of e){let c=this._getEventRoot(a);s.set(c,(s.get(c)||0)+1)}for(let{id:a,canvas:c}of e){let l=this._getEventRoot(c),u=s.get(l)===1?l:c,f=this.targets[a];if(!f||f.device!==t.device||f.canvas!==c||f.eventRoot!==u){f?.eventManager.destroy(),f?.presentationContext.destroy();let d=t.device.createPresentationContext({id:a,canvas:c,useDevicePixels:t.useDevicePixels,autoResize:!0});f={id:a,device:t.device,canvas:c,eventRoot:u,presentationContext:d,eventManager:this._createEventManager(u)}}this._eventRootToCanvasId.set(u,a),this._eventRootToCanvasId.set(c,a),r[a]=f,i.push(a)}for(let[a,c]of Object.entries(this.targets))r[a]||(c.eventManager.destroy(),c.presentationContext.destroy());this.targets=r,this.order=i;let n=Object.fromEntries(Object.entries(r).map(([a,c])=>[a,c.eventManager]));this._haveSameEventManagers(n)||(this.eventManagers=n)}getCanvasIdFromEvent(t){return t?this._eventRootToCanvasId.get(t):void 0}getTarget(t){return this.targets[t||this.order[0]||Gt]||null}_normalizeCanvasList(t=[]){let e=new Set;return t.map((r,i)=>{let s,n;return typeof r==`string`?(s=document.getElementById(r),R(s,`Canvas with id ${r} not found`),n=r):(s=r,n=s.id||`deckgl-canvas-${i}`),R(!e.has(n),`Duplicate canvas id ${n}`),e.add(n),{id:n,canvas:s}})}_haveSameEventManagers(t){let e=Object.keys(t),r=Object.keys(this.eventManagers);return e.length===r.length&&e.every(i=>t[i]===this.eventManagers[i])}};var xc=`4.5.1`;var Bd=globalThis.loaders?.parseImageNode;var Cs=typeof Image<`u`;var Is=typeof ImageBitmap<`u`;var Rs=ye?!0:!!Bd;function Pc(o){switch(o){case`auto`:return Is||Cs||Rs;case`imagebitmap`:return Is;case`image`:return Cs;case`data`:return Rs;default:throw new Error(`@loaders.gl/images: image ${o} not supported in this environment`)}}function Ec(){if(Is)return`imagebitmap`;if(Cs)return`image`;if(Rs)return`data`;throw new Error(`Install '@loaders.gl/polyfills' to parse images under Node.js`)}function Tc(o){let t=jd(o);if(!t)throw new Error(`Not an image`);return t}function Ls(o){switch(Tc(o)){case`data`:return o;case`image`:case`imagebitmap`:let t=document.createElement(`canvas`),e=t.getContext(`2d`);if(!e)throw new Error(`getImageData`);return t.width=o.width,t.height=o.height,e.drawImage(o,0,0),e.getImageData(0,0,o.width,o.height);default:throw new Error(`getImageData`)}}function jd(o){return typeof ImageBitmap<`u`&&o instanceof ImageBitmap?`imagebitmap`:typeof Image<`u`&&o instanceof Image?`image`:o&&typeof o==`object`&&o.data&&o.width&&o.height?`data`:null}var Nd=/^data:image\/svg\+xml/;var Vd=/\.svg((\?|#).*)?$/;function Do(o){return o&&(Nd.test(o)||Vd.test(o))}function Ac(o,t){if(Do(t)){let r=new TextDecoder().decode(o);try{typeof unescape==`function`&&typeof encodeURIComponent==`function`&&(r=unescape(encodeURIComponent(r)))}catch(s){throw new Error(s.message)}return`data:image/svg+xml;base64,${btoa(r)}`}return ks(o,t)}function ks(o,t){if(Do(t))throw new Error(`SVG cannot be parsed directly to imagebitmap`);return new Blob([new Uint8Array(o)])}async function Bo(o,t,e){let r=Ac(o,e),i=self.URL||self.webkitURL,s=typeof r!=`string`&&i.createObjectURL(r);try{return await zd(s||r,t)}finally{s&&i.revokeObjectURL(s)}}async function zd(o,t){let e=new Image;return e.src=o,t.image&&t.image.decode&&e.decode?(await e.decode(),e):await new Promise((r,i)=>{try{e.onload=()=>r(e),e.onerror=s=>{let n=s instanceof Error?s.message:`error`;i(new Error(n))}}catch(s){i(s)}})}var Sc=!0;async function Mc(o,t,e){let r;Do(e)?r=await Bo(o,t,e):r=ks(o,e);let i=t&&t.imagebitmap;return await Fd(r,i)}async function Fd(o,t=null){if((Wd(t)||!Sc)&&(t=null),t)try{return await createImageBitmap(o,t)}catch(e){console.warn(e),Sc=!1}return await createImageBitmap(o)}function Wd(o){if(!o)return!0;for(let t in o)if(Object.prototype.hasOwnProperty.call(o,t))return!1;return!0}function Cc(o){return!Hd(o,`ftyp`,4)||(o[8]&96)===0?null:Gd(o)}function Gd(o){switch(Yd(o,8,12).replace(`\0`,` `).trim()){case`avif`:case`avis`:return{extension:`avif`,mimeType:`image/avif`};default:return null}}function Yd(o,t,e){return String.fromCharCode(...o.slice(t,e))}function $d(o){return[...o].map(t=>t.charCodeAt(0))}function Hd(o,t,e=0){let r=$d(t);for(let i=0;i<r.length;++i)if(r[i]!==o[i+e])return!1;return!0}var Tt=!1;var Pr=!0;function Er(o){let t=Tr(o);return Zd(t)||Jd(t)||Xd(t)||Kd(t)||qd(t)}function qd(o){let e=Cc(new Uint8Array(o instanceof DataView?o.buffer:o));return e?{mimeType:e.mimeType,width:0,height:0}:null}function Zd(o){let t=Tr(o);return t.byteLength>=24&&t.getUint32(0,Tt)===2303741511?{mimeType:`image/png`,width:t.getUint32(16,Tt),height:t.getUint32(20,Tt)}:null}function Xd(o){let t=Tr(o);return t.byteLength>=10&&t.getUint32(0,Tt)===1195984440?{mimeType:`image/gif`,width:t.getUint16(6,Pr),height:t.getUint16(8,Pr)}:null}function Kd(o){let t=Tr(o);return t.byteLength>=14&&t.getUint16(0,Tt)===16973&&t.getUint32(2,Pr)===t.byteLength?{mimeType:`image/bmp`,width:t.getUint32(18,Pr),height:t.getUint32(22,Pr)}:null}function Jd(o){let t=Tr(o);if(!(t.byteLength>=3&&t.getUint16(0,Tt)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:r,sofMarkers:i}=Qd(),s=2;for(;s+9<t.byteLength;){let n=t.getUint16(s,Tt);if(i.has(n))return{mimeType:`image/jpeg`,height:t.getUint16(s+5,Tt),width:t.getUint16(s+7,Tt)};if(!r.has(n))return null;s+=2,s+=t.getUint16(s,Tt)}return null}function Qd(){let o=new Set([65499,65476,65484,65501,65534]);for(let e=65504;e<65520;++e)o.add(e);return{tableMarkers:o,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function Tr(o){if(o instanceof DataView)return o;if(ArrayBuffer.isView(o))return new DataView(o.buffer);if(o instanceof ArrayBuffer)return new DataView(o);throw new Error(`toDataView`)}async function Ic(o,t){let{mimeType:e}=Er(o)||{},r=globalThis.loaders?.parseImageNode;return jt(r),await r(o,e)}async function Rc(o,t,e){t=t||{};let i=(t.image||{}).type||`auto`,{url:s}=e||{},n=tp(i),a;switch(n){case`imagebitmap`:a=await Mc(o,t,s);break;case`image`:a=await Bo(o,t,s);break;case`data`:a=await Ic(o,t);break;default:jt(!1)}return i===`data`&&(a=Ls(a)),a}function tp(o){switch(o){case`auto`:case`data`:return Ec();default:return Pc(o),o}}var Os={dataType:null,batchType:null,id:`image`,module:`images`,name:`Images`,version:xc,mimeTypes:[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/avif`,`image/bmp`,`image/vnd.microsoft.icon`,`image/svg+xml`],extensions:[`png`,`jpg`,`jpeg`,`gif`,`webp`,`bmp`,`ico`,`svg`,`avif`],parse:Rc,tests:[o=>!!Er(new DataView(o))],options:{image:{type:`auto`,decode:!0}}};var ip=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/avif`,`image/tiff`,`image/svg`,`image/svg+xml`,`image/bmp`,`image/vnd.microsoft.icon`];var Uo=null;async function sp(){return Uo?await Uo:(Uo=np(),await Uo)}async function np(){let o=new Set;for(let t of ip)(ye?await up(t):Lc(t))&&o.add(t);return o}var Ds={};function ap(o){if(Ds[o]===void 0)Ds[o]=ye?cp(o):Lc(o);return Ds[o]}function Lc(o){let e=globalThis.loaders?.imageFormatsNode||[`image/png`,`image/jpeg`,`image/gif`];return!!globalThis.loaders?.parseImageNode&&e.includes(o)}function cp(o){switch(o){case`image/avif`:case`image/webp`:return fp(o);default:return!0}}var lp={"image/avif":`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=`,"image/webp":`data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA`};async function up(o){let t=lp[o];return t?await hp(t):!0}function fp(o){try{return document.createElement(`canvas`).toDataURL(o).indexOf(`data:${o}`)===0}catch{return!1}}async function hp(o){return new Promise(t=>{let e=new Image;e.src=o,e.onload=()=>t(e.height>0),e.onerror=()=>t(!1)})}function dp(o){let t=o[0],e=o[o.length-1];return t===`{`&&e===`}`||t===`[`&&e===`]`}var kc={dataType:null,batchType:null,id:`JSON`,name:`JSON`,module:``,version:``,options:{},extensions:[`json`,`geojson`],mimeTypes:[`application/json`,`application/geo+json`],testText:dp,parseTextSync:JSON.parse};function pp(){let o=`9.4.0`,t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==o)throw new Error(`deck.gl - multiple versions detected: ${t} vs ${o}`);return t||(A.log(1,`deck.gl ${o}`)(),globalThis.deck=s(r({},globalThis.deck),{VERSION:o,version:o,log:A,_registerLoggers:ac}),Fi([kc,[Os,{imagebitmap:{premultiplyAlpha:`none`}}]])),o}var Oc=pp();function kt(){}var mp=({isDragging:o})=>o?`grabbing`:`grab`;var Dc={id:``,width:`100%`,height:`100%`,style:null,viewState:null,initialViewState:null,pickingRadius:0,pickAsync:`auto`,layerFilter:null,parameters:{},parent:null,device:null,deviceProps:{},gl:null,canvas:null,_canvases:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:`none`,eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,widgets:[],onDeviceInitialized:kt,onWebGLInitialized:kt,onResize:kt,onViewStateChange:kt,onInteractionStateChange:kt,onBeforeRender:kt,onAfterRender:kt,onLoad:kt,onError:o=>A.error(o.message,o.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:mp,getTooltip:null,debug:!1,drawPickingColors:!1};var yp=(()=>{class o{constructor(e){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.eventManagers={},this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this._canvasContext=null,this._deviceResizeHandler=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new j$3({id:`deck.gl`}),this.metrics={fps:0,setPropsTime:0,layersCount:0,drawLayersCount:0,updateLayersCount:0,updateAttributesCount:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,pickLayersCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._hoverPickSequence=0,this._pointerDownPickSequence=0,this._needsRedraw=`Initial render`,this._canvasManager=new Oo({createEventManager:s=>this._createEventManager(s),getEventRoot:s=>this._getEventRoot(s)}),this._ownedCanvas=null,this._pickRequest={mode:`hover`,x:-1,y:-1,radius:0,canvasId:void 0,event:null,unproject3D:!1},this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=null,this._onPointerMove=s=>{let{_pickRequest:n}=this,a=this._getCanvasIdFromEvent(s);if(s.type===`pointerleave`)n.x=-1,n.y=-1,n.radius=0,n.canvasId=a;else{if(s.leftButton||s.rightButton)return;{let c=s.offsetCenter;if(!c)return;n.x=c.x,n.y=c.y,n.radius=this.props.pickingRadius,n.canvasId=a}}this.layerManager&&(this.layerManager.context.mousePosition={x:n.x,y:n.y}),n.event=s},this._onEvent=s=>{let n=Ee[s.type],a=s.offsetCenter,c=this._getCanvasIdFromEvent(s);if(!n||!a||!this.layerManager)return;let l=this.layerManager.getLayers(),u=this._getInternalPickingMode();if(!u)return;if(u===`sync`){let d=s.type===`click`&&this._shouldUnproject3D(l)?this._getFirstPickedInfo(this._pickPointSync(this._getPointPickOptions(a.x,a.y,{unproject3D:!0,canvasId:c},l))):this._getLastPointerDownPickingInfo(a.x,a.y,c,l);this._dispatchPickingEvent(d,s);return}(this._lastPointerDownInfoPromise||Promise.resolve(this._getLastPointerDownPickingInfo(a.x,a.y,c,l))).then(d=>{this._dispatchPickingEvent(d,s)}).catch(d=>this.props.onError?.(d))},this._onPointerDown=s=>{let n=s.offsetCenter,a=this._getCanvasIdFromEvent(s);if(!n)return;let c=this._getInternalPickingMode();if(!c)return;let l=this.layerManager?.getLayers()||[],u=++this._pointerDownPickSequence;if(c===`sync`){let d=this._pickPointSync({x:n.x,y:n.y,canvasId:a,radius:this.props.pickingRadius}),p=this._getFirstPickedInfo(d);this._lastPointerDownInfo=p,this._lastPointerDownInfoPromise=Promise.resolve(p);return}let f=this._pickPointAsync(this._getPointPickOptions(n.x,n.y,{canvasId:a},l)).then(d=>this._getFirstPickedInfo(d)).then(d=>(u===this._pointerDownPickSequence&&(this._lastPointerDownInfo=d),d)).catch(d=>{this.props.onError?.(d);let p=this.deckPicker&&this.viewManager?this._getLastPointerDownPickingInfo(n.x,n.y,a,l):{};return u===this._pointerDownPickSequence&&(this._lastPointerDownInfo=p),p});this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=f};let r$52=e;this.props=r(r({},Dc),e),e=this.props,this._validateCanvasConfiguration(e),e.viewState&&e.initialViewState&&A.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,e.device&&(this.device=e.device,this._setDeviceCanvasContext(e.device));let i=this.device;!i&&e.gl&&(e.gl instanceof WebGLRenderingContext&&A.error(`WebGL1 context not supported.`)(),i=Sn$1.attach(e.gl,r({_cacheShaders:!0,_cachePipelines:!0},this.props.deviceProps))),i||(i=this._createDevice(e)),this.animationLoop=this._createAnimationLoop(i,e),this.setProps(r$52),e._typedArrayManagerProps&&dt.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){this._restoreDeviceResizeHandler(),this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._hoverPickSequence++,this._pointerDownPickSequence++,this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=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,Object.keys(this._canvasManager.targets).length||this.eventManager?.destroy(),this.eventManager=null,this.eventManagers={},this.widgetManager?.finalize(),this.widgetManager=null,this._canvasManager.finalize(),this._isMultiCanvasMode()?this.canvas=null:this.canvas&&this.canvas===this._ownedCanvas&&(this.canvas.parentElement?.removeChild(this.canvas),this.canvas=null,this._ownedCanvas=null),this._canvasContext=null}setProps(e){this.stats.get(`setProps Time`).timeStart(),`onLayerHover`in e&&A.removed(`onLayerHover`,`onHover`)(),`onLayerClick`in e&&A.removed(`onLayerClick`,`onClick`)(),e.initialViewState&&!B(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),R(!(`_canvases`in e)||Array.isArray(e._canvases)===this._isMultiCanvasMode()),Object.assign(this.props,e),this._validateCanvasConfiguration(this.props),this._validateInternalPickingMode(),this.device&&this._isMultiCanvasMode()&&this._syncCanvasTargets(),this._setCanvasSize(this.props);let r=Object.create(this.props);if(Object.assign(r,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState(),eventManagers:this.eventManagers}),e.device&&e.device.id!==this.device?.id){let i=e.device.getDefaultCanvasContext();this.animationLoop?.stop(),!this._isMultiCanvasMode()&&this.canvas!==i.canvas&&(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),this._setDeviceCanvasContext(e.device),A.log(`recreating animation loop for new device! id=${e.device.id}`)(),this.animationLoop=this._createAnimationLoop(e.device,e),this.animationLoop.start()}if(this.animationLoop?.setProps(r),e.useDevicePixels!==void 0&&this._canvasContext?.setProps){this._canvasContext.setProps({useDevicePixels:e.useDevicePixels});for(let i of Object.values(this._canvasManager.targets))i.presentationContext.setProps({useDevicePixels:e.useDevicePixels})}this.layerManager&&(this.viewManager.setProps(r),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(r),this.effectManager.setProps(r),this.deckRenderer.setProps(r),this.deckPicker.setProps(r),this.widgetManager.setProps(r)),this.stats.get(`setProps Time`).timeEnd()}needsRedraw(e={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return`Deck._animate`;let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);let i=this.viewManager.needsRedraw(e),s=this.layerManager.needsRedraw(e),n=this.effectManager.needsRedraw(e),a=this.deckRenderer.needsRedraw(e);return r=r||i||s||n||a,r}redraw(e){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=e||r,r&&(this.stats.get(`Redraw Count`).incrementCount(),this.props._customRender?this.props._customRender(r):this._drawLayers(r))}get isInitialized(){return this.viewManager!==null}getViews(){return R(this.viewManager),this.viewManager.views}getView(e){return R(this.viewManager),this.viewManager.getView(e)}getViewports(e){return R(this.viewManager),this.viewManager.getViewports(e)}getCanvas(){return this.canvas}getCanvasContext(e){let r=e?this.viewManager?.getView(e)?.props.canvasId:void 0;return this._getCanvasContext(r)}getEventManager(e){if(!e||!this.viewManager)return this.eventManager;let r=this.viewManager.getCanvasId(e)||Gt;return this.eventManagers[r]||this.eventManager}async pickObjectAsync(e){let r=(await this._pickAsync(`pickObjectAsync`,`pickObject Time`,e)).result;return r.length?r[0]:null}async pickObjectsAsync(e){return await this._pickAsync(`pickObjectsAsync`,`pickObjects Time`,e)}pickObject(e){let r=this._pick(`pickObject`,`pickObject Time`,e).result;return r.length?r[0]:null}pickMultipleObjects(e){return e.depth=e.depth||10,this._pick(`pickObject`,`pickMultipleObjects Time`,e).result}pickObjects(e){return this._pick(`pickObjects`,`pickObjects Time`,e)}_pickPositionForController(e,r,i){return this._getInternalPickingMode()!==`sync`?null:this.pickObject({x:e,y:r,radius:0,unproject3D:!0,canvasId:i?this.viewManager?.getCanvasId(i):void 0})}_addResources(e,r=!1){for(let i in e)this.layerManager.resourceManager.add({resourceId:i,data:e[i],forceUpdate:r})}_removeResources(e){for(let r of e)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(e){this.effectManager.addDefaultEffect(e)}_addDefaultShaderModule(e){this.layerManager.addDefaultShaderModule(e)}_removeDefaultShaderModule(e){this.layerManager?.removeDefaultShaderModule(e)}_resolveInternalPickingMode(){let{pickAsync:e}=this.props,r=this.device?.type||this.props.deviceProps?.type;if(e===`auto`)return r===`webgpu`?`async`:`sync`;if(e===`sync`&&r===`webgpu`)throw new Error('`pickAsync: "sync"` is not supported when Deck is using a WebGPU device.');return e}_getInternalPickingMode(){try{return this._resolveInternalPickingMode()}catch(e){return this.props.onError?.(e),null}}_validateInternalPickingMode(){this._getInternalPickingMode()}_getFirstPickedInfo({result:e,emptyInfo:r}){return e[0]||r}_shouldUnproject3D(e=this.layerManager?.getLayers()||[]){return e.some(r=>r.props.pickable===`3d`)}_getPointPickOptions(e,r$53,i={},s=this.layerManager?.getLayers()||[]){return r({x:e,y:r$53,canvasId:i.canvasId,radius:this.props.pickingRadius,unproject3D:this._shouldUnproject3D(s)},i)}_pickPointSync(e){return this._pick(`pickObject`,`pickObject Time`,e)}_pickPointAsync(e){return this._pickAsync(`pickObjectAsync`,`pickObject Time`,e)}_getLastPointerDownPickingInfo(e,r,i,s=this.layerManager?.getLayers()||[]){return this.deckPicker.getLastPickedObject({x:e,y:r,layers:s,viewports:this.getViewports({x:e,y:r,canvasId:i})},this._lastPointerDownInfo)}_applyHoverCallbacks({result:e,emptyInfo:r},i){if(!this.widgetManager)return;this.cursorState.isHovering=e.length>0;let s=r,n=!1;for(let a of e)s=a,n=a.layer?.onHover(a,i)||n;n||(this.props.onHover?.(s,i),this.widgetManager.onHover(s,i))}_dispatchPickingEvent(e,r){if(!this.layerManager||!this.widgetManager)return;let i=Ee[r.type];if(!i)return;let{layer:s}=e,n=s&&(s[i]||s.props[i]),a=this.props[i],c=!1;n&&(c=n.call(s,e,r)),c||(a?.(e,r),this.widgetManager.onEvent(e,r))}_pickAsync(e,r$54,i){R(this.deckPicker);let{stats:s$22}=this,n=this._isMultiCanvasMode()?i.canvasId||this._getDefaultCanvasId():i.canvasId,a=this._getCanvasContext(n)||void 0;s$22.get(`Pick Count`).incrementCount(),s$22.get(r$54).timeStart(),this._resizeForCanvasTarget(n);let c=this.deckPicker[e](s(r({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(s(r({},i),{canvasId:n})),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects()},i),{canvasId:n,canvasContext:a}));return s$22.get(r$54).timeEnd(),c}_pick(e,r$55,i){R(this.deckPicker);let{stats:s$23}=this,n=this._isMultiCanvasMode()?i.canvasId||this._getDefaultCanvasId():i.canvasId,a=this._getCanvasContext(n)||void 0;s$23.get(`Pick Count`).incrementCount(),s$23.get(r$55).timeStart(),this._resizeForCanvasTarget(n);let c=this.deckPicker[e](s(r({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(s(r({},i),{canvasId:n})),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects()},i),{canvasId:n,canvasContext:a}));return s$23.get(r$55).timeEnd(),c}_createCanvas(e){let r=e.canvas;return typeof r==`string`&&(r=document.getElementById(r),R(r)),r?this._ownedCanvas=null:(r=document.createElement(`canvas`),r.id=e.id||`deckgl-overlay`,e.width&&typeof e.width==`number`&&(r.width=e.width),e.height&&typeof e.height==`number`&&(r.height=e.height),(e.parent||document.body).appendChild(r),this._ownedCanvas=r),Object.assign(r.style,e.style),r}_isMultiCanvasMode(){return Array.isArray(this.props._canvases)}_getDefaultCanvasId(){return this._canvasManager.order[0]||Gt}_validateCanvasConfiguration(e){Array.isArray(e._canvases)&&(R(!e.canvas),R(!e.gl),R(!e.device?.canvasContext||e.device.getDefaultCanvasContext().offscreenCanvas))}_createEventManager(e){let r$56=new fr(e,{touchAction:this.props.touchAction,recognizers:Object.keys(as).map(i=>{let[s$24,n,a,c]=as[i],l=this.props.eventRecognizerOptions?.[i];return{recognizer:new s$24(s(r(r({},n),l),{event:i})),recognizeWith:a,requireFailure:c}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let i in Ee)i===`dblclick`?r$56.watch(i,this._onEvent):r$56.on(i,this._onEvent);return r$56}_getEventRoot(e){return e.closest(`.deck-events-root`)||this.props.parent?.querySelector(`.deck-events-root`)||e}_syncCanvasTargets(){if(!this.device||!this._isMultiCanvasMode())return;this._canvasManager.syncCanvasEntries({device:this.device,canvases:this.props._canvases||[],useDevicePixels:this.props.useDevicePixels}),this.eventManagers=this._canvasManager.eventManagers;let e=this._getDefaultCanvasId();this.eventManager=this.eventManagers[e]||null,this.canvas=this._canvasManager.targets[e]?.canvas||null}_setCanvasContext(e){this._canvasContext=e,`style`in e.canvas&&(this.canvas=e.canvas)}_setDeviceCanvasContext(e,r={}){let i=e.getDefaultCanvasContext();this._setCanvasContext(i),this._setDeviceResizeHandler(e,r)}_setDeviceResizeHandler(e,r={}){let i=!!r.syncDrawingBuffer;if(this._deviceResizeHandler?.device===e){this._deviceResizeHandler.syncDrawingBuffer=i;return}this._restoreDeviceResizeHandler();let s=n=>{this._isMultiCanvasMode()?this._updateMultiCanvasDimensions():n===this._canvasContext&&this._canvasContext&&this._onCanvasContextResize(this._canvasContext,{syncDrawingBuffer:this._deviceResizeHandler?.syncDrawingBuffer})};e.props.onResize=s,this._deviceResizeHandler={device:e,onResize:s,syncDrawingBuffer:i}}_restoreDeviceResizeHandler(){let e=this._deviceResizeHandler;e&&e.device.props?.onResize===e.onResize&&(e.device.props.onResize=kt),this._deviceResizeHandler=null}_setCanvasSize(e){if(this._isMultiCanvasMode()||!this.canvas)return;let{width:r,height:i}=e;if(r||r===0){let s=Number.isFinite(r)?`${r}px`:r;this.canvas.style.width=s}if(i||i===0){let s=Number.isFinite(i)?`${i}px`:i;this.canvas.style.position=e.style?.position||`absolute`,this.canvas.style.height=s}}_getCanvasIdFromEvent(e){return this._canvasManager.getCanvasIdFromEvent(e?.rootElement)}_getCanvasContext(e){return this._canvasManager.getTarget(e)?.presentationContext||this._canvasContext}_resizeForCanvasTarget(e){let r=this._canvasManager.getTarget(e);if(!r||!this.device?.canvasContext)return;let[i,s]=r.presentationContext.getDrawingBufferSize();this.device.canvasContext.setDrawingBufferSize(i,s)}_createDeviceCanvas(e){if(this._isMultiCanvasMode()){let r=globalThis.OffscreenCanvas;if(!r)throw new Error("`_canvases` requires OffscreenCanvas support.");return new r(typeof e.width==`number`&&Number.isFinite(e.width)?e.width:1,typeof e.height==`number`&&Number.isFinite(e.height)?e.height:1)}return this._createCanvas(e)}_updateCanvasSize(e=this._canvasContext){if(this._isMultiCanvasMode()){this._updateMultiCanvasDimensions();return}let{canvas:r}=this,[i,s]=e?e.getCSSSize():[r?.clientWidth??r?.width??0,r?.clientHeight??r?.height??0];(i!==this.width||s!==this.height)&&(this.width=i,this.height=s,this.viewManager?.setProps({width:i,height:s}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:i,height:s},e||void 0))}_onCanvasContextResize(e,r={}){if(r.syncDrawingBuffer){let{width:i,height:s}=e.canvas;e.setDrawingBufferSize(i,s)}this._needsRedraw=`Canvas resized`,this._updateCanvasSize(e)}_updateMultiCanvasDimensions(){let[e,r]=this._getCanvasContext()?.getCSSSize()||[0,0];(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.props.onResize({width:e,height:r})),this._needsRedraw=`Canvas resized`,this.viewManager?.setNeedsUpdate(`Canvas resized`),this.viewManager?.setProps({width:this.width,height:this.height})}_createAnimationLoop(e,r){let{gl:i,onError:s}=r;return new ti$2({device:e,autoResizeDrawingBuffer:!i&&!Array.isArray(r._canvases),autoResizeViewport:!1,onInitialize:n=>this._setDevice(n.device),onRender:this._onRenderFrame.bind(this),onError:s})}_createDevice(e){let r$57=this.props.deviceProps?.createCanvasContext,i=typeof r$57==`object`?r$57:void 0,s$25=r({adapters:[],_cacheShaders:!0,_cachePipelines:!0},e.deviceProps);s$25.adapters.includes(Sn$1)||s$25.adapters.push(Sn$1);let n={alphaMode:this.props.deviceProps?.type===`webgpu`?`premultiplied`:void 0};return Qr$2.createDevice(s(r({_reuseDevices:!0,type:`webgl`},s$25),{createCanvasContext:s(r(r({},n),i),{canvas:this._createDeviceCanvas(e),useDevicePixels:this.props.useDevicePixels,autoResize:!0})}))}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:e}=this.props,r=Array.isArray(e)?e:e?[e]:[new Ps({id:`default-view`})];return r.length&&this.props.controller&&(r[0]=r[0].clone({controller:this.props.controller})),r}_onContextLost(){let{onError:e}=this.props;this.animationLoop&&e&&e(new Error(`WebGL context is lost`))}_pickAndCallback(){let{_pickRequest:e}=this;if(e.event){let r=e.event,i=this.layerManager?.getLayers()||[],s=this._getPointPickOptions(e.x,e.y,{canvasId:e.canvasId,radius:e.radius,mode:e.mode},i),n=this._getInternalPickingMode(),a=++this._hoverPickSequence;if(e.event=null,e.canvasId=void 0,!n)return;if(n===`sync`){this._applyHoverCallbacks(this._pickPointSync(s),r);return}this._pickPointAsync(s).then(({result:c,emptyInfo:l})=>{a===this._hoverPickSequence&&this._applyHoverCallbacks({result:c,emptyInfo:l},r)}).catch(c=>this.props.onError?.(c))}}_updateCursor(){let e=this.props.getCursor(this.cursorState);if(this._isMultiCanvasMode()){for(let i of Object.values(this._canvasManager.targets))i.canvas.style.cursor=e;return}let r=this.props.parent||this.canvas;r&&(r.style.cursor=e)}_setDevice(e){if(this.device=e,this._validateInternalPickingMode(),!this.animationLoop)return;this._setDeviceCanvasContext(e,{syncDrawingBuffer:!!(this.props.gl&&this.props.device!==e)}),this._isMultiCanvasMode()?this._syncCanvasTargets():this.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 ei$1;if(r.play(),this.animationLoop.attachTimeline(r),!this._isMultiCanvasMode()){let n=this.canvas&&this._getEventRoot(this.canvas);R(n),this.eventManager=this._createEventManager(n),this.eventManagers={[Gt]:this.eventManager}}this.viewManager=new _o({timeline:r,eventManager:this.eventManager,eventManagers:this.eventManagers,getCanvasContext:this._isMultiCanvasMode()?this.getCanvasContext.bind(this):void 0,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),pickPosition:this._pickPositionForController.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let i=this.viewManager.getViewports()[0];this.layerManager=new yo(this.device,{deck:this,stats:this.stats,viewport:i,timeline:r}),this.effectManager=new So({deck:this,device:this.device}),this.deckRenderer=new Co(this.device,{stats:this.stats}),this.deckPicker=new Lo(this.device,{stats:this.stats});let s=this.props.parent?.querySelector(`.deck-widgets-root`)||(this._isMultiCanvasMode()?this.props.parent||this.canvas?.parentElement:null)||this.canvas?.parentElement;this.widgetManager=new ko({deck:this,parentElement:s}),this.widgetManager.addDefault(new xr),this.setProps({}),this._updateCanvasSize(this._canvasContext),this.props.onLoad()}_drawLayers(e,r$58){let{device:i,gl:s$26}=this.layerManager.context;this.props.onBeforeRender({device:i,gl:s$26});let n=r({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$58);if(this._isMultiCanvasMode()&&n.pass===`screen`&&!n.target&&this._canvasManager.order.length)for(let a of this._canvasManager.order){let c=n.viewports.filter(f=>this.viewManager.getCanvasId(f.id)===a);if(!c.length){let f=this._canvasManager.targets[a];this._resizeForCanvasTarget(a),this.deckRenderer?.renderLayers(s(r({},n),{canvasContext:f.presentationContext,target:f.presentationContext.getCurrentFramebuffer(),viewports:[],clearCanvas:!0})),f.presentationContext.present();continue}let l=this._canvasManager.targets[a];this._resizeForCanvasTarget(a);let u=l.presentationContext.getCurrentFramebuffer();this.deckRenderer?.renderLayers(s(r({},n),{canvasContext:l.presentationContext,target:u,viewports:c})),l.presentationContext.present()}else this.deckRenderer?.renderLayers(n);n.pass===`screen`&&this.widgetManager.onRedraw({viewports:n.viewports,layers:n.layers}),this.props.onAfterRender({device:i,gl:s$26})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),A.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCursor(),this.layerManager.updateLayers(),this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(e){let r$59=this.props.onViewStateChange(e)||e.viewState;this.viewState&&(this.viewState=s(r({},this.viewState),{[e.viewId]:r$59}),this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(e){this.cursorState.isDragging=e.isDragging||!1,this.props.onInteractionStateChange(e)}_getFrameStats(){let{stats:e}=this;e.get(`frameRate`).timeEnd(),e.get(`frameRate`).timeStart();let r=this.animationLoop.stats;e.get(`GPU Time`).addTime(r.get(`GPU Time`).lastTiming),e.get(`CPU Time`).addTime(r.get(`CPU Time`).lastTiming)}_getMetrics(){let{metrics:e,stats:r}=this;e.fps=r.get(`frameRate`).getHz(),e.setPropsTime=r.get(`setProps Time`).time,e.updateAttributesTime=r.get(`Update Attributes`).time,e.framesRedrawn=r.get(`Redraw Count`).count,e.pickTime=r.get(`pickObject Time`).time+r.get(`pickMultipleObjects Time`).time+r.get(`pickObjects Time`).time,e.pickCount=r.get(`Pick Count`).count,e.layersCount=this.layerManager?.layers.length??0,e.drawLayersCount=r.get(`Layers rendered`).lastSampleCount,e.pickLayersCount=r.get(`Layers picked`).lastSampleCount,e.updateLayersCount=r.get(`Layer updates`).count,e.updateAttributesCount=r.get(`Attributes updated`).count,e.gpuTime=r.get(`GPU Time`).time,e.cpuTime=r.get(`CPU Time`).time,e.gpuTimePerFrame=r.get(`GPU Time`).getAverageTime(),e.cpuTimePerFrame=r.get(`CPU Time`).getAverageTime();let i=Qr$2.stats.get(`GPU Time and Memory`);e.bufferMemory=i.get(`Buffer Memory`).count,e.textureMemory=i.get(`Texture Memory`).count,e.renderbufferMemory=i.get(`Renderbuffer Memory`).count,e.gpuMemory=i.get(`GPU Memory`).count}}return o.defaultProps=Dc,o.VERSION=Oc,o})();var Bc=[];var Uc=[];function Ar(o,t=0,e=Infinity){let r=Bc,i={index:-1,data:o,target:[]};return o?typeof o[Symbol.iterator]==`function`?r=o:o.length>0&&(Uc.length=o.length,r=Uc):r=Bc,(t>0||Number.isFinite(e))&&(r=(Array.isArray(r)?r:Array.from(r)).slice(t,e),i.index=t-1),{iterable:r,objectInfo:i}}function jo(o){return o&&o[Symbol.asyncIterator]}function No(o,t){let{size:e,stride:r,offset:i,startIndices:s,nested:n}=t,a=o.BYTES_PER_ELEMENT,c=r?r/a:e,l=i?i/a:0,u=Math.floor((o.length-l)/c);return(f,{index:d,target:p})=>{if(!s){let b=d*c+l;for(let v=0;v<e;v++)p[v]=o[b+v];return p}let m=s[d],g=s[d+1]||u,y;if(n){y=new Array(g-m);for(let b=m;b<g;b++){let v=b*c+l;p=new Array(e);for(let w=0;w<e;w++)p[w]=o[v+w];y[b-m]=p}}else if(c===e)y=o.subarray(m*e+l,g*e+l);else{y=new o.constructor((g-m)*e);let b=0;for(let v=m;v<g;v++){let w=v*c+l;for(let x=0;x<e;x++)y[b++]=o[w+x]}}return y}}function jc(o){switch(o){case`float64`:return Float64Array;case`uint8`:case`unorm8`:return Uint8ClampedArray;default:return Se$3(o)}}var Nc=I$2.getDataType.bind(I$2);function Sr(o,t,e){if(t.size>4)return null;let r=e===`webgpu`&&t.type===`uint8`?`unorm8`:t.type,i=t.size,s=!!(e!==`webgpu`&&i===3&&r&&[`uint8`,`sint8`,`unorm8`,`snorm8`,`uint16`,`sint16`,`unorm16`,`snorm16`].includes(r));return{attribute:o,format:i>1?`${r}x${i}${s?`-webgl`:``}`:t.type,byteOffset:t.offset||0}}function at(o){return o.stride||o.size*o.bytesPerElement}function Vc(o,t){return o.type===t.type&&o.size===t.size&&at(o)===at(t)&&(o.offset||0)===(t.offset||0)}function Bs(o,t){t.offset&&A.removed(`shaderAttribute.offset`,`vertexOffset, elementOffset`)();let e=at(o),r$60=t.vertexOffset!==void 0?t.vertexOffset:o.vertexOffset||0,i=t.elementOffset||0,s$27=r$60*e+i*o.bytesPerElement+(o.offset||0);return s(r({},t),{offset:s$27,stride:e})}function _p(o,t){let e=Bs(o,t);return{high:e,low:s(r({},e),{offset:e.offset+o.size*4})}}var Vo=class{constructor(t,e,r$61){this._buffer=null,this.device=t,this.id=e.id||``,this.size=e.size||1;let i=e.logicalType||e.type,s$28=i===`float64`,{defaultValue:n}=e;n=Number.isFinite(n)?[n]:n||new Array(this.size).fill(0);let a;s$28?a=`float32`:!i&&e.isIndexed?a=`uint32`:a=i||`float32`;let c=jc(i||a);this.doublePrecision=s$28,s$28&&e.fp64===!1&&(c=Float32Array),this.value=null,this.settings=s(r({},e),{defaultType:c,defaultValue:n,logicalType:i,type:a,normalized:a.includes(`norm`),size:this.size,bytesPerElement:c.BYTES_PER_ELEMENT}),this.state=s(r({},r$61),{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*at(t):0}get numInstances(){return this.state.numInstances}set numInstances(t){this.state.numInstances=t}get isDoublePrecisionBuffer(){return this._shouldSplitDoublePrecisionValue(this.value)}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),dt.release(this.state.allocatedValue),this.state.allocatedValue=null}getBuffer(){return this.state.constant&&this.device.type!==`webgpu`?null:this.state.externalBuffer||this._buffer}getValue(t=this.id,e=null){let r={};if(this.state.constant){let i=this.value;if(this.device.type===`webgpu`&&this._buffer)r[t]=this._buffer;else if(e){let s=Bs(this.getAccessor(),e),n=s.offset/i.BYTES_PER_ELEMENT,a=s.size||this.size;r[t]=i.subarray(n,n+a)}else r[t]=i}else r[t]=this.getBuffer();return this.doublePrecision&&(this.isDoublePrecisionBuffer?r[`${t}64Low`]=r[t]:r[`${t}64Low`]=new Float32Array(this.size)),r}_getBufferLayout(t=this.id,e=null){let r$62=this.getAccessor(),i=[],s={name:this.id,byteStride:this.device.type===`webgpu`&&this.state.constant?0:at(r$62)};if(this.doublePrecision){let n=_p(r$62,e||{});i.push(Sr(t,r(r({},r$62),n.high),this.device.type),Sr(`${t}64Low`,r(r({},r$62),n.low),this.device.type))}else if(e){let n=Bs(r$62,e);i.push(Sr(t,r(r({},r$62),n),this.device.type))}else i.push(Sr(t,r$62,this.device.type));return s.attributes=i.filter(Boolean),s}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 e=Array.from(this.value);t=[e,e]}else{let{value:e,numInstances:r,size:i}=this,s=r*i;if(e&&s&&e.length>=s){let n=new Array(i).fill(Infinity),a=new Array(i).fill(-Infinity);for(let c=0;c<s;)for(let l=0;l<i;l++){let u=e[c++];u<n[l]&&(n[l]=u),u>a[l]&&(a[l]=u)}t=[n,a]}}return this.state.bounds=t,t}setData(t){let{state:e}=this,r$63;ArrayBuffer.isView(t)?r$63={value:t}:t instanceof P$2?r$63={buffer:t}:r$63=t;let i=r(r({},this.settings),r$63);if(ArrayBuffer.isView(r$63.value)){if(!r$63.type)if(this.doublePrecision&&r$63.value instanceof Float64Array)i.type=`float32`;else{let n=Nc(r$63.value);i.type=i.normalized?n.replace(`int`,`norm`):n}i.bytesPerElement=r$63.value.BYTES_PER_ELEMENT,i.stride=at(i)}if(e.bounds=null,r$63.constant){let s=r$63.value;if(s=this._normalizeValue(s,[],0),this.settings.normalized&&(s=this.normalizeConstant(s)),!(!e.constant||!this._areValuesEqual(s,this.value)))return!1;e.externalBuffer=null,e.constant=!0,this.value=ArrayBuffer.isView(s)?s:new Float32Array(s)}else if(r$63.buffer)e.externalBuffer=r$63.buffer,e.constant=!1,this.value=r$63.value||null;else if(r$63.value){this._checkExternalBuffer(r$63);let s=r$63.value,n=s;e.externalBuffer=null,e.constant=!1,this.value=s,this._shouldSplitDoublePrecisionValue(n)&&(n=Ce(n,i),s instanceof Float32Array&&(i.stride=i.size*2*Float32Array.BYTES_PER_ELEMENT));let{buffer:a}=this,c=at(i),l=(i.vertexOffset||0)*c;if(this.settings.isIndexed){let f=this.settings.defaultType;n.constructor!==f&&(n=new f(n))}let u=n.byteLength+l+c*2;(!a||a.byteLength<u)&&(a=this._createBuffer(u)),a.write(n,l)}return this.setAccessor(i),!0}updateSubBuffer(t={}){this.state.bounds=null;let e=this.value,{startOffset:r=0,endOffset:i}=t,s=this._shouldSplitDoublePrecisionValue(e);this.buffer.write(s?Ce(e,{size:this.size,startIndex:r,endIndex:i}):e.subarray(r,i),r*(s?8:e.BYTES_PER_ELEMENT)+this.byteOffset)}allocate(t,e=!1){let{state:r$64}=this,i=r$64.allocatedValue,s$29=dt.allocate(i,t+1,{size:this.size,type:this.settings.defaultType,copy:e});this.value=s$29;let n=this._shouldSplitDoublePrecisionValue(s$29),a=n&&s$29 instanceof Float32Array?s(r({},this.settings),{stride:this.size*2*Float32Array.BYTES_PER_ELEMENT}):this.settings;this.setAccessor(a);let{byteOffset:c}=this,{buffer:l}=this,u=s$29.byteLength*(n&&s$29 instanceof Float32Array?2:1);return(!l||l.byteLength<u+c)&&(l=this._createBuffer(u+c),e&&i&&l.write(this._shouldSplitDoublePrecisionValue(i)?Ce(i,this):i,c)),r$64.allocatedValue=s$29,r$64.constant=!1,r$64.externalBuffer=null,!0}_shouldSplitDoublePrecisionValue(t){return!!(this.doublePrecision&&(t instanceof Float64Array||this.device.type===`webgpu`&&t instanceof Float32Array))}_checkExternalBuffer(t){let{value:e}=t;if(!ArrayBuffer.isView(e))throw new Error(`Attribute ${this.id} value is not TypedArray`);let r=this.settings.defaultType,i=!1;if(this.doublePrecision&&(i=e.BYTES_PER_ELEMENT<4),i)throw new Error(`Attribute ${this.id} does not support ${e.constructor.name}`);!(e instanceof r)&&this.settings.normalized&&!(`normalized`in t)&&A.warn(`Attribute ${this.id} is normalized`)()}normalizeConstant(t){switch(this.settings.type){case`snorm8`:return new Float32Array(t).map(e=>(e+128)/255*2-1);case`snorm16`:return new Float32Array(t).map(e=>(e+32768)/65535*2-1);case`unorm8`:return new Float32Array(t).map(e=>e/255);case`unorm16`:return new Float32Array(t).map(e=>e/65535);default:return t}}_normalizeValue(t,e,r){let{defaultValue:i,size:s}=this.settings;if(Number.isFinite(t))return e[r]=t,e;if(!t){let n=s;for(;--n>=0;)e[r+n]=i[n];return e}switch(s){case 4:e[r+3]=Number.isFinite(t[3])?t[3]:i[3];case 3:e[r+2]=Number.isFinite(t[2])?t[2]:i[2];case 2:e[r+1]=Number.isFinite(t[1])?t[1]:i[1];case 1:e[r+0]=Number.isFinite(t[0])?t[0]:i[0];break;default:let n=s;for(;--n>=0;)e[r+n]=Number.isFinite(t[n])?t[n]:i[n]}return e}_areValuesEqual(t,e){if(!t||!e)return!1;let{size:r}=this;for(let i=0;i<r;i++)if(t[i]!==e[i])return!1;return!0}_createBuffer(t){this._buffer&&this._buffer.destroy();let{isIndexed:e,type:r$65}=this.settings,i=this.device.type===`webgpu`&&!e?P$2.VERTEX|P$2.STORAGE|P$2.COPY_DST|P$2.COPY_SRC:(e?P$2.INDEX:P$2.VERTEX)|P$2.COPY_DST;return this._buffer=this.device.createBuffer(s(r({},this._buffer?.props),{id:this.id,usage:i,indexType:e?r$65:void 0,byteLength:t})),this._buffer}};var zc=[];var Mr=[[0,Infinity]];function Fc(o,t){if(o===Mr||(t[0]<0&&(t[0]=0),t[0]>=t[1]))return o;let e=[],r=o.length,i=0;for(let s=0;s<r;s++){let n=o[s];n[1]<t[0]?(e.push(n),i=s+1):n[0]>t[1]?e.push(n):t=[Math.min(n[0],t[0]),Math.max(n[1],t[1])]}return e.splice(i,0,t),e}var bp={interpolation:{duration:0,easing:o=>o},spring:{stiffness:.05,damping:.5}};function zo(o,t){if(!o)return null;Number.isFinite(o)&&(o={type:`interpolation`,duration:o});let e=o.type||`interpolation`;return s(r(r(r({},bp[e]),t),o),{type:e})}var Ue=class extends Vo{constructor(t,e){super(t,e,{startIndices:null,constantValue:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:Mr}),this.constant=!1,this.settings.update=e.update||(e.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 e=this.state.needsRedraw;return this.state.needsRedraw=e&&!t,e}layoutChanged(){return this.state.layoutChanged}setAccessor(t){var e;(e=this.state).layoutChanged||(e.layoutChanged=!Vc(t,this.getAccessor())),super.setAccessor(t)}getUpdateTriggers(){let{accessor:t}=this.settings;return[this.id].concat(typeof t!=`function`&&t||[])}supportsTransition(){return!!this.settings.transition}getTransitionSetting(t){if(!t||!this.supportsTransition())return null;let{accessor:e}=this.settings,r=this.settings.transition;return zo(Array.isArray(e)?t[e.find(s=>t[s])]:t[e],r)}setNeedsUpdate(t=this.id,e){if(this.state.needsUpdate=this.state.needsUpdate||t,this.setNeedsRedraw(t),e){let{startRow:r=0,endRow:i=Infinity}=e;this.state.updateRanges=Fc(this.state.updateRanges,[r,i])}else this.state.updateRanges=Mr}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=zc}setNeedsRedraw(t=this.id){this.state.needsRedraw=this.state.needsRedraw||t}allocate(t){let{state:e,settings:r}=this;if(r.noAlloc)return!1;if(r.update){let i=this.isConstant;return super.allocate(t,e.updateRanges!==Mr),e.layoutChanged||(e.layoutChanged=i&&this.device.type===`webgpu`),!0}return!1}updateBuffer({numInstances:t,data:e,props:r,context:i}){if(!this.needsUpdate())return!1;let{state:{updateRanges:s},settings:{update:n,noAlloc:a}}=this,c=!0;if(n){for(let[l,u]of s)n.call(i,this,{data:e,startRow:l,endRow:u,props:r,numInstances:t});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLength<this.value.byteLength+this.byteOffset){if(this.constant){let l=this.value;this.value=null,this.setConstantValue(i,l)}else this.setData({value:this.value,constant:this.constant});this.constant=!1}else for(let[l,u]of s){let f=Number.isFinite(l)?this.getVertexOffset(l):0,d=Number.isFinite(u)?this.getVertexOffset(u):a||!Number.isFinite(t)?this.value.length:t*this.size;super.updateSubBuffer({startOffset:f,endOffset:d})}this._checkAttributeArray()}else c=!1;return this.clearNeedsUpdate(),this.setNeedsRedraw(),c}setConstantValue(t,e){var r$66;if(e===void 0||typeof e==`function`)return!1;let i=this.isConstant,s$30=this.settings.transform&&t?this.settings.transform.call(t,e):e,n=this.settings.defaultType;this.state.constantValue=this._normalizeValue(s$30,new n(this.size),0);let a=this.setData({constant:!0,value:s$30});if(this.device.type===`webgpu`){let c=this.state.constantValue;this.doublePrecision&&(c instanceof Float32Array||c instanceof Float64Array)&&(c=Ce(c,{size:this.size}),this.setAccessor(s(r({},this.getAccessor()),{stride:this.size*2*Float32Array.BYTES_PER_ELEMENT})));let l=this._buffer;(!l||l.byteLength<c.byteLength)&&(l=this._createBuffer(c.byteLength)),l.write(c),(r$66=this.state).layoutChanged||(r$66.layoutChanged=!i),this.constant=!1}return a&&this.setNeedsRedraw(),this.clearNeedsUpdate(),!0}getConstantValue(){return this.isConstant?this.state.constantValue:null}setExternalBuffer(t){let{state:e}=this;return t?(this.clearNeedsUpdate(),e.lastExternalBuffer===t||(e.lastExternalBuffer=t,this.setNeedsRedraw(),this.setData(t)),!0):(e.lastExternalBuffer=null,!1)}setBinaryValue(t,e=null){let{state:r,settings:i}=this;if(!t)return r.binaryValue=null,r.binaryAccessor=null,!1;if(i.noAlloc)return!1;if(r.binaryValue===t)return this.clearNeedsUpdate(),!0;if(r.binaryValue=t,this.setNeedsRedraw(),i.transform||e!==this.startIndices){ArrayBuffer.isView(t)&&(t={value:t});let n=t;R(ArrayBuffer.isView(n.value),`invalid ${i.accessor}`);let a=!!n.size&&n.size!==this.size;return r.binaryAccessor=No(n.value,{size:n.size||this.size,stride:n.stride,offset:n.offset,startIndices:e,nested:a}),!1}return this.clearNeedsUpdate(),this.setData(t),!0}getVertexOffset(t){let{startIndices:e}=this;return(e?t<e.length?e[t]:this.numInstances:t)*this.size}getValue(){let t=this.settings.shaderAttributes,e=super.getValue();if(!t)return e;for(let r in t)Object.assign(e,super.getValue(r,t[r]));return e}getBufferLayout(t){this.state.layoutChanged=!1;let e=this.settings.shaderAttributes,r=super._getBufferLayout(),{stepMode:i}=this.settings;if(i===`dynamic`?r.stepMode=t?t.isInstanced?`instance`:`vertex`:`instance`:r.stepMode=i??`vertex`,!e)return r;for(let s in e){let n=super._getBufferLayout(s,e[s]);r.attributes.push(...n.attributes)}return r}_autoUpdater(t,{data:e,startRow:r,endRow:i,props:s,numInstances:n}){let{settings:a,state:c,value:l,size:u,startIndices:f}=t,{accessor:d,transform:p}=a,m=c.binaryAccessor||(typeof d==`function`?d:s[d]);R(typeof m==`function`,`accessor "${d}" is not a function`);let g=t.getVertexOffset(r),{iterable:y,objectInfo:b}=Ar(e,r,i);for(let v of y){b.index++;let w=m(v,b);if(p&&(w=p.call(this,w)),f){let x=(b.index<f.length-1?f[b.index+1]:n)-f[b.index];if(w&&Array.isArray(w[0])){let E=g;for(let S of w)t._normalizeValue(S,l,E),E+=u}else w&&w.length>u?l.set(w,g):(t._normalizeValue(w,b.target,0),ys({target:l,source:b.target,start:g,count:x}));g+=x*u}else t._normalizeValue(w,l,g),g+=u}}_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,e=Math.min(4,this.size);if(t&&t.length>=e){let r=!0;switch(e){case 4:r=r&&Number.isFinite(t[3]);case 3:r=r&&Number.isFinite(t[2]);case 2:r=r&&Number.isFinite(t[1]);case 1:r=r&&Number.isFinite(t[0]);break;default:r=!1}if(!r)throw new Error(`Illegal attribute generated for ${this.id}`)}}};var Cr=class o{gpuDataEvaluators;format;length;id;_gpuVector;_ownsGPUDataEvaluators;_destroyed=!1;static fromGPUVector(t){if(t.bufferLayout)throw new Error(`GPUVectorEvaluator.fromGPUVector() does not accept interleaved vector "${t.name}"`);if(t.data.length===0)throw new Error(`GPUVectorEvaluator.fromGPUVector() requires GPUData for "${t.name}"`);return new o({id:t.name,gpuDataEvaluators:t.data.map(e=>pe$3.fromGPUData(e,{id:t.name})),gpuVector:t,format:t.format})}static fromGPUDataEvaluators(t,e={}){return new o({id:e.id,gpuDataEvaluators:t,format:e.format})}constructor({id:t,gpuDataEvaluators:e,gpuVector:r,format:i}){if(e.length===0)throw new Error(`GPUVectorEvaluator requires at least one GPUData evaluator`);vp(e),this.id=t,this.gpuDataEvaluators=e,this.format=i??e[0].format,this.length=e.reduce((s,n)=>s+n.length,0),this._gpuVector=r,this._ownsGPUDataEvaluators=!r}get evaluated(){return!!this._gpuVector}get gpuVector(){if(!this._gpuVector)throw new Error(`${this} not evaluated`);return this._gpuVector}mapGPUData(t){return o.fromGPUDataEvaluators(this.gpuDataEvaluators.map((e,r)=>t(e,r)),{id:this.id})}async evaluate(t,e={}){if(this._destroyed)throw new Error(`GPUVectorEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;let r=await Promise.all(this.gpuDataEvaluators.map(a=>a.evaluate(t,e))),i=r[0],s=r.map(Wc),n=e.format??this.format??i.format;return this._gpuVector=new Le$3({type:`data`,name:e.name??this.id??`vector`,format:n,data:s,stride:i.stride,byteStride:i.byteStride,rowByteLength:i.rowByteLength,bufferLayout:i.bufferLayout}),this._gpuVector}evaluateSync(t,e={}){if(this._destroyed)throw new Error(`GPUVectorEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;let r=this.gpuDataEvaluators.map(a=>a.evaluateSync(t,e)),i=r[0],s=r.map(Wc),n=e.format??this.format??i.format;return this._gpuVector=new Le$3({type:`data`,name:e.name??this.id??`vector`,format:n,data:s,stride:i.stride,byteStride:i.byteStride,rowByteLength:i.rowByteLength,bufferLayout:i.bufferLayout}),this._gpuVector}destroy(){if(this._ownsGPUDataEvaluators)for(let t of this.gpuDataEvaluators)t.destroy();this._gpuVector=void 0,this._destroyed=!0}toString(){return this.id??this.constructor.name}};function vp(o){let t=o[0];for(let e of o.slice(1))if(e.type!==t.type||e.size!==t.size||e.normalized!==t.normalized||e.format!==t.format)throw new Error(`GPUVectorEvaluator requires matching GPUData evaluator layouts`)}function Wc(o){let[t,...e]=o.data;if(!t||e.length>0)throw new Error(`GPUVectorEvaluator requires one GPUData chunk for "${o.name}"`);return t}var Ns={};w$1(Ns,{arithmetic:()=>Gc,dot:()=>Xc,equalAll:()=>Kc,extent:()=>$c,fround:()=>Hc,gather:()=>qc,interleave:()=>Zc,length:()=>Jc,segmentedMap:()=>Qc,select:()=>tl,sequence:()=>el,swizzle:()=>rl});function je({elementWise:o,func:t,inputs:e,output:r,outputBuffer:i}){let s=Array.isArray(e)?e:Object.values(e);for(let m of s)if(!m.value)throw new Error(`${m} does not have CPU value`);let n=r.length,a=r.size,c=new r.ValueType(n*a);for(let m=0;m<n;m++){let g=s.map(y=>N(y,m));if(o)for(let y=0;y<a;y++)c[m*a+y]=t.apply(null,g.map(b=>b[y]));else t.call(null,c.subarray(m*a,m*a+a),...g)}let l=r.ValueType.BYTES_PER_ELEMENT,u=r.offset/l,f=r.stride/l,d=a,p=c;if(u!==0||f!==d){p=new r.ValueType(u+r.byteLength/l);for(let m=0;m<n;m++){let g=m*d,y=u+m*f,b=c.subarray(g,g+a);p.set(b,y),i.write(b,y*l)}}else i.write(c);return{success:!0,value:p}}function N(o,t){let e=o.value,r=o.size,i=o.offset/o.ValueType.BYTES_PER_ELEMENT,s=o.stride/o.ValueType.BYTES_PER_ELEMENT,a=i+(o.isConstant?0:t)*s,c=e.slice(a,a+r);if(!o.normalized)return c;let l=new Float32Array(r);for(let u=0;u<r;u++)l[u]=xp(c[u],o.type);return l}function xp(o,t){switch(t){case`uint8`:return o/255;case`uint16`:return o/65535;case`uint32`:return o/4294967295;case`sint8`:return Math.max(o/127,-1);case`sint16`:return Math.max(o/32767,-1);case`sint32`:return Math.max(o/2147483647,-1);case`float32`:return o;default:throw new Error(`Unsupported normalized source type ${t}`)}}var Gc=({inputs:o,output:t,target:e})=>{for(let i of Object.values(o.namedInputs))if(!i.value)throw new Error(`${i} does not have CPU value`);let r=new t.ValueType(t.length*t.size);for(let i=0;i<t.length;i++){let s=Object.fromEntries(Object.entries(o.namedInputs).map(([n,a])=>[n,N(a,i)]));for(let n=0;n<t.size;n++)r[i*t.size+n]=Yc(o.expression,s,n)}return e.write(r),{success:!0,value:r}};function Yc(o,t,e){switch(o.kind){case`input`:{let r=t[o.name];return e<r.length?r[e]:r.length===1?r[0]:0}case`literal`:return Array.isArray(o.value)?o.value[e]??0:o.value;case`call`:{Pp(o.op,o.args.length);let r=o.args.map(i=>Yc(i,t,e));switch(o.op){case`add`:return r[0]+r[1];case`subtract`:return r[0]-r[1];case`multiply`:return r[0]*r[1];case`divide`:return r[0]/r[1];case`pow`:return Math.pow(r[0],r[1]);case`sqrt`:return Math.sqrt(r[0]);case`abs`:return Math.abs(r[0]);case`sin`:return Math.sin(r[0]);case`cos`:return Math.cos(r[0]);case`tan`:return Math.tan(r[0]);case`exp`:return Math.exp(r[0]);case`log`:return Math.log(r[0]);default:{let i=o.op;throw new Error(`Unsupported arithmetic op ${i}`)}}}default:throw new Error(`Unsupported expression node ${o.kind}`)}}function Pp(o,t){let e=Vv[o].arity;if(t!==e)throw new Error(`Arithmetic op '${o}' expects ${e} args, got ${t}`)}var $c=({inputs:o,output:t,target:e})=>{let{sourceValues:r}=o;if(!r.value)throw new Error(`${r} does not have CPU value`);let s=new t.ValueType(t.length*t.size);if(r.length===0)return{success:!1,error:new Error(`${r} is empty`)};for(let n=0;n<r.size;n++){let a=N(r,0)[n],c=n*t.size,l=c+1;s[c]=a,s[l]=a;for(let u=1;u<r.length;u++){let f=N(r,u)[n];f<s[c]&&(s[c]=f),f>s[l]&&(s[l]=f)}}return e.write(s),{success:!0,value:s}};var Hc=({inputs:o,output:t,target:e})=>je({func:(r,i)=>{let s=r.length/2,n=new Float64Array(i.buffer);for(let a=0;a<s;a++){let c=n[a];r[a]=Math.fround(c),r[a+s]=c-r[a]}return r},inputs:o,output:t,outputBuffer:e});var qc=async({inputs:o,output:t,target:e})=>{let{ids:r,sourceValues:i}=o,s=r.value,n=i.value;if(!s)throw new Error(`${r} does not have CPU value`);if(!n)throw new Error(`${i} does not have CPU value`);let a=new t.ValueType(t.length*t.size),c=new Array(t.size).fill(0);for(let l=0;l<t.length;l++){let u=N(r,l),f=Number(u[0]),d=Ep(f,i.length)?N(i,f):c;a.set(d,l*t.size)}return e.write(a),{success:!0,value:a}};function Ep(o,t){return Number.isInteger(o)&&o>=0&&o<t}var Zc=({inputs:o,output:t,target:e})=>je({func:(r,...i)=>{let s=0;for(let n of i)r.set(n,s),s+=n.length},inputs:o,output:t,outputBuffer:e});var Xc=({inputs:o,output:t,target:e})=>{let{x:r,y:i}=o,s=new t.ValueType(t.length);for(let n=0;n<t.length;n++){let a=N(r,n),c=N(i,n),l=0;for(let u=0;u<r.size;u++)l+=a[u]*c[u];s[n]=l}return e.write(s),{success:!0,value:s}};var Kc=({inputs:o,output:t,target:e})=>{let{x:r,y:i}=o,s=new t.ValueType(t.length);for(let n=0;n<t.length;n++){let a=N(r,n),c=N(i,n),l=1;for(let u=0;u<r.size;u++)if(a[u]!==c[u]){l=0;break}s[n]=l}return e.write(s),{success:!0,value:s}};var Jc=({inputs:o,output:t,target:e})=>{let{x:r}=o,i=new t.ValueType(t.length);for(let s=0;s<t.length;s++){let n=N(r,s),a=0;for(let c=0;c<r.size;c++)a+=n[c]*n[c];i[s]=Math.sqrt(a)}return e.write(i),{success:!0,value:i}};var Qc=async({inputs:o,output:t,target:e})=>{let{segments:r,vertexCount:i}=o,s=r.value;if(!s)throw new Error(`${r} does not have CPU value`);Tp(s,r,i);let n=new t.ValueType(t.length*t.size),a=0;for(let c=0;c<i;c++){for(;a+1<r.length&&s[Us(r,a+1)]<=c;)a++;let l=s[Us(r,a)],u=c*t.size;n[u]=a,n[u+1]=c-l}return e.write(n),{success:!0,value:n}};function Tp(o,t,e){if(t.length<1)throw new Error(`segmentedMap segments must contain at least one segment start`);let r=0;for(let i=0;i<t.length;i++){let s=o[Us(t,i)];if(i===0&&s!==0)throw new Error(`segmentedMap segments must start at 0, got ${s}`);if(i>0&&s<r)throw new Error(`segmentedMap segments must be non-decreasing, got ${s} after ${r}`);r=s}if(r>e)throw new Error(`segmentedMap last segment start must be <= vertexCount, got ${r} > ${e}`)}function Us(o,t){return o.offset/o.ValueType.BYTES_PER_ELEMENT+t*(o.stride/o.ValueType.BYTES_PER_ELEMENT)}var tl=async({inputs:o,output:t,target:e})=>{let{condition:r,whenTrue:i,whenFalse:s}=o,n=new t.ValueType(t.length*t.size);for(let a=0;a<t.length;a++){let c=N(r,a),l=N(i,a),u=N(s,a);for(let f=0;f<t.size;f++){let d=js(c,r.size,f);n[a*t.size+f]=d!==0?js(l,i.size,f):js(u,s.size,f)}}return e.write(n),{success:!0,value:n}};function js(o,t,e){return e<t?o[e]:t===1?o[0]:0}var el=({inputs:o,output:t,target:e})=>{let r=new t.ValueType(t.length);for(let i=0;i<t.length;i++)r[i]=o.start+i*o.step;return e.write(r),{success:!0,value:r}};var rl=({inputs:o,output:t,target:e})=>{let{columns:r}=o;return je({func:(i,s)=>{for(let n=0;n<r.length;n++)i[n]=s[r[n]]},inputs:{x:o.x},output:t,outputBuffer:e})};var Vs=class{_modules={cpu:Ns};add(t,e){let r$67=this._modules[t];if(typeof e.then==`function`){let s=Promise.all([Promise.resolve(r$67||{}),e]).then(([n,a])=>r(r({},n),a));return this._modules[t]=s,s.then(n=>{this._modules[t]=n}).catch(n=>{f$1.error(`Failed to register ${t} backend: ${n}`)()}),s}if(r$67&&typeof r$67.then==`function`){let s=Promise.resolve(r$67).then(n=>r(r({},n),e)).then(n=>(this._modules[t]=n,n)).catch(n=>{throw f$1.error(`Failed to register ${t} backend: ${n}`)(),n});return this._modules[t]=s,s}let i=r(r({},r$67||{}),e);return this._modules[t]=i,Promise.resolve(i)}async get(t,e){let r=this._modules[t];if(!r)if(t===`webgl`)r=this.add(`webgl`,import(`./chunk-qJiyNNGo.js`));else if(t===`webgpu`)r=this.add(`webgpu`,import(`./chunk-DHX-WiFW.js`));else throw new Error(`${t} backend not registered`);let s=(await r)[e];if(typeof s!=`function`)throw new Error(`${t} backend does not implement ${e}`);return s}getSync(t,e){let r=this._modules[t];if(!r)throw new Error(`${t} backend not registered`);if(typeof r.then==`function`)throw new Error(`${t} backend is not loaded yet`);let s=r[e];if(typeof s!=`function`)throw new Error(`${t} backend does not implement ${e}`);return s}clear(){this._modules={}}};var Ne=new Vs;var Fo=class{inputs;dependencies;constructor(t){this.inputs=t,this.dependencies=Array.from(t instanceof Array?t:Object.values(t)).filter(e=>e instanceof pe$3)}async execute(t,e){return await this._resolveDependencies(t),await this._executeWithHandler(await Ne.get(this._getHandlerRegistry(t),this.name),e)}executeSync(t,e){this._resolveDependenciesSync(t);let r=this._executeWithHandler(Ne.getSync(this._getHandlerRegistry(t),this.name),e);if(Ap(r))throw new Error(`${this.name} returned a Promise in executeSync()`);return r}shouldExecuteOnCPU(){return this.output.length<=1&&Array.from(this.dependencies).every(t=>!!t.value)}_getHandlerRegistry(t){return this.shouldExecuteOnCPU()?`cpu`:t.type}async _resolveDependencies(t){for(let r of this.dependencies)await r.evaluate(t);if(this._getHandlerRegistry(t)===`cpu`||t.type===`null`)for(let r of this.dependencies)await r.ensureCPUValue()}_resolveDependenciesSync(t){for(let r of this.dependencies)r.evaluateSync(t);if(this._getHandlerRegistry(t)===`cpu`||t.type===`null`)for(let r of this.dependencies)r.ensureCPUValueSync()}_executeWithHandler(t,e){return t({device:e.device,inputs:this.inputs,output:this.output,target:e})}};function Ap(o){return typeof o?.then==`function`}function ol(...o){let t=Sp(o.map(e=>e.type));return t[0]!==`f`&&o.some(e=>e.normalized)&&(t=`float32`),{isConstant:o.every(e=>e.isConstant),type:t,size:o.reduce((e,r)=>Math.max(e,r.size),0),length:o.reduce((e,r)=>Math.max(e,r.length),0)}}function Sp(o){let t=0,e=0;for(let r of o){if(r[0]===`f`)return`float32`;let i=r.endsWith(`8`)?8:r.endsWith(`6`)?16:32;r[0]===`u`?t=Math.max(t,i):e=Math.max(e,i)}return t&&!e?`uint${t}`:e&&t<32?`sint${Math.max(e,t*2)}`:`float32`}var zs=class extends Fo{name=`interleave`;output;constructor(t){super(t);let{isConstant:e,type:r,length:i}=ol(...t);this.output=new pe$3({isConstant:e,type:r,size:t.reduce((s,n)=>s+n.size,0),length:i,source:this})}toString(){return`_${this.inputs.join(`_`)}_`}};function Fs(...o){if(o.length===0)throw new Error(`interleave() requires at least one input`);return o.length===1?Ov(o[0]):new zs(o.map(Ov)).output}function Gs(o,t){let e=Cp(t);for(let r of e)r.evaluateSync(o);return Mp(e),t}function Mp(o){let t=new Set(o.flatMap(Rp)),e=new Set;for(let r of o)Wo(r,e);for(let r of e)r.evaluated&&!t.has(r.buffer)&&r.destroy()}function Cp(o){let t=new Set;return Ws(o,t,new Set),Array.from(t)}function Ws(o,t,e){if(Lp(o)){t.add(o);return}if(!(!o||typeof o!=`object`||e.has(o))){if(e.add(o),Array.isArray(o)){for(let r of o)Ws(r,t,e);return}if(Ip(o))for(let r of Object.values(o))Ws(r,t,e)}}function Ip(o){let t=Object.getPrototypeOf(o);return t===Object.prototype||t===null}function Wo(o,t){if(o instanceof Cr){for(let r of o.gpuDataEvaluators)Wo(r,t);return}let e=o.source;if(e){if(e instanceof pe$3){t.has(e)||(t.add(e),Wo(e,t));return}for(let r of e.dependencies)t.has(r)||(t.add(r),Wo(r,t))}}function Rp(o){return o instanceof pe$3?[o.buffer]:o.gpuVector.data.map(t=>t.buffer instanceof k$1?t.buffer.buffer:t.buffer)}function Lp(o){return o instanceof pe$3||o instanceof Cr}var Go=class{constructor(t,{id:e,isTransitionAttribute:r}){this.packedBuffers={},this.device=t,this.id=e,this.isTransitionAttribute=r,this.device.type===`webgpu`&&Ne.add(`webgpu`,{interleave:ve$2})}hasGroups(t){return this.device.type===`webgpu`&&Object.values(t).some(e=>!!e.settings.bufferGroup)}finalize(){for(let t of Object.values(this.packedBuffers))t.packed.destroy();this.packedBuffers={}}getBufferLayouts(t,e){let r=this._getPackedGroups(t,e,{requireValues:!1,excludeAttributes:{}});return this._getBufferLayouts(t,r,e)}getBindings(t,e,r,i){let s=this._getPackedGroups(t,r,{requireValues:!0,excludeAttributes:i}),n={},a=new Set;for(let c of s.values()){let l=!this.packedBuffers[c.id]||c.attributes.some(u=>!!e[u.id]);n[c.id]=this._getPackedBuffer(c,l);for(let u of c.attributes)a.add(u.id)}return{bufferLayouts:this._getBufferLayouts(t,s,r).filter(c=>!i[c.name]&&!t[c.name]?.settings.isIndexed),buffers:n,groupedAttributeIds:a}}_getPackedGroups(t,e,{requireValues:r,excludeAttributes:i}){let s=new Map;for(let a of Object.values(t)){let c=a.settings.bufferGroup;if(!c)continue;let l=s.get(c)||[];l.push(a),s.set(c,l)}let n=new Map;for(let[a,c]of s){let l=this._getPackedGroup(a,c,e,r,i);l&&n.set(a,l)}return n}_getPackedGroup(t,e,r$68,i,s$31){if(e.length<2)return null;let n=e.map(p=>p.getBufferLayout(r$68)),a=n[0].stepMode,c=Math.max(1,e[0].numInstances),l=i&&e.every(p=>p.isConstant);for(let p=0;p<e.length;p++){let m=e[p],g=m.getAccessor(),y=g.size*g.bytesPerElement;if(s$31[m.id]||m.settings.isIndexed||m.settings.noAlloc||m.doublePrecision||this.isTransitionAttribute(m.id)||n[p].stepMode!==a||m.numInstances!==e[0].numInstances||(g.offset||0)!==0||(g.vertexOffset||0)!==0||at(g)!==y||i&&(m.isConstant?!m.getConstantValue()||m.getConstantValue().byteLength<y:!ArrayBuffer.isView(m.value)||m.value.byteLength<c*y))return null}let u={},f=[],d=0;for(let p=0;p<e.length;p++){let m=e[p];d=il(d),u[m.id]=d;for(let g of n[p].attributes||[])f.push(s(r({},g),{byteOffset:d+(g.byteOffset||0)}));d+=at(m.getAccessor())}return d=il(d),{id:t,attributes:e,byteStride:d,byteOffsets:u,rowCount:c,layout:{name:t,byteStride:l?0:d,stepMode:a,attributes:f}}}_getBufferLayouts(t,e,r){let i=[],s=new Set,n=new Set;for(let a of e.values())for(let c of a.attributes)n.add(c.id);for(let a of Object.values(t)){let c=a.settings.bufferGroup,l=c&&e.get(c);l&&n.has(a.id)?s.has(l.id)||(i.push(l.layout),s.add(l.id)):i.push(a.getBufferLayout(r))}return i}_getPackedBuffer(t,e){let r=JSON.stringify({byteStride:t.layout.byteStride,attributes:t.layout.attributes}),i=this.packedBuffers[t.id];if((!i||i.layoutKey!==r)&&(e=!0),e){i&&(i.packed.destroy(),delete this.packedBuffers[t.id]);let s=this._interleavePackedGroup(t);return this.packedBuffers[t.id]={packed:s,layoutKey:r},s.buffer}if(!i)throw new Error(`Attribute buffer group ${t.id} has no packed buffer`);return i.packed.buffer}_interleavePackedGroup(t){let r=Fs(...t.attributes.map(i=>this._getInterleaveInput(t,i)));return Gs(this.device,r),r}_getInterleaveInput(t,e){let r=at(e.getAccessor()),i=t.byteOffsets[e.id];if(Ir(`${t.id}.${e.id} rowByteLength`,r),Ir(`${t.id}.${e.id} groupByteOffset`,i),e.isConstant){let c=e.getConstantValue();if(!c)throw new Error(`Attribute group ${t.id} is missing constant value ${e.id}`);return Ir(`${t.id}.${e.id} constant byteOffset`,c.byteOffset),new pe$3({id:e.id,type:`uint32`,size:r/4,isConstant:!0,value:new Uint32Array(c.buffer,c.byteOffset,r/Uint32Array.BYTES_PER_ELEMENT)})}let s=e.getBuffer(),n=e.byteOffset,a=e.getAccessor().stride||r;if(Ir(`${t.id}.${e.id} byteOffset`,n),Ir(`${t.id}.${e.id} stride`,a),!s)throw new Error(`Attribute group ${t.id} cannot interleave missing buffer ${e.id}`);return new pe$3({id:e.id,type:`uint32`,size:r/4,offset:n,stride:a,length:t.rowCount,buffer:s})}};function il(o){return Math.ceil(o/4)*4}function Ir(o,t){if(t%4!==0)throw new Error(`Attribute buffer groups require 32-bit alignment: ${o}=${t}`)}function Ys(o){let{source:t,target:e,start:r=0,size:i,getData:s}=o,n=o.end||e.length,a=t.length,c=n-r;if(a>c){e.set(t.subarray(0,c),r);return}if(e.set(t,r),!s)return;let l=a;for(;l<c;){let u=s(l,t);for(let f=0;f<i;f++)e[r+l]=u[f]||0,l++}}function sl({source:o,target:t,size:e,getData:r,sourceStartIndices:i,targetStartIndices:s}){if(!i||!s)return Ys({source:o,target:t,size:e,getData:r}),t;let n=0,a=0,c=r&&((u,f)=>r(u+a,f)),l=Math.min(i.length,s.length);for(let u=1;u<l;u++){let f=i[u]*e,d=s[u]*e;Ys({source:o.subarray(n,f),target:t,start:a,end:d,size:e,getData:c}),n=f,a=d}return a<t.length&&Ys({source:[],target:t,start:a,size:e,getData:c}),t}function nl(o){let{device:t,settings:e,value:r}=o,i=new Ue(t,e);return i.setData({value:r instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:e.normalized}),i}function Yo(o){switch(o){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 "${o}"`)}}function $o(o){switch(o){case 1:return`float32`;case 2:return`float32x2`;case 3:return`float32x3`;case 4:return`float32x4`;default:throw new Error(`invalid type size`)}}function Ho(o){o.push(o.shift())}function al(o,t){let{settings:e,value:r,size:i}=o,s=o.isDoublePrecisionBuffer?2:1,n=0,{shaderAttributes:a}=o.settings;if(a)for(let c of Object.values(a))n=Math.max(n,c.vertexOffset??0);return(e.noAlloc?r.length:(t+n)*i)*s}function qo({device:o,source:t,target:e}){return(!e||e.byteLength<t.byteLength)&&(e?.destroy(),e=o.createBuffer({byteLength:t.byteLength,usage:t.usage})),e}function Zo({device:o,buffer:t,attribute:e,fromLength:r,toLength:i,fromStartIndices:s,getData:n=a=>a}){let a=e.isDoublePrecisionBuffer?2:1,c=e.size*a,l=e.byteOffset,u=e.settings.bytesPerElement<4?l/e.settings.bytesPerElement*4:l,f=e.startIndices,d=s&&f,p=e.isConstant;if(!d&&t&&r>=i)return t;let m=e.value instanceof Float64Array?Float32Array:e.value.constructor,g=p?e.value:new m(e.getBuffer().readSyncWebGL(l,i*m.BYTES_PER_ELEMENT).buffer);if(e.settings.normalized&&!p){let w=n;n=(x,E)=>e.normalizeConstant(w(x,E))}let y=p?(w,x)=>n(g,x):(w,x)=>n(g.subarray(w+l,w+l+c),x),b=t?new Float32Array(t.readSyncWebGL(u,r*4).buffer):new Float32Array(0),v=new Float32Array(i);return sl({source:b,target:v,sourceStartIndices:s,targetStartIndices:f,size:c,getData:y}),(!t||t.byteLength<v.byteLength+u)&&(t?.destroy(),t=o.createBuffer({byteLength:v.byteLength+u,usage:35050})),t.write(v,u),t}var Ve=class{constructor({device:t,attribute:e,timeline:r}){this.buffers=[],this.currentLength=0,this.device=t,this.transition=new Pt(r),this.attribute=e,this.attributeInTransition=nl(e),this.currentStartIndices=e.startIndices}get inProgress(){return this.transition.inProgress}start(t,e,r$69=Infinity){this.settings=t,this.currentStartIndices=this.attribute.startIndices,this.currentLength=al(this.attribute,e),this.transition.start(s(r({},t),{duration:r$69}))}update(){let t=this.transition.update();return t&&this.onUpdate(),t}setBuffer(t){let{stride:e}=this.attributeInTransition.getAccessor();this.attributeInTransition.setData({buffer:t,normalized:this.attribute.settings.normalized,value:this.attributeInTransition.value,stride:e})}cancel(){this.transition.cancel()}delete(){this.cancel();for(let t of this.buffers)t.destroy();this.buffers.length=0}};var Xo=class extends Ve{constructor({device:t,attribute:e,timeline:r}){super({device:t,attribute:e,timeline:r}),this.type=`interpolation`,this.transform=Bp(t,e)}start(t,e){let r=this.currentLength,i=this.currentStartIndices;if(super.start(t,e,t.duration),t.duration<=0){this.transition.cancel();return}let{buffers:s,attribute:n}=this;Ho(s),s[0]=Zo({device:this.device,buffer:s[0],attribute:n,fromLength:r,toLength:this.currentLength,fromStartIndices:i,getData:t.enter}),s[1]=qo({device:this.device,source:s[0],target:s[1]}),this.setBuffer(s[1]);let{transform:a}=this,c=a.model,l=Math.floor(this.currentLength/n.size);ll(n)&&(l/=2),c.setVertexCount(l),n.isConstant?(c.setAttributes({aFrom:s[0]}),c.setConstantAttributes({aTo:n.value})):c.setAttributes({aFrom:s[0],aTo:n.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:s[1]})}onUpdate(){let{duration:t,easing:e}=this.settings,{time:r}=this.transition,i=r/t;e&&(i=e(i));let{model:s}=this.transform,n={time:i};s.shaderInputs.setProps({interpolation:n}),this.transform.run({discard:!0})}delete(){super.delete(),this.transform.destroy()}};var cl={name:`interpolation`,vs:`layout(std140) uniform interpolationUniforms {
1238
+ float time;
1239
+ } interpolation;
1240
+ `,uniformTypes:{time:`f32`}};var Op=`#version 300 es
1241
+ #define SHADER_NAME interpolation-transition-vertex-shader
1242
+
1243
+ in ATTRIBUTE_TYPE aFrom;
1244
+ in ATTRIBUTE_TYPE aTo;
1245
+ out ATTRIBUTE_TYPE vCurrent;
1246
+
1247
+ void main(void) {
1248
+ vCurrent = mix(aFrom, aTo, interpolation.time);
1249
+ gl_Position = vec4(0.0);
1250
+ }
1251
+ `;var Dp=`#version 300 es
1252
+ #define SHADER_NAME interpolation-transition-vertex-shader
1253
+
1254
+ in ATTRIBUTE_TYPE aFrom;
1255
+ in ATTRIBUTE_TYPE aFrom64Low;
1256
+ in ATTRIBUTE_TYPE aTo;
1257
+ in ATTRIBUTE_TYPE aTo64Low;
1258
+ out ATTRIBUTE_TYPE vCurrent;
1259
+ out ATTRIBUTE_TYPE vCurrent64Low;
1260
+
1261
+ vec2 mix_fp64(vec2 a, vec2 b, float x) {
1262
+ vec2 range = sub_fp64(b, a);
1263
+ return sum_fp64(a, mul_fp64(range, vec2(x, 0.0)));
1264
+ }
1265
+
1266
+ void main(void) {
1267
+ for (int i=0; i<ATTRIBUTE_SIZE; i++) {
1268
+ vec2 value = mix_fp64(vec2(aFrom[i], aFrom64Low[i]), vec2(aTo[i], aTo64Low[i]), interpolation.time);
1269
+ vCurrent[i] = value.x;
1270
+ vCurrent64Low[i] = value.y;
1271
+ }
1272
+ gl_Position = vec4(0.0);
1273
+ }
1274
+ `;function ll(o){return o.isDoublePrecisionBuffer}function Bp(o,t){let e=t.size,r=Yo(e),i=$o(e),s=t.getBufferLayout();return ll(t)?new Hr$2(o,{vs:Dp,bufferLayout:[{name:`aFrom`,byteStride:8*e,attributes:[{attribute:`aFrom`,format:i,byteOffset:0},{attribute:`aFrom64Low`,format:i,byteOffset:4*e}]},{name:`aTo`,byteStride:8*e,attributes:[{attribute:`aTo`,format:i,byteOffset:0},{attribute:`aTo64Low`,format:i,byteOffset:4*e}]}],modules:[Gp$1,cl],defines:{ATTRIBUTE_TYPE:r,ATTRIBUTE_SIZE:e},moduleSettings:{},varyings:[`vCurrent`,`vCurrent64Low`],bufferMode:35980,disableWarnings:!0}):new Hr$2(o,{vs:Op,bufferLayout:[{name:`aFrom`,format:i},{name:`aTo`,format:s.attributes[0].format}],modules:[cl],defines:{ATTRIBUTE_TYPE:r},varyings:[`vCurrent`],disableWarnings:!0})}var Ko=class extends Ve{constructor({device:t,attribute:e,timeline:r}){super({device:t,attribute:e,timeline:r}),this.type=`spring`,this.texture=Fp(t),this.framebuffer=Wp(t,this.texture),this.transform=zp(t,e)}start(t,e){let r=this.currentLength,i=this.currentStartIndices;super.start(t,e);let{buffers:s,attribute:n}=this;for(let c=0;c<2;c++)s[c]=Zo({device:this.device,buffer:s[c],attribute:n,fromLength:r,toLength:this.currentLength,fromStartIndices:i,getData:t.enter});s[2]=qo({device:this.device,source:s[0],target:s[2]}),this.setBuffer(s[1]);let{model:a}=this.transform;a.setVertexCount(Math.floor(this.currentLength/n.size)),n.isConstant?a.setConstantAttributes({aTo:n.value}):a.setAttributes({aTo:n.getBuffer()})}onUpdate(){let{buffers:t,transform:e,framebuffer:r,transition:i}=this,s=this.settings;e.model.setAttributes({aPrev:t[0],aCur:t[1]}),e.transformFeedback.setBuffers({vNext:t[2]});let n={stiffness:s.stiffness,damping:s.damping};e.model.shaderInputs.setProps({spring:n}),e.run({framebuffer:r,discard:!1,parameters:{viewport:[0,0,1,1]},clearColor:[0,0,0,0]}),Ho(t),this.setBuffer(t[1]),this.device.readPixelsToArrayWebGL(r)[0]>0||i.end()}delete(){super.delete(),this.transform.destroy(),this.texture.destroy(),this.framebuffer.destroy()}};var jp={name:`spring`,vs:`layout(std140) uniform springUniforms {
1275
+ float damping;
1276
+ float stiffness;
1277
+ } spring;
1278
+ `,uniformTypes:{damping:`f32`,stiffness:`f32`}};var Np=`#version 300 es
1279
+ #define SHADER_NAME spring-transition-vertex-shader
1280
+
1281
+ #define EPSILON 0.00001
1282
+
1283
+ in ATTRIBUTE_TYPE aPrev;
1284
+ in ATTRIBUTE_TYPE aCur;
1285
+ in ATTRIBUTE_TYPE aTo;
1286
+ out ATTRIBUTE_TYPE vNext;
1287
+ out float vIsTransitioningFlag;
1288
+
1289
+ ATTRIBUTE_TYPE getNextValue(ATTRIBUTE_TYPE cur, ATTRIBUTE_TYPE prev, ATTRIBUTE_TYPE dest) {
1290
+ ATTRIBUTE_TYPE velocity = cur - prev;
1291
+ ATTRIBUTE_TYPE delta = dest - cur;
1292
+ ATTRIBUTE_TYPE force = delta * spring.stiffness;
1293
+ ATTRIBUTE_TYPE resistance = velocity * spring.damping;
1294
+ return force - resistance + velocity + cur;
1295
+ }
1296
+
1297
+ void main(void) {
1298
+ bool isTransitioning = length(aCur - aPrev) > EPSILON || length(aTo - aCur) > EPSILON;
1299
+ vIsTransitioningFlag = isTransitioning ? 1.0 : 0.0;
1300
+
1301
+ vNext = getNextValue(aCur, aPrev, aTo);
1302
+ gl_Position = vec4(0, 0, 0, 1);
1303
+ gl_PointSize = 100.0;
1304
+ }
1305
+ `;var Vp=`#version 300 es
1306
+ #define SHADER_NAME spring-transition-is-transitioning-fragment-shader
1307
+
1308
+ in float vIsTransitioningFlag;
1309
+
1310
+ out vec4 fragColor;
1311
+
1312
+ void main(void) {
1313
+ if (vIsTransitioningFlag == 0.0) {
1314
+ discard;
1315
+ }
1316
+ fragColor = vec4(1.0);
1317
+ }`;function zp(o,t){let e=Yo(t.size),r=$o(t.size);return new Hr$2(o,{vs:Np,fs:Vp,bufferLayout:[{name:`aPrev`,format:r},{name:`aCur`,format:r},{name:`aTo`,format:t.getBufferLayout().attributes[0].format}],varyings:[`vNext`],modules:[jp],defines:{ATTRIBUTE_TYPE:e},parameters:{depthCompare:`always`,blendColorOperation:`max`,blendColorSrcFactor:`one`,blendColorDstFactor:`one`,blendAlphaOperation:`max`,blendAlphaSrcFactor:`one`,blendAlphaDstFactor:`one`}})}function Fp(o){return o.createTexture({data:new Uint8Array(4),format:`rgba8unorm`,width:1,height:1})}function Wp(o,t){return o.createFramebuffer({id:`spring-transition-is-transitioning-framebuffer`,width:1,height:1,colorAttachments:[t]})}var Gp={interpolation:Xo,spring:Ko};var Jo=class{constructor(t,{id:e,timeline:r}){if(!t)throw new Error(`AttributeTransitionManager is constructed without device`);this.id=e,this.device=t,this.timeline=r,this.transitions={},this.needsRedraw=!1,this.numInstances=1}finalize(){for(let t in this.transitions)this._removeTransition(t)}update({attributes:t,transitions:e,numInstances:r}){this.numInstances=r||1;for(let i in t){let s=t[i],n=s.getTransitionSetting(e);n&&this._updateAttribute(i,s,n)}for(let i in this.transitions){let s=t[i];(!s||!s.getTransitionSetting(e))&&this._removeTransition(i)}}hasAttribute(t){let e=this.transitions[t];return e&&e.inProgress}getAttributes(){let t={};for(let e in this.transitions){let r=this.transitions[e];r.inProgress&&(t[e]=r.attributeInTransition)}return t}run(){if(this.numInstances===0)return!1;for(let e in this.transitions)this.transitions[e].update()&&(this.needsRedraw=!0);let t=this.needsRedraw;return this.needsRedraw=!1,t}_removeTransition(t){this.transitions[t].delete(),delete this.transitions[t]}_updateAttribute(t,e,r){let i=this.transitions[t],s=!i||i.type!==r.type;if(s){i&&this._removeTransition(t);let n=Gp[r.type];n?this.transitions[t]=new n({attribute:e,timeline:this.timeline,device:this.device}):(A.error(`unsupported transition type '${r.type}'`)(),s=!1)}(s||e.needsRedraw())&&(this.needsRedraw=!0,this.transitions[t].start(r,this.numInstances))}};var ul=`attributeManager.invalidate`;var Yp=`attributeManager.updateStart`;var $p=`attributeManager.updateEnd`;var Hp=`attribute.updateStart`;var qp=`attribute.allocate`;var Zp=`attribute.updateEnd`;var Qo=class{constructor(t,{id:e=`attribute-manager`,stats:r,timeline:i}={}){this.mergeBoundsMemoized=vt(ic),this.id=e,this.device=t,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=r,this.attributeTransitionManager=new Jo(t,{id:`${e}-transitions`,timeline:i}),this.attributeBufferGroups=t.type===`webgpu`?new Go(t,{id:e,isTransitionAttribute:s=>this.attributeTransitionManager.hasAttribute(s)}):null,Object.seal(this)}finalize(){this.attributeBufferGroups?.finalize();for(let t in this.attributes)this.attributes[t].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(t={clearRedrawFlags:!1}){let e=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!t.clearRedrawFlags,e&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(t){this._add(t)}addInstanced(t){this._add(t,{stepMode:`instance`})}remove(t){for(let e of t)this.attributes[e]!==void 0&&(this.attributes[e].delete(),delete this.attributes[e])}invalidate(t,e){let r=this._invalidateTrigger(t,e);j(ul,this,t,r)}invalidateAll(t){for(let e in this.attributes)this.attributes[e].setNeedsUpdate(e,t);j(ul,this,`all`)}update({data:t,numInstances:e,startIndices:r=null,transitions:i,props:s={},buffers:n={},context:a={}}){let c=!1;j(Yp,this),this.stats&&this.stats.get(`Update Attributes`).timeStart();for(let l in this.attributes){let u=this.attributes[l],f=u.settings.accessor;u.startIndices=r,u.numInstances=e,s[l]&&A.removed(`props.${l}`,`data.attributes.${l}`)(),u.setExternalBuffer(n[l])||u.setBinaryValue(typeof f==`string`?n[f]:void 0,t.startIndices)||typeof f==`string`&&!n[f]&&u.setConstantValue(a,s[f])||u.needsUpdate()&&(c=!0,this._updateAttribute({attribute:u,numInstances:e,data:t,props:s,context:a})),this.needsRedraw=this.needsRedraw||u.needsRedraw()}c&&j($p,this,e),this.stats&&(this.stats.get(`Update Attributes`).timeEnd(),c&&this.stats.get(`Attributes updated`).incrementCount()),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:e,transitions:i})}updateTransition(){let{attributeTransitionManager:t}=this,e=t.run();return this.needsRedraw=this.needsRedraw||e,e}getAttributes(){return r(r({},this.attributes),this.attributeTransitionManager.getAttributes())}getBounds(t){let e=t.map(r=>this.attributes[r]?.getBounds());return this.mergeBoundsMemoized(e)}getChangedAttributes(t={clearChangedFlags:!1}){let{attributes:e,attributeTransitionManager:r$70}=this,i=r({},r$70.getAttributes());for(let s in e){let n=e[s];n.needsRedraw(t)&&!r$70.hasAttribute(s)&&(i[s]=n)}return i}getBufferLayouts(t){return this.hasBufferGroups()?this.attributeBufferGroups.getBufferLayouts(this.getAttributes(),t):Object.values(this.getAttributes()).map(e=>e.getBufferLayout(t))}hasBufferGroups(){return!!this.attributeBufferGroups?.hasGroups(this.attributes)}getBufferGroupBindings(t,e,r={}){return this.attributeBufferGroups?this.attributeBufferGroups.getBindings(this.getAttributes(),t,e,r):{bufferLayouts:this.getBufferLayouts(e),buffers:{},groupedAttributeIds:new Set}}_add(t,e){for(let r$71 in t){let i=t[r$71],s$32=r(s(r({},i),{id:r$71,size:i.isIndexed&&1||i.size||1}),e);this.attributes[r$71]=new Ue(this.device,s$32)}this._mapUpdateTriggersToAttributes()}_mapUpdateTriggersToAttributes(){let t={};for(let e in this.attributes)this.attributes[e].getUpdateTriggers().forEach(i=>{t[i]||(t[i]=[]),t[i].push(e)});this.updateTriggers=t}_invalidateTrigger(t,e){let{attributes:r,updateTriggers:i}=this,s=i[t];return s&&s.forEach(n=>{let a=r[n];a&&a.setNeedsUpdate(a.id,e)}),s}_updateAttribute(t){let{attribute:e,numInstances:r}=t;if(j(Hp,e),e.constant){e.setConstantValue(t.context,e.value);return}e.allocate(r)&&j(qp,e,r),e.updateBuffer(t)&&(this.needsRedraw=!0,j(Zp,e,r))}};var ti=class extends Pt{get value(){return this._value}_onUpdate(){let{time:t,settings:{fromValue:e,toValue:r,duration:i,easing:s}}=this,n=s(t/i);this._value=Ni$1(e,r,n)}};var fl=1e-5;function hl(o,t,e,r,i){let s=t-o;return(e-t)*i+-s*r+s+t}function Xp(o,t,e,r,i){if(Array.isArray(e)){let s=[];for(let n=0;n<e.length;n++)s[n]=hl(o[n],t[n],e[n],r,i);return s}return hl(o,t,e,r,i)}function dl(o,t){if(Array.isArray(o)){let e=0;for(let r=0;r<o.length;r++){let i=o[r]-t[r];e+=i*i}return Math.sqrt(e)}return Math.abs(o-t)}var ei=class extends Pt{get value(){return this._currValue}_onUpdate(){let{fromValue:t,toValue:e,damping:r,stiffness:i}=this.settings,{_prevValue:s=t,_currValue:n=t}=this,a=Xp(s,n,e,r,i),c=dl(a,e),l=dl(a,n);c<fl&&l<fl&&(a=e,this.end()),this._prevValue=n,this._currValue=a}};var Kp={interpolation:ti,spring:ei};var ri=class{constructor(t){this.transitions=new Map,this.timeline=t}get active(){return this.transitions.size>0}add(t,e,r$72,i){let{transitions:s$33}=this;if(s$33.has(t)){let c=s$33.get(t),{value:l=c.settings.fromValue}=c;e=l,this.remove(t)}if(i=zo(i),!i)return;let n=Kp[i.type];if(!n){A.error(`unsupported transition type '${i.type}'`)();return}let a=new n(this.timeline);a.start(s(r({},i),{fromValue:e,toValue:r$72})),s$33.set(t,a)}remove(t){let{transitions:e}=this;e.has(t)&&(e.get(t).cancel(),e.delete(t))}update(){let t={};for(let[e,r]of this.transitions)r.update(),t[e]=r.value,r.inProgress||this.remove(e);return t}clear(){for(let t of this.transitions.keys())this.remove(t)}};function ml(o){let t=o[nt];for(let e in t){let r=t[e],{validate:i}=r;if(i&&!i(o[e],r))throw new Error(`Invalid prop ${e}: ${o[e]}`)}}function gl(o,t){let e=yl({newProps:o,oldProps:t,propTypes:o[nt],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),r=Qp(o,t),i=!1;return r||(i=tm(o,t)),{dataChanged:r,propsChanged:e,updateTriggersChanged:i,extensionsChanged:em(o,t),transitionsChanged:Jp(o,t)}}function Jp(o,t){if(!o.transitions)return!1;let e={},r=o[nt],i=!1;for(let s in o.transitions){let n=r[s],a=n&&n.type;(a===`number`||a===`color`||a===`array`)&&$s(o[s],t[s],n)&&(e[s]=!0,i=!0)}return i?e:!1}function yl({newProps:o,oldProps:t,ignoreProps:e={},propTypes:r={},triggerName:i=`props`}){if(t===o)return!1;if(typeof o!=`object`||o===null)return`${i} changed shallowly`;if(typeof t!=`object`||t===null)return`${i} changed shallowly`;for(let s of Object.keys(o))if(!(s in e)){if(!(s in t))return`${i}.${s} added`;let n=$s(o[s],t[s],r[s]);if(n)return`${i}.${s} ${n}`}for(let s of Object.keys(t))if(!(s in e)){if(!(s in o))return`${i}.${s} dropped`;if(!Object.hasOwnProperty.call(o,s)){let n=$s(o[s],t[s],r[s]);if(n)return`${i}.${s} ${n}`}}return!1}function $s(o,t,e){let r=e&&e.equal;return r&&!r(o,t,e)||!r&&(r=o&&t&&o.equals,r&&!r.call(o,t))?`changed deeply`:!r&&t!==o?`changed shallowly`:null}function Qp(o,t){if(t===null)return`oldProps is null, initial diff`;let e=!1,{dataComparator:r,_dataDiff:i}=o;return r?r(o.data,t.data)||(e=`Data comparator detected a change`):o.data!==t.data&&(e=`A new data container was supplied`),e&&i&&(e=i(o.data,t.data)||e),e}function tm(o,t){if(t===null)return{all:!0};if(`all`in o.updateTriggers&&pl(o,t,`all`))return{all:!0};let e={},r=!1;for(let i in o.updateTriggers)i!==`all`&&pl(o,t,i)&&(e[i]=!0,r=!0);return r?e:!1}function em(o,t){if(t===null)return!0;let e=t.extensions,{extensions:r}=o;if(r===e)return!1;if(!e||!r||r.length!==e.length)return!0;for(let i=0;i<r.length;i++)if(!r[i].equals(e[i]))return!0;return!1}function pl(o,t,e){let r=o.updateTriggers[e];r=r??{};let i=t.updateTriggers[e];return i=i??{},yl({oldProps:i,newProps:r,triggerName:e})}var rm=`count(): argument not an object`;var om=`count(): argument not a container`;function _l(o){if(!sm(o))throw new Error(rm);if(typeof o.count==`function`)return o.count();if(Number.isFinite(o.size))return o.size;if(Number.isFinite(o.length))return o.length;if(im(o))return Object.keys(o).length;throw new Error(om)}function im(o){return o!==null&&typeof o==`object`&&o.constructor===Object}function sm(o){return o!==null&&typeof o==`object`}function Hs(o,t){if(!t)return o;let e=r(r({},o),t);if(`defines`in t&&(e.defines=r(r({},o.defines),t.defines)),`modules`in t&&(e.modules=(o.modules||[]).concat(t.modules),t.modules.some(r=>r.name===`project64`))){let r=e.modules.findIndex(i=>i.name===`project32`);r>=0&&e.modules.splice(r,1)}if(`inject`in t)if(!o.inject)e.inject=t.inject;else{let r$73=r({},o.inject);for(let i in t.inject)r$73[i]=(r$73[i]||``)+t.inject[i];e.inject=r$73}return e}var wl=[0,0,0];function qs(o,t,e=!1){let r=t.projectPosition(o);if(e&&t instanceof se){let[i,s,n=0]=o;r[2]=n*t.getDistanceScales([i,s]).unitsPerMeter[2]}return r}function nm(o){let{viewport:t,modelMatrix:e,coordinateOrigin:r}=o,{coordinateSystem:i,fromCoordinateSystem:s,fromCoordinateOrigin:n}=o;return i==="default"&&(i=t.isGeospatial?`lnglat`:`cartesian`),s===void 0?s=i:s==="default"&&(s=t.isGeospatial?`lnglat`:`cartesian`),n===void 0&&(n=r),{viewport:t,coordinateSystem:i,coordinateOrigin:r,modelMatrix:e,fromCoordinateSystem:s,fromCoordinateOrigin:n}}function oi(o,{viewport:t,modelMatrix:e,coordinateSystem:r,coordinateOrigin:i,offsetMode:s}){let[n,a,c=0]=o;switch(e&&([n,a,c]=ir$3.transformMat4([],[n,a,c,1],e)),r){case`default`:return oi(o,{viewport:t,modelMatrix:e,coordinateSystem:t.isGeospatial?`lnglat`:`cartesian`,coordinateOrigin:i,offsetMode:s});case`lnglat`:return qs([n,a,c],t,s);case`lnglat-offsets`:return qs([n+i[0],a+i[1],c+(i[2]||0)],t,s);case`meter-offsets`:return qs(mr(i,[n,a,c]),t,s);case`cartesian`:return t.isGeospatial?[n+i[0],a+i[1],c+i[2]]:t.projectPosition([n,a,c]);default:throw new Error(`Invalid coordinateSystem: ${r}`)}}function bl(o,t){let{viewport:e,coordinateSystem:r,coordinateOrigin:i,modelMatrix:s,fromCoordinateSystem:n,fromCoordinateOrigin:a}=nm(t),{autoOffset:c=!0}=t,{geospatialOrigin:l=wl,shaderCoordinateOrigin:u=wl,offsetMode:f=!1}=c?cs(e,r,i):{},d=oi(o,{viewport:e,modelMatrix:s,coordinateSystem:n,coordinateOrigin:a,offsetMode:f});if(f){let p=e.projectPosition(l||u);Zn$1.sub(d,d,p)}return d}var am={minFilter:`linear`,mipmapFilter:`linear`,magFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`};var Zs={};function vl(o,t,e,r$74){if(e instanceof v)return e;e.constructor&&e.constructor.name!==`Object`&&(e={data:e});let i=null;e.compressed&&(i={minFilter:`linear`,mipmapFilter:e.data.length>1?`nearest`:`linear`});let{width:s$34,height:n}=e.data,a=t.createTexture(s(r({},e),{sampler:r(r(r({},am),i),r$74),mipLevels:t.getMipLevelCount(s$34,n)}));return t.type===`webgl`?a.generateMipmapsWebGL():t.type===`webgpu`&&t.generateMipmapsWebGPU(a),Zs[a.id]=o,a}function xl(o,t){!t||!(t instanceof v)||Zs[t.id]===o&&(t.delete(),delete Zs[t.id])}var cm={boolean:{validate(o,t){return!0},equal(o,t,e){return!!o==!!t}},number:{validate(o,t){return Number.isFinite(o)&&(!(`max`in t)||o<=t.max)&&(!(`min`in t)||o>=t.min)}},color:{validate(o,t){return t.optional&&!o||Xs(o)&&(o.length===3||o.length===4)},equal(o,t,e){return B(o,t,1)}},accessor:{validate(o,t){let e=ii(o);return e===`function`||e===ii(t.value)},equal(o,t,e){return typeof t==`function`?!0:B(o,t,1)}},array:{validate(o,t){return t.optional&&!o||Xs(o)},equal(o,t,e){let{compare:r}=e;return r?B(o,t,Number.isInteger(r)?r:r?1:0):o===t}},object:{equal(o,t,e){if(e.ignore)return!0;let{compare:r}=e;return r?B(o,t,Number.isInteger(r)?r:r?1:0):o===t}},function:{validate(o,t){return t.optional&&!o||typeof o==`function`},equal(o,t,e){return!e.compare&&e.ignore!==!1||o===t}},data:{transform:(o,t,e)=>{if(!o)return o;let{dataTransform:r}=e.props;return r?r(o):typeof o.shape==`string`&&o.shape.endsWith(`-table`)&&Array.isArray(o.data)?o.data:o}},image:{transform:(o,t,e)=>{let r$75=e.context;return!r$75||!r$75.device?null:vl(e.id,r$75.device,o,r(r({},t.parameters),e.props.textureParameters))},release:(o,t,e)=>{xl(e.id,o)}}};function Pl(o){let t={},e={},r={};for(let[i,s]of Object.entries(o)){let n=s?.deprecatedFor;if(n)r[i]=Array.isArray(n)?n:[n];else{let a=lm(i,s);t[i]=a,e[i]=a.value}}return{propTypes:t,defaultProps:e,deprecatedProps:r}}function lm(o,t){switch(ii(t)){case`object`:return Rr(o,t);case`array`:return Rr(o,{type:`array`,value:t,compare:!1});case`boolean`:return Rr(o,{type:`boolean`,value:t});case`number`:return Rr(o,{type:`number`,value:t});case`function`:return Rr(o,{type:`function`,value:t,compare:!0});default:return{name:o,type:`unknown`,value:t}}}function Rr(o,t){return`type`in t?r(r({name:o},cm[t.type]),t):`value`in t?r({name:o,type:ii(t.value)},t):{name:o,type:`object`,value:t}}function Xs(o){return Array.isArray(o)||ArrayBuffer.isView(o)}function ii(o){return Xs(o)?`array`:o===null?`null`:typeof o}function El(o,t){let e;for(let s=t.length-1;s>=0;s--){let n=t[s];`extensions`in n&&(e=n.extensions)}let r=Ks(o.constructor,e),i=Object.create(r);i[Re]=o,i[xt]={},i[pt]={};for(let s=0;s<t.length;++s){let n=t[s];for(let a in n)i[a]=n[a]}return Object.freeze(i),i}var um=`_mergedDefaultProps`;function Ks(o,t){if(!(o instanceof si.constructor))return{};let e=um;if(t)for(let i of t){let s=i.constructor;s&&(e+=`:${s.extensionName||s.name}`)}return Tl(o,e)||(o[e]=fm(o,t||[]))}function fm(o,t){if(!o.prototype)return null;let i=Ks(Object.getPrototypeOf(o)),n=Pl(Tl(o,`defaultProps`)||{}),a=Object.assign(Object.create(null),i,n.defaultProps),c=Object.assign(Object.create(null),i?.[nt],n.propTypes),l=Object.assign(Object.create(null),i?.[po],n.deprecatedProps);for(let u of t){let f=Ks(u.constructor);f&&(Object.assign(a,f),Object.assign(c,f[nt]),Object.assign(l,f[po]))}return hm(a,o),pm(a,c),dm(a,l),a[nt]=c,a[po]=l,t.length===0&&!Js(o,`_propTypes`)&&(o._propTypes=c),a}function hm(o,t){let e=gm(t);Object.defineProperties(o,{id:{writable:!0,value:e}})}function dm(o,t){for(let e in t)Object.defineProperty(o,e,{enumerable:!1,set(r){let i=`${this.id}: ${e}`;for(let s of t[e])Js(this,s)||(this[s]=r);A.deprecated(i,t[e].join(`/`))()}})}function pm(o,t){let e={},r={};for(let i in t){let s=t[i],{name:n,value:a}=s;s.async&&(e[n]=a,r[n]=mm(n))}o[Rt]=e,o[xt]={},Object.defineProperties(o,r)}function mm(o){return{enumerable:!0,set(t){typeof t==`string`||t instanceof Promise||jo(t)?this[xt][o]=t:this[pt][o]=t},get(){if(this[pt]){if(o in this[pt])return this[pt][o]||this[Rt][o];if(o in this[xt]){let t=this[Re]&&this[Re].internalState;if(t&&t.hasAsyncProp(o))return t.getAsyncProp(o)||this[Rt][o]}}return this[Rt][o]}}}function Js(o,t){return Object.prototype.hasOwnProperty.call(o,t)}function Tl(o,t){return Js(o,t)&&o[t]}function gm(o){let t=o.componentName;return t||A.warn(`${o.name}.componentName not specified`)(),t||o.name}var ym=0;var si=(()=>{class o{constructor(...e){this.props=El(this,e),this.id=this.props.id,this.count=ym++}clone(e){let{props:r$76}=this,i={};for(let s in r$76[Rt])s in r$76[pt]?i[s]=r$76[pt][s]:s in r$76[xt]&&(i[s]=r$76[xt][s]);return new this.constructor(r(r(r({},r$76),i),e))}}return o.componentName=`Component`,o.defaultProps={},o})();var wm=Object.freeze({});var ni=class{constructor(t){this.component=t,this.asyncProps={},this.onAsyncPropUpdated=()=>{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(let t in this.asyncProps){let e=this.asyncProps[t];e&&e.type&&e.type.release&&e.type.release(e.resolvedValue,e.type,this.component)}this.asyncProps={},this.component=null,this.resetOldProps()}getOldProps(){return this.oldAsyncProps||this.oldProps||wm}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component?this.component.props:null}hasAsyncProp(t){return t in this.asyncProps}getAsyncProp(t){let e=this.asyncProps[t];return e&&e.resolvedValue}isAsyncPropLoading(t){if(t){let e=this.asyncProps[t];return!!(e&&e.pendingLoadCount>0&&e.pendingLoadCount!==e.resolvedLoadCount)}for(let e in this.asyncProps)if(this.isAsyncPropLoading(e))return!0;return!1}reloadAsyncProp(t,e){this._watchPromise(t,Promise.resolve(e))}setAsyncProps(t){this.component=t[Re]||this.component;let e=t[pt]||{},r=t[xt]||t,i=t[Rt]||{};for(let s in e){let n=e[s];this._createAsyncPropData(s,i[s]),this._updateAsyncProp(s,n),e[s]=this.getAsyncProp(s)}for(let s in r){let n=r[s];this._createAsyncPropData(s,i[s]),this._updateAsyncProp(s,n)}}_fetch(t,e){return null}_onResolve(t,e){}_onError(t,e){}_updateAsyncProp(t,e){if(this._didAsyncInputValueChange(t,e)){if(typeof e==`string`&&(e=this._fetch(t,e)),e instanceof Promise){this._watchPromise(t,e);return}if(jo(e)){this._resolveAsyncIterable(t,e);return}this._setPropValue(t,e)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps){this.oldAsyncProps=Object.create(this.oldProps);for(let t in this.asyncProps)Object.defineProperty(this.oldAsyncProps,t,{enumerable:!0,value:this.oldProps[t]})}}_didAsyncInputValueChange(t,e){let r=this.asyncProps[t];return e===r.resolvedValue||e===r.lastValue?!1:(r.lastValue=e,!0)}_setPropValue(t,e){this._freezeAsyncOldProps();let r=this.asyncProps[t];r&&(e=this._postProcessValue(r,e),r.resolvedValue=e,r.pendingLoadCount++,r.resolvedLoadCount=r.pendingLoadCount)}_setAsyncPropValue(t,e,r){let i=this.asyncProps[t];i&&r>=i.resolvedLoadCount&&e!==void 0&&(this._freezeAsyncOldProps(),i.resolvedValue=e,i.resolvedLoadCount=r,this.onAsyncPropUpdated(t,e))}_watchPromise(t,e){let r=this.asyncProps[t];if(r){r.pendingLoadCount++;let i=r.pendingLoadCount;e.then(s=>{this.component&&(s=this._postProcessValue(r,s),this._setAsyncPropValue(t,s,i),this._onResolve(t,s))}).catch(s=>{this._onError(t,s)})}}async _resolveAsyncIterable(t,e){if(t!==`data`){this._setPropValue(t,e);return}let r=this.asyncProps[t];if(!r)return;r.pendingLoadCount++;let i=r.pendingLoadCount,s=[],n=0;for await(let a of e){if(!this.component)return;let{dataTransform:c}=this.component.props;c?s=c(a,s):s=s.concat(a),Object.defineProperty(s,"__diff",{enumerable:!1,value:[{startRow:n,endRow:s.length}]}),n=s.length,this._setAsyncPropValue(t,s,i)}this._onResolve(t,s)}_postProcessValue(t,e){let r=t.type;return r&&this.component&&(r.release&&r.release(t.resolvedValue,r,this.component),r.transform)?r.transform(e,r,this.component):e}_createAsyncPropData(t,e){if(!this.asyncProps[t]){let i=this.component&&this.component.props[nt];this.asyncProps[t]={type:i&&i[t],lastValue:null,resolvedValue:e,pendingLoadCount:0,resolvedLoadCount:0}}}};var ai=class extends ni{constructor({attributeManager:t,layer:e}){super(e),this.attributeManager=t,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1,this.disabledPickingIndices=[]}get layer(){return this.component}_fetch(t,e){let r=this.layer,i=r?.props.fetch;return i?i(e,{propName:t,layer:r}):super._fetch(t,e)}_onResolve(t,e){let r=this.layer;if(r){let i=r.props.onDataLoad;t===`data`&&i&&i(e,{propName:t,layer:r})}}_onError(t,e){let r=this.layer;r&&r.raiseError(e,`loading ${t} of ${this.layer}`)}};var bm=`layer.changeFlag`;var vm=`layer.initialize`;var xm=`layer.update`;var Pm=`layer.finalize`;var Em=`layer.matched`;var Al=2**24-1;var Tm=Object.freeze([]);var Am=vt(({oldViewport:o,viewport:t})=>o.equals(t));var ct=new Uint8ClampedArray(0);function Sl(o){return o.rowIndexes||o.pickingColors||o.instancePickingColors}function Qs(o){return o.rowIndexes}function tn(o){return o.pickingColors||o.instancePickingColors}var Sm={data:{type:`data`,value:Tm,async:!0},dataComparator:{type:`function`,value:null,optional:!0},_dataDiff:{type:`function`,value:o=>o&&o.__diff,optional:!0},dataTransform:{type:`function`,value:null,optional:!0},onDataLoad:{type:`function`,value:null,optional:!0},onError:{type:`function`,value:null,optional:!0},fetch:{type:`function`,value:(o,{propName:t,layer:e,loaders:r$77,loadOptions:i,signal:s$35})=>{let{resourceManager:n}=e.context;i=i||e.getLoadOptions(),r$77=r$77||e.props.loaders,s$35&&(i=s(r({},i),{core:s(r({},i?.core),{fetch:s(r({},i?.core?.fetch),{signal:s$35})})}));let a=n.contains(o);return!a&&!i&&(n.add({resourceId:o,data:ge(o,r$77),persistent:!1}),a=!0),a?n.subscribe({resourceId:o,onChange:c=>e.internalState?.reloadAsyncProp(t,c),consumerId:e.id,requestId:t}):ge(o,r$77,i)}},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:`number`,min:0,max:1,value:1},operation:`draw`,onHover:{type:`function`,value:null,optional:!0},onClick:{type:`function`,value:null,optional:!0},onDragStart:{type:`function`,value:null,optional:!0},onDrag:{type:`function`,value:null,optional:!0},onDragEnd:{type:`function`,value:null,optional:!0},coordinateSystem:`default`,coordinateOrigin:{type:`array`,value:[0,0,0],compare:!0},modelMatrix:{type:`array`,value:null,compare:!0,optional:!0},wrapLongitude:!1,positionFormat:`XYZ`,colorFormat:`RGBA`,parameters:{type:`object`,value:{},optional:!0,compare:2},loadOptions:{type:`object`,value:null,optional:!0,ignore:!0},transitions:null,extensions:[],loaders:{type:`array`,value:[],optional:!0,ignore:!0},getPolygonOffset:{type:`function`,value:({layerIndex:o})=>[0,-o*100]},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:`accessor`,value:[0,0,128,128]}};var en=(()=>{class o extends si{constructor(){super(...arguments),this.internalState=null,this.lifecycle=Wt.NO_STATE,this.parent=null}static get componentName(){return Object.prototype.hasOwnProperty.call(this,`layerName`)?this.layerName:``}get root(){let e=this;for(;e.parent;)e=e.parent;return e}toString(){return`${this.constructor.layerName||this.constructor.name}({id: '${this.props.id}'})`}project(e){R(this.internalState);let r=this.internalState.viewport||this.context.viewport,[s,n,a]=zt(oi(e,{viewport:r,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),r.pixelProjectionMatrix);return e.length===2?[s,n]:[s,n,a]}unproject(e){return R(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(e)}projectPosition(e,r$78){R(this.internalState);return bl(e,r({viewport:this.internalState.viewport||this.context.viewport,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem},r$78))}get isComposite(){return!1}get isDrawable(){return!0}setState(e){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,e),this.setNeedsRedraw()}setNeedsRedraw(){this.internalState&&(this.internalState.needsRedraw=!0)}setNeedsUpdate(){this.internalState&&(this.context.layerManager.setNeedsUpdate(String(this)),this.internalState.needsUpdate=!0)}get isLoaded(){return this.internalState?!this.internalState.isAsyncPropLoading():!1}get wrapLongitude(){return this.props.wrapLongitude}isPickable(){return this.props.pickable&&this.props.visible}getModels(){let e=this.state;return e&&(e.models||e.model&&[e.model])||[]}setShaderModuleProps(...e){for(let r of this.getModels())r.shaderInputs.setProps(...e)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){let{coordinateSystem:e}=this.props;return e==="default"||e===`lnglat`||e===`cartesian`}onHover(e,r){return this.props.onHover&&this.props.onHover(e,r)||!1}onClick(e,r){return this.props.onClick&&this.props.onClick(e,r)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(e,r=[]){return r[0]=e+1&255,r[1]=e+1>>8&255,r[2]=e+1>>8>>8&255,r}decodePickingColor(e){R(e instanceof Uint8Array);let[r,i,s]=e;return r+i*256+s*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:_l(this.props.data)}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){return this.getAttributeManager()?.getBounds([`positions`,`instancePositions`])}getShaders(e){e=Hs(e,{disableWarnings:!0,modules:this.context.defaultShaderModules});for(let r of this.props.extensions)e=Hs(e,r.getShaders.call(this,r));return e}shouldUpdateState(e){return e.changeFlags.propsOrDataChanged}updateState(e){let r=this.getAttributeManager(),{dataChanged:i}=e.changeFlags;if(i&&r)if(Array.isArray(i))for(let s of i)r.invalidateAll(s);else r.invalidateAll();if(r){let{props:s}=e,n=this.internalState.hasPickingBuffer,a=Number.isInteger(s.highlightedObjectIndex)||!!s.pickable||s.extensions.some(c=>c.getNeedsPickingBuffer.call(this,c));if(n!==a){this.internalState.hasPickingBuffer=a;let c=Sl(r.attributes);c&&(a&&c.constant&&(c.constant=!1,r.invalidate(c.id)),!c.value&&!a&&(c.constant=!0,c.value=Qs(r.attributes)?[gr]:[0,0,0]))}}}finalizeState(e){for(let i of this.getModels())i.destroy();let r=this.getAttributeManager();r&&r.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(e){for(let r of this.getModels())r.draw(e.renderPass)}getPickingInfo({info:e,mode:r,sourceLayer:i}){let{index:s}=e;return s>=0&&Array.isArray(this.props.data)&&(e.object=this.props.data[s]),e}raiseError(e,r){r&&(e=new Error(`${r}: ${e.message}`,{cause:e})),this.props.onError?.(e)||this.context?.onError?.(e,this)}getNeedsRedraw(e={clearRedrawFlags:!1}){return this._getNeedsRedraw(e)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){return this.internalState?.uniformTransitions.active||!1}activateViewport(e){if(!this.internalState)return;let r=this.internalState.viewport;this.internalState.viewport=e,(!r||!Am({oldViewport:r,viewport:e}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(e=`all`){let r=this.getAttributeManager();r&&(e===`all`?r.invalidateAll():r.invalidate(e))}updateAttributes(e){let r=!1;for(let i in e)e[i].layoutChanged()&&(r=!0);for(let i of this.getModels())this._setModelAttributes(i,e,r)}_updateAttributes(){let e=this.getAttributeManager();if(!e)return;let r=this.props,i=this.getNumInstances(),s=this.getStartIndices();e.update({data:r.data,numInstances:i,startIndices:s,props:r,transitions:r.transitions,buffers:r.data.attributes,context:this});let n=e.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(n)}_updateAttributeTransition(){let e=this.getAttributeManager();e&&e.updateTransition()}_updateUniformTransition(){let{uniformTransitions:e}=this.internalState;if(e.active){let r=e.update(),i=Object.create(this.props);for(let s in r)Object.defineProperty(i,s,{value:r[s]});return i}return this.props}calculateInstancePickingColors(e,{numInstances:r}){if(e.constant)return;let i=Math.floor(ct.length/4);this.internalState.usesPickingColorCache=!0;let s=r>0&&ct[0]===0;if(i<r||s){r>Al&&A.warn(`Layer has too many data objects. Picking might not be able to distinguish all objects.`)(),ct=dt.allocate(ct,r,{size:4,copy:!0,maxCount:Math.max(r,Al)});let n=Math.floor(ct.length/4),a=[0,0,0],c=s?0:i;for(let l=c;l<n;l++)this.encodePickingColor(l,a),ct[l*4+0]=a[0],ct[l*4+1]=a[1],ct[l*4+2]=a[2],ct[l*4+3]=0}e.value=ct.subarray(0,r*4)}_setModelAttributes(e,r,i=!1){if(!Object.keys(r).length)return;let s=this.getAttributeManager();if(s?.hasBufferGroups()){this._setGroupedModelAttributes(e,s,r);return}if(i){let l=this.getAttributeManager();e.setBufferLayout(l.getBufferLayouts(e)),r=l.getAttributes()}let n=e.userData?.excludeAttributes||{},a={},c={};for(let l in r){if(n[l])continue;let u=r[l].getValue();for(let f in u){let d=u[f];d instanceof P$2?r[l].settings.isIndexed?e.setIndexBuffer(d):a[f]=d:d&&(c[f]=d)}}e.setAttributes(a),e.setConstantAttributes(c)}_setGroupedModelAttributes(e,r$79,i){let s=e.userData?.excludeAttributes||{},n=r$79.getBufferGroupBindings(i,e,s);e.setBufferLayout(n.bufferLayouts);let a=r({},n.buffers),c={},l=r$79.getAttributes();for(let u in l){if(s[u]||n.groupedAttributeIds.has(u))continue;let f=l[u],d=f.getValue();for(let p in d){let m=d[p];m instanceof P$2?f.settings.isIndexed?e.setIndexBuffer(m):a[p]=m:m&&(c[p]=m)}}e.setAttributes(a),e.setConstantAttributes(c)}disablePickingIndex(e){let r=this.props.data;if(!(`attributes`in r)){this._disablePickingIndex(e);return}let i=this.getAttributeManager().attributes,s=Qs(i),n=tn(i),a=s&&r.attributes&&r.attributes[s.id];if(a&&a.value){let l=a.value;for(let u=0;u<r.length;u++)l[s.getVertexOffset(u)]===e&&this._disablePickingIndex(u);return}let c=n&&r.attributes&&r.attributes[n.id];if(c&&c.value){let l=c.value,u=this.encodePickingColor(e);for(let f=0;f<r.length;f++){let d=n.getVertexOffset(f);l[d]===u[0]&&l[d+1]===u[1]&&l[d+2]===u[2]&&this._disablePickingIndex(f)}}else this._disablePickingIndex(e)}_disablePickingIndex(e){let r=this.getAttributeManager().attributes,i=Qs(r);if(i){let c=i.getVertexOffset(e),l=i.getVertexOffset(e+1),u=new Uint32Array(l-c);u.fill(gr),i.buffer.write(u,c*u.BYTES_PER_ELEMENT);return}let s=tn(r);if(!s){this.internalState&&Xa(this.internalState.disabledPickingIndices,e);return}let n=s.getVertexOffset(e),a=s.getVertexOffset(e+1);s.buffer.write(new Uint8Array(a-n),n)}restorePickingColors(){let e=this.getAttributeManager().attributes,r=Sl(e);if(!r){this.internalState&&(this.internalState.disabledPickingIndices.length=0);return}let i=tn(e);this.internalState.usesPickingColorCache&&i&&i.value.buffer!==ct.buffer&&(i.value=ct.subarray(0,i.value.length)),r.updateSubBuffer({startOffset:0})}_initialize(){R(!this.internalState),j(vm,this);let e=this._getAttributeManager();this.internalState=new ai({attributeManager:e,layer:this}),this._clearChangeFlags(),this.state={},Object.defineProperty(this.state,"attributeManager",{get:()=>(A.deprecated(`layer.state.attributeManager`,`layer.getAttributeManager()`)(),e)}),this.internalState.uniformTransitions=new ri(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(let r of this.props.extensions)r.initializeState.call(this,this.context,r);this.setChangeFlags({dataChanged:`init`,propsChanged:`init`,viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(e){j(Em,this,this===e);let{state:r,internalState:i}=e;this!==e&&(this.internalState=i,this.state=r,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){let e=this.needsUpdate();if(j(xm,this,e),!e)return;this.context.stats.get(`Layer updates`).incrementCount();let r=this.props,i=this.context,s=this.internalState,n=i.viewport,a=this._updateUniformTransition();s.propsInTransition=a,i.viewport=s.viewport||n,this.props=a;try{let c=this._getUpdateParams(),l=this.getModels();if(i.device)this.updateState(c);else try{this.updateState(c)}catch{}for(let f of this.props.extensions)f.updateState.call(this,c,f);this.setNeedsRedraw(),this._updateAttributes();let u=this.getModels()[0]!==l[0];this._postUpdate(c,u)}finally{i.viewport=n,this.props=r,this._clearChangeFlags(),s.needsUpdate=!1,s.resetOldProps()}}_finalize(){j(Pm,this),this.finalizeState(this.context);for(let e of this.props.extensions)e.finalizeState.call(this,this.context,e)}_drawLayer({renderPass:e,shaderModuleProps:r=null,uniforms:i={},parameters:s={}}){this._updateAttributeTransition();let n=this.props,a=this.context;this.props=this.internalState.propsInTransition||n;try{r&&this.setShaderModuleProps(r);let{getPolygonOffset:c}=this.props,l=c&&c(i)||[0,0];a.device instanceof Ke$1&&a.device.setParametersWebGL({polygonOffset:l});let u=a.device instanceof Ke$1?null:Cm(s);if(Im(this.getModels(),e,s,u),a.device instanceof Ke$1)a.device.withParametersWebGL(s,()=>{let f={renderPass:e,shaderModuleProps:r,uniforms:i,parameters:s,context:a};for(let d of this.props.extensions)d.draw.call(this,f,d);this.draw(f)});else{u?.renderPassParameters&&e.setParameters(u.renderPassParameters);let f={renderPass:e,shaderModuleProps:r,uniforms:i,parameters:s,context:a};for(let d of this.props.extensions)d.draw.call(this,f,d);this.draw(f)}}finally{this.props=n}}getChangeFlags(){return this.internalState?.changeFlags}setChangeFlags(e){if(!this.internalState)return;let{changeFlags:r}=this.internalState;for(let s in e)if(e[s]){let n=!1;switch(s){case`dataChanged`:let a=e[s],c=r[s];a&&Array.isArray(c)&&(r.dataChanged=Array.isArray(a)?c.concat(a):a,n=!0);default:r[s]||(r[s]=e[s],n=!0)}n&&j(bm,this,s,e)}let i=!!(r.dataChanged||r.updateTriggersChanged||r.propsChanged||r.extensionsChanged);r.propsOrDataChanged=i,r.somethingChanged=i||r.viewportChanged||r.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(e,r){let i=gl(e,r);if(i.updateTriggersChanged)for(let s in i.updateTriggersChanged)i.updateTriggersChanged[s]&&this.invalidateAttribute(s);if(i.transitionsChanged)for(let s in i.transitionsChanged)this.internalState.uniformTransitions.add(s,r[s],e[s],e.transitions?.[s]);return this.setChangeFlags(i)}validateProps(){ml(this.props)}updateAutoHighlight(e){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(e)}_updateAutoHighlight(e){let r={highlightedObjectColor:e.picked?e.color:null},{highlightColor:i}=this.props;e.picked&&typeof i==`function`&&(r.highlightColor=i(e)),this.setShaderModuleProps({picking:r}),this.setNeedsRedraw()}_getAttributeManager(){let e=this.context;return new Qo(e.device,{id:this.props.id,stats:e.stats,timeline:e.timeline})}_postUpdate(e,r){let{props:i,oldProps:s}=e,n=this.state.model;n?.isInstanced&&n.setInstanceCount(this.getNumInstances());let{autoHighlight:a,highlightedObjectIndex:c,highlightColor:l}=i;if(r||s.autoHighlight!==a||s.highlightedObjectIndex!==c||s.highlightColor!==l){let u={};Array.isArray(l)&&(u.highlightColor=l),(r||s.autoHighlight!==a||c!==s.highlightedObjectIndex)&&(u.highlightedObjectColor=Number.isFinite(c)&&c>=0?this.encodePickingColor(c):null),this.setShaderModuleProps({picking:u})}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(e){if(!this.internalState)return!1;let r=!1;r=r||this.internalState.needsRedraw&&this.id;let i=this.getAttributeManager(),s=i?i.getNeedsRedraw(e):!1;if(r=r||s,r)for(let n of this.props.extensions)n.onNeedsRedraw.call(this,n);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!e.clearRedrawFlags,r}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}}return o.defaultProps=Sm,o.layerName=`Layer`,o})();function Cm(o){let r=o,{blendConstant:t}=r,e=u(r,[`blendConstant`]);return t?{pipelineParameters:e,renderPassParameters:{blendConstant:t}}:{pipelineParameters:e}}function Im(o,t,e,r$80){for(let i of o)i.device.type===`webgpu`?(Rm(i,t),i.setParameters(r(r({},i.parameters),r$80?.pipelineParameters))):i.setParameters(e)}function Rm(o,t){let e=t.props.framebuffer||(t.framebuffer??null);if(!e)return;let r=e.colorAttachments.map(n=>n?.texture?.format??null),i=e.depthStencilAttachment?.texture?.format,s=o;(!Lm(s.props.colorAttachmentFormats,r)||s.props.depthStencilAttachmentFormat!==i)&&(s.props.colorAttachmentFormats=r,s.props.depthStencilAttachmentFormat=i,s._setPipelineNeedsUpdate(`attachment formats`))}function Lm(o,t){if(o===t)return!0;if(!o||!t||o.length!==t.length)return!1;for(let e=0;e<o.length;e++)if(o[e]!==t[e])return!1;return!0}var km=`compositeLayer.renderLayers`;var Dm=(()=>{class o extends en{get isComposite(){return!0}get isDrawable(){return!1}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(e=>e.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(e){}setState(e){super.setState(e),this.setNeedsUpdate()}getPickingInfo({info:e}){let{object:r}=e;return r&&r.__source&&r.__source.parent&&r.__source.parent.id===this.id&&(e.object=r.__source.object,e.index=r.__source.index),e}filterSubLayer(e){return!0}shouldRenderSubLayer(e,r){return r&&r.length}getSubLayerClass(e,r){let{_subLayerProps:i}=this.props;return i&&i[e]&&i[e].type||r}getSubLayerRow(e,r,i){return e.__source={parent:this,object:r,index:i},e}getSubLayerAccessor(e){if(typeof e==`function`){let r={index:-1,data:this.props.data,target:[]};return(i,s)=>i&&i.__source?(r.index=i.__source.index,e(i.__source.object,r)):e(i,s)}return e}getSubLayerProps(e={}){let{opacity:r$81,pickable:i,visible:s,parameters:n,getPolygonOffset:a,highlightedObjectIndex:c,autoHighlight:l,highlightColor:u,coordinateSystem:f,coordinateOrigin:d,wrapLongitude:p,positionFormat:m,modelMatrix:g,extensions:y,fetch:b,operation:v,_subLayerProps:w}=this.props,x={id:``,updateTriggers:{},opacity:r$81,pickable:i,visible:s,parameters:n,getPolygonOffset:a,highlightedObjectIndex:c,autoHighlight:l,highlightColor:u,coordinateSystem:f,coordinateOrigin:d,wrapLongitude:p,positionFormat:m,modelMatrix:g,extensions:y,fetch:b,operation:v},E=w&&e.id&&w[e.id],S=E&&E.updateTriggers,L=e.id||`sublayer`;if(E){let I=this.props[nt],C=e.type?e.type._propTypes:{};for(let M in E){let V=C[M]||I[M];V&&V.type===`accessor`&&(E[M]=this.getSubLayerAccessor(E[M]))}}Object.assign(x,e,E),x.id=`${this.props.id}-${L}`,x.updateTriggers=r(r({all:this.props.updateTriggers?.all},e.updateTriggers),S);for(let I of y){let C=I.getSubLayerProps.call(this,I);C&&Object.assign(x,C,{updateTriggers:Object.assign(x.updateTriggers,C.updateTriggers)})}return x}_updateAutoHighlight(e){for(let r of this.getSubLayers())r.updateAutoHighlight(e)}_getAttributeManager(){return null}_postUpdate(e,r){let i=this.internalState.subLayers,s=!i||this.needsUpdate();if(s)i=ne(this.renderLayers(),Boolean),this.internalState.subLayers=i;j(km,this,s,i);for(let n of i)n.parent=this}}return o.layerName=`CompositeLayer`,o})();var ze=Math.PI/180;var Ml=180/Math.PI;var Bm=1;var ci=6370972;var Ot=256;var Cl=.75;var Il=1.15;function Rl(o){let t=It(o+180,360)-180;return Math.abs(t)<Bm}function Um(){let o=Ot/ci,t=Math.PI/180*Ot;return{unitsPerMeter:[o,o,o],unitsPerMeter2:[0,0,0],metersPerUnit:[1/o,1/o,1/o],unitsPerDegree:[t,t,o],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/t,1/t,1/o]}}var on=(()=>{class o extends Ie{constructor(e={}){let{longitude:r$82=0,bearing:i=0,pitch:s$36=0,zoom:n=0,nearZMultiplier:a=.5,farZMultiplier:c=1,resolution:l=10}=e,{latitude:u=0,height:f,altitude:d=1.5,fovy:p}=e;u=Math.max(Math.min(u,90),-90),f=f||1,p?d=ie(p):p=Ct(d);let m=Math.max(Math.min(u,Z),-Z),g=Math.pow(2,n-F(m)),y=s$36*ze,b=e.nearZ??a,v=e.farZ??(d+Ot*2*g/f/Math.max(Math.cos(y),.1))*c,w=new U$2().lookAt({eye:[0,-d,0],up:[0,0,1]}).rotateX(-y).rotateY(-i*ze).rotateX(u*ze).rotateZ(-r$82*ze).scale(g/f);super(s(r({},e),{height:f,viewMatrix:w,longitude:r$82,latitude:u,zoom:n,distanceScales:Um(),fovy:p,focalDistance:d,near:b,far:v})),this.scale=g,this.latitude=u,this.longitude=r$82,this.bearing=i,this.pitch=s$36,this.fovy=p,this.resolution=l}get projectionMode(){return z.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(e={}){let r={targetZ:e.z||0},i=this.unproject([0,this.height/2],r),s=this.unproject([this.width/2,0],r),n=this.unproject([this.width,this.height/2],r),a=this.unproject([this.width/2,this.height],r);return n[0]<this.longitude&&(n[0]+=360),i[0]>this.longitude&&(i[0]-=360),[Math.min(i[0],n[0],s[0],a[0]),Math.min(i[1],n[1],s[1],a[1]),Math.max(i[0],n[0],s[0],a[0]),Math.max(i[1],n[1],s[1],a[1])]}_getRayToGlobe(e,{topLeft:r=!0,targetZ:i}={}){let[s,n]=e,a=r?n:this.height-n,{pixelUnprojectionMatrix:c}=this,l=rn(c,[s,a,-1,1]),u=rn(c,[s,a,1,1]),f=((i||0)/ci+1)*Ot,d=Zn$1.sqrLen(Zn$1.sub([],l,u)),p=Zn$1.sqrLen(l),m=Zn$1.sqrLen(u);return{rayStartPosition:l,rayEndPosition:u,radius:f,rayLengthSquared:d,rayStartDistanceSquared:p,distanceToCenterSquared:4*((4*p*m-(d-p-m)**2)/16)/d}}_getRayDistanceToGlobeCenterRatio(e,r){let{distanceToCenterSquared:i,radius:s}=this._getRayToGlobe(e,r);return Math.sqrt(Math.max(0,i))/s}getZoomAnchorStrength(e){let r=this._getRayDistanceToGlobeCenterRatio(e);if(r>=Il)return 0;let i=Math.max(0,Math.min(1,(r-Cl)/(Il-Cl)));return 1-i*i*(3-2*i)}unproject(e,{topLeft:r=!0,targetZ:i}={}){let[s,n,a]=e,c=r?n:this.height-n,{pixelUnprojectionMatrix:l}=this,u;if(Number.isFinite(a))u=rn(l,[s,c,a,1]);else{let{rayStartPosition:m,rayEndPosition:g,radius:y,rayLengthSquared:b,rayStartDistanceSquared:v,distanceToCenterSquared:w}=this._getRayToGlobe(e,{topLeft:r,targetZ:i}),S=(Math.sqrt(v-w)-Math.sqrt(Math.max(0,y*y-w)))/Math.sqrt(b);u=Zn$1.lerp([],m,g,S)}let[f,d,p]=this.unprojectPosition(u);return Number.isFinite(a)?[f,d,p]:Number.isFinite(i)?[f,d,i]:[f,d]}projectPosition(e){let[r,i,s=0]=e,n=r*ze,a=i*ze,c=Math.cos(a),l=(s/ci+1)*Ot;return[Math.sin(n)*c*l,-Math.cos(n)*c*l,Math.sin(a)*l]}unprojectPosition(e){let[r,i,s]=e,n=Zn$1.len(e),a=Math.asin(s/n);return[Math.atan2(r,-i)*Ml,a*Ml,(n/Ot-1)*ci]}projectFlat(e){return e}unprojectFlat(e){return e}panByPosition(e,r,i){if(!i){let p=this.getZoomAnchorStrength(r);if(p===0)return{longitude:this.longitude,latitude:this.latitude};let m=this.unproject(r),g=It(e[0]-m[0]+180,360)-180,y=e[1]-m[1],b=Math.abs(m[1])>Z||Math.abs(g)>90;if(Rl(this.bearing)&&b)return{longitude:this.longitude,latitude:this.latitude};if(Rl(this.bearing)&&y!==0){let E=((y>0?Z:-Z)-this.latitude)/y;p=Math.min(p,Math.max(0,E))}return{longitude:this.longitude+g*p,latitude:Math.max(Math.min(this.latitude+y*p,90),-90)}}let[s,n,a]=e,l=.25/Math.pow(2,this.zoom-F(this.latitude)),u=s+l*(i[0]-r[0]),f=n-l*(i[1]-r[1]);f=Math.max(Math.min(f,90),-90);let d={longitude:u,latitude:f,zoom:a-F(n)};return d.zoom+=F(d.latitude),d}}return o.displayName=`GlobeViewport`,o})();function F(o,t){t&&(o=Math.max(Math.min(o,Z),-Z));let e=Math.PI*Math.cos(o*Math.PI/180);return Math.log2(e)}function rn(o,t){let e=ir$3.transformMat4([],t,o);return ir$3.scale(e,e,1/e[3]),e}var Fe=Math.PI/180;var sn=180/Math.PI;var rt=class o{static toPosition(t,e){let r=e*Fe,i=t*Fe,s=Math.cos(r);return[s*Math.cos(i),s*Math.sin(i),Math.sin(r)]}static toLngLat(t){return[Math.atan2(t[1],t[0])*sn,Math.asin(za$1(t[2],-1,1))*sn]}static tangentBasis(t,e){let r=e*Fe,i=t*Fe,s=Math.sin(r),n=Math.cos(r),a=Math.sin(i),c=Math.cos(i);return{N:[-s*c,-s*a,n],E:[-a,c,0]}}static upVector(t,e,r){let{N:i,E:s}=o.tangentBasis(t,e),n=r*Fe,a=Math.cos(n),c=Math.sin(n);return[i[0]*a+s[0]*c,i[1]*a+s[1]*c,i[2]*a+s[2]*c]}static bearing(t,e,r){let{N:i,E:s}=o.tangentBasis(e,r);return Math.atan2(Zn$1.dot(t,s),Zn$1.dot(t,i))*sn}static cameraFrame(t,e,r){let i=o.toPosition(t,e),s=o.upVector(t,e,r),{N:n,E:a}=o.tangentBasis(t,e),c=r*Fe,l=Math.cos(c),u=Math.sin(c),f=[a[0]*l-n[0]*u,a[1]*l-n[1]*u,a[2]*l-n[2]*u];return{position:i,up:s,axisHorizontal:Zn$1.cross([],i,f),axisVertical:Zn$1.cross([],i,s),longitude:t,latitude:e,bearing:r}}static angularDistance(t,e){let r=o.toPosition(t.longitude,t.latitude),i=o.toPosition(e.longitude,e.latitude);return Math.acos(za$1(Zn$1.dot(r,i),-1,1))}static greatCircleAxis(t,e){let r=o.toPosition(t.longitude,t.latitude),i=o.toPosition(e.longitude,e.latitude);return Zn$1.normalize([],Zn$1.cross([],r,i))}static rotate(t,e,r){let i=new hr$2().fromAxisRotation(e,r);return Zn$1.transformQuat([],t,i)}static rotateFrame(t,e,r$83,i){let s$37=o.rotate(t.position,t.axisHorizontal,e);s$37=o.rotate(s$37,t.axisVertical,r$83);let n=o.rotate(t.up,t.axisHorizontal,e);n=o.rotate(n,t.axisVertical,r$83);let[a,c]=o.toLngLat(s$37),l=i?0:o.bearing(n,a,c);return s(r({},t),{position:s$37,up:n,longitude:a,latitude:c,bearing:l})}static rotateFrameToMatch(t,e,r$84,i=1){let s$38=o.toPosition(...e),n=o.toPosition(...r$84),a=Zn$1.cross([],s$38,n),c=Zn$1.len(a),l=za$1(Zn$1.dot(s$38,n),-1,1);if(c<1e-12){if(l>0)return t;a=Zn$1.cross([],s$38,t.up),Zn$1.len(a)<1e-12&&(a=Zn$1.cross([],s$38,t.axisVertical))}Zn$1.normalize(a,a);let u=Math.atan2(c,l)*za$1(i,0,1),f=o.rotate(t.position,a,u),d=o.rotate(t.up,a,u),[p,m]=o.toLngLat(f);return s(r({},t),{position:f,up:d,longitude:p,latitude:m,bearing:o.bearing(d,p,m)})}};var Ll=5;var Nm=1/(1-Math.exp(-Ll));var kl=o=>(1-Math.exp(-Ll*o))*Nm;var li=class extends ke{constructor(t){let e=`axis`in t;super({compare:[`longitude`,`latitude`],extract:e?[`longitude`,`latitude`,`zoom`,`bearing`]:[`longitude`,`latitude`,`zoom`],required:[`longitude`,`latitude`]}),e?(this._mode=`rotation`,this._axis=t.axis,this._totalAngle=t.totalAngle):(this._mode=`linear`,this._targetLongitude=t.targetLongitude)}initializeProps(t,e){let r$85=super.initializeProps(t,e);return this._startZoom=t.zoom,this._mode===`rotation`?this._startFrame=s(r({},rt.cameraFrame(t.longitude,t.latitude,t.bearing||0)),{axisHorizontal:this._axis}):r$85.end.longitude=this._targetLongitude,r$85}interpolateProps(t,e,r){if(this._mode===`rotation`){let{longitude:a,latitude:c,bearing:l}=rt.rotateFrame(this._startFrame,this._totalAngle*r,0);return{bearing:l,longitude:a,latitude:c,zoom:this._startZoom+F(c,!0)-F(this._startFrame.latitude,!0)}}let i=t.longitude+(e.longitude-t.longitude)*r,s=t.latitude+(e.latitude-t.latitude)*r;return{longitude:i,latitude:s,zoom:this._startZoom+F(s,!0)-F(t.latitude,!0)}}};var Ge=Math.PI/180;var Vm=180/Math.PI;function Ol(o,t=0){let e=Math.min(180,o)*Ge;return Ot*2*Math.sin(e/2)*Math.pow(2,t)}function We(o,t=0){let e=o/Math.pow(2,t);return Math.asin(Math.min(1,e/Ot/2))*2*Vm}var nn=class extends wr{constructor(t){let a=t,{startPanPos:e,startPanCameraFrame:r,startPanAngularRate:i}=a,s=u(a,[`startPanPos`,`startPanCameraFrame`,`startPanAngularRate`]);s.normalize=!1,super(s);let n=this._state;e!==void 0&&(n.startPanPos=e),r!==void 0&&(n.startPanCameraFrame=r),i!==void 0&&(n.startPanAngularRate=i)}panStart({pos:t}){let{latitude:e,longitude:r,zoom:i,bearing:s=0}=this.getViewportProps(),n=rt.cameraFrame(r,e,s),c=.25/Math.pow(2,i-F(e,!0))*Ge;return this._getUpdatedState({startPanPos:t,startPanCameraFrame:n,startPanAngularRate:c,startZoom:i})}pan({pos:t,startPos:e}){let r=this.getState(),i=r.startPanPos||e;if(!i)return this;let s=r.startPanCameraFrame,n=r.startPanAngularRate,a=r.startZoom??this.getViewportProps().zoom;if(!s||!n)return this;let c=i[0]-t[0],l=i[1]-t[1],u=c*n,f=-l*n,d=rt.rotateFrame(s,u,f),p=a+F(d.latitude,!0)-F(s.latitude,!0);return this._getUpdatedState({longitude:d.longitude,latitude:d.latitude,bearing:d.bearing,zoom:p})}panEnd(){return this._getUpdatedState({startPanPos:null,startPanCameraFrame:null,startPanAngularRate:null,startZoom:null})}_panFromCenter(t){let{width:e,height:r}=this.getViewportProps(),i=[e/2,r/2];return this.panStart({pos:i}).pan({pos:[i[0]+t[0],i[1]+t[1]]}).panEnd()}applyConstraints(t){let e=t,r$86=e[Lt];delete e[Lt];let{latitude:i,maxBounds:s$39}=t;if(t.zoom=this._constrainZoom(t.zoom,t),r$86){let a=this.makeViewport(t),c=a.getZoomAnchorStrength(r$86.screenPosition);if(c>0){let l=a.unproject(r$86.screenPosition),u=rt.cameraFrame(t.longitude,t.latitude,t.bearing||0),f=rt.rotateFrameToMatch(u,[l[0],l[1]],[r$86.position[0],r$86.position[1]],c);t.longitude=f.longitude,t.latitude=f.latitude,t.bearing=f.bearing}}(t.longitude<-180||t.longitude>180)&&(t.longitude=It(t.longitude+180,360)-180),(t.bearing<-180||t.bearing>180)&&(t.bearing=It(t.bearing+180,360)-180),t.latitude=za$1(t.latitude,-90,90),t.pitch=za$1(t.pitch,t.minPitch,t.maxPitch);let n=s$39?De(t.width,t.height,t.maxBoundsPadding):null;if(s$39&&n&&(n.width>=0&&(t.longitude=za$1(t.longitude,s$39[0][0],s$39[1][0])),n.height>=0&&(t.latitude=za$1(t.latitude,s$39[0][1],s$39[1][1]))),s$39&&n){let c=xo(this.makeViewport(s(r({},t),{bearing:0,pitch:0})),[t.longitude,t.latitude],n),l=t.zoom-F(i),u=s$39[1][0]-s$39[0][0],f=s$39[1][1]-s$39[0][1];if(n.height>=0&&f>0&&f<180){let d=Math.min(We(n.height,l),f),p=n.height?d*c.bottom/n.height:We(c.bottom,l),m=n.height?d*c.top/n.height:We(c.top,l);t.latitude=za$1(t.latitude,s$39[0][1]+p,s$39[1][1]-m)}if(n.width>=0&&u>0&&u<360){let d=Math.min(We(n.width/Math.cos(t.latitude*Ge),l),u),p=n.width?d*c.left/n.width:We(c.left/Math.cos(t.latitude*Ge),l),m=n.width?d*c.right/n.width:We(c.right/Math.cos(t.latitude*Ge),l);t.longitude=za$1(t.longitude,s$39[0][0]+p,s$39[1][0]-m)}}return t.latitude=za$1(t.latitude,-90,90),t.latitude!==i&&(t.zoom+=F(t.latitude,!0)-F(i,!0)),t}_constrainZoom(t,e){e||(e=this.getViewportProps());let{maxZoom:r,maxBounds:i}=e,{minZoom:s}=e;if(i!==null&&e.width>0&&e.height>0){let c=De(e.width,e.height,e.maxBoundsPadding),l=i[0][1],u=i[1][1],f=Math.sign(l)===Math.sign(u)?Math.min(Math.abs(l),Math.abs(u)):0,d=F(0),p=Ol(i[1][0]-i[0][0])*Math.cos(f*Ge),m=Ol(i[1][1]-i[0][1]);c.width>0&&p>0&&(s=Math.max(s,Math.log2(c.width/p)+d)),c.height>0&&m>0&&(s=Math.max(s,Math.log2(c.height/m)+d)),s>r&&(s=r)}let a=F(e.latitude,!0)-F(0,!0);return za$1(t,s+a,r+a)}};var ui=class extends Oe{constructor(){super(...arguments),this.ControllerState=nn,this.transition={transitionDuration:300,transitionInterpolator:new Yt({transitionProps:{compare:[`longitude`,`latitude`,`zoom`,`bearing`,`pitch`],required:[`longitude`,`latitude`,`zoom`]}})},this.dragMode=`pan`,this._panHistory=[]}_onPanStart(t){return this._panHistory=[],super._onPanStart(t)}_onMultiPanStart(t){return this._panHistory=[],super._onMultiPanStart(t)}_onPanMove(t){if(!this.dragPan)return!1;let e=this.getCenter(t),r=this.controllerState.pan({pos:e});this.updateViewport(r,{transitionDuration:0},{isDragging:!0,isPanning:!0});let{longitude:i,latitude:s}=r.getViewportProps();return this._panHistory.push({longitude:i,latitude:s,timestamp:Date.now()}),this._panHistory.length>5&&this._panHistory.shift(),!0}_onPanMoveEnd(t){let{inertia:e}=this;if(this.dragPan&&e&&this._panHistory.length>=2){let i=this._panHistory[0],s$40=this._panHistory[this._panHistory.length-1],n=s$40.timestamp-i.timestamp;if(n>0){let a=this.controllerState.getViewportProps(),l=rt.angularDistance(i,s$40)/n;if(l>1e-6){let u=l*e/2,f=rt.greatCircleAxis(i,s$40),d=rt.cameraFrame(a.longitude,a.latitude,a.bearing||0),p=rt.rotateFrame(s(r({},d),{axisHorizontal:f}),u,0),m=p.longitude,g=za$1(p.latitude,-90,90),y=new li({axis:f,totalAngle:u}),b=this.controllerState.panEnd();return this.updateViewport(b,{transitionInterpolator:y,transitionDuration:e,transitionEasing:kl,longitude:m,latitude:g},{isDragging:!1,isPanning:!0}),this._panHistory=[],!0}}}this._panHistory=[];let r$87=this.controllerState.panEnd();return this.updateViewport(r$87,null,{isDragging:!1,isPanning:!1}),!0}};var zm={cullMode:`back`};var Wm=(()=>{class o extends Le{constructor(e={}){super(s(r({},e),{parameters:r(r({},zm),e.parameters)}))}getViewportType(e){return e.zoom>12?se:on}get ControllerType(){return ui}}return o.displayName=`GlobeView`,o})();var Ym=(()=>{class o{static get componentName(){return Object.prototype.hasOwnProperty.call(this,`extensionName`)?this.extensionName:``}constructor(e){e&&(this.opts=e)}equals(e){return this===e?!0:this.constructor===e.constructor&&B(this.opts,e.opts,1)}getShaders(e){return null}getSubLayerProps(e){let{defaultProps:r}=e.constructor,i={updateTriggers:{}};for(let s in r)if(s in this.props){let n=r[s],a=this.props[s];i[s]=a,n&&n.type===`accessor`&&(i.updateTriggers[s]=this.props.updateTriggers[s],typeof a==`function`&&(i[s]=this.getSubLayerAccessor(a)))}return i}initializeState(e,r){}updateState(e,r){}onNeedsRedraw(e){}getNeedsPickingBuffer(e){return!1}draw(e,r){}finalizeState(e,r){}}return o.defaultProps={},o.extensionName=`LayerExtension`,o})();var an=class{constructor(t){this.indexStarts=[0],this.vertexStarts=[0],this.vertexCount=0,this.instanceCount=0;let{attributes:e={}}=t;this.typedArrayManager=dt,this.attributes={},this._attributeDefs=e,this.opts=t,this.updateGeometry(t)}updateGeometry(t){Object.assign(this.opts,t);let{data:e,buffers:r={},getGeometry:i,geometryBuffer:s,positionFormat:n,dataChanged:a,normalize:c=!0}=this.opts;if(this.data=e,this.getGeometry=i,this.positionSize=s&&s.size||(n===`XY`?2:3),this.buffers=r,this.normalize=c,s&&(R(e.startIndices),this.getGeometry=this.getGeometryFromBuffer(s),c||(r.vertexPositions=s)),this.geometryBuffer=r.vertexPositions,Array.isArray(a))for(let l of a)this._rebuildGeometry(l);else this._rebuildGeometry()}updatePartialGeometry({startRow:t,endRow:e}){this._rebuildGeometry({startRow:t,endRow:e})}getGeometryFromBuffer(t){let e=t.value||t;return ArrayBuffer.isView(e)?No(e,{size:this.positionSize,offset:t.offset,stride:t.stride,startIndices:this.data.startIndices}):null}_allocate(t,e){let{attributes:r,buffers:i,_attributeDefs:s,typedArrayManager:n}=this;for(let a in s)if(a in i)n.release(r[a]),r[a]=null;else{let c=s[a];c.copy=e,r[a]=n.allocate(r[a],t,c)}}_forEachGeometry(t,e,r){let{data:i,getGeometry:s}=this,{iterable:n,objectInfo:a}=Ar(i,e,r);for(let c of n){a.index++;t(s?s(c,a):null,a.index)}}_rebuildGeometry(t){if(!this.data)return;let{indexStarts:e,vertexStarts:r,instanceCount:i}=this,{data:s,geometryBuffer:n}=this,{startRow:a=0,endRow:c=Infinity}=t||{},l={};if(t||(e=[0],r=[0]),this.normalize||!n)this._forEachGeometry((f,d)=>{let p=f&&this.normalizeGeometry(f);l[d]=p,r[d+1]=r[d]+(p?this.getGeometrySize(p):0)},a,c),i=r[r.length-1];else if(r=s.startIndices,i=r[s.length]||0,ArrayBuffer.isView(n))i=i||n.length/this.positionSize;else if(n instanceof P$2){let f=this.positionSize*4;i=i||n.byteLength/f}else if(n.buffer){let f=n.stride||this.positionSize*4;i=i||n.buffer.byteLength/f}else if(n.value){let f=n.value,d=n.stride/f.BYTES_PER_ELEMENT||this.positionSize;i=i||f.length/d}this._allocate(i,!!t),this.indexStarts=e,this.vertexStarts=r,this.instanceCount=i;let u={};this._forEachGeometry((f,d)=>{let p=l[d]||f;u.vertexStart=r[d],u.indexStart=e[d];let m=d<r.length-1?r[d+1]:i;u.geometrySize=m-r[d],u.geometryIndex=d,this.updateGeometryAttributes(p,u)},a,c),this.vertexCount=e[e.length-1]}};export{ae$2 as $,en as A,pr as B,Zi as C,cf as D,ap as E,ne as F,st as G,qu as H,ns as I,Ke$1 as J,ua as K,oe as L,ge as M,jt as N,ee as O,ma as P,_e$2 as Q,on as R,Ym as S,an as T,se as U,qi as V,sp as W,Le$2 as X,Ce$2 as Y,Se$2 as Z,R as _,Dm as a,ve$2 as at,Xu as b,Iu as c,Ku as d,be$2 as et,Ls as f,Qu as g,Ps as h,B as i,he$2 as it,et as j,ef as k,Ju as l,Os as m,A as n,de$2 as nt,Er as o,ye$2 as ot,Nu as p,yp as q,Ar as r,fe$1 as rt,Hu as s,$i as t,ce$2 as tt,Ka as u,Wa as v,Zu as w,Yi as x,Wm as y,pa as z};
1318
+ //# debugId=d5f5a4fe-7d52-53c1-8a61-4495bc4e7ed5