@arbidocs/blocks 0.4.155 → 0.4.157

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/{ConnectedNativeDocxComparison-OLWRQSRS.js → ConnectedNativeDocxComparison-2PLOOXSH.js} +6 -6
  2. package/dist/{ConnectedNativeDocxComparison-OLWRQSRS.js.map → ConnectedNativeDocxComparison-2PLOOXSH.js.map} +1 -1
  3. package/dist/{ConnectedNativeDocxComparison-YORMOPPN.cjs → ConnectedNativeDocxComparison-S25BPUH5.cjs} +7 -7
  4. package/dist/{ConnectedNativeDocxComparison-YORMOPPN.cjs.map → ConnectedNativeDocxComparison-S25BPUH5.cjs.map} +1 -1
  5. package/dist/{ConnectedNativeDocxEditor-34EBIIFS.js → ConnectedNativeDocxEditor-JJAGMHZC.js} +4 -4
  6. package/dist/{ConnectedNativeDocxEditor-34EBIIFS.js.map → ConnectedNativeDocxEditor-JJAGMHZC.js.map} +1 -1
  7. package/dist/{ConnectedNativeDocxEditor-EHTWGGX3.cjs → ConnectedNativeDocxEditor-YA4HWLY4.cjs} +6 -6
  8. package/dist/{ConnectedNativeDocxEditor-EHTWGGX3.cjs.map → ConnectedNativeDocxEditor-YA4HWLY4.cjs.map} +1 -1
  9. package/dist/{ConnectedStreamedWordArtifact-5DK6QGYN.cjs → ConnectedStreamedWordArtifact-EXYZAU4Y.cjs} +7 -7
  10. package/dist/ConnectedStreamedWordArtifact-EXYZAU4Y.cjs.map +1 -0
  11. package/dist/{ConnectedStreamedWordArtifact-GLIDLSAS.js → ConnectedStreamedWordArtifact-YAAXY5KY.js} +6 -6
  12. package/dist/{ConnectedStreamedWordArtifact-GLIDLSAS.js.map → ConnectedStreamedWordArtifact-YAAXY5KY.js.map} +1 -1
  13. package/dist/{NativeDocxEditor-XT5ZLFGU.js → NativeDocxEditor-JBQMH3MP.js} +3 -3
  14. package/dist/{NativeDocxEditor-XT5ZLFGU.js.map → NativeDocxEditor-JBQMH3MP.js.map} +1 -1
  15. package/dist/{NativeDocxEditor-5VBNM5I7.cjs → NativeDocxEditor-M3I776GD.cjs} +7 -7
  16. package/dist/{NativeDocxEditor-5VBNM5I7.cjs.map → NativeDocxEditor-M3I776GD.cjs.map} +1 -1
  17. package/dist/{chunk-MF5KQ4PS.js → chunk-2CWM2CFZ.js} +4 -4
  18. package/dist/{chunk-MF5KQ4PS.js.map → chunk-2CWM2CFZ.js.map} +1 -1
  19. package/dist/{chunk-6HMCF4AJ.js → chunk-5ZIYPZYE.js} +1033 -5
  20. package/dist/chunk-5ZIYPZYE.js.map +1 -0
  21. package/dist/{chunk-KHXEIEXN.js → chunk-7IRSCMNK.js} +3 -3
  22. package/dist/{chunk-KHXEIEXN.js.map → chunk-7IRSCMNK.js.map} +1 -1
  23. package/dist/{chunk-TZOQKV64.js → chunk-EWCJXUBP.js} +3 -3
  24. package/dist/{chunk-TZOQKV64.js.map → chunk-EWCJXUBP.js.map} +1 -1
  25. package/dist/{chunk-CU6LDQ57.js → chunk-F3EZDBDJ.js} +4 -4
  26. package/dist/{chunk-CU6LDQ57.js.map → chunk-F3EZDBDJ.js.map} +1 -1
  27. package/dist/{chunk-W7CWGURO.js → chunk-FTZ45WHY.js} +6 -685
  28. package/dist/chunk-FTZ45WHY.js.map +1 -0
  29. package/dist/{chunk-CQCNU5KT.cjs → chunk-IJEISII2.cjs} +6 -6
  30. package/dist/{chunk-CQCNU5KT.cjs.map → chunk-IJEISII2.cjs.map} +1 -1
  31. package/dist/{chunk-NPR5BGFF.cjs → chunk-JSQEAPTC.cjs} +26 -14
  32. package/dist/chunk-JSQEAPTC.cjs.map +1 -0
  33. package/dist/{chunk-MUDEL7UL.cjs → chunk-NPLGB4LI.cjs} +4 -703
  34. package/dist/chunk-NPLGB4LI.cjs.map +1 -0
  35. package/dist/{chunk-265GOG4W.js → chunk-ONTUMV74.js} +26 -14
  36. package/dist/chunk-ONTUMV74.js.map +1 -0
  37. package/dist/chunk-OTU5KGQ6.cjs +18 -0
  38. package/dist/{chunk-HUATKA3M.cjs.map → chunk-OTU5KGQ6.cjs.map} +1 -1
  39. package/dist/{chunk-GO3BN76C.js → chunk-PGOSIJ2I.js} +3 -3
  40. package/dist/{chunk-GO3BN76C.js.map → chunk-PGOSIJ2I.js.map} +1 -1
  41. package/dist/{chunk-WV4TD2HZ.cjs → chunk-QJFJ5JBF.cjs} +1055 -2
  42. package/dist/chunk-QJFJ5JBF.cjs.map +1 -0
  43. package/dist/chunk-S74QMZVZ.cjs +18 -0
  44. package/dist/{chunk-C3SMTA3C.cjs.map → chunk-S74QMZVZ.cjs.map} +1 -1
  45. package/dist/{chunk-KUT2Y7JF.cjs → chunk-TQIY2SVY.cjs} +5 -5
  46. package/dist/{chunk-KUT2Y7JF.cjs.map → chunk-TQIY2SVY.cjs.map} +1 -1
  47. package/dist/{chunk-757OYF6G.cjs → chunk-VY4UFXTM.cjs} +4 -4
  48. package/dist/{chunk-757OYF6G.cjs.map → chunk-VY4UFXTM.cjs.map} +1 -1
  49. package/dist/connect/docx.cjs +10 -10
  50. package/dist/connect/docx.js +6 -6
  51. package/dist/connect/index.cjs +626 -66
  52. package/dist/connect/index.cjs.map +1 -1
  53. package/dist/connect/index.js +564 -9
  54. package/dist/connect/index.js.map +1 -1
  55. package/dist/connect/viewer.cjs +43 -43
  56. package/dist/connect/viewer.js +5 -5
  57. package/dist/connection/files/index.d.ts +5 -0
  58. package/dist/connection/files/support.d.ts +2 -0
  59. package/dist/connection/files/upload/AddFromAccountsButton.d.ts +16 -0
  60. package/dist/connection/files/upload/ConnectedUpload.d.ts +36 -0
  61. package/dist/connection/files/upload/ConnectedUploadDropzone.d.ts +36 -0
  62. package/dist/connection/files/upload/EmptyWorkspaceUpload.d.ts +13 -0
  63. package/dist/connection/files/upload/useAddFromUrls.d.ts +13 -0
  64. package/dist/docx/index.cjs +47 -47
  65. package/dist/docx/index.js +3 -3
  66. package/dist/files/PrivacyExplainerModal.d.ts +8 -0
  67. package/dist/files/ShareToggle.d.ts +8 -0
  68. package/dist/files/UrlInputDialog.d.ts +24 -0
  69. package/dist/files/index.cjs +298 -278
  70. package/dist/files/index.d.ts +4 -0
  71. package/dist/files/index.js +2 -2
  72. package/dist/files/media-preview.d.ts +24 -0
  73. package/node_modules/@arbidocs/coedit/dist/hocuspocus.cjs +96 -29
  74. package/node_modules/@arbidocs/coedit/dist/hocuspocus.cjs.map +1 -1
  75. package/node_modules/@arbidocs/coedit/dist/hocuspocus.d.cts +1 -1
  76. package/node_modules/@arbidocs/coedit/dist/hocuspocus.d.ts +1 -1
  77. package/node_modules/@arbidocs/coedit/dist/hocuspocus.js +98 -31
  78. package/node_modules/@arbidocs/coedit/dist/hocuspocus.js.map +1 -1
  79. package/node_modules/@arbidocs/coedit/dist/index.cjs +96 -29
  80. package/node_modules/@arbidocs/coedit/dist/index.cjs.map +1 -1
  81. package/node_modules/@arbidocs/coedit/dist/index.d.cts +1 -1
  82. package/node_modules/@arbidocs/coedit/dist/index.d.ts +1 -1
  83. package/node_modules/@arbidocs/coedit/dist/index.js +98 -31
  84. package/node_modules/@arbidocs/coedit/dist/index.js.map +1 -1
  85. package/node_modules/@arbidocs/coedit/dist/server.cjs +98 -33
  86. package/node_modules/@arbidocs/coedit/dist/server.cjs.map +1 -1
  87. package/node_modules/@arbidocs/coedit/dist/server.d.cts +1 -1
  88. package/node_modules/@arbidocs/coedit/dist/server.d.ts +1 -1
  89. package/node_modules/@arbidocs/coedit/dist/server.js +99 -34
  90. package/node_modules/@arbidocs/coedit/dist/server.js.map +1 -1
  91. package/node_modules/@arbidocs/coedit/dist/{session-Cf9iu1Vt.d.cts → session-WGvWs6yO.d.cts} +22 -4
  92. package/node_modules/@arbidocs/coedit/dist/{session-Cf9iu1Vt.d.ts → session-WGvWs6yO.d.ts} +22 -4
  93. package/node_modules/@arbidocs/coedit/package.json +1 -1
  94. package/package.json +5 -5
  95. package/dist/ConnectedStreamedWordArtifact-5DK6QGYN.cjs.map +0 -1
  96. package/dist/chunk-265GOG4W.js.map +0 -1
  97. package/dist/chunk-6HMCF4AJ.js.map +0 -1
  98. package/dist/chunk-C3SMTA3C.cjs +0 -18
  99. package/dist/chunk-HUATKA3M.cjs +0 -18
  100. package/dist/chunk-MUDEL7UL.cjs.map +0 -1
  101. package/dist/chunk-NPR5BGFF.cjs.map +0 -1
  102. package/dist/chunk-W7CWGURO.js.map +0 -1
  103. package/dist/chunk-WV4TD2HZ.cjs.map +0 -1
