gps-plus-slam-app-framework 1.11.0 → 1.14.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 (248) hide show
  1. package/README.md +13 -14
  2. package/dist/{app-selectors-DG0ZqaeI.d.ts → app-selectors-DBUgwomp.d.ts} +1 -1
  3. package/dist/ar/ar-crash-isolation.d.ts +1 -1
  4. package/dist/ar/bresenham3d.d.ts +1 -1
  5. package/dist/ar/camera-blit-capture.d.ts +1 -1
  6. package/dist/ar/capability-checker.d.ts +1 -1
  7. package/dist/ar/capture-failure-tracker.d.ts +1 -1
  8. package/dist/ar/capture-motion-gate.d.ts +1 -1
  9. package/dist/ar/chromium-camera-access-workaround.d.ts +1 -1
  10. package/dist/ar/depth-grid-lookup.d.ts +1 -1
  11. package/dist/ar/depth-occluder.d.ts +1 -1
  12. package/dist/ar/depth-sampler.d.ts +3 -3
  13. package/dist/ar/depth-sampler.js +28 -1
  14. package/dist/ar/depth-unprojection.d.ts +1 -1
  15. package/dist/ar/enable-gps-ar.d.ts +1 -1
  16. package/dist/ar/enable-gps-ar.js +20 -5
  17. package/dist/ar/frame-loop.d.ts +1 -1
  18. package/dist/ar/hit-test-reticle-driver.d.ts +2 -0
  19. package/dist/ar/hit-test-reticle-driver.js +122 -0
  20. package/dist/ar/image-capture.d.ts +1 -1
  21. package/dist/ar/image-capture.js +1 -1
  22. package/dist/ar/image-quality.d.ts +1 -1
  23. package/dist/ar/index.d.ts +35 -34
  24. package/dist/ar/index.js +5 -4
  25. package/dist/ar/occlusion-mesh-worker.d.ts +2 -2
  26. package/dist/ar/occlusion-mesh-worker.js +6 -4
  27. package/dist/ar/occupancy-grid.d.ts +2 -2
  28. package/dist/ar/occupancy-grid.js +191 -11
  29. package/dist/ar/occupancy-mesher.d.ts +1 -1
  30. package/dist/ar/occupancy-mesher.js +1 -636
  31. package/dist/ar/qr/index.d.ts +10 -10
  32. package/dist/ar/qr/planar-pnp.d.ts +1 -1
  33. package/dist/ar/qr/qr-debug-view.d.ts +1 -1
  34. package/dist/ar/qr/qr-derived-pose.d.ts +1 -1
  35. package/dist/ar/qr/qr-detection-controller.d.ts +1 -1
  36. package/dist/ar/qr/qr-frontend.d.ts +1 -1
  37. package/dist/ar/qr/qr-pose.d.ts +1 -1
  38. package/dist/ar/qr/qr-size-depth-context.d.ts +2 -2
  39. package/dist/ar/qr/qr-size-measurer.d.ts +1 -1
  40. package/dist/ar/replay-scene.d.ts +1 -1
  41. package/dist/ar/replay-scene.js +1 -1
  42. package/dist/ar/scene-node-names.d.ts +1 -1
  43. package/dist/ar/webxr-nue-basis.d.ts +1 -1
  44. package/dist/ar/webxr-session.d.ts +3 -3
  45. package/dist/ar/webxr-session.js +1 -1
  46. package/dist/ar/xr-camera-texture.d.ts +1 -1
  47. package/dist/ar/xr-error-handler.d.ts +1 -1
  48. package/dist/ar/xr-frame-loop.d.ts +1 -1
  49. package/dist/{ar-world-group-alignment-BdS_h8Nf.d.ts → ar-world-group-alignment-Dn_UiRy1.d.ts} +1 -1
  50. package/dist/{cell-key-Bj-eYTLA.js → cell-key-D1b_Ix-p.js} +12 -1
  51. package/dist/core/index.d.ts +1 -1
  52. package/dist/{create-slam-app-store-oK9bnqyI.js → create-slam-app-store-B62K8_Qr.js} +17 -4
  53. package/dist/{create-slam-app-store-DFm5K9Ob.d.ts → create-slam-app-store-sxb1-esK.d.ts} +34 -4
  54. package/dist/{depth-grid-lookup-CCuzlqUo.d.ts → depth-grid-lookup-PcJTdRLL.d.ts} +1 -1
  55. package/dist/{depth-sampler-CS2jAFw4.d.ts → depth-sampler-BcvuxgCS.d.ts} +29 -2
  56. package/dist/{depth-unprojection-ET3Gwedf.d.ts → depth-unprojection-DbGipFkA.d.ts} +1 -1
  57. package/dist/{enable-gps-ar-D_xEHzh5.d.ts → enable-gps-ar-xjz3jNqm.d.ts} +4 -4
  58. package/dist/{frame-conversions-CH7E2Iv_.d.ts → frame-conversions-CzPQDYpM.d.ts} +1 -1
  59. package/dist/{fused-path-DOKzVMiO.d.ts → fused-path-CBAttcVm.d.ts} +1 -1
  60. package/dist/geo/h3-proximity.d.ts +1 -1
  61. package/dist/geo/index.d.ts +1 -1
  62. package/dist/{gps-anchor-BaqyRsPC.d.ts → gps-anchor-Gv4NDwH4.d.ts} +1 -1
  63. package/dist/{gps-ar-pose-sampler-BuuUuK-D.d.ts → gps-ar-pose-sampler-DBEYDFY5.d.ts} +1 -1
  64. package/dist/{gps-event-coordinator-Cruoe5I-.d.ts → gps-event-coordinator-BAy56wYd.d.ts} +4 -4
  65. package/dist/{gps-event-markers-y2b2aVl6.d.ts → gps-event-markers-212h7j3D.d.ts} +4 -4
  66. package/dist/hit-test-reticle-driver-CfKiDgsa.d.ts +40 -0
  67. package/dist/{image-capture-BevgKpoO.d.ts → image-capture-BXmx1YvD.d.ts} +3 -3
  68. package/dist/{index-Dxb6ATNK.d.ts → index-DVmgFIgm.d.ts} +1 -1
  69. package/dist/{index-BWVwd9Zw.d.ts → index-DX9VC257.d.ts} +3 -3
  70. package/dist/{index-ClmnNJ6-.d.ts → index-qYJ5-SBC.d.ts} +1 -1
  71. package/dist/index.d.ts +89 -82
  72. package/dist/index.js +17 -10
  73. package/dist/{leaflet-map-overlay-CksetpTt.d.ts → leaflet-map-overlay-BkHmzvpD.d.ts} +1 -1
  74. package/dist/{map-data-D8cCqpOM.d.ts → map-data-BQXPtRz7.d.ts} +1 -1
  75. package/dist/{map-overlay-draw-Cy-klqoA.d.ts → map-overlay-draw-sTM3wug_.d.ts} +1 -1
  76. package/dist/{null-storage-backend-DXXuwG8T.d.ts → null-storage-backend-Dtn3TBfT.d.ts} +2 -2
  77. package/dist/{occlusion-mesh-BWe2PrVi.d.ts → occlusion-mesh-BY2aMej3.d.ts} +22 -4
  78. package/dist/occupancy-cubes-visualizer-soN0Sizd.d.ts +146 -0
  79. package/dist/{occupancy-grid-CYBdmMOo.d.ts → occupancy-grid-DKzIdCSZ.d.ts} +113 -3
  80. package/dist/{occupancy-mesher-B4Bv4BTk.d.ts → occupancy-mesher-Co80tOpl.d.ts} +22 -1
  81. package/dist/occupancy-mesher-DzNeJdQf.js +837 -0
  82. package/dist/{opfs-storage-backend-D1ZpeNEL.d.ts → opfs-storage-backend-CZ-ECudx.d.ts} +2 -2
  83. package/dist/perf-stats-overlay-BMEQrzx6.d.ts +68 -0
  84. package/dist/{persistence-middleware-Cun4aF5M.d.ts → persistence-middleware-Byo_Fs4n.d.ts} +1 -1
  85. package/dist/{planar-pnp-ByxwDEyM.d.ts → planar-pnp-CkcMN3o3.d.ts} +1 -1
  86. package/dist/pointer-picking-BATHHTlT.d.ts +41 -0
  87. package/dist/{qr-debug-view-CGlITU09.d.ts → qr-debug-view-BMjNVhV2.d.ts} +1 -1
  88. package/dist/{qr-derived-pose-DZPxZd9C.d.ts → qr-derived-pose-Dq7mPK2s.d.ts} +2 -2
  89. package/dist/{qr-detected-slice-mfyxD2-M.d.ts → qr-detected-slice-8t_laDR9.d.ts} +4 -4
  90. package/dist/{qr-detection-controller-C5NII-vs.d.ts → qr-detection-controller-Dh4Paymb.d.ts} +3 -3
  91. package/dist/{qr-frontend-QzKZSqB-.d.ts → qr-frontend-BnLlVjKu.d.ts} +1 -1
  92. package/dist/{qr-pose-aggregation-mABSN0AW.d.ts → qr-pose-aggregation-Bpv4uARJ.d.ts} +1 -1
  93. package/dist/{qr-size-depth-context-CMDv6T29.d.ts → qr-size-depth-context-Bzbx98nS.d.ts} +2 -2
  94. package/dist/{qr-size-measurer-rVFf4AdM.d.ts → qr-size-measurer-18_W3INY.d.ts} +3 -3
  95. package/dist/{recording-replayer-qT2EM1Qs.d.ts → recording-replayer-CpFiYczh.d.ts} +2 -2
  96. package/dist/{recording-slice-DXw5-UvO.d.ts → recording-slice-zMedT0ot.d.ts} +1 -1
  97. package/dist/{replay-engine-B1H_kLhK.d.ts → replay-engine-DI7uknkv.d.ts} +1 -1
  98. package/dist/{replay-scene-BJeO36YT.d.ts → replay-scene-D5qzY0_x.d.ts} +3 -3
  99. package/dist/sensors/absolute-orientation.d.ts +1 -1
  100. package/dist/sensors/gps-error-handler.d.ts +1 -1
  101. package/dist/sensors/gps.d.ts +1 -1
  102. package/dist/sensors/index.d.ts +4 -4
  103. package/dist/sensors/permission-checker.d.ts +1 -1
  104. package/dist/state/app-selectors.d.ts +1 -1
  105. package/dist/state/combined-root-state.d.ts +1 -1
  106. package/dist/state/create-slam-app-store.d.ts +1 -1
  107. package/dist/state/create-slam-app-store.js +1 -1
  108. package/dist/state/gps-ar-pose-sampler.d.ts +2 -2
  109. package/dist/state/gps-event-coordinator.d.ts +2 -2
  110. package/dist/state/gps-event-coordinator.js +1 -1
  111. package/dist/state/index.d.ts +18 -18
  112. package/dist/state/index.js +3 -3
  113. package/dist/state/persistence-middleware.d.ts +1 -1
  114. package/dist/state/qr-detected-slice.d.ts +3 -3
  115. package/dist/state/recording-replayer.d.ts +2 -2
  116. package/dist/state/recording-replayer.js +1 -1
  117. package/dist/state/recording-slice.d.ts +1 -1
  118. package/dist/state/replay-engine.d.ts +1 -1
  119. package/dist/state/replay-occupancy-subscriber.d.ts +51 -0
  120. package/dist/state/replay-occupancy-subscriber.js +85 -0
  121. package/dist/state/replay-session.d.ts +88 -0
  122. package/dist/state/replay-session.js +165 -0
  123. package/dist/state/store-subscribers.d.ts +2 -2
  124. package/dist/state/store-subscribers.js +1 -1
  125. package/dist/state/subscribe-to-selector.d.ts +1 -1
  126. package/dist/state/tracking-quality.d.ts +1 -1
  127. package/dist/state/tracking-slice.d.ts +1 -1
  128. package/dist/{state-CDF5LvsO.js → state-BECcnNRW.js} +1 -1
  129. package/dist/storage/file-system-utils.d.ts +1 -1
  130. package/dist/storage/index.d.ts +8 -8
  131. package/dist/storage/null-storage-backend.d.ts +1 -1
  132. package/dist/storage/opfs-storage-backend.d.ts +1 -1
  133. package/dist/storage/opfs-storage.d.ts +1 -1
  134. package/dist/storage/storage-backend.d.ts +1 -1
  135. package/dist/storage/zip-coverage-embed.d.ts +1 -1
  136. package/dist/storage/zip-export.d.ts +1 -1
  137. package/dist/storage/zip-reader.d.ts +1 -1
  138. package/dist/{storage-backend-BX7egQKi.d.ts → storage-backend-DCYbOvTw.d.ts} +1 -1
  139. package/dist/{store-subscribers-CWHToX6N.d.ts → store-subscribers-BenHBQhD.d.ts} +2 -2
  140. package/dist/{subscribe-to-selector-j-eOYybQ.d.ts → subscribe-to-selector-hitZwSj8.d.ts} +1 -1
  141. package/dist/test-utils/browser-mocks.d.ts +1 -1
  142. package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
  143. package/dist/text-sprite-C6VcC2mo.d.ts +53 -0
  144. package/dist/{tracking-slice-BAbcZK-Y.d.ts → tracking-slice-D5LDL_y4.d.ts} +1 -1
  145. package/dist/types/ar-types.d.ts +1 -1
  146. package/dist/types/geo-types.d.ts +1 -1
  147. package/dist/types/index.d.ts +2 -2
  148. package/dist/utils/concurrency.d.ts +1 -1
  149. package/dist/utils/failure-tracker.d.ts +1 -1
  150. package/dist/utils/format-file-size.d.ts +1 -1
  151. package/dist/utils/fused-path.d.ts +1 -1
  152. package/dist/utils/index.d.ts +7 -7
  153. package/dist/utils/list-formatter.d.ts +1 -1
  154. package/dist/utils/logger.d.ts +1 -1
  155. package/dist/visualization/accuracy-circles.d.ts +1 -1
  156. package/dist/visualization/alignment-lerper.d.ts +1 -1
  157. package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
  158. package/dist/visualization/ar-world-group-alignment.js +1 -1
  159. package/dist/visualization/camera-follower.d.ts +1 -1
  160. package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
  161. package/dist/visualization/frame-conversions.d.ts +1 -1
  162. package/dist/visualization/frustum-visibility.d.ts +1 -1
  163. package/dist/visualization/gps-anchor.d.ts +1 -1
  164. package/dist/visualization/gps-compass-cubes.d.ts +1 -1
  165. package/dist/visualization/gps-compass-cubes.js +6 -22
  166. package/dist/visualization/gps-event-markers.d.ts +1 -1
  167. package/dist/visualization/gps-event-markers.js +1 -1
  168. package/dist/visualization/hit-test-reticle.d.ts +1 -1
  169. package/dist/visualization/hit-test-reticle.js +3 -2
  170. package/dist/visualization/index.d.ts +25 -19
  171. package/dist/visualization/index.js +10 -4
  172. package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
  173. package/dist/visualization/leaflet-map-overlay.js +1 -1
  174. package/dist/visualization/lerp-utils.d.ts +1 -1
  175. package/dist/visualization/map-data.d.ts +1 -1
  176. package/dist/visualization/map-data.js +1 -1
  177. package/dist/visualization/map-overlay-draw.d.ts +1 -1
  178. package/dist/visualization/occluder-mesh-driver.d.ts +2 -2
  179. package/dist/visualization/occlusion-mesh.d.ts +1 -1
  180. package/dist/visualization/occlusion-mesh.js +26 -1
  181. package/dist/visualization/occupancy-cubes-visualizer.d.ts +2 -0
  182. package/dist/visualization/occupancy-cubes-visualizer.js +221 -0
  183. package/dist/visualization/perf-stats-overlay.d.ts +2 -0
  184. package/dist/visualization/perf-stats-overlay.js +85 -0
  185. package/dist/visualization/pointer-picking.d.ts +2 -0
  186. package/dist/visualization/pointer-picking.js +58 -0
  187. package/dist/visualization/text-sprite.d.ts +2 -0
  188. package/dist/visualization/text-sprite.js +105 -0
  189. package/dist/visualization/three-dispose.d.ts +1 -1
  190. package/dist/visualization/vis-colors.d.ts +1 -1
  191. package/dist/visualization/wayfinding-hud.d.ts +2 -0
  192. package/dist/visualization/wayfinding-hud.js +289 -0
  193. package/dist/visualization/wayfinding-placement.d.ts +2 -0
  194. package/dist/visualization/wayfinding-placement.js +157 -0
  195. package/dist/wayfinding-hud-DVun2b69.d.ts +82 -0
  196. package/dist/wayfinding-placement-dnHzfYlT.d.ts +97 -0
  197. package/dist/{webxr-session-OyR3YbTq.js → webxr-session-BBlgzrqY.js} +3 -3
  198. package/dist/{webxr-session-DefwObIu.d.ts → webxr-session-DurXRnl_.d.ts} +7 -7
  199. package/package.json +3 -3
  200. /package/dist/{absolute-orientation-Dj1One3y.d.ts → absolute-orientation-0WIsqJnu.d.ts} +0 -0
  201. /package/dist/{accuracy-circles-BHz7yVIL.d.ts → accuracy-circles-CFnKGfsD.d.ts} +0 -0
  202. /package/dist/{alignment-lerper-DAHicRON.d.ts → alignment-lerper-CK1TYLIL.d.ts} +0 -0
  203. /package/dist/{ar-crash-isolation-DlXCGzMf.d.ts → ar-crash-isolation-BSFw_beO.d.ts} +0 -0
  204. /package/dist/{ar-types-D6PYS4bc.d.ts → ar-types-BprL3nKv.d.ts} +0 -0
  205. /package/dist/{bresenham3d-D-t9i_b5.d.ts → bresenham3d-bt61R-Qa.d.ts} +0 -0
  206. /package/dist/{camera-blit-capture-BlC-arRb.d.ts → camera-blit-capture-CgNJ9grH.d.ts} +0 -0
  207. /package/dist/{camera-follower-CO_ibF2o.d.ts → camera-follower-OnnXsbHd.d.ts} +0 -0
  208. /package/dist/{capability-checker-BZ3_x1YL.d.ts → capability-checker-DrWimJ_t.d.ts} +0 -0
  209. /package/dist/{capture-failure-tracker-BAUKjtXU.d.ts → capture-failure-tracker-bUXJeMvQ.d.ts} +0 -0
  210. /package/dist/{capture-motion-gate-CPwLekNf.d.ts → capture-motion-gate-C60Qrilh.d.ts} +0 -0
  211. /package/dist/{chromium-camera-access-workaround-BHR4clTE.d.ts → chromium-camera-access-workaround-BRs6gkI4.d.ts} +0 -0
  212. /package/dist/{concurrency-DW0jQo3G.d.ts → concurrency-CMhbkxBk.d.ts} +0 -0
  213. /package/dist/{css3d-renderer-manager-CJjHtCMT.d.ts → css3d-renderer-manager-CE6xN7XM.d.ts} +0 -0
  214. /package/dist/{device-orientation-cache-j-kLP8he.js → device-orientation-cache-BjEaEAmh.js} +0 -0
  215. /package/dist/{failure-tracker-B7fzPfZo.d.ts → failure-tracker-BdaFulDA.d.ts} +0 -0
  216. /package/dist/{file-system-utils-BHI0rXr9.d.ts → file-system-utils-DE3BViuq.d.ts} +0 -0
  217. /package/dist/{format-file-size-Da8rZgfs.d.ts → format-file-size-B2CJdRqD.d.ts} +0 -0
  218. /package/dist/{frame-loop-7GBMBu68.d.ts → frame-loop-CUEIdlhS.d.ts} +0 -0
  219. /package/dist/{frustum-visibility-COPfzruF.d.ts → frustum-visibility-BTx1Sqfo.d.ts} +0 -0
  220. /package/dist/{geo-types-BfDK8kJu.d.ts → geo-types-DGe5UKgx.d.ts} +0 -0
  221. /package/dist/{gps-CnhYrJCa.d.ts → gps-CC0l9lCp.d.ts} +0 -0
  222. /package/dist/{gps-compass-cubes-CT3TWctJ.d.ts → gps-compass-cubes-QQJgpRXR.d.ts} +0 -0
  223. /package/dist/{gps-error-handler-DjVuLXve.d.ts → gps-error-handler-da4DCcs5.d.ts} +0 -0
  224. /package/dist/{h3-proximity-BaAulrnM.d.ts → h3-proximity-CAEk3osq.d.ts} +0 -0
  225. /package/dist/{hit-test-reticle-DhnCMOsc.d.ts → hit-test-reticle-DcOyqo3B.d.ts} +0 -0
  226. /package/dist/{image-capture-C4DwxC10.js → image-capture-Dn8uLIP2.js} +0 -0
  227. /package/dist/{image-quality--HLuyJ2r.d.ts → image-quality-G7_qT4aj.d.ts} +0 -0
  228. /package/dist/{index-CjxbDm8W.d.ts → index-T8Fxvzka.d.ts} +0 -0
  229. /package/dist/{index-Nr3qg4IH.d.ts → index-Y_RNWbQX.d.ts} +0 -0
  230. /package/dist/{leaflet-map-overlay-CTcTVmL1.js → leaflet-map-overlay-DjWfRT8a.js} +0 -0
  231. /package/dist/{lerp-utils-bwMwVCpU.d.ts → lerp-utils-B-ecvLq2.d.ts} +0 -0
  232. /package/dist/{list-formatter-1ttG18MQ.d.ts → list-formatter-C45u3Vgv.d.ts} +0 -0
  233. /package/dist/{logger-B4StJUDb.d.ts → logger-BQGNXi9W.d.ts} +0 -0
  234. /package/dist/{map-data-DkhsYDGM.js → map-data-vL8jb5Z9.js} +0 -0
  235. /package/dist/{opfs-storage-S_odkCk1.d.ts → opfs-storage-CrhVauNL.d.ts} +0 -0
  236. /package/dist/{permission-checker-B-VtjnBA.d.ts → permission-checker-BDrCOwQF.d.ts} +0 -0
  237. /package/dist/{qr-pose-21fRDcFO.d.ts → qr-pose-_dInl6di.d.ts} +0 -0
  238. /package/dist/{scene-node-names-DWzhE7Ro.d.ts → scene-node-names-Ct6ATrfM.d.ts} +0 -0
  239. /package/dist/{session-disposers-B7hUN90w.js → session-disposers-BJM5U62W.js} +0 -0
  240. /package/dist/{three-dispose-C3mnKQR5.d.ts → three-dispose-B5-XiECx.d.ts} +0 -0
  241. /package/dist/{vis-colors-CoSpbZEO.d.ts → vis-colors-16Pht13u.d.ts} +0 -0
  242. /package/dist/{webxr-nue-basis-C3vTqkE2.d.ts → webxr-nue-basis-B8ZEetVb.d.ts} +0 -0
  243. /package/dist/{xr-camera-texture-q0eIDSRg.d.ts → xr-camera-texture-BA4xiaQ4.d.ts} +0 -0
  244. /package/dist/{xr-error-handler-D9y5r8ok.d.ts → xr-error-handler-BeyxXCE_.d.ts} +0 -0
  245. /package/dist/{xr-frame-loop-BiZvgqP7.d.ts → xr-frame-loop-A1mGDFHI.d.ts} +0 -0
  246. /package/dist/{zip-coverage-embed-CyoX7XL7.d.ts → zip-coverage-embed-BC3O2-8b.d.ts} +0 -0
  247. /package/dist/{zip-export-CuBimX1J.d.ts → zip-export-Cfl_kNQ7.d.ts} +0 -0
  248. /package/dist/{zip-reader-BHc_b_iA.d.ts → zip-reader-DwkuvlGo.d.ts} +0 -0
