gps-plus-slam-app-framework 1.0.6 → 1.1.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 (198) hide show
  1. package/LICENSE +4 -4
  2. package/README.md +310 -115
  3. package/dist/accuracy-circles-DEKr0Hoh.d.ts +43 -0
  4. package/dist/{app-selectors-CHt7DLuq.d.ts → app-selectors-CR9OWodf.d.ts} +8 -10
  5. package/dist/ar/camera-blit-capture.d.ts +1 -1
  6. package/dist/ar/capability-checker.d.ts +2 -0
  7. package/dist/ar/capability-checker.js +25 -0
  8. package/dist/ar/capture-failure-tracker.d.ts +1 -1
  9. package/dist/ar/chromium-camera-access-workaround.d.ts +2 -2
  10. package/dist/ar/chromium-camera-access-workaround.js +197 -8
  11. package/dist/ar/depth-sampler.d.ts +2 -2
  12. package/dist/ar/enable-gps-ar.d.ts +2 -0
  13. package/dist/ar/enable-gps-ar.js +137 -0
  14. package/dist/ar/frame-loop.d.ts +2 -0
  15. package/dist/ar/frame-loop.js +63 -0
  16. package/dist/ar/image-capture.d.ts +1 -1
  17. package/dist/ar/image-capture.js +1 -1
  18. package/dist/ar/index.d.ts +16 -12
  19. package/dist/ar/index.js +8 -4
  20. package/dist/ar/replay-scene.d.ts +1 -1
  21. package/dist/ar/scene-node-names.d.ts +1 -1
  22. package/dist/ar/webxr-session.d.ts +4 -4
  23. package/dist/ar/webxr-session.js +173 -93
  24. package/dist/ar/xr-camera-texture.d.ts +1 -1
  25. package/dist/ar/xr-error-handler.d.ts +1 -1
  26. package/dist/ar/xr-frame-loop.d.ts +2 -0
  27. package/dist/ar/xr-frame-loop.js +69 -0
  28. package/dist/ar-world-group-alignment-Dn4rQk_c.d.ts +43 -0
  29. package/dist/capability-checker-BTCmZRL4.d.ts +43 -0
  30. package/dist/chromium-camera-access-workaround-MifIwK9x.d.ts +137 -0
  31. package/dist/core/index.d.ts +2 -2
  32. package/dist/core/index.js +2 -2
  33. package/dist/create-slam-app-store-B76AGaI0.d.ts +371 -0
  34. package/dist/{depth-sampler-BNCtnEoP.d.ts → depth-sampler-CqrkRr2N.d.ts} +1 -1
  35. package/dist/enable-gps-ar-DNbO0zbg.d.ts +95 -0
  36. package/dist/{file-system-DD5TczSO.d.ts → file-system-TIsDfamK.d.ts} +32 -2
  37. package/dist/frame-conversions-D2EYjeNa.d.ts +54 -0
  38. package/dist/frame-loop-BTeRpDm4.d.ts +47 -0
  39. package/dist/frustum-visibility-DGnJqls0.d.ts +58 -0
  40. package/dist/{fused-path-DtqCSqJh.d.ts → fused-path-BdVHmDW9.d.ts} +1 -1
  41. package/dist/geo/h3-proximity.d.ts +1 -1
  42. package/dist/geo/index.d.ts +1 -1
  43. package/dist/{geo-types-Xx-LVcnw.d.ts → geo-types-clgzl8b5.d.ts} +16 -1
  44. package/dist/{gps-GKc6_Cly.d.ts → gps-B7AlMPz5.d.ts} +1 -1
  45. package/dist/gps-anchor-CISLPQIb.d.ts +59 -0
  46. package/dist/{gps-ar-pose-sampler-D_Zso40V.d.ts → gps-ar-pose-sampler-BypXZUqC.d.ts} +1 -1
  47. package/dist/{gps-event-coordinator-fwvmVfku.d.ts → gps-event-coordinator-BKVZbS1M.d.ts} +3 -3
  48. package/dist/gps-event-markers-BlHq3jYV.d.ts +103 -0
  49. package/dist/hit-test-reticle-BGXOxrUh.d.ts +45 -0
  50. package/dist/{image-capture-2pKjYUS6.d.ts → image-capture-BXZUmj7j.d.ts} +1 -1
  51. package/dist/index--ldLph4V.d.ts +2 -0
  52. package/dist/index-22v8MXJX.d.ts +23 -0
  53. package/dist/index-BB2KEWbN2.d.ts +37 -0
  54. package/dist/index.d.ts +64 -52
  55. package/dist/index.js +21 -8
  56. package/dist/{leaflet-map-overlay-CQZcnxbc.d.ts → leaflet-map-overlay-jNt-kcUr.d.ts} +22 -11
  57. package/dist/{logger-B81iwxx0.d.ts → logger-BZ44Dhd3.d.ts} +7 -1
  58. package/dist/map-data-BGIBM5rv.d.ts +49 -0
  59. package/dist/map-overlay-draw-DcGs9UV3.d.ts +42 -0
  60. package/dist/{null-storage-backend-C0TiwwzQ.d.ts → null-storage-backend-BPQJSaMw.d.ts} +2 -2
  61. package/dist/{opfs-storage-backend-Gt3rd76D.d.ts → opfs-storage-backend-u4QKvgvP.d.ts} +2 -2
  62. package/dist/{permission-checker-Cu3nbH1S.d.ts → permission-checker-CfV7INCa.d.ts} +41 -1
  63. package/dist/persistence-middleware-xB5sTllJ.d.ts +55 -0
  64. package/dist/{recording-options-BYUFX8iU.d.ts → recording-options-BSFpBSZH.d.ts} +10 -4
  65. package/dist/{recording-replayer-BFhFs7Mc.d.ts → recording-replayer-CTL2cUE0.d.ts} +2 -2
  66. package/dist/{recording-slice-BiktUIWF.d.ts → recording-slice-Cb888P6d.d.ts} +2 -2
  67. package/dist/{replay-engine-B88Va62x.d.ts → replay-engine-B-5GIZtc.d.ts} +1 -1
  68. package/dist/{replay-scene-DtUm6bsr.d.ts → replay-scene-DkNfldPh.d.ts} +3 -3
  69. package/dist/sensors/gps-error-handler.d.ts +1 -1
  70. package/dist/sensors/gps.d.ts +1 -1
  71. package/dist/sensors/gps.js +2 -2
  72. package/dist/sensors/index.d.ts +3 -3
  73. package/dist/sensors/index.js +1 -1
  74. package/dist/sensors/permission-checker.d.ts +2 -2
  75. package/dist/sensors/permission-checker.js +79 -1
  76. package/dist/session-disposers-M-oashRH.js +57 -0
  77. package/dist/state/app-selectors.d.ts +2 -2
  78. package/dist/state/app-selectors.js +33 -3
  79. package/dist/state/combined-root-state.d.ts +2 -0
  80. package/dist/state/combined-root-state.js +1 -0
  81. package/dist/state/create-slam-app-store.d.ts +1 -1
  82. package/dist/state/create-slam-app-store.js +27 -13
  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 -16
  86. package/dist/state/index.js +6 -4
  87. package/dist/state/persistence-middleware.d.ts +2 -2
  88. package/dist/state/persistence-middleware.js +43 -9
  89. package/dist/state/recording-options.d.ts +1 -1
  90. package/dist/state/recording-replayer.d.ts +2 -2
  91. package/dist/state/recording-slice.d.ts +1 -1
  92. package/dist/state/replay-engine.d.ts +1 -1
  93. package/dist/state/store-subscribers.d.ts +2 -2
  94. package/dist/state/store-subscribers.js +38 -12
  95. package/dist/state/subscribe-to-selector.d.ts +1 -1
  96. package/dist/state/tracking-quality.d.ts +2 -0
  97. package/dist/state/tracking-quality.js +723 -0
  98. package/dist/state/tracking-slice.d.ts +2 -0
  99. package/dist/state/tracking-slice.js +147 -0
  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 +2 -2
  103. package/dist/storage/file-system.js +52 -1
  104. package/dist/storage/index.d.ts +8 -8
  105. package/dist/storage/null-storage-backend.d.ts +1 -1
  106. package/dist/storage/opfs-storage-backend.d.ts +1 -1
  107. package/dist/storage/opfs-storage.d.ts +1 -1
  108. package/dist/storage/storage-backend.d.ts +1 -1
  109. package/dist/storage/zip-export.d.ts +1 -1
  110. package/dist/storage/zip-reader.d.ts +1 -1
  111. package/dist/storage/zip-reader.js +8 -4
  112. package/dist/{storage-backend-yVnuWGTr.d.ts → storage-backend-yDSKafAQ.d.ts} +1 -1
  113. package/dist/{store-subscribers-DKKHld49.d.ts → store-subscribers-swlbtg_z.d.ts} +31 -6
  114. package/dist/{subscribe-to-selector-ghDKYtap.d.ts → subscribe-to-selector--KQpgLXG.d.ts} +1 -1
  115. package/dist/test-utils/browser-mocks.d.ts +1 -1
  116. package/dist/test-utils/zip-round-trip-helpers.d.ts +7 -1
  117. package/dist/test-utils/zip-round-trip-helpers.js +2 -1
  118. package/dist/tracking-slice-CDREeoZ_.d.ts +86 -0
  119. package/dist/types/ar-types.d.ts +1 -1
  120. package/dist/types/geo-types.d.ts +2 -2
  121. package/dist/types/index.d.ts +3 -3
  122. package/dist/utils/concurrency.d.ts +1 -1
  123. package/dist/utils/failure-tracker.d.ts +1 -1
  124. package/dist/utils/format-file-size.d.ts +1 -1
  125. package/dist/utils/fused-path.d.ts +1 -1
  126. package/dist/utils/index.d.ts +6 -6
  127. package/dist/utils/list-formatter.d.ts +1 -1
  128. package/dist/utils/logger.d.ts +1 -1
  129. package/dist/utils/logger.js +68 -8
  130. package/dist/visualization/accuracy-circles.d.ts +2 -0
  131. package/dist/visualization/accuracy-circles.js +57 -0
  132. package/dist/visualization/alignment-lerper.d.ts +1 -1
  133. package/dist/visualization/ar-world-group-alignment.d.ts +2 -0
  134. package/dist/visualization/ar-world-group-alignment.js +51 -0
  135. package/dist/visualization/camera-follower.d.ts +1 -1
  136. package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
  137. package/dist/visualization/frame-conversions.d.ts +2 -0
  138. package/dist/visualization/frame-conversions.js +88 -0
  139. package/dist/visualization/frustum-visibility.d.ts +2 -0
  140. package/dist/visualization/frustum-visibility.js +139 -0
  141. package/dist/visualization/gps-anchor.d.ts +2 -0
  142. package/dist/visualization/gps-anchor.js +217 -0
  143. package/dist/visualization/gps-compass-cubes.d.ts +1 -1
  144. package/dist/visualization/gps-event-markers.d.ts +2 -2
  145. package/dist/visualization/gps-event-markers.js +69 -2
  146. package/dist/visualization/hit-test-reticle.d.ts +2 -0
  147. package/dist/visualization/hit-test-reticle.js +81 -0
  148. package/dist/visualization/index.d.ts +19 -12
  149. package/dist/visualization/index.js +9 -2
  150. package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
  151. package/dist/visualization/leaflet-map-overlay.js +33 -79
  152. package/dist/visualization/lerp-utils.d.ts +1 -1
  153. package/dist/visualization/map-data.d.ts +2 -0
  154. package/dist/visualization/map-data.js +33 -0
  155. package/dist/visualization/map-overlay-draw.d.ts +2 -0
  156. package/dist/visualization/map-overlay-draw.js +107 -0
  157. package/dist/visualization/map-overlay.d.ts +1 -1
  158. package/dist/visualization/three-dispose.d.ts +1 -1
  159. package/dist/visualization/vis-colors.d.ts +1 -1
  160. package/dist/webxr-nue-basis-BbdqhqY6.js +54 -0
  161. package/dist/{webxr-session-COlSrXdL.d.ts → webxr-session-BnArFCew.d.ts} +76 -14
  162. package/dist/xr-frame-loop-BKckC7xC.d.ts +70 -0
  163. package/dist/{zip-reader-KgJEXbca.d.ts → zip-reader-B2lzN8F5.d.ts} +5 -0
  164. package/package.json +16 -16
  165. package/dist/ar/tracking-state.d.ts +0 -2
  166. package/dist/ar/tracking-state.js +0 -164
  167. package/dist/chromium-camera-access-workaround-CU5zSKNr.d.ts +0 -61
  168. package/dist/combined-root-state-B3SvPNjU.d.ts +0 -6
  169. package/dist/create-slam-app-store-DBm7g2Zd.d.ts +0 -85
  170. package/dist/gps-anchored-mesh-manager-CovAFK4g.d.ts +0 -56
  171. package/dist/gps-event-markers-sVyO9utS.d.ts +0 -67
  172. package/dist/persistence-middleware-z-75iisb.d.ts +0 -31
  173. package/dist/tracking-state-B9QfuZCg.d.ts +0 -101
  174. package/dist/visualization/gps-anchored-mesh-manager.d.ts +0 -2
  175. package/dist/visualization/gps-anchored-mesh-manager.js +0 -128
  176. /package/dist/{alignment-lerper-D9BeDwZX.d.ts → alignment-lerper-CCZJf-Xb.d.ts} +0 -0
  177. /package/dist/{ar-types-B-ORgk6Z.d.ts → ar-types-isPsQptb.d.ts} +0 -0
  178. /package/dist/{camera-blit-capture-DHuyrrxr.d.ts → camera-blit-capture-75WWa9Xb.d.ts} +0 -0
  179. /package/dist/{camera-follower-BMqPddxx.d.ts → camera-follower-B-nS1sr6.d.ts} +0 -0
  180. /package/dist/{capture-failure-tracker-2Q6oI2uQ.d.ts → capture-failure-tracker-D4HYJNOj.d.ts} +0 -0
  181. /package/dist/{concurrency-p6gB30fT.d.ts → concurrency-Bsmv53qw.d.ts} +0 -0
  182. /package/dist/{css3d-renderer-manager-rgLMVAvd.d.ts → css3d-renderer-manager-EDED3nvg.d.ts} +0 -0
  183. /package/dist/{failure-tracker-1sQ_Cgyw.d.ts → failure-tracker-D7ELffm0.d.ts} +0 -0
  184. /package/dist/{file-system-utils-BH8FdyIu.d.ts → file-system-utils-BH6uIs2i.d.ts} +0 -0
  185. /package/dist/{format-file-size-onGq0k1Q.d.ts → format-file-size-B7gJb3Md.d.ts} +0 -0
  186. /package/dist/{gps-compass-cubes-jRIJMOuh.d.ts → gps-compass-cubes-Ys6Hf1nc.d.ts} +0 -0
  187. /package/dist/{gps-error-handler-CH1S528z.d.ts → gps-error-handler-BLDhUlw5.d.ts} +0 -0
  188. /package/dist/{h3-proximity-GwesPTFT.d.ts → h3-proximity-DJnghtir.d.ts} +0 -0
  189. /package/dist/{lerp-utils-CZgQlrmu.d.ts → lerp-utils-DNcSmKVX.d.ts} +0 -0
  190. /package/dist/{list-formatter-DKQQVLcl.d.ts → list-formatter-CsqcU4v5.d.ts} +0 -0
  191. /package/dist/{map-overlay-C9ifl_4-.d.ts → map-overlay-yrFsUtGv.d.ts} +0 -0
  192. /package/dist/{opfs-storage-Dlq1I_Gb.d.ts → opfs-storage-LsLY6VZV.d.ts} +0 -0
  193. /package/dist/{scene-node-names-DPsaE2z3.d.ts → scene-node-names-IHW7HR4S.d.ts} +0 -0
  194. /package/dist/{three-dispose-qt_r5wR1.d.ts → three-dispose-WTBAfaWU.d.ts} +0 -0
  195. /package/dist/{vis-colors-BKkdTIKb.d.ts → vis-colors-Djnyg_UH.d.ts} +0 -0
  196. /package/dist/{xr-camera-texture-BbukNE79.d.ts → xr-camera-texture-BU5YvKAM.d.ts} +0 -0
  197. /package/dist/{xr-error-handler-DTHfmvrl.d.ts → xr-error-handler-DcUFshNF.d.ts} +0 -0
  198. /package/dist/{zip-export-BjrQPv0X.d.ts → zip-export-C0_ErAqT.d.ts} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,53 +1,65 @@
