@arbidocs/react 0.5.111 → 0.5.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/{chunk-Z3W4XFWB.cjs → chunk-C72FSQUE.cjs} +3 -3
- package/dist/{chunk-Z3W4XFWB.cjs.map → chunk-C72FSQUE.cjs.map} +1 -1
- package/dist/{chunk-LBAG7KL7.cjs → chunk-FQVNZCTD.cjs} +3 -3
- package/dist/{chunk-LBAG7KL7.cjs.map → chunk-FQVNZCTD.cjs.map} +1 -1
- package/dist/{chunk-DI5KSVKY.cjs → chunk-UDDJIUHJ.cjs} +3 -3
- package/dist/{chunk-DI5KSVKY.cjs.map → chunk-UDDJIUHJ.cjs.map} +1 -1
- 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.cjs +80 -80
- 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.cjs +80 -80
- 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.cjs +282 -282
- 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.cjs +37 -37
- 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.cjs +154 -154
- 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,281 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AGGREGATE_FIELDS
|
|
3
|
+
} from "./types.js";
|
|
4
|
+
const EMPTY_GROUP_LABEL = "(empty)";
|
|
5
|
+
const MAX_SERIES = 12;
|
|
6
|
+
const DEFAULT_LIMIT = 50;
|
|
7
|
+
const pad = (n) => String(n).padStart(2, "0");
|
|
8
|
+
function asDay(value) {
|
|
9
|
+
if (typeof value !== "string" || value.length < 10) return null;
|
|
10
|
+
const day = /* @__PURE__ */ new Date(`${value.slice(0, 10)}T00:00:00Z`);
|
|
11
|
+
return Number.isNaN(day.getTime()) ? null : day;
|
|
12
|
+
}
|
|
13
|
+
function isoWeek(day) {
|
|
14
|
+
const d = new Date(day);
|
|
15
|
+
const weekday = d.getUTCDay() || 7;
|
|
16
|
+
d.setUTCDate(d.getUTCDate() + 4 - weekday);
|
|
17
|
+
const yearStart = Date.UTC(d.getUTCFullYear(), 0, 1);
|
|
18
|
+
return [d.getUTCFullYear(), Math.ceil(((d.getTime() - yearStart) / 864e5 + 1) / 7)];
|
|
19
|
+
}
|
|
20
|
+
function bucketOf(value, bucket) {
|
|
21
|
+
const day = asDay(value);
|
|
22
|
+
if (!day) return null;
|
|
23
|
+
const y = day.getUTCFullYear();
|
|
24
|
+
const m = day.getUTCMonth() + 1;
|
|
25
|
+
switch (bucket) {
|
|
26
|
+
case "day":
|
|
27
|
+
return `${y}-${pad(m)}-${pad(day.getUTCDate())}`;
|
|
28
|
+
case "week": {
|
|
29
|
+
const [wy, w] = isoWeek(day);
|
|
30
|
+
return `${wy}-W${pad(w)}`;
|
|
31
|
+
}
|
|
32
|
+
case "quarter":
|
|
33
|
+
return `${y}-Q${Math.floor((m - 1) / 3) + 1}`;
|
|
34
|
+
case "year":
|
|
35
|
+
return String(y);
|
|
36
|
+
default:
|
|
37
|
+
return `${y}-${pad(m)}`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function bucketStart(key, bucket) {
|
|
41
|
+
const parts = key.match(/^(\d{4})(?:-(W|Q)?(\d{1,2}))?(?:-(\d{2}))?$/);
|
|
42
|
+
if (!parts) return null;
|
|
43
|
+
const year = Number(parts[1]);
|
|
44
|
+
const n = Number(parts[3] ?? 1);
|
|
45
|
+
switch (bucket) {
|
|
46
|
+
case "day":
|
|
47
|
+
return asDay(key);
|
|
48
|
+
case "week": {
|
|
49
|
+
const jan4 = new Date(Date.UTC(year, 0, 4));
|
|
50
|
+
const monday = new Date(jan4);
|
|
51
|
+
monday.setUTCDate(jan4.getUTCDate() - ((jan4.getUTCDay() || 7) - 1) + (n - 1) * 7);
|
|
52
|
+
return monday;
|
|
53
|
+
}
|
|
54
|
+
case "quarter":
|
|
55
|
+
return new Date(Date.UTC(year, (n - 1) * 3, 1));
|
|
56
|
+
case "year":
|
|
57
|
+
return new Date(Date.UTC(year, 0, 1));
|
|
58
|
+
default:
|
|
59
|
+
return new Date(Date.UTC(year, n - 1, 1));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function nextBucket(day, bucket) {
|
|
63
|
+
const d = new Date(day);
|
|
64
|
+
if (bucket === "day") d.setUTCDate(d.getUTCDate() + 1);
|
|
65
|
+
else if (bucket === "week") d.setUTCDate(d.getUTCDate() + 7);
|
|
66
|
+
else if (bucket === "month") d.setUTCMonth(d.getUTCMonth() + 1);
|
|
67
|
+
else if (bucket === "quarter") d.setUTCMonth(d.getUTCMonth() + 3);
|
|
68
|
+
else d.setUTCFullYear(d.getUTCFullYear() + 1);
|
|
69
|
+
return d;
|
|
70
|
+
}
|
|
71
|
+
function bucketRange(first, last, bucket, max = 500) {
|
|
72
|
+
const start = bucketStart(first, bucket);
|
|
73
|
+
const end = bucketStart(last, bucket);
|
|
74
|
+
if (!start || !end || start > end) return null;
|
|
75
|
+
const keys = [];
|
|
76
|
+
for (let d = start; d <= end && keys.length <= max; d = nextBucket(d, bucket)) {
|
|
77
|
+
keys.push(bucketOf(d.toISOString(), bucket));
|
|
78
|
+
}
|
|
79
|
+
return keys.length > max ? null : keys;
|
|
80
|
+
}
|
|
81
|
+
const isEmpty = (value) => value === null || value === void 0 || value === "" || Array.isArray(value) && !value.length;
|
|
82
|
+
function groupKeys(value, field, bucket) {
|
|
83
|
+
if (isEmpty(value)) return [""];
|
|
84
|
+
if (Array.isArray(value)) {
|
|
85
|
+
return [...new Set(value.map((v) => groupKeys(v, field, bucket)[0]))];
|
|
86
|
+
}
|
|
87
|
+
if (field.type === "date") return [bucketOf(value, bucket) ?? ""];
|
|
88
|
+
if (typeof value === "boolean") return [value ? "Yes" : "No"];
|
|
89
|
+
return [String(value)];
|
|
90
|
+
}
|
|
91
|
+
const lower = (v) => String(v).toLowerCase();
|
|
92
|
+
function compare(value, filter, field) {
|
|
93
|
+
const empty = isEmpty(value);
|
|
94
|
+
if (filter.op === "empty") return empty;
|
|
95
|
+
if (filter.op === "not_empty") return !empty;
|
|
96
|
+
if (Array.isArray(value)) {
|
|
97
|
+
const values = value;
|
|
98
|
+
if (filter.op === "contains")
|
|
99
|
+
return values.some((v) => lower(v).includes(lower(filter.value ?? "")));
|
|
100
|
+
if (filter.op === "eq" || filter.op === "neq") {
|
|
101
|
+
const hit = values.some((v) => lower(v) === lower(filter.value));
|
|
102
|
+
return filter.op === "eq" ? hit : !hit;
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
const same = typeof value === "string" ? lower(value) === lower(filter.value) : value === filter.value;
|
|
107
|
+
if (filter.op === "eq") return same;
|
|
108
|
+
if (filter.op === "neq") return !same;
|
|
109
|
+
if (filter.op === "contains") return !empty && lower(value).includes(lower(filter.value ?? ""));
|
|
110
|
+
if (empty || filter.value === null || filter.value === void 0) return false;
|
|
111
|
+
const [a, b] = field.type === "number" ? [Number(value), Number(filter.value)] : [String(value).slice(0, 19), String(filter.value).slice(0, 19)];
|
|
112
|
+
return { gt: a > b, gte: a >= b, lt: a < b, lte: a <= b }[filter.op];
|
|
113
|
+
}
|
|
114
|
+
function recordsOf(dataset, query) {
|
|
115
|
+
const rows = filterRows(dataset.rows, dataset.fields, query.filters);
|
|
116
|
+
const order = query.orderBy;
|
|
117
|
+
const field = order && dataset.fields.find((f) => f.id === order.field);
|
|
118
|
+
if (order && field) {
|
|
119
|
+
const dir = order.direction === "desc" ? -1 : 1;
|
|
120
|
+
const key = (v) => Array.isArray(v) ? v.join(", ") : v;
|
|
121
|
+
rows.sort((a, b) => {
|
|
122
|
+
const x = key(a[field.id]);
|
|
123
|
+
const y = key(b[field.id]);
|
|
124
|
+
if (isEmpty(x) || isEmpty(y)) return isEmpty(x) === isEmpty(y) ? 0 : isEmpty(x) ? 1 : -1;
|
|
125
|
+
if (typeof x === "number" && typeof y === "number") return dir * (x - y);
|
|
126
|
+
return dir * String(x).localeCompare(String(y));
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
fields: dataset.fields,
|
|
131
|
+
rows: query.limit ? rows.slice(0, query.limit) : rows,
|
|
132
|
+
totalRows: rows.length,
|
|
133
|
+
truncated: !!query.limit && rows.length > query.limit
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function filterRows(rows, fields, filters = []) {
|
|
137
|
+
if (!filters.length) return [...rows];
|
|
138
|
+
const byId = new Map(fields.map((f) => [f.id, f]));
|
|
139
|
+
return rows.filter(
|
|
140
|
+
(row) => filters.every((filter) => {
|
|
141
|
+
const field = byId.get(filter.field);
|
|
142
|
+
return field ? compare(row[filter.field], filter, field) : false;
|
|
143
|
+
})
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
function measure(values, op, countRows) {
|
|
147
|
+
if (op === "count") return countRows ? values.length : values.filter((v) => !isEmpty(v)).length;
|
|
148
|
+
const numbers = values.filter((v) => typeof v === "number" && Number.isFinite(v));
|
|
149
|
+
if (!numbers.length) return null;
|
|
150
|
+
if (op === "sum") return numbers.reduce((a, b) => a + b, 0);
|
|
151
|
+
if (op === "avg") return numbers.reduce((a, b) => a + b, 0) / numbers.length;
|
|
152
|
+
return op === "min" ? Math.min(...numbers) : Math.max(...numbers);
|
|
153
|
+
}
|
|
154
|
+
function measureLabel(op, field) {
|
|
155
|
+
return field ? `${op} of ${field.label}` : "count";
|
|
156
|
+
}
|
|
157
|
+
const labelOf = (key) => key === "" ? EMPTY_GROUP_LABEL : key;
|
|
158
|
+
function aggregateFields(fields, query) {
|
|
159
|
+
const byId = new Map(fields.map((f) => [f.id, f]));
|
|
160
|
+
const group = query.groupBy ? byId.get(query.groupBy) : void 0;
|
|
161
|
+
const split = query.splitBy ? byId.get(query.splitBy) : void 0;
|
|
162
|
+
const op = query.measure?.op ?? "count";
|
|
163
|
+
const value = query.measure?.field ? byId.get(query.measure.field) : void 0;
|
|
164
|
+
return [
|
|
165
|
+
{ id: AGGREGATE_FIELDS.group, label: group?.label ?? "All", type: "string" },
|
|
166
|
+
{ id: AGGREGATE_FIELDS.key, label: group?.label ?? "All", type: "string" },
|
|
167
|
+
...split ? [{ id: AGGREGATE_FIELDS.series, label: split.label, type: "string" }] : [],
|
|
168
|
+
{
|
|
169
|
+
id: AGGREGATE_FIELDS.value,
|
|
170
|
+
label: measureLabel(op, value),
|
|
171
|
+
type: "number",
|
|
172
|
+
...value?.unit && op !== "count" ? { unit: value.unit } : {}
|
|
173
|
+
}
|
|
174
|
+
];
|
|
175
|
+
}
|
|
176
|
+
function aggregateDataset(dataset, query) {
|
|
177
|
+
const byId = new Map(dataset.fields.map((f) => [f.id, f]));
|
|
178
|
+
const group = query.groupBy ? byId.get(query.groupBy) : void 0;
|
|
179
|
+
const split = query.splitBy ? byId.get(query.splitBy) : void 0;
|
|
180
|
+
const op = query.measure?.op ?? "count";
|
|
181
|
+
const valueField = query.measure?.field ? byId.get(query.measure.field) : void 0;
|
|
182
|
+
const bucket = query.bucket ?? "month";
|
|
183
|
+
const fields = aggregateFields(dataset.fields, query);
|
|
184
|
+
if (op !== "count" && valueField?.type !== "number") {
|
|
185
|
+
throw new Error(`${op} needs a number field`);
|
|
186
|
+
}
|
|
187
|
+
const rows = filterRows(dataset.rows, dataset.fields, query.filters);
|
|
188
|
+
const cells = /* @__PURE__ */ new Map();
|
|
189
|
+
for (const row of rows) {
|
|
190
|
+
const groups = group ? groupKeys(row[group.id], group, bucket) : ["All"];
|
|
191
|
+
const splits = split ? groupKeys(row[split.id], split, bucket) : [""];
|
|
192
|
+
const value = valueField ? row[valueField.id] ?? null : 1;
|
|
193
|
+
for (const g of groups) {
|
|
194
|
+
const bySplit = cells.get(g) ?? /* @__PURE__ */ new Map();
|
|
195
|
+
cells.set(g, bySplit);
|
|
196
|
+
for (const s of splits) bySplit.set(s, [...bySplit.get(s) ?? [], value]);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const countRows = !valueField;
|
|
200
|
+
const totals = new Map(
|
|
201
|
+
[...cells].map(([g, bySplit]) => [g, measure([...bySplit.values()].flat(), op, countRows)])
|
|
202
|
+
);
|
|
203
|
+
const byLabel = (a, b) => a === "" ? 1 : b === "" ? -1 : a.localeCompare(b);
|
|
204
|
+
const byValue = (dir) => (a, b) => a === "" !== (b === "") ? a === "" ? 1 : -1 : dir * ((totals.get(a) ?? 0) - (totals.get(b) ?? 0)) || byLabel(a, b);
|
|
205
|
+
const sort = query.sort ?? (group?.type === "date" ? "label" : "value-desc");
|
|
206
|
+
const keys = [...cells.keys()].sort(
|
|
207
|
+
sort === "label" ? byLabel : byValue(sort === "value-asc" ? 1 : -1)
|
|
208
|
+
);
|
|
209
|
+
const limit = query.limit ?? DEFAULT_LIMIT;
|
|
210
|
+
const kept = keys.slice(0, limit);
|
|
211
|
+
let splitKeys = [""];
|
|
212
|
+
if (split) {
|
|
213
|
+
const splitTotals = /* @__PURE__ */ new Map();
|
|
214
|
+
for (const g of kept) {
|
|
215
|
+
for (const [s, values] of cells.get(g) ?? []) {
|
|
216
|
+
splitTotals.set(s, (splitTotals.get(s) ?? 0) + (measure(values, op, countRows) ?? 0));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
splitKeys = [...splitTotals.keys()].sort(
|
|
220
|
+
(a, b) => a === "" !== (b === "") ? a === "" ? 1 : -1 : (splitTotals.get(b) ?? 0) - (splitTotals.get(a) ?? 0) || byLabel(a, b)
|
|
221
|
+
).slice(0, MAX_SERIES);
|
|
222
|
+
}
|
|
223
|
+
const out = [];
|
|
224
|
+
for (const g of kept) {
|
|
225
|
+
for (const s of splitKeys) {
|
|
226
|
+
const values = cells.get(g)?.get(s);
|
|
227
|
+
out.push({
|
|
228
|
+
[AGGREGATE_FIELDS.group]: labelOf(g),
|
|
229
|
+
[AGGREGATE_FIELDS.key]: g,
|
|
230
|
+
...split ? { [AGGREGATE_FIELDS.series]: labelOf(s) } : {},
|
|
231
|
+
[AGGREGATE_FIELDS.value]: values ? measure(values, op, countRows) : null
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return { fields, rows: out, totalRows: rows.length, truncated: keys.length > limit };
|
|
236
|
+
}
|
|
237
|
+
function fillTimeGaps(dataset, bucket) {
|
|
238
|
+
const keyId = AGGREGATE_FIELDS.key;
|
|
239
|
+
const keys = [...new Set(dataset.rows.map((r) => String(r[keyId] ?? "")))].filter(Boolean);
|
|
240
|
+
if (keys.length < 2) return dataset;
|
|
241
|
+
const sorted = [...keys].sort();
|
|
242
|
+
const range = bucketRange(sorted[0], sorted[sorted.length - 1], bucket);
|
|
243
|
+
if (!range || range.length === keys.length) return dataset;
|
|
244
|
+
const hasSeries = dataset.fields.some((f) => f.id === AGGREGATE_FIELDS.series);
|
|
245
|
+
const seriesLabels = hasSeries ? [...new Set(dataset.rows.map((r) => String(r[AGGREGATE_FIELDS.series])))] : [null];
|
|
246
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
247
|
+
for (const row of dataset.rows) {
|
|
248
|
+
const k = String(row[keyId] ?? "");
|
|
249
|
+
byKey.set(k, [...byKey.get(k) ?? [], row]);
|
|
250
|
+
}
|
|
251
|
+
const rows = [];
|
|
252
|
+
for (const k of range) {
|
|
253
|
+
const existing = byKey.get(k);
|
|
254
|
+
if (existing) rows.push(...existing);
|
|
255
|
+
else {
|
|
256
|
+
for (const s of seriesLabels) {
|
|
257
|
+
rows.push({
|
|
258
|
+
[AGGREGATE_FIELDS.group]: k,
|
|
259
|
+
[keyId]: k,
|
|
260
|
+
...hasSeries ? { [AGGREGATE_FIELDS.series]: s } : {},
|
|
261
|
+
[AGGREGATE_FIELDS.value]: null
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
rows.push(...byKey.get("") ?? []);
|
|
267
|
+
return { ...dataset, rows };
|
|
268
|
+
}
|
|
269
|
+
export {
|
|
270
|
+
EMPTY_GROUP_LABEL,
|
|
271
|
+
MAX_SERIES,
|
|
272
|
+
aggregateDataset,
|
|
273
|
+
aggregateFields,
|
|
274
|
+
bucketOf,
|
|
275
|
+
bucketRange,
|
|
276
|
+
fillTimeGaps,
|
|
277
|
+
filterRows,
|
|
278
|
+
measureLabel,
|
|
279
|
+
recordsOf
|
|
280
|
+
};
|
|
281
|
+
//# sourceMappingURL=aggregate.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/datasets/aggregate.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Grouping and measuring a dataset in the browser, for sources whose rows are already loaded\n * (documents, threads, projects, AI usage). The rules are the server's database aggregation\n * (`POST /v1/databases/{id}/aggregate`), so a panel reads the same whichever side measured it:\n * empty cells group as \"(empty)\", a multi-valued cell counts in each of its values' groups, date\n * groups run chronologically and others by value, at most {@link MAX_SERIES} series.\n */\nimport {\n AGGREGATE_FIELDS,\n type AggregateOp,\n type Dataset,\n type DatasetField,\n type DatasetFilter,\n type DatasetQuery,\n type DatasetRow,\n type DatasetValue,\n type TimeBucket,\n} from './types'\n\n/** The label of the group of empty cells. */\nexport const EMPTY_GROUP_LABEL = '(empty)'\n\n/** The most series a split keeps (the largest). */\nexport const MAX_SERIES = 12\n\nconst DEFAULT_LIMIT = 50\n\nconst pad = (n: number) => String(n).padStart(2, '0')\n\n/** A date value as a UTC day, or null. */\nfunction asDay(value: DatasetValue | undefined): Date | null {\n if (typeof value !== 'string' || value.length < 10) return null\n const day = new Date(`${value.slice(0, 10)}T00:00:00Z`)\n return Number.isNaN(day.getTime()) ? null : day\n}\n\n/** ISO 8601 week-numbering year and week of a UTC day. */\nfunction isoWeek(day: Date): [number, number] {\n const d = new Date(day)\n const weekday = d.getUTCDay() || 7\n d.setUTCDate(d.getUTCDate() + 4 - weekday)\n const yearStart = Date.UTC(d.getUTCFullYear(), 0, 1)\n return [d.getUTCFullYear(), Math.ceil(((d.getTime() - yearStart) / 86_400_000 + 1) / 7)]\n}\n\n/** The bucket key of a date (`2026-06-12`, `2026-W24`, `2026-06`, `2026-Q2`, `2026`), or null. */\nexport function bucketOf(value: DatasetValue | undefined, bucket: TimeBucket): string | null {\n const day = asDay(value)\n if (!day) return null\n const y = day.getUTCFullYear()\n const m = day.getUTCMonth() + 1\n switch (bucket) {\n case 'day':\n return `${y}-${pad(m)}-${pad(day.getUTCDate())}`\n case 'week': {\n const [wy, w] = isoWeek(day)\n return `${wy}-W${pad(w)}`\n }\n case 'quarter':\n return `${y}-Q${Math.floor((m - 1) / 3) + 1}`\n case 'year':\n return String(y)\n default:\n return `${y}-${pad(m)}`\n }\n}\n\n/** The first day of a bucket key, or null. */\nfunction bucketStart(key: string, bucket: TimeBucket): Date | null {\n const parts = key.match(/^(\\d{4})(?:-(W|Q)?(\\d{1,2}))?(?:-(\\d{2}))?$/)\n if (!parts) return null\n const year = Number(parts[1])\n const n = Number(parts[3] ?? 1)\n switch (bucket) {\n case 'day':\n return asDay(key)\n case 'week': {\n // Monday of ISO week 1 is the Monday on or before 4 January.\n const jan4 = new Date(Date.UTC(year, 0, 4))\n const monday = new Date(jan4)\n monday.setUTCDate(jan4.getUTCDate() - ((jan4.getUTCDay() || 7) - 1) + (n - 1) * 7)\n return monday\n }\n case 'quarter':\n return new Date(Date.UTC(year, (n - 1) * 3, 1))\n case 'year':\n return new Date(Date.UTC(year, 0, 1))\n default:\n return new Date(Date.UTC(year, n - 1, 1))\n }\n}\n\nfunction nextBucket(day: Date, bucket: TimeBucket): Date {\n const d = new Date(day)\n if (bucket === 'day') d.setUTCDate(d.getUTCDate() + 1)\n else if (bucket === 'week') d.setUTCDate(d.getUTCDate() + 7)\n else if (bucket === 'month') d.setUTCMonth(d.getUTCMonth() + 1)\n else if (bucket === 'quarter') d.setUTCMonth(d.getUTCMonth() + 3)\n else d.setUTCFullYear(d.getUTCFullYear() + 1)\n return d\n}\n\n/** Every bucket key from `first` to `last` (at most `max`; null when the keys are not buckets). */\nexport function bucketRange(\n first: string,\n last: string,\n bucket: TimeBucket,\n max = 500\n): string[] | null {\n const start = bucketStart(first, bucket)\n const end = bucketStart(last, bucket)\n if (!start || !end || start > end) return null\n const keys: string[] = []\n for (let d = start; d <= end && keys.length <= max; d = nextBucket(d, bucket)) {\n keys.push(bucketOf(d.toISOString(), bucket) as string)\n }\n return keys.length > max ? null : keys\n}\n\nconst isEmpty = (value: DatasetValue | undefined) =>\n value === null || value === undefined || value === '' || (Array.isArray(value) && !value.length)\n\n/** The groups a cell puts its row in: one, or one per value of a list; `''` when empty. */\nfunction groupKeys(\n value: DatasetValue | undefined,\n field: DatasetField,\n bucket: TimeBucket\n): string[] {\n if (isEmpty(value)) return ['']\n if (Array.isArray(value)) {\n return [...new Set(value.map((v) => groupKeys(v, field, bucket)[0]))]\n }\n if (field.type === 'date') return [bucketOf(value as DatasetValue, bucket) ?? '']\n if (typeof value === 'boolean') return [value ? 'Yes' : 'No']\n return [String(value)]\n}\n\nconst lower = (v: unknown) => String(v).toLowerCase()\n\nfunction compare(value: DatasetValue | undefined, filter: DatasetFilter, field: DatasetField) {\n const empty = isEmpty(value)\n if (filter.op === 'empty') return empty\n if (filter.op === 'not_empty') return !empty\n if (Array.isArray(value)) {\n const values = value as readonly string[]\n if (filter.op === 'contains')\n return values.some((v) => lower(v).includes(lower(filter.value ?? '')))\n if (filter.op === 'eq' || filter.op === 'neq') {\n const hit = values.some((v) => lower(v) === lower(filter.value))\n return filter.op === 'eq' ? hit : !hit\n }\n return false\n }\n const same =\n typeof value === 'string' ? lower(value) === lower(filter.value) : value === filter.value\n if (filter.op === 'eq') return same\n if (filter.op === 'neq') return !same\n if (filter.op === 'contains') return !empty && lower(value).includes(lower(filter.value ?? ''))\n if (empty || filter.value === null || filter.value === undefined) return false\n const [a, b] =\n field.type === 'number'\n ? [Number(value), Number(filter.value)]\n : [String(value).slice(0, 19), String(filter.value).slice(0, 19)]\n return { gt: a > b, gte: a >= b, lt: a < b, lte: a <= b }[filter.op]\n}\n\n/** The records of a query: those that pass its filters, in its order, at most its limit. */\nexport function recordsOf(dataset: Dataset, query: DatasetQuery): Dataset {\n const rows = filterRows(dataset.rows, dataset.fields, query.filters)\n const order = query.orderBy\n const field = order && dataset.fields.find((f) => f.id === order.field)\n if (order && field) {\n const dir = order.direction === 'desc' ? -1 : 1\n const key = (v: DatasetValue | undefined) => (Array.isArray(v) ? v.join(', ') : v)\n rows.sort((a, b) => {\n const x = key(a[field.id])\n const y = key(b[field.id])\n if (isEmpty(x) || isEmpty(y)) return isEmpty(x) === isEmpty(y) ? 0 : isEmpty(x) ? 1 : -1\n if (typeof x === 'number' && typeof y === 'number') return dir * (x - y)\n return dir * String(x).localeCompare(String(y))\n })\n }\n return {\n fields: dataset.fields,\n rows: query.limit ? rows.slice(0, query.limit) : rows,\n totalRows: rows.length,\n truncated: !!query.limit && rows.length > query.limit,\n }\n}\n\n/** The rows that pass every filter (a filter on an unknown field passes nothing). */\nexport function filterRows(\n rows: readonly DatasetRow[],\n fields: readonly DatasetField[],\n filters: readonly DatasetFilter[] = []\n): DatasetRow[] {\n if (!filters.length) return [...rows]\n const byId = new Map(fields.map((f) => [f.id, f]))\n return rows.filter((row) =>\n filters.every((filter) => {\n const field = byId.get(filter.field)\n return field ? compare(row[filter.field], filter, field) : false\n })\n )\n}\n\nfunction measure(values: DatasetValue[], op: AggregateOp, countRows: boolean): number | null {\n if (op === 'count') return countRows ? values.length : values.filter((v) => !isEmpty(v)).length\n const numbers = values.filter((v): v is number => typeof v === 'number' && Number.isFinite(v))\n if (!numbers.length) return null\n if (op === 'sum') return numbers.reduce((a, b) => a + b, 0)\n if (op === 'avg') return numbers.reduce((a, b) => a + b, 0) / numbers.length\n return op === 'min' ? Math.min(...numbers) : Math.max(...numbers)\n}\n\n/** \"count\", \"sum of Amount\": the value field's label. */\nexport function measureLabel(op: AggregateOp, field?: DatasetField): string {\n return field ? `${op} of ${field.label}` : 'count'\n}\n\nconst labelOf = (key: string) => (key === '' ? EMPTY_GROUP_LABEL : key)\n\n/** The fields of an aggregated dataset. */\nexport function aggregateFields(\n fields: readonly DatasetField[],\n query: DatasetQuery\n): DatasetField[] {\n const byId = new Map(fields.map((f) => [f.id, f]))\n const group = query.groupBy ? byId.get(query.groupBy) : undefined\n const split = query.splitBy ? byId.get(query.splitBy) : undefined\n const op = query.measure?.op ?? 'count'\n const value = query.measure?.field ? byId.get(query.measure.field) : undefined\n return [\n { id: AGGREGATE_FIELDS.group, label: group?.label ?? 'All', type: 'string' },\n { id: AGGREGATE_FIELDS.key, label: group?.label ?? 'All', type: 'string' },\n ...(split\n ? [{ id: AGGREGATE_FIELDS.series, label: split.label, type: 'string' as const }]\n : []),\n {\n id: AGGREGATE_FIELDS.value,\n label: measureLabel(op, value),\n type: 'number',\n ...(value?.unit && op !== 'count' ? { unit: value.unit } : {}),\n },\n ]\n}\n\n/**\n * Group the rows that pass the filters and measure each group: a long-form dataset with the fields\n * `AGGREGATE_FIELDS` (one row per group, or per group and series with `splitBy`).\n */\nexport function aggregateDataset(dataset: Dataset, query: DatasetQuery): Dataset {\n const byId = new Map(dataset.fields.map((f) => [f.id, f]))\n const group = query.groupBy ? byId.get(query.groupBy) : undefined\n const split = query.splitBy ? byId.get(query.splitBy) : undefined\n const op = query.measure?.op ?? 'count'\n const valueField = query.measure?.field ? byId.get(query.measure.field) : undefined\n const bucket = query.bucket ?? 'month'\n const fields = aggregateFields(dataset.fields, query)\n if (op !== 'count' && valueField?.type !== 'number') {\n throw new Error(`${op} needs a number field`)\n }\n\n const rows = filterRows(dataset.rows, dataset.fields, query.filters)\n const cells = new Map<string, Map<string, DatasetValue[]>>()\n for (const row of rows) {\n const groups = group ? groupKeys(row[group.id], group, bucket) : ['All']\n const splits = split ? groupKeys(row[split.id], split, bucket) : ['']\n const value = valueField ? (row[valueField.id] ?? null) : 1\n for (const g of groups) {\n const bySplit = cells.get(g) ?? new Map<string, DatasetValue[]>()\n cells.set(g, bySplit)\n for (const s of splits) bySplit.set(s, [...(bySplit.get(s) ?? []), value])\n }\n }\n\n const countRows = !valueField\n const totals = new Map(\n [...cells].map(([g, bySplit]) => [g, measure([...bySplit.values()].flat(), op, countRows)])\n )\n const byLabel = (a: string, b: string) => (a === '' ? 1 : b === '' ? -1 : a.localeCompare(b))\n const byValue = (dir: 1 | -1) => (a: string, b: string) =>\n (a === '') !== (b === '')\n ? a === ''\n ? 1\n : -1\n : dir * ((totals.get(a) ?? 0) - (totals.get(b) ?? 0)) || byLabel(a, b)\n const sort = query.sort ?? (group?.type === 'date' ? 'label' : 'value-desc')\n const keys = [...cells.keys()].sort(\n sort === 'label' ? byLabel : byValue(sort === 'value-asc' ? 1 : -1)\n )\n const limit = query.limit ?? DEFAULT_LIMIT\n const kept = keys.slice(0, limit)\n\n let splitKeys = ['']\n if (split) {\n const splitTotals = new Map<string, number>()\n for (const g of kept) {\n for (const [s, values] of cells.get(g) ?? []) {\n splitTotals.set(s, (splitTotals.get(s) ?? 0) + (measure(values, op, countRows) ?? 0))\n }\n }\n splitKeys = [...splitTotals.keys()]\n .sort((a, b) =>\n (a === '') !== (b === '')\n ? a === ''\n ? 1\n : -1\n : (splitTotals.get(b) ?? 0) - (splitTotals.get(a) ?? 0) || byLabel(a, b)\n )\n .slice(0, MAX_SERIES)\n }\n\n const out: DatasetRow[] = []\n for (const g of kept) {\n for (const s of splitKeys) {\n const values = cells.get(g)?.get(s)\n out.push({\n [AGGREGATE_FIELDS.group]: labelOf(g),\n [AGGREGATE_FIELDS.key]: g,\n ...(split ? { [AGGREGATE_FIELDS.series]: labelOf(s) } : {}),\n [AGGREGATE_FIELDS.value]: values ? measure(values, op, countRows) : null,\n })\n }\n }\n return { fields, rows: out, totalRows: rows.length, truncated: keys.length > limit }\n}\n\n/**\n * Add the missing date buckets between the first and last group of an aggregated dataset (value\n * `null`), so a trend over time has no silent gaps. Datasets whose keys are not buckets, or that\n * would grow beyond a few hundred groups, come back unchanged.\n */\nexport function fillTimeGaps(dataset: Dataset, bucket: TimeBucket): Dataset {\n const keyId = AGGREGATE_FIELDS.key\n const keys = [...new Set(dataset.rows.map((r) => String(r[keyId] ?? '')))].filter(Boolean)\n if (keys.length < 2) return dataset\n const sorted = [...keys].sort()\n const range = bucketRange(sorted[0], sorted[sorted.length - 1], bucket)\n if (!range || range.length === keys.length) return dataset\n const hasSeries = dataset.fields.some((f) => f.id === AGGREGATE_FIELDS.series)\n const seriesLabels = hasSeries\n ? [...new Set(dataset.rows.map((r) => String(r[AGGREGATE_FIELDS.series])))]\n : [null]\n const byKey = new Map<string, DatasetRow[]>()\n for (const row of dataset.rows) {\n const k = String(row[keyId] ?? '')\n byKey.set(k, [...(byKey.get(k) ?? []), row])\n }\n const rows: DatasetRow[] = []\n for (const k of range) {\n const existing = byKey.get(k)\n if (existing) rows.push(...existing)\n else {\n for (const s of seriesLabels) {\n rows.push({\n [AGGREGATE_FIELDS.group]: k,\n [keyId]: k,\n ...(hasSeries ? { [AGGREGATE_FIELDS.series]: s } : {}),\n [AGGREGATE_FIELDS.value]: null,\n })\n }\n }\n }\n // Rows without a date (the \"(empty)\" group) stay last.\n rows.push(...(byKey.get('') ?? []))\n return { ...dataset, rows }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
export * from "./types.js";
|
|
2
|
+
import {
|
|
3
|
+
EMPTY_GROUP_LABEL,
|
|
4
|
+
MAX_SERIES,
|
|
5
|
+
aggregateDataset,
|
|
6
|
+
bucketOf,
|
|
7
|
+
bucketRange,
|
|
8
|
+
fillTimeGaps,
|
|
9
|
+
filterRows,
|
|
10
|
+
recordsOf
|
|
11
|
+
} from "./aggregate.js";
|
|
12
|
+
import { defineRowsSource } from "./rows-source.js";
|
|
13
|
+
import { queryOfChart, usePanelDataset } from "./panel.js";
|
|
14
|
+
import {
|
|
15
|
+
BUILTIN_DATA_SOURCES,
|
|
16
|
+
createDataSourceRegistry,
|
|
17
|
+
useDataSources
|
|
18
|
+
} from "./registry.js";
|
|
19
|
+
import {
|
|
20
|
+
ANALYTICS_CHART_VIEW,
|
|
21
|
+
MAX_DASHBOARD_SPEC_CHARS,
|
|
22
|
+
createMemoryDashboardStore,
|
|
23
|
+
parseDashboardSpec,
|
|
24
|
+
serializeDashboardSpec,
|
|
25
|
+
useDashboardStore,
|
|
26
|
+
useDatabaseDashboardStore,
|
|
27
|
+
useUserDashboardStore,
|
|
28
|
+
useDeleteDashboard,
|
|
29
|
+
useSaveDashboard,
|
|
30
|
+
useSavedDashboards
|
|
31
|
+
} from "./store.js";
|
|
32
|
+
import {
|
|
33
|
+
DEFAULT_ACTIVITY_SOURCE_LABELS,
|
|
34
|
+
createActivitySource
|
|
35
|
+
} from "./sources/activity.js";
|
|
36
|
+
import {
|
|
37
|
+
DEFAULT_CONVERSATIONS_SOURCE_LABELS,
|
|
38
|
+
createConversationsSource
|
|
39
|
+
} from "./sources/conversations.js";
|
|
40
|
+
import {
|
|
41
|
+
DEFAULT_DATABASE_SOURCE_LABELS,
|
|
42
|
+
createDatabaseSource
|
|
43
|
+
} from "./sources/database.js";
|
|
44
|
+
import {
|
|
45
|
+
DEFAULT_DOCUMENTS_SOURCE_LABELS,
|
|
46
|
+
createDocumentsSource
|
|
47
|
+
} from "./sources/documents.js";
|
|
48
|
+
import {
|
|
49
|
+
DEFAULT_FACTS_SOURCE_LABELS,
|
|
50
|
+
createFactsSource
|
|
51
|
+
} from "./sources/facts.js";
|
|
52
|
+
import {
|
|
53
|
+
DEFAULT_PROJECTS_SOURCE_LABELS,
|
|
54
|
+
createProjectsSource
|
|
55
|
+
} from "./sources/projects.js";
|
|
56
|
+
import { DEFAULT_TAGS_SOURCE_LABELS, createTagsSource } from "./sources/tags.js";
|
|
57
|
+
import {
|
|
58
|
+
DEFAULT_WORKFLOWS_SOURCE_LABELS,
|
|
59
|
+
createWorkflowsSource
|
|
60
|
+
} from "./sources/workflows.js";
|
|
61
|
+
import {
|
|
62
|
+
DEFAULT_WORKSPACES_SOURCE_LABELS,
|
|
63
|
+
createWorkspacesSource
|
|
64
|
+
} from "./sources/workspaces.js";
|
|
65
|
+
import {
|
|
66
|
+
DEFAULT_USAGE_BREAKDOWN_SOURCE_LABELS,
|
|
67
|
+
DEFAULT_USAGE_SOURCE_LABELS,
|
|
68
|
+
MODEL_GROUP_LABELS,
|
|
69
|
+
createUsageBreakdownSource,
|
|
70
|
+
createUsageSource
|
|
71
|
+
} from "./sources/usage.js";
|
|
72
|
+
export {
|
|
73
|
+
ANALYTICS_CHART_VIEW,
|
|
74
|
+
BUILTIN_DATA_SOURCES,
|
|
75
|
+
DEFAULT_ACTIVITY_SOURCE_LABELS,
|
|
76
|
+
DEFAULT_CONVERSATIONS_SOURCE_LABELS,
|
|
77
|
+
DEFAULT_DATABASE_SOURCE_LABELS,
|
|
78
|
+
DEFAULT_DOCUMENTS_SOURCE_LABELS,
|
|
79
|
+
DEFAULT_FACTS_SOURCE_LABELS,
|
|
80
|
+
DEFAULT_PROJECTS_SOURCE_LABELS,
|
|
81
|
+
DEFAULT_TAGS_SOURCE_LABELS,
|
|
82
|
+
DEFAULT_USAGE_BREAKDOWN_SOURCE_LABELS,
|
|
83
|
+
DEFAULT_USAGE_SOURCE_LABELS,
|
|
84
|
+
DEFAULT_WORKFLOWS_SOURCE_LABELS,
|
|
85
|
+
DEFAULT_WORKSPACES_SOURCE_LABELS,
|
|
86
|
+
EMPTY_GROUP_LABEL,
|
|
87
|
+
MAX_DASHBOARD_SPEC_CHARS,
|
|
88
|
+
MAX_SERIES,
|
|
89
|
+
MODEL_GROUP_LABELS,
|
|
90
|
+
aggregateDataset,
|
|
91
|
+
bucketOf,
|
|
92
|
+
bucketRange,
|
|
93
|
+
createActivitySource,
|
|
94
|
+
createConversationsSource,
|
|
95
|
+
createDataSourceRegistry,
|
|
96
|
+
createDatabaseSource,
|
|
97
|
+
createDocumentsSource,
|
|
98
|
+
createFactsSource,
|
|
99
|
+
createMemoryDashboardStore,
|
|
100
|
+
createProjectsSource,
|
|
101
|
+
createTagsSource,
|
|
102
|
+
createUsageBreakdownSource,
|
|
103
|
+
createUsageSource,
|
|
104
|
+
createWorkflowsSource,
|
|
105
|
+
createWorkspacesSource,
|
|
106
|
+
defineRowsSource,
|
|
107
|
+
fillTimeGaps,
|
|
108
|
+
filterRows,
|
|
109
|
+
parseDashboardSpec,
|
|
110
|
+
queryOfChart,
|
|
111
|
+
recordsOf,
|
|
112
|
+
serializeDashboardSpec,
|
|
113
|
+
useDashboardStore,
|
|
114
|
+
useDataSources,
|
|
115
|
+
useDatabaseDashboardStore,
|
|
116
|
+
useDeleteDashboard,
|
|
117
|
+
usePanelDataset,
|
|
118
|
+
useSaveDashboard,
|
|
119
|
+
useSavedDashboards,
|
|
120
|
+
useUserDashboardStore
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/datasets/index.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Datasets and dashboards: data source adapters returning one normalized `Dataset`, the\n * serialisable `ChartSpec` / `PanelSpec` / `DashboardSpec`, and where dashboards are saved. The\n * drawing is `@arbidocs/blocks/dashboards`'.\n */\nexport * from './types'\nexport {\n EMPTY_GROUP_LABEL,\n MAX_SERIES,\n aggregateDataset,\n bucketOf,\n bucketRange,\n fillTimeGaps,\n filterRows,\n recordsOf,\n} from './aggregate'\nexport { defineRowsSource, type RowsSourceDefinition, type RowsState } from './rows-source'\nexport { queryOfChart, usePanelDataset, type PanelDatasetState } from './panel'\nexport {\n BUILTIN_DATA_SOURCES,\n createDataSourceRegistry,\n useDataSources,\n type DashboardsHost,\n type DataSourceRegistry,\n} from './registry'\nexport {\n ANALYTICS_CHART_VIEW,\n MAX_DASHBOARD_SPEC_CHARS,\n createMemoryDashboardStore,\n parseDashboardSpec,\n serializeDashboardSpec,\n useDashboardStore,\n useDatabaseDashboardStore,\n useUserDashboardStore,\n useDeleteDashboard,\n useSaveDashboard,\n useSavedDashboards,\n type AnalyticsChartRequest,\n type DashboardStore,\n type DatabaseDashboardStoreOptions,\n type SavedDashboard,\n} from './store'\nexport {\n DEFAULT_ACTIVITY_SOURCE_LABELS,\n createActivitySource,\n type ActivitySourceLabels,\n} from './sources/activity'\nexport {\n DEFAULT_CONVERSATIONS_SOURCE_LABELS,\n createConversationsSource,\n type ConversationsSourceLabels,\n} from './sources/conversations'\nexport {\n DEFAULT_DATABASE_SOURCE_LABELS,\n createDatabaseSource,\n type DatabaseSourceLabels,\n} from './sources/database'\nexport {\n DEFAULT_DOCUMENTS_SOURCE_LABELS,\n createDocumentsSource,\n type DocumentsSourceLabels,\n} from './sources/documents'\nexport {\n DEFAULT_FACTS_SOURCE_LABELS,\n createFactsSource,\n type FactsSourceLabels,\n} from './sources/facts'\nexport {\n DEFAULT_PROJECTS_SOURCE_LABELS,\n createProjectsSource,\n type ProjectsSourceLabels,\n type ProjectsSourceOptions,\n} from './sources/projects'\nexport { DEFAULT_TAGS_SOURCE_LABELS, createTagsSource, type TagsSourceLabels } from './sources/tags'\nexport {\n DEFAULT_WORKFLOWS_SOURCE_LABELS,\n createWorkflowsSource,\n type WorkflowsSourceLabels,\n} from './sources/workflows'\nexport {\n DEFAULT_WORKSPACES_SOURCE_LABELS,\n createWorkspacesSource,\n type WorkspacesSourceLabels,\n} from './sources/workspaces'\nexport {\n DEFAULT_USAGE_BREAKDOWN_SOURCE_LABELS,\n DEFAULT_USAGE_SOURCE_LABELS,\n MODEL_GROUP_LABELS,\n createUsageBreakdownSource,\n createUsageSource,\n type UsageBreakdownBy,\n type UsageBreakdownKey,\n type UsageBreakdownSourceLabels,\n type UsageSourceLabels,\n} from './sources/usage'\n"],
|
|
5
|
+
"mappings": "AAKA,cAAc;AACd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAmE;AAC5E,SAAS,cAAc,uBAA+C;AACtE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP,SAAS,4BAA4B,wBAA+C;AACpF;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useWorkspaces } from "../hooks.js";
|
|
3
|
+
function namesOfWorkspaces(workspaces) {
|
|
4
|
+
const names = /* @__PURE__ */ new Map();
|
|
5
|
+
for (const w of workspaces ?? []) {
|
|
6
|
+
if (w.name) names.set(w.external_id, w.name);
|
|
7
|
+
for (const member of w.users ?? []) {
|
|
8
|
+
const user = member.user;
|
|
9
|
+
if (!user?.external_id || names.has(user.external_id)) continue;
|
|
10
|
+
const name = [user.given_name, user.family_name].filter(Boolean).join(" ").trim();
|
|
11
|
+
names.set(user.external_id, name || user.email || user.external_id);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return names;
|
|
15
|
+
}
|
|
16
|
+
function useNames(enabled = true) {
|
|
17
|
+
const { data } = useWorkspaces({ enabled });
|
|
18
|
+
return useMemo(() => {
|
|
19
|
+
const names = namesOfWorkspaces(data);
|
|
20
|
+
return (id) => id ? names.get(id) ?? id : null;
|
|
21
|
+
}, [data]);
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
namesOfWorkspaces,
|
|
25
|
+
useNames
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=members.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/datasets/members.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * People's names by account id, from the workspaces the user can see (their members), so a chart\n * groups by \"Alex Doe\" rather than `usr-\u2026`. An id nobody can name stays as it is.\n */\nimport { useMemo } from 'react'\nimport { useWorkspaces } from '../hooks'\n\ninterface WorkspaceMembers {\n external_id: string\n name?: string\n users?: Array<{\n user?: {\n external_id?: string\n given_name?: string | null\n family_name?: string | null\n email?: string | null\n } | null\n }> | null\n}\n\n/** Names of members (`usr-\u2026`) and of workspaces (`wrk-\u2026`) by id. */\nexport function namesOfWorkspaces(\n workspaces: readonly WorkspaceMembers[] | undefined\n): Map<string, string> {\n const names = new Map<string, string>()\n for (const w of workspaces ?? []) {\n if (w.name) names.set(w.external_id, w.name)\n for (const member of w.users ?? []) {\n const user = member.user\n if (!user?.external_id || names.has(user.external_id)) continue\n const name = [user.given_name, user.family_name].filter(Boolean).join(' ').trim()\n names.set(user.external_id, name || user.email || user.external_id)\n }\n }\n return names\n}\n\n/** A lookup of people's and workspaces' names (the id itself when unknown). */\nexport function useNames(enabled = true): (id: string | null | undefined) => string | null {\n const { data } = useWorkspaces({ enabled })\n return useMemo(() => {\n const names = namesOfWorkspaces(data as WorkspaceMembers[] | undefined)\n return (id) => (id ? (names.get(id) ?? id) : null)\n }, [data])\n}\n"],
|
|
5
|
+
"mappings": "AAIA,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAgBvB,SAAS,kBACd,YACqB;AACrB,QAAM,QAAQ,oBAAI,IAAoB;AACtC,aAAW,KAAK,cAAc,CAAC,GAAG;AAChC,QAAI,EAAE,KAAM,OAAM,IAAI,EAAE,aAAa,EAAE,IAAI;AAC3C,eAAW,UAAU,EAAE,SAAS,CAAC,GAAG;AAClC,YAAM,OAAO,OAAO;AACpB,UAAI,CAAC,MAAM,eAAe,MAAM,IAAI,KAAK,WAAW,EAAG;AACvD,YAAM,OAAO,CAAC,KAAK,YAAY,KAAK,WAAW,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK;AAChF,YAAM,IAAI,KAAK,aAAa,QAAQ,KAAK,SAAS,KAAK,WAAW;AAAA,IACpE;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,SAAS,UAAU,MAAwD;AACzF,QAAM,EAAE,KAAK,IAAI,cAAc,EAAE,QAAQ,CAAC;AAC1C,SAAO,QAAQ,MAAM;AACnB,UAAM,QAAQ,kBAAkB,IAAsC;AACtE,WAAO,CAAC,OAAQ,KAAM,MAAM,IAAI,EAAE,KAAK,KAAM;AAAA,EAC/C,GAAG,CAAC,IAAI,CAAC;AACX;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { fillTimeGaps } from "./aggregate.js";
|
|
3
|
+
function queryOfChart(chart) {
|
|
4
|
+
if (chart.type === "table" && !chart.x) {
|
|
5
|
+
return {
|
|
6
|
+
records: true,
|
|
7
|
+
...chart.filters?.length ? { filters: chart.filters } : {},
|
|
8
|
+
...chart.orderBy ? { orderBy: chart.orderBy } : {},
|
|
9
|
+
...chart.limit ? { limit: chart.limit } : {}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
const grouped = chart.type !== "metric";
|
|
13
|
+
const split = grouped && chart.type !== "pie" && chart.type !== "donut" && chart.series;
|
|
14
|
+
const op = chart.aggregate ?? "count";
|
|
15
|
+
return {
|
|
16
|
+
...chart.filters?.length ? { filters: chart.filters } : {},
|
|
17
|
+
...grouped && chart.x ? { groupBy: chart.x, bucket: chart.bucket ?? "month" } : {},
|
|
18
|
+
...split ? { splitBy: chart.series } : {},
|
|
19
|
+
measure: { op, ...chart.y ? { field: chart.y } : {} },
|
|
20
|
+
...chart.sort ? { sort: chart.sort } : {},
|
|
21
|
+
...chart.limit ? { limit: chart.limit } : {}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const TRENDS = /* @__PURE__ */ new Set(["bar", "line", "area"]);
|
|
25
|
+
function usePanelDataset(source, params, chart, options) {
|
|
26
|
+
const paramsKey = JSON.stringify(params ?? {});
|
|
27
|
+
const chartKey = JSON.stringify(chart);
|
|
28
|
+
const stableParams = useMemo(() => JSON.parse(paramsKey), [paramsKey]);
|
|
29
|
+
const query = useMemo(() => queryOfChart(JSON.parse(chartKey)), [chartKey]);
|
|
30
|
+
const fields = source.useFields(stableParams);
|
|
31
|
+
const state = source.useDataset(stableParams, query, options);
|
|
32
|
+
const xField = fields.fields.find((f) => f.id === chart.x);
|
|
33
|
+
const fillGaps = !!state.dataset && xField?.type === "date" && TRENDS.has(chart.type) && (chart.sort ?? "label") === "label";
|
|
34
|
+
const dataset = useMemo(
|
|
35
|
+
() => state.dataset && fillGaps ? fillTimeGaps(state.dataset, chart.bucket ?? "month") : state.dataset,
|
|
36
|
+
[state.dataset, fillGaps, chart.bucket]
|
|
37
|
+
);
|
|
38
|
+
return { ...state, dataset, fields: fields.fields };
|
|
39
|
+
}
|
|
40
|
+
export {
|
|
41
|
+
queryOfChart,
|
|
42
|
+
usePanelDataset
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=panel.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/datasets/panel.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * From a panel's spec to its dataset: the query a `ChartSpec` asks of its source, and the hook a\n * panel reads (grouped and measured by the source, date gaps filled for a trend).\n */\nimport { useMemo } from 'react'\nimport { fillTimeGaps } from './aggregate'\nimport type {\n ChartSpec,\n DataSource,\n DataSourceParams,\n DatasetField,\n DatasetQuery,\n DatasetState,\n} from './types'\n\n/**\n * The query a chart asks: its x field grouped (a metric: one group), its series split, its y\n * measured by the aggregate; a table without `x` lists the records (filtered, ordered, limited).\n */\nexport function queryOfChart(chart: ChartSpec): DatasetQuery {\n if (chart.type === 'table' && !chart.x) {\n return {\n records: true,\n ...(chart.filters?.length ? { filters: chart.filters } : {}),\n ...(chart.orderBy ? { orderBy: chart.orderBy } : {}),\n ...(chart.limit ? { limit: chart.limit } : {}),\n }\n }\n const grouped = chart.type !== 'metric'\n const split = grouped && chart.type !== 'pie' && chart.type !== 'donut' && chart.series\n const op = chart.aggregate ?? 'count'\n return {\n ...(chart.filters?.length ? { filters: chart.filters } : {}),\n ...(grouped && chart.x ? { groupBy: chart.x, bucket: chart.bucket ?? 'month' } : {}),\n ...(split ? { splitBy: chart.series } : {}),\n measure: { op, ...(chart.y ? { field: chart.y } : {}) },\n ...(chart.sort ? { sort: chart.sort } : {}),\n ...(chart.limit ? { limit: chart.limit } : {}),\n }\n}\n\n/** Charts drawn along time, whose missing buckets read as gaps. */\nconst TRENDS = new Set<ChartSpec['type']>(['bar', 'line', 'area'])\n\nexport interface PanelDatasetState extends DatasetState {\n /** The source's fields (for labels and units). */\n fields: readonly DatasetField[]\n}\n\n/**\n * The dataset a panel shows. Render it from a component keyed by `source.id`: the source's hooks\n * run here, and differ from one source to another.\n */\nexport function usePanelDataset(\n source: DataSource,\n params: DataSourceParams | undefined,\n chart: ChartSpec,\n options?: { enabled?: boolean }\n): PanelDatasetState {\n // Specs arrive as fresh objects (edited, parsed); key the memo on their content.\n const paramsKey = JSON.stringify(params ?? {})\n const chartKey = JSON.stringify(chart)\n const stableParams = useMemo(() => JSON.parse(paramsKey) as DataSourceParams, [paramsKey])\n const query = useMemo(() => queryOfChart(JSON.parse(chartKey) as ChartSpec), [chartKey])\n const fields = source.useFields(stableParams)\n const state = source.useDataset(stableParams, query, options)\n const xField = fields.fields.find((f) => f.id === chart.x)\n const fillGaps =\n !!state.dataset &&\n xField?.type === 'date' &&\n TRENDS.has(chart.type) &&\n (chart.sort ?? 'label') === 'label'\n const dataset = useMemo(\n () =>\n state.dataset && fillGaps\n ? fillTimeGaps(state.dataset, chart.bucket ?? 'month')\n : state.dataset,\n [state.dataset, fillGaps, chart.bucket]\n )\n return { ...state, dataset, fields: fields.fields }\n}\n"],
|
|
5
|
+
"mappings": "AAIA,SAAS,eAAe;AACxB,SAAS,oBAAoB;AActB,SAAS,aAAa,OAAgC;AAC3D,MAAI,MAAM,SAAS,WAAW,CAAC,MAAM,GAAG;AACtC,WAAO;AAAA,MACL,SAAS;AAAA,MACT,GAAI,MAAM,SAAS,SAAS,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;AAAA,MAC1D,GAAI,MAAM,UAAU,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;AAAA,MAClD,GAAI,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI,CAAC;AAAA,IAC9C;AAAA,EACF;AACA,QAAM,UAAU,MAAM,SAAS;AAC/B,QAAM,QAAQ,WAAW,MAAM,SAAS,SAAS,MAAM,SAAS,WAAW,MAAM;AACjF,QAAM,KAAK,MAAM,aAAa;AAC9B,SAAO;AAAA,IACL,GAAI,MAAM,SAAS,SAAS,EAAE,SAAS,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC1D,GAAI,WAAW,MAAM,IAAI,EAAE,SAAS,MAAM,GAAG,QAAQ,MAAM,UAAU,QAAQ,IAAI,CAAC;AAAA,IAClF,GAAI,QAAQ,EAAE,SAAS,MAAM,OAAO,IAAI,CAAC;AAAA,IACzC,SAAS,EAAE,IAAI,GAAI,MAAM,IAAI,EAAE,OAAO,MAAM,EAAE,IAAI,CAAC,EAAG;AAAA,IACtD,GAAI,MAAM,OAAO,EAAE,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA,IACzC,GAAI,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI,CAAC;AAAA,EAC9C;AACF;AAGA,MAAM,SAAS,oBAAI,IAAuB,CAAC,OAAO,QAAQ,MAAM,CAAC;AAW1D,SAAS,gBACd,QACA,QACA,OACA,SACmB;AAEnB,QAAM,YAAY,KAAK,UAAU,UAAU,CAAC,CAAC;AAC7C,QAAM,WAAW,KAAK,UAAU,KAAK;AACrC,QAAM,eAAe,QAAQ,MAAM,KAAK,MAAM,SAAS,GAAuB,CAAC,SAAS,CAAC;AACzF,QAAM,QAAQ,QAAQ,MAAM,aAAa,KAAK,MAAM,QAAQ,CAAc,GAAG,CAAC,QAAQ,CAAC;AACvF,QAAM,SAAS,OAAO,UAAU,YAAY;AAC5C,QAAM,QAAQ,OAAO,WAAW,cAAc,OAAO,OAAO;AAC5D,QAAM,SAAS,OAAO,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC;AACzD,QAAM,WACJ,CAAC,CAAC,MAAM,WACR,QAAQ,SAAS,UACjB,OAAO,IAAI,MAAM,IAAI,MACpB,MAAM,QAAQ,aAAa;AAC9B,QAAM,UAAU;AAAA,IACd,MACE,MAAM,WAAW,WACb,aAAa,MAAM,SAAS,MAAM,UAAU,OAAO,IACnD,MAAM;AAAA,IACZ,CAAC,MAAM,SAAS,UAAU,MAAM,MAAM;AAAA,EACxC;AACA,SAAO,EAAE,GAAG,OAAO,SAAS,QAAQ,OAAO,OAAO;AACpD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useArbiHost } from "../host/config.js";
|
|
3
|
+
import { createActivitySource } from "./sources/activity.js";
|
|
4
|
+
import { createConversationsSource } from "./sources/conversations.js";
|
|
5
|
+
import { createDatabaseSource } from "./sources/database.js";
|
|
6
|
+
import { createDocumentsSource } from "./sources/documents.js";
|
|
7
|
+
import { createFactsSource } from "./sources/facts.js";
|
|
8
|
+
import { createProjectsSource } from "./sources/projects.js";
|
|
9
|
+
import { createTagsSource } from "./sources/tags.js";
|
|
10
|
+
import { createUsageBreakdownSource, createUsageSource } from "./sources/usage.js";
|
|
11
|
+
import { createWorkflowsSource } from "./sources/workflows.js";
|
|
12
|
+
import { createWorkspacesSource } from "./sources/workspaces.js";
|
|
13
|
+
const BUILTIN_DATA_SOURCES = [
|
|
14
|
+
createUsageSource(),
|
|
15
|
+
createUsageBreakdownSource(),
|
|
16
|
+
createDocumentsSource(),
|
|
17
|
+
createConversationsSource(),
|
|
18
|
+
createProjectsSource(),
|
|
19
|
+
createWorkspacesSource(),
|
|
20
|
+
createTagsSource(),
|
|
21
|
+
createFactsSource(),
|
|
22
|
+
createWorkflowsSource(),
|
|
23
|
+
createActivitySource(),
|
|
24
|
+
createDatabaseSource()
|
|
25
|
+
];
|
|
26
|
+
function createDataSourceRegistry(sources) {
|
|
27
|
+
const byId = /* @__PURE__ */ new Map();
|
|
28
|
+
for (const source of sources) byId.set(source.id, source);
|
|
29
|
+
const list = [...byId.values()];
|
|
30
|
+
return { list, get: (id) => byId.get(id) };
|
|
31
|
+
}
|
|
32
|
+
function useDataSources() {
|
|
33
|
+
const { dashboards } = useArbiHost();
|
|
34
|
+
return useMemo(
|
|
35
|
+
() => createDataSourceRegistry([
|
|
36
|
+
...dashboards?.builtins === false ? [] : BUILTIN_DATA_SOURCES,
|
|
37
|
+
...dashboards?.sources ?? []
|
|
38
|
+
]),
|
|
39
|
+
[dashboards]
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
BUILTIN_DATA_SOURCES,
|
|
44
|
+
createDataSourceRegistry,
|
|
45
|
+
useDataSources
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/datasets/registry.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * The data sources a host offers, by id: the built-in adapters (AI usage and its breakdown, documents, threads,\n * projects, workspaces, tags, facts, workflows, recent activity, databases) plus the host's own from `<ArbiHost config={{ dashboards: { sources } }}>`\n * (a source with a built-in id replaces it, which is how a site relabels one in its own words).\n */\nimport { useMemo } from 'react'\nimport { useArbiHost } from '../host/config'\nimport { createActivitySource } from './sources/activity'\nimport { createConversationsSource } from './sources/conversations'\nimport { createDatabaseSource } from './sources/database'\nimport { createDocumentsSource } from './sources/documents'\nimport { createFactsSource } from './sources/facts'\nimport { createProjectsSource } from './sources/projects'\nimport { createTagsSource } from './sources/tags'\nimport { createUsageBreakdownSource, createUsageSource } from './sources/usage'\nimport { createWorkflowsSource } from './sources/workflows'\nimport { createWorkspacesSource } from './sources/workspaces'\nimport type { DataSource } from './types'\nimport type { DashboardStore } from './store'\n\n/** What a host configures for charts and dashboards. */\nexport interface DashboardsHost {\n /** More sources, or replacements for built-ins (same `id`). */\n sources?: readonly DataSource[]\n /** Leave the built-in sources out (only `sources` are offered). */\n builtins?: false\n /**\n * Where saved dashboards are kept, as a hook. Absent: the person's own, sealed to their key\n * (`useUserDashboardStore`); `useDatabaseDashboardStore` keeps them in the open workspace.\n */\n useStore?: () => DashboardStore\n}\n\n/** A lookup of sources by id, in the order offered. */\nexport interface DataSourceRegistry {\n list: readonly DataSource[]\n get: (id: string) => DataSource | undefined\n}\n\n/** Built-in sources with their default (neutral) labels. */\nexport const BUILTIN_DATA_SOURCES: readonly DataSource[] = [\n createUsageSource(),\n createUsageBreakdownSource(),\n createDocumentsSource(),\n createConversationsSource(),\n createProjectsSource(),\n createWorkspacesSource(),\n createTagsSource(),\n createFactsSource(),\n createWorkflowsSource(),\n createActivitySource(),\n createDatabaseSource(),\n]\n\n/** A registry over `sources`; a later source replaces an earlier one with the same id. */\nexport function createDataSourceRegistry(sources: readonly DataSource[]): DataSourceRegistry {\n const byId = new Map<string, DataSource>()\n for (const source of sources) byId.set(source.id, source)\n const list = [...byId.values()]\n return { list, get: (id) => byId.get(id) }\n}\n\n/** The sources offered here: the built-ins and the host's (`dashboards.sources`). */\nexport function useDataSources(): DataSourceRegistry {\n const { dashboards } = useArbiHost()\n return useMemo(\n () =>\n createDataSourceRegistry([\n ...(dashboards?.builtins === false ? [] : BUILTIN_DATA_SOURCES),\n ...(dashboards?.sources ?? []),\n ]),\n [dashboards]\n )\n}\n"],
|
|
5
|
+
"mappings": "AAKA,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,SAAS,4BAA4B;AACrC,SAAS,iCAAiC;AAC1C,SAAS,4BAA4B;AACrC,SAAS,6BAA6B;AACtC,SAAS,yBAAyB;AAClC,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AACjC,SAAS,4BAA4B,yBAAyB;AAC9D,SAAS,6BAA6B;AACtC,SAAS,8BAA8B;AAwBhC,MAAM,uBAA8C;AAAA,EACzD,kBAAkB;AAAA,EAClB,2BAA2B;AAAA,EAC3B,sBAAsB;AAAA,EACtB,0BAA0B;AAAA,EAC1B,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,qBAAqB;AACvB;AAGO,SAAS,yBAAyB,SAAoD;AAC3F,QAAM,OAAO,oBAAI,IAAwB;AACzC,aAAW,UAAU,QAAS,MAAK,IAAI,OAAO,IAAI,MAAM;AACxD,QAAM,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC;AAC9B,SAAO,EAAE,MAAM,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,EAAE;AAC3C;AAGO,SAAS,iBAAqC;AACnD,QAAM,EAAE,WAAW,IAAI,YAAY;AACnC,SAAO;AAAA,IACL,MACE,yBAAyB;AAAA,MACvB,GAAI,YAAY,aAAa,QAAQ,CAAC,IAAI;AAAA,MAC1C,GAAI,YAAY,WAAW,CAAC;AAAA,IAC9B,CAAC;AAAA,IACH,CAAC,UAAU;AAAA,EACb;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|