@arbidocs/blocks 0.5.121 → 0.5.123

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/dist/{ClippingMediaViewer-B6WG7Q64.cjs → ClippingMediaViewer-IEIBT74X.cjs} +8 -8
  2. package/dist/{ClippingMediaViewer-B6WG7Q64.cjs.map → ClippingMediaViewer-IEIBT74X.cjs.map} +1 -1
  3. package/dist/{ClippingPdfViewer-6GCVTV3V.cjs → ClippingPdfViewer-OGYLMVCE.cjs} +5 -5
  4. package/dist/{ClippingPdfViewer-6GCVTV3V.cjs.map → ClippingPdfViewer-OGYLMVCE.cjs.map} +1 -1
  5. package/dist/{ConnectedCallDock-DC5V5OUJ.cjs → ConnectedCallDock-XJOYVVAH.cjs} +21 -21
  6. package/dist/{ConnectedCallDock-DC5V5OUJ.cjs.map → ConnectedCallDock-XJOYVVAH.cjs.map} +1 -1
  7. package/dist/{ConnectedCallRoom-FQLXWTFB.cjs → ConnectedCallRoom-CUDYAPQK.cjs} +14 -14
  8. package/dist/{ConnectedCallRoom-FQLXWTFB.cjs.map → ConnectedCallRoom-CUDYAPQK.cjs.map} +1 -1
  9. package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs → ConnectedNativeDocxComparison-QKHCYD6W.cjs} +15 -15
  10. package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs.map → ConnectedNativeDocxComparison-QKHCYD6W.cjs.map} +1 -1
  11. package/dist/ConnectedPresentation-5DOJ35XL.cjs +321 -0
  12. package/dist/ConnectedPresentation-5DOJ35XL.cjs.map +1 -0
  13. package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs} +3 -3
  14. package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs.map → ConnectedProductionSetDialog-LHB4VQWC.cjs.map} +1 -1
  15. package/dist/{ConnectedSlidesTab-7QDE2CZD.cjs → ConnectedSlidesTab-7YMEDGUU.cjs} +73 -49
  16. package/dist/ConnectedSlidesTab-7YMEDGUU.cjs.map +1 -0
  17. package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs → ConnectedStreamedWordArtifact-AG62232A.cjs} +15 -15
  18. package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs.map → ConnectedStreamedWordArtifact-AG62232A.cjs.map} +1 -1
  19. package/dist/{DocumentReviewCard-SNWVEZ7S.cjs → DocumentReviewCard-M53XFLI2.cjs} +15 -15
  20. package/dist/{DocumentReviewCard-SNWVEZ7S.cjs.map → DocumentReviewCard-M53XFLI2.cjs.map} +1 -1
  21. package/dist/{FilesViewerDialog-IZI63FOV.cjs → FilesViewerDialog-2QCCRWF2.cjs} +50 -49
  22. package/dist/FilesViewerDialog-2QCCRWF2.cjs.map +1 -0
  23. package/dist/{WorkspaceTableView-TEIRB6VJ.cjs → WorkspaceTableView-3XYAV4BV.cjs} +8 -8
  24. package/dist/{WorkspaceTableView-TEIRB6VJ.cjs.map → WorkspaceTableView-3XYAV4BV.cjs.map} +1 -1
  25. package/dist/agents/index.cjs +296 -296
  26. package/dist/{ai-KBYNRNZ6.cjs → ai-IEIR7SC2.cjs} +25 -25
  27. package/dist/ai-IEIR7SC2.cjs.map +1 -0
  28. package/dist/calls/index.cjs +121 -121
  29. package/dist/chat/index.cjs +1 -1
  30. package/dist/{chunk-NLOETJCB.cjs → chunk-2F57IO7S.cjs} +12 -12
  31. package/dist/{chunk-NLOETJCB.cjs.map → chunk-2F57IO7S.cjs.map} +1 -1
  32. package/dist/chunk-2RLA6QO2.cjs +174 -0
  33. package/dist/chunk-2RLA6QO2.cjs.map +1 -0
  34. package/dist/{chunk-Q6DQGGP4.cjs → chunk-325GVZE6.cjs} +3 -3
  35. package/dist/{chunk-Q6DQGGP4.cjs.map → chunk-325GVZE6.cjs.map} +1 -1
  36. package/dist/{chunk-LHWOKOMP.cjs → chunk-46P7IDBX.cjs} +3 -3
  37. package/dist/chunk-46P7IDBX.cjs.map +1 -0
  38. package/dist/{chunk-XTR26TNE.cjs → chunk-4TTX6ZNS.cjs} +20 -4
  39. package/dist/chunk-4TTX6ZNS.cjs.map +1 -0
  40. package/dist/{chunk-BVAT4EVC.cjs → chunk-5QERK4PK.cjs} +35 -35
  41. package/dist/{chunk-BVAT4EVC.cjs.map → chunk-5QERK4PK.cjs.map} +1 -1
  42. package/dist/{chunk-GX2EBMJW.cjs → chunk-6OK7ESTL.cjs} +7 -6
  43. package/dist/chunk-6OK7ESTL.cjs.map +1 -0
  44. package/dist/{chunk-C2OICDMI.cjs → chunk-7557LDAN.cjs} +10 -10
  45. package/dist/{chunk-C2OICDMI.cjs.map → chunk-7557LDAN.cjs.map} +1 -1
  46. package/dist/{chunk-474GPLCM.cjs → chunk-7L4X6QN2.cjs} +6 -6
  47. package/dist/{chunk-474GPLCM.cjs.map → chunk-7L4X6QN2.cjs.map} +1 -1
  48. package/dist/{chunk-52KGMAO5.cjs → chunk-7NLO7ASW.cjs} +15 -15
  49. package/dist/{chunk-52KGMAO5.cjs.map → chunk-7NLO7ASW.cjs.map} +1 -1
  50. package/dist/{chunk-H5OLHP2U.cjs → chunk-7OPOPYV6.cjs} +3 -3
  51. package/dist/{chunk-H5OLHP2U.cjs.map → chunk-7OPOPYV6.cjs.map} +1 -1
  52. package/dist/{chunk-W6B3RYTX.cjs → chunk-7PN3YENO.cjs} +4 -4
  53. package/dist/{chunk-W6B3RYTX.cjs.map → chunk-7PN3YENO.cjs.map} +1 -1
  54. package/dist/{chunk-734NPQNR.cjs → chunk-ADDQKZ5I.cjs} +4 -4
  55. package/dist/{chunk-734NPQNR.cjs.map → chunk-ADDQKZ5I.cjs.map} +1 -1
  56. package/dist/{chunk-JQLWKNJO.cjs → chunk-ALK3PUUB.cjs} +4 -4
  57. package/dist/{chunk-JQLWKNJO.cjs.map → chunk-ALK3PUUB.cjs.map} +1 -1
  58. package/dist/{chunk-4VZZWYEC.cjs → chunk-BQ5RIWWT.cjs} +3 -3
  59. package/dist/{chunk-4VZZWYEC.cjs.map → chunk-BQ5RIWWT.cjs.map} +1 -1
  60. package/dist/{chunk-Q3XJUXID.cjs → chunk-DWMWEALB.cjs} +499 -409
  61. package/dist/chunk-DWMWEALB.cjs.map +1 -0
  62. package/dist/{chunk-3SCNXNHI.cjs → chunk-E3L5DB5F.cjs} +5 -5
  63. package/dist/{chunk-3SCNXNHI.cjs.map → chunk-E3L5DB5F.cjs.map} +1 -1
  64. package/dist/{chunk-VJ5ZLRBD.cjs → chunk-GFUOCGY6.cjs} +8 -3
  65. package/dist/chunk-GFUOCGY6.cjs.map +1 -0
  66. package/dist/{chunk-7VUJGHMY.cjs → chunk-JD2HX2BR.cjs} +272 -156
  67. package/dist/chunk-JD2HX2BR.cjs.map +1 -0
  68. package/dist/{chunk-RYVZDFVO.cjs → chunk-JJZOL5MG.cjs} +3 -3
  69. package/dist/{chunk-RYVZDFVO.cjs.map → chunk-JJZOL5MG.cjs.map} +1 -1
  70. package/dist/{chunk-QFXILJMJ.cjs → chunk-K4763GD5.cjs} +17 -174
  71. package/dist/chunk-K4763GD5.cjs.map +1 -0
  72. package/dist/{chunk-EHP6OH5D.cjs → chunk-KA3F6TIH.cjs} +11 -11
  73. package/dist/{chunk-EHP6OH5D.cjs.map → chunk-KA3F6TIH.cjs.map} +1 -1
  74. package/dist/{chunk-UUENH4BJ.cjs → chunk-KXIRVKCJ.cjs} +3 -3
  75. package/dist/{chunk-UUENH4BJ.cjs.map → chunk-KXIRVKCJ.cjs.map} +1 -1
  76. package/dist/{chunk-AY6EZSZB.cjs → chunk-L4CIFLCU.cjs} +4 -4
  77. package/dist/{chunk-AY6EZSZB.cjs.map → chunk-L4CIFLCU.cjs.map} +1 -1
  78. package/dist/{chunk-4RBQ44RY.cjs → chunk-MLA2BJ2Y.cjs} +28 -28
  79. package/dist/{chunk-4RBQ44RY.cjs.map → chunk-MLA2BJ2Y.cjs.map} +1 -1
  80. package/dist/{chunk-DR2AH7JL.cjs → chunk-NG2EE7HR.cjs} +48 -48
  81. package/dist/{chunk-DR2AH7JL.cjs.map → chunk-NG2EE7HR.cjs.map} +1 -1
  82. package/dist/{chunk-ENGL7P3I.cjs → chunk-NQML7IUC.cjs} +26 -26
  83. package/dist/{chunk-ENGL7P3I.cjs.map → chunk-NQML7IUC.cjs.map} +1 -1
  84. package/dist/{chunk-4NPCDS2X.cjs → chunk-NY3YUCOW.cjs} +3 -3
  85. package/dist/{chunk-4NPCDS2X.cjs.map → chunk-NY3YUCOW.cjs.map} +1 -1
  86. package/dist/{chunk-JZEYHDWJ.cjs → chunk-OHHKBURG.cjs} +76 -76
  87. package/dist/chunk-OHHKBURG.cjs.map +1 -0
  88. package/dist/{chunk-5534FYXP.cjs → chunk-SDRYSLOX.cjs} +4 -4
  89. package/dist/{chunk-5534FYXP.cjs.map → chunk-SDRYSLOX.cjs.map} +1 -1
  90. package/dist/{chunk-2W5E62EY.cjs → chunk-SGYSDABK.cjs} +6 -6
  91. package/dist/{chunk-2W5E62EY.cjs.map → chunk-SGYSDABK.cjs.map} +1 -1
  92. package/dist/{chunk-KP5AITQ4.cjs → chunk-SNPK3R3O.cjs} +7 -7
  93. package/dist/{chunk-KP5AITQ4.cjs.map → chunk-SNPK3R3O.cjs.map} +1 -1
  94. package/dist/{chunk-EATIFPKP.cjs → chunk-T73BHNQX.cjs} +4 -4
  95. package/dist/{chunk-EATIFPKP.cjs.map → chunk-T73BHNQX.cjs.map} +1 -1
  96. package/dist/{chunk-4IOYQLKG.cjs → chunk-TP5PGWIO.cjs} +3 -3
  97. package/dist/{chunk-4IOYQLKG.cjs.map → chunk-TP5PGWIO.cjs.map} +1 -1
  98. package/dist/{chunk-GKVE5JGB.cjs → chunk-UFT22LAB.cjs} +3 -3
  99. package/dist/{chunk-GKVE5JGB.cjs.map → chunk-UFT22LAB.cjs.map} +1 -1
  100. package/dist/{chunk-FKFQCK3C.cjs → chunk-V6MW7B4B.cjs} +4 -4
  101. package/dist/{chunk-FKFQCK3C.cjs.map → chunk-V6MW7B4B.cjs.map} +1 -1
  102. package/dist/{chunk-2PZT3J34.cjs → chunk-VWBYE3XY.cjs} +6 -6
  103. package/dist/{chunk-2PZT3J34.cjs.map → chunk-VWBYE3XY.cjs.map} +1 -1
  104. package/dist/{chunk-GQXPNIRE.cjs → chunk-WAV762GP.cjs} +6 -6
  105. package/dist/{chunk-GQXPNIRE.cjs.map → chunk-WAV762GP.cjs.map} +1 -1
  106. package/dist/{chunk-5LTIZ44D.cjs → chunk-WFMWKPGY.cjs} +14 -7
  107. package/dist/chunk-WFMWKPGY.cjs.map +1 -0
  108. package/dist/{chunk-GPX5VC57.cjs → chunk-WV7BCGCK.cjs} +50 -50
  109. package/dist/{chunk-GPX5VC57.cjs.map → chunk-WV7BCGCK.cjs.map} +1 -1
  110. package/dist/{chunk-MZ2KZXNU.cjs → chunk-WXUU3COI.cjs} +3 -3
  111. package/dist/{chunk-MZ2KZXNU.cjs.map → chunk-WXUU3COI.cjs.map} +1 -1
  112. package/dist/{chunk-NAJN32MF.cjs → chunk-XF355M7O.cjs} +13 -13
  113. package/dist/{chunk-NAJN32MF.cjs.map → chunk-XF355M7O.cjs.map} +1 -1
  114. package/dist/connect/docx.cjs +18 -18
  115. package/dist/connect/index.cjs +995 -994
  116. package/dist/connect/index.cjs.map +1 -1
  117. package/dist/connect/viewer.cjs +38 -37
  118. package/dist/connection/conversation/ConnectedMessage.js +1 -1
  119. package/dist/connection/conversation/ConnectedMessage.js.map +2 -2
  120. package/dist/connection/presentation/ConnectedSlidesTab.js +39 -15
  121. package/dist/connection/presentation/ConnectedSlidesTab.js.map +2 -2
  122. package/dist/connection/presentation/PresentationPill.js +3 -8
  123. package/dist/connection/presentation/PresentationPill.js.map +2 -2
  124. package/dist/connection/presentation/requests.d.ts +5 -0
  125. package/dist/connection/presentation/requests.js +8 -1
  126. package/dist/connection/presentation/requests.js.map +2 -2
  127. package/dist/connection/viewer/ConnectedDocumentViewer.js +51 -60
  128. package/dist/connection/viewer/ConnectedDocumentViewer.js.map +2 -2
  129. package/dist/connection/viewer/ViewerMoreMenu.d.ts +18 -0
  130. package/dist/connection/viewer/ViewerMoreMenu.js +45 -0
  131. package/dist/connection/viewer/ViewerMoreMenu.js.map +7 -0
  132. package/dist/connection/viewer/ViewerPdfPane.js +4 -1
  133. package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
  134. package/dist/connection/viewer/documentPlace.d.ts +5 -4
  135. package/dist/connection/viewer/documentPlace.js +2 -2
  136. package/dist/connection/viewer/documentPlace.js.map +2 -2
  137. package/dist/connection/viewer/pdf/PdfClipOutlines.d.ts +11 -0
  138. package/dist/connection/viewer/pdf/PdfClipOutlines.js +42 -0
  139. package/dist/connection/viewer/pdf/PdfClipOutlines.js.map +7 -0
  140. package/dist/connection/viewer/pdf/PdfPassageHighlights.js +3 -2
  141. package/dist/connection/viewer/pdf/PdfPassageHighlights.js.map +2 -2
  142. package/dist/connection/viewer/pdf/clipOutlines.d.ts +17 -0
  143. package/dist/connection/viewer/pdf/clipOutlines.js +24 -0
  144. package/dist/connection/viewer/pdf/clipOutlines.js.map +7 -0
  145. package/dist/connection/viewer/pdf/passageHighlights.d.ts +2 -0
  146. package/dist/connection/viewer/pdf/passageHighlights.js +12 -1
  147. package/dist/connection/viewer/pdf/passageHighlights.js.map +2 -2
  148. package/dist/connection/viewer/pdf/usePdfClipOutlines.d.ts +7 -0
  149. package/dist/connection/viewer/pdf/usePdfClipOutlines.js +36 -0
  150. package/dist/connection/viewer/pdf/usePdfClipOutlines.js.map +7 -0
  151. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js +11 -2
  152. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js.map +2 -2
  153. package/dist/dashboards/index.cjs +1 -1
  154. package/dist/document-tools/DocumentToolButtons.js +2 -2
  155. package/dist/document-tools/DocumentToolButtons.js.map +2 -2
  156. package/dist/document-tools/index.cjs +13 -13
  157. package/dist/embed/index.cjs +38 -38
  158. package/dist/files/index.cjs +224 -224
  159. package/dist/index.cjs +1596 -1595
  160. package/dist/index.cjs.map +1 -1
  161. package/dist/presentation/BoxActionBar.d.ts +2 -2
  162. package/dist/presentation/BoxActionBar.js +62 -30
  163. package/dist/presentation/BoxActionBar.js.map +2 -2
  164. package/dist/presentation/ClipActionBar.js +60 -7
  165. package/dist/presentation/ClipActionBar.js.map +2 -2
  166. package/dist/presentation/ClipViewControls.d.ts +3 -3
  167. package/dist/presentation/ClipViewControls.js +59 -64
  168. package/dist/presentation/ClipViewControls.js.map +2 -2
  169. package/dist/presentation/PresentControls.d.ts +11 -0
  170. package/dist/presentation/PresentControls.js +117 -0
  171. package/dist/presentation/PresentControls.js.map +7 -0
  172. package/dist/presentation/PresenterView.js +36 -5
  173. package/dist/presentation/PresenterView.js.map +2 -2
  174. package/dist/presentation/SlidesEditor.js +73 -43
  175. package/dist/presentation/SlidesEditor.js.map +2 -2
  176. package/dist/presentation/StageItem.js +0 -5
  177. package/dist/presentation/StageItem.js.map +2 -2
  178. package/dist/presentation/panel-id.d.ts +12 -2
  179. package/dist/presentation/panel-id.js +6 -1
  180. package/dist/presentation/panel-id.js.map +2 -2
  181. package/dist/presentation/slide-layout.d.ts +5 -1
  182. package/dist/presentation/slide-layout.js +16 -0
  183. package/dist/presentation/slide-layout.js.map +2 -2
  184. package/dist/settings/index.cjs +146 -146
  185. package/dist/shell/PanelPortal.js +13 -4
  186. package/dist/shell/PanelPortal.js.map +2 -2
  187. package/dist/shell/index.cjs +92 -91
  188. package/dist/shell/panel-windows.js +1 -0
  189. package/dist/shell/panel-windows.js.map +2 -2
  190. package/dist/studio/index.cjs +28 -28
  191. package/dist/styles.css +1 -1
  192. package/dist/workflow-canvas/index.cjs +52 -52
  193. package/node_modules/@arbidocs/coedit/package.json +1 -1
  194. package/package.json +5 -5
  195. package/dist/ConnectedPresentation-4HLDZDWV.cjs +0 -183
  196. package/dist/ConnectedPresentation-4HLDZDWV.cjs.map +0 -1
  197. package/dist/ConnectedSlidesTab-7QDE2CZD.cjs.map +0 -1
  198. package/dist/FilesViewerDialog-IZI63FOV.cjs.map +0 -1
  199. package/dist/ai-KBYNRNZ6.cjs.map +0 -1
  200. package/dist/chunk-5LTIZ44D.cjs.map +0 -1
  201. package/dist/chunk-7VUJGHMY.cjs.map +0 -1
  202. package/dist/chunk-GX2EBMJW.cjs.map +0 -1
  203. package/dist/chunk-JZEYHDWJ.cjs.map +0 -1
  204. package/dist/chunk-LHWOKOMP.cjs.map +0 -1
  205. package/dist/chunk-Q3XJUXID.cjs.map +0 -1
  206. package/dist/chunk-QFXILJMJ.cjs.map +0 -1
  207. package/dist/chunk-VJ5ZLRBD.cjs.map +0 -1
  208. package/dist/chunk-XTR26TNE.cjs.map +0 -1
