@arbidocs/blocks 0.5.107 → 0.5.108

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 (341) hide show
  1. package/dist/{ConnectedCallDock-TDYRHPAK.js → ConnectedCallDock-DV4FU376.js} +8 -8
  2. package/dist/{ConnectedCallDock-TDYRHPAK.js.map → ConnectedCallDock-DV4FU376.js.map} +1 -1
  3. package/dist/{ConnectedCallDock-H3WWFGXF.cjs → ConnectedCallDock-EM2VVGZK.cjs} +10 -10
  4. package/dist/{ConnectedCallDock-H3WWFGXF.cjs.map → ConnectedCallDock-EM2VVGZK.cjs.map} +1 -1
  5. package/dist/{ConnectedCallRoom-55O5OUN7.cjs → ConnectedCallRoom-7WEPEWUJ.cjs} +9 -9
  6. package/dist/{ConnectedCallRoom-55O5OUN7.cjs.map → ConnectedCallRoom-7WEPEWUJ.cjs.map} +1 -1
  7. package/dist/{ConnectedCallRoom-Z6F6WCLH.js → ConnectedCallRoom-RYTZP34O.js} +8 -8
  8. package/dist/{ConnectedCallRoom-Z6F6WCLH.js.map → ConnectedCallRoom-RYTZP34O.js.map} +1 -1
  9. package/dist/{ConnectedNativeDocxComparison-NVZRVNOS.js → ConnectedNativeDocxComparison-2NDXXZLQ.js} +15 -15
  10. package/dist/{ConnectedNativeDocxComparison-NVZRVNOS.js.map → ConnectedNativeDocxComparison-2NDXXZLQ.js.map} +1 -1
  11. package/dist/{ConnectedNativeDocxComparison-DGBZJ4XA.cjs → ConnectedNativeDocxComparison-7HOY3AVI.cjs} +16 -16
  12. package/dist/{ConnectedNativeDocxComparison-DGBZJ4XA.cjs.map → ConnectedNativeDocxComparison-7HOY3AVI.cjs.map} +1 -1
  13. package/dist/{ConnectedNativeDocxEditor-R4WINUUB.cjs → ConnectedNativeDocxEditor-CUWDPHXN.cjs} +16 -16
  14. package/dist/{ConnectedNativeDocxEditor-R4WINUUB.cjs.map → ConnectedNativeDocxEditor-CUWDPHXN.cjs.map} +1 -1
  15. package/dist/{ConnectedNativeDocxEditor-RSVBN7DY.js → ConnectedNativeDocxEditor-SPZB6Y27.js} +14 -14
  16. package/dist/{ConnectedNativeDocxEditor-RSVBN7DY.js.map → ConnectedNativeDocxEditor-SPZB6Y27.js.map} +1 -1
  17. package/dist/{ConnectedProductionSetDialog-2DFBXE2X.js → ConnectedProductionSetDialog-N3EDG3SU.js} +4 -4
  18. package/dist/{ConnectedProductionSetDialog-2DFBXE2X.js.map → ConnectedProductionSetDialog-N3EDG3SU.js.map} +1 -1
  19. package/dist/{ConnectedProductionSetDialog-KYDPQ7SG.cjs → ConnectedProductionSetDialog-XAEFEN3N.cjs} +4 -4
  20. package/dist/{ConnectedProductionSetDialog-KYDPQ7SG.cjs.map → ConnectedProductionSetDialog-XAEFEN3N.cjs.map} +1 -1
  21. package/dist/{ConnectedStreamedWordArtifact-HLJ5IIOU.js → ConnectedStreamedWordArtifact-6LTGEAJO.js} +15 -15
  22. package/dist/ConnectedStreamedWordArtifact-6LTGEAJO.js.map +1 -0
  23. package/dist/{ConnectedStreamedWordArtifact-JQ34AOUU.cjs → ConnectedStreamedWordArtifact-HNCRKZTV.cjs} +16 -16
  24. package/dist/ConnectedStreamedWordArtifact-HNCRKZTV.cjs.map +1 -0
  25. package/dist/{DocumentReviewCard-7JSXRJZ2.js → DocumentReviewCard-RJD3CO32.js} +8 -8
  26. package/dist/{DocumentReviewCard-7JSXRJZ2.js.map → DocumentReviewCard-RJD3CO32.js.map} +1 -1
  27. package/dist/{DocumentReviewCard-C4HVT3WM.cjs → DocumentReviewCard-VON7LOOY.cjs} +8 -8
  28. package/dist/{DocumentReviewCard-C4HVT3WM.cjs.map → DocumentReviewCard-VON7LOOY.cjs.map} +1 -1
  29. package/dist/{FilesViewerDialog-IMQTZWKD.js → FilesViewerDialog-7SJGY72Q.js} +21 -21
  30. package/dist/{FilesViewerDialog-IMQTZWKD.js.map → FilesViewerDialog-7SJGY72Q.js.map} +1 -1
  31. package/dist/{FilesViewerDialog-UP7GFHYN.cjs → FilesViewerDialog-VIPTC6OT.cjs} +27 -27
  32. package/dist/{FilesViewerDialog-UP7GFHYN.cjs.map → FilesViewerDialog-VIPTC6OT.cjs.map} +1 -1
  33. package/dist/{RechartsRenderer-GIRCW7DB.cjs → RechartsRenderer-THES2SE5.cjs} +6 -5
  34. package/dist/RechartsRenderer-THES2SE5.cjs.map +1 -0
  35. package/dist/{RechartsRenderer-23OF4H6X.js → RechartsRenderer-XIZLV6GH.js} +6 -5
  36. package/dist/RechartsRenderer-XIZLV6GH.js.map +1 -0
  37. package/dist/{WorkspaceTableView-PJM47B5F.cjs → WorkspaceTableView-FNME7TL6.cjs} +9 -9
  38. package/dist/{WorkspaceTableView-PJM47B5F.cjs.map → WorkspaceTableView-FNME7TL6.cjs.map} +1 -1
  39. package/dist/{WorkspaceTableView-YDA7A4UJ.js → WorkspaceTableView-XQ6J2JKI.js} +7 -7
  40. package/dist/{WorkspaceTableView-YDA7A4UJ.js.map → WorkspaceTableView-XQ6J2JKI.js.map} +1 -1
  41. package/dist/agents/index.cjs +202 -202
  42. package/dist/agents/index.js +8 -8
  43. package/dist/{ai-ADS6YSS2.cjs → ai-3SAMEYBB.cjs} +20 -20
  44. package/dist/ai-3SAMEYBB.cjs.map +1 -0
  45. package/dist/{ai-KHWTGBT5.js → ai-OTQWSYVK.js} +12 -12
  46. package/dist/ai-OTQWSYVK.js.map +1 -0
  47. package/dist/calls/index.cjs +57 -57
  48. package/dist/calls/index.js +9 -9
  49. package/dist/chat/index.cjs +3 -3
  50. package/dist/chat/index.js +3 -3
  51. package/dist/{chunk-O27K7KTZ.cjs → chunk-2TBQBF4Y.cjs} +5 -5
  52. package/dist/{chunk-O27K7KTZ.cjs.map → chunk-2TBQBF4Y.cjs.map} +1 -1
  53. package/dist/{chunk-YJWAGXYM.js → chunk-4ZA2RSQH.js} +3 -3
  54. package/dist/{chunk-YJWAGXYM.js.map → chunk-4ZA2RSQH.js.map} +1 -1
  55. package/dist/{chunk-6A4GNM4T.cjs → chunk-5D2ZINOJ.cjs} +16 -16
  56. package/dist/{chunk-6A4GNM4T.cjs.map → chunk-5D2ZINOJ.cjs.map} +1 -1
  57. package/dist/{chunk-BFVCYBND.cjs → chunk-5HXQOM3I.cjs} +5 -5
  58. package/dist/{chunk-BFVCYBND.cjs.map → chunk-5HXQOM3I.cjs.map} +1 -1
  59. package/dist/{chunk-GSD5U553.cjs → chunk-5KKT65WU.cjs} +3 -3
  60. package/dist/{chunk-GSD5U553.cjs.map → chunk-5KKT65WU.cjs.map} +1 -1
  61. package/dist/{chunk-AVGHTUPE.js → chunk-5PWLXLHY.js} +5 -5
  62. package/dist/chunk-5PWLXLHY.js.map +1 -0
  63. package/dist/{chunk-BBWLFK3C.js → chunk-5XIMUQ63.js} +3 -3
  64. package/dist/{chunk-BBWLFK3C.js.map → chunk-5XIMUQ63.js.map} +1 -1
  65. package/dist/{chunk-AHMRYY7J.cjs → chunk-6DAJXQZZ.cjs} +13 -13
  66. package/dist/{chunk-AHMRYY7J.cjs.map → chunk-6DAJXQZZ.cjs.map} +1 -1
  67. package/dist/{chunk-3PV25ICC.js → chunk-6KKVJ2V6.js} +3 -3
  68. package/dist/{chunk-3PV25ICC.js.map → chunk-6KKVJ2V6.js.map} +1 -1
  69. package/dist/{chunk-OLAYDOPC.js → chunk-6LUHNFEE.js} +6 -6
  70. package/dist/{chunk-OLAYDOPC.js.map → chunk-6LUHNFEE.js.map} +1 -1
  71. package/dist/{chunk-FSXQHEFQ.cjs → chunk-7CDV7Y4U.cjs} +25 -25
  72. package/dist/{chunk-FSXQHEFQ.cjs.map → chunk-7CDV7Y4U.cjs.map} +1 -1
  73. package/dist/{chunk-OAIOOVFN.cjs → chunk-7SJXYEZI.cjs} +36 -36
  74. package/dist/chunk-7SJXYEZI.cjs.map +1 -0
  75. package/dist/{chunk-LFYKB7KF.cjs → chunk-7V6APLF7.cjs} +19 -19
  76. package/dist/{chunk-LFYKB7KF.cjs.map → chunk-7V6APLF7.cjs.map} +1 -1
  77. package/dist/{chunk-4WMGFGYP.cjs → chunk-AJZ66VJC.cjs} +4 -4
  78. package/dist/{chunk-4WMGFGYP.cjs.map → chunk-AJZ66VJC.cjs.map} +1 -1
  79. package/dist/{chunk-KCP42W67.cjs → chunk-ARGQ5YZ5.cjs} +3 -3
  80. package/dist/{chunk-KCP42W67.cjs.map → chunk-ARGQ5YZ5.cjs.map} +1 -1
  81. package/dist/{chunk-BH6IKGZ3.js → chunk-AUAHGQY6.js} +5 -5
  82. package/dist/{chunk-BH6IKGZ3.js.map → chunk-AUAHGQY6.js.map} +1 -1
  83. package/dist/{chunk-KIXFXCHL.js → chunk-CEOCA7ID.js} +3 -3
  84. package/dist/{chunk-KIXFXCHL.js.map → chunk-CEOCA7ID.js.map} +1 -1
  85. package/dist/{chunk-TNKPQ3EF.js → chunk-CIRSOYGK.js} +12 -12
  86. package/dist/{chunk-TNKPQ3EF.js.map → chunk-CIRSOYGK.js.map} +1 -1
  87. package/dist/{chunk-BAUZUIHB.js → chunk-COL2TJGO.js} +83 -83
  88. package/dist/chunk-COL2TJGO.js.map +1 -0
  89. package/dist/{chunk-XHN5KOI2.cjs → chunk-DRLD4P2C.cjs} +8 -8
  90. package/dist/{chunk-XHN5KOI2.cjs.map → chunk-DRLD4P2C.cjs.map} +1 -1
  91. package/dist/{chunk-5AC52BHL.cjs → chunk-DYPFNQTQ.cjs} +140 -140
  92. package/dist/chunk-DYPFNQTQ.cjs.map +1 -0
  93. package/dist/{chunk-SCLGUHLU.cjs → chunk-E7TGSOPR.cjs} +4 -4
  94. package/dist/{chunk-SCLGUHLU.cjs.map → chunk-E7TGSOPR.cjs.map} +1 -1
  95. package/dist/{chunk-CRLFLMTK.cjs → chunk-EOXA4VJH.cjs} +3 -3
  96. package/dist/{chunk-CRLFLMTK.cjs.map → chunk-EOXA4VJH.cjs.map} +1 -1
  97. package/dist/{chunk-DBKZANTC.js → chunk-GA47YVW5.js} +3 -3
  98. package/dist/{chunk-DBKZANTC.js.map → chunk-GA47YVW5.js.map} +1 -1
  99. package/dist/{chunk-RCZRI72J.cjs → chunk-GMODJT4N.cjs} +4 -4
  100. package/dist/{chunk-RCZRI72J.cjs.map → chunk-GMODJT4N.cjs.map} +1 -1
  101. package/dist/{chunk-22KAKJ3W.cjs → chunk-GS5MFUPC.cjs} +4 -4
  102. package/dist/{chunk-22KAKJ3W.cjs.map → chunk-GS5MFUPC.cjs.map} +1 -1
  103. package/dist/{chunk-62OMGQHS.js → chunk-H6W3VXHU.js} +3 -3
  104. package/dist/{chunk-62OMGQHS.js.map → chunk-H6W3VXHU.js.map} +1 -1
  105. package/dist/{chunk-DX3Z2COD.cjs → chunk-HUYKO2ES.cjs} +3 -3
  106. package/dist/{chunk-DX3Z2COD.cjs.map → chunk-HUYKO2ES.cjs.map} +1 -1
  107. package/dist/{chunk-U5F5P4YU.js → chunk-IK234EFX.js} +12 -12
  108. package/dist/{chunk-U5F5P4YU.js.map → chunk-IK234EFX.js.map} +1 -1
  109. package/dist/{chunk-UQ2OBHMV.js → chunk-JUGEFTRC.js} +1010 -1010
  110. package/dist/chunk-JUGEFTRC.js.map +1 -0
  111. package/dist/{chunk-CHQMVIHR.js → chunk-LPGBRMYS.js} +36 -36
  112. package/dist/chunk-LPGBRMYS.js.map +1 -0
  113. package/dist/{chunk-D35EHOK5.cjs → chunk-M23W7IID.cjs} +12 -12
  114. package/dist/chunk-M23W7IID.cjs.map +1 -0
  115. package/dist/{chunk-FPOKWML2.js → chunk-MIVNNQO3.js} +21 -4
  116. package/dist/chunk-MIVNNQO3.js.map +1 -0
  117. package/dist/{chunk-WI3BVKEC.cjs → chunk-MNFI66H5.cjs} +5 -5
  118. package/dist/{chunk-WI3BVKEC.cjs.map → chunk-MNFI66H5.cjs.map} +1 -1
  119. package/dist/{chunk-T5ZMG6MC.js → chunk-NF4M7PUB.js} +3 -3
  120. package/dist/{chunk-T5ZMG6MC.js.map → chunk-NF4M7PUB.js.map} +1 -1
  121. package/dist/{chunk-ZNY5W3VX.js → chunk-NPSFPBIB.js} +3 -3
  122. package/dist/{chunk-ZNY5W3VX.js.map → chunk-NPSFPBIB.js.map} +1 -1
  123. package/dist/{chunk-LYW5A35J.js → chunk-OMIYTUVR.js} +12 -12
  124. package/dist/{chunk-LYW5A35J.js.map → chunk-OMIYTUVR.js.map} +1 -1
  125. package/dist/{chunk-ZMVF7EYJ.cjs → chunk-PBPO54KZ.cjs} +21 -3
  126. package/dist/chunk-PBPO54KZ.cjs.map +1 -0
  127. package/dist/{chunk-7V4OCZS6.cjs → chunk-RA3EGF6K.cjs} +6 -6
  128. package/dist/{chunk-7V4OCZS6.cjs.map → chunk-RA3EGF6K.cjs.map} +1 -1
  129. package/dist/{chunk-PL7O3RJJ.cjs → chunk-RKBAY7GZ.cjs} +3 -3
  130. package/dist/{chunk-PL7O3RJJ.cjs.map → chunk-RKBAY7GZ.cjs.map} +1 -1
  131. package/dist/{chunk-J3E5CSSC.js → chunk-RKFWBIKS.js} +3 -3
  132. package/dist/{chunk-J3E5CSSC.js.map → chunk-RKFWBIKS.js.map} +1 -1
  133. package/dist/{chunk-YLKHTBYA.js → chunk-RRP7MQAO.js} +3 -3
  134. package/dist/{chunk-YLKHTBYA.js.map → chunk-RRP7MQAO.js.map} +1 -1
  135. package/dist/{chunk-U6LQ6Z3P.cjs → chunk-SP3IKIPA.cjs} +6 -6
  136. package/dist/{chunk-U6LQ6Z3P.cjs.map → chunk-SP3IKIPA.cjs.map} +1 -1
  137. package/dist/{chunk-GX75YCWJ.cjs → chunk-SQUOXOY3.cjs} +560 -560
  138. package/dist/chunk-SQUOXOY3.cjs.map +1 -0
  139. package/dist/{chunk-6ZYOUT73.js → chunk-T5LORFHL.js} +7 -7
  140. package/dist/{chunk-6ZYOUT73.js.map → chunk-T5LORFHL.js.map} +1 -1
  141. package/dist/{chunk-45OU2UAA.cjs → chunk-TEMTKBBL.cjs} +10 -10
  142. package/dist/{chunk-45OU2UAA.cjs.map → chunk-TEMTKBBL.cjs.map} +1 -1
  143. package/dist/{chunk-PHDUN4SG.cjs → chunk-THCMGAFX.cjs} +41 -41
  144. package/dist/{chunk-PHDUN4SG.cjs.map → chunk-THCMGAFX.cjs.map} +1 -1
  145. package/dist/{chunk-HTGEAQOA.js → chunk-TOMDMKOD.js} +7 -7
  146. package/dist/{chunk-HTGEAQOA.js.map → chunk-TOMDMKOD.js.map} +1 -1
  147. package/dist/{chunk-WJHRWXWJ.js → chunk-TXIAF4PX.js} +3 -3
  148. package/dist/{chunk-WJHRWXWJ.js.map → chunk-TXIAF4PX.js.map} +1 -1
  149. package/dist/{chunk-6M5NAAWX.js → chunk-UCSEE52D.js} +3 -3
  150. package/dist/{chunk-6M5NAAWX.js.map → chunk-UCSEE52D.js.map} +1 -1
  151. package/dist/{chunk-I7CJDF3V.cjs → chunk-UHMP6S7M.cjs} +104 -103
  152. package/dist/chunk-UHMP6S7M.cjs.map +1 -0
  153. package/dist/{chunk-PGCKTXYH.js → chunk-UHUI6A36.js} +3 -3
  154. package/dist/{chunk-PGCKTXYH.js.map → chunk-UHUI6A36.js.map} +1 -1
  155. package/dist/{chunk-6KQVTMRL.cjs → chunk-UOGXKHTJ.cjs} +3 -3
  156. package/dist/{chunk-6KQVTMRL.cjs.map → chunk-UOGXKHTJ.cjs.map} +1 -1
  157. package/dist/{chunk-7S7YVBFK.js → chunk-VDSDG4FR.js} +3 -3
  158. package/dist/{chunk-7S7YVBFK.js.map → chunk-VDSDG4FR.js.map} +1 -1
  159. package/dist/{chunk-3GFQNJYE.js → chunk-VGWCHX6G.js} +104 -103
  160. package/dist/chunk-VGWCHX6G.js.map +1 -0
  161. package/dist/{chunk-VY3HTT37.js → chunk-VUH547VQ.js} +3 -3
  162. package/dist/{chunk-VY3HTT37.js.map → chunk-VUH547VQ.js.map} +1 -1
  163. package/dist/{chunk-AZCMKGDG.js → chunk-W37PFYFL.js} +4 -4
  164. package/dist/{chunk-AZCMKGDG.js.map → chunk-W37PFYFL.js.map} +1 -1
  165. package/dist/{chunk-JGUM4EXE.cjs → chunk-W3IX3GZS.cjs} +8 -8
  166. package/dist/{chunk-JGUM4EXE.cjs.map → chunk-W3IX3GZS.cjs.map} +1 -1
  167. package/dist/{chunk-UCA4JLLJ.cjs → chunk-X7GT57KW.cjs} +3 -3
  168. package/dist/{chunk-UCA4JLLJ.cjs.map → chunk-X7GT57KW.cjs.map} +1 -1
  169. package/dist/{chunk-IXL2KJOZ.cjs → chunk-XBEGD33U.cjs} +40 -40
  170. package/dist/{chunk-IXL2KJOZ.cjs.map → chunk-XBEGD33U.cjs.map} +1 -1
  171. package/dist/{chunk-FDNIK5YS.cjs → chunk-XBKIFGBB.cjs} +8 -8
  172. package/dist/{chunk-FDNIK5YS.cjs.map → chunk-XBKIFGBB.cjs.map} +1 -1
  173. package/dist/{chunk-HZE5MHQO.js → chunk-XT7HKQ4H.js} +3 -3
  174. package/dist/{chunk-HZE5MHQO.js.map → chunk-XT7HKQ4H.js.map} +1 -1
  175. package/dist/{chunk-M3OK6KGR.js → chunk-ZGQKED5T.js} +3 -3
  176. package/dist/{chunk-M3OK6KGR.js.map → chunk-ZGQKED5T.js.map} +1 -1
  177. package/dist/{chunk-NWBCZ4PA.js → chunk-ZKBYG6MN.js} +4 -4
  178. package/dist/{chunk-NWBCZ4PA.js.map → chunk-ZKBYG6MN.js.map} +1 -1
  179. package/dist/collaboration/index.cjs +1 -1
  180. package/dist/collaboration/index.js +1 -1
  181. package/dist/connect/docx.cjs +19 -19
  182. package/dist/connect/docx.js +15 -15
  183. package/dist/connect/index.cjs +762 -762
  184. package/dist/connect/index.js +63 -63
  185. package/dist/connect/viewer.cjs +14 -14
  186. package/dist/connect/viewer.js +13 -13
  187. package/dist/connection/dashboards/ConnectedDashboardsPage.d.ts +6 -0
  188. package/dist/dashboards/chartModel.d.ts +12 -0
  189. package/dist/dashboards/index.cjs +113 -42
  190. package/dist/dashboards/index.cjs.map +1 -1
  191. package/dist/dashboards/index.js +95 -24
  192. package/dist/dashboards/index.js.map +1 -1
  193. package/dist/embed/index.cjs +29 -29
  194. package/dist/embed/index.js +23 -23
  195. package/dist/facts/index.cjs +43 -43
  196. package/dist/facts/index.js +2 -2
  197. package/dist/files/index.cjs +1 -1
  198. package/dist/files/index.js +1 -1
  199. package/dist/home/index.cjs +31 -31
  200. package/dist/home/index.js +3 -3
  201. package/dist/index.cjs +383 -383
  202. package/dist/index.js +21 -21
  203. package/dist/settings/index.cjs +153 -153
  204. package/dist/settings/index.js +4 -4
  205. package/dist/shell/index.cjs +36 -36
  206. package/dist/shell/index.js +4 -4
  207. package/dist/site/index.cjs +5 -5
  208. package/dist/site/index.js +1 -1
  209. package/dist/studio/index.cjs +19 -19
  210. package/dist/studio/index.js +14 -14
  211. package/dist/styles.css +1 -1
  212. package/dist/workflow-canvas/index.cjs +33 -33
  213. package/dist/workflow-canvas/index.js +22 -22
  214. package/node_modules/@arbidocs/coedit/package.json +2 -2
  215. package/node_modules/@docx-editor.dev/core/dist/automation.cjs +1 -1
  216. package/node_modules/@docx-editor.dev/core/dist/automation.d.ts +60 -13
  217. package/node_modules/@docx-editor.dev/core/dist/automation.js +1 -1
  218. package/node_modules/@docx-editor.dev/core/dist/binding.cjs +1 -1
  219. package/node_modules/@docx-editor.dev/core/dist/binding.d.ts +21 -13
  220. package/node_modules/@docx-editor.dev/core/dist/binding.js +1 -1
  221. package/node_modules/@docx-editor.dev/core/dist/{index-Bsg7oIKP.d.ts → chrome-print-CAs51cpq.d.ts} +31 -21
  222. package/node_modules/@docx-editor.dev/core/dist/{chunk-VDNNLG6X.js → chunk-236O4YQW.js} +1 -1
  223. package/node_modules/@docx-editor.dev/core/dist/chunk-4HENIAFG.js +1 -0
  224. package/node_modules/@docx-editor.dev/core/dist/{chunk-SRPILEWV.cjs → chunk-6JPL6ZAS.cjs} +5 -5
  225. package/node_modules/@docx-editor.dev/core/dist/{chunk-2RC2EPND.js → chunk-6ZQP4HQ7.js} +1 -1
  226. package/node_modules/@docx-editor.dev/core/dist/{chunk-ZUHOMK52.cjs → chunk-7WQ7AAHW.cjs} +1 -1
  227. package/node_modules/@docx-editor.dev/core/dist/{chunk-Z6WBFXJU.js → chunk-BCXH4BXB.js} +3 -3
  228. package/node_modules/@docx-editor.dev/core/dist/{chunk-QMLCVPCD.cjs → chunk-BY2ACZZ6.cjs} +1 -1
  229. package/node_modules/@docx-editor.dev/core/dist/chunk-CAJEXXVG.cjs +4 -0
  230. package/node_modules/@docx-editor.dev/core/dist/chunk-CPWLFPWC.js +30 -0
  231. package/node_modules/@docx-editor.dev/core/dist/{chunk-6APGXLBB.cjs → chunk-D7ZMDMPX.cjs} +2 -2
  232. package/node_modules/@docx-editor.dev/core/dist/chunk-DOHF6FA7.cjs +30 -0
  233. package/node_modules/@docx-editor.dev/core/dist/chunk-DVX32P2P.js +27 -0
  234. package/node_modules/@docx-editor.dev/core/dist/{chunk-6EYYL7FL.js → chunk-E4LOMDNL.js} +1 -1
  235. package/node_modules/@docx-editor.dev/core/dist/chunk-EKLM7NWB.cjs +7 -0
  236. package/node_modules/@docx-editor.dev/core/dist/chunk-G3K63G7P.cjs +27 -0
  237. package/node_modules/@docx-editor.dev/core/dist/{chunk-5CSUYANV.js → chunk-G4HOFIKJ.js} +1 -1
  238. package/node_modules/@docx-editor.dev/core/dist/{chunk-K5U2PLDP.cjs → chunk-JLVBDYVQ.cjs} +1 -1
  239. package/node_modules/@docx-editor.dev/core/dist/chunk-LQX36Z5P.js +7 -0
  240. package/node_modules/@docx-editor.dev/core/dist/{chunk-TSLBZ26X.js → chunk-LSZ6KPKK.js} +1 -1
  241. package/node_modules/@docx-editor.dev/core/dist/{chunk-O2AL2HSJ.cjs → chunk-MM5QBMTE.cjs} +1 -1
  242. package/node_modules/@docx-editor.dev/core/dist/{chunk-ETTO6GK3.js → chunk-OMCG63ZF.js} +1 -1
  243. package/node_modules/@docx-editor.dev/core/dist/chunk-OSFOJTHU.cjs +18 -0
  244. package/node_modules/@docx-editor.dev/core/dist/{chunk-E7BQA6UP.js → chunk-RCLZXP3B.js} +1 -1
  245. package/node_modules/@docx-editor.dev/core/dist/chunk-T6K2QYNZ.cjs +2 -0
  246. package/node_modules/@docx-editor.dev/core/dist/chunk-TRGAVV2Y.js +4 -0
  247. package/node_modules/@docx-editor.dev/core/dist/chunk-U4JZVSOE.js +2 -0
  248. package/node_modules/@docx-editor.dev/core/dist/{chunk-2GO5T2JU.cjs → chunk-UHHYFIDT.cjs} +1 -1
  249. package/node_modules/@docx-editor.dev/core/dist/chunk-V3N4SOAK.cjs +1 -0
  250. package/node_modules/@docx-editor.dev/core/dist/{chunk-6AWEKBLB.cjs → chunk-W35WTWAO.cjs} +1 -1
  251. package/node_modules/@docx-editor.dev/core/dist/chunk-YQ5G6LC7.js +18 -0
  252. package/node_modules/@docx-editor.dev/core/dist/collaboration/replication.cjs +1 -1
  253. package/node_modules/@docx-editor.dev/core/dist/collaboration/replication.d.ts +5 -5
  254. package/node_modules/@docx-editor.dev/core/dist/collaboration/replication.js +1 -1
  255. package/node_modules/@docx-editor.dev/core/dist/collaboration.d.ts +4 -4
  256. package/node_modules/@docx-editor.dev/core/dist/contracts/document.d.ts +3 -3
  257. package/node_modules/@docx-editor.dev/core/dist/contracts/editor.d.ts +9 -10
  258. package/node_modules/@docx-editor.dev/core/dist/contracts/interaction.d.ts +2 -2
  259. package/node_modules/@docx-editor.dev/core/dist/contracts/modules.cjs +1 -1
  260. package/node_modules/@docx-editor.dev/core/dist/contracts/modules.d.ts +33 -9
  261. package/node_modules/@docx-editor.dev/core/dist/contracts/modules.js +1 -1
  262. package/node_modules/@docx-editor.dev/core/dist/contracts/types.d.ts +2 -2
  263. package/node_modules/@docx-editor.dev/core/dist/{custom-node-writes-cvL5rhcD.d.ts → custom-node-writes-Bn6uciLb.d.ts} +2 -2
  264. package/node_modules/@docx-editor.dev/core/dist/diagnostic-context-B8M79cfK.d.ts +30 -0
  265. package/node_modules/@docx-editor.dev/core/dist/diagnostic-hints-BeVjfNOv.d.ts +113 -0
  266. package/node_modules/@docx-editor.dev/core/dist/{document-protection-BAGVGqaP.d.ts → document-protection-CUb55pl_.d.ts} +2 -2
  267. package/node_modules/@docx-editor.dev/core/dist/{editor-Ci7IZGmG.d.ts → editor-CZQZmTIU.d.ts} +386 -9
  268. package/node_modules/@docx-editor.dev/core/dist/{editor-scope-OHPwVQ5l.d.ts → editor-scope-7o9xweiJ.d.ts} +1 -1
  269. package/node_modules/@docx-editor.dev/core/dist/editor.cjs +1 -1
  270. package/node_modules/@docx-editor.dev/core/dist/editor.d.ts +54 -33
  271. package/node_modules/@docx-editor.dev/core/dist/editor.js +1 -1
  272. package/node_modules/@docx-editor.dev/core/dist/export.cjs +2 -2
  273. package/node_modules/@docx-editor.dev/core/dist/export.d.ts +13 -14
  274. package/node_modules/@docx-editor.dev/core/dist/export.js +1 -1
  275. package/node_modules/@docx-editor.dev/core/dist/{font-resolver-BVQB14qT.d.ts → font-resolver-lSBLirLR.d.ts} +3 -3
  276. package/node_modules/@docx-editor.dev/core/dist/{headless-document-view-qH331moE.d.ts → headless-document-view-pp3q7wIh.d.ts} +2 -2
  277. package/node_modules/@docx-editor.dev/core/dist/{image-resources-BN-hUgCn.d.ts → image-resources-tXLQShoC.d.ts} +2 -2
  278. package/node_modules/@docx-editor.dev/core/dist/index.cjs +1 -1
  279. package/node_modules/@docx-editor.dev/core/dist/index.d.ts +65 -20
  280. package/node_modules/@docx-editor.dev/core/dist/index.js +1 -1
  281. package/node_modules/@docx-editor.dev/core/dist/{layout-shaping-BEyuiQOk.d.ts → layout-shaping-BD-dF_rn.d.ts} +1 -1
  282. package/node_modules/@docx-editor.dev/core/dist/layout.cjs +1 -1
  283. package/node_modules/@docx-editor.dev/core/dist/layout.d.ts +17 -20
  284. package/node_modules/@docx-editor.dev/core/dist/layout.js +1 -1
  285. package/node_modules/@docx-editor.dev/core/dist/{note-properties-4Y9o6Gyk.d.ts → note-properties-qQUjO1GQ.d.ts} +3 -3
  286. package/node_modules/@docx-editor.dev/core/dist/{omml-equation-CuzBL5DD.d.ts → omml-equation-BUbU0utM.d.ts} +1 -1
  287. package/node_modules/@docx-editor.dev/core/dist/output.cjs +1 -1
  288. package/node_modules/@docx-editor.dev/core/dist/output.d.ts +8 -9
  289. package/node_modules/@docx-editor.dev/core/dist/output.js +1 -1
  290. package/node_modules/@docx-editor.dev/core/dist/{protocol-Bqk4Izjc.d.ts → protocol-DYzzz2ej.d.ts} +2 -2
  291. package/node_modules/@docx-editor.dev/core/dist/{review-paragraph-order-DT-n6ouC.d.ts → review-paragraph-order-CN_0l2Cb.d.ts} +1 -1
  292. package/node_modules/@docx-editor.dev/core/dist/{semantic-cell-selection-D9D1KSXq.d.ts → semantic-cell-selection-eYag3P47.d.ts} +4 -211
  293. package/node_modules/@docx-editor.dev/core/dist/{semantic-interaction-CIC-PooQ.d.ts → semantic-interaction-kR_QB845.d.ts} +1 -1
  294. package/node_modules/@docx-editor.dev/core/dist/{semantic-paint-BME37OMv.d.ts → semantic-paint-ZayFF3tD.d.ts} +17 -5
  295. package/node_modules/@docx-editor.dev/core/dist/{semantic-record-queries-CBlZqZNa.d.ts → semantic-record-queries-Bsgth6lv.d.ts} +1 -1
  296. package/node_modules/@docx-editor.dev/core/dist/{semantic-records-4B3WwFAi.d.ts → semantic-records-DQmumPgL.d.ts} +1279 -828
  297. package/node_modules/@docx-editor.dev/core/dist/store.cjs +1 -1
  298. package/node_modules/@docx-editor.dev/core/dist/store.d.ts +1466 -1464
  299. package/node_modules/@docx-editor.dev/core/dist/store.js +1 -1
  300. package/node_modules/@docx-editor.dev/core/dist/{tree-package-fragment-BeeKxDw8.d.ts → tree-package-store-CovjNARF.d.ts} +83 -83
  301. package/node_modules/@docx-editor.dev/core/dist/{tree-session-contract-CVbmlMlq.d.ts → tree-session-contract-CZVAGl51.d.ts} +6 -6
  302. package/node_modules/@docx-editor.dev/core/dist/{types-barrel-D3xCgQX6.d.ts → types-barrel-DuC5QBNC.d.ts} +548 -527
  303. package/node_modules/@docx-editor.dev/core/package.json +3 -3
  304. package/node_modules/@docx-editor.dev/react/dist/index.js +3 -3
  305. package/node_modules/@docx-editor.dev/react/dist/index.mjs +3 -3
  306. package/node_modules/@docx-editor.dev/react/package.json +4 -4
  307. package/package.json +8 -8
  308. package/dist/ConnectedStreamedWordArtifact-HLJ5IIOU.js.map +0 -1
  309. package/dist/ConnectedStreamedWordArtifact-JQ34AOUU.cjs.map +0 -1
  310. package/dist/RechartsRenderer-23OF4H6X.js.map +0 -1
  311. package/dist/RechartsRenderer-GIRCW7DB.cjs.map +0 -1
  312. package/dist/ai-ADS6YSS2.cjs.map +0 -1
  313. package/dist/ai-KHWTGBT5.js.map +0 -1
  314. package/dist/chunk-3GFQNJYE.js.map +0 -1
  315. package/dist/chunk-5AC52BHL.cjs.map +0 -1
  316. package/dist/chunk-AVGHTUPE.js.map +0 -1
  317. package/dist/chunk-BAUZUIHB.js.map +0 -1
  318. package/dist/chunk-CHQMVIHR.js.map +0 -1
  319. package/dist/chunk-D35EHOK5.cjs.map +0 -1
  320. package/dist/chunk-FPOKWML2.js.map +0 -1
  321. package/dist/chunk-GX75YCWJ.cjs.map +0 -1
  322. package/dist/chunk-I7CJDF3V.cjs.map +0 -1
  323. package/dist/chunk-OAIOOVFN.cjs.map +0 -1
  324. package/dist/chunk-UQ2OBHMV.js.map +0 -1
  325. package/dist/chunk-ZMVF7EYJ.cjs.map +0 -1
  326. package/node_modules/@docx-editor.dev/core/dist/chunk-4GBTELJV.cjs +0 -28
  327. package/node_modules/@docx-editor.dev/core/dist/chunk-4R3TEXMN.js +0 -18
  328. package/node_modules/@docx-editor.dev/core/dist/chunk-EO4C5QJW.cjs +0 -2
  329. package/node_modules/@docx-editor.dev/core/dist/chunk-FIJZIQXA.cjs +0 -18
  330. package/node_modules/@docx-editor.dev/core/dist/chunk-FRXAOVTB.js +0 -28
  331. package/node_modules/@docx-editor.dev/core/dist/chunk-J6BVWIDB.js +0 -2
  332. package/node_modules/@docx-editor.dev/core/dist/chunk-JGNVNT2A.cjs +0 -2
  333. package/node_modules/@docx-editor.dev/core/dist/chunk-KKIJG3C6.js +0 -2
  334. package/node_modules/@docx-editor.dev/core/dist/chunk-LWDSDCMO.js +0 -27
  335. package/node_modules/@docx-editor.dev/core/dist/chunk-NBCVVZOM.cjs +0 -1
  336. package/node_modules/@docx-editor.dev/core/dist/chunk-O5INAWZQ.js +0 -1
  337. package/node_modules/@docx-editor.dev/core/dist/chunk-RCHS4ZEH.cjs +0 -27
  338. package/node_modules/@docx-editor.dev/core/dist/chunk-VHAVHCQY.js +0 -7
  339. package/node_modules/@docx-editor.dev/core/dist/chunk-VX43VBAX.cjs +0 -7
  340. package/node_modules/@docx-editor.dev/core/dist/review-pane-D9jm8DcY.d.ts +0 -128
  341. package/node_modules/@docx-editor.dev/core/dist/revision-projection-DZ4kKVev.d.ts +0 -242
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkOAIOOVFN_cjs = require('./chunk-OAIOOVFN.cjs');
5
- var chunkSCLGUHLU_cjs = require('./chunk-SCLGUHLU.cjs');
6
- var chunk5AC52BHL_cjs = require('./chunk-5AC52BHL.cjs');
7
- var chunkI7CJDF3V_cjs = require('./chunk-I7CJDF3V.cjs');
4
+ var chunk7SJXYEZI_cjs = require('./chunk-7SJXYEZI.cjs');
5
+ var chunkE7TGSOPR_cjs = require('./chunk-E7TGSOPR.cjs');
6
+ var chunkDYPFNQTQ_cjs = require('./chunk-DYPFNQTQ.cjs');
7
+ var chunkUHMP6S7M_cjs = require('./chunk-UHMP6S7M.cjs');
8
8
  var chunkEKSHUNJI_cjs = require('./chunk-EKSHUNJI.cjs');
