@epam/ai-dial-chat-hooks 1.2.0-dev.21 → 1.2.0-dev.213
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/api-error/api-error.js +5 -4
- package/attachment/useAttachmentValidation/useAttachmentValidation.js +26 -19
- package/attachments.d.ts +10 -4
- package/catalog/catalog-derivations.js +1 -1
- package/catalog/deployment-id.js +8 -2
- package/catalog/map-deployment-limits-to-input.js +81 -9
- package/catalog/map-deployment-to-catalog-item.js +34 -34
- package/catalog/map-entity-details-to-catalog.js +7 -0
- package/catalog/map-skill-to-catalog-item.js +30 -27
- package/catalog/publish.js +6 -5
- package/catalog/useApplicationCredentials/useApplicationCredentials.js +39 -0
- package/catalog/useSkillDetailsPanelData/useSkillDetailsPanelData.js +39 -39
- package/catalog/useSkillItemDetails.js +17 -13
- package/catalog.d.ts +116 -20
- package/catalog.js +23 -22
- package/conversation/conversation-transfer/export-conversation.js +24 -16
- package/conversation/conversation-transfer/import-conversation.js +80 -31
- package/conversation/conversation-transfer/queue.js +8 -5
- package/conversation/create-chat-stream-api.js +85 -49
- package/conversation/message-utils.js +44 -2
- package/conversation/stage.js +23 -0
- package/conversation/useConversationExport/useConversationExport.js +9 -9
- package/conversation/useConversationHandlers/useConversationHandlers.js +16 -5
- package/conversation/useConversationImport/useConversationImport.js +123 -121
- package/conversation/useConversationPanelItems/useConversationPanelItems.js +2 -3
- package/conversation/useConversationScroll/useConversationScroll.js +68 -64
- package/conversation/useConversationStream/apply-chunk.js +1 -1
- package/conversation/useConversationStream/generation-resume.js +104 -63
- package/conversation/useConversationStream/useConversationStream.js +181 -110
- package/conversation/useMessageSelectionReply/useMessageSelectionReply.js +189 -0
- package/conversation-overlay.d.ts +7 -0
- package/conversation-overlay.js +2 -0
- package/conversation-sources/useConversationSources/useConversationSources.js +31 -24
- package/conversation-sources.d.ts +1 -1
- package/conversation-transfer.d.ts +2 -1
- package/conversation.d.ts +241 -13
- package/conversation.js +32 -30
- package/file-manager-canvas.d.ts +398 -0
- package/file-manager-canvas.js +2 -0
- package/file-manager.d.ts +153 -350
- package/file-manager.js +25 -24
- package/files/attachment-canvas.js +40 -1
- package/files/attachment-types.js +14 -13
- package/files/dial-file-manager-mapping.util.js +2 -1
- package/files/dial-file-manager-path.util.js +23 -1
- package/files/dial-file-manager.model.js +23 -19
- package/files/dial-file-manager.types.js +3 -3
- package/files/useDialFileListing/useDialFileListing.js +157 -145
- package/files/useDialFileManager/useDialFileManager.js +132 -128
- package/files/useDialFileManagerSections/useDialFileManagerSections.js +155 -0
- package/files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js +20 -19
- package/files/useDialFileMutations/useDialFileMutations.js +33 -32
- package/files/useDialFileUploadBatch/useDialFileUploadBatch.js +117 -110
- package/files/useFileAttachmentPicker/useFileAttachmentPicker.js +43 -0
- package/index.d.ts +1068 -81
- package/index.js +136 -122
- package/mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js +7 -5
- package/mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js +1 -1
- package/mcp-apps/useMcpAppTools/useMcpAppTools.js +1 -1
- package/mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js +25 -23
- package/mcp-apps.d.ts +8 -6
- package/oauth/toolset-id.js +5 -3
- package/oauth/useToolsetLogin/useToolsetLogin.js +8 -8
- package/oauth.d.ts +32 -0
- package/oauth.js +9 -9
- package/package.json +36 -21
- package/scheduled-task/scheduled-task-description.js +77 -0
- package/scheduled-task/scheduled-task-preparation.js +24 -0
- package/scheduled-task/scheduled-task-trigger.js +7 -2
- package/scheduled-task/scheduled-tasks-api-client.js +19 -0
- package/scheduled-task/use-scheduled-task-runs.js +194 -0
- package/scheduled-task/use-scheduled-tasks.js +93 -0
- package/scheduled-tasks.d.ts +195 -3
- package/scheduled-tasks.js +7 -2
- package/skill/skill-archive.js +19 -0
- package/skill/skill-types.js +8 -7
- package/skill/skill.js +42 -27
- package/skill/useSkillArchiveImport/useSkillArchiveImport.js +79 -0
- package/skill/useSkillEditorLoad.js +29 -28
- package/skill/useSkillEditorSubmit.js +108 -84
- package/skill/useSkillFileActions.js +70 -58
- package/skill-editor.d.ts +133 -3
- package/skill-editor.js +9 -8
- package/usage/map-usage-data-to-dashboard.js +66 -0
- package/usage/map-user-usage-to-model-limits.js +202 -0
- package/usage.d.ts +125 -0
- package/usage.js +3 -0
- package/usePageFileDrag/usePageFileDrag.js +3 -3
- package/utils.d.ts +8 -6
package/file-manager.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Annotation } from '@epam/ai-dial-chat-shared';
|
|
2
|
-
import { AnnotationGroup } from '@epam/ai-dial-quotations';
|
|
3
2
|
import { ArchiveItemDto } from '@epam/ai-dial-chat-api-client';
|
|
4
3
|
import { Attachment } from '@epam/ai-dial-chat-shared';
|
|
5
4
|
import { AttachmentDisplayResolvers } from '@epam/ai-dial-chat-shared';
|
|
@@ -8,8 +7,6 @@ import { CopyFilesResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
|
8
7
|
import { CopyItemDto } from '@epam/ai-dial-chat-api-client';
|
|
9
8
|
import { CreateFolderDto } from '@epam/ai-dial-chat-api-client';
|
|
10
9
|
import { CreateFolderResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
11
|
-
import { CustomVisualizer } from '@epam/ai-dial-chat-shared';
|
|
12
|
-
import type { CustomVisualizerDataLayout } from '@epam/ai-dial-chat-shared';
|
|
13
10
|
import { DeleteFilesResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
14
11
|
import { DeleteItemDto } from '@epam/ai-dial-chat-api-client';
|
|
15
12
|
import { DialCopiedItem } from '@epam/ai-dial-react-file-manager';
|
|
@@ -27,15 +24,17 @@ import { DiscardSharedItemDto } from '@epam/ai-dial-chat-api-client';
|
|
|
27
24
|
import { DiscardSharedResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
28
25
|
import { DisplayAttachment } from '@epam/ai-dial-chat-shared';
|
|
29
26
|
import { FileManagerColumnKey } from '@epam/ai-dial-react-file-manager';
|
|
27
|
+
import { FileManagerSelectableNode } from '@epam/ai-dial-chat-shared';
|
|
30
28
|
import { FileMetadataResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
31
29
|
import { FilesApi } from '@epam/ai-dial-chat-api-client';
|
|
30
|
+
import { FileTreeOptions } from '@epam/ai-dial-react-file-manager';
|
|
32
31
|
import { FileUploadBatchState } from '@epam/ai-dial-chat-shared';
|
|
33
32
|
import { FileUploadEntry } from '@epam/ai-dial-chat-shared';
|
|
34
33
|
import { FileUploadResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
35
34
|
import { FileUploadStatus } from '@epam/ai-dial-chat-shared';
|
|
36
35
|
import { FileUploadValidationResult } from '@epam/ai-dial-chat-shared';
|
|
36
|
+
import { FilterChipItem } from '@epam/ai-dial-ui-kit';
|
|
37
37
|
import { getParentFolderPath } from '@epam/ai-dial-chat-shared';
|
|
38
|
-
import type { InputHighlightData } from '@epam/pdf-highlighter-kit';
|
|
39
38
|
import { ListFilesItemDto } from '@epam/ai-dial-chat-api-client';
|
|
40
39
|
import { ListFilesResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
41
40
|
import { ListPublicFilesRequest } from '@epam/ai-dial-chat-api-client';
|
|
@@ -48,8 +47,6 @@ import { RenameFilesResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
|
48
47
|
import { RenameItemDto } from '@epam/ai-dial-chat-api-client';
|
|
49
48
|
import { RevokeAccessItemDto } from '@epam/ai-dial-chat-api-client';
|
|
50
49
|
import { RevokeAccessResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
51
|
-
import { TabModel } from '@epam/ai-dial-ui-kit';
|
|
52
|
-
import { ToolbarOptions } from '@epam/ai-dial-react-file-manager';
|
|
53
50
|
import { UploadArchiveResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
54
51
|
import { useGridEditingScroll } from '@epam/ai-dial-chat-shared';
|
|
55
52
|
import { UseGridEditingScrollOptions } from '@epam/ai-dial-chat-shared';
|
|
@@ -58,55 +55,6 @@ import { UseGridEditingScrollResult } from '@epam/ai-dial-chat-shared';
|
|
|
58
55
|
/** Maps an annotation's source attachment to the display-only attachment model. */
|
|
59
56
|
export declare const annotationToDisplayAttachment: (annotation: Annotation) => DisplayAttachment | null;
|
|
60
57
|
|
|
61
|
-
/**
|
|
62
|
-
* Builds an `OoxmlCanvasContent` for a DOCX/PPTX/XLSX citation annotation,
|
|
63
|
-
* including highlights for every annotation sharing the clicked one's source
|
|
64
|
-
* document. Returns `null` when the annotation has no source attachment,
|
|
65
|
-
* the source is not a format `@silurus/ooxml` renders as DOCX/XLSX/PPTX (a
|
|
66
|
-
* CSV source returns `null` — citation highlighting targets Office documents
|
|
67
|
-
* only), or no URL resolves.
|
|
68
|
-
*/
|
|
69
|
-
export declare const annotationToOoxmlCanvasContent: (annotation: Annotation, annotations: Annotation[], resolvers: AttachmentCanvasUrlResolvers) => OoxmlCanvasContent | null;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Builds a `PdfCanvasContent` for a PDF citation annotation, including highlights
|
|
73
|
-
* for the clicked annotation's document within its citation group.
|
|
74
|
-
* Returns `null` if the annotation has no PDF source attachment.
|
|
75
|
-
*/
|
|
76
|
-
export declare const annotationToPdfCanvasContent: (annotation: Annotation, groups: AnnotationGroup[], resolvers: AttachmentCanvasUrlResolvers) => PdfCanvasContent | null;
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* DIAL-file URL resolution injected by the host into every attachment-canvas
|
|
80
|
-
* content resolver below. Host-owned — encodes the app's own
|
|
81
|
-
* file-download endpoint.
|
|
82
|
-
*/
|
|
83
|
-
export declare interface AttachmentCanvasUrlResolvers {
|
|
84
|
-
/** Resolves a DIAL Core file id to a downloadable URL. */
|
|
85
|
-
resolveDialFileDownloadUrl: (fileId: string) => string | undefined;
|
|
86
|
-
/** Resolves the best downloadable DIAL-file URL from an attachment's `url` or `referenceUrl`. */
|
|
87
|
-
resolveDialUrl: (attachment: DisplayAttachment) => string | undefined;
|
|
88
|
-
/** Resolves a DIAL Core file id to a fetchable metadata URL (used for cache-freshness validation). */
|
|
89
|
-
resolveDialFileMetadataUrl: (fileId: string) => string | undefined;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/** The type of content the canvas can display. */
|
|
93
|
-
declare enum AttachmentContentType {
|
|
94
|
-
PlainText = 'plain_text',
|
|
95
|
-
Image = 'image',
|
|
96
|
-
Audio = 'audio',
|
|
97
|
-
Markdown = 'markdown',
|
|
98
|
-
MarkdownTable = 'markdown_table',
|
|
99
|
-
Json = 'json',
|
|
100
|
-
Pdf = 'pdf',
|
|
101
|
-
Ooxml = 'ooxml',
|
|
102
|
-
Code = 'code',
|
|
103
|
-
Html = 'html',
|
|
104
|
-
Visualizer = 'visualizer',
|
|
105
|
-
McpApp = 'mcp_app',
|
|
106
|
-
Unsupported = 'unsupported',
|
|
107
|
-
Error = 'error',
|
|
108
|
-
}
|
|
109
|
-
|
|
110
58
|
/** Maps Chat API attachment DTOs to display-only attachment models. */
|
|
111
59
|
export declare const attachmentDtosToDisplayAttachments: (dtos: MessageAttachment[] | undefined, resolvers: AttachmentDisplayResolvers) => DisplayAttachment[];
|
|
112
60
|
|
|
@@ -115,14 +63,6 @@ export declare const attachmentDtosToDisplayAttachments: (dtos: MessageAttachmen
|
|
|
115
63
|
*/
|
|
116
64
|
export declare const attachmentDtoToDisplayAttachment: (dto: MessageAttachment, resolvers: AttachmentDisplayResolvers) => DisplayAttachment;
|
|
117
65
|
|
|
118
|
-
/** The kind of failure that produced an `ErrorCanvasContent`. */
|
|
119
|
-
declare enum AttachmentErrorType {
|
|
120
|
-
/** The file failed to load (network error or a non-`403` non-OK response). */
|
|
121
|
-
LoadFailed = 'load_failed',
|
|
122
|
-
/** The file request failed with HTTP `403` — the user lacks permission to access it. */
|
|
123
|
-
Forbidden = 'forbidden',
|
|
124
|
-
}
|
|
125
|
-
|
|
126
66
|
export declare const buildFromCache: (cache: Map<string, ListFilesItemDto[]>, listingPermissionsCache: Map<string, string[] | undefined>, apiPath: string, virtualBasePath: string, folderId: string) => DialFile[];
|
|
127
67
|
|
|
128
68
|
/**
|
|
@@ -136,19 +76,6 @@ export declare const buildFromCache: (cache: Map<string, ListFilesItemDto[]>, li
|
|
|
136
76
|
*/
|
|
137
77
|
export declare const buildSharedItemVirtualPath: (relativePath: string, rootLabel: string, isFolder: boolean) => string;
|
|
138
78
|
|
|
139
|
-
/** Clears all cached fetch results. Call this when leaving a conversation. */
|
|
140
|
-
export declare const clearAttachmentCache: () => void;
|
|
141
|
-
|
|
142
|
-
/** Content payload for syntax-highlighted source-code or text file attachments. */
|
|
143
|
-
declare interface CodeCanvasContent {
|
|
144
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
145
|
-
type: AttachmentContentType.Code;
|
|
146
|
-
/** The raw source text to display. */
|
|
147
|
-
text: string;
|
|
148
|
-
/** `react-syntax-highlighter` language identifier (e.g. `'typescript'`). `undefined` renders plain monospace. */
|
|
149
|
-
language?: string;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
79
|
export declare const COLUMNS_WITH_AUTHOR: FileManagerColumnKey[];
|
|
153
80
|
|
|
154
81
|
export declare const COLUMNS_WITHOUT_AUTHOR: FileManagerColumnKey[];
|
|
@@ -196,11 +123,22 @@ export declare const DATE_OPTIONS: Intl.DateTimeFormatOptions;
|
|
|
196
123
|
|
|
197
124
|
export declare const deriveActionProfile: (variant: DialFileManagerVariant) => DialFileManagerActionProfile;
|
|
198
125
|
|
|
126
|
+
/** Source tabs `useDialFileManagerSections` can merge into the All tab, in display order. */
|
|
127
|
+
export declare const DIAL_FILE_MANAGER_SECTION_TABS: readonly DialFileManagerTabs[];
|
|
128
|
+
|
|
199
129
|
/** Strip the "files/{bucket}/" prefix from a DIAL Core URL to get the path within the bucket. */
|
|
200
130
|
export declare const dialCorePathToRelative: (dialCorePath: string, bucket: string) => string;
|
|
201
131
|
|
|
202
132
|
export { DialFileManagerActionProfile }
|
|
203
133
|
|
|
134
|
+
/** One source tab rendered as a top-level folder of the All view. */
|
|
135
|
+
export declare interface DialFileManagerSection {
|
|
136
|
+
/** Source tab backing this section — `MyFiles`, `Shared` or `Organization`. */
|
|
137
|
+
tab: DialFileManagerTabs;
|
|
138
|
+
/** Display name of the section's top-level folder; also the first segment of its virtual paths. An empty, slash-containing or repeated label is replaced by the tab id. */
|
|
139
|
+
rootLabel: string;
|
|
140
|
+
}
|
|
141
|
+
|
|
204
142
|
export { DialFileManagerVariant }
|
|
205
143
|
|
|
206
144
|
/**
|
|
@@ -335,18 +273,6 @@ export declare enum DownloadDestinationType {
|
|
|
335
273
|
Cancelled = "cancelled"
|
|
336
274
|
}
|
|
337
275
|
|
|
338
|
-
/** Content payload for attachments whose file failed to load or that the user cannot access. */
|
|
339
|
-
declare interface ErrorCanvasContent {
|
|
340
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
341
|
-
type: AttachmentContentType.Error;
|
|
342
|
-
/** The kind of failure that occurred. */
|
|
343
|
-
errorType: AttachmentErrorType;
|
|
344
|
-
/** Remote URL of the file, if known. Ignored for download purposes when `errorType` is `Forbidden`. */
|
|
345
|
-
url?: string;
|
|
346
|
-
/** Overrides the default `loadErrorLabel`/`forbiddenErrorLabel` message, for callers whose failed content isn't a generic "file" (e.g. an MCP App). */
|
|
347
|
-
label?: string;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
276
|
export declare const fetchByTab: (filesApi: DialFilesApi, tab: DialFileManagerTabs, bucket: string, folderPath: string, sharedRootMeta: Map<string, SharedRootMeta>) => Promise<{
|
|
351
277
|
items: ListFilesItemDto[];
|
|
352
278
|
permissions?: string[];
|
|
@@ -429,7 +355,9 @@ export declare enum FileManagerNotificationReason {
|
|
|
429
355
|
/** `onUploadArchive` extracted some entries successfully and some failed; `count`/`names`/`restCount` describe the failures. */
|
|
430
356
|
UploadArchivePartiallyFailed = "uploadArchivePartiallyFailed",
|
|
431
357
|
/** `onUploadArchive`'s `uploadArchive` request itself rejected. */
|
|
432
|
-
UploadArchiveRequestFailed = "uploadArchiveRequestFailed"
|
|
358
|
+
UploadArchiveRequestFailed = "uploadArchiveRequestFailed",
|
|
359
|
+
/** A copy/move targeted a destination in a different All-view section from its source items; no request was made. */
|
|
360
|
+
CrossSectionTransferUnsupported = "crossSectionTransferUnsupported"
|
|
433
361
|
}
|
|
434
362
|
|
|
435
363
|
/**
|
|
@@ -450,8 +378,6 @@ export declare type FileNameValidationError = {
|
|
|
450
378
|
} | {
|
|
451
379
|
reason: FileNameValidationErrorReason.DuplicateName;
|
|
452
380
|
existingName: string;
|
|
453
|
-
} | {
|
|
454
|
-
reason: FileNameValidationErrorReason.LeadingDot;
|
|
455
381
|
};
|
|
456
382
|
|
|
457
383
|
/**
|
|
@@ -464,8 +390,7 @@ export declare enum FileNameValidationErrorReason {
|
|
|
464
390
|
ForbiddenSymbols = "forbiddenSymbols",
|
|
465
391
|
ReservedName = "reservedName",
|
|
466
392
|
TooLong = "tooLong",
|
|
467
|
-
DuplicateName = "duplicateName"
|
|
468
|
-
LeadingDot = "leadingDot"
|
|
393
|
+
DuplicateName = "duplicateName"
|
|
469
394
|
}
|
|
470
395
|
|
|
471
396
|
/**
|
|
@@ -482,7 +407,10 @@ export declare enum FileOperationKind {
|
|
|
482
407
|
FileCopied = "fileCopied",
|
|
483
408
|
FilesCopied = "filesCopied",
|
|
484
409
|
FileMoved = "fileMoved",
|
|
485
|
-
FilesMoved = "filesMoved"
|
|
410
|
+
FilesMoved = "filesMoved",
|
|
411
|
+
/** A copy whose every item landed in its own source folder (Duplicate). */
|
|
412
|
+
FileDuplicated = "fileDuplicated",
|
|
413
|
+
FilesDuplicated = "filesDuplicated"
|
|
486
414
|
}
|
|
487
415
|
|
|
488
416
|
/**
|
|
@@ -497,13 +425,15 @@ export declare interface FileOperationSuccessEvent {
|
|
|
497
425
|
name?: string;
|
|
498
426
|
/** Number of items the operation covered, when applicable. */
|
|
499
427
|
count?: number;
|
|
500
|
-
/**
|
|
428
|
+
/**
|
|
429
|
+
* Destination folder as a slash-joined virtual path starting at the root
|
|
430
|
+
* label (e.g. `My files/reports`), for copy/move/duplicate operations.
|
|
431
|
+
*/
|
|
501
432
|
destinationFolderName?: string;
|
|
502
433
|
/**
|
|
503
|
-
* Whether the affected item is a folder rather than a file.
|
|
504
|
-
*
|
|
505
|
-
*
|
|
506
|
-
* "File renamed").
|
|
434
|
+
* Whether the affected item is a folder rather than a file. Set for rename,
|
|
435
|
+
* copy, move, and duplicate events; on a multi-item event it describes the
|
|
436
|
+
* first successfully affected item (the one `name` refers to).
|
|
507
437
|
*/
|
|
508
438
|
isFolder?: boolean;
|
|
509
439
|
}
|
|
@@ -570,35 +500,12 @@ export declare const getUrlFileName: (url: string) => string;
|
|
|
570
500
|
|
|
571
501
|
export declare const getVirtualPathName: (virtualPath: string, fallback: string) => string;
|
|
572
502
|
|
|
573
|
-
/**
|
|
574
|
-
* Whether the attachment carries text `resolveAttachmentText` can resolve —
|
|
575
|
-
* inline data, a DIAL download URL, or a locally-picked file. Mirrors that
|
|
576
|
-
* function's source list, so a `null` resolver result can be read as "the text
|
|
577
|
-
* was fetched and rejected" rather than "there was no text to fetch".
|
|
578
|
-
*/
|
|
579
|
-
export declare const hasAttachmentTextSource: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers) => boolean;
|
|
580
|
-
|
|
581
503
|
export declare const hasDialFileWritePermission: (folder?: DialFile) => boolean;
|
|
582
504
|
|
|
583
505
|
export declare const hasForbiddenNameSymbols: (name: string, forbiddenSymbolsRegExp?: RegExp) => boolean;
|
|
584
506
|
|
|
585
|
-
/**
|
|
586
|
-
declare
|
|
587
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
588
|
-
type: AttachmentContentType.Html;
|
|
589
|
-
/** Full HTML text rendered via `srcdoc` in a sandboxed iframe. Used for file attachments. */
|
|
590
|
-
srcdoc?: string;
|
|
591
|
-
/** External URL rendered via `src` in a sandboxed iframe. Used for external link sources. */
|
|
592
|
-
url?: string;
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
/** Content payload for image attachments. */
|
|
596
|
-
declare interface ImageCanvasContent {
|
|
597
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
598
|
-
type: AttachmentContentType.Image;
|
|
599
|
-
/** URL of the image to display (object URL or resolved download URL). */
|
|
600
|
-
url: string;
|
|
601
|
-
}
|
|
507
|
+
/** Returns `true` when both sets contain exactly the same paths. */
|
|
508
|
+
export declare const hasSamePaths: (a: ReadonlySet<string>, b: ReadonlySet<string>) => boolean;
|
|
602
509
|
|
|
603
510
|
/** Copy/Move/Duplicate are Browse/Full-only — the attach picker excludes them. */
|
|
604
511
|
export declare const isCopyMoveDuplicateAllowed: (actionProfile: DialFileManagerActionProfile) => boolean;
|
|
@@ -615,14 +522,6 @@ export declare const isExternalSourcePreviewable: (contentType: string, url: str
|
|
|
615
522
|
/** Share/Unshare/Remove access are Full-only — Browse and Attach never expose them. */
|
|
616
523
|
export declare const isShareActionsAllowed: (actionProfile: DialFileManagerActionProfile) => boolean;
|
|
617
524
|
|
|
618
|
-
/** Content payload for JSON file attachments. */
|
|
619
|
-
declare interface JsonCanvasContent {
|
|
620
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
621
|
-
type: AttachmentContentType.Json;
|
|
622
|
-
/** Already-parsed JSON value. The lib never calls JSON.parse. */
|
|
623
|
-
value: unknown;
|
|
624
|
-
}
|
|
625
|
-
|
|
626
525
|
export declare const mapCorePermissions: (permissions?: string[]) => DialFile["permissions"] | undefined;
|
|
627
526
|
|
|
628
527
|
/**
|
|
@@ -636,20 +535,19 @@ export declare const mapFileMetadataToDialFile: (metadata: FileMetadataResponseD
|
|
|
636
535
|
|
|
637
536
|
export declare const mapSearchItem: (item: ListFilesItemDto, fallbackBucket: string, rootLabel: string) => DialFile;
|
|
638
537
|
|
|
639
|
-
/** Content payload for Markdown file attachments. */
|
|
640
|
-
declare interface MarkdownCanvasContent {
|
|
641
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
642
|
-
type: AttachmentContentType.Markdown;
|
|
643
|
-
/** Raw Markdown string to render. */
|
|
644
|
-
text: string;
|
|
645
|
-
}
|
|
646
|
-
|
|
647
538
|
export declare const mergeCreatedFolderIntoCache: (cache: Map<string, ListFilesItemDto[]>, parentApiPath: string, created: CreateFolderResponseDto, inheritedPermissions?: string[]) => Map<string, ListFilesItemDto[]>;
|
|
648
539
|
|
|
649
540
|
/** Formats MIME types as a human-readable, comma-separated list of dotted extensions (or the MIME type itself for wildcards). */
|
|
650
541
|
export declare const mimeTypesToAttachmentExtensionLabels: (types: string[]) => string;
|
|
651
542
|
|
|
652
|
-
/**
|
|
543
|
+
/**
|
|
544
|
+
* Normalizes `*` to the all-files wildcard, canonicalizes MIME aliases, and drops
|
|
545
|
+
* any value that is not a valid `DialFileAcceptType`.
|
|
546
|
+
*
|
|
547
|
+
* Aliases are resolved because a file picker matches an `accept` entry against its
|
|
548
|
+
* own MIME table: a declared `text/json` offers no `.json` file, while the
|
|
549
|
+
* `application/json` it denotes does.
|
|
550
|
+
*/
|
|
653
551
|
export declare const mimeTypesToDialFileAcceptTypes: (types?: string[]) => DialFileAcceptType[] | undefined;
|
|
654
552
|
|
|
655
553
|
/**
|
|
@@ -661,104 +559,6 @@ export declare const mimeTypesToFileAccept: (types?: string[]) => string | undef
|
|
|
661
559
|
|
|
662
560
|
export declare const normalizeVirtualPath: (value: string) => string;
|
|
663
561
|
|
|
664
|
-
/** Content payload for OOXML document and CSV spreadsheet attachments. */
|
|
665
|
-
declare interface OoxmlCanvasContent {
|
|
666
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
667
|
-
type: AttachmentContentType.Ooxml;
|
|
668
|
-
/** Resolved download URL or object URL for the source file. */
|
|
669
|
-
url: string;
|
|
670
|
-
/** The document format used to select and configure the format-specific renderer. */
|
|
671
|
-
format: OoxmlFileType;
|
|
672
|
-
/** Cited locations to draw over the document. Omitted, never `[]`, when there is nothing to highlight. */
|
|
673
|
-
highlights?: OoxmlHighlight[];
|
|
674
|
-
/** Id of the highlight to navigate to and emphasise. Omitted when the clicked citation resolved to no location. */
|
|
675
|
-
selectedHighlightId?: string;
|
|
676
|
-
}
|
|
677
|
-
|
|
678
|
-
/** A 1-based cell address, matching `@silurus/ooxml`'s own `CellAddress`. */
|
|
679
|
-
declare interface OoxmlCellAddress {
|
|
680
|
-
/** 1-based row number. */
|
|
681
|
-
row: number;
|
|
682
|
-
/** 1-based column number. */
|
|
683
|
-
col: number;
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
/** A cited character range inside a DOCX story, addressed by story name and source-tree path. */
|
|
687
|
-
declare interface OoxmlDocxHighlightLocation {
|
|
688
|
-
/** Discriminates this location within `OoxmlHighlightLocation`. */
|
|
689
|
-
kind: OoxmlHighlightKind.DocxTextRange;
|
|
690
|
-
/** Name of the DOCX story the range lives in, as an opaque string (only `'body'` is confirmed upstream). */
|
|
691
|
-
story: string;
|
|
692
|
-
/** Source-tree element indices identifying the paragraph, matched element-wise. */
|
|
693
|
-
path: number[];
|
|
694
|
-
/** Inclusive start character offset within the story's matched text. */
|
|
695
|
-
start: number;
|
|
696
|
-
/** Exclusive end character offset, already converted from the wire's inclusive `end`. */
|
|
697
|
-
endExclusive: number;
|
|
698
|
-
/** The cited text, compared against the text resolved over `[start, endExclusive)`. */
|
|
699
|
-
text: string;
|
|
700
|
-
}
|
|
701
|
-
|
|
702
|
-
/** Supported document formats rendered by the installed `@silurus/ooxml` runtime. */
|
|
703
|
-
declare enum OoxmlFileType {
|
|
704
|
-
Docx = 'docx',
|
|
705
|
-
Xlsx = 'xlsx',
|
|
706
|
-
Pptx = 'pptx',
|
|
707
|
-
Csv = 'csv',
|
|
708
|
-
}
|
|
709
|
-
|
|
710
|
-
/** One citation's highlight: the locations it resolved to, under a stable id. */
|
|
711
|
-
declare interface OoxmlHighlight {
|
|
712
|
-
/** Stable id, used to mark exactly one highlight selected. */
|
|
713
|
-
id: string;
|
|
714
|
-
/** One or more locations — a single citation may carry several selectors. */
|
|
715
|
-
locations: OoxmlHighlightLocation[];
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
/** Discriminates the Office highlight location descriptors an `OoxmlCanvasContent` can carry. */
|
|
719
|
-
declare enum OoxmlHighlightKind {
|
|
720
|
-
/** A character range inside a DOCX story, addressed by story name and source-tree path. */
|
|
721
|
-
DocxTextRange = 'docxTextRange',
|
|
722
|
-
/** A character range inside a single PPTX shape on one slide. */
|
|
723
|
-
PptxTextRange = 'pptxTextRange',
|
|
724
|
-
/** One cell, or a contiguous same-row cell range, on a named XLSX sheet. */
|
|
725
|
-
XlsxCellRange = 'xlsxCellRange',
|
|
726
|
-
}
|
|
727
|
-
|
|
728
|
-
/** A cited location inside an Office document, in document coordinates. */
|
|
729
|
-
declare type OoxmlHighlightLocation =
|
|
730
|
-
| OoxmlDocxHighlightLocation
|
|
731
|
-
| OoxmlPptxHighlightLocation
|
|
732
|
-
| OoxmlXlsxHighlightLocation;
|
|
733
|
-
|
|
734
|
-
/** A cited character range inside a single shape on one PPTX slide. */
|
|
735
|
-
declare interface OoxmlPptxHighlightLocation {
|
|
736
|
-
/** Discriminates this location within `OoxmlHighlightLocation`. */
|
|
737
|
-
kind: OoxmlHighlightKind.PptxTextRange;
|
|
738
|
-
/** 1-based slide number. */
|
|
739
|
-
slide: number;
|
|
740
|
-
/** Shape identifier, compared as a string against the run's own `shapeId`. */
|
|
741
|
-
shapeId: string;
|
|
742
|
-
/** Inclusive start character offset within the shape's matched text. */
|
|
743
|
-
start: number;
|
|
744
|
-
/** Exclusive end character offset, already converted from the wire's inclusive `end`. */
|
|
745
|
-
endExclusive: number;
|
|
746
|
-
/** The cited text, compared against the text resolved over `[start, endExclusive)`. */
|
|
747
|
-
text: string;
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
/** A cited cell, or contiguous same-row cell range, on a named XLSX sheet. */
|
|
751
|
-
declare interface OoxmlXlsxHighlightLocation {
|
|
752
|
-
/** Discriminates this location within `OoxmlHighlightLocation`. */
|
|
753
|
-
kind: OoxmlHighlightKind.XlsxCellRange;
|
|
754
|
-
/** Sheet name, matched exactly against the workbook's own sheet names. */
|
|
755
|
-
sheet: string;
|
|
756
|
-
/** First cell of the range. 1-based, passed to the viewer unconverted. */
|
|
757
|
-
start: OoxmlCellAddress;
|
|
758
|
-
/** Last cell of the range, on the same row as `start`. Omitted for a single cell. */
|
|
759
|
-
end?: OoxmlCellAddress;
|
|
760
|
-
}
|
|
761
|
-
|
|
762
562
|
/**
|
|
763
563
|
* Opens a cited/referenced attachment: triggers a browser download for
|
|
764
564
|
* DIAL-hosted files (`files/...` ids) via the injected `resolveDownloadUrl`,
|
|
@@ -774,28 +574,6 @@ export declare const parseNewFolderVirtualPath: (newFolderVirtualPath: string, r
|
|
|
774
574
|
|
|
775
575
|
export declare const PATH_SEPARATOR_REGEXP: RegExp;
|
|
776
576
|
|
|
777
|
-
/** Content payload for PDF file attachments. */
|
|
778
|
-
declare interface PdfCanvasContent {
|
|
779
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
780
|
-
type: AttachmentContentType.Pdf;
|
|
781
|
-
/** Resolved download URL or object URL for the PDF file. */
|
|
782
|
-
url: string;
|
|
783
|
-
/** Highlight regions to render over the PDF pages. */
|
|
784
|
-
highlights?: InputHighlightData[];
|
|
785
|
-
/** ID of the highlight to scroll to and select on initial load. */
|
|
786
|
-
selectedHighlightId?: string;
|
|
787
|
-
/** 1-based page to navigate to on initial load, independent of highlight geometry. */
|
|
788
|
-
page?: number;
|
|
789
|
-
}
|
|
790
|
-
|
|
791
|
-
/** Content payload for plain-text attachments. */
|
|
792
|
-
declare interface PlainTextCanvasContent {
|
|
793
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
794
|
-
type: AttachmentContentType.PlainText;
|
|
795
|
-
/** The raw text to display. */
|
|
796
|
-
text: string;
|
|
797
|
-
}
|
|
798
|
-
|
|
799
577
|
/** Builds the `copyFiles` DTOs (with their destination display name) for `onCopyFiles`. */
|
|
800
578
|
export declare const prepareCopyItems: (copiedItems: DialCopiedItem[], bucket: string, rootLabel: string) => PreparedCopyMoveItem<CopyItemDto>[];
|
|
801
579
|
|
|
@@ -821,21 +599,9 @@ export declare const prepareMoveRenameItems: (copiedItems: DialCopiedItem[], buc
|
|
|
821
599
|
preparedMoveItems: PreparedCopyMoveItem<MoveItemDto>[];
|
|
822
600
|
};
|
|
823
601
|
|
|
824
|
-
/**
|
|
825
|
-
* Builds a `PdfCanvasContent` for a reference-only attachment whose
|
|
826
|
-
* `reference_url` points at a PDF file (optionally with a `#page=N`
|
|
827
|
-
* fragment), so it can be opened in the canvas and scrolled to the
|
|
828
|
-
* referenced page the same way a regular PDF citation is. Returns `null`
|
|
829
|
-
* when the attachment's `url` does not target a PDF.
|
|
830
|
-
*/
|
|
831
|
-
export declare const referenceAttachmentToPdfCanvasContent: (attachment: AttachmentResource, resolvers: AttachmentCanvasUrlResolvers) => PdfCanvasContent | null;
|
|
832
|
-
|
|
833
602
|
/** Name reserved for the hidden marker file used to create empty folders. */
|
|
834
603
|
export declare const RESERVED_MARKER_NAME = ".dial_folder";
|
|
835
604
|
|
|
836
|
-
/** Resolves a syntax-highlighted code canvas content payload from a DisplayAttachment, or `null` if unavailable. */
|
|
837
|
-
export declare const resolveCodeCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers, language?: string) => Promise<CodeCanvasContent | ErrorCanvasContent | null>;
|
|
838
|
-
|
|
839
605
|
/**
|
|
840
606
|
* Resolves a DialFile to the bucket-relative API path used by files BFF endpoints.
|
|
841
607
|
* Prefers DIAL resource ids when present; otherwise converts DialFile.path virtual paths.
|
|
@@ -870,37 +636,6 @@ declare type ResolveDownloadUrl = (fileId: string) => string | undefined;
|
|
|
870
636
|
*/
|
|
871
637
|
export declare const resolveExternalSourceContentType: (contentType: string, url: string) => string;
|
|
872
638
|
|
|
873
|
-
/**
|
|
874
|
-
* Resolves an HTML canvas content payload from a DisplayAttachment.
|
|
875
|
-
* Fetches and inlines the HTML as `srcdoc` when the attachment has a download URL or inline data.
|
|
876
|
-
* Returns `null` if no source is available, or an `ErrorCanvasContent` on fetch failure.
|
|
877
|
-
* Rejects `srcdoc` payloads larger than 1 MiB to prevent browser truncation.
|
|
878
|
-
*/
|
|
879
|
-
export declare const resolveHtmlCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers) => Promise<HtmlCanvasContent | ErrorCanvasContent | null>;
|
|
880
|
-
|
|
881
|
-
/**
|
|
882
|
-
* Resolves an image canvas content payload from a DisplayAttachment without
|
|
883
|
-
* fetching — returns a local blob URL or the BFF download URL directly so the
|
|
884
|
-
* browser cache can be shared with the conversation view's `<img>` element.
|
|
885
|
-
* A local `File` with bytes takes precedence over the DIAL download URL; a
|
|
886
|
-
* 0-byte `File` (the file-manager placeholder) does not. Error detection is
|
|
887
|
-
* delegated to `<img onError>` in the canvas renderer. Returns `null` if no
|
|
888
|
-
* URL source is available.
|
|
889
|
-
*/
|
|
890
|
-
export declare const resolveImageCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers) => ImageCanvasContent | null;
|
|
891
|
-
|
|
892
|
-
/**
|
|
893
|
-
* Resolves a JSON canvas content payload from a DisplayAttachment, or `null` if unavailable.
|
|
894
|
-
* Falls back to `PlainTextCanvasContent` when the fetched text is not valid JSON.
|
|
895
|
-
*/
|
|
896
|
-
export declare const resolveJsonCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers) => Promise<JsonCanvasContent | PlainTextCanvasContent | ErrorCanvasContent | null>;
|
|
897
|
-
|
|
898
|
-
/** Resolves a Markdown canvas content payload from a DisplayAttachment, or `null` if unavailable. */
|
|
899
|
-
export declare const resolveMarkdownCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers) => Promise<MarkdownCanvasContent | ErrorCanvasContent | null>;
|
|
900
|
-
|
|
901
|
-
/** Resolves an OOXML or CSV renderer payload from a DisplayAttachment, or `null` if unavailable. */
|
|
902
|
-
export declare const resolveOoxmlCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers, format: OoxmlFileType) => Promise<OoxmlCanvasContent | ErrorCanvasContent | null>;
|
|
903
|
-
|
|
904
639
|
/**
|
|
905
640
|
* Resolves the effective bucket and path for a write operation on the Shared tab.
|
|
906
641
|
* For Shared tab items, the first segment of apiPath is the shared root folder name
|
|
@@ -911,29 +646,14 @@ export declare const resolveOwnerCoords: (apiPath: string, sharedRootMeta: Map<s
|
|
|
911
646
|
path: string;
|
|
912
647
|
};
|
|
913
648
|
|
|
914
|
-
/** Resolves a PDF canvas content payload from a DisplayAttachment, or `null` if unavailable. */
|
|
915
|
-
export declare const resolvePdfCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers) => Promise<PdfCanvasContent | ErrorCanvasContent | null>;
|
|
916
|
-
|
|
917
649
|
/**
|
|
918
650
|
* Converts a DIAL file ID or full resource path to the relative bucket path
|
|
919
651
|
* expected by the files download API.
|
|
920
652
|
*/
|
|
921
653
|
export declare const resolveRelativeDialFilePath: (pathOrFileId: string, bucket: string) => string;
|
|
922
654
|
|
|
923
|
-
/**
|
|
924
|
-
export declare const
|
|
925
|
-
|
|
926
|
-
/**
|
|
927
|
-
* Fetches the attachment payload and builds a `VisualizerCanvasContent` for the
|
|
928
|
-
* given registry entry and theme. Returns `null` when the payload cannot be
|
|
929
|
-
* fetched (caller should fall through to default content-type handling).
|
|
930
|
-
*
|
|
931
|
-
* Only JSON payloads are parsed into `data`. Non-JSON payloads (plain text,
|
|
932
|
-
* CSV, binary, …) resolve with `data: {}` — the visualizer still receives
|
|
933
|
-
* `mimeType` and `layout`, just no payload body. This is intentional: only
|
|
934
|
-
* JSON attachment content is forwarded to visualizers in this version.
|
|
935
|
-
*/
|
|
936
|
-
export declare const resolveVisualizerCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers, entry: CustomVisualizer, themeId: string) => Promise<VisualizerCanvasContent | null>;
|
|
655
|
+
/** Returns the section whose root label is the first segment of `virtualPath`, or `undefined` when none matches. */
|
|
656
|
+
export declare const resolveSectionByPath: <TSection extends DialFileManagerSection>(virtualPath: string, sections: readonly TSection[]) => TSection | undefined;
|
|
937
657
|
|
|
938
658
|
/**
|
|
939
659
|
* Sanitizes a filename for upload by replacing forbidden characters with `_`,
|
|
@@ -963,7 +683,10 @@ export declare const splitFileNameExtension: (fileName: string) => {
|
|
|
963
683
|
|
|
964
684
|
export declare const trimFileNameToByteLimit: (name: string, limit?: number) => string;
|
|
965
685
|
|
|
966
|
-
|
|
686
|
+
/** Returns a new set containing every path from each of `pathSets`. */
|
|
687
|
+
export declare const unionPathSets: (pathSets: readonly ReadonlySet<string>[]) => Set<string>;
|
|
688
|
+
|
|
689
|
+
export declare const updateEntry: (prev: FileUploadBatchState | null, id: string, patch: FileUploadStatus | Partial<Pick<FileUploadEntry, "status" | "percent">>) => FileUploadBatchState | null;
|
|
967
690
|
|
|
968
691
|
/** Max number of files uploaded concurrently within a single upload batch. */
|
|
969
692
|
export declare const UPLOAD_CONCURRENCY = 3;
|
|
@@ -999,7 +722,7 @@ export declare type UploadMode = 'overwrite' | 'create-only';
|
|
|
999
722
|
* - shared: files shared with the user via `DialFilesApi.listSharedFiles`
|
|
1000
723
|
* - organization: public bucket via `DialFilesApi.listPublicFiles`
|
|
1001
724
|
*/
|
|
1002
|
-
export declare const useDialFileListing: ({ filesApi, bucket, rootLabel, activeTab, onNotification, }: UseDialFileListingOptions) => UseDialFileListingResult;
|
|
725
|
+
export declare const useDialFileListing: ({ filesApi, bucket, rootLabel, activeTab, onNotification, isActive, sessionKey, }: UseDialFileListingOptions) => UseDialFileListingResult;
|
|
1003
726
|
|
|
1004
727
|
/** Options accepted by `useDialFileListing`. */
|
|
1005
728
|
export declare interface UseDialFileListingOptions {
|
|
@@ -1013,6 +736,10 @@ export declare interface UseDialFileListingOptions {
|
|
|
1013
736
|
activeTab: DialFileManagerTabs;
|
|
1014
737
|
/** Called with a structured event when a folder-load operation fails. */
|
|
1015
738
|
onNotification?: (notification: FileManagerNotification) => void;
|
|
739
|
+
/** When false, the hook issues no `DialFilesApi` call and reports `isLoading: false`. Defaults to `true`. */
|
|
740
|
+
isActive?: boolean;
|
|
741
|
+
/** Changing this value resets cache and navigation exactly like an `activeTab` change. Defaults to `undefined`. */
|
|
742
|
+
sessionKey?: string;
|
|
1016
743
|
}
|
|
1017
744
|
|
|
1018
745
|
/** Values returned by `useDialFileListing`. */
|
|
@@ -1069,7 +796,7 @@ export declare interface UseDialFileListingResult {
|
|
|
1069
796
|
* every translated string reaches it through `labels`,
|
|
1070
797
|
* `disabledNewButtonTooltip`, and `buildValidationErrorMessage`.
|
|
1071
798
|
*/
|
|
1072
|
-
export declare const useDialFileManager: ({ filesApi, bucket, rootLabel, activeTab, onNotification, onOperationSuccess, forbiddenSymbolsRegExp, variant, actionProfile, labels, locale, disabledNewButtonTooltip, downloadDestination, buildValidationErrorMessage, }: UseDialFileManagerOptions) => UseDialFileManagerResult;
|
|
799
|
+
export declare const useDialFileManager: ({ filesApi, bucket, rootLabel, activeTab, isActive, sessionKey, onNotification, onOperationSuccess, forbiddenSymbolsRegExp, variant, actionProfile, labels, locale, disabledNewButtonTooltip, downloadDestination, buildValidationErrorMessage, }: UseDialFileManagerOptions) => UseDialFileManagerResult;
|
|
1073
800
|
|
|
1074
801
|
export declare interface UseDialFileManagerOptions {
|
|
1075
802
|
/** Injected operation port used for every file-manager network call. */
|
|
@@ -1080,6 +807,10 @@ export declare interface UseDialFileManagerOptions {
|
|
|
1080
807
|
rootLabel?: string;
|
|
1081
808
|
/** Active tab — drives listing source and per-tab options. Defaults to MyFiles. */
|
|
1082
809
|
activeTab?: DialFileManagerTabs;
|
|
810
|
+
/** When false, the listing issues no `DialFilesApi` call and reports `isLoading: false`. Defaults to `true`. */
|
|
811
|
+
isActive?: boolean;
|
|
812
|
+
/** Changing this value resets cache and navigation exactly like an `activeTab` change. Defaults to `undefined`. */
|
|
813
|
+
sessionKey?: string;
|
|
1083
814
|
/** Called when a file-manager action should surface a toast notification. */
|
|
1084
815
|
onNotification?: (notification: FileManagerNotification) => void;
|
|
1085
816
|
/** Called when a mutation succeeds, instead of invoking an application notification service directly. */
|
|
@@ -1134,7 +865,7 @@ export declare interface UseDialFileManagerResult {
|
|
|
1134
865
|
onSearchFiles: (folder: string, query: string) => void;
|
|
1135
866
|
/** Search: true while a search request is in flight. */
|
|
1136
867
|
isSearching: boolean;
|
|
1137
|
-
/** Search: flat
|
|
868
|
+
/** Search: flat, unfiltered recursive listing of the current folder, or null when search is not active. */
|
|
1138
869
|
searchResults: DialFile[] | null;
|
|
1139
870
|
/** Search: clears results and exits search mode. */
|
|
1140
871
|
clearSearchResults: () => void;
|
|
@@ -1158,7 +889,9 @@ export declare interface UseDialFileManagerResult {
|
|
|
1158
889
|
uploadBatchState: FileUploadBatchState | null;
|
|
1159
890
|
/** Upload: abort all in-flight and queued uploads. */
|
|
1160
891
|
cancelUpload: () => void;
|
|
1161
|
-
/** Upload:
|
|
892
|
+
/** Upload: abort one queued or in-flight upload by its entry id. */
|
|
893
|
+
cancelUploadFile: (id: string) => void;
|
|
894
|
+
/** Upload: empty the upload queue. */
|
|
1162
895
|
clearUploadBatch: () => void;
|
|
1163
896
|
/** Folder creation: called when user confirms a new folder name. */
|
|
1164
897
|
onCreateFolder: (file: DialUploadFileItem, folderPath: string, fileId: string) => Promise<void>;
|
|
@@ -1225,7 +958,7 @@ export declare interface UseDialFileManagerResult {
|
|
|
1225
958
|
/**
|
|
1226
959
|
* True while any mutating file-manager operation is in flight: the OR of
|
|
1227
960
|
* `isCreatingFolder`, `isDownloading`, `isDeleting`, `isRenaming`, `isCopying`,
|
|
1228
|
-
* `isMoving`, `isUnsharing`, `isRemovingAccess`, and
|
|
961
|
+
* `isMoving`, `isUnsharing`, `isRemovingAccess`, and any upload still queued or running.
|
|
1229
962
|
*
|
|
1230
963
|
* Deliberately excludes three flags, each already fully contained by its own
|
|
1231
964
|
* scoped loading UI:
|
|
@@ -1236,17 +969,42 @@ export declare interface UseDialFileManagerResult {
|
|
|
1236
969
|
isAnyOperationInProgress: boolean;
|
|
1237
970
|
}
|
|
1238
971
|
|
|
972
|
+
/**
|
|
973
|
+
* Composes one `useDialFileManager` per source tab (My files, Shared,
|
|
974
|
+
* Organization) so the File storage page can offer an All tab without a
|
|
975
|
+
* second copy of the per-tab rules. On a single tab it returns that section's
|
|
976
|
+
* result; on All it merges the section roots into one tree and routes every
|
|
977
|
+
* callback to the section owning the path. Section availability and names
|
|
978
|
+
* arrive through `sections` — the hook reads no config, i18n, or context.
|
|
979
|
+
*/
|
|
980
|
+
export declare const useDialFileManagerSections: ({ activeTab, sections, ...managerOptions }: UseDialFileManagerSectionsOptions) => UseDialFileManagerSectionsResult;
|
|
981
|
+
|
|
982
|
+
/** Options accepted by `useDialFileManagerSections`. */
|
|
983
|
+
export declare interface UseDialFileManagerSectionsOptions extends Omit<UseDialFileManagerOptions, 'activeTab' | 'rootLabel' | 'isActive' | 'sessionKey'> {
|
|
984
|
+
/** Active tab, including `DialFileManagerTabs.All`. */
|
|
985
|
+
activeTab: DialFileManagerTabs;
|
|
986
|
+
/** Enabled source tabs in display order, each with its translated top-level folder name. */
|
|
987
|
+
sections: DialFileManagerSection[];
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
/** Values returned by `useDialFileManagerSections`. */
|
|
991
|
+
export declare interface UseDialFileManagerSectionsResult extends UseDialFileManagerResult {
|
|
992
|
+
/** Source tab of the browsed folder; never `DialFileManagerTabs.All`. */
|
|
993
|
+
sectionTab: DialFileManagerTabs;
|
|
994
|
+
}
|
|
995
|
+
|
|
1239
996
|
/**
|
|
1240
997
|
* Filters the file-manager's tab list down to the host's configured set and
|
|
1241
998
|
* resets `activeTab` to the highest-priority still-enabled tab when the
|
|
1242
999
|
* current one becomes excluded. A `fileManagerTabs` of `undefined` means no
|
|
1243
1000
|
* restriction — every tab in `allTabs` stays enabled and no reset ever fires.
|
|
1001
|
+
* The All tab is kept only while at least two source tabs are enabled.
|
|
1244
1002
|
*/
|
|
1245
|
-
export declare const useDialFileManagerTabConfig: (activeTab: DialFileManagerTabs, onTabChange: (tab: DialFileManagerTabs) => void, allTabs:
|
|
1003
|
+
export declare const useDialFileManagerTabConfig: (activeTab: DialFileManagerTabs, onTabChange: (tab: DialFileManagerTabs) => void, allTabs: FilterChipItem<DialFileManagerTabs>[] | undefined, fileManagerTabs: string[] | undefined) => UseDialFileManagerTabConfigResult;
|
|
1246
1004
|
|
|
1247
1005
|
/** Values returned by `useDialFileManagerTabConfig`. */
|
|
1248
1006
|
export declare interface UseDialFileManagerTabConfigResult {
|
|
1249
|
-
tabs:
|
|
1007
|
+
tabs: FileTreeOptions['tabs'];
|
|
1250
1008
|
}
|
|
1251
1009
|
|
|
1252
1010
|
/**
|
|
@@ -1371,10 +1129,11 @@ export declare interface UseDialFileSharingResult {
|
|
|
1371
1129
|
|
|
1372
1130
|
/**
|
|
1373
1131
|
* Manages upload batches (single-file and ZIP-archive extraction), including
|
|
1374
|
-
* concurrency-limited progress tracking and abort.
|
|
1375
|
-
*
|
|
1376
|
-
* `
|
|
1377
|
-
* cache
|
|
1132
|
+
* concurrency-limited progress tracking and per-file abort. A batch started
|
|
1133
|
+
* while another is on screen is appended to it, and settled entries stay in
|
|
1134
|
+
* `uploadBatchState` until `clearUploadBatch`. Invalidates the shared listing
|
|
1135
|
+
* cache for the destination folder through `invalidateFolders`/`bumpRetry`
|
|
1136
|
+
* after a batch settles — it never holds its own copy of the cache.
|
|
1378
1137
|
*/
|
|
1379
1138
|
export declare const useDialFileUploadBatch: ({ filesApi, bucket, rootLabel, activeTab, cache, sharedRootMetaRef, invalidateFolders, bumpRetry, onNotification, }: UseDialFileUploadBatchOptions) => UseDialFileUploadBatchResult;
|
|
1380
1139
|
|
|
@@ -1407,9 +1166,68 @@ export declare interface UseDialFileUploadBatchResult {
|
|
|
1407
1166
|
onValidateUpload: (files: DialUploadFileItem[], existingFiles: DialFile[], destinationFolder: string) => Promise<FileUploadValidationResult>;
|
|
1408
1167
|
uploadBatchState: FileUploadBatchState | null;
|
|
1409
1168
|
cancelUpload: () => void;
|
|
1169
|
+
cancelUploadFile: (id: string) => void;
|
|
1410
1170
|
clearUploadBatch: () => void;
|
|
1411
1171
|
}
|
|
1412
1172
|
|
|
1173
|
+
/**
|
|
1174
|
+
* Composes the file-manager tab/listing hooks into the stateful part of an attachment picker:
|
|
1175
|
+
* active tab, selected paths, and hidden-path/MIME/size/folder row eligibility. Returns the
|
|
1176
|
+
* existing `useDialFileManager` controller unchanged and the selection/tab/eligibility fields
|
|
1177
|
+
* `FileManagerAttachModal` already consumes — it composes that modal, it does not replace it.
|
|
1178
|
+
* Final attachment filtering, deduplication, and count enforcement stay owned by the modal.
|
|
1179
|
+
*/
|
|
1180
|
+
export declare const useFileAttachmentPicker: ({ fileManagerOptions, bucket, forbiddenSymbolsRegExp, tabLabels, allowedTabs, initialTab, allowedTypes, maxSelectableFileSize, canAttachFolders, }: UseFileAttachmentPickerOptions) => UseFileAttachmentPickerResult;
|
|
1181
|
+
|
|
1182
|
+
/** Options accepted by {@link useFileAttachmentPicker}. */
|
|
1183
|
+
export declare interface UseFileAttachmentPickerOptions {
|
|
1184
|
+
/**
|
|
1185
|
+
* Configured `useDialFileManager` options besides the values this hook derives:
|
|
1186
|
+
* `bucket`, `activeTab`, `rootLabel`, `variant`, and `forbiddenSymbolsRegExp`.
|
|
1187
|
+
*/
|
|
1188
|
+
fileManagerOptions: Omit<UseDialFileManagerOptions, 'bucket' | 'activeTab' | 'rootLabel' | 'variant' | 'forbiddenSymbolsRegExp'>;
|
|
1189
|
+
/** DIAL Core bucket to browse. */
|
|
1190
|
+
bucket: string;
|
|
1191
|
+
/** Regexp of characters forbidden in file/folder names, forwarded to `useDialFileManager`. */
|
|
1192
|
+
forbiddenSymbolsRegExp?: RegExp;
|
|
1193
|
+
/** Host-translated label per tab; also supplies the active tab's root-folder label. */
|
|
1194
|
+
tabLabels: Record<DialFileManagerTabs, string>;
|
|
1195
|
+
/** Tab ids the host's configuration allows. `undefined` allows every tab. `all` is never offered. */
|
|
1196
|
+
allowedTabs?: string[];
|
|
1197
|
+
/** Initial active tab. Defaults to `DialFileManagerTabs.MyFiles`; `All` is treated as the default. */
|
|
1198
|
+
initialTab?: DialFileManagerTabs;
|
|
1199
|
+
/** MIME types eligible for selection/upload. Empty or absent allows every type. */
|
|
1200
|
+
allowedTypes?: string[];
|
|
1201
|
+
/** Files at or below this size (bytes) remain eligible; absent allows any size. */
|
|
1202
|
+
maxSelectableFileSize?: number;
|
|
1203
|
+
/** Whether folder rows are eligible for selection. Defaults to `false`. */
|
|
1204
|
+
canAttachFolders?: boolean;
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
/** Result returned by {@link useFileAttachmentPicker}. */
|
|
1208
|
+
export declare interface UseFileAttachmentPickerResult {
|
|
1209
|
+
/** The composed file-manager controller; forward to `FileManagerAttachModal`'s `controller` prop. */
|
|
1210
|
+
controller: UseDialFileManagerResult;
|
|
1211
|
+
/** Active tab. */
|
|
1212
|
+
activeTab: DialFileManagerTabs;
|
|
1213
|
+
/** Tab list filtered to `allowedTabs`; forward to `FileManagerAttachModal`'s `tabs` prop. */
|
|
1214
|
+
tabs: FileTreeOptions['tabs'];
|
|
1215
|
+
/** Switches the active tab and clears the current selection. */
|
|
1216
|
+
onTabChange: (tab: DialFileManagerTabs) => void;
|
|
1217
|
+
/** Currently selected paths. */
|
|
1218
|
+
selectedPaths: Set<string>;
|
|
1219
|
+
/** Replaces the selection with a defensive copy of the given set. */
|
|
1220
|
+
onSelectedPathsChange: (paths: Set<string>) => void;
|
|
1221
|
+
/** Row eligibility predicate; forward to `FileManagerAttachModal`'s `isRowSelectable` prop. */
|
|
1222
|
+
isRowSelectable: (node: {
|
|
1223
|
+
data?: FileManagerSelectableNode | null;
|
|
1224
|
+
}) => boolean;
|
|
1225
|
+
/** MIME eligibility predicate; forward to `FileManagerAttachModal`'s `isFileTypeAllowed` prop. */
|
|
1226
|
+
isFileTypeAllowed: (contentType: string) => boolean;
|
|
1227
|
+
/** Accepted upload MIME types; forward to `FileManagerAttachModal`'s `allowedFileTypes` prop. */
|
|
1228
|
+
allowedFileTypes: DialFileAcceptType[] | undefined;
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1413
1231
|
export { useGridEditingScroll }
|
|
1414
1232
|
|
|
1415
1233
|
export { UseGridEditingScrollOptions }
|
|
@@ -1422,22 +1240,7 @@ export { UseGridEditingScrollResult }
|
|
|
1422
1240
|
*/
|
|
1423
1241
|
export declare const virtualPathToApiPath: (virtualPath: string, rootLabel: string) => string;
|
|
1424
1242
|
|
|
1425
|
-
/**
|
|
1426
|
-
declare
|
|
1427
|
-
/** Discriminates the content type to select the correct renderer. */
|
|
1428
|
-
type: AttachmentContentType.Visualizer;
|
|
1429
|
-
/** Iframe `src`, resolved from the matching registry entry's `url`. */
|
|
1430
|
-
url: string;
|
|
1431
|
-
/** The attachment's own MIME type (not the registry entry's raw, possibly comma-separated, `contentType`). */
|
|
1432
|
-
mimeType: string;
|
|
1433
|
-
/** Opaque attachment payload consumed by the visualizer. */
|
|
1434
|
-
data: unknown;
|
|
1435
|
-
/** Presentation layout hints (`themeId`, `width`, `height`, `mobileHeight`). */
|
|
1436
|
-
layout: CustomVisualizerDataLayout;
|
|
1437
|
-
/** postMessage protocol namespace — MUST equal the registry entry's `title`, or the iframe never receives data. */
|
|
1438
|
-
visualizerName: string;
|
|
1439
|
-
/** Milliseconds to wait for a `send()` request's response before rejecting. From the registry entry; does NOT bound the handshake. */
|
|
1440
|
-
requestTimeout?: number;
|
|
1441
|
-
}
|
|
1243
|
+
/** Returns `sections` with every root label usable as a unique first path segment, falling back to the tab id. */
|
|
1244
|
+
export declare const withRoutableRootLabels: <TSection extends DialFileManagerSection>(sections: readonly TSection[]) => TSection[];
|
|
1442
1245
|
|
|
1443
1246
|
export { }
|