gps-plus-slam-app-framework 1.0.7 → 1.2.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 (189) hide show
  1. package/README.md +69 -15
  2. package/dist/{app-selectors-BeU0_ab8.d.ts → app-selectors-CcZ5UV-8.d.ts} +1 -1
  3. package/dist/ar/bresenham3d.d.ts +2 -0
  4. package/dist/ar/bresenham3d.js +81 -0
  5. package/dist/ar/camera-blit-capture.d.ts +1 -1
  6. package/dist/ar/camera-blit-capture.js +30 -2
  7. package/dist/ar/capability-checker.d.ts +2 -0
  8. package/dist/ar/capability-checker.js +25 -0
  9. package/dist/ar/capture-failure-tracker.d.ts +1 -1
  10. package/dist/ar/chromium-camera-access-workaround.d.ts +2 -2
  11. package/dist/ar/chromium-camera-access-workaround.js +197 -8
  12. package/dist/ar/depth-sampler.d.ts +3 -3
  13. package/dist/ar/depth-sampler.js +63 -8
  14. package/dist/ar/depth-unprojection.d.ts +2 -0
  15. package/dist/ar/depth-unprojection.js +94 -0
  16. package/dist/ar/enable-gps-ar.d.ts +2 -0
  17. package/dist/ar/enable-gps-ar.js +137 -0
  18. package/dist/ar/frame-loop.d.ts +1 -1
  19. package/dist/ar/frame-loop.js +24 -1
  20. package/dist/ar/image-capture.d.ts +1 -1
  21. package/dist/ar/image-capture.js +2 -1
  22. package/dist/ar/index.d.ts +19 -12
  23. package/dist/ar/index.js +11 -4
  24. package/dist/ar/occupancy-grid.d.ts +2 -0
  25. package/dist/ar/occupancy-grid.js +164 -0
  26. package/dist/ar/replay-scene.d.ts +1 -1
  27. package/dist/ar/replay-scene.js +1 -1
  28. package/dist/ar/scene-node-names.d.ts +1 -1
  29. package/dist/ar/webxr-nue-basis.d.ts +2 -0
  30. package/dist/ar/webxr-nue-basis.js +54 -0
  31. package/dist/ar/webxr-session.d.ts +4 -4
  32. package/dist/ar/webxr-session.js +1 -984
  33. package/dist/ar/xr-camera-texture.d.ts +1 -1
  34. package/dist/ar/xr-error-handler.d.ts +1 -1
  35. package/dist/ar/xr-frame-loop.d.ts +2 -0
  36. package/dist/ar/xr-frame-loop.js +69 -0
  37. package/dist/{ar-types-Ck8LEq8k.d.ts → ar-types-Dan1MVTi.d.ts} +28 -5
  38. package/dist/ar-world-group-alignment-ColHB_5A.d.ts +43 -0
  39. package/dist/bresenham3d-CFfd7n6B.d.ts +59 -0
  40. package/dist/{camera-blit-capture-C1V9I1Z6.d.ts → camera-blit-capture-D5_mNhla.d.ts} +20 -0
  41. package/dist/capability-checker-CQXJHxXg.d.ts +43 -0
  42. package/dist/chromium-camera-access-workaround-Jqbn0apH.d.ts +137 -0
  43. package/dist/core/index.d.ts +1 -1
  44. package/dist/{create-slam-app-store-CNsZ3rcX.d.ts → create-slam-app-store-qNXQ-tq5.d.ts} +5 -5
  45. package/dist/depth-sampler-Bhanfwla.d.ts +169 -0
  46. package/dist/depth-unprojection-Y6i_mJuT.d.ts +52 -0
  47. package/dist/enable-gps-ar-CapmADVN.d.ts +95 -0
  48. package/dist/{file-system-DTApEv_Q.d.ts → file-system-C_eqiEA8.d.ts} +1 -1
  49. package/dist/frame-conversions-BfsafGWR.d.ts +54 -0
  50. package/dist/{frame-loop-QJIxLin0.d.ts → frame-loop-CMewS8cY.d.ts} +5 -0
  51. package/dist/{fused-path-CB4DwWOG.d.ts → fused-path-DJoVu98b.d.ts} +1 -1
  52. package/dist/geo/h3-proximity.d.ts +1 -1
  53. package/dist/geo/index.d.ts +1 -1
  54. package/dist/{gps-anchor-CnWY61XK.d.ts → gps-anchor-dYeCvvp5.d.ts} +12 -1
  55. package/dist/{gps-ar-pose-sampler-DsM1Kb2N.d.ts → gps-ar-pose-sampler-DVb96iOy.d.ts} +1 -1
  56. package/dist/{gps-event-coordinator-DBx9I1YX.d.ts → gps-event-coordinator-BDIQde2x.d.ts} +3 -3
  57. package/dist/hit-test-reticle-BEzEybxZ.d.ts +45 -0
  58. package/dist/{image-capture-DZLxHDN9.d.ts → image-capture-DZ4HFRgS.d.ts} +15 -2
  59. package/dist/index-KJq2amHF.d.ts +37 -0
  60. package/dist/index.d.ts +67 -58
  61. package/dist/index.js +18 -8
  62. package/dist/{leaflet-map-overlay-Cew7XAoO.d.ts → leaflet-map-overlay-6CJC-E1l.d.ts} +1 -1
  63. package/dist/{map-data-sih4g64v.d.ts → map-data-CkloBxIl.d.ts} +1 -1
  64. package/dist/{map-overlay-draw-B3R1c9Xp.d.ts → map-overlay-draw-krOKwDAq.d.ts} +1 -1
  65. package/dist/{null-storage-backend-BKOS7JpL.d.ts → null-storage-backend-CxEjZHRW.d.ts} +2 -2
  66. package/dist/occupancy-grid-BRNRaPyT.d.ts +72 -0
  67. package/dist/{opfs-storage-backend-Cj_7PWoq.d.ts → opfs-storage-backend-CjSAuqg_.d.ts} +2 -2
  68. package/dist/{persistence-middleware-BkHIqvaA.d.ts → persistence-middleware-DwyzgfWr.d.ts} +1 -1
  69. package/dist/{recording-options-Dq6IsKAv.d.ts → recording-options-DJBXuMxV.d.ts} +22 -6
  70. package/dist/{recording-replayer-CmCIIZ02.d.ts → recording-replayer-BL-x-7k0.d.ts} +2 -2
  71. package/dist/{recording-slice-d6OtCrza.d.ts → recording-slice-89O07ebs.d.ts} +10 -2
  72. package/dist/{replay-engine-BGBRQyXs.d.ts → replay-engine-BRqszuQ9.d.ts} +1 -1
  73. package/dist/{replay-scene-DpAGcAKY.d.ts → replay-scene-Bw58VL6p.d.ts} +3 -3
  74. package/dist/sensors/gps-error-handler.d.ts +1 -1
  75. package/dist/sensors/gps.d.ts +1 -1
  76. package/dist/sensors/index.d.ts +3 -3
  77. package/dist/sensors/index.js +1 -1
  78. package/dist/sensors/permission-checker.d.ts +1 -1
  79. package/dist/session-disposers-M-oashRH.js +57 -0
  80. package/dist/state/app-selectors.d.ts +1 -1
  81. package/dist/state/combined-root-state.d.ts +1 -1
  82. package/dist/state/create-slam-app-store.d.ts +1 -1
  83. package/dist/state/gps-ar-pose-sampler.d.ts +3 -3
  84. package/dist/state/gps-event-coordinator.d.ts +1 -1
  85. package/dist/state/index.d.ts +17 -17
  86. package/dist/state/index.js +2 -2
  87. package/dist/state/persistence-middleware.d.ts +1 -1
  88. package/dist/state/persistence-middleware.js +9 -3
  89. package/dist/state/recording-options.d.ts +1 -1
  90. package/dist/state/recording-options.js +5 -3
  91. package/dist/state/recording-replayer.d.ts +2 -2
  92. package/dist/state/recording-slice.d.ts +1 -1
  93. package/dist/state/recording-slice.js +11 -2
  94. package/dist/state/replay-engine.d.ts +1 -1
  95. package/dist/state/store-subscribers.d.ts +2 -2
  96. package/dist/state/subscribe-to-selector.d.ts +1 -1
  97. package/dist/state/tracking-quality.d.ts +1 -1
  98. package/dist/state/tracking-quality.js +1 -1
  99. package/dist/state/tracking-slice.d.ts +1 -1
  100. package/dist/state-BkIfpiyA.js +87 -0
  101. package/dist/storage/file-system-utils.d.ts +1 -1
  102. package/dist/storage/file-system.d.ts +1 -1
  103. package/dist/storage/index.d.ts +8 -8
  104. package/dist/storage/null-storage-backend.d.ts +1 -1
  105. package/dist/storage/opfs-storage-backend.d.ts +1 -1
  106. package/dist/storage/opfs-storage.d.ts +1 -1
  107. package/dist/storage/storage-backend.d.ts +1 -1
  108. package/dist/storage/zip-export.d.ts +1 -1
  109. package/dist/storage/zip-reader.d.ts +1 -1
  110. package/dist/{storage-backend-CT0Il_AB.d.ts → storage-backend-C9HLFtgz.d.ts} +1 -1
  111. package/dist/{store-subscribers-Dce_CoJF.d.ts → store-subscribers-rrkLkFTt.d.ts} +2 -2
  112. package/dist/{subscribe-to-selector-DIHm3BRZ.d.ts → subscribe-to-selector-CP3BKSbF.d.ts} +1 -1
  113. package/dist/test-utils/browser-mocks.d.ts +1 -1
  114. package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
  115. package/dist/{tracking-slice-utCNND8t.d.ts → tracking-slice-CdK8c-8P.d.ts} +1 -1
  116. package/dist/types/ar-types.d.ts +2 -2
  117. package/dist/types/geo-types.d.ts +1 -1
  118. package/dist/types/index.d.ts +3 -3
  119. package/dist/utils/concurrency.d.ts +1 -1
  120. package/dist/utils/failure-tracker.d.ts +1 -1
  121. package/dist/utils/format-file-size.d.ts +1 -1
  122. package/dist/utils/fused-path.d.ts +1 -1
  123. package/dist/utils/index.d.ts +6 -6
  124. package/dist/utils/list-formatter.d.ts +1 -1
  125. package/dist/utils/logger.d.ts +1 -1
  126. package/dist/visualization/accuracy-circles.d.ts +1 -1
  127. package/dist/visualization/alignment-lerper.d.ts +1 -1
  128. package/dist/visualization/ar-world-group-alignment.d.ts +2 -0
  129. package/dist/visualization/ar-world-group-alignment.js +51 -0
  130. package/dist/visualization/camera-follower.d.ts +1 -1
  131. package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
  132. package/dist/visualization/frame-conversions.d.ts +2 -0
  133. package/dist/visualization/frame-conversions.js +88 -0
  134. package/dist/visualization/frustum-visibility.d.ts +1 -1
  135. package/dist/visualization/gps-anchor.d.ts +1 -1
  136. package/dist/visualization/gps-anchor.js +216 -1
  137. package/dist/visualization/gps-compass-cubes.d.ts +1 -1
  138. package/dist/visualization/gps-event-markers.d.ts +1 -1
  139. package/dist/visualization/gps-event-markers.js +1 -1
  140. package/dist/visualization/hit-test-reticle.d.ts +2 -0
  141. package/dist/visualization/hit-test-reticle.js +81 -0
  142. package/dist/visualization/index.d.ts +19 -17
  143. package/dist/visualization/index.js +5 -2
  144. package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
  145. package/dist/visualization/lerp-utils.d.ts +1 -1
  146. package/dist/visualization/map-data.d.ts +1 -1
  147. package/dist/visualization/map-overlay-draw.d.ts +1 -1
  148. package/dist/visualization/map-overlay.d.ts +1 -1
  149. package/dist/visualization/three-dispose.d.ts +1 -1
  150. package/dist/visualization/vis-colors.d.ts +1 -1
  151. package/dist/webxr-nue-basis-CqKQmZzT.d.ts +23 -0
  152. package/dist/{webxr-session-DB5cIZnN.d.ts → webxr-session-DtAG9srK.d.ts} +45 -13
  153. package/dist/webxr-session-QhcSSub5.js +1041 -0
  154. package/dist/xr-frame-loop-BtYytZJg.d.ts +70 -0
  155. package/package.json +1 -1
  156. package/dist/chromium-camera-access-workaround-NvChXsi8.d.ts +0 -61
  157. package/dist/depth-sampler-xg8vna6c.d.ts +0 -108
  158. package/dist/gps-anchor-DjC_3MoT.js +0 -257
  159. package/dist/index-pOjUCKEP.d.ts +0 -24
  160. /package/dist/{accuracy-circles-CsxE_7x1.d.ts → accuracy-circles-BpwWAs8G.d.ts} +0 -0
  161. /package/dist/{alignment-lerper-L1RbWHQ4.d.ts → alignment-lerper-Dm9G7JJO.d.ts} +0 -0
  162. /package/dist/{camera-follower-1k8mnw5J.d.ts → camera-follower-C2mwEn7c.d.ts} +0 -0
  163. /package/dist/{capture-failure-tracker-JKb1ST8E.d.ts → capture-failure-tracker-CUeU3L_M.d.ts} +0 -0
  164. /package/dist/{concurrency-CMw8pSaG.d.ts → concurrency-CO1FQvs3.d.ts} +0 -0
  165. /package/dist/{css3d-renderer-manager-CkjCb2HW.d.ts → css3d-renderer-manager-ptu_t3B3.d.ts} +0 -0
  166. /package/dist/{failure-tracker-DnHXOIRa.d.ts → failure-tracker-Cn8Fo9D4.d.ts} +0 -0
  167. /package/dist/{file-system-utils-CtKiiw27.d.ts → file-system-utils-DyAmcuvX.d.ts} +0 -0
  168. /package/dist/{format-file-size-BTS5H62-.d.ts → format-file-size-CLCZz3lC.d.ts} +0 -0
  169. /package/dist/{frustum-visibility-BHnFrSKQ.d.ts → frustum-visibility-CmI96ESS.d.ts} +0 -0
  170. /package/dist/{geo-types-CTuF23gG.d.ts → geo-types-SaPnIEUM.d.ts} +0 -0
  171. /package/dist/{gps-DXoQb9Kf.d.ts → gps-VuezJWK3.d.ts} +0 -0
  172. /package/dist/{gps-compass-cubes-CsLtFv4B.d.ts → gps-compass-cubes-BM1uGiYV.d.ts} +0 -0
  173. /package/dist/{gps-error-handler-Dg3ziRVY.d.ts → gps-error-handler-CJl_2MVm.d.ts} +0 -0
  174. /package/dist/{gps-event-markers-BGr-iLvi.d.ts → gps-event-markers-Dc9FT-q1.d.ts} +0 -0
  175. /package/dist/{h3-proximity-BhfgNbdW.d.ts → h3-proximity-I1msGPgE.d.ts} +0 -0
  176. /package/dist/{index-gzWJMVpo.d.ts → index-CF05QV2m.d.ts} +0 -0
  177. /package/dist/{lerp-utils-B8MM8zCR.d.ts → lerp-utils-BpV-0Dtk.d.ts} +0 -0
  178. /package/dist/{list-formatter-CNqi-E2j.d.ts → list-formatter-RRcBe8Vg.d.ts} +0 -0
  179. /package/dist/{logger-C9vugiQb.d.ts → logger-BEHXsnnq.d.ts} +0 -0
  180. /package/dist/{map-overlay-DAmreyA3.d.ts → map-overlay-bcogY5fK.d.ts} +0 -0
  181. /package/dist/{opfs-storage-DOPkzgeT.d.ts → opfs-storage-DYm8WHq7.d.ts} +0 -0
  182. /package/dist/{permission-checker-DPJl_RU6.d.ts → permission-checker-GpAiSCwd.d.ts} +0 -0
  183. /package/dist/{scene-node-names-6LBjPmwz.d.ts → scene-node-names-Bu0S66H1.d.ts} +0 -0
  184. /package/dist/{three-dispose-C2drkp6f.d.ts → three-dispose-D950t71B.d.ts} +0 -0
  185. /package/dist/{vis-colors-CHQhjal3.d.ts → vis-colors-D6omC64K.d.ts} +0 -0
  186. /package/dist/{xr-camera-texture-BU5YvKAM.d.ts → xr-camera-texture-DBwCaKTd.d.ts} +0 -0
  187. /package/dist/{xr-error-handler-CDY5QxGb.d.ts → xr-error-handler-C0AQRmxs.d.ts} +0 -0
  188. /package/dist/{zip-export-QO4iLIi7.d.ts → zip-export-D_5HAvFz.d.ts} +0 -0
  189. /package/dist/{zip-reader-D1105idz.d.ts → zip-reader-DSEXt7K6.d.ts} +0 -0
