@loaders.gl/pointclouds 5.0.0-beta.1 → 5.0.0-beta.10

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 (372) hide show
  1. package/LAS-README.md +1 -1
  2. package/PCD-README.md +1 -1
  3. package/PLY-README.md +1 -1
  4. package/README.md +5 -1
  5. package/dist/dist.dev.js +3584 -2211
  6. package/dist/dist.min.js +20 -20
  7. package/dist/index.cjs +0 -6
  8. package/dist/index.cjs.map +2 -2
  9. package/dist/index.d.ts +3 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/las/bundled.cjs +0 -3
  14. package/dist/las/bundled.cjs.map +2 -2
  15. package/dist/las/bundled.d.ts +0 -1
  16. package/dist/las/bundled.d.ts.map +1 -1
  17. package/dist/las/bundled.js +0 -1
  18. package/dist/las/bundled.js.map +1 -1
  19. package/dist/las/index.cjs +0 -3
  20. package/dist/las/index.cjs.map +3 -3
  21. package/dist/las/index.d.ts +0 -2
  22. package/dist/las/index.d.ts.map +1 -1
  23. package/dist/las/index.js +0 -3
  24. package/dist/las/index.js.map +1 -1
  25. package/dist/las/las-copc-loader-types.cjs +1 -1
  26. package/dist/las/las-copc-loader-types.cjs.map +2 -2
  27. package/dist/las/las-copc-loader-types.d.ts +13 -9
  28. package/dist/las/las-copc-loader-types.d.ts.map +1 -1
  29. package/dist/las/las-copc-loader-types.js +1 -1
  30. package/dist/las/las-copc-loader-types.js.map +1 -1
  31. package/dist/las/las-copc-loader.cjs +8 -5
  32. package/dist/las/las-copc-loader.cjs.map +2 -2
  33. package/dist/las/las-copc-loader.d.ts +8 -6
  34. package/dist/las/las-copc-loader.d.ts.map +1 -1
  35. package/dist/las/las-copc-loader.js +11 -6
  36. package/dist/las/las-copc-loader.js.map +1 -1
  37. package/dist/las/las-loader-shared.cjs +4 -2
  38. package/dist/las/las-loader-shared.cjs.map +2 -2
  39. package/dist/las/las-loader-shared.d.ts +9 -7
  40. package/dist/las/las-loader-shared.d.ts.map +1 -1
  41. package/dist/las/las-loader-shared.js +4 -2
  42. package/dist/las/las-loader-shared.js.map +1 -1
  43. package/dist/las/las-loader-types.cjs +3 -6
  44. package/dist/las/las-loader-types.cjs.map +2 -2
  45. package/dist/las/las-loader-types.d.ts +18 -45
  46. package/dist/las/las-loader-types.d.ts.map +1 -1
  47. package/dist/las/las-loader-types.js +1 -3
  48. package/dist/las/las-loader-types.js.map +1 -1
  49. package/dist/las/las-loader.cjs +61 -13
  50. package/dist/las/las-loader.cjs.map +3 -3
  51. package/dist/las/las-loader.d.ts +51 -5
  52. package/dist/las/las-loader.d.ts.map +1 -1
  53. package/dist/las/las-loader.js +56 -6
  54. package/dist/las/las-loader.js.map +1 -1
  55. package/dist/las/las-writer.cjs +3 -3
  56. package/dist/las/las-writer.cjs.map +2 -2
  57. package/dist/las/las-writer.d.ts +4 -3
  58. package/dist/las/las-writer.d.ts.map +1 -1
  59. package/dist/las/las-writer.js +4 -6
  60. package/dist/las/las-writer.js.map +1 -1
  61. package/dist/las/laz-rs-loader-types.cjs +1 -1
  62. package/dist/las/laz-rs-loader-types.cjs.map +2 -2
  63. package/dist/las/laz-rs-loader-types.d.ts +13 -9
  64. package/dist/las/laz-rs-loader-types.d.ts.map +1 -1
  65. package/dist/las/laz-rs-loader-types.js +1 -1
  66. package/dist/las/laz-rs-loader-types.js.map +1 -1
  67. package/dist/las/laz-rs-loader.cjs +8 -5
  68. package/dist/las/laz-rs-loader.cjs.map +2 -2
  69. package/dist/las/laz-rs-loader.d.ts +8 -6
  70. package/dist/las/laz-rs-loader.d.ts.map +1 -1
  71. package/dist/las/laz-rs-loader.js +11 -6
  72. package/dist/las/laz-rs-loader.js.map +1 -1
  73. package/dist/las/lazperf-loader-types.cjs +1 -1
  74. package/dist/las/lazperf-loader-types.cjs.map +2 -2
  75. package/dist/las/lazperf-loader-types.d.ts +14 -10
  76. package/dist/las/lazperf-loader-types.d.ts.map +1 -1
  77. package/dist/las/lazperf-loader-types.js +1 -1
  78. package/dist/las/lazperf-loader-types.js.map +1 -1
  79. package/dist/las/lazperf-loader.cjs +9 -6
  80. package/dist/las/lazperf-loader.cjs.map +2 -2
  81. package/dist/las/lazperf-loader.d.ts +9 -7
  82. package/dist/las/lazperf-loader.d.ts.map +1 -1
  83. package/dist/las/lazperf-loader.js +12 -7
  84. package/dist/las/lazperf-loader.js.map +1 -1
  85. package/dist/las/lib/copc/parse-las.cjs +1 -1
  86. package/dist/las/lib/copc/parse-las.cjs.map +2 -2
  87. package/dist/las/lib/copc/parse-las.js +1 -1
  88. package/dist/las/lib/copc/parse-las.js.map +1 -1
  89. package/dist/las/lib/get-las-schema.cjs +5 -0
  90. package/dist/las/lib/get-las-schema.cjs.map +2 -2
  91. package/dist/las/lib/get-las-schema.d.ts.map +1 -1
  92. package/dist/las/lib/get-las-schema.js +6 -0
  93. package/dist/las/lib/get-las-schema.js.map +1 -1
  94. package/dist/las/lib/las-extra-bytes.cjs +6 -1
  95. package/dist/las/lib/las-extra-bytes.cjs.map +2 -2
  96. package/dist/las/lib/las-extra-bytes.d.ts.map +1 -1
  97. package/dist/las/lib/las-extra-bytes.js +6 -4
  98. package/dist/las/lib/las-extra-bytes.js.map +1 -1
  99. package/dist/las/lib/laz-perf/parse-las.cjs +9 -8
  100. package/dist/las/lib/laz-perf/parse-las.cjs.map +3 -3
  101. package/dist/las/lib/laz-perf/parse-las.js +9 -8
  102. package/dist/las/lib/laz-perf/parse-las.js.map +1 -1
  103. package/dist/las/lib/laz-rs-wasm/parse-las.cjs +9 -8
  104. package/dist/las/lib/laz-rs-wasm/parse-las.cjs.map +3 -3
  105. package/dist/las/lib/laz-rs-wasm/parse-las.js +9 -8
  106. package/dist/las/lib/laz-rs-wasm/parse-las.js.map +1 -1
  107. package/dist/las/lib/typescript/parse-las.cjs +135 -13
  108. package/dist/las/lib/typescript/parse-las.cjs.map +3 -3
  109. package/dist/las/lib/typescript/parse-las.d.ts.map +1 -1
  110. package/dist/las/lib/typescript/parse-las.js +106 -10
  111. package/dist/las/lib/typescript/parse-las.js.map +1 -1
  112. package/dist/las/unbundled.cjs +0 -2
  113. package/dist/las/unbundled.cjs.map +2 -2
  114. package/dist/las/unbundled.d.ts +1 -1
  115. package/dist/las/unbundled.d.ts.map +1 -1
  116. package/dist/las/unbundled.js +1 -1
  117. package/dist/las/unbundled.js.map +1 -1
  118. package/dist/las/workers/las-worker.cjs +5 -5
  119. package/dist/las/workers/las-worker.cjs.map +2 -2
  120. package/dist/las/workers/las-worker.js +6 -6
  121. package/dist/las/workers/las-worker.js.map +1 -1
  122. package/dist/las-copc-loader-types.cjs +51 -0
  123. package/dist/las-copc-loader-types.cjs.map +7 -0
  124. package/dist/las-copc-loader-types.d.ts +2 -0
  125. package/dist/las-copc-loader-types.d.ts.map +1 -0
  126. package/dist/las-copc-loader-types.js +2 -0
  127. package/dist/las-copc-loader-types.js.map +1 -0
  128. package/dist/las-copc-loader.cjs +62 -0
  129. package/dist/las-copc-loader.cjs.map +7 -0
  130. package/dist/las-copc-loader.d.ts +2 -0
  131. package/dist/las-copc-loader.d.ts.map +1 -0
  132. package/dist/las-copc-loader.js +2 -0
  133. package/dist/las-copc-loader.js.map +1 -0
  134. package/dist/las-loader-types.cjs +53 -0
  135. package/dist/las-loader-types.cjs.map +7 -0
  136. package/dist/las-loader-types.d.ts +2 -0
  137. package/dist/las-loader-types.d.ts.map +1 -0
  138. package/dist/las-loader-types.js +2 -0
  139. package/dist/las-loader-types.js.map +1 -0
  140. package/dist/las-loader.cjs +130 -0
  141. package/dist/las-loader.cjs.map +7 -0
  142. package/dist/las-loader.d.ts +2 -0
  143. package/dist/las-loader.d.ts.map +1 -0
  144. package/dist/las-loader.js +2 -0
  145. package/dist/las-loader.js.map +1 -0
  146. package/dist/las-worker.js +1219 -253
  147. package/dist/las-writer.cjs +1056 -0
  148. package/dist/las-writer.cjs.map +7 -0
  149. package/dist/las-writer.d.ts +2 -0
  150. package/dist/las-writer.d.ts.map +1 -0
  151. package/dist/las-writer.js +2 -0
  152. package/dist/las-writer.js.map +1 -0
  153. package/dist/laz-rs-loader-types.cjs +51 -0
  154. package/dist/laz-rs-loader-types.cjs.map +7 -0
  155. package/dist/laz-rs-loader-types.d.ts +2 -0
  156. package/dist/laz-rs-loader-types.d.ts.map +1 -0
  157. package/dist/laz-rs-loader-types.js +2 -0
  158. package/dist/laz-rs-loader-types.js.map +1 -0
  159. package/dist/laz-rs-loader.cjs +277 -0
  160. package/dist/laz-rs-loader.cjs.map +7 -0
  161. package/dist/laz-rs-loader.d.ts +2 -0
  162. package/dist/laz-rs-loader.d.ts.map +1 -0
  163. package/dist/laz-rs-loader.js +2 -0
  164. package/dist/laz-rs-loader.js.map +1 -0
  165. package/dist/lazperf-loader-types.cjs +51 -0
  166. package/dist/lazperf-loader-types.cjs.map +7 -0
  167. package/dist/lazperf-loader-types.d.ts +2 -0
  168. package/dist/lazperf-loader-types.d.ts.map +1 -0
  169. package/dist/lazperf-loader-types.js +2 -0
  170. package/dist/lazperf-loader-types.js.map +1 -0
  171. package/dist/lazperf-loader.cjs +65 -0
  172. package/dist/lazperf-loader.cjs.map +7 -0
  173. package/dist/lazperf-loader.d.ts +2 -0
  174. package/dist/lazperf-loader.d.ts.map +1 -0
  175. package/dist/lazperf-loader.js +2 -0
  176. package/dist/lazperf-loader.js.map +1 -0
  177. package/dist/pcd/bundled.cjs +2 -4
  178. package/dist/pcd/bundled.cjs.map +2 -2
  179. package/dist/pcd/bundled.d.ts +1 -1
  180. package/dist/pcd/bundled.d.ts.map +1 -1
  181. package/dist/pcd/bundled.js +1 -1
  182. package/dist/pcd/bundled.js.map +1 -1
  183. package/dist/pcd/index.cjs +0 -3
  184. package/dist/pcd/index.cjs.map +3 -3
  185. package/dist/pcd/index.d.ts +0 -2
  186. package/dist/pcd/index.d.ts.map +1 -1
  187. package/dist/pcd/index.js +0 -3
  188. package/dist/pcd/index.js.map +1 -1
  189. package/dist/pcd/pcd-loader-types.cjs +9 -10
  190. package/dist/pcd/pcd-loader-types.cjs.map +2 -2
  191. package/dist/pcd/pcd-loader-types.d.ts +18 -41
  192. package/dist/pcd/pcd-loader-types.d.ts.map +1 -1
  193. package/dist/pcd/pcd-loader-types.js +6 -6
  194. package/dist/pcd/pcd-loader-types.js.map +1 -1
  195. package/dist/pcd/pcd-loader.cjs +82 -25
  196. package/dist/pcd/pcd-loader.cjs.map +3 -3
  197. package/dist/pcd/pcd-loader.d.ts +42 -6
  198. package/dist/pcd/pcd-loader.d.ts.map +1 -1
  199. package/dist/pcd/pcd-loader.js +72 -21
  200. package/dist/pcd/pcd-loader.js.map +1 -1
  201. package/dist/pcd/pcd-writer.cjs +3 -3
  202. package/dist/pcd/pcd-writer.cjs.map +2 -2
  203. package/dist/pcd/pcd-writer.d.ts +5 -4
  204. package/dist/pcd/pcd-writer.d.ts.map +1 -1
  205. package/dist/pcd/pcd-writer.js +4 -4
  206. package/dist/pcd/pcd-writer.js.map +1 -1
  207. package/dist/pcd/unbundled.cjs +2 -4
  208. package/dist/pcd/unbundled.cjs.map +2 -2
  209. package/dist/pcd/unbundled.d.ts +1 -1
  210. package/dist/pcd/unbundled.d.ts.map +1 -1
  211. package/dist/pcd/unbundled.js +1 -1
  212. package/dist/pcd/unbundled.js.map +1 -1
  213. package/dist/pcd/workers/pcd-worker.cjs +5 -5
  214. package/dist/pcd/workers/pcd-worker.cjs.map +2 -2
  215. package/dist/pcd/workers/pcd-worker.js +6 -6
  216. package/dist/pcd/workers/pcd-worker.js.map +1 -1
  217. package/dist/pcd-loader-types.cjs +65 -0
  218. package/dist/pcd-loader-types.cjs.map +7 -0
  219. package/dist/pcd-loader-types.d.ts +2 -0
  220. package/dist/pcd-loader-types.d.ts.map +1 -0
  221. package/dist/pcd-loader-types.js +2 -0
  222. package/dist/pcd-loader-types.js.map +1 -0
  223. package/dist/pcd-loader.cjs +203 -0
  224. package/dist/pcd-loader.cjs.map +7 -0
  225. package/dist/pcd-loader.d.ts +2 -0
  226. package/dist/pcd-loader.d.ts.map +1 -0
  227. package/dist/pcd-loader.js +2 -0
  228. package/dist/pcd-loader.js.map +1 -0
  229. package/dist/pcd-worker.js +1457 -418
  230. package/dist/pcd-writer.cjs +136 -0
  231. package/dist/pcd-writer.cjs.map +7 -0
  232. package/dist/pcd-writer.d.ts +2 -0
  233. package/dist/pcd-writer.d.ts.map +1 -0
  234. package/dist/pcd-writer.js +2 -0
  235. package/dist/pcd-writer.js.map +1 -0
  236. package/dist/ply/bundled.cjs +2 -4
  237. package/dist/ply/bundled.cjs.map +2 -2
  238. package/dist/ply/bundled.d.ts +1 -1
  239. package/dist/ply/bundled.d.ts.map +1 -1
  240. package/dist/ply/bundled.js +1 -1
  241. package/dist/ply/bundled.js.map +1 -1
  242. package/dist/ply/index.cjs +0 -3
  243. package/dist/ply/index.cjs.map +3 -3
  244. package/dist/ply/index.d.ts +0 -2
  245. package/dist/ply/index.d.ts.map +1 -1
  246. package/dist/ply/index.js +0 -3
  247. package/dist/ply/index.js.map +1 -1
  248. package/dist/ply/lib/get-ply-schema.cjs +4 -2
  249. package/dist/ply/lib/get-ply-schema.cjs.map +2 -2
  250. package/dist/ply/lib/get-ply-schema.d.ts +6 -0
  251. package/dist/ply/lib/get-ply-schema.d.ts.map +1 -1
  252. package/dist/ply/lib/get-ply-schema.js +1 -1
  253. package/dist/ply/lib/get-ply-schema.js.map +1 -1
  254. package/dist/ply/lib/parse-ply-arrow.cjs +1 -1
  255. package/dist/ply/lib/parse-ply-arrow.cjs.map +2 -2
  256. package/dist/ply/lib/parse-ply-arrow.js +2 -2
  257. package/dist/ply/lib/parse-ply-arrow.js.map +1 -1
  258. package/dist/ply/lib/parse-ply-in-batches.cjs +14 -8
  259. package/dist/ply/lib/parse-ply-in-batches.cjs.map +3 -3
  260. package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -1
  261. package/dist/ply/lib/parse-ply-in-batches.js +9 -4
  262. package/dist/ply/lib/parse-ply-in-batches.js.map +1 -1
  263. package/dist/ply/lib/parse-ply.cjs +3 -0
  264. package/dist/ply/lib/parse-ply.cjs.map +2 -2
  265. package/dist/ply/lib/parse-ply.d.ts +1 -1
  266. package/dist/ply/lib/parse-ply.d.ts.map +1 -1
  267. package/dist/ply/lib/parse-ply.js +4 -0
  268. package/dist/ply/lib/parse-ply.js.map +1 -1
  269. package/dist/ply/ply-loader-types.cjs +9 -10
  270. package/dist/ply/ply-loader-types.cjs.map +2 -2
  271. package/dist/ply/ply-loader-types.d.ts +19 -42
  272. package/dist/ply/ply-loader-types.d.ts.map +1 -1
  273. package/dist/ply/ply-loader-types.js +6 -6
  274. package/dist/ply/ply-loader-types.js.map +1 -1
  275. package/dist/ply/ply-loader.cjs +82 -24
  276. package/dist/ply/ply-loader.cjs.map +3 -3
  277. package/dist/ply/ply-loader.d.ts +43 -6
  278. package/dist/ply/ply-loader.d.ts.map +1 -1
  279. package/dist/ply/ply-loader.js +71 -19
  280. package/dist/ply/ply-loader.js.map +1 -1
  281. package/dist/ply/ply-writer.cjs +3 -3
  282. package/dist/ply/ply-writer.cjs.map +2 -2
  283. package/dist/ply/ply-writer.d.ts +5 -4
  284. package/dist/ply/ply-writer.d.ts.map +1 -1
  285. package/dist/ply/ply-writer.js +4 -4
  286. package/dist/ply/ply-writer.js.map +1 -1
  287. package/dist/ply/unbundled.cjs +2 -4
  288. package/dist/ply/unbundled.cjs.map +2 -2
  289. package/dist/ply/unbundled.d.ts +1 -1
  290. package/dist/ply/unbundled.d.ts.map +1 -1
  291. package/dist/ply/unbundled.js +1 -1
  292. package/dist/ply/unbundled.js.map +1 -1
  293. package/dist/ply/workers/ply-worker.cjs +6 -6
  294. package/dist/ply/workers/ply-worker.cjs.map +2 -2
  295. package/dist/ply/workers/ply-worker.js +8 -8
  296. package/dist/ply/workers/ply-worker.js.map +1 -1
  297. package/dist/ply-loader-types.cjs +66 -0
  298. package/dist/ply-loader-types.cjs.map +7 -0
  299. package/dist/ply-loader-types.d.ts +2 -0
  300. package/dist/ply-loader-types.d.ts.map +1 -0
  301. package/dist/ply-loader-types.js +2 -0
  302. package/dist/ply-loader-types.js.map +1 -0
  303. package/dist/ply-loader.cjs +194 -0
  304. package/dist/ply-loader.cjs.map +7 -0
  305. package/dist/ply-loader.d.ts +2 -0
  306. package/dist/ply-loader.d.ts.map +1 -0
  307. package/dist/ply-loader.js +2 -0
  308. package/dist/ply-loader.js.map +1 -0
  309. package/dist/ply-worker.js +2099 -312
  310. package/dist/ply-writer.cjs +177 -0
  311. package/dist/ply-writer.cjs.map +7 -0
  312. package/dist/ply-writer.d.ts +2 -0
  313. package/dist/ply-writer.d.ts.map +1 -0
  314. package/dist/ply-writer.js +2 -0
  315. package/dist/ply-writer.js.map +1 -0
  316. package/package.json +75 -71
  317. package/src/index.ts +3 -3
  318. package/src/las/bundled.ts +0 -1
  319. package/src/las/index.ts +0 -4
  320. package/src/las/las-copc-loader-types.ts +3 -3
  321. package/src/las/las-copc-loader.ts +12 -12
  322. package/src/las/las-loader-shared.ts +9 -7
  323. package/src/las/las-loader-types.ts +3 -6
  324. package/src/las/las-loader.ts +63 -9
  325. package/src/las/las-writer.ts +17 -13
  326. package/src/las/laz-rs-loader-types.ts +3 -3
  327. package/src/las/laz-rs-loader.ts +11 -11
  328. package/src/las/lazperf-loader-types.ts +3 -3
  329. package/src/las/lazperf-loader.ts +13 -13
  330. package/src/las/lib/copc/parse-las.ts +1 -1
  331. package/src/las/lib/get-las-schema.ts +5 -0
  332. package/src/las/lib/las-extra-bytes.ts +6 -4
  333. package/src/las/lib/laz-perf/parse-las.ts +8 -9
  334. package/src/las/lib/laz-rs-wasm/parse-las.ts +8 -9
  335. package/src/las/lib/typescript/parse-las.ts +143 -11
  336. package/src/las/libs/laz-rs-wasm/README.md +5 -0
  337. package/src/las/libs/laz-rs-wasm/package.json +6 -0
  338. package/src/las/unbundled.ts +1 -1
  339. package/src/las/workers/las-worker.ts +6 -6
  340. package/src/las-copc-loader-types.ts +1 -0
  341. package/src/las-copc-loader.ts +1 -0
  342. package/src/las-loader-types.ts +1 -0
  343. package/src/las-loader.ts +1 -0
  344. package/src/las-writer.ts +1 -0
  345. package/src/laz-rs-loader-types.ts +1 -0
  346. package/src/laz-rs-loader.ts +1 -0
  347. package/src/lazperf-loader-types.ts +1 -0
  348. package/src/lazperf-loader.ts +1 -0
  349. package/src/pcd/bundled.ts +1 -4
  350. package/src/pcd/index.ts +0 -4
  351. package/src/pcd/pcd-loader-types.ts +10 -11
  352. package/src/pcd/pcd-loader.ts +97 -29
  353. package/src/pcd/pcd-writer.ts +12 -8
  354. package/src/pcd/unbundled.ts +1 -1
  355. package/src/pcd/workers/pcd-worker.ts +6 -6
  356. package/src/pcd-loader-types.ts +1 -0
  357. package/src/pcd-loader.ts +1 -0
  358. package/src/pcd-writer.ts +1 -0
  359. package/src/ply/bundled.ts +1 -4
  360. package/src/ply/index.ts +0 -4
  361. package/src/ply/lib/get-ply-schema.ts +1 -1
  362. package/src/ply/lib/parse-ply-arrow.ts +2 -2
  363. package/src/ply/lib/parse-ply-in-batches.ts +9 -4
  364. package/src/ply/lib/parse-ply.ts +4 -1
  365. package/src/ply/ply-loader-types.ts +10 -11
  366. package/src/ply/ply-loader.ts +94 -24
  367. package/src/ply/ply-writer.ts +12 -8
  368. package/src/ply/unbundled.ts +1 -1
  369. package/src/ply/workers/ply-worker.ts +8 -8
  370. package/src/ply-loader-types.ts +1 -0
  371. package/src/ply-loader.ts +1 -0
  372. package/src/ply-writer.ts +1 -0
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/pcd-writer.ts
21
+ var pcd_writer_exports = {};
22
+ __export(pcd_writer_exports, {
23
+ PCDWriter: () => PCDWriter
24
+ });
25
+ module.exports = __toCommonJS(pcd_writer_exports);
26
+
27
+ // src/pcd/pcd-writer.ts
28
+ var import_schema_utils = require("@loaders.gl/core/schema-utils");
29
+ var import_pcd_format = require("./pcd-format.cjs");
30
+ var VERSION = true ? "5.0.0-beta.10" : "latest";
31
+ var PCDWriter = {
32
+ ...import_pcd_format.PCDFormat,
33
+ dataType: null,
34
+ batchType: null,
35
+ version: VERSION,
36
+ options: {
37
+ pcd: {}
38
+ },
39
+ text: true,
40
+ encode: async (data, options) => encodePCDSync(data, options),
41
+ encodeSync: encodePCDSync,
42
+ encodeTextSync: encodePCD
43
+ };
44
+ function encodePCDSync(data, options) {
45
+ const text = encodePCD(data, options);
46
+ return new TextEncoder().encode(text).buffer;
47
+ }
48
+ function encodePCD(data, options) {
49
+ const mesh = (0, import_schema_utils.convertTableToMesh)(normalizeMeshArrowTable(data));
50
+ const positionAttribute = getRequiredAttribute(mesh, "POSITION");
51
+ const normalAttribute = mesh.attributes.NORMAL;
52
+ const colorAttribute = mesh.attributes.COLOR_0;
53
+ const vertexCount = positionAttribute.value.length / positionAttribute.size;
54
+ const fieldNames = ["x", "y", "z"];
55
+ const fieldSizes = ["4", "4", "4"];
56
+ const fieldTypes = ["F", "F", "F"];
57
+ const fieldCounts = ["1", "1", "1"];
58
+ if (normalAttribute) {
59
+ fieldNames.push("normal_x", "normal_y", "normal_z");
60
+ fieldSizes.push("4", "4", "4");
61
+ fieldTypes.push("F", "F", "F");
62
+ fieldCounts.push("1", "1", "1");
63
+ }
64
+ if (colorAttribute) {
65
+ fieldNames.push("rgb");
66
+ fieldSizes.push("4");
67
+ fieldTypes.push("F");
68
+ fieldCounts.push("1");
69
+ }
70
+ const lines = [
71
+ "# .PCD v0.7 - Point Cloud Data file generated by loaders.gl",
72
+ "VERSION 0.7",
73
+ `FIELDS ${fieldNames.join(" ")}`,
74
+ `SIZE ${fieldSizes.join(" ")}`,
75
+ `TYPE ${fieldTypes.join(" ")}`,
76
+ `COUNT ${fieldCounts.join(" ")}`,
77
+ `WIDTH ${vertexCount}`,
78
+ "HEIGHT 1",
79
+ "VIEWPOINT 0 0 0 1 0 0 0",
80
+ `POINTS ${vertexCount}`,
81
+ "DATA ascii"
82
+ ];
83
+ for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {
84
+ const row = [
85
+ getComponent(positionAttribute, vertexIndex, 0),
86
+ getComponent(positionAttribute, vertexIndex, 1),
87
+ getComponent(positionAttribute, vertexIndex, 2)
88
+ ];
89
+ if (normalAttribute) {
90
+ row.push(
91
+ getComponent(normalAttribute, vertexIndex, 0),
92
+ getComponent(normalAttribute, vertexIndex, 1),
93
+ getComponent(normalAttribute, vertexIndex, 2)
94
+ );
95
+ }
96
+ if (colorAttribute) {
97
+ row.push(getPackedRGB(colorAttribute, vertexIndex));
98
+ }
99
+ lines.push(row.join(" "));
100
+ }
101
+ return `${lines.join("\n")}
102
+ `;
103
+ }
104
+ function normalizeMeshArrowTable(data) {
105
+ if (!("attributes" in data)) {
106
+ return data;
107
+ }
108
+ return (0, import_schema_utils.convertMeshToArrowTableWrapper)(data);
109
+ }
110
+ function getRequiredAttribute(mesh, attributeName) {
111
+ const attribute = mesh.attributes[attributeName];
112
+ if (!attribute) {
113
+ throw new Error(`PCDWriter: ${attributeName} attribute is required`);
114
+ }
115
+ return attribute;
116
+ }
117
+ function getComponent(attribute, vertexIndex, componentIndex) {
118
+ return attribute.value[vertexIndex * attribute.size + componentIndex] || 0;
119
+ }
120
+ function getPackedRGB(attribute, vertexIndex) {
121
+ const bytes = new Uint8Array(4);
122
+ bytes[0] = getColorByte(attribute, vertexIndex, 0);
123
+ bytes[1] = getColorByte(attribute, vertexIndex, 1);
124
+ bytes[2] = getColorByte(attribute, vertexIndex, 2);
125
+ return new DataView(bytes.buffer).getFloat32(0, true);
126
+ }
127
+ function getColorByte(attribute, vertexIndex, componentIndex) {
128
+ const value = getComponent(attribute, vertexIndex, componentIndex);
129
+ const byteValue = attribute.normalized || value <= 1 ? value * 255 : value;
130
+ return Math.max(0, Math.min(255, Math.round(byteValue)));
131
+ }
132
+ // Annotate the CommonJS export names for ESM import in node:
133
+ 0 && (module.exports = {
134
+ PCDWriter
135
+ });
136
+ //# sourceMappingURL=pcd-writer.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/pcd-writer.ts", "../src/pcd/pcd-writer.ts"],
4
+ "sourcesContent": ["export * from './pcd/pcd-writer.js';\n", "// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Table} from 'apache-arrow';\nimport type {WriterOptions, WriterWithEncoder} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, MeshAttribute} from '@loaders.gl/core/schema';\nimport {convertMeshToArrowTableWrapper, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport {PCDFormat} from './pcd-format';\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\n/** Options for `PCDWriter`. */\nexport type PCDWriterOptions = WriterOptions & {\n /** Reserved for future PCD writer options. */\n pcd?: Record<string, never>;\n};\n\n/**\n * Writer for the PCD point cloud format.\n */\nexport const PCDWriter = {\n ...PCDFormat,\n dataType: null as unknown as Mesh | MeshArrowTable | Table,\n batchType: null as never,\n version: VERSION,\n options: {\n pcd: {}\n },\n text: true,\n encode: async (data, options) => encodePCDSync(data, options),\n encodeSync: encodePCDSync,\n encodeTextSync: encodePCD\n} as const satisfies WriterWithEncoder<Mesh | MeshArrowTable | Table, never, PCDWriterOptions>;\n\n/** Encode mesh category data as PCD bytes. */\nfunction encodePCDSync(\n data: Mesh | MeshArrowTable | Table,\n options?: PCDWriterOptions\n): ArrayBuffer {\n const text = encodePCD(data, options);\n return new TextEncoder().encode(text).buffer;\n}\n\n/** Encode mesh category data as ASCII PCD text. */\nfunction encodePCD(data: Mesh | MeshArrowTable | Table, options?: PCDWriterOptions): string {\n const mesh = convertTableToMesh(normalizeMeshArrowTable(data));\n const positionAttribute = getRequiredAttribute(mesh, 'POSITION');\n const normalAttribute = mesh.attributes.NORMAL;\n const colorAttribute = mesh.attributes.COLOR_0;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const fieldNames = ['x', 'y', 'z'];\n const fieldSizes = ['4', '4', '4'];\n const fieldTypes = ['F', 'F', 'F'];\n const fieldCounts = ['1', '1', '1'];\n\n if (normalAttribute) {\n fieldNames.push('normal_x', 'normal_y', 'normal_z');\n fieldSizes.push('4', '4', '4');\n fieldTypes.push('F', 'F', 'F');\n fieldCounts.push('1', '1', '1');\n }\n\n if (colorAttribute) {\n fieldNames.push('rgb');\n fieldSizes.push('4');\n fieldTypes.push('F');\n fieldCounts.push('1');\n }\n\n const lines = [\n '# .PCD v0.7 - Point Cloud Data file generated by loaders.gl',\n 'VERSION 0.7',\n `FIELDS ${fieldNames.join(' ')}`,\n `SIZE ${fieldSizes.join(' ')}`,\n `TYPE ${fieldTypes.join(' ')}`,\n `COUNT ${fieldCounts.join(' ')}`,\n `WIDTH ${vertexCount}`,\n 'HEIGHT 1',\n 'VIEWPOINT 0 0 0 1 0 0 0',\n `POINTS ${vertexCount}`,\n 'DATA ascii'\n ];\n\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n const row = [\n getComponent(positionAttribute, vertexIndex, 0),\n getComponent(positionAttribute, vertexIndex, 1),\n getComponent(positionAttribute, vertexIndex, 2)\n ];\n\n if (normalAttribute) {\n row.push(\n getComponent(normalAttribute, vertexIndex, 0),\n getComponent(normalAttribute, vertexIndex, 1),\n getComponent(normalAttribute, vertexIndex, 2)\n );\n }\n\n if (colorAttribute) {\n row.push(getPackedRGB(colorAttribute, vertexIndex));\n }\n\n lines.push(row.join(' '));\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\n/** Return mesh data as a MeshArrowTable, converting plain Mesh data first. */\nfunction normalizeMeshArrowTable(data: Mesh | MeshArrowTable | Table): MeshArrowTable | Table {\n if (!('attributes' in data)) {\n return data;\n }\n return convertMeshToArrowTableWrapper(data as Mesh);\n}\n\n/** Return a required mesh attribute or throw a format-specific error. */\nfunction getRequiredAttribute(mesh: Mesh, attributeName: string): MeshAttribute {\n const attribute = mesh.attributes[attributeName];\n if (!attribute) {\n throw new Error(`PCDWriter: ${attributeName} attribute is required`);\n }\n return attribute;\n}\n\n/** Return a single attribute component with 0 as the missing component fallback. */\nfunction getComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n return attribute.value[vertexIndex * attribute.size + componentIndex] || 0;\n}\n\n/** Return an RGB value packed into the PCD float convention. */\nfunction getPackedRGB(attribute: MeshAttribute, vertexIndex: number): number {\n const bytes = new Uint8Array(4);\n bytes[0] = getColorByte(attribute, vertexIndex, 0);\n bytes[1] = getColorByte(attribute, vertexIndex, 1);\n bytes[2] = getColorByte(attribute, vertexIndex, 2);\n return new DataView(bytes.buffer).getFloat32(0, true);\n}\n\n/** Return one color component as an unsigned byte. */\nfunction getColorByte(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n const value = getComponent(attribute, vertexIndex, componentIndex);\n const byteValue = attribute.normalized || value <= 1 ? value * 255 : value;\n return Math.max(0, Math.min(255, Math.round(byteValue)));\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './pcd/pcd-writer.js';
2
+ //# sourceMappingURL=pcd-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcd-writer.d.ts","sourceRoot":"","sources":["../src/pcd-writer.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './pcd/pcd-writer.js';
2
+ //# sourceMappingURL=pcd-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcd-writer.js","sourceRoot":"","sources":["../src/pcd-writer.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -20,14 +20,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/ply/bundled.ts
21
21
  var bundled_exports = {};
22
22
  __export(bundled_exports, {
23
- PLYLoader: () => import_ply_loader.PLYLoaderWithParser,
24
- PLYWorkerLoader: () => import_ply_loader.PLYLoaderWithParser
23
+ PLYLoader: () => import_ply_loader.PLYLoaderWithParser
25
24
  });
26
25
  module.exports = __toCommonJS(bundled_exports);
27
26
  var import_ply_loader = require("./ply-loader.cjs");
28
27
  // Annotate the CommonJS export names for ESM import in node:
29
28
  0 && (module.exports = {
30
- PLYLoader,
31
- PLYWorkerLoader
29
+ PLYLoader
32
30
  });
33
31
  //# sourceMappingURL=bundled.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/ply/bundled.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport type {PLYLoaderOptions} from './ply-loader-types';\nexport {\n PLYLoaderWithParser as PLYWorkerLoader,\n PLYLoaderWithParser as PLYLoader\n} from './ply-loader';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,wBAGO;",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport type {PLYLoaderOptions} from './ply-loader-types';\nexport {PLYLoaderWithParser as PLYLoader} from './ply-loader';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,wBAA+C;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,3 @@
1
1
  export type { PLYLoaderOptions } from "./ply-loader-types.js";
2
- export { PLYLoaderWithParser as PLYWorkerLoader, PLYLoaderWithParser as PLYLoader } from "./ply-loader.js";
2
+ export { PLYLoaderWithParser as PLYLoader } from "./ply-loader.js";
3
3
  //# sourceMappingURL=bundled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundled.d.ts","sourceRoot":"","sources":["../../src/ply/bundled.ts"],"names":[],"mappings":"AAIA,YAAY,EAAC,gBAAgB,EAAC,8BAA2B;AACzD,OAAO,EACL,mBAAmB,IAAI,eAAe,EACtC,mBAAmB,IAAI,SAAS,EACjC,wBAAqB"}
1
+ {"version":3,"file":"bundled.d.ts","sourceRoot":"","sources":["../../src/ply/bundled.ts"],"names":[],"mappings":"AAIA,YAAY,EAAC,gBAAgB,EAAC,8BAA2B;AACzD,OAAO,EAAC,mBAAmB,IAAI,SAAS,EAAC,wBAAqB"}
@@ -1,5 +1,5 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- export { PLYLoaderWithParser as PLYWorkerLoader, PLYLoaderWithParser as PLYLoader } from "./ply-loader.js";
4
+ export { PLYLoaderWithParser as PLYLoader } from "./ply-loader.js";
5
5
  //# sourceMappingURL=bundled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundled.js","sourceRoot":"","sources":["../../src/ply/bundled.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EACL,mBAAmB,IAAI,eAAe,EACtC,mBAAmB,IAAI,SAAS,EACjC,wBAAqB"}
1
+ {"version":3,"file":"bundled.js","sourceRoot":"","sources":["../../src/ply/bundled.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,mBAAmB,IAAI,SAAS,EAAC,wBAAqB"}
@@ -22,19 +22,16 @@ var ply_exports = {};
22
22
  __export(ply_exports, {
23
23
  PLYFormat: () => import_ply_format.PLYFormat,
24
24
  PLYLoader: () => import_ply_loader_types.PLYLoader,
25
- PLYWorkerLoader: () => import_ply_loader_types2.PLYWorkerLoader,
26
25
  PLYWriter: () => import_ply_writer.PLYWriter
27
26
  });
28
27
  module.exports = __toCommonJS(ply_exports);
29
28
  var import_ply_format = require("./ply-format.cjs");
30
29
  var import_ply_loader_types = require("./ply-loader-types.cjs");
31
30
  var import_ply_writer = require("./ply-writer.cjs");
32
- var import_ply_loader_types2 = require("./ply-loader-types.cjs");
33
31
  // Annotate the CommonJS export names for ESM import in node:
34
32
  0 && (module.exports = {
35
33
  PLYFormat,
36
34
  PLYLoader,
37
- PLYWorkerLoader,
38
35
  PLYWriter
39
36
  });
40
37
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/ply/index.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// PLYLoader\nexport {PLYFormat} from './ply-format';\n\nexport type {PLYLoaderOptions} from './ply-loader-types';\nexport {PLYLoader} from './ply-loader-types';\nexport type {PLYWriterOptions} from './ply-writer';\nexport {PLYWriter} from './ply-writer';\n\n// DEPRECATED EXPORTS\n/** @deprecated Use PLYLoader. */\nexport {PLYWorkerLoader} from './ply-loader-types';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,wBAAwB;AAGxB,8BAAwB;AAExB,wBAAwB;AAIxB,IAAAA,2BAA8B;",
6
- "names": ["import_ply_loader_types"]
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// PLYLoader\nexport {PLYFormat} from './ply-format';\n\nexport type {PLYLoaderOptions} from './ply-loader-types';\nexport {PLYLoader} from './ply-loader-types';\nexport type {PLYWriterOptions} from './ply-writer';\nexport {PLYWriter} from './ply-writer';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,wBAAwB;AAGxB,8BAAwB;AAExB,wBAAwB;",
6
+ "names": []
7
7
  }
@@ -3,6 +3,4 @@ export type { PLYLoaderOptions } from "./ply-loader-types.js";
3
3
  export { PLYLoader } from "./ply-loader-types.js";
4
4
  export type { PLYWriterOptions } from "./ply-writer.js";
5
5
  export { PLYWriter } from "./ply-writer.js";
6
- /** @deprecated Use PLYLoader. */
7
- export { PLYWorkerLoader } from "./ply-loader-types.js";
8
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ply/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAEvC,YAAY,EAAC,gBAAgB,EAAC,8BAA2B;AACzD,OAAO,EAAC,SAAS,EAAC,8BAA2B;AAC7C,YAAY,EAAC,gBAAgB,EAAC,wBAAqB;AACnD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAGvC,iCAAiC;AACjC,OAAO,EAAC,eAAe,EAAC,8BAA2B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ply/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAEvC,YAAY,EAAC,gBAAgB,EAAC,8BAA2B;AACzD,OAAO,EAAC,SAAS,EAAC,8BAA2B;AAC7C,YAAY,EAAC,gBAAgB,EAAC,wBAAqB;AACnD,OAAO,EAAC,SAAS,EAAC,wBAAqB"}
package/dist/ply/index.js CHANGED
@@ -5,7 +5,4 @@
5
5
  export { PLYFormat } from "./ply-format.js";
6
6
  export { PLYLoader } from "./ply-loader-types.js";
7
7
  export { PLYWriter } from "./ply-writer.js";
8
- // DEPRECATED EXPORTS
9
- /** @deprecated Use PLYLoader. */
10
- export { PLYWorkerLoader } from "./ply-loader-types.js";
11
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ply/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,YAAY;AACZ,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAGvC,OAAO,EAAC,SAAS,EAAC,8BAA2B;AAE7C,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAEvC,qBAAqB;AACrB,iCAAiC;AACjC,OAAO,EAAC,eAAe,EAAC,8BAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ply/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,YAAY;AACZ,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAGvC,OAAO,EAAC,SAAS,EAAC,8BAA2B;AAE7C,OAAO,EAAC,SAAS,EAAC,wBAAqB"}
@@ -20,7 +20,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/ply/lib/get-ply-schema.ts
21
21
  var get_ply_schema_exports = {};
22
22
  __export(get_ply_schema_exports, {
23
- getPLYSchema: () => getPLYSchema
23
+ getPLYSchema: () => getPLYSchema,
24
+ makeMetadataFromPlyHeader: () => makeMetadataFromPlyHeader
24
25
  });
25
26
  module.exports = __toCommonJS(get_ply_schema_exports);
26
27
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
@@ -121,6 +122,7 @@ function getNumberedPropertyComponent(name, prefix) {
121
122
  }
122
123
  // Annotate the CommonJS export names for ESM import in node:
123
124
  0 && (module.exports = {
124
- getPLYSchema
125
+ getPLYSchema,
126
+ makeMetadataFromPlyHeader
125
127
  });
126
128
  //# sourceMappingURL=get-ply-schema.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/ply/lib/get-ply-schema.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Schema, Field, MeshAttributes} from '@loaders.gl/core/schema';\nimport {deduceMeshSchema} from '@loaders.gl/core/schema-utils';\nimport type {PLYHeader} from './ply-types';\n\n/**\n * Gets schema from PLY header\n * @param plyHeader\n * @param metadata\n * @returns Schema\n */\nexport function getPLYSchema(plyHeader: PLYHeader, attributes: MeshAttributes): Schema {\n const metadata = makeMetadataFromPlyHeader(plyHeader);\n const schema = deduceMeshSchema(attributes, metadata);\n addGaussianSplatSchemaMetadata(schema, plyHeader);\n return schema;\n}\n\n/**\n * Make arrow like schema metadata by PlyHeader properties\n * @param plyHeader\n * @returns\n */\nfunction makeMetadataFromPlyHeader(plyHeader: PLYHeader): Record<string, string> {\n /* eslint-disable camelcase */\n const metadata: Record<string, string> = {};\n metadata.ply_comments = JSON.stringify(plyHeader.comments);\n metadata.ply_elements = JSON.stringify(plyHeader.elements);\n if (plyHeader.format !== undefined) {\n metadata.ply_format = plyHeader.format;\n }\n if (plyHeader.version !== undefined) {\n metadata.ply_version = plyHeader.version;\n }\n if (plyHeader.headerLength !== undefined) {\n metadata.ply_headerLength = plyHeader.headerLength.toString(10);\n }\n return metadata;\n}\n\n/** Add Gaussian splat metadata conventions for GraphDECO-style PLY columns. */\nfunction addGaussianSplatSchemaMetadata(schema: Schema, plyHeader: PLYHeader): void {\n const vertexPropertyNames = getVertexPropertyNames(plyHeader);\n if (!isGaussianSplatPLY(vertexPropertyNames)) {\n return;\n }\n\n schema.metadata['loaders_gl.semantic_type'] = 'gaussian-splats';\n schema.metadata['loaders_gl.gaussian_splats.version'] = '1';\n\n for (const field of schema.fields) {\n addGaussianSplatFieldMetadata(field);\n }\n}\n\n/** Return the property names for the PLY vertex element. */\nfunction getVertexPropertyNames(plyHeader: PLYHeader): Set<string> {\n const vertexElement = plyHeader.elements.find(element => element.name === 'vertex');\n return new Set(vertexElement?.properties.map(property => property.name) || []);\n}\n\n/** Return true if the PLY vertex properties match the de facto Gaussian splat layout. */\nfunction isGaussianSplatPLY(propertyNames: Set<string>): boolean {\n const requiredPropertyNames = [\n 'x',\n 'y',\n 'z',\n 'f_dc_0',\n 'f_dc_1',\n 'f_dc_2',\n 'opacity',\n 'scale_0',\n 'scale_1',\n 'scale_2',\n 'rot_0',\n 'rot_1',\n 'rot_2',\n 'rot_3'\n ];\n return requiredPropertyNames.every(propertyName => propertyNames.has(propertyName));\n}\n\n/** Add loaders.gl Gaussian splat metadata to one schema field. */\nfunction addGaussianSplatFieldMetadata(field: Field): void {\n field.metadata ||= {};\n const metadata = field.metadata;\n\n if (field.name === 'opacity') {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'opacity';\n metadata['loaders_gl.gaussian_splats.encoding'] = 'logit';\n return;\n }\n\n const scaleComponent = getNumberedPropertyComponent(field.name, 'scale');\n if (scaleComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'scale';\n metadata['loaders_gl.gaussian_splats.component'] = scaleComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'log';\n return;\n }\n\n const rotationComponent = getNumberedPropertyComponent(field.name, 'rot');\n if (rotationComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'rotation';\n metadata['loaders_gl.gaussian_splats.component'] = rotationComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'quaternion';\n return;\n }\n\n const sphericalHarmonicDCComponent = getNumberedPropertyComponent(field.name, 'f_dc');\n if (sphericalHarmonicDCComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'spherical_harmonic_dc';\n metadata['loaders_gl.gaussian_splats.component'] = sphericalHarmonicDCComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'coefficient';\n return;\n }\n\n const sphericalHarmonicRestComponent = getNumberedPropertyComponent(field.name, 'f_rest');\n if (sphericalHarmonicRestComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'spherical_harmonic_rest';\n metadata['loaders_gl.gaussian_splats.component'] = sphericalHarmonicRestComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'coefficient';\n }\n}\n\n/** Return the numeric suffix for a property such as scale_0. */\nfunction getNumberedPropertyComponent(name: string, prefix: string): string | undefined {\n const match = name.match(new RegExp(`^${prefix}_(\\\\d+)$`));\n return match?.[1];\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,0BAA+B;AASxB,SAAS,aAAa,WAAsB,YAAoC;AACrF,QAAM,WAAW,0BAA0B,SAAS;AACpD,QAAM,aAAS,sCAAiB,YAAY,QAAQ;AACpD,iCAA+B,QAAQ,SAAS;AAChD,SAAO;AACT;AAOA,SAAS,0BAA0B,WAA8C;AAE/E,QAAM,WAAmC,CAAC;AAC1C,WAAS,eAAe,KAAK,UAAU,UAAU,QAAQ;AACzD,WAAS,eAAe,KAAK,UAAU,UAAU,QAAQ;AACzD,MAAI,UAAU,WAAW,QAAW;AAClC,aAAS,aAAa,UAAU;AAAA,EAClC;AACA,MAAI,UAAU,YAAY,QAAW;AACnC,aAAS,cAAc,UAAU;AAAA,EACnC;AACA,MAAI,UAAU,iBAAiB,QAAW;AACxC,aAAS,mBAAmB,UAAU,aAAa,SAAS,EAAE;AAAA,EAChE;AACA,SAAO;AACT;AAGA,SAAS,+BAA+B,QAAgB,WAA4B;AAClF,QAAM,sBAAsB,uBAAuB,SAAS;AAC5D,MAAI,CAAC,mBAAmB,mBAAmB,GAAG;AAC5C;AAAA,EACF;AAEA,SAAO,SAAS,0BAA0B,IAAI;AAC9C,SAAO,SAAS,oCAAoC,IAAI;AAExD,aAAW,SAAS,OAAO,QAAQ;AACjC,kCAA8B,KAAK;AAAA,EACrC;AACF;AAGA,SAAS,uBAAuB,WAAmC;AACjE,QAAM,gBAAgB,UAAU,SAAS,KAAK,aAAW,QAAQ,SAAS,QAAQ;AAClF,SAAO,IAAI,IAAI,eAAe,WAAW,IAAI,cAAY,SAAS,IAAI,KAAK,CAAC,CAAC;AAC/E;AAGA,SAAS,mBAAmB,eAAqC;AAC/D,QAAM,wBAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,SAAO,sBAAsB,MAAM,kBAAgB,cAAc,IAAI,YAAY,CAAC;AACpF;AAGA,SAAS,8BAA8B,OAAoB;AACzD,QAAM,aAAa,CAAC;AACpB,QAAM,WAAW,MAAM;AAEvB,MAAI,MAAM,SAAS,WAAW;AAC5B,aAAS,qCAAqC,IAAI;AAClD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,iBAAiB,6BAA6B,MAAM,MAAM,OAAO;AACvE,MAAI,mBAAmB,QAAW;AAChC,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,oBAAoB,6BAA6B,MAAM,MAAM,KAAK;AACxE,MAAI,sBAAsB,QAAW;AACnC,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,+BAA+B,6BAA6B,MAAM,MAAM,MAAM;AACpF,MAAI,iCAAiC,QAAW;AAC9C,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,iCAAiC,6BAA6B,MAAM,MAAM,QAAQ;AACxF,MAAI,mCAAmC,QAAW;AAChD,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAAA,EACpD;AACF;AAGA,SAAS,6BAA6B,MAAc,QAAoC;AACtF,QAAM,QAAQ,KAAK,MAAM,IAAI,OAAO,IAAI,MAAM,UAAU,CAAC;AACzD,SAAO,QAAQ,CAAC;AAClB;",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Schema, Field, MeshAttributes} from '@loaders.gl/core/schema';\nimport {deduceMeshSchema} from '@loaders.gl/core/schema-utils';\nimport type {PLYHeader} from './ply-types';\n\n/**\n * Gets schema from PLY header\n * @param plyHeader\n * @param metadata\n * @returns Schema\n */\nexport function getPLYSchema(plyHeader: PLYHeader, attributes: MeshAttributes): Schema {\n const metadata = makeMetadataFromPlyHeader(plyHeader);\n const schema = deduceMeshSchema(attributes, metadata);\n addGaussianSplatSchemaMetadata(schema, plyHeader);\n return schema;\n}\n\n/**\n * Make arrow like schema metadata by PlyHeader properties\n * @param plyHeader\n * @returns\n */\nexport function makeMetadataFromPlyHeader(plyHeader: PLYHeader): Record<string, string> {\n /* eslint-disable camelcase */\n const metadata: Record<string, string> = {};\n metadata.ply_comments = JSON.stringify(plyHeader.comments);\n metadata.ply_elements = JSON.stringify(plyHeader.elements);\n if (plyHeader.format !== undefined) {\n metadata.ply_format = plyHeader.format;\n }\n if (plyHeader.version !== undefined) {\n metadata.ply_version = plyHeader.version;\n }\n if (plyHeader.headerLength !== undefined) {\n metadata.ply_headerLength = plyHeader.headerLength.toString(10);\n }\n return metadata;\n}\n\n/** Add Gaussian splat metadata conventions for GraphDECO-style PLY columns. */\nfunction addGaussianSplatSchemaMetadata(schema: Schema, plyHeader: PLYHeader): void {\n const vertexPropertyNames = getVertexPropertyNames(plyHeader);\n if (!isGaussianSplatPLY(vertexPropertyNames)) {\n return;\n }\n\n schema.metadata['loaders_gl.semantic_type'] = 'gaussian-splats';\n schema.metadata['loaders_gl.gaussian_splats.version'] = '1';\n\n for (const field of schema.fields) {\n addGaussianSplatFieldMetadata(field);\n }\n}\n\n/** Return the property names for the PLY vertex element. */\nfunction getVertexPropertyNames(plyHeader: PLYHeader): Set<string> {\n const vertexElement = plyHeader.elements.find(element => element.name === 'vertex');\n return new Set(vertexElement?.properties.map(property => property.name) || []);\n}\n\n/** Return true if the PLY vertex properties match the de facto Gaussian splat layout. */\nfunction isGaussianSplatPLY(propertyNames: Set<string>): boolean {\n const requiredPropertyNames = [\n 'x',\n 'y',\n 'z',\n 'f_dc_0',\n 'f_dc_1',\n 'f_dc_2',\n 'opacity',\n 'scale_0',\n 'scale_1',\n 'scale_2',\n 'rot_0',\n 'rot_1',\n 'rot_2',\n 'rot_3'\n ];\n return requiredPropertyNames.every(propertyName => propertyNames.has(propertyName));\n}\n\n/** Add loaders.gl Gaussian splat metadata to one schema field. */\nfunction addGaussianSplatFieldMetadata(field: Field): void {\n field.metadata ||= {};\n const metadata = field.metadata;\n\n if (field.name === 'opacity') {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'opacity';\n metadata['loaders_gl.gaussian_splats.encoding'] = 'logit';\n return;\n }\n\n const scaleComponent = getNumberedPropertyComponent(field.name, 'scale');\n if (scaleComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'scale';\n metadata['loaders_gl.gaussian_splats.component'] = scaleComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'log';\n return;\n }\n\n const rotationComponent = getNumberedPropertyComponent(field.name, 'rot');\n if (rotationComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'rotation';\n metadata['loaders_gl.gaussian_splats.component'] = rotationComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'quaternion';\n return;\n }\n\n const sphericalHarmonicDCComponent = getNumberedPropertyComponent(field.name, 'f_dc');\n if (sphericalHarmonicDCComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'spherical_harmonic_dc';\n metadata['loaders_gl.gaussian_splats.component'] = sphericalHarmonicDCComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'coefficient';\n return;\n }\n\n const sphericalHarmonicRestComponent = getNumberedPropertyComponent(field.name, 'f_rest');\n if (sphericalHarmonicRestComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'spherical_harmonic_rest';\n metadata['loaders_gl.gaussian_splats.component'] = sphericalHarmonicRestComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'coefficient';\n }\n}\n\n/** Return the numeric suffix for a property such as scale_0. */\nfunction getNumberedPropertyComponent(name: string, prefix: string): string | undefined {\n const match = name.match(new RegExp(`^${prefix}_(\\\\d+)$`));\n return match?.[1];\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,0BAA+B;AASxB,SAAS,aAAa,WAAsB,YAAoC;AACrF,QAAM,WAAW,0BAA0B,SAAS;AACpD,QAAM,aAAS,sCAAiB,YAAY,QAAQ;AACpD,iCAA+B,QAAQ,SAAS;AAChD,SAAO;AACT;AAOO,SAAS,0BAA0B,WAA8C;AAEtF,QAAM,WAAmC,CAAC;AAC1C,WAAS,eAAe,KAAK,UAAU,UAAU,QAAQ;AACzD,WAAS,eAAe,KAAK,UAAU,UAAU,QAAQ;AACzD,MAAI,UAAU,WAAW,QAAW;AAClC,aAAS,aAAa,UAAU;AAAA,EAClC;AACA,MAAI,UAAU,YAAY,QAAW;AACnC,aAAS,cAAc,UAAU;AAAA,EACnC;AACA,MAAI,UAAU,iBAAiB,QAAW;AACxC,aAAS,mBAAmB,UAAU,aAAa,SAAS,EAAE;AAAA,EAChE;AACA,SAAO;AACT;AAGA,SAAS,+BAA+B,QAAgB,WAA4B;AAClF,QAAM,sBAAsB,uBAAuB,SAAS;AAC5D,MAAI,CAAC,mBAAmB,mBAAmB,GAAG;AAC5C;AAAA,EACF;AAEA,SAAO,SAAS,0BAA0B,IAAI;AAC9C,SAAO,SAAS,oCAAoC,IAAI;AAExD,aAAW,SAAS,OAAO,QAAQ;AACjC,kCAA8B,KAAK;AAAA,EACrC;AACF;AAGA,SAAS,uBAAuB,WAAmC;AACjE,QAAM,gBAAgB,UAAU,SAAS,KAAK,aAAW,QAAQ,SAAS,QAAQ;AAClF,SAAO,IAAI,IAAI,eAAe,WAAW,IAAI,cAAY,SAAS,IAAI,KAAK,CAAC,CAAC;AAC/E;AAGA,SAAS,mBAAmB,eAAqC;AAC/D,QAAM,wBAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,SAAO,sBAAsB,MAAM,kBAAgB,cAAc,IAAI,YAAY,CAAC;AACpF;AAGA,SAAS,8BAA8B,OAAoB;AACzD,QAAM,aAAa,CAAC;AACpB,QAAM,WAAW,MAAM;AAEvB,MAAI,MAAM,SAAS,WAAW;AAC5B,aAAS,qCAAqC,IAAI;AAClD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,iBAAiB,6BAA6B,MAAM,MAAM,OAAO;AACvE,MAAI,mBAAmB,QAAW;AAChC,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,oBAAoB,6BAA6B,MAAM,MAAM,KAAK;AACxE,MAAI,sBAAsB,QAAW;AACnC,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,+BAA+B,6BAA6B,MAAM,MAAM,MAAM;AACpF,MAAI,iCAAiC,QAAW;AAC9C,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,iCAAiC,6BAA6B,MAAM,MAAM,QAAQ;AACxF,MAAI,mCAAmC,QAAW;AAChD,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAAA,EACpD;AACF;AAGA,SAAS,6BAA6B,MAAc,QAAoC;AACtF,QAAM,QAAQ,KAAK,MAAM,IAAI,OAAO,IAAI,MAAM,UAAU,CAAC;AACzD,SAAO,QAAQ,CAAC;AAClB;",
6
6
  "names": []
7
7
  }
