gps-plus-slam-app-framework 1.8.0 → 1.9.1
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/{app-selectors-JqydaUMN.d.ts → app-selectors-BbAiCRUT.d.ts} +1 -1
- package/dist/ar/enable-gps-ar.d.ts +1 -1
- package/dist/ar/index.d.ts +2 -2
- package/dist/ar/webxr-session.d.ts +1 -1
- package/dist/{ar-world-group-alignment-BlvGcIAk.d.ts → ar-world-group-alignment-Cfg0trC3.d.ts} +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/{create-slam-app-store-D3nzh9Wb.d.ts → create-slam-app-store-D1QSMuKu.d.ts} +5 -6
- package/dist/{enable-gps-ar-DvGzBOrp.d.ts → enable-gps-ar-BBtRO2FJ.d.ts} +2 -2
- package/dist/{frame-conversions-C4bnNOEY.d.ts → frame-conversions-DDcNHkTb.d.ts} +1 -1
- package/dist/{gps-anchor-BjECcYnD.d.ts → gps-anchor-CEjGqEVD.d.ts} +1 -1
- package/dist/{gps-event-coordinator-CHtIkhb7.d.ts → gps-event-coordinator-BWpgBrHq.d.ts} +1 -1
- package/dist/{index-DlsOo2IB.d.ts → index-B6iBnO_K.d.ts} +1 -1
- package/dist/index-DXPVzOpP.d.ts +2 -0
- package/dist/index.d.ts +19 -19
- package/dist/index.js +1 -1
- package/dist/{leaflet-map-overlay-BOZFW5kT.d.ts → leaflet-map-overlay-C8GS4cUy.d.ts} +1 -1
- package/dist/{map-data-D7rpMC6f.js → map-data-1tF5gcYV.js} +5 -1
- package/dist/{map-data-PNfGKGWx.d.ts → map-data-CUnTzRIC.d.ts} +12 -3
- package/dist/{map-overlay-draw-DiroaJed.d.ts → map-overlay-draw-6WJeq0Kg.d.ts} +1 -1
- package/dist/{occlusion-mesh-b28lRJ6S.d.ts → occlusion-mesh-kXCQ2FM1.d.ts} +1 -1
- package/dist/{recording-options-vASCFzc5.d.ts → recording-options-DYKWVI93.d.ts} +27 -1
- package/dist/{recording-replayer-D0V9WkmY.d.ts → recording-replayer-BJ8Lf0QY.d.ts} +2 -2
- package/dist/{recording-slice-DTUtSVgd.d.ts → recording-slice-BW8SiLo1.d.ts} +1 -1
- package/dist/{replay-engine-xdrUgWJi.d.ts → replay-engine-DmCAc7WM.d.ts} +1 -1
- package/dist/state/app-selectors.d.ts +1 -1
- package/dist/state/combined-root-state.d.ts +1 -1
- package/dist/state/create-slam-app-store.d.ts +1 -1
- package/dist/state/gps-ar-pose-sampler.d.ts +1 -1
- package/dist/state/gps-event-coordinator.d.ts +1 -1
- package/dist/state/index.d.ts +10 -10
- package/dist/state/recording-options.d.ts +2 -2
- package/dist/state/recording-options.js +16 -4
- package/dist/state/recording-replayer.d.ts +2 -2
- 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 +25 -12
- package/dist/state/subscribe-to-selector.d.ts +1 -1
- package/dist/state/tracking-quality.d.ts +1 -1
- package/dist/state/tracking-quality.js +4 -5
- package/dist/storage/index.d.ts +1 -1
- package/dist/storage/opfs-storage.js +10 -5
- package/dist/storage/zip-reader.d.ts +2 -2
- package/dist/storage/zip-reader.js +20 -7
- package/dist/{store-subscribers-DScA7tdT.d.ts → store-subscribers-DJUErW-o.d.ts} +6 -3
- package/dist/{subscribe-to-selector-B9ylM5Oh.d.ts → subscribe-to-selector-dQV8SpsO.d.ts} +1 -1
- package/dist/test-utils/browser-mocks.js +2 -0
- package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
- package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
- package/dist/visualization/frame-conversions.d.ts +1 -1
- package/dist/visualization/gps-anchor.d.ts +1 -1
- package/dist/visualization/index.d.ts +7 -7
- package/dist/visualization/index.js +1 -1
- package/dist/visualization/leaflet-map-overlay.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/occlusion-mesh.d.ts +1 -1
- package/dist/{webxr-session-cRG2SYAQ.d.ts → webxr-session-BWCpGd-2.d.ts} +1 -1
- package/dist/{zip-reader-CvruaGvD.d.ts → zip-reader-BzENzMH6.d.ts} +36 -10
- package/package.json +7 -3
- package/dist/index-D4vrgV4b.d.ts +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { N as CombinedRootState, r as SlamAppRootState } from "./create-slam-app-store-
|
|
1
|
+
import { N as CombinedRootState, r as SlamAppRootState } from "./create-slam-app-store-D1QSMuKu.js";
|
|
2
2
|
import * as _$gps_plus_slam_js0 from "gps-plus-slam-js";
|
|
3
3
|
import { ArImageCapture, GpsPoint, LatLong, Matrix4, Quaternion, Vector3 } from "gps-plus-slam-js";
|
|
4
4
|
import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-
|
|
1
|
+
import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-BBtRO2FJ.js";
|
|
2
2
|
export { EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, createEnableGpsArController };
|
package/dist/ar/index.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ import { a as ImageCaptureCallbacks, c as MIN_VALID_IMAGE_BYTES, i as FrameQuali
|
|
|
11
11
|
import { _ as solveQrPose, a as QrPoseSolution, c as SolveQrPoseInput, d as intrinsicsFromProjection, f as invertPose, g as signedQuadArea, h as reprojectionErrorPx, i as Pose, l as buildObjectPoints, m as qrInCameraFromOpenCv, n as OpenCvPnpResult, o as QuadValidation, p as projectViewPoint, r as Point2, s as SolvePnpSquare, t as CameraIntrinsics, u as composePose, v as transformPoint, y as validateQuad } from "../qr-pose-y3vaEd6x.js";
|
|
12
12
|
import { a as QrFrontEnd, c as createBarcodeDetectorFrontEnd, i as QrDetection, n as BarcodeDetectorLike, o as RgbaImage, r as DetectedBarcodeLike, s as ToImageBitmapSource, t as BarcodeDetectorFrontEnd } from "../qr-frontend-BPURlh3S.js";
|
|
13
13
|
import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "../xr-camera-texture-q0eIDSRg.js";
|
|
14
|
-
import { $ as stopImageCapture, B as setImageQualityAnalyzer, C as getImageCaptureFrameCount, D as initAR, H as setSessionEndCallback, I as setCameraFrameCallback, J as startCameraFrameCapture, K as setTrackingStore, L as setDepthCaptureCallback, Q as stopDepthCapture, R as setFrameCallback, S as getDepthSampleCount, T as getScene, U as setTrackingCallbacks, W as setTrackingLostCallback, X as startImageCapture, Y as startDepthCapture, Z as stopCameraFrameCapture, _ as getCamera, b as getCurrentArPose, f as endARSession, g as getArWorldGroup, i as CameraFrameCaptureConfig, o as SessionEndInfo, s as SessionFeatureOptions, w as getLiveCss3dManager, x as getDepthInfoFromFrame, y as getCameraFrameCount, z as setImageCaptureCallback } from "../webxr-session-
|
|
15
|
-
import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-
|
|
14
|
+
import { $ as stopImageCapture, B as setImageQualityAnalyzer, C as getImageCaptureFrameCount, D as initAR, H as setSessionEndCallback, I as setCameraFrameCallback, J as startCameraFrameCapture, K as setTrackingStore, L as setDepthCaptureCallback, Q as stopDepthCapture, R as setFrameCallback, S as getDepthSampleCount, T as getScene, U as setTrackingCallbacks, W as setTrackingLostCallback, X as startImageCapture, Y as startDepthCapture, Z as stopCameraFrameCapture, _ as getCamera, b as getCurrentArPose, f as endARSession, g as getArWorldGroup, i as CameraFrameCaptureConfig, o as SessionEndInfo, s as SessionFeatureOptions, w as getLiveCss3dManager, x as getDepthInfoFromFrame, y as getCameraFrameCount, z as setImageCaptureCallback } from "../webxr-session-BWCpGd-2.js";
|
|
15
|
+
import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "../enable-gps-ar-BBtRO2FJ.js";
|
|
16
16
|
import { r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-7GBMBu68.js";
|
|
17
17
|
import { c as QrSizeAccumulatorOptions, d as QrSizeStatus, f as createQrSizeAccumulator, i as QrSizeMeasurer, l as QrSizeEstimate, n as QrSizeDepthContext, o as createQrSizeMeasurer, p as estimateQrSizeFromDepth, r as QrSizeMeasurement, s as QrSizeAccumulator, t as ImageSize, u as QrSizeObservation } from "../qr-size-measurer-DxiMqRUw.js";
|
|
18
18
|
import { t as createQrSizeDepthContext } from "../qr-size-depth-context-apAOmbrZ.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { i as DepthSample, t as ARPose } from "../ar-types-Cc5yvBwn.js";
|
|
2
2
|
import { n as CapturedImage } from "../image-capture-Bp6Pd4Md.js";
|
|
3
|
-
import { $ as stopImageCapture, A as nuePositionToWebXR, B as setImageQualityAnalyzer, C as getImageCaptureFrameCount, D as initAR, E as getXrCameraFromPose, F as setCamera, G as setTrackingRecoveredCallback, H as setSessionEndCallback, I as setCameraFrameCallback, J as startCameraFrameCapture, K as setTrackingStore, L as setDepthCaptureCallback, M as resetWebXRState, N as setArPose, O as isWebXRSupported, P as setArWorldGroup, Q as stopDepthCapture, R as setFrameCallback, S as getDepthSampleCount, T as getScene, U as setTrackingCallbacks, V as setScene, W as setTrackingLostCallback, X as startImageCapture, Y as startDepthCapture, Z as stopCameraFrameCapture, _ as getCamera, a as DEFAULT_CAMERA_FRAME_CAPTURE_SIZE, b as getCurrentArPose, c as TrackingSubscribableStore, d as createSceneHierarchy, f as endARSession, g as getArWorldGroup, h as getArPose, i as CameraFrameCaptureConfig, j as nueQuaternionToWebXR, k as isXRCameraLike, l as applyAlignmentMatrix, m as extractResetTransformData, n as AR_CAMERA_FOV, o as SessionEndInfo, p as extractPoseFromViewer, q as shouldLogCameraAccessDiagnostic, r as AR_CAMERA_NEAR, s as SessionFeatureOptions, t as AR_CAMERA_FAR, u as buildSessionOptions, v as getCameraFrameCaptureSize, w as getLiveCss3dManager, x as getDepthInfoFromFrame, y as getCameraFrameCount, z as setImageCaptureCallback } from "../webxr-session-
|
|
3
|
+
import { $ as stopImageCapture, A as nuePositionToWebXR, B as setImageQualityAnalyzer, C as getImageCaptureFrameCount, D as initAR, E as getXrCameraFromPose, F as setCamera, G as setTrackingRecoveredCallback, H as setSessionEndCallback, I as setCameraFrameCallback, J as startCameraFrameCapture, K as setTrackingStore, L as setDepthCaptureCallback, M as resetWebXRState, N as setArPose, O as isWebXRSupported, P as setArWorldGroup, Q as stopDepthCapture, R as setFrameCallback, S as getDepthSampleCount, T as getScene, U as setTrackingCallbacks, V as setScene, W as setTrackingLostCallback, X as startImageCapture, Y as startDepthCapture, Z as stopCameraFrameCapture, _ as getCamera, a as DEFAULT_CAMERA_FRAME_CAPTURE_SIZE, b as getCurrentArPose, c as TrackingSubscribableStore, d as createSceneHierarchy, f as endARSession, g as getArWorldGroup, h as getArPose, i as CameraFrameCaptureConfig, j as nueQuaternionToWebXR, k as isXRCameraLike, l as applyAlignmentMatrix, m as extractResetTransformData, n as AR_CAMERA_FOV, o as SessionEndInfo, p as extractPoseFromViewer, q as shouldLogCameraAccessDiagnostic, r as AR_CAMERA_NEAR, s as SessionFeatureOptions, t as AR_CAMERA_FAR, u as buildSessionOptions, v as getCameraFrameCaptureSize, w as getLiveCss3dManager, x as getDepthInfoFromFrame, y as getCameraFrameCount, z as setImageCaptureCallback } from "../webxr-session-BWCpGd-2.js";
|
|
4
4
|
export { ARPose, AR_CAMERA_FAR, AR_CAMERA_FOV, AR_CAMERA_NEAR, CameraFrameCaptureConfig, CapturedImage, DEFAULT_CAMERA_FRAME_CAPTURE_SIZE, DepthSample, SessionEndInfo, SessionFeatureOptions, TrackingSubscribableStore, applyAlignmentMatrix, buildSessionOptions, createSceneHierarchy, endARSession, extractPoseFromViewer, extractResetTransformData, getArPose, getArWorldGroup, getCamera, getCameraFrameCaptureSize, getCameraFrameCount, getCurrentArPose, getDepthInfoFromFrame, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getScene, getXrCameraFromPose, initAR, isWebXRSupported, isXRCameraLike, nuePositionToWebXR, nueQuaternionToWebXR, resetWebXRState, setArPose, setArWorldGroup, setCamera, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setImageQualityAnalyzer, setScene, setSessionEndCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingRecoveredCallback, setTrackingStore, shouldLogCameraAccessDiagnostic, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture };
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as
|
|
2
|
-
export { ArImageCapture, GpsPoint, LatLong, LatLongAlt, LibraryRootState, Matrix4, Quaternion, RootState, Vector3, arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey, webxrToNUE };
|
|
1
|
+
import { S as webxrToNUE, _ as createLoopClosureHandler, a as LibraryRootState, b as odometryTrackingRestarted, c as Matrix4, d as Vector3, f as arNorthBearingDeg, g as createGpsSlamStore, h as calcRelativeCoordsInMeters, i as LatLongAlt, l as Quaternion, m as calcGpsCoords, n as GpsPoint, o as LoopClosureHandler, p as bearingDeltaDeg, r as LatLong, s as LoopClosureHandlerConfig, t as ArImageCapture, u as RootState, v as isIdentityMatrix4, x as validateLicenseKey, y as magneticHeadingFromEnuQuat } from "../index-DXPVzOpP.js";
|
|
2
|
+
export { ArImageCapture, GpsPoint, LatLong, LatLongAlt, LibraryRootState, LoopClosureHandler, LoopClosureHandlerConfig, Matrix4, Quaternion, RootState, Vector3, arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, createLoopClosureHandler, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey, webxrToNUE };
|
package/dist/core/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey, webxrToNUE } from "gps-plus-slam-js";
|
|
2
|
-
export { arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey, webxrToNUE };
|
|
1
|
+
import { arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, createLoopClosureHandler, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey, webxrToNUE } from "gps-plus-slam-js";
|
|
2
|
+
export { arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords, calcRelativeCoordsInMeters, createGpsSlamStore, createLoopClosureHandler, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey, webxrToNUE };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as TrackingSliceState } from "./tracking-slice-DMkHlbny.js";
|
|
2
|
-
import { t as RecordingState } from "./recording-slice-
|
|
2
|
+
import { t as RecordingState } from "./recording-slice-BW8SiLo1.js";
|
|
3
3
|
import { n as SessionMetadata } from "./opfs-storage-CTkxvxN4.js";
|
|
4
4
|
import { n as StorageBackend } from "./storage-backend-sEtmM4yW.js";
|
|
5
5
|
import { GpsPoint, LatLong, Matrix4, RootState, Vector3 } from "gps-plus-slam-js";
|
|
@@ -138,11 +138,10 @@ declare function computeConvergence(snapshots: readonly AlignmentSnapshot[], opt
|
|
|
138
138
|
* compute the Euclidean distance.
|
|
139
139
|
*
|
|
140
140
|
* This is the **single shared kernel** for the AppFramework reporter and
|
|
141
|
-
* the
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
* definition.
|
|
141
|
+
* the downstream corpus-analysis harness (see §11 (a) of the
|
|
142
|
+
* tracking-quality plan), which re-exports it as `computeStabilityDelta` —
|
|
143
|
+
* a thin wrapper around this function — so the §6.1 corpus sweep and the
|
|
144
|
+
* runtime convergence score share one numeric definition.
|
|
146
145
|
*/
|
|
147
146
|
declare function matrixDelta(prev: readonly number[], curr: readonly number[]): {
|
|
148
147
|
rotationDeltaDeg: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as ArCrashIsolationOptions } from "./recording-options-
|
|
1
|
+
import { t as ArCrashIsolationOptions } from "./recording-options-DYKWVI93.js";
|
|
2
2
|
import { n as RawDeviceOrientation, t as GpsPosition } from "./gps-CDKDQokE.js";
|
|
3
3
|
import { n as PermissionStatus } from "./permission-checker-B-VtjnBA.js";
|
|
4
|
-
import { s as SessionFeatureOptions } from "./webxr-session-
|
|
4
|
+
import { s as SessionFeatureOptions } from "./webxr-session-BWCpGd-2.js";
|
|
5
5
|
|
|
6
6
|
//#region ../src/ar/enable-gps-ar.d.ts
|
|
7
7
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as ARPose } from "./ar-types-Cc5yvBwn.js";
|
|
2
2
|
import { n as RawDeviceOrientation, t as GpsPosition } from "./gps-CDKDQokE.js";
|
|
3
3
|
import { t as AbsoluteOrientationReading } from "./absolute-orientation-BAxc15J6.js";
|
|
4
|
-
import { i as SlamAppStore } from "./create-slam-app-store-
|
|
4
|
+
import { i as SlamAppStore } from "./create-slam-app-store-D1QSMuKu.js";
|
|
5
5
|
import { Quaternion, RawAbsoluteOrientation, RawGpsPoint, RecordGpsEventPayload, Vector3, eulerToQuaternion } from "gps-plus-slam-js";
|
|
6
6
|
import { ReducersMapObject } from "@reduxjs/toolkit";
|
|
7
7
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { N as CombinedRootState, m as TrackingQualityReport } from "./create-slam-app-store-
|
|
1
|
+
import { N as CombinedRootState, m as TrackingQualityReport } from "./create-slam-app-store-D1QSMuKu.js";
|
|
2
2
|
import { Add2dImagePayload, GpsPoint as GpsPoint$1, LatLong as LatLong$1, RawDeviceOrientation, RawGpsPoint as RawGpsPoint$1, RecordGpsEventPayload as RecordGpsEventPayload$1, add2dImage, calcRelativeCoordsInMeters, recordGpsEvent as recordGpsEvent$1, setZeroPos as setZeroPos$1 } from "gps-plus-slam-js";
|
|
3
3
|
|
|
4
4
|
//#region ../src/state/onboarding-guidance.d.ts
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ArImageCapture as ArImageCapture$1, GpsPoint as GpsPoint$1, LatLong as LatLong$1, LatLongAlt, LoopClosureHandler, LoopClosureHandlerConfig, Matrix4 as Matrix4$1, Quaternion as Quaternion$1, RootState as LibraryRootState, RootState as RootState$1, Vector3 as Vector3$1, arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords as calcGpsCoords$1, calcRelativeCoordsInMeters, createGpsSlamStore, createLoopClosureHandler, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey as validateLicenseKey$1, webxrToNUE } from "gps-plus-slam-js";
|
|
2
|
+
export { webxrToNUE as S, createLoopClosureHandler as _, LibraryRootState as a, odometryTrackingRestarted as b, Matrix4$1 as c, Vector3$1 as d, arNorthBearingDeg as f, createGpsSlamStore as g, calcRelativeCoordsInMeters as h, LatLongAlt as i, Quaternion$1 as l, calcGpsCoords$1 as m, GpsPoint$1 as n, LoopClosureHandler as o, bearingDeltaDeg as p, LatLong$1 as r, LoopClosureHandlerConfig as s, ArImageCapture$1 as t, RootState$1 as u, isIdentityMatrix4 as v, validateLicenseKey$1 as x, magneticHeadingFromEnuQuat as y };
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { n as createDepthGridLookup, t as DepthGridLookup } from "./depth-grid-l
|
|
|
8
8
|
import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "./depth-sampler-CwObAwEA.js";
|
|
9
9
|
import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "./depth-unprojection-DRdBU90S.js";
|
|
10
10
|
import { a as QualityFilterConfig, c as meanLuminance, i as ImageQualityGate, l as rgbaToGrayscale, n as DEFAULT_SHARPNESS_HISTORY_SIZE, o as QualityRejectReason, r as DEFAULT_SHARPNESS_MIN_SAMPLES, s as QualityVerdict, t as DEFAULT_QUALITY_FILTER, u as sharpnessScore } from "./image-quality-BMx2ko9-.js";
|
|
11
|
-
import {
|
|
11
|
+
import { C as cloneRecordingOptions, E as saveRecordingOptions, L as validateRecordingOptions, T as resetRecordingOptions, a as DepthCaptureOptions, b as RecordingOptionsInput, c as IMAGE_CONSTRAINTS, i as DEPTH_CONSTRAINTS, j as validateImageOptions, k as validateDepthOptions, l as ImageCaptureOptions, r as DEFAULT_RECORDING_OPTIONS, w as loadRecordingOptions, x as STORAGE_KEY } from "./recording-options-DYKWVI93.js";
|
|
12
12
|
import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "./gps-CDKDQokE.js";
|
|
13
13
|
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-B-VtjnBA.js";
|
|
14
14
|
import { a as ImageCaptureCallbacks, c as MIN_VALID_IMAGE_BYTES, i as FrameQualityVerdict, n as CapturedImage, o as ImageCaptureConfig, r as DEFAULT_CAPTURE_CONFIG, s as ImageCaptureManager, t as CapturedFrame } from "./image-capture-Bp6Pd4Md.js";
|
|
@@ -17,8 +17,8 @@ import { _ as solveQrPose, a as QrPoseSolution, c as SolveQrPoseInput, d as intr
|
|
|
17
17
|
import { a as QrFrontEnd, c as createBarcodeDetectorFrontEnd, i as QrDetection, n as BarcodeDetectorLike, o as RgbaImage, r as DetectedBarcodeLike, s as ToImageBitmapSource, t as BarcodeDetectorFrontEnd } from "./qr-frontend-BPURlh3S.js";
|
|
18
18
|
import { n as createCss3dRendererManager, t as Css3dRendererManager } from "./css3d-renderer-manager-CPpVtvgs.js";
|
|
19
19
|
import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "./xr-camera-texture-q0eIDSRg.js";
|
|
20
|
-
import { $ as stopImageCapture, B as setImageQualityAnalyzer, C as getImageCaptureFrameCount, D as initAR, H as setSessionEndCallback, I as setCameraFrameCallback, J as startCameraFrameCapture, K as setTrackingStore, L as setDepthCaptureCallback, Q as stopDepthCapture, R as setFrameCallback, S as getDepthSampleCount, T as getScene, U as setTrackingCallbacks, W as setTrackingLostCallback, X as startImageCapture, Y as startDepthCapture, Z as stopCameraFrameCapture, _ as getCamera, b as getCurrentArPose, f as endARSession, g as getArWorldGroup, i as CameraFrameCaptureConfig, o as SessionEndInfo, s as SessionFeatureOptions, w as getLiveCss3dManager, x as getDepthInfoFromFrame, y as getCameraFrameCount, z as setImageCaptureCallback } from "./webxr-session-
|
|
21
|
-
import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "./enable-gps-ar-
|
|
20
|
+
import { $ as stopImageCapture, B as setImageQualityAnalyzer, C as getImageCaptureFrameCount, D as initAR, H as setSessionEndCallback, I as setCameraFrameCallback, J as startCameraFrameCapture, K as setTrackingStore, L as setDepthCaptureCallback, Q as stopDepthCapture, R as setFrameCallback, S as getDepthSampleCount, T as getScene, U as setTrackingCallbacks, W as setTrackingLostCallback, X as startImageCapture, Y as startDepthCapture, Z as stopCameraFrameCapture, _ as getCamera, b as getCurrentArPose, f as endARSession, g as getArWorldGroup, i as CameraFrameCaptureConfig, o as SessionEndInfo, s as SessionFeatureOptions, w as getLiveCss3dManager, x as getDepthInfoFromFrame, y as getCameraFrameCount, z as setImageCaptureCallback } from "./webxr-session-BWCpGd-2.js";
|
|
21
|
+
import { a as EnableGpsArState, i as EnableGpsArResult, n as EnableGpsArController, o as EnableGpsArStatus, r as EnableGpsArDeps, s as createEnableGpsArController, t as EnableGpsArConfig } from "./enable-gps-ar-BBtRO2FJ.js";
|
|
22
22
|
import { r as registerFrameUpdate, t as FrameUpdate } from "./frame-loop-7GBMBu68.js";
|
|
23
23
|
import { c as QrSizeAccumulatorOptions, d as QrSizeStatus, f as createQrSizeAccumulator, i as QrSizeMeasurer, l as QrSizeEstimate, n as QrSizeDepthContext, o as createQrSizeMeasurer, p as estimateQrSizeFromDepth, r as QrSizeMeasurement, s as QrSizeAccumulator, t as ImageSize, u as QrSizeObservation } from "./qr-size-measurer-DxiMqRUw.js";
|
|
24
24
|
import { t as createQrSizeDepthContext } from "./qr-size-depth-context-apAOmbrZ.js";
|
|
@@ -48,34 +48,34 @@ import { n as mapWithConcurrencyLimit } from "./concurrency-DPeGBH0X.js";
|
|
|
48
48
|
import { t as geodesicAngleRad } from "./index-D74JTX4I.js";
|
|
49
49
|
import { t as formatFileSize } from "./format-file-size-DxN-EBLc.js";
|
|
50
50
|
import { t as listFormatter } from "./list-formatter-DLFDnS70.js";
|
|
51
|
-
import { a as recordWriteFailure, i as recordDepthSample, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "./recording-slice-
|
|
51
|
+
import { a as recordWriteFailure, i as recordDepthSample, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "./recording-slice-BW8SiLo1.js";
|
|
52
52
|
import { a as getAppRootHandle, c as initOpfsStorage, d as resetSessionHandles, i as createSession, l as listSessions, o as getSessionHandle, r as checkStorageQuota, s as getSessionsRootHandle, u as resetOpfsStorage } from "./opfs-storage-CTkxvxN4.js";
|
|
53
53
|
import { n as StorageBackend, t as CreateSessionResult } from "./storage-backend-sEtmM4yW.js";
|
|
54
|
-
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, x as computeResidualConsensus, y as computeGpsAccuracy } from "./create-slam-app-store-
|
|
55
|
-
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-
|
|
56
|
-
import { a as ZipActionEntry,
|
|
57
|
-
import { n as replayRecording } from "./recording-replayer-
|
|
58
|
-
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-
|
|
59
|
-
import { n as MapDataInput, r as buildMapData, t as MapData } from "./map-data-
|
|
60
|
-
import { t as SubscribableStore } from "./subscribe-to-selector-
|
|
61
|
-
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "./store-subscribers-
|
|
62
|
-
import { c as calcRelativeCoordsInMeters, d as OnboardingGuidance, f as OnboardingPhase, l as recordGpsEvent, m as selectOnboardingGuidance, p as computeOnboardingGuidance, s as add2dImage, u as setZeroPos } from "./index-
|
|
54
|
+
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, x as computeResidualConsensus, y as computeGpsAccuracy } from "./create-slam-app-store-D1QSMuKu.js";
|
|
55
|
+
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-BWpgBrHq.js";
|
|
56
|
+
import { a as ZipActionEntry, c as loadActionsFromZip, f as loadSessionMetadataFromBlob, i as RecordedAction, n as GpsPathCoord, p as readZipEntries, r as MAX_ACTION_FILE_SIZE, u as loadGpsPathFromBlob } from "./zip-reader-BzENzMH6.js";
|
|
57
|
+
import { n as replayRecording } from "./recording-replayer-BJ8Lf0QY.js";
|
|
58
|
+
import { a as ReplayAction, c as computeInterActionDelay, i as ProgressCallback, l as extractActionTimestamp, n as DEFAULT_MAX_DELAY_MS, o as ReplayEngine, r as ErrorCallback, s as ReplayState, t as CompleteCallback } from "./replay-engine-DmCAc7WM.js";
|
|
59
|
+
import { n as MapDataInput, r as buildMapData, t as MapData } from "./map-data-CUnTzRIC.js";
|
|
60
|
+
import { t as SubscribableStore } from "./subscribe-to-selector-dQV8SpsO.js";
|
|
61
|
+
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "./store-subscribers-DJUErW-o.js";
|
|
62
|
+
import { c as calcRelativeCoordsInMeters, d as OnboardingGuidance, f as OnboardingPhase, l as recordGpsEvent, m as selectOnboardingGuidance, p as computeOnboardingGuidance, s as add2dImage, u as setZeroPos } from "./index-B6iBnO_K.js";
|
|
63
63
|
import { t as NullStorageBackend } from "./null-storage-backend-B1-jlpin.js";
|
|
64
64
|
import { t as OpfsStorageBackend } from "./opfs-storage-backend-D6Z03fML.js";
|
|
65
65
|
import { a as formatTimestamp, i as formatFrameFilename, r as formatActionFilename } from "./file-system-utils-DueXHxo9.js";
|
|
66
66
|
import { a as downloadZip, c as syncToExternalZip, i as ZipExportResult, n as ZipContributorAddFile, o as exportSessionAsZip, r as ZipExportContributor, s as exportSessionHandleAsZip, t as ExportSessionAsZipOptions } from "./zip-export-CtiUnAlJ.js";
|
|
67
|
-
import { n as ArWorldGroupAlignmentOptions, r as enableArWorldGroupAlignment, t as ArWorldGroupAlignmentHandle } from "./ar-world-group-alignment-
|
|
67
|
+
import { n as ArWorldGroupAlignmentOptions, r as enableArWorldGroupAlignment, t as ArWorldGroupAlignmentHandle } from "./ar-world-group-alignment-Cfg0trC3.js";
|
|
68
68
|
import { i as createGpsCompassCubes, n as COMPASS_CUBE_SIZE, r as GpsCompassCubes, t as COMPASS_CUBE_DISTANCE } from "./gps-compass-cubes-1mooS3BS.js";
|
|
69
69
|
import { i as isSphereInCameraFrustum, n as isObjectInCameraFrustum, r as isPointInCameraFrustum, t as buildCameraFrustum } from "./frustum-visibility-CokkgS_i.js";
|
|
70
|
-
import { n as worldNueToGps, t as nueToArLocal } from "./frame-conversions-
|
|
70
|
+
import { n as worldNueToGps, t as nueToArLocal } from "./frame-conversions-DDcNHkTb.js";
|
|
71
71
|
import { n as createReticleMesh, r as updateReticle, t as HitMatrix } from "./hit-test-reticle-CaQbrhbk.js";
|
|
72
|
-
import { a as GpsAnchorSamplePoint, i as GpsAnchorPhase, n as GpsAnchorMode, o as createGpsAnchor, r as GpsAnchorOptions, t as GpsAnchor } from "./gps-anchor-
|
|
72
|
+
import { a as GpsAnchorSamplePoint, i as GpsAnchorPhase, n as GpsAnchorMode, o as createGpsAnchor, r as GpsAnchorOptions, t as GpsAnchor } from "./gps-anchor-CEjGqEVD.js";
|
|
73
73
|
import { n as GpsEventVisualizer, r as gpsEventVisualizer } from "./gps-event-markers-Di2nBzx-.js";
|
|
74
|
-
import { n as OcclusionMesh, r as OcclusionMeshOptions } from "./occlusion-mesh-
|
|
75
|
-
import { a as DEFAULT_Z_OFFSET, n as DEFAULT_LEAFLET_MAP_SIZE_PX, o as LeafletMapOverlay, r as DEFAULT_WORLD_SIZE, s as LeafletMapOverlayOptions } from "./leaflet-map-overlay-
|
|
74
|
+
import { n as OcclusionMesh, r as OcclusionMeshOptions } from "./occlusion-mesh-kXCQ2FM1.js";
|
|
75
|
+
import { a as DEFAULT_Z_OFFSET, n as DEFAULT_LEAFLET_MAP_SIZE_PX, o as LeafletMapOverlay, r as DEFAULT_WORLD_SIZE, s as LeafletMapOverlayOptions } from "./leaflet-map-overlay-C8GS4cUy.js";
|
|
76
76
|
import { n as clampedAlpha, t as DEFAULT_LERP_RATE } from "./lerp-utils-Qs8OhumS.js";
|
|
77
77
|
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-DkWBkF5g.js";
|
|
78
|
-
import { a as MAP_PATH_POLYLINE_OPACITY, c as USER_POSITION_COLOR, i as FUSED_PATH_COLOR, l as drawMapData, n as DrawMapDataOptions, o as MAP_PATH_POLYLINE_WEIGHT, r as DrawnMapData, s as RAW_GPS_COLOR, t as ALIGNMENT_SNAPSHOT_COLOR } from "./map-overlay-draw-
|
|
78
|
+
import { a as MAP_PATH_POLYLINE_OPACITY, c as USER_POSITION_COLOR, i as FUSED_PATH_COLOR, l as drawMapData, n as DrawMapDataOptions, o as MAP_PATH_POLYLINE_WEIGHT, r as DrawnMapData, s as RAW_GPS_COLOR, t as ALIGNMENT_SNAPSHOT_COLOR } from "./map-overlay-draw-6WJeq0Kg.js";
|
|
79
79
|
import { a as MapOverlayOptions, c as tileXYToLatLon, i as MapOverlay, n as DEFAULT_MAP_SIZE, o as TextureLoaderInterface, r as DEFAULT_ZOOM, s as latLonToTileXY, t as DEFAULT_HEIGHT_OFFSET } from "./map-overlay-BCQgvIgU.js";
|
|
80
80
|
import { n as disposeMeshArray, r as disposeObject3D, t as DisposeOptions } from "./three-dispose-BMOAmPhb.js";
|
|
81
81
|
import { t as VIS_COLORS } from "./vis-colors-C7HI0u9_.js";
|
package/dist/index.js
CHANGED
|
@@ -63,7 +63,7 @@ import { DEFAULT_TRACKING_QUALITY_OPTIONS, computeConvergence, computeCoverage,
|
|
|
63
63
|
import { t as createSlamAppStore } from "./create-slam-app-store-DXiAnJwR.js";
|
|
64
64
|
import { replayRecording } from "./state/recording-replayer.js";
|
|
65
65
|
import { DEFAULT_MAX_DELAY_MS, ReplayEngine, computeInterActionDelay, extractActionTimestamp } from "./state/replay-engine.js";
|
|
66
|
-
import { t as buildMapData } from "./map-data-
|
|
66
|
+
import { t as buildMapData } from "./map-data-1tF5gcYV.js";
|
|
67
67
|
import { wireStoreSubscribers } from "./state/store-subscribers.js";
|
|
68
68
|
import { a as computeOnboardingGuidance, i as setZeroPos, n as calcRelativeCoordsInMeters, o as selectOnboardingGuidance, r as recordGpsEvent, t as add2dImage } from "./state-BeKvn4B-.js";
|
|
69
69
|
import { checkStorageQuota, createSession, getAppRootHandle, getSessionHandle, getSessionsRootHandle, initOpfsStorage, listSessions, resetOpfsStorage, resetSessionHandles } from "./storage/opfs-storage.js";
|
|
@@ -99,8 +99,12 @@ function buildMapData(input) {
|
|
|
99
99
|
alignmentMatrix: input.alignmentMatrix ?? null,
|
|
100
100
|
zeroRef: input.zeroRef ?? null
|
|
101
101
|
});
|
|
102
|
+
const lastFused = fusedPath[fusedPath.length - 1];
|
|
102
103
|
const lastRaw = rawGpsPath[rawGpsPath.length - 1];
|
|
103
|
-
const userPosition = input.userPosition !== void 0 ? input.userPosition :
|
|
104
|
+
const userPosition = input.userPosition !== void 0 ? input.userPosition : lastFused ? {
|
|
105
|
+
lat: lastFused.lat,
|
|
106
|
+
lng: lastFused.lng
|
|
107
|
+
} : lastRaw ? {
|
|
104
108
|
lat: lastRaw.lat,
|
|
105
109
|
lng: lastRaw.lng
|
|
106
110
|
} : null;
|
|
@@ -4,7 +4,14 @@ import { LatLong, Matrix4, Quaternion, Vector3 } from "gps-plus-slam-js";
|
|
|
4
4
|
//#region ../src/visualization/map-data.d.ts
|
|
5
5
|
/** Fully-resolved trajectory data ready to be drawn onto a Leaflet map. */
|
|
6
6
|
interface MapData {
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* User position for the blue dot, or null when unknown/hidden. Unless the
|
|
9
|
+
* caller provided an explicit value, this is the latest FUSED pose
|
|
10
|
+
* (GPS-converted tip of `fusedPath`), so the dot keeps moving indoors where
|
|
11
|
+
* the raw fix freezes; the last raw GPS fix is only the pre-alignment
|
|
12
|
+
* fallback. See
|
|
13
|
+
* gps-plus-slam/GpsPlusSlamJs_Docs/docs/2026-07-06-recorder-live-map-user-dot-fused-pose-user-feedback.md.
|
|
14
|
+
*/
|
|
8
15
|
userPosition: GpsCoord | null;
|
|
9
16
|
/** Raw GPS samples (yellow polyline + per-event accuracy circles). */
|
|
10
17
|
rawGpsPath: RawGpsSample[];
|
|
@@ -49,8 +56,10 @@ interface MapDataInput {
|
|
|
49
56
|
/** Alignment-snapshot GPS positions. */
|
|
50
57
|
alignmentSnapshots?: readonly GpsCoord[];
|
|
51
58
|
/**
|
|
52
|
-
* Explicit user position
|
|
53
|
-
* `
|
|
59
|
+
* Explicit user position — including `null` to hide the dot (summary map).
|
|
60
|
+
* When omitted, defaults to the last `fusedPath` point when the fused path
|
|
61
|
+
* is non-empty, else the last `rawGpsPath` entry, else null (2026-07-06
|
|
62
|
+
* fused-dot feedback).
|
|
54
63
|
*/
|
|
55
64
|
userPosition?: GpsCoord | null;
|
|
56
65
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as GridCell } from "./bresenham3d-DGc4nIb-.js";
|
|
2
|
-
import {
|
|
2
|
+
import { p as OccluderDebugStyle } from "./recording-options-DYKWVI93.js";
|
|
3
3
|
import { n as MeshMode, t as Aabb } from "./occupancy-mesher-C2ecWhNp.js";
|
|
4
4
|
import * as THREE from "three";
|
|
5
5
|
import { Vector3 } from "gps-plus-slam-js";
|
|
@@ -15,6 +15,7 @@ interface RecordingOptionsInput {
|
|
|
15
15
|
visualization?: Partial<VisualizationOptions>;
|
|
16
16
|
qr?: Partial<QrCaptureOptions>;
|
|
17
17
|
compassDebug?: Partial<CompassDebugOptions>;
|
|
18
|
+
loopClosureDebug?: Partial<LoopClosureDebugOptions>;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
21
|
* Toggles for the library's Phase-4 compass alignment features (closed/internal
|
|
@@ -43,6 +44,23 @@ interface CompassDebugOptions {
|
|
|
43
44
|
/** GPS-free compass↔WebXR consistency gate (`setCompassWebXRConsistencyEnabled`). */
|
|
44
45
|
webXRConsistency: boolean;
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Live loop-closure capture toggles (experimental, default OFF).
|
|
49
|
+
*
|
|
50
|
+
* When `detectorEnabled` is on, the recorder feeds every AR frame's raw WebXR
|
|
51
|
+
* pose into the library's `createLoopClosureHandler`, so an AR relocalization
|
|
52
|
+
* jump (>1 m between consecutive frames) dispatches `arLoopClosureDetected`
|
|
53
|
+
* into the session store — and therefore into the recording. This is the
|
|
54
|
+
* missing producer that has kept the whole corpus loop-closure-free (the
|
|
55
|
+
* pair-refresh T5 verdict is blocked on such recordings). It also changes the
|
|
56
|
+
* LIVE alignment (each closure Bézier-deforms the stored trajectory), which is
|
|
57
|
+
* why it stays an operator opt-in. See
|
|
58
|
+
* GpsPlusSlamJs_Docs/docs/2026-07-06-recorder-loop-closure-detector-wiring-plan.md.
|
|
59
|
+
*/
|
|
60
|
+
interface LoopClosureDebugOptions {
|
|
61
|
+
/** Wire the live loop-closure handler into the AR frame loop. Default OFF. */
|
|
62
|
+
detectorEnabled: boolean;
|
|
63
|
+
}
|
|
46
64
|
/**
|
|
47
65
|
* Diagnostic flags for isolating pre-recording AR startup crashes.
|
|
48
66
|
* These gates affect XR session negotiation and frame-loop behavior,
|
|
@@ -394,6 +412,8 @@ interface RecordingOptions {
|
|
|
394
412
|
qr: QrCaptureOptions;
|
|
395
413
|
/** Compass alignment debug toggles (Stage 0 / Stage C / consistency gate) */
|
|
396
414
|
compassDebug: CompassDebugOptions;
|
|
415
|
+
/** Live loop-closure capture toggles (experimental, default OFF) */
|
|
416
|
+
loopClosureDebug: LoopClosureDebugOptions;
|
|
397
417
|
}
|
|
398
418
|
/**
|
|
399
419
|
* localStorage key for persisted options.
|
|
@@ -580,6 +600,12 @@ declare function validateArCrashIsolationOptions(options: Partial<ArCrashIsolati
|
|
|
580
600
|
* so a bad persisted value can never silently turn an alignment override ON.
|
|
581
601
|
*/
|
|
582
602
|
declare function validateCompassDebugOptions(options: Partial<CompassDebugOptions>): CompassDebugOptions;
|
|
603
|
+
/**
|
|
604
|
+
* Validate and normalize the loop-closure capture toggles. Boolean-or-default
|
|
605
|
+
* per field; a missing/corrupted/pre-feature value falls back to the OFF
|
|
606
|
+
* default so a bad persisted value can never silently wire the detector in.
|
|
607
|
+
*/
|
|
608
|
+
declare function validateLoopClosureDebugOptions(options: Partial<LoopClosureDebugOptions>): LoopClosureDebugOptions;
|
|
583
609
|
/**
|
|
584
610
|
* Validate and normalize the live debug-overlay visibility toggles.
|
|
585
611
|
* Each field is boolean-or-default (same policy as the AR-crash-isolation
|
|
@@ -664,4 +690,4 @@ declare function resetRecordingOptions(storageKey?: string): RecordingOptions;
|
|
|
664
690
|
*/
|
|
665
691
|
declare function cloneRecordingOptions(options: RecordingOptions): RecordingOptions;
|
|
666
692
|
//#endregion
|
|
667
|
-
export {
|
|
693
|
+
export { validateFrameTileDisplayOptions as A, cloneRecordingOptions as C, validateArCrashIsolationOptions as D, saveRecordingOptions as E, validateQrOptions as F, validateQualityFilterOptions as I, validateRecordingOptions as L, validateLoopClosureDebugOptions as M, validateMotionFilterOptions as N, validateCompassDebugOptions as O, validateOccupancyOptions as P, validateVisualizationOptions as R, VisualizationOptions as S, resetRecordingOptions as T, QUALITY_FILTER_CONSTRAINTS as _, DepthCaptureOptions as a, RecordingOptionsInput as b, IMAGE_CONSTRAINTS as c, MOTION_FILTER_CONSTRAINTS as d, OCCUPANCY_CONSTRAINTS as f, QR_CONSTRAINTS as g, OccupancyOptions as h, DEPTH_CONSTRAINTS as i, validateImageOptions as j, validateDepthOptions as k, ImageCaptureOptions as l, OccluderMeshMode as m, CompassDebugOptions as n, FRAME_TILE_DISPLAY_CONSTRAINTS as o, OccluderDebugStyle as p, DEFAULT_RECORDING_OPTIONS as r, FrameTileDisplayOptions as s, ArCrashIsolationOptions as t, LoopClosureDebugOptions as u, QrCaptureOptions as v, loadRecordingOptions as w, STORAGE_KEY as x, RecordingOptions as y };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { N as CombinedRootState } from "./create-slam-app-store-
|
|
2
|
-
import { i as RecordedAction } from "./zip-reader-
|
|
1
|
+
import { N as CombinedRootState } from "./create-slam-app-store-D1QSMuKu.js";
|
|
2
|
+
import { i as RecordedAction } from "./zip-reader-BzENzMH6.js";
|
|
3
3
|
|
|
4
4
|
//#region ../src/state/recording-replayer.d.ts
|
|
5
5
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as DepthSample } from "./ar-types-Cc5yvBwn.js";
|
|
2
|
-
import {
|
|
2
|
+
import { y as RecordingOptions } from "./recording-options-DYKWVI93.js";
|
|
3
3
|
import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
|
|
4
4
|
|
|
5
5
|
//#region ../src/state/recording-slice.d.ts
|
|
@@ -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-BbAiCRUT.js";
|
|
2
2
|
export { selectAlignmentMatrix, selectFrameTilesInWebXR, selectGpsPositions, selectOdometryPositions, selectOdometryRotations, selectZeroReference };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { N as CombinedRootState } from "../create-slam-app-store-
|
|
1
|
+
import { N as CombinedRootState } from "../create-slam-app-store-D1QSMuKu.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-D1QSMuKu.js";
|
|
2
2
|
export { SlamAppCombinedState, SlamAppMiddleware, SlamAppRootState, SlamAppStore, SlamAppStoreOptions, createSlamAppStore };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { t as ARPose } from "../ar-types-Cc5yvBwn.js";
|
|
2
|
-
import { o as extractOdomPosition, s as extractOdomRotation } from "../gps-event-coordinator-
|
|
2
|
+
import { o as extractOdomPosition, s as extractOdomRotation } from "../gps-event-coordinator-BWpgBrHq.js";
|
|
3
3
|
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-DEGNk2CI.js";
|
|
4
4
|
export { ARPose, CaptureGpsAnchorSampleOptions, GpsAnchorSample, GpsAnchorSampleGpsPoint, captureGpsAnchorSample, extractOdomPosition, extractOdomRotation };
|
|
@@ -1,2 +1,2 @@
|
|
|
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-
|
|
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-BWpgBrHq.js";
|
|
2
2
|
export { RecordingCoordinatorConfig, buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler, eulerToQuaternion, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, resetCoordinatorState, toRawAbsoluteOrientation, updateDeviceOrientation };
|
package/dist/state/index.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { i as DepthSample, r as DepthPoint } from "../ar-types-Cc5yvBwn.js";
|
|
2
|
-
import {
|
|
2
|
+
import { C as cloneRecordingOptions, E as saveRecordingOptions, L as validateRecordingOptions, T as resetRecordingOptions, a as DepthCaptureOptions, b as RecordingOptionsInput, c as IMAGE_CONSTRAINTS, i as DEPTH_CONSTRAINTS, j as validateImageOptions, k as validateDepthOptions, l as ImageCaptureOptions, r as DEFAULT_RECORDING_OPTIONS, w as loadRecordingOptions, x as STORAGE_KEY } from "../recording-options-DYKWVI93.js";
|
|
3
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-DMkHlbny.js";
|
|
4
4
|
import { d as QrSizeStatus, l as QrSizeEstimate } from "../qr-size-measurer-DxiMqRUw.js";
|
|
5
5
|
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-CypnmjA-.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-
|
|
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-BW8SiLo1.js";
|
|
7
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-TzVb8bij.js";
|
|
8
8
|
import { n as SessionMetadata } from "../opfs-storage-CTkxvxN4.js";
|
|
9
9
|
import { n as StorageBackend } from "../storage-backend-sEtmM4yW.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-
|
|
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-
|
|
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-D1QSMuKu.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-BWpgBrHq.js";
|
|
12
12
|
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-DEGNk2CI.js";
|
|
13
|
-
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-
|
|
13
|
+
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-BJ8Lf0QY.js";
|
|
14
14
|
import { n as createPersistenceMiddleware, r as slicePrefixOf, t as PersistenceMiddlewareOptions } from "../persistence-middleware-CG-t08X4.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-
|
|
16
|
-
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-
|
|
17
|
-
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-
|
|
18
|
-
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-
|
|
19
|
-
import { a as RawGpsPoint, c as calcRelativeCoordsInMeters, d as OnboardingGuidance, f as OnboardingPhase, i as RawDeviceOrientation, l as recordGpsEvent, m as selectOnboardingGuidance, n as GpsPoint, o as RecordGpsEventPayload, p as computeOnboardingGuidance, r as LatLong, s as add2dImage, t as Add2dImagePayload, u as setZeroPos } from "../index-
|
|
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-DmCAc7WM.js";
|
|
16
|
+
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-dQV8SpsO.js";
|
|
17
|
+
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-DJUErW-o.js";
|
|
18
|
+
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-BbAiCRUT.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-B6iBnO_K.js";
|
|
20
20
|
export { Add2dImagePayload, AlignmentSnapshot, CaptureGpsAnchorSampleOptions, CompleteCallback, DEFAULT_MAX_DELAY_MS, DEFAULT_QR_MAX_HISTORY, DEFAULT_RECORDING_OPTIONS, DEFAULT_TRACKING_QUALITY_OPTIONS, DEPTH_CONSTRAINTS, DepthCaptureOptions, DepthPoint, DepthSample, DeviceOrientation, ErrorCallback, GpsAnchorSample, GpsAnchorSampleGpsPoint, GpsPoint, IMAGE_CONSTRAINTS, ImageCaptureOptions, LatLong, OnboardingGuidance, OnboardingPhase, SessionMetadata as OpfsSessionMetadata, PersistenceMiddlewareOptions, PoseReceivedPayload, ProgressCallback, QrDetectedState, QrDetectionEntry, QrMarkerState, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrSizeEstimate, QrSizeStatus, RawDeviceOrientation, RawGpsPoint, RecordGpsEventPayload, RecordingCoordinatorConfig, RecordingOptionsInput, RecordingState, ReplayAction, ReplayEngine, ReplayRecordingOptions, ReplayState, ResetTransformData, RootWithQrDetected, STORAGE_KEY, SessionMetadata$1 as SessionMetadata, SlamAppCombinedState, SlamAppMiddleware, SlamAppRootState, SlamAppStore, SlamAppStoreOptions, StorageBackend, StoreSubscriberDeps, SubscribableStore, TrackingPhase, TrackingQualityOptions, TrackingQualityReport, TrackingQualitySliceState, TrackingQualityState, TrackingSliceState, add2dImage, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, captureGpsAnchorSample, clearAllQrMarkers, clearLastRestartedPayload, clearQrMarker, cloneRecordingOptions, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeInterActionDelay, computeOnboardingGuidance, computeResidualConsensus, computeTrackingQualityReport, createGpsPositionHandler, createPersistenceMiddleware, createSlamAppStore, createTrackingQualityListenerMiddleware, degradedCountUpdated, endSession, eulerToQuaternion, extractActionTimestamp, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, loadRecordingOptions, matrixDelta, medianQrPosition, originReset, poseLost, poseReceived, pruneQrDetections, qrDetectedReducer, recordDepthSample, recordGpsEvent, recordQrDetection, recordQrSizeEstimate, recordWriteFailure, recordingReducer, replayRecording, reportUpdated, resetCoordinatorState, resetRecordingOptions, resetTracking, resetTrackingQuality, saveRecordingOptions, selectAlignmentMatrix, selectDerivedQrPlacement, selectFrameTilesInWebXR, selectGpsPositions, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLatestQrDetection, selectLostFrameCount, selectOdometryPositions, selectOdometryRotations, selectOnboardingGuidance, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectRecentAlignments, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, selectTrackingPhase, selectTrackingQuality, selectZeroReference, setQrMaxHistory, setZeroPos, slicePrefixOf, snapshotPushed, snapshotsTrimmed, startSession, subscribeToSelector, trackingQualityReducer, trackingReducer, updateDeviceOrientation, validateDepthOptions, validateImageOptions, validateRecordingOptions, wireStoreSubscribers };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as
|
|
2
|
-
export { ArCrashIsolationOptions, CompassDebugOptions, DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, DepthCaptureOptions, FRAME_TILE_DISPLAY_CONSTRAINTS, FrameTileDisplayOptions, IMAGE_CONSTRAINTS, ImageCaptureOptions, MOTION_FILTER_CONSTRAINTS, OCCUPANCY_CONSTRAINTS, OccluderDebugStyle, OccluderMeshMode, OccupancyOptions, QR_CONSTRAINTS, QUALITY_FILTER_CONSTRAINTS, QrCaptureOptions, RecordingOptions, RecordingOptionsInput, STORAGE_KEY, VisualizationOptions, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateArCrashIsolationOptions, validateCompassDebugOptions, validateDepthOptions, validateFrameTileDisplayOptions, validateImageOptions, validateMotionFilterOptions, validateOccupancyOptions, validateQrOptions, validateQualityFilterOptions, validateRecordingOptions, validateVisualizationOptions };
|
|
1
|
+
import { A as validateFrameTileDisplayOptions, C as cloneRecordingOptions, D as validateArCrashIsolationOptions, E as saveRecordingOptions, F as validateQrOptions, I as validateQualityFilterOptions, L as validateRecordingOptions, M as validateLoopClosureDebugOptions, N as validateMotionFilterOptions, O as validateCompassDebugOptions, P as validateOccupancyOptions, R as validateVisualizationOptions, S as VisualizationOptions, T as resetRecordingOptions, _ as QUALITY_FILTER_CONSTRAINTS, a as DepthCaptureOptions, b as RecordingOptionsInput, c as IMAGE_CONSTRAINTS, d as MOTION_FILTER_CONSTRAINTS, f as OCCUPANCY_CONSTRAINTS, g as QR_CONSTRAINTS, h as OccupancyOptions, i as DEPTH_CONSTRAINTS, j as validateImageOptions, k as validateDepthOptions, l as ImageCaptureOptions, m as OccluderMeshMode, n as CompassDebugOptions, o as FRAME_TILE_DISPLAY_CONSTRAINTS, p as OccluderDebugStyle, r as DEFAULT_RECORDING_OPTIONS, s as FrameTileDisplayOptions, t as ArCrashIsolationOptions, u as LoopClosureDebugOptions, v as QrCaptureOptions, w as loadRecordingOptions, x as STORAGE_KEY, y as RecordingOptions } from "../recording-options-DYKWVI93.js";
|
|
2
|
+
export { ArCrashIsolationOptions, CompassDebugOptions, DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, DepthCaptureOptions, FRAME_TILE_DISPLAY_CONSTRAINTS, FrameTileDisplayOptions, IMAGE_CONSTRAINTS, ImageCaptureOptions, LoopClosureDebugOptions, MOTION_FILTER_CONSTRAINTS, OCCUPANCY_CONSTRAINTS, OccluderDebugStyle, OccluderMeshMode, OccupancyOptions, QR_CONSTRAINTS, QUALITY_FILTER_CONSTRAINTS, QrCaptureOptions, RecordingOptions, RecordingOptionsInput, STORAGE_KEY, VisualizationOptions, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateArCrashIsolationOptions, validateCompassDebugOptions, validateDepthOptions, validateFrameTileDisplayOptions, validateImageOptions, validateLoopClosureDebugOptions, validateMotionFilterOptions, validateOccupancyOptions, validateQrOptions, validateQualityFilterOptions, validateRecordingOptions, validateVisualizationOptions };
|
|
@@ -124,7 +124,8 @@ const DEFAULT_RECORDING_OPTIONS = {
|
|
|
124
124
|
coldStartOverride: true,
|
|
125
125
|
rotationPrior: false,
|
|
126
126
|
webXRConsistency: false
|
|
127
|
-
}
|
|
127
|
+
},
|
|
128
|
+
loopClosureDebug: { detectorEnabled: false }
|
|
128
129
|
};
|
|
129
130
|
/** Validation constraints for depth options */
|
|
130
131
|
const DEPTH_CONSTRAINTS = {
|
|
@@ -317,6 +318,15 @@ function validateCompassDebugOptions(options) {
|
|
|
317
318
|
};
|
|
318
319
|
}
|
|
319
320
|
/**
|
|
321
|
+
* Validate and normalize the loop-closure capture toggles. Boolean-or-default
|
|
322
|
+
* per field; a missing/corrupted/pre-feature value falls back to the OFF
|
|
323
|
+
* default so a bad persisted value can never silently wire the detector in.
|
|
324
|
+
*/
|
|
325
|
+
function validateLoopClosureDebugOptions(options) {
|
|
326
|
+
const defaults = DEFAULT_RECORDING_OPTIONS.loopClosureDebug;
|
|
327
|
+
return { detectorEnabled: typeof options.detectorEnabled === "boolean" ? options.detectorEnabled : defaults.detectorEnabled };
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
320
330
|
* Validate and normalize the live debug-overlay visibility toggles.
|
|
321
331
|
* Each field is boolean-or-default (same policy as the AR-crash-isolation
|
|
322
332
|
* flags): a missing, corrupted, or pre-feature persisted value falls back to
|
|
@@ -504,7 +514,8 @@ function validateRecordingOptions(options) {
|
|
|
504
514
|
frameTileDisplay: validateFrameTileDisplayOptions(options.frameTileDisplay ?? {}),
|
|
505
515
|
visualization: validateVisualizationOptions(options.visualization ?? {}),
|
|
506
516
|
qr: validateQrOptions(options.qr ?? {}),
|
|
507
|
-
compassDebug: validateCompassDebugOptions(options.compassDebug ?? {})
|
|
517
|
+
compassDebug: validateCompassDebugOptions(options.compassDebug ?? {}),
|
|
518
|
+
loopClosureDebug: validateLoopClosureDebugOptions(options.loopClosureDebug ?? {})
|
|
508
519
|
};
|
|
509
520
|
}
|
|
510
521
|
/**
|
|
@@ -572,8 +583,9 @@ function cloneRecordingOptions(options) {
|
|
|
572
583
|
frameTileDisplay: { ...options.frameTileDisplay },
|
|
573
584
|
visualization: { ...options.visualization },
|
|
574
585
|
qr: { ...options.qr },
|
|
575
|
-
compassDebug: { ...options.compassDebug }
|
|
586
|
+
compassDebug: { ...options.compassDebug },
|
|
587
|
+
loopClosureDebug: { ...options.loopClosureDebug }
|
|
576
588
|
};
|
|
577
589
|
}
|
|
578
590
|
//#endregion
|
|
579
|
-
export { DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, FRAME_TILE_DISPLAY_CONSTRAINTS, IMAGE_CONSTRAINTS, MOTION_FILTER_CONSTRAINTS, OCCUPANCY_CONSTRAINTS, QR_CONSTRAINTS, QUALITY_FILTER_CONSTRAINTS, STORAGE_KEY, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateArCrashIsolationOptions, validateCompassDebugOptions, validateDepthOptions, validateFrameTileDisplayOptions, validateImageOptions, validateMotionFilterOptions, validateOccupancyOptions, validateQrOptions, validateQualityFilterOptions, validateRecordingOptions, validateVisualizationOptions };
|
|
591
|
+
export { DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, FRAME_TILE_DISPLAY_CONSTRAINTS, IMAGE_CONSTRAINTS, MOTION_FILTER_CONSTRAINTS, OCCUPANCY_CONSTRAINTS, QR_CONSTRAINTS, QUALITY_FILTER_CONSTRAINTS, STORAGE_KEY, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateArCrashIsolationOptions, validateCompassDebugOptions, validateDepthOptions, validateFrameTileDisplayOptions, validateImageOptions, validateLoopClosureDebugOptions, validateMotionFilterOptions, validateOccupancyOptions, validateQrOptions, validateQualityFilterOptions, validateRecordingOptions, validateVisualizationOptions };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { N as CombinedRootState } from "../create-slam-app-store-
|
|
2
|
-
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-
|
|
1
|
+
import { N as CombinedRootState } from "../create-slam-app-store-D1QSMuKu.js";
|
|
2
|
+
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-BJ8Lf0QY.js";
|
|
3
3
|
export { CombinedRootState, ReplayRecordingOptions, replayRecording };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as recordWriteFailure, i as recordDepthSample, n as SessionMetadata, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "../recording-slice-
|
|
1
|
+
import { a as recordWriteFailure, i as recordDepthSample, n as SessionMetadata, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "../recording-slice-BW8SiLo1.js";
|
|
2
2
|
export { RecordingState, SessionMetadata, endSession, recordDepthSample, recordWriteFailure, recordingReducer, startSession };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ReplayAction, c as computeInterActionDelay, i as ProgressCallback, l as extractActionTimestamp, n as DEFAULT_MAX_DELAY_MS, o as ReplayEngine, r as ErrorCallback, s as ReplayState, t as CompleteCallback } from "../replay-engine-
|
|
1
|
+
import { a as ReplayAction, c as computeInterActionDelay, i as ProgressCallback, l as extractActionTimestamp, n as DEFAULT_MAX_DELAY_MS, o as ReplayEngine, r as ErrorCallback, s as ReplayState, t as CompleteCallback } from "../replay-engine-DmCAc7WM.js";
|
|
2
2
|
export { CompleteCallback, DEFAULT_MAX_DELAY_MS, ErrorCallback, ProgressCallback, ReplayAction, ReplayEngine, ReplayState, computeInterActionDelay, extractActionTimestamp };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as SubscribableStore } from "../subscribe-to-selector-
|
|
2
|
-
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-
|
|
1
|
+
import { t as SubscribableStore } from "../subscribe-to-selector-dQV8SpsO.js";
|
|
2
|
+
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-DJUErW-o.js";
|
|
3
3
|
export { StoreSubscriberDeps, SubscribableStore, wireStoreSubscribers };
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { createLogger } from "../utils/logger.js";
|
|
1
2
|
import { selectAlignmentMatrix, selectGpsPositions, selectOdometryPositions, selectOdometryRotations, selectZeroReference } from "./app-selectors.js";
|
|
2
|
-
import { t as buildMapData } from "../map-data-
|
|
3
|
+
import { t as buildMapData } from "../map-data-1tF5gcYV.js";
|
|
3
4
|
import { subscribeToSelector } from "./subscribe-to-selector.js";
|
|
4
5
|
import { calcGpsCoords } from "gps-plus-slam-js";
|
|
5
6
|
import { mat4, vec3 } from "gl-matrix";
|
|
6
7
|
//#region ../src/state/store-subscribers.ts
|
|
8
|
+
const log = createLogger("StoreSubscribers");
|
|
7
9
|
/**
|
|
8
10
|
* Wire store state-change subscriptions to visualization dependencies.
|
|
9
11
|
*
|
|
@@ -34,23 +36,33 @@ function wireStoreSubscribers(store, deps) {
|
|
|
34
36
|
* positions change — the change-gated subscriptions below provide the
|
|
35
37
|
* throttling, so no extra debouncing is needed. The fused path is always
|
|
36
38
|
* recomputed from the latest matrix inside `buildMapData` (D2).
|
|
39
|
+
*
|
|
40
|
+
* Returns the rendered `MapData` so the GPS subscription can center the map
|
|
41
|
+
* on the SAME coordinate the dot shows (fused when available — 2026-07-06
|
|
42
|
+
* fused-dot feedback, Slice B), or `null` when there is no overlay or it
|
|
43
|
+
* has no `render` (the minimal `setGpsPosition`-only dep shape).
|
|
37
44
|
*/
|
|
38
45
|
function rebuildMap() {
|
|
39
|
-
if (!deps.mapOverlay?.render) return;
|
|
46
|
+
if (!deps.mapOverlay?.render) return null;
|
|
40
47
|
const state = store.getState();
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
rawGpsPath,
|
|
48
|
+
const data = buildMapData({
|
|
49
|
+
rawGpsPath: selectGpsPositions(state).map((p) => ({
|
|
50
|
+
lat: p.latitude,
|
|
51
|
+
lng: p.longitude,
|
|
52
|
+
accuracy: p.latLongAccuracy
|
|
53
|
+
})),
|
|
48
54
|
odometryPositions: selectOdometryPositions(state),
|
|
49
55
|
odometryRotations: selectOdometryRotations(state),
|
|
50
56
|
alignmentMatrix: selectAlignmentMatrix(state),
|
|
51
57
|
zeroRef: selectZeroReference(state),
|
|
52
58
|
alignmentSnapshots: alignmentSnapshotGps
|
|
53
|
-
})
|
|
59
|
+
});
|
|
60
|
+
try {
|
|
61
|
+
deps.mapOverlay.render(data);
|
|
62
|
+
} catch (err) {
|
|
63
|
+
log.warn("Map overlay render failed; continuing with centering:", err);
|
|
64
|
+
}
|
|
65
|
+
return data;
|
|
54
66
|
}
|
|
55
67
|
unsubs.push(subscribeToSelector(store, selectAlignmentMatrix, (matrix) => {
|
|
56
68
|
if (!matrix) return;
|
|
@@ -102,11 +114,12 @@ function wireStoreSubscribers(store, deps) {
|
|
|
102
114
|
if (odomRot) deps.onNewOdomPose?.(odomPos, odomRot);
|
|
103
115
|
}
|
|
104
116
|
}
|
|
105
|
-
|
|
117
|
+
const mapData = rebuildMap();
|
|
118
|
+
if (deps.mapOverlay && gpsPositions.length > 0) if (mapData?.userPosition) deps.mapOverlay.setGpsPosition(mapData.userPosition.lat, mapData.userPosition.lng);
|
|
119
|
+
else {
|
|
106
120
|
const lastGpsPoint = gpsPositions[gpsPositions.length - 1];
|
|
107
121
|
deps.mapOverlay.setGpsPosition(lastGpsPoint.latitude, lastGpsPoint.longitude);
|
|
108
122
|
}
|
|
109
|
-
rebuildMap();
|
|
110
123
|
}));
|
|
111
124
|
return () => {
|
|
112
125
|
for (const unsub of unsubs) unsub();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-
|
|
1
|
+
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-dQV8SpsO.js";
|
|
2
2
|
export { SubscribableStore, subscribeToSelector };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as snapshotPushed, C as createTrackingQualityListenerMiddleware, D as resetTrackingQuality, E as reportUpdated, M as trackingQualityReducer, O as selectRecentAlignments, S as computeTrackingQualityReport, T as matrixDelta, _ as computeConvergence, b as computeGpsVsFusedDivergence, c as ConvergenceResult, d as GpsAccuracyResult, f as ResidualConsensusResult, g as TrackingQualityState, h as TrackingQualitySliceState, j as snapshotsTrimmed, k as selectTrackingQuality, l as CoverageResult, m as TrackingQualityReport, p as TrackingQualityOptions, s as AlignmentSnapshot, u as DEFAULT_TRACKING_QUALITY_OPTIONS, v as computeCoverage, w as degradedCountUpdated, x as computeResidualConsensus, y as computeGpsAccuracy } from "../create-slam-app-store-
|
|
1
|
+
import { A as snapshotPushed, C as createTrackingQualityListenerMiddleware, D as resetTrackingQuality, E as reportUpdated, M as trackingQualityReducer, O as selectRecentAlignments, S as computeTrackingQualityReport, T as matrixDelta, _ as computeConvergence, b as computeGpsVsFusedDivergence, c as ConvergenceResult, d as GpsAccuracyResult, f as ResidualConsensusResult, g as TrackingQualityState, h as TrackingQualitySliceState, j as snapshotsTrimmed, k as selectTrackingQuality, l as CoverageResult, m as TrackingQualityReport, p as TrackingQualityOptions, s as AlignmentSnapshot, u as DEFAULT_TRACKING_QUALITY_OPTIONS, v as computeCoverage, w as degradedCountUpdated, x as computeResidualConsensus, y as computeGpsAccuracy } from "../create-slam-app-store-D1QSMuKu.js";
|
|
2
2
|
export { AlignmentSnapshot, ConvergenceResult, CoverageResult, DEFAULT_TRACKING_QUALITY_OPTIONS, GpsAccuracyResult, ResidualConsensusResult, TrackingQualityOptions, TrackingQualityReport, TrackingQualitySliceState, TrackingQualityState, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeResidualConsensus, computeTrackingQualityReport, createTrackingQualityListenerMiddleware, degradedCountUpdated, matrixDelta, reportUpdated, resetTrackingQuality, selectRecentAlignments, selectTrackingQuality, snapshotPushed, snapshotsTrimmed, trackingQualityReducer };
|
|
@@ -157,11 +157,10 @@ function computeConvergence(snapshots, options = {}) {
|
|
|
157
157
|
* compute the Euclidean distance.
|
|
158
158
|
*
|
|
159
159
|
* This is the **single shared kernel** for the AppFramework reporter and
|
|
160
|
-
* the
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
* definition.
|
|
160
|
+
* the downstream corpus-analysis harness (see §11 (a) of the
|
|
161
|
+
* tracking-quality plan), which re-exports it as `computeStabilityDelta` —
|
|
162
|
+
* a thin wrapper around this function — so the §6.1 corpus sweep and the
|
|
163
|
+
* runtime convergence score share one numeric definition.
|
|
165
164
|
*/
|
|
166
165
|
function matrixDelta(prev, curr) {
|
|
167
166
|
if (prev.length !== 16 || curr.length !== 16) return {
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as getAppRootHandle, c as initOpfsStorage, d as resetSessionHandles, h as writeSessionMetadata, i as createSession, l as listSessions, n as SessionMetadata, o as getSessionHandle, r as checkStorageQuota, s as getSessionsRootHandle, u as resetOpfsStorage } from "../opfs-storage-CTkxvxN4.js";
|
|
2
2
|
import { n as StorageBackend, t as CreateSessionResult } from "../storage-backend-sEtmM4yW.js";
|
|
3
|
-
import { a as ZipActionEntry, c as
|
|
3
|
+
import { a as ZipActionEntry, c as loadActionsFromZip, d as loadSessionMetadata, f as loadSessionMetadataFromBlob, i as RecordedAction, l as loadEntriesFromSubdir, n as GpsPathCoord, p as readZipEntries, r as MAX_ACTION_FILE_SIZE, s as ZipSubdirEntry, t as Entry, u as loadGpsPathFromBlob } from "../zip-reader-BzENzMH6.js";
|
|
4
4
|
import { t as NullStorageBackend } from "../null-storage-backend-B1-jlpin.js";
|
|
5
5
|
import { t as OpfsStorageBackend } from "../opfs-storage-backend-D6Z03fML.js";
|
|
6
6
|
import { a as formatTimestamp, i as formatFrameFilename, r as formatActionFilename } from "../file-system-utils-DueXHxo9.js";
|
|
@@ -89,16 +89,21 @@ function getAppRootHandle() {
|
|
|
89
89
|
return gpsPlusSlamDir;
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
|
-
* True when
|
|
93
|
-
*
|
|
94
|
-
*
|
|
92
|
+
* True when the name `name` is already taken under `dir` (by a session
|
|
93
|
+
* directory — or by a file, which the follow-up `{ create: true }` call could
|
|
94
|
+
* not replace either). Used by {@link createSession} to avoid silently reusing
|
|
95
|
+
* a directory when two recordings start within the same (second-resolution)
|
|
96
|
+
* timestamp. Rethrows unexpected probe errors (storage failures) so the caller
|
|
97
|
+
* fails loudly instead of mislabeling the name.
|
|
95
98
|
*/
|
|
96
99
|
async function sessionDirExists(dir, name) {
|
|
97
100
|
try {
|
|
98
101
|
await dir.getDirectoryHandle(name, { create: false });
|
|
99
102
|
return true;
|
|
100
|
-
} catch {
|
|
101
|
-
return false;
|
|
103
|
+
} catch (err) {
|
|
104
|
+
if (err instanceof DOMException && err.name === "NotFoundError") return false;
|
|
105
|
+
if (err instanceof DOMException && err.name === "TypeMismatchError") return true;
|
|
106
|
+
throw err;
|
|
102
107
|
}
|
|
103
108
|
}
|
|
104
109
|
/**
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ZipActionEntry, c as
|
|
2
|
-
export { Entry, GpsPathCoord, MAX_ACTION_FILE_SIZE, RecordedAction, ZipActionEntry, ZipSubdirEntry, loadActionsFromZip, loadEntriesFromSubdir, loadGpsPathFromBlob, loadSessionMetadata, loadSessionMetadataFromBlob, readZipEntries };
|
|
1
|
+
import { a as ZipActionEntry, c as loadActionsFromZip, d as loadSessionMetadata, f as loadSessionMetadataFromBlob, i as RecordedAction, l as loadEntriesFromSubdir, m as toZipReader, n as GpsPathCoord, o as ZipSource, p as readZipEntries, r as MAX_ACTION_FILE_SIZE, s as ZipSubdirEntry, t as Entry, u as loadGpsPathFromBlob } from "../zip-reader-BzENzMH6.js";
|
|
2
|
+
export { Entry, GpsPathCoord, MAX_ACTION_FILE_SIZE, RecordedAction, ZipActionEntry, ZipSource, ZipSubdirEntry, loadActionsFromZip, loadEntriesFromSubdir, loadGpsPathFromBlob, loadSessionMetadata, loadSessionMetadataFromBlob, readZipEntries, toZipReader };
|
|
@@ -18,6 +18,19 @@ import { BlobReader, TextWriter, Uint8ArrayReader, ZipReader } from "@zip.js/zip
|
|
|
18
18
|
*/
|
|
19
19
|
const log = createLogger("ZipReader");
|
|
20
20
|
/**
|
|
21
|
+
* Wrap a {@link ZipSource} in a fresh zip.js ZipReader.
|
|
22
|
+
*
|
|
23
|
+
* Exported deliberately: consumers outside this workspace resolve this
|
|
24
|
+
* module from the published dist at runtime and probe
|
|
25
|
+
* `typeof toZipReader === 'function'` as the capability marker for lazy
|
|
26
|
+
* Reader support before passing anything other than Uint8Array (older
|
|
27
|
+
* published versions accept only Uint8Array). Do not rename or remove
|
|
28
|
+
* without treating it as a breaking API change.
|
|
29
|
+
*/
|
|
30
|
+
function toZipReader(source) {
|
|
31
|
+
return new ZipReader(source instanceof Uint8Array ? new Uint8ArrayReader(source) : source);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
21
34
|
* Maximum allowed uncompressed size (in bytes) for a single action or
|
|
22
35
|
* metadata JSON file inside a recording zip. Entries exceeding this limit
|
|
23
36
|
* are rejected before decompression to prevent out-of-memory conditions
|
|
@@ -29,11 +42,11 @@ const MAX_ACTION_FILE_SIZE = 1048576;
|
|
|
29
42
|
/**
|
|
30
43
|
* Read all entries from a zip file.
|
|
31
44
|
*
|
|
32
|
-
* @param data - The zip
|
|
45
|
+
* @param data - The zip content as a Uint8Array, or a zip.js Reader for lazy access
|
|
33
46
|
* @returns Array of zip entries (directories and files)
|
|
34
47
|
*/
|
|
35
48
|
async function readZipEntries(data) {
|
|
36
|
-
const reader =
|
|
49
|
+
const reader = toZipReader(data);
|
|
37
50
|
try {
|
|
38
51
|
return await reader.getEntries();
|
|
39
52
|
} finally {
|
|
@@ -57,7 +70,7 @@ function extractActionIndex(filename) {
|
|
|
57
70
|
* Filters for JSON files in the actions/ directory, parses them, and returns
|
|
58
71
|
* them sorted by their filename index (chronological order for replay).
|
|
59
72
|
*
|
|
60
|
-
* @param data - The zip
|
|
73
|
+
* @param data - The zip content as a Uint8Array, or a zip.js Reader for lazy access
|
|
61
74
|
* @param maxFileSize - Maximum allowed uncompressed size per entry (defaults to MAX_ACTION_FILE_SIZE)
|
|
62
75
|
* @returns Array of action entries sorted by index
|
|
63
76
|
*/
|
|
@@ -116,12 +129,12 @@ async function extractSessionMetadataFromReader(reader, maxFileSize) {
|
|
|
116
129
|
* Returns null if session.json is absent (graceful degradation for
|
|
117
130
|
* recordings created before the metadata writing bug was fixed).
|
|
118
131
|
*
|
|
119
|
-
* @param data - The zip
|
|
132
|
+
* @param data - The zip content as a Uint8Array, or a zip.js Reader for lazy access
|
|
120
133
|
* @param maxFileSize - Maximum allowed uncompressed size per entry (defaults to MAX_ACTION_FILE_SIZE)
|
|
121
134
|
* @returns Parsed session metadata, or null if not found
|
|
122
135
|
*/
|
|
123
136
|
async function loadSessionMetadata(data, maxFileSize = MAX_ACTION_FILE_SIZE) {
|
|
124
|
-
return extractSessionMetadataFromReader(
|
|
137
|
+
return extractSessionMetadataFromReader(toZipReader(data), maxFileSize);
|
|
125
138
|
}
|
|
126
139
|
/**
|
|
127
140
|
* Load session metadata from session.json in a zip file provided as a Blob.
|
|
@@ -200,7 +213,7 @@ async function loadGpsPathFromBlob(blob, maxFileSize = MAX_ACTION_FILE_SIZE) {
|
|
|
200
213
|
* `relativePath` for deterministic iteration. Returns an empty array when
|
|
201
214
|
* the subdir is absent (graceful degradation for older zips).
|
|
202
215
|
*
|
|
203
|
-
* @param data - The zip
|
|
216
|
+
* @param data - The zip content as a Uint8Array, or a zip.js Reader for lazy access
|
|
204
217
|
* @param subdir - Top-level subdir to scan (no leading or trailing `/`)
|
|
205
218
|
*/
|
|
206
219
|
async function loadEntriesFromSubdir(data, subdir) {
|
|
@@ -214,4 +227,4 @@ async function loadEntriesFromSubdir(data, subdir) {
|
|
|
214
227
|
}));
|
|
215
228
|
}
|
|
216
229
|
//#endregion
|
|
217
|
-
export { MAX_ACTION_FILE_SIZE, loadActionsFromZip, loadEntriesFromSubdir, loadGpsPathFromBlob, loadSessionMetadata, loadSessionMetadataFromBlob, readZipEntries };
|
|
230
|
+
export { MAX_ACTION_FILE_SIZE, 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-CUnTzRIC.js";
|
|
2
|
+
import { t as SubscribableStore } from "./subscribe-to-selector-dQV8SpsO.js";
|
|
3
3
|
import { LatLong, Matrix4, Quaternion, Vector3 } from "gps-plus-slam-js";
|
|
4
4
|
|
|
5
5
|
//#region ../src/state/store-subscribers.d.ts
|
|
@@ -24,7 +24,10 @@ interface StoreSubscriberDeps {
|
|
|
24
24
|
* Map overlay — renders the shared trajectory snapshot. Nullable (not
|
|
25
25
|
* present in all modes).
|
|
26
26
|
*
|
|
27
|
-
* `setGpsPosition` centers the map on the
|
|
27
|
+
* `setGpsPosition` centers the map on the same coordinate the blue dot
|
|
28
|
+
* shows — the rebuilt `MapData.userPosition` (fused tip when aligned, raw
|
|
29
|
+
* fix before the first solve; raw also for a render-less overlay, which
|
|
30
|
+
* has no rebuilt snapshot to follow); `render` draws the
|
|
28
31
|
* full {@link MapData} snapshot (raw GPS + accuracy circles, fused path,
|
|
29
32
|
* alignment snapshots, user dot) via the shared `drawMapData` routine — the
|
|
30
33
|
* SAME one the 2D session-summary map uses, so the live and summary maps
|
|
@@ -424,6 +424,7 @@ var MockOPFSDirectoryHandle = class MockOPFSDirectoryHandle {
|
|
|
424
424
|
getDirectoryHandle(name, options) {
|
|
425
425
|
const handle = this.contents.get(name);
|
|
426
426
|
if (handle && handle.kind === "directory") return Promise.resolve(handle);
|
|
427
|
+
if (handle) return Promise.reject(new DOMException(`${name} is not a directory`, "TypeMismatchError"));
|
|
427
428
|
if (options?.create) {
|
|
428
429
|
const newHandle = new MockOPFSDirectoryHandle(name);
|
|
429
430
|
this.contents.set(name, newHandle);
|
|
@@ -434,6 +435,7 @@ var MockOPFSDirectoryHandle = class MockOPFSDirectoryHandle {
|
|
|
434
435
|
getFileHandle(name, options) {
|
|
435
436
|
const handle = this.contents.get(name);
|
|
436
437
|
if (handle && handle.kind === "file") return Promise.resolve(handle);
|
|
438
|
+
if (handle) return Promise.reject(new DOMException(`${name} is not a file`, "TypeMismatchError"));
|
|
437
439
|
if (options?.create) {
|
|
438
440
|
const newHandle = new MockOPFSFileHandle(name, this, name);
|
|
439
441
|
this.contents.set(name, newHandle);
|
|
@@ -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-Cfg0trC3.js";
|
|
2
2
|
export { ArWorldGroupAlignmentHandle, ArWorldGroupAlignmentOptions, enableArWorldGroupAlignment };
|
|
@@ -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-DDcNHkTb.js";
|
|
2
2
|
export { nueToArLocal, worldNueToGps };
|
|
@@ -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-CEjGqEVD.js";
|
|
2
2
|
export { GpsAnchor, GpsAnchorMode, GpsAnchorOptions, GpsAnchorPhase, GpsAnchorSamplePoint, createGpsAnchor };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { n as createCss3dRendererManager, t as Css3dRendererManager } from "../css3d-renderer-manager-CPpVtvgs.js";
|
|
2
2
|
import { n as createCameraFollower, t as CameraFollower } from "../camera-follower-DfBm2J5i.js";
|
|
3
3
|
import { n as createAlignmentLerper, t as AlignmentLerper } from "../alignment-lerper-gD70k7Fq.js";
|
|
4
|
-
import { n as MapDataInput, r as buildMapData, t as MapData } from "../map-data-
|
|
5
|
-
import { n as ArWorldGroupAlignmentOptions, r as enableArWorldGroupAlignment, t as ArWorldGroupAlignmentHandle } from "../ar-world-group-alignment-
|
|
4
|
+
import { n as MapDataInput, r as buildMapData, t as MapData } from "../map-data-CUnTzRIC.js";
|
|
5
|
+
import { n as ArWorldGroupAlignmentOptions, r as enableArWorldGroupAlignment, t as ArWorldGroupAlignmentHandle } from "../ar-world-group-alignment-Cfg0trC3.js";
|
|
6
6
|
import { i as createGpsCompassCubes, n as COMPASS_CUBE_SIZE, r as GpsCompassCubes, t as COMPASS_CUBE_DISTANCE } from "../gps-compass-cubes-1mooS3BS.js";
|
|
7
7
|
import { i as isSphereInCameraFrustum, n as isObjectInCameraFrustum, r as isPointInCameraFrustum, t as buildCameraFrustum } from "../frustum-visibility-CokkgS_i.js";
|
|
8
|
-
import { n as worldNueToGps, t as nueToArLocal } from "../frame-conversions-
|
|
8
|
+
import { n as worldNueToGps, t as nueToArLocal } from "../frame-conversions-DDcNHkTb.js";
|
|
9
9
|
import { n as createReticleMesh, r as updateReticle, t as HitMatrix } from "../hit-test-reticle-CaQbrhbk.js";
|
|
10
|
-
import { a as GpsAnchorSamplePoint, i as GpsAnchorPhase, n as GpsAnchorMode, o as createGpsAnchor, r as GpsAnchorOptions, t as GpsAnchor } from "../gps-anchor-
|
|
10
|
+
import { a as GpsAnchorSamplePoint, i as GpsAnchorPhase, n as GpsAnchorMode, o as createGpsAnchor, r as GpsAnchorOptions, t as GpsAnchor } from "../gps-anchor-CEjGqEVD.js";
|
|
11
11
|
import { n as GpsEventVisualizer, r as gpsEventVisualizer } from "../gps-event-markers-Di2nBzx-.js";
|
|
12
|
-
import { n as OcclusionMesh, r as OcclusionMeshOptions } from "../occlusion-mesh-
|
|
13
|
-
import { a as DEFAULT_Z_OFFSET, n as DEFAULT_LEAFLET_MAP_SIZE_PX, o as LeafletMapOverlay, r as DEFAULT_WORLD_SIZE, s as LeafletMapOverlayOptions } from "../leaflet-map-overlay-
|
|
12
|
+
import { n as OcclusionMesh, r as OcclusionMeshOptions } from "../occlusion-mesh-kXCQ2FM1.js";
|
|
13
|
+
import { a as DEFAULT_Z_OFFSET, n as DEFAULT_LEAFLET_MAP_SIZE_PX, o as LeafletMapOverlay, r as DEFAULT_WORLD_SIZE, s as LeafletMapOverlayOptions } from "../leaflet-map-overlay-C8GS4cUy.js";
|
|
14
14
|
import { n as clampedAlpha, t as DEFAULT_LERP_RATE } from "../lerp-utils-Qs8OhumS.js";
|
|
15
15
|
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-DkWBkF5g.js";
|
|
16
|
-
import { a as MAP_PATH_POLYLINE_OPACITY, c as USER_POSITION_COLOR, i as FUSED_PATH_COLOR, l as drawMapData, n as DrawMapDataOptions, o as MAP_PATH_POLYLINE_WEIGHT, r as DrawnMapData, s as RAW_GPS_COLOR, t as ALIGNMENT_SNAPSHOT_COLOR } from "../map-overlay-draw-
|
|
16
|
+
import { a as MAP_PATH_POLYLINE_OPACITY, c as USER_POSITION_COLOR, i as FUSED_PATH_COLOR, l as drawMapData, n as DrawMapDataOptions, o as MAP_PATH_POLYLINE_WEIGHT, r as DrawnMapData, s as RAW_GPS_COLOR, t as ALIGNMENT_SNAPSHOT_COLOR } from "../map-overlay-draw-6WJeq0Kg.js";
|
|
17
17
|
import { a as MapOverlayOptions, c as tileXYToLatLon, i as MapOverlay, n as DEFAULT_MAP_SIZE, o as TextureLoaderInterface, r as DEFAULT_ZOOM, s as latLonToTileXY, t as DEFAULT_HEIGHT_OFFSET } from "../map-overlay-BCQgvIgU.js";
|
|
18
18
|
import { n as disposeMeshArray, r as disposeObject3D, t as DisposeOptions } from "../three-dispose-BMOAmPhb.js";
|
|
19
19
|
import { t as VIS_COLORS } from "../vis-colors-C7HI0u9_.js";
|
|
@@ -5,7 +5,7 @@ import { createCameraFollower } from "./camera-follower.js";
|
|
|
5
5
|
import { createAlignmentLerper } from "./alignment-lerper.js";
|
|
6
6
|
import { VIS_COLORS } from "./vis-colors.js";
|
|
7
7
|
import { COMPASS_CUBE_DISTANCE, COMPASS_CUBE_SIZE, createGpsCompassCubes } from "./gps-compass-cubes.js";
|
|
8
|
-
import { t as buildMapData } from "../map-data-
|
|
8
|
+
import { t as buildMapData } from "../map-data-1tF5gcYV.js";
|
|
9
9
|
import { enableArWorldGroupAlignment } from "./ar-world-group-alignment.js";
|
|
10
10
|
import { buildCameraFrustum, isObjectInCameraFrustum, isPointInCameraFrustum, isSphereInCameraFrustum } from "./frustum-visibility.js";
|
|
11
11
|
import { nueToArLocal, worldNueToGps } from "./frame-conversions.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as DEFAULT_Z_OFFSET, i as DEFAULT_ZOOM, n as DEFAULT_LEAFLET_MAP_SIZE_PX, o as LeafletMapOverlay, r as DEFAULT_WORLD_SIZE, s as LeafletMapOverlayOptions, t as DEFAULT_HEIGHT_OFFSET } from "../leaflet-map-overlay-
|
|
1
|
+
import { a as DEFAULT_Z_OFFSET, i as DEFAULT_ZOOM, n as DEFAULT_LEAFLET_MAP_SIZE_PX, o as LeafletMapOverlay, r as DEFAULT_WORLD_SIZE, s as LeafletMapOverlayOptions, t as DEFAULT_HEIGHT_OFFSET } from "../leaflet-map-overlay-C8GS4cUy.js";
|
|
2
2
|
export { DEFAULT_HEIGHT_OFFSET, DEFAULT_LEAFLET_MAP_SIZE_PX, DEFAULT_WORLD_SIZE, DEFAULT_ZOOM, DEFAULT_Z_OFFSET, LeafletMapOverlay, LeafletMapOverlayOptions };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as MapDataInput, r as buildMapData, t as MapData } from "../map-data-
|
|
1
|
+
import { n as MapDataInput, r as buildMapData, t as MapData } from "../map-data-CUnTzRIC.js";
|
|
2
2
|
export { MapData, MapDataInput, buildMapData };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as buildMapData } from "../map-data-
|
|
1
|
+
import { t as buildMapData } from "../map-data-1tF5gcYV.js";
|
|
2
2
|
export { buildMapData };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as MAP_PATH_POLYLINE_OPACITY, c as USER_POSITION_COLOR, i as FUSED_PATH_COLOR, l as drawMapData, n as DrawMapDataOptions, o as MAP_PATH_POLYLINE_WEIGHT, r as DrawnMapData, s as RAW_GPS_COLOR, t as ALIGNMENT_SNAPSHOT_COLOR } from "../map-overlay-draw-
|
|
1
|
+
import { a as MAP_PATH_POLYLINE_OPACITY, c as USER_POSITION_COLOR, i as FUSED_PATH_COLOR, l as drawMapData, n as DrawMapDataOptions, o as MAP_PATH_POLYLINE_WEIGHT, r as DrawnMapData, s as RAW_GPS_COLOR, t as ALIGNMENT_SNAPSHOT_COLOR } from "../map-overlay-draw-6WJeq0Kg.js";
|
|
2
2
|
export { ALIGNMENT_SNAPSHOT_COLOR, DrawMapDataOptions, DrawnMapData, FUSED_PATH_COLOR, MAP_PATH_POLYLINE_OPACITY, MAP_PATH_POLYLINE_WEIGHT, RAW_GPS_COLOR, USER_POSITION_COLOR, drawMapData };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as occluderDepthFade, i as buildOccluderDepthShadeSnippet, n as OcclusionMesh, o as occluderFresnelRim, r as OcclusionMeshOptions, t as OCCLUDER_DEPTH_SHADE } from "../occlusion-mesh-
|
|
1
|
+
import { a as occluderDepthFade, i as buildOccluderDepthShadeSnippet, n as OcclusionMesh, o as occluderFresnelRim, r as OcclusionMeshOptions, t as OCCLUDER_DEPTH_SHADE } from "../occlusion-mesh-kXCQ2FM1.js";
|
|
2
2
|
export { OCCLUDER_DEPTH_SHADE, OcclusionMesh, OcclusionMeshOptions, buildOccluderDepthShadeSnippet, occluderDepthFade, occluderFresnelRim };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as DepthSample, t as ARPose } from "./ar-types-Cc5yvBwn.js";
|
|
2
2
|
import { i as DepthSamplerConfig, t as DepthInfo } from "./depth-sampler-CwObAwEA.js";
|
|
3
|
-
import { t as ArCrashIsolationOptions } from "./recording-options-
|
|
3
|
+
import { t as ArCrashIsolationOptions } from "./recording-options-DYKWVI93.js";
|
|
4
4
|
import { i as FrameQualityVerdict, n as CapturedImage, o as ImageCaptureConfig, t as CapturedFrame } from "./image-capture-Bp6Pd4Md.js";
|
|
5
5
|
import { a as TrackingSliceState, r as ResetTransformData } from "./tracking-slice-DMkHlbny.js";
|
|
6
6
|
import { o as RgbaImage } from "./qr-frontend-BPURlh3S.js";
|
|
@@ -1,6 +1,32 @@
|
|
|
1
|
-
import { Entry, Entry as Entry$1 } from "@zip.js/zip.js";
|
|
1
|
+
import { Entry, Entry as Entry$1, Reader, ZipReader } from "@zip.js/zip.js";
|
|
2
2
|
|
|
3
3
|
//#region ../src/storage/zip-reader.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Input accepted by the zip-reading helpers: either the full zip bytes
|
|
6
|
+
* (the original behavior) or any zip.js {@link Reader} — e.g. a ranged
|
|
7
|
+
* reader over a file descriptor — so callers scanning many large archives
|
|
8
|
+
* can read only the central directory + the entries they open instead of
|
|
9
|
+
* loading whole files into memory.
|
|
10
|
+
*
|
|
11
|
+
* Reader contract: a single Reader instance may back several helper calls
|
|
12
|
+
* concurrently (see `loadRecording` in gps-plus-slam-recorder, which fans
|
|
13
|
+
* out over three helpers via Promise.all), so `init()` must be idempotent
|
|
14
|
+
* and `readUint8Array(index, length)` must support interleaved ranged reads.
|
|
15
|
+
* The caller owns the underlying resource lifecycle (helpers close their
|
|
16
|
+
* ZipReader wrappers, never the Reader's resource).
|
|
17
|
+
*/
|
|
18
|
+
type ZipSource = Uint8Array | Reader<unknown>;
|
|
19
|
+
/**
|
|
20
|
+
* Wrap a {@link ZipSource} in a fresh zip.js ZipReader.
|
|
21
|
+
*
|
|
22
|
+
* Exported deliberately: consumers outside this workspace resolve this
|
|
23
|
+
* module from the published dist at runtime and probe
|
|
24
|
+
* `typeof toZipReader === 'function'` as the capability marker for lazy
|
|
25
|
+
* Reader support before passing anything other than Uint8Array (older
|
|
26
|
+
* published versions accept only Uint8Array). Do not rename or remove
|
|
27
|
+
* without treating it as a breaking API change.
|
|
28
|
+
*/
|
|
29
|
+
declare function toZipReader(source: ZipSource): ZipReader<unknown>;
|
|
4
30
|
/**
|
|
5
31
|
* Maximum allowed uncompressed size (in bytes) for a single action or
|
|
6
32
|
* metadata JSON file inside a recording zip. Entries exceeding this limit
|
|
@@ -29,32 +55,32 @@ interface ZipActionEntry {
|
|
|
29
55
|
/**
|
|
30
56
|
* Read all entries from a zip file.
|
|
31
57
|
*
|
|
32
|
-
* @param data - The zip
|
|
58
|
+
* @param data - The zip content as a Uint8Array, or a zip.js Reader for lazy access
|
|
33
59
|
* @returns Array of zip entries (directories and files)
|
|
34
60
|
*/
|
|
35
|
-
declare function readZipEntries(data:
|
|
61
|
+
declare function readZipEntries(data: ZipSource): Promise<Entry[]>;
|
|
36
62
|
/**
|
|
37
63
|
* Load all recorded Redux actions from a zip file.
|
|
38
64
|
*
|
|
39
65
|
* Filters for JSON files in the actions/ directory, parses them, and returns
|
|
40
66
|
* them sorted by their filename index (chronological order for replay).
|
|
41
67
|
*
|
|
42
|
-
* @param data - The zip
|
|
68
|
+
* @param data - The zip content as a Uint8Array, or a zip.js Reader for lazy access
|
|
43
69
|
* @param maxFileSize - Maximum allowed uncompressed size per entry (defaults to MAX_ACTION_FILE_SIZE)
|
|
44
70
|
* @returns Array of action entries sorted by index
|
|
45
71
|
*/
|
|
46
|
-
declare function loadActionsFromZip(data:
|
|
72
|
+
declare function loadActionsFromZip(data: ZipSource, maxFileSize?: number): Promise<ZipActionEntry[]>;
|
|
47
73
|
/**
|
|
48
74
|
* Load session metadata from session.json in the zip file.
|
|
49
75
|
*
|
|
50
76
|
* Returns null if session.json is absent (graceful degradation for
|
|
51
77
|
* recordings created before the metadata writing bug was fixed).
|
|
52
78
|
*
|
|
53
|
-
* @param data - The zip
|
|
79
|
+
* @param data - The zip content as a Uint8Array, or a zip.js Reader for lazy access
|
|
54
80
|
* @param maxFileSize - Maximum allowed uncompressed size per entry (defaults to MAX_ACTION_FILE_SIZE)
|
|
55
81
|
* @returns Parsed session metadata, or null if not found
|
|
56
82
|
*/
|
|
57
|
-
declare function loadSessionMetadata(data:
|
|
83
|
+
declare function loadSessionMetadata(data: ZipSource, maxFileSize?: number): Promise<Record<string, unknown> | null>;
|
|
58
84
|
/**
|
|
59
85
|
* Load session metadata from session.json in a zip file provided as a Blob.
|
|
60
86
|
*
|
|
@@ -126,9 +152,9 @@ interface ZipSubdirEntry {
|
|
|
126
152
|
* `relativePath` for deterministic iteration. Returns an empty array when
|
|
127
153
|
* the subdir is absent (graceful degradation for older zips).
|
|
128
154
|
*
|
|
129
|
-
* @param data - The zip
|
|
155
|
+
* @param data - The zip content as a Uint8Array, or a zip.js Reader for lazy access
|
|
130
156
|
* @param subdir - Top-level subdir to scan (no leading or trailing `/`)
|
|
131
157
|
*/
|
|
132
|
-
declare function loadEntriesFromSubdir(data:
|
|
158
|
+
declare function loadEntriesFromSubdir(data: ZipSource, subdir: string): Promise<ZipSubdirEntry[]>;
|
|
133
159
|
//#endregion
|
|
134
|
-
export { ZipActionEntry as a,
|
|
160
|
+
export { ZipActionEntry as a, loadActionsFromZip as c, loadSessionMetadata as d, loadSessionMetadataFromBlob as f, RecordedAction as i, loadEntriesFromSubdir as l, toZipReader as m, GpsPathCoord as n, ZipSource as o, readZipEntries as p, MAX_ACTION_FILE_SIZE as r, ZipSubdirEntry as s, Entry$1 as t, loadGpsPathFromBlob as u };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gps-plus-slam-app-framework",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"description": "Reusable AR+GPS app framework layer — WebXR session management, Three.js visualization, GPS sensors, storage abstractions, replay engine, and store wiring for gps-plus-slam-js.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
},
|
|
32
32
|
"types": "./dist/index.d.ts",
|
|
33
33
|
"engines": {
|
|
34
|
-
"node": ">=
|
|
34
|
+
"node": ">=22.14.0"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@reduxjs/toolkit": "^2.11.2",
|
|
38
38
|
"gl-matrix": "3.4.4",
|
|
39
|
-
"gps-plus-slam-js": "^1.
|
|
39
|
+
"gps-plus-slam-js": "^1.9.1"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"@sentry/browser": ">=10.0.0",
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
"@sentry/browser": "^10.53.1",
|
|
59
59
|
"@types/leaflet": "^1.9.21",
|
|
60
60
|
"@types/node": "^25.7.0",
|
|
61
|
+
"@types/qrcode": "^1.5.6",
|
|
61
62
|
"@types/three": "^0.184.1",
|
|
62
63
|
"@vitest/coverage-v8": "^4.1.6",
|
|
63
64
|
"@vitest/eslint-plugin": "^1.6.17",
|
|
@@ -71,6 +72,7 @@
|
|
|
71
72
|
"jsdom": "^29.1.1",
|
|
72
73
|
"leaflet": "^1.9.4",
|
|
73
74
|
"prettier": "^3.8.3",
|
|
75
|
+
"qrcode": "^1.5.4",
|
|
74
76
|
"three": "^0.184.0",
|
|
75
77
|
"tsdown": "^0.22.0",
|
|
76
78
|
"typescript": "^6.0.3",
|
|
@@ -109,6 +111,8 @@
|
|
|
109
111
|
"typecheck:tests": "tsc -p tsconfig.vitest.json --noEmit",
|
|
110
112
|
"lint": "eslint . --config config/eslint.config.mjs --max-warnings 37",
|
|
111
113
|
"test:watch": "vitest --config config/vitest.config.ts",
|
|
114
|
+
"bench": "vitest bench --run --config config/vitest.bench.config.ts",
|
|
115
|
+
"bench:watch": "vitest bench --config config/vitest.bench.config.ts",
|
|
112
116
|
"check:cycles": "dpdm -T --exit-code circular:1 --no-warning --no-tree ./src/index.ts",
|
|
113
117
|
"setup": "bash ./scripts/setup.sh"
|
|
114
118
|
}
|
package/dist/index-D4vrgV4b.d.ts
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { ArImageCapture as ArImageCapture$1, GpsPoint as GpsPoint$1, LatLong as LatLong$1, LatLongAlt, Matrix4 as Matrix4$1, Quaternion as Quaternion$1, RootState as LibraryRootState, RootState as RootState$1, Vector3 as Vector3$1, arNorthBearingDeg, bearingDeltaDeg, calcGpsCoords as calcGpsCoords$1, calcRelativeCoordsInMeters, createGpsSlamStore, isIdentityMatrix4, magneticHeadingFromEnuQuat, odometryTrackingRestarted, validateLicenseKey as validateLicenseKey$1, webxrToNUE } from "gps-plus-slam-js";
|
|
2
|
-
export { odometryTrackingRestarted as _, LibraryRootState as a, RootState$1 as c, bearingDeltaDeg as d, calcGpsCoords$1 as f, magneticHeadingFromEnuQuat as g, isIdentityMatrix4 as h, LatLongAlt as i, Vector3$1 as l, createGpsSlamStore as m, GpsPoint$1 as n, Matrix4$1 as o, calcRelativeCoordsInMeters as p, LatLong$1 as r, Quaternion$1 as s, ArImageCapture$1 as t, arNorthBearingDeg as u, validateLicenseKey$1 as v, webxrToNUE as y };
|