@arbidocs/blocks 0.5.125 → 0.5.127

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 (200) hide show
  1. package/README.md +19 -0
  2. package/dist/{ClippingMediaViewer-ZFEX5A3U.cjs → ClippingMediaViewer-47BAXNLO.cjs} +10 -11
  3. package/dist/ClippingMediaViewer-47BAXNLO.cjs.map +1 -0
  4. package/dist/{ClippingPdfViewer-3LRTEPHV.cjs → ClippingPdfViewer-D5BYHEAH.cjs} +16 -14
  5. package/dist/ClippingPdfViewer-D5BYHEAH.cjs.map +1 -0
  6. package/dist/ConnectedCallDock-XJOYVVAH.cjs +6 -6
  7. package/dist/ConnectedCallRoom-CUDYAPQK.cjs +6 -6
  8. package/dist/{ConnectedNativeDocxComparison-7QQ55JIO.cjs → ConnectedNativeDocxComparison-JUF2TI2P.cjs} +12 -12
  9. package/dist/{ConnectedNativeDocxComparison-7QQ55JIO.cjs.map → ConnectedNativeDocxComparison-JUF2TI2P.cjs.map} +1 -1
  10. package/dist/{ConnectedPresentation-L32JPRFI.cjs → ConnectedPresentation-SI3L77J4.cjs} +35 -36
  11. package/dist/ConnectedPresentation-SI3L77J4.cjs.map +1 -0
  12. package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs} +3 -3
  13. package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs.map → ConnectedProductionSetDialog-LHB4VQWC.cjs.map} +1 -1
  14. package/dist/{ConnectedSlidesTab-P7GGNUTO.cjs → ConnectedSlidesTab-E76OVY34.cjs} +38 -44
  15. package/dist/ConnectedSlidesTab-E76OVY34.cjs.map +1 -0
  16. package/dist/{ConnectedStreamedWordArtifact-7NJ3N52V.cjs → ConnectedStreamedWordArtifact-Q64DRRQD.cjs} +12 -12
  17. package/dist/{ConnectedStreamedWordArtifact-7NJ3N52V.cjs.map → ConnectedStreamedWordArtifact-Q64DRRQD.cjs.map} +1 -1
  18. package/dist/{DocumentReviewCard-BFPOFQXI.cjs → DocumentReviewCard-M53XFLI2.cjs} +16 -16
  19. package/dist/{DocumentReviewCard-BFPOFQXI.cjs.map → DocumentReviewCard-M53XFLI2.cjs.map} +1 -1
  20. package/dist/{FilesViewerDialog-MHUVEZ7M.cjs → FilesViewerDialog-V6FSRQTP.cjs} +33 -34
  21. package/dist/FilesViewerDialog-V6FSRQTP.cjs.map +1 -0
  22. package/dist/{NativeDocxEditor-SIRYPMBN.cjs → NativeDocxEditor-2PTEK6ND.cjs} +6 -6
  23. package/dist/{NativeDocxEditor-SIRYPMBN.cjs.map → NativeDocxEditor-2PTEK6ND.cjs.map} +1 -1
  24. package/dist/{SpotlightStrip-ED22UYTM.cjs → SpotlightStrip-QQ2WUI32.cjs} +28 -29
  25. package/dist/SpotlightStrip-QQ2WUI32.cjs.map +1 -0
  26. package/dist/{WorkspaceTableView-MIFYXV3G.cjs → WorkspaceTableView-3XYAV4BV.cjs} +8 -8
  27. package/dist/{WorkspaceTableView-MIFYXV3G.cjs.map → WorkspaceTableView-3XYAV4BV.cjs.map} +1 -1
  28. package/dist/agents/index.cjs +215 -215
  29. package/dist/ai-IEIR7SC2.cjs +3 -3
  30. package/dist/auth/index.cjs +1 -1
  31. package/dist/calls/index.cjs +2 -2
  32. package/dist/chat/index.cjs +6 -6
  33. package/dist/{chunk-GAMRVB3I.cjs → chunk-23I5EUZA.cjs} +65 -10
  34. package/dist/chunk-23I5EUZA.cjs.map +1 -0
  35. package/dist/{chunk-ZZZITHGK.cjs → chunk-26SFI2BH.cjs} +16 -3
  36. package/dist/chunk-26SFI2BH.cjs.map +1 -0
  37. package/dist/{chunk-OGK377NL.cjs → chunk-2SU37RZA.cjs} +409 -42
  38. package/dist/chunk-2SU37RZA.cjs.map +1 -0
  39. package/dist/{chunk-CQ2RJYE2.cjs → chunk-3IH55CDE.cjs} +3 -3
  40. package/dist/{chunk-CQ2RJYE2.cjs.map → chunk-3IH55CDE.cjs.map} +1 -1
  41. package/dist/{chunk-AS6QZETU.cjs → chunk-5QERK4PK.cjs} +35 -35
  42. package/dist/{chunk-AS6QZETU.cjs.map → chunk-5QERK4PK.cjs.map} +1 -1
  43. package/dist/{chunk-AISYXX4M.cjs → chunk-7NLO7ASW.cjs} +4 -4
  44. package/dist/{chunk-AISYXX4M.cjs.map → chunk-7NLO7ASW.cjs.map} +1 -1
  45. package/dist/{chunk-QIK7E6VF.cjs → chunk-7PN3YENO.cjs} +4 -4
  46. package/dist/{chunk-QIK7E6VF.cjs.map → chunk-7PN3YENO.cjs.map} +1 -1
  47. package/dist/{chunk-JY7UUZQG.cjs → chunk-7Q46YAX4.cjs} +74 -71
  48. package/dist/chunk-7Q46YAX4.cjs.map +1 -0
  49. package/dist/{chunk-J3FFSEKO.cjs → chunk-ADDQKZ5I.cjs} +4 -4
  50. package/dist/{chunk-J3FFSEKO.cjs.map → chunk-ADDQKZ5I.cjs.map} +1 -1
  51. package/dist/{chunk-L6HTZIBD.cjs → chunk-ALK3PUUB.cjs} +3 -3
  52. package/dist/{chunk-L6HTZIBD.cjs.map → chunk-ALK3PUUB.cjs.map} +1 -1
  53. package/dist/{chunk-3ZZZO4F7.cjs → chunk-BY3QA3S5.cjs} +9 -9
  54. package/dist/{chunk-3ZZZO4F7.cjs.map → chunk-BY3QA3S5.cjs.map} +1 -1
  55. package/dist/{chunk-3UP32FM3.cjs → chunk-CQQQIZU4.cjs} +5 -5
  56. package/dist/{chunk-3UP32FM3.cjs.map → chunk-CQQQIZU4.cjs.map} +1 -1
  57. package/dist/{chunk-YOEP3I4V.cjs → chunk-E3L5DB5F.cjs} +5 -5
  58. package/dist/{chunk-YOEP3I4V.cjs.map → chunk-E3L5DB5F.cjs.map} +1 -1
  59. package/dist/{chunk-UA7HOLAZ.cjs → chunk-ESVRVZ53.cjs} +5 -5
  60. package/dist/{chunk-UA7HOLAZ.cjs.map → chunk-ESVRVZ53.cjs.map} +1 -1
  61. package/dist/{chunk-2K6IMIVL.cjs → chunk-GNZAH6UI.cjs} +3 -3
  62. package/dist/{chunk-2K6IMIVL.cjs.map → chunk-GNZAH6UI.cjs.map} +1 -1
  63. package/dist/{chunk-KA3F6TIH.cjs → chunk-IWHP7FAB.cjs} +12 -5
  64. package/dist/chunk-IWHP7FAB.cjs.map +1 -0
  65. package/dist/{chunk-ORNLCBNE.cjs → chunk-JVEDKKNO.cjs} +43 -4
  66. package/dist/chunk-JVEDKKNO.cjs.map +1 -0
  67. package/dist/{chunk-6JMW3IJ2.cjs → chunk-JVLOIIA7.cjs} +103 -100
  68. package/dist/chunk-JVLOIIA7.cjs.map +1 -0
  69. package/dist/{chunk-UUENH4BJ.cjs → chunk-KXIRVKCJ.cjs} +3 -3
  70. package/dist/{chunk-UUENH4BJ.cjs.map → chunk-KXIRVKCJ.cjs.map} +1 -1
  71. package/dist/{chunk-YVO6Z5BS.cjs → chunk-M6WVIGYP.cjs} +10 -10
  72. package/dist/{chunk-YVO6Z5BS.cjs.map → chunk-M6WVIGYP.cjs.map} +1 -1
  73. package/dist/{chunk-PSB64T43.cjs → chunk-MLA2BJ2Y.cjs} +28 -28
  74. package/dist/{chunk-PSB64T43.cjs.map → chunk-MLA2BJ2Y.cjs.map} +1 -1
  75. package/dist/{chunk-B3R62764.cjs → chunk-MMSHIIKG.cjs} +6 -6
  76. package/dist/{chunk-B3R62764.cjs.map → chunk-MMSHIIKG.cjs.map} +1 -1
  77. package/dist/{chunk-ENOPKX7E.cjs → chunk-MXBXZXXQ.cjs} +3 -3
  78. package/dist/{chunk-ENOPKX7E.cjs.map → chunk-MXBXZXXQ.cjs.map} +1 -1
  79. package/dist/chunk-NTDQQLDD.cjs +18 -0
  80. package/dist/{chunk-IRGRMJPP.cjs.map → chunk-NTDQQLDD.cjs.map} +1 -1
  81. package/dist/{chunk-PVJ5ODDB.cjs → chunk-Q6IKXWPG.cjs} +4 -4
  82. package/dist/{chunk-PVJ5ODDB.cjs.map → chunk-Q6IKXWPG.cjs.map} +1 -1
  83. package/dist/{chunk-4LP5MJGQ.cjs → chunk-QG2U2JGX.cjs} +4 -4
  84. package/dist/{chunk-4LP5MJGQ.cjs.map → chunk-QG2U2JGX.cjs.map} +1 -1
  85. package/dist/{chunk-MVXHTAJ4.cjs → chunk-QWVUBTW3.cjs} +9 -9
  86. package/dist/{chunk-MVXHTAJ4.cjs.map → chunk-QWVUBTW3.cjs.map} +1 -1
  87. package/dist/{chunk-OHWHYVKG.cjs → chunk-T73BHNQX.cjs} +3 -3
  88. package/dist/{chunk-OHWHYVKG.cjs.map → chunk-T73BHNQX.cjs.map} +1 -1
  89. package/dist/{chunk-PWBRE7JA.cjs → chunk-VLQCLQAS.cjs} +23 -10
  90. package/dist/chunk-VLQCLQAS.cjs.map +1 -0
  91. package/dist/{chunk-ADPRIBSH.cjs → chunk-X7ALF4MP.cjs} +7 -7
  92. package/dist/{chunk-ADPRIBSH.cjs.map → chunk-X7ALF4MP.cjs.map} +1 -1
  93. package/dist/{chunk-7RJZIPLE.cjs → chunk-YP5EBGLU.cjs} +33 -33
  94. package/dist/{chunk-7RJZIPLE.cjs.map → chunk-YP5EBGLU.cjs.map} +1 -1
  95. package/dist/{chunk-TSFNLY3K.cjs → chunk-ZCU72Q76.cjs} +192 -166
  96. package/dist/chunk-ZCU72Q76.cjs.map +1 -0
  97. package/dist/{chunk-BLIO3B7Z.cjs → chunk-ZYGAXD3N.cjs} +3 -3
  98. package/dist/{chunk-BLIO3B7Z.cjs.map → chunk-ZYGAXD3N.cjs.map} +1 -1
  99. package/dist/connect/docx.cjs +16 -16
  100. package/dist/connect/index.cjs +1095 -1114
  101. package/dist/connect/index.cjs.map +1 -1
  102. package/dist/connect/viewer.cjs +26 -27
  103. package/dist/connection/ai.d.ts +1 -0
  104. package/dist/connection/docx/ConnectedNativeDocxEditor.js +4 -5
  105. package/dist/connection/docx/ConnectedNativeDocxEditor.js.map +2 -2
  106. package/dist/connection/docx/save-native-version.d.ts +3 -0
  107. package/dist/connection/docx/save-native-version.js +19 -0
  108. package/dist/connection/docx/save-native-version.js.map +7 -0
  109. package/dist/connection/presentation/ClippingPdfViewer.js +8 -5
  110. package/dist/connection/presentation/ClippingPdfViewer.js.map +2 -2
  111. package/dist/connection/presentation/ConnectedSlidesTab.js +8 -13
  112. package/dist/connection/presentation/ConnectedSlidesTab.js.map +2 -2
  113. package/dist/connection/presentation/usePresentationController.js +24 -15
  114. package/dist/connection/presentation/usePresentationController.js.map +2 -2
  115. package/dist/connection/presentation/usePresentationFiles.d.ts +2 -1
  116. package/dist/connection/presentation/usePresentationFiles.js +15 -6
  117. package/dist/connection/presentation/usePresentationFiles.js.map +2 -2
  118. package/dist/connection/remote-control/ConnectedRemoteControlConsent.js +6 -3
  119. package/dist/connection/remote-control/ConnectedRemoteControlConsent.js.map +2 -2
  120. package/dist/connection/remote-control/ConnectedRemoteControlIndicator.js +12 -2
  121. package/dist/connection/remote-control/ConnectedRemoteControlIndicator.js.map +2 -2
  122. package/dist/connection/remote-control/ConnectedRemoteControlSwitch.js +1 -1
  123. package/dist/connection/remote-control/ConnectedRemoteControlSwitch.js.map +1 -1
  124. package/dist/connection/remote-control/browser-diagnostics.d.ts +7 -0
  125. package/dist/connection/remote-control/browser-diagnostics.js +109 -0
  126. package/dist/connection/remote-control/browser-diagnostics.js.map +7 -0
  127. package/dist/connection/remote-control/remoteControl.d.ts +9 -1
  128. package/dist/connection/remote-control/remoteControl.js +130 -10
  129. package/dist/connection/remote-control/remoteControl.js.map +2 -2
  130. package/dist/connection/remote-control/screen-sharing.d.ts +11 -0
  131. package/dist/connection/remote-control/screen-sharing.js +78 -0
  132. package/dist/connection/remote-control/screen-sharing.js.map +7 -0
  133. package/dist/connection/report-problem/screen-capture.d.ts +1 -0
  134. package/dist/connection/report-problem/screen-capture.js +2 -1
  135. package/dist/connection/report-problem/screen-capture.js.map +2 -2
  136. package/dist/connection/search/ConnectedSearchPage.d.ts +0 -11
  137. package/dist/connection/search/ConnectedSearchPage.js +3 -0
  138. package/dist/connection/search/ConnectedSearchPage.js.map +2 -2
  139. package/dist/connection/search/SearchResultRows.js +75 -43
  140. package/dist/connection/search/SearchResultRows.js.map +2 -2
  141. package/dist/connection/viewer/CleanViewControl.d.ts +3 -1
  142. package/dist/connection/viewer/CleanViewControl.js +5 -1
  143. package/dist/connection/viewer/CleanViewControl.js.map +2 -2
  144. package/dist/connection/viewer/ConnectedDocumentViewer.js +1 -1
  145. package/dist/connection/viewer/ConnectedDocumentViewer.js.map +2 -2
  146. package/dist/connection/viewer/useCleanView.d.ts +1 -1
  147. package/dist/connection/viewer/useCleanView.js +2 -2
  148. package/dist/connection/viewer/useCleanView.js.map +2 -2
  149. package/dist/connection/viewer/useViewedDocument.d.ts +1 -0
  150. package/dist/document-tools/index.cjs +20 -20
  151. package/dist/docx/NativeDocxEditor.d.ts +2 -1
  152. package/dist/docx/NativeDocxEditor.js +34 -7
  153. package/dist/docx/NativeDocxEditor.js.map +2 -2
  154. package/dist/docx/index.cjs +38 -38
  155. package/dist/docx/useVersionAutosave.d.ts +10 -0
  156. package/dist/docx/useVersionAutosave.js +36 -0
  157. package/dist/docx/useVersionAutosave.js.map +7 -0
  158. package/dist/embed/index.cjs +19 -19
  159. package/dist/facts/index.cjs +64 -64
  160. package/dist/files/index.cjs +223 -223
  161. package/dist/index.cjs +542 -542
  162. package/dist/presentation/ClipCaptureOverlay.js +14 -1
  163. package/dist/presentation/ClipCaptureOverlay.js.map +2 -2
  164. package/dist/presentation/ClipImage.js +7 -4
  165. package/dist/presentation/ClipImage.js.map +2 -2
  166. package/dist/presentation/ClipTray.js +11 -7
  167. package/dist/presentation/ClipTray.js.map +2 -2
  168. package/dist/presentation/SlidesEditor.js +6 -2
  169. package/dist/presentation/SlidesEditor.js.map +2 -2
  170. package/dist/presentation/store.d.ts +2 -0
  171. package/dist/presentation/store.js +15 -0
  172. package/dist/presentation/store.js.map +3 -3
  173. package/dist/settings/index.cjs +146 -146
  174. package/dist/shell/RemoteControlPill.d.ts +2 -1
  175. package/dist/shell/RemoteControlPill.js +10 -3
  176. package/dist/shell/RemoteControlPill.js.map +2 -2
  177. package/dist/shell/index.cjs +21 -21
  178. package/dist/site/index.cjs +6 -6
  179. package/dist/studio/index.cjs +9 -9
  180. package/dist/workflow-canvas/index.cjs +34 -34
  181. package/node_modules/@arbidocs/coedit/package.json +1 -1
  182. package/package.json +5 -5
  183. package/dist/ClippingMediaViewer-ZFEX5A3U.cjs.map +0 -1
  184. package/dist/ClippingPdfViewer-3LRTEPHV.cjs.map +0 -1
  185. package/dist/ConnectedPresentation-L32JPRFI.cjs.map +0 -1
  186. package/dist/ConnectedSlidesTab-P7GGNUTO.cjs.map +0 -1
  187. package/dist/FilesViewerDialog-MHUVEZ7M.cjs.map +0 -1
  188. package/dist/SpotlightStrip-ED22UYTM.cjs.map +0 -1
  189. package/dist/chunk-6JMW3IJ2.cjs.map +0 -1
  190. package/dist/chunk-GAMRVB3I.cjs.map +0 -1
  191. package/dist/chunk-GFUOCGY6.cjs +0 -32
  192. package/dist/chunk-GFUOCGY6.cjs.map +0 -1
  193. package/dist/chunk-IRGRMJPP.cjs +0 -18
  194. package/dist/chunk-JY7UUZQG.cjs.map +0 -1
  195. package/dist/chunk-KA3F6TIH.cjs.map +0 -1
  196. package/dist/chunk-OGK377NL.cjs.map +0 -1
  197. package/dist/chunk-ORNLCBNE.cjs.map +0 -1
  198. package/dist/chunk-PWBRE7JA.cjs.map +0 -1
  199. package/dist/chunk-TSFNLY3K.cjs.map +0 -1
  200. package/dist/chunk-ZZZITHGK.cjs.map +0 -1
