@loaders.gl/tiles 4.4.5 → 5.0.0-alpha.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.
Files changed (227) hide show
  1. package/LICENSE +14 -3
  2. package/README.md +110 -1
  3. package/dist/dist.dev.js +6588 -2057
  4. package/dist/dist.min.js +1 -1
  5. package/dist/image-set.d.ts +94 -0
  6. package/dist/image-set.d.ts.map +1 -0
  7. package/dist/image-set.js +243 -0
  8. package/dist/image-set.js.map +1 -0
  9. package/dist/index.cjs +6872 -2160
  10. package/dist/index.cjs.map +3 -4
  11. package/dist/index.d.ts +33 -9
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +18 -8
  14. package/dist/index.js.map +1 -1
  15. package/dist/point-cloud/point-cloud-tile.d.ts +47 -0
  16. package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -0
  17. package/dist/point-cloud/point-cloud-tile.js +70 -0
  18. package/dist/point-cloud/point-cloud-tile.js.map +1 -0
  19. package/dist/point-cloud/point-cloud-tileset.d.ts +131 -0
  20. package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
  21. package/dist/point-cloud/point-cloud-tileset.js +510 -0
  22. package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
  23. package/dist/point-cloud/types.d.ts +64 -0
  24. package/dist/point-cloud/types.d.ts.map +1 -0
  25. package/dist/point-cloud/types.js +5 -0
  26. package/dist/point-cloud/types.js.map +1 -0
  27. package/dist/raster-set.d.ts +113 -0
  28. package/dist/raster-set.d.ts.map +1 -0
  29. package/dist/raster-set.js +274 -0
  30. package/dist/raster-set.js.map +1 -0
  31. package/dist/tileset-2d/adapter.d.ts +38 -0
  32. package/dist/tileset-2d/adapter.d.ts.map +1 -0
  33. package/dist/tileset-2d/adapter.js +5 -0
  34. package/dist/tileset-2d/adapter.js.map +1 -0
  35. package/dist/tileset-2d/index.d.ts +7 -0
  36. package/dist/tileset-2d/index.d.ts.map +1 -0
  37. package/dist/tileset-2d/index.js +6 -0
  38. package/dist/tileset-2d/index.js.map +1 -0
  39. package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
  40. package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
  41. package/dist/tileset-2d/tile-2d-header.js +181 -0
  42. package/dist/tileset-2d/tile-2d-header.js.map +1 -0
  43. package/dist/tileset-2d/tileset-2d.d.ts +201 -0
  44. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
  45. package/dist/tileset-2d/tileset-2d.js +532 -0
  46. package/dist/tileset-2d/tileset-2d.js.map +1 -0
  47. package/dist/tileset-2d/types.d.ts +44 -0
  48. package/dist/tileset-2d/types.d.ts.map +1 -0
  49. package/dist/tileset-2d/types.js +5 -0
  50. package/dist/tileset-2d/types.js.map +1 -0
  51. package/dist/tileset-2d.d.ts +2 -0
  52. package/dist/tileset-2d.d.ts.map +1 -0
  53. package/dist/tileset-2d.js +5 -0
  54. package/dist/tileset-2d.js.map +1 -0
  55. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
  56. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
  57. package/dist/tileset-3d/common/indexed-archive-tileset-source.js +125 -0
  58. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
  59. package/dist/{tileset → tileset-3d/common}/tile-3d.d.ts +133 -29
  60. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
  61. package/dist/{tileset → tileset-3d/common}/tile-3d.js +282 -77
  62. package/dist/tileset-3d/common/tile-3d.js.map +1 -0
  63. package/dist/tileset-3d/common/tileset-3d.d.ts +317 -0
  64. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
  65. package/dist/tileset-3d/common/tileset-3d.js +807 -0
  66. package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
  67. package/dist/tileset-3d/common/tileset-cache.d.ts +29 -0
  68. package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
  69. package/dist/{tileset → tileset-3d/common}/tileset-cache.js +12 -4
  70. package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
  71. package/dist/tileset-3d/common/tileset-source.d.ts +204 -0
  72. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
  73. package/dist/tileset-3d/common/tileset-source.js +17 -0
  74. package/dist/tileset-3d/common/tileset-source.js.map +1 -0
  75. package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +15 -2
  76. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
  77. package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +30 -3
  78. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
  79. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +111 -0
  80. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
  81. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +340 -0
  82. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
  83. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +189 -0
  84. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
  85. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +510 -0
  86. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
  87. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +43 -0
  88. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
  89. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +119 -0
  90. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
  91. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
  92. package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +3 -0
  93. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
  94. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +99 -0
  95. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
  96. package/dist/tileset-3d/format-i3s/i3s-source.js +299 -0
  97. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
  98. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
  99. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +5 -2
  100. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
  101. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
  102. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
  103. package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +17 -23
  104. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
  105. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
  106. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
  107. package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +3 -0
  108. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
  109. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
  110. package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +1 -0
  111. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
  112. package/dist/tileset-3d/helpers/frame-state.d.ts +86 -0
  113. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
  114. package/dist/{tileset → tileset-3d}/helpers/frame-state.js +84 -9
  115. package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
  116. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
  117. package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
  118. package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +1 -1
  119. package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
  120. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +72 -0
  121. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
  122. package/dist/tileset-3d/helpers/tiles-3d-lod.js +257 -0
  123. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
  124. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
  125. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
  126. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
  127. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
  128. package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
  129. package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
  130. package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
  131. package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
  132. package/dist/tileset-3d/helpers/zoom.js.map +1 -0
  133. package/dist/types.d.ts +9 -0
  134. package/dist/types.d.ts.map +1 -1
  135. package/dist/types.js +3 -0
  136. package/dist/types.js.map +1 -1
  137. package/dist/utils/doubly-linked-list.d.ts.map +1 -1
  138. package/dist/utils/doubly-linked-list.js +1 -0
  139. package/dist/utils/doubly-linked-list.js.map +1 -1
  140. package/dist/utils/managed-array.d.ts.map +1 -1
  141. package/dist/utils/managed-array.js +1 -0
  142. package/dist/utils/managed-array.js.map +1 -1
  143. package/package.json +7 -6
  144. package/src/image-set.ts +328 -0
  145. package/src/index.ts +99 -9
  146. package/src/point-cloud/point-cloud-tile.ts +80 -0
  147. package/src/point-cloud/point-cloud-tileset.ts +713 -0
  148. package/src/point-cloud/types.ts +82 -0
  149. package/src/raster-set.ts +412 -0
  150. package/src/tileset-2d/adapter.ts +47 -0
  151. package/src/tileset-2d/index.ts +33 -0
  152. package/src/tileset-2d/tile-2d-header.ts +224 -0
  153. package/src/tileset-2d/tileset-2d.ts +716 -0
  154. package/src/tileset-2d/types.ts +39 -0
  155. package/src/tileset-2d.ts +5 -0
  156. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
  157. package/src/{tileset → tileset-3d/common}/tile-3d.ts +348 -93
  158. package/src/tileset-3d/common/tileset-3d.ts +1087 -0
  159. package/src/{tileset → tileset-3d/common}/tileset-cache.ts +16 -8
  160. package/src/tileset-3d/common/tileset-source.ts +255 -0
  161. package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +32 -4
  162. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +534 -0
  163. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +632 -0
  164. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +140 -0
  165. package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +4 -0
  166. package/src/tileset-3d/format-i3s/i3s-source.ts +366 -0
  167. package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +6 -2
  168. package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +19 -24
  169. package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +5 -1
  170. package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +2 -0
  171. package/src/tileset-3d/helpers/frame-state.ts +311 -0
  172. package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +2 -2
  173. package/src/tileset-3d/helpers/tiles-3d-lod.ts +370 -0
  174. package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
  175. package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
  176. package/src/types.ts +13 -0
  177. package/src/utils/doubly-linked-list.ts +2 -0
  178. package/src/utils/managed-array.ts +2 -0
  179. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +0 -7
  180. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
  181. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +0 -53
  182. package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
  183. package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
  184. package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
  185. package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
  186. package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
  187. package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
  188. package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
  189. package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
  190. package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
  191. package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
  192. package/dist/tileset/helpers/bounding-volume.js.map +0 -1
  193. package/dist/tileset/helpers/frame-state.d.ts +0 -28
  194. package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
  195. package/dist/tileset/helpers/frame-state.js.map +0 -1
  196. package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
  197. package/dist/tileset/helpers/i3s-lod.js.map +0 -1
  198. package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
  199. package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
  200. package/dist/tileset/helpers/tiles-3d-lod.js +0 -113
  201. package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
  202. package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
  203. package/dist/tileset/helpers/transform-utils.js.map +0 -1
  204. package/dist/tileset/helpers/zoom.d.ts.map +0 -1
  205. package/dist/tileset/helpers/zoom.js.map +0 -1
  206. package/dist/tileset/tile-3d.d.ts.map +0 -1
  207. package/dist/tileset/tile-3d.js.map +0 -1
  208. package/dist/tileset/tileset-3d.d.ts +0 -284
  209. package/dist/tileset/tileset-3d.d.ts.map +0 -1
  210. package/dist/tileset/tileset-3d.js +0 -814
  211. package/dist/tileset/tileset-3d.js.map +0 -1
  212. package/dist/tileset/tileset-cache.d.ts +0 -19
  213. package/dist/tileset/tileset-cache.d.ts.map +0 -1
  214. package/dist/tileset/tileset-cache.js.map +0 -1
  215. package/dist/tileset/tileset-traverser.d.ts.map +0 -1
  216. package/dist/tileset/tileset-traverser.js.map +0 -1
  217. package/src/tileset/format-3d-tiles/tileset-3d-traverser.ts +0 -63
  218. package/src/tileset/helpers/frame-state.ts +0 -183
  219. package/src/tileset/helpers/tiles-3d-lod.ts +0 -149
  220. package/src/tileset/tileset-3d.ts +0 -1037
  221. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
  222. /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
  223. /package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +0 -0
  224. /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
  225. /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
  226. /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
  227. /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
