@bitbitpress/client 2.0.0-beta.4 → 2.0.0-beta.5
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/README.md +49 -12
- package/dist/react/index.d.ts +25 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +109 -47
- package/dist/react/index.js.map +1 -1
- package/dist/react-native-expo/BitBitPiece.d.ts +11 -3
- package/dist/react-native-expo/BitBitPiece.d.ts.map +1 -1
- package/dist/react-native-expo/BitBitPiece.js +17 -6
- package/dist/react-native-expo/BitBitPiece.js.map +1 -1
- package/dist/react-native-expo/BitBitView.d.ts +13 -1
- package/dist/react-native-expo/BitBitView.d.ts.map +1 -1
- package/dist/react-native-expo/BitBitView.js +41 -4
- package/dist/react-native-expo/BitBitView.js.map +1 -1
- package/dist/studio/BitBitMobilePreview.d.ts +8 -1
- package/dist/studio/BitBitMobilePreview.d.ts.map +1 -1
- package/dist/studio/BitBitMobilePreview.js +12 -1
- package/dist/studio/BitBitMobilePreview.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1135,6 +1135,55 @@ export function Feed({ keyName }: { keyName: string }) {
|
|
|
1135
1135
|
That's enough to render any view whose generated UI uses only the SDK's
|
|
1136
1136
|
built-in primitives, plus your `MyCard`.
|
|
1137
1137
|
|
|
1138
|
+
### Loading and error states
|
|
1139
|
+
|
|
1140
|
+
`BitBitView` and `BitBitPiece` render nothing until the generated UI has
|
|
1141
|
+
been fetched and mounted, so the host owns the loading state. Two lifecycle
|
|
1142
|
+
callbacks tell you when to show and hide it:
|
|
1143
|
+
|
|
1144
|
+
- **`onReady()`** — fires once the view has mounted and painted its first
|
|
1145
|
+
data. This is the point to hide a spinner. It fires again if the view
|
|
1146
|
+
re-mounts (a `keyName` change, or a `remountToken` bump on `BitBitPiece`).
|
|
1147
|
+
- **`onError(message)`** — fires if the view fails to fetch, load, or
|
|
1148
|
+
mount. Hide the spinner here too, or the host is stuck on it forever.
|
|
1149
|
+
|
|
1150
|
+
The SDK never writes to the console on its own. If you don't pass
|
|
1151
|
+
`onError`, a failure is silent — pass `debug` to print it instead:
|
|
1152
|
+
|
|
1153
|
+
```tsx
|
|
1154
|
+
<BitBitView client={client} keyName={keyName} debug />
|
|
1155
|
+
```
|
|
1156
|
+
|
|
1157
|
+
`debug` is independent of `onError`: with both set you get the callback
|
|
1158
|
+
*and* the console output. Leave it off in production.
|
|
1159
|
+
|
|
1160
|
+
```tsx
|
|
1161
|
+
function Feed({ keyName }: { keyName: string }) {
|
|
1162
|
+
const [state, setState] = useState<'loading' | 'ready' | 'error'>('loading');
|
|
1163
|
+
return (
|
|
1164
|
+
<div style={{ position: 'relative' }}>
|
|
1165
|
+
{state === 'loading' && <Spinner />}
|
|
1166
|
+
{state === 'error' && <p>Couldn't load this view.</p>}
|
|
1167
|
+
<BitBitView
|
|
1168
|
+
client={client}
|
|
1169
|
+
keyName={keyName}
|
|
1170
|
+
onReady={() => setState('ready')}
|
|
1171
|
+
onError={() => setState('error')}
|
|
1172
|
+
/>
|
|
1173
|
+
</div>
|
|
1174
|
+
);
|
|
1175
|
+
}
|
|
1176
|
+
```
|
|
1177
|
+
|
|
1178
|
+
Both callbacks are read through a ref internally, so passing inline arrows
|
|
1179
|
+
is safe — unlike `inputs`, a new callback identity will not re-subscribe
|
|
1180
|
+
the stream. Reset your loading state yourself when `keyName` (or any other
|
|
1181
|
+
prop that re-subscribes) changes.
|
|
1182
|
+
|
|
1183
|
+
The same props exist on the `react-native-expo` `BitBitView` and
|
|
1184
|
+
`BitBitPiece`; there `onReady` fires when the WebView's bundle reports its
|
|
1185
|
+
first mount.
|
|
1186
|
+
|
|
1138
1187
|
### Registering your own components
|
|
1139
1188
|
|
|
1140
1189
|
In the CMS you can register a component as **"provided by your app"** —
|
|
@@ -1281,18 +1330,6 @@ with no server roundtrip. This is on by default. To disable:
|
|
|
1281
1330
|
<BitBitView client={client} keyName={keyName} preloadNextUi={false} />
|
|
1282
1331
|
```
|
|
1283
1332
|
|
|
1284
|
-
### Dev diagnostics
|
|
1285
|
-
|
|
1286
|
-
In dev mode (or when you pass `dev={true}`), the SDK prints every event
|
|
1287
|
-
to the console, prefixed with `[BB]`:
|
|
1288
|
-
|
|
1289
|
-
```
|
|
1290
|
-
[BB] event MyCard.onClick → AGENT { name: 'open-detail', payload: { id: '…' }, ... }
|
|
1291
|
-
```
|
|
1292
|
-
|
|
1293
|
-
These logs are completely stripped in production builds — no SDK chatter
|
|
1294
|
-
in real user devices.
|
|
1295
|
-
|
|
1296
1333
|
### Custom rendering (advanced)
|
|
1297
1334
|
|
|
1298
1335
|
If you want to render the UI tree yourself but still use the SDK's fetch +
|
package/dist/react/index.d.ts
CHANGED
|
@@ -24,6 +24,18 @@ export interface BitBitViewProps extends SynthesisUiRequestInputs {
|
|
|
24
24
|
onNavigate?: (href: string) => void;
|
|
25
25
|
/** Resolve an on-demand audio URL for a voice player (`ctx.tts`). */
|
|
26
26
|
onTts?: (ref?: BitBitTtsRef) => Promise<string>;
|
|
27
|
+
/** Called once the view has mounted and painted its first streamed data — the
|
|
28
|
+
* point a host loading spinner should be hidden. Fires again if the view
|
|
29
|
+
* re-subscribes (e.g. a `keyName` change) and re-mounts. */
|
|
30
|
+
onReady?: () => void;
|
|
31
|
+
/** Called when the view fails to stream, load, or mount. Pairs with `onReady`
|
|
32
|
+
* so a host spinner is dismissed on the failure path too. Absent a handler the
|
|
33
|
+
* failure is silent unless `debug` is set — the SDK never logs on its own. */
|
|
34
|
+
onError?: (message: string) => void;
|
|
35
|
+
/** Print SDK failures to the console (`console.error`). Opt-in and orthogonal to
|
|
36
|
+
* `onError`: leave it off in production, turn it on to debug a view that won't
|
|
37
|
+
* render without having to wire a handler. */
|
|
38
|
+
debug?: boolean;
|
|
27
39
|
}
|
|
28
40
|
/**
|
|
29
41
|
* Web view for a server-generated SynthesisUI. Streams the UI by `keyName`
|
|
@@ -34,7 +46,7 @@ export interface BitBitViewProps extends SynthesisUiRequestInputs {
|
|
|
34
46
|
* `mobile` preview in the light DOM). Native delivery renders the same mobile
|
|
35
47
|
* bundle in a WebView via the `react-native-expo` entry.
|
|
36
48
|
*/
|
|
37
|
-
export declare function BitBitView({ client: clientProp, keyName, platform, onTrack, onEvent, onNavigate, onTts, inputs, output, searchOptionsOverrides, synthesisHistoryLimit, }: BitBitViewProps): import("react").DetailedReactHTMLElement<{
|
|
49
|
+
export declare function BitBitView({ client: clientProp, keyName, platform, onTrack, onEvent, onNavigate, onTts, onReady, onError, debug, inputs, output, searchOptionsOverrides, synthesisHistoryLimit, }: BitBitViewProps): import("react").DetailedReactHTMLElement<{
|
|
38
50
|
ref: import("react").RefObject<HTMLDivElement>;
|
|
39
51
|
style: {
|
|
40
52
|
height: string;
|
|
@@ -72,6 +84,18 @@ interface BitBitPieceCommonProps {
|
|
|
72
84
|
onNavigate?: (href: string) => void;
|
|
73
85
|
/** Resolve an on-demand audio URL for a voice player (`ctx.tts`). */
|
|
74
86
|
onTts?: (ref?: BitBitTtsRef) => Promise<string>;
|
|
87
|
+
/** Called once the piece has mounted and painted — the point a host loading
|
|
88
|
+
* spinner should be hidden. Fires again on a re-mount (new `code`/`keyName`,
|
|
89
|
+
* or a `remountToken` bump). */
|
|
90
|
+
onReady?: () => void;
|
|
91
|
+
/** Called when the piece fails to resolve, load, or mount. Pairs with `onReady`
|
|
92
|
+
* so a host spinner is dismissed on the failure path too. Absent a handler the
|
|
93
|
+
* failure is silent unless `debug` is set — the SDK never logs on its own. */
|
|
94
|
+
onError?: (message: string) => void;
|
|
95
|
+
/** Print SDK failures to the console (`console.error`). Opt-in and orthogonal to
|
|
96
|
+
* `onError`: leave it off in production, turn it on to debug a piece that won't
|
|
97
|
+
* render without having to wire a handler. */
|
|
98
|
+
debug?: boolean;
|
|
75
99
|
/** Bump to force a clean re-mount (reusing the loaded module) — the editor uses this
|
|
76
100
|
* to recover after a structural in-place edit that would corrupt the framework's
|
|
77
101
|
* own reconciliation. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAQtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,kBAAkB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACpF,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,GACpB,CAAC;AAEF;;;mCAGmC;AACnC,MAAM,WAAW,eAAgB,SAAQ,wBAAwB;IAC/D;uBACmB;IACnB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB;;2EAEuE;IACvE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,qEAAqE;IACrE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.js
CHANGED
|
@@ -12,10 +12,15 @@ const noop = () => { };
|
|
|
12
12
|
* `mobile` preview in the light DOM). Native delivery renders the same mobile
|
|
13
13
|
* bundle in a WebView via the `react-native-expo` entry.
|
|
14
14
|
*/
|
|
15
|
-
export function BitBitView({ client: clientProp, keyName, platform = 'web', onTrack, onEvent, onNavigate, onTts, inputs, output, searchOptionsOverrides, synthesisHistoryLimit, }) {
|
|
15
|
+
export function BitBitView({ client: clientProp, keyName, platform = 'web', onTrack, onEvent, onNavigate, onTts, onReady, onError, debug = false, inputs, output, searchOptionsOverrides, synthesisHistoryLimit, }) {
|
|
16
16
|
const contextClient = useBitBitContext()?.client;
|
|
17
17
|
const client = clientProp ?? contextClient;
|
|
18
18
|
const hostRef = useRef(null);
|
|
19
|
+
// Read through a ref, never as effect deps: a host passing inline lifecycle
|
|
20
|
+
// arrows must not re-run the effect, which would re-subscribe the stream
|
|
21
|
+
// (i.e. re-synthesize) on every render.
|
|
22
|
+
const lifecycleRef = useRef({ onReady, onError, debug });
|
|
23
|
+
lifecycleRef.current = { onReady, onError, debug };
|
|
19
24
|
useEffect(() => {
|
|
20
25
|
const host = hostRef.current;
|
|
21
26
|
if (!host || !client)
|
|
@@ -105,44 +110,74 @@ export function BitBitView({ client: clientProp, keyName, platform = 'web', onTr
|
|
|
105
110
|
};
|
|
106
111
|
host.addEventListener('click', onHostClick);
|
|
107
112
|
void (async () => {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const props = {
|
|
130
|
-
data: event.data,
|
|
131
|
-
history: event.synthesisHistoryEntries,
|
|
132
|
-
ctx: makeCtx(),
|
|
133
|
-
};
|
|
134
|
-
if (handle) {
|
|
135
|
-
handle.update(props);
|
|
113
|
+
try {
|
|
114
|
+
const stream = await client.user.synthesizeUi({
|
|
115
|
+
keyName,
|
|
116
|
+
platform,
|
|
117
|
+
inputs,
|
|
118
|
+
output,
|
|
119
|
+
searchOptionsOverrides,
|
|
120
|
+
synthesisHistoryLimit,
|
|
121
|
+
});
|
|
122
|
+
for await (const event of stream) {
|
|
123
|
+
if (cancelled)
|
|
124
|
+
break;
|
|
125
|
+
if (event.type === 'manifest') {
|
|
126
|
+
theme = event.theme;
|
|
127
|
+
const src = event.bundleUrl ?? event.bundleSource;
|
|
128
|
+
if (src)
|
|
129
|
+
mod = await loadGeneratedModule(src);
|
|
130
|
+
// Neither field set is a dead end: every later data event hits the
|
|
131
|
+
// `!mod` branch below and the view can never render.
|
|
132
|
+
else if (lifecycleRef.current.debug)
|
|
133
|
+
console.error('[BitBitView] manifest carried no bundleUrl or bundleSource');
|
|
136
134
|
}
|
|
137
|
-
else {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
|
|
135
|
+
else if (event.type === 'data') {
|
|
136
|
+
if (!mod) {
|
|
137
|
+
if (lifecycleRef.current.debug)
|
|
138
|
+
console.warn('[BitBitView] dropped a data event — no bundle loaded yet');
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (event.synthesisOutputId)
|
|
142
|
+
latestOutputId = event.synthesisOutputId;
|
|
143
|
+
// Mount on the first data event (bundle is ready); update thereafter.
|
|
144
|
+
const props = {
|
|
145
|
+
data: event.data,
|
|
146
|
+
history: event.synthesisHistoryEntries,
|
|
147
|
+
ctx: makeCtx(),
|
|
148
|
+
};
|
|
149
|
+
if (handle) {
|
|
150
|
+
handle.update(props);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// Web isolates styles in a Shadow DOM; the studio's mobile preview
|
|
154
|
+
// mounts in the light DOM.
|
|
155
|
+
handle = mountGeneratedView(host, mod, props, {
|
|
156
|
+
isolateStyles: platform !== 'mobile',
|
|
157
|
+
});
|
|
158
|
+
// First paint — the host can drop its loading state. Runs before the
|
|
159
|
+
// beacon (analytics must never starve it) and isolated from the catch
|
|
160
|
+
// below, so a throwing host handler isn't reported as a view failure.
|
|
161
|
+
try {
|
|
162
|
+
lifecycleRef.current.onReady?.();
|
|
163
|
+
}
|
|
164
|
+
catch { }
|
|
165
|
+
beacon('VIEW');
|
|
166
|
+
}
|
|
144
167
|
}
|
|
145
168
|
}
|
|
169
|
+
// The stream can complete cleanly having never produced a renderable
|
|
170
|
+
// pair (no manifest, no data) — a blank view with nothing thrown.
|
|
171
|
+
if (!cancelled && !handle && lifecycleRef.current.debug)
|
|
172
|
+
console.error('[BitBitView] stream ended without rendering');
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
if (cancelled)
|
|
176
|
+
return;
|
|
177
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
178
|
+
if (lifecycleRef.current.debug)
|
|
179
|
+
console.error(`[BitBitView] ${message}`);
|
|
180
|
+
lifecycleRef.current.onError?.(message);
|
|
146
181
|
}
|
|
147
182
|
})();
|
|
148
183
|
return () => {
|
|
@@ -177,10 +212,19 @@ export function BitBitView({ client: clientProp, keyName, platform = 'web', onTr
|
|
|
177
212
|
* in, re-rendering in place when it changes.
|
|
178
213
|
*/
|
|
179
214
|
export function BitBitPiece(props) {
|
|
180
|
-
const { theme, platform = 'web', colorScheme, onTrack, onEvent, onNavigate, onTts, remountToken, } = props;
|
|
215
|
+
const { theme, platform = 'web', colorScheme, onTrack, onEvent, onNavigate, onTts, onReady, onError, debug = false, remountToken, } = props;
|
|
181
216
|
const keyName = 'keyName' in props ? props.keyName : undefined;
|
|
182
217
|
const contextClient = useBitBitContext()?.client;
|
|
183
218
|
const client = ('client' in props ? props.client : undefined) ?? contextClient;
|
|
219
|
+
// Read through a ref, never as effect deps: a host passing inline lifecycle
|
|
220
|
+
// arrows must not re-run the fetch/mount effects on every render.
|
|
221
|
+
const lifecycleRef = useRef({ onReady, onError, debug });
|
|
222
|
+
lifecycleRef.current = { onReady, onError, debug };
|
|
223
|
+
const reportError = useCallback((message) => {
|
|
224
|
+
if (lifecycleRef.current.debug)
|
|
225
|
+
console.error(`[BitBitPiece] ${message}`);
|
|
226
|
+
lifecycleRef.current.onError?.(message);
|
|
227
|
+
}, []);
|
|
184
228
|
// In embed mode, the resolved bundle/data/theme are fetched by keyName.
|
|
185
229
|
const [fetched, setFetched] = useState(null);
|
|
186
230
|
useEffect(() => {
|
|
@@ -188,15 +232,21 @@ export function BitBitPiece(props) {
|
|
|
188
232
|
return;
|
|
189
233
|
let cancelled = false;
|
|
190
234
|
void (async () => {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
235
|
+
try {
|
|
236
|
+
const payload = await client.user.getSynthesisPiece(keyName);
|
|
237
|
+
if (cancelled)
|
|
238
|
+
return;
|
|
239
|
+
setFetched({ code: payload.uiWebCode, data: payload.fields, theme: payload.theme });
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
if (!cancelled)
|
|
243
|
+
reportError(err instanceof Error ? err.message : String(err));
|
|
244
|
+
}
|
|
195
245
|
})();
|
|
196
246
|
return () => {
|
|
197
247
|
cancelled = true;
|
|
198
248
|
};
|
|
199
|
-
}, [keyName, client]);
|
|
249
|
+
}, [keyName, client, reportError]);
|
|
200
250
|
const code = keyName != null ? (fetched?.code ?? null) : props.code;
|
|
201
251
|
const data = keyName != null ? fetched?.data : props.data;
|
|
202
252
|
const resolvedTheme = (keyName != null ? fetched?.theme : undefined) ?? theme;
|
|
@@ -285,10 +335,22 @@ export function BitBitPiece(props) {
|
|
|
285
335
|
};
|
|
286
336
|
host.addEventListener('click', onHostClick);
|
|
287
337
|
void (async () => {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
338
|
+
try {
|
|
339
|
+
const mod = await loadGeneratedModule(code);
|
|
340
|
+
if (cancelled || !hostRef.current)
|
|
341
|
+
return;
|
|
342
|
+
handleRef.current = mountGeneratedView(hostRef.current, mod, { data: propsRef.current.data, ctx: makeCtx() }, { isolateStyles: platform !== 'mobile' });
|
|
343
|
+
// First paint — the host can drop its loading state. Isolated from the catch
|
|
344
|
+
// below so a throwing host handler isn't reported as a mount failure.
|
|
345
|
+
try {
|
|
346
|
+
lifecycleRef.current.onReady?.();
|
|
347
|
+
}
|
|
348
|
+
catch { }
|
|
349
|
+
}
|
|
350
|
+
catch (err) {
|
|
351
|
+
if (!cancelled)
|
|
352
|
+
reportError(err instanceof Error ? err.message : String(err));
|
|
353
|
+
}
|
|
292
354
|
})();
|
|
293
355
|
return () => {
|
|
294
356
|
cancelled = true;
|
|
@@ -297,7 +359,7 @@ export function BitBitPiece(props) {
|
|
|
297
359
|
handleRef.current = undefined;
|
|
298
360
|
};
|
|
299
361
|
// `remountToken` re-runs this to tear down + re-mount cleanly (module is cached).
|
|
300
|
-
}, [code, platform, makeCtx, remountToken]);
|
|
362
|
+
}, [code, platform, makeCtx, remountToken, reportError]);
|
|
301
363
|
// Push fresh data (and ctx) into the mounted view. `colorScheme` is included so a
|
|
302
364
|
// light/dark toggle re-pushes ctx — `makeCtx` reads props from a ref (stable identity),
|
|
303
365
|
// so without it a scheme change would sit unflushed until `data` changed.
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,9 +39,17 @@ export interface BitBitPieceProps {
|
|
|
39
39
|
onEvent?: (name: string, payload?: unknown) => void;
|
|
40
40
|
/** Navigate a link the view requested (the WebView never navigates itself). */
|
|
41
41
|
onNavigate?: (href: string) => void;
|
|
42
|
-
/** Called
|
|
43
|
-
*
|
|
42
|
+
/** Called once the piece has mounted and painted — the point a host loading
|
|
43
|
+
* spinner should be hidden. Fires again on a re-resolve (a `keyName` change
|
|
44
|
+
* reloads the WebView). */
|
|
45
|
+
onReady?: () => void;
|
|
46
|
+
/** Called when the piece fails to resolve, load, or render. Absent a handler the
|
|
47
|
+
* failure is silent unless `debug` is set — the SDK never logs on its own. */
|
|
44
48
|
onError?: (message: string) => void;
|
|
49
|
+
/** Print SDK failures to the console (`console.error`). Opt-in and orthogonal to
|
|
50
|
+
* `onError`: leave it off in production, turn it on to debug a piece that won't
|
|
51
|
+
* render without having to wire a handler. */
|
|
52
|
+
debug?: boolean;
|
|
45
53
|
/** Fill the host's height (`flex: 1`) instead of sizing to the piece's own
|
|
46
54
|
* content height. Use for a full-screen piece; defaults to false so the piece
|
|
47
55
|
* renders at its natural height inside a scrolling host (a feed tile). */
|
|
@@ -66,5 +74,5 @@ export interface BitBitPieceProps {
|
|
|
66
74
|
* Unlike `<BitBitView>` there is no stream — a piece is a single resolved
|
|
67
75
|
* snapshot, so the data is pushed once the WebView signals `ready`.
|
|
68
76
|
*/
|
|
69
|
-
export declare function BitBitPiece({ client: clientProp, keyName, onTrack, onEvent, onNavigate, onError, fillHeight, initialHeight, colorScheme, style, }: BitBitPieceProps): import("react").CElement<import("react-native-webview").WebViewProps, WebView> | null;
|
|
77
|
+
export declare function BitBitPiece({ client: clientProp, keyName, onTrack, onEvent, onNavigate, onReady, onError, debug, fillHeight, initialHeight, colorScheme, style, }: BitBitPieceProps): import("react").CElement<import("react-native-webview").WebViewProps, WebView> | null;
|
|
70
78
|
//# sourceMappingURL=BitBitPiece.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitBitPiece.d.ts","sourceRoot":"","sources":["../../src/react-native-expo/BitBitPiece.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAA4B,MAAM,sBAAsB,CAAC;AAIzE;gFACgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE;QACJ,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;YAC1C,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAChC,CAAC,CAAC;QAIH,cAAc,CAAC,CAAC,CAAC,EAAE;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB;sFAC8E;QAC9E,UAAU,CAAC,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9E;yEACiE;QACjE,oBAAoB,CAAC,CACnB,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GACvC,OAAO,CAAC,MAAM,CAAC,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B;gCAC4B;IAC5B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;
|
|
1
|
+
{"version":3,"file":"BitBitPiece.d.ts","sourceRoot":"","sources":["../../src/react-native-expo/BitBitPiece.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAA4B,MAAM,sBAAsB,CAAC;AAIzE;gFACgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE;QACJ,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;YAC1C,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAChC,CAAC,CAAC;QAIH,cAAc,CAAC,CAAC,CAAC,EAAE;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB;sFAC8E;QAC9E,UAAU,CAAC,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9E;yEACiE;QACjE,oBAAoB,CAAC,CACnB,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GACvC,OAAO,CAAC,MAAM,CAAC,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B;gCAC4B;IAC5B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;gCAE4B;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;mFAC+E;IAC/E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;mDAE+C;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;+EAE2E;IAC3E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;4DACwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;oFACgF;IAChF,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAoBD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EACP,OAAO,EACP,OAAO,EACP,UAAU,EACV,OAAO,EACP,OAAO,EACP,KAAa,EACb,UAAkB,EAClB,aAAmB,EACnB,WAAW,EACX,KAAK,GACN,EAAE,gBAAgB,yFAoLlB"}
|
|
@@ -14,7 +14,7 @@ import { buildBootstrapHtml } from './bootstrapHtml.js';
|
|
|
14
14
|
* Unlike `<BitBitView>` there is no stream — a piece is a single resolved
|
|
15
15
|
* snapshot, so the data is pushed once the WebView signals `ready`.
|
|
16
16
|
*/
|
|
17
|
-
export function BitBitPiece({ client: clientProp, keyName, onTrack, onEvent, onNavigate, onError, fillHeight = false, initialHeight = 240, colorScheme, style, }) {
|
|
17
|
+
export function BitBitPiece({ client: clientProp, keyName, onTrack, onEvent, onNavigate, onReady, onError, debug = false, fillHeight = false, initialHeight = 240, colorScheme, style, }) {
|
|
18
18
|
const contextClient = useBitBitContext()?.client;
|
|
19
19
|
const client = clientProp ?? contextClient;
|
|
20
20
|
// The WebView can't read the OS appearance, so resolve it here and pass it in.
|
|
@@ -24,12 +24,15 @@ export function BitBitPiece({ client: clientProp, keyName, onTrack, onEvent, onN
|
|
|
24
24
|
// are pushed live below instead of rebuilding (which would reload the WebView).
|
|
25
25
|
const schemeRef = useRef(scheme);
|
|
26
26
|
schemeRef.current = scheme;
|
|
27
|
+
// Read through a ref, never as effect deps: a host passing inline lifecycle
|
|
28
|
+
// arrows must not re-run the resolve effect (which would refetch the piece).
|
|
29
|
+
const lifecycleRef = useRef({ onReady, onError, debug });
|
|
30
|
+
lifecycleRef.current = { onReady, onError, debug };
|
|
27
31
|
const reportError = useCallback((message) => {
|
|
28
|
-
if (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}, [onError]);
|
|
32
|
+
if (lifecycleRef.current.debug)
|
|
33
|
+
console.error(`[BitBitPiece] ${message}`);
|
|
34
|
+
lifecycleRef.current.onError?.(message);
|
|
35
|
+
}, []);
|
|
33
36
|
const webRef = useRef(null);
|
|
34
37
|
const [html, setHtml] = useState(null);
|
|
35
38
|
// Content height reported by the bundle (auto-height mode); null until first report.
|
|
@@ -95,6 +98,10 @@ export function BitBitPiece({ client: clientProp, keyName, onTrack, onEvent, onN
|
|
|
95
98
|
msg = JSON.parse(e.nativeEvent.data);
|
|
96
99
|
}
|
|
97
100
|
catch {
|
|
101
|
+
// Anything the bundle posts that isn't our JSON — a broken bridge looks
|
|
102
|
+
// identical to an idle one, so surface it rather than dropping silently.
|
|
103
|
+
if (lifecycleRef.current.debug)
|
|
104
|
+
console.warn('[BitBitPiece] ignored an unparseable bridge message');
|
|
98
105
|
return;
|
|
99
106
|
}
|
|
100
107
|
switch (msg.kind) {
|
|
@@ -124,6 +131,10 @@ export function BitBitPiece({ client: clientProp, keyName, onTrack, onEvent, onN
|
|
|
124
131
|
break;
|
|
125
132
|
}
|
|
126
133
|
case 'view':
|
|
134
|
+
// The bundle posts this on its first mount — first paint, so the host
|
|
135
|
+
// can drop its loading state. Runs before the beacon: analytics must
|
|
136
|
+
// never starve the host's readiness signal.
|
|
137
|
+
lifecycleRef.current.onReady?.();
|
|
127
138
|
beacon('VIEW');
|
|
128
139
|
break;
|
|
129
140
|
case 'track':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitBitPiece.js","sourceRoot":"","sources":["../../src/react-native-expo/BitBitPiece.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,OAAO,EAA4B,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"BitBitPiece.js","sourceRoot":"","sources":["../../src/react-native-expo/BitBitPiece.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,18 @@ export interface BitBitViewProps extends SynthesisUiRequestInputs {
|
|
|
18
18
|
onEvent?: (name: string, payload?: unknown) => void;
|
|
19
19
|
/** Navigate a link the view requested (the WebView never navigates itself). */
|
|
20
20
|
onNavigate?: (href: string) => void;
|
|
21
|
+
/** Called once the bundle has mounted and painted its first streamed data — the
|
|
22
|
+
* point a host loading spinner should be hidden. Fires again if the view
|
|
23
|
+
* re-subscribes (e.g. a `keyName` change) and reloads the WebView. */
|
|
24
|
+
onReady?: () => void;
|
|
25
|
+
/** Called when the view fails to stream, load, or render. Pairs with `onReady`
|
|
26
|
+
* so a host spinner is dismissed on the failure path too. Absent a handler the
|
|
27
|
+
* failure is silent unless `debug` is set — the SDK never logs on its own. */
|
|
28
|
+
onError?: (message: string) => void;
|
|
29
|
+
/** Print SDK failures to the console (`console.error`). Opt-in and orthogonal to
|
|
30
|
+
* `onError`: leave it off in production, turn it on to debug a view that won't
|
|
31
|
+
* render without having to wire a handler. */
|
|
32
|
+
debug?: boolean;
|
|
21
33
|
/** Style for the hosting WebView. Defaults to `{ flex: 1 }`. */
|
|
22
34
|
style?: Record<string, unknown>;
|
|
23
35
|
}
|
|
@@ -28,5 +40,5 @@ export interface BitBitViewProps extends SynthesisUiRequestInputs {
|
|
|
28
40
|
* streams, and relays the view's `track`/`onEvent`/`navigate` back out. Mirrors
|
|
29
41
|
* the web `<BitBitView>` API + auto-beaconing.
|
|
30
42
|
*/
|
|
31
|
-
export declare function BitBitView({ client: clientProp, keyName, platform, onTrack, onEvent, onNavigate, style, inputs, output, searchOptionsOverrides, synthesisHistoryLimit, }: BitBitViewProps): import("react").CElement<import("react-native-webview").WebViewProps, WebView> | null;
|
|
43
|
+
export declare function BitBitView({ client: clientProp, keyName, platform, onTrack, onEvent, onNavigate, onReady, onError, debug, style, inputs, output, searchOptionsOverrides, synthesisHistoryLimit, }: BitBitViewProps): import("react").CElement<import("react-native-webview").WebViewProps, WebView> | null;
|
|
32
44
|
//# sourceMappingURL=BitBitView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitBitView.d.ts","sourceRoot":"","sources":["../../src/react-native-expo/BitBitView.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA4B,MAAM,sBAAsB,CAAC;AAEzE,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAGjC;;;mCAGmC;AACnC,MAAM,WAAW,eAAgB,SAAQ,wBAAwB;IAC/D;uBACmB;IACnB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB;oBACgB;IAChB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;
|
|
1
|
+
{"version":3,"file":"BitBitView.d.ts","sourceRoot":"","sources":["../../src/react-native-expo/BitBitView.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAA4B,MAAM,sBAAsB,CAAC;AAEzE,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAGjC;;;mCAGmC;AACnC,MAAM,WAAW,eAAgB,SAAQ,wBAAwB;IAC/D;uBACmB;IACnB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB;oBACgB;IAChB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;2EAEuE;IACvE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;mFAE+E;IAC/E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;mDAE+C;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAoBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EAAE,UAAU,EAClB,OAAO,EACP,QAAmB,EACnB,OAAO,EACP,OAAO,EACP,UAAU,EACV,OAAO,EACP,OAAO,EACP,KAAa,EACb,KAAK,EACL,MAAM,EACN,MAAM,EACN,sBAAsB,EACtB,qBAAqB,GACtB,EAAE,eAAe,yFA+NjB"}
|
|
@@ -9,9 +9,18 @@ import { buildBootstrapHtml } from './bootstrapHtml.js';
|
|
|
9
9
|
* streams, and relays the view's `track`/`onEvent`/`navigate` back out. Mirrors
|
|
10
10
|
* the web `<BitBitView>` API + auto-beaconing.
|
|
11
11
|
*/
|
|
12
|
-
export function BitBitView({ client: clientProp, keyName, platform = 'mobile', onTrack, onEvent, onNavigate, style, inputs, output, searchOptionsOverrides, synthesisHistoryLimit, }) {
|
|
12
|
+
export function BitBitView({ client: clientProp, keyName, platform = 'mobile', onTrack, onEvent, onNavigate, onReady, onError, debug = false, style, inputs, output, searchOptionsOverrides, synthesisHistoryLimit, }) {
|
|
13
13
|
const contextClient = useBitBitContext()?.client;
|
|
14
14
|
const client = clientProp ?? contextClient;
|
|
15
|
+
// Read through a ref, never as effect deps: a host passing inline lifecycle
|
|
16
|
+
// arrows must not re-run the stream effect (which would re-synthesize).
|
|
17
|
+
const lifecycleRef = useRef({ onReady, onError, debug });
|
|
18
|
+
lifecycleRef.current = { onReady, onError, debug };
|
|
19
|
+
const reportError = useCallback((message) => {
|
|
20
|
+
if (lifecycleRef.current.debug)
|
|
21
|
+
console.error(`[BitBitView] ${message}`);
|
|
22
|
+
lifecycleRef.current.onError?.(message);
|
|
23
|
+
}, []);
|
|
15
24
|
const webRef = useRef(null);
|
|
16
25
|
const [html, setHtml] = useState(null);
|
|
17
26
|
// Latest streamed data + history + whether the WebView has loaded the bundle
|
|
@@ -37,6 +46,8 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
37
46
|
if (!client)
|
|
38
47
|
return;
|
|
39
48
|
let cancelled = false;
|
|
49
|
+
// Whether the stream ever yielded a manifest we could build a document from.
|
|
50
|
+
let gotBundle = false;
|
|
40
51
|
readyRef.current = false;
|
|
41
52
|
dataRef.current = undefined;
|
|
42
53
|
historyRef.current = undefined;
|
|
@@ -57,8 +68,14 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
57
68
|
break;
|
|
58
69
|
if (event.type === 'manifest') {
|
|
59
70
|
const bundle = event.bundleUrl ?? event.bundleSource;
|
|
60
|
-
if (bundle)
|
|
71
|
+
if (bundle) {
|
|
72
|
+
gotBundle = true;
|
|
61
73
|
setHtml(buildBootstrapHtml({ bundle, theme: event.theme, enableTts: true }));
|
|
74
|
+
// Neither field set is a dead end: no document is ever built, so the
|
|
75
|
+
// component renders null forever.
|
|
76
|
+
}
|
|
77
|
+
else if (lifecycleRef.current.debug)
|
|
78
|
+
console.error('[BitBitView] manifest carried no bundleUrl or bundleSource');
|
|
62
79
|
}
|
|
63
80
|
else if (event.type === 'data') {
|
|
64
81
|
dataRef.current = event.data;
|
|
@@ -69,9 +86,16 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
69
86
|
pushData(event.data, event.synthesisHistoryEntries);
|
|
70
87
|
}
|
|
71
88
|
}
|
|
89
|
+
// The stream can complete cleanly having never produced a renderable pair
|
|
90
|
+
// (no manifest, no data) — a blank view with nothing thrown.
|
|
91
|
+
const rendered = gotBundle && dataRef.current !== undefined;
|
|
92
|
+
if (!cancelled && !rendered && lifecycleRef.current.debug)
|
|
93
|
+
console.error('[BitBitView] stream ended without rendering');
|
|
72
94
|
}
|
|
73
|
-
catch {
|
|
95
|
+
catch (err) {
|
|
74
96
|
// A failed stream leaves the view unrendered rather than crashing.
|
|
97
|
+
if (!cancelled)
|
|
98
|
+
reportError(err instanceof Error ? err.message : String(err));
|
|
75
99
|
}
|
|
76
100
|
})();
|
|
77
101
|
return () => {
|
|
@@ -82,6 +106,7 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
82
106
|
keyName,
|
|
83
107
|
platform,
|
|
84
108
|
pushData,
|
|
109
|
+
reportError,
|
|
85
110
|
inputs,
|
|
86
111
|
output,
|
|
87
112
|
searchOptionsOverrides,
|
|
@@ -93,6 +118,10 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
93
118
|
msg = JSON.parse(e.nativeEvent.data);
|
|
94
119
|
}
|
|
95
120
|
catch {
|
|
121
|
+
// Anything the bundle posts that isn't our JSON — a broken bridge looks
|
|
122
|
+
// identical to an idle one, so surface it rather than dropping silently.
|
|
123
|
+
if (lifecycleRef.current.debug)
|
|
124
|
+
console.warn('[BitBitView] ignored an unparseable bridge message');
|
|
96
125
|
return;
|
|
97
126
|
}
|
|
98
127
|
switch (msg.kind) {
|
|
@@ -102,8 +131,15 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
102
131
|
pushData(dataRef.current, historyRef.current);
|
|
103
132
|
break;
|
|
104
133
|
case 'view':
|
|
134
|
+
// The bundle posts this on its first mount — first paint, so the host
|
|
135
|
+
// can drop its loading state. Runs before the beacon: analytics must
|
|
136
|
+
// never starve the host's readiness signal.
|
|
137
|
+
lifecycleRef.current.onReady?.();
|
|
105
138
|
beacon('VIEW');
|
|
106
139
|
break;
|
|
140
|
+
case 'error':
|
|
141
|
+
reportError(msg.message);
|
|
142
|
+
break;
|
|
107
143
|
case 'track':
|
|
108
144
|
onTrack?.(msg.event, msg.payload);
|
|
109
145
|
beacon('CLICK', msg.event, msg.payload);
|
|
@@ -146,7 +182,7 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
146
182
|
break;
|
|
147
183
|
}
|
|
148
184
|
}
|
|
149
|
-
}, [beacon, onTrack, onEvent, onNavigate, pushData, client, keyName, trackItem]);
|
|
185
|
+
}, [beacon, onTrack, onEvent, onNavigate, pushData, client, keyName, trackItem, reportError]);
|
|
150
186
|
if (!html)
|
|
151
187
|
return null;
|
|
152
188
|
return createElement(WebView, {
|
|
@@ -154,6 +190,7 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
154
190
|
source: { html, baseUrl: 'https://localhost/' },
|
|
155
191
|
originWhitelist: ['*'],
|
|
156
192
|
onMessage,
|
|
193
|
+
onError: () => reportError('WebView failed to load'),
|
|
157
194
|
javaScriptEnabled: true,
|
|
158
195
|
domStorageEnabled: true,
|
|
159
196
|
allowsInlineMediaPlayback: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitBitView.js","sourceRoot":"","sources":["../../src/react-native-expo/BitBitView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,OAAO,EAA4B,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAM7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"BitBitView.js","sourceRoot":"","sources":["../../src/react-native-expo/BitBitView.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,13 @@ export interface BitBitMobilePreviewProps {
|
|
|
10
10
|
theme?: Record<string, string>;
|
|
11
11
|
/** Resolve on-demand audio for an `<audio>` player (mint a streaming URL). */
|
|
12
12
|
onTts?: (ref?: BitBitTtsRef) => Promise<string>;
|
|
13
|
+
/** Called once the bundle has mounted and painted its first data — the point a
|
|
14
|
+
* host loading spinner should be hidden. Fires again when a new `code` reloads
|
|
15
|
+
* the iframe and re-mounts. */
|
|
16
|
+
onReady?: () => void;
|
|
17
|
+
/** Called when the bundle fails to load or throws at runtime. Pairs with
|
|
18
|
+
* `onReady` so a host spinner is dismissed on the failure path too. */
|
|
19
|
+
onError?: (message: string) => void;
|
|
13
20
|
/** Emulated device logical size (CSS px). Defaults to iPhone 15 Pro Max (430×932). */
|
|
14
21
|
deviceWidth?: number;
|
|
15
22
|
deviceHeight?: number;
|
|
@@ -21,7 +28,7 @@ export interface BitBitMobilePreviewProps {
|
|
|
21
28
|
* window instead, rendering the UI ~2-3x oversized.) It reuses the native bootstrap HTML +
|
|
22
29
|
* message protocol; only the parent side of the bridge (data/scheme in, tts out) lives here.
|
|
23
30
|
*/
|
|
24
|
-
export declare function BitBitMobilePreview({ code, data, colorScheme, theme, onTts, deviceWidth, deviceHeight, }: BitBitMobilePreviewProps): import("react").DetailedReactHTMLElement<{
|
|
31
|
+
export declare function BitBitMobilePreview({ code, data, colorScheme, theme, onTts, onReady, onError, deviceWidth, deviceHeight, }: BitBitMobilePreviewProps): import("react").DetailedReactHTMLElement<{
|
|
25
32
|
ref: import("react").RefObject<HTMLDivElement>;
|
|
26
33
|
style: {
|
|
27
34
|
position: "relative";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitBitMobilePreview.d.ts","sourceRoot":"","sources":["../../src/studio/BitBitMobilePreview.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,OAAO,CAAC;IACd,gDAAgD;IAChD,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,KAAK,EACL,KAAK,EACL,WAA0B,EAC1B,YAA4B,GAC7B,EAAE,wBAAwB;;;;;;;;
|
|
1
|
+
{"version":3,"file":"BitBitMobilePreview.d.ts","sourceRoot":"","sources":["../../src/studio/BitBitMobilePreview.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,OAAO,CAAC;IACd,gDAAgD;IAChD,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,8EAA8E;IAC9E,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD;;oCAEgC;IAChC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;4EACwE;IACxE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,WAA0B,EAC1B,YAA4B,GAC7B,EAAE,wBAAwB;;;;;;;;mBA2I1B"}
|
|
@@ -12,13 +12,17 @@ const DEVICE_HEIGHT = 932;
|
|
|
12
12
|
* window instead, rendering the UI ~2-3x oversized.) It reuses the native bootstrap HTML +
|
|
13
13
|
* message protocol; only the parent side of the bridge (data/scheme in, tts out) lives here.
|
|
14
14
|
*/
|
|
15
|
-
export function BitBitMobilePreview({ code, data, colorScheme, theme, onTts, deviceWidth = DEVICE_WIDTH, deviceHeight = DEVICE_HEIGHT, }) {
|
|
15
|
+
export function BitBitMobilePreview({ code, data, colorScheme, theme, onTts, onReady, onError, deviceWidth = DEVICE_WIDTH, deviceHeight = DEVICE_HEIGHT, }) {
|
|
16
16
|
const iframeRef = useRef(null);
|
|
17
17
|
const wrapperRef = useRef(null);
|
|
18
18
|
const dataRef = useRef(data);
|
|
19
19
|
dataRef.current = data;
|
|
20
20
|
const onTtsRef = useRef(onTts);
|
|
21
21
|
onTtsRef.current = onTts;
|
|
22
|
+
// Read through a ref so the bridge listener stays mounted for the component's
|
|
23
|
+
// lifetime regardless of the host's callback identities.
|
|
24
|
+
const lifecycleRef = useRef({ onReady, onError });
|
|
25
|
+
lifecycleRef.current = { onReady, onError };
|
|
22
26
|
const readyRef = useRef(false);
|
|
23
27
|
// Fit the fixed-resolution device into whatever space the frame gives us.
|
|
24
28
|
const [scale, setScale] = useState(1);
|
|
@@ -63,6 +67,13 @@ export function BitBitMobilePreview({ code, data, colorScheme, theme, onTts, dev
|
|
|
63
67
|
readyRef.current = true;
|
|
64
68
|
send({ kind: 'update', data: dataRef.current });
|
|
65
69
|
}
|
|
70
|
+
else if (m.kind === 'view') {
|
|
71
|
+
// The bundle posts this on its first mount — first paint.
|
|
72
|
+
lifecycleRef.current.onReady?.();
|
|
73
|
+
}
|
|
74
|
+
else if (m.kind === 'error') {
|
|
75
|
+
lifecycleRef.current.onError?.(m.message ?? 'Preview failed');
|
|
76
|
+
}
|
|
66
77
|
else if (m.kind === 'tts') {
|
|
67
78
|
const fn = onTtsRef.current;
|
|
68
79
|
const id = m.id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitBitMobilePreview.js","sourceRoot":"","sources":["../../src/studio/BitBitMobilePreview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAG3E;;yFAEyF;AACzF,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,aAAa,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"BitBitMobilePreview.js","sourceRoot":"","sources":["../../src/studio/BitBitMobilePreview.ts"],"names":[],"mappings":"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"}
|