@arbidocs/blocks 0.5.120 → 0.5.122

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 (417) hide show
  1. package/dist/ClippingMediaViewer-IEIBT74X.cjs +156 -0
  2. package/dist/ClippingMediaViewer-IEIBT74X.cjs.map +1 -0
  3. package/dist/ClippingPdfViewer-OGYLMVCE.cjs +79 -0
  4. package/dist/ClippingPdfViewer-OGYLMVCE.cjs.map +1 -0
  5. package/dist/{ConnectedCallDock-WER7R222.cjs → ConnectedCallDock-XJOYVVAH.cjs} +9 -7
  6. package/dist/ConnectedCallDock-XJOYVVAH.cjs.map +1 -0
  7. package/dist/{ConnectedCallRoom-T7OBQTYP.cjs → ConnectedCallRoom-CUDYAPQK.cjs} +9 -7
  8. package/dist/{ConnectedCallRoom-T7OBQTYP.cjs.map → ConnectedCallRoom-CUDYAPQK.cjs.map} +1 -1
  9. package/dist/{ConnectedNativeDocxComparison-SGE4R3M4.cjs → ConnectedNativeDocxComparison-QKHCYD6W.cjs} +7 -7
  10. package/dist/{ConnectedNativeDocxComparison-SGE4R3M4.cjs.map → ConnectedNativeDocxComparison-QKHCYD6W.cjs.map} +1 -1
  11. package/dist/ConnectedPresentation-AU25OW25.cjs +321 -0
  12. package/dist/ConnectedPresentation-AU25OW25.cjs.map +1 -0
  13. package/dist/ConnectedSlidesTab-I75LKKN7.cjs +236 -0
  14. package/dist/ConnectedSlidesTab-I75LKKN7.cjs.map +1 -0
  15. package/dist/{ConnectedStreamedWordArtifact-6MCLJRIT.cjs → ConnectedStreamedWordArtifact-AG62232A.cjs} +7 -7
  16. package/dist/{ConnectedStreamedWordArtifact-6MCLJRIT.cjs.map → ConnectedStreamedWordArtifact-AG62232A.cjs.map} +1 -1
  17. package/dist/{DocumentReviewCard-BPIAJJED.cjs → DocumentReviewCard-M53XFLI2.cjs} +15 -14
  18. package/dist/DocumentReviewCard-M53XFLI2.cjs.map +1 -0
  19. package/dist/{FilesViewerDialog-67WK3TZC.cjs → FilesViewerDialog-4352KIOG.cjs} +30 -22
  20. package/dist/FilesViewerDialog-4352KIOG.cjs.map +1 -0
  21. package/dist/{GridViewImpl-ZMJJWTOM.cjs → GridViewImpl-LTYET77Q.cjs} +3 -3
  22. package/dist/GridViewImpl-LTYET77Q.cjs.map +1 -0
  23. package/dist/{WorkspaceTableView-J3C6VH4T.cjs → WorkspaceTableView-3XYAV4BV.cjs} +9 -8
  24. package/dist/WorkspaceTableView-3XYAV4BV.cjs.map +1 -0
  25. package/dist/agents/index.cjs +186 -186
  26. package/dist/{ai-IM4A23YT.cjs → ai-IEIR7SC2.cjs} +17 -15
  27. package/dist/ai-IEIR7SC2.cjs.map +1 -0
  28. package/dist/calls/connected/CallControls.d.ts +2 -0
  29. package/dist/calls/connected/CallControls.js +71 -9
  30. package/dist/calls/connected/CallControls.js.map +2 -2
  31. package/dist/calls/connected/ShareDocumentDialog.d.ts +14 -0
  32. package/dist/calls/connected/ShareDocumentDialog.js +77 -0
  33. package/dist/calls/connected/ShareDocumentDialog.js.map +7 -0
  34. package/dist/calls/index.cjs +2 -2
  35. package/dist/chat/index.cjs +8 -7
  36. package/dist/{chunk-557MJ4IH.cjs → chunk-2F57IO7S.cjs} +9 -146
  37. package/dist/chunk-2F57IO7S.cjs.map +1 -0
  38. package/dist/chunk-2RLA6QO2.cjs +174 -0
  39. package/dist/chunk-2RLA6QO2.cjs.map +1 -0
  40. package/dist/chunk-4TTX6ZNS.cjs +1374 -0
  41. package/dist/chunk-4TTX6ZNS.cjs.map +1 -0
  42. package/dist/chunk-5GCCUXMT.cjs +63 -0
  43. package/dist/chunk-5GCCUXMT.cjs.map +1 -0
  44. package/dist/{chunk-BUVIBHFU.cjs → chunk-5QERK4PK.cjs} +38 -38
  45. package/dist/chunk-5QERK4PK.cjs.map +1 -0
  46. package/dist/chunk-6OK7ESTL.cjs +134 -0
  47. package/dist/chunk-6OK7ESTL.cjs.map +1 -0
  48. package/dist/{chunk-ECLUFKYR.cjs → chunk-7557LDAN.cjs} +4 -4
  49. package/dist/{chunk-ECLUFKYR.cjs.map → chunk-7557LDAN.cjs.map} +1 -1
  50. package/dist/{chunk-KTQOGT2L.cjs → chunk-7L4X6QN2.cjs} +7 -7
  51. package/dist/{chunk-KTQOGT2L.cjs.map → chunk-7L4X6QN2.cjs.map} +1 -1
  52. package/dist/{chunk-BP3IJ34D.cjs → chunk-7NLO7ASW.cjs} +4 -4
  53. package/dist/{chunk-BP3IJ34D.cjs.map → chunk-7NLO7ASW.cjs.map} +1 -1
  54. package/dist/{chunk-3GWWOYGS.cjs → chunk-7PN3YENO.cjs} +4 -4
  55. package/dist/{chunk-3GWWOYGS.cjs.map → chunk-7PN3YENO.cjs.map} +1 -1
  56. package/dist/{chunk-DFBDQKGE.cjs → chunk-ADDQKZ5I.cjs} +4 -4
  57. package/dist/{chunk-DFBDQKGE.cjs.map → chunk-ADDQKZ5I.cjs.map} +1 -1
  58. package/dist/chunk-AFQTQC7A.cjs +35 -0
  59. package/dist/chunk-AFQTQC7A.cjs.map +1 -0
  60. package/dist/{chunk-NLSWDP42.cjs → chunk-ALK3PUUB.cjs} +21 -11
  61. package/dist/chunk-ALK3PUUB.cjs.map +1 -0
  62. package/dist/{chunk-775S43W7.cjs → chunk-CQQQIZU4.cjs} +8 -8
  63. package/dist/{chunk-775S43W7.cjs.map → chunk-CQQQIZU4.cjs.map} +1 -1
  64. package/dist/{chunk-TDO5UWXF.cjs → chunk-E3L5DB5F.cjs} +5 -5
  65. package/dist/{chunk-TDO5UWXF.cjs.map → chunk-E3L5DB5F.cjs.map} +1 -1
  66. package/dist/chunk-GFUOCGY6.cjs +32 -0
  67. package/dist/chunk-GFUOCGY6.cjs.map +1 -0
  68. package/dist/chunk-HYUKPHCT.cjs +66 -0
  69. package/dist/chunk-HYUKPHCT.cjs.map +1 -0
  70. package/dist/{chunk-QQWHG3KF.cjs → chunk-JJZOL5MG.cjs} +4 -4
  71. package/dist/{chunk-QQWHG3KF.cjs.map → chunk-JJZOL5MG.cjs.map} +1 -1
  72. package/dist/chunk-K4763GD5.cjs +301 -0
  73. package/dist/chunk-K4763GD5.cjs.map +1 -0
  74. package/dist/{chunk-B3LZITVF.cjs → chunk-KA3F6TIH.cjs} +2 -442
  75. package/dist/chunk-KA3F6TIH.cjs.map +1 -0
  76. package/dist/{chunk-PGJYD67F.cjs → chunk-KNGZZC4O.cjs} +7 -6
  77. package/dist/chunk-KNGZZC4O.cjs.map +1 -0
  78. package/dist/{chunk-YYPZOEED.cjs → chunk-LHWOKOMP.cjs} +23 -2
  79. package/dist/chunk-LHWOKOMP.cjs.map +1 -0
  80. package/dist/{chunk-HA66DHW6.cjs → chunk-MLA2BJ2Y.cjs} +28 -28
  81. package/dist/chunk-MLA2BJ2Y.cjs.map +1 -0
  82. package/dist/{chunk-CPR6EHG7.cjs → chunk-NG2EE7HR.cjs} +134 -10
  83. package/dist/chunk-NG2EE7HR.cjs.map +1 -0
  84. package/dist/{chunk-CKCG4NDB.cjs → chunk-OHHKBURG.cjs} +29 -29
  85. package/dist/chunk-OHHKBURG.cjs.map +1 -0
  86. package/dist/{chunk-4XJEHKVZ.cjs → chunk-PIYYBPHH.cjs} +4 -4
  87. package/dist/{chunk-4XJEHKVZ.cjs.map → chunk-PIYYBPHH.cjs.map} +1 -1
  88. package/dist/{chunk-YYSBWMDJ.cjs → chunk-QG2U2JGX.cjs} +4 -4
  89. package/dist/{chunk-YYSBWMDJ.cjs.map → chunk-QG2U2JGX.cjs.map} +1 -1
  90. package/dist/{chunk-5IZFSAEZ.cjs → chunk-SDRYSLOX.cjs} +4 -4
  91. package/dist/{chunk-5IZFSAEZ.cjs.map → chunk-SDRYSLOX.cjs.map} +1 -1
  92. package/dist/{chunk-NJCK6V6U.cjs → chunk-T73BHNQX.cjs} +2 -58
  93. package/dist/chunk-T73BHNQX.cjs.map +1 -0
  94. package/dist/{chunk-EOG6OT5I.cjs → chunk-TXP2N3DC.cjs} +4 -4
  95. package/dist/{chunk-EOG6OT5I.cjs.map → chunk-TXP2N3DC.cjs.map} +1 -1
  96. package/dist/{chunk-6UTKM5AB.cjs → chunk-UFT22LAB.cjs} +75 -75
  97. package/dist/chunk-UFT22LAB.cjs.map +1 -0
  98. package/dist/chunk-USNTRL22.cjs +4790 -0
  99. package/dist/chunk-USNTRL22.cjs.map +1 -0
  100. package/dist/{chunk-X36UR4A7.cjs → chunk-UTJ223TI.cjs} +413 -90
  101. package/dist/chunk-UTJ223TI.cjs.map +1 -0
  102. package/dist/{chunk-VZCPMXWC.cjs → chunk-V6MW7B4B.cjs} +4 -4
  103. package/dist/{chunk-VZCPMXWC.cjs.map → chunk-V6MW7B4B.cjs.map} +1 -1
  104. package/dist/{chunk-T23UTIRI.cjs → chunk-VWBYE3XY.cjs} +5 -5
  105. package/dist/{chunk-T23UTIRI.cjs.map → chunk-VWBYE3XY.cjs.map} +1 -1
  106. package/dist/chunk-WFMWKPGY.cjs +102 -0
  107. package/dist/chunk-WFMWKPGY.cjs.map +1 -0
  108. package/dist/chunk-WOOOMTTA.cjs +19 -0
  109. package/dist/chunk-WOOOMTTA.cjs.map +1 -0
  110. package/dist/{chunk-W6INT5GS.cjs → chunk-WRLGLZIA.cjs} +8 -8
  111. package/dist/{chunk-W6INT5GS.cjs.map → chunk-WRLGLZIA.cjs.map} +1 -1
  112. package/dist/{chunk-CJYWHUZR.cjs → chunk-XCKHOXRP.cjs} +4 -4
  113. package/dist/{chunk-CJYWHUZR.cjs.map → chunk-XCKHOXRP.cjs.map} +1 -1
  114. package/dist/chunk-XF355M7O.cjs +154 -0
  115. package/dist/chunk-XF355M7O.cjs.map +1 -0
  116. package/dist/{chunk-Q6CLWOP2.cjs → chunk-XGM4VVNV.cjs} +34 -34
  117. package/dist/{chunk-Q6CLWOP2.cjs.map → chunk-XGM4VVNV.cjs.map} +1 -1
  118. package/dist/{chunk-6WMMZLEV.cjs → chunk-XJEXFEWG.cjs} +2 -27
  119. package/dist/chunk-XJEXFEWG.cjs.map +1 -0
  120. package/dist/chunk-XK4TVJKD.cjs +73 -0
  121. package/dist/chunk-XK4TVJKD.cjs.map +1 -0
  122. package/dist/{chunk-E7TE2WVT.cjs → chunk-ZVEW3JBT.cjs} +3 -3
  123. package/dist/{chunk-E7TE2WVT.cjs.map → chunk-ZVEW3JBT.cjs.map} +1 -1
  124. package/dist/collaboration/index.cjs +70 -70
  125. package/dist/components/ZoomSlider.d.ts +25 -0
  126. package/dist/components/ZoomSlider.js +59 -0
  127. package/dist/components/ZoomSlider.js.map +7 -0
  128. package/dist/connect/docx.cjs +10 -10
  129. package/dist/connect/index.cjs +1066 -1147
  130. package/dist/connect/index.cjs.map +1 -1
  131. package/dist/connect/viewer.cjs +19 -12
  132. package/dist/connection/ai.d.ts +1 -1
  133. package/dist/connection/conversation/ConnectedMessage.js +1 -1
  134. package/dist/connection/conversation/ConnectedMessage.js.map +2 -2
  135. package/dist/connection/files/ConnectedNewFileMenu.d.ts +2 -1
  136. package/dist/connection/files/ConnectedNewFileMenu.js +9 -3
  137. package/dist/connection/files/ConnectedNewFileMenu.js.map +2 -2
  138. package/dist/connection/files/explorer/ConnectedFilesExplorer.js +1 -1
  139. package/dist/connection/files/explorer/ConnectedFilesExplorer.js.map +2 -2
  140. package/dist/connection/files/explorer/FileTiles.js +1 -1
  141. package/dist/connection/files/explorer/FileTiles.js.map +2 -2
  142. package/dist/connection/files/fields/documentField.js +1 -1
  143. package/dist/connection/files/fields/documentField.js.map +2 -2
  144. package/dist/connection/files/grid/documentColumns.js +1 -1
  145. package/dist/connection/files/grid/documentColumns.js.map +2 -2
  146. package/dist/connection/files/page/DocumentsFilterBarActions.js +17 -28
  147. package/dist/connection/files/page/DocumentsFilterBarActions.js.map +2 -2
  148. package/dist/connection/mail/useMailboxDefaults.js +1 -1
  149. package/dist/connection/mail/useMailboxDefaults.js.map +2 -2
  150. package/dist/connection/panels/useSessionPanelMode.js +3 -2
  151. package/dist/connection/panels/useSessionPanelMode.js.map +2 -2
  152. package/dist/connection/presentation/ClippingMediaViewer.d.ts +12 -0
  153. package/dist/connection/presentation/ClippingMediaViewer.js +153 -0
  154. package/dist/connection/presentation/ClippingMediaViewer.js.map +7 -0
  155. package/dist/connection/presentation/ClippingPdfViewer.d.ts +22 -0
  156. package/dist/connection/presentation/ClippingPdfViewer.js +75 -0
  157. package/dist/connection/presentation/ClippingPdfViewer.js.map +7 -0
  158. package/dist/connection/presentation/ConnectedPresentation.d.ts +12 -0
  159. package/dist/connection/presentation/ConnectedPresentation.js +100 -0
  160. package/dist/connection/presentation/ConnectedPresentation.js.map +7 -0
  161. package/dist/connection/presentation/ConnectedSlidesTab.d.ts +20 -0
  162. package/dist/connection/presentation/ConnectedSlidesTab.js +222 -0
  163. package/dist/connection/presentation/ConnectedSlidesTab.js.map +7 -0
  164. package/dist/connection/presentation/CropClipDialog.d.ts +11 -0
  165. package/dist/connection/presentation/CropClipDialog.js +86 -0
  166. package/dist/connection/presentation/CropClipDialog.js.map +7 -0
  167. package/dist/connection/presentation/GenerateTile.d.ts +4 -0
  168. package/dist/connection/presentation/GenerateTile.js +24 -0
  169. package/dist/connection/presentation/GenerateTile.js.map +7 -0
  170. package/dist/connection/presentation/LabelColumnMenu.d.ts +8 -0
  171. package/dist/connection/presentation/LabelColumnMenu.js +38 -0
  172. package/dist/connection/presentation/LabelColumnMenu.js.map +7 -0
  173. package/dist/connection/presentation/PresentationDialogs.d.ts +39 -0
  174. package/dist/connection/presentation/PresentationDialogs.js +295 -0
  175. package/dist/connection/presentation/PresentationDialogs.js.map +7 -0
  176. package/dist/connection/presentation/PresentationFileCard.d.ts +10 -0
  177. package/dist/connection/presentation/PresentationFileCard.js +35 -0
  178. package/dist/connection/presentation/PresentationFileCard.js.map +7 -0
  179. package/dist/connection/presentation/PresentationPill.d.ts +8 -0
  180. package/dist/connection/presentation/PresentationPill.js +39 -0
  181. package/dist/connection/presentation/PresentationPill.js.map +7 -0
  182. package/dist/connection/presentation/PresentationSlot.d.ts +7 -0
  183. package/dist/connection/presentation/PresentationSlot.js +35 -0
  184. package/dist/connection/presentation/PresentationSlot.js.map +7 -0
  185. package/dist/connection/presentation/requests.d.ts +21 -0
  186. package/dist/connection/presentation/requests.js +27 -0
  187. package/dist/connection/presentation/requests.js.map +7 -0
  188. package/dist/connection/presentation/useImageGeneration.d.ts +11 -0
  189. package/dist/connection/presentation/useImageGeneration.js +66 -0
  190. package/dist/connection/presentation/useImageGeneration.js.map +7 -0
  191. package/dist/connection/presentation/useLabelColumns.d.ts +15 -0
  192. package/dist/connection/presentation/useLabelColumns.js +33 -0
  193. package/dist/connection/presentation/useLabelColumns.js.map +7 -0
  194. package/dist/connection/presentation/usePresentationController.d.ts +15 -0
  195. package/dist/connection/presentation/usePresentationController.js +118 -0
  196. package/dist/connection/presentation/usePresentationController.js.map +7 -0
  197. package/dist/connection/presentation/usePresentationFiles.d.ts +44 -0
  198. package/dist/connection/presentation/usePresentationFiles.js +307 -0
  199. package/dist/connection/presentation/usePresentationFiles.js.map +7 -0
  200. package/dist/connection/presentation/useViewerClipping.d.ts +14 -0
  201. package/dist/connection/presentation/useViewerClipping.js +18 -0
  202. package/dist/connection/presentation/useViewerClipping.js.map +7 -0
  203. package/dist/connection/shell/ConnectedAppShell.js +5 -1
  204. package/dist/connection/shell/ConnectedAppShell.js.map +2 -2
  205. package/dist/connection/viewer/CleanViewControl.d.ts +8 -0
  206. package/dist/connection/viewer/CleanViewControl.js +76 -0
  207. package/dist/connection/viewer/CleanViewControl.js.map +7 -0
  208. package/dist/connection/viewer/ConnectedDocumentViewer.js +28 -29
  209. package/dist/connection/viewer/ConnectedDocumentViewer.js.map +2 -2
  210. package/dist/connection/viewer/ViewerCropModal.d.ts +5 -0
  211. package/dist/connection/viewer/ViewerCropModal.js +22 -0
  212. package/dist/connection/viewer/ViewerCropModal.js.map +7 -0
  213. package/dist/connection/viewer/ViewerPdfPane.d.ts +3 -1
  214. package/dist/connection/viewer/ViewerPdfPane.js +41 -1
  215. package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
  216. package/dist/connection/viewer/documentPlace.d.ts +5 -4
  217. package/dist/connection/viewer/documentPlace.js +2 -2
  218. package/dist/connection/viewer/documentPlace.js.map +2 -2
  219. package/dist/connection/viewer/drafts.js +6 -4
  220. package/dist/connection/viewer/drafts.js.map +2 -2
  221. package/dist/connection/viewer/pdf/PdfClipOutlines.d.ts +11 -0
  222. package/dist/connection/viewer/pdf/PdfClipOutlines.js +42 -0
  223. package/dist/connection/viewer/pdf/PdfClipOutlines.js.map +7 -0
  224. package/dist/connection/viewer/pdf/clipOutlines.d.ts +17 -0
  225. package/dist/connection/viewer/pdf/clipOutlines.js +24 -0
  226. package/dist/connection/viewer/pdf/clipOutlines.js.map +7 -0
  227. package/dist/connection/viewer/pdf/passageHighlights.d.ts +2 -0
  228. package/dist/connection/viewer/pdf/passageHighlights.js +12 -1
  229. package/dist/connection/viewer/pdf/passageHighlights.js.map +2 -2
  230. package/dist/connection/viewer/pdf/usePdfClipOutlines.d.ts +7 -0
  231. package/dist/connection/viewer/pdf/usePdfClipOutlines.js +36 -0
  232. package/dist/connection/viewer/pdf/usePdfClipOutlines.js.map +7 -0
  233. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js +11 -2
  234. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js.map +2 -2
  235. package/dist/connection/viewer/shareDocument.d.ts +11 -0
  236. package/dist/connection/viewer/shareDocument.js +11 -0
  237. package/dist/connection/viewer/shareDocument.js.map +7 -0
  238. package/dist/connection/viewer/slidesTabChunk.d.ts +2 -0
  239. package/dist/connection/viewer/slidesTabChunk.js +9 -0
  240. package/dist/connection/viewer/slidesTabChunk.js.map +7 -0
  241. package/dist/connection/viewer/useCleanView.d.ts +14 -0
  242. package/dist/connection/viewer/useCleanView.js +29 -0
  243. package/dist/connection/viewer/useCleanView.js.map +7 -0
  244. package/dist/connection/viewer/useViewedDocument.d.ts +1 -0
  245. package/dist/connection/viewer/useViewedDocument.js +9 -1
  246. package/dist/connection/viewer/useViewedDocument.js.map +2 -2
  247. package/dist/connection/viewer/useViewerTabs.js +18 -4
  248. package/dist/connection/viewer/useViewerTabs.js.map +2 -2
  249. package/dist/connection/workflows/ConnectedWorkflowStart.d.ts +14 -2
  250. package/dist/connection/workflows/ConnectedWorkflowStart.js +5 -2
  251. package/dist/connection/workflows/ConnectedWorkflowStart.js.map +2 -2
  252. package/dist/databases/index.cjs +49 -49
  253. package/dist/document-tools/DocumentToolButtons.d.ts +2 -0
  254. package/dist/document-tools/DocumentToolButtons.js +22 -1
  255. package/dist/document-tools/DocumentToolButtons.js.map +2 -2
  256. package/dist/document-tools/index.cjs +16 -12
  257. package/dist/document-tools/index.d.ts +1 -1
  258. package/dist/document-tools/index.js +2 -0
  259. package/dist/document-tools/index.js.map +2 -2
  260. package/dist/embed/index.cjs +17 -15
  261. package/dist/files/GridViewImpl.js +1 -1
  262. package/dist/files/GridViewImpl.js.map +2 -2
  263. package/dist/files/ViewerChrome.d.ts +5 -1
  264. package/dist/files/ViewerChrome.js +16 -6
  265. package/dist/files/ViewerChrome.js.map +2 -2
  266. package/dist/files/index.cjs +224 -224
  267. package/dist/files/navigator/DocumentSearchList.js +1 -1
  268. package/dist/files/navigator/DocumentSearchList.js.map +2 -2
  269. package/dist/index.cjs +359 -356
  270. package/dist/index.cjs.map +1 -1
  271. package/dist/presentation/BoxActionBar.d.ts +11 -0
  272. package/dist/presentation/BoxActionBar.js +182 -0
  273. package/dist/presentation/BoxActionBar.js.map +7 -0
  274. package/dist/presentation/ClipActionBar.d.ts +26 -0
  275. package/dist/presentation/ClipActionBar.js +103 -0
  276. package/dist/presentation/ClipActionBar.js.map +7 -0
  277. package/dist/presentation/ClipCaptureOverlay.d.ts +14 -0
  278. package/dist/presentation/ClipCaptureOverlay.js +69 -0
  279. package/dist/presentation/ClipCaptureOverlay.js.map +7 -0
  280. package/dist/presentation/ClipImage.d.ts +21 -0
  281. package/dist/presentation/ClipImage.js +119 -0
  282. package/dist/presentation/ClipImage.js.map +7 -0
  283. package/dist/presentation/ClipTray.d.ts +11 -0
  284. package/dist/presentation/ClipTray.js +152 -0
  285. package/dist/presentation/ClipTray.js.map +7 -0
  286. package/dist/presentation/ClipViewControls.d.ts +11 -0
  287. package/dist/presentation/ClipViewControls.js +142 -0
  288. package/dist/presentation/ClipViewControls.js.map +7 -0
  289. package/dist/presentation/DesignMenu.d.ts +8 -0
  290. package/dist/presentation/DesignMenu.js +199 -0
  291. package/dist/presentation/DesignMenu.js.map +7 -0
  292. package/dist/presentation/LayoutMenu.d.ts +17 -0
  293. package/dist/presentation/LayoutMenu.js +122 -0
  294. package/dist/presentation/LayoutMenu.js.map +7 -0
  295. package/dist/presentation/MediaClip.d.ts +15 -0
  296. package/dist/presentation/MediaClip.js +67 -0
  297. package/dist/presentation/MediaClip.js.map +7 -0
  298. package/dist/presentation/Notice.d.ts +6 -0
  299. package/dist/presentation/Notice.js +43 -0
  300. package/dist/presentation/Notice.js.map +7 -0
  301. package/dist/presentation/PresentControls.d.ts +11 -0
  302. package/dist/presentation/PresentControls.js +117 -0
  303. package/dist/presentation/PresentControls.js.map +7 -0
  304. package/dist/presentation/PresentationStage.d.ts +32 -0
  305. package/dist/presentation/PresentationStage.js +232 -0
  306. package/dist/presentation/PresentationStage.js.map +7 -0
  307. package/dist/presentation/PresenterView.d.ts +16 -0
  308. package/dist/presentation/PresenterView.js +100 -0
  309. package/dist/presentation/PresenterView.js.map +7 -0
  310. package/dist/presentation/SlideDecor.d.ts +25 -0
  311. package/dist/presentation/SlideDecor.js +189 -0
  312. package/dist/presentation/SlideDecor.js.map +7 -0
  313. package/dist/presentation/SlidesEditor.d.ts +25 -0
  314. package/dist/presentation/SlidesEditor.js +375 -0
  315. package/dist/presentation/SlidesEditor.js.map +7 -0
  316. package/dist/presentation/StageBox.d.ts +30 -0
  317. package/dist/presentation/StageBox.js +281 -0
  318. package/dist/presentation/StageBox.js.map +7 -0
  319. package/dist/presentation/StageItem.d.ts +37 -0
  320. package/dist/presentation/StageItem.js +211 -0
  321. package/dist/presentation/StageItem.js.map +7 -0
  322. package/dist/presentation/box-style.d.ts +6 -0
  323. package/dist/presentation/box-style.js +19 -0
  324. package/dist/presentation/box-style.js.map +7 -0
  325. package/dist/presentation/boxes.d.ts +105 -0
  326. package/dist/presentation/boxes.js +103 -0
  327. package/dist/presentation/boxes.js.map +7 -0
  328. package/dist/presentation/draw-boxes.d.ts +8 -0
  329. package/dist/presentation/draw-boxes.js +130 -0
  330. package/dist/presentation/draw-boxes.js.map +7 -0
  331. package/dist/presentation/export-boxes.d.ts +10 -0
  332. package/dist/presentation/export-boxes.js +74 -0
  333. package/dist/presentation/export-boxes.js.map +7 -0
  334. package/dist/presentation/export-pptx.d.ts +16 -0
  335. package/dist/presentation/export-pptx.js +194 -0
  336. package/dist/presentation/export-pptx.js.map +7 -0
  337. package/dist/presentation/import-pptx.d.ts +35 -0
  338. package/dist/presentation/import-pptx.js +659 -0
  339. package/dist/presentation/import-pptx.js.map +7 -0
  340. package/dist/presentation/merge-outside-edits.d.ts +12 -0
  341. package/dist/presentation/merge-outside-edits.js +35 -0
  342. package/dist/presentation/merge-outside-edits.js.map +7 -0
  343. package/dist/presentation/model.d.ts +201 -0
  344. package/dist/presentation/model.js +271 -0
  345. package/dist/presentation/model.js.map +7 -0
  346. package/dist/presentation/panel-id.d.ts +44 -0
  347. package/dist/presentation/panel-id.js +29 -0
  348. package/dist/presentation/panel-id.js.map +7 -0
  349. package/dist/presentation/persistence.d.ts +121 -0
  350. package/dist/presentation/persistence.js +141 -0
  351. package/dist/presentation/persistence.js.map +7 -0
  352. package/dist/presentation/pptx-data.d.ts +22 -0
  353. package/dist/presentation/pptx-data.js +83 -0
  354. package/dist/presentation/pptx-data.js.map +7 -0
  355. package/dist/presentation/pptx-xml.d.ts +90 -0
  356. package/dist/presentation/pptx-xml.js +333 -0
  357. package/dist/presentation/pptx-xml.js.map +7 -0
  358. package/dist/presentation/render-slides.d.ts +58 -0
  359. package/dist/presentation/render-slides.js +309 -0
  360. package/dist/presentation/render-slides.js.map +7 -0
  361. package/dist/presentation/saved-boxes.d.ts +11 -0
  362. package/dist/presentation/saved-boxes.js +80 -0
  363. package/dist/presentation/saved-boxes.js.map +7 -0
  364. package/dist/presentation/slide-layout.d.ts +58 -0
  365. package/dist/presentation/slide-layout.js +133 -0
  366. package/dist/presentation/slide-layout.js.map +7 -0
  367. package/dist/presentation/stage-videos.d.ts +5 -0
  368. package/dist/presentation/stage-videos.js +19 -0
  369. package/dist/presentation/stage-videos.js.map +7 -0
  370. package/dist/presentation/store.d.ts +203 -0
  371. package/dist/presentation/store.js +429 -0
  372. package/dist/presentation/store.js.map +7 -0
  373. package/dist/presentation/theme.d.ts +102 -0
  374. package/dist/presentation/theme.js +276 -0
  375. package/dist/presentation/theme.js.map +7 -0
  376. package/dist/presentation/useClipDrag.d.ts +26 -0
  377. package/dist/presentation/useClipDrag.js +65 -0
  378. package/dist/presentation/useClipDrag.js.map +7 -0
  379. package/dist/presentation/useObjectUrl.d.ts +6 -0
  380. package/dist/presentation/useObjectUrl.js +15 -0
  381. package/dist/presentation/useObjectUrl.js.map +7 -0
  382. package/dist/presentation/usePresenterKeys.d.ts +13 -0
  383. package/dist/presentation/usePresenterKeys.js +62 -0
  384. package/dist/presentation/usePresenterKeys.js.map +7 -0
  385. package/dist/settings/index.cjs +149 -148
  386. package/dist/shell/PanelPortal.js +13 -3
  387. package/dist/shell/PanelPortal.js.map +2 -2
  388. package/dist/shell/index.cjs +49 -46
  389. package/dist/shell/panel-windows.d.ts +2 -0
  390. package/dist/shell/panel-windows.js +8 -2
  391. package/dist/shell/panel-windows.js.map +2 -2
  392. package/dist/studio/index.cjs +8 -6
  393. package/dist/studio/index.cjs.map +1 -1
  394. package/dist/styles.css +1 -1
  395. package/dist/workflow-canvas/index.cjs +26 -25
  396. package/dist/workflow-canvas/index.cjs.map +1 -1
  397. package/node_modules/@arbidocs/coedit/package.json +1 -1
  398. package/package.json +6 -5
  399. package/dist/ConnectedCallDock-WER7R222.cjs.map +0 -1
  400. package/dist/DocumentReviewCard-BPIAJJED.cjs.map +0 -1
  401. package/dist/FilesViewerDialog-67WK3TZC.cjs.map +0 -1
  402. package/dist/GridViewImpl-ZMJJWTOM.cjs.map +0 -1
  403. package/dist/WorkspaceTableView-J3C6VH4T.cjs.map +0 -1
  404. package/dist/ai-IM4A23YT.cjs.map +0 -1
  405. package/dist/chunk-557MJ4IH.cjs.map +0 -1
  406. package/dist/chunk-6UTKM5AB.cjs.map +0 -1
  407. package/dist/chunk-6WMMZLEV.cjs.map +0 -1
  408. package/dist/chunk-B3LZITVF.cjs.map +0 -1
  409. package/dist/chunk-BUVIBHFU.cjs.map +0 -1
  410. package/dist/chunk-CKCG4NDB.cjs.map +0 -1
  411. package/dist/chunk-CPR6EHG7.cjs.map +0 -1
  412. package/dist/chunk-HA66DHW6.cjs.map +0 -1
  413. package/dist/chunk-NJCK6V6U.cjs.map +0 -1
  414. package/dist/chunk-NLSWDP42.cjs.map +0 -1
  415. package/dist/chunk-PGJYD67F.cjs.map +0 -1
  416. package/dist/chunk-X36UR4A7.cjs.map +0 -1
  417. package/dist/chunk-YYPZOEED.cjs.map +0 -1
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkKTQOGT2L_cjs = require('./chunk-KTQOGT2L.cjs');
5
- require('./chunk-557MJ4IH.cjs');
6
- require('./chunk-6UTKM5AB.cjs');
4
+ var chunk7L4X6QN2_cjs = require('./chunk-7L4X6QN2.cjs');
5
+ require('./chunk-XF355M7O.cjs');
6
+ require('./chunk-2F57IO7S.cjs');
7
+ require('./chunk-UFT22LAB.cjs');
7
8
  require('./chunk-WAV762GP.cjs');
