@factorialco/f0-react 6.65.1 → 6.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6236,8 +6236,17 @@ export declare interface F0CarouselDialogProps extends Pick<F0DialogInternalProp
6236
6236
  */
6237
6237
  export declare const F0Chat: (props: F0ChatProps) => ReactNode;
6238
6238
 
6239
+ /** Attachment family, as the transcript classifies it (see
6240
+ * `utils/attachments.ts`). Note `video` is not an {@link F0ChatAttachment}
6241
+ * `kind` — videos are files with a video MIME type. */
6242
+ export declare type F0ChatAttachedKind = "image" | "video" | "document" | "file";
6243
+
6239
6244
  export declare type F0ChatAttachment = F0ChatImageAttachment | F0ChatFileAttachment | F0ChatLocationAttachment | F0ChatVoiceAttachment;
6240
6245
 
6246
+ /** How files reached the composer. Same story as {@link F0ChatReactionSource}:
6247
+ * {@link F0ChatRuntime.uploadFiles} cannot tell these apart. */
6248
+ export declare type F0ChatAttachSource = "button" | "drop" | "paste";
6249
+
6241
6250
  /**
6242
6251
  * Per-channel permissions. Everything is optional and defaults to today's
6243
6252
  * behavior, so hosts only express what their transport restricts (frozen /
@@ -6316,6 +6325,106 @@ export declare type F0ChatEditInput = {
6316
6325
  mentionedEveryone?: boolean;
6317
6326
  };
6318
6327
 
6328
+ export declare type F0ChatEmojiSource = "picker" | "autocomplete";
6329
+
6330
+ /**
6331
+ * Interactions F0Chat resolves internally, reported so the host can observe
6332
+ * them. Everything here is either invisible to {@link F0ChatRuntime} (it calls
6333
+ * no runtime method) or carries provenance a runtime call cannot express.
6334
+ *
6335
+ * F0 has no opinion on what these are for — it reports what the user did, not
6336
+ * what it means. Anything whose truth depends on the server (a send that may
6337
+ * still fail, a delete that may be rejected) is deliberately absent: the host
6338
+ * already sees those through the runtime, and only there does it learn the
6339
+ * outcome.
6340
+ *
6341
+ * Every handler is optional and independent — wire only the ones you need. No
6342
+ * payload carries message content, a URL, coordinates or a user id.
6343
+ *
6344
+ * Passed to `F0ChatProvider`; the provider keeps the object behind a ref, so it
6345
+ * may be rebuilt on every render without re-rendering the transcript.
6346
+ */
6347
+ export declare type F0ChatEvents = {
6348
+ onMessageCopied?: (p: {
6349
+ messageId: string;
6350
+ }) => void;
6351
+ onMessageInfoViewed?: (p: {
6352
+ messageId: string;
6353
+ }) => void;
6354
+ /** Pressing "Reply". Pair with `onReplyCancelled` to measure abandonment —
6355
+ * the host only sees replies that were actually sent. */
6356
+ onReplyStarted?: (p: {
6357
+ messageId: string;
6358
+ }) => void;
6359
+ /** Dismissing the reply chip. NOT fired when the reply is sent, nor when
6360
+ * switching to editing — only an explicit give-up counts. */
6361
+ onReplyCancelled?: (p: {
6362
+ messageId: string;
6363
+ }) => void;
6364
+ onEditStarted?: (p: {
6365
+ messageId: string;
6366
+ }) => void;
6367
+ /** Dismissing the edit chip. Same rule as {@link F0ChatEvents.onReplyCancelled}. */
6368
+ onEditCancelled?: (p: {
6369
+ messageId: string;
6370
+ }) => void;
6371
+ onReactionAdded?: (p: {
6372
+ messageId: string;
6373
+ emoji: string;
6374
+ source: F0ChatReactionSource;
6375
+ }) => void;
6376
+ onReactionRemoved?: (p: {
6377
+ messageId: string;
6378
+ emoji: string;
6379
+ source: F0ChatReactionSource;
6380
+ }) => void;
6381
+ /** Once per file, when the selection passes validation — before the upload
6382
+ * resolves, so it measures the affordance even when the upload then fails. */
6383
+ onFileAttached?: (p: {
6384
+ kind: F0ChatAttachedKind;
6385
+ source: F0ChatAttachSource;
6386
+ }) => void;
6387
+ onAttachmentRemoved?: (p: {
6388
+ kind: F0ChatAttachedKind;
6389
+ }) => void;
6390
+ onEmojiInserted?: (p: {
6391
+ emoji: string;
6392
+ source: F0ChatEmojiSource;
6393
+ }) => void;
6394
+ /** `isEveryone` distinguishes `@here` from a person. Who was mentioned is
6395
+ * deliberately not reported. */
6396
+ onMentionInserted?: (p: {
6397
+ isEveryone: boolean;
6398
+ }) => void;
6399
+ onVoiceRecordingStarted?: () => void;
6400
+ onVoiceRecordingCancelled?: () => void;
6401
+ /** First play of a voice note only — resuming after a pause does not re-fire. */
6402
+ onVoiceNotePlayed?: (p: {
6403
+ durationSeconds?: number;
6404
+ }) => void;
6405
+ onVoicePlaybackRateChanged?: (p: {
6406
+ rate: number;
6407
+ }) => void;
6408
+ /** Opening the image lightbox; `count` is how many images the group holds. */
6409
+ onImageOpened?: (p: {
6410
+ count: number;
6411
+ }) => void;
6412
+ onDocumentOpened?: (p: {
6413
+ kind: F0DocumentKind;
6414
+ }) => void;
6415
+ onAttachmentDownloaded?: (p: {
6416
+ kind: F0ChatAttachedKind;
6417
+ }) => void;
6418
+ onLocationOpened?: () => void;
6419
+ onLinkPreviewClicked?: () => void;
6420
+ onSearchOpened?: () => void;
6421
+ onSearchResultNavigated?: (p: {
6422
+ direction: "next" | "prev";
6423
+ }) => void;
6424
+ onJumpedToQuotedMessage?: () => void;
6425
+ onJumpedToBottom?: () => void;
6426
+ };
6427
+
6319
6428
  export declare type F0ChatFileAttachment = {
6320
6429
  kind: "file";
6321
6430
  url: string;
@@ -6533,8 +6642,11 @@ export declare type F0ChatProps = {
6533
6642
  * Makes a chat {@link F0ChatRuntime} available to the F0Chat UI. The host owns
6534
6643
  * the runtime (mock in stories, GetStream adapter in factorial); F0 only reads it.
6535
6644
  */
6536
- export declare const F0ChatProvider: ({ runtime, children, }: {
6645
+ export declare const F0ChatProvider: ({ runtime, events, children, }: {
6537
6646
  runtime: F0ChatRuntime;
6647
+ /** Observe interactions F0Chat resolves internally — see {@link F0ChatEvents}.
6648
+ * Rebuild it freely: it is read through a ref, never as a context value. */
6649
+ events?: F0ChatEvents;
6538
6650
  children: ReactNode;
6539
6651
  }) => ReactNode;
6540
6652
 
@@ -6549,6 +6661,11 @@ export declare type F0ChatReaction = {
6549
6661
  users?: F0ChatUser[];
6550
6662
  };
6551
6663
 
6664
+ /** Which affordance produced a reaction — the four are indistinguishable from
6665
+ * {@link F0ChatRuntime.toggleReaction}, which receives identical arguments from
6666
+ * all of them. */
6667
+ export declare type F0ChatReactionSource = "quickRow" | "menuPicker" | "existingPill" | "inlinePicker";
6668
+
6552
6669
  /**
6553
6670
  * The data + actions a host provides to drive the chat UI. F0 is headless: it
6554
6671
  * never touches the transport (GetStream, websockets, …). A mock runtime powers
@@ -7001,6 +7118,15 @@ declare type F0DialogSideControls = {
7001
7118
  next?: ReactNode;
7002
7119
  };
7003
7120
 
7121
+ /**
7122
+ * Document families the viewer can render. "pdf" is the default and keeps the
7123
+ * full toolbar (paging, zoom, print, download); the other kinds render a
7124
+ * lazy-loaded, read-only preview: "sheet" (xlsx/xls/csv) as an Excel-style
7125
+ * grid with one tab per sheet, "docx" through docx-preview with page layout,
7126
+ * and "text" as a rendered markdown document (`.md`) or monospaced source.
7127
+ */
7128
+ declare type F0DocumentKind = "pdf" | "sheet" | "docx" | "text";
7129
+
7004
7130
  /**
7005
7131
  * @experimental This is an experimental component, use it at your own risk.
7006
7132
  */
@@ -15093,9 +15219,10 @@ declare module "@tiptap/core" {
15093
15219
 
15094
15220
  declare module "@tiptap/core" {
15095
15221
  interface Commands<ReturnType> {
15096
- fontSize: {
15097
- setFontSize: (fontSize: string) => ReturnType;
15098
- unsetFontSize: () => ReturnType;
15222
+ indent: {
15223
+ setIndent: (level: number) => ReturnType;
15224
+ unsetIndent: () => ReturnType;
15225
+ outdent: () => ReturnType;
15099
15226
  };
15100
15227
  }
15101
15228
  }
@@ -15103,10 +15230,9 @@ declare module "@tiptap/core" {
15103
15230
 
15104
15231
  declare module "@tiptap/core" {
15105
15232
  interface Commands<ReturnType> {
15106
- indent: {
15107
- setIndent: (level: number) => ReturnType;
15108
- unsetIndent: () => ReturnType;
15109
- outdent: () => ReturnType;
15233
+ fontSize: {
15234
+ setFontSize: (fontSize: string) => ReturnType;
15235
+ unsetFontSize: () => ReturnType;
15110
15236
  };
15111
15237
  }
15112
15238
  }
@@ -15123,10 +15249,8 @@ declare module "@tiptap/core" {
15123
15249
 
15124
15250
  declare module "@tiptap/core" {
15125
15251
  interface Commands<ReturnType> {
15126
- videoEmbed: {
15127
- setVideoEmbed: (options: {
15128
- src: string;
15129
- }) => ReturnType;
15252
+ transcript: {
15253
+ insertTranscript: (data: TranscriptData) => ReturnType;
15130
15254
  };
15131
15255
  }
15132
15256
  }
@@ -15134,8 +15258,10 @@ declare module "@tiptap/core" {
15134
15258
 
15135
15259
  declare module "@tiptap/core" {
15136
15260
  interface Commands<ReturnType> {
15137
- transcript: {
15138
- insertTranscript: (data: TranscriptData) => ReturnType;
15261
+ videoEmbed: {
15262
+ setVideoEmbed: (options: {
15263
+ src: string;
15264
+ }) => ReturnType;
15139
15265
  };
15140
15266
  }
15141
15267
  }
@@ -1,4 +1,4 @@
1
- import { v as s, t, A as i, a as o, J as r, ar as n, aq as l, as as d, B as S, w as C, y as g, L as m, ay as u, az as c, aI as b, x as h, C as P, ax as T, aJ as p, D as F, z as I, a3 as E, b1 as A, b8 as B, K as y, b0 as D, E as L, b as W, i as v, ag as k, ah as O, G as _, an as f, F as x, j as R, n as H, o as M, k as N, c as V, q as w, r as G, H as z, aM as U, aN as j, aB as q, am as Y, aR as K, at as X, a6 as $, aL as J, U as Q, ac as Z, O as aa, bc as ea, V as sa, P as ta, M as ia, N as oa, au as ra, R as na, a_ as la, b2 as da, S as Sa, a7 as Ca, a8 as ga, _ as ma, $ as ua, a0 as ca, Z as ba, a1 as ha, W as Pa, a2 as Ta, a4 as pa, a5 as Fa, a9 as Ia, aa as Ea, b6 as Aa, b5 as Ba, ap as ya, ao as Da, aw as La, aK as Wa, aH as va, av as ka, ab as Oa, aC as _a, b7 as fa, ba as xa, aA as Ra, aF as Ha, aD as Ma, bb as Na, aG as Va, aE as wa, b9 as Ga, d as za, af as Ua, b4 as ja, b3 as qa, aj as Ya, f as Ka, l as Xa, p as $a, g as Ja, h as Qa, aU as Za, aS as ae, ak as ee, al as se, aQ as te, aT as ie, e as oe, s as re, aY as ne, aP as le, aV as de, ad as Se, a$ as Ce, u as ge, ae as me, ai as ue, aO as ce, T as be, Q as he, I as Pe, Y as Te, X as pe, aZ as Fe, aX as Ie, aW as Ee } from "./experimental-DH8mvyWK.js";
1
+ import { v as s, t, A as i, a as o, J as r, ar as n, aq as l, as as d, B as S, w as C, y as g, L as m, ay as u, az as c, aI as b, x as h, C as P, ax as T, aJ as p, D as F, z as I, a3 as E, b1 as A, b8 as B, K as y, b0 as D, E as L, b as W, i as v, ag as k, ah as O, G as _, an as f, F as x, j as R, n as H, o as M, k as N, c as V, q as w, r as G, H as z, aM as U, aN as j, aB as q, am as Y, aR as K, at as X, a6 as $, aL as J, U as Q, ac as Z, O as aa, bc as ea, V as sa, P as ta, M as ia, N as oa, au as ra, R as na, a_ as la, b2 as da, S as Sa, a7 as Ca, a8 as ga, _ as ma, $ as ua, a0 as ca, Z as ba, a1 as ha, W as Pa, a2 as Ta, a4 as pa, a5 as Fa, a9 as Ia, aa as Ea, b6 as Aa, b5 as Ba, ap as ya, ao as Da, aw as La, aK as Wa, aH as va, av as ka, ab as Oa, aC as _a, b7 as fa, ba as xa, aA as Ra, aF as Ha, aD as Ma, bb as Na, aG as Va, aE as wa, b9 as Ga, d as za, af as Ua, b4 as ja, b3 as qa, aj as Ya, f as Ka, l as Xa, p as $a, g as Ja, h as Qa, aU as Za, aS as ae, ak as ee, al as se, aQ as te, aT as ie, e as oe, s as re, aY as ne, aP as le, aV as de, ad as Se, a$ as Ce, u as ge, ae as me, ai as ue, aO as ce, T as be, Q as he, I as Pe, Y as Te, X as pe, aZ as Fe, aX as Ie, aW as Ee } from "./experimental-DAwwevsK.js";
2
2
  import { dO as Be, ep as ye, eo as De, eC as Le, dl as We, em as ve, cd as ke, c3 as Oe, ca as _e, eh as fe, bY as xe, bY as Re, bR as He, ei as Me, cg as Ne, d$ as Ve, ci as we, eF as Ge, en as ze, ey as Ue, ez as je, d5 as qe, eD as Ye, k as Ke, dP as Xe, cM as $e, el as Je, er as Qe, eq as Ze, T as as, h as es, bS as ss, eA as ts, eG as is, eB as os, eE as rs, ex as ns, eu as ls, ew as ds, es as Ss, ej as Cs, ek as gs, ed as ms, ev as us, et as cs } from "./F0CanvasPanel-Db99rzA7.js";
3
3
  import { ax as hs, ay as Ps, a5 as Ts, a6 as ps, a3 as Fs, ag as Is, C as Es, a7 as As, aJ as Bs, ac as ys, aI as Ds, af as Ls, a4 as Ws, av as vs, aL as ks, aK as Os, an as _s, ah as fs, aq as xs, aO as Rs, a2 as Hs, as as Ms, ap as Ns, ak as Vs, aQ as ws, al as Gs, at as zs, au as Us, a8 as js, aM as qs, aN as Ys, am as Ks, aw as Xs, aF as $s, O as Js, aH as Qs, a9 as Zs, aS as at, ab as et, ad as st, aq as tt, aP as it, ar as ot, ao as rt, aR as nt, aa as lt, W as dt, ae as St, a1 as Ct, $ as gt, a0 as mt, aB as ut, aC as ct, az as bt, aG as ht, aj as Pt, ai as Tt, aD as pt, l as Ft, aA as It, aE as Et, y as At } from "./CoachmarkProvider-MMyod2tH.js";
4
4
  export {
package/dist/f0.d.ts CHANGED
@@ -20412,9 +20412,10 @@ declare module "@tiptap/core" {
20412
20412
 
20413
20413
  declare module "@tiptap/core" {
20414
20414
  interface Commands<ReturnType> {
20415
- fontSize: {
20416
- setFontSize: (fontSize: string) => ReturnType;
20417
- unsetFontSize: () => ReturnType;
20415
+ indent: {
20416
+ setIndent: (level: number) => ReturnType;
20417
+ unsetIndent: () => ReturnType;
20418
+ outdent: () => ReturnType;
20418
20419
  };
20419
20420
  }
20420
20421
  }
@@ -20422,10 +20423,9 @@ declare module "@tiptap/core" {
20422
20423
 
20423
20424
  declare module "@tiptap/core" {
20424
20425
  interface Commands<ReturnType> {
20425
- indent: {
20426
- setIndent: (level: number) => ReturnType;
20427
- unsetIndent: () => ReturnType;
20428
- outdent: () => ReturnType;
20426
+ fontSize: {
20427
+ setFontSize: (fontSize: string) => ReturnType;
20428
+ unsetFontSize: () => ReturnType;
20429
20429
  };
20430
20430
  }
20431
20431
  }
@@ -20442,10 +20442,8 @@ declare module "@tiptap/core" {
20442
20442
 
20443
20443
  declare module "@tiptap/core" {
20444
20444
  interface Commands<ReturnType> {
20445
- videoEmbed: {
20446
- setVideoEmbed: (options: {
20447
- src: string;
20448
- }) => ReturnType;
20445
+ transcript: {
20446
+ insertTranscript: (data: TranscriptData) => ReturnType;
20449
20447
  };
20450
20448
  }
20451
20449
  }
@@ -20453,8 +20451,10 @@ declare module "@tiptap/core" {
20453
20451
 
20454
20452
  declare module "@tiptap/core" {
20455
20453
  interface Commands<ReturnType> {
20456
- transcript: {
20457
- insertTranscript: (data: TranscriptData) => ReturnType;
20454
+ videoEmbed: {
20455
+ setVideoEmbed: (options: {
20456
+ src: string;
20457
+ }) => ReturnType;
20458
20458
  };
20459
20459
  }
20460
20460
  }
@@ -1347,9 +1347,10 @@ declare module "@tiptap/core" {
1347
1347
 
1348
1348
  declare module "@tiptap/core" {
1349
1349
  interface Commands<ReturnType> {
1350
- fontSize: {
1351
- setFontSize: (fontSize: string) => ReturnType;
1352
- unsetFontSize: () => ReturnType;
1350
+ indent: {
1351
+ setIndent: (level: number) => ReturnType;
1352
+ unsetIndent: () => ReturnType;
1353
+ outdent: () => ReturnType;
1353
1354
  };
1354
1355
  }
1355
1356
  }
@@ -1357,10 +1358,9 @@ declare module "@tiptap/core" {
1357
1358
 
1358
1359
  declare module "@tiptap/core" {
1359
1360
  interface Commands<ReturnType> {
1360
- indent: {
1361
- setIndent: (level: number) => ReturnType;
1362
- unsetIndent: () => ReturnType;
1363
- outdent: () => ReturnType;
1361
+ fontSize: {
1362
+ setFontSize: (fontSize: string) => ReturnType;
1363
+ unsetFontSize: () => ReturnType;
1364
1364
  };
1365
1365
  }
1366
1366
  }
@@ -1377,10 +1377,8 @@ declare module "@tiptap/core" {
1377
1377
 
1378
1378
  declare module "@tiptap/core" {
1379
1379
  interface Commands<ReturnType> {
1380
- videoEmbed: {
1381
- setVideoEmbed: (options: {
1382
- src: string;
1383
- }) => ReturnType;
1380
+ transcript: {
1381
+ insertTranscript: (data: TranscriptData) => ReturnType;
1384
1382
  };
1385
1383
  }
1386
1384
  }
@@ -1388,8 +1386,10 @@ declare module "@tiptap/core" {
1388
1386
 
1389
1387
  declare module "@tiptap/core" {
1390
1388
  interface Commands<ReturnType> {
1391
- transcript: {
1392
- insertTranscript: (data: TranscriptData) => ReturnType;
1389
+ videoEmbed: {
1390
+ setVideoEmbed: (options: {
1391
+ src: string;
1392
+ }) => ReturnType;
1393
1393
  };
1394
1394
  }
1395
1395
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@factorialco/f0-react",
3
- "version": "6.65.1",
3
+ "version": "6.66.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/factorialco/f0.git",