@bitbitpress/client 2.0.0-beta.1 → 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 +5 -2
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +81 -3
- 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 +23 -1
- package/dist/react-native-expo/bootstrapHtml.js.map +1 -1
- package/dist/runtime/index.d.ts +29 -1
- 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,6 +1,6 @@
|
|
|
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
|
-
export type { BitBitAssetEngagement, BitBitTtsRef, BitBitViewContext, GeneratedUiModule, GeneratedUiViewHandle, } from '../runtime/index.js';
|
|
3
|
+
export type { BitBitAssetEngagement, BitBitTtsRef, BitBitUserSignal, BitBitViewContext, GeneratedUiModule, GeneratedUiViewHandle, } from '../runtime/index.js';
|
|
4
4
|
export { type BitBitContextValue, BitBitProvider } from '../synthesisUi/context.js';
|
|
5
5
|
export type { SynthesisUiPlatform, SynthesisUiRequestInputs, SynthesisUiStreamEvent, SynthesizeUiFetcher, };
|
|
6
6
|
/** `SynthesisUiRequestInputs` (`inputs`, `output`, `searchOptionsOverrides`,
|
|
@@ -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":"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"}
|
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 = () => { };
|
|
@@ -46,6 +46,14 @@ export function BitBitView({ client: clientProp, keyName, platform = 'web', onTr
|
|
|
46
46
|
const clientAssetEngagement = client.user.assetEngagement;
|
|
47
47
|
const getAssetEngagement = clientAssetEngagement &&
|
|
48
48
|
((assetIds) => clientAssetEngagement({ assetIds }).then((r) => r.engagement));
|
|
49
|
+
// Auto-wire personalization signals to the client (embed mode only) — the bare preview fetcher
|
|
50
|
+
// has no `signalItem`, so `ctx.user.signal` stays absent. Fire-and-forget: the client batches
|
|
51
|
+
// them, and the view never needs the result.
|
|
52
|
+
const clientSignalItem = client.user.signalItem;
|
|
53
|
+
const signal = clientSignalItem &&
|
|
54
|
+
((s) => {
|
|
55
|
+
void clientSignalItem(s).catch(() => { });
|
|
56
|
+
});
|
|
49
57
|
const makeCtx = () => {
|
|
50
58
|
const track = (event, payload) => {
|
|
51
59
|
onTrack?.(event, payload);
|
|
@@ -57,7 +65,12 @@ export function BitBitView({ client: clientProp, keyName, platform = 'web', onTr
|
|
|
57
65
|
theme,
|
|
58
66
|
onEvent: onEvent ?? noop,
|
|
59
67
|
navigate: onNavigate,
|
|
60
|
-
|
|
68
|
+
renderInlineMarkdown,
|
|
69
|
+
user: {
|
|
70
|
+
track,
|
|
71
|
+
...(signal && { signal }),
|
|
72
|
+
...(getAssetEngagement && { getAssetEngagement }),
|
|
73
|
+
},
|
|
61
74
|
media: { tts, playMedia },
|
|
62
75
|
// Flat aliases (deprecated) — existing bundles reference ctx.track/tts/playMedia.
|
|
63
76
|
track,
|
|
@@ -65,6 +78,35 @@ export function BitBitView({ client: clientProp, keyName, platform = 'web', onTr
|
|
|
65
78
|
playMedia,
|
|
66
79
|
};
|
|
67
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);
|
|
68
110
|
void (async () => {
|
|
69
111
|
const stream = await client.user.synthesizeUi({
|
|
70
112
|
keyName,
|
|
@@ -108,6 +150,7 @@ export function BitBitView({ client: clientProp, keyName, platform = 'web', onTr
|
|
|
108
150
|
})();
|
|
109
151
|
return () => {
|
|
110
152
|
cancelled = true;
|
|
153
|
+
host.removeEventListener('click', onHostClick);
|
|
111
154
|
handle?.unmount();
|
|
112
155
|
};
|
|
113
156
|
}, [
|
|
@@ -167,6 +210,13 @@ export function BitBitPiece(props) {
|
|
|
167
210
|
(keyName != null && clientTtsUrl
|
|
168
211
|
? (ref) => clientTtsUrl(keyName, ref)
|
|
169
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
|
+
});
|
|
170
220
|
const hostRef = useRef(null);
|
|
171
221
|
const handleRef = useRef(undefined);
|
|
172
222
|
// Latest props, read at mount/update without re-mounting on identity changes.
|
|
@@ -178,6 +228,7 @@ export function BitBitPiece(props) {
|
|
|
178
228
|
onEvent,
|
|
179
229
|
onNavigate,
|
|
180
230
|
onTts: resolvedOnTts,
|
|
231
|
+
signal,
|
|
181
232
|
});
|
|
182
233
|
propsRef.current = {
|
|
183
234
|
data,
|
|
@@ -187,6 +238,7 @@ export function BitBitPiece(props) {
|
|
|
187
238
|
onEvent,
|
|
188
239
|
onNavigate,
|
|
189
240
|
onTts: resolvedOnTts,
|
|
241
|
+
signal,
|
|
190
242
|
};
|
|
191
243
|
const makeCtx = useCallback(() => {
|
|
192
244
|
const p = propsRef.current;
|
|
@@ -198,7 +250,8 @@ export function BitBitPiece(props) {
|
|
|
198
250
|
...(p.colorScheme && { colorScheme: p.colorScheme }),
|
|
199
251
|
onEvent: p.onEvent ?? noop,
|
|
200
252
|
navigate: p.onNavigate,
|
|
201
|
-
|
|
253
|
+
renderInlineMarkdown,
|
|
254
|
+
user: { track, ...(p.signal && { signal: p.signal }) },
|
|
202
255
|
media: { tts, playMedia },
|
|
203
256
|
// Flat aliases (deprecated) — existing bundles reference ctx.track/tts/playMedia.
|
|
204
257
|
track,
|
|
@@ -213,6 +266,30 @@ export function BitBitPiece(props) {
|
|
|
213
266
|
if (!host || !code)
|
|
214
267
|
return;
|
|
215
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);
|
|
216
293
|
void (async () => {
|
|
217
294
|
const mod = await loadGeneratedModule(code);
|
|
218
295
|
if (cancelled || !hostRef.current)
|
|
@@ -221,6 +298,7 @@ export function BitBitPiece(props) {
|
|
|
221
298
|
})();
|
|
222
299
|
return () => {
|
|
223
300
|
cancelled = true;
|
|
301
|
+
host.removeEventListener('click', onHostClick);
|
|
224
302
|
handleRef.current?.unmount();
|
|
225
303
|
handleRef.current = undefined;
|
|
226
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,
|
|
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:
|
|
@@ -106,12 +107,33 @@ const playMedia = (el, url) => {
|
|
|
106
107
|
return () => { destroyed = true; if (hls) { try { hls.destroy(); } catch (e) {} } };
|
|
107
108
|
};
|
|
108
109
|
const track = (event, payload) => post({ kind: 'track', event, payload });
|
|
110
|
+
// Fire-and-forget personalization signal — posted to native, which records it against the user's
|
|
111
|
+
// profile (no round-trip; the view never needs the result). Native no-ops if it doesn't handle it.
|
|
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
|
+
});
|
|
109
130
|
const ctx = () => ({
|
|
110
131
|
theme: bb.theme,
|
|
111
132
|
...(bb.colorScheme ? { colorScheme: bb.colorScheme } : {}),
|
|
112
133
|
onEvent: (name, payload) => post({ kind: 'event', name, payload }),
|
|
113
134
|
navigate: (href) => post({ kind: 'navigate', href }),
|
|
114
|
-
|
|
135
|
+
renderInlineMarkdown,
|
|
136
|
+
user: { track, signal },
|
|
115
137
|
media: { playMedia${enableTts ? ', tts: requestTts' : ''} },
|
|
116
138
|
// Flat aliases (deprecated) — existing bundles reference ctx.track/tts/playMedia.
|
|
117
139
|
track,
|
|
@@ -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
|
@@ -33,10 +33,32 @@ export interface BitBitAssetEngagement {
|
|
|
33
33
|
viewed: boolean;
|
|
34
34
|
clicked: boolean;
|
|
35
35
|
}
|
|
36
|
-
/**
|
|
36
|
+
/** An interest signal recorded against this user's profile — a topic/interest they engaged with,
|
|
37
|
+
* which shapes their `activeInterests` and thus their recommendations & personalized synthesis.
|
|
38
|
+
* `negative` flags a dislike/unfollow (use sparingly); `contentContext` links it to the content
|
|
39
|
+
* that triggered it. Distinct from `track` (which is engagement analytics, not personalization). */
|
|
40
|
+
export interface BitBitUserSignal {
|
|
41
|
+
/** The interest/topic text (e.g. a tag, a category, a headline's subject). */
|
|
42
|
+
signal: string;
|
|
43
|
+
/** True for a negative signal (dislike/unfollow). Defaults to false. */
|
|
44
|
+
negative?: boolean;
|
|
45
|
+
/** The content that triggered the signal, when there is one. */
|
|
46
|
+
contentContext?: {
|
|
47
|
+
contentId: string;
|
|
48
|
+
contentType: string;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export { type BitBitLinkTracking, readLinkTracking, renderInlineMarkdown, } from './inlineMarkdown.js';
|
|
52
|
+
/** User-scoped runtime — analytics, personalization signals, and per-user data lookups. */
|
|
37
53
|
export interface BitBitUserContext {
|
|
38
54
|
/** Built-in analytics / link tracking. */
|
|
39
55
|
track(event: string, payload?: unknown): void;
|
|
56
|
+
/** Record a personalization SIGNAL against this user's profile — an interest they engaged with
|
|
57
|
+
* (a followed topic, a read/opened article, an explicit "not interested"). Signals shape the
|
|
58
|
+
* user's `activeInterests` and recommendations, so use them for genuine interest, not every
|
|
59
|
+
* click (that's `track`). Fire-and-forget + batched by the host. Absent when the host provides
|
|
60
|
+
* no user-data access (feature-detect). */
|
|
61
|
+
signal?(signal: BitBitUserSignal): void;
|
|
40
62
|
/** Look up this user's engagement (viewed / clicked) for the given assets — e.g. to
|
|
41
63
|
* render per-item read/unread state, and re-query after a `track` click. Every requested
|
|
42
64
|
* id comes back (assets with no engagement are all-false). Absent when the host provides
|
|
@@ -74,6 +96,12 @@ export interface BitBitViewContext {
|
|
|
74
96
|
colorScheme?: 'light' | 'dark';
|
|
75
97
|
/** Navigate a link (web: location; native: linking/navigation). */
|
|
76
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;
|
|
77
105
|
/** @deprecated Use `ctx.user.track`. Kept as an alias so existing bundles keep working. */
|
|
78
106
|
track(event: string, payload?: unknown): void;
|
|
79
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,
|
|
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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"}
|