@arbidocs/react 0.5.111 → 0.5.112

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 (983) hide show
  1. package/dist/account/client.js +96 -0
  2. package/dist/account/client.js.map +7 -0
  3. package/dist/account/delete.js +70 -0
  4. package/dist/account/delete.js.map +7 -0
  5. package/dist/account/didit.js +34 -0
  6. package/dist/account/didit.js.map +7 -0
  7. package/dist/account/dismissed-tips.js +33 -0
  8. package/dist/account/dismissed-tips.js.map +7 -0
  9. package/dist/account/email.js +84 -0
  10. package/dist/account/email.js.map +7 -0
  11. package/dist/account/entitlements.js +47 -0
  12. package/dist/account/entitlements.js.map +7 -0
  13. package/dist/account/identity.js +270 -0
  14. package/dist/account/identity.js.map +7 -0
  15. package/dist/account/index.js +93 -0
  16. package/dist/account/index.js.map +7 -0
  17. package/dist/account/notifications.js +59 -0
  18. package/dist/account/notifications.js.map +7 -0
  19. package/dist/account/password.js +103 -0
  20. package/dist/account/password.js.map +7 -0
  21. package/dist/account/profile.js +116 -0
  22. package/dist/account/profile.js.map +7 -0
  23. package/dist/account/recovery.js +13 -0
  24. package/dist/account/recovery.js.map +7 -0
  25. package/dist/account/relevance.js +82 -0
  26. package/dist/account/relevance.js.map +7 -0
  27. package/dist/account/sessions.js +37 -0
  28. package/dist/account/sessions.js.map +7 -0
  29. package/dist/account/settings.js +39 -0
  30. package/dist/account/settings.js.map +7 -0
  31. package/dist/account/table-views.js +16 -0
  32. package/dist/account/table-views.js.map +7 -0
  33. package/dist/ai/AiAnswer.js +83 -0
  34. package/dist/ai/AiAnswer.js.map +7 -0
  35. package/dist/ai/AiMarkdown.js +40 -0
  36. package/dist/ai/AiMarkdown.js.map +7 -0
  37. package/dist/ai/ArtifactCanvas.js +193 -0
  38. package/dist/ai/ArtifactCanvas.js.map +7 -0
  39. package/dist/ai/CitationRenderer.js +413 -0
  40. package/dist/ai/CitationRenderer.js.map +7 -0
  41. package/dist/{chunk-WL2Y2T47.js → ai/MarkdownRenderer.js} +35 -101
  42. package/dist/ai/MarkdownRenderer.js.map +7 -0
  43. package/dist/ai/MessageArtifactCard.js +75 -0
  44. package/dist/ai/MessageArtifactCard.js.map +7 -0
  45. package/dist/ai/PassageCard.js +79 -0
  46. package/dist/ai/PassageCard.js.map +7 -0
  47. package/dist/ai/engine.js +110 -0
  48. package/dist/ai/engine.js.map +7 -0
  49. package/dist/ai/index.js +63 -0
  50. package/dist/ai/index.js.map +7 -0
  51. package/dist/ai/markdown-base-components.js +37 -0
  52. package/dist/ai/markdown-base-components.js.map +7 -0
  53. package/dist/ai/markdown-streaming-context.js +6 -0
  54. package/dist/ai/markdown-streaming-context.js.map +7 -0
  55. package/dist/{chunk-VSCU7K4V.js → ai/normalize-citations.js} +12 -19
  56. package/dist/ai/normalize-citations.js.map +7 -0
  57. package/dist/ai/redline.js +41 -0
  58. package/dist/ai/redline.js.map +7 -0
  59. package/dist/ai/split-markdown-blocks.js +40 -0
  60. package/dist/ai/split-markdown-blocks.js.map +7 -0
  61. package/dist/{chunk-UW2SGTI5.js → ai/stored-markdown.js} +41 -93
  62. package/dist/ai/stored-markdown.js.map +7 -0
  63. package/dist/annotations/AnnotationPageOverlay.js +807 -0
  64. package/dist/annotations/AnnotationPageOverlay.js.map +7 -0
  65. package/dist/annotations/AnnotationToolbar.js +398 -0
  66. package/dist/annotations/AnnotationToolbar.js.map +7 -0
  67. package/dist/annotations/FreezeDialog.js +170 -0
  68. package/dist/annotations/FreezeDialog.js.map +7 -0
  69. package/dist/annotations/ProductionDialog.js +354 -0
  70. package/dist/annotations/ProductionDialog.js.map +7 -0
  71. package/dist/annotations/controller.js +49 -0
  72. package/dist/annotations/controller.js.map +7 -0
  73. package/dist/annotations/freeze/browser.js +21 -0
  74. package/dist/annotations/freeze/browser.js.map +7 -0
  75. package/dist/annotations/freeze/bundle.js +201 -0
  76. package/dist/annotations/freeze/bundle.js.map +7 -0
  77. package/dist/annotations/freeze/coords.js +37 -0
  78. package/dist/annotations/freeze/coords.js.map +7 -0
  79. package/dist/annotations/freeze/freeze.js +261 -0
  80. package/dist/annotations/freeze/freeze.js.map +7 -0
  81. package/dist/annotations/freeze/hash.js +28 -0
  82. package/dist/annotations/freeze/hash.js.map +7 -0
  83. package/dist/annotations/freeze/index-page.js +78 -0
  84. package/dist/annotations/freeze/index-page.js.map +7 -0
  85. package/dist/annotations/freeze/index.js +28 -22
  86. package/dist/annotations/freeze/index.js.map +7 -1
  87. package/dist/annotations/freeze/raster.js +208 -0
  88. package/dist/annotations/freeze/raster.js.map +7 -0
  89. package/dist/annotations/freeze/stamp.js +117 -0
  90. package/dist/annotations/freeze/stamp.js.map +7 -0
  91. package/dist/annotations/freeze/types.js +14 -0
  92. package/dist/annotations/freeze/types.js.map +7 -0
  93. package/dist/annotations/freeze/vector.js +283 -0
  94. package/dist/annotations/freeze/vector.js.map +7 -0
  95. package/dist/annotations/geometry.js +81 -0
  96. package/dist/annotations/geometry.js.map +7 -0
  97. package/dist/annotations/index.js +125 -6
  98. package/dist/annotations/index.js.map +7 -1
  99. package/dist/annotations/merge.js +53 -0
  100. package/dist/annotations/merge.js.map +7 -0
  101. package/dist/{chunk-T3USOSVN.js → annotations/model.js} +23 -16
  102. package/dist/annotations/model.js.map +7 -0
  103. package/dist/annotations/overlay-geometry.js +41 -0
  104. package/dist/annotations/overlay-geometry.js.map +7 -0
  105. package/dist/annotations/redaction-log.js +33 -0
  106. package/dist/annotations/redaction-log.js.map +7 -0
  107. package/dist/annotations/selection-marks.js +122 -0
  108. package/dist/annotations/selection-marks.js.map +7 -0
  109. package/dist/annotations/state.js +140 -0
  110. package/dist/annotations/state.js.map +7 -0
  111. package/dist/annotations/store.js +49 -0
  112. package/dist/annotations/store.js.map +7 -0
  113. package/dist/annotations/useAnnotationLayer.js +306 -0
  114. package/dist/annotations/useAnnotationLayer.js.map +7 -0
  115. package/dist/annotations/useAnnotationShortcuts.js +31 -0
  116. package/dist/annotations/useAnnotationShortcuts.js.map +7 -0
  117. package/dist/annotations/useTextSelectionMarks.js +100 -0
  118. package/dist/annotations/useTextSelectionMarks.js.map +7 -0
  119. package/dist/artifacts/artifact-kind.js +19 -0
  120. package/dist/artifacts/artifact-kind.js.map +7 -0
  121. package/dist/artifacts/index.js +89 -571
  122. package/dist/artifacts/index.js.map +7 -1
  123. package/dist/{chunk-WUTL62MC.js → artifacts/normalize-markdown.js} +12 -14
  124. package/dist/artifacts/normalize-markdown.js.map +7 -0
  125. package/dist/artifacts/redline-core.js +12 -3
  126. package/dist/artifacts/redline-core.js.map +7 -1
  127. package/dist/{chunk-74N436VK.js → artifacts/redline-diff.js} +10 -9
  128. package/dist/artifacts/redline-diff.js.map +7 -0
  129. package/dist/artifacts/redline-engine.js +14 -0
  130. package/dist/artifacts/redline-engine.js.map +7 -0
  131. package/dist/artifacts/renderArtifactMarkdown.js +9 -0
  132. package/dist/artifacts/renderArtifactMarkdown.js.map +7 -0
  133. package/dist/artifacts/useArtifactEditSession.js +183 -0
  134. package/dist/artifacts/useArtifactEditSession.js.map +7 -0
  135. package/dist/artifacts/useArtifactSession.js +173 -0
  136. package/dist/artifacts/useArtifactSession.js.map +7 -0
  137. package/dist/artifacts/useArtifactSource.js +16 -0
  138. package/dist/artifacts/useArtifactSource.js.map +7 -0
  139. package/dist/artifacts/useArtifactText.js +78 -0
  140. package/dist/artifacts/useArtifactText.js.map +7 -0
  141. package/dist/artifacts/useRedline.js +65 -0
  142. package/dist/artifacts/useRedline.js.map +7 -0
  143. package/dist/artifacts/useStreamedArtifact.js +74 -0
  144. package/dist/artifacts/useStreamedArtifact.js.map +7 -0
  145. package/dist/artifacts/versions.js +68 -0
  146. package/dist/artifacts/versions.js.map +7 -0
  147. package/dist/billing.js +200 -0
  148. package/dist/billing.js.map +7 -0
  149. package/dist/boot-timeout.js +19 -0
  150. package/dist/boot-timeout.js.map +7 -0
  151. package/dist/calendar/accounts.js +213 -0
  152. package/dist/calendar/accounts.js.map +7 -0
  153. package/dist/calendar/hooks.js +409 -0
  154. package/dist/calendar/hooks.js.map +7 -0
  155. package/dist/calendar/index.js +31 -0
  156. package/dist/calendar/index.js.map +7 -0
  157. package/dist/calendar/keys.js +5 -0
  158. package/dist/calendar/keys.js.map +7 -0
  159. package/dist/calendar/offline/outbox.js +231 -0
  160. package/dist/calendar/offline/outbox.js.map +7 -0
  161. package/dist/calendar/offline/runtime.js +109 -0
  162. package/dist/calendar/offline/runtime.js.map +7 -0
  163. package/dist/calendar/offline/support.js +41 -0
  164. package/dist/calendar/offline/support.js.map +7 -0
  165. package/dist/calendar/support.js +34 -0
  166. package/dist/calendar/support.js.map +7 -0
  167. package/dist/calls/actions.js +226 -0
  168. package/dist/calls/actions.js.map +7 -0
  169. package/dist/calls/events.js +138 -0
  170. package/dist/calls/events.js.map +7 -0
  171. package/dist/calls/gate.js +19 -0
  172. package/dist/calls/gate.js.map +7 -0
  173. package/dist/calls/hooks.js +115 -0
  174. package/dist/calls/hooks.js.map +7 -0
  175. package/dist/calls/in-call-chat.js +132 -0
  176. package/dist/calls/in-call-chat.js.map +7 -0
  177. package/dist/calls/index.js +24 -0
  178. package/dist/calls/index.js.map +7 -0
  179. package/dist/calls/keys.js +17 -0
  180. package/dist/calls/keys.js.map +7 -0
  181. package/dist/calls/livekit/index.js +6 -958
  182. package/dist/calls/livekit/index.js.map +7 -1
  183. package/dist/calls/livekit/room.js +98 -0
  184. package/dist/calls/livekit/room.js.map +7 -0
  185. package/dist/calls/livekit/useCallRecorder.js +219 -0
  186. package/dist/calls/livekit/useCallRecorder.js.map +7 -0
  187. package/dist/calls/livekit/useCallTranscriber.js +309 -0
  188. package/dist/calls/livekit/useCallTranscriber.js.map +7 -0
  189. package/dist/calls/livekit/useHostMuteNotice.js +29 -0
  190. package/dist/calls/livekit/useHostMuteNotice.js.map +7 -0
  191. package/dist/calls/livekit/useInCallChat.js +161 -0
  192. package/dist/calls/livekit/useInCallChat.js.map +7 -0
  193. package/dist/calls/livekit/useWebinar.js +239 -0
  194. package/dist/calls/livekit/useWebinar.js.map +7 -0
  195. package/dist/calls/meeting-chat.js +149 -0
  196. package/dist/calls/meeting-chat.js.map +7 -0
  197. package/dist/calls/moderation.js +50 -0
  198. package/dist/calls/moderation.js.map +7 -0
  199. package/dist/calls/open-meeting-chat.js +29 -0
  200. package/dist/calls/open-meeting-chat.js.map +7 -0
  201. package/dist/calls/read-only.js +24 -0
  202. package/dist/calls/read-only.js.map +7 -0
  203. package/dist/calls/recording-media.js +218 -0
  204. package/dist/calls/recording-media.js.map +7 -0
  205. package/dist/calls/recording-playback.js +260 -0
  206. package/dist/calls/recording-playback.js.map +7 -0
  207. package/dist/calls/recording.js +268 -0
  208. package/dist/calls/recording.js.map +7 -0
  209. package/dist/calls/save-to-thread.js +80 -0
  210. package/dist/calls/save-to-thread.js.map +7 -0
  211. package/dist/calls/session.js +134 -0
  212. package/dist/calls/session.js.map +7 -0
  213. package/dist/calls/transcript-format.js +147 -0
  214. package/dist/calls/transcript-format.js.map +7 -0
  215. package/dist/calls/transcription.js +101 -0
  216. package/dist/calls/transcription.js.map +7 -0
  217. package/dist/calls/webinar.js +71 -0
  218. package/dist/calls/webinar.js.map +7 -0
  219. package/dist/charge-watch.js +71 -0
  220. package/dist/charge-watch.js.map +7 -0
  221. package/dist/chat/ChatBubble.js +146 -0
  222. package/dist/chat/ChatBubble.js.map +7 -0
  223. package/dist/chat/ConversationScope.js +30 -0
  224. package/dist/chat/ConversationScope.js.map +7 -0
  225. package/dist/chat/active-config.js +20 -0
  226. package/dist/chat/active-config.js.map +7 -0
  227. package/dist/chat/agent-chat-owner.js +25 -0
  228. package/dist/chat/agent-chat-owner.js.map +7 -0
  229. package/dist/chat/chat-artifacts.js +64 -0
  230. package/dist/chat/chat-artifacts.js.map +7 -0
  231. package/dist/chat/citations.js +32 -0
  232. package/dist/chat/citations.js.map +7 -0
  233. package/dist/chat/config-model.js +10 -0
  234. package/dist/chat/config-model.js.map +7 -0
  235. package/dist/chat/conversation-cache.js +676 -0
  236. package/dist/chat/conversation-cache.js.map +7 -0
  237. package/dist/chat/conversation-events.js +57 -0
  238. package/dist/chat/conversation-events.js.map +7 -0
  239. package/dist/chat/conversation-mentions.js +58 -0
  240. package/dist/chat/conversation-mentions.js.map +7 -0
  241. package/dist/chat/conversation-workspace.js +58 -0
  242. package/dist/chat/conversation-workspace.js.map +7 -0
  243. package/dist/chat/mentions.js +116 -0
  244. package/dist/chat/mentions.js.map +7 -0
  245. package/dist/chat/open-document.js +106 -0
  246. package/dist/chat/open-document.js.map +7 -0
  247. package/dist/chat/orphaned.js +44 -0
  248. package/dist/chat/orphaned.js.map +7 -0
  249. package/dist/chat/pendingFirstTurn.js +30 -0
  250. package/dist/chat/pendingFirstTurn.js.map +7 -0
  251. package/dist/chat/reply-target.js +12 -0
  252. package/dist/chat/reply-target.js.map +7 -0
  253. package/dist/chat/run-finished.js +28 -0
  254. package/dist/chat/run-finished.js.map +7 -0
  255. package/dist/chat/run-state.js +91 -0
  256. package/dist/chat/run-state.js.map +7 -0
  257. package/dist/chat/stream-handlers.js +419 -0
  258. package/dist/chat/stream-handlers.js.map +7 -0
  259. package/dist/chat/thread-binding.js +76 -0
  260. package/dist/chat/thread-binding.js.map +7 -0
  261. package/dist/chat/thread-document.js +53 -0
  262. package/dist/chat/thread-document.js.map +7 -0
  263. package/dist/chat/turn-control.js +79 -0
  264. package/dist/chat/turn-control.js.map +7 -0
  265. package/dist/chat/useAgentRunControl.js +36 -0
  266. package/dist/chat/useAgentRunControl.js.map +7 -0
  267. package/dist/chat/useAnswerAgentQuestion.js +19 -0
  268. package/dist/chat/useAnswerAgentQuestion.js.map +7 -0
  269. package/dist/chat/useAskAgain.js +32 -0
  270. package/dist/chat/useAskAgain.js.map +7 -0
  271. package/dist/chat/useAutoSendDraft.js +17 -0
  272. package/dist/chat/useAutoSendDraft.js.map +7 -0
  273. package/dist/chat/useBranchNavigation.js +97 -0
  274. package/dist/chat/useBranchNavigation.js.map +7 -0
  275. package/dist/chat/useConnectRunStream.js +169 -0
  276. package/dist/chat/useConnectRunStream.js.map +7 -0
  277. package/dist/chat/useConversation.js +431 -0
  278. package/dist/chat/useConversation.js.map +7 -0
  279. package/dist/chat/useConversationActions.js +662 -0
  280. package/dist/chat/useConversationActions.js.map +7 -0
  281. package/dist/chat/useConversationData.js +143 -0
  282. package/dist/chat/useConversationData.js.map +7 -0
  283. package/dist/chat/useConversationDocuments.js +41 -0
  284. package/dist/chat/useConversationDocuments.js.map +7 -0
  285. package/dist/chat/useConversationSettings.js +78 -0
  286. package/dist/chat/useConversationSettings.js.map +7 -0
  287. package/dist/chat/useConversationTurn.js +31 -0
  288. package/dist/chat/useConversationTurn.js.map +7 -0
  289. package/dist/chat/useConversationWorkspace.js +12 -0
  290. package/dist/chat/useConversationWorkspace.js.map +7 -0
  291. package/dist/chat/useDeleteMessage.js +15 -0
  292. package/dist/chat/useDeleteMessage.js.map +7 -0
  293. package/dist/chat/useDocumentAutoAdd.js +73 -0
  294. package/dist/chat/useDocumentAutoAdd.js.map +7 -0
  295. package/dist/chat/useMessageTimer.js +39 -0
  296. package/dist/chat/useMessageTimer.js.map +7 -0
  297. package/dist/chat/useThinkingContent.js +67 -0
  298. package/dist/chat/useThinkingContent.js.map +7 -0
  299. package/dist/chat/useThreadDocument.js +61 -0
  300. package/dist/chat/useThreadDocument.js.map +7 -0
  301. package/dist/chat/workflow-run-titles.js +50 -0
  302. package/dist/chat/workflow-run-titles.js.map +7 -0
  303. package/dist/{chunk-Z3W4XFWB.cjs → chunk-C72FSQUE.cjs} +3 -3
  304. package/dist/{chunk-Z3W4XFWB.cjs.map → chunk-C72FSQUE.cjs.map} +1 -1
  305. package/dist/{chunk-LBAG7KL7.cjs → chunk-FQVNZCTD.cjs} +3 -3
  306. package/dist/{chunk-LBAG7KL7.cjs.map → chunk-FQVNZCTD.cjs.map} +1 -1
  307. package/dist/{chunk-DI5KSVKY.cjs → chunk-UDDJIUHJ.cjs} +3 -3
  308. package/dist/{chunk-DI5KSVKY.cjs.map → chunk-UDDJIUHJ.cjs.map} +1 -1
  309. package/dist/config/config-hooks.js +209 -0
  310. package/dist/config/config-hooks.js.map +7 -0
  311. package/dist/connectivity.js +72 -0
  312. package/dist/connectivity.js.map +7 -0
  313. package/dist/connectors/hooks.js +263 -0
  314. package/dist/connectors/hooks.js.map +7 -0
  315. package/dist/connectors/index.js +28 -0
  316. package/dist/connectors/index.js.map +7 -0
  317. package/dist/contacts.js +100 -0
  318. package/dist/contacts.js.map +7 -0
  319. package/dist/conversation-list.js +65 -0
  320. package/dist/conversation-list.js.map +7 -0
  321. package/dist/databases.js +195 -0
  322. package/dist/databases.js.map +7 -0
  323. package/dist/datasets/aggregate.js +281 -0
  324. package/dist/datasets/aggregate.js.map +7 -0
  325. package/dist/datasets/index.js +122 -0
  326. package/dist/datasets/index.js.map +7 -0
  327. package/dist/datasets/members.js +27 -0
  328. package/dist/datasets/members.js.map +7 -0
  329. package/dist/datasets/panel.js +44 -0
  330. package/dist/datasets/panel.js.map +7 -0
  331. package/dist/datasets/registry.js +47 -0
  332. package/dist/datasets/registry.js.map +7 -0
  333. package/dist/datasets/rows-source.js +44 -0
  334. package/dist/datasets/rows-source.js.map +7 -0
  335. package/dist/datasets/sources/activity.js +83 -0
  336. package/dist/datasets/sources/activity.js.map +7 -0
  337. package/dist/datasets/sources/conversations.js +74 -0
  338. package/dist/datasets/sources/conversations.js.map +7 -0
  339. package/dist/datasets/sources/database.js +209 -0
  340. package/dist/datasets/sources/database.js.map +7 -0
  341. package/dist/datasets/sources/documents.js +93 -0
  342. package/dist/datasets/sources/documents.js.map +7 -0
  343. package/dist/datasets/sources/facts.js +56 -0
  344. package/dist/datasets/sources/facts.js.map +7 -0
  345. package/dist/datasets/sources/projects.js +117 -0
  346. package/dist/datasets/sources/projects.js.map +7 -0
  347. package/dist/datasets/sources/tags.js +67 -0
  348. package/dist/datasets/sources/tags.js.map +7 -0
  349. package/dist/datasets/sources/usage.js +268 -0
  350. package/dist/datasets/sources/usage.js.map +7 -0
  351. package/dist/datasets/sources/workflows.js +91 -0
  352. package/dist/datasets/sources/workflows.js.map +7 -0
  353. package/dist/datasets/sources/workspaces.js +67 -0
  354. package/dist/datasets/sources/workspaces.js.map +7 -0
  355. package/dist/datasets/store.js +194 -0
  356. package/dist/datasets/store.js.map +7 -0
  357. package/dist/datasets/types.js +14 -0
  358. package/dist/datasets/types.js.map +7 -0
  359. package/dist/directmessages/ConversationList.js +148 -0
  360. package/dist/directmessages/ConversationList.js.map +7 -0
  361. package/dist/directmessages/DateSeparator.js +8 -0
  362. package/dist/directmessages/DateSeparator.js.map +7 -0
  363. package/dist/directmessages/DmAvatar.js +29 -0
  364. package/dist/directmessages/DmAvatar.js.map +7 -0
  365. package/dist/directmessages/DmComposer.js +201 -0
  366. package/dist/directmessages/DmComposer.js.map +7 -0
  367. package/dist/directmessages/arrivals.js +29 -0
  368. package/dist/directmessages/arrivals.js.map +7 -0
  369. package/dist/directmessages/chat-cache.js +192 -0
  370. package/dist/directmessages/chat-cache.js.map +7 -0
  371. package/dist/directmessages/grouping.js +26 -0
  372. package/dist/directmessages/grouping.js.map +7 -0
  373. package/dist/directmessages/index.js +81 -0
  374. package/dist/directmessages/index.js.map +7 -0
  375. package/dist/directmessages/useChats.js +266 -0
  376. package/dist/directmessages/useChats.js.map +7 -0
  377. package/dist/directmessages/utils.js +23 -0
  378. package/dist/directmessages/utils.js.map +7 -0
  379. package/dist/document-tools/can-annotate.js +7 -0
  380. package/dist/document-tools/can-annotate.js.map +7 -0
  381. package/dist/document-tools/core.cjs +80 -80
  382. package/dist/document-tools/core.js +218 -12
  383. package/dist/document-tools/core.js.map +7 -1
  384. package/dist/document-tools/document-pdf.js +76 -0
  385. package/dist/document-tools/document-pdf.js.map +7 -0
  386. package/dist/document-tools/environment.js +136 -0
  387. package/dist/document-tools/environment.js.map +7 -0
  388. package/dist/document-tools/file-shares.js +112 -0
  389. package/dist/document-tools/file-shares.js.map +7 -0
  390. package/dist/document-tools/frozen-copy.js +27 -0
  391. package/dist/document-tools/frozen-copy.js.map +7 -0
  392. package/dist/document-tools/index.cjs +80 -80
  393. package/dist/document-tools/index.js +26 -148
  394. package/dist/document-tools/index.js.map +7 -1
  395. package/dist/document-tools/markup-download.js +51 -0
  396. package/dist/document-tools/markup-download.js.map +7 -0
  397. package/dist/document-tools/markup-store.js +138 -0
  398. package/dist/document-tools/markup-store.js.map +7 -0
  399. package/dist/document-tools/markup-transfer.js +88 -0
  400. package/dist/document-tools/markup-transfer.js.map +7 -0
  401. package/dist/document-tools/production.js +147 -0
  402. package/dist/document-tools/production.js.map +7 -0
  403. package/dist/document-tools/saved-signature.js +90 -0
  404. package/dist/document-tools/saved-signature.js.map +7 -0
  405. package/dist/document-tools/signature-requests.js +310 -0
  406. package/dist/document-tools/signature-requests.js.map +7 -0
  407. package/dist/document-tools/signing.js +127 -0
  408. package/dist/document-tools/signing.js.map +7 -0
  409. package/dist/document-tools/useDocumentBytes.js +38 -0
  410. package/dist/document-tools/useDocumentBytes.js.map +7 -0
  411. package/dist/document-tools/useDocumentMarkup.js +154 -0
  412. package/dist/document-tools/useDocumentMarkup.js.map +7 -0
  413. package/dist/document-tools/useIsOnline.js +13 -0
  414. package/dist/document-tools/useIsOnline.js.map +7 -0
  415. package/dist/document-tools/verification.js +60 -0
  416. package/dist/document-tools/verification.js.map +7 -0
  417. package/dist/documents/DocumentReview.js +220 -0
  418. package/dist/documents/DocumentReview.js.map +7 -0
  419. package/dist/documents/DraftTitleControls.js +41 -0
  420. package/dist/documents/DraftTitleControls.js.map +7 -0
  421. package/dist/documents/InlineMicButton.js +90 -0
  422. package/dist/documents/InlineMicButton.js.map +7 -0
  423. package/dist/documents/MicRecordingOverlay.js +29 -0
  424. package/dist/documents/MicRecordingOverlay.js.map +7 -0
  425. package/dist/documents/MicWaveformIndicator.js +68 -0
  426. package/dist/documents/MicWaveformIndicator.js.map +7 -0
  427. package/dist/documents/PhotoCapture.js +120 -0
  428. package/dist/documents/PhotoCapture.js.map +7 -0
  429. package/dist/documents/VideoCapture.js +129 -0
  430. package/dist/documents/VideoCapture.js.map +7 -0
  431. package/dist/documents/VoiceNoteRecorder.js +166 -0
  432. package/dist/documents/VoiceNoteRecorder.js.map +7 -0
  433. package/dist/documents/audio-segmenter.js +63 -0
  434. package/dist/documents/audio-segmenter.js.map +7 -0
  435. package/dist/documents/capture-frame.js +21 -0
  436. package/dist/documents/capture-frame.js.map +7 -0
  437. package/dist/documents/chunked-recorder.js +190 -0
  438. package/dist/documents/chunked-recorder.js.map +7 -0
  439. package/dist/documents/document-download.js +53 -0
  440. package/dist/documents/document-download.js.map +7 -0
  441. package/dist/documents/document-fields.js +109 -0
  442. package/dist/documents/document-fields.js.map +7 -0
  443. package/dist/documents/documents-cache.js +110 -0
  444. package/dist/documents/documents-cache.js.map +7 -0
  445. package/dist/documents/documents-data.js +128 -0
  446. package/dist/documents/documents-data.js.map +7 -0
  447. package/dist/documents/documents-loader.js +113 -0
  448. package/dist/documents/documents-loader.js.map +7 -0
  449. package/dist/documents/documents-writes.js +448 -0
  450. package/dist/documents/documents-writes.js.map +7 -0
  451. package/dist/documents/format-elapsed.js +10 -0
  452. package/dist/documents/format-elapsed.js.map +7 -0
  453. package/dist/documents/has-video-track.js +26 -0
  454. package/dist/documents/has-video-track.js.map +7 -0
  455. package/dist/documents/index.js +266 -0
  456. package/dist/documents/index.js.map +7 -0
  457. package/dist/documents/media-error.js +18 -0
  458. package/dist/documents/media-error.js.map +7 -0
  459. package/dist/documents/offline-documents.js +160 -0
  460. package/dist/documents/offline-documents.js.map +7 -0
  461. package/dist/documents/pending-sync.js +210 -0
  462. package/dist/documents/pending-sync.js.map +7 -0
  463. package/dist/documents/processing-live.js +122 -0
  464. package/dist/documents/processing-live.js.map +7 -0
  465. package/dist/documents/processing-order.js +59 -0
  466. package/dist/documents/processing-order.js.map +7 -0
  467. package/dist/documents/processing-settle.js +21 -0
  468. package/dist/documents/processing-settle.js.map +7 -0
  469. package/dist/documents/related-documents.js +133 -0
  470. package/dist/documents/related-documents.js.map +7 -0
  471. package/dist/documents/support.js +29 -0
  472. package/dist/documents/support.js.map +7 -0
  473. package/dist/documents/upload-files.js +169 -0
  474. package/dist/documents/upload-files.js.map +7 -0
  475. package/dist/documents/useAudioRecorder.js +315 -0
  476. package/dist/documents/useAudioRecorder.js.map +7 -0
  477. package/dist/documents/useCameraStream.js +35 -0
  478. package/dist/documents/useCameraStream.js.map +7 -0
  479. package/dist/documents/useDocumentThumbnails.js +71 -0
  480. package/dist/documents/useDocumentThumbnails.js.map +7 -0
  481. package/dist/documents/useDownloadDocuments.js +90 -0
  482. package/dist/documents/useDownloadDocuments.js.map +7 -0
  483. package/dist/documents/usePassageQuotes.js +37 -0
  484. package/dist/documents/usePassageQuotes.js.map +7 -0
  485. package/dist/documents/useUploadFiles.js +165 -0
  486. package/dist/documents/useUploadFiles.js.map +7 -0
  487. package/dist/documents/useUploadFromUrls.js +63 -0
  488. package/dist/documents/useUploadFromUrls.js.map +7 -0
  489. package/dist/documents/useVideoRecorder.js +62 -0
  490. package/dist/documents/useVideoRecorder.js.map +7 -0
  491. package/dist/entities/AgentMarkers.js +61 -0
  492. package/dist/entities/AgentMarkers.js.map +7 -0
  493. package/dist/entities/DocumentEntity.js +125 -0
  494. package/dist/entities/DocumentEntity.js.map +7 -0
  495. package/dist/entities/EntityPill.js +250 -0
  496. package/dist/entities/EntityPill.js.map +7 -0
  497. package/dist/entities/ProjectEntity.js +61 -0
  498. package/dist/entities/ProjectEntity.js.map +7 -0
  499. package/dist/entities/ShieldIcon.js +49 -0
  500. package/dist/entities/ShieldIcon.js.map +7 -0
  501. package/dist/entities/TagEntity.js +79 -0
  502. package/dist/entities/TagEntity.js.map +7 -0
  503. package/dist/entities/ThreadVisibilityIcon.js +15 -0
  504. package/dist/entities/ThreadVisibilityIcon.js.map +7 -0
  505. package/dist/entities/UserEntity.js +211 -0
  506. package/dist/entities/UserEntity.js.map +7 -0
  507. package/dist/entities/VerifiedBadge.js +19 -0
  508. package/dist/entities/VerifiedBadge.js.map +7 -0
  509. package/dist/entities/agent-avatar-colors.js +26 -0
  510. package/dist/entities/agent-avatar-colors.js.map +7 -0
  511. package/dist/entities/colors.js +64 -0
  512. package/dist/entities/colors.js.map +7 -0
  513. package/dist/entities/file-type.js +151 -0
  514. package/dist/entities/file-type.js.map +7 -0
  515. package/dist/entities/index.js +100 -0
  516. package/dist/entities/index.js.map +7 -0
  517. package/dist/entities/media-type.js +61 -0
  518. package/dist/entities/media-type.js.map +7 -0
  519. package/dist/entities/registry.js +385 -0
  520. package/dist/entities/registry.js.map +7 -0
  521. package/dist/entities/status.js +43 -0
  522. package/dist/entities/status.js.map +7 -0
  523. package/dist/entities/tag-kinds.js +23 -0
  524. package/dist/entities/tag-kinds.js.map +7 -0
  525. package/dist/entities/tag-types.js +44 -0
  526. package/dist/entities/tag-types.js.map +7 -0
  527. package/dist/entities/vocabulary.js +12 -0
  528. package/dist/entities/vocabulary.js.map +7 -0
  529. package/dist/entity-extraction.js +25 -0
  530. package/dist/entity-extraction.js.map +7 -0
  531. package/dist/facts-search.js +57 -0
  532. package/dist/facts-search.js.map +7 -0
  533. package/dist/facts.js +69 -0
  534. package/dist/facts.js.map +7 -0
  535. package/dist/hooks.js +320 -0
  536. package/dist/hooks.js.map +7 -0
  537. package/dist/host/ArbiHost.js +24 -0
  538. package/dist/host/ArbiHost.js.map +7 -0
  539. package/dist/host/assistant-copy.js +54 -0
  540. package/dist/host/assistant-copy.js.map +7 -0
  541. package/dist/host/config.js +9 -0
  542. package/dist/host/config.js.map +7 -0
  543. package/dist/host/context.js +10 -0
  544. package/dist/host/context.js.map +7 -0
  545. package/dist/host/features.js +144 -0
  546. package/dist/host/features.js.map +7 -0
  547. package/dist/host/index.js +12 -0
  548. package/dist/host/index.js.map +7 -0
  549. package/dist/{chunk-DPYBZDJB.js → host/merge.js} +7 -7
  550. package/dist/host/merge.js.map +7 -0
  551. package/dist/house-template.js +40 -0
  552. package/dist/house-template.js.map +7 -0
  553. package/dist/icons/AppleIcon.js +25 -0
  554. package/dist/icons/AppleIcon.js.map +7 -0
  555. package/dist/icons/ArbiBotHeadIcon.js +46 -0
  556. package/dist/icons/ArbiBotHeadIcon.js.map +7 -0
  557. package/dist/icons/ArbiIcon.js +24 -0
  558. package/dist/icons/ArbiIcon.js.map +7 -0
  559. package/dist/icons/AudIcon.js +56 -0
  560. package/dist/icons/AudIcon.js.map +7 -0
  561. package/dist/icons/ClaudeIcon.js +28 -0
  562. package/dist/icons/ClaudeIcon.js.map +7 -0
  563. package/dist/icons/DocIcon.js +56 -0
  564. package/dist/icons/DocIcon.js.map +7 -0
  565. package/dist/icons/EmlIcon.js +57 -0
  566. package/dist/icons/EmlIcon.js.map +7 -0
  567. package/dist/icons/FireworksIcon.js +47 -0
  568. package/dist/icons/FireworksIcon.js.map +7 -0
  569. package/dist/icons/GeminiIcon.js +37 -0
  570. package/dist/icons/GeminiIcon.js.map +7 -0
  571. package/dist/icons/GitHubIcon.js +32 -0
  572. package/dist/icons/GitHubIcon.js.map +7 -0
  573. package/dist/icons/GoogleIcon.js +53 -0
  574. package/dist/icons/GoogleIcon.js.map +7 -0
  575. package/dist/icons/HtmlIcon.js +56 -0
  576. package/dist/icons/HtmlIcon.js.map +7 -0
  577. package/dist/icons/ImgIcon.js +56 -0
  578. package/dist/icons/ImgIcon.js.map +7 -0
  579. package/dist/icons/LinkedInIcon.js +25 -0
  580. package/dist/icons/LinkedInIcon.js.map +7 -0
  581. package/dist/icons/OpenAIIcon.js +28 -0
  582. package/dist/icons/OpenAIIcon.js.map +7 -0
  583. package/dist/icons/PdfIcon.js +56 -0
  584. package/dist/icons/PdfIcon.js.map +7 -0
  585. package/dist/icons/ProviderIcon.js +42 -0
  586. package/dist/icons/ProviderIcon.js.map +7 -0
  587. package/dist/icons/TxtIcon.js +56 -0
  588. package/dist/icons/TxtIcon.js.map +7 -0
  589. package/dist/icons/VidIcon.js +56 -0
  590. package/dist/icons/VidIcon.js.map +7 -0
  591. package/dist/icons/XlsIcon.js +56 -0
  592. package/dist/icons/XlsIcon.js.map +7 -0
  593. package/dist/icons/arbi-mark.js +5 -0
  594. package/dist/icons/arbi-mark.js.map +7 -0
  595. package/dist/icons/colors.js +31 -0
  596. package/dist/icons/colors.js.map +7 -0
  597. package/dist/icons/file-type.js +105 -0
  598. package/dist/icons/file-type.js.map +7 -0
  599. package/dist/icons/index.js +55 -0
  600. package/dist/icons/index.js.map +7 -0
  601. package/dist/imagecrop/ImageCropModal.js +56 -0
  602. package/dist/imagecrop/ImageCropModal.js.map +7 -0
  603. package/dist/imagecrop/ImageCropper.js +100 -0
  604. package/dist/imagecrop/ImageCropper.js.map +7 -0
  605. package/dist/imagecrop/cropImage.js +43 -0
  606. package/dist/imagecrop/cropImage.js.map +7 -0
  607. package/dist/imagecrop/index.js +13 -0
  608. package/dist/imagecrop/index.js.map +7 -0
  609. package/dist/index.cjs +282 -282
  610. package/dist/index.js +702 -17116
  611. package/dist/index.js.map +7 -1
  612. package/dist/{chunk-SSXFVWCT.js → lazy-chunk.js} +8 -8
  613. package/dist/lazy-chunk.js.map +7 -0
  614. package/dist/lib/collision-padding.js +13 -0
  615. package/dist/lib/collision-padding.js.map +7 -0
  616. package/dist/lib/format-friendly-date.js +55 -0
  617. package/dist/lib/format-friendly-date.js.map +7 -0
  618. package/dist/lib/format-relative-time.js +52 -0
  619. package/dist/lib/format-relative-time.js.map +7 -0
  620. package/dist/lib/markdown-to-text.js +35 -0
  621. package/dist/lib/markdown-to-text.js.map +7 -0
  622. package/dist/lib/toast-interaction.js +9 -0
  623. package/dist/lib/toast-interaction.js.map +7 -0
  624. package/dist/lib/utils.js +9 -0
  625. package/dist/lib/utils.js.map +7 -0
  626. package/dist/mail/client.js +103 -0
  627. package/dist/mail/client.js.map +7 -0
  628. package/dist/mail/document-attachment.js +38 -0
  629. package/dist/mail/document-attachment.js.map +7 -0
  630. package/dist/mail/filing.js +132 -0
  631. package/dist/mail/filing.js.map +7 -0
  632. package/dist/mail/hooks.js +393 -0
  633. package/dist/mail/hooks.js.map +7 -0
  634. package/dist/mail/index.js +120 -0
  635. package/dist/mail/index.js.map +7 -0
  636. package/dist/mail/offline/changes.js +258 -0
  637. package/dist/mail/offline/changes.js.map +7 -0
  638. package/dist/mail/offline/confirm-sign-out.js +37 -0
  639. package/dist/mail/offline/confirm-sign-out.js.map +7 -0
  640. package/dist/mail/offline/crypto.js +26 -0
  641. package/dist/mail/offline/crypto.js.map +7 -0
  642. package/dist/mail/offline/drafts.js +69 -0
  643. package/dist/mail/offline/drafts.js.map +7 -0
  644. package/dist/mail/offline/hooks.js +104 -0
  645. package/dist/mail/offline/hooks.js.map +7 -0
  646. package/dist/mail/offline/index.js +48 -0
  647. package/dist/mail/offline/index.js.map +7 -0
  648. package/dist/mail/offline/live.js +233 -0
  649. package/dist/mail/offline/live.js.map +7 -0
  650. package/dist/mail/offline/mailbox.js +191 -0
  651. package/dist/mail/offline/mailbox.js.map +7 -0
  652. package/dist/mail/offline/outbox.js +167 -0
  653. package/dist/mail/offline/outbox.js.map +7 -0
  654. package/dist/mail/offline/reads.js +159 -0
  655. package/dist/mail/offline/reads.js.map +7 -0
  656. package/dist/mail/offline/runtime.js +100 -0
  657. package/dist/mail/offline/runtime.js.map +7 -0
  658. package/dist/mail/offline/settings.js +84 -0
  659. package/dist/mail/offline/settings.js.map +7 -0
  660. package/dist/mail/offline/store.js +29 -0
  661. package/dist/mail/offline/store.js.map +7 -0
  662. package/dist/mail/offline/sync.js +251 -0
  663. package/dist/mail/offline/sync.js.map +7 -0
  664. package/dist/mail/offline/wipe.js +19 -0
  665. package/dist/mail/offline/wipe.js.map +7 -0
  666. package/dist/mail/thread-keys.js +53 -0
  667. package/dist/mail/thread-keys.js.map +7 -0
  668. package/dist/mail/threads.js +71 -0
  669. package/dist/mail/threads.js.map +7 -0
  670. package/dist/mail/useMailClient.js +42 -0
  671. package/dist/mail/useMailClient.js.map +7 -0
  672. package/dist/model-connections.js +58 -0
  673. package/dist/model-connections.js.map +7 -0
  674. package/dist/notifications/ActivityFeed.js +70 -0
  675. package/dist/notifications/ActivityFeed.js.map +7 -0
  676. package/dist/notifications/NotificationBell.js +200 -0
  677. package/dist/notifications/NotificationBell.js.map +7 -0
  678. package/dist/notifications/Toaster.js +24 -0
  679. package/dist/notifications/Toaster.js.map +7 -0
  680. package/dist/notifications/activity-types.js +65 -0
  681. package/dist/notifications/activity-types.js.map +7 -0
  682. package/dist/notifications/bell.js +24 -0
  683. package/dist/notifications/bell.js.map +7 -0
  684. package/dist/notifications/calendar-notifications.js +79 -0
  685. package/dist/notifications/calendar-notifications.js.map +7 -0
  686. package/dist/notifications/index.js +108 -0
  687. package/dist/notifications/index.js.map +7 -0
  688. package/dist/notifications/live.js +28 -0
  689. package/dist/notifications/live.js.map +7 -0
  690. package/dist/notifications/notification-types.js +127 -0
  691. package/dist/notifications/notification-types.js.map +7 -0
  692. package/dist/{chunk-BF5KW5ZI.js → notifications/notify-store.js} +24 -74
  693. package/dist/notifications/notify-store.js.map +7 -0
  694. package/dist/notifications/server-notifications.js +452 -0
  695. package/dist/notifications/server-notifications.js.map +7 -0
  696. package/dist/notifications/useNotifications.js +34 -0
  697. package/dist/notifications/useNotifications.js.map +7 -0
  698. package/dist/offline-store/network.js +11 -0
  699. package/dist/offline-store/network.js.map +7 -0
  700. package/dist/offline-store/store.js +136 -0
  701. package/dist/offline-store/store.js.map +7 -0
  702. package/dist/offline-store/wipe.js +8 -0
  703. package/dist/offline-store/wipe.js.map +7 -0
  704. package/dist/offline.js +58 -0
  705. package/dist/offline.js.map +7 -0
  706. package/dist/people.js +122 -0
  707. package/dist/people.js.map +7 -0
  708. package/dist/projects.js +30 -0
  709. package/dist/projects.js.map +7 -0
  710. package/dist/query-client.js +63 -0
  711. package/dist/query-client.js.map +7 -0
  712. package/dist/{chunk-ZM6N7YZH.js → query-keys.js} +18 -31
  713. package/dist/query-keys.js.map +7 -0
  714. package/dist/query-persist.js +66 -0
  715. package/dist/query-persist.js.map +7 -0
  716. package/dist/queued-writes.js +59 -0
  717. package/dist/queued-writes.js.map +7 -0
  718. package/dist/remote-control.js +67 -0
  719. package/dist/remote-control.js.map +7 -0
  720. package/dist/search/index.js +23 -0
  721. package/dist/search/index.js.map +7 -0
  722. package/dist/search/session.js +58 -0
  723. package/dist/search/session.js.map +7 -0
  724. package/dist/search/useSemanticSearch.js +82 -0
  725. package/dist/search/useSemanticSearch.js.map +7 -0
  726. package/dist/session/chat.js +512 -0
  727. package/dist/session/chat.js.map +7 -0
  728. package/dist/session/documents.js +196 -0
  729. package/dist/session/documents.js.map +7 -0
  730. package/dist/session/drafts.js +103 -0
  731. package/dist/session/drafts.js.map +7 -0
  732. package/dist/session/index.js +123 -0
  733. package/dist/session/index.js.map +7 -0
  734. package/dist/session/layout.js +339 -0
  735. package/dist/session/layout.js.map +7 -0
  736. package/dist/session/persist.js +106 -0
  737. package/dist/session/persist.js.map +7 -0
  738. package/dist/session/session-hooks.js +53 -0
  739. package/dist/session/session-hooks.js.map +7 -0
  740. package/dist/session/signed-in.js +36 -0
  741. package/dist/session/signed-in.js.map +7 -0
  742. package/dist/session/store.js +166 -0
  743. package/dist/session/store.js.map +7 -0
  744. package/dist/session/thread-tabs.js +121 -0
  745. package/dist/session/thread-tabs.js.map +7 -0
  746. package/dist/session/ui-state-storage.js +76 -0
  747. package/dist/session/ui-state-storage.js.map +7 -0
  748. package/dist/session/workspace.js +77 -0
  749. package/dist/session/workspace.js.map +7 -0
  750. package/dist/shell/index.cjs +37 -37
  751. package/dist/shell/index.js +43 -10
  752. package/dist/shell/index.js.map +7 -1
  753. package/dist/skill-pack.js +111 -0
  754. package/dist/skill-pack.js.map +7 -0
  755. package/dist/storage.js +186 -0
  756. package/dist/storage.js.map +7 -0
  757. package/dist/support/index.js +35 -0
  758. package/dist/support/index.js.map +7 -0
  759. package/dist/tags.js +204 -0
  760. package/dist/tags.js.map +7 -0
  761. package/dist/ui/DebouncedInput.js +109 -0
  762. package/dist/ui/DebouncedInput.js.map +7 -0
  763. package/dist/ui/DictateContext.js +8 -0
  764. package/dist/ui/DictateContext.js.map +7 -0
  765. package/dist/ui/IconToggle.js +79 -0
  766. package/dist/ui/IconToggle.js.map +7 -0
  767. package/dist/ui/VerifiedToggle.js +38 -0
  768. package/dist/ui/VerifiedToggle.js.map +7 -0
  769. package/dist/ui/VisibilityToggle.js +103 -0
  770. package/dist/ui/VisibilityToggle.js.map +7 -0
  771. package/dist/ui/avatar.js +40 -0
  772. package/dist/ui/avatar.js.map +7 -0
  773. package/dist/ui/badge.js +28 -0
  774. package/dist/ui/badge.js.map +7 -0
  775. package/dist/ui/button.js +48 -0
  776. package/dist/ui/button.js.map +7 -0
  777. package/dist/ui/card.js +90 -0
  778. package/dist/ui/card.js.map +7 -0
  779. package/dist/ui/checkbox.js +22 -0
  780. package/dist/ui/checkbox.js.map +7 -0
  781. package/dist/ui/collapsible.js +10 -0
  782. package/dist/ui/collapsible.js.map +7 -0
  783. package/dist/ui/command.js +103 -0
  784. package/dist/ui/command.js.map +7 -0
  785. package/dist/{chunk-YNNAJJ5Z.js → ui/dialog.js} +30 -68
  786. package/dist/ui/dialog.js.map +7 -0
  787. package/dist/{chunk-47CCGUWR.js → ui/dropdown-menu.js} +40 -45
  788. package/dist/ui/dropdown-menu.js.map +7 -0
  789. package/dist/ui/hover-card.js +36 -0
  790. package/dist/ui/hover-card.js.map +7 -0
  791. package/dist/ui/index.cjs +154 -154
  792. package/dist/ui/index.js +290 -10
  793. package/dist/ui/index.js.map +7 -1
  794. package/dist/ui/input.js +65 -0
  795. package/dist/ui/input.js.map +7 -0
  796. package/dist/ui/label.js +16 -0
  797. package/dist/ui/label.js.map +7 -0
  798. package/dist/ui/mark-menu.js +300 -0
  799. package/dist/ui/mark-menu.js.map +7 -0
  800. package/dist/ui/popover.js +40 -0
  801. package/dist/ui/popover.js.map +7 -0
  802. package/dist/ui/portal-container.js +17 -0
  803. package/dist/ui/portal-container.js.map +7 -0
  804. package/dist/ui/progress.js +24 -0
  805. package/dist/ui/progress.js.map +7 -0
  806. package/dist/ui/radio-group.js +29 -0
  807. package/dist/ui/radio-group.js.map +7 -0
  808. package/dist/ui/scroll-area.js +39 -0
  809. package/dist/ui/scroll-area.js.map +7 -0
  810. package/dist/ui/select.js +130 -0
  811. package/dist/ui/select.js.map +7 -0
  812. package/dist/ui/separator.js +23 -0
  813. package/dist/ui/separator.js.map +7 -0
  814. package/dist/ui/slider.js +23 -0
  815. package/dist/ui/slider.js.map +7 -0
  816. package/dist/ui/switch.js +28 -0
  817. package/dist/ui/switch.js.map +7 -0
  818. package/dist/ui/table.js +75 -0
  819. package/dist/ui/table.js.map +7 -0
  820. package/dist/ui/tabs.js +48 -0
  821. package/dist/ui/tabs.js.map +7 -0
  822. package/dist/ui/textarea.js +63 -0
  823. package/dist/ui/textarea.js.map +7 -0
  824. package/dist/ui/toggle-group.js +43 -0
  825. package/dist/ui/toggle-group.js.map +7 -0
  826. package/dist/ui/toggle.js +40 -0
  827. package/dist/ui/toggle.js.map +7 -0
  828. package/dist/ui/tooltip.js +215 -0
  829. package/dist/ui/tooltip.js.map +7 -0
  830. package/dist/usage-metered.js +8 -0
  831. package/dist/usage-metered.js.map +7 -0
  832. package/dist/useArbi.js +16 -0
  833. package/dist/useArbi.js.map +7 -0
  834. package/dist/useInstallSkillPack.js +81 -0
  835. package/dist/useInstallSkillPack.js.map +7 -0
  836. package/dist/usermenu/UserMenu.js +188 -0
  837. package/dist/usermenu/UserMenu.js.map +7 -0
  838. package/dist/usermenu/index.js +5 -0
  839. package/dist/usermenu/index.js.map +7 -0
  840. package/dist/users/index.js +15 -0
  841. package/dist/users/index.js.map +7 -0
  842. package/dist/users/user-display.js +60 -0
  843. package/dist/users/user-display.js.map +7 -0
  844. package/dist/viewers/AudioViewer.js +23 -0
  845. package/dist/viewers/AudioViewer.js.map +7 -0
  846. package/dist/viewers/DocxViewer.js +81 -0
  847. package/dist/viewers/DocxViewer.js.map +7 -0
  848. package/dist/viewers/ImageViewer.js +31 -0
  849. package/dist/viewers/ImageViewer.js.map +7 -0
  850. package/dist/viewers/PdfViewer.js +19 -3
  851. package/dist/viewers/PdfViewer.js.map +7 -1
  852. package/dist/{PdfViewerImpl-TEBYF2QI.js → viewers/PdfViewerImpl.js} +25 -19
  853. package/dist/viewers/PdfViewerImpl.js.map +7 -0
  854. package/dist/viewers/VideoViewer.js +31 -0
  855. package/dist/viewers/VideoViewer.js.map +7 -0
  856. package/dist/viewers/XlsxViewer.js +102 -0
  857. package/dist/viewers/XlsxViewer.js.map +7 -0
  858. package/dist/viewers/index.js +61 -271
  859. package/dist/viewers/index.js.map +7 -1
  860. package/dist/viewers/page-scroll.js +59 -0
  861. package/dist/viewers/page-scroll.js.map +7 -0
  862. package/dist/viewers/pdf-viewer-constants.js +9 -0
  863. package/dist/viewers/pdf-viewer-constants.js.map +7 -0
  864. package/dist/{chunk-PTOP7OHG.js → viewers/pdfjs-polyfills.js} +5 -6
  865. package/dist/viewers/pdfjs-polyfills.js.map +7 -0
  866. package/dist/viewers/selection-runs.js +38 -0
  867. package/dist/viewers/selection-runs.js.map +7 -0
  868. package/dist/viewers/usePageIntersectionObserver.js +68 -0
  869. package/dist/viewers/usePageIntersectionObserver.js.map +7 -0
  870. package/dist/viewers/useProcessedChunks.js +58 -0
  871. package/dist/viewers/useProcessedChunks.js.map +7 -0
  872. package/dist/viewers/viewer-zoom.js +163 -0
  873. package/dist/viewers/viewer-zoom.js.map +7 -0
  874. package/dist/websocket/ArbiWebSocketProvider.js +207 -0
  875. package/dist/websocket/ArbiWebSocketProvider.js.map +7 -0
  876. package/dist/websocket/context.js +14 -0
  877. package/dist/websocket/context.js.map +7 -0
  878. package/dist/websocket/hooks.js +30 -0
  879. package/dist/websocket/hooks.js.map +7 -0
  880. package/dist/websocket/index.js +22 -0
  881. package/dist/websocket/index.js.map +7 -0
  882. package/dist/websocket/live-updates.js +38 -0
  883. package/dist/websocket/live-updates.js.map +7 -0
  884. package/dist/websocket/reconnect.js +13 -0
  885. package/dist/websocket/reconnect.js.map +7 -0
  886. package/dist/websocket/store.js +58 -0
  887. package/dist/websocket/store.js.map +7 -0
  888. package/dist/workforce.js +607 -0
  889. package/dist/workforce.js.map +7 -0
  890. package/dist/workspaces/access-request.js +35 -0
  891. package/dist/workspaces/access-request.js.map +7 -0
  892. package/dist/workspaces/archive.js +59 -0
  893. package/dist/workspaces/archive.js.map +7 -0
  894. package/dist/workspaces/current.js +20 -0
  895. package/dist/workspaces/current.js.map +7 -0
  896. package/dist/workspaces/delete-workspaces.js +15 -0
  897. package/dist/workspaces/delete-workspaces.js.map +7 -0
  898. package/dist/workspaces/export-archive.js +40 -0
  899. package/dist/workspaces/export-archive.js.map +7 -0
  900. package/dist/workspaces/index.js +99 -0
  901. package/dist/workspaces/index.js.map +7 -0
  902. package/dist/workspaces/settings.js +45 -0
  903. package/dist/workspaces/settings.js.map +7 -0
  904. package/dist/workspaces/shell-workspaces.js +49 -0
  905. package/dist/workspaces/shell-workspaces.js.map +7 -0
  906. package/dist/workspaces/switch.js +234 -0
  907. package/dist/workspaces/switch.js.map +7 -0
  908. package/dist/workspaces/transfer.js +170 -0
  909. package/dist/workspaces/transfer.js.map +7 -0
  910. package/dist/workspaces/useShellWorkspaces.js +86 -0
  911. package/dist/workspaces/useShellWorkspaces.js.map +7 -0
  912. package/dist/workspaces/workspace-users.js +65 -0
  913. package/dist/workspaces/workspace-users.js.map +7 -0
  914. package/package.json +4 -4
  915. package/dist/PdfViewerImpl-TEBYF2QI.js.map +0 -1
  916. package/dist/PdfViewerImpl.d-B28hLEuj.d.cts +0 -62
  917. package/dist/ProductionDialog.d-CpzslFn0.d.cts +0 -51
  918. package/dist/annotations/freeze/index.d.cts +0 -205
  919. package/dist/annotations/index.d.cts +0 -360
  920. package/dist/artifacts/index.d.cts +0 -476
  921. package/dist/artifacts/redline-core.d.cts +0 -39
  922. package/dist/bundle-YNOX7VIL.js +0 -5
  923. package/dist/bundle-YNOX7VIL.js.map +0 -1
  924. package/dist/bundle.d-BnCSbHy2.d.cts +0 -85
  925. package/dist/calls/livekit/index.d.cts +0 -280
  926. package/dist/chunk-47CCGUWR.js.map +0 -1
  927. package/dist/chunk-4FL3X3LA.js +0 -2057
  928. package/dist/chunk-4FL3X3LA.js.map +0 -1
  929. package/dist/chunk-6QNBSXCE.js +0 -271
  930. package/dist/chunk-6QNBSXCE.js.map +0 -1
  931. package/dist/chunk-74N436VK.js.map +0 -1
  932. package/dist/chunk-APZZQZ6P.js +0 -147
  933. package/dist/chunk-APZZQZ6P.js.map +0 -1
  934. package/dist/chunk-BF5KW5ZI.js.map +0 -1
  935. package/dist/chunk-DPYBZDJB.js.map +0 -1
  936. package/dist/chunk-DZKRL5H3.js +0 -2766
  937. package/dist/chunk-DZKRL5H3.js.map +0 -1
  938. package/dist/chunk-HDCRPPBW.js +0 -75
  939. package/dist/chunk-HDCRPPBW.js.map +0 -1
  940. package/dist/chunk-L2IPPTVC.js +0 -20
  941. package/dist/chunk-L2IPPTVC.js.map +0 -1
  942. package/dist/chunk-LSU4UPS5.js +0 -1011
  943. package/dist/chunk-LSU4UPS5.js.map +0 -1
  944. package/dist/chunk-NIKPG4PW.js +0 -1128
  945. package/dist/chunk-NIKPG4PW.js.map +0 -1
  946. package/dist/chunk-NNAJLY6B.js +0 -4974
  947. package/dist/chunk-NNAJLY6B.js.map +0 -1
  948. package/dist/chunk-OYPKKHXY.js +0 -559
  949. package/dist/chunk-OYPKKHXY.js.map +0 -1
  950. package/dist/chunk-PTOP7OHG.js.map +0 -1
  951. package/dist/chunk-QMY2JKBI.js +0 -246
  952. package/dist/chunk-QMY2JKBI.js.map +0 -1
  953. package/dist/chunk-SN5YV6FF.js +0 -11
  954. package/dist/chunk-SN5YV6FF.js.map +0 -1
  955. package/dist/chunk-SSXFVWCT.js.map +0 -1
  956. package/dist/chunk-T3USOSVN.js.map +0 -1
  957. package/dist/chunk-T4CLW3DN.js +0 -2560
  958. package/dist/chunk-T4CLW3DN.js.map +0 -1
  959. package/dist/chunk-UW2SGTI5.js.map +0 -1
  960. package/dist/chunk-VSCU7K4V.js.map +0 -1
  961. package/dist/chunk-WL2Y2T47.js.map +0 -1
  962. package/dist/chunk-WUTL62MC.js.map +0 -1
  963. package/dist/chunk-XWPLOFDN.js +0 -644
  964. package/dist/chunk-XWPLOFDN.js.map +0 -1
  965. package/dist/chunk-Y3MTRA7D.js +0 -97
  966. package/dist/chunk-Y3MTRA7D.js.map +0 -1
  967. package/dist/chunk-YNNAJJ5Z.js.map +0 -1
  968. package/dist/chunk-ZM6N7YZH.js.map +0 -1
  969. package/dist/document-tools/core.d.cts +0 -883
  970. package/dist/document-tools/index.d.cts +0 -90
  971. package/dist/index.d-LArLnpI8.d.cts +0 -2036
  972. package/dist/index.d-oR5FKZpJ.d.cts +0 -579
  973. package/dist/index.d.cts +0 -15923
  974. package/dist/lazy-chunk.d-B6YDLMKI.d.cts +0 -31
  975. package/dist/model.d-CNtRWKVK.d.cts +0 -110
  976. package/dist/query-keys.d-B1Am9tIF.d.cts +0 -337
  977. package/dist/shell/index.d.cts +0 -6
  978. package/dist/store.d-GADDvC7w.d.cts +0 -35
  979. package/dist/stored-markdown.d-Bp18vrbr.d.cts +0 -125
  980. package/dist/ui/index.d.cts +0 -26
  981. package/dist/useAudioRecorder.d-B9rlMI_E.d.cts +0 -778
  982. package/dist/viewers/PdfViewer.d.cts +0 -9
  983. package/dist/viewers/index.d.cts +0 -262
