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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -135,6 +135,35 @@ declare class MVXRoute {
135
135
  * @param data API response data containing route information
136
136
  */
137
137
  constructor(data: RouteResponse);
138
+ /**
139
+ * Rebuilds the class prototypes of a route read back from localStorage.
140
+ *
141
+ * `JSON.parse` returns plain objects, and every derived value of a route —
142
+ * `steps`, `duration`, `length`, a step's `coordinates` — is a getter on the
143
+ * prototype, so a persisted route came back without them and broke whatever
144
+ * drew it. Values that already are instances pass through unchanged.
145
+ *
146
+ * @hidden
147
+ * @param value A route, or its JSON round-trip.
148
+ * @returns The same data with `MVXRoute`, leg, step and polyline prototypes.
149
+ */
150
+ static fromCache(value: unknown): MVXRoute;
151
+ /**
152
+ * Returns `route` under a new {@link id}, with its own `legs` and `steps` arrays.
153
+ *
154
+ * A cached route is handed to every caller that asks for it, and the map keys
155
+ * its layers by route id: drawing the same cached object twice would collide.
156
+ * Static so that `MVXRoute` literals (test doubles) still type-check.
157
+ *
158
+ * The arrays are copied because the route this is built from stays in the
159
+ * cache for the next caller: trimming the returned route — dropping a leg, or
160
+ * a step already walked — would otherwise shorten the cached one too. The
161
+ * steps themselves are shared, being read-only data whose polylines would
162
+ * have to be decoded again to copy.
163
+ *
164
+ * @hidden
165
+ */
166
+ static withNewId(route: MVXRoute): MVXRoute;
138
167
  /**
139
168
  * Gets all steps of the route by combining steps from all legs
140
169
  * @returns Array with all route steps
@@ -361,6 +390,21 @@ interface InnerFloor {
361
390
  reachableFromGPS?: boolean;
362
391
  }
363
392
 
393
+ interface InstitutionCityFilterOption {
394
+ institutionId: string;
395
+ filterId: string;
396
+ name: string;
397
+ type: "institution";
398
+ }
399
+ interface ParentPlaceCityFilterOption {
400
+ parentPlaceId: string;
401
+ filterId: string;
402
+ name: string;
403
+ type: "parent-place";
404
+ institutionId: string;
405
+ }
406
+ type CityFilterOption = InstitutionCityFilterOption | ParentPlaceCityFilterOption;
407
+
364
408
  interface Metadata {
365
409
  category?: string[];
366
410
  image?: string;
@@ -802,21 +846,6 @@ declare class MVXPlace {
802
846
  toString(): string;
803
847
  }
804
848
 
805
- interface InstitutionCityFilterOption {
806
- institutionId: string;
807
- filterId: string;
808
- name: string;
809
- type: "institution";
810
- }
811
- interface ParentPlaceCityFilterOption {
812
- parentPlaceId: string;
813
- filterId: string;
814
- name: string;
815
- type: "parent-place";
816
- institutionId: string;
817
- }
818
- type CityFilterOption = InstitutionCityFilterOption | ParentPlaceCityFilterOption;
819
-
820
849
  interface InstitutionResponse {
821
850
  id: string;
822
851
  title: string;
@@ -1097,10 +1126,39 @@ interface CurrentLocation {
1097
1126
  title: 'Current location';
1098
1127
  position: LatLng;
1099
1128
  }
1129
+ /**
1130
+ * A point the visitor picked by tapping the map, instead of one of the known places.
1131
+ *
1132
+ * It carries a coordinate and nothing else: there is no place behind it to look up, which
1133
+ * is exactly why it needs its own type rather than a stand-in {@link MVXPlace}.
1134
+ */
1135
+ interface DroppedPin {
1136
+ type: 'dropped-pin';
1137
+ title: 'Dropped pin';
1138
+ position: LatLng;
1139
+ }
1100
1140
  declare function toCurrentLocation(position: GeolocationPosition): CurrentLocation;
1141
+ declare function toDroppedPin(position: LatLng): DroppedPin;
1101
1142
  declare function isCurrentLocation(point: RoutePoint | null): point is CurrentLocation;
1143
+ declare function isDroppedPin(point: RoutePoint | null): point is DroppedPin;
1102
1144
  declare function isPlace(point: RoutePoint | null): point is MVXPlace;
1103
- type RoutePoint = MVXPlace | CurrentLocation;
1145
+ /**
1146
+ * Points the router has to locate by coordinate rather than by id.
1147
+ *
1148
+ * A place is sent as `{ id }` and the API resolves where it is; the visitor's own location
1149
+ * and a pin they dropped have no id to send, only a position. This is deliberately separate
1150
+ * from {@link isCurrentLocation}, which answers *which* kind of point it is — what the
1151
+ * analytics and the destination rules ask about.
1152
+ */
1153
+ declare function hasOwnPosition(point: RoutePoint | null): point is CurrentLocation | DroppedPin;
1154
+ /**
1155
+ * The id to report for a point in logs and analytics.
1156
+ *
1157
+ * The points without a place behind them report what they are, so a funnel can still tell
1158
+ * a route from the visitor's location apart from one from a pin they dropped.
1159
+ */
1160
+ declare function routePointId(point: RoutePoint | null): string;
1161
+ type RoutePoint = MVXPlace | CurrentLocation | DroppedPin;
1104
1162
 
1105
1163
  interface FormattedSchedule {
1106
1164
  day: string;
@@ -1113,11 +1171,21 @@ interface SearchData {
1113
1171
  }
1114
1172
  declare const EMPTY_SEARCH_DATA: SearchData;
1115
1173
 
1174
+ /**
1175
+ * What the visitor has the category filter set to.
1176
+ *
1177
+ * `filters` is the whole selection, which can hold several categories or none at all.
1178
+ * `filter` is the first of them — or `'All'` when none are on — and is kept because hosts
1179
+ * have been reading it since the filter allowed a single category, and many write it
1180
+ * straight into `?tab=`. Prefer `filters` in new code.
1181
+ */
1182
+ interface FilterSelection {
1183
+ filter: string;
1184
+ filters: string[];
1185
+ }
1116
1186
  interface SelectFilterAction {
1117
1187
  type: 'select-filter';
1118
- data: {
1119
- filter: string;
1120
- };
1188
+ data: FilterSelection;
1121
1189
  }
1122
1190
  interface ShowPlaceAction {
1123
1191
  type: 'show-place';
@@ -1141,9 +1209,7 @@ interface SearchAction {
1141
1209
  }
1142
1210
  interface ReturnToHomeAction {
1143
1211
  type: 'return-to-home';
1144
- data: {
1145
- filter: string;
1146
- };
1212
+ data: FilterSelection;
1147
1213
  }
1148
1214
  type UserAction = SelectFilterAction | ShowPlaceAction | SelectDestinationAction | SearchAction | ReturnToHomeAction;
1149
1215
 
@@ -1161,5 +1227,5 @@ declare const MEASUREMENT_ID = "G-9KB6BB1J7M";
1161
1227
  declare function getSchedule(openingHours: OpeningHours): string;
1162
1228
  declare function prepareAllSchedules(openingHours: OpeningHours): FormattedSchedule[];
1163
1229
 
1164
- export { AnimationState, Banner, EMPTY_SEARCH_DATA, FALLBACK_IMAGE_URL, Institution, MEASUREMENT_ID, MVXPlace, MVXRoute, MVXRouteLeg, MVXRouteStep, MVXTransport, extractBannerColor, getSchedule, isCurrentLocation, isDealOrEventBanner, isPlace, prepareAllSchedules, toCurrentLocation };
1165
- export type { CategoryFiltersData, CityFilterOption, CurrentLocation, DaysOfTheWeek, FormattedSchedule, InitialData, InnerFloor, InstitutionResponse, LatLng, MVXLocation, OpeningHours, OpeningTime, PlaceResponse, Property, ReturnToHomeAction, RoutePoint, SearchAction, SearchData, SelectDestinationAction, SelectFilterAction, ShowPlaceAction, UserAction };
1230
+ export { AnimationState, Banner, EMPTY_SEARCH_DATA, FALLBACK_IMAGE_URL, Institution, MEASUREMENT_ID, MVXPlace, MVXRoute, MVXRouteLeg, MVXRouteStep, MVXTransport, extractBannerColor, getSchedule, hasOwnPosition, isCurrentLocation, isDealOrEventBanner, isDroppedPin, isPlace, prepareAllSchedules, routePointId, toCurrentLocation, toDroppedPin };
1231
+ export type { CategoryFiltersData, CityFilterOption, CurrentLocation, DaysOfTheWeek, DroppedPin, FilterSelection, FormattedSchedule, InitialData, InnerFloor, InstitutionResponse, LatLng, MVXLocation, OpeningHours, OpeningTime, PlaceResponse, Property, ReturnToHomeAction, RoutePoint, SearchAction, SearchData, SelectDestinationAction, SelectFilterAction, ShowPlaceAction, UserAction };
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@mapvx/web-components-ssr",
3
- "version": "1.6.1",
3
+ "version": "1.7.0-dev.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
7
  "author": "Mapvx",
8
- "homepage": "https://mapvx.com",
8
+ "homepage": "https://docs.mapvx.app/ssr-angular-component/",
9
9
  "license": "UNLICENSED",
10
10
  "files": [
11
11
  "dist/browser/*.js",
@@ -25,7 +25,7 @@
25
25
  "deploy:test-app": "ng build && npm --prefix example/test-app run deploy",
26
26
  "start": "ng serve",
27
27
  "start:setup": "npm --prefix helper install && npm --prefix helper run build && npm --prefix example/test-app install",
28
- "build": "ng build && npm run build:types && npm run build:clean",
28
+ "build": "node scripts/inject-sentry-dsn.mjs && ng build && npm run build:types && npm run build:clean",
29
29
  "build:types": "tsc -p tsconfig.types.json && rollup -c rollup.dts.config.mjs",
30
30
  "build:clean": "node -e \"const fs=require('fs');fs.rmSync('dist/prerendered-routes.json',{force:true});fs.rmSync('dist/types-tmp',{recursive:true,force:true})\"",
31
31
  "watch": "ng build --watch --configuration development",
@@ -33,7 +33,10 @@
33
33
  "e2e": "playwright test",
34
34
  "lint": "ng lint",
35
35
  "prepare": "husky",
36
- "release": "semantic-release"
36
+ "release": "semantic-release",
37
+ "upload-sourcemaps": "bash scripts/upload-sourcemaps-to-sentry.sh",
38
+ "docs:dev": "npm --prefix docs run dev",
39
+ "docs:build": "node scripts/build-docs.mjs"
37
40
  },
38
41
  "lint-staged": {
39
42
  "*.{css,scss}": "stylelint --fix --allow-empty-input",
@@ -43,52 +46,56 @@
43
46
  ]
44
47
  },
45
48
  "dependencies": {
46
- "@angular/common": "^22.0.1",
47
- "@angular/compiler": "^22.0.1",
48
- "@angular/core": "^22.0.1",
49
- "@angular/elements": "^22.0.1",
50
- "@angular/forms": "^22.0.1",
51
- "@angular/platform-browser": "^22.0.1",
52
- "@angular/router": "^22.0.1",
49
+ "@angular/common": "^22.2.3",
50
+ "@angular/compiler": "^22.2.3",
51
+ "@angular/core": "^22.2.3",
52
+ "@angular/elements": "^22.2.3",
53
+ "@angular/forms": "^22.2.3",
54
+ "@angular/platform-browser": "^22.2.3",
55
+ "@angular/router": "^22.2.3",
53
56
  "@fortawesome/angular-fontawesome": "^5.1.0",
54
- "@fortawesome/fontawesome-svg-core": "^7.3.0",
57
+ "@fortawesome/fontawesome-svg-core": "^7.3.1",
58
+ "@sentry/browser": "^10.76.2",
55
59
  "ngx-google-analytics": "^14.0.1",
56
60
  "rxjs": "~7.8.2",
57
61
  "tslib": "^2.8.1"
58
62
  },
59
63
  "devDependencies": {
60
- "@angular/build": "^22.0.1",
61
- "@angular/cli": "^22.0.1",
62
- "@angular/compiler-cli": "^22.0.1",
63
- "@awesome.me/kit-099daaf0b1": "^1.0.73",
64
- "@commitlint/cli": "^21.2.0",
65
- "@mapvx/web-js": "^3.1.0",
66
- "@playwright/test": "^1.61.1",
64
+ "@angular/build": "^22.2.3",
65
+ "@angular/cli": "^22.2.3",
66
+ "@angular/compiler-cli": "^22.2.3",
67
+ "@awesome.me/kit-099daaf0b1": "^1.0.75",
68
+ "@commitlint/cli": "^21.2.4",
69
+ "@eslint/js": "^10.0.1",
70
+ "@mapvx/web-js": "^4.4.0",
71
+ "@playwright/test": "^1.64.1",
67
72
  "@semantic-release/changelog": "^6.0.3",
68
73
  "@semantic-release/commit-analyzer": "^13.0.1",
69
74
  "@semantic-release/git": "^10.0.1",
70
- "@semantic-release/github": "^12.0.9",
71
- "@semantic-release/npm": "^13.1.5",
75
+ "@semantic-release/github": "^12.0.10",
76
+ "@semantic-release/npm": "^13.2.0",
72
77
  "@semantic-release/release-notes-generator": "^14.1.1",
73
- "@vitest/coverage-v8": "^4.1.10",
74
- "angular-eslint": "^22.0.0",
78
+ "@sentry/cli": "^3.8.2",
79
+ "@vitest/coverage-v8": "^4.1.12",
80
+ "angular-eslint": "^22.6.0",
75
81
  "commitlint-config-gitmoji": "^2.3.1",
76
- "eslint": "^9.39.4",
82
+ "conventional-changelog-conventionalcommits": "~9.3.1",
83
+ "eslint": "^10.13.0",
77
84
  "eslint-import-resolver-typescript": "^4.4.5",
78
85
  "eslint-plugin-import-x": "^4.17.1",
79
86
  "http-server": "^14.1.1",
80
87
  "husky": "^9.1.7",
81
88
  "istanbul-lib-instrument": "^6.0.3",
82
- "jsdom": "^29.1.1",
83
- "lint-staged": "^17.0.8",
84
- "prettier": "3.9.4",
85
- "rollup": "^4.62.2",
86
- "rollup-plugin-dts": "^6.4.1",
87
- "semantic-release": "^25.0.5",
88
- "stylelint": "^17.14.0",
89
+ "jsdom": "^30.1.3",
90
+ "lint-staged": "^17.6.0",
91
+ "prettier": "3.9.7",
92
+ "rollup": "^4.65.0",
93
+ "rollup-plugin-dts": "^6.5.1",
94
+ "semantic-release": "^25.0.9",
95
+ "stylelint": "^17.16.0",
89
96
  "stylelint-config-standard-scss": "^17.0.0",
90
97
  "typescript": "~6.0.3",
91
- "typescript-eslint": "^8.63.0",
92
- "vitest": "^4.1.10"
98
+ "typescript-eslint": "^8.72.0",
99
+ "vitest": "^4.1.12"
93
100
  }
94
101
  }
@@ -1,2 +0,0 @@
1
- import"./main.js";import{As as vr,Gt as Kt,Mt as Ji,Vr as Ye,Zs as yn,Zt as Me,ms as tt,to as lt,xn as Os,ys as un}from"./chunk-LltjhLJU.js";var E=new WeakMap;var M=class extends un{constructor(e){super(e),this.decoderPath=``,this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL=``,this.defaultAttributeIDs={position:`POSITION`,normal:`NORMAL`,color:`COLOR`,uv:`TEX_COORD`},this.defaultAttributeTypes={position:`Float32Array`,normal:`Float32Array`,color:`Float32Array`,uv:`Float32Array`}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,n,s,r){let o=new yn(this.manager);o.setPath(this.path),o.setResponseType(`arraybuffer`),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,t=>{this.parse(t,n,r)},s,r)}parse(e,n,s=()=>{}){this.decodeDracoFile(e,n,null,null,Kt,s).catch(s)}decodeDracoFile(e,n,s,r,o=vr,t=()=>{}){let i={attributeIDs:s||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!s,vertexColorSpace:o};return this.decodeGeometry(e,i).then(n).catch(t)}decodeGeometry(e,n){let s=JSON.stringify(n);if(E.has(e)){let a=E.get(e);if(a.key===s)return a.promise;if(e.byteLength===0)throw new Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}let r,o=this.workerNextTaskID++,t=e.byteLength,i=this._getWorker(o,t).then(a=>(r=a,new Promise((u,c)=>{r._callbacks[o]={resolve:u,reject:c},r.postMessage({type:`decode`,id:o,taskConfig:n,buffer:e},[e])}))).then(a=>this._createGeometry(a.geometry));return i.catch(()=>!0).then(()=>{r&&o&&this._releaseTask(r,o)}),E.set(e,{key:s,promise:i}),i}_createGeometry(e){let n=new Ye;e.index&&n.setIndex(new lt(e.index.array,1));for(let s=0;s<e.attributes.length;s++){let{name:r,array:o,itemSize:t,stride:i,vertexColorSpace:a}=e.attributes[s],u;if(t===i)u=new lt(o,t);else u=new Ji(new Os(o,i),t,0);r===`color`&&(this._assignVertexColorSpace(u,a),u.normalized=!(o instanceof Float32Array)),n.setAttribute(r,u)}return n}_assignVertexColorSpace(e,n){if(n!==`srgb`)return;let s=new Me;for(let r=0,o=e.count;r<o;r++)s.fromBufferAttribute(e,r),tt.colorSpaceToWorking(s,Kt),e.setXYZ(r,s.r,s.g,s.b)}_loadLibrary(e,n){let s=new yn(this.manager);return s.setPath(this.decoderPath),s.setResponseType(n),s.setWithCredentials(this.withCredentials),new Promise((r,o)=>{s.load(e,r,void 0,o)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,n=[];return e?n.push(this._loadLibrary(`draco_decoder.js`,`text`)):(n.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),n.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(n).then(s=>{let r=s[0];e||(this.decoderConfig.wasmBinary=s[1]);let o=F.toString(),t=[`/* draco decoder */`,r,``,`/* worker */`,o.substring(o.indexOf(`{`)+1,o.lastIndexOf(`}`))].join(`
2
- `);this.workerSourceURL=URL.createObjectURL(new Blob([t]))}),this.decoderPending}_getWorker(e,n){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let r=new Worker(this.workerSourceURL);r._callbacks={},r._taskCosts={},r._taskLoad=0,r.postMessage({type:`init`,decoderConfig:this.decoderConfig}),r.onmessage=function(o){let t=o.data;switch(t.type){case`decode`:r._callbacks[t.id].resolve(t);break;case`error`:r._callbacks[t.id].reject(t);break;default:console.error(`THREE.DRACOLoader: Unexpected message, "`+t.type+`"`)}},this.workerPool.push(r)}else this.workerPool.sort(function(r,o){return r._taskLoad>o._taskLoad?-1:1});let s=this.workerPool[this.workerPool.length-1];return s._taskCosts[e]=n,s._taskLoad+=n,s})}_releaseTask(e,n){e._taskLoad-=e._taskCosts[n],delete e._callbacks[n],delete e._taskCosts[n]}debug(){console.log(`Task load: `,this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==``&&URL.revokeObjectURL(this.workerSourceURL),this}};function F(){let m,e;onmessage=function(t){let i=t.data;switch(i.type){case`init`:m=i.decoderConfig,e=new Promise(function(c){m.onModuleLoaded=function(h){c({draco:h})},DracoDecoderModule(m)});break;case`decode`:let a=i.buffer,u=i.taskConfig;e.then(c=>{let h=c.draco,d=new h.Decoder;try{let l=n(h,d,new Int8Array(a),u),g=l.attributes.map(f=>f.array.buffer);l.index&&g.push(l.index.array.buffer),self.postMessage({type:`decode`,id:i.id,geometry:l},g)}catch(l){console.error(l),self.postMessage({type:`error`,id:i.id,error:l.message})}finally{h.destroy(d)}});break}};function n(t,i,a,u){let c=u.attributeIDs,h=u.attributeTypes,d,l,g=i.GetEncodedGeometryType(a);if(g===t.TRIANGULAR_MESH)d=new t.Mesh,l=i.DecodeArrayToMesh(a,a.byteLength,d);else if(g===t.POINT_CLOUD)d=new t.PointCloud,l=i.DecodeArrayToPointCloud(a,a.byteLength,d);else throw new Error(`THREE.DRACOLoader: Unexpected geometry type.`);if(!l.ok()||d.ptr===0)throw new Error(`THREE.DRACOLoader: Decoding failed: `+l.error_msg());let f={index:null,attributes:[]};for(let y in c){let w=self[h[y]],_,b;if(u.useUniqueIDs)b=c[y],_=i.GetAttributeByUniqueId(d,b);else{if(b=i.GetAttributeId(d,t[c[y]]),b===-1)continue;_=i.GetAttribute(d,b)}let p=r(t,i,d,y,w,_);y===`color`&&(p.vertexColorSpace=u.vertexColorSpace),f.attributes.push(p)}return g===t.TRIANGULAR_MESH&&(f.index=s(t,i,d)),t.destroy(d),f}function s(t,i,a){let c=a.num_faces()*3,h=c*4,d=t._malloc(h);i.GetTrianglesUInt32Array(a,h,d);let l=new Uint32Array(t.HEAPF32.buffer,d,c).slice();return t._free(d),{array:l,itemSize:1}}function r(t,i,a,u,c,h){let d=a.num_points(),l=h.num_components(),g=o(t,c),f=l*c.BYTES_PER_ELEMENT,y=Math.ceil(f/4)*4,w=y/c.BYTES_PER_ELEMENT,_=d*f,b=d*y,p=t._malloc(_);i.GetAttributeDataArrayForAllPoints(a,h,g,_,p);let A=new c(t.HEAPF32.buffer,p,_/c.BYTES_PER_ELEMENT),k;if(f===y)k=A.slice();else{k=new c(b/c.BYTES_PER_ELEMENT);let R=0;for(let P=0,G=A.length;P<G;P++){for(let L=0;L<l;L++)k[R+L]=A[P*l+L];R+=w}}return t._free(p),{name:u,count:d,itemSize:l,array:k,stride:w}}function o(t,i){switch(i){case Float32Array:return t.DT_FLOAT32;case Int8Array:return t.DT_INT8;case Int16Array:return t.DT_INT16;case Int32Array:return t.DT_INT32;case Uint8Array:return t.DT_UINT8;case Uint16Array:return t.DT_UINT16;case Uint32Array:return t.DT_UINT32}}}export{M as DRACOLoader};
@@ -1,2 +0,0 @@
1
- import{n as s,t as r}from"./main.js";import{As as vr,Br as Xu,Bt as Kl,Co as oc,Ct as Hu,Er as Wl,Fr as Xl,Gr as Yl,Gt as Kt,Ja as la,Jo as ra,Ko as qt,Oi as ca,Qa as ln,Ri as dc,U as Eh,Va as kl,Vo as ql,Y as Et,Yr as Ys,Zs as yn,_n as Ol,b as Bs,c as Ai,ds as tn,fi as _t,fn as Ns,gs as uc,ic as zl,ki as cc,lc as zu,lt as Gl,ma as hc,mi as aa,ms as tt,mt as Gu,oc as zn,pa as ha,s as Ah,sn as Nl,v as Bn,vr as Vl,vt as Hl,wa as ii,ys as un,zr as Xt}from"./chunk-LltjhLJU.js";var tA=class{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(A){if(!this.workers[A]){let B=this.workerCreator();B.addEventListener(`message`,this._onMessage.bind(this,A)),this.workers[A]=B}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,B){let g=this.workersResolve[A];if(g&&g(B),this.queue.length){let{resolve:I,msg:E,transfer:Q}=this.queue.shift();this.workersResolve[A]=I,this.workers[A].postMessage(E,Q)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,B){return new Promise(g=>{let I=this._getIdleWorker();I!==-1?(this._initWorker(I),this.workerStatus|=1<<I,this.workersResolve[I]=g,this.workers[I].postMessage(A,B)):this.queue.push({resolve:g,msg:A,transfer:B})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}};var p=class{constructor(A,B,g,I){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(A.buffer,A.byteOffset+B,g),this._littleEndian=I,this._offset=0}_nextUint8(){let A=this._dataView.getUint8(this._offset);return this._offset+=1,A}_nextUint16(){let A=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,A}_nextUint32(){let A=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint64(){let A=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,A}_nextInt32(){let A=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint8Array(A){let B=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,A);return this._offset+=A,B}_skip(A){return this._offset+=A,this}_scan(A,B=0){let g=this._offset,I=0;for(;this._dataView.getUint8(this._offset)!==B&&I<A;)I++,this._offset++;return I<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+g,I)}};new Uint8Array([0]);var M=[171,75,84,88,32,50,48,187,13,10,26,10];function ZA(C){return new TextDecoder().decode(C)}function jA(C){let A=new Uint8Array(C.buffer,C.byteOffset,M.length);if(A[0]!==M[0]||A[1]!==M[1]||A[2]!==M[2]||A[3]!==M[3]||A[4]!==M[4]||A[5]!==M[5]||A[6]!==M[6]||A[7]!==M[7]||A[8]!==M[8]||A[9]!==M[9]||A[10]!==M[10]||A[11]!==M[11])throw new Error(`Missing KTX 2.0 identifier.`);let B={vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,levelCount:0,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],keyValue:{},globalData:null},g=17*Uint32Array.BYTES_PER_ELEMENT,I=new p(C,M.length,g,!0);B.vkFormat=I._nextUint32(),B.typeSize=I._nextUint32(),B.pixelWidth=I._nextUint32(),B.pixelHeight=I._nextUint32(),B.pixelDepth=I._nextUint32(),B.layerCount=I._nextUint32(),B.faceCount=I._nextUint32(),B.levelCount=I._nextUint32(),B.supercompressionScheme=I._nextUint32();let E=I._nextUint32(),Q=I._nextUint32(),_=I._nextUint32(),w=I._nextUint32(),G=I._nextUint64(),U=I._nextUint64(),o=3*Math.max(B.levelCount,1)*8,h=new p(C,M.length+g,o,!0);for(let a=0,r=Math.max(B.levelCount,1);a<r;a++)B.levels.push({levelData:new Uint8Array(C.buffer,C.byteOffset+h._nextUint64(),h._nextUint64()),uncompressedByteLength:h._nextUint64()});let t=new p(C,E,Q,!0);t._skip(4);let i=t._nextUint16(),e=t._nextUint16(),D=t._nextUint16(),T=t._nextUint16(),n={vendorId:i,descriptorType:e,versionNumber:D,colorModel:t._nextUint8(),colorPrimaries:t._nextUint8(),transferFunction:t._nextUint8(),flags:t._nextUint8(),texelBlockDimension:[t._nextUint8(),t._nextUint8(),t._nextUint8(),t._nextUint8()],bytesPlane:[t._nextUint8(),t._nextUint8(),t._nextUint8(),t._nextUint8(),t._nextUint8(),t._nextUint8(),t._nextUint8(),t._nextUint8()],samples:[]},S=(T/4-6)/4;for(let a=0;a<S;a++){let r={bitOffset:t._nextUint16(),bitLength:t._nextUint8(),channelType:t._nextUint8(),samplePosition:[t._nextUint8(),t._nextUint8(),t._nextUint8(),t._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};64&r.channelType?(r.sampleLower=t._nextInt32(),r.sampleUpper=t._nextInt32()):(r.sampleLower=t._nextUint32(),r.sampleUpper=t._nextUint32()),n.samples[a]=r}B.dataFormatDescriptor.length=0,B.dataFormatDescriptor.push(n);let F=new p(C,_,w,!0);for(;F._offset<w;){let a=F._nextUint32(),r=F._scan(a),c=ZA(r);if(B.keyValue[c]=F._nextUint8Array(a-r.byteLength-1),c.match(/^ktx/i)){let AA=ZA(B.keyValue[c]);B.keyValue[c]=AA.substring(0,AA.lastIndexOf(`\0`))}F._skip(a%4?4-a%4:0)}if(U<=0)return B;let R=new p(C,G,U,!0),f=R._nextUint16(),L=R._nextUint16(),j=R._nextUint32(),J=R._nextUint32(),q=R._nextUint32(),x=R._nextUint32(),u=[];for(let a=0,r=Math.max(B.levelCount,1);a<r;a++)u.push({imageFlags:R._nextUint32(),rgbSliceByteOffset:R._nextUint32(),rgbSliceByteLength:R._nextUint32(),alphaSliceByteOffset:R._nextUint32(),alphaSliceByteLength:R._nextUint32()});let Y=G+R._offset,O=Y+j,P=O+J,y=P+q;return B.globalData={endpointCount:f,selectorCount:L,imageDescs:u,endpointsData:new Uint8Array(C.buffer,C.byteOffset+Y,j),selectorsData:new Uint8Array(C.buffer,C.byteOffset+O,J),tablesData:new Uint8Array(C.buffer,C.byteOffset+P,q),extendedData:new Uint8Array(C.buffer,C.byteOffset+y,x)},B}var hA;var K;var MA;var TA={env:{emscripten_notify_memory_growth:function(C){MA=new Uint8Array(K.exports.memory.buffer)}}};var iA=class{init(){return hA||(hA=typeof fetch<`u`?fetch(`data:application/wasm;base64,`+zA).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,TA)).then(this._init):WebAssembly.instantiate(Buffer.from(zA,`base64`),TA).then(this._init),hA)}_init(A){K=A.instance,TA.env.emscripten_notify_memory_growth(0)}decode(A,B=0){if(!K)throw new Error(`ZSTDDecoder: Await .init() before decoding.`);let g=A.byteLength,I=K.exports.malloc(g);MA.set(A,I),B=B||Number(K.exports.ZSTD_findDecompressedSize(I,g));let E=K.exports.malloc(B),Q=K.exports.ZSTD_decompress(E,B,I,g),_=MA.slice(E,E+Q);return K.exports.free(I),K.exports.free(E),_}};var zA=`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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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`;var $A=`display-p3`;var AB=`display-p3-linear`;s(r({},tt.spaces[Kt]),{outputColorSpaceConfig:{drawingBufferColorSpace:Kt,toneMappingMode:`extended`}});var wA=new WeakMap;var UA=0;var cA;var k=class C extends un{constructor(A){super(A),this.transcoderPath=``,this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new tA,this.workerSourceURL=``,this.workerConfig=null,typeof MSC_TRANSCODER<`u`&&console.warn(`THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.`)}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}async detectSupportAsync(A){return console.warn(`KTX2Loader: "detectSupportAsync()" has been deprecated. Use "detectSupport()" and "await renderer.init();" when creating the renderer.`),await A.init(),this.detectSupport(A)}detectSupport(A){return A.isWebGPURenderer===!0?this.workerConfig={astcSupported:A.hasFeature(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:A.hasFeature(`texture-compression-etc1`),etc2Supported:A.hasFeature(`texture-compression-etc2`),dxtSupported:A.hasFeature(`texture-compression-s3tc`),bptcSupported:A.hasFeature(`texture-compression-bc`),pvrtcSupported:A.hasFeature(`texture-compression-pvrtc`)}:(this.workerConfig={astcSupported:A.extensions.has(`WEBGL_compressed_texture_astc`),astcHDRSupported:A.extensions.has(`WEBGL_compressed_texture_astc`)&&A.extensions.get(`WEBGL_compressed_texture_astc`).getSupportedProfiles().includes(`hdr`),etc1Supported:A.extensions.has(`WEBGL_compressed_texture_etc1`),etc2Supported:A.extensions.has(`WEBGL_compressed_texture_etc`),dxtSupported:A.extensions.has(`WEBGL_compressed_texture_s3tc`),bptcSupported:A.extensions.has(`EXT_texture_compression_bptc`),pvrtcSupported:A.extensions.has(`WEBGL_compressed_texture_pvrtc`)||A.extensions.has(`WEBKIT_WEBGL_compressed_texture_pvrtc`)},typeof navigator<`u`&&typeof navigator.platform<`u`&&typeof navigator.userAgent<`u`&&navigator.platform.indexOf(`Linux`)>=0&&navigator.userAgent.indexOf(`Firefox`)>=0&&this.workerConfig.astcSupported&&this.workerConfig.etc2Supported&&this.workerConfig.bptcSupported&&this.workerConfig.dxtSupported&&(this.workerConfig.astcSupported=!1,this.workerConfig.etc2Supported=!1)),this}init(){if(!this.transcoderPending){let A=new yn(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);let B=A.loadAsync(`basis_transcoder.js`),g=new yn(this.manager);g.setPath(this.transcoderPath),g.setResponseType(`arraybuffer`),g.setWithCredentials(this.withCredentials);let I=g.loadAsync(`basis_transcoder.wasm`);this.transcoderPending=Promise.all([B,I]).then(([E,Q])=>{let _=C.BasisWorker.toString(),w=[`/* constants */`,`let _EngineFormat = `+JSON.stringify(C.EngineFormat),`let _EngineType = `+JSON.stringify(C.EngineType),`let _TranscoderFormat = `+JSON.stringify(C.TranscoderFormat),`let _BasisFormat = `+JSON.stringify(C.BasisFormat),`/* basis_transcoder.js */`,E,`/* worker */`,_.substring(_.indexOf(`{`)+1,_.lastIndexOf(`}`))].join(`
2
- `);this.workerSourceURL=URL.createObjectURL(new Blob([w])),this.transcoderBinary=Q,this.workerPool.setWorkerCreator(()=>{let G=new Worker(this.workerSourceURL),U=this.transcoderBinary.slice(0);return G.postMessage({type:`init`,config:this.workerConfig,transcoderBinary:U},[U]),G})}),UA>0&&console.warn(`THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.`),UA++}return this.transcoderPending}load(A,B,g,I){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");let E=new yn(this.manager);E.setPath(this.path),E.setCrossOrigin(this.crossOrigin),E.setWithCredentials(this.withCredentials),E.setRequestHeader(this.requestHeader),E.setResponseType(`arraybuffer`),E.load(A,Q=>{this.parse(Q,B,I)},g,I)}parse(A,B,g){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(wA.has(A))return wA.get(A).promise.then(B).catch(g);this._createTexture(A).then(I=>B?B(I):null).catch(g)}_createTextureFrom(A,B){let{type:g,error:I,data:{faces:E,width:Q,height:_,format:w,type:G,dfdFlags:U}}=A;if(g===`error`)return Promise.reject(I);let o;if(B.faceCount===6)o=new Eh(E,w,G);else{let h=E[0].mipmaps;o=B.layerCount>1?new Ah(h,Q,_,B.layerCount,w,G):new Bs(h,Q,_,w,G)}return o.minFilter=E[0].mipmaps.length===1?_t:Bn,o.magFilter=_t,o.generateMipmaps=!1,o.needsUpdate=!0,o.colorSpace=PB(B),o.premultiplyAlpha=!!(U&1),o}async _createTexture(A,B={}){let g=jA(new Uint8Array(A)),I=g.vkFormat===1000066e3&&g.dataFormatDescriptor[0].colorModel===167;if(!(g.vkFormat===0||I&&!this.workerConfig.astcHDRSupported))return $B(g);let Q=B,_=this.init().then(()=>this.workerPool.postMessage({type:`transcode`,buffer:A,taskConfig:Q},[A])).then(w=>this._createTextureFrom(w.data,g));return wA.set(A,{promise:_}),_}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),UA--}};k.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2};k.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25};k.EngineFormat={RGBAFormat:qt,RGBA_ASTC_4x4_Format:Yl,RGB_BPTC_UNSIGNED_Format:cc,RGBA_BPTC_Format:oc,RGBA_ETC2_EAC_Format:Hl,RGBA_PVRTC_4BPPV1_Format:zl,RGBA_S3TC_DXT5_Format:la,RGB_ETC1_Format:kl,RGB_ETC2_Format:Gl,RGB_PVRTC_4BPPV1_Format:Ol,RGBA_S3TC_DXT1_Format:aa};k.EngineType={UnsignedByteType:tn,HalfFloatType:zn,FloatType:Xt};k.BasisWorker=function(){let C,A,B,g=_EngineFormat,I=_EngineType,E=_TranscoderFormat,Q=_BasisFormat;self.addEventListener(`message`,function(i){let e=i.data;switch(e.type){case`init`:C=e.config,_(e.transcoderBinary);break;case`transcode`:A.then(()=>{try{let{faces:D,buffers:T,width:n,height:S,hasAlpha:F,format:R,type:f,dfdFlags:L}=w(e.buffer);self.postMessage({type:`transcode`,id:e.id,data:{faces:D,width:n,height:S,hasAlpha:F,format:R,type:f,dfdFlags:L}},T)}catch(D){console.error(D),self.postMessage({type:`error`,id:e.id,error:D.message})}});break}});function _(i){A=new Promise(e=>{B={wasmBinary:i,onRuntimeInitialized:e},BASIS(B)}).then(()=>{B.initializeBasis(),B.KTX2File===void 0&&console.warn(`THREE.KTX2Loader: Please update Basis Universal transcoder.`)})}function w(i){let e=new B.KTX2File(new Uint8Array(i));function D(){e.close(),e.delete()}if(!e.isValid())throw D(),new Error(`THREE.KTX2Loader: Invalid or unsupported .ktx2 file`);let T;if(e.isUASTC())T=Q.UASTC;else if(e.isETC1S())T=Q.ETC1S;else if(e.isHDR())T=Q.UASTC_HDR;else throw new Error(`THREE.KTX2Loader: Unknown Basis encoding`);let n=e.getWidth(),S=e.getHeight(),F=e.getLayers()||1,R=e.getLevels(),f=e.getFaces(),L=e.getHasAlpha(),j=e.getDFDFlags(),{transcoderFormat:J,engineFormat:q,engineType:x}=o(T,n,S,L);if(!n||!S||!R)throw D(),new Error(`THREE.KTX2Loader: Invalid texture`);if(!e.startTranscoding())throw D(),new Error(`THREE.KTX2Loader: .startTranscoding failed`);let u=[],Y=[];for(let O=0;O<f;O++){let P=[];for(let y=0;y<R;y++){let z=[],X,b;for(let a=0;a<F;a++){let r=e.getImageLevelInfo(y,a,O);O===0&&y===0&&a===0&&(r.origWidth%4!==0||r.origHeight%4!==0)&&console.warn(`THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions.`),R>1?(X=r.origWidth,b=r.origHeight):(X=r.width,b=r.height);let c=new Uint8Array(e.getImageTranscodedSizeInBytes(y,a,0,J)),AA=e.transcodeImage(c,y,a,O,J,0,-1,-1);if(x===I.HalfFloatType&&(c=new Uint16Array(c.buffer,c.byteOffset,c.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!AA)throw D(),new Error(`THREE.KTX2Loader: .transcodeImage failed.`);z.push(c)}let $=t(z);P.push({data:$,width:X,height:b}),Y.push($.buffer)}u.push({mipmaps:P,width:n,height:S,format:q,type:x})}return D(),{faces:u,buffers:Y,width:n,height:S,hasAlpha:L,dfdFlags:j,format:q,type:x}}let G=[{if:`astcSupported`,basisFormat:[Q.UASTC],transcoderFormat:[E.ASTC_4x4,E.ASTC_4x4],engineFormat:[g.RGBA_ASTC_4x4_Format,g.RGBA_ASTC_4x4_Format],engineType:[I.UnsignedByteType],priorityETC1S:Infinity,priorityUASTC:1,needsPowerOfTwo:!1},{if:`bptcSupported`,basisFormat:[Q.ETC1S,Q.UASTC],transcoderFormat:[E.BC7_M5,E.BC7_M5],engineFormat:[g.RGBA_BPTC_Format,g.RGBA_BPTC_Format],engineType:[I.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:`dxtSupported`,basisFormat:[Q.ETC1S,Q.UASTC],transcoderFormat:[E.BC1,E.BC3],engineFormat:[g.RGBA_S3TC_DXT1_Format,g.RGBA_S3TC_DXT5_Format],engineType:[I.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:`etc2Supported`,basisFormat:[Q.ETC1S,Q.UASTC],transcoderFormat:[E.ETC1,E.ETC2],engineFormat:[g.RGB_ETC2_Format,g.RGBA_ETC2_EAC_Format],engineType:[I.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:`etc1Supported`,basisFormat:[Q.ETC1S,Q.UASTC],transcoderFormat:[E.ETC1],engineFormat:[g.RGB_ETC1_Format],engineType:[I.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:`pvrtcSupported`,basisFormat:[Q.ETC1S,Q.UASTC],transcoderFormat:[E.PVRTC1_4_RGB,E.PVRTC1_4_RGBA],engineFormat:[g.RGB_PVRTC_4BPPV1_Format,g.RGBA_PVRTC_4BPPV1_Format],engineType:[I.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:`bptcSupported`,basisFormat:[Q.UASTC_HDR],transcoderFormat:[E.BC6H],engineFormat:[g.RGB_BPTC_UNSIGNED_Format],engineType:[I.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[Q.ETC1S,Q.UASTC],transcoderFormat:[E.RGBA32,E.RGBA32],engineFormat:[g.RGBAFormat,g.RGBAFormat],engineType:[I.UnsignedByteType,I.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[Q.UASTC_HDR],transcoderFormat:[E.RGBA_HALF],engineFormat:[g.RGBAFormat],engineType:[I.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],U={[Q.ETC1S]:G.filter(i=>i.basisFormat.includes(Q.ETC1S)).sort((i,e)=>i.priorityETC1S-e.priorityETC1S),[Q.UASTC]:G.filter(i=>i.basisFormat.includes(Q.UASTC)).sort((i,e)=>i.priorityUASTC-e.priorityUASTC),[Q.UASTC_HDR]:G.filter(i=>i.basisFormat.includes(Q.UASTC_HDR)).sort((i,e)=>i.priorityHDR-e.priorityHDR)};function o(i,e,D,T){let n=U[i];for(let S=0;S<n.length;S++){let F=n[S];if(F.if&&!C[F.if]||!F.basisFormat.includes(i)||T&&F.transcoderFormat.length<2||F.needsPowerOfTwo&&!(h(e)&&h(D)))continue;return{transcoderFormat:F.transcoderFormat[T?1:0],engineFormat:F.engineFormat[T?1:0],engineType:F.engineType[0]}}throw new Error(`THREE.KTX2Loader: Failed to identify transcoding target.`)}function h(i){return i<=2?!0:(i&i-1)===0&&i!==0}function t(i){if(i.length===1)return i[0];let e=0;for(let n=0;n<i.length;n++){let S=i[n];e+=S.byteLength}let D=new Uint8Array(e),T=0;for(let n=0;n<i.length;n++){let S=i[n];D.set(S,T),T+=S.byteLength}return D}};var zB=new Set([qt,Xu,Ai,Nl]);var KA={109:qt,103:Ai,100:Nl,97:qt,83:Ai,76:Nl,91:qt,43:qt,37:qt,22:Ai,16:Ai,15:Nl,9:Nl,123:Xu,122:Xu,152:Hl,148:Gl,153:Wl,154:Xl,155:ca,156:ql,1000066e3:Yl,158:Yl,157:Yl,1000066004:Kl,166:Kl,165:Kl,134:aa,133:aa,132:ra,131:ra,138:la,137:la,140:uc,139:hc,142:dc,141:ha,146:oc,145:oc,1000054005:zl,1000054001:zl,1000054004:Vl,1000054e3:Vl};var d={109:Xt,103:Xt,100:Xt,97:zn,83:zn,76:zn,91:Ys,43:tn,37:tn,22:tn,16:tn,15:tn,9:tn,123:Gu,122:Hu,152:tn,148:tn,153:tn,154:tn,155:tn,156:tn,1000066e3:zn,158:tn,157:tn,1000066004:zn,166:tn,165:tn,134:tn,133:tn,132:tn,131:tn,138:tn,137:tn,140:tn,139:tn,142:tn,141:tn,146:tn,145:tn,1000054005:tn,1000054001:tn,1000054004:tn,1000054e3:tn};async function $B(C){let{vkFormat:A}=C;if(KA[A]===void 0)throw new Error(`THREE.KTX2Loader: Unsupported vkFormat: `+A);d[A]===void 0&&console.warn(`THREE.KTX2Loader: Missing ".type" for vkFormat: `+A);let B;C.supercompressionScheme===2&&(cA||(cA=new Promise(async Q=>{let _=new iA;await _.init(),Q(_)})),B=await cA);let g=[];for(let Q=0;Q<C.levels.length;Q++){let _=Math.max(1,C.pixelWidth>>Q),w=Math.max(1,C.pixelHeight>>Q),G=C.pixelDepth?Math.max(1,C.pixelDepth>>Q):0,U=C.levels[Q],o;if(C.supercompressionScheme===0)o=U.levelData;else if(C.supercompressionScheme===2)o=B.decode(U.levelData,U.uncompressedByteLength);else throw new Error(`THREE.KTX2Loader: Unsupported supercompressionScheme.`);let h;d[A]===1015?h=new Float32Array(o.buffer,o.byteOffset,o.byteLength/Float32Array.BYTES_PER_ELEMENT):d[A]===1016||d[A]===1012?h=new Uint16Array(o.buffer,o.byteOffset,o.byteLength/Uint16Array.BYTES_PER_ELEMENT):d[A]===35902||d[A]===35899?h=new Uint32Array(o.buffer,o.byteOffset,o.byteLength/Uint32Array.BYTES_PER_ELEMENT):h=o,g.push({data:h,width:_,height:w,depth:G})}let I=C.levelCount===0||g.length>1,E;if(zB.has(KA[A]))E=C.pixelDepth===0?new ln(g[0].data,C.pixelWidth,C.pixelHeight):new Ns(g[0].data,C.pixelWidth,C.pixelHeight,C.pixelDepth),E.minFilter=I?zu:Et,E.magFilter=Et,E.generateMipmaps=C.levelCount===0;else{if(C.pixelDepth>0)throw new Error(`THREE.KTX2Loader: Unsupported pixelDepth.`);E=new Bs(g,C.pixelWidth,C.pixelHeight),E.minFilter=I?Bn:_t,E.magFilter=_t}return E.mipmaps=g,E.type=d[A],E.format=KA[A],E.colorSpace=PB(C),E.needsUpdate=!0,Promise.resolve(E)}function PB(C){let A=C.dataFormatDescriptor[0];return A.colorPrimaries===1?A.transferFunction===2?Kt:vr:A.colorPrimaries===10?A.transferFunction===2?$A:AB:A.colorPrimaries===0?``:(console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),``)}export{k as KTX2Loader};