@snap/react-camera-kit 0.0.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/LICENSE.md +37 -0
- package/README.md +130 -0
- package/dist/cjs/CameraKitProvider.d.ts +203 -0
- package/dist/cjs/CameraKitProvider.d.ts.map +1 -0
- package/dist/cjs/CameraKitProvider.js +542 -0
- package/dist/cjs/CameraKitProvider.js.map +1 -0
- package/dist/cjs/Canvas.d.ts +7 -0
- package/dist/cjs/Canvas.d.ts.map +1 -0
- package/dist/cjs/Canvas.js +50 -0
- package/dist/cjs/Canvas.js.map +1 -0
- package/dist/cjs/LensPlayer.d.ts +101 -0
- package/dist/cjs/LensPlayer.d.ts.map +1 -0
- package/dist/cjs/LensPlayer.js +67 -0
- package/dist/cjs/LensPlayer.js.map +1 -0
- package/dist/cjs/index.d.ts +17 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +34 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal/bootstrapUtils.d.ts +13 -0
- package/dist/cjs/internal/bootstrapUtils.d.ts.map +1 -0
- package/dist/cjs/internal/bootstrapUtils.js +29 -0
- package/dist/cjs/internal/bootstrapUtils.js.map +1 -0
- package/dist/cjs/internal/error.d.ts +2 -0
- package/dist/cjs/internal/error.d.ts.map +1 -0
- package/dist/cjs/internal/error.js +30 -0
- package/dist/cjs/internal/error.js.map +1 -0
- package/dist/cjs/internal/isMobile.d.ts +5 -0
- package/dist/cjs/internal/isMobile.d.ts.map +1 -0
- package/dist/cjs/internal/isMobile.js +15 -0
- package/dist/cjs/internal/isMobile.js.map +1 -0
- package/dist/cjs/internal/logging.d.ts +40 -0
- package/dist/cjs/internal/logging.d.ts.map +1 -0
- package/dist/cjs/internal/logging.js +63 -0
- package/dist/cjs/internal/logging.js.map +1 -0
- package/dist/cjs/internal/metrics.d.ts +29 -0
- package/dist/cjs/internal/metrics.d.ts.map +1 -0
- package/dist/cjs/internal/metrics.js +128 -0
- package/dist/cjs/internal/metrics.js.map +1 -0
- package/dist/cjs/internal/sessionUtils.d.ts +3 -0
- package/dist/cjs/internal/sessionUtils.d.ts.map +1 -0
- package/dist/cjs/internal/sessionUtils.js +17 -0
- package/dist/cjs/internal/sessionUtils.js.map +1 -0
- package/dist/cjs/internal/sourceUtils.d.ts +22 -0
- package/dist/cjs/internal/sourceUtils.d.ts.map +1 -0
- package/dist/cjs/internal/sourceUtils.js +143 -0
- package/dist/cjs/internal/sourceUtils.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types.d.ts +96 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +26 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/useApplyLens.d.ts +25 -0
- package/dist/cjs/useApplyLens.d.ts.map +1 -0
- package/dist/cjs/useApplyLens.js +87 -0
- package/dist/cjs/useApplyLens.js.map +1 -0
- package/dist/cjs/useApplySource.d.ts +11 -0
- package/dist/cjs/useApplySource.d.ts.map +1 -0
- package/dist/cjs/useApplySource.js +66 -0
- package/dist/cjs/useApplySource.js.map +1 -0
- package/dist/cjs/usePlaybackOptions.d.ts +38 -0
- package/dist/cjs/usePlaybackOptions.d.ts.map +1 -0
- package/dist/cjs/usePlaybackOptions.js +51 -0
- package/dist/cjs/usePlaybackOptions.js.map +1 -0
- package/dist/cjs/version.d.ts +3 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +6 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/CameraKitProvider.d.ts +203 -0
- package/dist/esm/CameraKitProvider.d.ts.map +1 -0
- package/dist/esm/CameraKitProvider.js +533 -0
- package/dist/esm/CameraKitProvider.js.map +1 -0
- package/dist/esm/Canvas.d.ts +7 -0
- package/dist/esm/Canvas.d.ts.map +1 -0
- package/dist/esm/Canvas.js +45 -0
- package/dist/esm/Canvas.js.map +1 -0
- package/dist/esm/LensPlayer.d.ts +101 -0
- package/dist/esm/LensPlayer.d.ts.map +1 -0
- package/dist/esm/LensPlayer.js +63 -0
- package/dist/esm/LensPlayer.js.map +1 -0
- package/dist/esm/index.d.ts +17 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal/bootstrapUtils.d.ts +13 -0
- package/dist/esm/internal/bootstrapUtils.d.ts.map +1 -0
- package/dist/esm/internal/bootstrapUtils.js +26 -0
- package/dist/esm/internal/bootstrapUtils.js.map +1 -0
- package/dist/esm/internal/error.d.ts +2 -0
- package/dist/esm/internal/error.d.ts.map +1 -0
- package/dist/esm/internal/error.js +27 -0
- package/dist/esm/internal/error.js.map +1 -0
- package/dist/esm/internal/isMobile.d.ts +5 -0
- package/dist/esm/internal/isMobile.d.ts.map +1 -0
- package/dist/esm/internal/isMobile.js +12 -0
- package/dist/esm/internal/isMobile.js.map +1 -0
- package/dist/esm/internal/logging.d.ts +40 -0
- package/dist/esm/internal/logging.d.ts.map +1 -0
- package/dist/esm/internal/logging.js +58 -0
- package/dist/esm/internal/logging.js.map +1 -0
- package/dist/esm/internal/metrics.d.ts +29 -0
- package/dist/esm/internal/metrics.d.ts.map +1 -0
- package/dist/esm/internal/metrics.js +91 -0
- package/dist/esm/internal/metrics.js.map +1 -0
- package/dist/esm/internal/sessionUtils.d.ts +3 -0
- package/dist/esm/internal/sessionUtils.d.ts.map +1 -0
- package/dist/esm/internal/sessionUtils.js +14 -0
- package/dist/esm/internal/sessionUtils.js.map +1 -0
- package/dist/esm/internal/sourceUtils.d.ts +22 -0
- package/dist/esm/internal/sourceUtils.d.ts.map +1 -0
- package/dist/esm/internal/sourceUtils.js +139 -0
- package/dist/esm/internal/sourceUtils.js.map +1 -0
- package/dist/esm/types.d.ts +96 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +20 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/useApplyLens.d.ts +25 -0
- package/dist/esm/useApplyLens.d.ts.map +1 -0
- package/dist/esm/useApplyLens.js +81 -0
- package/dist/esm/useApplyLens.js.map +1 -0
- package/dist/esm/useApplySource.d.ts +11 -0
- package/dist/esm/useApplySource.d.ts.map +1 -0
- package/dist/esm/useApplySource.js +60 -0
- package/dist/esm/useApplySource.js.map +1 -0
- package/dist/esm/usePlaybackOptions.d.ts +38 -0
- package/dist/esm/usePlaybackOptions.d.ts.map +1 -0
- package/dist/esm/usePlaybackOptions.js +48 -0
- package/dist/esm/usePlaybackOptions.js.map +1 -0
- package/dist/esm/version.d.ts +3 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +3 -0
- package/dist/esm/version.js.map +1 -0
- package/package.json +94 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Copyright © 2026 Snap Inc.
|
|
2
|
+
|
|
3
|
+
Camera Kit Web React Bindings are made available under the MIT License. Access to or use of Camera Kit is subject to the Snap Developer Terms and Snap Camera Kit Terms linked to below.
|
|
4
|
+
|
|
5
|
+
**MIT License**
|
|
6
|
+
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
8
|
+
|
|
9
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
10
|
+
|
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
12
|
+
|
|
13
|
+
**Snap Developer Terms**
|
|
14
|
+
|
|
15
|
+
Access to or use of developer products and services made available to you by Snap Inc. and its affiliates (“Snap”), is subject to the Snap Developer Terms, which can be found at:
|
|
16
|
+
|
|
17
|
+
https://snap.com/en-US/terms/developer
|
|
18
|
+
|
|
19
|
+
If you do not agree to these terms, do not use or otherwise access Snap developer products, including Camera Kit.
|
|
20
|
+
|
|
21
|
+
—-
|
|
22
|
+
|
|
23
|
+
**Snap Camera Kit Terms**
|
|
24
|
+
|
|
25
|
+
Access to or use of Camera Kit and its associated documentation, software code, and other materials (collectively, “Camera Kit”), made available by Snap Inc. and its affiliates ("Snap"), is subject to the Snap Camera Kit Terms, which can be found at:
|
|
26
|
+
|
|
27
|
+
https://www.snap.com/terms/snap-camera-kit
|
|
28
|
+
|
|
29
|
+
If you do not agree to these terms, do not use or otherwise access Camera Kit.
|
|
30
|
+
|
|
31
|
+
**Third-Party Software**
|
|
32
|
+
|
|
33
|
+
Camera Kit Web React Bindings includes or interacts with third-party software. A detailed report of the third-party software used, including their respective licenses, can be found at the following link.
|
|
34
|
+
|
|
35
|
+
https://portal.fossa.com/p/snap/release/5555/30311
|
|
36
|
+
|
|
37
|
+
We aim to maintain transparency and compliance with all third-party license requirements. If you spot an issue or believe attribution is missing, please reach out to us at [opensource@snap.com](mailto:opensource@snap.com).
|
package/README.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# @snap/react-camera-kit
|
|
2
|
+
|
|
3
|
+
React Camera Kit for web applications.
|
|
4
|
+
|
|
5
|
+
**[Live Demo](https://snapchat.github.io/react-camera-kit/)**
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @snap/react-camera-kit @snap/camera-kit
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
Before using this package, complete Camera Kit Web setup and obtain:
|
|
16
|
+
|
|
17
|
+
- `apiToken`
|
|
18
|
+
- `lensId`
|
|
19
|
+
- `lensGroupId`
|
|
20
|
+
- `https://` for deployed apps (`http://localhost` should works for local dev)
|
|
21
|
+
|
|
22
|
+
Full setup guides:
|
|
23
|
+
|
|
24
|
+
- Camera Kit Web configuration: https://developers.snap.com/camera-kit/integrate-sdk/web/web-configuration
|
|
25
|
+
- `@snap/camera-kit` docs: https://www.npmjs.com/package/@snap/camera-kit
|
|
26
|
+
|
|
27
|
+
## Compatibility
|
|
28
|
+
|
|
29
|
+
- Requires `@snap/camera-kit` `^1.13.0`, because `1.13.0+` includes the SDK-side font bootstrap behavior needed by this package.
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
This package provides a simple API for integrating Camera Kit into React applications.
|
|
34
|
+
|
|
35
|
+
The simplest use case is:
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
<CameraKitProvider apiToken="YOUR_TOKEN">
|
|
39
|
+
<LensPlayer lensId="YOUR_LENS_ID" lensGroupId="YOUR_GROUP_ID" />
|
|
40
|
+
</CameraKitProvider>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
if you need to render specific canvas with custom layout:
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
<CameraKitProvider apiToken="YOUR_TOKEN">
|
|
47
|
+
<LensPlayer lensId="YOUR_LENS_ID" lensGroupId="YOUR_GROUP_ID" canvasType="both">
|
|
48
|
+
<div>
|
|
49
|
+
<LiveCanvas />
|
|
50
|
+
</div>
|
|
51
|
+
<div>
|
|
52
|
+
<CaptureCanvas />
|
|
53
|
+
</div>
|
|
54
|
+
</LensPlayer>
|
|
55
|
+
</CameraKitProvider>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
if you need to access lens status (assuming `CameraKitProvider` context):
|
|
59
|
+
|
|
60
|
+
```tsx
|
|
61
|
+
function Preview() {
|
|
62
|
+
const { lens } = useCameraKit();
|
|
63
|
+
return (
|
|
64
|
+
<LensPlayer lensId="YOUR_LENS_ID" lensGroupId="YOUR_GROUP_ID">
|
|
65
|
+
{lens.status !== "ready" && lens.status !== "error" && <Spinner />}
|
|
66
|
+
{lens.status === "error" && <Error error={lens.error} />}
|
|
67
|
+
{lens.status === "ready" && <LiveCanvas />}
|
|
68
|
+
</LensPlayer>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
When you need full control (assuming `CameraKitProvider` context):
|
|
74
|
+
|
|
75
|
+
```tsx
|
|
76
|
+
function Preview() {
|
|
77
|
+
const { sdkStatus, source, lens } = useCameraKit();
|
|
78
|
+
useApplySource({ kind: "video", url: "/demo.mp4" }, { mode: "fixed", width: 720, height: 1280 });
|
|
79
|
+
useApplyLens("123", "abc", launchData);
|
|
80
|
+
usePlaybackOptions({ onError: (error) => console.error(error) });
|
|
81
|
+
|
|
82
|
+
if (sdkStatus !== "ready" || source.status !== "ready" || lens.status !== "ready") {
|
|
83
|
+
return <Spinner />;
|
|
84
|
+
}
|
|
85
|
+
return <CaptureCanvas className="rounded-xl" />;
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Development
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Install dependencies
|
|
93
|
+
npm install
|
|
94
|
+
|
|
95
|
+
# Build the package (ESM + CJS)
|
|
96
|
+
npm run build
|
|
97
|
+
|
|
98
|
+
# Build in watch mode (for development)
|
|
99
|
+
npm run watch
|
|
100
|
+
|
|
101
|
+
# Type checking
|
|
102
|
+
npm run typecheck
|
|
103
|
+
|
|
104
|
+
# Run tests
|
|
105
|
+
npm test
|
|
106
|
+
|
|
107
|
+
# Clean dist folder
|
|
108
|
+
npm run clean
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Demo App
|
|
112
|
+
|
|
113
|
+
A Vite demo app is available at `demo`.
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
npm run demo:install
|
|
117
|
+
cp demo/.env.example demo/.env
|
|
118
|
+
npm run demo:dev
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Contributing
|
|
122
|
+
|
|
123
|
+
We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details on how to get started.
|
|
124
|
+
|
|
125
|
+
- [Code of Conduct](CODE_OF_CONDUCT.md)
|
|
126
|
+
- [Security Policy](SECURITY.md)
|
|
127
|
+
|
|
128
|
+
## License
|
|
129
|
+
|
|
130
|
+
[MIT](LICENSE.md)
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
import { CameraKit, CameraKitBootstrapConfiguration, CameraKitSession, PublicContainer, Lens, LensLaunchData, ScreenRegions, Keyboard } from "@snap/camera-kit";
|
|
3
|
+
import { CurrentLens, CurrentSource, SourceInput, OutputSize } from "./types";
|
|
4
|
+
import { CameraKitLogger, LogLevel } from "./internal/logging";
|
|
5
|
+
export type MetricEventHandlerFactory = () => (event: {
|
|
6
|
+
kind: "bootstrap-attempt" | "bootstrap-success";
|
|
7
|
+
} | {
|
|
8
|
+
kind: "bootstrap-failure" | "lens-failure";
|
|
9
|
+
error: Error;
|
|
10
|
+
}) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Public context interface exposed to consumers via useCameraKit hook.
|
|
13
|
+
* Provides access to Camera Kit SDK state, Lens management, source control, and playback options.
|
|
14
|
+
*/
|
|
15
|
+
interface CameraKitContextValue {
|
|
16
|
+
/** Current SDK initialization status. */
|
|
17
|
+
sdkStatus: "uninitialized" | "initializing" | "ready" | "error";
|
|
18
|
+
/** Error that occurred during SDK initialization, if any. */
|
|
19
|
+
sdkError: Error | undefined;
|
|
20
|
+
/** Live canvas element for real-time preview rendering. */
|
|
21
|
+
liveCanvas: HTMLCanvasElement | undefined;
|
|
22
|
+
/** Capture canvas element for snapshot rendering. */
|
|
23
|
+
captureCanvas: HTMLCanvasElement | undefined;
|
|
24
|
+
/** Source state including status, input parameters, and any errors. */
|
|
25
|
+
source: CurrentSource;
|
|
26
|
+
/** Lens state including status, Lens object, and any errors. */
|
|
27
|
+
lens: CurrentLens;
|
|
28
|
+
/**
|
|
29
|
+
* The {@link Keyboard} API enables applications to handle keyboard input requests from lenses.
|
|
30
|
+
* When a lens requests a keyboard, the app displays it in its preferred UI. As users type,
|
|
31
|
+
* the app sends the text back to the lens for display. The lens can also request keyboard dismissal,
|
|
32
|
+
* prompting the app to remove the displayed keyboard.
|
|
33
|
+
*/
|
|
34
|
+
keyboard: Keyboard | undefined;
|
|
35
|
+
/** Attempts to re-initialize the SDK after an error. Only available when SDK is in error state. */
|
|
36
|
+
reinitialize: () => void;
|
|
37
|
+
/** Applies a media source (camera, video, or image) to the session. */
|
|
38
|
+
applySource: (input: SourceInput, size?: OutputSize) => Promise<void>;
|
|
39
|
+
/** Removes the current source from the session. */
|
|
40
|
+
removeSource: () => Promise<void>;
|
|
41
|
+
/** Array of lenses that have been loaded via fetchLens or fetchLenses. */
|
|
42
|
+
lenses: Lens[];
|
|
43
|
+
/** Loads a single Lens by ID and group ID. Returns cached Lens if already loaded. */
|
|
44
|
+
fetchLens: (lensId: string, groupId: string) => Promise<Lens>;
|
|
45
|
+
/** Loads all lenses from one or more Lens groups. */
|
|
46
|
+
fetchLenses: (groupId: string | string[]) => Promise<Lens[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Applies a Lens to the current session.
|
|
49
|
+
* @param lensId - The Lens identifier
|
|
50
|
+
* @param groupId - The Lens group identifier
|
|
51
|
+
* @param launchData - Optional launch parameters for the Lens
|
|
52
|
+
* @param lensReadyGuard - Optional async guard for coordinating Lens application
|
|
53
|
+
* @returns Promise that resolves to true if Lens was applied successfully
|
|
54
|
+
*/
|
|
55
|
+
applyLens: (lensId: string, groupId: string, launchData?: LensLaunchData, lensReadyGuard?: () => Promise<void>) => Promise<boolean>;
|
|
56
|
+
/** Removes the currently applied Lens from the session. */
|
|
57
|
+
removeLens: () => Promise<boolean>;
|
|
58
|
+
/** Refreshes the current Lens by removing and reapplying it. */
|
|
59
|
+
refreshLens: () => Promise<void>;
|
|
60
|
+
/** Sets the muted state for audio playback. */
|
|
61
|
+
setMuted: (muted: boolean) => void;
|
|
62
|
+
/** Toggles the current muted state. */
|
|
63
|
+
toggleMuted: () => void;
|
|
64
|
+
/** Whether audio is currently muted. */
|
|
65
|
+
isMuted: boolean;
|
|
66
|
+
/** Current FPS limit, if set. */
|
|
67
|
+
fpsLimit: number | undefined;
|
|
68
|
+
/** Sets the maximum FPS for rendering. Useful for reducing resource usage. */
|
|
69
|
+
setFPSLimit: (fpsLimit: number) => Promise<void>;
|
|
70
|
+
/** Current screen regions configuration, if set. */
|
|
71
|
+
screenRegions: ScreenRegions | undefined;
|
|
72
|
+
/** Sets screen regions for Lens-aware UI layout. */
|
|
73
|
+
setScreenRegions: (screenRegions: ScreenRegions) => Promise<void>;
|
|
74
|
+
}
|
|
75
|
+
interface InternalCameraKitContextValue extends CameraKitContextValue {
|
|
76
|
+
cameraKit: CameraKit | undefined;
|
|
77
|
+
currentSession: CameraKitSession | undefined;
|
|
78
|
+
getLogger: (ns: string) => CameraKitLogger;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Props for the CameraKitProvider component.
|
|
82
|
+
* Extends Camera Kit bootstrap configuration with React-specific options.
|
|
83
|
+
*/
|
|
84
|
+
interface CameraKitProviderProps extends Omit<CameraKitBootstrapConfiguration, "logger"> {
|
|
85
|
+
/**
|
|
86
|
+
* Optional function to extend the Camera Kit dependency injection container.
|
|
87
|
+
* This is the second parameter to bootstrapCameraKit and allows customization
|
|
88
|
+
* of the SDK's internal dependencies.
|
|
89
|
+
*/
|
|
90
|
+
extendContainer?: (container: PublicContainer) => PublicContainer;
|
|
91
|
+
/**
|
|
92
|
+
* Optional factory for creating bootstrap event handlers for metrics/analytics.
|
|
93
|
+
* Useful for tracking SDK initialization success/failure in your analytics system.
|
|
94
|
+
*/
|
|
95
|
+
createBootstrapEventHandler?: MetricEventHandlerFactory;
|
|
96
|
+
/**
|
|
97
|
+
* Optional custom logger implementation. If not provided, a no-op logger is used by default.
|
|
98
|
+
* Pass createConsoleLogger() from './logging' for console-based logging in development.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```tsx
|
|
102
|
+
* import { createConsoleLogger } from '@snap/react-camera-kit';
|
|
103
|
+
*
|
|
104
|
+
* <CameraKitProvider logger={createConsoleLogger()} logLevel="debug">
|
|
105
|
+
* {children}
|
|
106
|
+
* </CameraKitProvider>
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
logger?: CameraKitLogger;
|
|
110
|
+
/**
|
|
111
|
+
* Optional log level to control logger verbosity. Defaults to "info" if not specified.
|
|
112
|
+
* Supported levels: "debug", "info", "warn", "error".
|
|
113
|
+
*/
|
|
114
|
+
logLevel?: LogLevel;
|
|
115
|
+
/**
|
|
116
|
+
* Browsers optimize tabs when they are hidden - for example, by pausing the execution of requestAnimationFrame
|
|
117
|
+
* callbacks.
|
|
118
|
+
*
|
|
119
|
+
* If you need the CameraKitSession to continue rendering even when the tab is in the background, set this to true.
|
|
120
|
+
* There is a small performance penalty, and it's a good practice to only render in the background if absolutely
|
|
121
|
+
* necessary.
|
|
122
|
+
*/
|
|
123
|
+
renderWhileTabHidden?: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Optional manual override for bootstrap stability. If provided, the provider will re-bootstrap
|
|
126
|
+
* whenever this value changes, regardless of other config details.
|
|
127
|
+
*
|
|
128
|
+
* Useful when you want explicit control over when the SDK reinitializes.
|
|
129
|
+
*/
|
|
130
|
+
stabilityKey?: string | number;
|
|
131
|
+
/**
|
|
132
|
+
* React children to render within the provider.
|
|
133
|
+
*/
|
|
134
|
+
children: ReactNode;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Provider component that initializes and manages the Camera Kit SDK.
|
|
138
|
+
*
|
|
139
|
+
* This component handles SDK bootstrapping, session creation, and provides access to
|
|
140
|
+
* Camera Kit functionality through React context. All Camera Kit hooks and components
|
|
141
|
+
* must be used within this provider.
|
|
142
|
+
*
|
|
143
|
+
* The provider automatically manages SDK lifecycle, including initialization, cleanup,
|
|
144
|
+
* and re-initialization when configuration changes.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```tsx
|
|
148
|
+
* import { CameraKitProvider, createConsoleLogger } from '@snap/react-camera-kit';
|
|
149
|
+
*
|
|
150
|
+
* function App() {
|
|
151
|
+
* return (
|
|
152
|
+
* <CameraKitProvider
|
|
153
|
+
* apiToken="your-api-token"
|
|
154
|
+
* logger={createConsoleLogger()}
|
|
155
|
+
* logLevel="debug"
|
|
156
|
+
* >
|
|
157
|
+
* <YourCameraKitComponents />
|
|
158
|
+
* </CameraKitProvider>
|
|
159
|
+
* );
|
|
160
|
+
* }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export declare const CameraKitProvider: React.FC<CameraKitProviderProps>;
|
|
164
|
+
/**
|
|
165
|
+
* Internal hook with access to Camera Kit internals.
|
|
166
|
+
* Only for use within react-camera-kit library components and hooks.
|
|
167
|
+
*
|
|
168
|
+
* @internal
|
|
169
|
+
*/
|
|
170
|
+
export declare const useInternalCameraKit: () => InternalCameraKitContextValue;
|
|
171
|
+
/**
|
|
172
|
+
* Hook to access Camera Kit context and methods.
|
|
173
|
+
*
|
|
174
|
+
* Provides access to SDK state, Lens management, source control, and playback options.
|
|
175
|
+
* Must be used within a CameraKitProvider.
|
|
176
|
+
*
|
|
177
|
+
* @returns Camera Kit context value with state and methods
|
|
178
|
+
* @throws Error if used outside of CameraKitProvider
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```tsx
|
|
182
|
+
* function MyComponent() {
|
|
183
|
+
* const {
|
|
184
|
+
* sdkStatus,
|
|
185
|
+
* lens,
|
|
186
|
+
* applyLens,
|
|
187
|
+
* removeLens,
|
|
188
|
+
* liveCanvas
|
|
189
|
+
* } = useCameraKit();
|
|
190
|
+
*
|
|
191
|
+
* useEffect(() => {
|
|
192
|
+
* if (sdkStatus === 'ready') {
|
|
193
|
+
* applyLens('lens-id', 'group-id');
|
|
194
|
+
* }
|
|
195
|
+
* }, [sdkStatus, applyLens]);
|
|
196
|
+
*
|
|
197
|
+
* return <div>{lens.status}</div>;
|
|
198
|
+
* }
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
export declare const useCameraKit: () => CameraKitContextValue;
|
|
202
|
+
export {};
|
|
203
|
+
//# sourceMappingURL=CameraKitProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraKitProvider.d.ts","sourceRoot":"","sources":["../../src/CameraKitProvider.tsx"],"names":[],"mappings":"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"}
|