@loaders.gl/i3s 4.0.0-alpha.1 → 4.0.0-alpha.11

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 (242) 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.d.ts +2 -0
  5. package/dist/bundle.d.ts.map +1 -0
  6. package/dist/bundle.js +2 -2
  7. package/dist/dist.min.js +15501 -0
  8. package/dist/es5/arcgis-webscene-loader.js +40 -0
  9. package/dist/es5/arcgis-webscene-loader.js.map +1 -0
  10. package/dist/es5/bundle.js +6 -0
  11. package/dist/es5/bundle.js.map +1 -0
  12. package/dist/es5/i3s-attribute-loader.js +195 -0
  13. package/dist/es5/i3s-attribute-loader.js.map +1 -0
  14. package/dist/es5/i3s-building-scene-layer-loader.js +46 -0
  15. package/dist/es5/i3s-building-scene-layer-loader.js.map +1 -0
  16. package/dist/es5/i3s-content-loader.js +56 -0
  17. package/dist/es5/i3s-content-loader.js.map +1 -0
  18. package/dist/es5/i3s-loader.js +193 -0
  19. package/dist/es5/i3s-loader.js.map +1 -0
  20. package/dist/es5/i3s-node-page-loader.js +39 -0
  21. package/dist/es5/i3s-node-page-loader.js.map +1 -0
  22. package/dist/es5/i3s-slpk-loader.js +20 -0
  23. package/dist/es5/i3s-slpk-loader.js.map +1 -0
  24. package/dist/es5/index.js +82 -0
  25. package/dist/es5/index.js.map +1 -0
  26. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +312 -0
  27. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
  28. package/dist/es5/lib/parsers/constants.js +72 -0
  29. package/dist/es5/lib/parsers/constants.js.map +1 -0
  30. package/dist/es5/lib/parsers/parse-arcgis-webscene.js +158 -0
  31. package/dist/es5/lib/parsers/parse-arcgis-webscene.js.map +1 -0
  32. package/dist/es5/lib/parsers/parse-i3s-attribute.js +76 -0
  33. package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +1 -0
  34. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js +65 -0
  35. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
  36. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +510 -0
  37. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -0
  38. package/dist/es5/lib/parsers/parse-i3s.js +116 -0
  39. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -0
  40. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +107 -0
  41. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
  42. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +258 -0
  43. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
  44. package/dist/es5/lib/parsers/parse-zip/buffer-file-provider.js +46 -0
  45. package/dist/es5/lib/parsers/parse-zip/buffer-file-provider.js.map +1 -0
  46. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js +84 -0
  47. package/dist/es5/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
  48. package/dist/es5/lib/parsers/parse-zip/file-provider.js +2 -0
  49. package/dist/es5/lib/parsers/parse-zip/file-provider.js.map +1 -0
  50. package/dist/es5/lib/parsers/parse-zip/local-file-header.js +72 -0
  51. package/dist/es5/lib/parsers/parse-zip/local-file-header.js.map +1 -0
  52. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +17 -0
  53. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
  54. package/dist/es5/lib/utils/customize-/321/201olors.js +184 -0
  55. package/dist/es5/lib/utils/customize-/321/201olors.js.map +1 -0
  56. package/dist/es5/lib/utils/url-utils.js +33 -0
  57. package/dist/es5/lib/utils/url-utils.js.map +1 -0
  58. package/dist/es5/types.js +26 -0
  59. package/dist/es5/types.js.map +1 -0
  60. package/dist/es5/workers/i3s-content-worker-node.js +7 -0
  61. package/dist/es5/workers/i3s-content-worker-node.js.map +1 -0
  62. package/dist/es5/workers/i3s-content-worker.js +6 -0
  63. package/dist/es5/workers/i3s-content-worker.js.map +1 -0
  64. package/dist/esm/arcgis-webscene-loader.js +16 -0
  65. package/dist/esm/arcgis-webscene-loader.js.map +1 -0
  66. package/dist/esm/bundle.js +4 -0
  67. package/dist/esm/bundle.js.map +1 -0
  68. package/dist/esm/i3s-attribute-loader.js +119 -0
  69. package/dist/esm/i3s-attribute-loader.js.map +1 -0
  70. package/dist/esm/i3s-building-scene-layer-loader.js +19 -0
  71. package/dist/esm/i3s-building-scene-layer-loader.js.map +1 -0
  72. package/dist/esm/i3s-content-loader.js +30 -0
  73. package/dist/esm/i3s-content-loader.js.map +1 -0
  74. package/dist/esm/i3s-loader.js +87 -0
  75. package/dist/esm/i3s-loader.js.map +1 -0
  76. package/dist/esm/i3s-node-page-loader.js +15 -0
  77. package/dist/esm/i3s-node-page-loader.js.map +1 -0
  78. package/dist/esm/i3s-slpk-loader.js +13 -0
  79. package/dist/esm/i3s-slpk-loader.js.map +1 -0
  80. package/dist/esm/index.js +11 -0
  81. package/dist/esm/index.js.map +1 -0
  82. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +198 -0
  83. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
  84. package/dist/esm/lib/parsers/constants.js +57 -0
  85. package/dist/esm/lib/parsers/constants.js.map +1 -0
  86. package/dist/esm/lib/parsers/parse-arcgis-webscene.js +70 -0
  87. package/dist/esm/lib/parsers/parse-arcgis-webscene.js.map +1 -0
  88. package/dist/esm/lib/parsers/parse-i3s-attribute.js +60 -0
  89. package/dist/esm/lib/parsers/parse-i3s-attribute.js.map +1 -0
  90. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js +39 -0
  91. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
  92. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +435 -0
  93. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +1 -0
  94. package/dist/esm/lib/parsers/parse-i3s.js +83 -0
  95. package/dist/esm/lib/parsers/parse-i3s.js.map +1 -0
  96. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js +41 -0
  97. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
  98. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js +107 -0
  99. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
  100. package/dist/esm/lib/parsers/parse-zip/buffer-file-provider.js +23 -0
  101. package/dist/esm/lib/parsers/parse-zip/buffer-file-provider.js.map +1 -0
  102. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js +37 -0
  103. package/dist/esm/lib/parsers/parse-zip/cd-file-header.js.map +1 -0
  104. package/dist/esm/lib/parsers/parse-zip/file-provider.js +2 -0
  105. package/dist/esm/lib/parsers/parse-zip/file-provider.js.map +1 -0
  106. package/dist/esm/lib/parsers/parse-zip/local-file-header.js +25 -0
  107. package/dist/esm/lib/parsers/parse-zip/local-file-header.js.map +1 -0
  108. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js +9 -0
  109. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
  110. package/dist/esm/lib/utils/customize-/321/201olors.js +98 -0
  111. package/dist/esm/lib/utils/customize-/321/201olors.js.map +1 -0
  112. package/dist/esm/lib/utils/url-utils.js +28 -0
  113. package/dist/esm/lib/utils/url-utils.js.map +1 -0
  114. package/dist/esm/types.js +18 -0
  115. package/dist/esm/types.js.map +1 -0
  116. package/dist/esm/workers/i3s-content-worker-node.js +5 -0
  117. package/dist/esm/workers/i3s-content-worker-node.js.map +1 -0
  118. package/dist/esm/workers/i3s-content-worker.js +4 -0
  119. package/dist/esm/workers/i3s-content-worker.js.map +1 -0
  120. package/dist/i3s-attribute-loader.d.ts +21 -0
  121. package/dist/i3s-attribute-loader.d.ts.map +1 -0
  122. package/dist/i3s-attribute-loader.js +155 -132
  123. package/dist/i3s-building-scene-layer-loader.d.ts +6 -0
  124. package/dist/i3s-building-scene-layer-loader.d.ts.map +1 -0
  125. package/dist/i3s-building-scene-layer-loader.js +23 -18
  126. package/dist/i3s-content-loader.d.ts +6 -0
  127. package/dist/i3s-content-loader.d.ts.map +1 -0
  128. package/dist/i3s-content-loader.js +29 -22
  129. package/dist/i3s-content-worker-node.js +197 -0
  130. package/dist/i3s-content-worker-node.js.map +7 -0
  131. package/dist/i3s-content-worker.js +2308 -1376
  132. package/dist/i3s-loader.d.ts +11 -0
  133. package/dist/i3s-loader.d.ts.map +1 -0
  134. package/dist/i3s-loader.js +88 -81
  135. package/dist/i3s-node-page-loader.d.ts +7 -0
  136. package/dist/i3s-node-page-loader.d.ts.map +1 -0
  137. package/dist/i3s-node-page-loader.js +20 -20
  138. package/dist/i3s-slpk-loader.d.ts +13 -0
  139. package/dist/i3s-slpk-loader.d.ts.map +1 -0
  140. package/dist/i3s-slpk-loader.js +20 -0
  141. package/dist/index.d.ts +12 -0
  142. package/dist/index.d.ts.map +1 -0
  143. package/dist/index.js +23 -5
  144. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts +74 -0
  145. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -0
  146. package/dist/lib/helpers/i3s-nodepages-tiles.js +232 -219
  147. package/dist/lib/parsers/constants.d.ts +40 -0
  148. package/dist/lib/parsers/constants.d.ts.map +1 -0
  149. package/dist/lib/parsers/constants.js +87 -42
  150. package/dist/lib/parsers/parse-arcgis-webscene.d.ts +7 -0
  151. package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -0
  152. package/dist/lib/parsers/parse-arcgis-webscene.js +88 -0
  153. package/dist/lib/parsers/parse-i3s-attribute.d.ts +12 -0
  154. package/dist/lib/parsers/parse-i3s-attribute.d.ts.map +1 -0
  155. package/dist/lib/parsers/parse-i3s-attribute.js +87 -62
  156. package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts +9 -0
  157. package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts.map +1 -0
  158. package/dist/lib/parsers/parse-i3s-building-scene-layer.js +41 -38
  159. package/dist/lib/parsers/parse-i3s-tile-content.d.ts +4 -0
  160. package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -0
  161. package/dist/lib/parsers/parse-i3s-tile-content.js +460 -415
  162. package/dist/lib/parsers/parse-i3s.d.ts +6 -0
  163. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -0
  164. package/dist/lib/parsers/parse-i3s.js +92 -73
  165. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts +4 -0
  166. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -0
  167. package/dist/lib/parsers/parse-slpk/parse-slpk.js +54 -0
  168. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts +38 -0
  169. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -0
  170. package/dist/lib/parsers/parse-slpk/slpk-archieve.js +142 -0
  171. package/dist/lib/parsers/parse-zip/buffer-file-provider.d.ts +37 -0
  172. package/dist/lib/parsers/parse-zip/buffer-file-provider.d.ts.map +1 -0
  173. package/dist/lib/parsers/parse-zip/buffer-file-provider.js +47 -0
  174. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts +27 -0
  175. package/dist/lib/parsers/parse-zip/cd-file-header.d.ts.map +1 -0
  176. package/dist/lib/parsers/parse-zip/cd-file-header.js +48 -0
  177. package/dist/lib/parsers/parse-zip/file-provider.d.ts +31 -0
  178. package/dist/lib/parsers/parse-zip/file-provider.d.ts.map +1 -0
  179. package/dist/lib/parsers/parse-zip/file-provider.js +2 -0
  180. package/dist/lib/parsers/parse-zip/local-file-header.d.ts +25 -0
  181. package/dist/lib/parsers/parse-zip/local-file-header.d.ts.map +1 -0
  182. package/dist/lib/parsers/parse-zip/local-file-header.js +34 -0
  183. package/dist/lib/utils/convert-i3s-obb-to-mbs.d.ts +2 -0
  184. package/dist/lib/utils/convert-i3s-obb-to-mbs.d.ts.map +1 -0
  185. package/dist/lib/utils/convert-i3s-obb-to-mbs.js +19 -8
  186. package/dist/lib/utils/customize-/321/201olors.d.ts +14 -0
  187. package/dist/lib/utils/customize-/321/201olors.d.ts.map +1 -0
  188. package/dist/lib/utils/customize-/321/201olors.js +104 -0
  189. package/dist/lib/utils/url-utils.d.ts +22 -0
  190. package/dist/lib/utils/url-utils.d.ts.map +1 -0
  191. package/dist/lib/utils/url-utils.js +41 -29
  192. package/dist/types.d.ts +1065 -0
  193. package/dist/types.d.ts.map +1 -0
  194. package/dist/types.js +20 -2
  195. package/dist/workers/i3s-content-worker-node.d.ts +2 -0
  196. package/dist/workers/i3s-content-worker-node.d.ts.map +1 -0
  197. package/dist/workers/i3s-content-worker-node.js +7 -0
  198. package/dist/workers/i3s-content-worker.d.ts +2 -0
  199. package/dist/workers/i3s-content-worker.d.ts.map +1 -0
  200. package/dist/workers/i3s-content-worker.js +5 -4
  201. package/package.json +18 -16
  202. package/src/arcgis-webscene-loader.ts +31 -0
  203. package/src/i3s-attribute-loader.ts +9 -9
  204. package/src/i3s-content-loader.ts +17 -5
  205. package/src/i3s-loader.ts +24 -13
  206. package/src/i3s-node-page-loader.ts +6 -10
  207. package/src/i3s-slpk-loader.ts +27 -0
  208. package/src/index.ts +28 -7
  209. package/src/lib/helpers/i3s-nodepages-tiles.ts +84 -57
  210. package/src/lib/parsers/constants.ts +71 -37
  211. package/src/lib/parsers/parse-arcgis-webscene.ts +102 -0
  212. package/src/lib/parsers/parse-i3s-attribute.ts +21 -14
  213. package/src/lib/parsers/parse-i3s-building-scene-layer.ts +2 -1
  214. package/src/lib/parsers/parse-i3s-tile-content.ts +278 -194
  215. package/src/lib/parsers/parse-i3s.ts +55 -39
  216. package/src/lib/parsers/parse-slpk/parse-slpk.ts +72 -0
  217. package/src/lib/parsers/parse-slpk/slpk-archieve.ts +173 -0
  218. package/src/lib/parsers/parse-zip/buffer-file-provider.ts +55 -0
  219. package/src/lib/parsers/parse-zip/cd-file-header.ts +86 -0
  220. package/src/lib/parsers/parse-zip/file-provider.ts +34 -0
  221. package/src/lib/parsers/parse-zip/local-file-header.ts +65 -0
  222. package/src/lib/utils/customize-/321/201olors.ts +144 -0
  223. package/src/lib/utils/url-utils.ts +7 -7
  224. package/src/types.ts +875 -86
  225. package/src/workers/i3s-content-worker-node.ts +6 -0
  226. package/dist/bundle.js.map +0 -1
  227. package/dist/i3s-attribute-loader.js.map +0 -1
  228. package/dist/i3s-building-scene-layer-loader.js.map +0 -1
  229. package/dist/i3s-content-loader.js.map +0 -1
  230. package/dist/i3s-loader.js.map +0 -1
  231. package/dist/i3s-node-page-loader.js.map +0 -1
  232. package/dist/index.js.map +0 -1
  233. package/dist/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  234. package/dist/lib/parsers/constants.js.map +0 -1
  235. package/dist/lib/parsers/parse-i3s-attribute.js.map +0 -1
  236. package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  237. package/dist/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  238. package/dist/lib/parsers/parse-i3s.js.map +0 -1
  239. package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  240. package/dist/lib/utils/url-utils.js.map +0 -1
  241. package/dist/types.js.map +0 -1
  242. package/dist/workers/i3s-content-worker.js.map +0 -1
