@arbidocs/react 0.5.101 → 0.5.103

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.
Files changed (69) hide show
  1. package/dist/artifacts/index.cjs +13 -13
  2. package/dist/artifacts/index.js +3 -3
  3. package/dist/calls/livekit/index.cjs +48 -48
  4. package/dist/calls/livekit/index.d.cts +1 -1
  5. package/dist/calls/livekit/index.d.ts +1 -1
  6. package/dist/calls/livekit/index.js +3 -3
  7. package/dist/{chunk-5X3JANHT.js → chunk-4UUZ67JL.js} +3 -3
  8. package/dist/{chunk-5X3JANHT.js.map → chunk-4UUZ67JL.js.map} +1 -1
  9. package/dist/{chunk-GTF4WZRS.js → chunk-AXKIOI2U.js} +3 -3
  10. package/dist/{chunk-GTF4WZRS.js.map → chunk-AXKIOI2U.js.map} +1 -1
  11. package/dist/{chunk-HEVPIVF2.cjs → chunk-C72FSQUE.cjs} +52 -3
  12. package/dist/chunk-C72FSQUE.cjs.map +1 -0
  13. package/dist/{chunk-RSJTYRLH.js → chunk-DPR7LVZO.js} +4 -4
  14. package/dist/{chunk-RSJTYRLH.js.map → chunk-DPR7LVZO.js.map} +1 -1
  15. package/dist/{chunk-OL3THGBG.cjs → chunk-FQVNZCTD.cjs} +4 -4
  16. package/dist/{chunk-OL3THGBG.cjs.map → chunk-FQVNZCTD.cjs.map} +1 -1
  17. package/dist/{chunk-VIOW22Q4.cjs → chunk-IXE7HCCA.cjs} +44 -44
  18. package/dist/{chunk-VIOW22Q4.cjs.map → chunk-IXE7HCCA.cjs.map} +1 -1
  19. package/dist/{chunk-ORBUPHMV.cjs → chunk-KKRDM5RZ.cjs} +38 -38
  20. package/dist/{chunk-ORBUPHMV.cjs.map → chunk-KKRDM5RZ.cjs.map} +1 -1
  21. package/dist/{chunk-6SG2OGDR.js → chunk-M74JCOXW.js} +7 -2
  22. package/dist/chunk-M74JCOXW.js.map +1 -0
  23. package/dist/{chunk-YIZH5RVW.js → chunk-MAUZSNQY.js} +3 -3
  24. package/dist/{chunk-YIZH5RVW.js.map → chunk-MAUZSNQY.js.map} +1 -1
  25. package/dist/{chunk-4SH5INC3.js → chunk-NJEXFOA2.js} +4 -4
  26. package/dist/{chunk-4SH5INC3.js.map → chunk-NJEXFOA2.js.map} +1 -1
  27. package/dist/{chunk-MS43RNXM.js → chunk-OSFKAJT2.js} +49 -4
  28. package/dist/chunk-OSFKAJT2.js.map +1 -0
  29. package/dist/{chunk-PKGRTL3E.js → chunk-PJMCBB6E.js} +5 -5
  30. package/dist/{chunk-PKGRTL3E.js.map → chunk-PJMCBB6E.js.map} +1 -1
  31. package/dist/{chunk-HAGC67GL.cjs → chunk-Q2GNEVG2.cjs} +7 -2
  32. package/dist/chunk-Q2GNEVG2.cjs.map +1 -0
  33. package/dist/{chunk-TDFAUVFM.cjs → chunk-TV4QQVZM.cjs} +67 -67
  34. package/dist/{chunk-TDFAUVFM.cjs.map → chunk-TV4QQVZM.cjs.map} +1 -1
  35. package/dist/{chunk-5EELSW26.cjs → chunk-XBYVYPU5.cjs} +4 -4
  36. package/dist/{chunk-5EELSW26.cjs.map → chunk-XBYVYPU5.cjs.map} +1 -1
  37. package/dist/{chunk-4BDHKG7O.cjs → chunk-XOS7ISIR.cjs} +57 -57
  38. package/dist/{chunk-4BDHKG7O.cjs.map → chunk-XOS7ISIR.cjs.map} +1 -1
  39. package/dist/document-tools/core.cjs +99 -99
  40. package/dist/document-tools/core.d.cts +2 -2
  41. package/dist/document-tools/core.d.ts +2 -2
  42. package/dist/document-tools/core.js +4 -4
  43. package/dist/document-tools/index.cjs +101 -101
  44. package/dist/document-tools/index.d.cts +1 -1
  45. package/dist/document-tools/index.d.ts +1 -1
  46. package/dist/document-tools/index.js +5 -5
  47. package/dist/index.cjs +1798 -1642
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/{index.d-ChaR6kMc.d.ts → index.d-oR5FKZpJ.d.cts} +69 -1
  50. package/dist/{index.d-ChaR6kMc.d.cts → index.d-oR5FKZpJ.d.ts} +69 -1
  51. package/dist/index.d.cts +139 -31
  52. package/dist/index.d.ts +139 -31
  53. package/dist/index.js +174 -41
  54. package/dist/index.js.map +1 -1
  55. package/dist/{query-keys.d-O3lHn6rp.d.cts → query-keys.d-Bpb7R_lB.d.cts} +5 -0
  56. package/dist/{query-keys.d-O3lHn6rp.d.ts → query-keys.d-Bpb7R_lB.d.ts} +5 -0
  57. package/dist/shell/index.cjs +49 -33
  58. package/dist/shell/index.d.cts +1 -1
  59. package/dist/shell/index.d.ts +1 -1
  60. package/dist/shell/index.js +2 -2
  61. package/dist/ui/index.cjs +171 -171
  62. package/dist/ui/index.js +3 -3
  63. package/dist/{useAudioRecorder.d-DpDeeeAZ.d.cts → useAudioRecorder.d-B9rlMI_E.d.cts} +1 -1
  64. package/dist/{useAudioRecorder.d-DpDeeeAZ.d.ts → useAudioRecorder.d-B9rlMI_E.d.ts} +1 -1
  65. package/package.json +3 -3
  66. package/dist/chunk-6SG2OGDR.js.map +0 -1
  67. package/dist/chunk-HAGC67GL.cjs.map +0 -1
  68. package/dist/chunk-HEVPIVF2.cjs.map +0 -1
  69. package/dist/chunk-MS43RNXM.js.map +0 -1
