gps-plus-slam-app-framework 1.3.0 → 1.7.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/absolute-orientation-CAEh840t.d.ts +54 -0
- package/dist/{app-selectors-B8VQoMDY.d.ts → app-selectors-ikTUQZpe.d.ts} +1 -1
- package/dist/ar/bresenham3d.d.ts +1 -1
- package/dist/ar/camera-blit-capture.d.ts +2 -2
- package/dist/ar/camera-blit-capture.js +74 -9
- 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 +2 -0
- package/dist/ar/depth-grid-lookup.js +43 -0
- package/dist/ar/depth-sampler.d.ts +2 -2
- package/dist/ar/depth-sampler.js +2 -4
- 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 +26 -1
- package/dist/ar/frame-loop.d.ts +1 -1
- package/dist/ar/image-capture.d.ts +2 -2
- package/dist/ar/image-capture.js +1 -154
- package/dist/ar/image-quality.d.ts +2 -0
- package/dist/ar/image-quality.js +168 -0
- package/dist/ar/index.d.ts +31 -19
- package/dist/ar/index.js +17 -5
- package/dist/ar/occupancy-grid.d.ts +1 -1
- package/dist/ar/occupancy-grid.js +29 -2
- package/dist/ar/planar-pnp.d.ts +2 -0
- package/dist/ar/planar-pnp.js +425 -0
- package/dist/ar/qr-debug-view.d.ts +2 -0
- package/dist/ar/qr-debug-view.js +89 -0
- package/dist/ar/qr-derived-pose.d.ts +2 -0
- package/dist/ar/qr-derived-pose.js +114 -0
- package/dist/ar/qr-detection-controller.d.ts +2 -0
- package/dist/ar/qr-detection-controller.js +2 -0
- package/dist/ar/qr-frontend.d.ts +2 -0
- package/dist/ar/qr-frontend.js +60 -0
- package/dist/ar/qr-pose.d.ts +2 -0
- package/dist/ar/qr-pose.js +267 -0
- package/dist/ar/qr-size-depth-context.d.ts +3 -0
- package/dist/ar/qr-size-depth-context.js +42 -0
- package/dist/ar/qr-size-measurer.d.ts +2 -0
- package/dist/ar/qr-size-measurer.js +2 -0
- 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-MFpFlV7j.js +382 -0
- package/dist/{ar-world-group-alignment-C9lwwIyI.d.ts → ar-world-group-alignment-69fgnB39.d.ts} +1 -1
- package/dist/{camera-blit-capture-CnxUDbKx.d.ts → camera-blit-capture-NKT9H5-e.d.ts} +57 -4
- package/dist/capture-motion-gate-0Yl2NpQG.d.ts +24 -0
- package/dist/capture-motion-gate-4EscNZCw.js +94 -0
- package/dist/concurrency-By0oOTZt.d.ts +50 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/create-slam-app-store-DkCHOpvb.js +149 -0
- package/dist/{create-slam-app-store-BljusOua.d.ts → create-slam-app-store-n_VF63D5.d.ts} +50 -40
- package/dist/depth-grid-lookup-DQ-IYhO3.d.ts +21 -0
- package/dist/{depth-sampler-Bhanfwla.d.ts → depth-sampler-asc8exHt.d.ts} +1 -1
- package/dist/{depth-unprojection-Y6i_mJuT.d.ts → depth-unprojection-DjsbJW9L.d.ts} +1 -1
- package/dist/{enable-gps-ar-BfUJOgpW.d.ts → enable-gps-ar-DkNhFv4Y.d.ts} +4 -4
- package/dist/{frame-conversions-BfsafGWR.d.ts → frame-conversions-DObhj8Wf.d.ts} +1 -1
- package/dist/{fused-path-DJoVu98b.d.ts → fused-path-v6eOmLl3.d.ts} +1 -1
- package/dist/geo/h3-proximity.d.ts +2 -2
- package/dist/geo/h3-proximity.js +61 -2
- package/dist/geo/index.d.ts +2 -2
- package/dist/geo/index.js +2 -2
- package/dist/geodesic-angle-BTldfFgs.js +39 -0
- package/dist/{gps-anchor-dYeCvvp5.d.ts → gps-anchor-BeFO2RYa.d.ts} +1 -1
- package/dist/{gps-ar-pose-sampler-DVb96iOy.d.ts → gps-ar-pose-sampler-DHMZmYAc.d.ts} +1 -1
- package/dist/{gps-event-coordinator-CWIDOk4U.d.ts → gps-event-coordinator-CjWW636x.d.ts} +21 -11
- package/dist/{gps-event-markers-Dc9FT-q1.d.ts → gps-event-markers-Cz9RMA2k.d.ts} +18 -0
- package/dist/{h3-proximity-I1msGPgE.d.ts → h3-proximity-C-j0pw1j.d.ts} +39 -1
- package/dist/image-capture-B2-b6tKK.js +374 -0
- package/dist/{image-capture-qAZ5Fh5X.d.ts → image-capture-CNZDrQXG.d.ts} +103 -3
- package/dist/image-quality-smCBoFj1.d.ts +158 -0
- package/dist/index-BAPokxMb.d.ts +22 -0
- package/dist/{index-BYYUdf9v.d.ts → index-BODDUTvD.d.ts} +1 -1
- package/dist/index-BneSj4_5.d.ts +399 -0
- package/dist/index-_Rhgoqkh.d.ts +2 -0
- package/dist/index.d.ts +80 -67
- package/dist/index.js +24 -12
- package/dist/{leaflet-map-overlay-6CJC-E1l.d.ts → leaflet-map-overlay-CmIyiE8n.d.ts} +1 -1
- package/dist/{map-data-CkloBxIl.d.ts → map-data-B4oEehUh.d.ts} +1 -1
- package/dist/{map-overlay-draw-krOKwDAq.d.ts → map-overlay-draw-ymz1s7fG.d.ts} +1 -1
- package/dist/{null-storage-backend-uKQE8tl7.d.ts → null-storage-backend-B9rtyDfG.d.ts} +2 -2
- package/dist/{occupancy-grid-BRNRaPyT.d.ts → occupancy-grid-DnOc-6PU.d.ts} +12 -2
- package/dist/{opfs-storage-D5zAn_lx.d.ts → opfs-storage-3VZh-qH6.d.ts} +23 -4
- package/dist/{opfs-storage-backend-6aYMUZlJ.d.ts → opfs-storage-backend-JJiUJo-3.d.ts} +3 -3
- package/dist/{persistence-middleware-B9ei4Nhx.d.ts → persistence-middleware-DAPTTwB2.d.ts} +1 -1
- package/dist/planar-pnp-my9bqULS.d.ts +67 -0
- package/dist/qr-debug-view-Brl73HGO.d.ts +29 -0
- package/dist/qr-derived-pose-CmxTP2m4.d.ts +122 -0
- package/dist/qr-detected-slice-VQssZmQJ.d.ts +166 -0
- package/dist/qr-detection-controller-B-tLVd-S.js +119 -0
- package/dist/qr-detection-controller-CDurHv8E.d.ts +48 -0
- package/dist/qr-frontend--fFX25mV.d.ts +58 -0
- package/dist/qr-pose-D2rfu5DA.d.ts +138 -0
- package/dist/qr-pose-aggregation-B7tWJq7j.d.ts +90 -0
- package/dist/qr-pose-aggregation-DBiaLW0O.js +191 -0
- package/dist/qr-size-depth-context-CeAG53fy.d.ts +13 -0
- package/dist/qr-size-measurer-DLb33geH.js +596 -0
- package/dist/qr-size-measurer-DQdAsid1.d.ts +165 -0
- package/dist/recording-options-BPCpMHLK.d.ts +514 -0
- package/dist/{recording-replayer-r0DZ9ALp.d.ts → recording-replayer-DQKpAGyQ.d.ts} +2 -2
- package/dist/recording-slice-DaxHZvNu.d.ts +55 -0
- package/dist/{replay-engine-XpDa0dy1.d.ts → replay-engine-CmKh_4wf.d.ts} +7 -4
- package/dist/{replay-scene-Bw58VL6p.d.ts → replay-scene-DBlDrV_x.d.ts} +3 -3
- package/dist/sensors/absolute-orientation.d.ts +2 -0
- package/dist/sensors/absolute-orientation.js +145 -0
- package/dist/sensors/gps-error-handler.d.ts +1 -1
- package/dist/sensors/gps.d.ts +1 -1
- package/dist/sensors/index.d.ts +5 -4
- package/dist/sensors/index.js +2 -1
- package/dist/sensors/permission-checker.d.ts +1 -1
- package/dist/sensors/permission-checker.js +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 -74
- package/dist/state/gps-ar-pose-sampler.d.ts +3 -3
- package/dist/state/gps-event-coordinator.d.ts +2 -2
- package/dist/state/gps-event-coordinator.js +27 -17
- package/dist/state/index.d.ts +20 -17
- package/dist/state/index.js +5 -4
- package/dist/state/persistence-middleware.d.ts +1 -1
- package/dist/state/persistence-middleware.js +30 -19
- package/dist/state/qr-detected-slice.d.ts +4 -0
- package/dist/state/qr-detected-slice.js +311 -0
- package/dist/state/recording-options.d.ts +2 -2
- package/dist/state/recording-options.js +273 -7
- 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/recording-slice.js +5 -1
- package/dist/state/replay-engine.d.ts +1 -1
- package/dist/state/replay-engine.js +7 -3
- package/dist/state/store-subscribers.d.ts +2 -2
- package/dist/state/subscribe-to-selector.d.ts +1 -1
- package/dist/state/tracking-quality.d.ts +2 -2
- package/dist/state/tracking-quality.js +40 -128
- package/dist/state/tracking-slice.d.ts +1 -1
- package/dist/{state-BkIfpiyA.js → state-E51QT_-j.js} +2 -1
- package/dist/storage/file-system-utils.d.ts +1 -1
- package/dist/storage/index.d.ts +9 -9
- package/dist/storage/index.js +4 -4
- 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-backend.js +3 -3
- package/dist/storage/opfs-storage.d.ts +1 -1
- package/dist/storage/opfs-storage.js +5 -4
- package/dist/storage/storage-backend.d.ts +1 -1
- package/dist/storage/zip-coverage-embed.d.ts +2 -0
- package/dist/storage/zip-coverage-embed.js +88 -0
- package/dist/storage/zip-export.d.ts +2 -2
- package/dist/storage/zip-export.js +37 -59
- package/dist/storage/zip-reader.d.ts +1 -1
- package/dist/{storage-backend-Do6YDpNo.d.ts → storage-backend-BdVLD0dU.d.ts} +1 -1
- package/dist/{store-subscribers-0YWyOLvV.d.ts → store-subscribers-CA6AJH_8.d.ts} +2 -2
- package/dist/{subscribe-to-selector-CZ6k1NFP.d.ts → subscribe-to-selector-B6EUmQ3I.d.ts} +1 -1
- package/dist/test-utils/browser-mocks.d.ts +7 -1
- package/dist/test-utils/browser-mocks.js +6 -0
- package/dist/test-utils/zip-round-trip-helpers.d.ts +9 -1
- package/dist/test-utils/zip-round-trip-helpers.js +5 -1
- package/dist/{tracking-slice-CdK8c-8P.d.ts → tracking-slice-BuAZxXZ5.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 +2 -2
- package/dist/utils/concurrency.js +66 -2
- 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 +8 -7
- package/dist/utils/index.js +2 -1
- 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/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 +40 -5
- package/dist/visualization/hit-test-reticle.d.ts +1 -1
- package/dist/visualization/hit-test-reticle.js +1 -0
- package/dist/visualization/index.d.ts +18 -18
- package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
- package/dist/visualization/leaflet-map-overlay.js +15 -3
- package/dist/visualization/lerp-utils.d.ts +1 -1
- package/dist/visualization/map-data.d.ts +1 -1
- package/dist/visualization/map-overlay-draw.d.ts +1 -1
- package/dist/visualization/map-overlay.d.ts +1 -1
- package/dist/visualization/three-dispose.d.ts +1 -1
- package/dist/visualization/vis-colors.d.ts +1 -1
- package/dist/{webxr-session-TIaD883f.js → webxr-session-DG-eNfny.js} +244 -11
- package/dist/{webxr-session-GjZ2BIpS.d.ts → webxr-session-Do5L6G3B.d.ts} +86 -8
- package/dist/zip-coverage-embed-DCAREVmw.d.ts +41 -0
- package/dist/{zip-export-G14hkSPG.d.ts → zip-export-ol0S_Ofd.d.ts} +27 -23
- package/package.json +2 -2
- package/dist/concurrency-CO1FQvs3.d.ts +0 -24
- package/dist/file-system-CwXTNHmB.d.ts +0 -114
- package/dist/index-CF05QV2m.d.ts +0 -2
- package/dist/recording-options-DJBXuMxV.d.ts +0 -182
- package/dist/recording-slice-89O07ebs.d.ts +0 -36
- package/dist/storage/file-system.d.ts +0 -2
- package/dist/storage/file-system.js +0 -289
- /package/dist/{accuracy-circles-BpwWAs8G.d.ts → accuracy-circles-BtqOP_v1.d.ts} +0 -0
- /package/dist/{alignment-lerper-Dm9G7JJO.d.ts → alignment-lerper-Bil6vbVw.d.ts} +0 -0
- /package/dist/{ar-types-Dan1MVTi.d.ts → ar-types-BFX2r1wk.d.ts} +0 -0
- /package/dist/{bresenham3d-CFfd7n6B.d.ts → bresenham3d-CU1Gv2W4.d.ts} +0 -0
- /package/dist/{camera-follower-C2mwEn7c.d.ts → camera-follower-CqJJ7zRj.d.ts} +0 -0
- /package/dist/{capability-checker-CQXJHxXg.d.ts → capability-checker-DUQLg6gq.d.ts} +0 -0
- /package/dist/{capture-failure-tracker-CUeU3L_M.d.ts → capture-failure-tracker-gsm8q7yi.d.ts} +0 -0
- /package/dist/{chromium-camera-access-workaround-Jqbn0apH.d.ts → chromium-camera-access-workaround-D4K2uwwQ.d.ts} +0 -0
- /package/dist/{css3d-renderer-manager-ptu_t3B3.d.ts → css3d-renderer-manager-B3kGNtcn.d.ts} +0 -0
- /package/dist/{failure-tracker-Cn8Fo9D4.d.ts → failure-tracker-BO7M7jF_.d.ts} +0 -0
- /package/dist/{file-system-utils-CXIoL-DM.d.ts → file-system-utils-DOajnMm-.d.ts} +0 -0
- /package/dist/{format-file-size-CLCZz3lC.d.ts → format-file-size-Dc98ulzB.d.ts} +0 -0
- /package/dist/{frame-loop-CMewS8cY.d.ts → frame-loop-CpVjQ1dH.d.ts} +0 -0
- /package/dist/{frustum-visibility-CmI96ESS.d.ts → frustum-visibility-CeoCZchO.d.ts} +0 -0
- /package/dist/{geo-types-SaPnIEUM.d.ts → geo-types-3Ip1NzVR.d.ts} +0 -0
- /package/dist/{gps-VuezJWK3.d.ts → gps-BBO3hKfT.d.ts} +0 -0
- /package/dist/{gps-compass-cubes-BM1uGiYV.d.ts → gps-compass-cubes-DSN87L8p.d.ts} +0 -0
- /package/dist/{gps-error-handler-CJl_2MVm.d.ts → gps-error-handler-BbPsfw-_.d.ts} +0 -0
- /package/dist/{hit-test-reticle-BEzEybxZ.d.ts → hit-test-reticle-DV-2TpB9.d.ts} +0 -0
- /package/dist/{lerp-utils-BpV-0Dtk.d.ts → lerp-utils-BLmHhkVe.d.ts} +0 -0
- /package/dist/{list-formatter-RRcBe8Vg.d.ts → list-formatter-KNMS0ay2.d.ts} +0 -0
- /package/dist/{logger-BEHXsnnq.d.ts → logger-CLnPrHiD.d.ts} +0 -0
- /package/dist/{map-overlay-bcogY5fK.d.ts → map-overlay-Dh2B97MP.d.ts} +0 -0
- /package/dist/{permission-checker-GpAiSCwd.d.ts → permission-checker-CDuI8BwC.d.ts} +0 -0
- /package/dist/{scene-node-names-Bu0S66H1.d.ts → scene-node-names-BiShOQDB.d.ts} +0 -0
- /package/dist/{session-disposers-M-oashRH.js → session-disposers-zv9OGXPB.js} +0 -0
- /package/dist/{three-dispose-D950t71B.d.ts → three-dispose-Bt1k7WKh.d.ts} +0 -0
- /package/dist/{vis-colors-D6omC64K.d.ts → vis-colors-Obw2pLqT.d.ts} +0 -0
- /package/dist/{webxr-nue-basis-CqKQmZzT.d.ts → webxr-nue-basis-3nfjDJJp.d.ts} +0 -0
- /package/dist/{xr-camera-texture-DBwCaKTd.d.ts → xr-camera-texture-Cva1q3Qj.d.ts} +0 -0
- /package/dist/{xr-error-handler-C0AQRmxs.d.ts → xr-error-handler-CtvHpjfm.d.ts} +0 -0
- /package/dist/{xr-frame-loop-BtYytZJg.d.ts → xr-frame-loop-DIYtRcUa.d.ts} +0 -0
- /package/dist/{zip-reader-DSEXt7K6.d.ts → zip-reader-D9iPQwdQ.d.ts} +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { i as DepthSample } from "./ar-types-BFX2r1wk.js";
|
|
2
|
+
import { g as RecordingOptions } from "./recording-options-BPCpMHLK.js";
|
|
3
|
+
import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
|
|
4
|
+
|
|
5
|
+
//#region ../src/state/recording-slice.d.ts
|
|
6
|
+
interface SessionMetadata {
|
|
7
|
+
/**
|
|
8
|
+
* Opaque grouping label the framework does NOT interpret. Consumers (e.g.
|
|
9
|
+
* the recorder) use it to carry app-specific grouping such as a scenario
|
|
10
|
+
* name. Renamed from `scenarioName` on 2026-06-21 to match the on-disk
|
|
11
|
+
* `SessionMetadata.contextTag` (opfs-storage); the reducer maps the legacy
|
|
12
|
+
* `scenarioName` field for replayed pre-rename recordings — see
|
|
13
|
+
* {@link StartSessionPayload}.
|
|
14
|
+
*/
|
|
15
|
+
contextTag: string;
|
|
16
|
+
sessionName: string;
|
|
17
|
+
startTime: number;
|
|
18
|
+
deviceInfo?: string;
|
|
19
|
+
notes?: string;
|
|
20
|
+
/** Recording options used for this session (for replay context) */
|
|
21
|
+
recordingOptions?: RecordingOptions;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Payload accepted by {@link startSession}. New callers pass `contextTag`.
|
|
25
|
+
* Recordings made before the 2026-06-21 rename persist the legacy
|
|
26
|
+
* `scenarioName` instead; when such a `recording/startSession` action is
|
|
27
|
+
* replayed, the reducer maps it onto `contextTag`, so old recordings keep
|
|
28
|
+
* replaying without a separate migration step.
|
|
29
|
+
*/
|
|
30
|
+
type StartSessionPayload = Omit<SessionMetadata, 'contextTag'> & {
|
|
31
|
+
contextTag?: string; /** @deprecated legacy alias for {@link SessionMetadata.contextTag}. */
|
|
32
|
+
scenarioName?: string;
|
|
33
|
+
};
|
|
34
|
+
interface RecordingState {
|
|
35
|
+
isRecording: boolean;
|
|
36
|
+
sessionMetadata: SessionMetadata | null;
|
|
37
|
+
actionCount: number;
|
|
38
|
+
/**
|
|
39
|
+
* Count of failed file write operations during this session.
|
|
40
|
+
* User Feedback Issue #1 Part B: Track write failures for visibility.
|
|
41
|
+
*/
|
|
42
|
+
failedWriteCount: number;
|
|
43
|
+
/**
|
|
44
|
+
* The most recent depth sample, kept ONLY so subscribers can observe new
|
|
45
|
+
* samples via reference comparison (the AR-space occupancy grid is fed
|
|
46
|
+
* this way — see the 2026-06-11 occupancy-grid port plan). The persisted
|
|
47
|
+
* action stream remains the source of truth; no history is kept here.
|
|
48
|
+
* The payload stays in raw WebXR coordinates — conversion-free.
|
|
49
|
+
*/
|
|
50
|
+
latestDepthSample: DepthSample | null;
|
|
51
|
+
}
|
|
52
|
+
declare const startSession: _$_reduxjs_toolkit0.ActionCreatorWithPayload<StartSessionPayload, "recording/startSession">, endSession: _$_reduxjs_toolkit0.ActionCreatorWithoutPayload<"recording/endSession">, recordDepthSample: _$_reduxjs_toolkit0.ActionCreatorWithPayload<DepthSample, "recording/recordDepthSample">, recordWriteFailure: _$_reduxjs_toolkit0.ActionCreatorWithPayload<string, "recording/recordWriteFailure">;
|
|
53
|
+
declare const recordingReducer: _$_reduxjs_toolkit0.Reducer<RecordingState>;
|
|
54
|
+
//#endregion
|
|
55
|
+
export { recordWriteFailure as a, recordDepthSample as i, SessionMetadata as n, recordingReducer as o, endSession as r, startSession as s, RecordingState as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as SlamAppStore } from "./create-slam-app-store-
|
|
1
|
+
import { i as SlamAppStore } from "./create-slam-app-store-n_VF63D5.js";
|
|
2
2
|
import { ReducersMapObject } from "@reduxjs/toolkit";
|
|
3
3
|
|
|
4
4
|
//#region ../src/state/replay-engine.d.ts
|
|
@@ -19,9 +19,12 @@ interface ReplayAction {
|
|
|
19
19
|
* Extract an absolute epoch-ms timestamp from a Redux action, or null
|
|
20
20
|
* if the action type doesn't carry one.
|
|
21
21
|
*
|
|
22
|
-
* IMPORTANT:
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* IMPORTANT: the high-frequency sensor streams (depthSample, qrDetected) return
|
|
23
|
+
* null here ON PURPOSE — they are NOT used to pace replay delays (they anchor to
|
|
24
|
+
* the GPS/image/session timeline by recorded ORDER instead). Their payload
|
|
25
|
+
* `timestamp` IS epoch ms (`performance.timeOrigin + frameTs`, see
|
|
26
|
+
* `ar/depth-sampler.ts`); the QR size as-of join reads those payload timestamps
|
|
27
|
+
* directly, independently of this pacing function. (Risk R4)
|
|
25
28
|
*
|
|
26
29
|
* @param action - A Redux action with type and optional payload
|
|
27
30
|
* @returns Epoch milliseconds, or null if unavailable/unreliable
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as Css3dRendererManager } from "./css3d-renderer-manager-
|
|
2
|
-
import { t as CameraFollower } from "./camera-follower-
|
|
3
|
-
import { t as AlignmentLerper } from "./alignment-lerper-
|
|
1
|
+
import { t as Css3dRendererManager } from "./css3d-renderer-manager-B3kGNtcn.js";
|
|
2
|
+
import { t as CameraFollower } from "./camera-follower-CqJJ7zRj.js";
|
|
3
|
+
import { t as AlignmentLerper } from "./alignment-lerper-Bil6vbVw.js";
|
|
4
4
|
import * as THREE from "three";
|
|
5
5
|
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
|
|
6
6
|
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as startAbsoluteOrientationWatch, i as isAbsoluteOrientationAvailable, n as AbsoluteOrientationStatus, o as stopAbsoluteOrientationWatch, r as getLatestAbsoluteOrientation, t as AbsoluteOrientationReading } from "../absolute-orientation-CAEh840t.js";
|
|
2
|
+
export { AbsoluteOrientationReading, AbsoluteOrientationStatus, getLatestAbsoluteOrientation, isAbsoluteOrientationAvailable, startAbsoluteOrientationWatch, stopAbsoluteOrientationWatch };
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { createLogger } from "../utils/logger.js";
|
|
2
|
+
//#region ../src/sensors/absolute-orientation.ts
|
|
3
|
+
/**
|
|
4
|
+
* AbsoluteOrientationSensor capture (Generic Sensor API).
|
|
5
|
+
*
|
|
6
|
+
* Phase 1 of the AbsoluteOrientationSensor plan
|
|
7
|
+
* (GpsPlusSlamJs_Docs/docs/2026-06-25-absolute-orientation-sensor-plan.md §5.1):
|
|
8
|
+
* passive instrumentation that fuses accelerometer + gyroscope + magnetometer
|
|
9
|
+
* into an Earth-referenced (ENU) quaternion, captured per GPS event as an
|
|
10
|
+
* independent north reference. No production behaviour change.
|
|
11
|
+
*
|
|
12
|
+
* Platform: Chrome Android only. Safari / Firefox / desktop / iOS lack the
|
|
13
|
+
* sensor → this module degrades to a clean, reported no-op.
|
|
14
|
+
*
|
|
15
|
+
* The raw `'device'` reference frame is recorded together with the screen angle
|
|
16
|
+
* so either the device- or screen-compensated form can be reconstructed offline
|
|
17
|
+
* (plan §8 Q1).
|
|
18
|
+
*/
|
|
19
|
+
const log = createLogger("AbsCompass");
|
|
20
|
+
/** Sensor frequency (Hz). We only snapshot at GPS rate, so low is fine (plan §8 Q4). */
|
|
21
|
+
const SENSOR_FREQUENCY_HZ = 20;
|
|
22
|
+
let sensor = null;
|
|
23
|
+
let latest = null;
|
|
24
|
+
let watchGeneration = 0;
|
|
25
|
+
function getSensorCtor() {
|
|
26
|
+
if (typeof window === "undefined") return null;
|
|
27
|
+
const ctor = window.AbsoluteOrientationSensor;
|
|
28
|
+
return typeof ctor === "function" ? ctor : null;
|
|
29
|
+
}
|
|
30
|
+
/** True when the sensor can plausibly run here (secure context + API present). */
|
|
31
|
+
function isAbsoluteOrientationAvailable() {
|
|
32
|
+
return typeof window !== "undefined" && window.isSecureContext === true && getSensorCtor() !== null;
|
|
33
|
+
}
|
|
34
|
+
function currentScreenAngleDeg() {
|
|
35
|
+
if (typeof screen === "undefined") return 0;
|
|
36
|
+
const angle = screen.orientation?.angle;
|
|
37
|
+
return typeof angle === "number" ? angle : 0;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Whether all three underlying sensors are granted-or-promptable (plan §5.1).
|
|
41
|
+
* Returns `true` when the Permissions API is absent (best-effort — let the
|
|
42
|
+
* sensor constructor surface any real denial), and treats a failed individual
|
|
43
|
+
* query as `'granted'` for the same reason.
|
|
44
|
+
*/
|
|
45
|
+
async function sensorPermissionsUsable() {
|
|
46
|
+
const permissions = navigator.permissions;
|
|
47
|
+
if (!permissions || typeof permissions.query !== "function") return true;
|
|
48
|
+
return (await Promise.all([
|
|
49
|
+
"accelerometer",
|
|
50
|
+
"gyroscope",
|
|
51
|
+
"magnetometer"
|
|
52
|
+
].map((name) => permissions.query({ name }).then((p) => p.state).catch(() => "granted")))).every((s) => s === "granted" || s === "prompt");
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Start capturing absolute orientation. Idempotent (stops any prior watch first).
|
|
56
|
+
*
|
|
57
|
+
* On platforms without the sensor — or when permissions are denied — it reports
|
|
58
|
+
* `unavailable`/`error` via `onStatus` and stays a no-op; the recorder keeps
|
|
59
|
+
* working unchanged. Never throws.
|
|
60
|
+
*/
|
|
61
|
+
async function startAbsoluteOrientationWatch(onStatus = () => {}) {
|
|
62
|
+
stopAbsoluteOrientationWatch();
|
|
63
|
+
const myGeneration = watchGeneration;
|
|
64
|
+
const Ctor = getSensorCtor();
|
|
65
|
+
if (!isAbsoluteOrientationAvailable() || Ctor === null) {
|
|
66
|
+
onStatus({
|
|
67
|
+
state: "unavailable",
|
|
68
|
+
reason: "no AbsoluteOrientationSensor / insecure context"
|
|
69
|
+
});
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
if (!await sensorPermissionsUsable()) {
|
|
74
|
+
onStatus({
|
|
75
|
+
state: "unavailable",
|
|
76
|
+
reason: "sensor permission denied"
|
|
77
|
+
});
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (myGeneration !== watchGeneration) return;
|
|
81
|
+
const created = new Ctor({
|
|
82
|
+
frequency: SENSOR_FREQUENCY_HZ,
|
|
83
|
+
referenceFrame: "device"
|
|
84
|
+
});
|
|
85
|
+
sensor = created;
|
|
86
|
+
created.addEventListener("reading", () => {
|
|
87
|
+
const q = created.quaternion;
|
|
88
|
+
if (!q || q.length < 4) return;
|
|
89
|
+
const x = q[0];
|
|
90
|
+
const y = q[1];
|
|
91
|
+
const z = q[2];
|
|
92
|
+
const w = q[3];
|
|
93
|
+
if (x === void 0 || y === void 0 || z === void 0 || w === void 0) return;
|
|
94
|
+
latest = {
|
|
95
|
+
quaternion: [
|
|
96
|
+
x,
|
|
97
|
+
y,
|
|
98
|
+
z,
|
|
99
|
+
w
|
|
100
|
+
],
|
|
101
|
+
referenceFrame: "device",
|
|
102
|
+
screenAngleDeg: currentScreenAngleDeg(),
|
|
103
|
+
timestamp: Date.now()
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
created.addEventListener("activate", () => {
|
|
107
|
+
log.info("active");
|
|
108
|
+
onStatus({ state: "active" });
|
|
109
|
+
});
|
|
110
|
+
created.addEventListener("error", (event) => {
|
|
111
|
+
latest = null;
|
|
112
|
+
const reason = event?.error?.name ?? "SensorError";
|
|
113
|
+
log.error("sensor error:", reason);
|
|
114
|
+
onStatus({
|
|
115
|
+
state: "error",
|
|
116
|
+
reason
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
created.start();
|
|
120
|
+
} catch (err) {
|
|
121
|
+
sensor = null;
|
|
122
|
+
latest = null;
|
|
123
|
+
onStatus({
|
|
124
|
+
state: "error",
|
|
125
|
+
reason: err?.name ?? String(err)
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/** Latest reading, or null when unavailable/not-yet-warmed-up. Mirrors getLastDeviceOrientation. */
|
|
130
|
+
function getLatestAbsoluteOrientation() {
|
|
131
|
+
return latest;
|
|
132
|
+
}
|
|
133
|
+
/** Stop the watch and clear cached state. Idempotent. */
|
|
134
|
+
function stopAbsoluteOrientationWatch() {
|
|
135
|
+
watchGeneration++;
|
|
136
|
+
if (sensor) {
|
|
137
|
+
try {
|
|
138
|
+
sensor.stop();
|
|
139
|
+
} catch {}
|
|
140
|
+
sensor = null;
|
|
141
|
+
}
|
|
142
|
+
latest = null;
|
|
143
|
+
}
|
|
144
|
+
//#endregion
|
|
145
|
+
export { getLatestAbsoluteOrientation, isAbsoluteOrientationAvailable, startAbsoluteOrientationWatch, stopAbsoluteOrientationWatch };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as getGpsErrorMessage, i as createGpsErrorHandler, n as GPS_ERROR_MESSAGES, r as GPS_ERROR_MESSAGE_UNKNOWN, t as GPS_ERROR_CODES } from "../gps-error-handler-
|
|
1
|
+
import { a as getGpsErrorMessage, i as createGpsErrorHandler, n as GPS_ERROR_MESSAGES, r as GPS_ERROR_MESSAGE_UNKNOWN, t as GPS_ERROR_CODES } from "../gps-error-handler-BbPsfw-_.js";
|
|
2
2
|
export { GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, createGpsErrorHandler, getGpsErrorMessage };
|
package/dist/sensors/gps.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "../gps-
|
|
1
|
+
import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "../gps-BBO3hKfT.js";
|
|
2
2
|
export { GpsPosition, RawDeviceOrientation, requestOrientationPermission, startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch };
|
package/dist/sensors/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "../gps-
|
|
2
|
-
import { a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission$1, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "../permission-checker-
|
|
3
|
-
import { a as
|
|
4
|
-
|
|
1
|
+
import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "../gps-BBO3hKfT.js";
|
|
2
|
+
import { a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission$1, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "../permission-checker-CDuI8BwC.js";
|
|
3
|
+
import { a as startAbsoluteOrientationWatch, i as isAbsoluteOrientationAvailable, n as AbsoluteOrientationStatus, o as stopAbsoluteOrientationWatch, r as getLatestAbsoluteOrientation, t as AbsoluteOrientationReading } from "../absolute-orientation-CAEh840t.js";
|
|
4
|
+
import { a as getGpsErrorMessage, i as createGpsErrorHandler, n as GPS_ERROR_MESSAGES, r as GPS_ERROR_MESSAGE_UNKNOWN, t as GPS_ERROR_CODES } from "../gps-error-handler-BbPsfw-_.js";
|
|
5
|
+
export { type AbsoluteOrientationReading, type AbsoluteOrientationStatus, GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, type GpsPosition, type PermissionCheckResult, type PermissionStatus, type RawDeviceOrientation, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkWebXRSupport, createGpsErrorHandler, getGpsErrorMessage, getLatestAbsoluteOrientation, isAbsoluteOrientationAvailable, requestAllPermissions, requestCameraPermission, requestOrientationPermission as requestDeviceOrientationPermission, requestGeolocationPermission, requestOrientationPermission$1 as requestOrientationPermission, requestWebXRWithDepthPermission, resetFileSystemState, setFileSystemState, startAbsoluteOrientationWatch, startGpsWatch, startOrientationWatch, stopAbsoluteOrientationWatch, stopGpsWatch, stopOrientationWatch };
|
package/dist/sensors/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { getLatestAbsoluteOrientation, isAbsoluteOrientationAvailable, startAbsoluteOrientationWatch, stopAbsoluteOrientationWatch } from "./absolute-orientation.js";
|
|
1
2
|
import { checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkWebXRSupport, requestAllPermissions, requestCameraPermission, requestGeolocationPermission, requestOrientationPermission as requestOrientationPermission$1, requestWebXRWithDepthPermission, resetFileSystemState, setFileSystemState } from "./permission-checker.js";
|
|
2
3
|
import { requestOrientationPermission, startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch } from "./gps.js";
|
|
3
4
|
import { GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, createGpsErrorHandler, getGpsErrorMessage } from "./gps-error-handler.js";
|
|
4
|
-
export { GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkWebXRSupport, createGpsErrorHandler, getGpsErrorMessage, requestAllPermissions, requestCameraPermission, requestOrientationPermission as requestDeviceOrientationPermission, requestGeolocationPermission, requestOrientationPermission$1 as requestOrientationPermission, requestWebXRWithDepthPermission, resetFileSystemState, setFileSystemState, startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch };
|
|
5
|
+
export { GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkWebXRSupport, createGpsErrorHandler, getGpsErrorMessage, getLatestAbsoluteOrientation, isAbsoluteOrientationAvailable, requestAllPermissions, requestCameraPermission, requestOrientationPermission as requestDeviceOrientationPermission, requestGeolocationPermission, requestOrientationPermission$1 as requestOrientationPermission, requestWebXRWithDepthPermission, resetFileSystemState, setFileSystemState, startAbsoluteOrientationWatch, startGpsWatch, startOrientationWatch, stopAbsoluteOrientationWatch, stopGpsWatch, stopOrientationWatch };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as subscribePermissionChanges, a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission, r as PermissionSubscription, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "../permission-checker-
|
|
1
|
+
import { _ as subscribePermissionChanges, a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission, r as PermissionSubscription, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "../permission-checker-CDuI8BwC.js";
|
|
2
2
|
export { PermissionCheckResult, PermissionStatus, PermissionSubscription, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkWebXRSupport, requestAllPermissions, requestCameraPermission, requestGeolocationPermission, requestOrientationPermission, requestWebXRWithDepthPermission, resetFileSystemState, setFileSystemState, subscribePermissionChanges };
|
|
@@ -410,9 +410,9 @@ function subscribePermissionChanges(callback) {
|
|
|
410
410
|
async function requestAllPermissions() {
|
|
411
411
|
const result = await checkAllPermissions();
|
|
412
412
|
if (result.webxr.supported) result.webxr = await requestWebXRWithDepthPermission();
|
|
413
|
-
if (result.geolocation.supported && result.geolocation.granted !== true) result.geolocation = await requestGeolocationPermission();
|
|
414
413
|
if (result.camera.supported && result.camera.granted !== true) result.camera = await requestCameraPermission();
|
|
415
414
|
if (result.orientation.supported && result.orientation.granted !== true) result.orientation = await requestOrientationPermission();
|
|
415
|
+
if (result.geolocation.supported && result.geolocation.granted !== true) result.geolocation = await requestGeolocationPermission();
|
|
416
416
|
result.fileSystem = checkFileSystemPermission();
|
|
417
417
|
result.allMandatoryReady = result.webxr.supported && result.webxr.granted === true && result.geolocation.supported && result.geolocation.granted === true && result.camera.supported && result.camera.granted === true && result.fileSystem.supported && result.fileSystem.granted === true;
|
|
418
418
|
return result;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-
|
|
1
|
+
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-ikTUQZpe.js";
|
|
2
2
|
export { selectAlignmentMatrix, selectFrameTilesInWebXR, selectGpsPositions, selectOdometryPositions, selectOdometryRotations, selectZeroReference };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { N as CombinedRootState } from "../create-slam-app-store-n_VF63D5.js";
|
|
2
2
|
export { CombinedRootState };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as SlamAppStoreOptions, i as SlamAppStore, n as SlamAppMiddleware, o as createSlamAppStore, r as SlamAppRootState, t as SlamAppCombinedState } from "../create-slam-app-store-
|
|
1
|
+
import { a as SlamAppStoreOptions, i as SlamAppStore, n as SlamAppMiddleware, o as createSlamAppStore, r as SlamAppRootState, t as SlamAppCombinedState } from "../create-slam-app-store-n_VF63D5.js";
|
|
2
2
|
export { SlamAppCombinedState, SlamAppMiddleware, SlamAppRootState, SlamAppStore, SlamAppStoreOptions, createSlamAppStore };
|
|
@@ -1,75 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { recordWriteFailure, recordingReducer } from "./recording-slice.js";
|
|
3
|
-
import { createTrackingQualityListenerMiddleware, trackingQualityReducer } from "./tracking-quality.js";
|
|
4
|
-
import { createPersistenceMiddleware, slicePrefixOf } from "./persistence-middleware.js";
|
|
5
|
-
import { arElementsReducer, gpsDataReducer, gpsElementsReducer, sanitizeForDevTools, setZeroPos, validateLicenseKey } from "gps-plus-slam-js";
|
|
6
|
-
import { configureStore } from "@reduxjs/toolkit";
|
|
7
|
-
import { COMMUNITY_LICENSE_KEY } from "gps-plus-slam-js/community-license-key";
|
|
8
|
-
//#region ../src/state/create-slam-app-store.ts
|
|
9
|
-
/**
|
|
10
|
-
* `createSlamAppStore` — composable Redux store factory for AR+GPS apps.
|
|
11
|
-
*
|
|
12
|
-
* Introduced in Iter 1 of the AppFramework/RecorderApp boundary migration.
|
|
13
|
-
* Wires the three library reducers (`gpsData`, `gpsElements`, `arElements`),
|
|
14
|
-
* the framework's recording lifecycle slice, and the persistence middleware.
|
|
15
|
-
*
|
|
16
|
-
* Recorder-only state (routing screen, ref-points, scenario) is plugged in
|
|
17
|
-
* by the consumer via `extraReducers` / `extraMiddleware`. The factory itself
|
|
18
|
-
* never references those concepts so apps that don't need them (POI viewers,
|
|
19
|
-
* navigation arrows, …) compose freely.
|
|
20
|
-
*
|
|
21
|
-
* The legacy `createRecorderStore` from `store.ts` is built on top of this
|
|
22
|
-
* factory and will move out of the framework in Iter 1D.
|
|
23
|
-
*
|
|
24
|
-
* @see docs/2026-05-03-appframework-vs-recorderapp-boundary-analysis.md — Iter 1
|
|
25
|
-
*/
|
|
26
|
-
/**
|
|
27
|
-
* Slice prefixes the framework always persists, derived from the actual
|
|
28
|
-
* library / framework action creators (never hand-typed). A rename of the
|
|
29
|
-
* `gpsData` or `recording` slice therefore propagates here automatically
|
|
30
|
-
* instead of silently dropping that slice's actions from recordings.
|
|
31
|
-
*/
|
|
32
|
-
const BUILTIN_PERSISTED_PREFIXES = [slicePrefixOf(setZeroPos.type), slicePrefixOf(recordWriteFailure.type)];
|
|
33
|
-
/**
|
|
34
|
-
* Build a Redux store wired with library + recording slices, persistence
|
|
35
|
-
* middleware, and any caller-supplied extras. See module docstring for the
|
|
36
|
-
* design rationale.
|
|
37
|
-
*/
|
|
38
|
-
function createSlamAppStore(options) {
|
|
39
|
-
const { storageBackend, extraReducers, extraMiddleware, persistedExtraPrefixes, onWriteFailure, enableDevChecks = true, licenseKey = COMMUNITY_LICENSE_KEY, trackingQualityOptions } = options;
|
|
40
|
-
validateLicenseKey(licenseKey);
|
|
41
|
-
const reducer = {
|
|
42
|
-
gpsData: gpsDataReducer,
|
|
43
|
-
gpsElements: gpsElementsReducer,
|
|
44
|
-
arElements: arElementsReducer,
|
|
45
|
-
recording: recordingReducer,
|
|
46
|
-
tracking: trackingReducer,
|
|
47
|
-
trackingQuality: trackingQualityReducer,
|
|
48
|
-
...extraReducers ?? {}
|
|
49
|
-
};
|
|
50
|
-
const trackingQualityMiddleware = createTrackingQualityListenerMiddleware(trackingQualityOptions);
|
|
51
|
-
const store = configureStore({
|
|
52
|
-
reducer,
|
|
53
|
-
middleware: (getDefaultMiddleware) => getDefaultMiddleware({
|
|
54
|
-
serializableCheck: enableDevChecks,
|
|
55
|
-
immutableCheck: enableDevChecks
|
|
56
|
-
}).prepend(trackingQualityMiddleware).concat(createPersistenceMiddleware({
|
|
57
|
-
storageBackend,
|
|
58
|
-
onWriteFailure,
|
|
59
|
-
persistedPrefixes: [...BUILTIN_PERSISTED_PREFIXES, ...persistedExtraPrefixes ?? []]
|
|
60
|
-
}), ...extraMiddleware ?? []),
|
|
61
|
-
devTools: {
|
|
62
|
-
actionSanitizer: sanitizeForDevTools,
|
|
63
|
-
stateSanitizer: sanitizeForDevTools
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
return {
|
|
67
|
-
getState: () => store.getState(),
|
|
68
|
-
dispatch: store.dispatch,
|
|
69
|
-
subscribe: (listener) => store.subscribe(listener),
|
|
70
|
-
writeFrame: (blob, index) => storageBackend.writeFrame(blob, index),
|
|
71
|
-
writeSessionMetadata: (metadata) => storageBackend.writeSessionMetadata(metadata)
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
//#endregion
|
|
1
|
+
import { t as createSlamAppStore } from "../create-slam-app-store-DkCHOpvb.js";
|
|
75
2
|
export { createSlamAppStore };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as ARPose } from "../ar-types-
|
|
2
|
-
import { o as extractOdomPosition, s as extractOdomRotation } from "../gps-event-coordinator-
|
|
3
|
-
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-
|
|
1
|
+
import { t as ARPose } from "../ar-types-BFX2r1wk.js";
|
|
2
|
+
import { o as extractOdomPosition, s as extractOdomRotation } from "../gps-event-coordinator-CjWW636x.js";
|
|
3
|
+
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-DHMZmYAc.js";
|
|
4
4
|
export { ARPose, CaptureGpsAnchorSampleOptions, GpsAnchorSample, GpsAnchorSampleGpsPoint, captureGpsAnchorSample, extractOdomPosition, extractOdomRotation };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as eulerToQuaternion, c as getLastDeviceOrientation, i as createGpsPositionHandler, l as resetCoordinatorState, n as buildRawGpsPoint, o as extractOdomPosition, r as buildRecordGpsEventPayload, s as extractOdomRotation, t as RecordingCoordinatorConfig, u as
|
|
2
|
-
export { RecordingCoordinatorConfig, buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler, eulerToQuaternion, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, resetCoordinatorState, updateDeviceOrientation };
|
|
1
|
+
import { a as eulerToQuaternion, c as getLastDeviceOrientation, d as updateDeviceOrientation, i as createGpsPositionHandler, l as resetCoordinatorState, n as buildRawGpsPoint, o as extractOdomPosition, r as buildRecordGpsEventPayload, s as extractOdomRotation, t as RecordingCoordinatorConfig, u as toRawAbsoluteOrientation } from "../gps-event-coordinator-CjWW636x.js";
|
|
2
|
+
export { RecordingCoordinatorConfig, buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler, eulerToQuaternion, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, resetCoordinatorState, toRawAbsoluteOrientation, updateDeviceOrientation };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger.js";
|
|
2
|
+
import { getLatestAbsoluteOrientation } from "../sensors/absolute-orientation.js";
|
|
2
3
|
import { eulerToQuaternion, getOdometryPositions, getZeroReference, recordGpsEvent, setZeroPos } from "gps-plus-slam-js";
|
|
3
4
|
//#region ../src/state/gps-event-coordinator.ts
|
|
4
5
|
const log = createLogger("RecordingCoordinator");
|
|
@@ -58,15 +59,15 @@ function extractOdomRotation(arPose) {
|
|
|
58
59
|
/**
|
|
59
60
|
* Build a RawGpsPoint from GPS position data.
|
|
60
61
|
* Returns only raw sensor fields — no derived fields (coordinates, weight,
|
|
61
|
-
* zeroRef
|
|
62
|
-
*
|
|
62
|
+
* zeroRef). Derived fields are computed by the library reducer when the
|
|
63
|
+
* action is dispatched (raw-storage pattern).
|
|
63
64
|
*
|
|
64
65
|
* @param gpsPosition - GPS position from Geolocation API
|
|
65
|
-
* @param deviceOrientation -
|
|
66
|
+
* @param deviceOrientation - Accepted for signature stability; no longer
|
|
67
|
+
* read (the legacy `compassAbsolute` field it fed is no longer recorded)
|
|
66
68
|
* @returns RawGpsPoint ready for the action payload
|
|
67
69
|
*/
|
|
68
70
|
function buildRawGpsPoint(gpsPosition, deviceOrientation) {
|
|
69
|
-
const compassAbsolute = deviceOrientation ? deviceOrientation.absolute : void 0;
|
|
70
71
|
return {
|
|
71
72
|
id: `gps-${++gpsEventCounter}`,
|
|
72
73
|
latitude: gpsPosition.lat,
|
|
@@ -76,35 +77,44 @@ function buildRawGpsPoint(gpsPosition, deviceOrientation) {
|
|
|
76
77
|
altitudeAccuracy: gpsPosition.altitudeAccuracy ?? void 0,
|
|
77
78
|
heading: gpsPosition.heading ?? void 0,
|
|
78
79
|
speed: gpsPosition.speed ?? void 0,
|
|
79
|
-
compassAbsolute,
|
|
80
80
|
timestamp: gpsPosition.timestamp
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
/**
|
|
84
|
+
* Map a capture-module {@link AbsoluteOrientationReading} to the library's
|
|
85
|
+
* {@link RawAbsoluteOrientation} payload shape (the only difference is the
|
|
86
|
+
* timestamp field name: capture `timestamp` → payload `sampleTimestamp`).
|
|
87
|
+
* Returns `undefined` when the sensor produced no reading (most non-Chrome).
|
|
88
|
+
*/
|
|
89
|
+
function toRawAbsoluteOrientation(reading) {
|
|
90
|
+
if (!reading) return void 0;
|
|
91
|
+
return {
|
|
92
|
+
quaternion: reading.quaternion,
|
|
93
|
+
referenceFrame: reading.referenceFrame,
|
|
94
|
+
screenAngleDeg: reading.screenAngleDeg,
|
|
95
|
+
sampleTimestamp: reading.timestamp
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
84
99
|
* Build a RecordGpsEventPayload from GPS position and AR pose.
|
|
85
100
|
* This is a pure function for testability.
|
|
86
101
|
*
|
|
87
102
|
* Stores only raw sensor data in the payload. The library reducer
|
|
88
|
-
* computes derived fields (coordinates, weight
|
|
89
|
-
*
|
|
103
|
+
* computes derived fields (coordinates, weight) when the action is
|
|
104
|
+
* processed (raw-storage pattern).
|
|
90
105
|
*
|
|
91
106
|
* @param gpsPosition - GPS position from Geolocation API
|
|
92
107
|
* @param arPose - AR pose from WebXR
|
|
93
108
|
* @param deviceOrientation - Optional device orientation from sensors
|
|
109
|
+
* @param absoluteOrientation - Optional AbsoluteOrientationSensor reading
|
|
94
110
|
* @returns RecordGpsEventPayload ready for dispatch
|
|
95
111
|
*/
|
|
96
|
-
function buildRecordGpsEventPayload(gpsPosition, arPose, deviceOrientation) {
|
|
97
|
-
const rawDeviceOrientation = deviceOrientation?.alpha != null && deviceOrientation?.beta != null && deviceOrientation?.gamma != null ? {
|
|
98
|
-
alpha: deviceOrientation.alpha,
|
|
99
|
-
beta: deviceOrientation.beta,
|
|
100
|
-
gamma: deviceOrientation.gamma,
|
|
101
|
-
absolute: deviceOrientation.absolute
|
|
102
|
-
} : void 0;
|
|
112
|
+
function buildRecordGpsEventPayload(gpsPosition, arPose, deviceOrientation, absoluteOrientation = null) {
|
|
103
113
|
return {
|
|
104
114
|
odomPosition: extractOdomPosition(arPose),
|
|
105
115
|
odomRotation: extractOdomRotation(arPose),
|
|
106
116
|
rawGpsPoint: buildRawGpsPoint(gpsPosition, deviceOrientation),
|
|
107
|
-
|
|
117
|
+
rawAbsoluteOrientation: toRawAbsoluteOrientation(absoluteOrientation)
|
|
108
118
|
};
|
|
109
119
|
}
|
|
110
120
|
/**
|
|
@@ -139,11 +149,11 @@ function createGpsPositionHandler(config) {
|
|
|
139
149
|
log.error("Failed to get zero reference");
|
|
140
150
|
return;
|
|
141
151
|
}
|
|
142
|
-
const payload = buildRecordGpsEventPayload(position, arPose, lastDeviceOrientation);
|
|
152
|
+
const payload = buildRecordGpsEventPayload(position, arPose, lastDeviceOrientation, getLatestAbsoluteOrientation());
|
|
143
153
|
store.dispatch(recordGpsEvent(payload));
|
|
144
154
|
const eventCount = getOdometryPositions(store.getState()).length;
|
|
145
155
|
log.info(`Recorded GPS event #${eventCount}`);
|
|
146
156
|
};
|
|
147
157
|
}
|
|
148
158
|
//#endregion
|
|
149
|
-
export { buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler, eulerToQuaternion, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, resetCoordinatorState, updateDeviceOrientation };
|
|
159
|
+
export { buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler, eulerToQuaternion, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, resetCoordinatorState, toRawAbsoluteOrientation, updateDeviceOrientation };
|
package/dist/state/index.d.ts
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { i as DepthSample, r as DepthPoint } from "../ar-types-
|
|
2
|
-
import {
|
|
3
|
-
import { a as TrackingSliceState, c as poseLost, d as selectLastRestartedPayload, f as selectLastSensorOrientation, g as trackingReducer, h as selectTrackingPhase, i as TrackingPhase, l as poseReceived, m as selectLostFrameCount, n as PoseReceivedPayload, o as clearLastRestartedPayload, p as selectLastValidPose, r as ResetTransformData, s as originReset, t as DeviceOrientation, u as resetTracking } from "../tracking-slice-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { n as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { n as
|
|
11
|
-
import { n as
|
|
12
|
-
import {
|
|
13
|
-
import { n as
|
|
14
|
-
import { n as
|
|
15
|
-
import { a as
|
|
16
|
-
import {
|
|
17
|
-
|
|
1
|
+
import { i as DepthSample, r as DepthPoint } from "../ar-types-BFX2r1wk.js";
|
|
2
|
+
import { C as saveRecordingOptions, E as validateDepthOptions, N as validateRecordingOptions, O as validateImageOptions, S as resetRecordingOptions, _ as RecordingOptionsInput, a as DepthCaptureOptions, b as cloneRecordingOptions, c as IMAGE_CONSTRAINTS, i as DEPTH_CONSTRAINTS, l as ImageCaptureOptions, r as DEFAULT_RECORDING_OPTIONS, v as STORAGE_KEY, x as loadRecordingOptions } from "../recording-options-BPCpMHLK.js";
|
|
3
|
+
import { a as TrackingSliceState, c as poseLost, d as selectLastRestartedPayload, f as selectLastSensorOrientation, g as trackingReducer, h as selectTrackingPhase, i as TrackingPhase, l as poseReceived, m as selectLostFrameCount, n as PoseReceivedPayload, o as clearLastRestartedPayload, p as selectLastValidPose, r as ResetTransformData, s as originReset, t as DeviceOrientation, u as resetTracking } from "../tracking-slice-BuAZxXZ5.js";
|
|
4
|
+
import { d as QrSizeStatus, l as QrSizeEstimate } from "../qr-size-measurer-DQdAsid1.js";
|
|
5
|
+
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-B7tWJq7j.js";
|
|
6
|
+
import { a as recordWriteFailure, i as recordDepthSample, n as SessionMetadata$1, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "../recording-slice-DaxHZvNu.js";
|
|
7
|
+
import { C as setQrMaxHistory, S as selectStableQrPose, _ as selectQrPoseStability, a as RootWithQrDetected, b as selectResolvedQrSizeM, c as medianQrPosition, d as recordQrDetection, f as recordQrSizeEstimate, g as selectQrMarkers, h as selectQrMarker, i as QrMarkerState, l as pruneQrDetections, m as selectLatestQrDetection, n as QrDetectedState, o as clearAllQrMarkers, p as selectDerivedQrPlacement, r as QrDetectionEntry, s as clearQrMarker, t as DEFAULT_QR_MAX_HISTORY, u as qrDetectedReducer, v as selectQrRawObservations, x as selectSolvedQrPose, y as selectQrSize } from "../qr-detected-slice-VQssZmQJ.js";
|
|
8
|
+
import { n as SessionMetadata } from "../opfs-storage-3VZh-qH6.js";
|
|
9
|
+
import { n as StorageBackend } from "../storage-backend-BdVLD0dU.js";
|
|
10
|
+
import { A as snapshotPushed, C as createTrackingQualityListenerMiddleware, D as resetTrackingQuality, E as reportUpdated, M as trackingQualityReducer, O as selectRecentAlignments, S as computeTrackingQualityReport, T as matrixDelta, _ as computeConvergence, a as SlamAppStoreOptions, b as computeGpsVsFusedDivergence, g as TrackingQualityState, h as TrackingQualitySliceState, i as SlamAppStore, j as snapshotsTrimmed, k as selectTrackingQuality, m as TrackingQualityReport, n as SlamAppMiddleware, o as createSlamAppStore, p as TrackingQualityOptions, r as SlamAppRootState, s as AlignmentSnapshot, t as SlamAppCombinedState, u as DEFAULT_TRACKING_QUALITY_OPTIONS, v as computeCoverage, w as degradedCountUpdated, x as computeResidualConsensus, y as computeGpsAccuracy } from "../create-slam-app-store-n_VF63D5.js";
|
|
11
|
+
import { a as eulerToQuaternion, c as getLastDeviceOrientation, d as updateDeviceOrientation, i as createGpsPositionHandler, l as resetCoordinatorState, n as buildRawGpsPoint, o as extractOdomPosition, r as buildRecordGpsEventPayload, s as extractOdomRotation, t as RecordingCoordinatorConfig } from "../gps-event-coordinator-CjWW636x.js";
|
|
12
|
+
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-DHMZmYAc.js";
|
|
13
|
+
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-DQKpAGyQ.js";
|
|
14
|
+
import { n as createPersistenceMiddleware, r as slicePrefixOf, t as PersistenceMiddlewareOptions } from "../persistence-middleware-DAPTTwB2.js";
|
|
15
|
+
import { a as ReplayAction, c as computeInterActionDelay, i as ProgressCallback, l as extractActionTimestamp, n as DEFAULT_MAX_DELAY_MS, o as ReplayEngine, r as ErrorCallback, s as ReplayState, t as CompleteCallback } from "../replay-engine-CmKh_4wf.js";
|
|
16
|
+
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-B6EUmQ3I.js";
|
|
17
|
+
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-CA6AJH_8.js";
|
|
18
|
+
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-ikTUQZpe.js";
|
|
19
|
+
import { a as RawGpsPoint, c as calcRelativeCoordsInMeters, d as OnboardingGuidance, f as OnboardingPhase, i as RawDeviceOrientation, l as recordGpsEvent, m as selectOnboardingGuidance, n as GpsPoint, o as RecordGpsEventPayload, p as computeOnboardingGuidance, r as LatLong, s as add2dImage, t as Add2dImagePayload, u as setZeroPos } from "../index-BODDUTvD.js";
|
|
20
|
+
export { Add2dImagePayload, AlignmentSnapshot, CaptureGpsAnchorSampleOptions, CompleteCallback, DEFAULT_MAX_DELAY_MS, DEFAULT_QR_MAX_HISTORY, DEFAULT_RECORDING_OPTIONS, DEFAULT_TRACKING_QUALITY_OPTIONS, DEPTH_CONSTRAINTS, DepthCaptureOptions, DepthPoint, DepthSample, DeviceOrientation, ErrorCallback, GpsAnchorSample, GpsAnchorSampleGpsPoint, GpsPoint, IMAGE_CONSTRAINTS, ImageCaptureOptions, LatLong, OnboardingGuidance, OnboardingPhase, SessionMetadata as OpfsSessionMetadata, PersistenceMiddlewareOptions, PoseReceivedPayload, ProgressCallback, QrDetectedState, QrDetectionEntry, QrMarkerState, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrSizeEstimate, QrSizeStatus, RawDeviceOrientation, RawGpsPoint, RecordGpsEventPayload, RecordingCoordinatorConfig, RecordingOptionsInput, RecordingState, ReplayAction, ReplayEngine, ReplayRecordingOptions, ReplayState, ResetTransformData, RootWithQrDetected, STORAGE_KEY, SessionMetadata$1 as SessionMetadata, SlamAppCombinedState, SlamAppMiddleware, SlamAppRootState, SlamAppStore, SlamAppStoreOptions, StorageBackend, StoreSubscriberDeps, SubscribableStore, TrackingPhase, TrackingQualityOptions, TrackingQualityReport, TrackingQualitySliceState, TrackingQualityState, TrackingSliceState, add2dImage, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, captureGpsAnchorSample, clearAllQrMarkers, clearLastRestartedPayload, clearQrMarker, cloneRecordingOptions, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeInterActionDelay, computeOnboardingGuidance, computeResidualConsensus, computeTrackingQualityReport, createGpsPositionHandler, createPersistenceMiddleware, createSlamAppStore, createTrackingQualityListenerMiddleware, degradedCountUpdated, endSession, eulerToQuaternion, extractActionTimestamp, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, loadRecordingOptions, matrixDelta, medianQrPosition, originReset, poseLost, poseReceived, pruneQrDetections, qrDetectedReducer, recordDepthSample, recordGpsEvent, recordQrDetection, recordQrSizeEstimate, recordWriteFailure, recordingReducer, replayRecording, reportUpdated, resetCoordinatorState, resetRecordingOptions, resetTracking, resetTrackingQuality, saveRecordingOptions, selectAlignmentMatrix, selectDerivedQrPlacement, selectFrameTilesInWebXR, selectGpsPositions, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLatestQrDetection, selectLostFrameCount, selectOdometryPositions, selectOdometryRotations, selectOnboardingGuidance, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectRecentAlignments, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, selectTrackingPhase, selectTrackingQuality, selectZeroReference, setQrMaxHistory, setZeroPos, slicePrefixOf, snapshotPushed, snapshotsTrimmed, startSession, subscribeToSelector, trackingQualityReducer, trackingReducer, updateDeviceOrientation, validateDepthOptions, validateImageOptions, validateRecordingOptions, wireStoreSubscribers };
|
package/dist/state/index.js
CHANGED
|
@@ -2,14 +2,15 @@ import { buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler,
|
|
|
2
2
|
import { clearLastRestartedPayload, originReset, poseLost, poseReceived, resetTracking, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLostFrameCount, selectTrackingPhase, trackingReducer } from "./tracking-slice.js";
|
|
3
3
|
import { DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, IMAGE_CONSTRAINTS, STORAGE_KEY, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateDepthOptions, validateImageOptions, validateRecordingOptions } from "./recording-options.js";
|
|
4
4
|
import { endSession, recordDepthSample, recordWriteFailure, recordingReducer, startSession } from "./recording-slice.js";
|
|
5
|
+
import { DEFAULT_QR_MAX_HISTORY, clearAllQrMarkers, clearQrMarker, medianQrPosition, pruneQrDetections, qrDetectedReducer, recordQrDetection, recordQrSizeEstimate, selectDerivedQrPlacement, selectLatestQrDetection, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, setQrMaxHistory } from "./qr-detected-slice.js";
|
|
5
6
|
import { captureGpsAnchorSample } from "./gps-ar-pose-sampler.js";
|
|
6
7
|
import { selectAlignmentMatrix, selectFrameTilesInWebXR, selectGpsPositions, selectOdometryPositions, selectOdometryRotations, selectZeroReference } from "./app-selectors.js";
|
|
7
|
-
import { DEFAULT_TRACKING_QUALITY_OPTIONS,
|
|
8
|
+
import { DEFAULT_TRACKING_QUALITY_OPTIONS, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeResidualConsensus, computeTrackingQualityReport, createTrackingQualityListenerMiddleware, degradedCountUpdated, matrixDelta, reportUpdated, resetTrackingQuality, selectRecentAlignments, selectTrackingQuality, snapshotPushed, snapshotsTrimmed, trackingQualityReducer } from "./tracking-quality.js";
|
|
8
9
|
import { createPersistenceMiddleware, slicePrefixOf } from "./persistence-middleware.js";
|
|
9
|
-
import { createSlamAppStore } from "
|
|
10
|
+
import { t as createSlamAppStore } from "../create-slam-app-store-DkCHOpvb.js";
|
|
10
11
|
import { replayRecording } from "./recording-replayer.js";
|
|
11
12
|
import { DEFAULT_MAX_DELAY_MS, ReplayEngine, computeInterActionDelay, extractActionTimestamp } from "./replay-engine.js";
|
|
12
13
|
import { subscribeToSelector } from "./subscribe-to-selector.js";
|
|
13
14
|
import { wireStoreSubscribers } from "./store-subscribers.js";
|
|
14
|
-
import { a as computeOnboardingGuidance, i as setZeroPos, n as calcRelativeCoordsInMeters, o as selectOnboardingGuidance, r as recordGpsEvent, t as add2dImage } from "../state-
|
|
15
|
-
export { DEFAULT_MAX_DELAY_MS, DEFAULT_RECORDING_OPTIONS, DEFAULT_TRACKING_QUALITY_OPTIONS, DEPTH_CONSTRAINTS, IMAGE_CONSTRAINTS, ReplayEngine, STORAGE_KEY, add2dImage, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, captureGpsAnchorSample, clearLastRestartedPayload,
|
|
15
|
+
import { a as computeOnboardingGuidance, i as setZeroPos, n as calcRelativeCoordsInMeters, o as selectOnboardingGuidance, r as recordGpsEvent, t as add2dImage } from "../state-E51QT_-j.js";
|
|
16
|
+
export { DEFAULT_MAX_DELAY_MS, DEFAULT_QR_MAX_HISTORY, DEFAULT_RECORDING_OPTIONS, DEFAULT_TRACKING_QUALITY_OPTIONS, DEPTH_CONSTRAINTS, IMAGE_CONSTRAINTS, ReplayEngine, STORAGE_KEY, add2dImage, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, captureGpsAnchorSample, clearAllQrMarkers, clearLastRestartedPayload, clearQrMarker, cloneRecordingOptions, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeInterActionDelay, computeOnboardingGuidance, computeResidualConsensus, computeTrackingQualityReport, createGpsPositionHandler, createPersistenceMiddleware, createSlamAppStore, createTrackingQualityListenerMiddleware, degradedCountUpdated, endSession, eulerToQuaternion, extractActionTimestamp, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, loadRecordingOptions, matrixDelta, medianQrPosition, originReset, poseLost, poseReceived, pruneQrDetections, qrDetectedReducer, recordDepthSample, recordGpsEvent, recordQrDetection, recordQrSizeEstimate, recordWriteFailure, recordingReducer, replayRecording, reportUpdated, resetCoordinatorState, resetRecordingOptions, resetTracking, resetTrackingQuality, saveRecordingOptions, selectAlignmentMatrix, selectDerivedQrPlacement, selectFrameTilesInWebXR, selectGpsPositions, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLatestQrDetection, selectLostFrameCount, selectOdometryPositions, selectOdometryRotations, selectOnboardingGuidance, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectRecentAlignments, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, selectTrackingPhase, selectTrackingQuality, selectZeroReference, setQrMaxHistory, setZeroPos, slicePrefixOf, snapshotPushed, snapshotsTrimmed, startSession, subscribeToSelector, trackingQualityReducer, trackingReducer, updateDeviceOrientation, validateDepthOptions, validateImageOptions, validateRecordingOptions, wireStoreSubscribers };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as createPersistenceMiddleware, r as slicePrefixOf, t as PersistenceMiddlewareOptions } from "../persistence-middleware-
|
|
1
|
+
import { n as createPersistenceMiddleware, r as slicePrefixOf, t as PersistenceMiddlewareOptions } from "../persistence-middleware-DAPTTwB2.js";
|
|
2
2
|
export { PersistenceMiddlewareOptions, createPersistenceMiddleware, slicePrefixOf };
|