@bitbitpress/client 2.0.0-beta.2 → 2.0.0-beta.3
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/dist/react/index.d.ts +4 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +68 -2
- package/dist/react/index.js.map +1 -1
- package/dist/react-native-expo/BitBitPiece.d.ts +10 -0
- package/dist/react-native-expo/BitBitPiece.d.ts.map +1 -1
- package/dist/react-native-expo/BitBitPiece.js +6 -0
- package/dist/react-native-expo/BitBitPiece.js.map +1 -1
- package/dist/react-native-expo/BitBitView.d.ts.map +1 -1
- package/dist/react-native-expo/BitBitView.js +18 -1
- package/dist/react-native-expo/BitBitView.js.map +1 -1
- package/dist/react-native-expo/bootstrapHtml.d.ts.map +1 -1
- package/dist/react-native-expo/bootstrapHtml.js +19 -0
- package/dist/react-native-expo/bootstrapHtml.js.map +1 -1
- package/dist/runtime/index.d.ts +7 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/inlineMarkdown.d.ts +27 -0
- package/dist/runtime/inlineMarkdown.d.ts.map +1 -0
- package/dist/runtime/inlineMarkdown.js +95 -0
- package/dist/runtime/inlineMarkdown.js.map +1 -0
- package/package.json +1 -1
package/dist/react/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type BitBitTtsRef } from '../runtime/index.js';
|
|
1
|
+
import { type BitBitTtsRef, type BitBitUserSignal } from '../runtime/index.js';
|
|
2
2
|
import type { SynthesisUiPlatform, SynthesisUiRequestInputs, SynthesisUiStreamEvent, SynthesizeUiFetcher } from '../synthesisUi/types.js';
|
|
3
3
|
export type { BitBitAssetEngagement, BitBitTtsRef, BitBitUserSignal, BitBitViewContext, GeneratedUiModule, GeneratedUiViewHandle, } from '../runtime/index.js';
|
|
4
4
|
export { type BitBitContextValue, BitBitProvider } from '../synthesisUi/context.js';
|
|
@@ -53,6 +53,9 @@ export interface BitBitPieceFetcher {
|
|
|
53
53
|
/** Mint an on-demand audio URL for a piece's spoken turns. When present, embed mode
|
|
54
54
|
* (`keyName`) wires it into `ctx.tts` so audio players play without host setup. */
|
|
55
55
|
synthesisPieceTtsUrl?(keyName: string, ref?: BitBitTtsRef): Promise<string>;
|
|
56
|
+
/** Record a personalization signal (user-scoped — not tied to the piece). When present,
|
|
57
|
+
* embed mode folds a tracked inline-link click into the reader's profile. */
|
|
58
|
+
signalItem?(signal: BitBitUserSignal): Promise<unknown>;
|
|
56
59
|
};
|
|
57
60
|
}
|
|
58
61
|
interface BitBitPieceCommonProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,YAAY,
|
|
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;CACjD;AAID;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EAAE,UAAU,EAClB,OAAO,EACP,QAAgB,EAChB,OAAO,EACP,OAAO,EACP,UAAU,EACV,KAAK,EACL,MAAM,EACN,MAAM,EACN,sBAAsB,EACtB,qBAAqB,GACtB,EAAE,eAAe;;;;;mBAiLjB;AAED;;+CAE+C;AAC/C,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;QACH;4FACoF;QACpF,oBAAoB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5E;sFAC8E;QAC9E,UAAU,CAAC,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACzD,CAAC;CACH;AAED,UAAU,sBAAsB;IAC9B;qEACiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B;uEACmE;IACnE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACrD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,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;IAChD;;8BAE0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;6DAC6D;AAC7D,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAClE,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED;gFACgF;AAChF,MAAM,WAAW,uBAAwB,SAAQ,sBAAsB;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,KAAK,CAAC;CACd;AAED,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB;;;;;mBA+JlD"}
|
package/dist/react/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createElement, useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
-
import { attachHlsMedia, loadGeneratedModule, mountGeneratedView, } from '../runtime/index.js';
|
|
2
|
+
import { attachHlsMedia, loadGeneratedModule, mountGeneratedView, readLinkTracking, renderInlineMarkdown, } from '../runtime/index.js';
|
|
3
3
|
import { useBitBitContext } from '../synthesisUi/context.js';
|
|
4
4
|
export { BitBitProvider } from '../synthesisUi/context.js';
|
|
5
5
|
const noop = () => { };
|
|
@@ -65,6 +65,7 @@ export function BitBitView({ client: clientProp, keyName, platform = 'web', onTr
|
|
|
65
65
|
theme,
|
|
66
66
|
onEvent: onEvent ?? noop,
|
|
67
67
|
navigate: onNavigate,
|
|
68
|
+
renderInlineMarkdown,
|
|
68
69
|
user: {
|
|
69
70
|
track,
|
|
70
71
|
...(signal && { signal }),
|
|
@@ -77,6 +78,35 @@ export function BitBitView({ client: clientProp, keyName, platform = 'web', onTr
|
|
|
77
78
|
playMedia,
|
|
78
79
|
};
|
|
79
80
|
};
|
|
81
|
+
// Auto-wire tracking for links carrying `data-bb-*` markers — inline-markdown links rendered via
|
|
82
|
+
// `ctx.renderInlineMarkdown`, or authored anchors. A click records a CLICK engagement (asset id +
|
|
83
|
+
// the streamed output → per-asset engagement) and a personalization signal. Delegated on the host
|
|
84
|
+
// (via composedPath, so it fires through the bundle's Shadow DOM); best-effort — never blocks.
|
|
85
|
+
const onHostClick = (e) => {
|
|
86
|
+
const link = readLinkTracking(e);
|
|
87
|
+
if (!link)
|
|
88
|
+
return;
|
|
89
|
+
if (link.assetId) {
|
|
90
|
+
trackItem?.({
|
|
91
|
+
keyName,
|
|
92
|
+
type: 'CLICK',
|
|
93
|
+
name: link.url,
|
|
94
|
+
assetId: link.assetId,
|
|
95
|
+
...(latestOutputId != null && { synthesisOutputId: latestOutputId }),
|
|
96
|
+
payload: { source: 'inline-markdown' },
|
|
97
|
+
})?.catch?.(() => { });
|
|
98
|
+
}
|
|
99
|
+
if (link.signalText) {
|
|
100
|
+
signal?.({
|
|
101
|
+
signal: link.signalText,
|
|
102
|
+
negative: link.signalNegative,
|
|
103
|
+
...(link.assetId && {
|
|
104
|
+
contentContext: { contentId: link.assetId, contentType: 'article' },
|
|
105
|
+
}),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
host.addEventListener('click', onHostClick);
|
|
80
110
|
void (async () => {
|
|
81
111
|
const stream = await client.user.synthesizeUi({
|
|
82
112
|
keyName,
|
|
@@ -120,6 +150,7 @@ export function BitBitView({ client: clientProp, keyName, platform = 'web', onTr
|
|
|
120
150
|
})();
|
|
121
151
|
return () => {
|
|
122
152
|
cancelled = true;
|
|
153
|
+
host.removeEventListener('click', onHostClick);
|
|
123
154
|
handle?.unmount();
|
|
124
155
|
};
|
|
125
156
|
}, [
|
|
@@ -179,6 +210,13 @@ export function BitBitPiece(props) {
|
|
|
179
210
|
(keyName != null && clientTtsUrl
|
|
180
211
|
? (ref) => clientTtsUrl(keyName, ref)
|
|
181
212
|
: undefined);
|
|
213
|
+
// Personalization signals are user-scoped (not tied to the piece), so a piece can record them
|
|
214
|
+
// straight through the client. Absent in `code` mode / the bare preview → `ctx.user.signal` stays off.
|
|
215
|
+
const clientSignalItem = client?.user.signalItem;
|
|
216
|
+
const signal = clientSignalItem &&
|
|
217
|
+
((s) => {
|
|
218
|
+
void clientSignalItem(s).catch(() => { });
|
|
219
|
+
});
|
|
182
220
|
const hostRef = useRef(null);
|
|
183
221
|
const handleRef = useRef(undefined);
|
|
184
222
|
// Latest props, read at mount/update without re-mounting on identity changes.
|
|
@@ -190,6 +228,7 @@ export function BitBitPiece(props) {
|
|
|
190
228
|
onEvent,
|
|
191
229
|
onNavigate,
|
|
192
230
|
onTts: resolvedOnTts,
|
|
231
|
+
signal,
|
|
193
232
|
});
|
|
194
233
|
propsRef.current = {
|
|
195
234
|
data,
|
|
@@ -199,6 +238,7 @@ export function BitBitPiece(props) {
|
|
|
199
238
|
onEvent,
|
|
200
239
|
onNavigate,
|
|
201
240
|
onTts: resolvedOnTts,
|
|
241
|
+
signal,
|
|
202
242
|
};
|
|
203
243
|
const makeCtx = useCallback(() => {
|
|
204
244
|
const p = propsRef.current;
|
|
@@ -210,7 +250,8 @@ export function BitBitPiece(props) {
|
|
|
210
250
|
...(p.colorScheme && { colorScheme: p.colorScheme }),
|
|
211
251
|
onEvent: p.onEvent ?? noop,
|
|
212
252
|
navigate: p.onNavigate,
|
|
213
|
-
|
|
253
|
+
renderInlineMarkdown,
|
|
254
|
+
user: { track, ...(p.signal && { signal: p.signal }) },
|
|
214
255
|
media: { tts, playMedia },
|
|
215
256
|
// Flat aliases (deprecated) — existing bundles reference ctx.track/tts/playMedia.
|
|
216
257
|
track,
|
|
@@ -225,6 +266,30 @@ export function BitBitPiece(props) {
|
|
|
225
266
|
if (!host || !code)
|
|
226
267
|
return;
|
|
227
268
|
let cancelled = false;
|
|
269
|
+
// Handle clicks on `data-bb-*` links (from `ctx.renderInlineMarkdown` or authored anchors): always
|
|
270
|
+
// surface them to the host's `onTrack` (keeps the studio inspector aware), and — in embed mode —
|
|
271
|
+
// fold the signal into the reader's profile. Per-asset engagement is NOT recorded for pieces (the
|
|
272
|
+
// piece events path has no per-user asset engagement); the asset id is passed to `onTrack` only.
|
|
273
|
+
const onHostClick = (e) => {
|
|
274
|
+
const link = readLinkTracking(e);
|
|
275
|
+
if (!link)
|
|
276
|
+
return;
|
|
277
|
+
propsRef.current.onTrack?.(link.url, {
|
|
278
|
+
source: 'inline-markdown',
|
|
279
|
+
...(link.assetId && { assetId: link.assetId }),
|
|
280
|
+
...(link.signalText && { signal: link.signalText, signalNegative: link.signalNegative }),
|
|
281
|
+
});
|
|
282
|
+
if (link.signalText) {
|
|
283
|
+
propsRef.current.signal?.({
|
|
284
|
+
signal: link.signalText,
|
|
285
|
+
negative: link.signalNegative,
|
|
286
|
+
...(link.assetId && {
|
|
287
|
+
contentContext: { contentId: link.assetId, contentType: 'article' },
|
|
288
|
+
}),
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
host.addEventListener('click', onHostClick);
|
|
228
293
|
void (async () => {
|
|
229
294
|
const mod = await loadGeneratedModule(code);
|
|
230
295
|
if (cancelled || !hostRef.current)
|
|
@@ -233,6 +298,7 @@ export function BitBitPiece(props) {
|
|
|
233
298
|
})();
|
|
234
299
|
return () => {
|
|
235
300
|
cancelled = true;
|
|
301
|
+
host.removeEventListener('click', onHostClick);
|
|
236
302
|
handleRef.current?.unmount();
|
|
237
303
|
handleRef.current = undefined;
|
|
238
304
|
};
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EACL,cAAc,EAOd,mBAAmB,EACnB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,16 @@ export interface BitBitPieceFetcher {
|
|
|
14
14
|
name?: string;
|
|
15
15
|
payload?: unknown;
|
|
16
16
|
}): Promise<unknown>;
|
|
17
|
+
/** Record a personalization signal (user-scoped — not tied to the piece). Wired so a tracked
|
|
18
|
+
* inline-link click folds into the reader's profile, like `<BitBitView>`. */
|
|
19
|
+
signalItem?(signal: {
|
|
20
|
+
signal: string;
|
|
21
|
+
negative?: boolean;
|
|
22
|
+
contentContext?: {
|
|
23
|
+
contentId: string;
|
|
24
|
+
contentType: string;
|
|
25
|
+
};
|
|
26
|
+
}): Promise<unknown>;
|
|
17
27
|
/** Mint an on-demand streaming audio URL for referenced piece content — wired into the
|
|
18
28
|
* view's `ctx.tts` so audio players play without host setup. */
|
|
19
29
|
synthesisPieceTtsUrl?(keyName: string, ref?: {
|
|
@@ -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;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;uDACmD;IACnD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;+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;
|
|
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;YAClB,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,cAAc,CAAC,EAAE;gBAAE,SAAS,EAAE,MAAM,CAAC;gBAAC,WAAW,EAAE,MAAM,CAAA;aAAE,CAAC;SAC7D,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB;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;uDACmD;IACnD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;+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;AAqBD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EACP,OAAO,EACP,OAAO,EACP,UAAU,EACV,OAAO,EACP,UAAkB,EAClB,aAAmB,EACnB,WAAW,EACX,KAAK,GACN,EAAE,gBAAgB,yFA2KlB"}
|
|
@@ -136,6 +136,12 @@ export function BitBitPiece({ client: clientProp, keyName, onTrack, onEvent, onN
|
|
|
136
136
|
case 'navigate':
|
|
137
137
|
onNavigate?.(msg.href);
|
|
138
138
|
break;
|
|
139
|
+
case 'signal':
|
|
140
|
+
// A tracked inline-link click: record the personalization signal (user-scoped).
|
|
141
|
+
// Per-asset engagement (`{kind:'engagement'}`) is intentionally NOT handled — the
|
|
142
|
+
// piece events path has no per-user asset engagement yet, so it's dropped.
|
|
143
|
+
void client?.user.signalItem?.(msg.signal)?.catch?.(() => { });
|
|
144
|
+
break;
|
|
139
145
|
}
|
|
140
146
|
}, [beacon, onTrack, onEvent, onNavigate, pushData, fillHeight, client, keyName, reportError]);
|
|
141
147
|
if (!html)
|
|
@@ -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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"}
|
|
@@ -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,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,KAAK,EACL,MAAM,EACN,MAAM,EACN,sBAAsB,EACtB,qBAAqB,GACtB,EAAE,eAAe,yFA4LjB"}
|
|
@@ -108,6 +108,23 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
108
108
|
onTrack?.(msg.event, msg.payload);
|
|
109
109
|
beacon('CLICK', msg.event, msg.payload);
|
|
110
110
|
break;
|
|
111
|
+
case 'engagement':
|
|
112
|
+
// A click on a data-bb-* link: record a CLICK carrying the asset + streamed output so it
|
|
113
|
+
// folds into per-asset engagement (mirrors the web host). Best-effort.
|
|
114
|
+
trackItem?.({
|
|
115
|
+
keyName,
|
|
116
|
+
type: 'CLICK',
|
|
117
|
+
...(msg.name != null && { name: msg.name }),
|
|
118
|
+
assetId: msg.assetId,
|
|
119
|
+
...(outputIdRef.current != null && { synthesisOutputId: outputIdRef.current }),
|
|
120
|
+
payload: { source: 'inline-markdown' },
|
|
121
|
+
})?.catch?.(() => { });
|
|
122
|
+
break;
|
|
123
|
+
case 'signal': {
|
|
124
|
+
const signalItem = client?.user?.signalItem;
|
|
125
|
+
void signalItem?.(msg.signal)?.catch?.(() => { });
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
111
128
|
case 'event':
|
|
112
129
|
onEvent?.(msg.name, msg.payload);
|
|
113
130
|
break;
|
|
@@ -129,7 +146,7 @@ export function BitBitView({ client: clientProp, keyName, platform = 'mobile', o
|
|
|
129
146
|
break;
|
|
130
147
|
}
|
|
131
148
|
}
|
|
132
|
-
}, [beacon, onTrack, onEvent, onNavigate, pushData, client]);
|
|
149
|
+
}, [beacon, onTrack, onEvent, onNavigate, pushData, client, keyName, trackItem]);
|
|
133
150
|
if (!html)
|
|
134
151
|
return null;
|
|
135
152
|
return createElement(WebView, {
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrapHtml.d.ts","sourceRoot":"","sources":["../../src/react-native-expo/bootstrapHtml.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bootstrapHtml.d.ts","sourceRoot":"","sources":["../../src/react-native-expo/bootstrapHtml.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;;;yEAGqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;mEAG+D;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;iFAC6E;IAC7E,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAChC,GAAG,MAAM,CAyLT"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { renderInlineMarkdown } from '../runtime/inlineMarkdown.js';
|
|
1
2
|
/**
|
|
2
3
|
* The HTML document a mobile SynthesisUI WebView loads. It runs the generated
|
|
3
4
|
* bundle (Preact + htm DOM) inside the WebView and bridges both directions:
|
|
@@ -109,11 +110,29 @@ const track = (event, payload) => post({ kind: 'track', event, payload });
|
|
|
109
110
|
// Fire-and-forget personalization signal — posted to native, which records it against the user's
|
|
110
111
|
// profile (no round-trip; the view never needs the result). Native no-ops if it doesn't handle it.
|
|
111
112
|
const signal = (s) => post({ kind: 'signal', signal: s });
|
|
113
|
+
// Injected verbatim from the shared runtime (self-contained). Renders an INLINE_MARKDOWN field —
|
|
114
|
+
// including the \`{assetId,signal}\` tracking block — to an HTML string for the bundle to inject.
|
|
115
|
+
const renderInlineMarkdown = ${renderInlineMarkdown.toString()};
|
|
116
|
+
// Auto-wire tracking for links carrying data-bb-* markers (from renderInlineMarkdown or authored
|
|
117
|
+
// anchors): post the asset-engagement + signal to native. composedPath finds the anchor through any
|
|
118
|
+
// shadow DOM; native folds engagement against the streamed output and records the signal.
|
|
119
|
+
document.addEventListener('click', (e) => {
|
|
120
|
+
const path = typeof e.composedPath === 'function' ? e.composedPath() : [];
|
|
121
|
+
let a = null;
|
|
122
|
+
for (let i = 0; i < path.length; i++) { if (path[i] && path[i].tagName === 'A') { a = path[i]; break; } }
|
|
123
|
+
if (!a) return;
|
|
124
|
+
const assetId = a.getAttribute('data-bb-asset-id');
|
|
125
|
+
const signalText = a.getAttribute('data-bb-signal');
|
|
126
|
+
if (!assetId && signalText == null) return;
|
|
127
|
+
if (assetId) post({ kind: 'engagement', assetId: assetId, name: a.getAttribute('href') || '' });
|
|
128
|
+
if (signalText) post({ kind: 'signal', signal: { signal: signalText, negative: a.hasAttribute('data-bb-signal-negative'), ...(assetId ? { contentContext: { contentId: assetId, contentType: 'article' } } : {}) } });
|
|
129
|
+
});
|
|
112
130
|
const ctx = () => ({
|
|
113
131
|
theme: bb.theme,
|
|
114
132
|
...(bb.colorScheme ? { colorScheme: bb.colorScheme } : {}),
|
|
115
133
|
onEvent: (name, payload) => post({ kind: 'event', name, payload }),
|
|
116
134
|
navigate: (href) => post({ kind: 'navigate', href }),
|
|
135
|
+
renderInlineMarkdown,
|
|
117
136
|
user: { track, signal },
|
|
118
137
|
media: { playMedia${enableTts ? ', tts: requestTts' : ''} },
|
|
119
138
|
// Flat aliases (deprecated) — existing bundles reference ctx.track/tts/playMedia.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrapHtml.js","sourceRoot":"","sources":["../../src/react-native-expo/bootstrapHtml.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAgBlC;IACC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,UAAU;QAC3B,CAAC,CAAC,qDAAqD;QACvD,CAAC,CAAC;;;;;;;;;;mCAU6B,CAAC;IAClC,+EAA+E;IAC/E,uEAAuE;IACvE,MAAM,cAAc,GAAG,UAAU;QAC/B,CAAC,CAAC;;;;;;;;;;sEAUgE;QAClE,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;;;;;;;IAOL,UAAU;;;;;;;;;;;;;;qCAcuB,KAAK,kBAAkB,WAAW
|
|
1
|
+
{"version":3,"file":"bootstrapHtml.js","sourceRoot":"","sources":["../../src/react-native-expo/bootstrapHtml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAgBlC;IACC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,UAAU;QAC3B,CAAC,CAAC,qDAAqD;QACvD,CAAC,CAAC;;;;;;;;;;mCAU6B,CAAC;IAClC,+EAA+E;IAC/E,uEAAuE;IACvE,MAAM,cAAc,GAAG,UAAU;QAC/B,CAAC,CAAC;;;;;;;;;;sEAUgE;QAClE,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;;;;;;;IAOL,UAAU;;;;;;;;;;;;;;qCAcuB,KAAK,kBAAkB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BA2CxC,oBAAoB,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;sBAsBxC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;;;;IAItD,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BrC,cAAc;;;kBAGE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6BhB,CAAC;AACT,CAAC"}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -48,6 +48,7 @@ export interface BitBitUserSignal {
|
|
|
48
48
|
contentType: string;
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
+
export { type BitBitLinkTracking, readLinkTracking, renderInlineMarkdown, } from './inlineMarkdown.js';
|
|
51
52
|
/** User-scoped runtime — analytics, personalization signals, and per-user data lookups. */
|
|
52
53
|
export interface BitBitUserContext {
|
|
53
54
|
/** Built-in analytics / link tracking. */
|
|
@@ -95,6 +96,12 @@ export interface BitBitViewContext {
|
|
|
95
96
|
colorScheme?: 'light' | 'dark';
|
|
96
97
|
/** Navigate a link (web: location; native: linking/navigation). */
|
|
97
98
|
navigate?(href: string): void;
|
|
99
|
+
/** Render an INLINE_MARKDOWN field value (`[label](url)`, `**bold**`, `*italic*`, `\n`) to an HTML
|
|
100
|
+
* string — use it for prose fields instead of hand-rolling a parser. Links carrying the tracking
|
|
101
|
+
* block `[label](url){assetId="…" signal="…"}` become `data-bb-*` anchors, and the host auto-wires a
|
|
102
|
+
* click on them to per-asset engagement + a personalization signal. Render via
|
|
103
|
+
* `dangerouslySetInnerHTML`. */
|
|
104
|
+
renderInlineMarkdown(text: string): string;
|
|
98
105
|
/** @deprecated Use `ctx.user.track`. Kept as an alias so existing bundles keep working. */
|
|
99
106
|
track(event: string, payload?: unknown): void;
|
|
100
107
|
/** @deprecated Use `ctx.media.tts`. Kept as an alias so existing bundles keep working. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;mCAEmC;AACnC,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,OAAO;IAClD;yEACqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC;CACT;AAED;;gEAEgE;AAChE,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,IAAI,EAAE,CAAC,CAAC;IACR;;6EAEyE;IACzE,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,GAAG,EAAE,iBAAiB,CAAC;CACxB;AAED,kDAAkD;AAClD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;qGAGqG;AACrG,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gEAAgE;IAChE,cAAc,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,2FAA2F;AAC3F,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C;;;;gDAI4C;IAC5C,MAAM,CAAC,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxC;;;gDAG4C;IAC5C,kBAAkB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;CACzF;AAED,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC;;;;yGAIqG;IACrG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C;;;;mGAI+F;IAC/F,SAAS,CAAC,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,iBAAiB;IAChC,0FAA0F;IAC1F,IAAI,EAAE,iBAAiB,CAAC;IACxB,wFAAwF;IACxF,KAAK,EAAE,kBAAkB,CAAC;IAC1B,+DAA+D;IAC/D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/C,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;;;6EAGyE;IACzE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* never shares a React instance with the bundle, sidestepping duplicate-React
|
|
9
9
|
* hook errors. The contract here is types + DOM glue only (no React import).
|
|
10
10
|
*/
|
|
11
|
+
export { readLinkTracking, renderInlineMarkdown, } from './inlineMarkdown.js';
|
|
11
12
|
/** Load an ES module from a runtime URL. Kept behind a parameter (not a literal import) so a
|
|
12
13
|
* bundler leaves it as a real dynamic import instead of trying to resolve the CDN URL at build. */
|
|
13
14
|
function importFromUrl(url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render the inline-markdown subset (`[label](url)`, `**bold**`, `*italic*`, `\n`) to an HTML string,
|
|
3
|
+
* with the BitBit link-tracking convention: a link may carry a Pandoc-style attribute block
|
|
4
|
+
* `[label](url){assetId="…" signal="…" negative}` that becomes `data-bb-*` attributes on the anchor.
|
|
5
|
+
* The host wires a click on any `data-bb-*` anchor to per-asset engagement + a personalization signal
|
|
6
|
+
* (see BitBitView / the mobile bootstrap). Mirrors the server's `inlineMarkdownToHtml` — keep in sync.
|
|
7
|
+
* Escapes first so field text can't inject HTML.
|
|
8
|
+
*
|
|
9
|
+
* SELF-CONTAINED (no module-scope references) so the mobile WebView bootstrap can inject it verbatim
|
|
10
|
+
* via `renderInlineMarkdown.toString()` — do not factor helpers out of the body.
|
|
11
|
+
*/
|
|
12
|
+
export declare function renderInlineMarkdown(md: string): string;
|
|
13
|
+
/** A clicked link's BitBit tracking payload, read off its `data-bb-*` attributes. Null when the anchor
|
|
14
|
+
* carries no tracking markers. Shared by the web + mobile hosts to wire engagement + signals. */
|
|
15
|
+
export interface BitBitLinkTracking {
|
|
16
|
+
url: string;
|
|
17
|
+
assetId?: string;
|
|
18
|
+
signalText?: string;
|
|
19
|
+
signalNegative: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Read the tracking markers off the clicked anchor. Uses `event.composedPath()` (not `event.target`)
|
|
23
|
+
* so it finds the anchor even when the bundle is mounted in a Shadow DOM — a listener outside the
|
|
24
|
+
* shadow root sees `event.target` retargeted to the host, but `composedPath` includes the inner nodes.
|
|
25
|
+
*/
|
|
26
|
+
export declare function readLinkTracking(event: Event): BitBitLinkTracking | null;
|
|
27
|
+
//# sourceMappingURL=inlineMarkdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inlineMarkdown.d.ts","sourceRoot":"","sources":["../../src/runtime/inlineMarkdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAsDvD;AAED;kGACkG;AAClG,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB,GAAG,IAAI,CAmBxE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Render the inline-markdown subset (`[label](url)`, `**bold**`, `*italic*`, `\n`) to an HTML string,
|
|
3
|
+
* with the BitBit link-tracking convention: a link may carry a Pandoc-style attribute block
|
|
4
|
+
* `[label](url){assetId="…" signal="…" negative}` that becomes `data-bb-*` attributes on the anchor.
|
|
5
|
+
* The host wires a click on any `data-bb-*` anchor to per-asset engagement + a personalization signal
|
|
6
|
+
* (see BitBitView / the mobile bootstrap). Mirrors the server's `inlineMarkdownToHtml` — keep in sync.
|
|
7
|
+
* Escapes first so field text can't inject HTML.
|
|
8
|
+
*
|
|
9
|
+
* SELF-CONTAINED (no module-scope references) so the mobile WebView bootstrap can inject it verbatim
|
|
10
|
+
* via `renderInlineMarkdown.toString()` — do not factor helpers out of the body.
|
|
11
|
+
*/
|
|
12
|
+
export function renderInlineMarkdown(md) {
|
|
13
|
+
// Parse a `{assetId="…" signal="…" negative}` block, walking tokens while respecting
|
|
14
|
+
// double-quoted values — so a signal value containing the word `negative` (or a literal
|
|
15
|
+
// `assetId=`/`signal=`) isn't mistaken for the flag or another attribute.
|
|
16
|
+
const parseBlock = (attrs) => {
|
|
17
|
+
const out = { assetId: '', signal: '', negative: false };
|
|
18
|
+
const token = /(\w+)=(?:"([^"]*)"|([^\s}"]+))|(\w+)/g;
|
|
19
|
+
for (let m = token.exec(attrs); m !== null; m = token.exec(attrs)) {
|
|
20
|
+
if (m[1]) {
|
|
21
|
+
const value = m[2] ?? m[3] ?? '';
|
|
22
|
+
if (m[1] === 'assetId')
|
|
23
|
+
out.assetId = value;
|
|
24
|
+
else if (m[1] === 'signal')
|
|
25
|
+
out.signal = value;
|
|
26
|
+
}
|
|
27
|
+
else if (m[4] === 'negative') {
|
|
28
|
+
out.negative = true;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
};
|
|
33
|
+
// Emphasis applies to TEXT only, never inside a <tag> — so a `*` in an attribute value (e.g.
|
|
34
|
+
// data-bb-signal) or a URL stays literal instead of turning into <em>/<strong>.
|
|
35
|
+
const emphasizeText = (html) => html.replace(/<[^>]*>|[^<]+/g, (chunk) => chunk.startsWith('<')
|
|
36
|
+
? chunk
|
|
37
|
+
: chunk
|
|
38
|
+
.replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>')
|
|
39
|
+
.replace(/\*([^*]+)\*/g, '<em>$1</em>'));
|
|
40
|
+
const withAnchors = String(md == null ? '' : md)
|
|
41
|
+
.replace(/&/g, '&')
|
|
42
|
+
.replace(/</g, '<')
|
|
43
|
+
.replace(/>/g, '>')
|
|
44
|
+
.replace(
|
|
45
|
+
// URL allows one level of balanced parens (e.g. wikipedia `…/Foo_(bar)`); the attribute
|
|
46
|
+
// block allows `}` inside a double-quoted value. The block's two branches are disjoint on
|
|
47
|
+
// their first char (`"` starts a quoted run; `[^"}]` never matches `"`), so a run of
|
|
48
|
+
// unmatched quotes can't trigger catastrophic backtracking. Mirrors the server INLINE_LINK.
|
|
49
|
+
/\[([^\]]+)\]\((https?:\/\/(?:[^()\s]|\([^()\s]*\))+)\)(?:\{((?:"[^"]*"|[^"}])*)\})?/g, (_m, label, url, attrs) => {
|
|
50
|
+
// `"` isn't neutralized by the escape above; escape it so a URL can't break out of href.
|
|
51
|
+
const href = url.replace(/"/g, '"');
|
|
52
|
+
let markers = '';
|
|
53
|
+
if (attrs != null) {
|
|
54
|
+
const b = parseBlock(attrs);
|
|
55
|
+
if (b.assetId)
|
|
56
|
+
markers += ` data-bb-asset-id="${b.assetId}"`;
|
|
57
|
+
if (b.signal)
|
|
58
|
+
markers += ` data-bb-signal="${b.signal}"`;
|
|
59
|
+
if (b.negative)
|
|
60
|
+
markers += ' data-bb-signal-negative';
|
|
61
|
+
}
|
|
62
|
+
const anchor = `<a href="${href}"${markers}>${label}</a>`;
|
|
63
|
+
// A `{…}` with no recognized tracking attrs is ordinary prose — keep it.
|
|
64
|
+
return attrs != null && markers === '' ? `${anchor}{${attrs}}` : anchor;
|
|
65
|
+
});
|
|
66
|
+
return emphasizeText(withAnchors).replace(/\n/g, '<br />');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Read the tracking markers off the clicked anchor. Uses `event.composedPath()` (not `event.target`)
|
|
70
|
+
* so it finds the anchor even when the bundle is mounted in a Shadow DOM — a listener outside the
|
|
71
|
+
* shadow root sees `event.target` retargeted to the host, but `composedPath` includes the inner nodes.
|
|
72
|
+
*/
|
|
73
|
+
export function readLinkTracking(event) {
|
|
74
|
+
const path = typeof event.composedPath === 'function' ? event.composedPath() : [];
|
|
75
|
+
let anchor = null;
|
|
76
|
+
for (const node of path) {
|
|
77
|
+
if (node instanceof HTMLAnchorElement) {
|
|
78
|
+
anchor = node;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (!anchor)
|
|
83
|
+
return null;
|
|
84
|
+
const assetId = anchor.getAttribute('data-bb-asset-id') ?? undefined;
|
|
85
|
+
const signalText = anchor.getAttribute('data-bb-signal') ?? undefined;
|
|
86
|
+
if (assetId == null && signalText == null)
|
|
87
|
+
return null;
|
|
88
|
+
return {
|
|
89
|
+
url: anchor.getAttribute('href') ?? '',
|
|
90
|
+
assetId,
|
|
91
|
+
signalText,
|
|
92
|
+
signalNegative: anchor.hasAttribute('data-bb-signal-negative'),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=inlineMarkdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inlineMarkdown.js","sourceRoot":"","sources":["../../src/runtime/inlineMarkdown.ts"],"names":[],"mappings":"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"}
|