@@ -5,7 +5,7 @@ var chunk4ONPEVTP_cjs = require('./chunk-4ONPEVTP.cjs');
5
5
  var chunkV3KLUWQQ_cjs = require('./chunk-V3KLUWQQ.cjs');
6
6
  var chunkP5AQYC4D_cjs = require('./chunk-P5AQYC4D.cjs');
7
7
  var chunkWAV762GP_cjs = require('./chunk-WAV762GP.cjs');
8
- var chunkBLIO3B7Z_cjs = require('./chunk-BLIO3B7Z.cjs');
8
+ var chunkZYGAXD3N_cjs = require('./chunk-ZYGAXD3N.cjs');
9
9
  var chunkJJZOL5MG_cjs = require('./chunk-JJZOL5MG.cjs');
10
10
  var chunk3YEXZX4H_cjs = require('./chunk-3YEXZX4H.cjs');
11
11
  var chunkVZOOGA47_cjs = require('./chunk-VZOOGA47.cjs');
@@ -14,8 +14,8 @@ var chunkJR2YSBD5_cjs = require('./chunk-JR2YSBD5.cjs');
14
14
  var chunk3YZKDCWY_cjs = require('./chunk-3YZKDCWY.cjs');
15
15
  var chunkQGVOT7E4_cjs = require('./chunk-QGVOT7E4.cjs');
16
16
  var chunkIPSHAMO2_cjs = require('./chunk-IPSHAMO2.cjs');
17
- var chunkLJJJ6CYH_cjs = require('./chunk-LJJJ6CYH.cjs');
18
17
  var chunkTKHCIHE2_cjs = require('./chunk-TKHCIHE2.cjs');
18
+ var chunkLJJJ6CYH_cjs = require('./chunk-LJJJ6CYH.cjs');
19
19
  var react$1 = require('react');
20
20
  var react = require('@arbidocs/react');
21
21
  var jsxRuntime = require('react/jsx-runtime');
@@ -197,6 +197,22 @@ function ConnectedWorkflowsTable({
197
197
  }
198
198
  );
199
199
  }
200
+
201
+ // src/connection/docx/save-native-version.ts
202
+ async function saveNativeVersion(request, documentId, state, autosave = false) {
203
+ const send = async (rolling) => (await request(`/${encodeURIComponent(documentId)}/save`, {
204
+ method: "POST",
205
+ headers: { "Content-Type": "application/json" },
206
+ body: JSON.stringify({ state, ...rolling ? { autosave: true } : {} })
207
+ })).json();
208
+ try {
209
+ return await send(autosave);
210
+ } catch (error) {
211
+ if (!autosave || !error || typeof error !== "object" || !("status" in error) || error.status !== 422)
212
+ throw error;
213
+ return send(false);
214
+ }
215
+ }
200
216
  var isTopLevel = (doc) => !doc.parent_ext_id;
201
217
  function ReferencePicker({
202
218
  documents,
@@ -354,7 +370,7 @@ function ConnectedNativeDocxEditor({
354
370
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [
355
371
  openFailed && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "status", className: "text-muted-foreground border-b px-3 py-2 text-xs", children: "Co-editing isn't available for this document right now, so this is a read-only copy of the last saved version." }),
356
372
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
357
- chunkBLIO3B7Z_cjs.NativeDocxEditor,
373
+ chunkZYGAXD3N_cjs.NativeDocxEditor,
358
374
  {
359
375
  ...props,
360
376
  snapshot: props.snapshot || openFailed,
@@ -402,16 +418,13 @@ function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
402
418
  await ensureWorkspaceOpen();
403
419
  return (await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: "POST" })).json();
404
420
  },
405
- save: async (id, state) => (await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {
406
- method: "POST",
407
- headers: { "Content-Type": "application/json" },
408
- body: JSON.stringify({ state })
409
- })).json(),
421
+ save: (id, state, autosave) => saveNativeVersion(arbi.editor.request, id, state, autosave),
410
422
  loadFonts: () => import('./fonts-4PRWZQIU.cjs').then((m) => m.loadDocxFonts(fontBaseUrl)),
411
423
  baseUrl: arbi.getConnectionInfo()?.baseUrl || window.location.origin,
412
424
  author,
413
425
  subscribeTokenChanges: tokenChanges(arbi),
414
426
  onDirtyChange: support.onDirtyChange,
427
+ registerTurnFlush: react.registerDocumentTurnFlush,
415
428
  // The document's row moves to the saved version in place: through the host when it keeps
416
429
  // the lists (its document tools refresh them), else here.
