gps-plus-slam-app-framework 1.10.0 → 1.13.0

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 (289) hide show
  1. package/README.md +27 -28
  2. package/dist/{absolute-orientation-C_IxDR_j.d.ts → absolute-orientation-0WIsqJnu.d.ts} +1 -1
  3. package/dist/{accuracy-circles-BE7tbvYV.d.ts → accuracy-circles-CFnKGfsD.d.ts} +1 -1
  4. package/dist/{app-selectors-CV7ggGoo.d.ts → app-selectors-QM0ZpNA4.d.ts} +1 -1
  5. package/dist/ar/ar-crash-isolation.d.ts +2 -0
  6. package/dist/ar/ar-crash-isolation.js +40 -0
  7. package/dist/ar/bresenham3d.d.ts +1 -1
  8. package/dist/ar/camera-blit-capture.d.ts +1 -1
  9. package/dist/ar/capability-checker.d.ts +1 -1
  10. package/dist/ar/capture-failure-tracker.d.ts +1 -1
  11. package/dist/ar/capture-motion-gate.d.ts +2 -0
  12. package/dist/{capture-motion-gate-D1eyGC_o.js → ar/capture-motion-gate.js} +25 -2
  13. package/dist/ar/chromium-camera-access-workaround.d.ts +1 -1
  14. package/dist/ar/chromium-camera-access-workaround.js +1 -1
  15. package/dist/ar/depth-grid-lookup.d.ts +1 -1
  16. package/dist/ar/depth-occluder.d.ts +1 -1
  17. package/dist/ar/depth-occluder.js +1 -1
  18. package/dist/ar/depth-sampler.d.ts +3 -3
  19. package/dist/ar/depth-sampler.js +28 -1
  20. package/dist/ar/depth-unprojection.d.ts +1 -1
  21. package/dist/ar/enable-gps-ar.d.ts +1 -1
  22. package/dist/ar/enable-gps-ar.js +20 -5
  23. package/dist/ar/frame-loop.d.ts +1 -1
  24. package/dist/ar/hit-test-reticle-driver.d.ts +2 -0
  25. package/dist/ar/hit-test-reticle-driver.js +122 -0
  26. package/dist/ar/image-capture.d.ts +1 -1
  27. package/dist/ar/image-capture.js +1 -1
  28. package/dist/ar/image-quality.d.ts +2 -2
  29. package/dist/ar/image-quality.js +136 -4
  30. package/dist/ar/index.d.ts +35 -32
  31. package/dist/ar/index.js +17 -15
  32. package/dist/ar/occlusion-mesh-worker.d.ts +2 -2
  33. package/dist/ar/occlusion-mesh-worker.js +6 -4
  34. package/dist/ar/occupancy-grid.d.ts +2 -2
  35. package/dist/ar/occupancy-grid.js +192 -12
  36. package/dist/ar/occupancy-mesher.d.ts +1 -1
  37. package/dist/ar/occupancy-mesher.js +1 -636
  38. package/dist/ar/qr/index.d.ts +11 -0
  39. package/dist/ar/qr/index.js +11 -0
  40. package/dist/ar/{planar-pnp.d.ts → qr/planar-pnp.d.ts} +1 -1
  41. package/dist/ar/{planar-pnp.js → qr/planar-pnp.js} +1 -1
  42. package/dist/ar/qr/qr-debug-view.d.ts +2 -0
  43. package/dist/ar/{qr-debug-view.js → qr/qr-debug-view.js} +2 -2
  44. package/dist/ar/{qr-derived-pose.d.ts → qr/qr-derived-pose.d.ts} +1 -1
  45. package/dist/ar/{qr-derived-pose.js → qr/qr-derived-pose.js} +2 -2
  46. package/dist/ar/{qr-detection-controller.d.ts → qr/qr-detection-controller.d.ts} +1 -1
  47. package/dist/ar/qr/qr-detection-controller.js +2 -0
  48. package/dist/ar/{qr-frontend.d.ts → qr/qr-frontend.d.ts} +1 -1
  49. package/dist/ar/{qr-frontend.js → qr/qr-frontend.js} +1 -1
  50. package/dist/ar/{qr-pose.d.ts → qr/qr-pose.d.ts} +1 -1
  51. package/dist/ar/{qr-pose.js → qr/qr-pose.js} +1 -1
  52. package/dist/ar/qr/qr-size-depth-context.d.ts +3 -0
  53. package/dist/ar/{qr-size-depth-context.js → qr/qr-size-depth-context.js} +4 -4
  54. package/dist/ar/{qr-size-measurer.d.ts → qr/qr-size-measurer.d.ts} +1 -1
  55. package/dist/ar/qr/qr-size-measurer.js +2 -0
  56. package/dist/ar/replay-scene.d.ts +1 -1
  57. package/dist/ar/replay-scene.js +15 -13
  58. package/dist/ar/scene-node-names.d.ts +1 -1
  59. package/dist/ar/webxr-nue-basis.d.ts +1 -1
  60. package/dist/ar/webxr-session.d.ts +4 -4
  61. package/dist/ar/webxr-session.js +2 -2
  62. package/dist/ar/xr-camera-texture.d.ts +1 -1
  63. package/dist/ar/xr-error-handler.d.ts +1 -1
  64. package/dist/ar/xr-frame-loop.d.ts +1 -1
  65. package/dist/ar/xr-frame-loop.js +1 -1
  66. package/dist/ar-crash-isolation-BSFw_beO.d.ts +52 -0
  67. package/dist/{ar-world-group-alignment-B6XiA1cT.d.ts → ar-world-group-alignment-CvvfACfx.d.ts} +2 -2
  68. package/dist/{capability-checker-DEo-ktWI.d.ts → capability-checker-DrWimJ_t.d.ts} +1 -1
  69. package/dist/capture-motion-gate-C60Qrilh.d.ts +120 -0
  70. package/dist/{cell-key-Bj-eYTLA.js → cell-key-D1b_Ix-p.js} +12 -1
  71. package/dist/{chromium-camera-access-workaround-DCd8SP2N.d.ts → chromium-camera-access-workaround-BRs6gkI4.d.ts} +1 -1
  72. package/dist/core/index.d.ts +1 -1
  73. package/dist/{create-slam-app-store-CH31erpP.d.ts → create-slam-app-store-HNe1PBtx.d.ts} +37 -6
  74. package/dist/{create-slam-app-store-DLv5ZwqU.js → create-slam-app-store-wYN7YkB5.js} +21 -10
  75. package/dist/{depth-grid-lookup-DY6zYTLx.d.ts → depth-grid-lookup-PcJTdRLL.d.ts} +1 -1
  76. package/dist/{depth-sampler-txG8evgQ.d.ts → depth-sampler-BcvuxgCS.d.ts} +30 -3
  77. package/dist/{depth-unprojection-JKkeqJrV.d.ts → depth-unprojection-DbGipFkA.d.ts} +1 -1
  78. package/dist/{enable-gps-ar-BbNWyqp5.d.ts → enable-gps-ar-xjz3jNqm.d.ts} +10 -5
  79. package/dist/{file-system-utils-CfLTj5Ra.d.ts → file-system-utils-DE3BViuq.d.ts} +1 -1
  80. package/dist/{frame-conversions-CH7E2Iv_.d.ts → frame-conversions-CzPQDYpM.d.ts} +1 -1
  81. package/dist/{fused-path-DOKzVMiO.d.ts → fused-path-CBAttcVm.d.ts} +1 -1
  82. package/dist/geo/h3-proximity.d.ts +1 -1
  83. package/dist/geo/h3-proximity.js +1 -1
  84. package/dist/geo/index.d.ts +1 -1
  85. package/dist/{geodesic-angle-HXBWiXiI.js → geodesic-angle-CZ_Ow90I.js} +2 -2
  86. package/dist/{gps-anchor-BaqyRsPC.d.ts → gps-anchor-Gv4NDwH4.d.ts} +1 -1
  87. package/dist/{gps-ar-pose-sampler-BOOV0jJk.d.ts → gps-ar-pose-sampler-DBEYDFY5.d.ts} +1 -1
  88. package/dist/{gps-event-coordinator-03rVh_us.d.ts → gps-event-coordinator-BKwB4RyQ.d.ts} +4 -4
  89. package/dist/{gps-event-markers-BsC2Ynlh.d.ts → gps-event-markers-212h7j3D.d.ts} +39 -5
  90. package/dist/{h3-proximity-pFluGfwL.d.ts → h3-proximity-CAEk3osq.d.ts} +1 -1
  91. package/dist/hit-test-reticle-driver-CfKiDgsa.d.ts +40 -0
  92. package/dist/{image-capture-Cr_rljeV.d.ts → image-capture-BXmx1YvD.d.ts} +6 -6
  93. package/dist/{image-capture-BUqqsOi3.js → image-capture-Dn8uLIP2.js} +3 -3
  94. package/dist/{image-quality-BjBLoTec.d.ts → image-quality-G7_qT4aj.d.ts} +44 -2
  95. package/dist/index-DVmgFIgm.d.ts +64 -0
  96. package/dist/{index-C2Bo0buN.d.ts → index-DX9VC257.d.ts} +10 -72
  97. package/dist/{index-CuHaGY0F.d.ts → index-qtZ2muFd.d.ts} +1 -1
  98. package/dist/index.d.ts +89 -82
  99. package/dist/index.js +31 -24
  100. package/dist/{leaflet-map-overlay-QhF199BW.d.ts → leaflet-map-overlay-BkHmzvpD.d.ts} +1 -1
  101. package/dist/{leaflet-map-overlay-BRkUhZMD.js → leaflet-map-overlay-DjWfRT8a.js} +1 -1
  102. package/dist/{map-data-D8sSxpOr.d.ts → map-data-BQXPtRz7.d.ts} +3 -3
  103. package/dist/{map-data-D3oE8AQP.js → map-data-vL8jb5Z9.js} +1 -1
  104. package/dist/{map-overlay-draw-1E61FLKs.d.ts → map-overlay-draw-sTM3wug_.d.ts} +1 -1
  105. package/dist/{median-Bla_W50f.js → median-DDBrZGP0.js} +2 -2
  106. package/dist/{null-storage-backend-DXXuwG8T.d.ts → null-storage-backend-Dtn3TBfT.d.ts} +2 -2
  107. package/dist/{occlusion-mesh-CZ4i_SW2.d.ts → occlusion-mesh-BY2aMej3.d.ts} +43 -6
  108. package/dist/occupancy-cubes-visualizer-soN0Sizd.d.ts +146 -0
  109. package/dist/{occupancy-grid-f0I07UxI.d.ts → occupancy-grid-DKzIdCSZ.d.ts} +114 -4
  110. package/dist/{occupancy-mesher-BqnRd10x.d.ts → occupancy-mesher-Co80tOpl.d.ts} +22 -1
  111. package/dist/occupancy-mesher-DzNeJdQf.js +837 -0
  112. package/dist/{opfs-storage-backend-D1ZpeNEL.d.ts → opfs-storage-backend-CZ-ECudx.d.ts} +2 -2
  113. package/dist/perf-stats-overlay-BMEQrzx6.d.ts +68 -0
  114. package/dist/{persistence-middleware-CI4Cetnl.d.ts → persistence-middleware-Byo_Fs4n.d.ts} +13 -3
  115. package/dist/{planar-pnp-CPLhg5MX.d.ts → planar-pnp-CkcMN3o3.d.ts} +2 -2
  116. package/dist/pointer-picking-BATHHTlT.d.ts +41 -0
  117. package/dist/{ar-D-03Kso-.js → qr-CTp5xI83.js} +11 -25
  118. package/dist/{qr-debug-view-BmbWo06j.d.ts → qr-debug-view-BMjNVhV2.d.ts} +2 -2
  119. package/dist/{qr-derived-pose-DEYT85ul.d.ts → qr-derived-pose-Dq7mPK2s.d.ts} +3 -3
  120. package/dist/{qr-detected-slice-CPEkGbxh.d.ts → qr-detected-slice-8t_laDR9.d.ts} +9 -8
  121. package/dist/{qr-detection-controller-bRTJXC6G.js → qr-detection-controller-DXc1yHRf.js} +3 -3
  122. package/dist/{qr-detection-controller-IcMRpTjV.d.ts → qr-detection-controller-Dh4Paymb.d.ts} +4 -4
  123. package/dist/{qr-frontend-61SKPSyU.d.ts → qr-frontend-BnLlVjKu.d.ts} +2 -2
  124. package/dist/{qr-pose-CCTF1PP0.d.ts → qr-pose-_dInl6di.d.ts} +1 -1
  125. package/dist/{qr-pose-aggregation-BL6gfl0s.d.ts → qr-pose-aggregation-Bpv4uARJ.d.ts} +2 -2
  126. package/dist/{qr-pose-aggregation-H-O_Jjz9.js → qr-pose-aggregation-Cp0Mtg_j.js} +4 -4
  127. package/dist/{qr-size-depth-context-DJsYqbqY.d.ts → qr-size-depth-context-Bzbx98nS.d.ts} +3 -3
  128. package/dist/{qr-size-measurer-Bl_i-umk.d.ts → qr-size-measurer-18_W3INY.d.ts} +5 -5
  129. package/dist/{qr-size-measurer-BVOIg-He.js → qr-size-measurer-zZB9S1va.js} +4 -4
  130. package/dist/{recording-replayer-DyIN13nG.d.ts → recording-replayer-BKmVuchg.d.ts} +2 -2
  131. package/dist/{recording-slice-DziOl7P5.d.ts → recording-slice-zMedT0ot.d.ts} +10 -5
  132. package/dist/{replay-engine-DAymjsd1.d.ts → replay-engine-D-cbT0Fw.d.ts} +1 -1
  133. package/dist/{replay-scene-CZdWgcpc.d.ts → replay-scene-D5qzY0_x.d.ts} +12 -5
  134. package/dist/sensors/absolute-orientation.d.ts +1 -1
  135. package/dist/sensors/absolute-orientation.js +1 -1
  136. package/dist/sensors/gps-error-handler.d.ts +1 -1
  137. package/dist/sensors/gps.d.ts +1 -1
  138. package/dist/sensors/index.d.ts +4 -4
  139. package/dist/sensors/permission-checker.d.ts +1 -1
  140. package/dist/{session-disposers-BZS-hi8u.js → session-disposers-BJM5U62W.js} +1 -1
  141. package/dist/state/app-selectors.d.ts +1 -1
  142. package/dist/state/combined-root-state.d.ts +1 -1
  143. package/dist/state/create-slam-app-store.d.ts +1 -1
  144. package/dist/state/create-slam-app-store.js +1 -1
  145. package/dist/state/gps-ar-pose-sampler.d.ts +2 -2
  146. package/dist/state/gps-event-coordinator.d.ts +2 -2
  147. package/dist/state/index.d.ts +19 -20
  148. package/dist/state/index.js +3 -4
  149. package/dist/state/persistence-middleware.d.ts +2 -2
  150. package/dist/state/persistence-middleware.js +24 -15
  151. package/dist/state/qr-detected-slice.d.ts +3 -3
  152. package/dist/state/qr-detected-slice.js +8 -8
  153. package/dist/state/recording-replayer.d.ts +2 -2
  154. package/dist/state/recording-replayer.js +1 -1
  155. package/dist/state/recording-slice.d.ts +1 -1
  156. package/dist/state/replay-engine.d.ts +1 -1
  157. package/dist/state/replay-occupancy-subscriber.d.ts +51 -0
  158. package/dist/state/replay-occupancy-subscriber.js +85 -0
  159. package/dist/state/replay-session.d.ts +88 -0
  160. package/dist/state/replay-session.js +165 -0
  161. package/dist/state/store-subscribers.d.ts +2 -2
  162. package/dist/state/store-subscribers.js +1 -1
  163. package/dist/state/subscribe-to-selector.d.ts +1 -1
  164. package/dist/state/tracking-quality.d.ts +1 -1
  165. package/dist/state/tracking-quality.js +2 -2
  166. package/dist/state/tracking-slice.d.ts +1 -1
  167. package/dist/{state-U45ioVyB.js → state-DxL3T1Id.js} +1 -2
  168. package/dist/storage/file-system-utils.d.ts +1 -1
  169. package/dist/storage/file-system-utils.js +1 -1
  170. package/dist/storage/index.d.ts +8 -8
  171. package/dist/storage/null-storage-backend.d.ts +1 -1
  172. package/dist/storage/opfs-storage-backend.d.ts +1 -1
  173. package/dist/storage/opfs-storage.d.ts +1 -1
  174. package/dist/storage/storage-backend.d.ts +1 -1
  175. package/dist/storage/zip-coverage-embed.d.ts +1 -1
  176. package/dist/storage/zip-coverage-embed.js +1 -1
  177. package/dist/storage/zip-export.d.ts +1 -1
  178. package/dist/storage/zip-reader.d.ts +1 -1
  179. package/dist/{storage-backend-BX7egQKi.d.ts → storage-backend-DCYbOvTw.d.ts} +1 -1
  180. package/dist/{store-subscribers-DtwakLrQ.d.ts → store-subscribers-BbRW35u5.d.ts} +2 -2
  181. package/dist/{subscribe-to-selector-Cgo9JTfS.d.ts → subscribe-to-selector-B_lm_euO.d.ts} +1 -1
  182. package/dist/test-utils/browser-mocks.d.ts +1 -1
  183. package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
  184. package/dist/text-sprite-C6VcC2mo.d.ts +53 -0
  185. package/dist/{tracking-slice-Bt2OEQhA.d.ts → tracking-slice-D5LDL_y4.d.ts} +3 -2
  186. package/dist/types/ar-types.d.ts +1 -1
  187. package/dist/types/geo-types.d.ts +1 -1
  188. package/dist/types/index.d.ts +2 -2
  189. package/dist/utils/concurrency.d.ts +1 -1
  190. package/dist/utils/failure-tracker.d.ts +1 -1
  191. package/dist/utils/format-file-size.d.ts +1 -1
  192. package/dist/utils/fused-path.d.ts +1 -1
  193. package/dist/utils/index.d.ts +7 -7
  194. package/dist/utils/index.js +1 -1
  195. package/dist/utils/list-formatter.d.ts +1 -1
  196. package/dist/utils/logger.d.ts +1 -1
  197. package/dist/visualization/accuracy-circles.d.ts +1 -1
  198. package/dist/visualization/accuracy-circles.js +1 -1
  199. package/dist/visualization/alignment-lerper.d.ts +1 -1
  200. package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
  201. package/dist/visualization/ar-world-group-alignment.js +2 -2
  202. package/dist/visualization/camera-follower.d.ts +1 -1
  203. package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
  204. package/dist/visualization/frame-conversions.d.ts +1 -1
  205. package/dist/visualization/frustum-visibility.d.ts +1 -1
  206. package/dist/visualization/gps-anchor.d.ts +1 -1
  207. package/dist/visualization/gps-anchor.js +2 -2
  208. package/dist/visualization/gps-compass-cubes.d.ts +1 -1
  209. package/dist/visualization/gps-compass-cubes.js +6 -22
  210. package/dist/visualization/gps-event-markers.d.ts +2 -2
  211. package/dist/visualization/gps-event-markers.js +27 -6
  212. package/dist/visualization/hit-test-reticle.d.ts +1 -1
  213. package/dist/visualization/hit-test-reticle.js +3 -2
  214. package/dist/visualization/index.d.ts +25 -20
  215. package/dist/visualization/index.js +11 -6
  216. package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
  217. package/dist/visualization/leaflet-map-overlay.js +1 -1
  218. package/dist/visualization/lerp-utils.d.ts +1 -1
  219. package/dist/visualization/map-data.d.ts +1 -1
  220. package/dist/visualization/map-data.js +1 -1
  221. package/dist/visualization/map-overlay-draw.d.ts +1 -1
  222. package/dist/visualization/occluder-mesh-driver.d.ts +2 -2
  223. package/dist/visualization/occluder-mesh-driver.js +1 -1
  224. package/dist/visualization/occlusion-mesh.d.ts +2 -2
  225. package/dist/visualization/occlusion-mesh.js +54 -4
  226. package/dist/visualization/occupancy-cubes-visualizer.d.ts +2 -0
  227. package/dist/visualization/occupancy-cubes-visualizer.js +221 -0
  228. package/dist/visualization/perf-stats-overlay.d.ts +2 -0
  229. package/dist/visualization/perf-stats-overlay.js +85 -0
  230. package/dist/visualization/pointer-picking.d.ts +2 -0
  231. package/dist/visualization/pointer-picking.js +58 -0
  232. package/dist/visualization/text-sprite.d.ts +2 -0
  233. package/dist/visualization/text-sprite.js +105 -0
  234. package/dist/visualization/three-dispose.d.ts +1 -1
  235. package/dist/visualization/vis-colors.d.ts +1 -1
  236. package/dist/visualization/wayfinding-hud.d.ts +2 -0
  237. package/dist/visualization/wayfinding-hud.js +289 -0
  238. package/dist/visualization/wayfinding-placement.d.ts +2 -0
  239. package/dist/visualization/wayfinding-placement.js +157 -0
  240. package/dist/wayfinding-hud-DVun2b69.d.ts +82 -0
  241. package/dist/wayfinding-placement-dnHzfYlT.d.ts +97 -0
  242. package/dist/{webxr-session-DWKUsCN9.js → webxr-session-BBlgzrqY.js} +150 -280
  243. package/dist/{webxr-session-CGFZ429B.d.ts → webxr-session-DurXRnl_.d.ts} +144 -194
  244. package/dist/{xr-frame-loop-25gM4B0K.d.ts → xr-frame-loop-A1mGDFHI.d.ts} +1 -1
  245. package/dist/{zip-coverage-embed-BrodRLq0.d.ts → zip-coverage-embed-BC3O2-8b.d.ts} +1 -1
  246. package/package.json +5 -3
  247. package/dist/ar/qr-debug-view.d.ts +0 -2
  248. package/dist/ar/qr-detection-controller.js +0 -2
  249. package/dist/ar/qr-size-depth-context.d.ts +0 -3
  250. package/dist/ar/qr-size-measurer.js +0 -2
  251. package/dist/capture-motion-gate-BmjiWUJv.d.ts +0 -24
  252. package/dist/map-overlay-0yJOcEVO.d.ts +0 -153
  253. package/dist/recording-options-Cai9D14V.d.ts +0 -700
  254. package/dist/state/recording-options.d.ts +0 -2
  255. package/dist/state/recording-options.js +0 -620
  256. package/dist/visualization/map-overlay.d.ts +0 -2
  257. package/dist/visualization/map-overlay.js +0 -241
  258. /package/dist/{alignment-lerper-B4COh_0p.d.ts → alignment-lerper-CK1TYLIL.d.ts} +0 -0
  259. /package/dist/{ar-types-CBafnxhE.d.ts → ar-types-BprL3nKv.d.ts} +0 -0
  260. /package/dist/{bresenham3d-D-t9i_b5.d.ts → bresenham3d-bt61R-Qa.d.ts} +0 -0
  261. /package/dist/{camera-blit-capture-BlC-arRb.d.ts → camera-blit-capture-CgNJ9grH.d.ts} +0 -0
  262. /package/dist/{camera-follower-B6zA3dy9.d.ts → camera-follower-OnnXsbHd.d.ts} +0 -0
  263. /package/dist/{capture-failure-tracker-BAUKjtXU.d.ts → capture-failure-tracker-bUXJeMvQ.d.ts} +0 -0
  264. /package/dist/{concurrency-DW0jQo3G.d.ts → concurrency-CMhbkxBk.d.ts} +0 -0
  265. /package/dist/{css3d-renderer-manager-DbrSY7Mh.d.ts → css3d-renderer-manager-CE6xN7XM.d.ts} +0 -0
  266. /package/dist/{failure-tracker-B7fzPfZo.d.ts → failure-tracker-BdaFulDA.d.ts} +0 -0
  267. /package/dist/{format-file-size-Da8rZgfs.d.ts → format-file-size-B2CJdRqD.d.ts} +0 -0
  268. /package/dist/{frame-loop-7HigCj7m.d.ts → frame-loop-CUEIdlhS.d.ts} +0 -0
  269. /package/dist/{frustum-visibility-COPfzruF.d.ts → frustum-visibility-BTx1Sqfo.d.ts} +0 -0
  270. /package/dist/{geo-types-BfDK8kJu.d.ts → geo-types-DGe5UKgx.d.ts} +0 -0
  271. /package/dist/{gps-CX5b9g3s.d.ts → gps-CC0l9lCp.d.ts} +0 -0
  272. /package/dist/{gps-compass-cubes-CT3TWctJ.d.ts → gps-compass-cubes-QQJgpRXR.d.ts} +0 -0
  273. /package/dist/{gps-error-handler-DjVuLXve.d.ts → gps-error-handler-da4DCcs5.d.ts} +0 -0
  274. /package/dist/{hit-test-reticle-DhnCMOsc.d.ts → hit-test-reticle-DcOyqo3B.d.ts} +0 -0
  275. /package/dist/{index-CjxbDm8W.d.ts → index-T8Fxvzka.d.ts} +0 -0
  276. /package/dist/{index-Nr3qg4IH.d.ts → index-Y_RNWbQX.d.ts} +0 -0
  277. /package/dist/{lerp-utils-bwMwVCpU.d.ts → lerp-utils-B-ecvLq2.d.ts} +0 -0
  278. /package/dist/{list-formatter-1ttG18MQ.d.ts → list-formatter-C45u3Vgv.d.ts} +0 -0
  279. /package/dist/{logger-B4StJUDb.d.ts → logger-BQGNXi9W.d.ts} +0 -0
  280. /package/dist/{opfs-storage-S_odkCk1.d.ts → opfs-storage-CrhVauNL.d.ts} +0 -0
  281. /package/dist/{permission-checker-D1C5zvo-.d.ts → permission-checker-BDrCOwQF.d.ts} +0 -0
  282. /package/dist/{scene-node-names-DWzhE7Ro.d.ts → scene-node-names-Ct6ATrfM.d.ts} +0 -0
  283. /package/dist/{three-dispose-C9mdpSRX.d.ts → three-dispose-B5-XiECx.d.ts} +0 -0
  284. /package/dist/{vis-colors-DjStl_tD.d.ts → vis-colors-16Pht13u.d.ts} +0 -0
  285. /package/dist/{webxr-nue-basis-C3vTqkE2.d.ts → webxr-nue-basis-B8ZEetVb.d.ts} +0 -0
  286. /package/dist/{xr-camera-texture-C6Z4d7RR.d.ts → xr-camera-texture-BA4xiaQ4.d.ts} +0 -0
  287. /package/dist/{xr-error-handler-D9y5r8ok.d.ts → xr-error-handler-BeyxXCE_.d.ts} +0 -0
  288. /package/dist/{zip-export-CuBimX1J.d.ts → zip-export-Cfl_kNQ7.d.ts} +0 -0
  289. /package/dist/{zip-reader-BHc_b_iA.d.ts → zip-reader-DwkuvlGo.d.ts} +0 -0