@@ -323,6 +323,11 @@ var mailQueryKeys = {
323
323
  /** Every thread read of an account. */
324
324
  accountThreads: (accountId) => ["arbi", "mail", "thread", accountId],
325
325
  thread: (accountId, threadId, folderId) => ["arbi", "mail", "thread", accountId, threadId, folderId],
326
+ /** Where the ARBI mailbox files mail (folders and conversations, per workspace). */
327
+ nativeFiling: () => ["arbi", "mail", "filing", "native"],
328
+ /** Every filing lookup: refreshed after mail is added to a workspace or a rule is stopped. */
329
+ allFiling: () => ["arbi", "mail", "filing"],
330
+ filing: (accountId, messageIds, threadIds) => ["arbi", "mail", "filing", accountId, messageIds.join(" "), threadIds.join(" ")],
326
331
  /** The key the user's client keys older native mail with: outside the `['arbi', 'mail']` prefix, so
327
332
  * refreshing mail never fetches it again. */
328
333
  threadSecret: () => ["arbi", "mail-thread-secret"],
@@ -348,5 +353,5 @@ exports.mailQueryKeys = mailQueryKeys;
348
353
  exports.useArbi = useArbi;
349
354
  exports.useArbiHost = useArbiHost;
350
355
  exports.useDeploymentDomain = useDeploymentDomain;
351
- //# sourceMappingURL=chunk-HAGC67GL.cjs.map
352
- //# sourceMappingURL=chunk-HAGC67GL.cjs.map
356
+ //# sourceMappingURL=chunk-Q2GNEVG2.cjs.map
357
+ //# sourceMappingURL=chunk-Q2GNEVG2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/host/config.ts","../src/useArbi.ts","../src/query-keys.ts"],"names":["useContext","ArbiHostContext"],"mappings":";;;;;AA4HO,SAAS,WAAA,GAA8B;AAC5C,EAAA,OAAOA,iBAAWC,iCAAe,CAAA;AACnC;;;ACvHO,SAAS,OAAA,GAAgB;AAC9B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,WAAA,EAAY;AAC7B,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,MAAM,IAAI,MAAM,0DAA0D,CAAA;AAAA,EAC5E;AACA,EAAA,OAAO,IAAA;AACT;AAOO,SAAS,mBAAA,GAA0C;AACxD,EAAA,OAAO,WAAA,EAAY,CAAE,IAAA,EAAM,mBAAA,EAAoB;AACjD;;;ACNO,IAAM,aAAA,GAAgB;AAAA,EAC3B,UAAA,EAAY,MAAM,CAAC,MAAA,EAAQ,YAAY,CAAA;AAAA,EACvC,WAAW,CAAC,EAAA,KAAe,CAAC,MAAA,EAAQ,aAAa,EAAE,CAAA;AAAA,EACnD,YAAA,EAAc,CAAC,EAAA,EAAY,MAAA,KAAoB,CAAC,MAAA,EAAQ,cAAA,EAAgB,IAAI,MAAM,CAAA;AAAA,EAClF,UAAA,EAAY,MAAM,CAAC,MAAA,EAAQ,YAAY,CAAA;AAAA;AAAA,EAEvC,iBAAA,EAAmB,MAAM,CAAC,MAAA,EAAQ,gBAAgB,CAAA;AAAA,EAClD,gBAAgB,CAAC,WAAA,KAAwB,CAAC,MAAA,EAAQ,kBAAkB,WAAW,CAAA;AAAA;AAAA,EAE/E,YAAA,EAAc,MAAM,CAAC,MAAA,EAAQ,WAAW,CAAA;AAAA,EACxC,WAAW,CAAC,WAAA,KAAwB,CAAC,MAAA,EAAQ,aAAa,WAAW,CAAA;AAAA;AAAA,EAErE,UAAU,CAAC,KAAA,KAAkB,CAAC,MAAA,EAAQ,YAAY,KAAK,CAAA;AAAA,EACvD,aAAA,EAAe,CAAC,MAAA,KACd,CAAC,QAAQ,eAAA,EAAiB,CAAC,GAAG,MAAM,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AAAA,EAExD,mBAAA,EAAqB,MAAM,CAAC,MAAA,EAAQ,kBAAkB,CAAA;AAAA,EACtD,gBAAA,EAAkB,CAAC,WAAA,EAAqB,SAAA,KACtC,CAAC,MAAA,EAAQ,kBAAA,EAAoB,aAAa,SAAS,CAAA;AAAA;AAAA,EAErD,mBAAA,EAAqB,MAAM,CAAC,MAAA,EAAQ,kBAAkB,CAAA;AAAA,EACtD,kBAAkB,CAAC,KAAA,KAAkB,CAAC,MAAA,EAAQ,oBAAoB,KAAK,CAAA;AAAA,EACvE,eAAe,CAAC,WAAA,KAAwB,CAAC,MAAA,EAAQ,iBAAiB,WAAW,CAAA;AAAA;AAAA,EAE7E,gBAAA,EAAkB,MAAM,CAAC,MAAA,EAAQ,eAAe,CAAA;AAAA;AAAA,EAEhD,qBAAqB,CAAC,cAAA,KACpB,CAAC,MAAA,EAAQ,eAAA,EAAiB,gBAAgB,SAAS,CAAA;AAAA;AAAA,EAErD,gBAAgB,CAAC,SAAA,KAAsB,CAAC,MAAA,EAAQ,kBAAkB,SAAS,CAAA;AAAA;AAAA,EAE3E,iBAAA,EAAmB,MAAM,CAAC,MAAA,EAAQ,mBAAmB,CAAA;AAAA;AAAA,EAErD,OAAA,EAAS,MAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,EAC9B,MAAM,CAAC,WAAA,KAAwB,CAAC,MAAA,EAAQ,QAAQ,WAAW,CAAA;AAAA;AAAA,EAE3D,UAAU,CAAC,WAAA,KAAwB,CAAC,MAAA,EAAQ,MAAA,EAAQ,aAAa,OAAO,CAAA;AAAA;AAAA,EAExE,UAAU,CAAC,WAAA,KAAwB,CAAC,MAAA,EAAQ,MAAA,EAAQ,aAAa,MAAM,CAAA;AAAA;AAAA,EAEvE,OAAA,EAAS,CAAC,WAAA,EAAqB,KAAA,KAC7B,CAAC,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,MAAA,EAAQ,KAAK,CAAA;AAAA;AAAA,EAE7C,OAAA,EAAS,CAAC,WAAA,EAAqB,IAAA,KAC7B,CAAC,MAAA,EAAQ,MAAA,EAAQ,WAAA,EAAa,MAAA,EAAQ,IAAI,CAAA;AAAA;AAAA,EAE5C,sBAAsB,CAAC,cAAA,KACrB,CAAC,MAAA,EAAQ,eAAA,EAAiB,gBAAgB,UAAU,CAAA;AAAA,EACtD,UAAA,EAAY,CAAC,MAAA,KAAqB,CAAC,QAAQ,YAAA,EAAc,CAAC,GAAG,MAAM,CAAA,CAAE,IAAA,EAAK,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AAAA,EAErF,gBAAgB,CAAC,KAAA,KAAkB,CAAC,MAAA,EAAQ,aAAa,KAAK,CAAA;AAAA,EAC9D,SAAA,EAAW,CAAC,KAAA,EAAe,KAAA,KAAkB,CAAC,MAAA,EAAQ,WAAA,EAAa,OAAO,KAAK,CAAA;AAAA,EAC/E,MAAA,EAAQ,MAAM,CAAC,MAAA,EAAQ,QAAQ,CAAA;AAAA,EAC/B,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,EACnC,MAAA,EAAQ,MAAM,CAAC,MAAA,EAAQ,QAAQ,CAAA;AAAA,EAC/B,SAAA,EAAW,MAAM,CAAC,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAErC,cAAc,CAAC,UAAA,KAAuB,CAAC,MAAA,EAAQ,WAAA,EAAa,YAAY,MAAM,CAAA;AAAA;AAAA,EAE9E,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,OAAO,CAAA;AAAA,EAChC,OAAO,CAAC,WAAA,KAAwB,CAAC,MAAA,EAAQ,SAAS,WAAW,CAAA;AAAA,EAC7D,OAAA,EAAS,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA;AAAA,EACjC,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA;AAAA,EAEnC,qBAAA,EAAuB,MAAM,CAAC,MAAA,EAAQ,oBAAoB,CAAA;AAAA;AAAA,EAE1D,oBAAoB,CAAC,WAAA,KACnB,CAAC,MAAA,EAAQ,oBAAA,EAAsB,QAAQ,WAAW,CAAA;AAAA;AAAA,EAEpD,mBAAmB,CAAC,UAAA,KAClB,CAAC,MAAA,EAAQ,oBAAA,EAAsB,OAAO,UAAU,CAAA;AAAA;AAAA,EAElD,qBAAA,EAAuB,CAAC,WAAA,EAAqB,KAAA,EAAe,IAAA,KAC1D,CAAC,MAAA,EAAQ,oBAAA,EAAsB,MAAA,EAAQ,WAAA,EAAa,KAAA,EAAO,IAAI,CAAA;AAAA;AAAA,EAEjE,mBAAmB,CAAC,WAAA,KAAwB,CAAC,MAAA,EAAQ,qBAAqB,WAAW,CAAA;AAAA,EACrF,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,EACnC,YAAA,EAAc,CAAC,YAAA,EAAsB,UAAA,KACnC,CAAC,MAAA,EAAQ,cAAA,EAAgB,cAAc,UAAU,CAAA;AAAA,EACnD,wBAAA,EAA0B,CAAC,YAAA,EAAsB,UAAA,KAC/C,CAAC,MAAA,EAAQ,cAAA,EAAgB,YAAA,EAAc,gBAAA,EAAkB,UAAU,CAAA;AAAA,EACrE,iBAAiB,CAAC,YAAA,KAAyB,CAAC,MAAA,EAAQ,mBAAmB,YAAY,CAAA;AAAA;AAAA,EAEnF,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA;AAAA,EAEnC,aAAA,EAAe,MAAM,CAAC,MAAA,EAAQ,cAAc,CAAA;AAAA,EAC5C,cAAA,EAAgB,MAAM,CAAC,MAAA,EAAQ,gBAAgB,CAAA;AAAA,EAC/C,WAAA,EAAa,MAAM,CAAC,MAAA,EAAQ,aAAa,CAAA;AAAA,EACzC,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,EACnC,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA;AAAA,EAEnC,KAAA,EAAO,MAAM,CAAC,MAAA,EAAQ,OAAO,CAAA;AAAA;AAAA,EAE7B,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,SAAS,MAAM,CAAA;AAAA;AAAA,EAExC,YAAY,CAAC,SAAA,KAAsB,CAAC,MAAA,EAAQ,OAAA,EAAS,UAAU,SAAS,CAAA;AAAA;AAAA,EAExE,eAAe,CAAC,UAAA,KAAuB,CAAC,MAAA,EAAQ,OAAA,EAAS,eAAe,UAAU,CAAA;AAAA;AAAA,EAElF,YAAA,EAAc,MAAM,CAAC,MAAA,EAAQ,cAAc,CAAA;AAAA,EAC3C,MAAA,EAAQ,MAAM,CAAC,MAAA,EAAQ,QAAQ,CAAA;AAAA;AAAA,EAE/B,aAAa,CAAC,QAAA,KAAqB,CAAC,MAAA,EAAQ,QAAA,EAAU,UAAU,QAAQ,CAAA;AAAA;AAAA,EAExE,aAAa,CAAC,UAAA,KAAwB,CAAC,MAAA,EAAQ,aAAA,EAAe,cAAc,SAAS,CAAA;AAAA,EACrF,iBAAiB,CAAC,UAAA,KAAuB,CAAC,MAAA,EAAQ,mBAAmB,UAAU,CAAA;AAAA;AAAA,EAE/E,cAAc,CAAC,UAAA,KAAuB,CAAC,MAAA,EAAQ,gBAAgB,UAAU,CAAA;AAAA,EACzE,YAAY,CAAC,UAAA,KAAuB,CAAC,MAAA,EAAQ,cAAc,UAAU,CAAA;AAAA,EACrE,eAAA,EAAiB,MAAM,CAAC,MAAA,EAAQ,iBAAiB,CAAA;AAAA,EACjD,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,EACnC,MAAA,EAAQ,MAAM,CAAC,MAAA,EAAQ,QAAQ,CAAA;AAAA,EAC/B,eAAA,EAAiB,MAAM,CAAC,MAAA,EAAQ,iBAAiB,CAAA;AAAA,EACjD,kBAAkB,CAAC,MAAA,KAAoB,CAAC,MAAA,EAAQ,oBAAoB,MAAM,CAAA;AAAA,EAC1E,kBAAkB,CAAC,MAAA,KAAoB,CAAC,MAAA,EAAQ,oBAAoB,MAAM,CAAA;AAAA;AAAA,EAE1E,OAAA,EAAS,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA;AAAA,EACjC,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA;AAAA,EAEnC,YAAA,EAAc,MAAM,CAAC,MAAA,EAAQ,cAAc,CAAA;AAAA;AAAA,EAE3C,iBAAA,EAAmB,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA;AAAA,EAC3C,cAAA,EAAgB,MAAM,CAAC,MAAA,EAAQ,WAAW,SAAS,CAAA;AAAA,EACnD,eAAe,CAAC,EAAA,KAAe,CAAC,MAAA,EAAQ,SAAA,EAAW,WAAW,EAAE,CAAA;AAAA,EAChE,gBAAA,EAAkB,MAAM,CAAC,MAAA,EAAQ,eAAe,CAAA;AAAA;AAAA,EAEhD,eAAe,CAAC,KAAA,KAAkB,CAAC,MAAA,EAAQ,iBAAiB,KAAK,CAAA;AAAA;AAAA,EAEjE,yBAAyB,CAAC,WAAA,KACxB,CAAC,MAAA,EAAQ,2BAA2B,WAAW,CAAA;AAAA;AAAA;AAAA,EAGjD,OAAA,EAAS,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA;AAAA;AAAA,EAEjC,eAAA,EAAiB,CAAC,MAAA,KAChB,MAAA,KAAW,SACN,CAAC,MAAA,EAAQ,SAAA,EAAW,UAAU,CAAA,GAC9B,CAAC,MAAA,EAAQ,SAAA,EAAW,YAAY,MAAM,CAAA;AAAA;AAAA,EAE7C,YAAA,EAAc,CAAC,MAAA,KACb,MAAA,KAAW,SACN,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAA,GAC3B,CAAC,MAAA,EAAQ,SAAA,EAAW,SAAS,MAAM,CAAA;AAAA;AAAA,EAE1C,gBAAA,EAAkB,CAAC,MAAA,KACjB,MAAA,KAAW,SACN,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAA,GAC3B,CAAC,MAAA,EAAQ,SAAA,EAAW,SAAS,MAAM,CAAA;AAAA;AAAA,EAE1C,gBAAA,EAAkB,CAAC,MAAA,KACjB,MAAA,KAAW,SACN,CAAC,MAAA,EAAQ,SAAA,EAAW,WAAW,CAAA,GAC/B,CAAC,MAAA,EAAQ,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA;AAAA,EAE9C,cAAA,EAAgB,CAAC,WAAA,KACf,WAAA,KAAgB,SACX,CAAC,MAAA,EAAQ,SAAA,EAAW,gBAAgB,CAAA,GACpC,CAAC,MAAA,EAAQ,SAAA,EAAW,kBAAkB,WAAW,CAAA;AAAA;AAAA,EAExD,gBAAA,EAAkB,CAAC,WAAA,KACjB,WAAA,KAAgB,MAAA,GACX,CAAC,MAAA,EAAQ,kBAAkB,CAAA,GAC3B,CAAC,MAAA,EAAQ,kBAAA,EAAoB,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAK/C,SAAA,EAAW,MAAM,CAAC,MAAA,EAAQ,WAAW,CAAA;AAAA;AAAA,EAErC,YAAA,EAAc,CAAC,WAAA,KACb,WAAA,KAAgB,SACX,CAAC,MAAA,EAAQ,WAAA,EAAa,MAAM,CAAA,GAC5B,CAAC,MAAA,EAAQ,WAAA,EAAa,QAAQ,WAAW,CAAA;AAAA;AAAA,EAEhD,UAAU,CAAC,WAAA,EAAsB,UAAA,KAC/B,WAAA,KAAgB,SACX,CAAC,MAAA,EAAQ,WAAA,EAAa,KAAK,IAC3B,CAAC,MAAA,EAAQ,aAAa,KAAA,EAAO,WAAA,EAAa,cAAc,EAAE,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjE,YAAA,EAAc,CAAC,WAAA,EAAsB,UAAA,EAAqB,MAAA,KACxD,WAAA,KAAgB,MAAA,GACX,CAAC,MAAA,EAAQ,WAAA,EAAa,MAAM,CAAA,GAC7B,MAAA,KAAW,MAAA,GACR,CAAC,MAAA,EAAQ,WAAA,EAAa,MAAA,EAAQ,WAAA,EAAa,UAAA,IAAc,EAAE,CAAA,GAC3D,CAAC,MAAA,EAAQ,WAAA,EAAa,MAAA,EAAQ,WAAA,EAAa,UAAA,IAAc,IAAI,MAAM,CAAA;AAAA;AAAA,EAE5E,YAAY,CAAC,KAAA,KAAkB,CAAC,MAAA,EAAQ,cAAc,KAAK,CAAA;AAAA;AAAA,EAE3D,iBAAA,EAAmB,CAAC,WAAA,EAAsB,UAAA,EAAqB,YAC7D,WAAA,KAAgB,MAAA,GACX,CAAC,MAAA,EAAQ,WAAA,EAAa,WAAW,CAAA,GACjC,CAAC,QAAQ,WAAA,EAAa,WAAA,EAAa,aAAa,UAAA,IAAc,EAAA,EAAI,OAAA,IAAW,EAAE,CAAA;AAAA;AAAA;AAAA,EAGtF,cAAA,EAAgB,MAAM,CAAC,MAAA,EAAQ,WAAW,UAAU,CAAA;AAAA;AAAA,EAEpD,YAAA,EAAc,MAAM,CAAC,MAAA,EAAQ,WAAW,QAAQ,CAAA;AAAA;AAAA,EAEhD,QAAQ,CAAC,QAAA,KAAqB,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO,QAAQ,CAAA;AAAA;AAAA,EAEjE,YAAA,EAAc,MAAM,CAAC,MAAA,EAAQ,cAAc,CAAA;AAAA;AAAA;AAAA,EAG3C,yBAAyB,CAAC,cAAA,KACxB,CAAC,MAAA,EAAQ,eAAA,EAAiB,gBAAgB,cAAc,CAAA;AAAA;AAAA;AAAA,EAG1D,kBAAA,EAAoB,CAAC,KAAA,EAAgB,OAAA,KACnC,UAAU,MAAA,GACL,CAAC,MAAA,EAAQ,oBAAoB,IAC7B,CAAC,MAAA,EAAQ,oBAAA,EAAsB,KAAA,EAAO,WAAW,IAAI,CAAA;AAAA;AAAA,EAE5D,uBAAuB,CAAC,SAAA,KACtB,CAAC,MAAA,EAAQ,yBAAyB,SAAS,CAAA;AAAA;AAAA,EAE7C,iBAAA,EAAmB,MAAM,CAAC,MAAA,EAAQ,mBAAmB,CAAA;AAAA,EACrD,8BAA8B,CAAC,KAAA,KAC7B,CAAC,MAAA,EAAQ,mBAAA,EAAqB,YAAY,KAAK,CAAA;AAAA;AAAA,EAEjD,mBAAA,EAAqB,CAAC,WAAA,KACpB,WAAA,KAAgB,SACX,CAAC,MAAA,EAAQ,mBAAA,EAAqB,YAAY,CAAA,GAC1C,CAAC,MAAA,EAAQ,mBAAA,EAAqB,cAAc,WAAW,CAAA;AAAA;AAAA,EAE9D,cAAA,EAAgB,MAAM,CAAC,MAAA,EAAQ,gBAAgB,CAAA;AAAA;AAAA,EAE/C,gBAAgB,CAAC,KAAA,KAAkB,CAAC,MAAA,EAAQ,kBAAkB,KAAK,CAAA;AAAA;AAAA,EAEnE,YAAA,EAAc,CAAC,KAAA,KAAkB,CAAC,QAAQ,WAAA,EAAa,KAAA,EAAO,UAAU,eAAe,CAAA;AAAA;AAAA,EAEvF,YAAY,CAAC,KAAA,KAAkB,CAAC,MAAA,EAAQ,cAAc,KAAK,CAAA;AAAA;AAAA;AAAA,EAG3D,kBAAkB,CAAC,QAAA,KAAqB,CAAC,MAAA,EAAQ,oBAAoB,QAAQ,CAAA;AAAA;AAAA,EAE7E,cAAA,EAAgB,CAAC,YAAA,EAAsB,MAAA,KACrC,CAAC,MAAA,EAAQ,cAAA,EAAgB,SAAA,EAAW,YAAA,EAAc,MAAM,CAAA;AAAA,EAC1D,gBAAA,EAAkB,CAAC,YAAA,EAA6B,IAAA,KAC9C,CAAC,MAAA,EAAQ,cAAA,EAAgB,MAAA,EAAQ,YAAA,EAAc,IAAI,CAAA;AAAA,EACrD,iBAAA,EAAmB,CAAC,YAAA,EAAsB,IAAA,KACxC,CAAC,MAAA,EAAQ,cAAA,EAAgB,OAAA,EAAS,YAAA,EAAc,IAAI,CAAA;AAAA;AAAA,EAEtD,eAAe,CAAC,IAAA,KAAiB,CAAC,MAAA,EAAQ,UAAA,EAAY,UAAU,IAAI,CAAA;AAAA;AAAA,EAEpE,QAAA,EAAU,CAAC,WAAA,EAAqB,MAAA,KAC9B,CAAC,MAAA,EAAQ,OAAA,EAAS,aAAa,MAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvC,SAAA,EAAW,CAAC,WAAA,EAAqB,aAAA,KAC/B,CAAC,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAQ,WAAA,EAAa,aAAa,CAAA;AAAA;AAAA,EAEvD,gBAAA,EAAkB,CAAC,YAAA,EAAsB,IAAA,EAAc,KAAA,KACrD,CAAC,MAAA,EAAQ,UAAA,EAAY,YAAA,EAAc,QAAA,EAAU,IAAA,EAAM,KAAK,CAAA;AAAA;AAAA,EAE1D,gBAAA,EAAkB,MAAM,CAAC,MAAA,EAAQ,kBAAkB,CAAA;AAAA;AAAA,EAEnD,kBAAA,EAAoB,CAAC,IAAA,EAAc,MAAA,EAAgB,MAAA,KACjD,CAAC,MAAA,EAAQ,oBAAA,EAAsB,IAAA,EAAM,MAAA,EAAQ,MAAA,IAAU,EAAE;AAC7D;AAMO,IAAM,gBAAA,GAAmB;AAAA;AAAA,EAE9B,uBAAA,EAAyB,MAAM,CAAC,MAAA,EAAQ,cAAc,OAAO,CAAA;AAAA,EAC7D,WAAA,EAAa,MAAM,CAAC,MAAA,EAAQ,aAAa,KAAK,CAAA;AAAA,EAC9C,qBAAqB,MAAM,CAAC,MAAA,EAAQ,MAAA,EAAQ,SAAS,QAAQ,CAAA;AAAA,EAC7D,SAAA,EAAW,MAAM,CAAC,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AAAA,EAC1C,SAAA,EAAW,MAAM,CAAC,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AAAA,EAC1C,SAAA,EAAW,MAAM,CAAC,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AAAA,EAC1C,iBAAiB,MAAM,CAAC,MAAA,EAAQ,MAAA,EAAQ,YAAY,SAAS,CAAA;AAAA,EAC7D,eAAA,EAAiB,MAAM,CAAC,MAAA,EAAQ,aAAa,QAAQ,CAAA;AAAA,EACrD,eAAA,EAAiB,MAAM,CAAC,MAAA,EAAQ,aAAa,QAAQ,CAAA;AAAA,EACrD,eAAA,EAAiB,MAAM,CAAC,MAAA,EAAQ,aAAa,QAAQ,CAAA;AAAA,EACrD,UAAA,EAAY,MAAM,CAAC,MAAA,EAAQ,aAAa,YAAY,CAAA;AAAA,EACpD,aAAA,EAAe,MAAM,CAAC,MAAA,EAAQ,WAAW,QAAQ,CAAA;AAAA,EACjD,aAAA,EAAe,MAAM,CAAC,MAAA,EAAQ,WAAW,QAAQ,CAAA;AAAA,EACjD,YAAA,EAAc,MAAM,CAAC,MAAA,EAAQ,WAAW,QAAQ,CAAA;AAAA,EAChD,eAAA,EAAiB,MAAM,CAAC,MAAA,EAAQ,WAAW,UAAU,CAAA;AAAA;AAAA,EAErD,mBAAA,EAAqB,MAAM,CAAC,MAAA,EAAQ,cAAc,SAAS,CAAA;AAAA;AAAA,EAE3D,WAAA,EAAa,MAAM,CAAC,MAAA,EAAQ,iBAAiB,MAAM;AACrD;AAMO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,GAAA,EAAK,MAAM,CAAC,MAAA,EAAQ,UAAU,CAAA;AAAA,EAC9B,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,YAAY,UAAU,CAAA;AAAA,EAC/C,SAAA,EAAW,MAAM,CAAC,MAAA,EAAQ,YAAY,WAAW,CAAA;AAAA;AAAA,EAEjD,MAAA,EAAQ,MAAM,CAAC,MAAA,EAAQ,YAAY,QAAQ,CAAA;AAAA,EAC3C,SAAA,EAAW,CAAC,CAAA,KACV;AAAA,IACE,MAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,EAAE,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,GAAA,EAAK,CAAA,CAAE,GAAA,EAAK,SAAA,EAAW,CAAA,CAAE,SAAA,EAAW,IAAA,CAAK,GAAG,KAAK,IAAA;AAAK,GAC1E;AAAA;AAAA,EAEF,YAAA,EAAc,MAAM,CAAC,MAAA,EAAQ,YAAY,OAAO,CAAA;AAAA,EAChD,KAAA,EAAO,CAAC,EAAA,EAAY,YAAA,KAClB,CAAC,QAAQ,UAAA,EAAY,OAAA,EAAS,EAAA,EAAI,YAAA,IAAgB,IAAI,CAAA;AAAA,EACxD,QAAQ,CAAC,KAAA,KAAkB,CAAC,MAAA,EAAQ,UAAA,EAAY,UAAU,KAAK,CAAA;AAAA,EAC/D,WAAA,EAAa,MAAM,CAAC,MAAA,EAAQ,YAAY,aAAa,CAAA;AAAA,EACrD,gBAAA,EAAkB,MAAM,CAAC,MAAA,EAAQ,YAAY,mBAAmB,CAAA;AAAA,EAChE,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,YAAY,OAAO,CAAA;AAAA,EAC5C,OAAO,CAAC,CAAA,KAAiB,CAAC,MAAA,EAAQ,UAAA,EAAY,SAAS,CAAC,CAAA;AAAA,EACxD,QAAA,EAAU,CAAC,SAAA,EAAqB,KAAA,EAAe,QAC7C,CAAC,MAAA,EAAQ,UAAA,EAAY,UAAA,EAAY,SAAA,CAAU,IAAA,CAAK,GAAG,CAAA,EAAG,OAAO,GAAG,CAAA;AAAA,EAClE,UAAA,EAAY,MAAM,CAAC,MAAA,EAAQ,YAAY,QAAQ,CAAA;AAAA,EAC/C,QAAQ,CAAC,GAAA,KAAgB,CAAC,MAAA,EAAQ,UAAA,EAAY,UAAU,GAAG,CAAA;AAAA,EAC3D,QAAA,EAAU,CAAC,WAAA,EAA4B,CAAA,EAAoB,MAAA,KACzD;AAAA,IACE,MAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,CAAA,GAAI,EAAE,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,GAAA,EAAK,CAAA,CAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,IAAA,CAAK,GAAG,GAAE,GAAI;AAAA,GAClE;AAAA,EACF,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,YAAY,UAAU,CAAA;AAAA,EAC/C,cAAA,EAAgB,MAAM,CAAC,MAAA,EAAQ,YAAY,iBAAiB,CAAA;AAAA,EAC5D,YAAA,EAAc,MAAM,CAAC,MAAA,EAAQ,YAAY,eAAe,CAAA;AAAA;AAAA,EAExD,MAAA,EAAQ,MAAM,CAAC,MAAA,EAAQ,YAAY,QAAQ;AAC7C;AAGO,IAAM,aAAA,GAAgB;AAAA,EAC3B,GAAA,EAAK,MAAM,CAAC,MAAA,EAAQ,OAAO,CAAA;AAAA,EAC3B,MAAA,EAAQ,MAAM,CAAC,MAAA,EAAQ,SAAS,QAAQ,CAAA;AAAA,EACxC,MAAM,CAAC,SAAA,KAAsB,CAAC,MAAA,EAAQ,OAAA,EAAS,QAAQ,SAAS,CAAA;AAAA;AAAA,EAEhE,cAAc,CAAC,SAAA,KAAsB,CAAC,MAAA,EAAQ,OAAA,EAAS,cAAc,SAAS,CAAA;AAAA,EAC9E,UAAA,EAAY,CAAC,SAAA,KAAsB,CAAC,QAAQ,OAAA,EAAS,YAAA,EAAc,WAAW,MAAM,CAAA;AAAA,EACpF,SAAA,EAAW,CAAC,SAAA,EAAmB,cAAA,KAC7B,CAAC,QAAQ,OAAA,EAAS,YAAA,EAAc,SAAA,EAAW,KAAA,EAAO,cAAc,CAAA;AAAA,EAClE,aAAa,CAAC,SAAA,KAAsB,CAAC,MAAA,EAAQ,OAAA,EAAS,gBAAgB,SAAS;AACjF;AAEO,IAAM,kBAAA,GAAqB;AAAA,EAChC,GAAA,EAAK,MAAM,CAAC,MAAA,EAAQ,YAAY,CAAA;AAAA,EAChC,OAAA,EAAS,MAAM,CAAC,MAAA,EAAQ,cAAc,SAAS,CAAA;AAAA,EAC/C,IAAA,EAAM,MAAM,CAAC,MAAA,EAAQ,cAAc,MAAM,CAAA;AAAA,EACzC,gBAAgB,CAAC,MAAA,KAAmB,CAAC,MAAA,EAAQ,YAAA,EAAc,WAAW,MAAM,CAAA;AAAA,EAC5E,mBAAA,EAAqB,CAAC,MAAA,EAAgB,cAAA,KACpC,CAAC,MAAA,EAAQ,YAAA,EAAc,eAAA,EAAiB,MAAA,EAAQ,cAAc,CAAA;AAAA,EAChE,sBAAA,EAAwB,MAAM,CAAC,MAAA,EAAQ,cAAc,eAAe,CAAA;AAAA,EACpE,cAAc,CAAC,MAAA,KAAmB,CAAC,MAAA,EAAQ,YAAA,EAAc,iBAAiB,MAAM,CAAA;AAAA,EAChF,mBAAA,EAAqB,CAAC,MAAA,EAAgB,MAAA,KACpC,CAAC,MAAA,EAAQ,YAAA,EAAc,uBAAA,EAAyB,MAAA,EAAQ,MAAM,CAAA;AAAA,EAChE,mBAAA,EAAqB,CAAC,MAAA,EAAgB,MAAA,KACpC,CAAC,MAAA,EAAQ,YAAA,EAAc,wBAAA,EAA0B,MAAA,EAAQ,MAAM,CAAA;AAAA,EACjE,mBAAmB,CAAC,MAAA,KAClB,CAAC,MAAA,EAAQ,YAAA,EAAc,uBAAuB,MAAM,CAAA;AAAA,EACtD,mBAAmB,CAAC,MAAA,KAClB,CAAC,MAAA,EAAQ,YAAA,EAAc,uBAAuB,MAAM,CAAA;AAAA,EACtD,oBAAA,EAAsB,MAAM,CAAC,MAAA,EAAQ,cAAc,qBAAqB,CAAA;AAAA,EACxE,KAAA,EAAO,MAAM,CAAC,MAAA,EAAQ,cAAc,OAAO;AAC7C;AAEO,IAAM,aAAA,GAAgB;AAAA,EAC3B,GAAA,EAAK,MAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,EAC1B,MAAA,EAAQ,MAAM,CAAC,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AAAA,EACvC,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,QAAQ,UAAU,CAAA;AAAA,EAC3C,MAAA,EAAQ,CAAC,SAAA,EAA+B,UAAA,KACtC,CAAC,QAAQ,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,UAAA,IAAc,EAAE,CAAA;AAAA,EACxD,UAAA,EAAY,MAAM,CAAC,MAAA,EAAQ,QAAQ,SAAS,CAAA;AAAA,EAC5C,SAAS,CAAC,SAAA,KAAkC,CAAC,MAAA,EAAQ,MAAA,EAAQ,WAAW,SAAS,CAAA;AAAA,EACjF,WAAA,EAAa,MAAM,CAAC,MAAA,EAAQ,QAAQ,UAAU,CAAA;AAAA,EAC9C,QAAA,EAAU,CACR,SAAA,EACA,QAAA,EACA,KAAA,EACA,MAAA,KACG,CAAC,MAAA,EAAQ,MAAA,EAAQ,UAAA,EAAY,SAAA,EAAW,QAAA,EAAU,OAAO,MAAM,CAAA;AAAA,EACpE,OAAA,EAAS,CAAC,SAAA,EAA+B,SAAA,KACvC,CAAC,MAAA,EAAQ,MAAA,EAAQ,SAAA,EAAW,SAAA,EAAW,SAAS,CAAA;AAAA;AAAA,EAElD,gBAAA,EAAkB,MAAM,CAAC,MAAA,EAAQ,QAAQ,eAAe,CAAA;AAAA,EACxD,aAAA,EAAe,CACb,SAAA,EACA,QAAA,EACA,KAAA,EACA,MAAA,KACG,CAAC,MAAA,EAAQ,MAAA,EAAQ,eAAA,EAAiB,SAAA,EAAW,QAAA,EAAU,OAAO,MAAM,CAAA;AAAA;AAAA,EAEzE,gBAAgB,CAAC,SAAA,KAAsB,CAAC,MAAA,EAAQ,MAAA,EAAQ,UAAU,SAAS,CAAA;AAAA,EAC3E,MAAA,EAAQ,CACN,SAAA,EACA,QAAA,EACA,QAAA,KACG,CAAC,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,QAAQ,CAAA;AAAA;AAAA,EAE7D,cAAc,MAAM,CAAC,MAAA,EAAQ,MAAA,EAAQ,UAAU,QAAQ,CAAA;AAAA;AAAA,EAEvD,SAAA,EAAW,MAAM,CAAC,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AAAA,EAC1C,QAAQ,CAAC,SAAA,EAA+B,UAAA,EAAsB,SAAA,KAC5D,CAAC,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,WAAW,IAAA,CAAK,GAAG,GAAG,SAAA,CAAU,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AAAA;AAAA,EAGjF,YAAA,EAAc,MAAM,CAAC,MAAA,EAAQ,oBAAoB,CAAA;AAAA;AAAA,EAEjD,QAAA,EAAU,MAAM,CAAC,MAAA,EAAQ,QAAQ,UAAU,CAAA;AAAA;AAAA,EAE3C,YAAA,EAAc,CAAC,SAAA,EAA+B,OAAA,KAC5C,CAAC,MAAA,EAAQ,MAAA,EAAQ,eAAA,EAAiB,SAAA,EAAW,OAAO,CAAA;AAAA,EACtD,cAAA,EAAgB,CAAC,SAAA,EAAmB,SAAA,EAAmB,YAAA,KACrD,CAAC,MAAA,EAAQ,MAAA,EAAQ,iBAAA,EAAmB,SAAA,EAAW,SAAA,EAAW,YAAY;AAC1E;AAMO,IAAM,mBAAmB,CAC9B,WAAA,EACA,SACA,IAAA,KAEA,OAAA,KAAY,SACP,CAAC,MAAA,EAAQ,eAAA,EAAiB,WAAW,IACrC,CAAC,MAAA,EAAQ,iBAAiB,WAAA,EAAa,OAAA,EAAS,QAAQ,KAAK;AAG7D,SAAS,eAAA,CAAgB,UAA8B,MAAA,EAAqC;AACjG,EAAA,OAAO,MAAA,CAAO,MAAM,CAAC,IAAA,EAAM,MAAM,QAAA,CAAS,CAAC,MAAM,IAAI,CAAA;AACvD","file":"chunk-Q2GNEVG2.cjs","sourcesContent":["/**\n * What a host hands the `@arbidocs/react` hooks, as one configuration (`<ArbiHost config>`). Every\n * field is optional: without one the hooks use their own default. `@arbidocs/blocks` extends it\n * with the blocks domains (environment, billing, viewer, …).\n *\n * A field whose value lives in the host's state is a hook (`use…`), called by the hooks and kits\n * that need it, so the configuration itself stays one stable object for the host's life.\n */\n\nimport { useContext } from 'react'\nimport type { Arbi } from '@arbidocs/sdk/browser'\nimport type { AccountClient } from '../account/client'\nimport type { CalendarSupport } from '../calendar/support'\nimport type { MeetingChatRef } from '../calls/meeting-chat'\nimport type { ActiveCall } from '../calls/session'\nimport type { ArbiChatHost } from '../chat/host'\nimport type { DocumentsSupport } from '../documents/support'\nimport type { MailClient } from '../mail/client'\nimport type { ArbiSessionStore } from '../session/store'\nimport type { DictateContextValue } from '../ui/DictateContext'\nimport type { EntityVocabulary } from '../entities/vocabulary'\nimport type { ArbiHostConnection } from './ArbiHost'\nimport type { ArbiFeatures } from './features'\nimport { ArbiHostContext } from './context'\nimport type { DashboardsHost } from '../datasets/registry'\n\n/** The mail client, and whether mail is on for the signed-in user. */\nexport interface MailHost {\n client: MailClient\n /**\n * Whether mail reads run (signed in and entitled), and the server session the mailbox is\n * unlocked for: unlocking runs again when it changes (`null`: none yet, nothing is unlocked).\n * Absent: on, for one session.\n */\n useStatus?: () => { enabled: boolean; sessionKey: string | null }\n /**\n * The mail waiting in this device's Outbox (written offline), by status, while `enabled` (Mail\n * switched on); the offline status counts it as waiting work. Absent: no Outbox.\n */\n useOutbox?: (enabled: boolean) => ReadonlyArray<{ status: string }>\n /** The Outbox's folder, opened through `openMail({ folder })`. */\n outboxFolder?: string\n}\n\n/** The account client of the settings kits, and whether account reads run (signed in). */\nexport interface AccountHost {\n client: AccountClient\n /** Absent: always. */\n useEnabled?: () => boolean\n}\n\n/** Where the call panel goes in the host's layout. */\nexport type CallSlotMode = 'docked' | 'main'\n\n/** What the calls need from the host: navigation and layout are the host's. */\nexport interface CallsHost {\n /**\n * Show a call's meeting chat: an end-to-end chat, or a workspace meeting thread. Absent: the\n * in-call \"Open meeting chat\" does nothing.\n */\n openMeetingChat?: (ref: MeetingChatRef) => void\n /**\n * Once connected, show the call's conversation (its chat and live transcript) beside the call.\n * Absent: nothing is shown.\n */\n showConversation?: (call: ActiveCall) => void | Promise<void>\n /**\n * The element whose box the shown call fills: the right-hand dock, or (a webinar's audience) the\n * main area. The host claims its slot while `shown` and calls `onLost` when another panel takes\n * it (the call then minimises). Absent: the call floats at the right edge.\n */\n useSlot?: (mode: CallSlotMode, shown: boolean, onLost: () => void) => HTMLElement | null\n}\n\nexport interface ArbiHostConfig {\n /**\n * The SDK on the signed-in session. A host with its own login passes one on its session\n * (`new Arbi({ url, session })`); a blocks-only site gets one from `defaultHost`. A new instance (a\n * new session, a newly opened workspace) re-renders every hook.\n */\n arbi?: Arbi\n /** The session state the kits share. Absent: an in-memory one per top-level host. */\n session?: ArbiSessionStore\n /** Live processing, uploads and the host's document actions. Absent: the package's own. */\n documents?: DocumentsSupport\n /** The calendar kept on this device and account OAuth. Absent: online only, the user's connectors. */\n calendar?: CalendarSupport\n /** Absent: mail on the `arbi` session. */\n mail?: MailHost\n /** Absent: the account on the `arbi` session. */\n account?: AccountHost\n /** Absent: calls open no meeting chat from the room. */\n calls?: CallsHost\n /**\n * The parts of the product the user switches on or off, and where each switch is kept (the user's\n * settings, or this device), read with `useFeature(name)`. The call UI also follows the `calls`\n * feature, on top of the server's calls config. Absent, or a feature not listed: on.\n */\n features?: ArbiFeatures\n /** Dictation for every `dictate` field. Absent: no mic button. */\n dictate?: DictateContextValue\n /** The sign-in layer of a blocks-only site (`defaultHost` in `@arbidocs/blocks/connect`). */\n connection?: ArbiHostConnection\n /** Where the chat engine's side effects go (documents shown, mail drafts, used-up quota). */\n chat?: ArbiChatHost\n /**\n * The site's words for the entities (`{ PROJECT: 'Matter' }`), read by every kit through\n * `getEntityLabel`. Absent: the registry's (\"Project\", \"Workspace\", \"Thread\", …).\n */\n vocabulary?: EntityVocabulary\n /**\n * What the site calls its assistant where people address it: the `@<name>` offered in a chat's\n * mention menu, the draft a shared thread starts with, and the name a message is routed to the\n * assistant on. Absent: \"ARBI\".\n */\n assistantName?: string\n /**\n * Charts and dashboards: more data sources (an external feed, a source relabelled in the site's\n * words) and where saved dashboards are kept. Absent: the built-in sources, saved in a database.\n */\n dashboards?: DashboardsHost\n}\n\n/** The host configuration in scope (`{}` outside an `<ArbiHost>`). */\nexport function useArbiHost(): ArbiHostConfig {\n return useContext(ArbiHostContext) as ArbiHostConfig\n}\n","/**\n * The `Arbi` of the host configuration (`<ArbiHost config={{ arbi }}>`).\n */\n\nimport type { Arbi } from '@arbidocs/sdk/browser'\nimport { useArbiHost } from './host/config'\n\nexport function useArbi(): Arbi {\n const { arbi } = useArbiHost()\n if (!arbi) {\n throw new Error('useArbi() needs an <ArbiHost> whose config has an `arbi`')\n }\n return arbi\n}\n\n/**\n * The deployment domain the user's keys are derived for, as the host's `Arbi` computes it\n * (`deploymentDomain`, else the API URL's hostname). `undefined` without one. The document tools\n * default their `deploymentDomain` (needed for e-signing) to it.\n */\nexport function useDeploymentDomain(): string | undefined {\n return useArbiHost().arbi?.getDeploymentDomain()\n}\n","/**\n * The one query-key factory of the ARBI front end: every React Query key and mutation key the\n * packages and the app use is built here, under `['arbi', …]`. Literal key arrays anywhere else\n * fail the `arbi/query-keys-from-factory` lint rule and `query-keys.guard.test.ts`, so a key can't\n * drift from the queries it names (a stale literal reads or invalidates nothing, silently).\n *\n * Dependency-free on purpose (types only): e2e helpers import it and pass keys into the page.\n */\n\nimport type {\n CalendarWindow,\n ListEventsParams,\n OverlayLayerName,\n RoomQuery,\n} from '@arbidocs/sdk/browser'\n\nexport const arbiQueryKeys = {\n fileShares: () => ['arbi', 'fileShares'] as const,\n fileShare: (id: string) => ['arbi', 'fileShare', id] as const,\n fileSharePdf: (id: string, status?: string) => ['arbi', 'fileSharePdf', id, status] as const,\n workspaces: () => ['arbi', 'workspaces'] as const,\n /** Every workspace's member list: what a workspace switch drops. */\n allWorkspaceUsers: () => ['arbi', 'workspaceUsers'] as const,\n workspaceUsers: (workspaceId: string) => ['arbi', 'workspaceUsers', workspaceId] as const,\n /** Every workspace's documents list: the prefix a write patches when it does not know the workspace. */\n allDocuments: () => ['arbi', 'documents'] as const,\n documents: (workspaceId: string) => ['arbi', 'documents', workspaceId] as const,\n /** One document (a viewer's); writes keep it current next to the list. */\n document: (docId: string) => ['arbi', 'document', docId] as const,\n documentsById: (docIds: string[]) =>\n ['arbi', 'documentsById', [...docIds].sort().join(',')] as const,\n /** Every workspace's near-duplicate pairs. */\n allSimilarDocuments: () => ['arbi', 'similarDocuments'] as const,\n similarDocuments: (workspaceId: string, threshold: number) =>\n ['arbi', 'similarDocuments', workspaceId, threshold] as const,\n /** Every version list: the prefix a new version invalidates. */\n allDocumentVersions: () => ['arbi', 'documentVersions'] as const,\n documentVersions: (docId: string) => ['arbi', 'documentVersions', docId] as const,\n conversations: (workspaceId: string) => ['arbi', 'conversations', workspaceId] as const,\n /** Every workspace's conversation list (and threads): the prefix a conversation write invalidates. */\n allConversations: () => ['arbi', 'conversations'] as const,\n /** A conversation's threads, under the conversations prefix (ids are unique across workspaces). */\n conversationThreads: (conversationId: string) =>\n ['arbi', 'conversations', conversationId, 'threads'] as const,\n /** One stored message with everything the server keeps on it (its trace and metadata). */\n messageDetails: (messageId: string) => ['arbi', 'messageDetails', messageId] as const,\n /** The backend's built-in slash commands. */\n assistantCommands: () => ['arbi', 'assistantCommands'] as const,\n /** Every workspace's tags (lists, tables and kinds): what a cross-workspace change refreshes. */\n allTags: () => ['arbi', 'tags'] as const,\n tags: (workspaceId: string) => ['arbi', 'tags', workspaceId] as const,\n /** Under the workspace's tags: the kinds' fields (refreshed with the tags). */\n tagKinds: (workspaceId: string) => ['arbi', 'tags', workspaceId, 'kinds'] as const,\n /** Every filtered list (a table of tags): what a tag write refreshes, the whole list aside. */\n tagLists: (workspaceId: string) => ['arbi', 'tags', workspaceId, 'list'] as const,\n /** Under the workspace's tags: a tag, doctag or fact write that invalidates `tags` refreshes it. */\n tagList: (workspaceId: string, query: string) =>\n ['arbi', 'tags', workspaceId, 'list', query] as const,\n /** A kind's fields, under the workspace's tags. */\n tagKind: (workspaceId: string, kind: string) =>\n ['arbi', 'tags', workspaceId, 'kind', kind] as const,\n /** A task's history, under the conversations prefix: every conversation write refreshes it. */\n conversationActivity: (conversationId: string) =>\n ['arbi', 'conversations', conversationId, 'activity'] as const,\n thumbnails: (docIds: string[]) => ['arbi', 'thumbnails', [...docIds].sort().join(',')] as const,\n /** Every stage of a document's parsed content. */\n parsedDocument: (docId: string) => ['arbi', 'parsedDoc', docId] as const,\n parsedDoc: (docId: string, stage: string) => ['arbi', 'parsedDoc', docId, stage] as const,\n agents: () => ['arbi', 'agents'] as const,\n sessions: () => ['arbi', 'sessions'] as const,\n health: () => ['arbi', 'health'] as const,\n workflows: () => ['arbi', 'workflows'] as const,\n /** Under `workflows()`: a workflow write or run refreshes its runs too. */\n workflowRuns: (workflowId: string) => ['arbi', 'workflows', workflowId, 'runs'] as const,\n /** Every workspace's facts: the prefix a fact write invalidates. */\n allFacts: () => ['arbi', 'facts'] as const,\n facts: (workspaceId: string) => ['arbi', 'facts', workspaceId] as const,\n configs: () => ['arbi', 'configs'] as const,\n activity: () => ['arbi', 'activity'] as const,\n /** Every transfer query (jobs, lists, plans): what a finished job refreshes. */\n allWorkspaceTransfers: () => ['arbi', 'workspaceTransfers'] as const,\n /** The caller's recent transfer jobs out of a workspace. */\n workspaceTransfers: (workspaceId: string) =>\n ['arbi', 'workspaceTransfers', 'list', workspaceId] as const,\n /** One transfer job's progress. */\n workspaceTransfer: (transferId: string) =>\n ['arbi', 'workspaceTransfers', 'job', transferId] as const,\n /** What a scope (serialised) would take in a workspace, for a mode. */\n workspaceTransferPlan: (workspaceId: string, scope: string, mode: string) =>\n ['arbi', 'workspaceTransfers', 'plan', workspaceId, scope, mode] as const,\n /** A workspace's activity feed (all its pages). */\n workspaceActivity: (workspaceId: string) => ['arbi', 'workspaceActivity', workspaceId] as const,\n projects: () => ['arbi', 'projects'] as const,\n projectUsage: (projectExtId: string, monthsBack: number) =>\n ['arbi', 'projectUsage', projectExtId, monthsBack] as const,\n projectConversationUsage: (projectExtId: string, monthsBack: number) =>\n ['arbi', 'projectUsage', projectExtId, 'byConversation', monthsBack] as const,\n projectInvoices: (projectExtId: string) => ['arbi', 'projectInvoices', projectExtId] as const,\n /** The plans and add-ons on sale. */\n products: () => ['arbi', 'products'] as const,\n /** Prices of a purchase or a change (quotes, previews); nothing is bought. */\n billingQuotes: () => ['arbi', 'billingQuote'] as const,\n userUsageToday: () => ['arbi', 'userUsageToday'] as const,\n currentUser: () => ['arbi', 'currentUser'] as const,\n firmPool: () => ['arbi', 'firmPool'] as const,\n contacts: () => ['arbi', 'contacts'] as const,\n /** Every chat query (the list and each open thread). */\n chats: () => ['arbi', 'chats'] as const,\n /** My chats, raw (titles and last messages are ciphertext), most recently active first. */\n chatList: () => ['arbi', 'chats', 'list'] as const,\n /** One thread's loaded messages, decrypted, oldest first (`ChatThreadData`). */\n chatThread: (chatExtId: string) => ['arbi', 'chats', 'thread', chatExtId] as const,\n /** My own agent's progress on my last message to it (`agent_dm_status`), per agent. */\n agentDmStatus: (agentExtId: string) => ['arbi', 'chats', 'agentStatus', agentExtId] as const,\n /** The paid features this person may use (`/v1/user/entitlements`). */\n entitlements: () => ['arbi', 'entitlements'] as const,\n skills: () => ['arbi', 'skills'] as const,\n /** A skill's main file (SKILL.md), as text. */\n skillSource: (docExtId: string) => ['arbi', 'skills', 'source', docExtId] as const,\n /** An agent's pinned config; `undefined` = the library default config. */\n agentConfig: (agentExtId?: string) => ['arbi', 'agentConfig', agentExtId ?? 'default'] as const,\n agentWorkspaces: (agentExtId: string) => ['arbi', 'agentWorkspaces', agentExtId] as const,\n /** An agent's own login, polled while its controls are open. */\n agentSession: (agentExtId: string) => ['arbi', 'agentSession', agentExtId] as const,\n agentChats: (agentExtId: string) => ['arbi', 'agentChats', agentExtId] as const,\n authorizeLimits: () => ['arbi', 'authorizeLimits'] as const,\n mcpTools: () => ['arbi', 'mcpTools'] as const,\n models: () => ['arbi', 'models'] as const,\n availableModels: () => ['arbi', 'availableModels'] as const,\n modelConnections: (userId?: string) => ['arbi', 'modelConnections', userId] as const,\n directModelUsage: (userId?: string) => ['arbi', 'directModelUsage', userId] as const,\n /** The signed-in user's own profile (name, picture, email). */\n profile: () => ['arbi', 'profile'] as const,\n identity: () => ['arbi', 'identity'] as const,\n /** The signed-in user's settings record (notification preferences, flags). */\n userSettings: () => ['arbi', 'userSettings'] as const,\n /** Every notification list: the prefix a delete, a read receipt or an arrival invalidates. */\n allSupportTickets: () => ['arbi', 'support'] as const,\n supportTickets: () => ['arbi', 'support', 'tickets'] as const,\n supportTicket: (id: number) => ['arbi', 'support', 'tickets', id] as const,\n allNotifications: () => ['arbi', 'notifications'] as const,\n /** The newest `limit` notifications, received and sent. */\n notifications: (limit: number) => ['arbi', 'notifications', limit] as const,\n /** The documents a workspace may use as its Word house template. */\n houseTemplateCandidates: (workspaceId: string) =>\n ['arbi', 'houseTemplateCandidates', workspaceId] as const,\n // ── Storage, archive ────────────────────────────────────────────────────────────────────────\n /** Every storage view (projects, items, names, Recently deleted): what a restore or delete refreshes. */\n storage: () => ['arbi', 'storage'] as const,\n /** What each project stores; no params: every such list. */\n storageProjects: (params?: object) =>\n params === undefined\n ? (['arbi', 'storage', 'projects'] as const)\n : (['arbi', 'storage', 'projects', params] as const),\n /** The largest items stored; no params: every such list. */\n storageItems: (params?: object) =>\n params === undefined\n ? (['arbi', 'storage', 'items'] as const)\n : (['arbi', 'storage', 'items', params] as const),\n /** Decrypted document names of storage items. */\n storageItemNames: (params?: object) =>\n params === undefined\n ? (['arbi', 'storage', 'names'] as const)\n : (['arbi', 'storage', 'names', params] as const),\n /** The deployment's storage day by day. */\n storageSnapshots: (params?: object) =>\n params === undefined\n ? (['arbi', 'storage', 'snapshots'] as const)\n : (['arbi', 'storage', 'snapshots', params] as const),\n /** A workspace's Recently deleted documents; no id: every workspace's. */\n workspaceTrash: (workspaceId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'storage', 'workspaceTrash'] as const)\n : (['arbi', 'storage', 'workspaceTrash', workspaceId] as const),\n /** A workspace's archive state; no id: every workspace's. */\n workspaceArchive: (workspaceId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'workspaceArchive'] as const)\n : (['arbi', 'workspaceArchive', workspaceId] as const),\n // ── Databases ───────────────────────────────────────────────────────────────────────────────\n // Every key below names its workspace right after its kind: a list read in one workspace is never\n // served, or overwritten, in another (the list is the session's open workspace on the server).\n /** Every database query of every workspace (what a write or a switch refreshes). */\n databases: () => ['arbi', 'databases'] as const,\n /** A workspace's databases; no id: every workspace's. */\n databaseList: (workspaceId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'databases', 'list'] as const)\n : (['arbi', 'databases', 'list', workspaceId] as const),\n /** One database of a workspace; no workspace: every one read. */\n database: (workspaceId?: string, databaseId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'databases', 'one'] as const)\n : (['arbi', 'databases', 'one', workspaceId, databaseId ?? ''] as const),\n /**\n * A database's rows (a search); no workspace: every database's, no params: every search of one.\n * `['arbi', 'databases', 'rows', workspaceId, databaseId, params]`.\n */\n databaseRows: (workspaceId?: string, databaseId?: string, params?: object) =>\n workspaceId === undefined\n ? (['arbi', 'databases', 'rows'] as const)\n : params === undefined\n ? (['arbi', 'databases', 'rows', workspaceId, databaseId ?? ''] as const)\n : (['arbi', 'databases', 'rows', workspaceId, databaseId ?? '', params] as const),\n /** The saved dashboards of a store's scope (a workspace). */\n dashboards: (scope: string) => ['arbi', 'dashboards', scope] as const,\n /** A database's rows grouped and measured (a chart); no workspace: every database's. */\n databaseAggregate: (workspaceId?: string, databaseId?: string, request?: object) =>\n workspaceId === undefined\n ? (['arbi', 'databases', 'aggregate'] as const)\n : (['arbi', 'databases', 'aggregate', workspaceId, databaseId ?? '', request ?? {}] as const),\n // ── Configs, health ─────────────────────────────────────────────────────────────────────────\n /** Under `configs()`: the saved configuration versions. */\n configVersions: () => ['arbi', 'configs', 'versions'] as const,\n /** Under `configs()`: the JSON schema of every config model. */\n configSchema: () => ['arbi', 'configs', 'schema'] as const,\n /** Under `configs()`: one configuration. */\n config: (configId: string) => ['arbi', 'configs', 'one', configId] as const,\n /** The remote model providers' health. */\n remoteModels: () => ['arbi', 'remoteModels'] as const,\n // ── Conversations ───────────────────────────────────────────────────────────────────────────\n /** Under the conversations prefix: what a parked run waits for the owner to allow. */\n conversationPendingAuth: (conversationId: string) =>\n ['arbi', 'conversations', conversationId, 'pending-auth'] as const,\n // ── Document tools ──────────────────────────────────────────────────────────────────────────\n /** Signatures on a document (a version); no id: every document's. */\n documentSignatures: (docId?: string, version?: number | null) =>\n docId === undefined\n ? (['arbi', 'documentSignatures'] as const)\n : (['arbi', 'documentSignatures', docId, version ?? null] as const),\n /** The certificate of a signature reference. */\n signatureVerification: (reference: string) =>\n ['arbi', 'signatureVerification', reference] as const,\n /** Every signature request list: what a request write refreshes. */\n signatureRequests: () => ['arbi', 'signatureRequests'] as const,\n signatureRequestsForDocument: (docId: string) =>\n ['arbi', 'signatureRequests', 'document', docId] as const,\n /** Who may sign in a workspace; no id: every workspace's. */\n signatureCandidates: (workspaceId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'signatureRequests', 'candidates'] as const)\n : (['arbi', 'signatureRequests', 'candidates', workspaceId] as const),\n /** The user's saved (informal) signature. */\n savedSignature: () => ['arbi', 'savedSignature'] as const,\n /** An html/react artifact's source. */\n artifactSource: (docId: string) => ['arbi', 'artifactSource', docId] as const,\n /** An artifact's text, under its parsed content (refreshed with it). */\n artifactText: (docId: string) => ['arbi', 'parsedDoc', docId, 'marker', 'artifact-text'] as const,\n /** An image document's bytes as an object URL. */\n assetImage: (docId: string) => ['arbi', 'assetImage', docId] as const,\n // ── Misc ────────────────────────────────────────────────────────────────────────────────────\n /** An agent config's model tier (the builder's badge). */\n agentConfigModel: (configId: string) => ['arbi', 'agentConfigModel', configId] as const,\n /** Under `billingQuotes()`: the price of a plan change. */\n billingPreview: (projectExtId: string, change: unknown) =>\n ['arbi', 'billingQuote', 'preview', projectExtId, change] as const,\n billingPlanQuote: (projectExtId: string | null, body: unknown) =>\n ['arbi', 'billingQuote', 'plan', projectExtId, body] as const,\n billingAddonQuote: (projectExtId: string, kind: string) =>\n ['arbi', 'billingQuote', 'addon', projectExtId, kind] as const,\n /** Under `contacts()`: a search of the people one can reach. */\n contactSearch: (term: string) => ['arbi', 'contacts', 'search', term] as const,\n /** Under the workspace's facts: a filtered list. */\n factList: (workspaceId: string, filter: unknown) =>\n ['arbi', 'facts', workspaceId, filter] as const,\n /**\n * Under `skills()`: a workspace's list, hidden ones included or not. Without a marketplace the\n * server lists the open workspace's skills, so the list is kept per workspace.\n */\n skillList: (workspaceId: string, includeHidden: boolean) =>\n ['arbi', 'skills', 'list', workspaceId, includeHidden] as const,\n /** Under the project's events: one kind, one page size. */\n projectEventList: (projectExtId: string, kind: string, limit: number | 'default') =>\n ['arbi', 'projects', projectExtId, 'events', kind, limit] as const,\n /** The documents pinned for offline reading on this device. */\n offlineDocuments: () => ['arbi', 'offlineDocuments'] as const,\n /** Notifications of one kind for a deployment's user (polled). */\n typedNotifications: (kind: string, apiUrl: string, userId: string | undefined) =>\n ['arbi', 'typedNotifications', kind, apiUrl, userId ?? ''] as const,\n}\n\n/**\n * Keys of the mutations a host may need to follow (its own caches outside these hooks), e.g. with\n * a `MutationCache` subscription: a workflow run creates a task in the host's own task list.\n */\nexport const arbiMutationKeys = {\n /** A member's role changed. */\n setWorkspaceMemberRoles: () => ['arbi', 'workspaces', 'roles'] as const,\n runWorkflow: () => ['arbi', 'workflows', 'run'] as const,\n updateTagKindSchema: () => ['arbi', 'tags', 'kinds', 'update'] as const,\n createTag: () => ['arbi', 'tags', 'create'] as const,\n updateTag: () => ['arbi', 'tags', 'update'] as const,\n deleteTag: () => ['arbi', 'tags', 'delete'] as const,\n extractEntities: () => ['arbi', 'tags', 'entities', 'extract'] as const,\n updateDocuments: () => ['arbi', 'documents', 'update'] as const,\n deleteDocuments: () => ['arbi', 'documents', 'delete'] as const,\n uploadDocuments: () => ['arbi', 'documents', 'upload'] as const,\n uploadUrls: () => ['arbi', 'documents', 'uploadUrls'] as const,\n assignDocTags: () => ['arbi', 'doctags', 'assign'] as const,\n removeDocTags: () => ['arbi', 'doctags', 'remove'] as const,\n updateDocTag: () => ['arbi', 'doctags', 'update'] as const,\n generateDocTags: () => ['arbi', 'doctags', 'generate'] as const,\n /** Members added to or removed from a workspace (leaving included). */\n workspaceMembership: () => ['arbi', 'workspaces', 'members'] as const,\n /** A chat turn being sent (the app's send pipeline). */\n sendMessage: () => ['arbi', 'conversations', 'send'] as const,\n}\n\n/**\n * Query keys of the calendar hooks, all under `['arbi', 'calendar']`. The calendar is the user's,\n * not a workspace's; only the overlays carry the open workspace.\n */\nexport const calendarQueryKeys = {\n all: () => ['arbi', 'calendar'] as const,\n settings: () => ['arbi', 'calendar', 'settings'] as const,\n calendars: () => ['arbi', 'calendar', 'calendars'] as const,\n /** Every event list: the prefix an event write invalidates. */\n events: () => ['arbi', 'calendar', 'events'] as const,\n eventList: (p: ListEventsParams) =>\n [\n 'arbi',\n 'calendar',\n 'events',\n { start: p.start, end: p.end, calendars: p.calendars?.join(',') ?? null },\n ] as const,\n /** Every single event read. */\n eventDetails: () => ['arbi', 'calendar', 'event'] as const,\n event: (id: string, recurrenceId?: string | null) =>\n ['arbi', 'calendar', 'event', id, recurrenceId ?? null] as const,\n shares: (calId: string) => ['arbi', 'calendar', 'shares', calId] as const,\n invitations: () => ['arbi', 'calendar', 'invitations'] as const,\n holidayCountries: () => ['arbi', 'calendar', 'holiday-countries'] as const,\n allRooms: () => ['arbi', 'calendar', 'rooms'] as const,\n rooms: (q: RoomQuery) => ['arbi', 'calendar', 'rooms', q] as const,\n freebusy: (attendees: string[], start: string, end: string) =>\n ['arbi', 'calendar', 'freebusy', attendees.join(','), start, end] as const,\n allLookups: () => ['arbi', 'calendar', 'lookup'] as const,\n lookup: (uid: string) => ['arbi', 'calendar', 'lookup', uid] as const,\n overlays: (workspaceId: string | null, w?: CalendarWindow, layers?: OverlayLayerName[]) =>\n [\n 'arbi',\n 'calendar',\n 'overlays',\n workspaceId,\n w ? { start: w.start, end: w.end, layers: layers?.join(',') } : null,\n ] as const,\n accounts: () => ['arbi', 'calendar', 'accounts'] as const,\n caldavProfiles: () => ['arbi', 'calendar', 'caldav-profiles'] as const,\n bookingPages: () => ['arbi', 'calendar', 'booking-pages'] as const,\n /** The offline outbox (writes made offline, not yet sent). */\n outbox: () => ['arbi', 'calendar', 'outbox'] as const,\n}\n\n/** Query keys of the call hooks, all under `['arbi', 'calls']`. Calls are the user's, not a workspace's. */\nexport const callQueryKeys = {\n all: () => ['arbi', 'calls'] as const,\n config: () => ['arbi', 'calls', 'config'] as const,\n call: (callExtId: string) => ['arbi', 'calls', 'call', callExtId] as const,\n /** Everything about a call's recordings: the prefix a recording event invalidates. */\n recordingsOf: (callExtId: string) => ['arbi', 'calls', 'recordings', callExtId] as const,\n recordings: (callExtId: string) => ['arbi', 'calls', 'recordings', callExtId, 'list'] as const,\n recording: (callExtId: string, recordingExtId: string) =>\n ['arbi', 'calls', 'recordings', callExtId, 'one', recordingExtId] as const,\n inviteLinks: (callExtId: string) => ['arbi', 'calls', 'invite-links', callExtId] as const,\n}\n\nexport const connectorQueryKeys = {\n all: () => ['arbi', 'connectors'] as const,\n catalog: () => ['arbi', 'connectors', 'catalog'] as const,\n mine: () => ['arbi', 'connectors', 'mine'] as const,\n mailboxFolders: (vendor: string) => ['arbi', 'connectors', 'folders', vendor] as const,\n mailboxSyncProgress: (vendor: string, workspaceExtId: string) =>\n ['arbi', 'connectors', 'sync-progress', vendor, workspaceExtId] as const,\n allMailboxSyncProgress: () => ['arbi', 'connectors', 'sync-progress'] as const,\n driveFolders: (vendor: string) => ['arbi', 'connectors', 'drive-folders', vendor] as const,\n driveFolderChildren: (vendor: string, itemId: string) =>\n ['arbi', 'connectors', 'drive-folder-children', vendor, itemId] as const,\n driveFolderDocCount: (vendor: string, itemId: string) =>\n ['arbi', 'connectors', 'drive-folder-doc-count', vendor, itemId] as const,\n driveSyncEstimate: (vendor: string) =>\n ['arbi', 'connectors', 'drive-sync-estimate', vendor] as const,\n driveSyncProgress: (vendor: string) =>\n ['arbi', 'connectors', 'drive-sync-progress', vendor] as const,\n allDriveSyncProgress: () => ['arbi', 'connectors', 'drive-sync-progress'] as const,\n slack: () => ['arbi', 'connectors', 'slack'] as const,\n}\n\nexport const mailQueryKeys = {\n all: () => ['arbi', 'mail'] as const,\n policy: () => ['arbi', 'mail', 'policy'] as const,\n accounts: () => ['arbi', 'mail', 'accounts'] as const,\n unlock: (accountId: string | undefined, sessionKey: string | null) =>\n ['arbi', 'mail', 'unlock', accountId, sessionKey ?? ''] as const,\n allFolders: () => ['arbi', 'mail', 'folders'] as const,\n folders: (accountId: string | undefined) => ['arbi', 'mail', 'folders', accountId] as const,\n allMessages: () => ['arbi', 'mail', 'messages'] as const,\n messages: (\n accountId: string | undefined,\n folderId: string | undefined,\n query: string,\n cursor: string | null\n ) => ['arbi', 'mail', 'messages', accountId, folderId, query, cursor] as const,\n message: (accountId: string | undefined, messageId: string | null | undefined) =>\n ['arbi', 'mail', 'message', accountId, messageId] as const,\n /** Every conversation list: the prefix a flag or move patches or refreshes. */\n allConversations: () => ['arbi', 'mail', 'conversations'] as const,\n conversations: (\n accountId: string | undefined,\n folderId: string | undefined,\n query: string,\n cursor: string | null\n ) => ['arbi', 'mail', 'conversations', accountId, folderId, query, cursor] as const,\n /** Every thread read of an account. */\n accountThreads: (accountId: string) => ['arbi', 'mail', 'thread', accountId] as const,\n thread: (\n accountId: string | undefined,\n threadId: string | null | undefined,\n folderId: string | undefined\n ) => ['arbi', 'mail', 'thread', accountId, threadId, folderId] as const,\n /** Where the ARBI mailbox files mail (folders and conversations, per workspace). */\n nativeFiling: () => ['arbi', 'mail', 'filing', 'native'] as const,\n /** Every filing lookup: refreshed after mail is added to a workspace or a rule is stopped. */\n allFiling: () => ['arbi', 'mail', 'filing'] as const,\n filing: (accountId: string | undefined, messageIds: string[], threadIds: string[]) =>\n ['arbi', 'mail', 'filing', accountId, messageIds.join(' '), threadIds.join(' ')] as const,\n /** The key the user's client keys older native mail with: outside the `['arbi', 'mail']` prefix, so\n * refreshing mail never fetches it again. */\n threadSecret: () => ['arbi', 'mail-thread-secret'] as const,\n /** The projects an email's AI work can be billed to. */\n projects: () => ['arbi', 'mail', 'projects'] as const,\n /** A saved draft prepared for editing. */\n draftCompose: (accountId: string | undefined, draftId: string | undefined) =>\n ['arbi', 'mail', 'draft-compose', accountId, draftId] as const,\n attachmentText: (accountId: string, messageId: string, attachmentId: string) =>\n ['arbi', 'mail', 'attachment-text', accountId, messageId, attachmentId] as const,\n}\n\n/** `pdf`: the document as a PDF; `original`: the stored file (an image, a recording, a sheet). */\nexport type DocumentBytesKind = 'pdf' | 'original'\n\n/** Every version and kind of a document's bytes: the prefix a new version invalidates. */\nexport const documentBytesKey = (\n documentRef: string,\n version?: number | null,\n kind?: DocumentBytesKind\n) =>\n version === undefined\n ? (['arbi', 'documentBytes', documentRef] as const)\n : (['arbi', 'documentBytes', documentRef, version, kind ?? 'pdf'] as const)\n\n/** Whether `queryKey` lies under `prefix` (a factory key): React Query's own prefix match. */\nexport function isUnderQueryKey(queryKey: readonly unknown[], prefix: readonly unknown[]): boolean {\n return prefix.every((part, i) => queryKey[i] === part)\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunk4BDHKG7O_cjs = require('./chunk-4BDHKG7O.cjs');
3
+ var chunkXOS7ISIR_cjs = require('./chunk-XOS7ISIR.cjs');
4
+ var chunkQ2GNEVG2_cjs = require('./chunk-Q2GNEVG2.cjs');
4
5
  var chunkRLSBRZ6Z_cjs = require('./chunk-RLSBRZ6Z.cjs');
5
- var chunkHAGC67GL_cjs = require('./chunk-HAGC67GL.cjs');
6
6
  var chunkEEIYXVM4_cjs = require('./chunk-EEIYXVM4.cjs');
7
7
  var reactQuery = require('@tanstack/react-query');
8
8
  var react = require('react');
@@ -10,9 +10,9 @@ var browser = require('@arbidocs/sdk/browser');
10
10
  var client = require('@arbidocs/client');
11
11
 
12
12
  function useUserSettings(options) {
13
- const arbi = chunkHAGC67GL_cjs.useArbi();
13
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
14
14
  return reactQuery.useQuery({
15
- queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.userSettings(),
15
+ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings(),
16
16
  queryFn: () => arbi.settings.get(),
17
17
  // Edited about once a month, and every write here patches the cache: no refetch on each mount.
18
18
  staleTime: 30 * 60 * 1e3,
@@ -20,23 +20,23 @@ function useUserSettings(options) {
20
20
  });
21
21
  }
22
22
  function useUpdateUserSettings() {
23
- const arbi = chunkHAGC67GL_cjs.useArbi();
23
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
24
24
  const qc = reactQuery.useQueryClient();
25
25
  return reactQuery.useMutation({
26
26
  mutationFn: (patch) => arbi.settings.update(patch),
27
27
  onMutate: async (patch) => {
28
- await qc.cancelQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.userSettings() });
29
- const previous = qc.getQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.userSettings());
28
+ await qc.cancelQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings() });
29
+ const previous = qc.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings());
30
30
  qc.setQueryData(
31
- chunkHAGC67GL_cjs.arbiQueryKeys.userSettings(),
31
+ chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings(),
32
32
  (old) => old ? { ...old, ...patch } : old
33
33
  );
