gps-plus-slam-app-framework 1.4.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/absolute-orientation-CAEh840t.d.ts +54 -0
  2. package/dist/{app-selectors-CrOucL00.d.ts → app-selectors-ikTUQZpe.d.ts} +1 -1
  3. package/dist/ar/bresenham3d.d.ts +1 -1
  4. package/dist/ar/camera-blit-capture.d.ts +1 -1
  5. package/dist/ar/capability-checker.d.ts +1 -1
  6. package/dist/ar/capture-failure-tracker.d.ts +1 -1
  7. package/dist/ar/chromium-camera-access-workaround.d.ts +1 -1
  8. package/dist/ar/depth-grid-lookup.d.ts +1 -1
  9. package/dist/ar/depth-sampler.d.ts +2 -2
  10. package/dist/ar/depth-unprojection.d.ts +1 -1
  11. package/dist/ar/enable-gps-ar.d.ts +1 -1
  12. package/dist/ar/enable-gps-ar.js +1 -1
  13. package/dist/ar/frame-loop.d.ts +1 -1
  14. package/dist/ar/image-capture.d.ts +2 -2
  15. package/dist/ar/image-capture.js +1 -154
  16. package/dist/ar/image-quality.d.ts +2 -0
  17. package/dist/ar/image-quality.js +168 -0
  18. package/dist/ar/index.d.ts +31 -30
  19. package/dist/ar/index.js +6 -5
  20. package/dist/ar/occupancy-grid.d.ts +1 -1
  21. package/dist/ar/planar-pnp.d.ts +1 -1
  22. package/dist/ar/qr-debug-view.d.ts +1 -1
  23. package/dist/ar/qr-derived-pose.d.ts +1 -1
  24. package/dist/ar/qr-detection-controller.d.ts +1 -1
  25. package/dist/ar/qr-frontend.d.ts +1 -1
  26. package/dist/ar/qr-pose.d.ts +1 -1
  27. package/dist/ar/qr-size-depth-context.d.ts +2 -2
  28. package/dist/ar/qr-size-measurer.d.ts +1 -1
  29. package/dist/ar/replay-scene.d.ts +1 -1
  30. package/dist/ar/replay-scene.js +1 -1
  31. package/dist/ar/scene-node-names.d.ts +1 -1
  32. package/dist/ar/webxr-nue-basis.d.ts +1 -1
  33. package/dist/ar/webxr-session.d.ts +4 -4
  34. package/dist/ar/webxr-session.js +2 -2
  35. package/dist/ar/xr-camera-texture.d.ts +1 -1
  36. package/dist/ar/xr-error-handler.d.ts +1 -1
  37. package/dist/ar/xr-frame-loop.d.ts +1 -1
  38. package/dist/{ar-Dc72Ksiu.js → ar-MFpFlV7j.js} +3 -3
  39. package/dist/{ar-world-group-alignment-DDLkgNf_.d.ts → ar-world-group-alignment-69fgnB39.d.ts} +1 -1
  40. package/dist/capture-motion-gate-0Yl2NpQG.d.ts +24 -0
  41. package/dist/capture-motion-gate-4EscNZCw.js +94 -0
  42. package/dist/core/index.d.ts +2 -2
  43. package/dist/core/index.js +2 -2
  44. package/dist/create-slam-app-store-DkCHOpvb.js +149 -0
  45. package/dist/{create-slam-app-store-Ce2FMKCp.d.ts → create-slam-app-store-n_VF63D5.d.ts} +50 -40
  46. package/dist/{depth-grid-lookup-vMDrGTk_.d.ts → depth-grid-lookup-DQ-IYhO3.d.ts} +1 -1
  47. package/dist/{depth-sampler-DwfPYzS7.d.ts → depth-sampler-asc8exHt.d.ts} +1 -1
  48. package/dist/{depth-unprojection-CK3b9htH.d.ts → depth-unprojection-DjsbJW9L.d.ts} +1 -1
  49. package/dist/{enable-gps-ar-CjZ1nEdu.d.ts → enable-gps-ar-DkNhFv4Y.d.ts} +4 -4
  50. package/dist/{frame-conversions-D_Af8Dt3.d.ts → frame-conversions-DObhj8Wf.d.ts} +1 -1
  51. package/dist/{fused-path-C0FHe67t.d.ts → fused-path-v6eOmLl3.d.ts} +1 -1
  52. package/dist/geo/h3-proximity.d.ts +1 -1
  53. package/dist/geo/index.d.ts +1 -1
  54. package/dist/geodesic-angle-BTldfFgs.js +39 -0
  55. package/dist/{gps-anchor-C6I9NDHA.d.ts → gps-anchor-BeFO2RYa.d.ts} +1 -1
  56. package/dist/{gps-ar-pose-sampler-DaHg2aPZ.d.ts → gps-ar-pose-sampler-DHMZmYAc.d.ts} +1 -1
  57. package/dist/{gps-event-coordinator-C7hwHyLA.d.ts → gps-event-coordinator-CjWW636x.d.ts} +21 -11
  58. package/dist/image-capture-B2-b6tKK.js +374 -0
  59. package/dist/{image-capture-C2Feywet.d.ts → image-capture-CNZDrQXG.d.ts} +103 -3
  60. package/dist/image-quality-smCBoFj1.d.ts +158 -0
  61. package/dist/index-BAPokxMb.d.ts +22 -0
  62. package/dist/{index-m_LneUSi.d.ts → index-BODDUTvD.d.ts} +1 -1
  63. package/dist/{index-BvLo2poy.d.ts → index-BneSj4_5.d.ts} +3 -3
  64. package/dist/index-_Rhgoqkh.d.ts +2 -0
  65. package/dist/index.d.ts +80 -77
  66. package/dist/index.js +11 -8
  67. package/dist/{leaflet-map-overlay-bnb2U1NQ.d.ts → leaflet-map-overlay-CmIyiE8n.d.ts} +1 -1
  68. package/dist/{map-data-DdjPiSav.d.ts → map-data-B4oEehUh.d.ts} +1 -1
  69. package/dist/{map-overlay-draw-CPVdAsFq.d.ts → map-overlay-draw-ymz1s7fG.d.ts} +1 -1
  70. package/dist/{null-storage-backend-CuSdYFsM.d.ts → null-storage-backend-B9rtyDfG.d.ts} +2 -2
  71. package/dist/{occupancy-grid-Bvi2Gw1U.d.ts → occupancy-grid-DnOc-6PU.d.ts} +2 -2
  72. package/dist/{opfs-storage-backend-CeQAb0SD.d.ts → opfs-storage-backend-JJiUJo-3.d.ts} +2 -2
  73. package/dist/{persistence-middleware-5eearhSV.d.ts → persistence-middleware-DAPTTwB2.d.ts} +1 -1
  74. package/dist/{planar-pnp-cjthe7Be.d.ts → planar-pnp-my9bqULS.d.ts} +1 -1
  75. package/dist/{qr-debug-view-B8gTzjMm.d.ts → qr-debug-view-Brl73HGO.d.ts} +1 -1
  76. package/dist/{qr-derived-pose-DinKE600.d.ts → qr-derived-pose-CmxTP2m4.d.ts} +2 -2
  77. package/dist/{qr-detected-slice-Cpv-dg82.d.ts → qr-detected-slice-VQssZmQJ.d.ts} +4 -4
  78. package/dist/{qr-detection-controller-Cd2Ih4cC.d.ts → qr-detection-controller-CDurHv8E.d.ts} +3 -3
  79. package/dist/{qr-frontend-DufZp2xS.d.ts → qr-frontend--fFX25mV.d.ts} +1 -1
  80. package/dist/{qr-pose-aggregation-CFlmLm6w.d.ts → qr-pose-aggregation-B7tWJq7j.d.ts} +1 -1
  81. package/dist/{qr-pose-aggregation-DXR9STHs.js → qr-pose-aggregation-DBiaLW0O.js} +1 -10
  82. package/dist/{qr-size-depth-context-onu36E9s.d.ts → qr-size-depth-context-CeAG53fy.d.ts} +2 -2
  83. package/dist/{qr-size-measurer-D7739ZpB.d.ts → qr-size-measurer-DQdAsid1.d.ts} +3 -3
  84. package/dist/{recording-options-D93kksJU.d.ts → recording-options-BPCpMHLK.d.ts} +154 -9
  85. package/dist/{recording-replayer-CUEK82tM.d.ts → recording-replayer-DQKpAGyQ.d.ts} +2 -2
  86. package/dist/{recording-slice-B-uCgGoh.d.ts → recording-slice-DaxHZvNu.d.ts} +2 -2
  87. package/dist/{replay-engine-BSVd7Zzb.d.ts → replay-engine-CmKh_4wf.d.ts} +1 -1
  88. package/dist/{replay-scene-CPt56pps.d.ts → replay-scene-DBlDrV_x.d.ts} +3 -3
  89. package/dist/sensors/absolute-orientation.d.ts +2 -0
  90. package/dist/sensors/absolute-orientation.js +145 -0
  91. package/dist/sensors/gps-error-handler.d.ts +1 -1
  92. package/dist/sensors/gps.d.ts +1 -1
  93. package/dist/sensors/index.d.ts +5 -4
  94. package/dist/sensors/index.js +2 -1
  95. package/dist/sensors/permission-checker.d.ts +1 -1
  96. package/dist/state/app-selectors.d.ts +1 -1
  97. package/dist/state/combined-root-state.d.ts +1 -1
  98. package/dist/state/create-slam-app-store.d.ts +1 -1
  99. package/dist/state/create-slam-app-store.js +1 -74
  100. package/dist/state/gps-ar-pose-sampler.d.ts +3 -3
  101. package/dist/state/gps-event-coordinator.d.ts +2 -2
  102. package/dist/state/gps-event-coordinator.js +27 -17
  103. package/dist/state/index.d.ts +20 -20
  104. package/dist/state/index.js +4 -4
  105. package/dist/state/persistence-middleware.d.ts +1 -1
  106. package/dist/state/persistence-middleware.js +30 -19
  107. package/dist/state/qr-detected-slice.d.ts +3 -3
  108. package/dist/state/qr-detected-slice.js +1 -1
  109. package/dist/state/recording-options.d.ts +2 -2
  110. package/dist/state/recording-options.js +155 -13
  111. package/dist/state/recording-replayer.d.ts +2 -2
  112. package/dist/state/recording-replayer.js +1 -1
  113. package/dist/state/recording-slice.d.ts +1 -1
  114. package/dist/state/replay-engine.d.ts +1 -1
  115. package/dist/state/store-subscribers.d.ts +2 -2
  116. package/dist/state/subscribe-to-selector.d.ts +1 -1
  117. package/dist/state/tracking-quality.d.ts +2 -2
  118. package/dist/state/tracking-quality.js +40 -128
  119. package/dist/state/tracking-slice.d.ts +1 -1
  120. package/dist/{state-IEw0ZsBu.js → state-E51QT_-j.js} +1 -1
  121. package/dist/storage/file-system-utils.d.ts +1 -1
  122. package/dist/storage/index.d.ts +8 -8
  123. package/dist/storage/null-storage-backend.d.ts +1 -1
  124. package/dist/storage/opfs-storage-backend.d.ts +1 -1
  125. package/dist/storage/opfs-storage.d.ts +1 -1
  126. package/dist/storage/storage-backend.d.ts +1 -1
  127. package/dist/storage/zip-coverage-embed.d.ts +1 -1
  128. package/dist/storage/zip-export.d.ts +1 -1
  129. package/dist/storage/zip-reader.d.ts +1 -1
  130. package/dist/{storage-backend-CTJHNdMp.d.ts → storage-backend-BdVLD0dU.d.ts} +1 -1
  131. package/dist/{store-subscribers-BZP81hjh.d.ts → store-subscribers-CA6AJH_8.d.ts} +2 -2
  132. package/dist/{subscribe-to-selector-Bp3sLx8L.d.ts → subscribe-to-selector-B6EUmQ3I.d.ts} +1 -1
  133. package/dist/test-utils/browser-mocks.d.ts +1 -1
  134. package/dist/test-utils/zip-round-trip-helpers.d.ts +1 -1
  135. package/dist/{tracking-slice-DJZ9qeGg.d.ts → tracking-slice-BuAZxXZ5.d.ts} +1 -1
  136. package/dist/types/ar-types.d.ts +1 -1
  137. package/dist/types/geo-types.d.ts +1 -1
  138. package/dist/types/index.d.ts +2 -2
  139. package/dist/utils/concurrency.d.ts +1 -1
  140. package/dist/utils/failure-tracker.d.ts +1 -1
  141. package/dist/utils/format-file-size.d.ts +1 -1
  142. package/dist/utils/fused-path.d.ts +1 -1
  143. package/dist/utils/index.d.ts +8 -7
  144. package/dist/utils/index.js +2 -1
  145. package/dist/utils/list-formatter.d.ts +1 -1
  146. package/dist/utils/logger.d.ts +1 -1
  147. package/dist/visualization/accuracy-circles.d.ts +1 -1
  148. package/dist/visualization/alignment-lerper.d.ts +1 -1
  149. package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
  150. package/dist/visualization/ar-world-group-alignment.js +1 -1
  151. package/dist/visualization/camera-follower.d.ts +1 -1
  152. package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
  153. package/dist/visualization/frame-conversions.d.ts +1 -1
  154. package/dist/visualization/frustum-visibility.d.ts +1 -1
  155. package/dist/visualization/gps-anchor.d.ts +1 -1
  156. package/dist/visualization/gps-compass-cubes.d.ts +1 -1
  157. package/dist/visualization/gps-event-markers.d.ts +1 -1
  158. package/dist/visualization/gps-event-markers.js +1 -1
  159. package/dist/visualization/hit-test-reticle.d.ts +1 -1
  160. package/dist/visualization/index.d.ts +18 -18
  161. package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
  162. package/dist/visualization/lerp-utils.d.ts +1 -1
  163. package/dist/visualization/map-data.d.ts +1 -1
  164. package/dist/visualization/map-overlay-draw.d.ts +1 -1
  165. package/dist/visualization/map-overlay.d.ts +1 -1
  166. package/dist/visualization/three-dispose.d.ts +1 -1
  167. package/dist/visualization/vis-colors.d.ts +1 -1
  168. package/dist/{webxr-session-CJF9Nijp.js → webxr-session-DG-eNfny.js} +25 -4
  169. package/dist/{webxr-session-COsOjJwn.d.ts → webxr-session-Do5L6G3B.d.ts} +19 -9
  170. package/package.json +2 -2
  171. package/dist/index-eaI1Z1KR.d.ts +0 -2
  172. /package/dist/{accuracy-circles-Pi2YeCrM.d.ts → accuracy-circles-BtqOP_v1.d.ts} +0 -0
  173. /package/dist/{alignment-lerper-BUTsQ2yu.d.ts → alignment-lerper-Bil6vbVw.d.ts} +0 -0
  174. /package/dist/{ar-types-BckI1E-O.d.ts → ar-types-BFX2r1wk.d.ts} +0 -0
  175. /package/dist/{bresenham3d-ByjcmEgM.d.ts → bresenham3d-CU1Gv2W4.d.ts} +0 -0
  176. /package/dist/{camera-blit-capture-CqWe1G7s.d.ts → camera-blit-capture-NKT9H5-e.d.ts} +0 -0
  177. /package/dist/{camera-follower-BTb2Yp12.d.ts → camera-follower-CqJJ7zRj.d.ts} +0 -0
  178. /package/dist/{capability-checker-CXqoJYtb.d.ts → capability-checker-DUQLg6gq.d.ts} +0 -0
  179. /package/dist/{capture-failure-tracker-BL5SoG2a.d.ts → capture-failure-tracker-gsm8q7yi.d.ts} +0 -0
  180. /package/dist/{chromium-camera-access-workaround-BNK189P0.d.ts → chromium-camera-access-workaround-D4K2uwwQ.d.ts} +0 -0
  181. /package/dist/{concurrency-DqAlKX4j.d.ts → concurrency-By0oOTZt.d.ts} +0 -0
  182. /package/dist/{css3d-renderer-manager-m-ab19vp.d.ts → css3d-renderer-manager-B3kGNtcn.d.ts} +0 -0
  183. /package/dist/{failure-tracker-Cnc_xWUw.d.ts → failure-tracker-BO7M7jF_.d.ts} +0 -0
  184. /package/dist/{file-system-utils-Bs7lpeVP.d.ts → file-system-utils-DOajnMm-.d.ts} +0 -0
  185. /package/dist/{format-file-size-BFUWvir1.d.ts → format-file-size-Dc98ulzB.d.ts} +0 -0
  186. /package/dist/{frame-loop-BEO9_q3k.d.ts → frame-loop-CpVjQ1dH.d.ts} +0 -0
  187. /package/dist/{frustum-visibility-D_RGmH98.d.ts → frustum-visibility-CeoCZchO.d.ts} +0 -0
  188. /package/dist/{geo-types-DqiBzPO9.d.ts → geo-types-3Ip1NzVR.d.ts} +0 -0
  189. /package/dist/{gps-C5inWeNV.d.ts → gps-BBO3hKfT.d.ts} +0 -0
  190. /package/dist/{gps-compass-cubes-BExxrWJ-.d.ts → gps-compass-cubes-DSN87L8p.d.ts} +0 -0
  191. /package/dist/{gps-error-handler-C2bS69oJ.d.ts → gps-error-handler-BbPsfw-_.d.ts} +0 -0
  192. /package/dist/{gps-event-markers-Dd0G2bD0.d.ts → gps-event-markers-Cz9RMA2k.d.ts} +0 -0
  193. /package/dist/{h3-proximity-B57C6rYL.d.ts → h3-proximity-C-j0pw1j.d.ts} +0 -0
  194. /package/dist/{hit-test-reticle-Dqak9hiR.d.ts → hit-test-reticle-DV-2TpB9.d.ts} +0 -0
  195. /package/dist/{lerp-utils-kLxMJ2Xj.d.ts → lerp-utils-BLmHhkVe.d.ts} +0 -0
  196. /package/dist/{list-formatter-ct8txwvR.d.ts → list-formatter-KNMS0ay2.d.ts} +0 -0
  197. /package/dist/{logger-CzQrCe6C.d.ts → logger-CLnPrHiD.d.ts} +0 -0
  198. /package/dist/{map-overlay-Dci4yvm3.d.ts → map-overlay-Dh2B97MP.d.ts} +0 -0
  199. /package/dist/{opfs-storage-DMtlt57S.d.ts → opfs-storage-3VZh-qH6.d.ts} +0 -0
  200. /package/dist/{permission-checker-CtPtPQRq.d.ts → permission-checker-CDuI8BwC.d.ts} +0 -0
  201. /package/dist/{qr-pose-Bt2reSw7.d.ts → qr-pose-D2rfu5DA.d.ts} +0 -0
  202. /package/dist/{scene-node-names-CdNeQjOE.d.ts → scene-node-names-BiShOQDB.d.ts} +0 -0
  203. /package/dist/{session-disposers-D8wnO-uW.js → session-disposers-zv9OGXPB.js} +0 -0
  204. /package/dist/{three-dispose-BCZkSJp2.d.ts → three-dispose-Bt1k7WKh.d.ts} +0 -0
  205. /package/dist/{vis-colors-BZsSLI4i.d.ts → vis-colors-Obw2pLqT.d.ts} +0 -0
  206. /package/dist/{webxr-nue-basis-CW1wsbm6.d.ts → webxr-nue-basis-3nfjDJJp.d.ts} +0 -0
  207. /package/dist/{xr-camera-texture-BmrP7iNZ.d.ts → xr-camera-texture-Cva1q3Qj.d.ts} +0 -0
  208. /package/dist/{xr-error-handler-BEjRgZjt.d.ts → xr-error-handler-CtvHpjfm.d.ts} +0 -0
  209. /package/dist/{xr-frame-loop-K8ebdjLw.d.ts → xr-frame-loop-DIYtRcUa.d.ts} +0 -0
  210. /package/dist/{zip-coverage-embed-tFohI2J4.d.ts → zip-coverage-embed-DCAREVmw.d.ts} +0 -0
  211. /package/dist/{zip-export-DDWXInTR.d.ts → zip-export-ol0S_Ofd.d.ts} +0 -0
  212. /package/dist/{zip-reader-Q2ue6zlC.d.ts → zip-reader-D9iPQwdQ.d.ts} +0 -0