1
- import { i as computeCaptureSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "./camera-blit-capture-DHuyrrxr.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-2Q6oI2uQ.js";
3
- import { n as applyChromiumProjectionLayerWorkaround, t as ChromiumProjectionLayerWorkaroundResult } from "./chromium-camera-access-workaround-CU5zSKNr.js";
4
- import { a as WebXRQuaternion, i as DepthSample, n as ArPoseTuples, o as WebXRVec3, r as DepthPoint, t as ARPose } from "./ar-types-B-ORgk6Z.js";
5
- import { i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "./depth-sampler-BNCtnEoP.js";
6
- 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-2pKjYUS6.js";
7
- import { n as createCameraFollower, t as CameraFollower } from "./camera-follower-BMqPddxx.js";
8
- import { n as createAlignmentLerper, t as AlignmentLerper } from "./alignment-lerper-D9BeDwZX.js";
9
- import { n as createCss3dRendererManager, t as Css3dRendererManager } from "./css3d-renderer-manager-rgLMVAvd.js";
10
- 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-DtUm6bsr.js";
11
- import { t as SCENE_NODE } from "./scene-node-names-DPsaE2z3.js";
12
- import { a as TrackingStateManager, i as TrackingStateCallbacks, r as TrackingState, t as DeviceOrientation } from "./tracking-state-B9QfuZCg.js";
13
- 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-BYUFX8iU.js";
14
- import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "./xr-camera-texture-BbukNE79.js";
15
- import { A as setTrackingLostCallback, D as setImageCaptureCallback, E as setFrameCallback, F as stopDepthCapture, I as stopImageCapture, N as startDepthCapture, P as startImageCapture, T as setDepthCaptureCallback, d as getDepthSampleCount, f as getImageCaptureFrameCount, g as initAR, i as endARSession, k as setTrackingCallbacks, p as getLiveCss3dManager } from "./webxr-session-COlSrXdL.js";
16
- import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "./xr-error-handler-DTHfmvrl.js";
17
- 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-GwesPTFT.js";
18
- import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "./gps-GKc6_Cly.js";
19
- 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-CH1S528z.js";
20
- import { a as checkFileSystemPermission, c as checkWebXRSupport, d as requestGeolocationPermission, f as requestOrientationPermission$1, h as setFileSystemState, i as checkCameraPermission, l as requestAllPermissions, m as resetFileSystemState, n as PermissionStatus, o as checkGeolocationPermission, p as requestWebXRWithDepthPermission, r as checkAllPermissions, s as checkOrientationPermission, t as PermissionCheckResult, u as requestCameraPermission } from "./permission-checker-Cu3nbH1S.js";
21
- 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-B81iwxx0.js";
22
- import { n as RefPointMarker, t as GpsCoord } from "./geo-types-Xx-LVcnw.js";
23
- import { n as computeFusedPath, r as fusedGpsFromOdom, t as FusedPathInput } from "./fused-path-DtqCSqJh.js";
24
- import { n as FailureTrackerConfig, r as createFailureTracker, t as FailureTracker } from "./failure-tracker-1sQ_Cgyw.js";
25
- import { t as mapWithConcurrencyLimit } from "./concurrency-p6gB30fT.js";
26
- import { t as formatFileSize } from "./format-file-size-onGq0k1Q.js";
27
- import { t as listFormatter } from "./list-formatter-DKQQVLcl.js";
28
- import { a as recordWriteFailure, i as recordDepthSample, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "./recording-slice-BiktUIWF.js";
29
- 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-Dlq1I_Gb.js";
30
- import { n as StorageBackend, t as CreateSessionResult } from "./storage-backend-yVnuWGTr.js";
31
- import { a as SlamAppStoreOptions, i as SlamAppStore, n as SlamAppMiddleware, o as createSlamAppStore, r as SlamAppRootState, t as SlamAppCombinedState } from "./create-slam-app-store-DBm7g2Zd.js";
32
- 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-fwvmVfku.js";
33
- 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-KgJEXbca.js";
34
- import { n as replayRecording } from "./recording-replayer-BFhFs7Mc.js";
35
- 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-B88Va62x.js";
36
- import { t as SubscribableStore } from "./subscribe-to-selector-ghDKYtap.js";
37
- import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "./store-subscribers-DKKHld49.js";
38
- import { add2dImage, calcRelativeCoordsInMeters, markReferencePoint, recordGpsEvent, setZeroPos } from "./state/index.js";
39
- import { t as NullStorageBackend } from "./null-storage-backend-C0TiwwzQ.js";
40
- import { t as OpfsStorageBackend } from "./opfs-storage-backend-Gt3rd76D.js";
41
- import { d as writeAction, f as writeFrame, i as initStorage, l as startSession$1, o as resetForNewSession, s as resetStorageState, t as WriteAccessResult, u as verifyWriteAccess } from "./file-system-DD5TczSO.js";
42
- import { n as formatFrameFilename, r as formatTimestamp, t as formatActionFilename } from "./file-system-utils-BH8FdyIu.js";
43
- 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-BjrQPv0X.js";
44
- import { i as createGpsCompassCubes, n as COMPASS_CUBE_SIZE, r as GpsCompassCubes, t as COMPASS_CUBE_DISTANCE } from "./gps-compass-cubes-jRIJMOuh.js";
45
- import { n as gpsEventVisualizer, t as GpsEventVisualizer } from "./gps-event-markers-sVyO9utS.js";
46
- 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-CQZcnxbc.js";
47
- import { n as clampedAlpha, t as DEFAULT_LERP_RATE } from "./lerp-utils-CZgQlrmu.js";
48
- 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-C9ifl_4-.js";
49
- import { n as GpsAnchoredMeshManager, r as GpsAnchoredMeshManagerOptions, t as GpsAnchoredItem } from "./gps-anchored-mesh-manager-CovAFK4g.js";
50
- import { n as disposeMeshArray, r as disposeObject3D, t as DisposeOptions } from "./three-dispose-qt_r5wR1.js";
51
- import { t as VIS_COLORS } from "./vis-colors-BKkdTIKb.js";
1
+ import { i as computeCaptureSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "./camera-blit-capture-75WWa9Xb.js";
2
+ import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "./capability-checker-BTCmZRL4.js";
3
+ 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-D4HYJNOj.js";
4
+ 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-MifIwK9x.js";
5
+ import { a as WebXRQuaternion, i as DepthSample, n as ArPoseTuples, o as WebXRVec3, r as DepthPoint, t as ARPose } from "./ar-types-isPsQptb.js";
6
+ import { i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "./depth-sampler-CqrkRr2N.js";
7
+ 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-BSFpBSZH.js";
8
+ import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "./gps-B7AlMPz5.js";
9
+ 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-CfV7INCa.js";
10
+ 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-BXZUmj7j.js";
11
+ 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-CDREeoZ_.js";
12
+ import { n as createCss3dRendererManager, t as Css3dRendererManager } from "./css3d-renderer-manager-EDED3nvg.js";
13
+ import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "./xr-camera-texture-BU5YvKAM.js";
14
+ 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-BnArFCew.js";
15
+ 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-DNbO0zbg.js";
16
+ import { r as registerFrameUpdate, t as FrameUpdate } from "./frame-loop-BTeRpDm4.js";
17
+ import { i as registerXrFrameUpdate, n as XrFrameUpdate, t as XrFrameContext } from "./xr-frame-loop-BKckC7xC.js";
18
+ import { n as createCameraFollower, t as CameraFollower } from "./camera-follower-B-nS1sr6.js";
19
+ import { n as createAlignmentLerper, t as AlignmentLerper } from "./alignment-lerper-CCZJf-Xb.js";
20
+ 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-DkNfldPh.js";
21
+ import { t as SCENE_NODE } from "./scene-node-names-IHW7HR4S.js";
22
+ import { t as WEBXR_TO_NUE } from "./index-22v8MXJX.js";
23
+ import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "./xr-error-handler-DcUFshNF.js";
24
+ 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-DJnghtir.js";
25
+ 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-BLDhUlw5.js";
26
+ 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-BZ44Dhd3.js";
27
+ import { n as RawGpsSample, r as RefPointMarker, t as GpsCoord } from "./geo-types-clgzl8b5.js";
28
+ import { n as computeFusedPath, r as fusedGpsFromOdom, t as FusedPathInput } from "./fused-path-BdVHmDW9.js";
29
+ import { n as FailureTrackerConfig, r as createFailureTracker, t as FailureTracker } from "./failure-tracker-D7ELffm0.js";
30
+ import { t as mapWithConcurrencyLimit } from "./concurrency-Bsmv53qw.js";
31
+ import { t as formatFileSize } from "./format-file-size-B7gJb3Md.js";
32
+ import { t as listFormatter } from "./list-formatter-CsqcU4v5.js";
33
+ import { a as recordWriteFailure, i as recordDepthSample, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "./recording-slice-Cb888P6d.js";
34
+ 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-LsLY6VZV.js";
35
+ import { n as StorageBackend, t as CreateSessionResult } from "./storage-backend-yDSKafAQ.js";
36
+ 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-B76AGaI0.js";
37
+ 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-BKVZbS1M.js";
38
+ 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-B2lzN8F5.js";
39
+ import { n as replayRecording } from "./recording-replayer-CTL2cUE0.js";
40
+ 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-B-5GIZtc.js";
41
+ import { n as MapDataInput, r as buildMapData, t as MapData } from "./map-data-BGIBM5rv.js";
42
+ import { t as SubscribableStore } from "./subscribe-to-selector--KQpgLXG.js";
43
+ import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "./store-subscribers-swlbtg_z.js";
44
+ 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-BB2KEWbN2.js";
45
+ import { t as NullStorageBackend } from "./null-storage-backend-BPQJSaMw.js";
46
+ import { t as OpfsStorageBackend } from "./opfs-storage-backend-u4QKvgvP.js";
47
+ 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-TIsDfamK.js";
48
+ import { n as formatFrameFilename, r as formatTimestamp, t as formatActionFilename } from "./file-system-utils-BH6uIs2i.js";
49
+ 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-C0_ErAqT.js";
50
+ import { n as ArWorldGroupAlignmentOptions, r as enableArWorldGroupAlignment, t as ArWorldGroupAlignmentHandle } from "./ar-world-group-alignment-Dn4rQk_c.js";
51
+ import { i as createGpsCompassCubes, n as COMPASS_CUBE_SIZE, r as GpsCompassCubes, t as COMPASS_CUBE_DISTANCE } from "./gps-compass-cubes-Ys6Hf1nc.js";
52
+ import { i as isSphereInCameraFrustum, n as isObjectInCameraFrustum, r as isPointInCameraFrustum, t as buildCameraFrustum } from "./frustum-visibility-DGnJqls0.js";
53
+ import { n as worldNueToGps, t as nueToArLocal } from "./frame-conversions-D2EYjeNa.js";
54
+ import { n as createReticleMesh, r as updateReticle, t as HitMatrix } from "./hit-test-reticle-BGXOxrUh.js";
55
+ import { a as GpsAnchorSamplePoint, i as GpsAnchorPhase, n as GpsAnchorMode, o as createGpsAnchor, r as GpsAnchorOptions, t as GpsAnchor } from "./gps-anchor-CISLPQIb.js";
56
+ import { n as GpsEventVisualizer, r as gpsEventVisualizer } from "./gps-event-markers-BlHq3jYV.js";
57
+ 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-jNt-kcUr.js";
58
+ import { n as clampedAlpha, t as DEFAULT_LERP_RATE } from "./lerp-utils-DNcSmKVX.js";
59
+ 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-DEKr0Hoh.js";
60
+ 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-DcGs9UV3.js";
61
+ 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-yrFsUtGv.js";
62
+ import { n as disposeMeshArray, r as disposeObject3D, t as DisposeOptions } from "./three-dispose-WTBAfaWU.js";
63
+ import { t as VIS_COLORS } from "./vis-colors-Djnyg_UH.js";
52
64
  import { COMMUNITY_LICENSE_KEY } from "./licensing/index.js";
53
- export { ARPose, AlignmentLerper, 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_WORLD_SIZE, DEFAULT_ZOOM, DEFAULT_Z_OFFSET, DEPTH_CONSTRAINTS, type DepthCaptureOptions, DepthInfo, DepthPoint, DepthSample, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, DeviceOrientation, DisposeOptions, type ErrorCallback, type ExportSessionAsZipOptions, FailureTracker, FailureTrackerConfig, FusedPathInput, GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, GpsAnchoredItem, GpsAnchoredMeshManager, GpsAnchoredMeshManagerOptions, GpsCompassCubes, GpsCoord, GpsEventVisualizer, type GpsPathCoord, GpsPosition, H3_RESOLUTION, IMAGE_CONSTRAINTS, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, type ImageCaptureOptions, KnownGeoAnchor, LeafletMapOverlay, LeafletMapOverlayOptions, LogEntry, LogLevel, Logger, MAX_ACTION_FILE_SIZE, MIN_VALID_IMAGE_BYTES, MapOverlay, MapOverlayOptions, NullStorageBackend, OpfsStorageBackend, PermissionCheckResult, PermissionStatus, type ProgressCallback, RawDeviceOrientation, 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, TrackingState, TrackingStateCallbacks, TrackingStateManager, VIS_COLORS, WebXRQuaternion, WebXRVec3, type WriteAccessResult, XRCameraLike, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, type ZipActionEntry, type ZipContributorAddFile, type ZipExportContributor, type ZipExportResult, acquireCameraTexture, add2dImage, applyChromiumProjectionLayerWorkaround, approxDistanceMetres, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkStorageQuota, checkWebXRSupport, clampedAlpha, clearLogBuffer, cloneRecordingOptions, computeCaptureSize, computeFusedPath, computeInterActionDelay, createAlignmentLerper, createCameraFollower, createCaptureFailureTracker, createCss3dRendererManager, createFailureTracker, createGpsCompassCubes, createGpsErrorHandler, createGpsPositionHandler, createLogger, createSession, createSlamAppStore, disposeMeshArray, disposeObject3D, disposeReplayScene, downloadZip, endARSession, endSession, eulerToQuaternion, exportAndDownloadSession, exportSessionAsZip, extractActionTimestamp, extractOdomPosition, extractOdomRotation, findNearbyGeoAnchor, 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, latLonToTileXY, listFormatter, listSessions, loadActionsFromZip, loadGpsPathFromBlob, loadRecordingOptions, loadSessionMetadataFromBlob, mapWithConcurrencyLimit, markReferencePoint, readZipEntries, recordDepthSample, recordGpsEvent, recordWriteFailure, recordingReducer, replayRecording, requestAllPermissions, requestCameraPermission, requestOrientationPermission as requestDeviceOrientationPermission, requestGeolocationPermission, requestOrientationPermission$1 as requestOrientationPermission, requestWebXRWithDepthPermission, resetCoordinatorState, resetFileSystemState, resetForNewSession, resetOpfsStorage, resetRecordingOptions, resetSessionHandles, resetStorageState, saveRecordingOptions, setDepthCaptureCallback, setFileSystemState, setFrameCallback, setGlobalLogLevel, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setZeroPos, startDepthCapture, startGpsWatch, startImageCapture, startOrientationWatch, startSession, startSession$1 as startStorageSession, stopDepthCapture, stopGpsWatch, stopImageCapture, stopOrientationWatch, subscribeToLogs, syncToExternalZip, tileXYToLatLon, toggleCameraMode, updateDeviceOrientation, updateOrbitTarget, validateDepthOptions, validateImageOptions, validateRecordingOptions, verifyWriteAccess, wireStoreSubscribers, writeAction, writeFrame };
65
+ 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, 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, 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, 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, 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, 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, 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, updateDeviceOrientation, updateOrbitTarget, updateReticle, validateDepthOptions, validateImageOptions, validateRecordingOptions, verifyWriteAccess, wireStoreSubscribers, worldNueToGps, writeAction, writeFrame };
package/dist/index.js CHANGED
@@ -1,18 +1,25 @@
1
1
  import { LogLevel, clearLogBuffer, createLogger, getGlobalLogLevel, getLogBuffer, setGlobalLogLevel, subscribeToLogs } from "./utils/logger.js";
2
2
  import { disposeMeshArray, disposeObject3D } from "./visualization/three-dispose.js";
3
3
  import { CameraBlitCapture, DEFAULT_BLIT_CONFIG, computeCaptureSize } from "./ar/camera-blit-capture.js";
4
- import { applyChromiumProjectionLayerWorkaround } from "./ar/chromium-camera-access-workaround.js";
4
+ import { capabilityMessage, isFullySupported } from "./ar/capability-checker.js";
5
+ import { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, applyChromiumProjectionLayerWorkaround, needsBaseLayerPersistence, parseChromeVersion } from "./ar/chromium-camera-access-workaround.js";
5
6
  import { createFailureTracker } from "./utils/failure-tracker.js";
6
7
  import { CAPTURE_FAILURE_WARNING, DEFAULT_CAPTURE_TRACKER_CONFIG, createCaptureFailureTracker } from "./ar/capture-failure-tracker.js";
7
8
  import { buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler, eulerToQuaternion, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, resetCoordinatorState, updateDeviceOrientation } from "./state/gps-event-coordinator.js";
8
9
  import { DepthSampler } from "./ar/depth-sampler.js";
10
+ import { registerFrameUpdate } from "./ar/frame-loop.js";
11
+ import { registerXrFrameUpdate } from "./ar/xr-frame-loop.js";
12
+ import { checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkWebXRSupport, requestAllPermissions, requestCameraPermission, requestGeolocationPermission, requestOrientationPermission as requestOrientationPermission$1, requestWebXRWithDepthPermission, resetFileSystemState, setFileSystemState } from "./sensors/permission-checker.js";
13
+ import { requestOrientationPermission, startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch } from "./sensors/gps.js";
14
+ import { t as WEBXR_TO_NUE } from "./webxr-nue-basis-BbdqhqY6.js";
9
15
  import { DEFAULT_CAPTURE_CONFIG, ImageCaptureManager, MIN_VALID_IMAGE_BYTES } from "./ar/image-capture.js";
10
- import { TrackingState, TrackingStateManager } from "./ar/tracking-state.js";
16
+ import { clearLastRestartedPayload, originReset, poseLost, poseReceived, resetTracking, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLostFrameCount, selectTrackingPhase, trackingReducer } from "./state/tracking-slice.js";
11
17
  import { acquireCameraTexture } from "./ar/xr-camera-texture.js";
12
18
  import { DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, IMAGE_CONSTRAINTS, STORAGE_KEY, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateDepthOptions, validateImageOptions, validateRecordingOptions } from "./state/recording-options.js";
13
19
  import { SCENE_NODE } from "./ar/scene-node-names.js";
14
20
  import { createCss3dRendererManager } from "./visualization/css3d-renderer-manager.js";
15
- import { endARSession, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, initAR, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, startDepthCapture, startImageCapture, stopDepthCapture, stopImageCapture } from "./ar/webxr-session.js";
21
+ import { endARSession, getArWorldGroup, getCamera, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getScene, initAR, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, startDepthCapture, startImageCapture, stopDepthCapture, stopImageCapture } from "./ar/webxr-session.js";
22
+ import { createEnableGpsArController } from "./ar/enable-gps-ar.js";
16
23
  import { DEFAULT_LERP_RATE, clampedAlpha } from "./visualization/lerp-utils.js";
17
24
  import { createCameraFollower } from "./visualization/camera-follower.js";
18
25
  import { createAlignmentLerper } from "./visualization/alignment-lerper.js";
@@ -21,9 +28,7 @@ import { COMPASS_CUBE_DISTANCE, COMPASS_CUBE_SIZE, createGpsCompassCubes } from
21
28
  import { disposeReplayScene, getAlignmentLerper, getCameraFollower, getCameraMode, getReplayState, initReplayScene, toggleCameraMode, updateOrbitTarget } from "./ar/replay-scene.js";
22
29
  import { XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, getXrErrorMessage } from "./ar/xr-error-handler.js";
23
30
  import "./ar/index.js";
24
- import { requestOrientationPermission, startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch } from "./sensors/gps.js";
25
31
  import { GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, createGpsErrorHandler, getGpsErrorMessage } from "./sensors/gps-error-handler.js";
26
- import { checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkWebXRSupport, requestAllPermissions, requestCameraPermission, requestGeolocationPermission, requestOrientationPermission as requestOrientationPermission$1, requestWebXRWithDepthPermission, resetFileSystemState, setFileSystemState } from "./sensors/permission-checker.js";
27
32
  import "./sensors/index.js";
28
33
  import { H3_RESOLUTION, approxDistanceMetres, findNearbyGeoAnchor, gpsToH3, h3CellsMatch, isH3Index } from "./geo/h3-proximity.js";
29
34
  import "./geo/index.js";
@@ -37,20 +42,28 @@ import { endSession, recordDepthSample, recordWriteFailure, recordingReducer, st
37
42
  import { MAX_ACTION_FILE_SIZE, loadActionsFromZip, loadGpsPathFromBlob, loadSessionMetadataFromBlob, readZipEntries } from "./storage/zip-reader.js";
38
43
  import { formatActionFilename, formatFrameFilename, formatTimestamp } from "./storage/file-system-utils.js";
39
44
  import { NullStorageBackend } from "./storage/null-storage-backend.js";
45
+ import { DEFAULT_TRACKING_QUALITY_OPTIONS, computeCompassAgreement, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeResidualConsensus, computeTrackingQualityReport, createTrackingQualityListenerMiddleware, firstAgreementReached, matrixDelta, reportUpdated, resetTrackingQuality, selectFirstAgreementObservationIndex, selectRecentAlignments, selectTrackingQuality, snapshotPushed, snapshotsTrimmed, trackingQualityReducer } from "./state/tracking-quality.js";
40
46
  import { createSlamAppStore } from "./state/create-slam-app-store.js";
41
47
  import { replayRecording } from "./state/recording-replayer.js";
42
48
  import { DEFAULT_MAX_DELAY_MS, ReplayEngine, computeInterActionDelay, extractActionTimestamp } from "./state/replay-engine.js";
49
+ import { buildMapData } from "./visualization/map-data.js";
43
50
  import { wireStoreSubscribers } from "./state/store-subscribers.js";
44
- import { add2dImage, calcRelativeCoordsInMeters, markReferencePoint, recordGpsEvent, setZeroPos } from "./state/index.js";
51
+ import { a as computeOnboardingGuidance, i as setZeroPos, n as calcRelativeCoordsInMeters, o as selectOnboardingGuidance, r as recordGpsEvent, t as add2dImage } from "./state-BkIfpiyA.js";
45
52
  import { checkStorageQuota, createSession, getAppRootHandle, getSessionHandle, getSessionsRootHandle, initOpfsStorage, listSessions, resetOpfsStorage, resetSessionHandles } from "./storage/opfs-storage.js";
46
53
  import { initStorage, resetForNewSession, resetStorageState, startSession as startSession$1, verifyWriteAccess, writeAction, writeFrame } from "./storage/file-system.js";
47
54
  import { OpfsStorageBackend } from "./storage/opfs-storage-backend.js";
48
55
  import { downloadZip, exportAndDownloadSession, exportSessionAsZip, syncToExternalZip } from "./storage/zip-export.js";
49
56
  import "./storage/index.js";
57
+ import { enableArWorldGroupAlignment } from "./visualization/ar-world-group-alignment.js";
58
+ import { buildCameraFrustum, isObjectInCameraFrustum, isPointInCameraFrustum, isSphereInCameraFrustum } from "./visualization/frustum-visibility.js";
59
+ import { nueToArLocal, worldNueToGps } from "./visualization/frame-conversions.js";
60
+ import { createReticleMesh, updateReticle } from "./visualization/hit-test-reticle.js";
61
+ import { createGpsAnchor } from "./visualization/gps-anchor.js";
50
62
  import { GpsEventVisualizer, gpsEventVisualizer } from "./visualization/gps-event-markers.js";
63
+ import { ACCURACY_CIRCLE_FILL_OPACITY, ACCURACY_CIRCLE_STROKE_OPACITY, ACCURACY_CIRCLE_WEIGHT, addAccuracyCircles } from "./visualization/accuracy-circles.js";
64
+ import { ALIGNMENT_SNAPSHOT_COLOR, FUSED_PATH_COLOR, MAP_PATH_POLYLINE_OPACITY, MAP_PATH_POLYLINE_WEIGHT, RAW_GPS_COLOR, USER_POSITION_COLOR, drawMapData } from "./visualization/map-overlay-draw.js";
51
65
  import { DEFAULT_LEAFLET_MAP_SIZE_PX, DEFAULT_WORLD_SIZE, DEFAULT_Z_OFFSET, LeafletMapOverlay } from "./visualization/leaflet-map-overlay.js";
52
66
  import { DEFAULT_HEIGHT_OFFSET, DEFAULT_MAP_SIZE, DEFAULT_ZOOM, MapOverlay, latLonToTileXY, tileXYToLatLon } from "./visualization/map-overlay.js";
53
- import { GpsAnchoredMeshManager } from "./visualization/gps-anchored-mesh-manager.js";
54
67
  import "./visualization/index.js";
55
68
  import { COMMUNITY_LICENSE_KEY } from "./licensing/index.js";
56
- export { CAPTURE_FAILURE_WARNING, COMMUNITY_LICENSE_KEY, COMPASS_CUBE_DISTANCE, COMPASS_CUBE_SIZE, CameraBlitCapture, 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_WORLD_SIZE, DEFAULT_ZOOM, DEFAULT_Z_OFFSET, DEPTH_CONSTRAINTS, DepthSampler, GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, GpsAnchoredMeshManager, GpsEventVisualizer, H3_RESOLUTION, IMAGE_CONSTRAINTS, ImageCaptureManager, LeafletMapOverlay, LogLevel, MAX_ACTION_FILE_SIZE, MIN_VALID_IMAGE_BYTES, MapOverlay, NullStorageBackend, OpfsStorageBackend, ReplayEngine, SCENE_NODE, STORAGE_KEY, TrackingState, TrackingStateManager, VIS_COLORS, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, acquireCameraTexture, add2dImage, applyChromiumProjectionLayerWorkaround, approxDistanceMetres, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkStorageQuota, checkWebXRSupport, clampedAlpha, clearLogBuffer, cloneRecordingOptions, computeCaptureSize, computeFusedPath, computeInterActionDelay, createAlignmentLerper, createCameraFollower, createCaptureFailureTracker, createCss3dRendererManager, createFailureTracker, createGpsCompassCubes, createGpsErrorHandler, createGpsPositionHandler, createLogger, createSession, createSlamAppStore, disposeMeshArray, disposeObject3D, disposeReplayScene, downloadZip, endARSession, endSession, eulerToQuaternion, exportAndDownloadSession, exportSessionAsZip, extractActionTimestamp, extractOdomPosition, extractOdomRotation, findNearbyGeoAnchor, 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, latLonToTileXY, listFormatter, listSessions, loadActionsFromZip, loadGpsPathFromBlob, loadRecordingOptions, loadSessionMetadataFromBlob, mapWithConcurrencyLimit, markReferencePoint, readZipEntries, recordDepthSample, recordGpsEvent, recordWriteFailure, recordingReducer, replayRecording, requestAllPermissions, requestCameraPermission, requestOrientationPermission as requestDeviceOrientationPermission, requestGeolocationPermission, requestOrientationPermission$1 as requestOrientationPermission, requestWebXRWithDepthPermission, resetCoordinatorState, resetFileSystemState, resetForNewSession, resetOpfsStorage, resetRecordingOptions, resetSessionHandles, resetStorageState, saveRecordingOptions, setDepthCaptureCallback, setFileSystemState, setFrameCallback, setGlobalLogLevel, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setZeroPos, startDepthCapture, startGpsWatch, startImageCapture, startOrientationWatch, startSession, startSession$1 as startStorageSession, stopDepthCapture, stopGpsWatch, stopImageCapture, stopOrientationWatch, subscribeToLogs, syncToExternalZip, tileXYToLatLon, toggleCameraMode, updateDeviceOrientation, updateOrbitTarget, validateDepthOptions, validateImageOptions, validateRecordingOptions, verifyWriteAccess, wireStoreSubscribers, writeAction, writeFrame };
69
+ export { ACCURACY_CIRCLE_FILL_OPACITY, ACCURACY_CIRCLE_STROKE_OPACITY, ACCURACY_CIRCLE_WEIGHT, ALIGNMENT_SNAPSHOT_COLOR, BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, CAPTURE_FAILURE_WARNING, COMMUNITY_LICENSE_KEY, COMPASS_CUBE_DISTANCE, COMPASS_CUBE_SIZE, CameraBlitCapture, 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, DepthSampler, FUSED_PATH_COLOR, GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, GpsEventVisualizer, H3_RESOLUTION, IMAGE_CONSTRAINTS, ImageCaptureManager, LeafletMapOverlay, LogLevel, MAP_PATH_POLYLINE_OPACITY, MAP_PATH_POLYLINE_WEIGHT, MAX_ACTION_FILE_SIZE, MIN_VALID_IMAGE_BYTES, MapOverlay, NullStorageBackend, OpfsStorageBackend, RAW_GPS_COLOR, ReplayEngine, SCENE_NODE, STORAGE_KEY, USER_POSITION_COLOR, VIS_COLORS, WEBXR_TO_NUE, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, acquireCameraTexture, add2dImage, addAccuracyCircles, applyChromiumProjectionLayerWorkaround, approxDistanceMetres, 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, 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, updateDeviceOrientation, updateOrbitTarget, updateReticle, validateDepthOptions, validateImageOptions, validateRecordingOptions, verifyWriteAccess, wireStoreSubscribers, worldNueToGps, writeAction, writeFrame };
@@ -1,3 +1,4 @@
1
+ import { t as MapData } from "./map-data-BGIBM5rv.js";
1
2
  import * as THREE from "three";
2
3
  import { LatLong } from "gps-plus-slam-js";
3
4
  import L from "leaflet";
@@ -58,14 +59,9 @@ declare class LeafletMapOverlay {
58
59
  private leafletMap;
59
60
  private tileLayer;
60
61
  private cssObject;
61
- private rawGpsPoints;
62
- private fusedPoints;
63
- private snapshotPoints;
62
+ private latestMapData;
63
+ private trajectoryLayers;
64
64
  private namedMarkers;
65
- private userMarker;
66
- private rawGpsPolyline;
67
- private fusedPolyline;
68
- private snapshotPolyline;
69
65
  constructor(scene: THREE.Scene, camera: THREE.Camera, options?: LeafletMapOverlayOptions);
70
66
  setGpsPosition(lat: number, lon: number): void;
71
67
  getGpsPosition(): LatLong | null;
@@ -73,9 +69,20 @@ declare class LeafletMapOverlay {
73
69
  hide(): void;
74
70
  toggle(): void;
75
71
  isVisible(): boolean;
76
- addRawGpsPoint(lat: number, lon: number): void;
77
- addFusedPoint(lat: number, lon: number): void;
78
- addAlignmentSnapshot(lat: number, lon: number): void;
72
+ /**
73
+ * Render a full trajectory snapshot.
74
+ *
75
+ * Replaces the previous incremental `addRawGpsPoint` / `addFusedPoint` /
76
+ * `addAlignmentSnapshot` API with a single full-snapshot path: the caller
77
+ * builds a {@link MapData} (via the shared `buildMapData`) from the latest
78
+ * store slices and hands it here. The trajectory layers are redrawn
79
+ * wholesale through the shared {@link drawMapData} routine, so the live map
80
+ * stays pixel-identical to the 2D session-summary map and the fused path
81
+ * recomputes (D2) as the alignment matrix improves.
82
+ *
83
+ * Buffered when the map is not yet shown; applied on `show()`.
84
+ */
85
+ render(data: MapData): void;
79
86
  /** Add a "current" named marker (red). Buffered if map is not yet shown. */
80
87
  addCurrentMarker(lat: number, lon: number, name: string): void;
81
88
  /** Add a "prior" named marker (green, decorated). Buffered if not shown. */
@@ -111,7 +118,11 @@ declare class LeafletMapOverlay {
111
118
  private createCssObject;
112
119
  private removeCssObject;
113
120
  private applyBufferedOverlays;
114
- private updateUserMarker;
121
+ /**
122
+ * Redraw the trajectory layers from {@link latestMapData} via the shared
123
+ * {@link drawMapData} routine, removing any layers from the previous draw.
124
+ */
125
+ private drawTrajectory;
115
126
  private createNamedMarker;
116
127
  }
117
128
  //#endregion
@@ -11,7 +11,13 @@
11
11
  *
12
12
  * Sentry Integration:
13
13
  * - All log levels add Sentry breadcrumbs for debugging context
14
- * - log.error() with Error objects automatically reports to Sentry
14
+ * - log.warn() reports a standalone Sentry Issue (captureMessage)
15
+ * - log.error() reports a standalone Sentry Issue: captureException for Error
16
+ * arguments, or a captureMessage fallback for string-only errors
17
+ * - warn/error Issues are grouped by a normalized message template
18
+ * (['log', level, tag, template]) so dynamic values (frame indices, sizes,
19
+ * filenames) collapse into one Issue per message kind without merging
20
+ * genuinely different messages that share a tag
15
21
  */
16
22
  /**
17
23
  * Log levels in order of verbosity (lower = more verbose)
@@ -0,0 +1,49 @@
1
+ import { n as RawGpsSample, t as GpsCoord } from "./geo-types-clgzl8b5.js";
2
+ import { LatLong, Matrix4, Vector3 } from "gps-plus-slam-js";
3
+
4
+ //#region ../src/visualization/map-data.d.ts
5
+ /** Fully-resolved trajectory data ready to be drawn onto a Leaflet map. */
6
+ interface MapData {
7
+ /** Latest user GPS position (blue dot), or null when unknown. */
8
+ userPosition: GpsCoord | null;
9
+ /** Raw GPS samples (yellow polyline + per-event accuracy circles). */
10
+ rawGpsPath: RawGpsSample[];
11
+ /** Fused SLAM+GPS positions (cyan polyline), recomputed from latest matrix. */
12
+ fusedPath: GpsCoord[];
13
+ /** Alignment-snapshot GPS positions (red). */
14
+ alignmentSnapshots: GpsCoord[];
15
+ }
16
+ /**
17
+ * Inputs to {@link buildMapData}, all optional so callers can supply only the
18
+ * slices they have. Array inputs are read-only and defensively copied.
19
+ */
20
+ interface MapDataInput {
21
+ /** Raw GPS samples in chronological order. */
22
+ rawGpsPath?: readonly RawGpsSample[];
23
+ /** Odometry positions (AR-local) used to derive the fused path. */
24
+ odometryPositions?: ReadonlyArray<Vector3>;
25
+ /** Latest alignment matrix from the solver (null until first solve). */
26
+ alignmentMatrix?: Matrix4 | null;
27
+ /** GPS origin for ENU→GPS conversion (null when no GPS yet). */
28
+ zeroRef?: LatLong | null;
29
+ /** Alignment-snapshot GPS positions. */
30
+ alignmentSnapshots?: readonly GpsCoord[];
31
+ /**
32
+ * Explicit user position. When omitted, defaults to the last entry of
33
+ * `rawGpsPath` (or null when there is none).
34
+ */
35
+ userPosition?: GpsCoord | null;
36
+ }
37
+ /**
38
+ * Build a {@link MapData} snapshot from store-derived inputs.
39
+ *
40
+ * Pure and free of Leaflet/Three dependencies. The fused path is always
41
+ * derived via {@link computeFusedPath} (D2); when the matrix or zero reference
42
+ * is missing it is an empty array.
43
+ *
44
+ * @param input - Optional trajectory slices (see {@link MapDataInput}).
45
+ * @returns A fully-resolved {@link MapData} with all arrays defensively copied.
46
+ */
47
+ declare function buildMapData(input: MapDataInput): MapData;
48
+ //#endregion
49
+ export { MapDataInput as n, buildMapData as r, MapData as t };
@@ -0,0 +1,42 @@
1
+ import { t as MapData } from "./map-data-BGIBM5rv.js";
2
+ import L from "leaflet";
3
+
4
+ //#region ../src/visualization/map-overlay-draw.d.ts
5
+ /** Raw GPS polyline + accuracy-circle color (yellow). */
6
+ declare const RAW_GPS_COLOR: "#ffff00";
7
+ /** Fused SLAM+GPS polyline color (cyan). */
8
+ declare const FUSED_PATH_COLOR: "#00ffff";
9
+ /** Alignment-snapshot polyline color (red). */
10
+ declare const ALIGNMENT_SNAPSHOT_COLOR: "#ff0000";
11
+ /** User-position marker color (blue). */
12
+ declare const USER_POSITION_COLOR: "#3b82f6";
13
+ /** Polyline weight (px) — matches the recorder's `PATH_POLYLINE_WEIGHT`. */
14
+ declare const MAP_PATH_POLYLINE_WEIGHT = 3;
15
+ /** Polyline opacity — matches the recorder's `PATH_POLYLINE_OPACITY`. */
16
+ declare const MAP_PATH_POLYLINE_OPACITY = 0.8;
17
+ /** Options controlling optional layers drawn by {@link drawMapData}. */
18
+ interface DrawMapDataOptions {
19
+ /**
20
+ * Draw a user-position marker when `MapData.userPosition` is set. Off by
21
+ * default — the summary map shows the path only; the live overlay opts in.
22
+ */
23
+ showUserPosition?: boolean;
24
+ }
25
+ /** Result of {@link drawMapData}: the created layers and accumulated bounds. */
26
+ interface DrawnMapData {
27
+ /** Every Leaflet layer created, in draw order, for later cleanup. */
28
+ layers: L.Layer[];
29
+ /** Bounds spanning every drawn coordinate; use `.isValid()` before fitting. */
30
+ bounds: L.LatLngBounds;
31
+ }
32
+ /**
33
+ * Draw a {@link MapData} snapshot onto an existing Leaflet map.
34
+ *
35
+ * @param map - Target map (already created with a tile layer by the caller).
36
+ * @param data - Resolved trajectory data from `buildMapData`.
37
+ * @param options - Optional layer toggles (see {@link DrawMapDataOptions}).
38
+ * @returns The created layers and the bounds spanning every drawn coordinate.
39
+ */
40
+ declare function drawMapData(map: L.Map, data: MapData, options?: DrawMapDataOptions): DrawnMapData;
41
+ //#endregion
42
+ export { MAP_PATH_POLYLINE_OPACITY as a, USER_POSITION_COLOR as c, FUSED_PATH_COLOR as i, drawMapData as l, DrawMapDataOptions as n, MAP_PATH_POLYLINE_WEIGHT as o, DrawnMapData as r, RAW_GPS_COLOR as s, ALIGNMENT_SNAPSHOT_COLOR as t };
@@ -1,5 +1,5 @@
1
- import { n as SessionMetadata } from "./opfs-storage-Dlq1I_Gb.js";
2
- import { n as StorageBackend, t as CreateSessionResult } from "./storage-backend-yVnuWGTr.js";
1
+ import { n as SessionMetadata } from "./opfs-storage-LsLY6VZV.js";
2
+ import { n as StorageBackend, t as CreateSessionResult } from "./storage-backend-yDSKafAQ.js";
3
3
 
4
4
  //#region ../src/storage/null-storage-backend.d.ts
5
5
  declare class NullStorageBackend implements StorageBackend {
@@ -1,5 +1,5 @@
1
- import { n as SessionMetadata } from "./opfs-storage-Dlq1I_Gb.js";
2
- import { n as StorageBackend, t as CreateSessionResult } from "./storage-backend-yVnuWGTr.js";
1
+ import { n as SessionMetadata } from "./opfs-storage-LsLY6VZV.js";
2
+ import { n as StorageBackend, t as CreateSessionResult } from "./storage-backend-yDSKafAQ.js";
3
3
 
4
4
  //#region ../src/storage/opfs-storage-backend.d.ts
5
5
  declare class OpfsStorageBackend implements StorageBackend {
@@ -117,6 +117,46 @@ declare function requestOrientationPermission(): Promise<PermissionStatus>;
117
117
  * Returns current known state of each permission.
118
118
  */
119
119
  declare function checkAllPermissions(): Promise<PermissionCheckResult>;
120
+ /**
121
+ * Subscription handle returned by {@link subscribePermissionChanges}.
122
+ * Calling `unsubscribe()` detaches every listener wired by the subscription.
123
+ */
124
+ interface PermissionSubscription {
125
+ unsubscribe(): void;
126
+ }
127
+ /**
128
+ * Subscribe to out-of-band permission changes.
129
+ *
130
+ * Today the recorder app only re-runs `checkAllPermissions()` at startup
131
+ * and after the user clicks "Grant Permissions" — so a permission flipped
132
+ * via browser settings (e.g. user denies location, then enables it under
133
+ * "site settings") is only detected after a full page reload.
134
+ *
135
+ * This subscription wires three signals:
136
+ * 1. `navigator.permissions.query(...)` returns a live `PermissionStatus`
137
+ * for `'geolocation'` and `'camera'`; we keep those references and
138
+ * attach a `'change'` listener via `addEventListener` so we react
139
+ * immediately when the browser updates the underlying state.
140
+ * 2. `document.visibilitychange` (only when `visibilityState === 'visible'`)
141
+ * covers the "user tabbed out to settings, toggled, tabbed back" case
142
+ * on browsers where the `'change'` event does not fire reliably.
143
+ * 3. `window.focus` covers the same scenario for browsers/standalone
144
+ * windows where `visibilitychange` is not dispatched on focus return.
145
+ *
146
+ * Each signal triggers a fresh {@link checkAllPermissions} call; the
147
+ * resulting {@link PermissionCheckResult} is passed to `callback`.
148
+ *
149
+ * No periodic polling is performed — the trio above is the complete
150
+ * fallback chain. If a browser supports none of these signals for a given
151
+ * permission, the user can still re-check by clicking the (now permanently
152
+ * visible) "Grant Permissions" button.
153
+ *
154
+ * @param callback - Invoked with the latest {@link PermissionCheckResult}
155
+ * each time one of the signals fires. The initial state is **not**
156
+ * delivered; callers are expected to have already rendered it.
157
+ * @returns A handle whose `unsubscribe()` removes every wired listener.
158
+ */
159
+ declare function subscribePermissionChanges(callback: (result: PermissionCheckResult) => void): PermissionSubscription;
120
160
  /**
121
161
  * Request all mandatory permissions that haven't been granted yet.
122
162
  * Shows browser prompts for each permission that needs requesting.
@@ -143,4 +183,4 @@ declare function requestAllPermissions(): Promise<PermissionCheckResult>;
143
183
  */
144
184
  declare function requestWebXRWithDepthPermission(): Promise<PermissionStatus>;
145
185
  //#endregion
146
- export { checkFileSystemPermission as a, checkWebXRSupport as c, requestGeolocationPermission as d, requestOrientationPermission as f, setFileSystemState as h, checkCameraPermission as i, requestAllPermissions as l, resetFileSystemState as m, PermissionStatus as n, checkGeolocationPermission as o, requestWebXRWithDepthPermission as p, checkAllPermissions as r, checkOrientationPermission as s, PermissionCheckResult as t, requestCameraPermission as u };
186
+ export { subscribePermissionChanges as _, checkCameraPermission as a, checkOrientationPermission as c, requestCameraPermission as d, requestGeolocationPermission as f, setFileSystemState as g, resetFileSystemState as h, checkAllPermissions as i, checkWebXRSupport as l, requestWebXRWithDepthPermission as m, PermissionStatus as n, checkFileSystemPermission as o, requestOrientationPermission as p, PermissionSubscription as r, checkGeolocationPermission as s, PermissionCheckResult as t, requestAllPermissions as u };
@@ -0,0 +1,55 @@
1
+ import { n as StorageBackend } from "./storage-backend-yDSKafAQ.js";
2
+ import { Middleware } from "@reduxjs/toolkit";
3
+
4
+ //#region ../src/state/persistence-middleware.d.ts
5
+ interface PersistenceMiddlewareOptions {
6
+ /**
7
+ * StorageBackend to use for action persistence.
8
+ */
9
+ storageBackend: StorageBackend;
10
+ /**
11
+ * Slice names whose actions are persisted to the recording stream
12
+ * (e.g. `['gpsData', 'recording', 'refPoints']`).
13
+ *
14
+ * Callers MUST derive these from the actual slices — pass
15
+ * `slicePrefixOf(someActionCreator.type)` or a `slice.name`, never a
16
+ * hand-typed literal. A slice rename then propagates here automatically
17
+ * instead of silently dropping the renamed slice's actions from every
18
+ * recording (the 2026-05-28 `refPointsV2/` → `refPoints/` regression).
19
+ *
20
+ * `recording/recordWriteFailure` is always excluded regardless of this
21
+ * list, to prevent recursive persistence.
22
+ */
23
+ persistedPrefixes: readonly string[];
24
+ /**
25
+ * Callback invoked when a write operation fails during persistence.
26
+ * User Feedback Issue #1 Part B: Used to show toast notifications.
27
+ */
28
+ onWriteFailure?: (error: Error) => void;
29
+ }
30
+ /**
31
+ * Extract the slice prefix from a namespaced Redux action type.
32
+ *
33
+ * `'gpsData/setZeroPos'` → `'gpsData'`. Returns the whole string when there
34
+ * is no slash (e.g. `'@@INIT'`). This is the single point that turns a
35
+ * slice-owned action type into the value the persistence whitelist matches
36
+ * on, so call sites can derive prefixes from real action creators instead of
37
+ * re-typing literals.
38
+ */
39
+ declare function slicePrefixOf(actionType: string): string;
40
+ /**
41
+ * Create a Redux middleware that persists qualifying actions to storage
42
+ * during active recording sessions.
43
+ *
44
+ * Persistence rules:
45
+ * - Only persists when `state.recording.isRecording` is true (checked AFTER
46
+ * the action is reduced, so `startSession` itself is included).
47
+ * - Persists actions whose slice prefix is listed in `persistedPrefixes`.
48
+ * - Excludes `recording/recordWriteFailure` to prevent recursive persistence.
49
+ * - Excludes `routing/*` and any other non-whitelisted actions.
50
+ * - Uses 1-based indexing for action files (000001.json, 000002.json, …).
51
+ * - Each middleware instance maintains its own action index (Bug 10 fix).
52
+ */
53
+ declare function createPersistenceMiddleware(options: PersistenceMiddlewareOptions): Middleware;
54
+ //#endregion
55
+ export { createPersistenceMiddleware as n, slicePrefixOf as r, PersistenceMiddlewareOptions as t };
@@ -29,10 +29,16 @@ interface ArCrashIsolationOptions {
29
29
  enableCameraTextureAcquisition: boolean;
30
30
  /**
31
31
  * Apply the Chromium WebXR camera-access tab-crash workaround at app
32
- * bootstrap (deletes `XRWebGLBinding.prototype.createProjectionLayer` and
33
- * `XRRenderState.prototype.layers` so three.js falls back to
34
- * `XRWebGLLayer`). Opt-in because the upstream issue thread warns it may
35
- * break WebXR on unaffected devices.
32
+ * bootstrap. The workaround always deletes
33
+ * `XRWebGLBinding.prototype.createProjectionLayer` /
34
+ * `XRRenderState.prototype.layers` (forcing `XRWebGLLayer`) required on
35
+ * every affected Chrome build observed on-device, including Chrome 150 — and
36
+ * additionally persists the `baseLayer` across
37
+ * `XRSession.prototype.updateRenderState` only for Chrome builds inside the
38
+ * affected window (148.0.7778.12 up to 149.0.7821).
39
+ *
40
+ * Default `true`. Opt-out is offered because forcing `XRWebGLLayer` may break
41
+ * WebXR on unaffected (e.g. Quest) devices.
36
42
  *
37
43
  * @see GpsPlusSlamJs_AppFramework/src/ar/chromium-camera-access-workaround.ts
38
44
  * @see https://github.com/mrdoob/three.js/issues/33404
@@ -1,5 +1,5 @@
1
- import { i as RecordedAction } from "./zip-reader-KgJEXbca.js";
2
- import { t as CombinedRootState } from "./combined-root-state-B3SvPNjU.js";
1
+ import { L as CombinedRootState } from "./create-slam-app-store-B76AGaI0.js";
2
+ import { i as RecordedAction } from "./zip-reader-B2lzN8F5.js";
3
3
 
4
4
  //#region ../src/state/recording-replayer.d.ts
5
5
  /**