34
34
  return { previous };
35
35
  },
36
36
  onError: (_err, _patch, context) => {
37
- qc.setQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.userSettings(), context?.previous);
37
+ qc.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings(), context?.previous);
38
38
  },
39
- onSettled: () => qc.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.userSettings() })
39
+ onSettled: () => qc.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings() })
40
40
  });
41
41
  }
42
42
  var ALWAYS_ON = { on: true, set: () => {
@@ -59,7 +59,7 @@ function useLocalSwitch(source, feature) {
59
59
  return { on: saved ?? fallback, set };
60
60
  }
61
61
  function useFeatureSwitch(feature) {
62
- const source = chunkHAGC67GL_cjs.useArbiHost().features?.[feature];
62
+ const source = chunkQ2GNEVG2_cjs.useArbiHost().features?.[feature];
63
63
  const useSource = !source ? useUnlisted : "userSetting" in source ? useUserSettingSwitch : useLocalSwitch;
64
64
  return useSource(source, feature);
65
65
  }
@@ -70,7 +70,7 @@ function useNoSettings() {
70
70
  return { data: void 0 };
71
71
  }
72
72
  function useFeatureCheck() {
73
- const features = chunkHAGC67GL_cjs.useArbiHost().features;
73
+ const features = chunkQ2GNEVG2_cjs.useArbiHost().features;
74
74
  const useSettings = Object.values(features ?? {}).some(
75
75
  (source) => !!source && "userSetting" in source
76
76
  ) ? useUserSettings : useNoSettings;
@@ -182,7 +182,7 @@ var LISTS = {
182
182
  };
183
183
  function patchConversationList(queryClient, workspaceId, reducer) {
184
184
  if (!workspaceId) return;
185
- const key = chunkHAGC67GL_cjs.arbiQueryKeys.conversations(workspaceId);
185
+ const key = chunkQ2GNEVG2_cjs.arbiQueryKeys.conversations(workspaceId);
186
186
  const current = queryClient.getQueryData(key) ?? [];
187
187
  const next = reducer(current);
188
188
  if (next !== current) queryClient.setQueryData(key, next);
@@ -246,13 +246,13 @@ function byActivity(a, b) {
246
246
  return bt - at;
247
247
  }
248
248
  function cachedChats(queryClient) {
249
- return queryClient.getQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.chatList()) ?? [];
249
+ return queryClient.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList()) ?? [];
250
250
  }
251
251
  function cachedChat(queryClient, chatExtId) {
252
252
  return cachedChats(queryClient).find((c) => c.external_id === chatExtId);
253
253
  }
254
254
  function upsertChat(queryClient, chat) {
255
- queryClient.setQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.chatList(), (old) => {
255
+ queryClient.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList(), (old) => {
256
256
  if (!old) return old;
257
257
  const rest = old.filter((c) => c.external_id !== chat.external_id);
258
258
  return [chat, ...rest].sort(byActivity);
@@ -260,13 +260,13 @@ function upsertChat(queryClient, chat) {
260
260
  }
261
261
  function removeChat(queryClient, chatExtId) {
262
262
  queryClient.setQueryData(
263
- chunkHAGC67GL_cjs.arbiQueryKeys.chatList(),
263
+ chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList(),
264
264
  (old) => old?.filter((c) => c.external_id !== chatExtId)
265
265
  );
266
- queryClient.removeQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.chatThread(chatExtId) });
266
+ queryClient.removeQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId) });
267
267
  }
