@loaders.gl/i3s 4.0.0-alpha.5 → 4.0.0-alpha.7

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.
Files changed (209) hide show
  1. package/dist/arcgis-webscene-loader.d.ts +7 -0
  2. package/dist/arcgis-webscene-loader.d.ts.map +1 -0
  3. package/dist/arcgis-webscene-loader.js +28 -0
  4. package/dist/bundle.js +2 -2
  5. package/dist/dist.min.js +9390 -8570
  6. package/dist/es5/arcgis-webscene-loader.js +40 -0
  7. package/dist/es5/arcgis-webscene-loader.js.map +1 -0
  8. package/dist/es5/bundle.js +6 -0
  9. package/dist/es5/bundle.js.map +1 -0
  10. package/dist/es5/i3s-attribute-loader.js +195 -0
  11. package/dist/es5/i3s-attribute-loader.js.map +1 -0
  12. package/dist/es5/i3s-building-scene-layer-loader.js +46 -0
  13. package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -0
  14. package/dist/es5/i3s-content-loader.js +56 -0
  15. package/dist/es5/i3s-content-loader.js.map +1 -0
  16. package/dist/es5/i3s-loader.js +193 -0
  17. package/dist/es5/i3s-loader.js.map +1 -0
  18. package/dist/es5/i3s-node-page-loader.js +39 -0
  19. package/dist/es5/i3s-node-page-loader.js.map +1 -0
  20. package/dist/es5/i3s-slpk-loader.js +20 -0
  21. package/dist/es5/i3s-slpk-loader.js.map +1 -0
  22. package/dist/es5/index.js +68 -0
  23. package/dist/es5/index.js.map +1 -0
  24. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +312 -0
  25. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
  26. package/dist/es5/lib/parsers/constants.js +72 -0
  27. package/dist/es5/lib/parsers/constants.js.map +1 -0
  28. package/dist/es5/lib/parsers/parse-arcgis-webscene.js +158 -0
  29. package/dist/es5/lib/parsers/parse-arcgis-webscene.js.map +1 -0
  30. package/dist/es5/lib/parsers/parse-i3s-attribute.js +76 -0
  31. package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +1 -0
  32. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js +65 -0
  33. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
  34. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +510 -0
  35. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -0
  36. package/dist/es5/lib/parsers/parse-i3s.js +116 -0
  37. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -0
  38. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +94 -0
  39. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
  40. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +112 -0
  41. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
  42. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +44 -0
  43. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
  44. package/dist/es5/lib/parsers/parse-zip/local-file-header.js +26 -0
  45. package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +1 -0
  46. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +17 -0
  47. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
  48. package/dist/es5/lib/utils/customizeColors.js +159 -0
  49. package/dist/es5/lib/utils/customizeColors.js.map +1 -0
  50. package/dist/es5/lib/utils/url-utils.js +33 -0
  51. package/dist/es5/lib/utils/url-utils.js.map +1 -0
  52. package/dist/es5/types.js +26 -0
  53. package/dist/es5/types.js.map +1 -0
  54. package/dist/es5/workers/i3s-content-worker-node.js +7 -0
  55. package/dist/es5/workers/i3s-content-worker-node.js.map +1 -0
  56. package/dist/es5/workers/i3s-content-worker.js +6 -0
  57. package/dist/es5/workers/i3s-content-worker.js.map +1 -0
  58. package/dist/esm/arcgis-webscene-loader.js +16 -0
  59. package/dist/esm/arcgis-webscene-loader.js.map +1 -0
  60. package/dist/esm/bundle.js +4 -0
  61. package/dist/esm/bundle.js.map +1 -0
  62. package/dist/esm/i3s-attribute-loader.js +119 -0
  63. package/dist/esm/i3s-attribute-loader.js.map +1 -0
  64. package/dist/esm/i3s-building-scene-layer-loader.js +19 -0
  65. package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -0
  66. package/dist/esm/i3s-content-loader.js +30 -0
  67. package/dist/esm/i3s-content-loader.js.map +1 -0
  68. package/dist/esm/i3s-loader.js +87 -0
  69. package/dist/esm/i3s-loader.js.map +1 -0
  70. package/dist/esm/i3s-node-page-loader.js +15 -0
  71. package/dist/esm/i3s-node-page-loader.js.map +1 -0
  72. package/dist/esm/i3s-slpk-loader.js +13 -0
  73. package/dist/esm/i3s-slpk-loader.js.map +1 -0
  74. package/dist/esm/index.js +9 -0
  75. package/dist/esm/index.js.map +1 -0
  76. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +198 -0
  77. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
  78. package/dist/esm/lib/parsers/constants.js +57 -0
  79. package/dist/esm/lib/parsers/constants.js.map +1 -0
  80. package/dist/esm/lib/parsers/parse-arcgis-webscene.js +70 -0
  81. package/dist/esm/lib/parsers/parse-arcgis-webscene.js.map +1 -0
  82. package/dist/esm/lib/parsers/parse-i3s-attribute.js +60 -0
  83. package/dist/esm/lib/parsers/parse-i3s-attribute.js.map +1 -0
  84. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js +39 -0
  85. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
  86. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +435 -0
  87. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -0
  88. package/dist/esm/lib/parsers/parse-i3s.js +83 -0
  89. package/dist/esm/lib/parsers/parse-i3s.js.map +1 -0
  90. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +37 -0
  91. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
  92. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +58 -0
  93. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
  94. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +37 -0
  95. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
  96. package/dist/esm/lib/parsers/parse-zip/local-file-header.js +19 -0
  97. package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +1 -0
  98. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js +9 -0
  99. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
  100. package/dist/esm/lib/utils/customizeColors.js +92 -0
  101. package/dist/esm/lib/utils/customizeColors.js.map +1 -0
  102. package/dist/esm/lib/utils/url-utils.js +28 -0
  103. package/dist/esm/lib/utils/url-utils.js.map +1 -0
  104. package/dist/esm/types.js +18 -0
  105. package/dist/esm/types.js.map +1 -0
  106. package/dist/esm/workers/i3s-content-worker-node.js +5 -0
  107. package/dist/esm/workers/i3s-content-worker-node.js.map +1 -0
  108. package/dist/esm/workers/i3s-content-worker.js +4 -0
  109. package/dist/esm/workers/i3s-content-worker.js.map +1 -0
  110. package/dist/i3s-attribute-loader.d.ts +9 -2
  111. package/dist/i3s-attribute-loader.d.ts.map +1 -1
  112. package/dist/i3s-attribute-loader.js +155 -132
  113. package/dist/i3s-building-scene-layer-loader.js +23 -18
  114. package/dist/i3s-content-loader.d.ts.map +1 -1
  115. package/dist/i3s-content-loader.js +29 -22
  116. package/dist/i3s-content-worker-node.js +197 -0
  117. package/dist/i3s-content-worker-node.js.map +7 -0
  118. package/dist/i3s-content-worker.js +1178 -1137
  119. package/dist/i3s-loader.d.ts +5 -0
  120. package/dist/i3s-loader.d.ts.map +1 -1
  121. package/dist/i3s-loader.js +88 -83
  122. package/dist/i3s-node-page-loader.d.ts +3 -2
  123. package/dist/i3s-node-page-loader.d.ts.map +1 -1
  124. package/dist/i3s-node-page-loader.js +20 -20
  125. package/dist/i3s-slpk-loader.d.ts +10 -0
  126. package/dist/i3s-slpk-loader.d.ts.map +1 -0
  127. package/dist/i3s-slpk-loader.js +20 -0
  128. package/dist/index.d.ts +5 -2
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +21 -6
  131. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +1 -0
  132. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -1
  133. package/dist/lib/helpers/i3s-nodepages-tiles.js +231 -228
  134. package/dist/lib/parsers/constants.js +85 -63
  135. package/dist/lib/parsers/parse-arcgis-webscene.d.ts +7 -0
  136. package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -0
  137. package/dist/lib/parsers/parse-arcgis-webscene.js +88 -0
  138. package/dist/lib/parsers/parse-i3s-attribute.d.ts +6 -4
  139. package/dist/lib/parsers/parse-i3s-attribute.d.ts.map +1 -1
  140. package/dist/lib/parsers/parse-i3s-attribute.js +87 -62
  141. package/dist/lib/parsers/parse-i3s-building-scene-layer.js +41 -40
  142. package/dist/lib/parsers/parse-i3s-tile-content.d.ts +2 -2
  143. package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -1
  144. package/dist/lib/parsers/parse-i3s-tile-content.js +454 -454
  145. package/dist/lib/parsers/parse-i3s.d.ts +1 -1
  146. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -1
  147. package/dist/lib/parsers/parse-i3s.js +92 -88
  148. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +4 -0
  149. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -0
  150. package/dist/lib/parsers/parse-slpk/parse-slpk.js +50 -0
  151. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +32 -0
  152. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -0
  153. package/dist/lib/parsers/parse-slpk/slpk-archieve.js +79 -0
  154. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +38 -0
  155. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +1 -0
  156. package/dist/lib/parsers/parse-zip/cd-file-header.js +48 -0
  157. package/dist/lib/parsers/parse-zip/local-file-header.d.ts +30 -0
  158. package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +1 -0
  159. package/dist/lib/parsers/parse-zip/local-file-header.js +28 -0
  160. package/dist/lib/utils/convert-i3s-obb-to-mbs.js +19 -8
  161. package/dist/lib/utils/customizeColors.d.ts +14 -0
  162. package/dist/lib/utils/customizeColors.d.ts.map +1 -0
  163. package/dist/lib/utils/customizeColors.js +94 -0
  164. package/dist/lib/utils/url-utils.js +41 -28
  165. package/dist/types.d.ts +518 -97
  166. package/dist/types.d.ts.map +1 -1
  167. package/dist/types.js +18 -19
  168. package/dist/workers/i3s-content-worker-node.d.ts +2 -0
  169. package/dist/workers/i3s-content-worker-node.d.ts.map +1 -0
  170. package/dist/workers/i3s-content-worker-node.js +7 -0
  171. package/dist/workers/i3s-content-worker.js +5 -4
  172. package/package.json +16 -14
  173. package/src/arcgis-webscene-loader.ts +31 -0
  174. package/src/i3s-attribute-loader.ts +9 -9
  175. package/src/i3s-content-loader.ts +17 -5
  176. package/src/i3s-loader.ts +22 -13
  177. package/src/i3s-node-page-loader.ts +6 -10
  178. package/src/i3s-slpk-loader.ts +25 -0
  179. package/src/index.ts +22 -5
  180. package/src/lib/helpers/i3s-nodepages-tiles.ts +14 -3
  181. package/src/lib/parsers/constants.ts +1 -1
  182. package/src/lib/parsers/parse-arcgis-webscene.ts +102 -0
  183. package/src/lib/parsers/parse-i3s-attribute.ts +21 -14
  184. package/src/lib/parsers/parse-i3s-tile-content.ts +99 -76
  185. package/src/lib/parsers/parse-i3s.ts +8 -3
  186. package/src/lib/parsers/parse-slpk/parse-slpk.ts +61 -0
  187. package/src/lib/parsers/parse-slpk/slpk-archieve.ts +108 -0
  188. package/src/lib/parsers/parse-zip/cd-file-header.ts +93 -0
  189. package/src/lib/parsers/parse-zip/local-file-header.ts +56 -0
  190. package/src/lib/utils/customizeColors.ts +134 -0
  191. package/src/types.ts +482 -33
  192. package/src/workers/i3s-content-worker-node.ts +6 -0
  193. package/dist/bundle.js.map +0 -1
  194. package/dist/i3s-attribute-loader.js.map +0 -1
  195. package/dist/i3s-building-scene-layer-loader.js.map +0 -1
  196. package/dist/i3s-content-loader.js.map +0 -1
  197. package/dist/i3s-loader.js.map +0 -1
  198. package/dist/i3s-node-page-loader.js.map +0 -1
  199. package/dist/index.js.map +0 -1
  200. package/dist/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  201. package/dist/lib/parsers/constants.js.map +0 -1
  202. package/dist/lib/parsers/parse-i3s-attribute.js.map +0 -1
  203. package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  204. package/dist/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  205. package/dist/lib/parsers/parse-i3s.js.map +0 -1
  206. package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  207. package/dist/lib/utils/url-utils.js.map +0 -1
  208. package/dist/types.js.map +0 -1
  209. package/dist/workers/i3s-content-worker.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { I3STilesetHeader, I3STileHeader, I3SMinimalNodeData, Node3DIndexDocument } from '../../types';
