gps-plus-slam-app-framework 1.7.0 → 1.9.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/{accuracy-circles-BtqOP_v1.d.ts → accuracy-circles-DkWBkF5g.d.ts} +16 -6
- package/dist/{app-selectors-ikTUQZpe.d.ts → app-selectors-BbAiCRUT.d.ts} +1 -1
- 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 +127 -0
- package/dist/ar/depth-occluder.js +299 -0
- package/dist/ar/depth-sampler.d.ts +2 -2
- package/dist/ar/depth-sampler.js +24 -4
- package/dist/ar/depth-unprojection.d.ts +1 -1
- package/dist/ar/depth-unprojection.js +52 -21
- 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/frame-loop.js +12 -2
- 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 +2 -1
- package/dist/ar/index.d.ts +32 -31
- package/dist/ar/index.js +5 -4
- package/dist/ar/occlusion-mesh-worker.d.ts +58 -0
- package/dist/ar/occlusion-mesh-worker.js +129 -0
- package/dist/ar/occupancy-grid.d.ts +2 -2
- package/dist/ar/occupancy-grid.js +287 -31
- package/dist/ar/occupancy-mesher.d.ts +2 -0
- package/dist/ar/occupancy-mesher.js +638 -0
- 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-detection-controller.d.ts +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/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 +4 -4
- package/dist/ar/webxr-session.js +2 -2
- 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/xr-frame-loop.js +12 -2
- package/dist/{ar-MFpFlV7j.js → ar-BqCudtqE.js} +3 -2
- package/dist/{ar-world-group-alignment-69fgnB39.d.ts → ar-world-group-alignment-Cfg0trC3.d.ts} +1 -1
- package/dist/{capture-motion-gate-4EscNZCw.js → capture-motion-gate-_NdTSwKi.js} +17 -5
- package/dist/cell-key-DIB4rOTV.js +51 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/{create-slam-app-store-n_VF63D5.d.ts → create-slam-app-store-D1QSMuKu.d.ts} +8 -9
- package/dist/{create-slam-app-store-DkCHOpvb.js → create-slam-app-store-DXiAnJwR.js} +9 -2
- package/dist/{depth-grid-lookup-DQ-IYhO3.d.ts → depth-grid-lookup-D5atpNZ3.d.ts} +1 -1
- package/dist/{depth-sampler-asc8exHt.d.ts → depth-sampler-CwObAwEA.d.ts} +33 -1
- package/dist/{depth-unprojection-DjsbJW9L.d.ts → depth-unprojection-DRdBU90S.d.ts} +1 -1
- package/dist/{enable-gps-ar-DkNhFv4Y.d.ts → enable-gps-ar-BBtRO2FJ.d.ts} +4 -4
- package/dist/{frame-conversions-DObhj8Wf.d.ts → frame-conversions-DDcNHkTb.d.ts} +1 -1
- package/dist/{fused-path-v6eOmLl3.d.ts → fused-path-C5pp0PJU.d.ts} +1 -1
- package/dist/geo/h3-proximity.d.ts +1 -1
- package/dist/geo/index.d.ts +1 -1
- package/dist/{gps-anchor-BeFO2RYa.d.ts → gps-anchor-CEjGqEVD.d.ts} +1 -1
- package/dist/{gps-ar-pose-sampler-DHMZmYAc.d.ts → gps-ar-pose-sampler-DEGNk2CI.d.ts} +1 -1
- package/dist/{gps-event-coordinator-CjWW636x.d.ts → gps-event-coordinator-BWpgBrHq.d.ts} +4 -4
- package/dist/{image-capture-CNZDrQXG.d.ts → image-capture-Bp6Pd4Md.d.ts} +3 -3
- package/dist/{image-capture-B2-b6tKK.js → image-capture-DVcuqMtX.js} +1 -1
- package/dist/{index-BODDUTvD.d.ts → index-B6iBnO_K.d.ts} +1 -1
- package/dist/index-DXPVzOpP.d.ts +2 -0
- package/dist/{index-BneSj4_5.d.ts → index-cCQWuYqy.d.ts} +3 -3
- package/dist/index.d.ts +82 -80
- package/dist/index.js +10 -8
- package/dist/{leaflet-map-overlay-CmIyiE8n.d.ts → leaflet-map-overlay-C8GS4cUy.d.ts} +64 -10
- package/dist/leaflet-map-overlay-CBWPvaX9.js +452 -0
- package/dist/lerp-utils-Qs8OhumS.d.ts +42 -0
- package/dist/map-data-1tF5gcYV.js +124 -0
- package/dist/map-data-CUnTzRIC.d.ts +78 -0
- package/dist/{map-overlay-draw-ymz1s7fG.d.ts → map-overlay-draw-6WJeq0Kg.d.ts} +1 -1
- package/dist/{null-storage-backend-B9rtyDfG.d.ts → null-storage-backend-B1-jlpin.d.ts} +2 -2
- package/dist/occlusion-mesh-kXCQ2FM1.d.ts +194 -0
- package/dist/occupancy-grid-BV7RhB7I.d.ts +194 -0
- package/dist/occupancy-mesher-C2ecWhNp.d.ts +100 -0
- package/dist/{opfs-storage-3VZh-qH6.d.ts → opfs-storage-CTkxvxN4.d.ts} +5 -0
- package/dist/{opfs-storage-backend-JJiUJo-3.d.ts → opfs-storage-backend-D6Z03fML.d.ts} +2 -2
- package/dist/{persistence-middleware-DAPTTwB2.d.ts → persistence-middleware-CG-t08X4.d.ts} +1 -1
- package/dist/{planar-pnp-my9bqULS.d.ts → planar-pnp-D7bc_rLX.d.ts} +1 -1
- package/dist/{qr-debug-view-Brl73HGO.d.ts → qr-debug-view-BJooqbiP.d.ts} +1 -1
- package/dist/{qr-derived-pose-CmxTP2m4.d.ts → qr-derived-pose-BwNWn8oV.d.ts} +2 -2
- package/dist/{qr-detected-slice-VQssZmQJ.d.ts → qr-detected-slice-TzVb8bij.d.ts} +4 -4
- package/dist/{qr-detection-controller-CDurHv8E.d.ts → qr-detection-controller-Bo4XfQTP.d.ts} +3 -3
- package/dist/{qr-frontend--fFX25mV.d.ts → qr-frontend-BPURlh3S.d.ts} +1 -1
- package/dist/{qr-pose-aggregation-B7tWJq7j.d.ts → qr-pose-aggregation-CypnmjA-.d.ts} +1 -1
- package/dist/{qr-size-depth-context-CeAG53fy.d.ts → qr-size-depth-context-apAOmbrZ.d.ts} +2 -2
- package/dist/{qr-size-measurer-DQdAsid1.d.ts → qr-size-measurer-DxiMqRUw.d.ts} +3 -3
- package/dist/{recording-options-BPCpMHLK.d.ts → recording-options-DYKWVI93.d.ts} +203 -24
- package/dist/{recording-replayer-DQKpAGyQ.d.ts → recording-replayer-BJ8Lf0QY.d.ts} +2 -2
- package/dist/{recording-slice-DaxHZvNu.d.ts → recording-slice-BW8SiLo1.d.ts} +2 -2
- package/dist/{replay-engine-CmKh_4wf.d.ts → replay-engine-DmCAc7WM.d.ts} +1 -1
- package/dist/{replay-scene-DBlDrV_x.d.ts → replay-scene-zJ8SFDjE.d.ts} +3 -3
- package/dist/sensors/absolute-orientation.d.ts +1 -1
- package/dist/sensors/absolute-orientation.js +23 -6
- package/dist/sensors/gps-error-handler.d.ts +1 -1
- package/dist/sensors/gps.d.ts +1 -1
- package/dist/sensors/index.d.ts +4 -4
- package/dist/sensors/permission-checker.d.ts +1 -1
- 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 +3 -3
- package/dist/state/gps-event-coordinator.d.ts +1 -1
- package/dist/state/index.d.ts +19 -19
- package/dist/state/index.js +2 -2
- package/dist/state/persistence-middleware.d.ts +1 -1
- package/dist/state/qr-detected-slice.d.ts +3 -3
- package/dist/state/recording-options.d.ts +2 -2
- package/dist/state/recording-options.js +150 -19
- 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 +26 -12
- 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 -6
- package/dist/state/tracking-slice.d.ts +1 -1
- package/dist/{state-E51QT_-j.js → state-BeKvn4B-.js} +1 -1
- 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/opfs-storage.js +30 -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-reader.d.ts +2 -2
- package/dist/storage/zip-reader.js +20 -7
- package/dist/{storage-backend-BdVLD0dU.d.ts → storage-backend-sEtmM4yW.d.ts} +1 -1
- package/dist/{store-subscribers-CA6AJH_8.d.ts → store-subscribers-DJUErW-o.d.ts} +6 -3
- package/dist/{subscribe-to-selector-B6EUmQ3I.d.ts → subscribe-to-selector-dQV8SpsO.d.ts} +1 -1
- package/dist/test-utils/browser-mocks.d.ts +1 -1
- package/dist/test-utils/browser-mocks.js +2 -0
- package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
- package/dist/{tracking-slice-BuAZxXZ5.d.ts → tracking-slice-DMkHlbny.d.ts} +1 -1
- package/dist/types/ar-types.d.ts +1 -1
- package/dist/types/geo-types.d.ts +1 -1
- package/dist/types/index.d.ts +2 -2
- 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/index.d.ts +7 -7
- package/dist/utils/list-formatter.d.ts +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/visualization/accuracy-circles.d.ts +1 -1
- package/dist/visualization/accuracy-circles.js +17 -8
- package/dist/visualization/alignment-lerper.d.ts +1 -1
- 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-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 +20 -19
- package/dist/visualization/index.js +4 -3
- package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
- package/dist/visualization/leaflet-map-overlay.js +1 -282
- package/dist/visualization/lerp-utils.d.ts +2 -2
- package/dist/visualization/lerp-utils.js +27 -3
- package/dist/visualization/map-data.d.ts +1 -1
- package/dist/visualization/map-data.js +1 -32
- package/dist/visualization/map-overlay-draw.d.ts +1 -1
- package/dist/visualization/map-overlay-draw.js +24 -2
- package/dist/visualization/map-overlay.d.ts +1 -1
- package/dist/visualization/occluder-mesh-driver.d.ts +130 -0
- package/dist/visualization/occluder-mesh-driver.js +219 -0
- package/dist/visualization/occlusion-mesh.d.ts +2 -0
- package/dist/visualization/occlusion-mesh.js +437 -0
- package/dist/visualization/three-dispose.d.ts +1 -1
- package/dist/visualization/vis-colors.d.ts +1 -1
- package/dist/{webxr-session-DG-eNfny.js → webxr-session-BCP2XK7k.js} +88 -13
- package/dist/{webxr-session-Do5L6G3B.d.ts → webxr-session-BWCpGd-2.d.ts} +73 -10
- package/dist/{zip-reader-D9iPQwdQ.d.ts → zip-reader-BzENzMH6.d.ts} +36 -10
- package/package.json +9 -5
- package/dist/index-_Rhgoqkh.d.ts +0 -2
- package/dist/lerp-utils-BLmHhkVe.d.ts +0 -20
- package/dist/map-data-B4oEehUh.d.ts +0 -49
- package/dist/occupancy-grid-DnOc-6PU.d.ts +0 -82
- /package/dist/{absolute-orientation-CAEh840t.d.ts → absolute-orientation-BAxc15J6.d.ts} +0 -0
- /package/dist/{alignment-lerper-Bil6vbVw.d.ts → alignment-lerper-gD70k7Fq.d.ts} +0 -0
- /package/dist/{ar-types-BFX2r1wk.d.ts → ar-types-Cc5yvBwn.d.ts} +0 -0
- /package/dist/{bresenham3d-CU1Gv2W4.d.ts → bresenham3d-DGc4nIb-.d.ts} +0 -0
- /package/dist/{camera-blit-capture-NKT9H5-e.d.ts → camera-blit-capture-BimSdyih.d.ts} +0 -0
- /package/dist/{camera-follower-CqJJ7zRj.d.ts → camera-follower-DfBm2J5i.d.ts} +0 -0
- /package/dist/{capability-checker-DUQLg6gq.d.ts → capability-checker-BTTpygvZ.d.ts} +0 -0
- /package/dist/{capture-failure-tracker-gsm8q7yi.d.ts → capture-failure-tracker-_BVfhpxv.d.ts} +0 -0
- /package/dist/{capture-motion-gate-0Yl2NpQG.d.ts → capture-motion-gate-BGoAMkmf.d.ts} +0 -0
- /package/dist/{chromium-camera-access-workaround-D4K2uwwQ.d.ts → chromium-camera-access-workaround-C6yJLXz9.d.ts} +0 -0
- /package/dist/{concurrency-By0oOTZt.d.ts → concurrency-DPeGBH0X.d.ts} +0 -0
- /package/dist/{css3d-renderer-manager-B3kGNtcn.d.ts → css3d-renderer-manager-CPpVtvgs.d.ts} +0 -0
- /package/dist/{failure-tracker-BO7M7jF_.d.ts → failure-tracker-CeKf5HIc.d.ts} +0 -0
- /package/dist/{file-system-utils-DOajnMm-.d.ts → file-system-utils-DueXHxo9.d.ts} +0 -0
- /package/dist/{format-file-size-Dc98ulzB.d.ts → format-file-size-DxN-EBLc.d.ts} +0 -0
- /package/dist/{frame-loop-CpVjQ1dH.d.ts → frame-loop-7GBMBu68.d.ts} +0 -0
- /package/dist/{frustum-visibility-CeoCZchO.d.ts → frustum-visibility-CokkgS_i.d.ts} +0 -0
- /package/dist/{geo-types-3Ip1NzVR.d.ts → geo-types-DrGVu8nS.d.ts} +0 -0
- /package/dist/{gps-BBO3hKfT.d.ts → gps-CDKDQokE.d.ts} +0 -0
- /package/dist/{gps-compass-cubes-DSN87L8p.d.ts → gps-compass-cubes-1mooS3BS.d.ts} +0 -0
- /package/dist/{gps-error-handler-BbPsfw-_.d.ts → gps-error-handler-C34GQuTu.d.ts} +0 -0
- /package/dist/{gps-event-markers-Cz9RMA2k.d.ts → gps-event-markers-Di2nBzx-.d.ts} +0 -0
- /package/dist/{h3-proximity-C-j0pw1j.d.ts → h3-proximity-D0GTHQmr.d.ts} +0 -0
- /package/dist/{hit-test-reticle-DV-2TpB9.d.ts → hit-test-reticle-CaQbrhbk.d.ts} +0 -0
- /package/dist/{image-quality-smCBoFj1.d.ts → image-quality-BMx2ko9-.d.ts} +0 -0
- /package/dist/{index-BAPokxMb.d.ts → index-D74JTX4I.d.ts} +0 -0
- /package/dist/{list-formatter-KNMS0ay2.d.ts → list-formatter-DLFDnS70.d.ts} +0 -0
- /package/dist/{logger-CLnPrHiD.d.ts → logger-CqTd5Kpk.d.ts} +0 -0
- /package/dist/{map-overlay-Dh2B97MP.d.ts → map-overlay-BCQgvIgU.d.ts} +0 -0
- /package/dist/{permission-checker-CDuI8BwC.d.ts → permission-checker-B-VtjnBA.d.ts} +0 -0
- /package/dist/{qr-pose-D2rfu5DA.d.ts → qr-pose-y3vaEd6x.d.ts} +0 -0
- /package/dist/{scene-node-names-BiShOQDB.d.ts → scene-node-names-CGb-ylBd.d.ts} +0 -0
- /package/dist/{session-disposers-zv9OGXPB.js → session-disposers-BPrMplIC.js} +0 -0
- /package/dist/{three-dispose-Bt1k7WKh.d.ts → three-dispose-BMOAmPhb.d.ts} +0 -0
- /package/dist/{vis-colors-Obw2pLqT.d.ts → vis-colors-C7HI0u9_.d.ts} +0 -0
- /package/dist/{webxr-nue-basis-3nfjDJJp.d.ts → webxr-nue-basis-CaCnYxuq.d.ts} +0 -0
- /package/dist/{xr-camera-texture-Cva1q3Qj.d.ts → xr-camera-texture-q0eIDSRg.d.ts} +0 -0
- /package/dist/{xr-error-handler-CtvHpjfm.d.ts → xr-error-handler-uVGDu9IX.d.ts} +0 -0
- /package/dist/{xr-frame-loop-DIYtRcUa.d.ts → xr-frame-loop-DX3JPpAU.d.ts} +0 -0
- /package/dist/{zip-coverage-embed-DCAREVmw.d.ts → zip-coverage-embed-ncVbaZAz.d.ts} +0 -0
- /package/dist/{zip-export-ol0S_Ofd.d.ts → zip-export-CtiUnAlJ.d.ts} +0 -0
|
@@ -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-DxiMqRUw.js";
|
|
2
|
+
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-CypnmjA-.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-TzVb8bij.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,2 +1,2 @@
|
|
|
1
|
-
import { A as
|
|
2
|
-
export { ArCrashIsolationOptions, CompassDebugOptions, DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, DepthCaptureOptions, FRAME_TILE_DISPLAY_CONSTRAINTS, FrameTileDisplayOptions, IMAGE_CONSTRAINTS, ImageCaptureOptions, MOTION_FILTER_CONSTRAINTS, OCCUPANCY_CONSTRAINTS, OccupancyOptions, QR_CONSTRAINTS, QUALITY_FILTER_CONSTRAINTS, QrCaptureOptions, RecordingOptions, RecordingOptionsInput, STORAGE_KEY, VisualizationOptions, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateArCrashIsolationOptions, validateCompassDebugOptions, validateDepthOptions, validateFrameTileDisplayOptions, validateImageOptions, validateMotionFilterOptions, validateOccupancyOptions, validateQrOptions, validateQualityFilterOptions, validateRecordingOptions, validateVisualizationOptions };
|
|
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-DYKWVI93.js";
|
|
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-_NdTSwKi.js";
|
|
3
3
|
import { DEFAULT_QUALITY_FILTER } from "../ar/image-quality.js";
|
|
4
4
|
//#region ../src/state/recording-options.ts
|
|
5
5
|
/**
|
|
@@ -12,6 +12,55 @@ import { DEFAULT_QUALITY_FILTER } from "../ar/image-quality.js";
|
|
|
12
12
|
*/
|
|
13
13
|
const log = createLogger("RecordingOptions");
|
|
14
14
|
/**
|
|
15
|
+
* Configuration for the derived AR-space occupancy grid (the voxelization of
|
|
16
|
+
* the depth samples, port plan 2026-06-11). These settings do NOT change what
|
|
17
|
+
* is recorded — they govern the grid derived from the recorded depth points,
|
|
18
|
+
* so they also apply when replaying an existing recording, letting the same
|
|
19
|
+
* session be re-quantized at a different resolution.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Mesher strategy for the **persistent occluder** mesh, exposed as a recorder
|
|
23
|
+
* setting (2026-06-30 occluder-tuning, F2/F2b) so the two surface-hugging
|
|
24
|
+
* approaches can be A/B-tested on-device against the blocky baseline:
|
|
25
|
+
* - `'greedy'` — blocky greedy cubes (the existing default; fewest triangles).
|
|
26
|
+
* - `'corner-fit'` — cubes with corners pulled to the measured centroids
|
|
27
|
+
* (surface-hugging **and** watertight).
|
|
28
|
+
* - `'smooth'` — surface nets: smoothest, hugs the measured surface, but an open
|
|
29
|
+
* sheet over thin features.
|
|
30
|
+
*
|
|
31
|
+
* Maps directly onto `meshOccupiedCells` / `OcclusionMesh` `MeshMode` (a subset).
|
|
32
|
+
* `'per-face'` is intentionally not offered (same shape as `'greedy'`, more
|
|
33
|
+
* triangles — no on-device value).
|
|
34
|
+
*/
|
|
35
|
+
const OCCLUDER_MESH_MODES = [
|
|
36
|
+
"greedy",
|
|
37
|
+
"corner-fit",
|
|
38
|
+
"smooth"
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* Debug-visualization style for the **persistent occluder** mesh (2026-07-02
|
|
42
|
+
* debug-viz-styles plan) — which visible debug skin(s) `OcclusionMesh` renders
|
|
43
|
+
* on top of the invisible depth-only occluder:
|
|
44
|
+
* - `'off'` — no debug rendering (the shipped default; occlusion is invisible).
|
|
45
|
+
* - `'matcap'` — the original shiny semi-transparent cyan skin.
|
|
46
|
+
* - `'depth-shaded'` — matcap + camera-distance fade + white fresnel rim, so
|
|
47
|
+
* overlapping near/far surfaces read as separate shells.
|
|
48
|
+
* - `'wireframe'` — the raw triangulation as GL lines (mesh-structure
|
|
49
|
+
* inspection: triangle density, mesher seams, degenerate spots).
|
|
50
|
+
* - `'depth-shaded-wireframe'` — both of the above composed.
|
|
51
|
+
*
|
|
52
|
+
* Values array module-private (validation only; the settings `<select>`
|
|
53
|
+
* options are hardcoded in the recorder's `index.html`), type exported —
|
|
54
|
+
* mirroring `OCCLUDER_MESH_MODES` / {@link OccluderMeshMode}.
|
|
55
|
+
*/
|
|
56
|
+
const OCCLUDER_DEBUG_STYLES = [
|
|
57
|
+
"off",
|
|
58
|
+
"matcap",
|
|
59
|
+
"depth-shaded",
|
|
60
|
+
"wireframe",
|
|
61
|
+
"depth-shaded-wireframe"
|
|
62
|
+
];
|
|
63
|
+
/**
|
|
15
64
|
* localStorage key for persisted options.
|
|
16
65
|
*
|
|
17
66
|
* **Multi-tab caveat:** All tabs/instances sharing the same origin will
|
|
@@ -25,8 +74,8 @@ const STORAGE_KEY = "gps-plus-slam-recorder-options";
|
|
|
25
74
|
const DEFAULT_RECORDING_OPTIONS = {
|
|
26
75
|
depth: {
|
|
27
76
|
enabled: true,
|
|
28
|
-
intervalMs:
|
|
29
|
-
gridSize:
|
|
77
|
+
intervalMs: 500,
|
|
78
|
+
gridSize: 32,
|
|
30
79
|
rgb: true
|
|
31
80
|
},
|
|
32
81
|
images: {
|
|
@@ -47,14 +96,24 @@ const DEFAULT_RECORDING_OPTIONS = {
|
|
|
47
96
|
},
|
|
48
97
|
occupancy: {
|
|
49
98
|
cellSizeM: .15,
|
|
50
|
-
minConfidence: 3
|
|
99
|
+
minConfidence: 3,
|
|
100
|
+
persistentOcclusion: true,
|
|
101
|
+
liveOcclusion: false,
|
|
102
|
+
occluderDebugStyle: "off",
|
|
103
|
+
occluderMeshMode: "smooth",
|
|
104
|
+
occluderRadiusM: 25
|
|
105
|
+
},
|
|
106
|
+
frameTileDisplay: {
|
|
107
|
+
divisor: 2,
|
|
108
|
+
maxTiles: 100
|
|
51
109
|
},
|
|
52
|
-
frameTileDisplay: { divisor: 2 },
|
|
53
110
|
visualization: {
|
|
54
111
|
frameTiles: true,
|
|
55
112
|
occupancyCubes: true,
|
|
56
113
|
gpsAlignmentMarkers: true,
|
|
57
|
-
compassCubes: true
|
|
114
|
+
compassCubes: true,
|
|
115
|
+
headingUpMap: true,
|
|
116
|
+
statsOverlay: false
|
|
58
117
|
},
|
|
59
118
|
qr: {
|
|
60
119
|
enabled: false,
|
|
@@ -65,7 +124,8 @@ const DEFAULT_RECORDING_OPTIONS = {
|
|
|
65
124
|
coldStartOverride: true,
|
|
66
125
|
rotationPrior: false,
|
|
67
126
|
webXRConsistency: false
|
|
68
|
-
}
|
|
127
|
+
},
|
|
128
|
+
loopClosureDebug: { detectorEnabled: false }
|
|
69
129
|
};
|
|
70
130
|
/** Validation constraints for depth options */
|
|
71
131
|
const DEPTH_CONSTRAINTS = {
|
|
@@ -76,7 +136,7 @@ const DEPTH_CONSTRAINTS = {
|
|
|
76
136
|
},
|
|
77
137
|
gridSize: {
|
|
78
138
|
min: 2,
|
|
79
|
-
max:
|
|
139
|
+
max: 64,
|
|
80
140
|
step: 1
|
|
81
141
|
}
|
|
82
142
|
};
|
|
@@ -181,6 +241,11 @@ const OCCUPANCY_CONSTRAINTS = {
|
|
|
181
241
|
min: 1,
|
|
182
242
|
max: 10,
|
|
183
243
|
step: 1
|
|
244
|
+
},
|
|
245
|
+
occluderRadiusM: {
|
|
246
|
+
min: 0,
|
|
247
|
+
max: 200,
|
|
248
|
+
step: 5
|
|
184
249
|
}
|
|
185
250
|
};
|
|
186
251
|
/**
|
|
@@ -191,11 +256,18 @@ const OCCUPANCY_CONSTRAINTS = {
|
|
|
191
256
|
* same. The intended stops are 1, 2, 4, 8 (full / half / quarter / eighth); the
|
|
192
257
|
* divisor is rounded to an integer so the resize target dimensions stay clean.
|
|
193
258
|
*/
|
|
194
|
-
const FRAME_TILE_DISPLAY_CONSTRAINTS = {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
259
|
+
const FRAME_TILE_DISPLAY_CONSTRAINTS = {
|
|
260
|
+
divisor: {
|
|
261
|
+
min: 1,
|
|
262
|
+
max: 8,
|
|
263
|
+
step: 1
|
|
264
|
+
},
|
|
265
|
+
maxTiles: {
|
|
266
|
+
min: 0,
|
|
267
|
+
max: 2e3,
|
|
268
|
+
step: 10
|
|
269
|
+
}
|
|
270
|
+
};
|
|
199
271
|
/**
|
|
200
272
|
* Validation constraints for QR-capture options.
|
|
201
273
|
*
|
|
@@ -246,6 +318,15 @@ function validateCompassDebugOptions(options) {
|
|
|
246
318
|
};
|
|
247
319
|
}
|
|
248
320
|
/**
|
|
321
|
+
* Validate and normalize the loop-closure capture toggles. Boolean-or-default
|
|
322
|
+
* per field; a missing/corrupted/pre-feature value falls back to the OFF
|
|
323
|
+
* default so a bad persisted value can never silently wire the detector in.
|
|
324
|
+
*/
|
|
325
|
+
function validateLoopClosureDebugOptions(options) {
|
|
326
|
+
const defaults = DEFAULT_RECORDING_OPTIONS.loopClosureDebug;
|
|
327
|
+
return { detectorEnabled: typeof options.detectorEnabled === "boolean" ? options.detectorEnabled : defaults.detectorEnabled };
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
249
330
|
* Validate and normalize the live debug-overlay visibility toggles.
|
|
250
331
|
* Each field is boolean-or-default (same policy as the AR-crash-isolation
|
|
251
332
|
* flags): a missing, corrupted, or pre-feature persisted value falls back to
|
|
@@ -257,7 +338,9 @@ function validateVisualizationOptions(options) {
|
|
|
257
338
|
frameTiles: typeof options.frameTiles === "boolean" ? options.frameTiles : defaults.frameTiles,
|
|
258
339
|
occupancyCubes: typeof options.occupancyCubes === "boolean" ? options.occupancyCubes : defaults.occupancyCubes,
|
|
259
340
|
gpsAlignmentMarkers: typeof options.gpsAlignmentMarkers === "boolean" ? options.gpsAlignmentMarkers : defaults.gpsAlignmentMarkers,
|
|
260
|
-
compassCubes: typeof options.compassCubes === "boolean" ? options.compassCubes : defaults.compassCubes
|
|
341
|
+
compassCubes: typeof options.compassCubes === "boolean" ? options.compassCubes : defaults.compassCubes,
|
|
342
|
+
headingUpMap: typeof options.headingUpMap === "boolean" ? options.headingUpMap : defaults.headingUpMap,
|
|
343
|
+
statsOverlay: typeof options.statsOverlay === "boolean" ? options.statsOverlay : defaults.statsOverlay
|
|
261
344
|
};
|
|
262
345
|
}
|
|
263
346
|
/**
|
|
@@ -353,12 +436,55 @@ function validateImageOptions(options) {
|
|
|
353
436
|
* `RangeError` on a non-finite cell size, and `clamp(NaN, …)` would otherwise
|
|
354
437
|
* pass `NaN` straight through (it is `typeof 'number'`). Falling back to the
|
|
355
438
|
* default keeps a corrupted stored value from crashing grid construction.
|
|
439
|
+
*
|
|
440
|
+
* **Backward-compat migration:** the occlusion options were a single
|
|
441
|
+
* `occlusionMeshEnabled` boolean before 2026-06-29; they are now the two
|
|
442
|
+
* composable booleans `persistentOcclusion` + `liveOcclusion`. A persisted
|
|
443
|
+
* object that predates the split carries only the legacy field, so when the new
|
|
444
|
+
* `persistentOcclusion` is absent we read `occlusionMeshEnabled` and map
|
|
445
|
+
* `true → persistentOcclusion: true` (the old mesh occluder is the persistent
|
|
446
|
+
* one); the legacy shape never enabled a live occluder, so `liveOcclusion`
|
|
447
|
+
* stays at its default. A present new field always wins over the legacy one.
|
|
448
|
+
* See `2026-06-29-occupancy-mesh-followups.md`.
|
|
356
449
|
*/
|
|
450
|
+
/**
|
|
451
|
+
* Resolve `persistentOcclusion` with legacy migration. A **present** new field
|
|
452
|
+
* always wins over the legacy `occlusionMeshEnabled` — even when its value is
|
|
453
|
+
* invalid: a present-but-corrupt value falls back to the default, never to the
|
|
454
|
+
* legacy flag, so corrupted saved options can't silently flip the occluder
|
|
455
|
+
* against the "new field wins" contract. Only an **absent** new field migrates
|
|
456
|
+
* the legacy boolean (`true → persistent on`); else the default.
|
|
457
|
+
*/
|
|
458
|
+
function resolvePersistentOcclusion(options, legacyOcclusionMeshEnabled, defaultValue) {
|
|
459
|
+
if ("persistentOcclusion" in options) return typeof options.persistentOcclusion === "boolean" ? options.persistentOcclusion : defaultValue;
|
|
460
|
+
return typeof legacyOcclusionMeshEnabled === "boolean" ? legacyOcclusionMeshEnabled : defaultValue;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Resolve `occluderDebugStyle` with legacy migration, following the same
|
|
464
|
+
* contract as {@link resolvePersistentOcclusion}: a **present** new field
|
|
465
|
+
* always wins over the legacy `occluderDebugViz` boolean — even when its value
|
|
466
|
+
* is unknown/corrupt it falls back to the default (`'off'`), never to the
|
|
467
|
+
* legacy flag, so corrupted saved options can't silently turn a debug render
|
|
468
|
+
* on. Only an **absent** new field migrates the legacy boolean
|
|
469
|
+
* (`true → 'matcap'`, the skin the boolean used to enable); else the default.
|
|
470
|
+
*/
|
|
471
|
+
function resolveOccluderDebugStyle(options, legacyOccluderDebugViz, defaultValue) {
|
|
472
|
+
if ("occluderDebugStyle" in options) return OCCLUDER_DEBUG_STYLES.includes(options.occluderDebugStyle) ? options.occluderDebugStyle : defaultValue;
|
|
473
|
+
if (typeof legacyOccluderDebugViz === "boolean") return legacyOccluderDebugViz ? "matcap" : "off";
|
|
474
|
+
return defaultValue;
|
|
475
|
+
}
|
|
357
476
|
function validateOccupancyOptions(options) {
|
|
358
477
|
const defaults = DEFAULT_RECORDING_OPTIONS.occupancy;
|
|
478
|
+
const legacyOcclusionMeshEnabled = options.occlusionMeshEnabled;
|
|
479
|
+
const legacyOccluderDebugViz = options.occluderDebugViz;
|
|
359
480
|
return {
|
|
360
481
|
cellSizeM: clamp(typeof options.cellSizeM === "number" && Number.isFinite(options.cellSizeM) ? options.cellSizeM : defaults.cellSizeM, OCCUPANCY_CONSTRAINTS.cellSizeM.min, OCCUPANCY_CONSTRAINTS.cellSizeM.max),
|
|
361
|
-
minConfidence: clamp(typeof options.minConfidence === "number" && Number.isFinite(options.minConfidence) ? Math.round(options.minConfidence) : defaults.minConfidence, OCCUPANCY_CONSTRAINTS.minConfidence.min, OCCUPANCY_CONSTRAINTS.minConfidence.max)
|
|
482
|
+
minConfidence: clamp(typeof options.minConfidence === "number" && Number.isFinite(options.minConfidence) ? Math.round(options.minConfidence) : defaults.minConfidence, OCCUPANCY_CONSTRAINTS.minConfidence.min, OCCUPANCY_CONSTRAINTS.minConfidence.max),
|
|
483
|
+
persistentOcclusion: resolvePersistentOcclusion(options, legacyOcclusionMeshEnabled, defaults.persistentOcclusion),
|
|
484
|
+
liveOcclusion: typeof options.liveOcclusion === "boolean" ? options.liveOcclusion : defaults.liveOcclusion,
|
|
485
|
+
occluderDebugStyle: resolveOccluderDebugStyle(options, legacyOccluderDebugViz, defaults.occluderDebugStyle),
|
|
486
|
+
occluderMeshMode: OCCLUDER_MESH_MODES.includes(options.occluderMeshMode) ? options.occluderMeshMode : defaults.occluderMeshMode,
|
|
487
|
+
occluderRadiusM: clamp(typeof options.occluderRadiusM === "number" && Number.isFinite(options.occluderRadiusM) ? Math.round(options.occluderRadiusM) : defaults.occluderRadiusM, OCCUPANCY_CONSTRAINTS.occluderRadiusM.min, OCCUPANCY_CONSTRAINTS.occluderRadiusM.max)
|
|
362
488
|
};
|
|
363
489
|
}
|
|
364
490
|
/**
|
|
@@ -370,7 +496,10 @@ function validateOccupancyOptions(options) {
|
|
|
370
496
|
*/
|
|
371
497
|
function validateFrameTileDisplayOptions(options) {
|
|
372
498
|
const defaults = DEFAULT_RECORDING_OPTIONS.frameTileDisplay;
|
|
373
|
-
return {
|
|
499
|
+
return {
|
|
500
|
+
divisor: clamp(typeof options.divisor === "number" && Number.isFinite(options.divisor) ? Math.round(options.divisor) : defaults.divisor, FRAME_TILE_DISPLAY_CONSTRAINTS.divisor.min, FRAME_TILE_DISPLAY_CONSTRAINTS.divisor.max),
|
|
501
|
+
maxTiles: clamp(typeof options.maxTiles === "number" && Number.isFinite(options.maxTiles) ? Math.round(options.maxTiles) : defaults.maxTiles, FRAME_TILE_DISPLAY_CONSTRAINTS.maxTiles.min, FRAME_TILE_DISPLAY_CONSTRAINTS.maxTiles.max)
|
|
502
|
+
};
|
|
374
503
|
}
|
|
375
504
|
/**
|
|
376
505
|
* Validate and normalize a full RecordingOptions object.
|
|
@@ -385,7 +514,8 @@ function validateRecordingOptions(options) {
|
|
|
385
514
|
frameTileDisplay: validateFrameTileDisplayOptions(options.frameTileDisplay ?? {}),
|
|
386
515
|
visualization: validateVisualizationOptions(options.visualization ?? {}),
|
|
387
516
|
qr: validateQrOptions(options.qr ?? {}),
|
|
388
|
-
compassDebug: validateCompassDebugOptions(options.compassDebug ?? {})
|
|
517
|
+
compassDebug: validateCompassDebugOptions(options.compassDebug ?? {}),
|
|
518
|
+
loopClosureDebug: validateLoopClosureDebugOptions(options.loopClosureDebug ?? {})
|
|
389
519
|
};
|
|
390
520
|
}
|
|
391
521
|
/**
|
|
@@ -453,8 +583,9 @@ function cloneRecordingOptions(options) {
|
|
|
453
583
|
frameTileDisplay: { ...options.frameTileDisplay },
|
|
454
584
|
visualization: { ...options.visualization },
|
|
455
585
|
qr: { ...options.qr },
|
|
456
|
-
compassDebug: { ...options.compassDebug }
|
|
586
|
+
compassDebug: { ...options.compassDebug },
|
|
587
|
+
loopClosureDebug: { ...options.loopClosureDebug }
|
|
457
588
|
};
|
|
458
589
|
}
|
|
459
590
|
//#endregion
|
|
460
|
-
export { DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, FRAME_TILE_DISPLAY_CONSTRAINTS, IMAGE_CONSTRAINTS, MOTION_FILTER_CONSTRAINTS, OCCUPANCY_CONSTRAINTS, QR_CONSTRAINTS, QUALITY_FILTER_CONSTRAINTS, STORAGE_KEY, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateArCrashIsolationOptions, validateCompassDebugOptions, validateDepthOptions, validateFrameTileDisplayOptions, validateImageOptions, validateMotionFilterOptions, validateOccupancyOptions, validateQrOptions, validateQualityFilterOptions, validateRecordingOptions, validateVisualizationOptions };
|
|
591
|
+
export { DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, FRAME_TILE_DISPLAY_CONSTRAINTS, IMAGE_CONSTRAINTS, MOTION_FILTER_CONSTRAINTS, OCCUPANCY_CONSTRAINTS, QR_CONSTRAINTS, QUALITY_FILTER_CONSTRAINTS, STORAGE_KEY, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateArCrashIsolationOptions, validateCompassDebugOptions, validateDepthOptions, validateFrameTileDisplayOptions, validateImageOptions, validateLoopClosureDebugOptions, validateMotionFilterOptions, validateOccupancyOptions, validateQrOptions, validateQualityFilterOptions, validateRecordingOptions, validateVisualizationOptions };
|
|
@@ -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-D1QSMuKu.js";
|
|
2
|
+
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-BJ8Lf0QY.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-DXiAnJwR.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-BW8SiLo1.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-DmCAc7WM.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-dQV8SpsO.js";
|
|
2
|
+
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-DJUErW-o.js";
|
|
3
3
|
export { StoreSubscriberDeps, SubscribableStore, wireStoreSubscribers };
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { createLogger } from "../utils/logger.js";
|
|
1
2
|
import { selectAlignmentMatrix, selectGpsPositions, selectOdometryPositions, selectOdometryRotations, selectZeroReference } from "./app-selectors.js";
|
|
2
|
-
import { buildMapData } from "../
|
|
3
|
+
import { t as buildMapData } from "../map-data-1tF5gcYV.js";
|
|
3
4
|
import { subscribeToSelector } from "./subscribe-to-selector.js";
|
|
4
5
|
import { calcGpsCoords } from "gps-plus-slam-js";
|
|
5
6
|
import { mat4, vec3 } from "gl-matrix";
|
|
6
7
|
//#region ../src/state/store-subscribers.ts
|
|
8
|
+
const log = createLogger("StoreSubscribers");
|
|
7
9
|
/**
|
|
8
10
|
* Wire store state-change subscriptions to visualization dependencies.
|
|
9
11
|
*
|
|
@@ -34,22 +36,33 @@ function wireStoreSubscribers(store, deps) {
|
|
|
34
36
|
* positions change — the change-gated subscriptions below provide the
|
|
35
37
|
* throttling, so no extra debouncing is needed. The fused path is always
|
|
36
38
|
* recomputed from the latest matrix inside `buildMapData` (D2).
|
|
39
|
+
*
|
|
40
|
+
* Returns the rendered `MapData` so the GPS subscription can center the map
|
|
41
|
+
* on the SAME coordinate the dot shows (fused when available — 2026-07-06
|
|
42
|
+
* fused-dot feedback, Slice B), or `null` when there is no overlay or it
|
|
43
|
+
* has no `render` (the minimal `setGpsPosition`-only dep shape).
|
|
37
44
|
*/
|
|
38
45
|
function rebuildMap() {
|
|
39
|
-
if (!deps.mapOverlay?.render) return;
|
|
46
|
+
if (!deps.mapOverlay?.render) return null;
|
|
40
47
|
const state = store.getState();
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
rawGpsPath,
|
|
48
|
+
const data = buildMapData({
|
|
49
|
+
rawGpsPath: selectGpsPositions(state).map((p) => ({
|
|
50
|
+
lat: p.latitude,
|
|
51
|
+
lng: p.longitude,
|
|
52
|
+
accuracy: p.latLongAccuracy
|
|
53
|
+
})),
|
|
48
54
|
odometryPositions: selectOdometryPositions(state),
|
|
55
|
+
odometryRotations: selectOdometryRotations(state),
|
|
49
56
|
alignmentMatrix: selectAlignmentMatrix(state),
|
|
50
57
|
zeroRef: selectZeroReference(state),
|
|
51
58
|
alignmentSnapshots: alignmentSnapshotGps
|
|
52
|
-
})
|
|
59
|
+
});
|
|
60
|
+
try {
|
|
61
|
+
deps.mapOverlay.render(data);
|
|
62
|
+
} catch (err) {
|
|
63
|
+
log.warn("Map overlay render failed; continuing with centering:", err);
|
|
64
|
+
}
|
|
65
|
+
return data;
|
|
53
66
|
}
|
|
54
67
|
unsubs.push(subscribeToSelector(store, selectAlignmentMatrix, (matrix) => {
|
|
55
68
|
if (!matrix) return;
|
|
@@ -101,11 +114,12 @@ function wireStoreSubscribers(store, deps) {
|
|
|
101
114
|
if (odomRot) deps.onNewOdomPose?.(odomPos, odomRot);
|
|
102
115
|
}
|
|
103
116
|
}
|
|
104
|
-
|
|
117
|
+
const mapData = rebuildMap();
|
|
118
|
+
if (deps.mapOverlay && gpsPositions.length > 0) if (mapData?.userPosition) deps.mapOverlay.setGpsPosition(mapData.userPosition.lat, mapData.userPosition.lng);
|
|
119
|
+
else {
|
|
105
120
|
const lastGpsPoint = gpsPositions[gpsPositions.length - 1];
|
|
106
121
|
deps.mapOverlay.setGpsPosition(lastGpsPoint.latitude, lastGpsPoint.longitude);
|
|
107
122
|
}
|
|
108
|
-
rebuildMap();
|
|
109
123
|
}));
|
|
110
124
|
return () => {
|
|
111
125
|
for (const unsub of unsubs) unsub();
|
|
@@ -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-dQV8SpsO.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-D1QSMuKu.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 };
|
|
@@ -79,8 +79,17 @@ function rampUp(value, low, high) {
|
|
|
79
79
|
if (value >= high) return 1;
|
|
80
80
|
return (value - low) / (high - low);
|
|
81
81
|
}
|
|
82
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* True iff the matrix is well-formed: exactly 16 elements, all finite (no
|
|
84
|
+
* NaN/Infinity). The length check matters because `computeConvergence` scores a
|
|
85
|
+
* pair as corrupt (fail side) only when this returns false; without it a finite
|
|
86
|
+
* but wrong-length snapshot (`AlignmentSnapshot.matrix` is typed `number[]`,
|
|
87
|
+
* not a 16-tuple) would slip past here, then hit `matrixDelta`'s own length
|
|
88
|
+
* guard which returns ZERO deltas = "perfectly stable" — inflating the score
|
|
89
|
+
* instead of degrading it (the same trap the non-finite guard avoids).
|
|
90
|
+
*/
|
|
83
91
|
function isFiniteMatrix(m) {
|
|
92
|
+
if (m.length !== 16) return false;
|
|
84
93
|
for (let i = 0; i < m.length; i++) if (!Number.isFinite(m[i])) return false;
|
|
85
94
|
return true;
|
|
86
95
|
}
|
|
@@ -148,11 +157,10 @@ function computeConvergence(snapshots, options = {}) {
|
|
|
148
157
|
* compute the Euclidean distance.
|
|
149
158
|
*
|
|
150
159
|
* This is the **single shared kernel** for the AppFramework reporter and
|
|
151
|
-
* the
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
* definition.
|
|
160
|
+
* the downstream corpus-analysis harness (see §11 (a) of the
|
|
161
|
+
* tracking-quality plan), which re-exports it as `computeStabilityDelta` —
|
|
162
|
+
* a thin wrapper around this function — so the §6.1 corpus sweep and the
|
|
163
|
+
* runtime convergence score share one numeric definition.
|
|
156
164
|
*/
|
|
157
165
|
function matrixDelta(prev, curr) {
|
|
158
166
|
if (prev.length !== 16 || curr.length !== 16) return {
|
|
@@ -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-DMkHlbny.js";
|
|
2
2
|
export { DeviceOrientation, PoseReceivedPayload, ResetTransformData, TrackingPhase, TrackingSliceState, clearLastRestartedPayload, originReset, poseLost, poseReceived, resetTracking, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLostFrameCount, selectTrackingPhase, trackingReducer };
|
|
@@ -7,7 +7,7 @@ import "./state/gps-ar-pose-sampler.js";
|
|
|
7
7
|
import "./state/app-selectors.js";
|
|
8
8
|
import { selectTrackingQuality } from "./state/tracking-quality.js";
|
|
9
9
|
import "./state/persistence-middleware.js";
|
|
10
|
-
import "./create-slam-app-store-
|
|
10
|
+
import "./create-slam-app-store-DXiAnJwR.js";
|
|
11
11
|
import "./state/recording-replayer.js";
|
|
12
12
|
import "./state/store-subscribers.js";
|
|
13
13
|
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-DueXHxo9.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
|
|
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-CTkxvxN4.js";
|
|
2
|
+
import { n as StorageBackend, t as CreateSessionResult } from "../storage-backend-sEtmM4yW.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-BzENzMH6.js";
|
|
4
|
+
import { t as NullStorageBackend } from "../null-storage-backend-B1-jlpin.js";
|
|
5
|
+
import { t as OpfsStorageBackend } from "../opfs-storage-backend-D6Z03fML.js";
|
|
6
|
+
import { a as formatTimestamp, i as formatFrameFilename, r as formatActionFilename } from "../file-system-utils-DueXHxo9.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-CtiUnAlJ.js";
|
|
8
|
+
import { t as embedCoverageInSessionJson } from "../zip-coverage-embed-ncVbaZAz.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 };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as NullStorageBackend } from "../null-storage-backend-
|
|
1
|
+
import { t as NullStorageBackend } from "../null-storage-backend-B1-jlpin.js";
|
|
2
2
|
export { NullStorageBackend };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as OpfsStorageBackend } from "../opfs-storage-backend-
|
|
1
|
+
import { t as OpfsStorageBackend } from "../opfs-storage-backend-D6Z03fML.js";
|
|
2
2
|
export { OpfsStorageBackend };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as getAppRootHandle, c as initOpfsStorage, d as resetSessionHandles, f as setSessionHandles, h as writeSessionMetadata, i as createSession, l as listSessions, m as writeFrame, n as SessionMetadata, o as getSessionHandle, p as writeAction, r as checkStorageQuota, s as getSessionsRootHandle, t as CreateSessionResult, u as resetOpfsStorage } from "../opfs-storage-
|
|
1
|
+
import { a as getAppRootHandle, c as initOpfsStorage, d as resetSessionHandles, f as setSessionHandles, h as writeSessionMetadata, i as createSession, l as listSessions, m as writeFrame, n as SessionMetadata, o as getSessionHandle, p as writeAction, r as checkStorageQuota, s as getSessionsRootHandle, t as CreateSessionResult, u as resetOpfsStorage } from "../opfs-storage-CTkxvxN4.js";
|
|
2
2
|
export { CreateSessionResult, SessionMetadata, checkStorageQuota, createSession, getAppRootHandle, getSessionHandle, getSessionsRootHandle, initOpfsStorage, listSessions, resetOpfsStorage, resetSessionHandles, setSessionHandles, writeAction, writeFrame, writeSessionMetadata };
|
|
@@ -89,6 +89,24 @@ function getAppRootHandle() {
|
|
|
89
89
|
return gpsPlusSlamDir;
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
|
+
* True when the name `name` is already taken under `dir` (by a session
|
|
93
|
+
* directory — or by a file, which the follow-up `{ create: true }` call could
|
|
94
|
+
* not replace either). Used by {@link createSession} to avoid silently reusing
|
|
95
|
+
* a directory when two recordings start within the same (second-resolution)
|
|
96
|
+
* timestamp. Rethrows unexpected probe errors (storage failures) so the caller
|
|
97
|
+
* fails loudly instead of mislabeling the name.
|
|
98
|
+
*/
|
|
99
|
+
async function sessionDirExists(dir, name) {
|
|
100
|
+
try {
|
|
101
|
+
await dir.getDirectoryHandle(name, { create: false });
|
|
102
|
+
return true;
|
|
103
|
+
} catch (err) {
|
|
104
|
+
if (err instanceof DOMException && err.name === "NotFoundError") return false;
|
|
105
|
+
if (err instanceof DOMException && err.name === "TypeMismatchError") return true;
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
92
110
|
* Create a new recording session.
|
|
93
111
|
*
|
|
94
112
|
* Creates the directory structure:
|
|
@@ -96,6 +114,11 @@ function getAppRootHandle() {
|
|
|
96
114
|
* - /gps-plus-slam/sessions/recording-{timestamp}/actions/
|
|
97
115
|
* - /gps-plus-slam/sessions/recording-{timestamp}/images/ (legacy: frames/)
|
|
98
116
|
*
|
|
117
|
+
* The folder name is `recording-{timestamp}` at whole-second resolution; if a
|
|
118
|
+
* directory with that name already exists (two recordings started in the same
|
|
119
|
+
* UTC second), a numeric suffix (`-2`, `-3`, …) is appended so the new session
|
|
120
|
+
* never silently reuses and corrupts the earlier one's directory.
|
|
121
|
+
*
|
|
99
122
|
* @param timestamp - Session start time (used for folder naming)
|
|
100
123
|
* @param _contextTag - Opaque tag; not used by the flat layout but accepted
|
|
101
124
|
* for interface compatibility with wrapping backends
|
|
@@ -104,7 +127,13 @@ function getAppRootHandle() {
|
|
|
104
127
|
*/
|
|
105
128
|
async function createSession(timestamp, _contextTag) {
|
|
106
129
|
if (!sessionsDir) throw new Error("OPFS storage not initialized. Call initOpfsStorage first.");
|
|
107
|
-
const
|
|
130
|
+
const baseName = `recording-${formatTimestamp(timestamp)}`;
|
|
131
|
+
let sessionName = baseName;
|
|
132
|
+
let suffix = 1;
|
|
133
|
+
while (await sessionDirExists(sessionsDir, sessionName)) {
|
|
134
|
+
suffix += 1;
|
|
135
|
+
sessionName = `${baseName}-${suffix}`;
|
|
136
|
+
}
|
|
108
137
|
currentSessionHandle = await sessionsDir.getDirectoryHandle(sessionName, { create: true });
|
|
109
138
|
actionsHandle = await currentSessionHandle.getDirectoryHandle("actions", { create: true });
|
|
110
139
|
framesHandle = await currentSessionHandle.getDirectoryHandle(SESSION_IMAGES_DIR, { create: true });
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as StorageBackend, t as CreateSessionResult } from "../storage-backend-
|
|
1
|
+
import { n as StorageBackend, t as CreateSessionResult } from "../storage-backend-sEtmM4yW.js";
|
|
2
2
|
export { CreateSessionResult, StorageBackend };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as embedCoverageInSessionJson } from "../zip-coverage-embed-
|
|
1
|
+
import { t as embedCoverageInSessionJson } from "../zip-coverage-embed-ncVbaZAz.js";
|
|
2
2
|
export { embedCoverageInSessionJson };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
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-
|
|
1
|
+
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-CtiUnAlJ.js";
|
|
2
2
|
export { ExportSessionAsZipOptions, ZipContributorAddFile, ZipExportContributor, ZipExportResult, downloadZip, exportSessionAsZip, exportSessionHandleAsZip, syncToExternalZip };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ZipActionEntry, c as
|
|
2
|
-
export { Entry, GpsPathCoord, MAX_ACTION_FILE_SIZE, RecordedAction, ZipActionEntry, ZipSubdirEntry, loadActionsFromZip, loadEntriesFromSubdir, loadGpsPathFromBlob, loadSessionMetadata, loadSessionMetadataFromBlob, readZipEntries };
|
|
1
|
+
import { a as ZipActionEntry, c as loadActionsFromZip, d as loadSessionMetadata, f as loadSessionMetadataFromBlob, i as RecordedAction, l as loadEntriesFromSubdir, m as toZipReader, n as GpsPathCoord, o as ZipSource, p as readZipEntries, r as MAX_ACTION_FILE_SIZE, s as ZipSubdirEntry, t as Entry, u as loadGpsPathFromBlob } from "../zip-reader-BzENzMH6.js";
|
|
2
|
+
export { Entry, GpsPathCoord, MAX_ACTION_FILE_SIZE, RecordedAction, ZipActionEntry, ZipSource, ZipSubdirEntry, loadActionsFromZip, loadEntriesFromSubdir, loadGpsPathFromBlob, loadSessionMetadata, loadSessionMetadataFromBlob, readZipEntries, toZipReader };
|