@tutti-os/workspace-file-manager 0.0.196 → 0.0.198
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/README.md +15 -6
- package/dist/{chunk-KKKQGRC5.js → chunk-EI4ICYY4.js} +1 -35
- package/dist/chunk-EI4ICYY4.js.map +1 -0
- package/dist/{chunk-P4SNEQWG.js → chunk-TNFCNCZV.js} +14 -322
- package/dist/chunk-TNFCNCZV.js.map +1 -0
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/{index-C3AgiOLN.d.ts → index-D0k_jjaw.d.ts} +0 -17
- package/dist/index.d.ts +69 -50
- package/dist/index.js +198 -829
- package/dist/index.js.map +1 -1
- package/dist/services/index.d.ts +3 -3
- package/dist/services/index.js +46 -6
- package/dist/services/index.js.map +1 -1
- package/dist/{workspaceFileManagerLocations-RmwpZYaa.d.ts → workspaceFileManagerLocations-BwRMCnUY.d.ts} +5 -77
- package/package.json +4 -4
- package/dist/chunk-KKKQGRC5.js.map +0 -1
- package/dist/chunk-P4SNEQWG.js.map +0 -1
package/README.md
CHANGED
|
@@ -3,9 +3,14 @@
|
|
|
3
3
|
Reusable workspace file manager service, session state, host contracts, and
|
|
4
4
|
optional React UI.
|
|
5
5
|
|
|
6
|
+
**Authority for ownership and boundary decisions:**
|
|
7
|
+
[CONTRACT.md](./CONTRACT.md). Read that file before changing the host
|
|
8
|
+
contract, session ownership, context-menu DI, persistence schema, or
|
|
9
|
+
activation/preview boundaries.
|
|
10
|
+
|
|
6
11
|
Hosts compose the package through `createWorkspaceFileManagerService()` and
|
|
7
12
|
`createSession(...)`. A session owns the shared file-manager data state, shared
|
|
8
|
-
interaction state, preview flow,
|
|
13
|
+
interaction state, preview flow, and activation flow for one
|
|
9
14
|
workspace-scoped instance.
|
|
10
15
|
|
|
11
16
|
Hosts provide backend capabilities through `WorkspaceFileManagerHost`. The
|
|
@@ -15,8 +20,8 @@ or host absolute paths.
|
|
|
15
20
|
|
|
16
21
|
This package is intentionally a reusable frontend workspace-domain surface, not
|
|
17
22
|
only a transport-agnostic data kernel. Shared session orchestration, preview
|
|
18
|
-
flow,
|
|
19
|
-
|
|
23
|
+
flow, activation flow, and React-facing interaction state may live here when
|
|
24
|
+
they are part of the reusable file-manager experience across hosts.
|
|
20
25
|
|
|
21
26
|
The shared surface consumes host-neutral classification and loading lifecycle
|
|
22
27
|
from `@tutti-os/workspace-file-preview`. This package owns file-manager-specific
|
|
@@ -39,8 +44,10 @@ Hosts now provide one app-level i18n runtime and scope it into the file-manager
|
|
|
39
44
|
namespace, rather than hand-assembling package-local message objects.
|
|
40
45
|
|
|
41
46
|
What stays outside this package is concrete host integration: desktop preload
|
|
42
|
-
calls, tuttid transport wiring, host absolute paths,
|
|
43
|
-
|
|
47
|
+
calls, tuttid transport wiring, host absolute paths, import/export/upload
|
|
48
|
+
flows, share/exposure flows, and other product-specific integration details
|
|
49
|
+
belong in the owning host adapter. See [CONTRACT.md](./CONTRACT.md) for the full
|
|
50
|
+
ownership table and non-goals.
|
|
44
51
|
|
|
45
52
|
## Host Reuse Pattern
|
|
46
53
|
|
|
@@ -55,7 +62,9 @@ When another host wants to reuse this package:
|
|
|
55
62
|
- any other shared package i18n resources needed by the same surface
|
|
56
63
|
4. Scope that runtime into the file-manager namespace with
|
|
57
64
|
`createWorkspaceFileManagerI18nRuntime(...)`.
|
|
58
|
-
5.
|
|
65
|
+
5. Provide `resolveContextMenu` when using the React surface so blank,
|
|
66
|
+
directory, and file menus stay host-owned.
|
|
67
|
+
6. Override wording in the host runtime when the host intentionally owns the
|
|
59
68
|
product phrasing; otherwise fall back to the package defaults.
|
|
60
69
|
|
|
61
70
|
This keeps the package reusable across different hosts without pushing host
|
|
@@ -42,7 +42,6 @@ var workspaceFileManagerEn = {
|
|
|
42
42
|
deletingLabel: "Deleting...",
|
|
43
43
|
downloadFailedTitle: "Download failed",
|
|
44
44
|
downloadLabel: "Download",
|
|
45
|
-
dropToImportLabel: "Drop files here to import to the current folder",
|
|
46
45
|
emptyDirectory: "No visible files in this folder",
|
|
47
46
|
collapseFolderLabel: "Collapse folder",
|
|
48
47
|
expandFolderLabel: "Expand folder",
|
|
@@ -86,24 +85,8 @@ var workspaceFileManagerEn = {
|
|
|
86
85
|
searchPlaceholder: "Search files",
|
|
87
86
|
searchResultsLabel: "Search results",
|
|
88
87
|
sizeLabel: "Size",
|
|
89
|
-
unsupportedImportBody: "Importing local files into the workspace is not wired up in this desktop build yet.",
|
|
90
|
-
unsupportedImportTitle: "Import not available yet",
|
|
91
88
|
unsupportedViewBody: "Opening {{name}} from the file manager is not supported in this desktop build yet.",
|
|
92
89
|
unsupportedViewTitle: "Open not available yet",
|
|
93
|
-
importConflictDescription: "{{count}} file from this import already exists in this folder tree. Replace it?",
|
|
94
|
-
importConflictReplaceLabel: "Replace files",
|
|
95
|
-
importConflictReviewLabel: "Existing path",
|
|
96
|
-
importConflictSummaryFiltered: "Filtered: {{count}}",
|
|
97
|
-
importConflictSummaryIgnored: "Ignored: {{count}}",
|
|
98
|
-
importConflictSummaryReasonIgnored: "Ignored by rules: {{count}}",
|
|
99
|
-
importConflictSummaryReasonSymlink: "Skipped symlinks: {{count}}",
|
|
100
|
-
importConflictSummaryReasonSystemMetadata: "Skipped system metadata: {{count}}",
|
|
101
|
-
importConflictSummarySelected: "Selected: {{count}}",
|
|
102
|
-
importConflictTitle: "Replace existing file?",
|
|
103
|
-
importFailedTitle: "Import failed",
|
|
104
|
-
importLabel: "Import",
|
|
105
|
-
importTypeConflictDescription: "{{count}} import path conflicts with an existing file or folder using an incompatible type. Resolve it before retrying.",
|
|
106
|
-
importTypeConflictTitle: "Import path conflict",
|
|
107
90
|
layoutIconViewLabel: "Icon view",
|
|
108
91
|
layoutIconViewTooltipLabel: "Icon mode",
|
|
109
92
|
layoutListViewLabel: "List view",
|
|
@@ -138,7 +121,6 @@ var workspaceFileManagerZhCN = {
|
|
|
138
121
|
deletingLabel: "\u5220\u9664\u4E2D...",
|
|
139
122
|
downloadFailedTitle: "\u4E0B\u8F7D\u5931\u8D25",
|
|
140
123
|
downloadLabel: "\u4E0B\u8F7D",
|
|
141
|
-
dropToImportLabel: "\u5C06\u6587\u4EF6\u62D6\u5230\u8FD9\u91CC\u4EE5\u5BFC\u5165\u5230\u5F53\u524D\u6587\u4EF6\u5939",
|
|
142
124
|
emptyDirectory: "\u8FD9\u4E2A\u6587\u4EF6\u5939\u91CC\u6CA1\u6709\u53EF\u89C1\u6587\u4EF6",
|
|
143
125
|
collapseFolderLabel: "\u6536\u8D77\u6587\u4EF6\u5939",
|
|
144
126
|
expandFolderLabel: "\u5C55\u5F00\u6587\u4EF6\u5939",
|
|
@@ -182,24 +164,8 @@ var workspaceFileManagerZhCN = {
|
|
|
182
164
|
searchPlaceholder: "\u641C\u7D22\u6587\u4EF6",
|
|
183
165
|
searchResultsLabel: "\u641C\u7D22\u7ED3\u679C",
|
|
184
166
|
sizeLabel: "\u5927\u5C0F",
|
|
185
|
-
unsupportedImportBody: "\u8FD9\u4E2A\u684C\u9762\u7248\u672C\u6682\u65F6\u8FD8\u6CA1\u6709\u628A\u672C\u5730\u6587\u4EF6\u5BFC\u5165\u5230\u5DE5\u4F5C\u533A\u7684\u94FE\u8DEF\u63A5\u901A\u3002",
|
|
186
|
-
unsupportedImportTitle: "\u6682\u4E0D\u652F\u6301\u5BFC\u5165",
|
|
187
167
|
unsupportedViewBody: "\u8FD9\u4E2A\u684C\u9762\u7248\u672C\u6682\u65F6\u8FD8\u4E0D\u652F\u6301\u76F4\u63A5\u4ECE\u6587\u4EF6\u7BA1\u7406\u5668\u6253\u5F00 {{name}}\u3002",
|
|
188
168
|
unsupportedViewTitle: "\u6682\u4E0D\u652F\u6301\u6253\u5F00",
|
|
189
|
-
importConflictDescription: "\u8FD9\u6B21\u5BFC\u5165\u91CC\u6709 {{count}} \u4E2A\u6587\u4EF6\u5728\u5F53\u524D\u76EE\u5F55\u6811\u4E2D\u5DF2\u7ECF\u5B58\u5728\u3002\u8981\u66FF\u6362\u5417\uFF1F",
|
|
190
|
-
importConflictReplaceLabel: "\u66FF\u6362\u6587\u4EF6",
|
|
191
|
-
importConflictReviewLabel: "\u73B0\u6709\u8DEF\u5F84",
|
|
192
|
-
importConflictSummaryFiltered: "\u5DF2\u8FC7\u6EE4\uFF1A{{count}}",
|
|
193
|
-
importConflictSummaryIgnored: "\u5DF2\u5FFD\u7565\uFF1A{{count}}",
|
|
194
|
-
importConflictSummaryReasonIgnored: "\u89C4\u5219\u5FFD\u7565\uFF1A{{count}}",
|
|
195
|
-
importConflictSummaryReasonSymlink: "\u5DF2\u8DF3\u8FC7\u7B26\u53F7\u94FE\u63A5\uFF1A{{count}}",
|
|
196
|
-
importConflictSummaryReasonSystemMetadata: "\u5DF2\u8DF3\u8FC7\u7CFB\u7EDF\u5143\u6570\u636E\uFF1A{{count}}",
|
|
197
|
-
importConflictSummarySelected: "\u5DF2\u9009\u62E9\uFF1A{{count}}",
|
|
198
|
-
importConflictTitle: "\u66FF\u6362\u5DF2\u6709\u6587\u4EF6\uFF1F",
|
|
199
|
-
importFailedTitle: "\u5BFC\u5165\u5931\u8D25",
|
|
200
|
-
importLabel: "\u5BFC\u5165",
|
|
201
|
-
importTypeConflictDescription: "\u8FD9\u6B21\u5BFC\u5165\u91CC\u6709 {{count}} \u4E2A\u8DEF\u5F84\u4E0E\u73B0\u6709\u6587\u4EF6\u6216\u6587\u4EF6\u5939\u7684\u7C7B\u578B\u4E0D\u517C\u5BB9\u3002\u8BF7\u5148\u5904\u7406\u540E\u518D\u91CD\u8BD5\u3002",
|
|
202
|
-
importTypeConflictTitle: "\u5BFC\u5165\u8DEF\u5F84\u51B2\u7A81",
|
|
203
169
|
layoutIconViewLabel: "\u56FE\u6807",
|
|
204
170
|
layoutIconViewTooltipLabel: "\u56FE\u6807\u6A21\u5F0F",
|
|
205
171
|
layoutListViewLabel: "\u5217\u8868",
|
|
@@ -239,4 +205,4 @@ export {
|
|
|
239
205
|
createWorkspaceFileManagerI18nRuntime,
|
|
240
206
|
resolveRevealInFolderLabel
|
|
241
207
|
};
|
|
242
|
-
//# sourceMappingURL=chunk-
|
|
208
|
+
//# sourceMappingURL=chunk-EI4ICYY4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/i18n/workspaceFileManagerI18n.ts"],"sourcesContent":["import {\n createScopedLocaleObjectsI18nModuleManifest,\n createScopedI18nRuntime,\n type I18nDictionary,\n type I18nRuntime\n} from \"@tutti-os/ui-i18n-runtime\";\n\ntype WorkspaceFileManagerI18nLocale = \"en\" | \"zh-CN\";\nexport const workspaceFileManagerI18nNamespace = \"workspaceFileManager\";\nexport const tuttiI18nModule = createScopedLocaleObjectsI18nModuleManifest({\n localeObjectByLocale: {\n en: \"workspaceFileManagerEn\",\n \"zh-CN\": \"workspaceFileManagerZhCN\"\n },\n name: \"workspace-file-manager\",\n namespace: \"workspaceFileManager\",\n sourceRoot: \"packages/workspace/file-manager/src\"\n});\n\nconst workspaceFileManagerEn = {\n backLabel: \"Back\",\n arrangeApplicationLabel: \"Application\",\n arrangeCreatedLabel: \"Created\",\n arrangeDateAddedLabel: \"Date Added\",\n arrangeKindLabel: \"Kind\",\n arrangeLastOpenedLabel: \"Last Opened\",\n arrangeMenuLabel: \"Arrange\",\n arrangeNoneLabel: \"None\",\n breadcrumbRootLabel: \"workspace\",\n cancelLabel: \"Cancel\",\n closeLabel: \"Close\",\n copyLabel: \"Copy\",\n copyPathLabel: \"Copy path\",\n copyPathSuccessTitle: \"Path copied\",\n copySuccessTitle: \"Copied to clipboard\",\n createActionLabel: \"Create\",\n createDirectoryLabel: \"New folder\",\n createDirectoryPlaceholder: \"Folder name\",\n createFileLabel: \"New file\",\n createFilePlaceholder: \"File name\",\n createNameInvalid: \"Use a valid name without path separators\",\n createNameRequired: \"Enter a name to continue\",\n clearSearchLabel: \"Clear search\",\n deleteConfirmDescription: \"Delete {{name}} from this workspace?\",\n deleteLabel: \"Delete\",\n deletingLabel: \"Deleting...\",\n downloadFailedTitle: \"Download failed\",\n downloadLabel: \"Download\",\n emptyDirectory: \"No visible files in this folder\",\n collapseFolderLabel: \"Collapse folder\",\n expandFolderLabel: \"Expand folder\",\n forwardLabel: \"Forward\",\n loading: \"Loading\",\n modifiedLabel: \"Modified\",\n nameLabel: \"Name\",\n noSearchResults: \"No files matched your search\",\n openFailedTitle: \"Open failed\",\n openLabel: \"Open\",\n openInAppBrowserLabel: \"Tutti built-in browser\",\n openInDefaultBrowserLabel: \"Default Browser\",\n openInFileViewerLabel: \"File viewer\",\n openWithLabel: \"Open With\",\n openWithLoadingLabel: \"Loading apps...\",\n openWithOtherLabel: \"Other...\",\n openWithOtherPickerPrompt: \"Choose an application to open this file:\",\n revealInFileExplorerLabel: \"Reveal in File Explorer\",\n revealInFileManagerLabel: \"Reveal in File Manager\",\n revealInFinderLabel: \"Reveal in Finder\",\n unknownErrorMessage: \"Something went wrong. Please try again.\",\n previewBinary:\n \"This file looks binary, so the preview stays read-only for now.\",\n previewDecodeFailed:\n \"We couldn't decode this file as UTF-8 text for preview.\",\n previewDirectoryLabel: \"Folder\",\n previewEmptyLabel: \"Select a file or folder to view details\",\n previewFileTooLarge:\n \"This file is larger than {{maxSize}}, so inline preview is disabled.\",\n previewLoadingLabel: \"Loading preview...\",\n previewTooLarge:\n \"This text file is larger than {{maxSize}}, so inline preview is disabled.\",\n previewUnavailableDownloadBody:\n \"Download {{name}} to open it in another environment.\",\n previewUnavailableOpenBody: \"Open {{name}} in your local app instead.\",\n previewUnavailableTitle: \"Can't preview this file\",\n previewUnsupported: \"Inline preview isn't available for this file type yet.\",\n revealFailedTitle: \"Could not reveal in file manager\",\n renameActionLabel: \"Rename\",\n renameLabel: \"Rename\",\n renamePlaceholder: \"New name\",\n refreshLabel: \"Refresh\",\n resizeLocationsSidebar: \"Resize locations sidebar\",\n resizePreviewPanel: \"Resize file details panel\",\n retryLabel: \"Retry\",\n searchPlaceholder: \"Search files\",\n searchResultsLabel: \"Search results\",\n sizeLabel: \"Size\",\n unsupportedViewBody:\n \"Opening {{name}} from the file manager is not supported in this desktop build yet.\",\n unsupportedViewTitle: \"Open not available yet\",\n layoutIconViewLabel: \"Icon view\",\n layoutIconViewTooltipLabel: \"Icon mode\",\n layoutListViewLabel: \"List view\",\n layoutListViewTooltipLabel: \"List mode\"\n} as const satisfies I18nDictionary;\n\nconst workspaceFileManagerZhCN = {\n backLabel: \"后退\",\n arrangeApplicationLabel: \"应用程序\",\n arrangeCreatedLabel: \"创建日期\",\n arrangeDateAddedLabel: \"添加日期\",\n arrangeKindLabel: \"种类\",\n arrangeLastOpenedLabel: \"上次打开日期\",\n arrangeMenuLabel: \"排列方式\",\n arrangeNoneLabel: \"无\",\n breadcrumbRootLabel: \"工作区\",\n cancelLabel: \"取消\",\n closeLabel: \"关闭\",\n copyLabel: \"复制\",\n copyPathLabel: \"复制路径\",\n copyPathSuccessTitle: \"复制成功\",\n copySuccessTitle: \"已复制到剪贴板\",\n createActionLabel: \"创建\",\n createDirectoryLabel: \"新建文件夹\",\n createDirectoryPlaceholder: \"文件夹名称\",\n createFileLabel: \"新建文件\",\n createFilePlaceholder: \"文件名称\",\n createNameInvalid: \"请输入有效名称,且不要包含路径分隔符\",\n createNameRequired: \"请输入名称后再继续\",\n clearSearchLabel: \"清空搜索\",\n deleteConfirmDescription: \"要从这个工作区删除 {{name}} 吗?\",\n deleteLabel: \"删除\",\n deletingLabel: \"删除中...\",\n downloadFailedTitle: \"下载失败\",\n downloadLabel: \"下载\",\n emptyDirectory: \"这个文件夹里没有可见文件\",\n collapseFolderLabel: \"收起文件夹\",\n expandFolderLabel: \"展开文件夹\",\n forwardLabel: \"前进\",\n loading: \"加载中\",\n modifiedLabel: \"修改时间\",\n nameLabel: \"名称\",\n noSearchResults: \"没有匹配的文件\",\n openFailedTitle: \"打开失败\",\n openLabel: \"打开\",\n openInAppBrowserLabel: \"Tutti 内置的浏览器\",\n openInDefaultBrowserLabel: \"默认浏览器\",\n openInFileViewerLabel: \"文件查看器\",\n openWithLabel: \"打开方式\",\n openWithLoadingLabel: \"正在加载应用...\",\n openWithOtherLabel: \"其他...\",\n openWithOtherPickerPrompt: \"选择用来打开此文件的应用程序:\",\n revealInFileExplorerLabel: \"在文件资源管理器中显示\",\n revealInFileManagerLabel: \"在文件管理器中显示\",\n revealInFinderLabel: \"在 Finder 中显示\",\n unknownErrorMessage: \"出了点问题,请稍后再试。\",\n previewBinary: \"这个文件更像二进制内容,当前先保持只读占位。\",\n previewDecodeFailed: \"暂时无法按 UTF-8 文本解码这个文件。\",\n previewDirectoryLabel: \"文件夹\",\n previewEmptyLabel: \"选择文件或文件夹查看详情\",\n previewFileTooLarge: \"这个文件超过了 {{maxSize}},暂时不做内联预览。\",\n previewLoadingLabel: \"正在加载预览...\",\n previewTooLarge: \"这个文本文件超过了 {{maxSize}},暂时不做内联预览。\",\n previewUnavailableDownloadBody: \"下载 {{name}} 后再在其他环境中打开。\",\n previewUnavailableOpenBody: \"改为在本地应用中打开 {{name}}。\",\n previewUnavailableTitle: \"这个文件暂时无法预览\",\n previewUnsupported: \"这种文件类型暂时还不支持内联预览。\",\n revealFailedTitle: \"无法在文件管理器中显示\",\n renameActionLabel: \"重命名\",\n renameLabel: \"重命名\",\n renamePlaceholder: \"新名称\",\n refreshLabel: \"刷新\",\n resizeLocationsSidebar: \"调整位置侧栏宽度\",\n resizePreviewPanel: \"调整文件详情面板宽度\",\n retryLabel: \"重试\",\n searchPlaceholder: \"搜索文件\",\n searchResultsLabel: \"搜索结果\",\n sizeLabel: \"大小\",\n unsupportedViewBody:\n \"这个桌面版本暂时还不支持直接从文件管理器打开 {{name}}。\",\n unsupportedViewTitle: \"暂不支持打开\",\n layoutIconViewLabel: \"图标\",\n layoutIconViewTooltipLabel: \"图标模式\",\n layoutListViewLabel: \"列表\",\n layoutListViewTooltipLabel: \"列表模式\"\n} as const satisfies I18nDictionary;\n\nexport type WorkspaceFileManagerI18nKey = keyof typeof workspaceFileManagerEn;\n\nexport type WorkspaceFileManagerI18nRuntime =\n I18nRuntime<WorkspaceFileManagerI18nKey>;\n\nconst workspaceFileManagerDefaults: Record<\n WorkspaceFileManagerI18nLocale,\n I18nDictionary\n> = {\n en: workspaceFileManagerEn,\n \"zh-CN\": workspaceFileManagerZhCN\n};\n\nexport const workspaceFileManagerI18nResources: Record<\n WorkspaceFileManagerI18nLocale,\n I18nDictionary\n> = {\n en: {\n [workspaceFileManagerI18nNamespace]: workspaceFileManagerDefaults.en\n },\n \"zh-CN\": {\n [workspaceFileManagerI18nNamespace]: workspaceFileManagerDefaults[\"zh-CN\"]\n }\n};\n\nexport function createWorkspaceFileManagerI18nRuntime(\n runtime: I18nRuntime<string>\n): WorkspaceFileManagerI18nRuntime {\n return createScopedI18nRuntime<WorkspaceFileManagerI18nKey>(\n runtime,\n workspaceFileManagerI18nNamespace\n );\n}\n\nexport function resolveRevealInFolderLabel(\n copy: WorkspaceFileManagerI18nRuntime,\n platform: NodeJS.Platform\n): string {\n if (platform === \"darwin\") {\n return copy.t(\"revealInFinderLabel\");\n }\n if (platform === \"win32\") {\n return copy.t(\"revealInFileExplorerLabel\");\n }\n return copy.t(\"revealInFileManagerLabel\");\n}\n"],"mappings":"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","names":[]}
|
|
@@ -307,7 +307,6 @@ function createWorkspaceFileManagerStore(input) {
|
|
|
307
307
|
directoryExpansionByPath: {},
|
|
308
308
|
inlineRenameEntryPath: null,
|
|
309
309
|
inlineRenameValidation: null,
|
|
310
|
-
dragDepth: 0,
|
|
311
310
|
entries: [],
|
|
312
311
|
error: null,
|
|
313
312
|
expandedDirectoryPaths: {},
|
|
@@ -326,7 +325,6 @@ function createWorkspaceFileManagerStore(input) {
|
|
|
326
325
|
selectedLocationId,
|
|
327
326
|
selectedPath: null,
|
|
328
327
|
unsupportedDialog: null,
|
|
329
|
-
importConflictDialog: null,
|
|
330
328
|
workspaceID: input.workspaceID
|
|
331
329
|
});
|
|
332
330
|
}
|
|
@@ -545,7 +543,6 @@ var WorkspaceFileManagerActivationController = class {
|
|
|
545
543
|
this.store.unsupportedDialog = null;
|
|
546
544
|
return;
|
|
547
545
|
}
|
|
548
|
-
this.store.importConflictDialog = null;
|
|
549
546
|
this.store.unsupportedDialog = {
|
|
550
547
|
actions: result.actions ?? null,
|
|
551
548
|
entryPath: entry.path,
|
|
@@ -1037,119 +1034,6 @@ function resolveWorkspaceFileManagerPreviewReadonlyMessage(copy, reason, maxSize
|
|
|
1037
1034
|
}
|
|
1038
1035
|
}
|
|
1039
1036
|
|
|
1040
|
-
// src/services/internal/workspaceFileManagerImportController.ts
|
|
1041
|
-
var WorkspaceFileManagerImportController = class {
|
|
1042
|
-
applyHostActionResult;
|
|
1043
|
-
copy;
|
|
1044
|
-
host;
|
|
1045
|
-
refresh;
|
|
1046
|
-
resolveErrorMessage;
|
|
1047
|
-
store;
|
|
1048
|
-
constructor(input) {
|
|
1049
|
-
this.applyHostActionResult = input.applyHostActionResult;
|
|
1050
|
-
this.copy = input.copy;
|
|
1051
|
-
this.host = input.host;
|
|
1052
|
-
this.refresh = input.refresh;
|
|
1053
|
-
this.resolveErrorMessage = input.resolveErrorMessage;
|
|
1054
|
-
this.store = input.store;
|
|
1055
|
-
}
|
|
1056
|
-
async confirmImportConflict() {
|
|
1057
|
-
const importConflictDialog = this.store.importConflictDialog;
|
|
1058
|
-
if (!importConflictDialog?.onConfirm) {
|
|
1059
|
-
return;
|
|
1060
|
-
}
|
|
1061
|
-
this.store.busyAction = "import";
|
|
1062
|
-
try {
|
|
1063
|
-
const result = await importConflictDialog.onConfirm();
|
|
1064
|
-
this.store.importConflictDialog = null;
|
|
1065
|
-
this.applyHostActionResult(result, { kind: "import" });
|
|
1066
|
-
} finally {
|
|
1067
|
-
this.store.busyAction = null;
|
|
1068
|
-
}
|
|
1069
|
-
}
|
|
1070
|
-
async importDroppedFiles(dataTransfer, targetDirectoryPath) {
|
|
1071
|
-
if (!this.host.resolveDroppedPaths || !this.host.importPaths) {
|
|
1072
|
-
const result = {
|
|
1073
|
-
message: this.copy().t("unsupportedImportBody"),
|
|
1074
|
-
supported: false,
|
|
1075
|
-
title: this.copy().t("unsupportedImportTitle")
|
|
1076
|
-
};
|
|
1077
|
-
this.applyHostActionResult(result, { kind: "import" });
|
|
1078
|
-
return result;
|
|
1079
|
-
}
|
|
1080
|
-
const sourcePaths = this.host.resolveDroppedPaths(dataTransfer);
|
|
1081
|
-
if (sourcePaths.length === 0) {
|
|
1082
|
-
return { supported: true };
|
|
1083
|
-
}
|
|
1084
|
-
this.store.busyAction = "import";
|
|
1085
|
-
try {
|
|
1086
|
-
const result = await this.wrapImportAction(
|
|
1087
|
-
() => this.host.importPaths?.(
|
|
1088
|
-
this.store.workspaceID,
|
|
1089
|
-
targetDirectoryPath,
|
|
1090
|
-
sourcePaths
|
|
1091
|
-
) ?? Promise.resolve({ supported: true })
|
|
1092
|
-
);
|
|
1093
|
-
this.applyHostActionResult(result, { kind: "import" });
|
|
1094
|
-
return result;
|
|
1095
|
-
} finally {
|
|
1096
|
-
this.store.busyAction = null;
|
|
1097
|
-
}
|
|
1098
|
-
}
|
|
1099
|
-
async importFiles(targetDirectoryPath) {
|
|
1100
|
-
if (!this.host.importFiles) {
|
|
1101
|
-
const result = {
|
|
1102
|
-
message: this.copy().t("unsupportedImportBody"),
|
|
1103
|
-
supported: false,
|
|
1104
|
-
title: this.copy().t("unsupportedImportTitle")
|
|
1105
|
-
};
|
|
1106
|
-
this.applyHostActionResult(result, { kind: "import" });
|
|
1107
|
-
return result;
|
|
1108
|
-
}
|
|
1109
|
-
this.store.busyAction = "import";
|
|
1110
|
-
try {
|
|
1111
|
-
const result = await this.wrapImportAction(
|
|
1112
|
-
() => this.host.importFiles?.(
|
|
1113
|
-
this.store.workspaceID,
|
|
1114
|
-
targetDirectoryPath
|
|
1115
|
-
) ?? Promise.resolve({ supported: true })
|
|
1116
|
-
);
|
|
1117
|
-
this.applyHostActionResult(result, { kind: "import" });
|
|
1118
|
-
return result;
|
|
1119
|
-
} finally {
|
|
1120
|
-
this.store.busyAction = null;
|
|
1121
|
-
}
|
|
1122
|
-
}
|
|
1123
|
-
async wrapImportAction(action) {
|
|
1124
|
-
try {
|
|
1125
|
-
const result = await action();
|
|
1126
|
-
if (result.importConflict) {
|
|
1127
|
-
const importConflict = result.importConflict;
|
|
1128
|
-
const importConflictConfirm = importConflict.onConfirm;
|
|
1129
|
-
return {
|
|
1130
|
-
...result,
|
|
1131
|
-
importConflict: {
|
|
1132
|
-
...importConflict,
|
|
1133
|
-
onConfirm: importConflictConfirm ? async () => {
|
|
1134
|
-
const confirmResult = await importConflictConfirm();
|
|
1135
|
-
await this.refresh();
|
|
1136
|
-
return confirmResult;
|
|
1137
|
-
} : void 0
|
|
1138
|
-
}
|
|
1139
|
-
};
|
|
1140
|
-
}
|
|
1141
|
-
await this.refresh();
|
|
1142
|
-
return result;
|
|
1143
|
-
} catch (error) {
|
|
1144
|
-
return {
|
|
1145
|
-
message: this.resolveErrorMessage(error),
|
|
1146
|
-
supported: false,
|
|
1147
|
-
title: this.copy().t("importFailedTitle")
|
|
1148
|
-
};
|
|
1149
|
-
}
|
|
1150
|
-
}
|
|
1151
|
-
};
|
|
1152
|
-
|
|
1153
1037
|
// src/services/internal/workspaceFileManagerTreeController.ts
|
|
1154
1038
|
var WorkspaceFileManagerTreeController = class {
|
|
1155
1039
|
host;
|
|
@@ -1257,7 +1141,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1257
1141
|
lastObservedPersistedState;
|
|
1258
1142
|
lastObservedSelectedPath;
|
|
1259
1143
|
lastRevealRequestID = null;
|
|
1260
|
-
onHostActionMessage;
|
|
1261
1144
|
onMutationErrorMessage;
|
|
1262
1145
|
searchRequestSeq = 0;
|
|
1263
1146
|
activationController;
|
|
@@ -1268,12 +1151,10 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1268
1151
|
treeController;
|
|
1269
1152
|
persistence;
|
|
1270
1153
|
unsubscribeStore = null;
|
|
1271
|
-
importController;
|
|
1272
1154
|
openWithApplicationsCache = new WorkspaceFileOpenWithApplicationsCache();
|
|
1273
1155
|
constructor(input) {
|
|
1274
1156
|
this.copy = input.copy;
|
|
1275
1157
|
this.host = input.host;
|
|
1276
|
-
this.onHostActionMessage = input.onHostActionMessage;
|
|
1277
1158
|
this.onMutationErrorMessage = input.onMutationErrorMessage;
|
|
1278
1159
|
this.persistence = input.persistence;
|
|
1279
1160
|
this.store = input.store;
|
|
@@ -1308,14 +1189,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1308
1189
|
resolveErrorMessage: (error, overrides) => this.resolveErrorMessage(error, overrides),
|
|
1309
1190
|
store: this.store
|
|
1310
1191
|
});
|
|
1311
|
-
this.importController = new WorkspaceFileManagerImportController({
|
|
1312
|
-
applyHostActionResult: (result, fallback) => this.applyHostActionResult(result, fallback),
|
|
1313
|
-
copy: () => this.copy,
|
|
1314
|
-
host: input.host,
|
|
1315
|
-
refresh: () => this.refresh(),
|
|
1316
|
-
resolveErrorMessage: (error) => this.resolveErrorMessage(error),
|
|
1317
|
-
store: this.store
|
|
1318
|
-
});
|
|
1319
1192
|
this.lastObservedEntries = this.store.entries;
|
|
1320
1193
|
this.lastObservedPersistedState = serializePersistedState(
|
|
1321
1194
|
this.getPersistedState()
|
|
@@ -1333,7 +1206,7 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1333
1206
|
return;
|
|
1334
1207
|
}
|
|
1335
1208
|
this.lastRevealRequestID = intent.requestID;
|
|
1336
|
-
if (intent.mode === "open
|
|
1209
|
+
if (intent.mode === "open") {
|
|
1337
1210
|
await this.loadDirectory(intent.path);
|
|
1338
1211
|
return;
|
|
1339
1212
|
}
|
|
@@ -1373,7 +1246,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1373
1246
|
this.store.inlineRenameEntryPath = null;
|
|
1374
1247
|
this.store.inlineRenameValidation = null;
|
|
1375
1248
|
this.store.unsupportedDialog = null;
|
|
1376
|
-
this.store.importConflictDialog = null;
|
|
1377
1249
|
}
|
|
1378
1250
|
closeUnsupportedDialog() {
|
|
1379
1251
|
if (this.store.busyAction === "view") {
|
|
@@ -1381,12 +1253,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1381
1253
|
}
|
|
1382
1254
|
this.store.unsupportedDialog = null;
|
|
1383
1255
|
}
|
|
1384
|
-
closeImportConflictDialog() {
|
|
1385
|
-
if (this.store.busyAction === "import") {
|
|
1386
|
-
return;
|
|
1387
|
-
}
|
|
1388
|
-
this.store.importConflictDialog = null;
|
|
1389
|
-
}
|
|
1390
1256
|
async confirmCreateDialog() {
|
|
1391
1257
|
if (this.isReadOnlyLocationSelected()) {
|
|
1392
1258
|
return;
|
|
@@ -1465,9 +1331,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1465
1331
|
this.store.busyAction = null;
|
|
1466
1332
|
}
|
|
1467
1333
|
}
|
|
1468
|
-
async confirmImportConflict() {
|
|
1469
|
-
await this.importController.confirmImportConflict();
|
|
1470
|
-
}
|
|
1471
1334
|
async createDirectory(path) {
|
|
1472
1335
|
if (this.isReadOnlyLocationSelected()) {
|
|
1473
1336
|
return;
|
|
@@ -1486,9 +1349,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1486
1349
|
}
|
|
1487
1350
|
await this.mutationController.deleteSelected();
|
|
1488
1351
|
}
|
|
1489
|
-
decrementDragDepth() {
|
|
1490
|
-
this.store.dragDepth = this.store.dragDepth <= 1 ? 0 : this.store.dragDepth - 1;
|
|
1491
|
-
}
|
|
1492
1352
|
dispose() {
|
|
1493
1353
|
this.isDisposed = true;
|
|
1494
1354
|
this.hasInitialized = false;
|
|
@@ -1514,45 +1374,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1514
1374
|
async handleActivationFallbackAction(action) {
|
|
1515
1375
|
await this.activationController.handleFallbackAction(action);
|
|
1516
1376
|
}
|
|
1517
|
-
async exportEntry(entry) {
|
|
1518
|
-
if (!this.host.exportEntry) {
|
|
1519
|
-
return { supported: false };
|
|
1520
|
-
}
|
|
1521
|
-
this.store.busyAction = "export";
|
|
1522
|
-
this.store.error = null;
|
|
1523
|
-
try {
|
|
1524
|
-
const result = await this.host.exportEntry({
|
|
1525
|
-
entry,
|
|
1526
|
-
workspaceID: this.store.workspaceID
|
|
1527
|
-
});
|
|
1528
|
-
this.applyHostActionResult(result, {
|
|
1529
|
-
actionKind: "export",
|
|
1530
|
-
entry,
|
|
1531
|
-
kind: "view"
|
|
1532
|
-
});
|
|
1533
|
-
return result;
|
|
1534
|
-
} catch (error) {
|
|
1535
|
-
const result = {
|
|
1536
|
-
message: this.resolveErrorMessage(error),
|
|
1537
|
-
supported: false,
|
|
1538
|
-
title: this.copy.t("downloadFailedTitle")
|
|
1539
|
-
};
|
|
1540
|
-
this.applyHostActionResult(result, {
|
|
1541
|
-
actionKind: "export",
|
|
1542
|
-
entry,
|
|
1543
|
-
kind: "view"
|
|
1544
|
-
});
|
|
1545
|
-
return result;
|
|
1546
|
-
} finally {
|
|
1547
|
-
this.store.busyAction = null;
|
|
1548
|
-
}
|
|
1549
|
-
}
|
|
1550
|
-
incrementDragDepth() {
|
|
1551
|
-
if (!this.isActive) {
|
|
1552
|
-
return;
|
|
1553
|
-
}
|
|
1554
|
-
this.store.dragDepth += 1;
|
|
1555
|
-
}
|
|
1556
1377
|
async initialize() {
|
|
1557
1378
|
if (this.hasInitialized) {
|
|
1558
1379
|
return;
|
|
@@ -1764,9 +1585,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1764
1585
|
await this.navigationController.revealPath(path);
|
|
1765
1586
|
this.syncSelectedDirectoryLocation();
|
|
1766
1587
|
}
|
|
1767
|
-
resetDragDepth() {
|
|
1768
|
-
this.store.dragDepth = 0;
|
|
1769
|
-
}
|
|
1770
1588
|
async search(query) {
|
|
1771
1589
|
const requestID = ++this.searchRequestSeq;
|
|
1772
1590
|
this.store.searchQuery = query;
|
|
@@ -1842,7 +1660,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1842
1660
|
}
|
|
1843
1661
|
this.store.contextMenu = null;
|
|
1844
1662
|
this.store.contextMenuEntryPath = null;
|
|
1845
|
-
this.store.dragDepth = 0;
|
|
1846
1663
|
}
|
|
1847
1664
|
setI18nRuntime(copy) {
|
|
1848
1665
|
if (this.copy === copy) {
|
|
@@ -1892,44 +1709,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
1892
1709
|
clearInlineRenameValidation() {
|
|
1893
1710
|
this.store.inlineRenameValidation = null;
|
|
1894
1711
|
}
|
|
1895
|
-
async importDroppedFiles(dataTransfer, targetDirectoryPath) {
|
|
1896
|
-
if (this.isReadOnlyLocationSelected()) {
|
|
1897
|
-
return { supported: false };
|
|
1898
|
-
}
|
|
1899
|
-
return this.importController.importDroppedFiles(
|
|
1900
|
-
dataTransfer,
|
|
1901
|
-
targetDirectoryPath
|
|
1902
|
-
);
|
|
1903
|
-
}
|
|
1904
|
-
async importFiles(targetDirectoryPath) {
|
|
1905
|
-
if (this.isReadOnlyLocationSelected()) {
|
|
1906
|
-
return { supported: false };
|
|
1907
|
-
}
|
|
1908
|
-
return this.importController.importFiles(targetDirectoryPath);
|
|
1909
|
-
}
|
|
1910
|
-
applyHostActionResult(result, fallback) {
|
|
1911
|
-
if (!result) {
|
|
1912
|
-
return;
|
|
1913
|
-
}
|
|
1914
|
-
this.notifyHostActionMessages(result, fallback);
|
|
1915
|
-
if (result.importConflict) {
|
|
1916
|
-
this.store.unsupportedDialog = null;
|
|
1917
|
-
this.store.importConflictDialog = result.importConflict;
|
|
1918
|
-
return;
|
|
1919
|
-
}
|
|
1920
|
-
if (result.supported === false) {
|
|
1921
|
-
this.store.importConflictDialog = null;
|
|
1922
|
-
this.store.unsupportedDialog = {
|
|
1923
|
-
entryPath: "entry" in fallback ? fallback.entry.path : null,
|
|
1924
|
-
kind: fallback.kind,
|
|
1925
|
-
message: result.message,
|
|
1926
|
-
title: result.title
|
|
1927
|
-
};
|
|
1928
|
-
return;
|
|
1929
|
-
}
|
|
1930
|
-
this.store.unsupportedDialog = null;
|
|
1931
|
-
this.store.importConflictDialog = null;
|
|
1932
|
-
}
|
|
1933
1712
|
hasLoadedDirectoryState() {
|
|
1934
1713
|
return this.store.error !== null || this.store.entries.length > 0 || this.store.selectedPath !== null;
|
|
1935
1714
|
}
|
|
@@ -2070,42 +1849,6 @@ var DefaultWorkspaceFileManagerSession = class {
|
|
|
2070
1849
|
score: listing.entries.length - index
|
|
2071
1850
|
}));
|
|
2072
1851
|
}
|
|
2073
|
-
notifyHostActionMessages(result, fallback) {
|
|
2074
|
-
if (!this.onHostActionMessage) {
|
|
2075
|
-
return;
|
|
2076
|
-
}
|
|
2077
|
-
const entry = "entry" in fallback ? fallback.entry : null;
|
|
2078
|
-
const actionKind = fallback.actionKind ?? (fallback.kind === "import" ? "import" : "export");
|
|
2079
|
-
if (result.cancelledMessage?.trim()) {
|
|
2080
|
-
this.notifyHostActionMessage(actionKind, entry, "cancelled", result);
|
|
2081
|
-
return;
|
|
2082
|
-
}
|
|
2083
|
-
if (result.supported === false || result.importConflict) {
|
|
2084
|
-
return;
|
|
2085
|
-
}
|
|
2086
|
-
if (result.completedMessage?.trim()) {
|
|
2087
|
-
this.notifyHostActionMessage(actionKind, entry, "completed", result);
|
|
2088
|
-
return;
|
|
2089
|
-
}
|
|
2090
|
-
this.notifyHostActionMessage(actionKind, entry, "started", result);
|
|
2091
|
-
}
|
|
2092
|
-
notifyHostActionMessage(actionKind, entry, status, result) {
|
|
2093
|
-
const messageByStatus = {
|
|
2094
|
-
cancelled: "cancelledMessage",
|
|
2095
|
-
completed: "completedMessage",
|
|
2096
|
-
started: "startedMessage"
|
|
2097
|
-
};
|
|
2098
|
-
const message = result[messageByStatus[status]]?.trim();
|
|
2099
|
-
if (!message) {
|
|
2100
|
-
return;
|
|
2101
|
-
}
|
|
2102
|
-
this.onHostActionMessage?.({
|
|
2103
|
-
actionKind,
|
|
2104
|
-
entry,
|
|
2105
|
-
message,
|
|
2106
|
-
status
|
|
2107
|
-
});
|
|
2108
|
-
}
|
|
2109
1852
|
observeStore() {
|
|
2110
1853
|
if (this.unsubscribeStore) {
|
|
2111
1854
|
return;
|
|
@@ -2196,7 +1939,6 @@ var DefaultWorkspaceFileManagerService = class {
|
|
|
2196
1939
|
return new DefaultWorkspaceFileManagerSession({
|
|
2197
1940
|
copy: input.i18n,
|
|
2198
1941
|
host: input.host,
|
|
2199
|
-
onHostActionMessage: input.onHostActionMessage,
|
|
2200
1942
|
onMutationErrorMessage: input.onMutationErrorMessage,
|
|
2201
1943
|
persistence: input.persistence,
|
|
2202
1944
|
resolveFileDefaultOpener: input.resolveFileDefaultOpener,
|
|
@@ -2210,9 +1952,6 @@ function capabilitiesFromHost(input) {
|
|
|
2210
1952
|
canCreateDirectory: input.host.createDirectory !== void 0,
|
|
2211
1953
|
canCreateFile: input.host.createFile !== void 0,
|
|
2212
1954
|
canDelete: input.host.deleteEntry !== void 0,
|
|
2213
|
-
canExport: input.host.exportEntry !== void 0,
|
|
2214
|
-
canImportFromDrop: input.host.resolveDroppedPaths !== void 0 && input.host.importPaths !== void 0,
|
|
2215
|
-
canImportFromPicker: input.host.importFiles !== void 0,
|
|
2216
1955
|
canMove: input.host.moveEntry !== void 0,
|
|
2217
1956
|
canOpenInAppBrowser: input.host.openFileInAppBrowser !== void 0,
|
|
2218
1957
|
canOpenInDefaultBrowser: input.host.openFileInDefaultBrowser !== void 0,
|
|
@@ -2229,55 +1968,12 @@ function createWorkspaceFileManagerService() {
|
|
|
2229
1968
|
return new DefaultWorkspaceFileManagerService();
|
|
2230
1969
|
}
|
|
2231
1970
|
|
|
2232
|
-
// src/services/
|
|
1971
|
+
// src/services/workspaceFileEntryIconPolicy.ts
|
|
2233
1972
|
import {
|
|
2234
1973
|
classifyWorkspaceFilePreviewKind,
|
|
2235
1974
|
isTextDegradablePreviewKind,
|
|
2236
|
-
isWorkspaceFileBrowserHtmlExtension,
|
|
2237
|
-
isWorkspaceFileImageExtension,
|
|
2238
1975
|
resolveWorkspaceFileExtension as resolveWorkspaceFileExtension2,
|
|
2239
|
-
resolveWorkspaceFileVisualKind
|
|
2240
|
-
workspaceFileBrowserVideoExtensions
|
|
2241
|
-
} from "@tutti-os/workspace-file-preview";
|
|
2242
|
-
var workspaceFileVideoHandlerCollisionExtensions = /* @__PURE__ */ new Set(["ts"]);
|
|
2243
|
-
function isWorkspaceFileBrowserOpenable(entry) {
|
|
2244
|
-
if (entry.kind !== "file") {
|
|
2245
|
-
return false;
|
|
2246
|
-
}
|
|
2247
|
-
const extension = resolveWorkspaceFileExtension2(
|
|
2248
|
-
entry.path || entry.name || ""
|
|
2249
|
-
);
|
|
2250
|
-
if (extension === "pdf" || isWorkspaceFileBrowserHtmlExtension(extension) || isWorkspaceFileImageExtension(extension) || workspaceFileBrowserVideoExtensions.has(extension)) {
|
|
2251
|
-
return true;
|
|
2252
|
-
}
|
|
2253
|
-
return isTextDegradablePreviewKind(classifyWorkspaceFilePreviewKind(entry));
|
|
2254
|
-
}
|
|
2255
|
-
function shouldFilterVideoPlayersForOpenWith(entry) {
|
|
2256
|
-
if (entry.kind !== "file") {
|
|
2257
|
-
return false;
|
|
2258
|
-
}
|
|
2259
|
-
const visualKind = resolveWorkspaceFileVisualKind(entry);
|
|
2260
|
-
if (visualKind === "video") {
|
|
2261
|
-
return false;
|
|
2262
|
-
}
|
|
2263
|
-
const extension = resolveWorkspaceFileExtension2(
|
|
2264
|
-
entry.path || entry.name || ""
|
|
2265
|
-
);
|
|
2266
|
-
if (workspaceFileVideoHandlerCollisionExtensions.has(extension)) {
|
|
2267
|
-
return true;
|
|
2268
|
-
}
|
|
2269
|
-
if (visualKind === "code" || visualKind === "markdown") {
|
|
2270
|
-
return true;
|
|
2271
|
-
}
|
|
2272
|
-
return isTextDegradablePreviewKind(classifyWorkspaceFilePreviewKind(entry));
|
|
2273
|
-
}
|
|
2274
|
-
|
|
2275
|
-
// src/services/workspaceFileEntryIconPolicy.ts
|
|
2276
|
-
import {
|
|
2277
|
-
classifyWorkspaceFilePreviewKind as classifyWorkspaceFilePreviewKind2,
|
|
2278
|
-
isTextDegradablePreviewKind as isTextDegradablePreviewKind2,
|
|
2279
|
-
resolveWorkspaceFileExtension as resolveWorkspaceFileExtension3,
|
|
2280
|
-
resolveWorkspaceFileVisualKind as resolveWorkspaceFileVisualKind2
|
|
1976
|
+
resolveWorkspaceFileVisualKind
|
|
2281
1977
|
} from "@tutti-os/workspace-file-preview";
|
|
2282
1978
|
var defaultApplicationIconExtensions = /* @__PURE__ */ new Set([
|
|
2283
1979
|
"ai",
|
|
@@ -2320,13 +2016,13 @@ function shouldUseWorkspaceFileExtensionDocumentIcon(entry) {
|
|
|
2320
2016
|
if (entry.kind !== "file") {
|
|
2321
2017
|
return false;
|
|
2322
2018
|
}
|
|
2323
|
-
const visualKind =
|
|
2324
|
-
const extension =
|
|
2325
|
-
return visualKind === "code" || visualKind === "markdown" || extensionDocumentIconExtensions.has(extension) ||
|
|
2019
|
+
const visualKind = resolveWorkspaceFileVisualKind(entry);
|
|
2020
|
+
const extension = resolveWorkspaceFileExtension2(entry.name).toLowerCase();
|
|
2021
|
+
return visualKind === "code" || visualKind === "markdown" || extensionDocumentIconExtensions.has(extension) || isTextDegradablePreviewKind(classifyWorkspaceFilePreviewKind(entry));
|
|
2326
2022
|
}
|
|
2327
2023
|
function shouldUseWorkspaceFileArchiveIcon(entry) {
|
|
2328
2024
|
return entry.kind === "file" && archiveIconExtensions.has(
|
|
2329
|
-
|
|
2025
|
+
resolveWorkspaceFileExtension2(entry.name).toLowerCase()
|
|
2330
2026
|
);
|
|
2331
2027
|
}
|
|
2332
2028
|
function isWorkspaceApplicationBundle(entry) {
|
|
@@ -2336,7 +2032,7 @@ function resolveWorkspaceFileDefaultApplicationIconExtension(entry) {
|
|
|
2336
2032
|
if (entry.kind !== "file") {
|
|
2337
2033
|
return null;
|
|
2338
2034
|
}
|
|
2339
|
-
const extension =
|
|
2035
|
+
const extension = resolveWorkspaceFileExtension2(entry.name).toLowerCase();
|
|
2340
2036
|
return defaultApplicationIconExtensions.has(extension) ? extension : null;
|
|
2341
2037
|
}
|
|
2342
2038
|
function resolveWorkspaceFileEntryIconCacheKey(entry) {
|
|
@@ -2353,13 +2049,13 @@ function resolveWorkspaceFileEntryIconCacheKey(entry) {
|
|
|
2353
2049
|
return `default:${entry.path}:${entry.mtimeMs ?? 0}`;
|
|
2354
2050
|
}
|
|
2355
2051
|
function shouldResolveWorkspaceFileImageThumbnail(entry) {
|
|
2356
|
-
return entry.kind === "file" &&
|
|
2052
|
+
return entry.kind === "file" && resolveWorkspaceFileVisualKind(entry) === "image";
|
|
2357
2053
|
}
|
|
2358
2054
|
|
|
2359
2055
|
// src/ui/workspaceFileManagerArrangeMode.ts
|
|
2360
2056
|
import {
|
|
2361
|
-
resolveWorkspaceFileExtension as
|
|
2362
|
-
resolveWorkspaceFileVisualKind as
|
|
2057
|
+
resolveWorkspaceFileExtension as resolveWorkspaceFileExtension3,
|
|
2058
|
+
resolveWorkspaceFileVisualKind as resolveWorkspaceFileVisualKind2
|
|
2363
2059
|
} from "@tutti-os/workspace-file-preview";
|
|
2364
2060
|
var workspaceFileManagerArrangeModeStorageKey = "tutti.workspace-file-manager.arrange-mode";
|
|
2365
2061
|
var workspaceFileManagerArrangeModes = /* @__PURE__ */ new Set([
|
|
@@ -2463,7 +2159,7 @@ function resolveEntryKindGroup(entry) {
|
|
|
2463
2159
|
if (entry.kind === "directory") {
|
|
2464
2160
|
return "directory";
|
|
2465
2161
|
}
|
|
2466
|
-
return
|
|
2162
|
+
return resolveWorkspaceFileVisualKind2(entry);
|
|
2467
2163
|
}
|
|
2468
2164
|
function resolveEntryApplicationGroup(entry) {
|
|
2469
2165
|
if (entry.kind === "directory") {
|
|
@@ -2472,11 +2168,10 @@ function resolveEntryApplicationGroup(entry) {
|
|
|
2472
2168
|
if (entry.name.trim().toLowerCase().endsWith(".app")) {
|
|
2473
2169
|
return "application";
|
|
2474
2170
|
}
|
|
2475
|
-
return
|
|
2171
|
+
return resolveWorkspaceFileExtension3(entry.name) || resolveEntryKindGroup(entry);
|
|
2476
2172
|
}
|
|
2477
2173
|
|
|
2478
2174
|
export {
|
|
2479
|
-
resolveWorkspaceFileActivationTarget,
|
|
2480
2175
|
formatWorkspaceFileBytes,
|
|
2481
2176
|
formatWorkspaceFileModifiedTime,
|
|
2482
2177
|
splitWorkspaceFileName,
|
|
@@ -2493,9 +2188,6 @@ export {
|
|
|
2493
2188
|
resolveWorkspaceFileOpenWithCacheKey,
|
|
2494
2189
|
WorkspaceFileOpenWithApplicationsCache,
|
|
2495
2190
|
createWorkspaceFileManagerService,
|
|
2496
|
-
workspaceFileVideoHandlerCollisionExtensions,
|
|
2497
|
-
isWorkspaceFileBrowserOpenable,
|
|
2498
|
-
shouldFilterVideoPlayersForOpenWith,
|
|
2499
2191
|
shouldResolveWorkspaceFileEntryIcon,
|
|
2500
2192
|
shouldUseWorkspaceFileExtensionDocumentIcon,
|
|
2501
2193
|
shouldUseWorkspaceFileArchiveIcon,
|
|
@@ -2507,4 +2199,4 @@ export {
|
|
|
2507
2199
|
sortWorkspaceFileEntriesForArrangeMode,
|
|
2508
2200
|
resolveWorkspaceFileEntryArrangeDateMs
|
|
2509
2201
|
};
|
|
2510
|
-
//# sourceMappingURL=chunk-
|
|
2202
|
+
//# sourceMappingURL=chunk-TNFCNCZV.js.map
|