9
9
  var chunkNNBL3HPG_cjs = require('./chunk-NNBL3HPG.cjs');
10
10
  var chunkMOIZ2R5X_cjs = require('./chunk-MOIZ2R5X.cjs');
@@ -19,6 +19,336 @@ var ui = require('@arbidocs/react/ui');
19
19
  var jsxRuntime = require('react/jsx-runtime');
20
20
  var browser = require('@arbidocs/sdk/browser');
21
21
 
22
+ function ChatCallCard({
23
+ callExtId,
24
+ senderName,
25
+ latest,
26
+ name,
27
+ time
28
+ }) {
29
+ const arbi = react.useArbi();
30
+ const { data: call } = react.useCall(latest ? callExtId : null);
31
+ const liveNow = react.useCallSession((s) => callExtId in s.liveCalls);
32
+ const inThisCall = react.useCallSession((s) => s.active?.callExtId === callExtId);
33
+ const inAnotherCall = react.useCallSession((s) => !!s.active && s.active.callExtId !== callExtId);
34
+ const [busy, setBusy] = react$1.useState(false);
35
+ const live = latest && chunkUHMP6S7M_cjs.isCallLive(call, liveNow);
36
+ let summary;
37
+ if (live) summary = senderName ? `${senderName} started a call` : "Call in progress";
38
+ else if (latest && call?.started_at && call.ended_at) {
39
+ const seconds = (Date.parse(call.ended_at) - Date.parse(call.started_at)) / 1e3;
40
+ const joined = (call.last_participants ?? []).map(name);
41
+ summary = [
42
+ "Call",
43
+ chunkUHMP6S7M_cjs.formatCallDuration(seconds),
44
+ joined.length ? `joined ${joined.join(", ")}` : null
45
+ ].filter(Boolean).join(" \xB7 ");
46
+ } else summary = senderName ? `Call started by ${senderName}` : "Call";
47
+ return /* @__PURE__ */ jsxRuntime.jsxs(
48
+ "div",
49
+ {
50
+ className: "mx-auto my-2 flex w-fit max-w-full flex-wrap items-center justify-center gap-2 rounded-md border border-border bg-card px-3 py-2 text-xs",
51
+ "data-testid": "chat-call-card",
52
+ "data-live": live || void 0,
53
+ children: [
54
+ live ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Phone, { className: "size-4 animate-pulse text-green-text", "aria-hidden": true }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PhoneOff, { className: "size-4 text-muted-foreground", "aria-hidden": true }),
55
+ /* @__PURE__ */ jsxRuntime.jsx("span", { "data-testid": "chat-call-card-summary", children: summary }),
56
+ time && /* @__PURE__ */ jsxRuntime.jsx("time", { className: "text-muted-foreground", children: time }),
57
+ live && /* @__PURE__ */ jsxRuntime.jsx(
58
+ ui.Button,
59
+ {
60
+ type: "button",
61
+ size: "sm",
62
+ className: "h-7 bg-green-600 text-white hover:bg-green-700",
63
+ disabled: busy || inThisCall || inAnotherCall,
64
+ title: inAnotherCall ? "You are already in a call" : void 0,
65
+ onClick: () => {
66
+ setBusy(true);
67
+ void react.openCall(arbi, { callExtId }).finally(() => setBusy(false));
68
+ },
69
+ "data-testid": "chat-call-card-join",
70
+ children: inThisCall ? "In call" : "Join"
71
+ }
72
+ )
73
+ ]
74
+ }
75
+ );
76
+ }
77
+ function useCallPersonName(identity, fallbackName) {
78
+ const arbi = react.useArbi();
79
+ const { byId } = react.usePeople();
80
+ const me = arbi.isLoggedIn && arbi.user.identity()?.externalId === identity;
81
+ const profile = me ? arbi.user.profile() : null;
82
+ return react$1.useMemo(() => {
83
+ if (profile)
84
+ return ui.getUserDisplayName({ given_name: profile.givenName, family_name: profile.familyName });
85
+ const user = byId(identity);
86
+ if (user) return ui.getUserDisplayName(user);
87
+ return (fallbackName || identity).trim().split(/\s+/).join(" ");
88
+ }, [profile, byId, identity, fallbackName]);
89
+ }
90
+ function CallConversationEmpty({ callExtId }) {
91
+ const { inCall, transcribing } = chunk7SJXYEZI_cjs.useMyCallStatus(callExtId);
92
+ const live = react.useCallSession((s) => !!s.liveCalls[callExtId]) || inCall;
93
+ if (!live) {
94
+ return /* @__PURE__ */ jsxRuntime.jsx(
95
+ chunkZW6FPIFC_cjs.EmptyState,
96
+ {
97
+ icon: lucideReact.AudioLines,
98
+ title: "No transcript",
99
+ description: "This call was not transcribed. When a call here is transcribed, what people say appears in this conversation.",
100
+ className: "mx-auto my-8 max-w-xl",
101
+ testId: "call-conversation-empty"
102
+ }
103
+ );
104
+ }
105
+ return /* @__PURE__ */ jsxRuntime.jsx(
106
+ chunkZW6FPIFC_cjs.EmptyState,
107
+ {
108
+ icon: transcribing ? lucideReact.Captions : lucideReact.CaptionsOff,
109
+ title: "Call in progress \u2014 the transcript will appear here",
110
+ description: transcribing ? "Transcription is on: what people say shows up here as they speak." : "Transcription is off. The host can turn it on with CC in the call.",
111
+ className: "mx-auto my-8 max-w-xl",
112
+ testId: "call-conversation-empty"
113
+ }
114
+ );
115
+ }
116
+ function ProvisionalRow({ identity }) {
117
+ const name = useCallPersonName(identity);
118
+ return /* @__PURE__ */ jsxRuntime.jsx(
119
+ chunkZBP4ZSAJ_cjs.ProvisionalTranscriptLine,
120
+ {
121
+ speakerId: identity,
122
+ speakerName: name,
123
+ speaker: /* @__PURE__ */ jsxRuntime.jsx(chunkUHMP6S7M_cjs.CallUserPill, { identity })
124
+ }
125
+ );
126
+ }
127
+ function ProvisionalSpeakers({ ids }) {
128
+ if (!ids.length) return null;
129
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-2", "data-testid": "transcript-provisional-rows", children: ids.map((id) => /* @__PURE__ */ jsxRuntime.jsx(ProvisionalRow, { identity: id }, id)) });
130
+ }
131
+ var LINE_WAIT_MS = 1e4;
132
+ var MIN_SPEECH_MS = 800;
133
+ function useProvisionalSpeakers(callExtId, lines) {
134
+ const { inCall, transcribing } = chunk7SJXYEZI_cjs.useMyCallStatus(callExtId);
135
+ const speaking = chunk7SJXYEZI_cjs.useSpeakingIds();
136
+ const pending = react$1.useRef(/* @__PURE__ */ new Map());
137
+ const [, tick] = react$1.useState(0);
138
+ const active = inCall && transcribing;
139
+ const now = Date.now();
140
+ if (active) {
141
+ for (const id of speaking) {
142
+ const p = pending.current.get(id);
143
+ if (p) p.lastHeardAt = now;
144
+ else pending.current.set(id, { startedAt: now, lastHeardAt: now });
145
+ }
146
+ } else if (pending.current.size) {
147
+ pending.current.clear();
148
+ }
149
+ const latest = react$1.useMemo(() => {
150
+ const m = /* @__PURE__ */ new Map();
151
+ for (const l of lines) m.set(l.speakerId, Math.max(m.get(l.speakerId) ?? 0, l.at));
152
+ return m;
153
+ }, [lines]);
154
+ for (const [id, p] of [...pending.current]) {
155
+ const arrived = (latest.get(id) ?? 0) >= p.startedAt - 3e3;
156
+ const stale = !speaking.includes(id) && now - p.lastHeardAt > LINE_WAIT_MS;
157
+ if (arrived && !speaking.includes(id) || stale) pending.current.delete(id);
158
+ else if (arrived) p.startedAt = now;
159
+ }
160
+ const waiting = pending.current.size > 0;
161
+ react$1.useEffect(() => {
162
+ if (!waiting) return;
163
+ const id = setInterval(() => tick((n) => n + 1), 1e3);
164
+ return () => clearInterval(id);
165
+ }, [waiting]);
166
+ return [...pending.current].filter(([, p]) => p.lastHeardAt - p.startedAt >= MIN_SPEECH_MS).map(([id]) => id);
167
+ }
168
+ var { isTranscriptMessage, parseTranscriptContent } = browser.chats;
169
+ function ConnectedCallChatHistory({
170
+ chat,
171
+ messages,
172
+ items,
173
+ renderItem,
174
+ loadOlder,
175
+ memberById,
176
+ senderName,
177
+ myExtId,
178
+ formatTime,
179
+ formatDay
180
+ }) {
181
+ const arbi = react.useArbi();
182
+ const [view, setView] = react$1.useState("all");
183
+ react$1.useEffect(() => setView("all"), [chat?.external_id]);
184
+ const recordingsCallExtId = chat?.call_ext_id ?? null;
185
+ const pendingRecording = chunkZT5MIFLC_cjs.usePendingRecording();
186
+ react$1.useEffect(() => {
187
+ if (pendingRecording && recordingsCallExtId) setView("recordings");
188
+ }, [pendingRecording, recordingsCallExtId]);
189
+ const latestCallCards = react$1.useMemo(() => {
190
+ const latest = /* @__PURE__ */ new Map();
191
+ for (const m of messages)
192
+ if (m.kind === "call" && m.call_ext_id && !m.deleted) latest.set(m.call_ext_id, m.external_id);
193
+ return new Set(latest.values());
194
+ }, [messages]);
195
+ const hasRecTranscript = react$1.useMemo(
196
+ () => react.hasRecordingTranscript(messages, react.chatTranscriptRef),
197
+ [messages]
198
+ );
199
+ const recordingWindows = react.useRecordingWindows(recordingsCallExtId, hasRecTranscript);
200
+ const supersededTranscript = react$1.useMemo(
201
+ () => react.supersededTranscriptLines(messages, react.chatTranscriptRef, recordingWindows),
202
+ [messages, recordingWindows]
203
+ );
204
+ const transcriptMessages = react$1.useMemo(
205
+ () => react.sortTranscriptMessages(
206
+ messages.filter((m) => isTranscriptMessage(m) && !m.deleted && !supersededTranscript.has(m))
207
+ ),
208
+ [messages, supersededTranscript]
209
+ );
210
+ const hasTranscript = transcriptMessages.length > 0;
211
+ const { data: meetingCall } = react.useCall(hasTranscript ? chat?.call_ext_id : null);
212
+ const isHost = !!meetingCall?.is_creator;
213
+ const [meetingTitle, setMeetingTitle] = react$1.useState(null);
214
+ react$1.useEffect(() => {
215
+ if (!chat || !isHost && !recordingsCallExtId) return;
216
+ let cancelled = false;
217
+ arbi.chats.title(chat).then((t) => !cancelled && setMeetingTitle(t)).catch(() => void 0);
218
+ return () => {
219
+ cancelled = true;
220
+ };
221
+ }, [arbi, isHost, chat, recordingsCallExtId]);
222
+ const transcriptSpeaker = (msg) => {
223
+ const parsed = msg.decryptFailed ? null : parseTranscriptContent(msg.content);
224
+ return { parsed, speakerId: parsed?.speaker_identity || msg.sender_ext_id || "" };
225
+ };
226
+ const transcriptExport = react$1.useMemo(
227
+ () => transcriptMessages.filter((m) => !m.decryptFailed).map((m) => {
228
+ const parsed = parseTranscriptContent(m.content);
229
+ const speakerId = parsed?.speaker_identity || m.sender_ext_id || "";
230
+ return {
231
+ speaker: parsed?.speaker_name || (memberById(speakerId) ? senderName(speakerId) : "") || "Former member",
232
+ at: parsed?.started_at ?? m.created_at,
233
+ text: parsed?.text ?? m.content ?? ""
234
+ };
235
+ }),
236
+ [transcriptMessages, memberById, senderName]
237
+ );
238
+ const transcriptLayout = react$1.useMemo(() => {
239
+ const shown = view === "transcript" ? transcriptMessages : messages;
240
+ const continued = chunkZBP4ZSAJ_cjs.transcriptRuns(
241
+ shown,
242
+ (m) => isTranscriptMessage(m) && !supersededTranscript.has(m) ? transcriptSpeaker(m).speakerId : null,
243
+ (m) => Date.parse(transcriptSpeaker(m).parsed?.started_at ?? m.created_at ?? "") || 0
244
+ );
245
+ return { continued };
246
+ }, [view, messages, transcriptMessages, supersededTranscript]);
247
+ const transcriptEntry = (msg) => {
248
+ const { parsed, speakerId } = transcriptSpeaker(msg);
249
+ return /* @__PURE__ */ jsxRuntime.jsx(
250
+ chunkE7TGSOPR_cjs.TranscriptEntry,
251
+ {
252
+ speakerId,
253
+ speakerName: speakerId === myExtId ? "Me" : parsed?.speaker_name || (memberById(speakerId) ? senderName(speakerId) : senderName(msg.sender_ext_id)),
254
+ text: parsed?.text ?? msg.content ?? "",
255
+ at: parsed?.started_at ?? msg.created_at,
256
+ continued: transcriptLayout.continued.has(msg)
257
+ },
258
+ msg.external_id
259
+ );
260
+ };
261
+ const chatLines = react$1.useMemo(
262
+ () => transcriptMessages.map((m) => {
263
+ const { parsed, speakerId } = transcriptSpeaker(m);
264
+ return { speakerId, at: Date.parse(parsed?.started_at ?? m.created_at ?? "") || 0 };
265
+ }),
266
+ [transcriptMessages]
267
+ );
268
+ const provisionalSpeakers = useProvisionalSpeakers(recordingsCallExtId, chatLines);
269
+ const filterOptions = [
270
+ { value: "all", label: "All" },
271
+ { value: "chat", label: "Chat", testId: "chat-filter" },
272
+ {
273
+ value: "transcript",
274
+ label: "Transcript",
275
+ count: transcriptMessages.length,
276
+ testId: "transcript-filter"
277
+ },
278
+ ...recordingsCallExtId ? [{ value: "recordings", label: "Recordings", testId: "recordings-filter" }] : []
279
+ ];
280
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
281
+ messages.length === 0 && recordingsCallExtId && /* @__PURE__ */ jsxRuntime.jsx(CallConversationEmpty, { callExtId: recordingsCallExtId }),
282
+ (hasTranscript || recordingsCallExtId) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-0 z-10 flex justify-center py-1", children: /* @__PURE__ */ jsxRuntime.jsx(
283
+ chunkZBP4ZSAJ_cjs.ConversationFilter,
284
+ {
285
+ value: view,
286
+ options: filterOptions,
287
+ onChange: setView
288
+ }
289
+ ) }),
290
+ view === "recordings" && recordingsCallExtId && /* @__PURE__ */ jsxRuntime.jsx(chunkDYPFNQTQ_cjs.RecordingsList, { callExtId: recordingsCallExtId, title: meetingTitle, className: "py-1" }),
291
+ loadOlder,
292
+ view === "transcript" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col py-1", "data-testid": "transcript-view", children: [
293
+ isHost && /* @__PURE__ */ jsxRuntime.jsx(
294
+ chunkDYPFNQTQ_cjs.SaveTranscriptToThread,
295
+ {
296
+ title: meetingTitle,
297
+ lines: transcriptExport,
298
+ className: "mx-3 mb-2 self-start"
299
+ }
300
+ ),
301
+ transcriptMessages.map((msg) => transcriptEntry(msg)),
302
+ /* @__PURE__ */ jsxRuntime.jsx(ProvisionalSpeakers, { ids: provisionalSpeakers })
303
+ ] }),
304
+ (view === "all" || view === "chat") && items.map((item, i) => {
305
+ const { message: msg, isFirstOfDay } = item;
306
+ const deleted = !!msg.deleted;
307
+ if (deleted && isTranscriptMessage(msg)) return null;
308
+ const separator = isFirstOfDay && /* @__PURE__ */ jsxRuntime.jsx(react.DateSeparator, { children: formatDay(msg.created_at) });
309
+ if (isTranscriptMessage(msg)) {
310
+ if (view === "chat") return null;
311
+ const superseded = supersededTranscript.has(msg);
312
+ if (superseded && !isFirstOfDay) return null;
313
+ return /* @__PURE__ */ jsxRuntime.jsxs(react$1.Fragment, { children: [
314
+ separator,
315
+ !superseded && transcriptEntry(msg)
316
+ ] }, msg.external_id);
317
+ }
318
+ if (msg.kind === "recording" && msg.call_ext_id && !deleted) {
319
+ return /* @__PURE__ */ jsxRuntime.jsxs(react$1.Fragment, { children: [
320
+ separator,
321
+ /* @__PURE__ */ jsxRuntime.jsx(
322
+ chunkDYPFNQTQ_cjs.RecordingCard,
323
+ {
324
+ callExtId: msg.call_ext_id,
325
+ recordingExtId: msg.recording_ext_id ?? null,
326
+ title: meetingTitle,
327
+ time: formatTime(msg.created_at)
328
+ }
329
+ )
330
+ ] }, msg.external_id);
331
+ }
332
+ if (msg.kind === "call" && msg.call_ext_id && !deleted) {
333
+ return /* @__PURE__ */ jsxRuntime.jsxs(react$1.Fragment, { children: [
334
+ separator,
335
+ /* @__PURE__ */ jsxRuntime.jsx(
336
+ ChatCallCard,
337
+ {
338
+ callExtId: msg.call_ext_id,
339
+ senderName: msg.sender_ext_id ? senderName(msg.sender_ext_id) : null,
340
+ latest: latestCallCards.has(msg.external_id),
341
+ name: senderName,
342
+ time: formatTime(msg.created_at)
343
+ }
344
+ )
345
+ ] }, msg.external_id);
346
+ }
347
+ return renderItem(item, i);
348
+ }),
349
+ view === "all" && /* @__PURE__ */ jsxRuntime.jsx(ProvisionalSpeakers, { ids: provisionalSpeakers })
350
+ ] });
351
+ }
22
352
  function StartCallButton(props) {
23
353
  const enabled = react.useCallsEnabled();
24
354
  const canHost = react.useCanHostCalls();
@@ -58,6 +388,22 @@ function EnabledStartCallButton({
58
388
  /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: text }) })