@@ -0,0 +1,52 @@
1
+ import { r as DepthPoint } from "./ar-types-Dan1MVTi.js";
2
+ import { Matrix4, Quaternion, Vector3 } from "gps-plus-slam-js";
3
+
4
+ //#region ../src/ar/depth-unprojection.d.ts
5
+ /**
6
+ * A sample-scoped unprojector: the camera pose and (inverse) projection are
7
+ * computed once, then reused for every point in the same `DepthSample`. See
8
+ * {@link createDepthUnprojector}.
9
+ */
10
+ interface DepthUnprojector {
11
+ /**
12
+ * Unproject one point into raw WebXR space, or `null` when the input is not
13
+ * usable (non-positive/non-finite depth, out-of-range screen coordinates,
14
+ * degenerate ray).
15
+ */
16
+ unproject(point: DepthPoint): Vector3 | null;
17
+ }
18
+ /**
19
+ * Build a {@link DepthUnprojector} for one depth sample. The projection
20
+ * inverse and camera quaternion/position are sample-invariant, so they are
21
+ * computed once here instead of per point (the per-point hot path then only
22
+ * does the cheap NDC→view→world transform). Callers that fold many points
23
+ * from the same sample — e.g. `OccupancyGrid.addSample` — should build the
24
+ * unprojector once and reuse it for all points.
25
+ *
26
+ * @param cameraPos - camera position, raw WebXR (`DepthSample.cameraPos`)
27
+ * @param cameraRot - camera quaternion [x,y,z,w], raw WebXR (`DepthSample.cameraRot`)
28
+ * @param projectionMatrix - column-major projection matrix of the capturing
29
+ * view (`DepthSample.projectionMatrix`). `undefined` for recordings made
30
+ * before intrinsics capture — those points cannot be unprojected.
31
+ * @returns an unprojector, or `null` when the sample cannot be unprojected at
32
+ * all (missing or singular projection matrix).
33
+ */
34
+ declare function createDepthUnprojector(cameraPos: Vector3, cameraRot: Quaternion, projectionMatrix: Matrix4 | undefined): DepthUnprojector | null;
35
+ /**
36
+ * Unproject a single depth point into raw WebXR space. Convenience wrapper
37
+ * over {@link createDepthUnprojector} for one-off callers; when unprojecting
38
+ * many points from the same sample, build the unprojector once instead.
39
+ *
40
+ * @param point - normalized view coordinates + depth in meters
41
+ * @param cameraPos - camera position, raw WebXR (`DepthSample.cameraPos`)
42
+ * @param cameraRot - camera quaternion [x,y,z,w], raw WebXR (`DepthSample.cameraRot`)
43
+ * @param projectionMatrix - column-major projection matrix of the capturing
44
+ * view (`DepthSample.projectionMatrix`). `undefined` for recordings made
45
+ * before intrinsics capture — those points cannot be unprojected.
46
+ * @returns the 3D point in raw WebXR space, or `null` when the input is not
47
+ * usable (missing/singular matrix, non-positive or non-finite depth,
48
+ * out-of-range screen coordinates).
49
+ */
50
+ declare function unprojectDepthPoint(point: DepthPoint, cameraPos: Vector3, cameraRot: Quaternion, projectionMatrix: Matrix4 | undefined): Vector3 | null;
51
+ //#endregion
52
+ export { createDepthUnprojector as n, unprojectDepthPoint as r, DepthUnprojector as t };
@@ -0,0 +1,95 @@
1
+ import { t as ArCrashIsolationOptions } from "./recording-options-DJBXuMxV.js";
2
+ import { n as RawDeviceOrientation, t as GpsPosition } from "./gps-VuezJWK3.js";
3
+ import { n as PermissionStatus } from "./permission-checker-GpAiSCwd.js";
4
+ import { t as SessionFeatureOptions } from "./webxr-session-DtAG9srK.js";
5
+
6
+ //#region ../src/ar/enable-gps-ar.d.ts
7
+ /**
8
+ * Lifecycle status of the controller. The app maps these onto its button:
9
+ * - `checking` — support probe in flight (initial / after `refreshSupport`)
10
+ * - `unsupported`— WebXR immersive-ar is unavailable; button stays disabled
11
+ * - `ready` — supported and idle; button is the live "Enable GPS AR" CTA
12
+ * - `starting` — in-gesture orchestration in flight (button shows progress)
13
+ * - `running` — AR session started; button reflects the durable end state
14
+ * - `stopping` — teardown in flight (watches stopping, session ending)
15
+ * - `error` — orchestration failed; button reverts to a retryable CTA
16
+ */
17
+ type EnableGpsArStatus = 'checking' | 'unsupported' | 'ready' | 'starting' | 'running' | 'stopping' | 'error';
18
+ /** Observable controller state. */
19
+ interface EnableGpsArState {
20
+ readonly status: EnableGpsArStatus;
21
+ /** Human-readable failure reason when `status === 'error'`. */
22
+ readonly error?: string;
23
+ }
24
+ /** Per-`enable()` configuration. */
25
+ interface EnableGpsArConfig {
26
+ /** DOM element hosting the AR canvas / dom-overlay (passed to `initAR`). */
27
+ container: HTMLElement;
28
+ /**
29
+ * Opt-in to the depth ("3D map") permission probe. Default `false` — the
30
+ * minimal default set is WebXR + geolocation + orientation only.
31
+ */
32
+ requestDepth?: boolean;
33
+ /**
34
+ * Forward `requestHitTest` to `initAR` so the session requests the WebXR
35
+ * `hit-test` feature (the minimal AR example needs this for its reticle).
36
+ */
37
+ requestHitTest?: boolean;
38
+ /** Crash-isolation diagnostic flags forwarded verbatim to `initAR`. */
39
+ isolationOptions?: Partial<ArCrashIsolationOptions>;
40
+ /** Receives every GPS fix from the started watch. */
41
+ onGpsPosition?: (position: GpsPosition) => void;
42
+ /** Receives every device-orientation sample from the started watch. */
43
+ onOrientation?: (orientation: RawDeviceOrientation) => void;
44
+ }
45
+ /** Result of a single `enable()` attempt. */
46
+ interface EnableGpsArResult {
47
+ readonly ok: boolean;
48
+ /** Failure reason when `ok === false`. */
49
+ readonly error?: string;
50
+ }
51
+ /** Injectable collaborators (default to the real framework functions). */
52
+ interface EnableGpsArDeps {
53
+ isWebXRSupported: () => Promise<boolean>;
54
+ requestGeolocationPermission: () => Promise<PermissionStatus>;
55
+ requestOrientationPermission: () => Promise<PermissionStatus>;
56
+ requestWebXRWithDepthPermission: () => Promise<PermissionStatus>;
57
+ startGpsWatch: (onPosition: (position: GpsPosition) => void, onError?: (error: GeolocationPositionError) => void) => void;
58
+ startOrientationWatch: (onOrientation: (orientation: RawDeviceOrientation) => void) => void;
59
+ initAR: (container: HTMLElement, isolationOptions?: Partial<ArCrashIsolationOptions>, sessionFeatures?: SessionFeatureOptions) => Promise<void>;
60
+ stopGpsWatch: () => void;
61
+ stopOrientationWatch: () => void;
62
+ endARSession: () => Promise<void>;
63
+ }
64
+ /** Public controller surface the app drives from its button. */
65
+ interface EnableGpsArController {
66
+ /** Current observable state (button derives its label/disabled from this). */
67
+ getState: () => EnableGpsArState;
68
+ /** Subscribe to state changes; returns an unsubscribe function. */
69
+ subscribe: (listener: (state: EnableGpsArState) => void) => () => void;
70
+ /**
71
+ * Probe WebXR support and move `checking → ready | unsupported`. Call once on
72
+ * boot (and optionally on resume). No-op effect on permissions.
73
+ */
74
+ refreshSupport: () => Promise<void>;
75
+ /**
76
+ * In-gesture orchestration: request the configured permissions, start the
77
+ * sensor watches and `initAR`. Must be called synchronously from a user
78
+ * gesture so the permission prompts are allowed. Idempotent while
79
+ * `starting`/`running`/`stopping`.
80
+ */
81
+ enable: (config: EnableGpsArConfig) => Promise<EnableGpsArResult>;
82
+ /**
83
+ * Tear down the running AR session: stop sensor watches, end the WebXR
84
+ * session, and transition `running → stopping → ready` so the user can
85
+ * re-enter AR. No-op when not `running`.
86
+ */
87
+ disable: () => Promise<void>;
88
+ }
89
+ /**
90
+ * Create an "Enable GPS AR" controller. Pass partial `deps` in tests to inject
91
+ * fakes; production callers use the defaults.
92
+ */
93
+ declare function createEnableGpsArController(deps?: Partial<EnableGpsArDeps>): EnableGpsArController;
94
+ //#endregion
95
+ export { EnableGpsArState as a, EnableGpsArResult as i, EnableGpsArController as n, EnableGpsArStatus as o, EnableGpsArDeps as r, createEnableGpsArController as s, EnableGpsArConfig as t };
@@ -1,4 +1,4 @@
1
- import { n as SessionMetadata } from "./opfs-storage-DOPkzgeT.js";
1
+ import { n as SessionMetadata } from "./opfs-storage-DYm8WHq7.js";
2
2
 
