@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
@@ -0,0 +1,60 @@
1
+ import type { CoreAPI, LoaderOptions, LoaderWithParser, ReadableFile } from '@loaders.gl/loader-utils';
2
+ import type { TilesetSourceResolver } from "./tileset-source.js";
3
+ /** Options for {@link IndexedArchiveTilesetSource}. */
4
+ export type IndexedArchiveTilesetSourceOptions<ArchiveT> = {
5
+ /** Archive URL or Blob. */
6
+ data: string | Blob;
7
+ /** Filename to expose for Blob inputs that do not provide a name. */
8
+ fallbackFilename: string;
9
+ /** Archive file extension used as the URL path marker. */
10
+ archiveExtension: string;
11
+ /** Path to the root metadata resource inside the archive. */
12
+ rootPath: string;
13
+ /** Optional mode passed when loading the root metadata resource. */
14
+ rootMode?: string;
15
+ /** Parses an opened readable file into an indexed archive object. */
16
+ parseArchive: (file: ReadableFile) => Promise<ArchiveT>;
17
+ /** Loads one resource from the parsed archive. */
18
+ getFile: (archive: ArchiveT, pathInArchive: string, mode?: string) => Promise<ArrayBuffer>;
19
+ /** Returns the core API used for local file loading and nested resource parsing. */
20
+ getCoreApi: () => CoreAPI | undefined;
21
+ /** Error message to throw when the core API is required but unavailable. */
22
+ missingCoreApiMessage: string;
23
+ };
24
+ /**
25
+ * Tileset source resolver backed by an indexed archive such as 3TZ or SLPK.
26
+ *
27
+ * The source owns archive opening, archive caching, path resolution, and archive-backed `fetch`
28
+ * injection. Format-specific parsing and file lookup stay in the owning format module.
29
+ */
30
+ export declare class IndexedArchiveTilesetSource<ArchiveT> implements TilesetSourceResolver {
31
+ /** URL exposed to the tileset source that owns this archive source. */
32
+ readonly sourceUrl: string;
33
+ private readonly options;
34
+ private archivePromise?;
35
+ /**
36
+ * Creates an indexed archive tileset source.
37
+ * @param options Archive source options
38
+ */
39
+ constructor(options: IndexedArchiveTilesetSourceOptions<ArchiveT>);
40
+ /**
41
+ * Loads and parses the archive root metadata resource.
42
+ * @param url Root URL, ignored because the archive root path is configured explicitly
43
+ * @param loader Loader used to parse the root metadata
44
+ * @param loadOptions Loader options forwarded to parsing
45
+ */
46
+ loadRoot<DataT>(url: string, loader: LoaderWithParser<DataT>, loadOptions: LoaderOptions): Promise<DataT>;
47
+ /**
48
+ * Loads and parses an archive resource relative to a requesting resource URL.
49
+ * @param url Resource URL
50
+ * @param loader Loader used to parse the resource
51
+ * @param loadOptions Loader options forwarded to parsing
52
+ */
53
+ loadResource<DataT>(url: string, loader: LoaderWithParser<DataT>, loadOptions: LoaderOptions): Promise<DataT>;
54
+ private parseArchiveResource;
55
+ private createArchiveFetch;
56
+ private loadFile;
57
+ private openArchiveReadableFile;
58
+ private resolveArchivePath;
59
+ }
60
+ //# sourceMappingURL=indexed-archive-tileset-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed-archive-tileset-source.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/common/indexed-archive-tileset-source.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAC,qBAAqB,EAAC,4BAAyB;AAE5D,uDAAuD;AACvD,MAAM,MAAM,kCAAkC,CAAC,QAAQ,IAAI;IACzD,2BAA2B;IAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,kDAAkD;IAClD,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3F,oFAAoF;IACpF,UAAU,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;IACtC,4EAA4E;IAC5E,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,2BAA2B,CAAC,QAAQ,CAAE,YAAW,qBAAqB;IACjF,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,cAAc,CAAC,CAAoB;IAE3C;;;OAGG;gBACS,OAAO,EAAE,kCAAkC,CAAC,QAAQ,CAAC;IAKjE;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC/B,WAAW,EAAE,aAAa,GACzB,OAAO,CAAC,KAAK,CAAC;IAUjB;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EACtB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC/B,WAAW,EAAE,aAAa,GACzB,OAAO,CAAC,KAAK,CAAC;YAKH,oBAAoB;IA+BlC,OAAO,CAAC,kBAAkB;YAUZ,QAAQ;YAQR,uBAAuB;IAkBrC,OAAO,CAAC,kBAAkB;CA8B3B"}
@@ -0,0 +1,125 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { BlobFile, HttpFile, path } from '@loaders.gl/loader-utils';
5
+ /**
6
+ * Tileset source resolver backed by an indexed archive such as 3TZ or SLPK.
7
+ *
8
+ * The source owns archive opening, archive caching, path resolution, and archive-backed `fetch`
9
+ * injection. Format-specific parsing and file lookup stay in the owning format module.
10
+ */
11
+ export class IndexedArchiveTilesetSource {
12
+ /** URL exposed to the tileset source that owns this archive source. */
13
+ sourceUrl;
14
+ options;
15
+ archivePromise;
16
+ /**
17
+ * Creates an indexed archive tileset source.
18
+ * @param options Archive source options
19
+ */
20
+ constructor(options) {
21
+ this.options = options;
22
+ this.sourceUrl = getArchiveSourceUrl(options.data, options.fallbackFilename);
23
+ }
24
+ /**
25
+ * Loads and parses the archive root metadata resource.
26
+ * @param url Root URL, ignored because the archive root path is configured explicitly
27
+ * @param loader Loader used to parse the root metadata
28
+ * @param loadOptions Loader options forwarded to parsing
29
+ */
30
+ async loadRoot(url, loader, loadOptions) {
31
+ return await this.parseArchiveResource(url, this.options.rootPath, loader, loadOptions, this.options.rootMode);
32
+ }
33
+ /**
34
+ * Loads and parses an archive resource relative to a requesting resource URL.
35
+ * @param url Resource URL
36
+ * @param loader Loader used to parse the resource
37
+ * @param loadOptions Loader options forwarded to parsing
38
+ */
39
+ async loadResource(url, loader, loadOptions) {
40
+ const pathInArchive = this.resolveArchivePath(url, url);
41
+ return await this.parseArchiveResource(url, pathInArchive, loader, loadOptions);
42
+ }
43
+ async parseArchiveResource(resourceUrl, pathInArchive, loader, loadOptions, mode) {
44
+ const coreApi = this.options.getCoreApi();
45
+ if (!coreApi) {
46
+ throw new Error(this.options.missingCoreApiMessage);
47
+ }
48
+ const data = await this.loadFile(pathInArchive, mode);
49
+ const archiveFetch = this.createArchiveFetch(resourceUrl);
50
+ return (await coreApi.parse(data, loader, {
51
+ ...loadOptions,
52
+ fetch: archiveFetch
53
+ }, {
54
+ url: resourceUrl,
55
+ fetch: archiveFetch,
56
+ _parse: coreApi.parse,
57
+ loaders: [loader],
58
+ coreApi
59
+ }));
60
+ }
61
+ createArchiveFetch(contextUrl) {
62
+ return async (input) => {
63
+ const requestUrl = typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
64
+ const pathInArchive = this.resolveArchivePath(requestUrl, contextUrl);
65
+ const data = await this.loadFile(pathInArchive);
66
+ return new Response(data, { status: 200 });
67
+ };
68
+ }
69
+ async loadFile(pathInArchive, mode) {
70
+ this.archivePromise ||= this.openArchiveReadableFile().then(file => this.options.parseArchive(file));
71
+ const archive = await this.archivePromise;
72
+ return await this.options.getFile(archive, pathInArchive, mode);
73
+ }
74
+ async openArchiveReadableFile() {
75
+ const { data } = this.options;
76
+ if (typeof data !== 'string') {
77
+ return new BlobFile(data);
78
+ }
79
+ if (/^https?:\/\//i.test(data)) {
80
+ return new HttpFile(data);
81
+ }
82
+ const coreApi = this.options.getCoreApi();
83
+ if (!coreApi) {
84
+ throw new Error(this.options.missingCoreApiMessage);
85
+ }
86
+ const response = await coreApi.fetchFile(data);
87
+ return new BlobFile(await response.arrayBuffer());
88
+ }
89
+ resolveArchivePath(request, baseUrl) {
90
+ const requestWithoutQuery = stripQueryString(request);
91
+ const archiveRoot = stripQueryString(this.sourceUrl);
92
+ const baseWithoutQuery = stripQueryString(baseUrl);
93
+ const basePath = baseWithoutQuery === archiveRoot ? archiveRoot : path.dirname(baseWithoutQuery);
94
+ const markerExpression = new RegExp(`\\.${this.options.archiveExtension}/(.*)$`, 'i');
95
+ const markerMatch = requestWithoutQuery.match(markerExpression);
96
+ if (markerMatch?.[1]) {
97
+ return markerMatch[1];
98
+ }
99
+ const isAbsoluteRequest = /^[a-z][a-z0-9+.-]*:/i.test(requestWithoutQuery) || requestWithoutQuery.startsWith('/');
100
+ const absoluteRequest = requestWithoutQuery.startsWith(archiveRoot)
101
+ ? requestWithoutQuery
102
+ : baseWithoutQuery === archiveRoot && !isAbsoluteRequest
103
+ ? `${archiveRoot}/${requestWithoutQuery}`
104
+ : path.resolve(basePath, requestWithoutQuery);
105
+ if (absoluteRequest === archiveRoot) {
106
+ return '';
107
+ }
108
+ if (absoluteRequest.startsWith(`${archiveRoot}/`)) {
109
+ return absoluteRequest.slice(archiveRoot.length + 1);
110
+ }
111
+ return absoluteRequest.replace(/^\/+/, '');
112
+ }
113
+ }
114
+ function getArchiveSourceUrl(data, fallbackFilename) {
115
+ if (typeof data === 'string') {
116
+ return data;
117
+ }
118
+ const fileName = 'name' in data && typeof data.name === 'string' && data.name ? data.name : fallbackFilename;
119
+ return `memory://${fileName}`;
120
+ }
121
+ function stripQueryString(url) {
122
+ const queryIndex = url.indexOf('?');
123
+ return queryIndex >= 0 ? url.slice(0, queryIndex) : url;
124
+ }
125
+ //# sourceMappingURL=indexed-archive-tileset-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexed-archive-tileset-source.js","sourceRoot":"","sources":["../../../src/tileset-3d/common/indexed-archive-tileset-source.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { Matrix4 } from '@math.gl/core';
2
2
  import type { Tileset3D } from "./tileset-3d.js";