268
268
  function appendToThread(queryClient, chatExtId, message, replaceOptimisticId) {
269
- queryClient.setQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.chatThread(chatExtId), (old) => {
269
+ queryClient.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId), (old) => {
270
270
  if (!old) return old;
271
271
  const without = old.messages.filter(
272
272
  (m) => m.external_id !== message.external_id && m.external_id !== replaceOptimisticId
@@ -276,12 +276,12 @@ function appendToThread(queryClient, chatExtId, message, replaceOptimisticId) {
276
276
  }
277
277
  function dropFromThread(queryClient, chatExtId, messageExtId) {
278
278
  queryClient.setQueryData(
279
- chunkHAGC67GL_cjs.arbiQueryKeys.chatThread(chatExtId),
279
+ chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId),
280
280
  (old) => old ? { ...old, messages: old.messages.filter((m) => m.external_id !== messageExtId) } : old
281
281
  );
282
282
  }
283
283
  function replaceInThread(queryClient, chatExtId, message) {
284
- queryClient.setQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.chatThread(chatExtId), (old) => {
284
+ queryClient.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId), (old) => {
285
285
  if (!old || !old.messages.some((m) => m.external_id === message.external_id)) return old;
286
286
  return {
287
287
  ...old,
@@ -291,14 +291,14 @@ function replaceInThread(queryClient, chatExtId, message) {
291
291
  }
292
292
  function patchLastMessage(queryClient, chatExtId, message) {
293
293
  queryClient.setQueryData(
294
- chunkHAGC67GL_cjs.arbiQueryKeys.chatList(),
294
+ chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList(),
295
295
  (old) => old?.map(
296
296
  (c) => c.external_id === chatExtId && c.last_message?.external_id === message.external_id ? { ...c, last_message: message } : c
297
297
  )
298
298
  );
299
299
  }
300
300
  async function deleteChatMessage(arbi, queryClient, chatExtId, messageExtId) {
301
- const thread = queryClient.getQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.chatThread(chatExtId));
301
+ const thread = queryClient.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId));
302
302
  const before = thread?.messages.find((m) => m.external_id === messageExtId);
303
303
  const listed = cachedChat(queryClient, chatExtId);
304
304
  const wasLast = listed?.last_message?.external_id === messageExtId ? listed.last_message : null;
@@ -319,7 +319,7 @@ async function applyChangedMessage(arbi, queryClient, chatExtId, message) {
319
319
  return;
320
320
  }
321
321
  const chat = cachedChat(queryClient, chatExtId);
322
- if (!chat || !queryClient.getQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.chatThread(chatExtId))) return;
322
+ if (!chat || !queryClient.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId))) return;
323
323
  try {
324
324
  replaceInThread(queryClient, chatExtId, await arbi.chats.decrypt(chat, message));
325
325
  } catch (err) {
@@ -331,7 +331,7 @@ async function applyChatMessage(arbi, queryClient, chatExtId, message) {
331
331
  const me = myChatId(arbi);
332
332
  const chat = cachedChat(queryClient, chatExtId);
333
333
  if (!chat) {
334
- void queryClient.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.chatList() });
334
+ void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList() });
335
335
  return;