@@ -0,0 +1,266 @@
1
+ import {
2
+ useDocuments,
3
+ useDocument,
4
+ useSimilarDocuments,
5
+ refreshDocuments,
6
+ useRefreshDocuments,
7
+ adjustTagCounts,
8
+ SIMILARITY_THRESHOLD,
9
+ FINISHED_DOCUMENT_STATUSES
10
+ } from "./documents-data.js";
11
+ import {
12
+ resolveDocumentStatus,
13
+ isStaleTaskUpdate,
14
+ isRowNewer,
15
+ settledByRows,
16
+ IN_FLIGHT_DOCUMENT_STATUSES
17
+ } from "./processing-order.js";
18
+ import { subscribeDocumentReads } from "./processing-settle.js";
19
+ import { useWorkspaceProcessing, applyTaskEvent } from "./processing-live.js";
20
+ import {
21
+ useDocumentsLoading,
22
+ isDocumentsLoading,
23
+ stopDocumentsLoading,
24
+ DOCUMENTS_FIRST_PAGE_SIZE,
25
+ DOCUMENTS_PAGE_SIZE,
26
+ DOCUMENTS_FIRST_PAGE_MEASURE
27
+ } from "./documents-loader.js";
28
+ import {
29
+ patchDocuments,
30
+ upsertDocuments,
31
+ getCachedDocuments,
32
+ setCachedDocument,
33
+ patchCachedDocument,
34
+ dropTagFromCachedDocuments,
35
+ forgetDocuments,
36
+ subscribeDocumentRows
37
+ } from "./documents-cache.js";
38
+ import {
39
+ useMarkDocumentShared,
40
+ useUpdateDocuments,
41
+ useDeleteDocuments,
42
+ useUploadDocuments,
43
+ useUploadUrls,
44
+ useAssignDocTags,
45
+ useRemoveDocTags,
46
+ useUpdateDocTag,
47
+ useGenerateDocTags,
48
+ useFinaliseTranslation,
49
+ useRenameFolder,
50
+ applyOptimisticDocumentEdit,
51
+ rollbackOptimisticDocumentEdit
52
+ } from "./documents-writes.js";
53
+ import {
54
+ useDocumentsSupport,
55
+ useProcessingTasks,
56
+ useProcessingTask,
57
+ useDocumentHostActions,
58
+ useOpenViewerDocumentId
59
+ } from "./support.js";
60
+ import {
61
+ isDocumentAddableToConversation,
62
+ getDocumentDate,
63
+ formatDocDate,
64
+ getDocumentNature,
65
+ getDocumentAuthor,
66
+ getDocumentSubject,
67
+ DEFAULT_METADATA_TAGS,
68
+ canonicalFolderPath,
69
+ buildFolderTree,
70
+ formatFolderLabel,
71
+ COLUMN_LABEL_FALLBACKS
72
+ } from "./document-fields.js";
73
+ import { archiveName, buildDocumentMetadataRows, fallbackFileName } from "./document-download.js";
74
+ import { useDownloadDocuments } from "./useDownloadDocuments.js";
75
+ import { useDocumentThumbnails } from "./useDocumentThumbnails.js";
76
+ import { DocumentReview } from "./DocumentReview.js";
77
+ import {
78
+ useAudioRecorder
79
+ } from "./useAudioRecorder.js";
80
+ import {
81
+ DEFAULT_SEGMENTER_CONFIG,
82
+ INITIAL_SEGMENTER_STATE,
83
+ flushSegmenter,
84
+ levelFromRms,
85
+ stepSegmenter
86
+ } from "./audio-segmenter.js";
87
+ import {
88
+ AUDIO_MIME_PREFERENCE,
89
+ VIDEO_MIME_PREFERENCE,
90
+ createChunkedRecorder,
91
+ pickRecorderMimeType
92
+ } from "./chunked-recorder.js";
93
+ import { MicWaveformIndicator } from "./MicWaveformIndicator.js";
94
+ import { MicRecordingOverlay } from "./MicRecordingOverlay.js";
95
+ import { VoiceNoteRecorder } from "./VoiceNoteRecorder.js";
96
+ import { DraftTitleControls } from "./DraftTitleControls.js";
97
+ import { InlineMicButton } from "./InlineMicButton.js";
98
+ import { formatElapsed } from "./format-elapsed.js";
99
+ import { useCameraStream } from "./useCameraStream.js";
100
+ import {
101
+ useVideoRecorder
102
+ } from "./useVideoRecorder.js";
103
+ import { captureFrameAsBlob } from "./capture-frame.js";
104
+ import { classifyMediaError } from "./media-error.js";
105
+ import { PhotoCapture } from "./PhotoCapture.js";
106
+ import { VideoCapture } from "./VideoCapture.js";
107
+ import { hasVideoTrack } from "./has-video-track.js";
108
+ import {
109
+ UPLOAD_ACCEPT,
110
+ UPLOAD_MAX_FILE_SIZE,
111
+ extractZipFile,
112
+ filesFromDrop,
113
+ isZipFile,
114
+ prepareUploadFiles,
115
+ uploadFolderOf,
116
+ withRelativePath
117
+ } from "./upload-files.js";
118
+ import {
119
+ useUploadFiles,
120
+ uploadedDocumentFolder,
121
+ forgetUploadedDocumentFolder
122
+ } from "./useUploadFiles.js";
123
+ import {
124
+ useUploadFromUrls
125
+ } from "./useUploadFromUrls.js";
126
+ import {
127
+ useRelatedDocuments,
128
+ getRelatedTotal,
129
+ getRelatedLabels
130
+ } from "./related-documents.js";
131
+ import {
132
+ usePendingSyncItems,
133
+ usePendingSyncCounts,
134
+ useDocumentPendingSync,
135
+ useCancelManyPendingSync,
136
+ buildPendingSyncItem,
137
+ PENDING_SYNC_PREDICATE
138
+ } from "./pending-sync.js";
139
+ import {
140
+ useOfflineDocumentIds,
141
+ useKeepDocumentsOffline,
142
+ useRemoveDocumentsOffline,
143
+ loadOfflineDocument,
144
+ getOfflineDocument,
145
+ wipeOfflineDocuments,
146
+ requestPersistentStorage
147
+ } from "./offline-documents.js";
148
+ export {
149
+ AUDIO_MIME_PREFERENCE,
150
+ COLUMN_LABEL_FALLBACKS,
151
+ DEFAULT_METADATA_TAGS,
152
+ DEFAULT_SEGMENTER_CONFIG,
153
+ DOCUMENTS_FIRST_PAGE_MEASURE,
154
+ DOCUMENTS_FIRST_PAGE_SIZE,
155
+ DOCUMENTS_PAGE_SIZE,
156
+ DocumentReview,
157
+ DraftTitleControls,
158
+ FINISHED_DOCUMENT_STATUSES,
159
+ INITIAL_SEGMENTER_STATE,
160
+ IN_FLIGHT_DOCUMENT_STATUSES,
161
+ InlineMicButton,
162
+ MicRecordingOverlay,
163
+ MicWaveformIndicator,
164
+ PENDING_SYNC_PREDICATE,
165
+ PhotoCapture,
166
+ SIMILARITY_THRESHOLD,
167
+ UPLOAD_ACCEPT,
168
+ UPLOAD_MAX_FILE_SIZE,
169
+ VIDEO_MIME_PREFERENCE,
170
+ VideoCapture,
171
+ VoiceNoteRecorder,
172
+ adjustTagCounts,
173
+ applyOptimisticDocumentEdit,
174
+ applyTaskEvent,
175
+ archiveName,
176
+ buildDocumentMetadataRows,
177
+ buildFolderTree,
178
+ buildPendingSyncItem,
179
+ canonicalFolderPath,
180
+ captureFrameAsBlob,
181
+ classifyMediaError,
182
+ createChunkedRecorder,
183
+ dropTagFromCachedDocuments,
184
+ extractZipFile,
185
+ fallbackFileName,
186
+ filesFromDrop,
187
+ flushSegmenter,
188
+ forgetDocuments,
189
+ forgetUploadedDocumentFolder,
190
+ formatDocDate,
191
+ formatElapsed,
192
+ formatFolderLabel,
193
+ getCachedDocuments,
194
+ getDocumentAuthor,
195
+ getDocumentDate,
196
+ getDocumentNature,
197
+ getDocumentSubject,
198
+ getOfflineDocument,
199
+ getRelatedLabels,
200
+ getRelatedTotal,
201
+ hasVideoTrack,
202
+ isDocumentAddableToConversation,
203
+ isDocumentsLoading,
204
+ isRowNewer,
205
+ isStaleTaskUpdate,
206
+ isZipFile,
207
+ levelFromRms,
208
+ loadOfflineDocument,
209
+ patchCachedDocument,
210
+ patchDocuments,
211
+ pickRecorderMimeType,
212
+ prepareUploadFiles,
213
+ refreshDocuments,
214
+ requestPersistentStorage,
215
+ resolveDocumentStatus,
216
+ rollbackOptimisticDocumentEdit,
217
+ setCachedDocument,
218
+ settledByRows,
219
+ stepSegmenter,
220
+ stopDocumentsLoading,
221
+ subscribeDocumentReads,
222
+ subscribeDocumentRows,
223
+ uploadFolderOf,
224
+ uploadedDocumentFolder,
225
+ upsertDocuments,
226
+ useAssignDocTags,
227
+ useAudioRecorder,
228
+ useCameraStream,
229
+ useCancelManyPendingSync,
230
+ useDeleteDocuments,
231
+ useDocument,
232
+ useDocumentHostActions,
233
+ useDocumentPendingSync,
234
+ useDocumentThumbnails,
235
+ useDocuments,
236
+ useDocumentsLoading,
237
+ useDocumentsSupport,
238
+ useDownloadDocuments,
239
+ useFinaliseTranslation,
240
+ useGenerateDocTags,
241
+ useKeepDocumentsOffline,
242
+ useMarkDocumentShared,
243
+ useOfflineDocumentIds,
244
+ useOpenViewerDocumentId,
245
+ usePendingSyncCounts,
246
+ usePendingSyncItems,
247
+ useProcessingTask,
248
+ useProcessingTasks,
249
+ useRefreshDocuments,
250
+ useRelatedDocuments,
251
+ useRemoveDocTags,
252
+ useRemoveDocumentsOffline,
253
+ useRenameFolder,
254
+ useSimilarDocuments,
255
+ useUpdateDocTag,
256
+ useUpdateDocuments,
257
+ useUploadDocuments,
258
+ useUploadFiles,
259
+ useUploadFromUrls,
260
+ useUploadUrls,
261
+ useVideoRecorder,
262
+ useWorkspaceProcessing,
263
+ wipeOfflineDocuments,
264
+ withRelativePath
265
+ };
266
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/documents/index.ts"],
4
+ "sourcesContent": ["// The documents of a workspace: reading (progressive), the cache every write patches, the writes\n// (offline-aware), and what a host adds (its live processing state)\nexport {\n useDocuments,\n useDocument,\n useSimilarDocuments,\n refreshDocuments,\n useRefreshDocuments,\n adjustTagCounts,\n SIMILARITY_THRESHOLD,\n FINISHED_DOCUMENT_STATUSES,\n} from './documents-data'\nexport {\n resolveDocumentStatus,\n isStaleTaskUpdate,\n isRowNewer,\n settledByRows,\n IN_FLIGHT_DOCUMENT_STATUSES,\n type SequencedTask,\n type SequencedRow,\n} from './processing-order'\nexport { subscribeDocumentReads } from './processing-settle'\nexport { useWorkspaceProcessing, applyTaskEvent, type WorkspaceProcessing } from './processing-live'\nexport {\n useDocumentsLoading,\n isDocumentsLoading,\n stopDocumentsLoading,\n DOCUMENTS_FIRST_PAGE_SIZE,\n DOCUMENTS_PAGE_SIZE,\n DOCUMENTS_FIRST_PAGE_MEASURE,\n} from './documents-loader'\nexport {\n patchDocuments,\n upsertDocuments,\n getCachedDocuments,\n setCachedDocument,\n patchCachedDocument,\n dropTagFromCachedDocuments,\n forgetDocuments,\n subscribeDocumentRows,\n type WorkspaceDocument,\n type DocumentRowChange,\n} from './documents-cache'\nexport {\n useMarkDocumentShared,\n useUpdateDocuments,\n useDeleteDocuments,\n useUploadDocuments,\n useUploadUrls,\n useAssignDocTags,\n useRemoveDocTags,\n useUpdateDocTag,\n useGenerateDocTags,\n useFinaliseTranslation,\n useRenameFolder,\n applyOptimisticDocumentEdit,\n rollbackOptimisticDocumentEdit,\n type OptimisticDocumentEdit,\n type UpdateDocumentsInput,\n type UploadDocumentsInput,\n type UploadUrlsInput,\n type AssignDocTagsInput,\n type RemoveDocTagsInput,\n type UpdateDocTagInput,\n type GenerateDocTagsInput,\n} from './documents-writes'\nexport {\n useDocumentsSupport,\n useProcessingTasks,\n useProcessingTask,\n type DocumentsSupport,\n type ProcessingTask,\n useDocumentHostActions,\n useOpenViewerDocumentId,\n type DocumentHostActions,\n type DocumentPerson,\n type DocumentStartItem,\n} from './support'\nexport {\n isDocumentAddableToConversation,\n getDocumentDate,\n formatDocDate,\n getDocumentNature,\n getDocumentAuthor,\n getDocumentSubject,\n DEFAULT_METADATA_TAGS,\n canonicalFolderPath,\n buildFolderTree,\n formatFolderLabel,\n COLUMN_LABEL_FALLBACKS,\n type FolderTreeNode,\n} from './document-fields'\nexport { archiveName, buildDocumentMetadataRows, fallbackFileName } from './document-download'\nexport { useDownloadDocuments, type UseDownloadDocumentsOptions } from './useDownloadDocuments'\nexport { useDocumentThumbnails } from './useDocumentThumbnails'\n\nexport { DocumentReview, type DocumentReviewProps } from './DocumentReview'\nexport type {\n ParsedDocument,\n ParsedChunk,\n ParsedChunkMetadata,\n ParsedDocumentMetadata,\n} from './parsed-types'\n\n// Audio recording \u2014 capture engine, shared waveform visual, and a\n// toggle-style recorder built on both. All props-in/callback-out: no store\n// coupling, so a host app can wire persistence however it likes.\nexport {\n useAudioRecorder,\n type AudioRecorderState,\n type AudioSegment,\n type UseAudioRecorderOptions,\n type UseAudioRecorderResult,\n} from './useAudioRecorder'\nexport {\n DEFAULT_SEGMENTER_CONFIG,\n INITIAL_SEGMENTER_STATE,\n flushSegmenter,\n levelFromRms,\n stepSegmenter,\n type SegmenterConfig,\n type SegmenterEvent,\n type SegmenterState,\n} from './audio-segmenter'\nexport {\n AUDIO_MIME_PREFERENCE,\n VIDEO_MIME_PREFERENCE,\n createChunkedRecorder,\n pickRecorderMimeType,\n type ChunkedRecorder,\n type ChunkedRecorderOptions,\n type RecordedChunk,\n} from './chunked-recorder'\nexport { MicWaveformIndicator, type MicWaveformIndicatorProps } from './MicWaveformIndicator'\nexport { MicRecordingOverlay, type MicRecordingOverlayProps } from './MicRecordingOverlay'\nexport { VoiceNoteRecorder, type VoiceNoteRecorderProps } from './VoiceNoteRecorder'\nexport { DraftTitleControls, type DraftTitleControlsProps } from './DraftTitleControls'\nexport { InlineMicButton, type InlineMicButtonProps } from './InlineMicButton'\nexport { formatElapsed } from './format-elapsed'\n\n// Camera capture \u2014 the photo/video counterparts to the audio recording\n// engine above. useCameraStream is the shared getUserMedia lifecycle;\n// useVideoRecorder layers MediaRecorder on top of its stream; PhotoCapture/\n// VideoCapture are the props-in/callback-out capture UIs (same shape as\n// VoiceNoteRecorder).\nexport { useCameraStream, type UseCameraStreamResult } from './useCameraStream'\nexport {\n useVideoRecorder,\n type UseVideoRecorderResult,\n type VideoRecorderState,\n} from './useVideoRecorder'\nexport { captureFrameAsBlob } from './capture-frame'\nexport { classifyMediaError } from './media-error'\nexport { PhotoCapture, type PhotoCaptureProps } from './PhotoCapture'\nexport { VideoCapture, type VideoCaptureProps } from './VideoCapture'\n\n// Content-based audio/video classification for containers (like .webm) whose\n// extension alone doesn't say which one they are.\nexport { hasVideoTrack } from './has-video-track'\n// Uploading: choosing files (folders, zip archives, refusals), the upload with progress, and adding\n// from web addresses\nexport {\n UPLOAD_ACCEPT,\n UPLOAD_MAX_FILE_SIZE,\n extractZipFile,\n filesFromDrop,\n isZipFile,\n prepareUploadFiles,\n uploadFolderOf,\n withRelativePath,\n type ExtractedZip,\n type RefusedUploadFile,\n type UploadRefusal,\n type ZipExtractor,\n} from './upload-files'\nexport {\n useUploadFiles,\n uploadedDocumentFolder,\n forgetUploadedDocumentFolder,\n type UploadFilesInput,\n type UploadFilesProgress,\n type UploadFilesResult,\n} from './useUploadFiles'\nexport {\n useUploadFromUrls,\n type UploadFromUrlsInput,\n type UploadFromUrlsResult,\n} from './useUploadFromUrls'\n// How documents relate: email family, made from / copies, duplicates, near-duplicates\nexport {\n useRelatedDocuments,\n getRelatedTotal,\n getRelatedLabels,\n type RelatedDocs,\n type RelatedDocsMap,\n} from './related-documents'\n\n// Offline changes waiting to sync: what changed, how many, per document, and undo\nexport {\n usePendingSyncItems,\n usePendingSyncCounts,\n useDocumentPendingSync,\n useCancelManyPendingSync,\n buildPendingSyncItem,\n PENDING_SYNC_PREDICATE,\n type PendingSyncItem,\n type RawPending,\n} from './pending-sync'\n\n// Documents kept on this device for offline use\nexport {\n useOfflineDocumentIds,\n useKeepDocumentsOffline,\n useRemoveDocumentsOffline,\n loadOfflineDocument,\n getOfflineDocument,\n wipeOfflineDocuments,\n requestPersistentStorage,\n type OfflineDocumentRecord,\n} from './offline-documents'\n"],
5
+ "mappings": "AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,8BAA8B;AACvC,SAAS,wBAAwB,sBAAgD;AACjF;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OASK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,aAAa,2BAA2B,wBAAwB;AACzE,SAAS,4BAA8D;AACvE,SAAS,6BAA6B;AAEtC,SAAS,sBAAgD;AAWzD;AAAA,EACE;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP,SAAS,4BAA4D;AACrE,SAAS,2BAA0D;AACnE,SAAS,yBAAsD;AAC/D,SAAS,0BAAwD;AACjE,SAAS,uBAAkD;AAC3D,SAAS,qBAAqB;AAO9B,SAAS,uBAAmD;AAC5D;AAAA,EACE;AAAA,OAGK;AACP,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS,oBAA4C;AACrD,SAAS,oBAA4C;AAIrD,SAAS,qBAAqB;AAG9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AACP;AAAA,EACE;AAAA,OAGK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;",
6
+ "names": []
7
+ }
@@ -0,0 +1,18 @@
1
+ function classifyMediaError(err, kind) {
2
+ const label = kind === "camera" ? "Camera" : "Microphone";
3
+ const name = err instanceof DOMException ? err.name : void 0;
4
+ if (name === "NotAllowedError" || name === "SecurityError") {
5
+ return `${label} access is blocked. Allow ${kind} permission in your browser settings to use this feature.`;
6
+ }
7
+ if (name === "NotFoundError" || name === "DevicesNotFoundError") {
8
+ return `No ${kind} found on this device.`;
9
+ }
10
+ if (!navigator.mediaDevices?.getUserMedia) {
11
+ return `${kind === "camera" ? "Camera" : "Voice"} input is not supported in this browser.`;
12
+ }
13
+ return `Could not access the ${kind}. Please try again.`;
14
+ }
15
+ export {
16
+ classifyMediaError
17
+ };
18
+ //# sourceMappingURL=media-error.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/documents/media-error.ts"],
4
+ "sourcesContent": ["/**\n * Shared getUserMedia error classification \u2014 used by both `useAudioRecorder`\n * (microphone) and `useCameraStream` (camera), so \"permission denied\" /\n * \"device not found\" / \"not supported\" read as the same message shape\n * regardless of which device was requested, without duplicating the\n * DOMException-name matching in every recorder hook.\n */\nexport type MediaDeviceKind = 'microphone' | 'camera'\n\nexport function classifyMediaError(err: unknown, kind: MediaDeviceKind): string {\n const label = kind === 'camera' ? 'Camera' : 'Microphone'\n const name = err instanceof DOMException ? err.name : undefined\n if (name === 'NotAllowedError' || name === 'SecurityError') {\n return `${label} access is blocked. Allow ${kind} permission in your browser settings to use this feature.`\n }\n if (name === 'NotFoundError' || name === 'DevicesNotFoundError') {\n return `No ${kind} found on this device.`\n }\n if (!navigator.mediaDevices?.getUserMedia) {\n return `${kind === 'camera' ? 'Camera' : 'Voice'} input is not supported in this browser.`\n }\n return `Could not access the ${kind}. Please try again.`\n}\n"],
5
+ "mappings": "AASO,SAAS,mBAAmB,KAAc,MAA+B;AAC9E,QAAM,QAAQ,SAAS,WAAW,WAAW;AAC7C,QAAM,OAAO,eAAe,eAAe,IAAI,OAAO;AACtD,MAAI,SAAS,qBAAqB,SAAS,iBAAiB;AAC1D,WAAO,GAAG,KAAK,6BAA6B,IAAI;AAAA,EAClD;AACA,MAAI,SAAS,mBAAmB,SAAS,wBAAwB;AAC/D,WAAO,MAAM,IAAI;AAAA,EACnB;AACA,MAAI,CAAC,UAAU,cAAc,cAAc;AACzC,WAAO,GAAG,SAAS,WAAW,WAAW,OAAO;AAAA,EAClD;AACA,SAAO,wBAAwB,IAAI;AACrC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,160 @@
1
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
2
+ import {
3
+ base64ToBytes,
4
+ bytesToBase64,
5
+ getUserEncryptionKeypair,
6
+ sealedBoxDecrypt,
7
+ sealedBoxEncrypt
8
+ } from "@arbidocs/client";
9
+ import { arbiQueryKeys } from "../query-keys.js";
10
+ import { notify } from "../notifications/notify-store.js";
11
+ import { getDocumentTitle } from "../entities/index.js";
12
+ import { usesOriginalBytesForViewer } from "../entities/media-type.js";
13
+ import { useArbi } from "../useArbi.js";
14
+ import { fetchDocumentFile, fetchDocumentPdf } from "../document-tools/document-pdf.js";
15
+ import { setCachedDocument } from "./documents-cache.js";
16
+ import { useDocumentsSupport } from "./support.js";
17
+ const DB_NAME = "arbi-offline-docs";
18
+ const DB_VERSION = 1;
19
+ const STORE = "documents";
20
+ let dbInstance = null;
21
+ async function openDB() {
22
+ if (dbInstance) return dbInstance;
23
+ return new Promise((resolve, reject) => {
24
+ const request = indexedDB.open(DB_NAME, DB_VERSION);
25
+ request.onerror = () => reject(request.error);
26
+ request.onsuccess = () => {
27
+ const db = request.result;
28
+ db.onversionchange = () => {
29
+ db.close();
30
+ if (dbInstance === db) dbInstance = null;
31
+ };
32
+ dbInstance = db;
33
+ resolve(db);
34
+ };
35
+ request.onupgradeneeded = (event) => {
36
+ const db = event.target.result;
37
+ if (!db.objectStoreNames.contains(STORE)) {
38
+ db.createObjectStore(STORE, { keyPath: "docExtId" });
39
+ }
40
+ };
41
+ });
42
+ }
43
+ function promisify(request) {
44
+ return new Promise((resolve, reject) => {
45
+ request.onsuccess = () => resolve(request.result);
46
+ request.onerror = () => reject(request.error);
47
+ });
48
+ }
49
+ async function withStore(mode, run) {
50
+ const db = await openDB();
51
+ const store = db.transaction(STORE, mode).objectStore(STORE);
52
+ return promisify(run(store));
53
+ }
54
+ async function putOfflineDocument(record) {
55
+ await withStore("readwrite", (store) => store.put(record));
56
+ }
57
+ async function getOfflineDocument(docExtId) {
58
+ const record = await withStore("readonly", (store) => store.get(docExtId));
59
+ return record;
60
+ }
61
+ async function deleteOfflineDocument(docExtId) {
62
+ await withStore("readwrite", (store) => store.delete(docExtId));
63
+ }
64
+ async function listOfflineDocumentIds() {
65
+ const keys = await withStore("readonly", (store) => store.getAllKeys());
66
+ return keys;
67
+ }
68
+ async function requestPersistentStorage() {
69
+ try {
70
+ if (!navigator.storage?.persist || !navigator.storage.persisted) return false;
71
+ if (await navigator.storage.persisted()) return true;
72
+ return await navigator.storage.persist();
73
+ } catch {
74
+ return false;
75
+ }
76
+ }
77
+ async function wipeOfflineDocuments() {
78
+ dbInstance?.close();
79
+ dbInstance = null;
80
+ await new Promise((resolve) => {
81
+ const request = indexedDB.deleteDatabase(DB_NAME);
82
+ request.onsuccess = request.onerror = request.onblocked = () => resolve();
83
+ });
84
+ }
85
+ async function loadOfflineDocument(docId) {
86
+ const record = await getOfflineDocument(docId);
87
+ if (!record) return void 0;
88
+ const keypair = await getUserEncryptionKeypair();
89
+ if (!keypair) throw new Error("Cannot open the offline copy: no personal key in this session");
90
+ const bytes = sealedBoxDecrypt(bytesToBase64(record.data), keypair.secretKey);
91
+ return new Blob([bytes], { type: record.contentType });
92
+ }
93
+ async function keepDocumentsOffline(client, docs) {
94
+ await requestPersistentStorage();
95
+ const keypair = await getUserEncryptionKeypair();
96
+ if (!keypair) throw new Error("Could not derive an encryption key for the offline copy.");
97
+ for (const doc of docs) {
98
+ const original = usesOriginalBytesForViewer(doc.file_name);
99
+ const blob = original ? await fetchDocumentFile(client, doc.external_id) : await fetchDocumentPdf(client, doc.external_id);
100
+ const plain = new Uint8Array(await blob.arrayBuffer());
101
+ await putOfflineDocument({
102
+ docExtId: doc.external_id,
103
+ fileName: getDocumentTitle(doc, "document"),
104
+ kind: original ? "original" : "pdf",
105
+ data: base64ToBytes(sealedBoxEncrypt(plain, keypair.publicKey)),
106
+ contentType: blob.type,
107
+ savedAt: Date.now()
108
+ });
109
+ }
110
+ }
111
+ function useOfflineDocumentIds() {
112
+ const { data } = useQuery({
113
+ queryKey: arbiQueryKeys.offlineDocuments(),
114
+ queryFn: async () => new Set(await listOfflineDocumentIds()),
115
+ staleTime: Infinity,
116
+ // Offline the default network mode would hold this local read back, and a cold start
117
+ // offline would lose every "available offline" badge.
118
+ networkMode: "always"
119
+ });
120
+ return data ?? EMPTY;
121
+ }
122
+ const EMPTY = /* @__PURE__ */ new Set();
123
+ function useKeepDocumentsOffline() {
124
+ const queryClient = useQueryClient();
125
+ const arbi = useArbi();
126
+ const { onKeptOffline } = useDocumentsSupport();
127
+ return useMutation({
128
+ mutationFn: async (docs) => {
129
+ await keepDocumentsOffline(arbi.getClient().fetch, docs);
130
+ for (const doc of docs) setCachedDocument(queryClient, doc);
131
+ await onKeptOffline?.();
132
+ return docs.length;
133
+ },
134
+ onSettled: () => queryClient.invalidateQueries({ queryKey: arbiQueryKeys.offlineDocuments() }),
135
+ onSuccess: (count) => notify.success(`${count} document${count === 1 ? "" : "s"} available offline`),
136
+ onError: () => notify.error("Could not save documents for offline use")
137
+ });
138
+ }
139
+ function useRemoveDocumentsOffline() {
140
+ const queryClient = useQueryClient();
141
+ return useMutation({
142
+ mutationFn: async (docIds) => {
143
+ for (const id of docIds) await deleteOfflineDocument(id);
144
+ return docIds.length;
145
+ },
146
+ onSettled: () => queryClient.invalidateQueries({ queryKey: arbiQueryKeys.offlineDocuments() }),
147
+ onSuccess: (count) => notify.success(`Removed ${count} offline ${count === 1 ? "copy" : "copies"}`),
148
+ onError: () => notify.error("Could not remove offline copy")
149
+ });
150
+ }
151
+ export {
152
+ getOfflineDocument,
153
+ loadOfflineDocument,
154
+ requestPersistentStorage,
155
+ useKeepDocumentsOffline,
156
+ useOfflineDocumentIds,
157
+ useRemoveDocumentsOffline,
158
+ wipeOfflineDocuments
159
+ };
160
+ //# sourceMappingURL=offline-documents.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/documents/offline-documents.ts"],
4
+ "sourcesContent": ["/**\n * Documents kept on this device (\"available offline\"): the bytes a viewer shows (the PDF, or for\n * media the stored file), so a pinned document opens with no network, and can be attached to an\n * email offline. A deliberate, user-pinned cache in IndexedDB: entries live until the user removes\n * them or signs out (`wipeOfflineDocuments`).\n *\n * The bytes are always ciphertext, sealed to the user's own key (the cache is private to one user\n * on one device). The store persists a raw `Uint8Array` (it structured-clones everywhere, unlike a\n * `Blob`); sealing and opening happen in `keepDocumentsOffline` / `loadOfflineDocument`.\n */\n\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\nimport {\n base64ToBytes,\n bytesToBase64,\n getUserEncryptionKeypair,\n sealedBoxDecrypt,\n sealedBoxEncrypt,\n} from '@arbidocs/client'\nimport { arbiQueryKeys } from '../query-keys'\nimport { notify } from '../notifications/notify-store'\nimport { getDocumentTitle } from '../entities'\nimport { usesOriginalBytesForViewer } from '../entities/media-type'\nimport { useArbi } from '../useArbi'\nimport { fetchDocumentFile, fetchDocumentPdf } from '../document-tools/document-pdf'\nimport type { DocumentToolsClient } from '../document-tools/environment'\nimport { setCachedDocument, type WorkspaceDocument } from './documents-cache'\nimport { useDocumentsSupport } from './support'\n\nconst DB_NAME = 'arbi-offline-docs'\nconst DB_VERSION = 1\nconst STORE = 'documents'\n\nexport interface OfflineDocumentRecord {\n /** Document external id (the primary key). */\n docExtId: string\n /** Display name, captured at save time so the offline list can render without metadata. */\n fileName: string\n /**\n * Which bytes were cached: 'pdf' = the server-generated PDF preview (`/view`),\n * 'original' = the source file (`/download`, used for image/audio/video).\n */\n kind: 'pdf' | 'original'\n /** Sealed-box ciphertext (the user's personal key); decrypted on read. */\n data: Uint8Array\n /** MIME type, used to rebuild the Blob on read. */\n contentType: string\n /** Epoch ms when cached. */\n savedAt: number\n}\n\nlet dbInstance: IDBDatabase | null = null\n\nasync function openDB(): Promise<IDBDatabase> {\n if (dbInstance) return dbInstance\n\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(DB_NAME, DB_VERSION)\n request.onerror = () => reject(request.error)\n request.onsuccess = () => {\n const db = request.result\n // Another tab deleting the database (a sign-out) must not be blocked by this handle.\n db.onversionchange = () => {\n db.close()\n if (dbInstance === db) dbInstance = null\n }\n dbInstance = db\n resolve(db)\n }\n request.onupgradeneeded = (event) => {\n const db = (event.target as IDBOpenDBRequest).result\n if (!db.objectStoreNames.contains(STORE)) {\n db.createObjectStore(STORE, { keyPath: 'docExtId' })\n }\n }\n })\n}\n\nfunction promisify<T>(request: IDBRequest<T>): Promise<T> {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result)\n request.onerror = () => reject(request.error)\n })\n}\n\n/**\n * Open a fresh transaction and run the request creator synchronously.\n *\n * The DB handle is awaited first, then the transaction is created and the\n * request issued in the same microtask \u2014 never awaiting *between* opening the\n * transaction and using it, which would let it auto-close.\n */\nasync function withStore<T>(\n mode: IDBTransactionMode,\n run: (store: IDBObjectStore) => IDBRequest<T>\n): Promise<T> {\n const db = await openDB()\n const store = db.transaction(STORE, mode).objectStore(STORE)\n return promisify(run(store))\n}\n\nasync function putOfflineDocument(record: OfflineDocumentRecord): Promise<void> {\n await withStore('readwrite', (store) => store.put(record))\n}\n\nexport async function getOfflineDocument(\n docExtId: string\n): Promise<OfflineDocumentRecord | undefined> {\n const record = await withStore('readonly', (store) => store.get(docExtId))\n return record as OfflineDocumentRecord | undefined\n}\n\nasync function deleteOfflineDocument(docExtId: string): Promise<void> {\n await withStore('readwrite', (store) => store.delete(docExtId))\n}\n\nasync function listOfflineDocumentIds(): Promise<string[]> {\n const keys = await withStore('readonly', (store) => store.getAllKeys())\n return keys as string[]\n}\n\n/**\n * Ask the browser to mark this origin's storage as persistent, so the offline\n * cache isn't evicted under disk pressure (without this, IndexedDB is\n * \"best-effort\" and can be cleared). Best-effort + idempotent; returns whether\n * storage is persisted afterwards.\n */\nexport async function requestPersistentStorage(): Promise<boolean> {\n try {\n if (!navigator.storage?.persist || !navigator.storage.persisted) return false\n if (await navigator.storage.persisted()) return true\n return await navigator.storage.persist()\n } catch {\n return false\n }\n}\n\n/** Drop every document kept on this device (signing out: nothing stays behind). */\nexport async function wipeOfflineDocuments(): Promise<void> {\n dbInstance?.close()\n dbInstance = null\n await new Promise<void>((resolve) => {\n const request = indexedDB.deleteDatabase(DB_NAME)\n request.onsuccess = request.onerror = request.onblocked = () => resolve()\n })\n}\n\n/** Open a kept document's bytes (`undefined` when it is not kept on this device). */\nexport async function loadOfflineDocument(docId: string): Promise<Blob | undefined> {\n const record = await getOfflineDocument(docId)\n if (!record) return undefined\n const keypair = await getUserEncryptionKeypair()\n if (!keypair) throw new Error('Cannot open the offline copy: no personal key in this session')\n const bytes = sealedBoxDecrypt(bytesToBase64(record.data), keypair.secretKey)\n return new Blob([bytes as BlobPart], { type: record.contentType })\n}\n\n/**\n * Keep documents on this device: fetch what the viewer shows (the PDF, or for media the stored\n * file), seal it to the user's key and store it. One at a time; a failure stops the rest.\n */\nasync function keepDocumentsOffline(\n client: DocumentToolsClient,\n docs: WorkspaceDocument[]\n): Promise<void> {\n // Ask for durable storage so the pinned copies are not evicted later.\n await requestPersistentStorage()\n const keypair = await getUserEncryptionKeypair()\n if (!keypair) throw new Error('Could not derive an encryption key for the offline copy.')\n for (const doc of docs) {\n const original = usesOriginalBytesForViewer(doc.file_name)\n const blob = original\n ? await fetchDocumentFile(client, doc.external_id)\n : await fetchDocumentPdf(client, doc.external_id)\n const plain = new Uint8Array(await blob.arrayBuffer())\n await putOfflineDocument({\n docExtId: doc.external_id,\n fileName: getDocumentTitle(doc, 'document'),\n kind: original ? 'original' : 'pdf',\n data: base64ToBytes(sealedBoxEncrypt(plain, keypair.publicKey)),\n contentType: blob.type,\n savedAt: Date.now(),\n })\n }\n}\n\n/** The documents kept on this device (a local read: it runs offline too). */\nexport function useOfflineDocumentIds(): ReadonlySet<string> {\n const { data } = useQuery({\n queryKey: arbiQueryKeys.offlineDocuments(),\n queryFn: async () => new Set(await listOfflineDocumentIds()),\n staleTime: Infinity,\n // Offline the default network mode would hold this local read back, and a cold start\n // offline would lose every \"available offline\" badge.\n networkMode: 'always',\n })\n return data ?? EMPTY\n}\nconst EMPTY: ReadonlySet<string> = new Set()\n\n/**\n * Keep documents on this device. Their metadata goes into the cache too (the persister keeps it),\n * so a pinned document never opened online still has it offline; the host may then warm its\n * viewer code (`documents.onKeptOffline`) so it opens offline as well.\n */\nexport function useKeepDocumentsOffline() {\n const queryClient = useQueryClient()\n const arbi = useArbi()\n const { onKeptOffline } = useDocumentsSupport()\n return useMutation({\n mutationFn: async (docs: WorkspaceDocument[]) => {\n await keepDocumentsOffline(arbi.getClient().fetch, docs)\n for (const doc of docs) setCachedDocument(queryClient, doc)\n await onKeptOffline?.()\n return docs.length\n },\n onSettled: () => queryClient.invalidateQueries({ queryKey: arbiQueryKeys.offlineDocuments() }),\n onSuccess: (count) =>\n notify.success(`${count} document${count === 1 ? '' : 's'} available offline`),\n onError: () => notify.error('Could not save documents for offline use'),\n })\n}\n\n/** Stop keeping documents on this device. */\nexport function useRemoveDocumentsOffline() {\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: async (docIds: string[]) => {\n for (const id of docIds) await deleteOfflineDocument(id)\n return docIds.length\n },\n onSettled: () => queryClient.invalidateQueries({ queryKey: arbiQueryKeys.offlineDocuments() }),\n onSuccess: (count) =>\n notify.success(`Removed ${count} offline ${count === 1 ? 'copy' : 'copies'}`),\n onError: () => notify.error('Could not remove offline copy'),\n })\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }