@arbidocs/react 0.5.111 → 0.5.113
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.
- package/dist/account/client.js +96 -0
- package/dist/account/client.js.map +7 -0
- package/dist/account/delete.js +70 -0
- package/dist/account/delete.js.map +7 -0
- package/dist/account/didit.js +34 -0
- package/dist/account/didit.js.map +7 -0
- package/dist/account/dismissed-tips.js +33 -0
- package/dist/account/dismissed-tips.js.map +7 -0
- package/dist/account/email.js +84 -0
- package/dist/account/email.js.map +7 -0
- package/dist/account/entitlements.js +47 -0
- package/dist/account/entitlements.js.map +7 -0
- package/dist/account/identity.js +270 -0
- package/dist/account/identity.js.map +7 -0
- package/dist/account/index.js +93 -0
- package/dist/account/index.js.map +7 -0
- package/dist/account/notifications.js +59 -0
- package/dist/account/notifications.js.map +7 -0
- package/dist/account/password.js +103 -0
- package/dist/account/password.js.map +7 -0
- package/dist/account/profile.js +116 -0
- package/dist/account/profile.js.map +7 -0
- package/dist/account/recovery.js +13 -0
- package/dist/account/recovery.js.map +7 -0
- package/dist/account/relevance.js +82 -0
- package/dist/account/relevance.js.map +7 -0
- package/dist/account/sessions.js +37 -0
- package/dist/account/sessions.js.map +7 -0
- package/dist/account/settings.js +39 -0
- package/dist/account/settings.js.map +7 -0
- package/dist/account/table-views.js +16 -0
- package/dist/account/table-views.js.map +7 -0
- package/dist/ai/AiAnswer.js +83 -0
- package/dist/ai/AiAnswer.js.map +7 -0
- package/dist/ai/AiMarkdown.js +40 -0
- package/dist/ai/AiMarkdown.js.map +7 -0
- package/dist/ai/ArtifactCanvas.js +193 -0
- package/dist/ai/ArtifactCanvas.js.map +7 -0
- package/dist/ai/CitationRenderer.js +413 -0
- package/dist/ai/CitationRenderer.js.map +7 -0
- package/dist/{chunk-WL2Y2T47.js → ai/MarkdownRenderer.js} +35 -101
- package/dist/ai/MarkdownRenderer.js.map +7 -0
- package/dist/ai/MessageArtifactCard.js +75 -0
- package/dist/ai/MessageArtifactCard.js.map +7 -0
- package/dist/ai/PassageCard.js +79 -0
- package/dist/ai/PassageCard.js.map +7 -0
- package/dist/ai/engine.js +110 -0
- package/dist/ai/engine.js.map +7 -0
- package/dist/ai/index.js +63 -0
- package/dist/ai/index.js.map +7 -0
- package/dist/ai/markdown-base-components.js +37 -0
- package/dist/ai/markdown-base-components.js.map +7 -0
- package/dist/ai/markdown-streaming-context.js +6 -0
- package/dist/ai/markdown-streaming-context.js.map +7 -0
- package/dist/{chunk-VSCU7K4V.js → ai/normalize-citations.js} +12 -19
- package/dist/ai/normalize-citations.js.map +7 -0
- package/dist/ai/redline.js +41 -0
- package/dist/ai/redline.js.map +7 -0
- package/dist/ai/split-markdown-blocks.js +40 -0
- package/dist/ai/split-markdown-blocks.js.map +7 -0
- package/dist/{chunk-UW2SGTI5.js → ai/stored-markdown.js} +41 -93
- package/dist/ai/stored-markdown.js.map +7 -0
- package/dist/annotations/AnnotationPageOverlay.js +807 -0
- package/dist/annotations/AnnotationPageOverlay.js.map +7 -0
- package/dist/annotations/AnnotationToolbar.js +398 -0
- package/dist/annotations/AnnotationToolbar.js.map +7 -0
- package/dist/annotations/FreezeDialog.js +170 -0
- package/dist/annotations/FreezeDialog.js.map +7 -0
- package/dist/annotations/ProductionDialog.js +354 -0
- package/dist/annotations/ProductionDialog.js.map +7 -0
- package/dist/annotations/controller.js +49 -0
- package/dist/annotations/controller.js.map +7 -0
- package/dist/annotations/freeze/browser.js +21 -0
- package/dist/annotations/freeze/browser.js.map +7 -0
- package/dist/annotations/freeze/bundle.js +201 -0
- package/dist/annotations/freeze/bundle.js.map +7 -0
- package/dist/annotations/freeze/coords.js +37 -0
- package/dist/annotations/freeze/coords.js.map +7 -0
- package/dist/annotations/freeze/freeze.js +261 -0
- package/dist/annotations/freeze/freeze.js.map +7 -0
- package/dist/annotations/freeze/hash.js +28 -0
- package/dist/annotations/freeze/hash.js.map +7 -0
- package/dist/annotations/freeze/index-page.js +78 -0
- package/dist/annotations/freeze/index-page.js.map +7 -0
- package/dist/annotations/freeze/index.js +28 -22
- package/dist/annotations/freeze/index.js.map +7 -1
- package/dist/annotations/freeze/raster.js +208 -0
- package/dist/annotations/freeze/raster.js.map +7 -0
- package/dist/annotations/freeze/stamp.js +117 -0
- package/dist/annotations/freeze/stamp.js.map +7 -0
- package/dist/annotations/freeze/types.js +14 -0
- package/dist/annotations/freeze/types.js.map +7 -0
- package/dist/annotations/freeze/vector.js +283 -0
- package/dist/annotations/freeze/vector.js.map +7 -0
- package/dist/annotations/geometry.js +81 -0
- package/dist/annotations/geometry.js.map +7 -0
- package/dist/annotations/index.js +125 -6
- package/dist/annotations/index.js.map +7 -1
- package/dist/annotations/merge.js +53 -0
- package/dist/annotations/merge.js.map +7 -0
- package/dist/{chunk-T3USOSVN.js → annotations/model.js} +23 -16
- package/dist/annotations/model.js.map +7 -0
- package/dist/annotations/overlay-geometry.js +41 -0
- package/dist/annotations/overlay-geometry.js.map +7 -0
- package/dist/annotations/redaction-log.js +33 -0
- package/dist/annotations/redaction-log.js.map +7 -0
- package/dist/annotations/selection-marks.js +122 -0
- package/dist/annotations/selection-marks.js.map +7 -0
- package/dist/annotations/state.js +140 -0
- package/dist/annotations/state.js.map +7 -0
- package/dist/annotations/store.js +49 -0
- package/dist/annotations/store.js.map +7 -0
- package/dist/annotations/useAnnotationLayer.js +306 -0
- package/dist/annotations/useAnnotationLayer.js.map +7 -0
- package/dist/annotations/useAnnotationShortcuts.js +31 -0
- package/dist/annotations/useAnnotationShortcuts.js.map +7 -0
- package/dist/annotations/useTextSelectionMarks.js +100 -0
- package/dist/annotations/useTextSelectionMarks.js.map +7 -0
- package/dist/artifacts/artifact-kind.js +19 -0
- package/dist/artifacts/artifact-kind.js.map +7 -0
- package/dist/artifacts/index.js +89 -571
- package/dist/artifacts/index.js.map +7 -1
- package/dist/{chunk-WUTL62MC.js → artifacts/normalize-markdown.js} +12 -14
- package/dist/artifacts/normalize-markdown.js.map +7 -0
- package/dist/artifacts/redline-core.js +12 -3
- package/dist/artifacts/redline-core.js.map +7 -1
- package/dist/{chunk-74N436VK.js → artifacts/redline-diff.js} +10 -9
- package/dist/artifacts/redline-diff.js.map +7 -0
- package/dist/artifacts/redline-engine.js +14 -0
- package/dist/artifacts/redline-engine.js.map +7 -0
- package/dist/artifacts/renderArtifactMarkdown.js +9 -0
- package/dist/artifacts/renderArtifactMarkdown.js.map +7 -0
- package/dist/artifacts/useArtifactEditSession.js +183 -0
- package/dist/artifacts/useArtifactEditSession.js.map +7 -0
- package/dist/artifacts/useArtifactSession.js +173 -0
- package/dist/artifacts/useArtifactSession.js.map +7 -0
- package/dist/artifacts/useArtifactSource.js +16 -0
- package/dist/artifacts/useArtifactSource.js.map +7 -0
- package/dist/artifacts/useArtifactText.js +78 -0
- package/dist/artifacts/useArtifactText.js.map +7 -0
- package/dist/artifacts/useRedline.js +65 -0
- package/dist/artifacts/useRedline.js.map +7 -0
- package/dist/artifacts/useStreamedArtifact.js +74 -0
- package/dist/artifacts/useStreamedArtifact.js.map +7 -0
- package/dist/artifacts/versions.js +68 -0
- package/dist/artifacts/versions.js.map +7 -0
- package/dist/billing.js +200 -0
- package/dist/billing.js.map +7 -0
- package/dist/boot-timeout.js +19 -0
- package/dist/boot-timeout.js.map +7 -0
- package/dist/calendar/accounts.js +213 -0
- package/dist/calendar/accounts.js.map +7 -0
- package/dist/calendar/hooks.js +409 -0
- package/dist/calendar/hooks.js.map +7 -0
- package/dist/calendar/index.js +31 -0
- package/dist/calendar/index.js.map +7 -0
- package/dist/calendar/keys.js +5 -0
- package/dist/calendar/keys.js.map +7 -0
- package/dist/calendar/offline/outbox.js +231 -0
- package/dist/calendar/offline/outbox.js.map +7 -0
- package/dist/calendar/offline/runtime.js +109 -0
- package/dist/calendar/offline/runtime.js.map +7 -0
- package/dist/calendar/offline/support.js +41 -0
- package/dist/calendar/offline/support.js.map +7 -0
- package/dist/calendar/support.js +34 -0
- package/dist/calendar/support.js.map +7 -0
- package/dist/calls/actions.js +226 -0
- package/dist/calls/actions.js.map +7 -0
- package/dist/calls/events.js +138 -0
- package/dist/calls/events.js.map +7 -0
- package/dist/calls/gate.js +19 -0
- package/dist/calls/gate.js.map +7 -0
- package/dist/calls/hooks.js +115 -0
- package/dist/calls/hooks.js.map +7 -0
- package/dist/calls/in-call-chat.js +132 -0
- package/dist/calls/in-call-chat.js.map +7 -0
- package/dist/calls/index.js +24 -0
- package/dist/calls/index.js.map +7 -0
- package/dist/calls/keys.js +17 -0
- package/dist/calls/keys.js.map +7 -0
- package/dist/calls/livekit/index.js +6 -958
- package/dist/calls/livekit/index.js.map +7 -1
- package/dist/calls/livekit/room.js +98 -0
- package/dist/calls/livekit/room.js.map +7 -0
- package/dist/calls/livekit/useCallRecorder.js +219 -0
- package/dist/calls/livekit/useCallRecorder.js.map +7 -0
- package/dist/calls/livekit/useCallTranscriber.js +309 -0
- package/dist/calls/livekit/useCallTranscriber.js.map +7 -0
- package/dist/calls/livekit/useHostMuteNotice.js +29 -0
- package/dist/calls/livekit/useHostMuteNotice.js.map +7 -0
- package/dist/calls/livekit/useInCallChat.js +161 -0
- package/dist/calls/livekit/useInCallChat.js.map +7 -0
- package/dist/calls/livekit/useWebinar.js +239 -0
- package/dist/calls/livekit/useWebinar.js.map +7 -0
- package/dist/calls/meeting-chat.js +149 -0
- package/dist/calls/meeting-chat.js.map +7 -0
- package/dist/calls/moderation.js +50 -0
- package/dist/calls/moderation.js.map +7 -0
- package/dist/calls/open-meeting-chat.js +29 -0
- package/dist/calls/open-meeting-chat.js.map +7 -0
- package/dist/calls/read-only.js +24 -0
- package/dist/calls/read-only.js.map +7 -0
- package/dist/calls/recording-media.js +218 -0
- package/dist/calls/recording-media.js.map +7 -0
- package/dist/calls/recording-playback.js +260 -0
- package/dist/calls/recording-playback.js.map +7 -0
- package/dist/calls/recording.js +268 -0
- package/dist/calls/recording.js.map +7 -0
- package/dist/calls/save-to-thread.js +80 -0
- package/dist/calls/save-to-thread.js.map +7 -0
- package/dist/calls/session.js +134 -0
- package/dist/calls/session.js.map +7 -0
- package/dist/calls/transcript-format.js +147 -0
- package/dist/calls/transcript-format.js.map +7 -0
- package/dist/calls/transcription.js +101 -0
- package/dist/calls/transcription.js.map +7 -0
- package/dist/calls/webinar.js +71 -0
- package/dist/calls/webinar.js.map +7 -0
- package/dist/charge-watch.js +71 -0
- package/dist/charge-watch.js.map +7 -0
- package/dist/chat/ChatBubble.js +146 -0
- package/dist/chat/ChatBubble.js.map +7 -0
- package/dist/chat/ConversationScope.js +30 -0
- package/dist/chat/ConversationScope.js.map +7 -0
- package/dist/chat/active-config.js +20 -0
- package/dist/chat/active-config.js.map +7 -0
- package/dist/chat/agent-chat-owner.js +25 -0
- package/dist/chat/agent-chat-owner.js.map +7 -0
- package/dist/chat/chat-artifacts.js +64 -0
- package/dist/chat/chat-artifacts.js.map +7 -0
- package/dist/chat/citations.js +32 -0
- package/dist/chat/citations.js.map +7 -0
- package/dist/chat/config-model.js +10 -0
- package/dist/chat/config-model.js.map +7 -0
- package/dist/chat/conversation-cache.js +676 -0
- package/dist/chat/conversation-cache.js.map +7 -0
- package/dist/chat/conversation-events.js +57 -0
- package/dist/chat/conversation-events.js.map +7 -0
- package/dist/chat/conversation-mentions.js +58 -0
- package/dist/chat/conversation-mentions.js.map +7 -0
- package/dist/chat/conversation-workspace.js +58 -0
- package/dist/chat/conversation-workspace.js.map +7 -0
- package/dist/chat/mentions.js +116 -0
- package/dist/chat/mentions.js.map +7 -0
- package/dist/chat/open-document.js +106 -0
- package/dist/chat/open-document.js.map +7 -0
- package/dist/chat/orphaned.js +44 -0
- package/dist/chat/orphaned.js.map +7 -0
- package/dist/chat/pendingFirstTurn.js +30 -0
- package/dist/chat/pendingFirstTurn.js.map +7 -0
- package/dist/chat/reply-target.js +12 -0
- package/dist/chat/reply-target.js.map +7 -0
- package/dist/chat/run-finished.js +28 -0
- package/dist/chat/run-finished.js.map +7 -0
- package/dist/chat/run-state.js +91 -0
- package/dist/chat/run-state.js.map +7 -0
- package/dist/chat/stream-handlers.js +419 -0
- package/dist/chat/stream-handlers.js.map +7 -0
- package/dist/chat/thread-binding.js +76 -0
- package/dist/chat/thread-binding.js.map +7 -0
- package/dist/chat/thread-document.js +53 -0
- package/dist/chat/thread-document.js.map +7 -0
- package/dist/chat/turn-control.js +79 -0
- package/dist/chat/turn-control.js.map +7 -0
- package/dist/chat/useAgentRunControl.js +36 -0
- package/dist/chat/useAgentRunControl.js.map +7 -0
- package/dist/chat/useAnswerAgentQuestion.js +19 -0
- package/dist/chat/useAnswerAgentQuestion.js.map +7 -0
- package/dist/chat/useAskAgain.js +32 -0
- package/dist/chat/useAskAgain.js.map +7 -0
- package/dist/chat/useAutoSendDraft.js +17 -0
- package/dist/chat/useAutoSendDraft.js.map +7 -0
- package/dist/chat/useBranchNavigation.js +97 -0
- package/dist/chat/useBranchNavigation.js.map +7 -0
- package/dist/chat/useConnectRunStream.js +169 -0
- package/dist/chat/useConnectRunStream.js.map +7 -0
- package/dist/chat/useConversation.js +431 -0
- package/dist/chat/useConversation.js.map +7 -0
- package/dist/chat/useConversationActions.js +662 -0
- package/dist/chat/useConversationActions.js.map +7 -0
- package/dist/chat/useConversationData.js +143 -0
- package/dist/chat/useConversationData.js.map +7 -0
- package/dist/chat/useConversationDocuments.js +41 -0
- package/dist/chat/useConversationDocuments.js.map +7 -0
- package/dist/chat/useConversationSettings.js +78 -0
- package/dist/chat/useConversationSettings.js.map +7 -0
- package/dist/chat/useConversationTurn.js +31 -0
- package/dist/chat/useConversationTurn.js.map +7 -0
- package/dist/chat/useConversationWorkspace.js +12 -0
- package/dist/chat/useConversationWorkspace.js.map +7 -0
- package/dist/chat/useDeleteMessage.js +15 -0
- package/dist/chat/useDeleteMessage.js.map +7 -0
- package/dist/chat/useDocumentAutoAdd.js +73 -0
- package/dist/chat/useDocumentAutoAdd.js.map +7 -0
- package/dist/chat/useMessageTimer.js +39 -0
- package/dist/chat/useMessageTimer.js.map +7 -0
- package/dist/chat/useThinkingContent.js +67 -0
- package/dist/chat/useThinkingContent.js.map +7 -0
- package/dist/chat/useThreadDocument.js +61 -0
- package/dist/chat/useThreadDocument.js.map +7 -0
- package/dist/chat/workflow-run-titles.js +50 -0
- package/dist/chat/workflow-run-titles.js.map +7 -0
- package/dist/config/config-hooks.js +209 -0
- package/dist/config/config-hooks.js.map +7 -0
- package/dist/connectivity.js +72 -0
- package/dist/connectivity.js.map +7 -0
- package/dist/connectors/hooks.js +263 -0
- package/dist/connectors/hooks.js.map +7 -0
- package/dist/connectors/index.js +28 -0
- package/dist/connectors/index.js.map +7 -0
- package/dist/contacts.js +100 -0
- package/dist/contacts.js.map +7 -0
- package/dist/conversation-list.js +65 -0
- package/dist/conversation-list.js.map +7 -0
- package/dist/databases.js +195 -0
- package/dist/databases.js.map +7 -0
- package/dist/datasets/aggregate.js +281 -0
- package/dist/datasets/aggregate.js.map +7 -0
- package/dist/datasets/index.js +122 -0
- package/dist/datasets/index.js.map +7 -0
- package/dist/datasets/members.js +27 -0
- package/dist/datasets/members.js.map +7 -0
- package/dist/datasets/panel.js +44 -0
- package/dist/datasets/panel.js.map +7 -0
- package/dist/datasets/registry.js +47 -0
- package/dist/datasets/registry.js.map +7 -0
- package/dist/datasets/rows-source.js +44 -0
- package/dist/datasets/rows-source.js.map +7 -0
- package/dist/datasets/sources/activity.js +83 -0
- package/dist/datasets/sources/activity.js.map +7 -0
- package/dist/datasets/sources/conversations.js +74 -0
- package/dist/datasets/sources/conversations.js.map +7 -0
- package/dist/datasets/sources/database.js +209 -0
- package/dist/datasets/sources/database.js.map +7 -0
- package/dist/datasets/sources/documents.js +93 -0
- package/dist/datasets/sources/documents.js.map +7 -0
- package/dist/datasets/sources/facts.js +56 -0
- package/dist/datasets/sources/facts.js.map +7 -0
- package/dist/datasets/sources/projects.js +117 -0
- package/dist/datasets/sources/projects.js.map +7 -0
- package/dist/datasets/sources/tags.js +67 -0
- package/dist/datasets/sources/tags.js.map +7 -0
- package/dist/datasets/sources/usage.js +268 -0
- package/dist/datasets/sources/usage.js.map +7 -0
- package/dist/datasets/sources/workflows.js +91 -0
- package/dist/datasets/sources/workflows.js.map +7 -0
- package/dist/datasets/sources/workspaces.js +67 -0
- package/dist/datasets/sources/workspaces.js.map +7 -0
- package/dist/datasets/store.js +194 -0
- package/dist/datasets/store.js.map +7 -0
- package/dist/datasets/types.js +14 -0
- package/dist/datasets/types.js.map +7 -0
- package/dist/directmessages/ConversationList.js +148 -0
- package/dist/directmessages/ConversationList.js.map +7 -0
- package/dist/directmessages/DateSeparator.js +8 -0
- package/dist/directmessages/DateSeparator.js.map +7 -0
- package/dist/directmessages/DmAvatar.js +29 -0
- package/dist/directmessages/DmAvatar.js.map +7 -0
- package/dist/directmessages/DmComposer.js +201 -0
- package/dist/directmessages/DmComposer.js.map +7 -0
- package/dist/directmessages/arrivals.js +29 -0
- package/dist/directmessages/arrivals.js.map +7 -0
- package/dist/directmessages/chat-cache.js +192 -0
- package/dist/directmessages/chat-cache.js.map +7 -0
- package/dist/directmessages/grouping.js +26 -0
- package/dist/directmessages/grouping.js.map +7 -0
- package/dist/directmessages/index.js +81 -0
- package/dist/directmessages/index.js.map +7 -0
- package/dist/directmessages/useChats.js +266 -0
- package/dist/directmessages/useChats.js.map +7 -0
- package/dist/directmessages/utils.js +23 -0
- package/dist/directmessages/utils.js.map +7 -0
- package/dist/document-tools/can-annotate.js +7 -0
- package/dist/document-tools/can-annotate.js.map +7 -0
- package/dist/document-tools/core.js +218 -12
- package/dist/document-tools/core.js.map +7 -1
- package/dist/document-tools/document-pdf.js +76 -0
- package/dist/document-tools/document-pdf.js.map +7 -0
- package/dist/document-tools/environment.js +136 -0
- package/dist/document-tools/environment.js.map +7 -0
- package/dist/document-tools/file-shares.js +112 -0
- package/dist/document-tools/file-shares.js.map +7 -0
- package/dist/document-tools/frozen-copy.js +27 -0
- package/dist/document-tools/frozen-copy.js.map +7 -0
- package/dist/document-tools/index.js +26 -148
- package/dist/document-tools/index.js.map +7 -1
- package/dist/document-tools/markup-download.js +51 -0
- package/dist/document-tools/markup-download.js.map +7 -0
- package/dist/document-tools/markup-store.js +138 -0
- package/dist/document-tools/markup-store.js.map +7 -0
- package/dist/document-tools/markup-transfer.js +88 -0
- package/dist/document-tools/markup-transfer.js.map +7 -0
- package/dist/document-tools/production.js +147 -0
- package/dist/document-tools/production.js.map +7 -0
- package/dist/document-tools/saved-signature.js +90 -0
- package/dist/document-tools/saved-signature.js.map +7 -0
- package/dist/document-tools/signature-requests.js +310 -0
- package/dist/document-tools/signature-requests.js.map +7 -0
- package/dist/document-tools/signing.js +127 -0
- package/dist/document-tools/signing.js.map +7 -0
- package/dist/document-tools/useDocumentBytes.js +38 -0
- package/dist/document-tools/useDocumentBytes.js.map +7 -0
- package/dist/document-tools/useDocumentMarkup.js +154 -0
- package/dist/document-tools/useDocumentMarkup.js.map +7 -0
- package/dist/document-tools/useIsOnline.js +13 -0
- package/dist/document-tools/useIsOnline.js.map +7 -0
- package/dist/document-tools/verification.js +60 -0
- package/dist/document-tools/verification.js.map +7 -0
- package/dist/documents/DocumentReview.js +220 -0
- package/dist/documents/DocumentReview.js.map +7 -0
- package/dist/documents/DraftTitleControls.js +41 -0
- package/dist/documents/DraftTitleControls.js.map +7 -0
- package/dist/documents/InlineMicButton.js +90 -0
- package/dist/documents/InlineMicButton.js.map +7 -0
- package/dist/documents/MicRecordingOverlay.js +29 -0
- package/dist/documents/MicRecordingOverlay.js.map +7 -0
- package/dist/documents/MicWaveformIndicator.js +68 -0
- package/dist/documents/MicWaveformIndicator.js.map +7 -0
- package/dist/documents/PhotoCapture.js +120 -0
- package/dist/documents/PhotoCapture.js.map +7 -0
- package/dist/documents/VideoCapture.js +129 -0
- package/dist/documents/VideoCapture.js.map +7 -0
- package/dist/documents/VoiceNoteRecorder.js +166 -0
- package/dist/documents/VoiceNoteRecorder.js.map +7 -0
- package/dist/documents/audio-segmenter.js +63 -0
- package/dist/documents/audio-segmenter.js.map +7 -0
- package/dist/documents/capture-frame.js +21 -0
- package/dist/documents/capture-frame.js.map +7 -0
- package/dist/documents/chunked-recorder.js +190 -0
- package/dist/documents/chunked-recorder.js.map +7 -0
- package/dist/documents/document-download.js +53 -0
- package/dist/documents/document-download.js.map +7 -0
- package/dist/documents/document-fields.js +109 -0
- package/dist/documents/document-fields.js.map +7 -0
- package/dist/documents/documents-cache.js +110 -0
- package/dist/documents/documents-cache.js.map +7 -0
- package/dist/documents/documents-data.js +128 -0
- package/dist/documents/documents-data.js.map +7 -0
- package/dist/documents/documents-loader.js +113 -0
- package/dist/documents/documents-loader.js.map +7 -0
- package/dist/documents/documents-writes.js +448 -0
- package/dist/documents/documents-writes.js.map +7 -0
- package/dist/documents/format-elapsed.js +10 -0
- package/dist/documents/format-elapsed.js.map +7 -0
- package/dist/documents/has-video-track.js +26 -0
- package/dist/documents/has-video-track.js.map +7 -0
- package/dist/documents/index.js +266 -0
- package/dist/documents/index.js.map +7 -0
- package/dist/documents/media-error.js +18 -0
- package/dist/documents/media-error.js.map +7 -0
- package/dist/documents/offline-documents.js +160 -0
- package/dist/documents/offline-documents.js.map +7 -0
- package/dist/documents/pending-sync.js +210 -0
- package/dist/documents/pending-sync.js.map +7 -0
- package/dist/documents/processing-live.js +122 -0
- package/dist/documents/processing-live.js.map +7 -0
- package/dist/documents/processing-order.js +59 -0
- package/dist/documents/processing-order.js.map +7 -0
- package/dist/documents/processing-settle.js +21 -0
- package/dist/documents/processing-settle.js.map +7 -0
- package/dist/documents/related-documents.js +133 -0
- package/dist/documents/related-documents.js.map +7 -0
- package/dist/documents/support.js +29 -0
- package/dist/documents/support.js.map +7 -0
- package/dist/documents/upload-files.js +169 -0
- package/dist/documents/upload-files.js.map +7 -0
- package/dist/documents/useAudioRecorder.js +315 -0
- package/dist/documents/useAudioRecorder.js.map +7 -0
- package/dist/documents/useCameraStream.js +35 -0
- package/dist/documents/useCameraStream.js.map +7 -0
- package/dist/documents/useDocumentThumbnails.js +71 -0
- package/dist/documents/useDocumentThumbnails.js.map +7 -0
- package/dist/documents/useDownloadDocuments.js +90 -0
- package/dist/documents/useDownloadDocuments.js.map +7 -0
- package/dist/documents/usePassageQuotes.js +37 -0
- package/dist/documents/usePassageQuotes.js.map +7 -0
- package/dist/documents/useUploadFiles.js +165 -0
- package/dist/documents/useUploadFiles.js.map +7 -0
- package/dist/documents/useUploadFromUrls.js +63 -0
- package/dist/documents/useUploadFromUrls.js.map +7 -0
- package/dist/documents/useVideoRecorder.js +62 -0
- package/dist/documents/useVideoRecorder.js.map +7 -0
- package/dist/entities/AgentMarkers.js +61 -0
- package/dist/entities/AgentMarkers.js.map +7 -0
- package/dist/entities/DocumentEntity.js +125 -0
- package/dist/entities/DocumentEntity.js.map +7 -0
- package/dist/entities/EntityPill.js +250 -0
- package/dist/entities/EntityPill.js.map +7 -0
- package/dist/entities/ProjectEntity.js +61 -0
- package/dist/entities/ProjectEntity.js.map +7 -0
- package/dist/entities/ShieldIcon.js +49 -0
- package/dist/entities/ShieldIcon.js.map +7 -0
- package/dist/entities/TagEntity.js +79 -0
- package/dist/entities/TagEntity.js.map +7 -0
- package/dist/entities/ThreadVisibilityIcon.js +15 -0
- package/dist/entities/ThreadVisibilityIcon.js.map +7 -0
- package/dist/entities/UserEntity.js +211 -0
- package/dist/entities/UserEntity.js.map +7 -0
- package/dist/entities/VerifiedBadge.js +19 -0
- package/dist/entities/VerifiedBadge.js.map +7 -0
- package/dist/entities/agent-avatar-colors.js +26 -0
- package/dist/entities/agent-avatar-colors.js.map +7 -0
- package/dist/entities/colors.js +64 -0
- package/dist/entities/colors.js.map +7 -0
- package/dist/entities/file-type.js +151 -0
- package/dist/entities/file-type.js.map +7 -0
- package/dist/entities/index.js +100 -0
- package/dist/entities/index.js.map +7 -0
- package/dist/entities/media-type.js +61 -0
- package/dist/entities/media-type.js.map +7 -0
- package/dist/entities/registry.js +385 -0
- package/dist/entities/registry.js.map +7 -0
- package/dist/entities/status.js +43 -0
- package/dist/entities/status.js.map +7 -0
- package/dist/entities/tag-kinds.js +23 -0
- package/dist/entities/tag-kinds.js.map +7 -0
- package/dist/entities/tag-types.js +44 -0
- package/dist/entities/tag-types.js.map +7 -0
- package/dist/entities/vocabulary.js +12 -0
- package/dist/entities/vocabulary.js.map +7 -0
- package/dist/entity-extraction.js +25 -0
- package/dist/entity-extraction.js.map +7 -0
- package/dist/facts-search.js +57 -0
- package/dist/facts-search.js.map +7 -0
- package/dist/facts.js +69 -0
- package/dist/facts.js.map +7 -0
- package/dist/hooks.js +320 -0
- package/dist/hooks.js.map +7 -0
- package/dist/host/ArbiHost.js +24 -0
- package/dist/host/ArbiHost.js.map +7 -0
- package/dist/host/assistant-copy.js +54 -0
- package/dist/host/assistant-copy.js.map +7 -0
- package/dist/host/config.js +9 -0
- package/dist/host/config.js.map +7 -0
- package/dist/host/context.js +10 -0
- package/dist/host/context.js.map +7 -0
- package/dist/host/features.js +144 -0
- package/dist/host/features.js.map +7 -0
- package/dist/host/index.js +12 -0
- package/dist/host/index.js.map +7 -0
- package/dist/{chunk-DPYBZDJB.js → host/merge.js} +7 -7
- package/dist/host/merge.js.map +7 -0
- package/dist/house-template.js +40 -0
- package/dist/house-template.js.map +7 -0
- package/dist/icons/AppleIcon.js +25 -0
- package/dist/icons/AppleIcon.js.map +7 -0
- package/dist/icons/ArbiBotHeadIcon.js +46 -0
- package/dist/icons/ArbiBotHeadIcon.js.map +7 -0
- package/dist/icons/ArbiIcon.js +24 -0
- package/dist/icons/ArbiIcon.js.map +7 -0
- package/dist/icons/AudIcon.js +56 -0
- package/dist/icons/AudIcon.js.map +7 -0
- package/dist/icons/ClaudeIcon.js +28 -0
- package/dist/icons/ClaudeIcon.js.map +7 -0
- package/dist/icons/DocIcon.js +56 -0
- package/dist/icons/DocIcon.js.map +7 -0
- package/dist/icons/EmlIcon.js +57 -0
- package/dist/icons/EmlIcon.js.map +7 -0
- package/dist/icons/FireworksIcon.js +47 -0
- package/dist/icons/FireworksIcon.js.map +7 -0
- package/dist/icons/GeminiIcon.js +37 -0
- package/dist/icons/GeminiIcon.js.map +7 -0
- package/dist/icons/GitHubIcon.js +32 -0
- package/dist/icons/GitHubIcon.js.map +7 -0
- package/dist/icons/GoogleIcon.js +53 -0
- package/dist/icons/GoogleIcon.js.map +7 -0
- package/dist/icons/HtmlIcon.js +56 -0
- package/dist/icons/HtmlIcon.js.map +7 -0
- package/dist/icons/ImgIcon.js +56 -0
- package/dist/icons/ImgIcon.js.map +7 -0
- package/dist/icons/LinkedInIcon.js +25 -0
- package/dist/icons/LinkedInIcon.js.map +7 -0
- package/dist/icons/OpenAIIcon.js +28 -0
- package/dist/icons/OpenAIIcon.js.map +7 -0
- package/dist/icons/PdfIcon.js +56 -0
- package/dist/icons/PdfIcon.js.map +7 -0
- package/dist/icons/ProviderIcon.js +42 -0
- package/dist/icons/ProviderIcon.js.map +7 -0
- package/dist/icons/TxtIcon.js +56 -0
- package/dist/icons/TxtIcon.js.map +7 -0
- package/dist/icons/VidIcon.js +56 -0
- package/dist/icons/VidIcon.js.map +7 -0
- package/dist/icons/XlsIcon.js +56 -0
- package/dist/icons/XlsIcon.js.map +7 -0
- package/dist/icons/arbi-mark.js +5 -0
- package/dist/icons/arbi-mark.js.map +7 -0
- package/dist/icons/colors.js +31 -0
- package/dist/icons/colors.js.map +7 -0
- package/dist/icons/file-type.js +105 -0
- package/dist/icons/file-type.js.map +7 -0
- package/dist/icons/index.js +55 -0
- package/dist/icons/index.js.map +7 -0
- package/dist/imagecrop/ImageCropModal.js +56 -0
- package/dist/imagecrop/ImageCropModal.js.map +7 -0
- package/dist/imagecrop/ImageCropper.js +100 -0
- package/dist/imagecrop/ImageCropper.js.map +7 -0
- package/dist/imagecrop/cropImage.js +43 -0
- package/dist/imagecrop/cropImage.js.map +7 -0
- package/dist/imagecrop/index.js +13 -0
- package/dist/imagecrop/index.js.map +7 -0
- package/dist/index.js +702 -17116
- package/dist/index.js.map +7 -1
- package/dist/{chunk-SSXFVWCT.js → lazy-chunk.js} +8 -8
- package/dist/lazy-chunk.js.map +7 -0
- package/dist/lib/collision-padding.js +13 -0
- package/dist/lib/collision-padding.js.map +7 -0
- package/dist/lib/format-friendly-date.js +55 -0
- package/dist/lib/format-friendly-date.js.map +7 -0
- package/dist/lib/format-relative-time.js +52 -0
- package/dist/lib/format-relative-time.js.map +7 -0
- package/dist/lib/markdown-to-text.js +35 -0
- package/dist/lib/markdown-to-text.js.map +7 -0
- package/dist/lib/toast-interaction.js +9 -0
- package/dist/lib/toast-interaction.js.map +7 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +7 -0
- package/dist/mail/client.js +103 -0
- package/dist/mail/client.js.map +7 -0
- package/dist/mail/document-attachment.js +38 -0
- package/dist/mail/document-attachment.js.map +7 -0
- package/dist/mail/filing.js +132 -0
- package/dist/mail/filing.js.map +7 -0
- package/dist/mail/hooks.js +393 -0
- package/dist/mail/hooks.js.map +7 -0
- package/dist/mail/index.js +120 -0
- package/dist/mail/index.js.map +7 -0
- package/dist/mail/offline/changes.js +258 -0
- package/dist/mail/offline/changes.js.map +7 -0
- package/dist/mail/offline/confirm-sign-out.js +37 -0
- package/dist/mail/offline/confirm-sign-out.js.map +7 -0
- package/dist/mail/offline/crypto.js +26 -0
- package/dist/mail/offline/crypto.js.map +7 -0
- package/dist/mail/offline/drafts.js +69 -0
- package/dist/mail/offline/drafts.js.map +7 -0
- package/dist/mail/offline/hooks.js +104 -0
- package/dist/mail/offline/hooks.js.map +7 -0
- package/dist/mail/offline/index.js +48 -0
- package/dist/mail/offline/index.js.map +7 -0
- package/dist/mail/offline/live.js +233 -0
- package/dist/mail/offline/live.js.map +7 -0
- package/dist/mail/offline/mailbox.js +191 -0
- package/dist/mail/offline/mailbox.js.map +7 -0
- package/dist/mail/offline/outbox.js +167 -0
- package/dist/mail/offline/outbox.js.map +7 -0
- package/dist/mail/offline/reads.js +159 -0
- package/dist/mail/offline/reads.js.map +7 -0
- package/dist/mail/offline/runtime.js +100 -0
- package/dist/mail/offline/runtime.js.map +7 -0
- package/dist/mail/offline/settings.js +84 -0
- package/dist/mail/offline/settings.js.map +7 -0
- package/dist/mail/offline/store.js +29 -0
- package/dist/mail/offline/store.js.map +7 -0
- package/dist/mail/offline/sync.js +251 -0
- package/dist/mail/offline/sync.js.map +7 -0
- package/dist/mail/offline/wipe.js +19 -0
- package/dist/mail/offline/wipe.js.map +7 -0
- package/dist/mail/thread-keys.js +53 -0
- package/dist/mail/thread-keys.js.map +7 -0
- package/dist/mail/threads.js +71 -0
- package/dist/mail/threads.js.map +7 -0
- package/dist/mail/useMailClient.js +42 -0
- package/dist/mail/useMailClient.js.map +7 -0
- package/dist/model-connections.js +58 -0
- package/dist/model-connections.js.map +7 -0
- package/dist/notifications/ActivityFeed.js +70 -0
- package/dist/notifications/ActivityFeed.js.map +7 -0
- package/dist/notifications/NotificationBell.js +200 -0
- package/dist/notifications/NotificationBell.js.map +7 -0
- package/dist/notifications/Toaster.js +24 -0
- package/dist/notifications/Toaster.js.map +7 -0
- package/dist/notifications/activity-types.js +65 -0
- package/dist/notifications/activity-types.js.map +7 -0
- package/dist/notifications/bell.js +24 -0
- package/dist/notifications/bell.js.map +7 -0
- package/dist/notifications/calendar-notifications.js +79 -0
- package/dist/notifications/calendar-notifications.js.map +7 -0
- package/dist/notifications/index.js +108 -0
- package/dist/notifications/index.js.map +7 -0
- package/dist/notifications/live.js +28 -0
- package/dist/notifications/live.js.map +7 -0
- package/dist/notifications/notification-types.js +127 -0
- package/dist/notifications/notification-types.js.map +7 -0
- package/dist/{chunk-BF5KW5ZI.js → notifications/notify-store.js} +24 -74
- package/dist/notifications/notify-store.js.map +7 -0
- package/dist/notifications/server-notifications.js +452 -0
- package/dist/notifications/server-notifications.js.map +7 -0
- package/dist/notifications/useNotifications.js +34 -0
- package/dist/notifications/useNotifications.js.map +7 -0
- package/dist/offline-store/network.js +11 -0
- package/dist/offline-store/network.js.map +7 -0
- package/dist/offline-store/store.js +136 -0
- package/dist/offline-store/store.js.map +7 -0
- package/dist/offline-store/wipe.js +8 -0
- package/dist/offline-store/wipe.js.map +7 -0
- package/dist/offline.js +58 -0
- package/dist/offline.js.map +7 -0
- package/dist/people.js +122 -0
- package/dist/people.js.map +7 -0
- package/dist/projects.js +30 -0
- package/dist/projects.js.map +7 -0
- package/dist/query-client.js +63 -0
- package/dist/query-client.js.map +7 -0
- package/dist/{chunk-ZM6N7YZH.js → query-keys.js} +18 -31
- package/dist/query-keys.js.map +7 -0
- package/dist/query-persist.js +66 -0
- package/dist/query-persist.js.map +7 -0
- package/dist/queued-writes.js +59 -0
- package/dist/queued-writes.js.map +7 -0
- package/dist/remote-control.js +67 -0
- package/dist/remote-control.js.map +7 -0
- package/dist/search/index.js +23 -0
- package/dist/search/index.js.map +7 -0
- package/dist/search/session.js +58 -0
- package/dist/search/session.js.map +7 -0
- package/dist/search/useSemanticSearch.js +82 -0
- package/dist/search/useSemanticSearch.js.map +7 -0
- package/dist/session/chat.js +512 -0
- package/dist/session/chat.js.map +7 -0
- package/dist/session/documents.js +196 -0
- package/dist/session/documents.js.map +7 -0
- package/dist/session/drafts.js +103 -0
- package/dist/session/drafts.js.map +7 -0
- package/dist/session/index.js +123 -0
- package/dist/session/index.js.map +7 -0
- package/dist/session/layout.js +339 -0
- package/dist/session/layout.js.map +7 -0
- package/dist/session/persist.js +106 -0
- package/dist/session/persist.js.map +7 -0
- package/dist/session/session-hooks.js +53 -0
- package/dist/session/session-hooks.js.map +7 -0
- package/dist/session/signed-in.js +36 -0
- package/dist/session/signed-in.js.map +7 -0
- package/dist/session/store.js +166 -0
- package/dist/session/store.js.map +7 -0
- package/dist/session/thread-tabs.js +121 -0
- package/dist/session/thread-tabs.js.map +7 -0
- package/dist/session/ui-state-storage.js +76 -0
- package/dist/session/ui-state-storage.js.map +7 -0
- package/dist/session/workspace.js +77 -0
- package/dist/session/workspace.js.map +7 -0
- package/dist/shell/index.js +43 -10
- package/dist/shell/index.js.map +7 -1
- package/dist/skill-pack.js +111 -0
- package/dist/skill-pack.js.map +7 -0
- package/dist/storage.js +186 -0
- package/dist/storage.js.map +7 -0
- package/dist/support/index.js +35 -0
- package/dist/support/index.js.map +7 -0
- package/dist/tags.js +204 -0
- package/dist/tags.js.map +7 -0
- package/dist/ui/DebouncedInput.js +109 -0
- package/dist/ui/DebouncedInput.js.map +7 -0
- package/dist/ui/DictateContext.js +8 -0
- package/dist/ui/DictateContext.js.map +7 -0
- package/dist/ui/IconToggle.js +79 -0
- package/dist/ui/IconToggle.js.map +7 -0
- package/dist/ui/VerifiedToggle.js +38 -0
- package/dist/ui/VerifiedToggle.js.map +7 -0
- package/dist/ui/VisibilityToggle.js +103 -0
- package/dist/ui/VisibilityToggle.js.map +7 -0
- package/dist/ui/avatar.js +40 -0
- package/dist/ui/avatar.js.map +7 -0
- package/dist/ui/badge.js +28 -0
- package/dist/ui/badge.js.map +7 -0
- package/dist/ui/button.js +48 -0
- package/dist/ui/button.js.map +7 -0
- package/dist/ui/card.js +90 -0
- package/dist/ui/card.js.map +7 -0
- package/dist/ui/checkbox.js +22 -0
- package/dist/ui/checkbox.js.map +7 -0
- package/dist/ui/collapsible.js +10 -0
- package/dist/ui/collapsible.js.map +7 -0
- package/dist/ui/command.js +103 -0
- package/dist/ui/command.js.map +7 -0
- package/dist/{chunk-YNNAJJ5Z.js → ui/dialog.js} +30 -68
- package/dist/ui/dialog.js.map +7 -0
- package/dist/{chunk-47CCGUWR.js → ui/dropdown-menu.js} +40 -45
- package/dist/ui/dropdown-menu.js.map +7 -0
- package/dist/ui/hover-card.js +36 -0
- package/dist/ui/hover-card.js.map +7 -0
- package/dist/ui/index.js +290 -10
- package/dist/ui/index.js.map +7 -1
- package/dist/ui/input.js +65 -0
- package/dist/ui/input.js.map +7 -0
- package/dist/ui/label.js +16 -0
- package/dist/ui/label.js.map +7 -0
- package/dist/ui/mark-menu.js +300 -0
- package/dist/ui/mark-menu.js.map +7 -0
- package/dist/ui/popover.js +40 -0
- package/dist/ui/popover.js.map +7 -0
- package/dist/ui/portal-container.js +17 -0
- package/dist/ui/portal-container.js.map +7 -0
- package/dist/ui/progress.js +24 -0
- package/dist/ui/progress.js.map +7 -0
- package/dist/ui/radio-group.js +29 -0
- package/dist/ui/radio-group.js.map +7 -0
- package/dist/ui/scroll-area.js +39 -0
- package/dist/ui/scroll-area.js.map +7 -0
- package/dist/ui/select.js +130 -0
- package/dist/ui/select.js.map +7 -0
- package/dist/ui/separator.js +23 -0
- package/dist/ui/separator.js.map +7 -0
- package/dist/ui/slider.js +23 -0
- package/dist/ui/slider.js.map +7 -0
- package/dist/ui/switch.js +28 -0
- package/dist/ui/switch.js.map +7 -0
- package/dist/ui/table.js +75 -0
- package/dist/ui/table.js.map +7 -0
- package/dist/ui/tabs.js +48 -0
- package/dist/ui/tabs.js.map +7 -0
- package/dist/ui/textarea.js +63 -0
- package/dist/ui/textarea.js.map +7 -0
- package/dist/ui/toggle-group.js +43 -0
- package/dist/ui/toggle-group.js.map +7 -0
- package/dist/ui/toggle.js +40 -0
- package/dist/ui/toggle.js.map +7 -0
- package/dist/ui/tooltip.js +215 -0
- package/dist/ui/tooltip.js.map +7 -0
- package/dist/usage-metered.js +8 -0
- package/dist/usage-metered.js.map +7 -0
- package/dist/useArbi.js +16 -0
- package/dist/useArbi.js.map +7 -0
- package/dist/useInstallSkillPack.js +81 -0
- package/dist/useInstallSkillPack.js.map +7 -0
- package/dist/usermenu/UserMenu.js +188 -0
- package/dist/usermenu/UserMenu.js.map +7 -0
- package/dist/usermenu/index.js +5 -0
- package/dist/usermenu/index.js.map +7 -0
- package/dist/users/index.js +15 -0
- package/dist/users/index.js.map +7 -0
- package/dist/users/user-display.js +60 -0
- package/dist/users/user-display.js.map +7 -0
- package/dist/viewers/AudioViewer.js +23 -0
- package/dist/viewers/AudioViewer.js.map +7 -0
- package/dist/viewers/DocxViewer.js +81 -0
- package/dist/viewers/DocxViewer.js.map +7 -0
- package/dist/viewers/ImageViewer.js +31 -0
- package/dist/viewers/ImageViewer.js.map +7 -0
- package/dist/viewers/PdfViewer.js +19 -3
- package/dist/viewers/PdfViewer.js.map +7 -1
- package/dist/{PdfViewerImpl-TEBYF2QI.js → viewers/PdfViewerImpl.js} +25 -19
- package/dist/viewers/PdfViewerImpl.js.map +7 -0
- package/dist/viewers/VideoViewer.js +31 -0
- package/dist/viewers/VideoViewer.js.map +7 -0
- package/dist/viewers/XlsxViewer.js +102 -0
- package/dist/viewers/XlsxViewer.js.map +7 -0
- package/dist/viewers/index.js +61 -271
- package/dist/viewers/index.js.map +7 -1
- package/dist/viewers/page-scroll.js +59 -0
- package/dist/viewers/page-scroll.js.map +7 -0
- package/dist/viewers/pdf-viewer-constants.js +9 -0
- package/dist/viewers/pdf-viewer-constants.js.map +7 -0
- package/dist/{chunk-PTOP7OHG.js → viewers/pdfjs-polyfills.js} +5 -6
- package/dist/viewers/pdfjs-polyfills.js.map +7 -0
- package/dist/viewers/selection-runs.js +38 -0
- package/dist/viewers/selection-runs.js.map +7 -0
- package/dist/viewers/usePageIntersectionObserver.js +68 -0
- package/dist/viewers/usePageIntersectionObserver.js.map +7 -0
- package/dist/viewers/useProcessedChunks.js +58 -0
- package/dist/viewers/useProcessedChunks.js.map +7 -0
- package/dist/viewers/viewer-zoom.js +163 -0
- package/dist/viewers/viewer-zoom.js.map +7 -0
- package/dist/websocket/ArbiWebSocketProvider.js +207 -0
- package/dist/websocket/ArbiWebSocketProvider.js.map +7 -0
- package/dist/websocket/context.js +14 -0
- package/dist/websocket/context.js.map +7 -0
- package/dist/websocket/hooks.js +30 -0
- package/dist/websocket/hooks.js.map +7 -0
- package/dist/websocket/index.js +22 -0
- package/dist/websocket/index.js.map +7 -0
- package/dist/websocket/live-updates.js +38 -0
- package/dist/websocket/live-updates.js.map +7 -0
- package/dist/websocket/reconnect.js +13 -0
- package/dist/websocket/reconnect.js.map +7 -0
- package/dist/websocket/store.js +58 -0
- package/dist/websocket/store.js.map +7 -0
- package/dist/workforce.js +607 -0
- package/dist/workforce.js.map +7 -0
- package/dist/workspaces/access-request.js +35 -0
- package/dist/workspaces/access-request.js.map +7 -0
- package/dist/workspaces/archive.js +59 -0
- package/dist/workspaces/archive.js.map +7 -0
- package/dist/workspaces/current.js +20 -0
- package/dist/workspaces/current.js.map +7 -0
- package/dist/workspaces/delete-workspaces.js +15 -0
- package/dist/workspaces/delete-workspaces.js.map +7 -0
- package/dist/workspaces/export-archive.js +40 -0
- package/dist/workspaces/export-archive.js.map +7 -0
- package/dist/workspaces/index.js +99 -0
- package/dist/workspaces/index.js.map +7 -0
- package/dist/workspaces/settings.js +45 -0
- package/dist/workspaces/settings.js.map +7 -0
- package/dist/workspaces/shell-workspaces.js +49 -0
- package/dist/workspaces/shell-workspaces.js.map +7 -0
- package/dist/workspaces/switch.js +234 -0
- package/dist/workspaces/switch.js.map +7 -0
- package/dist/workspaces/transfer.js +170 -0
- package/dist/workspaces/transfer.js.map +7 -0
- package/dist/workspaces/useShellWorkspaces.js +86 -0
- package/dist/workspaces/useShellWorkspaces.js.map +7 -0
- package/dist/workspaces/workspace-users.js +65 -0
- package/dist/workspaces/workspace-users.js.map +7 -0
- package/package.json +4 -4
- package/dist/PdfViewerImpl-TEBYF2QI.js.map +0 -1
- package/dist/PdfViewerImpl.d-B28hLEuj.d.cts +0 -62
- package/dist/ProductionDialog.d-CpzslFn0.d.cts +0 -51
- package/dist/annotations/freeze/index.d.cts +0 -205
- package/dist/annotations/index.d.cts +0 -360
- package/dist/artifacts/index.d.cts +0 -476
- package/dist/artifacts/redline-core.d.cts +0 -39
- package/dist/bundle-YNOX7VIL.js +0 -5
- package/dist/bundle-YNOX7VIL.js.map +0 -1
- package/dist/bundle.d-BnCSbHy2.d.cts +0 -85
- package/dist/calls/livekit/index.d.cts +0 -280
- package/dist/chunk-47CCGUWR.js.map +0 -1
- package/dist/chunk-4FL3X3LA.js +0 -2057
- package/dist/chunk-4FL3X3LA.js.map +0 -1
- package/dist/chunk-6QNBSXCE.js +0 -271
- package/dist/chunk-6QNBSXCE.js.map +0 -1
- package/dist/chunk-74N436VK.js.map +0 -1
- package/dist/chunk-APZZQZ6P.js +0 -147
- package/dist/chunk-APZZQZ6P.js.map +0 -1
- package/dist/chunk-BF5KW5ZI.js.map +0 -1
- package/dist/chunk-DPYBZDJB.js.map +0 -1
- package/dist/chunk-DZKRL5H3.js +0 -2766
- package/dist/chunk-DZKRL5H3.js.map +0 -1
- package/dist/chunk-HDCRPPBW.js +0 -75
- package/dist/chunk-HDCRPPBW.js.map +0 -1
- package/dist/chunk-L2IPPTVC.js +0 -20
- package/dist/chunk-L2IPPTVC.js.map +0 -1
- package/dist/chunk-LSU4UPS5.js +0 -1011
- package/dist/chunk-LSU4UPS5.js.map +0 -1
- package/dist/chunk-NIKPG4PW.js +0 -1128
- package/dist/chunk-NIKPG4PW.js.map +0 -1
- package/dist/chunk-NNAJLY6B.js +0 -4974
- package/dist/chunk-NNAJLY6B.js.map +0 -1
- package/dist/chunk-OYPKKHXY.js +0 -559
- package/dist/chunk-OYPKKHXY.js.map +0 -1
- package/dist/chunk-PTOP7OHG.js.map +0 -1
- package/dist/chunk-QMY2JKBI.js +0 -246
- package/dist/chunk-QMY2JKBI.js.map +0 -1
- package/dist/chunk-SN5YV6FF.js +0 -11
- package/dist/chunk-SN5YV6FF.js.map +0 -1
- package/dist/chunk-SSXFVWCT.js.map +0 -1
- package/dist/chunk-T3USOSVN.js.map +0 -1
- package/dist/chunk-T4CLW3DN.js +0 -2560
- package/dist/chunk-T4CLW3DN.js.map +0 -1
- package/dist/chunk-UW2SGTI5.js.map +0 -1
- package/dist/chunk-VSCU7K4V.js.map +0 -1
- package/dist/chunk-WL2Y2T47.js.map +0 -1
- package/dist/chunk-WUTL62MC.js.map +0 -1
- package/dist/chunk-XWPLOFDN.js +0 -644
- package/dist/chunk-XWPLOFDN.js.map +0 -1
- package/dist/chunk-Y3MTRA7D.js +0 -97
- package/dist/chunk-Y3MTRA7D.js.map +0 -1
- package/dist/chunk-YNNAJJ5Z.js.map +0 -1
- package/dist/chunk-ZM6N7YZH.js.map +0 -1
- package/dist/document-tools/core.d.cts +0 -883
- package/dist/document-tools/index.d.cts +0 -90
- package/dist/index.d-LArLnpI8.d.cts +0 -2036
- package/dist/index.d-oR5FKZpJ.d.cts +0 -579
- package/dist/index.d.cts +0 -15923
- package/dist/lazy-chunk.d-B6YDLMKI.d.cts +0 -31
- package/dist/model.d-CNtRWKVK.d.cts +0 -110
- package/dist/query-keys.d-B1Am9tIF.d.cts +0 -337
- package/dist/shell/index.d.cts +0 -6
- package/dist/store.d-GADDvC7w.d.cts +0 -35
- package/dist/stored-markdown.d-Bp18vrbr.d.cts +0 -125
- package/dist/ui/index.d.cts +0 -26
- package/dist/useAudioRecorder.d-B9rlMI_E.d.cts +0 -778
- package/dist/viewers/PdfViewer.d.cts +0 -9
- package/dist/viewers/index.d.cts +0 -262
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { parseVersionRef } from "../artifacts/versions.js";
|
|
2
|
+
class DocumentFetchError extends Error {
|
|
3
|
+
status;
|
|
4
|
+
constructor(message, status) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = "DocumentFetchError";
|
|
7
|
+
this.status = status;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
async function fetchDocumentBytes(client, endpoint, documentRef, options, headers, what) {
|
|
11
|
+
const ref = parseVersionRef(documentRef);
|
|
12
|
+
const version = options.version ?? ref.version;
|
|
13
|
+
const { data, response } = await client.GET(endpoint, {
|
|
14
|
+
params: {
|
|
15
|
+
path: { document_ext_id: ref.docId },
|
|
16
|
+
query: {
|
|
17
|
+
...version ? { version } : {},
|
|
18
|
+
...options.workspaceExtId ? { workspace_ext_id: options.workspaceExtId } : {}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
headers,
|
|
22
|
+
parseAs: "blob",
|
|
23
|
+
signal: options.signal
|
|
24
|
+
});
|
|
25
|
+
if (!response.ok || !(data instanceof Blob)) {
|
|
26
|
+
throw new DocumentFetchError(
|
|
27
|
+
`${what} could not be loaded (${response.status})`,
|
|
28
|
+
response.status
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
return { blob: data, response };
|
|
32
|
+
}
|
|
33
|
+
function contentDispositionFileName(header) {
|
|
34
|
+
if (!header) return void 0;
|
|
35
|
+
const extended = /filename\*\s*=\s*(?:[\w-]+)?'[^']*'([^;]+)/i.exec(header);
|
|
36
|
+
if (extended) {
|
|
37
|
+
try {
|
|
38
|
+
return decodeURIComponent(extended[1].trim().replace(/^"|"$/g, "")) || void 0;
|
|
39
|
+
} catch {
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const plain = /filename\s*=\s*("((?:[^"\\]|\\.)*)"|[^;]+)/i.exec(header);
|
|
43
|
+
if (!plain) return void 0;
|
|
44
|
+
const name = plain[2] !== void 0 ? plain[2].replace(/\\(.)/g, "$1") : plain[1].trim();
|
|
45
|
+
return name || void 0;
|
|
46
|
+
}
|
|
47
|
+
async function fetchDocumentPdf(client, documentRef, options = {}) {
|
|
48
|
+
const { blob } = await fetchDocumentBytes(
|
|
49
|
+
client,
|
|
50
|
+
"/v1/document/{document_ext_id}/view",
|
|
51
|
+
documentRef,
|
|
52
|
+
options,
|
|
53
|
+
{ Accept: "application/pdf" },
|
|
54
|
+
"The PDF"
|
|
55
|
+
);
|
|
56
|
+
return blob;
|
|
57
|
+
}
|
|
58
|
+
async function fetchDocumentFile(client, documentRef, options = {}) {
|
|
59
|
+
const { blob, response } = await fetchDocumentBytes(
|
|
60
|
+
client,
|
|
61
|
+
"/v1/document/{document_ext_id}/download",
|
|
62
|
+
documentRef,
|
|
63
|
+
options,
|
|
64
|
+
{},
|
|
65
|
+
"The file"
|
|
66
|
+
);
|
|
67
|
+
const name = contentDispositionFileName(response.headers.get("Content-Disposition"));
|
|
68
|
+
return name ? new File([blob], name, { type: blob.type }) : blob;
|
|
69
|
+
}
|
|
70
|
+
export {
|
|
71
|
+
DocumentFetchError,
|
|
72
|
+
contentDispositionFileName,
|
|
73
|
+
fetchDocumentFile,
|
|
74
|
+
fetchDocumentPdf
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=document-pdf.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/document-tools/document-pdf.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * A document's bytes, through the host's API client: the PDF the viewer and the tools draw on\n * (`/view`: the file itself for a PDF, its PDF rendering for a Word or text file) and the stored\n * file (`/download`). Either takes a document id or a version reference `doc-\u2026@v{n}`.\n */\n\nimport { parseVersionRef } from '../artifacts/versions'\nimport type { DocumentToolsClient } from './environment'\n\nexport interface DocumentFetchOptions {\n /** The version to fetch. Default: the one `documentRef` names, else the current version. */\n version?: number | null\n workspaceExtId?: string\n signal?: AbortSignal\n}\n\n/** A document's bytes could not be fetched; `status` is the HTTP status. */\nexport class DocumentFetchError extends Error {\n readonly status: number\n constructor(message: string, status: number) {\n super(message)\n this.name = 'DocumentFetchError'\n this.status = status\n }\n}\n\nasync function fetchDocumentBytes(\n client: DocumentToolsClient,\n endpoint: '/v1/document/{document_ext_id}/view' | '/v1/document/{document_ext_id}/download',\n documentRef: string,\n options: DocumentFetchOptions,\n headers: Record<string, string>,\n what: string\n): Promise<{ blob: Blob; response: Response }> {\n const ref = parseVersionRef(documentRef)\n const version = options.version ?? ref.version\n const { data, response } = await client.GET(endpoint, {\n params: {\n path: { document_ext_id: ref.docId },\n query: {\n ...(version ? { version } : {}),\n ...(options.workspaceExtId ? { workspace_ext_id: options.workspaceExtId } : {}),\n },\n },\n headers,\n parseAs: 'blob',\n signal: options.signal,\n })\n if (!response.ok || !(data instanceof Blob)) {\n throw new DocumentFetchError(\n `${what} could not be loaded (${response.status})`,\n response.status\n )\n }\n return { blob: data, response }\n}\n\n/**\n * The file name a `Content-Disposition` header gives, or `undefined`. Prefers the RFC 5987\n * `filename*=UTF-8''\u2026` form (percent-encoded, any script) over the plain `filename=`.\n */\nexport function contentDispositionFileName(header: string | null | undefined): string | undefined {\n if (!header) return undefined\n const extended = /filename\\*\\s*=\\s*(?:[\\w-]+)?'[^']*'([^;]+)/i.exec(header)\n if (extended) {\n try {\n return decodeURIComponent(extended[1].trim().replace(/^\"|\"$/g, '')) || undefined\n } catch {\n // A malformed escape: fall back to the plain parameter.\n }\n }\n const plain = /filename\\s*=\\s*(\"((?:[^\"\\\\]|\\\\.)*)\"|[^;]+)/i.exec(header)\n if (!plain) return undefined\n const name = plain[2] !== undefined ? plain[2].replace(/\\\\(.)/g, '$1') : plain[1].trim()\n return name || undefined\n}\n\n/**\n * The PDF of a document version: `GET /v1/document/{id}/view?version=` with\n * `Accept: application/pdf`. Throws a {@link DocumentFetchError} when there is none (yet).\n */\nexport async function fetchDocumentPdf(\n client: DocumentToolsClient,\n documentRef: string,\n options: DocumentFetchOptions = {}\n): Promise<Blob> {\n const { blob } = await fetchDocumentBytes(\n client,\n '/v1/document/{document_ext_id}/view',\n documentRef,\n options,\n { Accept: 'application/pdf' },\n 'The PDF'\n )\n return blob\n}\n\n/**\n * The stored file of a document version, as uploaded: `GET /v1/document/{id}/download`. When the\n * server names the file (`Content-Disposition`), the result is a `File` carrying that name.\n */\nexport async function fetchDocumentFile(\n client: DocumentToolsClient,\n documentRef: string,\n options: DocumentFetchOptions = {}\n): Promise<Blob | File> {\n const { blob, response } = await fetchDocumentBytes(\n client,\n '/v1/document/{document_ext_id}/download',\n documentRef,\n options,\n {},\n 'The file'\n )\n const name = contentDispositionFileName(response.headers.get('Content-Disposition'))\n return name ? new File([blob], name, { type: blob.type }) : blob\n}\n"],
|
|
5
|
+
"mappings": "AAMA,SAAS,uBAAuB;AAWzB,MAAM,2BAA2B,MAAM;AAAA,EACnC;AAAA,EACT,YAAY,SAAiB,QAAgB;AAC3C,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,SAAS;AAAA,EAChB;AACF;AAEA,eAAe,mBACb,QACA,UACA,aACA,SACA,SACA,MAC6C;AAC7C,QAAM,MAAM,gBAAgB,WAAW;AACvC,QAAM,UAAU,QAAQ,WAAW,IAAI;AACvC,QAAM,EAAE,MAAM,SAAS,IAAI,MAAM,OAAO,IAAI,UAAU;AAAA,IACpD,QAAQ;AAAA,MACN,MAAM,EAAE,iBAAiB,IAAI,MAAM;AAAA,MACnC,OAAO;AAAA,QACL,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,QAC7B,GAAI,QAAQ,iBAAiB,EAAE,kBAAkB,QAAQ,eAAe,IAAI,CAAC;AAAA,MAC/E;AAAA,IACF;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,QAAQ,QAAQ;AAAA,EAClB,CAAC;AACD,MAAI,CAAC,SAAS,MAAM,EAAE,gBAAgB,OAAO;AAC3C,UAAM,IAAI;AAAA,MACR,GAAG,IAAI,yBAAyB,SAAS,MAAM;AAAA,MAC/C,SAAS;AAAA,IACX;AAAA,EACF;AACA,SAAO,EAAE,MAAM,MAAM,SAAS;AAChC;AAMO,SAAS,2BAA2B,QAAuD;AAChG,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,WAAW,8CAA8C,KAAK,MAAM;AAC1E,MAAI,UAAU;AACZ,QAAI;AACF,aAAO,mBAAmB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,UAAU,EAAE,CAAC,KAAK;AAAA,IACzE,QAAQ;AAAA,IAER;AAAA,EACF;AACA,QAAM,QAAQ,8CAA8C,KAAK,MAAM;AACvE,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,OAAO,MAAM,CAAC,MAAM,SAAY,MAAM,CAAC,EAAE,QAAQ,UAAU,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK;AACvF,SAAO,QAAQ;AACjB;AAMA,eAAsB,iBACpB,QACA,aACA,UAAgC,CAAC,GAClB;AACf,QAAM,EAAE,KAAK,IAAI,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,QAAQ,kBAAkB;AAAA,IAC5B;AAAA,EACF;AACA,SAAO;AACT;AAMA,eAAsB,kBACpB,QACA,aACA,UAAgC,CAAC,GACX;AACtB,QAAM,EAAE,MAAM,SAAS,IAAI,MAAM;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,CAAC;AAAA,IACD;AAAA,EACF;AACA,QAAM,OAAO,2BAA2B,SAAS,QAAQ,IAAI,qBAAqB,CAAC;AACnF,SAAO,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,IAAI;AAC9D;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useMemo, useRef } from "react";
|
|
3
|
+
import { useDeploymentDomain } from "../useArbi.js";
|
|
4
|
+
function uploadQueryString(query) {
|
|
5
|
+
const params = new URLSearchParams();
|
|
6
|
+
for (const [key, value] of Object.entries(query)) {
|
|
7
|
+
if (value === null || value === void 0) continue;
|
|
8
|
+
for (const item of Array.isArray(value) ? value : [value]) params.append(key, String(item));
|
|
9
|
+
}
|
|
10
|
+
return params.toString();
|
|
11
|
+
}
|
|
12
|
+
function downloadBlob(blob, fileName) {
|
|
13
|
+
const url = URL.createObjectURL(blob);
|
|
14
|
+
const a = document.createElement("a");
|
|
15
|
+
a.href = url;
|
|
16
|
+
a.download = fileName;
|
|
17
|
+
document.body.appendChild(a);
|
|
18
|
+
a.click();
|
|
19
|
+
a.remove();
|
|
20
|
+
setTimeout(() => URL.revokeObjectURL(url), 6e4);
|
|
21
|
+
}
|
|
22
|
+
function clientUpload(client) {
|
|
23
|
+
return async ({ file, query }) => {
|
|
24
|
+
const formData = new FormData();
|
|
25
|
+
formData.append("files", file);
|
|
26
|
+
const { data, response } = await client.POST("/v1/document/upload", {
|
|
27
|
+
params: { query },
|
|
28
|
+
// The schema types the multipart body as `{ files: string[] }`; the FormData is sent as is.
|
|
29
|
+
body: formData,
|
|
30
|
+
bodySerializer: () => formData
|
|
31
|
+
});
|
|
32
|
+
if (!response.ok) throw new Error(`Upload failed with status ${response.status}`);
|
|
33
|
+
return data;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function defaultCertificateUrl(reference) {
|
|
37
|
+
const origin = typeof location === "undefined" ? "" : location.origin;
|
|
38
|
+
return `${origin}/verify/${encodeURIComponent(reference)}`;
|
|
39
|
+
}
|
|
40
|
+
function certificateLink(signature, certificateUrl) {
|
|
41
|
+
if (certificateUrl) return certificateUrl(signature.reference);
|
|
42
|
+
return signature.certificate_url || defaultCertificateUrl(signature.reference);
|
|
43
|
+
}
|
|
44
|
+
const DocumentToolsContext = createContext(null);
|
|
45
|
+
function DocumentToolsProvider({ children, ...env }) {
|
|
46
|
+
const arbiDeploymentDomain = useDeploymentDomain();
|
|
47
|
+
const guards = useRef(/* @__PURE__ */ new Map());
|
|
48
|
+
const pendingFlushes = useRef(/* @__PURE__ */ new Map());
|
|
49
|
+
const registerBeforeFileShare = useCallback((id, flush) => {
|
|
50
|
+
guards.current.set(id, flush);
|
|
51
|
+
return () => {
|
|
52
|
+
if (guards.current.get(id) !== flush) return;
|
|
53
|
+
guards.current.delete(id);
|
|
54
|
+
const pending = flush();
|
|
55
|
+
pendingFlushes.current.set(id, pending);
|
|
56
|
+
void pending.then(
|
|
57
|
+
() => {
|
|
58
|
+
if (pendingFlushes.current.get(id) === pending) pendingFlushes.current.delete(id);
|
|
59
|
+
},
|
|
60
|
+
() => {
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
};
|
|
64
|
+
}, []);
|
|
65
|
+
const prepareFileShare = useCallback(async (id) => {
|
|
66
|
+
const guard = guards.current.get(id);
|
|
67
|
+
if (guard) {
|
|
68
|
+
await guard();
|
|
69
|
+
pendingFlushes.current.delete(id);
|
|
70
|
+
} else await pendingFlushes.current.get(id);
|
|
71
|
+
}, []);
|
|
72
|
+
const {
|
|
73
|
+
client,
|
|
74
|
+
deploymentDomain,
|
|
75
|
+
user,
|
|
76
|
+
notify,
|
|
77
|
+
openDocument,
|
|
78
|
+
onDocumentsChanged,
|
|
79
|
+
uploadDocument,
|
|
80
|
+
saveFile,
|
|
81
|
+
emailDocument,
|
|
82
|
+
certificateUrl
|
|
83
|
+
} = env;
|
|
84
|
+
const value = useMemo(
|
|
85
|
+
() => ({
|
|
86
|
+
client,
|
|
87
|
+
prepareFileShare,
|
|
88
|
+
registerBeforeFileShare,
|
|
89
|
+
deploymentDomain: deploymentDomain ?? arbiDeploymentDomain,
|
|
90
|
+
user,
|
|
91
|
+
openDocument,
|
|
92
|
+
onDocumentsChanged,
|
|
93
|
+
emailDocument,
|
|
94
|
+
notify: notify ?? (() => {
|
|
95
|
+
}),
|
|
96
|
+
saveFile: saveFile ?? downloadBlob,
|
|
97
|
+
uploadDocument: uploadDocument ?? clientUpload(client),
|
|
98
|
+
certificateUrl
|
|
99
|
+
}),
|
|
100
|
+
[
|
|
101
|
+
client,
|
|
102
|
+
prepareFileShare,
|
|
103
|
+
registerBeforeFileShare,
|
|
104
|
+
deploymentDomain,
|
|
105
|
+
arbiDeploymentDomain,
|
|
106
|
+
user,
|
|
107
|
+
notify,
|
|
108
|
+
openDocument,
|
|
109
|
+
onDocumentsChanged,
|
|
110
|
+
uploadDocument,
|
|
111
|
+
saveFile,
|
|
112
|
+
emailDocument,
|
|
113
|
+
certificateUrl
|
|
114
|
+
]
|
|
115
|
+
);
|
|
116
|
+
return /* @__PURE__ */ jsx(DocumentToolsContext.Provider, { value, children });
|
|
117
|
+
}
|
|
118
|
+
function useOptionalDocumentTools() {
|
|
119
|
+
return useContext(DocumentToolsContext);
|
|
120
|
+
}
|
|
121
|
+
function useDocumentTools() {
|
|
122
|
+
const env = useContext(DocumentToolsContext);
|
|
123
|
+
if (!env) throw new Error("The document tools must be used within a <DocumentToolsProvider>");
|
|
124
|
+
return env;
|
|
125
|
+
}
|
|
126
|
+
export {
|
|
127
|
+
DocumentToolsProvider,
|
|
128
|
+
certificateLink,
|
|
129
|
+
clientUpload,
|
|
130
|
+
defaultCertificateUrl,
|
|
131
|
+
downloadBlob,
|
|
132
|
+
uploadQueryString,
|
|
133
|
+
useDocumentTools,
|
|
134
|
+
useOptionalDocumentTools
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/document-tools/environment.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * The host app's side of the document tools (markup, freeze, e-signing, versions): the one place\n * the tools reach the app. They never import a store, a router, a toast library or app API code;\n * the host passes what it has to `<DocumentToolsProvider>` and every optional field has a default.\n *\n * `client` is an openapi-fetch client for the ARBI API (`ArbiClient['fetch']` from\n * `@arbidocs/client`, or `arbi.getClient().fetch` from an `@arbidocs/sdk` `Arbi`), signed in with the\n * user's session; it carries the auth.\n */\n\nimport { createContext, useCallback, useContext, useMemo, useRef, type ReactNode } from 'react'\nimport type { ArbiClient, operations } from '@arbidocs/client'\nimport { useDeploymentDomain } from '../useArbi'\n\nexport type DocumentToolsClient = ArbiClient['fetch']\n\nexport type DocumentToolsNoticeKind = 'success' | 'error' | 'info' | 'warning'\n\nexport interface DocumentToolsNoticeOptions {\n /** A second line under the message. */\n description?: string\n /** One action button on the notice (\"Email it\"). */\n action?: { label: string; onClick: () => void }\n}\n\nexport type DocumentToolsNotify = (\n message: string,\n kind: DocumentToolsNoticeKind,\n options?: DocumentToolsNoticeOptions\n) => void\n\nexport interface DocumentToolsUser {\n /** The name marks are authored as and the signer's name is prefilled with. */\n name: string\n /** The sign-in email: signing re-derives the user's key from it and the password. */\n email?: string | null\n /** The user's id (usr-*): which fields of a signature request are theirs. */\n externalId?: string | null\n}\n\n/** What changed about a document, so the host can refresh its own lists and caches. */\nexport type DocumentChange =\n /** A version's markup got its first mark or lost its last one. */\n | 'markup'\n /** A signature was added: the document has a new current version. */\n | 'signed'\n /** A new document was made from it (a frozen copy). The ids are the NEW documents. */\n | 'copy'\n /** A new version was saved (the Word editor's Save version): the document's current version. */\n | 'version'\n\n/**\n * The `/v1/document/upload` query, typed from the API schema: `derived_from` is a list (a\n * production set is derived from every document in it), `shared` a boolean.\n */\nexport type DocumentUploadQuery = NonNullable<operations['upload_documents']['parameters']['query']>\n\nexport interface DocumentUploadRequest {\n file: File\n /** `/v1/document/upload` query: `derived_from`, `derived_role`, `shared`, `folder`. */\n query: DocumentUploadQuery\n}\n\n/**\n * The upload query as a URL query string, for a host that posts the upload itself (an XHR with\n * progress): a list repeats its key (`derived_from=a&derived_from=b`), empty values are left out.\n */\nexport function uploadQueryString(query: DocumentUploadQuery): string {\n const params = new URLSearchParams()\n for (const [key, value] of Object.entries(query)) {\n if (value === null || value === undefined) continue\n for (const item of Array.isArray(value) ? value : [value]) params.append(key, String(item))\n }\n return params.toString()\n}\n\nexport interface DocumentToolsEnvironment {\n client: DocumentToolsClient\n /**\n * The deployment domain the user's keys are derived for. Needed for signing. Default: the one\n * the host's `Arbi` computes (`arbi.getDeploymentDomain()`), if any.\n */\n deploymentDomain?: string\n /** The signed-in user; marks are authored as \"You\" without one, and signing is unavailable. */\n user?: DocumentToolsUser | null\n /** Surface a transient message. Default: none (errors still show inline where they can). */\n notify?: DocumentToolsNotify\n /** Open a document or a version reference (`doc-\u2026@v2`): the copy just made, the signed copy. */\n openDocument?: (documentRef: string) => void\n /**\n * Documents changed on the server (see {@link DocumentChange}); refresh the host's lists. The\n * tools wait for it before opening the document, so a copy is listed when it opens.\n */\n onDocumentsChanged?: (documentIds: string[], change: DocumentChange) => void | Promise<void>\n /** Upload a derived copy. Default: `POST /v1/document/upload` through `client`. */\n uploadDocument?: (\n request: DocumentUploadRequest\n ) => Promise<{ doc_ext_ids?: string[] } | undefined>\n /** Save a file to the user's computer. Default: a temporary download link. */\n saveFile?: (blob: Blob, fileName: string) => void\n /** Email a document (offered once it is signed). Omitted: no \"Email it\". */\n emailDocument?: (documentRef: string) => void\n /**\n * The public page that checks a signature (the certificate) in this app. When given, \"View\n * certificate\" opens it in preference to the backend's `certificate_url` (which is on the\n * deployment domain, like the link embedded in the signed PDF). Without it: the backend's\n * `certificate_url`, else `/verify/{reference}` on this origin.\n */\n certificateUrl?: (reference: string) => string\n}\n\n/** The environment with every default filled in. */\nexport interface ResolvedDocumentToolsEnvironment extends DocumentToolsEnvironment {\n prepareFileShare: (documentId: string) => Promise<void>\n registerBeforeFileShare: (documentId: string, flush: () => Promise<void>) => () => void\n notify: DocumentToolsNotify\n saveFile: (blob: Blob, fileName: string) => void\n uploadDocument: (\n request: DocumentUploadRequest\n ) => Promise<{ doc_ext_ids?: string[] } | undefined>\n}\n\n/**\n * Save a blob through a temporary `<a download>`. The object URL is revoked a minute later, not at\n * once: revoking straight after `click()` can cancel the download (Safari, and large files\n * elsewhere) before the browser has read the blob.\n */\nexport function downloadBlob(blob: Blob, fileName: string): void {\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = fileName\n document.body.appendChild(a)\n a.click()\n a.remove()\n setTimeout(() => URL.revokeObjectURL(url), 60_000)\n}\n\n/** The default upload: multipart `files` to `/v1/document/upload` through the API client. */\nexport function clientUpload(client: DocumentToolsClient) {\n return async ({ file, query }: DocumentUploadRequest) => {\n const formData = new FormData()\n formData.append('files', file)\n const { data, response } = await client.POST('/v1/document/upload', {\n params: { query },\n // The schema types the multipart body as `{ files: string[] }`; the FormData is sent as is.\n body: formData as unknown as { files: string[] },\n bodySerializer: () => formData,\n })\n if (!response.ok) throw new Error(`Upload failed with status ${response.status}`)\n return data\n }\n}\n\nexport function defaultCertificateUrl(reference: string): string {\n const origin = typeof location === 'undefined' ? '' : location.origin\n return `${origin}/verify/${encodeURIComponent(reference)}`\n}\n\n/**\n * Where \"View certificate\" goes for a signature: the host's `certificateUrl(reference)` when it\n * gives one, else the `certificate_url` the backend returned, else `/verify/{reference}` here.\n */\nexport function certificateLink(\n signature: { reference: string; certificate_url?: string | null },\n certificateUrl?: (reference: string) => string\n): string {\n if (certificateUrl) return certificateUrl(signature.reference)\n return signature.certificate_url || defaultCertificateUrl(signature.reference)\n}\n\nconst DocumentToolsContext = createContext<ResolvedDocumentToolsEnvironment | null>(null)\n\nexport interface DocumentToolsProviderProps extends DocumentToolsEnvironment {\n children: ReactNode\n}\n\nexport function DocumentToolsProvider({ children, ...env }: DocumentToolsProviderProps) {\n const arbiDeploymentDomain = useDeploymentDomain()\n const guards = useRef(new Map<string, () => Promise<void>>())\n const pendingFlushes = useRef(new Map<string, Promise<void>>())\n const registerBeforeFileShare = useCallback((id: string, flush: () => Promise<void>) => {\n guards.current.set(id, flush)\n return () => {\n if (guards.current.get(id) !== flush) return\n guards.current.delete(id)\n const pending = flush()\n pendingFlushes.current.set(id, pending)\n void pending.then(\n () => {\n if (pendingFlushes.current.get(id) === pending) pendingFlushes.current.delete(id)\n },\n () => {}\n )\n }\n }, [])\n const prepareFileShare = useCallback(async (id: string) => {\n const guard = guards.current.get(id)\n if (guard) {\n await guard()\n pendingFlushes.current.delete(id)\n } else await pendingFlushes.current.get(id)\n }, [])\n const {\n client,\n deploymentDomain,\n user,\n notify,\n openDocument,\n onDocumentsChanged,\n uploadDocument,\n saveFile,\n emailDocument,\n certificateUrl,\n } = env\n const value = useMemo<ResolvedDocumentToolsEnvironment>(\n () => ({\n client,\n prepareFileShare,\n registerBeforeFileShare,\n deploymentDomain: deploymentDomain ?? arbiDeploymentDomain,\n user,\n openDocument,\n onDocumentsChanged,\n emailDocument,\n notify: notify ?? (() => {}),\n saveFile: saveFile ?? downloadBlob,\n uploadDocument: uploadDocument ?? clientUpload(client),\n certificateUrl,\n }),\n [\n client,\n prepareFileShare,\n registerBeforeFileShare,\n deploymentDomain,\n arbiDeploymentDomain,\n user,\n notify,\n openDocument,\n onDocumentsChanged,\n uploadDocument,\n saveFile,\n emailDocument,\n certificateUrl,\n ]\n )\n return <DocumentToolsContext.Provider value={value}>{children}</DocumentToolsContext.Provider>\n}\n\n/** The host's environment, or `null` outside a `<DocumentToolsProvider>`. */\nexport function useOptionalDocumentTools(): ResolvedDocumentToolsEnvironment | null {\n return useContext(DocumentToolsContext)\n}\n\n/** The host's environment; throws outside a `<DocumentToolsProvider>`. */\nexport function useDocumentTools(): ResolvedDocumentToolsEnvironment {\n const env = useContext(DocumentToolsContext)\n if (!env) throw new Error('The document tools must be used within a <DocumentToolsProvider>')\n return env\n}\n"],
|
|
5
|
+
"mappings": "AAsPS;AA5OT,SAAS,eAAe,aAAa,YAAY,SAAS,cAA8B;AAExF,SAAS,2BAA2B;AAuD7B,SAAS,kBAAkB,OAAoC;AACpE,QAAM,SAAS,IAAI,gBAAgB;AACnC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,UAAU,QAAQ,UAAU,OAAW;AAC3C,eAAW,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAG,QAAO,OAAO,KAAK,OAAO,IAAI,CAAC;AAAA,EAC5F;AACA,SAAO,OAAO,SAAS;AACzB;AAqDO,SAAS,aAAa,MAAY,UAAwB;AAC/D,QAAM,MAAM,IAAI,gBAAgB,IAAI;AACpC,QAAM,IAAI,SAAS,cAAc,GAAG;AACpC,IAAE,OAAO;AACT,IAAE,WAAW;AACb,WAAS,KAAK,YAAY,CAAC;AAC3B,IAAE,MAAM;AACR,IAAE,OAAO;AACT,aAAW,MAAM,IAAI,gBAAgB,GAAG,GAAG,GAAM;AACnD;AAGO,SAAS,aAAa,QAA6B;AACxD,SAAO,OAAO,EAAE,MAAM,MAAM,MAA6B;AACvD,UAAM,WAAW,IAAI,SAAS;AAC9B,aAAS,OAAO,SAAS,IAAI;AAC7B,UAAM,EAAE,MAAM,SAAS,IAAI,MAAM,OAAO,KAAK,uBAAuB;AAAA,MAClE,QAAQ,EAAE,MAAM;AAAA;AAAA,MAEhB,MAAM;AAAA,MACN,gBAAgB,MAAM;AAAA,IACxB,CAAC;AACD,QAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,6BAA6B,SAAS,MAAM,EAAE;AAChF,WAAO;AAAA,EACT;AACF;AAEO,SAAS,sBAAsB,WAA2B;AAC/D,QAAM,SAAS,OAAO,aAAa,cAAc,KAAK,SAAS;AAC/D,SAAO,GAAG,MAAM,WAAW,mBAAmB,SAAS,CAAC;AAC1D;AAMO,SAAS,gBACd,WACA,gBACQ;AACR,MAAI,eAAgB,QAAO,eAAe,UAAU,SAAS;AAC7D,SAAO,UAAU,mBAAmB,sBAAsB,UAAU,SAAS;AAC/E;AAEA,MAAM,uBAAuB,cAAuD,IAAI;AAMjF,SAAS,sBAAsB,EAAE,UAAU,GAAG,IAAI,GAA+B;AACtF,QAAM,uBAAuB,oBAAoB;AACjD,QAAM,SAAS,OAAO,oBAAI,IAAiC,CAAC;AAC5D,QAAM,iBAAiB,OAAO,oBAAI,IAA2B,CAAC;AAC9D,QAAM,0BAA0B,YAAY,CAAC,IAAY,UAA+B;AACtF,WAAO,QAAQ,IAAI,IAAI,KAAK;AAC5B,WAAO,MAAM;AACX,UAAI,OAAO,QAAQ,IAAI,EAAE,MAAM,MAAO;AACtC,aAAO,QAAQ,OAAO,EAAE;AACxB,YAAM,UAAU,MAAM;AACtB,qBAAe,QAAQ,IAAI,IAAI,OAAO;AACtC,WAAK,QAAQ;AAAA,QACX,MAAM;AACJ,cAAI,eAAe,QAAQ,IAAI,EAAE,MAAM,QAAS,gBAAe,QAAQ,OAAO,EAAE;AAAA,QAClF;AAAA,QACA,MAAM;AAAA,QAAC;AAAA,MACT;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AACL,QAAM,mBAAmB,YAAY,OAAO,OAAe;AACzD,UAAM,QAAQ,OAAO,QAAQ,IAAI,EAAE;AACnC,QAAI,OAAO;AACT,YAAM,MAAM;AACZ,qBAAe,QAAQ,OAAO,EAAE;AAAA,IAClC,MAAO,OAAM,eAAe,QAAQ,IAAI,EAAE;AAAA,EAC5C,GAAG,CAAC,CAAC;AACL,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AACJ,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,kBAAkB,oBAAoB;AAAA,MACtC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,WAAW,MAAM;AAAA,MAAC;AAAA,MAC1B,UAAU,YAAY;AAAA,MACtB,gBAAgB,kBAAkB,aAAa,MAAM;AAAA,MACrD;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,SAAO,oBAAC,qBAAqB,UAArB,EAA8B,OAAe,UAAS;AAChE;AAGO,SAAS,2BAAoE;AAClF,SAAO,WAAW,oBAAoB;AACxC;AAGO,SAAS,mBAAqD;AACnE,QAAM,MAAM,WAAW,oBAAoB;AAC3C,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,kEAAkE;AAC5F,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { useQuery } from "@tanstack/react-query";
|
|
2
|
+
import { arbiQueryKeys } from "../query-keys.js";
|
|
3
|
+
import { signMessage, unlockIdentityWithPassword } from "@arbidocs/client";
|
|
4
|
+
import { intentText, sha256Hex } from "./signing.js";
|
|
5
|
+
function failure(error) {
|
|
6
|
+
const detail = error?.detail;
|
|
7
|
+
return new Error(typeof detail === "string" ? detail : "The shared file request failed");
|
|
8
|
+
}
|
|
9
|
+
async function createFileShare(client, documentId, body) {
|
|
10
|
+
const result = await client.POST("/v1/document/{document_ext_id}/file-shares", {
|
|
11
|
+
params: { path: { document_ext_id: documentId } },
|
|
12
|
+
body
|
|
13
|
+
});
|
|
14
|
+
if (!result.data) throw failure(result.error);
|
|
15
|
+
return result.data;
|
|
16
|
+
}
|
|
17
|
+
async function getFileShare(client, id) {
|
|
18
|
+
const result = await client.GET("/v1/file-shares/{share_id}", {
|
|
19
|
+
params: { path: { share_id: id } }
|
|
20
|
+
});
|
|
21
|
+
if (!result.data) throw failure(result.error);
|
|
22
|
+
return result.data;
|
|
23
|
+
}
|
|
24
|
+
async function fileShareBytes(client, id, kind) {
|
|
25
|
+
const result = await client.GET("/v1/file-shares/{share_id}/file", {
|
|
26
|
+
params: { path: { share_id: id }, query: { kind } },
|
|
27
|
+
parseAs: "blob"
|
|
28
|
+
});
|
|
29
|
+
if (!result.data) throw failure(result.error);
|
|
30
|
+
return result.data;
|
|
31
|
+
}
|
|
32
|
+
function fileShareSigningRequest(share) {
|
|
33
|
+
return {
|
|
34
|
+
external_id: share.external_id,
|
|
35
|
+
doc_ext_id: share.document_ext_id,
|
|
36
|
+
version: share.version,
|
|
37
|
+
source_sha256: share.source_sha256,
|
|
38
|
+
fields: share.fields,
|
|
39
|
+
message: share.message,
|
|
40
|
+
status: share.status === "signing" ? "sent" : share.status === "completed" ? "completed" : "voided",
|
|
41
|
+
signers: share.recipients.filter((r) => r.permission === "sign").map((r) => ({
|
|
42
|
+
external_id: r.email,
|
|
43
|
+
email: r.email,
|
|
44
|
+
name: r.email,
|
|
45
|
+
status: r.status === "signed" ? "signed" : "pending",
|
|
46
|
+
progress: r.status === "signed" ? "signed" : "registered",
|
|
47
|
+
fields: share.fields.filter((f) => f.signer === r.email).length
|
|
48
|
+
})),
|
|
49
|
+
created_at: (/* @__PURE__ */ new Date(0)).toISOString(),
|
|
50
|
+
stale: false
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async function signFileShare(client, domain, vars) {
|
|
54
|
+
const path = { share_id: vars.request.external_id };
|
|
55
|
+
const body = { adopted: vars.adopted, fields: vars.fields };
|
|
56
|
+
const prepared = await client.POST("/v1/file-shares/{share_id}/sign/prepare", {
|
|
57
|
+
params: { path },
|
|
58
|
+
body
|
|
59
|
+
});
|
|
60
|
+
if (!prepared.data) throw failure(prepared.error);
|
|
61
|
+
const { statement, timestamp, source_sha256, intent } = prepared.data;
|
|
62
|
+
if (source_sha256 !== vars.request.source_sha256 || await sha256Hex(vars.pdfBlob) !== source_sha256)
|
|
63
|
+
throw new Error("The shared file changed. Ask the sender for a new request.");
|
|
64
|
+
if (intent !== intentText({ name: vars.adopted.name }))
|
|
65
|
+
throw new Error("Signing statement mismatch");
|
|
66
|
+
const identity = await unlockIdentityWithPassword(vars.email, vars.password, domain);
|
|
67
|
+
const result = await client.POST("/v1/file-shares/{share_id}/sign", {
|
|
68
|
+
params: { path },
|
|
69
|
+
body: { ...body, timestamp, signature: signMessage(statement, identity) }
|
|
70
|
+
});
|
|
71
|
+
if (!result.data) throw failure(result.error);
|
|
72
|
+
return {
|
|
73
|
+
request: fileShareSigningRequest(result.data),
|
|
74
|
+
completed: result.data.status === "completed"
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function useFileShare(client, shareId, signing) {
|
|
78
|
+
return useQuery({
|
|
79
|
+
queryKey: arbiQueryKeys.fileShare(shareId),
|
|
80
|
+
queryFn: () => getFileShare(client, shareId),
|
|
81
|
+
refetchInterval: signing ? false : 5e3
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
function useFileSharePdf(client, shareId, share) {
|
|
85
|
+
return useQuery({
|
|
86
|
+
queryKey: arbiQueryKeys.fileSharePdf(shareId, share?.status),
|
|
87
|
+
queryFn: () => fileShareBytes(client, shareId, share?.status === "completed" ? "signed" : "view"),
|
|
88
|
+
enabled: !!share?.can_preview,
|
|
89
|
+
staleTime: Infinity
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
function useFileShares(client) {
|
|
93
|
+
return useQuery({
|
|
94
|
+
queryKey: arbiQueryKeys.fileShares(),
|
|
95
|
+
queryFn: async () => {
|
|
96
|
+
const result = await client.GET("/v1/file-shares");
|
|
97
|
+
if (!result.data) throw new Error("Could not load shared files");
|
|
98
|
+
return result.data;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
export {
|
|
103
|
+
createFileShare,
|
|
104
|
+
fileShareBytes,
|
|
105
|
+
fileShareSigningRequest,
|
|
106
|
+
getFileShare,
|
|
107
|
+
signFileShare,
|
|
108
|
+
useFileShare,
|
|
109
|
+
useFileSharePdf,
|
|
110
|
+
useFileShares
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=file-shares.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/document-tools/file-shares.ts"],
|
|
4
|
+
"sourcesContent": ["import { useQuery } from '@tanstack/react-query'\nimport { arbiQueryKeys } from '../query-keys'\n/** Share one immutable file version with named recipients, independently of workspace membership. */\nimport { signMessage, unlockIdentityWithPassword, type components } from '@arbidocs/client'\nimport type { DocumentToolsClient } from './environment'\nimport { intentText, sha256Hex } from './signing'\nimport type {\n SignatureRequest,\n SignRequestVars,\n SignRequestSignResponse,\n} from './signature-requests'\n\nexport type FileShare = components['schemas']['FileShareResponse']\nexport type CreateFileShare = components['schemas']['CreateFileShare']\n\nfunction failure(error: unknown): Error {\n const detail = (error as { detail?: unknown } | undefined)?.detail\n return new Error(typeof detail === 'string' ? detail : 'The shared file request failed')\n}\n\nexport async function createFileShare(\n client: DocumentToolsClient,\n documentId: string,\n body: CreateFileShare\n) {\n const result = await client.POST('/v1/document/{document_ext_id}/file-shares', {\n params: { path: { document_ext_id: documentId } },\n body,\n })\n if (!result.data) throw failure(result.error)\n return result.data\n}\n\nexport async function getFileShare(client: DocumentToolsClient, id: string): Promise<FileShare> {\n const result = await client.GET('/v1/file-shares/{share_id}', {\n params: { path: { share_id: id } },\n })\n if (!result.data) throw failure(result.error)\n return result.data\n}\n\nexport async function fileShareBytes(\n client: DocumentToolsClient,\n id: string,\n kind: 'view' | 'original' | 'signed'\n) {\n const result = await client.GET('/v1/file-shares/{share_id}/file', {\n params: { path: { share_id: id }, query: { kind } },\n parseAs: 'blob',\n })\n if (!result.data) throw failure(result.error)\n return result.data\n}\n\n/** Adapt only the guided viewer's presentation data; sharing uses its own authorization endpoints. */\nexport function fileShareSigningRequest(share: FileShare): SignatureRequest {\n return {\n external_id: share.external_id,\n doc_ext_id: share.document_ext_id,\n version: share.version,\n source_sha256: share.source_sha256,\n fields: share.fields,\n message: share.message,\n status:\n share.status === 'signing' ? 'sent' : share.status === 'completed' ? 'completed' : 'voided',\n signers: share.recipients\n .filter((r) => r.permission === 'sign')\n .map((r) => ({\n external_id: r.email,\n email: r.email,\n name: r.email,\n status: r.status === 'signed' ? 'signed' : 'pending',\n progress: r.status === 'signed' ? 'signed' : 'registered',\n fields: share.fields.filter((f) => f.signer === r.email).length,\n })),\n created_at: new Date(0).toISOString(),\n stale: false,\n }\n}\n\nexport async function signFileShare(\n client: DocumentToolsClient,\n domain: string,\n vars: SignRequestVars\n): Promise<SignRequestSignResponse> {\n const path = { share_id: vars.request.external_id }\n const body = { adopted: vars.adopted, fields: vars.fields }\n const prepared = await client.POST('/v1/file-shares/{share_id}/sign/prepare', {\n params: { path },\n body,\n })\n if (!prepared.data) throw failure(prepared.error)\n const { statement, timestamp, source_sha256, intent } = prepared.data\n if (\n source_sha256 !== vars.request.source_sha256 ||\n (await sha256Hex(vars.pdfBlob)) !== source_sha256\n )\n throw new Error('The shared file changed. Ask the sender for a new request.')\n if (intent !== intentText({ name: vars.adopted.name }))\n throw new Error('Signing statement mismatch')\n const identity = await unlockIdentityWithPassword(vars.email, vars.password, domain)\n const result = await client.POST('/v1/file-shares/{share_id}/sign', {\n params: { path },\n body: { ...body, timestamp, signature: signMessage(statement, identity) },\n })\n if (!result.data) throw failure(result.error)\n return {\n request: fileShareSigningRequest(result.data),\n completed: result.data.status === 'completed',\n }\n}\n\nexport function useFileShare(client: DocumentToolsClient, shareId: string, signing: boolean) {\n return useQuery({\n queryKey: arbiQueryKeys.fileShare(shareId),\n queryFn: () => getFileShare(client, shareId),\n refetchInterval: signing ? false : 5000,\n })\n}\n\nexport function useFileSharePdf(client: DocumentToolsClient, shareId: string, share?: FileShare) {\n return useQuery({\n queryKey: arbiQueryKeys.fileSharePdf(shareId, share?.status),\n queryFn: () =>\n fileShareBytes(client, shareId, share?.status === 'completed' ? 'signed' : 'view'),\n enabled: !!share?.can_preview,\n staleTime: Infinity,\n })\n}\n\nexport function useFileShares(client: DocumentToolsClient) {\n return useQuery({\n queryKey: arbiQueryKeys.fileShares(),\n queryFn: async () => {\n const result = await client.GET('/v1/file-shares')\n if (!result.data) throw new Error('Could not load shared files')\n return result.data\n },\n })\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const baseName = (fileName) => (fileName || "document").replace(/\.pdf$/i, "");
|
|
2
|
+
function frozenCopyName(fileName, redacted) {
|
|
3
|
+
return `${baseName(fileName)} (${redacted ? "redacted" : "annotated"}).pdf`;
|
|
4
|
+
}
|
|
5
|
+
function redactionLogName(fileName) {
|
|
6
|
+
return `${baseName(fileName)} (redaction log).csv`;
|
|
7
|
+
}
|
|
8
|
+
async function uploadFrozenCopy(upload, bytes, source, redacted) {
|
|
9
|
+
const file = new File([bytes], frozenCopyName(source.fileName, redacted), {
|
|
10
|
+
type: "application/pdf"
|
|
11
|
+
});
|
|
12
|
+
const query = {
|
|
13
|
+
derived_from: [source.documentId],
|
|
14
|
+
derived_role: redacted ? "redaction" : "annotated",
|
|
15
|
+
shared: source.shared
|
|
16
|
+
};
|
|
17
|
+
if (source.folder) query.folder = source.folder;
|
|
18
|
+
if (source.workspaceId) query.workspace_ext_id = source.workspaceId;
|
|
19
|
+
const response = await upload({ file, query });
|
|
20
|
+
return response?.doc_ext_ids?.[0];
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
frozenCopyName,
|
|
24
|
+
redactionLogName,
|
|
25
|
+
uploadFrozenCopy
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=frozen-copy.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/document-tools/frozen-copy.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Saving a frozen copy: a SEPARATE document derived from the version it was frozen from\n * (`derived_from`, role `redaction` or `annotated`), never a new version of it. The original keeps\n * its place in every list and stays the current version; the copy sits beside it, in the same\n * folder and with the same workspace sharing.\n */\n\nimport type { DocumentToolsEnvironment, DocumentUploadQuery } from './environment'\n\nexport interface FrozenCopySource {\n /** The version on screen, which the copy is derived from. */\n documentId: string\n fileName: string | null | undefined\n shared: boolean\n folder?: string | null\n /**\n * The original's workspace, where the copy goes: named on the upload, so it never lands in\n * whichever workspace the session has open (the server refuses one whose key it lacks).\n */\n workspaceId?: string | null\n}\n\nconst baseName = (fileName: string | null | undefined) =>\n (fileName || 'document').replace(/\\.pdf$/i, '')\n\n/** \"Contract.pdf\" becomes \"Contract (redacted).pdf\"; a .txt or .docx keeps its extension inside. */\nexport function frozenCopyName(fileName: string | null | undefined, redacted: boolean): string {\n return `${baseName(fileName)} (${redacted ? 'redacted' : 'annotated'}).pdf`\n}\n\nexport function redactionLogName(fileName: string | null | undefined): string {\n return `${baseName(fileName)} (redaction log).csv`\n}\n\n/** Upload the frozen bytes as a new document derived from `source`; returns its id, if any. */\nexport async function uploadFrozenCopy(\n upload: NonNullable<DocumentToolsEnvironment['uploadDocument']>,\n bytes: Uint8Array,\n source: FrozenCopySource,\n redacted: boolean\n): Promise<string | undefined> {\n const file = new File([bytes as BlobPart], frozenCopyName(source.fileName, redacted), {\n type: 'application/pdf',\n })\n const query: DocumentUploadQuery = {\n derived_from: [source.documentId],\n derived_role: redacted ? 'redaction' : 'annotated',\n shared: source.shared,\n }\n if (source.folder) query.folder = source.folder\n if (source.workspaceId) query.workspace_ext_id = source.workspaceId\n const response = await upload({ file, query })\n return response?.doc_ext_ids?.[0]\n}\n"],
|
|
5
|
+
"mappings": "AAsBA,MAAM,WAAW,CAAC,cACf,YAAY,YAAY,QAAQ,WAAW,EAAE;AAGzC,SAAS,eAAe,UAAqC,UAA2B;AAC7F,SAAO,GAAG,SAAS,QAAQ,CAAC,KAAK,WAAW,aAAa,WAAW;AACtE;AAEO,SAAS,iBAAiB,UAA6C;AAC5E,SAAO,GAAG,SAAS,QAAQ,CAAC;AAC9B;AAGA,eAAsB,iBACpB,QACA,OACA,QACA,UAC6B;AAC7B,QAAM,OAAO,IAAI,KAAK,CAAC,KAAiB,GAAG,eAAe,OAAO,UAAU,QAAQ,GAAG;AAAA,IACpF,MAAM;AAAA,EACR,CAAC;AACD,QAAM,QAA6B;AAAA,IACjC,cAAc,CAAC,OAAO,UAAU;AAAA,IAChC,cAAc,WAAW,cAAc;AAAA,IACvC,QAAQ,OAAO;AAAA,EACjB;AACA,MAAI,OAAO,OAAQ,OAAM,SAAS,OAAO;AACzC,MAAI,OAAO,YAAa,OAAM,mBAAmB,OAAO;AACxD,QAAM,WAAW,MAAM,OAAO,EAAE,MAAM,MAAM,CAAC;AAC7C,SAAO,UAAU,cAAc,CAAC;AAClC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,150 +1,28 @@
|
|
|
1
|
-
export
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
export * from "./core.js";
|
|
2
|
+
import {
|
|
3
|
+
PRODUCTIONS_FOLDER,
|
|
4
|
+
buildProduction,
|
|
5
|
+
fetchProductionPdf,
|
|
6
|
+
hasNoRendition,
|
|
7
|
+
isPdfDocument,
|
|
8
|
+
productionDocumentName,
|
|
9
|
+
productionFileName,
|
|
10
|
+
productionFolder,
|
|
11
|
+
productionIndexCsv,
|
|
12
|
+
productionTitle,
|
|
13
|
+
saveProductionFiles
|
|
14
|
+
} from "./production.js";
|
|
15
|
+
export {
|
|
16
|
+
PRODUCTIONS_FOLDER,
|
|
17
|
+
buildProduction,
|
|
18
|
+
fetchProductionPdf,
|
|
19
|
+
hasNoRendition,
|
|
20
|
+
isPdfDocument,
|
|
21
|
+
productionDocumentName,
|
|
22
|
+
productionFileName,
|
|
23
|
+
productionFolder,
|
|
24
|
+
productionIndexCsv,
|
|
25
|
+
productionTitle,
|
|
26
|
+
saveProductionFiles
|
|
20
27
|
};
|
|
21
|
-
var NO_RENDITION_EXTENSIONS = new Set(
|
|
22
|
-
[
|
|
23
|
-
// images
|
|
24
|
-
"jpg jpeg png gif bmp tiff tif webp heic",
|
|
25
|
-
// video and audio
|
|
26
|
-
"mp4 mpeg mpg webm mov avi mkv mp3 wav m4a aac ogg flac",
|
|
27
|
-
// archives, binaries, design files
|
|
28
|
-
"zip rar 7z tar gz exe bin dmg iso apk msi dll so psd ai sketch"
|
|
29
|
-
].join(" ").split(" ")
|
|
30
|
-
);
|
|
31
|
-
var isPdfDocument = (doc) => /pdf/i.test(doc.file_type ?? "") || extensionOf(doc.file_name) === "pdf";
|
|
32
|
-
var hasNoRendition = (doc) => !isPdfDocument(doc) && NO_RENDITION_EXTENSIONS.has(extensionOf(doc.file_name));
|
|
33
|
-
var productionDocumentName = (doc) => doc.doc_metadata?.title || doc.file_name || doc.external_id;
|
|
34
|
-
var isPdfBytes = (bytes) => bytes.length > 4 && String.fromCharCode(...bytes.subarray(0, 5)) === "%PDF-";
|
|
35
|
-
async function fetchProductionPdf(client, doc) {
|
|
36
|
-
const pdf = isPdfDocument(doc);
|
|
37
|
-
let blob;
|
|
38
|
-
try {
|
|
39
|
-
blob = await (pdf ? fetchDocumentFile : fetchDocumentPdf)(client, doc.external_id);
|
|
40
|
-
} catch (e) {
|
|
41
|
-
if (!pdf && e instanceof DocumentFetchError) return null;
|
|
42
|
-
throw e;
|
|
43
|
-
}
|
|
44
|
-
const bytes = new Uint8Array(await blob.arrayBuffer());
|
|
45
|
-
return pdf || isPdfBytes(bytes) ? bytes : null;
|
|
46
|
-
}
|
|
47
|
-
var safeName = (name) => name.replace(/[\\/:*?"<>|]+/g, "_").trim();
|
|
48
|
-
function productionTitle(firstLabel, lastLabel) {
|
|
49
|
-
return safeName(`Production ${firstLabel}-${lastLabel}`);
|
|
50
|
-
}
|
|
51
|
-
function productionFolder(title, merged) {
|
|
52
|
-
return merged ? PRODUCTIONS_FOLDER : `${PRODUCTIONS_FOLDER}/${title}`;
|
|
53
|
-
}
|
|
54
|
-
function productionFileName(file, title) {
|
|
55
|
-
if (!file.firstLabel) return `${title} index.pdf`;
|
|
56
|
-
return `${file.name.replace(/\.pdf$/i, "")} (${file.firstLabel}-${file.lastLabel}).pdf`;
|
|
57
|
-
}
|
|
58
|
-
var csvCell = (value) => `"${String(value).replace(/"/g, '""')}"`;
|
|
59
|
-
function productionIndexCsv(index) {
|
|
60
|
-
const rows = index.map(
|
|
61
|
-
(e) => [e.documentId, e.name, e.file, e.pages, e.firstLabel, e.lastLabel].map(csvCell).join(",")
|
|
62
|
-
);
|
|
63
|
-
return ["document_id,name,file,pages,first_label,last_label", ...rows].join("\n");
|
|
64
|
-
}
|
|
65
|
-
async function saveProductionFiles(upload, files, folder) {
|
|
66
|
-
const ids = [];
|
|
67
|
-
for (const file of files) {
|
|
68
|
-
const query = {
|
|
69
|
-
derived_from: file.sources.map((doc) => doc.external_id),
|
|
70
|
-
derived_role: "production",
|
|
71
|
-
shared: file.sources.every((doc) => doc.shared),
|
|
72
|
-
folder
|
|
73
|
-
};
|
|
74
|
-
const workspaces = new Set(file.sources.map((doc) => doc.workspace_ext_id).filter(Boolean));
|
|
75
|
-
if (workspaces.size === 1) query.workspace_ext_id = [...workspaces][0];
|
|
76
|
-
const response = await upload({
|
|
77
|
-
file: new File([file.bytes], file.name, { type: "application/pdf" }),
|
|
78
|
-
query
|
|
79
|
-
});
|
|
80
|
-
ids.push(...response?.doc_ext_ids ?? []);
|
|
81
|
-
}
|
|
82
|
-
return ids;
|
|
83
|
-
}
|
|
84
|
-
async function buildProduction(client, documents, choices, options) {
|
|
85
|
-
const byId = new Map(documents.map((doc) => [doc.external_id, doc]));
|
|
86
|
-
const included = [];
|
|
87
|
-
const noRendition = [];
|
|
88
|
-
const items = [];
|
|
89
|
-
for (const doc of choices.order.flatMap((id) => byId.get(id) ?? [])) {
|
|
90
|
-
const bytes = await fetchProductionPdf(client, doc);
|
|
91
|
-
if (!bytes) {
|
|
92
|
-
noRendition.push(doc);
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
included.push(doc);
|
|
96
|
-
items.push({
|
|
97
|
-
name: productionDocumentName(doc),
|
|
98
|
-
documentId: doc.external_id,
|
|
99
|
-
bytes,
|
|
100
|
-
qrUrl: options.documentUrl(doc.external_id)
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
if (items.length === 0) {
|
|
104
|
-
throw new Error("None of these documents has a PDF version to number yet.");
|
|
105
|
-
}
|
|
106
|
-
const { buildBundle } = await import('../bundle-YNOX7VIL.js');
|
|
107
|
-
const result = await buildBundle(items, {
|
|
108
|
-
layout: choices.layout,
|
|
109
|
-
bates: {
|
|
110
|
-
prefix: choices.prefix,
|
|
111
|
-
start: choices.start,
|
|
112
|
-
digits: choices.digits,
|
|
113
|
-
corner: choices.corner
|
|
114
|
-
},
|
|
115
|
-
qr: choices.qr,
|
|
116
|
-
// The QR code sits in the bottom corner the label is not in.
|
|
117
|
-
qrCorner: choices.corner.endsWith("left") ? "bottom-right" : "bottom-left",
|
|
118
|
-
indexPage: choices.indexPage,
|
|
119
|
-
author: options.author,
|
|
120
|
-
onProgress: options.onProgress
|
|
121
|
-
});
|
|
122
|
-
const title = productionTitle(
|
|
123
|
-
result.index[0].firstLabel,
|
|
124
|
-
result.index[result.index.length - 1].lastLabel
|
|
125
|
-
);
|
|
126
|
-
const merged = choices.layout === "merged";
|
|
127
|
-
const files = merged ? [{ ...result.files[0], name: `${title}.pdf` }] : result.files;
|
|
128
|
-
const sourceOf = new Map(result.index.map((e) => [e.file, byId.get(e.documentId)]));
|
|
129
|
-
const uploads = files.map((file) => ({
|
|
130
|
-
name: merged ? file.name : productionFileName(file, title),
|
|
131
|
-
bytes: file.bytes,
|
|
132
|
-
// The merged file (and a separate index) is made from every document; each per-document
|
|
133
|
-
// file from its own.
|
|
134
|
-
sources: merged || !sourceOf.has(file.name) ? included : [sourceOf.get(file.name)]
|
|
135
|
-
}));
|
|
136
|
-
return {
|
|
137
|
-
title,
|
|
138
|
-
merged,
|
|
139
|
-
files,
|
|
140
|
-
index: result.index,
|
|
141
|
-
included,
|
|
142
|
-
noRendition,
|
|
143
|
-
uploads,
|
|
144
|
-
folder: productionFolder(title, merged)
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
export { PRODUCTIONS_FOLDER, buildProduction, fetchProductionPdf, hasNoRendition, isPdfDocument, productionDocumentName, productionFileName, productionFolder, productionIndexCsv, productionTitle, saveProductionFiles };
|
|
149
28
|
//# sourceMappingURL=index.js.map
|
|
150
|
-
//# sourceMappingURL=index.js.map
|