336
336
  }
337
337
  const mine = message.sender_ext_id === me;
@@ -345,7 +345,7 @@ async function applyChatMessage(arbi, queryClient, chatExtId, message) {
345
345
  (m) => m.user.external_id === me ? { ...m, last_read_at: message.created_at } : m
346
346
  ) : chat.members
347
347
  });
348
- if (queryClient.getQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.chatThread(chatExtId))) {
348
+ if (queryClient.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId))) {
349
349
  try {
350
350
  appendToThread(queryClient, chatExtId, await arbi.chats.decrypt(chat, message));
351
351
  } catch (err) {
@@ -356,7 +356,7 @@ async function applyChatMessage(arbi, queryClient, chatExtId, message) {
356
356
  function applyChatRead(arbi, queryClient, chatExtId, userExtId, lastReadAt) {
357
357
  const me = myChatId(arbi);
358
358
  queryClient.setQueryData(
359
- chunkHAGC67GL_cjs.arbiQueryKeys.chatList(),
359
+ chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList(),
360
360
  (old) => old?.map(
361
361
  (c) => c.external_id !== chatExtId ? c : {
362
362
  ...c,
@@ -382,11 +382,11 @@ async function applyChatUpdated(arbi, queryClient, chatExtId, message) {
382
382
  }
383
383
  upsertChat(queryClient, chat);
384
384
  if (!message)
385
- void queryClient.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.chatThread(chatExtId) });
385
+ void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId) });
386
386
  }
387
387
  function applyAgentDmStatus(queryClient, status) {
388
388
  if (!["queued", "working", "done", "failed"].includes(status.status)) return;
389
- queryClient.setQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.agentDmStatus(status.agent_ext_id), status);
389
+ queryClient.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.agentDmStatus(status.agent_ext_id), status);
390
390
  }