@@ -8,10 +8,10 @@ import { ProjectBandTitle, PlainBandTitle } from '../chunk-RQKWYKZY.js';
8
8
  import '../chunk-5TDGVOR5.js';
9
9
  import { DraggableHeader, SettingsSection, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, SettingsCard, SettingsActionRow, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, SettingsRow, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, SettingsDangerZone, DeleteAccountDialog, toDeleteBlockerViews, SettingsPanel, PremiumModelsFrame, ConnectionsLoading, ConnectionsError, ConnectionsEmpty, SettingsPage, SyncDialogBody, SyncField, SyncSelect, SyncSmallNote, SyncLoading, SyncReconnectNotice, SyncNote, SyncTreeFrame, SyncLinkRow, SyncLinkButton, SyncOptions, SyncOptionToggle, SyncDialogFooter, InvoicesDialog, PlanDialogFrame, ProjectList, RenameDialog, SharedProjectsSection, SharedProjectRow, MoreInfo, MoreInfoList, ProjectDetailHeader, PlanBadge, ProjectDetailSection, PlanStack, PlanNotice, PlanPickerCard, PlanPickerHeader, PricingToggle, PromoCodeInput, PlanActionButton, applyTriStateFilters, PanelFrame, PanelAddButton, PanelFrameBody, PanelScroll, PanelActionsRow, ProjectRow, QuotaMeter, FilterChip, applyInvertedIndexFilter, buildInvertedIndex, serverConnectionView, ServerConnectionButton, ModelProviderLabel, SyncFolderRow, SyncFolderStatus, PlanTierOption, PlanActionRow, SubscriptionStatusView, DailyCapField, UsagePanel, UsageSummary, UsageQuotaHint, UsageToggle, UsageSection, UsageLineChart, UsageLegend, UsageProportionBar, UsageActionButton, PlanInfoPopover, PlanCardGrid, ReferralRewardSummary, CheckoutDialogFrame, ConnectionCard, ReferralRewardNote } from '../chunk-HP2C4MD3.js';
10
10
  export { ConnectedAssistantDock, redlineStats, textToArtifact, toRedlineMarkdown, useConnectedAiTask, useConnectedChat, useSemanticSearch, useWorkspaceDocs } from '../chunk-KCSIX7CY.js';
11
- import { useConnectedWorkspaceRole, ConnectedNativeDocxEditor } from '../chunk-GO3BN76C.js';
12
- export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, NativeDocxSupportProvider, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useNativeDocxSupport } from '../chunk-GO3BN76C.js';
11
+ import { useConnectedWorkspaceRole, ConnectedNativeDocxEditor } from '../chunk-PGOSIJ2I.js';
12
+ export { ConnectedWorkflowDocumentsField, ConnectedWorkflowLauncher, ConnectedWorkflowsTable, DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS, NativeDocxSupportProvider, toWorkflowFieldDocument, useConnectedAgentOptions, useConnectedWorkflowScopeSource, useConnectedWorkspaceRole, useNativeDocxSupport } from '../chunk-PGOSIJ2I.js';
13
13
  export { DocumentViewerSupportProvider, useDocumentViewerSupport } from '../chunk-EYJMMGXF.js';
14
- import { FilterButton, ExplorerFileTile, formatFolderSegment, hasFolderProviderIcon, FolderProviderIcon, ExplorerFolderTile, searchExplorerDocuments, buildExplorerEntries, collectFolderDocs, joinFolderPath, getExplorerDisplayName, RECENTLY_DELETED_HINT, RECENTLY_DELETED_HINT_PLURAL, canDeleteDocument, ExplorerFrame, ExplorerStage, ExplorerScroller, ExplorerLoadingTiles, ExplorerEmpty, ExplorerMarquee, ExplorerDropOverlay, ExplorerDragPreview, ExplorerFileTooltip, visibilityAudience, StatusPill, FailedStageIcon, FilesViewCenter, FilesFilterBar, ROW_MIN, rowHeightForLines, linesForRowHeight, RowDensityControl, FolderFilterButton, FolderPickerRow, FieldLabelsSelect } from '../chunk-6HMCF4AJ.js';
14
+ import { FilterButton, ExplorerFileTile, formatFolderSegment, hasFolderProviderIcon, FolderProviderIcon, ExplorerFolderTile, searchExplorerDocuments, buildExplorerEntries, collectFolderDocs, joinFolderPath, getExplorerDisplayName, RECENTLY_DELETED_HINT, RECENTLY_DELETED_HINT_PLURAL, canDeleteDocument, ExplorerFrame, ExplorerStage, ExplorerScroller, ExplorerLoadingTiles, ExplorerEmpty, ExplorerMarquee, ExplorerDropOverlay, ExplorerDragPreview, ExplorerFileTooltip, visibilityAudience, StatusPill, FailedStageIcon, FilesViewCenter, FilesFilterBar, ROW_MIN, rowHeightForLines, linesForRowHeight, RowDensityControl, FolderFilterButton, FolderPickerRow, UploadFrame, UploadContainer, SelectedFilesList, RejectedFilesList, UploadErrorMessage, UploadProgress, VendorLogo, PrivacyExplainerModal, UploadSourceSection, UploadSourcePicker, UploadBrowseButtons, FieldLabelsSelect, ShareToggle, UploadDropArea, UrlInputDialog, UploadUrlButton } from '../chunk-5ZIYPZYE.js';
15
15
  import '../chunk-RC6VTY2H.js';
16
16
  import { useConnectedTags, useConnectedDocuments, useConnectedConversations } from '../chunk-KDLX5AA7.js';
17
17
  export { ConnectedWorkspaceDataProvider, useConnectedConversations, useConnectedDocuments, useConnectedTags } from '../chunk-KDLX5AA7.js';