package/README.md CHANGED
@@ -291,19 +291,18 @@ WebXR session lifecycle, Three.js renderer setup, image/depth capture, replay sc
291
291
 
292
292
  ### `state/` — Store & Recording
293
293
 
294
- | Export | Description |
295
- | --------------------------------------------------- | -------------------------------------------------------------- |
296
- | `createSlamAppStore(options)` | Composable store factory (see options table above). |
297
- | `recordingReducer` | Recording lifecycle slice (built into the factory). |
298
- | `startSession()` / `endSession()` | Recording lifecycle actions. |
299
- | `recordGpsEvent(payload)` | Record a paired AR+GPS observation. |
300
- | `createGpsPositionHandler(config)` | Factory that adapts `GeolocationPosition` to a store dispatch. |
301
- | `captureGpsAnchorSample(options)` | Sample a paired AR pose + GPS point for anchoring. |
302
- | `loadRecordingOptions()` / `saveRecordingOptions()` | Persist user-controlled recording settings. |
303
- | `replayRecording(store, blob)` | Replay a ZIP recording into a store. |
304
- | `ReplayEngine` | Lower-level timed action playback with pause/resume/speed. |
305
- | `createPersistenceMiddleware(options)` | Middleware factory used internally by `createSlamAppStore`. |
306
- | `wireStoreSubscribers(store, deps)` | Bridge store state → visualization updates. |
294
+ | Export | Description |
295
+ | -------------------------------------- | -------------------------------------------------------------- |
296
+ | `createSlamAppStore(options)` | Composable store factory (see options table above). |
297
+ | `recordingReducer` | Recording lifecycle slice (built into the factory). |
298
+ | `startSession()` / `endSession()` | Recording lifecycle actions. |
299
+ | `recordGpsEvent(payload)` | Record a paired AR+GPS observation. |
300
+ | `createGpsPositionHandler(config)` | Factory that adapts `GeolocationPosition` to a store dispatch. |
301
+ | `captureGpsAnchorSample(options)` | Sample a paired AR pose + GPS point for anchoring. |
302
+ | `replayRecording(store, blob)` | Replay a ZIP recording into a store. |
303
+ | `ReplayEngine` | Lower-level timed action playback with pause/resume/speed. |
304
+ | `createPersistenceMiddleware(options)` | Middleware factory used internally by `createSlamAppStore`. |
305
+ | `wireStoreSubscribers(store, deps)` | Bridge store state visualization updates. |
307
306
 