@@ -0,0 +1,11 @@
1
+ import type { LoaderWithParser } from '@loaders.gl/loader-utils';
2
+ import { I3SParseOptions } from './types';
3
+ import { LoaderOptions } from './../../loader-utils/src/types';
4
+ export type I3SLoaderOptions = LoaderOptions & {
5
+ i3s?: I3SParseOptions;
6
+ };
7
+ /**
8
+ * Loader for I3S - Indexed 3D Scene Layer
9
+ */
10
+ export declare const I3SLoader: LoaderWithParser;
11
+ //# sourceMappingURL=i3s-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-loader.d.ts","sourceRoot":"","sources":["../src/i3s-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAK/D,OAAO,EAAC,eAAe,EAAC,MAAM,SAAS,CAAC;AACxC,OAAO,EAAC,aAAa,EAAC,MAAM,gCAAgC,CAAC;AAW7D,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE,eAAe,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,gBAwBvB,CAAC"}
@@ -1,95 +1,102 @@
1
- import { load, parse } from '@loaders.gl/core';
2
- import { I3SContentLoader } from './i3s-content-loader';
3
- import { normalizeTileData, normalizeTilesetData } from './lib/parsers/parse-i3s';
4
- const VERSION = typeof "4.0.0-alpha.1" !== 'undefined' ? "4.0.0-alpha.1" : 'latest';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.I3SLoader = void 0;
4
+ const core_1 = require("@loaders.gl/core");
5
+ const i3s_content_loader_1 = require("./i3s-content-loader");
6
+ const parse_i3s_1 = require("./lib/parsers/parse-i3s");
7
+ const constants_1 = require("./lib/parsers/constants");
8
+ // __VERSION__ is injected by babel-plugin-version-inline
9
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
10
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
5
11
  const TILESET_REGEX = /layers\/[0-9]+$/;