3
- import type { DoublyLinkedListNode } from "../utils/doubly-linked-list-node.js";
4
- import { TILE_REFINEMENT } from "../constants.js";
5
- import { FrameState } from "./helpers/frame-state.js";
6
- import { CartographicBounds } from "./helpers/bounding-volume.js";
3
+ import type { DoublyLinkedListNode } from "../../utils/doubly-linked-list-node.js";
4
+ import { TILE_REFINEMENT } from "../../constants.js";
5
+ import type { TileChildrenLoadResult, TileContentLoadResult } from "./tileset-source.js";
6
+ import { FrameState } from "../helpers/frame-state.js";
7
+ import { CartographicBounds } from "../helpers/bounding-volume.js";
7
8
  import { TilesetTraverser } from "./tileset-traverser.js";
8
9
  /**
9
10
  * @param tileset - Tileset3D instance
@@ -18,6 +19,8 @@ export type Tile3DProps = {
18
19
  parentHeader: Tile3D;
19
20
  extendedId: string;
20
21
  };
22
+ /** Lifecycle of a source-managed lazy child-header group. */
23
+ export type TileChildrenState = 'unloaded' | 'loading' | 'ready' | 'failed';
21
24
  /**
22
25
  * A Tile3DHeader represents a tile as Tileset3D. When a tile is first created, its content is not loaded;
23
26
  * the content is loaded on-demand when needed based on the view.
@@ -33,9 +36,17 @@ export declare class Tile3D {
33
36
  type: string;
34
37
  contentUrl: string;
35
38
  /** Different refinement algorithms used by I3S and 3D tiles */