59
389
  ] });
60
390
  }
391
+ function DmCallButton({ peer }) {
392
+ const arbi = react.useArbi();
393
+ const name = react.userDisplayName(peer);
394
+ return /* @__PURE__ */ jsxRuntime.jsx(
395
+ StartCallButton,
396
+ {
397
+ onStart: () => react.startDmCall(arbi, {
398
+ external_id: peer.external_id,
399
+ encryption_public_key: peer.encryption_public_key ?? null,
400
+ name
401
+ }),
402
+ label: `Call ${name}`,
403
+ testId: "dm-call-button"
404
+ }
405
+ );
406
+ }
61
407
  var INVITE_LINK_HINT = "will get an invitation to create an ARBI account and join";
62
408
  var NO_KEY_REASON = "Cannot receive encrypted calls yet";
63
409
  var NO_EMAIL_REASON = "No e-mail address to send a link to";
@@ -482,48 +828,6 @@ function CallPeoplePicker({
482
828
  ] })
483
829
  ] }) });
484
830
  }
485
- function ThreadCallButton({
486
- conversationId
487
- }) {
488
- const arbi = react.useArbi();
489
- const { data: conversations } = chunkEKSHUNJI_cjs.useConnectedConversations();
490
- const { workspaceId: workspaceExtId } = chunkNNBL3HPG_cjs.useConnectedWorkspace();
491
- const liveCallId = react.useCallSession((s) => react.threadLiveCallId(s, conversationId));
492
- const isLive = liveCallId !== null;
493
- const canHost = react.useCanHostCalls();
494
- const [picking, setPicking] = react$1.useState(false);
495
- const conversation = conversations.find((c) => c.external_id === conversationId);
496
- if (!conversation?.is_shared) return null;
497
- const title = conversation.title ?? null;
498
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
499
- /* @__PURE__ */ jsxRuntime.jsx(
500
- StartCallButton,
501
- {
502
- onStart: async () => {
503
- if (liveCallId && !canHost) return react.openCall(arbi, { callExtId: liveCallId });
504
- if (isLive) return react.startThreadCall(arbi, { threadExtId: conversationId, title, ring: [] });
505
- setPicking(true);
506
- return true;
507
- },
508
- isLive,
509
- label: "Call thread members",
510
- testId: "thread-call-button"
511
- }
512
- ),
513
- picking && /* @__PURE__ */ jsxRuntime.jsx(
514
- CallPeoplePicker,
515
- {
516
- open: true,
517
- onOpenChange: setPicking,
518
- scope: "workspace",
519
- workspaceExtId,
520
- onSubmit: async ({ ring }) => {
521
- await react.startThreadCall(arbi, { threadExtId: conversationId, title, ring });
522
- }
523
- }
524
- )
525
- ] });
526
- }
527
831
  function GroupCallButton({
528
832
  chatExtId,
529
833
  title,
@@ -564,549 +868,245 @@ function GroupCallButton({
564
868
  }
565
869
  }
566
870
  )
567
- ] });
568
- }
569
- function DmCallButton({ peer }) {
570
- const arbi = react.useArbi();
571
- const name = react.userDisplayName(peer);
572
- return /* @__PURE__ */ jsxRuntime.jsx(
573
- StartCallButton,
574
- {
575
- onStart: () => react.startDmCall(arbi, {
576
- external_id: peer.external_id,
577
- encryption_public_key: peer.encryption_public_key ?? null,
578
- name
579
- }),
580
- label: `Call ${name}`,
581
- testId: "dm-call-button"
582
- }
583
- );
584
- }
585
- function NewCallChip() {
586
- return react.useCanHostCalls() ? /* @__PURE__ */ jsxRuntime.jsx(EnabledNewCallChip, {}) : null;
587
- }
588
- function EnabledNewCallChip() {
589
- const arbi = react.useArbi();
590
- const inCall = react.useCallSession((s) => s.active !== null);
591
- const [open, setOpen] = react$1.useState(false);
592
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
593
- /* @__PURE__ */ jsxRuntime.jsx(
594
- chunkMOIZ2R5X_cjs.DmInviteChip,
595
- {
596
- testId: "dm-new-call-chip",
597
- title: "New call",
598
- description: inCall ? "You are already in a call" : "Call people from your contacts",
599
- onClick: () => !inCall && setOpen(true)
600
- }
601
- ),
602
- open && /* @__PURE__ */ jsxRuntime.jsx(
603
- CallPeoplePicker,
604
- {
605
- open: true,
606
- onOpenChange: setOpen,
607
- scope: "contacts",
608
- onSubmit: async ({ ring, invites }) => {
609
- await react.startContactsCall(arbi, {
610
- title: chunkI7CJDF3V_cjs.contactsCallTitle([
611
- ...ring.map((u) => ui.getUserDisplayName(u)),
612
- ...invites.map((g) => g.name)
613
- ]),
614
- ring,
615
- invites
616
- });
617
- }
618
- }
619
- )
620
- ] });
621
- }
622
- function ScheduleCallButton({
623
- conversationId,
624
- peer,
625
- variant = "icon",
626
- className
627
- }) {
628
- const callsEnabled = react.useCanHostCalls();
629
- const { conversations } = react.useConversationItems();
630
- const { data: workspaces = [] } = react.useWorkspaces();
631
- const { workspaceId: selectedWorkspaceId, userId: me } = chunkNNBL3HPG_cjs.useConnectedWorkspace();
632
- const { openCalendar } = chunkWGWP4ATS_cjs.useBlocksEnvironment();
633
- if (!callsEnabled) return null;
634
- const open = () => {
635
- const conversation = conversationId ? conversations?.find((c) => c.external_id === conversationId) : void 0;
636
- let people = [];
637
- if (peer) people = [peer];
638
- else if (conversation?.is_shared) {
639
- const workspace = workspaces.find((w) => w.external_id === selectedWorkspaceId);
640
- people = (workspace?.users ?? []).map((wu) => wu.user);
641
- }
642
- chunkWGWP4ATS_cjs.requestCalendarComposer({
643
- title: peer ? `Call with ${ui.getUserDisplayName(peer) || peer.email}` : conversation?.title ?? "",
644
- conversationId: conversationId ?? null,
645
- attendees: people.filter((u) => !ui.isAgent(u) && u.external_id !== me).map((u) => ({
646
- email: u.email,
647
- user_id: u.external_id,
648
- name: ui.getUserDisplayName(u) || null
649
- })),
650
- addCall: true
651
- });
652
- openCalendar();
653
- };
654
- return /* @__PURE__ */ jsxRuntime.jsxs(
655
- ui.Button,
656
- {
657
- type: "button",
658
- variant: "ghost",
659
- size: variant === "icon" ? "icon" : "sm",
660
- className: ui.cn(variant === "icon" && "size-8", className),
661
- onClick: open,
662
- "aria-label": "Schedule call",
663
- title: "Schedule call",
664
- "data-testid": "schedule-call-button",
665
- children: [
666
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CalendarPlus, { className: "size-4" }),
667
- variant === "label" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: "Schedule call" })
668
- ]
669
- }
670
- );
671
- }
672
- function useMeetingThreadMessages(meetingCallExtId, messageHistory) {
673
- const hasRecTranscript = react$1.useMemo(
674
- () => !!meetingCallExtId && react.hasRecordingTranscript(messageHistory, react.threadTranscriptRef),
675
- [meetingCallExtId, messageHistory]
676
- );
677
- const recordingWindows = react.useRecordingWindows(meetingCallExtId, hasRecTranscript);
678
- return react$1.useMemo(
679
- () => hasRecTranscript ? react.supersedeLiveTranscript(messageHistory, react.threadTranscriptRef, recordingWindows) : messageHistory,
680
- [hasRecTranscript, messageHistory, recordingWindows]
681
- );
682
- }
683
- function MeetingThreadTranscriptAction({
684
- conversationExtId,
685
- meetingCallExtId,
686
- title,
687
- messages
688
- }) {
689
- const { data: call } = react.useCall(meetingCallExtId);
690
- const { data: workspaceUsers = [] } = react.useWorkspaceUsers();
691
- const lines = react$1.useMemo(
692
- () => react.threadTranscriptLines(messages, (id) => {
693
- const user = workspaceUsers.find((wu) => wu.user.external_id === id)?.user;
694
- return user ? ui.getUserDisplayName(user) : null;
695
- }),
696
- [messages, workspaceUsers]
697
- );
698
- if (!meetingCallExtId || !call?.is_creator) return null;
699
- return /* @__PURE__ */ jsxRuntime.jsx(
700
- chunk5AC52BHL_cjs.SaveTranscriptToThread,
701
- {
702
- title,
703
- lines,
704
- excludeConversationExtId: conversationExtId,
705
- iconOnly: true
706
- }
707
- );
708
- }
709
- function MeetingThreadRecordingsAction({
710
- meetingCallExtId,
711
- title
712
- }) {
713
- const [open, setOpen] = react$1.useState(false);
714
- const pending = chunkZT5MIFLC_cjs.usePendingRecording();
715
- react$1.useEffect(() => {
716
- if (pending) setOpen(true);
717
- }, [pending]);
718
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
719
- /* @__PURE__ */ jsxRuntime.jsx(
720
- chunkI7CJDF3V_cjs.HeaderAction,
721
- {
722
- label: "Recordings",
723
- icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Disc, { className: "size-3.5", "aria-hidden": true }),
724
- iconOnly: true,
725
- onClick: () => setOpen(true),
726
- testId: "meeting-recordings"
727
- }
728
- ),
729
- open && /* @__PURE__ */ jsxRuntime.jsx(ui.Dialog, { open: true, onOpenChange: (o) => !o && setOpen(false), children: /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogContent, { className: "sm:max-w-2xl", "data-testid": "meeting-recordings-dialog", children: [
730
- /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogHeader, { children: [
731
- /* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: "Recordings" }),
732
- /* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: "Recordings of this meeting, encrypted under the workspace key. Playing or downloading one decrypts it in this browser." })
733
- ] }),
734
- /* @__PURE__ */ jsxRuntime.jsx(
735
- chunk5AC52BHL_cjs.RecordingsList,
736
- {
737
- callExtId: meetingCallExtId,
738
- title,
739
- className: "max-h-[60vh] overflow-y-auto"
740
- }
741
- )
742
- ] }) })
743
- ] });
744
- }
745
- function ConnectedConversationCallActions() {
746
- const conversationId = react.useArbiSessionState((state) => state.conversationId);
747
- const { conversations } = react.useConversationItems();
748
- const conversation = conversationId ? conversations.find((c) => c.external_id === conversationId) : void 0;
749
- const meetingCallExtId = conversation?.meeting_call_ext_id ?? null;
750
- const { messageHistory } = react.useConversationData();
751
- const threadMessages = useMeetingThreadMessages(meetingCallExtId, messageHistory);
752
- const meetingMessages = react$1.useMemo(
753
- () => meetingCallExtId ? threadMessages.map((m) => ({
754
- content: m.content,
755
- created_at: m.created_at,
756
- tools: m.tools ?? m.meta?.tools
757
- })) : [],
758
- [meetingCallExtId, threadMessages]
759
- );
760
- if (!conversationId) return null;
871
+ ] });
872
+ }
873
+ function NewCallChip() {
874
+ return react.useCanHostCalls() ? /* @__PURE__ */ jsxRuntime.jsx(EnabledNewCallChip, {}) : null;
875
+ }
876
+ function EnabledNewCallChip() {
877
+ const arbi = react.useArbi();
878
+ const inCall = react.useCallSession((s) => s.active !== null);
879
+ const [open, setOpen] = react$1.useState(false);
761
880
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
762
- /* @__PURE__ */ jsxRuntime.jsx(ThreadCallButton, { conversationId }),
763
- /* @__PURE__ */ jsxRuntime.jsx(ScheduleCallButton, { conversationId }),
764
- meetingCallExtId && /* @__PURE__ */ jsxRuntime.jsx(
765
- MeetingThreadTranscriptAction,
881
+ /* @__PURE__ */ jsxRuntime.jsx(
882
+ chunkMOIZ2R5X_cjs.DmInviteChip,
766
883
  {
767
- conversationExtId: conversationId,
768
- meetingCallExtId,
769
- title: conversation?.title,
770
- messages: meetingMessages
884
+ testId: "dm-new-call-chip",
885
+ title: "New call",
886
+ description: inCall ? "You are already in a call" : "Call people from your contacts",
887
+ onClick: () => !inCall && setOpen(true)
771
888
  }
772
889
  ),
773
- meetingCallExtId && /* @__PURE__ */ jsxRuntime.jsx(
774
- MeetingThreadRecordingsAction,
890
+ open && /* @__PURE__ */ jsxRuntime.jsx(
891
+ CallPeoplePicker,
775
892
  {
776
- meetingCallExtId,
777
- title: conversation?.title
893
+ open: true,
894
+ onOpenChange: setOpen,
895
+ scope: "contacts",
896
+ onSubmit: async ({ ring, invites }) => {
897
+ await react.startContactsCall(arbi, {
898
+ title: chunkUHMP6S7M_cjs.contactsCallTitle([
899
+ ...ring.map((u) => ui.getUserDisplayName(u)),
900
+ ...invites.map((g) => g.name)
901
+ ]),
902
+ ring,
903
+ invites
904
+ });
905
+ }
778
906
  }
779
907
  )
780
908
  ] });
