@outcode/bug-reporter-native 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +93 -0
- package/dist/index.d.mts +139 -0
- package/dist/index.d.ts +139 -0
- package/dist/index.js +805 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +786 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +69 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 OutCode Software
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# @outcode/bug-reporter-native
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@outcode/bug-reporter-native)
|
|
4
|
+
[](https://www.npmjs.com/package/@outcode/bug-reporter-native)
|
|
5
|
+
[](./LICENSE)
|
|
6
|
+
[](https://www.typescriptlang.org/)
|
|
7
|
+
|
|
8
|
+
**In-app bug reporter for React Native & Expo.** A draggable floating button captures the current screen,
|
|
9
|
+
lets users annotate it (draw, arrow, box, blur, text), set a severity and type, and file a report to
|
|
10
|
+
**ClickUp** or any custom backend.
|
|
11
|
+
|
|
12
|
+
> Part of the [OutCode Bug Reporter](https://github.com/OutCode-Software/bug-reporter) monorepo.
|
|
13
|
+
> For React web, see [`@outcode/bug-reporter-web`](https://www.npmjs.com/package/@outcode/bug-reporter-web).
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- 🐛 **Draggable floating button** that snaps to the screen edge
|
|
18
|
+
- ✏️ **Annotate** — pen, arrow, box, **blur/redact**, and text on the captured screenshot
|
|
19
|
+
- 🧭 **Auto-captured context** — platform, OS, screen, density, orientation, language, color scheme… consent-free
|
|
20
|
+
- 🎨 **Themeable** — Indigo / Noir / Mint presets or your own tokens
|
|
21
|
+
- 📡 **Offline retry queue**, **breadcrumb capture**, screenshot compression
|
|
22
|
+
- 🧩 **Pluggable backends** — ClickUp out of the box, or any `repository` / HTTP endpoint
|
|
23
|
+
- 📦 ESM + CJS, fully typed; native peers are externalized (never bundled)
|
|
24
|
+
|
|
25
|
+
## Install
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install @outcode/bug-reporter-native @outcode/bug-reporter-core
|
|
29
|
+
# peers (use `npx expo install …` on Expo):
|
|
30
|
+
npm install react-native-svg react-native-view-shot react-native-safe-area-context
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
> **Requires a dev build / bare workflow** — `react-native-view-shot` ships native code that is **not** in
|
|
34
|
+
> the Expo Go sandbox. Screen capture silently returns nothing in Expo Go; run a dev build
|
|
35
|
+
> (`expo run:ios` / `expo run:android` / EAS Build).
|
|
36
|
+
|
|
37
|
+
## Quick start
|
|
38
|
+
|
|
39
|
+
Wrap your app so the reporter can screenshot the current screen, then mount the button:
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import {
|
|
43
|
+
BugReporterButton,
|
|
44
|
+
BugReporterCaptureRefProvider,
|
|
45
|
+
BugReporterScreenCaptureView,
|
|
46
|
+
} from '@outcode/bug-reporter-native';
|
|
47
|
+
import { ClickUpBugReporterRepository } from '@outcode/bug-reporter-core';
|
|
48
|
+
|
|
49
|
+
export default function App() {
|
|
50
|
+
return (
|
|
51
|
+
<BugReporterCaptureRefProvider>
|
|
52
|
+
<BugReporterScreenCaptureView style={{ flex: 1 }}>
|
|
53
|
+
{/* …your navigator / screens… */}
|
|
54
|
+
</BugReporterScreenCaptureView>
|
|
55
|
+
|
|
56
|
+
<BugReporterButton
|
|
57
|
+
config={{
|
|
58
|
+
appName: 'My Mobile App',
|
|
59
|
+
appVersion: '1.0.0',
|
|
60
|
+
theme: 'indigo',
|
|
61
|
+
repository: new ClickUpBugReporterRepository({ apiKey, problemListId, suggestionListId }),
|
|
62
|
+
}}
|
|
63
|
+
/>
|
|
64
|
+
</BugReporterCaptureRefProvider>
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### WiFi / cellular context (optional)
|
|
70
|
+
|
|
71
|
+
The reporter auto-captures consent-free context. To add network type on native, inject it via
|
|
72
|
+
`collectContext` (e.g. with [`expo-network`](https://docs.expo.dev/versions/latest/sdk/network/)):
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
import * as Network from 'expo-network';
|
|
76
|
+
|
|
77
|
+
config={{
|
|
78
|
+
// …
|
|
79
|
+
collectContext: async () => {
|
|
80
|
+
const n = await Network.getNetworkStateAsync();
|
|
81
|
+
return { Network: n.type, Online: String(n.isConnected) };
|
|
82
|
+
},
|
|
83
|
+
}}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Configuration
|
|
87
|
+
|
|
88
|
+
Full `BugReporterConfig` reference lives in the
|
|
89
|
+
[root README](https://github.com/OutCode-Software/bug-reporter#readme).
|
|
90
|
+
|
|
91
|
+
## License
|
|
92
|
+
|
|
93
|
+
MIT © OutCode Software
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import React, { RefObject } from 'react';
|
|
2
|
+
import { ScreenshotOptions, BugReporterConfig, BugReporterTheme, AnnotationTool, ReportSeverity, ReportType } from '@outcode/bug-reporter-core';
|
|
3
|
+
import { View } from 'react-native';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Capture a React Native view as base64 (for API) or data URI (for display).
|
|
7
|
+
* Uses react-native-view-shot.
|
|
8
|
+
* Prefers captureScreen() (full screen, no ref) when available; falls back to captureRef(view).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
type CaptureViewRef = RefObject<View | null>;
|
|
12
|
+
/**
|
|
13
|
+
* Capture the given view as base64 string.
|
|
14
|
+
* Pass the ref of the View that wraps the screen content (e.g. the navigator container).
|
|
15
|
+
*/
|
|
16
|
+
declare function captureViewBase64(viewRef: CaptureViewRef, options?: ScreenshotOptions): Promise<string | undefined>;
|
|
17
|
+
/**
|
|
18
|
+
* Capture the full screen. Returns data URI or file URI (both valid for Image source).
|
|
19
|
+
* Tries data-uri first (displays reliably in Image); falls back to tmpfile.
|
|
20
|
+
*/
|
|
21
|
+
declare function captureScreenDataUri(options?: ScreenshotOptions): Promise<string | undefined>;
|
|
22
|
+
/**
|
|
23
|
+
* Capture the current screen as data URI (for Image source).
|
|
24
|
+
* Tries full-screen capture first (no ref needed), then ref-based if a ref is provided.
|
|
25
|
+
*/
|
|
26
|
+
declare function captureViewDataUri(viewRef?: CaptureViewRef | null, options?: ScreenshotOptions): Promise<string | undefined>;
|
|
27
|
+
/** Strip data URL prefix to get raw base64 for API. */
|
|
28
|
+
declare function dataUrlToBase64(dataUrl: string): string;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Bug reporter (native) — floating button + capture→annotate→form→done flow,
|
|
32
|
+
* mirroring the OC-BugReporter design. Orchestrates the step state machine and
|
|
33
|
+
* hosts the themed overlays (annotate editor, bottom-sheet form, success card).
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
interface BugReporterButtonProps {
|
|
37
|
+
config: BugReporterConfig;
|
|
38
|
+
captureRef?: CaptureViewRef;
|
|
39
|
+
label?: string;
|
|
40
|
+
}
|
|
41
|
+
declare function BugReporterButton({ config, captureRef, label }: BugReporterButtonProps): React.JSX.Element;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Full-screen annotation editor (native) — mirrors the OC-BugReporter design.
|
|
45
|
+
* Tools: pen, arrow, box, blur (opaque redaction), text. Static header keeps
|
|
46
|
+
* Back / Delete / Continue always reachable; text is edited in a keyboard-safe
|
|
47
|
+
* top bar (and tapping an existing label re-opens it). Flattened via captureRef.
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
interface AnnotateOverlayProps {
|
|
51
|
+
t: BugReporterTheme;
|
|
52
|
+
visible: boolean;
|
|
53
|
+
src: string;
|
|
54
|
+
onCancel: () => void;
|
|
55
|
+
onContinue: (flattenedDataUrl: string, annotationCount: number) => void;
|
|
56
|
+
}
|
|
57
|
+
declare function AnnotateOverlay({ t, visible, src, onCancel, onContinue }: AnnotateOverlayProps): React.JSX.Element;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Annotation toolbar (native) — tools, colors, undo/clear, Continue.
|
|
61
|
+
* Mirrors the OC-BugReporter AnnotateToolbar design. Themed via the token object.
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
interface AnnotateToolbarProps {
|
|
65
|
+
t: BugReporterTheme;
|
|
66
|
+
tool: AnnotationTool;
|
|
67
|
+
color: string;
|
|
68
|
+
onTool: (tool: AnnotationTool) => void;
|
|
69
|
+
onColor: (c: string) => void;
|
|
70
|
+
onUndo: () => void;
|
|
71
|
+
}
|
|
72
|
+
declare function AnnotateToolbar({ t, tool, color, onTool, onColor, onUndo }: AnnotateToolbarProps): React.JSX.Element;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Bug report form (native) — mirrors the OC-BugReporter BugReportForm design.
|
|
76
|
+
* Rendered inside a bottom sheet by the orchestrator.
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
interface MetaRow {
|
|
80
|
+
label: string;
|
|
81
|
+
value: string;
|
|
82
|
+
flag?: 'err' | 'warn';
|
|
83
|
+
}
|
|
84
|
+
interface BugReportFormProps {
|
|
85
|
+
t: BugReporterTheme;
|
|
86
|
+
screenshotUrl?: string;
|
|
87
|
+
annotationCount: number;
|
|
88
|
+
title: string;
|
|
89
|
+
description: string;
|
|
90
|
+
severity: ReportSeverity;
|
|
91
|
+
type: ReportType;
|
|
92
|
+
meta: MetaRow[];
|
|
93
|
+
backendName: string;
|
|
94
|
+
submitting: boolean;
|
|
95
|
+
error?: string;
|
|
96
|
+
onTitle: (v: string) => void;
|
|
97
|
+
onDescription: (v: string) => void;
|
|
98
|
+
onSeverity: (s: ReportSeverity) => void;
|
|
99
|
+
onType: (t: ReportType) => void;
|
|
100
|
+
onBack: () => void;
|
|
101
|
+
onClose: () => void;
|
|
102
|
+
onEditAnnotations: () => void;
|
|
103
|
+
onSubmit: () => void;
|
|
104
|
+
}
|
|
105
|
+
declare function BugReportForm(props: BugReportFormProps): React.JSX.Element;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Success card (native) — mirrors the OC-BugReporter "Report filed" state.
|
|
109
|
+
*/
|
|
110
|
+
|
|
111
|
+
interface SuccessCardProps {
|
|
112
|
+
t: BugReporterTheme;
|
|
113
|
+
ticket?: string;
|
|
114
|
+
ticketTitle: string;
|
|
115
|
+
backendName: string;
|
|
116
|
+
onDone: () => void;
|
|
117
|
+
}
|
|
118
|
+
declare function SuccessCard({ t, ticket, ticketTitle, backendName, onDone }: SuccessCardProps): React.JSX.Element;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Optional context so the current screen can register its root View for screenshot capture.
|
|
122
|
+
* Use when capturing the app-level wrapper (e.g. around NavigationContainer) returns empty
|
|
123
|
+
* or wrong content (e.g. on Android with native stack). Wrap screen content in
|
|
124
|
+
* BugReporterScreenCaptureView or call useSetBugReporterCaptureRef(ref).
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
declare function BugReporterCaptureRefProvider({ children }: {
|
|
128
|
+
children: React.ReactNode;
|
|
129
|
+
}): React.JSX.Element;
|
|
130
|
+
/** Call from the current screen to register its root View for capture. Unregisters on unmount. */
|
|
131
|
+
declare function useSetBugReporterCaptureRef(ref: CaptureViewRef | null): void;
|
|
132
|
+
declare function useBugReporterCaptureRef(): CaptureViewRef | null;
|
|
133
|
+
/** Wraps screen content so this view is used for bug report screenshots. Use inside screens when app-level capture is empty. */
|
|
134
|
+
declare function BugReporterScreenCaptureView({ children, style, }: {
|
|
135
|
+
children: React.ReactNode;
|
|
136
|
+
style?: React.ComponentProps<typeof View>['style'];
|
|
137
|
+
}): React.JSX.Element;
|
|
138
|
+
|
|
139
|
+
export { AnnotateOverlay, type AnnotateOverlayProps, AnnotateToolbar, BugReportForm, type BugReportFormProps, BugReporterButton, type BugReporterButtonProps, BugReporterCaptureRefProvider, BugReporterScreenCaptureView, type CaptureViewRef, type MetaRow, SuccessCard, captureScreenDataUri, captureViewBase64, captureViewDataUri, dataUrlToBase64, useBugReporterCaptureRef, useSetBugReporterCaptureRef };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import React, { RefObject } from 'react';
|
|
2
|
+
import { ScreenshotOptions, BugReporterConfig, BugReporterTheme, AnnotationTool, ReportSeverity, ReportType } from '@outcode/bug-reporter-core';
|
|
3
|
+
import { View } from 'react-native';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Capture a React Native view as base64 (for API) or data URI (for display).
|
|
7
|
+
* Uses react-native-view-shot.
|
|
8
|
+
* Prefers captureScreen() (full screen, no ref) when available; falls back to captureRef(view).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
type CaptureViewRef = RefObject<View | null>;
|
|
12
|
+
/**
|
|
13
|
+
* Capture the given view as base64 string.
|
|
14
|
+
* Pass the ref of the View that wraps the screen content (e.g. the navigator container).
|
|
15
|
+
*/
|
|
16
|
+
declare function captureViewBase64(viewRef: CaptureViewRef, options?: ScreenshotOptions): Promise<string | undefined>;
|
|
17
|
+
/**
|
|
18
|
+
* Capture the full screen. Returns data URI or file URI (both valid for Image source).
|
|
19
|
+
* Tries data-uri first (displays reliably in Image); falls back to tmpfile.
|
|
20
|
+
*/
|
|
21
|
+
declare function captureScreenDataUri(options?: ScreenshotOptions): Promise<string | undefined>;
|
|
22
|
+
/**
|
|
23
|
+
* Capture the current screen as data URI (for Image source).
|
|
24
|
+
* Tries full-screen capture first (no ref needed), then ref-based if a ref is provided.
|
|
25
|
+
*/
|
|
26
|
+
declare function captureViewDataUri(viewRef?: CaptureViewRef | null, options?: ScreenshotOptions): Promise<string | undefined>;
|
|
27
|
+
/** Strip data URL prefix to get raw base64 for API. */
|
|
28
|
+
declare function dataUrlToBase64(dataUrl: string): string;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Bug reporter (native) — floating button + capture→annotate→form→done flow,
|
|
32
|
+
* mirroring the OC-BugReporter design. Orchestrates the step state machine and
|
|
33
|
+
* hosts the themed overlays (annotate editor, bottom-sheet form, success card).
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
interface BugReporterButtonProps {
|
|
37
|
+
config: BugReporterConfig;
|
|
38
|
+
captureRef?: CaptureViewRef;
|
|
39
|
+
label?: string;
|
|
40
|
+
}
|
|
41
|
+
declare function BugReporterButton({ config, captureRef, label }: BugReporterButtonProps): React.JSX.Element;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Full-screen annotation editor (native) — mirrors the OC-BugReporter design.
|
|
45
|
+
* Tools: pen, arrow, box, blur (opaque redaction), text. Static header keeps
|
|
46
|
+
* Back / Delete / Continue always reachable; text is edited in a keyboard-safe
|
|
47
|
+
* top bar (and tapping an existing label re-opens it). Flattened via captureRef.
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
interface AnnotateOverlayProps {
|
|
51
|
+
t: BugReporterTheme;
|
|
52
|
+
visible: boolean;
|
|
53
|
+
src: string;
|
|
54
|
+
onCancel: () => void;
|
|
55
|
+
onContinue: (flattenedDataUrl: string, annotationCount: number) => void;
|
|
56
|
+
}
|
|
57
|
+
declare function AnnotateOverlay({ t, visible, src, onCancel, onContinue }: AnnotateOverlayProps): React.JSX.Element;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Annotation toolbar (native) — tools, colors, undo/clear, Continue.
|
|
61
|
+
* Mirrors the OC-BugReporter AnnotateToolbar design. Themed via the token object.
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
interface AnnotateToolbarProps {
|
|
65
|
+
t: BugReporterTheme;
|
|
66
|
+
tool: AnnotationTool;
|
|
67
|
+
color: string;
|
|
68
|
+
onTool: (tool: AnnotationTool) => void;
|
|
69
|
+
onColor: (c: string) => void;
|
|
70
|
+
onUndo: () => void;
|
|
71
|
+
}
|
|
72
|
+
declare function AnnotateToolbar({ t, tool, color, onTool, onColor, onUndo }: AnnotateToolbarProps): React.JSX.Element;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Bug report form (native) — mirrors the OC-BugReporter BugReportForm design.
|
|
76
|
+
* Rendered inside a bottom sheet by the orchestrator.
|
|
77
|
+
*/
|
|
78
|
+
|
|
79
|
+
interface MetaRow {
|
|
80
|
+
label: string;
|
|
81
|
+
value: string;
|
|
82
|
+
flag?: 'err' | 'warn';
|
|
83
|
+
}
|
|
84
|
+
interface BugReportFormProps {
|
|
85
|
+
t: BugReporterTheme;
|
|
86
|
+
screenshotUrl?: string;
|
|
87
|
+
annotationCount: number;
|
|
88
|
+
title: string;
|
|
89
|
+
description: string;
|
|
90
|
+
severity: ReportSeverity;
|
|
91
|
+
type: ReportType;
|
|
92
|
+
meta: MetaRow[];
|
|
93
|
+
backendName: string;
|
|
94
|
+
submitting: boolean;
|
|
95
|
+
error?: string;
|
|
96
|
+
onTitle: (v: string) => void;
|
|
97
|
+
onDescription: (v: string) => void;
|
|
98
|
+
onSeverity: (s: ReportSeverity) => void;
|
|
99
|
+
onType: (t: ReportType) => void;
|
|
100
|
+
onBack: () => void;
|
|
101
|
+
onClose: () => void;
|
|
102
|
+
onEditAnnotations: () => void;
|
|
103
|
+
onSubmit: () => void;
|
|
104
|
+
}
|
|
105
|
+
declare function BugReportForm(props: BugReportFormProps): React.JSX.Element;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Success card (native) — mirrors the OC-BugReporter "Report filed" state.
|
|
109
|
+
*/
|
|
110
|
+
|
|
111
|
+
interface SuccessCardProps {
|
|
112
|
+
t: BugReporterTheme;
|
|
113
|
+
ticket?: string;
|
|
114
|
+
ticketTitle: string;
|
|
115
|
+
backendName: string;
|
|
116
|
+
onDone: () => void;
|
|
117
|
+
}
|
|
118
|
+
declare function SuccessCard({ t, ticket, ticketTitle, backendName, onDone }: SuccessCardProps): React.JSX.Element;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Optional context so the current screen can register its root View for screenshot capture.
|
|
122
|
+
* Use when capturing the app-level wrapper (e.g. around NavigationContainer) returns empty
|
|
123
|
+
* or wrong content (e.g. on Android with native stack). Wrap screen content in
|
|
124
|
+
* BugReporterScreenCaptureView or call useSetBugReporterCaptureRef(ref).
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
declare function BugReporterCaptureRefProvider({ children }: {
|
|
128
|
+
children: React.ReactNode;
|
|
129
|
+
}): React.JSX.Element;
|
|
130
|
+
/** Call from the current screen to register its root View for capture. Unregisters on unmount. */
|
|
131
|
+
declare function useSetBugReporterCaptureRef(ref: CaptureViewRef | null): void;
|
|
132
|
+
declare function useBugReporterCaptureRef(): CaptureViewRef | null;
|
|
133
|
+
/** Wraps screen content so this view is used for bug report screenshots. Use inside screens when app-level capture is empty. */
|
|
134
|
+
declare function BugReporterScreenCaptureView({ children, style, }: {
|
|
135
|
+
children: React.ReactNode;
|
|
136
|
+
style?: React.ComponentProps<typeof View>['style'];
|
|
137
|
+
}): React.JSX.Element;
|
|
138
|
+
|
|
139
|
+
export { AnnotateOverlay, type AnnotateOverlayProps, AnnotateToolbar, BugReportForm, type BugReportFormProps, BugReporterButton, type BugReporterButtonProps, BugReporterCaptureRefProvider, BugReporterScreenCaptureView, type CaptureViewRef, type MetaRow, SuccessCard, captureScreenDataUri, captureViewBase64, captureViewDataUri, dataUrlToBase64, useBugReporterCaptureRef, useSetBugReporterCaptureRef };
|