8
9
  require('./chunk-7JLJH5CW.cjs');
9
10
  require('./chunk-EVZH6Z5O.cjs');
@@ -15,11 +16,12 @@ require('./chunk-VZOOGA47.cjs');
15
16
  require('./chunk-HQDR43JC.cjs');
16
17
  require('./chunk-JR2YSBD5.cjs');
17
18
  require('./chunk-3YZKDCWY.cjs');
18
- require('./chunk-PGJYD67F.cjs');
19
+ require('./chunk-KNGZZC4O.cjs');
19
20
  require('./chunk-IDCD5TEZ.cjs');
20
21
  require('./chunk-M2FOXGJU.cjs');
21
22
  require('./chunk-5F4DCIHS.cjs');
22
- require('./chunk-6WMMZLEV.cjs');
23
+ require('./chunk-AFQTQC7A.cjs');
24
+ require('./chunk-XJEXFEWG.cjs');
23
25
  require('./chunk-YZSQ7F5K.cjs');
24
26
  require('./chunk-MCXS6X37.cjs');
25
27
  require('./chunk-KQF7POTG.cjs');
@@ -40,35 +42,35 @@ require('./chunk-PLIF5CUV.cjs');
40
42
 
41
43
  Object.defineProperty(exports, "ConnectedAssistantDock", {
42
44
  enumerable: true,
43
- get: function () { return chunkKTQOGT2L_cjs.ConnectedAssistantDock; }
45
+ get: function () { return chunk7L4X6QN2_cjs.ConnectedAssistantDock; }
44
46
  });