6
12
  const TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
7
13
  const SLPK_HEX = '504b0304';
8
- export const I3SLoader = {
9
- name: 'I3S (Indexed Scene Layers)',
10
- id: 'i3s',
11
- module: 'i3s',
12
- version: VERSION,
13
- mimeTypes: ['application/octet-stream'],
14
- parse: parseI3S,
15
- extensions: ['bin'],
16
- options: {
17
- i3s: {
18
- loadContent: true,
19
- token: null,
20
- isTileset: 'auto',
21
- isTileHeader: 'auto',
22
- tile: null,
23
- tileset: null,
24
- useDracoGeometry: true,
25
- useCompressedTextures: true,
26
- decodeTextures: true
14
+ const POINT_CLOUD = 'PointCloud';
15
+ /**
16
+ * Loader for I3S - Indexed 3D Scene Layer
17
+ */
18
+ exports.I3SLoader = {
19
+ name: 'I3S (Indexed Scene Layers)',
20
+ id: 'i3s',
21
+ module: 'i3s',
22
+ version: VERSION,
23
+ mimeTypes: ['application/octet-stream'],
24
+ parse: parseI3S,
25
+ extensions: ['bin'],
26
+ options: {
27
+ i3s: {
28
+ token: null,
29
+ isTileset: 'auto',
30
+ isTileHeader: 'auto',
31
+ tile: null,
32
+ tileset: null,
33
+ _tileOptions: null,
34
+ _tilesetOptions: null,
35
+ useDracoGeometry: true,
36
+ useCompressedTextures: true,
37
+ decodeTextures: true,
38
+ coordinateSystem: constants_1.COORDINATE_SYSTEM.METER_OFFSETS,
39
+ colorsByAttribute: null
40
+ }
27
41
  }
28
- }
29
42
  };
30
-
31
- async function parseI3S(data, options, context) {
32
- const url = context.url;
33
- options.i3s = options.i3s || {};
34
- const magicNumber = getMagicNumber(data);
35
-
36
- if (magicNumber === SLPK_HEX) {
37
- throw new Error('Files with .slpk extention currently are not supported by I3SLoader');
38
- }
39
-
40
- let isTileset;
41
-
42
- if (options.i3s.isTileset === 'auto') {
43
- isTileset = TILESET_REGEX.test(url);
44
- } else {
45
- isTileset = options.i3s.isTileset;
46
- }
47
-
48
- let isTileHeader;
49
-
50
- if (options.isTileHeader === 'auto') {
51
- isTileHeader = TILE_HEADER_REGEX.test(url);
52
- } else {
53
- isTileHeader = options.i3s.isTileHeader;
54
- }
55
-
56
- if (isTileset) {
57
- data = await parseTileset(data, options, context);
58
- } else if (isTileHeader) {
59
- data = await parseTile(data, options, context);
60
-
61
- if (options.i3s.loadContent) {
62
- options.i3s.tile = data;
63
- await load(data.contentUrl, I3SLoader, options);
43
+ async function parseI3S(data, options = {}, context) {
44
+ const url = context.url;
45
+ options.i3s = options.i3s || {};
46
+ const magicNumber = getMagicNumber(data);
47
+ // check if file is slpk
48
+ if (magicNumber === SLPK_HEX) {
49
+ throw new Error('Files with .slpk extention currently are not supported by I3SLoader');
64
50
  }
65
- } else {
66
- data = await parseTileContent(data, options);
67
- }
68
-
69
- return data;
51
+ // auto detect file type based on url
52
+ let isTileset;
53
+ if (options.i3s.isTileset === 'auto') {
54
+ isTileset = TILESET_REGEX.test(url);
55
+ }
56
+ else {
57
+ isTileset = options.i3s.isTileset;
58
+ }
59
+ let isTileHeader;
60
+ if (options.isTileHeader === 'auto') {
61
+ isTileHeader = TILE_HEADER_REGEX.test(url);
62
+ }
63
+ else {
64
+ isTileHeader = options.i3s.isTileHeader;
65
+ }
66
+ if (isTileset) {
67
+ data = await parseTileset(data, options, context);
68
+ }
69
+ else if (isTileHeader) {
70
+ data = await parseTile(data, context);
71
+ }
72
+ else {
73
+ data = await parseTileContent(data, options);
74
+ }
75
+ return data;
70
76
  }
71
-
72
77
  async function parseTileContent(arrayBuffer, options) {
73
- return await parse(arrayBuffer, I3SContentLoader, options);
78
+ return await (0, core_1.parse)(arrayBuffer, i3s_content_loader_1.I3SContentLoader, options);
74
79
  }
75
-
76
80
  async function parseTileset(data, options, context) {
77
- const tilesetJson = JSON.parse(new TextDecoder().decode(data));
78
- tilesetJson.loader = I3SLoader;
79
- await normalizeTilesetData(tilesetJson, options, context);
80
- return tilesetJson;
81
+ const tilesetJson = JSON.parse(new TextDecoder().decode(data));
82
+ if (tilesetJson?.layerType === POINT_CLOUD) {
83
+ throw new Error('Point Cloud layers currently are not supported by I3SLoader');
84
+ }
85
+ // eslint-disable-next-line no-use-before-define
86
+ tilesetJson.loader = exports.I3SLoader;
87
+ await (0, parse_i3s_1.normalizeTilesetData)(tilesetJson, options, context);
88
+ return tilesetJson;
81
89
  }
82
-
83
- async function parseTile(data, options, context) {
84
- data = JSON.parse(new TextDecoder().decode(data));
85
- return normalizeTileData(data, options, context);
90
+ async function parseTile(data, context) {
91
+ data = JSON.parse(new TextDecoder().decode(data));
92
+ return (0, parse_i3s_1.normalizeTileData)(data, context);
86
93
  }
87
-
88
94
  function getMagicNumber(data) {
89
- if (data instanceof ArrayBuffer) {
90
- return [...new Uint8Array(data, 0, 4)].map(value => value.toString(16).padStart(2, '0')).join('');
91
- }
92
-
93
- return null;
95
+ if (data instanceof ArrayBuffer) {
96
+ // slice binary data (4 bytes from the beginning) and transform it to hexadecimal numeral system
97
+ return [...new Uint8Array(data, 0, 4)]
98
+ .map((value) => value.toString(16).padStart(2, '0'))
99
+ .join('');
100
+ }
101
+ return null;
94
102
  }
95
- //# sourceMappingURL=i3s-loader.js.map
@@ -0,0 +1,7 @@
1
+ import type { LoaderOptions, LoaderWithParser } from '@loaders.gl/loader-utils';
2
+ import type { NodePage } from './types';
3
+ /**
4
+ * Loader for I3S node pages
5
+ */
6
+ export declare const I3SNodePageLoader: LoaderWithParser<NodePage, never, LoaderOptions>;
7
+ //# sourceMappingURL=i3s-node-page-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-node-page-loader.d.ts","sourceRoot":"","sources":["../src/i3s-node-page-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAUtC;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAS9E,CAAC"}
@@ -1,22 +1,22 @@
1
- const VERSION = typeof "4.0.0-alpha.1" !== 'undefined' ? "4.0.0-alpha.1" : 'latest';
2
-
3
- async function parseNodePage(data) {
4
- return JSON.parse(new TextDecoder().decode(data));
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.I3SNodePageLoader = void 0;
4
+ // __VERSION__ is injected by babel-plugin-version-inline
5
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
6
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
7
+ async function parseNodePage(data, options) {
8
+ return JSON.parse(new TextDecoder().decode(data));
5
9
  }
6
-
7
- export const I3SNodePageLoader = {
8
- name: 'I3S Node Page',
9
- id: 'i3s-node-page',
10
- module: 'i3s',
11
- version: VERSION,
12
- mimeTypes: ['application/json'],
13
- parse,
14
- extensions: ['json'],
15
- options: {}
10
+ /**
11
+ * Loader for I3S node pages
12
+ */
13
+ exports.I3SNodePageLoader = {
14
+ name: 'I3S Node Page',
15
+ id: 'i3s-node-page',
16
+ module: 'i3s',
17
+ version: VERSION,
18
+ mimeTypes: ['application/json'],
19
+ parse: parseNodePage,
20
+ extensions: ['json'],
21
+ options: {}
16
22
  };
17
-
18
- async function parse(data) {
19
- data = parseNodePage(data);
20
- return data;
21
- }
22
- //# sourceMappingURL=i3s-node-page-loader.js.map
@@ -0,0 +1,13 @@
1
+ /// <reference types="node" />
2
+ import { LoaderOptions, LoaderWithParser } from '@loaders.gl/loader-utils';
3
+ export type SLPKLoaderOptions = LoaderOptions & {
4
+ slpk?: {
5
+ path?: string;
6
+ pathMode?: 'http' | 'raw';
7
+ };
8
+ };
9
+ /**
10
+ * Loader for SLPK - Scene Layer Package
11
+ */
12
+ export declare const SLPKLoader: LoaderWithParser<Buffer, never, SLPKLoaderOptions>;
13
+ //# sourceMappingURL=i3s-slpk-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-slpk-loader.d.ts","sourceRoot":"","sources":["../src/i3s-slpk-loader.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAOzE,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CASzE,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SLPKLoader = void 0;
4
+ const parse_slpk_1 = require("./lib/parsers/parse-slpk/parse-slpk");
5
+ // __VERSION__ is injected by babel-plugin-version-inline
6
+ // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
8
+ /**
9
+ * Loader for SLPK - Scene Layer Package
10
+ */
11
+ exports.SLPKLoader = {
12
+ name: 'I3S SLPK (Scene Layer Package)',
13
+ id: 'slpk',
14
+ module: 'i3s',
15
+ version: VERSION,
16
+ mimeTypes: ['application/octet-stream'],
17
+ parse: parse_slpk_1.parseSLPK,
18
+ extensions: ['slpk'],
19
+ options: {}
20
+ };
@@ -0,0 +1,12 @@
1
+ export type { BoundingVolumes, Mbs, Obb, SceneLayer3D, AttributeStorageInfo, Field, ESRIField, PopupInfo, Node3DIndexDocument, LodSelection, NodeReference, Resource, MaxScreenThresholdSQ, NodeInPage, SharedResources, Attribute, Extent, FeatureAttribute, FieldInfo, I3SMaterialDefinition, TextureDefinitionInfo, MaterialDefinitionInfo, FullExtent, StatisticsInfo, StatsInfo, Histogram, ValueCount, BuildingSceneSublayer, DATA_TYPE, OperationalLayer, TextureSetDefinitionFormats } from './types';
2
+ export { COORDINATE_SYSTEM } from './lib/parsers/constants';
3
+ export { I3SLoader } from './i3s-loader';
4
+ export { SLPKLoader } from './i3s-slpk-loader';
5
+ export { I3SContentLoader } from './i3s-content-loader';
6
+ export { I3SAttributeLoader, loadFeatureAttributes } from './i3s-attribute-loader';
7
+ export { I3SBuildingSceneLayerLoader } from './i3s-building-scene-layer-loader';
8
+ export { I3SNodePageLoader } from './i3s-node-page-loader';
9
+ export { ArcGisWebSceneLoader } from './arcgis-webscene-loader';
10
+ export { parseZipLocalFileHeader } from './lib/parsers/parse-zip/local-file-header';
11
+ export { FileProvider } from './lib/parsers/parse-zip/file-provider';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,uBAAuB,EAAC,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAC,YAAY,EAAC,MAAM,uCAAuC,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,23 @@
1
- export { I3SLoader } from './i3s-loader';
2
- export { I3SContentLoader } from './i3s-content-loader';
3
- export { I3SAttributeLoader, loadFeatureAttributes } from './i3s-attribute-loader';
4
- export { I3SBuildingSceneLayerLoader } from './i3s-building-scene-layer-loader';
5
- //# sourceMappingURL=index.js.map
1
+ "use strict";
2
+ // loaders.gl, MIT license
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.parseZipLocalFileHeader = exports.ArcGisWebSceneLoader = exports.I3SNodePageLoader = exports.I3SBuildingSceneLayerLoader = exports.loadFeatureAttributes = exports.I3SAttributeLoader = exports.I3SContentLoader = exports.SLPKLoader = exports.I3SLoader = exports.COORDINATE_SYSTEM = void 0;
5
+ var constants_1 = require("./lib/parsers/constants");
6
+ Object.defineProperty(exports, "COORDINATE_SYSTEM", { enumerable: true, get: function () { return constants_1.COORDINATE_SYSTEM; } });
7
+ var i3s_loader_1 = require("./i3s-loader");
8
+ Object.defineProperty(exports, "I3SLoader", { enumerable: true, get: function () { return i3s_loader_1.I3SLoader; } });
9
+ var i3s_slpk_loader_1 = require("./i3s-slpk-loader");
10
+ Object.defineProperty(exports, "SLPKLoader", { enumerable: true, get: function () { return i3s_slpk_loader_1.SLPKLoader; } });
11
+ var i3s_content_loader_1 = require("./i3s-content-loader");
12
+ Object.defineProperty(exports, "I3SContentLoader", { enumerable: true, get: function () { return i3s_content_loader_1.I3SContentLoader; } });
13
+ var i3s_attribute_loader_1 = require("./i3s-attribute-loader");
14
+ Object.defineProperty(exports, "I3SAttributeLoader", { enumerable: true, get: function () { return i3s_attribute_loader_1.I3SAttributeLoader; } });
15
+ Object.defineProperty(exports, "loadFeatureAttributes", { enumerable: true, get: function () { return i3s_attribute_loader_1.loadFeatureAttributes; } });
16
+ var i3s_building_scene_layer_loader_1 = require("./i3s-building-scene-layer-loader");
17
+ Object.defineProperty(exports, "I3SBuildingSceneLayerLoader", { enumerable: true, get: function () { return i3s_building_scene_layer_loader_1.I3SBuildingSceneLayerLoader; } });
18
+ var i3s_node_page_loader_1 = require("./i3s-node-page-loader");
19
+ Object.defineProperty(exports, "I3SNodePageLoader", { enumerable: true, get: function () { return i3s_node_page_loader_1.I3SNodePageLoader; } });
20
+ var arcgis_webscene_loader_1 = require("./arcgis-webscene-loader");
21
+ Object.defineProperty(exports, "ArcGisWebSceneLoader", { enumerable: true, get: function () { return arcgis_webscene_loader_1.ArcGisWebSceneLoader; } });
22
+ var local_file_header_1 = require("./lib/parsers/parse-zip/local-file-header");
23
+ Object.defineProperty(exports, "parseZipLocalFileHeader", { enumerable: true, get: function () { return local_file_header_1.parseZipLocalFileHeader; } });
@@ -0,0 +1,74 @@
1
+ import type { LoaderOptions } from '@loaders.gl/loader-utils';
2
+ import { I3STilesetHeader, NodePage, NodeInPage, I3STextureFormat, I3STileHeader } from '../../types';
3
+ /**
4
+ * class I3SNodePagesTiles - loads nodePages and form i3s tiles from them
5
+ */
6
+ export default class I3SNodePagesTiles {
7
+ tileset: I3STilesetHeader;
8
+ nodePages: NodePage[];
9
+ pendingNodePages: {
10
+ promise: Promise<NodePage>;
11
+ status: 'Pending' | 'Done';
12
+ }[];
13
+ nodesPerPage: number;
14
+ options: LoaderOptions;
15
+ lodSelectionMetricType?: string;
16
+ textureDefinitionsSelectedFormats: ({
17
+ format: I3STextureFormat;
18
+ name: string;
19
+ } | null)[];
20
+ nodesInNodePages: number;
21
+ private textureLoaderOptions;
22
+ /**
23
+ * @constructs
24
+ * Create a I3SNodePagesTiles instance.
25
+ * @param tileset - i3s tileset header ('layers/0')
26
+ * @param options - i3s loader options
27
+ */
28
+ constructor(tileset: I3STilesetHeader, options: LoaderOptions);
29
+ /**
30
+ * Loads some nodePage and return a particular node from it
31
+ * @param id - id of node through all node pages
32
+ */
33
+ getNodeById(id: number): Promise<NodeInPage>;
34
+ /**
35
+ * Forms tile header using node and tileset data
36
+ * @param id - id of node through all node pages
37
+ */
38
+ formTileFromNodePages(id: number): Promise<I3STileHeader>;
39
+ /**
40
+ * Forms url and type of geometry resource by nodepage's data and `geometryDefinitions` in the tileset
41
+ * @param - data about the node's mesh from the nodepage
42
+ * @returns -
43
+ * {string} url - url to the geometry resource
44
+ * {boolean} isDracoGeometry - whether the geometry resource contain DRACO compressed geometry
45
+ */
46
+ private getContentUrl;
47
+ /**
48
+ * Forms 1.6 compatible LOD selection object from a nodepage's node data
49
+ * @param node - a node from nodepage
50
+ * @returns- Array of LodSelection
51
+ */
52
+ private getLodSelection;
53
+ /**
54
+ * Returns information about texture and material from `materialDefinitions`
55
+ * @param material - material data from nodepage
56
+ * @returns - Couple {textureData, materialDefinition}
57
+ * {string} textureData.name - path name of the texture
58
+ * {string} textureData.format - format of the texture
59
+ * materialDefinition - PBR-like material definition from `materialDefinitions`
60
+ */
61
+ private getInformationFromMaterial;
62
+ /**
63
+ * Sets preferable and supported format for each textureDefinition of the tileset
64
+ * @param tileset - I3S layer data
65
+ * @returns
66
+ */
67
+ private initSelectedFormatsForTextureDefinitions;
68
+ /**
69
+ * Returns the array of supported texture format
70
+ * @returns list of format strings
71
+ */
72
+ private getSupportedTextureFormats;
73
+ }
74
+ //# sourceMappingURL=i3s-nodepages-tiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i3s-nodepages-tiles.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers/i3s-nodepages-tiles.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,gBAAgB,EAEhB,QAAQ,EACR,UAAU,EAIV,gBAAgB,EAEhB,aAAa,EACd,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,QAAQ,EAAE,CAAM;IAC3B,gBAAgB,EAAE;QAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAA;KAAC,EAAE,CAAM;IAClF,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,EAAE,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC,EAAE,CAAM;IAC5F,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,oBAAoB,CAA4B;IAExD;;;;;OAKG;gBACS,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa;IAU7D;;;OAGG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuBlD;;;OAGG;IAEG,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA4D/D;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IA8BrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;;;OAIG;IACH,OAAO,CAAC,wCAAwC;IA2BhD;;;OAGG;IACH,OAAO,CAAC,0BAA0B;CAwBnC"}