3
3
  //#region ../src/storage/file-system.d.ts
4
4
  /**
@@ -0,0 +1,54 @@
1
+ import { i as LatLongAlt, r as LatLong } from "./index-CF05QV2m.js";
2
+ import * as THREE from "three";
3
+
4
+ //#region ../src/visualization/frame-conversions.d.ts
5
+ /**
6
+ * Convert a GPS-world NUE point into the AR-local position to write into a
7
+ * direct child of `arWorldGroup`, given the current alignment matrix.
8
+ *
9
+ * Computes `alignment⁻¹ · nue`. When the result is later composed back by the
10
+ * group's matrix (the same `alignment`), the child's WORLD position equals
11
+ * `nue` exactly.
12
+ *
13
+ * @param alignment - The alignment matrix as a 16-element **column-major**
14
+ * array (AR-odometry NUE → GPS-world NUE), e.g. from `getAlignmentMatrix()`
15
+ * or `THREE.Matrix4.toArray()`. Not mutated.
16
+ * @param nue - The GPS-world NUE point `[north, up, east]` in metres. Not
17
+ * mutated.
18
+ * @param out - Optional target vector to write into and return (pass a reused
19
+ * scratch to avoid allocation on hot paths). Defaults to a fresh
20
+ * `THREE.Vector3`.
21
+ * @returns `out`, set to the AR-local position.
22
+ */
23
+ declare function nueToArLocal(alignment: readonly number[], nue: readonly [number, number, number], out?: THREE.Vector3): THREE.Vector3;
24
+ /**
25
+ * Convert an object's **GPS-world NUE world position** back into a GPS
26
+ * coordinate, for the GPS-anchor bootstrap that medians where an object was
27
+ * actually placed (mirrors the C# `DetermineAndStoreGpsWorldPose`, which
28
+ * medians the object's world pose and converts via `zero.CalcGpsCoordsOf`).
29
+ *
30
+ * Precondition: `worldNue` must already be in GPS-world NUE — i.e. the object
31
+ * lives under an `arWorldGroup` whose `.matrix` carries the alignment (see
32
+ * `enableArWorldGroupAlignment`), so `object3D.getWorldPosition()` is the
33
+ * GPS-world position. Sampling a pure-VIO (identity-`arWorldGroup`) world
34
+ * position would yield a wrong GPS coordinate.
35
+ *
36
+ * Altitude round-trip: `calcGpsCoords` returns only `lat`/`lon` (it derives
37
+ * them from the North/East axes and ignores Up). The Up axis (`worldNue.y`,
38
+ * NUE index 1) is carried through verbatim as `altitude`, so a later
39
+ * `calcRelativeCoordsInMeters(zero, result, result.altitude, 0)` reproduces the
40
+ * same Up value — keeping the steady-state vertical target consistent with
41
+ * where the object was sampled.
42
+ *
43
+ * @param worldNue - The object's world position in GPS-world NUE metres
44
+ * (`x = North`, `y = Up`, `z = East`). A `THREE.Vector3` satisfies this.
45
+ * @param zero - The GPS zero reference (origin for the conversion).
46
+ * @returns The GPS coordinate of `worldNue`, with `altitude = worldNue.y`.
47
+ */
48
+ declare function worldNueToGps(worldNue: {
49
+ readonly x: number;
50
+ readonly y: number;
51
+ readonly z: number;
52
+ }, zero: LatLong): LatLongAlt;
53
+ //#endregion
54
+ export { worldNueToGps as n, nueToArLocal as t };
@@ -30,6 +30,11 @@ declare function registerFrameUpdate(fn: FrameUpdate): () => void;
30
30
  * same frame are deferred to the next tick. Iterating the live `Set`
31
31
  * would otherwise skip a not-yet-visited entry that an earlier handler
32
32
  * unregistered — a hard-to-debug source of non-determinism.
33
+ *
34
+ * Each callback is invoked in its own `try/catch` so a throwing handler is
35
+ * isolated: it cannot abort the remaining callbacks nor propagate up through
36
+ * `onXRFrame` and kill the scene render for the whole frame. Failures are
37
+ * logged and the loop continues — mirrored by `runXrFrameUpdates`.
33
38
  */
34
39
  declare function runFrameUpdates(dt: number, elapsed: number): void;