45
47
  Object.defineProperty(exports, "redlineStats", {
46
48
  enumerable: true,
47
- get: function () { return chunkKTQOGT2L_cjs.redlineStats; }
49
+ get: function () { return chunk7L4X6QN2_cjs.redlineStats; }
48
50
  });
49
51
  Object.defineProperty(exports, "textToArtifact", {
50
52
  enumerable: true,
51
- get: function () { return chunkKTQOGT2L_cjs.textToArtifact; }
53
+ get: function () { return chunk7L4X6QN2_cjs.textToArtifact; }
52
54
  });
53
55
  Object.defineProperty(exports, "toRedlineMarkdown", {
54
56
  enumerable: true,
55
- get: function () { return chunkKTQOGT2L_cjs.toRedlineMarkdown; }
57
+ get: function () { return chunk7L4X6QN2_cjs.toRedlineMarkdown; }
56
58
  });
57
59
  Object.defineProperty(exports, "useConnectedAiTask", {
58
60
  enumerable: true,
59
- get: function () { return chunkKTQOGT2L_cjs.useConnectedAiTask; }
61
+ get: function () { return chunk7L4X6QN2_cjs.useConnectedAiTask; }
60
62
  });
61
63
  Object.defineProperty(exports, "useConnectedChat", {
62
64
  enumerable: true,
63
- get: function () { return chunkKTQOGT2L_cjs.useConnectedChat; }
65
+ get: function () { return chunk7L4X6QN2_cjs.useConnectedChat; }
64
66
  });
