react-native-image-stitcher 0.1.0 → 0.1.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/CHANGELOG.md +39 -1
- package/dist/index.d.ts +40 -12
- package/dist/index.js +90 -17
- package/package.json +1 -1
- package/src/index.ts +87 -16
package/CHANGELOG.md
CHANGED
|
@@ -16,7 +16,45 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
16
16
|
|
|
17
17
|
## [Unreleased]
|
|
18
18
|
|
|
19
|
-
## [0.1.
|
|
19
|
+
## [0.1.1] — 2026-05-20
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- **Layer 2 building blocks now public.** The lower-level views,
|
|
24
|
+
hooks, and stitching-engine bindings that previously lived behind
|
|
25
|
+
the `<Camera>` wrapper are now exported from the package root.
|
|
26
|
+
Use these when `<Camera>` doesn't give you enough control — e.g.,
|
|
27
|
+
when you're hand-composing your own capture screen on top of the
|
|
28
|
+
same proven primitives. Full list:
|
|
29
|
+
- Views: `ARCameraView`, `CameraView` (+ their handle/prop types).
|
|
30
|
+
- UI components: `CaptureHeader`, `CaptureControlsBar`,
|
|
31
|
+
`CapturePreview`, `CaptureStatusOverlay`, `CaptureThumbnailStrip`,
|
|
32
|
+
`IncrementalPanGuide`, `PanoramaBandOverlay`, `PanoramaGuidance`,
|
|
33
|
+
`PanoramaSettingsModal` (+ `DEFAULT_PANORAMA_SETTINGS` constant +
|
|
34
|
+
`PanoramaSettings` type), `ViewportCropOverlay`.
|
|
35
|
+
- Hooks: `useCapture`, `useVideoCapture`, `useDeviceOrientation`,
|
|
36
|
+
`useIncrementalStitcher`, `useIncrementalJSDriver`.
|
|
37
|
+
- Engine: `IncrementalOutcome`, `incrementalStitcherIsAvailable`,
|
|
38
|
+
`subscribeIncrementalState`, `getIncrementalNativeModule`,
|
|
39
|
+
`cleanupOldKeyframes`, `IncrementalState` (type).
|
|
40
|
+
- Batch stitching: `stitchVideo`.
|
|
41
|
+
- The 0.1.0 → 1.0 stability gate still applies — the goal of
|
|
42
|
+
surfacing layer 2 is to support advanced consumers (e.g.,
|
|
43
|
+
`retailens-camera-sdk`) without forcing them to deep-import
|
|
44
|
+
package internals. These are likely to keep their shape through
|
|
45
|
+
1.0, but the contract is not formally stable until then.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
|
|
49
|
+
- README now documents both layers and recommends `<Camera>` as the
|
|
50
|
+
default starting point.
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
|
|
54
|
+
(No bug fixes in this release — see 0.1.0 for the device-verified
|
|
55
|
+
camera lifecycle fixes that shipped with the initial release.)
|
|
56
|
+
|
|
57
|
+
## [0.1.0] — 2026-05-20
|
|
20
58
|
|
|
21
59
|
First public release.
|
|
22
60
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* react-native-image-stitcher — public API surface.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Two layers:
|
|
5
|
+
* 1. The high-level `<Camera>` component for hosts that want a
|
|
6
|
+
* drop-in capture experience. Tap = photo, hold + pan + release
|
|
7
|
+
* = panorama. Single mount, all UI included.
|
|
8
|
+
* 2. The lower-level building blocks (views, hooks, stitching
|
|
9
|
+
* engine bindings, settings modal, status overlays) for hosts
|
|
10
|
+
* that want to compose their own capture UX while reusing the
|
|
11
|
+
* battle-tested camera and stitching internals.
|
|
9
12
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
+
* Layer 1 (`<Camera>`) is the recommended starting point. Reach for
|
|
14
|
+
* layer 2 when the high-level component doesn't give you enough
|
|
15
|
+
* control — e.g., the private `retailens-camera-sdk` adds
|
|
16
|
+
* measurement + packet detection on top of these building blocks.
|
|
13
17
|
*
|
|
14
18
|
* Public/private split: this lib is the open-source foundation. The
|
|
15
|
-
* `retailens-camera-sdk` package depends on this lib and
|
|
16
|
-
* RetaiLens-specific features
|
|
17
|
-
* on top. Consumers wanting those features install
|
|
18
|
-
* `retailens-camera-sdk` instead.
|
|
19
|
+
* `retailens-camera-sdk` package depends on this lib (peer dep) and
|
|
20
|
+
* adds RetaiLens-specific features on top.
|
|
19
21
|
*/
|
|
20
22
|
export { Camera, CameraError } from './camera/Camera';
|
|
21
23
|
export type { CameraProps, CameraCaptureResult, CameraErrorCode, CaptureSource, CameraLens, StitchMode, Blender, SeamFinder, Warper, FramesDroppedInfo, } from './camera/Camera';
|
|
@@ -23,4 +25,30 @@ export { useARSession, ARTrackingState } from './ar/useARSession';
|
|
|
23
25
|
export type { UseARSessionReturn, FramePose, } from './ar/useARSession';
|
|
24
26
|
export { useIMUTranslationGate } from './sensors/useIMUTranslationGate';
|
|
25
27
|
export type { UseIMUTranslationGateOptions, UseIMUTranslationGateReturn, } from './sensors/useIMUTranslationGate';
|
|
28
|
+
export { ARCameraView } from './camera/ARCameraView';
|
|
29
|
+
export type { ARCameraViewHandle, ARCameraViewProps } from './camera/ARCameraView';
|
|
30
|
+
export { CameraView } from './camera/CameraView';
|
|
31
|
+
export type { CameraViewProps } from './camera/CameraView';
|
|
32
|
+
export { CaptureHeader } from './camera/CaptureHeader';
|
|
33
|
+
export { CaptureControlsBar } from './camera/CaptureControlsBar';
|
|
34
|
+
export { CapturePreview } from './camera/CapturePreview';
|
|
35
|
+
export type { CapturePreviewAction } from './camera/CapturePreview';
|
|
36
|
+
export { CaptureStatusOverlay } from './camera/CaptureStatusOverlay';
|
|
37
|
+
export type { CaptureStatusPhase } from './camera/CaptureStatusOverlay';
|
|
38
|
+
export { CaptureThumbnailStrip } from './camera/CaptureThumbnailStrip';
|
|
39
|
+
export type { CaptureThumbnailItem } from './camera/CaptureThumbnailStrip';
|
|
40
|
+
export { IncrementalPanGuide } from './camera/IncrementalPanGuide';
|
|
41
|
+
export { PanoramaBandOverlay } from './camera/PanoramaBandOverlay';
|
|
42
|
+
export { PanoramaGuidance } from './camera/PanoramaGuidance';
|
|
43
|
+
export { PanoramaSettingsModal, DEFAULT_PANORAMA_SETTINGS, } from './camera/PanoramaSettingsModal';
|
|
44
|
+
export type { PanoramaSettings } from './camera/PanoramaSettingsModal';
|
|
45
|
+
export { ViewportCropOverlay } from './camera/ViewportCropOverlay';
|
|
46
|
+
export { useCapture } from './camera/useCapture';
|
|
47
|
+
export { useVideoCapture } from './camera/useVideoCapture';
|
|
48
|
+
export { useDeviceOrientation } from './camera/useDeviceOrientation';
|
|
49
|
+
export { IncrementalOutcome, incrementalStitcherIsAvailable, subscribeIncrementalState, getIncrementalNativeModule, cleanupOldKeyframes, } from './stitching/incremental';
|
|
50
|
+
export type { IncrementalState } from './stitching/incremental';
|
|
51
|
+
export { useIncrementalStitcher } from './stitching/useIncrementalStitcher';
|
|
52
|
+
export { useIncrementalJSDriver } from './stitching/useIncrementalJSDriver';
|
|
53
|
+
export { stitchVideo } from './stitching/stitchVideo';
|
|
26
54
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -3,37 +3,110 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* react-native-image-stitcher — public API surface.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* Two layers:
|
|
7
|
+
* 1. The high-level `<Camera>` component for hosts that want a
|
|
8
|
+
* drop-in capture experience. Tap = photo, hold + pan + release
|
|
9
|
+
* = panorama. Single mount, all UI included.
|
|
10
|
+
* 2. The lower-level building blocks (views, hooks, stitching
|
|
11
|
+
* engine bindings, settings modal, status overlays) for hosts
|
|
12
|
+
* that want to compose their own capture UX while reusing the
|
|
13
|
+
* battle-tested camera and stitching internals.
|
|
11
14
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
+
* Layer 1 (`<Camera>`) is the recommended starting point. Reach for
|
|
16
|
+
* layer 2 when the high-level component doesn't give you enough
|
|
17
|
+
* control — e.g., the private `retailens-camera-sdk` adds
|
|
18
|
+
* measurement + packet detection on top of these building blocks.
|
|
15
19
|
*
|
|
16
20
|
* Public/private split: this lib is the open-source foundation. The
|
|
17
|
-
* `retailens-camera-sdk` package depends on this lib and
|
|
18
|
-
* RetaiLens-specific features
|
|
19
|
-
* on top. Consumers wanting those features install
|
|
20
|
-
* `retailens-camera-sdk` instead.
|
|
21
|
+
* `retailens-camera-sdk` package depends on this lib (peer dep) and
|
|
22
|
+
* adds RetaiLens-specific features on top.
|
|
21
23
|
*/
|
|
22
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.useIMUTranslationGate = exports.ARTrackingState = exports.useARSession = exports.CameraError = exports.Camera = void 0;
|
|
24
|
-
//
|
|
25
|
+
exports.stitchVideo = exports.useIncrementalJSDriver = exports.useIncrementalStitcher = exports.cleanupOldKeyframes = exports.getIncrementalNativeModule = exports.subscribeIncrementalState = exports.incrementalStitcherIsAvailable = exports.IncrementalOutcome = exports.useDeviceOrientation = exports.useVideoCapture = exports.useCapture = exports.ViewportCropOverlay = exports.DEFAULT_PANORAMA_SETTINGS = exports.PanoramaSettingsModal = exports.PanoramaGuidance = exports.PanoramaBandOverlay = exports.IncrementalPanGuide = exports.CaptureThumbnailStrip = exports.CaptureStatusOverlay = exports.CapturePreview = exports.CaptureControlsBar = exports.CaptureHeader = exports.CameraView = exports.ARCameraView = exports.useIMUTranslationGate = exports.ARTrackingState = exports.useARSession = exports.CameraError = exports.Camera = void 0;
|
|
26
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
27
|
+
// Layer 1 — the high-level <Camera> component
|
|
28
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
25
29
|
var Camera_1 = require("./camera/Camera");
|
|
26
30
|
Object.defineProperty(exports, "Camera", { enumerable: true, get: function () { return Camera_1.Camera; } });
|
|
27
31
|
Object.defineProperty(exports, "CameraError", { enumerable: true, get: function () { return Camera_1.CameraError; } });
|
|
28
|
-
//
|
|
32
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
33
|
+
// AR foundation (public since 0.1.0)
|
|
34
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
29
35
|
// Hosts that want raw AR pose access (e.g., to build their own
|
|
30
36
|
// measurement/detection on top) consume these directly.
|
|
31
37
|
var useARSession_1 = require("./ar/useARSession");
|
|
32
38
|
Object.defineProperty(exports, "useARSession", { enumerable: true, get: function () { return useARSession_1.useARSession; } });
|
|
33
39
|
Object.defineProperty(exports, "ARTrackingState", { enumerable: true, get: function () { return useARSession_1.ARTrackingState; } });
|
|
34
|
-
//
|
|
40
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
41
|
+
// IMU translation gate (public since 0.1.0)
|
|
42
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
35
43
|
// Hosts running their own non-AR capture flow can reuse this hook to
|
|
36
|
-
// get the same gating logic <Camera> uses internally.
|
|
44
|
+
// get the same translation-budget gating logic <Camera> uses internally.
|
|
37
45
|
var useIMUTranslationGate_1 = require("./sensors/useIMUTranslationGate");
|
|
38
46
|
Object.defineProperty(exports, "useIMUTranslationGate", { enumerable: true, get: function () { return useIMUTranslationGate_1.useIMUTranslationGate; } });
|
|
47
|
+
// ═════════════════════════════════════════════════════════════════════
|
|
48
|
+
// Layer 2 — composable building blocks (added in 0.1.1)
|
|
49
|
+
// ═════════════════════════════════════════════════════════════════════
|
|
50
|
+
// ── Camera view components ────────────────────────────────────────────
|
|
51
|
+
// Drop-in replacements for vision-camera's raw <Camera> (non-AR) and a
|
|
52
|
+
// parallel ARKit/ARCore-backed view (AR). Use these when you need to
|
|
53
|
+
// hand-compose your capture UI instead of mounting <Camera>.
|
|
54
|
+
var ARCameraView_1 = require("./camera/ARCameraView");
|
|
55
|
+
Object.defineProperty(exports, "ARCameraView", { enumerable: true, get: function () { return ARCameraView_1.ARCameraView; } });
|
|
56
|
+
var CameraView_1 = require("./camera/CameraView");
|
|
57
|
+
Object.defineProperty(exports, "CameraView", { enumerable: true, get: function () { return CameraView_1.CameraView; } });
|
|
58
|
+
// ── UI components ─────────────────────────────────────────────────────
|
|
59
|
+
// Presentational pieces of the standard capture screen. Each is a
|
|
60
|
+
// pure component; the host wires the props.
|
|
61
|
+
var CaptureHeader_1 = require("./camera/CaptureHeader");
|
|
62
|
+
Object.defineProperty(exports, "CaptureHeader", { enumerable: true, get: function () { return CaptureHeader_1.CaptureHeader; } });
|
|
63
|
+
var CaptureControlsBar_1 = require("./camera/CaptureControlsBar");
|
|
64
|
+
Object.defineProperty(exports, "CaptureControlsBar", { enumerable: true, get: function () { return CaptureControlsBar_1.CaptureControlsBar; } });
|
|
65
|
+
var CapturePreview_1 = require("./camera/CapturePreview");
|
|
66
|
+
Object.defineProperty(exports, "CapturePreview", { enumerable: true, get: function () { return CapturePreview_1.CapturePreview; } });
|
|
67
|
+
var CaptureStatusOverlay_1 = require("./camera/CaptureStatusOverlay");
|
|
68
|
+
Object.defineProperty(exports, "CaptureStatusOverlay", { enumerable: true, get: function () { return CaptureStatusOverlay_1.CaptureStatusOverlay; } });
|
|
69
|
+
var CaptureThumbnailStrip_1 = require("./camera/CaptureThumbnailStrip");
|
|
70
|
+
Object.defineProperty(exports, "CaptureThumbnailStrip", { enumerable: true, get: function () { return CaptureThumbnailStrip_1.CaptureThumbnailStrip; } });
|
|
71
|
+
var IncrementalPanGuide_1 = require("./camera/IncrementalPanGuide");
|
|
72
|
+
Object.defineProperty(exports, "IncrementalPanGuide", { enumerable: true, get: function () { return IncrementalPanGuide_1.IncrementalPanGuide; } });
|
|
73
|
+
var PanoramaBandOverlay_1 = require("./camera/PanoramaBandOverlay");
|
|
74
|
+
Object.defineProperty(exports, "PanoramaBandOverlay", { enumerable: true, get: function () { return PanoramaBandOverlay_1.PanoramaBandOverlay; } });
|
|
75
|
+
var PanoramaGuidance_1 = require("./camera/PanoramaGuidance");
|
|
76
|
+
Object.defineProperty(exports, "PanoramaGuidance", { enumerable: true, get: function () { return PanoramaGuidance_1.PanoramaGuidance; } });
|
|
77
|
+
var PanoramaSettingsModal_1 = require("./camera/PanoramaSettingsModal");
|
|
78
|
+
Object.defineProperty(exports, "PanoramaSettingsModal", { enumerable: true, get: function () { return PanoramaSettingsModal_1.PanoramaSettingsModal; } });
|
|
79
|
+
Object.defineProperty(exports, "DEFAULT_PANORAMA_SETTINGS", { enumerable: true, get: function () { return PanoramaSettingsModal_1.DEFAULT_PANORAMA_SETTINGS; } });
|
|
80
|
+
var ViewportCropOverlay_1 = require("./camera/ViewportCropOverlay");
|
|
81
|
+
Object.defineProperty(exports, "ViewportCropOverlay", { enumerable: true, get: function () { return ViewportCropOverlay_1.ViewportCropOverlay; } });
|
|
82
|
+
// ── Capture hooks ─────────────────────────────────────────────────────
|
|
83
|
+
// vision-camera wrappers (useCapture / useVideoCapture) + a
|
|
84
|
+
// device-orientation reader that works under iOS portrait-lock.
|
|
85
|
+
var useCapture_1 = require("./camera/useCapture");
|
|
86
|
+
Object.defineProperty(exports, "useCapture", { enumerable: true, get: function () { return useCapture_1.useCapture; } });
|
|
87
|
+
var useVideoCapture_1 = require("./camera/useVideoCapture");
|
|
88
|
+
Object.defineProperty(exports, "useVideoCapture", { enumerable: true, get: function () { return useVideoCapture_1.useVideoCapture; } });
|
|
89
|
+
var useDeviceOrientation_1 = require("./camera/useDeviceOrientation");
|
|
90
|
+
Object.defineProperty(exports, "useDeviceOrientation", { enumerable: true, get: function () { return useDeviceOrientation_1.useDeviceOrientation; } });
|
|
91
|
+
// ── Incremental stitching engine ──────────────────────────────────────
|
|
92
|
+
// JS bindings around the native `IncrementalStitcher` module. Use
|
|
93
|
+
// these when you need finer control than <Camera>'s built-in
|
|
94
|
+
// hold-to-pan flow (e.g., feeding frames from a custom source, or
|
|
95
|
+
// reading the engine's running state to drive a custom UI).
|
|
96
|
+
var incremental_1 = require("./stitching/incremental");
|
|
97
|
+
Object.defineProperty(exports, "IncrementalOutcome", { enumerable: true, get: function () { return incremental_1.IncrementalOutcome; } });
|
|
98
|
+
Object.defineProperty(exports, "incrementalStitcherIsAvailable", { enumerable: true, get: function () { return incremental_1.incrementalStitcherIsAvailable; } });
|
|
99
|
+
Object.defineProperty(exports, "subscribeIncrementalState", { enumerable: true, get: function () { return incremental_1.subscribeIncrementalState; } });
|
|
100
|
+
Object.defineProperty(exports, "getIncrementalNativeModule", { enumerable: true, get: function () { return incremental_1.getIncrementalNativeModule; } });
|
|
101
|
+
Object.defineProperty(exports, "cleanupOldKeyframes", { enumerable: true, get: function () { return incremental_1.cleanupOldKeyframes; } });
|
|
102
|
+
var useIncrementalStitcher_1 = require("./stitching/useIncrementalStitcher");
|
|
103
|
+
Object.defineProperty(exports, "useIncrementalStitcher", { enumerable: true, get: function () { return useIncrementalStitcher_1.useIncrementalStitcher; } });
|
|
104
|
+
var useIncrementalJSDriver_1 = require("./stitching/useIncrementalJSDriver");
|
|
105
|
+
Object.defineProperty(exports, "useIncrementalJSDriver", { enumerable: true, get: function () { return useIncrementalJSDriver_1.useIncrementalJSDriver; } });
|
|
106
|
+
// ── Batch stitching ───────────────────────────────────────────────────
|
|
107
|
+
// Feed a video file straight to OpenCV's cv::Stitcher, bypassing the
|
|
108
|
+
// incremental pipeline. Useful when you have content captured
|
|
109
|
+
// outside the SDK and just want a panorama out.
|
|
110
|
+
var stitchVideo_1 = require("./stitching/stitchVideo");
|
|
111
|
+
Object.defineProperty(exports, "stitchVideo", { enumerable: true, get: function () { return stitchVideo_1.stitchVideo; } });
|
|
39
112
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-image-stitcher",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Pose-aware panorama capture + stitching for React Native. One <Camera> component, both tap-to-photo and hold-to-pan modes, both AR-backed and IMU-fallback capture paths.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/src/index.ts
CHANGED
|
@@ -2,24 +2,28 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* react-native-image-stitcher — public API surface.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Two layers:
|
|
6
|
+
* 1. The high-level `<Camera>` component for hosts that want a
|
|
7
|
+
* drop-in capture experience. Tap = photo, hold + pan + release
|
|
8
|
+
* = panorama. Single mount, all UI included.
|
|
9
|
+
* 2. The lower-level building blocks (views, hooks, stitching
|
|
10
|
+
* engine bindings, settings modal, status overlays) for hosts
|
|
11
|
+
* that want to compose their own capture UX while reusing the
|
|
12
|
+
* battle-tested camera and stitching internals.
|
|
10
13
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
+
* Layer 1 (`<Camera>`) is the recommended starting point. Reach for
|
|
15
|
+
* layer 2 when the high-level component doesn't give you enough
|
|
16
|
+
* control — e.g., the private `retailens-camera-sdk` adds
|
|
17
|
+
* measurement + packet detection on top of these building blocks.
|
|
14
18
|
*
|
|
15
19
|
* Public/private split: this lib is the open-source foundation. The
|
|
16
|
-
* `retailens-camera-sdk` package depends on this lib and
|
|
17
|
-
* RetaiLens-specific features
|
|
18
|
-
* on top. Consumers wanting those features install
|
|
19
|
-
* `retailens-camera-sdk` instead.
|
|
20
|
+
* `retailens-camera-sdk` package depends on this lib (peer dep) and
|
|
21
|
+
* adds RetaiLens-specific features on top.
|
|
20
22
|
*/
|
|
21
23
|
|
|
22
|
-
//
|
|
24
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
25
|
+
// Layer 1 — the high-level <Camera> component
|
|
26
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
23
27
|
export { Camera, CameraError } from './camera/Camera';
|
|
24
28
|
export type {
|
|
25
29
|
CameraProps,
|
|
@@ -34,7 +38,9 @@ export type {
|
|
|
34
38
|
FramesDroppedInfo,
|
|
35
39
|
} from './camera/Camera';
|
|
36
40
|
|
|
37
|
-
//
|
|
41
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
42
|
+
// AR foundation (public since 0.1.0)
|
|
43
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
38
44
|
// Hosts that want raw AR pose access (e.g., to build their own
|
|
39
45
|
// measurement/detection on top) consume these directly.
|
|
40
46
|
export { useARSession, ARTrackingState } from './ar/useARSession';
|
|
@@ -43,11 +49,76 @@ export type {
|
|
|
43
49
|
FramePose,
|
|
44
50
|
} from './ar/useARSession';
|
|
45
51
|
|
|
46
|
-
//
|
|
52
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
53
|
+
// IMU translation gate (public since 0.1.0)
|
|
54
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
47
55
|
// Hosts running their own non-AR capture flow can reuse this hook to
|
|
48
|
-
// get the same gating logic <Camera> uses internally.
|
|
56
|
+
// get the same translation-budget gating logic <Camera> uses internally.
|
|
49
57
|
export { useIMUTranslationGate } from './sensors/useIMUTranslationGate';
|
|
50
58
|
export type {
|
|
51
59
|
UseIMUTranslationGateOptions,
|
|
52
60
|
UseIMUTranslationGateReturn,
|
|
53
61
|
} from './sensors/useIMUTranslationGate';
|
|
62
|
+
|
|
63
|
+
// ═════════════════════════════════════════════════════════════════════
|
|
64
|
+
// Layer 2 — composable building blocks (added in 0.1.1)
|
|
65
|
+
// ═════════════════════════════════════════════════════════════════════
|
|
66
|
+
|
|
67
|
+
// ── Camera view components ────────────────────────────────────────────
|
|
68
|
+
// Drop-in replacements for vision-camera's raw <Camera> (non-AR) and a
|
|
69
|
+
// parallel ARKit/ARCore-backed view (AR). Use these when you need to
|
|
70
|
+
// hand-compose your capture UI instead of mounting <Camera>.
|
|
71
|
+
export { ARCameraView } from './camera/ARCameraView';
|
|
72
|
+
export type { ARCameraViewHandle, ARCameraViewProps } from './camera/ARCameraView';
|
|
73
|
+
export { CameraView } from './camera/CameraView';
|
|
74
|
+
export type { CameraViewProps } from './camera/CameraView';
|
|
75
|
+
|
|
76
|
+
// ── UI components ─────────────────────────────────────────────────────
|
|
77
|
+
// Presentational pieces of the standard capture screen. Each is a
|
|
78
|
+
// pure component; the host wires the props.
|
|
79
|
+
export { CaptureHeader } from './camera/CaptureHeader';
|
|
80
|
+
export { CaptureControlsBar } from './camera/CaptureControlsBar';
|
|
81
|
+
export { CapturePreview } from './camera/CapturePreview';
|
|
82
|
+
export type { CapturePreviewAction } from './camera/CapturePreview';
|
|
83
|
+
export { CaptureStatusOverlay } from './camera/CaptureStatusOverlay';
|
|
84
|
+
export type { CaptureStatusPhase } from './camera/CaptureStatusOverlay';
|
|
85
|
+
export { CaptureThumbnailStrip } from './camera/CaptureThumbnailStrip';
|
|
86
|
+
export type { CaptureThumbnailItem } from './camera/CaptureThumbnailStrip';
|
|
87
|
+
export { IncrementalPanGuide } from './camera/IncrementalPanGuide';
|
|
88
|
+
export { PanoramaBandOverlay } from './camera/PanoramaBandOverlay';
|
|
89
|
+
export { PanoramaGuidance } from './camera/PanoramaGuidance';
|
|
90
|
+
export {
|
|
91
|
+
PanoramaSettingsModal,
|
|
92
|
+
DEFAULT_PANORAMA_SETTINGS,
|
|
93
|
+
} from './camera/PanoramaSettingsModal';
|
|
94
|
+
export type { PanoramaSettings } from './camera/PanoramaSettingsModal';
|
|
95
|
+
export { ViewportCropOverlay } from './camera/ViewportCropOverlay';
|
|
96
|
+
|
|
97
|
+
// ── Capture hooks ─────────────────────────────────────────────────────
|
|
98
|
+
// vision-camera wrappers (useCapture / useVideoCapture) + a
|
|
99
|
+
// device-orientation reader that works under iOS portrait-lock.
|
|
100
|
+
export { useCapture } from './camera/useCapture';
|
|
101
|
+
export { useVideoCapture } from './camera/useVideoCapture';
|
|
102
|
+
export { useDeviceOrientation } from './camera/useDeviceOrientation';
|
|
103
|
+
|
|
104
|
+
// ── Incremental stitching engine ──────────────────────────────────────
|
|
105
|
+
// JS bindings around the native `IncrementalStitcher` module. Use
|
|
106
|
+
// these when you need finer control than <Camera>'s built-in
|
|
107
|
+
// hold-to-pan flow (e.g., feeding frames from a custom source, or
|
|
108
|
+
// reading the engine's running state to drive a custom UI).
|
|
109
|
+
export {
|
|
110
|
+
IncrementalOutcome,
|
|
111
|
+
incrementalStitcherIsAvailable,
|
|
112
|
+
subscribeIncrementalState,
|
|
113
|
+
getIncrementalNativeModule,
|
|
114
|
+
cleanupOldKeyframes,
|
|
115
|
+
} from './stitching/incremental';
|
|
116
|
+
export type { IncrementalState } from './stitching/incremental';
|
|
117
|
+
export { useIncrementalStitcher } from './stitching/useIncrementalStitcher';
|
|
118
|
+
export { useIncrementalJSDriver } from './stitching/useIncrementalJSDriver';
|
|
119
|
+
|
|
120
|
+
// ── Batch stitching ───────────────────────────────────────────────────
|
|
121
|
+
// Feed a video file straight to OpenCV's cv::Stitcher, bypassing the
|
|
122
|
+
// incremental pipeline. Useful when you have content captured
|
|
123
|
+
// outside the SDK and just want a panorama out.
|
|
124
|
+
export { stitchVideo } from './stitching/stitchVideo';
|