35
40
  /**
@@ -1,4 +1,4 @@
1
- import { t as GpsCoord } from "./geo-types-CTuF23gG.js";
1
+ import { t as GpsCoord } from "./geo-types-SaPnIEUM.js";
2
2
  import { LatLong, Matrix4, Vector3, fusedGpsFromOdom } from "gps-plus-slam-js";
3
3
 
4
4
  //#region ../src/utils/fused-path.d.ts
@@ -1,2 +1,2 @@
1
- import { a as gpsToH3, i as findNearbyGeoAnchor, n as KnownGeoAnchor, o as h3CellsMatch, r as approxDistanceMetres, s as isH3Index, t as H3_RESOLUTION } from "../h3-proximity-BhfgNbdW.js";
1
+ import { a as gpsToH3, i as findNearbyGeoAnchor, n as KnownGeoAnchor, o as h3CellsMatch, r as approxDistanceMetres, s as isH3Index, t as H3_RESOLUTION } from "../h3-proximity-I1msGPgE.js";
2
2
  export { H3_RESOLUTION, KnownGeoAnchor, approxDistanceMetres, findNearbyGeoAnchor, gpsToH3, h3CellsMatch, isH3Index };
@@ -1,2 +1,2 @@
1
- import { a as gpsToH3, i as findNearbyGeoAnchor, n as KnownGeoAnchor, o as h3CellsMatch, r as approxDistanceMetres, s as isH3Index, t as H3_RESOLUTION } from "../h3-proximity-BhfgNbdW.js";
1
+ import { a as gpsToH3, i as findNearbyGeoAnchor, n as KnownGeoAnchor, o as h3CellsMatch, r as approxDistanceMetres, s as isH3Index, t as H3_RESOLUTION } from "../h3-proximity-I1msGPgE.js";
2
2
  export { H3_RESOLUTION, type KnownGeoAnchor, approxDistanceMetres, findNearbyGeoAnchor, gpsToH3, h3CellsMatch, isH3Index };
@@ -1,4 +1,4 @@
1
- import { i as LatLongAlt, r as LatLong } from "./index-gzWJMVpo.js";
1
+ import { i as LatLongAlt, r as LatLong } from "./index-CF05QV2m.js";
2
2
  import * as THREE from "three";
3
3
 
4
4
  //#region ../src/visualization/gps-anchor.d.ts
@@ -21,6 +21,17 @@ interface GpsAnchorOptions {
21
21
  readonly getGpsZeroRef: () => LatLong | null;
22
22
  /** Returns the current GPS reading at "now", or null when no fix yet. */
23
23
  readonly getCurrentGpsPoint: () => GpsAnchorSamplePoint | null;
24
+ /**
25
+ * Optional callback invoked whenever the bootstrap median is committed (the
26
+ * anchor's GPS reference is (re)assigned). Receives the exact committed point
27
+ * — the same value assigned to `gpsPoint`. Fires once after the initial
28
+ * bootstrap and again after every re-bootstrap (`markMovedExternally` →
29
+ * re-accumulate → commit). Never fires when `skipBootstrap` is true (there is
30
+ * no bootstrap to complete). Lets a host persist the committed reference (e.g.
31
+ * AnchorStarter writing `?show=`) so the persisted link equals the committed
32
+ * reference by construction.
33
+ */
34
+ readonly onBootstrapComplete?: (gpsPoint: LatLong | LatLongAlt) => void;
24
35
  readonly mode?: GpsAnchorMode;
25
36
  readonly floorY?: () => number | null;
26
37
  readonly distanceThreshold?: number;
@@ -1,4 +1,4 @@
1
- import { t as ARPose } from "./ar-types-Ck8LEq8k.js";
1
+ import { t as ARPose } from "./ar-types-Dan1MVTi.js";
2
2
  import { Quaternion, Vector3 } from "gps-plus-slam-js";
3
3
 
4
4
  //#region ../src/state/gps-ar-pose-sampler.d.ts
@@ -1,6 +1,6 @@
1
- import { t as ARPose } from "./ar-types-Ck8LEq8k.js";
2
- import { n as RawDeviceOrientation, t as GpsPosition } from "./gps-DXoQb9Kf.js";
3
- import { i as SlamAppStore } from "./create-slam-app-store-CNsZ3rcX.js";
1
+ import { t as ARPose } from "./ar-types-Dan1MVTi.js";
2
+ import { n as RawDeviceOrientation, t as GpsPosition } from "./gps-VuezJWK3.js";
3
+ import { i as SlamAppStore } from "./create-slam-app-store-qNXQ-tq5.js";
4
4
  import { Quaternion, RawGpsPoint, RecordGpsEventPayload, Vector3, eulerToQuaternion } from "gps-plus-slam-js";
5
5
  import { ReducersMapObject } from "@reduxjs/toolkit";
6
6
 
@@ -0,0 +1,45 @@
1
+ import { Mesh, Object3D } from "three";
2
+
3
+ //#region ../src/visualization/hit-test-reticle.d.ts
4
+ /** A column-major 4x4 transform, as produced by `XRPose.transform.matrix`. */
5
+ type HitMatrix = Float32Array | number[];
6
+ /**
7
+ * Build the reticle mesh: a thin ring oriented flat (rotated to lie in the
8
+ * XZ plane) so it reads as a marker on the ground/wall.
9
+ *
10
+ * `matrixAutoUpdate` is disabled because the reticle's world transform is
11
+ * written wholesale from the hit-test pose every frame; letting Three.js
12
+ * recompose it from position/quaternion/scale would discard that pose.
13
+ *
14
+ * The mesh starts hidden (`visible = false`) — there is no surface yet.
15
+ */
16
+ declare function createReticleMesh(): Mesh;
17
+ /**
18
+ * Apply the latest hit-test pose to the reticle.
19
+ *
20
+ * - When `matrix` is a 16-element transform, the reticle adopts it (after the
21
+ * WebXR→NUE basis change, see below) and becomes visible.
22
+ * - When `matrix` is `null` (no surface under the screen centre, or the
23
+ * hit-test source is not ready yet), the reticle is hidden.
24
+ *
25
+ * Frame handling — the part a porting developer must not get wrong. The
26
+ * hit-test pose is expressed in the **WebXR reference space** (`X=East, Y=Up,
27
+ * Z=South`), the same frame as the live camera pose. The reticle, however, is
28
+ * parented under `getArWorldGroup()`, whose local space is **NUE** (`X=North,
29
+ * Y=Up, Z=East`) — the camera reaches that frame through the static
30
+ * `basisChangeNode` that holds `WEBXR_TO_NUE`. The reticle has no such
31
+ * intermediate node, so we apply the same basis change here:
32
+ * `reticle.matrix = WEBXR_TO_NUE · hitPose`. The reticle's resulting world pose
33
+ * is then `arWorldGroup.matrix · WEBXR_TO_NUE · hitPose` — identical to the
34
+ * transform chain the camera rides, so it stays pinned under the screen centre.
35
+ *
36
+ * Without the basis change the WebXR coordinates were interpreted as NUE: the
37
+ * Up axis matched (both are Y) but East/North were swapped, so the reticle
38
+ * drifted sideways instead of tracking the screen centre.
39
+ *
40
+ * Works on any `Object3D` (not just the mesh from `createReticleMesh`) so it can
41
+ * be unit tested without a WebGL context.
42
+ */
43
+ declare function updateReticle(reticle: Object3D, matrix: HitMatrix | null): void;
44
+ //#endregion
45
+ export { createReticleMesh as n, updateReticle as r, HitMatrix as t };
@@ -1,4 +1,4 @@
1
- import { a as WebXRQuaternion, o as WebXRVec3, t as ARPose } from "./ar-types-Ck8LEq8k.js";
1
+ import { o as WebXRQuaternion, s as WebXRVec3, t as ARPose } from "./ar-types-Dan1MVTi.js";
2
2
 
3
3
  //#region ../src/ar/image-capture.d.ts
4
4
  /**
@@ -20,13 +20,26 @@ interface ImageCaptureConfig {
20
20
  * If a capture promise doesn't resolve within this duration, the flag is
21
21
  * force-reset to prevent permanent pipeline deadlock. */
22
22
  captureTimeoutMs: number;
23
+ /** Resolution divisor for the captured frame: 1 = full native resolution,
24
+ * 2 = half, 4 = quarter (default: 1). Consumed by the blit pipeline in
25
+ * `startImageCapture`, not by ImageCaptureManager's timing loop. Folded
26
+ * into this config so the whole user options section can flow through the
27
+ * capture seam as one object (see the field-drop audit, F3). */
28
+ resolutionDivisor: number;
23
29
  }
24
30
  /**
25
31
  * Default capture configuration
26
32
  */
27
33
  declare const DEFAULT_CAPTURE_CONFIG: ImageCaptureConfig;
28
34
  /**
29
- * Data returned when an image is captured
35
+ * Data returned when an image is captured.
36
+ *
37
+ * NOTE: every persistable field here is forwarded into the `add2dImage`
38
+ * action by the RecorderApp's `handleImageCaptured`, which rebuilds the
39
+ * payload field-by-field. A new field added here is therefore NOT persisted
40
+ * until it is threaded through that handler — see
41
+ * `2026-06-12-payload-rebuild-field-drop-audit.md` (F1/F2) and the forwarding
42
+ * test in `main.occupancy-cubes-wiring.test.ts`.
30
43
  */