@@ -1,7 +1,9 @@
1
- import { load } from '@loaders.gl/core';
2
- import { TilesetTraverser } from "../tileset-traverser.js";
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { TilesetTraverser } from "../common/tileset-traverser.js";
3
5
  import { getLodStatus } from "../helpers/i3s-lod.js";
4
- import { Tile3D } from "../tile-3d.js";
6
+ import { Tile3D } from "../common/tile-3d.js";
5
7
  import { I3STileManager } from "./i3s-tile-manager.js";
6
8
  export class I3STilesetTraverser extends TilesetTraverser {
7
9
  _tileManager;
@@ -25,20 +27,15 @@ export class I3STilesetTraverser extends TilesetTraverser {
25
27
  const children = tile.header.children || [];
26
28
  // children which are already fetched and constructed as Tile3D instances
27
29
  const childTiles = tile.children;
28
- const tileset = tile.tileset;
29
30
  for (const child of children) {
30
31
  const extendedId = `${child.id}-${frameState.viewport.id}`;
31
32
  // if child tile is not fetched
32
- const childTile = childTiles && childTiles.find((t) => t.id === extendedId);
33
+ const childTile = childTiles && childTiles.find(t => t.id === extendedId);
33
34
  if (!childTile) {
34
- let request = () => this._loadTile(child.id, tileset);
35
+ const request = () => this._loadTile(tile, child.id, frameState);
35
36
  const cachedRequest = this._tileManager.find(extendedId);
36
37
  if (!cachedRequest) {
37
- // eslint-disable-next-line max-depth
38
- if (tileset.tileset.nodePages) {
39
- request = () => tileset.tileset.nodePagesTile.formTileFromNodePages(child.id);
40
- }
41
- this._tileManager.add(request, extendedId, (header) => this._onTileLoad(header, tile, extendedId), frameState);
38
+ this._tileManager.add(request, extendedId, header => this._onTileLoad(header, tile, extendedId), frameState);
42
39
  }
43
40
  else {
44
41
  // update frameNumber since it is still needed in current frame
@@ -52,18 +49,11 @@ export class I3STilesetTraverser extends TilesetTraverser {
52
49
  }
53
50
  return false;
54
51
  }
55
- async _loadTile(nodeId, tileset) {
56
- const { loader } = tileset;
57
- const nodeUrl = tileset.getTileUrl(`${tileset.url}/nodes/${nodeId}`);
58
- // load metadata
59
- const options = {
60
- ...tileset.loadOptions,
61
- i3s: {
62
- ...tileset.loadOptions.i3s,
63
- isTileHeader: true
64
- }
65
- };
66
- return await load(nodeUrl, loader, options);
52
+ async _loadTile(tile, nodeId, frameState) {
53
+ if (!tile.tileset.source.loadChildTileHeader) {
54
+ throw new Error('I3S source does not support child tile header loading');
55
+ }
56
+ return await tile.tileset.source.loadChildTileHeader(tile, nodeId, frameState);
67
57
  }
68
58
  /**
69
59
  * The callback to init Tile3D instance after loading the tile JSON
@@ -74,6 +64,10 @@ export class I3STilesetTraverser extends TilesetTraverser {
74
64
  * @return {void}
75
65
  */
76
66
  _onTileLoad(header, tile, extendedId) {
67
+ if (header instanceof Error) {
68
+ tile.tileset._onSourceError(header, tile);
69
+ return;
70
+ }
77
71
  // after child tile is fetched
78
72
  const childTile = new Tile3D(tile.tileset, header, tile, extendedId);
79
73
  tile.children.push(childTile);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-tileset-traverser.js","sourceRoot":"","sources":["../../../src/tileset-3d/format-i3s/i3s-tileset-traverser.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Tileset3D } from "../tileset-3d.js";
1
+ import type { Tileset3D } from "../common/tileset-3d.js";
2
2
  export declare function get3dTilesOptions(tileset: Tileset3D): {
3
3
  assetGltfUpAxis: 'X' | 'Y' | 'Z';
4
4
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3d-tiles-options.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/3d-tiles-options.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,SAAS,EAAC,gCAA6B;AAEpD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG;IAAC,eAAe,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;CAAC,CAIxF"}
@@ -1,3 +1,6 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  export function get3dTilesOptions(tileset) {
2
5
  return {
3
6
  assetGltfUpAxis: (tileset.asset && tileset.asset.gltfUpAxis) || 'Y'
@@ -0,0 +1 @@
1
+ {"version":3,"file":"3d-tiles-options.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/3d-tiles-options.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,MAAM,UAAU,iBAAiB,CAAC,OAAkB;IAClD,OAAO;QACL,eAAe,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG;KACpE,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounding-volume.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/bounding-volume.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAuBrE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,KAAA,EAAE,SAAS,KAAA,EAAE,MAAM,CAAC,KAAA,OAiB5E;AAED,yDAAyD;AACzD,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,oBAAoB,KAAA,EACpB,cAAc,EAAE,mBAAmB,GAAG,cAAc,GACnD,kBAAkB,CAuBpB"}
@@ -1,3 +1,4 @@
1
+ // SPDX-License-Identifier: Apache-2.0
1
2
  // This file is derived from the Cesium code base under Apache 2 license
2
3
  // See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
3
4
  /* eslint-disable */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounding-volume.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/bounding-volume.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { Tile3D } from "../common/tile-3d.js";
2
+ import { Vector3 } from '@math.gl/core';
3
+ import { CullingVolume } from '@math.gl/culling';
4
+ import { GeospatialViewport } from "../../types.js";
5
+ export type FrameState = {
6
+ camera: {
7
+ /** Camera position in WGS84 Cartesian meters. */
8
+ position: number[];
9
+ /** Normalized camera direction in WGS84 Cartesian coordinates. */
10
+ direction: number[];
11
+ /** Normalized camera up direction in WGS84 Cartesian coordinates. */
12
+ up: number[];
13
+ /** Camera position as `[longitude, latitude, height]`, with height in meters. */
14
+ cartographicPosition: [number, number, number];
15
+ /** Perspective vertical field of view in radians. */
16
+ verticalFieldOfView: number;
17
+ /** Elapsed seconds since camera position or direction last changed. */
18
+ timeSinceMovement: number;
19
+ };
20
+ viewport: GeospatialViewport;
21
+ topDownViewport: GeospatialViewport;
22
+ height: number;
23
+ cullingVolume: CullingVolume;
24
+ frameNumber: number;
25
+ sseDenominator: number;
26
+ /** View-dependent density used by perspective dynamic screen-space error for this traversal. */
27
+ dynamicScreenSpaceErrorDensity: number;
28
+ };
29
+ /** Optional camera and projection measurements supplied when constructing a frame state. */
30
+ export type GetFrameStateOptions = {
31
+ /** Elapsed seconds since camera position or direction last changed. */
32
+ timeSinceCameraMovement?: number;
33
+ };
34
+ /** Camera pose and timestamp retained between traversal frames. */
35
+ export type CameraMotionState = {
36
+ /** Last observed Earth-centered, Earth-fixed camera position. */
37
+ position: number[];
38
+ /** Last observed normalized Earth-centered, Earth-fixed camera direction. */
39
+ direction: number[];
40
+ /** Timestamp in milliseconds of the last observed pose change. */
41
+ lastMovementTime: number;
42
+ };
43
+ /** Updated camera state and elapsed stationary time for a traversal frame. */
44
+ export type CameraMotionUpdate = {
45
+ /** Camera pose to retain for the next traversal. */
46
+ state: CameraMotionState;
47
+ /** Elapsed seconds since the camera pose last changed. */
48
+ timeSinceMovement: number;
49
+ };
50
+ /**
51
+ * Extracts a frame state appropriate for tile culling from a structural deck.gl viewport.
52
+ *
53
+ * `options.timeSinceCameraMovement` can be supplied by a caller that retains camera pose across
54
+ * calls. It defaults to a stationary camera so standalone callers do not defer requests.
55
+ *
56
+ * @param viewport - Geospatial viewport supplying camera and projection measurements.
57
+ * @param frameNumber - Current tileset traversal frame number.
58
+ * @param options - Additional camera and projection measurements for traversal.
59
+ * @returns Frame state used for visibility, SSE, and request-priority calculations.
60
+ */
61
+ export declare function getFrameState(viewport: GeospatialViewport, frameNumber: number, options?: GetFrameStateOptions): FrameState;
62
+ /**
63
+ * Updates retained camera motion state and calculates how long the current pose has been stable.
64
+ *
65
+ * The first observation is treated as stationary so initial tileset loading is never delayed.
66
+ * Position and direction are both compared because orbiting in place changes request relevance
67
+ * without necessarily changing the viewport's camera position.
68
+ *
69
+ * @param previousState - Pose retained from the preceding traversal for this viewport.
70
+ * @param position - Current Earth-centered, Earth-fixed camera position.
71
+ * @param direction - Current normalized Earth-centered, Earth-fixed camera direction.
72
+ * @param currentTime - Current monotonic-enough wall-clock time in milliseconds.
73
+ * @returns Updated pose and elapsed stationary time.
74
+ */
75
+ export declare function updateCameraMotionState(previousState: CameraMotionState | undefined, position: number[] | Vector3, direction: number[] | Vector3, currentTime: number): CameraMotionUpdate;
76
+ /**
77
+ * Limit `tiles` array length with `maximumTilesSelected` number.
78
+ * The criteria for this filtering is distance of a tile center
79
+ * to the `frameState.viewport`'s longitude and latitude
80
+ * @param tiles - tiles array to filter
81
+ * @param frameState - frameState to calculate distances
82
+ * @param maximumTilesSelected - maximal amount of tiles in the output array
83
+ * @returns new tiles array
84
+ */
85
+ export declare function limitSelectedTiles(tiles: Tile3D[], frameState: FrameState, maximumTilesSelected: number): [Tile3D[], Tile3D[]];
86
+ //# sourceMappingURL=frame-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-state.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/frame-state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAC,6BAA0B;AAC9C,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,aAAa,EAAQ,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAC,kBAAkB,EAAW,uBAAoB;AAEzD,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE;QACN,iDAAiD;QACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,kEAAkE;QAClE,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,qEAAqE;QACrE,EAAE,EAAE,MAAM,EAAE,CAAC;QACb,iFAAiF;QACjF,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/C,qDAAqD;QACrD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,uEAAuE;QACvE,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,eAAe,EAAE,kBAAkB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,gGAAgG;IAChG,8BAA8B,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF,4FAA4F;AAC5F,MAAM,MAAM,oBAAoB,GAAG;IACjC,uEAAuE;IACvE,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oDAAoD;IACpD,KAAK,EAAE,iBAAiB,CAAC;IACzB,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAeF;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,oBAAyB,GACjC,UAAU,CAiFZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,iBAAiB,GAAG,SAAS,EAC5C,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,EAC5B,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,EAC7B,WAAW,EAAE,MAAM,GAClB,kBAAkB,CA6BpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,UAAU,EACtB,oBAAoB,EAAE,MAAM,GAC3B,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAyBtB"}
@@ -1,8 +1,13 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { Vector3 } from '@math.gl/core';
2
5
  import { CullingVolume, Plane } from '@math.gl/culling';
3
6
  import { Ellipsoid } from '@math.gl/geospatial';
4
7
  const scratchVector = new Vector3();
5
8
  const scratchPosition = new Vector3();
9
+ const CAMERA_POSITION_EPSILON = 1e-5;
10
+ const CAMERA_DIRECTION_EPSILON = 1e-7;
6
11
  const cullingVolume = new CullingVolume([
7
12
  new Plane(),
8
13
  new Plane(),
@@ -11,12 +16,22 @@ const cullingVolume = new CullingVolume([
11
16
  new Plane(),
12
17
  new Plane()
13
18
  ]);
14
- // Extracts a frame state appropriate for tile culling from a deck.gl viewport
15
- // TODO - this could likely be generalized and merged back into deck.gl for other culling scenarios
16
- export function getFrameState(viewport, frameNumber) {
19
+ /**
20
+ * Extracts a frame state appropriate for tile culling from a structural deck.gl viewport.
21
+ *
22
+ * `options.timeSinceCameraMovement` can be supplied by a caller that retains camera pose across
23
+ * calls. It defaults to a stationary camera so standalone callers do not defer requests.
24
+ *
25
+ * @param viewport - Geospatial viewport supplying camera and projection measurements.
26
+ * @param frameNumber - Current tileset traversal frame number.
27
+ * @param options - Additional camera and projection measurements for traversal.
28
+ * @returns Frame state used for visibility, SSE, and request-priority calculations.
29
+ */
30
+ export function getFrameState(viewport, frameNumber, options = {}) {
17
31
  // Traverse and and request. Update _selectedTiles so that we know what to render.
18
32
  // Traverse and and request. Update _selectedTiles so that we know what to render.
19
- const { cameraDirection, cameraUp, height } = viewport;
33
+ const { cameraUp, height } = viewport;
34
+ const cameraDirection = viewport.cameraDirection;
20
35
  const { metersPerUnit } = viewport.distanceScales;
21
36
  // TODO - Ellipsoid.eastNorthUpToFixedFrame() breaks on raw array, create a Vector.
22
37
  // TODO - Ellipsoid.eastNorthUpToFixedFrame() takes a cartesian, is that intuitive?
@@ -25,9 +40,26 @@ export function getFrameState(viewport, frameNumber) {
25
40
  const cameraPositionCartographic = viewport.unprojectPosition(viewport.cameraPosition);
26
41
  const cameraPositionCartesian = Ellipsoid.WGS84.cartographicToCartesian(cameraPositionCartographic, new Vector3());
27
42
  // These should still be normalized as the transform has scale 1 (goes from meters to meters)
28
- const cameraDirectionCartesian = new Vector3(
29
- // @ts-ignore
30
- enuToFixedTransform.transformAsVector(new Vector3(cameraDirection).scale(metersPerUnit))).normalize();
43
+ let cameraDirectionCartesian;
44
+ if (cameraDirection) {
45
+ cameraDirectionCartesian = new Vector3(
46
+ // @ts-ignore
47
+ enuToFixedTransform.transformAsVector(new Vector3(cameraDirection).scale(metersPerUnit))).normalize();
48
+ }
49
+ else {
50
+ // Concrete deck.gl viewports do not expose the legacy structural cameraDirection field.
51
+ // The near-plane center is on the view axis, so its world-space direction is equivalent and
52
+ // works for perspective foveation without coupling loaders.gl to deck.gl internals.
53
+ // getFrustumPlanes is required by traversal but omitted from the minimal structural Viewport
54
+ // type for compatibility with existing application-side declarations.
55
+ // @ts-expect-error Runtime geospatial viewports provide getFrustumPlanes.
56
+ const nearPlane = viewport.getFrustumPlanes().near;
57
+ const nearCenterCommon = closestPointOnPlane(nearPlane, viewport.cameraPosition);
58
+ const nearCenterCartesian = worldToCartesian(viewport, nearCenterCommon);
59
+ cameraDirectionCartesian = new Vector3(nearCenterCartesian)
60
+ .subtract(cameraPositionCartesian)
61
+ .normalize();
62
+ }
31
63
  const cameraUpCartesian = new Vector3(
32
64
  // @ts-ignore
33
65
  enuToFixedTransform.transformAsVector(new Vector3(cameraUp).scale(metersPerUnit))).normalize();
@@ -49,14 +81,57 @@ export function getFrameState(viewport, frameNumber) {
49
81
  camera: {
50
82
  position: cameraPositionCartesian,
51
83
  direction: cameraDirectionCartesian,
52
- up: cameraUpCartesian
84
+ up: cameraUpCartesian,
85
+ cartographicPosition: cameraPositionCartographic,
86
+ verticalFieldOfView: Number.isFinite(viewport.fovy) && Number(viewport.fovy) > 0
87
+ ? (Number(viewport.fovy) * Math.PI) / 180
88
+ : Math.PI / 3,
89
+ timeSinceMovement: options.timeSinceCameraMovement ?? Number.POSITIVE_INFINITY
53
90
  },
54
91
  viewport,
55
92
  topDownViewport,
56
93
  height,
57
94
  cullingVolume,
58
95
  frameNumber, // TODO: This can be the same between updates, what number is unique for between updates?
59
- sseDenominator: 1.15 // Assumes fovy = 60 degrees
96
+ sseDenominator: 1.15, // Assumes fovy = 60 degrees
97
+ // Tileset3D fills this immediately before traversal because it depends on the root volume.
98
+ dynamicScreenSpaceErrorDensity: 0
99
+ };
100
+ }
101
+ /**
102
+ * Updates retained camera motion state and calculates how long the current pose has been stable.
103
+ *
104
+ * The first observation is treated as stationary so initial tileset loading is never delayed.
105
+ * Position and direction are both compared because orbiting in place changes request relevance
106
+ * without necessarily changing the viewport's camera position.
107
+ *
108
+ * @param previousState - Pose retained from the preceding traversal for this viewport.
109
+ * @param position - Current Earth-centered, Earth-fixed camera position.
110
+ * @param direction - Current normalized Earth-centered, Earth-fixed camera direction.
111
+ * @param currentTime - Current monotonic-enough wall-clock time in milliseconds.
112
+ * @returns Updated pose and elapsed stationary time.
113
+ */
114
+ export function updateCameraMotionState(previousState, position, direction, currentTime) {
115
+ const positionArray = Array.from(position);
116
+ const directionArray = Array.from(direction);
117
+ const positionChanged = previousState
118
+ ? positionArray.length !== previousState.position.length ||
119
+ positionArray.some((value, index) => Math.abs(value - previousState.position[index]) > CAMERA_POSITION_EPSILON)
120
+ : false;
121
+ const directionChanged = previousState
122
+ ? directionArray.length !== previousState.direction.length ||
123
+ directionArray.some((value, index) => Math.abs(value - previousState.direction[index]) > CAMERA_DIRECTION_EPSILON)
124
+ : false;
125
+ const lastMovementTime = positionChanged || directionChanged
126
+ ? currentTime
127
+ : (previousState?.lastMovementTime ?? Number.NEGATIVE_INFINITY);
128
+ return {
129
+ state: {
130
+ position: positionArray,
131
+ direction: directionArray,
132
+ lastMovementTime
133
+ },
134
+ timeSinceMovement: Math.max((currentTime - lastMovementTime) / 1000, 0)
60
135
  };
61
136
  }
62
137
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-state.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/frame-state.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Tile3D } from "../tile-3d.js";
1
+ import { Tile3D } from "../common/tile-3d.js";
2
2
  import { FrameState } from "./frame-state.js";
3
3
  /**
4
4
  * For the maxScreenThreshold error metric, maxError means that you should replace the node with it's children
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-lod.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/i3s-lod.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,MAAM,EAAC,6BAA0B;AACzC,OAAO,EAAC,UAAU,EAAC,yBAAsB;AAUzC;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAczF;AAED;;;;;GAKG;AAEH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CA6C/E"}
@@ -20,7 +20,7 @@ const cartesianToEnuMatrix = new Matrix4();
20
20
  * @returns
21
21
  */
22
22
  export function getLodStatus(tile, frameState) {
23
- if (tile.lodMetricValue === 0 || isNaN(tile.lodMetricValue)) {
23
+ if (tile.lodMetricValue === 0 || Number.isNaN(tile.lodMetricValue)) {
24
24
  return 'DIG';
25
25
  }
26
26
  const screenSize = 2 * getProjectedRadius(tile, frameState);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-lod.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/i3s-lod.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { Matrix4 } from '@math.gl/core';
2
+ import type { Tile3D } from "../common/tile-3d.js";
3
+ import type { FrameState } from "./frame-state.js";
4
+ /** Options that control the perspective dynamic screen-space error optimization. */
5
+ export type DynamicScreenSpaceErrorOptions = {
6
+ /** Base fog density used to reduce distant, horizon-facing screen-space error. */
7
+ dynamicScreenSpaceErrorDensity: number;
8
+ /** Maximum number of logical pixels subtracted from perspective screen-space error. */
9
+ dynamicScreenSpaceErrorFactor: number;
10
+ /** Fraction of the tileset height at which the optimization begins to fade. */
11
+ dynamicScreenSpaceErrorHeightFalloff: number;
12
+ };
13
+ /**
14
+ * Refreshes the root transform before calculating transform-dependent dynamic SSE density.
15
+ *
16
+ * Traversal normally updates transforms while visiting tile visibility, but density is calculated
17
+ * immediately before traversal. Performing the root update at that earlier boundary keeps local
18
+ * box and sphere height falloff synchronized with an animated tileset model matrix in the same
19
+ * frame. {@link Tile3D._updateTransform} also recalculates world-space geometric error from its raw
20
+ * source value, so repeated calls do not compound scale.
21
+ *
22
+ * @param root - Root tile whose computed transform feeds dynamic SSE height calculations.
23
+ * @param modelMatrix - Current tileset-to-world transform for this frame.
24
+ */
25
+ export declare function updateRootTransformForDynamicScreenSpaceError(root: Tile3D, modelMatrix: Matrix4): void;
26
+ /**
27
+ * Calculates the effective dynamic screen-space error density for one viewport and frame.
28
+ *
29
+ * Dynamic SSE is a perspective-only optimization for street-level views. It reduces refinement
30
+ * for distant tiles near the horizon, where loading every geometric detail is expensive and has
31
+ * limited visual benefit. Density fades to zero as the camera rises above the tileset or points
32
+ * vertically. The returned value belongs to the supplied frame state; callers must not reuse it
33
+ * for another viewport because camera height and direction are view dependent.
34
+ *
35
+ * @param root - Root tile whose transform and source bounding volume define the tileset space.
36
+ * @param frameState - Current camera measurements in WGS84 and logical viewport space.
37
+ * @param options - Dynamic SSE density and height-falloff controls.
38
+ * @returns Effective fog density for this viewport, or zero when it cannot be calculated.
39
+ */
40
+ export declare function calculateDynamicScreenSpaceErrorDensity(root: Tile3D, frameState: FrameState, options: DynamicScreenSpaceErrorOptions): number;
41
+ /**
42
+ * Calculates exponential fog strength for a camera distance and density.
43
+ * @param distanceToCamera - Distance from the camera to the tile bounding volume in meters.
44
+ * @param density - Effective dynamic SSE density in inverse meters.
45
+ * @returns Unitless strength in the inclusive range from zero to one.
46
+ */
47
+ export declare function getDynamicScreenSpaceErrorFog(distanceToCamera: number, density: number): number;
48
+ /**
49
+ * Calculates the perspective SSE reduction for a tile.
50
+ * @param distanceToCamera - Distance from the camera to the tile bounding volume in meters.
51
+ * @param density - View-dependent fog density calculated for the current frame.
52
+ * @param factor - Maximum reduction in logical/CSS pixels.
53
+ * @returns Number of logical pixels to subtract from perspective SSE.
54
+ */
55
+ export declare function getDynamicScreenSpaceError(distanceToCamera: number, density: number, factor: number): number;
56
+ /**
57
+ * Calculates 3D Tiles screen-space error (SSE) for the current projection.
58
+ *
59
+ * Perspective SSE projects the tile's world-space geometric error through the existing viewport
60
+ * height and frustum denominator. Dynamic SSE may then reduce distant horizon refinement using
61
+ * the density calculated specifically for this frame and viewport. Orthographic projection has
62
+ * no perspective distance falloff, so its error is divided directly by the viewport's world-space
63
+ * meters per logical pixel and is never adjusted by perspective dynamic SSE.
64
+ *
65
+ * @param tile - Tile containing the transform-scaled geometric error and camera distance.
66
+ * @param frameState - Current camera and viewport measurements.
67
+ * @param useParentLodMetric - Whether request prioritization should use the parent's error.
68
+ * @param viewportHeightFraction - Fraction of viewport height represented by the priority pass.
69
+ * @returns Estimated error in logical/CSS pixels.
70
+ */
71
+ export declare function getTiles3DScreenSpaceError(tile: Tile3D, frameState: FrameState, useParentLodMetric: boolean, viewportHeightFraction?: number): number;
72
+ //# sourceMappingURL=tiles-3d-lod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiles-3d-lod.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/tiles-3d-lod.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,OAAO,EAA6B,MAAM,eAAe,CAAC;AAElE,OAAO,KAAK,EAAC,MAAM,EAAC,6BAA0B;AAC9C,OAAO,KAAK,EAAC,UAAU,EAAC,yBAAsB;AAE9C,oFAAoF;AACpF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,kFAAkF;IAClF,8BAA8B,EAAE,MAAM,CAAC;IACvC,uFAAuF;IACvF,6BAA6B,EAAE,MAAM,CAAC;IACtC,+EAA+E;IAC/E,oCAAoC,EAAE,MAAM,CAAC;CAC9C,CAAC;AA2BF;;;;;;;;;;;GAWG;AACH,wBAAgB,6CAA6C,CAC3D,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,GACnB,IAAI,CAEN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,8BAA8B,GACtC,MAAM,CAuCR;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG/F;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,MAAM,CAMR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,OAAO,EAC3B,sBAAsB,SAAI,GACzB,MAAM,CAwCR"}