@arbidocs/blocks 0.4.159 → 0.4.161

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 (334) hide show
  1. package/README.md +48 -9
  2. package/dist/{ConnectedNativeDocxComparison-R6RU5TZE.cjs → ConnectedNativeDocxComparison-GLHOGUP6.cjs} +12 -11
  3. package/dist/{ConnectedNativeDocxComparison-R6RU5TZE.cjs.map → ConnectedNativeDocxComparison-GLHOGUP6.cjs.map} +1 -1
  4. package/dist/{ConnectedNativeDocxComparison-XMZ5KLD4.js → ConnectedNativeDocxComparison-LKIMKOTA.js} +11 -10
  5. package/dist/{ConnectedStreamedWordArtifact-IXRJ7MUE.js.map → ConnectedNativeDocxComparison-LKIMKOTA.js.map} +1 -1
  6. package/dist/{ConnectedNativeDocxEditor-NGUK2AX6.js → ConnectedNativeDocxEditor-6LNYWZ3P.js} +10 -9
  7. package/dist/{ConnectedNativeDocxEditor-NGUK2AX6.js.map → ConnectedNativeDocxEditor-6LNYWZ3P.js.map} +1 -1
  8. package/dist/{ConnectedNativeDocxEditor-LBATSM3M.cjs → ConnectedNativeDocxEditor-M3UGWL6K.cjs} +12 -11
  9. package/dist/{ConnectedNativeDocxEditor-LBATSM3M.cjs.map → ConnectedNativeDocxEditor-M3UGWL6K.cjs.map} +1 -1
  10. package/dist/{ConnectedStreamedWordArtifact-IXRJ7MUE.js → ConnectedStreamedWordArtifact-432HT7DK.js} +11 -10
  11. package/dist/{ConnectedNativeDocxComparison-XMZ5KLD4.js.map → ConnectedStreamedWordArtifact-432HT7DK.js.map} +1 -1
  12. package/dist/{ConnectedStreamedWordArtifact-CWFR6A37.cjs → ConnectedStreamedWordArtifact-COEXL5IT.cjs} +12 -11
  13. package/dist/ConnectedStreamedWordArtifact-COEXL5IT.cjs.map +1 -0
  14. package/dist/{FactTextEditor-YESAU2IJ.js → FactTextEditor-ABKKJOCY.js} +2 -2
  15. package/dist/FactTextEditor-ABKKJOCY.js.map +1 -0
  16. package/dist/{FactTextEditor-YUPBCTXK.cjs → FactTextEditor-GYN5RHJT.cjs} +2 -2
  17. package/dist/FactTextEditor-GYN5RHJT.cjs.map +1 -0
  18. package/dist/{WorkspaceTableView-EYLEUZZT.cjs → WorkspaceTableView-AQTF5F6T.cjs} +6 -5
  19. package/dist/WorkspaceTableView-AQTF5F6T.cjs.map +1 -0
  20. package/dist/{WorkspaceTableView-DWUE4VQF.js → WorkspaceTableView-PTB5BPVA.js} +4 -3
  21. package/dist/WorkspaceTableView-PTB5BPVA.js.map +1 -0
  22. package/dist/agents/index.cjs +263 -263
  23. package/dist/agents/index.js +6 -6
  24. package/dist/agents/skills/skillLibrary.d.ts +1 -1
  25. package/dist/{chunk-FPHTSNOE.js → chunk-2AKIMCDD.js} +3 -3
  26. package/dist/{chunk-FPHTSNOE.js.map → chunk-2AKIMCDD.js.map} +1 -1
  27. package/dist/{chunk-YNMO3DSR.js → chunk-2AMYT2HQ.js} +3 -3
  28. package/dist/{chunk-YNMO3DSR.js.map → chunk-2AMYT2HQ.js.map} +1 -1
  29. package/dist/{chunk-MSFQDELO.cjs → chunk-3CUORKDL.cjs} +4 -4
  30. package/dist/{chunk-MSFQDELO.cjs.map → chunk-3CUORKDL.cjs.map} +1 -1
  31. package/dist/{chunk-MNG7N6M2.js → chunk-3PQIWOTZ.js} +122 -57
  32. package/dist/chunk-3PQIWOTZ.js.map +1 -0
  33. package/dist/chunk-5C7DRQQE.cjs +1891 -0
  34. package/dist/chunk-5C7DRQQE.cjs.map +1 -0
  35. package/dist/{chunk-F57LNUSZ.js → chunk-5NWY3FXQ.js} +24 -57
  36. package/dist/chunk-5NWY3FXQ.js.map +1 -0
  37. package/dist/{chunk-ISHFVKVU.js → chunk-5WLORPGX.js} +4 -4
  38. package/dist/{chunk-ISHFVKVU.js.map → chunk-5WLORPGX.js.map} +1 -1
  39. package/dist/{chunk-FAXXN7KI.cjs → chunk-5Y6V7F6W.cjs} +53 -4
  40. package/dist/chunk-5Y6V7F6W.cjs.map +1 -0
  41. package/dist/{chunk-6QAAIDQQ.cjs → chunk-6UTIAHQG.cjs} +60 -60
  42. package/dist/{chunk-6QAAIDQQ.cjs.map → chunk-6UTIAHQG.cjs.map} +1 -1
  43. package/dist/{chunk-KCSIX7CY.js → chunk-6XIXNH26.js} +3 -3
  44. package/dist/{chunk-KCSIX7CY.js.map → chunk-6XIXNH26.js.map} +1 -1
  45. package/dist/{chunk-YBJ4QGNH.cjs → chunk-ANLTECZ6.cjs} +8 -8
  46. package/dist/{chunk-YBJ4QGNH.cjs.map → chunk-ANLTECZ6.cjs.map} +1 -1
  47. package/dist/{chunk-Q2XGM372.cjs → chunk-AR6A2PMV.cjs} +4 -4
  48. package/dist/{chunk-Q2XGM372.cjs.map → chunk-AR6A2PMV.cjs.map} +1 -1
  49. package/dist/{chunk-KBO75NLM.cjs → chunk-AYJZRBHG.cjs} +7 -7
  50. package/dist/{chunk-KBO75NLM.cjs.map → chunk-AYJZRBHG.cjs.map} +1 -1
  51. package/dist/{chunk-FM3IRQJW.cjs → chunk-AYKE6USO.cjs} +12 -12
  52. package/dist/chunk-AYKE6USO.cjs.map +1 -0
  53. package/dist/chunk-BGJZVJJM.cjs +63 -0
  54. package/dist/chunk-BGJZVJJM.cjs.map +1 -0
  55. package/dist/{chunk-ECW2R2KF.cjs → chunk-BPL5RLNN.cjs} +27 -27
  56. package/dist/{chunk-ECW2R2KF.cjs.map → chunk-BPL5RLNN.cjs.map} +1 -1
  57. package/dist/{chunk-CNHUJRQ4.cjs → chunk-EFEFLBRM.cjs} +21 -55
  58. package/dist/chunk-EFEFLBRM.cjs.map +1 -0
  59. package/dist/{chunk-ETZ5A3GU.js → chunk-EVO2UNX3.js} +3 -3
  60. package/dist/chunk-EVO2UNX3.js.map +1 -0
  61. package/dist/{chunk-P6RIBIVN.js → chunk-FMJGVAWX.js} +8 -9
  62. package/dist/chunk-FMJGVAWX.js.map +1 -0
  63. package/dist/chunk-H5542IOD.cjs +108 -0
  64. package/dist/chunk-H5542IOD.cjs.map +1 -0
  65. package/dist/{chunk-VF5EUAIV.js → chunk-H7PHANI4.js} +3 -3
  66. package/dist/chunk-H7PHANI4.js.map +1 -0
  67. package/dist/chunk-HQJL7FSY.js +58 -0
  68. package/dist/chunk-HQJL7FSY.js.map +1 -0
  69. package/dist/{chunk-OFV3PRF2.cjs → chunk-HRDVQERS.cjs} +7 -7
  70. package/dist/{chunk-OFV3PRF2.cjs.map → chunk-HRDVQERS.cjs.map} +1 -1
  71. package/dist/{chunk-3VULDTNL.cjs → chunk-HUNX4CQG.cjs} +4 -4
  72. package/dist/chunk-HUNX4CQG.cjs.map +1 -0
  73. package/dist/{chunk-2BHDRVVL.cjs → chunk-I6I34FDU.cjs} +38 -37
  74. package/dist/chunk-I6I34FDU.cjs.map +1 -0
  75. package/dist/chunk-IWVOZREF.js +12 -0
  76. package/dist/chunk-IWVOZREF.js.map +1 -0
  77. package/dist/chunk-J7YHBMBB.js +1834 -0
  78. package/dist/chunk-J7YHBMBB.js.map +1 -0
  79. package/dist/{chunk-SDOEHEJP.js → chunk-JMQLTMJ7.js} +53 -5
  80. package/dist/chunk-JMQLTMJ7.js.map +1 -0
  81. package/dist/{chunk-TF7HN5EU.js → chunk-JNE2XEXD.js} +12 -12
  82. package/dist/chunk-JNE2XEXD.js.map +1 -0
  83. package/dist/{chunk-QKR5LWDO.js → chunk-K7CZFNJ2.js} +7 -7
  84. package/dist/{chunk-QKR5LWDO.js.map → chunk-K7CZFNJ2.js.map} +1 -1
  85. package/dist/{chunk-4RPBUMHB.cjs → chunk-KMZO5W6D.cjs} +4 -4
  86. package/dist/chunk-KMZO5W6D.cjs.map +1 -0
  87. package/dist/{chunk-FTZ45WHY.js → chunk-KNCJSPXV.js} +5020 -4014
  88. package/dist/chunk-KNCJSPXV.js.map +1 -0
  89. package/dist/{chunk-3OCNUKGX.js → chunk-KQWC4YBX.js} +3 -3
  90. package/dist/{chunk-3OCNUKGX.js.map → chunk-KQWC4YBX.js.map} +1 -1
  91. package/dist/{chunk-TC3RQNEX.cjs → chunk-L4KWTDFE.cjs} +5 -5
  92. package/dist/chunk-L4KWTDFE.cjs.map +1 -0
  93. package/dist/{chunk-VTTZZ4FN.js → chunk-LH3JAZ33.js} +5 -5
  94. package/dist/chunk-LH3JAZ33.js.map +1 -0
  95. package/dist/{chunk-P2YM67Y5.cjs → chunk-LQYPOWKN.cjs} +14 -21
  96. package/dist/chunk-LQYPOWKN.cjs.map +1 -0
  97. package/dist/{chunk-RATEAOKT.js → chunk-NOXGEQQR.js} +7 -13
  98. package/dist/chunk-NOXGEQQR.js.map +1 -0
  99. package/dist/{chunk-NPLGB4LI.cjs → chunk-NUAC5GTQ.cjs} +5115 -4077
  100. package/dist/chunk-NUAC5GTQ.cjs.map +1 -0
  101. package/dist/chunk-NYECCTB3.js +101 -0
  102. package/dist/chunk-NYECCTB3.js.map +1 -0
  103. package/dist/{chunk-GC2FSPSQ.cjs → chunk-O5E3NKPI.cjs} +128 -58
  104. package/dist/chunk-O5E3NKPI.cjs.map +1 -0
  105. package/dist/{chunk-SZOFGU7W.js → chunk-O5XREO7H.js} +3 -3
  106. package/dist/{chunk-SZOFGU7W.js.map → chunk-O5XREO7H.js.map} +1 -1
  107. package/dist/{chunk-OOU4QLRK.cjs → chunk-OHCYJFV2.cjs} +9 -9
  108. package/dist/{chunk-OOU4QLRK.cjs.map → chunk-OHCYJFV2.cjs.map} +1 -1
  109. package/dist/{chunk-DEPF5LQI.js → chunk-OKRYNQPH.js} +3 -3
  110. package/dist/chunk-OKRYNQPH.js.map +1 -0
  111. package/dist/{chunk-KFMRBZQK.js → chunk-PCL7IEZO.js} +21 -20
  112. package/dist/chunk-PCL7IEZO.js.map +1 -0
  113. package/dist/chunk-RFB7B6XG.cjs +169 -0
  114. package/dist/chunk-RFB7B6XG.cjs.map +1 -0
  115. package/dist/{chunk-SZSJGZSO.js → chunk-SQQU3WRB.js} +714 -5
  116. package/dist/chunk-SQQU3WRB.js.map +1 -0
  117. package/dist/{chunk-OALEDG67.cjs → chunk-TNESYDBR.cjs} +5 -5
  118. package/dist/{chunk-OALEDG67.cjs.map → chunk-TNESYDBR.cjs.map} +1 -1
  119. package/dist/chunk-TTS353W2.js +163 -0
  120. package/dist/chunk-TTS353W2.js.map +1 -0
  121. package/dist/{chunk-CROGFB46.cjs → chunk-U7OUZHBH.cjs} +753 -2
  122. package/dist/chunk-U7OUZHBH.cjs.map +1 -0
  123. package/dist/{chunk-BQ77KSXU.js → chunk-UORU5S7Y.js} +3 -3
  124. package/dist/{chunk-BQ77KSXU.js.map → chunk-UORU5S7Y.js.map} +1 -1
  125. package/dist/{chunk-FYZXDZM7.js → chunk-VFF76GTB.js} +4 -4
  126. package/dist/{chunk-FYZXDZM7.js.map → chunk-VFF76GTB.js.map} +1 -1
  127. package/dist/{chunk-E4H5H2C3.cjs → chunk-VYTK2WJB.cjs} +4 -4
  128. package/dist/{chunk-E4H5H2C3.cjs.map → chunk-VYTK2WJB.cjs.map} +1 -1
  129. package/dist/{chunk-XI37A7HH.js → chunk-WKSP73RU.js} +3 -3
  130. package/dist/{chunk-XI37A7HH.js.map → chunk-WKSP73RU.js.map} +1 -1
  131. package/dist/chunk-WP4VIOOA.cjs +15 -0
  132. package/dist/chunk-WP4VIOOA.cjs.map +1 -0
  133. package/dist/{chunk-YF3QUHKN.cjs → chunk-X3XPXEIM.cjs} +14 -15
  134. package/dist/chunk-X3XPXEIM.cjs.map +1 -0
  135. package/dist/{chunk-VZPFYZZU.cjs → chunk-Z2HEBOA3.cjs} +8 -8
  136. package/dist/{chunk-VZPFYZZU.cjs.map → chunk-Z2HEBOA3.cjs.map} +1 -1
  137. package/dist/{chunk-Q7CQYYZW.cjs → chunk-ZMYW5M75.cjs} +5 -5
  138. package/dist/chunk-ZMYW5M75.cjs.map +1 -0
  139. package/dist/{chunk-7UENVUA6.js → chunk-ZW2AWACP.js} +3 -3
  140. package/dist/{chunk-7UENVUA6.js.map → chunk-ZW2AWACP.js.map} +1 -1
  141. package/dist/citations/index.cjs +10 -10
  142. package/dist/citations/index.js +2 -2
  143. package/dist/collaboration/contacts/contact-form.d.ts +47 -0
  144. package/dist/collaboration/contacts/index.d.ts +3 -1
  145. package/dist/collaboration/contacts/invite-plan.d.ts +46 -0
  146. package/dist/collaboration/contacts/parseEmails.d.ts +7 -0
  147. package/dist/collaboration/index.cjs +163 -83
  148. package/dist/collaboration/index.js +2 -2
  149. package/dist/components/ActionLink.d.ts +1 -1
  150. package/dist/components/TeamGrid.d.ts +1 -1
  151. package/dist/components/editorial/{ProfileCard.d.ts → EditorialProfileCard.d.ts} +2 -2
  152. package/dist/components/editorial/index.d.ts +1 -1
  153. package/dist/connect/docx.cjs +14 -13
  154. package/dist/connect/docx.d.ts +1 -1
  155. package/dist/connect/docx.js +10 -9
  156. package/dist/connect/index.cjs +22097 -14743
  157. package/dist/connect/index.cjs.map +1 -1
  158. package/dist/connect/index.d.ts +11 -7
  159. package/dist/connect/index.js +15203 -7912
  160. package/dist/connect/index.js.map +1 -1
  161. package/dist/connect/viewer.cjs +83 -138
  162. package/dist/connect/viewer.cjs.map +1 -1
  163. package/dist/connect/viewer.d.ts +3 -2
  164. package/dist/connect/viewer.js +25 -82
  165. package/dist/connect/viewer.js.map +1 -1
  166. package/dist/connection/ConnectedSettings.d.ts +3 -2
  167. package/dist/connection/ConnectionProvider.d.ts +5 -4
  168. package/dist/connection/StreamedArtifact.d.ts +1 -1
  169. package/dist/connection/billing/index.d.ts +3 -3
  170. package/dist/connection/billing/support.d.ts +4 -7
  171. package/dist/connection/contacts/ConnectedAddContacts.d.ts +9 -0
  172. package/dist/connection/contacts/ConnectedContactCardForm.d.ts +11 -0
  173. package/dist/connection/contacts/ConnectedContactToggle.d.ts +16 -0
  174. package/dist/connection/contacts/ConnectedContactsDirectory.d.ts +10 -0
  175. package/dist/connection/contacts/ImportVcf.d.ts +29 -0
  176. package/dist/connection/contacts/index.d.ts +5 -0
  177. package/dist/connection/defaultHost.d.ts +9 -0
  178. package/dist/connection/docx/ConnectedNativeDocxEditor.d.ts +3 -3
  179. package/dist/connection/docx/support.d.ts +10 -9
  180. package/dist/connection/files/bulk/ConnectedFilesBulkActions.d.ts +22 -0
  181. package/dist/connection/files/bulk/useDocumentBulkActions.d.ts +19 -0
  182. package/dist/connection/files/explorer/FileTiles.d.ts +6 -3
  183. package/dist/connection/files/fields/ConnectedBulkTagEditor.d.ts +16 -0
  184. package/dist/connection/files/fields/ConnectedFieldsEditor.d.ts +40 -0
  185. package/dist/connection/files/fields/ConnectedFieldsManager.d.ts +33 -0
  186. package/dist/connection/files/fields/ConnectedTagEditorDialog.d.ts +20 -0
  187. package/dist/connection/files/fields/ConnectedTagForm.d.ts +54 -0
  188. package/dist/connection/files/fields/DocumentFieldParts.d.ts +33 -0
  189. package/dist/connection/files/fields/DocumentUser.d.ts +11 -0
  190. package/dist/connection/files/fields/documentField.d.ts +48 -0
  191. package/dist/connection/files/fields/useFieldWrites.d.ts +20 -0
  192. package/dist/connection/files/fields/useFieldsApply.d.ts +49 -0
  193. package/dist/connection/files/fields/useMemberLookup.d.ts +3 -0
  194. package/dist/connection/files/grid/ConnectedTagEntity.d.ts +19 -0
  195. package/dist/connection/files/grid/cells.d.ts +85 -0
  196. package/dist/connection/files/grid/documentColumns.d.ts +66 -0
  197. package/dist/connection/files/grid/documentGridBus.d.ts +48 -0
  198. package/dist/connection/files/grid/documentStatus.d.ts +43 -0
  199. package/dist/connection/files/grid/familyMeta.d.ts +21 -0
  200. package/dist/connection/files/grid/tagColumn.d.ts +23 -0
  201. package/dist/connection/files/grid/useDocumentGridSync.d.ts +48 -0
  202. package/dist/connection/files/grid/useDocumentTable.d.ts +30 -0
  203. package/dist/connection/files/index.d.ts +36 -2
  204. package/dist/connection/files/move/ConnectedMoveToFolder.d.ts +31 -0
  205. package/dist/connection/files/page/ConnectedFilesPage.d.ts +86 -0
  206. package/dist/connection/files/page/DocumentsFilterBarActions.d.ts +39 -0
  207. package/dist/connection/files/page/DocumentsUploadButton.d.ts +25 -0
  208. package/dist/connection/files/page/PersistedGridView.d.ts +6 -0
  209. package/dist/connection/files/page/ProgressiveLoadingChip.d.ts +12 -0
  210. package/dist/connection/files/page/useDocumentNavigation.d.ts +20 -0
  211. package/dist/connection/files/review/ConnectedAiReview.d.ts +40 -0
  212. package/dist/connection/files/review/reviewProgress.d.ts +2 -0
  213. package/dist/connection/files/store.d.ts +96 -0
  214. package/dist/connection/files/useDocumentFilters.d.ts +54 -0
  215. package/dist/connection/files/views/ViewSelector.d.ts +33 -0
  216. package/dist/connection/files/views/tableViews.d.ts +22 -0
  217. package/dist/connection/files/views/useTableViews.d.ts +22 -0
  218. package/dist/connection/mail/ConnectedMailbox.d.ts +2 -2
  219. package/dist/connection/messenger/ChatAttachments.d.ts +15 -0
  220. package/dist/connection/messenger/ConnectedChatThread.d.ts +21 -0
  221. package/dist/connection/messenger/ConnectedGroupMembers.d.ts +20 -0
  222. package/dist/connection/messenger/ConnectedMessenger.d.ts +52 -0
  223. package/dist/connection/messenger/index.d.ts +6 -0
  224. package/dist/connection/messenger/types.d.ts +103 -0
  225. package/dist/connection/messenger/useMessengerRows.d.ts +19 -0
  226. package/dist/connection/tags/ConnectedTagsPage.d.ts +2 -35
  227. package/dist/connection/viewer/ConnectedDocumentToolsProvider.d.ts +19 -2
  228. package/dist/connection/viewer/ConnectedDocumentViewer.d.ts +1 -1
  229. package/dist/connection/viewer/support.d.ts +21 -15
  230. package/dist/connection/workspaceData.d.ts +134 -8
  231. package/dist/facts/index.cjs +3 -3
  232. package/dist/facts/index.js +2 -2
  233. package/dist/files/bulk/BulkActionsBar.d.ts +9 -5
  234. package/dist/files/cells/DocumentNameCell.d.ts +4 -2
  235. package/dist/files/cells/MultiSelectCellEditor.d.ts +13 -0
  236. package/dist/files/cells/RelatedDocsCell.d.ts +2 -1
  237. package/dist/files/cells/index.d.ts +1 -0
  238. package/dist/files/documentColumns.d.ts +15 -0
  239. package/dist/files/folders/DocumentsFolderButton.d.ts +26 -0
  240. package/dist/files/folders/FolderTreePicker.d.ts +16 -0
  241. package/dist/files/folders/index.d.ts +2 -0
  242. package/dist/files/index.cjs +430 -434
  243. package/dist/files/index.d.ts +4 -1
  244. package/dist/files/index.js +5 -5
  245. package/dist/files/navigator/DocumentSearchList.d.ts +19 -0
  246. package/dist/files/navigator/ExplorerFileNavigator.d.ts +23 -0
  247. package/dist/files/navigator/NavDocumentPicker.d.ts +15 -0
  248. package/dist/files/navigator/NavigatorPickerBar.d.ts +26 -0
  249. package/dist/files/navigator/index.d.ts +5 -0
  250. package/dist/files/navigator/types.d.ts +7 -0
  251. package/dist/files/tags/BulkTagEditor.d.ts +2 -1
  252. package/dist/files/tags/index.d.ts +0 -2
  253. package/dist/files/visibility.d.ts +6 -5
  254. package/dist/home/StartTiles.d.ts +1 -1
  255. package/dist/home/index.cjs +30 -30
  256. package/dist/home/index.js +5 -5
  257. package/dist/index.cjs +684 -694
  258. package/dist/index.cjs.map +1 -1
  259. package/dist/index.d.ts +2 -1
  260. package/dist/index.js +22 -134
  261. package/dist/index.js.map +1 -1
  262. package/dist/provider/{BlocksProvider.d.ts → environment.d.ts} +8 -10
  263. package/dist/provider/host.d.ts +44 -0
  264. package/dist/retrieval/index.cjs +4 -4
  265. package/dist/retrieval/index.js +2 -2
  266. package/dist/shell/index.cjs +44 -44
  267. package/dist/shell/index.js +3 -3
  268. package/dist/shell/types.d.ts +1 -1
  269. package/dist/site/index.cjs +61 -61
  270. package/dist/site/index.js +2 -2
  271. package/dist/studio/index.cjs +86 -87
  272. package/dist/studio/index.cjs.map +1 -1
  273. package/dist/studio/index.js +15 -16
  274. package/dist/studio/index.js.map +1 -1
  275. package/dist/workflow-canvas/index.cjs +28 -27
  276. package/dist/workflow-canvas/index.cjs.map +1 -1
  277. package/dist/workflow-canvas/index.js +11 -10
  278. package/dist/workflow-canvas/index.js.map +1 -1
  279. package/dist/workspaces/WorkspaceCard.d.ts +1 -1
  280. package/dist/workspaces/index.cjs +20 -20
  281. package/dist/workspaces/index.js +4 -4
  282. package/node_modules/@arbidocs/coedit/package.json +1 -1
  283. package/package.json +5 -5
  284. package/dist/ConnectedStreamedWordArtifact-CWFR6A37.cjs.map +0 -1
  285. package/dist/FactTextEditor-YESAU2IJ.js.map +0 -1
  286. package/dist/FactTextEditor-YUPBCTXK.cjs.map +0 -1
  287. package/dist/WorkspaceTableView-DWUE4VQF.js.map +0 -1
  288. package/dist/WorkspaceTableView-EYLEUZZT.cjs.map +0 -1
  289. package/dist/chunk-2BHDRVVL.cjs.map +0 -1
  290. package/dist/chunk-3VULDTNL.cjs.map +0 -1
  291. package/dist/chunk-4RPBUMHB.cjs.map +0 -1
  292. package/dist/chunk-5ZIYPZYE.js +0 -2748
  293. package/dist/chunk-5ZIYPZYE.js.map +0 -1
  294. package/dist/chunk-6I6CVX5G.cjs +0 -22
  295. package/dist/chunk-6I6CVX5G.cjs.map +0 -1
  296. package/dist/chunk-7NL6WJER.cjs +0 -682
  297. package/dist/chunk-7NL6WJER.cjs.map +0 -1
  298. package/dist/chunk-CB4TIDEX.cjs +0 -54
  299. package/dist/chunk-CB4TIDEX.cjs.map +0 -1
  300. package/dist/chunk-CNHUJRQ4.cjs.map +0 -1
  301. package/dist/chunk-CROGFB46.cjs.map +0 -1
  302. package/dist/chunk-DEPF5LQI.js.map +0 -1
  303. package/dist/chunk-ETZ5A3GU.js.map +0 -1
  304. package/dist/chunk-EYJMMGXF.js +0 -19
  305. package/dist/chunk-EYJMMGXF.js.map +0 -1
  306. package/dist/chunk-F57LNUSZ.js.map +0 -1
  307. package/dist/chunk-FAXXN7KI.cjs.map +0 -1
  308. package/dist/chunk-FM3IRQJW.cjs.map +0 -1
  309. package/dist/chunk-FTZ45WHY.js.map +0 -1
  310. package/dist/chunk-GC2FSPSQ.cjs.map +0 -1
  311. package/dist/chunk-KDLX5AA7.js +0 -49
  312. package/dist/chunk-KDLX5AA7.js.map +0 -1
  313. package/dist/chunk-KFMRBZQK.js.map +0 -1
  314. package/dist/chunk-MNG7N6M2.js.map +0 -1
  315. package/dist/chunk-NPLGB4LI.cjs.map +0 -1
  316. package/dist/chunk-P2YM67Y5.cjs.map +0 -1
  317. package/dist/chunk-P6RIBIVN.js.map +0 -1
  318. package/dist/chunk-Q7CQYYZW.cjs.map +0 -1
  319. package/dist/chunk-QJFJ5JBF.cjs +0 -2838
  320. package/dist/chunk-QJFJ5JBF.cjs.map +0 -1
  321. package/dist/chunk-RATEAOKT.js.map +0 -1
  322. package/dist/chunk-SDOEHEJP.js.map +0 -1
  323. package/dist/chunk-SZSJGZSO.js.map +0 -1
  324. package/dist/chunk-TC3RQNEX.cjs.map +0 -1
  325. package/dist/chunk-TF7HN5EU.js.map +0 -1
  326. package/dist/chunk-VF5EUAIV.js.map +0 -1
  327. package/dist/chunk-VTTZZ4FN.js.map +0 -1
  328. package/dist/chunk-WK6FVIF7.js +0 -654
  329. package/dist/chunk-WK6FVIF7.js.map +0 -1
  330. package/dist/chunk-YF3QUHKN.cjs.map +0 -1
  331. package/dist/connection/ArbiAppProvider.d.ts +0 -16
  332. package/dist/connection/files/support.d.ts +0 -40
  333. package/dist/files/tags/DocTagPopover.d.ts +0 -113
  334. package/dist/files/tags/TagManager.d.ts +0 -54
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Apply and Clear for the fields editor: put the checked tags on the target, or take them off. The
3
+ * target is the host's (`FieldsTarget`, e.g. the selected facts), else documents. On documents an
4
+ * AI field is generated (asking first before overwriting values already there), a plain one is
5
+ * attached where it is missing, and clearing detaches it where it is present.
6
+ */
7
+ import type { TagResponse } from '@arbidocs/sdk/browser';
8
+ /** What Apply / Clear act on when it is not documents (e.g. the selected facts). */
9
+ export interface FieldsTarget {
10
+ noun: {
11
+ singular: string;
12
+ plural: string;
13
+ };
14
+ ids: string[];
15
+ /** Attach every given tag to every target. */
16
+ apply: (tagIds: string[]) => Promise<void>;
17
+ /** Detach every given tag from every target. */
18
+ clear: (tagIds: string[]) => Promise<void>;
19
+ /** How many of the host's items carry a tag (shown instead of the document count). */
20
+ countFor?: (tagId: string) => number;
21
+ }
22
+ /** AI fields were put on documents: the tags (in the order shown) and the documents. */
23
+ export interface AppliedAiFields {
24
+ tags: {
25
+ id: string;
26
+ name: string;
27
+ }[];
28
+ docIds: string[];
29
+ }
30
+ export declare function useFieldsApply({ tags, nouns, targetNoun, targetIds, target, onAiFieldsApplied, }: {
31
+ tags: TagResponse[];
32
+ nouns: {
33
+ singular: string;
34
+ plural: string;
35
+ };
36
+ targetNoun: {
37
+ singular: string;
38
+ plural: string;
39
+ };
40
+ targetIds: string[];
41
+ target?: FieldsTarget;
42
+ /** AI fields were applied to documents (e.g. show their values). Absent: a message says so. */
43
+ onAiFieldsApplied?: (result: AppliedAiFields) => void;
44
+ }): {
45
+ apply: (tagIds: string[]) => Promise<boolean>;
46
+ clear: (tagIds: string[]) => Promise<boolean>;
47
+ isApplying: boolean;
48
+ isClearing: boolean;
49
+ };
@@ -0,0 +1,3 @@
1
+ import { type DocumentPerson } from '@arbidocs/react';
2
+ /** Finds a workspace member by id (undefined for anyone else, or no id). */
3
+ export declare function useMemberLookup(): (userId: string | null | undefined) => DocumentPerson | undefined;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * A label or field as a pill, with the rich hover card: its type, how many documents carry it, who
3
+ * can see it (a toggle for its owner), and who created and last changed it. The pill itself is the
4
+ * shared `TagEntity` of `@arbidocs/react/ui`; this adds what it reads from the session.
5
+ */
6
+ import type { TagResponse } from '@arbidocs/sdk/browser';
7
+ export interface ConnectedTagEntityProps {
8
+ tag: TagResponse;
9
+ size?: 'sm' | 'md' | 'lg';
10
+ className?: string;
11
+ onClick?: (e: React.MouseEvent) => void;
12
+ /** Whether to show the detailed tooltip (default: true) */
13
+ showTooltip?: boolean;
14
+ /** Whether current user can edit this tag (owner) */
15
+ canEdit?: boolean;
16
+ /** Callback when edit is requested (clicking visibility toggle as owner) */
17
+ onEditClick?: () => void;
18
+ }
19
+ export declare function ConnectedTagEntity({ tag, size, className, onClick, showTooltip, canEdit, onEditClick, }: ConnectedTagEntityProps): import("react").JSX.Element;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * The documents table's cell bindings: the document pill with its row menu, who can see it, its
3
+ * folder, its related documents, its labels and its uploader. The presentation is in `files/`;
4
+ * these bind it to the session. Writes come in through props or the grid's context, never a hook
5
+ * per row, so a large table adds no per-row subscriptions beyond what a cell must show.
6
+ */
7
+ import { type DocumentHostActions, type RelatedDocs, type useAssignDocTags, type useCreateTag, type useRemoveDocTags } from '@arbidocs/react';
8
+ import { type FileTileDocument, type FileTileUser } from '../explorer/FileTiles';
9
+ /** A person as a table cell shows them. */
10
+ export type GridUser = FileTileUser & {
11
+ is_identity_verified?: boolean | null;
12
+ };
13
+ /** A small avatar for a person (initials, or their picture); opens them when the host can. */
14
+ export declare const UserAvatar: import("react").NamedExoticComponent<{
15
+ user: GridUser | undefined;
16
+ isMe?: boolean;
17
+ onOpen?: (userId: string) => void;
18
+ }>;
19
+ export interface DocumentNameCellProps {
20
+ doc: FileTileDocument;
21
+ /** The viewer may rename, move or delete the document. */
22
+ canEdit: boolean;
23
+ /** The workspace's members (the hover card's "last modified by"). */
24
+ users: readonly GridUser[];
25
+ onOpen: () => void;
26
+ /** Open in the review view. Absent: not offered. */
27
+ onReview?: () => void;
28
+ /** Start a chat about the document. Absent: not offered. */
29
+ onDocumentChat?: () => void;
30
+ onRename: () => void;
31
+ onDownload: () => void;
32
+ onMove: () => void;
33
+ onDelete: () => void;
34
+ }
35
+ /**
36
+ * The Document column: the document pill (exactly as documents look everywhere), opened by a
37
+ * click, with the offline mark on its icon, its status after the name and the row menu.
38
+ */
39
+ export declare const DocumentNameCell: import("react").NamedExoticComponent<DocumentNameCellProps>;
40
+ /** Who can see the document: a toggle for its owner. */
41
+ export declare const DocumentSharedCell: import("react").NamedExoticComponent<{
42
+ document: FileTileDocument;
43
+ disabled?: boolean;
44
+ disabledTooltip?: string;
45
+ onToggle: (docId: string, shared: boolean) => void;
46
+ }>;
47
+ /** The folders documents are in (and `value`), for a folder picker. */
48
+ export declare function useDocumentFolders(documents: readonly {
49
+ folder?: string | null;
50
+ }[], value?: string | null): string[];
51
+ /** The document's folder, changed by a picker of the workspace's folders. */
52
+ export declare const DocumentFolderCell: import("react").NamedExoticComponent<{
53
+ document: FileTileDocument;
54
+ isEditable: boolean;
55
+ allDocuments: readonly FileTileDocument[];
56
+ onUpdateFolder: (docId: string, folder: string | null) => void;
57
+ }>;
58
+ /** The document's related documents: its email family, copies, duplicates and near-duplicates. */
59
+ export declare const RelatedDocumentsCell: import("react").NamedExoticComponent<{
60
+ currentDoc: FileTileDocument;
61
+ related: RelatedDocs<FileTileDocument>;
62
+ /** The document open in the viewer (its pill is marked). */
63
+ viewingDocumentId: string | null;
64
+ onDocumentClick: (docId: string) => void;
65
+ onDelete: (doc: FileTileDocument) => void;
66
+ /** Compare with a similar document. Absent: not offered. */
67
+ onCompare?: (docId: string, otherDocId: string) => void;
68
+ }>;
69
+ /** A label as the Labels column offers it. */
70
+ export interface GridLabel {
71
+ external_id: string;
72
+ name: string;
73
+ }
74
+ /** The document's labels: toggle one, or create one by name and apply it. */
75
+ export declare const DocumentLabelsCell: import("react").NamedExoticComponent<{
76
+ doc: FileTileDocument;
77
+ labels: readonly GridLabel[];
78
+ createDocTag: Pick<ReturnType<typeof useAssignDocTags>, "mutateAsync">;
79
+ deleteDocTag: Pick<ReturnType<typeof useRemoveDocTags>, "mutateAsync">;
80
+ createTag: Pick<ReturnType<typeof useCreateTag>, "mutateAsync">;
81
+ isMember: boolean;
82
+ /** The row height: the chips are clamped to the rows that fully fit. */
83
+ rowHeight?: number;
84
+ actions?: DocumentHostActions;
85
+ }>;
@@ -0,0 +1,66 @@
1
+ /**
2
+ * The documents table's columns (explicit `colId`s; AG Grid's saved state decides which show and
3
+ * in what order): the document pill, its status, its AI fields (type, author, abstract, date), its
4
+ * file facts, folder, sender, fingerprint, related documents, visibility, uploader, labels, id, and
5
+ * one column per AI field. Writes come in as parameters, the row-independent lookups through the
6
+ * grid's context, so the columns are rebuilt only when the fields themselves change.
7
+ */
8
+ import type { ColDef } from 'ag-grid-community';
9
+ import { type TagResponse } from '@arbidocs/sdk/browser';
10
+ import { type DocumentHostActions, type RelatedDocsMap, type useAssignDocTags, type useCreateTag, type useRemoveDocTags, type useUpdateDocTag } from '@arbidocs/react';
11
+ import { type WorkspaceMemberRole } from '../../../files/permissions';
12
+ import type { FileTileDocument } from '../explorer/FileTiles';
13
+ import { type GridUser } from './cells';
14
+ /** A row of the documents table. */
15
+ export type GridDocument = FileTileDocument & {
16
+ /** The email sender of a document imported from mail ("Ada <ada@x.com>"). */
17
+ sender?: string | null;
18
+ };
19
+ type Doc = GridDocument;
20
+ type Tag = TagResponse;
21
+ /**
22
+ * What the columns read through the grid's `context` (row-independent, so the column definitions
23
+ * stay put when they change).
24
+ */
25
+ export interface DocumentGridContext {
26
+ getDocuments?: () => GridDocument[];
27
+ getRelatedDocs?: () => RelatedDocsMap<GridDocument>;
28
+ getFamilyMeta?: () => Map<string, {
29
+ tier: number;
30
+ count: number;
31
+ }>;
32
+ getWorkspaceUsers?: () => GridUser[];
33
+ getCurrentUserId?: () => string | undefined;
34
+ getViewingDocumentId?: () => string | null;
35
+ getHostActions?: () => DocumentHostActions;
36
+ updateFolder?: (docId: string, folder: string | null) => void;
37
+ }
38
+ interface CreateDocumentColumnsParams {
39
+ handleToggleDocumentViewer: (docId: string) => void;
40
+ onStatusClick?: () => void;
41
+ /** Per-row document actions for the unified name column's ⋯ kebab. */
42
+ onReviewDocument?: (docId: string) => void;
43
+ /** Start a new chat scoped to one document, opening it in the side viewer. */
44
+ onDocumentChat?: (docId: string) => void;
45
+ onDownloadDocument?: (doc: Doc) => void;
46
+ onMoveDocument?: (docId: string) => void;
47
+ onDeleteDocument?: (docId: string) => void;
48
+ isMember: boolean;
49
+ /**
50
+ * The viewer's role in the workspace (null: not a member, e.g. a public workspace's visitor).
51
+ * Only an owner or a collaborator edits documents someone else created.
52
+ */
53
+ workspaceRole: WorkspaceMemberRole | null;
54
+ currentUserExtId?: string;
55
+ availableTags: Tag[];
56
+ createDocTag: Pick<ReturnType<typeof useAssignDocTags>, 'mutateAsync'>;
57
+ updateDocTag: Pick<ReturnType<typeof useUpdateDocTag>, 'mutateAsync'>;
58
+ deleteDocTag: Pick<ReturnType<typeof useRemoveDocTags>, 'mutateAsync'>;
59
+ createTag: Pick<ReturnType<typeof useCreateTag>, 'mutateAsync'>;
60
+ /** Share a document with the workspace, or make it private. */
61
+ onToggleShared: (docId: string, shared: boolean) => void;
62
+ /** How a tag write's outcome is told (the environment's notify). */
63
+ notify: (message: string, kind: 'success' | 'error') => void;
64
+ }
65
+ export declare function createDocumentColumns({ handleToggleDocumentViewer, onStatusClick, onReviewDocument, onDocumentChat, onDownloadDocument, onMoveDocument, onDeleteDocument, isMember, workspaceRole, currentUserExtId, availableTags, createDocTag, updateDocTag, deleteDocTag, createTag, onToggleShared, notify, }: CreateDocumentColumnsParams): ColDef<Doc>[];
66
+ export {};
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Document Grid Bus
3
+ *
4
+ * Applies the row changes of every write to the documents list (`@arbidocs/react`
5
+ * `subscribeDocumentRows`) to the Files AG Grid as `applyTransactionAsync` transactions.
6
+ *
7
+ * Why a bus:
8
+ * - Without it, every cache write cascades through the filters into a full `rowData` diff in AG
9
+ * Grid. During a bulk upload of 100 docs that can be hundreds of cascades within seconds.
10
+ * - applyTransactionAsync coalesces transactions inside a ~60ms window into one render pass, so N
11
+ * concurrent document completions collapse to 1-2 grid flushes instead of N full diffs.
12
+ *
13
+ * The React Query cache stays the source of truth; when the grid is not mounted (another page)
14
+ * the changes are simply not applied anywhere. The grid api is registered on onGridReady and
15
+ * unregistered on unmount (not stored in Zustand: it is not serializable and its mounting must not
16
+ * re-render anything).
17
+ */
18
+ import type { GridApi } from 'ag-grid-community';
19
+ import type { DocumentRowChange } from '@arbidocs/react';
20
+ import type { GridDocument as Doc } from './documentColumns';
21
+ /**
22
+ * Register the Documents grid API. Called from onGridReady.
23
+ * Subsequent calls replace the previous registration (e.g. on remount).
24
+ */
25
+ export declare function registerDocumentGridApi(api: GridApi<Doc>): void;
26
+ /**
27
+ * Unregister the grid API. Called on unmount.
28
+ * After this, row changes are not applied anywhere.
29
+ */
30
+ export declare function unregisterDocumentGridApi(api: GridApi<Doc>): void;
31
+ /**
32
+ * Apply one write's row changes to the grid as a single transaction.
33
+ *
34
+ * Adds are not sent: AG Grid's React integration, with `rowData` AND `getRowId` set (the Files grid
35
+ * sets both), diffs every `rowData` change and queues its OWN add transactions. An add queued here
36
+ * would collide with AG Grid's for the same id in the same flush window ("Duplicate node id", a
37
+ * phantom second row), so the `rowData` diff carries adds. An add whose id the grid already holds
38
+ * (a sibling path raced ahead) is sent as an update so the cell still refreshes.
39
+ *
40
+ * Updates are filtered to ids the grid holds: AG Grid logs `error #4: Could not find row id=…` for
41
+ * every unmatched id (processing events for rows the `rowData` diff has not flushed yet).
42
+ */
43
+ export declare function applyDocumentRowChange({ add, update, remove }: DocumentRowChange): void;
44
+ /**
45
+ * Test-only: reset module state between tests.
46
+ * @internal
47
+ */
48
+ export declare function __resetDocumentGridBusForTests(): void;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * A document's status as the table shows it: the live in-flight status the host hears wins over
3
+ * the row's, an offline edit waiting to sync is its own state, and a failure names its stage. One
4
+ * resolution feeds both the Status column's pill and the glyph after the document's name, so they
5
+ * always agree. Each reads only its own document's live processing, so a row re-renders only when
6
+ * its own status changes.
7
+ */
8
+ import { type DocumentHostActions, type WorkspaceDocument } from '@arbidocs/react';
9
+ /** A row as the status reads it (the session's rows may carry the failed stage). */
10
+ export type StatusDocument = WorkspaceDocument & {
11
+ failed_stage?: string | null;
12
+ };
13
+ /** The plan's AI budget a failure ran into, read from its error message. */
14
+ export declare function parseQuotaError(errorMessage: string | null | undefined): {
15
+ spend: number;
16
+ budget: number;
17
+ projectExtId: string | null;
18
+ } | null;
19
+ export interface ResolvedDocStatus {
20
+ /** The status to show: a live in-flight status wins over a finished one on the row. */
21
+ status: string;
22
+ /** An offline edit is waiting to sync (shown over "ready"). */
23
+ isPendingSync: boolean;
24
+ /** Where a failure stopped: live, else on the row. */
25
+ failedStage: string | null;
26
+ }
27
+ /** The status a document shows now (null while it has none). */
28
+ export declare function useResolvedDocStatus(doc: StatusDocument | undefined): ResolvedDocStatus | null;
29
+ /**
30
+ * The quiet status mark after a document's name, so the table needs no Status column: a ready
31
+ * document shows nothing; work in flight, waiting and problems get a glyph with a title. The spinner
32
+ * is a CSS animation, so a table of processing rows costs no timers.
33
+ */
34
+ export declare const DocumentStatusGlyph: import("react").NamedExoticComponent<{
35
+ doc: StatusDocument;
36
+ }>;
37
+ /** The Status column: a tinted pill per status, with a progress bar while processing. */
38
+ export declare const StatusCell: import("react").NamedExoticComponent<{
39
+ doc: StatusDocument | undefined;
40
+ /** Opens the host's processing details. */
41
+ onStatusClick?: () => void;
42
+ actions?: DocumentHostActions;
43
+ }>;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Tiered sort metadata per family group, keyed by the same groupId the
3
+ * Related-column valueGetter computes. Family tier = the highest-priority
4
+ * relationship type *anywhere* in the family, so a parent's duplicate
5
+ * status promotes its whole family. Within a tier, the count is the
6
+ * aggregate of that relationship type across family members.
7
+ *
8
+ * tier 3 — any member has duplicates → count = Σ duplicates.length
9
+ * tier 2 — any member has similar → count = Σ similar.length
10
+ * tier 1 — pure parent/child family → count = family member count
11
+ * tier 0 — no relationships at all → count = 0
12
+ *
13
+ * Higher tier first under descending sort puts dupes → similar → family
14
+ * → none, matching what the user expects when clicking the column header.
15
+ */
16
+ import type { RelatedDocsMap, WorkspaceDocument } from '@arbidocs/react';
17
+ export type FamilyMeta = Map<string, {
18
+ tier: number;
19
+ count: number;
20
+ }>;
21
+ export declare function documentFamilyMeta<D extends WorkspaceDocument>(documents: D[], relatedDocsMap: RelatedDocsMap<D>): FamilyMeta;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Unified tag column factory - creates AG Grid column definitions for all tag types
3
+ * Text/Number tags: Show note with inline editing
4
+ * Select tags: Show multiselect dropdown inline editor
5
+ * Presence tags (label, issue, person, organisation): Show checkbox for simple toggle
6
+ */
7
+ import { type TagResponse } from '@arbidocs/sdk/browser';
8
+ import type { ColDef } from 'ag-grid-community';
9
+ import type { useAssignDocTags, useRemoveDocTags, useUpdateDocTag } from '@arbidocs/react';
10
+ import type { FileTileDocument as Doc } from '../explorer/FileTiles';
11
+ type Tag = TagResponse;
12
+ type Notify = (message: string, kind: 'success' | 'error') => void;
13
+ interface CreateTagColumnParams {
14
+ tag: Tag;
15
+ isMember: boolean;
16
+ /** How a write's outcome is told (the environment's notify). */
17
+ notify: Notify;
18
+ createDocTag: Pick<ReturnType<typeof useAssignDocTags>, 'mutateAsync'>;
19
+ updateDocTag: Pick<ReturnType<typeof useUpdateDocTag>, 'mutateAsync'>;
20
+ deleteDocTag: Pick<ReturnType<typeof useRemoveDocTags>, 'mutateAsync'>;
21
+ }
22
+ export declare function createTagColumn({ tag, isMember, notify, createDocTag, updateDocTag, deleteDocTag, }: CreateTagColumnParams): ColDef<Doc>;
23
+ export {};
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The documents table's AG Grid wiring, bound to the session: owns the grid api, applies every
3
+ * write to the open workspace's list as one row transaction (the cache stays the source of truth),
4
+ * keeps the grid's selection in step with the host's, filters with a set of visible ids instead of
5
+ * swapping `rowData`, and builds the grid options with the context the cells read.
6
+ */
7
+ import type { ColDef, GridApi, IRowNode } from 'ag-grid-community';
8
+ import { type RelatedDocsMap } from '@arbidocs/react';
9
+ import type { DocumentGridContext, GridDocument } from './documentColumns';
10
+ import type { GridUser } from './cells';
11
+ type Doc = GridDocument;
12
+ export interface UseDocumentGridSyncArgs {
13
+ /** Every document of the workspace (the grid holds them all). */
14
+ documents: Doc[];
15
+ /** The ones the filters let through. */
16
+ filteredDocuments: Doc[];
17
+ columnDefs: ColDef<Doc>[];
18
+ relatedDocsMap: RelatedDocsMap<Doc>;
19
+ workspaceUsers: GridUser[];
20
+ selectedDocumentIds: readonly string[];
21
+ setSelectedDocumentIds: (ids: string[]) => void;
22
+ handleColumnStateChange: () => void;
23
+ updateFolder: (docId: string, folder: string | null) => void;
24
+ /** Told of the grid api as it mounts (and null as it goes), e.g. for end-to-end helpers. */
25
+ onGridApi?: (api: GridApi<Doc> | null) => void;
26
+ }
27
+ export declare function useDocumentGridSync({ documents, filteredDocuments, columnDefs, relatedDocsMap, workspaceUsers, selectedDocumentIds, setSelectedDocumentIds, handleColumnStateChange, updateFolder, onGridApi, }: UseDocumentGridSyncArgs): {
28
+ gridApiRef: import("react").RefObject<GridApi<GridDocument> | null>;
29
+ gridApi: GridApi<GridDocument> | null;
30
+ gridReadyTick: number;
31
+ gridOptions: {
32
+ suppressMultiSort: boolean;
33
+ suppressMenuHide: boolean;
34
+ maintainColumnOrder: boolean;
35
+ suppressColumnVirtualisation: boolean;
36
+ onColumnMoved: () => void;
37
+ onColumnVisible: () => void;
38
+ isExternalFilterPresent: () => boolean;
39
+ doesExternalFilterPass: (node: IRowNode<Doc>) => boolean;
40
+ context: DocumentGridContext;
41
+ };
42
+ handleGridReady: (params: {
43
+ api: GridApi<Doc>;
44
+ }) => void;
45
+ handleSelectionChange: (docs: Doc[]) => void;
46
+ handleClearSelection: () => void;
47
+ };
48
+ export {};
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The documents table's columns and edits, bound to the session: the column definitions (rebuilt
3
+ * only when the fields themselves change, so AG Grid keeps manual column widths), the inline edits
4
+ * (title, AI fields, folder) written through `@arbidocs/react`, and the default columns.
5
+ */
6
+ import type { CellValueChangedEvent, ColDef } from 'ag-grid-community';
7
+ import type { WorkspaceMemberRole } from '../../../files/permissions';
8
+ import { type GridDocument } from './documentColumns';
9
+ type Doc = GridDocument;
10
+ interface DocumentTableProps {
11
+ handleToggleDocumentViewer: (docId: string) => void;
12
+ /** The viewer's id and role in the workspace (who may edit what). */
13
+ currentUserExtId?: string;
14
+ workspaceRole: WorkspaceMemberRole | null;
15
+ onStatusClick?: () => void;
16
+ onReviewDocument?: (docId: string) => void;
17
+ onDownloadDocument?: (doc: Doc) => void;
18
+ onMoveDocument?: (docId: string) => void;
19
+ onDeleteDocument?: (docId: string) => void;
20
+ isMember?: boolean;
21
+ documents?: Doc[];
22
+ }
23
+ export declare function useDocumentTable({ handleToggleDocumentViewer, onStatusClick, onReviewDocument, onDownloadDocument, onMoveDocument, onDeleteDocument, isMember, currentUserExtId, workspaceRole, }: DocumentTableProps): {
24
+ columnDefs: ColDef<GridDocument, any>[];
25
+ onCellValueChanged: (event: CellValueChangedEvent<Doc>) => Promise<void>;
26
+ handleColumnStateChange: () => void;
27
+ defaultVisibleColumns: string[];
28
+ updateFolder: (externalId: string, folder: string | null) => void;
29
+ };
30
+ export {};
@@ -1,10 +1,44 @@
1
1
  export { ConnectedFilesExplorer, TILE_DEFAULT, TILE_MAX, TILE_MIN, type ConnectedFilesExplorerHandle, type ConnectedFilesExplorerProps, } from './explorer/ConnectedFilesExplorer';