@@ -1,33 +1,33 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunk5LTIZ44D_cjs = require('./chunk-5LTIZ44D.cjs');
5
- var chunkXTR26TNE_cjs = require('./chunk-XTR26TNE.cjs');
4
+ var chunkWFMWKPGY_cjs = require('./chunk-WFMWKPGY.cjs');
5
+ var chunk4TTX6ZNS_cjs = require('./chunk-4TTX6ZNS.cjs');
6
6
  var chunk4CIVQWAX_cjs = require('./chunk-4CIVQWAX.cjs');
7
7
  var chunkPL7HUTM3_cjs = require('./chunk-PL7HUTM3.cjs');
8
- var chunkVJ5ZLRBD_cjs = require('./chunk-VJ5ZLRBD.cjs');
9
- var chunk734NPQNR_cjs = require('./chunk-734NPQNR.cjs');
10
- var chunkUUENH4BJ_cjs = require('./chunk-UUENH4BJ.cjs');
11
- var chunkBVAT4EVC_cjs = require('./chunk-BVAT4EVC.cjs');
12
- var chunkJQLWKNJO_cjs = require('./chunk-JQLWKNJO.cjs');
13
- var chunkC2OICDMI_cjs = require('./chunk-C2OICDMI.cjs');
14
- var chunkLHWOKOMP_cjs = require('./chunk-LHWOKOMP.cjs');
8
+ var chunkGFUOCGY6_cjs = require('./chunk-GFUOCGY6.cjs');
9
+ var chunkADDQKZ5I_cjs = require('./chunk-ADDQKZ5I.cjs');
10
+ var chunkKXIRVKCJ_cjs = require('./chunk-KXIRVKCJ.cjs');
11
+ var chunk5QERK4PK_cjs = require('./chunk-5QERK4PK.cjs');
12
+ var chunkALK3PUUB_cjs = require('./chunk-ALK3PUUB.cjs');
13
+ var chunk7557LDAN_cjs = require('./chunk-7557LDAN.cjs');
14
+ var chunk46P7IDBX_cjs = require('./chunk-46P7IDBX.cjs');
15
15
  var chunkGNZAH6UI_cjs = require('./chunk-GNZAH6UI.cjs');