65
67
  Object.defineProperty(exports, "useSemanticSearch", {
66
68
  enumerable: true,
67
- get: function () { return chunkKTQOGT2L_cjs.useSemanticSearch; }
69
+ get: function () { return chunk7L4X6QN2_cjs.useSemanticSearch; }
68
70
  });
69
71
  Object.defineProperty(exports, "useWorkspaceDocs", {
70
72
  enumerable: true,
71
- get: function () { return chunkKTQOGT2L_cjs.useWorkspaceDocs; }
73
+ get: function () { return chunk7L4X6QN2_cjs.useWorkspaceDocs; }
72
74
  });
73
- //# sourceMappingURL=ai-IM4A23YT.cjs.map
74
- //# sourceMappingURL=ai-IM4A23YT.cjs.map
75
+ //# sourceMappingURL=ai-IEIR7SC2.cjs.map
76
+ //# sourceMappingURL=ai-IEIR7SC2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"ai-IEIR7SC2.cjs"}
@@ -2,6 +2,8 @@
2
2
  * The call panel's control bar, wired to the LiveKit room. One row; what fits stays in it and the
3
3
  * rest moves into More, so each action lives in exactly one visible place:
4
4
  * full — time · mic, camera | share, CC, Record | More · Leave
5
+ * Share offers the browser's picker (a screen, a window or a tab) or a document of the workspace,
6
+ * opened in a window of its own with the picker, to choose it.
5
7
  * compact — mic, camera | CC, Record | More · Leave
6
8
  * tiny — mic, camera | More · Leave
7
9
  * Chat is the conversation beside the panel (its own composer) and the participant list is
