deck.gl 9.2.7 → 9.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dist.dev.js CHANGED
@@ -52,10 +52,10 @@ var __exports__ = (() => {
52
52
  return value;
53
53
  };
54
54
 
55
- // ../../node_modules/@probe.gl/env/dist/lib/globals.js
55
+ // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/globals.js
56
56
  var window_2, document_2, process_, console_, navigator_;
57
57
  var init_globals = __esm({
58
- "../../node_modules/@probe.gl/env/dist/lib/globals.js"() {
58
+ "../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/globals.js"() {
59
59
  window_2 = globalThis;
60
60
  document_2 = globalThis.document || {};
61
61
  process_ = globalThis.process || {};
@@ -64,7 +64,7 @@ var __exports__ = (() => {
64
64
  }
65
65
  });
66
66
 
67
- // ../../node_modules/@probe.gl/env/dist/lib/is-electron.js
67
+ // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/is-electron.js
68
68
  function isElectron(mockUserAgent) {
69
69
  if (typeof window !== "undefined" && window.process?.type === "renderer") {
70
70
  return true;
@@ -77,11 +77,11 @@ var __exports__ = (() => {
77
77
  return Boolean(userAgent2 && userAgent2.indexOf("Electron") >= 0);
78
78
  }
79
79
  var init_is_electron = __esm({
80
- "../../node_modules/@probe.gl/env/dist/lib/is-electron.js"() {
80
+ "../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/is-electron.js"() {
81
81
  }
82
82
  });
83
83
 
84
- // ../../node_modules/@probe.gl/env/dist/lib/is-browser.js
84
+ // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/is-browser.js
85
85
  function isBrowser2() {
86
86
  const isNode = (
87
87
  // @ts-expect-error
@@ -90,50 +90,165 @@ var __exports__ = (() => {
90
90
  return !isNode || isElectron();
91
91
  }
92
92
  var init_is_browser = __esm({
93
- "../../node_modules/@probe.gl/env/dist/lib/is-browser.js"() {
93
+ "../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/lib/is-browser.js"() {
94
94
  init_is_electron();
95
95
  }
96
96
  });
97
97
 
98
- // ../../node_modules/@probe.gl/env/dist/lib/get-browser.js
99
- function getBrowser(mockUserAgent) {
100
- if (!mockUserAgent && !isBrowser2()) {
101
- return "Node";
98
+ // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/index.js
99
+ var VERSION;
100
+ var init_dist = __esm({
101
+ "../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/index.js"() {
102
+ init_globals();
103
+ init_is_browser();
104
+ VERSION = true ? "4.1.1" : "untranspiled source";
102
105
  }
103
- if (isElectron(mockUserAgent)) {
104
- return "Electron";
106
+ });
107
+
108
+ // ../../node_modules/@probe.gl/log/dist/utils/assert.js
109
+ function assert3(condition, message2) {
110
+ if (!condition) {
111
+ throw new Error(message2 || "Assertion failed");
105
112
  }
106
- const userAgent2 = mockUserAgent || navigator_.userAgent || "";
107
- if (userAgent2.indexOf("Edge") > -1) {
108
- return "Edge";
113
+ }
114
+ var init_assert = __esm({
115
+ "../../node_modules/@probe.gl/log/dist/utils/assert.js"() {
109
116
  }
110
- if (globalThis.chrome) {
111
- return "Chrome";
117
+ });
118
+
119
+ // ../../node_modules/@probe.gl/log/dist/loggers/log-utils.js
120
+ function normalizeLogLevel(logLevel) {
121
+ if (!logLevel) {
122
+ return 0;
112
123
  }
113
- if (globalThis.safari) {
114
- return "Safari";
124
+ let resolvedLevel;
125
+ switch (typeof logLevel) {
126
+ case "number":
127
+ resolvedLevel = logLevel;
128
+ break;
129
+ case "object":
130
+ resolvedLevel = logLevel.logLevel || logLevel.priority || 0;
131
+ break;
132
+ default:
133
+ return 0;
115
134
  }
116
- if (globalThis.mozInnerScreenX) {
117
- return "Firefox";
135
+ assert3(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);
136
+ return resolvedLevel;
137
+ }
138
+ function normalizeArguments(opts) {
139
+ const { logLevel, message: message2 } = opts;
140
+ opts.logLevel = normalizeLogLevel(logLevel);
141
+ const args = opts.args ? Array.from(opts.args) : [];
142
+ while (args.length && args.shift() !== message2) {
118
143
  }
119
- return "Unknown";
144
+ switch (typeof logLevel) {
145
+ case "string":
146
+ case "function":
147
+ if (message2 !== void 0) {
148
+ args.unshift(message2);
149
+ }
150
+ opts.message = logLevel;
151
+ break;
152
+ case "object":
153
+ Object.assign(opts, logLevel);
154
+ break;
155
+ default:
156
+ }
157
+ if (typeof opts.message === "function") {
158
+ opts.message = opts.message();
159
+ }
160
+ const messageType = typeof opts.message;
161
+ assert3(messageType === "string" || messageType === "object");
162
+ return Object.assign(opts, { args }, opts.opts);
120
163
  }
121
- var init_get_browser = __esm({
122
- "../../node_modules/@probe.gl/env/dist/lib/get-browser.js"() {
123
- init_is_browser();
124
- init_is_electron();
125
- init_globals();
164
+ var init_log_utils = __esm({
165
+ "../../node_modules/@probe.gl/log/dist/loggers/log-utils.js"() {
166
+ init_assert();
126
167
  }
127
168
  });
128
169
 
129
- // ../../node_modules/@probe.gl/env/dist/index.js
130
- var VERSION;
131
- var init_dist = __esm({
132
- "../../node_modules/@probe.gl/env/dist/index.js"() {
133
- init_globals();
134
- init_is_browser();
135
- init_get_browser();
136
- VERSION = true ? "4.1.0" : "untranspiled source";
170
+ // ../../node_modules/@probe.gl/log/dist/loggers/base-log.js
171
+ var noop, BaseLog;
172
+ var init_base_log = __esm({
173
+ "../../node_modules/@probe.gl/log/dist/loggers/base-log.js"() {
174
+ init_log_utils();
175
+ noop = () => {
176
+ };
177
+ BaseLog = class {
178
+ constructor({ level = 0 } = {}) {
179
+ this.userData = {};
180
+ this._onceCache = /* @__PURE__ */ new Set();
181
+ this._level = level;
182
+ }
183
+ set level(newLevel) {
184
+ this.setLevel(newLevel);
185
+ }
186
+ get level() {
187
+ return this.getLevel();
188
+ }
189
+ setLevel(level) {
190
+ this._level = level;
191
+ return this;
192
+ }
193
+ getLevel() {
194
+ return this._level;
195
+ }
196
+ // Unconditional logging
197
+ warn(message2, ...args) {
198
+ return this._log("warn", 0, message2, args, { once: true });
199
+ }
200
+ error(message2, ...args) {
201
+ return this._log("error", 0, message2, args);
202
+ }
203
+ // Conditional logging
204
+ log(logLevel, message2, ...args) {
205
+ return this._log("log", logLevel, message2, args);
206
+ }
207
+ info(logLevel, message2, ...args) {
208
+ return this._log("info", logLevel, message2, args);
209
+ }
210
+ once(logLevel, message2, ...args) {
211
+ return this._log("once", logLevel, message2, args, { once: true });
212
+ }
213
+ _log(type, logLevel, message2, args, options = {}) {
214
+ const normalized = normalizeArguments({
215
+ logLevel,
216
+ message: message2,
217
+ args: this._buildArgs(logLevel, message2, args),
218
+ opts: options
219
+ });
220
+ return this._createLogFunction(type, normalized, options);
221
+ }
222
+ _buildArgs(logLevel, message2, args) {
223
+ return [logLevel, message2, ...args];
224
+ }
225
+ _createLogFunction(type, normalized, options) {
226
+ if (!this._shouldLog(normalized.logLevel)) {
227
+ return noop;
228
+ }
229
+ const tag = this._getOnceTag(options.tag ?? normalized.tag ?? normalized.message);
230
+ if ((options.once || normalized.once) && tag !== void 0) {
231
+ if (this._onceCache.has(tag)) {
232
+ return noop;
233
+ }
234
+ this._onceCache.add(tag);
235
+ }
236
+ return this._emit(type, normalized);
237
+ }
238
+ _shouldLog(logLevel) {
239
+ return this.getLevel() >= normalizeLogLevel(logLevel);
240
+ }
241
+ _getOnceTag(tag) {
242
+ if (tag === void 0) {
243
+ return void 0;
244
+ }
245
+ try {
246
+ return typeof tag === "string" ? tag : String(tag);
247
+ } catch {
248
+ return void 0;
249
+ }
250
+ }
251
+ };
137
252
  }
138
253
  });
139
254
 
@@ -272,17 +387,6 @@ var __exports__ = (() => {
272
387
  }
273
388
  });
274
389
 
275
- // ../../node_modules/@probe.gl/log/dist/utils/assert.js
276
- function assert3(condition, message2) {
277
- if (!condition) {
278
- throw new Error(message2 || "Assertion failed");
279
- }
280
- }
281
- var init_assert = __esm({
282
- "../../node_modules/@probe.gl/log/dist/utils/assert.js"() {
283
- }
284
- });
285
-
286
390
  // ../../node_modules/@probe.gl/log/dist/utils/hi-res-timestamp.js
287
391
  function getHiResTimestamp() {
288
392
  let timestamp;
@@ -302,53 +406,7 @@ var __exports__ = (() => {
302
406
  }
303
407
  });
304
408
 
305
- // ../../node_modules/@probe.gl/log/dist/log.js
306
- function noop() {
307
- }
308
- function normalizeLogLevel(logLevel) {
309
- if (!logLevel) {
310
- return 0;
311
- }
312
- let resolvedLevel;
313
- switch (typeof logLevel) {
314
- case "number":
315
- resolvedLevel = logLevel;
316
- break;
317
- case "object":
318
- resolvedLevel = logLevel.logLevel || logLevel.priority || 0;
319
- break;
320
- default:
321
- return 0;
322
- }
323
- assert3(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);
324
- return resolvedLevel;
325
- }
326
- function normalizeArguments(opts) {
327
- const { logLevel, message: message2 } = opts;
328
- opts.logLevel = normalizeLogLevel(logLevel);
329
- const args = opts.args ? Array.from(opts.args) : [];
330
- while (args.length && args.shift() !== message2) {
331
- }
332
- switch (typeof logLevel) {
333
- case "string":
334
- case "function":
335
- if (message2 !== void 0) {
336
- args.unshift(message2);
337
- }
338
- opts.message = logLevel;
339
- break;
340
- case "object":
341
- Object.assign(opts, logLevel);
342
- break;
343
- default:
344
- }
345
- if (typeof opts.message === "function") {
346
- opts.message = opts.message();
347
- }
348
- const messageType = typeof opts.message;
349
- assert3(messageType === "string" || messageType === "object");
350
- return Object.assign(opts, { args }, opts.opts);
351
- }
409
+ // ../../node_modules/@probe.gl/log/dist/loggers/probe-log.js
352
410
  function decorateMessage(id, message2, opts) {
353
411
  if (typeof message2 === "string") {
354
412
  const time = opts.time ? leftPad(formatTime(opts.total)) : "";
@@ -365,10 +423,11 @@ var __exports__ = (() => {
365
423
  }
366
424
  return "empty";
367
425
  }
368
- var originalConsole, DEFAULT_LOG_CONFIGURATION, cache, ONCE, Log;
369
- var init_log = __esm({
370
- "../../node_modules/@probe.gl/log/dist/log.js"() {
426
+ var originalConsole, DEFAULT_LOG_CONFIGURATION, ProbeLog;
427
+ var init_probe_log = __esm({
428
+ "../../node_modules/@probe.gl/log/dist/loggers/probe-log.js"() {
371
429
  init_dist();
430
+ init_base_log();
372
431
  init_local_storage();
373
432
  init_formatters();
374
433
  init_color();
@@ -386,10 +445,9 @@ var __exports__ = (() => {
386
445
  enabled: true,
387
446
  level: 0
388
447
  };
389
- cache = {};
390
- ONCE = { once: true };
391
- Log = class {
448
+ ProbeLog = class extends BaseLog {
392
449
  constructor({ id } = { id: "" }) {
450
+ super({ level: 0 });
393
451
  this.VERSION = VERSION;
394
452
  this._startTs = getHiResTimestamp();
395
453
  this._deltaTs = getHiResTimestamp();
@@ -397,22 +455,16 @@ var __exports__ = (() => {
397
455
  this.LOG_THROTTLE_TIMEOUT = 0;
398
456
  this.id = id;
399
457
  this.userData = {};
400
- this._storage = new LocalStorage(`__probe-${this.id}__`, DEFAULT_LOG_CONFIGURATION);
458
+ this._storage = new LocalStorage(`__probe-${this.id}__`, { [this.id]: DEFAULT_LOG_CONFIGURATION });
401
459
  this.timeStamp(`${this.id} started`);
402
460
  autobind(this);
403
461
  Object.seal(this);
404
462
  }
405
- set level(newLevel) {
406
- this.setLevel(newLevel);
407
- }
408
- get level() {
409
- return this.getLevel();
410
- }
411
463
  isEnabled() {
412
- return this._storage.config.enabled;
464
+ return this._getConfiguration().enabled;
413
465
  }
414
466
  getLevel() {
415
- return this._storage.config.level;
467
+ return this._getConfiguration().level;
416
468
  }
417
469
  /** @return milliseconds, with fractions */
418
470
  getTotal() {
@@ -436,20 +488,20 @@ var __exports__ = (() => {
436
488
  }
437
489
  // Configure
438
490
  enable(enabled = true) {
439
- this._storage.setConfiguration({ enabled });
491
+ this._updateConfiguration({ enabled });
440
492
  return this;
441
493
  }
442
494
  setLevel(level) {
443
- this._storage.setConfiguration({ level });
495
+ this._updateConfiguration({ level });
444
496
  return this;
445
497
  }
446
498
  /** return the current status of the setting */
447
499
  get(setting) {
448
- return this._storage.config[setting];
500
+ return this._getConfiguration()[setting];
449
501
  }
450
502
  // update the status of the setting
451
503
  set(setting, value) {
452
- this._storage.setConfiguration({ [setting]: value });
504
+ this._updateConfiguration({ [setting]: value });
453
505
  }
454
506
  /** Logs the current settings as a table */
455
507
  settings() {
@@ -465,11 +517,16 @@ var __exports__ = (() => {
465
517
  throw new Error(message2 || "Assertion failed");
466
518
  }
467
519
  }
468
- warn(message2) {
469
- return this._getLogFunction(0, message2, originalConsole.warn, arguments, ONCE);
520
+ warn(message2, ...args) {
521
+ return this._log("warn", 0, message2, args, {
522
+ method: originalConsole.warn,
523
+ once: true
524
+ });
470
525
  }
471
- error(message2) {
472
- return this._getLogFunction(0, message2, originalConsole.error, arguments);
526
+ error(message2, ...args) {
527
+ return this._log("error", 0, message2, args, {
528
+ method: originalConsole.error
529
+ });
473
530
  }
474
531
  /** Print a deprecation warning */
475
532
  deprecated(oldUsage, newUsage) {
@@ -479,50 +536,63 @@ var __exports__ = (() => {
479
536
  removed(oldUsage, newUsage) {
480
537
  return this.error(`\`${oldUsage}\` has been removed. Use \`${newUsage}\` instead`);
481
538
  }
482
- probe(logLevel, message2) {
483
- return this._getLogFunction(logLevel, message2, originalConsole.log, arguments, {
539
+ probe(logLevel, message2, ...args) {
540
+ return this._log("log", logLevel, message2, args, {
541
+ method: originalConsole.log,
484
542
  time: true,
485
543
  once: true
486
544
  });
487
545
  }
488
- log(logLevel, message2) {
489
- return this._getLogFunction(logLevel, message2, originalConsole.debug, arguments);
546
+ log(logLevel, message2, ...args) {
547
+ return this._log("log", logLevel, message2, args, {
548
+ method: originalConsole.debug
549
+ });
490
550
  }
491
- info(logLevel, message2) {
492
- return this._getLogFunction(logLevel, message2, console.info, arguments);
551
+ info(logLevel, message2, ...args) {
552
+ return this._log("info", logLevel, message2, args, { method: console.info });
493
553
  }
494
- once(logLevel, message2) {
495
- return this._getLogFunction(logLevel, message2, originalConsole.debug || originalConsole.info, arguments, ONCE);
554
+ once(logLevel, message2, ...args) {
555
+ return this._log("once", logLevel, message2, args, {
556
+ method: originalConsole.debug || originalConsole.info,
557
+ once: true
558
+ });
496
559
  }
497
560
  /** Logs an object as a table */
498
561
  table(logLevel, table, columns) {
499
562
  if (table) {
500
- return this._getLogFunction(logLevel, table, console.table || noop, columns && [columns], {
563
+ return this._log("table", logLevel, table, columns && [columns] || [], {
564
+ method: console.table || noop,
501
565
  tag: getTableHeader(table)
502
566
  });
503
567
  }
504
568
  return noop;
505
569
  }
506
570
  time(logLevel, message2) {
507
- return this._getLogFunction(logLevel, message2, console.time ? console.time : console.info);
571
+ return this._log("time", logLevel, message2, [], {
572
+ method: console.time ? console.time : console.info
573
+ });
508
574
  }
509
575
  timeEnd(logLevel, message2) {
510
- return this._getLogFunction(logLevel, message2, console.timeEnd ? console.timeEnd : console.info);
576
+ return this._log("time", logLevel, message2, [], {
577
+ method: console.timeEnd ? console.timeEnd : console.info
578
+ });
511
579
  }
512
580
  timeStamp(logLevel, message2) {
513
- return this._getLogFunction(logLevel, message2, console.timeStamp || noop);
581
+ return this._log("time", logLevel, message2, [], {
582
+ method: console.timeStamp || noop
583
+ });
514
584
  }
515
585
  group(logLevel, message2, opts = { collapsed: false }) {
516
- const options = normalizeArguments({ logLevel, message: message2, opts });
517
- const { collapsed } = opts;
518
- options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;
519
- return this._getLogFunction(options);
586
+ const method = (opts.collapsed ? console.groupCollapsed : console.group) || console.info;
587
+ return this._log("group", logLevel, message2, [], { method });
520
588
  }
521
589
  groupCollapsed(logLevel, message2, opts = {}) {
522
590
  return this.group(logLevel, message2, Object.assign({}, opts, { collapsed: true }));
523
591
  }
524
592
  groupEnd(logLevel) {
525
- return this._getLogFunction(logLevel, "", console.groupEnd || noop);
593
+ return this._log("groupEnd", logLevel, "", [], {
594
+ method: console.groupEnd || noop
595
+ });
526
596
  }
527
597
  // EXPERIMENTAL
528
598
  withGroup(logLevel, message2, func) {
@@ -538,34 +608,34 @@ var __exports__ = (() => {
538
608
  console.trace();
539
609
  }
540
610
  }
541
- // PRIVATE METHODS
542
- /** Deduces log level from a variety of arguments */
543
611
  _shouldLog(logLevel) {
544
- return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);
545
- }
546
- _getLogFunction(logLevel, message2, method, args, opts) {
547
- if (this._shouldLog(logLevel)) {
548
- opts = normalizeArguments({ logLevel, message: message2, args, opts });
549
- method = method || opts.method;
550
- assert3(method);
551
- opts.total = this.getTotal();
552
- opts.delta = this.getDelta();
553
- this._deltaTs = getHiResTimestamp();
554
- const tag = opts.tag || opts.message;
555
- if (opts.once && tag) {
556
- if (!cache[tag]) {
557
- cache[tag] = getHiResTimestamp();
558
- } else {
559
- return noop;
560
- }
561
- }
562
- message2 = decorateMessage(this.id, opts.message, opts);
563
- return method.bind(console, message2, ...opts.args);
612
+ return this.isEnabled() && super._shouldLog(logLevel);
613
+ }
614
+ _emit(_type, normalized) {
615
+ const method = normalized.method;
616
+ assert3(method);
617
+ normalized.total = this.getTotal();
618
+ normalized.delta = this.getDelta();
619
+ this._deltaTs = getHiResTimestamp();
620
+ const message2 = decorateMessage(this.id, normalized.message, normalized);
621
+ return method.bind(console, message2, ...normalized.args);
622
+ }
623
+ _getConfiguration() {
624
+ if (!this._storage.config[this.id]) {
625
+ this._updateConfiguration(DEFAULT_LOG_CONFIGURATION);
564
626
  }
565
- return noop;
627
+ return this._storage.config[this.id];
628
+ }
629
+ _updateConfiguration(configuration) {
630
+ const currentConfiguration = this._storage.config[this.id] || {
631
+ ...DEFAULT_LOG_CONFIGURATION
632
+ };
633
+ this._storage.setConfiguration({
634
+ [this.id]: { ...currentConfiguration, ...configuration }
635
+ });
566
636
  }
567
637
  };
568
- Log.VERSION = VERSION;
638
+ ProbeLog.VERSION = VERSION;
569
639
  }
570
640
  });
571
641
 
@@ -580,10 +650,10 @@ var __exports__ = (() => {
580
650
  var dist_default;
581
651
  var init_dist2 = __esm({
582
652
  "../../node_modules/@probe.gl/log/dist/index.js"() {
583
- init_log();
584
- init_log();
653
+ init_probe_log();
654
+ init_probe_log();
585
655
  init_init();
586
- dist_default = new Log({ id: "@probe.gl/log" });
656
+ dist_default = new ProbeLog({ id: "@probe.gl/log" });
587
657
  }
588
658
  });
589
659
 
@@ -828,10 +898,10 @@ var __exports__ = (() => {
828
898
 
829
899
  // ../../node_modules/@luma.gl/core/dist/utils/log.js
830
900
  var log2;
831
- var init_log2 = __esm({
901
+ var init_log = __esm({
832
902
  "../../node_modules/@luma.gl/core/dist/utils/log.js"() {
833
903
  init_dist2();
834
- log2 = new Log({ id: "luma.gl" });
904
+ log2 = new ProbeLog({ id: "luma.gl" });
835
905
  }
836
906
  });
837
907
 
@@ -1593,7 +1663,7 @@ var __exports__ = (() => {
1593
1663
  var init_device = __esm({
1594
1664
  "../../node_modules/@luma.gl/core/dist/adapter/device.js"() {
1595
1665
  init_stats_manager();
1596
- init_log2();
1666
+ init_log();
1597
1667
  init_uid();
1598
1668
  init_buffer();
1599
1669
  init_decode_vertex_format();
@@ -1894,7 +1964,7 @@ or create a device with the 'debug: true' prop.`;
1894
1964
  "../../node_modules/@luma.gl/core/dist/adapter/luma.js"() {
1895
1965
  init_device();
1896
1966
  init_stats_manager();
1897
- init_log2();
1967
+ init_log();
1898
1968
  STARTUP_MESSAGE = "set luma.log.level=1 (or higher) to trace rendering";
1899
1969
  ERROR_MESSAGE = "No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.";
1900
1970
  _Luma = class {
@@ -2045,6 +2115,87 @@ or create a device with the 'debug: true' prop.`;
2045
2115
  }
2046
2116
  });
2047
2117
 
2118
+ // ../../node_modules/@probe.gl/env/dist/lib/globals.js
2119
+ var document_4, process_2, console_2, navigator_2;
2120
+ var init_globals2 = __esm({
2121
+ "../../node_modules/@probe.gl/env/dist/lib/globals.js"() {
2122
+ document_4 = globalThis.document || {};
2123
+ process_2 = globalThis.process || {};
2124
+ console_2 = globalThis.console;
2125
+ navigator_2 = globalThis.navigator || {};
2126
+ }
2127
+ });
2128
+
2129
+ // ../../node_modules/@probe.gl/env/dist/lib/is-electron.js
2130
+ function isElectron2(mockUserAgent) {
2131
+ if (typeof window !== "undefined" && window.process?.type === "renderer") {
2132
+ return true;
2133
+ }
2134
+ if (typeof process !== "undefined" && Boolean(process.versions?.["electron"])) {
2135
+ return true;
2136
+ }
2137
+ const realUserAgent = typeof navigator !== "undefined" && navigator.userAgent;
2138
+ const userAgent2 = mockUserAgent || realUserAgent;
2139
+ return Boolean(userAgent2 && userAgent2.indexOf("Electron") >= 0);
2140
+ }
2141
+ var init_is_electron2 = __esm({
2142
+ "../../node_modules/@probe.gl/env/dist/lib/is-electron.js"() {
2143
+ }
2144
+ });
2145
+
2146
+ // ../../node_modules/@probe.gl/env/dist/lib/is-browser.js
2147
+ function isBrowser4() {
2148
+ const isNode = (
2149
+ // @ts-expect-error
2150
+ typeof process === "object" && String(process) === "[object process]" && !process?.browser
2151
+ );
2152
+ return !isNode || isElectron2();
2153
+ }
2154
+ var init_is_browser2 = __esm({
2155
+ "../../node_modules/@probe.gl/env/dist/lib/is-browser.js"() {
2156
+ init_is_electron2();
2157
+ }
2158
+ });
2159
+
2160
+ // ../../node_modules/@probe.gl/env/dist/lib/get-browser.js
2161
+ function getBrowser(mockUserAgent) {
2162
+ if (!mockUserAgent && !isBrowser4()) {
2163
+ return "Node";
2164
+ }
2165
+ if (isElectron2(mockUserAgent)) {
2166
+ return "Electron";
2167
+ }
2168
+ const userAgent2 = mockUserAgent || navigator_2.userAgent || "";
2169
+ if (userAgent2.indexOf("Edge") > -1) {
2170
+ return "Edge";
2171
+ }
2172
+ if (globalThis.chrome) {
2173
+ return "Chrome";
2174
+ }
2175
+ if (globalThis.safari) {
2176
+ return "Safari";
2177
+ }
2178
+ if (globalThis.mozInnerScreenX) {
2179
+ return "Firefox";
2180
+ }
2181
+ return "Unknown";
2182
+ }
2183
+ var init_get_browser = __esm({
2184
+ "../../node_modules/@probe.gl/env/dist/lib/get-browser.js"() {
2185
+ init_is_browser2();
2186
+ init_is_electron2();
2187
+ init_globals2();
2188
+ }
2189
+ });
2190
+
2191
+ // ../../node_modules/@probe.gl/env/dist/index.js
2192
+ var init_dist4 = __esm({
2193
+ "../../node_modules/@probe.gl/env/dist/index.js"() {
2194
+ init_is_browser2();
2195
+ init_get_browser();
2196
+ }
2197
+ });
2198
+
2048
2199
  // ../../node_modules/@luma.gl/core/dist/adapter/adapter.js
2049
2200
  function getPageLoadPromise() {
2050
2201
  if (!pageLoadPromise) {
@@ -2059,7 +2210,7 @@ or create a device with the 'debug: true' prop.`;
2059
2210
  var Adapter, isPage, isPageLoaded, pageLoadPromise;
2060
2211
  var init_adapter = __esm({
2061
2212
  "../../node_modules/@luma.gl/core/dist/adapter/adapter.js"() {
2062
- init_dist();
2213
+ init_dist4();
2063
2214
  Adapter = class {
2064
2215
  /**
2065
2216
  * Page load promise
@@ -2072,7 +2223,7 @@ or create a device with the 'debug: true' prop.`;
2072
2223
  return getPageLoadPromise();
2073
2224
  }
2074
2225
  };
2075
- isPage = isBrowser2() && typeof document !== "undefined";
2226
+ isPage = isBrowser4() && typeof document !== "undefined";
2076
2227
  isPageLoaded = () => isPage && document.readyState === "complete";
2077
2228
  pageLoadPromise = null;
2078
2229
  }
@@ -2162,7 +2313,7 @@ or create a device with the 'debug: true' prop.`;
2162
2313
  var _CanvasContext, CanvasContext;
2163
2314
  var init_canvas_context = __esm({
2164
2315
  "../../node_modules/@luma.gl/core/dist/adapter/canvas-context.js"() {
2165
- init_dist();
2316
+ init_dist4();
2166
2317
  init_uid();
2167
2318
  init_promise_utils();
2168
2319
  _CanvasContext = class {
@@ -2211,7 +2362,7 @@ or create a device with the 'debug: true' prop.`;
2211
2362
  this.props = { ..._CanvasContext.defaultProps, ...props };
2212
2363
  props = this.props;
2213
2364
  this.initialized = this._initializedResolvers.promise;
2214
- if (!isBrowser2()) {
2365
+ if (!isBrowser4()) {
2215
2366
  this.canvas = { width: props.width || 1, height: props.height || 1 };
2216
2367
  } else if (!props.canvas) {
2217
2368
  this.canvas = createCanvasElement(props);
@@ -2497,7 +2648,7 @@ or create a device with the 'debug: true' prop.`;
2497
2648
  "../../node_modules/@luma.gl/core/dist/adapter/resources/texture.js"() {
2498
2649
  init_resource();
2499
2650
  init_sampler();
2500
- init_log2();
2651
+ init_log();
2501
2652
  BASE_DIMENSIONS = {
2502
2653
  "1d": "1d",
2503
2654
  "2d": "2d",
@@ -2916,7 +3067,7 @@ ${htmlLog}
2916
3067
  "../../node_modules/@luma.gl/core/dist/adapter/resources/framebuffer.js"() {
2917
3068
  init_resource();
2918
3069
  init_texture();
2919
- init_log2();
3070
+ init_log();
2920
3071
  _Framebuffer = class extends Resource {
2921
3072
  get [Symbol.toStringTag]() {
2922
3073
  return "Framebuffer";
@@ -3483,7 +3634,7 @@ ${htmlLog}
3483
3634
  }
3484
3635
  var init_get_attribute_from_layouts = __esm({
3485
3636
  "../../node_modules/@luma.gl/core/dist/adapter-utils/get-attribute-from-layouts.js"() {
3486
- init_log2();
3637
+ init_log();
3487
3638
  init_decode_shader_types();
3488
3639
  init_decode_vertex_format();
3489
3640
  }
@@ -3612,7 +3763,7 @@ ${htmlLog}
3612
3763
  init_decode_shader_types();
3613
3764
  init_array_utils_flat();
3614
3765
  init_is_array();
3615
- init_log2();
3766
+ init_log();
3616
3767
  minBufferSize = 1024;
3617
3768
  UniformBufferLayout = class {
3618
3769
  layout = {};
@@ -3773,7 +3924,7 @@ ${htmlLog}
3773
3924
  var init_uniform_store = __esm({
3774
3925
  "../../node_modules/@luma.gl/core/dist/portable/uniform-store.js"() {
3775
3926
  init_buffer();
3776
- init_log2();
3927
+ init_log();
3777
3928
  init_uniform_block();
3778
3929
  init_uniform_buffer_layout();
3779
3930
  UniformStore = class {
@@ -3883,7 +4034,7 @@ ${htmlLog}
3883
4034
  });
3884
4035
 
3885
4036
  // ../../node_modules/@luma.gl/core/dist/index.js
3886
- var init_dist4 = __esm({
4037
+ var init_dist5 = __esm({
3887
4038
  "../../node_modules/@luma.gl/core/dist/index.js"() {
3888
4039
  init_luma();
3889
4040
  init_adapter();
@@ -3908,7 +4059,7 @@ ${htmlLog}
3908
4059
  init_decode_shader_types();
3909
4060
  init_decode_vertex_format();
3910
4061
  init_texture_format_decoder();
3911
- init_log2();
4062
+ init_log();
3912
4063
  init_array_utils_flat();
3913
4064
  init_get_attribute_from_layouts();
3914
4065
  }
@@ -4570,7 +4721,7 @@ ${htmlLog}
4570
4721
  });
4571
4722
 
4572
4723
  // ../../node_modules/@luma.gl/constants/dist/index.js
4573
- var init_dist5 = __esm({
4724
+ var init_dist6 = __esm({
4574
4725
  "../../node_modules/@luma.gl/constants/dist/index.js"() {
4575
4726
  init_webgl_constants();
4576
4727
  }
@@ -4760,7 +4911,7 @@ ${htmlLog}
4760
4911
  var LOG_LEVEL, spector, initialized, DEFAULT_SPECTOR_PROPS;
4761
4912
  var init_spector = __esm({
4762
4913
  "../../node_modules/@luma.gl/webgl/dist/context/debug/spector.js"() {
4763
- init_dist4();
4914
+ init_dist5();
4764
4915
  init_load_script();
4765
4916
  LOG_LEVEL = 1;
4766
4917
  spector = null;
@@ -4782,7 +4933,7 @@ ${htmlLog}
4782
4933
  return gl.luma;
4783
4934
  }
4784
4935
  async function loadWebGLDeveloperTools() {
4785
- if (isBrowser2() && !globalThis.WebGLDebugUtils) {
4936
+ if (isBrowser4() && !globalThis.WebGLDebugUtils) {
4786
4937
  globalThis.global = globalThis.global || globalThis;
4787
4938
  globalThis.global.module = {};
4788
4939
  await loadScript(WEBGL_DEBUG_CDN_URL);
@@ -4853,9 +5004,9 @@ ${htmlLog}
4853
5004
  var WEBGL_DEBUG_CDN_URL;
4854
5005
  var init_webgl_developer_tools = __esm({
4855
5006
  "../../node_modules/@luma.gl/webgl/dist/context/debug/webgl-developer-tools.js"() {
4856
- init_dist4();
4857
5007
  init_dist5();
4858
- init_dist();
5008
+ init_dist6();
5009
+ init_dist4();
4859
5010
  init_load_script();
4860
5011
  WEBGL_DEBUG_CDN_URL = "https://unpkg.com/webgl-debug@2.0.1/index.js";
4861
5012
  }
@@ -4865,8 +5016,8 @@ ${htmlLog}
4865
5016
  function isArray2(array) {
4866
5017
  return Array.isArray(array) || ArrayBuffer.isView(array) && !(array instanceof DataView);
4867
5018
  }
4868
- function getValue(glEnum, values, cache3) {
4869
- return values[glEnum] !== void 0 ? values[glEnum] : cache3[glEnum];
5019
+ function getValue(glEnum, values, cache2) {
5020
+ return values[glEnum] !== void 0 ? values[glEnum] : cache2[glEnum];
4870
5021
  }
4871
5022
  var GL_PARAMETER_DEFAULTS, enable, hint, pixelStorei, bindFramebuffer, bindBuffer, GL_PARAMETER_SETTERS, GL_COMPOSITE_PARAMETER_SETTERS, GL_HOOKED_SETTERS, isEnabled, GL_PARAMETER_GETTERS, NON_CACHE_PARAMETERS;
4872
5023
  var init_webgl_parameter_tables = __esm({
@@ -5122,14 +5273,14 @@ ${htmlLog}
5122
5273
  viewport: (gl, value) => gl.viewport(...value)
5123
5274
  };
5124
5275
  GL_COMPOSITE_PARAMETER_SETTERS = {
5125
- blendEquation: (gl, values, cache3) => gl.blendEquationSeparate(getValue(32777, values, cache3), getValue(34877, values, cache3)),
5126
- blendFunc: (gl, values, cache3) => gl.blendFuncSeparate(getValue(32969, values, cache3), getValue(32968, values, cache3), getValue(32971, values, cache3), getValue(32970, values, cache3)),
5127
- polygonOffset: (gl, values, cache3) => gl.polygonOffset(getValue(32824, values, cache3), getValue(10752, values, cache3)),
5128
- sampleCoverage: (gl, values, cache3) => gl.sampleCoverage(getValue(32938, values, cache3), getValue(32939, values, cache3)),
5129
- stencilFuncFront: (gl, values, cache3) => gl.stencilFuncSeparate(1028, getValue(2962, values, cache3), getValue(2967, values, cache3), getValue(2963, values, cache3)),
5130
- stencilFuncBack: (gl, values, cache3) => gl.stencilFuncSeparate(1029, getValue(34816, values, cache3), getValue(36003, values, cache3), getValue(36004, values, cache3)),
5131
- stencilOpFront: (gl, values, cache3) => gl.stencilOpSeparate(1028, getValue(2964, values, cache3), getValue(2965, values, cache3), getValue(2966, values, cache3)),
5132
- stencilOpBack: (gl, values, cache3) => gl.stencilOpSeparate(1029, getValue(34817, values, cache3), getValue(34818, values, cache3), getValue(34819, values, cache3))
5276
+ blendEquation: (gl, values, cache2) => gl.blendEquationSeparate(getValue(32777, values, cache2), getValue(34877, values, cache2)),
5277
+ blendFunc: (gl, values, cache2) => gl.blendFuncSeparate(getValue(32969, values, cache2), getValue(32968, values, cache2), getValue(32971, values, cache2), getValue(32970, values, cache2)),
5278
+ polygonOffset: (gl, values, cache2) => gl.polygonOffset(getValue(32824, values, cache2), getValue(10752, values, cache2)),
5279
+ sampleCoverage: (gl, values, cache2) => gl.sampleCoverage(getValue(32938, values, cache2), getValue(32939, values, cache2)),
5280
+ stencilFuncFront: (gl, values, cache2) => gl.stencilFuncSeparate(1028, getValue(2962, values, cache2), getValue(2967, values, cache2), getValue(2963, values, cache2)),
5281
+ stencilFuncBack: (gl, values, cache2) => gl.stencilFuncSeparate(1029, getValue(34816, values, cache2), getValue(36003, values, cache2), getValue(36004, values, cache2)),
5282
+ stencilOpFront: (gl, values, cache2) => gl.stencilOpSeparate(1028, getValue(2964, values, cache2), getValue(2965, values, cache2), getValue(2966, values, cache2)),
5283
+ stencilOpBack: (gl, values, cache2) => gl.stencilOpSeparate(1029, getValue(34817, values, cache2), getValue(34818, values, cache2), getValue(34819, values, cache2))
5133
5284
  };
5134
5285
  GL_HOOKED_SETTERS = {
5135
5286
  // GENERIC SETTERS
@@ -5352,11 +5503,11 @@ ${htmlLog}
5352
5503
  }
5353
5504
  }
5354
5505
  }
5355
- const cache3 = gl.state && gl.state.cache;
5356
- if (cache3) {
5506
+ const cache2 = gl.state && gl.state.cache;
5507
+ if (cache2) {
5357
5508
  for (const key in compositeSetters) {
5358
5509
  const compositeSetter = GL_COMPOSITE_PARAMETER_SETTERS[key];
5359
- compositeSetter(gl, parameters2, cache3);
5510
+ compositeSetter(gl, parameters2, cache2);
5360
5511
  }
5361
5512
  }
5362
5513
  }
@@ -5801,7 +5952,7 @@ ${htmlLog}
5801
5952
  var X_S3TC, X_S3TC_SRGB, X_RGTC, X_BPTC, X_ETC2, X_ASTC, X_ETC1, X_PVRTC, X_ATC, EXT_texture_norm16, EXT_render_snorm, EXT_color_buffer_float, TEXTURE_FEATURES, WEBGL_TEXTURE_FORMATS;
5802
5953
  var init_webgl_texture_table = __esm({
5803
5954
  "../../node_modules/@luma.gl/webgl/dist/adapter/converters/webgl-texture-table.js"() {
5804
- init_dist4();
5955
+ init_dist5();
5805
5956
  init_webgl_extensions();
5806
5957
  init_webgl_vertex_formats();
5807
5958
  X_S3TC = "WEBGL_compressed_texture_s3tc";
@@ -5992,7 +6143,7 @@ ${htmlLog}
5992
6143
  var WEBGL_FEATURES, WebGLDeviceFeatures;
5993
6144
  var init_webgl_device_features = __esm({
5994
6145
  "../../node_modules/@luma.gl/webgl/dist/adapter/device-helpers/webgl-device-features.js"() {
5995
- init_dist4();
6146
+ init_dist5();
5996
6147
  init_webgl_extensions();
5997
6148
  init_webgl_texture_table();
5998
6149
  WEBGL_FEATURES = {
@@ -6072,7 +6223,7 @@ ${htmlLog}
6072
6223
  var WebGLDeviceLimits;
6073
6224
  var init_webgl_device_limits = __esm({
6074
6225
  "../../node_modules/@luma.gl/webgl/dist/adapter/device-helpers/webgl-device-limits.js"() {
6075
- init_dist4();
6226
+ init_dist5();
6076
6227
  WebGLDeviceLimits = class extends DeviceLimits {
6077
6228
  get maxTextureDimension1D() {
6078
6229
  return 0;
@@ -6208,7 +6359,7 @@ ${htmlLog}
6208
6359
  var WEBGLFramebuffer;
6209
6360
  var init_webgl_framebuffer = __esm({
6210
6361
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-framebuffer.js"() {
6211
- init_dist4();
6362
+ init_dist5();
6212
6363
  init_webgl_texture_table();
6213
6364
  WEBGLFramebuffer = class extends Framebuffer {
6214
6365
  device;
@@ -6305,7 +6456,7 @@ ${htmlLog}
6305
6456
  var WebGLCanvasContext;
6306
6457
  var init_webgl_canvas_context = __esm({
6307
6458
  "../../node_modules/@luma.gl/webgl/dist/adapter/webgl-canvas-context.js"() {
6308
- init_dist4();
6459
+ init_dist5();
6309
6460
  init_webgl_framebuffer();
6310
6461
  WebGLCanvasContext = class extends CanvasContext {
6311
6462
  device;
@@ -6372,7 +6523,7 @@ ${htmlLog}
6372
6523
  var WEBGLBuffer;
6373
6524
  var init_webgl_buffer = __esm({
6374
6525
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-buffer.js"() {
6375
- init_dist4();
6526
+ init_dist5();
6376
6527
  WEBGLBuffer = class extends Buffer2 {
6377
6528
  device;
6378
6529
  gl;
@@ -6534,7 +6685,7 @@ ${htmlLog}
6534
6685
  var WEBGLShader;
6535
6686
  var init_webgl_shader = __esm({
6536
6687
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-shader.js"() {
6537
- init_dist4();
6688
+ init_dist5();
6538
6689
  init_parse_shader_compiler_log();
6539
6690
  WEBGLShader = class extends Shader {
6540
6691
  device;
@@ -6867,7 +7018,7 @@ ${source4}`;
6867
7018
  }
6868
7019
  var init_device_parameters = __esm({
6869
7020
  "../../node_modules/@luma.gl/webgl/dist/adapter/converters/device-parameters.js"() {
6870
- init_dist4();
7021
+ init_dist5();
6871
7022
  init_unified_parameter_api();
6872
7023
  }
6873
7024
  });
@@ -6959,7 +7110,7 @@ ${source4}`;
6959
7110
  var WEBGLSampler;
6960
7111
  var init_webgl_sampler = __esm({
6961
7112
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-sampler.js"() {
6962
- init_dist4();
7113
+ init_dist5();
6963
7114
  init_sampler_parameters();
6964
7115
  WEBGLSampler = class extends Sampler {
6965
7116
  device;
@@ -7039,7 +7190,7 @@ ${source4}`;
7039
7190
  var WEBGLTextureView;
7040
7191
  var init_webgl_texture_view = __esm({
7041
7192
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-texture-view.js"() {
7042
- init_dist4();
7193
+ init_dist5();
7043
7194
  WEBGLTextureView = class extends TextureView {
7044
7195
  device;
7045
7196
  gl;
@@ -7081,7 +7232,7 @@ ${source4}`;
7081
7232
  var WEBGLTexture;
7082
7233
  var init_webgl_texture = __esm({
7083
7234
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-texture.js"() {
7084
- init_dist4();
7235
+ init_dist5();
7085
7236
  init_webgl_texture_table();
7086
7237
  init_sampler_parameters();
7087
7238
  init_with_parameters();
@@ -7589,7 +7740,7 @@ ${source4}`;
7589
7740
  }
7590
7741
  var init_get_shader_layout_from_glsl = __esm({
7591
7742
  "../../node_modules/@luma.gl/webgl/dist/adapter/helpers/get-shader-layout-from-glsl.js"() {
7592
- init_dist4();
7743
+ init_dist5();
7593
7744
  init_webgl_shadertypes();
7594
7745
  }
7595
7746
  });
@@ -7741,7 +7892,7 @@ ${source4}`;
7741
7892
  var LOG_PROGRAM_PERF_PRIORITY, WEBGLRenderPipeline;
7742
7893
  var init_webgl_render_pipeline = __esm({
7743
7894
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-render-pipeline.js"() {
7744
- init_dist4();
7895
+ init_dist5();
7745
7896
  init_get_shader_layout_from_glsl();
7746
7897
  init_device_parameters();
7747
7898
  init_set_uniform();
@@ -8241,7 +8392,7 @@ ${source4}`;
8241
8392
  var WEBGLCommandBuffer;
8242
8393
  var init_webgl_command_buffer = __esm({
8243
8394
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-command-buffer.js"() {
8244
- init_dist4();
8395
+ init_dist5();
8245
8396
  init_webgl_texture();
8246
8397
  init_webgl_texture_table();
8247
8398
  WEBGLCommandBuffer = class extends CommandBuffer {
@@ -8280,7 +8431,7 @@ ${source4}`;
8280
8431
  var COLOR_CHANNELS, WEBGLRenderPass;
8281
8432
  var init_webgl_render_pass = __esm({
8282
8433
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-render-pass.js"() {
8283
- init_dist4();
8434
+ init_dist5();
8284
8435
  init_with_parameters();
8285
8436
  init_unified_parameter_api();
8286
8437
  COLOR_CHANNELS = [1, 2, 4, 8];
@@ -8437,7 +8588,7 @@ ${source4}`;
8437
8588
  var WEBGLCommandEncoder;
8438
8589
  var init_webgl_command_encoder = __esm({
8439
8590
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-command-encoder.js"() {
8440
- init_dist4();
8591
+ init_dist5();
8441
8592
  init_webgl_command_buffer();
8442
8593
  init_webgl_render_pass();
8443
8594
  WEBGLCommandEncoder = class extends CommandEncoder {
@@ -8533,8 +8684,8 @@ ${source4}`;
8533
8684
  var WEBGLVertexArray;
8534
8685
  var init_webgl_vertex_array = __esm({
8535
8686
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-vertex-array.js"() {
8687
+ init_dist5();
8536
8688
  init_dist4();
8537
- init_dist();
8538
8689
  init_webgl_vertex_formats();
8539
8690
  init_fill_array();
8540
8691
  WEBGLVertexArray = class extends VertexArray {
@@ -8724,8 +8875,8 @@ ${source4}`;
8724
8875
  var WEBGLTransformFeedback;
8725
8876
  var init_webgl_transform_feedback = __esm({
8726
8877
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-transform-feedback.js"() {
8727
- init_dist4();
8728
- init_dist6();
8878
+ init_dist5();
8879
+ init_dist7();
8729
8880
  init_webgl_topology_utils();
8730
8881
  WEBGLTransformFeedback = class extends TransformFeedback {
8731
8882
  device;
@@ -8876,7 +9027,7 @@ ${source4}`;
8876
9027
  var WEBGLQuerySet;
8877
9028
  var init_webgl_query_set = __esm({
8878
9029
  "../../node_modules/@luma.gl/webgl/dist/adapter/resources/webgl-query-set.js"() {
8879
- init_dist4();
9030
+ init_dist5();
8880
9031
  WEBGLQuerySet = class extends QuerySet {
8881
9032
  device;
8882
9033
  handle;
@@ -9183,7 +9334,7 @@ ${source4}`;
9183
9334
  }
9184
9335
  var init_webgl_texture_utils = __esm({
9185
9336
  "../../node_modules/@luma.gl/webgl/dist/adapter/helpers/webgl-texture-utils.js"() {
9186
- init_dist4();
9337
+ init_dist5();
9187
9338
  init_webgl_shadertypes();
9188
9339
  init_format_utils();
9189
9340
  init_shader_formats();
@@ -9232,7 +9383,7 @@ ${source4}`;
9232
9383
  var WebGLDevice;
9233
9384
  var init_webgl_device = __esm({
9234
9385
  "../../node_modules/@luma.gl/webgl/dist/adapter/webgl-device.js"() {
9235
- init_dist4();
9386
+ init_dist5();
9236
9387
  init_webgl_state_tracker();
9237
9388
  init_create_browser_context();
9238
9389
  init_webgl_device_info();
@@ -9582,7 +9733,7 @@ ${source4}`;
9582
9733
  var LOG_LEVEL2, WebGLAdapter, webgl2Adapter;
9583
9734
  var init_webgl_adapter = __esm({
9584
9735
  "../../node_modules/@luma.gl/webgl/dist/adapter/webgl-adapter.js"() {
9585
- init_dist4();
9736
+ init_dist5();
9586
9737
  init_polyfill_webgl1_extensions();
9587
9738
  init_spector();
9588
9739
  init_webgl_developer_tools();
@@ -9668,7 +9819,7 @@ ${source4}`;
9668
9819
  });
9669
9820
 
9670
9821
  // ../../node_modules/@luma.gl/webgl/dist/index.js
9671
- var init_dist6 = __esm({
9822
+ var init_dist7 = __esm({
9672
9823
  "../../node_modules/@luma.gl/webgl/dist/index.js"() {
9673
9824
  init_webgl_adapter();
9674
9825
  init_webgl_device();
@@ -11897,27 +12048,27 @@ ${source4}`;
11897
12048
  var INT_CACHE2 = {};
11898
12049
  var UINT_CACHE2 = {};
11899
12050
  function fromInt2(value, unsigned) {
11900
- var obj, cachedObj, cache3;
12051
+ var obj, cachedObj, cache2;
11901
12052
  if (unsigned) {
11902
12053
  value >>>= 0;
11903
- if (cache3 = 0 <= value && value < 256) {
12054
+ if (cache2 = 0 <= value && value < 256) {
11904
12055
  cachedObj = UINT_CACHE2[value];
11905
12056
  if (cachedObj)
11906
12057
  return cachedObj;
11907
12058
  }
11908
12059
  obj = fromBits2(value, (value | 0) < 0 ? -1 : 0, true);
11909
- if (cache3)
12060
+ if (cache2)
11910
12061
  UINT_CACHE2[value] = obj;
11911
12062
  return obj;
11912
12063
  } else {
11913
12064
  value |= 0;
11914
- if (cache3 = -128 <= value && value < 128) {
12065
+ if (cache2 = -128 <= value && value < 128) {
11915
12066
  cachedObj = INT_CACHE2[value];
11916
12067
  if (cachedObj)
11917
12068
  return cachedObj;
11918
12069
  }
11919
12070
  obj = fromBits2(value, value < 0 ? -1 : 0, false);
11920
- if (cache3)
12071
+ if (cache2)
11921
12072
  INT_CACHE2[value] = obj;
11922
12073
  return obj;
11923
12074
  }
@@ -13337,7 +13488,7 @@ ${source4}`;
13337
13488
  var VERSION2 = true ? "4.3.3" : "latest";
13338
13489
  var version = VERSION2[0] >= "0" && VERSION2[0] <= "9" ? `v${VERSION2}` : "";
13339
13490
  function createLog() {
13340
- const log4 = new Log({ id: "loaders.gl" });
13491
+ const log4 = new ProbeLog({ id: "loaders.gl" });
13341
13492
  globalThis.loaders = globalThis.loaders || {};
13342
13493
  globalThis.loaders.log = log4;
13343
13494
  globalThis.loaders.version = version;
@@ -13416,7 +13567,7 @@ ${source4}`;
13416
13567
  typeof process !== "object" || String(process) !== "[object process]" || process.browser
13417
13568
  );
13418
13569
  var isWorker = typeof importScripts === "function";
13419
- var isMobile2 = typeof window !== "undefined" && typeof window.orientation !== "undefined";
13570
+ var isMobile = typeof window !== "undefined" && typeof window.orientation !== "undefined";
13420
13571
  var matches2 = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
13421
13572
  var nodeVersion2 = matches2 && parseFloat(matches2[1]) || 0;
13422
13573
 
@@ -13798,7 +13949,7 @@ ${source4}`;
13798
13949
  return null;
13799
13950
  }
13800
13951
  _getMaxConcurrency() {
13801
- return isMobile2 ? this.maxMobileConcurrency : this.maxConcurrency;
13952
+ return isMobile ? this.maxMobileConcurrency : this.maxConcurrency;
13802
13953
  }
13803
13954
  };
13804
13955
 
@@ -14777,7 +14928,7 @@ ${source4}`;
14777
14928
 
14778
14929
  // ../core/node_modules/@loaders.gl/core/dist/lib/loader-utils/loggers.js
14779
14930
  init_dist2();
14780
- var probeLog = new Log({ id: "loaders.gl" });
14931
+ var probeLog = new ProbeLog({ id: "loaders.gl" });
14781
14932
  var NullLog = class {
14782
14933
  log() {
14783
14934
  return () => {
@@ -15991,7 +16142,7 @@ ${source4}`;
15991
16142
 
15992
16143
  // ../core/src/utils/log.ts
15993
16144
  init_dist2();
15994
- var defaultLogger = new Log({ id: "deck" });
16145
+ var defaultLogger = new ProbeLog({ id: "deck" });
15995
16146
  var log_default = defaultLogger;
15996
16147
 
15997
16148
  // ../core/src/debug/loggers.ts
@@ -17051,7 +17202,7 @@ void main() {
17051
17202
  }
17052
17203
 
17053
17204
  // ../../node_modules/@luma.gl/shadertools/dist/lib/wgsl/get-shader-layout-wgsl.js
17054
- init_dist4();
17205
+ init_dist5();
17055
17206
 
17056
17207
  // ../../node_modules/wgsl_reflect/wgsl_reflect.module.js
17057
17208
  var e = class {
@@ -29325,7 +29476,7 @@ vec4 picking_filterColor(vec4 color) {
29325
29476
  }
29326
29477
 
29327
29478
  // ../../node_modules/@luma.gl/shadertools/dist/modules/lighting/lights/lighting.js
29328
- init_dist4();
29479
+ init_dist5();
29329
29480
 
29330
29481
  // ../../node_modules/@luma.gl/shadertools/dist/modules/lighting/lights/lighting-glsl.js
29331
29482
  var lightingUniformsGLSL = (
@@ -35898,7 +36049,7 @@ ${fragment}
35898
36049
  };
35899
36050
 
35900
36051
  // ../../node_modules/@luma.gl/engine/dist/animation-loop/animation-loop.js
35901
- init_dist4();
36052
+ init_dist5();
35902
36053
 
35903
36054
  // ../../node_modules/@luma.gl/engine/dist/animation-loop/request-animation-frame.js
35904
36055
  function requestAnimationFramePolyfill(callback) {
@@ -36272,10 +36423,10 @@ ${fragment}
36272
36423
  });
36273
36424
 
36274
36425
  // ../../node_modules/@luma.gl/engine/dist/model/model.js
36275
- init_dist4();
36426
+ init_dist5();
36276
36427
 
36277
36428
  // ../../node_modules/@luma.gl/engine/dist/geometry/gpu-geometry.js
36278
- init_dist4();
36429
+ init_dist5();
36279
36430
 
36280
36431
  // ../../node_modules/@luma.gl/engine/dist/utils/uid.js
36281
36432
  var uidCounters2 = {};
@@ -36382,7 +36533,7 @@ ${fragment}
36382
36533
  }
36383
36534
 
36384
36535
  // ../../node_modules/@luma.gl/engine/dist/factories/pipeline-factory.js
36385
- init_dist4();
36536
+ init_dist5();
36386
36537
  var _PipelineFactory = class {
36387
36538
  /** Get the singleton default pipeline factory for the specified device */
36388
36539
  static getDefaultPipelineFactory(device) {
@@ -36415,23 +36566,23 @@ ${fragment}
36415
36566
  return this.device.createRenderPipeline(props);
36416
36567
  }
36417
36568
  const allProps = { ...RenderPipeline.defaultProps, ...props };
36418
- const cache3 = this._renderPipelineCache;
36569
+ const cache2 = this._renderPipelineCache;
36419
36570
  const hash = this._hashRenderPipeline(allProps);
36420
- let pipeline = cache3[hash]?.pipeline;
36571
+ let pipeline = cache2[hash]?.pipeline;
36421
36572
  if (!pipeline) {
36422
36573
  pipeline = this.device.createRenderPipeline({
36423
36574
  ...allProps,
36424
36575
  id: allProps.id ? `${allProps.id}-cached` : uid2("unnamed-cached")
36425
36576
  });
36426
36577
  pipeline.hash = hash;
36427
- cache3[hash] = { pipeline, useCount: 1 };
36578
+ cache2[hash] = { pipeline, useCount: 1 };
36428
36579
  if (this.debug) {
36429
- log2.log(3, `${this}: ${pipeline} created, count=${cache3[hash].useCount}`)();
36580
+ log2.log(3, `${this}: ${pipeline} created, count=${cache2[hash].useCount}`)();
36430
36581
  }
36431
36582
  } else {
36432
- cache3[hash].useCount++;
36583
+ cache2[hash].useCount++;
36433
36584
  if (this.debug) {
36434
- log2.log(3, `${this}: ${cache3[hash].pipeline} reused, count=${cache3[hash].useCount}, (id=${props.id})`)();
36585
+ log2.log(3, `${this}: ${cache2[hash].pipeline} reused, count=${cache2[hash].useCount}, (id=${props.id})`)();
36435
36586
  }
36436
36587
  }
36437
36588
  return pipeline;
@@ -36442,23 +36593,23 @@ ${fragment}
36442
36593
  return this.device.createComputePipeline(props);
36443
36594
  }
36444
36595
  const allProps = { ...ComputePipeline.defaultProps, ...props };
36445
- const cache3 = this._computePipelineCache;
36596
+ const cache2 = this._computePipelineCache;
36446
36597
  const hash = this._hashComputePipeline(allProps);
36447
- let pipeline = cache3[hash]?.pipeline;
36598
+ let pipeline = cache2[hash]?.pipeline;
36448
36599
  if (!pipeline) {
36449
36600
  pipeline = this.device.createComputePipeline({
36450
36601
  ...allProps,
36451
36602
  id: allProps.id ? `${allProps.id}-cached` : void 0
36452
36603
  });
36453
36604
  pipeline.hash = hash;
36454
- cache3[hash] = { pipeline, useCount: 1 };
36605
+ cache2[hash] = { pipeline, useCount: 1 };
36455
36606
  if (this.debug) {
36456
- log2.log(3, `${this}: ${pipeline} created, count=${cache3[hash].useCount}`)();
36607
+ log2.log(3, `${this}: ${pipeline} created, count=${cache2[hash].useCount}`)();
36457
36608
  }
36458
36609
  } else {
36459
- cache3[hash].useCount++;
36610
+ cache2[hash].useCount++;
36460
36611
  if (this.debug) {
36461
- log2.log(3, `${this}: ${cache3[hash].pipeline} reused, count=${cache3[hash].useCount}, (id=${props.id})`)();
36612
+ log2.log(3, `${this}: ${cache2[hash].pipeline} reused, count=${cache2[hash].useCount}, (id=${props.id})`)();
36462
36613
  }
36463
36614
  }
36464
36615
  return pipeline;
@@ -36468,50 +36619,50 @@ ${fragment}
36468
36619
  pipeline.destroy();
36469
36620
  return;
36470
36621
  }
36471
- const cache3 = this._getCache(pipeline);
36622
+ const cache2 = this._getCache(pipeline);
36472
36623
  const hash = pipeline.hash;
36473
- cache3[hash].useCount--;
36474
- if (cache3[hash].useCount === 0) {
36624
+ cache2[hash].useCount--;
36625
+ if (cache2[hash].useCount === 0) {
36475
36626
  this._destroyPipeline(pipeline);
36476
36627
  if (this.debug) {
36477
36628
  log2.log(3, `${this}: ${pipeline} released and destroyed`)();
36478
36629
  }
36479
- } else if (cache3[hash].useCount < 0) {
36630
+ } else if (cache2[hash].useCount < 0) {
36480
36631
  log2.error(`${this}: ${pipeline} released, useCount < 0, resetting`)();
36481
- cache3[hash].useCount = 0;
36632
+ cache2[hash].useCount = 0;
36482
36633
  } else if (this.debug) {
36483
- log2.log(3, `${this}: ${pipeline} released, count=${cache3[hash].useCount}`)();
36634
+ log2.log(3, `${this}: ${pipeline} released, count=${cache2[hash].useCount}`)();
36484
36635
  }
36485
36636
  }
36486
36637
  // PRIVATE
36487
36638
  /** Destroy a cached pipeline, removing it from the cache (depending on destroy policy) */
36488
36639
  _destroyPipeline(pipeline) {
36489
- const cache3 = this._getCache(pipeline);
36640
+ const cache2 = this._getCache(pipeline);
36490
36641
  switch (this.destroyPolicy) {
36491
36642
  case "never":
36492
36643
  return false;
36493
36644
  case "unused":
36494
- delete cache3[pipeline.hash];
36645
+ delete cache2[pipeline.hash];
36495
36646
  pipeline.destroy();
36496
36647
  return true;
36497
36648
  }
36498
36649
  }
36499
36650
  /** Get the appropriate cache for the type of pipeline */
36500
36651
  _getCache(pipeline) {
36501
- let cache3;
36652
+ let cache2;
36502
36653
  if (pipeline instanceof ComputePipeline) {
36503
- cache3 = this._computePipelineCache;
36654
+ cache2 = this._computePipelineCache;
36504
36655
  }
36505
36656
  if (pipeline instanceof RenderPipeline) {
36506
- cache3 = this._renderPipelineCache;
36657
+ cache2 = this._renderPipelineCache;
36507
36658
  }
36508
- if (!cache3) {
36659
+ if (!cache2) {
36509
36660
  throw new Error(`${this}`);
36510
36661
  }
36511
- if (!cache3[pipeline.hash]) {
36662
+ if (!cache2[pipeline.hash]) {
36512
36663
  throw new Error(`${this}: ${pipeline} matched incorrect entry`);
36513
36664
  }
36514
- return cache3;
36665
+ return cache2;
36515
36666
  }
36516
36667
  /** Calculate a hash based on all the inputs for a compute pipeline */
36517
36668
  _hashComputePipeline(props) {
@@ -36546,7 +36697,7 @@ ${fragment}
36546
36697
  __publicField(PipelineFactory, "defaultProps", { ...RenderPipeline.defaultProps });
36547
36698
 
36548
36699
  // ../../node_modules/@luma.gl/engine/dist/factories/shader-factory.js
36549
- init_dist4();
36700
+ init_dist5();
36550
36701
  var _ShaderFactory = class {
36551
36702
  /** Returns the default ShaderFactory for the given {@link Device}, creating one if necessary. */
36552
36703
  static getDefaultShaderFactory(device) {
@@ -36727,7 +36878,7 @@ ${fragment}
36727
36878
  }
36728
36879
 
36729
36880
  // ../../node_modules/@luma.gl/engine/dist/utils/buffer-layout-helper.js
36730
- init_dist4();
36881
+ init_dist5();
36731
36882
  var BufferLayoutHelper = class {
36732
36883
  bufferLayouts;
36733
36884
  constructor(bufferLayouts) {
@@ -36776,7 +36927,7 @@ ${fragment}
36776
36927
  }
36777
36928
 
36778
36929
  // ../../node_modules/@luma.gl/engine/dist/shader-inputs.js
36779
- init_dist4();
36930
+ init_dist5();
36780
36931
 
36781
36932
  // ../../node_modules/@math.gl/types/dist/is-array.js
36782
36933
  function isTypedArray2(value) {
@@ -36913,7 +37064,7 @@ ${fragment}
36913
37064
  };
36914
37065
 
36915
37066
  // ../../node_modules/@luma.gl/engine/dist/async-texture/async-texture.js
36916
- init_dist4();
37067
+ init_dist5();
36917
37068
 
36918
37069
  // ../../node_modules/@luma.gl/engine/dist/application-utils/load-file.js
36919
37070
  var pathPrefix2 = "";
@@ -37848,7 +37999,7 @@ ${fragment}
37848
37999
  }
37849
38000
 
37850
38001
  // ../../node_modules/@luma.gl/engine/dist/compute/buffer-transform.js
37851
- init_dist4();
38002
+ init_dist5();
37852
38003
  var _BufferTransform = class {
37853
38004
  device;
37854
38005
  model;
@@ -38327,7 +38478,7 @@ ${props.source}` };
38327
38478
  };
38328
38479
 
38329
38480
  // ../../node_modules/@luma.gl/engine/dist/scenegraph/group-node.js
38330
- init_dist4();
38481
+ init_dist5();
38331
38482
  var GroupNode = class extends ScenegraphNode {
38332
38483
  children;
38333
38484
  constructor(props = {}) {
@@ -39461,8 +39612,198 @@ void main() {
39461
39612
  return target2;
39462
39613
  }
39463
39614
 
39464
- // ../core/src/lib/layer-manager.ts
39465
- init_dist3();
39615
+ // ../core/node_modules/@probe.gl/stats/dist/utils/hi-res-timestamp.js
39616
+ function getHiResTimestamp3() {
39617
+ let timestamp;
39618
+ if (typeof window !== "undefined" && window.performance) {
39619
+ timestamp = window.performance.now();
39620
+ } else if (typeof process !== "undefined" && process.hrtime) {
39621
+ const timeParts = process.hrtime();
39622
+ timestamp = timeParts[0] * 1e3 + timeParts[1] / 1e6;
39623
+ } else {
39624
+ timestamp = Date.now();
39625
+ }
39626
+ return timestamp;
39627
+ }
39628
+
39629
+ // ../core/node_modules/@probe.gl/stats/dist/lib/stat.js
39630
+ var Stat2 = class {
39631
+ constructor(name13, type) {
39632
+ this.sampleSize = 1;
39633
+ this.time = 0;
39634
+ this.count = 0;
39635
+ this.samples = 0;
39636
+ this.lastTiming = 0;
39637
+ this.lastSampleTime = 0;
39638
+ this.lastSampleCount = 0;
39639
+ this._count = 0;
39640
+ this._time = 0;
39641
+ this._samples = 0;
39642
+ this._startTime = 0;
39643
+ this._timerPending = false;
39644
+ this.name = name13;
39645
+ this.type = type;
39646
+ this.reset();
39647
+ }
39648
+ reset() {
39649
+ this.time = 0;
39650
+ this.count = 0;
39651
+ this.samples = 0;
39652
+ this.lastTiming = 0;
39653
+ this.lastSampleTime = 0;
39654
+ this.lastSampleCount = 0;
39655
+ this._count = 0;
39656
+ this._time = 0;
39657
+ this._samples = 0;
39658
+ this._startTime = 0;
39659
+ this._timerPending = false;
39660
+ return this;
39661
+ }
39662
+ setSampleSize(samples) {
39663
+ this.sampleSize = samples;
39664
+ return this;
39665
+ }
39666
+ /** Call to increment count (+1) */
39667
+ incrementCount() {
39668
+ this.addCount(1);
39669
+ return this;
39670
+ }
39671
+ /** Call to decrement count (-1) */
39672
+ decrementCount() {
39673
+ this.subtractCount(1);
39674
+ return this;
39675
+ }
39676
+ /** Increase count */
39677
+ addCount(value) {
39678
+ this._count += value;
39679
+ this._samples++;
39680
+ this._checkSampling();
39681
+ return this;
39682
+ }
39683
+ /** Decrease count */
39684
+ subtractCount(value) {
39685
+ this._count -= value;
39686
+ this._samples++;
39687
+ this._checkSampling();
39688
+ return this;
39689
+ }
39690
+ /** Add an arbitrary timing and bump the count */
39691
+ addTime(time) {
39692
+ this._time += time;
39693
+ this.lastTiming = time;
39694
+ this._samples++;
39695
+ this._checkSampling();
39696
+ return this;
39697
+ }
39698
+ /** Start a timer */
39699
+ timeStart() {
39700
+ this._startTime = getHiResTimestamp3();
39701
+ this._timerPending = true;
39702
+ return this;
39703
+ }
39704
+ /** End a timer. Adds to time and bumps the timing count. */
39705
+ timeEnd() {
39706
+ if (!this._timerPending) {
39707
+ return this;
39708
+ }
39709
+ this.addTime(getHiResTimestamp3() - this._startTime);
39710
+ this._timerPending = false;
39711
+ this._checkSampling();
39712
+ return this;
39713
+ }
39714
+ getSampleAverageCount() {
39715
+ return this.sampleSize > 0 ? this.lastSampleCount / this.sampleSize : 0;
39716
+ }
39717
+ /** Calculate average time / count for the previous window */
39718
+ getSampleAverageTime() {
39719
+ return this.sampleSize > 0 ? this.lastSampleTime / this.sampleSize : 0;
39720
+ }
39721
+ /** Calculate counts per second for the previous window */
39722
+ getSampleHz() {
39723
+ return this.lastSampleTime > 0 ? this.sampleSize / (this.lastSampleTime / 1e3) : 0;
39724
+ }
39725
+ getAverageCount() {
39726
+ return this.samples > 0 ? this.count / this.samples : 0;
39727
+ }
39728
+ /** Calculate average time / count */
39729
+ getAverageTime() {
39730
+ return this.samples > 0 ? this.time / this.samples : 0;
39731
+ }
39732
+ /** Calculate counts per second */
39733
+ getHz() {
39734
+ return this.time > 0 ? this.samples / (this.time / 1e3) : 0;
39735
+ }
39736
+ _checkSampling() {
39737
+ if (this._samples === this.sampleSize) {
39738
+ this.lastSampleTime = this._time;
39739
+ this.lastSampleCount = this._count;
39740
+ this.count += this._count;
39741
+ this.time += this._time;
39742
+ this.samples += this._samples;
39743
+ this._time = 0;
39744
+ this._count = 0;
39745
+ this._samples = 0;
39746
+ }
39747
+ }
39748
+ };
39749
+
39750
+ // ../core/node_modules/@probe.gl/stats/dist/lib/stats.js
39751
+ var Stats2 = class {
39752
+ constructor(options) {
39753
+ this.stats = {};
39754
+ this.id = options.id;
39755
+ this.stats = {};
39756
+ this._initializeStats(options.stats);
39757
+ Object.seal(this);
39758
+ }
39759
+ /** Acquire a stat. Create if it doesn't exist. */
39760
+ get(name13, type = "count") {
39761
+ return this._getOrCreate({ name: name13, type });
39762
+ }
39763
+ get size() {
39764
+ return Object.keys(this.stats).length;
39765
+ }
39766
+ /** Reset all stats */
39767
+ reset() {
39768
+ for (const stat of Object.values(this.stats)) {
39769
+ stat.reset();
39770
+ }
39771
+ return this;
39772
+ }
39773
+ forEach(fn) {
39774
+ for (const stat of Object.values(this.stats)) {
39775
+ fn(stat);
39776
+ }
39777
+ }
39778
+ getTable() {
39779
+ const table = {};
39780
+ this.forEach((stat) => {
39781
+ table[stat.name] = {
39782
+ time: stat.time || 0,
39783
+ count: stat.count || 0,
39784
+ average: stat.getAverageTime() || 0,
39785
+ hz: stat.getHz() || 0
39786
+ };
39787
+ });
39788
+ return table;
39789
+ }
39790
+ _initializeStats(stats2 = []) {
39791
+ stats2.forEach((stat) => this._getOrCreate(stat));
39792
+ }
39793
+ _getOrCreate(stat) {
39794
+ const { name: name13, type } = stat;
39795
+ let result = this.stats[name13];
39796
+ if (!result) {
39797
+ if (stat instanceof Stat2) {
39798
+ result = stat;
39799
+ } else {
39800
+ result = new Stat2(name13, type);
39801
+ }
39802
+ this.stats[name13] = result;
39803
+ }
39804
+ return result;
39805
+ }
39806
+ };
39466
39807
 
39467
39808
  // ../core/src/lib/resource/resource.ts
39468
39809
  var Resource2 = class {
@@ -39685,7 +40026,7 @@ void main() {
39685
40026
  shaderAssembler: getShaderAssembler(device?.info?.shadingLanguage || "glsl"),
39686
40027
  defaultShaderModules: [layerUniforms],
39687
40028
  renderPass: void 0,
39688
- stats: stats2 || new Stats({ id: "deck.gl" }),
40029
+ stats: stats2 || new Stats2({ id: "deck.gl" }),
39689
40030
  // Make sure context.viewport is not empty on the first layer initialization
39690
40031
  viewport: viewport || new Viewport({ id: "DEFAULT-INITIAL-VIEWPORT" }),
39691
40032
  // Current viewport, exposed to layers for project* function
@@ -40208,30 +40549,187 @@ void main() {
40208
40549
  };
40209
40550
 
40210
40551
  // ../core/src/utils/positions.ts
40211
- var PERCENT_OR_PIXELS_REGEX = /([0-9]+\.?[0-9]*)(%|px)/;
40552
+ var NUMBER_REGEX = /^(?:\d+\.?\d*|\.\d+)$/;
40212
40553
  function parsePosition(value) {
40213
40554
  switch (typeof value) {
40214
40555
  case "number":
40215
- return {
40216
- position: value,
40217
- relative: false
40218
- };
40556
+ if (!Number.isFinite(value)) {
40557
+ throw new Error(`Could not parse position string ${value}`);
40558
+ }
40559
+ return { type: "literal", value };
40219
40560
  case "string":
40220
- const match = PERCENT_OR_PIXELS_REGEX.exec(value);
40221
- if (match && match.length >= 3) {
40222
- const relative = match[2] === "%";
40223
- const position = parseFloat(match[1]);
40224
- return {
40225
- position: relative ? position / 100 : position,
40226
- relative
40227
- };
40561
+ try {
40562
+ const tokens = tokenize(value);
40563
+ const parser = new LayoutExpressionParser(tokens);
40564
+ return parser.parseExpression();
40565
+ } catch (error) {
40566
+ const reason = error instanceof Error ? error.message : String(error);
40567
+ throw new Error(`Could not parse position string ${value}: ${reason}`);
40228
40568
  }
40229
40569
  default:
40230
40570
  throw new Error(`Could not parse position string ${value}`);
40231
40571
  }
40232
40572
  }
40233
- function getPosition(position, extent) {
40234
- return position.relative ? Math.round(position.position * extent) : position.position;
40573
+ function evaluateLayoutExpression(expression, extent) {
40574
+ switch (expression.type) {
40575
+ case "literal":
40576
+ return expression.value;
40577
+ case "percentage":
40578
+ return Math.round(expression.value * extent);
40579
+ case "binary":
40580
+ const left = evaluateLayoutExpression(expression.left, extent);
40581
+ const right = evaluateLayoutExpression(expression.right, extent);
40582
+ return expression.operator === "+" ? left + right : left - right;
40583
+ default:
40584
+ throw new Error("Unknown layout expression type");
40585
+ }
40586
+ }
40587
+ function getPosition(expression, extent) {
40588
+ return evaluateLayoutExpression(expression, extent);
40589
+ }
40590
+ function tokenize(input) {
40591
+ const tokens = [];
40592
+ let index = 0;
40593
+ while (index < input.length) {
40594
+ const char = input[index];
40595
+ if (/\s/.test(char)) {
40596
+ index++;
40597
+ continue;
40598
+ }
40599
+ if (char === "+" || char === "-" || char === "(" || char === ")" || char === "%") {
40600
+ tokens.push({ type: "symbol", value: char });
40601
+ index++;
40602
+ continue;
40603
+ }
40604
+ if (isDigit(char) || char === ".") {
40605
+ const start = index;
40606
+ let hasDecimal = char === ".";
40607
+ index++;
40608
+ while (index < input.length) {
40609
+ const next = input[index];
40610
+ if (isDigit(next)) {
40611
+ index++;
40612
+ continue;
40613
+ }
40614
+ if (next === "." && !hasDecimal) {
40615
+ hasDecimal = true;
40616
+ index++;
40617
+ continue;
40618
+ }
40619
+ break;
40620
+ }
40621
+ const numberString = input.slice(start, index);
40622
+ if (!NUMBER_REGEX.test(numberString)) {
40623
+ throw new Error("Invalid number token");
40624
+ }
40625
+ tokens.push({ type: "number", value: parseFloat(numberString) });
40626
+ continue;
40627
+ }
40628
+ if (isAlpha(char)) {
40629
+ const start = index;
40630
+ while (index < input.length && isAlpha(input[index])) {
40631
+ index++;
40632
+ }
40633
+ const word = input.slice(start, index).toLowerCase();
40634
+ tokens.push({ type: "word", value: word });
40635
+ continue;
40636
+ }
40637
+ throw new Error("Invalid token in position string");
40638
+ }
40639
+ return tokens;
40640
+ }
40641
+ var LayoutExpressionParser = class {
40642
+ constructor(tokens) {
40643
+ this.index = 0;
40644
+ this.tokens = tokens;
40645
+ }
40646
+ parseExpression() {
40647
+ const expression = this.parseBinaryExpression();
40648
+ if (this.index < this.tokens.length) {
40649
+ throw new Error("Unexpected token at end of expression");
40650
+ }
40651
+ return expression;
40652
+ }
40653
+ parseBinaryExpression() {
40654
+ let expression = this.parseFactor();
40655
+ let token = this.peek();
40656
+ while (isAddSubSymbol(token)) {
40657
+ this.index++;
40658
+ const right = this.parseFactor();
40659
+ expression = { type: "binary", operator: token.value, left: expression, right };
40660
+ token = this.peek();
40661
+ }
40662
+ return expression;
40663
+ }
40664
+ parseFactor() {
40665
+ const token = this.peek();
40666
+ if (!token) {
40667
+ throw new Error("Unexpected end of expression");
40668
+ }
40669
+ if (token.type === "symbol" && token.value === "+") {
40670
+ this.index++;
40671
+ return this.parseFactor();
40672
+ }
40673
+ if (token.type === "symbol" && token.value === "-") {
40674
+ this.index++;
40675
+ const factor = this.parseFactor();
40676
+ return { type: "binary", operator: "-", left: { type: "literal", value: 0 }, right: factor };
40677
+ }
40678
+ if (token.type === "symbol" && token.value === "(") {
40679
+ this.index++;
40680
+ const expression = this.parseBinaryExpression();
40681
+ if (!this.consumeSymbol(")")) {
40682
+ throw new Error("Missing closing parenthesis");
40683
+ }
40684
+ return expression;
40685
+ }
40686
+ if (token.type === "word" && token.value === "calc") {
40687
+ this.index++;
40688
+ if (!this.consumeSymbol("(")) {
40689
+ throw new Error("Missing opening parenthesis after calc");
40690
+ }
40691
+ const expression = this.parseBinaryExpression();
40692
+ if (!this.consumeSymbol(")")) {
40693
+ throw new Error("Missing closing parenthesis");
40694
+ }
40695
+ return expression;
40696
+ }
40697
+ if (token.type === "number") {
40698
+ this.index++;
40699
+ const numberValue = token.value;
40700
+ const nextToken = this.peek();
40701
+ if (nextToken && nextToken.type === "symbol" && nextToken.value === "%") {
40702
+ this.index++;
40703
+ return { type: "percentage", value: numberValue / 100 };
40704
+ }
40705
+ if (nextToken && nextToken.type === "word" && nextToken.value === "px") {
40706
+ this.index++;
40707
+ return { type: "literal", value: numberValue };
40708
+ }
40709
+ return { type: "literal", value: numberValue };
40710
+ }
40711
+ throw new Error("Unexpected token in expression");
40712
+ }
40713
+ consumeSymbol(value) {
40714
+ const token = this.peek();
40715
+ if (token && token.type === "symbol" && token.value === value) {
40716
+ this.index++;
40717
+ return true;
40718
+ }
40719
+ return false;
40720
+ }
40721
+ peek() {
40722
+ return this.tokens[this.index] || null;
40723
+ }
40724
+ };
40725
+ function isDigit(char) {
40726
+ return char >= "0" && char <= "9";
40727
+ }
40728
+ function isAlpha(char) {
40729
+ return char >= "a" && char <= "z" || char >= "A" && char <= "Z";
40730
+ }
40731
+ function isAddSubSymbol(token) {
40732
+ return Boolean(token && token.type === "symbol" && (token.value === "+" || token.value === "-"));
40235
40733
  }
40236
40734
 
40237
40735
  // ../core/src/views/view.ts
@@ -43298,10 +43796,9 @@ void main() {
43298
43796
  };
43299
43797
 
43300
43798
  // ../core/src/lib/deck.ts
43301
- init_dist4();
43302
- init_dist6();
43303
43799
  init_dist5();
43304
- init_dist3();
43800
+ init_dist7();
43801
+ init_dist6();
43305
43802
  function noop3() {
43306
43803
  }
43307
43804
  var getCursor = ({ isDragging }) => isDragging ? "grabbing" : "grab";
@@ -43375,7 +43872,7 @@ void main() {
43375
43872
  isHovering: false,
43376
43873
  isDragging: false
43377
43874
  };
43378
- this.stats = new Stats({ id: "deck.gl" });
43875
+ this.stats = new Stats2({ id: "deck.gl" });
43379
43876
  this.metrics = {
43380
43877
  fps: 0,
43381
43878
  setPropsTime: 0,
@@ -44077,10 +44574,10 @@ void main() {
44077
44574
  Deck.VERSION = VERSION5;
44078
44575
 
44079
44576
  // ../core/src/lib/attribute/data-column.ts
44080
- init_dist4();
44577
+ init_dist5();
44081
44578
 
44082
44579
  // ../core/src/lib/attribute/gl-utils.ts
44083
- init_dist4();
44580
+ init_dist5();
44084
44581
  function typedArrayFromDataType(type) {
44085
44582
  switch (type) {
44086
44583
  case "float64":
@@ -45003,7 +45500,7 @@ void main() {
45003
45500
  };
45004
45501
 
45005
45502
  // ../core/src/transitions/gpu-interpolation-transition.ts
45006
- init_dist5();
45503
+ init_dist6();
45007
45504
 
45008
45505
  // ../core/src/utils/array-utils.ts
45009
45506
  function padArrayChunk(options) {
@@ -45077,7 +45574,7 @@ void main() {
45077
45574
  }
45078
45575
 
45079
45576
  // ../core/src/transitions/gpu-transition-utils.ts
45080
- init_dist5();
45577
+ init_dist6();
45081
45578
  function cloneAttribute(attribute) {
45082
45579
  const { device, settings, value } = attribute;
45083
45580
  const newAttribute = new Attribute(device, settings);
@@ -45963,8 +46460,8 @@ void main(void) {
45963
46460
  };
45964
46461
 
45965
46462
  // ../core/src/lib/layer.ts
45966
- init_dist4();
45967
- init_dist6();
46463
+ init_dist5();
46464
+ init_dist7();
45968
46465
 
45969
46466
  // ../core/src/transitions/cpu-interpolation-transition.ts
45970
46467
  var CPUInterpolationTransition = class extends Transition {
@@ -46337,7 +46834,7 @@ void main(void) {
46337
46834
  }
46338
46835
 
46339
46836
  // ../core/src/utils/texture.ts
46340
- init_dist4();
46837
+ init_dist5();
46341
46838
  var DEFAULT_TEXTURE_PARAMETERS = {
46342
46839
  minFilter: "linear",
46343
46840
  mipmapFilter: "linear",
@@ -49196,7 +49693,7 @@ void main(void) {
49196
49693
  };
49197
49694
 
49198
49695
  // ../core/src/utils/tesselator.ts
49199
- init_dist4();
49696
+ init_dist5();
49200
49697
  var Tesselator = class {
49201
49698
  constructor(opts) {
49202
49699
  this.indexStarts = [0];
@@ -50336,8 +50833,8 @@ void main(void) {
50336
50833
  var self_3 = globals3.self || globals3.window || globals3.global || {};
50337
50834
  var window_5 = globals3.window || globals3.self || globals3.global || {};
50338
50835
  var global_4 = globals3.global || globals3.self || globals3.window || {};
50339
- var document_4 = globals3.document || {};
50340
- var isBrowser4 = (
50836
+ var document_5 = globals3.document || {};
50837
+ var isBrowser5 = (
50341
50838
  // @ts-ignore process does not exist on browser
50342
50839
  Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser)
50343
50840
  );
@@ -50396,8 +50893,8 @@ void main(void) {
50396
50893
  var self_4 = globals4.self || globals4.window || globals4.global || {};
50397
50894
  var window_6 = globals4.window || globals4.self || globals4.global || {};
50398
50895
  var global_5 = globals4.global || globals4.self || globals4.window || {};
50399
- var document_5 = globals4.document || {};
50400
- var isBrowser5 = (
50896
+ var document_6 = globals4.document || {};
50897
+ var isBrowser6 = (
50401
50898
  // @ts-ignore process.browser
50402
50899
  typeof process !== "object" || String(process) !== "[object process]" || process.browser
50403
50900
  );
@@ -50547,7 +51044,7 @@ void main(void) {
50547
51044
  _loadableURL = "";
50548
51045
  /** Checks if workers are supported on this platform */
50549
51046
  static isSupported() {
50550
- return typeof Worker !== "undefined" && isBrowser5 || typeof NodeWorker2 !== "undefined" && !isBrowser5;
51047
+ return typeof Worker !== "undefined" && isBrowser6 || typeof NodeWorker2 !== "undefined" && !isBrowser6;
50551
51048
  }
50552
51049
  constructor(props) {
50553
51050
  const { name: name13, source: source4, url } = props;
@@ -50557,7 +51054,7 @@ void main(void) {
50557
51054
  this.url = url;
50558
51055
  this.onMessage = NOOP2;
50559
51056
  this.onError = (error) => console.log(error);
50560
- this.worker = isBrowser5 ? this._createBrowserWorker() : this._createNodeWorker();
51057
+ this.worker = isBrowser6 ? this._createBrowserWorker() : this._createNodeWorker();
50561
51058
  }
50562
51059
  /**
50563
51060
  * Terminate this worker thread
@@ -50753,7 +51250,7 @@ void main(void) {
50753
51250
  const shouldDestroyWorker = (
50754
51251
  // Workers on Node.js prevent the process from exiting.
50755
51252
  // Until we figure out how to close them before exit, we always destroy them
50756
- !isBrowser5 || // If the pool is destroyed, there is no reason to keep the worker around
51253
+ !isBrowser6 || // If the pool is destroyed, there is no reason to keep the worker around
50757
51254
  this.isDestroyed || // If the app has disabled worker reuse, any completed workers should be destroyed
50758
51255
  !this.reuseWorkers || // If concurrency has been lowered, this worker might be surplus to requirements
50759
51256
  this.count > this._getMaxConcurrency()
@@ -50873,13 +51370,13 @@ void main(void) {
50873
51370
  // ../../node_modules/@loaders.gl/core/node_modules/@loaders.gl/worker-utils/dist/lib/worker-api/get-worker-url.js
50874
51371
  function getWorkerURL2(worker, options = {}) {
50875
51372
  const workerOptions = options[worker.id] || {};
50876
- const workerFile = isBrowser5 ? `${worker.id}-worker.js` : `${worker.id}-worker-node.js`;
51373
+ const workerFile = isBrowser6 ? `${worker.id}-worker.js` : `${worker.id}-worker-node.js`;
50877
51374
  let url = workerOptions.workerUrl;
50878
51375
  if (!url && worker.id === "compression") {
50879
51376
  url = options.workerUrl;
50880
51377
  }
50881
51378
  if (options._workerType === "test") {
50882
- if (isBrowser5) {
51379
+ if (isBrowser6) {
50883
51380
  url = `modules/${worker.module}/dist/${workerFile}`;
50884
51381
  } else {
50885
51382
  url = `modules/${worker.module}/src/workers/${worker.id}-worker-node.ts`;
@@ -50912,7 +51409,7 @@ void main(void) {
50912
51409
  if (!WorkerFarm2.isSupported()) {
50913
51410
  return false;
50914
51411
  }
50915
- if (!isBrowser5 && !options?._nodeWorkers) {
51412
+ if (!isBrowser6 && !options?._nodeWorkers) {
50916
51413
  return false;
50917
51414
  }
50918
51415
  return loader.worker && options?.worker;
@@ -51419,7 +51916,7 @@ void main(void) {
51419
51916
 
51420
51917
  // ../../node_modules/@loaders.gl/core/dist/lib/loader-utils/loggers.js
51421
51918
  init_dist2();
51422
- var probeLog2 = new Log({ id: "loaders.gl" });
51919
+ var probeLog2 = new ProbeLog({ id: "loaders.gl" });
51423
51920
  var NullLog2 = class {
51424
51921
  log() {
51425
51922
  return () => {
@@ -51473,7 +51970,7 @@ void main(void) {
51473
51970
  // How many worker instances should be created for each loader.
51474
51971
  maxMobileConcurrency: 1,
51475
51972
  // How many worker instances should be created for each loader on mobile devices.
51476
- reuseWorkers: isBrowser4,
51973
+ reuseWorkers: isBrowser5,
51477
51974
  // By default reuse workers in browser (Node.js refuses to terminate if browsers are running)
51478
51975
  _nodeWorkers: false,
51479
51976
  // By default do not support node workers
@@ -51645,7 +52142,7 @@ void main(void) {
51645
52142
 
51646
52143
  // ../../node_modules/@loaders.gl/core/dist/lib/utils/log.js
51647
52144
  init_dist2();
51648
- var log3 = new Log({ id: "loaders.gl" });
52145
+ var log3 = new ProbeLog({ id: "loaders.gl" });
51649
52146
 
51650
52147
  // ../../node_modules/@loaders.gl/core/dist/lib/api/select-loader.js
51651
52148
  var EXT_PATTERN2 = /\.([^.]+)$/;
@@ -51878,7 +52375,7 @@ void main(void) {
51878
52375
 
51879
52376
  // ../../node_modules/@loaders.gl/core/dist/iterators/make-iterator/make-stream-iterator.js
51880
52377
  function makeStreamIterator2(stream, options) {
51881
- return isBrowser4 ? makeBrowserStreamIterator2(stream, options) : makeNodeStreamIterator2(stream, options);
52378
+ return isBrowser5 ? makeBrowserStreamIterator2(stream, options) : makeNodeStreamIterator2(stream, options);
51882
52379
  }
51883
52380
  async function* makeBrowserStreamIterator2(stream, options) {
51884
52381
  const reader = stream.getReader();
@@ -57120,12 +57617,16 @@ void main(void) {
57120
57617
  updateState(params) {
57121
57618
  super.updateState(params);
57122
57619
  const { props, oldProps } = params;
57123
- let { outlineColor } = props;
57620
+ const { outlineColor } = props;
57124
57621
  if (outlineColor !== oldProps.outlineColor) {
57125
- outlineColor = outlineColor.map((x3) => x3 / 255);
57126
- outlineColor[3] = Number.isFinite(outlineColor[3]) ? outlineColor[3] : 1;
57622
+ const normalizedOutlineColor = [
57623
+ outlineColor[0] / 255,
57624
+ outlineColor[1] / 255,
57625
+ outlineColor[2] / 255,
57626
+ (outlineColor[3] ?? 255) / 255
57627
+ ];
57127
57628
  this.setState({
57128
- outlineColor
57629
+ outlineColor: normalizedOutlineColor
57129
57630
  });
57130
57631
  }
57131
57632
  if (!props.sdf && props.outlineWidth) {
@@ -57574,7 +58075,7 @@ void main(void) {
57574
58075
  var BASELINE_SCALE = 0.9;
57575
58076
  var HEIGHT_SCALE = 1.2;
57576
58077
  var CACHE_LIMIT = 3;
57577
- var cache2 = new LRUCache(CACHE_LIMIT);
58078
+ var cache = new LRUCache(CACHE_LIMIT);
57578
58079
  function getNewChars(cacheKey, characterSet) {
57579
58080
  let newCharSet;
57580
58081
  if (typeof characterSet === "string") {
@@ -57582,7 +58083,7 @@ void main(void) {
57582
58083
  } else {
57583
58084
  newCharSet = new Set(characterSet);
57584
58085
  }
57585
- const cachedFontAtlas = cache2.get(cacheKey);
58086
+ const cachedFontAtlas = cache.get(cacheKey);
57586
58087
  if (!cachedFontAtlas) {
57587
58088
  return newCharSet;
57588
58089
  }
@@ -57606,7 +58107,7 @@ void main(void) {
57606
58107
  }
57607
58108
  function setFontAtlasCacheLimit(limit) {
57608
58109
  log_default.assert(Number.isFinite(limit) && limit >= CACHE_LIMIT, "Invalid cache limit");
57609
- cache2 = new LRUCache(limit);
58110
+ cache = new LRUCache(limit);
57610
58111
  }
57611
58112
  var FontAtlasManager = class {
57612
58113
  constructor() {
@@ -57631,7 +58132,7 @@ void main(void) {
57631
58132
  Object.assign(this.props, props);
57632
58133
  this._key = this._getKey();
57633
58134
  const charSet = getNewChars(this._key, this.props.characterSet);
57634
- const cachedFontAtlas = cache2.get(this._key);
58135
+ const cachedFontAtlas = cache.get(this._key);
57635
58136
  if (cachedFontAtlas && charSet.size === 0) {
57636
58137
  if (this._atlas !== cachedFontAtlas) {
57637
58138
  this._atlas = cachedFontAtlas;
@@ -57640,7 +58141,7 @@ void main(void) {
57640
58141
  }
57641
58142
  const fontAtlas = this._generateFontAtlas(charSet, cachedFontAtlas);
57642
58143
  this._atlas = fontAtlas;
57643
- cache2.set(this._key, fontAtlas);
58144
+ cache.set(this._key, fontAtlas);
57644
58145
  }
57645
58146
  // eslint-disable-next-line max-statements
57646
58147
  _generateFontAtlas(characterSet, cachedFontAtlas) {
@@ -57967,7 +58468,12 @@ void main(void) {
57967
58468
  padding = [padding[0], padding[1], padding[0], padding[1]];
57968
58469
  }
57969
58470
  if (!Array.isArray(borderRadius)) {
57970
- borderRadius = [borderRadius, borderRadius, borderRadius, borderRadius];
58471
+ borderRadius = [
58472
+ borderRadius,
58473
+ borderRadius,
58474
+ borderRadius,
58475
+ borderRadius
58476
+ ];
57971
58477
  }
57972
58478
  const model = this.state.model;
57973
58479
  const textBackgroundProps = {
@@ -65255,7 +65761,7 @@ out float vTime;
65255
65761
  H3ClusterLayer.defaultProps = defaultProps27;
65256
65762
 
65257
65763
  // ../mesh-layers/src/simple-mesh-layer/simple-mesh-layer.ts
65258
- init_dist4();
65764
+ init_dist5();
65259
65765
 
65260
65766
  // ../mesh-layers/src/utils/matrix.ts
65261
65767
  var RADIAN_PER_DEGREE = Math.PI / 180;
@@ -65705,7 +66211,7 @@ void main(void) {
65705
66211
  SimpleMeshLayer.layerName = "SimpleMeshLayer";
65706
66212
 
65707
66213
  // ../../node_modules/@luma.gl/gltf/dist/parsers/parse-pbr-material.js
65708
- init_dist4();
66214
+ init_dist5();
65709
66215
 
65710
66216
  // ../../node_modules/@luma.gl/gltf/dist/webgl-to-webgpu/convert-webgl-sampler.js
65711
66217
  function convertSampler(gltfSampler) {
@@ -65916,7 +66422,7 @@ void main(void) {
65916
66422
  }
65917
66423
 
65918
66424
  // ../../node_modules/@luma.gl/gltf/dist/gltf/create-gltf-model.js
65919
- init_dist4();
66425
+ init_dist5();
65920
66426
  var SHADER = (
65921
66427
  /* WGSL */
65922
66428
  `
@@ -66154,10 +66660,10 @@ layout(0) positions: vec4; // in vec4 POSITION;
66154
66660
  }
66155
66661
 
66156
66662
  // ../../node_modules/@luma.gl/gltf/dist/gltf/gltf-animator.js
66157
- init_dist4();
66663
+ init_dist5();
66158
66664
 
66159
66665
  // ../../node_modules/@luma.gl/gltf/dist/gltf/animations/interpolate.js
66160
- init_dist4();
66666
+ init_dist5();
66161
66667
  var scratchQuaternion = new Quaternion();
66162
66668
  function interpolate(time, { input, interpolation, output }, target2, path) {
66163
66669
  const maxTime = input[input.length - 1];
@@ -76060,27 +76566,27 @@ void main(void) {
76060
76566
  var INT_CACHE = {};
76061
76567
  var UINT_CACHE = {};
76062
76568
  function fromInt(value, unsigned) {
76063
- var obj, cachedObj, cache3;
76569
+ var obj, cachedObj, cache2;
76064
76570
  if (unsigned) {
76065
76571
  value >>>= 0;
76066
- if (cache3 = 0 <= value && value < 256) {
76572
+ if (cache2 = 0 <= value && value < 256) {
76067
76573
  cachedObj = UINT_CACHE[value];
76068
76574
  if (cachedObj)
76069
76575
  return cachedObj;
76070
76576
  }
76071
76577
  obj = fromBits(value, 0, true);
76072
- if (cache3)
76578
+ if (cache2)
76073
76579
  UINT_CACHE[value] = obj;
76074
76580
  return obj;
76075
76581
  } else {
76076
76582
  value |= 0;
76077
- if (cache3 = -128 <= value && value < 128) {
76583
+ if (cache2 = -128 <= value && value < 128) {
76078
76584
  cachedObj = INT_CACHE[value];
76079
76585
  if (cachedObj)
76080
76586
  return cachedObj;
76081
76587
  }
76082
76588
  obj = fromBits(value, value < 0 ? -1 : 0, false);
76083
- if (cache3)
76589
+ if (cache2)
76084
76590
  INT_CACHE[value] = obj;
76085
76591
  return obj;
76086
76592
  }
@@ -79902,13 +80408,19 @@ vec4 project_position_to_clipspace(
79902
80408
  inject: {
79903
80409
  "vs:#decl": `
79904
80410
  in vec2 instanceDashArrays;
80411
+ #ifdef HIGH_PRECISION_DASH
79905
80412
  in float instanceDashOffsets;
80413
+ #endif
79906
80414
  out vec2 vDashArray;
79907
80415
  out float vDashOffset;
79908
80416
  `,
79909
80417
  "vs:#main-end": `
79910
80418
  vDashArray = instanceDashArrays;
80419
+ #ifdef HIGH_PRECISION_DASH
79911
80420
  vDashOffset = instanceDashOffsets / width.x;
80421
+ #else
80422
+ vDashOffset = 0.0;
80423
+ #endif
79912
80424
  `,
79913
80425
  "fs:#decl": `
79914
80426
  uniform pathStyleUniforms {
@@ -80015,8 +80527,12 @@ in float instanceOffsets;
80015
80527
  return null;
80016
80528
  }
80017
80529
  let result = {};
80530
+ const defines2 = {};
80018
80531
  if (extension.opts.dash) {
80019
80532
  result = mergeShaders(result, dashShaders);
80533
+ if (extension.opts.highPrecisionDash) {
80534
+ defines2.HIGH_PRECISION_DASH = true;
80535
+ }
80020
80536
  }
80021
80537
  if (extension.opts.offset) {
80022
80538
  result = mergeShaders(result, offsetShaders);
@@ -80031,7 +80547,8 @@ in float instanceOffsets;
80031
80547
  }
80032
80548
  };
80033
80549
  return {
80034
- modules: [pathStyle]
80550
+ modules: [pathStyle],
80551
+ defines: defines2
80035
80552
  };
80036
80553
  }
80037
80554
  initializeState(context, extension) {
@@ -80042,17 +80559,13 @@ in float instanceOffsets;
80042
80559
  if (extension.opts.dash) {
80043
80560
  attributeManager.addInstanced({
80044
80561
  instanceDashArrays: { size: 2, accessor: "getDashArray" },
80045
- instanceDashOffsets: extension.opts.highPrecisionDash ? {
80046
- size: 1,
80047
- accessor: "getPath",
80048
- transform: extension.getDashOffsets.bind(this)
80049
- } : {
80050
- size: 1,
80051
- update: (attribute) => {
80052
- attribute.constant = true;
80053
- attribute.value = [0];
80562
+ ...extension.opts.highPrecisionDash ? {
80563
+ instanceDashOffsets: {
80564
+ size: 1,
80565
+ accessor: "getPath",
80566
+ transform: extension.getDashOffsets.bind(this)
80054
80567
  }
80055
- }
80568
+ } : {}
80056
80569
  });
80057
80570
  }
80058
80571
  if (extension.opts.offset) {
@@ -81505,7 +82018,7 @@ if ((terrain.mode == TERRAIN_MODE_USE_COVER) || (terrain.mode == TERRAIN_MODE_US
81505
82018
  };
81506
82019
 
81507
82020
  // ../extensions/src/terrain/utils.ts
81508
- init_dist5();
82021
+ init_dist6();
81509
82022
  function createRenderTarget(device, opts) {
81510
82023
  return device.createFramebuffer({
81511
82024
  id: opts.id,
@@ -83751,8 +84264,8 @@ if ((terrain.mode == TERRAIN_MODE_USE_COVER) || (terrain.mode == TERRAIN_MODE_US
83751
84264
  setDefaultDeviceProps: () => setDefaultDeviceProps,
83752
84265
  stats: () => stats
83753
84266
  });
83754
- init_dist4();
83755
- init_dist4();
84267
+ init_dist5();
84268
+ init_dist5();
83756
84269
  var {
83757
84270
  stats,
83758
84271
  getSupportedAdapters,
@@ -88380,7 +88893,10 @@ void main() {
88380
88893
  if (colorDomain && aggregation === "SUM") {
88381
88894
  const { viewport: viewport2 } = this.context;
88382
88895
  const metersPerPixel = viewport2.distanceScales.metersPerUnit[2] * (commonBounds[2] - commonBounds[0]) / textureSize;
88383
- this.state.colorDomain = colorDomain.map((x3) => x3 * metersPerPixel * weightsScale);
88896
+ this.state.colorDomain = [
88897
+ colorDomain[0] * metersPerPixel * weightsScale,
88898
+ colorDomain[1] * metersPerPixel * weightsScale
88899
+ ];
88384
88900
  } else {
88385
88901
  this.state.colorDomain = colorDomain || DEFAULT_COLOR_DOMAIN;
88386
88902
  }
@@ -88469,8 +88985,8 @@ void main() {
88469
88985
  HeatmapLayer.defaultProps = defaultProps47;
88470
88986
 
88471
88987
  // ../google-maps/src/google-maps-overlay.ts
88472
- init_dist5();
88473
88988
  init_dist6();
88989
+ init_dist7();
88474
88990
 
88475
88991
  // ../google-maps/src/utils.ts
88476
88992
  var MAX_LATITUDE2 = 85.05113;
@@ -90588,6 +91104,15 @@ void main() {
90588
91104
  }
90589
91105
 
90590
91106
  // ../widgets/src/lib/components/dropdown-menu.tsx
91107
+ function getMenuItemValue(item) {
91108
+ return typeof item === "string" ? item : item.value;
91109
+ }
91110
+ function getMenuItemLabel(item) {
91111
+ return typeof item === "string" ? item : item.label;
91112
+ }
91113
+ function getMenuItemIcon(item) {
91114
+ return typeof item === "string" ? void 0 : item.icon;
91115
+ }
90591
91116
  var DropdownMenu = (props) => {
90592
91117
  const [isOpen, setIsOpen] = h3(false);
90593
91118
  const dropdownRef = A4(null);
@@ -90603,74 +91128,37 @@ void main() {
90603
91128
  document.removeEventListener("mousedown", handleClickOutside);
90604
91129
  };
90605
91130
  }, []);
90606
- const handleSelect = (value) => {
90607
- props.onSelect(value);
91131
+ const handleSelect = (item) => {
91132
+ props.onSelect(getMenuItemValue(item));
90608
91133
  setIsOpen(false);
90609
91134
  };
90610
- return /* @__PURE__ */ u4(
90611
- "div",
90612
- {
90613
- className: "dropdown-container",
90614
- ref: dropdownRef,
90615
- style: {
90616
- position: "relative",
90617
- display: "inline-block",
90618
- ...props.style
90619
- },
90620
- children: [
90621
- /* @__PURE__ */ u4(
90622
- "button",
90623
- {
90624
- onClick: toggleDropdown,
90625
- style: {
90626
- width: "30px",
90627
- height: "30px",
90628
- display: "flex",
90629
- alignItems: "center",
90630
- justifyContent: "center",
90631
- border: "1px solid #ccc",
90632
- borderRadius: "4px",
90633
- background: "#fff",
90634
- cursor: "pointer",
90635
- padding: 0
90636
- },
90637
- children: "\u25BC"
90638
- }
90639
- ),
90640
- isOpen && /* @__PURE__ */ u4(
90641
- "ul",
90642
- {
90643
- style: {
90644
- position: "absolute",
90645
- top: "100%",
90646
- right: "100%",
90647
- background: "#fff",
90648
- border: "1px solid #ccc",
90649
- borderRadius: "4px",
90650
- listStyle: "none",
90651
- padding: "4px 0",
90652
- margin: 0,
90653
- zIndex: 1e3,
90654
- minWidth: "200px"
90655
- },
90656
- children: props.menuItems.map((item) => /* @__PURE__ */ u4(
90657
- "li",
91135
+ if (props.menuItems.length === 0) {
91136
+ return null;
91137
+ }
91138
+ return /* @__PURE__ */ u4("div", { className: "deck-widget-dropdown-container", ref: dropdownRef, style: props.style, children: [
91139
+ /* @__PURE__ */ u4("button", { className: "deck-widget-dropdown-button", onClick: toggleDropdown, children: /* @__PURE__ */ u4("span", { className: `deck-widget-dropdown-icon ${isOpen ? "open" : ""}` }) }),
91140
+ isOpen && /* @__PURE__ */ u4("ul", { className: "deck-widget-dropdown-menu", children: props.menuItems.map((item) => {
91141
+ const icon = getMenuItemIcon(item);
91142
+ return /* @__PURE__ */ u4(
91143
+ "li",
91144
+ {
91145
+ className: "deck-widget-dropdown-item",
91146
+ onClick: () => handleSelect(item),
91147
+ children: [
91148
+ icon && /* @__PURE__ */ u4(
91149
+ "span",
90658
91150
  {
90659
- onClick: () => handleSelect(item),
90660
- style: {
90661
- padding: "4px 8px",
90662
- cursor: "pointer",
90663
- whiteSpace: "nowrap"
90664
- },
90665
- children: item
90666
- },
90667
- item
90668
- ))
90669
- }
90670
- )
90671
- ]
90672
- }
90673
- );
91151
+ className: "deck-widget-dropdown-item-icon",
91152
+ style: { maskImage: `url("${icon}")`, WebkitMaskImage: `url("${icon}")` }
91153
+ }
91154
+ ),
91155
+ getMenuItemLabel(item)
91156
+ ]
91157
+ },
91158
+ getMenuItemValue(item)
91159
+ );
91160
+ }) })
91161
+ ] });
90674
91162
  };
90675
91163
 
90676
91164
  // ../widgets/src/lib/geocode/geocoder-history.ts
@@ -90863,6 +91351,12 @@ void main() {
90863
91351
 
90864
91352
  // ../widgets/src/geocoder-widget.tsx
90865
91353
  var CURRENT_LOCATION2 = "current";
91354
+ var LOCATION_ICON = `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'%3E%3Cpath d='M480-480q33 0 56.5-23.5T560-560q0-33-23.5-56.5T480-640q-33 0-56.5 23.5T400-560q0 33 23.5 56.5T480-480Zm0 294q122-112 181-203.5T720-552q0-109-69.5-178.5T480-800q-101 0-170.5 69.5T240-552q0 71 59 162.5T480-186Zm0 106Q319-217 239.5-334.5T160-552q0-150 96.5-239T480-880q127 0 223.5 89T800-552q0 100-79.5 217.5T480-80Z'/%3E%3C/svg%3E`;
91355
+ var CURRENT_LOCATION_ITEM = {
91356
+ label: "Current location",
91357
+ value: CURRENT_LOCATION2,
91358
+ icon: LOCATION_ICON
91359
+ };
90866
91360
  var GeocoderWidget = class extends Widget {
90867
91361
  constructor(props = {}) {
90868
91362
  super(props);
@@ -90871,6 +91365,7 @@ void main() {
90871
91365
  this.geocodeHistory = new GeocoderHistory({});
90872
91366
  this.addressText = "";
90873
91367
  this.geocoder = CoordinatesGeocoder;
91368
+ this.isGettingLocation = false;
90874
91369
  this.setInput = (text) => {
90875
91370
  this.addressText = text;
90876
91371
  };
@@ -90879,23 +91374,48 @@ void main() {
90879
91374
  this.handleSubmit();
90880
91375
  }
90881
91376
  };
90882
- this.handleSelect = (address) => {
90883
- this.setInput(address);
90884
- this.handleSubmit();
91377
+ this.handleSelect = (value) => {
91378
+ if (value === CURRENT_LOCATION2) {
91379
+ this.getCurrentLocation();
91380
+ } else {
91381
+ this.setInput(value);
91382
+ this.handleSubmit();
91383
+ }
90885
91384
  };
90886
91385
  /** Sync wrapper for async geocode() */
90887
91386
  this.handleSubmit = () => {
90888
91387
  this.geocode(this.addressText);
90889
91388
  };
91389
+ /** Get current location via browser geolocation API */
91390
+ this.getCurrentLocation = async () => {
91391
+ this.isGettingLocation = true;
91392
+ if (this.rootElement) {
91393
+ this.updateHTML();
91394
+ }
91395
+ try {
91396
+ const coordinates = await CurrentLocationGeocoder.geocode();
91397
+ if (coordinates) {
91398
+ this.setViewState(coordinates);
91399
+ }
91400
+ } catch (error) {
91401
+ this.geocodeHistory.errorText = error instanceof Error ? error.message : "Location error";
91402
+ } finally {
91403
+ this.isGettingLocation = false;
91404
+ if (this.rootElement) {
91405
+ this.updateHTML();
91406
+ }
91407
+ }
91408
+ };
90890
91409
  /** Perform geocoding */
90891
91410
  this.geocode = async (address) => {
90892
- const useGeolocation = this.props._geolocation && address === CURRENT_LOCATION2;
90893
- const geocoder = useGeolocation ? CurrentLocationGeocoder : this.geocoder;
90894
91411
  const coordinates = await this.geocodeHistory.geocode(
90895
- geocoder,
91412
+ this.geocoder,
90896
91413
  this.addressText,
90897
91414
  this.props.apiKey
90898
91415
  );
91416
+ if (this.rootElement) {
91417
+ this.updateHTML();
91418
+ }
90899
91419
  if (coordinates) {
90900
91420
  this.setViewState(coordinates);
90901
91421
  }
@@ -90913,53 +91433,23 @@ void main() {
90913
91433
  super.setProps(props);
90914
91434
  }
90915
91435
  onRenderHTML(rootElement) {
90916
- const menuItems = this.props._geolocation ? [CURRENT_LOCATION2, ...this.geocodeHistory.addressHistory] : [...this.geocodeHistory.addressHistory];
91436
+ const menuItems = this.props._geolocation ? [CURRENT_LOCATION_ITEM, ...this.geocodeHistory.addressHistory] : [...this.geocodeHistory.addressHistory];
90917
91437
  B3(
90918
- /* @__PURE__ */ u4(
90919
- "div",
90920
- {
90921
- className: "deck-widget-geocoder",
90922
- style: {
90923
- pointerEvents: "auto",
90924
- display: "flex",
90925
- alignItems: "center",
90926
- flexWrap: "wrap"
90927
- // Allows wrapping on smaller screens
90928
- },
90929
- children: [
90930
- /* @__PURE__ */ u4(
90931
- "input",
90932
- {
90933
- type: "text",
90934
- placeholder: this.geocoder.placeholderLocation ?? "Enter address or location",
90935
- value: this.geocodeHistory.addressText,
90936
- onInput: (e6) => this.setInput(e6.target?.value || ""),
90937
- onKeyPress: this.handleKeyPress,
90938
- style: {
90939
- flex: "1 1 auto",
90940
- minWidth: "200px",
90941
- margin: 0,
90942
- padding: "8px",
90943
- boxSizing: "border-box"
90944
- }
90945
- }
90946
- ),
90947
- /* @__PURE__ */ u4(
90948
- DropdownMenu,
90949
- {
90950
- menuItems,
90951
- onSelect: this.handleSelect,
90952
- style: {
90953
- margin: 2,
90954
- padding: "4px 2px",
90955
- boxSizing: "border-box"
90956
- }
90957
- }
90958
- ),
90959
- this.geocodeHistory.errorText && /* @__PURE__ */ u4("div", { className: "error", children: this.geocodeHistory.errorText })
90960
- ]
90961
- }
90962
- ),
91438
+ /* @__PURE__ */ u4("div", { className: "deck-widget-geocoder", children: [
91439
+ /* @__PURE__ */ u4(
91440
+ "input",
91441
+ {
91442
+ className: "deck-widget-geocoder-input",
91443
+ type: "text",
91444
+ placeholder: this.isGettingLocation ? "Finding your location..." : this.geocoder.placeholderLocation ?? "Enter address or location",
91445
+ value: this.geocodeHistory.addressText,
91446
+ onInput: (e6) => this.setInput(e6.target?.value || ""),
91447
+ onKeyPress: this.handleKeyPress
91448
+ }
91449
+ ),
91450
+ /* @__PURE__ */ u4(DropdownMenu, { menuItems, onSelect: this.handleSelect }),
91451
+ this.geocodeHistory.errorText && /* @__PURE__ */ u4("div", { className: "deck-widget-geocoder-error", children: this.geocodeHistory.errorText })
91452
+ ] }),
90963
91453
  rootElement
90964
91454
  );
90965
91455
  }
@@ -91815,7 +92305,13 @@ void main() {
91815
92305
  "--button-text": "rgb(24, 24, 26, 1)",
91816
92306
  "--icon-compass-north-color": "rgb(240, 92, 68)",
91817
92307
  "--icon-compass-south-color": "rgb(204, 204, 204)",
91818
- "--menu-gap": "4px"
92308
+ "--menu-gap": "4px",
92309
+ "--menu-background": "#fff",
92310
+ "--menu-backdrop-filter": "unset",
92311
+ "--menu-border": "unset",
92312
+ "--menu-shadow": "0px 0px 8px 0px rgba(0, 0, 0, 0.25)",
92313
+ "--menu-text": "rgb(24, 24, 26, 1)",
92314
+ "--menu-item-hover": "rgba(0, 0, 0, 0.08)"
91819
92315
  };
91820
92316
  var DarkTheme = {
91821
92317
  "--widget-margin": "12px",
@@ -91831,7 +92327,13 @@ void main() {
91831
92327
  "--button-text": "rgb(215, 214, 229, 1)",
91832
92328
  "--icon-compass-north-color": "rgb(240, 92, 68)",
91833
92329
  "--icon-compass-south-color": "rgb(200, 199, 209)",
91834
- "--menu-gap": "4px"
92330
+ "--menu-gap": "4px",
92331
+ "--menu-background": "rgba(18, 18, 20, 1)",
92332
+ "--menu-backdrop-filter": "unset",
92333
+ "--menu-border": "unset",
92334
+ "--menu-shadow": "0px 0px 8px 0px rgba(0, 0, 0, 0.25)",
92335
+ "--menu-text": "rgb(215, 214, 229, 1)",
92336
+ "--menu-item-hover": "rgba(255, 255, 255, 0.1)"
91835
92337
  };
91836
92338
  var LightGlassTheme = {
91837
92339
  "--widget-margin": "12px",
@@ -91847,7 +92349,13 @@ void main() {
91847
92349
  "--button-text": "rgb(24, 24, 26, 1)",
91848
92350
  "--icon-compass-north-color": "rgb(240, 92, 68)",
91849
92351
  "--icon-compass-south-color": "rgb(204, 204, 204)",
91850
- "--menu-gap": "4px"
92352
+ "--menu-gap": "4px",
92353
+ "--menu-background": "rgba(255, 255, 255, 0.6)",
92354
+ "--menu-backdrop-filter": "blur(4px)",
92355
+ "--menu-border": "1px solid rgba(255, 255, 255, 0.6)",
92356
+ "--menu-shadow": "0px 0px 8px 0px rgba(0, 0, 0, 0.25), 0px 0px 8px 0px rgba(0, 0, 0, 0.1) inset",
92357
+ "--menu-text": "rgb(24, 24, 26, 1)",
92358
+ "--menu-item-hover": "rgba(0, 0, 0, 0.08)"
91851
92359
  };
91852
92360
  var DarkGlassTheme = {
91853
92361
  "--widget-margin": "12px",
@@ -91863,7 +92371,13 @@ void main() {
91863
92371
  "--button-text": "rgb(215, 214, 229, 1)",
91864
92372
  "--icon-compass-north-color": "rgb(240, 92, 68)",
91865
92373
  "--icon-compass-south-color": "rgb(200, 199, 209)",
91866
- "--menu-gap": "4px"
92374
+ "--menu-gap": "4px",
92375
+ "--menu-background": "rgba(18, 18, 20, 0.75)",
92376
+ "--menu-backdrop-filter": "blur(4px)",
92377
+ "--menu-border": "1px solid rgba(18, 18, 20, 0.75)",
92378
+ "--menu-shadow": "0px 0px 8px 0px rgba(0, 0, 0, 0.25), 0px 0px 8px 0px rgba(0, 0, 0, 0.1) inset",
92379
+ "--menu-text": "rgb(215, 214, 229, 1)",
92380
+ "--menu-item-hover": "rgba(255, 255, 255, 0.1)"
91867
92381
  };
91868
92382
 
91869
92383
  // ../widgets/src/theme-widget.tsx
@@ -92043,7 +92557,7 @@ void main() {
92043
92557
  };
92044
92558
 
92045
92559
  // ../widgets/src/stats-widget.tsx
92046
- init_dist4();
92560
+ init_dist5();
92047
92561
  var RIGHT_ARROW = "\u25B6";
92048
92562
  var DOWN_ARROW = "\u2B07";
92049
92563
  var DEFAULT_COUNT_FORMATTER = (stat) => `${stat.name}: ${stat.count}`;