391
391
  async function applyChatEvent(arbi, queryClient, event) {
392
392
  const e = event;
@@ -401,13 +401,13 @@ async function applyChatEvent(arbi, queryClient, event) {
401
401
 
402
402
  // src/calls/keys.ts
403
403
  function serverCallsExperimental(queryClient) {
404
- return queryClient.getQueryData(chunkHAGC67GL_cjs.callQueryKeys.config())?.experimental !== false;
404
+ return queryClient.getQueryData(chunkQ2GNEVG2_cjs.callQueryKeys.config())?.experimental !== false;
405
405
  }
406
406
  function invalidateCall(queryClient, message) {
407
- void queryClient.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.callQueryKeys.call(message.call_ext_id) });
407
+ void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.call(message.call_ext_id) });
408
408
  const thread = message.log_conversation_ext_id;
409
409
  if (thread) {
410
- void queryClient.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.conversationActivity(thread) });
410
+ void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.conversationActivity(thread) });
411
411
  }
412
412
  }
413
413
 
@@ -658,19 +658,19 @@ function applyCallEvent(queryClient, event, options = {}) {
658
658
  }
659
659
  case "call.recording": {
660
660
  if (callExtId)
661
- void queryClient.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.callQueryKeys.recordingsOf(callExtId) });
661
+ void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordingsOf(callExtId) });
662
662
  const state2 = browser.calls.recordingStateFrom(m);