@@ -12,6 +12,7 @@ import {
12
12
  import {
13
13
  Captions,
14
14
  Circle,
15
+ FileText,
15
16
  FlaskConical,
16
17
  Link2,
17
18
  Lock,
@@ -22,7 +23,13 @@ import {
22
23
  Volume2
23
24
  } from "lucide-react";
24
25
  import { classifyMediaError, useArbi, useServerCallsExperimental } from "@arbidocs/react";
25
- import { Button } from "@arbidocs/react/ui";
26
+ import {
27
+ Button,
28
+ DropdownMenu,
29
+ DropdownMenuContent,
30
+ DropdownMenuItem,
31
+ DropdownMenuTrigger
32
+ } from "@arbidocs/react/ui";
26
33
  import {
27
34
  CallControlBar,
28
35
  CallControlButton,
@@ -36,6 +43,8 @@ import {
36
43
  import { TranscriptionToggle } from "./CallTranscription.js";
37
44
  import { RecordingControl } from "./CallRecording.js";
38
45
  import { useMirrorSelfView } from "../self-view.js";
46
+ import { ShareDocumentDialog } from "./ShareDocumentDialog.js";
47
+ const SHARE_LABEL = "Share screen/tab";
39
48
  function reportDeviceError(notify, source) {
40
49
  return (err) => notify(
41
50
  classifyMediaError(err, source === Track.Source.Camera ? "camera" : "microphone"),
@@ -128,6 +137,7 @@ function CallControls({
128
137
  const experimental = useServerCallsExperimental();
129
138
  const [locked, setLocked] = useState(false);
130
139
  const [locking, setLocking] = useState(false);
140
+ const [sharingDocument, setSharingDocument] = useState(false);
131
141
  const full = density === "full";
132
142
  const tiny = density === "tiny";
133
143
  const toggleLock = async () => {
@@ -150,11 +160,20 @@ function CallControls({
150
160
  ...!full ? [
151
161
  {
152
162
  key: "share",
153
- label: share.enabled ? "Stop sharing" : "Share your screen",
163
+ label: share.enabled ? "Stop sharing" : SHARE_LABEL,
154
164
  icon: share.enabled ? /* @__PURE__ */ jsx(MonitorX, {}) : /* @__PURE__ */ jsx(MonitorUp, {}),
155
165
  onSelect: () => void share.toggle(),
156
166
  disabled: share.pending
157
- }
167
+ },
168
+ ...!share.enabled ? [
169
+ {
170
+ key: "share-document",
171
+ label: "Share a document\u2026",
172
+ icon: /* @__PURE__ */ jsx(FileText, {}),
173
+ onSelect: () => setSharingDocument(true),
174
+ testId: "call-share-document"
175
+ }
176
+ ] : []
158
177
  ] : [],
159
178
  ...tiny && tr.available && tr.canToggle ? [
160
179
  {
@@ -235,18 +254,53 @@ function CallControls({
235
254
  !tiny && /* @__PURE__ */ jsxs(Fragment, { children: [
236
255
  /* @__PURE__ */ jsx(ControlDivider, {}),
237
256
  /* @__PURE__ */ jsxs(ControlGroup, { children: [
238
- full && /* @__PURE__ */ jsx(
257
+ full && (share.enabled ? /* @__PURE__ */ jsx(
239
258
  CallControlButton,
240
259
  {
241
- label: share.enabled ? "Stop sharing" : "Share your screen",
242
- tone: share.enabled ? "active" : "neutral",
243
- "aria-pressed": share.enabled,
260
+ label: "Stop sharing",
261
+ tone: "active",
262
+ "aria-pressed": true,
244
263
  disabled: share.pending,
245
264
  onClick: () => void share.toggle(),
246
265
  "data-testid": "call-share-toggle",
247
- children: share.enabled ? /* @__PURE__ */ jsx(MonitorX, { "aria-hidden": true }) : /* @__PURE__ */ jsx(MonitorUp, { "aria-hidden": true })
266
+ children: /* @__PURE__ */ jsx(MonitorX, { "aria-hidden": true })
248
267
  }
249
- ),
268
+ ) : /* @__PURE__ */ jsxs(DropdownMenu, { children: [
269
+ /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
270
+ CallControlButton,
271
+ {
272
+ label: SHARE_LABEL,
273
+ tooltip: false,
274
+ disabled: share.pending,
275
+ "data-testid": "call-share-toggle",
276
+ children: /* @__PURE__ */ jsx(MonitorUp, { "aria-hidden": true })
277
+ }
278
+ ) }),
279
+ /* @__PURE__ */ jsxs(DropdownMenuContent, { side: "top", "data-testid": "call-share-menu", children: [
280
+ /* @__PURE__ */ jsxs(
281
+ DropdownMenuItem,
282
+ {
283
+ onSelect: () => void share.toggle(),
284
+ "data-testid": "call-share-screen",
285
+ children: [
286
+ /* @__PURE__ */ jsx(MonitorUp, {}),
287
+ SHARE_LABEL
288
+ ]
289
+ }
290
+ ),
291
+ /* @__PURE__ */ jsxs(
292
+ DropdownMenuItem,
293
+ {
294
+ onSelect: () => setSharingDocument(true),
295
+ "data-testid": "call-share-document",
296
+ children: [
297
+ /* @__PURE__ */ jsx(FileText, {}),
298
+ "Share a document\u2026"
299
+ ]
300
+ }
301
+ )
302
+ ] })
303
+ ] })),
250
304
  /* @__PURE__ */ jsx(TranscriptionToggle, { transcription: tr }),
251
305
  /* @__PURE__ */ jsx(RecordingControl, { recording })
252
306
  ] })
@@ -267,6 +321,14 @@ function CallControls({
267
321
  ) : void 0,
268
322
  groups: [overflow, callItems, ...menuGroups]
269
323
  }
324
+ ),
325
+ /* @__PURE__ */ jsx(
326
+ ShareDocumentDialog,
327
+ {
328
+ open: sharingDocument,
329
+ onOpenChange: setSharingDocument,
330
+ onShare: () => void share.toggle(true)
331
+ }
270
332
  )
271
333
  ]
272
334
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/calls/connected/CallControls.tsx"],
4
- "sourcesContent": ["/**\n * The call panel's control bar, wired to the LiveKit room. One row; what fits stays in it and the\n * rest moves into More, so each action lives in exactly one visible place:\n * full \u2014 time \u00B7 mic, camera | share, CC, Record | More \u00B7 Leave\n * compact \u2014 mic, camera | CC, Record | More \u00B7 Leave\n * tiny \u2014 mic, camera | More \u00B7 Leave\n * Chat is the conversation beside the panel (its own composer) and the participant list is\n * always on show under the video, so neither has a button here.\n */\n\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useState, type ReactElement } from 'react'\nimport { Track } from 'livekit-client'\nimport {\n useAudioPlayback,\n useMediaDeviceSelect,\n useRoomContext,\n useTrackToggle,\n} from '@livekit/components-react'\nimport {\n Captions,\n Circle,\n FlaskConical,\n Link2,\n Lock,\n LockOpen,\n MonitorUp,\n MonitorX,\n Square,\n Volume2,\n} from 'lucide-react'\nimport { classifyMediaError, useArbi, useServerCallsExperimental } from '@arbidocs/react'\nimport { Button } from '@arbidocs/react/ui'\nimport {\n CallControlBar,\n CallControlButton,\n ControlDivider,\n ControlGroup,\n ElapsedTime,\n LeaveButton,\n MediaControl,\n MoreMenu,\n type LeaveOption,\n type MoreMenuItem,\n type MoreMenuSection,\n} from '../ui'\nimport { TranscriptionToggle } from './CallTranscription'\nimport { RecordingControl } from './CallRecording'\nimport type { CallTranscription, CallRecordingControl } from '@arbidocs/react/calls'\nimport { useMirrorSelfView } from '../self-view'\n\nexport type ControlDensity = 'full' | 'compact' | 'tiny'\n\ntype MediaSource = Track.Source.Microphone | Track.Source.Camera\n\ntype Notify = ReturnType<typeof useBlocksEnvironment>['notify']\n\nfunction reportDeviceError(notify: Notify, source: MediaSource) {\n return (err: Error) =>\n notify(\n classifyMediaError(err, source === Track.Source.Camera ? 'camera' : 'microphone'),\n 'error'\n )\n}\n\n/** Microphone or camera of the room, with its device list (and, for the camera, the mirror). */\nfunction RoomMediaControl({\n source,\n shortcut,\n testId,\n}: {\n source: MediaSource\n shortcut: string\n testId: string\n}): ReactElement {\n const { notify } = useBlocksEnvironment()\n const mic = source === Track.Source.Microphone\n const { toggle, enabled, pending } = useTrackToggle({\n source,\n onDeviceError: reportDeviceError(notify, source),\n })\n const { devices, activeDeviceId, setActiveMediaDevice } = useMediaDeviceSelect({\n kind: mic ? 'audioinput' : 'videoinput',\n })\n const [mirror, setMirror] = useMirrorSelfView()\n return (\n <MediaControl\n kind={mic ? 'microphone' : 'camera'}\n enabled={enabled}\n pending={pending}\n onToggle={() => void toggle()}\n devices={devices.map((d) => ({ deviceId: d.deviceId, label: d.label }))}\n activeDeviceId={activeDeviceId}\n onSelectDevice={(id) =>\n void setActiveMediaDevice(id).catch((err: Error) => reportDeviceError(notify, source)(err))\n }\n shortcut={shortcut}\n testId={testId}\n options={\n mic\n ? []\n : [\n {\n label: 'Mirror my video',\n checked: mirror,\n onChange: setMirror,\n testId: 'call-mirror-toggle',\n },\n ]\n }\n />\n )\n}\n\nfunction useScreenShare() {\n const { notify } = useBlocksEnvironment()\n return useTrackToggle({\n source: Track.Source.ScreenShare,\n captureOptions: { audio: true, selfBrowserSurface: 'exclude' },\n onDeviceError: (err: Error) => {\n // Cancelling the browser's picker is not worth a toast.\n if (err.name !== 'NotAllowedError') notify(`Could not share: ${err.message}`, 'error')\n },\n })\n}\n\n/** \"Enable audio\" when the browser blocked playback until a click (the bar's left end). */\nexport function EnableAudioButton({ compact = false }: { compact?: boolean }): ReactElement | null {\n const { canPlayAudio, startAudio } = useAudioPlayback()\n if (canPlayAudio) return null\n return (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 gap-1.5 border-yellow-border bg-yellow-bg text-yellow-text hover:bg-yellow-bg/80\"\n onClick={() => void startAudio()}\n data-testid=\"call-start-audio\"\n >\n <Volume2 className=\"size-4\" aria-hidden />\n {compact ? 'Audio' : 'Enable audio'}\n </Button>\n )\n}\n\nexport interface CallControlsProps {\n callExtId: string\n isCreator: boolean\n /** Copy-able join link (anyone with it can ask to join). */\n link: string | null\n startedAt: number\n density: ControlDensity\n /** Single-key shortcuts on (the panel is on screen). */\n shortcuts: boolean\n transcription: CallTranscription\n recording: CallRecordingControl\n /** More groups of the More menu (a webinar's chat setting, panel, Leave stage). */\n menuGroups?: (MoreMenuItem[] | MoreMenuSection)[]\n /** Leave's further choices (a webinar's End webinar for everyone). */\n leaveOptions?: LeaveOption[]\n}\n\nexport function CallControls({\n callExtId,\n isCreator,\n link,\n startedAt,\n density,\n shortcuts,\n transcription: tr,\n recording,\n menuGroups = [],\n leaveOptions,\n}: CallControlsProps): ReactElement {\n const { notify } = useBlocksEnvironment()\n const arbi = useArbi()\n const room = useRoomContext()\n const share = useScreenShare()\n const experimental = useServerCallsExperimental()\n const [locked, setLocked] = useState(false)\n const [locking, setLocking] = useState(false)\n const full = density === 'full'\n const tiny = density === 'tiny'\n\n const toggleLock = async () => {\n setLocking(true)\n try {\n const call = await arbi.calls.update(callExtId, { locked: !locked })\n setLocked(call.locked)\n notify(call.locked ? 'Call locked: nobody new can join' : 'Call unlocked', 'info')\n } catch (err) {\n notify(`Could not change the lock: ${(err as Error).message}`, 'error')\n } finally {\n setLocking(false)\n }\n }\n const copyLink = () => {\n if (!link) return\n void navigator.clipboard\n .writeText(link)\n .then(() => notify('Call link copied', 'success'))\n .catch(() => notify('Could not copy the link', 'error'))\n }\n\n // What does not fit the bar lives in More.\n const overflow: MoreMenuItem[] = [\n ...(!full\n ? [\n {\n key: 'share',\n label: share.enabled ? 'Stop sharing' : 'Share your screen',\n icon: share.enabled ? <MonitorX /> : <MonitorUp />,\n onSelect: () => void share.toggle(),\n disabled: share.pending,\n },\n ]\n : []),\n ...(tiny && tr.available && tr.canToggle\n ? [\n {\n key: 'transcribe',\n label: tr.on ? 'Stop transcription' : 'Transcribe the call',\n icon: <Captions />,\n onSelect: () => void tr.toggle(),\n disabled: tr.busy,\n },\n ]\n : []),\n ...(tiny && recording.available && recording.canControl\n ? recording.on\n ? [\n {\n key: 'stop-recording',\n label: 'Stop recording',\n icon: <Square className=\"fill-current text-red-text\" />,\n onSelect: () => void recording.stop(),\n disabled: recording.busy,\n },\n ]\n : [\n {\n key: 'record-audio',\n label: 'Record audio',\n icon: <Circle className=\"fill-red-solid text-red-solid\" />,\n onSelect: () => void recording.requestStart('audio'),\n disabled: recording.busy,\n },\n {\n key: 'record-video',\n label: 'Record audio + video',\n icon: <Circle className=\"fill-red-solid text-red-solid\" />,\n onSelect: () => void recording.requestStart('audio_video'),\n disabled: recording.busy,\n },\n ]\n : []),\n ]\n const callItems: MoreMenuItem[] = [\n ...(link\n ? [\n {\n key: 'link',\n label: 'Copy call link',\n icon: <Link2 />,\n onSelect: copyLink,\n testId: 'call-copy-link',\n },\n ]\n : []),\n ...(isCreator\n ? [\n {\n key: 'lock',\n label: locked ? 'Unlock call' : 'Lock call (only invited people can join)',\n icon: locked ? <LockOpen /> : <Lock />,\n onSelect: () => void toggleLock(),\n disabled: locking,\n testId: 'call-lock-toggle',\n },\n ]\n : []),\n ]\n\n return (\n <CallControlBar\n shortcuts={shortcuts}\n left={\n <>\n {full && <ElapsedTime since={startedAt} title=\"Time in this call\" />}\n <EnableAudioButton compact={!full} />\n </>\n }\n right={\n <LeaveButton\n compact={!full}\n onLeave={() => void room.disconnect()}\n options={leaveOptions}\n />\n }\n >\n <ControlGroup>\n <RoomMediaControl source={Track.Source.Microphone} shortcut=\"M\" testId=\"call-mic-toggle\" />\n <RoomMediaControl source={Track.Source.Camera} shortcut=\"V\" testId=\"call-camera-toggle\" />\n </ControlGroup>\n {!tiny && (\n <>\n <ControlDivider />\n <ControlGroup>\n {full && (\n <CallControlButton\n label={share.enabled ? 'Stop sharing' : 'Share your screen'}\n tone={share.enabled ? 'active' : 'neutral'}\n aria-pressed={share.enabled}\n disabled={share.pending}\n onClick={() => void share.toggle()}\n data-testid=\"call-share-toggle\"\n >\n {share.enabled ? <MonitorX aria-hidden /> : <MonitorUp aria-hidden />}\n </CallControlButton>\n )}\n <TranscriptionToggle transcription={tr} />\n <RecordingControl recording={recording} />\n </ControlGroup>\n </>\n )}\n <MoreMenu\n details={\n experimental ? (\n <span\n className=\"flex items-center gap-1.5 text-xs text-muted-foreground\"\n data-testid=\"calls-experimental-badge\"\n >\n <FlaskConical className=\"size-3.5\" aria-hidden />\n Calls are an experimental feature.\n </span>\n ) : undefined\n }\n groups={[overflow, callItems, ...menuGroups]}\n />\n </CallControlBar>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * The call panel's control bar, wired to the LiveKit room. One row; what fits stays in it and the\n * rest moves into More, so each action lives in exactly one visible place:\n * full \u2014 time \u00B7 mic, camera | share, CC, Record | More \u00B7 Leave\n * Share offers the browser's picker (a screen, a window or a tab) or a document of the workspace,\n * opened in a window of its own with the picker, to choose it.\n * compact \u2014 mic, camera | CC, Record | More \u00B7 Leave\n * tiny \u2014 mic, camera | More \u00B7 Leave\n * Chat is the conversation beside the panel (its own composer) and the participant list is\n * always on show under the video, so neither has a button here.\n */\n\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useState, type ReactElement } from 'react'\nimport { Track } from 'livekit-client'\nimport {\n useAudioPlayback,\n useMediaDeviceSelect,\n useRoomContext,\n useTrackToggle,\n} from '@livekit/components-react'\nimport {\n Captions,\n Circle,\n FileText,\n FlaskConical,\n Link2,\n Lock,\n LockOpen,\n MonitorUp,\n MonitorX,\n Square,\n Volume2,\n} from 'lucide-react'\nimport { classifyMediaError, useArbi, useServerCallsExperimental } from '@arbidocs/react'\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@arbidocs/react/ui'\nimport {\n CallControlBar,\n CallControlButton,\n ControlDivider,\n ControlGroup,\n ElapsedTime,\n LeaveButton,\n MediaControl,\n MoreMenu,\n type LeaveOption,\n type MoreMenuItem,\n type MoreMenuSection,\n} from '../ui'\nimport { TranscriptionToggle } from './CallTranscription'\nimport { RecordingControl } from './CallRecording'\nimport type { CallTranscription, CallRecordingControl } from '@arbidocs/react/calls'\nimport { useMirrorSelfView } from '../self-view'\nimport { ShareDocumentDialog } from './ShareDocumentDialog'\n\nconst SHARE_LABEL = 'Share screen/tab'\n\nexport type ControlDensity = 'full' | 'compact' | 'tiny'\n\ntype MediaSource = Track.Source.Microphone | Track.Source.Camera\n\ntype Notify = ReturnType<typeof useBlocksEnvironment>['notify']\n\nfunction reportDeviceError(notify: Notify, source: MediaSource) {\n return (err: Error) =>\n notify(\n classifyMediaError(err, source === Track.Source.Camera ? 'camera' : 'microphone'),\n 'error'\n )\n}\n\n/** Microphone or camera of the room, with its device list (and, for the camera, the mirror). */\nfunction RoomMediaControl({\n source,\n shortcut,\n testId,\n}: {\n source: MediaSource\n shortcut: string\n testId: string\n}): ReactElement {\n const { notify } = useBlocksEnvironment()\n const mic = source === Track.Source.Microphone\n const { toggle, enabled, pending } = useTrackToggle({\n source,\n onDeviceError: reportDeviceError(notify, source),\n })\n const { devices, activeDeviceId, setActiveMediaDevice } = useMediaDeviceSelect({\n kind: mic ? 'audioinput' : 'videoinput',\n })\n const [mirror, setMirror] = useMirrorSelfView()\n return (\n <MediaControl\n kind={mic ? 'microphone' : 'camera'}\n enabled={enabled}\n pending={pending}\n onToggle={() => void toggle()}\n devices={devices.map((d) => ({ deviceId: d.deviceId, label: d.label }))}\n activeDeviceId={activeDeviceId}\n onSelectDevice={(id) =>\n void setActiveMediaDevice(id).catch((err: Error) => reportDeviceError(notify, source)(err))\n }\n shortcut={shortcut}\n testId={testId}\n options={\n mic\n ? []\n : [\n {\n label: 'Mirror my video',\n checked: mirror,\n onChange: setMirror,\n testId: 'call-mirror-toggle',\n },\n ]\n }\n />\n )\n}\n\nfunction useScreenShare() {\n const { notify } = useBlocksEnvironment()\n return useTrackToggle({\n source: Track.Source.ScreenShare,\n captureOptions: { audio: true, selfBrowserSurface: 'exclude' },\n onDeviceError: (err: Error) => {\n // Cancelling the browser's picker is not worth a toast.\n if (err.name !== 'NotAllowedError') notify(`Could not share: ${err.message}`, 'error')\n },\n })\n}\n\n/** \"Enable audio\" when the browser blocked playback until a click (the bar's left end). */\nexport function EnableAudioButton({ compact = false }: { compact?: boolean }): ReactElement | null {\n const { canPlayAudio, startAudio } = useAudioPlayback()\n if (canPlayAudio) return null\n return (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 gap-1.5 border-yellow-border bg-yellow-bg text-yellow-text hover:bg-yellow-bg/80\"\n onClick={() => void startAudio()}\n data-testid=\"call-start-audio\"\n >\n <Volume2 className=\"size-4\" aria-hidden />\n {compact ? 'Audio' : 'Enable audio'}\n </Button>\n )\n}\n\nexport interface CallControlsProps {\n callExtId: string\n isCreator: boolean\n /** Copy-able join link (anyone with it can ask to join). */\n link: string | null\n startedAt: number\n density: ControlDensity\n /** Single-key shortcuts on (the panel is on screen). */\n shortcuts: boolean\n transcription: CallTranscription\n recording: CallRecordingControl\n /** More groups of the More menu (a webinar's chat setting, panel, Leave stage). */\n menuGroups?: (MoreMenuItem[] | MoreMenuSection)[]\n /** Leave's further choices (a webinar's End webinar for everyone). */\n leaveOptions?: LeaveOption[]\n}\n\nexport function CallControls({\n callExtId,\n isCreator,\n link,\n startedAt,\n density,\n shortcuts,\n transcription: tr,\n recording,\n menuGroups = [],\n leaveOptions,\n}: CallControlsProps): ReactElement {\n const { notify } = useBlocksEnvironment()\n const arbi = useArbi()\n const room = useRoomContext()\n const share = useScreenShare()\n const experimental = useServerCallsExperimental()\n const [locked, setLocked] = useState(false)\n const [locking, setLocking] = useState(false)\n const [sharingDocument, setSharingDocument] = useState(false)\n const full = density === 'full'\n const tiny = density === 'tiny'\n\n const toggleLock = async () => {\n setLocking(true)\n try {\n const call = await arbi.calls.update(callExtId, { locked: !locked })\n setLocked(call.locked)\n notify(call.locked ? 'Call locked: nobody new can join' : 'Call unlocked', 'info')\n } catch (err) {\n notify(`Could not change the lock: ${(err as Error).message}`, 'error')\n } finally {\n setLocking(false)\n }\n }\n const copyLink = () => {\n if (!link) return\n void navigator.clipboard\n .writeText(link)\n .then(() => notify('Call link copied', 'success'))\n .catch(() => notify('Could not copy the link', 'error'))\n }\n\n // What does not fit the bar lives in More.\n const overflow: MoreMenuItem[] = [\n ...(!full\n ? [\n {\n key: 'share',\n label: share.enabled ? 'Stop sharing' : SHARE_LABEL,\n icon: share.enabled ? <MonitorX /> : <MonitorUp />,\n onSelect: () => void share.toggle(),\n disabled: share.pending,\n },\n ...(!share.enabled\n ? [\n {\n key: 'share-document',\n label: 'Share a document\u2026',\n icon: <FileText />,\n onSelect: () => setSharingDocument(true),\n testId: 'call-share-document',\n },\n ]\n : []),\n ]\n : []),\n ...(tiny && tr.available && tr.canToggle\n ? [\n {\n key: 'transcribe',\n label: tr.on ? 'Stop transcription' : 'Transcribe the call',\n icon: <Captions />,\n onSelect: () => void tr.toggle(),\n disabled: tr.busy,\n },\n ]\n : []),\n ...(tiny && recording.available && recording.canControl\n ? recording.on\n ? [\n {\n key: 'stop-recording',\n label: 'Stop recording',\n icon: <Square className=\"fill-current text-red-text\" />,\n onSelect: () => void recording.stop(),\n disabled: recording.busy,\n },\n ]\n : [\n {\n key: 'record-audio',\n label: 'Record audio',\n icon: <Circle className=\"fill-red-solid text-red-solid\" />,\n onSelect: () => void recording.requestStart('audio'),\n disabled: recording.busy,\n },\n {\n key: 'record-video',\n label: 'Record audio + video',\n icon: <Circle className=\"fill-red-solid text-red-solid\" />,\n onSelect: () => void recording.requestStart('audio_video'),\n disabled: recording.busy,\n },\n ]\n : []),\n ]\n const callItems: MoreMenuItem[] = [\n ...(link\n ? [\n {\n key: 'link',\n label: 'Copy call link',\n icon: <Link2 />,\n onSelect: copyLink,\n testId: 'call-copy-link',\n },\n ]\n : []),\n ...(isCreator\n ? [\n {\n key: 'lock',\n label: locked ? 'Unlock call' : 'Lock call (only invited people can join)',\n icon: locked ? <LockOpen /> : <Lock />,\n onSelect: () => void toggleLock(),\n disabled: locking,\n testId: 'call-lock-toggle',\n },\n ]\n : []),\n ]\n\n return (\n <CallControlBar\n shortcuts={shortcuts}\n left={\n <>\n {full && <ElapsedTime since={startedAt} title=\"Time in this call\" />}\n <EnableAudioButton compact={!full} />\n </>\n }\n right={\n <LeaveButton\n compact={!full}\n onLeave={() => void room.disconnect()}\n options={leaveOptions}\n />\n }\n >\n <ControlGroup>\n <RoomMediaControl source={Track.Source.Microphone} shortcut=\"M\" testId=\"call-mic-toggle\" />\n <RoomMediaControl source={Track.Source.Camera} shortcut=\"V\" testId=\"call-camera-toggle\" />\n </ControlGroup>\n {!tiny && (\n <>\n <ControlDivider />\n <ControlGroup>\n {full &&\n (share.enabled ? (\n <CallControlButton\n label=\"Stop sharing\"\n tone=\"active\"\n aria-pressed\n disabled={share.pending}\n onClick={() => void share.toggle()}\n data-testid=\"call-share-toggle\"\n >\n <MonitorX aria-hidden />\n </CallControlButton>\n ) : (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <CallControlButton\n label={SHARE_LABEL}\n tooltip={false}\n disabled={share.pending}\n data-testid=\"call-share-toggle\"\n >\n <MonitorUp aria-hidden />\n </CallControlButton>\n </DropdownMenuTrigger>\n <DropdownMenuContent side=\"top\" data-testid=\"call-share-menu\">\n <DropdownMenuItem\n onSelect={() => void share.toggle()}\n data-testid=\"call-share-screen\"\n >\n <MonitorUp />\n {SHARE_LABEL}\n </DropdownMenuItem>\n <DropdownMenuItem\n onSelect={() => setSharingDocument(true)}\n data-testid=\"call-share-document\"\n >\n <FileText />\n Share a document\u2026\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n ))}\n <TranscriptionToggle transcription={tr} />\n <RecordingControl recording={recording} />\n </ControlGroup>\n </>\n )}\n <MoreMenu\n details={\n experimental ? (\n <span\n className=\"flex items-center gap-1.5 text-xs text-muted-foreground\"\n data-testid=\"calls-experimental-badge\"\n >\n <FlaskConical className=\"size-3.5\" aria-hidden />\n Calls are an experimental feature.\n </span>\n ) : undefined\n }\n groups={[overflow, callItems, ...menuGroups]}\n />\n <ShareDocumentDialog\n open={sharingDocument}\n onOpenChange={setSharingDocument}\n onShare={() => void share.toggle(true)}\n />\n </CallControlBar>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Share a document in the call: pick one of the workspace's documents and, in one click, it opens
3
+ * in a window of its own (a presentation in the presentation window, anything else in a clean
4
+ * viewer: the pages only) and the browser's share dialog opens to choose it. Opening the window
5
+ * spends the click; Chrome shows the share dialog anyway, while a browser that wants a click of its
6
+ * own (Firefox, Safari) refuses it, and the window is then shared with Share screen/tab.
7
+ */
8
+ export interface ShareDocumentDialogProps {
9
+ open: boolean;
10
+ onOpenChange: (open: boolean) => void;
11
+ /** Open the browser's share dialog (the call's screen share), in the same click. */
12
+ onShare: () => void;
13
+ }
14
+ export declare function ShareDocumentDialog({ open, onOpenChange, onShare }: ShareDocumentDialogProps): import("react").JSX.Element;
@@ -0,0 +1,77 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useState } from "react";
4
+ import { MonitorUp } from "lucide-react";
5
+ import { useArbiSessionStore, useDocuments } from "@arbidocs/react";
6
+ import { Button, getDocumentTitle } from "@arbidocs/react/ui";
7
+ import { ModalScaffold } from "../../settings/ModalScaffold.js";
8
+ import { DocumentPicker } from "../../settings/DocumentPicker.js";
9
+ import { useBlocksEnvironment } from "../../provider/environment.js";
10
+ import { openDocumentToShare } from "../../connection/viewer/shareDocument.js";
11
+ function ShareDocumentDialog({ open, onOpenChange, onShare }) {
12
+ const session = useArbiSessionStore();
13
+ const { notify } = useBlocksEnvironment();
14
+ const { data: documents } = useDocuments(void 0, { enabled: open });
15
+ const [picked, setPicked] = useState("");
16
+ const groups = useMemo(() => {
17
+ const docs = (documents ?? []).map((doc) => ({
18
+ id: doc.external_id,
19
+ title: getDocumentTitle(doc, "Untitled"),
20
+ fileName: doc.file_name
21
+ })).sort((a, b) => a.title.localeCompare(b.title));
22
+ return [{ id: "documents", docs }];
23
+ }, [documents]);
24
+ const selected = groups[0].docs.find((doc) => doc.id === picked);
25
+ const share = () => {
26
+ if (!selected) return;
27
+ openDocumentToShare(session, { id: selected.id });
28
+ onShare();
29
+ notify(
30
+ `"${selected.title}" is open in its own window: choose it in the share dialog (or with Share screen/tab).`,
31
+ "info"
32
+ );
33
+ setPicked("");
34
+ onOpenChange(false);
35
+ };
36
+ return /* @__PURE__ */ jsxs(
37
+ ModalScaffold,
38
+ {
39
+ open,
40
+ onOpenChange,
41
+ title: "Share a document",
42
+ description: "It opens in a window of its own showing only its pages, and the share dialog opens for you to choose it.",
43
+ showDescription: true,
44
+ icon: /* @__PURE__ */ jsx(MonitorUp, { className: "size-5" }),
45
+ size: "sm",
46
+ testId: "call-share-document-dialog",
47
+ children: [
48
+ /* @__PURE__ */ jsx(ModalScaffold.Body, { children: /* @__PURE__ */ jsx(
49
+ DocumentPicker,
50
+ {
51
+ groups,
52
+ value: picked,
53
+ onValueChange: setPicked,
54
+ labels: { placeholder: "Choose a document" }
55
+ }
56
+ ) }),
57
+ /* @__PURE__ */ jsxs(ModalScaffold.Footer, { children: [
58
+ /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", onClick: () => onOpenChange(false), children: "Cancel" }),
59
+ /* @__PURE__ */ jsx(
60
+ Button,
61
+ {
62
+ type: "button",
63
+ onClick: share,
64
+ disabled: !selected,
65
+ "data-testid": "call-share-document-open",
66
+ children: "Open and share"
67
+ }
68
+ )
69
+ ] })
70
+ ]
71
+ }
72
+ );
73
+ }
74
+ export {
75
+ ShareDocumentDialog
76
+ };
77
+ //# sourceMappingURL=ShareDocumentDialog.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/calls/connected/ShareDocumentDialog.tsx"],
4
+ "sourcesContent": ["/**\n * Share a document in the call: pick one of the workspace's documents and, in one click, it opens\n * in a window of its own (a presentation in the presentation window, anything else in a clean\n * viewer: the pages only) and the browser's share dialog opens to choose it. Opening the window\n * spends the click; Chrome shows the share dialog anyway, while a browser that wants a click of its\n * own (Firefox, Safari) refuses it, and the window is then shared with Share screen/tab.\n */\n\nimport { useMemo, useState } from 'react'\nimport { MonitorUp } from 'lucide-react'\nimport { useArbiSessionStore, useDocuments } from '@arbidocs/react'\nimport { Button, getDocumentTitle } from '@arbidocs/react/ui'\nimport { ModalScaffold } from '../../settings/ModalScaffold'\nimport { DocumentPicker, type PickerGroup } from '../../settings/DocumentPicker'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { openDocumentToShare } from '../../connection/viewer/shareDocument'\n\nexport interface ShareDocumentDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n /** Open the browser's share dialog (the call's screen share), in the same click. */\n onShare: () => void\n}\n\nexport function ShareDocumentDialog({ open, onOpenChange, onShare }: ShareDocumentDialogProps) {\n const session = useArbiSessionStore()\n const { notify } = useBlocksEnvironment()\n const { data: documents } = useDocuments(undefined, { enabled: open })\n const [picked, setPicked] = useState('')\n\n const groups = useMemo<PickerGroup[]>(() => {\n const docs = (documents ?? [])\n .map((doc) => ({\n id: doc.external_id,\n title: getDocumentTitle(doc, 'Untitled'),\n fileName: doc.file_name,\n }))\n .sort((a, b) => a.title.localeCompare(b.title))\n return [{ id: 'documents', docs }]\n }, [documents])\n const selected = groups[0].docs.find((doc) => doc.id === picked)\n\n const share = () => {\n if (!selected) return\n openDocumentToShare(session, { id: selected.id })\n\n onShare()\n notify(\n `\"${selected.title}\" is open in its own window: choose it in the share dialog (or with Share screen/tab).`,\n 'info'\n )\n setPicked('')\n onOpenChange(false)\n }\n\n return (\n <ModalScaffold\n open={open}\n onOpenChange={onOpenChange}\n title=\"Share a document\"\n description=\"It opens in a window of its own showing only its pages, and the share dialog opens for you to choose it.\"\n showDescription\n icon={<MonitorUp className=\"size-5\" />}\n size=\"sm\"\n testId=\"call-share-document-dialog\"\n >\n <ModalScaffold.Body>\n <DocumentPicker\n groups={groups}\n value={picked}\n onValueChange={setPicked}\n labels={{ placeholder: 'Choose a document' }}\n />\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button type=\"button\" variant=\"outline\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n onClick={share}\n disabled={!selected}\n data-testid=\"call-share-document-open\"\n >\n Open and share\n </Button>\n </ModalScaffold.Footer>\n </ModalScaffold>\n )\n}\n"],
5
+ "mappings": ";AA8DY,cAYN,YAZM;AAtDZ,SAAS,SAAS,gBAAgB;AAClC,SAAS,iBAAiB;AAC1B,SAAS,qBAAqB,oBAAoB;AAClD,SAAS,QAAQ,wBAAwB;AACzC,SAAS,qBAAqB;AAC9B,SAAS,sBAAwC;AACjD,SAAS,4BAA4B;AACrC,SAAS,2BAA2B;AAS7B,SAAS,oBAAoB,EAAE,MAAM,cAAc,QAAQ,GAA6B;AAC7F,QAAM,UAAU,oBAAoB;AACpC,QAAM,EAAE,OAAO,IAAI,qBAAqB;AACxC,QAAM,EAAE,MAAM,UAAU,IAAI,aAAa,QAAW,EAAE,SAAS,KAAK,CAAC;AACrE,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,EAAE;AAEvC,QAAM,SAAS,QAAuB,MAAM;AAC1C,UAAM,QAAQ,aAAa,CAAC,GACzB,IAAI,CAAC,SAAS;AAAA,MACb,IAAI,IAAI;AAAA,MACR,OAAO,iBAAiB,KAAK,UAAU;AAAA,MACvC,UAAU,IAAI;AAAA,IAChB,EAAE,EACD,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC;AAChD,WAAO,CAAC,EAAE,IAAI,aAAa,KAAK,CAAC;AAAA,EACnC,GAAG,CAAC,SAAS,CAAC;AACd,QAAM,WAAW,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,QAAQ,IAAI,OAAO,MAAM;AAE/D,QAAM,QAAQ,MAAM;AAClB,QAAI,CAAC,SAAU;AACf,wBAAoB,SAAS,EAAE,IAAI,SAAS,GAAG,CAAC;AAEhD,YAAQ;AACR;AAAA,MACE,IAAI,SAAS,KAAK;AAAA,MAClB;AAAA,IACF;AACA,cAAU,EAAE;AACZ,iBAAa,KAAK;AAAA,EACpB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,OAAM;AAAA,MACN,aAAY;AAAA,MACZ,iBAAe;AAAA,MACf,MAAM,oBAAC,aAAU,WAAU,UAAS;AAAA,MACpC,MAAK;AAAA,MACL,QAAO;AAAA,MAEP;AAAA,4BAAC,cAAc,MAAd,EACC;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA,OAAO;AAAA,YACP,eAAe;AAAA,YACf,QAAQ,EAAE,aAAa,oBAAoB;AAAA;AAAA,QAC7C,GACF;AAAA,QACA,qBAAC,cAAc,QAAd,EACC;AAAA,8BAAC,UAAO,MAAK,UAAS,SAAQ,WAAU,SAAS,MAAM,aAAa,KAAK,GAAG,oBAE5E;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS;AAAA,cACT,UAAU,CAAC;AAAA,cACX,eAAY;AAAA,cACb;AAAA;AAAA,UAED;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -68,10 +68,10 @@ function ConnectedIncomingCall() {
68
68
  );
69
69
  }
70
70
  var ConnectedCallDock = react.lazy(
71
- () => import('../ConnectedCallDock-WER7R222.cjs').then((m) => ({ default: m.ConnectedCallDock }))
71
+ () => import('../ConnectedCallDock-XJOYVVAH.cjs').then((m) => ({ default: m.ConnectedCallDock }))
72
72
  );
73
73
  var ConnectedCallRoom = react.lazy(
74
- () => import('../ConnectedCallRoom-T7OBQTYP.cjs').then((m) => ({ default: m.ConnectedCallRoom }))
74
+ () => import('../ConnectedCallRoom-CUDYAPQK.cjs').then((m) => ({ default: m.ConnectedCallRoom }))
75
75
  );
76
76
  function ConnectedCallLayer() {
77
77
  const hasActiveCall = react$1.useCallSession((s) => s.active !== null);
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkCJYWHUZR_cjs = require('../chunk-CJYWHUZR.cjs');
4
+ var chunkXCKHOXRP_cjs = require('../chunk-XCKHOXRP.cjs');
5
5
  var chunkKLMNCBLY_cjs = require('../chunk-KLMNCBLY.cjs');
6
- var chunkPGJYD67F_cjs = require('../chunk-PGJYD67F.cjs');
6
+ var chunkKNGZZC4O_cjs = require('../chunk-KNGZZC4O.cjs');
7
7
  var chunk5SKHK3BG_cjs = require('../chunk-5SKHK3BG.cjs');
8
8
  var chunkIDCD5TEZ_cjs = require('../chunk-IDCD5TEZ.cjs');
9
9
  var chunkJHDCDEXY_cjs = require('../chunk-JHDCDEXY.cjs');
@@ -11,7 +11,8 @@ var chunkM2FOXGJU_cjs = require('../chunk-M2FOXGJU.cjs');
11
11
  var chunk5F4DCIHS_cjs = require('../chunk-5F4DCIHS.cjs');
12
12
  require('../chunk-CT3SLXB7.cjs');
13
13
  require('../chunk-DEXUL3T6.cjs');
14
- require('../chunk-6WMMZLEV.cjs');
14
+ require('../chunk-AFQTQC7A.cjs');
15
+ require('../chunk-XJEXFEWG.cjs');
15
16
  var chunkZ2XZ2D4N_cjs = require('../chunk-Z2XZ2D4N.cjs');
16
17
  require('../chunk-YZSQ7F5K.cjs');
17
18
  require('../chunk-MCXS6X37.cjs');
@@ -36,7 +37,7 @@ require('../chunk-PLIF5CUV.cjs');
36
37
 
37
38
  Object.defineProperty(exports, "AssistantToaster", {
38
39
  enumerable: true,
39
- get: function () { return chunkCJYWHUZR_cjs.AssistantToaster; }
40
+ get: function () { return chunkXCKHOXRP_cjs.AssistantToaster; }
40
41
  });
41
42
  Object.defineProperty(exports, "ComposerAccessories", {
42
43
  enumerable: true,
@@ -180,15 +181,15 @@ Object.defineProperty(exports, "useDismissibleCard", {
180
181
  });
181
182
  Object.defineProperty(exports, "AssistantDock", {
182
183
  enumerable: true,
183
- get: function () { return chunkPGJYD67F_cjs.AssistantDock; }
184
+ get: function () { return chunkKNGZZC4O_cjs.AssistantDock; }
184
185
  });
185
186
  Object.defineProperty(exports, "AssistantDockToggle", {
186
187
  enumerable: true,
187
- get: function () { return chunkPGJYD67F_cjs.AssistantDockToggle; }
188
+ get: function () { return chunkKNGZZC4O_cjs.AssistantDockToggle; }
188
189
  });
189
190
  Object.defineProperty(exports, "useAssistantDock", {
190
191
  enumerable: true,
191
- get: function () { return chunkPGJYD67F_cjs.useAssistantDock; }
192
+ get: function () { return chunkKNGZZC4O_cjs.useAssistantDock; }
192
193
  });
193
194
  Object.defineProperty(exports, "useOpenCitation", {
194
195
  enumerable: true,