@loaders.gl/scene 5.0.0-beta.2 → 5.0.0-beta.5

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 (276) hide show
  1. package/DRACO-README.md +1 -1
  2. package/GLTF-README.md +1 -1
  3. package/OBJ-README.md +1 -1
  4. package/README.md +6 -1
  5. package/THIRD-PARTY-NOTICES.md +6 -0
  6. package/dist/dist.dev.js +6557 -1363
  7. package/dist/dist.min.js +24 -16
  8. package/dist/draco/draco-javascript-loader-with-parser.d.ts +2 -2
  9. package/dist/draco/draco-loader-types.cjs +3 -3
  10. package/dist/draco/draco-loader-types.cjs.map +2 -2
  11. package/dist/draco/draco-loader-types.d.ts +1 -1
  12. package/dist/draco/draco-loader-types.d.ts.map +1 -1
  13. package/dist/draco/draco-loader-types.js +1 -1
  14. package/dist/draco/draco-loader-types.js.map +1 -1
  15. package/dist/draco/draco-loader.d.ts +2 -2
  16. package/dist/draco/draco-wasm-loader-with-parser.d.ts +2 -2
  17. package/dist/draco/draco3d-loader-with-parser.d.ts +2 -2
  18. package/dist/draco/lib/utils/version.cjs +1 -1
  19. package/dist/draco/lib/utils/version.js +1 -1
  20. package/dist/draco-worker-node.js +806 -158
  21. package/dist/draco-worker-node.js.map +4 -4
  22. package/dist/draco-worker.js +775 -158
  23. package/dist/draco-worker.js.map +4 -4
  24. package/dist/draco-writer-worker-node.cjs +2122 -219
  25. package/dist/draco-writer-worker-node.cjs.map +4 -4
  26. package/dist/draco-writer-worker.js +2053 -220
  27. package/dist/draco-writer-worker.js.map +4 -4
  28. package/dist/gltf/gltf-loader-types.cjs.map +2 -2
  29. package/dist/gltf/gltf-loader-types.d.ts +6 -0
  30. package/dist/gltf/gltf-loader-types.d.ts.map +1 -1
  31. package/dist/gltf/gltf-loader-types.js.map +1 -1
  32. package/dist/gltf/index.cjs +2 -0
  33. package/dist/gltf/index.cjs.map +2 -2
  34. package/dist/gltf/index.d.ts +2 -2
  35. package/dist/gltf/index.d.ts.map +1 -1
  36. package/dist/gltf/index.js +1 -1
  37. package/dist/gltf/index.js.map +1 -1
  38. package/dist/gltf/lib/api/gltf-extensions.cjs +7 -2
  39. package/dist/gltf/lib/api/gltf-extensions.cjs.map +2 -2
  40. package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -1
  41. package/dist/gltf/lib/api/gltf-extensions.js +7 -5
  42. package/dist/gltf/lib/api/gltf-extensions.js.map +1 -1
  43. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +1 -0
  44. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +2 -2
  45. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  46. package/dist/gltf/lib/extensions/EXT_texture_webp.js +3 -0
  47. package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -1
  48. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs +45 -0
  49. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs.map +7 -0
  50. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts +6 -0
  51. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts.map +1 -0
  52. package/dist/gltf/lib/extensions/KHR_accessor_float64.js +20 -0
  53. package/dist/gltf/lib/extensions/KHR_accessor_float64.js.map +1 -0
  54. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +23 -7
  55. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +2 -2
  56. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +2 -1
  57. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -1
  58. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +21 -5
  59. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -1
  60. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs +64 -0
  61. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs.map +7 -0
  62. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts +12 -0
  63. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts.map +1 -0
  64. package/dist/gltf/lib/extensions/MSFT_texture_dds.js +39 -0
  65. package/dist/gltf/lib/extensions/MSFT_texture_dds.js.map +1 -0
  66. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +1 -1
  67. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +2 -2
  68. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
  69. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +3 -1
  70. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
  71. package/dist/gltf/lib/parsers/parse-gltf.cjs +25 -0
  72. package/dist/gltf/lib/parsers/parse-gltf.cjs.map +2 -2
  73. package/dist/gltf/lib/parsers/parse-gltf.d.ts +2 -0
  74. package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -1
  75. package/dist/gltf/lib/parsers/parse-gltf.js +18 -0
  76. package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -1
  77. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs +22 -0
  78. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs.map +2 -2
  79. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts +23 -0
  80. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts.map +1 -1
  81. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js +22 -0
  82. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js.map +1 -1
  83. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +1 -1
  84. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +1 -1
  85. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -1
  86. package/dist/gltf/lib/types/gltf-extension-schemas.cjs +8 -0
  87. package/dist/gltf/lib/types/gltf-extension-schemas.cjs.map +2 -2
  88. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts +27 -0
  89. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts.map +1 -1
  90. package/dist/gltf/lib/types/gltf-extension-schemas.js +8 -1
  91. package/dist/gltf/lib/types/gltf-extension-schemas.js.map +1 -1
  92. package/dist/gltf/lib/types/gltf-json-schema.cjs.map +1 -1
  93. package/dist/gltf/lib/types/gltf-json-schema.d.ts +2 -2
  94. package/dist/gltf/lib/types/gltf-json-schema.d.ts.map +1 -1
  95. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs +19 -0
  96. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs.map +7 -0
  97. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts +45 -0
  98. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts.map +1 -0
  99. package/dist/gltf/lib/types/gltf-texture-procedurals.js +5 -0
  100. package/dist/gltf/lib/types/gltf-texture-procedurals.js.map +1 -0
  101. package/dist/gltf/lib/types/gltf-types.cjs.map +1 -1
  102. package/dist/gltf/lib/types/gltf-types.d.ts +7 -0
  103. package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -1
  104. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts +34 -0
  105. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts.map +1 -1
  106. package/dist/gltf/lib/types/gltf-zod-schema.cjs +4 -1
  107. package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +2 -2
  108. package/dist/gltf/lib/types/gltf-zod-schema.d.ts +56 -0
  109. package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -1
  110. package/dist/gltf/lib/types/gltf-zod-schema.js +6 -2
  111. package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -1
  112. package/dist/gltf/lib/utils/version.cjs +1 -1
  113. package/dist/gltf/lib/utils/version.js +1 -1
  114. package/dist/gltf/schema.cjs +3 -0
  115. package/dist/gltf/schema.cjs.map +2 -2
  116. package/dist/gltf/schema.d.ts +1 -0
  117. package/dist/gltf/schema.d.ts.map +1 -1
  118. package/dist/gltf/schema.js +1 -0
  119. package/dist/gltf/schema.js.map +1 -1
  120. package/dist/gltf-loader-types.cjs.map +2 -2
  121. package/dist/index.cjs +7 -1
  122. package/dist/index.cjs.map +2 -2
  123. package/dist/index.d.ts +3 -0
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +3 -1
  126. package/dist/index.js.map +1 -1
  127. package/dist/materialx/parse-materialx.cjs +61 -0
  128. package/dist/materialx/parse-materialx.cjs.map +7 -0
  129. package/dist/materialx/parse-materialx.d.ts +23 -0
  130. package/dist/materialx/parse-materialx.d.ts.map +1 -0
  131. package/dist/materialx/parse-materialx.js +39 -0
  132. package/dist/materialx/parse-materialx.js.map +1 -0
  133. package/dist/materialx/procedural-graph.cjs +77 -0
  134. package/dist/materialx/procedural-graph.cjs.map +7 -0
  135. package/dist/materialx/procedural-graph.d.ts +40 -0
  136. package/dist/materialx/procedural-graph.d.ts.map +1 -0
  137. package/dist/materialx/procedural-graph.js +59 -0
  138. package/dist/materialx/procedural-graph.js.map +1 -0
  139. package/dist/materialx-loader-types.cjs +57 -0
  140. package/dist/materialx-loader-types.cjs.map +7 -0
  141. package/dist/materialx-loader-types.d.ts +34 -0
  142. package/dist/materialx-loader-types.d.ts.map +1 -0
  143. package/dist/materialx-loader-types.js +20 -0
  144. package/dist/materialx-loader-types.js.map +1 -0
  145. package/dist/materialx-loader.cjs +40 -0
  146. package/dist/materialx-loader.cjs.map +7 -0
  147. package/dist/materialx-loader.d.ts +19 -0
  148. package/dist/materialx-loader.d.ts.map +1 -0
  149. package/dist/materialx-loader.js +14 -0
  150. package/dist/materialx-loader.js.map +1 -0
  151. package/dist/mtl-loader-types.cjs +1 -1
  152. package/dist/obj/mtl-loader-types.cjs +1 -1
  153. package/dist/obj/mtl-loader-types.js +1 -1
  154. package/dist/obj/obj-loader-types.cjs +3 -3
  155. package/dist/obj/obj-loader-types.cjs.map +2 -2
  156. package/dist/obj/obj-loader-types.d.ts +1 -1
  157. package/dist/obj/obj-loader-types.d.ts.map +1 -1
  158. package/dist/obj/obj-loader-types.js +2 -2
  159. package/dist/obj/obj-loader-types.js.map +1 -1
  160. package/dist/obj/obj-loader.cjs +5 -5
  161. package/dist/obj/obj-loader.cjs.map +2 -2
  162. package/dist/obj/obj-loader.d.ts +1 -1
  163. package/dist/obj/obj-loader.d.ts.map +1 -1
  164. package/dist/obj/obj-loader.js +1 -1
  165. package/dist/obj/obj-loader.js.map +1 -1
  166. package/dist/obj/obj-writer.cjs +1 -1
  167. package/dist/obj/obj-writer.js +1 -1
  168. package/dist/obj-loader-types.cjs +3 -3
  169. package/dist/obj-loader-types.cjs.map +2 -2
  170. package/dist/obj-loader.cjs +5 -5
  171. package/dist/obj-loader.cjs.map +2 -2
  172. package/dist/obj-worker.js +985 -368
  173. package/dist/obj-writer.cjs +1 -1
  174. package/dist/stl/parse-stl.cjs +100 -0
  175. package/dist/stl/parse-stl.cjs.map +7 -0
  176. package/dist/stl/parse-stl.d.ts +4 -0
  177. package/dist/stl/parse-stl.d.ts.map +1 -0
  178. package/dist/stl/parse-stl.js +84 -0
  179. package/dist/stl/parse-stl.js.map +1 -0
  180. package/dist/stl-loader-types.cjs +58 -0
  181. package/dist/stl-loader-types.cjs.map +7 -0
  182. package/dist/stl-loader-types.d.ts +32 -0
  183. package/dist/stl-loader-types.d.ts.map +1 -0
  184. package/dist/stl-loader-types.js +25 -0
  185. package/dist/stl-loader-types.js.map +1 -0
  186. package/dist/stl-loader.cjs +38 -0
  187. package/dist/stl-loader.cjs.map +7 -0
  188. package/dist/stl-loader.d.ts +17 -0
  189. package/dist/stl-loader.d.ts.map +1 -0
  190. package/dist/stl-loader.js +13 -0
  191. package/dist/stl-loader.js.map +1 -0
  192. package/dist/usd/index.cjs.map +1 -1
  193. package/dist/usd/index.d.ts +1 -1
  194. package/dist/usd/index.d.ts.map +1 -1
  195. package/dist/usd/lib/parse-usd.cjs +42 -5
  196. package/dist/usd/lib/parse-usd.cjs.map +2 -2
  197. package/dist/usd/lib/parse-usd.d.ts.map +1 -1
  198. package/dist/usd/lib/parse-usd.js +53 -6
  199. package/dist/usd/lib/parse-usd.js.map +1 -1
  200. package/dist/usd/lib/parse-usdc.cjs +187 -0
  201. package/dist/usd/lib/parse-usdc.cjs.map +7 -0
  202. package/dist/usd/lib/parse-usdc.d.ts +4 -0
  203. package/dist/usd/lib/parse-usdc.d.ts.map +1 -0
  204. package/dist/usd/lib/parse-usdc.js +176 -0
  205. package/dist/usd/lib/parse-usdc.js.map +1 -0
  206. package/dist/usd/lib/parse-usdz.cjs +22 -0
  207. package/dist/usd/lib/parse-usdz.cjs.map +2 -2
  208. package/dist/usd/lib/parse-usdz.d.ts.map +1 -1
  209. package/dist/usd/lib/parse-usdz.js +26 -0
  210. package/dist/usd/lib/parse-usdz.js.map +1 -1
  211. package/dist/usd/lib/usd-types.cjs.map +1 -1
  212. package/dist/usd/lib/usd-types.d.ts +14 -1
  213. package/dist/usd/lib/usd-types.d.ts.map +1 -1
  214. package/dist/usd/lib/usd-types.js +1 -1
  215. package/dist/usd/lib/usd-types.js.map +1 -1
  216. package/dist/usd/libs/README.md +27 -0
  217. package/dist/usd/libs/THREE-LICENSE +21 -0
  218. package/dist/usd/libs/usdc-parser.d.ts +78 -0
  219. package/dist/usd/libs/usdc-parser.d.ts.map +1 -0
  220. package/dist/usd/libs/usdc-parser.js +1669 -0
  221. package/dist/usd/libs/usdc-parser.js.map +1 -0
  222. package/dist/usd/usd-loader-types.cjs +4 -4
  223. package/dist/usd/usd-loader-types.cjs.map +2 -2
  224. package/dist/usd/usd-loader-types.d.ts +7 -7
  225. package/dist/usd/usd-loader-types.d.ts.map +1 -1
  226. package/dist/usd/usd-loader-types.js +6 -6
  227. package/dist/usd/usd-loader-types.js.map +1 -1
  228. package/dist/usd/usd-loader.cjs.map +1 -1
  229. package/dist/usd/usd-loader.d.ts +4 -4
  230. package/dist/usd/usd-loader.d.ts.map +1 -1
  231. package/dist/usd/usd-loader.js +2 -2
  232. package/dist/usd/usd-loader.js.map +1 -1
  233. package/dist/usd-loader-types.cjs +4 -4
  234. package/dist/usd-loader-types.cjs.map +2 -2
  235. package/dist/usd-loader.cjs.map +1 -1
  236. package/package.json +19 -7
  237. package/src/draco/draco-loader-types.ts +1 -1
  238. package/src/gltf/gltf-loader-types.ts +6 -0
  239. package/src/gltf/index.ts +4 -1
  240. package/src/gltf/lib/api/gltf-extensions.ts +7 -2
  241. package/src/gltf/lib/extensions/EXT_texture_webp.ts +3 -0
  242. package/src/gltf/lib/extensions/KHR_accessor_float64.ts +22 -0
  243. package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +31 -7
  244. package/src/gltf/lib/extensions/MSFT_texture_dds.ts +52 -0
  245. package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +5 -1
  246. package/src/gltf/lib/parsers/parse-gltf.ts +31 -0
  247. package/src/gltf/lib/types/gltf-additional-extension-schemas.ts +32 -0
  248. package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +1 -1
  249. package/src/gltf/lib/types/gltf-extension-schemas.ts +12 -0
  250. package/src/gltf/lib/types/gltf-json-schema.ts +2 -1
  251. package/src/gltf/lib/types/gltf-texture-procedurals.ts +67 -0
  252. package/src/gltf/lib/types/gltf-types.ts +8 -0
  253. package/src/gltf/lib/types/gltf-zod-schema.ts +7 -1
  254. package/src/gltf/schema.ts +1 -0
  255. package/src/index.ts +6 -1
  256. package/src/materialx/README.md +5 -0
  257. package/src/materialx/parse-materialx.ts +70 -0
  258. package/src/materialx/procedural-graph.ts +94 -0
  259. package/src/materialx-loader-types.ts +24 -0
  260. package/src/materialx-loader.ts +15 -0
  261. package/src/obj/obj-loader-types.ts +1 -1
  262. package/src/obj/obj-loader.ts +1 -1
  263. package/src/stl/parse-stl.ts +90 -0
  264. package/src/stl-loader-types.ts +28 -0
  265. package/src/stl-loader.ts +12 -0
  266. package/src/usd/index.ts +1 -0
  267. package/src/usd/lib/parse-usd.ts +68 -7
  268. package/src/usd/lib/parse-usdc.ts +188 -0
  269. package/src/usd/lib/parse-usdz.ts +28 -0
  270. package/src/usd/lib/usd-types.ts +16 -2
  271. package/src/usd/libs/README.md +27 -0
  272. package/src/usd/libs/THREE-LICENSE +21 -0
  273. package/src/usd/libs/usdc-parser.d.ts +18 -0
  274. package/src/usd/libs/usdc-parser.js +1669 -0
  275. package/src/usd/usd-loader-types.ts +5 -5
  276. package/src/usd/usd-loader.ts +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/obj/obj-loader-types.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, ArrowTableBatch} from '@loaders.gl/core/schema';\nimport {OBJFormat} from './obj-format';\nimport {serializeArrowWorkerTable} from '@loaders.gl/core/schema-utils/arrow-transport';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type OBJLoaderOptions = LoaderOptions & {\n obj?: {\n /** Output shape. Defaults to a Mesh Arrow table. */\n shape?: 'mesh' | 'arrow-table';\n /** Treat OBJ vertex records as a point cloud and stream `v` rows in batches. */\n pointCloud?: boolean;\n /** Override the URL to the worker bundle (by default loads from unpkg.com) */\n workerUrl?: string;\n };\n};\n\n/** Legacy OBJ mesh batch returned after caller-side conversion. */\nexport type OBJMeshBatch = {\n /** Legacy mesh batch shape. */\n shape: 'mesh';\n /** Parsed data batch discriminator. */\n batchType: 'data';\n /** Decoded mesh. */\n data: Mesh;\n /** Number of vertices. */\n length: number;\n};\n\n/** Public OBJ batch output shapes. */\nexport type OBJParsedBatch = OBJMeshBatch | ArrowTableBatch;\n\n/**\n * Preloads the parser-bearing OBJ loader implementation.\n */\nasync function preload() {\n const {OBJLoaderWithParser} = await import('@loaders.gl/scene/obj-loader');\n return OBJLoaderWithParser;\n}\n\n/**\n * Metadata-only worker loader for the OBJ geometry format\n */\nexport const OBJLoader = {\n ...OBJFormat,\n\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as unknown as OBJParsedBatch,\n version: VERSION,\n worker: true,\n /** Enables the stateful input/output batch protocol on the built-in worker. */\n workerInBatches: true,\n serializeWorkerResult: serializeArrowWorkerTable,\n text: true,\n testText: testOBJFile,\n options: {\n obj: {shape: 'arrow-table'}\n },\n preload\n} as const satisfies Loader<Mesh | MeshArrowTable, OBJParsedBatch, OBJLoaderOptions>;\n\nfunction testOBJFile(text: string): boolean {\n // TODO - There could be comment line first\n return text[0] === 'v';\n}\n\n/** @deprecated Use OBJLoader. */\nexport const OBJWorkerLoader = OBJLoader;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,wBAAwB;AACxB,6BAAwC;AAIxC,IAAM,UAAU,OAAqC,iBAAc;AA+BnE,eAAe,UAAU;AACvB,QAAM,EAAC,oBAAmB,IAAI,MAAM,OAAO,8BAA8B;AACzE,SAAO;AACT;AAKO,IAAM,YAAY;AAAA,EACvB,GAAG;AAAA,EAEH,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA,EAER,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,IACP,KAAK,EAAC,OAAO,cAAa;AAAA,EAC5B;AAAA,EACA;AACF;AAEA,SAAS,YAAY,MAAuB;AAE1C,SAAO,KAAK,CAAC,MAAM;AACrB;AAGO,IAAM,kBAAkB;",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, ArrowTableBatch} from '@loaders.gl/core/schema';\nimport {OBJFormat} from './obj-format';\nimport {serializeArrowWorkerTable} from '@loaders.gl/core/arrow-worker-transport';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type OBJLoaderOptions = LoaderOptions & {\n obj?: {\n /** Output shape. Defaults to a Mesh Arrow table. */\n shape?: 'mesh' | 'arrow-table';\n /** Treat OBJ vertex records as a point cloud and stream `v` rows in batches. */\n pointCloud?: boolean;\n /** Override the URL to the worker bundle (by default loads from unpkg.com) */\n workerUrl?: string;\n };\n};\n\n/** Legacy OBJ mesh batch returned after caller-side conversion. */\nexport type OBJMeshBatch = {\n /** Legacy mesh batch shape. */\n shape: 'mesh';\n /** Parsed data batch discriminator. */\n batchType: 'data';\n /** Decoded mesh. */\n data: Mesh;\n /** Number of vertices. */\n length: number;\n};\n\n/** Public OBJ batch output shapes. */\nexport type OBJParsedBatch = OBJMeshBatch | ArrowTableBatch;\n\n/**\n * Preloads the parser-bearing OBJ loader implementation.\n */\nasync function preload() {\n const {OBJLoaderWithParser} = await import('@loaders.gl/scene/obj-loader');\n return OBJLoaderWithParser;\n}\n\n/**\n * Metadata-only worker loader for the OBJ geometry format\n */\nexport const OBJLoader = {\n ...OBJFormat,\n\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as unknown as OBJParsedBatch,\n version: VERSION,\n worker: true,\n /** Enables the stateful input/output batch protocol on the built-in worker. */\n workerInBatches: true,\n serializeWorkerResult: serializeArrowWorkerTable,\n text: true,\n testText: testOBJFile,\n options: {\n obj: {shape: 'arrow-table'}\n },\n preload\n} as const satisfies Loader<Mesh | MeshArrowTable, OBJParsedBatch, OBJLoaderOptions>;\n\nfunction testOBJFile(text: string): boolean {\n // TODO - There could be comment line first\n return text[0] === 'v';\n}\n\n/** @deprecated Use OBJLoader. */\nexport const OBJWorkerLoader = OBJLoader;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,wBAAwB;AACxB,oCAAwC;AAIxC,IAAM,UAAU,OAAqC,iBAAc;AA+BnE,eAAe,UAAU;AACvB,QAAM,EAAC,oBAAmB,IAAI,MAAM,OAAO,8BAA8B;AACzE,SAAO;AACT;AAKO,IAAM,YAAY;AAAA,EACvB,GAAG;AAAA,EAEH,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA,EAER,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,IACP,KAAK,EAAC,OAAO,cAAa;AAAA,EAC5B;AAAA,EACA;AACF;AAEA,SAAS,YAAY,MAAuB;AAE1C,SAAO,KAAK,CAAC,MAAM;AACrB;AAGO,IAAM,kBAAkB;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import type { LoaderOptions } from '@loaders.gl/core/loader-utils';
2
2
  import type { Mesh, MeshArrowTable, ArrowTableBatch } from '@loaders.gl/core/schema';
3
- import { serializeArrowWorkerTable } from '@loaders.gl/core/schema-utils/arrow-transport';
3
+ import { serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
4
4
  export type OBJLoaderOptions = LoaderOptions & {
5
5
  obj?: {
6
6
  /** Output shape. Defaults to a Mesh Arrow table. */
@@ -1 +1 @@
1
- {"version":3,"file":"obj-loader-types.d.ts","sourceRoot":"","sources":["../../src/obj/obj-loader-types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,aAAa,EAAC,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAC,yBAAyB,EAAC,MAAM,+CAA+C,CAAC;AAMxF,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,oDAAoD;QACpD,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;QAC/B,gFAAgF;QAChF,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG;IACzB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,eAAe,CAAC;AAE5D;;GAEG;AACH,iBAAe,OAAO;;;;;;;;uBAWS,IAAI,GAAG,cAAc;wBACpB,cAAc;;;;;;;;;;;;;;;;;;GAT7C;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;uBAGS,IAAI,GAAG,cAAc;wBACpB,cAAc;;;IAG5C,+EAA+E;;;;;;;;;;;;;;;;;;CASG,CAAC;AAErF,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1C;AAED,iCAAiC;AACjC,eAAO,MAAM,eAAe;uBArBG,IAAI,GAAG,cAAc;wBACpB,cAAc;;;IAG5C,+EAA+E;;;;;;;;;;;;;;;;;;CAiBzC,CAAC"}
1
+ {"version":3,"file":"obj-loader-types.d.ts","sourceRoot":"","sources":["../../src/obj/obj-loader-types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAS,aAAa,EAAC,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAC,yBAAyB,EAAC,MAAM,yCAAyC,CAAC;AAMlF,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QACJ,oDAAoD;QACpD,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;QAC/B,gFAAgF;QAChF,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,8EAA8E;QAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,YAAY,GAAG;IACzB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,eAAe,CAAC;AAE5D;;GAEG;AACH,iBAAe,OAAO;;;;;;;;uBAWS,IAAI,GAAG,cAAc;wBACpB,cAAc;;;;;;;;;;;;;;;;;;GAT7C;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;uBAGS,IAAI,GAAG,cAAc;wBACpB,cAAc;;;IAG5C,+EAA+E;;;;;;;;;;;;;;;;;;CASG,CAAC;AAErF,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1C;AAED,iCAAiC;AACjC,eAAO,MAAM,eAAe;uBArBG,IAAI,GAAG,cAAc;wBACpB,cAAc;;;IAG5C,+EAA+E;;;;;;;;;;;;;;;;;;CAiBzC,CAAC"}
@@ -2,10 +2,10 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { OBJFormat } from "./obj-format.js";
5
- import { serializeArrowWorkerTable } from '@loaders.gl/core/schema-utils/arrow-transport';
5
+ import { serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
6
6
  // __VERSION__ is injected by babel-plugin-version-inline
7
7
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
- const VERSION = typeof "5.0.0-beta.2" !== 'undefined' ? "5.0.0-beta.2" : 'latest';
8
+ const VERSION = typeof "5.0.0-beta.5" !== 'undefined' ? "5.0.0-beta.5" : 'latest';
9
9
  /**
10
10
  * Preloads the parser-bearing OBJ loader implementation.
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"obj-loader-types.js","sourceRoot":"","sources":["../../src/obj/obj-loader-types.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,yBAAyB,EAAC,MAAM,+CAA+C,CAAC;AAExF,yDAAyD;AACzD,qDAAqD;AACrD,MAAM,OAAO,GAAG,qBAAkB,KAAK,WAAW,CAAC,CAAC,gBAAa,CAAC,CAAC,QAAQ,CAAC;AA4B5E;;GAEG;AACH,KAAK,UAAU,OAAO;IACpB,MAAM,EAAC,mBAAmB,EAAC,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAC3E,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,SAAS;IAEZ,QAAQ,EAAE,IAAwC;IAClD,SAAS,EAAE,IAAiC;IAC5C,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,IAAI;IACZ,+EAA+E;IAC/E,eAAe,EAAE,IAAI;IACrB,qBAAqB,EAAE,yBAAyB;IAChD,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE;QACP,GAAG,EAAE,EAAC,KAAK,EAAE,aAAa,EAAC;KAC5B;IACD,OAAO;CAC2E,CAAC;AAErF,SAAS,WAAW,CAAC,IAAY;IAC/B,2CAA2C;IAC3C,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AACzB,CAAC;AAED,iCAAiC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"obj-loader-types.js","sourceRoot":"","sources":["../../src/obj/obj-loader-types.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,SAAS,EAAC,wBAAqB;AACvC,OAAO,EAAC,yBAAyB,EAAC,MAAM,yCAAyC,CAAC;AAElF,yDAAyD;AACzD,qDAAqD;AACrD,MAAM,OAAO,GAAG,qBAAkB,KAAK,WAAW,CAAC,CAAC,gBAAa,CAAC,CAAC,QAAQ,CAAC;AA4B5E;;GAEG;AACH,KAAK,UAAU,OAAO;IACpB,MAAM,EAAC,mBAAmB,EAAC,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAC3E,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,SAAS;IAEZ,QAAQ,EAAE,IAAwC;IAClD,SAAS,EAAE,IAAiC;IAC5C,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,IAAI;IACZ,+EAA+E;IAC/E,eAAe,EAAE,IAAI;IACrB,qBAAqB,EAAE,yBAAyB;IAChD,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE;QACP,GAAG,EAAE,EAAC,KAAK,EAAE,aAAa,EAAC;KAC5B;IACD,OAAO;CAC2E,CAAC;AAErF,SAAS,WAAW,CAAC,IAAY;IAC/B,2CAA2C;IAC3C,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;AACzB,CAAC;AAED,iCAAiC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC"}
@@ -24,7 +24,7 @@ __export(obj_loader_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(obj_loader_exports);
26
26
  var import_loader_utils = require("@loaders.gl/core/loader-utils");
27
- var import_arrow_transport = require("@loaders.gl/core/schema-utils/arrow-transport");
27
+ var import_arrow_worker_transport = require("@loaders.gl/core/arrow-worker-transport");
28
28
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
29
29
  var import_get_obj_schema = require("./lib/get-obj-schema.cjs");
30
30
  var import_parse_obj = require("./lib/parse-obj.cjs");
@@ -54,9 +54,9 @@ var OBJLoaderWithParser = {
54
54
  }
55
55
  yield* parseOBJPointCloudInBatches(text, options, batchSize);
56
56
  },
57
- serializeWorkerResult: import_arrow_transport.serializeArrowWorkerTable,
57
+ serializeWorkerResult: import_arrow_worker_transport.serializeArrowWorkerTable,
58
58
  deserializeWorkerResult: deserializeOBJWorkerResult,
59
- serializeWorkerBatch: import_arrow_transport.serializeArrowWorkerTable,
59
+ serializeWorkerBatch: import_arrow_worker_transport.serializeArrowWorkerTable,
60
60
  deserializeWorkerBatch: deserializeOBJWorkerBatch
61
61
  };
62
62
  function getNumericBatchSize(options) {
@@ -145,11 +145,11 @@ function makeOBJBatch(mesh, options) {
145
145
  return (0, import_loader_utils.makeTableScanBatch)(table);
146
146
  }
147
147
  function deserializeOBJWorkerResult(result, options) {
148
- const table = (0, import_arrow_transport.deserializeArrowWorkerTable)(result);
148
+ const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
149
149
  return options?.obj?.shape === "mesh" ? (0, import_schema_utils.convertTableToMesh)(table) : table;
150
150
  }
151
151
  function deserializeOBJWorkerBatch(result, options) {
152
- const table = (0, import_arrow_transport.deserializeArrowWorkerTable)(result);
152
+ const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
153
153
  if (options?.obj?.shape !== "mesh") return table;
154
154
  const mesh = (0, import_schema_utils.convertTableToMesh)(table);
155
155
  return { shape: "mesh", batchType: "data", data: mesh, length: table.length };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/obj/obj-loader.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {OBJLoaderOptions, OBJParsedBatch} from './obj-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeLineIterator,\n makeTextDecoderIterator,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/schema-utils/arrow-transport';\nimport {\n convertMeshToTable,\n convertTableToMesh,\n getMeshBoundingBox\n} from '@loaders.gl/core/schema-utils';\nimport {getOBJSchema} from './lib/get-obj-schema';\nimport {parseOBJ} from './lib/parse-obj';\nimport {OBJLoader as OBJLoaderMetadata} from './obj-loader-types';\n\nconst {preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload} = OBJLoaderMetadata;\n\nfunction convertOBJMesh(mesh: Mesh, options?: OBJLoaderOptions): Mesh | MeshArrowTable {\n const table = convertMeshToTable(mesh, 'arrow-table');\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n// OBJLoaderWithParser\n\n/**\n * Loader for the OBJ geometry format\n */\nexport const OBJLoaderWithParser = {\n ...OBJLoaderMetadataWithoutPreload,\n parse: async (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(new TextDecoder().decode(arrayBuffer), options), options),\n parseTextSync: (text: string, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(text, options), options),\n parseInBatches: async function* (\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options\n ): AsyncIterable<OBJParsedBatch> {\n const batchSize = getNumericBatchSize(options);\n if (options?.obj?.pointCloud) {\n const textIterator = makeTextDecoderIterator(arrayBuffer as AsyncIterable<ArrayBuffer>);\n const lineIterator = makeLineIterator(textIterator);\n yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);\n return;\n }\n\n const data = await concatenateArrayBuffersAsync(arrayBuffer);\n const text = new TextDecoder().decode(data);\n if (hasOBJGeometryRecords(text)) {\n yield makeOBJBatch(parseOBJ(text, options), options);\n return;\n }\n\n yield* parseOBJPointCloudInBatches(text, options, batchSize);\n },\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializeOBJWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializeOBJWorkerBatch\n} as const satisfies LoaderWithParser<Mesh | MeshArrowTable, OBJParsedBatch, OBJLoaderOptions>;\n\n/** Returns a numeric batch size when batching has an explicit row count. */\nfunction getNumericBatchSize(options?: OBJLoaderOptions): number | undefined {\n const batchSize = options?.batchSize ?? options?.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : undefined;\n}\n\nfunction hasOBJGeometryRecords(text: string): boolean {\n return text.split(/\\r?\\n/).some(line => {\n const trimmedLine = line.trimStart();\n return trimmedLine.startsWith('f ') || trimmedLine.startsWith('l ');\n });\n}\n\nfunction* parseOBJPointCloudInBatches(\n text: string,\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const vertexLines = text.split(/\\r?\\n/).filter(line => line.trimStart().startsWith('v '));\n yield* makeOBJPointCloudBatches(vertexLines, options, batchSize);\n}\n\nasync function* parseOBJPointCloudLinesInBatches(\n lines: AsyncIterable<string>,\n options?: OBJLoaderOptions,\n batchSize?: number\n): AsyncIterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || 1000;\n let vertexLines: string[] = [];\n\n for await (const line of lines) {\n if (!line.trimStart().startsWith('v ')) {\n continue;\n }\n vertexLines.push(line);\n if (vertexLines.length >= normalizedBatchSize) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n vertexLines = [];\n }\n }\n\n if (vertexLines.length > 0) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n }\n}\n\nfunction* makeOBJPointCloudBatches(\n vertexLines: string[],\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || vertexLines.length || 1;\n\n for (let rowIndex = 0; rowIndex < vertexLines.length; rowIndex += normalizedBatchSize) {\n const mesh = parseOBJPointCloudMesh(\n vertexLines.slice(rowIndex, rowIndex + normalizedBatchSize)\n );\n yield makeOBJBatch(mesh, options);\n }\n}\n\n/** Builds a point-list mesh directly from OBJ `v` records. */\nfunction parseOBJPointCloudMesh(vertexLines: string[]): Mesh {\n const positions = new Float32Array(vertexLines.length * 3);\n\n for (let vertexIndex = 0; vertexIndex < vertexLines.length; vertexIndex++) {\n const values = vertexLines[vertexIndex].trim().split(/\\s+/);\n positions[vertexIndex * 3 + 0] = Number(values[1]);\n positions[vertexIndex * 3 + 1] = Number(values[2]);\n positions[vertexIndex * 3 + 2] = Number(values[3]);\n }\n\n const attributes = {\n POSITION: {\n value: positions,\n size: 3\n }\n };\n const boundingBox = getMeshBoundingBox(attributes);\n\n return {\n loaderData: {\n header: {}\n },\n schema: getOBJSchema(attributes, {\n mode: 0,\n boundingBox: boundingBox ?? undefined\n }),\n header: {\n vertexCount: vertexLines.length,\n boundingBox: boundingBox ?? undefined\n },\n mode: 0,\n topology: 'point-list',\n attributes\n };\n}\n\nfunction makeOBJBatch(mesh: Mesh, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = convertMeshToTable(mesh, 'arrow-table');\n if (options?.obj?.shape === 'mesh') {\n const convertedMesh = convertTableToMesh(table);\n return {\n shape: 'mesh',\n batchType: 'data',\n data: convertedMesh,\n length: convertedMesh.header?.vertexCount || 0\n };\n }\n\n return makeTableScanBatch(table);\n}\n\n/** Hydrates worker columns before applying the requested legacy mesh shape on the caller. */\nfunction deserializeOBJWorkerResult(\n result: unknown,\n options?: OBJLoaderOptions\n): Mesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n/** Restores the OBJ mesh batch envelope after caller-side conversion. */\nfunction deserializeOBJWorkerBatch(result: unknown, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = deserializeArrowWorkerTable(result);\n if (options?.obj?.shape !== 'mesh') return table;\n const mesh = convertTableToMesh(table);\n return {shape: 'mesh', batchType: 'data', data: mesh, length: table.length};\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,0BAMO;AAEP,6BAGO;AACP,0BAIO;AACP,4BAA2B;AAC3B,uBAAuB;AACvB,8BAA6C;AAE7C,IAAM,EAAC,SAAS,mBAAmB,GAAG,gCAA+B,IAAI,wBAAAA;AAEzE,SAAS,eAAe,MAAY,SAAmD;AACrF,QAAM,YAAQ,wCAAmB,MAAM,aAAa;AACpD,SAAO,SAAS,KAAK,UAAU,aAAS,wCAAmB,KAAK,IAAI;AACtE;AAOO,IAAM,sBAAsB;AAAA,EACjC,GAAG;AAAA,EACH,OAAO,OAAO,aAA0B,YACtC,mBAAe,2BAAS,IAAI,YAAY,EAAE,OAAO,WAAW,GAAG,OAAO,GAAG,OAAO;AAAA,EAClF,eAAe,CAAC,MAAc,YAC5B,mBAAe,2BAAS,MAAM,OAAO,GAAG,OAAO;AAAA,EACjD,gBAAgB,iBACd,aAGA,SAC+B;AAC/B,UAAM,YAAY,oBAAoB,OAAO;AAC7C,QAAI,SAAS,KAAK,YAAY;AAC5B,YAAM,mBAAe,6CAAwB,WAAyC;AACtF,YAAM,mBAAe,sCAAiB,YAAY;AAClD,aAAO,iCAAiC,cAAc,SAAS,SAAS;AACxE;AAAA,IACF;AAEA,UAAM,OAAO,UAAM,kDAA6B,WAAW;AAC3D,UAAM,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI;AAC1C,QAAI,sBAAsB,IAAI,GAAG;AAC/B,YAAM,iBAAa,2BAAS,MAAM,OAAO,GAAG,OAAO;AACnD;AAAA,IACF;AAEA,WAAO,4BAA4B,MAAM,SAAS,SAAS;AAAA,EAC7D;AAAA,EACA,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,wBAAwB;AAC1B;AAGA,SAAS,oBAAoB,SAAgD;AAC3E,QAAM,YAAY,SAAS,aAAa,SAAS,MAAM;AACvD,SAAO,OAAO,cAAc,WAAW,YAAY;AACrD;AAEA,SAAS,sBAAsB,MAAuB;AACpD,SAAO,KAAK,MAAM,OAAO,EAAE,KAAK,UAAQ;AACtC,UAAM,cAAc,KAAK,UAAU;AACnC,WAAO,YAAY,WAAW,IAAI,KAAK,YAAY,WAAW,IAAI;AAAA,EACpE,CAAC;AACH;AAEA,UAAU,4BACR,MACA,SACA,WAC0B;AAC1B,QAAM,cAAc,KAAK,MAAM,OAAO,EAAE,OAAO,UAAQ,KAAK,UAAU,EAAE,WAAW,IAAI,CAAC;AACxF,SAAO,yBAAyB,aAAa,SAAS,SAAS;AACjE;AAEA,gBAAgB,iCACd,OACA,SACA,WAC+B;AAC/B,QAAM,sBAAsB,aAAa;AACzC,MAAI,cAAwB,CAAC;AAE7B,mBAAiB,QAAQ,OAAO;AAC9B,QAAI,CAAC,KAAK,UAAU,EAAE,WAAW,IAAI,GAAG;AACtC;AAAA,IACF;AACA,gBAAY,KAAK,IAAI;AACrB,QAAI,YAAY,UAAU,qBAAqB;AAC7C,YAAM,aAAa,uBAAuB,WAAW,GAAG,OAAO;AAC/D,oBAAc,CAAC;AAAA,IACjB;AAAA,EACF;AAEA,MAAI,YAAY,SAAS,GAAG;AAC1B,UAAM,aAAa,uBAAuB,WAAW,GAAG,OAAO;AAAA,EACjE;AACF;AAEA,UAAU,yBACR,aACA,SACA,WAC0B;AAC1B,QAAM,sBAAsB,aAAa,YAAY,UAAU;AAE/D,WAAS,WAAW,GAAG,WAAW,YAAY,QAAQ,YAAY,qBAAqB;AACrF,UAAM,OAAO;AAAA,MACX,YAAY,MAAM,UAAU,WAAW,mBAAmB;AAAA,IAC5D;AACA,UAAM,aAAa,MAAM,OAAO;AAAA,EAClC;AACF;AAGA,SAAS,uBAAuB,aAA6B;AAC3D,QAAM,YAAY,IAAI,aAAa,YAAY,SAAS,CAAC;AAEzD,WAAS,cAAc,GAAG,cAAc,YAAY,QAAQ,eAAe;AACzE,UAAM,SAAS,YAAY,WAAW,EAAE,KAAK,EAAE,MAAM,KAAK;AAC1D,cAAU,cAAc,IAAI,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC;AACjD,cAAU,cAAc,IAAI,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC;AACjD,cAAU,cAAc,IAAI,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC;AAAA,EACnD;AAEA,QAAM,aAAa;AAAA,IACjB,UAAU;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AACA,QAAM,kBAAc,wCAAmB,UAAU;AAEjD,SAAO;AAAA,IACL,YAAY;AAAA,MACV,QAAQ,CAAC;AAAA,IACX;AAAA,IACA,YAAQ,oCAAa,YAAY;AAAA,MAC/B,MAAM;AAAA,MACN,aAAa,eAAe;AAAA,IAC9B,CAAC;AAAA,IACD,QAAQ;AAAA,MACN,aAAa,YAAY;AAAA,MACzB,aAAa,eAAe;AAAA,IAC9B;AAAA,IACA,MAAM;AAAA,IACN,UAAU;AAAA,IACV;AAAA,EACF;AACF;AAEA,SAAS,aAAa,MAAY,SAA4C;AAC5E,QAAM,YAAQ,wCAAmB,MAAM,aAAa;AACpD,MAAI,SAAS,KAAK,UAAU,QAAQ;AAClC,UAAM,oBAAgB,wCAAmB,KAAK;AAC9C,WAAO;AAAA,MACL,OAAO;AAAA,MACP,WAAW;AAAA,MACX,MAAM;AAAA,MACN,QAAQ,cAAc,QAAQ,eAAe;AAAA,IAC/C;AAAA,EACF;AAEA,aAAO,wCAAmB,KAAK;AACjC;AAGA,SAAS,2BACP,QACA,SACuB;AACvB,QAAM,YAAQ,oDAA4B,MAAM;AAChD,SAAO,SAAS,KAAK,UAAU,aAAS,wCAAmB,KAAK,IAAI;AACtE;AAGA,SAAS,0BAA0B,QAAiB,SAA4C;AAC9F,QAAM,YAAQ,oDAA4B,MAAM;AAChD,MAAI,SAAS,KAAK,UAAU,OAAQ,QAAO;AAC3C,QAAM,WAAO,wCAAmB,KAAK;AACrC,SAAO,EAAC,OAAO,QAAQ,WAAW,QAAQ,MAAM,MAAM,QAAQ,MAAM,OAAM;AAC5E;",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {OBJLoaderOptions, OBJParsedBatch} from './obj-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeLineIterator,\n makeTextDecoderIterator,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/arrow-worker-transport';\nimport {\n convertMeshToTable,\n convertTableToMesh,\n getMeshBoundingBox\n} from '@loaders.gl/core/schema-utils';\nimport {getOBJSchema} from './lib/get-obj-schema';\nimport {parseOBJ} from './lib/parse-obj';\nimport {OBJLoader as OBJLoaderMetadata} from './obj-loader-types';\n\nconst {preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload} = OBJLoaderMetadata;\n\nfunction convertOBJMesh(mesh: Mesh, options?: OBJLoaderOptions): Mesh | MeshArrowTable {\n const table = convertMeshToTable(mesh, 'arrow-table');\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n// OBJLoaderWithParser\n\n/**\n * Loader for the OBJ geometry format\n */\nexport const OBJLoaderWithParser = {\n ...OBJLoaderMetadataWithoutPreload,\n parse: async (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(new TextDecoder().decode(arrayBuffer), options), options),\n parseTextSync: (text: string, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(text, options), options),\n parseInBatches: async function* (\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options\n ): AsyncIterable<OBJParsedBatch> {\n const batchSize = getNumericBatchSize(options);\n if (options?.obj?.pointCloud) {\n const textIterator = makeTextDecoderIterator(arrayBuffer as AsyncIterable<ArrayBuffer>);\n const lineIterator = makeLineIterator(textIterator);\n yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);\n return;\n }\n\n const data = await concatenateArrayBuffersAsync(arrayBuffer);\n const text = new TextDecoder().decode(data);\n if (hasOBJGeometryRecords(text)) {\n yield makeOBJBatch(parseOBJ(text, options), options);\n return;\n }\n\n yield* parseOBJPointCloudInBatches(text, options, batchSize);\n },\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializeOBJWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializeOBJWorkerBatch\n} as const satisfies LoaderWithParser<Mesh | MeshArrowTable, OBJParsedBatch, OBJLoaderOptions>;\n\n/** Returns a numeric batch size when batching has an explicit row count. */\nfunction getNumericBatchSize(options?: OBJLoaderOptions): number | undefined {\n const batchSize = options?.batchSize ?? options?.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : undefined;\n}\n\nfunction hasOBJGeometryRecords(text: string): boolean {\n return text.split(/\\r?\\n/).some(line => {\n const trimmedLine = line.trimStart();\n return trimmedLine.startsWith('f ') || trimmedLine.startsWith('l ');\n });\n}\n\nfunction* parseOBJPointCloudInBatches(\n text: string,\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const vertexLines = text.split(/\\r?\\n/).filter(line => line.trimStart().startsWith('v '));\n yield* makeOBJPointCloudBatches(vertexLines, options, batchSize);\n}\n\nasync function* parseOBJPointCloudLinesInBatches(\n lines: AsyncIterable<string>,\n options?: OBJLoaderOptions,\n batchSize?: number\n): AsyncIterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || 1000;\n let vertexLines: string[] = [];\n\n for await (const line of lines) {\n if (!line.trimStart().startsWith('v ')) {\n continue;\n }\n vertexLines.push(line);\n if (vertexLines.length >= normalizedBatchSize) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n vertexLines = [];\n }\n }\n\n if (vertexLines.length > 0) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n }\n}\n\nfunction* makeOBJPointCloudBatches(\n vertexLines: string[],\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || vertexLines.length || 1;\n\n for (let rowIndex = 0; rowIndex < vertexLines.length; rowIndex += normalizedBatchSize) {\n const mesh = parseOBJPointCloudMesh(\n vertexLines.slice(rowIndex, rowIndex + normalizedBatchSize)\n );\n yield makeOBJBatch(mesh, options);\n }\n}\n\n/** Builds a point-list mesh directly from OBJ `v` records. */\nfunction parseOBJPointCloudMesh(vertexLines: string[]): Mesh {\n const positions = new Float32Array(vertexLines.length * 3);\n\n for (let vertexIndex = 0; vertexIndex < vertexLines.length; vertexIndex++) {\n const values = vertexLines[vertexIndex].trim().split(/\\s+/);\n positions[vertexIndex * 3 + 0] = Number(values[1]);\n positions[vertexIndex * 3 + 1] = Number(values[2]);\n positions[vertexIndex * 3 + 2] = Number(values[3]);\n }\n\n const attributes = {\n POSITION: {\n value: positions,\n size: 3\n }\n };\n const boundingBox = getMeshBoundingBox(attributes);\n\n return {\n loaderData: {\n header: {}\n },\n schema: getOBJSchema(attributes, {\n mode: 0,\n boundingBox: boundingBox ?? undefined\n }),\n header: {\n vertexCount: vertexLines.length,\n boundingBox: boundingBox ?? undefined\n },\n mode: 0,\n topology: 'point-list',\n attributes\n };\n}\n\nfunction makeOBJBatch(mesh: Mesh, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = convertMeshToTable(mesh, 'arrow-table');\n if (options?.obj?.shape === 'mesh') {\n const convertedMesh = convertTableToMesh(table);\n return {\n shape: 'mesh',\n batchType: 'data',\n data: convertedMesh,\n length: convertedMesh.header?.vertexCount || 0\n };\n }\n\n return makeTableScanBatch(table);\n}\n\n/** Hydrates worker columns before applying the requested legacy mesh shape on the caller. */\nfunction deserializeOBJWorkerResult(\n result: unknown,\n options?: OBJLoaderOptions\n): Mesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n/** Restores the OBJ mesh batch envelope after caller-side conversion. */\nfunction deserializeOBJWorkerBatch(result: unknown, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = deserializeArrowWorkerTable(result);\n if (options?.obj?.shape !== 'mesh') return table;\n const mesh = convertTableToMesh(table);\n return {shape: 'mesh', batchType: 'data', data: mesh, length: table.length};\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["OBJLoaderMetadata"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import type { OBJLoaderOptions, OBJParsedBatch } from "./obj-loader-types.js";
2
2
  import type { Mesh, MeshArrowTable } from '@loaders.gl/core/schema';
3
- import { serializeArrowWorkerTable } from '@loaders.gl/core/schema-utils/arrow-transport';
3
+ import { serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
4
4
  /**
5
5
  * Loader for the OBJ geometry format
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"obj-loader.d.ts","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAE,cAAc,EAAC,8BAA2B;AASzE,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAEL,yBAAyB,EAC1B,MAAM,+CAA+C,CAAC;AAmBvD;;GAEG;AACH,eAAO,MAAM,mBAAmB;kCAEH,WAAW,YAAY,gBAAgB;mCAE5C,MAAM,YAAY,gBAAgB;2CAIlD,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC,GAChD,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC,4CAE9C,aAAa,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAsB4D,CAAC;AAmH/F,6FAA6F;AAC7F,iBAAS,0BAA0B,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,GAAG,cAAc,CAGvB;AAED,yEAAyE;AACzE,iBAAS,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAK9F"}
1
+ {"version":3,"file":"obj-loader.d.ts","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAE,cAAc,EAAC,8BAA2B;AASzE,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAEL,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AAmBjD;;GAEG;AACH,eAAO,MAAM,mBAAmB;kCAEH,WAAW,YAAY,gBAAgB;mCAE5C,MAAM,YAAY,gBAAgB;2CAIlD,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC,GAChD,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC,4CAE9C,aAAa,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAsB4D,CAAC;AAmH/F,6FAA6F;AAC7F,iBAAS,0BAA0B,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,GAAG,cAAc,CAGvB;AAED,yEAAyE;AACzE,iBAAS,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAK9F"}
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { concatenateArrayBuffersAsync, makeLineIterator, makeTextDecoderIterator, makeTableScanBatch } from '@loaders.gl/core/loader-utils';
5
- import { deserializeArrowWorkerTable, serializeArrowWorkerTable } from '@loaders.gl/core/schema-utils/arrow-transport';
5
+ import { deserializeArrowWorkerTable, serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
6
6
  import { convertMeshToTable, convertTableToMesh, getMeshBoundingBox } from '@loaders.gl/core/schema-utils';
7
7
  import { getOBJSchema } from "./lib/get-obj-schema.js";
8
8
  import { parseOBJ } from "./lib/parse-obj.js";
@@ -1 +1 @@
1
- {"version":3,"file":"obj-loader.js","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"obj-loader.js","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,YAAY,EAAC,gCAA6B;AAClD,OAAO,EAAC,QAAQ,EAAC,2BAAwB;AACzC,OAAO,EAAC,SAAS,IAAI,iBAAiB,EAAC,8BAA2B;AAElE,MAAM,EAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,+BAA+B,EAAC,GAAG,iBAAiB,CAAC;AAE3F,SAAS,cAAc,CAAC,IAAU,EAAE,OAA0B;IAC5D,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtD,OAAO,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC;AAED,sBAAsB;AAEtB;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,GAAG,+BAA+B;IAClC,KAAK,EAAE,KAAK,EAAE,WAAwB,EAAE,OAA0B,EAAE,EAAE,CACpE,cAAc,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IACnF,aAAa,EAAE,CAAC,IAAY,EAAE,OAA0B,EAAE,EAAE,CAC1D,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClD,cAAc,EAAE,KAAK,SAAS,CAAC,EAC7B,WAE+C,EAC/C,OAAO;QAEP,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,uBAAuB,CAAC,WAAyC,CAAC,CAAC;YACxF,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpD,KAAK,CAAC,CAAC,gCAAgC,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,4BAA4B,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,KAAK,CAAC,CAAC,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IACD,qBAAqB,EAAE,yBAAyB;IAChD,uBAAuB,EAAE,0BAA0B;IACnD,oBAAoB,EAAE,yBAAyB;IAC/C,sBAAsB,EAAE,yBAAyB;CAC2C,CAAC;AAE/F,4EAA4E;AAC5E,SAAS,mBAAmB,CAAC,OAA0B;IACrD,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;IACjE,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,CAAC,2BAA2B,CACnC,IAAY,EACZ,OAA0B,EAC1B,SAAkB;IAElB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,KAAK,CAAC,CAAC,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,gCAAgC,CAC9C,KAA4B,EAC5B,OAA0B,EAC1B,SAAkB;IAElB,MAAM,mBAAmB,GAAG,SAAS,IAAI,IAAI,CAAC;IAC9C,IAAI,WAAW,GAAa,EAAE,CAAC;IAE/B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,SAAS;QACX,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,WAAW,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;YAC9C,MAAM,YAAY,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;YACjE,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,YAAY,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,CAAC,wBAAwB,CAChC,WAAqB,EACrB,OAA0B,EAC1B,SAAkB;IAElB,MAAM,mBAAmB,GAAG,SAAS,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;IAEjE,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QACtF,MAAM,IAAI,GAAG,sBAAsB,CACjC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAAC,CAC5D,CAAC;QACF,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,SAAS,sBAAsB,CAAC,WAAqB;IACnD,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE3D,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,QAAQ,EAAE;YACR,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;SACR;KACF,CAAC;IACF,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEnD,OAAO;QACL,UAAU,EAAE;YACV,MAAM,EAAE,EAAE;SACX;QACD,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE;YAC/B,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,WAAW,IAAI,SAAS;SACtC,CAAC;QACF,MAAM,EAAE;YACN,WAAW,EAAE,WAAW,CAAC,MAAM;YAC/B,WAAW,EAAE,WAAW,IAAI,SAAS;SACtC;QACD,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAU,EAAE,OAA0B;IAC1D,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtD,IAAI,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO;YACL,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,6FAA6F;AAC7F,SAAS,0BAA0B,CACjC,MAAe,EACf,OAA0B;IAE1B,MAAM,KAAK,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC;AAED,yEAAyE;AACzE,SAAS,yBAAyB,CAAC,MAAe,EAAE,OAA0B;IAC5E,MAAM,KAAK,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC;AAC9E,CAAC"}
@@ -25,7 +25,7 @@ __export(obj_writer_exports, {
25
25
  module.exports = __toCommonJS(obj_writer_exports);
26
26
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
27
27
  var import_obj_format = require("./obj-format.cjs");
28
- var VERSION = true ? "5.0.0-beta.2" : "latest";
28
+ var VERSION = true ? "5.0.0-beta.5" : "latest";
29
29
  var OBJWriter = {
30
30
  ...import_obj_format.OBJFormat,
31
31
  dataType: null,
@@ -5,7 +5,7 @@ import { convertMeshToTable, convertTableToMesh } from '@loaders.gl/core/schema-
5
5
  import { OBJFormat } from "./obj-format.js";
6
6
  // __VERSION__ is injected by babel-plugin-version-inline
7
7
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
- const VERSION = typeof "5.0.0-beta.2" !== 'undefined' ? "5.0.0-beta.2" : 'latest';
8
+ const VERSION = typeof "5.0.0-beta.5" !== 'undefined' ? "5.0.0-beta.5" : 'latest';
9
9
  /**
10
10
  * Writer for the OBJ geometry format.
11
11
  */
@@ -37,8 +37,8 @@ module.exports = __toCommonJS(obj_loader_types_exports);
37
37
 
38
38
  // src/obj/obj-loader-types.ts
39
39
  var import_obj_format = require("./obj-format.cjs");
40
- var import_arrow_transport = require("@loaders.gl/core/schema-utils/arrow-transport");
41
- var VERSION = true ? "5.0.0-beta.2" : "latest";
40
+ var import_arrow_worker_transport = require("@loaders.gl/core/arrow-worker-transport");
41
+ var VERSION = true ? "5.0.0-beta.5" : "latest";
42
42
  async function preload() {
43
43
  const { OBJLoaderWithParser } = await import("@loaders.gl/scene/obj-loader");
44
44
  return OBJLoaderWithParser;
@@ -51,7 +51,7 @@ var OBJLoader = {
51
51
  worker: true,
52
52
  /** Enables the stateful input/output batch protocol on the built-in worker. */
53
53
  workerInBatches: true,
54
- serializeWorkerResult: import_arrow_transport.serializeArrowWorkerTable,
54
+ serializeWorkerResult: import_arrow_worker_transport.serializeArrowWorkerTable,
55
55
  text: true,
56
56
  testText: testOBJFile,
57
57
  options: {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/obj-loader-types.ts", "../src/obj/obj-loader-types.ts"],
4
- "sourcesContent": ["export * from './obj/obj-loader-types.js';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, ArrowTableBatch} from '@loaders.gl/core/schema';\nimport {OBJFormat} from './obj-format';\nimport {serializeArrowWorkerTable} from '@loaders.gl/core/schema-utils/arrow-transport';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type OBJLoaderOptions = LoaderOptions & {\n obj?: {\n /** Output shape. Defaults to a Mesh Arrow table. */\n shape?: 'mesh' | 'arrow-table';\n /** Treat OBJ vertex records as a point cloud and stream `v` rows in batches. */\n pointCloud?: boolean;\n /** Override the URL to the worker bundle (by default loads from unpkg.com) */\n workerUrl?: string;\n };\n};\n\n/** Legacy OBJ mesh batch returned after caller-side conversion. */\nexport type OBJMeshBatch = {\n /** Legacy mesh batch shape. */\n shape: 'mesh';\n /** Parsed data batch discriminator. */\n batchType: 'data';\n /** Decoded mesh. */\n data: Mesh;\n /** Number of vertices. */\n length: number;\n};\n\n/** Public OBJ batch output shapes. */\nexport type OBJParsedBatch = OBJMeshBatch | ArrowTableBatch;\n\n/**\n * Preloads the parser-bearing OBJ loader implementation.\n */\nasync function preload() {\n const {OBJLoaderWithParser} = await import('@loaders.gl/scene/obj-loader');\n return OBJLoaderWithParser;\n}\n\n/**\n * Metadata-only worker loader for the OBJ geometry format\n */\nexport const OBJLoader = {\n ...OBJFormat,\n\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as unknown as OBJParsedBatch,\n version: VERSION,\n worker: true,\n /** Enables the stateful input/output batch protocol on the built-in worker. */\n workerInBatches: true,\n serializeWorkerResult: serializeArrowWorkerTable,\n text: true,\n testText: testOBJFile,\n options: {\n obj: {shape: 'arrow-table'}\n },\n preload\n} as const satisfies Loader<Mesh | MeshArrowTable, OBJParsedBatch, OBJLoaderOptions>;\n\nfunction testOBJFile(text: string): boolean {\n // TODO - There could be comment line first\n return text[0] === 'v';\n}\n\n/** @deprecated Use OBJLoader. */\nexport const OBJWorkerLoader = OBJLoader;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,wBAAwB;AACxB,6BAAwC;AAIxC,IAAM,UAAU,OAAqC,iBAAc;AA+BnE,eAAe,UAAU;AACvB,QAAM,EAAC,oBAAmB,IAAI,MAAM,OAAO,8BAA8B;AACzE,SAAO;AACT;AAKO,IAAM,YAAY;AAAA,EACvB,GAAG;AAAA,EAEH,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA,EAER,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,IACP,KAAK,EAAC,OAAO,cAAa;AAAA,EAC5B;AAAA,EACA;AACF;AAEA,SAAS,YAAY,MAAuB;AAE1C,SAAO,KAAK,CAAC,MAAM;AACrB;AAGO,IAAM,kBAAkB;",
4
+ "sourcesContent": ["export * from './obj/obj-loader-types.js';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Loader, LoaderOptions} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, ArrowTableBatch} from '@loaders.gl/core/schema';\nimport {OBJFormat} from './obj-format';\nimport {serializeArrowWorkerTable} from '@loaders.gl/core/arrow-worker-transport';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type OBJLoaderOptions = LoaderOptions & {\n obj?: {\n /** Output shape. Defaults to a Mesh Arrow table. */\n shape?: 'mesh' | 'arrow-table';\n /** Treat OBJ vertex records as a point cloud and stream `v` rows in batches. */\n pointCloud?: boolean;\n /** Override the URL to the worker bundle (by default loads from unpkg.com) */\n workerUrl?: string;\n };\n};\n\n/** Legacy OBJ mesh batch returned after caller-side conversion. */\nexport type OBJMeshBatch = {\n /** Legacy mesh batch shape. */\n shape: 'mesh';\n /** Parsed data batch discriminator. */\n batchType: 'data';\n /** Decoded mesh. */\n data: Mesh;\n /** Number of vertices. */\n length: number;\n};\n\n/** Public OBJ batch output shapes. */\nexport type OBJParsedBatch = OBJMeshBatch | ArrowTableBatch;\n\n/**\n * Preloads the parser-bearing OBJ loader implementation.\n */\nasync function preload() {\n const {OBJLoaderWithParser} = await import('@loaders.gl/scene/obj-loader');\n return OBJLoaderWithParser;\n}\n\n/**\n * Metadata-only worker loader for the OBJ geometry format\n */\nexport const OBJLoader = {\n ...OBJFormat,\n\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as unknown as OBJParsedBatch,\n version: VERSION,\n worker: true,\n /** Enables the stateful input/output batch protocol on the built-in worker. */\n workerInBatches: true,\n serializeWorkerResult: serializeArrowWorkerTable,\n text: true,\n testText: testOBJFile,\n options: {\n obj: {shape: 'arrow-table'}\n },\n preload\n} as const satisfies Loader<Mesh | MeshArrowTable, OBJParsedBatch, OBJLoaderOptions>;\n\nfunction testOBJFile(text: string): boolean {\n // TODO - There could be comment line first\n return text[0] === 'v';\n}\n\n/** @deprecated Use OBJLoader. */\nexport const OBJWorkerLoader = OBJLoader;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,wBAAwB;AACxB,oCAAwC;AAIxC,IAAM,UAAU,OAAqC,iBAAc;AA+BnE,eAAe,UAAU;AACvB,QAAM,EAAC,oBAAmB,IAAI,MAAM,OAAO,8BAA8B;AACzE,SAAO;AACT;AAKO,IAAM,YAAY;AAAA,EACvB,GAAG;AAAA,EAEH,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA;AAAA,EAER,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,IACP,KAAK,EAAC,OAAO,cAAa;AAAA,EAC5B;AAAA,EACA;AACF;AAEA,SAAS,YAAY,MAAuB;AAE1C,SAAO,KAAK,CAAC,MAAM;AACrB;AAGO,IAAM,kBAAkB;",
6
6
  "names": []
7
7
  }
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(obj_loader_exports);
26
26
 
27
27
  // src/obj/obj-loader.ts
28
28
  var import_loader_utils = require("@loaders.gl/core/loader-utils");
29
- var import_arrow_transport = require("@loaders.gl/core/schema-utils/arrow-transport");
29
+ var import_arrow_worker_transport = require("@loaders.gl/core/arrow-worker-transport");
30
30
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
31
31
  var import_get_obj_schema = require("./lib/get-obj-schema.cjs");
32
32
  var import_parse_obj = require("./lib/parse-obj.cjs");
@@ -56,9 +56,9 @@ var OBJLoaderWithParser = {
56
56
  }
57
57
  yield* parseOBJPointCloudInBatches(text, options, batchSize);
58
58
  },
59
- serializeWorkerResult: import_arrow_transport.serializeArrowWorkerTable,
59
+ serializeWorkerResult: import_arrow_worker_transport.serializeArrowWorkerTable,
60
60
  deserializeWorkerResult: deserializeOBJWorkerResult,
61
- serializeWorkerBatch: import_arrow_transport.serializeArrowWorkerTable,
61
+ serializeWorkerBatch: import_arrow_worker_transport.serializeArrowWorkerTable,
62
62
  deserializeWorkerBatch: deserializeOBJWorkerBatch
63
63
  };
64
64
  function getNumericBatchSize(options) {
@@ -147,11 +147,11 @@ function makeOBJBatch(mesh, options) {
147
147
  return (0, import_loader_utils.makeTableScanBatch)(table);
148
148
  }
149
149
  function deserializeOBJWorkerResult(result, options) {
150
- const table = (0, import_arrow_transport.deserializeArrowWorkerTable)(result);
150
+ const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
151
151
  return options?.obj?.shape === "mesh" ? (0, import_schema_utils.convertTableToMesh)(table) : table;
152
152
  }
153
153
  function deserializeOBJWorkerBatch(result, options) {
154
- const table = (0, import_arrow_transport.deserializeArrowWorkerTable)(result);
154
+ const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
155
155
  if (options?.obj?.shape !== "mesh") return table;
156
156
  const mesh = (0, import_schema_utils.convertTableToMesh)(table);
157
157
  return { shape: "mesh", batchType: "data", data: mesh, length: table.length };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/obj-loader.ts", "../src/obj/obj-loader.ts"],
4
- "sourcesContent": ["export * from './obj/obj-loader.js';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {OBJLoaderOptions, OBJParsedBatch} from './obj-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeLineIterator,\n makeTextDecoderIterator,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/schema-utils/arrow-transport';\nimport {\n convertMeshToTable,\n convertTableToMesh,\n getMeshBoundingBox\n} from '@loaders.gl/core/schema-utils';\nimport {getOBJSchema} from './lib/get-obj-schema';\nimport {parseOBJ} from './lib/parse-obj';\nimport {OBJLoader as OBJLoaderMetadata} from './obj-loader-types';\n\nconst {preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload} = OBJLoaderMetadata;\n\nfunction convertOBJMesh(mesh: Mesh, options?: OBJLoaderOptions): Mesh | MeshArrowTable {\n const table = convertMeshToTable(mesh, 'arrow-table');\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n// OBJLoaderWithParser\n\n/**\n * Loader for the OBJ geometry format\n */\nexport const OBJLoaderWithParser = {\n ...OBJLoaderMetadataWithoutPreload,\n parse: async (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(new TextDecoder().decode(arrayBuffer), options), options),\n parseTextSync: (text: string, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(text, options), options),\n parseInBatches: async function* (\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options\n ): AsyncIterable<OBJParsedBatch> {\n const batchSize = getNumericBatchSize(options);\n if (options?.obj?.pointCloud) {\n const textIterator = makeTextDecoderIterator(arrayBuffer as AsyncIterable<ArrayBuffer>);\n const lineIterator = makeLineIterator(textIterator);\n yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);\n return;\n }\n\n const data = await concatenateArrayBuffersAsync(arrayBuffer);\n const text = new TextDecoder().decode(data);\n if (hasOBJGeometryRecords(text)) {\n yield makeOBJBatch(parseOBJ(text, options), options);\n return;\n }\n\n yield* parseOBJPointCloudInBatches(text, options, batchSize);\n },\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializeOBJWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializeOBJWorkerBatch\n} as const satisfies LoaderWithParser<Mesh | MeshArrowTable, OBJParsedBatch, OBJLoaderOptions>;\n\n/** Returns a numeric batch size when batching has an explicit row count. */\nfunction getNumericBatchSize(options?: OBJLoaderOptions): number | undefined {\n const batchSize = options?.batchSize ?? options?.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : undefined;\n}\n\nfunction hasOBJGeometryRecords(text: string): boolean {\n return text.split(/\\r?\\n/).some(line => {\n const trimmedLine = line.trimStart();\n return trimmedLine.startsWith('f ') || trimmedLine.startsWith('l ');\n });\n}\n\nfunction* parseOBJPointCloudInBatches(\n text: string,\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const vertexLines = text.split(/\\r?\\n/).filter(line => line.trimStart().startsWith('v '));\n yield* makeOBJPointCloudBatches(vertexLines, options, batchSize);\n}\n\nasync function* parseOBJPointCloudLinesInBatches(\n lines: AsyncIterable<string>,\n options?: OBJLoaderOptions,\n batchSize?: number\n): AsyncIterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || 1000;\n let vertexLines: string[] = [];\n\n for await (const line of lines) {\n if (!line.trimStart().startsWith('v ')) {\n continue;\n }\n vertexLines.push(line);\n if (vertexLines.length >= normalizedBatchSize) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n vertexLines = [];\n }\n }\n\n if (vertexLines.length > 0) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n }\n}\n\nfunction* makeOBJPointCloudBatches(\n vertexLines: string[],\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || vertexLines.length || 1;\n\n for (let rowIndex = 0; rowIndex < vertexLines.length; rowIndex += normalizedBatchSize) {\n const mesh = parseOBJPointCloudMesh(\n vertexLines.slice(rowIndex, rowIndex + normalizedBatchSize)\n );\n yield makeOBJBatch(mesh, options);\n }\n}\n\n/** Builds a point-list mesh directly from OBJ `v` records. */\nfunction parseOBJPointCloudMesh(vertexLines: string[]): Mesh {\n const positions = new Float32Array(vertexLines.length * 3);\n\n for (let vertexIndex = 0; vertexIndex < vertexLines.length; vertexIndex++) {\n const values = vertexLines[vertexIndex].trim().split(/\\s+/);\n positions[vertexIndex * 3 + 0] = Number(values[1]);\n positions[vertexIndex * 3 + 1] = Number(values[2]);\n positions[vertexIndex * 3 + 2] = Number(values[3]);\n }\n\n const attributes = {\n POSITION: {\n value: positions,\n size: 3\n }\n };\n const boundingBox = getMeshBoundingBox(attributes);\n\n return {\n loaderData: {\n header: {}\n },\n schema: getOBJSchema(attributes, {\n mode: 0,\n boundingBox: boundingBox ?? undefined\n }),\n header: {\n vertexCount: vertexLines.length,\n boundingBox: boundingBox ?? undefined\n },\n mode: 0,\n topology: 'point-list',\n attributes\n };\n}\n\nfunction makeOBJBatch(mesh: Mesh, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = convertMeshToTable(mesh, 'arrow-table');\n if (options?.obj?.shape === 'mesh') {\n const convertedMesh = convertTableToMesh(table);\n return {\n shape: 'mesh',\n batchType: 'data',\n data: convertedMesh,\n length: convertedMesh.header?.vertexCount || 0\n };\n }\n\n return makeTableScanBatch(table);\n}\n\n/** Hydrates worker columns before applying the requested legacy mesh shape on the caller. */\nfunction deserializeOBJWorkerResult(\n result: unknown,\n options?: OBJLoaderOptions\n): Mesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n/** Restores the OBJ mesh batch envelope after caller-side conversion. */\nfunction deserializeOBJWorkerBatch(result: unknown, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = deserializeArrowWorkerTable(result);\n if (options?.obj?.shape !== 'mesh') return table;\n const mesh = convertTableToMesh(table);\n return {shape: 'mesh', batchType: 'data', data: mesh, length: table.length};\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["export * from './obj/obj-loader.js';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {OBJLoaderOptions, OBJParsedBatch} from './obj-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeLineIterator,\n makeTextDecoderIterator,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/arrow-worker-transport';\nimport {\n convertMeshToTable,\n convertTableToMesh,\n getMeshBoundingBox\n} from '@loaders.gl/core/schema-utils';\nimport {getOBJSchema} from './lib/get-obj-schema';\nimport {parseOBJ} from './lib/parse-obj';\nimport {OBJLoader as OBJLoaderMetadata} from './obj-loader-types';\n\nconst {preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload} = OBJLoaderMetadata;\n\nfunction convertOBJMesh(mesh: Mesh, options?: OBJLoaderOptions): Mesh | MeshArrowTable {\n const table = convertMeshToTable(mesh, 'arrow-table');\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n// OBJLoaderWithParser\n\n/**\n * Loader for the OBJ geometry format\n */\nexport const OBJLoaderWithParser = {\n ...OBJLoaderMetadataWithoutPreload,\n parse: async (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(new TextDecoder().decode(arrayBuffer), options), options),\n parseTextSync: (text: string, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(text, options), options),\n parseInBatches: async function* (\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options\n ): AsyncIterable<OBJParsedBatch> {\n const batchSize = getNumericBatchSize(options);\n if (options?.obj?.pointCloud) {\n const textIterator = makeTextDecoderIterator(arrayBuffer as AsyncIterable<ArrayBuffer>);\n const lineIterator = makeLineIterator(textIterator);\n yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);\n return;\n }\n\n const data = await concatenateArrayBuffersAsync(arrayBuffer);\n const text = new TextDecoder().decode(data);\n if (hasOBJGeometryRecords(text)) {\n yield makeOBJBatch(parseOBJ(text, options), options);\n return;\n }\n\n yield* parseOBJPointCloudInBatches(text, options, batchSize);\n },\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializeOBJWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializeOBJWorkerBatch\n} as const satisfies LoaderWithParser<Mesh | MeshArrowTable, OBJParsedBatch, OBJLoaderOptions>;\n\n/** Returns a numeric batch size when batching has an explicit row count. */\nfunction getNumericBatchSize(options?: OBJLoaderOptions): number | undefined {\n const batchSize = options?.batchSize ?? options?.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : undefined;\n}\n\nfunction hasOBJGeometryRecords(text: string): boolean {\n return text.split(/\\r?\\n/).some(line => {\n const trimmedLine = line.trimStart();\n return trimmedLine.startsWith('f ') || trimmedLine.startsWith('l ');\n });\n}\n\nfunction* parseOBJPointCloudInBatches(\n text: string,\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const vertexLines = text.split(/\\r?\\n/).filter(line => line.trimStart().startsWith('v '));\n yield* makeOBJPointCloudBatches(vertexLines, options, batchSize);\n}\n\nasync function* parseOBJPointCloudLinesInBatches(\n lines: AsyncIterable<string>,\n options?: OBJLoaderOptions,\n batchSize?: number\n): AsyncIterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || 1000;\n let vertexLines: string[] = [];\n\n for await (const line of lines) {\n if (!line.trimStart().startsWith('v ')) {\n continue;\n }\n vertexLines.push(line);\n if (vertexLines.length >= normalizedBatchSize) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n vertexLines = [];\n }\n }\n\n if (vertexLines.length > 0) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n }\n}\n\nfunction* makeOBJPointCloudBatches(\n vertexLines: string[],\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || vertexLines.length || 1;\n\n for (let rowIndex = 0; rowIndex < vertexLines.length; rowIndex += normalizedBatchSize) {\n const mesh = parseOBJPointCloudMesh(\n vertexLines.slice(rowIndex, rowIndex + normalizedBatchSize)\n );\n yield makeOBJBatch(mesh, options);\n }\n}\n\n/** Builds a point-list mesh directly from OBJ `v` records. */\nfunction parseOBJPointCloudMesh(vertexLines: string[]): Mesh {\n const positions = new Float32Array(vertexLines.length * 3);\n\n for (let vertexIndex = 0; vertexIndex < vertexLines.length; vertexIndex++) {\n const values = vertexLines[vertexIndex].trim().split(/\\s+/);\n positions[vertexIndex * 3 + 0] = Number(values[1]);\n positions[vertexIndex * 3 + 1] = Number(values[2]);\n positions[vertexIndex * 3 + 2] = Number(values[3]);\n }\n\n const attributes = {\n POSITION: {\n value: positions,\n size: 3\n }\n };\n const boundingBox = getMeshBoundingBox(attributes);\n\n return {\n loaderData: {\n header: {}\n },\n schema: getOBJSchema(attributes, {\n mode: 0,\n boundingBox: boundingBox ?? undefined\n }),\n header: {\n vertexCount: vertexLines.length,\n boundingBox: boundingBox ?? undefined\n },\n mode: 0,\n topology: 'point-list',\n attributes\n };\n}\n\nfunction makeOBJBatch(mesh: Mesh, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = convertMeshToTable(mesh, 'arrow-table');\n if (options?.obj?.shape === 'mesh') {\n const convertedMesh = convertTableToMesh(table);\n return {\n shape: 'mesh',\n batchType: 'data',\n data: convertedMesh,\n length: convertedMesh.header?.vertexCount || 0\n };\n }\n\n return makeTableScanBatch(table);\n}\n\n/** Hydrates worker columns before applying the requested legacy mesh shape on the caller. */\nfunction deserializeOBJWorkerResult(\n result: unknown,\n options?: OBJLoaderOptions\n): Mesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n/** Restores the OBJ mesh batch envelope after caller-side conversion. */\nfunction deserializeOBJWorkerBatch(result: unknown, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = deserializeArrowWorkerTable(result);\n if (options?.obj?.shape !== 'mesh') return table;\n const mesh = convertTableToMesh(table);\n return {shape: 'mesh', batchType: 'data', data: mesh, length: table.length};\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["OBJLoaderMetadata"]
7
7
  }