diff --git a/src/vs/base/browser/dom.ts b/src/vs/base/browser/dom.ts index 08db4033afd..395b58cfe1a 100644 --- a/src/vs/base/browser/dom.ts +++ b/src/vs/base/browser/dom.ts @@ -1477,30 +1477,6 @@ export function multibyteAwareBtoa(str: string): string { return btoa(toBinary(str)); } -/** - * Typings for the https://wicg.github.io/file-system-access - * - * Use `supported(window)` to find out if the browser supports this kind of API. - */ -export namespace WebFileSystemAccess { - - export function supported(obj: any & Window): boolean { - if (typeof obj?.showDirectoryPicker === 'function') { - return true; - } - - return false; - } - - export function isFileSystemFileHandle(handle: FileSystemHandle): handle is FileSystemFileHandle { - return handle.kind === 'file'; - } - - export function isFileSystemDirectoryHandle(handle: FileSystemHandle): handle is FileSystemDirectoryHandle { - return handle.kind === 'directory'; - } -} - type ModifierKey = 'alt' | 'ctrl' | 'shift' | 'meta'; export interface IModifierKeyStatus { diff --git a/src/vs/platform/files/browser/htmlFileSystemProvider.ts b/src/vs/platform/files/browser/htmlFileSystemProvider.ts index 561bbd1725a..7ee315023b7 100644 --- a/src/vs/platform/files/browser/htmlFileSystemProvider.ts +++ b/src/vs/platform/files/browser/htmlFileSystemProvider.ts @@ -15,7 +15,7 @@ import { isLinux } from 'vs/base/common/platform'; import { extUri, extUriIgnorePathCase } from 'vs/base/common/resources'; import { newWriteableStream, ReadableStreamEvents } from 'vs/base/common/stream'; import { createFileSystemProviderError, FileDeleteOptions, FileOverwriteOptions, FileReadStreamOptions, FileSystemProviderCapabilities, FileSystemProviderError, FileSystemProviderErrorCode, FileType, FileWriteOptions, IFileSystemProviderWithFileReadStreamCapability, IFileSystemProviderWithFileReadWriteCapability, IStat, IWatchOptions } from 'vs/platform/files/common/files'; -import { WebFileSystemAccess } from 'vs/base/browser/dom'; +import { WebFileSystemAccess } from 'vs/platform/files/browser/webFileSystemAccess'; export class HTMLFileSystemProvider implements IFileSystemProviderWithFileReadWriteCapability, IFileSystemProviderWithFileReadStreamCapability { diff --git a/src/vs/platform/files/browser/webFileSystemAccess.ts b/src/vs/platform/files/browser/webFileSystemAccess.ts new file mode 100644 index 00000000000..89c5fc217bf --- /dev/null +++ b/src/vs/platform/files/browser/webFileSystemAccess.ts @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +/** + * Typings for the https://wicg.github.io/file-system-access + * + * Use `supported(window)` to find out if the browser supports this kind of API. + */ +export namespace WebFileSystemAccess { + + export function supported(obj: any & Window): boolean { + if (typeof obj?.showDirectoryPicker === 'function') { + return true; + } + + return false; + } + + export function isFileSystemFileHandle(handle: FileSystemHandle): handle is FileSystemFileHandle { + return handle.kind === 'file'; + } + + export function isFileSystemDirectoryHandle(handle: FileSystemHandle): handle is FileSystemDirectoryHandle { + return handle.kind === 'directory'; + } +} diff --git a/src/vs/workbench/browser/contextkeys.ts b/src/vs/workbench/browser/contextkeys.ts index 0eeba97761d..df9b2c329d5 100644 --- a/src/vs/workbench/browser/contextkeys.ts +++ b/src/vs/workbench/browser/contextkeys.ts @@ -9,7 +9,7 @@ import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/c import { InputFocusedContext, IsMacContext, IsLinuxContext, IsWindowsContext, IsWebContext, IsMacNativeContext, IsDevelopmentContext, IsIOSContext } from 'vs/platform/contextkey/common/contextkeys'; import { SplitEditorsVertically, InEditorZenModeContext, ActiveEditorCanRevertContext, ActiveEditorGroupLockedContext, ActiveEditorCanSplitInGroupContext, SideBySideEditorActiveContext, AuxiliaryBarVisibleContext, SideBarVisibleContext, PanelAlignmentContext, PanelMaximizedContext, PanelVisibleContext, ActiveEditorContext, EditorsVisibleContext, TextCompareEditorVisibleContext, TextCompareEditorActiveContext, ActiveEditorGroupEmptyContext, MultipleEditorGroupsContext, EditorTabsVisibleContext, IsCenteredLayoutContext, ActiveEditorGroupIndexContext, ActiveEditorGroupLastContext, ActiveEditorReadonlyContext, EditorAreaVisibleContext, ActiveEditorAvailableEditorIdsContext, DirtyWorkingCopiesContext, EmptyWorkspaceSupportContext, EnterMultiRootWorkspaceSupportContext, HasWebFileSystemAccess, IsFullscreenContext, OpenFolderWorkspaceSupportContext, RemoteNameContext, VirtualWorkspaceContext, WorkbenchStateContext, WorkspaceFolderCountContext, PanelPositionContext } from 'vs/workbench/common/contextkeys'; import { TEXT_DIFF_EDITOR_ID, EditorInputCapabilities, SIDE_BY_SIDE_EDITOR_ID, DEFAULT_EDITOR_ASSOCIATION } from 'vs/workbench/common/editor'; -import { trackFocus, addDisposableListener, EventType, WebFileSystemAccess } from 'vs/base/browser/dom'; +import { trackFocus, addDisposableListener, EventType } from 'vs/base/browser/dom'; import { preferredSideBySideGroupDirection, GroupDirection, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; @@ -23,6 +23,7 @@ import { isNative } from 'vs/base/common/platform'; import { IEditorResolverService } from 'vs/workbench/services/editor/common/editorResolverService'; import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite'; import { Schemas } from 'vs/base/common/network'; +import { WebFileSystemAccess } from 'vs/platform/files/browser/webFileSystemAccess'; export class WorkbenchContextKeysHandler extends Disposable { private inputFocusedContext: IContextKey; diff --git a/src/vs/workbench/browser/web.main.ts b/src/vs/workbench/browser/web.main.ts index 61fab618b25..4324f9f3814 100644 --- a/src/vs/workbench/browser/web.main.ts +++ b/src/vs/workbench/browser/web.main.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { mark } from 'vs/base/common/performance'; -import { domContentLoaded, detectFullscreen, getCookieValue, WebFileSystemAccess } from 'vs/base/browser/dom'; +import { domContentLoaded, detectFullscreen, getCookieValue } from 'vs/base/browser/dom'; import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; import { ILogService, ConsoleLogger, MultiplexLogService, getLogLevel } from 'vs/platform/log/common/log'; import { ConsoleLogInAutomationLogger } from 'vs/platform/log/browser/log'; @@ -68,6 +68,7 @@ import { ICredentialsService } from 'vs/platform/credentials/common/credentials' import { IndexedDB } from 'vs/base/browser/indexedDB'; import { BrowserCredentialsService } from 'vs/workbench/services/credentials/browser/credentialsService'; import { IWorkspace } from 'vs/workbench/services/host/browser/browserHostService'; +import { WebFileSystemAccess } from 'vs/platform/files/browser/webFileSystemAccess'; export class BrowserMain extends Disposable { diff --git a/src/vs/workbench/contrib/files/browser/fileImportExport.ts b/src/vs/workbench/contrib/files/browser/fileImportExport.ts index 4ab523e659c..a13c187fd92 100644 --- a/src/vs/workbench/contrib/files/browser/fileImportExport.ts +++ b/src/vs/workbench/contrib/files/browser/fileImportExport.ts @@ -23,7 +23,7 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace import { extractEditorsDropData } from 'vs/workbench/browser/dnd'; import { IWorkspaceEditingService } from 'vs/workbench/services/workspaces/common/workspaceEditing'; import { isWeb } from 'vs/base/common/platform'; -import { triggerDownload, WebFileSystemAccess } from 'vs/base/browser/dom'; +import { triggerDownload } from 'vs/base/browser/dom'; import { ILogService } from 'vs/platform/log/common/log'; import { FileAccess, Schemas } from 'vs/base/common/network'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; @@ -33,6 +33,7 @@ import { once } from 'vs/base/common/functional'; import { coalesce } from 'vs/base/common/arrays'; import { canceled } from 'vs/base/common/errors'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { WebFileSystemAccess } from 'vs/platform/files/browser/webFileSystemAccess'; //#region Browser File Upload (drag and drop, input element) diff --git a/src/vs/workbench/services/dialogs/browser/fileDialogService.ts b/src/vs/workbench/services/dialogs/browser/fileDialogService.ts index 56c2409e16d..12efd7c86ec 100644 --- a/src/vs/workbench/services/dialogs/browser/fileDialogService.ts +++ b/src/vs/workbench/services/dialogs/browser/fileDialogService.ts @@ -13,11 +13,12 @@ import { HTMLFileSystemProvider } from 'vs/platform/files/browser/htmlFileSystem import { localize } from 'vs/nls'; import { getMediaOrTextMime } from 'vs/base/common/mime'; import { basename } from 'vs/base/common/resources'; -import { triggerDownload, triggerUpload, WebFileSystemAccess } from 'vs/base/browser/dom'; +import { triggerDownload, triggerUpload } from 'vs/base/browser/dom'; import Severity from 'vs/base/common/severity'; import { VSBuffer } from 'vs/base/common/buffer'; import { extractFilesDropData } from 'vs/workbench/browser/dnd'; import { Iterable } from 'vs/base/common/iterator'; +import { WebFileSystemAccess } from 'vs/platform/files/browser/webFileSystemAccess'; export class FileDialogService extends AbstractFileDialogService implements IFileDialogService { diff --git a/src/vs/workbench/services/search/browser/searchService.ts b/src/vs/workbench/services/search/browser/searchService.ts index 2ffbe30dae7..21bb410c03e 100644 --- a/src/vs/workbench/services/search/browser/searchService.ts +++ b/src/vs/workbench/services/search/browser/searchService.ts @@ -25,7 +25,7 @@ import { Schemas } from 'vs/base/common/network'; import { URI, UriComponents } from 'vs/base/common/uri'; import { Emitter, Event } from 'vs/base/common/event'; import { localize } from 'vs/nls'; -import { WebFileSystemAccess } from 'vs/base/browser/dom'; +import { WebFileSystemAccess } from 'vs/platform/files/browser/webFileSystemAccess'; export class RemoteSearchService extends SearchService { constructor(