663
663
  relay("call.recording", callExtId && state2 ? { ...state2, call_ext_id: callExtId } : null);
664
664
  return true;
665
665
  }
666
666
  case "call.recording_updated": {
667
667
  if (callExtId)
668
- void queryClient.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.callQueryKeys.recordingsOf(callExtId) });
668
+ void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordingsOf(callExtId) });
669
669
  return true;
670
670
  }
671
671
  case "call.recording_deleted": {
672
672
  if (callExtId)
673
- void queryClient.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.callQueryKeys.recordingsOf(callExtId) });
673
+ void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordingsOf(callExtId) });
674
674
  const recordingExtId = str(m.recording_ext_id);
675
675
  relay(
676
676
  "call.recording_deleted",
@@ -963,11 +963,11 @@ function useProfile(options) {
963
963
  const { client, enabled } = useAccountClient();
964
964
  const qc = reactQuery.useQueryClient();
965
965
  react.useEffect(
966
- () => client.onProfileChange(() => qc.setQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.profile(), client.profile())),
966
+ () => client.onProfileChange(() => qc.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.profile(), client.profile())),
967
967
  [client, qc]
968
968
  );
969
969
  return reactQuery.useQuery({
970
- queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.profile(),
970
+ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.profile(),
971
971
  queryFn: () => client.profile(),
972
972
  enabled: (options?.enabled ?? true) && enabled,
973
973
  staleTime: Infinity
@@ -982,9 +982,9 @@ function useUpdateProfile() {
982
982
  return client.profile();
983
983
  },
984
984
  onSuccess: (profile) => {
985
- qc.setQueryData(chunkHAGC67GL_cjs.arbiQueryKeys.profile(), profile);
986
- void qc.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.identity() });
987
- return qc.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.workspaces() });
985
+ qc.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.profile(), profile);
986
+ void qc.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.identity() });
987
+ return qc.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.workspaces() });
988
988
  }
