@deck.gl/google-maps 9.3.0-alpha.5 → 9.3.0-alpha.6
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
|
@@ -2781,11 +2781,11 @@ var __exports__ = (() => {
|
|
|
2781
2781
|
continue;
|
|
2782
2782
|
}
|
|
2783
2783
|
let lineNum = parseInt(lineNumber, 10);
|
|
2784
|
-
if (isNaN(lineNum)) {
|
|
2784
|
+
if (Number.isNaN(lineNum)) {
|
|
2785
2785
|
lineNum = 0;
|
|
2786
2786
|
}
|
|
2787
2787
|
let linePos = parseInt(linePosition, 10);
|
|
2788
|
-
if (isNaN(linePos)) {
|
|
2788
|
+
if (Number.isNaN(linePos)) {
|
|
2789
2789
|
linePos = 0;
|
|
2790
2790
|
}
|
|
2791
2791
|
messages.push({
|
|
@@ -4056,29 +4056,29 @@ ${source}`;
|
|
|
4056
4056
|
if (!options?.disableWarnings) {
|
|
4057
4057
|
import_core16.log.warn(`No binding "${name}" in render pipeline "${this.id}", expected one of ${validBindings}`, value)();
|
|
4058
4058
|
}
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4059
|
+
} else {
|
|
4060
|
+
if (!value) {
|
|
4061
|
+
import_core16.log.warn(`Unsetting binding "${name}" in render pipeline "${this.id}"`)();
|
|
4062
|
+
}
|
|
4063
|
+
switch (binding.type) {
|
|
4064
|
+
case "uniform":
|
|
4065
|
+
if (!(value instanceof WEBGLBuffer) && !(value.buffer instanceof WEBGLBuffer)) {
|
|
4066
|
+
throw new Error("buffer value");
|
|
4067
|
+
}
|
|
4068
|
+
break;
|
|
4069
|
+
case "texture":
|
|
4070
|
+
if (!(value instanceof WEBGLTextureView || value instanceof WEBGLTexture || value instanceof WEBGLFramebuffer)) {
|
|
4071
|
+
throw new Error(`${this} Bad texture binding for ${name}`);
|
|
4072
|
+
}
|
|
4073
|
+
break;
|
|
4074
|
+
case "sampler":
|
|
4075
|
+
import_core16.log.warn(`Ignoring sampler ${name}`)();
|
|
4076
|
+
break;
|
|
4077
|
+
default:
|
|
4078
|
+
throw new Error(binding.type);
|
|
4079
|
+
}
|
|
4080
|
+
this.bindings[name] = value;
|
|
4080
4081
|
}
|
|
4081
|
-
this.bindings[name] = value;
|
|
4082
4082
|
}
|
|
4083
4083
|
}
|
|
4084
4084
|
/** @todo needed for portable model
|
|
@@ -6133,7 +6133,10 @@ ${source}`;
|
|
|
6133
6133
|
this.spectorJS = initializeSpectorJS({ ...this.props, gl: this.handle });
|
|
6134
6134
|
const contextData = getWebGLContextData(this.handle);
|
|
6135
6135
|
contextData.device = this;
|
|
6136
|
-
|
|
6136
|
+
if (!contextData.extensions) {
|
|
6137
|
+
contextData.extensions = {};
|
|
6138
|
+
}
|
|
6139
|
+
this.extensions = contextData.extensions;
|
|
6137
6140
|
this.info = getDeviceInfo(this.gl, this.extensions);
|
|
6138
6141
|
this.limits = new WebGLDeviceLimits(this.gl);
|
|
6139
6142
|
this.features = new WebGLDeviceFeatures(this.gl, this.extensions, this.props._disabledFeatures);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-maps-overlay.d.ts","sourceRoot":"","sources":["../src/google-maps-overlay.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"google-maps-overlay.d.ts","sourceRoot":"","sources":["../src/google-maps-overlay.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAC,SAAS,EAAe,MAAM,eAAe,CAAC;AAkB3D,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,SAAS,EACP,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,eAAe,GACf,WAAW,GACX,kBAAkB,GAClB,YAAY,CACf,GAAG;IACF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,QAAQ,CAAuE;IACvF,OAAO,CAAC,mBAAmB,CAAwC;gBAEvD,KAAK,EAAE,sBAAsB;IAMzC,yCAAyC;IACzC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI;IA2BzC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;IAatD,uCAAuC;IACvC,UAAU,CAAC,MAAM,KAAA;;;;;;;;;;;;;;;IAIjB,yCAAyC;IACzC,mBAAmB,CAAC,MAAM,KAAA;;;;;;;;;;;;;;;IAI1B,gDAAgD;IAChD,WAAW,CAAC,MAAM,KAAA;;;;;;;;;;;;;;;IAIlB,+DAA+D;IAC/D,QAAQ;IASR,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IAenC;;;;;OAKG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IAqBzC,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;IAUzC,MAAM;IAKN,mBAAmB;IAiBnB,oBAAoB;IAsBpB,kBAAkB,CAAC,EAAC,EAAE,EAAC;;KAAA;IAgCvB,cAAc;IAQd,SAAS;IAIT,aAAa;IA8Bb,aAAa,CAAC,EAAC,EAAE,EAAE,WAAW,EAAC;;;KAAA;CAiDhC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// deck.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
/* global google */
|
|
5
4
|
import { GL } from '@luma.gl/webgl/constants';
|
|
6
5
|
import { WebGLDevice } from '@luma.gl/webgl';
|
|
7
6
|
import { createDeckInstance, destroyDeckInstance, getViewPropsFromOverlay, getViewPropsFromCoordinateTransformer, POSITIONING_CONTAINER_ID } from "./utils.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-maps-overlay.js","sourceRoot":"","sources":["../src/google-maps-overlay.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;
|
|
1
|
+
{"version":3,"file":"google-maps-overlay.js","sourceRoot":"","sources":["../src/google-maps-overlay.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,EAAE,EAAC,MAAM,0BAA0B,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,qCAAqC,EACrC,wBAAwB,EACzB,mBAAgB;AAKjB,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC;AACpC,MAAM,QAAQ,GAAiB;IAC7B,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,kBAAsE;IACjF,aAAa,OAAa;CAC3B,CAAC;AAEF,gEAAgE;AAChE,SAAS,IAAI,KAAI,CAAC;AAElB,MAAM,YAAY,GAAG;IACnB,WAAW,EAAE,IAAI;CAClB,CAAC;AAkBF,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAOpC,YAAY,KAA6B;QANjC,UAAK,GAA2B,EAAE,CAAC;QACnC,SAAI,GAA2B,IAAI,CAAC;QACpC,UAAK,GAAgB,IAAI,CAAC;QAC1B,aAAQ,GAAkE,IAAI,CAAC;QAC/E,wBAAmB,GAAmC,IAAI,CAAC;QAGjE,IAAI,CAAC,QAAQ,CAAC,EAAC,GAAG,YAAY,EAAE,GAAG,KAAK,EAAC,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;IAEhB,yCAAyC;IACzC,MAAM,CAAC,GAA2B;QAChC,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,EAAC,MAAM,EAAE,aAAa,EAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC1D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC7E,IAAI,CAAC,QAAyC,CAAC,aAAa,EAAE,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAC7C,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;gBACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,WAAW,CAAC,uBAAuB,EAAE,GAAG,EAAE;oBAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAsC;QAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;gBACzC,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;gBAC/C,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,UAAU,CAAC,MAAM;QACf,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,yCAAyC;IACzC,mBAAmB,CAAC,MAAM;QACxB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,gDAAgD;IAChD,WAAW,CAAC,MAAM;QAChB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,+DAA+D;IAC/D,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,cAAc,CAAC,GAAoB;QACjC,MAAM,EAAC,MAAM,EAAE,aAAa,EAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC1D,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,aAAa,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC7E,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,GAAoB;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC;QACvE,sDAAsD;QACtD,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACzD,kBAAkB,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,kBAAkB,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,kBAAkB,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;QAC9C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAErC,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QACrB,OAAO,CAAC,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,oBAAoB,CAAC,GAAoB;QACvC,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9C,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,mDAAmD;QACnD,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpF,CAAC;IAED,mBAAmB;QACjB,kEAAkE;QAClE,uEAAuE;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,mBAA8C,CAAC;QACpE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,EAAE,GAAG,wBAAwB,CAAC;YACxC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YACtC,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QAED,mDAAmD;QACnD,4EAA4E;QAC5E,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,oBAAoB;QAClB,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI;aACxB,MAAM,EAAE;aACR,aAAa,CAAC,IAAI,wBAAwB,EAAE,CAAgB,CAAC;QAChE,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAyB,CAAC;QAClE,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC;QACvC,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC;QAEzC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;QACrC,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;QACvC,8EAA8E;QAC9E,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC;QACzC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,kBAAkB,CAAC,EAAC,EAAE,EAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjB,IAAI,CAAC,QAAyC,CAAC,aAAa,EAAE,CAAC;YAClE,CAAC;QACH,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE;YACpE,EAAE;YACF,aAAa;YACb,GAAG,IAAI,CAAC,KAAK;SACd,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,iDAAiD;QACjD,mDAAmD;QACnD,oDAAoD;QACpD,wCAAwC;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAc,CAAC;QAC1C,aAAa,CAAC,YAAY,GAAG,GAAG,EAAE;YAChC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,OAAyB,CAAC;YACpD,8CAA8C;YAC9C,MAAM,MAAM,GAAW,IAAI,CAAC,MAAM,CAAC;YACnC,MAAM,CAAC,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE;gBAClC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAe,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YACH,EAAE,CAAC,UAAU,QAAkB,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAC,WAAW,EAAE,eAAe,EAAC,CAAC,CAAC;IACvD,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAExB,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAC,GAAG,uBAAuB,CACjE,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,QAAmC,CACzC,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,EAAE,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;YACjC,WAAW,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;YAC/B,WAAW,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QAC/B,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC;YACZ,KAAK;YACL,MAAM;YACN,uFAAuF;YACvF,SAAS,EAAE,EAAC,QAAQ,EAAE,GAAG,IAAI,EAAiB;SAC/C,CAAC,CAAC;QACH,sBAAsB;QACtB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,EAAC,EAAE,EAAE,WAAW,EAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjC,IAAI,CAAC,QAAQ,CAAC;YACZ,GAAG,qCAAqC,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;YAChE,kDAAkD;YAClD,GAAG,CAAC,WAAW,IAAI,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC;SAChD,CAAC,CAAC;QAEH,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACtC,mBAAmB;YACnB,MAAM,MAAM,GAAW,IAAI,CAAC,MAAM,CAAC;YAEnC,kEAAkE;YAClE,kCAAkC;YAClC,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAG,MAAM,CAAC,kBAAkB,OAAwB,CAAC;gBACvE,IAAI,CAAC,QAAQ,CAAC,EAAC,YAAY,EAAC,CAAC,CAAC;YAChC,CAAC;YAED,8DAA8D;YAC9D,qFAAqF;YACrF,mBAAmB;YACnB,IAAI,CAAC,WAAW,CAAC,EAAC,gBAAgB,EAAE,IAAI,EAAC,CAAC,CAAC;YAE3C,kEAAkE;YAClE,yBAAyB;YACzB,IAAI,MAAM,YAAY,WAAW,EAAE,CAAC;gBAClC,MAAM,CAAC,kBAAkB,CAAC;oBACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oBACnD,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;oBAClD,WAAW,EAAE,MAAY,CAAC,EAAE,GAAG,OAAa,CAAC,EAAE,GAAG,CAAC;iBACpD,CAAC,CAAC;gBAEH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE;oBACxC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;wBAChC,WAAW,EAAE,KAAK;qBACnB,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
|
package/dist/index.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/google-maps-overlay.ts", "../src/utils.ts"],
|
|
4
|
-
"sourcesContent": ["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport {default as GoogleMapsOverlay} from './google-maps-overlay';\nexport type {GoogleMapsOverlayProps} from './google-maps-overlay';\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global google */\nimport {GL, GLParameters} from '@luma.gl/webgl/constants';\nimport {WebGLDevice} from '@luma.gl/webgl';\nimport {\n createDeckInstance,\n destroyDeckInstance,\n getViewPropsFromOverlay,\n getViewPropsFromCoordinateTransformer,\n POSITIONING_CONTAINER_ID\n} from './utils';\nimport {Deck} from '@deck.gl/core';\n\nimport type {DeckProps, MapViewState} from '@deck.gl/core';\nimport type {Device} from '@luma.gl/core';\nconst HIDE_ALL_LAYERS = () => false;\nconst GL_STATE: GLParameters = {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n blendEquation: GL.FUNC_ADD\n};\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nconst defaultProps = {\n interleaved: true\n};\n\nexport type GoogleMapsOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'deviceProps'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\nexport default class GoogleMapsOverlay {\n private props: GoogleMapsOverlayProps = {};\n private _map: google.maps.Map | null = null;\n private _deck: Deck | null = null;\n private _overlay: google.maps.WebGLOverlayView | google.maps.OverlayView | null = null;\n private _positioningOverlay: google.maps.OverlayView | null = null;\n\n constructor(props: GoogleMapsOverlayProps) {\n this.setProps({...defaultProps, ...props});\n }\n\n /* Public API */\n\n /** Add/remove the overlay from a map. */\n setMap(map: google.maps.Map | null): void {\n if (map === this._map) {\n return;\n }\n\n const {VECTOR, UNINITIALIZED} = google.maps.RenderingType;\n if (this._map) {\n if (!map && this._map.getRenderingType() === VECTOR && this.props.interleaved) {\n (this._overlay as google.maps.WebGLOverlayView).requestRedraw();\n }\n this._overlay?.setMap(null);\n this._positioningOverlay?.setMap(null);\n this._map = null;\n }\n if (map) {\n this._map = map;\n const renderingType = map.getRenderingType();\n if (renderingType !== UNINITIALIZED) {\n this._createOverlay(map);\n } else {\n map.addListener('renderingtype_changed', () => {\n this._createOverlay(map);\n });\n }\n }\n }\n\n /**\n * Update (partial) props.\n */\n setProps(props: Partial<GoogleMapsOverlayProps>): void {\n Object.assign(this.props, props);\n if (this._deck) {\n const canvas = this._deck.getCanvas();\n if (props.style && canvas?.parentElement) {\n const parentStyle = canvas.parentElement.style;\n Object.assign(parentStyle, props.style);\n props.style = null;\n }\n this._deck.setProps(props);\n }\n }\n\n /** Equivalent of `deck.pickObject`. */\n pickObject(params) {\n return this._deck && this._deck.pickObject(params);\n }\n\n /** Equivalent of `deck.pickObjects`. */\n pickMultipleObjects(params) {\n return this._deck && this._deck.pickMultipleObjects(params);\n }\n\n /** Equivalent of `deck.pickMultipleObjects`. */\n pickObjects(params) {\n return this._deck && this._deck.pickObjects(params);\n }\n\n /** Remove the overlay and release all underlying resources. */\n finalize() {\n this.setMap(null);\n if (this._deck) {\n destroyDeckInstance(this._deck);\n this._deck = null;\n }\n }\n\n /* Private API */\n _createOverlay(map: google.maps.Map) {\n const {VECTOR, UNINITIALIZED} = google.maps.RenderingType;\n const renderingType = map.getRenderingType();\n if (renderingType === UNINITIALIZED) {\n return;\n }\n\n const isVectorMap = renderingType === VECTOR && google.maps.WebGLOverlayView;\n if (isVectorMap) {\n this._createOverlayVector(map);\n } else {\n this._createOverlayRaster(map);\n }\n }\n\n /**\n * Create overlays for vector maps.\n * Uses OverlayView for DOM positioning (correct z-index) and\n * WebGLOverlayView for camera data (smooth animations).\n * In interleaved mode, WebGLOverlayView also provides the shared GL context.\n */\n _createOverlayVector(map: google.maps.Map) {\n const interleaved = this.props.interleaved ?? defaultProps.interleaved;\n // Create positioning overlay for proper DOM placement\n const positioningOverlay = new google.maps.OverlayView();\n positioningOverlay.onAdd = this._onAddVectorOverlay.bind(this);\n positioningOverlay.draw = this._updateContainerSize.bind(this);\n positioningOverlay.onRemove = this._onRemove.bind(this);\n this._positioningOverlay = positioningOverlay;\n this._positioningOverlay.setMap(map);\n\n // Create WebGL overlay for camera data (and GL context if interleaved)\n const overlay = new google.maps.WebGLOverlayView();\n overlay.onAdd = noop;\n overlay.onContextRestored = interleaved ? this._onContextRestored.bind(this) : noop;\n overlay.onDraw = this._onDrawVector.bind(this);\n overlay.onContextLost = interleaved ? this._onContextLost.bind(this) : noop;\n overlay.onRemove = interleaved ? this._onRemove.bind(this) : noop;\n this._overlay = overlay;\n this._overlay.setMap(map);\n }\n\n _createOverlayRaster(map: google.maps.Map) {\n // Raster maps use standard OverlayView\n const overlay = new google.maps.OverlayView();\n overlay.onAdd = this._onAdd.bind(this);\n overlay.draw = this._onDrawRaster.bind(this);\n overlay.onRemove = this._onRemove.bind(this);\n this._overlay = overlay;\n this._overlay.setMap(map);\n }\n\n _onAdd() {\n // @ts-ignore (TS2345) map is defined at this stage\n this._deck = createDeckInstance(this._map, this._overlay, this._deck, this.props);\n }\n\n _onAddVectorOverlay() {\n // For non-interleaved vector maps, create a positioning container\n // that Google Maps will place correctly in the DOM with proper z-index\n const overlay = this._positioningOverlay as google.maps.OverlayView;\n const panes = overlay.getPanes();\n if (panes) {\n const container = document.createElement('div');\n container.id = POSITIONING_CONTAINER_ID;\n container.style.position = 'absolute';\n panes.overlayLayer.appendChild(container);\n }\n\n // @ts-ignore (TS2345) map is defined at this stage\n // Pass the positioning overlay for deck canvas creation (not WebGL overlay)\n this._deck = createDeckInstance(this._map, overlay, this._deck, this.props);\n }\n\n _updateContainerSize() {\n // Update positioning container size and position to match map\n if (!this._map) return;\n\n const container = this._map\n .getDiv()\n .querySelector(`#${POSITIONING_CONTAINER_ID}`) as HTMLElement;\n if (!container) return;\n\n const mapContainer = this._map.getDiv().firstChild as HTMLElement;\n if (!mapContainer) return;\n\n const width = mapContainer.offsetWidth;\n const height = mapContainer.offsetHeight;\n\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n // Position at top-left (overlayLayer uses centered coords, so offset by half)\n container.style.left = `${-width / 2}px`;\n container.style.top = `${-height / 2}px`;\n }\n\n _onContextRestored({gl}) {\n if (!this._map || !this._overlay) {\n return;\n }\n const _customRender = () => {\n if (this._overlay) {\n (this._overlay as google.maps.WebGLOverlayView).requestRedraw();\n }\n };\n const deck = createDeckInstance(this._map, this._overlay, this._deck, {\n gl,\n _customRender,\n ...this.props\n });\n this._deck = deck;\n\n // By default, animationLoop._renderFrame invokes\n // animationLoop.onRender. We override this to wrap\n // in withParameters so we don't modify the GL state\n // @ts-ignore accessing protected member\n const animationLoop = deck.animationLoop!;\n animationLoop._renderFrame = () => {\n const ab = gl.getParameter(gl.ARRAY_BUFFER_BINDING);\n // @ts-expect-error accessing protected member\n const device: Device = deck.device;\n device.withParametersWebGL({}, () => {\n animationLoop.props.onRender(animationLoop.animationProps!);\n });\n gl.bindBuffer(gl.ARRAY_BUFFER, ab);\n };\n }\n\n _onContextLost() {\n // TODO this isn't working\n if (this._deck) {\n destroyDeckInstance(this._deck);\n this._deck = null;\n }\n }\n\n _onRemove() {\n this._deck?.setProps({layerFilter: HIDE_ALL_LAYERS});\n }\n\n _onDrawRaster() {\n if (!this._deck || !this._map) {\n return;\n }\n const deck = this._deck;\n\n const {width, height, left, top, ...rest} = getViewPropsFromOverlay(\n this._map,\n this._overlay as google.maps.OverlayView\n );\n\n const canvas = deck.getCanvas();\n const parent = canvas?.parentElement || deck.props.parent;\n if (parent) {\n const parentStyle = parent.style;\n parentStyle.left = `${left}px`;\n parentStyle.top = `${top}px`;\n }\n\n const altitude = 10000;\n deck.setProps({\n width,\n height,\n // @ts-expect-error altitude is accepted by WebMercatorViewport but not exposed by type\n viewState: {altitude, ...rest} as MapViewState\n });\n // Deck is initialized\n deck.redraw();\n }\n\n _onDrawVector({gl, transformer}) {\n if (!this._deck || !this._map) {\n return;\n }\n\n const deck = this._deck;\n const {interleaved} = this.props;\n\n deck.setProps({\n ...getViewPropsFromCoordinateTransformer(this._map, transformer),\n // Using external gl context - do not set css size\n ...(interleaved && {width: null, height: null})\n });\n\n if (interleaved && deck.isInitialized) {\n // @ts-expect-error\n const device: Device = deck.device;\n\n // As an optimization, some renders are to an separate framebuffer\n // which we need to pass onto deck\n if (device instanceof WebGLDevice) {\n const _framebuffer = device.getParametersWebGL(GL.FRAMEBUFFER_BINDING);\n deck.setProps({_framebuffer});\n }\n\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n\n // Workaround for bug in Google maps where viewport state is wrong\n // TODO remove once fixed\n if (device instanceof WebGLDevice) {\n device.setParametersWebGL({\n viewport: [0, 0, gl.canvas.width, gl.canvas.height],\n scissor: [0, 0, gl.canvas.width, gl.canvas.height],\n stencilFunc: [gl.ALWAYS, 0, 255, gl.ALWAYS, 0, 255]\n });\n\n device.withParametersWebGL(GL_STATE, () => {\n deck._drawLayers('google-vector', {\n clearCanvas: false\n });\n });\n }\n } else if (!interleaved) {\n deck.redraw();\n }\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global google, document */\nimport {Deck, MapView} from '@deck.gl/core';\nimport {Matrix4, Vector2} from '@math.gl/core';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nexport const POSITIONING_CONTAINER_ID = 'deck-gl-google-maps-container';\n\n// https://en.wikipedia.org/wiki/Web_Mercator_projection#Formulas\nconst MAX_LATITUDE = 85.05113;\n\ntype UserData = {\n _googleMap: google.maps.Map;\n _eventListeners: Record<string, google.maps.MapsEventListener | null>;\n};\n\n/**\n * Get a new deck instance\n * @param map (google.maps.Map) - The parent Map instance\n * @param overlay (google.maps.OverlayView) - A maps Overlay instance\n * @param [deck] (Deck) - a previously created instances\n */\nexport function createDeckInstance(\n map: google.maps.Map,\n overlay: google.maps.OverlayView | google.maps.WebGLOverlayView,\n deck: Deck | null | undefined,\n props\n): Deck {\n if (deck) {\n if (deck.userData._googleMap === map) {\n return deck;\n }\n // deck instance was created for a different map\n destroyDeckInstance(deck);\n }\n\n const eventListeners = {\n click: null,\n rightclick: null,\n dblclick: null,\n mousemove: null,\n mouseout: null\n };\n\n const newDeck = new Deck({\n ...props,\n // Default to true for high-DPI displays, but allow user override\n useDevicePixels: props.useDevicePixels ?? true,\n style: props.interleaved ? null : {pointerEvents: 'none'},\n parent: getContainer(overlay, props.style),\n views: new MapView({repeat: true}),\n initialViewState: {\n longitude: 0,\n latitude: 0,\n zoom: 1\n },\n controller: false\n });\n\n // Register event listeners\n for (const eventType in eventListeners) {\n eventListeners[eventType] = map.addListener(eventType, evt =>\n handleMouseEvent(newDeck, eventType, evt)\n );\n }\n\n // Attach userData directly to Deck instance\n (newDeck.userData as UserData)._googleMap = map;\n (newDeck.userData as UserData)._eventListeners = eventListeners;\n\n return newDeck;\n}\n\n// Create a container that will host the deck canvas and tooltip\nfunction getContainer(\n overlay: google.maps.OverlayView | google.maps.WebGLOverlayView,\n style?: Partial<CSSStyleDeclaration>\n): HTMLElement {\n const container = document.createElement('div');\n container.style.position = 'absolute';\n Object.assign(container.style, style);\n\n const googleMapsContainer = (overlay.getMap() as google.maps.Map).getDiv();\n\n // Check if there's a pre-created positioning container (for vector maps)\n const positioningContainer = googleMapsContainer.querySelector(`#${POSITIONING_CONTAINER_ID}`);\n\n if (positioningContainer) {\n // Vector maps (both interleaved and non-interleaved): Use positioning container\n positioningContainer.appendChild(container);\n } else if ('getPanes' in overlay) {\n // Raster maps: Append to overlayLayer pane\n overlay.getPanes()?.overlayLayer.appendChild(container);\n }\n return container;\n}\n\n/**\n * Safely remove a deck instance\n * @param deck (Deck) - a previously created instances\n */\nexport function destroyDeckInstance(deck: Deck) {\n const {_eventListeners: eventListeners} = deck.userData;\n\n // Unregister event listeners\n for (const eventType in eventListeners) {\n // Check that event listener was set before trying to remove.\n if (eventListeners[eventType]) {\n eventListeners[eventType].remove();\n }\n }\n\n deck.finalize();\n}\n\n/* eslint-disable max-statements */\n/**\n * Get the current view state\n * @param map (google.maps.Map) - The parent Map instance\n * @param overlay (google.maps.OverlayView) - A maps Overlay instance\n */\n// eslint-disable-next-line complexity\nexport function getViewPropsFromOverlay(map: google.maps.Map, overlay: google.maps.OverlayView) {\n const {width, height} = getMapSize(map);\n\n // Canvas position relative to draggable map's container depends on\n // overlayView's projection, not the map's. Have to use the center of the\n // map for this, not the top left, for the same reason as above.\n const projection = overlay.getProjection();\n\n const bounds = map.getBounds();\n if (!bounds) {\n return {width, height, left: 0, top: 0};\n }\n\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n const topRight = projection.fromLatLngToDivPixel(ne);\n const bottomLeft = projection.fromLatLngToDivPixel(sw);\n\n // google maps places overlays in a container anchored at the map center.\n // the container CSS is manipulated during dragging.\n // We need to update left/top of the deck canvas to match the base map.\n const centerLngLat = pixelToLngLat(projection, width / 2, height / 2);\n const centerH = new google.maps.LatLng(0, centerLngLat[0]);\n const centerContainerPx = projection.fromLatLngToContainerPixel(centerH);\n const centerDivPx = projection.fromLatLngToDivPixel(centerH);\n\n if (!topRight || !bottomLeft || !centerDivPx || !centerContainerPx) {\n return {width, height, left: 0, top: 0};\n }\n const leftOffset = Math.round(centerDivPx.x - centerContainerPx.x);\n let topOffset = centerDivPx.y - centerContainerPx.y;\n\n const topLngLat = pixelToLngLat(projection, width / 2, 0);\n const bottomLngLat = pixelToLngLat(projection, width / 2, height);\n\n // Compute fractional center.\n let latitude = centerLngLat[1];\n const longitude = centerLngLat[0];\n\n // Adjust vertical offset - limit latitude\n if (Math.abs(latitude) > MAX_LATITUDE) {\n latitude = latitude > 0 ? MAX_LATITUDE : -MAX_LATITUDE;\n const center = new google.maps.LatLng(latitude, longitude);\n const centerPx = projection.fromLatLngToContainerPixel(center);\n // @ts-ignore (TS2531) Object is possibly 'null'\n topOffset += centerPx.y - height / 2;\n }\n topOffset = Math.round(topOffset);\n\n // Compute fractional bearing\n const delta = new Vector2(topLngLat).sub(bottomLngLat);\n let bearing = (180 * delta.verticalAngle()) / Math.PI;\n if (bearing < 0) bearing += 360;\n\n // Maps sometimes returns undefined instead of 0\n const heading = map.getHeading() || 0;\n\n let zoom = (map.getZoom() as number) - 1;\n\n let scale;\n\n if (bearing === 0) {\n // At full world view (always unrotated) simply compare height, as diagonal\n // is incorrect due to multiple world copies\n scale = height ? (bottomLeft.y - topRight.y) / height : 1;\n } else if (bearing === heading) {\n // Fractional zoom calculation only correct when bearing is not animating\n const viewDiagonal = new Vector2([topRight.x, topRight.y])\n .sub([bottomLeft.x, bottomLeft.y])\n .len();\n const mapDiagonal = new Vector2([width, -height]).len();\n scale = mapDiagonal ? viewDiagonal / mapDiagonal : 1;\n }\n\n // When resizing aggressively, occasionally ne and sw are the same points\n // See https://github.com/visgl/deck.gl/issues/4218\n zoom += Math.log2(scale || 1);\n\n return {\n width,\n height,\n left: leftOffset,\n top: topOffset,\n zoom,\n bearing,\n pitch: map.getTilt(),\n latitude,\n longitude\n };\n}\n\n/* eslint-enable max-statements */\n\n/**\n * Get the current view state\n * @param map (google.maps.Map) - The parent Map instance\n * @param transformer (google.maps.CoordinateTransformer) - A CoordinateTransformer instance\n */\nexport function getViewPropsFromCoordinateTransformer(\n map: google.maps.Map,\n transformer: google.maps.CoordinateTransformer\n) {\n const {width, height} = getMapSize(map);\n const {center, heading: bearing, tilt: pitch, zoom} = transformer.getCameraParams();\n\n // Match Google projection matrix\n const fovy = 25;\n const aspect = height ? width / height : 1;\n\n // Match depth range (crucial for correct z-sorting)\n const near = 0.75;\n const far = 300000000000000;\n // const far = Infinity;\n\n const projectionMatrix = new Matrix4().perspective({\n fovy: (fovy * Math.PI) / 180,\n aspect,\n near,\n far\n });\n const focalDistance = 0.5 * projectionMatrix[5];\n\n return {\n width,\n height,\n viewState: {\n altitude: focalDistance,\n bearing,\n latitude: center.lat(),\n longitude: center.lng(),\n pitch,\n projectionMatrix,\n repeat: true,\n zoom: zoom - 1\n }\n };\n}\n\nfunction getMapSize(map: google.maps.Map): {width: number; height: number} {\n // The map fills the container div unless it's in fullscreen mode\n // at which point the first child of the container is promoted\n const container = map.getDiv().firstChild as HTMLElement | null;\n return {\n // @ts-ignore (TS2531) Object is possibly 'null'\n width: container.offsetWidth,\n // @ts-ignore (TS2531) Object is possibly 'null'\n height: container.offsetHeight\n };\n}\n\nfunction pixelToLngLat(\n projection: google.maps.MapCanvasProjection,\n x: number,\n y: number\n): [longitude: number, latitude: number] {\n const point = new google.maps.Point(x, y);\n const latLng = projection.fromContainerPixelToLatLng(point);\n // @ts-ignore (TS2531) Object is possibly 'null'\n return [latLng.lng(), latLng.lat()];\n}\n\nfunction getEventPixel(event, deck: Deck): {x: number; y: number} {\n if (event.pixel) {\n return event.pixel;\n }\n // event.pixel may not exist when clicking on a POI\n // https://developers.google.com/maps/documentation/javascript/reference/map#MouseEvent\n const point = deck.getViewports()[0].project([event.latLng.lng(), event.latLng.lat()]);\n return {\n x: point[0],\n y: point[1]\n };\n}\n\n// Triggers picking on a mouse event\nfunction handleMouseEvent(deck: Deck, type: string, event) {\n if (!deck.isInitialized) {\n return;\n }\n\n const mockEvent: Record<string, any> = {\n type,\n offsetCenter: getEventPixel(event, deck),\n srcEvent: event\n };\n\n switch (type) {\n case 'click':\n case 'rightclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 1;\n // Hack: because we do not listen to pointer down, perform picking now\n deck._onPointerDown(mockEvent as MjolnirPointerEvent);\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;
|
|
4
|
+
"sourcesContent": ["// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport {default as GoogleMapsOverlay} from './google-maps-overlay';\nexport type {GoogleMapsOverlayProps} from './google-maps-overlay';\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global google */\nimport type {GLParameters} from '@luma.gl/webgl/constants';\nimport {GL} from '@luma.gl/webgl/constants';\nimport {WebGLDevice} from '@luma.gl/webgl';\nimport {\n createDeckInstance,\n destroyDeckInstance,\n getViewPropsFromOverlay,\n getViewPropsFromCoordinateTransformer,\n POSITIONING_CONTAINER_ID\n} from './utils';\nimport {Deck} from '@deck.gl/core';\n\nimport type {DeckProps, MapViewState} from '@deck.gl/core';\nimport type {Device} from '@luma.gl/core';\nconst HIDE_ALL_LAYERS = () => false;\nconst GL_STATE: GLParameters = {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n blendEquation: GL.FUNC_ADD\n};\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n\nconst defaultProps = {\n interleaved: true\n};\n\nexport type GoogleMapsOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'deviceProps'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\nexport default class GoogleMapsOverlay {\n private props: GoogleMapsOverlayProps = {};\n private _map: google.maps.Map | null = null;\n private _deck: Deck | null = null;\n private _overlay: google.maps.WebGLOverlayView | google.maps.OverlayView | null = null;\n private _positioningOverlay: google.maps.OverlayView | null = null;\n\n constructor(props: GoogleMapsOverlayProps) {\n this.setProps({...defaultProps, ...props});\n }\n\n /* Public API */\n\n /** Add/remove the overlay from a map. */\n setMap(map: google.maps.Map | null): void {\n if (map === this._map) {\n return;\n }\n\n const {VECTOR, UNINITIALIZED} = google.maps.RenderingType;\n if (this._map) {\n if (!map && this._map.getRenderingType() === VECTOR && this.props.interleaved) {\n (this._overlay as google.maps.WebGLOverlayView).requestRedraw();\n }\n this._overlay?.setMap(null);\n this._positioningOverlay?.setMap(null);\n this._map = null;\n }\n if (map) {\n this._map = map;\n const renderingType = map.getRenderingType();\n if (renderingType !== UNINITIALIZED) {\n this._createOverlay(map);\n } else {\n map.addListener('renderingtype_changed', () => {\n this._createOverlay(map);\n });\n }\n }\n }\n\n /**\n * Update (partial) props.\n */\n setProps(props: Partial<GoogleMapsOverlayProps>): void {\n Object.assign(this.props, props);\n if (this._deck) {\n const canvas = this._deck.getCanvas();\n if (props.style && canvas?.parentElement) {\n const parentStyle = canvas.parentElement.style;\n Object.assign(parentStyle, props.style);\n props.style = null;\n }\n this._deck.setProps(props);\n }\n }\n\n /** Equivalent of `deck.pickObject`. */\n pickObject(params) {\n return this._deck && this._deck.pickObject(params);\n }\n\n /** Equivalent of `deck.pickObjects`. */\n pickMultipleObjects(params) {\n return this._deck && this._deck.pickMultipleObjects(params);\n }\n\n /** Equivalent of `deck.pickMultipleObjects`. */\n pickObjects(params) {\n return this._deck && this._deck.pickObjects(params);\n }\n\n /** Remove the overlay and release all underlying resources. */\n finalize() {\n this.setMap(null);\n if (this._deck) {\n destroyDeckInstance(this._deck);\n this._deck = null;\n }\n }\n\n /* Private API */\n _createOverlay(map: google.maps.Map) {\n const {VECTOR, UNINITIALIZED} = google.maps.RenderingType;\n const renderingType = map.getRenderingType();\n if (renderingType === UNINITIALIZED) {\n return;\n }\n\n const isVectorMap = renderingType === VECTOR && google.maps.WebGLOverlayView;\n if (isVectorMap) {\n this._createOverlayVector(map);\n } else {\n this._createOverlayRaster(map);\n }\n }\n\n /**\n * Create overlays for vector maps.\n * Uses OverlayView for DOM positioning (correct z-index) and\n * WebGLOverlayView for camera data (smooth animations).\n * In interleaved mode, WebGLOverlayView also provides the shared GL context.\n */\n _createOverlayVector(map: google.maps.Map) {\n const interleaved = this.props.interleaved ?? defaultProps.interleaved;\n // Create positioning overlay for proper DOM placement\n const positioningOverlay = new google.maps.OverlayView();\n positioningOverlay.onAdd = this._onAddVectorOverlay.bind(this);\n positioningOverlay.draw = this._updateContainerSize.bind(this);\n positioningOverlay.onRemove = this._onRemove.bind(this);\n this._positioningOverlay = positioningOverlay;\n this._positioningOverlay.setMap(map);\n\n // Create WebGL overlay for camera data (and GL context if interleaved)\n const overlay = new google.maps.WebGLOverlayView();\n overlay.onAdd = noop;\n overlay.onContextRestored = interleaved ? this._onContextRestored.bind(this) : noop;\n overlay.onDraw = this._onDrawVector.bind(this);\n overlay.onContextLost = interleaved ? this._onContextLost.bind(this) : noop;\n overlay.onRemove = interleaved ? this._onRemove.bind(this) : noop;\n this._overlay = overlay;\n this._overlay.setMap(map);\n }\n\n _createOverlayRaster(map: google.maps.Map) {\n // Raster maps use standard OverlayView\n const overlay = new google.maps.OverlayView();\n overlay.onAdd = this._onAdd.bind(this);\n overlay.draw = this._onDrawRaster.bind(this);\n overlay.onRemove = this._onRemove.bind(this);\n this._overlay = overlay;\n this._overlay.setMap(map);\n }\n\n _onAdd() {\n // @ts-ignore (TS2345) map is defined at this stage\n this._deck = createDeckInstance(this._map, this._overlay, this._deck, this.props);\n }\n\n _onAddVectorOverlay() {\n // For non-interleaved vector maps, create a positioning container\n // that Google Maps will place correctly in the DOM with proper z-index\n const overlay = this._positioningOverlay as google.maps.OverlayView;\n const panes = overlay.getPanes();\n if (panes) {\n const container = document.createElement('div');\n container.id = POSITIONING_CONTAINER_ID;\n container.style.position = 'absolute';\n panes.overlayLayer.appendChild(container);\n }\n\n // @ts-ignore (TS2345) map is defined at this stage\n // Pass the positioning overlay for deck canvas creation (not WebGL overlay)\n this._deck = createDeckInstance(this._map, overlay, this._deck, this.props);\n }\n\n _updateContainerSize() {\n // Update positioning container size and position to match map\n if (!this._map) return;\n\n const container = this._map\n .getDiv()\n .querySelector(`#${POSITIONING_CONTAINER_ID}`) as HTMLElement;\n if (!container) return;\n\n const mapContainer = this._map.getDiv().firstChild as HTMLElement;\n if (!mapContainer) return;\n\n const width = mapContainer.offsetWidth;\n const height = mapContainer.offsetHeight;\n\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n // Position at top-left (overlayLayer uses centered coords, so offset by half)\n container.style.left = `${-width / 2}px`;\n container.style.top = `${-height / 2}px`;\n }\n\n _onContextRestored({gl}) {\n if (!this._map || !this._overlay) {\n return;\n }\n const _customRender = () => {\n if (this._overlay) {\n (this._overlay as google.maps.WebGLOverlayView).requestRedraw();\n }\n };\n const deck = createDeckInstance(this._map, this._overlay, this._deck, {\n gl,\n _customRender,\n ...this.props\n });\n this._deck = deck;\n\n // By default, animationLoop._renderFrame invokes\n // animationLoop.onRender. We override this to wrap\n // in withParameters so we don't modify the GL state\n // @ts-ignore accessing protected member\n const animationLoop = deck.animationLoop!;\n animationLoop._renderFrame = () => {\n const ab = gl.getParameter(gl.ARRAY_BUFFER_BINDING);\n // @ts-expect-error accessing protected member\n const device: Device = deck.device;\n device.withParametersWebGL({}, () => {\n animationLoop.props.onRender(animationLoop.animationProps!);\n });\n gl.bindBuffer(gl.ARRAY_BUFFER, ab);\n };\n }\n\n _onContextLost() {\n // TODO this isn't working\n if (this._deck) {\n destroyDeckInstance(this._deck);\n this._deck = null;\n }\n }\n\n _onRemove() {\n this._deck?.setProps({layerFilter: HIDE_ALL_LAYERS});\n }\n\n _onDrawRaster() {\n if (!this._deck || !this._map) {\n return;\n }\n const deck = this._deck;\n\n const {width, height, left, top, ...rest} = getViewPropsFromOverlay(\n this._map,\n this._overlay as google.maps.OverlayView\n );\n\n const canvas = deck.getCanvas();\n const parent = canvas?.parentElement || deck.props.parent;\n if (parent) {\n const parentStyle = parent.style;\n parentStyle.left = `${left}px`;\n parentStyle.top = `${top}px`;\n }\n\n const altitude = 10000;\n deck.setProps({\n width,\n height,\n // @ts-expect-error altitude is accepted by WebMercatorViewport but not exposed by type\n viewState: {altitude, ...rest} as MapViewState\n });\n // Deck is initialized\n deck.redraw();\n }\n\n _onDrawVector({gl, transformer}) {\n if (!this._deck || !this._map) {\n return;\n }\n\n const deck = this._deck;\n const {interleaved} = this.props;\n\n deck.setProps({\n ...getViewPropsFromCoordinateTransformer(this._map, transformer),\n // Using external gl context - do not set css size\n ...(interleaved && {width: null, height: null})\n });\n\n if (interleaved && deck.isInitialized) {\n // @ts-expect-error\n const device: Device = deck.device;\n\n // As an optimization, some renders are to an separate framebuffer\n // which we need to pass onto deck\n if (device instanceof WebGLDevice) {\n const _framebuffer = device.getParametersWebGL(GL.FRAMEBUFFER_BINDING);\n deck.setProps({_framebuffer});\n }\n\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n\n // Workaround for bug in Google maps where viewport state is wrong\n // TODO remove once fixed\n if (device instanceof WebGLDevice) {\n device.setParametersWebGL({\n viewport: [0, 0, gl.canvas.width, gl.canvas.height],\n scissor: [0, 0, gl.canvas.width, gl.canvas.height],\n stencilFunc: [gl.ALWAYS, 0, 255, gl.ALWAYS, 0, 255]\n });\n\n device.withParametersWebGL(GL_STATE, () => {\n deck._drawLayers('google-vector', {\n clearCanvas: false\n });\n });\n }\n } else if (!interleaved) {\n deck.redraw();\n }\n }\n}\n", "// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/* global google, document */\nimport {Deck, MapView} from '@deck.gl/core';\nimport {Matrix4, Vector2} from '@math.gl/core';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nexport const POSITIONING_CONTAINER_ID = 'deck-gl-google-maps-container';\n\n// https://en.wikipedia.org/wiki/Web_Mercator_projection#Formulas\nconst MAX_LATITUDE = 85.05113;\n\ntype UserData = {\n _googleMap: google.maps.Map;\n _eventListeners: Record<string, google.maps.MapsEventListener | null>;\n};\n\n/**\n * Get a new deck instance\n * @param map (google.maps.Map) - The parent Map instance\n * @param overlay (google.maps.OverlayView) - A maps Overlay instance\n * @param [deck] (Deck) - a previously created instances\n */\nexport function createDeckInstance(\n map: google.maps.Map,\n overlay: google.maps.OverlayView | google.maps.WebGLOverlayView,\n deck: Deck | null | undefined,\n props\n): Deck {\n if (deck) {\n if (deck.userData._googleMap === map) {\n return deck;\n }\n // deck instance was created for a different map\n destroyDeckInstance(deck);\n }\n\n const eventListeners = {\n click: null,\n rightclick: null,\n dblclick: null,\n mousemove: null,\n mouseout: null\n };\n\n const newDeck = new Deck({\n ...props,\n // Default to true for high-DPI displays, but allow user override\n useDevicePixels: props.useDevicePixels ?? true,\n style: props.interleaved ? null : {pointerEvents: 'none'},\n parent: getContainer(overlay, props.style),\n views: new MapView({repeat: true}),\n initialViewState: {\n longitude: 0,\n latitude: 0,\n zoom: 1\n },\n controller: false\n });\n\n // Register event listeners\n for (const eventType in eventListeners) {\n eventListeners[eventType] = map.addListener(eventType, evt =>\n handleMouseEvent(newDeck, eventType, evt)\n );\n }\n\n // Attach userData directly to Deck instance\n (newDeck.userData as UserData)._googleMap = map;\n (newDeck.userData as UserData)._eventListeners = eventListeners;\n\n return newDeck;\n}\n\n// Create a container that will host the deck canvas and tooltip\nfunction getContainer(\n overlay: google.maps.OverlayView | google.maps.WebGLOverlayView,\n style?: Partial<CSSStyleDeclaration>\n): HTMLElement {\n const container = document.createElement('div');\n container.style.position = 'absolute';\n Object.assign(container.style, style);\n\n const googleMapsContainer = (overlay.getMap() as google.maps.Map).getDiv();\n\n // Check if there's a pre-created positioning container (for vector maps)\n const positioningContainer = googleMapsContainer.querySelector(`#${POSITIONING_CONTAINER_ID}`);\n\n if (positioningContainer) {\n // Vector maps (both interleaved and non-interleaved): Use positioning container\n positioningContainer.appendChild(container);\n } else if ('getPanes' in overlay) {\n // Raster maps: Append to overlayLayer pane\n overlay.getPanes()?.overlayLayer.appendChild(container);\n }\n return container;\n}\n\n/**\n * Safely remove a deck instance\n * @param deck (Deck) - a previously created instances\n */\nexport function destroyDeckInstance(deck: Deck) {\n const {_eventListeners: eventListeners} = deck.userData;\n\n // Unregister event listeners\n for (const eventType in eventListeners) {\n // Check that event listener was set before trying to remove.\n if (eventListeners[eventType]) {\n eventListeners[eventType].remove();\n }\n }\n\n deck.finalize();\n}\n\n/* eslint-disable max-statements */\n/**\n * Get the current view state\n * @param map (google.maps.Map) - The parent Map instance\n * @param overlay (google.maps.OverlayView) - A maps Overlay instance\n */\n// eslint-disable-next-line complexity\nexport function getViewPropsFromOverlay(map: google.maps.Map, overlay: google.maps.OverlayView) {\n const {width, height} = getMapSize(map);\n\n // Canvas position relative to draggable map's container depends on\n // overlayView's projection, not the map's. Have to use the center of the\n // map for this, not the top left, for the same reason as above.\n const projection = overlay.getProjection();\n\n const bounds = map.getBounds();\n if (!bounds) {\n return {width, height, left: 0, top: 0};\n }\n\n const ne = bounds.getNorthEast();\n const sw = bounds.getSouthWest();\n const topRight = projection.fromLatLngToDivPixel(ne);\n const bottomLeft = projection.fromLatLngToDivPixel(sw);\n\n // google maps places overlays in a container anchored at the map center.\n // the container CSS is manipulated during dragging.\n // We need to update left/top of the deck canvas to match the base map.\n const centerLngLat = pixelToLngLat(projection, width / 2, height / 2);\n const centerH = new google.maps.LatLng(0, centerLngLat[0]);\n const centerContainerPx = projection.fromLatLngToContainerPixel(centerH);\n const centerDivPx = projection.fromLatLngToDivPixel(centerH);\n\n if (!topRight || !bottomLeft || !centerDivPx || !centerContainerPx) {\n return {width, height, left: 0, top: 0};\n }\n const leftOffset = Math.round(centerDivPx.x - centerContainerPx.x);\n let topOffset = centerDivPx.y - centerContainerPx.y;\n\n const topLngLat = pixelToLngLat(projection, width / 2, 0);\n const bottomLngLat = pixelToLngLat(projection, width / 2, height);\n\n // Compute fractional center.\n let latitude = centerLngLat[1];\n const longitude = centerLngLat[0];\n\n // Adjust vertical offset - limit latitude\n if (Math.abs(latitude) > MAX_LATITUDE) {\n latitude = latitude > 0 ? MAX_LATITUDE : -MAX_LATITUDE;\n const center = new google.maps.LatLng(latitude, longitude);\n const centerPx = projection.fromLatLngToContainerPixel(center);\n // @ts-ignore (TS2531) Object is possibly 'null'\n topOffset += centerPx.y - height / 2;\n }\n topOffset = Math.round(topOffset);\n\n // Compute fractional bearing\n const delta = new Vector2(topLngLat).sub(bottomLngLat);\n let bearing = (180 * delta.verticalAngle()) / Math.PI;\n if (bearing < 0) bearing += 360;\n\n // Maps sometimes returns undefined instead of 0\n const heading = map.getHeading() || 0;\n\n let zoom = (map.getZoom() as number) - 1;\n\n let scale;\n\n if (bearing === 0) {\n // At full world view (always unrotated) simply compare height, as diagonal\n // is incorrect due to multiple world copies\n scale = height ? (bottomLeft.y - topRight.y) / height : 1;\n } else if (bearing === heading) {\n // Fractional zoom calculation only correct when bearing is not animating\n const viewDiagonal = new Vector2([topRight.x, topRight.y])\n .sub([bottomLeft.x, bottomLeft.y])\n .len();\n const mapDiagonal = new Vector2([width, -height]).len();\n scale = mapDiagonal ? viewDiagonal / mapDiagonal : 1;\n }\n\n // When resizing aggressively, occasionally ne and sw are the same points\n // See https://github.com/visgl/deck.gl/issues/4218\n zoom += Math.log2(scale || 1);\n\n return {\n width,\n height,\n left: leftOffset,\n top: topOffset,\n zoom,\n bearing,\n pitch: map.getTilt(),\n latitude,\n longitude\n };\n}\n\n/* eslint-enable max-statements */\n\n/**\n * Get the current view state\n * @param map (google.maps.Map) - The parent Map instance\n * @param transformer (google.maps.CoordinateTransformer) - A CoordinateTransformer instance\n */\nexport function getViewPropsFromCoordinateTransformer(\n map: google.maps.Map,\n transformer: google.maps.CoordinateTransformer\n) {\n const {width, height} = getMapSize(map);\n const {center, heading: bearing, tilt: pitch, zoom} = transformer.getCameraParams();\n\n // Match Google projection matrix\n const fovy = 25;\n const aspect = height ? width / height : 1;\n\n // Match depth range (crucial for correct z-sorting)\n const near = 0.75;\n const far = 300000000000000;\n // const far = Infinity;\n\n const projectionMatrix = new Matrix4().perspective({\n fovy: (fovy * Math.PI) / 180,\n aspect,\n near,\n far\n });\n const focalDistance = 0.5 * projectionMatrix[5];\n\n return {\n width,\n height,\n viewState: {\n altitude: focalDistance,\n bearing,\n latitude: center.lat(),\n longitude: center.lng(),\n pitch,\n projectionMatrix,\n repeat: true,\n zoom: zoom - 1\n }\n };\n}\n\nfunction getMapSize(map: google.maps.Map): {width: number; height: number} {\n // The map fills the container div unless it's in fullscreen mode\n // at which point the first child of the container is promoted\n const container = map.getDiv().firstChild as HTMLElement | null;\n return {\n // @ts-ignore (TS2531) Object is possibly 'null'\n width: container.offsetWidth,\n // @ts-ignore (TS2531) Object is possibly 'null'\n height: container.offsetHeight\n };\n}\n\nfunction pixelToLngLat(\n projection: google.maps.MapCanvasProjection,\n x: number,\n y: number\n): [longitude: number, latitude: number] {\n const point = new google.maps.Point(x, y);\n const latLng = projection.fromContainerPixelToLatLng(point);\n // @ts-ignore (TS2531) Object is possibly 'null'\n return [latLng.lng(), latLng.lat()];\n}\n\nfunction getEventPixel(event, deck: Deck): {x: number; y: number} {\n if (event.pixel) {\n return event.pixel;\n }\n // event.pixel may not exist when clicking on a POI\n // https://developers.google.com/maps/documentation/javascript/reference/map#MouseEvent\n const point = deck.getViewports()[0].project([event.latLng.lng(), event.latLng.lat()]);\n return {\n x: point[0],\n y: point[1]\n };\n}\n\n// Triggers picking on a mouse event\nfunction handleMouseEvent(deck: Deck, type: string, event) {\n if (!deck.isInitialized) {\n return;\n }\n\n const mockEvent: Record<string, any> = {\n type,\n offsetCenter: getEventPixel(event, deck),\n srcEvent: event\n };\n\n switch (type) {\n case 'click':\n case 'rightclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 1;\n // Hack: because we do not listen to pointer down, perform picking now\n deck._onPointerDown(mockEvent as MjolnirPointerEvent);\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_core"]
|
|
7
7
|
}
|
package/dist.min.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['deck'] = factory();
|
|
6
6
|
else root['deck'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var Oi=Object.create;var ye=Object.defineProperty;var Ii=Object.getOwnPropertyDescriptor;var Pi=Object.getOwnPropertyNames;var ui=Object.getPrototypeOf,Fi=Object.prototype.hasOwnProperty;var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var fr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Bi=(e,t)=>{for(var r in t)ye(e,r,{get:t[r],enumerable:!0})},De=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Pi(t))!Fi.call(e,i)&&i!==r&&ye(e,i,{get:()=>t[i],enumerable:!(s=Ii(t,i))||s.enumerable});return e},re=(e,t,r)=>(De(e,t,"default"),r&&De(r,t,"default")),C=(e,t,r)=>(r=e!=null?Oi(ui(e)):{},De(t||!e||!e.__esModule?ye(r,"default",{value:e,enumerable:!0}):r,e)),Di=e=>De(ye({},"__esModule",{value:!0}),e);var we=fr((io,hr)=>{hr.exports=globalThis.deck});var U,dr=g(()=>{(function(e){e[e.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",e[e.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",e[e.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",e[e.POINTS=0]="POINTS",e[e.LINES=1]="LINES",e[e.LINE_LOOP=2]="LINE_LOOP",e[e.LINE_STRIP=3]="LINE_STRIP",e[e.TRIANGLES=4]="TRIANGLES",e[e.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",e[e.TRIANGLE_FAN=6]="TRIANGLE_FAN",e[e.ZERO=0]="ZERO",e[e.ONE=1]="ONE",e[e.SRC_COLOR=768]="SRC_COLOR",e[e.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",e[e.SRC_ALPHA=770]="SRC_ALPHA",e[e.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",e[e.DST_ALPHA=772]="DST_ALPHA",e[e.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",e[e.DST_COLOR=774]="DST_COLOR",e[e.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",e[e.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",e[e.CONSTANT_COLOR=32769]="CONSTANT_COLOR",e[e.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",e[e.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",e[e.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",e[e.FUNC_ADD=32774]="FUNC_ADD",e[e.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",e[e.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",e[e.BLEND_EQUATION=32777]="BLEND_EQUATION",e[e.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",e[e.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",e[e.BLEND_DST_RGB=32968]="BLEND_DST_RGB",e[e.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",e[e.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",e[e.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",e[e.BLEND_COLOR=32773]="BLEND_COLOR",e[e.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",e[e.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",e[e.LINE_WIDTH=2849]="LINE_WIDTH",e[e.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",e[e.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",e[e.CULL_FACE_MODE=2885]="CULL_FACE_MODE",e[e.FRONT_FACE=2886]="FRONT_FACE",e[e.DEPTH_RANGE=2928]="DEPTH_RANGE",e[e.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",e[e.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",e[e.DEPTH_FUNC=2932]="DEPTH_FUNC",e[e.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",e[e.STENCIL_FUNC=2962]="STENCIL_FUNC",e[e.STENCIL_FAIL=2964]="STENCIL_FAIL",e[e.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",e[e.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",e[e.STENCIL_REF=2967]="STENCIL_REF",e[e.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",e[e.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",e[e.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",e[e.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",e[e.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",e[e.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",e[e.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",e[e.VIEWPORT=2978]="VIEWPORT",e[e.SCISSOR_BOX=3088]="SCISSOR_BOX",e[e.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",e[e.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",e[e.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",e[e.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",e[e.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",e[e.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",e[e.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",e[e.RED_BITS=3410]="RED_BITS",e[e.GREEN_BITS=3411]="GREEN_BITS",e[e.BLUE_BITS=3412]="BLUE_BITS",e[e.ALPHA_BITS=3413]="ALPHA_BITS",e[e.DEPTH_BITS=3414]="DEPTH_BITS",e[e.STENCIL_BITS=3415]="STENCIL_BITS",e[e.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",e[e.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",e[e.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",e[e.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",e[e.SAMPLES=32937]="SAMPLES",e[e.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",e[e.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",e[e.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",e[e.VENDOR=7936]="VENDOR",e[e.RENDERER=7937]="RENDERER",e[e.VERSION=7938]="VERSION",e[e.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",e[e.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",e[e.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",e[e.STATIC_DRAW=35044]="STATIC_DRAW",e[e.STREAM_DRAW=35040]="STREAM_DRAW",e[e.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",e[e.ARRAY_BUFFER=34962]="ARRAY_BUFFER",e[e.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",e[e.BUFFER_SIZE=34660]="BUFFER_SIZE",e[e.BUFFER_USAGE=34661]="BUFFER_USAGE",e[e.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",e[e.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",e[e.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",e[e.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",e[e.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",e[e.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",e[e.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",e[e.CULL_FACE=2884]="CULL_FACE",e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK",e[e.BLEND=3042]="BLEND",e[e.DEPTH_TEST=2929]="DEPTH_TEST",e[e.DITHER=3024]="DITHER",e[e.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",e[e.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",e[e.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",e[e.SCISSOR_TEST=3089]="SCISSOR_TEST",e[e.STENCIL_TEST=2960]="STENCIL_TEST",e[e.NO_ERROR=0]="NO_ERROR",e[e.INVALID_ENUM=1280]="INVALID_ENUM",e[e.INVALID_VALUE=1281]="INVALID_VALUE",e[e.INVALID_OPERATION=1282]="INVALID_OPERATION",e[e.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",e[e.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",e[e.CW=2304]="CW",e[e.CCW=2305]="CCW",e[e.DONT_CARE=4352]="DONT_CARE",e[e.FASTEST=4353]="FASTEST",e[e.NICEST=4354]="NICEST",e[e.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.INT=5124]="INT",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT",e[e.DOUBLE=5130]="DOUBLE",e[e.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",e[e.ALPHA=6406]="ALPHA",e[e.RGB=6407]="RGB",e[e.RGBA=6408]="RGBA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",e[e.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",e[e.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",e[e.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",e[e.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",e[e.VERTEX_SHADER=35633]="VERTEX_SHADER",e[e.COMPILE_STATUS=35713]="COMPILE_STATUS",e[e.DELETE_STATUS=35712]="DELETE_STATUS",e[e.LINK_STATUS=35714]="LINK_STATUS",e[e.VALIDATE_STATUS=35715]="VALIDATE_STATUS",e[e.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",e[e.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",e[e.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",e[e.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",e[e.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",e[e.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",e[e.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",e[e.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",e[e.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",e[e.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",e[e.SHADER_TYPE=35663]="SHADER_TYPE",e[e.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",e[e.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",e[e.NEVER=512]="NEVER",e[e.LESS=513]="LESS",e[e.EQUAL=514]="EQUAL",e[e.LEQUAL=515]="LEQUAL",e[e.GREATER=516]="GREATER",e[e.NOTEQUAL=517]="NOTEQUAL",e[e.GEQUAL=518]="GEQUAL",e[e.ALWAYS=519]="ALWAYS",e[e.KEEP=7680]="KEEP",e[e.REPLACE=7681]="REPLACE",e[e.INCR=7682]="INCR",e[e.DECR=7683]="DECR",e[e.INVERT=5386]="INVERT",e[e.INCR_WRAP=34055]="INCR_WRAP",e[e.DECR_WRAP=34056]="DECR_WRAP",e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9729]="LINEAR",e[e.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",e[e.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",e[e.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",e[e.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",e[e.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",e[e.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",e[e.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",e[e.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",e[e.TEXTURE_2D=3553]="TEXTURE_2D",e[e.TEXTURE=5890]="TEXTURE",e[e.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",e[e.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",e[e.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",e[e.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",e[e.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",e[e.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",e[e.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",e[e.TEXTURE0=33984]="TEXTURE0",e[e.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",e[e.REPEAT=10497]="REPEAT",e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",e[e.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",e[e.FLOAT_VEC2=35664]="FLOAT_VEC2",e[e.FLOAT_VEC3=35665]="FLOAT_VEC3",e[e.FLOAT_VEC4=35666]="FLOAT_VEC4",e[e.INT_VEC2=35667]="INT_VEC2",e[e.INT_VEC3=35668]="INT_VEC3",e[e.INT_VEC4=35669]="INT_VEC4",e[e.BOOL=35670]="BOOL",e[e.BOOL_VEC2=35671]="BOOL_VEC2",e[e.BOOL_VEC3=35672]="BOOL_VEC3",e[e.BOOL_VEC4=35673]="BOOL_VEC4",e[e.FLOAT_MAT2=35674]="FLOAT_MAT2",e[e.FLOAT_MAT3=35675]="FLOAT_MAT3",e[e.FLOAT_MAT4=35676]="FLOAT_MAT4",e[e.SAMPLER_2D=35678]="SAMPLER_2D",e[e.SAMPLER_CUBE=35680]="SAMPLER_CUBE",e[e.LOW_FLOAT=36336]="LOW_FLOAT",e[e.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",e[e.HIGH_FLOAT=36338]="HIGH_FLOAT",e[e.LOW_INT=36339]="LOW_INT",e[e.MEDIUM_INT=36340]="MEDIUM_INT",e[e.HIGH_INT=36341]="HIGH_INT",e[e.FRAMEBUFFER=36160]="FRAMEBUFFER",e[e.RENDERBUFFER=36161]="RENDERBUFFER",e[e.RGBA4=32854]="RGBA4",e[e.RGB5_A1=32855]="RGB5_A1",e[e.RGB565=36194]="RGB565",e[e.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",e[e.STENCIL_INDEX=6401]="STENCIL_INDEX",e[e.STENCIL_INDEX8=36168]="STENCIL_INDEX8",e[e.DEPTH_STENCIL=34041]="DEPTH_STENCIL",e[e.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",e[e.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",e[e.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",e[e.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",e[e.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",e[e.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",e[e.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",e[e.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",e[e.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",e[e.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",e[e.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",e[e.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",e[e.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",e[e.NONE=0]="NONE",e[e.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",e[e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",e[e.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",e[e.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",e[e.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",e[e.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",e[e.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",e[e.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",e[e.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",e[e.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",e[e.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",e[e.READ_BUFFER=3074]="READ_BUFFER",e[e.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",e[e.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",e[e.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",e[e.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",e[e.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",e[e.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",e[e.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",e[e.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",e[e.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",e[e.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",e[e.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",e[e.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",e[e.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",e[e.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",e[e.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",e[e.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",e[e.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",e[e.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",e[e.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",e[e.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",e[e.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",e[e.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",e[e.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",e[e.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",e[e.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",e[e.RED=6403]="RED",e[e.RGB8=32849]="RGB8",e[e.RGBA8=32856]="RGBA8",e[e.RGB10_A2=32857]="RGB10_A2",e[e.TEXTURE_3D=32879]="TEXTURE_3D",e[e.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",e[e.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",e[e.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",e[e.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",e[e.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",e[e.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",e[e.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",e[e.SRGB=35904]="SRGB",e[e.SRGB8=35905]="SRGB8",e[e.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",e[e.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",e[e.RGBA32F=34836]="RGBA32F",e[e.RGB32F=34837]="RGB32F",e[e.RGBA16F=34842]="RGBA16F",e[e.RGB16F=34843]="RGB16F",e[e.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",e[e.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",e[e.R11F_G11F_B10F=35898]="R11F_G11F_B10F",e[e.RGB9_E5=35901]="RGB9_E5",e[e.RGBA32UI=36208]="RGBA32UI",e[e.RGB32UI=36209]="RGB32UI",e[e.RGBA16UI=36214]="RGBA16UI",e[e.RGB16UI=36215]="RGB16UI",e[e.RGBA8UI=36220]="RGBA8UI",e[e.RGB8UI=36221]="RGB8UI",e[e.RGBA32I=36226]="RGBA32I",e[e.RGB32I=36227]="RGB32I",e[e.RGBA16I=36232]="RGBA16I",e[e.RGB16I=36233]="RGB16I",e[e.RGBA8I=36238]="RGBA8I",e[e.RGB8I=36239]="RGB8I",e[e.RED_INTEGER=36244]="RED_INTEGER",e[e.RGB_INTEGER=36248]="RGB_INTEGER",e[e.RGBA_INTEGER=36249]="RGBA_INTEGER",e[e.R8=33321]="R8",e[e.RG8=33323]="RG8",e[e.R16F=33325]="R16F",e[e.R32F=33326]="R32F",e[e.RG16F=33327]="RG16F",e[e.RG32F=33328]="RG32F",e[e.R8I=33329]="R8I",e[e.R8UI=33330]="R8UI",e[e.R16I=33331]="R16I",e[e.R16UI=33332]="R16UI",e[e.R32I=33333]="R32I",e[e.R32UI=33334]="R32UI",e[e.RG8I=33335]="RG8I",e[e.RG8UI=33336]="RG8UI",e[e.RG16I=33337]="RG16I",e[e.RG16UI=33338]="RG16UI",e[e.RG32I=33339]="RG32I",e[e.RG32UI=33340]="RG32UI",e[e.R8_SNORM=36756]="R8_SNORM",e[e.RG8_SNORM=36757]="RG8_SNORM",e[e.RGB8_SNORM=36758]="RGB8_SNORM",e[e.RGBA8_SNORM=36759]="RGBA8_SNORM",e[e.RGB10_A2UI=36975]="RGB10_A2UI",e[e.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",e[e.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",e[e.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",e[e.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",e[e.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",e[e.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",e[e.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",e[e.HALF_FLOAT=5131]="HALF_FLOAT",e[e.RG=33319]="RG",e[e.RG_INTEGER=33320]="RG_INTEGER",e[e.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",e[e.CURRENT_QUERY=34917]="CURRENT_QUERY",e[e.QUERY_RESULT=34918]="QUERY_RESULT",e[e.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",e[e.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",e[e.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",e[e.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",e[e.DRAW_BUFFER0=34853]="DRAW_BUFFER0",e[e.DRAW_BUFFER1=34854]="DRAW_BUFFER1",e[e.DRAW_BUFFER2=34855]="DRAW_BUFFER2",e[e.DRAW_BUFFER3=34856]="DRAW_BUFFER3",e[e.DRAW_BUFFER4=34857]="DRAW_BUFFER4",e[e.DRAW_BUFFER5=34858]="DRAW_BUFFER5",e[e.DRAW_BUFFER6=34859]="DRAW_BUFFER6",e[e.DRAW_BUFFER7=34860]="DRAW_BUFFER7",e[e.DRAW_BUFFER8=34861]="DRAW_BUFFER8",e[e.DRAW_BUFFER9=34862]="DRAW_BUFFER9",e[e.DRAW_BUFFER10=34863]="DRAW_BUFFER10",e[e.DRAW_BUFFER11=34864]="DRAW_BUFFER11",e[e.DRAW_BUFFER12=34865]="DRAW_BUFFER12",e[e.DRAW_BUFFER13=34866]="DRAW_BUFFER13",e[e.DRAW_BUFFER14=34867]="DRAW_BUFFER14",e[e.DRAW_BUFFER15=34868]="DRAW_BUFFER15",e[e.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",e[e.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",e[e.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",e[e.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",e[e.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",e[e.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",e[e.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",e[e.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",e[e.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",e[e.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",e[e.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",e[e.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",e[e.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",e[e.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",e[e.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",e[e.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",e[e.SAMPLER_3D=35679]="SAMPLER_3D",e[e.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",e[e.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",e[e.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",e[e.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",e[e.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",e[e.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",e[e.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",e[e.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",e[e.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",e[e.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",e[e.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",e[e.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",e[e.MAX_SAMPLES=36183]="MAX_SAMPLES",e[e.SAMPLER_BINDING=35097]="SAMPLER_BINDING",e[e.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",e[e.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",e[e.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",e[e.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",e[e.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",e[e.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",e[e.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",e[e.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",e[e.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",e[e.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",e[e.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",e[e.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",e[e.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",e[e.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",e[e.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",e[e.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",e[e.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",e[e.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",e[e.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",e[e.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",e[e.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",e[e.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",e[e.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",e[e.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",e[e.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",e[e.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",e[e.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",e[e.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",e[e.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",e[e.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",e[e.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",e[e.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",e[e.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",e[e.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",e[e.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",e[e.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",e[e.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",e[e.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",e[e.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",e[e.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",e[e.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",e[e.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",e[e.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",e[e.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",e[e.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",e[e.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",e[e.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",e[e.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",e[e.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",e[e.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",e[e.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",e[e.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",e[e.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",e[e.UNIFORM_TYPE=35383]="UNIFORM_TYPE",e[e.UNIFORM_SIZE=35384]="UNIFORM_SIZE",e[e.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",e[e.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",e[e.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",e[e.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",e[e.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",e[e.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",e[e.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",e[e.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",e[e.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",e[e.OBJECT_TYPE=37138]="OBJECT_TYPE",e[e.SYNC_CONDITION=37139]="SYNC_CONDITION",e[e.SYNC_STATUS=37140]="SYNC_STATUS",e[e.SYNC_FLAGS=37141]="SYNC_FLAGS",e[e.SYNC_FENCE=37142]="SYNC_FENCE",e[e.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",e[e.UNSIGNALED=37144]="UNSIGNALED",e[e.SIGNALED=37145]="SIGNALED",e[e.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",e[e.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",e[e.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",e[e.WAIT_FAILED=37149]="WAIT_FAILED",e[e.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",e[e.COLOR=6144]="COLOR",e[e.DEPTH=6145]="DEPTH",e[e.STENCIL=6146]="STENCIL",e[e.MIN=32775]="MIN",e[e.MAX=32776]="MAX",e[e.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",e[e.STREAM_READ=35041]="STREAM_READ",e[e.STREAM_COPY=35042]="STREAM_COPY",e[e.STATIC_READ=35045]="STATIC_READ",e[e.STATIC_COPY=35046]="STATIC_COPY",e[e.DYNAMIC_READ=35049]="DYNAMIC_READ",e[e.DYNAMIC_COPY=35050]="DYNAMIC_COPY",e[e.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",e[e.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",e[e.INVALID_INDEX=4294967295]="INVALID_INDEX",e[e.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",e[e.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",e[e.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",e[e.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",e[e.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",e[e.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",e[e.R16_EXT=33322]="R16_EXT",e[e.RG16_EXT=33324]="RG16_EXT",e[e.RGB16_EXT=32852]="RGB16_EXT",e[e.RGBA16_EXT=32859]="RGBA16_EXT",e[e.R16_SNORM_EXT=36760]="R16_SNORM_EXT",e[e.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",e[e.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",e[e.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",e[e.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",e[e.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",e[e.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",e[e.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",e[e.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",e[e.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",e[e.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",e[e.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",e[e.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",e[e.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",e[e.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",e[e.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",e[e.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",e[e.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",e[e.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",e[e.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",e[e.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",e[e.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",e[e.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",e[e.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",e[e.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",e[e.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",e[e.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",e[e.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",e[e.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",e[e.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",e[e.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",e[e.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",e[e.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",e[e.COMPLETION_STATUS_KHR=37297]="COMPLETION_STATUS_KHR",e[e.DEPTH_CLAMP_EXT=34383]="DEPTH_CLAMP_EXT",e[e.FIRST_VERTEX_CONVENTION_WEBGL=36429]="FIRST_VERTEX_CONVENTION_WEBGL",e[e.LAST_VERTEX_CONVENTION_WEBGL=36430]="LAST_VERTEX_CONVENTION_WEBGL",e[e.PROVOKING_VERTEX_WEBL=36431]="PROVOKING_VERTEX_WEBL",e[e.POLYGON_MODE_WEBGL=2880]="POLYGON_MODE_WEBGL",e[e.POLYGON_OFFSET_LINE_WEBGL=10754]="POLYGON_OFFSET_LINE_WEBGL",e[e.LINE_WEBGL=6913]="LINE_WEBGL",e[e.FILL_WEBGL=6914]="FILL_WEBGL",e[e.MAX_CLIP_DISTANCES_WEBGL=3378]="MAX_CLIP_DISTANCES_WEBGL",e[e.MAX_CULL_DISTANCES_WEBGL=33529]="MAX_CULL_DISTANCES_WEBGL",e[e.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL=33530]="MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL",e[e.CLIP_DISTANCE0_WEBGL=12288]="CLIP_DISTANCE0_WEBGL",e[e.CLIP_DISTANCE1_WEBGL=12289]="CLIP_DISTANCE1_WEBGL",e[e.CLIP_DISTANCE2_WEBGL=12290]="CLIP_DISTANCE2_WEBGL",e[e.CLIP_DISTANCE3_WEBGL=12291]="CLIP_DISTANCE3_WEBGL",e[e.CLIP_DISTANCE4_WEBGL=12292]="CLIP_DISTANCE4_WEBGL",e[e.CLIP_DISTANCE5_WEBGL=12293]="CLIP_DISTANCE5_WEBGL",e[e.CLIP_DISTANCE6_WEBGL=12294]="CLIP_DISTANCE6_WEBGL",e[e.CLIP_DISTANCE7_WEBGL=12295]="CLIP_DISTANCE7_WEBGL",e[e.POLYGON_OFFSET_CLAMP_EXT=36379]="POLYGON_OFFSET_CLAMP_EXT",e[e.LOWER_LEFT_EXT=36001]="LOWER_LEFT_EXT",e[e.UPPER_LEFT_EXT=36002]="UPPER_LEFT_EXT",e[e.NEGATIVE_ONE_TO_ONE_EXT=37726]="NEGATIVE_ONE_TO_ONE_EXT",e[e.ZERO_TO_ONE_EXT=37727]="ZERO_TO_ONE_EXT",e[e.CLIP_ORIGIN_EXT=37724]="CLIP_ORIGIN_EXT",e[e.CLIP_DEPTH_MODE_EXT=37725]="CLIP_DEPTH_MODE_EXT",e[e.SRC1_COLOR_WEBGL=35065]="SRC1_COLOR_WEBGL",e[e.SRC1_ALPHA_WEBGL=34185]="SRC1_ALPHA_WEBGL",e[e.ONE_MINUS_SRC1_COLOR_WEBGL=35066]="ONE_MINUS_SRC1_COLOR_WEBGL",e[e.ONE_MINUS_SRC1_ALPHA_WEBGL=35067]="ONE_MINUS_SRC1_ALPHA_WEBGL",e[e.MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL=35068]="MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL",e[e.MIRROR_CLAMP_TO_EDGE_EXT=34627]="MIRROR_CLAMP_TO_EDGE_EXT"})(U||(U={}))});var Ft=g(()=>{dr()});var N=fr((lo,Rr)=>{Rr.exports=globalThis.luma});function ne(e){let t=e.luma||{_polyfilled:!1,extensions:{},softwareRenderer:!1};return t._polyfilled??=!1,t.extensions||={},e.luma=t,t}var Ue=g(()=>{});function pr(e){if(e={...wi,...e},!e.debugSpectorJS)return null;if(!m&&globalThis.SPECTOR&&!globalThis.luma?.spector){_e.log.probe(yi,"SPECTOR found and initialized. Start with `luma.spector.displayUI()`")();let{Spector:t}=globalThis.SPECTOR;m=new t,globalThis.luma&&(globalThis.luma.spector=m)}if(!m)return null;if(Ar||(Ar=!0,m.spyCanvases(),m?.onCaptureStarted.add(t=>_e.log.info("Spector capture started:",t)()),m?.onCapture.add(t=>{_e.log.info("Spector capture complete:",t)(),m?.getResultUI(),m?.resultView.display(),m?.resultView.addCapture(t)})),e.gl){let t=e.gl,r=ne(t),s=r.device;m?.startCapture(e.gl,500),r.device=s,new Promise(i=>setTimeout(i,2e3)).then(i=>{_e.log.info("Spector capture stopped after 2 seconds")(),m?.stopCapture()})}return m}var _e,yi,m,Ar,wi,gr=g(()=>{_e=C(N(),1);Ue();yi=1,m=null,Ar=!1,wi={debugSpectorJS:_e.log.get("debug-spectorjs"),debugSpectorJSUrl:"https://cdn.jsdelivr.net/npm/spectorjs@0.9.30/dist/spector.bundle.js",gl:void 0}});var To,Ro,Ao,Sr,Er=g(()=>{To=globalThis.document||{},Ro=globalThis.process||{},Ao=globalThis.console,Sr=globalThis.navigator||{}});function me(e){if(typeof window<"u"&&window.process?.type==="renderer"||typeof process<"u"&&Boolean(process.versions?.electron))return!0;let t=typeof navigator<"u"&&navigator.userAgent,r=e||t;return Boolean(r&&r.indexOf("Electron")>=0)}var Bt=g(()=>{});function Mr(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||me()}var xr=g(()=>{Bt()});function Dt(e){return!e&&!Mr()?"Node":me(e)?"Electron":(e||Sr.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var br=g(()=>{xr();Bt();Er()});var Cr=g(()=>{br()});function Or(e){return e.luma=e.luma||{},e.luma}function Ir(e,t={}){return t.debugWebGL||t.traceWebGL?mi(e,t):Ui(e)}function Ui(e){let t=Or(e);return t.realContext?t.realContext:e}function mi(e,t){if(!globalThis.WebGLDebugUtils)return Me.log.warn("webgl-debug not loaded")(),e;let r=Or(e);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({...U,...e});let s=globalThis.WebGLDebugUtils.makeDebugContext(e,vi.bind(null,t),Wi.bind(null,t));for(let o in U)!(o in s)&&typeof U[o]=="number"&&(s[o]=U[o]);class i{}Object.setPrototypeOf(s,Object.getPrototypeOf(e)),Object.setPrototypeOf(i,s);let n=Object.create(i);return r.realContext=e,r.debugContext=n,n.luma=r,n.debug=!0,n}function Nr(e,t){t=Array.from(t).map(s=>s===void 0?"undefined":s);let r=globalThis.WebGLDebugUtils.glFunctionArgsToString(e,t);return r=`${r.slice(0,100)}${r.length>100?"...":""}`,`gl.${e}(${r})`}function vi(e,t,r,s){s=Array.from(s).map(a=>a===void 0?"undefined":a);let i=globalThis.WebGLDebugUtils.glEnumToString(t),n=globalThis.WebGLDebugUtils.glFunctionArgsToString(r,s),o=`${i} in gl.${r}(${n})`;Me.log.error("%cWebGL","color: white; background: red; padding: 2px 6px; border-radius: 3px;",o)();debugger;throw new Error(o)}function Wi(e,t,r){let s="";e.traceWebGL&&Me.log.level>=1&&(s=Nr(t,r),Me.log.info(1,"%cWebGL","color: white; background: blue; padding: 2px 6px; border-radius: 3px;",s)());for(let i of r)if(i===void 0){s=s||Nr(t,r);debugger}}var Me,Pr=g(()=>{Me=C(N(),1);Ft()});function yt(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function I(e,t,r){return t[e]!==void 0?t[e]:r[e]}var be,P,ur,v,Fr,xe,Br,Dr,wt,Q,Ut,yr,mt=g(()=>{be={[3042]:!1,[32773]:new Float32Array([0,0,0,0]),[32777]:32774,[34877]:32774,[32969]:1,[32968]:0,[32971]:1,[32970]:0,[3106]:new Float32Array([0,0,0,0]),[3107]:[!0,!0,!0,!0],[2884]:!1,[2885]:1029,[2929]:!1,[2931]:1,[2932]:513,[2928]:new Float32Array([0,1]),[2930]:!0,[3024]:!0,[35725]:null,[36006]:null,[36007]:null,[34229]:null,[34964]:null,[2886]:2305,[33170]:4352,[2849]:1,[32823]:!1,[32824]:0,[10752]:0,[32926]:!1,[32928]:!1,[32938]:1,[32939]:!1,[3089]:!1,[3088]:new Int32Array([0,0,1024,1024]),[2960]:!1,[2961]:0,[2968]:4294967295,[36005]:4294967295,[2962]:519,[2967]:0,[2963]:4294967295,[34816]:519,[36003]:0,[36004]:4294967295,[2964]:7680,[2965]:7680,[2966]:7680,[34817]:7680,[34818]:7680,[34819]:7680,[2978]:[0,0,1024,1024],[36389]:null,[36662]:null,[36663]:null,[35053]:null,[35055]:null,[35723]:4352,[36010]:null,[35977]:!1,[3333]:4,[3317]:4,[37440]:!1,[37441]:!1,[37443]:37444,[3330]:0,[3332]:0,[3331]:0,[3314]:0,[32878]:0,[3316]:0,[3315]:0,[32877]:0},P=(e,t,r)=>t?e.enable(r):e.disable(r),ur=(e,t,r)=>e.hint(r,t),v=(e,t,r)=>e.pixelStorei(r,t),Fr=(e,t,r)=>{let s=r===36006?36009:36008;return e.bindFramebuffer(s,t)},xe=(e,t,r)=>{let i={[34964]:34962,[36662]:36662,[36663]:36663,[35053]:35051,[35055]:35052}[r];e.bindBuffer(i,t)};Br={[3042]:P,[32773]:(e,t)=>e.blendColor(...t),[32777]:"blendEquation",[34877]:"blendEquation",[32969]:"blendFunc",[32968]:"blendFunc",[32971]:"blendFunc",[32970]:"blendFunc",[3106]:(e,t)=>e.clearColor(...t),[3107]:(e,t)=>e.colorMask(...t),[2884]:P,[2885]:(e,t)=>e.cullFace(t),[2929]:P,[2931]:(e,t)=>e.clearDepth(t),[2932]:(e,t)=>e.depthFunc(t),[2928]:(e,t)=>e.depthRange(...t),[2930]:(e,t)=>e.depthMask(t),[3024]:P,[35723]:ur,[35725]:(e,t)=>e.useProgram(t),[36007]:(e,t)=>e.bindRenderbuffer(36161,t),[36389]:(e,t)=>e.bindTransformFeedback?.(36386,t),[34229]:(e,t)=>e.bindVertexArray(t),[36006]:Fr,[36010]:Fr,[34964]:xe,[36662]:xe,[36663]:xe,[35053]:xe,[35055]:xe,[2886]:(e,t)=>e.frontFace(t),[33170]:ur,[2849]:(e,t)=>e.lineWidth(t),[32823]:P,[32824]:"polygonOffset",[10752]:"polygonOffset",[35977]:P,[32926]:P,[32928]:P,[32938]:"sampleCoverage",[32939]:"sampleCoverage",[3089]:P,[3088]:(e,t)=>e.scissor(...t),[2960]:P,[2961]:(e,t)=>e.clearStencil(t),[2968]:(e,t)=>e.stencilMaskSeparate(1028,t),[36005]:(e,t)=>e.stencilMaskSeparate(1029,t),[2962]:"stencilFuncFront",[2967]:"stencilFuncFront",[2963]:"stencilFuncFront",[34816]:"stencilFuncBack",[36003]:"stencilFuncBack",[36004]:"stencilFuncBack",[2964]:"stencilOpFront",[2965]:"stencilOpFront",[2966]:"stencilOpFront",[34817]:"stencilOpBack",[34818]:"stencilOpBack",[34819]:"stencilOpBack",[2978]:(e,t)=>e.viewport(...t),[34383]:P,[10754]:P,[12288]:P,[12289]:P,[12290]:P,[12291]:P,[12292]:P,[12293]:P,[12294]:P,[12295]:P,[3333]:v,[3317]:v,[37440]:v,[37441]:v,[37443]:v,[3330]:v,[3332]:v,[3331]:v,[3314]:v,[32878]:v,[3316]:v,[3315]:v,[32877]:v,framebuffer:(e,t)=>{let r=t&&"handle"in t?t.handle:t;return e.bindFramebuffer(36160,r)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{let r=typeof t=="number"?[t,t]:t;e.blendEquationSeparate(...r)},blendFunc:(e,t)=>{let r=t?.length===2?[...t,...t]:t;e.blendFuncSeparate(...r)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(t[0],t[1]||!1),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{t=yt(t)?t:[t,t];let[r,s]=t;e.stencilMaskSeparate(1028,r),e.stencilMaskSeparate(1029,s)},stencilFunc:(e,t)=>{t=yt(t)&&t.length===3?[...t,...t]:t;let[r,s,i,n,o,a]=t;e.stencilFuncSeparate(1028,r,s,i),e.stencilFuncSeparate(1029,n,o,a)},stencilOp:(e,t)=>{t=yt(t)&&t.length===3?[...t,...t]:t;let[r,s,i,n,o,a]=t;e.stencilOpSeparate(1028,r,s,i),e.stencilOpSeparate(1029,n,o,a)},viewport:(e,t)=>e.viewport(...t)};Dr={blendEquation:(e,t,r)=>e.blendEquationSeparate(I(32777,t,r),I(34877,t,r)),blendFunc:(e,t,r)=>e.blendFuncSeparate(I(32969,t,r),I(32968,t,r),I(32971,t,r),I(32970,t,r)),polygonOffset:(e,t,r)=>e.polygonOffset(I(32824,t,r),I(10752,t,r)),sampleCoverage:(e,t,r)=>e.sampleCoverage(I(32938,t,r),I(32939,t,r)),stencilFuncFront:(e,t,r)=>e.stencilFuncSeparate(1028,I(2962,t,r),I(2967,t,r),I(2963,t,r)),stencilFuncBack:(e,t,r)=>e.stencilFuncSeparate(1029,I(34816,t,r),I(36003,t,r),I(36004,t,r)),stencilOpFront:(e,t,r)=>e.stencilOpSeparate(1028,I(2964,t,r),I(2965,t,r),I(2966,t,r)),stencilOpBack:(e,t,r)=>e.stencilOpSeparate(1029,I(34817,t,r),I(34818,t,r),I(34819,t,r))},wt={enable:(e,t)=>e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,r)=>e({[t]:r}),hint:(e,t,r)=>e({[t]:r}),useProgram:(e,t)=>e({[35725]:t}),bindRenderbuffer:(e,t,r)=>e({[36007]:r}),bindTransformFeedback:(e,t,r)=>e({[36389]:r}),bindVertexArray:(e,t)=>e({[34229]:t}),bindFramebuffer:(e,t,r)=>{switch(t){case 36160:return e({[36006]:r,[36010]:r});case 36009:return e({[36006]:r});case 36008:return e({[36010]:r});default:return null}},bindBuffer:(e,t,r)=>{let s={[34962]:[34964],[36662]:[36662],[36663]:[36663],[35051]:[35053],[35052]:[35055]}[t];return s?e({[s]:r}):{valueChanged:!0}},blendColor:(e,t,r,s,i)=>e({[32773]:new Float32Array([t,r,s,i])}),blendEquation:(e,t)=>e({[32777]:t,[34877]:t}),blendEquationSeparate:(e,t,r)=>e({[32777]:t,[34877]:r}),blendFunc:(e,t,r)=>e({[32969]:t,[32968]:r,[32971]:t,[32970]:r}),blendFuncSeparate:(e,t,r,s,i)=>e({[32969]:t,[32968]:r,[32971]:s,[32970]:i}),clearColor:(e,t,r,s,i)=>e({[3106]:new Float32Array([t,r,s,i])}),clearDepth:(e,t)=>e({[2931]:t}),clearStencil:(e,t)=>e({[2961]:t}),colorMask:(e,t,r,s,i)=>e({[3107]:[t,r,s,i]}),cullFace:(e,t)=>e({[2885]:t}),depthFunc:(e,t)=>e({[2932]:t}),depthRange:(e,t,r)=>e({[2928]:new Float32Array([t,r])}),depthMask:(e,t)=>e({[2930]:t}),frontFace:(e,t)=>e({[2886]:t}),lineWidth:(e,t)=>e({[2849]:t}),polygonOffset:(e,t,r)=>e({[32824]:t,[10752]:r}),sampleCoverage:(e,t,r)=>e({[32938]:t,[32939]:r}),scissor:(e,t,r,s,i)=>e({[3088]:new Int32Array([t,r,s,i])}),stencilMask:(e,t)=>e({[2968]:t,[36005]:t}),stencilMaskSeparate:(e,t,r)=>e({[t===1028?2968:36005]:r}),stencilFunc:(e,t,r,s)=>e({[2962]:t,[2967]:r,[2963]:s,[34816]:t,[36003]:r,[36004]:s}),stencilFuncSeparate:(e,t,r,s,i)=>e({[t===1028?2962:34816]:r,[t===1028?2967:36003]:s,[t===1028?2963:36004]:i}),stencilOp:(e,t,r,s)=>e({[2964]:t,[2965]:r,[2966]:s,[34817]:t,[34818]:r,[34819]:s}),stencilOpSeparate:(e,t,r,s,i)=>e({[t===1028?2964:34817]:r,[t===1028?2965:34818]:s,[t===1028?2966:34819]:i}),viewport:(e,t,r,s,i)=>e({[2978]:[t,r,s,i]})},Q=(e,t)=>e.isEnabled(t),Ut={[3042]:Q,[2884]:Q,[2929]:Q,[3024]:Q,[32823]:Q,[32926]:Q,[32928]:Q,[3089]:Q,[2960]:Q,[35977]:Q},yr=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068])});function k(e,t){if(Xi(t))return;let r={};for(let i in t){let n=Number(i),o=Br[i];o&&(typeof o=="string"?r[o]=!0:o(e,t[i],n))}let s=e.lumaState?.cache;if(s)for(let i in r){let n=Dr[i];n(e,t,s)}}function ve(e,t=be){if(typeof t=="number"){let i=t,n=Ut[i];return n?n(e,i):e.getParameter(i)}let r=Array.isArray(t)?t:Object.keys(t),s={};for(let i of r){let n=Ut[i];s[i]=n?n(e,Number(i)):e.getParameter(Number(i))}return s}function wr(e){k(e,be)}function Xi(e){for(let t in e)return!1;return!0}var fe=g(()=>{mt()});function mr(e,t){if(e===t)return!0;if(Ur(e)&&Ur(t)&&e.length===t.length){for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}return!1}function Ur(e){return Array.isArray(e)||ArrayBuffer.isView(e)}var vr=g(()=>{});function Wr(e,t){let r=e[t].bind(e);e[t]=function(i){if(i===void 0||yr.has(i))return r(i);let n=Y.get(e);return i in n.cache||(n.cache[i]=r(i)),n.enable?n.cache[i]:r(i)},Object.defineProperty(e[t],"name",{value:`${t}-from-cache`,configurable:!1})}function Hi(e,t,r){if(!e[t])return;let s=e[t].bind(e);e[t]=function(...n){let o=Y.get(e),{valueChanged:a,oldValue:c}=r(o._updateCache,...n);return a&&s(...n),c},Object.defineProperty(e[t],"name",{value:`${t}-to-cache`,configurable:!1})}function Vi(e){let t=e.useProgram.bind(e);e.useProgram=function(s){let i=Y.get(e);i.program!==s&&(t(s),i.program=s)}}var Y,vt=g(()=>{fe();vr();mt();Y=class{static get(t){return t.lumaState}gl;program=null;stateStack=[];enable=!0;cache=null;log;initialized=!1;constructor(t,r){this.gl=t,this.log=r?.log||(()=>{}),this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(t={}){this.stateStack.push({})}pop(){let t=this.stateStack[this.stateStack.length-1];k(this.gl,t),this.stateStack.pop()}trackState(t,r){if(this.cache=r?.copyState?ve(t):Object.assign({},be),this.initialized)throw new Error("WebGLStateTracker");this.initialized=!0,this.gl.lumaState=this,Vi(t);for(let s in wt){let i=wt[s];Hi(t,s,i)}Wr(t,"getParameter"),Wr(t,"isEnabled")}_updateCache(t){let r=!1,s,i=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let n in t){let o=t[n],a=this.cache[n];mr(o,a)||(r=!0,s=a,i&&!(n in i)&&(i[n]=a),this.cache[n]=o)}return{valueChanged:r,oldValue:s}}}});function Xr(e,t,r){let s="",i=c=>{let l=c.statusMessage;l&&(s||=l)};e.addEventListener("webglcontextcreationerror",i,!1);let n=r.failIfMajorPerformanceCaveat!==!0,o={preserveDrawingBuffer:!0,...r,failIfMajorPerformanceCaveat:!0},a=null;try{a||=e.getContext("webgl2",o),!a&&o.failIfMajorPerformanceCaveat&&(s||="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow.");let c=!1;if(!a&&n&&(o.failIfMajorPerformanceCaveat=!1,a=e.getContext("webgl2",o),c=!0),a||(a=e.getContext("webgl",{}),a&&(a=null,s||="Your browser only supports WebGL1")),!a)throw s||="Your browser does not support WebGL",new Error(`Failed to create WebGL context: ${s}`);let l=ne(a);l.softwareRenderer=c;let{onContextLost:_,onContextRestored:f}=t;return e.addEventListener("webglcontextlost",h=>_(h),!1),e.addEventListener("webglcontextrestored",h=>f(h),!1),a}finally{e.removeEventListener("webglcontextcreationerror",i,!1)}}var Hr=g(()=>{Ue()});function K(e,t,r){return r[t]===void 0&&(r[t]=e.getExtension(t)||null),r[t]}var Ce=g(()=>{});function Vr(e,t){let r=e.getParameter(7936),s=e.getParameter(7937);K(e,"WEBGL_debug_renderer_info",t);let i=t.WEBGL_debug_renderer_info,n=e.getParameter(i?i.UNMASKED_VENDOR_WEBGL:7936),o=e.getParameter(i?i.UNMASKED_RENDERER_WEBGL:7937),a=n||r,c=o||s,l=e.getParameter(7938),_=kr(a,c),f=ki(a,c),h=Yi(a,c);return{type:"webgl",gpu:_,gpuType:h,gpuBackend:f,vendor:a,renderer:c,version:l,shadingLanguage:"glsl",shadingLanguageVersion:300}}function kr(e,t){return/NVIDIA/i.exec(e)||/NVIDIA/i.exec(t)?"nvidia":/INTEL/i.exec(e)||/INTEL/i.exec(t)?"intel":/Apple/i.exec(e)||/Apple/i.exec(t)?"apple":/AMD/i.exec(e)||/AMD/i.exec(t)||/ATI/i.exec(e)||/ATI/i.exec(t)?"amd":/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t)?"software":"unknown"}function ki(e,t){return/Metal/i.exec(e)||/Metal/i.exec(t)?"metal":/ANGLE/i.exec(e)||/ANGLE/i.exec(t)?"opengl":"unknown"}function Yi(e,t){if(/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t))return"cpu";switch(kr(e,t)){case"apple":return Ki(e,t)?"integrated":"unknown";case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}function Ki(e,t){return/Apple (M\d|A\d|GPU)/i.test(`${e} ${t}`)}var Yr=g(()=>{Ce()});function We(e){switch(e){case"uint8":return 5121;case"sint8":return 5120;case"unorm8":return 5121;case"snorm8":return 5120;case"uint16":return 5123;case"sint16":return 5122;case"unorm16":return 5123;case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw new Error(String(e))}var Wt=g(()=>{});function zr(e){return e in He}function Kt(e,t,r){return Lr(e,t,r,new Set)}function Lr(e,t,r,s){let i=He[t];if(!i||s.has(t))return!1;s.add(t);let n=(i.features||[]).every(o=>Lr(e,o,r,s));return s.delete(t),n?(i.extensions||[]).every(o=>Boolean(K(e,o,r))):!1}function Qr(e,t,r){let s=t.create,i=Ve[t.format];i?.gl===void 0&&(s=!1),i?.x&&(s=s&&Boolean(K(e,i.x,r))),t.format==="stencil8"&&(s=!1);let n=i?.r===!1?!1:i?.r===void 0||Kt(e,i.r,r),o=s&&t.render&&n&&Ji(e,t.format,r);return{format:t.format,create:s&&t.create,render:o,filter:s&&t.filter,blend:s&&t.blend,store:s&&t.store}}function Ji(e,t,r){let s=Ve[t],i=s?.gl;if(i===void 0||s?.x&&!K(e,s.x,r))return!1;let n=e.getParameter(32873),o=e.getParameter(36006),a=e.createTexture(),c=e.createFramebuffer();if(!a||!c)return!1;let l=Number(0),_=Number(e.getError());for(;_!==l;)_=e.getError();let f=!1;try{if(e.bindTexture(3553,a),e.texStorage2D(3553,1,i,1,1),Number(e.getError())!==l)return!1;e.bindFramebuffer(36160,c),e.framebufferTexture2D(36160,36064,3553,a,0),f=Number(e.checkFramebufferStatus(36160))===Number(36053)&&Number(e.getError())===l}finally{e.bindFramebuffer(36160,o),e.deleteFramebuffer(c),e.bindTexture(3553,n),e.deleteTexture(a)}return f}function ke(e){let t=Ve[e],r=en(e),s=Yt.textureFormatDecoder.getInfo(e);return s.compressed&&(t.dataFormat=r),{internalFormat:r,format:t?.dataFormat||Gi(s.channels,s.integer,s.normalized,r),type:s.dataType?We(s.dataType):t?.types?.[0]||5121,compressed:s.compressed||!1}}function qr(e){switch(Yt.textureFormatDecoder.getInfo(e).attachment){case"depth":return 36096;case"stencil":return 36128;case"depth-stencil":return 33306;default:throw new Error(`Not a depth stencil format: ${e}`)}}function Gi(e,t,r,s){if(s===6408||s===6407)return s;switch(e){case"r":return t&&!r?36244:6403;case"rg":return t&&!r?33320:33319;case"rgb":return t&&!r?36248:6407;case"rgba":return t&&!r?36249:6408;case"bgra":throw new Error("bgra pixels not supported by WebGL");default:return 6408}}function en(e){let r=Ve[e]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${e}`);return r}var Yt,Ne,Oe,he,Te,$i,zi,Li,Qi,qi,ji,Kr,$r,Xt,Ht,Vt,kt,Xe,Zi,He,Ve,de=g(()=>{Yt=C(N(),1);Ce();Wt();Ne="WEBGL_compressed_texture_s3tc",Oe="WEBGL_compressed_texture_s3tc_srgb",he="EXT_texture_compression_rgtc",Te="EXT_texture_compression_bptc",$i="WEBGL_compressed_texture_etc",zi="WEBGL_compressed_texture_astc",Li="WEBGL_compressed_texture_etc1",Qi="WEBGL_compressed_texture_pvrtc",qi="WEBGL_compressed_texture_atc",ji="EXT_texture_norm16",Kr="EXT_render_snorm",$r="EXT_color_buffer_float",Xt="snorm8-renderable-webgl",Ht="norm16-renderable-webgl",Vt="snorm16-renderable-webgl",kt="float16-renderable-webgl",Xe="float32-renderable-webgl",Zi="rgb9e5ufloat-renderable-webgl",He={"float32-renderable-webgl":{extensions:[$r]},"float16-renderable-webgl":{extensions:["EXT_color_buffer_half_float"]},"rgb9e5ufloat-renderable-webgl":{extensions:["WEBGL_render_shared_exponent"]},"snorm8-renderable-webgl":{extensions:[Kr]},"norm16-webgl":{extensions:[ji]},"norm16-renderable-webgl":{features:["norm16-webgl"]},"snorm16-renderable-webgl":{features:["norm16-webgl"],extensions:[Kr]},"float32-filterable":{extensions:["OES_texture_float_linear"]},"float16-filterable-webgl":{extensions:["OES_texture_half_float_linear"]},"texture-filterable-anisotropic-webgl":{extensions:["EXT_texture_filter_anisotropic"]},"texture-blend-float-webgl":{extensions:["EXT_float_blend"]},"texture-compression-bc":{extensions:[Ne,Oe,he,Te]},"texture-compression-bc5-webgl":{extensions:[he]},"texture-compression-bc7-webgl":{extensions:[Te]},"texture-compression-etc2":{extensions:[$i]},"texture-compression-astc":{extensions:[zi]},"texture-compression-etc1-webgl":{extensions:[Li]},"texture-compression-pvrtc-webgl":{extensions:[Qi]},"texture-compression-atc-webgl":{extensions:[qi]}};Ve={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756,r:Xt},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757,r:Xt},rg8uint:{gl:33336,rb:!0},rg8sint:{gl:33335,rb:!0},r16uint:{gl:33332,rb:!0},r16sint:{gl:33331,rb:!0},r16float:{gl:33325,rb:!0,r:kt},r16unorm:{gl:33322,rb:!0,r:Ht},r16snorm:{gl:36760,r:Vt},"rgba4unorm-webgl":{gl:32854,rb:!0},"rgb565unorm-webgl":{gl:36194,rb:!0},"rgb5a1unorm-webgl":{gl:32855,rb:!0},"rgb8unorm-webgl":{gl:32849},"rgb8snorm-webgl":{gl:36758},rgba8unorm:{gl:32856},"rgba8unorm-srgb":{gl:35907},rgba8snorm:{gl:36759,r:Xt},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0,r:kt},rg16unorm:{gl:33324,r:Ht},rg16snorm:{gl:36761,r:Vt},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326,r:Xe},rgb9e5ufloat:{gl:35901,r:Zi},rg11b10ufloat:{gl:35898,rb:!0},rgb10a2unorm:{gl:32857,rb:!0},rgb10a2uint:{gl:36975,rb:!0},"rgb16unorm-webgl":{gl:32852,r:!1},"rgb16snorm-webgl":{gl:36762,r:!1},rg32uint:{gl:33340,rb:!0},rg32sint:{gl:33339,rb:!0},rg32float:{gl:33328,rb:!0,r:Xe},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842,r:kt},rgba16unorm:{gl:32859,rb:!0,r:Ht},rgba16snorm:{gl:36763,r:Vt},"rgb32float-webgl":{gl:34837,x:$r,r:Xe,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0,r:Xe},stencil8:{gl:36168,rb:!0},depth16unorm:{gl:33189,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,dataFormat:6402,types:[5125]},depth32float:{gl:36012,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth32float-stencil8":{gl:36013,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:Ne},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:Oe},"bc1-rgba-unorm":{gl:33777,x:Ne},"bc1-rgba-unorm-srgb":{gl:35916,x:Oe},"bc2-rgba-unorm":{gl:33778,x:Ne},"bc2-rgba-unorm-srgb":{gl:35918,x:Oe},"bc3-rgba-unorm":{gl:33779,x:Ne},"bc3-rgba-unorm-srgb":{gl:35919,x:Oe},"bc4-r-unorm":{gl:36283,x:he},"bc4-r-snorm":{gl:36284,x:he},"bc5-rg-unorm":{gl:36285,x:he},"bc5-rg-snorm":{gl:36286,x:he},"bc6h-rgb-ufloat":{gl:36495,x:Te},"bc6h-rgb-float":{gl:36494,x:Te},"bc7-rgba-unorm":{gl:36492,x:Te},"bc7-rgba-unorm-srgb":{gl:36493,x:Te},"etc2-rgb8unorm":{gl:37492},"etc2-rgb8unorm-srgb":{gl:37494},"etc2-rgb8a1unorm":{gl:37496},"etc2-rgb8a1unorm-srgb":{gl:37497},"etc2-rgba8unorm":{gl:37493},"etc2-rgba8unorm-srgb":{gl:37495},"eac-r11unorm":{gl:37488},"eac-r11snorm":{gl:37489},"eac-rg11unorm":{gl:37490},"eac-rg11snorm":{gl:37491},"astc-4x4-unorm":{gl:37808},"astc-4x4-unorm-srgb":{gl:37840},"astc-5x4-unorm":{gl:37809},"astc-5x4-unorm-srgb":{gl:37841},"astc-5x5-unorm":{gl:37810},"astc-5x5-unorm-srgb":{gl:37842},"astc-6x5-unorm":{gl:37811},"astc-6x5-unorm-srgb":{gl:37843},"astc-6x6-unorm":{gl:37812},"astc-6x6-unorm-srgb":{gl:37844},"astc-8x5-unorm":{gl:37813},"astc-8x5-unorm-srgb":{gl:37845},"astc-8x6-unorm":{gl:37814},"astc-8x6-unorm-srgb":{gl:37846},"astc-8x8-unorm":{gl:37815},"astc-8x8-unorm-srgb":{gl:37847},"astc-10x5-unorm":{gl:37816},"astc-10x5-unorm-srgb":{gl:37848},"astc-10x6-unorm":{gl:37817},"astc-10x6-unorm-srgb":{gl:37849},"astc-10x8-unorm":{gl:37818},"astc-10x8-unorm-srgb":{gl:37850},"astc-10x10-unorm":{gl:37819},"astc-10x10-unorm-srgb":{gl:37851},"astc-12x10-unorm":{gl:37820},"astc-12x10-unorm-srgb":{gl:37852},"astc-12x12-unorm":{gl:37821},"astc-12x12-unorm-srgb":{gl:37853},"pvrtc-rgb4unorm-webgl":{gl:35840},"pvrtc-rgba4unorm-webgl":{gl:35842},"pvrtc-rgb2unorm-webgl":{gl:35841},"pvrtc-rgba2unorm-webgl":{gl:35843},"etc1-rbg-unorm-webgl":{gl:36196},"atc-rgb-unorm-webgl":{gl:35986},"atc-rgba-unorm-webgl":{gl:35986},"atc-rgbai-unorm-webgl":{gl:34798}}});var Zr,jr,Ye,Jr=g(()=>{Zr=C(N(),1);Ce();de();jr={"depth-clip-control":"EXT_depth_clamp","timestamp-query":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"},Ye=class extends Zr.DeviceFeatures{gl;extensions;testedFeatures=new Set;constructor(t,r,s){super([],s),this.gl=t,this.extensions=r,K(t,"EXT_color_buffer_float",r)}*[Symbol.iterator](){let t=this.getFeatures();for(let r of t)this.has(r)&&(yield r);return[]}has(t){return this.disabledFeatures?.[t]?!1:(this.testedFeatures.has(t)||(this.testedFeatures.add(t),zr(t)&&Kt(this.gl,t,this.extensions)&&this.features.add(t),this.getWebGLFeature(t)&&this.features.add(t)),this.features.has(t))}initializeFeatures(){let t=this.getFeatures().filter(r=>r!=="polygon-mode-webgl");for(let r of t)this.has(r)}getFeatures(){return[...Object.keys(jr),...Object.keys(He)]}getWebGLFeature(t){let r=jr[t];return Boolean(typeof r=="string"?K(this.gl,r,this.extensions):r)}}});var Gr,Ke,es=g(()=>{Gr=C(N(),1),Ke=class extends Gr.DeviceLimits{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderVariables(){return this.getParameter(35659)}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(t){super(),this.gl=t}getParameter(t){return this.limits[t]===void 0&&(this.limits[t]=this.gl.getParameter(t)),this.limits[t]||0}}});function tn(e){return e<34069?e+34069:e}function rn(e){switch(e){case 36053:return"success";case 36054:return"Mismatched attachments";case 36055:return"No attachments";case 36057:return"Height/width mismatch";case 36061:return"Unsupported or split attachments";case 36182:return"Samples mismatch";default:return`${e}`}}var ts,q,$e=g(()=>{ts=C(N(),1);de();q=class extends ts.Framebuffer{device;gl;handle;colorAttachments=[];depthStencilAttachment=null;constructor(t,r){super(t,r);let s=r.handle===null;this.device=t,this.gl=t.gl,this.handle=this.props.handle||s?this.props.handle:this.gl.createFramebuffer(),s||(t._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.autoCreateAttachmentTextures(),this.updateAttachments())}destroy(){super.destroy(),!this.destroyed&&this.handle!==null&&this.gl.deleteFramebuffer(this.handle)}updateAttachments(){let t=this.gl.bindFramebuffer(36160,this.handle);for(let r=0;r<this.colorAttachments.length;++r){let s=this.colorAttachments[r];if(s){let i=36064+r;this._attachTextureView(i,s)}}if(this.depthStencilAttachment){let r=qr(this.depthStencilAttachment.props.format);this._attachTextureView(r,this.depthStencilAttachment)}if(this.device.props.debug){let r=this.gl.checkFramebufferStatus(36160);if(r!==36053)throw new Error(`Framebuffer ${rn(r)}`)}this.gl.bindFramebuffer(36160,t)}_attachTextureView(t,r){let{gl:s}=this.device,{texture:i}=r,n=r.props.baseMipLevel,o=r.props.baseArrayLayer;switch(s.bindTexture(i.glTarget,i.handle),i.glTarget){case 35866:case 32879:s.framebufferTextureLayer(36160,t,i.handle,n,o);break;case 34067:let a=tn(o);s.framebufferTexture2D(36160,t,a,i.handle,n);break;case 3553:s.framebufferTexture2D(36160,t,3553,i.handle,n);break;default:throw new Error("Illegal texture type")}s.bindTexture(i.glTarget,null)}resizeAttachments(t,r){if(this.handle===null){this.width=t,this.height=r;return}super.resizeAttachments(t,r)}}});var rs,ze,ss=g(()=>{rs=C(N(),1);$e();ze=class extends rs.CanvasContext{device;handle=null;_framebuffer=null;get[Symbol.toStringTag](){return"WebGLCanvasContext"}constructor(t,r){super(r),this.device=t,this._setAutoCreatedCanvasId(`${this.device.id}-canvas`),this._configureDevice()}_configureDevice(){(this.drawingBufferWidth!==this._framebuffer?.width||this.drawingBufferHeight!==this._framebuffer?.height)&&this._framebuffer?.resize([this.drawingBufferWidth,this.drawingBufferHeight])}_getCurrentFramebuffer(){return this._framebuffer||=new q(this.device,{id:"canvas-context-framebuffer",handle:null,width:this.drawingBufferWidth,height:this.drawingBufferHeight}),this._framebuffer}}});var is,Le,ns=g(()=>{is=C(N(),1),Le=class extends is.PresentationContext{device;handle=null;context2d;get[Symbol.toStringTag](){return"WebGLPresentationContext"}constructor(t,r={}){super(r),this.device=t;let s=`${this[Symbol.toStringTag]}(${this.id})`;if(!this.device.getDefaultCanvasContext().offscreenCanvas)throw new Error(`${s}: WebGL PresentationContext requires the default CanvasContext canvas to be an OffscreenCanvas`);let n=this.canvas.getContext("2d");if(!n)throw new Error(`${s}: Failed to create 2d presentation context`);this.context2d=n,this._setAutoCreatedCanvasId(`${this.device.id}-presentation-canvas`),this._configureDevice(),this._startObservers()}present(){this._resizeDrawingBufferIfNeeded(),this.device.submit();let t=this.device.getDefaultCanvasContext(),[r,s]=t.getDrawingBufferSize();if(!(this.drawingBufferWidth===0||this.drawingBufferHeight===0||r===0||s===0||t.canvas.width===0||t.canvas.height===0)){if(r!==this.drawingBufferWidth||s!==this.drawingBufferHeight||t.canvas.width!==this.drawingBufferWidth||t.canvas.height!==this.drawingBufferHeight)throw new Error(`${this[Symbol.toStringTag]}(${this.id}): Default canvas context size ${r}x${s} does not match presentation size ${this.drawingBufferWidth}x${this.drawingBufferHeight}`);this.context2d.clearRect(0,0,this.drawingBufferWidth,this.drawingBufferHeight),this.context2d.drawImage(t.canvas,0,0)}}_configureDevice(){}_getCurrentFramebuffer(t){let r=this.device.getDefaultCanvasContext();return r.setDrawingBufferSize(this.drawingBufferWidth,this.drawingBufferHeight),r.getCurrentFramebuffer(t)}}});function os(e="id"){$t[e]=$t[e]||1;let t=$t[e]++;return`${e}-${t}`}var $t,as=g(()=>{$t={}});function sn(e){return e&se.Buffer.INDEX?34963:e&se.Buffer.VERTEX?34962:e&se.Buffer.UNIFORM?35345:34962}function nn(e){return e&se.Buffer.INDEX||e&se.Buffer.VERTEX?35044:e&se.Buffer.UNIFORM?35048:35044}var se,$,Qe=g(()=>{se=C(N(),1),$=class extends se.Buffer{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength=0;bytesUsed=0;constructor(t,r={}){super(t,r),this.device=t,this.gl=this.device.gl;let s=typeof r=="object"?r.handle:void 0;this.handle=s||this.gl.createBuffer(),t._setWebGLDebugMetadata(this.handle,this,{spector:{...this.props,data:typeof this.props.data}}),this.glTarget=sn(this.props.usage),this.glUsage=nn(this.props.usage),this.glIndexType=this.props.indexType==="uint32"?5125:5123,r.data?this._initWithData(r.data,r.byteOffset,r.byteLength):this._initWithByteLength(r.byteLength||0)}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.props.handle?this.trackDeallocatedReferencedMemory("Buffer"):(this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle)),this.destroyed=!0,this.handle=null)}_initWithData(t,r=0,s=t.byteLength+r){let i=this.glTarget;this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,s,this.glUsage),this.gl.bufferSubData(i,r,t),this.gl.bindBuffer(i,null),this.bytesUsed=s,this.byteLength=s,this._setDebugData(t,r,s),this.props.handle?this.trackReferencedMemory(s,"Buffer"):this.trackAllocatedMemory(s)}_initWithByteLength(t){let r=t;t===0&&(r=new Float32Array(0));let s=this.glTarget;return this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,r,this.glUsage),this.gl.bindBuffer(s,null),this.bytesUsed=t,this.byteLength=t,this._setDebugData(null,0,t),this.props.handle?this.trackReferencedMemory(t,"Buffer"):this.trackAllocatedMemory(t),this}write(t,r=0){let s=ArrayBuffer.isView(t)?t:new Uint8Array(t),i=0,n=void 0,o=36663;this.gl.bindBuffer(o,this.handle),i!==0||n!==void 0?this.gl.bufferSubData(o,r,s,i,n):this.gl.bufferSubData(o,r,s),this.gl.bindBuffer(o,null),this._setDebugData(t,r,t.byteLength)}async mapAndWriteAsync(t,r=0,s=this.byteLength-r){let i=new ArrayBuffer(s);await t(i,"copied"),this.write(i,r)}async readAsync(t=0,r){return this.readSyncWebGL(t,r)}async mapAndReadAsync(t,r=0,s){let i=await this.readAsync(r,s);return await t(i.buffer,"copied")}readSyncWebGL(t=0,r){r=r??this.byteLength-t;let s=new Uint8Array(r),i=0;return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,t,s,i,r),this.gl.bindBuffer(36662,null),this._setDebugData(s,t,r),s}}});function cs(e){let t=e.split(/\r?\n/),r=[];for(let s of t){if(s.length<=1)continue;let i=s.trim(),n=s.split(":"),o=n[0]?.trim();if(n.length===2){let[T,d]=n;if(!T||!d){r.push({message:i,type:qe(o||"info"),lineNum:0,linePos:0});continue}r.push({message:d.trim(),type:qe(T),lineNum:0,linePos:0});continue}let[a,c,l,..._]=n;if(!a||!c||!l){r.push({message:n.slice(1).join(":").trim()||i,type:qe(o||"info"),lineNum:0,linePos:0});continue}let f=parseInt(l,10);isNaN(f)&&(f=0);let h=parseInt(c,10);isNaN(h)&&(h=0),r.push({message:_.join(":").trim(),type:qe(a),lineNum:f,linePos:h})}return r}function qe(e){let t=["warning","error","info"],r=e.toLowerCase();return t.includes(r)?r:"info"}var ls=g(()=>{});var Ie,je,_s=g(()=>{Ie=C(N(),1);ls();je=class extends Ie.Shader{device;handle;constructor(t,r){switch(super(t,r),this.device=t,this.props.stage){case"vertex":this.handle=this.props.handle||this.device.gl.createShader(35633);break;case"fragment":this.handle=this.props.handle||this.device.gl.createShader(35632);break;default:throw new Error(this.props.stage)}t._setWebGLDebugMetadata(this.handle,this,{spector:this.props});let s=this._compile(this.source);s&&typeof s.catch=="function"&&s.catch(()=>{this.compilationStatus="error"})}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0,this.handle.destroyed=!0)}get asyncCompilationStatus(){return this._waitForCompilationComplete().then(()=>(this._getCompilationStatus(),this.compilationStatus))}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let t=this.device.gl.getShaderInfoLog(this.handle);return t?cs(t):[]}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)||null}_compile(t){t=t.startsWith("#version ")?t:`#version 300 es
|
|
8
|
-
${t}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,t),r.compileShader(this.handle),!this.device.props.debug){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),this.compilationStatus==="error")throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);return}return Ie.log.once(1,"Shader compilation is asynchronous")(),this._waitForCompilationComplete().then(()=>{Ie.log.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()})}async _waitForCompilationComplete(){let t=async i=>await new Promise(n=>setTimeout(n,i));if(!this.device.features.has("compilation-status-async-webgl")){await t(10);return}let{gl:s}=this.device;for(;;){if(s.getShaderParameter(this.handle,37297))return;await t(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error"}}});function Ts(e,t,r,s){if(ln(t))return s(e);let i=e;i.pushState();try{return on(e,t),k(i.gl,r),s(e)}finally{i.popState()}}function on(e,t){let r=e,{gl:s}=r;if(t.cullMode)switch(t.cullMode){case"none":s.disable(2884);break;case"front":s.enable(2884),s.cullFace(1028);break;case"back":s.enable(2884),s.cullFace(1029);break}if(t.frontFace&&s.frontFace(oe("frontFace",t.frontFace,{ccw:2305,cw:2304})),t.unclippedDepth&&e.features.has("depth-clip-control")&&s.enable(34383),t.depthBias!==void 0&&(s.enable(32823),s.polygonOffset(t.depthBias,t.depthBiasSlopeScale||0)),t.provokingVertex&&e.features.has("provoking-vertex-webgl")){let n=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,o=oe("provokingVertex",t.provokingVertex,{first:36429,last:36430});n?.provokingVertexWEBGL(o)}if((t.polygonMode||t.polygonOffsetLine)&&e.features.has("polygon-mode-webgl")){if(t.polygonMode){let n=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,o=oe("polygonMode",t.polygonMode,{fill:6914,line:6913});n?.polygonModeWEBGL(1028,o),n?.polygonModeWEBGL(1029,o)}t.polygonOffsetLine&&s.enable(10754)}if(e.features.has("shader-clip-cull-distance-webgl")&&(t.clipDistance0&&s.enable(12288),t.clipDistance1&&s.enable(12289),t.clipDistance2&&s.enable(12290),t.clipDistance3&&s.enable(12291),t.clipDistance4&&s.enable(12292),t.clipDistance5&&s.enable(12293),t.clipDistance6&&s.enable(12294),t.clipDistance7&&s.enable(12295)),t.depthWriteEnabled!==void 0&&s.depthMask(cn("depthWriteEnabled",t.depthWriteEnabled)),t.depthCompare&&(t.depthCompare!=="always"?s.enable(2929):s.disable(2929),s.depthFunc(Je("depthCompare",t.depthCompare))),t.clearDepth!==void 0&&s.clearDepth(t.clearDepth),t.stencilWriteMask){let i=t.stencilWriteMask;s.stencilMaskSeparate(1028,i),s.stencilMaskSeparate(1029,i)}if(t.stencilReadMask&&hs.log.warn("stencilReadMask not supported under WebGL"),t.stencilCompare){let i=t.stencilReadMask||4294967295,n=Je("depthCompare",t.stencilCompare);t.stencilCompare!=="always"?s.enable(2960):s.disable(2960),s.stencilFuncSeparate(1028,n,0,i),s.stencilFuncSeparate(1029,n,0,i)}if(t.stencilPassOperation&&t.stencilFailOperation&&t.stencilDepthFailOperation){let i=zt("stencilPassOperation",t.stencilPassOperation),n=zt("stencilFailOperation",t.stencilFailOperation),o=zt("stencilDepthFailOperation",t.stencilDepthFailOperation);s.stencilOpSeparate(1028,n,o,i),s.stencilOpSeparate(1029,n,o,i)}switch(t.blend){case!0:s.enable(3042);break;case!1:s.disable(3042);break;default:}if(t.blendColorOperation||t.blendAlphaOperation){let i=fs("blendColorOperation",t.blendColorOperation||"add"),n=fs("blendAlphaOperation",t.blendAlphaOperation||"add");s.blendEquationSeparate(i,n);let o=Ze("blendColorSrcFactor",t.blendColorSrcFactor||"one"),a=Ze("blendColorDstFactor",t.blendColorDstFactor||"zero"),c=Ze("blendAlphaSrcFactor",t.blendAlphaSrcFactor||"one"),l=Ze("blendAlphaDstFactor",t.blendAlphaDstFactor||"zero");s.blendFuncSeparate(o,a,c,l)}}function Je(e,t){return oe(e,t,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function zt(e,t){return oe(e,t,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function fs(e,t){return oe(e,t,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function Ze(e,t,r="color"){return oe(e,t,{one:1,zero:0,src:768,"one-minus-src":769,dst:774,"one-minus-dst":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,constant:r==="color"?32769:32771,"one-minus-constant":r==="color"?32770:32772,src1:768,"one-minus-src1":769,"src1-alpha":770,"one-minus-src1-alpha":771})}function an(e,t){return`Illegal parameter ${t} for ${e}`}function oe(e,t,r){if(!(t in r))throw new Error(an(e,t));return r[t]}function cn(e,t){return t}function ln(e){let t=!0;for(let r in e){t=!1;break}return t}var hs,Lt=g(()=>{hs=C(N(),1);fe()});function Ge(e){let t={};return e.addressModeU&&(t[10242]=Qt(e.addressModeU)),e.addressModeV&&(t[10243]=Qt(e.addressModeV)),e.addressModeW&&(t[32882]=Qt(e.addressModeW)),e.magFilter&&(t[10240]=qt(e.magFilter)),(e.minFilter||e.mipmapFilter)&&(t[10241]=_n(e.minFilter||"linear",e.mipmapFilter)),e.lodMinClamp!==void 0&&(t[33082]=e.lodMinClamp),e.lodMaxClamp!==void 0&&(t[33083]=e.lodMaxClamp),e.type==="comparison-sampler"&&(t[34892]=34894),e.compare&&(t[34893]=Je("compare",e.compare)),e.maxAnisotropy&&(t[34046]=e.maxAnisotropy),t}function Qt(e){switch(e){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function qt(e){switch(e){case"nearest":return 9728;case"linear":return 9729}}function _n(e,t="none"){if(!t)return qt(e);switch(t){case"none":return qt(e);case"nearest":switch(e){case"nearest":return 9984;case"linear":return 9985}break;case"linear":switch(e){case"nearest":return 9986;case"linear":return 9987}}}var jt=g(()=>{Lt()});var ds,et,Rs=g(()=>{ds=C(N(),1);jt();et=class extends ds.Sampler{device;handle;parameters;constructor(t,r){super(t,r),this.device=t,this.parameters=Ge(r),this.handle=r.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(t){for(let[r,s]of Object.entries(t)){let i=Number(r);switch(i){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,i,s);break;default:this.device.gl.samplerParameteri(this.handle,i,s);break}}}}});function j(e,t,r){if(fn(t))return r(e);let{nocatch:s=!0}=t,i=Y.get(e);i.push(),k(e,t);let n;if(s)n=r(e),i.pop();else try{n=r(e)}finally{i.pop()}return n}function fn(e){for(let t in e)return!1;return!0}var tt=g(()=>{fe();vt()});var rt,Z,Zt=g(()=>{rt=C(N(),1),Z=class extends rt.TextureView{device;gl;handle;texture;constructor(t,r){super(t,{...rt.Texture.defaultProps,...r}),this.device=t,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}}});function st(e){return hn[e]}var hn,Jt=g(()=>{hn={[5124]:"sint32",[5125]:"uint32",[5122]:"sint16",[5123]:"uint16",[5120]:"sint8",[5121]:"uint8",[5126]:"float32",[5131]:"float16",[33635]:"uint16",[32819]:"uint16",[32820]:"uint16",[33640]:"uint32",[35899]:"uint32",[35902]:"uint32",[34042]:"uint32",[36269]:"uint32"}});function Tn(e,t=0){return t?new e.constructor(e.buffer,e.byteOffset+t,(e.byteLength-t)/e.BYTES_PER_ELEMENT):e}function dn(e,t){if(t%e.BYTES_PER_ELEMENT!==0)throw new Error(`Texture byteOffset ${t} must align to typed array element size ${e.BYTES_PER_ELEMENT}`);return t/e.BYTES_PER_ELEMENT}function Rn(e){switch(e){case"1d":break;case"2d":return 3553;case"3d":return 32879;case"cube":return 34067;case"2d-array":return 35866;case"cube-array":break}throw new Error(e)}function it(e,t,r){return t==="cube"?34069+r:e}var ie,J,nt=g(()=>{ie=C(N(),1);de();jt();tt();Zt();Jt();J=class extends ie.Texture{device;gl;handle;sampler=void 0;view;glTarget;glFormat;glType;glInternalFormat;compressed;_textureUnit=0;_framebuffer=null;_framebufferAttachmentKey=null;constructor(t,r){super(t,r,{byteAlignment:1}),this.device=t,this.gl=this.device.gl;let s=ke(this.props.format);this.glTarget=Rn(this.props.dimension),this.glInternalFormat=s.internalFormat,this.glFormat=s.format,this.glType=s.type,this.compressed=s.compressed,this.handle=this.props.handle||this.gl.createTexture(),this.device._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.gl.bindTexture(this.glTarget,this.handle);let{dimension:i,width:n,height:o,depth:a,mipLevels:c,glTarget:l,glInternalFormat:_}=this;if(!this.compressed)switch(i){case"2d":case"cube":this.gl.texStorage2D(l,c,_,n,o);break;case"2d-array":case"3d":this.gl.texStorage3D(l,c,_,n,o,a);break;default:throw new Error(i)}this.gl.bindTexture(this.glTarget,null),this._initializeData(r.data),this.props.handle?this.trackReferencedMemory(this.getAllocatedByteLength(),"Texture"):this.trackAllocatedMemory(this.getAllocatedByteLength(),"Texture"),this.setSampler(this.props.sampler),this.view=new Z(this.device,{...this.props,texture:this}),Object.seal(this)}destroy(){this.handle&&(this._framebuffer?.destroy(),this._framebuffer=null,this._framebufferAttachmentKey=null,this.removeStats(),this.props.handle?this.trackDeallocatedReferencedMemory("Texture"):(this.gl.deleteTexture(this.handle),this.trackDeallocatedMemory("Texture")),this.destroyed=!0)}createView(t){return new Z(this.device,{...t,texture:this})}setSampler(t={}){super.setSampler(t);let r=Ge(this.sampler.props);this._setSamplerParameters(r)}copyExternalImage(t){let r=this._normalizeCopyExternalImageOptions(t);if(r.sourceX||r.sourceY)throw new Error("WebGL does not support sourceX/sourceY)");let{glFormat:s,glType:i}=this,{image:n,depth:o,mipLevel:a,x:c,y:l,z:_,width:f,height:h}=r,T=it(this.glTarget,this.dimension,_),d=r.flipY?{[37440]:!0}:{};return this.gl.bindTexture(this.glTarget,this.handle),j(this.gl,d,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(T,a,c,l,f,h,s,i,n);break;case"2d-array":case"3d":this.gl.texSubImage3D(T,a,c,l,_,f,h,o,s,i,n);break;default:}}),this.gl.bindTexture(this.glTarget,null),{width:r.width,height:r.height}}copyImageData(t){super.copyImageData(t)}readBuffer(t={},r){if(!r)throw new Error(`${this} readBuffer requires a destination buffer`);let s=this._getSupportedColorReadOptions(t),i=t.byteOffset??0,n=this.computeMemoryLayout(s);if(r.byteLength<i+n.byteLength)throw new Error(`${this} readBuffer target is too small (${r.byteLength} < ${i+n.byteLength})`);let o=r;this.gl.bindBuffer(35051,o.handle);try{this._readColorTextureLayers(s,n,a=>{this.gl.readPixels(s.x,s.y,s.width,s.height,this.glFormat,this.glType,i+a)})}finally{this.gl.bindBuffer(35051,null)}return r}async readDataAsync(t={}){throw new Error(`${this} readDataAsync is deprecated; use readBuffer() with an explicit destination buffer or DynamicTexture.readAsync()`)}writeBuffer(t,r={}){let s=this._normalizeTextureWriteOptions(r),{width:i,height:n,depthOrArrayLayers:o,mipLevel:a,byteOffset:c,x:l,y:_,z:f}=s,{glFormat:h,glType:T,compressed:d}=this,R=it(this.glTarget,this.dimension,f);if(d)throw new Error("writeBuffer for compressed textures is not implemented in WebGL");let{bytesPerPixel:A}=this.device.getTextureFormatInfo(this.format),p=A?s.bytesPerRow/A:void 0,b={[3317]:this.byteAlignment,...p!==void 0?{[3314]:p}:{},[32878]:s.rowsPerImage};this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,t.handle),j(this.gl,b,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(R,a,l,_,i,n,h,T,c);break;case"2d-array":case"3d":this.gl.texSubImage3D(R,a,l,_,f,i,n,o,h,T,c);break;default:}}),this.gl.bindBuffer(35052,null),this.gl.bindTexture(this.glTarget,null)}writeData(t,r={}){let s=this._normalizeTextureWriteOptions(r),i=ArrayBuffer.isView(t)?t:new Uint8Array(t),{width:n,height:o,depthOrArrayLayers:a,mipLevel:c,x:l,y:_,z:f,byteOffset:h}=s,{glFormat:T,glType:d,compressed:R}=this,A=it(this.glTarget,this.dimension,f),p;if(!R){let{bytesPerPixel:u}=this.device.getTextureFormatInfo(this.format);u&&(p=s.bytesPerRow/u)}let b=this.compressed?{}:{[3317]:this.byteAlignment,...p!==void 0?{[3314]:p}:{},[32878]:s.rowsPerImage},M=dn(i,h),E=R?Tn(i,h):i,S=this._getMipLevelSize(c),x=l===0&&_===0&&f===0&&n===S.width&&o===S.height&&a===S.depthOrArrayLayers;this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,null),j(this.gl,b,()=>{switch(this.dimension){case"2d":case"cube":R?x?this.gl.compressedTexImage2D(A,c,T,n,o,0,E):this.gl.compressedTexSubImage2D(A,c,l,_,n,o,T,E):this.gl.texSubImage2D(A,c,l,_,n,o,T,d,i,M);break;case"2d-array":case"3d":R?x?this.gl.compressedTexImage3D(A,c,T,n,o,a,0,E):this.gl.compressedTexSubImage3D(A,c,l,_,f,n,o,a,T,E):this.gl.texSubImage3D(A,c,l,_,f,n,o,a,T,d,i,M);break;default:}}),this.gl.bindTexture(this.glTarget,null)}_getRowByteAlignment(t,r){return 1}_getFramebuffer(){return this._framebuffer||=this.device.createFramebuffer({id:`framebuffer-for-${this.id}`,width:this.width,height:this.height,colorAttachments:[this]}),this._framebuffer}readDataSyncWebGL(t={}){let r=this._getSupportedColorReadOptions(t),s=this.computeMemoryLayout(r),i=st(this.glType),n=(0,ie.getTypedArrayConstructor)(i),o=new n(s.byteLength/n.BYTES_PER_ELEMENT);return this._readColorTextureLayers(r,s,a=>{let c=new n(o.buffer,o.byteOffset+a,s.bytesPerImage/n.BYTES_PER_ELEMENT);this.gl.readPixels(r.x,r.y,r.width,r.height,this.glFormat,this.glType,c)}),o.buffer}_readColorTextureLayers(t,r,s){let i=this._getFramebuffer(),n=r.bytesPerRow/r.bytesPerPixel,o={[3333]:this.byteAlignment,...n!==t.width?{[3330]:n}:{}},a=this.gl.getParameter(3074),c=this.gl.bindFramebuffer(36160,i.handle);try{this.gl.readBuffer(36064),j(this.gl,o,()=>{for(let l=0;l<t.depthOrArrayLayers;l++)this._attachReadSubresource(i,t.mipLevel,t.z+l),s(l*r.bytesPerImage)})}finally{this.gl.bindFramebuffer(36160,c||null),this.gl.readBuffer(a)}}_attachReadSubresource(t,r,s){let i=`${r}:${s}`;if(this._framebufferAttachmentKey!==i){switch(this.dimension){case"2d":this.gl.framebufferTexture2D(36160,36064,3553,this.handle,r);break;case"cube":this.gl.framebufferTexture2D(36160,36064,it(this.glTarget,this.dimension,s),this.handle,r);break;case"2d-array":case"3d":this.gl.framebufferTextureLayer(36160,36064,this.handle,r,s);break;default:throw new Error(`${this} color readback does not support ${this.dimension} textures`)}if(this.device.props.debug){let n=Number(this.gl.checkFramebufferStatus(36160));if(n!==Number(36053))throw new Error(`${t} incomplete for ${this} readback (${n})`)}this._framebufferAttachmentKey=i}}generateMipmapsWebGL(t){if(!(!(this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format))&&(ie.log.warn(`${this} is not renderable or filterable, may not be able to generate mipmaps`)(),!t?.force)))try{this.gl.bindTexture(this.glTarget,this.handle),this.gl.generateMipmap(this.glTarget)}catch(s){ie.log.warn(`Error generating mipmap for ${this}: ${s.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}_setSamplerParameters(t){ie.log.log(2,`${this.id} sampler parameters`,this.device.getGLKeys(t))(),this.gl.bindTexture(this.glTarget,this.handle);for(let[r,s]of Object.entries(t)){let i=Number(r),n=s;switch(i){case 33082:case 33083:this.gl.texParameterf(this.glTarget,i,n);break;case 10240:case 10241:this.gl.texParameteri(this.glTarget,i,n);break;case 10242:case 10243:case 32882:this.gl.texParameteri(this.glTarget,i,n);break;case 34046:this.device.features.has("texture-filterable-anisotropic-webgl")&&this.gl.texParameteri(this.glTarget,i,n);break;case 34892:case 34893:this.gl.texParameteri(this.glTarget,i,n);break}}this.gl.bindTexture(this.glTarget,null)}_getActiveUnit(){return this.gl.getParameter(34016)-33984}_bind(t){let{gl:r}=this;return t!==void 0&&(this._textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,this.handle),t}_unbind(t){let{gl:r}=this;return t!==void 0&&(this._textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,null),t}}});function As(e,t,r,s){let i=e,n=s;n===!0&&(n=1),n===!1&&(n=0);let o=typeof n=="number"?[n]:n;switch(r){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if(typeof s!="number")throw new Error("samplers must be set to integers");return e.uniform1i(t,s);case 5126:return e.uniform1fv(t,o);case 35664:return e.uniform2fv(t,o);case 35665:return e.uniform3fv(t,o);case 35666:return e.uniform4fv(t,o);case 5124:return e.uniform1iv(t,o);case 35667:return e.uniform2iv(t,o);case 35668:return e.uniform3iv(t,o);case 35669:return e.uniform4iv(t,o);case 35670:return e.uniform1iv(t,o);case 35671:return e.uniform2iv(t,o);case 35672:return e.uniform3iv(t,o);case 35673:return e.uniform4iv(t,o);case 5125:return i.uniform1uiv(t,o,1);case 36294:return i.uniform2uiv(t,o,2);case 36295:return i.uniform3uiv(t,o,3);case 36296:return i.uniform4uiv(t,o,4);case 35674:return e.uniformMatrix2fv(t,!1,o);case 35675:return e.uniformMatrix3fv(t,!1,o);case 35676:return e.uniformMatrix4fv(t,!1,o);case 35685:return i.uniformMatrix2x3fv(t,!1,o);case 35686:return i.uniformMatrix2x4fv(t,!1,o);case 35687:return i.uniformMatrix3x2fv(t,!1,o);case 35688:return i.uniformMatrix3x4fv(t,!1,o);case 35689:return i.uniformMatrix4x2fv(t,!1,o);case 35690:return i.uniformMatrix4x3fv(t,!1,o)}throw new Error("Illegal uniform")}var ps=g(()=>{});function gs(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"triangle-list":return 4;case"triangle-strip":return 5;default:throw new Error(e)}}function Ss(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 1;case"triangle-list":return 4;case"triangle-strip":return 4;default:throw new Error(e)}}var Gt=g(()=>{});function An(e,t){let r={...e,attributes:e.attributes.map(s=>({...s})),bindings:e.bindings.map(s=>({...s}))};for(let s of t?.attributes||[]){let i=r.attributes.find(n=>n.name===s.name);i?(i.type=s.type||i.type,i.stepMode=s.stepMode||i.stepMode):y.log.warn(`shader layout attribute ${s.name} not present in shader`)}for(let s of t?.bindings||[]){let i=Ms(r,s.name);if(!i){y.log.warn(`shader layout binding ${s.name} not present in shader`);continue}Object.assign(i,s)}return r}function Ms(e,t){return e.bindings.find(r=>r.name===t||r.name===`${t}Uniforms`||`${r.name}Uniforms`===t)}function Es(e,t){return e[t]||e[`${t}Uniforms`]||e[t.replace(/Uniforms$/,"")]}var y,ot,xs=g(()=>{y=C(N(),1);Lt();ps();Qe();$e();nt();Zt();Gt();ot=class extends y.RenderPipeline{device;handle;vs;fs;introspectedLayout;bindings={};uniforms={};varyings=null;_uniformCount=0;_uniformSetters={};get[Symbol.toStringTag](){return"WEBGLRenderPipeline"}constructor(t,r){super(t,r),this.device=t;let s=this.sharedRenderPipeline||this.device._createSharedRenderPipelineWebGL(r);this.sharedRenderPipeline=s,this.handle=s.handle,this.vs=s.vs,this.fs=s.fs,this.linkStatus=s.linkStatus,this.introspectedLayout=s.introspectedLayout,this.device._setWebGLDebugMetadata(this.handle,this,{spector:{id:this.props.id}}),this.shaderLayout=r.shaderLayout?An(this.introspectedLayout,r.shaderLayout):this.introspectedLayout}destroy(){this.destroyed||(this.sharedRenderPipeline&&!this.props._sharedRenderPipeline&&this.sharedRenderPipeline.destroy(),this.destroyResource())}setBindings(t,r){let s=(0,y.flattenBindingsByGroup)((0,y.normalizeBindingsByGroup)(this.shaderLayout,t));for(let[i,n]of Object.entries(s)){let o=Ms(this.shaderLayout,i);if(!o){let a=this.shaderLayout.bindings.map(c=>`"${c.name}"`).join(", ");r?.disableWarnings||y.log.warn(`No binding "${i}" in render pipeline "${this.id}", expected one of ${a}`,n)();continue}switch(n||y.log.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),o.type){case"uniform":if(!(n instanceof $)&&!(n.buffer instanceof $))throw new Error("buffer value");break;case"texture":if(!(n instanceof Z||n instanceof J||n instanceof q))throw new Error(`${this} Bad texture binding for ${i}`);break;case"sampler":y.log.warn(`Ignoring sampler ${i}`)();break;default:throw new Error(o.type)}this.bindings[i]=n}}draw(t){this._syncLinkStatus();let r=t.bindGroups?(0,y.flattenBindingsByGroup)(t.bindGroups):t.bindings||this.bindings,{renderPass:s,parameters:i=this.props.parameters,topology:n=this.props.topology,vertexArray:o,vertexCount:a,instanceCount:c,isInstanced:l=!1,firstVertex:_=0,transformFeedback:f,uniforms:h=this.uniforms}=t,T=gs(n),d=Boolean(o.indexBuffer),R=o.indexBuffer?.glIndexType;if(this.linkStatus!=="success")return y.log.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable(r))return y.log.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(this.handle),o.bindBeforeRender(s),f&&f.begin(this.props.topology),this._applyBindings(r,{disableWarnings:this.props.disableWarnings}),this._applyUniforms(h);let A=s;return Ts(this.device,i,A.glParameters,()=>{d&&l?this.device.gl.drawElementsInstanced(T,a||0,R,_,c||0):d?this.device.gl.drawElements(T,a||0,R,_):l?this.device.gl.drawArraysInstanced(T,_,a||0,c||0):this.device.gl.drawArrays(T,_,a||0),f&&f.end()}),o.unbindAfterRender(s),!0}_areTexturesRenderable(t){let r=!0;for(let s of this.shaderLayout.bindings)Es(t,s.name)||(y.log.warn(`Binding ${s.name} not found in ${this.id}`)(),r=!1);return r}_applyBindings(t,r){if(this._syncLinkStatus(),this.linkStatus!=="success")return;let{gl:s}=this.device;s.useProgram(this.handle);let i=0,n=0;for(let o of this.shaderLayout.bindings){let a=Es(t,o.name);if(!a)throw new Error(`No value for binding ${o.name} in ${this.id}`);switch(o.type){case"uniform":let{name:c}=o,l=s.getUniformBlockIndex(this.handle,c);if(l===4294967295)throw new Error(`Invalid uniform block name ${c}`);if(s.uniformBlockBinding(this.handle,l,n),a instanceof $)s.bindBufferBase(35345,n,a.handle);else{let f=a;s.bindBufferRange(35345,n,f.buffer.handle,f.offset||0,f.size||f.buffer.byteLength-(f.offset||0))}n+=1;break;case"texture":if(!(a instanceof Z||a instanceof J||a instanceof q))throw new Error("texture");let _;if(a instanceof Z)_=a.texture;else if(a instanceof J)_=a;else if(a instanceof q&&a.colorAttachments[0]instanceof Z)y.log.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),_=a.colorAttachments[0].texture;else throw new Error("No texture");s.activeTexture(33984+i),s.bindTexture(_.glTarget,_.handle),i+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw new Error(`binding type '${o.type}' not supported in WebGL`)}}}_applyUniforms(t){for(let r of this.shaderLayout.uniforms||[]){let{name:s,location:i,type:n,textureUnit:o}=r,a=t[s]??o;a!==void 0&&As(this.device.gl,i,n,a)}}_syncLinkStatus(){this.linkStatus=this.sharedRenderPipeline.linkStatus}}});function bs(e){return gn[e]}function at(e){return pn[e]}function ct(e){return Boolean(Ns[e])}function Cs(e){return Ns[e]}var pn,Ns,gn,lt=g(()=>{pn={[5126]:"f32",[35664]:"vec2<f32>",[35665]:"vec3<f32>",[35666]:"vec4<f32>",[5124]:"i32",[35667]:"vec2<i32>",[35668]:"vec3<i32>",[35669]:"vec4<i32>",[5125]:"u32",[36294]:"vec2<u32>",[36295]:"vec3<u32>",[36296]:"vec4<u32>",[35670]:"f32",[35671]:"vec2<f32>",[35672]:"vec3<f32>",[35673]:"vec4<f32>",[35674]:"mat2x2<f32>",[35685]:"mat2x3<f32>",[35686]:"mat2x4<f32>",[35687]:"mat3x2<f32>",[35675]:"mat3x3<f32>",[35688]:"mat3x4<f32>",[35689]:"mat4x2<f32>",[35690]:"mat4x3<f32>",[35676]:"mat4x4<f32>"},Ns={[35678]:{viewDimension:"2d",sampleType:"float"},[35680]:{viewDimension:"cube",sampleType:"float"},[35679]:{viewDimension:"3d",sampleType:"float"},[35682]:{viewDimension:"3d",sampleType:"depth"},[36289]:{viewDimension:"2d-array",sampleType:"float"},[36292]:{viewDimension:"2d-array",sampleType:"depth"},[36293]:{viewDimension:"cube",sampleType:"float"},[36298]:{viewDimension:"2d",sampleType:"sint"},[36299]:{viewDimension:"3d",sampleType:"sint"},[36300]:{viewDimension:"cube",sampleType:"sint"},[36303]:{viewDimension:"2d-array",sampleType:"uint"},[36306]:{viewDimension:"2d",sampleType:"uint"},[36307]:{viewDimension:"3d",sampleType:"uint"},[36308]:{viewDimension:"cube",sampleType:"uint"},[36311]:{viewDimension:"2d-array",sampleType:"uint"}},gn={uint8:5121,sint8:5120,unorm8:5121,snorm8:5120,uint16:5123,sint16:5122,unorm16:5123,snorm16:5122,uint32:5125,sint32:5124,float16:5131,float32:5126}});function Os(e,t){let r={attributes:[],bindings:[]};r.attributes=Sn(e,t);let s=xn(e,t);for(let a of s){let c=a.uniforms.map(l=>({name:l.name,format:l.format,byteOffset:l.byteOffset,byteStride:l.byteStride,arrayLength:l.arrayLength}));r.bindings.push({type:"uniform",name:a.name,group:0,location:a.location,visibility:(a.vertex?1:0)&(a.fragment?2:0),minBindingSize:a.byteLength,uniforms:c})}let i=Mn(e,t),n=0;for(let a of i)if(ct(a.type)){let{viewDimension:c,sampleType:l}=Cs(a.type);r.bindings.push({type:"texture",name:a.name,group:0,location:n,viewDimension:c,sampleType:l}),a.textureUnit=n,n+=1}i.length&&(r.uniforms=i);let o=En(e,t);return o?.length&&(r.varyings=o),r}function Sn(e,t){let r=[],s=e.getProgramParameter(t,35721);for(let i=0;i<s;i++){let n=e.getActiveAttrib(t,i);if(!n)throw new Error("activeInfo");let{name:o,type:a}=n,c=e.getAttribLocation(t,o);if(c>=0){let l=at(a),_=/instance/i.test(o)?"instance":"vertex";r.push({name:o,location:c,stepMode:_,type:l})}}return r.sort((i,n)=>i.location-n.location),r}function En(e,t){let r=[],s=e.getProgramParameter(t,35971);for(let i=0;i<s;i++){let n=e.getTransformFeedbackVarying(t,i);if(!n)throw new Error("activeInfo");let{name:o,type:a,size:c}=n,l=at(a),{type:_,components:f}=(0,Re.getVariableShaderTypeInfo)(l);r.push({location:i,name:o,type:_,size:c*f})}return r.sort((i,n)=>i.location-n.location),r}function Mn(e,t){let r=[],s=e.getProgramParameter(t,35718);for(let i=0;i<s;i++){let n=e.getActiveUniform(t,i);if(!n)throw new Error("activeInfo");let{name:o,size:a,type:c}=n,{name:l,isArray:_}=bn(o),f=e.getUniformLocation(t,l),h={location:f,name:l,size:a,type:c,isArray:_};if(r.push(h),h.size>1)for(let T=0;T<h.size;T++){let d=`${l}[${T}]`;f=e.getUniformLocation(t,d);let R={...h,name:d,location:f};r.push(R)}}return r}function xn(e,t){let r=(n,o)=>e.getActiveUniformBlockParameter(t,n,o),s=[],i=e.getProgramParameter(t,35382);for(let n=0;n<i;n++){let o={name:e.getActiveUniformBlockName(t,n)||"",location:r(n,35391),byteLength:r(n,35392),vertex:r(n,35396),fragment:r(n,35398),uniformCount:r(n,35394),uniforms:[]},a=r(n,35395)||[],c=e.getActiveUniforms(t,a,35383),l=e.getActiveUniforms(t,a,35384),_=e.getActiveUniforms(t,a,35387),f=e.getActiveUniforms(t,a,35388);for(let d=0;d<o.uniformCount;++d){let R=a[d];if(R!==void 0){let A=e.getActiveUniform(t,R);if(!A)throw new Error("activeInfo");let p=at(c[d]);o.uniforms.push({name:A.name,format:p,type:c[d],arrayLength:l[d],byteOffset:_[d],byteStride:f[d]})}}let h=new Set(o.uniforms.map(d=>d.name.split(".")[0]).filter(d=>Boolean(d))),T=o.name.replace(/Uniforms$/,"");if(h.size===1&&!h.has(o.name)&&!h.has(T)){let[d]=h;Re.log.warn(`Uniform block "${o.name}" uses GLSL instance "${d}". luma.gl binds uniform buffers by block name ("${o.name}") and alias ("${T}"). Prefer matching the instance name to one of those to avoid confusing silent mismatches.`)()}s.push(o)}return s.sort((n,o)=>n.location-o.location),s}function bn(e){if(e[e.length-1]!=="]")return{name:e,length:1,isArray:!1};let r=/([^[]*)(\[[0-9]+\])?/.exec(e);return{name:(0,Re.assertDefined)(r?.[1],`Failed to parse GLSL uniform name ${e}`),length:r?.[2]?1:0,isArray:Boolean(r?.[2])}}var Re,Is=g(()=>{Re=C(N(),1);lt()});var G,Ps,_t,us=g(()=>{G=C(N(),1);Is();lt();Ps=4,_t=class extends G.SharedRenderPipeline{device;handle;vs;fs;introspectedLayout={attributes:[],bindings:[],uniforms:[]};linkStatus="pending";constructor(t,r){super(t,r),this.device=t,this.handle=r.handle||this.device.gl.createProgram(),this.vs=r.vs,this.fs=r.fs,r.varyings&&r.varyings.length>0&&this.device.gl.transformFeedbackVaryings(this.handle,r.varyings,r.bufferMode||35981),this._linkShaders(),G.log.time(3,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=Os(this.device.gl,this.handle),G.log.timeEnd(3,`RenderPipeline ${this.id} - shaderLayout introspection`)()}destroy(){this.destroyed||(this.device.gl.useProgram(null),this.device.gl.deleteProgram(this.handle),this.handle.destroyed=!0,this.destroyResource())}async _linkShaders(){let{gl:t}=this.device;if(t.attachShader(this.handle,this.vs.handle),t.attachShader(this.handle,this.fs.handle),G.log.time(Ps,`linkProgram for ${this.id}`)(),t.linkProgram(this.handle),G.log.timeEnd(Ps,`linkProgram for ${this.id}`)(),!this.device.features.has("compilation-status-async-webgl")){let s=this._getLinkStatus();this._reportLinkStatus(s);return}G.log.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),G.log.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();let r=this._getLinkStatus();this._reportLinkStatus(r)}async _reportLinkStatus(t){switch(t){case"success":return;default:let r=t==="link-error"?"Link error":"Validation error";switch(this.vs.compilationStatus){case"error":throw this.vs.debugShader(),new Error(`${this} ${r} during compilation of ${this.vs}`);case"pending":await this.vs.asyncCompilationStatus,this.vs.debugShader();break;case"success":break}switch(this.fs?.compilationStatus){case"error":throw this.fs.debugShader(),new Error(`${this} ${r} during compilation of ${this.fs}`);case"pending":await this.fs.asyncCompilationStatus,this.fs.debugShader();break;case"success":break}let s=this.device.gl.getProgramInfoLog(this.handle);this.device.reportError(new Error(`${r} during ${t}: ${s}`),this)(),this.device.debug()}}_getLinkStatus(){let{gl:t}=this.device;return t.getProgramParameter(this.handle,35714)?(this._initializeSamplerUniforms(),t.validateProgram(this.handle),t.getProgramParameter(this.handle,35715)?(this.linkStatus="success","success"):(this.linkStatus="error","validation-error")):(this.linkStatus="error","link-error")}_initializeSamplerUniforms(){let{gl:t}=this.device;t.useProgram(this.handle);let r=0,s=t.getProgramParameter(this.handle,35718);for(let i=0;i<s;i++){let n=t.getActiveUniform(this.handle,i);if(n&&ct(n.type)){let o=n.name.endsWith("[0]"),a=o?n.name.slice(0,-3):n.name,c=t.getUniformLocation(this.handle,a);c!==null&&(r=this._assignSamplerUniform(c,n,o,r))}}}_assignSamplerUniform(t,r,s,i){let{gl:n}=this.device;if(s&&r.size>1){let o=Int32Array.from({length:r.size},(a,c)=>i+c);return n.uniform1iv(t,o),i+r.size}return n.uniform1i(t,i),i+1}async _waitForLinkComplete(){let t=async i=>await new Promise(n=>setTimeout(n,i));if(!this.device.features.has("compilation-status-async-webgl")){await t(10);return}let{gl:s}=this.device;for(;;){if(s.getProgramParameter(this.handle,37297))return;await t(10)}}}});function Cn(e,t){let r=t.sourceBuffer,s=t.destinationBuffer;e.gl.bindBuffer(36662,r.handle),e.gl.bindBuffer(36663,s.handle),e.gl.copyBufferSubData(36662,36663,t.sourceOffset??0,t.destinationOffset??0,t.size),e.gl.bindBuffer(36662,null),e.gl.bindBuffer(36663,null)}function Nn(e,t){throw new Error("copyBufferToTexture is not supported in WebGL")}function On(e,t){let{sourceTexture:r,mipLevel:s=0,aspect:i="all",width:n=t.sourceTexture.width,height:o=t.sourceTexture.height,depthOrArrayLayers:a,origin:c=[0,0,0],destinationBuffer:l,byteOffset:_=0,bytesPerRow:f,rowsPerImage:h}=t;if(r instanceof ae.Texture){r.readBuffer({x:c[0]??0,y:c[1]??0,z:c[2]??0,width:n,height:o,depthOrArrayLayers:a,mipLevel:s,aspect:i,byteOffset:_},l);return}if(i!=="all")throw new Error("aspect not supported in WebGL");if(s!==0||a!==void 0||f||h)throw new Error("not implemented");let{framebuffer:T,destroyFramebuffer:d}=Fs(r),R;try{let A=l,p=n||T.width,b=o||T.height,M=(0,ae.assertDefined)(T.colorAttachments[0]),E=ke(M.texture.props.format),S=E.format,x=E.type;e.gl.bindBuffer(35051,A.handle),R=e.gl.bindFramebuffer(36160,T.handle),e.gl.readPixels(c[0],c[1],p,b,S,x,_)}finally{e.gl.bindBuffer(35051,null),R!==void 0&&e.gl.bindFramebuffer(36160,R),d&&T.destroy()}}function In(e,t){let{sourceTexture:r,destinationMipLevel:s=0,origin:i=[0,0],destinationOrigin:n=[0,0,0],destinationTexture:o}=t,{width:a=t.destinationTexture.width,height:c=t.destinationTexture.height}=t,{framebuffer:l,destroyFramebuffer:_}=Fs(r),[f=0,h=0]=i,[T,d,R]=n,A=e.gl.bindFramebuffer(36160,l.handle),p,b;if(o instanceof J)p=o,a=Number.isFinite(a)?a:p.width,c=Number.isFinite(c)?c:p.height,p._bind(0),b=p.glTarget;else throw new Error("invalid destination");switch(b){case 3553:case 34067:e.gl.copyTexSubImage2D(b,s,T,d,f,h,a,c);break;case 35866:case 32879:e.gl.copyTexSubImage3D(b,s,T,d,R,f,h,a,c);break;default:}p&&p._unbind(),e.gl.bindFramebuffer(36160,A),_&&l.destroy()}function Fs(e){if(e instanceof ae.Texture){let{width:t,height:r,id:s}=e;return{framebuffer:e.device.createFramebuffer({id:`framebuffer-for-${s}`,width:t,height:r,colorAttachments:[e]}),destroyFramebuffer:!0}}return{framebuffer:e,destroyFramebuffer:!1}}var ae,ft,Bs=g(()=>{ae=C(N(),1);de();nt();ft=class extends ae.CommandBuffer{device;handle=null;commands=[];constructor(t,r={}){super(t,r),this.device=t}_executeCommands(t=this.commands){for(let r of t)switch(r.name){case"copy-buffer-to-buffer":Cn(this.device,r.options);break;case"copy-buffer-to-texture":Nn(this.device,r.options);break;case"copy-texture-to-buffer":On(this.device,r.options);break;case"copy-texture-to-texture":In(this.device,r.options);break;default:throw new Error(r.name)}}}});var Ds,Pn,ht,ys=g(()=>{Ds=C(N(),1);tt();fe();Pn=[1,2,4,8],ht=class extends Ds.RenderPass{device;handle=null;glParameters={};constructor(t,r){super(t,r),this.device=t;let s=this.props.framebuffer,i=!s||s.handle===null;i&&t.getDefaultCanvasContext()._resizeDrawingBufferIfNeeded();let n;if(!r?.parameters?.viewport)if(i){let[o,a]=t.getDefaultCanvasContext().getDrawingBufferSize();n=[0,0,o,a]}else{let{width:o,height:a}=s;n=[0,0,o,a]}if(this.device.pushState(),this.setParameters({viewport:n,...this.props.parameters}),i)this.device.gl.drawBuffers([1029]);else{let o=s.colorAttachments.map((a,c)=>36064+c);this.device.gl.drawBuffers(o)}this.clear(),this.props.timestampQuerySet&&this.props.beginTimestampIndex!==void 0&&this.props.timestampQuerySet.writeTimestamp(this.props.beginTimestampIndex)}end(){this.destroyed||(this.props.timestampQuerySet&&this.props.endTimestampIndex!==void 0&&this.props.timestampQuerySet.writeTimestamp(this.props.endTimestampIndex),this.device.popState(),this.destroy())}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}setParameters(t={}){let r={...this.glParameters};r.framebuffer=this.props.framebuffer||null,this.props.depthReadOnly&&(r.depthMask=!this.props.depthReadOnly),r.stencilMask=this.props.stencilReadOnly?0:1,r[35977]=this.props.discard,t.viewport&&(t.viewport.length>=6?(r.viewport=t.viewport.slice(0,4),r.depthRange=[t.viewport[4],t.viewport[5]]):r.viewport=t.viewport),t.scissorRect&&(r.scissorTest=!0,r.scissor=t.scissorRect),t.blendConstant&&(r.blendColor=t.blendConstant),t.stencilReference!==void 0&&(r[2967]=t.stencilReference,r[36003]=t.stencilReference),"colorMask"in t&&(r.colorMask=Pn.map(s=>Boolean(s&t.colorMask))),this.glParameters=r,k(this.device.gl,r)}beginOcclusionQuery(t){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let t={...this.glParameters},r=0;this.props.clearColors&&this.props.clearColors.forEach((s,i)=>{s&&this.clearColorBuffer(i,s)}),this.props.clearColor!==!1&&this.props.clearColors===void 0&&(r|=16384,t.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(r|=256,t.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(r|=1024,t.clearStencil=this.props.clearStencil),r!==0&&j(this.device.gl,t,()=>{this.device.gl.clear(r)})}clearColorBuffer(t=0,r=[0,0,0,0]){j(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(r.constructor){case Int8Array:case Int16Array:case Int32Array:this.device.gl.clearBufferiv(6144,t,r);break;case Uint8Array:case Uint8ClampedArray:case Uint16Array:case Uint32Array:this.device.gl.clearBufferuiv(6144,t,r);break;case Float32Array:this.device.gl.clearBufferfv(6144,t,r);break;default:throw new Error("clearColorBuffer: color must be typed array")}})}}});var ws,Pe,Us=g(()=>{ws=C(N(),1);Bs();ys();Pe=class extends ws.CommandEncoder{device;handle=null;commandBuffer;constructor(t,r){super(t,r),this.device=t,this.commandBuffer=new ft(t,{id:`${this.props.id}-command-buffer`})}destroy(){this.destroyResource()}finish(t){return t?.id&&this.commandBuffer.id!==t.id&&(this.commandBuffer.id=t.id,this.commandBuffer.props.id=t.id),this.destroy(),this.commandBuffer}beginRenderPass(t={}){return new ht(this.device,this._applyTimeProfilingToPassProps(t))}beginComputePass(t={}){throw new Error("ComputePass not supported in WebGL")}copyBufferToBuffer(t){this.commandBuffer.commands.push({name:"copy-buffer-to-buffer",options:t})}copyBufferToTexture(t){this.commandBuffer.commands.push({name:"copy-buffer-to-texture",options:t})}copyTextureToBuffer(t){this.commandBuffer.commands.push({name:"copy-texture-to-buffer",options:t})}copyTextureToTexture(t){this.commandBuffer.commands.push({name:"copy-texture-to-texture",options:t})}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}resolveQuerySet(t,r,s){throw new Error("resolveQuerySet is not supported in WebGL")}writeTimestamp(t,r){t.writeTimestamp(r)}}});function ms(e){let{target:t,source:r,start:s=0,count:i=1}=e,n=r.length,o=i*n,a=0;for(let c=s;a<n;a++)t[c++]=r[a]??0;for(;a<o;)a<o-a?(t.copyWithin(s+a,s,s+a),a*=2):(t.copyWithin(s+a,s,s+o-a),a=o);return e.target}var vs=g(()=>{});function un(e){return Array.isArray(e)?new Float32Array(e):e}function Fn(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}var Tt,Ae,Ws=g(()=>{Tt=C(N(),1);Cr();Wt();vs();Ae=class extends Tt.VertexArray{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(t){return Dt()==="Chrome"}constructor(t,r){super(t,r),this.device=t,this.handle=this.device.gl.createVertexArray()}destroy(){super.destroy(),this.buffer&&this.buffer?.destroy(),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(t){let r=t;if(r&&r.glTarget!==34963)throw new Error("Use .setBuffer()");this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,r?r.handle:null),this.indexBuffer=r,this.device.gl.bindVertexArray(null)}setBuffer(t,r){let s=r;if(s.glTarget===34963)throw new Error("Use .setIndexBuffer()");let{size:i,type:n,stride:o,offset:a,normalized:c,integer:l,divisor:_}=this._getAccessor(t);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,s.handle),l?this.device.gl.vertexAttribIPointer(t,i,n,o,a):this.device.gl.vertexAttribPointer(t,i,n,c,o,a),this.device.gl.bindBuffer(34962,null),this.device.gl.enableVertexAttribArray(t),this.device.gl.vertexAttribDivisor(t,_||0),this.attributes[t]=s,this.device.gl.bindVertexArray(null)}setConstantWebGL(t,r){this._enable(t,!1),this.attributes[t]=r}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let t=0;t<this.maxVertexAttributes;++t){let r=this.attributes[t];ArrayBuffer.isView(r)&&this.device.setConstantAttributeWebGL(t,r)}}_getAccessor(t){let r=this.attributeInfos[t];if(!r)throw new Error(`Unknown attribute location ${t}`);let s=We(r.bufferDataType);return{size:r.bufferComponents,type:s,stride:r.byteStride,offset:r.byteOffset,normalized:r.normalized,integer:r.integer,divisor:r.stepMode==="instance"?1:0}}_enable(t,r=!0){let i=Ae.isConstantAttributeZeroSupported(this.device)||t!==0;(r||i)&&(t=Number(t),this.device.gl.bindVertexArray(this.handle),r?this.device.gl.enableVertexAttribArray(t):this.device.gl.disableVertexAttribArray(t),this.device.gl.bindVertexArray(null))}getConstantBuffer(t,r){let s=un(r),i=s.byteLength*t,n=s.length*t;if(this.buffer&&i!==this.buffer.byteLength)throw new Error(`Buffer size is immutable, byte length ${i} !== ${this.buffer.byteLength}.`);let o=!this.buffer;if(this.buffer=this.buffer||this.device.createBuffer({byteLength:i}),o||=!Fn(s,this.bufferValue),o){let a=(0,Tt.getScratchArray)(r.constructor,n);ms({target:a,source:s,start:0,count:n}),this.buffer.write(a),this.bufferValue=r}return this.buffer}}});function Xs(e){return typeof e=="number"?Number.isInteger(e):/^\d+$/.test(e)}var Rt,dt,Hs=g(()=>{Rt=C(N(),1);er();Gt();dt=class extends Rt.TransformFeedback{device;gl;handle;layout;buffers={};unusedBuffers={};bindOnUse=!0;_bound=!1;constructor(t,r){super(t,r),this.device=t,this.gl=t.gl,this.handle=this.props.handle||this.gl.createTransformFeedback(),this.layout=this.props.layout,r.buffers&&this.setBuffers(r.buffers),Object.seal(this)}destroy(){this.gl.deleteTransformFeedback(this.handle),super.destroy()}begin(t="point-list"){this.gl.bindTransformFeedback(36386,this.handle),this.bindOnUse&&this._bindBuffers(),this.gl.beginTransformFeedback(Ss(t))}end(){this.gl.endTransformFeedback(),this.bindOnUse&&this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null)}setBuffers(t){this.buffers={},this.unusedBuffers={},this.bind(()=>{for(let[r,s]of Object.entries(t))this.setBuffer(r,s)})}setBuffer(t,r){let s=this._getVaryingIndex(t),{buffer:i,byteLength:n,byteOffset:o}=this._getBufferRange(r);if(s<0){this.unusedBuffers[t]=i,Rt.log.warn(`${this.id} unusedBuffers varying buffer ${t}`)();return}this.buffers[s]={buffer:i,byteLength:n,byteOffset:o},this.bindOnUse||this._bindBuffer(s,i,o,n)}getBuffer(t){if(Xs(t))return this.buffers[t]||null;let r=this._getVaryingIndex(t);return this.buffers[r]??null}bind(t=this.handle){if(typeof t!="function")return this.gl.bindTransformFeedback(36386,t),this;let r;return this._bound?r=t():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,r=t(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),r}unbind(){this.bind(null)}_getBufferRange(t){if(t instanceof $)return{buffer:t,byteOffset:0,byteLength:t.byteLength};let{buffer:r,byteOffset:s=0,byteLength:i=t.buffer.byteLength}=t;return{buffer:r,byteOffset:s,byteLength:i}}_getVaryingIndex(t){if(Xs(t))return Number(t);for(let r of this.layout.varyings||[])if(t===r.name)return r.location;return-1}_bindBuffers(){for(let[t,r]of Object.entries(this.buffers)){let{buffer:s,byteLength:i,byteOffset:n}=this._getBufferRange(r);this._bindBuffer(Number(t),s,n,i)}}_unbindBuffers(){for(let t in this.buffers)this.gl.bindBufferBase(35982,Number(t),null)}_bindBuffer(t,r,s=0,i){let n=r&&r.handle;!n||i===void 0?this.gl.bindBufferBase(35982,t,n):this.gl.bindBufferRange(35982,t,n,s,i)}}});var Vs,At,ks=g(()=>{Vs=C(N(),1),At=class extends Vs.QuerySet{device;handle;_timestampPairs=[];_pendingReads=new Set;_occlusionQuery=null;_occlusionActive=!1;get[Symbol.toStringTag](){return"QuerySet"}constructor(t,r){if(super(t,r),this.device=t,r.type==="timestamp"){if(r.count<2)throw new Error("Timestamp QuerySet requires at least two query slots");this._timestampPairs=new Array(Math.ceil(r.count/2)).fill(null).map(()=>({activeQuery:null,completedQueries:[]})),this.handle=null}else{if(r.count>1)throw new Error("WebGL occlusion QuerySet can only have one value");let s=this.device.gl.createQuery();if(!s)throw new Error("WebGL query not supported");this.handle=s}Object.seal(this)}destroy(){if(!this.destroyed){this.handle&&this.device.gl.deleteQuery(this.handle);for(let t of this._timestampPairs){t.activeQuery&&(this._cancelPendingQuery(t.activeQuery),this.device.gl.deleteQuery(t.activeQuery.handle));for(let r of t.completedQueries)this._cancelPendingQuery(r),this.device.gl.deleteQuery(r.handle)}this._occlusionQuery&&(this._cancelPendingQuery(this._occlusionQuery),this.device.gl.deleteQuery(this._occlusionQuery.handle));for(let t of Array.from(this._pendingReads))this._cancelPendingQuery(t);this.destroyResource()}}isResultAvailable(t){return this.props.type==="timestamp"?t===void 0?this._timestampPairs.some((r,s)=>this._isTimestampPairAvailable(s)):this._isTimestampPairAvailable(this._getTimestampPairIndex(t)):this._occlusionQuery?this._pollQueryAvailability(this._occlusionQuery):!1}async readResults(t){let r=t?.firstQuery||0,s=t?.queryCount||this.props.count-r;if(this._validateRange(r,s),this.props.type==="timestamp"){let i=new Array(s).fill(0n),n=Math.floor(r/2),o=Math.floor((r+s-1)/2);for(let a=n;a<=o;a++){let c=await this._consumeTimestampPairResult(a),l=a*2,_=l+1;l>=r&&l<r+s&&(i[l-r]=0n),_>=r&&_<r+s&&(i[_-r]=c)}return i}if(!this._occlusionQuery)throw new Error("Occlusion query has not been started");return[await this._consumeQueryResult(this._occlusionQuery)]}async readTimestampDuration(t,r){if(this.props.type!=="timestamp")throw new Error("Timestamp durations require a timestamp QuerySet");if(t<0||r>=this.props.count||r<=t)throw new Error("Timestamp duration range is out of bounds");if(t%2!==0||r!==t+1)throw new Error("WebGL timestamp durations require adjacent even/odd query indices");let s=await this._consumeTimestampPairResult(this._getTimestampPairIndex(t));return Number(s)/1e6}beginOcclusionQuery(){if(this.props.type!=="occlusion")throw new Error("Occlusion queries require an occlusion QuerySet");if(!this.handle)throw new Error("WebGL occlusion query is not available");if(this._occlusionActive)throw new Error("Occlusion query is already active");this.device.gl.beginQuery(35887,this.handle),this._occlusionQuery={handle:this.handle,promise:null,result:null,disjoint:!1,cancelled:!1,pollRequestId:null,resolve:null,reject:null},this._occlusionActive=!0}endOcclusionQuery(){if(!this._occlusionActive)throw new Error("Occlusion query is not active");this.device.gl.endQuery(35887),this._occlusionActive=!1}writeTimestamp(t){if(this.props.type!=="timestamp")throw new Error("Timestamp writes require a timestamp QuerySet");let r=this._getTimestampPairIndex(t),s=this._timestampPairs[r];if(t%2===0){if(s.activeQuery)throw new Error("Timestamp query pair is already active");let i=this.device.gl.createQuery();if(!i)throw new Error("WebGL query not supported");let n={handle:i,promise:null,result:null,disjoint:!1,cancelled:!1,pollRequestId:null,resolve:null,reject:null};this.device.gl.beginQuery(35007,i),s.activeQuery=n;return}if(!s.activeQuery)throw new Error("Timestamp query pair was ended before it was started");this.device.gl.endQuery(35007),s.completedQueries.push(s.activeQuery),s.activeQuery=null}_validateRange(t,r){if(t<0||r<0||t+r>this.props.count)throw new Error("Query read range is out of bounds")}_getTimestampPairIndex(t){if(t<0||t>=this.props.count)throw new Error("Query index is out of bounds");return Math.floor(t/2)}_isTimestampPairAvailable(t){let r=this._timestampPairs[t];return!r||r.completedQueries.length===0?!1:this._pollQueryAvailability(r.completedQueries[0])}_pollQueryAvailability(t){if(t.cancelled||this.destroyed)return t.result=0n,!0;if(t.result!==null||t.disjoint)return!0;if(!this.device.gl.getQueryParameter(t.handle,34919))return!1;let s=Boolean(this.device.gl.getParameter(36795));return t.disjoint=s,t.result=s?0n:BigInt(this.device.gl.getQueryParameter(t.handle,34918)),!0}async _consumeTimestampPairResult(t){let r=this._timestampPairs[t];if(!r||r.completedQueries.length===0)throw new Error("Timestamp query pair has no completed result");let s=r.completedQueries.shift();try{return await this._consumeQueryResult(s)}finally{this.device.gl.deleteQuery(s.handle)}}_consumeQueryResult(t){return t.promise||(this._pendingReads.add(t),t.promise=new Promise((r,s)=>{t.resolve=r,t.reject=s;let i=()=>{if(t.pollRequestId=null,t.cancelled||this.destroyed){this._pendingReads.delete(t),t.promise=null,t.resolve=null,t.reject=null,r(0n);return}if(!this._pollQueryAvailability(t)){t.pollRequestId=this._requestAnimationFrame(i);return}this._pendingReads.delete(t),t.promise=null,t.resolve=null,t.reject=null,t.disjoint?s(new Error("GPU timestamp query was invalidated by a disjoint event")):r(t.result||0n)};i()})),t.promise}_cancelPendingQuery(t){if(this._pendingReads.delete(t),t.cancelled=!0,t.pollRequestId!==null&&(this._cancelAnimationFrame(t.pollRequestId),t.pollRequestId=null),t.resolve){let r=t.resolve;t.promise=null,t.resolve=null,t.reject=null,r(0n)}}_requestAnimationFrame(t){return requestAnimationFrame(t)}_cancelAnimationFrame(t){cancelAnimationFrame(t)}}});var Ys,pt,Ks=g(()=>{Ys=C(N(),1),pt=class extends Ys.Fence{device;gl;handle;signaled;_signaled=!1;constructor(t,r={}){super(t,{}),this.device=t,this.gl=t.gl;let s=this.props.handle||this.gl.fenceSync(this.gl.SYNC_GPU_COMMANDS_COMPLETE,0);if(!s)throw new Error("Failed to create WebGL fence");this.handle=s,this.signaled=new Promise(i=>{let n=()=>{let o=this.gl.clientWaitSync(this.handle,0,0);o===this.gl.ALREADY_SIGNALED||o===this.gl.CONDITION_SATISFIED?(this._signaled=!0,i()):setTimeout(n,1)};n()})}isSignaled(){if(this._signaled)return!0;let t=this.gl.getSyncParameter(this.handle,this.gl.SYNC_STATUS);return this._signaled=t===this.gl.SIGNALED,this._signaled}destroy(){this.destroyed||this.gl.deleteSync(this.handle)}}});function tr(e){switch(e){case 6406:case 33326:case 6403:case 36244:return 1;case 33339:case 33340:case 33328:case 33320:case 33319:return 2;case 6407:case 36248:case 34837:return 3;case 6408:case 36249:case 34836:return 4;default:return 0}}function $s(e){switch(e){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}var zs=g(()=>{});function Ls(e,t){let{sourceX:r=0,sourceY:s=0,sourceAttachment:i=0}=t||{},{target:n=null,sourceWidth:o,sourceHeight:a,sourceDepth:c,sourceFormat:l,sourceType:_}=t||{},{framebuffer:f,deleteFramebuffer:h}=qs(e),{gl:T,handle:d}=f;o||=f.width,a||=f.height;let R=f.colorAttachments[i]?.texture;if(!R)throw new Error(`Invalid framebuffer attachment ${i}`);c=R?.depth||1,l||=R?.glFormat||6408,_||=R?.glType||5121,n=Dn(n,_,l,o,a,c);let A=ue.dataTypeDecoder.getDataType(n);_=_||bs(A);let p=T.bindFramebuffer(36160,d);return T.readBuffer(36064+i),T.readPixels(r,s,o,a,l,_,n),T.readBuffer(36064),T.bindFramebuffer(36160,p||null),h&&f.destroy(),n}function Qs(e,t){let{target:r,sourceX:s=0,sourceY:i=0,sourceFormat:n=6408,targetByteOffset:o=0}=t||{},{sourceWidth:a,sourceHeight:c,sourceType:l}=t||{},{framebuffer:_,deleteFramebuffer:f}=qs(e);a=a||_.width,c=c||_.height;let h=_;l=l||5121;let T=r;if(!T){let R=tr(n),A=$s(l),p=o+a*c*R*A;T=h.device.createBuffer({byteLength:p})}let d=e.device.createCommandEncoder();return d.copyTextureToBuffer({sourceTexture:e,width:a,height:c,origin:[s,i],destinationBuffer:T,byteOffset:o}),d.destroy(),f&&_.destroy(),T}function qs(e){return e instanceof ue.Framebuffer?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:Bn(e),deleteFramebuffer:!0}}function Bn(e,t){let{device:r,width:s,height:i,id:n}=e;return r.createFramebuffer({...t,id:`framebuffer-for-${n}`,width:s,height:i,colorAttachments:[e]})}function Dn(e,t,r,s,i,n){if(e)return e;t||=5121;let o=st(t),a=ue.dataTypeDecoder.getTypedArrayConstructor(o),c=tr(r);return new a(s*i*c)}var ue,js=g(()=>{ue=C(N(),1);lt();zs();Jt()});function yn(e,t,r){switch(r.length){case 1:e.gl.vertexAttrib1fv(t,r);break;case 2:e.gl.vertexAttrib2fv(t,r);break;case 3:e.gl.vertexAttrib3fv(t,r);break;case 4:e.gl.vertexAttrib4fv(t,r);break;default:}}function wn(e,t,r){e.gl.vertexAttribI4iv(t,r)}function Un(e,t,r){e.gl.vertexAttribI4uiv(t,r)}function mn(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}var z,ee,Zs=g(()=>{z=C(N(),1);vt();Hr();Ue();Yr();Jr();es();ss();ns();gr();Pr();de();as();Qe();_s();Rs();nt();$e();xs();us();Us();Ws();Hs();ks();Ks();js();fe();tt();Ce();ee=class extends z.Device{static getDeviceFromContext(t){return t?t.luma?.device??null:null}type="webgl";handle;features;limits;info;canvasContext;preferredColorFormat="rgba8unorm";preferredDepthFormat="depth24plus";commandEncoder;lost;_resolveContextLost;gl;_constants;extensions;_polyfilled=!1;spectorJS;get[Symbol.toStringTag](){return"WebGLDevice"}toString(){return`${this[Symbol.toStringTag]}(${this.id})`}isVertexFormatSupported(t){switch(t){case"unorm8x4-bgra":return!1;default:return!0}}constructor(t){super({...t,id:t.id||os("webgl-device")});let r=z.Device._getCanvasContextProps(t);if(!r)throw new Error("WebGLDevice requires props.createCanvasContext to be set");let s=r.canvas?.gl??null,i=ee.getDeviceFromContext(s);if(i)throw new Error(`WebGL context already attached to device ${i.id}`);this.canvasContext=new ze(this,r),this.lost=new Promise(_=>{this._resolveContextLost=_});let n={...t.webgl};r.alphaMode==="premultiplied"&&(n.premultipliedAlpha=!0),t.powerPreference!==void 0&&(n.powerPreference=t.powerPreference),t.failIfMajorPerformanceCaveat!==void 0&&(n.failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat);let a=this.props._handle||Xr(this.canvasContext.canvas,{onContextLost:_=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."}),onContextRestored:_=>console.log("WebGL context restored")},n);if(!a)throw new Error("WebGL context creation failed");if(i=ee.getDeviceFromContext(a),i){if(t._reuseDevices)return z.log.log(1,`Not creating a new Device, instead returning a reference to Device ${i.id} already attached to WebGL context`,i)(),this.canvasContext.destroy(),i._reused=!0,i;throw new Error(`WebGL context already attached to device ${i.id}`)}this.handle=a,this.gl=a,this.spectorJS=pr({...this.props,gl:this.handle});let c=ne(this.handle);c.device=this,this.extensions=c.extensions||(c.extensions={}),this.info=Vr(this.gl,this.extensions),this.limits=new Ke(this.gl),this.features=new Ye(this.gl,this.extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new Y(this.gl,{log:(..._)=>z.log.log(1,..._)()}).trackState(this.gl,{copyState:!1}),(t.debug||t.debugWebGL)&&(this.gl=Ir(this.gl,{debugWebGL:!0,traceWebGL:t.debugWebGL}),z.log.warn("WebGL debug mode activated. Performance reduced.")()),t.debugWebGL&&(z.log.level=Math.max(z.log.level,1)),this.commandEncoder=new Pe(this,{id:`${this}-command-encoder`}),this.canvasContext._startObservers()}destroy(){if(this.commandEncoder?.destroy(),!this.props._reuseDevices&&!this._reused){let t=ne(this.handle);t.device=null}}get isLost(){return this.gl.isContextLost()}createCanvasContext(t){throw new Error("WebGL only supports a single canvas")}createPresentationContext(t){return new Le(this,t||{})}createBuffer(t){let r=this._normalizeBufferProps(t);return new $(this,r)}createTexture(t){return new J(this,t)}createExternalTexture(t){throw new Error("createExternalTexture() not implemented")}createSampler(t){return new et(this,t)}createShader(t){return new je(this,t)}createFramebuffer(t){return new q(this,t)}createVertexArray(t){return new Ae(this,t)}createTransformFeedback(t){return new dt(this,t)}createQuerySet(t){return new At(this,t)}createFence(){return new pt(this)}createRenderPipeline(t){return new ot(this,t)}_createSharedRenderPipelineWebGL(t){return new _t(this,t)}createComputePipeline(t){throw new Error("ComputePipeline not supported in WebGL")}createCommandEncoder(t={}){return new Pe(this,t)}submit(t){let r=null;t||({submittedCommandEncoder:r,commandBuffer:t}=this._finalizeDefaultCommandEncoderForSubmit());try{t._executeCommands(),r&&r.resolveTimeProfilingQuerySet().then(()=>{this.commandEncoder._gpuTimeMs=r._gpuTimeMs}).catch(()=>{})}finally{t.destroy()}}_finalizeDefaultCommandEncoderForSubmit(){let t=this.commandEncoder,r=t.finish();return this.commandEncoder.destroy(),this.commandEncoder=this.createCommandEncoder({id:t.props.id,timeProfilingQuerySet:t.getTimeProfilingQuerySet()}),{submittedCommandEncoder:t,commandBuffer:r}}readPixelsToArrayWebGL(t,r){return Ls(t,r)}readPixelsToBufferWebGL(t,r){return Qs(t,r)}setParametersWebGL(t){k(this.gl,t)}getParametersWebGL(t){return ve(this.gl,t)}withParametersWebGL(t,r){return j(this.gl,t,r)}resetWebGL(){z.log.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),wr(this.gl)}_getDeviceSpecificTextureFormatCapabilities(t){return Qr(this.gl,t,this.extensions)}loseDevice(){let t=!1,s=this.getExtension("WEBGL_lose_context").WEBGL_lose_context;return s&&(t=!0,s.loseContext()),this._resolveContextLost?.({reason:"destroyed",message:"Application triggered context loss"}),t}pushState(){Y.get(this.gl).push()}popState(){Y.get(this.gl).pop()}getGLKey(t,r){let s=Number(t);for(let i in this.gl)if(this.gl[i]===s)return`GL.${i}`;return r?.emptyIfUnknown?"":String(t)}getGLKeys(t){let r={emptyIfUnknown:!0};return Object.entries(t).reduce((s,[i,n])=>(s[`${i}:${this.getGLKey(i,r)}`]=`${n}:${this.getGLKey(n,r)}`,s),{})}setConstantAttributeWebGL(t,r){let s=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(s).fill(null);let i=this._constants[t];switch(i&&mn(i,r)&&z.log.info(1,`setConstantAttributeWebGL(${t}) could have been skipped, value unchanged`)(),this._constants[t]=r,r.constructor){case Float32Array:yn(this,t,r);break;case Int32Array:wn(this,t,r);break;case Uint32Array:Un(this,t,r);break;default:throw new Error("constant")}}getExtension(t){return K(this.gl,t,this.extensions),this.extensions}_setWebGLDebugMetadata(t,r,s){t.luma=r;let i={props:s.spector,id:s.spector.id};t.__SPECTOR_Metadata=i}}});var er=g(()=>{Zs();Qe()});var Be={};Bi(Be,{GoogleMapsOverlay:()=>Fe});var L={},Tr=C(we(),1);re(L,C(we(),1));if(!Tr.Layer)throw new Error("@deck.gl/core is not found");re(Be,L);Ft();er();var Nt=C(we(),1);var kc=1/Math.PI*180,Yc=1/180*Math.PI,vn={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...vn}};var w=globalThis.mathgl.config;function Js(e,{precision:t=w.precision}={}){return e=Wn(e),`${parseFloat(e.toPrecision(t))}`}function pe(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function rr(e,t,r){let s=w.EPSILON;r&&(w.EPSILON=r);try{if(e===t)return!0;if(pe(e)&&pe(t)){if(e.length!==t.length)return!1;for(let i=0;i<e.length;++i)if(!rr(e[i],t[i]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<=w.EPSILON*Math.max(1,Math.abs(e),Math.abs(t)):!1}finally{w.EPSILON=s}}function Wn(e){return Math.round(e/w.EPSILON)*w.EPSILON}var ge=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(t,r=0){for(let s=0;s<this.ELEMENTS;++s)this[s]=t[s+r];return this.check()}toArray(t=[],r=0){for(let s=0;s<this.ELEMENTS;++s)t[r+s]=this[s];return t}toObject(t){return t}from(t){return Array.isArray(t)?this.copy(t):this.fromObject(t)}to(t){return t===this?this:pe(t)?this.toArray(t):this.toObject(t)}toTarget(t){return t?this.to(t):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(w)}formatString(t){let r="";for(let s=0;s<this.ELEMENTS;++s)r+=(s>0?", ":"")+Js(this[s],t);return`${t.printTypes?this.constructor.name:""}[${r}]`}equals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(!rr(this[r],t[r]))return!1;return!0}exactEquals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(this[r]!==t[r])return!1;return!0}negate(){for(let t=0;t<this.ELEMENTS;++t)this[t]=-this[t];return this.check()}lerp(t,r,s){if(s===void 0)return this.lerp(this,t,r);for(let i=0;i<this.ELEMENTS;++i){let n=t[i],o=typeof r=="number"?r:r[i];this[i]=n+s*(o-n)}return this.check()}min(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(t[r],this[r]);return this.check()}max(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.max(t[r],this[r]);return this.check()}clamp(t,r){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(Math.max(this[s],t[s]),r[s]);return this.check()}add(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]+=r[s];return this.check()}subtract(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]-=r[s];return this.check()}scale(t){if(typeof t=="number")for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;else for(let r=0;r<this.ELEMENTS&&r<t.length;++r)this[r]*=t[r];return this.check()}multiplyByScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;return this.check()}check(){if(w.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let t=this.length===this.ELEMENTS;for(let r=0;r<this.ELEMENTS;++r)t=t&&Number.isFinite(this[r]);return t}sub(t){return this.subtract(t)}setScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=t;return this.check()}addScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]+=t;return this.check()}subScalar(t){return this.addScalar(-t)}multiplyScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;return this.check()}divideScalar(t){return this.multiplyByScalar(1/t)}clampScalar(t,r){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(Math.max(this[s],t),r);return this.check()}get elements(){return this}};function Xn(e,t){if(e.length!==t)return!1;for(let r=0;r<e.length;++r)if(!Number.isFinite(e[r]))return!1;return!0}function W(e){if(!Number.isFinite(e))throw new Error(`Invalid number ${JSON.stringify(e)}`);return e}function gt(e,t,r=""){if(w.debug&&!Xn(e,t))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return e}function sr(e,t){if(!e)throw new Error(`math.gl assertion ${t}`)}var St=class extends ge{get x(){return this[0]}set x(t){this[0]=W(t)}get y(){return this[1]}set y(t){this[1]=W(t)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let t=0;for(let r=0;r<this.ELEMENTS;++r)t+=this[r]*this[r];return t}magnitudeSquared(){return this.lengthSquared()}distance(t){return Math.sqrt(this.distanceSquared(t))}distanceSquared(t){let r=0;for(let s=0;s<this.ELEMENTS;++s){let i=this[s]-t[s];r+=i*i}return W(r)}dot(t){let r=0;for(let s=0;s<this.ELEMENTS;++s)r+=this[s]*t[s];return W(r)}normalize(){let t=this.magnitude();if(t!==0)for(let r=0;r<this.ELEMENTS;++r)this[r]/=t;return this.check()}multiply(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]*=r[s];return this.check()}divide(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]/=r[s];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(t){return this.distance(t)}distanceToSquared(t){return this.distanceSquared(t)}getComponent(t){return sr(t>=0&&t<this.ELEMENTS,"index is out of range"),W(this[t])}setComponent(t,r){return sr(t>=0&&t<this.ELEMENTS,"index is out of range"),this[t]=r,this.check()}addVectors(t,r){return this.copy(t).add(r)}subVectors(t,r){return this.copy(t).subtract(r)}multiplyVectors(t,r){return this.copy(t).multiply(r)}addScaledVector(t,r){return this.add(new this.constructor(t).multiplyScalar(r))}};var te=typeof Float32Array<"u"?Float32Array:Array;var el=Math.PI/180;function Hn(){let e=new te(2);return te!=Float32Array&&(e[0]=0,e[1]=0),e}function ti(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[2]*i,e[1]=r[1]*s+r[3]*i,e}function ri(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[2]*i+r[4],e[1]=r[1]*s+r[3]*i+r[5],e}function si(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[3]*i+r[6],e[1]=r[1]*s+r[4]*i+r[7],e}function Et(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[4]*i+r[12],e[1]=r[1]*s+r[5]*i+r[13],e}var tl=function(){let e=Hn();return function(t,r,s,i,n,o){let a,c;for(r||(r=2),s||(s=0),i?c=Math.min(i*r+s,t.length):c=t.length,a=s;a<c;a+=r)e[0]=t[a],e[1]=t[a+1],n(e,e,o),t[a]=e[0],t[a+1]=e[1];return t}}();function Mt(e,t,r){let s=t[0],i=t[1],n=r[3]*s+r[7]*i||1;return e[0]=(r[0]*s+r[4]*i)/n,e[1]=(r[1]*s+r[5]*i)/n,e}function ii(e,t,r){let s=t[0],i=t[1],n=t[2],o=r[3]*s+r[7]*i+r[11]*n||1;return e[0]=(r[0]*s+r[4]*i+r[8]*n)/o,e[1]=(r[1]*s+r[5]*i+r[9]*n)/o,e[2]=(r[2]*s+r[6]*i+r[10]*n)/o,e}var ce=class extends St{constructor(t=0,r=0){super(2),pe(t)&&arguments.length===1?this.copy(t):(w.debug&&(W(t),W(r)),this[0]=t,this[1]=r)}set(t,r){return this[0]=t,this[1]=r,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this.check()}fromObject(t){return w.debug&&(W(t.x),W(t.y)),this[0]=t.x,this[1]=t.y,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return Et(this,this,t),this.check()}transformAsVector(t){return Mt(this,this,t),this.check()}transformByMatrix3(t){return si(this,this,t),this.check()}transformByMatrix2x3(t){return ri(this,this,t),this.check()}transformByMatrix2(t){return ti(this,this,t),this.check()}};function Vn(){let e=new te(3);return te!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function ni(e,t,r){let s=t[0],i=t[1],n=t[2],o=r[3]*s+r[7]*i+r[11]*n+r[15];return o=o||1,e[0]=(r[0]*s+r[4]*i+r[8]*n+r[12])/o,e[1]=(r[1]*s+r[5]*i+r[9]*n+r[13])/o,e[2]=(r[2]*s+r[6]*i+r[10]*n+r[14])/o,e}var _l=function(){let e=Vn();return function(t,r,s,i,n,o){let a,c;for(r||(r=3),s||(s=0),i?c=Math.min(i*r+s,t.length):c=t.length,a=s;a<c;a+=r)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],n(e,e,o),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2];return t}}();var xt=class extends ge{toString(){let t="[";if(w.printRowMajor){t+="row-major:";for(let r=0;r<this.RANK;++r)for(let s=0;s<this.RANK;++s)t+=` ${this[s*this.RANK+r]}`}else{t+="column-major:";for(let r=0;r<this.ELEMENTS;++r)t+=` ${this[r]}`}return t+="]",t}getElementIndex(t,r){return r*this.RANK+t}getElement(t,r){return this[r*this.RANK+t]}setElement(t,r,s){return this[r*this.RANK+t]=W(s),this}getColumn(t,r=new Array(this.RANK).fill(-0)){let s=t*this.RANK;for(let i=0;i<this.RANK;++i)r[i]=this[s+i];return r}setColumn(t,r){let s=t*this.RANK;for(let i=0;i<this.RANK;++i)this[s+i]=r[i];return this}};function kn(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function oi(e,t){if(e===t){let r=t[1],s=t[2],i=t[3],n=t[6],o=t[7],a=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=s,e[9]=n,e[11]=t[14],e[12]=i,e[13]=o,e[14]=a}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function ai(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=t[4],a=t[5],c=t[6],l=t[7],_=t[8],f=t[9],h=t[10],T=t[11],d=t[12],R=t[13],A=t[14],p=t[15],b=r*a-s*o,M=r*c-i*o,E=r*l-n*o,S=s*c-i*a,x=s*l-n*a,u=i*l-n*c,B=_*R-f*d,D=_*A-h*d,F=_*p-T*d,X=f*A-h*R,H=f*p-T*R,V=h*p-T*A,O=b*V-M*H+E*X+S*F-x*D+u*B;return O?(O=1/O,e[0]=(a*V-c*H+l*X)*O,e[1]=(i*H-s*V-n*X)*O,e[2]=(R*u-A*x+p*S)*O,e[3]=(h*x-f*u-T*S)*O,e[4]=(c*F-o*V-l*D)*O,e[5]=(r*V-i*F+n*D)*O,e[6]=(A*E-d*u-p*M)*O,e[7]=(_*u-h*E+T*M)*O,e[8]=(o*H-a*F+l*B)*O,e[9]=(s*F-r*H-n*B)*O,e[10]=(d*x-R*E+p*b)*O,e[11]=(f*E-_*x-T*b)*O,e[12]=(a*D-o*X-c*B)*O,e[13]=(r*X-s*D+i*B)*O,e[14]=(R*M-d*S-A*b)*O,e[15]=(_*S-f*M+h*b)*O,e):null}function ci(e){let t=e[0],r=e[1],s=e[2],i=e[3],n=e[4],o=e[5],a=e[6],c=e[7],l=e[8],_=e[9],f=e[10],h=e[11],T=e[12],d=e[13],R=e[14],A=e[15],p=t*o-r*n,b=t*a-s*n,M=r*a-s*o,E=l*d-_*T,S=l*R-f*T,x=_*R-f*d,u=t*x-r*S+s*E,B=n*x-o*S+a*E,D=l*M-_*b+f*p,F=T*M-d*b+R*p;return c*u-i*B+A*D-h*F}function nr(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3],a=t[4],c=t[5],l=t[6],_=t[7],f=t[8],h=t[9],T=t[10],d=t[11],R=t[12],A=t[13],p=t[14],b=t[15],M=r[0],E=r[1],S=r[2],x=r[3];return e[0]=M*s+E*a+S*f+x*R,e[1]=M*i+E*c+S*h+x*A,e[2]=M*n+E*l+S*T+x*p,e[3]=M*o+E*_+S*d+x*b,M=r[4],E=r[5],S=r[6],x=r[7],e[4]=M*s+E*a+S*f+x*R,e[5]=M*i+E*c+S*h+x*A,e[6]=M*n+E*l+S*T+x*p,e[7]=M*o+E*_+S*d+x*b,M=r[8],E=r[9],S=r[10],x=r[11],e[8]=M*s+E*a+S*f+x*R,e[9]=M*i+E*c+S*h+x*A,e[10]=M*n+E*l+S*T+x*p,e[11]=M*o+E*_+S*d+x*b,M=r[12],E=r[13],S=r[14],x=r[15],e[12]=M*s+E*a+S*f+x*R,e[13]=M*i+E*c+S*h+x*A,e[14]=M*n+E*l+S*T+x*p,e[15]=M*o+E*_+S*d+x*b,e}function li(e,t,r){let s=r[0],i=r[1],n=r[2],o,a,c,l,_,f,h,T,d,R,A,p;return t===e?(e[12]=t[0]*s+t[4]*i+t[8]*n+t[12],e[13]=t[1]*s+t[5]*i+t[9]*n+t[13],e[14]=t[2]*s+t[6]*i+t[10]*n+t[14],e[15]=t[3]*s+t[7]*i+t[11]*n+t[15]):(o=t[0],a=t[1],c=t[2],l=t[3],_=t[4],f=t[5],h=t[6],T=t[7],d=t[8],R=t[9],A=t[10],p=t[11],e[0]=o,e[1]=a,e[2]=c,e[3]=l,e[4]=_,e[5]=f,e[6]=h,e[7]=T,e[8]=d,e[9]=R,e[10]=A,e[11]=p,e[12]=o*s+_*i+d*n+t[12],e[13]=a*s+f*i+R*n+t[13],e[14]=c*s+h*i+A*n+t[14],e[15]=l*s+T*i+p*n+t[15]),e}function _i(e,t,r){let s=r[0],i=r[1],n=r[2];return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function fi(e,t,r,s){let i=s[0],n=s[1],o=s[2],a=Math.sqrt(i*i+n*n+o*o),c,l,_,f,h,T,d,R,A,p,b,M,E,S,x,u,B,D,F,X,H,V,O,Ee;return a<1e-6?null:(a=1/a,i*=a,n*=a,o*=a,l=Math.sin(r),c=Math.cos(r),_=1-c,f=t[0],h=t[1],T=t[2],d=t[3],R=t[4],A=t[5],p=t[6],b=t[7],M=t[8],E=t[9],S=t[10],x=t[11],u=i*i*_+c,B=n*i*_+o*l,D=o*i*_-n*l,F=i*n*_-o*l,X=n*n*_+c,H=o*n*_+i*l,V=i*o*_+n*l,O=n*o*_-i*l,Ee=o*o*_+c,e[0]=f*u+R*B+M*D,e[1]=h*u+A*B+E*D,e[2]=T*u+p*B+S*D,e[3]=d*u+b*B+x*D,e[4]=f*F+R*X+M*H,e[5]=h*F+A*X+E*H,e[6]=T*F+p*X+S*H,e[7]=d*F+b*X+x*H,e[8]=f*V+R*O+M*Ee,e[9]=h*V+A*O+E*Ee,e[10]=T*V+p*O+S*Ee,e[11]=d*V+b*O+x*Ee,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function hi(e,t,r){let s=Math.sin(r),i=Math.cos(r),n=t[4],o=t[5],a=t[6],c=t[7],l=t[8],_=t[9],f=t[10],h=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=n*i+l*s,e[5]=o*i+_*s,e[6]=a*i+f*s,e[7]=c*i+h*s,e[8]=l*i-n*s,e[9]=_*i-o*s,e[10]=f*i-a*s,e[11]=h*i-c*s,e}function Ti(e,t,r){let s=Math.sin(r),i=Math.cos(r),n=t[0],o=t[1],a=t[2],c=t[3],l=t[8],_=t[9],f=t[10],h=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*i-l*s,e[1]=o*i-_*s,e[2]=a*i-f*s,e[3]=c*i-h*s,e[8]=n*s+l*i,e[9]=o*s+_*i,e[10]=a*s+f*i,e[11]=c*s+h*i,e}function di(e,t,r){let s=Math.sin(r),i=Math.cos(r),n=t[0],o=t[1],a=t[2],c=t[3],l=t[4],_=t[5],f=t[6],h=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*i+l*s,e[1]=o*i+_*s,e[2]=a*i+f*s,e[3]=c*i+h*s,e[4]=l*i-n*s,e[5]=_*i-o*s,e[6]=f*i-a*s,e[7]=h*i-c*s,e}function Ri(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=r+r,a=s+s,c=i+i,l=r*o,_=s*o,f=s*a,h=i*o,T=i*a,d=i*c,R=n*o,A=n*a,p=n*c;return e[0]=1-f-d,e[1]=_+p,e[2]=h-A,e[3]=0,e[4]=_-p,e[5]=1-l-d,e[6]=T+R,e[7]=0,e[8]=h+A,e[9]=T-R,e[10]=1-l-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Ai(e,t,r,s,i,n,o){let a=1/(r-t),c=1/(i-s),l=1/(n-o);return e[0]=n*2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n*2*c,e[6]=0,e[7]=0,e[8]=(r+t)*a,e[9]=(i+s)*c,e[10]=(o+n)*l,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*n*2*l,e[15]=0,e}function Yn(e,t,r,s,i){let n=1/Math.tan(t/2);if(e[0]=n/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){let o=1/(s-i);e[10]=(i+s)*o,e[14]=2*i*s*o}else e[10]=-1,e[14]=-2*s;return e}var pi=Yn;function Kn(e,t,r,s,i,n,o){let a=1/(t-r),c=1/(s-i),l=1/(n-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*a,e[13]=(i+s)*c,e[14]=(o+n)*l,e[15]=1,e}var gi=Kn;function Si(e,t,r,s){let i,n,o,a,c,l,_,f,h,T,d=t[0],R=t[1],A=t[2],p=s[0],b=s[1],M=s[2],E=r[0],S=r[1],x=r[2];return Math.abs(d-E)<1e-6&&Math.abs(R-S)<1e-6&&Math.abs(A-x)<1e-6?kn(e):(f=d-E,h=R-S,T=A-x,i=1/Math.sqrt(f*f+h*h+T*T),f*=i,h*=i,T*=i,n=b*T-M*h,o=M*f-p*T,a=p*h-b*f,i=Math.sqrt(n*n+o*o+a*a),i?(i=1/i,n*=i,o*=i,a*=i):(n=0,o=0,a=0),c=h*a-T*o,l=T*n-f*a,_=f*o-h*n,i=Math.sqrt(c*c+l*l+_*_),i?(i=1/i,c*=i,l*=i,_*=i):(c=0,l=0,_=0),e[0]=n,e[1]=c,e[2]=f,e[3]=0,e[4]=o,e[5]=l,e[6]=h,e[7]=0,e[8]=a,e[9]=_,e[10]=T,e[11]=0,e[12]=-(n*d+o*R+a*A),e[13]=-(c*d+l*R+_*A),e[14]=-(f*d+h*R+T*A),e[15]=1,e)}function $n(){let e=new te(4);return te!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function Ei(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3];return e[0]=r[0]*s+r[4]*i+r[8]*n+r[12]*o,e[1]=r[1]*s+r[5]*i+r[9]*n+r[13]*o,e[2]=r[2]*s+r[6]*i+r[10]*n+r[14]*o,e[3]=r[3]*s+r[7]*i+r[11]*n+r[15]*o,e}var pl=function(){let e=$n();return function(t,r,s,i,n,o){let a,c;for(r||(r=4),s||(s=0),i?c=Math.min(i*r+s,t.length):c=t.length,a=s;a<c;a+=r)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],e[3]=t[a+3],n(e,e,o),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2],t[a+3]=e[3];return t}}();var cr;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"})(cr||(cr={}));var zn=45*Math.PI/180,Ln=1,or=.1,ar=500,Qn=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),le=class extends xt{static get IDENTITY(){return jn()}static get ZERO(){return qn()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return cr}constructor(t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this.check()}set(t,r,s,i,n,o,a,c,l,_,f,h,T,d,R,A){return this[0]=t,this[1]=r,this[2]=s,this[3]=i,this[4]=n,this[5]=o,this[6]=a,this[7]=c,this[8]=l,this[9]=_,this[10]=f,this[11]=h,this[12]=T,this[13]=d,this[14]=R,this[15]=A,this.check()}setRowMajor(t,r,s,i,n,o,a,c,l,_,f,h,T,d,R,A){return this[0]=t,this[1]=n,this[2]=l,this[3]=T,this[4]=r,this[5]=o,this[6]=_,this[7]=d,this[8]=s,this[9]=a,this[10]=f,this[11]=R,this[12]=i,this[13]=c,this[14]=h,this[15]=A,this.check()}toRowMajor(t){return t[0]=this[0],t[1]=this[4],t[2]=this[8],t[3]=this[12],t[4]=this[1],t[5]=this[5],t[6]=this[9],t[7]=this[13],t[8]=this[2],t[9]=this[6],t[10]=this[10],t[11]=this[14],t[12]=this[3],t[13]=this[7],t[14]=this[11],t[15]=this[15],t}identity(){return this.copy(Qn)}fromObject(t){return this.check()}fromQuaternion(t){return Ri(this,t),this.check()}frustum(t){let{left:r,right:s,bottom:i,top:n,near:o=or,far:a=ar}=t;return a===1/0?Zn(this,r,s,i,n,o):Ai(this,r,s,i,n,o,a),this.check()}lookAt(t){let{eye:r,center:s=[0,0,0],up:i=[0,1,0]}=t;return Si(this,r,s,i),this.check()}ortho(t){let{left:r,right:s,bottom:i,top:n,near:o=or,far:a=ar}=t;return gi(this,r,s,i,n,o,a),this.check()}orthographic(t){let{fovy:r=zn,aspect:s=Ln,focalDistance:i=1,near:n=or,far:o=ar}=t;Mi(r);let a=r/2,c=i*Math.tan(a),l=c*s;return this.ortho({left:-l,right:l,bottom:-c,top:c,near:n,far:o})}perspective(t){let{fovy:r=45*Math.PI/180,aspect:s=1,near:i=.1,far:n=500}=t;return Mi(r),pi(this,r,s,i,n),this.check()}determinant(){return ci(this)}getScale(t=[-0,-0,-0]){return t[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),t[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),t[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),t}getTranslation(t=[-0,-0,-0]){return t[0]=this[12],t[1]=this[13],t[2]=this[14],t}getRotation(t,r){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let s=this.getScale(r),i=1/s[0],n=1/s[1],o=1/s[2];return t[0]=this[0]*i,t[1]=this[1]*n,t[2]=this[2]*o,t[3]=0,t[4]=this[4]*i,t[5]=this[5]*n,t[6]=this[6]*o,t[7]=0,t[8]=this[8]*i,t[9]=this[9]*n,t[10]=this[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}getRotationMatrix3(t,r){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let s=this.getScale(r),i=1/s[0],n=1/s[1],o=1/s[2];return t[0]=this[0]*i,t[1]=this[1]*n,t[2]=this[2]*o,t[3]=this[4]*i,t[4]=this[5]*n,t[5]=this[6]*o,t[6]=this[8]*i,t[7]=this[9]*n,t[8]=this[10]*o,t}transpose(){return oi(this,this),this.check()}invert(){return ai(this,this),this.check()}multiplyLeft(t){return nr(this,t,this),this.check()}multiplyRight(t){return nr(this,this,t),this.check()}rotateX(t){return hi(this,this,t),this.check()}rotateY(t){return Ti(this,this,t),this.check()}rotateZ(t){return di(this,this,t),this.check()}rotateXYZ(t){return this.rotateX(t[0]).rotateY(t[1]).rotateZ(t[2])}rotateAxis(t,r){return fi(this,this,t,r),this.check()}scale(t){return _i(this,this,Array.isArray(t)?t:[t,t,t]),this.check()}translate(t){return li(this,this,t),this.check()}transform(t,r){return t.length===4?(r=Ei(r||[-0,-0,-0,-0],t,this),gt(r,4),r):this.transformAsPoint(t,r)}transformAsPoint(t,r){let{length:s}=t,i;switch(s){case 2:i=Et(r||[-0,-0],t,this);break;case 3:i=ni(r||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return gt(i,t.length),i}transformAsVector(t,r){let s;switch(t.length){case 2:s=Mt(r||[-0,-0],t,this);break;case 3:s=ii(r||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return gt(s,t.length),s}transformPoint(t,r){return this.transformAsPoint(t,r)}transformVector(t,r){return this.transformAsPoint(t,r)}transformDirection(t,r){return this.transformAsVector(t,r)}makeRotationX(t){return this.identity().rotateX(t)}makeTranslation(t,r,s){return this.identity().translate([t,r,s])}},bt,Ct;function qn(){return bt||(bt=new le([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(bt)),bt}function jn(){return Ct||(Ct=new le,Object.freeze(Ct)),Ct}function Mi(e){if(e>Math.PI*2)throw Error("expected radians")}function Zn(e,t,r,s,i,n){let o=2*n/(r-t),a=2*n/(i-s),c=(r+t)/(r-t),l=(i+s)/(i-s),_=-1,f=-1,h=-2*n;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=c,e[9]=l,e[10]=_,e[11]=f,e[12]=0,e[13]=0,e[14]=h,e[15]=0,e}var Ot="deck-gl-google-maps-container",lr=85.05113;function It(e,t,r,s){if(r){if(r.userData._googleMap===e)return r;Pt(r)}let i={click:null,rightclick:null,dblclick:null,mousemove:null,mouseout:null},n=new Nt.Deck({...s,useDevicePixels:s.useDevicePixels??!0,style:s.interleaved?null:{pointerEvents:"none"},parent:Jn(t,s.style),views:new Nt.MapView({repeat:!0}),initialViewState:{longitude:0,latitude:0,zoom:1},controller:!1});for(let o in i)i[o]=e.addListener(o,a=>eo(n,o,a));return n.userData._googleMap=e,n.userData._eventListeners=i,n}function Jn(e,t){let r=document.createElement("div");r.style.position="absolute",Object.assign(r.style,t);let i=e.getMap().getDiv().querySelector(`#${Ot}`);return i?i.appendChild(r):"getPanes"in e&&e.getPanes()?.overlayLayer.appendChild(r),r}function Pt(e){let{_eventListeners:t}=e.userData;for(let r in t)t[r]&&t[r].remove();e.finalize()}function xi(e,t){let{width:r,height:s}=Ci(e),i=t.getProjection(),n=e.getBounds();if(!n)return{width:r,height:s,left:0,top:0};let o=n.getNorthEast(),a=n.getSouthWest(),c=i.fromLatLngToDivPixel(o),l=i.fromLatLngToDivPixel(a),_=_r(i,r/2,s/2),f=new google.maps.LatLng(0,_[0]),h=i.fromLatLngToContainerPixel(f),T=i.fromLatLngToDivPixel(f);if(!c||!l||!T||!h)return{width:r,height:s,left:0,top:0};let d=Math.round(T.x-h.x),R=T.y-h.y,A=_r(i,r/2,0),p=_r(i,r/2,s),b=_[1],M=_[0];if(Math.abs(b)>lr){b=b>0?lr:-lr;let D=new google.maps.LatLng(b,M),F=i.fromLatLngToContainerPixel(D);R+=F.y-s/2}R=Math.round(R);let S=180*new ce(A).sub(p).verticalAngle()/Math.PI;S<0&&(S+=360);let x=e.getHeading()||0,u=e.getZoom()-1,B;if(S===0)B=s?(l.y-c.y)/s:1;else if(S===x){let D=new ce([c.x,c.y]).sub([l.x,l.y]).len(),F=new ce([r,-s]).len();B=F?D/F:1}return u+=Math.log2(B||1),{width:r,height:s,left:d,top:R,zoom:u,bearing:S,pitch:e.getTilt(),latitude:b,longitude:M}}function bi(e,t){let{width:r,height:s}=Ci(e),{center:i,heading:n,tilt:o,zoom:a}=t.getCameraParams(),c=25,l=s?r/s:1,_=.75,f=3e14,h=new le().perspective({fovy:c*Math.PI/180,aspect:l,near:_,far:f}),T=.5*h[5];return{width:r,height:s,viewState:{altitude:T,bearing:n,latitude:i.lat(),longitude:i.lng(),pitch:o,projectionMatrix:h,repeat:!0,zoom:a-1}}}function Ci(e){let t=e.getDiv().firstChild;return{width:t.offsetWidth,height:t.offsetHeight}}function _r(e,t,r){let s=new google.maps.Point(t,r),i=e.fromContainerPixelToLatLng(s);return[i.lng(),i.lat()]}function Gn(e,t){if(e.pixel)return e.pixel;let r=t.getViewports()[0].project([e.latLng.lng(),e.latLng.lat()]);return{x:r[0],y:r[1]}}function eo(e,t,r){if(!e.isInitialized)return;let s={type:t,offsetCenter:Gn(r,e),srcEvent:r};switch(t){case"click":case"rightclick":s.type="click",s.tapCount=1,e._onPointerDown(s),e._onEvent(s);break;case"dblclick":s.type="click",s.tapCount=2,e._onEvent(s);break;case"mousemove":s.type="pointermove",e._onPointerMove(s);break;case"mouseout":s.type="pointerleave",e._onPointerMove(s);break;default:return}}var to=()=>!1,ro={depthMask:!0,depthTest:!0,blend:!0,blendFunc:[U.SRC_ALPHA,U.ONE_MINUS_SRC_ALPHA,U.ONE,U.ONE_MINUS_SRC_ALPHA],blendEquation:U.FUNC_ADD};function ut(){}var Ni={interleaved:!0},Fe=class{constructor(t){this.props={};this._map=null;this._deck=null;this._overlay=null;this._positioningOverlay=null;this.setProps({...Ni,...t})}setMap(t){if(t===this._map)return;let{VECTOR:r,UNINITIALIZED:s}=google.maps.RenderingType;this._map&&(!t&&this._map.getRenderingType()===r&&this.props.interleaved&&this._overlay.requestRedraw(),this._overlay?.setMap(null),this._positioningOverlay?.setMap(null),this._map=null),t&&(this._map=t,t.getRenderingType()!==s?this._createOverlay(t):t.addListener("renderingtype_changed",()=>{this._createOverlay(t)}))}setProps(t){if(Object.assign(this.props,t),this._deck){let r=this._deck.getCanvas();if(t.style&&r?.parentElement){let s=r.parentElement.style;Object.assign(s,t.style),t.style=null}this._deck.setProps(t)}}pickObject(t){return this._deck&&this._deck.pickObject(t)}pickMultipleObjects(t){return this._deck&&this._deck.pickMultipleObjects(t)}pickObjects(t){return this._deck&&this._deck.pickObjects(t)}finalize(){this.setMap(null),this._deck&&(Pt(this._deck),this._deck=null)}_createOverlay(t){let{VECTOR:r,UNINITIALIZED:s}=google.maps.RenderingType,i=t.getRenderingType();if(i===s)return;i===r&&google.maps.WebGLOverlayView?this._createOverlayVector(t):this._createOverlayRaster(t)}_createOverlayVector(t){let r=this.props.interleaved??Ni.interleaved,s=new google.maps.OverlayView;s.onAdd=this._onAddVectorOverlay.bind(this),s.draw=this._updateContainerSize.bind(this),s.onRemove=this._onRemove.bind(this),this._positioningOverlay=s,this._positioningOverlay.setMap(t);let i=new google.maps.WebGLOverlayView;i.onAdd=ut,i.onContextRestored=r?this._onContextRestored.bind(this):ut,i.onDraw=this._onDrawVector.bind(this),i.onContextLost=r?this._onContextLost.bind(this):ut,i.onRemove=r?this._onRemove.bind(this):ut,this._overlay=i,this._overlay.setMap(t)}_createOverlayRaster(t){let r=new google.maps.OverlayView;r.onAdd=this._onAdd.bind(this),r.draw=this._onDrawRaster.bind(this),r.onRemove=this._onRemove.bind(this),this._overlay=r,this._overlay.setMap(t)}_onAdd(){this._deck=It(this._map,this._overlay,this._deck,this.props)}_onAddVectorOverlay(){let t=this._positioningOverlay,r=t.getPanes();if(r){let s=document.createElement("div");s.id=Ot,s.style.position="absolute",r.overlayLayer.appendChild(s)}this._deck=It(this._map,t,this._deck,this.props)}_updateContainerSize(){if(!this._map)return;let t=this._map.getDiv().querySelector(`#${Ot}`);if(!t)return;let r=this._map.getDiv().firstChild;if(!r)return;let s=r.offsetWidth,i=r.offsetHeight;t.style.width=`${s}px`,t.style.height=`${i}px`,t.style.left=`${-s/2}px`,t.style.top=`${-i/2}px`}_onContextRestored({gl:t}){if(!this._map||!this._overlay)return;let r=()=>{this._overlay&&this._overlay.requestRedraw()},s=It(this._map,this._overlay,this._deck,{gl:t,_customRender:r,...this.props});this._deck=s;let i=s.animationLoop;i._renderFrame=()=>{let n=t.getParameter(t.ARRAY_BUFFER_BINDING);s.device.withParametersWebGL({},()=>{i.props.onRender(i.animationProps)}),t.bindBuffer(t.ARRAY_BUFFER,n)}}_onContextLost(){this._deck&&(Pt(this._deck),this._deck=null)}_onRemove(){this._deck?.setProps({layerFilter:to})}_onDrawRaster(){if(!this._deck||!this._map)return;let t=this._deck,{width:r,height:s,left:i,top:n,...o}=xi(this._map,this._overlay),c=t.getCanvas()?.parentElement||t.props.parent;if(c){let _=c.style;_.left=`${i}px`,_.top=`${n}px`}let l=1e4;t.setProps({width:r,height:s,viewState:{altitude:l,...o}}),t.redraw()}_onDrawVector({gl:t,transformer:r}){if(!this._deck||!this._map)return;let s=this._deck,{interleaved:i}=this.props;if(s.setProps({...bi(this._map,r),...i&&{width:null,height:null}}),i&&s.isInitialized){let n=s.device;if(n instanceof ee){let o=n.getParametersWebGL(U.FRAMEBUFFER_BINDING);s.setProps({_framebuffer:o})}s.needsRedraw({clearRedrawFlags:!0}),n instanceof ee&&(n.setParametersWebGL({viewport:[0,0,t.canvas.width,t.canvas.height],scissor:[0,0,t.canvas.width,t.canvas.height],stencilFunc:[t.ALWAYS,0,255,t.ALWAYS,0,255]}),n.withParametersWebGL(ro,()=>{s._drawLayers("google-vector",{clearCanvas:!1})}))}else i||s.redraw()}};return Di(Be);})();
|
|
7
|
+
"use strict";var __exports__=(()=>{var Oi=Object.create;var ye=Object.defineProperty;var Ii=Object.getOwnPropertyDescriptor;var Pi=Object.getOwnPropertyNames;var ui=Object.getPrototypeOf,Fi=Object.prototype.hasOwnProperty;var g=(e,t)=>()=>(e&&(t=e(e=0)),t);var fr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Bi=(e,t)=>{for(var r in t)ye(e,r,{get:t[r],enumerable:!0})},De=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Pi(t))!Fi.call(e,i)&&i!==r&&ye(e,i,{get:()=>t[i],enumerable:!(s=Ii(t,i))||s.enumerable});return e},re=(e,t,r)=>(De(e,t,"default"),r&&De(r,t,"default")),C=(e,t,r)=>(r=e!=null?Oi(ui(e)):{},De(t||!e||!e.__esModule?ye(r,"default",{value:e,enumerable:!0}):r,e)),Di=e=>De(ye({},"__esModule",{value:!0}),e);var we=fr((io,hr)=>{hr.exports=globalThis.deck});var U,dr=g(()=>{(function(e){e[e.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",e[e.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",e[e.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",e[e.POINTS=0]="POINTS",e[e.LINES=1]="LINES",e[e.LINE_LOOP=2]="LINE_LOOP",e[e.LINE_STRIP=3]="LINE_STRIP",e[e.TRIANGLES=4]="TRIANGLES",e[e.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",e[e.TRIANGLE_FAN=6]="TRIANGLE_FAN",e[e.ZERO=0]="ZERO",e[e.ONE=1]="ONE",e[e.SRC_COLOR=768]="SRC_COLOR",e[e.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",e[e.SRC_ALPHA=770]="SRC_ALPHA",e[e.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",e[e.DST_ALPHA=772]="DST_ALPHA",e[e.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",e[e.DST_COLOR=774]="DST_COLOR",e[e.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",e[e.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",e[e.CONSTANT_COLOR=32769]="CONSTANT_COLOR",e[e.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",e[e.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",e[e.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",e[e.FUNC_ADD=32774]="FUNC_ADD",e[e.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",e[e.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",e[e.BLEND_EQUATION=32777]="BLEND_EQUATION",e[e.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",e[e.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",e[e.BLEND_DST_RGB=32968]="BLEND_DST_RGB",e[e.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",e[e.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",e[e.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",e[e.BLEND_COLOR=32773]="BLEND_COLOR",e[e.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",e[e.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",e[e.LINE_WIDTH=2849]="LINE_WIDTH",e[e.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",e[e.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",e[e.CULL_FACE_MODE=2885]="CULL_FACE_MODE",e[e.FRONT_FACE=2886]="FRONT_FACE",e[e.DEPTH_RANGE=2928]="DEPTH_RANGE",e[e.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",e[e.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",e[e.DEPTH_FUNC=2932]="DEPTH_FUNC",e[e.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",e[e.STENCIL_FUNC=2962]="STENCIL_FUNC",e[e.STENCIL_FAIL=2964]="STENCIL_FAIL",e[e.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",e[e.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",e[e.STENCIL_REF=2967]="STENCIL_REF",e[e.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",e[e.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",e[e.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",e[e.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",e[e.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",e[e.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",e[e.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",e[e.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",e[e.VIEWPORT=2978]="VIEWPORT",e[e.SCISSOR_BOX=3088]="SCISSOR_BOX",e[e.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",e[e.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",e[e.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",e[e.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",e[e.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",e[e.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",e[e.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",e[e.RED_BITS=3410]="RED_BITS",e[e.GREEN_BITS=3411]="GREEN_BITS",e[e.BLUE_BITS=3412]="BLUE_BITS",e[e.ALPHA_BITS=3413]="ALPHA_BITS",e[e.DEPTH_BITS=3414]="DEPTH_BITS",e[e.STENCIL_BITS=3415]="STENCIL_BITS",e[e.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",e[e.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",e[e.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",e[e.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",e[e.SAMPLES=32937]="SAMPLES",e[e.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",e[e.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",e[e.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",e[e.VENDOR=7936]="VENDOR",e[e.RENDERER=7937]="RENDERER",e[e.VERSION=7938]="VERSION",e[e.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",e[e.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",e[e.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",e[e.STATIC_DRAW=35044]="STATIC_DRAW",e[e.STREAM_DRAW=35040]="STREAM_DRAW",e[e.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",e[e.ARRAY_BUFFER=34962]="ARRAY_BUFFER",e[e.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",e[e.BUFFER_SIZE=34660]="BUFFER_SIZE",e[e.BUFFER_USAGE=34661]="BUFFER_USAGE",e[e.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",e[e.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",e[e.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",e[e.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",e[e.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",e[e.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",e[e.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",e[e.CULL_FACE=2884]="CULL_FACE",e[e.FRONT=1028]="FRONT",e[e.BACK=1029]="BACK",e[e.FRONT_AND_BACK=1032]="FRONT_AND_BACK",e[e.BLEND=3042]="BLEND",e[e.DEPTH_TEST=2929]="DEPTH_TEST",e[e.DITHER=3024]="DITHER",e[e.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",e[e.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",e[e.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",e[e.SCISSOR_TEST=3089]="SCISSOR_TEST",e[e.STENCIL_TEST=2960]="STENCIL_TEST",e[e.NO_ERROR=0]="NO_ERROR",e[e.INVALID_ENUM=1280]="INVALID_ENUM",e[e.INVALID_VALUE=1281]="INVALID_VALUE",e[e.INVALID_OPERATION=1282]="INVALID_OPERATION",e[e.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",e[e.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",e[e.CW=2304]="CW",e[e.CCW=2305]="CCW",e[e.DONT_CARE=4352]="DONT_CARE",e[e.FASTEST=4353]="FASTEST",e[e.NICEST=4354]="NICEST",e[e.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",e[e.BYTE=5120]="BYTE",e[e.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",e[e.SHORT=5122]="SHORT",e[e.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",e[e.INT=5124]="INT",e[e.UNSIGNED_INT=5125]="UNSIGNED_INT",e[e.FLOAT=5126]="FLOAT",e[e.DOUBLE=5130]="DOUBLE",e[e.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",e[e.ALPHA=6406]="ALPHA",e[e.RGB=6407]="RGB",e[e.RGBA=6408]="RGBA",e[e.LUMINANCE=6409]="LUMINANCE",e[e.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",e[e.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",e[e.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",e[e.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",e[e.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",e[e.VERTEX_SHADER=35633]="VERTEX_SHADER",e[e.COMPILE_STATUS=35713]="COMPILE_STATUS",e[e.DELETE_STATUS=35712]="DELETE_STATUS",e[e.LINK_STATUS=35714]="LINK_STATUS",e[e.VALIDATE_STATUS=35715]="VALIDATE_STATUS",e[e.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",e[e.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",e[e.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",e[e.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",e[e.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",e[e.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",e[e.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",e[e.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",e[e.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",e[e.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",e[e.SHADER_TYPE=35663]="SHADER_TYPE",e[e.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",e[e.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",e[e.NEVER=512]="NEVER",e[e.LESS=513]="LESS",e[e.EQUAL=514]="EQUAL",e[e.LEQUAL=515]="LEQUAL",e[e.GREATER=516]="GREATER",e[e.NOTEQUAL=517]="NOTEQUAL",e[e.GEQUAL=518]="GEQUAL",e[e.ALWAYS=519]="ALWAYS",e[e.KEEP=7680]="KEEP",e[e.REPLACE=7681]="REPLACE",e[e.INCR=7682]="INCR",e[e.DECR=7683]="DECR",e[e.INVERT=5386]="INVERT",e[e.INCR_WRAP=34055]="INCR_WRAP",e[e.DECR_WRAP=34056]="DECR_WRAP",e[e.NEAREST=9728]="NEAREST",e[e.LINEAR=9729]="LINEAR",e[e.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",e[e.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",e[e.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",e[e.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",e[e.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",e[e.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",e[e.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",e[e.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",e[e.TEXTURE_2D=3553]="TEXTURE_2D",e[e.TEXTURE=5890]="TEXTURE",e[e.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",e[e.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",e[e.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",e[e.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",e[e.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",e[e.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",e[e.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",e[e.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",e[e.TEXTURE0=33984]="TEXTURE0",e[e.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",e[e.REPEAT=10497]="REPEAT",e[e.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e[e.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",e[e.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",e[e.FLOAT_VEC2=35664]="FLOAT_VEC2",e[e.FLOAT_VEC3=35665]="FLOAT_VEC3",e[e.FLOAT_VEC4=35666]="FLOAT_VEC4",e[e.INT_VEC2=35667]="INT_VEC2",e[e.INT_VEC3=35668]="INT_VEC3",e[e.INT_VEC4=35669]="INT_VEC4",e[e.BOOL=35670]="BOOL",e[e.BOOL_VEC2=35671]="BOOL_VEC2",e[e.BOOL_VEC3=35672]="BOOL_VEC3",e[e.BOOL_VEC4=35673]="BOOL_VEC4",e[e.FLOAT_MAT2=35674]="FLOAT_MAT2",e[e.FLOAT_MAT3=35675]="FLOAT_MAT3",e[e.FLOAT_MAT4=35676]="FLOAT_MAT4",e[e.SAMPLER_2D=35678]="SAMPLER_2D",e[e.SAMPLER_CUBE=35680]="SAMPLER_CUBE",e[e.LOW_FLOAT=36336]="LOW_FLOAT",e[e.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",e[e.HIGH_FLOAT=36338]="HIGH_FLOAT",e[e.LOW_INT=36339]="LOW_INT",e[e.MEDIUM_INT=36340]="MEDIUM_INT",e[e.HIGH_INT=36341]="HIGH_INT",e[e.FRAMEBUFFER=36160]="FRAMEBUFFER",e[e.RENDERBUFFER=36161]="RENDERBUFFER",e[e.RGBA4=32854]="RGBA4",e[e.RGB5_A1=32855]="RGB5_A1",e[e.RGB565=36194]="RGB565",e[e.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",e[e.STENCIL_INDEX=6401]="STENCIL_INDEX",e[e.STENCIL_INDEX8=36168]="STENCIL_INDEX8",e[e.DEPTH_STENCIL=34041]="DEPTH_STENCIL",e[e.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",e[e.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",e[e.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",e[e.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",e[e.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",e[e.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",e[e.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",e[e.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",e[e.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",e[e.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",e[e.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",e[e.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",e[e.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",e[e.NONE=0]="NONE",e[e.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",e[e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",e[e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",e[e.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",e[e.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",e[e.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",e[e.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",e[e.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",e[e.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",e[e.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",e[e.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",e[e.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",e[e.READ_BUFFER=3074]="READ_BUFFER",e[e.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",e[e.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",e[e.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",e[e.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",e[e.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",e[e.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",e[e.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",e[e.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",e[e.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",e[e.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",e[e.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",e[e.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",e[e.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",e[e.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",e[e.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",e[e.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",e[e.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",e[e.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",e[e.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",e[e.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",e[e.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",e[e.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",e[e.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",e[e.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",e[e.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",e[e.RED=6403]="RED",e[e.RGB8=32849]="RGB8",e[e.RGBA8=32856]="RGBA8",e[e.RGB10_A2=32857]="RGB10_A2",e[e.TEXTURE_3D=32879]="TEXTURE_3D",e[e.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",e[e.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",e[e.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",e[e.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",e[e.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",e[e.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",e[e.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",e[e.SRGB=35904]="SRGB",e[e.SRGB8=35905]="SRGB8",e[e.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",e[e.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",e[e.RGBA32F=34836]="RGBA32F",e[e.RGB32F=34837]="RGB32F",e[e.RGBA16F=34842]="RGBA16F",e[e.RGB16F=34843]="RGB16F",e[e.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",e[e.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",e[e.R11F_G11F_B10F=35898]="R11F_G11F_B10F",e[e.RGB9_E5=35901]="RGB9_E5",e[e.RGBA32UI=36208]="RGBA32UI",e[e.RGB32UI=36209]="RGB32UI",e[e.RGBA16UI=36214]="RGBA16UI",e[e.RGB16UI=36215]="RGB16UI",e[e.RGBA8UI=36220]="RGBA8UI",e[e.RGB8UI=36221]="RGB8UI",e[e.RGBA32I=36226]="RGBA32I",e[e.RGB32I=36227]="RGB32I",e[e.RGBA16I=36232]="RGBA16I",e[e.RGB16I=36233]="RGB16I",e[e.RGBA8I=36238]="RGBA8I",e[e.RGB8I=36239]="RGB8I",e[e.RED_INTEGER=36244]="RED_INTEGER",e[e.RGB_INTEGER=36248]="RGB_INTEGER",e[e.RGBA_INTEGER=36249]="RGBA_INTEGER",e[e.R8=33321]="R8",e[e.RG8=33323]="RG8",e[e.R16F=33325]="R16F",e[e.R32F=33326]="R32F",e[e.RG16F=33327]="RG16F",e[e.RG32F=33328]="RG32F",e[e.R8I=33329]="R8I",e[e.R8UI=33330]="R8UI",e[e.R16I=33331]="R16I",e[e.R16UI=33332]="R16UI",e[e.R32I=33333]="R32I",e[e.R32UI=33334]="R32UI",e[e.RG8I=33335]="RG8I",e[e.RG8UI=33336]="RG8UI",e[e.RG16I=33337]="RG16I",e[e.RG16UI=33338]="RG16UI",e[e.RG32I=33339]="RG32I",e[e.RG32UI=33340]="RG32UI",e[e.R8_SNORM=36756]="R8_SNORM",e[e.RG8_SNORM=36757]="RG8_SNORM",e[e.RGB8_SNORM=36758]="RGB8_SNORM",e[e.RGBA8_SNORM=36759]="RGBA8_SNORM",e[e.RGB10_A2UI=36975]="RGB10_A2UI",e[e.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",e[e.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",e[e.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",e[e.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",e[e.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",e[e.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",e[e.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",e[e.HALF_FLOAT=5131]="HALF_FLOAT",e[e.RG=33319]="RG",e[e.RG_INTEGER=33320]="RG_INTEGER",e[e.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",e[e.CURRENT_QUERY=34917]="CURRENT_QUERY",e[e.QUERY_RESULT=34918]="QUERY_RESULT",e[e.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",e[e.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",e[e.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",e[e.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",e[e.DRAW_BUFFER0=34853]="DRAW_BUFFER0",e[e.DRAW_BUFFER1=34854]="DRAW_BUFFER1",e[e.DRAW_BUFFER2=34855]="DRAW_BUFFER2",e[e.DRAW_BUFFER3=34856]="DRAW_BUFFER3",e[e.DRAW_BUFFER4=34857]="DRAW_BUFFER4",e[e.DRAW_BUFFER5=34858]="DRAW_BUFFER5",e[e.DRAW_BUFFER6=34859]="DRAW_BUFFER6",e[e.DRAW_BUFFER7=34860]="DRAW_BUFFER7",e[e.DRAW_BUFFER8=34861]="DRAW_BUFFER8",e[e.DRAW_BUFFER9=34862]="DRAW_BUFFER9",e[e.DRAW_BUFFER10=34863]="DRAW_BUFFER10",e[e.DRAW_BUFFER11=34864]="DRAW_BUFFER11",e[e.DRAW_BUFFER12=34865]="DRAW_BUFFER12",e[e.DRAW_BUFFER13=34866]="DRAW_BUFFER13",e[e.DRAW_BUFFER14=34867]="DRAW_BUFFER14",e[e.DRAW_BUFFER15=34868]="DRAW_BUFFER15",e[e.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",e[e.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",e[e.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",e[e.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",e[e.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",e[e.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",e[e.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",e[e.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",e[e.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",e[e.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",e[e.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",e[e.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",e[e.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",e[e.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",e[e.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",e[e.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",e[e.SAMPLER_3D=35679]="SAMPLER_3D",e[e.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",e[e.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",e[e.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",e[e.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",e[e.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",e[e.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",e[e.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",e[e.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",e[e.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",e[e.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",e[e.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",e[e.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",e[e.MAX_SAMPLES=36183]="MAX_SAMPLES",e[e.SAMPLER_BINDING=35097]="SAMPLER_BINDING",e[e.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",e[e.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",e[e.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",e[e.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",e[e.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",e[e.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",e[e.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",e[e.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",e[e.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",e[e.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",e[e.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",e[e.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",e[e.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",e[e.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",e[e.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",e[e.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",e[e.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",e[e.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",e[e.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",e[e.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",e[e.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",e[e.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",e[e.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",e[e.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",e[e.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",e[e.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",e[e.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",e[e.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",e[e.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",e[e.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",e[e.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",e[e.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",e[e.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",e[e.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",e[e.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",e[e.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",e[e.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",e[e.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",e[e.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",e[e.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",e[e.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",e[e.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",e[e.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",e[e.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",e[e.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",e[e.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",e[e.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",e[e.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",e[e.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",e[e.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",e[e.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",e[e.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",e[e.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",e[e.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",e[e.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",e[e.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",e[e.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",e[e.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",e[e.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",e[e.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",e[e.UNIFORM_TYPE=35383]="UNIFORM_TYPE",e[e.UNIFORM_SIZE=35384]="UNIFORM_SIZE",e[e.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",e[e.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",e[e.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",e[e.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",e[e.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",e[e.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",e[e.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",e[e.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",e[e.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",e[e.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",e[e.OBJECT_TYPE=37138]="OBJECT_TYPE",e[e.SYNC_CONDITION=37139]="SYNC_CONDITION",e[e.SYNC_STATUS=37140]="SYNC_STATUS",e[e.SYNC_FLAGS=37141]="SYNC_FLAGS",e[e.SYNC_FENCE=37142]="SYNC_FENCE",e[e.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",e[e.UNSIGNALED=37144]="UNSIGNALED",e[e.SIGNALED=37145]="SIGNALED",e[e.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",e[e.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",e[e.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",e[e.WAIT_FAILED=37149]="WAIT_FAILED",e[e.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",e[e.COLOR=6144]="COLOR",e[e.DEPTH=6145]="DEPTH",e[e.STENCIL=6146]="STENCIL",e[e.MIN=32775]="MIN",e[e.MAX=32776]="MAX",e[e.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",e[e.STREAM_READ=35041]="STREAM_READ",e[e.STREAM_COPY=35042]="STREAM_COPY",e[e.STATIC_READ=35045]="STATIC_READ",e[e.STATIC_COPY=35046]="STATIC_COPY",e[e.DYNAMIC_READ=35049]="DYNAMIC_READ",e[e.DYNAMIC_COPY=35050]="DYNAMIC_COPY",e[e.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",e[e.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",e[e.INVALID_INDEX=4294967295]="INVALID_INDEX",e[e.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",e[e.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",e[e.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",e[e.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",e[e.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",e[e.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",e[e.R16_EXT=33322]="R16_EXT",e[e.RG16_EXT=33324]="RG16_EXT",e[e.RGB16_EXT=32852]="RGB16_EXT",e[e.RGBA16_EXT=32859]="RGBA16_EXT",e[e.R16_SNORM_EXT=36760]="R16_SNORM_EXT",e[e.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",e[e.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",e[e.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",e[e.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",e[e.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",e[e.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",e[e.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",e[e.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",e[e.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",e[e.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",e[e.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",e[e.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",e[e.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",e[e.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",e[e.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",e[e.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",e[e.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",e[e.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",e[e.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",e[e.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",e[e.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",e[e.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",e[e.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",e[e.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",e[e.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",e[e.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",e[e.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",e[e.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",e[e.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",e[e.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",e[e.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",e[e.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",e[e.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",e[e.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",e[e.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",e[e.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",e[e.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",e[e.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",e[e.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",e[e.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",e[e.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",e[e.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",e[e.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",e[e.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",e[e.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",e[e.COMPLETION_STATUS_KHR=37297]="COMPLETION_STATUS_KHR",e[e.DEPTH_CLAMP_EXT=34383]="DEPTH_CLAMP_EXT",e[e.FIRST_VERTEX_CONVENTION_WEBGL=36429]="FIRST_VERTEX_CONVENTION_WEBGL",e[e.LAST_VERTEX_CONVENTION_WEBGL=36430]="LAST_VERTEX_CONVENTION_WEBGL",e[e.PROVOKING_VERTEX_WEBL=36431]="PROVOKING_VERTEX_WEBL",e[e.POLYGON_MODE_WEBGL=2880]="POLYGON_MODE_WEBGL",e[e.POLYGON_OFFSET_LINE_WEBGL=10754]="POLYGON_OFFSET_LINE_WEBGL",e[e.LINE_WEBGL=6913]="LINE_WEBGL",e[e.FILL_WEBGL=6914]="FILL_WEBGL",e[e.MAX_CLIP_DISTANCES_WEBGL=3378]="MAX_CLIP_DISTANCES_WEBGL",e[e.MAX_CULL_DISTANCES_WEBGL=33529]="MAX_CULL_DISTANCES_WEBGL",e[e.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL=33530]="MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL",e[e.CLIP_DISTANCE0_WEBGL=12288]="CLIP_DISTANCE0_WEBGL",e[e.CLIP_DISTANCE1_WEBGL=12289]="CLIP_DISTANCE1_WEBGL",e[e.CLIP_DISTANCE2_WEBGL=12290]="CLIP_DISTANCE2_WEBGL",e[e.CLIP_DISTANCE3_WEBGL=12291]="CLIP_DISTANCE3_WEBGL",e[e.CLIP_DISTANCE4_WEBGL=12292]="CLIP_DISTANCE4_WEBGL",e[e.CLIP_DISTANCE5_WEBGL=12293]="CLIP_DISTANCE5_WEBGL",e[e.CLIP_DISTANCE6_WEBGL=12294]="CLIP_DISTANCE6_WEBGL",e[e.CLIP_DISTANCE7_WEBGL=12295]="CLIP_DISTANCE7_WEBGL",e[e.POLYGON_OFFSET_CLAMP_EXT=36379]="POLYGON_OFFSET_CLAMP_EXT",e[e.LOWER_LEFT_EXT=36001]="LOWER_LEFT_EXT",e[e.UPPER_LEFT_EXT=36002]="UPPER_LEFT_EXT",e[e.NEGATIVE_ONE_TO_ONE_EXT=37726]="NEGATIVE_ONE_TO_ONE_EXT",e[e.ZERO_TO_ONE_EXT=37727]="ZERO_TO_ONE_EXT",e[e.CLIP_ORIGIN_EXT=37724]="CLIP_ORIGIN_EXT",e[e.CLIP_DEPTH_MODE_EXT=37725]="CLIP_DEPTH_MODE_EXT",e[e.SRC1_COLOR_WEBGL=35065]="SRC1_COLOR_WEBGL",e[e.SRC1_ALPHA_WEBGL=34185]="SRC1_ALPHA_WEBGL",e[e.ONE_MINUS_SRC1_COLOR_WEBGL=35066]="ONE_MINUS_SRC1_COLOR_WEBGL",e[e.ONE_MINUS_SRC1_ALPHA_WEBGL=35067]="ONE_MINUS_SRC1_ALPHA_WEBGL",e[e.MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL=35068]="MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL",e[e.MIRROR_CLAMP_TO_EDGE_EXT=34627]="MIRROR_CLAMP_TO_EDGE_EXT"})(U||(U={}))});var Ft=g(()=>{dr()});var N=fr((lo,Rr)=>{Rr.exports=globalThis.luma});function ne(e){let t=e.luma||{_polyfilled:!1,extensions:{},softwareRenderer:!1};return t._polyfilled??=!1,t.extensions||={},e.luma=t,t}var Ue=g(()=>{});function pr(e){if(e={...wi,...e},!e.debugSpectorJS)return null;if(!m&&globalThis.SPECTOR&&!globalThis.luma?.spector){_e.log.probe(yi,"SPECTOR found and initialized. Start with `luma.spector.displayUI()`")();let{Spector:t}=globalThis.SPECTOR;m=new t,globalThis.luma&&(globalThis.luma.spector=m)}if(!m)return null;if(Ar||(Ar=!0,m.spyCanvases(),m?.onCaptureStarted.add(t=>_e.log.info("Spector capture started:",t)()),m?.onCapture.add(t=>{_e.log.info("Spector capture complete:",t)(),m?.getResultUI(),m?.resultView.display(),m?.resultView.addCapture(t)})),e.gl){let t=e.gl,r=ne(t),s=r.device;m?.startCapture(e.gl,500),r.device=s,new Promise(i=>setTimeout(i,2e3)).then(i=>{_e.log.info("Spector capture stopped after 2 seconds")(),m?.stopCapture()})}return m}var _e,yi,m,Ar,wi,gr=g(()=>{_e=C(N(),1);Ue();yi=1,m=null,Ar=!1,wi={debugSpectorJS:_e.log.get("debug-spectorjs"),debugSpectorJSUrl:"https://cdn.jsdelivr.net/npm/spectorjs@0.9.30/dist/spector.bundle.js",gl:void 0}});var To,Ro,Ao,Sr,Er=g(()=>{To=globalThis.document||{},Ro=globalThis.process||{},Ao=globalThis.console,Sr=globalThis.navigator||{}});function me(e){if(typeof window<"u"&&window.process?.type==="renderer"||typeof process<"u"&&Boolean(process.versions?.electron))return!0;let t=typeof navigator<"u"&&navigator.userAgent,r=e||t;return Boolean(r&&r.indexOf("Electron")>=0)}var Bt=g(()=>{});function Mr(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process?.browser)||me()}var xr=g(()=>{Bt()});function Dt(e){return!e&&!Mr()?"Node":me(e)?"Electron":(e||Sr.userAgent||"").indexOf("Edge")>-1?"Edge":globalThis.chrome?"Chrome":globalThis.safari?"Safari":globalThis.mozInnerScreenX?"Firefox":"Unknown"}var br=g(()=>{xr();Bt();Er()});var Cr=g(()=>{br()});function Or(e){return e.luma=e.luma||{},e.luma}function Ir(e,t={}){return t.debugWebGL||t.traceWebGL?mi(e,t):Ui(e)}function Ui(e){let t=Or(e);return t.realContext?t.realContext:e}function mi(e,t){if(!globalThis.WebGLDebugUtils)return Me.log.warn("webgl-debug not loaded")(),e;let r=Or(e);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({...U,...e});let s=globalThis.WebGLDebugUtils.makeDebugContext(e,vi.bind(null,t),Wi.bind(null,t));for(let o in U)!(o in s)&&typeof U[o]=="number"&&(s[o]=U[o]);class i{}Object.setPrototypeOf(s,Object.getPrototypeOf(e)),Object.setPrototypeOf(i,s);let n=Object.create(i);return r.realContext=e,r.debugContext=n,n.luma=r,n.debug=!0,n}function Nr(e,t){t=Array.from(t).map(s=>s===void 0?"undefined":s);let r=globalThis.WebGLDebugUtils.glFunctionArgsToString(e,t);return r=`${r.slice(0,100)}${r.length>100?"...":""}`,`gl.${e}(${r})`}function vi(e,t,r,s){s=Array.from(s).map(a=>a===void 0?"undefined":a);let i=globalThis.WebGLDebugUtils.glEnumToString(t),n=globalThis.WebGLDebugUtils.glFunctionArgsToString(r,s),o=`${i} in gl.${r}(${n})`;Me.log.error("%cWebGL","color: white; background: red; padding: 2px 6px; border-radius: 3px;",o)();debugger;throw new Error(o)}function Wi(e,t,r){let s="";e.traceWebGL&&Me.log.level>=1&&(s=Nr(t,r),Me.log.info(1,"%cWebGL","color: white; background: blue; padding: 2px 6px; border-radius: 3px;",s)());for(let i of r)if(i===void 0){s=s||Nr(t,r);debugger}}var Me,Pr=g(()=>{Me=C(N(),1);Ft()});function yt(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function I(e,t,r){return t[e]!==void 0?t[e]:r[e]}var be,P,ur,v,Fr,xe,Br,Dr,wt,Q,Ut,yr,mt=g(()=>{be={[3042]:!1,[32773]:new Float32Array([0,0,0,0]),[32777]:32774,[34877]:32774,[32969]:1,[32968]:0,[32971]:1,[32970]:0,[3106]:new Float32Array([0,0,0,0]),[3107]:[!0,!0,!0,!0],[2884]:!1,[2885]:1029,[2929]:!1,[2931]:1,[2932]:513,[2928]:new Float32Array([0,1]),[2930]:!0,[3024]:!0,[35725]:null,[36006]:null,[36007]:null,[34229]:null,[34964]:null,[2886]:2305,[33170]:4352,[2849]:1,[32823]:!1,[32824]:0,[10752]:0,[32926]:!1,[32928]:!1,[32938]:1,[32939]:!1,[3089]:!1,[3088]:new Int32Array([0,0,1024,1024]),[2960]:!1,[2961]:0,[2968]:4294967295,[36005]:4294967295,[2962]:519,[2967]:0,[2963]:4294967295,[34816]:519,[36003]:0,[36004]:4294967295,[2964]:7680,[2965]:7680,[2966]:7680,[34817]:7680,[34818]:7680,[34819]:7680,[2978]:[0,0,1024,1024],[36389]:null,[36662]:null,[36663]:null,[35053]:null,[35055]:null,[35723]:4352,[36010]:null,[35977]:!1,[3333]:4,[3317]:4,[37440]:!1,[37441]:!1,[37443]:37444,[3330]:0,[3332]:0,[3331]:0,[3314]:0,[32878]:0,[3316]:0,[3315]:0,[32877]:0},P=(e,t,r)=>t?e.enable(r):e.disable(r),ur=(e,t,r)=>e.hint(r,t),v=(e,t,r)=>e.pixelStorei(r,t),Fr=(e,t,r)=>{let s=r===36006?36009:36008;return e.bindFramebuffer(s,t)},xe=(e,t,r)=>{let i={[34964]:34962,[36662]:36662,[36663]:36663,[35053]:35051,[35055]:35052}[r];e.bindBuffer(i,t)};Br={[3042]:P,[32773]:(e,t)=>e.blendColor(...t),[32777]:"blendEquation",[34877]:"blendEquation",[32969]:"blendFunc",[32968]:"blendFunc",[32971]:"blendFunc",[32970]:"blendFunc",[3106]:(e,t)=>e.clearColor(...t),[3107]:(e,t)=>e.colorMask(...t),[2884]:P,[2885]:(e,t)=>e.cullFace(t),[2929]:P,[2931]:(e,t)=>e.clearDepth(t),[2932]:(e,t)=>e.depthFunc(t),[2928]:(e,t)=>e.depthRange(...t),[2930]:(e,t)=>e.depthMask(t),[3024]:P,[35723]:ur,[35725]:(e,t)=>e.useProgram(t),[36007]:(e,t)=>e.bindRenderbuffer(36161,t),[36389]:(e,t)=>e.bindTransformFeedback?.(36386,t),[34229]:(e,t)=>e.bindVertexArray(t),[36006]:Fr,[36010]:Fr,[34964]:xe,[36662]:xe,[36663]:xe,[35053]:xe,[35055]:xe,[2886]:(e,t)=>e.frontFace(t),[33170]:ur,[2849]:(e,t)=>e.lineWidth(t),[32823]:P,[32824]:"polygonOffset",[10752]:"polygonOffset",[35977]:P,[32926]:P,[32928]:P,[32938]:"sampleCoverage",[32939]:"sampleCoverage",[3089]:P,[3088]:(e,t)=>e.scissor(...t),[2960]:P,[2961]:(e,t)=>e.clearStencil(t),[2968]:(e,t)=>e.stencilMaskSeparate(1028,t),[36005]:(e,t)=>e.stencilMaskSeparate(1029,t),[2962]:"stencilFuncFront",[2967]:"stencilFuncFront",[2963]:"stencilFuncFront",[34816]:"stencilFuncBack",[36003]:"stencilFuncBack",[36004]:"stencilFuncBack",[2964]:"stencilOpFront",[2965]:"stencilOpFront",[2966]:"stencilOpFront",[34817]:"stencilOpBack",[34818]:"stencilOpBack",[34819]:"stencilOpBack",[2978]:(e,t)=>e.viewport(...t),[34383]:P,[10754]:P,[12288]:P,[12289]:P,[12290]:P,[12291]:P,[12292]:P,[12293]:P,[12294]:P,[12295]:P,[3333]:v,[3317]:v,[37440]:v,[37441]:v,[37443]:v,[3330]:v,[3332]:v,[3331]:v,[3314]:v,[32878]:v,[3316]:v,[3315]:v,[32877]:v,framebuffer:(e,t)=>{let r=t&&"handle"in t?t.handle:t;return e.bindFramebuffer(36160,r)},blend:(e,t)=>t?e.enable(3042):e.disable(3042),blendColor:(e,t)=>e.blendColor(...t),blendEquation:(e,t)=>{let r=typeof t=="number"?[t,t]:t;e.blendEquationSeparate(...r)},blendFunc:(e,t)=>{let r=t?.length===2?[...t,...t]:t;e.blendFuncSeparate(...r)},clearColor:(e,t)=>e.clearColor(...t),clearDepth:(e,t)=>e.clearDepth(t),clearStencil:(e,t)=>e.clearStencil(t),colorMask:(e,t)=>e.colorMask(...t),cull:(e,t)=>t?e.enable(2884):e.disable(2884),cullFace:(e,t)=>e.cullFace(t),depthTest:(e,t)=>t?e.enable(2929):e.disable(2929),depthFunc:(e,t)=>e.depthFunc(t),depthMask:(e,t)=>e.depthMask(t),depthRange:(e,t)=>e.depthRange(...t),dither:(e,t)=>t?e.enable(3024):e.disable(3024),derivativeHint:(e,t)=>{e.hint(35723,t)},frontFace:(e,t)=>e.frontFace(t),mipmapHint:(e,t)=>e.hint(33170,t),lineWidth:(e,t)=>e.lineWidth(t),polygonOffsetFill:(e,t)=>t?e.enable(32823):e.disable(32823),polygonOffset:(e,t)=>e.polygonOffset(...t),sampleCoverage:(e,t)=>e.sampleCoverage(t[0],t[1]||!1),scissorTest:(e,t)=>t?e.enable(3089):e.disable(3089),scissor:(e,t)=>e.scissor(...t),stencilTest:(e,t)=>t?e.enable(2960):e.disable(2960),stencilMask:(e,t)=>{t=yt(t)?t:[t,t];let[r,s]=t;e.stencilMaskSeparate(1028,r),e.stencilMaskSeparate(1029,s)},stencilFunc:(e,t)=>{t=yt(t)&&t.length===3?[...t,...t]:t;let[r,s,i,n,o,a]=t;e.stencilFuncSeparate(1028,r,s,i),e.stencilFuncSeparate(1029,n,o,a)},stencilOp:(e,t)=>{t=yt(t)&&t.length===3?[...t,...t]:t;let[r,s,i,n,o,a]=t;e.stencilOpSeparate(1028,r,s,i),e.stencilOpSeparate(1029,n,o,a)},viewport:(e,t)=>e.viewport(...t)};Dr={blendEquation:(e,t,r)=>e.blendEquationSeparate(I(32777,t,r),I(34877,t,r)),blendFunc:(e,t,r)=>e.blendFuncSeparate(I(32969,t,r),I(32968,t,r),I(32971,t,r),I(32970,t,r)),polygonOffset:(e,t,r)=>e.polygonOffset(I(32824,t,r),I(10752,t,r)),sampleCoverage:(e,t,r)=>e.sampleCoverage(I(32938,t,r),I(32939,t,r)),stencilFuncFront:(e,t,r)=>e.stencilFuncSeparate(1028,I(2962,t,r),I(2967,t,r),I(2963,t,r)),stencilFuncBack:(e,t,r)=>e.stencilFuncSeparate(1029,I(34816,t,r),I(36003,t,r),I(36004,t,r)),stencilOpFront:(e,t,r)=>e.stencilOpSeparate(1028,I(2964,t,r),I(2965,t,r),I(2966,t,r)),stencilOpBack:(e,t,r)=>e.stencilOpSeparate(1029,I(34817,t,r),I(34818,t,r),I(34819,t,r))},wt={enable:(e,t)=>e({[t]:!0}),disable:(e,t)=>e({[t]:!1}),pixelStorei:(e,t,r)=>e({[t]:r}),hint:(e,t,r)=>e({[t]:r}),useProgram:(e,t)=>e({[35725]:t}),bindRenderbuffer:(e,t,r)=>e({[36007]:r}),bindTransformFeedback:(e,t,r)=>e({[36389]:r}),bindVertexArray:(e,t)=>e({[34229]:t}),bindFramebuffer:(e,t,r)=>{switch(t){case 36160:return e({[36006]:r,[36010]:r});case 36009:return e({[36006]:r});case 36008:return e({[36010]:r});default:return null}},bindBuffer:(e,t,r)=>{let s={[34962]:[34964],[36662]:[36662],[36663]:[36663],[35051]:[35053],[35052]:[35055]}[t];return s?e({[s]:r}):{valueChanged:!0}},blendColor:(e,t,r,s,i)=>e({[32773]:new Float32Array([t,r,s,i])}),blendEquation:(e,t)=>e({[32777]:t,[34877]:t}),blendEquationSeparate:(e,t,r)=>e({[32777]:t,[34877]:r}),blendFunc:(e,t,r)=>e({[32969]:t,[32968]:r,[32971]:t,[32970]:r}),blendFuncSeparate:(e,t,r,s,i)=>e({[32969]:t,[32968]:r,[32971]:s,[32970]:i}),clearColor:(e,t,r,s,i)=>e({[3106]:new Float32Array([t,r,s,i])}),clearDepth:(e,t)=>e({[2931]:t}),clearStencil:(e,t)=>e({[2961]:t}),colorMask:(e,t,r,s,i)=>e({[3107]:[t,r,s,i]}),cullFace:(e,t)=>e({[2885]:t}),depthFunc:(e,t)=>e({[2932]:t}),depthRange:(e,t,r)=>e({[2928]:new Float32Array([t,r])}),depthMask:(e,t)=>e({[2930]:t}),frontFace:(e,t)=>e({[2886]:t}),lineWidth:(e,t)=>e({[2849]:t}),polygonOffset:(e,t,r)=>e({[32824]:t,[10752]:r}),sampleCoverage:(e,t,r)=>e({[32938]:t,[32939]:r}),scissor:(e,t,r,s,i)=>e({[3088]:new Int32Array([t,r,s,i])}),stencilMask:(e,t)=>e({[2968]:t,[36005]:t}),stencilMaskSeparate:(e,t,r)=>e({[t===1028?2968:36005]:r}),stencilFunc:(e,t,r,s)=>e({[2962]:t,[2967]:r,[2963]:s,[34816]:t,[36003]:r,[36004]:s}),stencilFuncSeparate:(e,t,r,s,i)=>e({[t===1028?2962:34816]:r,[t===1028?2967:36003]:s,[t===1028?2963:36004]:i}),stencilOp:(e,t,r,s)=>e({[2964]:t,[2965]:r,[2966]:s,[34817]:t,[34818]:r,[34819]:s}),stencilOpSeparate:(e,t,r,s,i)=>e({[t===1028?2964:34817]:r,[t===1028?2965:34818]:s,[t===1028?2966:34819]:i}),viewport:(e,t,r,s,i)=>e({[2978]:[t,r,s,i]})},Q=(e,t)=>e.isEnabled(t),Ut={[3042]:Q,[2884]:Q,[2929]:Q,[3024]:Q,[32823]:Q,[32926]:Q,[32928]:Q,[3089]:Q,[2960]:Q,[35977]:Q},yr=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068])});function k(e,t){if(Xi(t))return;let r={};for(let i in t){let n=Number(i),o=Br[i];o&&(typeof o=="string"?r[o]=!0:o(e,t[i],n))}let s=e.lumaState?.cache;if(s)for(let i in r){let n=Dr[i];n(e,t,s)}}function ve(e,t=be){if(typeof t=="number"){let i=t,n=Ut[i];return n?n(e,i):e.getParameter(i)}let r=Array.isArray(t)?t:Object.keys(t),s={};for(let i of r){let n=Ut[i];s[i]=n?n(e,Number(i)):e.getParameter(Number(i))}return s}function wr(e){k(e,be)}function Xi(e){for(let t in e)return!1;return!0}var fe=g(()=>{mt()});function mr(e,t){if(e===t)return!0;if(Ur(e)&&Ur(t)&&e.length===t.length){for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}return!1}function Ur(e){return Array.isArray(e)||ArrayBuffer.isView(e)}var vr=g(()=>{});function Wr(e,t){let r=e[t].bind(e);e[t]=function(i){if(i===void 0||yr.has(i))return r(i);let n=Y.get(e);return i in n.cache||(n.cache[i]=r(i)),n.enable?n.cache[i]:r(i)},Object.defineProperty(e[t],"name",{value:`${t}-from-cache`,configurable:!1})}function Hi(e,t,r){if(!e[t])return;let s=e[t].bind(e);e[t]=function(...n){let o=Y.get(e),{valueChanged:a,oldValue:c}=r(o._updateCache,...n);return a&&s(...n),c},Object.defineProperty(e[t],"name",{value:`${t}-to-cache`,configurable:!1})}function Vi(e){let t=e.useProgram.bind(e);e.useProgram=function(s){let i=Y.get(e);i.program!==s&&(t(s),i.program=s)}}var Y,vt=g(()=>{fe();vr();mt();Y=class{static get(t){return t.lumaState}gl;program=null;stateStack=[];enable=!0;cache=null;log;initialized=!1;constructor(t,r){this.gl=t,this.log=r?.log||(()=>{}),this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(t={}){this.stateStack.push({})}pop(){let t=this.stateStack[this.stateStack.length-1];k(this.gl,t),this.stateStack.pop()}trackState(t,r){if(this.cache=r?.copyState?ve(t):Object.assign({},be),this.initialized)throw new Error("WebGLStateTracker");this.initialized=!0,this.gl.lumaState=this,Vi(t);for(let s in wt){let i=wt[s];Hi(t,s,i)}Wr(t,"getParameter"),Wr(t,"isEnabled")}_updateCache(t){let r=!1,s,i=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let n in t){let o=t[n],a=this.cache[n];mr(o,a)||(r=!0,s=a,i&&!(n in i)&&(i[n]=a),this.cache[n]=o)}return{valueChanged:r,oldValue:s}}}});function Xr(e,t,r){let s="",i=c=>{let l=c.statusMessage;l&&(s||=l)};e.addEventListener("webglcontextcreationerror",i,!1);let n=r.failIfMajorPerformanceCaveat!==!0,o={preserveDrawingBuffer:!0,...r,failIfMajorPerformanceCaveat:!0},a=null;try{a||=e.getContext("webgl2",o),!a&&o.failIfMajorPerformanceCaveat&&(s||="Only software GPU is available. Set `failIfMajorPerformanceCaveat: false` to allow.");let c=!1;if(!a&&n&&(o.failIfMajorPerformanceCaveat=!1,a=e.getContext("webgl2",o),c=!0),a||(a=e.getContext("webgl",{}),a&&(a=null,s||="Your browser only supports WebGL1")),!a)throw s||="Your browser does not support WebGL",new Error(`Failed to create WebGL context: ${s}`);let l=ne(a);l.softwareRenderer=c;let{onContextLost:_,onContextRestored:f}=t;return e.addEventListener("webglcontextlost",h=>_(h),!1),e.addEventListener("webglcontextrestored",h=>f(h),!1),a}finally{e.removeEventListener("webglcontextcreationerror",i,!1)}}var Hr=g(()=>{Ue()});function K(e,t,r){return r[t]===void 0&&(r[t]=e.getExtension(t)||null),r[t]}var Ce=g(()=>{});function Vr(e,t){let r=e.getParameter(7936),s=e.getParameter(7937);K(e,"WEBGL_debug_renderer_info",t);let i=t.WEBGL_debug_renderer_info,n=e.getParameter(i?i.UNMASKED_VENDOR_WEBGL:7936),o=e.getParameter(i?i.UNMASKED_RENDERER_WEBGL:7937),a=n||r,c=o||s,l=e.getParameter(7938),_=kr(a,c),f=ki(a,c),h=Yi(a,c);return{type:"webgl",gpu:_,gpuType:h,gpuBackend:f,vendor:a,renderer:c,version:l,shadingLanguage:"glsl",shadingLanguageVersion:300}}function kr(e,t){return/NVIDIA/i.exec(e)||/NVIDIA/i.exec(t)?"nvidia":/INTEL/i.exec(e)||/INTEL/i.exec(t)?"intel":/Apple/i.exec(e)||/Apple/i.exec(t)?"apple":/AMD/i.exec(e)||/AMD/i.exec(t)||/ATI/i.exec(e)||/ATI/i.exec(t)?"amd":/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t)?"software":"unknown"}function ki(e,t){return/Metal/i.exec(e)||/Metal/i.exec(t)?"metal":/ANGLE/i.exec(e)||/ANGLE/i.exec(t)?"opengl":"unknown"}function Yi(e,t){if(/SwiftShader/i.exec(e)||/SwiftShader/i.exec(t))return"cpu";switch(kr(e,t)){case"apple":return Ki(e,t)?"integrated":"unknown";case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}function Ki(e,t){return/Apple (M\d|A\d|GPU)/i.test(`${e} ${t}`)}var Yr=g(()=>{Ce()});function We(e){switch(e){case"uint8":return 5121;case"sint8":return 5120;case"unorm8":return 5121;case"snorm8":return 5120;case"uint16":return 5123;case"sint16":return 5122;case"unorm16":return 5123;case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw new Error(String(e))}var Wt=g(()=>{});function zr(e){return e in He}function Kt(e,t,r){return Lr(e,t,r,new Set)}function Lr(e,t,r,s){let i=He[t];if(!i||s.has(t))return!1;s.add(t);let n=(i.features||[]).every(o=>Lr(e,o,r,s));return s.delete(t),n?(i.extensions||[]).every(o=>Boolean(K(e,o,r))):!1}function Qr(e,t,r){let s=t.create,i=Ve[t.format];i?.gl===void 0&&(s=!1),i?.x&&(s=s&&Boolean(K(e,i.x,r))),t.format==="stencil8"&&(s=!1);let n=i?.r===!1?!1:i?.r===void 0||Kt(e,i.r,r),o=s&&t.render&&n&&Ji(e,t.format,r);return{format:t.format,create:s&&t.create,render:o,filter:s&&t.filter,blend:s&&t.blend,store:s&&t.store}}function Ji(e,t,r){let s=Ve[t],i=s?.gl;if(i===void 0||s?.x&&!K(e,s.x,r))return!1;let n=e.getParameter(32873),o=e.getParameter(36006),a=e.createTexture(),c=e.createFramebuffer();if(!a||!c)return!1;let l=Number(0),_=Number(e.getError());for(;_!==l;)_=e.getError();let f=!1;try{if(e.bindTexture(3553,a),e.texStorage2D(3553,1,i,1,1),Number(e.getError())!==l)return!1;e.bindFramebuffer(36160,c),e.framebufferTexture2D(36160,36064,3553,a,0),f=Number(e.checkFramebufferStatus(36160))===Number(36053)&&Number(e.getError())===l}finally{e.bindFramebuffer(36160,o),e.deleteFramebuffer(c),e.bindTexture(3553,n),e.deleteTexture(a)}return f}function ke(e){let t=Ve[e],r=en(e),s=Yt.textureFormatDecoder.getInfo(e);return s.compressed&&(t.dataFormat=r),{internalFormat:r,format:t?.dataFormat||Gi(s.channels,s.integer,s.normalized,r),type:s.dataType?We(s.dataType):t?.types?.[0]||5121,compressed:s.compressed||!1}}function qr(e){switch(Yt.textureFormatDecoder.getInfo(e).attachment){case"depth":return 36096;case"stencil":return 36128;case"depth-stencil":return 33306;default:throw new Error(`Not a depth stencil format: ${e}`)}}function Gi(e,t,r,s){if(s===6408||s===6407)return s;switch(e){case"r":return t&&!r?36244:6403;case"rg":return t&&!r?33320:33319;case"rgb":return t&&!r?36248:6407;case"rgba":return t&&!r?36249:6408;case"bgra":throw new Error("bgra pixels not supported by WebGL");default:return 6408}}function en(e){let r=Ve[e]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${e}`);return r}var Yt,Ne,Oe,he,Te,$i,zi,Li,Qi,qi,ji,Kr,$r,Xt,Ht,Vt,kt,Xe,Zi,He,Ve,de=g(()=>{Yt=C(N(),1);Ce();Wt();Ne="WEBGL_compressed_texture_s3tc",Oe="WEBGL_compressed_texture_s3tc_srgb",he="EXT_texture_compression_rgtc",Te="EXT_texture_compression_bptc",$i="WEBGL_compressed_texture_etc",zi="WEBGL_compressed_texture_astc",Li="WEBGL_compressed_texture_etc1",Qi="WEBGL_compressed_texture_pvrtc",qi="WEBGL_compressed_texture_atc",ji="EXT_texture_norm16",Kr="EXT_render_snorm",$r="EXT_color_buffer_float",Xt="snorm8-renderable-webgl",Ht="norm16-renderable-webgl",Vt="snorm16-renderable-webgl",kt="float16-renderable-webgl",Xe="float32-renderable-webgl",Zi="rgb9e5ufloat-renderable-webgl",He={"float32-renderable-webgl":{extensions:[$r]},"float16-renderable-webgl":{extensions:["EXT_color_buffer_half_float"]},"rgb9e5ufloat-renderable-webgl":{extensions:["WEBGL_render_shared_exponent"]},"snorm8-renderable-webgl":{extensions:[Kr]},"norm16-webgl":{extensions:[ji]},"norm16-renderable-webgl":{features:["norm16-webgl"]},"snorm16-renderable-webgl":{features:["norm16-webgl"],extensions:[Kr]},"float32-filterable":{extensions:["OES_texture_float_linear"]},"float16-filterable-webgl":{extensions:["OES_texture_half_float_linear"]},"texture-filterable-anisotropic-webgl":{extensions:["EXT_texture_filter_anisotropic"]},"texture-blend-float-webgl":{extensions:["EXT_float_blend"]},"texture-compression-bc":{extensions:[Ne,Oe,he,Te]},"texture-compression-bc5-webgl":{extensions:[he]},"texture-compression-bc7-webgl":{extensions:[Te]},"texture-compression-etc2":{extensions:[$i]},"texture-compression-astc":{extensions:[zi]},"texture-compression-etc1-webgl":{extensions:[Li]},"texture-compression-pvrtc-webgl":{extensions:[Qi]},"texture-compression-atc-webgl":{extensions:[qi]}};Ve={r8unorm:{gl:33321,rb:!0},r8snorm:{gl:36756,r:Xt},r8uint:{gl:33330,rb:!0},r8sint:{gl:33329,rb:!0},rg8unorm:{gl:33323,rb:!0},rg8snorm:{gl:36757,r:Xt},rg8uint:{gl:33336,rb:!0},rg8sint:{gl:33335,rb:!0},r16uint:{gl:33332,rb:!0},r16sint:{gl:33331,rb:!0},r16float:{gl:33325,rb:!0,r:kt},r16unorm:{gl:33322,rb:!0,r:Ht},r16snorm:{gl:36760,r:Vt},"rgba4unorm-webgl":{gl:32854,rb:!0},"rgb565unorm-webgl":{gl:36194,rb:!0},"rgb5a1unorm-webgl":{gl:32855,rb:!0},"rgb8unorm-webgl":{gl:32849},"rgb8snorm-webgl":{gl:36758},rgba8unorm:{gl:32856},"rgba8unorm-srgb":{gl:35907},rgba8snorm:{gl:36759,r:Xt},rgba8uint:{gl:36220},rgba8sint:{gl:36238},bgra8unorm:{},"bgra8unorm-srgb":{},rg16uint:{gl:33338},rg16sint:{gl:33337},rg16float:{gl:33327,rb:!0,r:kt},rg16unorm:{gl:33324,r:Ht},rg16snorm:{gl:36761,r:Vt},r32uint:{gl:33334,rb:!0},r32sint:{gl:33333,rb:!0},r32float:{gl:33326,r:Xe},rgb9e5ufloat:{gl:35901,r:Zi},rg11b10ufloat:{gl:35898,rb:!0},rgb10a2unorm:{gl:32857,rb:!0},rgb10a2uint:{gl:36975,rb:!0},"rgb16unorm-webgl":{gl:32852,r:!1},"rgb16snorm-webgl":{gl:36762,r:!1},rg32uint:{gl:33340,rb:!0},rg32sint:{gl:33339,rb:!0},rg32float:{gl:33328,rb:!0,r:Xe},rgba16uint:{gl:36214,rb:!0},rgba16sint:{gl:36232,rb:!0},rgba16float:{gl:34842,r:kt},rgba16unorm:{gl:32859,rb:!0,r:Ht},rgba16snorm:{gl:36763,r:Vt},"rgb32float-webgl":{gl:34837,x:$r,r:Xe,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,rb:!0},rgba32sint:{gl:36226,rb:!0},rgba32float:{gl:34836,rb:!0,r:Xe},stencil8:{gl:36168,rb:!0},depth16unorm:{gl:33189,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,dataFormat:6402,types:[5125]},depth32float:{gl:36012,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth32float-stencil8":{gl:36013,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:Ne},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:Oe},"bc1-rgba-unorm":{gl:33777,x:Ne},"bc1-rgba-unorm-srgb":{gl:35916,x:Oe},"bc2-rgba-unorm":{gl:33778,x:Ne},"bc2-rgba-unorm-srgb":{gl:35918,x:Oe},"bc3-rgba-unorm":{gl:33779,x:Ne},"bc3-rgba-unorm-srgb":{gl:35919,x:Oe},"bc4-r-unorm":{gl:36283,x:he},"bc4-r-snorm":{gl:36284,x:he},"bc5-rg-unorm":{gl:36285,x:he},"bc5-rg-snorm":{gl:36286,x:he},"bc6h-rgb-ufloat":{gl:36495,x:Te},"bc6h-rgb-float":{gl:36494,x:Te},"bc7-rgba-unorm":{gl:36492,x:Te},"bc7-rgba-unorm-srgb":{gl:36493,x:Te},"etc2-rgb8unorm":{gl:37492},"etc2-rgb8unorm-srgb":{gl:37494},"etc2-rgb8a1unorm":{gl:37496},"etc2-rgb8a1unorm-srgb":{gl:37497},"etc2-rgba8unorm":{gl:37493},"etc2-rgba8unorm-srgb":{gl:37495},"eac-r11unorm":{gl:37488},"eac-r11snorm":{gl:37489},"eac-rg11unorm":{gl:37490},"eac-rg11snorm":{gl:37491},"astc-4x4-unorm":{gl:37808},"astc-4x4-unorm-srgb":{gl:37840},"astc-5x4-unorm":{gl:37809},"astc-5x4-unorm-srgb":{gl:37841},"astc-5x5-unorm":{gl:37810},"astc-5x5-unorm-srgb":{gl:37842},"astc-6x5-unorm":{gl:37811},"astc-6x5-unorm-srgb":{gl:37843},"astc-6x6-unorm":{gl:37812},"astc-6x6-unorm-srgb":{gl:37844},"astc-8x5-unorm":{gl:37813},"astc-8x5-unorm-srgb":{gl:37845},"astc-8x6-unorm":{gl:37814},"astc-8x6-unorm-srgb":{gl:37846},"astc-8x8-unorm":{gl:37815},"astc-8x8-unorm-srgb":{gl:37847},"astc-10x5-unorm":{gl:37816},"astc-10x5-unorm-srgb":{gl:37848},"astc-10x6-unorm":{gl:37817},"astc-10x6-unorm-srgb":{gl:37849},"astc-10x8-unorm":{gl:37818},"astc-10x8-unorm-srgb":{gl:37850},"astc-10x10-unorm":{gl:37819},"astc-10x10-unorm-srgb":{gl:37851},"astc-12x10-unorm":{gl:37820},"astc-12x10-unorm-srgb":{gl:37852},"astc-12x12-unorm":{gl:37821},"astc-12x12-unorm-srgb":{gl:37853},"pvrtc-rgb4unorm-webgl":{gl:35840},"pvrtc-rgba4unorm-webgl":{gl:35842},"pvrtc-rgb2unorm-webgl":{gl:35841},"pvrtc-rgba2unorm-webgl":{gl:35843},"etc1-rbg-unorm-webgl":{gl:36196},"atc-rgb-unorm-webgl":{gl:35986},"atc-rgba-unorm-webgl":{gl:35986},"atc-rgbai-unorm-webgl":{gl:34798}}});var Zr,jr,Ye,Jr=g(()=>{Zr=C(N(),1);Ce();de();jr={"depth-clip-control":"EXT_depth_clamp","timestamp-query":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"},Ye=class extends Zr.DeviceFeatures{gl;extensions;testedFeatures=new Set;constructor(t,r,s){super([],s),this.gl=t,this.extensions=r,K(t,"EXT_color_buffer_float",r)}*[Symbol.iterator](){let t=this.getFeatures();for(let r of t)this.has(r)&&(yield r);return[]}has(t){return this.disabledFeatures?.[t]?!1:(this.testedFeatures.has(t)||(this.testedFeatures.add(t),zr(t)&&Kt(this.gl,t,this.extensions)&&this.features.add(t),this.getWebGLFeature(t)&&this.features.add(t)),this.features.has(t))}initializeFeatures(){let t=this.getFeatures().filter(r=>r!=="polygon-mode-webgl");for(let r of t)this.has(r)}getFeatures(){return[...Object.keys(jr),...Object.keys(He)]}getWebGLFeature(t){let r=jr[t];return Boolean(typeof r=="string"?K(this.gl,r,this.extensions):r)}}});var Gr,Ke,es=g(()=>{Gr=C(N(),1),Ke=class extends Gr.DeviceLimits{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderVariables(){return this.getParameter(35659)}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(t){super(),this.gl=t}getParameter(t){return this.limits[t]===void 0&&(this.limits[t]=this.gl.getParameter(t)),this.limits[t]||0}}});function tn(e){return e<34069?e+34069:e}function rn(e){switch(e){case 36053:return"success";case 36054:return"Mismatched attachments";case 36055:return"No attachments";case 36057:return"Height/width mismatch";case 36061:return"Unsupported or split attachments";case 36182:return"Samples mismatch";default:return`${e}`}}var ts,q,$e=g(()=>{ts=C(N(),1);de();q=class extends ts.Framebuffer{device;gl;handle;colorAttachments=[];depthStencilAttachment=null;constructor(t,r){super(t,r);let s=r.handle===null;this.device=t,this.gl=t.gl,this.handle=this.props.handle||s?this.props.handle:this.gl.createFramebuffer(),s||(t._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.autoCreateAttachmentTextures(),this.updateAttachments())}destroy(){super.destroy(),!this.destroyed&&this.handle!==null&&this.gl.deleteFramebuffer(this.handle)}updateAttachments(){let t=this.gl.bindFramebuffer(36160,this.handle);for(let r=0;r<this.colorAttachments.length;++r){let s=this.colorAttachments[r];if(s){let i=36064+r;this._attachTextureView(i,s)}}if(this.depthStencilAttachment){let r=qr(this.depthStencilAttachment.props.format);this._attachTextureView(r,this.depthStencilAttachment)}if(this.device.props.debug){let r=this.gl.checkFramebufferStatus(36160);if(r!==36053)throw new Error(`Framebuffer ${rn(r)}`)}this.gl.bindFramebuffer(36160,t)}_attachTextureView(t,r){let{gl:s}=this.device,{texture:i}=r,n=r.props.baseMipLevel,o=r.props.baseArrayLayer;switch(s.bindTexture(i.glTarget,i.handle),i.glTarget){case 35866:case 32879:s.framebufferTextureLayer(36160,t,i.handle,n,o);break;case 34067:let a=tn(o);s.framebufferTexture2D(36160,t,a,i.handle,n);break;case 3553:s.framebufferTexture2D(36160,t,3553,i.handle,n);break;default:throw new Error("Illegal texture type")}s.bindTexture(i.glTarget,null)}resizeAttachments(t,r){if(this.handle===null){this.width=t,this.height=r;return}super.resizeAttachments(t,r)}}});var rs,ze,ss=g(()=>{rs=C(N(),1);$e();ze=class extends rs.CanvasContext{device;handle=null;_framebuffer=null;get[Symbol.toStringTag](){return"WebGLCanvasContext"}constructor(t,r){super(r),this.device=t,this._setAutoCreatedCanvasId(`${this.device.id}-canvas`),this._configureDevice()}_configureDevice(){(this.drawingBufferWidth!==this._framebuffer?.width||this.drawingBufferHeight!==this._framebuffer?.height)&&this._framebuffer?.resize([this.drawingBufferWidth,this.drawingBufferHeight])}_getCurrentFramebuffer(){return this._framebuffer||=new q(this.device,{id:"canvas-context-framebuffer",handle:null,width:this.drawingBufferWidth,height:this.drawingBufferHeight}),this._framebuffer}}});var is,Le,ns=g(()=>{is=C(N(),1),Le=class extends is.PresentationContext{device;handle=null;context2d;get[Symbol.toStringTag](){return"WebGLPresentationContext"}constructor(t,r={}){super(r),this.device=t;let s=`${this[Symbol.toStringTag]}(${this.id})`;if(!this.device.getDefaultCanvasContext().offscreenCanvas)throw new Error(`${s}: WebGL PresentationContext requires the default CanvasContext canvas to be an OffscreenCanvas`);let n=this.canvas.getContext("2d");if(!n)throw new Error(`${s}: Failed to create 2d presentation context`);this.context2d=n,this._setAutoCreatedCanvasId(`${this.device.id}-presentation-canvas`),this._configureDevice(),this._startObservers()}present(){this._resizeDrawingBufferIfNeeded(),this.device.submit();let t=this.device.getDefaultCanvasContext(),[r,s]=t.getDrawingBufferSize();if(!(this.drawingBufferWidth===0||this.drawingBufferHeight===0||r===0||s===0||t.canvas.width===0||t.canvas.height===0)){if(r!==this.drawingBufferWidth||s!==this.drawingBufferHeight||t.canvas.width!==this.drawingBufferWidth||t.canvas.height!==this.drawingBufferHeight)throw new Error(`${this[Symbol.toStringTag]}(${this.id}): Default canvas context size ${r}x${s} does not match presentation size ${this.drawingBufferWidth}x${this.drawingBufferHeight}`);this.context2d.clearRect(0,0,this.drawingBufferWidth,this.drawingBufferHeight),this.context2d.drawImage(t.canvas,0,0)}}_configureDevice(){}_getCurrentFramebuffer(t){let r=this.device.getDefaultCanvasContext();return r.setDrawingBufferSize(this.drawingBufferWidth,this.drawingBufferHeight),r.getCurrentFramebuffer(t)}}});function os(e="id"){$t[e]=$t[e]||1;let t=$t[e]++;return`${e}-${t}`}var $t,as=g(()=>{$t={}});function sn(e){return e&se.Buffer.INDEX?34963:e&se.Buffer.VERTEX?34962:e&se.Buffer.UNIFORM?35345:34962}function nn(e){return e&se.Buffer.INDEX||e&se.Buffer.VERTEX?35044:e&se.Buffer.UNIFORM?35048:35044}var se,$,Qe=g(()=>{se=C(N(),1),$=class extends se.Buffer{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength=0;bytesUsed=0;constructor(t,r={}){super(t,r),this.device=t,this.gl=this.device.gl;let s=typeof r=="object"?r.handle:void 0;this.handle=s||this.gl.createBuffer(),t._setWebGLDebugMetadata(this.handle,this,{spector:{...this.props,data:typeof this.props.data}}),this.glTarget=sn(this.props.usage),this.glUsage=nn(this.props.usage),this.glIndexType=this.props.indexType==="uint32"?5125:5123,r.data?this._initWithData(r.data,r.byteOffset,r.byteLength):this._initWithByteLength(r.byteLength||0)}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.props.handle?this.trackDeallocatedReferencedMemory("Buffer"):(this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle)),this.destroyed=!0,this.handle=null)}_initWithData(t,r=0,s=t.byteLength+r){let i=this.glTarget;this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,s,this.glUsage),this.gl.bufferSubData(i,r,t),this.gl.bindBuffer(i,null),this.bytesUsed=s,this.byteLength=s,this._setDebugData(t,r,s),this.props.handle?this.trackReferencedMemory(s,"Buffer"):this.trackAllocatedMemory(s)}_initWithByteLength(t){let r=t;t===0&&(r=new Float32Array(0));let s=this.glTarget;return this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,r,this.glUsage),this.gl.bindBuffer(s,null),this.bytesUsed=t,this.byteLength=t,this._setDebugData(null,0,t),this.props.handle?this.trackReferencedMemory(t,"Buffer"):this.trackAllocatedMemory(t),this}write(t,r=0){let s=ArrayBuffer.isView(t)?t:new Uint8Array(t),i=0,n=void 0,o=36663;this.gl.bindBuffer(o,this.handle),i!==0||n!==void 0?this.gl.bufferSubData(o,r,s,i,n):this.gl.bufferSubData(o,r,s),this.gl.bindBuffer(o,null),this._setDebugData(t,r,t.byteLength)}async mapAndWriteAsync(t,r=0,s=this.byteLength-r){let i=new ArrayBuffer(s);await t(i,"copied"),this.write(i,r)}async readAsync(t=0,r){return this.readSyncWebGL(t,r)}async mapAndReadAsync(t,r=0,s){let i=await this.readAsync(r,s);return await t(i.buffer,"copied")}readSyncWebGL(t=0,r){r=r??this.byteLength-t;let s=new Uint8Array(r),i=0;return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,t,s,i,r),this.gl.bindBuffer(36662,null),this._setDebugData(s,t,r),s}}});function cs(e){let t=e.split(/\r?\n/),r=[];for(let s of t){if(s.length<=1)continue;let i=s.trim(),n=s.split(":"),o=n[0]?.trim();if(n.length===2){let[T,d]=n;if(!T||!d){r.push({message:i,type:qe(o||"info"),lineNum:0,linePos:0});continue}r.push({message:d.trim(),type:qe(T),lineNum:0,linePos:0});continue}let[a,c,l,..._]=n;if(!a||!c||!l){r.push({message:n.slice(1).join(":").trim()||i,type:qe(o||"info"),lineNum:0,linePos:0});continue}let f=parseInt(l,10);Number.isNaN(f)&&(f=0);let h=parseInt(c,10);Number.isNaN(h)&&(h=0),r.push({message:_.join(":").trim(),type:qe(a),lineNum:f,linePos:h})}return r}function qe(e){let t=["warning","error","info"],r=e.toLowerCase();return t.includes(r)?r:"info"}var ls=g(()=>{});var Ie,je,_s=g(()=>{Ie=C(N(),1);ls();je=class extends Ie.Shader{device;handle;constructor(t,r){switch(super(t,r),this.device=t,this.props.stage){case"vertex":this.handle=this.props.handle||this.device.gl.createShader(35633);break;case"fragment":this.handle=this.props.handle||this.device.gl.createShader(35632);break;default:throw new Error(this.props.stage)}t._setWebGLDebugMetadata(this.handle,this,{spector:this.props});let s=this._compile(this.source);s&&typeof s.catch=="function"&&s.catch(()=>{this.compilationStatus="error"})}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0,this.handle.destroyed=!0)}get asyncCompilationStatus(){return this._waitForCompilationComplete().then(()=>(this._getCompilationStatus(),this.compilationStatus))}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let t=this.device.gl.getShaderInfoLog(this.handle);return t?cs(t):[]}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)||null}_compile(t){t=t.startsWith("#version ")?t:`#version 300 es
|
|
8
|
+
${t}`;let{gl:r}=this.device;if(r.shaderSource(this.handle,t),r.compileShader(this.handle),!this.device.props.debug){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),this.compilationStatus==="error")throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);return}return Ie.log.once(1,"Shader compilation is asynchronous")(),this._waitForCompilationComplete().then(()=>{Ie.log.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()})}async _waitForCompilationComplete(){let t=async i=>await new Promise(n=>setTimeout(n,i));if(!this.device.features.has("compilation-status-async-webgl")){await t(10);return}let{gl:s}=this.device;for(;;){if(s.getShaderParameter(this.handle,37297))return;await t(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error"}}});function Ts(e,t,r,s){if(ln(t))return s(e);let i=e;i.pushState();try{return on(e,t),k(i.gl,r),s(e)}finally{i.popState()}}function on(e,t){let r=e,{gl:s}=r;if(t.cullMode)switch(t.cullMode){case"none":s.disable(2884);break;case"front":s.enable(2884),s.cullFace(1028);break;case"back":s.enable(2884),s.cullFace(1029);break}if(t.frontFace&&s.frontFace(oe("frontFace",t.frontFace,{ccw:2305,cw:2304})),t.unclippedDepth&&e.features.has("depth-clip-control")&&s.enable(34383),t.depthBias!==void 0&&(s.enable(32823),s.polygonOffset(t.depthBias,t.depthBiasSlopeScale||0)),t.provokingVertex&&e.features.has("provoking-vertex-webgl")){let n=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,o=oe("provokingVertex",t.provokingVertex,{first:36429,last:36430});n?.provokingVertexWEBGL(o)}if((t.polygonMode||t.polygonOffsetLine)&&e.features.has("polygon-mode-webgl")){if(t.polygonMode){let n=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,o=oe("polygonMode",t.polygonMode,{fill:6914,line:6913});n?.polygonModeWEBGL(1028,o),n?.polygonModeWEBGL(1029,o)}t.polygonOffsetLine&&s.enable(10754)}if(e.features.has("shader-clip-cull-distance-webgl")&&(t.clipDistance0&&s.enable(12288),t.clipDistance1&&s.enable(12289),t.clipDistance2&&s.enable(12290),t.clipDistance3&&s.enable(12291),t.clipDistance4&&s.enable(12292),t.clipDistance5&&s.enable(12293),t.clipDistance6&&s.enable(12294),t.clipDistance7&&s.enable(12295)),t.depthWriteEnabled!==void 0&&s.depthMask(cn("depthWriteEnabled",t.depthWriteEnabled)),t.depthCompare&&(t.depthCompare!=="always"?s.enable(2929):s.disable(2929),s.depthFunc(Je("depthCompare",t.depthCompare))),t.clearDepth!==void 0&&s.clearDepth(t.clearDepth),t.stencilWriteMask){let i=t.stencilWriteMask;s.stencilMaskSeparate(1028,i),s.stencilMaskSeparate(1029,i)}if(t.stencilReadMask&&hs.log.warn("stencilReadMask not supported under WebGL"),t.stencilCompare){let i=t.stencilReadMask||4294967295,n=Je("depthCompare",t.stencilCompare);t.stencilCompare!=="always"?s.enable(2960):s.disable(2960),s.stencilFuncSeparate(1028,n,0,i),s.stencilFuncSeparate(1029,n,0,i)}if(t.stencilPassOperation&&t.stencilFailOperation&&t.stencilDepthFailOperation){let i=zt("stencilPassOperation",t.stencilPassOperation),n=zt("stencilFailOperation",t.stencilFailOperation),o=zt("stencilDepthFailOperation",t.stencilDepthFailOperation);s.stencilOpSeparate(1028,n,o,i),s.stencilOpSeparate(1029,n,o,i)}switch(t.blend){case!0:s.enable(3042);break;case!1:s.disable(3042);break;default:}if(t.blendColorOperation||t.blendAlphaOperation){let i=fs("blendColorOperation",t.blendColorOperation||"add"),n=fs("blendAlphaOperation",t.blendAlphaOperation||"add");s.blendEquationSeparate(i,n);let o=Ze("blendColorSrcFactor",t.blendColorSrcFactor||"one"),a=Ze("blendColorDstFactor",t.blendColorDstFactor||"zero"),c=Ze("blendAlphaSrcFactor",t.blendAlphaSrcFactor||"one"),l=Ze("blendAlphaDstFactor",t.blendAlphaDstFactor||"zero");s.blendFuncSeparate(o,a,c,l)}}function Je(e,t){return oe(e,t,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function zt(e,t){return oe(e,t,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function fs(e,t){return oe(e,t,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function Ze(e,t,r="color"){return oe(e,t,{one:1,zero:0,src:768,"one-minus-src":769,dst:774,"one-minus-dst":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,constant:r==="color"?32769:32771,"one-minus-constant":r==="color"?32770:32772,src1:768,"one-minus-src1":769,"src1-alpha":770,"one-minus-src1-alpha":771})}function an(e,t){return`Illegal parameter ${t} for ${e}`}function oe(e,t,r){if(!(t in r))throw new Error(an(e,t));return r[t]}function cn(e,t){return t}function ln(e){let t=!0;for(let r in e){t=!1;break}return t}var hs,Lt=g(()=>{hs=C(N(),1);fe()});function Ge(e){let t={};return e.addressModeU&&(t[10242]=Qt(e.addressModeU)),e.addressModeV&&(t[10243]=Qt(e.addressModeV)),e.addressModeW&&(t[32882]=Qt(e.addressModeW)),e.magFilter&&(t[10240]=qt(e.magFilter)),(e.minFilter||e.mipmapFilter)&&(t[10241]=_n(e.minFilter||"linear",e.mipmapFilter)),e.lodMinClamp!==void 0&&(t[33082]=e.lodMinClamp),e.lodMaxClamp!==void 0&&(t[33083]=e.lodMaxClamp),e.type==="comparison-sampler"&&(t[34892]=34894),e.compare&&(t[34893]=Je("compare",e.compare)),e.maxAnisotropy&&(t[34046]=e.maxAnisotropy),t}function Qt(e){switch(e){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function qt(e){switch(e){case"nearest":return 9728;case"linear":return 9729}}function _n(e,t="none"){if(!t)return qt(e);switch(t){case"none":return qt(e);case"nearest":switch(e){case"nearest":return 9984;case"linear":return 9985}break;case"linear":switch(e){case"nearest":return 9986;case"linear":return 9987}}}var jt=g(()=>{Lt()});var ds,et,Rs=g(()=>{ds=C(N(),1);jt();et=class extends ds.Sampler{device;handle;parameters;constructor(t,r){super(t,r),this.device=t,this.parameters=Ge(r),this.handle=r.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(t){for(let[r,s]of Object.entries(t)){let i=Number(r);switch(i){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,i,s);break;default:this.device.gl.samplerParameteri(this.handle,i,s);break}}}}});function j(e,t,r){if(fn(t))return r(e);let{nocatch:s=!0}=t,i=Y.get(e);i.push(),k(e,t);let n;if(s)n=r(e),i.pop();else try{n=r(e)}finally{i.pop()}return n}function fn(e){for(let t in e)return!1;return!0}var tt=g(()=>{fe();vt()});var rt,Z,Zt=g(()=>{rt=C(N(),1),Z=class extends rt.TextureView{device;gl;handle;texture;constructor(t,r){super(t,{...rt.Texture.defaultProps,...r}),this.device=t,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}}});function st(e){return hn[e]}var hn,Jt=g(()=>{hn={[5124]:"sint32",[5125]:"uint32",[5122]:"sint16",[5123]:"uint16",[5120]:"sint8",[5121]:"uint8",[5126]:"float32",[5131]:"float16",[33635]:"uint16",[32819]:"uint16",[32820]:"uint16",[33640]:"uint32",[35899]:"uint32",[35902]:"uint32",[34042]:"uint32",[36269]:"uint32"}});function Tn(e,t=0){return t?new e.constructor(e.buffer,e.byteOffset+t,(e.byteLength-t)/e.BYTES_PER_ELEMENT):e}function dn(e,t){if(t%e.BYTES_PER_ELEMENT!==0)throw new Error(`Texture byteOffset ${t} must align to typed array element size ${e.BYTES_PER_ELEMENT}`);return t/e.BYTES_PER_ELEMENT}function Rn(e){switch(e){case"1d":break;case"2d":return 3553;case"3d":return 32879;case"cube":return 34067;case"2d-array":return 35866;case"cube-array":break}throw new Error(e)}function it(e,t,r){return t==="cube"?34069+r:e}var ie,J,nt=g(()=>{ie=C(N(),1);de();jt();tt();Zt();Jt();J=class extends ie.Texture{device;gl;handle;sampler=void 0;view;glTarget;glFormat;glType;glInternalFormat;compressed;_textureUnit=0;_framebuffer=null;_framebufferAttachmentKey=null;constructor(t,r){super(t,r,{byteAlignment:1}),this.device=t,this.gl=this.device.gl;let s=ke(this.props.format);this.glTarget=Rn(this.props.dimension),this.glInternalFormat=s.internalFormat,this.glFormat=s.format,this.glType=s.type,this.compressed=s.compressed,this.handle=this.props.handle||this.gl.createTexture(),this.device._setWebGLDebugMetadata(this.handle,this,{spector:this.props}),this.gl.bindTexture(this.glTarget,this.handle);let{dimension:i,width:n,height:o,depth:a,mipLevels:c,glTarget:l,glInternalFormat:_}=this;if(!this.compressed)switch(i){case"2d":case"cube":this.gl.texStorage2D(l,c,_,n,o);break;case"2d-array":case"3d":this.gl.texStorage3D(l,c,_,n,o,a);break;default:throw new Error(i)}this.gl.bindTexture(this.glTarget,null),this._initializeData(r.data),this.props.handle?this.trackReferencedMemory(this.getAllocatedByteLength(),"Texture"):this.trackAllocatedMemory(this.getAllocatedByteLength(),"Texture"),this.setSampler(this.props.sampler),this.view=new Z(this.device,{...this.props,texture:this}),Object.seal(this)}destroy(){this.handle&&(this._framebuffer?.destroy(),this._framebuffer=null,this._framebufferAttachmentKey=null,this.removeStats(),this.props.handle?this.trackDeallocatedReferencedMemory("Texture"):(this.gl.deleteTexture(this.handle),this.trackDeallocatedMemory("Texture")),this.destroyed=!0)}createView(t){return new Z(this.device,{...t,texture:this})}setSampler(t={}){super.setSampler(t);let r=Ge(this.sampler.props);this._setSamplerParameters(r)}copyExternalImage(t){let r=this._normalizeCopyExternalImageOptions(t);if(r.sourceX||r.sourceY)throw new Error("WebGL does not support sourceX/sourceY)");let{glFormat:s,glType:i}=this,{image:n,depth:o,mipLevel:a,x:c,y:l,z:_,width:f,height:h}=r,T=it(this.glTarget,this.dimension,_),d=r.flipY?{[37440]:!0}:{};return this.gl.bindTexture(this.glTarget,this.handle),j(this.gl,d,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(T,a,c,l,f,h,s,i,n);break;case"2d-array":case"3d":this.gl.texSubImage3D(T,a,c,l,_,f,h,o,s,i,n);break;default:}}),this.gl.bindTexture(this.glTarget,null),{width:r.width,height:r.height}}copyImageData(t){super.copyImageData(t)}readBuffer(t={},r){if(!r)throw new Error(`${this} readBuffer requires a destination buffer`);let s=this._getSupportedColorReadOptions(t),i=t.byteOffset??0,n=this.computeMemoryLayout(s);if(r.byteLength<i+n.byteLength)throw new Error(`${this} readBuffer target is too small (${r.byteLength} < ${i+n.byteLength})`);let o=r;this.gl.bindBuffer(35051,o.handle);try{this._readColorTextureLayers(s,n,a=>{this.gl.readPixels(s.x,s.y,s.width,s.height,this.glFormat,this.glType,i+a)})}finally{this.gl.bindBuffer(35051,null)}return r}async readDataAsync(t={}){throw new Error(`${this} readDataAsync is deprecated; use readBuffer() with an explicit destination buffer or DynamicTexture.readAsync()`)}writeBuffer(t,r={}){let s=this._normalizeTextureWriteOptions(r),{width:i,height:n,depthOrArrayLayers:o,mipLevel:a,byteOffset:c,x:l,y:_,z:f}=s,{glFormat:h,glType:T,compressed:d}=this,R=it(this.glTarget,this.dimension,f);if(d)throw new Error("writeBuffer for compressed textures is not implemented in WebGL");let{bytesPerPixel:A}=this.device.getTextureFormatInfo(this.format),p=A?s.bytesPerRow/A:void 0,b={[3317]:this.byteAlignment,...p!==void 0?{[3314]:p}:{},[32878]:s.rowsPerImage};this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,t.handle),j(this.gl,b,()=>{switch(this.dimension){case"2d":case"cube":this.gl.texSubImage2D(R,a,l,_,i,n,h,T,c);break;case"2d-array":case"3d":this.gl.texSubImage3D(R,a,l,_,f,i,n,o,h,T,c);break;default:}}),this.gl.bindBuffer(35052,null),this.gl.bindTexture(this.glTarget,null)}writeData(t,r={}){let s=this._normalizeTextureWriteOptions(r),i=ArrayBuffer.isView(t)?t:new Uint8Array(t),{width:n,height:o,depthOrArrayLayers:a,mipLevel:c,x:l,y:_,z:f,byteOffset:h}=s,{glFormat:T,glType:d,compressed:R}=this,A=it(this.glTarget,this.dimension,f),p;if(!R){let{bytesPerPixel:u}=this.device.getTextureFormatInfo(this.format);u&&(p=s.bytesPerRow/u)}let b=this.compressed?{}:{[3317]:this.byteAlignment,...p!==void 0?{[3314]:p}:{},[32878]:s.rowsPerImage},M=dn(i,h),E=R?Tn(i,h):i,S=this._getMipLevelSize(c),x=l===0&&_===0&&f===0&&n===S.width&&o===S.height&&a===S.depthOrArrayLayers;this.gl.bindTexture(this.glTarget,this.handle),this.gl.bindBuffer(35052,null),j(this.gl,b,()=>{switch(this.dimension){case"2d":case"cube":R?x?this.gl.compressedTexImage2D(A,c,T,n,o,0,E):this.gl.compressedTexSubImage2D(A,c,l,_,n,o,T,E):this.gl.texSubImage2D(A,c,l,_,n,o,T,d,i,M);break;case"2d-array":case"3d":R?x?this.gl.compressedTexImage3D(A,c,T,n,o,a,0,E):this.gl.compressedTexSubImage3D(A,c,l,_,f,n,o,a,T,E):this.gl.texSubImage3D(A,c,l,_,f,n,o,a,T,d,i,M);break;default:}}),this.gl.bindTexture(this.glTarget,null)}_getRowByteAlignment(t,r){return 1}_getFramebuffer(){return this._framebuffer||=this.device.createFramebuffer({id:`framebuffer-for-${this.id}`,width:this.width,height:this.height,colorAttachments:[this]}),this._framebuffer}readDataSyncWebGL(t={}){let r=this._getSupportedColorReadOptions(t),s=this.computeMemoryLayout(r),i=st(this.glType),n=(0,ie.getTypedArrayConstructor)(i),o=new n(s.byteLength/n.BYTES_PER_ELEMENT);return this._readColorTextureLayers(r,s,a=>{let c=new n(o.buffer,o.byteOffset+a,s.bytesPerImage/n.BYTES_PER_ELEMENT);this.gl.readPixels(r.x,r.y,r.width,r.height,this.glFormat,this.glType,c)}),o.buffer}_readColorTextureLayers(t,r,s){let i=this._getFramebuffer(),n=r.bytesPerRow/r.bytesPerPixel,o={[3333]:this.byteAlignment,...n!==t.width?{[3330]:n}:{}},a=this.gl.getParameter(3074),c=this.gl.bindFramebuffer(36160,i.handle);try{this.gl.readBuffer(36064),j(this.gl,o,()=>{for(let l=0;l<t.depthOrArrayLayers;l++)this._attachReadSubresource(i,t.mipLevel,t.z+l),s(l*r.bytesPerImage)})}finally{this.gl.bindFramebuffer(36160,c||null),this.gl.readBuffer(a)}}_attachReadSubresource(t,r,s){let i=`${r}:${s}`;if(this._framebufferAttachmentKey!==i){switch(this.dimension){case"2d":this.gl.framebufferTexture2D(36160,36064,3553,this.handle,r);break;case"cube":this.gl.framebufferTexture2D(36160,36064,it(this.glTarget,this.dimension,s),this.handle,r);break;case"2d-array":case"3d":this.gl.framebufferTextureLayer(36160,36064,this.handle,r,s);break;default:throw new Error(`${this} color readback does not support ${this.dimension} textures`)}if(this.device.props.debug){let n=Number(this.gl.checkFramebufferStatus(36160));if(n!==Number(36053))throw new Error(`${t} incomplete for ${this} readback (${n})`)}this._framebufferAttachmentKey=i}}generateMipmapsWebGL(t){if(!(!(this.device.isTextureFormatRenderable(this.props.format)&&this.device.isTextureFormatFilterable(this.props.format))&&(ie.log.warn(`${this} is not renderable or filterable, may not be able to generate mipmaps`)(),!t?.force)))try{this.gl.bindTexture(this.glTarget,this.handle),this.gl.generateMipmap(this.glTarget)}catch(s){ie.log.warn(`Error generating mipmap for ${this}: ${s.message}`)()}finally{this.gl.bindTexture(this.glTarget,null)}}_setSamplerParameters(t){ie.log.log(2,`${this.id} sampler parameters`,this.device.getGLKeys(t))(),this.gl.bindTexture(this.glTarget,this.handle);for(let[r,s]of Object.entries(t)){let i=Number(r),n=s;switch(i){case 33082:case 33083:this.gl.texParameterf(this.glTarget,i,n);break;case 10240:case 10241:this.gl.texParameteri(this.glTarget,i,n);break;case 10242:case 10243:case 32882:this.gl.texParameteri(this.glTarget,i,n);break;case 34046:this.device.features.has("texture-filterable-anisotropic-webgl")&&this.gl.texParameteri(this.glTarget,i,n);break;case 34892:case 34893:this.gl.texParameteri(this.glTarget,i,n);break}}this.gl.bindTexture(this.glTarget,null)}_getActiveUnit(){return this.gl.getParameter(34016)-33984}_bind(t){let{gl:r}=this;return t!==void 0&&(this._textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,this.handle),t}_unbind(t){let{gl:r}=this;return t!==void 0&&(this._textureUnit=t,r.activeTexture(33984+t)),r.bindTexture(this.glTarget,null),t}}});function As(e,t,r,s){let i=e,n=s;n===!0&&(n=1),n===!1&&(n=0);let o=typeof n=="number"?[n]:n;switch(r){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if(typeof s!="number")throw new Error("samplers must be set to integers");return e.uniform1i(t,s);case 5126:return e.uniform1fv(t,o);case 35664:return e.uniform2fv(t,o);case 35665:return e.uniform3fv(t,o);case 35666:return e.uniform4fv(t,o);case 5124:return e.uniform1iv(t,o);case 35667:return e.uniform2iv(t,o);case 35668:return e.uniform3iv(t,o);case 35669:return e.uniform4iv(t,o);case 35670:return e.uniform1iv(t,o);case 35671:return e.uniform2iv(t,o);case 35672:return e.uniform3iv(t,o);case 35673:return e.uniform4iv(t,o);case 5125:return i.uniform1uiv(t,o,1);case 36294:return i.uniform2uiv(t,o,2);case 36295:return i.uniform3uiv(t,o,3);case 36296:return i.uniform4uiv(t,o,4);case 35674:return e.uniformMatrix2fv(t,!1,o);case 35675:return e.uniformMatrix3fv(t,!1,o);case 35676:return e.uniformMatrix4fv(t,!1,o);case 35685:return i.uniformMatrix2x3fv(t,!1,o);case 35686:return i.uniformMatrix2x4fv(t,!1,o);case 35687:return i.uniformMatrix3x2fv(t,!1,o);case 35688:return i.uniformMatrix3x4fv(t,!1,o);case 35689:return i.uniformMatrix4x2fv(t,!1,o);case 35690:return i.uniformMatrix4x3fv(t,!1,o)}throw new Error("Illegal uniform")}var ps=g(()=>{});function gs(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"triangle-list":return 4;case"triangle-strip":return 5;default:throw new Error(e)}}function Ss(e){switch(e){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 1;case"triangle-list":return 4;case"triangle-strip":return 4;default:throw new Error(e)}}var Gt=g(()=>{});function An(e,t){let r={...e,attributes:e.attributes.map(s=>({...s})),bindings:e.bindings.map(s=>({...s}))};for(let s of t?.attributes||[]){let i=r.attributes.find(n=>n.name===s.name);i?(i.type=s.type||i.type,i.stepMode=s.stepMode||i.stepMode):y.log.warn(`shader layout attribute ${s.name} not present in shader`)}for(let s of t?.bindings||[]){let i=Ms(r,s.name);if(!i){y.log.warn(`shader layout binding ${s.name} not present in shader`);continue}Object.assign(i,s)}return r}function Ms(e,t){return e.bindings.find(r=>r.name===t||r.name===`${t}Uniforms`||`${r.name}Uniforms`===t)}function Es(e,t){return e[t]||e[`${t}Uniforms`]||e[t.replace(/Uniforms$/,"")]}var y,ot,xs=g(()=>{y=C(N(),1);Lt();ps();Qe();$e();nt();Zt();Gt();ot=class extends y.RenderPipeline{device;handle;vs;fs;introspectedLayout;bindings={};uniforms={};varyings=null;_uniformCount=0;_uniformSetters={};get[Symbol.toStringTag](){return"WEBGLRenderPipeline"}constructor(t,r){super(t,r),this.device=t;let s=this.sharedRenderPipeline||this.device._createSharedRenderPipelineWebGL(r);this.sharedRenderPipeline=s,this.handle=s.handle,this.vs=s.vs,this.fs=s.fs,this.linkStatus=s.linkStatus,this.introspectedLayout=s.introspectedLayout,this.device._setWebGLDebugMetadata(this.handle,this,{spector:{id:this.props.id}}),this.shaderLayout=r.shaderLayout?An(this.introspectedLayout,r.shaderLayout):this.introspectedLayout}destroy(){this.destroyed||(this.sharedRenderPipeline&&!this.props._sharedRenderPipeline&&this.sharedRenderPipeline.destroy(),this.destroyResource())}setBindings(t,r){let s=(0,y.flattenBindingsByGroup)((0,y.normalizeBindingsByGroup)(this.shaderLayout,t));for(let[i,n]of Object.entries(s)){let o=Ms(this.shaderLayout,i);if(o){switch(n||y.log.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),o.type){case"uniform":if(!(n instanceof $)&&!(n.buffer instanceof $))throw new Error("buffer value");break;case"texture":if(!(n instanceof Z||n instanceof J||n instanceof q))throw new Error(`${this} Bad texture binding for ${i}`);break;case"sampler":y.log.warn(`Ignoring sampler ${i}`)();break;default:throw new Error(o.type)}this.bindings[i]=n}else{let a=this.shaderLayout.bindings.map(c=>`"${c.name}"`).join(", ");r?.disableWarnings||y.log.warn(`No binding "${i}" in render pipeline "${this.id}", expected one of ${a}`,n)()}}}draw(t){this._syncLinkStatus();let r=t.bindGroups?(0,y.flattenBindingsByGroup)(t.bindGroups):t.bindings||this.bindings,{renderPass:s,parameters:i=this.props.parameters,topology:n=this.props.topology,vertexArray:o,vertexCount:a,instanceCount:c,isInstanced:l=!1,firstVertex:_=0,transformFeedback:f,uniforms:h=this.uniforms}=t,T=gs(n),d=Boolean(o.indexBuffer),R=o.indexBuffer?.glIndexType;if(this.linkStatus!=="success")return y.log.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable(r))return y.log.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;this.device.gl.useProgram(this.handle),o.bindBeforeRender(s),f&&f.begin(this.props.topology),this._applyBindings(r,{disableWarnings:this.props.disableWarnings}),this._applyUniforms(h);let A=s;return Ts(this.device,i,A.glParameters,()=>{d&&l?this.device.gl.drawElementsInstanced(T,a||0,R,_,c||0):d?this.device.gl.drawElements(T,a||0,R,_):l?this.device.gl.drawArraysInstanced(T,_,a||0,c||0):this.device.gl.drawArrays(T,_,a||0),f&&f.end()}),o.unbindAfterRender(s),!0}_areTexturesRenderable(t){let r=!0;for(let s of this.shaderLayout.bindings)Es(t,s.name)||(y.log.warn(`Binding ${s.name} not found in ${this.id}`)(),r=!1);return r}_applyBindings(t,r){if(this._syncLinkStatus(),this.linkStatus!=="success")return;let{gl:s}=this.device;s.useProgram(this.handle);let i=0,n=0;for(let o of this.shaderLayout.bindings){let a=Es(t,o.name);if(!a)throw new Error(`No value for binding ${o.name} in ${this.id}`);switch(o.type){case"uniform":let{name:c}=o,l=s.getUniformBlockIndex(this.handle,c);if(l===4294967295)throw new Error(`Invalid uniform block name ${c}`);if(s.uniformBlockBinding(this.handle,l,n),a instanceof $)s.bindBufferBase(35345,n,a.handle);else{let f=a;s.bindBufferRange(35345,n,f.buffer.handle,f.offset||0,f.size||f.buffer.byteLength-(f.offset||0))}n+=1;break;case"texture":if(!(a instanceof Z||a instanceof J||a instanceof q))throw new Error("texture");let _;if(a instanceof Z)_=a.texture;else if(a instanceof J)_=a;else if(a instanceof q&&a.colorAttachments[0]instanceof Z)y.log.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),_=a.colorAttachments[0].texture;else throw new Error("No texture");s.activeTexture(33984+i),s.bindTexture(_.glTarget,_.handle),i+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw new Error(`binding type '${o.type}' not supported in WebGL`)}}}_applyUniforms(t){for(let r of this.shaderLayout.uniforms||[]){let{name:s,location:i,type:n,textureUnit:o}=r,a=t[s]??o;a!==void 0&&As(this.device.gl,i,n,a)}}_syncLinkStatus(){this.linkStatus=this.sharedRenderPipeline.linkStatus}}});function bs(e){return gn[e]}function at(e){return pn[e]}function ct(e){return Boolean(Ns[e])}function Cs(e){return Ns[e]}var pn,Ns,gn,lt=g(()=>{pn={[5126]:"f32",[35664]:"vec2<f32>",[35665]:"vec3<f32>",[35666]:"vec4<f32>",[5124]:"i32",[35667]:"vec2<i32>",[35668]:"vec3<i32>",[35669]:"vec4<i32>",[5125]:"u32",[36294]:"vec2<u32>",[36295]:"vec3<u32>",[36296]:"vec4<u32>",[35670]:"f32",[35671]:"vec2<f32>",[35672]:"vec3<f32>",[35673]:"vec4<f32>",[35674]:"mat2x2<f32>",[35685]:"mat2x3<f32>",[35686]:"mat2x4<f32>",[35687]:"mat3x2<f32>",[35675]:"mat3x3<f32>",[35688]:"mat3x4<f32>",[35689]:"mat4x2<f32>",[35690]:"mat4x3<f32>",[35676]:"mat4x4<f32>"},Ns={[35678]:{viewDimension:"2d",sampleType:"float"},[35680]:{viewDimension:"cube",sampleType:"float"},[35679]:{viewDimension:"3d",sampleType:"float"},[35682]:{viewDimension:"3d",sampleType:"depth"},[36289]:{viewDimension:"2d-array",sampleType:"float"},[36292]:{viewDimension:"2d-array",sampleType:"depth"},[36293]:{viewDimension:"cube",sampleType:"float"},[36298]:{viewDimension:"2d",sampleType:"sint"},[36299]:{viewDimension:"3d",sampleType:"sint"},[36300]:{viewDimension:"cube",sampleType:"sint"},[36303]:{viewDimension:"2d-array",sampleType:"uint"},[36306]:{viewDimension:"2d",sampleType:"uint"},[36307]:{viewDimension:"3d",sampleType:"uint"},[36308]:{viewDimension:"cube",sampleType:"uint"},[36311]:{viewDimension:"2d-array",sampleType:"uint"}},gn={uint8:5121,sint8:5120,unorm8:5121,snorm8:5120,uint16:5123,sint16:5122,unorm16:5123,snorm16:5122,uint32:5125,sint32:5124,float16:5131,float32:5126}});function Os(e,t){let r={attributes:[],bindings:[]};r.attributes=Sn(e,t);let s=xn(e,t);for(let a of s){let c=a.uniforms.map(l=>({name:l.name,format:l.format,byteOffset:l.byteOffset,byteStride:l.byteStride,arrayLength:l.arrayLength}));r.bindings.push({type:"uniform",name:a.name,group:0,location:a.location,visibility:(a.vertex?1:0)&(a.fragment?2:0),minBindingSize:a.byteLength,uniforms:c})}let i=Mn(e,t),n=0;for(let a of i)if(ct(a.type)){let{viewDimension:c,sampleType:l}=Cs(a.type);r.bindings.push({type:"texture",name:a.name,group:0,location:n,viewDimension:c,sampleType:l}),a.textureUnit=n,n+=1}i.length&&(r.uniforms=i);let o=En(e,t);return o?.length&&(r.varyings=o),r}function Sn(e,t){let r=[],s=e.getProgramParameter(t,35721);for(let i=0;i<s;i++){let n=e.getActiveAttrib(t,i);if(!n)throw new Error("activeInfo");let{name:o,type:a}=n,c=e.getAttribLocation(t,o);if(c>=0){let l=at(a),_=/instance/i.test(o)?"instance":"vertex";r.push({name:o,location:c,stepMode:_,type:l})}}return r.sort((i,n)=>i.location-n.location),r}function En(e,t){let r=[],s=e.getProgramParameter(t,35971);for(let i=0;i<s;i++){let n=e.getTransformFeedbackVarying(t,i);if(!n)throw new Error("activeInfo");let{name:o,type:a,size:c}=n,l=at(a),{type:_,components:f}=(0,Re.getVariableShaderTypeInfo)(l);r.push({location:i,name:o,type:_,size:c*f})}return r.sort((i,n)=>i.location-n.location),r}function Mn(e,t){let r=[],s=e.getProgramParameter(t,35718);for(let i=0;i<s;i++){let n=e.getActiveUniform(t,i);if(!n)throw new Error("activeInfo");let{name:o,size:a,type:c}=n,{name:l,isArray:_}=bn(o),f=e.getUniformLocation(t,l),h={location:f,name:l,size:a,type:c,isArray:_};if(r.push(h),h.size>1)for(let T=0;T<h.size;T++){let d=`${l}[${T}]`;f=e.getUniformLocation(t,d);let R={...h,name:d,location:f};r.push(R)}}return r}function xn(e,t){let r=(n,o)=>e.getActiveUniformBlockParameter(t,n,o),s=[],i=e.getProgramParameter(t,35382);for(let n=0;n<i;n++){let o={name:e.getActiveUniformBlockName(t,n)||"",location:r(n,35391),byteLength:r(n,35392),vertex:r(n,35396),fragment:r(n,35398),uniformCount:r(n,35394),uniforms:[]},a=r(n,35395)||[],c=e.getActiveUniforms(t,a,35383),l=e.getActiveUniforms(t,a,35384),_=e.getActiveUniforms(t,a,35387),f=e.getActiveUniforms(t,a,35388);for(let d=0;d<o.uniformCount;++d){let R=a[d];if(R!==void 0){let A=e.getActiveUniform(t,R);if(!A)throw new Error("activeInfo");let p=at(c[d]);o.uniforms.push({name:A.name,format:p,type:c[d],arrayLength:l[d],byteOffset:_[d],byteStride:f[d]})}}let h=new Set(o.uniforms.map(d=>d.name.split(".")[0]).filter(d=>Boolean(d))),T=o.name.replace(/Uniforms$/,"");if(h.size===1&&!h.has(o.name)&&!h.has(T)){let[d]=h;Re.log.warn(`Uniform block "${o.name}" uses GLSL instance "${d}". luma.gl binds uniform buffers by block name ("${o.name}") and alias ("${T}"). Prefer matching the instance name to one of those to avoid confusing silent mismatches.`)()}s.push(o)}return s.sort((n,o)=>n.location-o.location),s}function bn(e){if(e[e.length-1]!=="]")return{name:e,length:1,isArray:!1};let r=/([^[]*)(\[[0-9]+\])?/.exec(e);return{name:(0,Re.assertDefined)(r?.[1],`Failed to parse GLSL uniform name ${e}`),length:r?.[2]?1:0,isArray:Boolean(r?.[2])}}var Re,Is=g(()=>{Re=C(N(),1);lt()});var G,Ps,_t,us=g(()=>{G=C(N(),1);Is();lt();Ps=4,_t=class extends G.SharedRenderPipeline{device;handle;vs;fs;introspectedLayout={attributes:[],bindings:[],uniforms:[]};linkStatus="pending";constructor(t,r){super(t,r),this.device=t,this.handle=r.handle||this.device.gl.createProgram(),this.vs=r.vs,this.fs=r.fs,r.varyings&&r.varyings.length>0&&this.device.gl.transformFeedbackVaryings(this.handle,r.varyings,r.bufferMode||35981),this._linkShaders(),G.log.time(3,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=Os(this.device.gl,this.handle),G.log.timeEnd(3,`RenderPipeline ${this.id} - shaderLayout introspection`)()}destroy(){this.destroyed||(this.device.gl.useProgram(null),this.device.gl.deleteProgram(this.handle),this.handle.destroyed=!0,this.destroyResource())}async _linkShaders(){let{gl:t}=this.device;if(t.attachShader(this.handle,this.vs.handle),t.attachShader(this.handle,this.fs.handle),G.log.time(Ps,`linkProgram for ${this.id}`)(),t.linkProgram(this.handle),G.log.timeEnd(Ps,`linkProgram for ${this.id}`)(),!this.device.features.has("compilation-status-async-webgl")){let s=this._getLinkStatus();this._reportLinkStatus(s);return}G.log.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),G.log.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();let r=this._getLinkStatus();this._reportLinkStatus(r)}async _reportLinkStatus(t){switch(t){case"success":return;default:let r=t==="link-error"?"Link error":"Validation error";switch(this.vs.compilationStatus){case"error":throw this.vs.debugShader(),new Error(`${this} ${r} during compilation of ${this.vs}`);case"pending":await this.vs.asyncCompilationStatus,this.vs.debugShader();break;case"success":break}switch(this.fs?.compilationStatus){case"error":throw this.fs.debugShader(),new Error(`${this} ${r} during compilation of ${this.fs}`);case"pending":await this.fs.asyncCompilationStatus,this.fs.debugShader();break;case"success":break}let s=this.device.gl.getProgramInfoLog(this.handle);this.device.reportError(new Error(`${r} during ${t}: ${s}`),this)(),this.device.debug()}}_getLinkStatus(){let{gl:t}=this.device;return t.getProgramParameter(this.handle,35714)?(this._initializeSamplerUniforms(),t.validateProgram(this.handle),t.getProgramParameter(this.handle,35715)?(this.linkStatus="success","success"):(this.linkStatus="error","validation-error")):(this.linkStatus="error","link-error")}_initializeSamplerUniforms(){let{gl:t}=this.device;t.useProgram(this.handle);let r=0,s=t.getProgramParameter(this.handle,35718);for(let i=0;i<s;i++){let n=t.getActiveUniform(this.handle,i);if(n&&ct(n.type)){let o=n.name.endsWith("[0]"),a=o?n.name.slice(0,-3):n.name,c=t.getUniformLocation(this.handle,a);c!==null&&(r=this._assignSamplerUniform(c,n,o,r))}}}_assignSamplerUniform(t,r,s,i){let{gl:n}=this.device;if(s&&r.size>1){let o=Int32Array.from({length:r.size},(a,c)=>i+c);return n.uniform1iv(t,o),i+r.size}return n.uniform1i(t,i),i+1}async _waitForLinkComplete(){let t=async i=>await new Promise(n=>setTimeout(n,i));if(!this.device.features.has("compilation-status-async-webgl")){await t(10);return}let{gl:s}=this.device;for(;;){if(s.getProgramParameter(this.handle,37297))return;await t(10)}}}});function Cn(e,t){let r=t.sourceBuffer,s=t.destinationBuffer;e.gl.bindBuffer(36662,r.handle),e.gl.bindBuffer(36663,s.handle),e.gl.copyBufferSubData(36662,36663,t.sourceOffset??0,t.destinationOffset??0,t.size),e.gl.bindBuffer(36662,null),e.gl.bindBuffer(36663,null)}function Nn(e,t){throw new Error("copyBufferToTexture is not supported in WebGL")}function On(e,t){let{sourceTexture:r,mipLevel:s=0,aspect:i="all",width:n=t.sourceTexture.width,height:o=t.sourceTexture.height,depthOrArrayLayers:a,origin:c=[0,0,0],destinationBuffer:l,byteOffset:_=0,bytesPerRow:f,rowsPerImage:h}=t;if(r instanceof ae.Texture){r.readBuffer({x:c[0]??0,y:c[1]??0,z:c[2]??0,width:n,height:o,depthOrArrayLayers:a,mipLevel:s,aspect:i,byteOffset:_},l);return}if(i!=="all")throw new Error("aspect not supported in WebGL");if(s!==0||a!==void 0||f||h)throw new Error("not implemented");let{framebuffer:T,destroyFramebuffer:d}=Fs(r),R;try{let A=l,p=n||T.width,b=o||T.height,M=(0,ae.assertDefined)(T.colorAttachments[0]),E=ke(M.texture.props.format),S=E.format,x=E.type;e.gl.bindBuffer(35051,A.handle),R=e.gl.bindFramebuffer(36160,T.handle),e.gl.readPixels(c[0],c[1],p,b,S,x,_)}finally{e.gl.bindBuffer(35051,null),R!==void 0&&e.gl.bindFramebuffer(36160,R),d&&T.destroy()}}function In(e,t){let{sourceTexture:r,destinationMipLevel:s=0,origin:i=[0,0],destinationOrigin:n=[0,0,0],destinationTexture:o}=t,{width:a=t.destinationTexture.width,height:c=t.destinationTexture.height}=t,{framebuffer:l,destroyFramebuffer:_}=Fs(r),[f=0,h=0]=i,[T,d,R]=n,A=e.gl.bindFramebuffer(36160,l.handle),p,b;if(o instanceof J)p=o,a=Number.isFinite(a)?a:p.width,c=Number.isFinite(c)?c:p.height,p._bind(0),b=p.glTarget;else throw new Error("invalid destination");switch(b){case 3553:case 34067:e.gl.copyTexSubImage2D(b,s,T,d,f,h,a,c);break;case 35866:case 32879:e.gl.copyTexSubImage3D(b,s,T,d,R,f,h,a,c);break;default:}p&&p._unbind(),e.gl.bindFramebuffer(36160,A),_&&l.destroy()}function Fs(e){if(e instanceof ae.Texture){let{width:t,height:r,id:s}=e;return{framebuffer:e.device.createFramebuffer({id:`framebuffer-for-${s}`,width:t,height:r,colorAttachments:[e]}),destroyFramebuffer:!0}}return{framebuffer:e,destroyFramebuffer:!1}}var ae,ft,Bs=g(()=>{ae=C(N(),1);de();nt();ft=class extends ae.CommandBuffer{device;handle=null;commands=[];constructor(t,r={}){super(t,r),this.device=t}_executeCommands(t=this.commands){for(let r of t)switch(r.name){case"copy-buffer-to-buffer":Cn(this.device,r.options);break;case"copy-buffer-to-texture":Nn(this.device,r.options);break;case"copy-texture-to-buffer":On(this.device,r.options);break;case"copy-texture-to-texture":In(this.device,r.options);break;default:throw new Error(r.name)}}}});var Ds,Pn,ht,ys=g(()=>{Ds=C(N(),1);tt();fe();Pn=[1,2,4,8],ht=class extends Ds.RenderPass{device;handle=null;glParameters={};constructor(t,r){super(t,r),this.device=t;let s=this.props.framebuffer,i=!s||s.handle===null;i&&t.getDefaultCanvasContext()._resizeDrawingBufferIfNeeded();let n;if(!r?.parameters?.viewport)if(i){let[o,a]=t.getDefaultCanvasContext().getDrawingBufferSize();n=[0,0,o,a]}else{let{width:o,height:a}=s;n=[0,0,o,a]}if(this.device.pushState(),this.setParameters({viewport:n,...this.props.parameters}),i)this.device.gl.drawBuffers([1029]);else{let o=s.colorAttachments.map((a,c)=>36064+c);this.device.gl.drawBuffers(o)}this.clear(),this.props.timestampQuerySet&&this.props.beginTimestampIndex!==void 0&&this.props.timestampQuerySet.writeTimestamp(this.props.beginTimestampIndex)}end(){this.destroyed||(this.props.timestampQuerySet&&this.props.endTimestampIndex!==void 0&&this.props.timestampQuerySet.writeTimestamp(this.props.endTimestampIndex),this.device.popState(),this.destroy())}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}setParameters(t={}){let r={...this.glParameters};r.framebuffer=this.props.framebuffer||null,this.props.depthReadOnly&&(r.depthMask=!this.props.depthReadOnly),r.stencilMask=this.props.stencilReadOnly?0:1,r[35977]=this.props.discard,t.viewport&&(t.viewport.length>=6?(r.viewport=t.viewport.slice(0,4),r.depthRange=[t.viewport[4],t.viewport[5]]):r.viewport=t.viewport),t.scissorRect&&(r.scissorTest=!0,r.scissor=t.scissorRect),t.blendConstant&&(r.blendColor=t.blendConstant),t.stencilReference!==void 0&&(r[2967]=t.stencilReference,r[36003]=t.stencilReference),"colorMask"in t&&(r.colorMask=Pn.map(s=>Boolean(s&t.colorMask))),this.glParameters=r,k(this.device.gl,r)}beginOcclusionQuery(t){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let t={...this.glParameters},r=0;this.props.clearColors&&this.props.clearColors.forEach((s,i)=>{s&&this.clearColorBuffer(i,s)}),this.props.clearColor!==!1&&this.props.clearColors===void 0&&(r|=16384,t.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(r|=256,t.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(r|=1024,t.clearStencil=this.props.clearStencil),r!==0&&j(this.device.gl,t,()=>{this.device.gl.clear(r)})}clearColorBuffer(t=0,r=[0,0,0,0]){j(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(r.constructor){case Int8Array:case Int16Array:case Int32Array:this.device.gl.clearBufferiv(6144,t,r);break;case Uint8Array:case Uint8ClampedArray:case Uint16Array:case Uint32Array:this.device.gl.clearBufferuiv(6144,t,r);break;case Float32Array:this.device.gl.clearBufferfv(6144,t,r);break;default:throw new Error("clearColorBuffer: color must be typed array")}})}}});var ws,Pe,Us=g(()=>{ws=C(N(),1);Bs();ys();Pe=class extends ws.CommandEncoder{device;handle=null;commandBuffer;constructor(t,r){super(t,r),this.device=t,this.commandBuffer=new ft(t,{id:`${this.props.id}-command-buffer`})}destroy(){this.destroyResource()}finish(t){return t?.id&&this.commandBuffer.id!==t.id&&(this.commandBuffer.id=t.id,this.commandBuffer.props.id=t.id),this.destroy(),this.commandBuffer}beginRenderPass(t={}){return new ht(this.device,this._applyTimeProfilingToPassProps(t))}beginComputePass(t={}){throw new Error("ComputePass not supported in WebGL")}copyBufferToBuffer(t){this.commandBuffer.commands.push({name:"copy-buffer-to-buffer",options:t})}copyBufferToTexture(t){this.commandBuffer.commands.push({name:"copy-buffer-to-texture",options:t})}copyTextureToBuffer(t){this.commandBuffer.commands.push({name:"copy-texture-to-buffer",options:t})}copyTextureToTexture(t){this.commandBuffer.commands.push({name:"copy-texture-to-texture",options:t})}pushDebugGroup(t){}popDebugGroup(){}insertDebugMarker(t){}resolveQuerySet(t,r,s){throw new Error("resolveQuerySet is not supported in WebGL")}writeTimestamp(t,r){t.writeTimestamp(r)}}});function ms(e){let{target:t,source:r,start:s=0,count:i=1}=e,n=r.length,o=i*n,a=0;for(let c=s;a<n;a++)t[c++]=r[a]??0;for(;a<o;)a<o-a?(t.copyWithin(s+a,s,s+a),a*=2):(t.copyWithin(s+a,s,s+o-a),a=o);return e.target}var vs=g(()=>{});function un(e){return Array.isArray(e)?new Float32Array(e):e}function Fn(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}var Tt,Ae,Ws=g(()=>{Tt=C(N(),1);Cr();Wt();vs();Ae=class extends Tt.VertexArray{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(t){return Dt()==="Chrome"}constructor(t,r){super(t,r),this.device=t,this.handle=this.device.gl.createVertexArray()}destroy(){super.destroy(),this.buffer&&this.buffer?.destroy(),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(t){let r=t;if(r&&r.glTarget!==34963)throw new Error("Use .setBuffer()");this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,r?r.handle:null),this.indexBuffer=r,this.device.gl.bindVertexArray(null)}setBuffer(t,r){let s=r;if(s.glTarget===34963)throw new Error("Use .setIndexBuffer()");let{size:i,type:n,stride:o,offset:a,normalized:c,integer:l,divisor:_}=this._getAccessor(t);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,s.handle),l?this.device.gl.vertexAttribIPointer(t,i,n,o,a):this.device.gl.vertexAttribPointer(t,i,n,c,o,a),this.device.gl.bindBuffer(34962,null),this.device.gl.enableVertexAttribArray(t),this.device.gl.vertexAttribDivisor(t,_||0),this.attributes[t]=s,this.device.gl.bindVertexArray(null)}setConstantWebGL(t,r){this._enable(t,!1),this.attributes[t]=r}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let t=0;t<this.maxVertexAttributes;++t){let r=this.attributes[t];ArrayBuffer.isView(r)&&this.device.setConstantAttributeWebGL(t,r)}}_getAccessor(t){let r=this.attributeInfos[t];if(!r)throw new Error(`Unknown attribute location ${t}`);let s=We(r.bufferDataType);return{size:r.bufferComponents,type:s,stride:r.byteStride,offset:r.byteOffset,normalized:r.normalized,integer:r.integer,divisor:r.stepMode==="instance"?1:0}}_enable(t,r=!0){let i=Ae.isConstantAttributeZeroSupported(this.device)||t!==0;(r||i)&&(t=Number(t),this.device.gl.bindVertexArray(this.handle),r?this.device.gl.enableVertexAttribArray(t):this.device.gl.disableVertexAttribArray(t),this.device.gl.bindVertexArray(null))}getConstantBuffer(t,r){let s=un(r),i=s.byteLength*t,n=s.length*t;if(this.buffer&&i!==this.buffer.byteLength)throw new Error(`Buffer size is immutable, byte length ${i} !== ${this.buffer.byteLength}.`);let o=!this.buffer;if(this.buffer=this.buffer||this.device.createBuffer({byteLength:i}),o||=!Fn(s,this.bufferValue),o){let a=(0,Tt.getScratchArray)(r.constructor,n);ms({target:a,source:s,start:0,count:n}),this.buffer.write(a),this.bufferValue=r}return this.buffer}}});function Xs(e){return typeof e=="number"?Number.isInteger(e):/^\d+$/.test(e)}var Rt,dt,Hs=g(()=>{Rt=C(N(),1);er();Gt();dt=class extends Rt.TransformFeedback{device;gl;handle;layout;buffers={};unusedBuffers={};bindOnUse=!0;_bound=!1;constructor(t,r){super(t,r),this.device=t,this.gl=t.gl,this.handle=this.props.handle||this.gl.createTransformFeedback(),this.layout=this.props.layout,r.buffers&&this.setBuffers(r.buffers),Object.seal(this)}destroy(){this.gl.deleteTransformFeedback(this.handle),super.destroy()}begin(t="point-list"){this.gl.bindTransformFeedback(36386,this.handle),this.bindOnUse&&this._bindBuffers(),this.gl.beginTransformFeedback(Ss(t))}end(){this.gl.endTransformFeedback(),this.bindOnUse&&this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null)}setBuffers(t){this.buffers={},this.unusedBuffers={},this.bind(()=>{for(let[r,s]of Object.entries(t))this.setBuffer(r,s)})}setBuffer(t,r){let s=this._getVaryingIndex(t),{buffer:i,byteLength:n,byteOffset:o}=this._getBufferRange(r);if(s<0){this.unusedBuffers[t]=i,Rt.log.warn(`${this.id} unusedBuffers varying buffer ${t}`)();return}this.buffers[s]={buffer:i,byteLength:n,byteOffset:o},this.bindOnUse||this._bindBuffer(s,i,o,n)}getBuffer(t){if(Xs(t))return this.buffers[t]||null;let r=this._getVaryingIndex(t);return this.buffers[r]??null}bind(t=this.handle){if(typeof t!="function")return this.gl.bindTransformFeedback(36386,t),this;let r;return this._bound?r=t():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,r=t(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),r}unbind(){this.bind(null)}_getBufferRange(t){if(t instanceof $)return{buffer:t,byteOffset:0,byteLength:t.byteLength};let{buffer:r,byteOffset:s=0,byteLength:i=t.buffer.byteLength}=t;return{buffer:r,byteOffset:s,byteLength:i}}_getVaryingIndex(t){if(Xs(t))return Number(t);for(let r of this.layout.varyings||[])if(t===r.name)return r.location;return-1}_bindBuffers(){for(let[t,r]of Object.entries(this.buffers)){let{buffer:s,byteLength:i,byteOffset:n}=this._getBufferRange(r);this._bindBuffer(Number(t),s,n,i)}}_unbindBuffers(){for(let t in this.buffers)this.gl.bindBufferBase(35982,Number(t),null)}_bindBuffer(t,r,s=0,i){let n=r&&r.handle;!n||i===void 0?this.gl.bindBufferBase(35982,t,n):this.gl.bindBufferRange(35982,t,n,s,i)}}});var Vs,At,ks=g(()=>{Vs=C(N(),1),At=class extends Vs.QuerySet{device;handle;_timestampPairs=[];_pendingReads=new Set;_occlusionQuery=null;_occlusionActive=!1;get[Symbol.toStringTag](){return"QuerySet"}constructor(t,r){if(super(t,r),this.device=t,r.type==="timestamp"){if(r.count<2)throw new Error("Timestamp QuerySet requires at least two query slots");this._timestampPairs=new Array(Math.ceil(r.count/2)).fill(null).map(()=>({activeQuery:null,completedQueries:[]})),this.handle=null}else{if(r.count>1)throw new Error("WebGL occlusion QuerySet can only have one value");let s=this.device.gl.createQuery();if(!s)throw new Error("WebGL query not supported");this.handle=s}Object.seal(this)}destroy(){if(!this.destroyed){this.handle&&this.device.gl.deleteQuery(this.handle);for(let t of this._timestampPairs){t.activeQuery&&(this._cancelPendingQuery(t.activeQuery),this.device.gl.deleteQuery(t.activeQuery.handle));for(let r of t.completedQueries)this._cancelPendingQuery(r),this.device.gl.deleteQuery(r.handle)}this._occlusionQuery&&(this._cancelPendingQuery(this._occlusionQuery),this.device.gl.deleteQuery(this._occlusionQuery.handle));for(let t of Array.from(this._pendingReads))this._cancelPendingQuery(t);this.destroyResource()}}isResultAvailable(t){return this.props.type==="timestamp"?t===void 0?this._timestampPairs.some((r,s)=>this._isTimestampPairAvailable(s)):this._isTimestampPairAvailable(this._getTimestampPairIndex(t)):this._occlusionQuery?this._pollQueryAvailability(this._occlusionQuery):!1}async readResults(t){let r=t?.firstQuery||0,s=t?.queryCount||this.props.count-r;if(this._validateRange(r,s),this.props.type==="timestamp"){let i=new Array(s).fill(0n),n=Math.floor(r/2),o=Math.floor((r+s-1)/2);for(let a=n;a<=o;a++){let c=await this._consumeTimestampPairResult(a),l=a*2,_=l+1;l>=r&&l<r+s&&(i[l-r]=0n),_>=r&&_<r+s&&(i[_-r]=c)}return i}if(!this._occlusionQuery)throw new Error("Occlusion query has not been started");return[await this._consumeQueryResult(this._occlusionQuery)]}async readTimestampDuration(t,r){if(this.props.type!=="timestamp")throw new Error("Timestamp durations require a timestamp QuerySet");if(t<0||r>=this.props.count||r<=t)throw new Error("Timestamp duration range is out of bounds");if(t%2!==0||r!==t+1)throw new Error("WebGL timestamp durations require adjacent even/odd query indices");let s=await this._consumeTimestampPairResult(this._getTimestampPairIndex(t));return Number(s)/1e6}beginOcclusionQuery(){if(this.props.type!=="occlusion")throw new Error("Occlusion queries require an occlusion QuerySet");if(!this.handle)throw new Error("WebGL occlusion query is not available");if(this._occlusionActive)throw new Error("Occlusion query is already active");this.device.gl.beginQuery(35887,this.handle),this._occlusionQuery={handle:this.handle,promise:null,result:null,disjoint:!1,cancelled:!1,pollRequestId:null,resolve:null,reject:null},this._occlusionActive=!0}endOcclusionQuery(){if(!this._occlusionActive)throw new Error("Occlusion query is not active");this.device.gl.endQuery(35887),this._occlusionActive=!1}writeTimestamp(t){if(this.props.type!=="timestamp")throw new Error("Timestamp writes require a timestamp QuerySet");let r=this._getTimestampPairIndex(t),s=this._timestampPairs[r];if(t%2===0){if(s.activeQuery)throw new Error("Timestamp query pair is already active");let i=this.device.gl.createQuery();if(!i)throw new Error("WebGL query not supported");let n={handle:i,promise:null,result:null,disjoint:!1,cancelled:!1,pollRequestId:null,resolve:null,reject:null};this.device.gl.beginQuery(35007,i),s.activeQuery=n;return}if(!s.activeQuery)throw new Error("Timestamp query pair was ended before it was started");this.device.gl.endQuery(35007),s.completedQueries.push(s.activeQuery),s.activeQuery=null}_validateRange(t,r){if(t<0||r<0||t+r>this.props.count)throw new Error("Query read range is out of bounds")}_getTimestampPairIndex(t){if(t<0||t>=this.props.count)throw new Error("Query index is out of bounds");return Math.floor(t/2)}_isTimestampPairAvailable(t){let r=this._timestampPairs[t];return!r||r.completedQueries.length===0?!1:this._pollQueryAvailability(r.completedQueries[0])}_pollQueryAvailability(t){if(t.cancelled||this.destroyed)return t.result=0n,!0;if(t.result!==null||t.disjoint)return!0;if(!this.device.gl.getQueryParameter(t.handle,34919))return!1;let s=Boolean(this.device.gl.getParameter(36795));return t.disjoint=s,t.result=s?0n:BigInt(this.device.gl.getQueryParameter(t.handle,34918)),!0}async _consumeTimestampPairResult(t){let r=this._timestampPairs[t];if(!r||r.completedQueries.length===0)throw new Error("Timestamp query pair has no completed result");let s=r.completedQueries.shift();try{return await this._consumeQueryResult(s)}finally{this.device.gl.deleteQuery(s.handle)}}_consumeQueryResult(t){return t.promise||(this._pendingReads.add(t),t.promise=new Promise((r,s)=>{t.resolve=r,t.reject=s;let i=()=>{if(t.pollRequestId=null,t.cancelled||this.destroyed){this._pendingReads.delete(t),t.promise=null,t.resolve=null,t.reject=null,r(0n);return}if(!this._pollQueryAvailability(t)){t.pollRequestId=this._requestAnimationFrame(i);return}this._pendingReads.delete(t),t.promise=null,t.resolve=null,t.reject=null,t.disjoint?s(new Error("GPU timestamp query was invalidated by a disjoint event")):r(t.result||0n)};i()})),t.promise}_cancelPendingQuery(t){if(this._pendingReads.delete(t),t.cancelled=!0,t.pollRequestId!==null&&(this._cancelAnimationFrame(t.pollRequestId),t.pollRequestId=null),t.resolve){let r=t.resolve;t.promise=null,t.resolve=null,t.reject=null,r(0n)}}_requestAnimationFrame(t){return requestAnimationFrame(t)}_cancelAnimationFrame(t){cancelAnimationFrame(t)}}});var Ys,pt,Ks=g(()=>{Ys=C(N(),1),pt=class extends Ys.Fence{device;gl;handle;signaled;_signaled=!1;constructor(t,r={}){super(t,{}),this.device=t,this.gl=t.gl;let s=this.props.handle||this.gl.fenceSync(this.gl.SYNC_GPU_COMMANDS_COMPLETE,0);if(!s)throw new Error("Failed to create WebGL fence");this.handle=s,this.signaled=new Promise(i=>{let n=()=>{let o=this.gl.clientWaitSync(this.handle,0,0);o===this.gl.ALREADY_SIGNALED||o===this.gl.CONDITION_SATISFIED?(this._signaled=!0,i()):setTimeout(n,1)};n()})}isSignaled(){if(this._signaled)return!0;let t=this.gl.getSyncParameter(this.handle,this.gl.SYNC_STATUS);return this._signaled=t===this.gl.SIGNALED,this._signaled}destroy(){this.destroyed||this.gl.deleteSync(this.handle)}}});function tr(e){switch(e){case 6406:case 33326:case 6403:case 36244:return 1;case 33339:case 33340:case 33328:case 33320:case 33319:return 2;case 6407:case 36248:case 34837:return 3;case 6408:case 36249:case 34836:return 4;default:return 0}}function $s(e){switch(e){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return 0}}var zs=g(()=>{});function Ls(e,t){let{sourceX:r=0,sourceY:s=0,sourceAttachment:i=0}=t||{},{target:n=null,sourceWidth:o,sourceHeight:a,sourceDepth:c,sourceFormat:l,sourceType:_}=t||{},{framebuffer:f,deleteFramebuffer:h}=qs(e),{gl:T,handle:d}=f;o||=f.width,a||=f.height;let R=f.colorAttachments[i]?.texture;if(!R)throw new Error(`Invalid framebuffer attachment ${i}`);c=R?.depth||1,l||=R?.glFormat||6408,_||=R?.glType||5121,n=Dn(n,_,l,o,a,c);let A=ue.dataTypeDecoder.getDataType(n);_=_||bs(A);let p=T.bindFramebuffer(36160,d);return T.readBuffer(36064+i),T.readPixels(r,s,o,a,l,_,n),T.readBuffer(36064),T.bindFramebuffer(36160,p||null),h&&f.destroy(),n}function Qs(e,t){let{target:r,sourceX:s=0,sourceY:i=0,sourceFormat:n=6408,targetByteOffset:o=0}=t||{},{sourceWidth:a,sourceHeight:c,sourceType:l}=t||{},{framebuffer:_,deleteFramebuffer:f}=qs(e);a=a||_.width,c=c||_.height;let h=_;l=l||5121;let T=r;if(!T){let R=tr(n),A=$s(l),p=o+a*c*R*A;T=h.device.createBuffer({byteLength:p})}let d=e.device.createCommandEncoder();return d.copyTextureToBuffer({sourceTexture:e,width:a,height:c,origin:[s,i],destinationBuffer:T,byteOffset:o}),d.destroy(),f&&_.destroy(),T}function qs(e){return e instanceof ue.Framebuffer?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:Bn(e),deleteFramebuffer:!0}}function Bn(e,t){let{device:r,width:s,height:i,id:n}=e;return r.createFramebuffer({...t,id:`framebuffer-for-${n}`,width:s,height:i,colorAttachments:[e]})}function Dn(e,t,r,s,i,n){if(e)return e;t||=5121;let o=st(t),a=ue.dataTypeDecoder.getTypedArrayConstructor(o),c=tr(r);return new a(s*i*c)}var ue,js=g(()=>{ue=C(N(),1);lt();zs();Jt()});function yn(e,t,r){switch(r.length){case 1:e.gl.vertexAttrib1fv(t,r);break;case 2:e.gl.vertexAttrib2fv(t,r);break;case 3:e.gl.vertexAttrib3fv(t,r);break;case 4:e.gl.vertexAttrib4fv(t,r);break;default:}}function wn(e,t,r){e.gl.vertexAttribI4iv(t,r)}function Un(e,t,r){e.gl.vertexAttribI4uiv(t,r)}function mn(e,t){if(!e||!t||e.length!==t.length||e.constructor!==t.constructor)return!1;for(let r=0;r<e.length;++r)if(e[r]!==t[r])return!1;return!0}var z,ee,Zs=g(()=>{z=C(N(),1);vt();Hr();Ue();Yr();Jr();es();ss();ns();gr();Pr();de();as();Qe();_s();Rs();nt();$e();xs();us();Us();Ws();Hs();ks();Ks();js();fe();tt();Ce();ee=class extends z.Device{static getDeviceFromContext(t){return t?t.luma?.device??null:null}type="webgl";handle;features;limits;info;canvasContext;preferredColorFormat="rgba8unorm";preferredDepthFormat="depth24plus";commandEncoder;lost;_resolveContextLost;gl;_constants;extensions;_polyfilled=!1;spectorJS;get[Symbol.toStringTag](){return"WebGLDevice"}toString(){return`${this[Symbol.toStringTag]}(${this.id})`}isVertexFormatSupported(t){switch(t){case"unorm8x4-bgra":return!1;default:return!0}}constructor(t){super({...t,id:t.id||os("webgl-device")});let r=z.Device._getCanvasContextProps(t);if(!r)throw new Error("WebGLDevice requires props.createCanvasContext to be set");let s=r.canvas?.gl??null,i=ee.getDeviceFromContext(s);if(i)throw new Error(`WebGL context already attached to device ${i.id}`);this.canvasContext=new ze(this,r),this.lost=new Promise(_=>{this._resolveContextLost=_});let n={...t.webgl};r.alphaMode==="premultiplied"&&(n.premultipliedAlpha=!0),t.powerPreference!==void 0&&(n.powerPreference=t.powerPreference),t.failIfMajorPerformanceCaveat!==void 0&&(n.failIfMajorPerformanceCaveat=t.failIfMajorPerformanceCaveat);let a=this.props._handle||Xr(this.canvasContext.canvas,{onContextLost:_=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."}),onContextRestored:_=>console.log("WebGL context restored")},n);if(!a)throw new Error("WebGL context creation failed");if(i=ee.getDeviceFromContext(a),i){if(t._reuseDevices)return z.log.log(1,`Not creating a new Device, instead returning a reference to Device ${i.id} already attached to WebGL context`,i)(),this.canvasContext.destroy(),i._reused=!0,i;throw new Error(`WebGL context already attached to device ${i.id}`)}this.handle=a,this.gl=a,this.spectorJS=pr({...this.props,gl:this.handle});let c=ne(this.handle);c.device=this,c.extensions||(c.extensions={}),this.extensions=c.extensions,this.info=Vr(this.gl,this.extensions),this.limits=new Ke(this.gl),this.features=new Ye(this.gl,this.extensions,this.props._disabledFeatures),this.props._initializeFeatures&&this.features.initializeFeatures(),new Y(this.gl,{log:(..._)=>z.log.log(1,..._)()}).trackState(this.gl,{copyState:!1}),(t.debug||t.debugWebGL)&&(this.gl=Ir(this.gl,{debugWebGL:!0,traceWebGL:t.debugWebGL}),z.log.warn("WebGL debug mode activated. Performance reduced.")()),t.debugWebGL&&(z.log.level=Math.max(z.log.level,1)),this.commandEncoder=new Pe(this,{id:`${this}-command-encoder`}),this.canvasContext._startObservers()}destroy(){if(this.commandEncoder?.destroy(),!this.props._reuseDevices&&!this._reused){let t=ne(this.handle);t.device=null}}get isLost(){return this.gl.isContextLost()}createCanvasContext(t){throw new Error("WebGL only supports a single canvas")}createPresentationContext(t){return new Le(this,t||{})}createBuffer(t){let r=this._normalizeBufferProps(t);return new $(this,r)}createTexture(t){return new J(this,t)}createExternalTexture(t){throw new Error("createExternalTexture() not implemented")}createSampler(t){return new et(this,t)}createShader(t){return new je(this,t)}createFramebuffer(t){return new q(this,t)}createVertexArray(t){return new Ae(this,t)}createTransformFeedback(t){return new dt(this,t)}createQuerySet(t){return new At(this,t)}createFence(){return new pt(this)}createRenderPipeline(t){return new ot(this,t)}_createSharedRenderPipelineWebGL(t){return new _t(this,t)}createComputePipeline(t){throw new Error("ComputePipeline not supported in WebGL")}createCommandEncoder(t={}){return new Pe(this,t)}submit(t){let r=null;t||({submittedCommandEncoder:r,commandBuffer:t}=this._finalizeDefaultCommandEncoderForSubmit());try{t._executeCommands(),r&&r.resolveTimeProfilingQuerySet().then(()=>{this.commandEncoder._gpuTimeMs=r._gpuTimeMs}).catch(()=>{})}finally{t.destroy()}}_finalizeDefaultCommandEncoderForSubmit(){let t=this.commandEncoder,r=t.finish();return this.commandEncoder.destroy(),this.commandEncoder=this.createCommandEncoder({id:t.props.id,timeProfilingQuerySet:t.getTimeProfilingQuerySet()}),{submittedCommandEncoder:t,commandBuffer:r}}readPixelsToArrayWebGL(t,r){return Ls(t,r)}readPixelsToBufferWebGL(t,r){return Qs(t,r)}setParametersWebGL(t){k(this.gl,t)}getParametersWebGL(t){return ve(this.gl,t)}withParametersWebGL(t,r){return j(this.gl,t,r)}resetWebGL(){z.log.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),wr(this.gl)}_getDeviceSpecificTextureFormatCapabilities(t){return Qr(this.gl,t,this.extensions)}loseDevice(){let t=!1,s=this.getExtension("WEBGL_lose_context").WEBGL_lose_context;return s&&(t=!0,s.loseContext()),this._resolveContextLost?.({reason:"destroyed",message:"Application triggered context loss"}),t}pushState(){Y.get(this.gl).push()}popState(){Y.get(this.gl).pop()}getGLKey(t,r){let s=Number(t);for(let i in this.gl)if(this.gl[i]===s)return`GL.${i}`;return r?.emptyIfUnknown?"":String(t)}getGLKeys(t){let r={emptyIfUnknown:!0};return Object.entries(t).reduce((s,[i,n])=>(s[`${i}:${this.getGLKey(i,r)}`]=`${n}:${this.getGLKey(n,r)}`,s),{})}setConstantAttributeWebGL(t,r){let s=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(s).fill(null);let i=this._constants[t];switch(i&&mn(i,r)&&z.log.info(1,`setConstantAttributeWebGL(${t}) could have been skipped, value unchanged`)(),this._constants[t]=r,r.constructor){case Float32Array:yn(this,t,r);break;case Int32Array:wn(this,t,r);break;case Uint32Array:Un(this,t,r);break;default:throw new Error("constant")}}getExtension(t){return K(this.gl,t,this.extensions),this.extensions}_setWebGLDebugMetadata(t,r,s){t.luma=r;let i={props:s.spector,id:s.spector.id};t.__SPECTOR_Metadata=i}}});var er=g(()=>{Zs();Qe()});var Be={};Bi(Be,{GoogleMapsOverlay:()=>Fe});var L={},Tr=C(we(),1);re(L,C(we(),1));if(!Tr.Layer)throw new Error("@deck.gl/core is not found");re(Be,L);Ft();er();var Nt=C(we(),1);var kc=1/Math.PI*180,Yc=1/180*Math.PI,vn={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...vn}};var w=globalThis.mathgl.config;function Js(e,{precision:t=w.precision}={}){return e=Wn(e),`${parseFloat(e.toPrecision(t))}`}function pe(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function rr(e,t,r){let s=w.EPSILON;r&&(w.EPSILON=r);try{if(e===t)return!0;if(pe(e)&&pe(t)){if(e.length!==t.length)return!1;for(let i=0;i<e.length;++i)if(!rr(e[i],t[i]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<=w.EPSILON*Math.max(1,Math.abs(e),Math.abs(t)):!1}finally{w.EPSILON=s}}function Wn(e){return Math.round(e/w.EPSILON)*w.EPSILON}var ge=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(t,r=0){for(let s=0;s<this.ELEMENTS;++s)this[s]=t[s+r];return this.check()}toArray(t=[],r=0){for(let s=0;s<this.ELEMENTS;++s)t[r+s]=this[s];return t}toObject(t){return t}from(t){return Array.isArray(t)?this.copy(t):this.fromObject(t)}to(t){return t===this?this:pe(t)?this.toArray(t):this.toObject(t)}toTarget(t){return t?this.to(t):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(w)}formatString(t){let r="";for(let s=0;s<this.ELEMENTS;++s)r+=(s>0?", ":"")+Js(this[s],t);return`${t.printTypes?this.constructor.name:""}[${r}]`}equals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(!rr(this[r],t[r]))return!1;return!0}exactEquals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(this[r]!==t[r])return!1;return!0}negate(){for(let t=0;t<this.ELEMENTS;++t)this[t]=-this[t];return this.check()}lerp(t,r,s){if(s===void 0)return this.lerp(this,t,r);for(let i=0;i<this.ELEMENTS;++i){let n=t[i],o=typeof r=="number"?r:r[i];this[i]=n+s*(o-n)}return this.check()}min(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(t[r],this[r]);return this.check()}max(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.max(t[r],this[r]);return this.check()}clamp(t,r){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(Math.max(this[s],t[s]),r[s]);return this.check()}add(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]+=r[s];return this.check()}subtract(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]-=r[s];return this.check()}scale(t){if(typeof t=="number")for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;else for(let r=0;r<this.ELEMENTS&&r<t.length;++r)this[r]*=t[r];return this.check()}multiplyByScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;return this.check()}check(){if(w.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let t=this.length===this.ELEMENTS;for(let r=0;r<this.ELEMENTS;++r)t=t&&Number.isFinite(this[r]);return t}sub(t){return this.subtract(t)}setScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=t;return this.check()}addScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]+=t;return this.check()}subScalar(t){return this.addScalar(-t)}multiplyScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;return this.check()}divideScalar(t){return this.multiplyByScalar(1/t)}clampScalar(t,r){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(Math.max(this[s],t),r);return this.check()}get elements(){return this}};function Xn(e,t){if(e.length!==t)return!1;for(let r=0;r<e.length;++r)if(!Number.isFinite(e[r]))return!1;return!0}function W(e){if(!Number.isFinite(e))throw new Error(`Invalid number ${JSON.stringify(e)}`);return e}function gt(e,t,r=""){if(w.debug&&!Xn(e,t))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return e}function sr(e,t){if(!e)throw new Error(`math.gl assertion ${t}`)}var St=class extends ge{get x(){return this[0]}set x(t){this[0]=W(t)}get y(){return this[1]}set y(t){this[1]=W(t)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let t=0;for(let r=0;r<this.ELEMENTS;++r)t+=this[r]*this[r];return t}magnitudeSquared(){return this.lengthSquared()}distance(t){return Math.sqrt(this.distanceSquared(t))}distanceSquared(t){let r=0;for(let s=0;s<this.ELEMENTS;++s){let i=this[s]-t[s];r+=i*i}return W(r)}dot(t){let r=0;for(let s=0;s<this.ELEMENTS;++s)r+=this[s]*t[s];return W(r)}normalize(){let t=this.magnitude();if(t!==0)for(let r=0;r<this.ELEMENTS;++r)this[r]/=t;return this.check()}multiply(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]*=r[s];return this.check()}divide(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]/=r[s];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(t){return this.distance(t)}distanceToSquared(t){return this.distanceSquared(t)}getComponent(t){return sr(t>=0&&t<this.ELEMENTS,"index is out of range"),W(this[t])}setComponent(t,r){return sr(t>=0&&t<this.ELEMENTS,"index is out of range"),this[t]=r,this.check()}addVectors(t,r){return this.copy(t).add(r)}subVectors(t,r){return this.copy(t).subtract(r)}multiplyVectors(t,r){return this.copy(t).multiply(r)}addScaledVector(t,r){return this.add(new this.constructor(t).multiplyScalar(r))}};var te=typeof Float32Array<"u"?Float32Array:Array;var el=Math.PI/180;function Hn(){let e=new te(2);return te!=Float32Array&&(e[0]=0,e[1]=0),e}function ti(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[2]*i,e[1]=r[1]*s+r[3]*i,e}function ri(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[2]*i+r[4],e[1]=r[1]*s+r[3]*i+r[5],e}function si(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[3]*i+r[6],e[1]=r[1]*s+r[4]*i+r[7],e}function Et(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[4]*i+r[12],e[1]=r[1]*s+r[5]*i+r[13],e}var tl=function(){let e=Hn();return function(t,r,s,i,n,o){let a,c;for(r||(r=2),s||(s=0),i?c=Math.min(i*r+s,t.length):c=t.length,a=s;a<c;a+=r)e[0]=t[a],e[1]=t[a+1],n(e,e,o),t[a]=e[0],t[a+1]=e[1];return t}}();function Mt(e,t,r){let s=t[0],i=t[1],n=r[3]*s+r[7]*i||1;return e[0]=(r[0]*s+r[4]*i)/n,e[1]=(r[1]*s+r[5]*i)/n,e}function ii(e,t,r){let s=t[0],i=t[1],n=t[2],o=r[3]*s+r[7]*i+r[11]*n||1;return e[0]=(r[0]*s+r[4]*i+r[8]*n)/o,e[1]=(r[1]*s+r[5]*i+r[9]*n)/o,e[2]=(r[2]*s+r[6]*i+r[10]*n)/o,e}var ce=class extends St{constructor(t=0,r=0){super(2),pe(t)&&arguments.length===1?this.copy(t):(w.debug&&(W(t),W(r)),this[0]=t,this[1]=r)}set(t,r){return this[0]=t,this[1]=r,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this.check()}fromObject(t){return w.debug&&(W(t.x),W(t.y)),this[0]=t.x,this[1]=t.y,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return Et(this,this,t),this.check()}transformAsVector(t){return Mt(this,this,t),this.check()}transformByMatrix3(t){return si(this,this,t),this.check()}transformByMatrix2x3(t){return ri(this,this,t),this.check()}transformByMatrix2(t){return ti(this,this,t),this.check()}};function Vn(){let e=new te(3);return te!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function ni(e,t,r){let s=t[0],i=t[1],n=t[2],o=r[3]*s+r[7]*i+r[11]*n+r[15];return o=o||1,e[0]=(r[0]*s+r[4]*i+r[8]*n+r[12])/o,e[1]=(r[1]*s+r[5]*i+r[9]*n+r[13])/o,e[2]=(r[2]*s+r[6]*i+r[10]*n+r[14])/o,e}var _l=function(){let e=Vn();return function(t,r,s,i,n,o){let a,c;for(r||(r=3),s||(s=0),i?c=Math.min(i*r+s,t.length):c=t.length,a=s;a<c;a+=r)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],n(e,e,o),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2];return t}}();var xt=class extends ge{toString(){let t="[";if(w.printRowMajor){t+="row-major:";for(let r=0;r<this.RANK;++r)for(let s=0;s<this.RANK;++s)t+=` ${this[s*this.RANK+r]}`}else{t+="column-major:";for(let r=0;r<this.ELEMENTS;++r)t+=` ${this[r]}`}return t+="]",t}getElementIndex(t,r){return r*this.RANK+t}getElement(t,r){return this[r*this.RANK+t]}setElement(t,r,s){return this[r*this.RANK+t]=W(s),this}getColumn(t,r=new Array(this.RANK).fill(-0)){let s=t*this.RANK;for(let i=0;i<this.RANK;++i)r[i]=this[s+i];return r}setColumn(t,r){let s=t*this.RANK;for(let i=0;i<this.RANK;++i)this[s+i]=r[i];return this}};function kn(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function oi(e,t){if(e===t){let r=t[1],s=t[2],i=t[3],n=t[6],o=t[7],a=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=s,e[9]=n,e[11]=t[14],e[12]=i,e[13]=o,e[14]=a}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function ai(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=t[4],a=t[5],c=t[6],l=t[7],_=t[8],f=t[9],h=t[10],T=t[11],d=t[12],R=t[13],A=t[14],p=t[15],b=r*a-s*o,M=r*c-i*o,E=r*l-n*o,S=s*c-i*a,x=s*l-n*a,u=i*l-n*c,B=_*R-f*d,D=_*A-h*d,F=_*p-T*d,X=f*A-h*R,H=f*p-T*R,V=h*p-T*A,O=b*V-M*H+E*X+S*F-x*D+u*B;return O?(O=1/O,e[0]=(a*V-c*H+l*X)*O,e[1]=(i*H-s*V-n*X)*O,e[2]=(R*u-A*x+p*S)*O,e[3]=(h*x-f*u-T*S)*O,e[4]=(c*F-o*V-l*D)*O,e[5]=(r*V-i*F+n*D)*O,e[6]=(A*E-d*u-p*M)*O,e[7]=(_*u-h*E+T*M)*O,e[8]=(o*H-a*F+l*B)*O,e[9]=(s*F-r*H-n*B)*O,e[10]=(d*x-R*E+p*b)*O,e[11]=(f*E-_*x-T*b)*O,e[12]=(a*D-o*X-c*B)*O,e[13]=(r*X-s*D+i*B)*O,e[14]=(R*M-d*S-A*b)*O,e[15]=(_*S-f*M+h*b)*O,e):null}function ci(e){let t=e[0],r=e[1],s=e[2],i=e[3],n=e[4],o=e[5],a=e[6],c=e[7],l=e[8],_=e[9],f=e[10],h=e[11],T=e[12],d=e[13],R=e[14],A=e[15],p=t*o-r*n,b=t*a-s*n,M=r*a-s*o,E=l*d-_*T,S=l*R-f*T,x=_*R-f*d,u=t*x-r*S+s*E,B=n*x-o*S+a*E,D=l*M-_*b+f*p,F=T*M-d*b+R*p;return c*u-i*B+A*D-h*F}function nr(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3],a=t[4],c=t[5],l=t[6],_=t[7],f=t[8],h=t[9],T=t[10],d=t[11],R=t[12],A=t[13],p=t[14],b=t[15],M=r[0],E=r[1],S=r[2],x=r[3];return e[0]=M*s+E*a+S*f+x*R,e[1]=M*i+E*c+S*h+x*A,e[2]=M*n+E*l+S*T+x*p,e[3]=M*o+E*_+S*d+x*b,M=r[4],E=r[5],S=r[6],x=r[7],e[4]=M*s+E*a+S*f+x*R,e[5]=M*i+E*c+S*h+x*A,e[6]=M*n+E*l+S*T+x*p,e[7]=M*o+E*_+S*d+x*b,M=r[8],E=r[9],S=r[10],x=r[11],e[8]=M*s+E*a+S*f+x*R,e[9]=M*i+E*c+S*h+x*A,e[10]=M*n+E*l+S*T+x*p,e[11]=M*o+E*_+S*d+x*b,M=r[12],E=r[13],S=r[14],x=r[15],e[12]=M*s+E*a+S*f+x*R,e[13]=M*i+E*c+S*h+x*A,e[14]=M*n+E*l+S*T+x*p,e[15]=M*o+E*_+S*d+x*b,e}function li(e,t,r){let s=r[0],i=r[1],n=r[2],o,a,c,l,_,f,h,T,d,R,A,p;return t===e?(e[12]=t[0]*s+t[4]*i+t[8]*n+t[12],e[13]=t[1]*s+t[5]*i+t[9]*n+t[13],e[14]=t[2]*s+t[6]*i+t[10]*n+t[14],e[15]=t[3]*s+t[7]*i+t[11]*n+t[15]):(o=t[0],a=t[1],c=t[2],l=t[3],_=t[4],f=t[5],h=t[6],T=t[7],d=t[8],R=t[9],A=t[10],p=t[11],e[0]=o,e[1]=a,e[2]=c,e[3]=l,e[4]=_,e[5]=f,e[6]=h,e[7]=T,e[8]=d,e[9]=R,e[10]=A,e[11]=p,e[12]=o*s+_*i+d*n+t[12],e[13]=a*s+f*i+R*n+t[13],e[14]=c*s+h*i+A*n+t[14],e[15]=l*s+T*i+p*n+t[15]),e}function _i(e,t,r){let s=r[0],i=r[1],n=r[2];return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function fi(e,t,r,s){let i=s[0],n=s[1],o=s[2],a=Math.sqrt(i*i+n*n+o*o),c,l,_,f,h,T,d,R,A,p,b,M,E,S,x,u,B,D,F,X,H,V,O,Ee;return a<1e-6?null:(a=1/a,i*=a,n*=a,o*=a,l=Math.sin(r),c=Math.cos(r),_=1-c,f=t[0],h=t[1],T=t[2],d=t[3],R=t[4],A=t[5],p=t[6],b=t[7],M=t[8],E=t[9],S=t[10],x=t[11],u=i*i*_+c,B=n*i*_+o*l,D=o*i*_-n*l,F=i*n*_-o*l,X=n*n*_+c,H=o*n*_+i*l,V=i*o*_+n*l,O=n*o*_-i*l,Ee=o*o*_+c,e[0]=f*u+R*B+M*D,e[1]=h*u+A*B+E*D,e[2]=T*u+p*B+S*D,e[3]=d*u+b*B+x*D,e[4]=f*F+R*X+M*H,e[5]=h*F+A*X+E*H,e[6]=T*F+p*X+S*H,e[7]=d*F+b*X+x*H,e[8]=f*V+R*O+M*Ee,e[9]=h*V+A*O+E*Ee,e[10]=T*V+p*O+S*Ee,e[11]=d*V+b*O+x*Ee,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function hi(e,t,r){let s=Math.sin(r),i=Math.cos(r),n=t[4],o=t[5],a=t[6],c=t[7],l=t[8],_=t[9],f=t[10],h=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=n*i+l*s,e[5]=o*i+_*s,e[6]=a*i+f*s,e[7]=c*i+h*s,e[8]=l*i-n*s,e[9]=_*i-o*s,e[10]=f*i-a*s,e[11]=h*i-c*s,e}function Ti(e,t,r){let s=Math.sin(r),i=Math.cos(r),n=t[0],o=t[1],a=t[2],c=t[3],l=t[8],_=t[9],f=t[10],h=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*i-l*s,e[1]=o*i-_*s,e[2]=a*i-f*s,e[3]=c*i-h*s,e[8]=n*s+l*i,e[9]=o*s+_*i,e[10]=a*s+f*i,e[11]=c*s+h*i,e}function di(e,t,r){let s=Math.sin(r),i=Math.cos(r),n=t[0],o=t[1],a=t[2],c=t[3],l=t[4],_=t[5],f=t[6],h=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*i+l*s,e[1]=o*i+_*s,e[2]=a*i+f*s,e[3]=c*i+h*s,e[4]=l*i-n*s,e[5]=_*i-o*s,e[6]=f*i-a*s,e[7]=h*i-c*s,e}function Ri(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=r+r,a=s+s,c=i+i,l=r*o,_=s*o,f=s*a,h=i*o,T=i*a,d=i*c,R=n*o,A=n*a,p=n*c;return e[0]=1-f-d,e[1]=_+p,e[2]=h-A,e[3]=0,e[4]=_-p,e[5]=1-l-d,e[6]=T+R,e[7]=0,e[8]=h+A,e[9]=T-R,e[10]=1-l-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Ai(e,t,r,s,i,n,o){let a=1/(r-t),c=1/(i-s),l=1/(n-o);return e[0]=n*2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n*2*c,e[6]=0,e[7]=0,e[8]=(r+t)*a,e[9]=(i+s)*c,e[10]=(o+n)*l,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*n*2*l,e[15]=0,e}function Yn(e,t,r,s,i){let n=1/Math.tan(t/2);if(e[0]=n/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){let o=1/(s-i);e[10]=(i+s)*o,e[14]=2*i*s*o}else e[10]=-1,e[14]=-2*s;return e}var pi=Yn;function Kn(e,t,r,s,i,n,o){let a=1/(t-r),c=1/(s-i),l=1/(n-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*a,e[13]=(i+s)*c,e[14]=(o+n)*l,e[15]=1,e}var gi=Kn;function Si(e,t,r,s){let i,n,o,a,c,l,_,f,h,T,d=t[0],R=t[1],A=t[2],p=s[0],b=s[1],M=s[2],E=r[0],S=r[1],x=r[2];return Math.abs(d-E)<1e-6&&Math.abs(R-S)<1e-6&&Math.abs(A-x)<1e-6?kn(e):(f=d-E,h=R-S,T=A-x,i=1/Math.sqrt(f*f+h*h+T*T),f*=i,h*=i,T*=i,n=b*T-M*h,o=M*f-p*T,a=p*h-b*f,i=Math.sqrt(n*n+o*o+a*a),i?(i=1/i,n*=i,o*=i,a*=i):(n=0,o=0,a=0),c=h*a-T*o,l=T*n-f*a,_=f*o-h*n,i=Math.sqrt(c*c+l*l+_*_),i?(i=1/i,c*=i,l*=i,_*=i):(c=0,l=0,_=0),e[0]=n,e[1]=c,e[2]=f,e[3]=0,e[4]=o,e[5]=l,e[6]=h,e[7]=0,e[8]=a,e[9]=_,e[10]=T,e[11]=0,e[12]=-(n*d+o*R+a*A),e[13]=-(c*d+l*R+_*A),e[14]=-(f*d+h*R+T*A),e[15]=1,e)}function $n(){let e=new te(4);return te!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function Ei(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3];return e[0]=r[0]*s+r[4]*i+r[8]*n+r[12]*o,e[1]=r[1]*s+r[5]*i+r[9]*n+r[13]*o,e[2]=r[2]*s+r[6]*i+r[10]*n+r[14]*o,e[3]=r[3]*s+r[7]*i+r[11]*n+r[15]*o,e}var pl=function(){let e=$n();return function(t,r,s,i,n,o){let a,c;for(r||(r=4),s||(s=0),i?c=Math.min(i*r+s,t.length):c=t.length,a=s;a<c;a+=r)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],e[3]=t[a+3],n(e,e,o),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2],t[a+3]=e[3];return t}}();var cr;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"})(cr||(cr={}));var zn=45*Math.PI/180,Ln=1,or=.1,ar=500,Qn=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),le=class extends xt{static get IDENTITY(){return jn()}static get ZERO(){return qn()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return cr}constructor(t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this.check()}set(t,r,s,i,n,o,a,c,l,_,f,h,T,d,R,A){return this[0]=t,this[1]=r,this[2]=s,this[3]=i,this[4]=n,this[5]=o,this[6]=a,this[7]=c,this[8]=l,this[9]=_,this[10]=f,this[11]=h,this[12]=T,this[13]=d,this[14]=R,this[15]=A,this.check()}setRowMajor(t,r,s,i,n,o,a,c,l,_,f,h,T,d,R,A){return this[0]=t,this[1]=n,this[2]=l,this[3]=T,this[4]=r,this[5]=o,this[6]=_,this[7]=d,this[8]=s,this[9]=a,this[10]=f,this[11]=R,this[12]=i,this[13]=c,this[14]=h,this[15]=A,this.check()}toRowMajor(t){return t[0]=this[0],t[1]=this[4],t[2]=this[8],t[3]=this[12],t[4]=this[1],t[5]=this[5],t[6]=this[9],t[7]=this[13],t[8]=this[2],t[9]=this[6],t[10]=this[10],t[11]=this[14],t[12]=this[3],t[13]=this[7],t[14]=this[11],t[15]=this[15],t}identity(){return this.copy(Qn)}fromObject(t){return this.check()}fromQuaternion(t){return Ri(this,t),this.check()}frustum(t){let{left:r,right:s,bottom:i,top:n,near:o=or,far:a=ar}=t;return a===1/0?Zn(this,r,s,i,n,o):Ai(this,r,s,i,n,o,a),this.check()}lookAt(t){let{eye:r,center:s=[0,0,0],up:i=[0,1,0]}=t;return Si(this,r,s,i),this.check()}ortho(t){let{left:r,right:s,bottom:i,top:n,near:o=or,far:a=ar}=t;return gi(this,r,s,i,n,o,a),this.check()}orthographic(t){let{fovy:r=zn,aspect:s=Ln,focalDistance:i=1,near:n=or,far:o=ar}=t;Mi(r);let a=r/2,c=i*Math.tan(a),l=c*s;return this.ortho({left:-l,right:l,bottom:-c,top:c,near:n,far:o})}perspective(t){let{fovy:r=45*Math.PI/180,aspect:s=1,near:i=.1,far:n=500}=t;return Mi(r),pi(this,r,s,i,n),this.check()}determinant(){return ci(this)}getScale(t=[-0,-0,-0]){return t[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),t[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),t[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),t}getTranslation(t=[-0,-0,-0]){return t[0]=this[12],t[1]=this[13],t[2]=this[14],t}getRotation(t,r){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let s=this.getScale(r),i=1/s[0],n=1/s[1],o=1/s[2];return t[0]=this[0]*i,t[1]=this[1]*n,t[2]=this[2]*o,t[3]=0,t[4]=this[4]*i,t[5]=this[5]*n,t[6]=this[6]*o,t[7]=0,t[8]=this[8]*i,t[9]=this[9]*n,t[10]=this[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}getRotationMatrix3(t,r){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let s=this.getScale(r),i=1/s[0],n=1/s[1],o=1/s[2];return t[0]=this[0]*i,t[1]=this[1]*n,t[2]=this[2]*o,t[3]=this[4]*i,t[4]=this[5]*n,t[5]=this[6]*o,t[6]=this[8]*i,t[7]=this[9]*n,t[8]=this[10]*o,t}transpose(){return oi(this,this),this.check()}invert(){return ai(this,this),this.check()}multiplyLeft(t){return nr(this,t,this),this.check()}multiplyRight(t){return nr(this,this,t),this.check()}rotateX(t){return hi(this,this,t),this.check()}rotateY(t){return Ti(this,this,t),this.check()}rotateZ(t){return di(this,this,t),this.check()}rotateXYZ(t){return this.rotateX(t[0]).rotateY(t[1]).rotateZ(t[2])}rotateAxis(t,r){return fi(this,this,t,r),this.check()}scale(t){return _i(this,this,Array.isArray(t)?t:[t,t,t]),this.check()}translate(t){return li(this,this,t),this.check()}transform(t,r){return t.length===4?(r=Ei(r||[-0,-0,-0,-0],t,this),gt(r,4),r):this.transformAsPoint(t,r)}transformAsPoint(t,r){let{length:s}=t,i;switch(s){case 2:i=Et(r||[-0,-0],t,this);break;case 3:i=ni(r||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return gt(i,t.length),i}transformAsVector(t,r){let s;switch(t.length){case 2:s=Mt(r||[-0,-0],t,this);break;case 3:s=ii(r||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return gt(s,t.length),s}transformPoint(t,r){return this.transformAsPoint(t,r)}transformVector(t,r){return this.transformAsPoint(t,r)}transformDirection(t,r){return this.transformAsVector(t,r)}makeRotationX(t){return this.identity().rotateX(t)}makeTranslation(t,r,s){return this.identity().translate([t,r,s])}},bt,Ct;function qn(){return bt||(bt=new le([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(bt)),bt}function jn(){return Ct||(Ct=new le,Object.freeze(Ct)),Ct}function Mi(e){if(e>Math.PI*2)throw Error("expected radians")}function Zn(e,t,r,s,i,n){let o=2*n/(r-t),a=2*n/(i-s),c=(r+t)/(r-t),l=(i+s)/(i-s),_=-1,f=-1,h=-2*n;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=c,e[9]=l,e[10]=_,e[11]=f,e[12]=0,e[13]=0,e[14]=h,e[15]=0,e}var Ot="deck-gl-google-maps-container",lr=85.05113;function It(e,t,r,s){if(r){if(r.userData._googleMap===e)return r;Pt(r)}let i={click:null,rightclick:null,dblclick:null,mousemove:null,mouseout:null},n=new Nt.Deck({...s,useDevicePixels:s.useDevicePixels??!0,style:s.interleaved?null:{pointerEvents:"none"},parent:Jn(t,s.style),views:new Nt.MapView({repeat:!0}),initialViewState:{longitude:0,latitude:0,zoom:1},controller:!1});for(let o in i)i[o]=e.addListener(o,a=>eo(n,o,a));return n.userData._googleMap=e,n.userData._eventListeners=i,n}function Jn(e,t){let r=document.createElement("div");r.style.position="absolute",Object.assign(r.style,t);let i=e.getMap().getDiv().querySelector(`#${Ot}`);return i?i.appendChild(r):"getPanes"in e&&e.getPanes()?.overlayLayer.appendChild(r),r}function Pt(e){let{_eventListeners:t}=e.userData;for(let r in t)t[r]&&t[r].remove();e.finalize()}function xi(e,t){let{width:r,height:s}=Ci(e),i=t.getProjection(),n=e.getBounds();if(!n)return{width:r,height:s,left:0,top:0};let o=n.getNorthEast(),a=n.getSouthWest(),c=i.fromLatLngToDivPixel(o),l=i.fromLatLngToDivPixel(a),_=_r(i,r/2,s/2),f=new google.maps.LatLng(0,_[0]),h=i.fromLatLngToContainerPixel(f),T=i.fromLatLngToDivPixel(f);if(!c||!l||!T||!h)return{width:r,height:s,left:0,top:0};let d=Math.round(T.x-h.x),R=T.y-h.y,A=_r(i,r/2,0),p=_r(i,r/2,s),b=_[1],M=_[0];if(Math.abs(b)>lr){b=b>0?lr:-lr;let D=new google.maps.LatLng(b,M),F=i.fromLatLngToContainerPixel(D);R+=F.y-s/2}R=Math.round(R);let S=180*new ce(A).sub(p).verticalAngle()/Math.PI;S<0&&(S+=360);let x=e.getHeading()||0,u=e.getZoom()-1,B;if(S===0)B=s?(l.y-c.y)/s:1;else if(S===x){let D=new ce([c.x,c.y]).sub([l.x,l.y]).len(),F=new ce([r,-s]).len();B=F?D/F:1}return u+=Math.log2(B||1),{width:r,height:s,left:d,top:R,zoom:u,bearing:S,pitch:e.getTilt(),latitude:b,longitude:M}}function bi(e,t){let{width:r,height:s}=Ci(e),{center:i,heading:n,tilt:o,zoom:a}=t.getCameraParams(),c=25,l=s?r/s:1,_=.75,f=3e14,h=new le().perspective({fovy:c*Math.PI/180,aspect:l,near:_,far:f}),T=.5*h[5];return{width:r,height:s,viewState:{altitude:T,bearing:n,latitude:i.lat(),longitude:i.lng(),pitch:o,projectionMatrix:h,repeat:!0,zoom:a-1}}}function Ci(e){let t=e.getDiv().firstChild;return{width:t.offsetWidth,height:t.offsetHeight}}function _r(e,t,r){let s=new google.maps.Point(t,r),i=e.fromContainerPixelToLatLng(s);return[i.lng(),i.lat()]}function Gn(e,t){if(e.pixel)return e.pixel;let r=t.getViewports()[0].project([e.latLng.lng(),e.latLng.lat()]);return{x:r[0],y:r[1]}}function eo(e,t,r){if(!e.isInitialized)return;let s={type:t,offsetCenter:Gn(r,e),srcEvent:r};switch(t){case"click":case"rightclick":s.type="click",s.tapCount=1,e._onPointerDown(s),e._onEvent(s);break;case"dblclick":s.type="click",s.tapCount=2,e._onEvent(s);break;case"mousemove":s.type="pointermove",e._onPointerMove(s);break;case"mouseout":s.type="pointerleave",e._onPointerMove(s);break;default:return}}var to=()=>!1,ro={depthMask:!0,depthTest:!0,blend:!0,blendFunc:[U.SRC_ALPHA,U.ONE_MINUS_SRC_ALPHA,U.ONE,U.ONE_MINUS_SRC_ALPHA],blendEquation:U.FUNC_ADD};function ut(){}var Ni={interleaved:!0},Fe=class{constructor(t){this.props={};this._map=null;this._deck=null;this._overlay=null;this._positioningOverlay=null;this.setProps({...Ni,...t})}setMap(t){if(t===this._map)return;let{VECTOR:r,UNINITIALIZED:s}=google.maps.RenderingType;this._map&&(!t&&this._map.getRenderingType()===r&&this.props.interleaved&&this._overlay.requestRedraw(),this._overlay?.setMap(null),this._positioningOverlay?.setMap(null),this._map=null),t&&(this._map=t,t.getRenderingType()!==s?this._createOverlay(t):t.addListener("renderingtype_changed",()=>{this._createOverlay(t)}))}setProps(t){if(Object.assign(this.props,t),this._deck){let r=this._deck.getCanvas();if(t.style&&r?.parentElement){let s=r.parentElement.style;Object.assign(s,t.style),t.style=null}this._deck.setProps(t)}}pickObject(t){return this._deck&&this._deck.pickObject(t)}pickMultipleObjects(t){return this._deck&&this._deck.pickMultipleObjects(t)}pickObjects(t){return this._deck&&this._deck.pickObjects(t)}finalize(){this.setMap(null),this._deck&&(Pt(this._deck),this._deck=null)}_createOverlay(t){let{VECTOR:r,UNINITIALIZED:s}=google.maps.RenderingType,i=t.getRenderingType();if(i===s)return;i===r&&google.maps.WebGLOverlayView?this._createOverlayVector(t):this._createOverlayRaster(t)}_createOverlayVector(t){let r=this.props.interleaved??Ni.interleaved,s=new google.maps.OverlayView;s.onAdd=this._onAddVectorOverlay.bind(this),s.draw=this._updateContainerSize.bind(this),s.onRemove=this._onRemove.bind(this),this._positioningOverlay=s,this._positioningOverlay.setMap(t);let i=new google.maps.WebGLOverlayView;i.onAdd=ut,i.onContextRestored=r?this._onContextRestored.bind(this):ut,i.onDraw=this._onDrawVector.bind(this),i.onContextLost=r?this._onContextLost.bind(this):ut,i.onRemove=r?this._onRemove.bind(this):ut,this._overlay=i,this._overlay.setMap(t)}_createOverlayRaster(t){let r=new google.maps.OverlayView;r.onAdd=this._onAdd.bind(this),r.draw=this._onDrawRaster.bind(this),r.onRemove=this._onRemove.bind(this),this._overlay=r,this._overlay.setMap(t)}_onAdd(){this._deck=It(this._map,this._overlay,this._deck,this.props)}_onAddVectorOverlay(){let t=this._positioningOverlay,r=t.getPanes();if(r){let s=document.createElement("div");s.id=Ot,s.style.position="absolute",r.overlayLayer.appendChild(s)}this._deck=It(this._map,t,this._deck,this.props)}_updateContainerSize(){if(!this._map)return;let t=this._map.getDiv().querySelector(`#${Ot}`);if(!t)return;let r=this._map.getDiv().firstChild;if(!r)return;let s=r.offsetWidth,i=r.offsetHeight;t.style.width=`${s}px`,t.style.height=`${i}px`,t.style.left=`${-s/2}px`,t.style.top=`${-i/2}px`}_onContextRestored({gl:t}){if(!this._map||!this._overlay)return;let r=()=>{this._overlay&&this._overlay.requestRedraw()},s=It(this._map,this._overlay,this._deck,{gl:t,_customRender:r,...this.props});this._deck=s;let i=s.animationLoop;i._renderFrame=()=>{let n=t.getParameter(t.ARRAY_BUFFER_BINDING);s.device.withParametersWebGL({},()=>{i.props.onRender(i.animationProps)}),t.bindBuffer(t.ARRAY_BUFFER,n)}}_onContextLost(){this._deck&&(Pt(this._deck),this._deck=null)}_onRemove(){this._deck?.setProps({layerFilter:to})}_onDrawRaster(){if(!this._deck||!this._map)return;let t=this._deck,{width:r,height:s,left:i,top:n,...o}=xi(this._map,this._overlay),c=t.getCanvas()?.parentElement||t.props.parent;if(c){let _=c.style;_.left=`${i}px`,_.top=`${n}px`}let l=1e4;t.setProps({width:r,height:s,viewState:{altitude:l,...o}}),t.redraw()}_onDrawVector({gl:t,transformer:r}){if(!this._deck||!this._map)return;let s=this._deck,{interleaved:i}=this.props;if(s.setProps({...bi(this._map,r),...i&&{width:null,height:null}}),i&&s.isInitialized){let n=s.device;if(n instanceof ee){let o=n.getParametersWebGL(U.FRAMEBUFFER_BINDING);s.setProps({_framebuffer:o})}s.needsRedraw({clearRedrawFlags:!0}),n instanceof ee&&(n.setParametersWebGL({viewport:[0,0,t.canvas.width,t.canvas.height],scissor:[0,0,t.canvas.width,t.canvas.height],stencilFunc:[t.ALWAYS,0,255,t.ALWAYS,0,255]}),n.withParametersWebGL(ro,()=>{s._drawLayers("google-vector",{clearCanvas:!1})}))}else i||s.redraw()}};return Di(Be);})();
|
|
9
9
|
return __exports__;
|
|
10
10
|
});
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Use deck.gl as a custom Google Maps overlay",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"version": "9.3.0-alpha.
|
|
6
|
+
"version": "9.3.0-alpha.6",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@luma.gl/webgl": "^9.3.
|
|
41
|
+
"@luma.gl/webgl": "^9.3.2",
|
|
42
42
|
"@math.gl/core": "^4.1.0",
|
|
43
43
|
"@types/google.maps": "^3.48.6"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@deck.gl/core": "~9.3.0-alpha.1",
|
|
47
|
-
"@luma.gl/core": "~9.3.
|
|
48
|
-
"@luma.gl/webgl": "~9.3.
|
|
47
|
+
"@luma.gl/core": "~9.3.2",
|
|
48
|
+
"@luma.gl/webgl": "~9.3.2"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "6aff0d4eccd01a06a388ab1c07042a94daa3eb31"
|
|
51
51
|
}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
5
|
/* global google */
|
|
6
|
-
import {
|
|
6
|
+
import type {GLParameters} from '@luma.gl/webgl/constants';
|
|
7
|
+
import {GL} from '@luma.gl/webgl/constants';
|
|
7
8
|
import {WebGLDevice} from '@luma.gl/webgl';
|
|
8
9
|
import {
|
|
9
10
|
createDeckInstance,
|