308
307
  ### `storage/` — OPFS, ZIP, File System
309
308
 
@@ -312,7 +311,7 @@ WebXR session lifecycle, Three.js renderer setup, image/depth capture, replay sc
312
311
  | `StorageBackend` | Abstract storage interface (implement your own). |
313
312
  | `OpfsStorageBackend` | OPFS-based `StorageBackend`. |
314
313
  | `NullStorageBackend` | No-op backend for tests and replay. |
315
- | `initOpfsStorage()` / `initStorage(backend)` | Initialize the file-system layer. |
314
+ | `initOpfsStorage()` | Initialize the OPFS file-system layer. |
316
315
  | `createSession()` / `listSessions()` | Session lifecycle on disk. |
317
316
  | `exportSessionAsZip(handle, { contributors })` | Export a recording session as a ZIP blob. |
318
317
  | `ZipExportContributor` | Hook for adding your own ZIP subdirectories on export. |
@@ -1,4 +1,4 @@
1
- import { N as CombinedRootState } from "./create-slam-app-store-DFm5K9Ob.js";
1
+ import { N as CombinedRootState } from "./create-slam-app-store-sxb1-esK.js";
2
2
  import * as _$gps_plus_slam_js0 from "gps-plus-slam-js";
3
3
  import { ArImageCapture, GpsPoint, LatLong, Matrix4, Quaternion, Vector3 } from "gps-plus-slam-js";
4
4
  import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
@@ -1,2 +1,2 @@
1
- import { n as DEFAULT_AR_CRASH_ISOLATION, r as validateArCrashIsolationOptions, t as ArCrashIsolationOptions } from "../ar-crash-isolation-DlXCGzMf.js";
1
+ import { n as DEFAULT_AR_CRASH_ISOLATION, r as validateArCrashIsolationOptions, t as ArCrashIsolationOptions } from "../ar-crash-isolation-BSFw_beO.js";
2
2
  export { ArCrashIsolationOptions, DEFAULT_AR_CRASH_ISOLATION, validateArCrashIsolationOptions };