16
16
  var chunkJH6JTI76_cjs = require('./chunk-JH6JTI76.cjs');
17
17
  var chunkDTMBAFIL_cjs = require('./chunk-DTMBAFIL.cjs');
18
18
  var chunkMZZ3SBQL_cjs = require('./chunk-MZZ3SBQL.cjs');
19
19
  var chunkTG2GM7WJ_cjs = require('./chunk-TG2GM7WJ.cjs');
20
- var chunkFX3K6LNZ_cjs = require('./chunk-FX3K6LNZ.cjs');
21
- var chunkIPSHAMO2_cjs = require('./chunk-IPSHAMO2.cjs');
20
+ var chunkMNIQDXM6_cjs = require('./chunk-MNIQDXM6.cjs');
21
+ var chunkE3Y7RI3J_cjs = require('./chunk-E3Y7RI3J.cjs');
22
22
  var chunkEG7EJFUE_cjs = require('./chunk-EG7EJFUE.cjs');
23
23
  var chunkHQDR43JC_cjs = require('./chunk-HQDR43JC.cjs');
24
24
  var chunkJR2YSBD5_cjs = require('./chunk-JR2YSBD5.cjs');
25
25
  var chunkSJSGSHIT_cjs = require('./chunk-SJSGSHIT.cjs');
26
26
  var chunkZW6FPIFC_cjs = require('./chunk-ZW6FPIFC.cjs');
27
- var chunkLJJJ6CYH_cjs = require('./chunk-LJJJ6CYH.cjs');
28
- var chunkMNIQDXM6_cjs = require('./chunk-MNIQDXM6.cjs');
29
- var chunkE3Y7RI3J_cjs = require('./chunk-E3Y7RI3J.cjs');
27
+ var chunkFX3K6LNZ_cjs = require('./chunk-FX3K6LNZ.cjs');
28
+ var chunkIPSHAMO2_cjs = require('./chunk-IPSHAMO2.cjs');
30
29
  var chunkTKHCIHE2_cjs = require('./chunk-TKHCIHE2.cjs');
30
+ var chunkLJJJ6CYH_cjs = require('./chunk-LJJJ6CYH.cjs');
31
31
  var React = require('react');
32
32
  var lucideReact = require('lucide-react');
33
33
  var react = require('@arbidocs/react');
@@ -200,32 +200,27 @@ function ViewerRelatedDocuments({ document: document2 }) {
200
200
  );
201
201
  if (!related) return null;
202
202
  return /* @__PURE__ */ jsxRuntime.jsx(
203
- chunkBVAT4EVC_cjs.RelatedDocumentsCell,
203
+ chunk5QERK4PK_cjs.RelatedDocumentsCell,
204
204
  {
205
205
  currentDoc: document2,
206
206
  related,
207
207
  viewingDocumentId: viewerOpen ? viewingId : null,
208
208
  onDocumentClick: (id) => session.setViewingDocument({ id, page: null }),
209
- onDelete: (doc) => chunk734NPQNR_cjs.useFilesDialogs.getState().requestDelete(doc),
209
+ onDelete: (doc) => chunkADDQKZ5I_cjs.useFilesDialogs.getState().requestDelete(doc),
210
210
  onCompare
211
211
  }
212
212
  );
213
213
  }
214
214
  function PresentationPill({ compact }) {
215
215
  const session = react.useArbiSessionStore();
216
- const boundTo = chunkXTR26TNE_cjs.usePresentation((s) => s.boundTo);
217
- const clips = chunkXTR26TNE_cjs.usePresentation((s) => s.clips.length);
218
- const title = chunkXTR26TNE_cjs.usePresentation((s) => s.title);
216
+ const boundTo = chunk4TTX6ZNS_cjs.usePresentation((s) => s.boundTo);
217
+ const clips = chunk4TTX6ZNS_cjs.usePresentation((s) => s.clips.length);
218
+ const title = chunk4TTX6ZNS_cjs.usePresentation((s) => s.title);
219
219
  const onIt = react.useArbiSessionState(
220
220
  (s) => s.viewingDocument?.id === boundTo && s.documentViewer.tab === "slides"
221
221
  );
222
222
  if (onIt || boundTo === null && clips === 0) return null;
223
- const back = () => {
224
- if (boundTo === null) return chunk5LTIZ44D_cjs.editPresentation(session, { kind: "new" });
225
- session.setViewingDocument({ id: boundTo, page: null });
226
- session.setDocumentViewer({ tab: "slides" });
227
- session.openPanel(react.DOCUMENT_VIEWER_PANEL, "docked");
228
- };
223
+ const back = () => chunkWFMWKPGY_cjs.showPresentation(session, boundTo);
229
224
  return /* @__PURE__ */ jsxRuntime.jsxs(
230
225
  ui.Button,
231
226
  {
@@ -249,7 +244,7 @@ function useViewerClipping(clippable, compact) {
249
244
  const stop = React.useCallback(() => setOn(false), []);
250
245
  const button = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
251
246
  /* @__PURE__ */ jsxRuntime.jsx(PresentationPill, { compact }),
252
- clippable && /* @__PURE__ */ jsxRuntime.jsx(chunkLHWOKOMP_cjs.ClipButton, { active: on, compact, onClick: () => setOn(!on) })
247
+ clippable && /* @__PURE__ */ jsxRuntime.jsx(chunk46P7IDBX_cjs.ClipButton, { active: on, compact, onClick: () => setOn(!on) })
253
248
  ] });
254
249
  return { clipping: on && clippable, stop, button };
255
250
  }
@@ -293,7 +288,7 @@ function CleanViewControl({ onExit }) {
293
288
  size: "sm",
294
289
  variant: "ghost",
295
290
  className: "h-7",
296
- onClick: () => view && chunk5LTIZ44D_cjs.toggleFullscreen(view),
291
+ onClick: () => view && chunkWFMWKPGY_cjs.toggleFullscreen(view),
297
292
  children: [
298
293
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Maximize, { className: "size-3.5" }),
299
294
  "Full screen"
@@ -448,6 +443,37 @@ function ViewerCropModal({ crop }) {
448
443
  }
449
444
  );
450
445
  }