@@ -0,0 +1,54 @@
1
+ //#region ../src/sensors/absolute-orientation.d.ts
2
+ /**
3
+ * AbsoluteOrientationSensor capture (Generic Sensor API).
4
+ *
5
+ * Phase 1 of the AbsoluteOrientationSensor plan
6
+ * (GpsPlusSlamJs_Docs/docs/2026-06-25-absolute-orientation-sensor-plan.md §5.1):
7
+ * passive instrumentation that fuses accelerometer + gyroscope + magnetometer
8
+ * into an Earth-referenced (ENU) quaternion, captured per GPS event as an
9
+ * independent north reference. No production behaviour change.
10
+ *
11
+ * Platform: Chrome Android only. Safari / Firefox / desktop / iOS lack the
12
+ * sensor → this module degrades to a clean, reported no-op.
13
+ *
14
+ * The raw `'device'` reference frame is recorded together with the screen angle
15
+ * so either the device- or screen-compensated form can be reconstructed offline
16
+ * (plan §8 Q1).
17
+ */
18
+ /** A single absolute-orientation reading, snapshotted into the GPS event payload. */
19
+ interface AbsoluteOrientationReading {
20
+ /** [x,y,z,w] quaternion mapping device-frame → Earth ENU (+X East, +Y North, +Z Up). */
21
+ quaternion: [number, number, number, number];
22
+ /** Reference frame the quaternion is expressed in. We record raw 'device'. */
23
+ referenceFrame: 'device' | 'screen';
24
+ /** screen.orientation.angle at sample time — needed to reconstruct the 'device' frame. */
25
+ screenAngleDeg: number;
26
+ /** Capture time (epoch ms) — pairs with the GPS event; lets warm-up be detected offline. */
27
+ timestamp: number;
28
+ }
29
+ /** Lifecycle status surfaced to the caller (HUD/observability). */
30
+ type AbsoluteOrientationStatus = {
31
+ state: 'active';
32
+ } | {
33
+ state: 'unavailable';
34
+ reason: string;
35
+ } | {
36
+ state: 'error';
37
+ reason: string;
38
+ };
39
+ /** True when the sensor can plausibly run here (secure context + API present). */
40
+ declare function isAbsoluteOrientationAvailable(): boolean;
41
+ /**
42
+ * Start capturing absolute orientation. Idempotent (stops any prior watch first).
43
+ *
44
+ * On platforms without the sensor — or when permissions are denied — it reports
45
+ * `unavailable`/`error` via `onStatus` and stays a no-op; the recorder keeps
46
+ * working unchanged. Never throws.
47
+ */
48
+ declare function startAbsoluteOrientationWatch(onStatus?: (status: AbsoluteOrientationStatus) => void): Promise<void>;
49
+ /** Latest reading, or null when unavailable/not-yet-warmed-up. Mirrors getLastDeviceOrientation. */
50
+ declare function getLatestAbsoluteOrientation(): AbsoluteOrientationReading | null;
51
+ /** Stop the watch and clear cached state. Idempotent. */
52
+ declare function stopAbsoluteOrientationWatch(): void;
53
+ //#endregion
54
+ export { startAbsoluteOrientationWatch as a, isAbsoluteOrientationAvailable as i, AbsoluteOrientationStatus as n, stopAbsoluteOrientationWatch as o, getLatestAbsoluteOrientation as r, AbsoluteOrientationReading as t };
@@ -1,4 +1,4 @@
1
- import { L as CombinedRootState, r as SlamAppRootState } from "./create-slam-app-store-Ce2FMKCp.js";
1
+ import { N as CombinedRootState, r as SlamAppRootState } from "./create-slam-app-store-n_VF63D5.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 { n as MAX_TRACE_STEPS, r as bresenham3d, t as GridCell } from "../bresenham3d-ByjcmEgM.js";
1
+ import { n as MAX_TRACE_STEPS, r as bresenham3d, t as GridCell } from "../bresenham3d-CU1Gv2W4.js";
2
2
  export { GridCell, MAX_TRACE_STEPS, bresenham3d };
