@eclipse-docks/core 0.7.139 → 0.7.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.js +3 -3
- package/dist/{api-3h__hDci.js → api-BZXW896G.js} +122 -49
- package/dist/api-BZXW896G.js.map +1 -0
- package/dist/components/filebrowser.d.ts +12 -1
- package/dist/components/filebrowser.d.ts.map +1 -1
- package/dist/components/tasks.d.ts.map +1 -1
- package/dist/core/filesys/common.d.ts +1 -0
- package/dist/core/filesys/common.d.ts.map +1 -1
- package/dist/{filebrowser.de-LWsrI9xj.js → filebrowser.de-BfFcNr19.js} +13 -3
- package/dist/{filebrowser.de-LWsrI9xj.js.map → filebrowser.de-BfFcNr19.js.map} +1 -1
- package/dist/{filebrowser.en-C02vpzAs.js → filebrowser.en-CLd5Mccb.js} +13 -3
- package/dist/{filebrowser.en-C02vpzAs.js.map → filebrowser.en-CLd5Mccb.js.map} +1 -1
- package/dist/fs-access-B1bmJ5U0.js +2 -0
- package/dist/{fs-access-Cjcg0_Me.js → fs-access-CrktZo-_.js} +2 -1
- package/dist/fs-access-CrktZo-_.js.map +1 -0
- package/dist/index.js +3 -3
- package/dist/parts/index.js +1 -1
- package/dist/{parts-DMjNqL4o.js → parts-KvjEFJ7v.js} +4 -4
- package/dist/{parts-DMjNqL4o.js.map → parts-KvjEFJ7v.js.map} +1 -1
- package/package.json +2 -2
- package/src/components/filebrowser.de.json +6 -1
- package/src/components/filebrowser.en.json +6 -1
- package/src/components/filebrowser.ts +120 -28
- package/src/components/tasks.ts +16 -15
- package/src/core/filesys/common.ts +2 -1
- package/dist/api-3h__hDci.js.map +0 -1
- package/dist/fs-access-Cjcg0_Me.js.map +0 -1
- package/dist/fs-access-Dp9Fwsxk.js +0 -2
package/dist/api/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { $ as COMMAND_SAVE, A as VIEW_LOG_TERMINAL, C as TOOLBAR_FULLSCREEN, D as TOOLBAR_TASKS, E as TOOLBAR_LAYOUT_SWITCHER, F as formDialog, G as sanitizeHtml, H as DocksDialogContent, I as formDialogRequired, J as extensionRegistry, L as validateFormDialogFields, M as navigableInfoDialog, N as confirmDialog, O as TOOLBAR_THEME_SWITCHER, P as infoDialog, Q as appSettings, R as promptDialog, S as TOOLBAR_FAST_VIEWS, T as TOOLBAR_LANGUAGE_SELECTOR, U as DocksElement, V as dialogService, W as parseMarkdownHtml, X as taskService, Y as esmShService, Z as TOPIC_SETTINGS_CHANGED, _ as CTXMENU_FILEBROWSER_DELETE, _t as TOOLBAR_MAIN, a as renderDropdownItem, at as PANEL_BOTTOM, b as SYSTEM_DEFAULT_FILE_ICONS, c as parseIconSpec, ct as SIDEBAR_MAIN, d as DocksContainer, dt as SYSTEM_ATTRIBUTIONS, et as HIDE_DOT_RESOURCE, f as ABOUT_TAB_ATTRIBUTIONS, ft as SYSTEM_LAYOUTS, g as ATTRIBUTION_FONT_AWESOME, gt as TOOLBAR_BOTTOM_END, h as ATTRIBUTION_ECLIPSE_DOCKS, ht as TOOLBAR_BOTTOM_CENTER, i as renderDropdownContributions, it as EDITOR_AREA_MAIN, j as filebrowserDialog, k as VIEW_FILEBROWSER, l as versionInfoDialog, lt as SIDEBAR_MAIN_BOTTOM, m as ABOUT_TAB_RELEASE, mt as TOOLBAR_BOTTOM, n as renderCommandContribution, o as renderDropdownSubmenu, ot as SIDEBAR_AUXILIARY, p as ABOUT_TAB_PACKAGES, pt as SYSTEM_VIEWS, r as renderDropdownContribution, rt as ABOUT_TABS, s as icon, st as SIDEBAR_AUXILIARY_BOTTOM, t as handleDropdownWaSelect, tt as MouseButton, u as DocksPart, ut as SIDEBAR_MAIN_TOOLBAR, v as CTXMENU_FILEBROWSER_RENAME, vt as TOOLBAR_MAIN_CENTER, w as TOOLBAR_INFO, x as TOOLBAR_ACTIVE_PART_NAME, y as SIDEBAR_TOOLBAR_EXTENSIONS, yt as TOOLBAR_MAIN_RIGHT, z as appLoaderService } from "../parts-
|
|
1
|
+
import { $ as COMMAND_SAVE, A as VIEW_LOG_TERMINAL, C as TOOLBAR_FULLSCREEN, D as TOOLBAR_TASKS, E as TOOLBAR_LAYOUT_SWITCHER, F as formDialog, G as sanitizeHtml, H as DocksDialogContent, I as formDialogRequired, J as extensionRegistry, L as validateFormDialogFields, M as navigableInfoDialog, N as confirmDialog, O as TOOLBAR_THEME_SWITCHER, P as infoDialog, Q as appSettings, R as promptDialog, S as TOOLBAR_FAST_VIEWS, T as TOOLBAR_LANGUAGE_SELECTOR, U as DocksElement, V as dialogService, W as parseMarkdownHtml, X as taskService, Y as esmShService, Z as TOPIC_SETTINGS_CHANGED, _ as CTXMENU_FILEBROWSER_DELETE, _t as TOOLBAR_MAIN, a as renderDropdownItem, at as PANEL_BOTTOM, b as SYSTEM_DEFAULT_FILE_ICONS, c as parseIconSpec, ct as SIDEBAR_MAIN, d as DocksContainer, dt as SYSTEM_ATTRIBUTIONS, et as HIDE_DOT_RESOURCE, f as ABOUT_TAB_ATTRIBUTIONS, ft as SYSTEM_LAYOUTS, g as ATTRIBUTION_FONT_AWESOME, gt as TOOLBAR_BOTTOM_END, h as ATTRIBUTION_ECLIPSE_DOCKS, ht as TOOLBAR_BOTTOM_CENTER, i as renderDropdownContributions, it as EDITOR_AREA_MAIN, j as filebrowserDialog, k as VIEW_FILEBROWSER, l as versionInfoDialog, lt as SIDEBAR_MAIN_BOTTOM, m as ABOUT_TAB_RELEASE, mt as TOOLBAR_BOTTOM, n as renderCommandContribution, o as renderDropdownSubmenu, ot as SIDEBAR_AUXILIARY, p as ABOUT_TAB_PACKAGES, pt as SYSTEM_VIEWS, r as renderDropdownContribution, rt as ABOUT_TABS, s as icon, st as SIDEBAR_AUXILIARY_BOTTOM, t as handleDropdownWaSelect, tt as MouseButton, u as DocksPart, ut as SIDEBAR_MAIN_TOOLBAR, v as CTXMENU_FILEBROWSER_RENAME, vt as TOOLBAR_MAIN_CENTER, w as TOOLBAR_INFO, x as TOOLBAR_ACTIVE_PART_NAME, y as SIDEBAR_TOOLBAR_EXTENSIONS, yt as TOOLBAR_MAIN_RIGHT, z as appLoaderService } from "../parts-KvjEFJ7v.js";
|
|
2
2
|
import { i as setLogLevel, n as defaultLogger, o as rootContext, s as uiContext, t as createLogger } from "../logger-CiT0Cc4g.js";
|
|
3
3
|
import { C as overrideContributionTargets, E as toastWarning, S as listContributionNameRemaps, T as toastInfo, a as TOPIC_COMMAND_REGISTERED, b as applyConfigNameRemaps, c as EMPTY_SIGNALPORT, d as activeSelectionSignal, f as activeTasksSignal, g as contributionRegistry, h as TOPIC_CONTRIBUTEIONS_CHANGED, i as CommandStack, l as activeEditorSignal, m as perspectiveSwitchedSignal, n as watchSignal, o as commandRegistry, p as partDirtySignal, r as CommandRegistry, s as registerAll, t as DocksWidget, u as activePartSignal, w as toastError, x as contributionTargetMappingRegistry } from "../widget-DUR6wxME.js";
|
|
4
4
|
import { n as subscribe, r as unsubscribe, t as publish } from "../events-BAE5R6TH.js";
|
|
5
|
-
import { a as File, c as StringFile, f as WorkspaceService, i as Directory, l as TOPIC_WORKSPACE_CHANGED, m as persistenceService, o as FileContentType, p as workspaceService, r as CompositeDirectory, t as FileSysDirHandleResource, u as TOPIC_WORKSPACE_CONNECTED } from "../fs-access-
|
|
6
|
-
import { _ as createLazyLabel, a as DocksStandardLayout, c as LAYOUT_PANEL_OPTIONS, d as findStandardLayout, f as layoutIdToPanelVisibility, g as editorRegistry, h as treeNodeComparator, i as createJsRuntime, l as LAYOUT_PANEL_SETTINGS_KEY, m as resolveStoredPanelVisibility, n as getFrameworkConfig, o as registerLicenseAttribution, p as resolveInitialPanelVisibilityFromApp, r as runJavaScriptCode, s as DEFAULT_LAYOUT_PANEL_VISIBILITY, t as configureFramework, u as LEGACY_PREFERRED_LAYOUT_KEY, v as i18n } from "../api-
|
|
5
|
+
import { a as File, c as StringFile, f as WorkspaceService, i as Directory, l as TOPIC_WORKSPACE_CHANGED, m as persistenceService, o as FileContentType, p as workspaceService, r as CompositeDirectory, t as FileSysDirHandleResource, u as TOPIC_WORKSPACE_CONNECTED } from "../fs-access-CrktZo-_.js";
|
|
6
|
+
import { _ as createLazyLabel, a as DocksStandardLayout, c as LAYOUT_PANEL_OPTIONS, d as findStandardLayout, f as layoutIdToPanelVisibility, g as editorRegistry, h as treeNodeComparator, i as createJsRuntime, l as LAYOUT_PANEL_SETTINGS_KEY, m as resolveStoredPanelVisibility, n as getFrameworkConfig, o as registerLicenseAttribution, p as resolveInitialPanelVisibilityFromApp, r as runJavaScriptCode, s as DEFAULT_LAYOUT_PANEL_VISIBILITY, t as configureFramework, u as LEGACY_PREFERRED_LAYOUT_KEY, v as i18n } from "../api-BZXW896G.js";
|
|
7
7
|
export { ABOUT_TABS, ABOUT_TAB_ATTRIBUTIONS, ABOUT_TAB_PACKAGES, ABOUT_TAB_RELEASE, ATTRIBUTION_ECLIPSE_DOCKS, ATTRIBUTION_FONT_AWESOME, COMMAND_SAVE, CTXMENU_FILEBROWSER_DELETE, CTXMENU_FILEBROWSER_RENAME, CommandRegistry, CommandStack, CompositeDirectory, DEFAULT_LAYOUT_PANEL_VISIBILITY, Directory, DocksContainer, DocksDialogContent, DocksElement, DocksPart, DocksStandardLayout, DocksWidget, EDITOR_AREA_MAIN, EMPTY_SIGNALPORT, File, FileContentType, FileSysDirHandleResource, HIDE_DOT_RESOURCE, LAYOUT_PANEL_OPTIONS, LAYOUT_PANEL_SETTINGS_KEY, LEGACY_PREFERRED_LAYOUT_KEY, MouseButton, PANEL_BOTTOM, SIDEBAR_AUXILIARY, SIDEBAR_AUXILIARY_BOTTOM, SIDEBAR_MAIN, SIDEBAR_MAIN_BOTTOM, SIDEBAR_MAIN_TOOLBAR, SIDEBAR_TOOLBAR_EXTENSIONS, SYSTEM_ATTRIBUTIONS, SYSTEM_DEFAULT_FILE_ICONS, SYSTEM_LAYOUTS, SYSTEM_VIEWS, StringFile, TOOLBAR_ACTIVE_PART_NAME, TOOLBAR_BOTTOM, TOOLBAR_BOTTOM_CENTER, TOOLBAR_BOTTOM_END, TOOLBAR_FAST_VIEWS, TOOLBAR_FULLSCREEN, TOOLBAR_INFO, TOOLBAR_LANGUAGE_SELECTOR, TOOLBAR_LAYOUT_SWITCHER, TOOLBAR_MAIN, TOOLBAR_MAIN_CENTER, TOOLBAR_MAIN_RIGHT, TOOLBAR_TASKS, TOOLBAR_THEME_SWITCHER, TOPIC_COMMAND_REGISTERED, TOPIC_CONTRIBUTEIONS_CHANGED, TOPIC_SETTINGS_CHANGED, TOPIC_WORKSPACE_CHANGED, TOPIC_WORKSPACE_CONNECTED, VIEW_FILEBROWSER, VIEW_LOG_TERMINAL, WorkspaceService, activeEditorSignal, activePartSignal, activeSelectionSignal, activeTasksSignal, appLoaderService, appSettings, applyConfigNameRemaps, commandRegistry, configureFramework, confirmDialog, contributionRegistry, contributionTargetMappingRegistry, createJsRuntime, createLazyLabel, createLogger, dialogService, editorRegistry, esmShService, extensionRegistry, filebrowserDialog, findStandardLayout, formDialog, formDialogRequired, getFrameworkConfig, handleDropdownWaSelect, i18n, icon, infoDialog, layoutIdToPanelVisibility, listContributionNameRemaps, defaultLogger as logger, navigableInfoDialog, overrideContributionTargets, parseIconSpec, parseMarkdownHtml, partDirtySignal, persistenceService, perspectiveSwitchedSignal, promptDialog, publish, registerAll, registerLicenseAttribution, renderCommandContribution, renderDropdownContribution, renderDropdownContributions, renderDropdownItem, renderDropdownSubmenu, resolveInitialPanelVisibilityFromApp, resolveStoredPanelVisibility, rootContext, runJavaScriptCode, sanitizeHtml, setLogLevel, subscribe, taskService, toastError, toastInfo, toastWarning, treeNodeComparator, uiContext, unsubscribe, validateFormDialogFields, versionInfoDialog, watchSignal, workspaceService };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { A as VIEW_LOG_TERMINAL, B as deleteIndexedDbWorkspaceData, C as TOOLBAR_FULLSCREEN, D as TOOLBAR_TASKS, E as TOOLBAR_LAYOUT_SWITCHER, J as extensionRegistry, K as keyBindingManager, N as confirmDialog, O as TOOLBAR_THEME_SWITCHER, Q as appSettings, R as promptDialog, S as TOOLBAR_FAST_VIEWS, T as TOOLBAR_LANGUAGE_SELECTOR, U as DocksElement, X as taskService, Y as esmShService, Z as TOPIC_SETTINGS_CHANGED, _t as TOOLBAR_MAIN, a as renderDropdownItem, at as PANEL_BOTTOM, ct as SIDEBAR_MAIN, d as DocksContainer, dt as SYSTEM_ATTRIBUTIONS, f as ABOUT_TAB_ATTRIBUTIONS, ft as SYSTEM_LAYOUTS, g as ATTRIBUTION_FONT_AWESOME, gt as TOOLBAR_BOTTOM_END, h as ATTRIBUTION_ECLIPSE_DOCKS, ht as TOOLBAR_BOTTOM_CENTER, it as EDITOR_AREA_MAIN, j as filebrowserDialog, k as VIEW_FILEBROWSER, l as versionInfoDialog, lt as SIDEBAR_MAIN_BOTTOM, m as ABOUT_TAB_RELEASE, mt as TOOLBAR_BOTTOM, nt as constants_exports, o as renderDropdownSubmenu, ot as SIDEBAR_AUXILIARY, p as ABOUT_TAB_PACKAGES, q as TOPIC_EXTENSIONS_CHANGED, r as renderDropdownContribution, rt as ABOUT_TABS, s as icon, st as SIDEBAR_AUXILIARY_BOTTOM, t as handleDropdownWaSelect, u as DocksPart, ut as SIDEBAR_MAIN_TOOLBAR, vt as TOOLBAR_MAIN_CENTER, w as TOOLBAR_INFO, x as TOOLBAR_ACTIVE_PART_NAME, y as SIDEBAR_TOOLBAR_EXTENSIONS, yt as TOOLBAR_MAIN_RIGHT, z as appLoaderService } from "./parts-
|
|
1
|
+
import { A as VIEW_LOG_TERMINAL, B as deleteIndexedDbWorkspaceData, C as TOOLBAR_FULLSCREEN, D as TOOLBAR_TASKS, E as TOOLBAR_LAYOUT_SWITCHER, J as extensionRegistry, K as keyBindingManager, N as confirmDialog, O as TOOLBAR_THEME_SWITCHER, Q as appSettings, R as promptDialog, S as TOOLBAR_FAST_VIEWS, T as TOOLBAR_LANGUAGE_SELECTOR, U as DocksElement, X as taskService, Y as esmShService, Z as TOPIC_SETTINGS_CHANGED, _t as TOOLBAR_MAIN, a as renderDropdownItem, at as PANEL_BOTTOM, ct as SIDEBAR_MAIN, d as DocksContainer, dt as SYSTEM_ATTRIBUTIONS, f as ABOUT_TAB_ATTRIBUTIONS, ft as SYSTEM_LAYOUTS, g as ATTRIBUTION_FONT_AWESOME, gt as TOOLBAR_BOTTOM_END, h as ATTRIBUTION_ECLIPSE_DOCKS, ht as TOOLBAR_BOTTOM_CENTER, it as EDITOR_AREA_MAIN, j as filebrowserDialog, k as VIEW_FILEBROWSER, l as versionInfoDialog, lt as SIDEBAR_MAIN_BOTTOM, m as ABOUT_TAB_RELEASE, mt as TOOLBAR_BOTTOM, nt as constants_exports, o as renderDropdownSubmenu, ot as SIDEBAR_AUXILIARY, p as ABOUT_TAB_PACKAGES, q as TOPIC_EXTENSIONS_CHANGED, r as renderDropdownContribution, rt as ABOUT_TABS, s as icon, st as SIDEBAR_AUXILIARY_BOTTOM, t as handleDropdownWaSelect, u as DocksPart, ut as SIDEBAR_MAIN_TOOLBAR, vt as TOOLBAR_MAIN_CENTER, w as TOOLBAR_INFO, x as TOOLBAR_ACTIVE_PART_NAME, y as SIDEBAR_TOOLBAR_EXTENSIONS, yt as TOOLBAR_MAIN_RIGHT, z as appLoaderService } from "./parts-KvjEFJ7v.js";
|
|
2
2
|
import { a as unregisterLogHandler, o as rootContext, r as registerLogHandler, s as uiContext, t as createLogger } from "./logger-CiT0Cc4g.js";
|
|
3
3
|
import { E as toastWarning, T as toastInfo, d as activeSelectionSignal, f as activeTasksSignal, g as contributionRegistry, h as TOPIC_CONTRIBUTEIONS_CHANGED, n as watchSignal, s as registerAll, t as DocksWidget, u as activePartSignal, v as getContributionVisible, w as toastError } from "./widget-DUR6wxME.js";
|
|
4
4
|
import { n as subscribe, t as publish } from "./events-BAE5R6TH.js";
|
|
5
|
-
import { a as File, d as UnavailableWorkspaceFolderDirectory, i as Directory, l as TOPIC_WORKSPACE_CHANGED, o as FileContentType, p as workspaceService, s as Resource, u as TOPIC_WORKSPACE_CONNECTED } from "./fs-access-
|
|
5
|
+
import { a as File, d as UnavailableWorkspaceFolderDirectory, i as Directory, l as TOPIC_WORKSPACE_CHANGED, o as FileContentType, p as workspaceService, s as Resource, u as TOPIC_WORKSPACE_CONNECTED } from "./fs-access-CrktZo-_.js";
|
|
6
6
|
import "./widgets-A9XMOA_j.js";
|
|
7
7
|
import { css, html, nothing, render } from "lit";
|
|
8
8
|
import { signal } from "@lit-labs/signals";
|
|
@@ -302,10 +302,70 @@ var treeNodeComparator = (c1, c2) => {
|
|
|
302
302
|
var _DocksFileBrowser;
|
|
303
303
|
var logger$1 = createLogger("DocksFileBrowser");
|
|
304
304
|
var t$6 = await i18n(/* #__PURE__ */ Object.assign({
|
|
305
|
-
"./filebrowser.de.json": () => import("./filebrowser.de-
|
|
306
|
-
"./filebrowser.en.json": () => import("./filebrowser.en-
|
|
305
|
+
"./filebrowser.de.json": () => import("./filebrowser.de-BfFcNr19.js"),
|
|
306
|
+
"./filebrowser.en.json": () => import("./filebrowser.en-CLd5Mccb.js")
|
|
307
307
|
}));
|
|
308
308
|
var WORKSPACE_CHANGED_DEBOUNCE_MS = 250;
|
|
309
|
+
function readFileEntry(entry) {
|
|
310
|
+
return new Promise((resolve, reject) => entry.file(resolve, reject));
|
|
311
|
+
}
|
|
312
|
+
/** `readEntries` returns at most 100 entries and must be called until an empty batch. */
|
|
313
|
+
function readAllDirectoryEntries(reader) {
|
|
314
|
+
return new Promise((resolve, reject) => {
|
|
315
|
+
const all = [];
|
|
316
|
+
const readBatch = () => {
|
|
317
|
+
reader.readEntries((batch) => {
|
|
318
|
+
if (batch.length === 0) {
|
|
319
|
+
resolve(all);
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
all.push(...batch);
|
|
323
|
+
readBatch();
|
|
324
|
+
}, reject);
|
|
325
|
+
};
|
|
326
|
+
readBatch();
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
async function appendDroppedEntry(entry, uploads, onFileFound, parentPath = "") {
|
|
330
|
+
const relativePath = parentPath ? `${parentPath}/${entry.name}` : entry.name;
|
|
331
|
+
if (entry.isFile) {
|
|
332
|
+
try {
|
|
333
|
+
uploads.push({
|
|
334
|
+
relativePath,
|
|
335
|
+
file: await readFileEntry(entry)
|
|
336
|
+
});
|
|
337
|
+
onFileFound?.(uploads.length);
|
|
338
|
+
} catch (error) {
|
|
339
|
+
logger$1.error(`Failed to read dropped file "${relativePath}":`, error);
|
|
340
|
+
}
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
if (!entry.isDirectory) return;
|
|
344
|
+
let children;
|
|
345
|
+
try {
|
|
346
|
+
children = await readAllDirectoryEntries(entry.createReader());
|
|
347
|
+
} catch (error) {
|
|
348
|
+
logger$1.error(`Failed to read dropped folder "${relativePath}":`, error);
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
for (const child of children) await appendDroppedEntry(child, uploads, onFileFound, relativePath);
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Folder structure is only exposed through `webkitGetAsEntry()`; `dataTransfer.files` lists a dropped
|
|
355
|
+
* folder as a single unreadable file. Entries must be captured before the first `await`, because the
|
|
356
|
+
* drag data store becomes inaccessible once the drop handler yields.
|
|
357
|
+
*/
|
|
358
|
+
async function collectDroppedUploads(dataTransfer, onFileFound) {
|
|
359
|
+
const entries = Array.from(dataTransfer.items ?? []).filter((item) => item.kind === "file").map((item) => item.webkitGetAsEntry?.() ?? null).filter((entry) => entry !== null);
|
|
360
|
+
const files = Array.from(dataTransfer.files ?? []);
|
|
361
|
+
if (entries.length === 0) return files.map((file) => ({
|
|
362
|
+
relativePath: file.webkitRelativePath || file.name,
|
|
363
|
+
file
|
|
364
|
+
}));
|
|
365
|
+
const uploads = [];
|
|
366
|
+
for (const entry of entries) await appendDroppedEntry(entry, uploads, onFileFound);
|
|
367
|
+
return uploads;
|
|
368
|
+
}
|
|
309
369
|
var DocksFileBrowser = class DocksFileBrowser extends DocksPart {
|
|
310
370
|
static {
|
|
311
371
|
_DocksFileBrowser = this;
|
|
@@ -746,15 +806,17 @@ var DocksFileBrowser = class DocksFileBrowser extends DocksPart {
|
|
|
746
806
|
if (!targetDir) return;
|
|
747
807
|
const types = e.dataTransfer.types;
|
|
748
808
|
if (types.includes("Files")) {
|
|
749
|
-
const
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
809
|
+
const dataTransfer = e.dataTransfer;
|
|
810
|
+
await taskService.runAsync(t$6.DROP_UPLOAD_TASK, async (progress) => {
|
|
811
|
+
const uploads = await collectDroppedUploads(dataTransfer, (count) => {
|
|
812
|
+
progress.message = t$6.DROP_SCANNING({ count: String(count) });
|
|
813
|
+
});
|
|
814
|
+
if (uploads.length === 0) return;
|
|
815
|
+
await this.handleFilesDrop(uploads, targetDir, progress);
|
|
816
|
+
});
|
|
756
817
|
return;
|
|
757
818
|
}
|
|
819
|
+
if (types.includes("application/x-workspace-file")) await this.handleWorkspaceDrop(e, targetDir);
|
|
758
820
|
};
|
|
759
821
|
treeElement.removeEventListener("dragover", dragOverHandler);
|
|
760
822
|
treeElement.removeEventListener("dragenter", dragEnterHandler);
|
|
@@ -829,43 +891,51 @@ var DocksFileBrowser = class DocksFileBrowser extends DocksPart {
|
|
|
829
891
|
} catch (err) {
|
|
830
892
|
logger$1.debug("Failed to resolve cross-connection info for DnD", err);
|
|
831
893
|
}
|
|
832
|
-
|
|
833
|
-
const
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
894
|
+
await taskService.runAsync(t$6.DROP_COPY_TASK, async (progress) => {
|
|
895
|
+
const onFile = (targetPath) => {
|
|
896
|
+
progress.message = targetPath;
|
|
897
|
+
};
|
|
898
|
+
for (const { path, resource } of sources) try {
|
|
899
|
+
const move = await moveWithinSameBackend(resource);
|
|
900
|
+
await workspaceService.copyResource(resource, targetDir, {
|
|
901
|
+
move,
|
|
902
|
+
onFile
|
|
903
|
+
});
|
|
904
|
+
processed++;
|
|
905
|
+
} catch (error) {
|
|
906
|
+
logger$1.error(`Failed to handle workspace drop for "${path}":`, error);
|
|
907
|
+
failed++;
|
|
908
|
+
}
|
|
909
|
+
});
|
|
840
910
|
logger$1.info(`Workspace drop completed: ${processed}/${sources.length} items ${failed > 0 ? `, ${failed} failed` : ""}`);
|
|
841
911
|
await this.loadWorkspace(this.workspaceDir, true);
|
|
842
912
|
}
|
|
843
|
-
async handleFilesDrop(
|
|
844
|
-
const total =
|
|
913
|
+
async handleFilesDrop(uploads, targetDir, progress) {
|
|
914
|
+
const total = uploads.length;
|
|
845
915
|
let processed = 0;
|
|
846
916
|
let failed = 0;
|
|
847
917
|
let skipped = 0;
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
918
|
+
progress.totalSteps = total;
|
|
919
|
+
for (const [index, { relativePath, file }] of uploads.entries()) {
|
|
920
|
+
progress.currentStep = index + 1;
|
|
921
|
+
progress.message = relativePath;
|
|
922
|
+
try {
|
|
923
|
+
if (await targetDir.getResource(relativePath)) {
|
|
924
|
+
if (!await confirmDialog(t$6.FILE_EXISTS_OVERWRITE({ fileName: relativePath }))) {
|
|
925
|
+
skipped++;
|
|
926
|
+
continue;
|
|
927
|
+
}
|
|
854
928
|
}
|
|
929
|
+
await (await targetDir.getResource(relativePath, { create: true })).saveContents(file);
|
|
930
|
+
processed++;
|
|
931
|
+
} catch (error) {
|
|
932
|
+
logger$1.error(`Failed to upload ${relativePath}:`, error);
|
|
933
|
+
failed++;
|
|
855
934
|
}
|
|
856
|
-
await (await this.workspaceDir.getResource(targetPath, { create: true })).saveContents(file);
|
|
857
|
-
processed++;
|
|
858
|
-
} catch (error) {
|
|
859
|
-
logger$1.error(`Failed to upload ${file.name}:`, error);
|
|
860
|
-
failed++;
|
|
861
935
|
}
|
|
862
936
|
logger$1.info(`Uploaded ${processed}/${total} files${skipped > 0 ? `, ${skipped} skipped` : ""}${failed > 0 ? `, ${failed} failed` : ""}`);
|
|
863
937
|
await this.loadWorkspace(this.workspaceDir);
|
|
864
938
|
}
|
|
865
|
-
buildTargetPath(targetDir, fileName) {
|
|
866
|
-
const dirPath = targetDir.getWorkspacePath();
|
|
867
|
-
return dirPath ? `${dirPath}/${fileName}` : fileName;
|
|
868
|
-
}
|
|
869
939
|
renderContent() {
|
|
870
940
|
return html`
|
|
871
941
|
<div class="tree" ${ref(this.treeRef)} style="--drop-files-text: '${t$6.DROP_FILES_HERE}'">
|
|
@@ -972,6 +1042,16 @@ contributionRegistry.registerContribution(TOOLBAR_BOTTOM_CENTER, {
|
|
|
972
1042
|
component: "<docks-tasks></docks-tasks>"
|
|
973
1043
|
});
|
|
974
1044
|
var progressDialogContainer = null;
|
|
1045
|
+
/** Percentage (0-100) of a task, or `undefined` when its progress is indefinite. */
|
|
1046
|
+
function taskPercent(task) {
|
|
1047
|
+
if (task.progress >= 0) return task.progress;
|
|
1048
|
+
if (task.totalSteps > 0) return Math.round(task.currentStep / task.totalSteps * 100);
|
|
1049
|
+
}
|
|
1050
|
+
function renderProgressBar(task, label = "") {
|
|
1051
|
+
const percent = task && taskPercent(task);
|
|
1052
|
+
if (percent === void 0) return html`<wa-progress-bar indeterminate></wa-progress-bar>`;
|
|
1053
|
+
return html`<wa-progress-bar value="${percent}">${label}</wa-progress-bar>`;
|
|
1054
|
+
}
|
|
975
1055
|
function getProgressDialogContainer() {
|
|
976
1056
|
if (!progressDialogContainer) {
|
|
977
1057
|
progressDialogContainer = document.createElement("div");
|
|
@@ -1081,9 +1161,7 @@ function updateProgressDialog(forceOpen = false) {
|
|
|
1081
1161
|
|
|
1082
1162
|
<div class="progress-dialog-content">
|
|
1083
1163
|
${tasks.map((taskProgress) => {
|
|
1084
|
-
const
|
|
1085
|
-
const progress = taskProgress.progress >= 0 ? taskProgress.progress : taskProgress.totalSteps > 0 ? Math.round(taskProgress.currentStep / taskProgress.totalSteps * 100) : 0;
|
|
1086
|
-
const showSteps = taskProgress.progress < 0 && taskProgress.totalSteps > 0;
|
|
1164
|
+
const steps = taskProgress.progress < 0 && taskProgress.totalSteps > 0 ? `${taskProgress.currentStep}/${taskProgress.totalSteps} - ` : "";
|
|
1087
1165
|
return html`
|
|
1088
1166
|
<div class="tasitem">
|
|
1089
1167
|
<div class="tasheader">
|
|
@@ -1096,13 +1174,7 @@ function updateProgressDialog(forceOpen = false) {
|
|
|
1096
1174
|
</div>
|
|
1097
1175
|
</div>
|
|
1098
1176
|
<div class="tasprogress">
|
|
1099
|
-
${
|
|
1100
|
-
<wa-progress-bar value="${progress}">
|
|
1101
|
-
${showSteps ? `${taskProgress.currentStep}/${taskProgress.totalSteps} - ` : ""}${progress}%
|
|
1102
|
-
</wa-progress-bar>
|
|
1103
|
-
` : html`
|
|
1104
|
-
<wa-progress-bar indeterminate></wa-progress-bar>
|
|
1105
|
-
`}
|
|
1177
|
+
${renderProgressBar(taskProgress, `${steps}${taskPercent(taskProgress)}%`)}
|
|
1106
1178
|
</div>
|
|
1107
1179
|
</div>
|
|
1108
1180
|
`;
|
|
@@ -1167,7 +1239,8 @@ var DocksTasks = class DocksTasks extends DocksElement {
|
|
|
1167
1239
|
}
|
|
1168
1240
|
render() {
|
|
1169
1241
|
activeTasksSignal.get();
|
|
1170
|
-
const
|
|
1242
|
+
const tasks = taskService.getActiveTasks();
|
|
1243
|
+
const taskCount = tasks.length;
|
|
1171
1244
|
if (taskCount === 0) return html``;
|
|
1172
1245
|
return html`
|
|
1173
1246
|
<div class="tasindicator" @click=${this.handleIndicatorClick} title="${t$5.ACTIVE_TASKS_TITLE({ taskCount: taskCount.toString() })}">
|
|
@@ -1176,7 +1249,7 @@ var DocksTasks = class DocksTasks extends DocksElement {
|
|
|
1176
1249
|
label="${t$5.ACTIVE_TASKS}"
|
|
1177
1250
|
></wa-spinner>
|
|
1178
1251
|
<wa-badge appearance="outlined" variant="neutral" pill>${taskCount}</wa-badge>
|
|
1179
|
-
<div class="tasbar-wrap"
|
|
1252
|
+
<div class="tasbar-wrap">${renderProgressBar(taskCount === 1 ? tasks[0] : void 0)}</div>
|
|
1180
1253
|
</div>
|
|
1181
1254
|
`;
|
|
1182
1255
|
}
|
|
@@ -4733,4 +4806,4 @@ function getFrameworkConfig() {
|
|
|
4733
4806
|
//#endregion
|
|
4734
4807
|
export { createLazyLabel as _, DocksStandardLayout as a, LAYOUT_PANEL_OPTIONS as c, findStandardLayout as d, layoutIdToPanelVisibility as f, editorRegistry as g, treeNodeComparator as h, createJsRuntime as i, LAYOUT_PANEL_SETTINGS_KEY as l, resolveStoredPanelVisibility as m, getFrameworkConfig as n, registerLicenseAttribution as o, resolveInitialPanelVisibilityFromApp as p, runJavaScriptCode as r, DEFAULT_LAYOUT_PANEL_VISIBILITY as s, configureFramework as t, LEGACY_PREFERRED_LAYOUT_KEY as u, i18n as v };
|
|
4735
4808
|
|
|
4736
|
-
//# sourceMappingURL=api-
|
|
4809
|
+
//# sourceMappingURL=api-BZXW896G.js.map
|