2
2
  export { FileTooltipContent, isActiveDocumentStatus, startMenuItem, type FileTileDocument, type FileTileUser, } from './explorer/FileTiles';
3
3
  export { DocumentSyncGlyph } from './DocumentSyncGlyph';
4
- export { FilesSupportProvider, useFilesSupport, useOfflineDocumentIds, useViewingDocumentId, type FilesStartItem, type FilesSupport, } from './support';
5
- export { useFilesStore, usePendingFolders } from './store';
4
+ export { useFilesPrefs, useFilesStore, usePendingFolders } from './store';
6
5
  export { ConnectedUpload, type ConnectedUploadFooterParts, type ConnectedUploadProps, } from './upload/ConnectedUpload';
7
6
  export { ConnectedUploadDropzone, type ConnectedUploadDropzoneProps, type UploadSource, } from './upload/ConnectedUploadDropzone';
8
7
  export { EmptyWorkspaceUpload, type EmptyWorkspaceUploadProps } from './upload/EmptyWorkspaceUpload';
9
8
  export { AddFromAccountsButton } from './upload/AddFromAccountsButton';
10
9
  export { useAddFromUrls, type AddFromUrlsOptions } from './upload/useAddFromUrls';
10
+ export { useDocumentTable } from './grid/useDocumentTable';
11
+ export { createDocumentColumns, type DocumentGridContext, type GridDocument, } from './grid/documentColumns';
12
+ export { createTagColumn } from './grid/tagColumn';
13
+ export { DocumentFolderCell, DocumentLabelsCell, DocumentNameCell, DocumentSharedCell, RelatedDocumentsCell, UserAvatar, useDocumentFolders, type GridLabel, type GridUser, } from './grid/cells';
14
+ export { DocumentStatusGlyph, StatusCell, parseQuotaError, useResolvedDocStatus, type ResolvedDocStatus, } from './grid/documentStatus';
15
+ export { ConnectedTagEntity, type ConnectedTagEntityProps } from './grid/ConnectedTagEntity';
16
+ export { ConnectedFilesBulkActions, type ConnectedFilesBulkActionsProps, } from './bulk/ConnectedFilesBulkActions';
17
+ export { useDocumentBulkActions, BULK_REPROCESS_LIMIT } from './bulk/useDocumentBulkActions';
18
+ export { useDocumentGridSync, type UseDocumentGridSyncArgs } from './grid/useDocumentGridSync';
19
+ export { documentFamilyMeta, type FamilyMeta } from './grid/familyMeta';
20
+ export { useDocumentFilters, deduplicateByContentHash, DEFAULT_SEARCH_FIELDS, SEARCH_FIELD_OPTIONS, type DocumentFilterId, type DocumentFilterOption, type SearchFieldId, } from './useDocumentFilters';
21
+ export { ConnectedAiReview, type ConnectedAiReviewProps } from './review/ConnectedAiReview';
22
+ export { reviewProgress } from './review/reviewProgress';
23
+ export { useAiReviewStore, type AiReviewRun } from './store';
24
+ export { ConnectedMoveToFolder, type ConnectedMoveToFolderProps, } from './move/ConnectedMoveToFolder';
25
+ export { ConnectedTagForm, type ConnectedTagFormProps, type TagCreateData, type TagFormat, type TagUpdateData, } from './fields/ConnectedTagForm';
26
+ export { ConnectedTagEditorDialog, type ConnectedTagEditorDialogProps, } from './fields/ConnectedTagEditorDialog';
27
+ export { ConnectedFieldsEditor, type ConnectedFieldsEditorProps, type FieldsExportSlot, } from './fields/ConnectedFieldsEditor';
28
+ export { ConnectedFieldsManager, type ConnectedFieldsManagerProps, } from './fields/ConnectedFieldsManager';
29
+ export { type AppliedAiFields, type FieldsTarget } from './fields/useFieldsApply';
30
+ export { ConnectedBulkTagEditor, type ConnectedBulkTagEditorProps, } from './fields/ConnectedBulkTagEditor';
31
+ export { documentFieldContent, type DocTagCitations, type DocumentFieldContent, type DocumentFieldOptions, } from './fields/documentField';
32
+ export { DocumentUser } from './fields/DocumentUser';
33
+ export { useMemberLookup } from './fields/useMemberLookup';
34
+ export { useFilesGridStates, type FilesViewMode } from './store';
35
+ export { DocumentsFilterBarActions, type DocumentsFilterBarActionsProps, } from './page/DocumentsFilterBarActions';
36
+ export { DocumentsUploadButton, type DocumentsUploadButtonProps, } from './page/DocumentsUploadButton';
37
+ export { PersistedGridView } from './page/PersistedGridView';
38
+ export { ProgressiveLoadingChip } from './page/ProgressiveLoadingChip';
39
+ export { useDocumentNavigation } from './page/useDocumentNavigation';
40
+ export { ViewSelector, type LoadableTableView } from './views/ViewSelector';
41
+ export { useTableViews } from './views/useTableViews';
42
+ export { viewsOfTable, withMissingTableViews, withTableView, withoutTableView, type TableView, type TableViewTable, } from './views/tableViews';
43
+ export { useFilesDialogs, type DeleteRequestDocument } from './store';
44
+ export { ConnectedFilesPage, type ConnectedFilesPageProps, type FilesReviewCardProps, type FilesUploadRequest, } from './page/ConnectedFilesPage';
@@ -0,0 +1,31 @@
1
+ /**
2
+ * MoveToFolderModal Component
3
+ *
4
+ * Dialog for moving selected documents (or an entire folder) to a folder.
5
+ * The folder picker is searchable and scrollable, and creates a folder from what is typed.
6
+ *
7
+ * File mode — selectedDocuments non-empty, folderToMove null:
8
+ * Sets folder = targetFolder for every selected doc (flat move, existing behaviour).
9
+ *
10
+ * Folder mode — folderToMove non-empty:
11
+ * Moves the folder itself into targetFolder, preserving sub-structure.
12
+ * E.g. moving "Reports/Q1" into "Archive" renames each doc's folder prefix:
13
+ * Reports/Q1 → Archive/Q1
14
+ * Reports/Q1/Sub → Archive/Q1/Sub
15
+ */
16
+ import { type WorkspaceDocument } from '@arbidocs/react';
17
+ import { type ExplorerFolder } from '../../../files/folders';
18
+ type Doc = WorkspaceDocument;
19
+ export interface ConnectedMoveToFolderProps {
20
+ isOpen: boolean;
21
+ onClose: () => void;
22
+ selectedDocuments: Doc[];
23
+ /** When set, move the folder itself (with structure) instead of flat-moving selectedDocuments. */
24
+ folderToMove?: ExplorerFolder | null;
25
+ /** All workspace documents — needed to find folder contents in folder mode. */
26
+ documents?: Doc[];
27
+ /** Called after a successful file-mode move, e.g. to clear the now-stale selection. */
28
+ onMoved?: () => void;
29
+ }
30
+ export declare function ConnectedMoveToFolder({ isOpen, onClose, selectedDocuments, folderToMove, documents, onMoved, }: ConnectedMoveToFolderProps): import("react").JSX.Element;
31
+ export {};
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The workspace's files, bound to the session: the documents as a table, an explorer, a review one
3
+ * at a time, or the host's search; filters, the folder picker, saved views and density; the bulk
4
+ * bar; moving, AI review and deleting. Selection, the document in view and the conversation's
5
+ * documents are the session's (`useArbiSessionState`), the view and density are kept on this
6
+ * device. The host opens its viewer, its upload dialog and its own dialogs (export, production, a
7
+ * new draft), and may slot in its review card, fields manager, bulk tag editor and search.
8
+ */
9
+ import { type ComponentType, type ReactNode } from 'react';
10
+ import type { GridApi } from 'ag-grid-community';
11
+ import { type RelatedDocsMap } from '@arbidocs/react';
12
+ import type { GridViewProps } from '../../../files/GridView';
13
+ import type { GridDocument } from '../grid/documentColumns';
14
+ import type { UploadSource } from '../upload/ConnectedUploadDropzone';
15
+ type Doc = GridDocument;
16
+ /** What the host's review card is handed (review mode shows one document at a time). */
17
+ export interface FilesReviewCardProps {
18
+ currentDocument: Doc;
19
+ documents: Doc[];
20
+ gridId: string;
21
+ gridApi: GridApi<Doc>;
22
+ onNavigate: (docId: string) => void;
23
+ onOpenDocumentViewer: (docId?: string) => void;
24
+ onDeleteDocument: (docId: string) => void;
25
+ isDocumentViewerEnabled: boolean;
26
+ onReorderColumns: (newOrder: string[]) => void;
27
+ currentIndex: number;
28
+ onPrevious: () => void;
29
+ onNext: () => void;
30
+ }
31
+ /** An upload the host's dialog starts: files chosen here, or a source to pick from. */
32
+ export interface FilesUploadRequest {
33
+ source: UploadSource;
34
+ files?: File[];
35
+ folder?: string | null;
36
+ }
37
+ export interface ConnectedFilesPageProps {
38
+ /** In a dialog: the table only, with a Close footer. */
39
+ isModal?: boolean;
40
+ onClose?: () => void;
41
+ /** Open a document in the host's viewer; the open one again closes it. */
42
+ onToggleDocument: (docId?: string) => void;
43
+ /** Open the host's upload dialog. */
44
+ onUpload: (request: FilesUploadRequest) => void;
45
+ /** Open the host's processing details (a status was clicked). */
46
+ onStatusClick?: () => void;
47
+ /** Open the host's tags page. Absent: no Tags button. */
48
+ onOpenTags?: () => void;
49
+ /** Open the host's export dialog for the selection. */
50
+ onExport: () => void;
51
+ /** Open the host's production dialog. Absent: not offered. */
52
+ onProduce?: () => void;
53
+ /** The Add menu's host entries. */
54
+ onEmailWorkspace?: () => void;
55
+ onCreateNew?: () => void;
56
+ onTakePhoto?: () => void;
57
+ /** Beside the filters (e.g. the recently-deleted button). */
58
+ headerExtras?: ReactNode;
59
+ /** The workspace's icon in dialog titles. */
60
+ workspaceIcon?: ReactNode;
61
+ /** A free-text filter coming from elsewhere (the page's own box wins while it has text). */
62
+ externalSearchQuery?: string;
63
+ /** The host's search view (the "search" view mode). Absent: no search view. */
64
+ renderSearch?: () => ReactNode;
65
+ /** The host's review card (the "navigator" view mode). */
66
+ renderReviewCard?: (props: FilesReviewCardProps) => ReactNode;
67
+ /** The host's fields manager (columns and fields). */
68
+ renderFieldsManager?: (props: {
69
+ getGridApi: () => GridApi<Doc> | null;
70
+ onReorderColumns: (ids: string[], gridApi?: GridApi<Doc>) => void;
71
+ }) => ReactNode;
72
+ /** Above the bulk label and field editor (e.g. where the user is). */
73
+ bulkTagBreadcrumb?: ReactNode;
74
+ /** The host's own dialogs (export, production, a new draft, mailing the workspace). */
75
+ dialogs?: ReactNode;
76
+ /** The grid with the host's column-state persistence (default: kept on this device). */
77
+ GridComponent?: ComponentType<GridViewProps<Doc>>;
78
+ /** Changes whenever that grid state does (the saved-views menu recomputes). */
79
+ gridStateVersion?: unknown;
80
+ /** Told of the grid api (e.g. for end-to-end helpers). */
81
+ onGridApi?: (api: GridApi<Doc> | null) => void;
82
+ /** Told of the related-documents map (e.g. for the host's viewer). */
83
+ onRelatedDocsChange?: (map: RelatedDocsMap<Doc>) => void;
84
+ }
85
+ export declare function ConnectedFilesPage({ isModal, onClose, onToggleDocument, onUpload, onStatusClick, onOpenTags, onExport, onProduce, onEmailWorkspace, onCreateNew, onTakePhoto, headerExtras, workspaceIcon, externalSearchQuery, renderSearch, renderReviewCard, renderFieldsManager, bulkTagBreadcrumb, dialogs, GridComponent, gridStateVersion, onGridApi, onRelatedDocsChange, }: ConnectedFilesPageProps): import("react").JSX.Element;
86
+ export {};