@@ -19,7 +19,7 @@ import { useConnectedWorkspace, ConnectionProvider, useConnection } from '../chu
19
19
  export { ConnectionProvider, SESSION_EXPIRED_MESSAGE, isAuthenticated, useConnectedWorkspace, useConnection } from '../chunk-TF7HN5EU.js';
20
20
  import { SignDocumentDialog } from '../chunk-2YOVK524.js';
21
21
  import '../chunk-MTSKK3BN.js';
22
- import '../chunk-265GOG4W.js';
22
+ import '../chunk-ONTUMV74.js';
23
23
  import { docIdsOf, toFactCitations, FactsToolbar, FactsFieldsButton, FactComposer, FactDateInput, FactSourcesRow, FactsLoading, FactsLoadError, FactsEmptyState, FactsCalendar, FactsGanttPane, FactsBulkBar, FactSourceGroup, EMPTY_FACT_DATE_FIELDS, withoutChunk, factDateSpanToFields, FactFieldRow, FactLabelsCell, enableFactTableColumnResize, citedVersionRef, withChunk, factDateFieldsToSpan, createFactColumns, FactRowActions, withoutDoc, withDoc, sourceDocCount, DEFAULT_FACT_COLUMN_LABELS } from '../chunk-WU34CHU5.js';
24
24
  import { ViewToggle } from '../chunk-JJA6GQKH.js';
25
25
  import { FactSourcesPanel, FactPassageItem } from '../chunk-HFZ45FD3.js';
@@ -75,14 +75,14 @@ import { fmtDate, initials } from '../chunk-OXF2IFXG.js';
75
75
  import '../chunk-VUNV25KB.js';
76
76
  import { lazy, memo, useState, useEffect, useCallback, createContext, useMemo, forwardRef, useRef, useLayoutEffect, useImperativeHandle, useContext, Suspense, useSyncExternalStore, useId } from 'react';
77
77
  import { QueryClient, QueryClientProvider, useQueryClient, useQuery } from '@tanstack/react-query';
78
- import { HtmlIcon, useMailPolicy, useProcessingTasks, useUpdateDocuments, useDeleteDocuments, useRenameFolder, useDownloadDocuments, useTags, useDocumentThumbnails, useArbiSessionState, useProcessingTask, getDocumentSubject, useWorkspaces, ArbiProvider, useConversations, useRunConversation, useWorkspaceActivity, useWorkspaceUsers, isWorkspaceNotificationType, useArbi, useNotifications, useDeleteNotifications, useMarkNotificationsRead, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, useSkills, useSetSkillVisibility, useDeleteSkill, useSkillSource, useAgentModels, useMcpTools, useAgentConfig, useAgentWorkspaces, useCreateAgent, useSaveAgentConfig, useGrantAgentAccess, useRevokeAgentAccess, useGenerateAgentAvatar, useWorkflowRuns, useConversationActivity, useAgents, ArtifactCanvas, useArbiChat, useDocuments, useTagKindSchema, useCreateTag, useSetTagValues, useUpdateTagKindSchema, useFacts, useDeleteTag, useExtractEntities, useShellWorkspaces, ArbiBotHeadIcon, useProfile, useUpdateProfile, useRequestEmailChange, useConfirmEmailChange, useNameEditor, useAvatarCrop, useEmailChange, ImageCropModal, useIdentityVerification, usePasswordChange, usePasswordChangeForm, useNotificationPreferences, useSessions, useCurrentSessionId, useTerminateSession, useSignOut, useDeleteAccount, useDeleteAccountFlow, useMailClient, defaultMailAlias, useClaimNativeAlias, useMailOnline, useConnectMailAccount, useDisconnectMailAccount, useMailAccounts, useUserSettings, useUpdateUserSettings, useAvailableModels, useConnectorVendorVisibility, useConnectorCatalog, useMyConnectors, useDisconnectConnector, useSlackConnection, useDisconnectSlack, isMailboxSyncVendor, isSharePointVendor, useUpdateWorkspace, useAddWorkspaceMembers, useRemoveWorkspaceMembers, useSetWorkspaceMemberRoles, toShellWorkspace, useEnableMailboxSync, useMailboxFolders, useEnableDriveSync, useDriveFolderChildren, connectorErrorStatus, useProjectInvoices, useProjects, useUpdateProjectFields, useUserUsageToday, formatGbp, useChargeWatch, useAddonQuote, STILL_WORKING, useProjectBillingPortal, useIsSlow, useProducts, useCreateProject, useDeleteProject, useRefreshProject, useCanCreateProjects, useDeleteWorkspaces, PROJECT_CREATION_DENIED_REASON, MAX_RETRIEVE_DOC_IDS, useSemanticSearch, useAssignDocTags, useArbiWebSocket, useWorkNotifications, describeServerNotification, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useCalendarEvents, useCalendars, useFetchCalendarEvent, useCalendarSettings, useCalendarOverlays, useCalendarOutbox, useCalendarAccounts, useSyncAccountsOnOpen, useResumeCalendarAccountConnect, useCreateEvent, useUpdateEvent, useDeleteEvent, useMoveEvent, useRespondToEvent, useCreateCalendar, useUpdateCalendar, useDeleteCalendar, useImportCalendar, useSaveCalendarSettings, useRefreshCalendar, useCalendarEvent, useMailAttachmentText, useCalendarEventByUid, getPublicBookingPage, bookPublicSlot, PublicBookingError, useAgentSession, useStartAgentSession, useCloseAgentSession, isQueuedCalendarWrite, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, connectorReturnTo, ArbiWebSocketProvider, isDeploymentUserNotification, getWorkspaceActionText, getWorkspaceSentPhrase, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_TITLE, documentActivityPhrase, isSignatureNotificationType, inputRequestTitle, WORK_NOTIFICATION_LABELS, documentDisplayName, getWorkspaceKind, formatRelativeTime, useCreateWork, useActOnStep, useConversationThreads, useUpdateTag, usePassageQuotes, useUpdateFact, useDeleteFact, useCreateFact, ProviderIcon, formatGbpPerMillionTokens, useDriveFolderDocCount, useChangeProjectPlan, useCancelProjectSubscription, usePreviewProjectPlanChange, useAddProjectAddonBlock, useProjectUsage, usePlanQuote, useCreateProjectCheckout, useInvalidateProjects, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, useCalendarInvitations, useDecideCounter, useSearchContacts, usePublishCalendar, useCalendarShares, useShareCalendar, useUnshareCalendar, useSubscribeCalendar, useHolidayCountries, useAddHolidayCalendar, cancelPublicBooking, AiAnswer, signatureNotificationPhrase, signatureRequestMeta, getNotificationTypeMeta, useMailDraftEditor, useFreeBusy, useRooms, useFindTime, useCalendarSupport, useStartCalendarAccountOAuth, useConnectOAuthAccount, useBookingPages, useDeleteBookingPage, SHAREPOINT_VENDORS, useUpdateProjectNextPeriodAddons, useUpdateProjectAddonSettings, useSyncCalendarAccount, useUpdateCalendarAccount, useDisconnectCalendarAccount, ACCOUNT_VENDOR, useCalDavProfiles, useConnectCalDavAccount, useSaveBookingPage, useCreateRoom } from '@arbidocs/react';
78
+ import { HtmlIcon, useMailPolicy, useProcessingTasks, useUpdateDocuments, useDeleteDocuments, useRenameFolder, useDownloadDocuments, useTags, useDocumentThumbnails, useArbiSessionState, useProcessingTask, getDocumentSubject, useWorkspaces, ArbiProvider, useConversations, useRunConversation, useWorkspaceActivity, useWorkspaceUsers, isWorkspaceNotificationType, useArbi, useNotifications, useDeleteNotifications, useMarkNotificationsRead, useWorkspaceNotificationLevel, useFollowThread, useUploadSkillFiles, useSkills, useSetSkillVisibility, useDeleteSkill, useSkillSource, useAgentModels, useMcpTools, useAgentConfig, useAgentWorkspaces, useCreateAgent, useSaveAgentConfig, useGrantAgentAccess, useRevokeAgentAccess, useGenerateAgentAvatar, useWorkflowRuns, useConversationActivity, useAgents, ArtifactCanvas, useArbiChat, useDocuments, useTagKindSchema, useCreateTag, useSetTagValues, useUpdateTagKindSchema, useFacts, useDeleteTag, useExtractEntities, useShellWorkspaces, ArbiBotHeadIcon, useProfile, useUpdateProfile, useRequestEmailChange, useConfirmEmailChange, useNameEditor, useAvatarCrop, useEmailChange, ImageCropModal, useIdentityVerification, usePasswordChange, usePasswordChangeForm, useNotificationPreferences, useSessions, useCurrentSessionId, useTerminateSession, useSignOut, useDeleteAccount, useDeleteAccountFlow, useMailClient, defaultMailAlias, useClaimNativeAlias, useMailOnline, useConnectMailAccount, useDisconnectMailAccount, useMailAccounts, useUserSettings, useUpdateUserSettings, useAvailableModels, useConnectorVendorVisibility, useConnectorCatalog, useMyConnectors, useDisconnectConnector, useSlackConnection, useDisconnectSlack, isMailboxSyncVendor, isSharePointVendor, useUpdateWorkspace, useAddWorkspaceMembers, useRemoveWorkspaceMembers, useSetWorkspaceMemberRoles, toShellWorkspace, useEnableMailboxSync, useMailboxFolders, useEnableDriveSync, useDriveFolderChildren, connectorErrorStatus, useProjectInvoices, useProjects, useUpdateProjectFields, useUserUsageToday, formatGbp, useChargeWatch, useAddonQuote, STILL_WORKING, useProjectBillingPortal, useIsSlow, useProducts, useCreateProject, useDeleteProject, useRefreshProject, useCanCreateProjects, useDeleteWorkspaces, PROJECT_CREATION_DENIED_REASON, MAX_RETRIEVE_DOC_IDS, useSemanticSearch, useAssignDocTags, useArbiWebSocket, useWorkNotifications, describeServerNotification, useMailUnlock, useMailFolders, useMailMessages, useMailDraftCompose, useMailMessage, useMailCache, MailOfflineUnavailableError, accountPath, useCalendarEvents, useCalendars, useFetchCalendarEvent, useCalendarSettings, useCalendarOverlays, useCalendarOutbox, useCalendarAccounts, useSyncAccountsOnOpen, useResumeCalendarAccountConnect, useCreateEvent, useUpdateEvent, useDeleteEvent, useMoveEvent, useRespondToEvent, useCreateCalendar, useUpdateCalendar, useDeleteCalendar, useImportCalendar, useSaveCalendarSettings, useRefreshCalendar, useCalendarEvent, useMailAttachmentText, useCalendarEventByUid, getPublicBookingPage, bookPublicSlot, PublicBookingError, useDocumentsSupport, isZipFile, prepareUploadFiles, UPLOAD_MAX_FILE_SIZE, filesFromDrop, UPLOAD_ACCEPT, useUploadFromUrls, useUploadFiles, useAgentSession, useStartAgentSession, useCloseAgentSession, isQueuedCalendarWrite, isAliasTakenError, nextAliasSuggestion, aliasTakenMessage, mailJson, connectorReturnTo, ArbiWebSocketProvider, isDeploymentUserNotification, getWorkspaceActionText, getWorkspaceSentPhrase, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_TITLE, documentActivityPhrase, isSignatureNotificationType, inputRequestTitle, WORK_NOTIFICATION_LABELS, documentDisplayName, getWorkspaceKind, formatRelativeTime, useCreateWork, useActOnStep, useConversationThreads, useUpdateTag, usePassageQuotes, useUpdateFact, useDeleteFact, useCreateFact, ProviderIcon, formatGbpPerMillionTokens, useDriveFolderDocCount, useChangeProjectPlan, useCancelProjectSubscription, usePreviewProjectPlanChange, useAddProjectAddonBlock, useProjectUsage, usePlanQuote, useCreateProjectCheckout, useInvalidateProjects, fileAttachment, useMailProjects, useSaveMailDraft, useSendMail, useMailDraftReplaced, useCalendarInvitations, useDecideCounter, useSearchContacts, usePublishCalendar, useCalendarShares, useShareCalendar, useUnshareCalendar, useSubscribeCalendar, useHolidayCountries, useAddHolidayCalendar, cancelPublicBooking, AiAnswer, signatureNotificationPhrase, signatureRequestMeta, getNotificationTypeMeta, useMailDraftEditor, useFreeBusy, useRooms, useFindTime, useCalendarSupport, useStartCalendarAccountOAuth, useConnectOAuthAccount, useBookingPages, useDeleteBookingPage, SHAREPOINT_VENDORS, useUpdateProjectNextPeriodAddons, useUpdateProjectAddonSettings, useSyncCalendarAccount, useUpdateCalendarAccount, useDisconnectCalendarAccount, ACCOUNT_VENDOR, useCalDavProfiles, useConnectCalDavAccount, useSaveBookingPage, useCreateRoom } from '@arbidocs/react';
79
79
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
80
80
  import { getFileTypeIcon, DocumentEntity, cn, getDocumentTitle, Badge, VisibilityIcon, formatFriendlyDate, getEntityLabel, Avatar, AvatarImage, getUserDisplayName, AvatarFallback, getUserInitials, getUserAvatarColor, Button, Label, Input, Textarea, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, tagKindNouns, tagKindTitle, isImageDocument, getEntityColor, IconToggle, VisibilityToggle, Switch, ProjectEntity, DialogFooter, EntityIcon, getDocIcon, Tooltip, TooltipTrigger, TooltipContent, EntityPill, ShieldIcon, getTagTypeLabel, Popover, PopoverTrigger, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, UserEntity, PopoverContent, Tabs, TabsList, TabsTrigger, TabsContent, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, VerifiedToggle, Progress } from '@arbidocs/react/ui';