@@ -7,4 +7,10 @@ import type { PLYHeader } from "./ply-types.js";
7
7
  * @returns Schema
8
8
  */
9
9
  export declare function getPLYSchema(plyHeader: PLYHeader, attributes: MeshAttributes): Schema;
10
+ /**
11
+ * Make arrow like schema metadata by PlyHeader properties
12
+ * @param plyHeader
13
+ * @returns
14
+ */
15
+ export declare function makeMetadataFromPlyHeader(plyHeader: PLYHeader): Record<string, string>;
10
16
  //# sourceMappingURL=get-ply-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-ply-schema.d.ts","sourceRoot":"","sources":["../../../src/ply/lib/get-ply-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAS,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAE3E,OAAO,KAAK,EAAC,SAAS,EAAC,uBAAoB;AAE3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,GAAG,MAAM,CAKrF"}
1
+ {"version":3,"file":"get-ply-schema.d.ts","sourceRoot":"","sources":["../../../src/ply/lib/get-ply-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAS,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAE3E,OAAO,KAAK,EAAC,SAAS,EAAC,uBAAoB;AAE3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,GAAG,MAAM,CAKrF;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAetF"}
@@ -19,7 +19,7 @@ export function getPLYSchema(plyHeader, attributes) {
19
19
  * @param plyHeader
20
20
  * @returns
21
21
  */
22
- function makeMetadataFromPlyHeader(plyHeader) {
22
+ export function makeMetadataFromPlyHeader(plyHeader) {
23
23
  /* eslint-disable camelcase */
24
24
  const metadata = {};
25
25
  metadata.ply_comments = JSON.stringify(plyHeader.comments);
@@ -1 +1 @@
1
- {"version":3,"file":"get-ply-schema.js","sourceRoot":"","sources":["../../../src/ply/lib/get-ply-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-ply-schema.js","sourceRoot":"","sources":["../../../src/ply/lib/get-ply-schema.ts"],"names":[],"mappings":"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"}
@@ -325,7 +325,7 @@ function convertPLYMeshToArrowTable(mesh) {
325
325
  const arrowSchema = new arrow.Schema(fields, metadata);
326
326
  return {
327
327
  shape: "arrow-table",
328
- schema: mesh.schema,
328
+ schema: (0, import_schema_utils.serializeArrowSchema)(arrowSchema),
329
329
  data: new arrow.Table(arrowSchema, columns),
330
330
  topology: mesh.topology,
331
331
  indices: mesh.indices?.value.length ? mesh.indices : void 0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/ply/lib/parse-ply-arrow.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {\n Mesh,\n MeshAttribute,\n MeshAttributes,\n MeshArrowTable,\n TypedArray\n} from '@loaders.gl/core/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/core/schema-utils';\nimport * as arrow from 'apache-arrow';\nimport type {ParsePLYOptions} from './parse-ply';\nimport {parsePLYHeader} from './parse-ply';\nimport {getPLYSchema} from './get-ply-schema';\nimport type {PLYElement, PLYHeader, PLYMesh, PLYProperty} from './ply-types';\n\nconst PLY_END_HEADER_PATTERN = /end_header\\s/;\n\n/** Internal Arrow representation preserving one table per PLY element. */\nexport type PLYElementTables = {\n /** Parsed PLY header. */\n header: PLYHeader;\n /** Raw Arrow tables keyed by PLY element order. */\n elements: PLYElementTable[];\n};\n\n/** Raw Arrow table for one PLY element. */\nexport type PLYElementTable = {\n /** PLY element definition. */\n element: PLYElement;\n /** Raw property table for the element. */\n table: arrow.Table;\n};\n\ntype PropertyCollector = {\n property: PLYProperty;\n values: number[];\n offsets?: number[];\n};\n\ntype ElementCollector = {\n element: PLYElement;\n properties: PropertyCollector[];\n};\n\n/** Parse a full PLY payload into raw Arrow element tables. */\nexport function parsePLYToElementTables(\n data: ArrayBuffer | string,\n options: ParsePLYOptions = {}\n): PLYElementTables {\n const header = parsePLYHeader(data, options);\n const parseHeader = options.pointCloud ? getPointCloudPLYHeader(header) : header;\n if (header.format === 'ascii') {\n const text = data instanceof ArrayBuffer ? new TextDecoder().decode(data) : data;\n return parseASCIIPLYToElementTables(text, parseHeader);\n }\n\n if (!(data instanceof ArrayBuffer)) {\n throw new Error('Binary PLY parsing requires an ArrayBuffer.');\n }\n return parseBinaryPLYToElementTables(data, parseHeader);\n}\n\n/** Convert raw PLY element tables into the public Mesh Arrow table shape. */\nexport function convertPLYElementTablesToMeshArrowTable(\n elementTables: PLYElementTables\n): MeshArrowTable {\n const mesh = convertPLYElementTablesToMesh(elementTables);\n return convertPLYMeshToArrowTable(mesh);\n}\n\n/** Convert raw PLY element tables into the legacy Mesh shape. */\nexport function convertPLYElementTablesToMesh(elementTables: PLYElementTables): PLYMesh {\n const attributes = getMeshAttributesFromPLYElementTables(elementTables);\n const indices = getMeshIndicesFromPLYElementTables(elementTables);\n const boundingBox = getMeshBoundingBox(attributes);\n const vertexCount = attributes.POSITION?.value.length ? attributes.POSITION.value.length / 3 : 0;\n const isTriangles = Boolean(indices?.value.length);\n const mode = isTriangles ? 4 : 0;\n const topology = isTriangles ? 'triangle-list' : 'point-list';\n const schema = getPLYSchema(elementTables.header, attributes);\n\n return {\n loader: 'ply',\n loaderData: elementTables.header,\n header: {\n vertexCount,\n boundingBox: boundingBox ?? undefined\n },\n schema,\n attributes,\n indices: indices || {value: new Uint32Array(0), size: 0},\n mode,\n topology\n };\n}\n\n/** Parse an ASCII PLY payload into raw Arrow element tables. */\nfunction parseASCIIPLYToElementTables(data: string, header: PLYHeader): PLYElementTables {\n const collector = createElementTablesCollector(header);\n const body = getPLYTextBody(data);\n const lines = body.split('\\n');\n let elementIndex = 0;\n let elementRowIndex = 0;\n\n for (const sourceLine of lines) {\n const line = sourceLine.trim();\n if (line === '') {\n continue;\n }\n while (\n elementIndex < header.elements.length &&\n elementRowIndex >= header.elements[elementIndex].count\n ) {\n elementIndex++;\n elementRowIndex = 0;\n }\n if (elementIndex >= header.elements.length) {\n break;\n }\n appendASCIIElementRow(collector[elementIndex], line);\n elementRowIndex++;\n }\n\n return {header, elements: collector.map(makePLYElementTable)};\n}\n\n/** Parse a binary PLY payload into raw Arrow element tables. */\nfunction parseBinaryPLYToElementTables(data: ArrayBuffer, header: PLYHeader): PLYElementTables {\n const collector = createElementTablesCollector(header);\n const dataView = new DataView(data, header.headerLength || 0);\n const littleEndian = header.format !== 'binary_big_endian';\n let byteOffset = 0;\n\n for (let elementIndex = 0; elementIndex < header.elements.length; elementIndex++) {\n const element = header.elements[elementIndex];\n for (let rowIndex = 0; rowIndex < element.count; rowIndex++) {\n byteOffset += appendBinaryElementRow(\n collector[elementIndex],\n dataView,\n byteOffset,\n littleEndian\n );\n }\n }\n\n return {header, elements: collector.map(makePLYElementTable)};\n}\n\n/** Return a vertex-only PLY header for point-cloud parsing. */\nfunction getPointCloudPLYHeader(header: PLYHeader): PLYHeader {\n const vertexElement = header.elements[0];\n if (vertexElement?.name !== 'vertex') {\n throw new Error('PLY pointCloud parsing requires a leading vertex element');\n }\n\n return {\n ...header,\n elements: [vertexElement]\n };\n}\n\n/** Create mutable collectors for all PLY element properties. */\nfunction createElementTablesCollector(header: PLYHeader): ElementCollector[] {\n return header.elements.map(element => ({\n element,\n properties: element.properties.map(property => ({\n property,\n values: [],\n offsets: property.type === 'list' ? [0] : undefined\n }))\n }));\n}\n\n/** Append one ASCII row to an element collector. */\nfunction appendASCIIElementRow(collector: ElementCollector, line: string): void {\n const values = line.split(/\\s+/);\n let valueIndex = 0;\n\n for (const propertyCollector of collector.properties) {\n const property = propertyCollector.property;\n if (property.type === 'list') {\n const count = parseASCIINumber(values[valueIndex++], property.countType!);\n for (let listIndex = 0; listIndex < count; listIndex++) {\n propertyCollector.values.push(parseASCIINumber(values[valueIndex++], property.itemType!));\n }\n propertyCollector.offsets!.push(propertyCollector.values.length);\n } else {\n propertyCollector.values.push(parseASCIINumber(values[valueIndex++], property.type));\n }\n }\n}\n\n/** Append one binary row to an element collector and return consumed bytes. */\nfunction appendBinaryElementRow(\n collector: ElementCollector,\n dataView: DataView,\n byteOffset: number,\n littleEndian: boolean\n): number {\n let localOffset = 0;\n\n for (const propertyCollector of collector.properties) {\n const property = propertyCollector.property;\n if (property.type === 'list') {\n const [count, countByteLength] = readBinaryNumber(\n dataView,\n byteOffset + localOffset,\n property.countType!,\n littleEndian\n );\n localOffset += countByteLength;\n for (let listIndex = 0; listIndex < count; listIndex++) {\n const [value, valueByteLength] = readBinaryNumber(\n dataView,\n byteOffset + localOffset,\n property.itemType!,\n littleEndian\n );\n propertyCollector.values.push(value);\n localOffset += valueByteLength;\n }\n propertyCollector.offsets!.push(propertyCollector.values.length);\n } else {\n const [value, valueByteLength] = readBinaryNumber(\n dataView,\n byteOffset + localOffset,\n property.type,\n littleEndian\n );\n propertyCollector.values.push(value);\n localOffset += valueByteLength;\n }\n }\n\n return localOffset;\n}\n\n/** Convert one element collector into an Arrow table. */\nfunction makePLYElementTable(collector: ElementCollector): PLYElementTable {\n const fields: arrow.Field[] = [];\n const columns: Record<string, arrow.Vector> = {};\n\n for (const propertyCollector of collector.properties) {\n const column = makePLYPropertyVector(propertyCollector);\n columns[propertyCollector.property.name] = column;\n fields.push(new arrow.Field(propertyCollector.property.name, column.type, false));\n }\n\n return {\n element: collector.element,\n table: new arrow.Table(new arrow.Schema(fields), columns)\n };\n}\n\n/** Return a raw Arrow vector for one PLY property. */\nfunction makePLYPropertyVector(collector: PropertyCollector): arrow.Vector {\n const property = collector.property;\n if (property.type === 'list') {\n return makeListVector(\n property.itemType!,\n collector.values,\n Int32Array.from(collector.offsets || [0])\n );\n }\n return arrow.makeVector(getTypedArray(collector.values, property.type) as any);\n}\n\n/** Return the Mesh attributes represented by the PLY vertex table. */\nfunction getMeshAttributesFromPLYElementTables(elementTables: PLYElementTables): MeshAttributes {\n const vertexTable = getPLYElementTable(elementTables, 'vertex');\n const attributes: MeshAttributes = {};\n if (!vertexTable) {\n return attributes;\n }\n\n const position = makeFixedSizeListAttribute(vertexTable.table, ['x', 'y', 'z'], 'float');\n if (position) {\n attributes.POSITION = position;\n }\n const normal = makeFixedSizeListAttribute(vertexTable.table, ['nx', 'ny', 'nz'], 'float');\n if (normal) {\n attributes.NORMAL = normal;\n }\n const textureCoordinates = makeFixedSizeListAttribute(vertexTable.table, ['s', 't'], 'float');\n if (textureCoordinates) {\n attributes.TEXCOORD_0 = textureCoordinates;\n }\n const color = makeFixedSizeListAttribute(vertexTable.table, ['red', 'green', 'blue'], 'uchar');\n if (color) {\n attributes.COLOR_0 = {...color, normalized: true};\n }\n\n const packedPropertyNames = new Set([\n 'x',\n 'y',\n 'z',\n 'nx',\n 'ny',\n 'nz',\n 's',\n 't',\n 'red',\n 'green',\n 'blue'\n ]);\n for (const property of vertexTable.element.properties) {\n if (property.type === 'list' || packedPropertyNames.has(property.name)) {\n continue;\n }\n const column = vertexTable.table.getChild(property.name);\n if (column) {\n attributes[property.name] = {\n value: getVectorValues(column) as TypedArray,\n size: 1\n };\n }\n }\n\n return attributes;\n}\n\n/** Return triangulated mesh indices represented by the face table. */\nfunction getMeshIndicesFromPLYElementTables(\n elementTables: PLYElementTables\n): MeshAttribute | undefined {\n const faceTable = getPLYElementTable(elementTables, 'face');\n const indicesColumn =\n faceTable?.table.getChild('vertex_indices') || faceTable?.table.getChild('vertex_index');\n if (!indicesColumn) {\n return undefined;\n }\n\n const indices: number[] = [];\n for (let rowIndex = 0; rowIndex < indicesColumn.length; rowIndex++) {\n const vertexIndices = indicesColumn.get(rowIndex) as ArrayLike<number> | null;\n if (!vertexIndices) {\n continue;\n }\n if (vertexIndices.length === 3) {\n indices.push(\n getArrayLikeValue(vertexIndices, 0),\n getArrayLikeValue(vertexIndices, 1),\n getArrayLikeValue(vertexIndices, 2)\n );\n } else if (vertexIndices.length === 4) {\n indices.push(\n getArrayLikeValue(vertexIndices, 0),\n getArrayLikeValue(vertexIndices, 1),\n getArrayLikeValue(vertexIndices, 3)\n );\n indices.push(\n getArrayLikeValue(vertexIndices, 1),\n getArrayLikeValue(vertexIndices, 2),\n getArrayLikeValue(vertexIndices, 3)\n );\n }\n }\n\n return indices.length > 0 ? {value: new Uint32Array(indices), size: 1} : undefined;\n}\n\n/** Return one value from an Array-like object or Arrow vector. */\nfunction getArrayLikeValue(values: ArrayLike<number>, index: number): number {\n return 'get' in values && typeof values.get === 'function'\n ? Number(values.get(index))\n : Number(values[index]);\n}\n\n/** Convert a Mesh into the public Mesh Arrow table shape. */\nfunction convertPLYMeshToArrowTable(mesh: Mesh): MeshArrowTable {\n const fields: arrow.Field[] = [];\n const columns: Record<string, arrow.Vector> = {};\n const attributeNames = getOrderedAttributeNames(mesh.attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = mesh.attributes[attributeName];\n const column = makeMeshAttributeVector(attribute);\n columns[attributeName] = column;\n fields.push(getMeshAttributeField(mesh, attributeName, column));\n\n if (attributeName === 'POSITION' && mesh.indices?.value.length) {\n const indicesColumn = makeMeshIndicesVector(mesh.indices.value, column.length);\n columns.indices = indicesColumn;\n fields.push(new arrow.Field('indices', indicesColumn.type, true));\n }\n }\n\n const metadata = getArrowMetadata({\n ...mesh.schema.metadata,\n topology: mesh.topology,\n mode: String(mesh.mode),\n boundingBox: mesh.header?.boundingBox ? JSON.stringify(mesh.header.boundingBox) : undefined\n });\n const arrowSchema = new arrow.Schema(fields, metadata);\n\n return {\n shape: 'arrow-table',\n schema: mesh.schema,\n data: new arrow.Table(arrowSchema, columns),\n topology: mesh.topology,\n indices: mesh.indices?.value.length ? mesh.indices : undefined\n };\n}\n\n/** Return a mesh attribute vector. */\nfunction makeMeshAttributeVector(attribute: MeshAttribute): arrow.Vector {\n const {value, size} = attribute;\n if (size === 1) {\n return arrow.makeVector(value as any);\n }\n\n const values = arrow.makeVector(value as any);\n const child = values.data[0];\n const type = new arrow.FixedSizeList(size, new arrow.Field('value', child.type, false));\n const data = new arrow.Data(type, 0, value.length / size, 0, {}, [child]);\n return new arrow.Vector([data]);\n}\n\n/** Return a Mesh Arrow field, preserving PLY schema field metadata where available. */\nfunction getMeshAttributeField(\n mesh: Mesh,\n attributeName: string,\n column: arrow.Vector\n): arrow.Field {\n const field = mesh.schema.fields.find(schemaField => schemaField.name === attributeName);\n return new arrow.Field(attributeName, column.type, false, getArrowMetadata(field?.metadata));\n}\n\n/** Return an IndexedMesh indices column with the full index list stored in row 0. */\nfunction makeMeshIndicesVector(indices: MeshAttribute['value'], vertexCount: number): arrow.Vector {\n const values = indices instanceof Uint32Array ? indices : Uint32Array.from(indices);\n const valueOffsets = new Int32Array(vertexCount + 1);\n if (vertexCount > 0) {\n valueOffsets.fill(values.length, 1);\n }\n\n const nullBitmap = new Uint8Array(Math.ceil(vertexCount / 8));\n if (vertexCount > 0) {\n nullBitmap[0] = 1;\n }\n\n const type = new arrow.List(new arrow.Field('item', new arrow.Uint32(), false));\n const valuesData = new arrow.Data<arrow.Uint32>(type.children[0].type, 0, values.length, 0, {\n [arrow.BufferType.DATA]: values\n });\n const indicesData = new arrow.Data<arrow.List<arrow.Uint32>>(\n type,\n 0,\n vertexCount,\n Math.max(0, vertexCount - 1),\n {\n [arrow.BufferType.OFFSET]: valueOffsets,\n [arrow.BufferType.VALIDITY]: nullBitmap\n },\n [valuesData]\n );\n return new arrow.Vector([indicesData]);\n}\n\n/** Return a fixed-size list mesh attribute from separate scalar PLY columns. */\nfunction makeFixedSizeListAttribute(\n table: arrow.Table,\n columnNames: string[],\n preferredType: string\n): MeshAttribute | null {\n const columns = columnNames.map(columnName => table.getChild(columnName));\n if (columns.some(column => !column)) {\n return null;\n }\n\n const rowCount = table.numRows;\n const values =\n preferredType === 'uchar'\n ? new Uint8Array(rowCount * columnNames.length)\n : new Float32Array(rowCount * columnNames.length);\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n for (let componentIndex = 0; componentIndex < columns.length; componentIndex++) {\n values[rowIndex * columns.length + componentIndex] = Number(\n columns[componentIndex]!.get(rowIndex) ?? 0\n );\n }\n }\n\n return {value: values, size: columnNames.length};\n}\n\n/** Return a PLY element table by name. */\nfunction getPLYElementTable(\n elementTables: PLYElementTables,\n elementName: string\n): PLYElementTable | undefined {\n return elementTables.elements.find(elementTable => elementTable.element.name === elementName);\n}\n\n/** Return mesh attributes in stable public order. */\nfunction getOrderedAttributeNames(attributes: MeshAttributes): string[] {\n const firstNames = ['POSITION', 'indices'];\n return [\n ...firstNames.filter(attributeName => attributeName in attributes),\n ...Object.keys(attributes).filter(attributeName => !firstNames.includes(attributeName))\n ];\n}\n\n/** Return a vector's backing values. */\nfunction getVectorValues(vector: arrow.Vector): TypedArray {\n const data = vector.data[0];\n return data.values as TypedArray;\n}\n\n/** Return a PLY text body after the header terminator. */\nfunction getPLYTextBody(data: string): string {\n const match = PLY_END_HEADER_PATTERN.exec(data);\n return match ? data.slice(match.index + match[0].length) : '';\n}\n\n/** Return an Arrow list vector from value offsets and child values. */\nfunction makeListVector(\n typeName: string,\n values: number[],\n valueOffsets: Int32Array\n): arrow.Vector {\n const childType = getArrowType(typeName);\n const type = new arrow.List(new arrow.Field('item', childType, false));\n const typedValues = getTypedArray(values, typeName);\n const valuesData = new arrow.Data(childType, 0, typedValues.length, 0, {\n [arrow.BufferType.DATA]: typedValues\n });\n const listData = new arrow.Data(\n type,\n 0,\n valueOffsets.length - 1,\n 0,\n {[arrow.BufferType.OFFSET]: valueOffsets},\n [valuesData]\n );\n return new arrow.Vector([listData]);\n}\n\n/** Return a typed array for one PLY scalar type. */\nfunction getTypedArray(values: number[], type: string): TypedArray {\n switch (type) {\n case 'int8':\n case 'char':\n return Int8Array.from(values);\n case 'uint8':\n case 'uchar':\n return Uint8Array.from(values);\n case 'int16':\n case 'short':\n return Int16Array.from(values);\n case 'uint16':\n case 'ushort':\n return Uint16Array.from(values);\n case 'int32':\n case 'int':\n return Int32Array.from(values);\n case 'uint32':\n case 'uint':\n return Uint32Array.from(values);\n case 'float64':\n case 'double':\n return Float64Array.from(values);\n case 'float32':\n case 'float':\n default:\n return Float32Array.from(values);\n }\n}\n\n/** Return an Arrow scalar type for one PLY scalar type. */\nfunction getArrowType(type: string): arrow.DataType {\n switch (type) {\n case 'int8':\n case 'char':\n return new arrow.Int8();\n case 'uint8':\n case 'uchar':\n return new arrow.Uint8();\n case 'int16':\n case 'short':\n return new arrow.Int16();\n case 'uint16':\n case 'ushort':\n return new arrow.Uint16();\n case 'int32':\n case 'int':\n return new arrow.Int32();\n case 'uint32':\n case 'uint':\n return new arrow.Uint32();\n case 'float64':\n case 'double':\n return new arrow.Float64();\n case 'float32':\n case 'float':\n default:\n return new arrow.Float32();\n }\n}\n\n/** Parse one ASCII scalar value. */\nfunction parseASCIINumber(value: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(value, 10);\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(value);\n default:\n throw new Error(type);\n }\n}\n\n/** Read one binary scalar value and its byte length. */\nfunction readBinaryNumber(\n dataView: DataView,\n byteOffset: number,\n type: string,\n littleEndian: boolean\n): [number, number] {\n switch (type) {\n case 'int8':\n case 'char':\n return [dataView.getInt8(byteOffset), 1];\n case 'uint8':\n case 'uchar':\n return [dataView.getUint8(byteOffset), 1];\n case 'int16':\n case 'short':\n return [dataView.getInt16(byteOffset, littleEndian), 2];\n case 'uint16':\n case 'ushort':\n return [dataView.getUint16(byteOffset, littleEndian), 2];\n case 'int32':\n case 'int':\n return [dataView.getInt32(byteOffset, littleEndian), 4];\n case 'uint32':\n case 'uint':\n return [dataView.getUint32(byteOffset, littleEndian), 4];\n case 'float32':\n case 'float':\n return [dataView.getFloat32(byteOffset, littleEndian), 4];\n case 'float64':\n case 'double':\n return [dataView.getFloat64(byteOffset, littleEndian), 8];\n default:\n throw new Error(type);\n }\n}\n\n/** Convert optional metadata to Arrow metadata. */\nfunction getArrowMetadata(\n metadata: Record<string, string | undefined> | undefined\n): Map<string, string> {\n return new Map(\n Object.entries(metadata || {}).filter(\n (entry): entry is [string, string] => entry[1] !== undefined\n )\n );\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {\n Mesh,\n MeshAttribute,\n MeshAttributes,\n MeshArrowTable,\n TypedArray\n} from '@loaders.gl/core/schema';\nimport {getMeshBoundingBox, serializeArrowSchema} from '@loaders.gl/core/schema-utils';\nimport * as arrow from 'apache-arrow';\nimport type {ParsePLYOptions} from './parse-ply';\nimport {parsePLYHeader} from './parse-ply';\nimport {getPLYSchema} from './get-ply-schema';\nimport type {PLYElement, PLYHeader, PLYMesh, PLYProperty} from './ply-types';\n\nconst PLY_END_HEADER_PATTERN = /end_header\\s/;\n\n/** Internal Arrow representation preserving one table per PLY element. */\nexport type PLYElementTables = {\n /** Parsed PLY header. */\n header: PLYHeader;\n /** Raw Arrow tables keyed by PLY element order. */\n elements: PLYElementTable[];\n};\n\n/** Raw Arrow table for one PLY element. */\nexport type PLYElementTable = {\n /** PLY element definition. */\n element: PLYElement;\n /** Raw property table for the element. */\n table: arrow.Table;\n};\n\ntype PropertyCollector = {\n property: PLYProperty;\n values: number[];\n offsets?: number[];\n};\n\ntype ElementCollector = {\n element: PLYElement;\n properties: PropertyCollector[];\n};\n\n/** Parse a full PLY payload into raw Arrow element tables. */\nexport function parsePLYToElementTables(\n data: ArrayBuffer | string,\n options: ParsePLYOptions = {}\n): PLYElementTables {\n const header = parsePLYHeader(data, options);\n const parseHeader = options.pointCloud ? getPointCloudPLYHeader(header) : header;\n if (header.format === 'ascii') {\n const text = data instanceof ArrayBuffer ? new TextDecoder().decode(data) : data;\n return parseASCIIPLYToElementTables(text, parseHeader);\n }\n\n if (!(data instanceof ArrayBuffer)) {\n throw new Error('Binary PLY parsing requires an ArrayBuffer.');\n }\n return parseBinaryPLYToElementTables(data, parseHeader);\n}\n\n/** Convert raw PLY element tables into the public Mesh Arrow table shape. */\nexport function convertPLYElementTablesToMeshArrowTable(\n elementTables: PLYElementTables\n): MeshArrowTable {\n const mesh = convertPLYElementTablesToMesh(elementTables);\n return convertPLYMeshToArrowTable(mesh);\n}\n\n/** Convert raw PLY element tables into the legacy Mesh shape. */\nexport function convertPLYElementTablesToMesh(elementTables: PLYElementTables): PLYMesh {\n const attributes = getMeshAttributesFromPLYElementTables(elementTables);\n const indices = getMeshIndicesFromPLYElementTables(elementTables);\n const boundingBox = getMeshBoundingBox(attributes);\n const vertexCount = attributes.POSITION?.value.length ? attributes.POSITION.value.length / 3 : 0;\n const isTriangles = Boolean(indices?.value.length);\n const mode = isTriangles ? 4 : 0;\n const topology = isTriangles ? 'triangle-list' : 'point-list';\n const schema = getPLYSchema(elementTables.header, attributes);\n\n return {\n loader: 'ply',\n loaderData: elementTables.header,\n header: {\n vertexCount,\n boundingBox: boundingBox ?? undefined\n },\n schema,\n attributes,\n indices: indices || {value: new Uint32Array(0), size: 0},\n mode,\n topology\n };\n}\n\n/** Parse an ASCII PLY payload into raw Arrow element tables. */\nfunction parseASCIIPLYToElementTables(data: string, header: PLYHeader): PLYElementTables {\n const collector = createElementTablesCollector(header);\n const body = getPLYTextBody(data);\n const lines = body.split('\\n');\n let elementIndex = 0;\n let elementRowIndex = 0;\n\n for (const sourceLine of lines) {\n const line = sourceLine.trim();\n if (line === '') {\n continue;\n }\n while (\n elementIndex < header.elements.length &&\n elementRowIndex >= header.elements[elementIndex].count\n ) {\n elementIndex++;\n elementRowIndex = 0;\n }\n if (elementIndex >= header.elements.length) {\n break;\n }\n appendASCIIElementRow(collector[elementIndex], line);\n elementRowIndex++;\n }\n\n return {header, elements: collector.map(makePLYElementTable)};\n}\n\n/** Parse a binary PLY payload into raw Arrow element tables. */\nfunction parseBinaryPLYToElementTables(data: ArrayBuffer, header: PLYHeader): PLYElementTables {\n const collector = createElementTablesCollector(header);\n const dataView = new DataView(data, header.headerLength || 0);\n const littleEndian = header.format !== 'binary_big_endian';\n let byteOffset = 0;\n\n for (let elementIndex = 0; elementIndex < header.elements.length; elementIndex++) {\n const element = header.elements[elementIndex];\n for (let rowIndex = 0; rowIndex < element.count; rowIndex++) {\n byteOffset += appendBinaryElementRow(\n collector[elementIndex],\n dataView,\n byteOffset,\n littleEndian\n );\n }\n }\n\n return {header, elements: collector.map(makePLYElementTable)};\n}\n\n/** Return a vertex-only PLY header for point-cloud parsing. */\nfunction getPointCloudPLYHeader(header: PLYHeader): PLYHeader {\n const vertexElement = header.elements[0];\n if (vertexElement?.name !== 'vertex') {\n throw new Error('PLY pointCloud parsing requires a leading vertex element');\n }\n\n return {\n ...header,\n elements: [vertexElement]\n };\n}\n\n/** Create mutable collectors for all PLY element properties. */\nfunction createElementTablesCollector(header: PLYHeader): ElementCollector[] {\n return header.elements.map(element => ({\n element,\n properties: element.properties.map(property => ({\n property,\n values: [],\n offsets: property.type === 'list' ? [0] : undefined\n }))\n }));\n}\n\n/** Append one ASCII row to an element collector. */\nfunction appendASCIIElementRow(collector: ElementCollector, line: string): void {\n const values = line.split(/\\s+/);\n let valueIndex = 0;\n\n for (const propertyCollector of collector.properties) {\n const property = propertyCollector.property;\n if (property.type === 'list') {\n const count = parseASCIINumber(values[valueIndex++], property.countType!);\n for (let listIndex = 0; listIndex < count; listIndex++) {\n propertyCollector.values.push(parseASCIINumber(values[valueIndex++], property.itemType!));\n }\n propertyCollector.offsets!.push(propertyCollector.values.length);\n } else {\n propertyCollector.values.push(parseASCIINumber(values[valueIndex++], property.type));\n }\n }\n}\n\n/** Append one binary row to an element collector and return consumed bytes. */\nfunction appendBinaryElementRow(\n collector: ElementCollector,\n dataView: DataView,\n byteOffset: number,\n littleEndian: boolean\n): number {\n let localOffset = 0;\n\n for (const propertyCollector of collector.properties) {\n const property = propertyCollector.property;\n if (property.type === 'list') {\n const [count, countByteLength] = readBinaryNumber(\n dataView,\n byteOffset + localOffset,\n property.countType!,\n littleEndian\n );\n localOffset += countByteLength;\n for (let listIndex = 0; listIndex < count; listIndex++) {\n const [value, valueByteLength] = readBinaryNumber(\n dataView,\n byteOffset + localOffset,\n property.itemType!,\n littleEndian\n );\n propertyCollector.values.push(value);\n localOffset += valueByteLength;\n }\n propertyCollector.offsets!.push(propertyCollector.values.length);\n } else {\n const [value, valueByteLength] = readBinaryNumber(\n dataView,\n byteOffset + localOffset,\n property.type,\n littleEndian\n );\n propertyCollector.values.push(value);\n localOffset += valueByteLength;\n }\n }\n\n return localOffset;\n}\n\n/** Convert one element collector into an Arrow table. */\nfunction makePLYElementTable(collector: ElementCollector): PLYElementTable {\n const fields: arrow.Field[] = [];\n const columns: Record<string, arrow.Vector> = {};\n\n for (const propertyCollector of collector.properties) {\n const column = makePLYPropertyVector(propertyCollector);\n columns[propertyCollector.property.name] = column;\n fields.push(new arrow.Field(propertyCollector.property.name, column.type, false));\n }\n\n return {\n element: collector.element,\n table: new arrow.Table(new arrow.Schema(fields), columns)\n };\n}\n\n/** Return a raw Arrow vector for one PLY property. */\nfunction makePLYPropertyVector(collector: PropertyCollector): arrow.Vector {\n const property = collector.property;\n if (property.type === 'list') {\n return makeListVector(\n property.itemType!,\n collector.values,\n Int32Array.from(collector.offsets || [0])\n );\n }\n return arrow.makeVector(getTypedArray(collector.values, property.type) as any);\n}\n\n/** Return the Mesh attributes represented by the PLY vertex table. */\nfunction getMeshAttributesFromPLYElementTables(elementTables: PLYElementTables): MeshAttributes {\n const vertexTable = getPLYElementTable(elementTables, 'vertex');\n const attributes: MeshAttributes = {};\n if (!vertexTable) {\n return attributes;\n }\n\n const position = makeFixedSizeListAttribute(vertexTable.table, ['x', 'y', 'z'], 'float');\n if (position) {\n attributes.POSITION = position;\n }\n const normal = makeFixedSizeListAttribute(vertexTable.table, ['nx', 'ny', 'nz'], 'float');\n if (normal) {\n attributes.NORMAL = normal;\n }\n const textureCoordinates = makeFixedSizeListAttribute(vertexTable.table, ['s', 't'], 'float');\n if (textureCoordinates) {\n attributes.TEXCOORD_0 = textureCoordinates;\n }\n const color = makeFixedSizeListAttribute(vertexTable.table, ['red', 'green', 'blue'], 'uchar');\n if (color) {\n attributes.COLOR_0 = {...color, normalized: true};\n }\n\n const packedPropertyNames = new Set([\n 'x',\n 'y',\n 'z',\n 'nx',\n 'ny',\n 'nz',\n 's',\n 't',\n 'red',\n 'green',\n 'blue'\n ]);\n for (const property of vertexTable.element.properties) {\n if (property.type === 'list' || packedPropertyNames.has(property.name)) {\n continue;\n }\n const column = vertexTable.table.getChild(property.name);\n if (column) {\n attributes[property.name] = {\n value: getVectorValues(column) as TypedArray,\n size: 1\n };\n }\n }\n\n return attributes;\n}\n\n/** Return triangulated mesh indices represented by the face table. */\nfunction getMeshIndicesFromPLYElementTables(\n elementTables: PLYElementTables\n): MeshAttribute | undefined {\n const faceTable = getPLYElementTable(elementTables, 'face');\n const indicesColumn =\n faceTable?.table.getChild('vertex_indices') || faceTable?.table.getChild('vertex_index');\n if (!indicesColumn) {\n return undefined;\n }\n\n const indices: number[] = [];\n for (let rowIndex = 0; rowIndex < indicesColumn.length; rowIndex++) {\n const vertexIndices = indicesColumn.get(rowIndex) as ArrayLike<number> | null;\n if (!vertexIndices) {\n continue;\n }\n if (vertexIndices.length === 3) {\n indices.push(\n getArrayLikeValue(vertexIndices, 0),\n getArrayLikeValue(vertexIndices, 1),\n getArrayLikeValue(vertexIndices, 2)\n );\n } else if (vertexIndices.length === 4) {\n indices.push(\n getArrayLikeValue(vertexIndices, 0),\n getArrayLikeValue(vertexIndices, 1),\n getArrayLikeValue(vertexIndices, 3)\n );\n indices.push(\n getArrayLikeValue(vertexIndices, 1),\n getArrayLikeValue(vertexIndices, 2),\n getArrayLikeValue(vertexIndices, 3)\n );\n }\n }\n\n return indices.length > 0 ? {value: new Uint32Array(indices), size: 1} : undefined;\n}\n\n/** Return one value from an Array-like object or Arrow vector. */\nfunction getArrayLikeValue(values: ArrayLike<number>, index: number): number {\n return 'get' in values && typeof values.get === 'function'\n ? Number(values.get(index))\n : Number(values[index]);\n}\n\n/** Convert a Mesh into the public Mesh Arrow table shape. */\nfunction convertPLYMeshToArrowTable(mesh: Mesh): MeshArrowTable {\n const fields: arrow.Field[] = [];\n const columns: Record<string, arrow.Vector> = {};\n const attributeNames = getOrderedAttributeNames(mesh.attributes);\n\n for (const attributeName of attributeNames) {\n const attribute = mesh.attributes[attributeName];\n const column = makeMeshAttributeVector(attribute);\n columns[attributeName] = column;\n fields.push(getMeshAttributeField(mesh, attributeName, column));\n\n if (attributeName === 'POSITION' && mesh.indices?.value.length) {\n const indicesColumn = makeMeshIndicesVector(mesh.indices.value, column.length);\n columns.indices = indicesColumn;\n fields.push(new arrow.Field('indices', indicesColumn.type, true));\n }\n }\n\n const metadata = getArrowMetadata({\n ...mesh.schema.metadata,\n topology: mesh.topology,\n mode: String(mesh.mode),\n boundingBox: mesh.header?.boundingBox ? JSON.stringify(mesh.header.boundingBox) : undefined\n });\n const arrowSchema = new arrow.Schema(fields, metadata);\n\n return {\n shape: 'arrow-table',\n schema: serializeArrowSchema(arrowSchema),\n data: new arrow.Table(arrowSchema, columns),\n topology: mesh.topology,\n indices: mesh.indices?.value.length ? mesh.indices : undefined\n };\n}\n\n/** Return a mesh attribute vector. */\nfunction makeMeshAttributeVector(attribute: MeshAttribute): arrow.Vector {\n const {value, size} = attribute;\n if (size === 1) {\n return arrow.makeVector(value as any);\n }\n\n const values = arrow.makeVector(value as any);\n const child = values.data[0];\n const type = new arrow.FixedSizeList(size, new arrow.Field('value', child.type, false));\n const data = new arrow.Data(type, 0, value.length / size, 0, {}, [child]);\n return new arrow.Vector([data]);\n}\n\n/** Return a Mesh Arrow field, preserving PLY schema field metadata where available. */\nfunction getMeshAttributeField(\n mesh: Mesh,\n attributeName: string,\n column: arrow.Vector\n): arrow.Field {\n const field = mesh.schema.fields.find(schemaField => schemaField.name === attributeName);\n return new arrow.Field(attributeName, column.type, false, getArrowMetadata(field?.metadata));\n}\n\n/** Return an IndexedMesh indices column with the full index list stored in row 0. */\nfunction makeMeshIndicesVector(indices: MeshAttribute['value'], vertexCount: number): arrow.Vector {\n const values = indices instanceof Uint32Array ? indices : Uint32Array.from(indices);\n const valueOffsets = new Int32Array(vertexCount + 1);\n if (vertexCount > 0) {\n valueOffsets.fill(values.length, 1);\n }\n\n const nullBitmap = new Uint8Array(Math.ceil(vertexCount / 8));\n if (vertexCount > 0) {\n nullBitmap[0] = 1;\n }\n\n const type = new arrow.List(new arrow.Field('item', new arrow.Uint32(), false));\n const valuesData = new arrow.Data<arrow.Uint32>(type.children[0].type, 0, values.length, 0, {\n [arrow.BufferType.DATA]: values\n });\n const indicesData = new arrow.Data<arrow.List<arrow.Uint32>>(\n type,\n 0,\n vertexCount,\n Math.max(0, vertexCount - 1),\n {\n [arrow.BufferType.OFFSET]: valueOffsets,\n [arrow.BufferType.VALIDITY]: nullBitmap\n },\n [valuesData]\n );\n return new arrow.Vector([indicesData]);\n}\n\n/** Return a fixed-size list mesh attribute from separate scalar PLY columns. */\nfunction makeFixedSizeListAttribute(\n table: arrow.Table,\n columnNames: string[],\n preferredType: string\n): MeshAttribute | null {\n const columns = columnNames.map(columnName => table.getChild(columnName));\n if (columns.some(column => !column)) {\n return null;\n }\n\n const rowCount = table.numRows;\n const values =\n preferredType === 'uchar'\n ? new Uint8Array(rowCount * columnNames.length)\n : new Float32Array(rowCount * columnNames.length);\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n for (let componentIndex = 0; componentIndex < columns.length; componentIndex++) {\n values[rowIndex * columns.length + componentIndex] = Number(\n columns[componentIndex]!.get(rowIndex) ?? 0\n );\n }\n }\n\n return {value: values, size: columnNames.length};\n}\n\n/** Return a PLY element table by name. */\nfunction getPLYElementTable(\n elementTables: PLYElementTables,\n elementName: string\n): PLYElementTable | undefined {\n return elementTables.elements.find(elementTable => elementTable.element.name === elementName);\n}\n\n/** Return mesh attributes in stable public order. */\nfunction getOrderedAttributeNames(attributes: MeshAttributes): string[] {\n const firstNames = ['POSITION', 'indices'];\n return [\n ...firstNames.filter(attributeName => attributeName in attributes),\n ...Object.keys(attributes).filter(attributeName => !firstNames.includes(attributeName))\n ];\n}\n\n/** Return a vector's backing values. */\nfunction getVectorValues(vector: arrow.Vector): TypedArray {\n const data = vector.data[0];\n return data.values as TypedArray;\n}\n\n/** Return a PLY text body after the header terminator. */\nfunction getPLYTextBody(data: string): string {\n const match = PLY_END_HEADER_PATTERN.exec(data);\n return match ? data.slice(match.index + match[0].length) : '';\n}\n\n/** Return an Arrow list vector from value offsets and child values. */\nfunction makeListVector(\n typeName: string,\n values: number[],\n valueOffsets: Int32Array\n): arrow.Vector {\n const childType = getArrowType(typeName);\n const type = new arrow.List(new arrow.Field('item', childType, false));\n const typedValues = getTypedArray(values, typeName);\n const valuesData = new arrow.Data(childType, 0, typedValues.length, 0, {\n [arrow.BufferType.DATA]: typedValues\n });\n const listData = new arrow.Data(\n type,\n 0,\n valueOffsets.length - 1,\n 0,\n {[arrow.BufferType.OFFSET]: valueOffsets},\n [valuesData]\n );\n return new arrow.Vector([listData]);\n}\n\n/** Return a typed array for one PLY scalar type. */\nfunction getTypedArray(values: number[], type: string): TypedArray {\n switch (type) {\n case 'int8':\n case 'char':\n return Int8Array.from(values);\n case 'uint8':\n case 'uchar':\n return Uint8Array.from(values);\n case 'int16':\n case 'short':\n return Int16Array.from(values);\n case 'uint16':\n case 'ushort':\n return Uint16Array.from(values);\n case 'int32':\n case 'int':\n return Int32Array.from(values);\n case 'uint32':\n case 'uint':\n return Uint32Array.from(values);\n case 'float64':\n case 'double':\n return Float64Array.from(values);\n case 'float32':\n case 'float':\n default:\n return Float32Array.from(values);\n }\n}\n\n/** Return an Arrow scalar type for one PLY scalar type. */\nfunction getArrowType(type: string): arrow.DataType {\n switch (type) {\n case 'int8':\n case 'char':\n return new arrow.Int8();\n case 'uint8':\n case 'uchar':\n return new arrow.Uint8();\n case 'int16':\n case 'short':\n return new arrow.Int16();\n case 'uint16':\n case 'ushort':\n return new arrow.Uint16();\n case 'int32':\n case 'int':\n return new arrow.Int32();\n case 'uint32':\n case 'uint':\n return new arrow.Uint32();\n case 'float64':\n case 'double':\n return new arrow.Float64();\n case 'float32':\n case 'float':\n default:\n return new arrow.Float32();\n }\n}\n\n/** Parse one ASCII scalar value. */\nfunction parseASCIINumber(value: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(value, 10);\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(value);\n default:\n throw new Error(type);\n }\n}\n\n/** Read one binary scalar value and its byte length. */\nfunction readBinaryNumber(\n dataView: DataView,\n byteOffset: number,\n type: string,\n littleEndian: boolean\n): [number, number] {\n switch (type) {\n case 'int8':\n case 'char':\n return [dataView.getInt8(byteOffset), 1];\n case 'uint8':\n case 'uchar':\n return [dataView.getUint8(byteOffset), 1];\n case 'int16':\n case 'short':\n return [dataView.getInt16(byteOffset, littleEndian), 2];\n case 'uint16':\n case 'ushort':\n return [dataView.getUint16(byteOffset, littleEndian), 2];\n case 'int32':\n case 'int':\n return [dataView.getInt32(byteOffset, littleEndian), 4];\n case 'uint32':\n case 'uint':\n return [dataView.getUint32(byteOffset, littleEndian), 4];\n case 'float32':\n case 'float':\n return [dataView.getFloat32(byteOffset, littleEndian), 4];\n case 'float64':\n case 'double':\n return [dataView.getFloat64(byteOffset, littleEndian), 8];\n default:\n throw new Error(type);\n }\n}\n\n/** Convert optional metadata to Arrow metadata. */\nfunction getArrowMetadata(\n metadata: Record<string, string | undefined> | undefined\n): Map<string, string> {\n return new Map(\n Object.entries(metadata || {}).filter(\n (entry): entry is [string, string] => entry[1] !== undefined\n )\n );\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { getMeshBoundingBox } from '@loaders.gl/core/schema-utils';
4
+ import { getMeshBoundingBox, serializeArrowSchema } from '@loaders.gl/core/schema-utils';
5
5
  import * as arrow from 'apache-arrow';
6
6
  import { parsePLYHeader } from "./parse-ply.js";
7
7
  import { getPLYSchema } from "./get-ply-schema.js";
@@ -276,7 +276,7 @@ function convertPLYMeshToArrowTable(mesh) {
276
276
  const arrowSchema = new arrow.Schema(fields, metadata);
277
277
  return {
278
278
  shape: 'arrow-table',
279
- schema: mesh.schema,
279
+ schema: serializeArrowSchema(arrowSchema),
280
280
  data: new arrow.Table(arrowSchema, columns),
281
281
  topology: mesh.topology,
282
282
  indices: mesh.indices?.value.length ? mesh.indices : undefined