781
909
  }
782
- function ChatCallCard({
783
- callExtId,
784
- senderName,
785
- latest,
786
- name,
787
- time
910
+ function ScheduleCallButton({
911
+ conversationId,
912
+ peer,
913
+ variant = "icon",
914
+ className
788
915
  }) {
789
- const arbi = react.useArbi();
790
- const { data: call } = react.useCall(latest ? callExtId : null);
791
- const liveNow = react.useCallSession((s) => callExtId in s.liveCalls);
792
- const inThisCall = react.useCallSession((s) => s.active?.callExtId === callExtId);
793
- const inAnotherCall = react.useCallSession((s) => !!s.active && s.active.callExtId !== callExtId);
794
- const [busy, setBusy] = react$1.useState(false);
795
- const live = latest && chunkI7CJDF3V_cjs.isCallLive(call, liveNow);
796
- let summary;
797
- if (live) summary = senderName ? `${senderName} started a call` : "Call in progress";
798
- else if (latest && call?.started_at && call.ended_at) {
799
- const seconds = (Date.parse(call.ended_at) - Date.parse(call.started_at)) / 1e3;
800
- const joined = (call.last_participants ?? []).map(name);
801
- summary = [
802
- "Call",
803
- chunkI7CJDF3V_cjs.formatCallDuration(seconds),
804
- joined.length ? `joined ${joined.join(", ")}` : null
805
- ].filter(Boolean).join(" \xB7 ");
806
- } else summary = senderName ? `Call started by ${senderName}` : "Call";
916
+ const callsEnabled = react.useCanHostCalls();
917
+ const { conversations } = react.useConversationItems();
918
+ const { data: workspaces = [] } = react.useWorkspaces();
919
+ const { workspaceId: selectedWorkspaceId, userId: me } = chunkNNBL3HPG_cjs.useConnectedWorkspace();
920
+ const { openCalendar } = chunkWGWP4ATS_cjs.useBlocksEnvironment();
921
+ if (!callsEnabled) return null;
922
+ const open = () => {
923
+ const conversation = conversationId ? conversations?.find((c) => c.external_id === conversationId) : void 0;
924
+ let people = [];
925
+ if (peer) people = [peer];
926
+ else if (conversation?.is_shared) {
927
+ const workspace = workspaces.find((w) => w.external_id === selectedWorkspaceId);
928
+ people = (workspace?.users ?? []).map((wu) => wu.user);
929
+ }
930
+ chunkWGWP4ATS_cjs.requestCalendarComposer({
931
+ title: peer ? `Call with ${ui.getUserDisplayName(peer) || peer.email}` : conversation?.title ?? "",
932
+ conversationId: conversationId ?? null,
933
+ attendees: people.filter((u) => !ui.isAgent(u) && u.external_id !== me).map((u) => ({
934
+ email: u.email,
935
+ user_id: u.external_id,
936
+ name: ui.getUserDisplayName(u) || null
937
+ })),
938
+ addCall: true
939
+ });
940
+ openCalendar();
941
+ };
807
942
  return /* @__PURE__ */ jsxRuntime.jsxs(
808
- "div",
943
+ ui.Button,
809
944
  {
810
- className: "mx-auto my-2 flex w-fit max-w-full flex-wrap items-center justify-center gap-2 rounded-md border border-border bg-card px-3 py-2 text-xs",
811
- "data-testid": "chat-call-card",
812
- "data-live": live || void 0,
945
+ type: "button",
946
+ variant: "ghost",
947
+ size: variant === "icon" ? "icon" : "sm",
948
+ className: ui.cn(variant === "icon" && "size-8", className),
949
+ onClick: open,
950
+ "aria-label": "Schedule call",
951
+ title: "Schedule call",
952
+ "data-testid": "schedule-call-button",
813
953
  children: [
814
- live ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Phone, { className: "size-4 animate-pulse text-green-text", "aria-hidden": true }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PhoneOff, { className: "size-4 text-muted-foreground", "aria-hidden": true }),
815
- /* @__PURE__ */ jsxRuntime.jsx("span", { "data-testid": "chat-call-card-summary", children: summary }),
816
- time && /* @__PURE__ */ jsxRuntime.jsx("time", { className: "text-muted-foreground", children: time }),
817
- live && /* @__PURE__ */ jsxRuntime.jsx(
818
- ui.Button,
819
- {
820
- type: "button",
821
- size: "sm",
822
- className: "h-7 bg-green-600 text-white hover:bg-green-700",
823
- disabled: busy || inThisCall || inAnotherCall,
824
- title: inAnotherCall ? "You are already in a call" : void 0,
825
- onClick: () => {
826
- setBusy(true);
827
- void react.openCall(arbi, { callExtId }).finally(() => setBusy(false));
828
- },
829
- "data-testid": "chat-call-card-join",
830
- children: inThisCall ? "In call" : "Join"
831
- }
832
- )
954
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CalendarPlus, { className: "size-4" }),
955
+ variant === "label" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1.5", children: "Schedule call" })
833
956
  ]
834
957
  }
835
958
  );
836
959
  }