81
81
  import { useNotify, notify, sharedSearchSession, takePendingSearch } from '@arbidocs/react/shell';
82
- import { SquarePen, BookOpen, MessagesSquare, Pencil, Download, Mail, FolderInput, Trash2, Sparkles, Play, ArrowDownToLine, Bell, Activity, Info, UserCheck, Loader2, Upload, Link2, Search, Plus, ArrowLeft, ExternalLink, Tags, CheckCircle2, Milestone, Monitor, UserCircle, KeyRound, Radio, LogOut, Wifi, RotateCcw, User, HatGlasses, MessageSquare, PlugZap, SquareStack, Table, FileText, Tag, Settings, Video, Printer, CalendarDays, Clock, MapPin, Globe, AlertTriangle, FileX, SkipForward, CheckCircle, ArrowUpCircle, Building2, Contact, Scale, NotebookPen, Check, X, BookA, ChevronDown, Users, Paperclip, Quote, Send, Inbox, CalendarX, CalendarCheck, Minimize2, Maximize2, Minus, CalendarSearch, DoorOpen, RefreshCw } from 'lucide-react';
82
+ import { SquarePen, BookOpen, MessagesSquare, Pencil, Download, Mail, FolderInput, Trash2, Sparkles, Play, ArrowDownToLine, Bell, Activity, Info, UserCheck, Loader2, Upload, Link2, Search, Plus, ArrowLeft, ExternalLink, Tags, CheckCircle2, Milestone, Monitor, UserCircle, KeyRound, Radio, LogOut, Wifi, RotateCcw, User, HatGlasses, MessageSquare, PlugZap, SquareStack, Table, FileText, Tag, Settings, Video, Printer, CalendarDays, Clock, MapPin, Globe, AlertTriangle, FileX, SkipForward, CheckCircle, HardDrive, ArrowUpCircle, Building2, Contact, Scale, NotebookPen, Check, X, BookA, ChevronDown, Users, Paperclip, Quote, Send, Inbox, CalendarX, CalendarCheck, Minimize2, Maximize2, Minus, CalendarSearch, DoorOpen, RefreshCw } from 'lucide-react';
83
83
  import { downloadBlob, useIsOnline, useOptionalDocumentTools, fetchDocumentPdf, DocumentToolsProvider } from '@arbidocs/react/document-tools';
84
84
  import { useStreamedArtifact } from '@arbidocs/react/artifacts';
