@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
@@ -1,1011 +0,0 @@
1
- import { useDocumentTools, SIGNED_LOCKED_REASON, fetchMarkupPdf, fetchDocumentFile, fetchDocumentPdf } from './chunk-QMY2JKBI.js';
2
- import { mergeLayers, AnnotationStoreOfflineError } from './chunk-T4CLW3DN.js';
3
- import { parseLayer, emptyLayer, LAYER_SCHEMA_VERSION } from './chunk-T3USOSVN.js';
4
- import { documentBytesKey, arbiQueryKeys, useArbiHost } from './chunk-ZM6N7YZH.js';
5
- import { parseVersionRef } from './chunk-UW2SGTI5.js';
6
- import { useMemo, useState, useCallback, useEffect, useSyncExternalStore } from 'react';
7
- import { onlineManager, useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
8
- import { unlockIdentityWithPassword, signMessage, getUserEncryptionKeypair, sealedBoxDecrypt, sealedBoxEncrypt, initSodium } from '@arbidocs/client';
9
- import { workspaces } from '@arbidocs/sdk/browser';
10
-
11
- // src/document-tools/markup-store.ts
12
- var MAX_MERGE_ATTEMPTS = 5;
13
- var KEEPALIVE_LIMIT = 6e4;
14
- var MarkupStoreError = class extends Error {
15
- constructor(message, status) {
16
- super(message);
17
- this.status = status;
18
- this.name = "MarkupStoreError";
19
- }
20
- status;
21
- };
22
- var detailOf = (error, fallback) => {
23
- const detail3 = error?.detail;
24
- return typeof detail3 === "string" ? detail3 : fallback;
25
- };
26
- async function call(request) {
27
- try {
28
- return await request();
29
- } catch (e) {
30
- if (e instanceof TypeError || typeof navigator !== "undefined" && !navigator.onLine) {
31
- throw new AnnotationStoreOfflineError();
32
- }
33
- throw e;
34
- }
35
- }
36
- function createMarkupStore({ version, client, onSaved }) {
37
- let revision = 0;
38
- let count = 0;
39
- let canEdit = false;
40
- let base = null;
41
- const seen = /* @__PURE__ */ new Set();
42
- const remember = (layer) => {
43
- for (const a of layer.annotations) seen.add(a.id);
44
- };
45
- const query = version ? { version } : {};
46
- async function read(documentId, ifNoneMatch) {
47
- const { data, error, response } = await call(
48
- () => client.GET("/v1/document/{document_ext_id}/markup", {
49
- params: { path: { document_ext_id: documentId }, query },
50
- headers: ifNoneMatch === void 0 ? void 0 : { "If-None-Match": `"${ifNoneMatch}"` }
51
- })
52
- );
53
- if (response.status === 304) return null;
54
- if (error || !data) {
55
- throw new MarkupStoreError(
56
- detailOf(error, `The markup could not be loaded (${response.status})`),
57
- response.status
58
- );
59
- }
60
- const layer = parseLayer({
61
- schema: LAYER_SCHEMA_VERSION,
62
- documentId,
63
- annotations: data.annotations ?? [],
64
- updatedAt: data.updated_at ?? (/* @__PURE__ */ new Date()).toISOString()
65
- });
66
- return { revision: data.revision ?? 0, layer, canEdit: !!data.can_edit };
67
- }
68
- function adopt(server) {
69
- revision = server.revision;
70
- canEdit = server.canEdit;
71
- base = server.layer;
72
- count = server.layer.annotations.length;
73
- remember(server.layer);
74
- }
75
- async function put(layer, from) {
76
- return call(
77
- () => client.PUT("/v1/document/{document_ext_id}/markup", {
78
- params: { path: { document_ext_id: layer.documentId }, query },
79
- headers: { "If-Match": `"${from}"` },
80
- body: { annotations: layer.annotations, base_revision: from },
81
- // A save started as the page closes must outlive it; browsers cap such bodies at 64 KB.
82
- keepalive: JSON.stringify(layer.annotations).length < KEEPALIVE_LIMIT
83
- })
84
- );
85
- }
86
- return {
87
- snapshot: () => ({ revision, count, canEdit }),
88
- canEdit: () => canEdit,
89
- async load(documentId) {
90
- const server = await read(documentId);
91
- if (!server) throw new MarkupStoreError("The markup could not be loaded");
92
- adopt(server);
93
- return server.layer;
94
- },
95
- async save(layer) {
96
- remember(layer);
97
- let mine = layer;
98
- for (let attempt = 0; attempt < MAX_MERGE_ATTEMPTS; attempt++) {
99
- const { data, error, response } = await put(mine, revision);
100
- if (response.ok && data) {
101
- revision = data.revision;
102
- count = data.count;
103
- base = mine;
104
- remember(mine);
105
- onSaved?.({ revision, count, canEdit });
106
- return mine;
107
- }
108
- if (response.status === 409) {
109
- const latest = await read(layer.documentId);
110
- if (!latest) throw new MarkupStoreError("The markup could not be re-read");
111
- const deleted = new Set(
112
- [...seen].filter((id) => !mine.annotations.some((a) => a.id === id))
113
- );
114
- const merged = mergeLayers({ base, mine, theirs: latest.layer, deleted });
115
- revision = latest.revision;
116
- canEdit = latest.canEdit;
117
- base = latest.layer;
118
- remember(latest.layer);
119
- mine = merged;
120
- continue;
121
- }
122
- if (response.status === 403) canEdit = false;
123
- throw new MarkupStoreError(
124
- detailOf(error, `The markup could not be saved (${response.status})`),
125
- response.status
126
- );
127
- }
128
- throw new MarkupStoreError("The markup keeps changing; it will be saved on the next edit");
129
- },
130
- async pull(documentId) {
131
- const server = await read(documentId, revision);
132
- if (!server || server.revision === revision) return null;
133
- adopt(server);
134
- return server.layer;
135
- }
136
- };
137
- }
138
-
139
- // src/document-tools/markup-transfer.ts
140
- var LEGACY_LAYER_PREFIX = "arbi:annotations:";
141
- function storage() {
142
- try {
143
- return typeof localStorage === "undefined" ? void 0 : localStorage;
144
- } catch {
145
- return void 0;
146
- }
147
- }
148
- function readLegacyLayer(documentId) {
149
- try {
150
- const raw = storage()?.getItem(LEGACY_LAYER_PREFIX + documentId);
151
- if (!raw) return null;
152
- return parseLayer(JSON.parse(raw));
153
- } catch {
154
- return null;
155
- }
156
- }
157
- function forgetLegacyLayer(documentId) {
158
- try {
159
- storage()?.removeItem(LEGACY_LAYER_PREFIX + documentId);
160
- } catch {
161
- }
162
- }
163
- function marksByVersion(layer, versions) {
164
- const sorted = [...versions].sort((a, b) => a.n - b.n);
165
- const out = /* @__PURE__ */ new Map();
166
- for (const mark of layer.annotations) {
167
- const at = Date.parse(mark.createdAt);
168
- let target = sorted[0]?.n ?? 1;
169
- for (const v of sorted) {
170
- const created = v.created_at ? Date.parse(v.created_at) : Number.NaN;
171
- if (!Number.isNaN(created) && !Number.isNaN(at) && created <= at) target = v.n;
172
- }
173
- out.set(target, [...out.get(target) ?? [], mark]);
174
- }
175
- return out;
176
- }
177
- async function addToMarkup(documentId, version, marks, client) {
178
- const store = createMarkupStore({ version, client });
179
- const current = await store.load(documentId);
180
- const incoming = {
181
- ...emptyLayer(documentId, (/* @__PURE__ */ new Date()).toISOString()),
182
- annotations: marks
183
- };
184
- const merged = mergeLayers({ base: null, mine: current, theirs: incoming });
185
- const added = merged.annotations.length - current.annotations.length;
186
- if (added > 0) await store.save(parseLayer({ ...merged, schema: LAYER_SCHEMA_VERSION }));
187
- return added;
188
- }
189
- async function migrateLegacyLayer(documentId, layer, versions, currentVersion, client) {
190
- let added = 0;
191
- for (const [n, marks] of marksByVersion(layer, versions.length ? versions : [{ n: 1 }])) {
192
- added += await addToMarkup(documentId, n === currentVersion ? void 0 : n, marks, client);
193
- }
194
- forgetLegacyLayer(documentId);
195
- return added;
196
- }
197
- async function openThreadsOf(documentId, version, client) {
198
- const layer = await createMarkupStore({ version, client }).load(documentId);
199
- return layer.annotations.filter((a) => a.kind === "comment" && !a.resolved);
200
- }
201
- async function copyOpenThreads(documentId, fromVersion, client) {
202
- const threads = await openThreadsOf(documentId, fromVersion, client);
203
- if (!threads.length) return 0;
204
- return addToMarkup(documentId, void 0, threads, client);
205
- }
206
- function versionsWithMarkup(versions) {
207
- return (versions ?? []).filter((v) => (v.markup_count ?? 0) > 0);
208
- }
209
- var SIGNED_UNCHANGED = "The signed PDF is unchanged: the comments are kept beside it as markup.";
210
- function useDocumentMarkup(documentData, snapshotVersion, currentSigned = false) {
211
- const { client, notify, saveFile, onDocumentsChanged } = useDocumentTools();
212
- const documentId = documentData?.external_id;
213
- const currentVersion = documentData?.current_version ?? 1;
214
- const shownVersion = snapshotVersion ?? currentVersion;
215
- const versions = useMemo(() => documentData?.versions ?? [], [documentData?.versions]);
216
- const [localCounts, setLocalCounts] = useState({});
217
- const countOf = useCallback(
218
- (n) => localCounts[`${documentId}@${n}`] ?? versions.find((v) => v.n === n)?.markup_count ?? 0,
219
- [localCounts, documentId, versions]
220
- );
221
- const hasMarkup = countOf(shownVersion) > 0;
222
- const [showOriginal, setShowOriginal] = useState(false);
223
- useEffect(() => setShowOriginal(false), [documentId, snapshotVersion]);
224
- const refresh = useCallback(() => {
225
- if (!documentId || !onDocumentsChanged) return;
226
- Promise.resolve(onDocumentsChanged([documentId], "markup")).catch(
227
- (e) => console.warn("Could not refresh the document after a markup change", e)
228
- );
229
- }, [documentId, onDocumentsChanged]);
230
- const onMarkupChange = useCallback(
231
- (snapshot) => {
232
- if (!documentId) return;
233
- const key = `${documentId}@${shownVersion}`;
234
- if (countOf(shownVersion) > 0 !== snapshot.count > 0) refresh();
235
- setLocalCounts((counts) => ({ ...counts, [key]: snapshot.count }));
236
- },
237
- [documentId, shownVersion, countOf, refresh]
238
- );
239
- const downloadMarkup = useCallback(async () => {
240
- if (!documentId) return;
241
- if (currentSigned) {
242
- notify(SIGNED_LOCKED_REASON, "info");
243
- return;
244
- }
245
- try {
246
- const { blob, fileName } = await fetchMarkupPdf(
247
- client,
248
- documentId,
249
- snapshotVersion ? snapshotVersion : void 0
250
- );
251
- saveFile(blob, fileName);
252
- } catch (e) {
253
- notify(e instanceof Error ? e.message : "The markup could not be downloaded", "error");
254
- }
255
- }, [client, documentId, snapshotVersion, saveFile, notify, currentSigned]);
256
- const [legacyCount, setLegacyCount] = useState(0);
257
- const [migrating, setMigrating] = useState(false);
258
- const shared = documentData?.shared;
259
- const loaded = !!documentData;
260
- const migrate = useCallback(async () => {
261
- if (!documentId) return;
262
- const layer = readLegacyLayer(documentId);
263
- if (!layer) return;
264
- setMigrating(true);
265
- try {
266
- const added = await migrateLegacyLayer(documentId, layer, versions, currentVersion, client);
267
- setLegacyCount(0);
268
- setLocalCounts({});
269
- refresh();
270
- if (added > 0) {
271
- notify(
272
- `${added} annotation${added === 1 ? "" : "s"} from this browser saved to the document`,
273
- "success",
274
- {
275
- description: shared ? "They are now part of the shared markup." : "They are saved with the document, visible only to you."
276
- }
277
- );
278
- }
279
- } catch (e) {
280
- notify(
281
- e instanceof Error ? e.message : "The annotations from this browser could not be saved",
282
- "error",
283
- { description: "They are still kept in this browser; open the document again to retry." }
284
- );
285
- } finally {
286
- setMigrating(false);
287
- }
288
- }, [client, documentId, versions, currentVersion, refresh, shared, notify]);
289
- useEffect(() => {
290
- if (!documentId || !loaded) return;
291
- const layer = readLegacyLayer(documentId);
292
- if (!layer) {
293
- setLegacyCount(0);
294
- return;
295
- }
296
- if (layer.annotations.length === 0) {
297
- forgetLegacyLayer(documentId);
298
- setLegacyCount(0);
299
- return;
300
- }
301
- if (shared) setLegacyCount(layer.annotations.length);
302
- else void migrate();
303
- }, [documentId, loaded, shared]);
304
- const legacyPrompt = legacyCount > 0 && !snapshotVersion ? {
305
- count: legacyCount,
306
- busy: migrating,
307
- add: () => void migrate(),
308
- discard: () => {
309
- if (documentId) forgetLegacyLayer(documentId);
310
- setLegacyCount(0);
311
- }
312
- } : null;
313
- const [copying, setCopying] = useState(false);
314
- const olderWithMarkup = versionsWithMarkup(versions).filter((v) => v.n !== currentVersion).sort((a, b) => b.n - a.n)[0];
315
- const olderNote = !snapshotVersion && !hasMarkup && olderWithMarkup ? {
316
- version: olderWithMarkup.n,
317
- busy: copying,
318
- signed: currentSigned,
319
- copy: () => {
320
- if (!documentId) return;
321
- setCopying(true);
322
- copyOpenThreads(documentId, olderWithMarkup.n, client).then((n) => {
323
- if (n > 0) {
324
- setLocalCounts((c) => ({ ...c, [`${documentId}@${currentVersion}`]: n }));
325
- refresh();
326
- }
327
- notify(
328
- n > 0 ? `${n} open comment thread${n === 1 ? "" : "s"} copied to version ${currentVersion}` : `Version ${olderWithMarkup.n} has no open comments`,
329
- n > 0 ? "success" : "info",
330
- // The markup is stored beside the version, so the sealed bytes do not change.
331
- n > 0 && currentSigned ? { description: SIGNED_UNCHANGED } : void 0
332
- );
333
- }).catch(
334
- (e) => notify(e instanceof Error ? e.message : "The comments could not be copied", "error")
335
- ).finally(() => setCopying(false));
336
- }
337
- } : null;
338
- return {
339
- hasMarkup,
340
- showOriginal,
341
- setShowOriginal,
342
- onMarkupChange,
343
- downloadMarkup,
344
- legacyPrompt,
345
- olderNote
346
- };
347
- }
348
-
349
- // src/document-tools/frozen-copy.ts
350
- var baseName = (fileName) => (fileName || "document").replace(/\.pdf$/i, "");
351
- function frozenCopyName(fileName, redacted) {
352
- return `${baseName(fileName)} (${redacted ? "redacted" : "annotated"}).pdf`;
353
- }
354
- function redactionLogName(fileName) {
355
- return `${baseName(fileName)} (redaction log).csv`;
356
- }
357
- async function uploadFrozenCopy(upload, bytes, source, redacted) {
358
- const file = new File([bytes], frozenCopyName(source.fileName, redacted), {
359
- type: "application/pdf"
360
- });
361
- const query = {
362
- derived_from: [source.documentId],
363
- derived_role: redacted ? "redaction" : "annotated",
364
- shared: source.shared
365
- };
366
- if (source.folder) query.folder = source.folder;
367
- if (source.workspaceId) query.workspace_ext_id = source.workspaceId;
368
- const response = await upload({ file, query });
369
- return response?.doc_ext_ids?.[0];
370
- }
371
-
372
- // src/document-tools/can-annotate.ts
373
- function canAnnotate(s) {
374
- return s.activeTab === "pdf" && s.hasPdf && !s.isImage && !s.isVideo && !s.isAudio && !s.isDownloadOnly && !s.isDraft && !s.isStreaming && !s.isSnapshot && !s.isComparing;
375
- }
376
- function useIsOnline() {
377
- return useSyncExternalStore(
378
- (onChange) => onlineManager.subscribe(onChange),
379
- () => onlineManager.isOnline(),
380
- () => true
381
- );
382
- }
383
- function useDocumentBytes(documentRef, options) {
384
- const { client } = useDocumentTools();
385
- const { version, kind, enabled = true, fallback } = options;
386
- return useQuery({
387
- queryKey: documentBytesKey(documentRef, version ?? null, kind),
388
- queryFn: async ({ signal }) => {
389
- if (fallback && typeof navigator !== "undefined" && navigator.onLine === false) {
390
- const offline = await fallback();
391
- if (offline) return offline;
392
- }
393
- try {
394
- return await (kind === "original" ? fetchDocumentFile : fetchDocumentPdf)(
395
- client,
396
- documentRef,
397
- { signal }
398
- );
399
- } catch (error) {
400
- const offline = await fallback?.();
401
- if (offline) return offline;
402
- throw error;
403
- }
404
- },
405
- enabled: enabled && !!documentRef,
406
- // 'always' so it still runs offline: the fallback serves a copy kept on this device.
407
- networkMode: "always",
408
- staleTime: Infinity
409
- });
410
- }
411
- function intentText(signer) {
412
- return `I, ${signer.name.trim()}, sign this document electronically. I intend this electronic signature to have the same effect as my handwritten signature.`;
413
- }
414
- async function sha256Hex(blob) {
415
- const digest = await crypto.subtle.digest("SHA-256", new Uint8Array(await blob.arrayBuffer()));
416
- return Array.from(new Uint8Array(digest), (b) => b.toString(16).padStart(2, "0")).join("");
417
- }
418
- function toAppearance(box) {
419
- return { page: box.page - 1, x: box.rect.x, y: box.rect.y, width: box.rect.w, height: box.rect.h };
420
- }
421
- var MIN_SIGNATURE_BOX = { width: 0.3, height: 0.07 };
422
- function isLegibleSignatureBox(rect) {
423
- return rect.w >= MIN_SIGNATURE_BOX.width && rect.h >= MIN_SIGNATURE_BOX.height;
424
- }
425
- var SIGNATURES_PATH = "/v1/document/{document_ext_id}/signatures";
426
- function errorDetail(error, fallback) {
427
- const detail3 = error?.detail;
428
- return typeof detail3 === "string" ? detail3 : fallback;
429
- }
430
- async function fetchDocumentSignatures(client, documentRef) {
431
- const { docId, version } = parseVersionRef(documentRef);
432
- const { data, error } = await client.GET(SIGNATURES_PATH, {
433
- params: { path: { document_ext_id: docId }, ...version ? { query: { version } } : {} }
434
- });
435
- if (!data) throw new Error(errorDetail(error, "The signatures could not be read"));
436
- return data;
437
- }
438
- function useDocumentSignatures(documentId, enabled = true) {
439
- const { client } = useDocumentTools();
440
- const { docId, version } = parseVersionRef(documentId);
441
- return useQuery({
442
- queryKey: arbiQueryKeys.documentSignatures(docId ?? "", version),
443
- queryFn: () => fetchDocumentSignatures(client, documentId),
444
- enabled: enabled && !!docId,
445
- staleTime: 6e4
446
- });
447
- }
448
- var SigningError = class extends Error {
449
- reason;
450
- constructor(message, reason) {
451
- super(message);
452
- this.name = "SigningError";
453
- this.reason = reason;
454
- }
455
- };
456
- function signingErrorReason(detail3) {
457
- if (/still being prepared/i.test(detail3)) return "preparing";
458
- if (/no longer the current version/i.test(detail3)) return "stale";
459
- return "failed";
460
- }
461
- function signingError(error, fallback) {
462
- const detail3 = errorDetail(error, fallback);
463
- return new SigningError(detail3, signingErrorReason(detail3));
464
- }
465
- var PREPARE_RETRIES = 3;
466
- var PREPARE_RETRY_DELAY_MS = 1500;
467
- var wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
468
- async function signDocument(client, deploymentDomain, {
469
- documentId,
470
- pdfBlob,
471
- email,
472
- password,
473
- signer,
474
- appearance,
475
- includeDate = false,
476
- version
477
- }) {
478
- const path = { document_ext_id: documentId };
479
- const body = {
480
- signer: { name: signer.name },
481
- ...appearance ? { appearance } : {},
482
- include_date: includeDate,
483
- ...version ? { version } : {}
484
- };
485
- const prepare = () => client.POST("/v1/document/{document_ext_id}/sign/prepare", { params: { path }, body });
486
- let prepared = await prepare();
487
- for (let attempt = 0; !prepared.data && attempt < PREPARE_RETRIES; attempt++) {
488
- if (signingError(prepared.error, "").reason !== "preparing") break;
489
- await wait(PREPARE_RETRY_DELAY_MS);
490
- prepared = await prepare();
491
- }
492
- if (!prepared.data) throw signingError(prepared.error, "Could not prepare signing");
493
- const { statement, intent, source_sha256, timestamp } = prepared.data;
494
- if (await sha256Hex(pdfBlob) !== source_sha256) {
495
- throw new Error("The document changed since it was opened. Reopen it and sign again.");
496
- }
497
- if (intent !== intentText(signer)) throw new Error("Signing statement mismatch; not signed.");
498
- const identity = await unlockIdentityWithPassword(email, password, deploymentDomain);
499
- const signed = await client.POST("/v1/document/{document_ext_id}/sign", {
500
- params: { path },
501
- body: { ...body, timestamp, signature: signMessage(statement, identity) }
502
- });
503
- if (!signed.data) throw signingError(signed.error, "Signing failed");
504
- return signed.data;
505
- }
506
- function useSignDocument() {
507
- const env = useDocumentTools();
508
- const queryClient = useQueryClient();
509
- return useMutation({
510
- mutationFn: (vars) => {
511
- if (!env.deploymentDomain) throw new Error("Signing is not set up: no deployment domain");
512
- return signDocument(env.client, env.deploymentDomain, vars);
513
- },
514
- onSuccess: async (result) => {
515
- await env.onDocumentsChanged?.([result.doc_ext_id], "signed");
516
- await queryClient.invalidateQueries({ queryKey: arbiQueryKeys.documentSignatures() });
517
- }
518
- });
519
- }
520
- var VERIFY_PATH = "/v1/sign/verify/{reference}";
521
- var REFERENCE = /^sig-[0-9a-f]{32}$/;
522
- function isSignatureReference(reference) {
523
- return !!reference && REFERENCE.test(reference);
524
- }
525
- var SignatureVerificationError = class extends Error {
526
- constructor(message, status) {
527
- super(message);
528
- this.status = status;
529
- this.name = "SignatureVerificationError";
530
- }
531
- status;
532
- };
533
- var VERIFY_ERRORS = {
534
- 404: "No signature has this reference.",
535
- 429: "Too many checks, try again in a minute."
536
- };
537
- async function fetchSignatureVerification(client, reference) {
538
- if (!isSignatureReference(reference)) {
539
- throw new SignatureVerificationError("This is not a signature reference.");
540
- }
541
- const { data, response } = await client.GET(VERIFY_PATH, {
542
- params: { path: { reference } }
543
- });
544
- if (!response.ok || !data) {
545
- throw new SignatureVerificationError(
546
- VERIFY_ERRORS[response.status] ?? "The signature could not be checked right now.",
547
- response.status
548
- );
549
- }
550
- return data;
551
- }
552
- function useSignatureVerification(reference) {
553
- const { client } = useDocumentTools();
554
- return useQuery({
555
- queryKey: arbiQueryKeys.signatureVerification(reference ?? ""),
556
- queryFn: () => fetchSignatureVerification(client, reference),
557
- enabled: !!reference,
558
- retry: false
559
- });
560
- }
561
- async function matchSignedCopy(file, verification) {
562
- const hash = await sha256Hex(file);
563
- if (hash === verification.document_sha256.toLowerCase()) return { kind: "current" };
564
- const signature = verification.signatures.find((s) => s.sha256.toLowerCase() === hash);
565
- return signature ? { kind: "earlier", signature } : { kind: "none" };
566
- }
567
- function useOpenWorkspaceRead() {
568
- const arbi = useArbiHost().arbi;
569
- const workspaceId = arbi?.hasWorkspace ? arbi.getWorkspaceId() : void 0;
570
- const read = (run) => arbi && workspaceId ? arbi.readInWorkspace(workspaceId, run) : run();
571
- return { workspaceId, read };
572
- }
573
- var SIGNATURE_FIELD_TYPES = [
574
- "signature",
575
- "initials",
576
- "date",
577
- "name"
578
- ];
579
- var FIELD_TYPE_LABELS = {
580
- signature: "Signature",
581
- initials: "Initials",
582
- date: "Date signed",
583
- name: "Name"
584
- };
585
- var DEFAULT_FIELD_SIZE = {
586
- signature: { width: 0.28, height: 0.05 },
587
- initials: { width: 0.1, height: 0.04 },
588
- date: { width: 0.22, height: 0.028 },
589
- name: { width: 0.28, height: 0.028 }
590
- };
591
- var SIGNER_PROGRESS_LABELS = {
592
- invited: "Invited",
593
- registered: "Not opened yet",
594
- viewed: "Viewed",
595
- signed: "Signed",
596
- declined: "Declined"
597
- };
598
- var EMAIL = /^[^@\s<>,;]{1,64}@[^@\s<>,;]{1,255}\.[^@\s<>,;]{1,63}$/;
599
- var isEmailSigner = (signer) => EMAIL.test(signer.trim());
600
- var MARK_FIELD_TYPES = ["signature", "initials"];
601
- function detail(error, fallback) {
602
- const d = error?.detail;
603
- if (typeof d === "string") return d;
604
- if (Array.isArray(d) && d[0] && typeof d[0] === "object" && "msg" in d[0]) {
605
- return String(d[0].msg);
606
- }
607
- return fallback;
608
- }
609
- function newFieldId() {
610
- return `f${Math.random().toString(36).slice(2, 10)}`;
611
- }
612
- function initialsOf(name) {
613
- return name.split(/\s+/).filter(Boolean).map((part) => part[0].toUpperCase()).join("").slice(0, 4);
614
- }
615
- function fieldsInSigningOrder(fields, signer) {
616
- return fields.filter((f) => f.signer === signer).sort((a, b) => a.page - b.page || a.y - b.y || a.x - b.x);
617
- }
618
- function sendBlocker(fields) {
619
- if (fields.length === 0) return "Place at least one field.";
620
- const signers = [...new Set(fields.map((f) => f.signer))];
621
- for (const signer of signers) {
622
- if (!fields.some((f) => f.signer === signer && MARK_FIELD_TYPES.includes(f.type))) {
623
- return "Every signer needs a signature or initials field.";
624
- }
625
- }
626
- return null;
627
- }
628
- function fieldsFromSuggestions(suggestions, assign, members = /* @__PURE__ */ new Map()) {
629
- return suggestions.flatMap((s) => {
630
- const email = s.signer_email?.toLowerCase();
631
- const signer = email ? members.get(email) ?? email : assign[s.group];
632
- if (!signer) return [];
633
- return [
634
- {
635
- id: newFieldId(),
636
- type: s.type,
637
- page: s.page,
638
- x: s.x,
639
- y: s.y,
640
- width: s.width,
641
- height: s.height,
642
- signer,
643
- required: s.required ?? true
644
- }
645
- ];
646
- });
647
- }
648
- function splitSuggestions(suggestions) {
649
- return {
650
- placed: suggestions.filter((s) => s.source === "anchor"),
651
- extras: suggestions.filter((s) => s.source !== "anchor")
652
- };
653
- }
654
- async function fetchDocumentSignatureRequests(client, documentId) {
655
- const { data, error } = await client.GET("/v1/document/{document_ext_id}/signature-requests", {
656
- params: { path: { document_ext_id: documentId } }
657
- });
658
- if (!data) throw new Error(detail(error, "The signature requests could not be read"));
659
- return data;
660
- }
661
- function useDocumentSignatureRequests(documentId, enabled = true) {
662
- const { client } = useDocumentTools();
663
- return useQuery({
664
- queryKey: arbiQueryKeys.signatureRequestsForDocument(documentId ?? ""),
665
- queryFn: () => fetchDocumentSignatureRequests(client, documentId),
666
- enabled: enabled && !!documentId,
667
- staleTime: 15e3
668
- });
669
- }
670
- async function signatureFieldSuggestions(client, documentId, version) {
671
- const { data, error } = await client.GET(
672
- "/v1/document/{document_ext_id}/signature-fields/suggest",
673
- {
674
- params: { path: { document_ext_id: documentId }, ...version ? { query: { version } } : {} }
675
- }
676
- );
677
- if (!data) throw new Error(detail(error, "Signature blocks could not be read"));
678
- return { fields: data.fields, signers: data.signers ?? [] };
679
- }
680
- async function suggestSignatureFields(client, documentId, version) {
681
- return (await signatureFieldSuggestions(client, documentId, version)).fields;
682
- }
683
- async function saveSignatureRequest(client, { documentId, version, fields, message, requestId, send }) {
684
- if (!requestId) {
685
- const { data, error } = await client.POST("/v1/document/{document_ext_id}/signature-requests", {
686
- params: { path: { document_ext_id: documentId } },
687
- body: { fields, message: message || null, send, ...version ? { version } : {} }
688
- });
689
- if (!data) throw new Error(detail(error, "The signature request could not be saved"));
690
- return data;
691
- }
692
- const path = { request_ext_id: requestId };
693
- const updated = await client.PATCH("/v1/signature-requests/{request_ext_id}", {
694
- params: { path },
695
- body: { fields, message: message ?? null }
696
- });
697
- if (!updated.data) throw new Error(detail(updated.error, "The draft could not be saved"));
698
- if (!send) return updated.data;
699
- const sent = await client.POST("/v1/signature-requests/{request_ext_id}/send", {
700
- params: { path }
701
- });
702
- if (!sent.data) throw new Error(detail(sent.error, "The request could not be sent"));
703
- return sent.data;
704
- }
705
- function useInvalidateRequests() {
706
- const queryClient = useQueryClient();
707
- return () => queryClient.invalidateQueries({ queryKey: arbiQueryKeys.signatureRequests() });
708
- }
709
- function useSaveSignatureRequest() {
710
- const { client } = useDocumentTools();
711
- const invalidate = useInvalidateRequests();
712
- return useMutation({
713
- mutationFn: (vars) => saveSignatureRequest(client, vars),
714
- onSuccess: invalidate
715
- });
716
- }
717
- function useVoidSignatureRequest() {
718
- const { client } = useDocumentTools();
719
- const invalidate = useInvalidateRequests();
720
- return useMutation({
721
- mutationFn: async (requestId) => {
722
- const { data, error } = await client.POST("/v1/signature-requests/{request_ext_id}/void", {
723
- params: { path: { request_ext_id: requestId } }
724
- });
725
- if (!data) throw new Error(detail(error, "The request could not be voided"));
726
- return data;
727
- },
728
- onSuccess: invalidate
729
- });
730
- }
731
- function useDeclineSignatureRequest() {
732
- const { client } = useDocumentTools();
733
- const invalidate = useInvalidateRequests();
734
- return useMutation({
735
- mutationFn: async ({ requestId, reason }) => {
736
- const { data, error } = await client.POST("/v1/signature-requests/{request_ext_id}/decline", {
737
- params: { path: { request_ext_id: requestId } },
738
- body: { reason: reason || null }
739
- });
740
- if (!data) throw new Error(detail(error, "Could not decline"));
741
- return data;
742
- },
743
- onSuccess: invalidate
744
- });
745
- }
746
- async function signSignatureRequest(client, deploymentDomain, { request, pdfBlob, email, password, adopted, fields }) {
747
- const path = { request_ext_id: request.external_id };
748
- const body = { adopted, fields };
749
- const prepared = await client.POST("/v1/signature-requests/{request_ext_id}/sign/prepare", {
750
- params: { path },
751
- body
752
- });
753
- if (!prepared.data) {
754
- throw new SigningError(detail(prepared.error, "Could not prepare signing"), "failed");
755
- }
756
- const { statement, intent, source_sha256, timestamp } = prepared.data;
757
- if (source_sha256 !== request.source_sha256 || await sha256Hex(pdfBlob) !== source_sha256) {
758
- throw new SigningError("The document changed since it was sent. Ask for it again.", "stale");
759
- }
760
- if (intent !== intentText({ name: adopted.name })) {
761
- throw new Error("Signing statement mismatch; not signed.");
762
- }
763
- const identity = await unlockIdentityWithPassword(email, password, deploymentDomain);
764
- const signed = await client.POST("/v1/signature-requests/{request_ext_id}/sign", {
765
- params: { path },
766
- body: { ...body, timestamp, signature: signMessage(statement, identity) }
767
- });
768
- if (!signed.data) throw new SigningError(detail(signed.error, "Signing failed"), "failed");
769
- return signed.data;
770
- }
771
- function useSignSignatureRequest() {
772
- const env = useDocumentTools();
773
- const invalidate = useInvalidateRequests();
774
- const queryClient = useQueryClient();
775
- return useMutation({
776
- mutationFn: (vars) => {
777
- if (!env.deploymentDomain) throw new Error("Signing is not set up: no deployment domain");
778
- return signSignatureRequest(env.client, env.deploymentDomain, vars);
779
- },
780
- onSuccess: async (result) => {
781
- await invalidate();
782
- if (result.completed && result.request.doc_ext_id) {
783
- await env.onDocumentsChanged?.([result.request.doc_ext_id], "signed");
784
- await queryClient.invalidateQueries({ queryKey: arbiQueryKeys.documentSignatures() });
785
- }
786
- }
787
- });
788
- }
789
- function useSignerCandidates(enabled = true) {
790
- const { client, user } = useDocumentTools();
791
- const { workspaceId, read } = useOpenWorkspaceRead();
792
- return useQuery({
793
- queryKey: arbiQueryKeys.signatureCandidates(workspaceId ?? ""),
794
- queryFn: async () => {
795
- const { data, error } = await read(() => client.GET("/v1/workspace/users"));
796
- if (!data) throw new Error(detail(error, "The workspace members could not be read"));
797
- const people = data.filter((m) => m.user.external_id.startsWith("usr-")).map((m) => ({
798
- externalId: m.user.external_id,
799
- name: [m.user.given_name, m.user.family_name].filter(Boolean).join(" ") || m.user.email,
800
- email: m.user.email,
801
- role: String(m.role)
802
- }));
803
- const me = user?.email?.toLowerCase();
804
- return [...people].sort(
805
- (a, b) => Number(b.email.toLowerCase() === me) - Number(a.email.toLowerCase() === me)
806
- );
807
- },
808
- enabled,
809
- staleTime: 6e4
810
- });
811
- }
812
- async function inviteSigners(client, documentId, emails) {
813
- if (!emails.length) return;
814
- const { error, response } = await client.POST("/v1/workspace/users", {
815
- body: workspaces.addWorkspaceMembersBody({
816
- emails,
817
- role: "guest",
818
- confirm_invite: true,
819
- resource_type: "document",
820
- resource_ext_id: documentId
821
- })
822
- });
823
- if (response.status === 409) {
824
- throw new Error("Share the document with the workspace before asking others to sign it.");
825
- }
826
- if (error && response.status !== 404) {
827
- throw new Error(detail(error, "The signers could not be invited"));
828
- }
829
- }
830
- function useInviteSigners() {
831
- const { client } = useDocumentTools();
832
- const invalidate = useInvalidateRequests();
833
- const queryClient = useQueryClient();
834
- return useMutation({
835
- mutationFn: ({ documentId, emails }) => inviteSigners(client, documentId, emails),
836
- onSuccess: async () => {
837
- await invalidate();
838
- await queryClient.invalidateQueries({ queryKey: arbiQueryKeys.signatureCandidates() });
839
- }
840
- });
841
- }
842
- var INFORMAL_SIGNATURE_NOTE = "Your saved signature or initials are placed as an image on the document.";
843
- async function keypair(source = getUserEncryptionKeypair) {
844
- await initSodium();
845
- const pair = await source();
846
- if (!pair) throw new Error("Sign in again to use your saved signature.");
847
- return pair;
848
- }
849
- function detail2(error, fallback) {
850
- const d = error?.detail;
851
- return typeof d === "string" ? d : fallback;
852
- }
853
- async function fetchSavedSignature(client, source) {
854
- const { data, error } = await client.GET("/v1/user/signature");
855
- if (!data) throw new Error(detail2(error, "Your saved signature could not be read"));
856
- if (!data.sealed) return null;
857
- const pair = await keypair(source);
858
- const json = new TextDecoder().decode(sealedBoxDecrypt(data.sealed, pair.secretKey));
859
- return JSON.parse(json);
860
- }
861
- async function storeSavedSignature(client, signature, source) {
862
- const pair = await keypair(source);
863
- const sealed = sealedBoxEncrypt(
864
- Uint8Array.from(new TextEncoder().encode(JSON.stringify(signature))),
865
- pair.publicKey
866
- );
867
- const { error, response } = await client.PUT("/v1/user/signature", { body: { sealed } });
868
- if (!response.ok) throw new Error(detail2(error, "Your signature could not be saved"));
869
- }
870
- async function deleteSavedSignature(client) {
871
- const { error, response } = await client.DELETE("/v1/user/signature");
872
- if (!response.ok) throw new Error(detail2(error, "Your saved signature could not be deleted"));
873
- }
874
- function useSavedSignature(enabled = true) {
875
- const { client } = useDocumentTools();
876
- return useQuery({
877
- queryKey: arbiQueryKeys.savedSignature(),
878
- queryFn: () => fetchSavedSignature(client),
879
- enabled,
880
- staleTime: 6e4,
881
- retry: false
882
- });
883
- }
884
- function useStoreSavedSignature() {
885
- const { client } = useDocumentTools();
886
- const queryClient = useQueryClient();
887
- return useMutation({
888
- mutationFn: (signature) => storeSavedSignature(client, signature),
889
- onSuccess: (_, signature) => queryClient.setQueryData(arbiQueryKeys.savedSignature(), signature)
890
- });
891
- }
892
- function useDeleteSavedSignature() {
893
- const { client } = useDocumentTools();
894
- const queryClient = useQueryClient();
895
- return useMutation({
896
- mutationFn: () => deleteSavedSignature(client),
897
- onSuccess: () => queryClient.setQueryData(arbiQueryKeys.savedSignature(), null)
898
- });
899
- }
900
- function pngBytes(base64) {
901
- const raw = atob(base64);
902
- const out = new Uint8Array(raw.length);
903
- for (let i = 0; i < raw.length; i++) out[i] = raw.charCodeAt(i);
904
- return out;
905
- }
906
- function pngSize(base64) {
907
- const bytes = pngBytes(base64.slice(0, 64));
908
- const view = new DataView(bytes.buffer);
909
- return { width: view.getUint32(16), height: view.getUint32(20) };
910
- }
911
- function failure(error) {
912
- const detail3 = error?.detail;
913
- return new Error(typeof detail3 === "string" ? detail3 : "The shared file request failed");
914
- }
915
- async function createFileShare(client, documentId, body) {
916
- const result = await client.POST("/v1/document/{document_ext_id}/file-shares", {
917
- params: { path: { document_ext_id: documentId } },
918
- body
919
- });
920
- if (!result.data) throw failure(result.error);
921
- return result.data;
922
- }
923
- async function getFileShare(client, id) {
924
- const result = await client.GET("/v1/file-shares/{share_id}", {
925
- params: { path: { share_id: id } }
926
- });
927
- if (!result.data) throw failure(result.error);
928
- return result.data;
929
- }
930
- async function fileShareBytes(client, id, kind) {
931
- const result = await client.GET("/v1/file-shares/{share_id}/file", {
932
- params: { path: { share_id: id }, query: { kind } },
933
- parseAs: "blob"
934
- });
935
- if (!result.data) throw failure(result.error);
936
- return result.data;
937
- }
938
- function fileShareSigningRequest(share) {
939
- return {
940
- external_id: share.external_id,
941
- doc_ext_id: share.document_ext_id,
942
- version: share.version,
943
- source_sha256: share.source_sha256,
944
- fields: share.fields,
945
- message: share.message,
946
- status: share.status === "signing" ? "sent" : share.status === "completed" ? "completed" : "voided",
947
- signers: share.recipients.filter((r) => r.permission === "sign").map((r) => ({
948
- external_id: r.email,
949
- email: r.email,
950
- name: r.email,
951
- status: r.status === "signed" ? "signed" : "pending",
952
- progress: r.status === "signed" ? "signed" : "registered",
953
- fields: share.fields.filter((f) => f.signer === r.email).length
954
- })),
955
- created_at: (/* @__PURE__ */ new Date(0)).toISOString(),
956
- stale: false
957
- };
958
- }
959
- async function signFileShare(client, domain, vars) {
960
- const path = { share_id: vars.request.external_id };
961
- const body = { adopted: vars.adopted, fields: vars.fields };
962
- const prepared = await client.POST("/v1/file-shares/{share_id}/sign/prepare", {
963
- params: { path },
964
- body
965
- });
966
- if (!prepared.data) throw failure(prepared.error);
967
- const { statement, timestamp, source_sha256, intent } = prepared.data;
968
- if (source_sha256 !== vars.request.source_sha256 || await sha256Hex(vars.pdfBlob) !== source_sha256)
969
- throw new Error("The shared file changed. Ask the sender for a new request.");
970
- if (intent !== intentText({ name: vars.adopted.name }))
971
- throw new Error("Signing statement mismatch");
972
- const identity = await unlockIdentityWithPassword(vars.email, vars.password, domain);
973
- const result = await client.POST("/v1/file-shares/{share_id}/sign", {
974
- params: { path },
975
- body: { ...body, timestamp, signature: signMessage(statement, identity) }
976
- });
977
- if (!result.data) throw failure(result.error);
978
- return {
979
- request: fileShareSigningRequest(result.data),
980
- completed: result.data.status === "completed"
981
- };
982
- }
983
- function useFileShare(client, shareId, signing) {
984
- return useQuery({
985
- queryKey: arbiQueryKeys.fileShare(shareId),
986
- queryFn: () => getFileShare(client, shareId),
987
- refetchInterval: signing ? false : 5e3
988
- });
989
- }
990
- function useFileSharePdf(client, shareId, share) {
991
- return useQuery({
992
- queryKey: arbiQueryKeys.fileSharePdf(shareId, share?.status),
993
- queryFn: () => fileShareBytes(client, shareId, share?.status === "completed" ? "signed" : "view"),
994
- enabled: !!share?.can_preview,
995
- staleTime: Infinity
996
- });
997
- }
998
- function useFileShares(client) {
999
- return useQuery({
1000
- queryKey: arbiQueryKeys.fileShares(),
1001
- queryFn: async () => {
1002
- const result = await client.GET("/v1/file-shares");
1003
- if (!result.data) throw new Error("Could not load shared files");
1004
- return result.data;
1005
- }
1006
- });
1007
- }
1008
-
1009
- export { DEFAULT_FIELD_SIZE, FIELD_TYPE_LABELS, INFORMAL_SIGNATURE_NOTE, LEGACY_LAYER_PREFIX, MARK_FIELD_TYPES, MAX_MERGE_ATTEMPTS, MarkupStoreError, SIGNATURE_FIELD_TYPES, SIGNED_UNCHANGED, SIGNER_PROGRESS_LABELS, SignatureVerificationError, SigningError, VERIFY_PATH, addToMarkup, canAnnotate, copyOpenThreads, createFileShare, createMarkupStore, deleteSavedSignature, fetchDocumentSignatureRequests, fetchDocumentSignatures, fetchSavedSignature, fetchSignatureVerification, fieldsFromSuggestions, fieldsInSigningOrder, fileShareBytes, fileShareSigningRequest, forgetLegacyLayer, frozenCopyName, getFileShare, initialsOf, intentText, inviteSigners, isEmailSigner, isLegibleSignatureBox, isSignatureReference, marksByVersion, matchSignedCopy, migrateLegacyLayer, newFieldId, openThreadsOf, pngBytes, pngSize, readLegacyLayer, redactionLogName, saveSignatureRequest, sendBlocker, sha256Hex, signDocument, signFileShare, signSignatureRequest, signatureFieldSuggestions, splitSuggestions, storeSavedSignature, suggestSignatureFields, toAppearance, uploadFrozenCopy, useDeclineSignatureRequest, useDeleteSavedSignature, useDocumentBytes, useDocumentMarkup, useDocumentSignatureRequests, useDocumentSignatures, useFileShare, useFileSharePdf, useFileShares, useInviteSigners, useIsOnline, useSaveSignatureRequest, useSavedSignature, useSignDocument, useSignSignatureRequest, useSignatureVerification, useSignerCandidates, useStoreSavedSignature, useVoidSignatureRequest, versionsWithMarkup };
1010
- //# sourceMappingURL=chunk-LSU4UPS5.js.map
1011
- //# sourceMappingURL=chunk-LSU4UPS5.js.map