@arbidocs/blocks 0.5.121 → 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.
- package/dist/{ClippingMediaViewer-B6WG7Q64.cjs → ClippingMediaViewer-IEIBT74X.cjs} +8 -8
- package/dist/{ClippingMediaViewer-B6WG7Q64.cjs.map → ClippingMediaViewer-IEIBT74X.cjs.map} +1 -1
- package/dist/{ClippingPdfViewer-6GCVTV3V.cjs → ClippingPdfViewer-OGYLMVCE.cjs} +5 -5
- package/dist/{ClippingPdfViewer-6GCVTV3V.cjs.map → ClippingPdfViewer-OGYLMVCE.cjs.map} +1 -1
- package/dist/{ConnectedCallDock-DC5V5OUJ.cjs → ConnectedCallDock-XJOYVVAH.cjs} +21 -21
- package/dist/{ConnectedCallDock-DC5V5OUJ.cjs.map → ConnectedCallDock-XJOYVVAH.cjs.map} +1 -1
- package/dist/{ConnectedCallRoom-FQLXWTFB.cjs → ConnectedCallRoom-CUDYAPQK.cjs} +14 -14
- package/dist/{ConnectedCallRoom-FQLXWTFB.cjs.map → ConnectedCallRoom-CUDYAPQK.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs → ConnectedNativeDocxComparison-QKHCYD6W.cjs} +16 -16
- package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs.map → ConnectedNativeDocxComparison-QKHCYD6W.cjs.map} +1 -1
- package/dist/ConnectedPresentation-AU25OW25.cjs +321 -0
- package/dist/ConnectedPresentation-AU25OW25.cjs.map +1 -0
- package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs} +3 -3
- package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs.map → ConnectedProductionSetDialog-LHB4VQWC.cjs.map} +1 -1
- package/dist/{ConnectedSlidesTab-7QDE2CZD.cjs → ConnectedSlidesTab-I75LKKN7.cjs} +40 -38
- package/dist/ConnectedSlidesTab-I75LKKN7.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs → ConnectedStreamedWordArtifact-AG62232A.cjs} +16 -16
- package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs.map → ConnectedStreamedWordArtifact-AG62232A.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-SNWVEZ7S.cjs → DocumentReviewCard-M53XFLI2.cjs} +15 -15
- package/dist/{DocumentReviewCard-SNWVEZ7S.cjs.map → DocumentReviewCard-M53XFLI2.cjs.map} +1 -1
- package/dist/{FilesViewerDialog-IZI63FOV.cjs → FilesViewerDialog-4352KIOG.cjs} +50 -49
- package/dist/FilesViewerDialog-4352KIOG.cjs.map +1 -0
- package/dist/{WorkspaceTableView-TEIRB6VJ.cjs → WorkspaceTableView-3XYAV4BV.cjs} +8 -8
- package/dist/{WorkspaceTableView-TEIRB6VJ.cjs.map → WorkspaceTableView-3XYAV4BV.cjs.map} +1 -1
- package/dist/agents/index.cjs +297 -297
- package/dist/{ai-KBYNRNZ6.cjs → ai-IEIR7SC2.cjs} +25 -25
- package/dist/ai-IEIR7SC2.cjs.map +1 -0
- package/dist/calls/index.cjs +121 -121
- package/dist/chat/index.cjs +1 -1
- package/dist/{chunk-NLOETJCB.cjs → chunk-2F57IO7S.cjs} +12 -12
- package/dist/{chunk-NLOETJCB.cjs.map → chunk-2F57IO7S.cjs.map} +1 -1
- package/dist/chunk-2RLA6QO2.cjs +174 -0
- package/dist/chunk-2RLA6QO2.cjs.map +1 -0
- package/dist/{chunk-Q6DQGGP4.cjs → chunk-325GVZE6.cjs} +3 -3
- package/dist/{chunk-Q6DQGGP4.cjs.map → chunk-325GVZE6.cjs.map} +1 -1
- package/dist/{chunk-XTR26TNE.cjs → chunk-4TTX6ZNS.cjs} +20 -4
- package/dist/chunk-4TTX6ZNS.cjs.map +1 -0
- package/dist/{chunk-BVAT4EVC.cjs → chunk-5QERK4PK.cjs} +35 -35
- package/dist/{chunk-BVAT4EVC.cjs.map → chunk-5QERK4PK.cjs.map} +1 -1
- package/dist/{chunk-GX2EBMJW.cjs → chunk-6OK7ESTL.cjs} +7 -6
- package/dist/chunk-6OK7ESTL.cjs.map +1 -0
- package/dist/{chunk-C2OICDMI.cjs → chunk-7557LDAN.cjs} +10 -10
- package/dist/{chunk-C2OICDMI.cjs.map → chunk-7557LDAN.cjs.map} +1 -1
- package/dist/{chunk-474GPLCM.cjs → chunk-7L4X6QN2.cjs} +6 -6
- package/dist/{chunk-474GPLCM.cjs.map → chunk-7L4X6QN2.cjs.map} +1 -1
- package/dist/{chunk-52KGMAO5.cjs → chunk-7NLO7ASW.cjs} +15 -15
- package/dist/{chunk-52KGMAO5.cjs.map → chunk-7NLO7ASW.cjs.map} +1 -1
- package/dist/{chunk-H5OLHP2U.cjs → chunk-7OPOPYV6.cjs} +3 -3
- package/dist/{chunk-H5OLHP2U.cjs.map → chunk-7OPOPYV6.cjs.map} +1 -1
- package/dist/{chunk-W6B3RYTX.cjs → chunk-7PN3YENO.cjs} +4 -4
- package/dist/{chunk-W6B3RYTX.cjs.map → chunk-7PN3YENO.cjs.map} +1 -1
- package/dist/{chunk-734NPQNR.cjs → chunk-ADDQKZ5I.cjs} +4 -4
- package/dist/{chunk-734NPQNR.cjs.map → chunk-ADDQKZ5I.cjs.map} +1 -1
- package/dist/{chunk-JQLWKNJO.cjs → chunk-ALK3PUUB.cjs} +4 -4
- package/dist/{chunk-JQLWKNJO.cjs.map → chunk-ALK3PUUB.cjs.map} +1 -1
- package/dist/{chunk-4VZZWYEC.cjs → chunk-BQ5RIWWT.cjs} +3 -3
- package/dist/{chunk-4VZZWYEC.cjs.map → chunk-BQ5RIWWT.cjs.map} +1 -1
- package/dist/{chunk-ENGL7P3I.cjs → chunk-CQQQIZU4.cjs} +27 -27
- package/dist/{chunk-ENGL7P3I.cjs.map → chunk-CQQQIZU4.cjs.map} +1 -1
- package/dist/{chunk-3SCNXNHI.cjs → chunk-E3L5DB5F.cjs} +5 -5
- package/dist/{chunk-3SCNXNHI.cjs.map → chunk-E3L5DB5F.cjs.map} +1 -1
- package/dist/{chunk-VJ5ZLRBD.cjs → chunk-GFUOCGY6.cjs} +8 -3
- package/dist/chunk-GFUOCGY6.cjs.map +1 -0
- package/dist/{chunk-RYVZDFVO.cjs → chunk-JJZOL5MG.cjs} +3 -3
- package/dist/{chunk-RYVZDFVO.cjs.map → chunk-JJZOL5MG.cjs.map} +1 -1
- package/dist/{chunk-QFXILJMJ.cjs → chunk-K4763GD5.cjs} +17 -174
- package/dist/chunk-K4763GD5.cjs.map +1 -0
- package/dist/{chunk-EHP6OH5D.cjs → chunk-KA3F6TIH.cjs} +11 -11
- package/dist/{chunk-EHP6OH5D.cjs.map → chunk-KA3F6TIH.cjs.map} +1 -1
- package/dist/{chunk-UUENH4BJ.cjs → chunk-KXIRVKCJ.cjs} +3 -3
- package/dist/{chunk-UUENH4BJ.cjs.map → chunk-KXIRVKCJ.cjs.map} +1 -1
- package/dist/{chunk-4RBQ44RY.cjs → chunk-MLA2BJ2Y.cjs} +28 -28
- package/dist/{chunk-4RBQ44RY.cjs.map → chunk-MLA2BJ2Y.cjs.map} +1 -1
- package/dist/{chunk-DR2AH7JL.cjs → chunk-NG2EE7HR.cjs} +48 -48
- package/dist/{chunk-DR2AH7JL.cjs.map → chunk-NG2EE7HR.cjs.map} +1 -1
- package/dist/{chunk-4NPCDS2X.cjs → chunk-NY3YUCOW.cjs} +3 -3
- package/dist/{chunk-4NPCDS2X.cjs.map → chunk-NY3YUCOW.cjs.map} +1 -1
- package/dist/{chunk-JZEYHDWJ.cjs → chunk-OHHKBURG.cjs} +76 -76
- package/dist/chunk-OHHKBURG.cjs.map +1 -0
- package/dist/{chunk-AY6EZSZB.cjs → chunk-QG2U2JGX.cjs} +4 -4
- package/dist/{chunk-AY6EZSZB.cjs.map → chunk-QG2U2JGX.cjs.map} +1 -1
- package/dist/{chunk-5534FYXP.cjs → chunk-SDRYSLOX.cjs} +4 -4
- package/dist/{chunk-5534FYXP.cjs.map → chunk-SDRYSLOX.cjs.map} +1 -1
- package/dist/{chunk-2W5E62EY.cjs → chunk-SGYSDABK.cjs} +6 -6
- package/dist/{chunk-2W5E62EY.cjs.map → chunk-SGYSDABK.cjs.map} +1 -1
- package/dist/{chunk-EATIFPKP.cjs → chunk-T73BHNQX.cjs} +4 -4
- package/dist/{chunk-EATIFPKP.cjs.map → chunk-T73BHNQX.cjs.map} +1 -1
- package/dist/{chunk-4IOYQLKG.cjs → chunk-TP5PGWIO.cjs} +3 -3
- package/dist/{chunk-4IOYQLKG.cjs.map → chunk-TP5PGWIO.cjs.map} +1 -1
- package/dist/{chunk-GKVE5JGB.cjs → chunk-UFT22LAB.cjs} +3 -3
- package/dist/{chunk-GKVE5JGB.cjs.map → chunk-UFT22LAB.cjs.map} +1 -1
- package/dist/{chunk-Q3XJUXID.cjs → chunk-USNTRL22.cjs} +215 -199
- package/dist/chunk-USNTRL22.cjs.map +1 -0
- package/dist/{chunk-7VUJGHMY.cjs → chunk-UTJ223TI.cjs} +178 -82
- package/dist/chunk-UTJ223TI.cjs.map +1 -0
- package/dist/{chunk-FKFQCK3C.cjs → chunk-V6MW7B4B.cjs} +4 -4
- package/dist/{chunk-FKFQCK3C.cjs.map → chunk-V6MW7B4B.cjs.map} +1 -1
- package/dist/{chunk-2PZT3J34.cjs → chunk-VWBYE3XY.cjs} +6 -6
- package/dist/{chunk-2PZT3J34.cjs.map → chunk-VWBYE3XY.cjs.map} +1 -1
- package/dist/{chunk-GQXPNIRE.cjs → chunk-WAV762GP.cjs} +6 -6
- package/dist/{chunk-GQXPNIRE.cjs.map → chunk-WAV762GP.cjs.map} +1 -1
- package/dist/{chunk-5LTIZ44D.cjs → chunk-WFMWKPGY.cjs} +14 -7
- package/dist/chunk-WFMWKPGY.cjs.map +1 -0
- package/dist/{chunk-KP5AITQ4.cjs → chunk-WRLGLZIA.cjs} +7 -7
- package/dist/{chunk-KP5AITQ4.cjs.map → chunk-WRLGLZIA.cjs.map} +1 -1
- package/dist/{chunk-MZ2KZXNU.cjs → chunk-WXUU3COI.cjs} +3 -3
- package/dist/{chunk-MZ2KZXNU.cjs.map → chunk-WXUU3COI.cjs.map} +1 -1
- package/dist/{chunk-NAJN32MF.cjs → chunk-XF355M7O.cjs} +13 -13
- package/dist/{chunk-NAJN32MF.cjs.map → chunk-XF355M7O.cjs.map} +1 -1
- package/dist/{chunk-GPX5VC57.cjs → chunk-XGM4VVNV.cjs} +50 -50
- package/dist/{chunk-GPX5VC57.cjs.map → chunk-XGM4VVNV.cjs.map} +1 -1
- package/dist/connect/docx.cjs +19 -19
- package/dist/connect/index.cjs +996 -995
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/viewer.cjs +38 -37
- package/dist/connection/conversation/ConnectedMessage.js +1 -1
- package/dist/connection/conversation/ConnectedMessage.js.map +2 -2
- package/dist/connection/presentation/ConnectedSlidesTab.js +5 -3
- package/dist/connection/presentation/ConnectedSlidesTab.js.map +2 -2
- package/dist/connection/presentation/PresentationPill.js +3 -8
- package/dist/connection/presentation/PresentationPill.js.map +2 -2
- package/dist/connection/presentation/requests.d.ts +5 -0
- package/dist/connection/presentation/requests.js +8 -1
- package/dist/connection/presentation/requests.js.map +2 -2
- package/dist/connection/viewer/ViewerPdfPane.js +4 -1
- package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
- package/dist/connection/viewer/documentPlace.d.ts +5 -4
- package/dist/connection/viewer/documentPlace.js +2 -2
- package/dist/connection/viewer/documentPlace.js.map +2 -2
- package/dist/connection/viewer/pdf/PdfClipOutlines.d.ts +11 -0
- package/dist/connection/viewer/pdf/PdfClipOutlines.js +42 -0
- package/dist/connection/viewer/pdf/PdfClipOutlines.js.map +7 -0
- package/dist/connection/viewer/pdf/clipOutlines.d.ts +17 -0
- package/dist/connection/viewer/pdf/clipOutlines.js +24 -0
- package/dist/connection/viewer/pdf/clipOutlines.js.map +7 -0
- package/dist/connection/viewer/pdf/passageHighlights.d.ts +2 -0
- package/dist/connection/viewer/pdf/passageHighlights.js +12 -1
- package/dist/connection/viewer/pdf/passageHighlights.js.map +2 -2
- package/dist/connection/viewer/pdf/usePdfClipOutlines.d.ts +7 -0
- package/dist/connection/viewer/pdf/usePdfClipOutlines.js +36 -0
- package/dist/connection/viewer/pdf/usePdfClipOutlines.js.map +7 -0
- package/dist/connection/viewer/pdf/usePdfPassageHighlights.js +11 -2
- package/dist/connection/viewer/pdf/usePdfPassageHighlights.js.map +2 -2
- package/dist/dashboards/index.cjs +1 -1
- package/dist/embed/index.cjs +39 -39
- package/dist/files/index.cjs +224 -224
- package/dist/index.cjs +1597 -1596
- package/dist/index.cjs.map +1 -1
- package/dist/presentation/PresentControls.d.ts +11 -0
- package/dist/presentation/PresentControls.js +117 -0
- package/dist/presentation/PresentControls.js.map +7 -0
- package/dist/presentation/PresenterView.js +36 -5
- package/dist/presentation/PresenterView.js.map +2 -2
- package/dist/presentation/SlidesEditor.js +17 -1
- package/dist/presentation/SlidesEditor.js.map +2 -2
- package/dist/presentation/panel-id.d.ts +12 -2
- package/dist/presentation/panel-id.js +6 -1
- package/dist/presentation/panel-id.js.map +2 -2
- package/dist/presentation/slide-layout.d.ts +5 -1
- package/dist/presentation/slide-layout.js +16 -0
- package/dist/presentation/slide-layout.js.map +2 -2
- package/dist/settings/index.cjs +146 -146
- package/dist/shell/PanelPortal.js +13 -4
- package/dist/shell/PanelPortal.js.map +2 -2
- package/dist/shell/index.cjs +92 -91
- package/dist/shell/panel-windows.js +1 -0
- package/dist/shell/panel-windows.js.map +2 -2
- package/dist/studio/index.cjs +28 -28
- package/dist/styles.css +1 -1
- package/dist/workflow-canvas/index.cjs +53 -53
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedPresentation-4HLDZDWV.cjs +0 -183
- package/dist/ConnectedPresentation-4HLDZDWV.cjs.map +0 -1
- package/dist/ConnectedSlidesTab-7QDE2CZD.cjs.map +0 -1
- package/dist/FilesViewerDialog-IZI63FOV.cjs.map +0 -1
- package/dist/ai-KBYNRNZ6.cjs.map +0 -1
- package/dist/chunk-5LTIZ44D.cjs.map +0 -1
- package/dist/chunk-7VUJGHMY.cjs.map +0 -1
- package/dist/chunk-GX2EBMJW.cjs.map +0 -1
- package/dist/chunk-JZEYHDWJ.cjs.map +0 -1
- package/dist/chunk-Q3XJUXID.cjs.map +0 -1
- package/dist/chunk-QFXILJMJ.cjs.map +0 -1
- package/dist/chunk-VJ5ZLRBD.cjs.map +0 -1
- package/dist/chunk-XTR26TNE.cjs.map +0 -1
|
@@ -1,70 +1,56 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkXGM4VVNV_cjs = require('../chunk-XGM4VVNV.cjs');
|
|
5
5
|
require('../chunk-YZ6YOOTF.cjs');
|
|
6
6
|
require('../chunk-KWJW5TMH.cjs');
|
|
7
|
-
require('../chunk-
|
|
8
|
-
require('../chunk-
|
|
9
|
-
var
|
|
7
|
+
require('../chunk-7NLO7ASW.cjs');
|
|
8
|
+
require('../chunk-7PN3YENO.cjs');
|
|
9
|
+
var chunkUFT22LAB_cjs = require('../chunk-UFT22LAB.cjs');
|
|
10
10
|
require('../chunk-AEQT2QQX.cjs');
|
|
11
|
-
var
|
|
12
|
-
require('../chunk-
|
|
13
|
-
require('../chunk-
|
|
11
|
+
var chunkADDQKZ5I_cjs = require('../chunk-ADDQKZ5I.cjs');
|
|
12
|
+
require('../chunk-5QERK4PK.cjs');
|
|
13
|
+
require('../chunk-T73BHNQX.cjs');
|
|
14
14
|
require('../chunk-HYUKPHCT.cjs');
|
|
15
|
-
require('../chunk-
|
|
15
|
+
require('../chunk-ALK3PUUB.cjs');
|
|
16
16
|
require('../chunk-223D4727.cjs');
|
|
17
17
|
require('../chunk-SNUBQMIS.cjs');
|
|
18
|
-
var
|
|
18
|
+
var chunk7557LDAN_cjs = require('../chunk-7557LDAN.cjs');
|
|
19
19
|
require('../chunk-4ONPEVTP.cjs');
|
|
20
20
|
require('../chunk-V3KLUWQQ.cjs');
|
|
21
21
|
var chunkP5AQYC4D_cjs = require('../chunk-P5AQYC4D.cjs');
|
|
22
|
-
require('../chunk-
|
|
22
|
+
require('../chunk-WAV762GP.cjs');
|
|
23
23
|
require('../chunk-JH6JTI76.cjs');
|
|
24
24
|
require('../chunk-QQMMCXBP.cjs');
|
|
25
25
|
require('../chunk-DTMBAFIL.cjs');
|
|
26
26
|
require('../chunk-Z3LFF3YT.cjs');
|
|
27
|
-
require('../chunk-5SKHK3BG.cjs');
|
|
28
|
-
require('../chunk-IDCD5TEZ.cjs');
|
|
29
|
-
require('../chunk-M2FOXGJU.cjs');
|
|
30
|
-
require('../chunk-5F4DCIHS.cjs');
|
|
31
27
|
require('../chunk-WQMR3O2D.cjs');
|
|
32
28
|
require('../chunk-ORELHENJ.cjs');
|
|
33
29
|
require('../chunk-NWNVWO6L.cjs');
|
|
34
30
|
require('../chunk-SK6HQ46Q.cjs');
|
|
35
31
|
require('../chunk-TG2GM7WJ.cjs');
|
|
36
|
-
require('../chunk-MCXS6X37.cjs');
|
|
37
|
-
require('../chunk-KQF7POTG.cjs');
|
|
38
32
|
require('../chunk-VKH3BEZE.cjs');
|
|
39
|
-
require('../chunk-75BNMCUX.cjs');
|
|
40
33
|
var chunkNSD37OF5_cjs = require('../chunk-NSD37OF5.cjs');
|
|
41
34
|
require('../chunk-OEJQFPWO.cjs');
|
|
42
|
-
var
|
|
43
|
-
var
|
|
35
|
+
var chunkQG2U2JGX_cjs = require('../chunk-QG2U2JGX.cjs');
|
|
36
|
+
var chunkCQQQIZU4_cjs = require('../chunk-CQQQIZU4.cjs');
|
|
44
37
|
require('../chunk-QECKDZ47.cjs');
|
|
45
|
-
var
|
|
38
|
+
var chunkTP5PGWIO_cjs = require('../chunk-TP5PGWIO.cjs');
|
|
46
39
|
var chunkI4IS6ST6_cjs = require('../chunk-I4IS6ST6.cjs');
|
|
47
40
|
var chunk7JLJH5CW_cjs = require('../chunk-7JLJH5CW.cjs');
|
|
48
41
|
require('../chunk-EVZH6Z5O.cjs');
|
|
49
|
-
require('../chunk-IN6ILI5A.cjs');
|
|
50
|
-
var chunkHSLPFBK2_cjs = require('../chunk-HSLPFBK2.cjs');
|
|
51
42
|
require('../chunk-OYXWQTHF.cjs');
|
|
52
43
|
require('../chunk-S237ORM3.cjs');
|
|
53
44
|
require('../chunk-II2OEXHW.cjs');
|
|
54
|
-
require('../chunk-
|
|
55
|
-
require('../chunk-RYVZDFVO.cjs');
|
|
45
|
+
require('../chunk-JJZOL5MG.cjs');
|
|
56
46
|
require('../chunk-3YEXZX4H.cjs');
|
|
57
47
|
require('../chunk-4PA6VCCR.cjs');
|
|
58
|
-
var
|
|
48
|
+
var chunkWXUU3COI_cjs = require('../chunk-WXUU3COI.cjs');
|
|
59
49
|
require('../chunk-AHDJXIUB.cjs');
|
|
60
|
-
require('../chunk-YVCOQHCE.cjs');
|
|
61
50
|
require('../chunk-RL2HI6NP.cjs');
|
|
62
51
|
require('../chunk-6UZC4XVV.cjs');
|
|
63
|
-
|
|
64
|
-
var chunkQRAQZTJE_cjs = require('../chunk-QRAQZTJE.cjs');
|
|
65
|
-
var chunkUDSHVNU3_cjs = require('../chunk-UDSHVNU3.cjs');
|
|
52
|
+
require('../chunk-YVCOQHCE.cjs');
|
|
66
53
|
require('../chunk-JV5TVUOU.cjs');
|
|
67
|
-
require('../chunk-IPSHAMO2.cjs');
|
|
68
54
|
require('../chunk-ZVEW3JBT.cjs');
|
|
69
55
|
require('../chunk-M74FWYNL.cjs');
|
|
70
56
|
require('../chunk-QUMUAJ2P.cjs');
|
|
@@ -76,13 +62,27 @@ var chunkJR2YSBD5_cjs = require('../chunk-JR2YSBD5.cjs');
|
|
|
76
62
|
require('../chunk-TMX7YFVM.cjs');
|
|
77
63
|
var chunk3YZKDCWY_cjs = require('../chunk-3YZKDCWY.cjs');
|
|
78
64
|
require('../chunk-SJSGSHIT.cjs');
|
|
79
|
-
require('../chunk-PPCATBOY.cjs');
|
|
80
65
|
require('../chunk-ZW6FPIFC.cjs');
|
|
81
66
|
require('../chunk-ZT5MIFLC.cjs');
|
|
82
|
-
require('../chunk-
|
|
67
|
+
require('../chunk-5SKHK3BG.cjs');
|
|
68
|
+
require('../chunk-IDCD5TEZ.cjs');
|
|
69
|
+
require('../chunk-M2FOXGJU.cjs');
|
|
70
|
+
require('../chunk-5F4DCIHS.cjs');
|
|
71
|
+
require('../chunk-MCXS6X37.cjs');
|
|
72
|
+
require('../chunk-KQF7POTG.cjs');
|
|
73
|
+
require('../chunk-75BNMCUX.cjs');
|
|
74
|
+
require('../chunk-IN6ILI5A.cjs');
|
|
75
|
+
var chunkHSLPFBK2_cjs = require('../chunk-HSLPFBK2.cjs');
|
|
76
|
+
require('../chunk-FX3K6LNZ.cjs');
|
|
77
|
+
var chunkQGVOT7E4_cjs = require('../chunk-QGVOT7E4.cjs');
|
|
78
|
+
var chunkQRAQZTJE_cjs = require('../chunk-QRAQZTJE.cjs');
|
|
79
|
+
var chunkUDSHVNU3_cjs = require('../chunk-UDSHVNU3.cjs');
|
|
80
|
+
require('../chunk-IPSHAMO2.cjs');
|
|
81
|
+
require('../chunk-PPCATBOY.cjs');
|
|
83
82
|
var chunkTKHCIHE2_cjs = require('../chunk-TKHCIHE2.cjs');
|
|
84
83
|
require('../chunk-JDFBEGQO.cjs');
|
|
85
84
|
require('../chunk-ULWRNGGE.cjs');
|
|
85
|
+
require('../chunk-LJJJ6CYH.cjs');
|
|
86
86
|
require('../chunk-PLIF5CUV.cjs');
|
|
87
87
|
var react = require('react');
|
|
88
88
|
var react$2 = require('@arbidocs/react');
|
|
@@ -374,9 +374,9 @@ function SignalsEditor({
|
|
|
374
374
|
{
|
|
375
375
|
className: ui.cn(
|
|
376
376
|
"space-y-1.5 rounded-md border p-2",
|
|
377
|
-
|
|
377
|
+
chunkTP5PGWIO_cjs.isIncompleteSignal(signal) ? "border-destructive/50" : "border-border"
|
|
378
378
|
),
|
|
379
|
-
"data-incomplete":
|
|
379
|
+
"data-incomplete": chunkTP5PGWIO_cjs.isIncompleteSignal(signal) || void 0,
|
|
380
380
|
"data-testid": `${testId}-${i}`,
|
|
381
381
|
children: [
|
|
382
382
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -1680,7 +1680,7 @@ function plan(value, options) {
|
|
|
1680
1680
|
criteria: [],
|
|
1681
1681
|
max_passes: 3,
|
|
1682
1682
|
documents: [],
|
|
1683
|
-
steps:
|
|
1683
|
+
steps: chunkTP5PGWIO_cjs.toPlanSteps(value.workflow, options)
|
|
1684
1684
|
};
|
|
1685
1685
|
}
|
|
1686
1686
|
function builderToWorkflowRequest(value, workspaceId, options = {}) {
|
|
@@ -1715,7 +1715,7 @@ function builderToWorkflowUpdate(value, options = {}) {
|
|
|
1715
1715
|
}
|
|
1716
1716
|
function workflowRecordToBuilder(record) {
|
|
1717
1717
|
const planned = record.plan?.steps ?? [];
|
|
1718
|
-
const steps = planned.length ?
|
|
1718
|
+
const steps = planned.length ? chunkTP5PGWIO_cjs.fromPlanSteps(planned) : record.prompt || record.skill_ref ? [
|
|
1719
1719
|
{
|
|
1720
1720
|
id: "work",
|
|
1721
1721
|
kind: "agent",
|
|
@@ -1732,7 +1732,7 @@ function workflowRecordToBuilder(record) {
|
|
|
1732
1732
|
inputs: [],
|
|
1733
1733
|
landing: "chat",
|
|
1734
1734
|
schedulable: false,
|
|
1735
|
-
run: { kind: "steps", steps, layout:
|
|
1735
|
+
run: { kind: "steps", steps, layout: chunkTP5PGWIO_cjs.layoutFromPlanSteps(planned ?? []) }
|
|
1736
1736
|
},
|
|
1737
1737
|
trigger: {
|
|
1738
1738
|
...DEFAULT_WORKFLOW_TRIGGER,
|
|
@@ -1793,7 +1793,7 @@ function triggerSummary(trigger, options = {}) {
|
|
|
1793
1793
|
case "once":
|
|
1794
1794
|
return trigger.runAt ? new Date(trigger.runAt).toLocaleString() : l.starts.once;
|
|
1795
1795
|
case "repeat":
|
|
1796
|
-
return trigger.rrule ?
|
|
1796
|
+
return trigger.rrule ? chunkTP5PGWIO_cjs.describeRRule(trigger.rrule) : l.starts.repeat;
|
|
1797
1797
|
case "event":
|
|
1798
1798
|
if (isSignalTrigger(trigger))
|
|
1799
1799
|
return trigger.signal ? l.signalSummary.replace("{signal}", trigger.signal) : l.stepSignals;
|
|
@@ -1852,7 +1852,7 @@ function TriggerInspector({
|
|
|
1852
1852
|
}
|
|
1853
1853
|
)
|
|
1854
1854
|
] }),
|
|
1855
|
-
trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1855
|
+
trigger.start === "repeat" && /* @__PURE__ */ jsxRuntime.jsx(chunkCQQQIZU4_cjs.RecurrenceBuilder, { rrule: trigger.rrule, onChange: (rrule) => set({ rrule }) }),
|
|
1856
1856
|
trigger.start === "event" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1857
1857
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.event }),
|
|
1858
1858
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1904,7 +1904,7 @@ function TriggerInspector({
|
|
|
1904
1904
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1905
1905
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { className: "text-xs", children: l.agent }),
|
|
1906
1906
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1907
|
-
|
|
1907
|
+
chunkWXUU3COI_cjs.AgentSelect,
|
|
1908
1908
|
{
|
|
1909
1909
|
agents,
|
|
1910
1910
|
value: trigger.agentId,
|
|
@@ -2743,13 +2743,13 @@ function WorkflowPreview({
|
|
|
2743
2743
|
renderIcon,
|
|
2744
2744
|
testId
|
|
2745
2745
|
}) {
|
|
2746
|
-
const run =
|
|
2746
|
+
const run = chunkQG2U2JGX_cjs.useWorkflowPreview(workflow, {
|
|
2747
2747
|
resolveWorkflow: (id) => workflows.find((w) => w.id === id),
|
|
2748
2748
|
compose,
|
|
2749
2749
|
answer
|
|
2750
2750
|
});
|
|
2751
2751
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2752
|
-
|
|
2752
|
+
chunkCQQQIZU4_cjs.WorkflowRunner,
|
|
2753
2753
|
{
|
|
2754
2754
|
workflow,
|
|
2755
2755
|
run,
|
|
@@ -2820,7 +2820,7 @@ function scheduledTaskBuilderValue() {
|
|
|
2820
2820
|
]
|
|
2821
2821
|
}
|
|
2822
2822
|
},
|
|
2823
|
-
trigger: { ...value.trigger, start: "repeat", rrule:
|
|
2823
|
+
trigger: { ...value.trigger, start: "repeat", rrule: chunkTP5PGWIO_cjs.buildRRule(chunkTP5PGWIO_cjs.DEFAULT_RECURRENCE) }
|
|
2824
2824
|
};
|
|
2825
2825
|
}
|
|
2826
2826
|
var TITLE_WORDS = 6;
|
|
@@ -3039,13 +3039,13 @@ function ConnectedWorkflowsPage({
|
|
|
3039
3039
|
historyLabels,
|
|
3040
3040
|
testId = "workflows-page"
|
|
3041
3041
|
}) {
|
|
3042
|
-
const webWorkflows =
|
|
3042
|
+
const webWorkflows = chunkUFT22LAB_cjs.useNamedWorkflows(chunk7JLJH5CW_cjs.WEB_WORKFLOWS);
|
|
3043
3043
|
const l = { ...DEFAULT_CONNECTED_WORKFLOWS_PAGE_LABELS, ...labels };
|
|
3044
3044
|
const host = chunk3YZKDCWY_cjs.useHost();
|
|
3045
3045
|
const config = host.workflows;
|
|
3046
3046
|
const { openConversation, openFiles } = chunkTKHCIHE2_cjs.useBlocksEnvironment();
|
|
3047
3047
|
const openWorkflow = chunkP5AQYC4D_cjs.useOpenWorkflow();
|
|
3048
|
-
const renderPerson =
|
|
3048
|
+
const renderPerson = chunkXGM4VVNV_cjs.useRenderTaskPerson();
|
|
3049
3049
|
const refreshDocuments = react$2.useRefreshDocuments();
|
|
3050
3050
|
const invalidateTags = react$2.useInvalidateTagData();
|
|
3051
3051
|
const { data: tags = [] } = react$2.useTags();
|
|
@@ -3076,7 +3076,7 @@ function ConnectedWorkflowsPage({
|
|
|
3076
3076
|
openHistory,
|
|
3077
3077
|
closeHistoryTab,
|
|
3078
3078
|
selectHistoryTab
|
|
3079
|
-
} =
|
|
3079
|
+
} = chunkXGM4VVNV_cjs.useWorkflowsPageState({
|
|
3080
3080
|
historyWorkflowId: requestedHistoryId ?? historyWorkflowId,
|
|
3081
3081
|
onHistoryWorkflowConsumed: consumeHistory
|
|
3082
3082
|
});
|
|
@@ -3125,14 +3125,14 @@ function ConnectedWorkflowsPage({
|
|
|
3125
3125
|
await refreshDocuments(execution.document_ext_ids);
|
|
3126
3126
|
await invalidateTags();
|
|
3127
3127
|
const fieldIds = execution.result?.tag_ext_ids ?? runsFor?.action?.tag_ext_ids ?? [];
|
|
3128
|
-
|
|
3128
|
+
chunkADDQKZ5I_cjs.useAiReviewStore.getState().setRun({
|
|
3129
3129
|
docIds: execution.document_ext_ids,
|
|
3130
3130
|
tags: fieldIds.map((fieldId) => ({
|
|
3131
3131
|
id: fieldId,
|
|
3132
3132
|
name: tags.find((tag) => tag.external_id === fieldId)?.name ?? "Review"
|
|
3133
3133
|
}))
|
|
3134
3134
|
});
|
|
3135
|
-
|
|
3135
|
+
chunkADDQKZ5I_cjs.useAiReviewStore.getState().setOpen(true);
|
|
3136
3136
|
openFiles(
|
|
3137
3137
|
execution.label_ext_id ? { filters: { [execution.label_ext_id]: "include" } } : void 0
|
|
3138
3138
|
);
|
|
@@ -3144,7 +3144,7 @@ function ConnectedWorkflowsPage({
|
|
|
3144
3144
|
return (
|
|
3145
3145
|
// The page in the Workflows page's frame: padded, scrolling.
|
|
3146
3146
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full min-h-0 w-full overflow-auto p-4 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3147
|
-
|
|
3147
|
+
chunkXGM4VVNV_cjs.ConnectedWorkflowRunPage,
|
|
3148
3148
|
{
|
|
3149
3149
|
workflow: running.workflow,
|
|
3150
3150
|
projectFrom: running.projectFrom,
|
|
@@ -3232,7 +3232,7 @@ function ConnectedWorkflowsPage({
|
|
|
3232
3232
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col", "data-testid": testId, children: [
|
|
3233
3233
|
pageHeader && /* @__PURE__ */ jsxRuntime.jsx(chunkNSD37OF5_cjs.PageHeader, { ...pageHeader }),
|
|
3234
3234
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3235
|
-
|
|
3235
|
+
chunk7557LDAN_cjs.ConnectedWorkflowsTable,
|
|
3236
3236
|
{
|
|
3237
3237
|
onOpenTemplate: (id) => openBuilder({ kind: "template", id }),
|
|
3238
3238
|
tabs: [
|
|
@@ -3262,7 +3262,7 @@ function ConnectedWorkflowsPage({
|
|
|
3262
3262
|
}
|
|
3263
3263
|
},
|
|
3264
3264
|
content: hostTab ? hostTab.content : runsFor ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3265
|
-
|
|
3265
|
+
chunkXGM4VVNV_cjs.ConnectedWorkflowHistory,
|
|
3266
3266
|
{
|
|
3267
3267
|
inline: true,
|
|
3268
3268
|
hideHeader: true,
|
|
@@ -3287,7 +3287,7 @@ function ConnectedWorkflowsPage({
|
|
|
3287
3287
|
) : void 0,
|
|
3288
3288
|
automationsOnly: true,
|
|
3289
3289
|
gridId: "automations-grid-v1",
|
|
3290
|
-
describeTrigger: (workflow) => workflow.on_demand ? l.manualTrigger :
|
|
3290
|
+
describeTrigger: (workflow) => workflow.on_demand ? l.manualTrigger : chunkTP5PGWIO_cjs.describeTrigger(workflow),
|
|
3291
3291
|
formatDate: ui.formatFriendlyDate,
|
|
3292
3292
|
renderPerson,
|
|
3293
3293
|
onViewRuns: showHistory,
|
|
@@ -3326,7 +3326,7 @@ function ConnectedWorkflowsPage({
|
|
|
3326
3326
|
}
|
|
3327
3327
|
),
|
|
3328
3328
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3329
|
-
|
|
3329
|
+
chunkXGM4VVNV_cjs.ConnectedTaskComposer,
|
|
3330
3330
|
{
|
|
3331
3331
|
kind: "workflow",
|
|
3332
3332
|
saveOnly: true,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arbidocs/coedit",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.122",
|
|
4
4
|
"description": "Real-time collaboration for the ARBI native DOCX editor: a Yjs mirror of the canonical OOXML package, session, and server runtime",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arbidocs/blocks",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.122",
|
|
4
4
|
"description": "Composable, domain-neutral UI blocks for ARBI apps, organised by capability (retrieval, facts, agents, workspaces, citations, collaboration) plus shell, theme and site primitives, on top of @arbidocs/react.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -344,9 +344,9 @@
|
|
|
344
344
|
"custom-site:test:e2e": "playwright test -c examples/custom-site/playwright.config.ts"
|
|
345
345
|
},
|
|
346
346
|
"dependencies": {
|
|
347
|
-
"@arbidocs/client": "0.5.
|
|
348
|
-
"@arbidocs/coedit": "0.5.
|
|
349
|
-
"@arbidocs/sdk": "0.5.
|
|
347
|
+
"@arbidocs/client": "0.5.122",
|
|
348
|
+
"@arbidocs/coedit": "0.5.122",
|
|
349
|
+
"@arbidocs/sdk": "0.5.122",
|
|
350
350
|
"@auth0/auth0-react": "^2.19.0",
|
|
351
351
|
"@dnd-kit/core": "^6.3.1",
|
|
352
352
|
"@dnd-kit/sortable": "^10.0.0",
|
|
@@ -397,7 +397,7 @@
|
|
|
397
397
|
"y-protocols": "^1.0.6"
|
|
398
398
|
},
|
|
399
399
|
"peerDependencies": {
|
|
400
|
-
"@arbidocs/react": "0.5.
|
|
400
|
+
"@arbidocs/react": "0.5.122",
|
|
401
401
|
"@lexical/html": "0.35.0",
|
|
402
402
|
"@lexical/link": "0.35.0",
|
|
403
403
|
"@lexical/list": "0.35.0",
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var chunkQ3XJUXID_cjs = require('./chunk-Q3XJUXID.cjs');
|
|
5
|
-
require('./chunk-WOOOMTTA.cjs');
|
|
6
|
-
var chunkGX2EBMJW_cjs = require('./chunk-GX2EBMJW.cjs');
|
|
7
|
-
require('./chunk-5GCCUXMT.cjs');
|
|
8
|
-
require('./chunk-NLOETJCB.cjs');
|
|
9
|
-
require('./chunk-GKVE5JGB.cjs');
|
|
10
|
-
var chunk5LTIZ44D_cjs = require('./chunk-5LTIZ44D.cjs');
|
|
11
|
-
var chunkXTR26TNE_cjs = require('./chunk-XTR26TNE.cjs');
|
|
12
|
-
var chunkPL7HUTM3_cjs = require('./chunk-PL7HUTM3.cjs');
|
|
13
|
-
var chunkVJ5ZLRBD_cjs = require('./chunk-VJ5ZLRBD.cjs');
|
|
14
|
-
require('./chunk-HYUKPHCT.cjs');
|
|
15
|
-
require('./chunk-GQXPNIRE.cjs');
|
|
16
|
-
require('./chunk-QFXILJMJ.cjs');
|
|
17
|
-
require('./chunk-XJEXFEWG.cjs');
|
|
18
|
-
require('./chunk-YZSQ7F5K.cjs');
|
|
19
|
-
require('./chunk-7JLJH5CW.cjs');
|
|
20
|
-
require('./chunk-EVZH6Z5O.cjs');
|
|
21
|
-
require('./chunk-FX3K6LNZ.cjs');
|
|
22
|
-
require('./chunk-MZ2KZXNU.cjs');
|
|
23
|
-
require('./chunk-AHDJXIUB.cjs');
|
|
24
|
-
require('./chunk-YVCOQHCE.cjs');
|
|
25
|
-
require('./chunk-QRAQZTJE.cjs');
|
|
26
|
-
require('./chunk-UDSHVNU3.cjs');
|
|
27
|
-
require('./chunk-JV5TVUOU.cjs');
|
|
28
|
-
require('./chunk-IPSHAMO2.cjs');
|
|
29
|
-
require('./chunk-VZOOGA47.cjs');
|
|
30
|
-
require('./chunk-HQDR43JC.cjs');
|
|
31
|
-
require('./chunk-JR2YSBD5.cjs');
|
|
32
|
-
require('./chunk-3YZKDCWY.cjs');
|
|
33
|
-
require('./chunk-SJSGSHIT.cjs');
|
|
34
|
-
require('./chunk-PPCATBOY.cjs');
|
|
35
|
-
require('./chunk-TKHCIHE2.cjs');
|
|
36
|
-
require('./chunk-JDFBEGQO.cjs');
|
|
37
|
-
require('./chunk-ULWRNGGE.cjs');
|
|
38
|
-
require('./chunk-PLIF5CUV.cjs');
|
|
39
|
-
var react$1 = require('react');
|
|
40
|
-
var lucideReact = require('lucide-react');
|
|
41
|
-
var react = require('@arbidocs/react');
|
|
42
|
-
var ui = require('@arbidocs/react/ui');
|
|
43
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
44
|
-
|
|
45
|
-
var PRESENT_WIDTH = 1280;
|
|
46
|
-
function useStageShapedWindow(view, presenting) {
|
|
47
|
-
react$1.useEffect(() => {
|
|
48
|
-
if (!view || !presenting || !view.opener) return;
|
|
49
|
-
const before = { width: view.outerWidth, height: view.outerHeight };
|
|
50
|
-
const chromeWidth = view.outerWidth - view.innerWidth;
|
|
51
|
-
const chromeHeight = view.outerHeight - view.innerHeight;
|
|
52
|
-
const width = Math.max(
|
|
53
|
-
view.innerWidth,
|
|
54
|
-
Math.min(PRESENT_WIDTH, Math.round((view.screen.availWidth - chromeWidth) * 0.6))
|
|
55
|
-
);
|
|
56
|
-
const height = Math.min(
|
|
57
|
-
Math.round(width / chunkXTR26TNE_cjs.STAGE_ASPECT),
|
|
58
|
-
view.screen.availHeight - chromeHeight
|
|
59
|
-
);
|
|
60
|
-
try {
|
|
61
|
-
view.resizeTo(Math.round(height * chunkXTR26TNE_cjs.STAGE_ASPECT) + chromeWidth, height + chromeHeight);
|
|
62
|
-
} catch {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
return () => {
|
|
66
|
-
try {
|
|
67
|
-
if (!view.closed) view.resizeTo(before.width, before.height);
|
|
68
|
-
} catch {
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
}, [view, presenting]);
|
|
72
|
-
}
|
|
73
|
-
function PresenterView({ onPresent, ...editor }) {
|
|
74
|
-
const presenting = chunkXTR26TNE_cjs.usePresentation((s) => s.presenting);
|
|
75
|
-
const [view, setView] = react$1.useState(null);
|
|
76
|
-
const rootRef = react$1.useCallback((node) => {
|
|
77
|
-
if (node) setView(node.ownerDocument.defaultView);
|
|
78
|
-
}, []);
|
|
79
|
-
chunk5LTIZ44D_cjs.usePresenterKeys(presenting ? view : null, true);
|
|
80
|
-
useStageShapedWindow(view, presenting);
|
|
81
|
-
if (presenting) {
|
|
82
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
83
|
-
"div",
|
|
84
|
-
{
|
|
85
|
-
ref: rootRef,
|
|
86
|
-
className: "h-full w-full select-none bg-black",
|
|
87
|
-
style: { cursor: "none" },
|
|
88
|
-
onDoubleClick: () => view && chunk5LTIZ44D_cjs.toggleFullscreen(view),
|
|
89
|
-
"data-testid": "presentation-present",
|
|
90
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(chunkQ3XJUXID_cjs.PresentationStage, {})
|
|
91
|
-
}
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref: rootRef, className: "h-full min-h-0", "data-testid": "presenter-view", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
95
|
-
chunkQ3XJUXID_cjs.SlidesEditor,
|
|
96
|
-
{
|
|
97
|
-
...editor,
|
|
98
|
-
onPresent: onPresent ?? (() => chunkXTR26TNE_cjs.usePresentation.getState().setPresenting(true))
|
|
99
|
-
}
|
|
100
|
-
) });
|
|
101
|
-
}
|
|
102
|
-
function ConnectedPresentation() {
|
|
103
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkPL7HUTM3_cjs.ConnectedDocumentToolsProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(PresentationWindow, {}) });
|
|
104
|
-
}
|
|
105
|
-
function PresentationWindow() {
|
|
106
|
-
const session = react.useArbiSessionStore();
|
|
107
|
-
const notify = chunkXTR26TNE_cjs.usePresentation((s) => s.notify);
|
|
108
|
-
const presenting = chunkXTR26TNE_cjs.usePresentation((s) => s.presenting);
|
|
109
|
-
const isOpen = react.useArbiSessionState((state) => react.isPanelOpen(state, chunkVJ5ZLRBD_cjs.PRESENTATION_PANEL));
|
|
110
|
-
const { user } = react.useArbiSession();
|
|
111
|
-
const userId = user?.external_id ?? null;
|
|
112
|
-
const shownFor = react$1.useRef(userId);
|
|
113
|
-
const { downloadFile } = chunkQ3XJUXID_cjs.usePresentationFiles();
|
|
114
|
-
const logoId = chunkXTR26TNE_cjs.usePresentation((s) => s.theme.logo?.documentId ?? null);
|
|
115
|
-
const controller = chunkQ3XJUXID_cjs.usePresentationController(isOpen && !presenting);
|
|
116
|
-
react$1.useEffect(() => {
|
|
117
|
-
if (shownFor.current === userId) return;
|
|
118
|
-
shownFor.current = userId;
|
|
119
|
-
chunkXTR26TNE_cjs.usePresentation.getState().reset();
|
|
120
|
-
session.closePanel(chunkVJ5ZLRBD_cjs.PRESENTATION_PANEL);
|
|
121
|
-
}, [userId, session]);
|
|
122
|
-
react$1.useEffect(() => {
|
|
123
|
-
if (!logoId) return;
|
|
124
|
-
let current = true;
|
|
125
|
-
downloadFile(logoId).then((image) => current && chunkXTR26TNE_cjs.usePresentation.getState().setLogoImage(image)).catch(() => current && notify("The logo could not be read", "error"));
|
|
126
|
-
return () => {
|
|
127
|
-
current = false;
|
|
128
|
-
};
|
|
129
|
-
}, [logoId, downloadFile, notify]);
|
|
130
|
-
react$1.useEffect(() => {
|
|
131
|
-
if (!isOpen) chunkXTR26TNE_cjs.usePresentation.getState().setPresenting(false);
|
|
132
|
-
}, [isOpen]);
|
|
133
|
-
const wasPresenting = react$1.useRef(presenting);
|
|
134
|
-
react$1.useEffect(() => {
|
|
135
|
-
if (wasPresenting.current && !presenting && isOpen && chunkVJ5ZLRBD_cjs.presentationWindowOnlyPresents()) {
|
|
136
|
-
session.closePanel(chunkVJ5ZLRBD_cjs.PRESENTATION_PANEL);
|
|
137
|
-
}
|
|
138
|
-
wasPresenting.current = presenting;
|
|
139
|
-
}, [presenting, isOpen, session]);
|
|
140
|
-
const onClose = react$1.useCallback(() => session.closePanel(chunkVJ5ZLRBD_cjs.PRESENTATION_PANEL), [session]);
|
|
141
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
142
|
-
chunkGX2EBMJW_cjs.ConnectedPanelHost,
|
|
143
|
-
{
|
|
144
|
-
panelId: chunkVJ5ZLRBD_cjs.PRESENTATION_PANEL,
|
|
145
|
-
isOpen,
|
|
146
|
-
onClose,
|
|
147
|
-
title: "Presentation",
|
|
148
|
-
defaultMode: "popout",
|
|
149
|
-
defaultWidth: 960,
|
|
150
|
-
closeTestId: "presentation-panel-close",
|
|
151
|
-
children: () => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
152
|
-
!presenting && controller.dialogs,
|
|
153
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
154
|
-
PresenterView,
|
|
155
|
-
{
|
|
156
|
-
...controller.editor,
|
|
157
|
-
actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
158
|
-
controller.editor.actions,
|
|
159
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
160
|
-
ui.Button,
|
|
161
|
-
{
|
|
162
|
-
type: "button",
|
|
163
|
-
size: "icon",
|
|
164
|
-
variant: "ghost",
|
|
165
|
-
className: "size-8 text-muted-foreground hover:text-foreground pointer-coarse:size-11",
|
|
166
|
-
title: "Back into the app's viewer",
|
|
167
|
-
"aria-label": "Back to the viewer",
|
|
168
|
-
onClick: onClose,
|
|
169
|
-
"data-testid": "presentation-pop-in",
|
|
170
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeftClose, { className: "size-4" })
|
|
171
|
-
}
|
|
172
|
-
)
|
|
173
|
-
] })
|
|
174
|
-
}
|
|
175
|
-
)
|
|
176
|
-
] })
|
|
177
|
-
}
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
exports.ConnectedPresentation = ConnectedPresentation;
|
|
182
|
-
//# sourceMappingURL=ConnectedPresentation-4HLDZDWV.cjs.map
|
|
183
|
-
//# sourceMappingURL=ConnectedPresentation-4HLDZDWV.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/presentation/PresenterView.tsx","../src/connection/presentation/ConnectedPresentation.tsx"],"names":["useEffect","STAGE_ASPECT","usePresentation","useState","useCallback","usePresenterKeys","jsx","toggleFullscreen","PresentationStage","SlidesEditor","ConnectedDocumentToolsProvider","useArbiSessionStore","useArbiSessionState","isPanelOpen","PRESENTATION_PANEL","useArbiSession","useRef","usePresentationFiles","usePresentationController","presentationWindowOnlyPresents","ConnectedPanelHost","jsxs","Fragment","Button","PanelLeftClose"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,IAAM,aAAA,GAAgB,IAAA;AAOtB,SAAS,oBAAA,CAAqB,MAAqB,UAAA,EAAqB;AACtE,EAAAA,iBAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,UAAA,IAAc,CAAC,KAAK,MAAA,EAAQ;AAC1C,IAAA,MAAM,SAAS,EAAE,KAAA,EAAO,KAAK,UAAA,EAAY,MAAA,EAAQ,KAAK,WAAA,EAAY;AAClE,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,UAAA;AAC3C,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,WAAA,GAAc,IAAA,CAAK,WAAA;AAE7C,IAAA,MAAM,QAAQ,IAAA,CAAK,GAAA;AAAA,MACjB,IAAA,CAAK,UAAA;AAAA,MACL,IAAA,CAAK,GAAA,CAAI,aAAA,EAAe,IAAA,CAAK,KAAA,CAAA,CAAO,KAAK,MAAA,CAAO,UAAA,GAAa,WAAA,IAAe,GAAG,CAAC;AAAA,KAClF;AACA,IAAA,MAAM,SAAS,IAAA,CAAK,GAAA;AAAA,MAClB,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQC,8BAAY,CAAA;AAAA,MAC/B,IAAA,CAAK,OAAO,WAAA,GAAc;AAAA,KAC5B;AACA,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,QAAA,CAAS,KAAK,KAAA,CAAM,MAAA,GAASA,8BAAY,CAAA,GAAI,WAAA,EAAa,SAAS,YAAY,CAAA;AAAA,IACtF,CAAA,CAAA,MAAQ;AACN,MAAA;AAAA,IACF;AACA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI;AACF,QAAA,IAAI,CAAC,KAAK,MAAA,EAAQ,IAAA,CAAK,SAAS,MAAA,CAAO,KAAA,EAAO,OAAO,MAAM,CAAA;AAAA,MAC7D,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,UAAU,CAAC,CAAA;AACvB;AAOO,SAAS,aAAA,CAAc,EAAE,SAAA,EAAW,GAAG,QAAO,EAAuB;AAC1E,EAAA,MAAM,UAAA,GAAaC,iCAAA,CAAgB,CAAC,CAAA,KAAM,EAAE,UAAU,CAAA;AACtD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,iBAAwB,IAAI,CAAA;AAEpD,EAAA,MAAM,OAAA,GAAUC,mBAAA,CAAY,CAAC,IAAA,KAAgC;AAC3D,IAAA,IAAI,IAAA,EAAM,OAAA,CAAQ,IAAA,CAAK,aAAA,CAAc,WAAW,CAAA;AAAA,EAClD,CAAA,EAAG,EAAE,CAAA;AACL,EAAAC,kCAAA,CAAiB,UAAA,GAAa,IAAA,GAAO,IAAA,EAAM,IAAI,CAAA;AAC/C,EAAA,oBAAA,CAAqB,MAAM,UAAU,CAAA;AAErC,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,uBACEC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,SAAA,EAAU,oCAAA;AAAA,QACV,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAO;AAAA,QACxB,aAAA,EAAe,MAAM,IAAA,IAAQC,kCAAA,CAAiB,IAAI,CAAA;AAAA,QAClD,aAAA,EAAY,sBAAA;AAAA,QAEZ,yCAACC,mCAAA,EAAA,EAAkB;AAAA;AAAA,KACrB;AAAA,EAEJ;AACA,EAAA,sCACG,KAAA,EAAA,EAAI,GAAA,EAAK,SAAS,SAAA,EAAU,gBAAA,EAAiB,eAAY,gBAAA,EACxD,QAAA,kBAAAF,cAAA;AAAA,IAACG,8BAAA;AAAA,IAAA;AAAA,MACE,GAAG,MAAA;AAAA,MACJ,WAAW,SAAA,KAAc,MAAMP,kCAAgB,QAAA,EAAS,CAAE,cAAc,IAAI,CAAA;AAAA;AAAA,GAC9E,EACF,CAAA;AAEJ;AC/DO,SAAS,qBAAA,GAAwB;AACtC,EAAA,uBACEI,cAAAA,CAACI,gDAAA,EAAA,EACC,QAAA,kBAAAJ,cAAAA,CAAC,sBAAmB,CAAA,EACtB,CAAA;AAEJ;AAEA,SAAS,kBAAA,GAAqB;AAC5B,EAAA,MAAM,UAAUK,yBAAA,EAAoB;AACpC,EAAA,MAAM,MAAA,GAAST,iCAAA,CAAgB,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AAC9C,EAAA,MAAM,UAAA,GAAaA,iCAAA,CAAgB,CAAC,CAAA,KAAM,EAAE,UAAU,CAAA;AACtD,EAAA,MAAM,SAASU,yBAAA,CAAoB,CAAC,UAAUC,iBAAA,CAAY,KAAA,EAAOC,oCAAkB,CAAC,CAAA;AACpF,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIC,oBAAA,EAAe;AAChC,EAAA,MAAM,MAAA,GAAS,MAAM,WAAA,IAAe,IAAA;AACpC,EAAA,MAAM,QAAA,GAAWC,eAAO,MAAM,CAAA;AAC9B,EAAA,MAAM,EAAE,YAAA,EAAa,GAAIC,sCAAA,EAAqB;AAC9C,EAAA,MAAM,MAAA,GAASf,kCAAgB,CAAC,CAAA,KAAM,EAAE,KAAA,CAAM,IAAA,EAAM,cAAc,IAAI,CAAA;AACtE,EAAA,MAAM,UAAA,GAAagB,2CAAA,CAA0B,MAAA,IAAU,CAAC,UAAU,CAAA;AAElE,EAAAlB,kBAAU,MAAM;AACd,IAAA,IAAI,QAAA,CAAS,YAAY,MAAA,EAAQ;AACjC,IAAA,QAAA,CAAS,OAAA,GAAU,MAAA;AACnB,IAAAE,iCAAA,CAAgB,QAAA,GAAW,KAAA,EAAM;AACjC,IAAA,OAAA,CAAQ,WAAWY,oCAAkB,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAGpB,EAAAd,kBAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,IAAI,OAAA,GAAU,IAAA;AACd,IAAA,YAAA,CAAa,MAAM,CAAA,CAChB,IAAA,CAAK,CAAC,KAAA,KAAU,OAAA,IAAWE,kCAAgB,QAAA,EAAS,CAAE,aAAa,KAAK,CAAC,EACzE,KAAA,CAAM,MAAM,WAAW,MAAA,CAAO,4BAAA,EAA8B,OAAO,CAAC,CAAA;AACvE,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAA,EAAc,MAAM,CAAC,CAAA;AAGjC,EAAAF,kBAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQE,iCAAA,CAAgB,QAAA,EAAS,CAAE,cAAc,KAAK,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,EAAA,MAAM,aAAA,GAAgBc,eAAO,UAAU,CAAA;AACvC,EAAAhB,kBAAU,MAAM;AACd,IAAA,IAAI,cAAc,OAAA,IAAW,CAAC,UAAA,IAAc,MAAA,IAAUmB,kDAA+B,EAAG;AACtF,MAAA,OAAA,CAAQ,WAAWL,oCAAkB,CAAA;AAAA,IACvC;AACA,IAAA,aAAA,CAAc,OAAA,GAAU,UAAA;AAAA,EAC1B,CAAA,EAAG,CAAC,UAAA,EAAY,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEhC,EAAA,MAAM,OAAA,GAAUV,oBAAY,MAAM,OAAA,CAAQ,WAAWU,oCAAkB,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEnF,EAAA,uBACER,cAAAA;AAAA,IAACc,oCAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAASN,oCAAA;AAAA,MACT,MAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA,EAAM,cAAA;AAAA,MACN,WAAA,EAAY,QAAA;AAAA,MACZ,YAAA,EAAc,GAAA;AAAA,MACd,WAAA,EAAY,0BAAA;AAAA,MAGX,gCACCO,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,CAAC,cAAc,UAAA,CAAW,OAAA;AAAA,wBAC3BhB,cAAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACE,GAAG,UAAA,CAAW,MAAA;AAAA,YACf,yBACEe,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,UAAA,CAAW,MAAA,CAAO,OAAA;AAAA,8BACnBhB,cAAAA;AAAA,gBAACiB,SAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,MAAA;AAAA,kBACL,OAAA,EAAQ,OAAA;AAAA,kBACR,SAAA,EAAU,2EAAA;AAAA,kBACV,KAAA,EAAM,4BAAA;AAAA,kBACN,YAAA,EAAW,oBAAA;AAAA,kBACX,OAAA,EAAS,OAAA;AAAA,kBACT,aAAA,EAAY,qBAAA;AAAA,kBAEZ,QAAA,kBAAAjB,cAAAA,CAACkB,0BAAA,EAAA,EAAe,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AACrC,aAAA,EACF;AAAA;AAAA;AAEJ,OAAA,EACF;AAAA;AAAA,GAEJ;AAEJ","file":"ConnectedPresentation-4HLDZDWV.cjs","sourcesContent":["/**\n * The presentation in a window of its own, in one of two modes.\n *\n * Present: nothing but the stage on black, no controls and no pointer: what is shared in a call or\n * shown on a projector. Keys drive it (arrows / Page Up / Page Down change slide, B blanks, F or\n * double-click toggles full screen, Space plays videos, Escape stops presenting).\n *\n * Edit: the slides editor (`SlidesEditor`), the same as in the viewer's tab, when the presentation\n * is edited in its own window (beside the document its clips come from).\n */\n\nimport { useCallback, useEffect, useState } from 'react'\nimport { PresentationStage } from './PresentationStage'\nimport { SlidesEditor, type SlidesEditorProps } from './SlidesEditor'\nimport { STAGE_ASPECT } from './model'\nimport { usePresentation } from './store'\nimport { toggleFullscreen, usePresenterKeys } from './usePresenterKeys'\n\n/** The presenting window's page width, at most (smaller on a small screen). */\nconst PRESENT_WIDTH = 1280\n\n/**\n * While presenting in a pop-out, its page is made 16:9 and wide enough to share sharply, so a\n * shared window is all stage with no bars; editing again gives the window back its size. Only a\n * pop-out (a window this app opened) can be resized; the app's own window is left alone.\n */\nfunction useStageShapedWindow(view: Window | null, presenting: boolean) {\n useEffect(() => {\n if (!view || !presenting || !view.opener) return\n const before = { width: view.outerWidth, height: view.outerHeight }\n const chromeWidth = view.outerWidth - view.innerWidth\n const chromeHeight = view.outerHeight - view.innerHeight\n // Wide enough for a sharp share (a call receives about what the window shows), and 16:9.\n const width = Math.max(\n view.innerWidth,\n Math.min(PRESENT_WIDTH, Math.round((view.screen.availWidth - chromeWidth) * 0.6))\n )\n const height = Math.min(\n Math.round(width / STAGE_ASPECT),\n view.screen.availHeight - chromeHeight\n )\n try {\n view.resizeTo(Math.round(height * STAGE_ASPECT) + chromeWidth, height + chromeHeight)\n } catch {\n return // not resizable: the stage letterboxes in black\n }\n return () => {\n try {\n if (!view.closed) view.resizeTo(before.width, before.height)\n } catch {\n // gone or not resizable\n }\n }\n }, [view, presenting])\n}\n\nexport type PresenterViewProps = Omit<SlidesEditorProps, 'onPresent'> & {\n /** Present (default: here, in this window). */\n onPresent?: () => void\n}\n\nexport function PresenterView({ onPresent, ...editor }: PresenterViewProps) {\n const presenting = usePresentation((s) => s.presenting)\n const [view, setView] = useState<Window | null>(null)\n // The keys work in whichever window the presenter is in.\n const rootRef = useCallback((node: HTMLDivElement | null) => {\n if (node) setView(node.ownerDocument.defaultView)\n }, [])\n usePresenterKeys(presenting ? view : null, true)\n useStageShapedWindow(view, presenting)\n\n if (presenting) {\n return (\n <div\n ref={rootRef}\n className=\"h-full w-full select-none bg-black\"\n style={{ cursor: 'none' }}\n onDoubleClick={() => view && toggleFullscreen(view)}\n data-testid=\"presentation-present\"\n >\n <PresentationStage />\n </div>\n )\n }\n return (\n <div ref={rootRef} className=\"h-full min-h-0\" data-testid=\"presenter-view\">\n <SlidesEditor\n {...editor}\n onPresent={onPresent ?? (() => usePresentation.getState().setPresenting(true))}\n />\n </div>\n )\n}\n","/**\n * The presentation's own window, mounted once by the app shell (the session's `PRESENTATION_PANEL`,\n * a pop-out). It presents: the slides alone, what is shared in a call or put full screen; or, when\n * the editor is popped out of the viewer's slides tab, it edits there, beside the documents its\n * clips come from. A window opened only to present closes when presenting ends.\n *\n * It also keeps what the presentation needs wherever it is edited: the theme's logo image, read\n * when the logo changes; and a clean slate when the session signs out or another user signs in\n * (the presentation holds decrypted files in memory).\n */\n\nimport { useCallback, useEffect, useRef } from 'react'\nimport { PanelLeftClose } from 'lucide-react'\nimport {\n isPanelOpen,\n useArbiSession,\n useArbiSessionState,\n useArbiSessionStore,\n} from '@arbidocs/react'\nimport { Button } from '@arbidocs/react/ui'\nimport { ConnectedPanelHost } from '../panels/ConnectedPanelHost'\nimport { ConnectedDocumentToolsProvider } from '../viewer/ConnectedDocumentToolsProvider'\nimport { PRESENTATION_PANEL, presentationWindowOnlyPresents } from '../../presentation/panel-id'\nimport { PresenterView } from '../../presentation/PresenterView'\nimport { usePresentation } from '../../presentation/store'\nimport { usePresentationController } from './usePresentationController'\nimport { usePresentationFiles } from './usePresentationFiles'\n\n/** The presentation's window, with the document tools it needs (sources, redactions). */\nexport function ConnectedPresentation() {\n return (\n <ConnectedDocumentToolsProvider>\n <PresentationWindow />\n </ConnectedDocumentToolsProvider>\n )\n}\n\nfunction PresentationWindow() {\n const session = useArbiSessionStore()\n const notify = usePresentation((s) => s.notify)\n const presenting = usePresentation((s) => s.presenting)\n const isOpen = useArbiSessionState((state) => isPanelOpen(state, PRESENTATION_PANEL))\n const { user } = useArbiSession()\n const userId = user?.external_id ?? null\n const shownFor = useRef(userId)\n const { downloadFile } = usePresentationFiles()\n const logoId = usePresentation((s) => s.theme.logo?.documentId ?? null)\n const controller = usePresentationController(isOpen && !presenting)\n\n useEffect(() => {\n if (shownFor.current === userId) return\n shownFor.current = userId\n usePresentation.getState().reset()\n session.closePanel(PRESENTATION_PANEL)\n }, [userId, session])\n\n // The theme's logo image, fetched whenever the logo changes (the theme keeps a reference only).\n useEffect(() => {\n if (!logoId) return\n let current = true\n downloadFile(logoId)\n .then((image) => current && usePresentation.getState().setLogoImage(image))\n .catch(() => current && notify('The logo could not be read', 'error'))\n return () => {\n current = false\n }\n }, [logoId, downloadFile, notify])\n\n // A closed window is not presenting.\n useEffect(() => {\n if (!isOpen) usePresentation.getState().setPresenting(false)\n }, [isOpen])\n\n // Opened only to present: closed when presenting ends (Escape).\n const wasPresenting = useRef(presenting)\n useEffect(() => {\n if (wasPresenting.current && !presenting && isOpen && presentationWindowOnlyPresents()) {\n session.closePanel(PRESENTATION_PANEL)\n }\n wasPresenting.current = presenting\n }, [presenting, isOpen, session])\n\n const onClose = useCallback(() => session.closePanel(PRESENTATION_PANEL), [session])\n\n return (\n <ConnectedPanelHost\n panelId={PRESENTATION_PANEL}\n isOpen={isOpen}\n onClose={onClose}\n title=\"Presentation\"\n defaultMode=\"popout\"\n defaultWidth={960}\n closeTestId=\"presentation-panel-close\"\n >\n {/* Inside the panel, so its dialogs open in its window. */}\n {() => (\n <>\n {!presenting && controller.dialogs}\n <PresenterView\n {...controller.editor}\n actions={\n <>\n {controller.editor.actions}\n <Button\n type=\"button\"\n size=\"icon\"\n variant=\"ghost\"\n className=\"size-8 text-muted-foreground hover:text-foreground pointer-coarse:size-11\"\n title=\"Back into the app's viewer\"\n aria-label=\"Back to the viewer\"\n onClick={onClose}\n data-testid=\"presentation-pop-in\"\n >\n <PanelLeftClose className=\"size-4\" />\n </Button>\n </>\n }\n />\n </>\n )}\n </ConnectedPanelHost>\n )\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/presentation/ConnectedSlidesTab.tsx"],"names":["hasUnsavedChanges","usePresentation","useArbiSessionStore","useBlocksEnvironment","usePresentationFiles","useState","useArbiSessionState","isPanelOpen","PRESENTATION_PANEL","presentationWindowOnlyPresents","usePresentationController","useRef","useEffect","editPresentation","registerDocumentTurnFlush","useCallback","openPresentation","jsx","EmptyState","ExternalLink","jsxs","Button","PanelLeftClose","Presentation","Loader2","Fragment","SlidesEditor"],"mappings":"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","file":"ConnectedSlidesTab-7QDE2CZD.cjs","sourcesContent":["/**\n * A presentation's slides tab in the document viewer: the slides editor, on the presentation the\n * viewer shows. Opening a saved presentation loads it (unless it is the one being edited); a new\n * one (a presentation draft) takes the clips gathered so far. Clips gathered with no presentation\n * open join the one opened next. Saving a draft makes it a document, and the tab moves to it.\n *\n * The editor can also move to the presentation's own window (Pop out), beside the documents its\n * clips come from; the tab then says so. Present opens that window with the slides alone.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { ExternalLink, Loader2, PanelLeftClose, Presentation } from 'lucide-react'\nimport {\n isPanelOpen,\n registerDocumentTurnFlush,\n useArbiSessionState,\n useArbiSessionStore,\n} from '@arbidocs/react'\nimport { Button } from '@arbidocs/react/ui'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport {\n PRESENTATION_PANEL,\n openPresentation,\n presentationWindowOnlyPresents,\n} from '../../presentation/panel-id'\nimport { SlidesEditor } from '../../presentation/SlidesEditor'\nimport { hasUnsavedChanges, usePresentation } from '../../presentation/store'\nimport { EmptyState } from '../../components/EmptyState'\nimport { editPresentation } from './requests'\nimport { usePresentationController } from './usePresentationController'\nimport { usePresentationFiles } from './usePresentationFiles'\n\nexport interface ConnectedSlidesTabProps {\n /** The viewed document's id, or a presentation draft's (`draft-…`). */\n documentId: string\n /** The version on screen, when an older one. */\n version?: number\n /** The document's current version: a newer one than the one being edited is opened. */\n currentVersion?: number\n /** A new presentation, not saved yet: its draft title. */\n draftTitle?: string\n}\n\n/** \"2, 3 and 5\". */\nconst listOf = (numbers: number[]) =>\n numbers.length < 2\n ? String(numbers[0] ?? '')\n : `${numbers.slice(0, -1).join(', ')} and ${numbers[numbers.length - 1]}`\n\nconst STALE = 'This presentation was changed outside the editor: Save to draw its slides again.'\n\n/** The presentation has anything in it worth asking about before it is replaced. */\nconst hasContent = () => hasUnsavedChanges(usePresentation.getState())\n\nexport function ConnectedSlidesTab({\n documentId,\n version,\n currentVersion,\n draftTitle,\n}: ConnectedSlidesTabProps) {\n const session = useArbiSessionStore()\n const { confirm } = useBlocksEnvironment()\n const { open, save } = usePresentationFiles()\n const notify = usePresentation((s) => s.notify)\n const boundTo = usePresentation((s) => s.boundTo)\n const savedId = usePresentation((s) => s.savedId)\n const [loading, setLoading] = useState(false)\n const isDraft = draftTitle !== undefined\n const target = version ? `${documentId}@v${version}` : documentId\n const poppedOut = useArbiSessionState(\n (state) => isPanelOpen(state, PRESENTATION_PANEL) && !presentationWindowOnlyPresents()\n )\n const controller = usePresentationController(!poppedOut)\n const asked = useRef<string | null>(null)\n // Another presentation, with changes, is being edited and the user kept it.\n const [declined, setDeclined] = useState(false)\n const [force, setForce] = useState(0)\n\n // Show the presentation this tab is for (once per presentation: a remount does not ask again).\n useEffect(() => {\n const state = usePresentation.getState()\n if (state.boundTo === target || asked.current === `${target}#${force}`) return\n asked.current = `${target}#${force}`\n setDeclined(false)\n void (async () => {\n // Clips gathered with no presentation open join this one.\n const gathered = state.boundTo === null ? state.clips : []\n if (state.boundTo !== null && hasContent() && !force) {\n const ok = await confirm({\n title: 'Open presentation',\n message: 'Replace the presentation being edited? Save it first to keep its changes.',\n kind: 'confirm',\n })\n if (!ok) return setDeclined(true)\n }\n if (isDraft) {\n if (state.boundTo !== null) state.reset()\n usePresentation.getState().bind(target)\n usePresentation.getState().setTitle(draftTitle || 'Untitled presentation')\n return\n }\n setLoading(true)\n try {\n const { missing, stale, imported, changedOutside } = await open(documentId, version)\n usePresentation.getState().bind(target)\n if (gathered.length) usePresentation.getState().adoptClips(gathered)\n if (stale) notify(STALE, 'error')\n if (imported) {\n notify(\n ['Opened from PowerPoint, ready to edit.', ...imported.notes].join(' · '),\n 'success'\n )\n }\n if (changedOutside) {\n notify(\n `${changedOutside.length === 1 ? `Slide ${changedOutside[0]} was` : `Slides ${listOf(changedOutside)} were`} changed in PowerPoint: brought in as changed there.`,\n 'success'\n )\n }\n if (missing) {\n notify(\n `${missing} clip${missing === 1 ? '' : 's'} could not be opened (moved, deleted or not shared with you)`,\n 'error'\n )\n }\n } catch (error) {\n notify(\n error instanceof Error ? error.message : 'The presentation could not be opened',\n 'error'\n )\n } finally {\n setLoading(false)\n }\n })()\n // eslint-disable-next-line react-hooks/exhaustive-deps -- a draft's title changes as it is typed\n }, [target, documentId, version, isDraft, force, open, confirm, notify])\n\n // A draft's title is the presentation's.\n useEffect(() => {\n if (isDraft && boundTo === target && draftTitle) usePresentation.getState().setTitle(draftTitle)\n }, [isDraft, boundTo, target, draftTitle])\n\n // Saved as another document (a draft's first save, Save as, an older file saved as a\n // PowerPoint): the viewer follows it. Only once this tab's presentation was the one edited\n // (another, still bound as the tab opens, is not \"its\" save).\n const wasBound = useRef(false)\n useEffect(() => {\n if (boundTo === target) wasBound.current = true\n if (!wasBound.current || !savedId || boundTo !== savedId || savedId === target) return\n if (isDraft) session.clearDraftDocument(documentId)\n editPresentation(session, { kind: 'open', documentId: savedId })\n }, [isDraft, savedId, boundTo, target, documentId, session])\n\n // A newer version saved meanwhile (by ARBI, asked in the chat beside the deck, or by someone\n // else): shown at once, unless this one has changes of its own, which are never thrown away.\n const heldVersion = usePresentation((s) => (s.boundTo === target ? s.version : null))\n const toldNewer = useRef<number | null>(null)\n useEffect(() => {\n if (isDraft || version || !currentVersion || heldVersion === null) return\n if (currentVersion <= heldVersion || loading) return\n if (hasContent()) {\n if (toldNewer.current === currentVersion) return\n toldNewer.current = currentVersion\n notify(\n `A newer version (${currentVersion}) was saved while you edited. Save as… keeps yours; reopen the presentation to see it.`,\n 'error'\n )\n return\n }\n setLoading(true)\n void open(documentId)\n .then(() => {\n usePresentation.getState().bind(target)\n notify(`Updated to version ${currentVersion}.`, 'success')\n })\n .catch((error: unknown) =>\n notify(\n error instanceof Error ? error.message : 'The new version could not be opened',\n 'error'\n )\n )\n .finally(() => setLoading(false))\n }, [currentVersion, heldVersion, isDraft, version, loading, open, documentId, target, notify])\n\n // A chat turn about this presentation (the chat beside it) saves its unsaved changes first, so\n // ARBI works on the slides as they are on screen.\n useEffect(() => {\n if (isDraft || version || savedId !== documentId || boundTo !== target) return\n return registerDocumentTurnFlush(documentId, async () => {\n const state = usePresentation.getState()\n if (state.savedId === documentId && hasUnsavedChanges(state)) await save(state.title)\n })\n }, [isDraft, version, savedId, boundTo, documentId, target, save])\n\n const present = useCallback(() => {\n openPresentation(session, { present: true })\n usePresentation.getState().setPresenting(true)\n }, [session])\n\n if (poppedOut) {\n return (\n <div className=\"flex h-full items-center justify-center p-6\" data-testid=\"slides-popped-out\">\n <EmptyState\n icon={ExternalLink}\n title=\"Editing in its own window\"\n description=\"The presentation is open in its own window, beside the documents you clip from.\"\n action={\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => session.closePanel(PRESENTATION_PANEL)}\n >\n <PanelLeftClose className=\"size-4\" />\n Bring it back here\n </Button>\n }\n />\n </div>\n )\n }\n if (declined && boundTo !== target) {\n return (\n <div className=\"flex h-full items-center justify-center p-6\" data-testid=\"slides-declined\">\n <EmptyState\n icon={Presentation}\n title=\"Another presentation is being edited\"\n description=\"It has changes. Save it first, or open this one in its place.\"\n action={\n <Button type=\"button\" variant=\"outline\" onClick={() => setForce((n) => n + 1)}>\n Open this one instead\n </Button>\n }\n />\n </div>\n )\n }\n if (loading || boundTo !== target) {\n return (\n <div className=\"flex h-full items-center justify-center gap-2 text-sm text-muted-foreground\">\n <Loader2 className=\"size-4 animate-spin\" />\n Opening the presentation…\n </div>\n )\n }\n return (\n <>\n {controller.dialogs}\n <SlidesEditor\n {...controller.editor}\n actions={\n <>\n {controller.editor.actions}\n <Button\n type=\"button\"\n size=\"icon\"\n variant=\"ghost\"\n className=\"size-8 text-muted-foreground hover:text-foreground pointer-coarse:size-11\"\n title=\"Edit in its own window, beside the documents you clip from\"\n aria-label=\"Pop out\"\n onClick={() => openPresentation(session)}\n data-testid=\"presentation-pop-out\"\n >\n <ExternalLink className=\"size-4\" />\n </Button>\n </>\n }\n onPresent={present}\n />\n </>\n )\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/viewer/DocumentViewerDialog.tsx","../src/connection/files/page/FilesViewerDialog.tsx"],"names":["jsx","Eye","PenLine","MessageSquareText","DEFAULT_DOCUMENT_VIEWER_TABS","DEFAULT_ASK_SUGGESTIONS","DEFAULT_DOCUMENT_VIEWER_LABELS","useConnectedWorkspace","useArbiSessionStore","useBlocksEnvironment","useArbiSessionState","useDocuments","parseVersionRef","tab","useState","question","useRef","useSlashField","Dialog","jsxs","DialogContent","DialogHeader","DialogTitle","FileText","DialogDescription","SegmentedControl","ErrorBoundary","DocumentReview","AskBar","ConnectedDocumentViewer"],"mappings":"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","file":"FilesViewerDialog-IZI63FOV.cjs","sourcesContent":["/**\n * The document viewer as a dialog (the files page's own viewer): a title, the tabs\n * the host offers, and under them the review (`DocumentReview`), the whole viewer, or a question\n * (`AskBar`) that starts a thread about the document. Views of existing parts, not a new viewer.\n *\n * A draft started with Create New (the session's `draftDocuments`) has no server record yet: it\n * shows the whole viewer only (its kind, name and recorder), titled from the draft.\n */\n\nimport { useRef, useState, type ReactNode } from 'react'\nimport { Eye, FileText, MessageSquareText, PenLine } from 'lucide-react'\nimport {\n DocumentReview,\n useArbiSessionState,\n useArbiSessionStore,\n useDocuments,\n type WorkspaceDocument,\n} from '@arbidocs/react'\nimport { parseVersionRef } from '@arbidocs/react/artifacts'\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@arbidocs/react/ui'\nimport { AskBar } from '../../components/AskBar'\nimport { ErrorBoundary } from '../../components/ErrorBoundary'\nimport { SegmentedControl, type SegmentedOption } from '../../settings/SegmentedControl'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useSlashField } from '../ask/useSlashField'\nimport {\n DEFAULT_ASK_SUGGESTIONS,\n DEFAULT_DOCUMENT_VIEWER_LABELS,\n DEFAULT_DOCUMENT_VIEWER_TABS,\n type DocumentViewerDialogLabels,\n type DocumentViewerTab,\n} from './documentViewerTabs'\n\ntype ReviewDocument = Parameters<typeof DocumentReview>[0]['doc']\n\nexport interface DocumentViewerDialogProps {\n /** The document, or a version reference `doc-…@v{n}`. */\n documentId: string\n /** The views offered, in order. Default: review, document, ask. */\n tabs?: readonly DocumentViewerTab[]\n /** The view it opens on. Default: the first offered. */\n initialTab?: DocumentViewerTab\n labels?: DocumentViewerDialogLabels\n /** The ask view's suggested questions. */\n askSuggestions?: readonly string[]\n onClose: () => void\n /** The whole viewer, for the document view. */\n renderDocument: (documentId: string) => ReactNode\n}\n\nconst titleOf = (doc: WorkspaceDocument | undefined) =>\n doc?.doc_metadata?.title || doc?.file_name || 'Document'\n\nconst TAB_ICONS: Record<DocumentViewerTab, ReactNode> = {\n review: <Eye className=\"size-4\" />,\n document: <PenLine className=\"size-4\" />,\n ask: <MessageSquareText className=\"size-4\" />,\n}\n\nconst TAB_TEST_IDS: Record<DocumentViewerTab, string> = {\n review: 'review-tab-review',\n document: 'review-tab-pdf',\n ask: 'review-tab-qa',\n}\n\nexport function DocumentViewerDialog({\n documentId,\n tabs = DEFAULT_DOCUMENT_VIEWER_TABS,\n initialTab,\n labels: labelOverrides,\n askSuggestions = DEFAULT_ASK_SUGGESTIONS,\n onClose,\n renderDocument,\n}: DocumentViewerDialogProps) {\n const labels = { ...DEFAULT_DOCUMENT_VIEWER_LABELS, ...labelOverrides }\n const { workspaceId, live } = useConnectedWorkspace()\n const session = useArbiSessionStore()\n const { openNewConversation } = useBlocksEnvironment()\n const passageId = useArbiSessionState((s) => s.viewingDocument?.passageId ?? null)\n const draft = useArbiSessionState((s) => s.draftDocuments[documentId])\n const { data: documents } = useDocuments()\n const baseId = parseVersionRef(documentId).docId\n const doc = documents?.find((d) => d.external_id === baseId)\n const title = draft?.title || titleOf(doc)\n\n // The whole viewer needs a signed-in session (marking up, signing, versions). A draft is only\n // on the client: there is nothing to review or ask about until it is saved.\n const offered: readonly DocumentViewerTab[] = draft\n ? ['document']\n : tabs.filter((tab) => tab !== 'document' || live)\n const [chosen, setChosen] = useState<DocumentViewerTab | undefined>(initialTab)\n const tab = chosen && offered.includes(chosen) ? chosen : offered[0]\n\n const options: SegmentedOption<DocumentViewerTab>[] = offered.map((value) => ({\n value,\n label: labels[value],\n icon: TAB_ICONS[value],\n testId: TAB_TEST_IDS[value],\n }))\n\n // A question opens a new thread about the document, as the viewer's \"Chat\" does.\n const ask = (question: string) => {\n openNewConversation({ prompt: question })\n session.setNewChatDocumentId(baseId)\n }\n // The `/` menu: a skill's run is asked the same way, so its thread is about this document too.\n const [question, setQuestion] = useState('')\n const askInputRef = useRef<HTMLInputElement>(null)\n const slash = useSlashField({\n text: question,\n setText: setQuestion,\n inputRef: askInputRef,\n landing: 'chat',\n send: ask,\n })\n\n return (\n <Dialog open onOpenChange={(open) => !open && onClose()}>\n <DialogContent\n className=\"flex h-[90vh] max-w-[95vw] flex-col gap-0 p-0 sm:max-w-[95vw]\"\n data-testid=\"documents-dialog\"\n >\n <DialogHeader className=\"border-b px-4 py-3\">\n <DialogTitle className=\"flex min-w-0 items-center gap-2 pr-8 text-base\">\n <FileText className=\"size-4 shrink-0\" />\n <span className=\"truncate\" data-testid=\"documents-dialog-title\">\n {title}\n </span>\n </DialogTitle>\n <DialogDescription className=\"sr-only\">\n {offered.map((value) => labels[value]).join(', ')}: {title}\n </DialogDescription>\n {options.length > 1 && tab && (\n <SegmentedControl\n ariaLabel=\"Document view\"\n // A phone fits the three on one row: no label breaks over two lines.\n className=\"mt-2 w-fit max-w-full overflow-x-auto [&_button]:whitespace-nowrap max-sm:[&_button]:px-2.5\"\n value={tab}\n onChange={setChosen}\n options={options}\n />\n )}\n </DialogHeader>\n <div className=\"min-h-0 flex-1 overflow-hidden p-3\">\n {/* A view that fails to render says so here: the dialog and the page under it stay. */}\n <ErrorBoundary\n resetKey={`${documentId}|${tab}`}\n labels={{ title: \"This document couldn't be displayed\" }}\n testId=\"documents-dialog-error\"\n >\n {tab === 'review' && (\n <DocumentReview\n docId={baseId}\n doc={doc as ReviewDocument}\n workspaceId={workspaceId ?? undefined}\n activeChunkId={passageId}\n />\n )}\n {tab === 'document' && (\n <div className=\"h-full overflow-hidden\" data-testid=\"documents-dialog-viewer\">\n {renderDocument(documentId)}\n </div>\n )}\n {tab === 'ask' && (\n <div className=\"mx-auto max-w-2xl space-y-3 pt-6\" data-testid=\"doc-qa-panel\">\n <p className=\"text-sm text-muted-foreground\">{labels.askIntro}</p>\n {slash.launcher}\n <AskBar\n testId=\"doc-ask\"\n placeholder={labels.askPlaceholder.replace('{title}', title)}\n suggestions={[...askSuggestions]}\n onAsk={(text) => {\n if (!slash.startsSkill(text)) ask(text)\n }}\n value={question}\n onValueChange={setQuestion}\n onInputKeyDown={slash.onKeyDown}\n inputProps={slash.comboboxProps}\n inputRef={askInputRef}\n menu={slash.menu}\n />\n </div>\n )}\n </ErrorBoundary>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n","/**\n * The files page's own viewer (a page without a host viewer): `DocumentViewerDialog`, with the\n * whole `ConnectedDocumentViewer` as its document view. The page lazy-loads this module, so the\n * viewer stays out of the page's chunk.\n */\nimport { ConnectedDocumentViewer } from '../../viewer/ConnectedDocumentViewer'\nimport {\n DocumentViewerDialog,\n type DocumentViewerDialogProps,\n} from '../../viewer/DocumentViewerDialog'\n\nexport interface FilesViewerDialogProps extends Omit<DocumentViewerDialogProps, 'renderDocument'> {\n /** Where html/react artifacts load their sandbox runtime from. */\n artifactRuntimeUrl?: string\n}\n\nexport function FilesViewerDialog({ artifactRuntimeUrl, ...props }: FilesViewerDialogProps) {\n return (\n <DocumentViewerDialog\n {...props}\n renderDocument={(id) => (\n <ConnectedDocumentViewer documentId={id} artifactRuntimeUrl={artifactRuntimeUrl} />\n )}\n />\n )\n}\n"]}
|
package/dist/ai-KBYNRNZ6.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ai-KBYNRNZ6.cjs"}
|