85
- import { FLAT_TAG_KINDS, TAG_KINDS, refusalReason, getChildTags, tagUseCount, flattenTagTree, isFlatKind, isEntityTag, tagsForScope, filterDocumentTags, isLabelTag, getTagDescendantIds, getEligibleParentTags, canTagHaveParent } from '@arbidocs/sdk/browser';
85
+ import { FLAT_TAG_KINDS, TAG_KINDS, filterDocumentTags, refusalReason, getChildTags, tagUseCount, flattenTagTree, isFlatKind, isEntityTag, tagsForScope, isLabelTag, getTagDescendantIds, getEligibleParentTags, canTagHaveParent } from '@arbidocs/sdk/browser';
86
86
  import { bytesToBase64 } from '@arbidocs/client';
87
87
  import { createPortal } from 'react-dom';
88
88
  import { create } from 'zustand';
@@ -11964,7 +11964,7 @@ var MailBodyEditor = lazy(
11964
11964
  }))
11965
11965
  );
11966
11966
  var NativeDocxEditor = lazy(
11967
- () => import('../NativeDocxEditor-XT5ZLFGU.js').then((m) => ({ default: m.NativeDocxEditor }))
11967
+ () => import('../NativeDocxEditor-JBQMH3MP.js').then((m) => ({ default: m.NativeDocxEditor }))
11968
11968
  );
11969
11969
  var NO_WORD = {
11970
11970
  adapter: {
@@ -17963,6 +17963,561 @@ function DragPreview({ doc, count }) {
17963
17963
  }
17964
17964
  );
17965
17965
  }