446
+ function ViewerMoreMenu({ items, compact }) {
447
+ if (!items.length) return null;
448
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
449
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
450
+ ui.Button,
451
+ {
452
+ type: "button",
453
+ variant: "outline",
454
+ size: "icon",
455
+ className: compact ? "pointer-coarse:size-11" : "size-8 pointer-coarse:size-11",
456
+ title: "More: share the file, email, translate",
457
+ "aria-label": "More",
458
+ "data-testid": "viewer-more-menu",
459
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "size-4" })
460
+ }
461
+ ) }),
462
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuContent, { align: "end", children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
463
+ ui.DropdownMenuItem,
464
+ {
465
+ onSelect: item.onSelect,
466
+ title: item.description,
467
+ "data-testid": item.testId,
468
+ children: [
469
+ item.icon,
470
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2", children: item.label })
471
+ ]
472
+ },
473
+ item.key
474
+ )) })
475
+ ] });
476
+ }
451
477
  var DOCX_EXTENSIONS = /* @__PURE__ */ new Set([".docx", ".doc"]);
452
478
  var XLSX_EXTENSIONS = /* @__PURE__ */ new Set([".xlsx", ".xls"]);
453
479
  var EMAIL_EXTENSIONS = /* @__PURE__ */ new Set([".eml", ".msg"]);
@@ -476,7 +502,7 @@ function useViewedDocument(documentId) {
476
502
  const documentData = record?.external_id === documentId ? record : void 0;
477
503
  const { data: tags } = chunkHQDR43JC_cjs.useConnectedTags();
478
504
  const labelSummaries = React.useMemo(
479
- () => chunkJQLWKNJO_cjs.summariseDocTags(documentData?.doctags ?? [], tags.filter(chunkJQLWKNJO_cjs.isDocumentLabel)),
505
+ () => chunkALK3PUUB_cjs.summariseDocTags(documentData?.doctags ?? [], tags.filter(chunkALK3PUUB_cjs.isDocumentLabel)),
480
506
  [documentData, tags]
481
507
  );
482
508
  const fileName = documentData?.file_name;
@@ -1046,7 +1072,7 @@ function PassageTagPanel({
1046
1072
  [workspaceTags]
1047
1073
  );
1048
1074
  return /* @__PURE__ */ jsxRuntime.jsx(
1049
- chunkJQLWKNJO_cjs.TagPassagePanel,
1075
+ chunkALK3PUUB_cjs.TagPassagePanel,
1050
1076
  {
1051
1077
  pageNumber,
1052
1078
  preview,
@@ -1171,7 +1197,7 @@ var ParsedPassage = React.memo(function ParsedPassage2({
1171
1197
  ];
1172
1198
  }) : [];
1173
1199
  return /* @__PURE__ */ jsxRuntime.jsx(
1174
- chunkJQLWKNJO_cjs.HtmlPassage,
1200
+ chunkALK3PUUB_cjs.HtmlPassage,
1175
1201
  {
1176
1202
  chunkId,
1177
1203
  highlight: isStrong ? "strong" : isLight ? "light" : void 0,
@@ -1211,7 +1237,7 @@ var ParsedPassage = React.memo(function ParsedPassage2({
1211
1237
  items: passageItems
1212
1238
  }
1213
1239
  ) : void 0,
1214
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkUUENH4BJ_cjs.ConnectedMarkdown, { children: chunk.content })
1240
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkKXIRVKCJ_cjs.ConnectedMarkdown, { children: chunk.content })
1215
1241
  }
1216
1242
  );
1217
1243
  });
@@ -1347,11 +1373,11 @@ function useDocumentLabels(documentId, doctags, orderedChunkIds) {
1347
1373
  const workspaceTags = React.useMemo(() => allTags.filter(isDocumentTag), [allTags]);
1348
1374
  const documentDoctags = React.useMemo(() => doctags ?? [], [doctags]);
1349
1375
  const tagSummaries = React.useMemo(
1350
- () => chunkJQLWKNJO_cjs.summariseDocTags(documentDoctags, workspaceTags),
1376
+ () => chunkALK3PUUB_cjs.summariseDocTags(documentDoctags, workspaceTags),
1351
1377
  [documentDoctags, workspaceTags]
1352
1378
  );
1353
1379
  const labelSummaries = React.useMemo(
1354
- () => chunkJQLWKNJO_cjs.summariseDocTags(documentDoctags, workspaceTags.filter(chunkJQLWKNJO_cjs.isDocumentLabel)),
1380
+ () => chunkALK3PUUB_cjs.summariseDocTags(documentDoctags, workspaceTags.filter(chunkALK3PUUB_cjs.isDocumentLabel)),
1355
1381
  [documentDoctags, workspaceTags]
1356
1382
  );
1357
1383
  const labelsByChunk = React.useMemo(() => {
@@ -1859,14 +1885,14 @@ function ParsedTextView({
1859
1885
  }
1860
1886
  }
1861
1887
  }, [maxPageNumber, onLoadSuccess]);
1862
- if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading parsed document..." });
1888
+ if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading parsed document..." });
1863
1889
  if (error) {
1864
- return /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-text", children: "Failed to load parsed document" }) });
1890
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-red-text", children: "Failed to load parsed document" }) });
1865
1891
  }
1866
1892
  const taggingChunk = labels.taggingChunkId ? processedChunks.flatMap((page) => page.chunks).find((c) => c.chunkExtId === labels.taggingChunkId) : void 0;
1867
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkJQLWKNJO_cjs.HtmlViewerRoot, { children: [
1893
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkALK3PUUB_cjs.HtmlViewerRoot, { children: [
1868
1894
  /* @__PURE__ */ jsxRuntime.jsx(
1869
- chunkJQLWKNJO_cjs.DocumentLabelBar,
1895
+ chunkALK3PUUB_cjs.DocumentLabelBar,
1870
1896
  {
1871
1897
  summaries: labels.labelSummaries,
1872
1898
  activeTagExtId: labels.activeTagExtId,
@@ -1891,15 +1917,15 @@ function ParsedTextView({
1891
1917
  }
1892
1918
  ),
1893
1919
  !citation.factCitationActive && citation.runStartIds.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1894
- chunkJQLWKNJO_cjs.CitedRunNav,
1920
+ chunkALK3PUUB_cjs.CitedRunNav,
1895
1921
  {
1896
1922
  position: citation.runCursor + 1,
1897
1923
  total: citation.runStartIds.length,
1898
1924
  onStep: citation.gotoRun
1899
1925
  }
1900
1926
  ),
1901
- /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.HtmlViewerSurface, { surfaceRef: containerRef, onMouseUp: citation.handleSelectionEnd, children: processedChunks.length > 0 ? processedChunks.map((page, pageIndex) => /* @__PURE__ */ jsxRuntime.jsx(
1902
- chunkJQLWKNJO_cjs.HtmlPage,
1927
+ /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.HtmlViewerSurface, { surfaceRef: containerRef, onMouseUp: citation.handleSelectionEnd, children: processedChunks.length > 0 ? processedChunks.map((page, pageIndex) => /* @__PURE__ */ jsxRuntime.jsx(
1928
+ chunkALK3PUUB_cjs.HtmlPage,
1903
1929
  {
1904
1930
  pageNumber: page.pageNumber,
1905
1931
  totalPages,
@@ -1940,9 +1966,89 @@ function ParsedTextView({
1940
1966
  })
1941
1967
  },
1942
1968
  pageIndex
1943
- )) : /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.HtmlViewerEmpty, {}) })
1969
+ )) : /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.HtmlViewerEmpty, {}) })
1944
1970
  ] });
1945
1971
  }