36
- lodMetricType: 'geometricError' | 'maxScreenThreshold';
37
- /** The error, in meters, introduced if this tile is rendered and its children are not. */
39
+ lodMetricType: string;
40
+ /**
41
+ * The world-space geometric error, in meters, introduced if this tile is rendered and its
42
+ * children are not. For I3S this stores the format's unscaled screen-threshold metric instead.
43
+ */
38
44
  lodMetricValue: number;
45
+ /**
46
+ * The source LOD metric before applying the tile's computed transform. Keeping the source value
47
+ * separate ensures transform updates never compound an already-scaled geometric error.
48
+ */
49
+ private _unscaledLodMetricValue;
39
50
  /** @todo math.gl is not exporting BoundingVolume base type? */
40
51
  boundingVolume: any;
41
52
  /**
@@ -47,6 +58,8 @@ export declare class Tile3D {
47
58
  gpuMemoryUsageInBytes: number;
48
59
  /** The tile's children - an array of Tile3D objects. */
49
60
  children: Tile3D[];
61
+ /** Current lifecycle state for a lazy implicit subtree rooted at this tile. */
62
+ childrenState: TileChildrenState;
50
63
  depth: number;
51
64
  viewportIds: any[];
52
65
  transform: Matrix4;
@@ -64,10 +77,20 @@ export declare class Tile3D {
64
77
  private _frameNumber;
65
78
  private _expireDate;
66
79
  private _expiredContent;
80
+ /** In-flight source request shared by repeated traversal frames. */
81
+ private _childrenPromise;
67
82
  private _boundingBox?;
68
83
  /** updated every frame for tree traversal and rendering optimizations: */
69
84
  _distanceToCamera: number;
70
85
  _screenSpaceError: number;
86
+ /** SSE calculated at the reduced viewport height used to prioritize coarse coverage. */
87
+ _screenSpaceErrorProgressiveResolution: number;
88
+ /** Whether this tile should be promoted into the progressive-resolution request pass. */
89
+ _priorityProgressiveResolution: boolean;
90
+ /** Angular distance from the camera view axis used to prioritize center tiles. */
91
+ _foveatedFactor: number;
92
+ /** Whether this peripheral request is currently inside the camera-motion deferral window. */
93
+ priorityDeferred: boolean;
71
94
  private _visibilityPlaneMask;
72
95
  private _visible;
73
96
  private _contentBoundingVolume;
@@ -112,6 +135,10 @@ export declare class Tile3D {
112
135
  get hasRenderContent(): boolean;
113
136
  /** Returns true if tile has children */
114
137
  get hasChildren(): any;
138
+ /** Returns whether traversal may request an unresolved lazy child-header group. */
139
+ get hasUnloadedChildren(): boolean;
140
+ /** Returns whether a lazy child-header request is currently in flight. */
141
+ get childrenLoading(): boolean;
115
142
  /**
116
143
  * Determines if the tile's content is ready. This is automatically `true` for
117
144
  * tiles with empty content.
@@ -148,8 +175,18 @@ export declare class Tile3D {
148
175
  * @returns [min, max] each in [longitude, latitude, altitude]
149
176
  */
150
177
  get boundingBox(): CartographicBounds;
151
- /** Get the tile's screen space error. */
152
- getScreenSpaceError(frameState: any, useParentLodMetric: any): number;
178
+ /**
179
+ * Gets the tile's screen-space error for normal refinement or a reduced-height priority pass.
180
+ *
181
+ * I3S already supplies a screen-oriented LOD metric and intentionally ignores the optional 3D
182
+ * Tiles progressive-resolution height fraction.
183
+ *
184
+ * @param frameState - Current camera and viewport measurements.
185
+ * @param useParentLodMetric - Whether to substitute the parent LOD metric.
186
+ * @param viewportHeightFraction - Fraction of viewport height represented by the priority pass.
187
+ * @returns Screen-space LOD error for the current tileset format.
188
+ */
189
+ getScreenSpaceError(frameState: any, useParentLodMetric: any, viewportHeightFraction?: number): number;
153
190
  /**
154
191
  * Make tile unselected than means it won't be shown
155
192
  * but it can be still loaded in memory
@@ -159,12 +196,62 @@ export declare class Tile3D {
159
196
  * Memory usage of tile on GPU
160
197
  */
161
198
  _getGpuMemoryUsageInBytes(): number;
199
+ /**
200
+ * Returns scheduler priority for render-content requests.
201
+ *
202
+ * @returns Numeric priority, or a negative value when the queued request should be cancelled.
203
+ */
162
204
  _getPriority(): number;
205
+ /**
206
+ * Returns scheduler priority for lazy child-header requests.
207
+ *
208
+ * Contentless implicit placeholders intentionally retain `UNLOADED` content state, so metadata
209
+ * scheduling skips only that render-content cancellation check and preserves every visibility,
210
+ * recency, progressive, foveated, and motion-deferral rule.
211
+ *
212
+ * @returns Numeric priority, or a negative value when the queued request should be cancelled.
213
+ */
214
+ private _getChildrenPriority;
215
+ /**
216
+ * Calculates the common scheduler priority for content or hierarchy metadata.
217
+ *
218
+ * @param allowUnloadedContent - Whether an empty placeholder may request child metadata.
219
+ * @returns Numeric priority, or a negative value when the queued request should be cancelled.
220
+ */
221
+ private _calculateRequestPriority;
163
222
  /**
164
223
  * Requests the tile's content.
165
224
  * The request may not be made if the Request Scheduler can't prioritize it.
166
225
  */
167
- loadContent(): Promise<boolean>;
226
+ loadContent(): Promise<TileContentLoadResult>;
227
+ /**
228
+ * Requests and installs this tile's lazy child-header group through its source.
229
+ *
230
+ * The same request scheduler and SSE/foveated priority value used for render content are reused
231
+ * for subtree metadata. Repeated traversal frames share one promise, and scheduler cancellation
232
+ * restores the unloaded state so a later frame can retry.
233
+ *
234
+ * @param frameState - View state that made the subtree eligible for refinement.
235
+ * @returns Source load result, or an unloaded result if scheduling was cancelled.
236
+ */
237
+ loadChildren(frameState: FrameState): Promise<TileChildrenLoadResult>;
238
+ /**
239
+ * Runs one lazy child-header load after obtaining a scheduler token.
240
+ *
241
+ * @param frameState - View state forwarded to the source implementation.
242
+ * @returns Source load result.
243
+ */
244
+ private _loadChildrenWithScheduler;
245
+ /**
246
+ * Replaces a contentless implicit placeholder with its materialized subtree-root header.
247
+ *
248
+ * Transform state is intentionally preserved: the placeholder already owns the composed
249
+ * transform, and reapplying the root transform here would double-transform bounds and geometric
250
+ * error. Content and raw geometric error are reinitialized from the newly available header.
251
+ *
252
+ * @param materializedHeader - Available root header produced from one subtree resource.
253
+ */
254
+ applyImplicitSubtreeHeader(materializedHeader: Record<string, any>): void;
168
255
  unloadContent(): boolean;
169
256
  /**
170
257
  * Update the tile's visibility
@@ -173,6 +260,16 @@ export declare class Tile3D {
173
260
  * @return {void}
174
261
  */
175
262
  updateVisibility(frameState: any, viewportIds: any): void;
263
+ /**
264
+ * Updates progressive-resolution and foveated request metrics for a 3D Tiles traversal frame.
265
+ *
266
+ * I3S retains its format-specific screen-threshold ordering and is explicitly isolated from
267
+ * geometric-error scheduling. Orthographic viewports still receive progressive coverage, but
268
+ * angular foveation is disabled because an orthographic frustum has no perspective field of view.
269
+ *
270
+ * @param frameState - Current camera and viewport measurements.
271
+ */
272
+ _updateRequestPriorityMetrics(frameState: FrameState): void;
176
273
  visibility(frameState: any, parentVisibilityPlaneMask: any): any;
177
274
  contentVisibility(): boolean;
178
275
  /**
@@ -197,34 +294,41 @@ export declare class Tile3D {
197
294
  insideViewerRequestVolume(frameState: FrameState): boolean;
198
295
  updateExpiration(): void;
199
296
  get extras(): any;
200
- _initializeLodMetric(header: any): void;
297
+ /** Initializes the tile's LOD metric from its header or its nearest available ancestor. */
298
+ _initializeLodMetric(header: {
299
+ [key: string]: any;
300
+ }): void;
201
301
  _initializeTransforms(tileHeader: any): void;
302
+ /**
303
+ * Updates the world-space LOD metric from the source metric and the complete tile transform.
304
+ *
305
+ * 3D Tiles geometric error is a distance in the tile's local meters. Screen-space error (SSE)
306
+ * compares that distance with a world-space camera distance, so both quantities must use the
307
+ * same scale. For non-uniform transforms the largest axis scale is deliberately used: this is
308
+ * conservative and prevents refinement from stopping while any transformed dimension can still
309
+ * exceed the requested visual error. Rotation and translation do not affect the scale.
310
+ *
311
+ * I3S `maxScreenThreshold` is already a screen-space metric and must not be transform-scaled.
312
+ */
313
+ _updateLodMetricScale(): void;
202
314
  _initializeBoundingVolumes(tileHeader: any): void;
203
315
  _initializeContent(tileHeader: any): void;
204
316
  _initializeRenderingState(header: any): void;
205
317
  _getRefine(refine: any): any;
318
+ /**
319
+ * Returns whether loaded content is an external tileset.
320
+ *
321
+ * Parsed shape is authoritative because valid external resources may be extensionless, signed,
322
+ * or use a misleading filename. This method is called only after source loading has populated
323
+ * `content`.
324
+ */
206
325
  _isTileset(): boolean;
207
326
  _onContentLoaded(): void;
208
327
  _updateBoundingVolume(header: any): void;
328
+ /**
329
+ * Updates the tile's computed transform, world-space geometric error, and bounding volumes.
330
+ * @param parentTransform - Current computed transform of the parent tile or tileset.
331
+ */
209
332
  _updateTransform(parentTransform?: Matrix4): void;
210
- _getLoaderSpecificOptions(loaderId: any): {
211
- assetGltfUpAxis: "X" | "Y" | "Z";
212
- } | {
213
- _tileOptions: {
214
- attributeUrls: any;
215
- textureUrl: any;
216
- textureFormat: any;
217
- textureLoaderOptions: any;
218
- materialDefinition: any;
219
- isDracoGeometry: any;
220
- mbs: any;
221
- };
222
- _tilesetOptions: {
223
- store: any;
224
- attributeStorageInfo: any;
225
- fields: any;
226
- };
227
- isTileHeader: boolean;
228
- };
229
333
  }
230
334
  //# sourceMappingURL=tile-3d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile-3d.d.ts","sourceRoot":"","sources":["../../../src/tileset-3d/common/tile-3d.ts"],"names":[],"mappings":"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"}