989
989
  });
990
990
  }
@@ -1086,7 +1086,7 @@ function arbiAccountClient(arbi, overrides = {}) {
1086
1086
  if (everywhere) await arbi.sessions.logoutAll();
1087
1087
  else await arbi.logout();
1088
1088
  } finally {
1089
- chunk4BDHKG7O_cjs.clearSealedDrafts();
1089
+ chunkXOS7ISIR_cjs.clearSealedDrafts();
1090
1090
  chunkRLSBRZ6Z_cjs.clearChatArtifacts();
1091
1091
  await wipeOfflineMail().catch(() => {
1092
1092
  });
@@ -1133,7 +1133,7 @@ var NO_ACCOUNT = {
1133
1133
  };
1134
1134
  var ALWAYS = () => true;
1135
1135
  function useAccountClient() {
1136
- const { account, arbi } = chunkHAGC67GL_cjs.useArbiHost();
1136
+ const { account, arbi } = chunkQ2GNEVG2_cjs.useArbiHost();
1137
1137
  const fallback = react.useMemo(() => arbi ? arbiAccountClient(arbi) : null, [arbi]);
1138
1138
  const useEnabled = account?.useEnabled ?? ALWAYS;
1139
1139
  const enabled = useEnabled();
@@ -1144,9 +1144,9 @@ function useAccountClient() {
1144
1144
  return { client: fallback, enabled: arbi.isLoggedIn };
1145
1145
  }
1146
1146
  function useEntitlements() {
1147
- const { arbi } = chunkHAGC67GL_cjs.useArbiHost();
1147
+ const { arbi } = chunkQ2GNEVG2_cjs.useArbiHost();
1148
1148
  return reactQuery.useQuery({
1149
- queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.entitlements(),
1149
+ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.entitlements(),
1150
1150
  queryFn: () => arbi.account.entitlements(),
1151
1151
  enabled: !!arbi?.isLoggedIn,
1152
1152
  // A plan change shows on the next read; the API enforces it at once either way.
@@ -1155,7 +1155,7 @@ function useEntitlements() {
1155
1155
  }
1156
1156
  function useInvalidateEntitlements() {
1157
1157
  const qc = reactQuery.useQueryClient();
1158
- return () => qc.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.entitlements() });
1158
+ return () => qc.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.entitlements() });
1159
1159
  }
1160
1160
  function useIsEntitled(feature) {
1161
1161
  const { data } = useEntitlements();
@@ -1279,7 +1279,7 @@ function ensureMeetingChat(arbi, queryClient, callExtId, callKey) {
1279
1279
  });
1280
1280
  if (!ref) throw new Error("The server did not return a meeting chat");
1281
1281
  if (ref.kind === "chat")
1282
- void queryClient.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.arbiQueryKeys.chatList() });
1282
+ void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList() });
1283
1283
  else void invalidateConversationLists(queryClient);
1284
1284
  return ref;
1285
1285
  })();
@@ -1439,7 +1439,7 @@ function hasRecordingTranscript(lines, refOf) {
1439
1439
  return lines.some((l) => isRecordingSegmentId(refOf(l)?.segmentId));
1440
1440
  }
1441
1441
  var CALL_CHAT_TOPIC = "arbi.chat";
1442
- var READ_ONLY_MEETING_TEXT = "Read-only: workspace guests can\u2019t post";
1442
+ var READ_ONLY_MEETING_TEXT = "Read only: you can\u2019t post in this meeting chat";
1443
1443
  var CALL_CHAT_MAX_CHARS = 4e3;
1444
1444
  var encoder = new TextEncoder();
1445
1445
  var decoder = new TextDecoder();
@@ -2285,9 +2285,9 @@ async function transcribeRecording(params) {
2285
2285
  return { stored, failed };
2286
2286
  }
2287
2287
  function useCallsConfig() {
2288
- const arbi = chunkHAGC67GL_cjs.useArbi();
2288
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2289
2289
  const { data } = reactQuery.useQuery({
2290
- queryKey: chunkHAGC67GL_cjs.callQueryKeys.config(),
2290
+ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.config(),
2291
2291
  queryFn: () => arbi.calls.config(),
2292
2292
  enabled: arbi.isLoggedIn,
2293
2293
  staleTime: 5 * 6e4,
@@ -2305,9 +2305,9 @@ function useCallTranscriptionAvailable() {
2305
2305
  return useCallsConfig()?.transcription_available === true;
2306
2306
  }
2307
2307
  function useCall(callExtId) {
2308
- const arbi = chunkHAGC67GL_cjs.useArbi();
2308
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2309
2309
  return reactQuery.useQuery({
2310
- queryKey: chunkHAGC67GL_cjs.callQueryKeys.call(callExtId ?? ""),
2310
+ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.call(callExtId ?? ""),
2311
2311
  queryFn: () => arbi.calls.get(callExtId),
2312
2312
  enabled: !!callExtId && arbi.isLoggedIn,
2313
2313
  staleTime: 6e4,
@@ -2315,18 +2315,18 @@ function useCall(callExtId) {
2315
2315
  });
2316
2316
  }
2317
2317
  function useCallRecordings(callExtId, enabled = true) {
2318
- const arbi = chunkHAGC67GL_cjs.useArbi();
2318
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2319
2319
  return reactQuery.useQuery({
2320
- queryKey: chunkHAGC67GL_cjs.callQueryKeys.recordings(callExtId ?? ""),
2320
+ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordings(callExtId ?? ""),
2321
2321
  queryFn: () => arbi.calls.recording.list(callExtId),
2322
2322
  enabled: !!callExtId && enabled && arbi.isLoggedIn,
2323
2323
  retry: false
2324
2324
  });
2325
2325
  }
2326
2326
  function useCallRecording(callExtId, recordingExtId) {
2327
- const arbi = chunkHAGC67GL_cjs.useArbi();
2327
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2328
2328
  return reactQuery.useQuery({
2329
- queryKey: chunkHAGC67GL_cjs.callQueryKeys.recording(callExtId ?? "", recordingExtId ?? ""),
2329
+ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recording(callExtId ?? "", recordingExtId ?? ""),
2330
2330
  queryFn: () => arbi.calls.recording.get(callExtId, recordingExtId),
2331
2331
  enabled: !!callExtId && !!recordingExtId && arbi.isLoggedIn,
2332
2332
  retry: false
@@ -2338,21 +2338,21 @@ function useRecordingWindows(callExtId, enabled) {
2338
2338
  return react.useMemo(() => data ? recordingWindowsOf(data) : NO_WINDOWS, [data]);
2339
2339
  }
2340
2340
  function useCallInviteLinks(callExtId) {
2341
- const arbi = chunkHAGC67GL_cjs.useArbi();
2341
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2342
2342
  return reactQuery.useQuery({
2343
- queryKey: chunkHAGC67GL_cjs.callQueryKeys.inviteLinks(callExtId ?? ""),
2343
+ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.inviteLinks(callExtId ?? ""),
2344
2344
  queryFn: () => arbi.calls.inviteLinks.list(callExtId),
2345
2345
  enabled: !!callExtId && arbi.isLoggedIn,
2346
2346
  retry: false
2347
2347
  });
2348
2348
  }
2349
2349
  function useRecordingActions(call) {
2350
- const arbi = chunkHAGC67GL_cjs.useArbi();
2350
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2351
2351
  const queryClient = reactQuery.useQueryClient();
2352
2352
  return react.useMemo(
2353
2353
  () => ({
2354
2354
  refresh: () => void queryClient.invalidateQueries({
2355
- queryKey: chunkHAGC67GL_cjs.callQueryKeys.recordingsOf(call.external_id)
2355
+ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordingsOf(call.external_id)
2356
2356
  }),
2357
2357
  open: (recording) => openRecording(arbi, queryClient, call, recording.external_id, recording),
2358
2358
  transcribe: async (opened, onProgress) => transcribeRecording({
@@ -2368,12 +2368,12 @@ function useRecordingActions(call) {
2368
2368
  );
2369
2369
  }
2370
2370
  function useRevokeCallInviteLink(callExtId) {
2371
- const arbi = chunkHAGC67GL_cjs.useArbi();
2371
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2372
2372
  const queryClient = reactQuery.useQueryClient();
2373
2373
  return react.useCallback(
2374
2374
  async (inviteExtId) => {
2375
2375
  await arbi.calls.inviteLinks.revoke(callExtId, inviteExtId);
2376
- void queryClient.invalidateQueries({ queryKey: chunkHAGC67GL_cjs.callQueryKeys.inviteLinks(callExtId) });
2376
+ void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.inviteLinks(callExtId) });
2377
2377
  },
2378
2378
  [arbi, queryClient, callExtId]
2379
2379
  );
@@ -2431,7 +2431,7 @@ async function saveRecordingFilesToThread(arbi, params) {
2431
2431
  });
2432
2432
  }
2433
2433
  function useSaveToThread() {
2434
- const arbi = chunkHAGC67GL_cjs.useArbi();
2434
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2435
2435
  const queryClient = reactQuery.useQueryClient();
2436
2436
  return react.useMemo(() => {
2437
2437
  const thenRefresh = async (run) => {
@@ -2718,9 +2718,9 @@ function isWorkspaceGuestOf(workspaces, workspaceExtId, me) {
2718
2718
  return workspace?.users?.find((wu) => wu.user.external_id === me)?.role === "guest";
2719
2719
  }
2720
2720
  function useMeetingReadOnly(lockedWorkspaceExtId) {
2721
- const arbi = chunkHAGC67GL_cjs.useArbi();
2721
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2722
2722
  const me = arbi.isLoggedIn ? arbi.user.identity()?.externalId ?? null : null;
2723
- const { data: workspaces } = chunk4BDHKG7O_cjs.useWorkspaces({
2723
+ const { data: workspaces } = chunkXOS7ISIR_cjs.useWorkspaces({
2724
2724
  enabled: !!lockedWorkspaceExtId && arbi.isLoggedIn
2725
2725
  });
2726
2726
  return isWorkspaceGuestOf(
@@ -2743,9 +2743,9 @@ function useCanHostCalls() {
2743
2743
  return callsEnabled && entitled;
2744
2744
  }
2745
2745
  function useOpenCallMeetingChat() {
2746
- const arbi = chunkHAGC67GL_cjs.useArbi();
2746
+ const arbi = chunkQ2GNEVG2_cjs.useArbi();
2747
2747
  const queryClient = reactQuery.useQueryClient();
2748
- const open = chunkHAGC67GL_cjs.useArbiHost().calls?.openMeetingChat;
2748
+ const open = chunkQ2GNEVG2_cjs.useArbiHost().calls?.openMeetingChat;
2749
2749
  return react.useCallback(
2750
2750
  async (target) => {
2751
2751
  try {
@@ -2982,5 +2982,5 @@ exports.useUserSettings = useUserSettings;
2982
2982
  exports.wipeOfflineMail = wipeOfflineMail;
2983
2983
  exports.wrapTrackKey = wrapTrackKey;
2984
2984
  exports.writeSamples = writeSamples;
2985
- //# sourceMappingURL=chunk-TDFAUVFM.cjs.map
2986
- //# sourceMappingURL=chunk-TDFAUVFM.cjs.map
2985
+ //# sourceMappingURL=chunk-TV4QQVZM.cjs.map
2986
+ //# sourceMappingURL=chunk-TV4QQVZM.cjs.map