@@ -1,2 +1,2 @@
1
- import { n as MAX_TRACE_STEPS, r as bresenham3d, t as GridCell } from "../bresenham3d-D-t9i_b5.js";
1
+ import { n as MAX_TRACE_STEPS, r as bresenham3d, t as GridCell } from "../bresenham3d-bt61R-Qa.js";
2
2
  export { GridCell, MAX_TRACE_STEPS, bresenham3d };
@@ -1,2 +1,2 @@
1
- import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-BlC-arRb.js";
1
+ import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-CgNJ9grH.js";
2
2
  export { CameraBlitCapture, CameraBlitCaptureConfig, DEFAULT_BLIT_CONFIG, computeAspectFitSize, computeCaptureSize };
@@ -1,2 +1,2 @@
1
- import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-BZ3_x1YL.js";
1
+ import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-DrWimJ_t.js";
2
2
  export { CapabilityMessageOptions, CapabilitySupport, capabilityMessage, isFullySupported };
@@ -1,2 +1,2 @@
1
- import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-BAUKjtXU.js";
1
+ import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-bUXJeMvQ.js";
2
2
  export { CAPTURE_FAILURE_WARNING, CaptureFailureTracker, CaptureFailureTrackerConfig, DEFAULT_CAPTURE_TRACKER_CONFIG, createCaptureFailureTracker };
@@ -1,2 +1,2 @@
1
- import { a as MotionWindow, i as MotionFilterConfig, n as DEFAULT_MOTION_FILTER, o as decideCapture, r as DEFAULT_MOTION_WINDOW_SIZE, t as CaptureDecisionInput } from "../capture-motion-gate-CPwLekNf.js";
1
+ import { a as MotionWindow, i as MotionFilterConfig, n as DEFAULT_MOTION_FILTER, o as decideCapture, r as DEFAULT_MOTION_WINDOW_SIZE, t as CaptureDecisionInput } from "../capture-motion-gate-C60Qrilh.js";
2
2
  export { CaptureDecisionInput, DEFAULT_MOTION_FILTER, DEFAULT_MOTION_WINDOW_SIZE, MotionFilterConfig, MotionWindow, decideCapture };
@@ -1,2 +1,2 @@
1
- import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-BHR4clTE.js";
1
+ import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-BRs6gkI4.js";
2
2
  export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, applyChromiumProjectionLayerWorkaround, needsBaseLayerPersistence, parseChromeVersion };
@@ -1,2 +1,2 @@
1
- import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-CCuzlqUo.js";
1
+ import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-PcJTdRLL.js";
2
2
  export { DepthGridLookup, createDepthGridLookup };
@@ -1,4 +1,4 @@
1
- import { t as DepthInfo } from "../depth-sampler-CS2jAFw4.js";
1
+ import { r as DepthInfo } from "../depth-sampler-BcvuxgCS.js";
2
2
  import * as THREE from "three";
3
3
 
4
4
  //#region ../src/ar/depth-occluder.d.ts
@@ -1,3 +1,3 @@
1
- import { i as DepthSample } from "../ar-types-D6PYS4bc.js";
2
- import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-CS2jAFw4.js";
3
- export { DepthInfo, DepthSample, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, wrapXRDepthInfo };
1
+ import { i as DepthSample } from "../ar-types-BprL3nKv.js";
2
+ import { a as DepthSamplerCallbacks, i as DepthSampler, n as DEFAULT_RECONSTRUCTION_DEPTH_INTERVAL_MS, o as DepthSamplerConfig, r as DepthInfo, s as wrapXRDepthInfo, t as DEFAULT_RECONSTRUCTION_DEPTH_GRID_SIZE } from "../depth-sampler-BcvuxgCS.js";
3
+ export { DEFAULT_RECONSTRUCTION_DEPTH_GRID_SIZE, DEFAULT_RECONSTRUCTION_DEPTH_INTERVAL_MS, DepthInfo, DepthSample, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, wrapXRDepthInfo };
@@ -42,6 +42,33 @@ function wrapXRDepthInfo(raw, projectionMatrix) {
42
42
  if (uvTransform) wrapped.normDepthBufferFromNormView = uvTransform;
43
43
  return wrapped;
44
44
  }
