gps-plus-slam-app-framework 1.9.1 → 1.10.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.
- package/dist/{alignment-lerper-gD70k7Fq.d.ts → alignment-lerper-B4COh_0p.d.ts} +0 -6
- package/dist/{app-selectors-BbAiCRUT.d.ts → app-selectors-CV7ggGoo.d.ts} +23 -13
- package/dist/ar/bresenham3d.d.ts +1 -1
- package/dist/ar/camera-blit-capture.d.ts +1 -1
- package/dist/ar/capability-checker.d.ts +1 -1
- package/dist/ar/capture-failure-tracker.d.ts +1 -1
- package/dist/ar/chromium-camera-access-workaround.d.ts +1 -1
- package/dist/ar/depth-grid-lookup.d.ts +1 -1
- package/dist/ar/depth-occluder.d.ts +1 -1
- package/dist/ar/depth-sampler.d.ts +2 -2
- package/dist/ar/depth-sampler.js +16 -5
- package/dist/ar/depth-unprojection.d.ts +1 -1
- package/dist/ar/enable-gps-ar.d.ts +1 -1
- package/dist/ar/enable-gps-ar.js +1 -1
- package/dist/ar/frame-loop.d.ts +1 -1
- package/dist/ar/image-capture.d.ts +1 -1
- package/dist/ar/image-capture.js +1 -1
- package/dist/ar/image-quality.d.ts +1 -1
- package/dist/ar/image-quality.js +28 -9
- package/dist/ar/index.d.ts +32 -32
- package/dist/ar/index.js +7 -7
- package/dist/ar/occlusion-mesh-worker.d.ts +2 -2
- package/dist/ar/occlusion-mesh-worker.js +1 -1
- package/dist/ar/occupancy-grid.d.ts +1 -1
- package/dist/ar/occupancy-grid.js +1 -1
- package/dist/ar/occupancy-mesher.d.ts +1 -1
- package/dist/ar/occupancy-mesher.js +3 -4
- package/dist/ar/planar-pnp.d.ts +1 -1
- package/dist/ar/qr-debug-view.d.ts +1 -1
- package/dist/ar/qr-derived-pose.d.ts +1 -1
- package/dist/ar/qr-derived-pose.js +1 -1
- package/dist/ar/qr-detection-controller.d.ts +1 -1
- package/dist/ar/qr-detection-controller.js +1 -1
- package/dist/ar/qr-frontend.d.ts +1 -1
- package/dist/ar/qr-pose.d.ts +1 -1
- package/dist/ar/qr-size-depth-context.d.ts +2 -2
- package/dist/ar/qr-size-measurer.d.ts +1 -1
- package/dist/ar/qr-size-measurer.js +1 -1
- package/dist/ar/replay-scene.d.ts +1 -1
- package/dist/ar/replay-scene.js +1 -1
- package/dist/ar/scene-node-names.d.ts +1 -1
- package/dist/ar/webxr-nue-basis.d.ts +1 -1
- package/dist/ar/webxr-session.d.ts +3 -3
- package/dist/ar/webxr-session.js +1 -1
- package/dist/ar/xr-camera-texture.d.ts +1 -1
- package/dist/ar/xr-error-handler.d.ts +1 -1
- package/dist/ar/xr-frame-loop.d.ts +1 -1
- package/dist/{ar-BqCudtqE.js → ar-D-03Kso-.js} +18 -14
- package/dist/{ar-types-Cc5yvBwn.d.ts → ar-types-CBafnxhE.d.ts} +16 -1
- package/dist/{ar-world-group-alignment-Cfg0trC3.d.ts → ar-world-group-alignment-B6XiA1cT.d.ts} +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/{create-slam-app-store-D1QSMuKu.d.ts → create-slam-app-store-CH31erpP.d.ts} +4 -4
- package/dist/{create-slam-app-store-DXiAnJwR.js → create-slam-app-store-DLv5ZwqU.js} +2 -2
- package/dist/{depth-grid-lookup-D5atpNZ3.d.ts → depth-grid-lookup-DY6zYTLx.d.ts} +1 -1
- package/dist/{depth-sampler-CwObAwEA.d.ts → depth-sampler-txG8evgQ.d.ts} +14 -4
- package/dist/{depth-unprojection-DRdBU90S.d.ts → depth-unprojection-JKkeqJrV.d.ts} +1 -1
- package/dist/device-orientation-cache-BjEaEAmh.js +20 -0
- package/dist/{enable-gps-ar-BBtRO2FJ.d.ts → enable-gps-ar-BbNWyqp5.d.ts} +4 -4
- package/dist/{frame-conversions-DDcNHkTb.d.ts → frame-conversions-CH7E2Iv_.d.ts} +1 -1
- package/dist/{fused-path-C5pp0PJU.d.ts → fused-path-DOKzVMiO.d.ts} +1 -1
- package/dist/geo/h3-proximity.d.ts +1 -1
- package/dist/geo/index.d.ts +1 -1
- package/dist/{gps-CDKDQokE.d.ts → gps-CX5b9g3s.d.ts} +8 -1
- package/dist/{gps-anchor-CEjGqEVD.d.ts → gps-anchor-BaqyRsPC.d.ts} +14 -4
- package/dist/{gps-ar-pose-sampler-DEGNk2CI.d.ts → gps-ar-pose-sampler-BOOV0jJk.d.ts} +1 -1
- package/dist/{gps-event-coordinator-BWpgBrHq.d.ts → gps-event-coordinator-03rVh_us.d.ts} +16 -29
- package/dist/{image-capture-DVcuqMtX.js → image-capture-BUqqsOi3.js} +11 -9
- package/dist/{image-capture-Bp6Pd4Md.d.ts → image-capture-Cr_rljeV.d.ts} +3 -3
- package/dist/{index-cCQWuYqy.d.ts → index-C2Bo0buN.d.ts} +4 -6
- package/dist/{index-B6iBnO_K.d.ts → index-CuHaGY0F.d.ts} +1 -1
- package/dist/index.d.ts +82 -82
- package/dist/index.js +16 -14
- package/dist/{leaflet-map-overlay-C8GS4cUy.d.ts → leaflet-map-overlay-QhF199BW.d.ts} +1 -1
- package/dist/{map-data-CUnTzRIC.d.ts → map-data-D8sSxpOr.d.ts} +1 -1
- package/dist/{map-overlay-draw-6WJeq0Kg.d.ts → map-overlay-draw-1E61FLKs.d.ts} +1 -1
- package/dist/median-Bla_W50f.js +44 -0
- package/dist/{null-storage-backend-B1-jlpin.d.ts → null-storage-backend-DXXuwG8T.d.ts} +2 -2
- package/dist/{occlusion-mesh-kXCQ2FM1.d.ts → occlusion-mesh-CZ4i_SW2.d.ts} +3 -11
- package/dist/{occupancy-grid-BV7RhB7I.d.ts → occupancy-grid-f0I07UxI.d.ts} +2 -2
- package/dist/{occupancy-mesher-C2ecWhNp.d.ts → occupancy-mesher-BqnRd10x.d.ts} +4 -9
- package/dist/{opfs-storage-backend-D6Z03fML.d.ts → opfs-storage-backend-D1ZpeNEL.d.ts} +2 -2
- package/dist/{persistence-middleware-CG-t08X4.d.ts → persistence-middleware-CI4Cetnl.d.ts} +1 -1
- package/dist/{planar-pnp-D7bc_rLX.d.ts → planar-pnp-CPLhg5MX.d.ts} +1 -1
- package/dist/{qr-debug-view-BJooqbiP.d.ts → qr-debug-view-BmbWo06j.d.ts} +1 -1
- package/dist/{qr-derived-pose-BwNWn8oV.d.ts → qr-derived-pose-DEYT85ul.d.ts} +2 -2
- package/dist/{qr-detected-slice-TzVb8bij.d.ts → qr-detected-slice-CPEkGbxh.d.ts} +4 -4
- package/dist/{qr-detection-controller-Bo4XfQTP.d.ts → qr-detection-controller-IcMRpTjV.d.ts} +3 -3
- package/dist/{qr-frontend-BPURlh3S.d.ts → qr-frontend-61SKPSyU.d.ts} +1 -1
- package/dist/{qr-pose-aggregation-CypnmjA-.d.ts → qr-pose-aggregation-BL6gfl0s.d.ts} +1 -1
- package/dist/{qr-pose-aggregation-DBiaLW0O.js → qr-pose-aggregation-H-O_Jjz9.js} +5 -10
- package/dist/{qr-size-depth-context-apAOmbrZ.d.ts → qr-size-depth-context-DJsYqbqY.d.ts} +2 -2
- package/dist/{qr-size-measurer-DLb33geH.js → qr-size-measurer-BVOIg-He.js} +6 -12
- package/dist/{qr-size-measurer-DxiMqRUw.d.ts → qr-size-measurer-Bl_i-umk.d.ts} +3 -3
- package/dist/{recording-options-DYKWVI93.d.ts → recording-options-Cai9D14V.d.ts} +16 -9
- package/dist/{recording-replayer-BJ8Lf0QY.d.ts → recording-replayer-DyIN13nG.d.ts} +2 -2
- package/dist/{recording-slice-BW8SiLo1.d.ts → recording-slice-DziOl7P5.d.ts} +2 -2
- package/dist/{replay-engine-DmCAc7WM.d.ts → replay-engine-DAymjsd1.d.ts} +1 -1
- package/dist/{replay-scene-zJ8SFDjE.d.ts → replay-scene-CZdWgcpc.d.ts} +3 -3
- package/dist/sensors/absolute-orientation.d.ts +1 -1
- package/dist/sensors/gps-error-handler.d.ts +1 -1
- package/dist/sensors/gps.d.ts +1 -1
- package/dist/sensors/gps.js +10 -8
- package/dist/sensors/index.d.ts +4 -4
- package/dist/sensors/index.js +1 -1
- package/dist/sensors/permission-checker.d.ts +1 -1
- package/dist/sensors/permission-checker.js +71 -40
- package/dist/state/app-selectors.d.ts +1 -1
- package/dist/state/combined-root-state.d.ts +1 -1
- package/dist/state/create-slam-app-store.d.ts +1 -1
- package/dist/state/create-slam-app-store.js +1 -1
- package/dist/state/gps-ar-pose-sampler.d.ts +2 -3
- package/dist/state/gps-ar-pose-sampler.js +1 -1
- package/dist/state/gps-event-coordinator.d.ts +2 -1
- package/dist/state/gps-event-coordinator.js +4 -46
- package/dist/state/index.d.ts +19 -19
- package/dist/state/index.js +5 -3
- package/dist/state/persistence-middleware.d.ts +1 -1
- package/dist/state/qr-detected-slice.d.ts +3 -3
- package/dist/state/qr-detected-slice.js +5 -9
- package/dist/state/recording-options.d.ts +1 -1
- package/dist/state/recording-options.js +74 -45
- package/dist/state/recording-replayer.d.ts +2 -2
- package/dist/state/recording-replayer.js +1 -1
- package/dist/state/recording-slice.d.ts +1 -1
- package/dist/state/replay-engine.d.ts +1 -1
- package/dist/state/store-subscribers.d.ts +2 -2
- package/dist/state/store-subscribers.js +23 -6
- package/dist/state/subscribe-to-selector.d.ts +1 -1
- package/dist/state/tracking-quality.d.ts +1 -1
- package/dist/state/tracking-quality.js +14 -11
- package/dist/state/tracking-slice.d.ts +1 -1
- package/dist/{state-BeKvn4B-.js → state-U45ioVyB.js} +2 -3
- package/dist/storage/file-system-utils.d.ts +1 -1
- package/dist/storage/index.d.ts +8 -8
- package/dist/storage/null-storage-backend.d.ts +1 -1
- package/dist/storage/opfs-storage-backend.d.ts +1 -1
- package/dist/storage/opfs-storage.d.ts +1 -1
- package/dist/storage/storage-backend.d.ts +1 -1
- package/dist/storage/zip-coverage-embed.d.ts +1 -1
- package/dist/storage/zip-export.d.ts +1 -1
- package/dist/storage/zip-export.js +10 -4
- package/dist/storage/zip-reader.d.ts +1 -1
- package/dist/{storage-backend-sEtmM4yW.d.ts → storage-backend-BX7egQKi.d.ts} +1 -1
- package/dist/{store-subscribers-DJUErW-o.d.ts → store-subscribers-DtwakLrQ.d.ts} +2 -2
- package/dist/{subscribe-to-selector-dQV8SpsO.d.ts → subscribe-to-selector-Cgo9JTfS.d.ts} +1 -1
- package/dist/test-utils/browser-mocks.d.ts +1 -1
- package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
- package/dist/{tracking-slice-DMkHlbny.d.ts → tracking-slice-Bt2OEQhA.d.ts} +1 -1
- package/dist/types/ar-types.d.ts +2 -2
- package/dist/types/ar-types.js +31 -1
- package/dist/types/geo-types.d.ts +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.js +2 -1
- package/dist/utils/concurrency.d.ts +1 -1
- package/dist/utils/failure-tracker.d.ts +1 -1
- package/dist/utils/format-file-size.d.ts +1 -1
- package/dist/utils/fused-path.d.ts +1 -1
- package/dist/utils/fused-path.js +1 -1
- package/dist/utils/index.d.ts +7 -7
- package/dist/utils/index.js +1 -1
- package/dist/utils/list-formatter.d.ts +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +30 -20
- package/dist/visualization/accuracy-circles.d.ts +1 -1
- package/dist/visualization/alignment-lerper.d.ts +1 -1
- package/dist/visualization/alignment-lerper.js +20 -5
- package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
- package/dist/visualization/ar-world-group-alignment.js +1 -1
- package/dist/visualization/camera-follower.d.ts +1 -1
- package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
- package/dist/visualization/frame-conversions.d.ts +1 -1
- package/dist/visualization/frustum-visibility.d.ts +1 -1
- package/dist/visualization/gps-anchor.d.ts +1 -1
- package/dist/visualization/gps-anchor.js +43 -18
- package/dist/visualization/gps-compass-cubes.d.ts +1 -1
- package/dist/visualization/gps-event-markers.d.ts +1 -1
- package/dist/visualization/gps-event-markers.js +1 -1
- package/dist/visualization/hit-test-reticle.d.ts +1 -1
- package/dist/visualization/index.d.ts +19 -19
- package/dist/visualization/index.js +2 -2
- package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
- package/dist/visualization/leaflet-map-overlay.js +1 -1
- package/dist/visualization/lerp-utils.d.ts +1 -1
- package/dist/visualization/map-data.d.ts +1 -1
- package/dist/visualization/map-data.js +1 -1
- package/dist/visualization/map-overlay-draw.d.ts +1 -1
- package/dist/visualization/map-overlay.d.ts +1 -1
- package/dist/visualization/occluder-mesh-driver.d.ts +2 -2
- package/dist/visualization/occlusion-mesh.d.ts +1 -1
- package/dist/visualization/occlusion-mesh.js +1 -11
- package/dist/visualization/three-dispose.d.ts +1 -1
- package/dist/visualization/vis-colors.d.ts +1 -1
- package/dist/{webxr-session-BWCpGd-2.d.ts → webxr-session-CGFZ429B.d.ts} +8 -8
- package/dist/{webxr-session-BCP2XK7k.js → webxr-session-DWKUsCN9.js} +7 -7
- package/package.json +3 -3
- /package/dist/{absolute-orientation-BAxc15J6.d.ts → absolute-orientation-C_IxDR_j.d.ts} +0 -0
- /package/dist/{accuracy-circles-DkWBkF5g.d.ts → accuracy-circles-BE7tbvYV.d.ts} +0 -0
- /package/dist/{bresenham3d-DGc4nIb-.d.ts → bresenham3d-D-t9i_b5.d.ts} +0 -0
- /package/dist/{camera-blit-capture-BimSdyih.d.ts → camera-blit-capture-BlC-arRb.d.ts} +0 -0
- /package/dist/{camera-follower-DfBm2J5i.d.ts → camera-follower-B6zA3dy9.d.ts} +0 -0
- /package/dist/{capability-checker-BTTpygvZ.d.ts → capability-checker-DEo-ktWI.d.ts} +0 -0
- /package/dist/{capture-failure-tracker-_BVfhpxv.d.ts → capture-failure-tracker-BAUKjtXU.d.ts} +0 -0
- /package/dist/{capture-motion-gate-BGoAMkmf.d.ts → capture-motion-gate-BmjiWUJv.d.ts} +0 -0
- /package/dist/{capture-motion-gate-_NdTSwKi.js → capture-motion-gate-D1eyGC_o.js} +0 -0
- /package/dist/{cell-key-DIB4rOTV.js → cell-key-Bj-eYTLA.js} +0 -0
- /package/dist/{chromium-camera-access-workaround-C6yJLXz9.d.ts → chromium-camera-access-workaround-DCd8SP2N.d.ts} +0 -0
- /package/dist/{concurrency-DPeGBH0X.d.ts → concurrency-DW0jQo3G.d.ts} +0 -0
- /package/dist/{css3d-renderer-manager-CPpVtvgs.d.ts → css3d-renderer-manager-DbrSY7Mh.d.ts} +0 -0
- /package/dist/{failure-tracker-CeKf5HIc.d.ts → failure-tracker-B7fzPfZo.d.ts} +0 -0
- /package/dist/{file-system-utils-DueXHxo9.d.ts → file-system-utils-CfLTj5Ra.d.ts} +0 -0
- /package/dist/{format-file-size-DxN-EBLc.d.ts → format-file-size-Da8rZgfs.d.ts} +0 -0
- /package/dist/{frame-loop-7GBMBu68.d.ts → frame-loop-7HigCj7m.d.ts} +0 -0
- /package/dist/{frustum-visibility-CokkgS_i.d.ts → frustum-visibility-COPfzruF.d.ts} +0 -0
- /package/dist/{geo-types-DrGVu8nS.d.ts → geo-types-BfDK8kJu.d.ts} +0 -0
- /package/dist/{geodesic-angle-BTldfFgs.js → geodesic-angle-HXBWiXiI.js} +0 -0
- /package/dist/{gps-compass-cubes-1mooS3BS.d.ts → gps-compass-cubes-CT3TWctJ.d.ts} +0 -0
- /package/dist/{gps-error-handler-C34GQuTu.d.ts → gps-error-handler-DjVuLXve.d.ts} +0 -0
- /package/dist/{gps-event-markers-Di2nBzx-.d.ts → gps-event-markers-BsC2Ynlh.d.ts} +0 -0
- /package/dist/{h3-proximity-D0GTHQmr.d.ts → h3-proximity-pFluGfwL.d.ts} +0 -0
- /package/dist/{hit-test-reticle-CaQbrhbk.d.ts → hit-test-reticle-DhnCMOsc.d.ts} +0 -0
- /package/dist/{image-quality-BMx2ko9-.d.ts → image-quality-BjBLoTec.d.ts} +0 -0
- /package/dist/{index-DXPVzOpP.d.ts → index-CjxbDm8W.d.ts} +0 -0
- /package/dist/{index-D74JTX4I.d.ts → index-Nr3qg4IH.d.ts} +0 -0
- /package/dist/{leaflet-map-overlay-CBWPvaX9.js → leaflet-map-overlay-BRkUhZMD.js} +0 -0
- /package/dist/{lerp-utils-Qs8OhumS.d.ts → lerp-utils-bwMwVCpU.d.ts} +0 -0
- /package/dist/{list-formatter-DLFDnS70.d.ts → list-formatter-1ttG18MQ.d.ts} +0 -0
- /package/dist/{logger-CqTd5Kpk.d.ts → logger-B4StJUDb.d.ts} +0 -0
- /package/dist/{map-data-1tF5gcYV.js → map-data-D3oE8AQP.js} +0 -0
- /package/dist/{map-overlay-BCQgvIgU.d.ts → map-overlay-0yJOcEVO.d.ts} +0 -0
- /package/dist/{opfs-storage-CTkxvxN4.d.ts → opfs-storage-S_odkCk1.d.ts} +0 -0
- /package/dist/{permission-checker-B-VtjnBA.d.ts → permission-checker-D1C5zvo-.d.ts} +0 -0
- /package/dist/{qr-detection-controller-B-tLVd-S.js → qr-detection-controller-bRTJXC6G.js} +0 -0
- /package/dist/{qr-pose-y3vaEd6x.d.ts → qr-pose-CCTF1PP0.d.ts} +0 -0
- /package/dist/{scene-node-names-CGb-ylBd.d.ts → scene-node-names-DWzhE7Ro.d.ts} +0 -0
- /package/dist/{session-disposers-BPrMplIC.js → session-disposers-BZS-hi8u.js} +0 -0
- /package/dist/{three-dispose-BMOAmPhb.d.ts → three-dispose-C9mdpSRX.d.ts} +0 -0
- /package/dist/{vis-colors-C7HI0u9_.d.ts → vis-colors-DjStl_tD.d.ts} +0 -0
- /package/dist/{webxr-nue-basis-CaCnYxuq.d.ts → webxr-nue-basis-C3vTqkE2.d.ts} +0 -0
- /package/dist/{xr-camera-texture-q0eIDSRg.d.ts → xr-camera-texture-C6Z4d7RR.d.ts} +0 -0
- /package/dist/{xr-error-handler-uVGDu9IX.d.ts → xr-error-handler-D9y5r8ok.d.ts} +0 -0
- /package/dist/{xr-frame-loop-DX3JPpAU.d.ts → xr-frame-loop-25gM4B0K.d.ts} +0 -0
- /package/dist/{zip-coverage-embed-ncVbaZAz.d.ts → zip-coverage-embed-BrodRLq0.d.ts} +0 -0
- /package/dist/{zip-export-CtiUnAlJ.d.ts → zip-export-CuBimX1J.d.ts} +0 -0
- /package/dist/{zip-reader-BzENzMH6.d.ts → zip-reader-BHc_b_iA.d.ts} +0 -0
package/dist/state/index.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { i as DepthSample, r as DepthPoint } from "../ar-types-
|
|
2
|
-
import { C as cloneRecordingOptions, E as saveRecordingOptions, L as validateRecordingOptions, T as resetRecordingOptions, a as DepthCaptureOptions, b as RecordingOptionsInput, c as IMAGE_CONSTRAINTS, i as DEPTH_CONSTRAINTS, j as validateImageOptions, k as validateDepthOptions, l as ImageCaptureOptions, r as DEFAULT_RECORDING_OPTIONS, w as loadRecordingOptions, x as STORAGE_KEY } from "../recording-options-
|
|
3
|
-
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, r as ResetTransformData, s as originReset, t as DeviceOrientation, u as resetTracking } from "../tracking-slice-
|
|
4
|
-
import { d as QrSizeStatus, l as QrSizeEstimate } from "../qr-size-measurer-
|
|
5
|
-
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-
|
|
6
|
-
import { a as recordWriteFailure, i as recordDepthSample, n as SessionMetadata$1, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "../recording-slice-
|
|
7
|
-
import { C as setQrMaxHistory, S as selectStableQrPose, _ as selectQrPoseStability, a as RootWithQrDetected, b as selectResolvedQrSizeM, c as medianQrPosition, d as recordQrDetection, f as recordQrSizeEstimate, g as selectQrMarkers, h as selectQrMarker, i as QrMarkerState, l as pruneQrDetections, m as selectLatestQrDetection, n as QrDetectedState, o as clearAllQrMarkers, p as selectDerivedQrPlacement, r as QrDetectionEntry, s as clearQrMarker, t as DEFAULT_QR_MAX_HISTORY, u as qrDetectedReducer, v as selectQrRawObservations, x as selectSolvedQrPose, y as selectQrSize } from "../qr-detected-slice-
|
|
8
|
-
import { n as SessionMetadata } from "../opfs-storage-
|
|
9
|
-
import { n as StorageBackend } from "../storage-backend-
|
|
10
|
-
import { A as snapshotPushed, C as createTrackingQualityListenerMiddleware, D as resetTrackingQuality, E as reportUpdated, M as trackingQualityReducer, O as selectRecentAlignments, S as computeTrackingQualityReport, T as matrixDelta, _ as computeConvergence, a as SlamAppStoreOptions, b as computeGpsVsFusedDivergence, g as TrackingQualityState, h as TrackingQualitySliceState, i as SlamAppStore, j as snapshotsTrimmed, k as selectTrackingQuality, m as TrackingQualityReport, n as SlamAppMiddleware, o as createSlamAppStore, p as TrackingQualityOptions, r as SlamAppRootState, s as AlignmentSnapshot, t as SlamAppCombinedState, u as DEFAULT_TRACKING_QUALITY_OPTIONS, v as computeCoverage, w as degradedCountUpdated, x as computeResidualConsensus, y as computeGpsAccuracy } from "../create-slam-app-store-
|
|
11
|
-
import { a as eulerToQuaternion, c as getLastDeviceOrientation,
|
|
12
|
-
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-
|
|
13
|
-
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-
|
|
14
|
-
import { n as createPersistenceMiddleware, r as slicePrefixOf, t as PersistenceMiddlewareOptions } from "../persistence-middleware-
|
|
15
|
-
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-
|
|
16
|
-
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-
|
|
17
|
-
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-
|
|
18
|
-
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-
|
|
19
|
-
import { a as RawGpsPoint, c as calcRelativeCoordsInMeters, d as OnboardingGuidance, f as OnboardingPhase, i as RawDeviceOrientation, l as recordGpsEvent, m as selectOnboardingGuidance, n as GpsPoint, o as RecordGpsEventPayload, p as computeOnboardingGuidance, r as LatLong, s as add2dImage, t as Add2dImagePayload, u as setZeroPos } from "../index-
|
|
1
|
+
import { c as extractOdomPosition, i as DepthSample, l as extractOdomRotation, r as DepthPoint } from "../ar-types-CBafnxhE.js";
|
|
2
|
+
import { C as cloneRecordingOptions, E as saveRecordingOptions, L as validateRecordingOptions, T as resetRecordingOptions, a as DepthCaptureOptions, b as RecordingOptionsInput, c as IMAGE_CONSTRAINTS, i as DEPTH_CONSTRAINTS, j as validateImageOptions, k as validateDepthOptions, l as ImageCaptureOptions, r as DEFAULT_RECORDING_OPTIONS, w as loadRecordingOptions, x as STORAGE_KEY } from "../recording-options-Cai9D14V.js";
|
|
3
|
+
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, r as ResetTransformData, s as originReset, t as DeviceOrientation, u as resetTracking } from "../tracking-slice-Bt2OEQhA.js";
|
|
4
|
+
import { d as QrSizeStatus, l as QrSizeEstimate } from "../qr-size-measurer-Bl_i-umk.js";
|
|
5
|
+
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-BL6gfl0s.js";
|
|
6
|
+
import { a as recordWriteFailure, i as recordDepthSample, n as SessionMetadata$1, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "../recording-slice-DziOl7P5.js";
|
|
7
|
+
import { C as setQrMaxHistory, S as selectStableQrPose, _ as selectQrPoseStability, a as RootWithQrDetected, b as selectResolvedQrSizeM, c as medianQrPosition, d as recordQrDetection, f as recordQrSizeEstimate, g as selectQrMarkers, h as selectQrMarker, i as QrMarkerState, l as pruneQrDetections, m as selectLatestQrDetection, n as QrDetectedState, o as clearAllQrMarkers, p as selectDerivedQrPlacement, r as QrDetectionEntry, s as clearQrMarker, t as DEFAULT_QR_MAX_HISTORY, u as qrDetectedReducer, v as selectQrRawObservations, x as selectSolvedQrPose, y as selectQrSize } from "../qr-detected-slice-CPEkGbxh.js";
|
|
8
|
+
import { n as SessionMetadata } from "../opfs-storage-S_odkCk1.js";
|
|
9
|
+
import { n as StorageBackend } from "../storage-backend-BX7egQKi.js";
|
|
10
|
+
import { A as snapshotPushed, C as createTrackingQualityListenerMiddleware, D as resetTrackingQuality, E as reportUpdated, M as trackingQualityReducer, O as selectRecentAlignments, S as computeTrackingQualityReport, T as matrixDelta, _ as computeConvergence, a as SlamAppStoreOptions, b as computeGpsVsFusedDivergence, g as TrackingQualityState, h as TrackingQualitySliceState, i as SlamAppStore, j as snapshotsTrimmed, k as selectTrackingQuality, m as TrackingQualityReport, n as SlamAppMiddleware, o as createSlamAppStore, p as TrackingQualityOptions, r as SlamAppRootState, s as AlignmentSnapshot, t as SlamAppCombinedState, u as DEFAULT_TRACKING_QUALITY_OPTIONS, v as computeCoverage, w as degradedCountUpdated, x as computeResidualConsensus, y as computeGpsAccuracy } from "../create-slam-app-store-CH31erpP.js";
|
|
11
|
+
import { a as eulerToQuaternion, c as getLastDeviceOrientation, i as createGpsPositionHandler, l as updateDeviceOrientation, n as buildRawGpsPoint, o as resetCoordinatorState, r as buildRecordGpsEventPayload, t as RecordingCoordinatorConfig } from "../gps-event-coordinator-03rVh_us.js";
|
|
12
|
+
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-BOOV0jJk.js";
|
|
13
|
+
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-DyIN13nG.js";
|
|
14
|
+
import { n as createPersistenceMiddleware, r as slicePrefixOf, t as PersistenceMiddlewareOptions } from "../persistence-middleware-CI4Cetnl.js";
|
|
15
|
+
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-DAymjsd1.js";
|
|
16
|
+
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-Cgo9JTfS.js";
|
|
17
|
+
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-DtwakLrQ.js";
|
|
18
|
+
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-CV7ggGoo.js";
|
|
19
|
+
import { a as RawGpsPoint, c as calcRelativeCoordsInMeters, d as OnboardingGuidance, f as OnboardingPhase, i as RawDeviceOrientation, l as recordGpsEvent, m as selectOnboardingGuidance, n as GpsPoint, o as RecordGpsEventPayload, p as computeOnboardingGuidance, r as LatLong, s as add2dImage, t as Add2dImagePayload, u as setZeroPos } from "../index-CuHaGY0F.js";
|
|
20
20
|
export { Add2dImagePayload, AlignmentSnapshot, CaptureGpsAnchorSampleOptions, CompleteCallback, DEFAULT_MAX_DELAY_MS, DEFAULT_QR_MAX_HISTORY, DEFAULT_RECORDING_OPTIONS, DEFAULT_TRACKING_QUALITY_OPTIONS, DEPTH_CONSTRAINTS, DepthCaptureOptions, DepthPoint, DepthSample, DeviceOrientation, ErrorCallback, GpsAnchorSample, GpsAnchorSampleGpsPoint, GpsPoint, IMAGE_CONSTRAINTS, ImageCaptureOptions, LatLong, OnboardingGuidance, OnboardingPhase, SessionMetadata as OpfsSessionMetadata, PersistenceMiddlewareOptions, PoseReceivedPayload, ProgressCallback, QrDetectedState, QrDetectionEntry, QrMarkerState, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrSizeEstimate, QrSizeStatus, RawDeviceOrientation, RawGpsPoint, RecordGpsEventPayload, RecordingCoordinatorConfig, RecordingOptionsInput, RecordingState, ReplayAction, ReplayEngine, ReplayRecordingOptions, ReplayState, ResetTransformData, RootWithQrDetected, STORAGE_KEY, SessionMetadata$1 as SessionMetadata, SlamAppCombinedState, SlamAppMiddleware, SlamAppRootState, SlamAppStore, SlamAppStoreOptions, StorageBackend, StoreSubscriberDeps, SubscribableStore, TrackingPhase, TrackingQualityOptions, TrackingQualityReport, TrackingQualitySliceState, TrackingQualityState, TrackingSliceState, add2dImage, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, captureGpsAnchorSample, clearAllQrMarkers, clearLastRestartedPayload, clearQrMarker, cloneRecordingOptions, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeInterActionDelay, computeOnboardingGuidance, computeResidualConsensus, computeTrackingQualityReport, createGpsPositionHandler, createPersistenceMiddleware, createSlamAppStore, createTrackingQualityListenerMiddleware, degradedCountUpdated, endSession, eulerToQuaternion, extractActionTimestamp, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, loadRecordingOptions, matrixDelta, medianQrPosition, originReset, poseLost, poseReceived, pruneQrDetections, qrDetectedReducer, recordDepthSample, recordGpsEvent, recordQrDetection, recordQrSizeEstimate, recordWriteFailure, recordingReducer, replayRecording, reportUpdated, resetCoordinatorState, resetRecordingOptions, resetTracking, resetTrackingQuality, saveRecordingOptions, selectAlignmentMatrix, selectDerivedQrPlacement, selectFrameTilesInWebXR, selectGpsPositions, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLatestQrDetection, selectLostFrameCount, selectOdometryPositions, selectOdometryRotations, selectOnboardingGuidance, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectRecentAlignments, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, selectTrackingPhase, selectTrackingQuality, selectZeroReference, setQrMaxHistory, setZeroPos, slicePrefixOf, snapshotPushed, snapshotsTrimmed, startSession, subscribeToSelector, trackingQualityReducer, trackingReducer, updateDeviceOrientation, validateDepthOptions, validateImageOptions, validateRecordingOptions, wireStoreSubscribers };
|
package/dist/state/index.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { extractOdomPosition, extractOdomRotation } from "../types/ar-types.js";
|
|
2
2
|
import { clearLastRestartedPayload, originReset, poseLost, poseReceived, resetTracking, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLostFrameCount, selectTrackingPhase, trackingReducer } from "./tracking-slice.js";
|
|
3
|
+
import { r as updateDeviceOrientation, t as getLastDeviceOrientation } from "../device-orientation-cache-BjEaEAmh.js";
|
|
3
4
|
import { DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, IMAGE_CONSTRAINTS, STORAGE_KEY, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateDepthOptions, validateImageOptions, validateRecordingOptions } from "./recording-options.js";
|
|
4
5
|
import { endSession, recordDepthSample, recordWriteFailure, recordingReducer, startSession } from "./recording-slice.js";
|
|
5
6
|
import { DEFAULT_QR_MAX_HISTORY, clearAllQrMarkers, clearQrMarker, medianQrPosition, pruneQrDetections, qrDetectedReducer, recordQrDetection, recordQrSizeEstimate, selectDerivedQrPlacement, selectLatestQrDetection, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, setQrMaxHistory } from "./qr-detected-slice.js";
|
|
7
|
+
import { buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler, eulerToQuaternion, resetCoordinatorState } from "./gps-event-coordinator.js";
|
|
6
8
|
import { captureGpsAnchorSample } from "./gps-ar-pose-sampler.js";
|
|
7
9
|
import { selectAlignmentMatrix, selectFrameTilesInWebXR, selectGpsPositions, selectOdometryPositions, selectOdometryRotations, selectZeroReference } from "./app-selectors.js";
|
|
8
10
|
import { DEFAULT_TRACKING_QUALITY_OPTIONS, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeResidualConsensus, computeTrackingQualityReport, createTrackingQualityListenerMiddleware, degradedCountUpdated, matrixDelta, reportUpdated, resetTrackingQuality, selectRecentAlignments, selectTrackingQuality, snapshotPushed, snapshotsTrimmed, trackingQualityReducer } from "./tracking-quality.js";
|
|
9
11
|
import { createPersistenceMiddleware, slicePrefixOf } from "./persistence-middleware.js";
|
|
10
|
-
import { t as createSlamAppStore } from "../create-slam-app-store-
|
|
12
|
+
import { t as createSlamAppStore } from "../create-slam-app-store-DLv5ZwqU.js";
|
|
11
13
|
import { replayRecording } from "./recording-replayer.js";
|
|
12
14
|
import { DEFAULT_MAX_DELAY_MS, ReplayEngine, computeInterActionDelay, extractActionTimestamp } from "./replay-engine.js";
|
|
13
15
|
import { subscribeToSelector } from "./subscribe-to-selector.js";
|
|
14
16
|
import { wireStoreSubscribers } from "./store-subscribers.js";
|
|
15
|
-
import { a as computeOnboardingGuidance, i as setZeroPos, n as calcRelativeCoordsInMeters, o as selectOnboardingGuidance, r as recordGpsEvent, t as add2dImage } from "../state-
|
|
17
|
+
import { a as computeOnboardingGuidance, i as setZeroPos, n as calcRelativeCoordsInMeters, o as selectOnboardingGuidance, r as recordGpsEvent, t as add2dImage } from "../state-U45ioVyB.js";
|
|
16
18
|
export { DEFAULT_MAX_DELAY_MS, DEFAULT_QR_MAX_HISTORY, DEFAULT_RECORDING_OPTIONS, DEFAULT_TRACKING_QUALITY_OPTIONS, DEPTH_CONSTRAINTS, IMAGE_CONSTRAINTS, ReplayEngine, STORAGE_KEY, add2dImage, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, captureGpsAnchorSample, clearAllQrMarkers, clearLastRestartedPayload, clearQrMarker, cloneRecordingOptions, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeInterActionDelay, computeOnboardingGuidance, computeResidualConsensus, computeTrackingQualityReport, createGpsPositionHandler, createPersistenceMiddleware, createSlamAppStore, createTrackingQualityListenerMiddleware, degradedCountUpdated, endSession, eulerToQuaternion, extractActionTimestamp, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, loadRecordingOptions, matrixDelta, medianQrPosition, originReset, poseLost, poseReceived, pruneQrDetections, qrDetectedReducer, recordDepthSample, recordGpsEvent, recordQrDetection, recordQrSizeEstimate, recordWriteFailure, recordingReducer, replayRecording, reportUpdated, resetCoordinatorState, resetRecordingOptions, resetTracking, resetTrackingQuality, saveRecordingOptions, selectAlignmentMatrix, selectDerivedQrPlacement, selectFrameTilesInWebXR, selectGpsPositions, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLatestQrDetection, selectLostFrameCount, selectOdometryPositions, selectOdometryRotations, selectOnboardingGuidance, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectRecentAlignments, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, selectTrackingPhase, selectTrackingQuality, selectZeroReference, setQrMaxHistory, setZeroPos, slicePrefixOf, snapshotPushed, snapshotsTrimmed, startSession, subscribeToSelector, trackingQualityReducer, trackingReducer, updateDeviceOrientation, validateDepthOptions, validateImageOptions, validateRecordingOptions, wireStoreSubscribers };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createPersistenceMiddleware, r as slicePrefixOf, t as PersistenceMiddlewareOptions } from "../persistence-middleware-
|
|
1
|
+
import { n as createPersistenceMiddleware, r as slicePrefixOf, t as PersistenceMiddlewareOptions } from "../persistence-middleware-CI4Cetnl.js";
|
|
2
2
|
export { PersistenceMiddlewareOptions, createPersistenceMiddleware, slicePrefixOf };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as QrSizeStatus, l as QrSizeEstimate } from "../qr-size-measurer-
|
|
2
|
-
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-
|
|
3
|
-
import { C as setQrMaxHistory, S as selectStableQrPose, _ as selectQrPoseStability, a as RootWithQrDetected, b as selectResolvedQrSizeM, c as medianQrPosition, d as recordQrDetection, f as recordQrSizeEstimate, g as selectQrMarkers, h as selectQrMarker, i as QrMarkerState, l as pruneQrDetections, m as selectLatestQrDetection, n as QrDetectedState, o as clearAllQrMarkers, p as selectDerivedQrPlacement, r as QrDetectionEntry, s as clearQrMarker, t as DEFAULT_QR_MAX_HISTORY, u as qrDetectedReducer, v as selectQrRawObservations, x as selectSolvedQrPose, y as selectQrSize } from "../qr-detected-slice-
|
|
1
|
+
import { d as QrSizeStatus, l as QrSizeEstimate } from "../qr-size-measurer-Bl_i-umk.js";
|
|
2
|
+
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-BL6gfl0s.js";
|
|
3
|
+
import { C as setQrMaxHistory, S as selectStableQrPose, _ as selectQrPoseStability, a as RootWithQrDetected, b as selectResolvedQrSizeM, c as medianQrPosition, d as recordQrDetection, f as recordQrSizeEstimate, g as selectQrMarkers, h as selectQrMarker, i as QrMarkerState, l as pruneQrDetections, m as selectLatestQrDetection, n as QrDetectedState, o as clearAllQrMarkers, p as selectDerivedQrPlacement, r as QrDetectionEntry, s as clearQrMarker, t as DEFAULT_QR_MAX_HISTORY, u as qrDetectedReducer, v as selectQrRawObservations, x as selectSolvedQrPose, y as selectQrSize } from "../qr-detected-slice-CPEkGbxh.js";
|
|
4
4
|
export { DEFAULT_QR_MAX_HISTORY, QrDetectedState, QrDetectionEntry, QrMarkerState, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrSizeEstimate, QrSizeStatus, RootWithQrDetected, clearAllQrMarkers, clearQrMarker, medianQrPosition, pruneQrDetections, qrDetectedReducer, recordQrDetection, recordQrSizeEstimate, selectDerivedQrPlacement, selectLatestQrDetection, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, setQrMaxHistory };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { n as lowerMedian } from "../median-Bla_W50f.js";
|
|
1
2
|
import { deriveQrPlacement, deriveSolvedQrPose } from "../ar/qr-derived-pose.js";
|
|
2
|
-
import { i as evaluateQrPoseStability } from "../qr-pose-aggregation-
|
|
3
|
+
import { i as evaluateQrPoseStability } from "../qr-pose-aggregation-H-O_Jjz9.js";
|
|
3
4
|
import { createSlice } from "@reduxjs/toolkit";
|
|
4
5
|
//#region ../src/state/qr-detected-slice.ts
|
|
5
6
|
/**
|
|
@@ -201,11 +202,6 @@ function selectResolvedQrSizeM(state, text) {
|
|
|
201
202
|
const size = state.qrDetected.markers[text]?.size;
|
|
202
203
|
return size?.status === "estimated" ? size.estimateM : null;
|
|
203
204
|
}
|
|
204
|
-
/** Per-axis median of a numeric list (returns the lower-middle for even n). */
|
|
205
|
-
function medianOf(values) {
|
|
206
|
-
const sorted = [...values].sort((a, b) => a - b);
|
|
207
|
-
return sorted[Math.floor((sorted.length - 1) / 2)];
|
|
208
|
-
}
|
|
209
205
|
/**
|
|
210
206
|
* Robust per-axis median of the world positions across a marker's detection
|
|
211
207
|
* window — the "running estimate" the bounded buffer enables (Note 3). Outliers
|
|
@@ -220,9 +216,9 @@ function medianQrPosition(entries) {
|
|
|
220
216
|
const ys = poses.map((p) => p.position[1]);
|
|
221
217
|
const zs = poses.map((p) => p.position[2]);
|
|
222
218
|
return [
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
219
|
+
lowerMedian(xs),
|
|
220
|
+
lowerMedian(ys),
|
|
221
|
+
lowerMedian(zs)
|
|
226
222
|
];
|
|
227
223
|
}
|
|
228
224
|
/**
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as validateFrameTileDisplayOptions, C as cloneRecordingOptions, D as validateArCrashIsolationOptions, E as saveRecordingOptions, F as validateQrOptions, I as validateQualityFilterOptions, L as validateRecordingOptions, M as validateLoopClosureDebugOptions, N as validateMotionFilterOptions, O as validateCompassDebugOptions, P as validateOccupancyOptions, R as validateVisualizationOptions, S as VisualizationOptions, T as resetRecordingOptions, _ as QUALITY_FILTER_CONSTRAINTS, a as DepthCaptureOptions, b as RecordingOptionsInput, c as IMAGE_CONSTRAINTS, d as MOTION_FILTER_CONSTRAINTS, f as OCCUPANCY_CONSTRAINTS, g as QR_CONSTRAINTS, h as OccupancyOptions, i as DEPTH_CONSTRAINTS, j as validateImageOptions, k as validateDepthOptions, l as ImageCaptureOptions, m as OccluderMeshMode, n as CompassDebugOptions, o as FRAME_TILE_DISPLAY_CONSTRAINTS, p as OccluderDebugStyle, r as DEFAULT_RECORDING_OPTIONS, s as FrameTileDisplayOptions, t as ArCrashIsolationOptions, u as LoopClosureDebugOptions, v as QrCaptureOptions, w as loadRecordingOptions, x as STORAGE_KEY, y as RecordingOptions } from "../recording-options-
|
|
1
|
+
import { A as validateFrameTileDisplayOptions, C as cloneRecordingOptions, D as validateArCrashIsolationOptions, E as saveRecordingOptions, F as validateQrOptions, I as validateQualityFilterOptions, L as validateRecordingOptions, M as validateLoopClosureDebugOptions, N as validateMotionFilterOptions, O as validateCompassDebugOptions, P as validateOccupancyOptions, R as validateVisualizationOptions, S as VisualizationOptions, T as resetRecordingOptions, _ as QUALITY_FILTER_CONSTRAINTS, a as DepthCaptureOptions, b as RecordingOptionsInput, c as IMAGE_CONSTRAINTS, d as MOTION_FILTER_CONSTRAINTS, f as OCCUPANCY_CONSTRAINTS, g as QR_CONSTRAINTS, h as OccupancyOptions, i as DEPTH_CONSTRAINTS, j as validateImageOptions, k as validateDepthOptions, l as ImageCaptureOptions, m as OccluderMeshMode, n as CompassDebugOptions, o as FRAME_TILE_DISPLAY_CONSTRAINTS, p as OccluderDebugStyle, r as DEFAULT_RECORDING_OPTIONS, s as FrameTileDisplayOptions, t as ArCrashIsolationOptions, u as LoopClosureDebugOptions, v as QrCaptureOptions, w as loadRecordingOptions, x as STORAGE_KEY, y as RecordingOptions } from "../recording-options-Cai9D14V.js";
|
|
2
2
|
export { ArCrashIsolationOptions, CompassDebugOptions, DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, DepthCaptureOptions, FRAME_TILE_DISPLAY_CONSTRAINTS, FrameTileDisplayOptions, IMAGE_CONSTRAINTS, ImageCaptureOptions, LoopClosureDebugOptions, MOTION_FILTER_CONSTRAINTS, OCCUPANCY_CONSTRAINTS, OccluderDebugStyle, OccluderMeshMode, OccupancyOptions, QR_CONSTRAINTS, QUALITY_FILTER_CONSTRAINTS, QrCaptureOptions, RecordingOptions, RecordingOptionsInput, STORAGE_KEY, VisualizationOptions, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateArCrashIsolationOptions, validateCompassDebugOptions, validateDepthOptions, validateFrameTileDisplayOptions, validateImageOptions, validateLoopClosureDebugOptions, validateMotionFilterOptions, validateOccupancyOptions, validateQrOptions, validateQualityFilterOptions, validateRecordingOptions, validateVisualizationOptions };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger.js";
|
|
2
|
-
import { t as DEFAULT_MOTION_FILTER } from "../capture-motion-gate-
|
|
2
|
+
import { t as DEFAULT_MOTION_FILTER } from "../capture-motion-gate-D1eyGC_o.js";
|
|
3
3
|
import { DEFAULT_QUALITY_FILTER } from "../ar/image-quality.js";
|
|
4
4
|
//#region ../src/state/recording-options.ts
|
|
5
5
|
/**
|
|
@@ -140,12 +140,23 @@ const DEPTH_CONSTRAINTS = {
|
|
|
140
140
|
step: 1
|
|
141
141
|
}
|
|
142
142
|
};
|
|
143
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* Validation constraints for image options.
|
|
145
|
+
*
|
|
146
|
+
* `intervalMs` min/step lowered 1000/500 → 250/250 (2026-07-10) so
|
|
147
|
+
* splat-style object scans can capture up to 4 Hz — at the old 1 Hz floor a
|
|
148
|
+
* slow orbit yields ~1 frame/m, too sparse for Gaussian-splat reconstruction
|
|
149
|
+
* (50–150+ frames/object). An interval faster than the readback+encode path
|
|
150
|
+
* cannot overlap captures: `captureInProgress` serialises them and the
|
|
151
|
+
* interval is measured from the actual capture time, so the pipeline
|
|
152
|
+
* self-limits. See
|
|
153
|
+
* GpsPlusSlamJs_Docs/docs/2026-07-10-splat-orbit-capture-rate-finding.md.
|
|
154
|
+
*/
|
|
144
155
|
const IMAGE_CONSTRAINTS = {
|
|
145
156
|
intervalMs: {
|
|
146
|
-
min:
|
|
157
|
+
min: 250,
|
|
147
158
|
max: 1e4,
|
|
148
|
-
step:
|
|
159
|
+
step: 250
|
|
149
160
|
},
|
|
150
161
|
quality: {
|
|
151
162
|
min: .3,
|
|
@@ -293,15 +304,33 @@ const QR_CONSTRAINTS = {
|
|
|
293
304
|
* Validate and normalize AR crash isolation flags.
|
|
294
305
|
* Missing or invalid values fall back to defaults.
|
|
295
306
|
*/
|
|
307
|
+
/**
|
|
308
|
+
* Boolean-or-default (quality-review C-1): persisted/external values are
|
|
309
|
+
* untrusted, so anything that is not a real boolean falls back to the
|
|
310
|
+
* default. Shared by every validator below — the ~30 hand-rolled copies of
|
|
311
|
+
* this ternary are exactly the drift a helper prevents.
|
|
312
|
+
*/
|
|
313
|
+
function boolOr(value, fallback) {
|
|
314
|
+
return typeof value === "boolean" ? value : fallback;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Finite-number-or-default (quality-review C-1): anything that is not a
|
|
318
|
+
* FINITE number falls back to the default. The finiteness guard was applied
|
|
319
|
+
* inconsistently across the hand-rolled validators; it is now uniform.
|
|
320
|
+
* Range/step constraints beyond finiteness stay at the call sites.
|
|
321
|
+
*/
|
|
322
|
+
function numOr(value, fallback) {
|
|
323
|
+
return typeof value === "number" && Number.isFinite(value) ? value : fallback;
|
|
324
|
+
}
|
|
296
325
|
function validateArCrashIsolationOptions(options) {
|
|
297
326
|
const defaults = DEFAULT_RECORDING_OPTIONS.arCrashIsolation;
|
|
298
327
|
return {
|
|
299
|
-
enableDomOverlay:
|
|
300
|
-
enableCameraAccess:
|
|
301
|
-
enableDepthSensingFeature:
|
|
302
|
-
enableCss3dRenderer:
|
|
303
|
-
enableCameraTextureAcquisition:
|
|
304
|
-
applyChromiumProjectionLayerWorkaround:
|
|
328
|
+
enableDomOverlay: boolOr(options.enableDomOverlay, defaults.enableDomOverlay),
|
|
329
|
+
enableCameraAccess: boolOr(options.enableCameraAccess, defaults.enableCameraAccess),
|
|
330
|
+
enableDepthSensingFeature: boolOr(options.enableDepthSensingFeature, defaults.enableDepthSensingFeature),
|
|
331
|
+
enableCss3dRenderer: boolOr(options.enableCss3dRenderer, defaults.enableCss3dRenderer),
|
|
332
|
+
enableCameraTextureAcquisition: boolOr(options.enableCameraTextureAcquisition, defaults.enableCameraTextureAcquisition),
|
|
333
|
+
applyChromiumProjectionLayerWorkaround: boolOr(options.applyChromiumProjectionLayerWorkaround, defaults.applyChromiumProjectionLayerWorkaround)
|
|
305
334
|
};
|
|
306
335
|
}
|
|
307
336
|
/**
|
|
@@ -312,9 +341,9 @@ function validateArCrashIsolationOptions(options) {
|
|
|
312
341
|
function validateCompassDebugOptions(options) {
|
|
313
342
|
const defaults = DEFAULT_RECORDING_OPTIONS.compassDebug;
|
|
314
343
|
return {
|
|
315
|
-
coldStartOverride:
|
|
316
|
-
rotationPrior:
|
|
317
|
-
webXRConsistency:
|
|
344
|
+
coldStartOverride: boolOr(options.coldStartOverride, defaults.coldStartOverride),
|
|
345
|
+
rotationPrior: boolOr(options.rotationPrior, defaults.rotationPrior),
|
|
346
|
+
webXRConsistency: boolOr(options.webXRConsistency, defaults.webXRConsistency)
|
|
318
347
|
};
|
|
319
348
|
}
|
|
320
349
|
/**
|
|
@@ -324,7 +353,7 @@ function validateCompassDebugOptions(options) {
|
|
|
324
353
|
*/
|
|
325
354
|
function validateLoopClosureDebugOptions(options) {
|
|
326
355
|
const defaults = DEFAULT_RECORDING_OPTIONS.loopClosureDebug;
|
|
327
|
-
return { detectorEnabled:
|
|
356
|
+
return { detectorEnabled: boolOr(options.detectorEnabled, defaults.detectorEnabled) };
|
|
328
357
|
}
|
|
329
358
|
/**
|
|
330
359
|
* Validate and normalize the live debug-overlay visibility toggles.
|
|
@@ -335,12 +364,12 @@ function validateLoopClosureDebugOptions(options) {
|
|
|
335
364
|
function validateVisualizationOptions(options) {
|
|
336
365
|
const defaults = DEFAULT_RECORDING_OPTIONS.visualization;
|
|
337
366
|
return {
|
|
338
|
-
frameTiles:
|
|
339
|
-
occupancyCubes:
|
|
340
|
-
gpsAlignmentMarkers:
|
|
341
|
-
compassCubes:
|
|
342
|
-
headingUpMap:
|
|
343
|
-
statsOverlay:
|
|
367
|
+
frameTiles: boolOr(options.frameTiles, defaults.frameTiles),
|
|
368
|
+
occupancyCubes: boolOr(options.occupancyCubes, defaults.occupancyCubes),
|
|
369
|
+
gpsAlignmentMarkers: boolOr(options.gpsAlignmentMarkers, defaults.gpsAlignmentMarkers),
|
|
370
|
+
compassCubes: boolOr(options.compassCubes, defaults.compassCubes),
|
|
371
|
+
headingUpMap: boolOr(options.headingUpMap, defaults.headingUpMap),
|
|
372
|
+
statsOverlay: boolOr(options.statsOverlay, defaults.statsOverlay)
|
|
344
373
|
};
|
|
345
374
|
}
|
|
346
375
|
/**
|
|
@@ -360,9 +389,9 @@ function clamp(value, min, max) {
|
|
|
360
389
|
function validateQrOptions(options) {
|
|
361
390
|
const defaults = DEFAULT_RECORDING_OPTIONS.qr;
|
|
362
391
|
return {
|
|
363
|
-
enabled:
|
|
364
|
-
intervalMs: clamp(
|
|
365
|
-
captureSize: clamp(
|
|
392
|
+
enabled: boolOr(options.enabled, defaults.enabled),
|
|
393
|
+
intervalMs: clamp(numOr(options.intervalMs, defaults.intervalMs), QR_CONSTRAINTS.intervalMs.min, QR_CONSTRAINTS.intervalMs.max),
|
|
394
|
+
captureSize: clamp(numOr(options.captureSize, defaults.captureSize), QR_CONSTRAINTS.captureSize.min, QR_CONSTRAINTS.captureSize.max)
|
|
366
395
|
};
|
|
367
396
|
}
|
|
368
397
|
/**
|
|
@@ -372,10 +401,10 @@ function validateQrOptions(options) {
|
|
|
372
401
|
function validateDepthOptions(options) {
|
|
373
402
|
const defaults = DEFAULT_RECORDING_OPTIONS.depth;
|
|
374
403
|
return {
|
|
375
|
-
enabled:
|
|
376
|
-
intervalMs: clamp(
|
|
377
|
-
gridSize: clamp(
|
|
378
|
-
rgb:
|
|
404
|
+
enabled: boolOr(options.enabled, defaults.enabled),
|
|
405
|
+
intervalMs: clamp(numOr(options.intervalMs, defaults.intervalMs), DEPTH_CONSTRAINTS.intervalMs.min, DEPTH_CONSTRAINTS.intervalMs.max),
|
|
406
|
+
gridSize: clamp(Math.round(numOr(options.gridSize, defaults.gridSize)), DEPTH_CONSTRAINTS.gridSize.min, DEPTH_CONSTRAINTS.gridSize.max),
|
|
407
|
+
rgb: boolOr(options.rgb, defaults.rgb)
|
|
379
408
|
};
|
|
380
409
|
}
|
|
381
410
|
/**
|
|
@@ -389,10 +418,10 @@ function validateDepthOptions(options) {
|
|
|
389
418
|
function validateMotionFilterOptions(options) {
|
|
390
419
|
const defaults = DEFAULT_RECORDING_OPTIONS.images.motionFilter;
|
|
391
420
|
return {
|
|
392
|
-
enabled:
|
|
393
|
-
maxAngularVelocity: clamp(
|
|
394
|
-
maxLinearVelocity: clamp(
|
|
395
|
-
maxWaitMs: clamp(
|
|
421
|
+
enabled: boolOr(options.enabled, defaults.enabled),
|
|
422
|
+
maxAngularVelocity: clamp(numOr(options.maxAngularVelocity, defaults.maxAngularVelocity), MOTION_FILTER_CONSTRAINTS.maxAngularVelocity.min, MOTION_FILTER_CONSTRAINTS.maxAngularVelocity.max),
|
|
423
|
+
maxLinearVelocity: clamp(numOr(options.maxLinearVelocity, defaults.maxLinearVelocity), MOTION_FILTER_CONSTRAINTS.maxLinearVelocity.min, MOTION_FILTER_CONSTRAINTS.maxLinearVelocity.max),
|
|
424
|
+
maxWaitMs: clamp(numOr(options.maxWaitMs, defaults.maxWaitMs), MOTION_FILTER_CONSTRAINTS.maxWaitMs.min, MOTION_FILTER_CONSTRAINTS.maxWaitMs.max)
|
|
396
425
|
};
|
|
397
426
|
}
|
|
398
427
|
/**
|
|
@@ -407,10 +436,10 @@ function validateMotionFilterOptions(options) {
|
|
|
407
436
|
function validateQualityFilterOptions(options) {
|
|
408
437
|
const defaults = DEFAULT_RECORDING_OPTIONS.images.qualityFilter;
|
|
409
438
|
return {
|
|
410
|
-
enabled:
|
|
411
|
-
blurRelativeThreshold: clamp(
|
|
412
|
-
minMeanLuminance: clamp(
|
|
413
|
-
maxWaitMs: clamp(
|
|
439
|
+
enabled: boolOr(options.enabled, defaults.enabled),
|
|
440
|
+
blurRelativeThreshold: clamp(numOr(options.blurRelativeThreshold, defaults.blurRelativeThreshold), QUALITY_FILTER_CONSTRAINTS.blurRelativeThreshold.min, QUALITY_FILTER_CONSTRAINTS.blurRelativeThreshold.max),
|
|
441
|
+
minMeanLuminance: clamp(numOr(options.minMeanLuminance, defaults.minMeanLuminance), QUALITY_FILTER_CONSTRAINTS.minMeanLuminance.min, QUALITY_FILTER_CONSTRAINTS.minMeanLuminance.max),
|
|
442
|
+
maxWaitMs: clamp(numOr(options.maxWaitMs, defaults.maxWaitMs), QUALITY_FILTER_CONSTRAINTS.maxWaitMs.min, QUALITY_FILTER_CONSTRAINTS.maxWaitMs.max)
|
|
414
443
|
};
|
|
415
444
|
}
|
|
416
445
|
/**
|
|
@@ -420,10 +449,10 @@ function validateQualityFilterOptions(options) {
|
|
|
420
449
|
function validateImageOptions(options) {
|
|
421
450
|
const defaults = DEFAULT_RECORDING_OPTIONS.images;
|
|
422
451
|
return {
|
|
423
|
-
enabled:
|
|
424
|
-
intervalMs: clamp(
|
|
425
|
-
quality: clamp(
|
|
426
|
-
resolutionDivisor: clamp(
|
|
452
|
+
enabled: boolOr(options.enabled, defaults.enabled),
|
|
453
|
+
intervalMs: clamp(numOr(options.intervalMs, defaults.intervalMs), IMAGE_CONSTRAINTS.intervalMs.min, IMAGE_CONSTRAINTS.intervalMs.max),
|
|
454
|
+
quality: clamp(numOr(options.quality, defaults.quality), IMAGE_CONSTRAINTS.quality.min, IMAGE_CONSTRAINTS.quality.max),
|
|
455
|
+
resolutionDivisor: clamp(numOr(options.resolutionDivisor, defaults.resolutionDivisor), IMAGE_CONSTRAINTS.resolutionDivisor.min, IMAGE_CONSTRAINTS.resolutionDivisor.max),
|
|
427
456
|
motionFilter: validateMotionFilterOptions(options.motionFilter ?? {}),
|
|
428
457
|
qualityFilter: validateQualityFilterOptions(options.qualityFilter ?? {})
|
|
429
458
|
};
|
|
@@ -478,13 +507,13 @@ function validateOccupancyOptions(options) {
|
|
|
478
507
|
const legacyOcclusionMeshEnabled = options.occlusionMeshEnabled;
|
|
479
508
|
const legacyOccluderDebugViz = options.occluderDebugViz;
|
|
480
509
|
return {
|
|
481
|
-
cellSizeM: clamp(
|
|
482
|
-
minConfidence: clamp(
|
|
510
|
+
cellSizeM: clamp(numOr(options.cellSizeM, defaults.cellSizeM), OCCUPANCY_CONSTRAINTS.cellSizeM.min, OCCUPANCY_CONSTRAINTS.cellSizeM.max),
|
|
511
|
+
minConfidence: clamp(Math.round(numOr(options.minConfidence, defaults.minConfidence)), OCCUPANCY_CONSTRAINTS.minConfidence.min, OCCUPANCY_CONSTRAINTS.minConfidence.max),
|
|
483
512
|
persistentOcclusion: resolvePersistentOcclusion(options, legacyOcclusionMeshEnabled, defaults.persistentOcclusion),
|
|
484
|
-
liveOcclusion:
|
|
513
|
+
liveOcclusion: boolOr(options.liveOcclusion, defaults.liveOcclusion),
|
|
485
514
|
occluderDebugStyle: resolveOccluderDebugStyle(options, legacyOccluderDebugViz, defaults.occluderDebugStyle),
|
|
486
515
|
occluderMeshMode: OCCLUDER_MESH_MODES.includes(options.occluderMeshMode) ? options.occluderMeshMode : defaults.occluderMeshMode,
|
|
487
|
-
occluderRadiusM: clamp(
|
|
516
|
+
occluderRadiusM: clamp(Math.round(numOr(options.occluderRadiusM, defaults.occluderRadiusM)), OCCUPANCY_CONSTRAINTS.occluderRadiusM.min, OCCUPANCY_CONSTRAINTS.occluderRadiusM.max)
|
|
488
517
|
};
|
|
489
518
|
}
|
|
490
519
|
/**
|
|
@@ -497,8 +526,8 @@ function validateOccupancyOptions(options) {
|
|
|
497
526
|
function validateFrameTileDisplayOptions(options) {
|
|
498
527
|
const defaults = DEFAULT_RECORDING_OPTIONS.frameTileDisplay;
|
|
499
528
|
return {
|
|
500
|
-
divisor: clamp(
|
|
501
|
-
maxTiles: clamp(
|
|
529
|
+
divisor: clamp(Math.round(numOr(options.divisor, defaults.divisor)), FRAME_TILE_DISPLAY_CONSTRAINTS.divisor.min, FRAME_TILE_DISPLAY_CONSTRAINTS.divisor.max),
|
|
530
|
+
maxTiles: clamp(Math.round(numOr(options.maxTiles, defaults.maxTiles)), FRAME_TILE_DISPLAY_CONSTRAINTS.maxTiles.min, FRAME_TILE_DISPLAY_CONSTRAINTS.maxTiles.max)
|
|
502
531
|
};
|
|
503
532
|
}
|
|
504
533
|
/**
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { N as CombinedRootState } from "../create-slam-app-store-
|
|
2
|
-
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-
|
|
1
|
+
import { N as CombinedRootState } from "../create-slam-app-store-CH31erpP.js";
|
|
2
|
+
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-DyIN13nG.js";
|
|
3
3
|
export { CombinedRootState, ReplayRecordingOptions, replayRecording };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { loadActionsFromZip } from "../storage/zip-reader.js";
|
|
2
2
|
import { NullStorageBackend } from "../storage/null-storage-backend.js";
|
|
3
|
-
import { t as createSlamAppStore } from "../create-slam-app-store-
|
|
3
|
+
import { t as createSlamAppStore } from "../create-slam-app-store-DLv5ZwqU.js";
|
|
4
4
|
//#region ../src/state/recording-replayer.ts
|
|
5
5
|
/**
|
|
6
6
|
* Recording Replayer
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as recordWriteFailure, i as recordDepthSample, n as SessionMetadata, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "../recording-slice-
|
|
1
|
+
import { a as recordWriteFailure, i as recordDepthSample, n as SessionMetadata, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "../recording-slice-DziOl7P5.js";
|
|
2
2
|
export { RecordingState, SessionMetadata, endSession, recordDepthSample, recordWriteFailure, recordingReducer, startSession };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
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-
|
|
1
|
+
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-DAymjsd1.js";
|
|
2
2
|
export { CompleteCallback, DEFAULT_MAX_DELAY_MS, ErrorCallback, ProgressCallback, ReplayAction, ReplayEngine, ReplayState, computeInterActionDelay, extractActionTimestamp };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as SubscribableStore } from "../subscribe-to-selector-
|
|
2
|
-
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-
|
|
1
|
+
import { t as SubscribableStore } from "../subscribe-to-selector-Cgo9JTfS.js";
|
|
2
|
+
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-DtwakLrQ.js";
|
|
3
3
|
export { StoreSubscriberDeps, SubscribableStore, wireStoreSubscribers };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger.js";
|
|
2
2
|
import { selectAlignmentMatrix, selectGpsPositions, selectOdometryPositions, selectOdometryRotations, selectZeroReference } from "./app-selectors.js";
|
|
3
|
-
import { t as buildMapData } from "../map-data-
|
|
3
|
+
import { t as buildMapData } from "../map-data-D3oE8AQP.js";
|
|
4
4
|
import { subscribeToSelector } from "./subscribe-to-selector.js";
|
|
5
|
-
import { calcGpsCoords } from "gps-plus-slam-js";
|
|
6
5
|
import { mat4, vec3 } from "gl-matrix";
|
|
6
|
+
import { calcGpsCoords } from "gps-plus-slam-js";
|
|
7
7
|
//#region ../src/state/store-subscribers.ts
|
|
8
8
|
const log = createLogger("StoreSubscribers");
|
|
9
9
|
/**
|
|
@@ -42,21 +42,38 @@ function wireStoreSubscribers(store, deps) {
|
|
|
42
42
|
* fused-dot feedback, Slice B), or `null` when there is no overlay or it
|
|
43
43
|
* has no `render` (the minimal `setGpsPosition`-only dep shape).
|
|
44
44
|
*/
|
|
45
|
+
let lastGpsPositionsRef = null;
|
|
46
|
+
let lastOdomPositionsRef = null;
|
|
47
|
+
let lastMatrixRef = null;
|
|
48
|
+
let lastZeroRef = null;
|
|
49
|
+
let lastSnapshotCount = -1;
|
|
50
|
+
let lastMapData = null;
|
|
45
51
|
function rebuildMap() {
|
|
46
52
|
if (!deps.mapOverlay?.render) return null;
|
|
47
53
|
const state = store.getState();
|
|
54
|
+
const gpsPositions = selectGpsPositions(state);
|
|
55
|
+
const odometryPositions = selectOdometryPositions(state);
|
|
56
|
+
const alignmentMatrix = selectAlignmentMatrix(state);
|
|
57
|
+
const zeroRef = selectZeroReference(state);
|
|
58
|
+
if (gpsPositions === lastGpsPositionsRef && odometryPositions === lastOdomPositionsRef && alignmentMatrix === lastMatrixRef && zeroRef === lastZeroRef && alignmentSnapshotGps.length === lastSnapshotCount) return lastMapData;
|
|
48
59
|
const data = buildMapData({
|
|
49
|
-
rawGpsPath:
|
|
60
|
+
rawGpsPath: gpsPositions.map((p) => ({
|
|
50
61
|
lat: p.latitude,
|
|
51
62
|
lng: p.longitude,
|
|
52
63
|
accuracy: p.latLongAccuracy
|
|
53
64
|
})),
|
|
54
|
-
odometryPositions
|
|
65
|
+
odometryPositions,
|
|
55
66
|
odometryRotations: selectOdometryRotations(state),
|
|
56
|
-
alignmentMatrix
|
|
57
|
-
zeroRef
|
|
67
|
+
alignmentMatrix,
|
|
68
|
+
zeroRef,
|
|
58
69
|
alignmentSnapshots: alignmentSnapshotGps
|
|
59
70
|
});
|
|
71
|
+
lastGpsPositionsRef = gpsPositions;
|
|
72
|
+
lastOdomPositionsRef = odometryPositions;
|
|
73
|
+
lastMatrixRef = alignmentMatrix;
|
|
74
|
+
lastZeroRef = zeroRef;
|
|
75
|
+
lastSnapshotCount = alignmentSnapshotGps.length;
|
|
76
|
+
lastMapData = data;
|
|
60
77
|
try {
|
|
61
78
|
deps.mapOverlay.render(data);
|
|
62
79
|
} catch (err) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-
|
|
1
|
+
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-Cgo9JTfS.js";
|
|
2
2
|
export { SubscribableStore, subscribeToSelector };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as snapshotPushed, C as createTrackingQualityListenerMiddleware, D as resetTrackingQuality, E as reportUpdated, M as trackingQualityReducer, O as selectRecentAlignments, S as computeTrackingQualityReport, T as matrixDelta, _ as computeConvergence, b as computeGpsVsFusedDivergence, c as ConvergenceResult, d as GpsAccuracyResult, f as ResidualConsensusResult, g as TrackingQualityState, h as TrackingQualitySliceState, j as snapshotsTrimmed, k as selectTrackingQuality, l as CoverageResult, m as TrackingQualityReport, p as TrackingQualityOptions, s as AlignmentSnapshot, u as DEFAULT_TRACKING_QUALITY_OPTIONS, v as computeCoverage, w as degradedCountUpdated, x as computeResidualConsensus, y as computeGpsAccuracy } from "../create-slam-app-store-
|
|
1
|
+
import { A as snapshotPushed, C as createTrackingQualityListenerMiddleware, D as resetTrackingQuality, E as reportUpdated, M as trackingQualityReducer, O as selectRecentAlignments, S as computeTrackingQualityReport, T as matrixDelta, _ as computeConvergence, b as computeGpsVsFusedDivergence, c as ConvergenceResult, d as GpsAccuracyResult, f as ResidualConsensusResult, g as TrackingQualityState, h as TrackingQualitySliceState, j as snapshotsTrimmed, k as selectTrackingQuality, l as CoverageResult, m as TrackingQualityReport, p as TrackingQualityOptions, s as AlignmentSnapshot, u as DEFAULT_TRACKING_QUALITY_OPTIONS, v as computeCoverage, w as degradedCountUpdated, x as computeResidualConsensus, y as computeGpsAccuracy } from "../create-slam-app-store-CH31erpP.js";
|
|
2
2
|
export { AlignmentSnapshot, ConvergenceResult, CoverageResult, DEFAULT_TRACKING_QUALITY_OPTIONS, GpsAccuracyResult, ResidualConsensusResult, TrackingQualityOptions, TrackingQualityReport, TrackingQualitySliceState, TrackingQualityState, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeResidualConsensus, computeTrackingQualityReport, createTrackingQualityListenerMiddleware, degradedCountUpdated, matrixDelta, reportUpdated, resetTrackingQuality, selectRecentAlignments, selectTrackingQuality, snapshotPushed, snapshotsTrimmed, trackingQualityReducer };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as interpolatingMedian } from "../median-Bla_W50f.js";
|
|
2
|
+
import { t as geodesicAngleRad } from "../geodesic-angle-HXBWiXiI.js";
|
|
2
3
|
import { selectTrackingPhase } from "./tracking-slice.js";
|
|
3
4
|
import { selectAlignmentMatrix, selectGpsPositions, selectOdometryPositions, selectZeroReference } from "./app-selectors.js";
|
|
4
|
-
import { calcGpsCoords, distanceInMeters } from "gps-plus-slam-js";
|
|
5
5
|
import { mat4, quat, vec3 } from "gl-matrix";
|
|
6
|
+
import { calcGpsCoords, distanceInMeters } from "gps-plus-slam-js";
|
|
6
7
|
import { createListenerMiddleware, createSlice } from "@reduxjs/toolkit";
|
|
7
8
|
//#region ../src/state/tracking-quality.ts
|
|
8
9
|
const DEFAULT_TRACKING_QUALITY_OPTIONS = {
|
|
@@ -19,7 +20,7 @@ const DEFAULT_TRACKING_QUALITY_OPTIONS = {
|
|
|
19
20
|
residualConfidenceTargetM: 3,
|
|
20
21
|
gpsAccuracyFloorM: 1,
|
|
21
22
|
degradedHoldoff: 3,
|
|
22
|
-
convergenceEmaAlpha: .
|
|
23
|
+
convergenceEmaAlpha: .25
|
|
23
24
|
};
|
|
24
25
|
const initialState = {
|
|
25
26
|
recentAlignments: [],
|
|
@@ -49,12 +50,6 @@ function bearingDeg(north, east) {
|
|
|
49
50
|
if (deg < 0) deg += 360;
|
|
50
51
|
return deg;
|
|
51
52
|
}
|
|
52
|
-
function median(values) {
|
|
53
|
-
if (values.length === 0) return 0;
|
|
54
|
-
const sorted = [...values].sort((a, b) => a - b);
|
|
55
|
-
const mid = Math.floor(sorted.length / 2);
|
|
56
|
-
return sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
|
|
57
|
-
}
|
|
58
53
|
/**
|
|
59
54
|
* Linear ramp: `value ≤ low` → 1, `value ≥ high` → 0, linear between.
|
|
60
55
|
* Used by sub-scores whose underlying physical quantity grows as
|
|
@@ -238,7 +233,7 @@ function computeResidualConsensus(alignmentMatrix, gpsPositions, odometryPositio
|
|
|
238
233
|
medianResidualM: rawResidualCount > 0 ? rawResidualSum / rawResidualCount : 0,
|
|
239
234
|
count: normalised.length
|
|
240
235
|
};
|
|
241
|
-
const medianNorm =
|
|
236
|
+
const medianNorm = interpolatingMedian(normalised);
|
|
242
237
|
const medianResidualM = rawResidualSum / rawResidualCount;
|
|
243
238
|
return {
|
|
244
239
|
score: clamp01(1 / (1 + medianNorm / options.residualConfidenceTargetM)),
|
|
@@ -280,7 +275,7 @@ function computeGpsAccuracy(gpsPositions, options = {}) {
|
|
|
280
275
|
countAccurate: 0,
|
|
281
276
|
countTotal: gpsPositions.length - start
|
|
282
277
|
};
|
|
283
|
-
const medianM =
|
|
278
|
+
const medianM = interpolatingMedian(accs);
|
|
284
279
|
return {
|
|
285
280
|
score: rampDown(medianM, goodMedianM, badMedianM),
|
|
286
281
|
medianM,
|
|
@@ -597,15 +592,23 @@ function createTrackingQualityListenerMiddleware(options = {}) {
|
|
|
597
592
|
...options
|
|
598
593
|
};
|
|
599
594
|
const listenerMiddleware = createListenerMiddleware();
|
|
595
|
+
let lastPoseActionPhase = null;
|
|
600
596
|
listenerMiddleware.startListening({
|
|
601
597
|
predicate: (action) => inputActionPredicate(action),
|
|
602
598
|
effect: (action, api) => {
|
|
603
599
|
const state = api.getState();
|
|
604
600
|
if (action.type === TRACKING_QUALITY_INPUT_ACTIONS.startSession || action.type === TRACKING_QUALITY_INPUT_ACTIONS.resetTracking) {
|
|
601
|
+
lastPoseActionPhase = null;
|
|
605
602
|
const tq = state.trackingQuality;
|
|
606
603
|
if (tq && (tq.recentAlignments.length > 0 || tq.report !== null || tq.degradedConsecutiveCount > 0)) api.dispatch(resetTrackingQuality());
|
|
607
604
|
return;
|
|
608
605
|
}
|
|
606
|
+
if (action.type === TRACKING_QUALITY_INPUT_ACTIONS.poseReceived || action.type === TRACKING_QUALITY_INPUT_ACTIONS.poseLost) {
|
|
607
|
+
const phase = selectTrackingPhase(state);
|
|
608
|
+
const existingReport = state.trackingQuality?.report ?? null;
|
|
609
|
+
if (phase === lastPoseActionPhase && existingReport !== null) return;
|
|
610
|
+
lastPoseActionPhase = phase;
|
|
611
|
+
}
|
|
609
612
|
if (action.type === TRACKING_QUALITY_INPUT_ACTIONS.gpsRecorded || action.type === TRACKING_QUALITY_INPUT_ACTIONS.setZeroPos) {
|
|
610
613
|
const alignment = selectAlignmentMatrix(state);
|
|
611
614
|
if (alignment) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
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, r as ResetTransformData, s as originReset, t as DeviceOrientation, u as resetTracking } from "../tracking-slice-
|
|
1
|
+
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, r as ResetTransformData, s as originReset, t as DeviceOrientation, u as resetTracking } from "../tracking-slice-Bt2OEQhA.js";
|
|
2
2
|
export { DeviceOrientation, PoseReceivedPayload, ResetTransformData, TrackingPhase, TrackingSliceState, clearLastRestartedPayload, originReset, poseLost, poseReceived, resetTracking, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLostFrameCount, selectTrackingPhase, trackingReducer };
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import "./state/gps-event-coordinator.js";
|
|
2
1
|
import "./state/tracking-slice.js";
|
|
3
2
|
import "./state/recording-options.js";
|
|
4
3
|
import "./state/recording-slice.js";
|
|
5
4
|
import "./state/qr-detected-slice.js";
|
|
6
|
-
import "./state/gps-
|
|
5
|
+
import "./state/gps-event-coordinator.js";
|
|
7
6
|
import "./state/app-selectors.js";
|
|
8
7
|
import { selectTrackingQuality } from "./state/tracking-quality.js";
|
|
9
8
|
import "./state/persistence-middleware.js";
|
|
10
|
-
import "./create-slam-app-store-
|
|
9
|
+
import "./create-slam-app-store-DLv5ZwqU.js";
|
|
11
10
|
import "./state/recording-replayer.js";
|
|
12
11
|
import "./state/store-subscribers.js";
|
|
13
12
|
import { add2dImage, calcRelativeCoordsInMeters, recordGpsEvent as recordGpsEvent$1, setZeroPos as setZeroPos$1 } from "gps-plus-slam-js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as formatTimestamp, i as formatFrameFilename, n as SESSION_IMAGES_DIR, r as formatActionFilename, t as LEGACY_SESSION_IMAGES_DIR } from "../file-system-utils-
|
|
1
|
+
import { a as formatTimestamp, i as formatFrameFilename, n as SESSION_IMAGES_DIR, r as formatActionFilename, t as LEGACY_SESSION_IMAGES_DIR } from "../file-system-utils-CfLTj5Ra.js";
|
|
2
2
|
export { LEGACY_SESSION_IMAGES_DIR, SESSION_IMAGES_DIR, formatActionFilename, formatFrameFilename, formatTimestamp };
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as getAppRootHandle, c as initOpfsStorage, d as resetSessionHandles, h as writeSessionMetadata, i as createSession, l as listSessions, n as SessionMetadata, o as getSessionHandle, r as checkStorageQuota, s as getSessionsRootHandle, u as resetOpfsStorage } from "../opfs-storage-
|
|
2
|
-
import { n as StorageBackend, t as CreateSessionResult } from "../storage-backend-
|
|
3
|
-
import { a as ZipActionEntry, c as loadActionsFromZip, d as loadSessionMetadata, f as loadSessionMetadataFromBlob, i as RecordedAction, l as loadEntriesFromSubdir, n as GpsPathCoord, p as readZipEntries, r as MAX_ACTION_FILE_SIZE, s as ZipSubdirEntry, t as Entry, u as loadGpsPathFromBlob } from "../zip-reader-
|
|
4
|
-
import { t as NullStorageBackend } from "../null-storage-backend-
|
|
5
|
-
import { t as OpfsStorageBackend } from "../opfs-storage-backend-
|
|
6
|
-
import { a as formatTimestamp, i as formatFrameFilename, r as formatActionFilename } from "../file-system-utils-
|
|
7
|
-
import { a as downloadZip, c as syncToExternalZip, i as ZipExportResult, n as ZipContributorAddFile, o as exportSessionAsZip, r as ZipExportContributor, s as exportSessionHandleAsZip, t as ExportSessionAsZipOptions } from "../zip-export-
|
|
8
|
-
import { t as embedCoverageInSessionJson } from "../zip-coverage-embed-
|
|
1
|
+
import { a as getAppRootHandle, c as initOpfsStorage, d as resetSessionHandles, h as writeSessionMetadata, i as createSession, l as listSessions, n as SessionMetadata, o as getSessionHandle, r as checkStorageQuota, s as getSessionsRootHandle, u as resetOpfsStorage } from "../opfs-storage-S_odkCk1.js";
|
|
2
|
+
import { n as StorageBackend, t as CreateSessionResult } from "../storage-backend-BX7egQKi.js";
|
|
3
|
+
import { a as ZipActionEntry, c as loadActionsFromZip, d as loadSessionMetadata, f as loadSessionMetadataFromBlob, i as RecordedAction, l as loadEntriesFromSubdir, n as GpsPathCoord, p as readZipEntries, r as MAX_ACTION_FILE_SIZE, s as ZipSubdirEntry, t as Entry, u as loadGpsPathFromBlob } from "../zip-reader-BHc_b_iA.js";
|
|
4
|
+
import { t as NullStorageBackend } from "../null-storage-backend-DXXuwG8T.js";
|
|
5
|
+
import { t as OpfsStorageBackend } from "../opfs-storage-backend-D1ZpeNEL.js";
|
|
6
|
+
import { a as formatTimestamp, i as formatFrameFilename, r as formatActionFilename } from "../file-system-utils-CfLTj5Ra.js";
|
|
7
|
+
import { a as downloadZip, c as syncToExternalZip, i as ZipExportResult, n as ZipContributorAddFile, o as exportSessionAsZip, r as ZipExportContributor, s as exportSessionHandleAsZip, t as ExportSessionAsZipOptions } from "../zip-export-CuBimX1J.js";
|
|
8
|
+
import { t as embedCoverageInSessionJson } from "../zip-coverage-embed-BrodRLq0.js";
|
|
9
9
|
export { type CreateSessionResult, type Entry, type ExportSessionAsZipOptions, type GpsPathCoord, MAX_ACTION_FILE_SIZE, NullStorageBackend, OpfsStorageBackend, type RecordedAction, type SessionMetadata, type StorageBackend, type ZipActionEntry, type ZipContributorAddFile, type ZipExportContributor, type ZipExportResult, type ZipSubdirEntry, checkStorageQuota, createSession, downloadZip, embedCoverageInSessionJson, exportSessionAsZip, exportSessionHandleAsZip, formatActionFilename, formatFrameFilename, formatTimestamp, getAppRootHandle, getSessionHandle, getSessionsRootHandle, initOpfsStorage, listSessions, loadActionsFromZip, loadEntriesFromSubdir, loadGpsPathFromBlob, loadSessionMetadataFromBlob, loadSessionMetadata as loadSessionMetadataFromZip, readZipEntries, resetOpfsStorage, resetSessionHandles, syncToExternalZip, writeSessionMetadata };
|