@@ -1,8 +1,40 @@
1
1
  import { createDepthUnprojector } from "./depth-unprojection.js";
2
2
  import { bresenham3d } from "./bresenham3d.js";
3
- import { i as cellKey, o as unpackCellCoord, r as cellCoordsInKeyRange, s as unpackCellKey, t as CELL_KEY_LIMIT } from "../cell-key-Bj-eYTLA.js";
3
+ import { a as cellCoordsInKeyRange, c as unpackCellCoord, l as unpackCellKey, n as CELL_KEY_STRIDE_X, o as cellKey, r as CELL_KEY_STRIDE_Y, s as packCellKey, t as CELL_KEY_LIMIT } from "../cell-key-D1b_Ix-p.js";
4
4
  //#region ../src/ar/occupancy-grid.ts
5
5
  /**
6
+ * Recommended reconstruction defaults for apps that build AND render an occupancy
7
+ * mesh (the Recorder, the PhysicsDemo). These are the single framework-level source
8
+ * of truth so every consumer inherits the same tuning — change them here and both
9
+ * apps follow.
10
+ *
11
+ * They are DELIBERATELY separate from {@link OccupancyGrid}'s constructor fallback
12
+ * (`cellSizeM ?? 0.15`, Unity parity): that primitive fallback stays 0.15 because a
13
+ * pile of low-level tests build `new OccupancyGrid()` with no args and assume 0.15
14
+ * quantization. Both apps always pass an explicit `cellSizeM`, so the app-facing
15
+ * recommended default and the primitive fallback can differ without conflict.
16
+ *
17
+ * Tuning (2026-07-16 EVENING, maintainer's on-device framerate/mesh trade-off
18
+ * pass — supersedes the same-day corpus-sweep values 0.18/3): voxel 16 cm,
19
+ * noise floor 2. The sweep's argument for floor 3 (floaters = phantom
20
+ * colliders: mc 3 ≈ 1.9% vs mc 2 ≈ 3.5%) was measured under LEGACY carving;
21
+ * with the decay carve guard the floater gap largely disappears (real
22
+ * pillar-orbit A/B: guarded mc 2 isolates 2.12% vs guarded mc 3 2.19%), so
23
+ * the faster floor is affordable now. `0.16` stays within
24
+ * `OCCUPANCY_CONSTRAINTS.cellSizeM.max` (0.20); `2` within `minConfidence`
25
+ * 1–10. History: 2026-07-16-0557 corpus sweep (0.18/3),
26
+ * 2026-07-15-1640 device-impression change (0.18/2). See the recorder's
27
+ * recording-options.ts.md for the full tuning timeline.
28
+ */
29
+ const DEFAULT_OCCUPANCY_CELL_SIZE_M = .16;
30
+ /**
31
+ * Recommended occupancy noise floor — the minimum observation count before a cell
32
+ * is rendered/meshed (the Recorder's `minConfidence`, the demo's `minObservations`,
33
+ * and — since the decay guard — both apps' `carveConfidenceThreshold`).
34
+ * See {@link DEFAULT_OCCUPANCY_CELL_SIZE_M} for the rationale and the tuning note.
35
+ */
36
+ const DEFAULT_OCCUPANCY_MIN_OBSERVATIONS = 2;
37
+ /**
6
38
  * Highest `minConfidence` a consumer can ask for (mirrors
7
39
  * `OCCUPANCY_CONSTRAINTS.minConfidence.max`). Once a cell's count exceeds this,
8
40
  * further observations can no longer change ANY consumer's occupied set, so they
@@ -13,6 +45,13 @@ const MAX_RELEVANT_COUNT = 10;
13
45
  var OccupancyGrid = class {
14
46
  cellSizeM;
15
47
  carveStopCells;
48
+ /**
49
+ * Carve-blocking observation-count threshold, or undefined for legacy
50
+ * unguarded carving (see {@link OccupancyGridOptions}). Public + always
51
+ * present on instances so consumers built against a newer source can
52
+ * feature-detect the guard on an installed build at runtime.
53
+ */
54
+ carveConfidenceThreshold;
16
55
  cells = /* @__PURE__ */ new Map();
17
56
  /**
18
57
  * Chunk index (Step 2 of the 2026-07-03 long-session fps plan): cell keys
@@ -39,7 +78,7 @@ var OccupancyGrid = class {
39
78
  * an already-settled cell (count `> MAX_RELEVANT_COUNT`) does NOT bump it, so a
40
79
  * consumer can cheaply skip a full re-derive (cube refresh / occluder re-mesh)
41
80
  * when the revision is unchanged — the dominant idle-time saving over a long
42
- * session (see `2026-06-30-occluder-tuning-followups.md`).
81
+ * session (see `2026-06-30-0829-occluder-tuning-followups.md`).
43
82
  */
44
83
  revision = 0;
45
84
  /**
@@ -58,6 +97,7 @@ var OccupancyGrid = class {
58
97
  if (!Number.isSafeInteger(carveStopCells) || carveStopCells < 0) throw new RangeError(`carveStopCells must be a non-negative integer, got ${carveStopCells}`);
59
98
  this.cellSizeM = cellSizeM;
60
99
  this.carveStopCells = carveStopCells;
100
+ this.carveConfidenceThreshold = validateCarveConfidenceThreshold(options?.carveConfidenceThreshold);
61
101
  }
62
102
  /** Number of occupied cells. */
63
103
  get size() {
@@ -351,18 +391,153 @@ var OccupancyGrid = class {
351
391
  * steps before the endpoint. The endpoint cell itself is additionally
352
392
  * protected so a current observation is never erased (relevant for
353
393
  * carveStopCells = 0 and for the unconditional start-cell visit).
394
+ *
395
+ * With `carveConfidenceThreshold` set, the trace additionally stops at the
396
+ * first cell whose count has reached the threshold, DECAYING it by one
397
+ * observation (means preserved) — soft contradiction instead of deletion,
398
+ * so nothing behind an established surface is carved but repeated
399
+ * contradictions still un-build it (see the option docs). Note this makes
400
+ * a repeated identical carve NOT a no-op — the per-sample unique-endpoint
401
+ * dedupe in `addSample` is therefore semantically load-bearing under the
402
+ * guard (one decay per contradicting ray per sample).
403
+ *
404
+ * PERFORMANCE — fused walk (2026-07-17 perf loop, iteration 1): this is
405
+ * the framework's hottest non-render loop (hundreds of rays per depth
406
+ * sample at the 200 ms reconstruction cadence), and the generic
407
+ * `bresenham3d(callback)` shape dominated the fold profile: a fresh
408
+ * `[x, y, z]` tuple + callback dispatch + full `cellKey` repack +
409
+ * `cellsEqual` per visited cell. The Bresenham walk (identical integer
410
+ * stepping, `bresenham3d` stays the reference — see the fold-oracle
411
+ * property test) is therefore fused in here with two key tricks:
412
+ *
413
+ * - The packed cell key is maintained INCREMENTALLY: stepping one cell
414
+ * along an axis moves the key by that axis' constant field stride
415
+ * (base-2^17 positional packing), replacing the 3-term repack.
416
+ * - The endpoint guard compares packed keys (`key === endpointKey`).
417
+ * Every walked cell lies inside the camera→point AABB whose corners the
418
+ * caller range-checked, so packing is bijective on the whole walk and
419
+ * the compare is exactly `cellsEqual` — and key aliasing is impossible.
420
+ *
421
+ * The cell tuple is materialized only on an actual delete/decay hit (rare
422
+ * per trace, handled in {@link carveCellAt}). Measured on the
423
+ * occupancy-fold bench (devbox-win11, Node 24, 50 samples × 576 pts,
424
+ * production config): 37.05 → 25.71 ms median of 5, −30.6%.
425
+ * Input safety: cameraCell/pointCell are integer cells from
426
+ * `cellForPosition` (finite-checked upstream) and both range-checked by
427
+ * `addSample`, so dm ≤ 2·CELL_KEY_LIMIT « MAX_TRACE_STEPS and the generic
428
+ * tracer's integer/span guards are structurally satisfied here.
354
429
  */
355
430
  carve(cameraCell, pointCell) {
356
- bresenham3d(cameraCell, pointCell, (cell) => {
357
- if (!cellsEqual(cell, pointCell)) {
358
- const key = cellKey(cell);
359
- if (this.cells.delete(key)) {
360
- this.revision++;
361
- this.unindexCell(cell, key);
362
- }
431
+ const threshold = this.carveConfidenceThreshold;
432
+ const stopDistance = this.carveStopCells;
433
+ let x = cameraCell[0];
434
+ let y = cameraCell[1];
435
+ let z = cameraCell[2];
436
+ const ex = pointCell[0];
437
+ const ey = pointCell[1];
438
+ const ez = pointCell[2];
439
+ const dx = Math.abs(ex - x);
440
+ const dy = Math.abs(ey - y);
441
+ const dz = Math.abs(ez - z);
442
+ const sx = Math.sign(ex - x);
443
+ const sy = Math.sign(ey - y);
444
+ const sz = Math.sign(ez - z);
445
+ const keyStepX = sx * CELL_KEY_STRIDE_X;
446
+ const keyStepY = sy * CELL_KEY_STRIDE_Y;
447
+ const keyStepZ = sz;
448
+ const endpointKey = packCellKey(ex, ey, ez);
449
+ let key = packCellKey(x, y, z);
450
+ const dm = Math.max(dx, dy, dz);
451
+ let i = dm;
452
+ let errX = Math.floor(dm / 2);
453
+ let errY = errX;
454
+ let errZ = errX;
455
+ for (;;) {
456
+ if (key !== endpointKey && !this.carveCellAt(x, y, z, key, threshold)) return;
457
+ if (i-- <= stopDistance) return;
458
+ errX -= dx;
459
+ if (errX < 0) {
460
+ errX += dm;
461
+ x += sx;
462
+ key += keyStepX;
363
463
  }
364
- return true;
365
- }, this.carveStopCells);
464
+ errY -= dy;
465
+ if (errY < 0) {
466
+ errY += dm;
467
+ y += sy;
468
+ key += keyStepY;
469
+ }
470
+ errZ -= dz;
471
+ if (errZ < 0) {
472
+ errZ += dm;
473
+ z += sz;
474
+ key += keyStepZ;
475
+ }
476
+ }
477
+ }
478
+ /**
479
+ * Per-cell action of the fused carve walk (extracted so both it and the
480
+ * walk stay under the lint complexity budget; a monomorphic private-method
481
+ * call per visited cell measured within noise of the fully-inlined form).
482
+ *
483
+ * @returns `false` when the trace must stop: the cell is an established
484
+ * surface (count ≥ threshold) that was decayed instead of deleted.
485
+ */
486
+ carveCellAt(x, y, z, key, threshold) {
487
+ const record = this.cells.get(key);
488
+ if (record === void 0) return true;
489
+ if (threshold !== void 0 && record.count >= threshold) {
490
+ this.decayCell([
491
+ x,
492
+ y,
493
+ z
494
+ ], key, record);
495
+ return false;
496
+ }
497
+ this.cells.delete(key);
498
+ this.revision++;
499
+ this.unindexCell([
500
+ x,
501
+ y,
502
+ z
503
+ ], key);
504
+ return true;
505
+ }
506
+ /**
507
+ * Soft contradiction of an established cell (confidence-guarded carving):
508
+ * remove one observation while preserving the measured point/color MEANS
509
+ * (sums are scaled with the count — decrementing the divisor alone would
510
+ * silently shift `getCellPoint`/`getCellColor`). Deletes outright when the
511
+ * count would reach 0 (threshold 1). Bumps revisions like any mutation
512
+ * that can change a consumer's occupied set (counts above
513
+ * MAX_RELEVANT_COUNT cannot cross any selectable floor, so those decays
514
+ * stay revision-silent).
515
+ */
516
+ decayCell(cell, key, record) {
517
+ const newCount = record.count - 1;
518
+ if (newCount <= 0) {
519
+ if (this.cells.delete(key)) {
520
+ this.revision++;
521
+ this.unindexCell(cell, key);
522
+ }
523
+ return;
524
+ }
525
+ const scale = newCount / record.count;
526
+ record.count = newCount;
527
+ record.posSumX *= scale;
528
+ record.posSumY *= scale;
529
+ record.posSumZ *= scale;
530
+ if (record.colorCount > newCount) {
531
+ const colorScale = newCount / record.colorCount;
532
+ record.colorSumR *= colorScale;
533
+ record.colorSumG *= colorScale;
534
+ record.colorSumB *= colorScale;
535
+ record.colorCount = newCount;
536
+ }
537
+ if (newCount <= MAX_RELEVANT_COUNT) {
538
+ this.revision++;
539
+ this.bumpChunkRevision(chunkKeyOf(Math.floor(cell[0] / CHUNK_EDGE_CELLS), Math.floor(cell[1] / CHUNK_EDGE_CELLS), Math.floor(cell[2] / CHUNK_EDGE_CELLS)));
540
+ }
366
541
  }
367
542
  /** Add a newly-occupied cell to its chunk's index set. */
368
543
  indexCell(cell, key) {
@@ -440,8 +615,13 @@ function unpackChunkCoord(key, axis) {
440
615
  function cellsEqual(a, b) {
441
616
  return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
442
617
  }
618
+ /** Constructor guard for {@link OccupancyGridOptions.carveConfidenceThreshold}. */
619
+ function validateCarveConfidenceThreshold(threshold) {
620
+ if (threshold !== void 0 && (!Number.isSafeInteger(threshold) || threshold < 1)) throw new RangeError(`carveConfidenceThreshold must be a positive integer when set, got ${threshold}`);
621
+ return threshold;
622
+ }
443
623
  function isFiniteTriple(v) {
444
624
  return Number.isFinite(v[0]) && Number.isFinite(v[1]) && Number.isFinite(v[2]);
445
625
  }
446
626
  //#endregion
447
- export { OccupancyGrid, cellKey, unpackCellKey };
627
+ export { DEFAULT_OCCUPANCY_CELL_SIZE_M, DEFAULT_OCCUPANCY_MIN_OBSERVATIONS, OccupancyGrid, cellKey, unpackCellKey };
@@ -1,2 +1,2 @@
1
- import { a as meshOccupiedCells, i as OccupancyMeshResult, n as MeshMode, r as MeshOccupiedCellsOptions, t as Aabb } from "../occupancy-mesher-BqnRd10x.js";
1
+ import { a as meshOccupiedCells, i as OccupancyMeshResult, n as MeshMode, r as MeshOccupiedCellsOptions, t as Aabb } from "../occupancy-mesher-Co80tOpl.js";
2
2
  export { Aabb, MeshMode, MeshOccupiedCellsOptions, OccupancyMeshResult, meshOccupiedCells };