@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,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/directmessages/grouping.ts"],
4
+ "sourcesContent": ["/**\n * Thread grouping: the two annotations a readable message list needs.\n *\n * A run is a burst from one sender close together in time; only its last\n * message carries the meta row (sender, time, receipt), so ten rapid messages\n * read as one block instead of ten stamped rows. A day boundary gets a\n * separator so a thread spanning weeks stays navigable.\n *\n * Generic over the message shape because the two consumers hold different ones \u2014\n * the block's `DmMessage` and the ARBI app's decrypted notification rows \u2014 and\n * duplicating this logic is exactly how they drifted apart before.\n */\n\n/** Two messages belong to the same run when same sender and within this gap. */\nexport const RUN_WINDOW_MS = 2 * 60 * 1000\n\nexport interface ThreadItem<T> {\n message: T\n /** Last of a same-sender run: render the meta row here. */\n isLastOfRun: boolean\n /** First message on its calendar day: render a date separator above it. */\n isFirstOfDay: boolean\n}\n\nexport interface ThreadAccessors<T> {\n senderId: (message: T) => string\n createdAt: (message: T) => string\n}\n\n/**\n * Local calendar day for a timestamp.\n *\n * Deliberately local rather than UTC: a message sent at 23:30 in the reader's\n * zone belongs under that day's separator, not tomorrow's. Falls back to the\n * raw string for an unparseable timestamp so such a message still buckets\n * consistently with itself rather than joining an arbitrary day.\n */\nexport function dayKey(iso: string): string {\n const d = new Date(iso)\n if (Number.isNaN(d.getTime())) return iso\n return `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`\n}\n\n/** Annotate messages (ascending time order) with run and day boundaries. */\nexport function annotateThread<T>(\n messages: T[],\n accessors: ThreadAccessors<T>,\n runWindowMs: number = RUN_WINDOW_MS\n): ThreadItem<T>[] {\n const { senderId, createdAt } = accessors\n return messages.map((message, i) => {\n const next = messages[i + 1]\n const prev = messages[i - 1]\n const day = dayKey(createdAt(message))\n\n const continuesIntoNext =\n !!next &&\n senderId(next) === senderId(message) &&\n dayKey(createdAt(next)) === day &&\n Date.parse(createdAt(next)) - Date.parse(createdAt(message)) < runWindowMs\n\n return {\n message,\n isLastOfRun: !continuesIntoNext,\n isFirstOfDay: !prev || dayKey(createdAt(prev)) !== day,\n }\n })\n}\n"],
5
+ "mappings": "AAcO,MAAM,gBAAgB,IAAI,KAAK;AAuB/B,SAAS,OAAO,KAAqB;AAC1C,QAAM,IAAI,IAAI,KAAK,GAAG;AACtB,MAAI,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAG,QAAO;AACtC,SAAO,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC9D;AAGO,SAAS,eACd,UACA,WACA,cAAsB,eACL;AACjB,QAAM,EAAE,UAAU,UAAU,IAAI;AAChC,SAAO,SAAS,IAAI,CAAC,SAAS,MAAM;AAClC,UAAM,OAAO,SAAS,IAAI,CAAC;AAC3B,UAAM,OAAO,SAAS,IAAI,CAAC;AAC3B,UAAM,MAAM,OAAO,UAAU,OAAO,CAAC;AAErC,UAAM,oBACJ,CAAC,CAAC,QACF,SAAS,IAAI,MAAM,SAAS,OAAO,KACnC,OAAO,UAAU,IAAI,CAAC,MAAM,OAC5B,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,KAAK,MAAM,UAAU,OAAO,CAAC,IAAI;AAEjE,WAAO;AAAA,MACL;AAAA,MACA,aAAa,CAAC;AAAA,MACd,cAAc,CAAC,QAAQ,OAAO,UAAU,IAAI,CAAC,MAAM;AAAA,IACrD;AAAA,EACF,CAAC;AACH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,81 @@
1
+ import { ConversationList } from "./ConversationList.js";
2
+ import { DmComposer } from "./DmComposer.js";
3
+ import { DmAvatar } from "./DmAvatar.js";
4
+ import {
5
+ applyAgentDmStatus,
6
+ applyChatEvent,
7
+ applyChatMessage,
8
+ applyChatRead,
9
+ applyChatUpdated,
10
+ appendToThread,
11
+ cachedChat,
12
+ cachedChats,
13
+ getOpenChat,
14
+ myChatId,
15
+ removeChat,
16
+ setOpenChat,
17
+ upsertChat
18
+ } from "./chat-cache.js";
19
+ import {
20
+ useAddChatMembers,
21
+ useAgentDmStatus,
22
+ useChatPost,
23
+ useChats,
24
+ useChatSummaries,
25
+ useChatThread,
26
+ useChatUnreadTotal,
27
+ useCreateGroupChat,
28
+ useDeleteChatMessage,
29
+ useMarkChatRead,
30
+ useRemoveChatMember,
31
+ useRenameChat,
32
+ useUnreadByPeer
33
+ } from "./useChats.js";
34
+ import { useChatArrivals } from "./arrivals.js";
35
+ import { userDisplayName, userInitials, formatRelativeTime } from "./utils.js";
36
+ import { DateSeparator } from "./DateSeparator.js";
37
+ import {
38
+ annotateThread,
39
+ dayKey,
40
+ RUN_WINDOW_MS
41
+ } from "./grouping.js";
42
+ export {
43
+ ConversationList,
44
+ DateSeparator,
45
+ DmAvatar,
46
+ DmComposer,
47
+ RUN_WINDOW_MS,
48
+ annotateThread,
49
+ appendToThread,
50
+ applyAgentDmStatus,
51
+ applyChatEvent,
52
+ applyChatMessage,
53
+ applyChatRead,
54
+ applyChatUpdated,
55
+ cachedChat,
56
+ cachedChats,
57
+ dayKey,
58
+ formatRelativeTime,
59
+ getOpenChat,
60
+ myChatId,
61
+ removeChat,
62
+ setOpenChat,
63
+ upsertChat,
64
+ useAddChatMembers,
65
+ useAgentDmStatus,
66
+ useChatArrivals,
67
+ useChatPost,
68
+ useChatSummaries,
69
+ useChatThread,
70
+ useChatUnreadTotal,
71
+ useChats,
72
+ useCreateGroupChat,
73
+ useDeleteChatMessage,
74
+ useMarkChatRead,
75
+ useRemoveChatMember,
76
+ useRenameChat,
77
+ useUnreadByPeer,
78
+ userDisplayName,
79
+ userInitials
80
+ };
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/directmessages/index.ts"],
4
+ "sourcesContent": ["/**\n * Direct messages: the one chat cache (direct, group and meeting chats), its hooks, and the\n * presentational parts (conversation rail, composer, avatar). The connected messenger, as a side\n * panel or a messages page, is `ConnectedMessenger` in `@arbidocs/blocks/connect`.\n */\n\nexport { ConversationList, type ConversationListProps } from './ConversationList'\nexport { DmComposer, type DmComposerProps } from './DmComposer'\nexport { DmAvatar, type DmAvatarProps } from './DmAvatar'\n// The one chat cache (direct, group and meeting chats) and its hooks.\nexport {\n applyAgentDmStatus,\n applyChatEvent,\n applyChatMessage,\n applyChatRead,\n applyChatUpdated,\n appendToThread,\n cachedChat,\n cachedChats,\n getOpenChat,\n myChatId,\n removeChat,\n setOpenChat,\n upsertChat,\n type AgentDmStatus,\n type ChatAttachmentFile,\n type ChatEvent,\n type ChatMemberKey,\n type ChatMessageResponse,\n type ChatResponse,\n type ChatThreadData,\n type ChatThreadMessage,\n type DecryptedChatMessage,\n} from './chat-cache'\nexport {\n useAddChatMembers,\n useAgentDmStatus,\n useChatPost,\n useChats,\n useChatSummaries,\n useChatThread,\n useChatUnreadTotal,\n useCreateGroupChat,\n useDeleteChatMessage,\n useMarkChatRead,\n useRemoveChatMember,\n useRenameChat,\n useUnreadByPeer,\n type ChatPost,\n type ChatSummary,\n} from './useChats'\n// Someone else's message arriving in a chat that is not open (a host's toast).\nexport { useChatArrivals, type ChatArrival } from './arrivals'\nexport type { DmConversation, DmMessage, DmUser, DmClassNames } from './types'\nexport { userDisplayName, userInitials, formatRelativeTime } from './utils'\nexport { DateSeparator, type DateSeparatorProps } from './DateSeparator'\nexport {\n annotateThread,\n dayKey,\n RUN_WINDOW_MS,\n type ThreadItem,\n type ThreadAccessors,\n} from './grouping'\n"],
5
+ "mappings": "AAMA,SAAS,wBAAoD;AAC7D,SAAS,kBAAwC;AACjD,SAAS,gBAAoC;AAE7C;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,OAUK;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,OAGK;AAEP,SAAS,uBAAyC;AAElD,SAAS,iBAAiB,cAAc,0BAA0B;AAClE,SAAS,qBAA8C;AACvD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;",
6
+ "names": []
7
+ }
@@ -0,0 +1,266 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
3
+ import { chats as chatOps } from "@arbidocs/sdk/browser";
4
+ import { useArbi } from "../useArbi.js";
5
+ import { arbiQueryKeys } from "../hooks.js";
6
+ import {
7
+ appendToThread,
8
+ deleteChatMessage,
9
+ dropFromThread,
10
+ myChatId,
11
+ removeChat,
12
+ upsertChat
13
+ } from "./chat-cache.js";
14
+ function useChats(options = {}) {
15
+ const arbi = useArbi();
16
+ return useQuery({
17
+ queryKey: arbiQueryKeys.chatList(),
18
+ queryFn: () => arbi.chats.list(),
19
+ enabled: (options.enabled ?? true) && arbi.isLoggedIn
20
+ });
21
+ }
22
+ function useAgentDmStatus(agentExtId) {
23
+ const { data } = useQuery({
24
+ queryKey: arbiQueryKeys.agentDmStatus(agentExtId ?? ""),
25
+ // Written by the events only: nothing to fetch.
26
+ queryFn: () => null,
27
+ enabled: false,
28
+ staleTime: Infinity
29
+ });
30
+ return agentExtId ? data ?? void 0 : void 0;
31
+ }
32
+ function useChatUnreadTotal() {
33
+ const { data = [] } = useChats();
34
+ return useMemo(() => data.reduce((sum, c) => sum + (c.unread_count ?? 0), 0), [data]);
35
+ }
36
+ function useUnreadByPeer() {
37
+ const arbi = useArbi();
38
+ const { data = [] } = useChats();
39
+ const me = myChatId(arbi);
40
+ return useMemo(() => {
41
+ const out = /* @__PURE__ */ new Map();
42
+ for (const c of data) {
43
+ if (c.kind !== "direct" || !c.unread_count) continue;
44
+ const peer = c.members.find((m) => m.user.external_id !== me)?.user.external_id ?? me;
45
+ if (peer) out.set(peer, (out.get(peer) ?? 0) + c.unread_count);
46
+ }
47
+ return out;
48
+ }, [data, me]);
49
+ }
50
+ function useChatSummaries(chats) {
51
+ const arbi = useArbi();
52
+ const queryClient = useQueryClient();
53
+ const [summaries, setSummaries] = useState({});
54
+ const runId = useRef(0);
55
+ const key = chats.map(
56
+ (c) => `${c.external_id}:${c.key_version}:${c.title ?? ""}:${c.last_message?.external_id ?? ""}:${c.last_message?.deleted ? "x" : ""}`
57
+ ).join("|");
58
+ useEffect(() => {
59
+ if (!chats.length || !arbi.isLoggedIn) return;
60
+ const id = ++runId.current;
61
+ void (async () => {
62
+ const next = {};
63
+ for (const chat of chats) {
64
+ const title = await arbi.chats.title(chat).catch(() => null);
65
+ const last = chat.last_message?.deleted ? null : chat.last_message;
66
+ let preview = null;
67
+ const open = queryClient.getQueryData(arbiQueryKeys.chatThread(chat.external_id))?.messages.find((m) => m.external_id === last?.external_id);
68
+ if (open) preview = chatOps.chatMessagePreview(open);
69
+ else if (last) {
70
+ preview = await arbi.chats.decrypt(chat, last).then(chatOps.chatMessagePreview).catch(() => chatOps.ENCRYPTED_PREVIEW);
71
+ }
72
+ next[chat.external_id] = { title, preview };
73
+ }
74
+ if (id === runId.current) setSummaries(next);
75
+ })();
76
+ }, [key, arbi]);
77
+ return summaries;
78
+ }
79
+ function useChatThread(chat) {
80
+ const arbi = useArbi();
81
+ const queryClient = useQueryClient();
82
+ const chatExtId = chat?.external_id ?? "";
83
+ const chatRef = useRef(chat);
84
+ chatRef.current = chat;
85
+ const query = useQuery({
86
+ queryKey: arbiQueryKeys.chatThread(chatExtId),
87
+ queryFn: () => arbi.chats.page(chatRef.current),
88
+ enabled: !!chat && arbi.isLoggedIn,
89
+ staleTime: Infinity
90
+ });
91
+ const [loadingOlder, setLoadingOlder] = useState(false);
92
+ const loadOlder = useCallback(async () => {
93
+ const key = arbiQueryKeys.chatThread(chatExtId);
94
+ const current = queryClient.getQueryData(key);
95
+ const oldest = current?.messages.find((m) => !m.optimistic);
96
+ if (!chatRef.current || !current?.hasMore || !oldest) return;
97
+ setLoadingOlder(true);
98
+ try {
99
+ const page = await arbi.chats.page(chatRef.current, { before: oldest.external_id });
100
+ queryClient.setQueryData(
101
+ key,
102
+ (old) => old ? {
103
+ hasMore: page.hasMore,
104
+ messages: [
105
+ ...page.messages.filter(
106
+ (m) => !old.messages.some((o) => o.external_id === m.external_id)
107
+ ),
108
+ ...old.messages
109
+ ]
110
+ } : old
111
+ );
112
+ } finally {
113
+ setLoadingOlder(false);
114
+ }
115
+ }, [arbi, queryClient, chatExtId]);
116
+ return {
117
+ messages: query.data?.messages ?? [],
118
+ hasMore: query.data?.hasMore ?? false,
119
+ isLoading: query.isLoading && !!chat,
120
+ loadOlder,
121
+ loadingOlder
122
+ };
123
+ }
124
+ function useChatPost() {
125
+ const arbi = useArbi();
126
+ const queryClient = useQueryClient();
127
+ return useCallback(
128
+ async (target, post) => {
129
+ const me = myChatId(arbi);
130
+ if (!me) throw new Error("No active session");
131
+ let chat = target.chat;
132
+ if (!chat) {
133
+ if (!target.peerExtId) throw new Error("Could not resolve the conversation");
134
+ chat = await arbi.chats.openDirect(target.peerExtId);
135
+ upsertChat(queryClient, chat);
136
+ queryClient.setQueryData(
137
+ arbiQueryKeys.chatThread(chat.external_id),
138
+ (old) => old ?? { messages: [], hasMore: false }
139
+ );
140
+ }
141
+ const files = post.files ?? [];
142
+ const optimisticId = `optimistic-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
143
+ const now = (/* @__PURE__ */ new Date()).toISOString();
144
+ const optimistic = {
145
+ external_id: optimisticId,
146
+ chat_ext_id: chat.external_id,
147
+ sender_ext_id: me,
148
+ kind: "text",
149
+ content: post.text,
150
+ key_version: chat.key_version,
151
+ deleted: false,
152
+ context_only: !!post.contextOnly,
153
+ workspace_ext_id: post.workspaceExtId ?? null,
154
+ created_at: now,
155
+ updated_at: now,
156
+ optimistic: true
157
+ };
158
+ appendToThread(queryClient, chat.external_id, optimistic);
159
+ try {
160
+ let attachments = [];
161
+ if (files.length) {
162
+ chatOps.checkChatAttachmentLimits(files);
163
+ attachments = await arbi.chats.uploadAttachments(
164
+ await Promise.all(
165
+ files.map(async (file) => ({
166
+ name: file.name,
167
+ type: file.type,
168
+ bytes: new Uint8Array(await file.arrayBuffer())
169
+ }))
170
+ )
171
+ );
172
+ }
173
+ const message = await arbi.chats.send(chat, post.text, {
174
+ attachments,
175
+ ...post.workspaceExtId ? { workspaceExtId: post.workspaceExtId } : {},
176
+ contextOnly: !!post.contextOnly
177
+ });
178
+ appendToThread(queryClient, chat.external_id, message, optimisticId);
179
+ upsertChat(queryClient, {
180
+ ...chat,
181
+ last_message: message,
182
+ last_message_at: message.created_at
183
+ });
184
+ return { chat, message };
185
+ } catch (err) {
186
+ dropFromThread(queryClient, chat.external_id, optimisticId);
187
+ void queryClient.invalidateQueries({ queryKey: arbiQueryKeys.chatList() });
188
+ throw err;
189
+ }
190
+ },
191
+ [arbi, queryClient]
192
+ );
193
+ }
194
+ function useDeleteChatMessage() {
195
+ const arbi = useArbi();
196
+ const queryClient = useQueryClient();
197
+ return useCallback(
198
+ (chatExtId, messageExtId) => deleteChatMessage(arbi, queryClient, chatExtId, messageExtId),
199
+ [arbi, queryClient]
200
+ );
201
+ }
202
+ function useMarkChatRead() {
203
+ const arbi = useArbi();
204
+ const queryClient = useQueryClient();
205
+ return useCallback(
206
+ (chat, messageExtId) => {
207
+ upsertChat(queryClient, { ...chat, unread_count: 0 });
208
+ return arbi.chats.markRead(chat.external_id, messageExtId).then(
209
+ () => void 0,
210
+ () => void 0
211
+ );
212
+ },
213
+ [arbi, queryClient]
214
+ );
215
+ }
216
+ function useCreateGroupChat() {
217
+ const arbi = useArbi();
218
+ const queryClient = useQueryClient();
219
+ return useMutation({
220
+ mutationFn: (params) => arbi.chats.createGroup(params),
221
+ onSuccess: (chat) => upsertChat(queryClient, chat)
222
+ });
223
+ }
224
+ function useRenameChat() {
225
+ const arbi = useArbi();
226
+ const queryClient = useQueryClient();
227
+ return useMutation({
228
+ mutationFn: (vars) => arbi.chats.rename(vars.chat, vars.title),
229
+ onSuccess: (chat) => upsertChat(queryClient, chat)
230
+ });
231
+ }
232
+ function useAddChatMembers() {
233
+ const arbi = useArbi();
234
+ const queryClient = useQueryClient();
235
+ return useMutation({
236
+ mutationFn: (vars) => arbi.chats.addMembers(vars.chat, vars.members, { callKey: vars.callKey }),
237
+ onSuccess: (chat) => upsertChat(queryClient, chat)
238
+ });
239
+ }
240
+ function useRemoveChatMember() {
241
+ const arbi = useArbi();
242
+ const queryClient = useQueryClient();
243
+ return useMutation({
244
+ mutationFn: (vars) => arbi.chats.removeMember(vars.chat, vars.userExtId),
245
+ onSuccess: (_data, vars) => {
246
+ if (vars.userExtId === myChatId(arbi)) removeChat(queryClient, vars.chat.external_id);
247
+ else return queryClient.invalidateQueries({ queryKey: arbiQueryKeys.chatList() });
248
+ }
249
+ });
250
+ }
251
+ export {
252
+ useAddChatMembers,
253
+ useAgentDmStatus,
254
+ useChatPost,
255
+ useChatSummaries,
256
+ useChatThread,
257
+ useChatUnreadTotal,
258
+ useChats,
259
+ useCreateGroupChat,
260
+ useDeleteChatMessage,
261
+ useMarkChatRead,
262
+ useRemoveChatMember,
263
+ useRenameChat,
264
+ useUnreadByPeer
265
+ };
266
+ //# sourceMappingURL=useChats.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/directmessages/useChats.ts"],
4
+ "sourcesContent": ["/**\n * Chat hooks on the one chat cache (`chat-cache.ts`): my chats, unread totals, decrypted list\n * previews, one open thread, and the writes (send, delete, read, groups). Everything runs on the\n * SDK's end-to-end encrypted `arbi.chats`; nothing here touches keys or ciphertext.\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\nimport { chats as chatOps } from '@arbidocs/sdk/browser'\nimport { useArbi } from '../useArbi'\nimport { arbiQueryKeys } from '../hooks'\nimport {\n appendToThread,\n deleteChatMessage,\n dropFromThread,\n myChatId,\n removeChat,\n upsertChat,\n type AgentDmStatus,\n type ChatMemberKey,\n type ChatResponse,\n type ChatThreadData,\n type ChatThreadMessage,\n} from './chat-cache'\n\n/** My chats (raw), most recently active first. */\nexport function useChats(options: { enabled?: boolean } = {}) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.chatList(),\n queryFn: () => arbi.chats.list(),\n enabled: (options.enabled ?? true) && arbi.isLoggedIn,\n })\n}\n\n/** My own agent's latest progress on a message I sent it, live from the chat events. */\nexport function useAgentDmStatus(agentExtId: string | null | undefined): AgentDmStatus | undefined {\n const { data } = useQuery<AgentDmStatus | null>({\n queryKey: arbiQueryKeys.agentDmStatus(agentExtId ?? ''),\n // Written by the events only: nothing to fetch.\n queryFn: () => null,\n enabled: false,\n staleTime: Infinity,\n })\n return agentExtId ? (data ?? undefined) : undefined\n}\n\n/** Unread messages across all my chats (the badge on the messages entry points). */\nexport function useChatUnreadTotal(): number {\n const { data = [] } = useChats()\n return useMemo(() => data.reduce((sum, c) => sum + (c.unread_count ?? 0), 0), [data])\n}\n\n/** Unread count per direct-chat peer (`usr-`/`agt-` id), for per-person badges and filters. */\nexport function useUnreadByPeer(): Map<string, number> {\n const arbi = useArbi()\n const { data = [] } = useChats()\n const me = myChatId(arbi)\n return useMemo(() => {\n const out = new Map<string, number>()\n for (const c of data) {\n if (c.kind !== 'direct' || !c.unread_count) continue\n const peer = c.members.find((m) => m.user.external_id !== me)?.user.external_id ?? me\n if (peer) out.set(peer, (out.get(peer) ?? 0) + c.unread_count)\n }\n return out\n }, [data, me])\n}\n\nexport interface ChatSummary {\n /** Decrypted group title (null for direct chats or one that does not open). */\n title: string | null\n /** Decrypted last message, one line. */\n preview: string | null\n}\n\n/**\n * Decrypted titles and last-message previews for a list of chats. Only the newest message of\n * each chat is decrypted \u2014 a thread decrypts in full when it is opened, and its copy is used.\n */\nexport function useChatSummaries(chats: ChatResponse[]): Record<string, ChatSummary> {\n const arbi = useArbi()\n const queryClient = useQueryClient()\n const [summaries, setSummaries] = useState<Record<string, ChatSummary>>({})\n const runId = useRef(0)\n const key = chats\n .map(\n (c) =>\n `${c.external_id}:${c.key_version}:${c.title ?? ''}:${c.last_message?.external_id ?? ''}:${c.last_message?.deleted ? 'x' : ''}`\n )\n .join('|')\n\n useEffect(() => {\n if (!chats.length || !arbi.isLoggedIn) return\n const id = ++runId.current\n void (async () => {\n const next: Record<string, ChatSummary> = {}\n for (const chat of chats) {\n const title = await arbi.chats.title(chat).catch(() => null)\n // A tombstone is never a preview (nor decrypted): the refetched chat brings the one before.\n const last = chat.last_message?.deleted ? null : chat.last_message\n let preview: string | null = null\n // The open thread's copy: my own post reaches the list already decrypted (as the send\n // returns it), and plaintext does not decrypt.\n const open = queryClient\n .getQueryData<ChatThreadData>(arbiQueryKeys.chatThread(chat.external_id))\n ?.messages.find((m) => m.external_id === last?.external_id)\n if (open) preview = chatOps.chatMessagePreview(open)\n else if (last) {\n preview = await arbi.chats\n .decrypt(chat, last)\n .then(chatOps.chatMessagePreview)\n .catch(() => chatOps.ENCRYPTED_PREVIEW)\n }\n next[chat.external_id] = { title, preview }\n }\n if (id === runId.current) setSummaries(next)\n })()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [key, arbi])\n\n return summaries\n}\n\n/**\n * One open thread: the newest page decrypted (oldest first), kept live by the chat events, with\n * `loadOlder` paging backwards.\n */\nexport function useChatThread(chat: ChatResponse | null) {\n const arbi = useArbi()\n const queryClient = useQueryClient()\n const chatExtId = chat?.external_id ?? ''\n const chatRef = useRef(chat)\n chatRef.current = chat\n const query = useQuery<ChatThreadData>({\n queryKey: arbiQueryKeys.chatThread(chatExtId),\n queryFn: () => arbi.chats.page(chatRef.current!),\n enabled: !!chat && arbi.isLoggedIn,\n staleTime: Infinity,\n })\n const [loadingOlder, setLoadingOlder] = useState(false)\n\n const loadOlder = useCallback(async () => {\n const key = arbiQueryKeys.chatThread(chatExtId)\n const current = queryClient.getQueryData<ChatThreadData>(key)\n const oldest = current?.messages.find((m) => !m.optimistic)\n if (!chatRef.current || !current?.hasMore || !oldest) return\n setLoadingOlder(true)\n try {\n const page = await arbi.chats.page(chatRef.current, { before: oldest.external_id })\n queryClient.setQueryData<ChatThreadData>(key, (old) =>\n old\n ? {\n hasMore: page.hasMore,\n messages: [\n ...page.messages.filter(\n (m) => !old.messages.some((o) => o.external_id === m.external_id)\n ),\n ...old.messages,\n ],\n }\n : old\n )\n } finally {\n setLoadingOlder(false)\n }\n }, [arbi, queryClient, chatExtId])\n\n return {\n messages: query.data?.messages ?? [],\n hasMore: query.data?.hasMore ?? false,\n isLoading: query.isLoading && !!chat,\n loadOlder,\n loadingOlder,\n }\n}\n\n/** What to post: text, files and (PA chat only) the agent's workspace or a context note. */\nexport interface ChatPost {\n text: string\n files?: File[]\n /** PA chat only: the workspace my agent acts in. */\n workspaceExtId?: string\n /** PA chat only: a note the agent records without replying. */\n contextOnly?: boolean\n}\n\n/**\n * Post to a chat, rendering an optimistic copy at once and swapping in the server's row. With no\n * chat yet, `peerExtId`'s direct chat is opened (created) first. Files are encrypted with their\n * own keys and travel in a manifest under the chat key. A failure drops the optimistic row,\n * refreshes the list (a stale epoch re-keys on the next try) and rethrows.\n */\nexport function useChatPost() {\n const arbi = useArbi()\n const queryClient = useQueryClient()\n return useCallback(\n async (\n target: { chat: ChatResponse | null; peerExtId?: string | null },\n post: ChatPost\n ): Promise<{ chat: ChatResponse; message: chatOps.DecryptedChatMessage }> => {\n const me = myChatId(arbi)\n if (!me) throw new Error('No active session')\n let chat = target.chat\n if (!chat) {\n if (!target.peerExtId) throw new Error('Could not resolve the conversation')\n chat = await arbi.chats.openDirect(target.peerExtId)\n upsertChat(queryClient, chat)\n queryClient.setQueryData<ChatThreadData>(\n arbiQueryKeys.chatThread(chat.external_id),\n (old) => old ?? { messages: [], hasMore: false }\n )\n }\n const files = post.files ?? []\n const optimisticId = `optimistic-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`\n const now = new Date().toISOString()\n const optimistic: ChatThreadMessage = {\n external_id: optimisticId,\n chat_ext_id: chat.external_id,\n sender_ext_id: me,\n kind: 'text',\n content: post.text,\n key_version: chat.key_version,\n deleted: false,\n context_only: !!post.contextOnly,\n workspace_ext_id: post.workspaceExtId ?? null,\n created_at: now,\n updated_at: now,\n optimistic: true,\n }\n appendToThread(queryClient, chat.external_id, optimistic)\n try {\n let attachments: chatOps.ChatAttachmentFile[] = []\n if (files.length) {\n // Refuse before reading any file into memory.\n chatOps.checkChatAttachmentLimits(files)\n attachments = await arbi.chats.uploadAttachments(\n await Promise.all(\n files.map(async (file) => ({\n name: file.name,\n type: file.type,\n bytes: new Uint8Array(await file.arrayBuffer()),\n }))\n )\n )\n }\n const message = await arbi.chats.send(chat, post.text, {\n attachments,\n ...(post.workspaceExtId ? { workspaceExtId: post.workspaceExtId } : {}),\n contextOnly: !!post.contextOnly,\n })\n appendToThread(queryClient, chat.external_id, message, optimisticId)\n upsertChat(queryClient, {\n ...chat,\n last_message: message,\n last_message_at: message.created_at,\n })\n return { chat, message }\n } catch (err) {\n dropFromThread(queryClient, chat.external_id, optimisticId)\n void queryClient.invalidateQueries({ queryKey: arbiQueryKeys.chatList() })\n throw err\n }\n },\n [arbi, queryClient]\n )\n}\n\n/** Delete one of my messages: a tombstone in place at once, rolled back if the delete fails. */\nexport function useDeleteChatMessage() {\n const arbi = useArbi()\n const queryClient = useQueryClient()\n return useCallback(\n (chatExtId: string, messageExtId: string) =>\n deleteChatMessage(arbi, queryClient, chatExtId, messageExtId),\n [arbi, queryClient]\n )\n}\n\n/**\n * Move my read watermark in a chat to a message (or to now). The list shows it read at once; a\n * failure is ignored (the next open tries again).\n */\nexport function useMarkChatRead() {\n const arbi = useArbi()\n const queryClient = useQueryClient()\n return useCallback(\n (chat: ChatResponse, messageExtId?: string) => {\n upsertChat(queryClient, { ...chat, unread_count: 0 })\n return arbi.chats.markRead(chat.external_id, messageExtId).then(\n () => undefined,\n () => undefined\n )\n },\n [arbi, queryClient]\n )\n}\n\n/** Create a group (members need encryption keys; agents are refused) and add it to the list. */\nexport function useCreateGroupChat() {\n const arbi = useArbi()\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: (params: { title?: string | null; members: ChatMemberKey[] }) =>\n arbi.chats.createGroup(params),\n onSuccess: (chat) => upsertChat(queryClient, chat),\n })\n}\n\n/** Rename a group (the title is encrypted under the current epoch). */\nexport function useRenameChat() {\n const arbi = useArbi()\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: (vars: { chat: ChatResponse; title: string | null }) =>\n arbi.chats.rename(vars.chat, vars.title),\n onSuccess: (chat) => upsertChat(queryClient, chat),\n })\n}\n\n/** Add people to a group, or to a meeting chat with its call key (`callKey`). */\nexport function useAddChatMembers() {\n const arbi = useArbi()\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: (vars: {\n chat: ChatResponse\n members: ChatMemberKey[]\n callKey?: Uint8Array | null\n }) => arbi.chats.addMembers(vars.chat, vars.members, { callKey: vars.callKey }),\n onSuccess: (chat) => upsertChat(queryClient, chat),\n })\n}\n\n/**\n * Remove someone from a group (owner) or leave it (my own id). Leaving drops the chat at once;\n * a removal refreshes the list (the chat now has a new epoch).\n */\nexport function useRemoveChatMember() {\n const arbi = useArbi()\n const queryClient = useQueryClient()\n return useMutation({\n mutationFn: (vars: { chat: ChatResponse; userExtId: string }) =>\n arbi.chats.removeMember(vars.chat, vars.userExtId),\n onSuccess: (_data, vars) => {\n if (vars.userExtId === myChatId(arbi)) removeChat(queryClient, vars.chat.external_id)\n else return queryClient.invalidateQueries({ queryKey: arbiQueryKeys.chatList() })\n },\n })\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,23 @@
1
+ function userInitials(user) {
2
+ const parts = [user.given_name, user.family_name].filter(Boolean);
3
+ if (parts.length) {
4
+ return parts.map((p) => p[0]?.toUpperCase() ?? "").join("").slice(0, 2);
5
+ }
6
+ const local = user.email?.split("@")[0] ?? "";
7
+ return local.slice(0, 2).toUpperCase() || "?";
8
+ }
9
+ function userDisplayName(user) {
10
+ const name = [user.given_name, user.family_name].filter(Boolean).join(" ").trim();
11
+ return name || user.email?.split("@")[0] || "Unknown";
12
+ }
13
+ function isAgentUser(user) {
14
+ return user.external_id.startsWith("agt-");
15
+ }
16
+ import { formatRelativeTime } from "../lib/format-relative-time.js";
17
+ export {
18
+ formatRelativeTime,
19
+ isAgentUser,
20
+ userDisplayName,
21
+ userInitials
22
+ };
23
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/directmessages/utils.ts"],
4
+ "sourcesContent": ["/** Small presentation helpers for the DM kit. */\n\nimport type { DmUser } from './types'\n\n/** Initials from a user's name (falls back to the email local-part). */\nexport function userInitials(user: Pick<DmUser, 'given_name' | 'family_name' | 'email'>): string {\n const parts = [user.given_name, user.family_name].filter(Boolean) as string[]\n if (parts.length) {\n return parts\n .map((p) => p[0]?.toUpperCase() ?? '')\n .join('')\n .slice(0, 2)\n }\n const local = user.email?.split('@')[0] ?? ''\n return local.slice(0, 2).toUpperCase() || '?'\n}\n\n/** Full display name (falls back to the email local-part). */\nexport function userDisplayName(\n user: Pick<DmUser, 'given_name' | 'family_name' | 'email'>\n): string {\n const name = [user.given_name, user.family_name].filter(Boolean).join(' ').trim()\n return name || user.email?.split('@')[0] || 'Unknown'\n}\n\n/**\n * Whether a peer is an agent rather than a person.\n *\n * Derived from the `agt-` external-id prefix, which is the platform's own\n * convention and already assumed elsewhere in the kit (entity colours are keyed\n * off the same ids). Deriving it once here is what lets every DM surface mark\n * agents without each consumer having to resolve and pass a flag.\n */\nexport function isAgentUser(user: Pick<DmUser, 'external_id'>): boolean {\n return user.external_id.startsWith('agt-')\n}\n\nexport { formatRelativeTime } from '../lib/format-relative-time'\n"],
5
+ "mappings": "AAKO,SAAS,aAAa,MAAoE;AAC/F,QAAM,QAAQ,CAAC,KAAK,YAAY,KAAK,WAAW,EAAE,OAAO,OAAO;AAChE,MAAI,MAAM,QAAQ;AAChB,WAAO,MACJ,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,YAAY,KAAK,EAAE,EACpC,KAAK,EAAE,EACP,MAAM,GAAG,CAAC;AAAA,EACf;AACA,QAAM,QAAQ,KAAK,OAAO,MAAM,GAAG,EAAE,CAAC,KAAK;AAC3C,SAAO,MAAM,MAAM,GAAG,CAAC,EAAE,YAAY,KAAK;AAC5C;AAGO,SAAS,gBACd,MACQ;AACR,QAAM,OAAO,CAAC,KAAK,YAAY,KAAK,WAAW,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK;AAChF,SAAO,QAAQ,KAAK,OAAO,MAAM,GAAG,EAAE,CAAC,KAAK;AAC9C;AAUO,SAAS,YAAY,MAA4C;AACtE,SAAO,KAAK,YAAY,WAAW,MAAM;AAC3C;AAEA,SAAS,0BAA0B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ function canAnnotate(s) {
2
+ return s.activeTab === "pdf" && s.hasPdf && !s.isImage && !s.isVideo && !s.isAudio && !s.isDownloadOnly && !s.isDraft && !s.isStreaming && !s.isSnapshot && !s.isComparing;
3
+ }
4
+ export {
5
+ canAnnotate
6
+ };
7
+ //# sourceMappingURL=can-annotate.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/document-tools/can-annotate.ts"],
4
+ "sourcesContent": ["/**\n * Whether the document on screen can be annotated: only a PDF the viewer is actually showing.\n * Text and Word files are shown as a PDF too, so they qualify; images, audio, video, files that\n * cannot be previewed, drafts and streaming output do not, and neither does a read-only snapshot\n * or a comparison.\n */\n\nexport interface AnnotatableState {\n activeTab: string\n /** The PDF bytes have been fetched. */\n hasPdf: boolean\n isImage: boolean\n isVideo: boolean\n isAudio: boolean\n isDownloadOnly: boolean\n isDraft: boolean\n isStreaming: boolean\n isSnapshot: boolean\n isComparing: boolean\n}\n\nexport function canAnnotate(s: AnnotatableState): boolean {\n return (\n s.activeTab === 'pdf' &&\n s.hasPdf &&\n !s.isImage &&\n !s.isVideo &&\n !s.isAudio &&\n !s.isDownloadOnly &&\n !s.isDraft &&\n !s.isStreaming &&\n !s.isSnapshot &&\n !s.isComparing\n )\n}\n"],
5
+ "mappings": "AAqBO,SAAS,YAAY,GAA8B;AACxD,SACE,EAAE,cAAc,SAChB,EAAE,UACF,CAAC,EAAE,WACH,CAAC,EAAE,WACH,CAAC,EAAE,WACH,CAAC,EAAE,kBACH,CAAC,EAAE,WACH,CAAC,EAAE,eACH,CAAC,EAAE,cACH,CAAC,EAAE;AAEP;",
6
+ "names": []
7
+ }