@@ -1,2 +1,2 @@
1
- import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-CqWe1G7s.js";
1
+ import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-NKT9H5-e.js";
2
2
  export { CameraBlitCapture, CameraBlitCaptureConfig, DEFAULT_BLIT_CONFIG, computeAspectFitSize, computeCaptureSize };
@@ -1,2 +1,2 @@
1
- import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-CXqoJYtb.js";
1
+ import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-DUQLg6gq.js";
2
2
  export { CapabilityMessageOptions, CapabilitySupport, capabilityMessage, isFullySupported };
@@ -1,2 +1,2 @@
1
- import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-BL5SoG2a.js";
1
+ import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-gsm8q7yi.js";
2
2
  export { CAPTURE_FAILURE_WARNING, CaptureFailureTracker, CaptureFailureTrackerConfig, DEFAULT_CAPTURE_TRACKER_CONFIG, createCaptureFailureTracker };
@@ -1,2 +1,2 @@
1
- import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-BNK189P0.js";
1
+ import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-D4K2uwwQ.js";
2
2
  export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, applyChromiumProjectionLayerWorkaround, needsBaseLayerPersistence, parseChromeVersion };
@@ -1,2 +1,2 @@
1
- import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-vMDrGTk_.js";
1
+ import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-DQ-IYhO3.js";
2
2
  export { DepthGridLookup, createDepthGridLookup };
@@ -1,3 +1,3 @@
1
- import { i as DepthSample } from "../ar-types-BckI1E-O.js";
2
- import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-DwfPYzS7.js";
1
+ import { i as DepthSample } from "../ar-types-BFX2r1wk.js";
2
+ import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-asc8exHt.js";
3
3
  export { DepthInfo, DepthSample, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, wrapXRDepthInfo };