2
2
  import type { LoaderOptions, LoaderContext } from '@loaders.gl/loader-utils';
3
- export declare function normalizeTileData(tile: Node3DIndexDocument, options: LoaderOptions, context: LoaderContext): I3STileHeader;
3
+ export declare function normalizeTileData(tile: Node3DIndexDocument, context: LoaderContext): I3STileHeader;
4
4
  export declare function normalizeTileNonUrlData(tile: I3SMinimalNodeData): I3STileHeader;
5
5
  export declare function normalizeTilesetData(tileset: I3STilesetHeader, options: LoaderOptions, context: LoaderContext): Promise<void>;
6
6
  //# sourceMappingURL=parse-i3s.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-i3s.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-i3s.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAG,mBAAmB,EAAE,OAAO,EAAG,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa,CAyB5H;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAG,kBAAkB,GAAG,aAAa,CAmChF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAG,gBAAgB,EAAE,OAAO,EAAG,aAAa,EAAE,OAAO,EAAE,aAAa,iBAqBrH"}
1
+ {"version":3,"file":"parse-i3s.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-i3s.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,gBAAgB,EAChB,aAAa,EAEb,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAE3E,wBAAgB,iBAAiB,CAAC,IAAI,EAAG,mBAAmB,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa,CAyBnG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAG,kBAAkB,GAAG,aAAa,CAmChF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAG,gBAAgB,EAAE,OAAO,EAAG,aAAa,EAAE,OAAO,EAAE,aAAa,iBA0BrH"}
@@ -1,91 +1,95 @@
1
- import { OrientedBoundingBox } from '@math.gl/culling';
2
- import { Ellipsoid } from '@math.gl/geospatial';
3
- import { load } from '@loaders.gl/core';
4
- import { TILE_TYPE, TILE_REFINEMENT, TILESET_TYPE } from '@loaders.gl/tiles';
5
- import I3SNodePagesTiles from '../helpers/i3s-nodepages-tiles';
6
- import { generateTileAttributeUrls, getUrlWithToken } from '../utils/url-utils';
7
- export function normalizeTileData(tile, options, context) {
8
- const url = context.url || '';
9
- let contentUrl;
10
-
11
- if (tile.geometryData) {
12
- contentUrl = "".concat(url, "/").concat(tile.geometryData[0].href);
13
- }
14
-
15
- let textureUrl;
16
-
17
- if (tile.textureData) {
18
- textureUrl = "".concat(url, "/").concat(tile.textureData[0].href);
19
- }
20
-
21
- let attributeUrls;
22
-
23
- if (tile.attributeData) {
24
- attributeUrls = generateTileAttributeUrls(url, tile);
25
- }
26
-
27
- return normalizeTileNonUrlData({ ...tile,
28
- url,
29
- contentUrl,
30
- textureUrl,
31
- attributeUrls,
32
- isDracoGeometry: false
33
- });
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.normalizeTilesetData = exports.normalizeTileNonUrlData = exports.normalizeTileData = void 0;
7
+ const culling_1 = require("@math.gl/culling");
8
+ const geospatial_1 = require("@math.gl/geospatial");
9
+ const core_1 = require("@loaders.gl/core");
10
+ const tiles_1 = require("@loaders.gl/tiles");
11
+ const i3s_nodepages_tiles_1 = __importDefault(require("../helpers/i3s-nodepages-tiles"));
12
+ const url_utils_1 = require("../utils/url-utils");
13
+ function normalizeTileData(tile, context) {
14
+ const url = context.url || '';
15
+ let contentUrl;
16
+ if (tile.geometryData) {
17
+ contentUrl = `${url}/${tile.geometryData[0].href}`;
18
+ }
19
+ let textureUrl;
20
+ if (tile.textureData) {
21
+ textureUrl = `${url}/${tile.textureData[0].href}`;
22
+ }
23
+ let attributeUrls;
24
+ if (tile.attributeData) {
25
+ attributeUrls = (0, url_utils_1.generateTileAttributeUrls)(url, tile);
26
+ }
27
+ return normalizeTileNonUrlData({
28
+ ...tile,
29
+ url,
30
+ contentUrl,
31
+ textureUrl,
32
+ attributeUrls,
33
+ isDracoGeometry: false
34
+ });
34
35
  }
35
- export function normalizeTileNonUrlData(tile) {
36
- var _tile$lodSelection, _tile$lodSelection2;
37
-
38
- const boundingVolume = {};
39
- let mbs = [0, 0, 0, 1];
40
-
41
- if (tile.mbs) {
42
- mbs = tile.mbs;
43
- boundingVolume.sphere = [...Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)), tile.mbs[3]];
44
- } else if (tile.obb) {
45
- boundingVolume.box = [...Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center), ...tile.obb.halfSize, ...tile.obb.quaternion];
46
- const obb = new OrientedBoundingBox().fromCenterHalfSizeQuaternion(boundingVolume.box.slice(0, 3), tile.obb.halfSize, tile.obb.quaternion);
47
- const boundingSphere = obb.getBoundingSphere();
48
- boundingVolume.sphere = [...boundingSphere.center, boundingSphere.radius];
49
- mbs = [...tile.obb.center, boundingSphere.radius];
50
- }
51
-
52
- const lodMetricType = (_tile$lodSelection = tile.lodSelection) === null || _tile$lodSelection === void 0 ? void 0 : _tile$lodSelection[0].metricType;
53
- const lodMetricValue = (_tile$lodSelection2 = tile.lodSelection) === null || _tile$lodSelection2 === void 0 ? void 0 : _tile$lodSelection2[0].maxError;
54
- const transformMatrix = tile.transform;
55
- const type = TILE_TYPE.MESH;
56
- const refine = TILE_REFINEMENT.REPLACE;
57
- return { ...tile,
58
- mbs,
59
- boundingVolume,
60
- lodMetricType,
61
- lodMetricValue,
62
- transformMatrix,
63
- type,
64
- refine
65
- };
36
+ exports.normalizeTileData = normalizeTileData;
37
+ function normalizeTileNonUrlData(tile) {
38
+ const boundingVolume = {};
39
+ let mbs = [0, 0, 0, 1];
40
+ if (tile.mbs) {
41
+ mbs = tile.mbs;
42
+ boundingVolume.sphere = [
43
+ ...geospatial_1.Ellipsoid.WGS84.cartographicToCartesian(tile.mbs.slice(0, 3)),
44
+ tile.mbs[3] // radius of sphere
45
+ ];
46
+ }
47
+ else if (tile.obb) {
48
+ boundingVolume.box = [
49
+ ...geospatial_1.Ellipsoid.WGS84.cartographicToCartesian(tile.obb.center),
50
+ ...tile.obb.halfSize,
51
+ ...tile.obb.quaternion // quaternion
52
+ ];
53
+ const obb = new culling_1.OrientedBoundingBox().fromCenterHalfSizeQuaternion(boundingVolume.box.slice(0, 3), tile.obb.halfSize, tile.obb.quaternion);
54
+ const boundingSphere = obb.getBoundingSphere();
55
+ boundingVolume.sphere = [...boundingSphere.center, boundingSphere.radius];
56
+ mbs = [...tile.obb.center, boundingSphere.radius];
57
+ }
58
+ const lodMetricType = tile.lodSelection?.[0].metricType;
59
+ const lodMetricValue = tile.lodSelection?.[0].maxError;
60
+ const transformMatrix = tile.transform;
61
+ const type = tiles_1.TILE_TYPE.MESH;
62
+ /**
63
+ * I3S specification supports only REPLACE
64
+ */
65
+ const refine = tiles_1.TILE_REFINEMENT.REPLACE;
66
+ return { ...tile, mbs, boundingVolume, lodMetricType, lodMetricValue, transformMatrix, type, refine };
66
67
  }