17966
+ function ConnectedUploadDropzone({
17967
+ onFilesSelected,
17968
+ onFilesRejected,
17969
+ onUrlsSubmit,
17970
+ disabled = false,
17971
+ className = "",
17972
+ maxFileSize = UPLOAD_MAX_FILE_SIZE,
17973
+ title = "Drag & Drop Files, Folders, or Zip Archives Here",
17974
+ subtitle = "or click to browse files (zip files will be extracted)",
17975
+ compact = false,
17976
+ onOpenUpload,
17977
+ workspaceName = "this workspace",
17978
+ source = null,
17979
+ onPickSource,
17980
+ accounts,
17981
+ compactLeadingAction
17982
+ }) {
17983
+ const { extractZip } = useDocumentsSupport();
17984
+ const [dragActive, setDragActive] = useState(false);
17985
+ const [processingMessage, setProcessingMessage] = useState(null);
17986
+ const fileInputRef = useRef(null);
17987
+ const folderInputRef = useRef(null);
17988
+ const take = useCallback(
17989
+ async (chosen) => {
17990
+ if (disabled || chosen.length === 0) return;
17991
+ setProcessingMessage(
17992
+ chosen.some(isZipFile) ? "Extracting zip contents..." : "Processing files..."
17993
+ );
17994
+ try {
17995
+ const { accepted, refused } = await prepareUploadFiles(chosen, { maxFileSize, extractZip });
17996
+ if (refused.length > 0) onFilesRejected?.(refused);
17997
+ if (accepted.length > 0) onFilesSelected(accepted);
17998
+ } finally {
17999
+ setProcessingMessage(null);
18000
+ }
18001
+ },
18002
+ [disabled, maxFileSize, extractZip, onFilesRejected, onFilesSelected]
18003
+ );
18004
+ const handleDrag = useCallback(
18005
+ (e) => {
18006
+ e.preventDefault();
18007
+ e.stopPropagation();
18008
+ if (disabled) return;
18009
+ if (e.type === "dragenter" || e.type === "dragover") setDragActive(true);
18010
+ else if (e.type === "dragleave") setDragActive(false);
18011
+ },
18012
+ [disabled]
18013
+ );
18014
+ const handleDrop = useCallback(
18015
+ async (e) => {
18016
+ e.preventDefault();
18017
+ e.stopPropagation();
18018
+ setDragActive(false);
18019
+ if (disabled) return;
18020
+ await take(await filesFromDrop(e.dataTransfer));
18021
+ },
18022
+ [disabled, take]
18023
+ );
18024
+ const handleFileSelect = useCallback(
18025
+ async (e) => {
18026
+ const chosen = Array.from(e.target.files ?? []);
18027
+ e.target.value = "";
18028
+ await take(chosen);
18029
+ },
18030
+ [take]
18031
+ );
18032
+ const browse = useCallback(
18033
+ (input) => (e) => {
18034
+ if (disabled) return;
18035
+ e?.stopPropagation();
18036
+ if (onOpenUpload) onOpenUpload();
18037
+ else input.current?.click();
18038
+ },
18039
+ [disabled, onOpenUpload]
18040
+ );
18041
+ const onFiles = browse(fileInputRef);
18042
+ const onFolder = browse(folderInputRef);
18043
+ const dropTarget = /* @__PURE__ */ jsx(
18044
+ UploadDropArea,
18045
+ {
18046
+ isActive: dragActive,
18047
+ isDisabled: disabled,
18048
+ isProcessing: processingMessage !== null,
18049
+ processingMessage: processingMessage ?? "Processing files...",
18050
+ isCompact: compact,
18051
+ title,
18052
+ subtitle,
18053
+ onDrag: handleDrag,
18054
+ onDrop: handleDrop,
18055
+ onClick: (e) => {
18056
+ if (e.target === e.currentTarget) onFiles();
18057
+ },
18058
+ actions: compact ? /* @__PURE__ */ jsx(UploadBrowseButtons, { onFiles, onFolder, isDisabled: disabled }) : void 0
18059
+ }
18060
+ );
18061
+ const urlDialog = (trigger) => onUrlsSubmit ? /* @__PURE__ */ jsx(
18062
+ UrlInputDialog,
18063
+ {
18064
+ onUrlsSubmit,
18065
+ processing: disabled,
18066
+ titleWorkspaceName: workspaceName,
18067
+ trigger
18068
+ }
18069
+ ) : null;
18070
+ const body = (() => {
18071
+ if (compact) {
18072
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
18073
+ dropTarget,
18074
+ compactLeadingAction,
18075
+ onUrlsSubmit && /* @__PURE__ */ jsx(UploadSourceSection, { isIsolated: true, className: "flex flex-wrap justify-center gap-2", children: urlDialog(/* @__PURE__ */ jsx(UploadUrlButton, { isDisabled: disabled, isCompact: true })) })
18076
+ ] });
18077
+ }
18078
+ if (!source) {
18079
+ return /* @__PURE__ */ jsx(
18080
+ UploadSourcePicker,
18081
+ {
18082
+ isDisabled: disabled,
18083
+ options: [
18084
+ {
18085
+ key: "computer",
18086
+ label: "From your computer",
18087
+ description: "Upload files or folders",
18088
+ icon: /* @__PURE__ */ jsx(HardDrive, {}),
18089
+ onClick: () => onPickSource?.("computer")
18090
+ },
18091
+ ...accounts ? [
18092
+ {
18093
+ key: "email",
18094
+ label: "From accounts",
18095
+ description: "Sync email and files from your connected accounts",
18096
+ icon: /* @__PURE__ */ jsx(Mail, {}),
18097
+ onClick: () => onPickSource?.("email")
18098
+ }
18099
+ ] : [],
18100
+ // The internet opens its dialog directly, not a scoped view of its own.
18101
+ ...onUrlsSubmit ? [
18102
+ {
18103
+ key: "internet",
18104
+ label: "From URL",
18105
+ description: "Import from a URL or link",
18106
+ icon: /* @__PURE__ */ jsx(Globe, {}),
18107
+ wrap: (button) => urlDialog(button)
18108
+ }
18109
+ ] : []
18110
+ ]
18111
+ }
18112
+ );
18113
+ }
18114
+ if (source === "computer") {
18115
+ return /* @__PURE__ */ jsxs(
18116
+ UploadSourceSection,
18117
+ {
18118
+ testId: "upload-source-computer",
18119
+ className: "flex w-full flex-col gap-3 pointer-coarse:flex-col-reverse",
18120
+ children: [
18121
+ dropTarget,
18122
+ /* @__PURE__ */ jsx(
18123
+ UploadBrowseButtons,
18124
+ {
18125
+ layout: "grid",
18126
+ onFiles,
18127
+ onFolder,
18128
+ isDisabled: disabled
18129
+ }
18130
+ )
18131
+ ]
18132
+ }
18133
+ );
18134
+ }
18135
+ if (source === "internet" && onUrlsSubmit) {
18136
+ return /* @__PURE__ */ jsx(UploadSourceSection, { testId: "upload-source-internet", className: "flex flex-wrap gap-2", children: /* @__PURE__ */ jsx(UploadSourceSection, { isIsolated: true, children: urlDialog(/* @__PURE__ */ jsx(UploadUrlButton, { isDisabled: disabled })) }) });
18137
+ }
18138
+ if (source === "email" && accounts) {
18139
+ return /* @__PURE__ */ jsx(UploadSourceSection, { testId: "upload-source-email", isIsolated: true, children: accounts });
18140
+ }
18141
+ return null;
18142
+ })();
18143
+ return /* @__PURE__ */ jsxs(
18144
+ UploadFrame,
18145
+ {
18146
+ isCompact: compact,
18147
+ isDimmed: disabled || processingMessage !== null,
18148
+ className,
18149
+ children: [
18150
+ !onOpenUpload && /* @__PURE__ */ jsxs(Fragment, { children: [
18151
+ /* @__PURE__ */ jsx(
18152
+ "input",
18153
+ {
18154
+ ref: fileInputRef,
18155
+ type: "file",
18156
+ multiple: true,
18157
+ accept: UPLOAD_ACCEPT,
18158
+ onChange: handleFileSelect,
18159
+ className: "hidden",
18160
+ disabled
18161
+ }
18162
+ ),
18163
+ /* @__PURE__ */ jsx(
18164
+ "input",
18165
+ {
18166
+ ref: folderInputRef,
18167
+ type: "file",
18168
+ multiple: true,
18169
+ ...{ webkitdirectory: "", directory: "" },
18170
+ onChange: handleFileSelect,
18171
+ className: "hidden",
18172
+ disabled
18173
+ }
18174
+ )
18175
+ ] }),
18176
+ body
18177
+ ]
18178
+ }
18179
+ );
18180
+ }
18181
+ var plural = (count, one, many = `${one}s`) => count === 1 ? one : many;
18182
+ function useAddFromUrls({
18183
+ shared = true,
18184
+ configExtId,
18185
+ onZipFiles
18186
+ } = {}) {
18187
+ const { notify: notify14 } = useBlocksEnvironment();
18188
+ const { workspaceId } = useConnectedWorkspace();
18189
+ const uploadFromUrls = useUploadFromUrls();
18190
+ return useCallback(
18191
+ async (urls) => {
18192
+ if (urls.length === 0 || !workspaceId) return false;
18193
+ let result;
18194
+ try {
18195
+ result = await uploadFromUrls({ urls, shared, configExtId });
18196
+ } catch {
18197
+ return false;
18198
+ }
18199
+ const { docIds, skipped, zipFiles, oversizedInZips, failedZipUrls } = result;
18200
+ if (zipFiles.length > 0) {
18201
+ onZipFiles?.(zipFiles);
18202
+ notify14(
18203
+ `Extracted ${zipFiles.length} ${plural(zipFiles.length, "file")} from ZIP. Click Add files to send.`,
18204
+ "success"
18205
+ );
18206
+ }
18207
+ if (oversizedInZips.length > 0)
18208
+ notify14(
18209
+ `Skipped ${oversizedInZips.length} oversized ${plural(oversizedInZips.length, "file")} inside ZIP archives.`,
18210
+ "warning"
18211
+ );
18212
+ if (failedZipUrls.length > 0)
18213
+ notify14(
18214
+ `Failed to fetch ${failedZipUrls.length} ZIP ${plural(failedZipUrls.length, "URL")}. Browser CORS may block third-party hosts \u2014 try a CORS-enabled URL.`,
18215
+ "error"
18216
+ );
18217
+ if (skipped.length > 0)
18218
+ notify14(
18219
+ `${skipped.length} ${plural(skipped.length, "URL was", "URLs were")} skipped:
18220
+ ${skipped.map((s) => `${s.file_name}: ${s.reason}`).join("\n")}`,
18221
+ "warning"
18222
+ );
18223
+ if (docIds.length > 0)
18224
+ notify14(
18225
+ `Upload complete (${docIds.length} ${plural(docIds.length, "document")}). Indexing in the background...`,
18226
+ "success",
18227
+ { workspaceId }
18228
+ );
18229
+ return true;
18230
+ },
18231
+ [workspaceId, uploadFromUrls, shared, configExtId, onZipFiles, notify14]
18232
+ );
18233
+ }
18234
+ function formatFileSize(bytes) {
18235
+ if (bytes === 0) return "0 Bytes";
18236
+ const k = 1024;
18237
+ const sizes = ["Bytes", "KB", "MB", "GB"];
18238
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
18239
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
18240
+ }
18241
+ function renderFileIcon(fileName) {
18242
+ const Icon = getFileTypeIcon(fileName);
18243
+ return /* @__PURE__ */ jsx(Icon, { size: 20 });
18244
+ }
18245
+ function plural2(count) {
18246
+ return getEntityLabel("DOCUMENT", count === 1 ? "SINGULAR" : "PLURAL");
18247
+ }
18248
+ function DefaultFooter({ submit, shared, onSharedChange }) {
18249
+ return /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center justify-end gap-4 border-t border-border px-4 py-3 sm:px-6", children: [
18250
+ /* @__PURE__ */ jsx(
18251
+ ShareToggle,
18252
+ {
18253
+ isVisible: shared,
18254
+ onToggle: onSharedChange,
18255
+ workspaceEntityLabel: getEntityLabel("WORKSPACE"),
18256
+ compact: true
18257
+ }
18258
+ ),
18259
+ submit
18260
+ ] });
18261
+ }
18262
+ function ConnectedUpload({
18263
+ initialFiles,
18264
+ initialUrls,
18265
+ folder = null,
18266
+ source = null,
18267
+ onPickSource,
18268
+ configExtId,
18269
+ closeOnUpload = true,
18270
+ onClose,
18271
+ onUploadComplete,
18272
+ accounts,
18273
+ renderFooter = DefaultFooter
18274
+ }) {
18275
+ const { notify: notify14 } = useBlocksEnvironment();
18276
+ const { openUpgrade } = useFilesSupport();
18277
+ const { workspaceId, live } = useConnectedWorkspace();
18278
+ const { data: workspaces } = useWorkspaces({ enabled: live });
18279
+ const workspaceName = workspaces?.find((w) => w.external_id === workspaceId)?.name ?? "this workspace";
18280
+ const uploadFiles = useUploadFiles();
18281
+ const [files, setFiles] = useState(initialFiles ?? []);
18282
+ const [refused, setRefused] = useState([]);
18283
+ const [error, setError] = useState(null);
18284
+ const [shared, setShared] = useState(true);
18285
+ const [uploading, setUploading] = useState(null);
18286
+ const [progress, setProgress] = useState(null);
18287
+ const { data: tags = [] } = useTags();
18288
+ const generateTagIds = useMemo(
18289
+ () => filterDocumentTags(tags).filter((tag) => tag.instruction && tag.shared).map((tag) => tag.external_id),
18290
+ [tags]
18291
+ );
18292
+ const addFiles = useCallback(
18293
+ (chosen) => setFiles((current) => {
18294
+ if (current.length === 0) return chosen;
18295
+ const names = new Set(current.map((file) => file.name));
18296
+ const fresh = chosen.filter((file) => !names.has(file.name));
18297
+ const duplicates = chosen.length - fresh.length;
18298
+ if (duplicates > 0)
18299
+ notify14(`Skipped ${duplicates} duplicate file${duplicates > 1 ? "s" : ""}`, "info");
18300
+ return [...current, ...fresh];
18301
+ }),
18302
+ [notify14]
18303
+ );
18304
+ const fail = useCallback(
18305
+ (message, toast = true) => {
18306
+ setError(message);
18307
+ if (toast) notify14(message, "error");
18308
+ setUploading(null);
18309
+ setProgress(null);
18310
+ },
18311
+ [notify14]
18312
+ );
18313
+ const handleUpload = useCallback(async () => {
18314
+ if (files.length === 0 || !workspaceId) return;
18315
+ setUploading(files.length);
18316
+ setError(null);
18317
+ try {
18318
+ const { docIds, skipped } = await uploadFiles(
18319
+ { files, folder, shared, configExtId, generateTagIds },
18320
+ setProgress
18321
+ );
18322
+ if (skipped.length > 0) {
18323
+ const summary = skipped.map((s) => `${s.file_name}: ${s.reason}`).join("\n");
18324
+ const quota = skipped.some((s) => /quota|limit/i.test(s.reason ?? ""));
18325
+ notify14(
18326
+ `${skipped.length} ${skipped.length === 1 ? "file was" : "files were"} skipped:
18327
+ ${summary}`,
18328
+ "warning",
18329
+ quota && openUpgrade ? { action: { label: "Upgrade", onClick: openUpgrade }, duration: 8e3 } : void 0
18330
+ );
18331
+ }
18332
+ setFiles([]);
18333
+ if (docIds.length > 0) {
18334
+ const ai = generateTagIds.length > 0 ? " AI annotations queued." : "";
18335
+ notify14(
18336
+ `Uploaded ${docIds.length} ${docIds.length === 1 ? "file" : "files"}. Processing in background...${ai}`,
18337
+ "success",
18338
+ { workspaceId }
18339
+ );
18340
+ }
18341
+ setUploading(null);
18342
+ setProgress(null);
18343
+ onUploadComplete?.();
18344
+ if (closeOnUpload) onClose?.();
18345
+ } catch (err) {
18346
+ const status = err.status;
18347
+ if (status === 402) {
18348
+ fail(err.detail || "Quota exceeded", false);
18349
+ } else {
18350
+ fail("Failed to upload documents. Please try again.");
18351
+ }
18352
+ }
18353
+ }, [
18354
+ files,
18355
+ workspaceId,
18356
+ uploadFiles,
18357
+ folder,
18358
+ shared,
18359
+ configExtId,
18360
+ generateTagIds,
18361
+ notify14,
18362
+ openUpgrade,
18363
+ onUploadComplete,
18364
+ closeOnUpload,
18365
+ onClose,
18366
+ fail
18367
+ ]);
18368
+ const zipFilesAdded = useRef(false);
18369
+ const addFromUrls = useAddFromUrls({
18370
+ shared,
18371
+ configExtId,
18372
+ onZipFiles: (zipFiles) => {
18373
+ zipFilesAdded.current = true;
18374
+ addFiles(zipFiles);
18375
+ }
18376
+ });
18377
+ const handleUrls = useCallback(
18378
+ async (urls) => {
18379
+ if (urls.length === 0) return false;
18380
+ setUploading(urls.length);
18381
+ setError(null);
18382
+ zipFilesAdded.current = false;
18383
+ const ok = await addFromUrls(urls);
18384
+ setUploading(null);
18385
+ if (ok) {
18386
+ if (closeOnUpload && !zipFilesAdded.current) onClose?.();
18387
+ onUploadComplete?.();
18388
+ }
18389
+ return ok;
18390
+ },
18391
+ [addFromUrls, closeOnUpload, onClose, onUploadComplete]
18392
+ );
18393
+ const handedUrls = useRef(false);
18394
+ useEffect(() => {
18395
+ if (handedUrls.current || !initialUrls?.length) return;
18396
+ handedUrls.current = true;
18397
+ void handleUrls(initialUrls);
18398
+ }, [initialUrls, handleUrls]);
18399
+ const count = files.length || uploading || 0;
18400
+ const submit = /* @__PURE__ */ jsxs(
18401
+ Button,
18402
+ {
18403
+ onClick: handleUpload,
18404
+ disabled: files.length === 0,
18405
+ size: "default",
18406
+ "data-testid": "upload-submit-button",
18407
+ children: [
18408
+ "Add ",
18409
+ files.length,
18410
+ " ",
18411
+ plural2(files.length)
18412
+ ]
18413
+ }
18414
+ );
18415
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-h-0 flex-1 flex-col", "data-testid": "upload-documents", children: [
18416
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-2", children: uploading === null ? /* @__PURE__ */ jsxs(UploadContainer, { className: "w-full px-4 pb-4 pt-2 sm:px-6", children: [
18417
+ files.length === 0 && /* @__PURE__ */ jsx(
18418
+ ConnectedUploadDropzone,
18419
+ {
18420
+ onFilesSelected: addFiles,
18421
+ onFilesRejected: (more) => setRefused((current) => [...current, ...more]),
18422
+ onUrlsSubmit: handleUrls,
18423
+ title: "Drag & drop files or folders",
18424
+ subtitle: "",
18425
+ workspaceName,
18426
+ source,
18427
+ onPickSource,
18428
+ accounts
18429
+ }
18430
+ ),
18431
+ /* @__PURE__ */ jsx(
18432
+ SelectedFilesList,
18433
+ {
18434
+ renderFileIcon,
18435
+ files,
18436
+ onRemoveFile: (index) => setFiles((current) => current.filter((_, i) => i !== index)),
18437
+ onClearAll: () => setFiles([]),
18438
+ formatFileSize
18439
+ }
18440
+ ),
18441
+ /* @__PURE__ */ jsx(RejectedFilesList, { files: refused, onClear: () => setRefused([]) }),
18442
+ error && /* @__PURE__ */ jsx(UploadErrorMessage, { message: error })
18443
+ ] }) : /* @__PURE__ */ jsx(UploadContainer, { className: "w-full p-4 sm:p-6", children: /* @__PURE__ */ jsx(
18444
+ UploadProgress,
18445
+ {
18446
+ fileCount: count,
18447
+ entityLabel: plural2(count),
18448
+ percentage: progress?.percentage ?? 0,
18449
+ batchInfo: progress?.batches ?? null
18450
+ }
18451
+ ) }) }),
18452
+ uploading === null && files.length > 0 && renderFooter({ submit, shared, onSharedChange: setShared })
18453
+ ] });
18454
+ }
18455
+ var VENDOR_PRODUCTS = {
18456
+ microsoft: [{ key: "outlook" }, { key: "onedrive", product: "onedrive" }],
18457
+ gmail: [{ key: "gmail" }, { key: "googledrive", product: "googledrive" }],
18458
+ gdrive: [{ key: "googledrive", product: "googledrive" }]
18459
+ };
18460
+ function AddFromAccountsButton({
18461
+ onImportFromEmail,
18462
+ "data-testid": dataTestId = "empty-import-from-email"
18463
+ }) {
18464
+ const { data: catalog = [] } = useConnectorCatalog();
18465
+ const isVendorVisible = useConnectorVendorVisibility();
18466
+ const vendors = catalog.filter((c) => isVendorVisible(c.vendor_key));
18467
+ if (vendors.length === 0) return null;
18468
+ const seen = /* @__PURE__ */ new Set();
18469
+ const marks = [];
18470
+ for (const v of vendors) {
18471
+ const products = VENDOR_PRODUCTS[v.vendor_key] ?? [{ key: v.vendor_key }];
18472
+ for (const p of products) {
18473
+ if (seen.has(p.key)) continue;
18474
+ seen.add(p.key);
18475
+ marks.push({ key: p.key, vendorKey: v.vendor_key, product: p.product });
18476
+ }
18477
+ }
18478
+ return /* @__PURE__ */ jsxs(
18479
+ Button,
18480
+ {
18481
+ variant: "outline",
18482
+ onClick: onImportFromEmail,
18483
+ className: "gap-2",
18484
+ "data-testid": dataTestId,
18485
+ children: [
18486
+ /* @__PURE__ */ jsx("span", { className: "flex items-center gap-1", children: marks.map((m) => /* @__PURE__ */ jsx(VendorLogo, { vendorKey: m.vendorKey, product: m.product, className: "h-4 w-4" }, m.key)) }),
18487
+ "Add from accounts"
18488
+ ]
18489
+ }
18490
+ );
18491
+ }
18492
+ function EmptyWorkspaceUpload({
18493
+ onFilesSelected,
18494
+ onUrlsSubmit,
18495
+ onImportFromEmail,
18496
+ "data-testid": dataTestId
18497
+ }) {
18498
+ return /* @__PURE__ */ jsx(
18499
+ "div",
18500
+ {
18501
+ className: "flex h-full flex-col items-center gap-3 overflow-y-auto p-8 max-sm:p-4",
18502
+ "data-testid": dataTestId,
18503
+ children: /* @__PURE__ */ jsxs("div", { className: "my-auto flex w-full flex-col items-center gap-3", children: [
18504
+ /* @__PURE__ */ jsx(
18505
+ ConnectedUploadDropzone,
18506
+ {
18507
+ onFilesSelected,
18508
+ onUrlsSubmit,
18509
+ title: "Drag & Drop Files or Folders Here",
18510
+ subtitle: "or click to browse from your computer",
18511
+ compact: true,
18512
+ className: "w-full max-w-2xl",
18513
+ compactLeadingAction: onImportFromEmail && /* @__PURE__ */ jsx(AddFromAccountsButton, { onImportFromEmail })
18514
+ }
18515
+ ),
18516
+ /* @__PURE__ */ jsx(PrivacyExplainerModal, {})
18517
+ ] })
18518
+ }
18519
+ );
18520
+ }
17966
18521
  function ActiveChat({ agentId, workspaceId }) {
17967
18522
  const chat = useArbiChat({
17968
18523
  agentId,
@@ -18030,6 +18585,6 @@ function ConnectedAgentChatPanel({
18030
18585
  ] });
18031
18586
  }
18032
18587
 
18033
- export { AddAddonDialog, ArbiAppProvider, BACKFILL_OPTIONS, BillingProjectEntity, ChangePlanDialog, ConnectedAccountSettings, ConnectedAgentChatPanel, ConnectedAgentCreator, ConnectedAppsSettings, ConnectedCalendar, ConnectedDangerZone, ConnectedDriveSyncDialog, ConnectedFactsPage, ConnectedFilesExplorer, ConnectedIdentityVerification, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailInviteCard, ConnectedMailMessage, ConnectedMailSettings, ConnectedMailSetup, ConnectedMailbox, ConnectedMailboxSyncDialog, ConnectedNotificationCenter, ConnectedNotificationPreferences, ConnectedPasswordChangeDialog, ConnectedPremiumModels, ConnectedPrivacySettings, ConnectedProfileCard, ConnectedProjectsPanel, ConnectedPublicBooking, ConnectedRequireVerified, ConnectedSearchPage, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSettingsPage, ConnectedSkillUpload, ConnectedSkillsLibrary, ConnectedTagTable, ConnectedTagsPage, ConnectedTaskAccessRequest, ConnectedTaskActivityDialog, ConnectedThreadFollow, ConnectedUpcomingEvents, ConnectedWorkflowHistory, ConnectedWorkflowRunner, ConnectedWorkspaceActivity, ConnectedWorkspaceDashboard, ConnectedWorkspaceList, ConnectedWorkspaceMembers, ConnectedWorkspaceNotificationMenu, ConnectedWorkspaceSettings, DEFAULT_CONNECTED_SEARCH_PAGE_LABELS, DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, DEFAULT_SEARCH_ROW_LABELS, DEFAULT_SETTINGS_SECTIONS, DEFAULT_TIMELINE_LABEL_WIDTH, DEFAULT_WORKSPACE_LIST_LABELS, DocumentSyncGlyph, FACTS_GRID_ID, FileTooltipContent, FilesSupportProvider, InvoicesModal, NewProjectFlow, NotificationCenter, NotificationEvent, PROJECTS_BASE_TAB_ID, ProjectDetail, ProjectsTable, REFERRAL_OFFER, SETTINGS_SECTION_IDS, SessionStatusIcon, SharedProjects, StreamedArtifact, TILE_DEFAULT, TILE_MAX, TILE_MIN, WORKSPACES_TAB_ID, WorkflowRunThread, accountSettingsSection, bookingCancelLink, buildNotificationCenterItems, chatSettingsSection, connectedAppsSettingsSection, countNotificationTypes, defaultUnmetPasswordRequirement, filterNotificationCenterItems, formatLastSync, isActiveDocumentStatus, mailSettingsSection, openMeetingLink, privacySettingsSection, renderSessionStatusIcon, requestCalendarComposer, requestCalendarEvent, requestProjectBillingFocus, resolveMailbox, startMenuItem, toWorkspaceSummary, useAutoRefreshPendingProjects, useCalendarViewStore, useConnectedDocxNotifications, useConnectedShellWorkspaces, useConnectedWorkNotifications, useConnectedWorkspaceList, useConnectedWorkspaceSettings, useFilesStore, useFilesSupport, useOfflineDocumentIds, useOpenBillingPortal, usePendingFolders, useProjectBillingFocus, useReferralReward, useViewingDocumentId, windowLabel, workflowRunView };
18588
+ export { AddAddonDialog, AddFromAccountsButton, ArbiAppProvider, BACKFILL_OPTIONS, BillingProjectEntity, ChangePlanDialog, ConnectedAccountSettings, ConnectedAgentChatPanel, ConnectedAgentCreator, ConnectedAppsSettings, ConnectedCalendar, ConnectedDangerZone, ConnectedDriveSyncDialog, ConnectedFactsPage, ConnectedFilesExplorer, ConnectedIdentityVerification, ConnectedLogoutDialog, ConnectedMailAccounts, ConnectedMailComposer, ConnectedMailInviteCard, ConnectedMailMessage, ConnectedMailSettings, ConnectedMailSetup, ConnectedMailbox, ConnectedMailboxSyncDialog, ConnectedNotificationCenter, ConnectedNotificationPreferences, ConnectedPasswordChangeDialog, ConnectedPremiumModels, ConnectedPrivacySettings, ConnectedProfileCard, ConnectedProjectsPanel, ConnectedPublicBooking, ConnectedRequireVerified, ConnectedSearchPage, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedSettingsPage, ConnectedSkillUpload, ConnectedSkillsLibrary, ConnectedTagTable, ConnectedTagsPage, ConnectedTaskAccessRequest, ConnectedTaskActivityDialog, ConnectedThreadFollow, ConnectedUpcomingEvents, ConnectedUpload, ConnectedUploadDropzone, ConnectedWorkflowHistory, ConnectedWorkflowRunner, ConnectedWorkspaceActivity, ConnectedWorkspaceDashboard, ConnectedWorkspaceList, ConnectedWorkspaceMembers, ConnectedWorkspaceNotificationMenu, ConnectedWorkspaceSettings, DEFAULT_CONNECTED_SEARCH_PAGE_LABELS, DEFAULT_CONNECTED_SKILL_UPLOAD_LABELS, DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS, DEFAULT_SEARCH_ROW_LABELS, DEFAULT_SETTINGS_SECTIONS, DEFAULT_TIMELINE_LABEL_WIDTH, DEFAULT_WORKSPACE_LIST_LABELS, DocumentSyncGlyph, EmptyWorkspaceUpload, FACTS_GRID_ID, FileTooltipContent, FilesSupportProvider, InvoicesModal, NewProjectFlow, NotificationCenter, NotificationEvent, PROJECTS_BASE_TAB_ID, ProjectDetail, ProjectsTable, REFERRAL_OFFER, SETTINGS_SECTION_IDS, SessionStatusIcon, SharedProjects, StreamedArtifact, TILE_DEFAULT, TILE_MAX, TILE_MIN, WORKSPACES_TAB_ID, WorkflowRunThread, accountSettingsSection, bookingCancelLink, buildNotificationCenterItems, chatSettingsSection, connectedAppsSettingsSection, countNotificationTypes, defaultUnmetPasswordRequirement, filterNotificationCenterItems, formatLastSync, isActiveDocumentStatus, mailSettingsSection, openMeetingLink, privacySettingsSection, renderSessionStatusIcon, requestCalendarComposer, requestCalendarEvent, requestProjectBillingFocus, resolveMailbox, startMenuItem, toWorkspaceSummary, useAddFromUrls, useAutoRefreshPendingProjects, useCalendarViewStore, useConnectedDocxNotifications, useConnectedShellWorkspaces, useConnectedWorkNotifications, useConnectedWorkspaceList, useConnectedWorkspaceSettings, useFilesStore, useFilesSupport, useOfflineDocumentIds, useOpenBillingPortal, usePendingFolders, useProjectBillingFocus, useReferralReward, useViewingDocumentId, windowLabel, workflowRunView };
18034
18589
  //# sourceMappingURL=index.js.map
18035
18590
  //# sourceMappingURL=index.js.map