@@ -1,2 +1,2 @@
1
- import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-CK3b9htH.js";
1
+ import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-DjsbJW9L.js";
2
2
  export { DepthUnprojector, createDepthUnprojector, unprojectDepthPoint };
@@ -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-CjZ1nEdu.js";
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-DkNhFv4Y.js";
2
2
  export { EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, createEnableGpsArController };
@@ -1,5 +1,5 @@
1
1
  import { createLogger } from "../utils/logger.js";
2
- import { a as endARSession, b as isWebXRSupported, y as initAR } from "../webxr-session-CJF9Nijp.js";
2
+ import { a as endARSession, b as isWebXRSupported, y as initAR } from "../webxr-session-DG-eNfny.js";
3
3
  import { requestGeolocationPermission, requestOrientationPermission, requestWebXRWithDepthPermission } from "../sensors/permission-checker.js";
4
4
  import { startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch } from "../sensors/gps.js";
5
5
  //#region ../src/ar/enable-gps-ar.ts
@@ -1,2 +1,2 @@
1
- import { i as runFrameUpdates, n as clearFrameUpdates, r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-BEO9_q3k.js";
1
+ import { i as runFrameUpdates, n as clearFrameUpdates, r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-CpVjQ1dH.js";
2
2
  export { FrameUpdate, clearFrameUpdates, registerFrameUpdate, runFrameUpdates };
@@ -1,2 +1,2 @@
1
- import { a as ImageCaptureConfig, i as ImageCaptureCallbacks, n as CapturedImage, o as ImageCaptureManager, r as DEFAULT_CAPTURE_CONFIG, s as MIN_VALID_IMAGE_BYTES, t as CapturedFrame } from "../image-capture-C2Feywet.js";
2
- export { CapturedFrame, CapturedImage, DEFAULT_CAPTURE_CONFIG, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, MIN_VALID_IMAGE_BYTES };
1
+ 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-CNZDrQXG.js";
2
+ export { CapturedFrame, CapturedImage, DEFAULT_CAPTURE_CONFIG, FrameQualityVerdict, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, MIN_VALID_IMAGE_BYTES };
@@ -1,155 +1,2 @@
1
- import { createLogger } from "../utils/logger.js";
2
- //#region ../src/ar/image-capture.ts
3
- /**
4
- * Image Capture Module
5
- *
6
- * Captures periodic JPEG screenshots from the WebGL canvas during AR recording.
7
- * Uses async toBlob() for better performance (non-blocking).
8
- *
9
- * Includes validation to detect suspiciously small images (likely black/empty)
10
- * which can occur on mobile devices when the WebGL context hasn't composited yet.
11
- */
12
- const log = createLogger("ImageCapture");
13
- /**
14
- * Minimum expected blob size in bytes for a valid JPEG image.
15
- * A black/empty 1920x1080 JPEG still compresses to ~2-3KB due to headers.
16
- * A real camera frame at 0.7 quality should be 50KB+.
17
- * We use a conservative threshold to catch obviously broken captures.
18
- */
19
- const MIN_VALID_IMAGE_BYTES = 5e3;
20
- /**
21
- * Default capture configuration
22
- */
23
- const DEFAULT_CAPTURE_CONFIG = {
24
- intervalMs: 2e3,
25
- quality: .7,
26
- captureTimeoutMs: 5e3,
27
- resolutionDivisor: 1
28
- };
29
- /**
30
- * Manages periodic image capture from a canvas.
31
- *
32
- * Usage:
33
- * 1. Create with canvas and callbacks
34
- * 2. Call start() when recording begins
35
- * 3. Call onFrame(time) each XR frame
36
- * 4. Call stop() when recording ends
37
- */
38
- var ImageCaptureManager = class {
39
- canvas;
40
- callbacks;
41
- config;
42
- capturing = false;
43
- lastCaptureTime = 0;
44
- frameCount = 0;
45
- captureInProgress = false;
46
- captureTimeoutId = null;
47
- constructor(canvas, callbacks, config = DEFAULT_CAPTURE_CONFIG) {
48
- this.canvas = canvas;
49
- this.callbacks = callbacks;
50
- this.config = config;
51
- }
52
- /**
53
- * Start capturing images.
54
- * Resets frame counter and last capture time.
55
- */
56
- start() {
57
- this.capturing = true;
58
- this.lastCaptureTime = 0;
59
- this.frameCount = 0;
60
- }
61
- /**
62
- * Stop capturing images.
63
- * Clears any pending safety timeout and resets in-flight capture state.
64
- */
65
- stop() {
66
- this.capturing = false;
67
- this.clearCaptureTimeout();
68
- this.captureInProgress = false;
69
- }
70
- /**
71
- * Check if capture manager is active.
72
- */
73
- isCapturing() {
74
- return this.capturing;
75
- }
76
- /**
77
- * Get the current frame count.
78
- */
79
- getFrameCount() {
80
- return this.frameCount;
81
- }
82
- /**
83
- * Called each XR frame to check if a capture is needed.
84
- *
85
- * @param time - Frame timestamp in milliseconds (from requestAnimationFrame)
86
- */
87
- onFrame(time) {
88
- if (!this.capturing) return;
89
- if (this.captureInProgress) return;
90
- const elapsed = time - this.lastCaptureTime;
91
- if (this.lastCaptureTime > 0 && elapsed < this.config.intervalMs) return;
92
- const pose = this.callbacks.getCurrentPose();
93
- if (!pose) return;
94
- this.captureInProgress = true;
95
- this.lastCaptureTime = time;
96
- const timestamp = performance.timeOrigin + time;
97
- const screenRotation = this.callbacks.getScreenRotation();
98
- const frameIndex = ++this.frameCount;
99
- this.captureTimeoutId = setTimeout(() => {
100
- if (this.captureInProgress) {
101
- log.error(`Capture timeout after ${this.config.captureTimeoutMs}ms — force-resetting captureInProgress`);
102
- this.captureInProgress = false;
103
- this.captureTimeoutId = null;
104
- }
105
- }, this.config.captureTimeoutMs);
106
- if (this.callbacks.captureFrame) this.callbacks.captureFrame(this.config.quality).then((frame) => {
107
- this.handleCapturedBlob(frame?.blob ?? null, frame?.width, frame?.height, timestamp, frameIndex, pose, screenRotation);
108
- }).catch(() => {
109
- this.clearCaptureTimeout();
110
- this.captureInProgress = false;
111
- this.callbacks.onCaptureFailed?.();
112
- });
113
- else this.canvas.toBlob((blob) => {
114
- this.handleCapturedBlob(blob, this.canvas.width, this.canvas.height, timestamp, frameIndex, pose, screenRotation);
115
- }, "image/jpeg", this.config.quality);
116
- }
117
- /**
118
- * Clear the safety timeout for captureInProgress.
119
- * Called when capture completes (success or failure) before the timeout fires.
120
- */
121
- clearCaptureTimeout() {
122
- if (this.captureTimeoutId !== null) {
123
- clearTimeout(this.captureTimeoutId);
124
- this.captureTimeoutId = null;
125
- }
126
- }
127
- /**
128
- * Common handler for captured blobs (from either canvas.toBlob or captureFrame).
129
- * Handles null blobs, suspicious image detection, and dispatching onCaptured.
130
- */
131
- handleCapturedBlob(blob, width, height, timestamp, frameIndex, pose, screenRotation) {
132
- this.clearCaptureTimeout();
133
- this.captureInProgress = false;
134
- if (!blob) {
135
- this.callbacks.onCaptureFailed?.();
136
- return;
137
- }
138
- if (blob.size < 5e3) {
139
- log.error(`Suspicious image at frame ${frameIndex}: blob size ${blob.size} bytes is below minimum ${MIN_VALID_IMAGE_BYTES} bytes. Image may be black/empty.`);
140
- this.callbacks.onSuspiciousImage?.(blob.size, frameIndex);
141
- }
142
- this.callbacks.onCaptured({
143
- blob,
144
- timestamp,
145
- frameIndex,
146
- position: pose.position,
147
- rotation: pose.orientation,
148
- screenRotation,
149
- ...width && width > 0 ? { width } : {},
150
- ...height && height > 0 ? { height } : {}
151
- });
152
- }
153
- };
154
- //#endregion
1
+ import { n as ImageCaptureManager, r as MIN_VALID_IMAGE_BYTES, t as DEFAULT_CAPTURE_CONFIG } from "../image-capture-B2-b6tKK.js";
155
2
  export { DEFAULT_CAPTURE_CONFIG, ImageCaptureManager, MIN_VALID_IMAGE_BYTES };
@@ -0,0 +1,2 @@
1
+ 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-smCBoFj1.js";
2
+ export { DEFAULT_QUALITY_FILTER, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, ImageQualityGate, QualityFilterConfig, QualityRejectReason, QualityVerdict, meanLuminance, rgbaToGrayscale, sharpnessScore };
@@ -0,0 +1,168 @@
1
+ //#region ../src/ar/image-quality.ts
2
+ /**
3
+ * Default image-quality configuration. **Disabled by default** (plan §10): the
4
+ * relative blur threshold is unvalidated, and a mis-tuned gate silently dropping
5
+ * good frames for every consumer app is worse than the motion gate's low-risk
6
+ * default-on. Flip to `true` once the thresholds are field-tuned. The numeric
7
+ * values are PLACEHOLDERS pending on-device tuning (record measured values in
8
+ * implementation-progress.md). `maxWaitMs` of 4000 ms is 2× the default 2000 ms
9
+ * image interval.
10
+ */
11
+ const DEFAULT_QUALITY_FILTER = {
12
+ enabled: false,
13
+ blurRelativeThreshold: .5,
14
+ minMeanLuminance: 10,
15
+ maxWaitMs: 4e3
16
+ };
17
+ /** Default number of recent (non-black) sharpness scores the gate keeps. */
18
+ const DEFAULT_SHARPNESS_HISTORY_SIZE = 15;
19
+ /**
20
+ * Default minimum samples before the relative blur check engages. Below this the
21
+ * gate is in "cold start" and accepts every non-black frame — the same
22
+ * "no baseline yet ⇒ don't block" principle the motion gate uses for an empty
23
+ * window.
24
+ */
25
+ const DEFAULT_SHARPNESS_MIN_SAMPLES = 3;
26
+ /**
27
+ * Compute the **variance of the Laplacian** of a single-channel grayscale image
28
+ * — the standard focus measure (higher ⇒ sharper / more in-focus).
29
+ *
30
+ * The discrete Laplacian per interior pixel is
31
+ * `up + down + left + right − 4·centre` (the 4-neighbour kernel); the score is
32
+ * the variance of that response over all interior pixels. A flat/constant image
33
+ * yields 0; a focused, textured image yields a large value.
34
+ *
35
+ * Defensive: returns `0` (rather than throwing or `NaN`) for any input that has
36
+ * no interior pixels — non-integer or `< 3` dimensions, or a buffer shorter than
37
+ * `width · height`. A tiny negative variance from floating-point cancellation is
38
+ * clamped to 0.
39
+ *
40
+ * @param gray Row-major single-channel intensities, length ≥ `width · height`.
41
+ * @param width Image width in pixels.
42
+ * @param height Image height in pixels.
43
+ */
44
+ function sharpnessScore(gray, width, height) {
45
+ if (!Number.isInteger(width) || !Number.isInteger(height)) return 0;
46
+ if (width < 3 || height < 3) return 0;
47
+ if (gray.length < width * height) return 0;
48
+ let sum = 0;
49
+ let sumSq = 0;
50
+ let count = 0;
51
+ for (let y = 1; y < height - 1; y++) {
52
+ const row = y * width;
53
+ for (let x = 1; x < width - 1; x++) {
54
+ const i = row + x;
55
+ const laplacian = gray[i - 1] + gray[i + 1] + gray[i - width] + gray[i + width] - 4 * gray[i];
56
+ sum += laplacian;
57
+ sumSq += laplacian * laplacian;
58
+ count++;
59
+ }
60
+ }
61
+ if (count === 0) return 0;
62
+ const mean = sum / count;
63
+ const variance = sumSq / count - mean * mean;
64
+ return variance > 0 ? variance : 0;
65
+ }
66
+ /**
67
+ * Convert an RGBA buffer to a single-channel grayscale (Rec. 601 luma) buffer,
68
+ * the input {@link sharpnessScore} expects. Pure; ignores the alpha channel. A
69
+ * partial trailing pixel (length not a multiple of 4) is ignored.
70
+ */
71
+ function rgbaToGrayscale(rgba) {
72
+ const pixels = Math.floor(rgba.length / 4);
73
+ const out = new Uint8ClampedArray(pixels);
74
+ for (let p = 0; p < pixels; p++) {
75
+ const o = p * 4;
76
+ out[p] = .299 * rgba[o] + .587 * rgba[o + 1] + .114 * rgba[o + 2];
77
+ }
78
+ return out;
79
+ }
80
+ /**
81
+ * Mean Rec. 601 luma (`0.299R + 0.587G + 0.114B`) over an RGBA buffer, on a
82
+ * 0–255 scale. Near-zero ⇒ black/empty frame. Alpha is ignored. Returns `0` for
83
+ * an empty buffer.
84
+ */
85
+ function meanLuminance(rgba) {
86
+ const pixels = Math.floor(rgba.length / 4);
87
+ if (pixels === 0) return 0;
88
+ let sum = 0;
89
+ for (let p = 0; p < pixels; p++) {
90
+ const o = p * 4;
91
+ sum += .299 * rgba[o] + .587 * rgba[o + 1] + .114 * rgba[o + 2];
92
+ }
93
+ return sum / pixels;
94
+ }
95
+ /**
96
+ * Lower-middle median (matches the project's other `medianOf` helpers, e.g.
97
+ * `qr-pose-aggregation.ts`). Caller guarantees a non-empty array.
98
+ */
99
+ function medianOf(values) {
100
+ const sorted = [...values].sort((a, b) => a - b);
101
+ return sorted[Math.floor((sorted.length - 1) / 2)];
102
+ }
103
+ /**
104
+ * The self-calibrating blur+blackness verdict, with the rolling sharpness
105
+ * history that makes the blur check scene-relative (§5). Stateful but pure (no
106
+ * DOM/worker): one instance per recording session, fed each analysed frame's
107
+ * metrics.
108
+ *
109
+ * Policy per frame ({@link evaluate}):
110
+ * 1. **Blackness — absolute.** `meanLuminance < config.minMeanLuminance` ⇒
111
+ * reject `'black'`. The score is NOT recorded (a black frame's ~0 sharpness
112
+ * must not drag the median down and disarm the blur check).
113
+ * 2. **Blur — relative.** Once at least `minSamples` non-black frames have been
114
+ * seen, reject `'blurry'` when `sharpness < blurRelativeThreshold · median`.
115
+ * Before that (cold start) every non-black frame is accepted.
116
+ * 3. The non-black frame's sharpness is recorded into the rolling window
117
+ * (capped at `historySize`) so the median tracks the scene's texture level —
118
+ * including a genuinely softening scene, which gradually lowers the bar (the
119
+ * §10 "retry storm" regime where the fallback then guarantees progress).
120
+ */
121
+ var ImageQualityGate = class {
122
+ history = [];
123
+ historySize;
124
+ minSamples;
125
+ constructor(historySize = 15, minSamples = 3) {
126
+ this.historySize = Number.isFinite(historySize) && historySize >= 1 ? Math.floor(historySize) : 15;
127
+ this.minSamples = Number.isFinite(minSamples) && minSamples >= 1 ? Math.floor(minSamples) : 3;
128
+ }
129
+ /**
130
+ * Judge one frame from its precomputed metrics + the current config, updating
131
+ * the rolling history. See the class doc for the policy.
132
+ */
133
+ evaluate(sharpness, meanLum, config) {
134
+ if (meanLum < config.minMeanLuminance) return {
135
+ accept: false,
136
+ reason: "black",
137
+ sharpness,
138
+ meanLuminance: meanLum
139
+ };
140
+ let blurry = false;
141
+ if (this.history.length >= this.minSamples) {
142
+ if (sharpness < config.blurRelativeThreshold * medianOf(this.history)) blurry = true;
143
+ }
144
+ this.history.push(sharpness);
145
+ if (this.history.length > this.historySize) this.history.shift();
146
+ return blurry ? {
147
+ accept: false,
148
+ reason: "blurry",
149
+ sharpness,
150
+ meanLuminance: meanLum
151
+ } : {
152
+ accept: true,
153
+ reason: null,
154
+ sharpness,
155
+ meanLuminance: meanLum
156
+ };
157
+ }
158
+ /** Number of (non-black) sharpness samples currently retained. */
159
+ historyLength() {
160
+ return this.history.length;
161
+ }
162
+ /** Clear the rolling history (e.g. on a new recording session). */
163
+ reset() {
164
+ this.history.length = 0;
165
+ }
166
+ };
167
+ //#endregion
168
+ export { DEFAULT_QUALITY_FILTER, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, ImageQualityGate, meanLuminance, rgbaToGrayscale, sharpnessScore };
@@ -1,30 +1,31 @@
1
- import { r as bresenham3d, t as GridCell } from "../bresenham3d-ByjcmEgM.js";
2
- import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-CqWe1G7s.js";
3
- import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-CXqoJYtb.js";
4
- import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-BL5SoG2a.js";
5
- import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-BNK189P0.js";
6
- import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-vMDrGTk_.js";
7
- import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-DwfPYzS7.js";
8
- import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-CK3b9htH.js";
9
- import { a as ImageCaptureConfig, i as ImageCaptureCallbacks, n as CapturedImage, o as ImageCaptureManager, r as DEFAULT_CAPTURE_CONFIG, s as MIN_VALID_IMAGE_BYTES } from "../image-capture-C2Feywet.js";
10
- 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-Bt2reSw7.js";
11
- 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-DufZp2xS.js";
12
- import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "../xr-camera-texture-BmrP7iNZ.js";
13
- import { G as stopDepthCapture, H as startDepthCapture, I as setTrackingCallbacks, K as stopImageCapture, L as setTrackingLostCallback, M as setDepthCaptureCallback, N as setFrameCallback, P as setImageCaptureCallback, S as initAR, U as startImageCapture, V as startCameraFrameCapture, W as stopCameraFrameCapture, _ as getDepthSampleCount, b as getScene, c as endARSession, f as getArWorldGroup, g as getCurrentArPose, h as getCameraFrameCount, j as setCameraFrameCallback, p as getCamera, r as SessionFeatureOptions, t as CameraFrameCaptureConfig, v as getImageCaptureFrameCount, y as getLiveCss3dManager, z as setTrackingStore } from "../webxr-session-COsOjJwn.js";
14
- 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-CjZ1nEdu.js";
15
- import { r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-BEO9_q3k.js";
16
- 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-D7739ZpB.js";
17
- import { t as createQrSizeDepthContext } from "../qr-size-depth-context-onu36E9s.js";
18
- import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../qr-derived-pose-DinKE600.js";
19
- import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-B8gTzjMm.js";
20
- import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../qr-detection-controller-Cd2Ih4cC.js";
21
- import { a as QrPoseStability, c as aggregateQrPose, i as DEFAULT_ROTATION_INLIER_ANGLE_DEG, l as averageRotation, n as AverageRotationOptions, o as QrPoseStabilityOptions, r as AverageRotationResult, s as QrPoseStabilityStatus, t as AggregateQrPoseResult, u as evaluateQrPoseStability } from "../qr-pose-aggregation-CFlmLm6w.js";
22
- import { A as QrGpsVoteInput, C as QrLevel, D as Enu, E as parseQrLevel, M as localPlaneToEnu, N as offsetGeo, O as METERS_PER_DEG_LAT, S as FetchQrLevelOptions, T as fetchQrLevel, _ as QrTrackingController, a as checkQrPlausibility, b as createQrTrackingController, c as QrDetectionScheduler, d as createQrDetectionScheduler, f as CameraFrameSource, g as QrSolvePoseInput, h as QrDetectionEvent, i as QrPlausibilityVerdict, j as buildQrGpsVotes, k as QrGeoPose, l as QrDetectionSchedulerConfig, m as CameraFrameSourceConfig, n as QrPlausibility, o as DetectionScheduler, p as CameraFrameSourceCallbacks, r as QrPlausibilityOptions, s as DetectionSchedulerConfig, t as OccupancySurface, u as createDetectionScheduler, v as QrTrackingControllerConfig, w as QrLevelValidationError, x as FetchLike, y as QrTrackingStatus } from "../index-BvLo2poy.js";
23
- import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../planar-pnp-cjthe7Be.js";
24
- import { n as OccupancyGridOptions, t as OccupancyGrid } from "../occupancy-grid-Bvi2Gw1U.js";
25
- import { i as registerXrFrameUpdate, n as XrFrameUpdate, t as XrFrameContext } from "../xr-frame-loop-K8ebdjLw.js";
26
- import { a as getCameraFollower, c as getReplayState, d as updateOrbitTarget, i as getAlignmentLerper, l as initReplayScene, n as ReplaySceneState, o as getCameraMode, r as disposeReplayScene, t as CameraMode, u as toggleCameraMode } from "../replay-scene-CPt56pps.js";
27
- import { t as SCENE_NODE } from "../scene-node-names-CdNeQjOE.js";
28
- import { t as WEBXR_TO_NUE } from "../webxr-nue-basis-CW1wsbm6.js";
29
- import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "../xr-error-handler-BEjRgZjt.js";
30
- export { AggregateQrPoseResult, AverageRotationOptions, AverageRotationResult, BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BarcodeDetectorFrontEnd, BarcodeDetectorLike, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraBlitCaptureConfig, CameraFrameCaptureConfig, CameraFrameSource, CameraFrameSourceCallbacks, CameraFrameSourceConfig, CameraIntrinsics, CameraMode, CameraTextureResult, CapabilityMessageOptions, CapabilitySupport, CaptureFailureTracker, CaptureFailureTrackerConfig, CapturedImage, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DepthGridLookup, DepthInfo, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, DepthUnprojector, DeriveQrPoseDeps, DerivedQrPlacement, DetectedBarcodeLike, DetectionScheduler, DetectionSchedulerConfig, EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, Enu, FetchLike, FetchQrLevelOptions, FrameUpdate, GridCell, Homography, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, ImageSize, IncrementalQrPlacement, METERS_PER_DEG_LAT, MIN_VALID_IMAGE_BYTES, Mat3, OccupancyGrid, OccupancyGridOptions, OccupancySurface, OpenCvPnpResult, PlanarPnpSquare, Point2, Pose, PoseCandidate, QrDebugView, QrDetection, QrDetectionController, QrDetectionControllerDeps, QrDetectionEvent, QrDetectionScheduler, QrDetectionSchedulerConfig, QrFrontEnd, QrGeoPose, QrGpsVoteInput, QrLevel, QrLevelValidationError, QrPlausibility, QrPlausibilityOptions, QrPlausibilityVerdict, QrPoseSolution, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrScanStatus, QrSizeAccumulator, QrSizeAccumulatorOptions, QrSizeDepthContext, QrSizeEstimate, QrSizeMeasurement, QrSizeMeasurer, QrSizeObservation, QrSizeStatus, QrSolvePoseInput, QrTrackingController, QrTrackingControllerConfig, QrTrackingStatus, QuadValidation, RawObservationSink, RawQrObservation, RendererLike, ReplaySceneState, RgbaImage, SCENE_NODE, SessionFeatureOptions, SolvePnpSquare, SolveQrPoseInput, ToImageBitmapSource, WEBXR_TO_NUE, XRCameraLike, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, XrFrameContext, XrFrameUpdate, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getReplayState, getScene, getXrErrorMessage, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rotationToRodrigues, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateQuad, wrapXRDepthInfo };
1
+ import { r as bresenham3d, t as GridCell } from "../bresenham3d-CU1Gv2W4.js";
2
+ import { a as computeCaptureSize, i as computeAspectFitSize, n as CameraBlitCaptureConfig, r as DEFAULT_BLIT_CONFIG, t as CameraBlitCapture } from "../camera-blit-capture-NKT9H5-e.js";
3
+ import { i as isFullySupported, n as CapabilitySupport, r as capabilityMessage, t as CapabilityMessageOptions } from "../capability-checker-DUQLg6gq.js";
4
+ import { a as createCaptureFailureTracker, i as DEFAULT_CAPTURE_TRACKER_CONFIG, n as CaptureFailureTracker, r as CaptureFailureTrackerConfig, t as CAPTURE_FAILURE_WARNING } from "../capture-failure-tracker-gsm8q7yi.js";
5
+ import { a as applyChromiumProjectionLayerWorkaround, i as ChromiumProjectionLayerWorkaroundResult, n as BASELAYER_WINDOW_MIN, o as needsBaseLayerPersistence, r as ChromeVersion, s as parseChromeVersion, t as BASELAYER_WINDOW_MAX } from "../chromium-camera-access-workaround-D4K2uwwQ.js";
6
+ import { n as createDepthGridLookup, t as DepthGridLookup } from "../depth-grid-lookup-DQ-IYhO3.js";
7
+ import { a as wrapXRDepthInfo, i as DepthSamplerConfig, n as DepthSampler, r as DepthSamplerCallbacks, t as DepthInfo } from "../depth-sampler-asc8exHt.js";
8
+ import { n as createDepthUnprojector, r as unprojectDepthPoint, t as DepthUnprojector } from "../depth-unprojection-DjsbJW9L.js";
9
+ 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-smCBoFj1.js";
10
+ 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-CNZDrQXG.js";
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-D2rfu5DA.js";
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--fFX25mV.js";
13
+ import { i as acquireCameraTexture, n as RendererLike, r as XRCameraLike, t as CameraTextureResult } from "../xr-camera-texture-Cva1q3Qj.js";
14
+ import { B as setTrackingStore, F as setImageQualityAnalyzer, G as stopCameraFrameCapture, H as startCameraFrameCapture, K as stopDepthCapture, L as setTrackingCallbacks, M as setDepthCaptureCallback, N as setFrameCallback, P as setImageCaptureCallback, R as setTrackingLostCallback, S as initAR, U as startDepthCapture, W as startImageCapture, _ as getDepthSampleCount, b as getScene, c as endARSession, f as getArWorldGroup, g as getCurrentArPose, h as getCameraFrameCount, j as setCameraFrameCallback, p as getCamera, q as stopImageCapture, r as SessionFeatureOptions, t as CameraFrameCaptureConfig, v as getImageCaptureFrameCount, y as getLiveCss3dManager } from "../webxr-session-Do5L6G3B.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-DkNhFv4Y.js";
16
+ import { r as registerFrameUpdate, t as FrameUpdate } from "../frame-loop-CpVjQ1dH.js";
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-DQdAsid1.js";
18
+ import { t as createQrSizeDepthContext } from "../qr-size-depth-context-CeAG53fy.js";
19
+ import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../qr-derived-pose-CmxTP2m4.js";
20
+ import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-Brl73HGO.js";
21
+ import { a as createQrDetectionController, i as RawObservationSink, n as QrDetectionControllerDeps, r as QrScanStatus, t as QrDetectionController } from "../qr-detection-controller-CDurHv8E.js";
22
+ import { a as QrPoseStability, c as aggregateQrPose, i as DEFAULT_ROTATION_INLIER_ANGLE_DEG, l as averageRotation, n as AverageRotationOptions, o as QrPoseStabilityOptions, r as AverageRotationResult, s as QrPoseStabilityStatus, t as AggregateQrPoseResult, u as evaluateQrPoseStability } from "../qr-pose-aggregation-B7tWJq7j.js";
23
+ import { A as QrGpsVoteInput, C as QrLevel, D as Enu, E as parseQrLevel, M as localPlaneToEnu, N as offsetGeo, O as METERS_PER_DEG_LAT, S as FetchQrLevelOptions, T as fetchQrLevel, _ as QrTrackingController, a as checkQrPlausibility, b as createQrTrackingController, c as QrDetectionScheduler, d as createQrDetectionScheduler, f as CameraFrameSource, g as QrSolvePoseInput, h as QrDetectionEvent, i as QrPlausibilityVerdict, j as buildQrGpsVotes, k as QrGeoPose, l as QrDetectionSchedulerConfig, m as CameraFrameSourceConfig, n as QrPlausibility, o as DetectionScheduler, p as CameraFrameSourceCallbacks, r as QrPlausibilityOptions, s as DetectionSchedulerConfig, t as OccupancySurface, u as createDetectionScheduler, v as QrTrackingControllerConfig, w as QrLevelValidationError, x as FetchLike, y as QrTrackingStatus } from "../index-BneSj4_5.js";
24
+ import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../planar-pnp-my9bqULS.js";
25
+ import { n as OccupancyGridOptions, t as OccupancyGrid } from "../occupancy-grid-DnOc-6PU.js";
26
+ import { i as registerXrFrameUpdate, n as XrFrameUpdate, t as XrFrameContext } from "../xr-frame-loop-DIYtRcUa.js";
27
+ import { a as getCameraFollower, c as getReplayState, d as updateOrbitTarget, i as getAlignmentLerper, l as initReplayScene, n as ReplaySceneState, o as getCameraMode, r as disposeReplayScene, t as CameraMode, u as toggleCameraMode } from "../replay-scene-DBlDrV_x.js";
28
+ import { t as SCENE_NODE } from "../scene-node-names-BiShOQDB.js";
29
+ import { t as WEBXR_TO_NUE } from "../webxr-nue-basis-3nfjDJJp.js";
30
+ import { n as XR_ERROR_MESSAGE_UNKNOWN, r as getXrErrorMessage, t as XR_ERROR_MESSAGES } from "../xr-error-handler-CtvHpjfm.js";
31
+ export { AggregateQrPoseResult, AverageRotationOptions, AverageRotationResult, BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BarcodeDetectorFrontEnd, BarcodeDetectorLike, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraBlitCaptureConfig, CameraFrameCaptureConfig, CameraFrameSource, CameraFrameSourceCallbacks, CameraFrameSourceConfig, CameraIntrinsics, CameraMode, CameraTextureResult, CapabilityMessageOptions, CapabilitySupport, CaptureFailureTracker, CaptureFailureTrackerConfig, CapturedFrame, CapturedImage, ChromeVersion, ChromiumProjectionLayerWorkaroundResult, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_QUALITY_FILTER, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, DepthGridLookup, DepthInfo, DepthSampler, DepthSamplerCallbacks, DepthSamplerConfig, DepthUnprojector, DeriveQrPoseDeps, DerivedQrPlacement, DetectedBarcodeLike, DetectionScheduler, DetectionSchedulerConfig, EnableGpsArConfig, EnableGpsArController, EnableGpsArDeps, EnableGpsArResult, EnableGpsArState, EnableGpsArStatus, Enu, FetchLike, FetchQrLevelOptions, FrameQualityVerdict, FrameUpdate, GridCell, Homography, ImageCaptureCallbacks, ImageCaptureConfig, ImageCaptureManager, ImageQualityGate, ImageSize, IncrementalQrPlacement, METERS_PER_DEG_LAT, MIN_VALID_IMAGE_BYTES, Mat3, OccupancyGrid, OccupancyGridOptions, OccupancySurface, OpenCvPnpResult, PlanarPnpSquare, Point2, Pose, PoseCandidate, QrDebugView, QrDetection, QrDetectionController, QrDetectionControllerDeps, QrDetectionEvent, QrDetectionScheduler, QrDetectionSchedulerConfig, QrFrontEnd, QrGeoPose, QrGpsVoteInput, QrLevel, QrLevelValidationError, QrPlausibility, QrPlausibilityOptions, QrPlausibilityVerdict, QrPoseSolution, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrScanStatus, QrSizeAccumulator, QrSizeAccumulatorOptions, QrSizeDepthContext, QrSizeEstimate, QrSizeMeasurement, QrSizeMeasurer, QrSizeObservation, QrSizeStatus, QrSolvePoseInput, QrTrackingController, QrTrackingControllerConfig, QrTrackingStatus, QuadValidation, QualityFilterConfig, QualityRejectReason, QualityVerdict, RawObservationSink, RawQrObservation, RendererLike, ReplaySceneState, RgbaImage, SCENE_NODE, SessionFeatureOptions, SolvePnpSquare, SolveQrPoseInput, ToImageBitmapSource, WEBXR_TO_NUE, XRCameraLike, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, XrFrameContext, XrFrameUpdate, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getReplayState, getScene, getXrErrorMessage, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, meanLuminance, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rgbaToGrayscale, rotationToRodrigues, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setImageQualityAnalyzer, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, sharpnessScore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateQuad, wrapXRDepthInfo };
package/dist/ar/index.js CHANGED
@@ -12,19 +12,20 @@ import { createIncrementalQrPlacement, deriveQrPlacement, deriveQrSizeM, deriveS
12
12
  import { WEBXR_TO_NUE } from "./webxr-nue-basis.js";
13
13
  import { createQrDebugView } from "./qr-debug-view.js";
14
14
  import { n as createDetectionScheduler, r as createQrDetectionScheduler, t as createQrDetectionController } from "../qr-detection-controller-B-tLVd-S.js";
15
- import { i as evaluateQrPoseStability, n as aggregateQrPose, r as averageRotation, t as DEFAULT_ROTATION_INLIER_ANGLE_DEG } from "../qr-pose-aggregation-DXR9STHs.js";
16
- import { a as localPlaneToEnu, c as fetchQrLevel, i as buildQrGpsVotes, l as parseQrLevel, n as createQrTrackingController, o as offsetGeo, r as METERS_PER_DEG_LAT, s as QrLevelValidationError, t as checkQrPlausibility } from "../ar-Dc72Ksiu.js";
15
+ import { i as evaluateQrPoseStability, n as aggregateQrPose, r as averageRotation, t as DEFAULT_ROTATION_INLIER_ANGLE_DEG } from "../qr-pose-aggregation-DBiaLW0O.js";
16
+ import { a as localPlaneToEnu, c as fetchQrLevel, i as buildQrGpsVotes, l as parseQrLevel, n as createQrTrackingController, o as offsetGeo, r as METERS_PER_DEG_LAT, s as QrLevelValidationError, t as checkQrPlausibility } from "../ar-MFpFlV7j.js";
17
17
  import { BarcodeDetectorFrontEnd, createBarcodeDetectorFrontEnd } from "./qr-frontend.js";
18
- import { A as setFrameCallback, B as startImageCapture, H as stopDepthCapture, I as setTrackingStore, N as setTrackingCallbacks, O as setCameraFrameCallback, P as setTrackingLostCallback, R as startCameraFrameCapture, U as stopImageCapture, V as stopCameraFrameCapture, W as CameraFrameSource, _ as getScene, a as endARSession, f as getCameraFrameCount, g as getLiveCss3dManager, h as getImageCaptureFrameCount, j as setImageCaptureCallback, k as setDepthCaptureCallback, l as getArWorldGroup, m as getDepthSampleCount, p as getCurrentArPose, u as getCamera, y as initAR, z as startDepthCapture } from "../webxr-session-CJF9Nijp.js";
18
+ import { A as setFrameCallback, B as startDepthCapture, F as setTrackingLostCallback, G as CameraFrameSource, H as stopCameraFrameCapture, L as setTrackingStore, M as setImageQualityAnalyzer, O as setCameraFrameCallback, P as setTrackingCallbacks, U as stopDepthCapture, V as startImageCapture, W as stopImageCapture, _ as getScene, a as endARSession, f as getCameraFrameCount, g as getLiveCss3dManager, h as getImageCaptureFrameCount, j as setImageCaptureCallback, k as setDepthCaptureCallback, l as getArWorldGroup, m as getDepthSampleCount, p as getCurrentArPose, u as getCamera, y as initAR, z as startCameraFrameCapture } from "../webxr-session-DG-eNfny.js";
19
19
  import { PlanarPnpSquare, homographyFromCorrespondences, ippePoseCandidates, nearestRotation3x3, rotationToRodrigues, solveLinear } from "./planar-pnp.js";
20
20
  import { bresenham3d } from "./bresenham3d.js";
21
21
  import { OccupancyGrid } from "./occupancy-grid.js";
22
22
  import { registerFrameUpdate } from "./frame-loop.js";
23
23
  import { registerXrFrameUpdate } from "./xr-frame-loop.js";
24
- import { DEFAULT_CAPTURE_CONFIG, ImageCaptureManager, MIN_VALID_IMAGE_BYTES } from "./image-capture.js";
24
+ import { n as ImageCaptureManager, r as MIN_VALID_IMAGE_BYTES, t as DEFAULT_CAPTURE_CONFIG } from "../image-capture-B2-b6tKK.js";
25
+ import { DEFAULT_QUALITY_FILTER, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, ImageQualityGate, meanLuminance, rgbaToGrayscale, sharpnessScore } from "./image-quality.js";
25
26
  import { acquireCameraTexture } from "./xr-camera-texture.js";
26
27
  import { SCENE_NODE } from "./scene-node-names.js";
27
28
  import { createEnableGpsArController } from "./enable-gps-ar.js";
28
29
  import { disposeReplayScene, getAlignmentLerper, getCameraFollower, getCameraMode, getReplayState, initReplayScene, toggleCameraMode, updateOrbitTarget } from "./replay-scene.js";
29
30
  import { XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, getXrErrorMessage } from "./xr-error-handler.js";
30
- export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BarcodeDetectorFrontEnd, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraFrameSource, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DepthSampler, ImageCaptureManager, METERS_PER_DEG_LAT, MIN_VALID_IMAGE_BYTES, OccupancyGrid, PlanarPnpSquare, QrLevelValidationError, SCENE_NODE, WEBXR_TO_NUE, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getReplayState, getScene, getXrErrorMessage, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rotationToRodrigues, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateQuad, wrapXRDepthInfo };
31
+ export { BASELAYER_WINDOW_MAX, BASELAYER_WINDOW_MIN, BarcodeDetectorFrontEnd, CAPTURE_FAILURE_WARNING, CameraBlitCapture, CameraFrameSource, DEFAULT_BLIT_CONFIG, DEFAULT_CAPTURE_CONFIG, DEFAULT_CAPTURE_TRACKER_CONFIG, DEFAULT_QUALITY_FILTER, DEFAULT_ROTATION_INLIER_ANGLE_DEG, DEFAULT_SHARPNESS_HISTORY_SIZE, DEFAULT_SHARPNESS_MIN_SAMPLES, DepthSampler, ImageCaptureManager, ImageQualityGate, METERS_PER_DEG_LAT, MIN_VALID_IMAGE_BYTES, OccupancyGrid, PlanarPnpSquare, QrLevelValidationError, SCENE_NODE, WEBXR_TO_NUE, XR_ERROR_MESSAGES, XR_ERROR_MESSAGE_UNKNOWN, acquireCameraTexture, aggregateQrPose, applyChromiumProjectionLayerWorkaround, averageRotation, bresenham3d, buildObjectPoints, buildQrGpsVotes, capabilityMessage, checkQrPlausibility, composePose, computeAspectFitSize, computeCaptureSize, createBarcodeDetectorFrontEnd, createCaptureFailureTracker, createDepthGridLookup, createDepthUnprojector, createDetectionScheduler, createEnableGpsArController, createIncrementalQrPlacement, createQrDebugView, createQrDetectionController, createQrDetectionScheduler, createQrSizeAccumulator, createQrSizeDepthContext, createQrSizeMeasurer, createQrTrackingController, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, disposeReplayScene, endARSession, estimateQrSizeFromDepth, evaluateQrPoseStability, fetchQrLevel, getAlignmentLerper, getArWorldGroup, getCamera, getCameraFollower, getCameraFrameCount, getCameraMode, getCurrentArPose, getDepthSampleCount, getImageCaptureFrameCount, getLiveCss3dManager, getReplayState, getScene, getXrErrorMessage, homographyFromCorrespondences, initAR, initReplayScene, intrinsicsFromProjection, invertPose, ippePoseCandidates, isFullySupported, localPlaneToEnu, meanLuminance, nearestRotation3x3, needsBaseLayerPersistence, offsetGeo, parseChromeVersion, parseQrLevel, projectViewPoint, qrInCameraFromOpenCv, registerFrameUpdate, registerXrFrameUpdate, reprojectionErrorPx, rgbaToGrayscale, rotationToRodrigues, setCameraFrameCallback, setDepthCaptureCallback, setFrameCallback, setImageCaptureCallback, setImageQualityAnalyzer, setTrackingCallbacks, setTrackingLostCallback, setTrackingStore, sharpnessScore, signedQuadArea, solveLinear, solveQrPose, solveQrPoseFromObservation, startCameraFrameCapture, startDepthCapture, startImageCapture, stopCameraFrameCapture, stopDepthCapture, stopImageCapture, toggleCameraMode, transformPoint, unprojectDepthPoint, updateOrbitTarget, validateQuad, wrapXRDepthInfo };
@@ -1,2 +1,2 @@
1
- import { n as OccupancyGridOptions, t as OccupancyGrid } from "../occupancy-grid-Bvi2Gw1U.js";
1
+ import { n as OccupancyGridOptions, t as OccupancyGrid } from "../occupancy-grid-DnOc-6PU.js";
2
2
  export { OccupancyGrid, OccupancyGridOptions };
@@ -1,2 +1,2 @@
1
- import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../planar-pnp-cjthe7Be.js";
1
+ import { a as homographyFromCorrespondences, c as rotationToRodrigues, i as PoseCandidate, l as solveLinear, n as Mat3, o as ippePoseCandidates, r as PlanarPnpSquare, s as nearestRotation3x3, t as Homography } from "../planar-pnp-my9bqULS.js";
2
2
  export { Homography, Mat3, PlanarPnpSquare, PoseCandidate, homographyFromCorrespondences, ippePoseCandidates, nearestRotation3x3, rotationToRodrigues, solveLinear };
@@ -1,2 +1,2 @@
1
- import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-B8gTzjMm.js";
1
+ import { n as createQrDebugView, t as QrDebugView } from "../qr-debug-view-Brl73HGO.js";
2
2
  export { QrDebugView, createQrDebugView };
@@ -1,2 +1,2 @@
1
- import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../qr-derived-pose-DinKE600.js";
1
+ import { a as createIncrementalQrPlacement, c as deriveSolvedQrPose, i as RawQrObservation, l as solveQrPoseFromObservation, n as DerivedQrPlacement, o as deriveQrPlacement, r as IncrementalQrPlacement, s as deriveQrSizeM, t as DeriveQrPoseDeps } from "../qr-derived-pose-CmxTP2m4.js";
2
2
  export { DeriveQrPoseDeps, DerivedQrPlacement, IncrementalQrPlacement, RawQrObservation, createIncrementalQrPlacement, deriveQrPlacement, deriveQrSizeM, deriveSolvedQrPose, solveQrPoseFromObservation };