67
- export async function normalizeTilesetData(tileset, options, context) {
68
- tileset.url = context.url;
69
-
70
- if (tileset.nodePages) {
71
- tileset.nodePagesTile = new I3SNodePagesTiles(tileset, options);
72
- tileset.root = await tileset.nodePagesTile.formTileFromNodePages(0);
73
- } else {
74
- var _options$i3s;
75
-
76
- const rootNodeUrl = getUrlWithToken("".concat(tileset.url, "/nodes/root"), (_options$i3s = options.i3s) === null || _options$i3s === void 0 ? void 0 : _options$i3s.token);
77
- tileset.root = await load(rootNodeUrl, tileset.loader, {
78
- i3s: {
79
- loadContent: false,
80
- isTileHeader: true,
81
- isTileset: false
82
- }
83
- });
84
- }
85
-
86
- tileset.basePath = tileset.url;
87
- tileset.type = TILESET_TYPE.I3S;
88
- tileset.lodMetricType = tileset.root.lodMetricType;
89
- tileset.lodMetricValue = tileset.root.lodMetricValue;
68
+ exports.normalizeTileNonUrlData = normalizeTileNonUrlData;
69
+ async function normalizeTilesetData(tileset, options, context) {
70
+ tileset.url = context.url;
71
+ if (tileset.nodePages) {
72
+ tileset.nodePagesTile = new i3s_nodepages_tiles_1.default(tileset, options);
73
+ tileset.root = tileset.nodePagesTile.formTileFromNodePages(0);
74
+ }
75
+ else {
76
+ // @ts-expect-error options is not properly typed
77
+ const rootNodeUrl = (0, url_utils_1.getUrlWithToken)(`${tileset.url}/nodes/root`, options.i3s?.token);
78
+ // eslint-disable-next-line no-use-before-define
79
+ tileset.root = await (0, core_1.load)(rootNodeUrl, tileset.loader, {
80
+ ...options,
81
+ i3s: {
82
+ // @ts-expect-error options is not properly typed
83
+ ...options.i3s,
84
+ loadContent: false, isTileHeader: true, isTileset: false
85
+ }
86
+ });
87
+ }
88
+ // base path that non-absolute paths in tileset are relative to.
89
+ tileset.basePath = tileset.url;
90
+ tileset.type = tiles_1.TILESET_TYPE.I3S;
91
+ // populate from root node
92
+ tileset.lodMetricType = tileset.root.lodMetricType;
93
+ tileset.lodMetricValue = tileset.root.lodMetricValue;
90
94
  }
91
- //# sourceMappingURL=parse-i3s.js.map
95
+ exports.normalizeTilesetData = normalizeTilesetData;
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ import type { SLPKLoaderOptions } from '../../../i3s-slpk-loader';
3
+ export declare function parseSLPK(data: ArrayBuffer, options?: SLPKLoaderOptions): Promise<Buffer>;
4
+ //# sourceMappingURL=parse-slpk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-slpk.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/parse-slpk.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAehE,wBAAsB,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,iBAAsB,mBA6CjF"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSLPK = void 0;
4
+ const cd_file_header_1 = require("../parse-zip/cd-file-header");
5
+ const local_file_header_1 = require("../parse-zip/local-file-header");
6
+ const slpk_archieve_1 = require("./slpk-archieve");
7
+ /**
8
+ * Returns one byte from the provided buffer at the provided position
9
+ * @param offset - position where to read
10
+ * @param buffer - buffer to read
11
+ * @returns one byte from the provided buffer at the provided position
12
+ */
13
+ const getByteAt = (offset, buffer) => {
14
+ return buffer.getUint8(buffer.byteOffset + offset);
15
+ };
16
+ async function parseSLPK(data, options = {}) {
17
+ const archive = new DataView(data);
18
+ const cdFileHeaderSignature = [80, 75, 1, 2];
19
+ const searchWindow = [
20
+ getByteAt(archive.byteLength - 1, archive),
21
+ getByteAt(archive.byteLength - 2, archive),
22
+ getByteAt(archive.byteLength - 3, archive),
23
+ undefined
24
+ ];
25
+ let hashCDOffset = 0;
26
+ // looking for the last record in the central directory
27
+ for (let i = archive.byteLength - 4; i > -1; i--) {
28
+ searchWindow[3] = searchWindow[2];
29
+ searchWindow[2] = searchWindow[1];
30
+ searchWindow[1] = searchWindow[0];
31
+ searchWindow[0] = getByteAt(i, archive);
32
+ if (searchWindow.every((val, index) => val === cdFileHeaderSignature[index])) {
33
+ hashCDOffset = i;
34
+ break;
35
+ }
36
+ }
37
+ const cdFileHeader = (0, cd_file_header_1.parseZipCDFileHeader)(hashCDOffset, archive);
38
+ const textDecoder = new TextDecoder();
39
+ if (textDecoder.decode(cdFileHeader.fileName) !== '@specialIndexFileHASH128@') {
40
+ throw new Error('No hash file in slpk');
41
+ }
42
+ const localFileHeader = (0, local_file_header_1.parseZipLocalFileHeader)(cdFileHeader.localHeaderOffset, archive);
43
+ const fileDataOffset = localFileHeader.fileDataOffset;
44
+ const hashFile = archive.buffer.slice(fileDataOffset, fileDataOffset + localFileHeader.compressedSize);
45
+ if (!hashFile) {
46
+ throw new Error('No hash file in slpk');
47
+ }
48
+ return await new slpk_archieve_1.SLPKArchive(data, hashFile).getFile(options.path ?? '');
49
+ }
50
+ exports.parseSLPK = parseSLPK;
@@ -0,0 +1,32 @@
1
+ /// <reference types="node" />
2
+ /**
3
+ * Class for handling information about slpk file
4
+ */
5
+ export declare class SLPKArchive {
6
+ slpkArchive: DataView;
7
+ hashArray: {
8
+ hash: Buffer;
9
+ offset: number;
10
+ }[];
11
+ constructor(slpkArchiveBuffer: ArrayBuffer, hashFile: ArrayBuffer);
12
+ /**
13
+ * Reads hash file from buffer and returns it in ready-to-use form
14
+ * @param hashFile - bufer containing hash file
15
+ * @returns Array containing file info
16
+ */
17
+ private parseHashFile;
18
+ /**
19
+ * Returns file with the given path from slpk archive
20
+ * @param path - path inside the slpk
21
+ * @param mode - currently only raw mode supported
22
+ * @returns buffer with ready to use file
23
+ */
24
+ getFile(path: string, mode?: 'http' | 'raw'): Promise<Buffer>;
25
+ /**
26
+ * Trying to get raw file data by adress
27
+ * @param path - path inside the archive
28
+ * @returns buffer with the raw file data
29
+ */
30
+ private getFileBytes;
31
+ }
32
+ //# sourceMappingURL=slpk-archieve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slpk-archieve.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-slpk/slpk-archieve.ts"],"names":[],"mappings":";AAiBA;;GAEG;AACH,qBAAa,WAAW;IACtB,WAAW,EAAE,QAAQ,CAAC;IACtB,SAAS,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;gBAChC,iBAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW;IAKjE;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAqBrB;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,KAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB1E;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAmBrB"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SLPKArchive = void 0;
7
+ const worker_utils_1 = require("@loaders.gl/worker-utils");
8
+ const md5_1 = __importDefault(require("md5"));
9
+ const compression_1 = require("@loaders.gl/compression");
10
+ const local_file_header_1 = require("../parse-zip/local-file-header");
11
+ /**
12
+ * Class for handling information about slpk file
13
+ */
14
+ class SLPKArchive {
15
+ constructor(slpkArchiveBuffer, hashFile) {
16
+ this.slpkArchive = new DataView(slpkArchiveBuffer);
17
+ this.hashArray = this.parseHashFile(hashFile);
18
+ }
19
+ /**
20
+ * Reads hash file from buffer and returns it in ready-to-use form
21
+ * @param hashFile - bufer containing hash file
22
+ * @returns Array containing file info
23
+ */
24
+ parseHashFile(hashFile) {
25
+ const hashFileBuffer = Buffer.from(hashFile);
26
+ const hashArray = [];
27
+ for (let i = 0; i < hashFileBuffer.buffer.byteLength; i = i + 24) {
28
+ const offsetBuffer = new DataView(hashFileBuffer.buffer.slice(hashFileBuffer.byteOffset + i + 16, hashFileBuffer.byteOffset + i + 24));
29
+ const offset = offsetBuffer.getUint32(offsetBuffer.byteOffset, true);
30
+ hashArray.push({
31
+ hash: Buffer.from(hashFileBuffer.subarray(hashFileBuffer.byteOffset + i, hashFileBuffer.byteOffset + i + 16)),
32
+ offset
33
+ });
34
+ }
35
+ return hashArray;
36
+ }
37
+ /**
38
+ * Returns file with the given path from slpk archive
39
+ * @param path - path inside the slpk
40
+ * @param mode - currently only raw mode supported
41
+ * @returns buffer with ready to use file
42
+ */
43
+ async getFile(path, mode = 'raw') {
44
+ if (mode === 'http') {
45
+ throw new Error('http mode is not supported');
46
+ }
47
+ const fileToDecompress = this.getFileBytes(`${path}.gz`);
48
+ if (fileToDecompress) {
49
+ const decompressedData = await (0, worker_utils_1.processOnWorker)(compression_1.CompressionWorker, fileToDecompress, {
50
+ compression: 'gzip',
51
+ operation: 'decompress',
52
+ _workerType: 'test',
53
+ gzip: {}
54
+ });
55
+ return decompressedData;
56
+ }
57
+ const fileWithoutCompression = this.getFileBytes(path);
58
+ if (fileWithoutCompression) {
59
+ return Promise.resolve(Buffer.from(fileWithoutCompression));
60
+ }
61
+ throw new Error('No such file in the archieve');
62
+ }
63
+ /**
64
+ * Trying to get raw file data by adress
65
+ * @param path - path inside the archive
66
+ * @returns buffer with the raw file data
67
+ */
68
+ getFileBytes(path) {
69
+ const nameHash = Buffer.from((0, md5_1.default)(path), 'hex');
70
+ const fileInfo = this.hashArray.find((val) => Buffer.compare(val.hash, nameHash) === 0);
71
+ if (!fileInfo) {
72
+ return undefined;
73
+ }
74
+ const localFileHeader = (0, local_file_header_1.parseZipLocalFileHeader)(this.slpkArchive.byteOffset + fileInfo?.offset, this.slpkArchive);
75
+ const compressedFile = this.slpkArchive.buffer.slice(localFileHeader.fileDataOffset, localFileHeader.fileDataOffset + localFileHeader.compressedSize);
76
+ return compressedFile;
77
+ }
78
+ }
79
+ exports.SLPKArchive = SLPKArchive;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * zip central directory file header info
3
+ * according to https://en.wikipedia.org/wiki/ZIP_(file_format)
4
+ */
5
+ export type ZipCDFileHeader = {
6
+ /**
7
+ * Compressed size
8
+ */
9
+ compressedSize: number;
10
+ /**
11
+ * Uncompressed size
12
+ */
13
+ uncompressedSize: number;
14
+ /**
15
+ * File name length
16
+ */
17
+ fileNameLength: number;
18
+ /**
19
+ * File name
20
+ */
21
+ fileName: ArrayBuffer;
22
+ /**
23
+ * Extra field offset
24
+ */
25
+ extraOffset: number;
26
+ /**
27
+ * Relative offset of local file header
28
+ */
29
+ localHeaderOffset: number;
30
+ };
31
+ /**
32
+ * Parses central directory file header of zip file
33
+ * @param headerOffset - offset in the archive where header starts
34
+ * @param buffer - buffer containing whole array
35
+ * @returns Info from the header
36
+ */
37
+ export declare const parseZipCDFileHeader: (headerOffset: number, buffer: DataView) => ZipCDFileHeader;
38
+ //# sourceMappingURL=cd-file-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cd-file-header.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-zip/cd-file-header.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,WAAW,CAAC;IACtB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,iBAAkB,MAAM,UAAU,QAAQ,KAAG,eAuD7E,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseZipCDFileHeader = void 0;
4
+ /**
5
+ * Parses central directory file header of zip file
6
+ * @param headerOffset - offset in the archive where header starts
7
+ * @param buffer - buffer containing whole array
8
+ * @returns Info from the header
9
+ */
10
+ const parseZipCDFileHeader = (headerOffset, buffer) => {
11
+ const offsets = {
12
+ CD_COMPRESSED_SIZE_OFFSET: 20,
13
+ CD_UNCOMPRESSED_SIZE_OFFSET: 24,
14
+ CD_FILE_NAME_LENGTH_OFFSET: 28,
15
+ CD_EXTRA_FIELD_LENGTH_OFFSET: 30,
16
+ CD_LOCAL_HEADER_OFFSET_OFFSET: 42,
17
+ CD_FILE_NAME_OFFSET: 46
18
+ };
19
+ const compressedSize = buffer.getUint32(headerOffset + offsets.CD_COMPRESSED_SIZE_OFFSET, true);
20
+ const uncompressedSize = buffer.getUint32(headerOffset + offsets.CD_UNCOMPRESSED_SIZE_OFFSET, true);
21
+ const fileNameLength = buffer.getUint16(headerOffset + offsets.CD_FILE_NAME_LENGTH_OFFSET, true);
22
+ const fileName = buffer.buffer.slice(headerOffset + offsets.CD_FILE_NAME_OFFSET, headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength);
23
+ const extraOffset = headerOffset + offsets.CD_FILE_NAME_OFFSET + fileNameLength;
24
+ const oldFormatOffset = buffer.getUint32(headerOffset + offsets.CD_LOCAL_HEADER_OFFSET_OFFSET, true);
25
+ let fileDataOffset = oldFormatOffset;
26
+ if (fileDataOffset === 0xffffffff) {
27
+ let offsetInZip64Data = 4;
28
+ // looking for info that might be also be in zip64 extra field
29
+ if (compressedSize === 0xffffffff) {
30
+ offsetInZip64Data += 8;
31
+ }
32
+ if (uncompressedSize === 0xffffffff) {
33
+ offsetInZip64Data += 8;
34
+ }
35
+ // getUint32 needs to be replaced with getBigUint64 for archieves bigger than 2gb
36
+ fileDataOffset = buffer.getUint32(extraOffset + offsetInZip64Data, true); // setting it to the one from zip64
37
+ }
38
+ const localHeaderOffset = fileDataOffset;
39
+ return {
40
+ compressedSize,
41
+ uncompressedSize,
42
+ fileNameLength,
43
+ fileName,
44
+ extraOffset,
45
+ localHeaderOffset
46
+ };
47
+ };
48
+ exports.parseZipCDFileHeader = parseZipCDFileHeader;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * zip local file header info
3
+ * according to https://en.wikipedia.org/wiki/ZIP_(file_format)
4
+ */
5
+ export type ZipLocalFileHeader = {
6
+ /**
7
+ * File name length
8
+ */
9
+ fileNameLength: number;
10
+ /**
11
+ * Extra field length
12
+ */
13
+ extraFieldLength: number;
14
+ /**
15
+ * Offset of the file data
16
+ */
17
+ fileDataOffset: number;
18
+ /**
19
+ * Compressed size
20
+ */
21
+ compressedSize: number;
22
+ };
23
+ /**
24
+ * Parses local file header of zip file
25
+ * @param headerOffset - offset in the archive where header starts
26
+ * @param buffer - buffer containing whole array
27
+ * @returns Info from the header
28
+ */
29
+ export declare const parseZipLocalFileHeader: (headerOffset: number, buffer: DataView) => ZipLocalFileHeader;
30
+ //# sourceMappingURL=local-file-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-file-header.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/parse-zip/local-file-header.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,iBACpB,MAAM,UACZ,QAAQ,KACf,kBAuBF,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseZipLocalFileHeader = void 0;
4
+ /**
5
+ * Parses local file header of zip file
6
+ * @param headerOffset - offset in the archive where header starts
7
+ * @param buffer - buffer containing whole array
8
+ * @returns Info from the header
9
+ */
10
+ const parseZipLocalFileHeader = (headerOffset, buffer) => {
11
+ const offsets = {
12
+ COMPRESSED_SIZE_OFFSET: 18,
13
+ FILE_NAME_LENGTH_OFFSET: 26,
14
+ EXTRA_FIELD_LENGTH_OFFSET: 28,
15
+ FILE_NAME_OFFSET: 30
16
+ };
17
+ const fileNameLength = buffer.getUint16(headerOffset + offsets.FILE_NAME_LENGTH_OFFSET, true);
18
+ const extraFieldLength = buffer.getUint16(headerOffset + offsets.EXTRA_FIELD_LENGTH_OFFSET, true);
19
+ const fileDataOffset = headerOffset + offsets.FILE_NAME_OFFSET + fileNameLength + extraFieldLength;
20
+ const compressedSize = buffer.getUint32(headerOffset + offsets.COMPRESSED_SIZE_OFFSET, true);
21
+ return {
22
+ fileNameLength,
23
+ extraFieldLength,
24
+ fileDataOffset,
25
+ compressedSize
26
+ };
27
+ };
28
+ exports.parseZipLocalFileHeader = parseZipLocalFileHeader;
@@ -1,9 +1,20 @@
1
- import { BoundingSphere } from '@math.gl/culling';
2
- import { Ellipsoid } from '@math.gl/geospatial';
3
- export function convertI3SObbToMbs(obb) {
4
- const halfSize = obb.halfSize;
5
- const centerCartesian = Ellipsoid.WGS84.cartographicToCartesian(obb.center);
6
- const sphere = new BoundingSphere().fromCornerPoints([centerCartesian[0] - halfSize[0], centerCartesian[1] - halfSize[1], centerCartesian[2] - halfSize[2]], [centerCartesian[0] + halfSize[0], centerCartesian[1] + halfSize[1], centerCartesian[2] + halfSize[2]]);
7
- return [...obb.center, sphere.radius];
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertI3SObbToMbs = void 0;
4
+ const culling_1 = require("@math.gl/culling");
5
+ const geospatial_1 = require("@math.gl/geospatial");
6
+ function convertI3SObbToMbs(obb) {
7
+ const halfSize = obb.halfSize;
8
+ const centerCartesian = geospatial_1.Ellipsoid.WGS84.cartographicToCartesian(obb.center);
9
+ const sphere = new culling_1.BoundingSphere().fromCornerPoints([
10
+ centerCartesian[0] - halfSize[0],
11
+ centerCartesian[1] - halfSize[1],
12
+ centerCartesian[2] - halfSize[2]
13
+ ], [
14
+ centerCartesian[0] + halfSize[0],
15
+ centerCartesian[1] + halfSize[1],
16
+ centerCartesian[2] + halfSize[2]
17
+ ]);
18
+ return [...obb.center, sphere.radius];
8
19
  }
9
- //# sourceMappingURL=convert-i3s-obb-to-mbs.js.map
20
+ exports.convertI3SObbToMbs = convertI3SObbToMbs;
@@ -0,0 +1,14 @@
1
+ import type { MeshAttribute } from '@loaders.gl/schema';
2
+ import type { I3STileOptions, I3STilesetOptions } from '../../types';
3
+ import { I3SLoaderOptions } from '../../i3s-loader';
4
+ /**
5
+ * Modify vertex colors array to visualize 3D objects in a attribute driven way
6
+ * @param colors - vertex colors attribute
7
+ * @param featureIds - feature Ids attribute
8
+ * @param tileOptions - tile - related options
9
+ * @param tilesetOptions - tileset-related options
10
+ * @param options - loader options
11
+ * @returns midified colors attribute
12
+ */
13
+ export declare function customizeColors(colors: MeshAttribute, featureIds: MeshAttribute, tileOptions: I3STileOptions, tilesetOptions: I3STilesetOptions, options?: I3SLoaderOptions): Promise<MeshAttribute>;
14
+ //# sourceMappingURL=customizeColors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customizeColors.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/customizeColors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAQ,cAAc,EAAE,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAI1E,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAGlD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,aAAa,EACzB,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,iBAAiB,EACjC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,aAAa,CAAC,CA8DxB"}