@arbidocs/blocks 0.5.120 → 0.5.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ClippingMediaViewer-B6WG7Q64.cjs +156 -0
- package/dist/ClippingMediaViewer-B6WG7Q64.cjs.map +1 -0
- package/dist/ClippingPdfViewer-6GCVTV3V.cjs +79 -0
- package/dist/ClippingPdfViewer-6GCVTV3V.cjs.map +1 -0
- package/dist/{ConnectedCallDock-WER7R222.cjs → ConnectedCallDock-DC5V5OUJ.cjs} +25 -23
- package/dist/ConnectedCallDock-DC5V5OUJ.cjs.map +1 -0
- package/dist/{ConnectedCallRoom-T7OBQTYP.cjs → ConnectedCallRoom-FQLXWTFB.cjs} +18 -16
- package/dist/{ConnectedCallRoom-T7OBQTYP.cjs.map → ConnectedCallRoom-FQLXWTFB.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-SGE4R3M4.cjs → ConnectedNativeDocxComparison-4Q5S7VLD.cjs} +17 -17
- package/dist/{ConnectedNativeDocxComparison-SGE4R3M4.cjs.map → ConnectedNativeDocxComparison-4Q5S7VLD.cjs.map} +1 -1
- package/dist/ConnectedPresentation-4HLDZDWV.cjs +183 -0
- package/dist/ConnectedPresentation-4HLDZDWV.cjs.map +1 -0
- package/dist/{ConnectedProductionSetDialog-LHB4VQWC.cjs → ConnectedProductionSetDialog-4EAY6KAZ.cjs} +3 -3
- package/dist/{ConnectedProductionSetDialog-LHB4VQWC.cjs.map → ConnectedProductionSetDialog-4EAY6KAZ.cjs.map} +1 -1
- package/dist/ConnectedSlidesTab-7QDE2CZD.cjs +234 -0
- package/dist/ConnectedSlidesTab-7QDE2CZD.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-6MCLJRIT.cjs → ConnectedStreamedWordArtifact-FFOQJBOI.cjs} +17 -17
- package/dist/{ConnectedStreamedWordArtifact-6MCLJRIT.cjs.map → ConnectedStreamedWordArtifact-FFOQJBOI.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-BPIAJJED.cjs → DocumentReviewCard-SNWVEZ7S.cjs} +17 -16
- package/dist/DocumentReviewCard-SNWVEZ7S.cjs.map +1 -0
- package/dist/{FilesViewerDialog-67WK3TZC.cjs → FilesViewerDialog-IZI63FOV.cjs} +52 -45
- package/dist/FilesViewerDialog-IZI63FOV.cjs.map +1 -0
- package/dist/{GridViewImpl-ZMJJWTOM.cjs → GridViewImpl-LTYET77Q.cjs} +3 -3
- package/dist/GridViewImpl-LTYET77Q.cjs.map +1 -0
- package/dist/{WorkspaceTableView-J3C6VH4T.cjs → WorkspaceTableView-TEIRB6VJ.cjs} +11 -10
- package/dist/WorkspaceTableView-TEIRB6VJ.cjs.map +1 -0
- package/dist/agents/index.cjs +297 -297
- package/dist/{ai-IM4A23YT.cjs → ai-KBYNRNZ6.cjs} +28 -26
- package/dist/ai-KBYNRNZ6.cjs.map +1 -0
- package/dist/calls/connected/CallControls.d.ts +2 -0
- package/dist/calls/connected/CallControls.js +71 -9
- package/dist/calls/connected/CallControls.js.map +2 -2
- package/dist/calls/connected/ShareDocumentDialog.d.ts +14 -0
- package/dist/calls/connected/ShareDocumentDialog.js +77 -0
- package/dist/calls/connected/ShareDocumentDialog.js.map +7 -0
- package/dist/calls/index.cjs +121 -121
- package/dist/chat/index.cjs +9 -8
- package/dist/{chunk-T23UTIRI.cjs → chunk-2PZT3J34.cjs} +6 -6
- package/dist/{chunk-T23UTIRI.cjs.map → chunk-2PZT3J34.cjs.map} +1 -1
- package/dist/{chunk-SGYSDABK.cjs → chunk-2W5E62EY.cjs} +6 -6
- package/dist/{chunk-SGYSDABK.cjs.map → chunk-2W5E62EY.cjs.map} +1 -1
- package/dist/{chunk-TDO5UWXF.cjs → chunk-3SCNXNHI.cjs} +5 -5
- package/dist/{chunk-TDO5UWXF.cjs.map → chunk-3SCNXNHI.cjs.map} +1 -1
- package/dist/{chunk-KTQOGT2L.cjs → chunk-474GPLCM.cjs} +7 -7
- package/dist/{chunk-KTQOGT2L.cjs.map → chunk-474GPLCM.cjs.map} +1 -1
- package/dist/{chunk-TP5PGWIO.cjs → chunk-4IOYQLKG.cjs} +3 -3
- package/dist/{chunk-TP5PGWIO.cjs.map → chunk-4IOYQLKG.cjs.map} +1 -1
- package/dist/{chunk-NY3YUCOW.cjs → chunk-4NPCDS2X.cjs} +3 -3
- package/dist/{chunk-NY3YUCOW.cjs.map → chunk-4NPCDS2X.cjs.map} +1 -1
- package/dist/{chunk-HA66DHW6.cjs → chunk-4RBQ44RY.cjs} +28 -28
- package/dist/chunk-4RBQ44RY.cjs.map +1 -0
- package/dist/{chunk-BQ5RIWWT.cjs → chunk-4VZZWYEC.cjs} +3 -3
- package/dist/{chunk-BQ5RIWWT.cjs.map → chunk-4VZZWYEC.cjs.map} +1 -1
- package/dist/{chunk-BP3IJ34D.cjs → chunk-52KGMAO5.cjs} +15 -15
- package/dist/{chunk-BP3IJ34D.cjs.map → chunk-52KGMAO5.cjs.map} +1 -1
- package/dist/{chunk-5IZFSAEZ.cjs → chunk-5534FYXP.cjs} +4 -4
- package/dist/{chunk-5IZFSAEZ.cjs.map → chunk-5534FYXP.cjs.map} +1 -1
- package/dist/chunk-5GCCUXMT.cjs +63 -0
- package/dist/chunk-5GCCUXMT.cjs.map +1 -0
- package/dist/chunk-5LTIZ44D.cjs +95 -0
- package/dist/chunk-5LTIZ44D.cjs.map +1 -0
- package/dist/{chunk-DFBDQKGE.cjs → chunk-734NPQNR.cjs} +4 -4
- package/dist/{chunk-DFBDQKGE.cjs.map → chunk-734NPQNR.cjs.map} +1 -1
- package/dist/{chunk-X36UR4A7.cjs → chunk-7VUJGHMY.cjs} +323 -96
- package/dist/chunk-7VUJGHMY.cjs.map +1 -0
- package/dist/chunk-AFQTQC7A.cjs +35 -0
- package/dist/chunk-AFQTQC7A.cjs.map +1 -0
- package/dist/{chunk-YYSBWMDJ.cjs → chunk-AY6EZSZB.cjs} +4 -4
- package/dist/{chunk-YYSBWMDJ.cjs.map → chunk-AY6EZSZB.cjs.map} +1 -1
- package/dist/{chunk-BUVIBHFU.cjs → chunk-BVAT4EVC.cjs} +38 -38
- package/dist/chunk-BVAT4EVC.cjs.map +1 -0
- package/dist/{chunk-ECLUFKYR.cjs → chunk-C2OICDMI.cjs} +10 -10
- package/dist/{chunk-ECLUFKYR.cjs.map → chunk-C2OICDMI.cjs.map} +1 -1
- package/dist/{chunk-CPR6EHG7.cjs → chunk-DR2AH7JL.cjs} +179 -55
- package/dist/chunk-DR2AH7JL.cjs.map +1 -0
- package/dist/{chunk-NJCK6V6U.cjs → chunk-EATIFPKP.cjs} +4 -60
- package/dist/chunk-EATIFPKP.cjs.map +1 -0
- package/dist/{chunk-B3LZITVF.cjs → chunk-EHP6OH5D.cjs} +11 -451
- package/dist/chunk-EHP6OH5D.cjs.map +1 -0
- package/dist/{chunk-775S43W7.cjs → chunk-ENGL7P3I.cjs} +31 -31
- package/dist/{chunk-775S43W7.cjs.map → chunk-ENGL7P3I.cjs.map} +1 -1
- package/dist/{chunk-VZCPMXWC.cjs → chunk-FKFQCK3C.cjs} +4 -4
- package/dist/{chunk-VZCPMXWC.cjs.map → chunk-FKFQCK3C.cjs.map} +1 -1
- package/dist/{chunk-6UTKM5AB.cjs → chunk-GKVE5JGB.cjs} +76 -76
- package/dist/chunk-GKVE5JGB.cjs.map +1 -0
- package/dist/{chunk-Q6CLWOP2.cjs → chunk-GPX5VC57.cjs} +50 -50
- package/dist/{chunk-Q6CLWOP2.cjs.map → chunk-GPX5VC57.cjs.map} +1 -1
- package/dist/{chunk-WAV762GP.cjs → chunk-GQXPNIRE.cjs} +6 -6
- package/dist/{chunk-WAV762GP.cjs.map → chunk-GQXPNIRE.cjs.map} +1 -1
- package/dist/chunk-GX2EBMJW.cjs +133 -0
- package/dist/chunk-GX2EBMJW.cjs.map +1 -0
- package/dist/{chunk-7OPOPYV6.cjs → chunk-H5OLHP2U.cjs} +3 -3
- package/dist/{chunk-7OPOPYV6.cjs.map → chunk-H5OLHP2U.cjs.map} +1 -1
- package/dist/chunk-HYUKPHCT.cjs +66 -0
- package/dist/chunk-HYUKPHCT.cjs.map +1 -0
- package/dist/{chunk-NLSWDP42.cjs → chunk-JQLWKNJO.cjs} +22 -12
- package/dist/chunk-JQLWKNJO.cjs.map +1 -0
- package/dist/{chunk-CKCG4NDB.cjs → chunk-JZEYHDWJ.cjs} +75 -75
- package/dist/{chunk-CKCG4NDB.cjs.map → chunk-JZEYHDWJ.cjs.map} +1 -1
- package/dist/{chunk-PGJYD67F.cjs → chunk-KNGZZC4O.cjs} +7 -6
- package/dist/chunk-KNGZZC4O.cjs.map +1 -0
- package/dist/{chunk-W6INT5GS.cjs → chunk-KP5AITQ4.cjs} +10 -10
- package/dist/{chunk-W6INT5GS.cjs.map → chunk-KP5AITQ4.cjs.map} +1 -1
- package/dist/{chunk-YYPZOEED.cjs → chunk-LHWOKOMP.cjs} +23 -2
- package/dist/chunk-LHWOKOMP.cjs.map +1 -0
- package/dist/{chunk-WXUU3COI.cjs → chunk-MZ2KZXNU.cjs} +3 -3
- package/dist/{chunk-WXUU3COI.cjs.map → chunk-MZ2KZXNU.cjs.map} +1 -1
- package/dist/chunk-NAJN32MF.cjs +154 -0
- package/dist/chunk-NAJN32MF.cjs.map +1 -0
- package/dist/{chunk-557MJ4IH.cjs → chunk-NLOETJCB.cjs} +17 -154
- package/dist/chunk-NLOETJCB.cjs.map +1 -0
- package/dist/{chunk-4XJEHKVZ.cjs → chunk-PIYYBPHH.cjs} +4 -4
- package/dist/{chunk-4XJEHKVZ.cjs.map → chunk-PIYYBPHH.cjs.map} +1 -1
- package/dist/chunk-Q3XJUXID.cjs +4774 -0
- package/dist/chunk-Q3XJUXID.cjs.map +1 -0
- package/dist/{chunk-325GVZE6.cjs → chunk-Q6DQGGP4.cjs} +3 -3
- package/dist/{chunk-325GVZE6.cjs.map → chunk-Q6DQGGP4.cjs.map} +1 -1
- package/dist/chunk-QFXILJMJ.cjs +458 -0
- package/dist/chunk-QFXILJMJ.cjs.map +1 -0
- package/dist/{chunk-QQWHG3KF.cjs → chunk-RYVZDFVO.cjs} +5 -5
- package/dist/{chunk-QQWHG3KF.cjs.map → chunk-RYVZDFVO.cjs.map} +1 -1
- package/dist/{chunk-EOG6OT5I.cjs → chunk-TXP2N3DC.cjs} +4 -4
- package/dist/{chunk-EOG6OT5I.cjs.map → chunk-TXP2N3DC.cjs.map} +1 -1
- package/dist/{chunk-KXIRVKCJ.cjs → chunk-UUENH4BJ.cjs} +3 -3
- package/dist/{chunk-KXIRVKCJ.cjs.map → chunk-UUENH4BJ.cjs.map} +1 -1
- package/dist/chunk-VJ5ZLRBD.cjs +27 -0
- package/dist/chunk-VJ5ZLRBD.cjs.map +1 -0
- package/dist/{chunk-3GWWOYGS.cjs → chunk-W6B3RYTX.cjs} +4 -4
- package/dist/{chunk-3GWWOYGS.cjs.map → chunk-W6B3RYTX.cjs.map} +1 -1
- package/dist/chunk-WOOOMTTA.cjs +19 -0
- package/dist/chunk-WOOOMTTA.cjs.map +1 -0
- package/dist/{chunk-CJYWHUZR.cjs → chunk-XCKHOXRP.cjs} +4 -4
- package/dist/{chunk-CJYWHUZR.cjs.map → chunk-XCKHOXRP.cjs.map} +1 -1
- package/dist/{chunk-6WMMZLEV.cjs → chunk-XJEXFEWG.cjs} +2 -27
- package/dist/chunk-XJEXFEWG.cjs.map +1 -0
- package/dist/chunk-XK4TVJKD.cjs +73 -0
- package/dist/chunk-XK4TVJKD.cjs.map +1 -0
- package/dist/chunk-XTR26TNE.cjs +1358 -0
- package/dist/chunk-XTR26TNE.cjs.map +1 -0
- package/dist/{chunk-E7TE2WVT.cjs → chunk-ZVEW3JBT.cjs} +3 -3
- package/dist/{chunk-E7TE2WVT.cjs.map → chunk-ZVEW3JBT.cjs.map} +1 -1
- package/dist/collaboration/index.cjs +70 -70
- package/dist/components/ZoomSlider.d.ts +25 -0
- package/dist/components/ZoomSlider.js +59 -0
- package/dist/components/ZoomSlider.js.map +7 -0
- package/dist/connect/docx.cjs +20 -20
- package/dist/connect/index.cjs +1150 -1232
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/viewer.cjs +40 -34
- package/dist/connection/ai.d.ts +1 -1
- package/dist/connection/files/ConnectedNewFileMenu.d.ts +2 -1
- package/dist/connection/files/ConnectedNewFileMenu.js +9 -3
- package/dist/connection/files/ConnectedNewFileMenu.js.map +2 -2
- package/dist/connection/files/explorer/ConnectedFilesExplorer.js +1 -1
- package/dist/connection/files/explorer/ConnectedFilesExplorer.js.map +2 -2
- package/dist/connection/files/explorer/FileTiles.js +1 -1
- package/dist/connection/files/explorer/FileTiles.js.map +2 -2
- package/dist/connection/files/fields/documentField.js +1 -1
- package/dist/connection/files/fields/documentField.js.map +2 -2
- package/dist/connection/files/grid/documentColumns.js +1 -1
- package/dist/connection/files/grid/documentColumns.js.map +2 -2
- package/dist/connection/files/page/DocumentsFilterBarActions.js +17 -28
- package/dist/connection/files/page/DocumentsFilterBarActions.js.map +2 -2
- package/dist/connection/mail/useMailboxDefaults.js +1 -1
- package/dist/connection/mail/useMailboxDefaults.js.map +2 -2
- package/dist/connection/panels/useSessionPanelMode.js +3 -2
- package/dist/connection/panels/useSessionPanelMode.js.map +2 -2
- package/dist/connection/presentation/ClippingMediaViewer.d.ts +12 -0
- package/dist/connection/presentation/ClippingMediaViewer.js +153 -0
- package/dist/connection/presentation/ClippingMediaViewer.js.map +7 -0
- package/dist/connection/presentation/ClippingPdfViewer.d.ts +22 -0
- package/dist/connection/presentation/ClippingPdfViewer.js +75 -0
- package/dist/connection/presentation/ClippingPdfViewer.js.map +7 -0
- package/dist/connection/presentation/ConnectedPresentation.d.ts +12 -0
- package/dist/connection/presentation/ConnectedPresentation.js +100 -0
- package/dist/connection/presentation/ConnectedPresentation.js.map +7 -0
- package/dist/connection/presentation/ConnectedSlidesTab.d.ts +20 -0
- package/dist/connection/presentation/ConnectedSlidesTab.js +220 -0
- package/dist/connection/presentation/ConnectedSlidesTab.js.map +7 -0
- package/dist/connection/presentation/CropClipDialog.d.ts +11 -0
- package/dist/connection/presentation/CropClipDialog.js +86 -0
- package/dist/connection/presentation/CropClipDialog.js.map +7 -0
- package/dist/connection/presentation/GenerateTile.d.ts +4 -0
- package/dist/connection/presentation/GenerateTile.js +24 -0
- package/dist/connection/presentation/GenerateTile.js.map +7 -0
- package/dist/connection/presentation/LabelColumnMenu.d.ts +8 -0
- package/dist/connection/presentation/LabelColumnMenu.js +38 -0
- package/dist/connection/presentation/LabelColumnMenu.js.map +7 -0
- package/dist/connection/presentation/PresentationDialogs.d.ts +39 -0
- package/dist/connection/presentation/PresentationDialogs.js +295 -0
- package/dist/connection/presentation/PresentationDialogs.js.map +7 -0
- package/dist/connection/presentation/PresentationFileCard.d.ts +10 -0
- package/dist/connection/presentation/PresentationFileCard.js +35 -0
- package/dist/connection/presentation/PresentationFileCard.js.map +7 -0
- package/dist/connection/presentation/PresentationPill.d.ts +8 -0
- package/dist/connection/presentation/PresentationPill.js +44 -0
- package/dist/connection/presentation/PresentationPill.js.map +7 -0
- package/dist/connection/presentation/PresentationSlot.d.ts +7 -0
- package/dist/connection/presentation/PresentationSlot.js +35 -0
- package/dist/connection/presentation/PresentationSlot.js.map +7 -0
- package/dist/connection/presentation/requests.d.ts +16 -0
- package/dist/connection/presentation/requests.js +20 -0
- package/dist/connection/presentation/requests.js.map +7 -0
- package/dist/connection/presentation/useImageGeneration.d.ts +11 -0
- package/dist/connection/presentation/useImageGeneration.js +66 -0
- package/dist/connection/presentation/useImageGeneration.js.map +7 -0
- package/dist/connection/presentation/useLabelColumns.d.ts +15 -0
- package/dist/connection/presentation/useLabelColumns.js +33 -0
- package/dist/connection/presentation/useLabelColumns.js.map +7 -0
- package/dist/connection/presentation/usePresentationController.d.ts +15 -0
- package/dist/connection/presentation/usePresentationController.js +118 -0
- package/dist/connection/presentation/usePresentationController.js.map +7 -0
- package/dist/connection/presentation/usePresentationFiles.d.ts +44 -0
- package/dist/connection/presentation/usePresentationFiles.js +307 -0
- package/dist/connection/presentation/usePresentationFiles.js.map +7 -0
- package/dist/connection/presentation/useViewerClipping.d.ts +14 -0
- package/dist/connection/presentation/useViewerClipping.js +18 -0
- package/dist/connection/presentation/useViewerClipping.js.map +7 -0
- package/dist/connection/shell/ConnectedAppShell.js +5 -1
- package/dist/connection/shell/ConnectedAppShell.js.map +2 -2
- package/dist/connection/viewer/CleanViewControl.d.ts +8 -0
- package/dist/connection/viewer/CleanViewControl.js +76 -0
- package/dist/connection/viewer/CleanViewControl.js.map +7 -0
- package/dist/connection/viewer/ConnectedDocumentViewer.js +28 -29
- package/dist/connection/viewer/ConnectedDocumentViewer.js.map +2 -2
- package/dist/connection/viewer/ViewerCropModal.d.ts +5 -0
- package/dist/connection/viewer/ViewerCropModal.js +22 -0
- package/dist/connection/viewer/ViewerCropModal.js.map +7 -0
- package/dist/connection/viewer/ViewerPdfPane.d.ts +3 -1
- package/dist/connection/viewer/ViewerPdfPane.js +37 -0
- package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
- package/dist/connection/viewer/drafts.js +6 -4
- package/dist/connection/viewer/drafts.js.map +2 -2
- package/dist/connection/viewer/shareDocument.d.ts +11 -0
- package/dist/connection/viewer/shareDocument.js +11 -0
- package/dist/connection/viewer/shareDocument.js.map +7 -0
- package/dist/connection/viewer/slidesTabChunk.d.ts +2 -0
- package/dist/connection/viewer/slidesTabChunk.js +9 -0
- package/dist/connection/viewer/slidesTabChunk.js.map +7 -0
- package/dist/connection/viewer/useCleanView.d.ts +14 -0
- package/dist/connection/viewer/useCleanView.js +29 -0
- package/dist/connection/viewer/useCleanView.js.map +7 -0
- package/dist/connection/viewer/useViewedDocument.d.ts +1 -0
- package/dist/connection/viewer/useViewedDocument.js +9 -1
- package/dist/connection/viewer/useViewedDocument.js.map +2 -2
- package/dist/connection/viewer/useViewerTabs.js +18 -4
- package/dist/connection/viewer/useViewerTabs.js.map +2 -2
- package/dist/connection/workflows/ConnectedWorkflowStart.d.ts +14 -2
- package/dist/connection/workflows/ConnectedWorkflowStart.js +5 -2
- package/dist/connection/workflows/ConnectedWorkflowStart.js.map +2 -2
- package/dist/dashboards/index.cjs +1 -1
- package/dist/databases/index.cjs +49 -49
- package/dist/document-tools/DocumentToolButtons.d.ts +2 -0
- package/dist/document-tools/DocumentToolButtons.js +22 -1
- package/dist/document-tools/DocumentToolButtons.js.map +2 -2
- package/dist/document-tools/index.cjs +16 -12
- package/dist/document-tools/index.d.ts +1 -1
- package/dist/document-tools/index.js +2 -0
- package/dist/document-tools/index.js.map +2 -2
- package/dist/embed/index.cjs +41 -39
- package/dist/files/GridViewImpl.js +1 -1
- package/dist/files/GridViewImpl.js.map +2 -2
- package/dist/files/ViewerChrome.d.ts +5 -1
- package/dist/files/ViewerChrome.js +16 -6
- package/dist/files/ViewerChrome.js.map +2 -2
- package/dist/files/index.cjs +225 -225
- package/dist/files/navigator/DocumentSearchList.js +1 -1
- package/dist/files/navigator/DocumentSearchList.js.map +2 -2
- package/dist/index.cjs +1666 -1664
- package/dist/index.cjs.map +1 -1
- package/dist/presentation/BoxActionBar.d.ts +11 -0
- package/dist/presentation/BoxActionBar.js +182 -0
- package/dist/presentation/BoxActionBar.js.map +7 -0
- package/dist/presentation/ClipActionBar.d.ts +26 -0
- package/dist/presentation/ClipActionBar.js +103 -0
- package/dist/presentation/ClipActionBar.js.map +7 -0
- package/dist/presentation/ClipCaptureOverlay.d.ts +14 -0
- package/dist/presentation/ClipCaptureOverlay.js +69 -0
- package/dist/presentation/ClipCaptureOverlay.js.map +7 -0
- package/dist/presentation/ClipImage.d.ts +21 -0
- package/dist/presentation/ClipImage.js +119 -0
- package/dist/presentation/ClipImage.js.map +7 -0
- package/dist/presentation/ClipTray.d.ts +11 -0
- package/dist/presentation/ClipTray.js +152 -0
- package/dist/presentation/ClipTray.js.map +7 -0
- package/dist/presentation/ClipViewControls.d.ts +11 -0
- package/dist/presentation/ClipViewControls.js +142 -0
- package/dist/presentation/ClipViewControls.js.map +7 -0
- package/dist/presentation/DesignMenu.d.ts +8 -0
- package/dist/presentation/DesignMenu.js +199 -0
- package/dist/presentation/DesignMenu.js.map +7 -0
- package/dist/presentation/LayoutMenu.d.ts +17 -0
- package/dist/presentation/LayoutMenu.js +122 -0
- package/dist/presentation/LayoutMenu.js.map +7 -0
- package/dist/presentation/MediaClip.d.ts +15 -0
- package/dist/presentation/MediaClip.js +67 -0
- package/dist/presentation/MediaClip.js.map +7 -0
- package/dist/presentation/Notice.d.ts +6 -0
- package/dist/presentation/Notice.js +43 -0
- package/dist/presentation/Notice.js.map +7 -0
- package/dist/presentation/PresentationStage.d.ts +32 -0
- package/dist/presentation/PresentationStage.js +232 -0
- package/dist/presentation/PresentationStage.js.map +7 -0
- package/dist/presentation/PresenterView.d.ts +16 -0
- package/dist/presentation/PresenterView.js +69 -0
- package/dist/presentation/PresenterView.js.map +7 -0
- package/dist/presentation/SlideDecor.d.ts +25 -0
- package/dist/presentation/SlideDecor.js +189 -0
- package/dist/presentation/SlideDecor.js.map +7 -0
- package/dist/presentation/SlidesEditor.d.ts +25 -0
- package/dist/presentation/SlidesEditor.js +359 -0
- package/dist/presentation/SlidesEditor.js.map +7 -0
- package/dist/presentation/StageBox.d.ts +30 -0
- package/dist/presentation/StageBox.js +281 -0
- package/dist/presentation/StageBox.js.map +7 -0
- package/dist/presentation/StageItem.d.ts +37 -0
- package/dist/presentation/StageItem.js +211 -0
- package/dist/presentation/StageItem.js.map +7 -0
- package/dist/presentation/box-style.d.ts +6 -0
- package/dist/presentation/box-style.js +19 -0
- package/dist/presentation/box-style.js.map +7 -0
- package/dist/presentation/boxes.d.ts +105 -0
- package/dist/presentation/boxes.js +103 -0
- package/dist/presentation/boxes.js.map +7 -0
- package/dist/presentation/draw-boxes.d.ts +8 -0
- package/dist/presentation/draw-boxes.js +130 -0
- package/dist/presentation/draw-boxes.js.map +7 -0
- package/dist/presentation/export-boxes.d.ts +10 -0
- package/dist/presentation/export-boxes.js +74 -0
- package/dist/presentation/export-boxes.js.map +7 -0
- package/dist/presentation/export-pptx.d.ts +16 -0
- package/dist/presentation/export-pptx.js +194 -0
- package/dist/presentation/export-pptx.js.map +7 -0
- package/dist/presentation/import-pptx.d.ts +35 -0
- package/dist/presentation/import-pptx.js +659 -0
- package/dist/presentation/import-pptx.js.map +7 -0
- package/dist/presentation/merge-outside-edits.d.ts +12 -0
- package/dist/presentation/merge-outside-edits.js +35 -0
- package/dist/presentation/merge-outside-edits.js.map +7 -0
- package/dist/presentation/model.d.ts +201 -0
- package/dist/presentation/model.js +271 -0
- package/dist/presentation/model.js.map +7 -0
- package/dist/presentation/panel-id.d.ts +34 -0
- package/dist/presentation/panel-id.js +24 -0
- package/dist/presentation/panel-id.js.map +7 -0
- package/dist/presentation/persistence.d.ts +121 -0
- package/dist/presentation/persistence.js +141 -0
- package/dist/presentation/persistence.js.map +7 -0
- package/dist/presentation/pptx-data.d.ts +22 -0
- package/dist/presentation/pptx-data.js +83 -0
- package/dist/presentation/pptx-data.js.map +7 -0
- package/dist/presentation/pptx-xml.d.ts +90 -0
- package/dist/presentation/pptx-xml.js +333 -0
- package/dist/presentation/pptx-xml.js.map +7 -0
- package/dist/presentation/render-slides.d.ts +58 -0
- package/dist/presentation/render-slides.js +309 -0
- package/dist/presentation/render-slides.js.map +7 -0
- package/dist/presentation/saved-boxes.d.ts +11 -0
- package/dist/presentation/saved-boxes.js +80 -0
- package/dist/presentation/saved-boxes.js.map +7 -0
- package/dist/presentation/slide-layout.d.ts +54 -0
- package/dist/presentation/slide-layout.js +117 -0
- package/dist/presentation/slide-layout.js.map +7 -0
- package/dist/presentation/stage-videos.d.ts +5 -0
- package/dist/presentation/stage-videos.js +19 -0
- package/dist/presentation/stage-videos.js.map +7 -0
- package/dist/presentation/store.d.ts +203 -0
- package/dist/presentation/store.js +429 -0
- package/dist/presentation/store.js.map +7 -0
- package/dist/presentation/theme.d.ts +102 -0
- package/dist/presentation/theme.js +276 -0
- package/dist/presentation/theme.js.map +7 -0
- package/dist/presentation/useClipDrag.d.ts +26 -0
- package/dist/presentation/useClipDrag.js +65 -0
- package/dist/presentation/useClipDrag.js.map +7 -0
- package/dist/presentation/useObjectUrl.d.ts +6 -0
- package/dist/presentation/useObjectUrl.js +15 -0
- package/dist/presentation/useObjectUrl.js.map +7 -0
- package/dist/presentation/usePresenterKeys.d.ts +13 -0
- package/dist/presentation/usePresenterKeys.js +62 -0
- package/dist/presentation/usePresenterKeys.js.map +7 -0
- package/dist/settings/index.cjs +151 -150
- package/dist/shell/PanelPortal.js +1 -0
- package/dist/shell/PanelPortal.js.map +2 -2
- package/dist/shell/index.cjs +112 -110
- package/dist/shell/panel-windows.d.ts +2 -0
- package/dist/shell/panel-windows.js +7 -2
- package/dist/shell/panel-windows.js.map +2 -2
- package/dist/studio/index.cjs +28 -26
- package/dist/studio/index.cjs.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/workflow-canvas/index.cjs +55 -54
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +6 -5
- package/dist/ConnectedCallDock-WER7R222.cjs.map +0 -1
- package/dist/DocumentReviewCard-BPIAJJED.cjs.map +0 -1
- package/dist/FilesViewerDialog-67WK3TZC.cjs.map +0 -1
- package/dist/GridViewImpl-ZMJJWTOM.cjs.map +0 -1
- package/dist/WorkspaceTableView-J3C6VH4T.cjs.map +0 -1
- package/dist/ai-IM4A23YT.cjs.map +0 -1
- package/dist/chunk-557MJ4IH.cjs.map +0 -1
- package/dist/chunk-6UTKM5AB.cjs.map +0 -1
- package/dist/chunk-6WMMZLEV.cjs.map +0 -1
- package/dist/chunk-B3LZITVF.cjs.map +0 -1
- package/dist/chunk-BUVIBHFU.cjs.map +0 -1
- package/dist/chunk-CPR6EHG7.cjs.map +0 -1
- package/dist/chunk-HA66DHW6.cjs.map +0 -1
- package/dist/chunk-NJCK6V6U.cjs.map +0 -1
- package/dist/chunk-NLSWDP42.cjs.map +0 -1
- package/dist/chunk-PGJYD67F.cjs.map +0 -1
- package/dist/chunk-X36UR4A7.cjs.map +0 -1
- package/dist/chunk-YYPZOEED.cjs.map +0 -1
|
@@ -1,35 +1,37 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
6
|
-
require('./chunk-
|
|
7
|
-
require('./chunk-
|
|
8
|
-
require('./chunk-
|
|
9
|
-
require('./chunk-
|
|
10
|
-
require('./chunk-WXUU3COI.cjs');
|
|
11
|
-
require('./chunk-AHDJXIUB.cjs');
|
|
12
|
-
require('./chunk-YVCOQHCE.cjs');
|
|
13
|
-
require('./chunk-JV5TVUOU.cjs');
|
|
14
|
-
require('./chunk-VZOOGA47.cjs');
|
|
15
|
-
require('./chunk-HQDR43JC.cjs');
|
|
16
|
-
require('./chunk-JR2YSBD5.cjs');
|
|
17
|
-
require('./chunk-3YZKDCWY.cjs');
|
|
18
|
-
require('./chunk-PGJYD67F.cjs');
|
|
4
|
+
var chunk474GPLCM_cjs = require('./chunk-474GPLCM.cjs');
|
|
5
|
+
require('./chunk-NAJN32MF.cjs');
|
|
6
|
+
require('./chunk-NLOETJCB.cjs');
|
|
7
|
+
require('./chunk-GKVE5JGB.cjs');
|
|
8
|
+
require('./chunk-GQXPNIRE.cjs');
|
|
9
|
+
require('./chunk-KNGZZC4O.cjs');
|
|
19
10
|
require('./chunk-IDCD5TEZ.cjs');
|
|
20
11
|
require('./chunk-M2FOXGJU.cjs');
|
|
21
12
|
require('./chunk-5F4DCIHS.cjs');
|
|
22
|
-
require('./chunk-
|
|
13
|
+
require('./chunk-AFQTQC7A.cjs');
|
|
14
|
+
require('./chunk-XJEXFEWG.cjs');
|
|
23
15
|
require('./chunk-YZSQ7F5K.cjs');
|
|
24
16
|
require('./chunk-MCXS6X37.cjs');
|
|
25
17
|
require('./chunk-KQF7POTG.cjs');
|
|
26
18
|
require('./chunk-75BNMCUX.cjs');
|
|
19
|
+
require('./chunk-7JLJH5CW.cjs');
|
|
20
|
+
require('./chunk-EVZH6Z5O.cjs');
|
|
27
21
|
require('./chunk-IN6ILI5A.cjs');
|
|
28
22
|
require('./chunk-HSLPFBK2.cjs');
|
|
23
|
+
require('./chunk-MZ2KZXNU.cjs');
|
|
24
|
+
require('./chunk-AHDJXIUB.cjs');
|
|
25
|
+
require('./chunk-YVCOQHCE.cjs');
|
|
29
26
|
require('./chunk-QGVOT7E4.cjs');
|
|
30
27
|
require('./chunk-QRAQZTJE.cjs');
|
|
31
28
|
require('./chunk-UDSHVNU3.cjs');
|
|
29
|
+
require('./chunk-JV5TVUOU.cjs');
|
|
32
30
|
require('./chunk-IPSHAMO2.cjs');
|
|
31
|
+
require('./chunk-VZOOGA47.cjs');
|
|
32
|
+
require('./chunk-HQDR43JC.cjs');
|
|
33
|
+
require('./chunk-JR2YSBD5.cjs');
|
|
34
|
+
require('./chunk-3YZKDCWY.cjs');
|
|
33
35
|
require('./chunk-PPCATBOY.cjs');
|
|
34
36
|
require('./chunk-TKHCIHE2.cjs');
|
|
35
37
|
require('./chunk-JDFBEGQO.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
|
|
45
|
+
get: function () { return chunk474GPLCM_cjs.ConnectedAssistantDock; }
|
|
44
46
|
});
|
|
45
47
|
Object.defineProperty(exports, "redlineStats", {
|
|
46
48
|
enumerable: true,
|
|
47
|
-
get: function () { return
|
|
49
|
+
get: function () { return chunk474GPLCM_cjs.redlineStats; }
|
|
48
50
|
});
|
|
49
51
|
Object.defineProperty(exports, "textToArtifact", {
|
|
50
52
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
53
|
+
get: function () { return chunk474GPLCM_cjs.textToArtifact; }
|
|
52
54
|
});
|
|
53
55
|
Object.defineProperty(exports, "toRedlineMarkdown", {
|
|
54
56
|
enumerable: true,
|
|
55
|
-
get: function () { return
|
|
57
|
+
get: function () { return chunk474GPLCM_cjs.toRedlineMarkdown; }
|
|
56
58
|
});
|
|
57
59
|
Object.defineProperty(exports, "useConnectedAiTask", {
|
|
58
60
|
enumerable: true,
|
|
59
|
-
get: function () { return
|
|
61
|
+
get: function () { return chunk474GPLCM_cjs.useConnectedAiTask; }
|
|
60
62
|
});
|
|
61
63
|
Object.defineProperty(exports, "useConnectedChat", {
|
|
62
64
|
enumerable: true,
|
|
63
|
-
get: function () { return
|
|
65
|
+
get: function () { return chunk474GPLCM_cjs.useConnectedChat; }
|
|
64
66
|
});
|
|
65
67
|
Object.defineProperty(exports, "useSemanticSearch", {
|
|
66
68
|
enumerable: true,
|
|
67
|
-
get: function () { return
|
|
69
|
+
get: function () { return chunk474GPLCM_cjs.useSemanticSearch; }
|
|
68
70
|
});
|
|
69
71
|
Object.defineProperty(exports, "useWorkspaceDocs", {
|
|
70
72
|
enumerable: true,
|
|
71
|
-
get: function () { return
|
|
73
|
+
get: function () { return chunk474GPLCM_cjs.useWorkspaceDocs; }
|
|
72
74
|
});
|
|
73
|
-
//# sourceMappingURL=ai-
|
|
74
|
-
//# sourceMappingURL=ai-
|
|
75
|
+
//# sourceMappingURL=ai-KBYNRNZ6.cjs.map
|
|
76
|
+
//# sourceMappingURL=ai-KBYNRNZ6.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ai-KBYNRNZ6.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 {
|
|
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" :
|
|
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:
|
|
242
|
-
tone:
|
|
243
|
-
"aria-pressed":
|
|
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:
|
|
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": ";
|
|
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": ";AAkGI,SAqNI,UArNJ,KA6CA,YA7CA;AAtFJ,SAAS,4BAA4B;AACrC,SAAS,gBAAmC;AAC5C,SAAS,aAAa;AACtB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB,SAAS,kCAAkC;AACxE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AAEjC,SAAS,yBAAyB;AAClC,SAAS,2BAA2B;AAEpC,MAAM,cAAc;AAQpB,SAAS,kBAAkB,QAAgB,QAAqB;AAC9D,SAAO,CAAC,QACN;AAAA,IACE,mBAAmB,KAAK,WAAW,MAAM,OAAO,SAAS,WAAW,YAAY;AAAA,IAChF;AAAA,EACF;AACJ;AAGA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF,GAIiB;AACf,QAAM,EAAE,OAAO,IAAI,qBAAqB;AACxC,QAAM,MAAM,WAAW,MAAM,OAAO;AACpC,QAAM,EAAE,QAAQ,SAAS,QAAQ,IAAI,eAAe;AAAA,IAClD;AAAA,IACA,eAAe,kBAAkB,QAAQ,MAAM;AAAA,EACjD,CAAC;AACD,QAAM,EAAE,SAAS,gBAAgB,qBAAqB,IAAI,qBAAqB;AAAA,IAC7E,MAAM,MAAM,eAAe;AAAA,EAC7B,CAAC;AACD,QAAM,CAAC,QAAQ,SAAS,IAAI,kBAAkB;AAC9C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,MAAM,eAAe;AAAA,MAC3B;AAAA,MACA;AAAA,MACA,UAAU,MAAM,KAAK,OAAO;AAAA,MAC5B,SAAS,QAAQ,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAAA,MACtE;AAAA,MACA,gBAAgB,CAAC,OACf,KAAK,qBAAqB,EAAE,EAAE,MAAM,CAAC,QAAe,kBAAkB,QAAQ,MAAM,EAAE,GAAG,CAAC;AAAA,MAE5F;AAAA,MACA;AAAA,MACA,SACE,MACI,CAAC,IACD;AAAA,QACE;AAAA,UACE,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,UACV,QAAQ;AAAA,QACV;AAAA,MACF;AAAA;AAAA,EAER;AAEJ;AAEA,SAAS,iBAAiB;AACxB,QAAM,EAAE,OAAO,IAAI,qBAAqB;AACxC,SAAO,eAAe;AAAA,IACpB,QAAQ,MAAM,OAAO;AAAA,IACrB,gBAAgB,EAAE,OAAO,MAAM,oBAAoB,UAAU;AAAA,IAC7D,eAAe,CAAC,QAAe;AAE7B,UAAI,IAAI,SAAS,kBAAmB,QAAO,oBAAoB,IAAI,OAAO,IAAI,OAAO;AAAA,IACvF;AAAA,EACF,CAAC;AACH;AAGO,SAAS,kBAAkB,EAAE,UAAU,MAAM,GAA+C;AACjG,QAAM,EAAE,cAAc,WAAW,IAAI,iBAAiB;AACtD,MAAI,aAAc,QAAO;AACzB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAU;AAAA,MACV,SAAS,MAAM,KAAK,WAAW;AAAA,MAC/B,eAAY;AAAA,MAEZ;AAAA,4BAAC,WAAQ,WAAU,UAAS,eAAW,MAAC;AAAA,QACvC,UAAU,UAAU;AAAA;AAAA;AAAA,EACvB;AAEJ;AAmBO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,aAAa,CAAC;AAAA,EACd;AACF,GAAoC;AAClC,QAAM,EAAE,OAAO,IAAI,qBAAqB;AACxC,QAAM,OAAO,QAAQ;AACrB,QAAM,OAAO,eAAe;AAC5B,QAAM,QAAQ,eAAe;AAC7B,QAAM,eAAe,2BAA2B;AAChD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,KAAK;AAC5D,QAAM,OAAO,YAAY;AACzB,QAAM,OAAO,YAAY;AAEzB,QAAM,aAAa,YAAY;AAC7B,eAAW,IAAI;AACf,QAAI;AACF,YAAM,OAAO,MAAM,KAAK,MAAM,OAAO,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC;AACnE,gBAAU,KAAK,MAAM;AACrB,aAAO,KAAK,SAAS,qCAAqC,iBAAiB,MAAM;AAAA,IACnF,SAAS,KAAK;AACZ,aAAO,8BAA+B,IAAc,OAAO,IAAI,OAAO;AAAA,IACxE,UAAE;AACA,iBAAW,KAAK;AAAA,IAClB;AAAA,EACF;AACA,QAAM,WAAW,MAAM;AACrB,QAAI,CAAC,KAAM;AACX,SAAK,UAAU,UACZ,UAAU,IAAI,EACd,KAAK,MAAM,OAAO,oBAAoB,SAAS,CAAC,EAChD,MAAM,MAAM,OAAO,2BAA2B,OAAO,CAAC;AAAA,EAC3D;AAGA,QAAM,WAA2B;AAAA,IAC/B,GAAI,CAAC,OACD;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,OAAO,MAAM,UAAU,iBAAiB;AAAA,QACxC,MAAM,MAAM,UAAU,oBAAC,YAAS,IAAK,oBAAC,aAAU;AAAA,QAChD,UAAU,MAAM,KAAK,MAAM,OAAO;AAAA,QAClC,UAAU,MAAM;AAAA,MAClB;AAAA,MACA,GAAI,CAAC,MAAM,UACP;AAAA,QACE;AAAA,UACE,KAAK;AAAA,UACL,OAAO;AAAA,UACP,MAAM,oBAAC,YAAS;AAAA,UAChB,UAAU,MAAM,mBAAmB,IAAI;AAAA,UACvC,QAAQ;AAAA,QACV;AAAA,MACF,IACA,CAAC;AAAA,IACP,IACA,CAAC;AAAA,IACL,GAAI,QAAQ,GAAG,aAAa,GAAG,YAC3B;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,OAAO,GAAG,KAAK,uBAAuB;AAAA,QACtC,MAAM,oBAAC,YAAS;AAAA,QAChB,UAAU,MAAM,KAAK,GAAG,OAAO;AAAA,QAC/B,UAAU,GAAG;AAAA,MACf;AAAA,IACF,IACA,CAAC;AAAA,IACL,GAAI,QAAQ,UAAU,aAAa,UAAU,aACzC,UAAU,KACR;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM,oBAAC,UAAO,WAAU,8BAA6B;AAAA,QACrD,UAAU,MAAM,KAAK,UAAU,KAAK;AAAA,QACpC,UAAU,UAAU;AAAA,MACtB;AAAA,IACF,IACA;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM,oBAAC,UAAO,WAAU,iCAAgC;AAAA,QACxD,UAAU,MAAM,KAAK,UAAU,aAAa,OAAO;AAAA,QACnD,UAAU,UAAU;AAAA,MACtB;AAAA,MACA;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM,oBAAC,UAAO,WAAU,iCAAgC;AAAA,QACxD,UAAU,MAAM,KAAK,UAAU,aAAa,aAAa;AAAA,QACzD,UAAU,UAAU;AAAA,MACtB;AAAA,IACF,IACF,CAAC;AAAA,EACP;AACA,QAAM,YAA4B;AAAA,IAChC,GAAI,OACA;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM,oBAAC,SAAM;AAAA,QACb,UAAU;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,IACF,IACA,CAAC;AAAA,IACL,GAAI,YACA;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,OAAO,SAAS,gBAAgB;AAAA,QAChC,MAAM,SAAS,oBAAC,YAAS,IAAK,oBAAC,QAAK;AAAA,QACpC,UAAU,MAAM,KAAK,WAAW;AAAA,QAChC,UAAU;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,IACF,IACA,CAAC;AAAA,EACP;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,MACE,iCACG;AAAA,gBAAQ,oBAAC,eAAY,OAAO,WAAW,OAAM,qBAAoB;AAAA,QAClE,oBAAC,qBAAkB,SAAS,CAAC,MAAM;AAAA,SACrC;AAAA,MAEF,OACE;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,CAAC;AAAA,UACV,SAAS,MAAM,KAAK,KAAK,WAAW;AAAA,UACpC,SAAS;AAAA;AAAA,MACX;AAAA,MAGF;AAAA,6BAAC,gBACC;AAAA,8BAAC,oBAAiB,QAAQ,MAAM,OAAO,YAAY,UAAS,KAAI,QAAO,mBAAkB;AAAA,UACzF,oBAAC,oBAAiB,QAAQ,MAAM,OAAO,QAAQ,UAAS,KAAI,QAAO,sBAAqB;AAAA,WAC1F;AAAA,QACC,CAAC,QACA,iCACE;AAAA,8BAAC,kBAAe;AAAA,UAChB,qBAAC,gBACE;AAAA,qBACE,MAAM,UACL;AAAA,cAAC;AAAA;AAAA,gBACC,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,gBAAY;AAAA,gBACZ,UAAU,MAAM;AAAA,gBAChB,SAAS,MAAM,KAAK,MAAM,OAAO;AAAA,gBACjC,eAAY;AAAA,gBAEZ,8BAAC,YAAS,eAAW,MAAC;AAAA;AAAA,YACxB,IAEA,qBAAC,gBACC;AAAA,kCAAC,uBAAoB,SAAO,MAC1B;AAAA,gBAAC;AAAA;AAAA,kBACC,OAAO;AAAA,kBACP,SAAS;AAAA,kBACT,UAAU,MAAM;AAAA,kBAChB,eAAY;AAAA,kBAEZ,8BAAC,aAAU,eAAW,MAAC;AAAA;AAAA,cACzB,GACF;AAAA,cACA,qBAAC,uBAAoB,MAAK,OAAM,eAAY,mBAC1C;AAAA;AAAA,kBAAC;AAAA;AAAA,oBACC,UAAU,MAAM,KAAK,MAAM,OAAO;AAAA,oBAClC,eAAY;AAAA,oBAEZ;AAAA,0CAAC,aAAU;AAAA,sBACV;AAAA;AAAA;AAAA,gBACH;AAAA,gBACA;AAAA,kBAAC;AAAA;AAAA,oBACC,UAAU,MAAM,mBAAmB,IAAI;AAAA,oBACvC,eAAY;AAAA,oBAEZ;AAAA,0CAAC,YAAS;AAAA,sBAAE;AAAA;AAAA;AAAA,gBAEd;AAAA,iBACF;AAAA,eACF;AAAA,YAEJ,oBAAC,uBAAoB,eAAe,IAAI;AAAA,YACxC,oBAAC,oBAAiB,WAAsB;AAAA,aAC1C;AAAA,WACF;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACC,SACE,eACE;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,eAAY;AAAA,gBAEZ;AAAA,sCAAC,gBAAa,WAAU,YAAW,eAAW,MAAC;AAAA,kBAAE;AAAA;AAAA;AAAA,YAEnD,IACE;AAAA,YAEN,QAAQ,CAAC,UAAU,WAAW,GAAG,UAAU;AAAA;AAAA,QAC7C;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM;AAAA,YACN,cAAc;AAAA,YACd,SAAS,MAAM,KAAK,MAAM,OAAO,IAAI;AAAA;AAAA,QACvC;AAAA;AAAA;AAAA,EACF;AAEJ;",
|
|
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
|
+
}
|