1972
+ function PdfClipOutlines({ outlines, onShow }) {
1973
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0", "data-testid": "pdf-clip-outlines", children: outlines.map((outline) => {
1974
+ const { rect } = outline;
1975
+ const label = outline.slides.length ? `Slide ${outline.slides.map((index) => index + 1).join(", ")}` : "In the tray";
1976
+ return /* @__PURE__ */ jsxRuntime.jsx(
1977
+ "div",
1978
+ {
1979
+ className: "absolute rounded-sm border-2 border-dashed border-primary/70",
1980
+ style: {
1981
+ left: `${rect.x * 100}%`,
1982
+ top: `${rect.y * 100}%`,
1983
+ width: `${rect.w * 100}%`,
1984
+ height: `${rect.h * 100}%`
1985
+ },
1986
+ "data-testid": "pdf-clip-outline",
1987
+ "data-clip-id": outline.clipId,
1988
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1989
+ "button",
1990
+ {
1991
+ type: "button",
1992
+ className: "pointer-events-auto absolute -top-2.5 left-1 inline-flex items-center gap-1 rounded-full bg-primary px-1.5 text-[10px] font-medium leading-4 text-primary-foreground shadow-sm hover:bg-primary/90",
1993
+ title: outline.slides.length ? `Clipped for the presentation: go to ${label.toLowerCase()}` : "Clipped for the presentation: not on a slide yet",
1994
+ onClick: () => onShow(outline),
1995
+ "data-testid": "pdf-clip-outline-label",
1996
+ children: [
1997
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Presentation, { className: "size-2.5" }),
1998
+ label
1999
+ ]
2000
+ }
2001
+ )
2002
+ },
2003
+ outline.clipId
2004
+ );
2005
+ }) });
2006
+ }
2007
+
2008
+ // src/connection/viewer/pdf/clipOutlines.ts
2009
+ function parseRef(id) {
2010
+ const match = /^(.*)@v(\d+)$/.exec(id);
2011
+ return match ? { documentId: match[1], version: Number(match[2]) } : { documentId: id, version: null };
2012
+ }
2013
+ function clipOutlinesByPage(viewingId, clips, slides) {
2014
+ const byPage = /* @__PURE__ */ new Map();
2015
+ if (!viewingId) return byPage;
2016
+ const { documentId, version } = parseRef(viewingId);
2017
+ for (const clip of clips) {
2018
+ if (clip.kind !== "pdf" || clip.plain || clip.documentId !== documentId) continue;
2019
+ if (version !== null && clip.version !== void 0 && clip.version !== version) continue;
2020
+ const on = slides.flatMap(
2021
+ (slide, index) => slide.items.some((item) => item.clipId === clip.id) ? [index] : []
2022
+ );
2023
+ const outline = { clipId: clip.id, rect: clip.rect, slides: on };
2024
+ byPage.set(clip.page, [...byPage.get(clip.page) ?? [], outline]);
2025
+ }
2026
+ return byPage;
2027
+ }
2028
+ function usePdfClipOutlines(viewingId) {
2029
+ const session = react.useArbiSessionStore();
2030
+ const clips = chunk4TTX6ZNS_cjs.usePresentation((s) => s.clips);
2031
+ const slides = chunk4TTX6ZNS_cjs.usePresentation((s) => s.slides);
2032
+ const byPage = React.useMemo(
2033
+ () => clipOutlinesByPage(viewingId, clips, slides),
2034
+ [viewingId, clips, slides]
2035
+ );
2036
+ const show = React.useCallback(
2037
+ (outline) => {
2038
+ const state = chunk4TTX6ZNS_cjs.usePresentation.getState();
2039
+ if (outline.slides.length) state.goTo(outline.slides[0]);
2040
+ chunkWFMWKPGY_cjs.showPresentation(session, state.boundTo);
2041
+ },
2042
+ [session]
2043
+ );
2044
+ return React.useCallback(
2045
+ (pageNumber) => {
2046
+ const outlines = byPage.get(pageNumber);
2047
+ return outlines ? /* @__PURE__ */ jsxRuntime.jsx(PdfClipOutlines, { outlines, onShow: show }) : null;
2048
+ },
2049
+ [byPage, show]
2050
+ );
2051
+ }
1946
2052
  function PdfPassageHighlights({
1947
2053
  boxes,
1948
2054
  activeId,
@@ -1958,9 +2064,10 @@ function PdfPassageHighlights({
1958
2064
  "data-chunk-id": chunkId,
1959
2065
  "data-highlight": highlight,
1960
2066
  className: ui.cn(
1961
- // multiplied, so the page's text stays as dark as it was under the wash
2067
+ // multiplied, so the page's text stays as dark as it was under the wash. The passage
2068
+ // opened (a citation clicked) is marked plainly: a faint wash on a page is easy to miss.
1962
2069
  "absolute rounded-sm mix-blend-multiply",
1963
- highlight === "strong" ? "bg-ai-soft ring-1 ring-ai-accent/50" : "bg-ai-soft/60"
2070
+ highlight === "strong" || chunkId === activeId ? "bg-ai-soft ring-2 ring-ai-accent/70" : "bg-ai-soft/60"
1964
2071
  ),
1965
2072
  style: {
1966
2073
  left: `${x0 * 100}%`,
@@ -1990,6 +2097,16 @@ function asBox(bbox) {
1990
2097
  function isWholePage([x0, y0, x1, y1]) {
1991
2098
  return x0 <= 0 && y0 <= 0 && x1 >= 1 && y1 >= 1;
1992
2099
  }
2100
+ function passagePlaced(pages, chunkId) {
2101
+ for (const page of pages) {
2102
+ const chunk = page.chunks.find((entry) => entry.chunkExtId === chunkId);
2103
+ if (chunk) {
2104
+ const box = asBox(chunk.pageBbox);
2105
+ return !!box && !isWholePage(box);
2106
+ }
2107
+ }
2108
+ return false;
2109
+ }
1993
2110
  function passageBoxesByPage(pages, state) {
1994
2111
  const byPage = /* @__PURE__ */ new Map();
1995
2112
  if (state.cited.size === 0 && !state.active) return byPage;
@@ -2022,6 +2139,15 @@ function usePdfPassageHighlights(documentId) {
2022
2139
  () => passageBoxesByPage(processedChunks, { cited, active }),
2023
2140
  [processedChunks, cited, active]
2024
2141
  );
2142
+ const session = react.useArbiSessionStore();
2143
+ const fellBackFor = React.useRef(null);
2144
+ React.useEffect(() => {
2145
+ if (!active || !parsed || !documentId) return;
2146
+ const key = `${documentId}:${active}`;
2147
+ if (fellBackFor.current === key || passagePlaced(processedChunks, active)) return;
2148
+ fellBackFor.current = key;
2149
+ session.setDocumentViewer({ tab: "html" });
2150
+ }, [active, parsed, processedChunks, documentId, session]);
2025
2151
  const centredFor = React.useRef(null);
2026
2152
  const activeKey = active ? `${documentId}:${active}` : null;
2027
2153
  React.useEffect(() => {
@@ -2049,13 +2175,13 @@ function PresentationFileCard({ documentId, fileName }) {
2049
2175
  chunkZW6FPIFC_cjs.EmptyState,
2050
2176
  {
2051
2177
  icon: lucideReact.Presentation,
2052
- title: chunkXTR26TNE_cjs.presentationTitle(fileName),
2178
+ title: chunk4TTX6ZNS_cjs.presentationTitle(fileName),
2053
2179
  description: "A presentation saved in an earlier format, without its slides. Open it and save it to keep it as a presentation PDF; this file can then be deleted.",
2054
2180
  action: /* @__PURE__ */ jsxRuntime.jsxs(
2055
2181
  ui.Button,
2056
2182
  {
2057
2183
  type: "button",
2058
- onClick: () => chunk5LTIZ44D_cjs.editPresentation(session, { kind: "open", documentId }),
2184
+ onClick: () => chunkWFMWKPGY_cjs.editPresentation(session, { kind: "open", documentId }),
2059
2185
  "data-testid": "presentation-file-edit",
2060
2186
  children: [
2061
2187
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { className: "size-4" }),
@@ -2076,10 +2202,10 @@ var SignatureRequestEditor = React.lazy(
2076
2202
  () => import('./document-tools/viewer/index.cjs').then((m) => ({ default: m.SignatureRequestEditor }))
2077
2203
  );
2078
2204
  var ClippingPdfViewer = React.lazy(
2079
- () => import('./ClippingPdfViewer-6GCVTV3V.cjs').then((m) => ({ default: m.ClippingPdfViewer }))
2205
+ () => import('./ClippingPdfViewer-OGYLMVCE.cjs').then((m) => ({ default: m.ClippingPdfViewer }))
2080
2206
  );
2081
2207
  var ClippingMediaViewer = React.lazy(
2082
- () => import('./ClippingMediaViewer-B6WG7Q64.cjs').then((m) => ({ default: m.ClippingMediaViewer }))
2208
+ () => import('./ClippingMediaViewer-IEIBT74X.cjs').then((m) => ({ default: m.ClippingMediaViewer }))
2083
2209
  );
2084
2210
  var GuidedSigningViewer = React.lazy(
2085
2211
  () => import('./document-tools/viewer/index.cjs').then((m) => ({ default: m.GuidedSigningViewer }))
@@ -2095,13 +2221,15 @@ function SessionPdfViewer(props) {
2095
2221
  [session, viewingId]
2096
2222
  );
2097
2223
  const passageHighlights = usePdfPassageHighlights(viewingId);
2224
+ const clipOutlines = usePdfClipOutlines(viewingId);
2098
2225
  const { renderPageOverlay: modeOverlay } = props;
2099
2226
  const renderPageOverlay = React.useCallback(
2100
2227
  (page) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2101
2228
  passageHighlights(page.pageNumber),
2229
+ clipOutlines(page.pageNumber),
2102
2230
  modeOverlay?.(page)
2103
2231
  ] }),
2104
- [passageHighlights, modeOverlay]
2232
+ [passageHighlights, clipOutlines, modeOverlay]
2105
2233
  );
2106
2234
  return /* @__PURE__ */ jsxRuntime.jsx(
2107
2235
  viewers.PdfViewer,
@@ -2135,12 +2263,12 @@ function ViewerPdfPane({
2135
2263
  }) {
2136
2264
  const { documentData, isDownloadOnly, isVideo, isAudio, isImage, isDocx } = doc;
2137
2265
  const showMarkup = markup.hasMarkup && !markup.showOriginal;
2138
- if (chunkVJ5ZLRBD_cjs.isLegacyPresentationFile(documentData?.file_name)) {
2266
+ if (chunkGFUOCGY6_cjs.isLegacyPresentationFile(documentData?.file_name)) {
2139
2267
  return /* @__PURE__ */ jsxRuntime.jsx(PresentationFileCard, { documentId, fileName: documentData?.file_name ?? "" });
2140
2268
  }
2141
2269
  if (isDownloadOnly) {
2142
2270
  return /* @__PURE__ */ jsxRuntime.jsx(
2143
- chunkJQLWKNJO_cjs.ViewerPreviewUnavailable,
2271
+ chunkALK3PUUB_cjs.ViewerPreviewUnavailable,
2144
2272
  {
2145
2273
  extension: fileExtension(documentData?.file_name),
2146
2274
  onDownload
@@ -2150,24 +2278,24 @@ function ViewerPdfPane({
2150
2278
  const loadingLabel = isVideo ? "Loading video..." : isAudio ? "Loading audio..." : isImage ? "Loading image..." : !documentData ? "Loading document..." : ui.friendlyFileType(documentData.file_type, documentData.file_name) === "Text" ? "Loading text..." : "Loading PDF...";
2151
2279
  const errorLabel = isVideo ? "Failed to load video" : isAudio ? "Failed to load audio" : isImage ? "Failed to load image" : "Failed to load PDF";
2152
2280
  if (isDocx && !pdfSnapshotNumber && documentData && !["completed", "low-content", "failed"].includes(documentData.status || "")) {
2153
- return /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "PDF and search indexing are processing. Open the DOCX tab to edit now." });
2281
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "PDF and search indexing are processing. Open the DOCX tab to edit now." });
2154
2282
  }
2155
2283
  if (isDocx && !pdfSnapshotNumber && documentData?.status === "failed") {
2156
- return /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "PDF conversion failed. Open the Word editor or download the document." });
2284
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "PDF conversion failed. Open the Word editor or download the document." });
2157
2285
  }
2158
- if (isPdfLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: loadingLabel });
2286
+ if (isPdfLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: loadingLabel });
2159
2287
  if (pdfError) {
2160
2288
  return /* @__PURE__ */ jsxRuntime.jsx(
2161
- chunkJQLWKNJO_cjs.ViewerLoadError,
2289
+ chunkALK3PUUB_cjs.ViewerLoadError,
2162
2290
  {
2163
2291
  message: isVideo || isAudio || isImage ? `${errorLabel} \u2014 download it instead.` : "Couldn't display the PDF \u2014 download it instead.",
2164
2292
  onDownload
2165
2293
  }
2166
2294
  );
2167
2295
  }
2168
- if (!pdfBlob) return /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: loadingLabel });
2296
+ if (!pdfBlob) return /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: loadingLabel });
2169
2297
  if (clipping && (isImage || isVideo)) {
2170
- return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2298
+ return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2171
2299
  ClippingMediaViewer,
2172
2300
  {
2173
2301
  file: pdfBlob,
@@ -2183,7 +2311,7 @@ function ViewerPdfPane({
2183
2311
  return /* @__PURE__ */ jsxRuntime.jsx(viewers.ImageViewer, { blob: pdfBlob, alt: documentData?.file_name || "Document image" });
2184
2312
  }
2185
2313
  if (signatureFlow?.kind === "prepare") {
2186
- return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2314
+ return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2187
2315
  SignatureRequestEditor,
2188
2316
  {
2189
2317
  ...viewerProps,
@@ -2201,7 +2329,7 @@ function ViewerPdfPane({
2201
2329
  }
2202
2330
  if (signatureFlow?.kind === "sign" && currentUserId) {
2203
2331
  const { currentPage: _page, scrollTrigger: _trigger, ...guidedProps } = viewerProps;
2204
- return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2332
+ return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2205
2333
  GuidedSigningViewer,
2206
2334
  {
2207
2335
  ...guidedProps,
@@ -2215,7 +2343,7 @@ function ViewerPdfPane({
2215
2343
  ) });
2216
2344
  }
2217
2345
  if (placingSignature) {
2218
- return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2346
+ return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2219
2347
  SignaturePlacementViewer,
2220
2348
  {
2221
2349
  ...viewerProps,
@@ -2228,7 +2356,7 @@ function ViewerPdfPane({
2228
2356
  ) });
2229
2357
  }
2230
2358
  if (clipping) {
2231
- return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2359
+ return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2232
2360
  ClippingPdfViewer,
2233
2361
  {
2234
2362
  ...viewerProps,
@@ -2245,7 +2373,7 @@ function ViewerPdfPane({
2245
2373
  return /* @__PURE__ */ jsxRuntime.jsx(
2246
2374
  React.Suspense,
2247
2375
  {
2248
- fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: annotating ? "Loading annotation tools\u2026" : "Loading markup\u2026" }),
2376
+ fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: annotating ? "Loading annotation tools\u2026" : "Loading markup\u2026" }),
2249
2377
  children: /* @__PURE__ */ jsxRuntime.jsx(
2250
2378
  AnnotatedPdfViewer,
2251
2379
  {
@@ -2271,15 +2399,15 @@ function ViewerPdfPane({
2271
2399
  return /* @__PURE__ */ jsxRuntime.jsx(SessionPdfViewer, { ...viewerProps, file: pdfBlob });
2272
2400
  }
2273
2401
  var SlidesTab = React.lazy(
2274
- () => import('./ConnectedSlidesTab-7QDE2CZD.cjs').then((m) => ({ default: m.ConnectedSlidesTab }))
2402
+ () => import('./ConnectedSlidesTab-7YMEDGUU.cjs').then((m) => ({ default: m.ConnectedSlidesTab }))
2275
2403
  );
2276
2404
  var StreamedWordArtifact = React.lazy(
2277
- () => import('./ConnectedStreamedWordArtifact-FFOQJBOI.cjs').then((m) => ({
2405
+ () => import('./ConnectedStreamedWordArtifact-AG62232A.cjs').then((m) => ({
2278
2406
  default: m.ConnectedStreamedWordArtifact
2279
2407
  }))
2280
2408
  );
2281
2409
  var NativeDocxComparison = React.lazy(
2282
- () => import('./ConnectedNativeDocxComparison-4Q5S7VLD.cjs').then((m) => ({
2410
+ () => import('./ConnectedNativeDocxComparison-QKHCYD6W.cjs').then((m) => ({
2283
2411
  default: m.ConnectedNativeDocxComparison
2284
2412
  }))
2285
2413
  );
@@ -2501,15 +2629,15 @@ function DocumentViewerContent({
2501
2629
  };
2502
2630
  const documentTitle = streamingDoc?.title || draftDoc?.title || documentData?.doc_metadata?.title || documentData?.file_name || "Document";
2503
2631
  const pageNav = totalPages > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2504
- /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerZoomControl, { zoom, onCycle: () => setZoom(viewers.cycleZoom(zoom)) }),
2632
+ /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerZoomControl, { zoom, onCycle: () => setZoom(viewers.cycleZoom(zoom)) }),
2505
2633
  /* @__PURE__ */ jsxRuntime.jsx(
2506
- chunkJQLWKNJO_cjs.PdfPageNav,
2634
+ chunkALK3PUUB_cjs.PdfPageNav,
2507
2635
  {
2508
2636
  canPrev: (viewingDocumentPage || 1) > 1,
2509
2637
  canNext: (viewingDocumentPage || 1) < totalPages,
2510
2638
  onPrev: () => stepPage(-1),
2511
2639
  onNext: () => stepPage(1),
2512
- counter: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerPageCounter, { page: viewingDocumentPage || 1, total: totalPages, onGoTo: goToPage })
2640
+ counter: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerPageCounter, { page: viewingDocumentPage || 1, total: totalPages, onGoTo: goToPage })
2513
2641
  }
2514
2642
  )
2515
2643
  ] });
@@ -2533,7 +2661,7 @@ function DocumentViewerContent({
2533
2661
  );
2534
2662
  const titleBlock = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2535
2663
  isDraft ? /* @__PURE__ */ jsxRuntime.jsx(ViewerDraftTitle, { documentId }) : /* @__PURE__ */ jsxRuntime.jsx(
2536
- chunkJQLWKNJO_cjs.ViewerTitle,
2664
+ chunkALK3PUUB_cjs.ViewerTitle,
2537
2665
  {
2538
2666
  title: documentTitle,
2539
2667
  versionLabel: currentVersionLabel,
@@ -2542,7 +2670,7 @@ function DocumentViewerContent({
2542
2670
  ),
2543
2671
  isCompact && !isDraft && documentData?.shared && /* @__PURE__ */ jsxRuntime.jsx(ui.SharingEntity, { shared: true, variant: "icon", "data-testid": "document-shared-status" }),
2544
2672
  isCompact && activeTab === "pdf" && pdfBlob && markup.hasMarkup && !annotating && !placingSignature && /* @__PURE__ */ jsxRuntime.jsx(
2545
- chunkLHWOKOMP_cjs.MarkupViewNote,
2673
+ chunk46P7IDBX_cjs.MarkupViewNote,
2546
2674
  {
2547
2675
  showOriginal: markup.showOriginal,
2548
2676
  onToggle: () => markup.setShowOriginal((on) => !on)
@@ -2560,7 +2688,7 @@ function DocumentViewerContent({
2560
2688
  /* @__PURE__ */ jsxRuntime.jsx(ViewerDraftKind, { documentId })
2561
2689
  ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2562
2690
  /* @__PURE__ */ jsxRuntime.jsx(
2563
- chunkJQLWKNJO_cjs.ViewerTabBar,
2691
+ chunkALK3PUUB_cjs.ViewerTabBar,
2564
2692
  {
2565
2693
  tabs: viewerTabs.filter((tab) => tab.id !== "versions"),
2566
2694
  activeId: activeTab,
@@ -2601,7 +2729,7 @@ function DocumentViewerContent({
2601
2729
  const clip = useViewerClipping(annotatable || !!pdfBlob && (isImage || isVideo), isCompact);
2602
2730
  const clean = useCleanView();
2603
2731
  const signatureBanner = !isDraft && !liveKind && !snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsx(
2604
- chunkLHWOKOMP_cjs.SignatureRequestBanner,
2732
+ chunk46P7IDBX_cjs.SignatureRequestBanner,
2605
2733
  {
2606
2734
  documentId,
2607
2735
  hidden: !!signatureFlow,
@@ -2632,7 +2760,7 @@ function DocumentViewerContent({
2632
2760
  const shownRef = snapshotDocumentId || documentId;
2633
2761
  const rightContent = /* @__PURE__ */ jsxRuntime.jsxs(chunkDTMBAFIL_cjs.ViewerHeaderEnd, { isCompact, children: [
2634
2762
  annotatable && /* @__PURE__ */ jsxRuntime.jsx(
2635
- chunkLHWOKOMP_cjs.AnnotateButton,
2763
+ chunk46P7IDBX_cjs.AnnotateButton,
2636
2764
  {
2637
2765
  active: annotating,
2638
2766
  compact: isCompact,
@@ -2646,7 +2774,7 @@ function DocumentViewerContent({
2646
2774
  ),
2647
2775
  clip.button,
2648
2776
  activeTab === "pdf" && pdfBlob && !placingSignature && (markup.hasMarkup || annotating) && /* @__PURE__ */ jsxRuntime.jsx(
2649
- chunkLHWOKOMP_cjs.ShowOriginalButton,
2777
+ chunk46P7IDBX_cjs.ShowOriginalButton,
2650
2778
  {
2651
2779
  active: markup.showOriginal,
2652
2780
  compact: isCompact,
@@ -2657,14 +2785,14 @@ function DocumentViewerContent({
2657
2785
  }
2658
2786
  ),
2659
2787
  activeTab === "pdf" && markup.hasMarkup && !annotating && /* @__PURE__ */ jsxRuntime.jsx(
2660
- chunkLHWOKOMP_cjs.DownloadMarkupButton,
2788
+ chunk46P7IDBX_cjs.DownloadMarkupButton,
2661
2789
  {
2662
2790
  onClick: () => void markup.downloadMarkup(),
2663
2791
  disabledReason: isSigned ? documentTools.SIGNED_LOCKED_REASON : void 0
2664
2792
  }
2665
2793
  ),
2666
2794
  activeTab === "pdf" && isImage && pdfBlob && /* @__PURE__ */ jsxRuntime.jsx(
2667
- chunkJQLWKNJO_cjs.ViewerImageActions,
2795
+ chunkALK3PUUB_cjs.ViewerImageActions,
2668
2796
  {
2669
2797
  compact: isCompact,
2670
2798
  onUseAsReference: support.useImageAsReference ? () => support.useImageAsReference(documentId) : void 0,
@@ -2689,28 +2817,15 @@ function DocumentViewerContent({
2689
2817
  ]
2690
2818
  }
2691
2819
  ),
2692
- documentId && documentData && !isDraft && !isStreaming && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2693
- /* @__PURE__ */ jsxRuntime.jsx(
2694
- ui.Button,
2695
- {
2696
- type: "button",
2697
- variant: "outline",
2698
- size: "sm",
2699
- onClick: () => setSharingFile(true),
2700
- "data-testid": "share-file-button",
2701
- children: "Share file"
2702
- }
2703
- ),
2704
- /* @__PURE__ */ jsxRuntime.jsx(
2705
- chunkLHWOKOMP_cjs.FileShareDialog,
2706
- {
2707
- open: sharingFile,
2708
- onOpenChange: setSharingFile,
2709
- documentId,
2710
- version: pdfSnapshotNumber ?? documentData.current_version ?? 1
2711
- }
2712
- )
2713
- ] }),
2820
+ documentId && documentData && !isDraft && !isStreaming && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
2821
+ chunk46P7IDBX_cjs.FileShareDialog,
2822
+ {
2823
+ open: sharingFile,
2824
+ onOpenChange: setSharingFile,
2825
+ documentId,
2826
+ version: pdfSnapshotNumber ?? documentData.current_version ?? 1
2827
+ }
2828
+ ) }),
2714
2829
  doc.savedDocumentId && !snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsxs(
2715
2830
  ui.Button,
2716
2831
  {
@@ -2733,7 +2848,7 @@ function DocumentViewerContent({
2733
2848
  {
2734
2849
  state: documentData?.shared ? "shared" : "private",
2735
2850
  onToggle: share,
2736
- disabled: !chunkJQLWKNJO_cjs.canChangeVisibility(documentData, currentUserId),
2851
+ disabled: !chunkALK3PUUB_cjs.canChangeVisibility(documentData, currentUserId),
2737
2852
  disabledTooltip: "Only the owner can change visibility",
2738
2853
  tooltip: documentData?.shared ? "Shared with the workspace \u2014 click to share with specific people" : "Share with the workspace, then optionally notify specific people by email",
2739
2854
  variant: "outline",
@@ -2748,43 +2863,6 @@ function DocumentViewerContent({
2748
2863
  stateTestId: "document-title-shared-indicator"
2749
2864
  }
2750
2865
  ),
2751
- tools.emailDocument && !isDraft && !isStreaming && documentData?.file_name && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2752
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mx-1 h-5 w-px bg-border", "aria-hidden": "true" }),
2753
- /* @__PURE__ */ jsxRuntime.jsxs(
2754
- ui.Button,
2755
- {
2756
- type: "button",
2757
- variant: "outline",
2758
- size: isCompact ? "icon" : "sm",
2759
- title: "Email this document",
2760
- "aria-label": "Email",
2761
- "data-testid": "email-document-button",
2762
- className: "pointer-coarse:min-h-11",
2763
- onClick: () => tools.emailDocument?.(shownRef),
2764
- children: [
2765
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "size-4" }),
2766
- !isCompact && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1", children: "Email" })
2767
- ]
2768
- }
2769
- )
2770
- ] }),
2771
- support.translate && !isDraft && !isStreaming && !liveKind && !isImage && documentData?.file_name && /* @__PURE__ */ jsxRuntime.jsxs(
2772
- ui.Button,
2773
- {
2774
- type: "button",
2775
- variant: "outline",
2776
- size: isCompact ? "icon" : "sm",
2777
- title: "Translate into another language: a new editable document, original and translation side by side",
2778
- "aria-label": "Translate",
2779
- "data-testid": "translate-document-button",
2780
- className: "pointer-coarse:min-h-11",
2781
- onClick: () => support.translate(shownRef),
2782
- children: [
2783
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Languages, { className: "size-4" }),
2784
- !isCompact && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1", children: "Translate" })
2785
- ]
2786
- }
2787
- ),
2788
2866
  !isStreaming && !snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsx(FinaliseTranslationButton, { document: documentData ?? void 0, isCompact }),
2789
2867
  annotatable && /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
2790
2868
  /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2798,7 +2876,7 @@ function DocumentViewerContent({
2798
2876
  "data-testid": "signing-menu-trigger",
2799
2877
  className: "pointer-coarse:min-h-11",
2800
2878
  children: [
2801
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PenLine, { className: "size-4" }),
2879
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Signature, { className: "size-4" }),
2802
2880
  !isCompact && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1", children: "Sign" }),
2803
2881
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "ml-1 size-3" })
2804
2882
  ]
@@ -2827,7 +2905,7 @@ function DocumentViewerContent({
2827
2905
  ),
2828
2906
  !isSigned && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2829
2907
  /* @__PURE__ */ jsxRuntime.jsx(
2830
- chunkLHWOKOMP_cjs.PlaceMySignatureMenuItems,
2908
+ chunk46P7IDBX_cjs.PlaceMySignatureMenuItems,
2831
2909
  {
2832
2910
  onPlace: (mark) => {
2833
2911
  setPlacingSignature(false);
@@ -2867,6 +2945,44 @@ function DocumentViewerContent({
2867
2945
  appearance: signAppearance
2868
2946
  }
2869
2947
  ),
2948
+ /* @__PURE__ */ jsxRuntime.jsx(
2949
+ ViewerMoreMenu,
2950
+ {
2951
+ compact: isCompact,
2952
+ items: [
2953
+ ...documentId && documentData && !isDraft && !isStreaming ? [
2954
+ {
2955
+ key: "share-file",
2956
+ label: "Share file\u2026",
2957
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link2, { className: "size-4" }),
2958
+ description: "Send a link to this version of the file",
2959
+ onSelect: () => setSharingFile(true),
2960
+ testId: "share-file-button"
2961
+ }
2962
+ ] : [],
2963
+ ...tools.emailDocument && !isDraft && !isStreaming && documentData?.file_name ? [
2964
+ {
2965
+ key: "email",
2966
+ label: "Email\u2026",
2967
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, { className: "size-4" }),
2968
+ description: "Email this document (attached)",
2969
+ onSelect: () => tools.emailDocument?.(shownRef),
2970
+ testId: "email-document-button"
2971
+ }
2972
+ ] : [],
2973
+ ...support.translate && !isDraft && !isStreaming && !liveKind && !isImage && documentData?.file_name ? [
2974
+ {
2975
+ key: "translate",
2976
+ label: "Translate\u2026",
2977
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Languages, { className: "size-4" }),
2978
+ description: "A new editable document, original and translation side by side",
2979
+ onSelect: () => support.translate(shownRef),
2980
+ testId: "translate-document-button"
2981
+ }
2982
+ ] : []
2983
+ ]
2984
+ }
2985
+ ),
2870
2986
  headerActions
2871
2987
  ] });
2872
2988
  const viewerProps = {
@@ -2877,7 +2993,7 @@ function DocumentViewerContent({
2877
2993
  onZoomChange: setZoom
2878
2994
  };
2879
2995
  return /* @__PURE__ */ jsxRuntime.jsxs(
2880
- chunkJQLWKNJO_cjs.ViewerFrame,
2996
+ chunkALK3PUUB_cjs.ViewerFrame,
2881
2997
  {
2882
2998
  frameRef: containerRef,
2883
2999
  contentId: documentId,
@@ -2895,7 +3011,7 @@ function DocumentViewerContent({
2895
3011
  ),
2896
3012
  isCompact && !isCoEditing && /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "viewer-title-row", className: "flex min-w-0 items-center gap-2 px-3 pb-2", children: titleBlock }),
2897
3013
  snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsx(
2898
- chunkLHWOKOMP_cjs.VersionSnapshotBar,
3014
+ chunk46P7IDBX_cjs.VersionSnapshotBar,
2899
3015
  {
2900
3016
  versionNumber: snapshotNumber,
2901
3017
  live: isDocx || isArtifact,
@@ -2908,7 +3024,7 @@ function DocumentViewerContent({
2908
3024
  ...clean.frame,
2909
3025
  footer: /* @__PURE__ */ jsxRuntime.jsx(ViewerCropModal, { crop }),
2910
3026
  children: [
2911
- isComparing && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading comparison\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
3027
+ isComparing && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading comparison\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
2912
3028
  NativeDocxComparison,
2913
3029
  {
2914
3030
  baseId: compareDocumentId,
@@ -2918,22 +3034,22 @@ function DocumentViewerContent({
2918
3034
  ) }),
2919
3035
  isCaptureDraft && /* @__PURE__ */ jsxRuntime.jsx(ViewerCaptureDraft, { documentId }),
2920
3036
  !isCaptureDraft && (activeTab === "pdf" || isMedia && activeTab === "html") && (!isArtifact || isDocx && !isDraft && !isStreaming && !liveKind) && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(chunkDTMBAFIL_cjs.ViewerPane, { hidden: activeTab !== "pdf", children: [
2921
- !clean.on && /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.DocumentLabelBar, { summaries: labelSummaries }),
3037
+ !clean.on && /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.DocumentLabelBar, { summaries: labelSummaries }),
2922
3038
  !clean.on && !isMedia && !isImage && signatureBanner,
2923
- !clean.on && activeTab === "pdf" && pdfBlob && !pdfVerified && /* @__PURE__ */ jsxRuntime.jsxs(chunkJQLWKNJO_cjs.ViewerMessage, { children: [
3039
+ !clean.on && activeTab === "pdf" && pdfBlob && !pdfVerified && /* @__PURE__ */ jsxRuntime.jsxs(chunkALK3PUUB_cjs.ViewerMessage, { children: [
2924
3040
  "Offline copy: its version cannot be verified. Reconnect before signing.",
2925
3041
  " ",
2926
3042
  /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => void blobs.retryPdf(), className: "underline", children: "Retry loading the current PDF" })
2927
3043
  ] }),
2928
3044
  !clean.on && activeTab === "pdf" && !isMedia && !isImage && /* @__PURE__ */ jsxRuntime.jsx(
2929
- chunkLHWOKOMP_cjs.MarkupNotices,
3045
+ chunk46P7IDBX_cjs.MarkupNotices,
2930
3046
  {
2931
3047
  legacyPrompt: markup.legacyPrompt,
2932
3048
  olderNote: markup.olderNote,
2933
3049
  onOpenVersion: (n) => setSnapshotDocumentId(`${documentId}@v${n}`)
2934
3050
  }
2935
3051
  ),
2936
- /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerControlBar, { controls: !clean.on && activeTab === "pdf" && pageNav, children: /* @__PURE__ */ jsxRuntime.jsx(
3052
+ /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerControlBar, { controls: !clean.on && activeTab === "pdf" && pageNav, children: /* @__PURE__ */ jsxRuntime.jsx(
2937
3053
  ViewerPdfPane,
2938
3054
  {
2939
3055
  documentId,
@@ -2973,10 +3089,10 @@ function DocumentViewerContent({
2973
3089
  }
2974
3090
  ),
2975
3091
  activeTab === "edit" && isArtifact && liveKind && /* @__PURE__ */ jsxRuntime.jsx(chunkEG7EJFUE_cjs.ArtifactCodeView, { source: liveSource, fileName: documentData?.file_name ?? void 0 }),
2976
- activeTab === "edit" && isArtifact && !liveKind && !isStreaming && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading editor\u2026" }), children: [
2977
- isSigned && !snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsx(chunkLHWOKOMP_cjs.SignedEditNote, {}),
3092
+ activeTab === "edit" && isArtifact && !liveKind && !isStreaming && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading editor\u2026" }), children: [
3093
+ isSigned && !snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsx(chunk46P7IDBX_cjs.SignedEditNote, {}),
2978
3094
  /* @__PURE__ */ jsxRuntime.jsx(
2979
- chunkC2OICDMI_cjs.ConnectedNativeDocxEditor,
3095
+ chunk7557LDAN_cjs.ConnectedNativeDocxEditor,
2980
3096
  {
2981
3097
  documentId: snapshotDocumentId || documentId,
2982
3098
  title: documentTitle,
@@ -3017,8 +3133,8 @@ function DocumentViewerContent({
3017
3133
  onOpenTranslation: (id) => setViewingDocumentId(id)
3018
3134
  }
3019
3135
  ),
3020
- activeTab === "xlsx" && isXlsx && (xlsxBlob ? /* @__PURE__ */ jsxRuntime.jsx(viewers.XlsxViewer, { blob: xlsxBlob }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: xlsxError ? "Failed to load spreadsheet" : "Loading spreadsheet..." })),
3021
- activeTab === "slides" && isPresentation && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading slides\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
3136
+ activeTab === "xlsx" && isXlsx && (xlsxBlob ? /* @__PURE__ */ jsxRuntime.jsx(viewers.XlsxViewer, { blob: xlsxBlob }) : /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: xlsxError ? "Failed to load spreadsheet" : "Loading spreadsheet..." })),
3137
+ activeTab === "slides" && isPresentation && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading slides\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
3022
3138
  SlidesTab,
3023
3139
  {
3024
3140
  documentId,
@@ -3027,11 +3143,11 @@ function DocumentViewerContent({
3027
3143
  draftTitle: isDraft ? draftDoc?.title ?? "" : void 0
3028
3144
  }
3029
3145
  ) }),
3030
- activeTab === "docx" && isDocx && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Loading editor\u2026" }), children: [
3146
+ activeTab === "docx" && isDocx && !isComparing && /* @__PURE__ */ jsxRuntime.jsxs(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Loading editor\u2026" }), children: [
3031
3147
  signatureBanner,
3032
- isSigned && !snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsx(chunkLHWOKOMP_cjs.SignedEditNote, {}),
3148
+ isSigned && !snapshotDocumentId && /* @__PURE__ */ jsxRuntime.jsx(chunk46P7IDBX_cjs.SignedEditNote, {}),
3033
3149
  /* @__PURE__ */ jsxRuntime.jsx(
3034
- chunkC2OICDMI_cjs.ConnectedNativeDocxEditor,
3150
+ chunk7557LDAN_cjs.ConnectedNativeDocxEditor,
3035
3151
  {
3036
3152
  documentId: snapshotDocumentId || documentId,
3037
3153
  title: documentTitle,
@@ -3041,7 +3157,7 @@ function DocumentViewerContent({
3041
3157
  `${snapshotDocumentId || documentId}-${snapshotDocumentId ? "snapshot" : "live"}`
3042
3158
  )
3043
3159
  ] }),
3044
- streamingDoc && isStreaming && isArtifact && !liveKind && !isComparing && (activeTab === "html" || activeTab === "edit") && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerMessage, { children: "Opening draft\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
3160
+ streamingDoc && isStreaming && isArtifact && !liveKind && !isComparing && (activeTab === "html" || activeTab === "edit") && /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerMessage, { children: "Opening draft\u2026" }), children: /* @__PURE__ */ jsxRuntime.jsx(
3045
3161
  StreamedWordArtifact,
3046
3162
  {
3047
3163
  documentId: documentId.startsWith("doc-") ? documentId : void 0,
@@ -3051,7 +3167,7 @@ function DocumentViewerContent({
3051
3167
  },
3052
3168
  documentId
3053
3169
  ) }),
3054
- !isCaptureDraft && !isComparing && activeTab === "html" && !(isStreaming && isArtifact && !liveKind) && /* @__PURE__ */ jsxRuntime.jsx(chunkDTMBAFIL_cjs.ViewerPane, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkJQLWKNJO_cjs.ViewerControlBar, { controls: pageNav, children: /* @__PURE__ */ jsxRuntime.jsx(
3170
+ !isCaptureDraft && !isComparing && activeTab === "html" && !(isStreaming && isArtifact && !liveKind) && /* @__PURE__ */ jsxRuntime.jsx(chunkDTMBAFIL_cjs.ViewerPane, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkALK3PUUB_cjs.ViewerControlBar, { controls: pageNav, children: /* @__PURE__ */ jsxRuntime.jsx(
3055
3171
  ParsedTextView,
3056
3172
  {
3057
3173
  documentId: pdfSnapshotId || documentId,
@@ -3067,5 +3183,5 @@ function DocumentViewerContent({
3067
3183
  }
3068
3184
 
3069
3185
  exports.ConnectedDocumentViewer = ConnectedDocumentViewer;
3070
- //# sourceMappingURL=chunk-7VUJGHMY.cjs.map
3071
- //# sourceMappingURL=chunk-7VUJGHMY.cjs.map
3186
+ //# sourceMappingURL=chunk-JD2HX2BR.cjs.map
3187
+ //# sourceMappingURL=chunk-JD2HX2BR.cjs.map