31
44
  interface CapturedImage {
32
45
  /** The captured image as a Blob */
@@ -0,0 +1,37 @@
1
+ import { L as CombinedRootState, h as TrackingQualityReport } from "./create-slam-app-store-qNXQ-tq5.js";
2
+ import { Add2dImagePayload, GpsPoint as GpsPoint$1, LatLong as LatLong$1, RawDeviceOrientation, RawGpsPoint as RawGpsPoint$1, RecordGpsEventPayload as RecordGpsEventPayload$1, add2dImage, calcRelativeCoordsInMeters, recordGpsEvent as recordGpsEvent$1, setZeroPos as setZeroPos$1 } from "gps-plus-slam-js";
3
+
4
+ //#region ../src/state/onboarding-guidance.d.ts
5
+ /**
6
+ * Coaching phase derived from the tracking-quality `state`. Ordered from
7
+ * "no signal yet" to "ready to place an anchor". The order matters: it is
8
+ * the basis for the monotonic {@link OnboardingGuidance.percentReady}.
9
+ */
10
+ type OnboardingPhase = 'initializing' | 'ar-lost' | 'move-around' | 'almost-ready' | 'ready';
11
+ interface OnboardingGuidance {
12
+ /** Coaching phase — maps 1:1 onto the tracking-quality state (+ null). */
13
+ phase: OnboardingPhase;
14
+ /**
15
+ * 0..1 readiness for placing an anchor. Monotonic across phases
16
+ * (`initializing` = `ar-lost` ≤ `move-around` ≤ `almost-ready` ≤ `ready`)
17
+ * and, within `move-around`, monotonic in `subScores.coverage`; within
18
+ * `almost-ready`, monotonic in `confidence`.
19
+ */
20
+ percentReady: number;
21
+ /** Short, user-facing coaching line. */
22
+ hint: string;
23
+ }
24
+ /**
25
+ * Map a tracking-quality report (or `null` when none has been produced yet)
26
+ * to a single onboarding instruction. Never throws; a `null` or malformed
27
+ * report degrades to the `initializing` phase.
28
+ */
29
+ declare function computeOnboardingGuidance(report: TrackingQualityReport | null): OnboardingGuidance;
30
+ /**
31
+ * Store-bound convenience wrapper: read the current tracking-quality report
32
+ * and map it to onboarding guidance. Returns the `initializing` guidance
33
+ * when no report exists yet.
34
+ */
35
+ declare function selectOnboardingGuidance(state: CombinedRootState): OnboardingGuidance;
36
+ //#endregion
37
+ export { RawGpsPoint$1 as a, calcRelativeCoordsInMeters as c, OnboardingGuidance as d, OnboardingPhase as f, RawDeviceOrientation as i, recordGpsEvent$1 as l, selectOnboardingGuidance as m, GpsPoint$1 as n, RecordGpsEventPayload$1 as o, computeOnboardingGuidance as p, LatLong$1 as r, add2dImage as s, Add2dImagePayload as t, setZeroPos$1 as u };
package/dist/index.d.ts CHANGED
@@ -1,59 +1,68 @@
1
- import { i as computeCaptureSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "./camera-blit-capture-C1V9I1Z6.js";
2
- 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-JKb1ST8E.js";
3
- import { n as applyChromiumProjectionLayerWorkaround, t as ChromiumProjectionLayerWorkaroundResult } from "./chromium-camera-access-workaround-NvChXsi8.js";
4
- import { a as WebXRQuaternion, i as DepthSample, n as ArPoseTuples, o as WebXRVec3, r as DepthPoint, t as ARPose } from "./ar-types-Ck8LEq8k.js";
5
- import { i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "./depth-sampler-xg8vna6c.js";
6
- import { r as registerFrameUpdate, t as FrameUpdate } from "./frame-loop-QJIxLin0.js";
7
- import { a as ImageCaptureManager, i as ImageCaptureConfig, n as DEFAULT_CAPTURE_CONFIG, o as MIN_VALID_IMAGE_BYTES, r as ImageCaptureCallbacks, t as CapturedImage } from "./image-capture-DZLxHDN9.js";
8
- import { n as createCameraFollower, t as CameraFollower } from "./camera-follower-1k8mnw5J.js";
9
- import { n as createAlignmentLerper, t as AlignmentLerper } from "./alignment-lerper-L1RbWHQ4.js";
10
- import { n as createCss3dRendererManager, t as Css3dRendererManager } from "./css3d-renderer-manager-CkjCb2HW.js";
11
- 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-DpAGcAKY.js";
12
- import { t as SCENE_NODE } from "./scene-node-names-6LBjPmwz.js";
13
- import { a as TrackingSliceState, c as poseLost, d as selectLastRestartedPayload, f as selectLastSensorOrientation, g as trackingReducer, h as selectTrackingPhase, i as TrackingPhase, l as poseReceived, m as selectLostFrameCount, n as PoseReceivedPayload, o as clearLastRestartedPayload, p as selectLastValidPose, s as originReset, u as resetTracking } from "./tracking-slice-utCNND8t.js";
14
- import { _ as validateRecordingOptions, a as IMAGE_CONSTRAINTS, c as RecordingOptionsInput, d as loadRecordingOptions, f as resetRecordingOptions, g as validateImageOptions, h as validateDepthOptions, i as DepthCaptureOptions, l as STORAGE_KEY, n as DEFAULT_RECORDING_OPTIONS, o as ImageCaptureOptions, p as saveRecordingOptions, r as DEPTH_CONSTRAINTS, u as cloneRecordingOptions } from "./recording-options-Dq6IsKAv.js";
15
- import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "./xr-camera-texture-BU5YvKAM.js";
16
- import { A as setTrackingCallbacks, D as setFrameCallback, E as setDepthCaptureCallback, F as startDepthCapture, I as startImageCapture, L as stopDepthCapture, N as setTrackingStore, O as setImageCaptureCallback, R as stopImageCapture, _ as initAR, a as endARSession, f as getDepthSampleCount, j as setTrackingLostCallback, m as getLiveCss3dManager, p as getImageCaptureFrameCount } from "./webxr-session-DB5cIZnN.js";
17
- import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "./xr-error-handler-CDY5QxGb.js";
18
- import { a as gpsToH3, i as findNearbyGeoAnchor, n as KnownGeoAnchor, o as h3CellsMatch, r as approxDistanceMetres, s as isH3Index, t as H3_RESOLUTION } from "./h3-proximity-BhfgNbdW.js";
19
- import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "./gps-DXoQb9Kf.js";
20
- import { a as getGpsErrorMessage, i as createGpsErrorHandler, n as GPS_ERROR_MESSAGES, r as GPS_ERROR_MESSAGE_UNKNOWN, t as GPS_ERROR_CODES } from "./gps-error-handler-Dg3ziRVY.js";
21
- import { a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission$1, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "./permission-checker-DPJl_RU6.js";
22
- import { a as createLogger, c as setGlobalLogLevel, i as clearLogBuffer, l as subscribeToLogs, n as LogLevel, o as getGlobalLogLevel, r as Logger, s as getLogBuffer, t as LogEntry } from "./logger-C9vugiQb.js";
23
- import { n as RawGpsSample, r as RefPointMarker, t as GpsCoord } from "./geo-types-CTuF23gG.js";
24
- import { n as computeFusedPath, r as fusedGpsFromOdom, t as FusedPathInput } from "./fused-path-CB4DwWOG.js";
25
- import { n as FailureTrackerConfig, r as createFailureTracker, t as FailureTracker } from "./failure-tracker-DnHXOIRa.js";
26
- import { t as mapWithConcurrencyLimit } from "./concurrency-CMw8pSaG.js";
27
- import { t as formatFileSize } from "./format-file-size-BTS5H62-.js";
28
- import { t as listFormatter } from "./list-formatter-CNqi-E2j.js";
29
- import { a as recordWriteFailure, i as recordDepthSample, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "./recording-slice-d6OtCrza.js";
30
- import { a as getAppRootHandle, c as initOpfsStorage, d as resetSessionHandles, i as createSession, l as listSessions, o as getSessionHandle, r as checkStorageQuota, s as getSessionsRootHandle, u as resetOpfsStorage } from "./opfs-storage-DOPkzgeT.js";
31
- import { n as StorageBackend, t as CreateSessionResult } from "./storage-backend-CT0Il_AB.js";
32
- import { A as resetTrackingQuality, C as computeResidualConsensus, D as firstAgreementReached, F as snapshotsTrimmed, I as trackingQualityReducer, M as selectRecentAlignments, N as selectTrackingQuality, O as matrixDelta, P as snapshotPushed, S as computeGpsVsFusedDivergence, T as createTrackingQualityListenerMiddleware, _ as TrackingQualityState, a as SlamAppStoreOptions, b as computeCoverage, d as DEFAULT_TRACKING_QUALITY_OPTIONS, g as TrackingQualitySliceState, h as TrackingQualityReport, i as SlamAppStore, j as selectFirstAgreementObservationIndex, k as reportUpdated, m as TrackingQualityOptions, n as SlamAppMiddleware, o as createSlamAppStore, r as SlamAppRootState, s as AlignmentSnapshot, t as SlamAppCombinedState, v as computeCompassAgreement, w as computeTrackingQualityReport, x as computeGpsAccuracy, y as computeConvergence } from "./create-slam-app-store-CNsZ3rcX.js";
33
- import { a as eulerToQuaternion, c as getLastDeviceOrientation, i as createGpsPositionHandler, l as resetCoordinatorState, n as buildRawGpsPoint, o as extractOdomPosition, r as buildRecordGpsEventPayload, s as extractOdomRotation, t as RecordingCoordinatorConfig, u as updateDeviceOrientation } from "./gps-event-coordinator-DBx9I1YX.js";
34
- import { a as ZipActionEntry, d as loadSessionMetadataFromBlob, f as readZipEntries, i as RecordedAction, l as loadGpsPathFromBlob, n as GpsPathCoord, r as MAX_ACTION_FILE_SIZE, s as loadActionsFromZip } from "./zip-reader-D1105idz.js";
35
- import { n as replayRecording } from "./recording-replayer-CmCIIZ02.js";
36
- import { a as ReplayAction, c as computeInterActionDelay, i as ProgressCallback, l as extractActionTimestamp, n as DEFAULT_MAX_DELAY_MS, o as ReplayEngine, r as ErrorCallback, s as ReplayState, t as CompleteCallback } from "./replay-engine-BGBRQyXs.js";
37
- import { n as MapDataInput, r as buildMapData, t as MapData } from "./map-data-sih4g64v.js";
38
- import { t as SubscribableStore } from "./subscribe-to-selector-DIHm3BRZ.js";
39
- import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "./store-subscribers-Dce_CoJF.js";
40
- import { add2dImage, calcRelativeCoordsInMeters, recordGpsEvent, setZeroPos } from "./state/index.js";
41
- import { t as NullStorageBackend } from "./null-storage-backend-BKOS7JpL.js";
42
- import { t as OpfsStorageBackend } from "./opfs-storage-backend-Cj_7PWoq.js";
43
- import { c as resetForNewSession, d as startSession$1, f as verifyWriteAccess, l as resetStorageState, m as writeFrame, n as WriteAccessResult, o as initStorage, p as writeAction } from "./file-system-DTApEv_Q.js";
44
- import { n as formatFrameFilename, r as formatTimestamp, t as formatActionFilename } from "./file-system-utils-CtKiiw27.js";
45
- import { a as downloadZip, c as syncToExternalZip, i as ZipExportResult, n as ZipContributorAddFile, o as exportAndDownloadSession, r as ZipExportContributor, s as exportSessionAsZip, t as ExportSessionAsZipOptions } from "./zip-export-QO4iLIi7.js";
46
- import { i as createGpsCompassCubes, n as COMPASS_CUBE_SIZE, r as GpsCompassCubes, t as COMPASS_CUBE_DISTANCE } from "./gps-compass-cubes-CsLtFv4B.js";
47
- import { i as isSphereInCameraFrustum, n as isObjectInCameraFrustum, r as isPointInCameraFrustum, t as buildCameraFrustum } from "./frustum-visibility-BHnFrSKQ.js";
48
- import { t as nueToArLocal } from "./index-pOjUCKEP.js";
49
- import { a as GpsAnchorSamplePoint, i as GpsAnchorPhase, n as GpsAnchorMode, o as createGpsAnchor, r as GpsAnchorOptions, t as GpsAnchor } from "./gps-anchor-CnWY61XK.js";
50
- import { n as GpsEventVisualizer, r as gpsEventVisualizer } from "./gps-event-markers-BGr-iLvi.js";
51
- import { a as DEFAULT_Z_OFFSET, n as DEFAULT_LEAFLET_MAP_SIZE_PX, o as LeafletMapOverlay, r as DEFAULT_WORLD_SIZE, s as LeafletMapOverlayOptions } from "./leaflet-map-overlay-Cew7XAoO.js";
52
- import { n as clampedAlpha, t as DEFAULT_LERP_RATE } from "./lerp-utils-B8MM8zCR.js";
53
- import { a as addAccuracyCircles, i as AccuracyCircleSample, n as ACCURACY_CIRCLE_STROKE_OPACITY, r as ACCURACY_CIRCLE_WEIGHT, t as ACCURACY_CIRCLE_FILL_OPACITY } from "./accuracy-circles-CsxE_7x1.js";
54
- import { a as MAP_PATH_POLYLINE_OPACITY, c as USER_POSITION_COLOR, i as FUSED_PATH_COLOR, l as drawMapData, n as DrawMapDataOptions, o as MAP_PATH_POLYLINE_WEIGHT, r as DrawnMapData, s as RAW_GPS_COLOR, t as ALIGNMENT_SNAPSHOT_COLOR } from "./map-overlay-draw-B3R1c9Xp.js";
55
- import { a as MapOverlayOptions, c as tileXYToLatLon, i as MapOverlay, n as DEFAULT_MAP_SIZE, o as TextureLoaderInterface, r as DEFAULT_ZOOM, s as latLonToTileXY, t as DEFAULT_HEIGHT_OFFSET } from "./map-overlay-DAmreyA3.js";
56
- import { n as disposeMeshArray, r as disposeObject3D, t as DisposeOptions } from "./three-dispose-C2drkp6f.js";
57
- import { t as VIS_COLORS } from "./vis-colors-CHQhjal3.js";
1
+ import { r as bresenham3d, t as GridCell } from "./bresenham3d-CFfd7n6B.js";
2
+ import { i as computeCaptureSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "./camera-blit-capture-D5_mNhla.js";
3
+ import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "./capability-checker-CQXJHxXg.js";
4
+ 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-CUeU3L_M.js";
5
+ 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-Jqbn0apH.js";
6
+ import { a as RgbTuple, i as DepthSample, n as ArPoseTuples, o as WebXRQuaternion, r as DepthPoint, s as WebXRVec3, t as ARPose } from "./ar-types-Dan1MVTi.js";
7
+ import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "./depth-sampler-Bhanfwla.js";
8
+ import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "./depth-unprojection-Y6i_mJuT.js";
9
+ import { _ as validateRecordingOptions, a as IMAGE_CONSTRAINTS, c as RecordingOptionsInput, d as loadRecordingOptions, f as resetRecordingOptions, g as validateImageOptions, h as validateDepthOptions, i as DepthCaptureOptions, l as STORAGE_KEY, n as DEFAULT_RECORDING_OPTIONS, o as ImageCaptureOptions, p as saveRecordingOptions, r as DEPTH_CONSTRAINTS, u as cloneRecordingOptions } from "./recording-options-DJBXuMxV.js";
10
+ import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "./gps-VuezJWK3.js";
11
+ import { a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission$1, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "./permission-checker-GpAiSCwd.js";
12
+ import { a as ImageCaptureManager, i as ImageCaptureConfig, n as DEFAULT_CAPTURE_CONFIG, o as MIN_VALID_IMAGE_BYTES, r as ImageCaptureCallbacks, t as CapturedImage } from "./image-capture-DZ4HFRgS.js";
13
+ import { a as TrackingSliceState, c as poseLost, d as selectLastRestartedPayload, f as selectLastSensorOrientation, g as trackingReducer, h as selectTrackingPhase, i as TrackingPhase, l as poseReceived, m as selectLostFrameCount, n as PoseReceivedPayload, o as clearLastRestartedPayload, p as selectLastValidPose, s as originReset, u as resetTracking } from "./tracking-slice-CdK8c-8P.js";
14
+ import { n as createCss3dRendererManager, t as Css3dRendererManager } from "./css3d-renderer-manager-ptu_t3B3.js";
15
+ import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "./xr-camera-texture-DBwCaKTd.js";
16
+ import { D as setDepthCaptureCallback, I as startDepthCapture, L as startImageCapture, M as setTrackingLostCallback, O as setFrameCallback, P as setTrackingStore, R as stopDepthCapture, d as getCamera, f as getCurrentArPose, g as getScene, h as getLiveCss3dManager, j as setTrackingCallbacks, k as setImageCaptureCallback, m as getImageCaptureFrameCount, o as endARSession, p as getDepthSampleCount, t as SessionFeatureOptions, u as getArWorldGroup, v as initAR, z as stopImageCapture } from "./webxr-session-DtAG9srK.js";
17
+ 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-CapmADVN.js";
18
+ import { r as registerFrameUpdate, t as FrameUpdate } from "./frame-loop-CMewS8cY.js";
19
+ import { n as OccupancyGridOptions, t as OccupancyGrid } from "./occupancy-grid-BRNRaPyT.js";
20
+ import { i as registerXrFrameUpdate, n as XrFrameUpdate, t as XrFrameContext } from "./xr-frame-loop-BtYytZJg.js";
21
+ import { n as createCameraFollower, t as CameraFollower } from "./camera-follower-C2mwEn7c.js";
22
+ import { n as createAlignmentLerper, t as AlignmentLerper } from "./alignment-lerper-Dm9G7JJO.js";
23
+ 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-Bw58VL6p.js";
24
+ import { t as SCENE_NODE } from "./scene-node-names-Bu0S66H1.js";
25
+ import { t as WEBXR_TO_NUE } from "./webxr-nue-basis-CqKQmZzT.js";
26
+ import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "./xr-error-handler-C0AQRmxs.js";
27
+ import { a as gpsToH3, i as findNearbyGeoAnchor, n as KnownGeoAnchor, o as h3CellsMatch, r as approxDistanceMetres, s as isH3Index, t as H3_RESOLUTION } from "./h3-proximity-I1msGPgE.js";
28
+ import { a as getGpsErrorMessage, i as createGpsErrorHandler, n as GPS_ERROR_MESSAGES, r as GPS_ERROR_MESSAGE_UNKNOWN, t as GPS_ERROR_CODES } from "./gps-error-handler-CJl_2MVm.js";
29
+ import { a as createLogger, c as setGlobalLogLevel, i as clearLogBuffer, l as subscribeToLogs, n as LogLevel, o as getGlobalLogLevel, r as Logger, s as getLogBuffer, t as LogEntry } from "./logger-BEHXsnnq.js";
30
+ import { n as RawGpsSample, r as RefPointMarker, t as GpsCoord } from "./geo-types-SaPnIEUM.js";
31
+ import { n as computeFusedPath, r as fusedGpsFromOdom, t as FusedPathInput } from "./fused-path-DJoVu98b.js";
32
+ import { n as FailureTrackerConfig, r as createFailureTracker, t as FailureTracker } from "./failure-tracker-Cn8Fo9D4.js";
33
+ import { t as mapWithConcurrencyLimit } from "./concurrency-CO1FQvs3.js";
34
+ import { t as formatFileSize } from "./format-file-size-CLCZz3lC.js";
35
+ import { t as listFormatter } from "./list-formatter-RRcBe8Vg.js";
36
+ import { a as recordWriteFailure, i as recordDepthSample, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "./recording-slice-89O07ebs.js";
37
+ import { a as getAppRootHandle, c as initOpfsStorage, d as resetSessionHandles, i as createSession, l as listSessions, o as getSessionHandle, r as checkStorageQuota, s as getSessionsRootHandle, u as resetOpfsStorage } from "./opfs-storage-DYm8WHq7.js";
38
+ import { n as StorageBackend, t as CreateSessionResult } from "./storage-backend-C9HLFtgz.js";
39
+ import { A as resetTrackingQuality, C as computeResidualConsensus, D as firstAgreementReached, F as snapshotsTrimmed, I as trackingQualityReducer, M as selectRecentAlignments, N as selectTrackingQuality, O as matrixDelta, P as snapshotPushed, S as computeGpsVsFusedDivergence, T as createTrackingQualityListenerMiddleware, _ as TrackingQualityState, a as SlamAppStoreOptions, b as computeCoverage, d as DEFAULT_TRACKING_QUALITY_OPTIONS, g as TrackingQualitySliceState, h as TrackingQualityReport, i as SlamAppStore, j as selectFirstAgreementObservationIndex, k as reportUpdated, m as TrackingQualityOptions, n as SlamAppMiddleware, o as createSlamAppStore, r as SlamAppRootState, s as AlignmentSnapshot, t as SlamAppCombinedState, v as computeCompassAgreement, w as computeTrackingQualityReport, x as computeGpsAccuracy, y as computeConvergence } from "./create-slam-app-store-qNXQ-tq5.js";
40
+ import { a as eulerToQuaternion, c as getLastDeviceOrientation, i as createGpsPositionHandler, l as resetCoordinatorState, n as buildRawGpsPoint, o as extractOdomPosition, r as buildRecordGpsEventPayload, s as extractOdomRotation, t as RecordingCoordinatorConfig, u as updateDeviceOrientation } from "./gps-event-coordinator-BDIQde2x.js";
41
+ import { a as ZipActionEntry, d as loadSessionMetadataFromBlob, f as readZipEntries, i as RecordedAction, l as loadGpsPathFromBlob, n as GpsPathCoord, r as MAX_ACTION_FILE_SIZE, s as loadActionsFromZip } from "./zip-reader-DSEXt7K6.js";
42
+ import { n as replayRecording } from "./recording-replayer-BL-x-7k0.js";
43
+ import { a as ReplayAction, c as computeInterActionDelay, i as ProgressCallback, l as extractActionTimestamp, n as DEFAULT_MAX_DELAY_MS, o as ReplayEngine, r as ErrorCallback, s as ReplayState, t as CompleteCallback } from "./replay-engine-BRqszuQ9.js";
44
+ import { n as MapDataInput, r as buildMapData, t as MapData } from "./map-data-CkloBxIl.js";
45
+ import { t as SubscribableStore } from "./subscribe-to-selector-CP3BKSbF.js";
46
+ import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "./store-subscribers-rrkLkFTt.js";
47
+ import { c as calcRelativeCoordsInMeters, d as OnboardingGuidance, f as OnboardingPhase, l as recordGpsEvent, m as selectOnboardingGuidance, p as computeOnboardingGuidance, s as add2dImage, u as setZeroPos } from "./index-KJq2amHF.js";
48
+ import { t as NullStorageBackend } from "./null-storage-backend-CxEjZHRW.js";
49
+ import { t as OpfsStorageBackend } from "./opfs-storage-backend-CjSAuqg_.js";
50
+ import { c as resetForNewSession, d as startSession$1, f as verifyWriteAccess, l as resetStorageState, m as writeFrame, n as WriteAccessResult, o as initStorage, p as writeAction } from "./file-system-C_eqiEA8.js";
51
+ import { n as formatFrameFilename, r as formatTimestamp, t as formatActionFilename } from "./file-system-utils-DyAmcuvX.js";
52
+ import { a as downloadZip, c as syncToExternalZip, i as ZipExportResult, n as ZipContributorAddFile, o as exportAndDownloadSession, r as ZipExportContributor, s as exportSessionAsZip, t as ExportSessionAsZipOptions } from "./zip-export-D_5HAvFz.js";
53
+ import { n as ArWorldGroupAlignmentOptions, r as enableArWorldGroupAlignment, t as ArWorldGroupAlignmentHandle } from "./ar-world-group-alignment-ColHB_5A.js";
54
+ import { i as createGpsCompassCubes, n as COMPASS_CUBE_SIZE, r as GpsCompassCubes, t as COMPASS_CUBE_DISTANCE } from "./gps-compass-cubes-BM1uGiYV.js";
55
+ import { i as isSphereInCameraFrustum, n as isObjectInCameraFrustum, r as isPointInCameraFrustum, t as buildCameraFrustum } from "./frustum-visibility-CmI96ESS.js";
56
+ import { n as worldNueToGps, t as nueToArLocal } from "./frame-conversions-BfsafGWR.js";
57
+ import { n as createReticleMesh, r as updateReticle, t as HitMatrix } from "./hit-test-reticle-BEzEybxZ.js";
58
+ import { a as GpsAnchorSamplePoint, i as GpsAnchorPhase, n as GpsAnchorMode, o as createGpsAnchor, r as GpsAnchorOptions, t as GpsAnchor } from "./gps-anchor-dYeCvvp5.js";
59
+ import { n as GpsEventVisualizer, r as gpsEventVisualizer } from "./gps-event-markers-Dc9FT-q1.js";
60
+ import { a as DEFAULT_Z_OFFSET, n as DEFAULT_LEAFLET_MAP_SIZE_PX, o as LeafletMapOverlay, r as DEFAULT_WORLD_SIZE, s as LeafletMapOverlayOptions } from "./leaflet-map-overlay-6CJC-E1l.js";
61
+ import { n as clampedAlpha, t as DEFAULT_LERP_RATE } from "./lerp-utils-BpV-0Dtk.js";
62
+ import { a as addAccuracyCircles, i as AccuracyCircleSample, n as ACCURACY_CIRCLE_STROKE_OPACITY, r as ACCURACY_CIRCLE_WEIGHT, t as ACCURACY_CIRCLE_FILL_OPACITY } from "./accuracy-circles-BpwWAs8G.js";
63
+ import { a as MAP_PATH_POLYLINE_OPACITY, c as USER_POSITION_COLOR, i as FUSED_PATH_COLOR, l as drawMapData, n as DrawMapDataOptions, o as MAP_PATH_POLYLINE_WEIGHT, r as DrawnMapData, s as RAW_GPS_COLOR, t as ALIGNMENT_SNAPSHOT_COLOR } from "./map-overlay-draw-krOKwDAq.js";
64
+ import { a as MapOverlayOptions, c as tileXYToLatLon, i as MapOverlay, n as DEFAULT_MAP_SIZE, o as TextureLoaderInterface, r as DEFAULT_ZOOM, s as latLonToTileXY, t as DEFAULT_HEIGHT_OFFSET } from "./map-overlay-bcogY5fK.js";
65
+ import { n as disposeMeshArray, r as disposeObject3D, t as DisposeOptions } from "./three-dispose-D950t71B.js";
66
+ import { t as VIS_COLORS } from "./vis-colors-D6omC64K.js";
58
67
  import { COMMUNITY_LICENSE_KEY } from "./licensing/index.js";
59
- export { ACCURACY_CIRCLE_FILL_OPACITY, ACCURACY_CIRCLE_STROKE_OPACITY, ACCURACY_CIRCLE_WEIGHT, ALIGNMENT_SNAPSHOT_COLOR, ARPose, AccuracyCircleSample, AlignmentLerper, type AlignmentSnapshot, ArPoseTuples, CAPTURE_FAILURE_WARNING, COMMUNITY_LICENSE_KEY, COMPASS_CUBE_DISTANCE, COMPASS_CUBE_SIZE, CameraBlitCapture, CameraBlitCaptureConfig, CameraFollower, CameraMode, CameraTextureResult, CaptureFailureTracker, CaptureFailureTrackerConfig, CapturedImage, ChromiumProjectionLayerWorkaroundResult, type CompleteCallback, type CreateSessionResult, Css3dRendererManager, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_HEIGHT_OFFSET, DEFAULT_LEAFLET_MAP_SIZE_PX, DEFAULT_LERP_RATE, DEFAULT_MAP_SIZE, DEFAULT_MAX_DELAY_MS, DEFAULT_RECORDING_OPTIONS, DEFAULT_TRACKING_QUALITY_OPTIONS, DEFAULT_WORLD_SIZE, DEFAULT_ZOOM, DEFAULT_Z_OFFSET, DEPTH_CONSTRAINTS, type DepthCaptureOptions, DepthInfo, DepthPoint, DepthSample, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, DisposeOptions, DrawMapDataOptions, DrawnMapData, type ErrorCallback, type ExportSessionAsZipOptions, FUSED_PATH_COLOR, FailureTracker, FailureTrackerConfig, FrameUpdate, FusedPathInput, GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, GpsAnchor, GpsAnchorMode, GpsAnchorOptions, GpsAnchorPhase, GpsAnchorSamplePoint, GpsCompassCubes, GpsCoord, GpsEventVisualizer, type GpsPathCoord, GpsPosition, H3_RESOLUTION, IMAGE_CONSTRAINTS, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, type ImageCaptureOptions, KnownGeoAnchor, LeafletMapOverlay, LeafletMapOverlayOptions, LogEntry, LogLevel, Logger, MAP_PATH_POLYLINE_OPACITY, MAP_PATH_POLYLINE_WEIGHT, MAX_ACTION_FILE_SIZE, MIN_VALID_IMAGE_BYTES, MapData, MapDataInput, MapOverlay, MapOverlayOptions, NullStorageBackend, OpfsStorageBackend, PermissionCheckResult, PermissionStatus, type PoseReceivedPayload, type ProgressCallback, RAW_GPS_COLOR, RawDeviceOrientation, RawGpsSample, type RecordedAction, type RecordingCoordinatorConfig, type RecordingOptionsInput, type RecordingState, RefPointMarker, RendererLike, type ReplayAction, ReplayEngine, ReplaySceneState, type ReplayState, SCENE_NODE, STORAGE_KEY, type SlamAppCombinedState, type SlamAppMiddleware, type SlamAppRootState, type SlamAppStore, type SlamAppStoreOptions, type StorageBackend, type StoreSubscriberDeps, type SubscribableStore, TextureLoaderInterface, type TrackingPhase, type TrackingQualityOptions, type TrackingQualityReport, type TrackingQualitySliceState, type TrackingQualityState, type TrackingSliceState, USER_POSITION_COLOR, VIS_COLORS, WebXRQuaternion, WebXRVec3, type WriteAccessResult, XRCameraLike, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, type ZipActionEntry, type ZipContributorAddFile, type ZipExportContributor, type ZipExportResult, acquireCameraTexture, add2dImage, addAccuracyCircles, applyChromiumProjectionLayerWorkaround, approxDistanceMetres, buildCameraFrustum, buildMapData, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkStorageQuota, checkWebXRSupport, clampedAlpha, clearLastRestartedPayload, clearLogBuffer, cloneRecordingOptions, computeCaptureSize, computeCompassAgreement, computeConvergence, computeCoverage, computeFusedPath, computeGpsAccuracy, computeGpsVsFusedDivergence, computeInterActionDelay, computeResidualConsensus, computeTrackingQualityReport, createAlignmentLerper, createCameraFollower, createCaptureFailureTracker, createCss3dRendererManager, createFailureTracker, createGpsAnchor, createGpsCompassCubes, createGpsErrorHandler, createGpsPositionHandler, createLogger, createSession, createSlamAppStore, createTrackingQualityListenerMiddleware, disposeMeshArray, disposeObject3D, disposeReplayScene, downloadZip, drawMapData, endARSession, endSession, eulerToQuaternion, exportAndDownloadSession, exportSessionAsZip, extractActionTimestamp, extractOdomPosition, extractOdomRotation, findNearbyGeoAnchor, firstAgreementReached, formatActionFilename, formatFileSize, formatFrameFilename, formatTimestamp, fusedGpsFromOdom, getAlignmentLerper, getAppRootHandle, getCameraFollower, getCameraMode, getDepthSampleCount, getGlobalLogLevel, getGpsErrorMessage, getImageCaptureFrameCount, getLastDeviceOrientation, getLiveCss3dManager, getLogBuffer, getReplayState, getSessionHandle, getSessionsRootHandle, getXrErrorMessage, gpsEventVisualizer, gpsToH3, h3CellsMatch, initAR, initOpfsStorage, initReplayScene, initStorage, isH3Index, isObjectInCameraFrustum, isPointInCameraFrustum, isSphereInCameraFrustum, latLonToTileXY, listFormatter, listSessions, loadActionsFromZip, loadGpsPathFromBlob, loadRecordingOptions, loadSessionMetadataFromBlob, mapWithConcurrencyLimit, matrixDelta, nueToArLocal, originReset, poseLost, poseReceived, readZipEntries, recordDepthSample, recordGpsEvent, recordWriteFailure, recordingReducer, registerFrameUpdate, replayRecording, reportUpdated, requestAllPermissions, requestCameraPermission, requestOrientationPermission as requestDeviceOrientationPermission, requestGeolocationPermission, requestOrientationPermission$1 as requestOrientationPermission, requestWebXRWithDepthPermission, resetCoordinatorState, resetFileSystemState, resetForNewSession, resetOpfsStorage, resetRecordingOptions, resetSessionHandles, resetStorageState, resetTracking, resetTrackingQuality, saveRecordingOptions, selectFirstAgreementObservationIndex, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLostFrameCount, selectRecentAlignments, selectTrackingPhase, selectTrackingQuality, setDepthCaptureCallback, setFileSystemState, setFrameCallback, setGlobalLogLevel, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, setZeroPos, snapshotPushed, snapshotsTrimmed, startDepthCapture, startGpsWatch, startImageCapture, startOrientationWatch, startSession, startSession$1 as startStorageSession, stopDepthCapture, stopGpsWatch, stopImageCapture, stopOrientationWatch, subscribeToLogs, syncToExternalZip, tileXYToLatLon, toggleCameraMode, trackingQualityReducer, trackingReducer, updateDeviceOrientation, updateOrbitTarget, validateDepthOptions, validateImageOptions, validateRecordingOptions, verifyWriteAccess, wireStoreSubscribers, writeAction, writeFrame };
68
+ export { ACCURACY_CIRCLE_FILL_OPACITY, ACCURACY_CIRCLE_STROKE_OPACITY, ACCURACY_CIRCLE_WEIGHT, ALIGNMENT_SNAPSHOT_COLOR, ARPose, AccuracyCircleSample, AlignmentLerper, type AlignmentSnapshot, ArPoseTuples, ArWorldGroupAlignmentHandle, ArWorldGroupAlignmentOptions, BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, CAPTURE_FAILURE_WARNING, COMMUNITY_LICENSE_KEY, COMPASS_CUBE_DISTANCE, COMPASS_CUBE_SIZE, CameraBlitCapture, CameraBlitCaptureConfig, CameraFollower, CameraMode, CameraTextureResult, CapabilityMessageOptions, CapabilitySupport, CaptureFailureTracker, CaptureFailureTrackerConfig, CapturedImage, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, type CompleteCallback, type CreateSessionResult, Css3dRendererManager, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_HEIGHT_OFFSET, DEFAULT_LEAFLET_MAP_SIZE_PX, DEFAULT_LERP_RATE, DEFAULT_MAP_SIZE, DEFAULT_MAX_DELAY_MS, DEFAULT_RECORDING_OPTIONS, DEFAULT_TRACKING_QUALITY_OPTIONS, DEFAULT_WORLD_SIZE, DEFAULT_ZOOM, DEFAULT_Z_OFFSET, DEPTH_CONSTRAINTS, type DepthCaptureOptions, DepthInfo, DepthPoint, DepthSample, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, DepthUnprojector, DisposeOptions, DrawMapDataOptions, DrawnMapData, EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, type ErrorCallback, type ExportSessionAsZipOptions, FUSED_PATH_COLOR, FailureTracker, FailureTrackerConfig, FrameUpdate, FusedPathInput, GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, GpsAnchor, GpsAnchorMode, GpsAnchorOptions, GpsAnchorPhase, GpsAnchorSamplePoint, GpsCompassCubes, GpsCoord, GpsEventVisualizer, type GpsPathCoord, GpsPosition, GridCell, H3_RESOLUTION, HitMatrix, IMAGE_CONSTRAINTS, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, type ImageCaptureOptions, KnownGeoAnchor, LeafletMapOverlay, LeafletMapOverlayOptions, LogEntry, LogLevel, Logger, MAP_PATH_POLYLINE_OPACITY, MAP_PATH_POLYLINE_WEIGHT, MAX_ACTION_FILE_SIZE, MIN_VALID_IMAGE_BYTES, MapData, MapDataInput, MapOverlay, MapOverlayOptions, NullStorageBackend, OccupancyGrid, OccupancyGridOptions, type OnboardingGuidance, type OnboardingPhase, OpfsStorageBackend, PermissionCheckResult, PermissionStatus, type PoseReceivedPayload, type ProgressCallback, RAW_GPS_COLOR, RawDeviceOrientation, RawGpsSample, type RecordedAction, type RecordingCoordinatorConfig, type RecordingOptionsInput, type RecordingState, RefPointMarker, RendererLike, type ReplayAction, ReplayEngine, ReplaySceneState, type ReplayState, RgbTuple, SCENE_NODE, STORAGE_KEY, SessionFeatureOptions, type SlamAppCombinedState, type SlamAppMiddleware, type SlamAppRootState, type SlamAppStore, type SlamAppStoreOptions, type StorageBackend, type StoreSubscriberDeps, type SubscribableStore, TextureLoaderInterface, type TrackingPhase, type TrackingQualityOptions, type TrackingQualityReport, type TrackingQualitySliceState, type TrackingQualityState, type TrackingSliceState, USER_POSITION_COLOR, VIS_COLORS, WEBXR_TO_NUE, WebXRQuaternion, WebXRVec3, type WriteAccessResult, XRCameraLike, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, XrFrameContext, XrFrameUpdate, type ZipActionEntry, type ZipContributorAddFile, type ZipExportContributor, type ZipExportResult, acquireCameraTexture, add2dImage, addAccuracyCircles, applyChromiumProjectionLayerWorkaround, approxDistanceMetres, bresenham3d, buildCameraFrustum, buildMapData, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, capabilityMessage, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkStorageQuota, checkWebXRSupport, clampedAlpha, clearLastRestartedPayload, clearLogBuffer, cloneRecordingOptions, computeCaptureSize, computeCompassAgreement, computeConvergence, computeCoverage, computeFusedPath, computeGpsAccuracy, computeGpsVsFusedDivergence, computeInterActionDelay, computeOnboardingGuidance, computeResidualConsensus, computeTrackingQualityReport, createAlignmentLerper, createCameraFollower, createCaptureFailureTracker, createCss3dRendererManager, createDepthUnprojector, createEnableGpsArController, createFailureTracker, createGpsAnchor, createGpsCompassCubes, createGpsErrorHandler, createGpsPositionHandler, createLogger, createReticleMesh, createSession, createSlamAppStore, createTrackingQualityListenerMiddleware, disposeMeshArray, disposeObject3D, disposeReplayScene, downloadZip, drawMapData, enableArWorldGroupAlignment, endARSession, endSession, eulerToQuaternion, exportAndDownloadSession, exportSessionAsZip, extractActionTimestamp, extractOdomPosition, extractOdomRotation, findNearbyGeoAnchor, firstAgreementReached, formatActionFilename, formatFileSize, formatFrameFilename, formatTimestamp, fusedGpsFromOdom, getAlignmentLerper, getAppRootHandle, getArWorldGroup, getCamera, getCameraFollower, getCameraMode, getCurrentArPose, getDepthSampleCount, getGlobalLogLevel, getGpsErrorMessage, getImageCaptureFrameCount, getLastDeviceOrientation, getLiveCss3dManager, getLogBuffer, getReplayState, getScene, getSessionHandle, getSessionsRootHandle, getXrErrorMessage, gpsEventVisualizer, gpsToH3, h3CellsMatch, initAR, initOpfsStorage, initReplayScene, initStorage, isFullySupported, isH3Index, isObjectInCameraFrustum, isPointInCameraFrustum, isSphereInCameraFrustum, latLonToTileXY, listFormatter, listSessions, loadActionsFromZip, loadGpsPathFromBlob, loadRecordingOptions, loadSessionMetadataFromBlob, mapWithConcurrencyLimit, matrixDelta, needsBaseLayerPersistence, nueToArLocal, originReset, parseChromeVersion, poseLost, poseReceived, readZipEntries, recordDepthSample, recordGpsEvent, recordWriteFailure, recordingReducer, registerFrameUpdate, registerXrFrameUpdate, replayRecording, reportUpdated, requestAllPermissions, requestCameraPermission, requestOrientationPermission as requestDeviceOrientationPermission, requestGeolocationPermission, requestOrientationPermission$1 as requestOrientationPermission, requestWebXRWithDepthPermission, resetCoordinatorState, resetFileSystemState, resetForNewSession, resetOpfsStorage, resetRecordingOptions, resetSessionHandles, resetStorageState, resetTracking, resetTrackingQuality, saveRecordingOptions, selectFirstAgreementObservationIndex, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLostFrameCount, selectOnboardingGuidance, selectRecentAlignments, selectTrackingPhase, selectTrackingQuality, setDepthCaptureCallback, setFileSystemState, setFrameCallback, setGlobalLogLevel, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, setZeroPos, snapshotPushed, snapshotsTrimmed, startDepthCapture, startGpsWatch, startImageCapture, startOrientationWatch, startSession, startSession$1 as startStorageSession, stopDepthCapture, stopGpsWatch, stopImageCapture, stopOrientationWatch, subscribeToLogs, syncToExternalZip, tileXYToLatLon, toggleCameraMode, trackingQualityReducer, trackingReducer, unprojectDepthPoint, updateDeviceOrientation, updateOrbitTarget, updateReticle, validateDepthOptions, validateImageOptions, validateRecordingOptions, verifyWriteAccess, wireStoreSubscribers, worldNueToGps, wrapXRDepthInfo, writeAction, writeFrame };