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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as NullStorageBackend } from "../null-storage-backend-
|
|
1
|
+
import { t as NullStorageBackend } from "../null-storage-backend-DXXuwG8T.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-D1ZpeNEL.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-S_odkCk1.js";
|
|
2
2
|
export { CreateSessionResult, SessionMetadata, checkStorageQuota, createSession, getAppRootHandle, getSessionHandle, getSessionsRootHandle, initOpfsStorage, listSessions, resetOpfsStorage, resetSessionHandles, setSessionHandles, writeAction, writeFrame, writeSessionMetadata };
|
|
@@ -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-BX7egQKi.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-BrodRLq0.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-CuBimX1J.js";
|
|
2
2
|
export { ExportSessionAsZipOptions, ZipContributorAddFile, ZipExportContributor, ZipExportResult, downloadZip, exportSessionAsZip, exportSessionHandleAsZip, syncToExternalZip };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger.js";
|
|
2
|
+
import { getSessionsRootHandle } from "./opfs-storage.js";
|
|
2
3
|
import { BlobReader, BlobWriter, ZipWriter } from "@zip.js/zip.js";
|
|
3
4
|
//#region ../src/storage/zip-export.ts
|
|
4
5
|
/**
|
|
@@ -20,10 +21,15 @@ import { BlobReader, BlobWriter, ZipWriter } from "@zip.js/zip.js";
|
|
|
20
21
|
*/
|
|
21
22
|
const log = createLogger("ZipExport");
|
|
22
23
|
/**
|
|
23
|
-
* Get the OPFS sessions directory handle
|
|
24
|
+
* Get the OPFS sessions directory handle from the layout owner
|
|
25
|
+
* (quality-review G-9 — this used to re-derive the
|
|
26
|
+
* `'gps-plus-slam'/'sessions'` path itself, so a root re-nesting in
|
|
27
|
+
* `opfs-storage.ts` would have silently broken export only).
|
|
24
28
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
function getSessionsHandle() {
|
|
30
|
+
const sessions = getSessionsRootHandle();
|
|
31
|
+
if (!sessions) throw new Error("OPFS storage not initialized — call initOpfsStorage() before exporting");
|
|
32
|
+
return sessions;
|
|
27
33
|
}
|
|
28
34
|
/**
|
|
29
35
|
* Stream all files from a directory recursively into a ZipWriter.
|
|
@@ -65,7 +71,7 @@ async function streamDirectoryToZip(dirHandle, zipWriter, basePath = "") {
|
|
|
65
71
|
*/
|
|
66
72
|
async function exportSessionAsZip(sessionName, options) {
|
|
67
73
|
log.info(`Exporting session: ${sessionName}`);
|
|
68
|
-
const sessionsDir =
|
|
74
|
+
const sessionsDir = getSessionsHandle();
|
|
69
75
|
let sessionHandle;
|
|
70
76
|
try {
|
|
71
77
|
sessionHandle = await sessionsDir.getDirectoryHandle(sessionName);
|
|
@@ -1,2 +1,2 @@
|
|
|
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-
|
|
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-BHc_b_iA.js";
|
|
2
2
|
export { Entry, GpsPathCoord, MAX_ACTION_FILE_SIZE, RecordedAction, ZipActionEntry, ZipSource, ZipSubdirEntry, loadActionsFromZip, loadEntriesFromSubdir, loadGpsPathFromBlob, loadSessionMetadata, loadSessionMetadataFromBlob, readZipEntries, toZipReader };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as MapData } from "./map-data-
|
|
2
|
-
import { t as SubscribableStore } from "./subscribe-to-selector-
|
|
1
|
+
import { t as MapData } from "./map-data-D8sSxpOr.js";
|
|
2
|
+
import { t as SubscribableStore } from "./subscribe-to-selector-Cgo9JTfS.js";
|
|
3
3
|
import { LatLong, Matrix4, Quaternion, Vector3 } from "gps-plus-slam-js";
|
|
4
4
|
|
|
5
5
|
//#region ../src/state/store-subscribers.d.ts
|
package/dist/types/ar-types.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as RgbTuple, i as DepthSample, n as ArPoseTuples, o as WebXRQuaternion, r as DepthPoint, s as WebXRVec3, t as ARPose } from "../ar-types-
|
|
2
|
-
export { ARPose, ArPoseTuples, DepthPoint, DepthSample, RgbTuple, WebXRQuaternion, WebXRVec3 };
|
|
1
|
+
import { a as RgbTuple, c as extractOdomPosition, i as DepthSample, l as extractOdomRotation, n as ArPoseTuples, o as WebXRQuaternion, r as DepthPoint, s as WebXRVec3, t as ARPose } from "../ar-types-CBafnxhE.js";
|
|
2
|
+
export { ARPose, ArPoseTuples, DepthPoint, DepthSample, RgbTuple, WebXRQuaternion, WebXRVec3, extractOdomPosition, extractOdomRotation };
|
package/dist/types/ar-types.js
CHANGED
|
@@ -1 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
//#region ../src/types/ar-types.ts
|
|
2
|
+
/**
|
|
3
|
+
* Extract the raw odometry position tuple from an {@link ARPose}.
|
|
4
|
+
*
|
|
5
|
+
* Returns the raw WebXR position without coordinate conversion — the reducer
|
|
6
|
+
* applies the WebXR→NUE transform when storing into state (raw-storage
|
|
7
|
+
* pattern, see docs/2026-04-09-raw-storage-convert-on-read.md).
|
|
8
|
+
* WebXR local-floor frame: X=East, Y=Up, Z=South (toward viewer / backward).
|
|
9
|
+
*
|
|
10
|
+
* Lives next to the type (quality-review G-8 — it used to sit in
|
|
11
|
+
* `state/gps-event-coordinator.ts`, forcing an ar→state import in
|
|
12
|
+
* `ar/depth-sampler.ts`).
|
|
13
|
+
*/
|
|
14
|
+
function extractOdomPosition(arPose) {
|
|
15
|
+
return [
|
|
16
|
+
arPose.position.x,
|
|
17
|
+
arPose.position.y,
|
|
18
|
+
arPose.position.z
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
/** Extract the raw odometry rotation tuple from an {@link ARPose}. */
|
|
22
|
+
function extractOdomRotation(arPose) {
|
|
23
|
+
return [
|
|
24
|
+
arPose.orientation.x,
|
|
25
|
+
arPose.orientation.y,
|
|
26
|
+
arPose.orientation.z,
|
|
27
|
+
arPose.orientation.w
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { extractOdomPosition, extractOdomRotation };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as RawGpsSample, r as RefPointMarker, t as GpsCoord } from "../geo-types-
|
|
1
|
+
import { n as RawGpsSample, r as RefPointMarker, t as GpsCoord } from "../geo-types-BfDK8kJu.js";
|
|
2
2
|
export { GpsCoord, RawGpsSample, RefPointMarker };
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as RgbTuple, i as DepthSample, n as ArPoseTuples, o as WebXRQuaternion, r as DepthPoint, s as WebXRVec3, t as ARPose } from "../ar-types-
|
|
2
|
-
import { n as RawGpsSample, r as RefPointMarker, t as GpsCoord } from "../geo-types-
|
|
3
|
-
export { ARPose, ArPoseTuples, DepthPoint, DepthSample, GpsCoord, RawGpsSample, RefPointMarker, RgbTuple, WebXRQuaternion, WebXRVec3 };
|
|
1
|
+
import { a as RgbTuple, c as extractOdomPosition, i as DepthSample, l as extractOdomRotation, n as ArPoseTuples, o as WebXRQuaternion, r as DepthPoint, s as WebXRVec3, t as ARPose } from "../ar-types-CBafnxhE.js";
|
|
2
|
+
import { n as RawGpsSample, r as RefPointMarker, t as GpsCoord } from "../geo-types-BfDK8kJu.js";
|
|
3
|
+
export { ARPose, ArPoseTuples, DepthPoint, DepthSample, GpsCoord, RawGpsSample, RefPointMarker, RgbTuple, WebXRQuaternion, WebXRVec3, extractOdomPosition, extractOdomRotation };
|
package/dist/types/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { extractOdomPosition, extractOdomRotation } from "./ar-types.js";
|
|
2
|
+
export { extractOdomPosition, extractOdomRotation };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as mapWithConcurrencyLimit, t as forEachWithConcurrencyLimit } from "../concurrency-
|
|
1
|
+
import { n as mapWithConcurrencyLimit, t as forEachWithConcurrencyLimit } from "../concurrency-DW0jQo3G.js";
|
|
2
2
|
export { forEachWithConcurrencyLimit, mapWithConcurrencyLimit };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as FailureTrackerConfig, r as createFailureTracker, t as FailureTracker } from "../failure-tracker-
|
|
1
|
+
import { n as FailureTrackerConfig, r as createFailureTracker, t as FailureTracker } from "../failure-tracker-B7fzPfZo.js";
|
|
2
2
|
export { FailureTracker, FailureTrackerConfig, createFailureTracker };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as formatFileSize } from "../format-file-size-
|
|
1
|
+
import { t as formatFileSize } from "../format-file-size-Da8rZgfs.js";
|
|
2
2
|
export { formatFileSize };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as computeFusedPath, r as fusedGpsFromOdom, t as FusedPathInput } from "../fused-path-
|
|
1
|
+
import { n as computeFusedPath, r as fusedGpsFromOdom, t as FusedPathInput } from "../fused-path-DOKzVMiO.js";
|
|
2
2
|
export { FusedPathInput, computeFusedPath, fusedGpsFromOdom };
|
package/dist/utils/fused-path.js
CHANGED
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as createLogger, c as setGlobalLogLevel, i as clearLogBuffer, l as subscribeToLogs, n as LogLevel, o as getGlobalLogLevel, r as Logger, s as getLogBuffer, t as LogEntry } from "../logger-
|
|
2
|
-
import { n as computeFusedPath, r as fusedGpsFromOdom, t as FusedPathInput } from "../fused-path-
|
|
3
|
-
import { n as FailureTrackerConfig, r as createFailureTracker, t as FailureTracker } from "../failure-tracker-
|
|
4
|
-
import { n as mapWithConcurrencyLimit } from "../concurrency-
|
|
5
|
-
import { t as geodesicAngleRad } from "../index-
|
|
6
|
-
import { t as formatFileSize } from "../format-file-size-
|
|
7
|
-
import { t as listFormatter } from "../list-formatter-
|
|
1
|
+
import { a as createLogger, c as setGlobalLogLevel, i as clearLogBuffer, l as subscribeToLogs, n as LogLevel, o as getGlobalLogLevel, r as Logger, s as getLogBuffer, t as LogEntry } from "../logger-B4StJUDb.js";
|
|
2
|
+
import { n as computeFusedPath, r as fusedGpsFromOdom, t as FusedPathInput } from "../fused-path-DOKzVMiO.js";
|
|
3
|
+
import { n as FailureTrackerConfig, r as createFailureTracker, t as FailureTracker } from "../failure-tracker-B7fzPfZo.js";
|
|
4
|
+
import { n as mapWithConcurrencyLimit } from "../concurrency-DW0jQo3G.js";
|
|
5
|
+
import { t as geodesicAngleRad } from "../index-Nr3qg4IH.js";
|
|
6
|
+
import { t as formatFileSize } from "../format-file-size-Da8rZgfs.js";
|
|
7
|
+
import { t as listFormatter } from "../list-formatter-1ttG18MQ.js";
|
|
8
8
|
export { FailureTracker, FailureTrackerConfig, FusedPathInput, LogEntry, LogLevel, Logger, clearLogBuffer, computeFusedPath, createFailureTracker, createLogger, formatFileSize, fusedGpsFromOdom, geodesicAngleRad, getGlobalLogLevel, getLogBuffer, listFormatter, mapWithConcurrencyLimit, setGlobalLogLevel, subscribeToLogs };
|
package/dist/utils/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LogLevel, clearLogBuffer, createLogger, getGlobalLogLevel, getLogBuffer, setGlobalLogLevel, subscribeToLogs } from "./logger.js";
|
|
2
2
|
import { createFailureTracker } from "./failure-tracker.js";
|
|
3
|
-
import { t as geodesicAngleRad } from "../geodesic-angle-
|
|
3
|
+
import { t as geodesicAngleRad } from "../geodesic-angle-HXBWiXiI.js";
|
|
4
4
|
import { computeFusedPath, fusedGpsFromOdom } from "./fused-path.js";
|
|
5
5
|
import { mapWithConcurrencyLimit } from "./concurrency.js";
|
|
6
6
|
import { formatFileSize } from "./format-file-size.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as listFormatter } from "../list-formatter-
|
|
1
|
+
import { t as listFormatter } from "../list-formatter-1ttG18MQ.js";
|
|
2
2
|
export { listFormatter };
|
package/dist/utils/logger.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as createLogger, c as setGlobalLogLevel, i as clearLogBuffer, l as subscribeToLogs, n as LogLevel, o as getGlobalLogLevel, r as Logger, s as getLogBuffer, t as LogEntry } from "../logger-
|
|
1
|
+
import { a as createLogger, c as setGlobalLogLevel, i as clearLogBuffer, l as subscribeToLogs, n as LogLevel, o as getGlobalLogLevel, r as Logger, s as getLogBuffer, t as LogEntry } from "../logger-B4StJUDb.js";
|
|
2
2
|
export { LogEntry, LogLevel, Logger, clearLogBuffer, createLogger, getGlobalLogLevel, getLogBuffer, setGlobalLogLevel, subscribeToLogs };
|
package/dist/utils/logger.js
CHANGED
|
@@ -93,10 +93,17 @@ function serializeArg(arg) {
|
|
|
93
93
|
return safeStringify(arg);
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
|
+
* Serialize a log call's arguments once (quality-review C-5 — the buffer,
|
|
97
|
+
* breadcrumb, and Sentry-message paths each used to re-serialize the same
|
|
98
|
+
* args, i.e. 2–3× per log call). All downstream consumers take the string.
|
|
99
|
+
*/
|
|
100
|
+
function serializeArgs(args) {
|
|
101
|
+
return args.map((arg) => serializeArg(arg)).join(" ");
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
96
104
|
* Add an entry to the log buffer and notify subscribers
|
|
97
105
|
*/
|
|
98
|
-
function addToBuffer(level, tag,
|
|
99
|
-
const message = args.map((arg) => serializeArg(arg)).join(" ");
|
|
106
|
+
function addToBuffer(level, tag, message) {
|
|
100
107
|
const entry = {
|
|
101
108
|
timestamp: Date.now(),
|
|
102
109
|
level,
|
|
@@ -177,8 +184,8 @@ function toSentryLevel(level) {
|
|
|
177
184
|
* Add a Sentry breadcrumb for debugging context.
|
|
178
185
|
* Breadcrumbs are attached to future exceptions, helping trace what happened before an error.
|
|
179
186
|
*/
|
|
180
|
-
function addSentryBreadcrumb(level, tag,
|
|
181
|
-
const message = `[${tag}] ${
|
|
187
|
+
function addSentryBreadcrumb(level, tag, body) {
|
|
188
|
+
const message = `[${tag}] ${body}`;
|
|
182
189
|
Sentry.addBreadcrumb({
|
|
183
190
|
category: "log",
|
|
184
191
|
level: toSentryLevel(level),
|
|
@@ -213,8 +220,7 @@ function toFingerprintTemplate(body) {
|
|
|
213
220
|
* messages from the same tag remain distinct Issues (see
|
|
214
221
|
* {@link toFingerprintTemplate}).
|
|
215
222
|
*/
|
|
216
|
-
function captureLogMessage(level, tag,
|
|
217
|
-
const body = args.map((arg) => serializeArg(arg)).join(" ");
|
|
223
|
+
function captureLogMessage(level, tag, body) {
|
|
218
224
|
const message = `[${tag}] ${body}`;
|
|
219
225
|
Sentry.captureMessage(message, {
|
|
220
226
|
level,
|
|
@@ -231,8 +237,8 @@ function captureLogMessage(level, tag, args) {
|
|
|
231
237
|
* Called for log.warn() so warnings are independently visible in the
|
|
232
238
|
* Sentry dashboard, not only as breadcrumbs attached to later exceptions.
|
|
233
239
|
*/
|
|
234
|
-
function reportWarningToSentry(tag,
|
|
235
|
-
captureLogMessage("warning", tag,
|
|
240
|
+
function reportWarningToSentry(tag, body) {
|
|
241
|
+
captureLogMessage("warning", tag, body);
|
|
236
242
|
}
|
|
237
243
|
/**
|
|
238
244
|
* Report log.error() arguments to Sentry as standalone Issues.
|
|
@@ -247,37 +253,41 @@ function reportWarningToSentry(tag, args) {
|
|
|
247
253
|
* Issues when an Error is present, and groups via the same normalized template
|
|
248
254
|
* fingerprint as warnings (see {@link captureLogMessage}).
|
|
249
255
|
*/
|
|
250
|
-
function reportErrorsToSentry(tag, args) {
|
|
256
|
+
function reportErrorsToSentry(tag, args, body) {
|
|
251
257
|
let capturedError = false;
|
|
252
258
|
for (const arg of args) if (arg instanceof Error) {
|
|
253
259
|
Sentry.captureException(arg);
|
|
254
260
|
capturedError = true;
|
|
255
261
|
}
|
|
256
|
-
if (!capturedError) captureLogMessage("error", tag,
|
|
262
|
+
if (!capturedError) captureLogMessage("error", tag, body);
|
|
257
263
|
}
|
|
258
264
|
function createLogger(tag) {
|
|
259
265
|
const prefix = `[${tag}]`;
|
|
260
266
|
return {
|
|
261
267
|
debug: (...args) => {
|
|
262
|
-
|
|
263
|
-
|
|
268
|
+
const body = serializeArgs(args);
|
|
269
|
+
addToBuffer(0, tag, body);
|
|
270
|
+
addSentryBreadcrumb(0, tag, body);
|
|
264
271
|
if (globalLogLevel <= 0) console.log(prefix, ...args);
|
|
265
272
|
},
|
|
266
273
|
info: (...args) => {
|
|
267
|
-
|
|
268
|
-
|
|
274
|
+
const body = serializeArgs(args);
|
|
275
|
+
addToBuffer(1, tag, body);
|
|
276
|
+
addSentryBreadcrumb(1, tag, body);
|
|
269
277
|
if (globalLogLevel <= 1) console.log(prefix, ...args);
|
|
270
278
|
},
|
|
271
279
|
warn: (...args) => {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
280
|
+
const body = serializeArgs(args);
|
|
281
|
+
addToBuffer(2, tag, body);
|
|
282
|
+
addSentryBreadcrumb(2, tag, body);
|
|
283
|
+
reportWarningToSentry(tag, body);
|
|
275
284
|
if (globalLogLevel <= 2) console.warn(prefix, ...args);
|
|
276
285
|
},
|
|
277
286
|
error: (...args) => {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
287
|
+
const body = serializeArgs(args);
|
|
288
|
+
addToBuffer(3, tag, body);
|
|
289
|
+
addSentryBreadcrumb(3, tag, body);
|
|
290
|
+
reportErrorsToSentry(tag, args, body);
|
|
281
291
|
if (globalLogLevel <= 3) console.error(prefix, ...args);
|
|
282
292
|
}
|
|
283
293
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as addAccuracyCircles, i as AccuracyCircleSample, n as ACCURACY_CIRCLE_STROKE_OPACITY, r as ACCURACY_CIRCLE_WEIGHT, t as ACCURACY_CIRCLE_FILL_OPACITY } from "../accuracy-circles-
|
|
1
|
+
import { a as addAccuracyCircles, i as AccuracyCircleSample, n as ACCURACY_CIRCLE_STROKE_OPACITY, r as ACCURACY_CIRCLE_WEIGHT, t as ACCURACY_CIRCLE_FILL_OPACITY } from "../accuracy-circles-BE7tbvYV.js";
|
|
2
2
|
export { ACCURACY_CIRCLE_FILL_OPACITY, ACCURACY_CIRCLE_STROKE_OPACITY, ACCURACY_CIRCLE_WEIGHT, AccuracyCircleSample, addAccuracyCircles };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createAlignmentLerper, t as AlignmentLerper } from "../alignment-lerper-
|
|
1
|
+
import { n as createAlignmentLerper, t as AlignmentLerper } from "../alignment-lerper-B4COh_0p.js";
|
|
2
2
|
export { AlignmentLerper, createAlignmentLerper };
|
|
@@ -28,27 +28,37 @@ new THREE.Vector3();
|
|
|
28
28
|
* @param arWorldGroup The group whose matrix is interpolated.
|
|
29
29
|
* @param lerpRate Lerp speed multiplier (default 8).
|
|
30
30
|
*/
|
|
31
|
+
const CONVERGED_POS_EPSILON_SQ = 1e-4 * 1e-4;
|
|
32
|
+
const CONVERGED_QUAT_DOT = .99999999;
|
|
33
|
+
const CONVERGED_SCALE_EPSILON_SQ = 1e-6 * 1e-6;
|
|
31
34
|
function createAlignmentLerper(arWorldGroup, lerpRate = 8) {
|
|
32
35
|
let hasTarget = false;
|
|
33
36
|
let isFirstTarget = true;
|
|
37
|
+
let converged = false;
|
|
34
38
|
const storedTargetPos = new THREE.Vector3();
|
|
35
39
|
const storedTargetQuat = new THREE.Quaternion();
|
|
36
40
|
const storedTargetScale = new THREE.Vector3(1, 1, 1);
|
|
37
41
|
const _matrix = new THREE.Matrix4();
|
|
42
|
+
/** Write the exact stored target and refresh the subtree. */
|
|
43
|
+
const applyTargetExactly = () => {
|
|
44
|
+
_matrix.compose(storedTargetPos, storedTargetQuat, storedTargetScale);
|
|
45
|
+
arWorldGroup.matrix.copy(_matrix);
|
|
46
|
+
arWorldGroup.matrixAutoUpdate = false;
|
|
47
|
+
arWorldGroup.updateMatrixWorld(true);
|
|
48
|
+
};
|
|
38
49
|
return {
|
|
39
50
|
setTarget(matrix) {
|
|
40
51
|
_matrix.fromArray(matrix);
|
|
41
52
|
_matrix.decompose(storedTargetPos, storedTargetQuat, storedTargetScale);
|
|
42
53
|
hasTarget = true;
|
|
54
|
+
converged = false;
|
|
43
55
|
},
|
|
44
56
|
update(dt) {
|
|
45
|
-
if (!hasTarget) return;
|
|
57
|
+
if (!hasTarget || converged) return;
|
|
46
58
|
if (isFirstTarget) {
|
|
47
|
-
|
|
48
|
-
arWorldGroup.matrix.copy(_matrix);
|
|
49
|
-
arWorldGroup.matrixAutoUpdate = false;
|
|
50
|
-
arWorldGroup.updateMatrixWorld(true);
|
|
59
|
+
applyTargetExactly();
|
|
51
60
|
isFirstTarget = false;
|
|
61
|
+
converged = true;
|
|
52
62
|
return;
|
|
53
63
|
}
|
|
54
64
|
arWorldGroup.matrix.decompose(_currentPos, _currentQuat, _currentScale);
|
|
@@ -56,6 +66,11 @@ function createAlignmentLerper(arWorldGroup, lerpRate = 8) {
|
|
|
56
66
|
_currentPos.lerp(storedTargetPos, alpha);
|
|
57
67
|
_currentQuat.slerp(storedTargetQuat, alpha);
|
|
58
68
|
_currentScale.lerp(storedTargetScale, alpha);
|
|
69
|
+
if (_currentPos.distanceToSquared(storedTargetPos) < CONVERGED_POS_EPSILON_SQ && Math.abs(_currentQuat.dot(storedTargetQuat)) > CONVERGED_QUAT_DOT && _currentScale.distanceToSquared(storedTargetScale) < CONVERGED_SCALE_EPSILON_SQ) {
|
|
70
|
+
applyTargetExactly();
|
|
71
|
+
converged = true;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
59
74
|
_matrix.compose(_currentPos, _currentQuat, _currentScale);
|
|
60
75
|
arWorldGroup.matrix.copy(_matrix);
|
|
61
76
|
arWorldGroup.matrixAutoUpdate = false;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as ArWorldGroupAlignmentOptions, r as enableArWorldGroupAlignment, t as ArWorldGroupAlignmentHandle } from "../ar-world-group-alignment-
|
|
1
|
+
import { n as ArWorldGroupAlignmentOptions, r as enableArWorldGroupAlignment, t as ArWorldGroupAlignmentHandle } from "../ar-world-group-alignment-B6XiA1cT.js";
|
|
2
2
|
export { ArWorldGroupAlignmentHandle, ArWorldGroupAlignmentOptions, enableArWorldGroupAlignment };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { registerFrameUpdate } from "../ar/frame-loop.js";
|
|
2
|
-
import { t as registerSessionDisposer } from "../session-disposers-
|
|
2
|
+
import { t as registerSessionDisposer } from "../session-disposers-BZS-hi8u.js";
|
|
3
3
|
import { createAlignmentLerper } from "./alignment-lerper.js";
|
|
4
4
|
import { selectAlignmentMatrix } from "../state/app-selectors.js";
|
|
5
5
|
import { subscribeToSelector } from "../state/subscribe-to-selector.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createCameraFollower, t as CameraFollower } from "../camera-follower-
|
|
1
|
+
import { n as createCameraFollower, t as CameraFollower } from "../camera-follower-B6zA3dy9.js";
|
|
2
2
|
export { CameraFollower, createCameraFollower };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createCss3dRendererManager, t as Css3dRendererManager } from "../css3d-renderer-manager-
|
|
1
|
+
import { n as createCss3dRendererManager, t as Css3dRendererManager } from "../css3d-renderer-manager-DbrSY7Mh.js";
|
|
2
2
|
export { Css3dRendererManager, createCss3dRendererManager };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as worldNueToGps, t as nueToArLocal } from "../frame-conversions-
|
|
1
|
+
import { n as worldNueToGps, t as nueToArLocal } from "../frame-conversions-CH7E2Iv_.js";
|
|
2
2
|
export { nueToArLocal, worldNueToGps };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as isSphereInCameraFrustum, n as isObjectInCameraFrustum, r as isPointInCameraFrustum, t as buildCameraFrustum } from "../frustum-visibility-
|
|
1
|
+
import { i as isSphereInCameraFrustum, n as isObjectInCameraFrustum, r as isPointInCameraFrustum, t as buildCameraFrustum } from "../frustum-visibility-COPfzruF.js";
|
|
2
2
|
export { buildCameraFrustum, isObjectInCameraFrustum, isPointInCameraFrustum, isSphereInCameraFrustum };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as GpsAnchorSamplePoint, i as GpsAnchorPhase, n as GpsAnchorMode, o as createGpsAnchor, r as GpsAnchorOptions, t as GpsAnchor } from "../gps-anchor-
|
|
1
|
+
import { a as GpsAnchorSamplePoint, i as GpsAnchorPhase, n as GpsAnchorMode, o as createGpsAnchor, r as GpsAnchorOptions, t as GpsAnchor } from "../gps-anchor-BaqyRsPC.js";
|
|
2
2
|
export { GpsAnchor, GpsAnchorMode, GpsAnchorOptions, GpsAnchorPhase, GpsAnchorSamplePoint, createGpsAnchor };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { t as interpolatingMedian } from "../median-Bla_W50f.js";
|
|
1
2
|
import { registerFrameUpdate } from "../ar/frame-loop.js";
|
|
2
3
|
import { isObjectInCameraFrustum } from "./frustum-visibility.js";
|
|
3
4
|
import { calcRelativeCoordsInMeters } from "../core/index.js";
|
|
4
|
-
import { nueToArLocal } from "./frame-conversions.js";
|
|
5
|
+
import { nueToArLocal, worldNueToGps } from "./frame-conversions.js";
|
|
5
6
|
import * as THREE from "three";
|
|
6
7
|
//#region ../src/visualization/gps-anchor.ts
|
|
7
8
|
/**
|
|
@@ -18,6 +19,27 @@ import * as THREE from "three";
|
|
|
18
19
|
* 6 and remains deferred.
|
|
19
20
|
*/
|
|
20
21
|
/**
|
|
22
|
+
* Built-in "object-pose" bootstrap source (quality-review G-6): samples the
|
|
23
|
+
* object's world pose converted to GPS. Requires a GPS-world frame — the
|
|
24
|
+
* world position is GPS-world NUE only once an alignment exists (via
|
|
25
|
+
* `enableArWorldGroupAlignment`), so ticks are skipped until zero AND
|
|
26
|
+
* alignment are available (mirrors "no fix yet").
|
|
27
|
+
*/
|
|
28
|
+
function createObjectPoseSampler(options) {
|
|
29
|
+
const scratch = new THREE.Vector3();
|
|
30
|
+
return () => {
|
|
31
|
+
const zero = options.getGpsZeroRef();
|
|
32
|
+
if (zero === null || zero === void 0) return null;
|
|
33
|
+
const alignment = options.getAlignmentMatrix();
|
|
34
|
+
if (alignment === null || alignment === void 0) return null;
|
|
35
|
+
return worldNueToGps(options.object3D.getWorldPosition(scratch), zero);
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** A caller-provided bootstrap reader wins; otherwise the built-in object-pose source. */
|
|
39
|
+
function resolveBootstrapSampler(options) {
|
|
40
|
+
return options.getCurrentGpsPoint ?? createObjectPoseSampler(options);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
21
43
|
* Module-level registry of objects currently owned by a `GpsAnchor`.
|
|
22
44
|
* Used to detect nested anchors (parent + child both anchored) which
|
|
23
45
|
* we explicitly forbid; mirrors the C# invariant.
|
|
@@ -48,20 +70,14 @@ function isDescendantOf(object, arWorldGroup) {
|
|
|
48
70
|
}
|
|
49
71
|
return false;
|
|
50
72
|
}
|
|
51
|
-
function median(values) {
|
|
52
|
-
const sorted = [...values].sort((a, b) => a - b);
|
|
53
|
-
const mid = Math.floor(sorted.length / 2);
|
|
54
|
-
if (sorted.length % 2 === 0) return (sorted[mid - 1] + sorted[mid]) / 2;
|
|
55
|
-
return sorted[mid];
|
|
56
|
-
}
|
|
57
73
|
function medianPoint(samples) {
|
|
58
|
-
const lat =
|
|
59
|
-
const lon =
|
|
74
|
+
const lat = interpolatingMedian(samples.map((s) => s.lat));
|
|
75
|
+
const lon = interpolatingMedian(samples.map((s) => s.lon));
|
|
60
76
|
const alts = samples.map((s) => "altitude" in s ? s.altitude : void 0).filter((a) => typeof a === "number");
|
|
61
77
|
if (alts.length > 0) return {
|
|
62
78
|
lat,
|
|
63
79
|
lon,
|
|
64
|
-
altitude:
|
|
80
|
+
altitude: interpolatingMedian(alts)
|
|
65
81
|
};
|
|
66
82
|
return {
|
|
67
83
|
lat,
|
|
@@ -82,6 +98,7 @@ function createGpsAnchor(options) {
|
|
|
82
98
|
options.angleThresholdInDegrees;
|
|
83
99
|
const mode = options.mode ?? "snap-when-offscreen";
|
|
84
100
|
const scratchTarget = new THREE.Vector3();
|
|
101
|
+
const getCurrentGpsPoint = resolveBootstrapSampler(options);
|
|
85
102
|
const scratchCamWorld = new THREE.Vector3();
|
|
86
103
|
const scratchObjWorld = new THREE.Vector3();
|
|
87
104
|
let phase = options.skipBootstrap === true ? "anchored" : "bootstrap";
|
|
@@ -148,18 +165,26 @@ function createGpsAnchor(options) {
|
|
|
148
165
|
* matrix yet — an AR-local object cannot be placed without knowing the
|
|
149
166
|
* AR↔NUE transform).
|
|
150
167
|
*/
|
|
168
|
+
let lastTargetZeroRef = null;
|
|
169
|
+
let lastTargetAlignmentRef = null;
|
|
170
|
+
let lastTargetGpsPointRef = null;
|
|
151
171
|
const maybeCommitSteadyState = () => {
|
|
152
172
|
const zero = options.getGpsZeroRef();
|
|
153
173
|
if (zero === null || zero === void 0) return;
|
|
154
174
|
const currentAlignment = options.getAlignmentMatrix();
|
|
155
175
|
if (currentAlignment === null || currentAlignment === void 0) return;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
176
|
+
if (zero !== lastTargetZeroRef || currentAlignment !== lastTargetAlignmentRef || gpsPoint !== lastTargetGpsPointRef) {
|
|
177
|
+
const targetAlt = "altitude" in gpsPoint && typeof gpsPoint.altitude === "number" ? gpsPoint.altitude : 0;
|
|
178
|
+
const nue = calcRelativeCoordsInMeters(zero, gpsPoint, targetAlt, 0);
|
|
179
|
+
nueToArLocal(currentAlignment, [
|
|
180
|
+
nue[0],
|
|
181
|
+
nue[1],
|
|
182
|
+
nue[2]
|
|
183
|
+
], scratchTarget);
|
|
184
|
+
lastTargetZeroRef = zero;
|
|
185
|
+
lastTargetAlignmentRef = currentAlignment;
|
|
186
|
+
lastTargetGpsPointRef = gpsPoint;
|
|
187
|
+
}
|
|
163
188
|
options.camera.getWorldPosition(scratchCamWorld);
|
|
164
189
|
options.object3D.getWorldPosition(scratchObjWorld);
|
|
165
190
|
const scale = 1 + 10 * scratchCamWorld.distanceTo(scratchObjWorld) / 100;
|
|
@@ -181,7 +206,7 @@ function createGpsAnchor(options) {
|
|
|
181
206
|
}
|
|
182
207
|
if (elapsed - phaseEnteredAtElapsed < settlingSeconds) return;
|
|
183
208
|
if (lastSampleAtElapsed !== null && elapsed - lastSampleAtElapsed < 1) return;
|
|
184
|
-
const sample =
|
|
209
|
+
const sample = getCurrentGpsPoint();
|
|
185
210
|
if (sample === null || sample === void 0) return;
|
|
186
211
|
samples.push(sample);
|
|
187
212
|
lastSampleAtElapsed = elapsed;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as createGpsCompassCubes, n as COMPASS_CUBE_SIZE, r as GpsCompassCubes, t as COMPASS_CUBE_DISTANCE } from "../gps-compass-cubes-
|
|
1
|
+
import { i as createGpsCompassCubes, n as COMPASS_CUBE_SIZE, r as GpsCompassCubes, t as COMPASS_CUBE_DISTANCE } from "../gps-compass-cubes-CT3TWctJ.js";
|
|
2
2
|
export { COMPASS_CUBE_DISTANCE, COMPASS_CUBE_SIZE, GpsCompassCubes, createGpsCompassCubes };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as GpsEventVisualizer, r as gpsEventVisualizer, t as GpsEventAccuracy } from "../gps-event-markers-
|
|
1
|
+
import { n as GpsEventVisualizer, r as gpsEventVisualizer, t as GpsEventAccuracy } from "../gps-event-markers-BsC2Ynlh.js";
|
|
2
2
|
export { GpsEventAccuracy, GpsEventVisualizer, gpsEventVisualizer };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger.js";
|
|
2
2
|
import { disposeMeshArray } from "./three-dispose.js";
|
|
3
|
-
import { f as getArWorldGroup, x as getScene } from "../webxr-session-
|
|
3
|
+
import { f as getArWorldGroup, x as getScene } from "../webxr-session-DWKUsCN9.js";
|
|
4
4
|
import { VIS_COLORS } from "./vis-colors.js";
|
|
5
5
|
import * as THREE from "three";
|
|
6
6
|
//#region ../src/visualization/gps-event-markers.ts
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createReticleMesh, r as updateReticle, t as HitMatrix } from "../hit-test-reticle-
|
|
1
|
+
import { n as createReticleMesh, r as updateReticle, t as HitMatrix } from "../hit-test-reticle-DhnCMOsc.js";
|
|
2
2
|
export { HitMatrix, createReticleMesh, updateReticle };
|