837
- function useCallPersonName(identity, fallbackName) {
838
- const arbi = react.useArbi();
839
- const { byId } = react.usePeople();
840
- const me = arbi.isLoggedIn && arbi.user.identity()?.externalId === identity;
841
- const profile = me ? arbi.user.profile() : null;
842
- return react$1.useMemo(() => {
843
- if (profile)
844
- return ui.getUserDisplayName({ given_name: profile.givenName, family_name: profile.familyName });
845
- const user = byId(identity);
846
- if (user) return ui.getUserDisplayName(user);
847
- return (fallbackName || identity).trim().split(/\s+/).join(" ");
848
- }, [profile, byId, identity, fallbackName]);
849
- }
850
- function CallConversationEmpty({ callExtId }) {
851
- const { inCall, transcribing } = chunkOAIOOVFN_cjs.useMyCallStatus(callExtId);
852
- const live = react.useCallSession((s) => !!s.liveCalls[callExtId]) || inCall;
853
- if (!live) {
854
- return /* @__PURE__ */ jsxRuntime.jsx(
855
- chunkZW6FPIFC_cjs.EmptyState,
856
- {
857
- icon: lucideReact.AudioLines,
858
- title: "No transcript",
859
- description: "This call was not transcribed. When a call here is transcribed, what people say appears in this conversation.",
860
- className: "mx-auto my-8 max-w-xl",
861
- testId: "call-conversation-empty"
862
- }
863
- );
864
- }
865
- return /* @__PURE__ */ jsxRuntime.jsx(
866
- chunkZW6FPIFC_cjs.EmptyState,
867
- {
868
- icon: transcribing ? lucideReact.Captions : lucideReact.CaptionsOff,
869
- title: "Call in progress \u2014 the transcript will appear here",
870
- description: transcribing ? "Transcription is on: what people say shows up here as they speak." : "Transcription is off. The host can turn it on with CC in the call.",
871
- className: "mx-auto my-8 max-w-xl",
872
- testId: "call-conversation-empty"
873
- }
874
- );
875
- }
876
- function ProvisionalRow({ identity }) {
877
- const name = useCallPersonName(identity);
878
- return /* @__PURE__ */ jsxRuntime.jsx(
879
- chunkZBP4ZSAJ_cjs.ProvisionalTranscriptLine,
880
- {
881
- speakerId: identity,
882
- speakerName: name,
883
- speaker: /* @__PURE__ */ jsxRuntime.jsx(chunkI7CJDF3V_cjs.CallUserPill, { identity })
884
- }
885
- );
886
- }
887
- function ProvisionalSpeakers({ ids }) {
888
- if (!ids.length) return null;
889
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-2", "data-testid": "transcript-provisional-rows", children: ids.map((id) => /* @__PURE__ */ jsxRuntime.jsx(ProvisionalRow, { identity: id }, id)) });
890
- }
891
- var LINE_WAIT_MS = 1e4;
892
- var MIN_SPEECH_MS = 800;
893
- function useProvisionalSpeakers(callExtId, lines) {
894
- const { inCall, transcribing } = chunkOAIOOVFN_cjs.useMyCallStatus(callExtId);
895
- const speaking = chunkOAIOOVFN_cjs.useSpeakingIds();
896
- const pending = react$1.useRef(/* @__PURE__ */ new Map());
897
- const [, tick] = react$1.useState(0);
898
- const active = inCall && transcribing;
899
- const now = Date.now();
900
- if (active) {
901
- for (const id of speaking) {
902
- const p = pending.current.get(id);
903
- if (p) p.lastHeardAt = now;
904
- else pending.current.set(id, { startedAt: now, lastHeardAt: now });
905
- }
906
- } else if (pending.current.size) {
907
- pending.current.clear();
908
- }
909
- const latest = react$1.useMemo(() => {
910
- const m = /* @__PURE__ */ new Map();
911
- for (const l of lines) m.set(l.speakerId, Math.max(m.get(l.speakerId) ?? 0, l.at));
912
- return m;
913
- }, [lines]);
914
- for (const [id, p] of [...pending.current]) {
915
- const arrived = (latest.get(id) ?? 0) >= p.startedAt - 3e3;
916
- const stale = !speaking.includes(id) && now - p.lastHeardAt > LINE_WAIT_MS;
917
- if (arrived && !speaking.includes(id) || stale) pending.current.delete(id);
918
- else if (arrived) p.startedAt = now;
919
- }
920
- const waiting = pending.current.size > 0;
921
- react$1.useEffect(() => {
922
- if (!waiting) return;
923
- const id = setInterval(() => tick((n) => n + 1), 1e3);
924
- return () => clearInterval(id);
925
- }, [waiting]);
926
- return [...pending.current].filter(([, p]) => p.lastHeardAt - p.startedAt >= MIN_SPEECH_MS).map(([id]) => id);
927
- }
928
- var { isTranscriptMessage, parseTranscriptContent } = browser.chats;
929
- function ConnectedCallChatHistory({
930
- chat,
931
- messages,
932
- items,
933
- renderItem,
934
- loadOlder,
935
- memberById,
936
- senderName,
937
- myExtId,
938
- formatTime,
939
- formatDay
940
- }) {
941
- const arbi = react.useArbi();
942
- const [view, setView] = react$1.useState("all");
943
- react$1.useEffect(() => setView("all"), [chat?.external_id]);
944
- const recordingsCallExtId = chat?.call_ext_id ?? null;
945
- const pendingRecording = chunkZT5MIFLC_cjs.usePendingRecording();
946
- react$1.useEffect(() => {
947
- if (pendingRecording && recordingsCallExtId) setView("recordings");
948
- }, [pendingRecording, recordingsCallExtId]);
949
- const latestCallCards = react$1.useMemo(() => {
950
- const latest = /* @__PURE__ */ new Map();
951
- for (const m of messages)
952
- if (m.kind === "call" && m.call_ext_id && !m.deleted) latest.set(m.call_ext_id, m.external_id);
953
- return new Set(latest.values());
954
- }, [messages]);
960
+ function useMeetingThreadMessages(meetingCallExtId, messageHistory) {
955
961
  const hasRecTranscript = react$1.useMemo(
956
- () => react.hasRecordingTranscript(messages, react.chatTranscriptRef),
957
- [messages]
958
- );
959
- const recordingWindows = react.useRecordingWindows(recordingsCallExtId, hasRecTranscript);
960
- const supersededTranscript = react$1.useMemo(
961
- () => react.supersededTranscriptLines(messages, react.chatTranscriptRef, recordingWindows),
962
- [messages, recordingWindows]
963
- );
964
- const transcriptMessages = react$1.useMemo(
965
- () => react.sortTranscriptMessages(
966
- messages.filter((m) => isTranscriptMessage(m) && !m.deleted && !supersededTranscript.has(m))
967
- ),
968
- [messages, supersededTranscript]
962
+ () => !!meetingCallExtId && react.hasRecordingTranscript(messageHistory, react.threadTranscriptRef),
963
+ [meetingCallExtId, messageHistory]
969
964
  );
970
- const hasTranscript = transcriptMessages.length > 0;
971
- const { data: meetingCall } = react.useCall(hasTranscript ? chat?.call_ext_id : null);
972
- const isHost = !!meetingCall?.is_creator;
973
- const [meetingTitle, setMeetingTitle] = react$1.useState(null);
974
- react$1.useEffect(() => {
975
- if (!chat || !isHost && !recordingsCallExtId) return;
976
- let cancelled = false;
977
- arbi.chats.title(chat).then((t) => !cancelled && setMeetingTitle(t)).catch(() => void 0);
978
- return () => {
979
- cancelled = true;
980
- };
981
- }, [arbi, isHost, chat, recordingsCallExtId]);
982
- const transcriptSpeaker = (msg) => {
983
- const parsed = msg.decryptFailed ? null : parseTranscriptContent(msg.content);
984
- return { parsed, speakerId: parsed?.speaker_identity || msg.sender_ext_id || "" };
985
- };
986
- const transcriptExport = react$1.useMemo(
987
- () => transcriptMessages.filter((m) => !m.decryptFailed).map((m) => {
988
- const parsed = parseTranscriptContent(m.content);
989
- const speakerId = parsed?.speaker_identity || m.sender_ext_id || "";
990
- return {
991
- speaker: parsed?.speaker_name || (memberById(speakerId) ? senderName(speakerId) : "") || "Former member",
992
- at: parsed?.started_at ?? m.created_at,
993
- text: parsed?.text ?? m.content ?? ""
994
- };
995
- }),
996
- [transcriptMessages, memberById, senderName]
965
+ const recordingWindows = react.useRecordingWindows(meetingCallExtId, hasRecTranscript);
966
+ return react$1.useMemo(
967
+ () => hasRecTranscript ? react.supersedeLiveTranscript(messageHistory, react.threadTranscriptRef, recordingWindows) : messageHistory,
968
+ [hasRecTranscript, messageHistory, recordingWindows]
997
969
  );
998
- const transcriptLayout = react$1.useMemo(() => {
999
- const shown = view === "transcript" ? transcriptMessages : messages;
1000
- const continued = chunkZBP4ZSAJ_cjs.transcriptRuns(
1001
- shown,
1002
- (m) => isTranscriptMessage(m) && !supersededTranscript.has(m) ? transcriptSpeaker(m).speakerId : null,
1003
- (m) => Date.parse(transcriptSpeaker(m).parsed?.started_at ?? m.created_at ?? "") || 0
1004
- );
1005
- return { continued };
1006
- }, [view, messages, transcriptMessages, supersededTranscript]);
1007
- const transcriptEntry = (msg) => {
1008
- const { parsed, speakerId } = transcriptSpeaker(msg);
1009
- return /* @__PURE__ */ jsxRuntime.jsx(
1010
- chunkSCLGUHLU_cjs.TranscriptEntry,
970
+ }
971
+ function ThreadCallButton({
972
+ conversationId
973
+ }) {
974
+ const arbi = react.useArbi();
975
+ const { data: conversations } = chunkEKSHUNJI_cjs.useConnectedConversations();
976
+ const { workspaceId: workspaceExtId } = chunkNNBL3HPG_cjs.useConnectedWorkspace();
977
+ const liveCallId = react.useCallSession((s) => react.threadLiveCallId(s, conversationId));
978
+ const isLive = liveCallId !== null;
979
+ const canHost = react.useCanHostCalls();
980
+ const [picking, setPicking] = react$1.useState(false);
981
+ const conversation = conversations.find((c) => c.external_id === conversationId);
982
+ if (!conversation?.is_shared) return null;
983
+ const title = conversation.title ?? null;
984
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
985
+ /* @__PURE__ */ jsxRuntime.jsx(
986
+ StartCallButton,
1011
987
  {
1012
- speakerId,
1013
- speakerName: speakerId === myExtId ? "Me" : parsed?.speaker_name || (memberById(speakerId) ? senderName(speakerId) : senderName(msg.sender_ext_id)),
1014
- text: parsed?.text ?? msg.content ?? "",
1015
- at: parsed?.started_at ?? msg.created_at,
1016
- continued: transcriptLayout.continued.has(msg)
1017
- },
1018
- msg.external_id
1019
- );
1020
- };
1021
- const chatLines = react$1.useMemo(
1022
- () => transcriptMessages.map((m) => {
1023
- const { parsed, speakerId } = transcriptSpeaker(m);
1024
- return { speakerId, at: Date.parse(parsed?.started_at ?? m.created_at ?? "") || 0 };
988
+ onStart: async () => {
989
+ if (liveCallId && !canHost) return react.openCall(arbi, { callExtId: liveCallId });
990
+ if (isLive) return react.startThreadCall(arbi, { threadExtId: conversationId, title, ring: [] });
991
+ setPicking(true);
992
+ return true;
993
+ },
994
+ isLive,
995
+ label: "Call thread members",
996
+ testId: "thread-call-button"
997
+ }
998
+ ),
999
+ picking && /* @__PURE__ */ jsxRuntime.jsx(
1000
+ CallPeoplePicker,
1001
+ {
1002
+ open: true,
1003
+ onOpenChange: setPicking,
1004
+ scope: "workspace",
1005
+ workspaceExtId,
1006
+ onSubmit: async ({ ring }) => {
1007
+ await react.startThreadCall(arbi, { threadExtId: conversationId, title, ring });
1008
+ }
1009
+ }
1010
+ )
1011
+ ] });
1012
+ }
1013
+ function MeetingThreadTranscriptAction({
1014
+ conversationExtId,
1015
+ meetingCallExtId,
1016
+ title,
1017
+ messages
1018
+ }) {
1019
+ const { data: call } = react.useCall(meetingCallExtId);
1020
+ const { data: workspaceUsers = [] } = react.useWorkspaceUsers();
1021
+ const lines = react$1.useMemo(
1022
+ () => react.threadTranscriptLines(messages, (id) => {
1023
+ const user = workspaceUsers.find((wu) => wu.user.external_id === id)?.user;
1024
+ return user ? ui.getUserDisplayName(user) : null;
1025
1025
  }),
1026
- [transcriptMessages]
1026
+ [messages, workspaceUsers]
1027
1027
  );
1028
- const provisionalSpeakers = useProvisionalSpeakers(recordingsCallExtId, chatLines);
1029
- const filterOptions = [
1030
- { value: "all", label: "All" },
1031
- { value: "chat", label: "Chat", testId: "chat-filter" },
1028
+ if (!meetingCallExtId || !call?.is_creator) return null;
1029
+ return /* @__PURE__ */ jsxRuntime.jsx(
1030
+ chunkDYPFNQTQ_cjs.SaveTranscriptToThread,
1032
1031
  {
1033
- value: "transcript",
1034
- label: "Transcript",
1035
- count: transcriptMessages.length,
1036
- testId: "transcript-filter"
1037
- },
1038
- ...recordingsCallExtId ? [{ value: "recordings", label: "Recordings", testId: "recordings-filter" }] : []
1039
- ];
1032
+ title,
1033
+ lines,
1034
+ excludeConversationExtId: conversationExtId,
1035
+ iconOnly: true
1036
+ }
1037
+ );
1038
+ }
1039
+ function MeetingThreadRecordingsAction({
1040
+ meetingCallExtId,
1041
+ title
1042
+ }) {
1043
+ const [open, setOpen] = react$1.useState(false);
1044
+ const pending = chunkZT5MIFLC_cjs.usePendingRecording();
1045
+ react$1.useEffect(() => {
1046
+ if (pending) setOpen(true);
1047
+ }, [pending]);
1040
1048
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1041
- messages.length === 0 && recordingsCallExtId && /* @__PURE__ */ jsxRuntime.jsx(CallConversationEmpty, { callExtId: recordingsCallExtId }),
1042
- (hasTranscript || recordingsCallExtId) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-0 z-10 flex justify-center py-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1043
- chunkZBP4ZSAJ_cjs.ConversationFilter,
1049
+ /* @__PURE__ */ jsxRuntime.jsx(
1050
+ chunkUHMP6S7M_cjs.HeaderAction,
1044
1051
  {
1045
- value: view,
1046
- options: filterOptions,
1047
- onChange: setView
1052
+ label: "Recordings",
1053
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Disc, { className: "size-3.5", "aria-hidden": true }),
1054
+ iconOnly: true,
1055
+ onClick: () => setOpen(true),
1056
+ testId: "meeting-recordings"
1048
1057
  }
1049
- ) }),
1050
- view === "recordings" && recordingsCallExtId && /* @__PURE__ */ jsxRuntime.jsx(chunk5AC52BHL_cjs.RecordingsList, { callExtId: recordingsCallExtId, title: meetingTitle, className: "py-1" }),
1051
- loadOlder,
1052
- view === "transcript" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col py-1", "data-testid": "transcript-view", children: [
1053
- isHost && /* @__PURE__ */ jsxRuntime.jsx(
1054
- chunk5AC52BHL_cjs.SaveTranscriptToThread,
1058
+ ),
1059
+ open && /* @__PURE__ */ jsxRuntime.jsx(ui.Dialog, { open: true, onOpenChange: (o) => !o && setOpen(false), children: /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogContent, { className: "sm:max-w-2xl", "data-testid": "meeting-recordings-dialog", children: [
1060
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogHeader, { children: [
1061
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: "Recordings" }),
1062
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: "Recordings of this meeting, encrypted under the workspace key. Playing or downloading one decrypts it in this browser." })
1063
+ ] }),
1064
+ /* @__PURE__ */ jsxRuntime.jsx(
1065
+ chunkDYPFNQTQ_cjs.RecordingsList,
1055
1066
  {
1056
- title: meetingTitle,
1057
- lines: transcriptExport,
1058
- className: "mx-3 mb-2 self-start"
1067
+ callExtId: meetingCallExtId,
1068
+ title,
1069
+ className: "max-h-[60vh] overflow-y-auto"
1059
1070
  }
1060
- ),
1061
- transcriptMessages.map((msg) => transcriptEntry(msg)),
1062
- /* @__PURE__ */ jsxRuntime.jsx(ProvisionalSpeakers, { ids: provisionalSpeakers })
1063
- ] }),
1064
- (view === "all" || view === "chat") && items.map((item, i) => {
1065
- const { message: msg, isFirstOfDay } = item;
1066
- const deleted = !!msg.deleted;
1067
- if (deleted && isTranscriptMessage(msg)) return null;
1068
- const separator = isFirstOfDay && /* @__PURE__ */ jsxRuntime.jsx(react.DateSeparator, { children: formatDay(msg.created_at) });
1069
- if (isTranscriptMessage(msg)) {
1070
- if (view === "chat") return null;
1071
- const superseded = supersededTranscript.has(msg);
1072
- if (superseded && !isFirstOfDay) return null;
1073
- return /* @__PURE__ */ jsxRuntime.jsxs(react$1.Fragment, { children: [
1074
- separator,
1075
- !superseded && transcriptEntry(msg)
1076
- ] }, msg.external_id);
1077
- }
1078
- if (msg.kind === "recording" && msg.call_ext_id && !deleted) {
1079
- return /* @__PURE__ */ jsxRuntime.jsxs(react$1.Fragment, { children: [
1080
- separator,
1081
- /* @__PURE__ */ jsxRuntime.jsx(
1082
- chunk5AC52BHL_cjs.RecordingCard,
1083
- {
1084
- callExtId: msg.call_ext_id,
1085
- recordingExtId: msg.recording_ext_id ?? null,
1086
- title: meetingTitle,
1087
- time: formatTime(msg.created_at)
1088
- }
1089
- )
1090
- ] }, msg.external_id);
1071
+ )
1072
+ ] }) })
1073
+ ] });
1074
+ }
1075
+ function ConnectedConversationCallActions() {
1076
+ const conversationId = react.useArbiSessionState((state) => state.conversationId);
1077
+ const { conversations } = react.useConversationItems();
1078
+ const conversation = conversationId ? conversations.find((c) => c.external_id === conversationId) : void 0;
1079
+ const meetingCallExtId = conversation?.meeting_call_ext_id ?? null;
1080
+ const { messageHistory } = react.useConversationData();
1081
+ const threadMessages = useMeetingThreadMessages(meetingCallExtId, messageHistory);
1082
+ const meetingMessages = react$1.useMemo(
1083
+ () => meetingCallExtId ? threadMessages.map((m) => ({
1084
+ content: m.content,
1085
+ created_at: m.created_at,
1086
+ tools: m.tools ?? m.meta?.tools
1087
+ })) : [],
1088
+ [meetingCallExtId, threadMessages]
1089
+ );
1090
+ if (!conversationId) return null;
1091
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1092
+ /* @__PURE__ */ jsxRuntime.jsx(ThreadCallButton, { conversationId }),
1093
+ /* @__PURE__ */ jsxRuntime.jsx(ScheduleCallButton, { conversationId }),
1094
+ meetingCallExtId && /* @__PURE__ */ jsxRuntime.jsx(
1095
+ MeetingThreadTranscriptAction,
1096
+ {
1097
+ conversationExtId: conversationId,
1098
+ meetingCallExtId,
1099
+ title: conversation?.title,
1100
+ messages: meetingMessages
1091
1101
  }
1092
- if (msg.kind === "call" && msg.call_ext_id && !deleted) {
1093
- return /* @__PURE__ */ jsxRuntime.jsxs(react$1.Fragment, { children: [
1094
- separator,
1095
- /* @__PURE__ */ jsxRuntime.jsx(
1096
- ChatCallCard,
1097
- {
1098
- callExtId: msg.call_ext_id,
1099
- senderName: msg.sender_ext_id ? senderName(msg.sender_ext_id) : null,
1100
- latest: latestCallCards.has(msg.external_id),
1101
- name: senderName,
1102
- time: formatTime(msg.created_at)
1103
- }
1104
- )
1105
- ] }, msg.external_id);
1102
+ ),
1103
+ meetingCallExtId && /* @__PURE__ */ jsxRuntime.jsx(
1104
+ MeetingThreadRecordingsAction,
1105
+ {
1106
+ meetingCallExtId,
1107
+ title: conversation?.title
1106
1108
  }
1107
- return renderItem(item, i);
1108
- }),
1109
- view === "all" && /* @__PURE__ */ jsxRuntime.jsx(ProvisionalSpeakers, { ids: provisionalSpeakers })
1109
+ )
1110
1110
  ] });
1111
1111
  }
1112
1112
 
@@ -1131,5 +1131,5 @@ exports.matchesQuery = matchesQuery;
1131
1131
  exports.useCallPersonName = useCallPersonName;
1132
1132
  exports.useMeetingThreadMessages = useMeetingThreadMessages;
1133
1133
  exports.useProvisionalSpeakers = useProvisionalSpeakers;
1134
- //# sourceMappingURL=chunk-GX75YCWJ.cjs.map
1135
- //# sourceMappingURL=chunk-GX75YCWJ.cjs.map
1134
+ //# sourceMappingURL=chunk-SQUOXOY3.cjs.map
1135
+ //# sourceMappingURL=chunk-SQUOXOY3.cjs.map