45
+ /**
46
+ * Recommended depth-sampling cadence for apps that RECONSTRUCT-and-render an
47
+ * occupancy mesh (the Recorder, the PhysicsDemo) — the depth-side counterpart
48
+ * of `DEFAULT_OCCUPANCY_CELL_SIZE_M`/`DEFAULT_OCCUPANCY_MIN_OBSERVATIONS`
49
+ * (occupancy-grid.ts): one framework-level source of truth so both apps build
50
+ * the mesh at the same speed (2026-07-16 field feedback: the demo relied on
51
+ * the conservative fallback below — 16×16 @ 1 Hz, 8× fewer points/s than the
52
+ * recorder — and reconstructed visibly slower).
53
+ *
54
+ * Tuning (2026-07-16 EVENING, maintainer's on-device framerate/mesh trade-off
55
+ * passes — supersedes the same-day sweep-derived 500 ms × 64): 200 ms × 24×24.
56
+ * The ground-truth density/cadence sweep
57
+ * (GpsPlusSlamJs_Investigation test-results/synthetic-density-cadence-sweep.txt)
58
+ * showed density is the more point-efficient mesh-speed lever, but its
59
+ * flagged open question — on-device frame-time cost — resolved against LARGE
60
+ * per-sample batches: 64² @ 2 Hz (8192 points/s) visibly hurt the framerate,
61
+ * while many SMALL samples (24² @ 5 Hz, ~2880 points/s) keep the per-frame
62
+ * work chunk tiny and rendering smooth at good mesh build-up. If devices get
63
+ * faster, the sweep says gridSize (not the interval) is the knob to raise
64
+ * first.
65
+ *
66
+ * Deliberately OPT-IN named constants, NOT a change to the fallback below:
67
+ * bumping the fallback would silently re-tune consumers that are not
68
+ * reconstruction apps (MinimalExample / AnchorStarter).
69
+ */
70
+ const DEFAULT_RECONSTRUCTION_DEPTH_INTERVAL_MS = 200;
71
+ const DEFAULT_RECONSTRUCTION_DEPTH_GRID_SIZE = 24;
45
72
  const DEFAULT_CONFIG = {
46
73
  intervalMs: 1e3,
47
74
  gridSize: 16,
@@ -228,4 +255,4 @@ function isFinitePositive(value) {
228
255
  return typeof value === "number" && Number.isFinite(value) && value > 0;
229
256
  }
230
257
  //#endregion
231
- export { DepthSampler, wrapXRDepthInfo };
258
+ export { DEFAULT_RECONSTRUCTION_DEPTH_GRID_SIZE, DEFAULT_RECONSTRUCTION_DEPTH_INTERVAL_MS, DepthSampler, wrapXRDepthInfo };
@@ -1,2 +1,2 @@
1
- import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-ET3Gwedf.js";
1
+ import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-DbGipFkA.js";
2
2
  export { DepthUnprojector, createDepthUnprojector, unprojectDepthPoint };
@@ -1,2 +1,2 @@
1
- import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-D_xEHzh5.js";
1
+ import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-xjz3jNqm.js";
2
2
  export { EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, createEnableGpsArController };
@@ -1,5 +1,5 @@
1
1
  import { createLogger } from "../utils/logger.js";
2
- import { _ as initAR, a as endARSession, v as isWebXRSupported } from "../webxr-session-OyR3YbTq.js";
2
+ import { _ as initAR, a as endARSession, v as isWebXRSupported } from "../webxr-session-BBlgzrqY.js";
3
3
  import { requestGeolocationPermission, requestOrientationPermission, requestWebXRWithDepthPermission } from "../sensors/permission-checker.js";
4
4
  import { startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch } from "../sensors/gps.js";
5
5
  //#region ../src/ar/enable-gps-ar.ts
@@ -74,11 +74,22 @@ function createEnableGpsArController(deps = {}) {
74
74
  error: "AR is already starting, running or stopping."
75
75
  };
76
76
  setState({ status: "starting" });
77
+ const appCallbacks = config.callbacks;
78
+ const callbacks = {
79
+ ...appCallbacks,
80
+ onSessionEnd: (info) => {
81
+ if (state.status === "running") {
82
+ stopWatches();
83
+ setState({ status: "ready" });
84
+ }
85
+ appCallbacks?.onSessionEnd?.(info);
86
+ }
87
+ };
77
88
  let sessionStarted = false;
78
89
  try {
79
90
  const permissionError = await requestPermissions(config);
80
91
  if (permissionError !== null) return fail(permissionError);
81
- await resolved.initAR(config.container, config.isolationOptions, { requestHitTest: config.requestHitTest }, config.callbacks);
92
+ await resolved.initAR(config.container, config.isolationOptions, { requestHitTest: config.requestHitTest }, callbacks);
82
93
  sessionStarted = true;
83
94
  if (config.onGpsPosition) {
84
95
  resolved.startGpsWatch(config.onGpsPosition);
@@ -127,9 +138,8 @@ function createEnableGpsArController(deps = {}) {
127
138
  error
128
139
  };
129
140
  }
130
- async function disable() {
131
- if (state.status !== "running") return;
132
- setState({ status: "stopping" });
141
+ /** Stop whichever sensor watches this controller started (idempotent). */
142
+ function stopWatches() {
133
143
  if (gpsWatchActive) {
134
144
  resolved.stopGpsWatch();
135
145
  gpsWatchActive = false;
@@ -138,6 +148,11 @@ function createEnableGpsArController(deps = {}) {
138
148
  resolved.stopOrientationWatch();
139
149
  orientationWatchActive = false;
140
150
  }
151
+ }
152
+ async function disable() {
153
+ if (state.status !== "running") return;
154
+ setState({ status: "stopping" });
155
+ stopWatches();
141
156
  try {
142
157
  await resolved.endARSession();
143
158
  } catch (err) {
@@ -1,2 +1,2 @@
1
- import { i as runFrameUpdates, n as clearFrameUpdates, r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-7GBMBu68.js";
1
+ import { i as runFrameUpdates, n as clearFrameUpdates, r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-CUEIdlhS.js";
2
2
  export { FrameUpdate, clearFrameUpdates, registerFrameUpdate, runFrameUpdates };
@@ -0,0 +1,2 @@
1
+ import { n as HitTestReticleHandle, r as startHitTestReticle, t as HitTestReticleArgs } from "../hit-test-reticle-driver-CfKiDgsa.js";
2
+ export { HitTestReticleArgs, HitTestReticleHandle, startHitTestReticle };
@@ -0,0 +1,122 @@
1
+ import { registerXrFrameUpdate } from "./xr-frame-loop.js";
2
+ import { createReticleMesh, updateReticle } from "../visualization/hit-test-reticle.js";
3
+ import { Vector3 } from "three";
4
+ //#region ../src/ar/hit-test-reticle-driver.ts
5
+ /**
6
+ * Hit-test reticle driver — the per-frame WebXR plumbing that drives the
7
+ * screen-centre hit-test reticle whose pure view-model lives in
8
+ * `visualization/hit-test-reticle.ts` (`createReticleMesh` / `updateReticle`).
9
+ *
10
+ * Promoted from the consumer apps (2026-07-18): MinimalExample,
11
+ * WayfindingHudDemo and AnchorStarter each hand-rolled this loop, and the
12
+ * copies had already drifted in their session-end handling. AnchorStarter's
13
+ * copy (the most careful one) is the reference implementation.
14
+ *
15
+ * Responsibilities, all subtle and previously copy-pasted per app:
16
+ * - Request the hit-test source once per session (`requestReferenceSpace
17
+ * ('viewer')` → `requestHitTestSource`), retrying on transient failure.
18
+ * - Guard the "request still in flight while we shut down" races: a source
19
+ * that resolves after `dispose()` — or after the session that issued the
20
+ * request has ended — is cancelled, never adopted.
21
+ * - Register the session `'end'` (and optional `'select'`) listeners exactly
22
+ * once per session, outside the request-retry path.
23
+ * - Reset per-session state on `'end'` so a fresh session re-requests its own
24
+ * source with its own listeners.
25
+ *
26
+ * Lifecycle: the handle is torn down only by `dispose()`. In the framework's
27
+ * standard flow `resetWebXRState()` clears the XR frame registry at every
28
+ * session end, so a handle is typically created once per AR session entry and
29
+ * disposed from the app's session-teardown path; the per-session reset logic
30
+ * additionally keeps the handle correct when frames are delivered outside that
31
+ * flow (tests, custom loops).
32
+ */
33
+ /**
34
+ * Request a screen-centre hit-test source from the live session. Returns
35
+ * `null` when the runtime does not expose `requestHitTestSource` (older WebXR
36
+ * builds); the caller keeps the reticle hidden in that case.
37
+ */
38
+ async function requestHitTestSource(session) {
39
+ const viewerSpace = await session.requestReferenceSpace("viewer");
40
+ return await session.requestHitTestSource?.({ space: viewerSpace }) ?? null;
41
+ }
42
+ /**
43
+ * Cancel a hit-test source, tolerating a dead session. `cancel()` can throw
44
+ * once the source's session has ended (e.g. the app's teardown path calls
45
+ * `dispose()` before this driver's own `'end'` listener has run) — and a
46
+ * dead session has already stopped the hit-test, so there is nothing left to
47
+ * clean up.
48
+ */
49
+ function cancelSource(source) {
50
+ try {
51
+ source?.cancel();
52
+ } catch {}
53
+ }
54
+ /**
55
+ * Install the hit-test reticle under `arWorldGroup` and start driving it from
56
+ * the XR frame loop. Returns a handle the app reads at placement time (or
57
+ * ignores entirely when it placed via `onSelect`).
58
+ */
59
+ function startHitTestReticle(args) {
60
+ const reticle = createReticleMesh();
61
+ args.arWorldGroup.add(reticle);
62
+ let hitTestSource = null;
63
+ let hitTestSourceRequested = false;
64
+ let disposed = false;
65
+ let removeSessionListeners = null;
66
+ let sessionGeneration = 0;
67
+ const handleSelect = () => {
68
+ args.onSelect?.(reticle.visible ? reticle.getWorldPosition(new Vector3()) : null);
69
+ };
70
+ const handleSessionEnd = () => {
71
+ sessionGeneration += 1;
72
+ hitTestSource = null;
73
+ hitTestSourceRequested = false;
74
+ removeSessionListeners = null;
75
+ };
76
+ const unregister = registerXrFrameUpdate(({ frame, referenceSpace, session }) => {
77
+ if (!removeSessionListeners) {
78
+ session.addEventListener("end", handleSessionEnd);
79
+ if (args.onSelect) session.addEventListener("select", handleSelect);
80
+ removeSessionListeners = () => {
81
+ session.removeEventListener("end", handleSessionEnd);
82
+ if (args.onSelect) session.removeEventListener("select", handleSelect);
83
+ };
84
+ }
85
+ if (!hitTestSourceRequested) {
86
+ hitTestSourceRequested = true;
87
+ const requestGeneration = sessionGeneration;
88
+ requestHitTestSource(session).then((source) => {
89
+ if (disposed || requestGeneration !== sessionGeneration) {
90
+ cancelSource(source);
91
+ return;
92
+ }
93
+ hitTestSource = source;
94
+ }).catch(() => {
95
+ if (requestGeneration === sessionGeneration) hitTestSourceRequested = false;
96
+ });
97
+ }
98
+ if (!hitTestSource) {
99
+ updateReticle(reticle, null);
100
+ return;
101
+ }
102
+ const [hit] = frame.getHitTestResults(hitTestSource);
103
+ const pose = hit?.getPose(referenceSpace);
104
+ updateReticle(reticle, pose ? pose.transform.matrix : null);
105
+ });
106
+ return {
107
+ isVisible: () => reticle.visible,
108
+ getWorldPosition: (out) => reticle.getWorldPosition(out),
109
+ dispose: () => {
110
+ if (disposed) return;
111
+ disposed = true;
112
+ unregister();
113
+ removeSessionListeners?.();
114
+ removeSessionListeners = null;
115
+ cancelSource(hitTestSource);
116
+ hitTestSource = null;
117
+ args.arWorldGroup.remove(reticle);
118
+ }
119
+ };
120
+ }
121
+ //#endregion
122
+ export { startHitTestReticle };
@@ -1,2 +1,2 @@
1
- import { a as ImageCaptureCallbacks, c as MIN_VALID_IMAGE_BYTES, i as FrameQualityVerdict, n as CapturedImage, o as ImageCaptureConfig, r as DEFAULT_CAPTURE_CONFIG, s as ImageCaptureManager, t as CapturedFrame } from "../image-capture-BevgKpoO.js";
1
+ import { a as ImageCaptureCallbacks, c as MIN_VALID_IMAGE_BYTES, i as FrameQualityVerdict, n as CapturedImage, o as ImageCaptureConfig, r as DEFAULT_CAPTURE_CONFIG, s as ImageCaptureManager, t as CapturedFrame } from "../image-capture-BXmx1YvD.js";
2
2
  export { CapturedFrame, CapturedImage, DEFAULT_CAPTURE_CONFIG, FrameQualityVerdict, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, MIN_VALID_IMAGE_BYTES };
@@ -1,2 +1,2 @@
1
- import { n as ImageCaptureManager, r as MIN_VALID_IMAGE_BYTES, t as DEFAULT_CAPTURE_CONFIG } from "../image-capture-C4DwxC10.js";
1
+ import { n as ImageCaptureManager, r as MIN_VALID_IMAGE_BYTES, t as DEFAULT_CAPTURE_CONFIG } from "../image-capture-Dn8uLIP2.js";
2
2
  export { DEFAULT_CAPTURE_CONFIG, ImageCaptureManager, MIN_VALID_IMAGE_BYTES };
@@ -1,2 +1,2 @@
1
- import { a as DEFAULT_SHARPNESS_MIN_SAMPLES, c as QualityRejectReason, d as highFrequencyEnergyRatio, f as meanLuminance, i as DEFAULT_SHARPNESS_HISTORY_SIZE, l as QualityVerdict, m as sharpnessScore, n as BlurMetricId, o as ImageQualityGate, p as rgbaToGrayscale, r as DEFAULT_QUALITY_FILTER, s as QualityFilterConfig, t as BLUR_METRIC_IDS, u as blurMetricScorer } from "../image-quality--HLuyJ2r.js";
1
+ import { a as DEFAULT_SHARPNESS_MIN_SAMPLES, c as QualityRejectReason, d as highFrequencyEnergyRatio, f as meanLuminance, i as DEFAULT_SHARPNESS_HISTORY_SIZE, l as QualityVerdict, m as sharpnessScore, n as BlurMetricId, o as ImageQualityGate, p as rgbaToGrayscale, r as DEFAULT_QUALITY_FILTER, s as QualityFilterConfig, t as BLUR_METRIC_IDS, u as blurMetricScorer } from "../image-quality-G7_qT4aj.js";
2
2
  export { BLUR_METRIC_IDS, BlurMetricId, DEFAULT_QUALITY_FILTER, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, ImageQualityGate, QualityFilterConfig, QualityRejectReason, QualityVerdict, blurMetricScorer, highFrequencyEnergyRatio, meanLuminance, rgbaToGrayscale, sharpnessScore };
@@ -1,34 +1,35 @@
1
- import { n as DEFAULT_AR_CRASH_ISOLATION, r as validateArCrashIsolationOptions, t as ArCrashIsolationOptions } from "../ar-crash-isolation-DlXCGzMf.js";
2
- import { r as bresenham3d, t as GridCell } from "../bresenham3d-D-t9i_b5.js";
3
- import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-BlC-arRb.js";
4
- import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-BZ3_x1YL.js";
5
- import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-BAUKjtXU.js";
6
- import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-BHR4clTE.js";
7
- import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-CCuzlqUo.js";
8
- import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-CS2jAFw4.js";
9
- import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-ET3Gwedf.js";
10
- import { a as DEFAULT_SHARPNESS_MIN_SAMPLES, c as QualityRejectReason, d as highFrequencyEnergyRatio, f as meanLuminance, i as DEFAULT_SHARPNESS_HISTORY_SIZE, l as QualityVerdict, m as sharpnessScore, n as BlurMetricId, o as ImageQualityGate, p as rgbaToGrayscale, r as DEFAULT_QUALITY_FILTER, s as QualityFilterConfig, t as BLUR_METRIC_IDS, u as blurMetricScorer } from "../image-quality--HLuyJ2r.js";
11
- import { a as ImageCaptureCallbacks, c as MIN_VALID_IMAGE_BYTES, i as FrameQualityVerdict, n as CapturedImage, o as ImageCaptureConfig, r as DEFAULT_CAPTURE_CONFIG, s as ImageCaptureManager, t as CapturedFrame } from "../image-capture-BevgKpoO.js";
12
- import { _ as solveQrPose, a as QrPoseSolution, c as SolveQrPoseInput, d as intrinsicsFromProjection, f as invertPose, g as signedQuadArea, h as reprojectionErrorPx, i as Pose, l as buildObjectPoints, m as qrInCameraFromOpenCv, n as OpenCvPnpResult, o as QuadValidation, p as projectViewPoint, r as Point2, s as SolvePnpSquare, t as CameraIntrinsics, u as composePose, v as transformPoint, y as validateQuad } from "../qr-pose-21fRDcFO.js";
13
- import { a as QrFrontEnd, c as createBarcodeDetectorFrontEnd, i as QrDetection, n as BarcodeDetectorLike, o as RgbaImage, r as DetectedBarcodeLike, s as ToImageBitmapSource, t as BarcodeDetectorFrontEnd } from "../qr-frontend-QzKZSqB-.js";
14
- import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "../xr-camera-texture-q0eIDSRg.js";
15
- import { A as startCameraFrameCapture, D as rebindTrackingStore, F as stopImageCapture, M as startImageCapture, N as stopCameraFrameCapture, P as stopDepthCapture, S as initAR, _ as getDepthInfoFromFrame, a as SessionFeatureOptions, b as getScene, g as getCurrentArPose, h as getCameraFrameCount, i as SessionEndInfo, j as startDepthCapture, m as getCamera, n as CameraFrameCaptureConfig, p as getArWorldGroup, t as ArSessionCallbacks, u as endARSession, v as getDepthSampleCount, y as getImageCaptureFrameCount } from "../webxr-session-DefwObIu.js";
16
- import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-D_xEHzh5.js";
17
- import { r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-7GBMBu68.js";
18
- import { c as QrSizeAccumulatorOptions, d as QrSizeStatus, f as createQrSizeAccumulator, i as QrSizeMeasurer, l as QrSizeEstimate, n as QrSizeDepthContext, o as createQrSizeMeasurer, p as estimateQrSizeFromDepth, r as QrSizeMeasurement, s as QrSizeAccumulator, t as ImageSize, u as QrSizeObservation } from "../qr-size-measurer-rVFf4AdM.js";
19
- import { t as createQrSizeDepthContext } from "../qr-size-depth-context-CMDv6T29.js";
20
- import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../qr-derived-pose-DZPxZd9C.js";
21
- import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-CGlITU09.js";
22
- import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../qr-detection-controller-C5NII-vs.js";
23
- import { a as QrPoseStability, c as aggregateQrPose, i as DEFAULT_ROTATION_INLIER_ANGLE_DEG, l as averageRotation, n as AverageRotationOptions, o as QrPoseStabilityOptions, r as AverageRotationResult, s as QrPoseStabilityStatus, t as AggregateQrPoseResult, u as evaluateQrPoseStability } from "../qr-pose-aggregation-mABSN0AW.js";
24
- import { C as parseQrLevel, D as buildQrGpsVotes, E as QrGpsVoteInput, O as localPlaneToEnu, S as fetchQrLevel, T as QrGeoPose, _ as createQrTrackingController, a as checkQrPlausibility, b as QrLevel, c as QrDetectionScheduler, d as createQrDetectionScheduler, f as QrDetectionEvent, g as QrTrackingStatus, h as QrTrackingControllerConfig, i as QrPlausibilityVerdict, k as offsetGeo, l as QrDetectionSchedulerConfig, m as QrTrackingController, n as QrPlausibility, o as DetectionScheduler, p as QrSolvePoseInput, r as QrPlausibilityOptions, s as DetectionSchedulerConfig, t as OccupancySurface, u as createDetectionScheduler, v as FetchLike, w as Enu, x as QrLevelValidationError, y as FetchQrLevelOptions } from "../index-BWVwd9Zw.js";
25
- import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../planar-pnp-ByxwDEyM.js";
26
- import { n as CameraFrameSourceCallbacks, r as CameraFrameSourceConfig, t as CameraFrameSource } from "../index-Dxb6ATNK.js";
27
- import { n as OccupancyGridOptions, t as OccupancyGrid } from "../occupancy-grid-CYBdmMOo.js";
28
- import { a as meshOccupiedCells, i as OccupancyMeshResult, r as MeshOccupiedCellsOptions, t as Aabb } from "../occupancy-mesher-B4Bv4BTk.js";
29
- import { i as registerXrFrameUpdate, n as XrFrameUpdate, t as XrFrameContext } from "../xr-frame-loop-BiZvgqP7.js";
30
- import { a as getCameraFollower, c as getReplayState, d as updateOrbitTarget, i as getAlignmentLerper, l as initReplayScene, n as ReplaySceneState, o as getCameraMode, r as disposeReplayScene, t as CameraMode, u as toggleCameraMode } from "../replay-scene-BJeO36YT.js";
31
- import { t as SCENE_NODE } from "../scene-node-names-DWzhE7Ro.js";
32
- import { t as WEBXR_TO_NUE } from "../webxr-nue-basis-C3vTqkE2.js";
33
- import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "../xr-error-handler-D9y5r8ok.js";
34
- export { Aabb, AggregateQrPoseResult, ArCrashIsolationOptions, ArSessionCallbacks, AverageRotationOptions, AverageRotationResult, BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BLUR_METRIC_IDS, BarcodeDetectorFrontEnd, BarcodeDetectorLike, BlurMetricId, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraBlitCaptureConfig, CameraFrameCaptureConfig, CameraFrameSource, CameraFrameSourceCallbacks, CameraFrameSourceConfig, CameraIntrinsics, CameraMode, CameraTextureResult, CapabilityMessageOptions, CapabilitySupport, CaptureFailureTracker, CaptureFailureTrackerConfig, CapturedFrame, CapturedImage, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, DEFAULT_AR_CRASH_ISOLATION, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_QUALITY_FILTER, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, DepthGridLookup, DepthInfo, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, DepthUnprojector, DeriveQrPoseDeps, DerivedQrPlacement, DetectedBarcodeLike, DetectionScheduler, DetectionSchedulerConfig, EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, Enu, FetchLike, FetchQrLevelOptions, FrameQualityVerdict, FrameUpdate, GridCell, Homography, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, ImageQualityGate, ImageSize, IncrementalQrPlacement, MIN_VALID_IMAGE_BYTES, Mat3, MeshOccupiedCellsOptions, OccupancyGrid, OccupancyGridOptions, OccupancyMeshResult, OccupancySurface, OpenCvPnpResult, PlanarPnpSquare, Point2, Pose, PoseCandidate, QrDebugView, QrDetection, QrDetectionController, QrDetectionControllerDeps, QrDetectionEvent, QrDetectionScheduler, QrDetectionSchedulerConfig, QrFrontEnd, QrGeoPose, QrGpsVoteInput, QrLevel, QrLevelValidationError, QrPlausibility, QrPlausibilityOptions, QrPlausibilityVerdict, QrPoseSolution, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrScanStatus, QrSizeAccumulator, QrSizeAccumulatorOptions, QrSizeDepthContext, QrSizeEstimate, QrSizeMeasurement, QrSizeMeasurer, QrSizeObservation, QrSizeStatus, QrSolvePoseInput, QrTrackingController, QrTrackingControllerConfig, QrTrackingStatus, QuadValidation, QualityFilterConfig, QualityRejectReason, QualityVerdict, RawObservationSink, RawQrObservation, RendererLike, ReplaySceneState, RgbaImage, SCENE_NODE, SessionEndInfo, SessionFeatureOptions, SolvePnpSquare, SolveQrPoseInput, ToImageBitmapSource, WEBXR_TO_NUE, XRCameraLike, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, XrFrameContext, XrFrameUpdate, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, blurMetricScorer, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthInfoFromFrame, getDepthSampleCount, getImageCaptureFrameCount, getReplayState, getScene, getXrErrorMessage, highFrequencyEnergyRatio, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, meanLuminance, meshOccupiedCells, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, rebindTrackingStore, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rgbaToGrayscale, rotationToRodrigues, sharpnessScore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateArCrashIsolationOptions, validateQuad, wrapXRDepthInfo };
1
+ import { n as DEFAULT_AR_CRASH_ISOLATION, r as validateArCrashIsolationOptions, t as ArCrashIsolationOptions } from "../ar-crash-isolation-BSFw_beO.js";
2
+ import { r as bresenham3d, t as GridCell } from "../bresenham3d-bt61R-Qa.js";
3
+ import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-CgNJ9grH.js";
4
+ import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-DrWimJ_t.js";
5
+ import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-bUXJeMvQ.js";
6
+ import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-BRs6gkI4.js";
7
+ import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-PcJTdRLL.js";
8
+ import { a as DepthSamplerCallbacks, i as DepthSampler, o as DepthSamplerConfig, r as DepthInfo, s as wrapXRDepthInfo } from "../depth-sampler-BcvuxgCS.js";
9
+ import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-DbGipFkA.js";
10
+ import { a as DEFAULT_SHARPNESS_MIN_SAMPLES, c as QualityRejectReason, d as highFrequencyEnergyRatio, f as meanLuminance, i as DEFAULT_SHARPNESS_HISTORY_SIZE, l as QualityVerdict, m as sharpnessScore, n as BlurMetricId, o as ImageQualityGate, p as rgbaToGrayscale, r as DEFAULT_QUALITY_FILTER, s as QualityFilterConfig, t as BLUR_METRIC_IDS, u as blurMetricScorer } from "../image-quality-G7_qT4aj.js";
11
+ import { a as ImageCaptureCallbacks, c as MIN_VALID_IMAGE_BYTES, i as FrameQualityVerdict, n as CapturedImage, o as ImageCaptureConfig, r as DEFAULT_CAPTURE_CONFIG, s as ImageCaptureManager, t as CapturedFrame } from "../image-capture-BXmx1YvD.js";
12
+ import { _ as solveQrPose, a as QrPoseSolution, c as SolveQrPoseInput, d as intrinsicsFromProjection, f as invertPose, g as signedQuadArea, h as reprojectionErrorPx, i as Pose, l as buildObjectPoints, m as qrInCameraFromOpenCv, n as OpenCvPnpResult, o as QuadValidation, p as projectViewPoint, r as Point2, s as SolvePnpSquare, t as CameraIntrinsics, u as composePose, v as transformPoint, y as validateQuad } from "../qr-pose-_dInl6di.js";
13
+ import { a as QrFrontEnd, c as createBarcodeDetectorFrontEnd, i as QrDetection, n as BarcodeDetectorLike, o as RgbaImage, r as DetectedBarcodeLike, s as ToImageBitmapSource, t as BarcodeDetectorFrontEnd } from "../qr-frontend-BnLlVjKu.js";
14
+ import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "../xr-camera-texture-BA4xiaQ4.js";
15
+ import { A as startCameraFrameCapture, D as rebindTrackingStore, F as stopImageCapture, M as startImageCapture, N as stopCameraFrameCapture, P as stopDepthCapture, S as initAR, _ as getDepthInfoFromFrame, a as SessionFeatureOptions, b as getScene, g as getCurrentArPose, h as getCameraFrameCount, i as SessionEndInfo, j as startDepthCapture, m as getCamera, n as CameraFrameCaptureConfig, p as getArWorldGroup, t as ArSessionCallbacks, u as endARSession, v as getDepthSampleCount, y as getImageCaptureFrameCount } from "../webxr-session-DurXRnl_.js";
16
+ import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-xjz3jNqm.js";
17
+ import { r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-CUEIdlhS.js";
18
+ import { n as HitTestReticleHandle, r as startHitTestReticle, t as HitTestReticleArgs } from "../hit-test-reticle-driver-CfKiDgsa.js";
19
+ import { c as QrSizeAccumulatorOptions, d as QrSizeStatus, f as createQrSizeAccumulator, i as QrSizeMeasurer, l as QrSizeEstimate, n as QrSizeDepthContext, o as createQrSizeMeasurer, p as estimateQrSizeFromDepth, r as QrSizeMeasurement, s as QrSizeAccumulator, t as ImageSize, u as QrSizeObservation } from "../qr-size-measurer-18_W3INY.js";
20
+ import { t as createQrSizeDepthContext } from "../qr-size-depth-context-Bzbx98nS.js";
21
+ import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../qr-derived-pose-Dq7mPK2s.js";
22
+ import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-BMjNVhV2.js";
23
+ import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../qr-detection-controller-Dh4Paymb.js";
24
+ import { a as QrPoseStability, c as aggregateQrPose, i as DEFAULT_ROTATION_INLIER_ANGLE_DEG, l as averageRotation, n as AverageRotationOptions, o as QrPoseStabilityOptions, r as AverageRotationResult, s as QrPoseStabilityStatus, t as AggregateQrPoseResult, u as evaluateQrPoseStability } from "../qr-pose-aggregation-Bpv4uARJ.js";
25
+ import { C as parseQrLevel, D as buildQrGpsVotes, E as QrGpsVoteInput, O as localPlaneToEnu, S as fetchQrLevel, T as QrGeoPose, _ as createQrTrackingController, a as checkQrPlausibility, b as QrLevel, c as QrDetectionScheduler, d as createQrDetectionScheduler, f as QrDetectionEvent, g as QrTrackingStatus, h as QrTrackingControllerConfig, i as QrPlausibilityVerdict, k as offsetGeo, l as QrDetectionSchedulerConfig, m as QrTrackingController, n as QrPlausibility, o as DetectionScheduler, p as QrSolvePoseInput, r as QrPlausibilityOptions, s as DetectionSchedulerConfig, t as OccupancySurface, u as createDetectionScheduler, v as FetchLike, w as Enu, x as QrLevelValidationError, y as FetchQrLevelOptions } from "../index-DX9VC257.js";
26
+ import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../planar-pnp-CkcMN3o3.js";
27
+ import { n as CameraFrameSourceCallbacks, r as CameraFrameSourceConfig, t as CameraFrameSource } from "../index-DVmgFIgm.js";
28
+ import { i as OccupancyGridOptions, r as OccupancyGrid } from "../occupancy-grid-DKzIdCSZ.js";
29
+ import { a as meshOccupiedCells, i as OccupancyMeshResult, r as MeshOccupiedCellsOptions, t as Aabb } from "../occupancy-mesher-Co80tOpl.js";
30
+ import { i as registerXrFrameUpdate, n as XrFrameUpdate, t as XrFrameContext } from "../xr-frame-loop-A1mGDFHI.js";
31
+ import { a as getCameraFollower, c as getReplayState, d as updateOrbitTarget, i as getAlignmentLerper, l as initReplayScene, n as ReplaySceneState, o as getCameraMode, r as disposeReplayScene, t as CameraMode, u as toggleCameraMode } from "../replay-scene-D5qzY0_x.js";
32
+ import { t as SCENE_NODE } from "../scene-node-names-Ct6ATrfM.js";
33
+ import { t as WEBXR_TO_NUE } from "../webxr-nue-basis-B8ZEetVb.js";
34
+ import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "../xr-error-handler-BeyxXCE_.js";
35
+ export { Aabb, AggregateQrPoseResult, ArCrashIsolationOptions, ArSessionCallbacks, AverageRotationOptions, AverageRotationResult, BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BLUR_METRIC_IDS, BarcodeDetectorFrontEnd, BarcodeDetectorLike, BlurMetricId, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraBlitCaptureConfig, CameraFrameCaptureConfig, CameraFrameSource, CameraFrameSourceCallbacks, CameraFrameSourceConfig, CameraIntrinsics, CameraMode, CameraTextureResult, CapabilityMessageOptions, CapabilitySupport, CaptureFailureTracker, CaptureFailureTrackerConfig, CapturedFrame, CapturedImage, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, DEFAULT_AR_CRASH_ISOLATION, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_QUALITY_FILTER, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, DepthGridLookup, DepthInfo, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, DepthUnprojector, DeriveQrPoseDeps, DerivedQrPlacement, DetectedBarcodeLike, DetectionScheduler, DetectionSchedulerConfig, EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, Enu, FetchLike, FetchQrLevelOptions, FrameQualityVerdict, FrameUpdate, GridCell, HitTestReticleArgs, HitTestReticleHandle, Homography, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, ImageQualityGate, ImageSize, IncrementalQrPlacement, MIN_VALID_IMAGE_BYTES, Mat3, MeshOccupiedCellsOptions, OccupancyGrid, OccupancyGridOptions, OccupancyMeshResult, OccupancySurface, OpenCvPnpResult, PlanarPnpSquare, Point2, Pose, PoseCandidate, QrDebugView, QrDetection, QrDetectionController, QrDetectionControllerDeps, QrDetectionEvent, QrDetectionScheduler, QrDetectionSchedulerConfig, QrFrontEnd, QrGeoPose, QrGpsVoteInput, QrLevel, QrLevelValidationError, QrPlausibility, QrPlausibilityOptions, QrPlausibilityVerdict, QrPoseSolution, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrScanStatus, QrSizeAccumulator, QrSizeAccumulatorOptions, QrSizeDepthContext, QrSizeEstimate, QrSizeMeasurement, QrSizeMeasurer, QrSizeObservation, QrSizeStatus, QrSolvePoseInput, QrTrackingController, QrTrackingControllerConfig, QrTrackingStatus, QuadValidation, QualityFilterConfig, QualityRejectReason, QualityVerdict, RawObservationSink, RawQrObservation, RendererLike, ReplaySceneState, RgbaImage, SCENE_NODE, SessionEndInfo, SessionFeatureOptions, SolvePnpSquare, SolveQrPoseInput, ToImageBitmapSource, WEBXR_TO_NUE, XRCameraLike, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, XrFrameContext, XrFrameUpdate, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, blurMetricScorer, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthInfoFromFrame, getDepthSampleCount, getImageCaptureFrameCount, getReplayState, getScene, getXrErrorMessage, highFrequencyEnergyRatio, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, meanLuminance, meshOccupiedCells, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, rebindTrackingStore, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rgbaToGrayscale, rotationToRodrigues, sharpnessScore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startHitTestReticle, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateArCrashIsolationOptions, validateQuad, wrapXRDepthInfo };
package/dist/ar/index.js CHANGED
@@ -17,17 +17,18 @@ import { i as evaluateQrPoseStability, n as aggregateQrPose, r as averageRotatio
17
17
  import { a as offsetGeo, c as parseQrLevel, i as localPlaneToEnu, n as createQrTrackingController, o as QrLevelValidationError, r as buildQrGpsVotes, s as fetchQrLevel, t as checkQrPlausibility } from "../qr-CTp5xI83.js";
18
18
  import { BarcodeDetectorFrontEnd, createBarcodeDetectorFrontEnd } from "./qr/qr-frontend.js";
19
19
  import { PlanarPnpSquare, homographyFromCorrespondences, ippePoseCandidates, nearestRotation3x3, rotationToRodrigues, solveLinear } from "./qr/planar-pnp.js";
20
- import { A as stopImageCapture, D as startImageCapture, E as startDepthCapture, O as stopCameraFrameCapture, S as rebindTrackingStore, T as startCameraFrameCapture, _ as initAR, a as endARSession, c as getArWorldGroup, d as getCurrentArPose, f as getDepthInfoFromFrame, h as getScene, j as CameraFrameSource, k as stopDepthCapture, l as getCamera, m as getImageCaptureFrameCount, p as getDepthSampleCount, u as getCameraFrameCount } from "../webxr-session-OyR3YbTq.js";
20
+ import { A as stopImageCapture, D as startImageCapture, E as startDepthCapture, O as stopCameraFrameCapture, S as rebindTrackingStore, T as startCameraFrameCapture, _ as initAR, a as endARSession, c as getArWorldGroup, d as getCurrentArPose, f as getDepthInfoFromFrame, h as getScene, j as CameraFrameSource, k as stopDepthCapture, l as getCamera, m as getImageCaptureFrameCount, p as getDepthSampleCount, u as getCameraFrameCount } from "../webxr-session-BBlgzrqY.js";
21
21
  import { bresenham3d } from "./bresenham3d.js";
22
22
  import { OccupancyGrid } from "./occupancy-grid.js";
23
- import { meshOccupiedCells } from "./occupancy-mesher.js";
23
+ import { t as meshOccupiedCells } from "../occupancy-mesher-DzNeJdQf.js";
24
24
  import { registerFrameUpdate } from "./frame-loop.js";
25
25
  import { registerXrFrameUpdate } from "./xr-frame-loop.js";
26
- import { n as ImageCaptureManager, r as MIN_VALID_IMAGE_BYTES, t as DEFAULT_CAPTURE_CONFIG } from "../image-capture-C4DwxC10.js";
26
+ import { startHitTestReticle } from "./hit-test-reticle-driver.js";
27
+ import { n as ImageCaptureManager, r as MIN_VALID_IMAGE_BYTES, t as DEFAULT_CAPTURE_CONFIG } from "../image-capture-Dn8uLIP2.js";
27
28
  import { BLUR_METRIC_IDS, DEFAULT_QUALITY_FILTER, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, ImageQualityGate, blurMetricScorer, highFrequencyEnergyRatio, meanLuminance, rgbaToGrayscale, sharpnessScore } from "./image-quality.js";
28
29
  import { acquireCameraTexture } from "./xr-camera-texture.js";
29
30
  import { SCENE_NODE } from "./scene-node-names.js";
30
31
  import { createEnableGpsArController } from "./enable-gps-ar.js";
31
32
  import { disposeReplayScene, getAlignmentLerper, getCameraFollower, getCameraMode, getReplayState, initReplayScene, toggleCameraMode, updateOrbitTarget } from "./replay-scene.js";
32
33
  import { XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, getXrErrorMessage } from "./xr-error-handler.js";
33
- export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BLUR_METRIC_IDS, BarcodeDetectorFrontEnd, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraFrameSource, DEFAULT_AR_CRASH_ISOLATION, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_QUALITY_FILTER, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, DepthSampler, ImageCaptureManager, ImageQualityGate, MIN_VALID_IMAGE_BYTES, OccupancyGrid, PlanarPnpSquare, QrLevelValidationError, SCENE_NODE, WEBXR_TO_NUE, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, blurMetricScorer, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthInfoFromFrame, getDepthSampleCount, getImageCaptureFrameCount, getReplayState, getScene, getXrErrorMessage, highFrequencyEnergyRatio, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, meanLuminance, meshOccupiedCells, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, rebindTrackingStore, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rgbaToGrayscale, rotationToRodrigues, sharpnessScore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateArCrashIsolationOptions, validateQuad, wrapXRDepthInfo };
34
+ export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BLUR_METRIC_IDS, BarcodeDetectorFrontEnd, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraFrameSource, DEFAULT_AR_CRASH_ISOLATION, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_QUALITY_FILTER, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, DepthSampler, ImageCaptureManager, ImageQualityGate, MIN_VALID_IMAGE_BYTES, OccupancyGrid, PlanarPnpSquare, QrLevelValidationError, SCENE_NODE, WEBXR_TO_NUE, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, blurMetricScorer, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthInfoFromFrame, getDepthSampleCount, getImageCaptureFrameCount, getReplayState, getScene, getXrErrorMessage, highFrequencyEnergyRatio, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, meanLuminance, meshOccupiedCells, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, rebindTrackingStore, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rgbaToGrayscale, rotationToRodrigues, sharpnessScore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startHitTestReticle, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateArCrashIsolationOptions, validateQuad, wrapXRDepthInfo };
@@ -1,5 +1,5 @@
1
- import { t as GridCell } from "../bresenham3d-D-t9i_b5.js";
2
- import { n as MeshMode } from "../occupancy-mesher-B4Bv4BTk.js";
1
+ import { t as GridCell } from "../bresenham3d-bt61R-Qa.js";
2
+ import { n as MeshMode } from "../occupancy-mesher-Co80tOpl.js";
3
3
  import { Vector3 } from "gps-plus-slam-js";
4
4
 
5
5
  //#region ../src/ar/occlusion-mesh-worker.d.ts
@@ -1,5 +1,5 @@
1
- import { a as packCellKey } from "../cell-key-Bj-eYTLA.js";
2
- import { meshOccupiedCells } from "./occupancy-mesher.js";
1
+ import { s as packCellKey } from "../cell-key-D1b_Ix-p.js";
2
+ import { t as meshOccupiedCells } from "../occupancy-mesher-DzNeJdQf.js";
3
3
  //#region ../src/ar/occlusion-mesh-worker.ts
4
4
  /** Only the surface-hugging modes read `getCellPoint`. */
5
5
  function needsCentroids(mode) {
@@ -97,7 +97,7 @@ function runMeshRequest(request) {
97
97
  ]);
98
98
  let getCellPoint;
99
99
  const pts = centroids;
100
- if (pts) {
100
+ if (pts && mode !== "smooth") {
101
101
  const indexByKey = /* @__PURE__ */ new Map();
102
102
  for (let i = 0; i < n; i++) indexByKey.set(packCellKey(flat[i * 3], flat[i * 3 + 1], flat[i * 3 + 2]), i);
103
103
  getCellPoint = (cell) => {
@@ -114,7 +114,9 @@ function runMeshRequest(request) {
114
114
  }
115
115
  const mesh = meshOccupiedCells(cells, cellSizeM, {
116
116
  mode,
117
- getCellPoint
117
+ getCellPoint,
118
+ centroids,
119
+ includeAabbs: false
118
120
  });
119
121
  return {
120
122
  response: {
@@ -1,2 +1,2 @@
1
- import { i as unpackCellKey, n as OccupancyGridOptions, r as cellKey, t as OccupancyGrid } from "../occupancy-grid-CYBdmMOo.js";
2
- export { OccupancyGrid, OccupancyGridOptions, cellKey, unpackCellKey };
1
+ import { a as cellKey, i as OccupancyGridOptions, n as DEFAULT_OCCUPANCY_MIN_OBSERVATIONS, o as unpackCellKey, r as OccupancyGrid, t as DEFAULT_OCCUPANCY_CELL_SIZE_M } from "../occupancy-grid-DKzIdCSZ.js";
2
+ export { DEFAULT_OCCUPANCY_CELL_SIZE_M, DEFAULT_OCCUPANCY_MIN_OBSERVATIONS, OccupancyGrid, OccupancyGridOptions, cellKey, unpackCellKey };