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

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{B as jr$2,C as Ve$2,D as Y$1,E as X$2,F as et$1,G as sr$2,H as ot$1,I as f$1,J as ui$1,K as st$1,L as he$3,M as ci$1,N as de$3,Q as x,R as it$1,S as U$2,U as qe$1,V as nt$1,W as rt$1,X as v,Y as ut$1,_ as P$2,b as Re$2,c as Fe$2,et as ze$2,g as Ne$2,h as N$2,i as C$1,j as _i$1,k as Yr$2,l as Ge$2,o as Di$1,p as Je$1,q as tt$1,t as $$2,v as Qe$2,z as je$2}from"./chunk-CHv413eO.js";import{B as k$1,C as Wp$1,D as Zn$1,E as Z$1,J as pe$2,K as ni$1,L as gr$2,R as ir$2,S as Vv,U as kv,_ as Qi$1,a as Hi$1,at as ze$3,b as Uf$1,d as Le$3,et as ri$1,f as Mt$2,g as Ov,h as Oi$1,i as Gp$1,it as za$1,m as Oe$2,s as J$3,w as Xr$2,y as U$3,z as jr$3}from"./chunk-C7x5ioh5.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$95,inputs:n,output:o,operationType:a=o.type,outputBuffer:s$50}){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$50.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$2(p,$,Z)).join(`
4
+ `)}
5
+ ${i.map(({name:p,input:$})=>Q$1(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$95)}
23
+ write_result(rowIndex, result);
24
+ }
25
+ `,P=new Xr$2(s$50.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$50,P.setBindings(N);let W=s$50.device.beginComputePass({});s$50.device.statsManager.getStats(X$1).get(K$2).incrementCount(),P.dispatch(W,h.x,h.y,h.z),W.end(),s$50.device.submit(),P.destroy()}function J$2(e,t,r){if(t.isConstant)return``;return`@group(0) @binding(${r}) var<storage, read> ${e}: array<${f(t.type)}>;`}function Q$1(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$2=`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$2},inputs:e,output:t,operationType:`float32`,outputBuffer:r}),{success:!0});var le$2=`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$2=({inputs:e,output:t,target:r})=>(m({module:{name:`equalAll`,source:le$2},inputs:e,output:t,operationType:e.x.type,outputBuffer:r}),{success:!0});var g=64;function T$1(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$1(e,t){return z$1(`sourceValues`,e,t,`source_values`)}function S$1(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$1({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$2({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$1({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$2({buffer:a,type:o,size:2,length:s,stride:l,offset:i}),x=`
93
+ ${e.isConstant?``:T$1(`sourceValues`,e,0)}
94
+ ${L$1(e,o)}
95
+ ${S$1(d,e.isConstant?0:1)}
96
+ ${b(d)}
97
+ ${me$1(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 Xr$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$1(e,t,r,n){let o=f(t),[a,s]=ge$1(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$1(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$2=`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$2},inputs:e,output:t,operationType:`uint32`,outputBuffer:r}),{success:!0});var ye$1=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$1(x,h,v)).join(`
308
+ `)}
309
+ ${we$2(n,a)}
310
+ ${L$1(o,t.type)}
311
+ ${S$1(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 Xr$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$1(c,d,x)).join(`
342
+ `)}
343
+ ${z$1(`segments`,n,`uint32`)}
344
+ ${S$1(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 Xr$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 Xr$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 L=(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 Lt$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 Et$1={3042:L,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:L,2885:(r,e)=>r.cullFace(e),2929:L,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:L,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:Lt$1,36010:Lt$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:L,32824:`polygonOffset`,10752:`polygonOffset`,35977:L,32926:L,32928:L,32938:`sampleCoverage`,32939:`sampleCoverage`,3089:L,3088:(r,e)=>r.scissor(...e),2960:L,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:L,10754:L,12288:L,12289:L,12290:L,12291:L,12292:L,12293:L,12294:L,12295:L,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(r,e,t){return e[r]!==void 0?e[r]:t[r]}var vt$1={blendEquation:(r,e,t)=>r.blendEquationSeparate(T(32777,e,t),T(34877,e,t)),blendFunc:(r,e,t)=>r.blendFuncSeparate(T(32969,e,t),T(32968,e,t),T(32971,e,t),T(32970,e,t)),polygonOffset:(r,e,t)=>r.polygonOffset(T(32824,e,t),T(10752,e,t)),sampleCoverage:(r,e,t)=>r.sampleCoverage(T(32938,e,t),T(32939,e,t)),stencilFuncFront:(r,e,t)=>r.stencilFuncSeparate(1028,T(2962,e,t),T(2967,e,t),T(2963,e,t)),stencilFuncBack:(r,e,t)=>r.stencilFuncSeparate(1029,T(34816,e,t),T(36003,e,t),T(36004,e,t)),stencilOpFront:(r,e,t)=>r.stencilOpSeparate(1028,T(2964,e,t),T(2965,e,t),T(2966,e,t)),stencilOpBack:(r,e,t)=>r.stencilOpSeparate(1029,T(34817,e,t),T(34818,e,t),T(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 St$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(r,e){if(_r$1(e))return;let t={};for(let i in e){let s=Number(i),o=Et$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=vt$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$1(r){A(r,H)}function _r$1(r){for(let e in r)return!1;return!0}function Gt$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 G=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(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,Lr$1(e);for(let n in Ie$1){let i=Ie$1[n];Tr$1(e,n,i)}Ft$1(e,`getParameter`),Ft$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];Gt$1(o,a)||(t=!0,n=a,i&&!(s in i)&&(i[s]=a),this.cache[s]=o)}return{valueChanged:t,oldValue:n}}};function Ft$1(r,e){let t=r[e].bind(r);r[e]=function(i){if(i===void 0||St$1.has(i))return t(i);let s=G.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 Tr$1(r,e,t){if(!r[e])return;let n=r[e].bind(r);r[e]=function(...s){let{valueChanged:a,oldValue:l}=t(G.get(r)._updateCache,...s);return a&&n(...s),l},Object.defineProperty(r[e],"name",{value:`${e}-to-cache`,configurable:!1})}function Lr$1(r){let e=r.useProgram.bind(r);r.useProgram=function(n){let i=G.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$87,e,t){let n=``,i=l=>{let c=l.statusMessage;c&&(n||=c)};r$87.addEventListener(`webglcontextcreationerror`,i,!1);let s$43=t.failIfMajorPerformanceCaveat!==!0,o=s(r({preserveDrawingBuffer:!0},t),{failIfMajorPerformanceCaveat:!0}),a=null;try{a||=r$87.getContext(`webgl2`,o),!a&&o.failIfMajorPerformanceCaveat&&(n||="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow.");let l=!1;if(!a&&s$43&&(o.failIfMajorPerformanceCaveat=!1,a=r$87.getContext(`webgl2`,o),l=!0),a||(a=r$87.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$87.addEventListener(`webglcontextlost`,m=>u(m),!1),r$87.addEventListener(`webglcontextrestored`,m=>f(m),!1),a}finally{r$87.removeEventListener(`webglcontextcreationerror`,i,!1)}}function F$1(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);F$1(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:vr$1(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 vr$1(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$1=`EXT_texture_compression_rgtc`;var Q=`EXT_texture_compression_bptc`;var Br$1=`WEBGL_compressed_texture_etc`;var Ar$1=`WEBGL_compressed_texture_astc`;var Gr$1=`WEBGL_compressed_texture_etc1`;var Fr$1=`WEBGL_compressed_texture_pvrtc`;var Cr$1=`WEBGL_compressed_texture_atc`;var Pr$1=`EXT_texture_norm16`;var Dt$1=`EXT_render_snorm`;var Rt$1=`EXT_color_buffer_float`;var Oe$1=`snorm8-renderable-webgl`;var Me$1=`norm16-renderable-webgl`;var $e$1=`snorm16-renderable-webgl`;var Ne$1=`float16-renderable-webgl`;var ae$1=`float32-renderable-webgl`;var kr$1=`rgb9e5ufloat-renderable-webgl`;var le$1={"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$1]},"norm16-webgl":{extensions:[Pr$1]},"norm16-renderable-webgl":{features:[`norm16-webgl`]},"snorm16-renderable-webgl":{features:[`norm16-webgl`],extensions:[Dt$1]},"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$1,Q]},"texture-compression-bc5-webgl":{extensions:[V$1]},"texture-compression-bc7-webgl":{extensions:[Q]},"texture-compression-etc2":{extensions:[Br$1]},"texture-compression-astc":{extensions:[Ar$1]},"texture-compression-etc1-webgl":{extensions:[Gr$1]},"texture-compression-pvrtc-webgl":{extensions:[Fr$1]},"texture-compression-atc-webgl":{extensions:[Cr$1]}};function It$1(r){return r in le$1}function Ue$1(r,e,t){return Wt$1(r,e,t,new Set)}function Wt$1(r,e,t,n){let i=le$1[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=>!!F$1(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$1},"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$1},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326,r:ae$1},rgb9e5ufloat:{gl:35901,r:kr$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$1},"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$1},"bc4-r-snorm":{gl:36284,x:V$1},"bc5-rg-unorm":{gl:36285,x:V$1},"bc5-rg-snorm":{gl:36286,x:V$1},"bc6h-rgb-ufloat":{gl:36495,x:Q},"bc6h-rgb-float":{gl:36494,x:Q},"bc7-rgba-unorm":{gl:36492,x:Q},"bc7-rgba-unorm-srgb":{gl:36493,x:Q},"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&&!!F$1(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&&Dr$1(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 Dr$1(r,e,t){let n=ce$1[e],i=n?.gl;if(i===void 0||n?.x&&!F$1(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$1(r){let e=ce$1[r],t=Ir$1(r),n=x.getInfo(r);return n.compressed&&(e.dataFormat=t),{internalFormat:t,format:e?.dataFormat||Rr$1(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 Rr$1(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 Ir$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=>jr$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$1=class extends Ne$2{gl;extensions;testedFeatures=new Set;constructor(e,t,n){super([],n),this.gl=e,this.extensions=t,F$1(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$1)]}getWebGLFeature(e){let t=$t$1[e];return typeof t==`string`?!!F$1(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 Je$1{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 ${Or$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=Wr$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 Wr$1(r){return r<34069?r+34069:r}function Or$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 Ve$2{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=class extends je$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=null;var Ve$1=null;var Nt=!1;async function Ut$1(){if(!ge){Qe$1();return}await ge.load()}function Vt$1(r,e){return ge?ge.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||(Nt=!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=Mr$1(this.props.usage),this.glUsage=$r$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 Mr$1(r){return r&P$2.INDEX?34963:r&P$2.VERTEX?34962:r&P$2.UNIFORM?35345:34962}function $r$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(o||`info`),lineNum:0,linePos:0});continue}t.push({message:b.trim(),type:pe(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(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(a),lineNum:f,linePos:m})}return t}function pe(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=Nr$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 Nr$1(r){return r.split(/\r?\n/).find(e=>e.trim())?.trim()}function Yt$1(r,e,t,n){if(zr$1(e))return n(r);let i=r;i.pushState();try{return Ur$1(r,e),A(i.gl,t),n(r)}finally{i.popState()}}function Ur$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)}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(Qr$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(`stencilPassOperation`,e.stencilPassOperation),s=Xe(`stencilFailOperation`,e.stencilFailOperation),o=Xe(`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)}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(`blendColorSrcFactor`,e.blendColorSrcFactor||`one`),a=ye(`blendColorDstFactor`,e.blendColorDstFactor||`zero`),l=ye(`blendAlphaSrcFactor`,e.blendAlphaSrcFactor||`one`),c=ye(`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(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(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 Vr$1(r,e){return`Illegal parameter ${e} for ${r}`}function $$1(r,e,t){if(!(e in t))throw new Error(Vr$1(r,e));return t[e]}function Qr$1(r,e){return e}function zr$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]=Xr$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 Xr$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)}}}};function P$1(r,e,t){if(jr$1(e))return t(r);let{nocatch:n=!0}=e,i=G.get(r);i.push(),A(r,e);let s;if(n)s=t(r),i.pop();else try{s=t(r)}finally{i.pop()}return s}function jr$1(r){for(let e in r)return!1;return!0}var R$1=class extends Qe$2{device;gl;handle;texture;constructor(e,t){super(e,r(r({},C$1.defaultProps),t)),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=t.texture}};function Te$1(r){return Hr$1[r]}var Hr$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 C$1{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$1(this.props.format);if(this.glTarget=qr$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(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)}}),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(this.glTarget,this.dimension,d),p=t.flipY?{37440:!0}:{},E=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 E.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,()=>{E.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$44,depthOrArrayLayers:o,mipLevel:a,byteOffset:l,x:c,y:u,z:f}=n,{glFormat:m,glType:d,compressed:b}=this,y=Z(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,E=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,E,()=>{switch(this.dimension){case`2d`:case`cube`:this.gl.texSubImage2D(y,a,c,u,i,s$44,m,d,l);break;case`2d-array`:case`3d`:this.gl.texSubImage3D(y,a,c,u,f,i,s$44,o,m,d,l)}}),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$45,height:o,depthOrArrayLayers:a,mipLevel:l,x:c,y:u,z:f,byteOffset:m}=n,{glFormat:d,glType:b,compressed:y}=this,x=Z(this.glTarget,this.dimension,f),p;if(!y){let{bytesPerPixel:z}=this.device.getTextureFormatInfo(this.format);z&&(p=n.bytesPerRow/z)}let E=this.compressed?{}:s(r({3317:this.byteAlignment},p!==void 0?{3314:p}:{}),{32878:n.rowsPerImage}),w=Kr$1(i,m),S=y?Yr$1(i,m):i,v=this._getMipLevelSize(l),O=c===0&&u===0&&f===0&&s$45===v.width&&o===v.height&&a===v.depthOrArrayLayers;this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,null),P$1(this.gl,E,()=>{switch(this.dimension){case`2d`:case`cube`:y?O?this.gl.compressedTexImage2D(x,l,d,s$45,o,0,S):this.gl.compressedTexSubImage2D(x,l,c,u,s$45,o,d,S):this.gl.texSubImage2D(x,l,c,u,s$45,o,d,b,i,w);break;case`2d-array`:case`3d`:y?O?this.gl.compressedTexImage3D(x,l,d,s$45,o,a,0,S):this.gl.compressedTexSubImage3D(x,l,c,u,f,s$45,o,a,d,S):this.gl.texSubImage3D(x,l,c,u,f,s$45,o,a,d,b,i,w)}}),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),i=Te$1(this.glType),s=Re$2(i),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(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.level>=2&&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)}}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 Yr$1(r,e=0){return e?new r.constructor(r.buffer,r.byteOffset+e,(r.byteLength-e)/r.BYTES_PER_ELEMENT):r}function Kr$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 qr$1(r){switch(r){case`1d`:break;case`2d`:return 3553;case`3d`:return 32879;case`cube`:return 34067;case`2d-array`:return 35866}throw new Error(r)}function Z(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 Jr$1[r]}function Le$1(r){return Zr$1[r]}function Ee$1(r){return!!Jt$1[r]}function Zt$1(r){return Jt$1[r]}var Zr$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 Jr$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=en$1(r,e);let i=nn$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=rn$1(r,e),o=0;for(let l of s)if(Ee$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=tn$1(r,e);return a?.length&&(n.varyings=a),n}function en$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=Le$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 tn$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,c=Le$1(a),{type:u,components:f}=he$3(c);t.push({location:i,name:o,type:u,size:l*f})}return t.sort((i,s)=>i.location-s.location),t}function rn$1(r$88,e){let t=[],n=r$88.getProgramParameter(e,35718);for(let i=0;i<n;i++){let s$46=r$88.getActiveUniform(e,i);if(!s$46)throw new Error(`activeInfo`);let{name:o,size:a,type:l}=s$46,{name:c,isArray:u}=fn$1(o),f=r$88.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$88.getUniformLocation(e,b);let y=s(r({},m),{name:b,location:f});t.push(y)}}return t}function nn$1(r,e,t){let n=[],i=on$1(r,e,t);for(let[o,a]of i){n.push(a);try{sn$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 sn$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 on$1(r$89,e,t){let n=new Map;for(let s of t.uniformBlockLayouts||[])n.set(s.name,ln$1(s));for(let s of t.shaderLayout?.bindings||[])un$1(s)&&n.set(s.name,s);let i=new Map;for(let s of n.values()){let o=an$1(r$89,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 an$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,S)=>{let v=r.getActiveUniformBlockParameter(e,t,w);if(v==null)throw new Error(`Failed to reflect WebGL uniform block "${i}": ${S} returned null`);return v},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$1(r,e,c,35383,`UNIFORM_TYPE`,i,l),f=J$1(r,e,c,35384,`UNIFORM_SIZE`,i,l),m=J$1(r,e,c,35386,`UNIFORM_BLOCK_INDEX`,i,l),d=J$1(r,e,c,35387,`UNIFORM_OFFSET`,i,l),b=J$1(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 S=c[w],v=r.getActiveUniform(e,S);if(!v)throw new Error(`Failed to reflect WebGL uniform block "${i}": getActiveUniform(${S}) returned null`);let O=N$1(u[w],i,`UNIFORM_TYPE[${w}]`,1),z=N$1(f[w],i,`UNIFORM_SIZE[${w}]`,1),xr=N$1(d[w],i,`UNIFORM_OFFSET[${w}]`,0),wr=N$1(b[w],i,`UNIFORM_ARRAY_STRIDE[${w}]`,0);if(v.type!==O||v.size!==z)throw new Error(`Failed to reflect WebGL uniform block "${i}": getActiveUniform(${S}) disagrees with getActiveUniforms`);y.push({name:v.name,format:Le$1(O),arrayLength:z,byteOffset:xr,byteStride:wr})}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)),E=x.name.replace(/Uniforms$/,``);if(p.size===1&&!p.has(x.name)&&!p.has(E)){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 ("${E}"). Prefer matching the instance name to one of those to avoid confusing silent mismatches.`)()}return x}function J$1(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 ln$1(r){let e=ut$1(r.uniformTypes,{layout:`std140`}),t=cn$1(r.uniformTypes,e.fields);return{type:`uniform`,name:r.name,group:0,location:0,minBindingSize:e.byteLength,uniforms:t}}function cn$1(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 un$1(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 fn$1(r){if(r[r.length-1]!==`]`)return{name:r,length:1,isArray:!1};let t=/([^[]*)(\[[0-9]+\])?/.exec(r);return{name:de$3(t?.[1],`Failed to parse GLSL uniform name ${r}`),length:t?.[2]?1:0,isArray:!!t?.[2]}}var ve$1=class extends U$2{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?dn$1(this.introspectedLayout,t.shaderLayout):this.introspectedLayout}destroy(){this.destroyed||(this.sharedRenderPipeline&&!this.props._sharedRenderPipeline&&this.sharedRenderPipeline.destroy(),this.destroyResource())}setBindings(e,t){let n=ui$1(ci$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?ui$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 dn$1(r$90,e){let t=s(r({},r$90),{attributes:r$90.attributes.map(n=>r({},n)),bindings:r$90.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 Se$1=class extends qe$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()}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()}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&&Ee$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 rt$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`:hn$1(this.device,t.options);break;case`copy-buffer-to-texture`:mn$1(this.device,t.options);break;case`copy-texture-to-buffer`:gn$1(this.device,t.options);break;case`copy-texture-to-texture`:pn$1(this.device,t.options);break;default:throw new Error(t.name)}}};function hn$1(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 mn$1(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 gn$1(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 C$1){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,E=o||d.height,S=ue$1(de$3(d.colorAttachments[0]).texture.props.format),v=S.format,O=S.type;r.gl.bindBuffer(35051,x.handle),y=r.gl.bindFramebuffer(36160,d.handle),r.gl.readPixels(l[0],l[1],p,E,v,O,u)}finally{r.gl.bindBuffer(35051,null),y!==void 0&&r.gl.bindFramebuffer(36160,y),b&&d.destroy()}}function pn$1(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,E;if(o instanceof I)p=o,a=Number.isFinite(a)?a:p.width,l=Number.isFinite(l)?l:p.height,p._bind(0),E=p.glTarget;else throw new Error(`invalid destination`);switch(E){case 3553:case 34067:r.gl.copyTexSubImage2D(E,n,d,b,f,m,a,l);break;case 35866:case 32879:r.gl.copyTexSubImage3D(E,n,d,b,y,f,m,a,l)}p&&p._unbind(),r.gl.bindFramebuffer(36160,x),u&&c.destroy()}function or$1(r){if(r instanceof C$1){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 bn$1=[1,2,4,8];var Ae$1=class extends et$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=bn$1.map(n=>!!(n&e.colorMask))),this.glParameters=t,A(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=ui$1(ci$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 tt$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 Ge$1=class r extends it$1{get[Symbol.toStringTag](){return`VertexArray`}device;handle;attributeInfosByLocation;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(e){return sr$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=yn$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||=!xn$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 yn$1(r){return Array.isArray(r)?new Float32Array(r):r}function xn$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 wn$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 _n$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 Tn$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 Ln$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$91){r$91.getExtension(`EXT_color_buffer_float`);let e=s(r({},wn$1),{WEBGL_disjoint_timer_query:r$91.getExtension(`EXT_disjoint_timer_query_webgl2`),WEBGL_draw_buffers:_n$1(r$91),OES_vertex_array_object:Tn$1(r$91),ANGLE_instanced_arrays:Ln$1(r$91)}),t=r$91.getExtension.bind(r$91);r$91.getExtension=function(i){return t(i)||(i in e?e[i]:null)};let n=r$91.getSupportedExtensions;r$91.getSupportedExtensions=function(){return(n.apply(r$91)||[])?.concat(Object.keys(e))}}var te$1=1;var Ye$1=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-BxefRtM9.js`);if(e instanceof n)return e;let i=n.getDeviceFromContext(e);if(i)return i;if(!vn$1(e))throw new Error(`Invalid WebGL2RenderingContext`);t=fr$1(t),await dr$1(t);let s$47=t.createCanvasContext===!0?{}:t.createCanvasContext;return new n(s(r({},t),{_handle:e,createCanvasContext:r({canvas:e.canvas,autoResize:!1},s$47)}))}async create(e={}){let{WebGLDevice:t}=await import(`./chunk-BxefRtM9.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 vn$1(r){return typeof WebGL2RenderingContext<`u`&&r instanceof WebGL2RenderingContext?!0:!!(r&&typeof r.createVertexArray==`function`)}var Sn$1=new Ye$1;function fr$1(r$92){return s(r({},r$92),{debug:r$92.debug??Fe$2.defaultProps.debug,debugWebGL:r$92.debugWebGL??Fe$2.defaultProps.debugWebGL,debugSpectorJS:r$92.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 Fe$1=class extends ot$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 st$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 nt$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=An$1(s,u,c,o,a,l);let x=$$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 Je$1?{framebuffer:r,deleteFramebuffer:!1}:{framebuffer:Bn$1(r),deleteFramebuffer:!0}}function Bn$1(r$93,e){let{device:t,width:n,height:i,id:s$48}=r$93;return t.createFramebuffer(s(r({},e),{id:`framebuffer-for-${s$48}`,width:n,height:i,colorAttachments:[r$93]}))}function An$1(r,e,t,n,i,s){if(r)return r;e||=5121;let o=Te$1(e),a=$$2.getTypedArrayConstructor(o),l=qe(t);return new a(n*i*l)}function yr$1(r){let e=new Map;for(let t in r){let n=r[t];if(t<`a`){let i=e.get(n);e.set(n,i?`${i}, GL.${t}`:`GL.${t}`)}}return e}var Ke$1=class r$94 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;_glKeyByValue=null;_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$94.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$49=r({},e.webgl);t.alphaMode===`premultiplied`&&(s$49.premultipliedAlpha=!0),e.powerPreference!==void 0&&(s$49.powerPreference=e.powerPreference),e.failIfMajorPerformanceCaveat!==void 0&&(s$49.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$49);if(!a)throw new Error(`WebGL context creation failed`);if(i=r$94.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$1(this.gl,this.extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new G(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(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 Ge$1(this,e)}createTransformFeedback(e){return new Ce$1(this,e)}createQuerySet(e){return new Pe$1(this,e)}createFence(){return new Fe$1(this)}createRenderPipeline(e){return new ve$1(this,e)}_createSharedRenderPipelineWebGL(e){return new Se$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(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$1(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(){G.get(this.gl).push()}popState(){G.get(this.gl).pop()}getGLKey(e,t){return this._getGLKeyByValue().get(Number(e))||(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),{})}_getGLKeyByValue(){return this._glKeyByValue??=yr$1(this.gl),this._glKeyByValue}setConstantAttributeWebGL(e,t){let n=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(n).fill(null);let i=this._constants[e];switch(i&&Pn$1(i,t)&&f$1.info(1,`setConstantAttributeWebGL(${e}) could have been skipped, value unchanged`)(),this._constants[e]=t,t.constructor){case Float32Array:Gn$1(this,e,t);break;case Int32Array:Fn$1(this,e,t);break;case Uint32Array:Cn$1(this,e,t);break;default:throw new Error(`constant`)}}getExtension(e){return F$1(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 Gn$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)}}function Fn$1(r,e,t){r.gl.vertexAttribI4iv(e,t)}function Cn$1(r,e,t){r.gl.vertexAttribI4uiv(e,t)}function Pn$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 Dl=`Queued Requests`;var Bl=`Active Requests`;var jl=`Cancelled Requests`;var Nl=`Queued Requests Ever`;var Ul=`Active Requests Ever`;var Vl={id:`request-scheduler`,throttleRequests:!0,maxRequests:6,debounceTime:0};var gi=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(t={}){this.props=r(r({},Vl),t),this.stats=new N$2({id:this.props.id}),this.stats.get(Dl),this.stats.get(Bl),this.stats.get(jl),this.stats.get(Nl),this.stats.get(Ul)}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},s=new Promise(n=>(r.resolve=n,r));return this.requestQueue.push(r),this.requestMap.set(t,s),this._issueNewRequests(),s}_issueRequest(t){let{handle:e,resolve:r}=t,s=!1,n=()=>{s||(s=!0,this.requestMap.delete(e),this.activeRequestCount--,this.updateTimer===null&&(this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),0)))};return this.activeRequestCount++,r?r({done:n}):Promise.resolve({done:n})}_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 As=class{static type=`template`;static testURL=t=>!1};async function zl(i,t,e,r){return r._parse(i,t,e,r)}function ut(i,t){if(!i)throw new Error(t||`loader assertion failed.`)}var yt={self:typeof self<`u`&&self,window:typeof window<`u`&&window,global:typeof global<`u`&&global,document:typeof document<`u`&&document};yt.self||yt.window||yt.global;yt.window||yt.self||yt.global;yt.global||yt.self||yt.window;yt.document;var _t=!!(typeof process!=`object`||String(process)!==`[object process]`||process.browser);var Po=typeof process<`u`&&process.version&&/v([0-9]*)/.exec(process.version);Po&&parseFloat(Po[1]);var Ms=`4.5.4`;var Hl=Ms[0]>=`0`&&Ms[0]<=`9`?`v${Ms}`:``;function ql(){let i=new v({id:`loaders.gl`});return globalThis.loaders||={},globalThis.loaders.log=i,globalThis.loaders.version=Hl,globalThis.probe||={},globalThis.probe.loaders=i,i}var Cs=ql();var Zl=i=>typeof i==`boolean`;var wt=i=>typeof i==`function`;var bt=i=>i!==null&&typeof i==`object`;var yi=i=>bt(i)&&i.constructor==={}.constructor;var Is=i=>typeof SharedArrayBuffer<`u`&&i instanceof SharedArrayBuffer;var _e=i=>bt(i)&&typeof i.byteLength==`number`&&typeof i.slice==`function`;var Rs=i=>!!i&&wt(i[Symbol.iterator]);var Ls=i=>!!i&&wt(i[Symbol.asyncIterator]);var tt=i=>typeof Response<`u`&&i instanceof Response||bt(i)&&wt(i.arrayBuffer)&&wt(i.text)&&wt(i.json);var et=i=>typeof Blob<`u`&&i instanceof Blob;var Eo=i=>typeof ReadableStream<`u`&&i instanceof ReadableStream||bt(i)&&wt(i.tee)&&wt(i.cancel)&&wt(i.getReader);var To=i=>bt(i)&&wt(i.read)&&wt(i.pipe)&&Zl(i.readable);var Ke=i=>Eo(i)||To(i);function Je(i,t){return So(i||{},t)}function So(i,t,e=0){if(e>3)return t;let r$1=r({},i);for(let[s,n]of Object.entries(t))n&&typeof n==`object`&&!Array.isArray(n)?r$1[s]=So(r$1[s]||{},t[s],e+1):r$1[s]=t[s];return r$1}function Ao(i){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,i)}function Xl(i){return globalThis.loaders?.modules?.[i]||null}var Mo=`latest`;function Kl(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version=`4.5.4`),globalThis._loadersgl_.version}var _i=Kl();function $(i,t){if(!i)throw new Error(t||`loaders.gl assertion failed.`)}var vt={self:typeof self<`u`&&self,window:typeof window<`u`&&window,global:typeof global<`u`&&global,document:typeof document<`u`&&document};vt.self||vt.window||vt.global;vt.window||vt.self||vt.global;vt.global||vt.self||vt.window;vt.document;var F=typeof process!=`object`||String(process)!==`[object process]`||process.browser;var Qe=typeof importScripts==`function`;var Io=typeof window<`u`&&typeof window.orientation<`u`;var Co=typeof process<`u`&&process.version&&/v([0-9]*)/.exec(process.version);Co&&parseFloat(Co[1]);var tr=class{name;workerThread;isRunning=!0;result;_resolve=()=>{};_reject=()=>{};constructor(t,e){this.name=t,this.workerThread=e,this.result=new Promise((r,s)=>{this._resolve=r,this._reject=s})}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 we=class{terminate(){}};var ks=new Map;function Ro(i){$(i.source&&!i.url||!i.source&&i.url);let t=ks.get(i.source||i.url);return t||(i.url&&(t=Jl(i.url),ks.set(i.url,t)),i.source&&(t=Lo(i.source),ks.set(i.source,t))),$(t),t}function Jl(i){if(!i.startsWith(`http`))return i;return Lo(Ql(i))}function Lo(i){let t=new Blob([i],{type:`application/javascript`});return URL.createObjectURL(t)}function Ql(i){return`try {
408
+ importScripts('${i}');
409
+ } catch (error) {
410
+ console.error(error);
411
+ throw error;
412
+ }`}function Os(i,t=!0,e){let r=e||new Set;if(i){if(ko(i))r.add(i);else if(ko(i.buffer))r.add(i.buffer);else if(!ArrayBuffer.isView(i)){if(t&&typeof i==`object`)for(let s in i)Os(i[s],t,r)}}return e===void 0?Array.from(r):[]}function ko(i){return i?i instanceof ArrayBuffer||typeof MessagePort<`u`&&i instanceof MessagePort||typeof ImageBitmap<`u`&&i instanceof ImageBitmap||typeof OffscreenCanvas<`u`&&i instanceof OffscreenCanvas:!1}var Ds=()=>{};var Ut=class{name;source;url;terminated=!1;worker;onMessage;onError;_loadableURL=``;static isSupported(){return typeof Worker<`u`&&F||typeof we<`u`&&!F}constructor(t){let{name:e,source:r,url:s}=t;$(r||s),this.name=e,this.source=r,this.url=s,this.onMessage=Ds,this.onError=n=>console.log(n),this.worker=F?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Ds,this.onError=Ds,this.worker.terminate(),this.terminated=!0}get isRunning(){return!!this.onMessage}postMessage(t,e){e=e||Os(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=Ro({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 we(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 we(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 er=class{name=`unnamed`;source;url;maxConcurrency=1;maxMobileConcurrency=1;onDebug=()=>{};reuseWorkers=!0;props={};jobQueue=[];idleQueue=[];count=0;isDestroyed=!1;static isSupported(){return Ut.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=(s,n,o)=>s.done(o),r=(s,n)=>s.error(n)){let s=new Promise(n=>(this.jobQueue.push({name:t,onMessage:e,onError:r,onStart:n}),this));return this._startQueuedJob(),await s}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 tr(e.name,t);t.onMessage=s=>e.onMessage(r,s.type,s.payload),t.onError=s=>e.onError(r,s),e.onStart(r);try{await r.result}catch(s){console.error(`Worker exception: ${s}`)}finally{this.returnWorkerToQueue(t)}}}returnWorkerToQueue(t){!F||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 Ut({name:`${this.name.toLowerCase()} (#${this.count} of ${this.maxConcurrency})`,source:this.source,url:this.url})}return null}_getMaxConcurrency(){return Io?this.maxMobileConcurrency:this.maxConcurrency}};var tu={maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,onDebug:()=>{}};var Zt=class i{props;workerPools=new Map;static _workerFarm;static isSupported(){return Ut.isSupported()}static getWorkerFarm(t={}){return i._workerFarm=i._workerFarm||new i({}),i._workerFarm.setProps(t),i._workerFarm}constructor(t){this.props=r({},tu),this.setProps(t),this.workerPools=new Map}destroy(){for(let t of this.workerPools.values())t.destroy();this.workerPools=new Map}setProps(t){this.props=r(r({},this.props),t);for(let e of this.workerPools.values())e.setProps(this._getWorkerPoolProps())}getWorkerPool(t){let{name:e,source:r,url:s}=t,n=this.workerPools.get(e);return n||(n=new er({name:e,source:r,url:s}),n.setProps(this._getWorkerPoolProps()),this.workerPools.set(e,n)),n}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}};function Bs(i,t={}){let e=t[i.id]||{},r=F?i.workerFile||`${i.id}-worker.js`:`${i.id}-worker-node.js`,s=e.workerUrl;if(!s&&i.id===`compression`&&(s=t.workerUrl),(t._workerType||t?.core?._workerType)===`test`&&(F?s=`modules/${i.module}/dist/${r}`:s=`modules/${i.module}/src/workers/${i.id}-worker-node.ts`),!s){let o=i.version;o===`latest`&&(o=Mo);let a=o?`@${o}`:``;s=`https://unpkg.com/@loaders.gl/${i.module}${a}/dist/${r}`}return $(s),s}function js(i,t=_i){$(i,`no worker provided`);let e=i.version;return!(!t||!e)}var Ns={};function eu(i={}){let t=i.useLocalLibraries??i.core?.useLocalLibraries,e=i.CDN??i.core?.CDN,r$2=i.modules;return r(r(r({},t!==void 0?{useLocalLibraries:t}:{}),e!==void 0?{CDN:e}:{}),r$2!==void 0?{modules:r$2}:{})}async function ru(i,t=null,e={},r=null){if(t){let s=e.modules?.[r||i];if(s!==void 0&&typeof s!=`string`)return s;i=Oo(i,t,e,r)}return Ns[i]=Ns[i]||iu(i),await Ns[i]}function Oo(i,t,e={},r=null){if(e?.core)throw new Error(`loadLibrary: options.core must be pre-normalized`);r=r||i;let s=e.modules||{};return typeof s[r]==`string`?s[r]:!e.useLocalLibraries&&i.startsWith(`http`)?i:F?e.CDN?($(e.CDN.startsWith(`http`)),`${e.CDN}/${t}@${_i}/dist/libs/${r}`):Qe?`../src/libs/${r}`:`modules/${t}/src/libs/${r}`:`modules/${t}/dist/libs/${r}`}async function iu(i){if(i.endsWith(`wasm`))return await nu(i);if(!F){let{requireFromFile:e}=globalThis.loaders||{};try{let r=await e?.(i);return r||!i.includes(`/dist/libs/`)?r:await e?.(i.replace(`/dist/libs/`,`/src/libs/`))}catch(r){if(i.includes(`/dist/libs/`))try{return await e?.(i.replace(`/dist/libs/`,`/src/libs/`))}catch{}return console.error(r),null}}if(Qe)return importScripts(i);return su(await ou(i),i)}function su(i,t){if(!F){let{requireFromString:r}=globalThis.loaders||{};return r?.(i,t)}if(Qe)return eval.call(globalThis,i),null;let e=document.createElement(`script`);e.id=t;try{e.appendChild(document.createTextNode(i))}catch{e.text=i}return document.body.appendChild(e),null}async function nu(i){let{readFileAsArrayBuffer:t}=globalThis.loaders||{};if(F||!t||i.startsWith(`http`))return await(await fetch(i)).arrayBuffer();try{return await t(i)}catch{if(i.includes(`/dist/libs/`))return await t(i.replace(`/dist/libs/`,`/src/libs/`));throw new Error(`Failed to load ArrayBuffer from ${i}`)}}async function ou(i){let{readFileAsText:t}=globalThis.loaders||{};if(F||!t||i.startsWith(`http`))return await(await fetch(i)).text();try{return await t(i)}catch{if(i.includes(`/dist/libs/`))return await t(i.replace(`/dist/libs/`,`/src/libs/`));throw new Error(`Failed to load text from ${i}`)}}function Us(i,t){if(!Zt.isSupported())return!1;let e=t?._nodeWorkers??t?.core?._nodeWorkers;if(!F&&!e)return!1;let r=t?.worker??t?.core?.worker;return!!(i.worker&&r)}async function Vs(i,t,e,r,s){let n=i.id,o=Bs(i,e),c=Zt.getWorkerFarm(e?.core).getWorkerPool({name:n,url:o});e=JSON.parse(JSON.stringify(e||{})),e._workerLoaderId=i.id,r=JSON.parse(JSON.stringify(r||{}));let l=await c.startJob(`process-on-worker`,au.bind(null,s));return l.postMessage(`process`,{input:t,options:e,context:r}),await(await l.result).result}async function au(i,t,e,r){switch(e){case`done`:t.done(r);break;case`error`:t.error(new Error(r.error));break;case`process`:let{id:s,input:n,options:o}=r;try{let a=await i(n,o);t.postMessage(`done`,{id:s,result:a})}catch(a){let c=a instanceof Error?a.message:`unknown error`;t.postMessage(`error`,{id:s,error:c})}break;default:console.warn(`parse-with-worker unknown message ${e}`)}}function Bo(i,t=5){return typeof i==`string`?i.slice(0,t):ArrayBuffer.isView(i)?Do(i.buffer,i.byteOffset,t):i instanceof ArrayBuffer?Do(i,0,t):``}function Do(i,t,e){if(i.byteLength<=t+e)return``;let r=new DataView(i),s=``;for(let n=0;n<e;n++)s+=String.fromCharCode(r.getUint8(t+n));return s}function cu(i){try{return JSON.parse(i)}catch{throw new Error(`Failed to parse JSON from data starting with "${Bo(i)}"`)}}function zs(i,t,e){if(e=e||i.byteLength,i.byteLength<e||t.byteLength<e)return!1;let r=new Uint8Array(i),s=new Uint8Array(t);for(let n=0;n<r.length;++n)if(r[n]!==s[n])return!1;return!0}function Fs(...i){return jo(i)}function jo(i){let t=i.map(n=>n instanceof ArrayBuffer?new Uint8Array(n):n),e=t.reduce((n,o)=>n+o.byteLength,0),r=new Uint8Array(e),s=0;for(let n of t)r.set(n,s),s+=n.byteLength;return r.buffer}function lu(...i){let t=i,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 s=new e(t.reduce((o,a)=>o+a.length,0)),n=0;for(let o of t)s.set(o,n),n+=o.length;return s}function uu(i,t,e){let r=e!==void 0?new Uint8Array(i).subarray(t,t+e):new Uint8Array(i).subarray(t);return new Uint8Array(r).buffer}function No(i,t){return ut(i>=0),ut(t>0),i+(t-1)&~(t-1)}function fu(i,t,e){let r;if(i instanceof ArrayBuffer)r=new Uint8Array(i);else{let s=i.byteOffset,n=i.byteLength;r=new Uint8Array(i.buffer||i.arrayBuffer,s,n)}return t.set(r,e),e+No(r.byteLength,4)}async function Ws(i){let t=[];for await(let e of i)t.push(hu(e));return Fs(...t)}function hu(i){if(i instanceof ArrayBuffer)return i;if(ArrayBuffer.isView(i)){let{buffer:t,byteOffset:e,byteLength:r}=i;return Uo(t,e,r)}return Uo(i)}function Uo(i,t=0,e=i.byteLength-t){let r=new Uint8Array(i,t,e),s=new Uint8Array(r.length);return s.set(r),s.buffer}var du=``;var Vo={};function rr(i){for(let t in Vo)if(i.startsWith(t)){let e=Vo[t];i=i.replace(t,e)}return!i.startsWith(`http://`)&&!i.startsWith(`https://`)&&(i=`${du}${i}`),i}function bi(i){return i&&typeof i==`object`&&i.isBuffer}function be(i){if(bi(i))return i;if(i instanceof ArrayBuffer)return i;if(Is(i))return wi(i);if(ArrayBuffer.isView(i)){let t=i.buffer;return i.byteOffset===0&&i.byteLength===i.buffer.byteLength?t:t.slice(i.byteOffset,i.byteOffset+i.byteLength)}if(typeof i==`string`){let t=i;return new TextEncoder().encode(t).buffer}if(i&&typeof i==`object`&&i._toArrayBuffer)return i._toArrayBuffer();throw new Error(`toArrayBuffer`)}function ir(i){if(i instanceof ArrayBuffer)return i;if(Is(i))return wi(i);let{buffer:t,byteOffset:e,byteLength:r}=i;return t instanceof ArrayBuffer&&e===0&&r===t.byteLength?t:wi(t,e,r)}function wi(i,t=0,e=i.byteLength-t){let r=new Uint8Array(i,t,e),s=new Uint8Array(r.length);return s.set(r),s.buffer}function Gs(i){return ArrayBuffer.isView(i)?i:new Uint8Array(i)}var Mt={};w$1(Mt,{dirname:()=>mu,filename:()=>pu,join:()=>gu,resolve:()=>yu});function zo(){if(typeof process<`u`&&typeof process.cwd<`u`)return process.cwd();let i=window.location?.pathname;return i?.slice(0,i.lastIndexOf(`/`)+1)||``}function pu(i){let t=i?i.lastIndexOf(`/`):-1;return t>=0?i.substr(t+1):i}function mu(i){let t=i?i.lastIndexOf(`/`):-1;return t>=0?i.substr(0,t):``}function gu(...i){return i=i.map((e,r)=>(r&&(e=e.replace(new RegExp(`^/`),``)),r!==i.length-1&&(e=e.replace(new RegExp(`/$`),``)),e)),i.join(`/`)}function yu(...i){let t=[];for(let n=0;n<i.length;n++)t[n]=i[n];let e=``,r=!1,s;for(let n=t.length-1;n>=-1&&!r;n--){let o;n>=0?o=t[n]:(s===void 0&&(s=zo()),o=s),o.length!==0&&(e=`${o}/${e}`,r=o.charCodeAt(0)===sr)}return e=_u(e,!r),r?`/${e}`:e.length>0?e:`.`}var sr=47;var Ys=46;function _u(i,t){let e=``,r=-1,s=0,n,o=!1;for(let a=0;a<=i.length;++a){if(a<i.length)n=i.charCodeAt(a);else{if(n===sr)break;n=sr}if(n===sr){if(!(r===a-1||s===1))if(r!==a-1&&s===2){if(e.length<2||!o||e.charCodeAt(e.length-1)!==Ys||e.charCodeAt(e.length-2)!==Ys){if(e.length>2){let c=e.length-1,l=c;for(;l>=0&&e.charCodeAt(l)!==sr;--l);if(l!==c){e=l===-1?``:e.slice(0,l),r=a,s=0,o=!1;continue}}else if(e.length===2||e.length===1){e=``,r=a,s=0,o=!1;continue}}t&&(e.length>0?e+=`/..`:e=`..`,o=!0)}else{let c=i.slice(r+1,a);e.length>0?e+=`/${c}`:e=c,o=!1}r=a,s=0}else n===Ys&&s!==-1?++s:s=-1}return e}var $s=class i{static defaultOptions={core:{type:`auto`,attributions:[],loadOptions:{},loaders:[]}};optionsType;options;data;url;loadOptions;fetch;_needsRefresh=!0;constructor(t,e,r$3){r$3?this.options=Je(s(r({},r$3),{core:i.defaultOptions}),e):this.options=r({},e),this.data=t,this.url=typeof t==`string`?rr(t):``,this.loadOptions=bu(this.options.core?.loadOptions),this.fetch=wu(this.loadOptions)}setProps(t){this.options=Object.assign(this.options,t),this.setNeedsRefresh()}setNeedsRefresh(){this._needsRefresh=!0}getNeedsRefresh(t=!0){let e=this._needsRefresh;return t&&(this._needsRefresh=!1),e}};function wu(i){let t=i?.core?.fetch;if(t&&typeof t==`function`)return(r,s)=>t(r,s);let e=i?.fetch;return e&&typeof e!=`function`?r=>fetch(r,e):r=>fetch(r)}function bu(i){let t=r({},i);i?.core&&(t.core=r({},i.core));let e=typeof t.baseUri==`string`?t.baseUri:void 0,r$4=typeof t.baseUrl==`string`?t.baseUrl:void 0;return(e!==void 0||r$4!==void 0)&&(t.core||={},t.core.baseUrl===void 0&&(t.core.baseUrl=r$4??e),delete t.baseUri,delete t.baseUrl),t}function vu(i,t){return new Promise((e,r)=>{let s=!1;function n(a){s||(s=!0,r(a))}function o(a){if(!s){s=!0;try{e(t(a))}catch(c){r(c)}}}try{i(o,n)?.then(o,n)}catch(a){n(a)}})}function nr(i){return i?(Array.isArray(i)&&(i=i[0]),Array.isArray(i?.extensions)):!1}function or(i){ut(i,`null loader`),ut(nr(i),`invalid loader`);let t;return Array.isArray(i)&&(t=i[1],i=i[0],i=s(r({},i),{options:r(r({},i.options),t)})),(i?.parseTextSync||i?.parseText)&&(i.text=!0),i.text||(i.binary=!0),i}var vi=class extends Error{constructor(t,e){super(t),this.reason=e.reason,this.url=e.url,this.response=e.response}reason;url;response};var Eu=/^data:([-\w.]+\/[-\w.+]+)(;|,)/;var Tu=/^([-\w.]+\/[-\w.+]+)/;function Hs(i,t){return i.toLowerCase()===t.toLowerCase()}function Fo(i){let t=Tu.exec(i);return t?t[1]:i}function qs(i){let t=Eu.exec(i);return t?t[1]:``}var Wo=/\?.*/;function Go(i){let t=i.match(Wo);return t&&t[0]}function Vt(i){return i.replace(Wo,``)}function Yo(i){if(i.length<50)return i;let t=i.slice(i.length-15);return`${i.substr(0,32)}...${t}`}function Xt(i){return tt(i)?i.url:et(i)?(`name`in i?i.name:``)||``:typeof i==`string`?i:``}function ve(i){if(tt(i)){let t=i.headers.get(`content-type`)||``,e=Vt(i.url);return Fo(t)||qs(e)}return et(i)?i.type||``:typeof i==`string`?qs(i):``}function $o(i){return tt(i)?i.headers[`content-length`]||-1:et(i)?i.size:typeof i==`string`?i.length:i instanceof ArrayBuffer||ArrayBuffer.isView(i)?i.byteLength:-1}async function xi(i){if(tt(i))return i;let t={},e=$o(i);e>=0&&(t[`content-length`]=String(e));let r=Xt(i),s=ve(i);s&&(t[`content-type`]=s);let n=await Au(i);n&&(t[`x-first-bytes`]=n),typeof i==`string`&&(i=new TextEncoder().encode(i));let o=new Response(i,{headers:t});return Object.defineProperty(o,"url",{value:r}),o}async function Ho(i){if(!i.ok)throw await Su(i)}async function Su(i){let t=Yo(i.url),e=`Failed to fetch resource (${i.status}) ${i.statusText}: ${t}`;e=e.length>100?`${e.slice(0,100)}...`:e;let r={reason:i.statusText,url:i.url,response:i};try{let s=i.headers.get(`Content-Type`);r.reason=!i.bodyUsed&&s?.includes(`application/json`)?await i.json():await i.text()}catch{}return new vi(e,r)}async function Au(i){if(typeof i==`string`)return`data:,${i.slice(0,5)}`;if(i instanceof Blob){let e=i.slice(0,5);return await new Promise(r=>{let s=new FileReader;s.onload=n=>r(n?.target?.result),s.readAsDataURL(e)})}if(i instanceof ArrayBuffer)return`data:base64,${Mu(i.slice(0,5))}`;return null}function Mu(i){let t=``,e=new Uint8Array(i);for(let r=0;r<e.byteLength;r++)t+=String.fromCharCode(e[r]);return btoa(t)}function Cu(i){return!Iu(i)&&!Ru(i)}function Iu(i){return i.startsWith(`http:`)||i.startsWith(`https:`)}function Ru(i){return i.startsWith(`data:`)}async function Zs(i,t){if(typeof i==`string`){let e=rr(i);return Cu(e)&&globalThis.loaders?.fetchNode?globalThis.loaders?.fetchNode(e,t):await fetch(e,t)}return await xi(i)}var ar=new v({id:`loaders.gl`});var Pi=class{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}};var Ei=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 Ti={core:{baseUrl:void 0,fetch:null,mimeType:void 0,fallbackMimeType:void 0,ignoreRegisteredLoaders:void 0,nothrow:!1,log:new Ei,useLocalLibraries:!1,CDN:`https://unpkg.com/@loaders.gl`,worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:_t,_nodeWorkers:!1,_workerType:``,limit:0,_limitMB:0,batchSize:`auto`,batchDebounceMs:0,metadata:!1,transforms:[]}};var qo={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 Xs=[`baseUrl`,`fetch`,`mimeType`,`fallbackMimeType`,`ignoreRegisteredLoaders`,`nothrow`,`log`,`useLocalLibraries`,`CDN`,`worker`,`maxConcurrency`,`maxMobileConcurrency`,`reuseWorkers`,`_nodeWorkers`,`_workerType`,`limit`,`_limitMB`,`batchSize`,`batchDebounceMs`,`metadata`,`transforms`];function Ks(){globalThis.loaders=globalThis.loaders||{};let{loaders:i}=globalThis;return i._state||(i._state={}),i._state}function Js(){let i=Ks();return i.globalOptions=i.globalOptions||s(r({},Ti),{core:r({},Ti.core)}),Ct(i.globalOptions)}function Ko(i,t,e,r){return e=e||[],e=Array.isArray(e)?e:[e],Lu(i,e),Ct(Ou(t,i,r))}function Ct(i){let t=Bu(i);Jo(t);for(let e of Xs)t.core&&t.core[e]!==void 0&&delete t[e];return t.core&&t.core._workerType!==void 0&&delete t._worker,t}function Lu(i,t){Zo(i,null,Ti,qo,t);for(let e of t){let r=i&&i[e.id]||{},s=e.options&&e.options[e.id]||{},n=e.deprecatedOptions&&e.deprecatedOptions[e.id]||{};Zo(r,e.id,s,n,t)}}function Zo(i,t,e,r,s){let n=t||`Top level`,o=t?`${t}.`:``;for(let a in i){let c=!t&&bt(i[a]),l=a===`baseUri`&&!t,u=a===`workerUrl`&&t;if(!(a in e)&&!l&&!u){if(a in r)ar.level>0&&ar.warn(`${n} loader option '${o}${a}' no longer supported, use '${r[a]}'`)();else if(!c&&ar.level>0){let f=ku(a,s);ar.warn(`${n} loader option '${o}${a}' not recognized. ${f}`)()}}}}function ku(i,t){let e=i.toLowerCase(),r=``;for(let s of t)for(let n in s.options){if(i===n)return`Did you mean '${s.id}.${n}'?`;let o=n.toLowerCase();(e.startsWith(o)||o.startsWith(e))&&(r=r||`Did you mean '${s.id}.${n}'?`)}return r}function Ou(i,t,e){let r$5=i.options||{},s$1=r({},r$5);r$5.core&&(s$1.core=r({},r$5.core)),Jo(s$1),s$1.core?.log===null&&(s$1.core=s(r({},s$1.core),{log:new Pi})),Xo(s$1,Ct(Js()));return Xo(s$1,Ct(t)),Du(s$1,e),ju(s$1),s$1}function Xo(i,t){for(let e in t)if(e in t){let r$6=t[e];yi(r$6)&&yi(i[e])?i[e]=r(r({},i[e]),t[e]):i[e]=t[e]}}function Du(i,t){if(!t)return;i.core?.baseUrl!==void 0||(i.core||={},i.core.baseUrl=Mt.dirname(Vt(t)))}function Bu(i){let t=r({},i);return i.core&&(t.core=r({},i.core)),t}function Jo(i){i.baseUri!==void 0&&(i.core||={},i.core.baseUrl===void 0&&(i.core.baseUrl=i.baseUri));for(let e of Xs)if(i[e]!==void 0){let s=i.core=i.core||{};s[e]===void 0&&(s[e]=i[e])}let t=i._worker;t!==void 0&&(i.core||={},i.core._workerType===void 0&&(i.core._workerType=t))}function ju(i){let t=i.core;if(t)for(let e of Xs)t[e]!==void 0&&(i[e]=t[e])}function Si(i,t){let e=Js(),r=i||e,s=r.fetch??r.core?.fetch;return typeof s==`function`?s:bt(s)?n=>Zs(n,s):t?.fetch?t?.fetch:Zs}var Nu=262144;function*Qo(i,t){let e=t?.chunkSize||Nu,r=0,s=new TextEncoder;for(;r<i.length;){let n=Math.min(i.length-r,e),o=i.slice(r,r+n);r+=n,yield ir(s.encode(o))}}function*ta(i,t={}){let{chunkSize:e=262144}=t,r=0;for(;r<i.byteLength;){let s=Math.min(i.byteLength-r,e),n=new ArrayBuffer(s),o=new Uint8Array(i,r,s);new Uint8Array(n).set(o),r+=s,yield n}}async function*ea(i,t){let e=t?.chunkSize||1048576,r=0;for(;r<i.size;){let s=r+e,n=await i.slice(r,s).arrayBuffer();r=s,yield n}}function Qs(i,t){return _t?Uu(i,t):Vu(i,t)}async function*Uu(i,t){let e=i.getReader(),r;try{for(;;){let s=r||e.read();t?._streamReadAhead&&(r=e.read());let{done:n,value:o}=await s;if(n)return;yield be(o)}}catch{e.releaseLock()}}async function*Vu(i,t){for await(let e of i)yield be(e)}function ra(i,t){if(typeof i==`string`)return Qo(i,t);if(i instanceof ArrayBuffer)return ta(i,t);if(et(i))return ea(i,t);if(Ke(i))return Qs(i,t);if(tt(i)){let e=i.body;if(!e)throw new Error(`Readable stream not available on Response`);return Qs(e,t)}throw new Error(`makeIterator`)}var ia=`Cannot convert supplied data type`;function zu(i,t,e){if(t.text&&typeof i==`string`)return i;if(bi(i)&&(i=i.buffer),_e(i)){let r=Gs(i);return t.text&&!t.binary?new TextDecoder(`utf8`).decode(r):be(r)}throw new Error(ia)}async function sa(i,t,e){if(typeof i==`string`||_e(i))return zu(i,t,e);if(et(i)&&(i=await xi(i)),tt(i))return await Ho(i),t.binary?await i.arrayBuffer():await i.text();if(Ke(i)&&(i=ra(i,e)),Rs(i)||Ls(i))return Ws(i);throw new Error(ia)}function na(i,t,e){if(e)return e;let r$7=r({fetch:Si(t,i)},i);if(r$7.url){let s=Vt(r$7.url);r$7.baseUrl=s,r$7.queryString=Go(r$7.url),r$7.filename=Mt.filename(s),r$7.baseUrl=Mt.dirname(s)}return Array.isArray(r$7.loaders)||(r$7.loaders=null),r$7}function oa(i,t){if(i&&!Array.isArray(i))return i;let e;if(i&&(e=Array.isArray(i)?i:[i]),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 aa=()=>{let i=Ks();return i.loaderRegistry=i.loaderRegistry||[],i.loaderRegistry};function tn(i){let t=aa();i=Array.isArray(i)?i:[i];for(let e of i){let r=or(e);t.find(s=>r===s)||t.unshift(r)}}function ca(){return aa()}var Fu=/\.([^.]+)$/;async function fa(i,t=[],e,r$8){if(!ha(i))return null;let s$2=Ct(e||{});if(s$2.core||={},i instanceof Response&&la(i)){let a=Ai(await i.clone().text(),t,s(r({},s$2),{core:s(r({},s$2.core),{nothrow:!0})}),r$8);if(a)return a}let n=Ai(i,t,s(r({},s$2),{core:s(r({},s$2.core),{nothrow:!0})}),r$8);if(n)return n;if(et(i)&&(i=await i.slice(0,10).arrayBuffer(),n=Ai(i,t,s$2,r$8)),!n&&i instanceof Response&&la(i))n=Ai(await i.clone().text(),t,s$2,r$8);if(!n&&!s$2.core.nothrow)throw new Error(da(i));return n}function la(i){let t=ve(i);return!!(t&&(t.startsWith(`text/`)||t===`application/json`||t.endsWith(`+json`)))}function Ai(i,t=[],e,r){if(!ha(i))return null;let s=Ct(e||{});if(s.core||={},t&&!Array.isArray(t))return or(t);let n=[];t&&(n=n.concat(t)),s.core.ignoreRegisteredLoaders||n.push(...ca()),Gu(n);let o=Wu(i,n,s,r);if(!o&&!s.core.nothrow)throw new Error(da(i));return o}function Wu(i,t,e,r){let s=Xt(i),n=ve(i),o=Vt(s)||r?.url,a=null,c=``;return e?.core?.mimeType&&(a=en(t,e?.core?.mimeType),c=`match forced by supplied MIME type ${e?.core?.mimeType}`),a=a||Yu(t,o),c=c||(a?`matched url ${o}`:``),a=a||en(t,n),c=c||(a?`matched MIME type ${n}`:``),a=a||Hu(t,i),c=c||(a?`matched initial data ${pa(i)}`:``),e?.core?.fallbackMimeType&&(a=a||en(t,e?.core?.fallbackMimeType),c=c||(a?`matched fallback MIME type ${n}`:``)),c&&Cs.log(1,`selectLoader selected ${a?.name}: ${c}.`),a}function ha(i){return!(i instanceof Response&&i.status===204)}function da(i){let t=Xt(i),e=ve(i),r=`No valid loader found (`;r+=t?`${Mt.filename(t)}, `:`no url provided, `,r+=`MIME type: ${e?`"${e}"`:`not provided`}, `;let s=i?pa(i):``;return r+=s?` first bytes: "${s}"`:`first bytes: not available`,r+=`)`,r}function Gu(i){for(let t of i)or(t)}function Yu(i,t){let e=t&&Fu.exec(t),r=e&&e[1];return r?$u(i,r):null}function $u(i,t){t=t.toLowerCase();for(let e of i)for(let r of e.extensions)if(r.toLowerCase()===t)return e;return null}function en(i,t){for(let e of i)if(e.mimeTypes?.some(r=>Hs(t,r))||Hs(t,`application/x.${e.id}`))return e;return null}function Hu(i,t){if(!t)return null;for(let e of i)if(typeof t==`string`){if(qu(t,e))return e}else if(ArrayBuffer.isView(t)){if(ua(t.buffer,t.byteOffset,e))return e}else if(t instanceof ArrayBuffer&&ua(t,0,e))return e;return null}function qu(i,t){return t.testText?t.testText(i):(Array.isArray(t.tests)?t.tests:[t.tests]).some(r=>i.startsWith(r))}function ua(i,t,e){return(Array.isArray(e.tests)?e.tests:[e.tests]).some(s=>Zu(i,t,e,s))}function Zu(i,t,e,r){if(_e(r))return zs(r,i,r.byteLength);switch(typeof r){case`function`:return r(ir(i));case`string`:return r===rn(i,t,r.length);default:return!1}}function pa(i,t=5){return typeof i==`string`?i.slice(0,t):ArrayBuffer.isView(i)?rn(i.buffer,i.byteOffset,t):i instanceof ArrayBuffer?rn(i,0,t):``}function rn(i,t,e){if(i.byteLength<t+e)return``;let r=new DataView(i),s=``;for(let n=0;n<e;n++)s+=String.fromCharCode(r.getUint8(t+n));return s}async function cr(i,t,e,r){t&&!Array.isArray(t)&&!nr(t)&&(r=void 0,e=t,t=void 0),i=await i,e=e||{};let s=Xt(i),o=oa(t,r),a=await fa(i,o,e);if(!a)return null;let c=Ko(e,a,o,s);return r=na({url:s,_parse:cr,loaders:o},c,r||null),await Xu(a,i,c,r)}async function Xu(i,t,e,r){if(js(i),e=Je(i.options,e),tt(t)){let{ok:n,redirected:o,status:a,statusText:c,type:l,url:u}=t;r.response={headers:Object.fromEntries(t.headers.entries()),ok:n,redirected:o,status:a,statusText:c,type:l,url:u}}t=await sa(t,i,e);let s=i;if(s.parseTextSync&&typeof t==`string`)return s.parseTextSync(t,e,r);if(Us(i,e))return await Vs(i,t,e,r,cr);if(s.parseText&&typeof t==`string`)return await s.parseText(t,e,r);if(s.parse)return await s.parse(t,e,r);throw $(!s.parseSync),new Error(`${i.id} loader - no parser found and worker is disabled`)}async function xe(i,t,e,r$9){let s$3,n;!Array.isArray(t)&&!nr(t)?(s$3=[],n=t,r$9=void 0):(s$3=t,n=e);let o=Si(n),a=i;return typeof i==`string`&&(a=await o(i)),et(i)&&(a=await o(i)),typeof i==`string`&&(Ct(n||{}).core?.baseUrl||(n=s(r({},n),{core:s(r({},n?.core),{baseUrl:i})}))),Array.isArray(s$3)?await cr(a,s$3,n):await cr(a,s$3,n)}function Ku(i,t,e){let r=e?.core?.type||e.type||`auto`,s=r===`auto`?Ju(i,t):Qu(r,t);if(!s)throw new Error(`Not a valid source type`);return s.createDataSource(i,e)}function Ju(i,t){for(let e of t)if(e.testURL&&e.testURL(i))return e;return null}function Qu(i,t){for(let e of t)if(e.type===i)return e;return null}var S=new v({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:i=>({})};var E;(function(i){i[i.Start=1]=`Start`,i[i.Move=2]=`Move`,i[i.End=4]=`End`,i[i.Cancel=8]=`Cancel`})(E||(E={}));var j;(function(i){i[i.None=0]=`None`,i[i.Left=1]=`Left`,i[i.Right=2]=`Right`,i[i.Up=4]=`Up`,i[i.Down=8]=`Down`,i[i.Horizontal=3]=`Horizontal`,i[i.Vertical=12]=`Vertical`,i[i.All=15]=`All`})(j||(j={}));var P;(function(i){i[i.Possible=1]=`Possible`,i[i.Began=2]=`Began`,i[i.Changed=4]=`Changed`,i[i.Ended=8]=`Ended`,i[i.Recognized=8]=`Recognized`,i[i.Cancelled=16]=`Cancelled`,i[i.Failed=32]=`Failed`})(P||(P={}));var ga=`compute`;var sn=`auto`;var Kt=`manipulation`;var Jt=`none`;var lr=`pan-x`;var ur=`pan-y`;function nn(i){if(i.includes(Jt))return Jt;let t=i.includes(lr),e=i.includes(ur);return t&&e?Jt:t||e?t?lr:ur:i.includes(Kt)?Kt:sn}var fr=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 nn(t.join(` `))}};function Pe(i){return i.trim().split(/\s+/g)}function Mi(i,t,e){if(i)for(let r of Pe(t))i.addEventListener(r,e,!1)}function Ci(i,t,e){if(i)for(let r of Pe(t))i.removeEventListener(r,e,!1)}function on(i){return(i.ownerDocument||i).defaultView}function an(i,t){let e=i;for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function Ii(i){let t=i.length;if(t===1)return{x:Math.round(i[0].clientX),y:Math.round(i[0].clientY)};let e=0,r=0,s=0;for(;s<t;)e+=i[s].clientX,r+=i[s].clientY,s++;return{x:Math.round(e/t),y:Math.round(r/t)}}function cn(i){let t=[],e=0;for(;e<i.pointers.length;)t[e]={clientX:Math.round(i.pointers[e].clientX),clientY:Math.round(i.pointers[e].clientY)},e++;return{timeStamp:Date.now(),pointers:t,center:Ii(t),deltaX:i.deltaX,deltaY:i.deltaY}}function Ee(i,t){let e=t.x-i.x,r=t.y-i.y;return Math.sqrt(e*e+r*r)}function hr(i,t){let e=t.clientX-i.clientX,r=t.clientY-i.clientY;return Math.sqrt(e*e+r*r)}function ya(i,t){let e=t.x-i.x,r=t.y-i.y;return Math.atan2(r,e)*180/Math.PI}function ln(i,t){let e=t.clientX-i.clientX,r=t.clientY-i.clientY;return Math.atan2(r,e)*180/Math.PI}function Te(i,t){return i===t?j.None:Math.abs(i)>=Math.abs(t)?i<0?j.Left:j.Right:t<0?j.Up:j.Down}function _a(i,t){let e=t.center,r=i.offsetDelta,s=i.prevDelta,n=i.prevInput;return(t.eventType===E.Start||n?.eventType===E.End)&&(s=i.prevDelta={x:n?.deltaX||0,y:n?.deltaY||0},r=i.offsetDelta={x:e.x,y:e.y}),{deltaX:s.x+(e.x-r.x),deltaY:s.y+(e.y-r.y)}}function Ri(i,t,e){return{x:t/i||0,y:e/i||0}}function wa(i,t){return hr(t[0],t[1])/hr(i[0],i[1])}function ba(i,t){return ln(t[1],t[0])-ln(i[1],i[0])}function va(i,t){let e=i.lastInterval||t,r=t.timeStamp-e.timeStamp,s,n,o,a;if(t.eventType!==E.Cancel&&(r>25||e.velocity===void 0)){let c=t.deltaX-e.deltaX,l=t.deltaY-e.deltaY,u=Ri(r,c,l);n=u.x,o=u.y,s=Math.abs(u.x)>Math.abs(u.y)?u.x:u.y,a=Te(c,l),i.lastInterval=t}else s=e.velocity,n=e.velocityX,o=e.velocityY,a=e.direction;t.velocity=s,t.velocityX=n,t.velocityY=o,t.direction=a}function un(i,t){return`pointerId`in i?i.pointerId:t}function xa(i,t){i.movementOrigin=new Map(t.map((e,r)=>[un(e,r),{clientX:e.clientX,clientY:e.clientY}])),i.firstMovementTime=void 0}function sf(i,t){let e=t.pointers.map(un);if(i.movementOrigin?.size===e.length&&e.every(s=>i.movementOrigin.has(s))||xa(i,t.pointers),t.distancePerPointer=t.pointers.map((s,n)=>hr(i.movementOrigin.get(e[n]),s)),t.eventType&E.Move&&t.distancePerPointer.some(s=>s>0)&&(i.firstMovementTime??(i.firstMovementTime=t.timeStamp)),t.movementDeltaTime=i.firstMovementTime===void 0?0:t.timeStamp-i.firstMovementTime,t.eventType&(E.End|E.Cancel)){let s=t.changedPointers.map(n=>un(n,t.pointers.indexOf(n)));xa(i,t.pointers.filter((n,o)=>!s.includes(e[o])))}}function Pa(i,t){let{session:e}=i,{pointers:r}=t,{length:s}=r;e.firstInput||(e.firstInput=cn(t)),s>1&&!e.firstMultiple?e.firstMultiple=cn(t):s===1&&(e.firstMultiple=!1);let{firstInput:n,firstMultiple:o}=e,a=o?o.center:n.center,c=t.center=Ii(r);t.timeStamp=Date.now(),t.deltaTime=t.timeStamp-n.timeStamp,sf(e,t),t.angle=ya(a,c),t.distance=Ee(a,c);let{deltaX:l,deltaY:u}=_a(e,t);t.deltaX=l,t.deltaY=u,t.offsetDirection=Te(t.deltaX,t.deltaY);let f=Ri(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=o?wa(o.pointers,r):1,t.rotation=o?ba(o.pointers,r):0,t.maxPointers=e.prevInput?t.pointers.length>e.prevInput.maxPointers?t.pointers.length:e.prevInput.maxPointers:t.pointers.length;let d=i.element;return an(t.srcEvent.target,d)&&(d=t.srcEvent.target),t.target=d,va(e,t),t}function Ea(i,t,e){let r=e.pointers.length,s=e.changedPointers.length,n=t&E.Start&&r-s===0,o=t&(E.End|E.Cancel)&&r-s===0;e.isFirst=!!n,e.isFinal=!!o,n&&(i.session={}),e.eventType=t;let a=Pa(i,e);i.emit(`hammer.input`,a),i.recognize(a),i.session.prevInput=a}var dr=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(){Mi(this.element,this.evEl,this.domHandler),Mi(this.target,this.evTarget,this.domHandler),Mi(on(this.element),this.evWin,this.domHandler)}destroy(){Ci(this.element,this.evEl,this.domHandler),Ci(this.target,this.evTarget,this.domHandler),Ci(on(this.element),this.evWin,this.domHandler)}};var nf={pointerdown:E.Start,pointermove:E.Move,pointerup:E.End,pointercancel:E.Cancel,pointerout:E.Cancel};var of=`pointerdown`;var af=`pointermove pointerup pointercancel`;var pr=class extends dr{constructor(t){super(t),this.evEl=of,this.evWin=af,this.store=this.manager.session.pointerEvents=[],this.init()}handler(t){let{store:e}=this,r=!1,s=nf[t.type],n=t.pointerType,o=n===`touch`,a=e.findIndex(c=>c.pointerId===t.pointerId);s&E.Start&&(t.buttons||o)?a<0&&(e.push(t),a=e.length-1):s&(E.End|E.Cancel)&&(r=!0),!(a<0)&&(e[a]=t,this.callback(s,{pointers:e,changedPointers:[t],eventType:s,pointerType:n,srcEvent:t}),r&&e.splice(a,1))}};var cf=[``,`webkit`,`Moz`,`MS`,`ms`,`o`];function Ta(i,t){let e=t[0].toUpperCase()+t.slice(1);for(let r of cf){let s=r?r+e:t;if(s in i)return s}}var lf=1;var Sa=2;var Aa={touchAction:`compute`,enable:!0,inputTarget:null,cssProps:{userSelect:`none`,userDrag:`none`,touchCallout:`none`,tapHighlightColor:`rgba(0,0,0,0)`}};var mr=class{constructor(t,e){this.options=s(r(r({},Aa),e),{cssProps:r(r({},Aa.cssProps),e.cssProps),inputTarget:e.inputTarget||t}),this.handlers={},this.session={},this.recognizers=[],this.oldCssProps={},this.element=t,this.input=new pr(this),this.touchAction=new fr(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?Sa:lf}recognize(t){let{session:e}=this;if(e.stopped)return;this.session.prevented&&t.srcEvent.preventDefault();let r,{recognizers:s}=this,{curRecognizer:n}=e;(!n||n&&n.state&P.Recognized)&&(n=e.curRecognizer=null);let o=0;for(;o<s.length;)r=s[o],e.stopped!==Sa&&(!n||r===n||r.canRecognizeWith(n))?r.recognize(t):r.reset(),!n&&r.state&(P.Began|P.Changed|P.Ended)&&(n=e.curRecognizer=r),o++}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,s=r.indexOf(e);s!==-1&&(r.splice(s,1),this.touchAction.update())}return this}on(t,e){if(!t||!e)return;let{handlers:r}=this;for(let s of Pe(t))r[s]=r[s]||[],r[s].push(e)}off(t,e){if(!t)return;let{handlers:r}=this;for(let s of Pe(t))e?r[s]&&r[s].splice(r[s].indexOf(e),1):delete r[s]}emit(t,e){let r=this.handlers[t]&&this.handlers[t].slice();if(!r||!r.length)return;let s=e;s.type=t,s.preventDefault=function(){e.srcEvent.preventDefault()};let n=0;for(;n<r.length;)r[n](s),n++}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,s]of Object.entries(this.options.cssProps)){let n=Ta(e.style,r);t?(this.oldCssProps[n]=e.style[n],e.style[n]=s):e.style[n]=this.oldCssProps[n]||``}t||(this.oldCssProps={})}}};var uf=1;function Ma(){return uf++}function fn(i){return i&P.Cancelled?`cancel`:i&P.Ended?`end`:i&P.Changed?`move`:i&P.Began?`start`:``}var ft=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 s of t)this.recognizeWith(s);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 s of t)this.requireFailure(s);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+fn(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+fn(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 ff(i){return Math.abs(((i+180)%360+360)%360-180)}function hf(i,t){return(t.distance===void 0||i.distance>=t.distance)&&(t.distancePerPointer===void 0||i.distancePerPointer.length>0&&i.distancePerPointer.every(e=>e>=t.distancePerPointer))&&(t.movementDeltaTime===void 0||i.movementDeltaTime>=t.movementDeltaTime)&&(t.rotation===void 0||ff(i.rotation)>=t.rotation)&&(t.scale===void 0||Math.abs(i.scale-1)>=t.scale)}var Qt=class extends ft{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=>hf(t,r))}process(t){let{state:e}=this,{eventType:r}=t,s=e&(P.Began|P.Changed),n=this.attrTest(t);return s&&(r&E.Cancel||!n)?e|P.Cancelled:s||n?r&E.End?e|P.Ended:e&P.Began?e|P.Changed:P.Began:P.Failed}};var df=[``,`start`,`move`,`end`,`cancel`];var Se=class extends ft{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 df.map(t=>this.options.event+t)}process(t){let{options:e}=this;return t.pointers.length===e.pointers?t.eventType&E.Start?this._handleStart(t):t.eventType&E.Move?this._handleMove(t):t.eventType&E.Cancel?this._handleEnd(t,!0):t.eventType&E.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:s}=this._drag;if(this._drag=null,this._tapStart=null,this._lastTap=null,!r)return this._emittedStart=!1,P.Failed;let n=s.y-t.center.y;return t.scale=Math.pow(2,n/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&&Ee(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 ft{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,s=t.distance<e.threshold,n=t.deltaTime<e.time;if(this.reset(),t.eventType&E.Start&&this.count===0)return this.failTimeout();if(s&&n&&r){if(t.eventType!==E.End)return this.failTimeout();let o=this.pTime?t.timeStamp-this.pTime<e.interval:!0,a=!this.pCenter||Ee(this.pCenter,t.center)<e.posThreshold;if(this.pTime=t.timeStamp,this.pCenter=t.center,!a||!o?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 Ae=class extends Qt{constructor(){super(...arguments),this.wheelSession=null,this.wheelSessionUnsubscribe=null,this.handleWheelSessionEvent=t=>{t.device===`trackpad`&&this.handleTrackpadEvent(t)}}set(t){let s=t,{wheelSession:e}=s,r=u(s,[`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,s=e.deltaX??t.deltaX,n=e.deltaY??t.deltaY,o=Te(s,n),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:s,deltaY:n,angle:Math.atan2(n,s)*180/Math.PI,distance:Math.sqrt(s*s+n*n),distancePerPointer:[a,a],movementDeltaTime:t.deltaTime,scale:1,rotation:0,direction:o,offsetDirection:o,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 pf=[``,`start`,`move`,`end`,`cancel`,`up`,`down`,`left`,`right`];var zt=class extends Ae{constructor(t={}){super(r({enable:!0,pointers:1,event:`pan`,threshold:10,direction:j.All,trackpad:!1,coherent:[]},t)),this.trackpadGesture=!1,this.pX=null,this.pY=null}getTouchAction(){let{options:{direction:t}}=this,e=[];return t&j.Horizontal&&e.push(ur),t&j.Vertical&&e.push(lr),e}getEventNames(){return pf.map(t=>this.options.event+t)}directionTest(t){let{options:e}=this,r=!0,{distance:s}=t,{direction:n}=t,o=t.deltaX,a=t.deltaY;return n&e.direction||(e.direction&j.Horizontal?(n=o===0?j.None:o<0?j.Left:j.Right,r=o!==this.pX,s=Math.abs(t.deltaX)):(n=a===0?j.None:a<0?j.Up:j.Down,r=a!==this.pY,s=Math.abs(t.deltaY))),t.direction=n,r&&s>e.threshold&&!!(n&e.direction)}attrTest(t){let e=!!(this.state&P.Began),r=!(this.options.coherent?.length&&t.eventType&(E.End|E.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=j[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 mf=[``,`start`,`move`,`end`,`cancel`,`in`,`out`];var Me=class extends Ae{constructor(t={}){super(r({enable:!0,event:`pinch`,threshold:0,pointers:2,trackpad:!1,coherent:[]},t)),this.trackpadGesture=!1}getTouchAction(){return[Jt]}getEventNames(){return mf.map(t=>this.options.event+t)}attrTest(t){let e=!!this.options.coherent?.length,r=!!(this.state&P.Began),s=!(e&&t.eventType&(E.End|E.Cancel));return super.attrTest(t)&&(r||s&&(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 xt=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 wf=(typeof navigator<`u`&&navigator.userAgent?navigator.userAgent.toLowerCase():``).indexOf(`firefox`)!==-1;var bf=40;var vf=.25;var Li=class extends xt{constructor(t,e,r){r.enable=r.enable??!1,super(t,e,r),this.handleEvent=s=>{if(!this.options.enable)return;let n=s.deltaY;globalThis.WheelEvent&&(wf&&s.deltaMode===globalThis.WheelEvent.DOM_DELTA_PIXEL&&(n/=globalThis.devicePixelRatio),s.deltaMode===globalThis.WheelEvent.DOM_DELTA_LINE&&(n*=bf)),s.shiftKey&&n&&(n=n*vf),this.callback({type:`wheel`,center:{x:s.clientX,y:s.clientY},delta:-n,device:this.options.wheelSession?.device??`unknown`,srcEvent:s,pointerType:`mouse`,target:s.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 xf=4.000244140625;var Ia=40;var Pf=0;var Ef=1;var Tf=40;var Ra=40;var Sf=120;var Af={classificationDelay:32,endDelay:80};var ki=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 s=Cf(r,this.pressedControlKeys.size>0),n=this.session;if(n&&s.timeStamp-n.lastTimeStamp>=this.options.endDelay){if(this.end(),!this.hasSubscribers)return`unknown`;n=null}n?(this.scheduleEnd(),this.addSample(n,s)):(n=this.startPendingSession(s),this.scheduleEnd());let{device:o}=n;return o===`unknown`&&(o=hn(n.samples,!1),o!==`unknown`&&this.begin(n,o)),o},this.finishClassification=()=>{if(this.classificationTimer=null,!this.session||this.session.device!==`unknown`)return;let r=this.session,s=hn(r.samples,!0);this.begin(r,s===`unknown`?`mouse`:s)},this.end=()=>{if(!this.session)return;if(this.session.device===`unknown`){let s=this.session,n=hn(s.samples,!0);this.begin(s,n===`unknown`?`mouse`:n)}if(!this.session)return;let r=this.session;this.emit(E.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({},Af),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(E.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],s=e.timeStamp-r.timeStamp;t.velocityX=s>0?e.deltaX/s:0,t.velocityY=s>0?e.deltaY/s:0,this.emit(E.Move,e.event,{velocityX:t.velocityX,velocityY:t.velocityY})}}begin(t,e){t.device=e,this.clearClassificationTimer(),this.emit(E.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(E.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 s=this.session;if(!s||s.device===`unknown`)return;let n=t===E.Start,o=t===E.End||t===E.Cancel,a=n?s.firstTimeStamp:s.lastTimeStamp,c=n?0:Math.max(0,a-s.firstTimeStamp),l=n?0:s.totalDeltaX,u=n?0:s.totalDeltaY,f=c>0?l/c:0,d=c>0?u/c:0,p=n?0:r?.velocityX??s.velocityX,m=n?0:r?.velocityY??s.velocityY,g={eventType:t,device:s.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:n,isFinal:o};for(let{listener:_}of[...this.subscriptions.values()])_(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=Mf();!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 Mf(){return typeof window<`u`?window:globalThis.document?.defaultView}function Cf(i,t){let e=i.deltaX,r=i.deltaY;return i.deltaMode===Ef&&(e*=Ia,r*=Ia),{event:i,timeStamp:i.timeStamp,deltaX:e,deltaY:r,isControlKeyDown:t}}function hn(i,t){return i.some(({event:e,isControlKeyDown:r})=>e.ctrlKey&&!r)?`trackpad`:i.some(({event:e})=>e.deltaMode!==Pf)||i.some(If)||i.every(({event:e})=>{let r=e.wheelDelta;return r!==void 0&&Math.abs(r)%40===0})?`mouse`:i.some(({deltaX:e})=>e!==0)||i.length>1&&Rf(i)?`trackpad`:t?`mouse`:`unknown`}function If({event:i,deltaX:t,deltaY:e}){if(t!==0||e===0)return!1;let r=Math.abs(e/xf);if(Number.isInteger(r))return!0;let s=i.wheelDelta;return typeof s==`number`&&s!==0&&s%Sf===0}function Rf(i){for(let t=0;t<i.length;t++){let e=i[t];if(Math.abs(e.deltaX)>Ra||Math.abs(e.deltaY)>Ra||t>0&&e.timeStamp-i[t-1].timeStamp>Tf)return!1}return!0}var La=[`mousedown`,`mousemove`,`mouseup`,`mouseover`,`mouseout`,`mouseenter`,`mouseleave`];var Oi=class extends xt{constructor(t,e,r$11){super(t,e,r({enable:!0},r$11)),this.handleEvent=n=>{this.handleOverEvent(n),this.handleOutEvent(n),this.handleEnterEvent(n),this.handleLeaveEvent(n),this.handleMoveEvent(n)},this.pressed=!1;let{enable:s=!1}=this.options;this.enableMoveEvent=s,this.enableLeaveEvent=s,this.enableEnterEvent=s,this.enableOutEvent=s,this.enableOverEvent=s,s&&La.forEach(n=>this.listen(n,!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))}}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}}_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 Di=class extends xt{constructor(t,e,r$12){super(t,e,r({enable:!0,tabIndex:0},r$12)),this.handleEvent=n=>{let o=n.target||n.srcElement;o.tagName===`INPUT`&&o.type===`text`||o.tagName===`TEXTAREA`||(this.enableDownEvent&&n.type===`keydown`&&this.callback({type:`keydown`,srcEvent:n,key:n.key,target:n.target}),this.enableUpEvent&&n.type===`keyup`&&this.callback({type:`keyup`,srcEvent:n,key:n.key,target:n.target}))};let{enable:s=!1}=this.options;this.enableDownEvent=s,this.enableUpEvent=s,t.tabIndex=this.options.tabIndex,t.style.outline=`none`,s&&ka.forEach(n=>this.listen(n,!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 Bi=class extends xt{constructor(t,e,r){r.enable=r.enable??!1,super(t,e,r),this.handleEvent=s=>{this.options.enable&&this.callback({type:`contextmenu`,center:{x:s.clientX,y:s.clientY},srcEvent:s,pointerType:`mouse`,target:s.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 Lf={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4};var kf=0;var Of=1;var Df=2;var Bf=1;var jf=2;var Nf=4;function Oa(i){let t=Lf[i.srcEvent.type];if(!t)return null;let{buttons:e,button:r}=i.srcEvent,s=!1,n=!1,o=!1;return t===2?(s=!!(e&Bf),n=!!(e&Nf),o=!!(e&jf)):(s=r===kf,n=r===Of,o=r===Df),{leftButton:s,middleButton:n,rightButton:o}}function Da(i,t){let e=i.center;if(!e)return null;let r=t.getBoundingClientRect(),s=r.width/t.offsetWidth||1,n=r.height/t.offsetHeight||1;return{center:e,offsetCenter:{x:(e.x-r.left-t.clientLeft)/s,y:(e.y-r.top-t.clientTop)/n}}}var Uf={srcElement:`root`,priority:0};var ji=class{constructor(t,e){this.handleEvent=r=>{if(this.isEmpty())return;let s=this._normalizeEvent(r),n=r.srcEvent.target;for(;n&&n!==s.rootElement;){if(this._emit(s,n),s.handled)return;n=n.parentNode}this._emit(s,`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,s=!1,n=!1){let{handlers:o,handlersByElement:a}=this,c=r(r({},Uf),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};s&&(u.once=!0),n&&(u.passive=!0),o.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:s}=this;for(let n=r.length-1;n>=0;n--){let o=r[n];if(o.type===t&&o.handler===e){r.splice(n,1);let a=s.get(o.srcElement);a.splice(a.indexOf(o),1),a.length===0&&s.delete(o.srcElement)}}this._active=r.some(n=>!n.passive)}_emit(t,e){let r$14=this.handlersByElement.get(e);if(r$14){let s$4=!1,n=()=>{t.handled=!0},o=()=>{t.handled=!0,s$4=!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:n,stopImmediatePropagation:o})),f&&a.push(r$14[c]),s$4)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 Vf(i){if(`recognizer`in i)return i;let t,e=Array.isArray(i)?[...i]:[i];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 gr=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 ki(t),!!t){this.manager=new mr(t,this.options);for(let r of this.options.recognizers){let{recognizer:s,recognizeWith:n,requireFailure:o}=Vf(r);this.manager.add(s),n&&s.recognizeWith(n),o&&s.requireFailure(o)}this.manager.on(`hammer.input`,this._onBasicInput),this.wheelInput=new Li(t,this._onOtherEvent,{enable:!1,wheelSession:this.wheelSession}),this.moveInput=new Oi(t,this._onOtherEvent,{enable:!1}),this.keyInput=new Di(t,this._onOtherEvent,{enable:!1,tabIndex:e.tabIndex}),this.contextmenuInput=new Bi(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 s=r.get(t);s&&(s.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,s,n){if(typeof t!=`string`){r=e;for(let[l,u]of Object.entries(t))this._addEventHandler(l,u,r,s,n);return}let{manager:o,events:a}=this;if(!o)return;let c=a.get(t);if(!c){let l=this._getRecognizerName(t)||t;c=new ji(this,l),a.set(t,c),o&&o.on(t,c.handleEvent)}c.add(t,e,r,s,n),c.isEmpty()||this._toggleRecognizer(c.recognizerName,!0)}_removeEventHandler(t,e){if(typeof t!=`string`){for(let[n,o]of Object.entries(t))this._removeEventHandler(n,o);return}let{events:r}=this,s=r.get(t);if(s&&(s.remove(t,e),s.isEmpty())){let{recognizerName:n}=s,o=!1;for(let a of r.values())if(a.recognizerName===n&&!a.isEmpty()){o=!0;break}o||this._toggleRecognizer(n,!1)}}_getRecognizerName(t){return this.manager.recognizers.find(e=>e.getEventNames().includes(t))?.options.event}};var dn={DEFAULT:`default`,LNGLAT:`lnglat`,METER_OFFSETS:`meter-offsets`,LNGLAT_OFFSETS:`lnglat-offsets`,CARTESIAN:`cartesian`};Object.defineProperty(dn,"IDENTITY",{get:()=>(S.deprecated(`COORDINATE_SYSTEM.IDENTITY`,`COORDINATE_SYSTEM.CARTESIAN`)(),dn.CARTESIAN)});var V={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0};var ee={common:0,meters:1,pixels:2};var Ce={click:`onClick`,dblclick:`onClick`,panstart:`onDragStart`,panmove:`onDrag`,panend:`onDragEnd`};var pn={multipan:[zt,{threshold:10,pointers:2,trackpad:!0}],pinch:[Me,{trackpad:!0},null,[`multipan`]],pan:[zt,{threshold:1},[`pinch`],[`multipan`]],dblclick:[te,{event:`dblclick`,taps:2,enable:!1}],dblclickdrag:[Se,{event:`dblclickdrag`,enable:!1},[`dblclick`],null],click:[te,{event:`click`},[`dblclickdrag`],[`dblclick`,`dblclickdrag`]]};var zf=`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 Ni={name:`geometry`,source:zf,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 Gf(i,t){if(i===t)return!0;if(Array.isArray(i)){let e=i.length;if(!t||t.length!==e)return!1;for(let r=0;r<e;r++)if(i[r]!==t[r])return!1;return!0}return!1}function Pt(i){let t={},e;return r=>{for(let s in r)if(!Gf(r[s],t[s])){e=i(r),t=r;break}return e}}var ja=[0,0,0,0];var Yf=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];var Na=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];var $f=[0,0,0];var Ua=[0,0,0];var Hf={default:-1,cartesian:0,lnglat:1,"meter-offsets":2,"lnglat-offsets":3};function re(i){let t=Hf[i];if(t===void 0)throw new Error(`Invalid coordinateSystem: ${i}`);return t}var qf=Pt(Xf);function mn(i,t,e=Ua){e.length<3&&(e=[e[0],e[1],0]);let r=e,s,n=!0;switch(t===`lnglat-offsets`||t===`meter-offsets`?s=e:s=i.isGeospatial?[Math.fround(i.longitude),Math.fround(i.latitude),0]:null,i.projectionMode){case V.WEB_MERCATOR:(t===`lnglat`||t===`cartesian`)&&(s=[0,0,0],n=!1);break;case V.WEB_MERCATOR_AUTO_OFFSET:t===`lnglat`?r=s:t===`cartesian`&&(r=[Math.fround(i.center[0]),Math.fround(i.center[1]),0],s=i.unprojectPosition(r),r[0]-=e[0],r[1]-=e[1],r[2]-=e[2]);break;case V.IDENTITY:r=i.position.map(Math.fround),r[2]=r[2]||0;break;case V.GLOBE:n=!1,s=null;break;default:n=!1}return{geospatialOrigin:s,shaderCoordinateOrigin:r,offsetMode:n}}function Zf(i,t,e){let{viewMatrixUncentered:r,projectionMatrix:s}=i,{viewMatrix:n,viewProjectionMatrix:o}=i,a=ja,c=ja,l=i.cameraPosition,{geospatialOrigin:u,shaderCoordinateOrigin:f,offsetMode:d}=mn(i,t,e);return d&&(c=i.projectPosition(u||f),l=[l[0]-c[0],l[1]-c[1],l[2]-c[2]],c[3]=1,a=ir$2.transformMat4([],c,o),n=r||n,o=Hi$1.multiply([],s,n),o=Hi$1.multiply([],o,Yf)),{viewMatrix:n,viewProjectionMatrix:o,projectionCenter:a,originCommon:c,cameraPosCommon:l,shaderCoordinateOrigin:f,geospatialOrigin:u}}function Va({viewport:i,devicePixelRatio:t=1,modelMatrix:e=null,coordinateSystem:r=`default`,coordinateOrigin:s=Ua,autoWrapLongitude:n=!1}){r==="default"&&(r=i.isGeospatial?`lnglat`:`cartesian`);let o=qf({viewport:i,devicePixelRatio:t,coordinateSystem:r,coordinateOrigin:s});return o.wrapLongitude=n,o.modelMatrix=e||Na,o}function Xf({viewport:i,devicePixelRatio:t,coordinateSystem:e,coordinateOrigin:r}){let{projectionCenter:s,viewProjectionMatrix:n,originCommon:o,cameraPosCommon:a,shaderCoordinateOrigin:c,geospatialOrigin:l}=Zf(i,e,r),u=i.getDistanceScales(),f=[i.width*t,i.height*t],d=ir$2.transformMat4([],[0,0,-i.focalDistance,1],i.projectionMatrix)[3]||1,p={coordinateSystem:re(e),projectionMode:i.projectionMode,coordinateOrigin:c,commonOrigin:o.slice(0,3),center:s,pseudoMeters:!!i._pseudoMeters,viewportSize:f,devicePixelRatio:t,focalDistance:d,commonUnitsPerMeter:u.unitsPerMeter,commonUnitsPerWorldUnit:u.unitsPerMeter,commonUnitsPerWorldUnit2:$f,scale:i.scale,wrapLongitude:!1,viewProjectionMatrix:n,modelMatrix:Na,cameraPosition:a};if(l){let m=i.getDistanceScales(l);switch(e){case`meter-offsets`:p.commonUnitsPerWorldUnit=m.unitsPerMeter,p.commonUnitsPerWorldUnit2=m.unitsPerMeter2;break;case`lnglat`:case`lnglat-offsets`:i._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]]}}if(i.projectionMode===V.GLOBE&&e===`meter-offsets`){let _=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(_)*v*w,-Math.cos(_)*v*w,Math.sin(b)*w]}return p}var za=`${`${[`default`,`lnglat`,`meter-offsets`,`lnglat-offsets`,`cartesian`].map(i=>`const COORDINATE_SYSTEM_${i.toUpperCase().replaceAll(`-`,`_`)}: i32 = ${re(i)};`).join(``)}
475
+ ${Object.keys(V).map(i=>`const PROJECTION_MODE_${i}: i32 = ${V[i]};`).join(``)}
476
+ ${Object.keys(ee).map(i=>`const UNIT_${i.toUpperCase()}: i32 = ${ee[i]};`).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(i=>`const int COORDINATE_SYSTEM_${i.toUpperCase().replaceAll(`-`,`_`)} = ${re(i)};`).join(``)}
765
+ ${Object.keys(V).map(i=>`const int PROJECTION_MODE_${i} = ${V[i]};`).join(``)}
766
+ ${Object.keys(ee).map(i=>`const int UNIT_${i.toUpperCase()} = ${ee[i]};`).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 oh={};function ah(i=oh){return`viewport`in i?Va(i):{}}var ie={name:`project`,dependencies:[Uf$1,Ni],source:za,vs:Fa,getUniforms:ah,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:[ie],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 gn(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Ft(i,t){let e=ir$2.transformMat4([],t,i);return ir$2.scale(e,e,1/e[3]),e}function yr(i,t,e){return i<t?t:i>e?e:i}function uh(i){return Math.log(i)*Math.LOG2E}var _r=Math.log2||uh;function ht(i,t){if(!i)throw new Error(t||`@math.gl/web-mercator: assertion failed.`)}var dt=Math.PI;var Ga=dt/4;var st=dt/180;var yn=180/dt;var Ie=512;var Ui=4003e4;var X=85.051129;var Ya=1.5;function _n(i){return _r(i)}function nt(i){let[t,e]=i;ht(Number.isFinite(t)),ht(Number.isFinite(e)&&e>=-90&&e<=90,`invalid latitude`);let r=t*st,s=e*st;return[Ie*(r+dt)/(2*dt),Ie*(dt+Math.log(Math.tan(Ga+s*.5)))/(2*dt)]}function rt(i){let[t,e]=i,r=t/Ie*(2*dt)-dt,s=2*(Math.atan(Math.exp(e/Ie*(2*dt)-dt))-Ga);return[r*yn,s*yn]}function wn(i){let{latitude:t}=i;ht(Number.isFinite(t));return _n(Ui*Math.cos(t*st))-9}function wr(i){let t=Math.cos(i*st);return Ie/Ui/t}function Re(i){let{latitude:t,longitude:e,highPrecision:r=!1}=i;ht(Number.isFinite(t)&&Number.isFinite(e));let s=Ie,n=Math.cos(t*st),o=s/360,a=o/n,c=s/Ui/n,l={unitsPerMeter:[c,c,c],metersPerUnit:[1/c,1/c,1/c],unitsPerDegree:[o,a,c],degreesPerUnit:[1/o,1/a,1/c]};if(r){let u=st*Math.tan(t*st)/n,f=o*u/2,d=s/Ui*u,p=d/a*c;l.unitsPerDegree2=[0,f,d],l.unitsPerMeter2=[p,0,p]}return l}function br(i,t){let[e,r,s]=i,[n,o,a]=t,{unitsPerMeter:c,unitsPerMeter2:l}=Re({longitude:e,latitude:r,highPrecision:!0}),u=nt(i);u[0]+=n*(c[0]+l[0]*o),u[1]+=o*(c[1]+l[1]*o);let f=rt(u),d=(s||0)+(a||0);return Number.isFinite(s)||Number.isFinite(a)?[f[0],f[1],d]:f}function Vi(i){let{height:t,pitch:e,bearing:r,altitude:s,scale:n,center:o}=i,a=gn();Hi$1.translate(a,a,[0,0,-s]),Hi$1.rotateX(a,a,-e*st),Hi$1.rotateZ(a,a,r*st);let c=n/t;return Hi$1.scale(a,a,[c,c,c]),o&&Hi$1.translate(a,a,Zn$1.negate([],o)),a}function bn(i){let{width:t,height:e,altitude:r,pitch:s=0,offset:n,center:o,scale:a,nearZMultiplier:c=1,farZMultiplier:l=1}=i,{fovy:u=It(Ya)}=i;r!==void 0&&(u=It(r));let f=u*st,d=s*st,p=se(u),m=p;o&&(m+=o[2]*a/Math.cos(d)/e);let g=f*(.5+(n?n[1]:0)/e),_=Math.sin(g)*m/Math.sin(yr(Math.PI/2-d-g,.01,Math.PI-.01)),b=Math.sin(d)*_+m,v=m*10,w=Math.min(b*l,v);return{fov:f,aspect:t/e,focalDistance:p,near:c,far:w}}function It(i){return 2*Math.atan(.5/i)*yn}function se(i){return .5/Math.tan(.5*i*st)}function Wt(i,t){let[e,r,s=0]=i;return ht(Number.isFinite(e)&&Number.isFinite(r)&&Number.isFinite(s)),Ft(t,[e,r,s,1])}function Gt(i,t,e=0){let[r,s,n]=i;if(ht(Number.isFinite(r)&&Number.isFinite(s),`invalid pixel coordinate`),Number.isFinite(n))return Ft(t,[r,s,n,1]);let o=Ft(t,[r,s,0,1]),a=Ft(t,[r,s,1,1]),c=o[2],l=a[2],u=c===l?0:((e||0)-c)/(l-c);return Qi$1.lerp([],o,a,u)}function zi(i){let{width:t,height:e,bounds:r,minExtent:s=0,maxZoom:n=24,offset:o=[0,0]}=i,[[a,c],[l,u]]=r,f=fh(i.padding),d=nt([a,yr(u,-X,X)]),p=nt([l,yr(c,-X,X)]),m=[Math.max(Math.abs(p[0]-d[0]),s),Math.max(Math.abs(p[1]-d[1]),s)],g=[t-f.left-f.right-Math.abs(o[0])*2,e-f.top-f.bottom-Math.abs(o[1])*2];ht(g[0]>0&&g[1]>0);let _=g[0]/m[0],b=g[1]/m[1],v=(f.right-f.left)/2/_,w=(f.top-f.bottom)/2/b,A=rt([(p[0]+d[0])/2+v,(p[1]+d[1])/2+w]),T=Math.min(n,_r(Math.abs(Math.min(_,b))));return ht(Number.isFinite(T)),{longitude:A[0],latitude:A[1],zoom:T}}function fh(i=0){return typeof i==`number`?{top:i,bottom:i,left:i,right:i}:(ht(Number.isFinite(i.top)&&Number.isFinite(i.bottom)&&Number.isFinite(i.left)&&Number.isFinite(i.right)),i)}var $a=Math.PI/180;function Fi(i,t=0){let{width:e,height:r,unproject:s}=i,n={targetZ:t},o=s([0,r],n),a=s([e,r],n),c,l;return(i.fovy?.5*i.fovy*$a:Math.atan(.5/i.altitude))>(90-i.pitch)*$a-.01?(c=Ha(i,0,t),l=Ha(i,e,t)):(c=s([0,0],n),l=s([e,0],n)),[o,a,l,c]}function Ha(i,t,e){let{pixelUnprojectionMatrix:r}=i,s=Ft(r,[t,0,1,1]),n=Ft(r,[t,i.height,1,1]),a=(e*i.distanceScales.unitsPerMeter[2]-s[2])/(n[2]-s[2]),l=rt(Qi$1.lerp([],s,n,a));return l.push(e),l}var Wi=10;var vr=16777215;function Xa(i,t){i.length===Wi?S.warn(`pickMultipleObjects can only exclude ${Wi} previously picked objects for layers without picking buffers`)():i.push(t)}var ph=` float disabledPickingIndexCount;
1028
+ vec4 disabledPickingIndices0;
1029
+ vec4 disabledPickingIndices1;
1030
+ vec4 disabledPickingIndices2;
1031
+ `;function Za(i){return i.replace(` vec4 highlightColor;
1032
+ } picking;`,` vec4 highlightColor;
1033
+ ${ph}} picking;`)}function vn(i,t){return[i[t]||0,i[t+1]||0,i[t+2]||0,i[t+3]||0]}var mh=`vec3 picking_getPickingColorFromIndex(float objectIndex) {
1034
+ if (objectIndex < 0.0 || objectIndex >= ${vr}.0) {
1035
+ return vec3(0.0);
1036
+ }
1037
+
1038
+ for (int i = 0; i < ${Wi}; 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 gh=`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 >= ${vr}u) {
1103
+ return vec3<f32>(0.0);
1104
+ }
1105
+
1106
+ for (var i = 0; i < ${Wi}; 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
+ ${mh}`,fs:Za(Wp$1.fs),source:gh,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(i,t){let e=Wp$1.getUniforms(i,t),r=i.disabledPickingIndices||[];return e.disabledPickingIndexCount=r.length,e.disabledPickingIndices0=vn(r,0),e.disabledPickingIndices1=vn(r,4),e.disabledPickingIndices2=vn(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 yh=`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 xn={name:`layer`,source:yh,vs:Ja,fs:Ja,getUniforms:i=>({opacity:Math.pow(i.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 wh=`
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 vh=`
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 xh=Pt(Ah);var Ph=Pt(Mh);var Eh=[0,0,0,1];var Th=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function Sh(i,t){let[e,r,s]=i,n=Gt([e,r,s],t);return Number.isFinite(s)?n:[n[0],n[1],0]}function Ah({viewport:i,center:t}){return new U$3(i.viewProjectionMatrix).invert().transform(t)}function Mh({viewport:i,shadowMatrices:t}){let e=[],r=i.pixelUnprojectionMatrix,s=i.isGeospatial?void 0:1,n=[[0,0,s],[i.width,0,s],[0,i.height,s],[i.width,i.height,s],[0,0,-1],[i.width,0,-1],[0,i.height,-1],[i.width,i.height,-1]].map(o=>Sh(o,r));for(let o of t){let a=o.clone().translate(new Z$1(i.center).negate()),c=n.map(u=>a.transform(u)),l=new U$3().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(o))}return e}function Ch(i){let{shadowEnabled:t=!0,project:e}=i;if(!t||!e||!i.shadowMatrices||!i.shadowMatrices.length)return{drawShadowMap:!1,useShadowMap:!1,shadow_uShadowMap0:i.dummyShadowMap,shadow_uShadowMap1:i.dummyShadowMap};let r=ie.getUniforms(e),s=xh({viewport:e.viewport,center:r.center}),n=[],o=Ph({shadowMatrices:i.shadowMatrices,viewport:e.viewport}).slice();for(let c=0;c<i.shadowMatrices.length;c++){let l=o[c],u=l.clone().translate(new Z$1(e.viewport.center).negate());r.coordinateSystem===re(`lnglat`)&&r.projectionMode===V.WEB_MERCATOR?(o[c]=u,n[c]=s):(o[c]=l.clone().multiplyRight(Th),n[c]=u.transform(s))}let a={drawShadowMap:!!i.drawToShadowMap,useShadowMap:i.shadowMaps?i.shadowMaps.length>0:!1,color:i.shadowColor||Eh,lightId:i.shadowLightId||0,lightCount:i.shadowMatrices.length,shadow_uShadowMap0:i.dummyShadowMap,shadow_uShadowMap1:i.dummyShadowMap};for(let c=0;c<o.length;c++)a[`viewProjectionMatrix${c}`]=o[c],a[`projectCenter${c}`]=n[c];for(let c=0;c<2;c++)a[`shadow_uShadowMap${c}`]=i.shadowMaps&&i.shadowMaps[c]||i.dummyShadowMap;return a}var Gi={name:`shadow`,dependencies:[ie],vs:wh,fs:vh,inject:{"vs:DECKGL_FILTER_GL_POSITION":`
1234
+ position = shadow_setVertexPosition(geometry.position);
1235
+ `,"fs:DECKGL_FILTER_COLOR":`
1236
+ color = shadow_filterShadowColor(color);
1237
+ `},getUniforms:Ch,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 Lh=[Ni];var kh=[`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 Oh=[];function tc(i){let t=J$3.getDefaultShaderAssembler(i);for(let r of Lh)t.addDefaultModule(r);t._hookFunctions.length=0;let e=i===`glsl`?kh:Oh;for(let r of e)t.addShaderHook(r);return t}var Pn=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:s,padding:n=0,copy:o=!1,initialize:a=!1,maxCount:c}){let l=s||t&&t.constructor||Float32Array,u=e*r+n;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=1/0;c&&(f=c*r+n);let d=this._allocate(l,u,a,f);return t&&o?d.set(t):a||d.fill(0,0,4),this._release(t),d}release(t){this._release(t)}_allocate(t,e,r,s){let n=Math.max(Math.ceil(e*this.opts.overAlloc),1);n>s&&(n=s);let o=this._pool,a=t.BYTES_PER_ELEMENT*n,c=o.findIndex(l=>l.byteLength>=a);if(c>=0){let l=new t(o.splice(c,1)[0],0,n);return r&&l.fill(0),l}return new t(n)}_release(t){if(!ArrayBuffer.isView(t))return;let e=this._pool,{buffer:r}=t,{byteLength:s}=r,n=e.findIndex(o=>o.byteLength>=s);n<0?e.push(r):(n>0||e.length<this.opts.poolSize)&&e.splice(n,0,r),e.length>this.opts.poolSize&&e.shift()}};var pt=new Pn;function ke(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Rt(i,t){let e=i%t;return e<0?t+e:e}function rc(i){return[i[12],i[13],i[14]]}function ic(i){return{left:Le(i[3]+i[0],i[7]+i[4],i[11]+i[8],i[15]+i[12]),right:Le(i[3]-i[0],i[7]-i[4],i[11]-i[8],i[15]-i[12]),bottom:Le(i[3]+i[1],i[7]+i[5],i[11]+i[9],i[15]+i[13]),top:Le(i[3]-i[1],i[7]-i[5],i[11]-i[9],i[15]-i[13]),near:Le(i[3]+i[2],i[7]+i[6],i[11]+i[10],i[15]+i[14]),far:Le(i[3]-i[2],i[7]-i[6],i[11]-i[10],i[15]-i[14])}}var ec=new Z$1;function Le(i,t,e,r){ec.set(i,t,e);let s=ec.len();return{distance:r/s,normal:new Z$1(-i/s,-t/s,-e/s)}}function Dh(i){return i-Math.fround(i)}var xr;function Oe(i,t){let{size:e=1,startIndex:r=0}=t,s=t.endIndex!==void 0?t.endIndex:i.length,n=(s-r)/e;xr=pt.allocate(xr,n,{type:Float32Array,size:e*2});let o=r,a=0;for(;o<s;){for(let c=0;c<e;c++){let l=i[o++];xr[a+c]=l,xr[a+c+e]=Dh(l)}a+=e*2}return xr.subarray(0,n*e*2)}function sc(i){let t=null,e=!1;for(let r of i)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 Bh=Math.PI/180;var jh=ke();var nc=[0,0,0];var Nh={unitsPerMeter:[1,1,1],metersPerUnit:[1,1,1]};function Uh({width:i,height:t,orthographic:e,fovyRadians:r,focalDistance:s,padding:n,near:o,far:a}){let c=i/t,l=e?new U$3().orthographic({fovy:r,aspect:c,focalDistance:s,near:o,far:a}):new U$3().perspective({fovy:r,aspect:c,near:o,far:a});if(n){let{left:u=0,right:f=0,top:d=0,bottom:p=0}=n,m=za$1((u+i-f)/2,0,i)-i/2,g=za$1((d+t-p)/2,0,t)-t/2;l[8]-=m*2/i,l[9]+=g*2/t}return l}var Yi=class i{constructor(t={}){this._frustumPlanes={},this.id=t.id||this.constructor.displayName||`viewport`,this.x=t.x||0,this.y=t.y||0,this.width=t.width||1,this.height=t.height||1,this.zoom=t.zoom||0,this.padding=t.padding,this.distanceScales=t.distanceScales||Nh,this.focalDistance=t.focalDistance||1,this.position=t.position||nc,this.modelMatrix=t.modelMatrix||null;let{longitude:e,latitude:r}=t;this.isGeospatial=Number.isFinite(r)&&Number.isFinite(e),this._initProps(t),this._initMatrices(t),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?V.WEB_MERCATOR:V.WEB_MERCATOR_AUTO_OFFSET:V.IDENTITY}equals(t){return t instanceof i?this===t?!0:t.width===this.width&&t.height===this.height&&t.scale===this.scale&&t.projectionMode===this.projectionMode&&t.resolution===this.resolution&&Mt$2(t.distanceScales.unitsPerMeter,this.distanceScales.unitsPerMeter)&&Mt$2(t.projectionMatrix,this.projectionMatrix)&&Mt$2(t.viewMatrix,this.viewMatrix):!1}project(t,{topLeft:e=!0}={}){let s=Wt(this.projectPosition(t),this.pixelProjectionMatrix),[n,o]=s,a=e?o:this.height-o;return t.length===2?[n,a]:[n,a,s[2]]}unproject(t,{topLeft:e=!0,targetZ:r}={}){let[s,n,o]=t,a=e?n:this.height-n,c=r&&r*this.distanceScales.unitsPerMeter[2],l=Gt([s,a,o],this.pixelUnprojectionMatrix,c),[u,f,d]=this.unprojectPosition(l);return Number.isFinite(o)?[u,f,d]:Number.isFinite(r)?[u,f,r]:[u,f]}projectPosition(t){let[e,r]=this.projectFlat(t);return[e,r,(t[2]||0)*this.distanceScales.unitsPerMeter[2]]}unprojectPosition(t){let[e,r]=this.unprojectFlat(t);return[e,r,(t[2]||0)*this.distanceScales.metersPerUnit[2]]}projectFlat(t){if(this.isGeospatial){let e=nt(t);return e[1]=za$1(e[1],-318,830),e}return t}unprojectFlat(t){return this.isGeospatial?rt(t):t}getBounds(t={}){let e={targetZ:t.z||0},r=this.unproject([0,0],e),s=this.unproject([this.width,0],e),n=this.unproject([0,this.height],e),o=this.unproject([this.width,this.height],e);return[Math.min(r[0],s[0],n[0],o[0]),Math.min(r[1],s[1],n[1],o[1]),Math.max(r[0],s[0],n[0],o[0]),Math.max(r[1],s[1],n[1],o[1])]}getDistanceScales(t){return t&&this.isGeospatial?Re({longitude:t[0],latitude:t[1],highPrecision:!0}):this.distanceScales}containsPixel({x:t,y:e,width:r=1,height:s=1}){return t<this.x+this.width&&this.x<t+r&&e<this.y+this.height&&this.y<e+s}getFrustumPlanes(){return this._frustumPlanes.near?this._frustumPlanes:(Object.assign(this._frustumPlanes,ic(this.viewProjectionMatrix)),this._frustumPlanes)}panByPosition(t,e,r){return null}_initProps(t){let e=t.longitude,r=t.latitude;this.isGeospatial&&(Number.isFinite(t.zoom)||(this.zoom=wn({latitude:r})+Math.log2(this.focalDistance)),this.distanceScales=t.distanceScales||Re({latitude:r,longitude:e}));let s=Math.pow(2,this.zoom);this.scale=s;let{position:n,modelMatrix:o}=t,a=nc;if(n&&(a=o?new U$3(o).transformAsVector(n,[]):n),this.isGeospatial){let c=this.projectPosition([e,r,0]);this.center=new Z$1(a).scale(this.distanceScales.unitsPerMeter).add(c)}else this.center=this.projectPosition(a)}_initMatrices(t){let{viewMatrix:e=jh,projectionMatrix:r=null,orthographic:s=!1,fovyRadians:n,fovy:o=75,near:a=.1,far:c=1e3,padding:l=null,focalDistance:u=1}=t;this.viewMatrixUncentered=e,this.viewMatrix=new U$3().multiplyRight(e).translate(new Z$1(this.center).negate()),this.projectionMatrix=r||Uh({width:this.width,height:this.height,orthographic:s,fovyRadians:n||o*Bh,focalDistance:u,padding:l,near:a,far:c});let f=ke();Hi$1.multiply(f,f,this.projectionMatrix),Hi$1.multiply(f,f,this.viewMatrix),this.viewProjectionMatrix=f,this.viewMatrixInverse=Hi$1.invert([],this.viewMatrix)||this.viewMatrix,this.cameraPosition=rc(this.viewMatrixInverse);let d=ke(),p=ke();Hi$1.scale(d,d,[this.width/2,-this.height/2,1]),Hi$1.translate(d,d,[1,-1,0]),Hi$1.multiply(p,d,this.viewProjectionMatrix),this.pixelProjectionMatrix=p,this.pixelUnprojectionMatrix=Hi$1.invert(ke(),this.pixelProjectionMatrix),this.pixelUnprojectionMatrix||S.warn(`Pixel project matrix not invertible`)()}};Yi.displayName=`Viewport`;var De=Yi;var $i=class i extends De{constructor(t={}){let{latitude:e=0,longitude:r$15=0,zoom:s$5=0,pitch:n=0,bearing:o=0,nearZMultiplier:a=.1,farZMultiplier:c=1.01,nearZ:l,farZ:u,orthographic:f=!1,projectionMatrix:d,repeat:p=!1,worldOffset:m=0,position:g,padding:_,legacyMeterSizes:b=!1}=t,{width:v,height:w,altitude:x=1.5}=t,A=Math.pow(2,s$5);v=v||1,w=w||1;let T,L=null;if(d)x=d[5]/2,T=It(x);else{t.fovy?(T=t.fovy,x=se(T)):T=It(x);let C;if(_){let{top:M=0,bottom:W=0}=_;C=[0,za$1((M+w-W)/2,0,w)-w/2]}L=bn({width:v,height:w,scale:A,center:g&&[0,0,g[2]*wr(e)],offset:C,pitch:n,fovy:T,nearZMultiplier:a,farZMultiplier:c}),Number.isFinite(l)&&(L.near=l),Number.isFinite(u)&&(L.far=u)}let I=Vi({height:w,pitch:n,bearing:o,scale:A,altitude:x});m&&(I=new U$3().translate([512*m,0,0]).multiplyLeft(I)),super(s(r(s(r({},t),{width:v,height:w,viewMatrix:I,longitude:r$15,latitude:e,zoom:s$5}),L),{fovy:T,focalDistance:x})),this.latitude=e,this.longitude=r$15,this.zoom=s$5,this.pitch=n,this.bearing=o,this.altitude=x,this.fovy=T,this.orthographic=f,this._subViewports=p?[]:null,this._pseudoMeters=b,Object.freeze(this)}get subViewports(){if(this._subViewports&&!this._subViewports.length){let t=this.getBounds(),e=Math.floor((t[0]+180)/360),r$16=Math.ceil((t[2]-180)/360);for(let s$6=e;s$6<=r$16;s$6++){let n=s$6?new i(s(r({},this),{worldOffset:s$6})):this;this._subViewports.push(n)}}return this._subViewports}equals(t){return t instanceof i&&t._pseudoMeters===this._pseudoMeters&&super.equals(t)}projectPosition(t){if(this._pseudoMeters)return super.projectPosition(t);let[e,r]=this.projectFlat(t);return[e,r,(t[2]||0)*wr(t[1])]}unprojectPosition(t){if(this._pseudoMeters)return super.unprojectPosition(t);let[e,r]=this.unprojectFlat(t);return[e,r,(t[2]||0)/wr(r)]}addMetersToLngLat(t,e){return br(t,e)}panByPosition(t,e,r){let s=Gt(e,this.pixelUnprojectionMatrix),n=this.projectFlat(t),o=Qi$1.add([],n,Qi$1.negate([],s)),a=Qi$1.add([],this.center,o),[c,l]=this.unprojectFlat(a);return{longitude:c,latitude:l}}panByPosition3D(t,e){let r=t[2]||0,s=Qi$1.sub([],t,this.unproject(e,{targetZ:r}));return{longitude:this.longitude+s[0],latitude:this.latitude+s[1]}}getBounds(t={}){let e=Fi(this,t.z||0);return[Math.min(e[0][0],e[1][0],e[2][0],e[3][0]),Math.min(e[0][1],e[1][1],e[2][1],e[3][1]),Math.max(e[0][0],e[1][0],e[2][0],e[3][0]),Math.max(e[0][1],e[1][1],e[2][1],e[3][1])]}fitBounds(t,e={}){let{width:r$17,height:s}=this,{longitude:n,latitude:o,zoom:a}=zi(r({width:r$17,height:s,bounds:t},e));return new i({width:r$17,height:s,longitude:n,latitude:o,zoom:a})}};$i.displayName=`WebMercatorViewport`;var ne=$i;function oe(i,t=()=>!0){return Array.isArray(i)?oc(i,t,[]):t(i)?[i]:[]}function oc(i,t,e){let r=-1;for(;++r<i.length;){let s=i[r];Array.isArray(s)?oc(s,t,e):t(s)&&e.push(s)}return e}function En({target:i,source:t,start:e=0,count:r=1}){let s=t.length,n=r*s,o=0;for(let a=e;o<s;o++)i[a++]=t[o];for(;o<n;)o<n-o?(i.copyWithin(e+o,e,e+o),o*=2):(i.copyWithin(e+o,e,e+n-o),o=n);return i}function B(i,t,e){if(i===t)return!0;if(!e||!i||!t)return!1;if(Array.isArray(i)){if(!Array.isArray(t)||i.length!==t.length)return!1;for(let r=0;r<i.length;r++)if(!B(i[r],t[r],e-1))return!1;return!0}if(Array.isArray(t))return!1;if(typeof i==`object`&&typeof t==`object`){let r=Object.keys(i),s=Object.keys(t);if(r.length!==s.length)return!1;for(let n of r)if(!t.hasOwnProperty(n)||!B(i[n],t[n],e-1))return!1;return!0}return!1}function R(i,t){if(!i)throw new Error(t||`deck.gl: assertion failed.`)}var Yt={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 Be=Symbol.for(`component`);var ot=Symbol.for(`propTypes`);var Hi=Symbol.for(`deprecatedProps`);var Lt=Symbol.for(`asyncPropDefaults`);var Et=Symbol.for(`asyncPropOriginal`);var mt=Symbol.for(`asyncPropResolved`);var Tn={};function ac(i){Tn=i}function N(i,t,e,r){S.level>0&&Tn[i]&&Tn[i].call(null,t,e,r)}var Pr=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,s=t;typeof t==`string`&&(s=xe(t)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(n=>{this._loadCount===r&&(this.isLoaded=!0,this._error=void 0,this._content=n)}).catch(n=>{this._loadCount===r&&(this.isLoaded=!0,this._error=n||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=t);for(let n of this._subscribers)n.onChange(this.getData())}};var Er=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:s=!0}){let n=this._resources[t];n?n.setData(e,r):(n=new Pr(t,e,this._context),this._resources[t]=n),n.persistent=s}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 s=e[r],n=this._resources[s.resourceId];n&&n.unsubscribe(s)}delete this._consumers[t],this.prune()}}subscribe({resourceId:t,onChange:e,consumerId:r,requestId:s=`default`}){let{_resources:n,protocol:o}=this;t.startsWith(o)&&(t=t.replace(o,``),n[t]||this.add({resourceId:t,data:null,persistent:!1}));let a=n[t];if(this._track(r,s,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,s){let n=this._consumers,o=n[t]=n[t]||{},a=o[e],c=a&&a.resourceId&&this._resources[a.resourceId];c&&(c.unsubscribe(a),this.prune()),r&&(a?(a.onChange=s,a.resourceId=r.id):a={onChange:s,resourceId:r.id},o[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 Vh=`layerManager.setLayers`;var zh=`layerManager.activateViewport`;var Tr=class{constructor(t,e){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{N(zh,this,a),a&&(this.context.viewport=a)};let{deck:r,stats:s,viewport:n,timeline:o}=e||{};this.layers=[],this.resourceManager=new Er({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:[xn],renderPass:void 0,stats:s||new N$2({id:`deck.gl`}),viewport:n||new De({id:`DEFAULT-INITIAL-VIEWPORT`}),timeline:o||new ni$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 s=r.getNeedsRedraw(t);e=e||s}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){N(Vh,this,e,t),this._lastRenderedLayers=t;let r=oe(t,Boolean);for(let s of r)s.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(s=>s.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 o of t)r[o.id]?S.warn(`Multiple old layers with same id ${o.id}`)():r[o.id]=o;if(this._defaultShaderModulesChanged){for(let o of t)o.setNeedsUpdate(),o.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let s=[];this._updateSublayersRecursively(e,r,s),this._finalizeOldLayers(r);let n=!1;for(let o of s)if(o.hasUniformTransition()){n=`Uniform transition in ${o}`;break}this._needsUpdate=n,this.layers=s}_updateSublayersRecursively(t,e,r){for(let s of t){s.context=this.context;let n=e[s.id];n===null&&S.warn(`Multiple new layers with same id ${s.id}`)(),e[s.id]=null;let o=null;try{this._debug&&n!==s&&s.validateProps(),n?(this._transferLayerState(n,s),this._updateLayer(s)):this._initializeLayer(s),r.push(s),o=s.isComposite?s.getSubLayers():null}catch(a){this._handleError(`matching`,a,s)}o&&this._updateSublayersRecursively(o,e,r)}}_finalizeOldLayers(t){for(let e in t){let r=t[e];r&&this._finalizeLayer(r)}}_initializeLayer(t){try{t._initialize(),t.lifecycle=Yt.INITIALIZED}catch(e){this._handleError(`initialization`,e,t)}}_transferLayerState(t,e){e._transferState(t),e.lifecycle=Yt.MATCHED,e!==t&&(t.lifecycle=Yt.AWAITING_GC)}_updateLayer(t){try{t._update()}catch(e){this._handleError(`update`,e,t)}}_finalizeLayer(t){this._needsRedraw=this._needsRedraw||`finalized ${t}`,t.lifecycle=Yt.AWAITING_FINALIZATION;try{t._finalize(),t.lifecycle=Yt.FINALIZED}catch(e){this._handleError(`finalization`,e,t)}}};var $t=`default-canvas`;var Sr=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,s=!(`x`in t)||e.containsPixel(t);return r&&s}):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(),s={x:t[0],y:t[1]};for(let n=r.length-1;n>=0;--n){let o=r[n];if(o.containsPixel(s)){let a=t.slice();return a[0]-=o.x,a[1]-=o.y,o.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=oe(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):S.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||$t}_getCanvasDimensions(t){let[r,s]=(this._getCanvasContext?.(t.id))?.getCSSSize()||[this.width,this.height];return{width:r,height:s}}_getViewEventManager(t){let e=this.getCanvasId(t)||$t;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:n=>this.getView(t.id)?.makeViewport(r({viewState:n},this._getCanvasDimensions(t))),pickPosition:(n,o)=>this._pickPosition?.(n,o,t.id)})}_updateController(t,e,r$19,s$7){let n=t.controller;if(n&&r$19){let o=s(r(r({},e),n),{id:t.id,x:r$19.x,y:r$19.y,width:r$19.width,height:r$19.height});return(!s$7||s$7.constructor!==n.type)&&(s$7=this._createController(t,o)),s$7&&s$7.setProps(o),s$7}return null}_rebuildViewports(){let{views:t}=this,{oldControllers:e,oldViewEventManagers:r}=this._startViewportRebuild(),s=!1;for(let n=t.length;n--;){let o=t[n],{width:a,height:c}=this._getCanvasDimensions(o),l=this._getViewEventManager(o);this._viewEventManagers[o.id]=l;let u=this.getViewState(o),f=o.makeViewport({viewState:u,width:a,height:c}),d=this._getReusableController(e[o.id],r[o.id],l),p=!!o.controller;p&&!d&&(s=!0),(s||!p)&&d&&(d.finalize(),d=null),this.controllers[o.id]=this._updateController(o,u,f,d),f&&this._viewports.unshift(f)}for(let n in e){let o=e[n];o&&!this.controllers[n]&&o.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,s)=>!t[s].equals(e[s]))}};var Fh=/^(?:\d+\.?\d*|\.\d+)$/;function K(i){switch(typeof i){case`number`:if(!Number.isFinite(i))throw new Error(`Could not parse position string ${i}`);return{type:`literal`,value:i};case`string`:try{return new An(Wh(i)).parseExpression()}catch(t){let e=t instanceof Error?t.message:String(t);throw new Error(`Could not parse position string ${i}: ${e}`)}default:throw new Error(`Could not parse position string ${i}`)}}function Sn(i,t){switch(i.type){case`literal`:return i.value;case`percentage`:return Math.round(i.value*t);case`binary`:let e=Sn(i.left,t),r=Sn(i.right,t);return i.operator===`+`?e+r:e-r;default:throw new Error(`Unknown layout expression type`)}}function J(i,t){return Sn(i,t)}function Wh(i){let t=[],e=0;for(;e<i.length;){let r=i[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 s=e,n=r===`.`;for(e++;e<i.length;){let a=i[e];if(cc(a)){e++;continue}if(a===`.`&&!n){n=!0,e++;continue}break}let o=i.slice(s,e);if(!Fh.test(o))throw new Error(`Invalid number token`);t.push({type:`number`,value:parseFloat(o)});continue}if(lc(r)){let s=e;for(;e<i.length&&lc(i[e]);)e++;let n=i.slice(s,e).toLowerCase();t.push({type:`word`,value:n});continue}throw new Error(`Invalid token in position string`)}return t}var An=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(;Gh(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(i){return i>=`0`&&i<=`9`}function lc(i){return i>=`a`&&i<=`z`||i>=`A`&&i<=`Z`}function Gh(i){return!!(i&&i.type===`symbol`&&(i.value===`+`||i.value===`-`))}function uc(i,t){let e=r({},i);for(let r in t)r!==`id`&&(Array.isArray(e[r])&&Array.isArray(t[r])?e[r]=Yh(e[r],t[r]):e[r]=t[r]);return e}function Yh(i,t){i=i.slice();for(let e=0;e<t.length;e++){let r=t[e];Number.isFinite(r)&&(i[e]=r)}return i}var ae=class{constructor(t){let{id:e,x:r$20=0,y:s$8=0,width:n=`100%`,height:o=`100%`,padding:a=null}=t;this.id=e||this.constructor.displayName||`view`,this.props=s(r({},t),{id:this.id}),this._x=K(r$20),this._y=K(s$8),this._width=K(n),this._height=K(o),this._padding=a&&{left:K(a.left||0),right:K(a.right||0),top:K(a.top||0),bottom:K(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 s=this.getDimensions({width:t,height:e});if(!s.height||!s.width)return null;return new(this.getViewportType(r$21))(r(r(r({},r$21),this.props),s))}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:J(this._x,t),y:J(this._y,e),width:J(this._width,t),height:J(this._height,e)};return this._padding&&(r.padding={left:J(this._padding.left,t),top:J(this._padding.top,e),right:J(this._padding.right,t),bottom:J(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 gt=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 $h={mode:`hard`};var Mn={BREAK:1,SNAP_TO_END:2,IGNORE:3};var Hh=i=>i;var qh=Mn.BREAK;var Ar=class{constructor(t){this._onTransitionUpdate=e=>{let{time:r$22,settings:{interpolator:s,startProps:n,endProps:o,duration:a,easing:c}}=e,l=c(r$22/a),u=s.interpolateProps(n,o,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 gt(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 s=r$23;if(this.transition.inProgress){let{interruption:n,endProps:o}=this.transition.settings;s=r(r({},r$23),n===Mn.SNAP_TO_END?o:this.propsInTransition||r$23)}this._triggerTransition(s,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===Mn.IGNORE||this._isUpdateDueToCurrentTransition(e):this._isTransitionEnabled(e)?e.transitionInterpolator.arePropsEqual(t,e):!0}_triggerTransition(t,e){let r=this.getControllerState(t,hc),s=this.getControllerState(e,$h).shortestPathFrom(r),n=e.transitionInterpolator,o=n.getDuration?n.getDuration(t,e):e.transitionDuration;if(o===0)return;let a=n.initializeProps(t,s);this.propsInTransition={};let c={duration:o,easing:e.transitionEasing||Hh,interpolator:n,interruption:e.transitionInterruption||qh,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 ce=class{constructor(t){let{compare:e,extract:r,required:s}=t;this._propsToCompare=e,this._propsToExtract=r||e,this._requiredProps=s}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={},s={};for(let n of this._propsToExtract)(n in t||n in e)&&(r[n]=t[n],s[n]=e[n]);return this._checkRequiredProps(r),this._checkRequiredProps(s),{start:r,end:s}}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 Zh=[`longitude`,`latitude`,`zoom`,`bearing`,`pitch`];var Xh=[`longitude`,`latitude`,`zoom`];var kt=class extends ce{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:Zh,required:Xh},super(r.transitionProps),this.opts=r}initializeProps(t,e){let r=super.initializeProps(t,e),{makeViewport:s,around:n}=this.opts;if(s&&n){let o=s(t),a=s(e),c=o.unproject(n);r.start.around=n,Object.assign(r.end,{around:a.project(c),aroundPosition:c,width:e.width,height:e.height})}return r}interpolateProps(t,e,r$24){let s={};for(let n of this._propsToExtract)s[n]=Oi$1(t[n]||0,e[n]||0,r$24);if(e.aroundPosition&&this.opts.makeViewport){let n=this.opts.makeViewport(r(r({},e),s));Object.assign(s,n.panByPosition(e.aroundPosition,Oi$1(t.around,e.around,r$24)))}return s}};var Tt={transitionDuration:0};var Kh=300;var Jh=300;var Cn=i=>1-(1-i)*(1-i);var Qh=i=>i===1?1:1-Math.pow(2,-10*i);var le={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 ue={};var fe=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 Ar(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:s}=t;return[s.x-e,s.y-r]}getZoomPosition(t){if(this.zoomAround===`pointer`)return t;let e=this.makeViewport(this.controllerState.getViewportProps()),[r,s]=Wt(e.center,e.pixelProjectionMatrix);return[r,s]}isPointInBounds(t,e){let{width:r,height:s}=this.props;if(e&&e.handled)return!1;let n=t[0]>=0&&t[0]<=r&&t[1]>=0&&t[1]<=s;return n&&e&&e.stopPropagation(),n}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?Kh:0;let{scrollZoom:s$9=!0,dragPan:n=!0,dragRotate:o=!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(le.WHEEL,g&&s$9),this.toggleEvents(le.PAN,g),this.toggleEvents(le.PINCH,g&&(l||f===`rotate`)),this.toggleEvents(le.MULTI_PAN,g&&!!f),this.toggleEvents(le.DOUBLE_CLICK,g&&a),this.toggleEvents(le.DOUBLE_CLICK_DRAG,g&&c),this.toggleEvents(le.KEYBOARD,g&&m),this.scrollZoom=s$9,this.dragPan=n,this.dragRotate=o,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 s=r(r({},t.getViewportProps()),e),n=this.controllerState!==t;if(this.state=t.getState(),this._setInteractionState(r$27),n){let o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:o,viewId:this.props.id})}}_onTransition(t){this.onViewStateChange(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(n=>!B(this.props[n],r$28[n],1))?s(r({},this._getTransitionProps()),{transitionDuration:Jh,transitionEasing:Qh}):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 s=r?`pan`:`rotate`,n=this._getConstraintContext(s,`start`),o=r?this.controllerState.panStart({pos:e},n):this.controllerState.rotateStart({pos:e},n);return this._panMove=r,this.updateViewport(o,Tt,{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,Tt,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(t){let{inertia:e}=this;if(this.dragPan&&e&&t.velocity){let r$29=this.getCenter(t),s$10=[r$29[0]+t.velocityX*e/2,r$29[1]+t.velocityY*e/2],n=this.controllerState.pan({pos:s$10}).panEnd();this.updateViewport(n,s(r({},this._getTransitionProps()),{transitionDuration:e,transitionEasing:Cn}),{isDragging:!1,isPanning:!0})}else{let r=this.controllerState,s=this._getConstraintContext(`pan`,`end`),n=r.panEnd(s),o=this._getReboundTransition(s,n);this.updateViewport(n,o,{isDragging:!1,isPanning:!!o})}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,Tt,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(t){let{inertia:e}=this;if(this.dragRotate&&e&&t.velocity){let r$30=this.getCenter(t),s$11=[r$30[0]+t.velocityX*e/2,r$30[1]+t.velocityY*e/2],n=this.controllerState.rotate({pos:s$11}).rotateEnd();this.updateViewport(n,s(r({},this._getTransitionProps()),{transitionDuration:e,transitionEasing:Cn}),{isDragging:!1,isRotating:!0})}else{let r=this.controllerState,s=this._getConstraintContext(`rotate`,`end`),n=r.rotateEnd(s),o=this._getReboundTransition(s,n);this.updateViewport(n,o,{isDragging:!1,isRotating:!!o})}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:s$12=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:n}=t,o=2/(1+Math.exp(-Math.abs(n*r$31)));n<0&&o!==0&&(o=1/o);let a=this.getZoomPosition(e),c=s$12?s(r({},this._getTransitionProps({around:a})),{transitionDuration:250}):Tt,l=this.controllerState.zoom({pos:a,scale:o});return this.updateViewport(l,c,{isZooming:!0,isPanning:!0}),s$12||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 s$13=t.pointerType===`trackpad`,n={x:r$32.x-(s$13?0:t.deltaX),y:r$32.y-(s$13?0:t.deltaY)},o=s(r({},t),{offsetCenter:n}),a=this.getCenter(o),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=n,this.updateViewport(c,Tt,{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 s=e===`pan`?this._onPanMoveEnd(r):this._onPanRotateEnd(r);return this._resetMultiPan(),s}_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 ue._startPinchRotation=t.rotation,ue._lastPinchEvent=t,this.updateViewport(r,Tt,{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,s=this.getCenter(t);e=e.zoom({pos:this.getZoomPosition(s),scale:r},this._getConstraintContext(`zoom`,`update`))}if(this.touchRotate){let{rotation:r}=t;e=e.rotate({deltaAngleX:ue._startPinchRotation-r},this._getConstraintContext(`rotate`,`update`))}return this.updateViewport(e,Tt,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),ue._lastPinchEvent=t,!0}_onPinchEnd(t){if(!this.isDragging())return!1;let{inertia:e}=this,{_lastPinchEvent:r$34}=ue;if(this.touchZoom&&e&&r$34&&t.scale!==r$34.scale){let s$14=this.getCenter(t),n=this.getZoomPosition(s$14),o=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);o=o.zoom({pos:n,scale:l}).zoomEnd(),this.updateViewport(o,s(r({},this._getTransitionProps({around:n})),{transitionDuration:e,transitionEasing:Cn}),{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(e)}else{let s=this.controllerState,n=this._getConstraintContext(`zoom`,`end`),o=this._getConstraintContext(`rotate`,`end`),a=s.zoomEnd(n).rotateEnd(o),c=this._getReboundTransition(this.touchZoom?n:o,a);this.updateViewport(a,c,{isDragging:!1,isPanning:!!c&&this.touchZoom,isZooming:!!c&&this.touchZoom,isRotating:!!c&&this.touchRotate})}return ue._startPinchRotation=null,ue._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),s=this.getZoomPosition(e),n=this.controllerState.zoom({pos:s,scale:r?.5:2});return this.updateViewport(n,this._getTransitionProps({around:s}),{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,Tt,{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,Tt,{isDragging:!0,isPanning:!0,isZooming:!0}),!0}_onDoubleClickDragEnd(t){if(!this._doubleClickDragAnchor)return!1;this._doubleClickDragAnchor=null;let r=this.controllerState,s=this._getConstraintContext(`zoom`,`end`),n=r.zoomEnd(s),o=this._getReboundTransition(s,n);return this.updateViewport(n,o,{isDragging:!1,isPanning:!!o,isZooming:!!o}),this._suppressDoubleClickUntil=Date.now()+100,this.blockEvents(100),!0}_onKeyDown(t){if(!this.keyboard)return!1;let e=this.isFunctionKeyPressed(t),{zoomSpeed:r,moveSpeed:s,rotateSpeedX:n,rotateSpeedY:o}=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(n),l.isRotating=!0):(c=a.moveLeft(s),l.isPanning=!0);break;case`ArrowRight`:e?(c=a.rotateRight(n),l.isRotating=!0):(c=a.moveRight(s),l.isPanning=!0);break;case`ArrowUp`:e?(c=a.rotateUp(o),l.isRotating=!0):(c=a.moveUp(s),l.isPanning=!0);break;case`ArrowDown`:e?(c=a.rotateDown(o),l.isRotating=!0):(c=a.moveDown(s),l.isPanning=!0);break;default:return!1}return this.updateViewport(c,this._getTransitionProps(),l),!0}_getTransitionProps(t){let{transition:e}=this;return!e||!e.transitionInterpolator?Tt:t?s(r({},e),{transitionInterpolator:new kt(s(r(r({},t),e.transitionInterpolator.opts),{makeViewport:this.controllerState.makeViewport}))}):e}};var Ot=Symbol(`constraintAround`);var Mr=class{constructor(t,e,r,s){this.makeViewport=r,this._viewportProps=this.applyConstraints(t,s),this._state=e}getViewportProps(){return this._viewportProps}getState(){return this._state}};function qi(i,t,e){let r=i-t;return r&&Number.isFinite(r)?t+r*e/(e+Math.abs(r)):t}function je(i,t,e){let r=J(K(e?.left??0),i),s=J(K(e?.right??0),i),n=J(K(e?.top??0),t),o=J(K(e?.bottom??0),t);return{x:r,y:n,width:i-r-s,height:t-n-o}}function Zi(i,t,e){let[r,s]=i.project(t);return r=Number.isFinite(r)?r:i.width/2,s=Number.isFinite(s)?s:i.height/2,{left:r-e.x,right:e.x+e.width-r,top:s-e.y,bottom:e.y+e.height-s}}var dc=5;var td=1.2;var pc=512;var mc=[[-1/0,-90],[1/0,90]];var ed=1;function Cr([i,t]){if(Math.abs(t)>90&&(t=Math.sign(t)*90),Number.isFinite(i)){let[r,s]=nt([i,t]);return[r,za$1(s,0,pc)]}let[,e]=nt([0,t]);return[i,za$1(e,0,pc)]}var Ir=class extends Mr{constructor(t){let{width:e,height:r,latitude:s,longitude:n,zoom:o,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:_,startRotatePos:b,startRotateLngLat:v,startBearing:w,startPitch:x,startZoom:A,normalize:T=!0,rubberBand:L=!1}=t,{[Ot]:I}=t;R(Number.isFinite(n)),R(Number.isFinite(s)),R(Number.isFinite(o));let C=t.maxBounds||(T?mc:null),M=t.maxBoundsPadding||null;super({width:e,height:r,latitude:s,longitude:n,zoom:o,bearing:a,pitch:c,altitude:l,maxZoom:f,minZoom:d,maxPitch:p,minPitch:m,normalize:T,position:u,maxBounds:C,maxBoundsPadding:M,rubberBand:L,[Ot]:I},{startPanLngLat:g,startZoomLngLat:_,startRotatePos:b,startRotateLngLat:v,startBearing:w,startPitch:x,startZoom:A},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 s=this.getState().startPanLngLat||this._unproject(e);if(!s)return this;let o=this.makeViewport(this.getViewportProps()).panByPosition(s,t);return this._getUpdatedState(o,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:s,startRotateLngLat:n,startBearing:o,startPitch:a}=this.getState();if(!s||o===void 0||a===void 0)return this;let c;if(t?c=this._getNewRotation(t,s,a,o):c={bearing:o+e,pitch:a+r$35},n){let l=this.makeViewport(r(r({},this.getViewportProps()),c)),u=`panByPosition3D`in l?`panByPosition3D`:`panByPosition`;return this._getUpdatedState(r(r({},c),l[u](n,s)))}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},s){let{startZoom:n,startZoomLngLat:o}=this.getState();return o||(n=this.getViewportProps().zoom,o=this._unproject(e)||this._unproject(t)),o?this._getUpdatedState({zoom:n+Math.log2(r),[Ot]:{position:o,screenPosition:t}},s):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:s,longitude:n}=r$36;return Math.abs(s-e.bearing)>180&&(r$36.bearing=s<0?s+360:s-360),Math.abs(n-e.longitude)>180&&(r$36.longitude=n<0?n+360:n-360),r$36}applyConstraints(t,e){let r$37=t,s$15=r$37[Ot];delete r$37[Ot];let{maxPitch:n,minPitch:o,pitch:a,bearing:c,normalize:l,maxBounds:u,rubberBand:f}=t;l&&(c<-180||c>180)&&(t.bearing=Rt(c+180,360)-180),t.pitch=za$1(a,o,n);let d=this._constrainZoom(t.zoom,t),p=f&&e?.mode===`elastic`;if(t.zoom=e?.mode===`preserve`?t.zoom:p?qi(t.zoom,d,ed):d,s$15){let m=this.makeViewport(t);Object.assign(t,m.panByPosition(s$15.position,s$15.screenPosition))}if(l&&(t.longitude<-180||t.longitude>180)&&(t.longitude=Rt(t.longitude+180,360)-180),u){let m=je(t.width,t.height,t.maxBoundsPadding),_=Zi(this.makeViewport(s(r({},t),{bearing:0,pitch:0})),[t.longitude,t.latitude],m),b=Cr(u[0]),v=Cr(u[1]),w=2**t.zoom,x=[b[0]+_.left/w,b[1]+_.bottom/w],A=[v[0]-_.right/w,v[1]-_.top/w],T=Cr([t.longitude,t.latitude]),L=[za$1(T[0],x[0],A[0]),za$1(T[1],x[1],A[1])],I=T.slice();if(m.width>=0&&(I[0]=e?.mode===`preserve`?T[0]:p?qi(T[0],L[0],m.width/2/w):L[0]),m.height>=0&&(I[1]=e?.mode===`preserve`?T[1]:p?qi(T[1],L[1],m.height/2/w):L[1]),I[0]!==T[0]||I[1]!==T[1]){let[C,M]=rt(I);I[0]!==T[0]&&(t.longitude=C),I[1]!==T[1]&&(t.latitude=M)}}return t}_constrainZoom(t,e){e||(e=this.getViewportProps());let{maxZoom:r,maxBounds:s}=e,n=s!==null&&e.width>0&&e.height>0,{minZoom:o}=e;if(n){let a=je(e.width,e.height,e.maxBoundsPadding),c=Cr(s[0]),l=Cr(s[1]),u=l[0]-c[0],f=l[1]-c[1];a.width>0&&Number.isFinite(u)&&u>0&&(o=Math.max(o,Math.log2(a.width/u))),a.height>0&&Number.isFinite(f)&&f>0&&(o=Math.max(o,Math.log2(a.height/f))),o>r&&(o=r)}return za$1(t,o,r)}_zoomFromCenter(t,e){let{width:r,height:s}=this.getViewportProps();return this.zoom({pos:[r/2,s/2],scale:t},e)}_panFromCenter(t,e){let{width:r,height:s}=this.getViewportProps();return this.pan({startPos:[r/2,s/2],pos:[r/2+t[0],s/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,s){let n=t[0]-e[0],o=t[1]-e[1],a=t[1],c=e[1],{width:l,height:u}=this.getViewportProps(),f=n/l,d=0;o>0?Math.abs(u-c)>dc&&(d=o/(c-u)*td):o<0&&c>dc&&(d=1-a/c),d=za$1(d,-1,1);let{minPitch:p,maxPitch:m}=this.getViewportProps(),g=s+180*f,_=r;return d>0?_=r+d*(m-r):d<0&&(_=r-d*(p-r)),{pitch:_,bearing:g}}};var Rr=class extends fe{constructor(){super(...arguments),this.ControllerState=Ir,this.transition={transitionDuration:300,transitionInterpolator:new kt({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,s=this.pickPosition(e+t[0],r+t[1]);if(s&&s.coordinate&&s.coordinate.length>=3)return s.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 s$16=t.getState();r$38.isDragging&&s$16.startRotateLngLat?r$38=s(r({},r$38),{rotationPivotPosition:s$16.startRotateLngLat}):r$38.isDragging===!1&&(r$38=s(r({},r$38),{rotationPivotPosition:void 0})),super.updateViewport(t,e,r$38)}};var Xi=class extends ae{constructor(t={}){super(t)}getViewportType(){return ne}get ControllerType(){return Rr}};Xi.displayName=`MapView`;var In=Xi;var rd=[255,255,255];var id=1;var sd=0;var Ki=class{constructor(t={}){this.type=`ambient`;let{color:e=rd}=t,{intensity:r=id}=t;this.id=t.id||`ambient-${sd++}`,this.color=e,this.intensity=r}};var nd=[255,255,255];var od=1;var ad=[0,0,-1];var cd=0;var Lr=class{constructor(t={}){this.type=`directional`;let{color:e=nd}=t,{intensity:r=od}=t,{direction:s=ad}=t,{_shadow:n=!1}=t;this.id=t.id||`directional-${cd++}`,this.color=e,this.intensity=r,this.type=`directional`,this.direction=new Z$1(s).normalize().toArray(),this.shadow=n}getProjectedLight(t){return this}};var kr=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 ld={depthWriteEnabled:!0,depthCompare:`less-equal`,blendColorOperation:`add`,blendColorSrcFactor:`one`,blendColorDstFactor:`one-minus-src-alpha`,blendAlphaOperation:`add`,blendAlphaSrcFactor:`one`,blendAlphaDstFactor:`one-minus-src-alpha`};var Dt=class extends kr{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(),[s,n]=e.getDrawingBufferSize(),o=t.clearCanvas??!0,a=t.clearColor??(o?[0,0,0,0]:!1),c=o?1:!1,l=o?0:!1,u=t.colorMask??15,f={viewport:[0,0,s,n]};t.colorMask&&(f.colorMask=u),t.scissorRect&&(f.scissorRect=t.scissorRect);let{shaderModuleProps:d,viewports:p,views:m,onViewportActive:g,clearStack:_=!0}=t,b=t.pass||`unknown`,v=this.device.type===`webgpu`;_&&(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 A=this._getDrawLayerParams(x,t),T=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 W of C){let H=this._drawLayersInViewport(M,{target:r,canvasContext:e,shaderModuleProps:d,viewport:W,view:T,pass:b,layers:t.layers,isPicking:t.isPicking},A);w.push(H)}}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:s=!1,layerFilter:n,cullRect:o,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:s,renderPass:r$40,cullRect:o},g={};for(let _=0;_<e.length;_++){let b=e[_],v=this._shouldDrawLayer(b,m,n,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);let x=b.context.device.type===`webgpu`?ld:null;w.layerParameters=r(r(r(r({},x),b.context.deck?.props.parameters),a?.[t.id]?.props.parameters),this.getLayerParameters(b,_,t))}d[_]=w}return d}_drawLayersInViewport(t,{layers:e,shaderModuleProps:r,pass:s,target:n,canvasContext:o,viewport:a,view:c,isPicking:l},u){let f=ud(this.device,{canvasContext:o,shaderModuleProps:r,target:n,viewport:a});if(c){let{clear:p,clearColor:m,clearDepth:g,clearStencil:_}=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(A=>A/255):m===!1&&(b=!1),g!==void 0&&(v=g),_!==void 0&&(w=_),this.device.beginRenderPass({framebuffer:n,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:_}=g;if(_&&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 ${s}`)}}}return d}shouldDrawLayer(t){return!0}getShaderModuleProps(t,e,r){return null}getLayerParameters(t,e,r){return t.props.parameters}_shouldDrawLayer(t,e,r,s){if(!(t.props.visible&&this.shouldDrawLayer(t)))return!1;e.layer=t;let o=t.parent;for(;o;){if(!o.props.visible||!o.filterSubLayer(e))return!1;e.layer=o,o=o.parent}if(r){let a=e.layer.id;if(a in s||(s[a]=r(e)),!s[a])return!1}return t.activateViewport(e.viewport),!0}_getShaderModuleProps(t,e,r,s,n){let o=s.cssToDeviceRatio(),a=t.internalState?.propsInTransition||t.props,c={layer:a,picking:{isActive:!1},project:{viewport:t.context.viewport,devicePixelRatio:o,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),n)}};function yc(i=0,t={}){let e={},r=(s,n)=>{let o=s.props._offset,a=s.id,c=s.parent&&s.parent.id,l;if(c&&!(c in t)&&r(s.parent,!1),c in e){let u=e[c]=e[c]||yc(t[c],t);l=u(s,n),e[a]=u}else Number.isFinite(o)?(l=o+(t[c]||0),e[a]=null):l=i;return n&&l>=i&&(i=l+1),t[a]=l,l};return r}function ud(i,{canvasContext:t=i.canvasContext,shaderModuleProps:e,target:r,viewport:s}){let n=e?.project?.devicePixelRatio??t.cssToDeviceRatio(),[,o]=t.getDrawingBufferSize(),a=r?r.height:o,c=s;return[c.x*n,a-(c.y+c.height)*n,c.width*n,c.height*n]}function gc(i,...t){for(let e of t)if(e)for(let r in e)i[r]?Object.assign(i[r],e[r]):i[r]=e[r];return i}var Or=class extends Dt{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`}}),s=t.createTexture({format:`depth16unorm`,width:1,height:1});this.fbo=t.createFramebuffer({id:`shadowmap`,width:1,height:1,colorAttachments:[r],depthStencilAttachment:s})}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(),s$17=t.viewports[0],n=s$17.width*r$41,o=s$17.height*r$41;(n!==e.width||o!==e.height)&&e.resize({width:n,height:o}),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 fd={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 hd=[0,0,0,200/255];var Ne=class{constructor(t={}){this.id=`lighting-effect`,this.shadowColor=hd,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(Gi),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)}}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:s,views:n}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let o=0;o<this.shadowPasses.length;o++)this.shadowPasses[o].render({layers:t,layerFilter:e,viewports:r,onViewportActive:s,views:n,shaderModuleProps:{shadow:{shadowLightId:o,dummyShadowMap:this.dummyShadowMap,shadowMatrices:this.shadowMatrices}}})}}getShaderModuleProps(t,e){let r=this.shadow?{project:e.project,shadowMaps:this.shadowPasses.map(o=>o.getShadowMap()),dummyShadowMap:this.dummyShadowMap,shadowColor:this.shadowColor,shadowMatrices:this.shadowMatrices}:{},s={enabled:!0,lights:this._getLights(t)},n=t.props.material;return{shadow:r,lighting:s,phongMaterial:n,gouraudMaterial:n}}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(Gi))}_calculateMatrices(){let t=[];for(let e of this.directionalLights){let r=new U$3().lookAt({eye:new Z$1(e.direction).negate()});t.push(r)}return t}_createShadowPasses(t){for(let e=0;e<this.directionalLights.length;e++){let r=new Or(t);this.shadowPasses[e]=r}}_applyDefaultLights(){let{ambientLight:t,pointLights:e,directionalLights:r}=this;!t&&e.length===0&&r.length===0&&(this.ambientLight=new Ki(fd),this.directionalLights.push(new Lr(_c[0]),new Lr(_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 dd=new Ne;function pd(i,t){return(i.order??1/0)-(t.order??1/0)}var Dr=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(s=>pd(s,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 s of this.effects)e[s.id]=s;let r=[];for(let s of t){let n=e[s.id],o=s;n&&n!==s?n.setProps?(n.setProps(s.props),o=n):n.cleanup(this._context):n||s.setup(this._context),r.push(o),delete e[s.id]}for(let s in e)e[s].cleanup(this._context);this.effects=r,this._resolvedEffects=r.concat(this._defaultEffects),t.some(s=>s instanceof Ne)||this._resolvedEffects.push(dd),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 Br=class extends Dt{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 he=class extends Dt{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:s,onViewportActive:n,pickingFBO:o,deviceRect:{x:a,y:c,width:l,height:u},cullRect:f,effects:d,pass:p=`picking`,pickZ:m,canvasContext:g,shaderModuleProps:_,clearColor:b}){this.pickZ=m;let v=this._resetColorEncoder(m),w=[a,c,l,u],x=super._render({target:o,layers:t,layerFilter:e,views:r,viewports:s,onViewportActive:n,cullRect:f,effects:d?.filter(T=>T.useInPicking),pass:p,canvasContext:g,isPicking:!0,shaderModuleProps:_,clearColor:b??[0,0,0,0],colorMask:15,scissorRect:w});return this._colorEncoderState=null,{decodePickingColor:v&&gd.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 s=r({},t.props.parameters),{pickable:n,operation:o}=t.props;return this._colorEncoderState?n&&o.includes(`draw`)?(Object.assign(s,md),s.blend=!0,this.device.type===`webgpu`?s.blendConstant=wc(this._colorEncoderState,t,r$43):s.blendColor=wc(this._colorEncoderState,t,r$43),o.includes(`terrain`)&&t.state?._hasPickingCover&&(s.blendAlphaSrcFactor=`one`)):o.includes(`terrain`)&&(s.blend=!1):s.blend=!1,s}_resetColorEncoder(t){return this._colorEncoderState=t?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function wc(i,t,e){let{byLayer:r,byAlpha:s}=i,n,o=r.get(t);return o?(o.viewports.push(e),n=o.a):(n=r.size+1,n<=255?(o={a:n,layer:t,viewports:[e]},r.set(t,o),s[n]=o):(S.warn(`Too many pickable layers, only picking the first 255`)(),n=0)),[0,0,0,n/255]}function gd(i,t){let e=i.byAlpha[t[3]];return e&&{pickedLayer:e.layer,pickedViewports:e.viewports,pickedObjectIndex:e.layer.decodePickingColor(t)}}var yd=`deckRenderer.renderLayers`;var jr=class{constructor(t,e={}){this.device=t,this.stats=e.stats,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Br(t),this.pickLayersPass=new he(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 s$18=this.lastPostProcessEffect?this.renderBuffers[0]:r$44.target;this.lastPostProcessEffect&&(r$44.clearColor=[0,0,0,0],r$44.clearCanvas=!0);let n=e.render(s(r({},r$44),{target:s$18})),o=`stats`in n?n.stats:n;r$44.effects&&(this.lastPostProcessEffect&&(r$44.clearCanvas=t.clearCanvas===void 0?!0:t.clearCanvas),this._postRender(r$44.effects,r$44)),this.renderCount++,N(yd,this,o,t),this._updateStats(o)}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(),[s,n]=r;e.length===0&&[0,1].map(o=>{let a=this.device.createTexture({sampler:{minFilter:`linear`,magFilter:`linear`},width:s,height:n});e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${o}`,colorAttachments:[a]}))});for(let o of e)o.resize(r)}_postRender(t,e){let{renderBuffers:r$45}=this,s$19=e.target??e.canvasContext?.getCurrentFramebuffer()??e.target,n=s(r({},e),{inputBuffer:r$45[0],swapBuffer:r$45[1]});for(let o of t)if(o.postRender){n.target=o.id===this.lastPostProcessEffect?s$19:void 0;let a=o.postRender(n);n.inputBuffer=a,n.swapBuffer=a===r$45[0]?r$45[1]:r$45[0]}}};var _d={pickedColor:null,pickedObjectIndex:-1};function Rn({pickedColors:i,decodePickingColor:t,deviceX:e,deviceY:r$46,deviceRadius:s$20,deviceRect:n}){let{x:o,y:a,width:c,height:l}=n,u=s$20*s$20,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 _=0;_<c;_++){if(i[d+3]-1>=0){let v=_+o-e,w=v*v+g;w<=u&&(u=w,f=d)}d+=4}}if(f>=0){let p=i.slice(f,f+4),m=t(p);if(m){let g=Math.floor(f/4/c),_=f/4-g*c;return s(r({},m),{pickedColor:p,pickedX:o+_,pickedY:a+g})}S.error(`Picked non-existent layer. Is picking buffer corrupt?`)()}return _d}function Ln({pickedColors:i,decodePickingColor:t}){let e=new Map;if(i){for(let r$47=0;r$47<i.length;r$47+=4)if(i[r$47+3]-1>=0){let n=i.slice(r$47,r$47+4),o=n.join(`,`);if(!e.has(o)){let a=t(n);a?e.set(o,s(r({},a),{color:n})):S.error(`Picked non-existent layer. Is picking buffer corrupt?`)()}}}return Array.from(e.values())}function Ji({pickInfo:i,viewports:t,pixelRatio:e,x:r,y:s,z:n}){let o=t[0];t.length>1&&(o=wd(i?.pickedViewports||t,{x:r,y:s}));let a;if(o){let c=[r-o.x,s-o.y];n!==void 0&&(c[2]=n),a=o.unproject(c)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:r,y:s,pixel:[r,s],coordinate:a,devicePixel:i&&`pickedX`in i?[i.pickedX,i.pickedY]:void 0,pixelRatio:e}}function kn(i){let{pickInfo:t,lastPickedInfo:e,mode:r$48,layers:s}=i,{pickedColor:n,pickedLayer:o,pickedObjectIndex:a}=t,c=o?[o]:[];if(r$48===`hover`){let f=e.index,d=e.layerId,p=o?o.props.id:null;if(p!==d||a!==f){if(p!==d){let m=s.find(g=>g.props.id===d);m&&c.unshift(m)}e.layerId=p,e.index=a,e.info=null}}let l=Ji(i),u=new Map;return u.set(null,l),c.forEach(f=>{let d=r({},l);f===o&&(d.color=n,d.index=a,d.picked=!0),d=Qi({layer:f,info:d,mode:r$48});let p=d.layer;f===o&&r$48===`hover`&&(e.info=d),u.set(p.id,d),r$48===`hover`&&p.updateAutoHighlight(d)}),u}function Qi({layer:i,info:t,mode:e}){for(;i&&t;){let r=t.layer||null;t.sourceLayer=r,t.layer=i,t=i.getPickingInfo({info:t,mode:e,sourceLayer:r}),i=i.parent}return t}function wd(i,t){for(let e=i.length-1;e>=0;e--){let r=i[e];if(r.containsPixel(t))return r}return i[0]}var Nr=class{constructor(t,e={}){this._pickable=!0,this.device=t,this.stats=e.stats,this.pickLayersPass=new he(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:s},n=this.lastPickedInfo.info){let o=n&&n.layer&&n.layer.id,a=n&&n.viewport&&n.viewport.id,c=o?r$49.find(d=>d.id===o):null,l=a&&s.find(d=>d.id===a)||s[0],f={x:t,y:e,viewport:l,coordinate:l&&l.unproject([t-l.x,e-l.y]),layer:c};return r(r({},n),f)}_resizeBuffer(t=this.device.getDefaultCanvasContext()){if(!this.pickingFBO){let s=this.device.createTexture({format:`rgba8unorm`,width:1,height:1,usage:C$1.RENDER_ATTACHMENT|C$1.COPY_SRC});if(this.pickingFBO=this.device.createFramebuffer({colorAttachments:[s],depthStencilAttachment:`depth16unorm`}),this.device.isTextureFormatRenderable(`rgba32float`)){let n=this.device.createTexture({format:`rgba32float`,width:1,height:1,usage:C$1.RENDER_ATTACHMENT|C$1.COPY_SRC}),o=this.device.createFramebuffer({colorAttachments:[n],depthStencilAttachment:`depth16unorm`});this.depthFBO=o}}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:s$21,y:n,radius:o=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:Ji({viewports:r$50,x:s$21,y:n,pixelRatio:p})};this._resizeBuffer(u);let g=u.cssToDevicePixels([s$21,n],!0),_=[g.x+Math.floor(g.width/2),g.y+Math.floor(g.height/2)],b=Math.round(o*p),{width:v,height:w}=this.pickingFBO,x=this._getPickingRect({deviceX:_[0],deviceY:_[1],deviceRadius:b,deviceWidth:v,deviceHeight:w}),A={x:s$21-o,y:n-o,width:o*2+1,height:o*2+1},T,L=[],I=new Set;for(let C=0;C<a;C++){let M;if(x){let k=await this._drawAndSampleAsync({layers:m,views:e,viewports:r$50,onViewportActive:f,deviceRect:x,cullRect:A,effects:d,pass:`picking:${c}`,canvasContext:u});M=Rn(s(r({},k),{deviceX:_[0],deviceY:_[1],deviceRadius:b,deviceRect:x}))}else M={pickedColor:null,pickedObjectIndex:-1};let W,H=this._getDepthLayers(M,m,l);if(H.length>0){let{pickedColors:k}=await this._drawAndSampleAsync({layers:H,views:e,viewports:r$50,onViewportActive:f,deviceRect:{x:M.pickedX??_[0],y:M.pickedY??_[1],width:1,height:1},cullRect:A,effects:d,pass:`picking:${c}:z`,canvasContext:u},!0);k[3]&&(W=k[0])}M.pickedLayer&&C+1<a&&(I.add(M.pickedLayer),M.pickedLayer.disablePickingIndex(M.pickedObjectIndex)),T=kn({pickInfo:M,lastPickedInfo:this.lastPickedInfo,mode:c,layers:m,viewports:r$50,x:s$21,y:n,z:W,pixelRatio:p});for(let k of T.values())k.layer&&L.push(k);if(!M.pickedColor)break}for(let C of I)C.restorePickingColors();return{result:L,emptyInfo:T.get(null)}}_pickClosestObject({layers:t,views:e,viewports:r$51,x:s$22,y:n,radius:o=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:Ji({viewports:r$51,x:s$22,y:n,pixelRatio:p})};this._resizeBuffer(u);let g=u.cssToDevicePixels([s$22,n],!0),_=[g.x+Math.floor(g.width/2),g.y+Math.floor(g.height/2)],b=Math.round(o*p),{width:v,height:w}=this.pickingFBO,x=this._getPickingRect({deviceX:_[0],deviceY:_[1],deviceRadius:b,deviceWidth:v,deviceHeight:w}),A={x:s$22-o,y:n-o,width:o*2+1,height:o*2+1},T,L=[],I=new Set;for(let C=0;C<a;C++){let M;if(x){let k=this._drawAndSample({layers:m,views:e,viewports:r$51,onViewportActive:f,deviceRect:x,cullRect:A,effects:d,pass:`picking:${c}`,canvasContext:u});M=Rn(s(r({},k),{deviceX:_[0],deviceY:_[1],deviceRadius:b,deviceRect:x}))}else M={pickedColor:null,pickedObjectIndex:-1};let W,H=this._getDepthLayers(M,m,l);if(H.length>0){let{pickedColors:k}=this._drawAndSample({layers:H,views:e,viewports:r$51,onViewportActive:f,deviceRect:{x:M.pickedX??_[0],y:M.pickedY??_[1],width:1,height:1},cullRect:A,effects:d,pass:`picking:${c}:z`,canvasContext:u},!0);k[3]&&(W=k[0])}M.pickedLayer&&C+1<a&&(I.add(M.pickedLayer),M.pickedLayer.disablePickingIndex(M.pickedObjectIndex)),T=kn({pickInfo:M,lastPickedInfo:this.lastPickedInfo,mode:c,layers:m,viewports:r$51,x:s$22,y:n,z:W,pixelRatio:p});for(let k of T.values())k.layer&&L.push(k);if(!M.pickedColor)break}for(let C of I)C.restorePickingColors();return{result:L,emptyInfo:T.get(null)}}async _pickVisibleObjectsAsync({layers:t,views:e,viewports:r,x:s,y:n,width:o=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([s,n],!0),_=g.x,b=g.y+g.height,v=u.cssToDevicePixels([s+o,n+a],!0),w=v.x+v.width,x=v.y,A={x:_,y:x,width:w-_,height:b-x},L=Ln(await this._drawAndSampleAsync({layers:p,views:e,viewports:r,onViewportActive:f,deviceRect:A,cullRect:{x:s,y:n,width:o,height:a},effects:d,pass:`picking:${c}`,canvasContext:u})),I=new Map,C=[],M=Number.isFinite(l);for(let W=0;W<L.length&&!(M&&C.length>=l);W++){let H=L[W],k={color:H.pickedColor,layer:null,index:H.pickedObjectIndex,picked:!0,x:s,y:n,pixelRatio:m};k=Qi({layer:H.pickedLayer,info:k,mode:c});let Ht=k.layer.id;I.has(Ht)||I.set(Ht,new Set);let He=I.get(Ht),qe=k.object??k.index;He.has(qe)||(He.add(qe),C.push(k))}return C}_pickVisibleObjects({layers:t,views:e,viewports:r,x:s,y:n,width:o=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([s,n],!0),_=g.x,b=g.y+g.height,v=u.cssToDevicePixels([s+o,n+a],!0),w=v.x+v.width,x=v.y,A={x:_,y:x,width:w-_,height:b-x},L=Ln(this._drawAndSample({layers:p,views:e,viewports:r,onViewportActive:f,deviceRect:A,cullRect:{x:s,y:n,width:o,height:a},effects:d,pass:`picking:${c}`,canvasContext:u})),I=new Map,C=[],M=Number.isFinite(l);for(let W=0;W<L.length&&!(M&&C.length>=l);W++){let H=L[W],k={color:H.pickedColor,layer:null,index:H.pickedObjectIndex,picked:!0,x:s,y:n,pixelRatio:m};k=Qi({layer:H.pickedLayer,info:k,mode:c});let Ht=k.layer.id;I.has(Ht)||I.set(Ht,new Set);let He=I.get(Ht),qe=k.object??k.index;He.has(qe)||(He.add(qe),C.push(k))}return C}async _drawAndSampleAsync({layers:t,views:e,viewports:r,onViewportActive:s,deviceRect:n,cullRect:o,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:s,pickingFBO:f,deviceRect:n,cullRect:o,effects:a,pass:c,canvasContext:l,pickZ:u,preRenderStats:{},isPicking:!0};for(let A of a)A.useInPicking&&(d.preRenderStats[A.id]=A.preRender(d));let{decodePickingColor:p,stats:m}=this.pickLayersPass.render(d);this._updateStats(m);let{x:g,y:_,width:b,height:v}=n,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 A=!1;for(let T=3;T<x.length;T+=4)if(x[T]!==0){A=!0;break}!A&&x.length>0&&S.warn(`Async pick readback returned only zero alpha values`,{deviceRect:n,bytes:Array.from(x.subarray(0,Math.min(x.length,16)))})()}return{pickedColors:x,decodePickingColor:p}}async _readTextureDataAsync(t,e,r){let{width:s,height:n}=e,o=t.computeMemoryLayout(e),a=this.device.createBuffer({byteLength:o.byteLength,usage:P$2.COPY_DST|P$2.MAP_READ});try{t.readBuffer(e,a);let c=await a.readAsync(0,o.byteLength),l=r.BYTES_PER_ELEMENT;if(o.bytesPerRow%l!==0)throw new Error(`Texture readback row stride ${o.bytesPerRow} is not aligned to ${l}-byte elements.`);let u=new r(c.buffer,c.byteOffset,o.byteLength/l),f=s*4,d=o.bytesPerRow/l;if(d<f)throw new Error(`Texture readback row stride ${d} is smaller than packed row length ${f}.`);let p=new r(s*n*4);for(let m=0;m<n;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:s,deviceRect:n,cullRect:o,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:s,pickingFBO:f,deviceRect:n,cullRect:o,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}=n,w=new(u?Float32Array:Uint8Array)(b*v*4);return this.device.readPixelsToArrayWebGL(f,{sourceX:g,sourceY:_,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:s}=t,n=s?.state?.terrainDrawMode===`drape`;return s&&!n?[s]:e.filter(o=>o.props.operation.includes(`terrain`))}_getPickingRect({deviceX:t,deviceY:e,deviceRadius:r,deviceWidth:s,deviceHeight:n}){let o=Math.max(0,t-r),a=Math.max(0,e-r),c=Math.min(s,t+r+1)-o,l=Math.min(n,e+r+1)-a;return c<=0||l<=0?null:{x:o,y:a,width:c,height:l}}};var bd={"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 vd=`top-left`;var bc=`root`;var ts=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((s,n)=>(s[n.id]=n,s),{});for(let s of this.getWidgets()){let{viewId:n}=s;if(n){let o=r[n];o&&(s.onViewportChange&&s.onViewportChange(o),s.onRedraw?.({viewports:[o],layers:e}))}else{if(s.onViewportChange)for(let o of t)s.onViewportChange(o);s.onRedraw?.({viewports:t,layers:e})}}this.lastViewports=r,this._updateContainers()}onHover(t,e){for(let r of this.getWidgets()){let{viewId:s}=r;(!s||s===t.viewport?.id)&&r.onHover?.(t,e)}}getCanvasBounds(t){let r=this.deck?.getCanvas?.()?.getBoundingClientRect(),s=this.parentElement?.getBoundingClientRect(),n=this.deck?.getCanvasContext?.(t?.id);if(n&&s){n.updatePosition();let[o,a]=n.getPosition(),[c,l]=n.getCSSSize();return{x:o-s.left,y:a-s.top,width:c,height:l}}return{x:r&&s?r.left-s.left:0,y:r&&s?r.top-s.top:0,width:r?.width||this.deck?.width||0,height:r?.height||this.deck?.height||0}}onEvent(t,e){let r=Ce[e.type];if(r)for(let s of this.getWidgets()){let{viewId:n}=s;(!n||n===t.viewport?.id)&&s[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 s=e[r.id];s?s.viewId!==r.viewId||s.placement!==r.placement?(this._removeWidget(s),this._addWidget(r)):r!==s&&(s.setProps(r.props),r=s):this._addWidget(r),e[r.id]=null,this.resolvedWidgets.push(r)}for(let r in e){let s=e[r];s&&this._removeWidget(s)}this.widgets=t}_addWidget(t){let{viewId:e=null,placement:r=vd}=t,s=t.props._container??e;t.widgetManager=this,t.deck=this.deck,t.rootElement=t._onAdd({deck:this.deck,viewId:e}),t.rootElement&&this._getContainer(s,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,s=this.containers[r];s||(s=document.createElement(`div`),s.style.pointerEvents=`none`,s.style.position=`absolute`,s.style.overflow=`hidden`,this.parentElement?.append(s),this.containers[r]=s);let n=s.querySelector(`.${e}`);return n||(n=globalThis.document.createElement(`div`),n.className=e,n.style.position=`absolute`,n.style.zIndex=`2`,Object.assign(n.style,bd[e]),s.append(n)),n}_updateContainers(){for(let t in this.containers){let e=this.lastViewports[t]||null,r=t===bc||e,s=this.containers[t];if(r){let n=this._getContainerBounds(e);s.style.display=`block`,s.style.left=`${n.x}px`,s.style.top=`${n.y}px`,s.style.width=`${n.width}px`,s.style.height=`${n.height}px`}else s.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 On(i,t){t&&Object.entries(t).map(([e,r])=>{e.startsWith(`--`)?i.style.setProperty(e,r):i.style[e]=r})}function vc(i,t){t&&Object.keys(t).map(e=>{e.startsWith(`--`)?i.style.removeProperty(e):i.style[e]=``})}var Ue=class{constructor(t){this.viewId=null,this.props=r(r({},this.constructor.defaultProps),t),this.id=this.props.id}setProps(t){let e=this.props,r=this.rootElement;r&&e.className!==t.className&&(e.className&&r.classList.remove(e.className),t.className&&r.classList.add(t.className)),r&&!B(e.style,t.style,1)&&(vc(r,e.style),On(r,t.style)),Object.assign(this.props,t),this.updateHTML()}updateHTML(){this.rootElement&&this.onRenderHTML(this.rootElement)}get viewIds(){return this.viewId?[this.viewId]:this.deck?.getViews().map(t=>t.id)??[]}getViewState(t){return this.deck?.viewManager?.getViewState(t)||{}}setViewState(t,e){this.deck?._onViewStateChange({viewId:t,viewState:e,interactionState:{}})}onCreateRootElement(){let t=[`deck-widget`,this.className,this.props.className],e=document.createElement(`div`);return t.filter(r=>typeof r==`string`&&r.length>0).forEach(r=>e.classList.add(r)),On(e,this.props.style),e}_onAdd(t){return this.onAdd(t)??this.onCreateRootElement()}onAdd(t){}onRemove(){}onViewportChange(t){}onRedraw(t){}onHover(t,e){}onClick(t,e){}onDrag(t,e){}onDragStart(t,e){}onDragEnd(t,e){}};Ue.defaultProps={id:`widget`,style:{},_container:null,className:``};var xd={zIndex:`1`,position:`absolute`,pointerEvents:`none`,color:`#a0a7b4`,backgroundColor:`#29323c`,padding:`10px`,top:`0`,left:`0`,display:`none`};var Ur=class extends Ue{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,xd),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 s=r(t),n=this.widgetManager?.getCanvasBounds(t.viewport),o=t.x+(n?.x||0),a=t.y+(n?.y||0);this.setTooltip(s,o,a)}setTooltip(t,e,r){let s=this.rootElement;if(s){if(typeof t==`string`)s.innerText=t;else if(t)t.text&&(s.innerText=t.text),t.html&&(s.innerHTML=t.html),t.className&&(s.className=t.className);else{this.isVisible=!1,s.style.display=`none`;return}this.isVisible=!0,s.style.display=`block`,s.style.transform=`translate(${e}px, ${r}px)`,t&&typeof t==`object`&&`style`in t&&Object.assign(s.style,t.style)}}};Ur.defaultProps=r({},Ue.defaultProps);var Vr=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={},s=[],n=new Map;for(let{canvas:a}of e){let c=this._getEventRoot(a);n.set(c,(n.get(c)||0)+1)}for(let{id:a,canvas:c}of e){let l=this._getEventRoot(c),u=n.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,s.push(a)}for(let[a,c]of Object.entries(this.targets))r[a]||(c.eventManager.destroy(),c.presentationContext.destroy());this.targets=r,this.order=s;let o=Object.fromEntries(Object.entries(r).map(([a,c])=>[a,c.eventManager]));this._haveSameEventManagers(o)||(this.eventManagers=o)}getCanvasIdFromEvent(t){return t?this._eventRootToCanvasId.get(t):void 0}getTarget(t){return this.targets[t||this.order[0]||$t]||null}_normalizeCanvasList(t=[]){let e=new Set;return t.map((r,s)=>{let n,o;return typeof r==`string`?(n=document.getElementById(r),R(n,`Canvas with id ${r} not found`),o=r):(n=r,o=n.id||`deckgl-canvas-${s}`),R(!e.has(o),`Duplicate canvas id ${o}`),e.add(o),{id:o,canvas:n}})}_haveSameEventManagers(t){let e=Object.keys(t),r=Object.keys(this.eventManagers);return e.length===r.length&&e.every(s=>t[s]===this.eventManagers[s])}};var xc=`4.5.4`;var Pd=globalThis.loaders?.parseImageNode;var Dn=typeof Image<`u`;var Bn=typeof ImageBitmap<`u`;var jn=_t?!0:!!Pd;function Pc(i){switch(i){case`auto`:return Bn||Dn||jn;case`imagebitmap`:return Bn;case`image`:return Dn;case`data`:return jn;default:throw new Error(`@loaders.gl/images: image ${i} not supported in this environment`)}}function Ec(){if(Bn)return`imagebitmap`;if(Dn)return`image`;if(jn)return`data`;throw new Error(`Install '@loaders.gl/polyfills' to parse images under Node.js`)}function Tc(i){let t=Td(i);if(!t)throw new Error(`Not an image`);return t}function Nn(i){switch(Tc(i)){case`data`:return i;case`image`:case`imagebitmap`:let t=document.createElement(`canvas`),e=t.getContext(`2d`);if(!e)throw new Error(`getImageData`);return t.width=i.width,t.height=i.height,e.drawImage(i,0,0),e.getImageData(0,0,i.width,i.height);default:throw new Error(`getImageData`)}}function Td(i){return typeof ImageBitmap<`u`&&i instanceof ImageBitmap?`imagebitmap`:typeof Image<`u`&&i instanceof Image?`image`:i&&typeof i==`object`&&i.data&&i.width&&i.height?`data`:null}var Sd=/^data:image\/svg\+xml/;var Ad=/\.svg((\?|#).*)?$/;function es(i){return i&&(Sd.test(i)||Ad.test(i))}function Sc(i,t){if(es(t)){let r=new TextDecoder().decode(i);try{typeof unescape==`function`&&typeof encodeURIComponent==`function`&&(r=unescape(encodeURIComponent(r)))}catch(n){throw new Error(n.message)}return`data:image/svg+xml;base64,${btoa(r)}`}return Un(i,t)}function Un(i,t){if(es(t))throw new Error(`SVG cannot be parsed directly to imagebitmap`);return new Blob([new Uint8Array(i)])}async function rs(i,t,e){let r=Sc(i,e),s=self.URL||self.webkitURL,n=typeof r!=`string`&&s.createObjectURL(r);try{return await Md(n||r,t)}finally{n&&s.revokeObjectURL(n)}}async function Md(i,t){let e=new Image;return e.src=i,t.image&&t.image.decode&&e.decode?(await e.decode(),e):await new Promise((r,s)=>{try{e.onload=()=>r(e),e.onerror=n=>{let o=n instanceof Error?n.message:`error`;s(new Error(o))}}catch(n){s(n)}})}var Ac=!0;async function Mc(i,t,e){let r;es(e)?r=await rs(i,t,e):r=Un(i,e);let s=t&&t.imagebitmap;return await Cd(r,s)}async function Cd(i,t=null){if((Id(t)||!Ac)&&(t=null),t)try{return await createImageBitmap(i,t)}catch(e){console.warn(e),Ac=!1}return await createImageBitmap(i)}function Id(i){if(!i)return!0;for(let t in i)if(Object.prototype.hasOwnProperty.call(i,t))return!1;return!0}function Cc(i){return!Od(i,`ftyp`,4)||(i[8]&96)===0?null:Rd(i)}function Rd(i){switch(Ld(i,8,12).replace(`\0`,` `).trim()){case`avif`:case`avis`:return{extension:`avif`,mimeType:`image/avif`};default:return null}}function Ld(i,t,e){return String.fromCharCode(...i.slice(t,e))}function kd(i){return[...i].map(t=>t.charCodeAt(0))}function Od(i,t,e=0){let r=kd(t);for(let s=0;s<r.length;++s)if(r[s]!==i[s+e])return!1;return!0}var St=!1;var zr=!0;function Fr(i){let t=Wr(i);return Bd(t)||Ud(t)||jd(t)||Nd(t)||Dd(t)}function Dd(i){let e=Cc(new Uint8Array(i instanceof DataView?i.buffer:i));return e?{mimeType:e.mimeType,width:0,height:0}:null}function Bd(i){let t=Wr(i);return t.byteLength>=24&&t.getUint32(0,St)===2303741511?{mimeType:`image/png`,width:t.getUint32(16,St),height:t.getUint32(20,St)}:null}function jd(i){let t=Wr(i);return t.byteLength>=10&&t.getUint32(0,St)===1195984440?{mimeType:`image/gif`,width:t.getUint16(6,zr),height:t.getUint16(8,zr)}:null}function Nd(i){let t=Wr(i);return t.byteLength>=14&&t.getUint16(0,St)===16973&&t.getUint32(2,zr)===t.byteLength?{mimeType:`image/bmp`,width:t.getUint32(18,zr),height:t.getUint32(22,zr)}:null}function Ud(i){let t=Wr(i);if(!(t.byteLength>=3&&t.getUint16(0,St)===65496&&t.getUint8(2)===255))return null;let{tableMarkers:r,sofMarkers:s}=Vd(),n=2;for(;n+9<t.byteLength;){let o=t.getUint16(n,St);if(s.has(o))return{mimeType:`image/jpeg`,height:t.getUint16(n+5,St),width:t.getUint16(n+7,St)};if(!r.has(o))return null;n+=2,n+=t.getUint16(n,St)}return null}function Vd(){let i=new Set([65499,65476,65484,65501,65534]);for(let e=65504;e<65520;++e)i.add(e);return{tableMarkers:i,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function Wr(i){if(i instanceof DataView)return i;if(ArrayBuffer.isView(i))return new DataView(i.buffer);if(i instanceof ArrayBuffer)return new DataView(i);throw new Error(`toDataView`)}async function Ic(i,t){let{mimeType:e}=Fr(i)||{},r=globalThis.loaders?.parseImageNode;return ut(r),await r(i,e)}async function Rc(i,t,e){t=t||{};let s=(t.image||{}).type||`auto`,{url:n}=e||{},o=zd(s),a;switch(o){case`imagebitmap`:a=await Mc(i,t,n);break;case`image`:a=await rs(i,t,n);break;case`data`:a=await Ic(i,t);break;default:ut(!1)}return s===`data`&&(a=Nn(a)),a}function zd(i){switch(i){case`auto`:case`data`:return Ec();default:return Pc(i),i}}var Vn={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:[i=>!!Fr(new DataView(i))],options:{image:{type:`auto`,decode:!0}}};var Yd=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`,`image/avif`,`image/tiff`,`image/svg`,`image/svg+xml`,`image/bmp`,`image/vnd.microsoft.icon`];var is=null;async function $d(){return is?await is:(is=Hd(),await is)}async function Hd(){let i=new Set;for(let t of Yd)(_t?await Kd(t):Lc(t))&&i.add(t);return i}var zn={};function qd(i){if(zn[i]===void 0)zn[i]=_t?Zd(i):Lc(i);return zn[i]}function Lc(i){let e=globalThis.loaders?.imageFormatsNode||[`image/png`,`image/jpeg`,`image/gif`];return!!globalThis.loaders?.parseImageNode&&e.includes(i)}function Zd(i){switch(i){case`image/avif`:case`image/webp`:return Jd(i);default:return!0}}var Xd={"image/avif":`data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=`,"image/webp":`data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA`};async function Kd(i){let t=Xd[i];return t?await Qd(t):!0}function Jd(i){try{return document.createElement(`canvas`).toDataURL(i).indexOf(`data:${i}`)===0}catch{return!1}}async function Qd(i){return new Promise(t=>{let e=new Image;e.src=i,e.onload=()=>t(e.height>0),e.onerror=()=>t(!1)})}function tp(i){let t=i[0],e=i[i.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:tp,parseTextSync:JSON.parse};function ep(){let i=`9.4.0`,t=globalThis.deck&&globalThis.deck.VERSION;if(t&&t!==i)throw new Error(`deck.gl - multiple versions detected: ${t} vs ${i}`);return t||(S.log(1,`deck.gl ${i}`)(),globalThis.deck=s(r({},globalThis.deck),{VERSION:i,version:i,log:S,_registerLoggers:ac}),tn([kc,[Vn,{imagebitmap:{premultiplyAlpha:`none`}}]])),i}var Oc=ep();function Bt(){}var rp=({isDragging:i})=>i?`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:Bt,onWebGLInitialized:Bt,onResize:Bt,onViewStateChange:Bt,onInteractionStateChange:Bt,onBeforeRender:Bt,onAfterRender:Bt,onLoad:Bt,onError:i=>S.error(i.message,i.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:rp,getTooltip:null,debug:!1,drawPickingColors:!1};var Gr=class{constructor(t){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.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 N$2({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 Vr({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,o=this._getCanvasIdFromEvent(s);if(s.type===`pointerleave`)n.x=-1,n.y=-1,n.radius=0,n.canvasId=o;else{if(s.leftButton||s.rightButton)return;{let a=s.offsetCenter;if(!a)return;n.x=a.x,n.y=a.y,n.radius=this.props.pickingRadius,n.canvasId=o}}this.layerManager&&(this.layerManager.context.mousePosition={x:n.x,y:n.y}),n.event=s},this._onEvent=s=>{let n=Ce[s.type],o=s.offsetCenter,a=this._getCanvasIdFromEvent(s);if(!n||!o||!this.layerManager)return;let c=this.layerManager.getLayers(),l=this._getInternalPickingMode();if(!l)return;if(l===`sync`){let f=s.type===`click`&&this._shouldUnproject3D(c)?this._getFirstPickedInfo(this._pickPointSync(this._getPointPickOptions(o.x,o.y,{unproject3D:!0,canvasId:a},c))):this._getLastPointerDownPickingInfo(o.x,o.y,a,c);this._dispatchPickingEvent(f,s);return}(this._lastPointerDownInfoPromise||Promise.resolve(this._getLastPointerDownPickingInfo(o.x,o.y,a,c))).then(f=>{this._dispatchPickingEvent(f,s)}).catch(f=>this.props.onError?.(f))},this._onPointerDown=s=>{let n=s.offsetCenter,o=this._getCanvasIdFromEvent(s);if(!n)return;let a=this._getInternalPickingMode();if(!a)return;let c=this.layerManager?.getLayers()||[],l=++this._pointerDownPickSequence;if(a===`sync`){let f=this._pickPointSync({x:n.x,y:n.y,canvasId:o,radius:this.props.pickingRadius}),d=this._getFirstPickedInfo(f);this._lastPointerDownInfo=d,this._lastPointerDownInfoPromise=Promise.resolve(d);return}let u=this._pickPointAsync(this._getPointPickOptions(n.x,n.y,{canvasId:o},c)).then(f=>this._getFirstPickedInfo(f)).then(f=>(l===this._pointerDownPickSequence&&(this._lastPointerDownInfo=f),f)).catch(f=>{this.props.onError?.(f);let d=this.deckPicker&&this.viewManager?this._getLastPointerDownPickingInfo(n.x,n.y,o,c):{};return l===this._pointerDownPickSequence&&(this._lastPointerDownInfo=d),d});this._lastPointerDownInfo=null,this._lastPointerDownInfoPromise=u};let e=t;this.props=r(r({},Dc),t),t=this.props,this._validateCanvasConfiguration(t),t.viewState&&t.initialViewState&&S.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,t.device&&(this.device=t.device,this._setDeviceCanvasContext(t.device));let r$52=this.device;!r$52&&t.gl&&(t.gl instanceof WebGLRenderingContext&&S.error(`WebGL1 context not supported.`)(),r$52=Sn$1.attach(t.gl,r({_cacheShaders:!0,_cachePipelines:!0},this.props.deviceProps))),r$52||(r$52=this._createDevice(t)),this.animationLoop=this._createAnimationLoop(r$52,t),this.setProps(e),t._typedArrayManagerProps&&pt.setOptions(t._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(t){this.stats.get(`setProps Time`).timeStart(),`onLayerHover`in t&&S.removed(`onLayerHover`,`onHover`)(),`onLayerClick`in t&&S.removed(`onLayerClick`,`onClick`)(),t.initialViewState&&!B(this.props.initialViewState,t.initialViewState,3)&&(this.viewState=t.initialViewState),R(!(`_canvases`in t)||Array.isArray(t._canvases)===this._isMultiCanvasMode()),Object.assign(this.props,t),this._validateCanvasConfiguration(this.props),this._validateInternalPickingMode(),this.device&&this._isMultiCanvasMode()&&this._syncCanvasTargets(),this._setCanvasSize(this.props);let e=Object.create(this.props);if(Object.assign(e,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState(),eventManagers:this.eventManagers}),t.device&&t.device.id!==this.device?.id){let r=t.device.getDefaultCanvasContext();this.animationLoop?.stop(),!this._isMultiCanvasMode()&&this.canvas!==r.canvas&&(this.canvas?.remove(),this.eventManager?.destroy(),this.canvas=null),this._setDeviceCanvasContext(t.device),S.log(`recreating animation loop for new device! id=${t.device.id}`)(),this.animationLoop=this._createAnimationLoop(t.device,t),this.animationLoop.start()}if(this.animationLoop?.setProps(e),t.useDevicePixels!==void 0&&this._canvasContext?.setProps){this._canvasContext.setProps({useDevicePixels:t.useDevicePixels});for(let r of Object.values(this._canvasManager.targets))r.presentationContext.setProps({useDevicePixels:t.useDevicePixels})}this.layerManager&&(this.viewManager.setProps(e),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(e),this.effectManager.setProps(e),this.deckRenderer.setProps(e),this.deckPicker.setProps(e),this.widgetManager.setProps(e)),this.stats.get(`setProps Time`).timeEnd()}needsRedraw(t={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return`Deck._animate`;let e=this._needsRedraw;t.clearRedrawFlags&&(this._needsRedraw=!1);let r=this.viewManager.needsRedraw(t),s=this.layerManager.needsRedraw(t),n=this.effectManager.needsRedraw(t),o=this.deckRenderer.needsRedraw(t);return e=e||r||s||n||o,e}redraw(t){if(!this.layerManager)return;let e=this.needsRedraw({clearRedrawFlags:!0});e=t||e,e&&(this.stats.get(`Redraw Count`).incrementCount(),this.props._customRender?this.props._customRender(e):this._drawLayers(e))}get isInitialized(){return this.viewManager!==null}getViews(){return R(this.viewManager),this.viewManager.views}getView(t){return R(this.viewManager),this.viewManager.getView(t)}getViewports(t){return R(this.viewManager),this.viewManager.getViewports(t)}getCanvas(){return this.canvas}getCanvasContext(t){let e=t?this.viewManager?.getView(t)?.props.canvasId:void 0;return this._getCanvasContext(e)}getEventManager(t){if(!t||!this.viewManager)return this.eventManager;let e=this.viewManager.getCanvasId(t)||$t;return this.eventManagers[e]||this.eventManager}async pickObjectAsync(t){let e=(await this._pickAsync(`pickObjectAsync`,`pickObject Time`,t)).result;return e.length?e[0]:null}async pickObjectsAsync(t){return await this._pickAsync(`pickObjectsAsync`,`pickObjects Time`,t)}pickObject(t){let e=this._pick(`pickObject`,`pickObject Time`,t).result;return e.length?e[0]:null}pickMultipleObjects(t){return t.depth=t.depth||10,this._pick(`pickObject`,`pickMultipleObjects Time`,t).result}pickObjects(t){return this._pick(`pickObjects`,`pickObjects Time`,t)}_pickPositionForController(t,e,r){return this._getInternalPickingMode()!==`sync`?null:this.pickObject({x:t,y:e,radius:0,unproject3D:!0,canvasId:r?this.viewManager?.getCanvasId(r):void 0})}_addResources(t,e=!1){for(let r in t)this.layerManager.resourceManager.add({resourceId:r,data:t[r],forceUpdate:e})}_removeResources(t){for(let e of t)this.layerManager.resourceManager.remove(e)}_addDefaultEffect(t){this.effectManager.addDefaultEffect(t)}_addDefaultShaderModule(t){this.layerManager.addDefaultShaderModule(t)}_removeDefaultShaderModule(t){this.layerManager?.removeDefaultShaderModule(t)}_resolveInternalPickingMode(){let{pickAsync:t}=this.props,e=this.device?.type||this.props.deviceProps?.type;if(t===`auto`)return e===`webgpu`?`async`:`sync`;if(t===`sync`&&e===`webgpu`)throw new Error('`pickAsync: "sync"` is not supported when Deck is using a WebGPU device.');return t}_getInternalPickingMode(){try{return this._resolveInternalPickingMode()}catch(t){return this.props.onError?.(t),null}}_validateInternalPickingMode(){this._getInternalPickingMode()}_getFirstPickedInfo({result:t,emptyInfo:e}){return t[0]||e}_shouldUnproject3D(t=this.layerManager?.getLayers()||[]){return t.some(e=>e.props.pickable===`3d`)}_getPointPickOptions(t,e,r$53={},s=this.layerManager?.getLayers()||[]){return r({x:t,y:e,canvasId:r$53.canvasId,radius:this.props.pickingRadius,unproject3D:this._shouldUnproject3D(s)},r$53)}_pickPointSync(t){return this._pick(`pickObject`,`pickObject Time`,t)}_pickPointAsync(t){return this._pickAsync(`pickObjectAsync`,`pickObject Time`,t)}_getLastPointerDownPickingInfo(t,e,r,s=this.layerManager?.getLayers()||[]){return this.deckPicker.getLastPickedObject({x:t,y:e,layers:s,viewports:this.getViewports({x:t,y:e,canvasId:r})},this._lastPointerDownInfo)}_applyHoverCallbacks({result:t,emptyInfo:e},r){if(!this.widgetManager)return;this.cursorState.isHovering=t.length>0;let s=e,n=!1;for(let o of t)s=o,n=o.layer?.onHover(o,r)||n;n||(this.props.onHover?.(s,r),this.widgetManager.onHover(s,r))}_dispatchPickingEvent(t,e){if(!this.layerManager||!this.widgetManager)return;let r=Ce[e.type];if(!r)return;let{layer:s}=t,n=s&&(s[r]||s.props[r]),o=this.props[r],a=!1;n&&(a=n.call(s,t,e)),a||(o?.(t,e),this.widgetManager.onEvent(t,e))}_pickAsync(t,e,r$54){R(this.deckPicker);let{stats:s$23}=this,n=this._isMultiCanvasMode()?r$54.canvasId||this._getDefaultCanvasId():r$54.canvasId,o=this._getCanvasContext(n)||void 0;s$23.get(`Pick Count`).incrementCount(),s$23.get(e).timeStart(),this._resizeForCanvasTarget(n);let a=this.deckPicker[t](s(r({layers:this.layerManager.getLayers(r$54),views:this.viewManager.getViews(),viewports:this.getViewports(s(r({},r$54),{canvasId:n})),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects()},r$54),{canvasId:n,canvasContext:o}));return s$23.get(e).timeEnd(),a}_pick(t,e,r$55){R(this.deckPicker);let{stats:s$24}=this,n=this._isMultiCanvasMode()?r$55.canvasId||this._getDefaultCanvasId():r$55.canvasId,o=this._getCanvasContext(n)||void 0;s$24.get(`Pick Count`).incrementCount(),s$24.get(e).timeStart(),this._resizeForCanvasTarget(n);let a=this.deckPicker[t](s(r({layers:this.layerManager.getLayers(r$55),views:this.viewManager.getViews(),viewports:this.getViewports(s(r({},r$55),{canvasId:n})),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects()},r$55),{canvasId:n,canvasContext:o}));return s$24.get(e).timeEnd(),a}_createCanvas(t){let e=t.canvas;return typeof e==`string`&&(e=document.getElementById(e),R(e)),e?this._ownedCanvas=null:(e=document.createElement(`canvas`),e.id=t.id||`deckgl-overlay`,t.width&&typeof t.width==`number`&&(e.width=t.width),t.height&&typeof t.height==`number`&&(e.height=t.height),(t.parent||document.body).appendChild(e),this._ownedCanvas=e),Object.assign(e.style,t.style),e}_isMultiCanvasMode(){return Array.isArray(this.props._canvases)}_getDefaultCanvasId(){return this._canvasManager.order[0]||$t}_validateCanvasConfiguration(t){Array.isArray(t._canvases)&&(R(!t.canvas),R(!t.gl),R(!t.device?.canvasContext||t.device.getDefaultCanvasContext().offscreenCanvas))}_createEventManager(t){let e=new gr(t,{touchAction:this.props.touchAction,recognizers:Object.keys(pn).map(r$56=>{let[s$25,n,o,a]=pn[r$56],c=this.props.eventRecognizerOptions?.[r$56];return{recognizer:new s$25(s(r(r({},n),c),{event:r$56})),recognizeWith:o,requireFailure:a}}),events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let r in Ce)r===`dblclick`?e.watch(r,this._onEvent):e.on(r,this._onEvent);return e}_getEventRoot(t){return t.closest(`.deck-events-root`)||this.props.parent?.querySelector(`.deck-events-root`)||t}_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 t=this._getDefaultCanvasId();this.eventManager=this.eventManagers[t]||null,this.canvas=this._canvasManager.targets[t]?.canvas||null}_setCanvasContext(t){this._canvasContext=t,`style`in t.canvas&&(this.canvas=t.canvas)}_setDeviceCanvasContext(t,e={}){let r=t.getDefaultCanvasContext();this._setCanvasContext(r),this._setDeviceResizeHandler(t,e)}_setDeviceResizeHandler(t,e={}){let r=!!e.syncDrawingBuffer;if(this._deviceResizeHandler?.device===t){this._deviceResizeHandler.syncDrawingBuffer=r;return}this._restoreDeviceResizeHandler();let s=n=>{this._isMultiCanvasMode()?this._updateMultiCanvasDimensions():n===this._canvasContext&&this._canvasContext&&this._onCanvasContextResize(this._canvasContext,{syncDrawingBuffer:this._deviceResizeHandler?.syncDrawingBuffer})};t.props.onResize=s,this._deviceResizeHandler={device:t,onResize:s,syncDrawingBuffer:r}}_restoreDeviceResizeHandler(){let t=this._deviceResizeHandler;t&&t.device.props?.onResize===t.onResize&&(t.device.props.onResize=Bt),this._deviceResizeHandler=null}_setCanvasSize(t){if(this._isMultiCanvasMode()||!this.canvas)return;let{width:e,height:r}=t;if(e||e===0){let s=Number.isFinite(e)?`${e}px`:e;this.canvas.style.width=s}if(r||r===0){let s=Number.isFinite(r)?`${r}px`:r;this.canvas.style.position=t.style?.position||`absolute`,this.canvas.style.height=s}}_getCanvasIdFromEvent(t){return this._canvasManager.getCanvasIdFromEvent(t?.rootElement)}_getCanvasContext(t){return this._canvasManager.getTarget(t)?.presentationContext||this._canvasContext}_resizeForCanvasTarget(t){let e=this._canvasManager.getTarget(t);if(!e||!this.device?.canvasContext)return;let[r,s]=e.presentationContext.getDrawingBufferSize();this.device.canvasContext.setDrawingBufferSize(r,s)}_createDeviceCanvas(t){if(this._isMultiCanvasMode()){let e=globalThis.OffscreenCanvas;if(!e)throw new Error("`_canvases` requires OffscreenCanvas support.");return new e(typeof t.width==`number`&&Number.isFinite(t.width)?t.width:1,typeof t.height==`number`&&Number.isFinite(t.height)?t.height:1)}return this._createCanvas(t)}_updateCanvasSize(t=this._canvasContext){if(this._isMultiCanvasMode()){this._updateMultiCanvasDimensions();return}let{canvas:e}=this,[r,s]=t?t.getCSSSize():[e?.clientWidth??e?.width??0,e?.clientHeight??e?.height??0];(r!==this.width||s!==this.height)&&(this.width=r,this.height=s,this.viewManager?.setProps({width:r,height:s}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:r,height:s},t||void 0))}_onCanvasContextResize(t,e={}){if(e.syncDrawingBuffer){let{width:r,height:s}=t.canvas;t.setDrawingBufferSize(r,s)}this._needsRedraw=`Canvas resized`,this._updateCanvasSize(t)}_updateMultiCanvasDimensions(){let[t,e]=this._getCanvasContext()?.getCSSSize()||[0,0];(t!==this.width||e!==this.height)&&(this.width=t,this.height=e,this.props.onResize({width:t,height:e})),this._needsRedraw=`Canvas resized`,this.viewManager?.setNeedsUpdate(`Canvas resized`),this.viewManager?.setProps({width:this.width,height:this.height})}_createAnimationLoop(t,e){let{gl:r,onError:s}=e;return new ri$1({device:t,autoResizeDrawingBuffer:!r&&!Array.isArray(e._canvases),autoResizeViewport:!1,onInitialize:n=>this._setDevice(n.device),onRender:this._onRenderFrame.bind(this),onError:s})}_createDevice(t){let e=this.props.deviceProps?.createCanvasContext,r$57=typeof e==`object`?e:void 0,s$26=r({adapters:[],_cacheShaders:!0,_cachePipelines:!0},t.deviceProps);s$26.adapters.includes(Sn$1)||s$26.adapters.push(Sn$1);let n={alphaMode:this.props.deviceProps?.type===`webgpu`?`premultiplied`:void 0};return Yr$2.createDevice(s(r({_reuseDevices:!0,type:`webgl`},s$26),{createCanvasContext:s(r(r({},n),r$57),{canvas:this._createDeviceCanvas(t),useDevicePixels:this.props.useDevicePixels,autoResize:!0})}))}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:t}=this.props,e=Array.isArray(t)?t:t?[t]:[new In({id:`default-view`})];return e.length&&this.props.controller&&(e[0]=e[0].clone({controller:this.props.controller})),e}_onContextLost(){let{onError:t}=this.props;this.animationLoop&&t&&t(new Error(`WebGL context is lost`))}_pickAndCallback(){let{_pickRequest:t}=this;if(t.event){let e=t.event,r=this.layerManager?.getLayers()||[],s=this._getPointPickOptions(t.x,t.y,{canvasId:t.canvasId,radius:t.radius,mode:t.mode},r),n=this._getInternalPickingMode(),o=++this._hoverPickSequence;if(t.event=null,t.canvasId=void 0,!n)return;if(n===`sync`){this._applyHoverCallbacks(this._pickPointSync(s),e);return}this._pickPointAsync(s).then(({result:a,emptyInfo:c})=>{o===this._hoverPickSequence&&this._applyHoverCallbacks({result:a,emptyInfo:c},e)}).catch(a=>this.props.onError?.(a))}}_updateCursor(){let t=this.props.getCursor(this.cursorState);if(this._isMultiCanvasMode()){for(let r of Object.values(this._canvasManager.targets))r.canvas.style.cursor=t;return}let e=this.props.parent||this.canvas;e&&(e.style.cursor=t)}_setDevice(t){if(this.device=t,this._validateInternalPickingMode(),!this.animationLoop)return;this._setDeviceCanvasContext(t,{syncDrawingBuffer:!!(this.props.gl&&this.props.device!==t)}),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 e=new ni$1;if(e.play(),this.animationLoop.attachTimeline(e),!this._isMultiCanvasMode()){let n=this.canvas&&this._getEventRoot(this.canvas);R(n),this.eventManager=this._createEventManager(n),this.eventManagers={[$t]:this.eventManager}}this.viewManager=new Sr({timeline:e,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 r=this.viewManager.getViewports()[0];this.layerManager=new Tr(this.device,{deck:this,stats:this.stats,viewport:r,timeline:e}),this.effectManager=new Dr({deck:this,device:this.device}),this.deckRenderer=new jr(this.device,{stats:this.stats}),this.deckPicker=new Nr(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 ts({deck:this,parentElement:s}),this.widgetManager.addDefault(new Ur),this.setProps({}),this._updateCanvasSize(this._canvasContext),this.props.onLoad()}_drawLayers(t,e){let{device:r$58,gl:s$27}=this.layerManager.context;this.props.onBeforeRender({device:r$58,gl:s$27});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()},e);if(this._isMultiCanvasMode()&&n.pass===`screen`&&!n.target&&this._canvasManager.order.length)for(let o of this._canvasManager.order){let a=n.viewports.filter(u=>this.viewManager.getCanvasId(u.id)===o);if(!a.length){let u=this._canvasManager.targets[o];this._resizeForCanvasTarget(o),this.deckRenderer?.renderLayers(s(r({},n),{canvasContext:u.presentationContext,target:u.presentationContext.getCurrentFramebuffer(),viewports:[],clearCanvas:!0})),u.presentationContext.present();continue}let c=this._canvasManager.targets[o];this._resizeForCanvasTarget(o);let l=c.presentationContext.getCurrentFramebuffer();this.deckRenderer?.renderLayers(s(r({},n),{canvasContext:c.presentationContext,target:l,viewports:a})),c.presentationContext.present()}else this.deckRenderer?.renderLayers(n);n.pass===`screen`&&this.widgetManager.onRedraw({viewports:n.viewports,layers:n.layers}),this.props.onAfterRender({device:r$58,gl:s$27})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),S.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(t){let e=this.props.onViewStateChange(t)||t.viewState;this.viewState&&(this.viewState=s(r({},this.viewState),{[t.viewId]:e}),this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(t){this.cursorState.isDragging=t.isDragging||!1,this.props.onInteractionStateChange(t)}_getFrameStats(){let{stats:t}=this;t.get(`frameRate`).timeEnd(),t.get(`frameRate`).timeStart();let e=this.animationLoop.stats;t.get(`GPU Time`).addTime(e.get(`GPU Time`).lastTiming),t.get(`CPU Time`).addTime(e.get(`CPU Time`).lastTiming)}_getMetrics(){let{metrics:t,stats:e}=this;t.fps=e.get(`frameRate`).getHz(),t.setPropsTime=e.get(`setProps Time`).time,t.updateAttributesTime=e.get(`Update Attributes`).time,t.framesRedrawn=e.get(`Redraw Count`).count,t.pickTime=e.get(`pickObject Time`).time+e.get(`pickMultipleObjects Time`).time+e.get(`pickObjects Time`).time,t.pickCount=e.get(`Pick Count`).count,t.layersCount=this.layerManager?.layers.length??0,t.drawLayersCount=e.get(`Layers rendered`).lastSampleCount,t.pickLayersCount=e.get(`Layers picked`).lastSampleCount,t.updateLayersCount=e.get(`Layer updates`).count,t.updateAttributesCount=e.get(`Attributes updated`).count,t.gpuTime=e.get(`GPU Time`).time,t.cpuTime=e.get(`CPU Time`).time,t.gpuTimePerFrame=e.get(`GPU Time`).getAverageTime(),t.cpuTimePerFrame=e.get(`CPU Time`).getAverageTime();let r=Yr$2.stats.get(`GPU Time and Memory`);t.bufferMemory=r.get(`Buffer Memory`).count,t.textureMemory=r.get(`Texture Memory`).count,t.renderbufferMemory=r.get(`Renderbuffer Memory`).count,t.gpuMemory=r.get(`GPU Memory`).count}};Gr.defaultProps=Dc;Gr.VERSION=Oc;var ip=Gr;var Bc=[];var jc=[];function Yr(i,t=0,e=1/0){let r=Bc,s={index:-1,data:i,target:[]};return i?typeof i[Symbol.iterator]==`function`?r=i:i.length>0&&(jc.length=i.length,r=jc):r=Bc,(t>0||Number.isFinite(e))&&(r=(Array.isArray(r)?r:Array.from(r)).slice(t,e),s.index=t-1),{iterable:r,objectInfo:s}}function ss(i){return i&&i[Symbol.asyncIterator]}function ns(i,t){let{size:e,stride:r,offset:s,startIndices:n,nested:o}=t,a=i.BYTES_PER_ELEMENT,c=r?r/a:e,l=s?s/a:0,u=Math.floor((i.length-l)/c);return(f,{index:d,target:p})=>{if(!n){let b=d*c+l;for(let v=0;v<e;v++)p[v]=i[b+v];return p}let m=n[d],g=n[d+1]||u,_;if(o){_=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]=i[v+w];_[b-m]=p}}else if(c===e)_=i.subarray(m*e+l,g*e+l);else{_=new i.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++)_[b++]=i[w+x]}}return _}}function Nc(i){switch(i){case`float64`:return Float64Array;case`uint8`:case`unorm8`:return Uint8ClampedArray;default:return Re$2(i)}}var Uc=$$2.getDataType.bind($$2);function $r(i,t,e){if(t.size>4)return null;let r=e===`webgpu`&&t.type===`uint8`?`unorm8`:t.type,s=t.size,n=!!(e!==`webgpu`&&s===3&&r&&[`uint8`,`sint8`,`unorm8`,`snorm8`,`uint16`,`sint16`,`unorm16`,`snorm16`].includes(r));return{attribute:i,format:s>1?`${r}x${s}${n?`-webgl`:``}`:t.type,byteOffset:t.offset||0}}function at(i){return i.stride||i.size*i.bytesPerElement}function Vc(i,t){return i.type===t.type&&i.size===t.size&&at(i)===at(t)&&(i.offset||0)===(t.offset||0)}function Fn(i,t){t.offset&&S.removed(`shaderAttribute.offset`,`vertexOffset, elementOffset`)();let e=at(i),r$59=t.vertexOffset!==void 0?t.vertexOffset:i.vertexOffset||0,s$28=t.elementOffset||0,n=r$59*e+s$28*i.bytesPerElement+(i.offset||0);return s(r({},t),{offset:n,stride:e})}function sp(i,t){let e=Fn(i,t);return{high:e,low:s(r({},e),{offset:e.offset+i.size*4})}}var Hr=class{constructor(t,e,r$60){this._buffer=null,this.device=t,this.id=e.id||``,this.size=e.size||1;let s$29=e.logicalType||e.type,n=s$29===`float64`,{defaultValue:o}=e;o=Number.isFinite(o)?[o]:o||new Array(this.size).fill(0);let a;n?a=`float32`:!s$29&&e.isIndexed?a=`uint32`:a=s$29||`float32`;let c=Nc(s$29||a);this.doublePrecision=n,n&&e.fp64===!1&&(c=Float32Array),this.value=null,this.settings=s(r({},e),{defaultType:c,defaultValue:o,logicalType:s$29,type:a,normalized:a.includes(`norm`),size:this.size,bytesPerElement:c.BYTES_PER_ELEMENT}),this.state=s(r({},r$60),{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),pt.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 s=this.value;if(this.device.type===`webgpu`&&this._buffer)r[t]=this._buffer;else if(e){let n=Fn(this.getAccessor(),e),o=n.offset/s.BYTES_PER_ELEMENT,a=n.size||this.size;r[t]=s.subarray(o,o+a)}else r[t]=s}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$61=this.getAccessor(),s=[],n={name:this.id,byteStride:this.device.type===`webgpu`&&this.state.constant?0:at(r$61)};if(this.doublePrecision){let o=sp(r$61,e||{});s.push($r(t,r(r({},r$61),o.high),this.device.type),$r(`${t}64Low`,r(r({},r$61),o.low),this.device.type))}else if(e){let o=Fn(r$61,e);s.push($r(t,r(r({},r$61),o),this.device.type))}else s.push($r(t,r$61,this.device.type));return n.attributes=s.filter(Boolean),n}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:s}=this,n=r*s;if(e&&n&&e.length>=n){let o=new Array(s).fill(1/0),a=new Array(s).fill(-1/0);for(let c=0;c<n;)for(let l=0;l<s;l++){let u=e[c++];u<o[l]&&(o[l]=u),u>a[l]&&(a[l]=u)}t=[o,a]}}return this.state.bounds=t,t}setData(t){let{state:e}=this,r$62;ArrayBuffer.isView(t)?r$62={value:t}:t instanceof P$2?r$62={buffer:t}:r$62=t;let s=r(r({},this.settings),r$62);if(ArrayBuffer.isView(r$62.value)){if(!r$62.type)if(this.doublePrecision&&r$62.value instanceof Float64Array)s.type=`float32`;else{let o=Uc(r$62.value);s.type=s.normalized?o.replace(`int`,`norm`):o}s.bytesPerElement=r$62.value.BYTES_PER_ELEMENT,s.stride=at(s)}if(e.bounds=null,r$62.constant){let n=r$62.value;if(n=this._normalizeValue(n,[],0),this.settings.normalized&&(n=this.normalizeConstant(n)),!(!e.constant||!this._areValuesEqual(n,this.value)))return!1;e.externalBuffer=null,e.constant=!0,this.value=ArrayBuffer.isView(n)?n:new Float32Array(n)}else if(r$62.buffer)e.externalBuffer=r$62.buffer,e.constant=!1,this.value=r$62.value||null;else if(r$62.value){this._checkExternalBuffer(r$62);let n=r$62.value,o=n;e.externalBuffer=null,e.constant=!1,this.value=n,this._shouldSplitDoublePrecisionValue(o)&&(o=Oe(o,s),n instanceof Float32Array&&(s.stride=s.size*2*Float32Array.BYTES_PER_ELEMENT));let{buffer:a}=this,c=at(s),l=(s.vertexOffset||0)*c;if(this.settings.isIndexed){let f=this.settings.defaultType;o.constructor!==f&&(o=new f(o))}let u=o.byteLength+l+c*2;(!a||a.byteLength<u)&&(a=this._createBuffer(u)),a.write(o,l)}return this.setAccessor(s),!0}updateSubBuffer(t={}){this.state.bounds=null;let e=this.value,{startOffset:r=0,endOffset:s}=t,n=this._shouldSplitDoublePrecisionValue(e);this.buffer.write(n?Oe(e,{size:this.size,startIndex:r,endIndex:s}):e.subarray(r,s),r*(n?8:e.BYTES_PER_ELEMENT)+this.byteOffset)}allocate(t,e=!1){let{state:r$63}=this,s$30=r$63.allocatedValue,n=pt.allocate(s$30,t+1,{size:this.size,type:this.settings.defaultType,copy:e});this.value=n;let o=this._shouldSplitDoublePrecisionValue(n),a=o&&n 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=n.byteLength*(o&&n instanceof Float32Array?2:1);return(!l||l.byteLength<u+c)&&(l=this._createBuffer(u+c),e&&s$30&&l.write(this._shouldSplitDoublePrecisionValue(s$30)?Oe(s$30,this):s$30,c)),r$63.allocatedValue=n,r$63.constant=!1,r$63.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,s=!1;if(this.doublePrecision&&(s=e.BYTES_PER_ELEMENT<4),s)throw new Error(`Attribute ${this.id} does not support ${e.constructor.name}`);!(e instanceof r)&&this.settings.normalized&&!(`normalized`in t)&&S.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:s,size:n}=this.settings;if(Number.isFinite(t))return e[r]=t,e;if(!t){let o=n;for(;--o>=0;)e[r+o]=s[o];return e}switch(n){case 4:e[r+3]=Number.isFinite(t[3])?t[3]:s[3];case 3:e[r+2]=Number.isFinite(t[2])?t[2]:s[2];case 2:e[r+1]=Number.isFinite(t[1])?t[1]:s[1];case 1:e[r+0]=Number.isFinite(t[0])?t[0]:s[0];break;default:let o=n;for(;--o>=0;)e[r+o]=Number.isFinite(t[o])?t[o]:s[o]}return e}_areValuesEqual(t,e){if(!t||!e)return!1;let{size:r}=this;for(let s=0;s<r;s++)if(t[s]!==e[s])return!1;return!0}_createBuffer(t){this._buffer&&this._buffer.destroy();let{isIndexed:e,type:r$64}=this.settings,s$31=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:s$31,indexType:e?r$64:void 0,byteLength:t})),this._buffer}};var zc=[];var qr=[[0,1/0]];function Fc(i,t){if(i===qr||(t[0]<0&&(t[0]=0),t[0]>=t[1]))return i;let e=[],r=i.length,s=0;for(let n=0;n<r;n++){let o=i[n];o[1]<t[0]?(e.push(o),s=n+1):o[0]>t[1]?e.push(o):t=[Math.min(o[0],t[0]),Math.max(o[1],t[1])]}return e.splice(s,0,t),e}var op={interpolation:{duration:0,easing:i=>i},spring:{stiffness:.05,damping:.5}};function os(i,t){if(!i)return null;Number.isFinite(i)&&(i={type:`interpolation`,duration:i});let e=i.type||`interpolation`;return s(r(r(r({},op[e]),t),i),{type:e})}var de=class extends Hr{constructor(t,e){super(t,e,{startIndices:null,constantValue:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:qr}),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 os(Array.isArray(e)?t[e.find(n=>t[n])]: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:s=1/0}=e;this.state.updateRanges=Fc(this.state.updateRanges,[r,s])}else this.state.updateRanges=qr}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 s=this.isConstant;return super.allocate(t,e.updateRanges!==qr),e.layoutChanged||(e.layoutChanged=s&&this.device.type===`webgpu`),!0}return!1}updateBuffer({numInstances:t,data:e,props:r,context:s}){if(!this.needsUpdate())return!1;let{state:{updateRanges:n},settings:{update:o,noAlloc:a}}=this,c=!0;if(o){for(let[l,u]of n)o.call(s,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(s,l)}else this.setData({value:this.value,constant:this.constant});this.constant=!1}else for(let[l,u]of n){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$65;if(e===void 0||typeof e==`function`)return!1;let s$32=this.isConstant,n=this.settings.transform&&t?this.settings.transform.call(t,e):e,o=this.settings.defaultType;this.state.constantValue=this._normalizeValue(n,new o(this.size),0);let a=this.setData({constant:!0,value:n});if(this.device.type===`webgpu`){let c=this.state.constantValue;this.doublePrecision&&(c instanceof Float32Array||c instanceof Float64Array)&&(c=Oe(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$65=this.state).layoutChanged||(r$65.layoutChanged=!s$32),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:s}=this;if(!t)return r.binaryValue=null,r.binaryAccessor=null,!1;if(s.noAlloc)return!1;if(r.binaryValue===t)return this.clearNeedsUpdate(),!0;if(r.binaryValue=t,this.setNeedsRedraw(),s.transform||e!==this.startIndices){ArrayBuffer.isView(t)&&(t={value:t});let o=t;R(ArrayBuffer.isView(o.value),`invalid ${s.accessor}`);let a=!!o.size&&o.size!==this.size;return r.binaryAccessor=ns(o.value,{size:o.size||this.size,stride:o.stride,offset:o.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:s}=this.settings;if(s===`dynamic`?r.stepMode=t?t.isInstanced?`instance`:`vertex`:`instance`:r.stepMode=s??`vertex`,!e)return r;for(let n in e){let o=super._getBufferLayout(n,e[n]);r.attributes.push(...o.attributes)}return r}_autoUpdater(t,{data:e,startRow:r,endRow:s,props:n,numInstances:o}){let{settings:a,state:c,value:l,size:u,startIndices:f}=t,{accessor:d,transform:p}=a,m=c.binaryAccessor||(typeof d==`function`?d:n[d]);R(typeof m==`function`,`accessor "${d}" is not a function`);let g=t.getVertexOffset(r),{iterable:_,objectInfo:b}=Yr(e,r,s);for(let v of _){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]:o)-f[b.index];if(w&&Array.isArray(w[0])){let A=g;for(let T of w)t._normalizeValue(T,l,A),A+=u}else w&&w.length>u?l.set(w,g):(t._normalizeValue(w,b.target,0),En({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 Zr=class i{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 i({id:t.name,gpuDataEvaluators:t.data.map(e=>pe$2.fromGPUData(e,{id:t.name})),gpuVector:t,format:t.format})}static fromGPUDataEvaluators(t,e={}){return new i({id:e.id,gpuDataEvaluators:t,format:e.format})}constructor({id:t,gpuDataEvaluators:e,gpuVector:r,format:s}){if(e.length===0)throw new Error(`GPUVectorEvaluator requires at least one GPUData evaluator`);ap(e),this.id=t,this.gpuDataEvaluators=e,this.format=s??e[0].format,this.length=e.reduce((n,o)=>n+o.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 i.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))),s=r[0],n=r.map(Wc),o=e.format??this.format??s.format;return this._gpuVector=new Le$3({type:`data`,name:e.name??this.id??`vector`,format:o,data:n,stride:s.stride,byteStride:s.byteStride,rowByteLength:s.rowByteLength,bufferLayout:s.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)),s=r[0],n=r.map(Wc),o=e.format??this.format??s.format;return this._gpuVector=new Le$3({type:`data`,name:e.name??this.id??`vector`,format:o,data:n,stride:s.stride,byteStride:s.byteStride,rowByteLength:s.rowByteLength,bufferLayout:s.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 ap(i){let t=i[0];for(let e of i.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(i){let[t,...e]=i.data;if(!t||e.length>0)throw new Error(`GPUVectorEvaluator requires one GPUData chunk for "${i.name}"`);return t}var Yn={};w$1(Yn,{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 Ve({elementWise:i,func:t,inputs:e,output:r,outputBuffer:s}){let n=Array.isArray(e)?e:Object.values(e);for(let m of n)if(!m.value)throw new Error(`${m} does not have CPU value`);let o=r.length,a=r.size,c=new r.ValueType(o*a);for(let m=0;m<o;m++){let g=n.map(_=>U(_,m));if(i)for(let _=0;_<a;_++)c[m*a+_]=t.apply(null,g.map(b=>b[_]));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<o;m++){let g=m*d,_=u+m*f,b=c.subarray(g,g+a);p.set(b,_),s.write(b,_*l)}}else s.write(c);return{success:!0,value:p}}function U(i,t){let e=i.value,r=i.size,s=i.offset/i.ValueType.BYTES_PER_ELEMENT,n=i.stride/i.ValueType.BYTES_PER_ELEMENT,a=s+(i.isConstant?0:t)*n,c=e.slice(a,a+r);if(!i.normalized)return c;let l=new Float32Array(r);for(let u=0;u<r;u++)l[u]=cp(c[u],i.type);return l}function cp(i,t){switch(t){case`uint8`:return i/255;case`uint16`:return i/65535;case`uint32`:return i/4294967295;case`sint8`:return Math.max(i/127,-1);case`sint16`:return Math.max(i/32767,-1);case`sint32`:return Math.max(i/2147483647,-1);case`float32`:return i;default:throw new Error(`Unsupported normalized source type ${t}`)}}var Gc=({inputs:i,output:t,target:e})=>{for(let s of Object.values(i.namedInputs))if(!s.value)throw new Error(`${s} does not have CPU value`);let r=new t.ValueType(t.length*t.size);for(let s=0;s<t.length;s++){let n=Object.fromEntries(Object.entries(i.namedInputs).map(([o,a])=>[o,U(a,s)]));for(let o=0;o<t.size;o++)r[s*t.size+o]=Yc(i.expression,n,o)}return e.write(r),{success:!0,value:r}};function Yc(i,t,e){switch(i.kind){case`input`:{let r=t[i.name];return e<r.length?r[e]:r.length===1?r[0]:0}case`literal`:return Array.isArray(i.value)?i.value[e]??0:i.value;case`call`:{lp(i.op,i.args.length);let r=i.args.map(s=>Yc(s,t,e));switch(i.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 s=i.op;throw new Error(`Unsupported arithmetic op ${s}`)}}}default:throw new Error(`Unsupported expression node ${i.kind}`)}}function lp(i,t){let e=Vv[i].arity;if(t!==e)throw new Error(`Arithmetic op '${i}' expects ${e} args, got ${t}`)}var $c=({inputs:i,output:t,target:e})=>{let{sourceValues:r}=i;if(!r.value)throw new Error(`${r} does not have CPU value`);let n=new t.ValueType(t.length*t.size);if(r.length===0)return{success:!1,error:new Error(`${r} is empty`)};for(let o=0;o<r.size;o++){let a=U(r,0)[o],c=o*t.size,l=c+1;n[c]=a,n[l]=a;for(let u=1;u<r.length;u++){let f=U(r,u)[o];f<n[c]&&(n[c]=f),f>n[l]&&(n[l]=f)}}return e.write(n),{success:!0,value:n}};var Hc=({inputs:i,output:t,target:e})=>Ve({func:(r,s)=>{let n=r.length/2,o=new Float64Array(s.buffer);for(let a=0;a<n;a++){let c=o[a];r[a]=Math.fround(c),r[a+n]=c-r[a]}return r},inputs:i,output:t,outputBuffer:e});var qc=async({inputs:i,output:t,target:e})=>{let{ids:r,sourceValues:s}=i,n=r.value,o=s.value;if(!n)throw new Error(`${r} does not have CPU value`);if(!o)throw new Error(`${s} 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=U(r,l),f=Number(u[0]),d=up(f,s.length)?U(s,f):c;a.set(d,l*t.size)}return e.write(a),{success:!0,value:a}};function up(i,t){return Number.isInteger(i)&&i>=0&&i<t}var Zc=({inputs:i,output:t,target:e})=>Ve({func:(r,...s)=>{let n=0;for(let o of s)r.set(o,n),n+=o.length},inputs:i,output:t,outputBuffer:e});var Xc=({inputs:i,output:t,target:e})=>{let{x:r,y:s}=i,n=new t.ValueType(t.length);for(let o=0;o<t.length;o++){let a=U(r,o),c=U(s,o),l=0;for(let u=0;u<r.size;u++)l+=a[u]*c[u];n[o]=l}return e.write(n),{success:!0,value:n}};var Kc=({inputs:i,output:t,target:e})=>{let{x:r,y:s}=i,n=new t.ValueType(t.length);for(let o=0;o<t.length;o++){let a=U(r,o),c=U(s,o),l=1;for(let u=0;u<r.size;u++)if(a[u]!==c[u]){l=0;break}n[o]=l}return e.write(n),{success:!0,value:n}};var Jc=({inputs:i,output:t,target:e})=>{let{x:r}=i,s=new t.ValueType(t.length);for(let n=0;n<t.length;n++){let o=U(r,n),a=0;for(let c=0;c<r.size;c++)a+=o[c]*o[c];s[n]=Math.sqrt(a)}return e.write(s),{success:!0,value:s}};var Qc=async({inputs:i,output:t,target:e})=>{let{segments:r,vertexCount:s}=i,n=r.value;if(!n)throw new Error(`${r} does not have CPU value`);fp(n,r,s);let o=new t.ValueType(t.length*t.size),a=0;for(let c=0;c<s;c++){for(;a+1<r.length&&n[Wn(r,a+1)]<=c;)a++;let l=n[Wn(r,a)],u=c*t.size;o[u]=a,o[u+1]=c-l}return e.write(o),{success:!0,value:o}};function fp(i,t,e){if(t.length<1)throw new Error(`segmentedMap segments must contain at least one segment start`);let r=0;for(let s=0;s<t.length;s++){let n=i[Wn(t,s)];if(s===0&&n!==0)throw new Error(`segmentedMap segments must start at 0, got ${n}`);if(s>0&&n<r)throw new Error(`segmentedMap segments must be non-decreasing, got ${n} after ${r}`);r=n}if(r>e)throw new Error(`segmentedMap last segment start must be <= vertexCount, got ${r} > ${e}`)}function Wn(i,t){return i.offset/i.ValueType.BYTES_PER_ELEMENT+t*(i.stride/i.ValueType.BYTES_PER_ELEMENT)}var tl=async({inputs:i,output:t,target:e})=>{let{condition:r,whenTrue:s,whenFalse:n}=i,o=new t.ValueType(t.length*t.size);for(let a=0;a<t.length;a++){let c=U(r,a),l=U(s,a),u=U(n,a);for(let f=0;f<t.size;f++){let d=Gn(c,r.size,f);o[a*t.size+f]=d!==0?Gn(l,s.size,f):Gn(u,n.size,f)}}return e.write(o),{success:!0,value:o}};function Gn(i,t,e){return e<t?i[e]:t===1?i[0]:0}var el=({inputs:i,output:t,target:e})=>{let r=new t.ValueType(t.length);for(let s=0;s<t.length;s++)r[s]=i.start+s*i.step;return e.write(r),{success:!0,value:r}};var rl=({inputs:i,output:t,target:e})=>{let{columns:r}=i;return Ve({func:(s,n)=>{for(let o=0;o<r.length;o++)s[o]=n[r[o]]},inputs:{x:i.x},output:t,outputBuffer:e})};var $n=class{_modules={cpu:Yn};add(t,e){let r$66=this._modules[t];if(typeof e.then==`function`){let n=Promise.all([Promise.resolve(r$66||{}),e]).then(([o,a])=>r(r({},o),a));return this._modules[t]=n,n.then(o=>{this._modules[t]=o}).catch(o=>{f$1.error(`Failed to register ${t} backend: ${o}`)()}),n}if(r$66&&typeof r$66.then==`function`){let n=Promise.resolve(r$66).then(o=>r(r({},o),e)).then(o=>(this._modules[t]=o,o)).catch(o=>{throw f$1.error(`Failed to register ${t} backend: ${o}`)(),o});return this._modules[t]=n,n}let s=r(r({},r$66||{}),e);return this._modules[t]=s,Promise.resolve(s)}async get(t,e){let r=this._modules[t];if(!r)if(t===`webgl`)r=this.add(`webgl`,import(`./chunk-C64ZrtDH.js`));else if(t===`webgpu`)r=this.add(`webgpu`,import(`./chunk-CRCKWzfw.js`));else throw new Error(`${t} backend not registered`);let n=(await r)[e];if(typeof n!=`function`)throw new Error(`${t} backend does not implement ${e}`);return n}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 n=r[e];if(typeof n!=`function`)throw new Error(`${t} backend does not implement ${e}`);return n}clear(){this._modules={}}};var ze=new $n;var as=class{inputs;dependencies;constructor(t){this.inputs=t,this.dependencies=Array.from(t instanceof Array?t:Object.values(t)).filter(e=>e instanceof pe$2)}async execute(t,e){return await this._resolveDependencies(t),await this._executeWithHandler(await ze.get(this._getHandlerRegistry(t),this.name),e)}executeSync(t,e){this._resolveDependenciesSync(t);let r=this._executeWithHandler(ze.getSync(this._getHandlerRegistry(t),this.name),e);if(hp(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 hp(i){return typeof i?.then==`function`}function il(...i){let t=dp(i.map(e=>e.type));return t[0]!==`f`&&i.some(e=>e.normalized)&&(t=`float32`),{isConstant:i.every(e=>e.isConstant),type:t,size:i.reduce((e,r)=>Math.max(e,r.size),0),length:i.reduce((e,r)=>Math.max(e,r.length),0)}}function dp(i){let t=0,e=0;for(let r of i){if(r[0]===`f`)return`float32`;let s=r.endsWith(`8`)?8:r.endsWith(`6`)?16:32;r[0]===`u`?t=Math.max(t,s):e=Math.max(e,s)}return t&&!e?`uint${t}`:e&&t<32?`sint${Math.max(e,t*2)}`:`float32`}var Hn=class extends as{name=`interleave`;output;constructor(t){super(t);let{isConstant:e,type:r,length:s}=il(...t);this.output=new pe$2({isConstant:e,type:r,size:t.reduce((n,o)=>n+o.size,0),length:s,source:this})}toString(){return`_${this.inputs.join(`_`)}_`}};function qn(...i){if(i.length===0)throw new Error(`interleave() requires at least one input`);return i.length===1?Ov(i[0]):new Hn(i.map(Ov)).output}function Xn(i,t){let e=mp(t);for(let r of e)r.evaluateSync(i);return pp(e),t}function pp(i){let t=new Set(i.flatMap(yp)),e=new Set;for(let r of i)cs(r,e);for(let r of e)r.evaluated&&!t.has(r.buffer)&&r.destroy()}function mp(i){let t=new Set;return Zn(i,t,new Set),Array.from(t)}function Zn(i,t,e){if(_p(i)){t.add(i);return}if(!(!i||typeof i!=`object`||e.has(i))){if(e.add(i),Array.isArray(i)){for(let r of i)Zn(r,t,e);return}if(gp(i))for(let r of Object.values(i))Zn(r,t,e)}}function gp(i){let t=Object.getPrototypeOf(i);return t===Object.prototype||t===null}function cs(i,t){if(i instanceof Zr){for(let r of i.gpuDataEvaluators)cs(r,t);return}let e=i.source;if(e){if(e instanceof pe$2){t.has(e)||(t.add(e),cs(e,t));return}for(let r of e.dependencies)t.has(r)||(t.add(r),cs(r,t))}}function yp(i){return i instanceof pe$2?[i.buffer]:i.gpuVector.data.map(t=>t.buffer instanceof k$1?t.buffer.buffer:t.buffer)}function _p(i){return i instanceof pe$2||i instanceof Zr}var Kr=class{constructor(t,{id:e,isTransitionAttribute:r}){this.packedBuffers={},this.device=t,this.id=e,this.isTransitionAttribute=r,this.device.type===`webgpu`&&ze.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,s){let n=this._getPackedGroups(t,r,{requireValues:!0,excludeAttributes:s}),o={},a=new Set;for(let c of n.values()){let l=!this.packedBuffers[c.id]||c.attributes.some(u=>!!e[u.id]);o[c.id]=this._getPackedBuffer(c,l);for(let u of c.attributes)a.add(u.id)}return{bufferLayouts:this._getBufferLayouts(t,n,r).filter(c=>!s[c.name]&&!t[c.name]?.settings.isIndexed),buffers:o,groupedAttributeIds:a}}_getPackedGroups(t,e,{requireValues:r,excludeAttributes:s}){let n=new Map;for(let a of Object.values(t)){let c=a.settings.bufferGroup;if(!c)continue;let l=n.get(c)||[];l.push(a),n.set(c,l)}let o=new Map;for(let[a,c]of n){let l=this._getPackedGroup(a,c,e,r,s);l&&o.set(a,l)}return o}_getPackedGroup(t,e,r$67,s$33,n){if(e.length<2)return null;let o=e.map(p=>p.getBufferLayout(r$67)),a=o[0].stepMode,c=Math.max(1,e[0].numInstances),l=s$33&&e.every(p=>p.isConstant);for(let p=0;p<e.length;p++){let m=e[p],g=m.getAccessor(),_=g.size*g.bytesPerElement;if(n[m.id]||m.settings.isIndexed||m.settings.noAlloc||m.doublePrecision||this.isTransitionAttribute(m.id)||o[p].stepMode!==a||m.numInstances!==e[0].numInstances||(g.offset||0)!==0||(g.vertexOffset||0)!==0||at(g)!==_||s$33&&(m.isConstant?!m.getConstantValue()||m.getConstantValue().byteLength<_:!ArrayBuffer.isView(m.value)||m.value.byteLength<c*_))return null}let u={},f=[],d=0;for(let p=0;p<e.length;p++){let m=e[p];d=sl(d),u[m.id]=d;for(let g of o[p].attributes||[])f.push(s(r({},g),{byteOffset:d+(g.byteOffset||0)}));d+=at(m.getAccessor())}return d=sl(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 s=[],n=new Set,o=new Set;for(let a of e.values())for(let c of a.attributes)o.add(c.id);for(let a of Object.values(t)){let c=a.settings.bufferGroup,l=c&&e.get(c);l&&o.has(a.id)?n.has(l.id)||(s.push(l.layout),n.add(l.id)):s.push(a.getBufferLayout(r))}return s}_getPackedBuffer(t,e){let r=JSON.stringify({byteStride:t.layout.byteStride,attributes:t.layout.attributes}),s=this.packedBuffers[t.id];if((!s||s.layoutKey!==r)&&(e=!0),e){s&&(s.packed.destroy(),delete this.packedBuffers[t.id]);let n=this._interleavePackedGroup(t);return this.packedBuffers[t.id]={packed:n,layoutKey:r},n.buffer}if(!s)throw new Error(`Attribute buffer group ${t.id} has no packed buffer`);return s.packed.buffer}_interleavePackedGroup(t){let r=qn(...t.attributes.map(s=>this._getInterleaveInput(t,s)));return Xn(this.device,r),r}_getInterleaveInput(t,e){let r=at(e.getAccessor()),s=t.byteOffsets[e.id];if(Xr(`${t.id}.${e.id} rowByteLength`,r),Xr(`${t.id}.${e.id} groupByteOffset`,s),e.isConstant){let c=e.getConstantValue();if(!c)throw new Error(`Attribute group ${t.id} is missing constant value ${e.id}`);return Xr(`${t.id}.${e.id} constant byteOffset`,c.byteOffset),new pe$2({id:e.id,type:`uint32`,size:r/4,isConstant:!0,value:new Uint32Array(c.buffer,c.byteOffset,r/Uint32Array.BYTES_PER_ELEMENT)})}let n=e.getBuffer(),o=e.byteOffset,a=e.getAccessor().stride||r;if(Xr(`${t.id}.${e.id} byteOffset`,o),Xr(`${t.id}.${e.id} stride`,a),!n)throw new Error(`Attribute group ${t.id} cannot interleave missing buffer ${e.id}`);return new pe$2({id:e.id,type:`uint32`,size:r/4,offset:o,stride:a,length:t.rowCount,buffer:n})}};function sl(i){return Math.ceil(i/4)*4}function Xr(i,t){if(t%4!==0)throw new Error(`Attribute buffer groups require 32-bit alignment: ${i}=${t}`)}function Kn(i){let{source:t,target:e,start:r=0,size:s,getData:n}=i,o=i.end||e.length,a=t.length,c=o-r;if(a>c){e.set(t.subarray(0,c),r);return}if(e.set(t,r),!n)return;let l=a;for(;l<c;){let u=n(l,t);for(let f=0;f<s;f++)e[r+l]=u[f]||0,l++}}function nl({source:i,target:t,size:e,getData:r,sourceStartIndices:s,targetStartIndices:n}){if(!s||!n)return Kn({source:i,target:t,size:e,getData:r}),t;let o=0,a=0,c=r&&((u,f)=>r(u+a,f)),l=Math.min(s.length,n.length);for(let u=1;u<l;u++){let f=s[u]*e,d=n[u]*e;Kn({source:i.subarray(o,f),target:t,start:a,end:d,size:e,getData:c}),o=f,a=d}return a<t.length&&Kn({source:[],target:t,start:a,size:e,getData:c}),t}function ol(i){let{device:t,settings:e,value:r}=i,s=new de(t,e);return s.setData({value:r instanceof Float64Array?new Float64Array(0):new Float32Array(0),normalized:e.normalized}),s}function ls(i){switch(i){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 "${i}"`)}}function us(i){switch(i){case 1:return`float32`;case 2:return`float32x2`;case 3:return`float32x3`;case 4:return`float32x4`;default:throw new Error(`invalid type size`)}}function fs(i){i.push(i.shift())}function al(i,t){let{settings:e,value:r,size:s}=i,n=i.isDoublePrecisionBuffer?2:1,o=0,{shaderAttributes:a}=i.settings;if(a)for(let c of Object.values(a))o=Math.max(o,c.vertexOffset??0);return(e.noAlloc?r.length:(t+o)*s)*n}function hs({device:i,source:t,target:e}){return(!e||e.byteLength<t.byteLength)&&(e?.destroy(),e=i.createBuffer({byteLength:t.byteLength,usage:t.usage})),e}function ds({device:i,buffer:t,attribute:e,fromLength:r,toLength:s,fromStartIndices:n,getData:o=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=n&&f,p=e.isConstant;if(!d&&t&&r>=s)return t;let m=e.value instanceof Float64Array?Float32Array:e.value.constructor,g=p?e.value:new m(e.getBuffer().readSyncWebGL(l,s*m.BYTES_PER_ELEMENT).buffer);if(e.settings.normalized&&!p){let w=o;o=(x,A)=>e.normalizeConstant(w(x,A))}let _=p?(w,x)=>o(g,x):(w,x)=>o(g.subarray(w+l,w+l+c),x),b=t?new Float32Array(t.readSyncWebGL(u,r*4).buffer):new Float32Array(0),v=new Float32Array(s);return nl({source:b,target:v,sourceStartIndices:n,targetStartIndices:f,size:c,getData:_}),(!t||t.byteLength<v.byteLength+u)&&(t?.destroy(),t=i.createBuffer({byteLength:v.byteLength+u,usage:35050})),t.write(v,u),t}var Fe=class{constructor({device:t,attribute:e,timeline:r}){this.buffers=[],this.currentLength=0,this.device=t,this.transition=new gt(r),this.attribute=e,this.attributeInTransition=ol(e),this.currentStartIndices=e.startIndices}get inProgress(){return this.transition.inProgress}start(t,e,r$68=1/0){this.settings=t,this.currentStartIndices=this.attribute.startIndices,this.currentLength=al(this.attribute,e),this.transition.start(s(r({},t),{duration:r$68}))}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 Jr=class extends Fe{constructor({device:t,attribute:e,timeline:r}){super({device:t,attribute:e,timeline:r}),this.type=`interpolation`,this.transform=xp(t,e)}start(t,e){let r=this.currentLength,s=this.currentStartIndices;if(super.start(t,e,t.duration),t.duration<=0){this.transition.cancel();return}let{buffers:n,attribute:o}=this;fs(n),n[0]=ds({device:this.device,buffer:n[0],attribute:o,fromLength:r,toLength:this.currentLength,fromStartIndices:s,getData:t.enter}),n[1]=hs({device:this.device,source:n[0],target:n[1]}),this.setBuffer(n[1]);let{transform:a}=this,c=a.model,l=Math.floor(this.currentLength/o.size);ll(o)&&(l/=2),c.setVertexCount(l),o.isConstant?(c.setAttributes({aFrom:n[0]}),c.setConstantAttributes({aTo:o.value})):c.setAttributes({aFrom:n[0],aTo:o.getBuffer()}),a.transformFeedback.setBuffers({vCurrent:n[1]})}onUpdate(){let{duration:t,easing:e}=this.settings,{time:r}=this.transition,s=r/t;e&&(s=e(s));let{model:n}=this.transform,o={time:s};n.shaderInputs.setProps({interpolation:o}),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 bp=`#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 vp=`#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(i){return i.isDoublePrecisionBuffer}function xp(i,t){let e=t.size,r=ls(e),s=us(e),n=t.getBufferLayout();return ll(t)?new jr$3(i,{vs:vp,bufferLayout:[{name:`aFrom`,byteStride:8*e,attributes:[{attribute:`aFrom`,format:s,byteOffset:0},{attribute:`aFrom64Low`,format:s,byteOffset:4*e}]},{name:`aTo`,byteStride:8*e,attributes:[{attribute:`aTo`,format:s,byteOffset:0},{attribute:`aTo64Low`,format:s,byteOffset:4*e}]}],modules:[Gp$1,cl],defines:{ATTRIBUTE_TYPE:r,ATTRIBUTE_SIZE:e},moduleSettings:{},varyings:[`vCurrent`,`vCurrent64Low`],bufferMode:35980,disableWarnings:!0}):new jr$3(i,{vs:bp,bufferLayout:[{name:`aFrom`,format:s},{name:`aTo`,format:n.attributes[0].format}],modules:[cl],defines:{ATTRIBUTE_TYPE:r},varyings:[`vCurrent`],disableWarnings:!0})}var Qr=class extends Fe{constructor({device:t,attribute:e,timeline:r}){super({device:t,attribute:e,timeline:r}),this.type=`spring`,this.texture=Mp(t),this.framebuffer=Cp(t,this.texture),this.transform=Ap(t,e)}start(t,e){let r=this.currentLength,s=this.currentStartIndices;super.start(t,e);let{buffers:n,attribute:o}=this;for(let c=0;c<2;c++)n[c]=ds({device:this.device,buffer:n[c],attribute:o,fromLength:r,toLength:this.currentLength,fromStartIndices:s,getData:t.enter});n[2]=hs({device:this.device,source:n[0],target:n[2]}),this.setBuffer(n[1]);let{model:a}=this.transform;a.setVertexCount(Math.floor(this.currentLength/o.size)),o.isConstant?a.setConstantAttributes({aTo:o.value}):a.setAttributes({aTo:o.getBuffer()})}onUpdate(){let{buffers:t,transform:e,framebuffer:r,transition:s}=this,n=this.settings;e.model.setAttributes({aPrev:t[0],aCur:t[1]}),e.transformFeedback.setBuffers({vNext:t[2]});let o={stiffness:n.stiffness,damping:n.damping};e.model.shaderInputs.setProps({spring:o}),e.run({framebuffer:r,discard:!1,parameters:{viewport:[0,0,1,1]},clearColor:[0,0,0,0]}),fs(t),this.setBuffer(t[1]),this.device.readPixelsToArrayWebGL(r)[0]>0||s.end()}delete(){super.delete(),this.transform.destroy(),this.texture.destroy(),this.framebuffer.destroy()}};var Ep={name:`spring`,vs:`layout(std140) uniform springUniforms {
1275
+ float damping;
1276
+ float stiffness;
1277
+ } spring;
1278
+ `,uniformTypes:{damping:`f32`,stiffness:`f32`}};var Tp=`#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 Sp=`#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 Ap(i,t){let e=ls(t.size),r=us(t.size);return new jr$3(i,{vs:Tp,fs:Sp,bufferLayout:[{name:`aPrev`,format:r},{name:`aCur`,format:r},{name:`aTo`,format:t.getBufferLayout().attributes[0].format}],varyings:[`vNext`],modules:[Ep],defines:{ATTRIBUTE_TYPE:e},parameters:{depthCompare:`always`,blendColorOperation:`max`,blendColorSrcFactor:`one`,blendColorDstFactor:`one`,blendAlphaOperation:`max`,blendAlphaSrcFactor:`one`,blendAlphaDstFactor:`one`}})}function Mp(i){return i.createTexture({data:new Uint8Array(4),format:`rgba8unorm`,width:1,height:1})}function Cp(i,t){return i.createFramebuffer({id:`spring-transition-is-transitioning-framebuffer`,width:1,height:1,colorAttachments:[t]})}var Ip={interpolation:Jr,spring:Qr};var ti=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 s in t){let n=t[s],o=n.getTransitionSetting(e);o&&this._updateAttribute(s,n,o)}for(let s in this.transitions){let n=t[s];(!n||!n.getTransitionSetting(e))&&this._removeTransition(s)}}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 s=this.transitions[t],n=!s||s.type!==r.type;if(n){s&&this._removeTransition(t);let o=Ip[r.type];o?this.transitions[t]=new o({attribute:e,timeline:this.timeline,device:this.device}):(S.error(`unsupported transition type '${r.type}'`)(),n=!1)}(n||e.needsRedraw())&&(this.needsRedraw=!0,this.transitions[t].start(r,this.numInstances))}};var ul=`attributeManager.invalidate`;var Rp=`attributeManager.updateStart`;var Lp=`attributeManager.updateEnd`;var kp=`attribute.updateStart`;var Op=`attribute.allocate`;var Dp=`attribute.updateEnd`;var ei=class{constructor(t,{id:e=`attribute-manager`,stats:r,timeline:s}={}){this.mergeBoundsMemoized=Pt(sc),this.id=e,this.device=t,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=r,this.attributeTransitionManager=new ti(t,{id:`${e}-transitions`,timeline:s}),this.attributeBufferGroups=t.type===`webgpu`?new Kr(t,{id:e,isTransitionAttribute:n=>this.attributeTransitionManager.hasAttribute(n)}):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);N(ul,this,t,r)}invalidateAll(t){for(let e in this.attributes)this.attributes[e].setNeedsUpdate(e,t);N(ul,this,`all`)}update({data:t,numInstances:e,startIndices:r=null,transitions:s,props:n={},buffers:o={},context:a={}}){let c=!1;N(Rp,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,n[l]&&S.removed(`props.${l}`,`data.attributes.${l}`)(),u.setExternalBuffer(o[l])||u.setBinaryValue(typeof f==`string`?o[f]:void 0,t.startIndices)||typeof f==`string`&&!o[f]&&u.setConstantValue(a,n[f])||u.needsUpdate()&&(c=!0,this._updateAttribute({attribute:u,numInstances:e,data:t,props:n,context:a})),this.needsRedraw=this.needsRedraw||u.needsRedraw()}c&&N(Lp,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:s})}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$69}=this,s=r({},r$69.getAttributes());for(let n in e){let o=e[n];o.needsRedraw(t)&&!r$69.hasAttribute(n)&&(s[n]=o)}return s}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$70 in t){let s$34=t[r$70],n=r(s(r({},s$34),{id:r$70,size:s$34.isIndexed&&1||s$34.size||1}),e);this.attributes[r$70]=new de(this.device,n)}this._mapUpdateTriggersToAttributes()}_mapUpdateTriggersToAttributes(){let t={};for(let e in this.attributes)this.attributes[e].getUpdateTriggers().forEach(s=>{t[s]||(t[s]=[]),t[s].push(e)});this.updateTriggers=t}_invalidateTrigger(t,e){let{attributes:r,updateTriggers:s}=this,n=s[t];return n&&n.forEach(o=>{let a=r[o];a&&a.setNeedsUpdate(a.id,e)}),n}_updateAttribute(t){let{attribute:e,numInstances:r}=t;if(N(kp,e),e.constant){e.setConstantValue(t.context,e.value);return}e.allocate(r)&&N(Op,e,r),e.updateBuffer(t)&&(this.needsRedraw=!0,N(Dp,e,r))}};var ri=class extends gt{get value(){return this._value}_onUpdate(){let{time:t,settings:{fromValue:e,toValue:r,duration:s,easing:n}}=this,o=n(t/s);this._value=Oi$1(e,r,o)}};var fl=1e-5;function hl(i,t,e,r,s){let n=t-i;return(e-t)*s+-n*r+n+t}function Bp(i,t,e,r,s){if(Array.isArray(e)){let n=[];for(let o=0;o<e.length;o++)n[o]=hl(i[o],t[o],e[o],r,s);return n}return hl(i,t,e,r,s)}function dl(i,t){if(Array.isArray(i)){let e=0;for(let r=0;r<i.length;r++){let s=i[r]-t[r];e+=s*s}return Math.sqrt(e)}return Math.abs(i-t)}var ii=class extends gt{get value(){return this._currValue}_onUpdate(){let{fromValue:t,toValue:e,damping:r,stiffness:s}=this.settings,{_prevValue:n=t,_currValue:o=t}=this,a=Bp(n,o,e,r,s),c=dl(a,e),l=dl(a,o);c<fl&&l<fl&&(a=e,this.end()),this._prevValue=o,this._currValue=a}};var jp={interpolation:ri,spring:ii};var si=class{constructor(t){this.transitions=new Map,this.timeline=t}get active(){return this.transitions.size>0}add(t,e,r$71,s$35){let{transitions:n}=this;if(n.has(t)){let c=n.get(t),{value:l=c.settings.fromValue}=c;e=l,this.remove(t)}if(s$35=os(s$35),!s$35)return;let o=jp[s$35.type];if(!o){S.error(`unsupported transition type '${s$35.type}'`)();return}let a=new o(this.timeline);a.start(s(r({},s$35),{fromValue:e,toValue:r$71})),n.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(i){let t=i[ot];for(let e in t){let r=t[e],{validate:s}=r;if(s&&!s(i[e],r))throw new Error(`Invalid prop ${e}: ${i[e]}`)}}function gl(i,t){let e=yl({newProps:i,oldProps:t,propTypes:i[ot],ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),r=Up(i,t),s=!1;return r||(s=Vp(i,t)),{dataChanged:r,propsChanged:e,updateTriggersChanged:s,extensionsChanged:zp(i,t),transitionsChanged:Np(i,t)}}function Np(i,t){if(!i.transitions)return!1;let e={},r=i[ot],s=!1;for(let n in i.transitions){let o=r[n],a=o&&o.type;(a===`number`||a===`color`||a===`array`)&&Jn(i[n],t[n],o)&&(e[n]=!0,s=!0)}return s?e:!1}function yl({newProps:i,oldProps:t,ignoreProps:e={},propTypes:r={},triggerName:s=`props`}){if(t===i)return!1;if(typeof i!=`object`||i===null)return`${s} changed shallowly`;if(typeof t!=`object`||t===null)return`${s} changed shallowly`;for(let n of Object.keys(i))if(!(n in e)){if(!(n in t))return`${s}.${n} added`;let o=Jn(i[n],t[n],r[n]);if(o)return`${s}.${n} ${o}`}for(let n of Object.keys(t))if(!(n in e)){if(!(n in i))return`${s}.${n} dropped`;if(!Object.hasOwnProperty.call(i,n)){let o=Jn(i[n],t[n],r[n]);if(o)return`${s}.${n} ${o}`}}return!1}function Jn(i,t,e){let r=e&&e.equal;return r&&!r(i,t,e)||!r&&(r=i&&t&&i.equals,r&&!r.call(i,t))?`changed deeply`:!r&&t!==i?`changed shallowly`:null}function Up(i,t){if(t===null)return`oldProps is null, initial diff`;let e=!1,{dataComparator:r,_dataDiff:s}=i;return r?r(i.data,t.data)||(e=`Data comparator detected a change`):i.data!==t.data&&(e=`A new data container was supplied`),e&&s&&(e=s(i.data,t.data)||e),e}function Vp(i,t){if(t===null)return{all:!0};if(`all`in i.updateTriggers&&pl(i,t,`all`))return{all:!0};let e={},r=!1;for(let s in i.updateTriggers)s!==`all`&&pl(i,t,s)&&(e[s]=!0,r=!0);return r?e:!1}function zp(i,t){if(t===null)return!0;let e=t.extensions,{extensions:r}=i;if(r===e)return!1;if(!e||!r||r.length!==e.length)return!0;for(let s=0;s<r.length;s++)if(!r[s].equals(e[s]))return!0;return!1}function pl(i,t,e){let r=i.updateTriggers[e];r=r??{};let s=t.updateTriggers[e];return s=s??{},yl({oldProps:s,newProps:r,triggerName:e})}var Fp=`count(): argument not an object`;var Wp=`count(): argument not a container`;function _l(i){if(!Yp(i))throw new Error(Fp);if(typeof i.count==`function`)return i.count();if(Number.isFinite(i.size))return i.size;if(Number.isFinite(i.length))return i.length;if(Gp(i))return Object.keys(i).length;throw new Error(Wp)}function Gp(i){return i!==null&&typeof i==`object`&&i.constructor===Object}function Yp(i){return i!==null&&typeof i==`object`}function Qn(i,t){if(!t)return i;let e=r(r({},i),t);if(`defines`in t&&(e.defines=r(r({},i.defines),t.defines)),`modules`in t&&(e.modules=(i.modules||[]).concat(t.modules),t.modules.some(r=>r.name===`project64`))){let r=e.modules.findIndex(s=>s.name===`project32`);r>=0&&e.modules.splice(r,1)}if(`inject`in t)if(!i.inject)e.inject=t.inject;else{let r$72=r({},i.inject);for(let s in t.inject)r$72[s]=(r$72[s]||``)+t.inject[s];e.inject=r$72}return e}var wl=[0,0,0];function to(i,t,e=!1){let r=t.projectPosition(i);if(e&&t instanceof ne){let[s,n,o=0]=i;r[2]=o*t.getDistanceScales([s,n]).unitsPerMeter[2]}return r}function $p(i){let{viewport:t,modelMatrix:e,coordinateOrigin:r}=i,{coordinateSystem:s,fromCoordinateSystem:n,fromCoordinateOrigin:o}=i;return s==="default"&&(s=t.isGeospatial?`lnglat`:`cartesian`),n===void 0?n=s:n==="default"&&(n=t.isGeospatial?`lnglat`:`cartesian`),o===void 0&&(o=r),{viewport:t,coordinateSystem:s,coordinateOrigin:r,modelMatrix:e,fromCoordinateSystem:n,fromCoordinateOrigin:o}}function ps(i,{viewport:t,modelMatrix:e,coordinateSystem:r,coordinateOrigin:s,offsetMode:n}){let[o,a,c=0]=i;switch(e&&([o,a,c]=ir$2.transformMat4([],[o,a,c,1],e)),r){case`default`:return ps(i,{viewport:t,modelMatrix:e,coordinateSystem:t.isGeospatial?`lnglat`:`cartesian`,coordinateOrigin:s,offsetMode:n});case`lnglat`:return to([o,a,c],t,n);case`lnglat-offsets`:return to([o+s[0],a+s[1],c+(s[2]||0)],t,n);case`meter-offsets`:return to(br(s,[o,a,c]),t,n);case`cartesian`:return t.isGeospatial?[o+s[0],a+s[1],c+s[2]]:t.projectPosition([o,a,c]);default:throw new Error(`Invalid coordinateSystem: ${r}`)}}function bl(i,t){let{viewport:e,coordinateSystem:r,coordinateOrigin:s,modelMatrix:n,fromCoordinateSystem:o,fromCoordinateOrigin:a}=$p(t),{autoOffset:c=!0}=t,{geospatialOrigin:l=wl,shaderCoordinateOrigin:u=wl,offsetMode:f=!1}=c?mn(e,r,s):{},d=ps(i,{viewport:e,modelMatrix:n,coordinateSystem:o,coordinateOrigin:a,offsetMode:f});if(f){let p=e.projectPosition(l||u);Zn$1.sub(d,d,p)}return d}var Hp={minFilter:`linear`,mipmapFilter:`linear`,magFilter:`linear`,addressModeU:`clamp-to-edge`,addressModeV:`clamp-to-edge`};var eo={};function vl(i,t,e,r$73){if(e instanceof C$1)return e;e.constructor&&e.constructor.name!==`Object`&&(e={data:e});let s$36=null;e.compressed&&(s$36={minFilter:`linear`,mipmapFilter:e.data.length>1?`nearest`:`linear`});let{width:n,height:o}=e.data,a=t.createTexture(s(r({},e),{sampler:r(r(r({},Hp),s$36),r$73),mipLevels:t.getMipLevelCount(n,o)}));return t.type===`webgl`?a.generateMipmapsWebGL():t.type===`webgpu`&&t.generateMipmapsWebGPU(a),eo[a.id]=i,a}function xl(i,t){!t||!(t instanceof C$1)||eo[t.id]===i&&(t.delete(),delete eo[t.id])}var qp={boolean:{validate(i,t){return!0},equal(i,t,e){return!!i==!!t}},number:{validate(i,t){return Number.isFinite(i)&&(!(`max`in t)||i<=t.max)&&(!(`min`in t)||i>=t.min)}},color:{validate(i,t){return t.optional&&!i||ro(i)&&(i.length===3||i.length===4)},equal(i,t,e){return B(i,t,1)}},accessor:{validate(i,t){let e=ms(i);return e===`function`||e===ms(t.value)},equal(i,t,e){return typeof t==`function`?!0:B(i,t,1)}},array:{validate(i,t){return t.optional&&!i||ro(i)},equal(i,t,e){let{compare:r}=e;return r?B(i,t,Number.isInteger(r)?r:r?1:0):i===t}},object:{equal(i,t,e){if(e.ignore)return!0;let{compare:r}=e;return r?B(i,t,Number.isInteger(r)?r:r?1:0):i===t}},function:{validate(i,t){return t.optional&&!i||typeof i==`function`},equal(i,t,e){return!e.compare&&e.ignore!==!1||i===t}},data:{transform:(i,t,e)=>{if(!i)return i;let{dataTransform:r}=e.props;return r?r(i):typeof i.shape==`string`&&i.shape.endsWith(`-table`)&&Array.isArray(i.data)?i.data:i}},image:{transform:(i,t,e)=>{let r$74=e.context;return!r$74||!r$74.device?null:vl(e.id,r$74.device,i,r(r({},t.parameters),e.props.textureParameters))},release:(i,t,e)=>{xl(e.id,i)}}};function Pl(i){let t={},e={},r={};for(let[s,n]of Object.entries(i)){let o=n?.deprecatedFor;if(o)r[s]=Array.isArray(o)?o:[o];else{let a=Zp(s,n);t[s]=a,e[s]=a.value}}return{propTypes:t,defaultProps:e,deprecatedProps:r}}function Zp(i,t){switch(ms(t)){case`object`:return ni(i,t);case`array`:return ni(i,{type:`array`,value:t,compare:!1});case`boolean`:return ni(i,{type:`boolean`,value:t});case`number`:return ni(i,{type:`number`,value:t});case`function`:return ni(i,{type:`function`,value:t,compare:!0});default:return{name:i,type:`unknown`,value:t}}}function ni(i,t){return`type`in t?r(r({name:i},qp[t.type]),t):`value`in t?r({name:i,type:ms(t.value)},t):{name:i,type:`object`,value:t}}function ro(i){return Array.isArray(i)||ArrayBuffer.isView(i)}function ms(i){return ro(i)?`array`:i===null?`null`:typeof i}function El(i,t){let e;for(let n=t.length-1;n>=0;n--){let o=t[n];`extensions`in o&&(e=o.extensions)}let r=io(i.constructor,e),s=Object.create(r);s[Be]=i,s[Et]={},s[mt]={};for(let n=0;n<t.length;++n){let o=t[n];for(let a in o)s[a]=o[a]}return Object.freeze(s),s}var Xp=`_mergedDefaultProps`;function io(i,t){if(!(i instanceof gs.constructor))return{};let e=Xp;if(t)for(let s of t){let n=s.constructor;n&&(e+=`:${n.extensionName||n.name}`)}return Tl(i,e)||(i[e]=Kp(i,t||[]))}function Kp(i,t){if(!i.prototype)return null;let s=io(Object.getPrototypeOf(i)),o=Pl(Tl(i,`defaultProps`)||{}),a=Object.assign(Object.create(null),s,o.defaultProps),c=Object.assign(Object.create(null),s?.[ot],o.propTypes),l=Object.assign(Object.create(null),s?.[Hi],o.deprecatedProps);for(let u of t){let f=io(u.constructor);f&&(Object.assign(a,f),Object.assign(c,f[ot]),Object.assign(l,f[Hi]))}return Jp(a,i),tm(a,c),Qp(a,l),a[ot]=c,a[Hi]=l,t.length===0&&!so(i,`_propTypes`)&&(i._propTypes=c),a}function Jp(i,t){let e=rm(t);Object.defineProperties(i,{id:{writable:!0,value:e}})}function Qp(i,t){for(let e in t)Object.defineProperty(i,e,{enumerable:!1,set(r){let s=`${this.id}: ${e}`;for(let n of t[e])so(this,n)||(this[n]=r);S.deprecated(s,t[e].join(`/`))()}})}function tm(i,t){let e={},r={};for(let s in t){let n=t[s],{name:o,value:a}=n;n.async&&(e[o]=a,r[o]=em(o))}i[Lt]=e,i[Et]={},Object.defineProperties(i,r)}function em(i){return{enumerable:!0,set(t){typeof t==`string`||t instanceof Promise||ss(t)?this[Et][i]=t:this[mt][i]=t},get(){if(this[mt]){if(i in this[mt])return this[mt][i]||this[Lt][i];if(i in this[Et]){let t=this[Be]&&this[Be].internalState;if(t&&t.hasAsyncProp(i))return t.getAsyncProp(i)||this[Lt][i]}}return this[Lt][i]}}}function so(i,t){return Object.prototype.hasOwnProperty.call(i,t)}function Tl(i,t){return so(i,t)&&i[t]}function rm(i){let t=i.componentName;return t||S.warn(`${i.name}.componentName not specified`)(),t||i.name}var im=0;var oi=class{constructor(...t){this.props=El(this,t),this.id=this.props.id,this.count=im++}clone(t){let{props:e}=this,r$75={};for(let s in e[Lt])s in e[mt]?r$75[s]=e[mt][s]:s in e[Et]&&(r$75[s]=e[Et][s]);return new this.constructor(r(r(r({},e),r$75),t))}};oi.componentName=`Component`;oi.defaultProps={};var gs=oi;var sm=Object.freeze({});var ai=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||sm}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[Be]||this.component;let e=t[mt]||{},r=t[Et]||t,s=t[Lt]||{};for(let n in e){let o=e[n];this._createAsyncPropData(n,s[n]),this._updateAsyncProp(n,o),e[n]=this.getAsyncProp(n)}for(let n in r){let o=r[n];this._createAsyncPropData(n,s[n]),this._updateAsyncProp(n,o)}}_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(ss(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 s=this.asyncProps[t];s&&r>=s.resolvedLoadCount&&e!==void 0&&(this._freezeAsyncOldProps(),s.resolvedValue=e,s.resolvedLoadCount=r,this.onAsyncPropUpdated(t,e))}_watchPromise(t,e){let r=this.asyncProps[t];if(r){r.pendingLoadCount++;let s=r.pendingLoadCount;e.then(n=>{this.component&&(n=this._postProcessValue(r,n),this._setAsyncPropValue(t,n,s),this._onResolve(t,n))}).catch(n=>{this._onError(t,n)})}}async _resolveAsyncIterable(t,e){if(t!==`data`){this._setPropValue(t,e);return}let r=this.asyncProps[t];if(!r)return;r.pendingLoadCount++;let s=r.pendingLoadCount,n=[],o=0;for await(let a of e){if(!this.component)return;let{dataTransform:c}=this.component.props;c?n=c(a,n):n=n.concat(a),Object.defineProperty(n,"__diff",{enumerable:!1,value:[{startRow:o,endRow:n.length}]}),o=n.length,this._setAsyncPropValue(t,n,s)}this._onResolve(t,n)}_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 s=this.component&&this.component.props[ot];this.asyncProps[t]={type:s&&s[t],lastValue:null,resolvedValue:e,pendingLoadCount:0,resolvedLoadCount:0}}}};var ci=class extends ai{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,s=r?.props.fetch;return s?s(e,{propName:t,layer:r}):super._fetch(t,e)}_onResolve(t,e){let r=this.layer;if(r){let s=r.props.onDataLoad;t===`data`&&s&&s(e,{propName:t,layer:r})}}_onError(t,e){let r=this.layer;r&&r.raiseError(e,`loading ${t} of ${this.layer}`)}};var nm=`layer.changeFlag`;var om=`layer.initialize`;var am=`layer.update`;var cm=`layer.finalize`;var lm=`layer.matched`;var Sl=2**24-1;var um=Object.freeze([]);var fm=Pt(({oldViewport:i,viewport:t})=>i.equals(t));var ct=new Uint8ClampedArray(0);function Al(i){return i.rowIndexes||i.pickingColors||i.instancePickingColors}function no(i){return i.rowIndexes}function oo(i){return i.pickingColors||i.instancePickingColors}var hm={data:{type:`data`,value:um,async:!0},dataComparator:{type:`function`,value:null,optional:!0},_dataDiff:{type:`function`,value:i=>i&&i.__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:(i,{propName:t,layer:e,loaders:r$76,loadOptions:s$37,signal:n})=>{let{resourceManager:o}=e.context;s$37=s$37||e.getLoadOptions(),r$76=r$76||e.props.loaders,n&&(s$37=s(r({},s$37),{core:s(r({},s$37?.core),{fetch:s(r({},s$37?.core?.fetch),{signal:n})})}));let a=o.contains(i);return!a&&!s$37&&(o.add({resourceId:i,data:xe(i,r$76),persistent:!1}),a=!0),a?o.subscribe({resourceId:i,onChange:c=>e.internalState?.reloadAsyncProp(t,c),consumerId:e.id,requestId:t}):xe(i,r$76,s$37)}},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:i})=>[0,-i*100]},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:`accessor`,value:[0,0,128,128]}};var li=class extends gs{constructor(){super(...arguments),this.internalState=null,this.lifecycle=Yt.NO_STATE,this.parent=null}static get componentName(){return Object.prototype.hasOwnProperty.call(this,`layerName`)?this.layerName:``}get root(){let t=this;for(;t.parent;)t=t.parent;return t}toString(){return`${this.constructor.layerName||this.constructor.name}({id: '${this.props.id}'})`}project(t){R(this.internalState);let e=this.internalState.viewport||this.context.viewport,[s,n,o]=Wt(ps(t,{viewport:e,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),e.pixelProjectionMatrix);return t.length===2?[s,n]:[s,n,o]}unproject(t){return R(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(t)}projectPosition(t,e){R(this.internalState);let r$77=this.internalState.viewport||this.context.viewport;return bl(t,r({viewport:r$77,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem},e))}get isComposite(){return!1}get isDrawable(){return!0}setState(t){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,t),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 t=this.state;return t&&(t.models||t.model&&[t.model])||[]}setShaderModuleProps(...t){for(let e of this.getModels())e.shaderInputs.setProps(...t)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){let{coordinateSystem:t}=this.props;return t==="default"||t===`lnglat`||t===`cartesian`}onHover(t,e){return this.props.onHover&&this.props.onHover(t,e)||!1}onClick(t,e){return this.props.onClick&&this.props.onClick(t,e)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(t,e=[]){return e[0]=t+1&255,e[1]=t+1>>8&255,e[2]=t+1>>8>>8&255,e}decodePickingColor(t){R(t instanceof Uint8Array);let[e,r,s]=t;return e+r*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(t){t=Qn(t,{disableWarnings:!0,modules:this.context.defaultShaderModules});for(let e of this.props.extensions)t=Qn(t,e.getShaders.call(this,e));return t}shouldUpdateState(t){return t.changeFlags.propsOrDataChanged}updateState(t){let e=this.getAttributeManager(),{dataChanged:r}=t.changeFlags;if(r&&e)if(Array.isArray(r))for(let s of r)e.invalidateAll(s);else e.invalidateAll();if(e){let{props:s}=t,n=this.internalState.hasPickingBuffer,o=Number.isInteger(s.highlightedObjectIndex)||!!s.pickable||s.extensions.some(a=>a.getNeedsPickingBuffer.call(this,a));if(n!==o){this.internalState.hasPickingBuffer=o;let a=Al(e.attributes);a&&(o&&a.constant&&(a.constant=!1,e.invalidate(a.id)),!a.value&&!o&&(a.constant=!0,a.value=no(e.attributes)?[vr]:[0,0,0]))}}}finalizeState(t){for(let r of this.getModels())r.destroy();let e=this.getAttributeManager();e&&e.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(t){for(let e of this.getModels())e.draw(t.renderPass)}getPickingInfo({info:t,mode:e,sourceLayer:r}){let{index:s}=t;return s>=0&&Array.isArray(this.props.data)&&(t.object=this.props.data[s]),t}raiseError(t,e){e&&(t=new Error(`${e}: ${t.message}`,{cause:t})),this.props.onError?.(t)||this.context?.onError?.(t,this)}getNeedsRedraw(t={clearRedrawFlags:!1}){return this._getNeedsRedraw(t)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){return this.internalState?.uniformTransitions.active||!1}activateViewport(t){if(!this.internalState)return;let e=this.internalState.viewport;this.internalState.viewport=t,(!e||!fm({oldViewport:e,viewport:t}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(t=`all`){let e=this.getAttributeManager();e&&(t===`all`?e.invalidateAll():e.invalidate(t))}updateAttributes(t){let e=!1;for(let r in t)t[r].layoutChanged()&&(e=!0);for(let r of this.getModels())this._setModelAttributes(r,t,e)}_updateAttributes(){let t=this.getAttributeManager();if(!t)return;let e=this.props,r=this.getNumInstances(),s=this.getStartIndices();t.update({data:e.data,numInstances:r,startIndices:s,props:e,transitions:e.transitions,buffers:e.data.attributes,context:this});let n=t.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(n)}_updateAttributeTransition(){let t=this.getAttributeManager();t&&t.updateTransition()}_updateUniformTransition(){let{uniformTransitions:t}=this.internalState;if(t.active){let e=t.update(),r=Object.create(this.props);for(let s in e)Object.defineProperty(r,s,{value:e[s]});return r}return this.props}calculateInstancePickingColors(t,{numInstances:e}){if(t.constant)return;let r=Math.floor(ct.length/4);this.internalState.usesPickingColorCache=!0;let s=e>0&&ct[0]===0;if(r<e||s){e>Sl&&S.warn(`Layer has too many data objects. Picking might not be able to distinguish all objects.`)(),ct=pt.allocate(ct,e,{size:4,copy:!0,maxCount:Math.max(e,Sl)});let n=Math.floor(ct.length/4),o=[0,0,0],a=s?0:r;for(let c=a;c<n;c++)this.encodePickingColor(c,o),ct[c*4+0]=o[0],ct[c*4+1]=o[1],ct[c*4+2]=o[2],ct[c*4+3]=0}t.value=ct.subarray(0,e*4)}_setModelAttributes(t,e,r=!1){if(!Object.keys(e).length)return;let s=this.getAttributeManager();if(s?.hasBufferGroups()){this._setGroupedModelAttributes(t,s,e);return}if(r){let c=this.getAttributeManager();t.setBufferLayout(c.getBufferLayouts(t)),e=c.getAttributes()}let n=t.userData?.excludeAttributes||{},o={},a={};for(let c in e){if(n[c])continue;let l=e[c].getValue();for(let u in l){let f=l[u];f instanceof P$2?e[c].settings.isIndexed?t.setIndexBuffer(f):o[u]=f:f&&(a[u]=f)}}t.setAttributes(o),t.setConstantAttributes(a)}_setGroupedModelAttributes(t,e,r$78){let s=t.userData?.excludeAttributes||{},n=e.getBufferGroupBindings(r$78,t,s);t.setBufferLayout(n.bufferLayouts);let o=r({},n.buffers),a={},c=e.getAttributes();for(let l in c){if(s[l]||n.groupedAttributeIds.has(l))continue;let u=c[l],f=u.getValue();for(let d in f){let p=f[d];p instanceof P$2?u.settings.isIndexed?t.setIndexBuffer(p):o[d]=p:p&&(a[d]=p)}}t.setAttributes(o),t.setConstantAttributes(a)}disablePickingIndex(t){let e=this.props.data;if(!(`attributes`in e)){this._disablePickingIndex(t);return}let r=this.getAttributeManager().attributes,s=no(r),n=oo(r),o=s&&e.attributes&&e.attributes[s.id];if(o&&o.value){let c=o.value;for(let l=0;l<e.length;l++)c[s.getVertexOffset(l)]===t&&this._disablePickingIndex(l);return}let a=n&&e.attributes&&e.attributes[n.id];if(a&&a.value){let c=a.value,l=this.encodePickingColor(t);for(let u=0;u<e.length;u++){let f=n.getVertexOffset(u);c[f]===l[0]&&c[f+1]===l[1]&&c[f+2]===l[2]&&this._disablePickingIndex(u)}}else this._disablePickingIndex(t)}_disablePickingIndex(t){let e=this.getAttributeManager().attributes,r=no(e);if(r){let a=r.getVertexOffset(t),c=r.getVertexOffset(t+1),l=new Uint32Array(c-a);l.fill(vr),r.buffer.write(l,a*l.BYTES_PER_ELEMENT);return}let s=oo(e);if(!s){this.internalState&&Xa(this.internalState.disabledPickingIndices,t);return}let n=s.getVertexOffset(t),o=s.getVertexOffset(t+1);s.buffer.write(new Uint8Array(o-n),n)}restorePickingColors(){let t=this.getAttributeManager().attributes,e=Al(t);if(!e){this.internalState&&(this.internalState.disabledPickingIndices.length=0);return}let r=oo(t);this.internalState.usesPickingColorCache&&r&&r.value.buffer!==ct.buffer&&(r.value=ct.subarray(0,r.value.length)),e.updateSubBuffer({startOffset:0})}_initialize(){R(!this.internalState),N(om,this);let t=this._getAttributeManager();this.internalState=new ci({attributeManager:t,layer:this}),this._clearChangeFlags(),this.state={},Object.defineProperty(this.state,"attributeManager",{get:()=>(S.deprecated(`layer.state.attributeManager`,`layer.getAttributeManager()`)(),t)}),this.internalState.uniformTransitions=new si(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(let e of this.props.extensions)e.initializeState.call(this,this.context,e);this.setChangeFlags({dataChanged:`init`,propsChanged:`init`,viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(t){N(lm,this,this===t);let{state:e,internalState:r}=t;this!==t&&(this.internalState=r,this.state=e,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){let t=this.needsUpdate();if(N(am,this,t),!t)return;this.context.stats.get(`Layer updates`).incrementCount();let e=this.props,r=this.context,s=this.internalState,n=r.viewport,o=this._updateUniformTransition();s.propsInTransition=o,r.viewport=s.viewport||n,this.props=o;try{let a=this._getUpdateParams(),c=this.getModels();if(r.device)this.updateState(a);else try{this.updateState(a)}catch{}for(let u of this.props.extensions)u.updateState.call(this,a,u);this.setNeedsRedraw(),this._updateAttributes();let l=this.getModels()[0]!==c[0];this._postUpdate(a,l)}finally{r.viewport=n,this.props=e,this._clearChangeFlags(),s.needsUpdate=!1,s.resetOldProps()}}_finalize(){N(cm,this),this.finalizeState(this.context);for(let t of this.props.extensions)t.finalizeState.call(this,this.context,t)}_drawLayer({renderPass:t,shaderModuleProps:e=null,uniforms:r={},parameters:s={}}){this._updateAttributeTransition();let n=this.props,o=this.context;this.props=this.internalState.propsInTransition||n;try{e&&this.setShaderModuleProps(e);let{getPolygonOffset:a}=this.props,c=a&&a(r)||[0,0];o.device instanceof Ke$1&&o.device.setParametersWebGL({polygonOffset:c});let l=o.device instanceof Ke$1?null:dm(s);if(pm(this.getModels(),t,s,l),o.device instanceof Ke$1)o.device.withParametersWebGL(s,()=>{let u={renderPass:t,shaderModuleProps:e,uniforms:r,parameters:s,context:o};for(let f of this.props.extensions)f.draw.call(this,u,f);this.draw(u)});else{l?.renderPassParameters&&t.setParameters(l.renderPassParameters);let u={renderPass:t,shaderModuleProps:e,uniforms:r,parameters:s,context:o};for(let f of this.props.extensions)f.draw.call(this,u,f);this.draw(u)}}finally{this.props=n}}getChangeFlags(){return this.internalState?.changeFlags}setChangeFlags(t){if(!this.internalState)return;let{changeFlags:e}=this.internalState;for(let s in t)if(t[s]){let n=!1;switch(s){case`dataChanged`:let o=t[s],a=e[s];o&&Array.isArray(a)&&(e.dataChanged=Array.isArray(o)?a.concat(o):o,n=!0);default:e[s]||(e[s]=t[s],n=!0)}n&&N(nm,this,s,t)}let r=!!(e.dataChanged||e.updateTriggersChanged||e.propsChanged||e.extensionsChanged);e.propsOrDataChanged=r,e.somethingChanged=r||e.viewportChanged||e.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(t,e){let r=gl(t,e);if(r.updateTriggersChanged)for(let s in r.updateTriggersChanged)r.updateTriggersChanged[s]&&this.invalidateAttribute(s);if(r.transitionsChanged)for(let s in r.transitionsChanged)this.internalState.uniformTransitions.add(s,e[s],t[s],t.transitions?.[s]);return this.setChangeFlags(r)}validateProps(){ml(this.props)}updateAutoHighlight(t){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(t)}_updateAutoHighlight(t){let e={highlightedObjectColor:t.picked?t.color:null},{highlightColor:r}=this.props;t.picked&&typeof r==`function`&&(e.highlightColor=r(t)),this.setShaderModuleProps({picking:e}),this.setNeedsRedraw()}_getAttributeManager(){let t=this.context;return new ei(t.device,{id:this.props.id,stats:t.stats,timeline:t.timeline})}_postUpdate(t,e){let{props:r,oldProps:s}=t,n=this.state.model;n?.isInstanced&&n.setInstanceCount(this.getNumInstances());let{autoHighlight:o,highlightedObjectIndex:a,highlightColor:c}=r;if(e||s.autoHighlight!==o||s.highlightedObjectIndex!==a||s.highlightColor!==c){let l={};Array.isArray(c)&&(l.highlightColor=c),(e||s.autoHighlight!==o||a!==s.highlightedObjectIndex)&&(l.highlightedObjectColor=Number.isFinite(a)&&a>=0?this.encodePickingColor(a):null),this.setShaderModuleProps({picking:l})}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(t){if(!this.internalState)return!1;let e=!1;e=e||this.internalState.needsRedraw&&this.id;let r=this.getAttributeManager(),s=r?r.getNeedsRedraw(t):!1;if(e=e||s,e)for(let n of this.props.extensions)n.onNeedsRedraw.call(this,n);return this.internalState.needsRedraw=this.internalState.needsRedraw&&!t.clearRedrawFlags,e}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}};li.defaultProps=hm;li.layerName=`Layer`;var ao=li;function dm(i){let r=i,{blendConstant:t}=r,e=u(r,[`blendConstant`]);return t?{pipelineParameters:e,renderPassParameters:{blendConstant:t}}:{pipelineParameters:e}}function pm(i,t,e,r$79){for(let s of i)s.device.type===`webgpu`?(mm(s,t),s.setParameters(r(r({},s.parameters),r$79?.pipelineParameters))):s.setParameters(e)}function mm(i,t){let e=t.props.framebuffer||(t.framebuffer??null);if(!e)return;let r=e.colorAttachments.map(o=>o?.texture?.format??null),s=e.depthStencilAttachment?.texture?.format,n=i;(!gm(n.props.colorAttachmentFormats,r)||n.props.depthStencilAttachmentFormat!==s)&&(n.props.colorAttachmentFormats=r,n.props.depthStencilAttachmentFormat=s,n._setPipelineNeedsUpdate(`attachment formats`))}function gm(i,t){if(i===t)return!0;if(!i||!t||i.length!==t.length)return!1;for(let e=0;e<i.length;e++)if(i[e]!==t[e])return!1;return!0}var ym=`compositeLayer.renderLayers`;var ys=class extends ao{get isComposite(){return!0}get isDrawable(){return!1}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(t=>t.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(t){}setState(t){super.setState(t),this.setNeedsUpdate()}getPickingInfo({info:t}){let{object:e}=t;return e&&e.__source&&e.__source.parent&&e.__source.parent.id===this.id&&(t.object=e.__source.object,t.index=e.__source.index),t}filterSubLayer(t){return!0}shouldRenderSubLayer(t,e){return e&&e.length}getSubLayerClass(t,e){let{_subLayerProps:r}=this.props;return r&&r[t]&&r[t].type||e}getSubLayerRow(t,e,r){return t.__source={parent:this,object:e,index:r},t}getSubLayerAccessor(t){if(typeof t==`function`){let e={index:-1,data:this.props.data,target:[]};return(r,s)=>r&&r.__source?(e.index=r.__source.index,t(r.__source.object,e)):t(r,s)}return t}getSubLayerProps(t={}){let{opacity:e,pickable:r$80,visible:s,parameters:n,getPolygonOffset:o,highlightedObjectIndex:a,autoHighlight:c,highlightColor:l,coordinateSystem:u,coordinateOrigin:f,wrapLongitude:d,positionFormat:p,modelMatrix:m,extensions:g,fetch:_,operation:b,_subLayerProps:v}=this.props,w={id:``,updateTriggers:{},opacity:e,pickable:r$80,visible:s,parameters:n,getPolygonOffset:o,highlightedObjectIndex:a,autoHighlight:c,highlightColor:l,coordinateSystem:u,coordinateOrigin:f,wrapLongitude:d,positionFormat:p,modelMatrix:m,extensions:g,fetch:_,operation:b},x=v&&t.id&&v[t.id],A=x&&x.updateTriggers,T=t.id||`sublayer`;if(x){let L=this.props[ot],I=t.type?t.type._propTypes:{};for(let C in x){let M=I[C]||L[C];M&&M.type===`accessor`&&(x[C]=this.getSubLayerAccessor(x[C]))}}Object.assign(w,t,x),w.id=`${this.props.id}-${T}`,w.updateTriggers=r(r({all:this.props.updateTriggers?.all},t.updateTriggers),A);for(let L of g){let I=L.getSubLayerProps.call(this,L);I&&Object.assign(w,I,{updateTriggers:Object.assign(w.updateTriggers,I.updateTriggers)})}return w}_updateAutoHighlight(t){for(let e of this.getSubLayers())e.updateAutoHighlight(t)}_getAttributeManager(){return null}_postUpdate(t,e){let r=this.internalState.subLayers,s=!r||this.needsUpdate();if(s)r=oe(this.renderLayers(),Boolean),this.internalState.subLayers=r;N(ym,this,s,r);for(let n of r)n.parent=this}};ys.layerName=`CompositeLayer`;var _m=ys;var We=Math.PI/180;var Ml=180/Math.PI;var wm=1;var _s=6370972;var jt=256;var Cl=.75;var Il=1.15;function Rl(i){let t=Rt(i+180,360)-180;return Math.abs(t)<wm}function bm(){let i=jt/_s,t=Math.PI/180*jt;return{unitsPerMeter:[i,i,i],unitsPerMeter2:[0,0,0],metersPerUnit:[1/i,1/i,1/i],unitsPerDegree:[t,t,i],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/t,1/t,1/i]}}var ws=class extends De{constructor(t={}){let{longitude:e=0,bearing:r$81=0,pitch:s$38=0,zoom:n=0,nearZMultiplier:o=.5,farZMultiplier:a=1,resolution:c=10}=t,{latitude:l=0,height:u,altitude:f=1.5,fovy:d}=t;l=Math.max(Math.min(l,90),-90),u=u||1,d?f=se(d):d=It(f);let p=Math.max(Math.min(l,X),-X),m=Math.pow(2,n-z(p)),g=s$38*We,_=t.nearZ??o,b=t.farZ??(f+jt*2*m/u/Math.max(Math.cos(g),.1))*a,v=new U$3().lookAt({eye:[0,-f,0],up:[0,0,1]}).rotateX(-g).rotateY(-r$81*We).rotateX(l*We).rotateZ(-e*We).scale(m/u);super(s(r({},t),{height:u,viewMatrix:v,longitude:e,latitude:l,zoom:n,distanceScales:bm(),fovy:d,focalDistance:f,near:_,far:b})),this.scale=m,this.latitude=l,this.longitude=e,this.bearing=r$81,this.pitch=s$38,this.fovy=d,this.resolution=c}get projectionMode(){return V.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(t={}){let e={targetZ:t.z||0},r=this.unproject([0,this.height/2],e),s=this.unproject([this.width/2,0],e),n=this.unproject([this.width,this.height/2],e),o=this.unproject([this.width/2,this.height],e);return n[0]<this.longitude&&(n[0]+=360),r[0]>this.longitude&&(r[0]-=360),[Math.min(r[0],n[0],s[0],o[0]),Math.min(r[1],n[1],s[1],o[1]),Math.max(r[0],n[0],s[0],o[0]),Math.max(r[1],n[1],s[1],o[1])]}_getRayToGlobe(t,{topLeft:e=!0,targetZ:r}={}){let[s,n]=t,o=e?n:this.height-n,{pixelUnprojectionMatrix:a}=this,c=co(a,[s,o,-1,1]),l=co(a,[s,o,1,1]),u=((r||0)/_s+1)*jt,f=Zn$1.sqrLen(Zn$1.sub([],c,l)),d=Zn$1.sqrLen(c),p=Zn$1.sqrLen(l);return{rayStartPosition:c,rayEndPosition:l,radius:u,rayLengthSquared:f,rayStartDistanceSquared:d,distanceToCenterSquared:4*((4*d*p-(f-d-p)**2)/16)/f}}_getRayDistanceToGlobeCenterRatio(t,e){let{distanceToCenterSquared:r,radius:s}=this._getRayToGlobe(t,e);return Math.sqrt(Math.max(0,r))/s}getZoomAnchorStrength(t){let e=this._getRayDistanceToGlobeCenterRatio(t);if(e>=Il)return 0;let r=Math.max(0,Math.min(1,(e-Cl)/(Il-Cl)));return 1-r*r*(3-2*r)}unproject(t,{topLeft:e=!0,targetZ:r}={}){let[s,n,o]=t,a=e?n:this.height-n,{pixelUnprojectionMatrix:c}=this,l;if(Number.isFinite(o))l=co(c,[s,a,o,1]);else{let{rayStartPosition:p,rayEndPosition:m,radius:g,rayLengthSquared:_,rayStartDistanceSquared:b,distanceToCenterSquared:v}=this._getRayToGlobe(t,{topLeft:e,targetZ:r}),A=(Math.sqrt(b-v)-Math.sqrt(Math.max(0,g*g-v)))/Math.sqrt(_);l=Zn$1.lerp([],p,m,A)}let[u,f,d]=this.unprojectPosition(l);return Number.isFinite(o)?[u,f,d]:Number.isFinite(r)?[u,f,r]:[u,f]}projectPosition(t){let[e,r,s=0]=t,n=e*We,o=r*We,a=Math.cos(o),c=(s/_s+1)*jt;return[Math.sin(n)*a*c,-Math.cos(n)*a*c,Math.sin(o)*c]}unprojectPosition(t){let[e,r,s]=t,n=Zn$1.len(t),o=Math.asin(s/n);return[Math.atan2(e,-r)*Ml,o*Ml,(n/jt-1)*_s]}projectFlat(t){return t}unprojectFlat(t){return t}panByPosition(t,e,r){if(!r){let d=this.getZoomAnchorStrength(e);if(d===0)return{longitude:this.longitude,latitude:this.latitude};let p=this.unproject(e),m=Rt(t[0]-p[0]+180,360)-180,g=t[1]-p[1],_=Math.abs(p[1])>X||Math.abs(m)>90;if(Rl(this.bearing)&&_)return{longitude:this.longitude,latitude:this.latitude};if(Rl(this.bearing)&&g!==0){let x=((g>0?X:-X)-this.latitude)/g;d=Math.min(d,Math.max(0,x))}return{longitude:this.longitude+m*d,latitude:Math.max(Math.min(this.latitude+g*d,90),-90)}}let[s,n,o]=t,c=.25/Math.pow(2,this.zoom-z(this.latitude)),l=s+c*(r[0]-e[0]),u=n-c*(r[1]-e[1]);u=Math.max(Math.min(u,90),-90);let f={longitude:l,latitude:u,zoom:o-z(n)};return f.zoom+=z(f.latitude),f}};ws.displayName=`GlobeViewport`;var lo=ws;function z(i,t){t&&(i=Math.max(Math.min(i,X),-X));let e=Math.PI*Math.cos(i*Math.PI/180);return Math.log2(e)}function co(i,t){let e=ir$2.transformMat4([],t,i);return ir$2.scale(e,e,1/e[3]),e}var Ge=Math.PI/180;var uo=180/Math.PI;var it=class i{static toPosition(t,e){let r=e*Ge,s=t*Ge,n=Math.cos(r);return[n*Math.cos(s),n*Math.sin(s),Math.sin(r)]}static toLngLat(t){return[Math.atan2(t[1],t[0])*uo,Math.asin(za$1(t[2],-1,1))*uo]}static tangentBasis(t,e){let r=e*Ge,s=t*Ge,n=Math.sin(r),o=Math.cos(r),a=Math.sin(s),c=Math.cos(s);return{N:[-n*c,-n*a,o],E:[-a,c,0]}}static upVector(t,e,r){let{N:s,E:n}=i.tangentBasis(t,e),o=r*Ge,a=Math.cos(o),c=Math.sin(o);return[s[0]*a+n[0]*c,s[1]*a+n[1]*c,s[2]*a+n[2]*c]}static bearing(t,e,r){let{N:s,E:n}=i.tangentBasis(e,r);return Math.atan2(Zn$1.dot(t,n),Zn$1.dot(t,s))*uo}static cameraFrame(t,e,r){let s=i.toPosition(t,e),n=i.upVector(t,e,r),{N:o,E:a}=i.tangentBasis(t,e),c=r*Ge,l=Math.cos(c),u=Math.sin(c),f=[a[0]*l-o[0]*u,a[1]*l-o[1]*u,a[2]*l-o[2]*u];return{position:s,up:n,axisHorizontal:Zn$1.cross([],s,f),axisVertical:Zn$1.cross([],s,n),longitude:t,latitude:e,bearing:r}}static angularDistance(t,e){let r=i.toPosition(t.longitude,t.latitude),s=i.toPosition(e.longitude,e.latitude);return Math.acos(za$1(Zn$1.dot(r,s),-1,1))}static greatCircleAxis(t,e){let r=i.toPosition(t.longitude,t.latitude),s=i.toPosition(e.longitude,e.latitude);return Zn$1.normalize([],Zn$1.cross([],r,s))}static rotate(t,e,r){let s=new gr$2().fromAxisRotation(e,r);return Zn$1.transformQuat([],t,s)}static rotateFrame(t,e,r$82,s$39){let n=i.rotate(t.position,t.axisHorizontal,e);n=i.rotate(n,t.axisVertical,r$82);let o=i.rotate(t.up,t.axisHorizontal,e);o=i.rotate(o,t.axisVertical,r$82);let[a,c]=i.toLngLat(n),l=s$39?0:i.bearing(o,a,c);return s(r({},t),{position:n,up:o,longitude:a,latitude:c,bearing:l})}static rotateFrameToMatch(t,e,r$83,s$40=1){let n=i.toPosition(...e),o=i.toPosition(...r$83),a=Zn$1.cross([],n,o),c=Zn$1.len(a),l=za$1(Zn$1.dot(n,o),-1,1);if(c<1e-12){if(l>0)return t;a=Zn$1.cross([],n,t.up),Zn$1.len(a)<1e-12&&(a=Zn$1.cross([],n,t.axisVertical))}Zn$1.normalize(a,a);let u=Math.atan2(c,l)*za$1(s$40,0,1),f=i.rotate(t.position,a,u),d=i.rotate(t.up,a,u),[p,m]=i.toLngLat(f);return s(r({},t),{position:f,up:d,longitude:p,latitude:m,bearing:i.bearing(d,p,m)})}};var Ll=5;var vm=1/(1-Math.exp(-Ll));var kl=i=>(1-Math.exp(-Ll*i))*vm;var bs=class extends ce{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$84=super.initializeProps(t,e);return this._startZoom=t.zoom,this._mode===`rotation`?this._startFrame=s(r({},it.cameraFrame(t.longitude,t.latitude,t.bearing||0)),{axisHorizontal:this._axis}):r$84.end.longitude=this._targetLongitude,r$84}interpolateProps(t,e,r){if(this._mode===`rotation`){let{longitude:a,latitude:c,bearing:l}=it.rotateFrame(this._startFrame,this._totalAngle*r,0);return{bearing:l,longitude:a,latitude:c,zoom:this._startZoom+z(c,!0)-z(this._startFrame.latitude,!0)}}let s=t.longitude+(e.longitude-t.longitude)*r,n=t.latitude+(e.latitude-t.latitude)*r;return{longitude:s,latitude:n,zoom:this._startZoom+z(n,!0)-z(t.latitude,!0)}}};var $e=Math.PI/180;var xm=180/Math.PI;function Ol(i,t=0){let e=Math.min(180,i)*$e;return jt*2*Math.sin(e/2)*Math.pow(2,t)}function Ye(i,t=0){let e=i/Math.pow(2,t);return Math.asin(Math.min(1,e/jt/2))*2*xm}var fo=class extends Ir{constructor(t){let a=t,{startPanPos:e,startPanCameraFrame:r,startPanAngularRate:s}=a,n=u(a,[`startPanPos`,`startPanCameraFrame`,`startPanAngularRate`]);n.normalize=!1,super(n);let o=this._state;e!==void 0&&(o.startPanPos=e),r!==void 0&&(o.startPanCameraFrame=r),s!==void 0&&(o.startPanAngularRate=s)}panStart({pos:t}){let{latitude:e,longitude:r,zoom:s,bearing:n=0}=this.getViewportProps(),o=it.cameraFrame(r,e,n),c=.25/Math.pow(2,s-z(e,!0))*$e;return this._getUpdatedState({startPanPos:t,startPanCameraFrame:o,startPanAngularRate:c,startZoom:s})}pan({pos:t,startPos:e}){let r=this.getState(),s=r.startPanPos||e;if(!s)return this;let n=r.startPanCameraFrame,o=r.startPanAngularRate,a=r.startZoom??this.getViewportProps().zoom;if(!n||!o)return this;let c=s[0]-t[0],l=s[1]-t[1],u=c*o,f=-l*o,d=it.rotateFrame(n,u,f),p=a+z(d.latitude,!0)-z(n.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(),s=[e/2,r/2];return this.panStart({pos:s}).pan({pos:[s[0]+t[0],s[1]+t[1]]}).panEnd()}applyConstraints(t){let e=t,r$85=e[Ot];delete e[Ot];let{latitude:s$41,maxBounds:n}=t;if(t.zoom=this._constrainZoom(t.zoom,t),r$85){let a=this.makeViewport(t),c=a.getZoomAnchorStrength(r$85.screenPosition);if(c>0){let l=a.unproject(r$85.screenPosition),u=it.cameraFrame(t.longitude,t.latitude,t.bearing||0),f=it.rotateFrameToMatch(u,[l[0],l[1]],[r$85.position[0],r$85.position[1]],c);t.longitude=f.longitude,t.latitude=f.latitude,t.bearing=f.bearing}}(t.longitude<-180||t.longitude>180)&&(t.longitude=Rt(t.longitude+180,360)-180),(t.bearing<-180||t.bearing>180)&&(t.bearing=Rt(t.bearing+180,360)-180),t.latitude=za$1(t.latitude,-90,90),t.pitch=za$1(t.pitch,t.minPitch,t.maxPitch);let o=n?je(t.width,t.height,t.maxBoundsPadding):null;if(n&&o&&(o.width>=0&&(t.longitude=za$1(t.longitude,n[0][0],n[1][0])),o.height>=0&&(t.latitude=za$1(t.latitude,n[0][1],n[1][1]))),n&&o){let c=Zi(this.makeViewport(s(r({},t),{bearing:0,pitch:0})),[t.longitude,t.latitude],o),l=t.zoom-z(s$41),u=n[1][0]-n[0][0],f=n[1][1]-n[0][1];if(o.height>=0&&f>0&&f<180){let d=Math.min(Ye(o.height,l),f),p=o.height?d*c.bottom/o.height:Ye(c.bottom,l),m=o.height?d*c.top/o.height:Ye(c.top,l);t.latitude=za$1(t.latitude,n[0][1]+p,n[1][1]-m)}if(o.width>=0&&u>0&&u<360){let d=Math.min(Ye(o.width/Math.cos(t.latitude*$e),l),u),p=o.width?d*c.left/o.width:Ye(c.left/Math.cos(t.latitude*$e),l),m=o.width?d*c.right/o.width:Ye(c.right/Math.cos(t.latitude*$e),l);t.longitude=za$1(t.longitude,n[0][0]+p,n[1][0]-m)}}return t.latitude=za$1(t.latitude,-90,90),t.latitude!==s$41&&(t.zoom+=z(t.latitude,!0)-z(s$41,!0)),t}_constrainZoom(t,e){e||(e=this.getViewportProps());let{maxZoom:r,maxBounds:s}=e,{minZoom:n}=e;if(s!==null&&e.width>0&&e.height>0){let c=je(e.width,e.height,e.maxBoundsPadding),l=s[0][1],u=s[1][1],f=Math.sign(l)===Math.sign(u)?Math.min(Math.abs(l),Math.abs(u)):0,d=z(0),p=Ol(s[1][0]-s[0][0])*Math.cos(f*$e),m=Ol(s[1][1]-s[0][1]);c.width>0&&p>0&&(n=Math.max(n,Math.log2(c.width/p)+d)),c.height>0&&m>0&&(n=Math.max(n,Math.log2(c.height/m)+d)),n>r&&(n=r)}let a=z(e.latitude,!0)-z(0,!0);return za$1(t,n+a,r+a)}};var ui=class extends fe{constructor(){super(...arguments),this.ControllerState=fo,this.transition={transitionDuration:300,transitionInterpolator:new kt({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:s,latitude:n}=r.getViewportProps();return this._panHistory.push({longitude:s,latitude:n,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 s$42=this._panHistory[0],n=this._panHistory[this._panHistory.length-1],o=n.timestamp-s$42.timestamp;if(o>0){let a=this.controllerState.getViewportProps(),l=it.angularDistance(s$42,n)/o;if(l>1e-6){let u=l*e/2,f=it.greatCircleAxis(s$42,n),d=it.cameraFrame(a.longitude,a.latitude,a.bearing||0),p=it.rotateFrame(s(r({},d),{axisHorizontal:f}),u,0),m=p.longitude,g=za$1(p.latitude,-90,90),_=new bs({axis:f,totalAngle:u}),b=this.controllerState.panEnd();return this.updateViewport(b,{transitionInterpolator:_,transitionDuration:e,transitionEasing:kl,longitude:m,latitude:g},{isDragging:!1,isPanning:!0}),this._panHistory=[],!0}}}this._panHistory=[];let r$86=this.controllerState.panEnd();return this.updateViewport(r$86,null,{isDragging:!1,isPanning:!1}),!0}};var Pm={cullMode:`back`};var vs=class extends ae{constructor(t={}){super(s(r({},t),{parameters:r(r({},Pm),t.parameters)}))}getViewportType(t){return t.zoom>12?ne:lo}get ControllerType(){return ui}};vs.displayName=`GlobeView`;var Em=vs;var fi=class{static get componentName(){return Object.prototype.hasOwnProperty.call(this,`extensionName`)?this.extensionName:``}constructor(t){t&&(this.opts=t)}equals(t){return this===t?!0:this.constructor===t.constructor&&B(this.opts,t.opts,1)}getShaders(t){return null}getSubLayerProps(t){let{defaultProps:e}=t.constructor,r={updateTriggers:{}};for(let s in e)if(s in this.props){let n=e[s],o=this.props[s];r[s]=o,n&&n.type===`accessor`&&(r.updateTriggers[s]=this.props.updateTriggers[s],typeof o==`function`&&(r[s]=this.getSubLayerAccessor(o)))}return r}initializeState(t,e){}updateState(t,e){}onNeedsRedraw(t){}getNeedsPickingBuffer(t){return!1}draw(t,e){}finalizeState(t,e){}};fi.defaultProps={};fi.extensionName=`LayerExtension`;var Tm=fi;var xs=class{constructor(t){this.indexStarts=[0],this.vertexStarts=[0],this.vertexCount=0,this.instanceCount=0;let{attributes:e={}}=t;this.typedArrayManager=pt,this.attributes={},this._attributeDefs=e,this.opts=t,this.updateGeometry(t)}updateGeometry(t){Object.assign(this.opts,t);let{data:e,buffers:r={},getGeometry:s,geometryBuffer:n,positionFormat:o,dataChanged:a,normalize:c=!0}=this.opts;if(this.data=e,this.getGeometry=s,this.positionSize=n&&n.size||(o===`XY`?2:3),this.buffers=r,this.normalize=c,n&&(R(e.startIndices),this.getGeometry=this.getGeometryFromBuffer(n),c||(r.vertexPositions=n)),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)?ns(e,{size:this.positionSize,offset:t.offset,stride:t.stride,startIndices:this.data.startIndices}):null}_allocate(t,e){let{attributes:r,buffers:s,_attributeDefs:n,typedArrayManager:o}=this;for(let a in n)if(a in s)o.release(r[a]),r[a]=null;else{let c=n[a];c.copy=e,r[a]=o.allocate(r[a],t,c)}}_forEachGeometry(t,e,r){let{data:s,getGeometry:n}=this,{iterable:o,objectInfo:a}=Yr(s,e,r);for(let c of o){a.index++;t(n?n(c,a):null,a.index)}}_rebuildGeometry(t){if(!this.data)return;let{indexStarts:e,vertexStarts:r,instanceCount:s}=this,{data:n,geometryBuffer:o}=this,{startRow:a=0,endRow:c=1/0}=t||{},l={};if(t||(e=[0],r=[0]),this.normalize||!o)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),s=r[r.length-1];else if(r=n.startIndices,s=r[n.length]||0,ArrayBuffer.isView(o))s=s||o.length/this.positionSize;else if(o instanceof P$2){let f=this.positionSize*4;s=s||o.byteLength/f}else if(o.buffer){let f=o.stride||this.positionSize*4;s=s||o.buffer.byteLength/f}else if(o.value){let f=o.value,d=o.stride/f.BYTES_PER_ELEMENT||this.positionSize;s=s||f.length/d}this._allocate(s,!!t),this.indexStarts=e,this.vertexStarts=r,this.instanceCount=s;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]:s;u.geometrySize=m-r[d],u.geometryIndex=d,this.updateGeometryAttributes(p,u)},a,c),this.vertexCount=e[e.length-1]}};export{Ce$2 as $,fu as A,oe as B,Yr as C,dn as D,cu as E,lo as F,uu as G,rt as H,lu as I,wr as J,vu as K,ma as L,ie as M,ip as N,ee as O,ir as P,Ke$1 as Q,ne as R,Xl as S,ao as T,ru as U,qd as V,ut as W,xs as X,xe as Y,zl as Z,R as _,B as a,ce$2 as at,Vn as b,F as c,he$2 as ct,Je as d,Le$2 as et,Ka as f,No as g,Nn as h,As as i,be$2 as it,gi as j,eu as k,Fr as l,ve$2 as lt,Mt as m,$s as n,_e$2 as nt,Cs as o,de$2 as ot,Ku as p,wi as q,Ao as r,ae$2 as rt,Em as s,fe$2 as st,$d as t,Se$2 as tt,In as u,ye$1 as ut,S as v,_m as w,Wa as x,Tm as y,nt as z};
1318
+ //# debugId=85f8239b-9556-59e7-86e9-3c71bc0b3291