417
430
  onVersionSaved: async (id, version) => {
@@ -486,5 +499,5 @@ exports.useConnectedNativeDocxAdapter = useConnectedNativeDocxAdapter;
486
499
  exports.useConnectedWorkspaceRole = useConnectedWorkspaceRole;
487
500
  exports.useDocxCommentTarget = useDocxCommentTarget;
488
501
  exports.useNativeDocxSupport = useNativeDocxSupport;
489
- //# sourceMappingURL=chunk-PWBRE7JA.cjs.map
490
- //# sourceMappingURL=chunk-PWBRE7JA.cjs.map
502
+ //# sourceMappingURL=chunk-VLQCLQAS.cjs.map
503
+ //# sourceMappingURL=chunk-VLQCLQAS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/connection/docx/support.ts","../src/connection/ConnectedWorkflowsTable.tsx","../src/connection/docx/save-native-version.ts","../src/connection/docx/useConnectedDocxReferences.tsx","../src/connection/docx/useConnectedHouseTemplate.ts","../src/connection/docx/ConnectedNativeDocxEditor.tsx"],"names":["useHost","useConnectedWorkspace","useWorkspaceUsers","fmtDate","useBlocksEnvironment","useOpenWorkflow","useMemo","workflowSteps","useWorkflows","useConnectedConversations","useAgents","useUpdateWorkflow","useDeleteWorkflow","useRunWorkflow","useState","isScheduledWorkflow","useEffect","jsx","WorkflowsTable","workflowSignal","workflowTriggerType","toWorkflowFieldDocument","DocumentPicker","useArbi","useListedDocuments","useRef","buildDeepLinkUrl","parseDeepLinkPath","useSetWorkspaceHouseTemplate","useWorkspaces","supportsHouseTemplates","workspaceHouseTemplateId","useHouseTemplateCandidates","contentPath","isCandidate","useRegisterOpenDocument","jsxs","NativeDocxEditor","useQueryClient","useOptionalDocumentTools","registerDocumentTurnFlush","refreshDocuments","fetchSavedSignature","storeSavedSignature"],"mappings":"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","file":"chunk-VLQCLQAS.cjs","sourcesContent":["/**\n * What a host adds to the connected Word editor that the platform API alone cannot give: the\n * workspace's definitions (facts labelled \"Definitions\"), image generation (an assistant run), the\n * host's leave-page guard, and a comment to open the editor at. It is the host configuration's\n * `docx`; every field is optional, and without one the editor simply offers less (no Defined term,\n * no Generate image).\n */\n\nimport { useHost } from '../../provider/host'\nimport type { DefinitionSource } from '../../tags/definitions'\nimport type { DocxImageGeneration } from '../../docx/layout/GenerateImage'\n\nexport interface NativeDocxSupport {\n /** The workspace's definitions. Present: Insert offers Defined term and `@@` the type-ahead. */\n definitions?: () => Promise<DefinitionSource[]>\n /** The platform's image generation. Present: Insert offers Generate image. */\n imageGeneration?: DocxImageGeneration\n /** The open editor has (or no longer has) unsaved changes. */\n onDirtyChange?: (dirty: boolean) => void\n /** A comment thread to open when its document opens (a notification's link), as a hook. */\n useCommentTarget?: () => { documentId: string; commentId: string } | null\n}\n\nconst NO_SUPPORT: NativeDocxSupport = {}\nconst NO_TARGET = () => null\n\nexport function useNativeDocxSupport(): NativeDocxSupport {\n return useHost().docx ?? NO_SUPPORT\n}\n\n/** The comment thread to open with its document (none without the host's). */\nexport function useDocxCommentTarget(): { documentId: string; commentId: string } | null {\n const useTarget = useNativeDocxSupport().useCommentTarget ?? NO_TARGET\n return useTarget()\n}\n","/**\n * The saved workflows bound to the connection: when each starts, its last run (a link to the thread\n * it created) and next run, who runs it, pause and resume, share, run now, delete (one or many), and\n * the workflow's history. The host opens a workflow (its builder) and its history; threads open\n * through the environment's `openConversation`, failures are told through its `notify`.\n *\n * The host's catalogue (the host configuration's `workflows.catalogue`), when it has one, is listed\n * in its categories above the saved workflows: an entry opens in the builder (`onOpenTemplate`) or\n * runs (the environment's `openWorkflow(id, { view: 'run' })`). A filtered list (`filter`) is about\n * saved workflows only and leaves the catalogue out.\n */\n\nimport { useEffect, useMemo, useState } from 'react'\nimport {\n useAgents,\n useDeleteWorkflow,\n useRunWorkflow,\n useUpdateWorkflow,\n useWorkflows,\n useWorkspaceUsers,\n type WorkflowResponse,\n} from '@arbidocs/react'\nimport { WorkflowsTable, type WorkflowsTableProps } from '../agents/tasks/WorkflowsTable'\nimport type { WorkflowCatalogueRow } from '../agents/tasks/WorkflowCatalogueSections'\nimport {\n isScheduledWorkflow,\n workflowSignal,\n workflowTriggerType,\n} from '../agents/tasks/workflowRows'\nimport { workflowSteps } from '../agents/workflows/run'\nimport { fmtDate } from '../lib/format'\nimport { useBlocksEnvironment } from '../provider/environment'\nimport { useOpenWorkflow } from './workflows/useOpenWorkflow'\nimport { useHost } from '../provider/host'\nimport { useConnectedWorkspace } from './ConnectionProvider'\nimport { useConnectedConversations } from './workspaceData'\n\n/** The viewer's role in the open workspace, and the workspace's members. */\nexport function useConnectedWorkspaceRole() {\n const { workspaceId, live, userId, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: members = [] } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const role = members.find((m) => m.user.external_id === userId)?.role\n return {\n members,\n role,\n /** An owner or a collaborator edits, pauses, resumes and runs what is shared with the workspace. */\n canEditShared: role === 'owner' || role === 'collaborator',\n /** With an item's creator, the only one who deletes it. */\n isWorkspaceOwner: role === 'owner',\n }\n}\n\nexport interface ConnectedWorkflowsTableLabels {\n /** A change (pause, share, delete) that failed without a message. */\n updateFailed: string\n deleteTitle: string\n deleteOne: (name: string) => string\n deleteMany: (count: number) => string\n /** A run that failed: its history has the error report. */\n runFailed: string\n /** A run that created no thread. */\n noThread: string\n /** A document action that started (it has no thread): what is happening. */\n documentAction: (workflow: WorkflowResponse) => string\n untitledTask: string\n /** When a workflow that starts on a step signal starts (the default trigger text). */\n signalTrigger: (signal: string) => string\n}\n\nexport const DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS: ConnectedWorkflowsTableLabels = {\n updateFailed: 'Could not update the workflow',\n deleteTitle: 'Delete workflow',\n deleteOne: (name) => `Delete “${name}”? Threads it already created stay.`,\n deleteMany: (count) => `Delete ${count} workflows? Threads they already created stay.`,\n runFailed: 'The workflow failed. You can send an error report from its history.',\n noThread: 'The workflow did not create a thread.',\n documentAction: (workflow) =>\n workflow.action?.type === 'email_documents'\n ? 'Preparing your document email'\n : 'Reviewing documents',\n untitledTask: 'Untitled thread',\n signalTrigger: (signal) => `When a step signals ${signal}`,\n}\n\ntype TableProps = WorkflowsTableProps<WorkflowResponse>\n\nexport interface ConnectedWorkflowsTableProps extends Omit<\n TableProps,\n | 'workflows'\n | 'isLoading'\n | 'busyId'\n | 'describeTrigger'\n | 'formatDate'\n | 'onToggleActive'\n | 'onToggleShared'\n | 'onDelete'\n | 'onDeleteMany'\n | 'onToggleActiveMany'\n | 'onRun'\n | 'onOpenThread'\n | 'lastRuns'\n | 'agentNames'\n | 'taskNames'\n | 'canEditShared'\n | 'isWorkspaceOwner'\n | 'catalogue'\n | 'categories'\n | 'renderIcon'\n> {\n /**\n * Which saved workflows to list: `scheduled` (those that start on a date or a repeat), or a\n * predicate. Default: all.\n */\n filter?: 'scheduled' | ((workflow: WorkflowResponse) => boolean)\n /**\n * When a workflow starts, in the host's words. Default: the step signal it starts on, else its\n * trigger type.\n */\n describeTrigger?: TableProps['describeTrigger']\n formatDate?: TableProps['formatDate']\n connectedLabels?: Partial<ConnectedWorkflowsTableLabels>\n}\n\nconst messageOf = (error: unknown) => (error instanceof Error ? error.message : '')\n\nexport function ConnectedWorkflowsTable({\n filter,\n describeTrigger,\n formatDate = fmtDate,\n onViewRuns,\n connectedLabels,\n onRunTemplate,\n ...tableProps\n}: ConnectedWorkflowsTableProps) {\n const l = { ...DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, ...connectedLabels }\n const { notify, confirm, openConversation } = useBlocksEnvironment()\n const openWorkflow = useOpenWorkflow()\n const host = useHost().workflows\n // A filtered list (the scheduled workflows) is about saved workflows only.\n const catalogueEntries = filter ? undefined : host?.catalogue\n const catalogue = useMemo(\n () =>\n catalogueEntries?.map(({ workflow, category, note, runnable }): WorkflowCatalogueRow => ({\n id: workflow.id,\n title: workflow.title,\n description: workflow.description,\n icon: workflow.icon,\n category,\n stepCount: workflowSteps(workflow).length,\n note,\n runnable,\n })),\n [catalogueEntries]\n )\n const { canEditShared, isWorkspaceOwner } = useConnectedWorkspaceRole()\n const { data: saved = [], isLoading } = useWorkflows({ live: true })\n const { data: conversations, refetch } = useConnectedConversations({ live: true })\n const { data: agents = [] } = useAgents()\n const update = useUpdateWorkflow()\n const remove = useDeleteWorkflow()\n const run = useRunWorkflow()\n const [busyId, setBusyId] = useState<string | null>(null)\n\n const workflows = useMemo(() => {\n const keep = filter === 'scheduled' ? isScheduledWorkflow : filter\n return keep ? saved.filter(keep) : saved\n }, [saved, filter])\n // A clock or an event fired a workflow: the thread it created is new to the conversation list.\n const firingStamp = saved.map((w) => `${w.external_id}:${w.last_fired_at ?? ''}`).join('|')\n useEffect(() => {\n void refetch?.()\n }, [firingStamp, refetch])\n\n const lastRuns = useMemo(() => {\n const out: NonNullable<TableProps['lastRuns']> = {}\n for (const c of conversations) {\n const id = c.workflow_ext_id\n if (id && (!out[id] || Date.parse(c.created_at) > Date.parse(out[id].at)))\n out[id] = { conversationId: c.external_id, at: c.created_at, threadStatus: c.status }\n }\n return out\n }, [conversations])\n const agentNames = useMemo(\n () => Object.fromEntries(agents.map((a) => [a.external_id, a.given_name || a.email])),\n [agents]\n )\n const taskNames = useMemo(\n () =>\n Object.fromEntries(\n conversations\n .filter((c) => c.status != null)\n .map((c) => [c.external_id, c.title || l.untitledTask])\n ),\n [conversations, l.untitledTask]\n )\n\n const act = async (workflow: WorkflowResponse, action: () => Promise<unknown>) => {\n setBusyId(workflow.external_id)\n try {\n await action()\n } catch (error) {\n notify(messageOf(error) || l.updateFailed, 'error')\n } finally {\n setBusyId(null)\n }\n }\n const setActive = (workflow: WorkflowResponse, active: boolean) =>\n act(workflow, () => update.mutateAsync({ workflowId: workflow.external_id, patch: { active } }))\n const deleteAll = async (items: WorkflowResponse[]) => {\n if (!items.length) return\n const ok = await confirm({\n title: l.deleteTitle,\n message: items.length === 1 ? l.deleteOne(items[0].name) : l.deleteMany(items.length),\n })\n if (!ok) return\n for (const workflow of items)\n await act(workflow, () => remove.mutateAsync(workflow.external_id))\n }\n\n return (\n <WorkflowsTable\n {...tableProps}\n workflows={workflows}\n isLoading={isLoading}\n busyId={busyId}\n describeTrigger={\n describeTrigger ??\n ((w) => {\n const signal = workflowSignal(w)\n return signal ? l.signalTrigger(signal) : workflowTriggerType(w).replaceAll('_', ' ')\n })\n }\n catalogue={catalogue}\n categories={host?.categories}\n renderIcon={host?.renderIcon}\n onRunTemplate={onRunTemplate ?? (openWorkflow && ((id) => openWorkflow(id, { view: 'run' })))}\n formatDate={formatDate}\n agentNames={agentNames}\n taskNames={taskNames}\n lastRuns={lastRuns}\n canEditShared={canEditShared}\n isWorkspaceOwner={isWorkspaceOwner}\n onOpenThread={(conversationId) => openConversation(conversationId)}\n onViewRuns={onViewRuns}\n onToggleActive={(workflow, active) => void setActive(workflow, active)}\n onToggleActiveMany={(items, active) => {\n void (async () => {\n for (const workflow of items) await setActive(workflow, active)\n })()\n }}\n onToggleShared={(workflow, shared) =>\n void act(workflow, () =>\n update.mutateAsync({ workflowId: workflow.external_id, patch: { shared } })\n )\n }\n onDelete={(workflow) => void deleteAll([workflow])}\n onDeleteMany={(items) => void deleteAll(items)}\n onRun={(workflow) =>\n void act(workflow, async () => {\n const result = await run.mutateAsync(workflow.external_id)\n if (result.conversation_ext_id) openConversation(result.conversation_ext_id)\n if (result.error) {\n onViewRuns?.(workflow)\n notify(l.runFailed, 'error')\n return\n }\n if (result.execution_id && !result.conversation_ext_id) {\n // A document action runs without a thread: its history shows how it goes.\n onViewRuns?.(workflow)\n notify(l.documentAction(workflow), 'success')\n return\n }\n if (!result.conversation_ext_id) throw new Error(l.noThread)\n })\n }\n />\n )\n}\n","import type { NativeDocxAdapter } from '../../docx/NativeDocxEditor'\n\n/** Older servers reject the new body field; retain their ordinary version save during rollout. */\nexport async function saveNativeVersion(\n request: NativeDocxAdapter['request'],\n documentId: string,\n state?: string,\n autosave = false\n): ReturnType<NativeDocxAdapter['save']> {\n const send = async (rolling: boolean) =>\n (\n await request(`/${encodeURIComponent(documentId)}/save`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state, ...(rolling ? { autosave: true } : {}) }),\n })\n ).json()\n try {\n return await send(autosave)\n } catch (error) {\n if (\n !autosave ||\n !error ||\n typeof error !== 'object' ||\n !('status' in error) ||\n error.status !== 422\n )\n throw error\n return send(false)\n }\n}\n","/**\n * The Word editor's references to the workspace's other documents: the documents and their\n * passages (the same parsed passages a fact's citations quote), the ARBI address of a passage\n * (`/wrk-…/doc-…/cnk-…`, the deep link that opens a document at a passage, so the link works from\n * Word too), and opening one wherever the host shows documents, highlighted like a citation.\n */\nimport { useMemo, useRef } from 'react'\nimport { useArbi } from '@arbidocs/react'\nimport type { DocxReferencesAdapter } from '../../docx/references/CrossReferences'\nimport { DocumentPicker } from '../../settings/DocumentPicker'\nimport { buildDeepLinkUrl, parseDeepLinkPath } from '../../lib/deep-link'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { toWorkflowFieldDocument } from '../ConnectedWorkflowLauncher'\nimport { useListedDocuments, type ConnectedDocument } from '../workspaceData'\n\ninterface ParsedChunk {\n content?: string | null\n metadata?: { chunk_ext_id?: string | null; page_number?: number | null } | null\n}\n\n/** Top-level documents only: an attachment opens with its parent. */\nconst isTopLevel = (doc: ConnectedDocument) => !doc.parent_ext_id\n\nfunction ReferencePicker({\n documents,\n selectedId,\n onSelect,\n}: {\n documents: ConnectedDocument[]\n selectedId: string | null\n onSelect: (documentId: string) => void\n}) {\n const groups = useMemo(() => {\n const docs = documents\n .filter(isTopLevel)\n .map(toWorkflowFieldDocument)\n .sort((a, b) => a.title.toLowerCase().localeCompare(b.title.toLowerCase()))\n return [{ id: 'all', heading: 'In this workspace', docs }]\n }, [documents])\n const selected = groups[0].docs.find((d) => d.id === selectedId)\n return (\n <DocumentPicker\n groups={groups}\n value={selectedId ?? ''}\n onValueChange={onSelect}\n selected={selected}\n labels={{ placeholder: 'Search documents…' }}\n />\n )\n}\n\nexport function useConnectedDocxReferences(): DocxReferencesAdapter {\n const arbi = useArbi()\n const { workspaceId } = useConnectedWorkspace()\n const { openDocument, runtimeConfig } = useBlocksEnvironment()\n const { data: documents } = useListedDocuments()\n // Read when called (the picker, a link): the list grows while the editor is open.\n const documentsRef = useRef(documents)\n documentsRef.current = documents\n return useMemo<DocxReferencesAdapter>(\n () => ({\n documents: async () =>\n documentsRef.current\n .filter(isTopLevel)\n .map((d) => ({ id: d.external_id, title: toWorkflowFieldDocument(d).title })),\n passages: async (documentId) => {\n const parsed = await arbi.documents.getParsedContent(documentId, 'final')\n return ((parsed.chunks ?? []) as ParsedChunk[]).flatMap((chunk) =>\n chunk.metadata?.chunk_ext_id && chunk.content?.trim()\n ? [\n {\n chunkId: chunk.metadata.chunk_ext_id,\n page: chunk.metadata.page_number ?? null,\n text: chunk.content,\n },\n ]\n : []\n )\n },\n linkFor: ({ documentId, chunkId, page }) => {\n const url = buildDeepLinkUrl(\n { workspaceId: workspaceId ?? undefined, documentId, chunkId },\n runtimeConfig.deploymentDomain\n )\n return page ? `${url}?page=${page}` : url\n },\n targetOf: (href) => {\n let url: URL\n try {\n url = new URL(href, window.location.origin)\n } catch {\n return null\n }\n const { documentId, chunkId } = parseDeepLinkPath(url.pathname)\n if (!documentId || !chunkId) return null\n const page = Number(url.searchParams.get('page')) || null\n return { documentId, chunkId, page }\n },\n open: ({ documentId, chunkId, page }) =>\n openDocument(documentId, { passageId: chunkId, page: page ?? undefined }),\n renderDocumentPicker: (onSelect, selectedId) => (\n <ReferencePicker\n documents={documentsRef.current}\n selectedId={selectedId}\n onSelect={onSelect}\n />\n ),\n }),\n [arbi, workspaceId, openDocument, runtimeConfig.deploymentDomain]\n )\n}\n","/**\n * The house template for the open workspace: its own (a document of the workspace), else the\n * deployment's default, else ARBI's built-in legal template. A workspace owner can make a document\n * the house template once the server supports it.\n */\nimport { useMemo } from 'react'\nimport {\n supportsHouseTemplates,\n useArbi,\n useHouseTemplateCandidates,\n useSetWorkspaceHouseTemplate,\n useWorkspaces,\n workspaceHouseTemplateId,\n} from '@arbidocs/react'\nimport { contentPath } from '../../docx/content-path'\nimport type { HouseTemplate, HouseTemplateHost } from '../../docx/template/HouseTemplate'\nimport { isCandidate } from '../../docx/template/candidates'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useConnectedWorkspaceRole } from '../ConnectedWorkflowsTable'\n\nexport function useConnectedHouseTemplate(): HouseTemplateHost {\n const arbi = useArbi()\n const { mutateAsync: setWorkspaceTemplate } = useSetWorkspaceHouseTemplate()\n const { workspaceId, live, ensureWorkspaceOpen } = useConnectedWorkspace()\n const { data: workspaces } = useWorkspaces({ enabled: live })\n const workspace = workspaces?.find((w) => w.external_id === workspaceId)\n const { isWorkspaceOwner } = useConnectedWorkspaceRole()\n const supported = supportsHouseTemplates(workspace)\n const templateId = workspaceHouseTemplateId(workspace)\n // Only an eligible document (shared, Word, here or in a public workspace) is offered as the template.\n const { data: candidates } = useHouseTemplateCandidates(\n workspaceId,\n supported && isWorkspaceOwner\n )\n return useMemo<HouseTemplateHost>(\n () => ({\n load: async (): Promise<HouseTemplate> => {\n if (templateId) {\n await ensureWorkspaceOpen()\n const response = await arbi.editor.request(contentPath(templateId))\n const [record] = await arbi.documents.get([templateId]).catch(() => [])\n return {\n bytes: new Uint8Array(await response.arrayBuffer()),\n name: record?.file_name ?? 'House template.docx',\n source: 'workspace',\n documentId: templateId,\n }\n }\n if (supported) {\n const deployment = await arbi.houseTemplates.deployment()\n if (deployment) return { ...deployment, source: 'deployment' }\n }\n // The built-in template comes with the Word editor's template code: loaded on demand.\n return (await import('../../docx/template/HouseTemplate')).builtinHouseTemplate()\n },\n setFromDocument:\n supported && isWorkspaceOwner\n ? async (documentId) => {\n await ensureWorkspaceOpen()\n await setWorkspaceTemplate(documentId)\n }\n : undefined,\n isEligible: (documentId) => isCandidate(candidates, documentId),\n }),\n [\n arbi,\n setWorkspaceTemplate,\n supported,\n templateId,\n isWorkspaceOwner,\n candidates,\n ensureWorkspaceOpen,\n ]\n )\n}\n","import { saveNativeVersion } from './save-native-version'\nimport { useMemo, useRef, useState } from 'react'\nimport { useQueryClient } from '@tanstack/react-query'\nimport { refreshDocuments, useArbi, useWorkspaceUsers } from '@arbidocs/react'\nimport {\n fetchSavedSignature,\n storeSavedSignature,\n useOptionalDocumentTools,\n} from '@arbidocs/react/document-tools'\nimport type { NativeDocxAdapter, NativeDocxEditorProps } from '../../docx/NativeDocxEditor'\nimport { NativeDocxEditor } from '../../docx/lazy'\nimport { registerDocumentTurnFlush } from '@arbidocs/react'\nimport { useRegisterOpenDocument } from '@arbidocs/react/shell'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useConnectedWorkspace } from '../ConnectionProvider'\nimport { useDocxCommentTarget, useNativeDocxSupport } from './support'\nimport { useConnectedDocxReferences } from './useConnectedDocxReferences'\nimport { useConnectedHouseTemplate } from './useConnectedHouseTemplate'\n\nexport type ConnectedNativeDocxEditorProps = Omit<NativeDocxEditorProps, 'adapter' | 'compact'> & {\n fontBaseUrl?: string\n}\n\n/**\n * The native Word editor on the signed-in ARBI session, under any host (`defaultHost`'s sign-in\n * layer, or the host's own `arbi` and session state). Until a live session has opened, a failure to\n * open one falls back to the saved copy, read-only, so the document is still readable; later token\n * refreshes are not guarded (switching modes would drop unsaved edits).\n */\nexport function ConnectedNativeDocxEditor({\n fontBaseUrl = '/native-docx/fonts',\n ...props\n}: ConnectedNativeDocxEditorProps) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n const { workspaceId } = useConnectedWorkspace()\n const commentTarget = useDocxCommentTarget()\n const [openFailed, setOpenFailed] = useState(false)\n const hasOpened = useRef(false)\n const guardedAdapter = useMemo<NativeDocxAdapter>(\n () => ({\n ...adapter,\n open: async (documentId) => {\n try {\n const session = await adapter.open(documentId)\n hasOpened.current = true\n return session\n } catch (error) {\n if (!hasOpened.current) setOpenFailed(true)\n throw error\n }\n },\n }),\n [adapter]\n )\n // Drafting mode: the saved Word document being edited is what the chat is about. A history\n // snapshot, a streamed preview, an unsaved draft and an embedded body field are not.\n const live = !props.snapshot && !props.stream && !props.draftContent\n useRegisterOpenDocument({ documentId: live ? props.documentId : null, workspaceId })\n const initialCommentId =\n props.initialCommentId ??\n (commentTarget?.documentId === props.documentId ? commentTarget.commentId : undefined)\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n {openFailed && (\n <p role=\"status\" className=\"text-muted-foreground border-b px-3 py-2 text-xs\">\n Co-editing isn&apos;t available for this document right now, so this is a read-only copy\n of the last saved version.\n </p>\n )}\n <div className=\"min-h-0 flex-1\">\n <NativeDocxEditor\n {...props}\n snapshot={props.snapshot || openFailed}\n initialCommentId={initialCommentId}\n adapter={guardedAdapter}\n />\n </div>\n </div>\n )\n}\n\n/** The access token changed (a refresh): the live room is told the new one. */\nfunction tokenChanges(arbi: ReturnType<typeof useArbi>) {\n return (listener: () => void) => {\n if (!arbi.isLoggedIn) return () => {}\n const session = arbi.getClient().session\n let token = session.getState().accessToken\n return session.subscribe((state) => {\n if (state.accessToken === token) return\n token = state.accessToken\n listener()\n })\n }\n}\n\n/**\n * The native Word adapter on the signed-in session: the editor transport, the people to mention,\n * cross-references, the house template, and the host's extras (its host config's `docx`).\n */\nexport function useConnectedNativeDocxAdapter(fontBaseUrl = '/native-docx/fonts') {\n const arbi = useArbi()\n const { workspaceId, live, user, ensureWorkspaceOpen } = useConnectedWorkspace()\n const queries = useQueryClient()\n const { notify } = useBlocksEnvironment()\n const tools = useOptionalDocumentTools()\n const support = useNativeDocxSupport()\n const references = useConnectedDocxReferences()\n const houseTemplate = useConnectedHouseTemplate()\n const { data: members } = useWorkspaceUsers(workspaceId ?? undefined, {\n enabled: live && !!workspaceId,\n beforeFetch: ensureWorkspaceOpen,\n })\n const onDocumentsChanged = tools?.onDocumentsChanged\n // Tracked changes and comments are authored by the user's first name.\n const author = (live && arbi.user.profile()?.givenName) || user?.name || 'You'\n const adapter = useMemo<NativeDocxAdapter>(\n () => ({\n request: async (path, options) => {\n await ensureWorkspaceOpen()\n return arbi.editor.request(path, options)\n },\n open: async (id) => {\n await ensureWorkspaceOpen()\n return (\n await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: 'POST' })\n ).json()\n },\n save: (id, state, autosave) => saveNativeVersion(arbi.editor.request, id, state, autosave),\n loadFonts: () => import('../../docx/fonts').then((m) => m.loadDocxFonts(fontBaseUrl)),\n baseUrl: arbi.getConnectionInfo()?.baseUrl || window.location.origin,\n author,\n subscribeTokenChanges: tokenChanges(arbi),\n onDirtyChange: support.onDirtyChange,\n registerTurnFlush: registerDocumentTurnFlush,\n // The document's row moves to the saved version in place: through the host when it keeps\n // the lists (its document tools refresh them), else here.\n onVersionSaved: async (id, version) => {\n if (onDocumentsChanged) await onDocumentsChanged([id], 'version')\n if (version || !onDocumentsChanged) {\n const fresh = await refreshDocuments(queries, arbi, [id])\n if (\n version &&\n !fresh.some((doc) => doc.external_id === id && (doc.current_version ?? 0) >= version)\n ) {\n throw new Error(\n 'The version was saved, but its current status could not be confirmed. Please try again.'\n )\n }\n }\n },\n notify,\n mentions: members?.map(({ user: member }) => ({\n id: member.external_id,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n kind: member.external_id.startsWith('agt-') ? 'agent' : 'human',\n })),\n savedSignature: {\n load: () => fetchSavedSignature(arbi.getClient().fetch),\n save: (signature) => storeSavedSignature(arbi.getClient().fetch, signature),\n defaultName: user?.name ?? '',\n },\n signatureSigners: members\n ?.filter(({ user: member }) => member.external_id.startsWith('usr-'))\n .map(({ user: member }) => ({\n email: member.email,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n })),\n requestAgent: async (id, request) => {\n const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment_id: request.commentId,\n instruction: request.instruction,\n request_id: request.requestId,\n recipient_ids: request.recipientIds,\n }),\n })\n const delivery = (await response.json()) as { response_ids: string[] }\n notify('Mention delivered.', 'success')\n return { responseIds: delivery.response_ids || [] }\n },\n getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status,\n definitions: support.definitions,\n references,\n imageGeneration: support.imageGeneration,\n houseTemplate,\n }),\n [\n arbi,\n author,\n members,\n ensureWorkspaceOpen,\n fontBaseUrl,\n queries,\n notify,\n onDocumentsChanged,\n support,\n references,\n houseTemplate,\n user?.name,\n ]\n )\n return adapter\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkORNLCBNE_cjs = require('./chunk-ORNLCBNE.cjs');
4
+ var chunkJVEDKKNO_cjs = require('./chunk-JVEDKKNO.cjs');
5
5
  var react = require('react');
6
6
 
7
7
  // src/presentation/stage-videos.ts
@@ -36,22 +36,22 @@ function usePresenterKeys(view, presenting, selection) {
36
36
  if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) return;
37
37
  const target = event.target;
38
38
  if (target?.closest?.('input, textarea, select, [contenteditable="true"]')) return;
39
- const state = chunkORNLCBNE_cjs.usePresentation.getState();
39
+ const state = chunkJVEDKKNO_cjs.usePresentation.getState();
40
40
  const key = event.key;
41
41
  const onSlide = selected && state.slides[state.current]?.items.some((i) => i.clipId === selected);
42
42
  const box = selected?.startsWith("box-") ? state.slides.flatMap((slide) => slide.boxes).find((entry) => entry.id === selected) : void 0;
43
43
  if (box && key.startsWith("Arrow")) {
44
44
  const step = event.shiftKey ? BIG_NUDGE : NUDGE;
45
45
  const dx = key === "ArrowLeft" ? -step : key === "ArrowRight" ? step : 0;
46
- const dy = (key === "ArrowUp" ? -step : key === "ArrowDown" ? step : 0) * chunkORNLCBNE_cjs.STAGE_ASPECT;
47
- state.updateBox(box.id, (entry) => ({ ...entry, frame: chunkORNLCBNE_cjs.moveBox(entry.frame, dx, dy) }));
46
+ const dy = (key === "ArrowUp" ? -step : key === "ArrowDown" ? step : 0) * chunkJVEDKKNO_cjs.STAGE_ASPECT;
47
+ state.updateBox(box.id, (entry) => ({ ...entry, frame: chunkJVEDKKNO_cjs.moveBox(entry.frame, dx, dy) }));
48
48
  } else if (box && (key === "Delete" || key === "Backspace")) {
49
49
  state.removeBox(box.id);
50
50
  clear?.();
51
51
  } else if (onSlide && key.startsWith("Arrow")) {
52
52
  const step = event.shiftKey ? BIG_NUDGE : NUDGE;
53
53
  const dx = key === "ArrowLeft" ? -step : key === "ArrowRight" ? step : 0;
54
- const dy = (key === "ArrowUp" ? -step : key === "ArrowDown" ? step : 0) * chunkORNLCBNE_cjs.STAGE_ASPECT;
54
+ const dy = (key === "ArrowUp" ? -step : key === "ArrowDown" ? step : 0) * chunkJVEDKKNO_cjs.STAGE_ASPECT;
55
55
  state.nudge(selected, dx, dy);
56
56
  } else if (onSlide && (key === "Delete" || key === "Backspace")) {
57
57
  state.unplace(selected);
@@ -74,5 +74,5 @@ function usePresenterKeys(view, presenting, selection) {
74
74
  exports.STAGE_VIDEO_ATTRIBUTE = STAGE_VIDEO_ATTRIBUTE;
75
75
  exports.toggleFullscreen = toggleFullscreen;
76
76
  exports.usePresenterKeys = usePresenterKeys;
77
- //# sourceMappingURL=chunk-ADPRIBSH.cjs.map
78
- //# sourceMappingURL=chunk-ADPRIBSH.cjs.map
77
+ //# sourceMappingURL=chunk-X7ALF4MP.cjs.map
78
+ //# sourceMappingURL=chunk-X7ALF4MP.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/presentation/stage-videos.ts","../src/presentation/usePresenterKeys.ts"],"names":["useEffect","usePresentation","STAGE_ASPECT","moveBox"],"mappings":";;;;;;AAGO,IAAM,qBAAA,GAAwB;AAG9B,SAAS,kBAAkB,GAAA,EAAwB;AACxD,EAAA,MAAM,SAAS,KAAA,CAAM,IAAA;AAAA,IACnB,GAAA,CAAI,gBAAA,CAAmC,CAAA,MAAA,EAAS,qBAAqB,CAAA,CAAA,CAAG;AAAA,GAC1E;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,MAAA,EAAQ,OAAO,KAAA;AAC3B,EAAA,MAAM,UAAU,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,KAAU,CAAC,MAAM,MAAM,CAAA;AACpD,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,OAAA,QAAe,KAAA,EAAM;AAAA,cACf,KAAA,CAAM,IAAA,EAAK,CAAE,KAAA,CAAM,MAAM,MAAS,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,IAAA;AACT;;;ACHA,IAAM,KAAA,GAAQ,IAAA;AACd,IAAM,SAAA,GAAY,IAAA;AAGX,SAAS,iBAAiB,IAAA,EAAoB;AACnD,EAAA,MAAM,MAAM,IAAA,CAAK,QAAA;AACjB,EAAA,IAAI,GAAA,CAAI,iBAAA,EAAmB,KAAK,GAAA,CAAI,cAAA,EAAe;AAAA,OAC9C,KAAK,GAAA,CAAI,eAAA,CAAgB,iBAAA,IAAoB;AACpD;AAOO,SAAS,gBAAA,CACd,IAAA,EACA,UAAA,EACA,SAAA,EACM;AACN,EAAA,MAAM,QAAA,GAAW,UAAA,GAAa,IAAA,GAAQ,SAAA,EAAW,MAAA,IAAU,IAAA;AAC3D,EAAA,MAAM,QAAQ,SAAA,EAAW,KAAA;AACzB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyB;AAC1C,MAAA,IAAI,MAAM,gBAAA,IAAoB,KAAA,CAAM,WAAW,KAAA,CAAM,OAAA,IAAW,MAAM,MAAA,EAAQ;AAC9E,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAI,MAAA,EAAQ,OAAA,GAAU,mDAAmD,CAAA,EAAG;AAC5E,MAAA,MAAM,KAAA,GAAQC,kCAAgB,QAAA,EAAS;AACvC,MAAA,MAAM,MAAM,KAAA,CAAM,GAAA;AAClB,MAAA,MAAM,OAAA,GACJ,QAAA,IAAY,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,QAAQ,CAAA;AAClF,MAAA,MAAM,MAAM,QAAA,EAAU,UAAA,CAAW,MAAM,CAAA,GACnC,KAAA,CAAM,OAAO,OAAA,CAAQ,CAAC,UAAU,KAAA,CAAM,KAAK,EAAE,IAAA,CAAK,CAAC,UAAU,KAAA,CAAM,EAAA,KAAO,QAAQ,CAAA,GAClF,MAAA;AACJ,MAAA,IAAI,GAAA,IAAO,GAAA,CAAI,UAAA,CAAW,OAAO,CAAA,EAAG;AAClC,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,GAAW,SAAA,GAAY,KAAA;AAC1C,QAAA,MAAM,KAAK,GAAA,KAAQ,WAAA,GAAc,CAAC,IAAA,GAAO,GAAA,KAAQ,eAAe,IAAA,GAAO,CAAA;AACvE,QAAA,MAAM,EAAA,GAAA,CAAM,QAAQ,SAAA,GAAY,CAAC,OAAO,GAAA,KAAQ,WAAA,GAAc,OAAO,CAAA,IAAKC,8BAAA;AAC1E,QAAA,KAAA,CAAM,SAAA,CAAU,GAAA,CAAI,EAAA,EAAI,CAAC,WAAW,EAAE,GAAG,KAAA,EAAO,KAAA,EAAOC,0BAAQ,KAAA,CAAM,KAAA,EAAO,EAAA,EAAI,EAAE,GAAE,CAAE,CAAA;AAAA,MACxF,CAAA,MAAA,IAAW,GAAA,KAAQ,GAAA,KAAQ,QAAA,IAAY,QAAQ,WAAA,CAAA,EAAc;AAC3D,QAAA,KAAA,CAAM,SAAA,CAAU,IAAI,EAAE,CAAA;AACtB,QAAA,KAAA,IAAQ;AAAA,MACV,CAAA,MAAA,IAAW,OAAA,IAAW,GAAA,CAAI,UAAA,CAAW,OAAO,CAAA,EAAG;AAC7C,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,GAAW,SAAA,GAAY,KAAA;AAC1C,QAAA,MAAM,KAAK,GAAA,KAAQ,WAAA,GAAc,CAAC,IAAA,GAAO,GAAA,KAAQ,eAAe,IAAA,GAAO,CAAA;AACvE,QAAA,MAAM,EAAA,GAAA,CAAM,QAAQ,SAAA,GAAY,CAAC,OAAO,GAAA,KAAQ,WAAA,GAAc,OAAO,CAAA,IAAKD,8BAAA;AAC1E,QAAA,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,EAAA,EAAI,EAAE,CAAA;AAAA,MAC9B,CAAA,MAAA,IAAW,OAAA,KAAY,GAAA,KAAQ,QAAA,IAAY,QAAQ,WAAA,CAAA,EAAc;AAC/D,QAAA,KAAA,CAAM,QAAQ,QAAQ,CAAA;AACtB,QAAA,KAAA,IAAQ;AAAA,MACV,CAAA,MAAA,IAAW,QAAA,IAAY,GAAA,KAAQ,QAAA,EAAU,KAAA,IAAQ;AAAA,WAAA,IAExC,CAAC,UAAA,EAAY;AAAA,WAAA,IACb,GAAA,KAAQ,gBAAgB,GAAA,KAAQ,UAAA,QAAkB,IAAA,CAAK,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,WAAA,IACxE,GAAA,KAAQ,eAAe,GAAA,KAAQ,QAAA,QAAgB,IAAA,CAAK,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,WAAA,IACrE,GAAA,KAAQ,GAAA,IAAO,GAAA,KAAQ,GAAA,IAAO,GAAA,KAAQ,KAAK,KAAA,CAAM,QAAA,CAAS,CAAC,KAAA,CAAM,KAAK,CAAA;AAAA,WAAA,IACtE,eAAe,GAAA,KAAQ,GAAA,IAAO,GAAA,KAAQ,GAAA,CAAA,mBAAuB,IAAI,CAAA;AAAA,WAAA,IAEjE,cAAc,GAAA,KAAQ,GAAA,IAAO,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA,EAAG,WAI/D,UAAA,IAAc,GAAA,KAAQ,QAAA,EAAU,KAAA,CAAM,cAAc,KAAK,CAAA;AAAA,WAC7D;AACL,MAAA,KAAA,CAAM,cAAA,EAAe;AAAA,IACvB,CAAA;AACA,IAAA,IAAA,CAAK,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC1C,IAAA,OAAO,MAAM,IAAA,CAAK,mBAAA,CAAoB,SAAA,EAAW,SAAS,CAAA;AAAA,EAC5D,GAAG,CAAC,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,KAAK,CAAC,CAAA;AACxC","file":"chunk-ADPRIBSH.cjs","sourcesContent":["/** The presented stage's videos, which the presenter plays and pauses with Space. */\n\n/** Marks the stage's videos, for the presenter's Space key. */\nexport const STAGE_VIDEO_ATTRIBUTE = 'data-presentation-video'\n\n/** Play the presented stage's videos, or pause them if any is playing. */\nexport function toggleStageVideos(doc: Document): boolean {\n const videos = Array.from(\n doc.querySelectorAll<HTMLVideoElement>(`video[${STAGE_VIDEO_ATTRIBUTE}]`)\n )\n if (!videos.length) return false\n const playing = videos.some((video) => !video.paused)\n for (const video of videos) {\n if (playing) video.pause()\n else void video.play().catch(() => undefined)\n }\n return true\n}\n","/**\n * The keys of the presentation window. A presenter (or a presentation clicker, which sends Page Up /\n * Page Down and \".\" or \"b\"): previous / next slide and blank the stage; while presenting, F for\n * full screen and Escape back to editing. While editing with a clip selected: the arrows nudge it\n * (Shift: further), Delete takes it off the slide and Escape deselects it.\n */\n\nimport { useEffect } from 'react'\nimport { toggleStageVideos } from './stage-videos'\nimport { STAGE_ASPECT } from './model'\nimport { usePresentation } from './store'\nimport { moveBox } from './boxes'\n\n/** A nudge, as a fraction of the stage width (vertical nudges move as far on screen). */\nconst NUDGE = 0.005\nconst BIG_NUDGE = 0.04\n\n/** Full screen on or off for a window's page (from a key or click in that window). */\nexport function toggleFullscreen(view: Window): void {\n const doc = view.document\n if (doc.fullscreenElement) void doc.exitFullscreen()\n else void doc.documentElement.requestFullscreen?.()\n}\n\nexport interface PresenterSelection {\n clipId: string | null\n clear: () => void\n}\n\nexport function usePresenterKeys(\n view: Window | null | undefined,\n presenting: boolean,\n selection?: PresenterSelection\n): void {\n const selected = presenting ? null : (selection?.clipId ?? null)\n const clear = selection?.clear\n useEffect(() => {\n if (!view) return\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) return\n const target = event.target as HTMLElement | null\n if (target?.closest?.('input, textarea, select, [contenteditable=\"true\"]')) return\n const state = usePresentation.getState()\n const key = event.key\n const onSlide =\n selected && state.slides[state.current]?.items.some((i) => i.clipId === selected)\n const box = selected?.startsWith('box-')\n ? state.slides.flatMap((slide) => slide.boxes).find((entry) => entry.id === selected)\n : undefined\n if (box && key.startsWith('Arrow')) {\n const step = event.shiftKey ? BIG_NUDGE : NUDGE\n const dx = key === 'ArrowLeft' ? -step : key === 'ArrowRight' ? step : 0\n const dy = (key === 'ArrowUp' ? -step : key === 'ArrowDown' ? step : 0) * STAGE_ASPECT\n state.updateBox(box.id, (entry) => ({ ...entry, frame: moveBox(entry.frame, dx, dy) }))\n } else if (box && (key === 'Delete' || key === 'Backspace')) {\n state.removeBox(box.id)\n clear?.()\n } else if (onSlide && key.startsWith('Arrow')) {\n const step = event.shiftKey ? BIG_NUDGE : NUDGE\n const dx = key === 'ArrowLeft' ? -step : key === 'ArrowRight' ? step : 0\n const dy = (key === 'ArrowUp' ? -step : key === 'ArrowDown' ? step : 0) * STAGE_ASPECT\n state.nudge(selected, dx, dy)\n } else if (onSlide && (key === 'Delete' || key === 'Backspace')) {\n state.unplace(selected)\n clear?.()\n } else if (selected && key === 'Escape') clear?.()\n // Editing (in the app's own window too): only a selected clip takes keys.\n else if (!presenting) return\n else if (key === 'ArrowRight' || key === 'PageDown') state.goTo(state.current + 1)\n else if (key === 'ArrowLeft' || key === 'PageUp') state.goTo(state.current - 1)\n else if (key === 'b' || key === 'B' || key === '.') state.setBlank(!state.blank)\n else if (presenting && (key === 'f' || key === 'F')) toggleFullscreen(view)\n // Space plays or pauses the slide's videos.\n else if (presenting && key === ' ' && toggleStageVideos(view.document)) {\n // handled\n }\n // Out of full screen the browser takes the first Escape; the next one stops presenting.\n else if (presenting && key === 'Escape') state.setPresenting(false)\n else return\n event.preventDefault()\n }\n view.addEventListener('keydown', onKeyDown)\n return () => view.removeEventListener('keydown', onKeyDown)\n }, [view, presenting, selected, clear])\n}\n"]}
1
+ {"version":3,"sources":["../src/presentation/stage-videos.ts","../src/presentation/usePresenterKeys.ts"],"names":["useEffect","usePresentation","STAGE_ASPECT","moveBox"],"mappings":";;;;;;AAGO,IAAM,qBAAA,GAAwB;AAG9B,SAAS,kBAAkB,GAAA,EAAwB;AACxD,EAAA,MAAM,SAAS,KAAA,CAAM,IAAA;AAAA,IACnB,GAAA,CAAI,gBAAA,CAAmC,CAAA,MAAA,EAAS,qBAAqB,CAAA,CAAA,CAAG;AAAA,GAC1E;AACA,EAAA,IAAI,CAAC,MAAA,CAAO,MAAA,EAAQ,OAAO,KAAA;AAC3B,EAAA,MAAM,UAAU,MAAA,CAAO,IAAA,CAAK,CAAC,KAAA,KAAU,CAAC,MAAM,MAAM,CAAA;AACpD,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,OAAA,QAAe,KAAA,EAAM;AAAA,cACf,KAAA,CAAM,IAAA,EAAK,CAAE,KAAA,CAAM,MAAM,MAAS,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,IAAA;AACT;;;ACHA,IAAM,KAAA,GAAQ,IAAA;AACd,IAAM,SAAA,GAAY,IAAA;AAGX,SAAS,iBAAiB,IAAA,EAAoB;AACnD,EAAA,MAAM,MAAM,IAAA,CAAK,QAAA;AACjB,EAAA,IAAI,GAAA,CAAI,iBAAA,EAAmB,KAAK,GAAA,CAAI,cAAA,EAAe;AAAA,OAC9C,KAAK,GAAA,CAAI,eAAA,CAAgB,iBAAA,IAAoB;AACpD;AAOO,SAAS,gBAAA,CACd,IAAA,EACA,UAAA,EACA,SAAA,EACM;AACN,EAAA,MAAM,QAAA,GAAW,UAAA,GAAa,IAAA,GAAQ,SAAA,EAAW,MAAA,IAAU,IAAA;AAC3D,EAAA,MAAM,QAAQ,SAAA,EAAW,KAAA;AACzB,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAyB;AAC1C,MAAA,IAAI,MAAM,gBAAA,IAAoB,KAAA,CAAM,WAAW,KAAA,CAAM,OAAA,IAAW,MAAM,MAAA,EAAQ;AAC9E,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,IAAI,MAAA,EAAQ,OAAA,GAAU,mDAAmD,CAAA,EAAG;AAC5E,MAAA,MAAM,KAAA,GAAQC,kCAAgB,QAAA,EAAS;AACvC,MAAA,MAAM,MAAM,KAAA,CAAM,GAAA;AAClB,MAAA,MAAM,OAAA,GACJ,QAAA,IAAY,KAAA,CAAM,MAAA,CAAO,KAAA,CAAM,OAAO,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,QAAQ,CAAA;AAClF,MAAA,MAAM,MAAM,QAAA,EAAU,UAAA,CAAW,MAAM,CAAA,GACnC,KAAA,CAAM,OAAO,OAAA,CAAQ,CAAC,UAAU,KAAA,CAAM,KAAK,EAAE,IAAA,CAAK,CAAC,UAAU,KAAA,CAAM,EAAA,KAAO,QAAQ,CAAA,GAClF,MAAA;AACJ,MAAA,IAAI,GAAA,IAAO,GAAA,CAAI,UAAA,CAAW,OAAO,CAAA,EAAG;AAClC,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,GAAW,SAAA,GAAY,KAAA;AAC1C,QAAA,MAAM,KAAK,GAAA,KAAQ,WAAA,GAAc,CAAC,IAAA,GAAO,GAAA,KAAQ,eAAe,IAAA,GAAO,CAAA;AACvE,QAAA,MAAM,EAAA,GAAA,CAAM,QAAQ,SAAA,GAAY,CAAC,OAAO,GAAA,KAAQ,WAAA,GAAc,OAAO,CAAA,IAAKC,8BAAA;AAC1E,QAAA,KAAA,CAAM,SAAA,CAAU,GAAA,CAAI,EAAA,EAAI,CAAC,WAAW,EAAE,GAAG,KAAA,EAAO,KAAA,EAAOC,0BAAQ,KAAA,CAAM,KAAA,EAAO,EAAA,EAAI,EAAE,GAAE,CAAE,CAAA;AAAA,MACxF,CAAA,MAAA,IAAW,GAAA,KAAQ,GAAA,KAAQ,QAAA,IAAY,QAAQ,WAAA,CAAA,EAAc;AAC3D,QAAA,KAAA,CAAM,SAAA,CAAU,IAAI,EAAE,CAAA;AACtB,QAAA,KAAA,IAAQ;AAAA,MACV,CAAA,MAAA,IAAW,OAAA,IAAW,GAAA,CAAI,UAAA,CAAW,OAAO,CAAA,EAAG;AAC7C,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,GAAW,SAAA,GAAY,KAAA;AAC1C,QAAA,MAAM,KAAK,GAAA,KAAQ,WAAA,GAAc,CAAC,IAAA,GAAO,GAAA,KAAQ,eAAe,IAAA,GAAO,CAAA;AACvE,QAAA,MAAM,EAAA,GAAA,CAAM,QAAQ,SAAA,GAAY,CAAC,OAAO,GAAA,KAAQ,WAAA,GAAc,OAAO,CAAA,IAAKD,8BAAA;AAC1E,QAAA,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,EAAA,EAAI,EAAE,CAAA;AAAA,MAC9B,CAAA,MAAA,IAAW,OAAA,KAAY,GAAA,KAAQ,QAAA,IAAY,QAAQ,WAAA,CAAA,EAAc;AAC/D,QAAA,KAAA,CAAM,QAAQ,QAAQ,CAAA;AACtB,QAAA,KAAA,IAAQ;AAAA,MACV,CAAA,MAAA,IAAW,QAAA,IAAY,GAAA,KAAQ,QAAA,EAAU,KAAA,IAAQ;AAAA,WAAA,IAExC,CAAC,UAAA,EAAY;AAAA,WAAA,IACb,GAAA,KAAQ,gBAAgB,GAAA,KAAQ,UAAA,QAAkB,IAAA,CAAK,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,WAAA,IACxE,GAAA,KAAQ,eAAe,GAAA,KAAQ,QAAA,QAAgB,IAAA,CAAK,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,WAAA,IACrE,GAAA,KAAQ,GAAA,IAAO,GAAA,KAAQ,GAAA,IAAO,GAAA,KAAQ,KAAK,KAAA,CAAM,QAAA,CAAS,CAAC,KAAA,CAAM,KAAK,CAAA;AAAA,WAAA,IACtE,eAAe,GAAA,KAAQ,GAAA,IAAO,GAAA,KAAQ,GAAA,CAAA,mBAAuB,IAAI,CAAA;AAAA,WAAA,IAEjE,cAAc,GAAA,KAAQ,GAAA,IAAO,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA,EAAG,WAI/D,UAAA,IAAc,GAAA,KAAQ,QAAA,EAAU,KAAA,CAAM,cAAc,KAAK,CAAA;AAAA,WAC7D;AACL,MAAA,KAAA,CAAM,cAAA,EAAe;AAAA,IACvB,CAAA;AACA,IAAA,IAAA,CAAK,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC1C,IAAA,OAAO,MAAM,IAAA,CAAK,mBAAA,CAAoB,SAAA,EAAW,SAAS,CAAA;AAAA,EAC5D,GAAG,CAAC,IAAA,EAAM,UAAA,EAAY,QAAA,EAAU,KAAK,CAAC,CAAA;AACxC","file":"chunk-X7ALF4MP.cjs","sourcesContent":["/** The presented stage's videos, which the presenter plays and pauses with Space. */\n\n/** Marks the stage's videos, for the presenter's Space key. */\nexport const STAGE_VIDEO_ATTRIBUTE = 'data-presentation-video'\n\n/** Play the presented stage's videos, or pause them if any is playing. */\nexport function toggleStageVideos(doc: Document): boolean {\n const videos = Array.from(\n doc.querySelectorAll<HTMLVideoElement>(`video[${STAGE_VIDEO_ATTRIBUTE}]`)\n )\n if (!videos.length) return false\n const playing = videos.some((video) => !video.paused)\n for (const video of videos) {\n if (playing) video.pause()\n else void video.play().catch(() => undefined)\n }\n return true\n}\n","/**\n * The keys of the presentation window. A presenter (or a presentation clicker, which sends Page Up /\n * Page Down and \".\" or \"b\"): previous / next slide and blank the stage; while presenting, F for\n * full screen and Escape back to editing. While editing with a clip selected: the arrows nudge it\n * (Shift: further), Delete takes it off the slide and Escape deselects it.\n */\n\nimport { useEffect } from 'react'\nimport { toggleStageVideos } from './stage-videos'\nimport { STAGE_ASPECT } from './model'\nimport { usePresentation } from './store'\nimport { moveBox } from './boxes'\n\n/** A nudge, as a fraction of the stage width (vertical nudges move as far on screen). */\nconst NUDGE = 0.005\nconst BIG_NUDGE = 0.04\n\n/** Full screen on or off for a window's page (from a key or click in that window). */\nexport function toggleFullscreen(view: Window): void {\n const doc = view.document\n if (doc.fullscreenElement) void doc.exitFullscreen()\n else void doc.documentElement.requestFullscreen?.()\n}\n\nexport interface PresenterSelection {\n clipId: string | null\n clear: () => void\n}\n\nexport function usePresenterKeys(\n view: Window | null | undefined,\n presenting: boolean,\n selection?: PresenterSelection\n): void {\n const selected = presenting ? null : (selection?.clipId ?? null)\n const clear = selection?.clear\n useEffect(() => {\n if (!view) return\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.defaultPrevented || event.metaKey || event.ctrlKey || event.altKey) return\n const target = event.target as HTMLElement | null\n if (target?.closest?.('input, textarea, select, [contenteditable=\"true\"]')) return\n const state = usePresentation.getState()\n const key = event.key\n const onSlide =\n selected && state.slides[state.current]?.items.some((i) => i.clipId === selected)\n const box = selected?.startsWith('box-')\n ? state.slides.flatMap((slide) => slide.boxes).find((entry) => entry.id === selected)\n : undefined\n if (box && key.startsWith('Arrow')) {\n const step = event.shiftKey ? BIG_NUDGE : NUDGE\n const dx = key === 'ArrowLeft' ? -step : key === 'ArrowRight' ? step : 0\n const dy = (key === 'ArrowUp' ? -step : key === 'ArrowDown' ? step : 0) * STAGE_ASPECT\n state.updateBox(box.id, (entry) => ({ ...entry, frame: moveBox(entry.frame, dx, dy) }))\n } else if (box && (key === 'Delete' || key === 'Backspace')) {\n state.removeBox(box.id)\n clear?.()\n } else if (onSlide && key.startsWith('Arrow')) {\n const step = event.shiftKey ? BIG_NUDGE : NUDGE\n const dx = key === 'ArrowLeft' ? -step : key === 'ArrowRight' ? step : 0\n const dy = (key === 'ArrowUp' ? -step : key === 'ArrowDown' ? step : 0) * STAGE_ASPECT\n state.nudge(selected, dx, dy)\n } else if (onSlide && (key === 'Delete' || key === 'Backspace')) {\n state.unplace(selected)\n clear?.()\n } else if (selected && key === 'Escape') clear?.()\n // Editing (in the app's own window too): only a selected clip takes keys.\n else if (!presenting) return\n else if (key === 'ArrowRight' || key === 'PageDown') state.goTo(state.current + 1)\n else if (key === 'ArrowLeft' || key === 'PageUp') state.goTo(state.current - 1)\n else if (key === 'b' || key === 'B' || key === '.') state.setBlank(!state.blank)\n else if (presenting && (key === 'f' || key === 'F')) toggleFullscreen(view)\n // Space plays or pauses the slide's videos.\n else if (presenting && key === ' ' && toggleStageVideos(view.document)) {\n // handled\n }\n // Out of full screen the browser takes the first Escape; the next one stops presenting.\n else if (presenting && key === 'Escape') state.setPresenting(false)\n else return\n event.preventDefault()\n }\n view.addEventListener('keydown', onKeyDown)\n return () => view.removeEventListener('keydown', onKeyDown)\n }, [view, presenting, selected, clear])\n}\n"]}
@@ -3,30 +3,30 @@
3
3
 
4
4
  var chunkYZ6YOOTF_cjs = require('./chunk-YZ6YOOTF.cjs');
5
5
  var chunkKWJW5TMH_cjs = require('./chunk-KWJW5TMH.cjs');
6
- var chunkPWBRE7JA_cjs = require('./chunk-PWBRE7JA.cjs');
7
- var chunkJH6JTI76_cjs = require('./chunk-JH6JTI76.cjs');
8
- var chunkAISYXX4M_cjs = require('./chunk-AISYXX4M.cjs');
9
- var chunkQIK7E6VF_cjs = require('./chunk-QIK7E6VF.cjs');
6
+ var chunk7NLO7ASW_cjs = require('./chunk-7NLO7ASW.cjs');
7
+ var chunk7PN3YENO_cjs = require('./chunk-7PN3YENO.cjs');
10
8
  var chunkUFT22LAB_cjs = require('./chunk-UFT22LAB.cjs');
11
- var chunkQUMUAJ2P_cjs = require('./chunk-QUMUAJ2P.cjs');
12
- var chunkOHWHYVKG_cjs = require('./chunk-OHWHYVKG.cjs');
9
+ var chunkT73BHNQX_cjs = require('./chunk-T73BHNQX.cjs');
10
+ var chunkVLQCLQAS_cjs = require('./chunk-VLQCLQAS.cjs');
13
11
  var chunkP5AQYC4D_cjs = require('./chunk-P5AQYC4D.cjs');
14
12
  var chunkWAV762GP_cjs = require('./chunk-WAV762GP.cjs');
13
+ var chunkJH6JTI76_cjs = require('./chunk-JH6JTI76.cjs');
15
14
  var chunkZ3LFF3YT_cjs = require('./chunk-Z3LFF3YT.cjs');
16
15
  var chunkNSD37OF5_cjs = require('./chunk-NSD37OF5.cjs');
17
- var chunk3UP32FM3_cjs = require('./chunk-3UP32FM3.cjs');
18
- var chunkJJZOL5MG_cjs = require('./chunk-JJZOL5MG.cjs');
16
+ var chunkCQQQIZU4_cjs = require('./chunk-CQQQIZU4.cjs');
19
17
  var chunkTP5PGWIO_cjs = require('./chunk-TP5PGWIO.cjs');
20
18
  var chunk7JLJH5CW_cjs = require('./chunk-7JLJH5CW.cjs');
19
+ var chunkJJZOL5MG_cjs = require('./chunk-JJZOL5MG.cjs');
21
20
  var chunkWXUU3COI_cjs = require('./chunk-WXUU3COI.cjs');
21
+ var chunkQUMUAJ2P_cjs = require('./chunk-QUMUAJ2P.cjs');
22
22
  var chunkHQDR43JC_cjs = require('./chunk-HQDR43JC.cjs');
23
23
  var chunkJR2YSBD5_cjs = require('./chunk-JR2YSBD5.cjs');
24
24
  var chunk5SKHK3BG_cjs = require('./chunk-5SKHK3BG.cjs');
25
25
  var chunkIDCD5TEZ_cjs = require('./chunk-IDCD5TEZ.cjs');
26
26
  var chunkHSLPFBK2_cjs = require('./chunk-HSLPFBK2.cjs');
27
27
  var chunkQGVOT7E4_cjs = require('./chunk-QGVOT7E4.cjs');
28
- var chunkIPSHAMO2_cjs = require('./chunk-IPSHAMO2.cjs');
29
28
  var chunkQRAQZTJE_cjs = require('./chunk-QRAQZTJE.cjs');
29
+ var chunkIPSHAMO2_cjs = require('./chunk-IPSHAMO2.cjs');
30
30
  var chunkTKHCIHE2_cjs = require('./chunk-TKHCIHE2.cjs');
31
31
  var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
32
32
  var react = require('@arbidocs/react');
@@ -148,7 +148,7 @@ function ConnectedTaskComposer({
148
148
  const label = (t) => t.title?.trim() || "Untitled task";
149
149
  if (isWorkflow) return allTasks.map((t) => ({ id: t.external_id, name: label(t) }));
150
150
  const subject = task ?? { external_id: "__new__" };
151
- return chunk3UP32FM3_cjs.moveTargets(
151
+ return chunkCQQQIZU4_cjs.moveTargets(
152
152
  [...allTasks.filter((t) => t.external_id !== subject.external_id), subject],
153
153
  subject
154
154
  ).map((t) => ({ id: t.external_id, name: label(t) }));
@@ -286,7 +286,7 @@ function ConnectedTaskComposer({
286
286
  }
287
287
  };
288
288
  return /* @__PURE__ */ jsxRuntime.jsx(
289
- chunk3UP32FM3_cjs.TaskComposer,
289
+ chunkCQQQIZU4_cjs.TaskComposer,
290
290
  {
291
291
  open,
292
292
  onOpenChange,
@@ -340,7 +340,7 @@ function ConnectedTaskComposer({
340
340
  },
341
341
  onSubmit: submit,
342
342
  goal: (values) => values.workflowId === chunk7JLJH5CW_cjs.CUSTOM_TASK_ID ? /* @__PURE__ */ jsxRuntime.jsx(
343
- chunk3UP32FM3_cjs.TaskPlan,
343
+ chunkCQQQIZU4_cjs.TaskPlan,
344
344
  {
345
345
  plan,
346
346
  onChange: setPlan,
@@ -386,7 +386,7 @@ function ConnectedWorkflowHistory({
386
386
  const { openConversation } = chunkTKHCIHE2_cjs.useBlocksEnvironment();
387
387
  const { data: runs = [], isLoading } = react.useWorkflowRuns(workflow?.external_id);
388
388
  return /* @__PURE__ */ jsxRuntime.jsx(
389
- chunk3UP32FM3_cjs.TaskRunsDialog,
389
+ chunkCQQQIZU4_cjs.TaskRunsDialog,
390
390
  {
391
391
  inline,
392
392
  hideHeader,
@@ -421,7 +421,7 @@ function ConnectedTaskActivityDialog({
421
421
  const activity = react.useConversationActivity(conversationId, { live });
422
422
  const { data: agents = [] } = react.useAgents();
423
423
  const { userId } = chunkJR2YSBD5_cjs.useConnectedWorkspace();
424
- const { members } = chunkPWBRE7JA_cjs.useConnectedWorkspaceRole();
424
+ const { members } = chunkVLQCLQAS_cjs.useConnectedWorkspaceRole();
425
425
  const renderPerson = react$1.useCallback(
426
426
  (id) => {
427
427
  const isMe = !!id && id === userId;
@@ -437,7 +437,7 @@ function ConnectedTaskActivityDialog({
437
437
  [agents]
438
438
  );
439
439
  return /* @__PURE__ */ jsxRuntime.jsx(
440
- chunk3UP32FM3_cjs.TaskActivityDialog,
440
+ chunkCQQQIZU4_cjs.TaskActivityDialog,
441
441
  {
442
442
  open: true,
443
443
  onOpenChange: (open) => !open && onClose(),
@@ -474,7 +474,7 @@ function useRenderTaskPerson() {
474
474
  return react$1.useCallback(
475
475
  (person) => {
476
476
  const user = person.id ? byId.get(person.id) : void 0;
477
- return user ? /* @__PURE__ */ jsxRuntime.jsx(chunkQIK7E6VF_cjs.DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJJZOL5MG_cjs.PersonPill, { person });
477
+ return user ? /* @__PURE__ */ jsxRuntime.jsx(chunk7PN3YENO_cjs.DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkJJZOL5MG_cjs.PersonPill, { person });
478
478
  },
479
479
  [byId]
480
480
  );
@@ -487,7 +487,7 @@ function ConnectedThreadTaskBar({
487
487
  renderIcon
488
488
  }) {
489
489
  const { conversations } = react.useConversationItems();
490
- const { activity, items, related, signals, startedBy } = chunkAISYXX4M_cjs.useConnectedThreadActivity(conversationId);
490
+ const { activity, items, related, signals, startedBy } = chunk7NLO7ASW_cjs.useConnectedThreadActivity(conversationId);
491
491
  const canEditShared = react.useCanEditShared();
492
492
  const update = react.useUpdateConversation();
493
493
  const actOnStep = react.useActOnStep();
@@ -535,7 +535,7 @@ function ConnectedThreadTaskBar({
535
535
  ).finally(() => setBusy(false));
536
536
  };
537
537
  const strip = /* @__PURE__ */ jsxRuntime.jsx(
538
- chunk3UP32FM3_cjs.WorkflowThreadStrip,
538
+ chunkCQQQIZU4_cjs.WorkflowThreadStrip,
539
539
  {
540
540
  renderIcon,
541
541
  ...variant === "steps" ? { maxSpan: 3, current: currentStepId, onSelectStep } : {},
@@ -564,7 +564,7 @@ function ConnectedThreadTaskBar({
564
564
  renderStepAction: (step, phase) => (
565
565
  // A signer or a draft's person acts on their step even on a thread they cannot edit.
566
566
  canEdit || phase === "waiting" || phase === "done" ? /* @__PURE__ */ jsxRuntime.jsx(
567
- chunk3UP32FM3_cjs.WorkflowStepAction,
567
+ chunkCQQQIZU4_cjs.WorkflowStepAction,
568
568
  {
569
569
  step,
570
570
  phase,
@@ -602,7 +602,7 @@ function ConnectedThreadTaskBar({
602
602
  // A workflow run: its named steps, with what happened in the thread under each.
603
603
  strip
604
604
  ) : items.length || startedBy ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
605
- startedBy && /* @__PURE__ */ jsxRuntime.jsx(chunk3UP32FM3_cjs.WorkflowThreadStartedBy, { origin: startedBy }),
605
+ startedBy && /* @__PURE__ */ jsxRuntime.jsx(chunkCQQQIZU4_cjs.WorkflowThreadStartedBy, { origin: startedBy }),
606
606
  /* @__PURE__ */ jsxRuntime.jsx(chunkTP5PGWIO_cjs.TaskFlow, { items: items.filter((item) => !item.step) })
607
607
  ] }) : (
608
608
  // Ordinary chats record no activity events, so an empty ribbon says nothing rather than
@@ -688,7 +688,7 @@ function ConnectedThreadTaskBar({
688
688
  ] }),
689
689
  error && /* @__PURE__ */ jsxRuntime.jsx("span", { role: "alert", className: "text-xs text-destructive", children: error }),
690
690
  /* @__PURE__ */ jsxRuntime.jsx(
691
- chunkOHWHYVKG_cjs.RenameDialog,
691
+ chunkT73BHNQX_cjs.RenameDialog,
692
692
  {
693
693
  open: renameOpen,
694
694
  onClose: () => setRenameOpen(false),
@@ -721,7 +721,7 @@ ${labels.map((l) => `${l.key}=${l.name}`).join("\n")}`;
721
721
  if (known) return known;
722
722
  const setUp = (async () => {
723
723
  const existing = await arbi.tags.list({ workspaceId });
724
- const { ids, missing } = chunk3UP32FM3_cjs.matchRequiredLabels(labels, existing);
724
+ const { ids, missing } = chunkCQQQIZU4_cjs.matchRequiredLabels(labels, existing);
725
725
  for (const label of missing) {
726
726
  const tag = await createTag({
727
727
  name: label.name,
@@ -973,7 +973,7 @@ function useWorkflowRunTarget({
973
973
  }) {
974
974
  const { workspaceId: open } = chunkJR2YSBD5_cjs.useConnectedWorkspace();
975
975
  const session = react.useArbiSessionStore();
976
- const selectWorkspace = chunkAISYXX4M_cjs.useSelectWorkspace();
976
+ const selectWorkspace = chunk7NLO7ASW_cjs.useSelectWorkspace();
977
977
  const createProject = react.useCreateProject();
978
978
  const { mutateAsync: updateProject } = react.useUpdateProjectFields();
979
979
  const { mutateAsync: updateWorkspace } = react.useUpdateWorkspace();
@@ -1475,7 +1475,7 @@ function useWorkflowThread(workflow, options = {}) {
1475
1475
  const createThread = react$1.useCallback(
1476
1476
  async (values, done) => {
1477
1477
  const prepared = await options.beforeStart?.();
1478
- const planned = prepared?.labelIds ? chunk3UP32FM3_cjs.withLabelIds(workflow, prepared.labelIds) : workflow;
1478
+ const planned = prepared?.labelIds ? chunkCQQQIZU4_cjs.withLabelIds(workflow, prepared.labelIds) : workflow;
1479
1479
  const created = await createWork.mutateAsync({
1480
1480
  title: chunkQGVOT7E4_cjs.runThreadTitle(workflow, values).slice(0, 60),
1481
1481
  description: workflow.description || null,
@@ -1576,7 +1576,7 @@ function useWorkflowThread(workflow, options = {}) {
1576
1576
  const anyRunning = Object.values(states).some((s) => s.status === "running");
1577
1577
  const needsStart = !threadId || idle && !anyRunning;
1578
1578
  const runError = idle ? conversation?.last_error ?? null : null;
1579
- const view = chunk3UP32FM3_cjs.useWorkflowView({
1579
+ const view = chunkCQQQIZU4_cjs.useWorkflowView({
1580
1580
  steps,
1581
1581
  states,
1582
1582
  inputs,
@@ -1712,7 +1712,7 @@ function WorkflowWordDialog({
1712
1712
  title: title ?? labels.wordTitle,
1713
1713
  size: "xl",
1714
1714
  testId: "workflow-word-dialog",
1715
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkPWBRE7JA_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
1715
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkVLQCLQAS_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
1716
1716
  }
1717
1717
  );
1718
1718
  }
@@ -1868,7 +1868,7 @@ function WorkflowRunBody({
1868
1868
  const session = react.useArbiSessionStore();
1869
1869
  const openRef = react$1.useRef(workspaceId);
1870
1870
  openRef.current = workspaceId;
1871
- const required = chunk3UP32FM3_cjs.requiredLabelsOf(given);
1871
+ const required = chunkCQQQIZU4_cjs.requiredLabelsOf(given);
1872
1872
  const ownEnsureLabels = useEnsureRequiredLabels();
1873
1873
  const ensureLabels = page?.ensureLabels ?? ownEnsureLabels;
1874
1874
  const [startedLabelIds, setStartedLabelIds] = react$1.useState({});
@@ -1883,7 +1883,7 @@ function WorkflowRunBody({
1883
1883
  const fromStep = pageTarget ? projectStepOf(projectFrom) : void 0;
1884
1884
  const projectStep = fromStep?.step;
1885
1885
  const workflow = react$1.useMemo(
1886
- () => withCommitStep(chunk3UP32FM3_cjs.withLabelIds(given, labelIds), projectStep),
1886
+ () => withCommitStep(chunkCQQQIZU4_cjs.withLabelIds(given, labelIds), projectStep),
1887
1887
  [given, labelIds, projectStep]
1888
1888
  );
1889
1889
  const hostBeforeStart = options?.beforeStart;
@@ -2076,7 +2076,7 @@ function WorkflowRunBody({
2076
2076
  ) : null;
2077
2077
  };
2078
2078
  const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
2079
- chunk3UP32FM3_cjs.WorkflowRunner,
2079
+ chunkCQQQIZU4_cjs.WorkflowRunner,
2080
2080
  {
2081
2081
  people,
2082
2082
  ...runnerProps,
@@ -2137,7 +2137,7 @@ function WorkflowRunBody({
2137
2137
  pageBar,
2138
2138
  inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2139
2139
  !page && /* @__PURE__ */ jsxRuntime.jsx(
2140
- chunk3UP32FM3_cjs.WorkflowStepBar,
2140
+ chunkCQQQIZU4_cjs.WorkflowStepBar,
2141
2141
  {
2142
2142
  run: view,
2143
2143
  levels: chunkQGVOT7E4_cjs.stepLevels(view.steps),
@@ -2377,7 +2377,7 @@ function ConnectedWorkflowRunPage({
2377
2377
  workspaceId,
2378
2378
  onProjectCreated
2379
2379
  });
2380
- const required = chunk3UP32FM3_cjs.requiredLabelsOf(workflow);
2380
+ const required = chunkCQQQIZU4_cjs.requiredLabelsOf(workflow);
2381
2381
  const ensure = useEnsureRequiredLabels();
2382
2382
  const labels = useRequiredLabels(required, target.target, ensure, target.stage === "ready");
2383
2383
  const fromStep = !!projectStepOf(projectFrom);
@@ -2502,5 +2502,5 @@ exports.useRequiredLabels = useRequiredLabels;
2502
2502
  exports.useTaskPeople = useTaskPeople;
2503
2503
  exports.useWorkflowsPageState = useWorkflowsPageState;
2504
2504
  exports.workflowRunView = workflowRunView;
2505
- //# sourceMappingURL=chunk-7RJZIPLE.cjs.map
2506
- //# sourceMappingURL=chunk-7RJZIPLE.cjs.map
2505
+ //# sourceMappingURL=chunk-YP5EBGLU.cjs.map
2506
+ //# sourceMappingURL=chunk-YP5EBGLU.cjs.map