@api-client/ui 0.0.10 → 0.0.12
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/.eslintrc +16 -1
- package/demo/elements/index.html +3 -0
- package/demo/elements/store/file-picker.html +15 -0
- package/demo/elements/store/file-picker.ts +134 -0
- package/demo/elements/store/index.html +19 -0
- package/demo/index.html +3 -0
- package/demo/layout/index.html +91 -0
- package/demo/layout/index.ts +182 -0
- package/demo/store/StorePlugin.js +1 -0
- package/dist/bindings/base/StoreBindings.d.ts +5 -0
- package/dist/bindings/base/StoreBindings.d.ts.map +1 -1
- package/dist/bindings/base/StoreBindings.js +15 -1
- package/dist/bindings/base/StoreBindings.js.map +1 -1
- package/dist/define/store/file-picker.d.ts +9 -0
- package/dist/define/store/file-picker.d.ts.map +1 -0
- package/dist/define/store/file-picker.js +10 -0
- package/dist/define/store/file-picker.js.map +1 -0
- package/dist/define/{files → store}/share-file.d.ts +1 -1
- package/dist/define/store/share-file.d.ts.map +1 -0
- package/dist/define/{files → store}/share-file.js +2 -2
- package/dist/define/store/share-file.js.map +1 -0
- package/dist/elements/layout/SplitItem.d.ts +1 -9
- package/dist/elements/layout/SplitItem.d.ts.map +1 -1
- package/dist/elements/layout/SplitItem.js +27 -20
- package/dist/elements/layout/SplitItem.js.map +1 -1
- package/dist/elements/layout/SplitLayout.d.ts +16 -14
- package/dist/elements/layout/SplitLayout.d.ts.map +1 -1
- package/dist/elements/layout/SplitLayout.js +47 -42
- package/dist/elements/layout/SplitLayout.js.map +1 -1
- package/dist/elements/layout/SplitPanel.d.ts +7 -2
- package/dist/elements/layout/SplitPanel.d.ts.map +1 -1
- package/dist/elements/layout/SplitPanel.js +130 -52
- package/dist/elements/layout/SplitPanel.js.map +1 -1
- package/dist/elements/layout/SplitView.d.ts.map +1 -1
- package/dist/elements/layout/SplitView.js +18 -14
- package/dist/elements/layout/SplitView.js.map +1 -1
- package/dist/elements/layout/type.d.ts +3 -3
- package/dist/elements/layout/type.d.ts.map +1 -1
- package/dist/elements/layout/type.js.map +1 -1
- package/dist/elements/store/FilePicker.element.d.ts +87 -0
- package/dist/elements/store/FilePicker.element.d.ts.map +1 -0
- package/dist/elements/store/FilePicker.element.js +263 -0
- package/dist/elements/store/FilePicker.element.js.map +1 -0
- package/dist/elements/store/FilePicker.styles.d.ts +3 -0
- package/dist/elements/store/FilePicker.styles.d.ts.map +1 -0
- package/dist/elements/store/FilePicker.styles.js +72 -0
- package/dist/elements/store/FilePicker.styles.js.map +1 -0
- package/dist/elements/store/FilesLib.d.ts +10 -0
- package/dist/elements/store/FilesLib.d.ts.map +1 -0
- package/dist/elements/store/FilesLib.js +38 -0
- package/dist/elements/store/FilesLib.js.map +1 -0
- package/dist/elements/{files/ShareFile.d.ts → store/ShareFile.element.d.ts} +1 -1
- package/dist/elements/store/ShareFile.element.d.ts.map +1 -0
- package/dist/elements/{files/ShareFile.js → store/ShareFile.element.js} +1 -1
- package/dist/elements/store/ShareFile.element.js.map +1 -0
- package/dist/elements/store/ShareFile.styles.d.ts.map +1 -0
- package/dist/elements/{files → store}/ShareFile.styles.js.map +1 -1
- package/dist/events/EventTypes.d.ts +1 -0
- package/dist/events/EventTypes.d.ts.map +1 -1
- package/dist/events/EventTypes.js +1 -0
- package/dist/events/EventTypes.js.map +1 -1
- package/dist/events/Events.d.ts +1 -0
- package/dist/events/Events.d.ts.map +1 -1
- package/dist/events/StoreEvents.d.ts +8 -1
- package/dist/events/StoreEvents.d.ts.map +1 -1
- package/dist/events/StoreEvents.js +19 -0
- package/dist/events/StoreEvents.js.map +1 -1
- package/dist/pages/ApplicationScreen.d.ts +1 -1
- package/dist/pages/ApplicationScreen.d.ts.map +1 -1
- package/dist/pages/ApplicationScreen.js +4 -2
- package/dist/pages/ApplicationScreen.js.map +1 -1
- package/dist/pages/api-client/ApiClient.screen.d.ts +0 -6
- package/dist/pages/api-client/ApiClient.screen.d.ts.map +1 -1
- package/dist/pages/api-client/ApiClient.screen.js +16 -29
- package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.d.ts +1 -1
- package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.js +2 -2
- package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
- package/dist/pages/api-client/pages/Files.page.d.ts +6 -35
- package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
- package/dist/pages/api-client/pages/Files.page.js +32 -141
- package/dist/pages/api-client/pages/Files.page.js.map +1 -1
- package/dist/pages/api-client/pages/Shared.page.d.ts +1 -5
- package/dist/pages/api-client/pages/Shared.page.d.ts.map +1 -1
- package/dist/pages/api-client/pages/Shared.page.js +1 -40
- package/dist/pages/api-client/pages/Shared.page.js.map +1 -1
- package/dist/pages/demo/DemoPage.d.ts +7 -0
- package/dist/pages/demo/DemoPage.d.ts.map +1 -1
- package/dist/pages/demo/DemoPage.js +14 -0
- package/dist/pages/demo/DemoPage.js.map +1 -1
- package/dist/pages/http-project/HttpClientCommands.d.ts.map +1 -1
- package/dist/pages/http-project/HttpClientCommands.js +28 -12
- package/dist/pages/http-project/HttpClientCommands.js.map +1 -1
- package/dist/store/FileSystem.d.ts +90 -0
- package/dist/store/FileSystem.d.ts.map +1 -0
- package/dist/store/FileSystem.js +260 -0
- package/dist/store/FileSystem.js.map +1 -0
- package/dist/styles/global-styles.d.ts.map +1 -1
- package/dist/styles/global-styles.js +7 -0
- package/dist/styles/global-styles.js.map +1 -1
- package/dist/ui/icons/Icons.d.ts +2 -1
- package/dist/ui/icons/Icons.d.ts.map +1 -1
- package/dist/ui/icons/Icons.js +1 -0
- package/dist/ui/icons/Icons.js.map +1 -1
- package/dist/ui/list/UiDropdownList.d.ts +9 -1
- package/dist/ui/list/UiDropdownList.d.ts.map +1 -1
- package/dist/ui/list/UiDropdownList.js +39 -17
- package/dist/ui/list/UiDropdownList.js.map +1 -1
- package/dist/ui/list/UiList.d.ts +6 -1
- package/dist/ui/list/UiList.d.ts.map +1 -1
- package/dist/ui/list/UiList.js +24 -9
- package/dist/ui/list/UiList.js.map +1 -1
- package/dist/ui/table/DataTable.d.ts +4 -0
- package/dist/ui/table/DataTable.d.ts.map +1 -1
- package/dist/ui/table/DataTable.js +23 -1
- package/dist/ui/table/DataTable.js.map +1 -1
- package/package.json +2 -1
- package/src/bindings/base/StoreBindings.ts +16 -1
- package/src/define/store/file-picker.ts +12 -0
- package/src/define/{files → store}/share-file.ts +2 -2
- package/src/elements/layout/SplitItem.ts +29 -21
- package/src/elements/layout/SplitLayout.ts +53 -43
- package/src/elements/layout/SplitPanel.ts +140 -57
- package/src/elements/layout/SplitView.ts +18 -15
- package/src/elements/layout/type.ts +3 -4
- package/src/elements/store/FilePicker.element.ts +297 -0
- package/src/elements/store/FilePicker.styles.ts +72 -0
- package/src/elements/store/FilesLib.ts +32 -0
- package/src/events/EventTypes.ts +1 -0
- package/src/events/StoreEvents.ts +21 -1
- package/src/pages/ApplicationScreen.ts +5 -3
- package/src/pages/api-client/ApiClient.screen.ts +16 -31
- package/src/pages/api-client/Authenticate.screen.ts +2 -2
- package/src/pages/api-client/pages/Files.page.ts +37 -164
- package/src/pages/api-client/pages/Shared.page.ts +2 -40
- package/src/pages/demo/DemoPage.ts +17 -0
- package/src/pages/http-project/HttpClientCommands.ts +28 -12
- package/src/store/FileSystem.ts +325 -0
- package/src/styles/global-styles.ts +7 -0
- package/src/ui/icons/Icons.ts +2 -1
- package/src/ui/list/UiDropdownList.ts +44 -17
- package/src/ui/list/UiList.ts +26 -10
- package/src/ui/table/DataTable.ts +29 -3
- package/test/elements/layout/SplitItem.test.ts +76 -75
- package/test/elements/layout/SplitLayoutManager.test.ts +70 -69
- package/test/elements/layout/SplitPanel.test.ts +10 -7
- package/test/elements/store/FilePicker.test.ts +241 -0
- package/test/env.js +3 -0
- package/test/helpers/StoreHelper.ts +390 -0
- package/tsconfig.eslint.json +10 -0
- package/web-test-runner.config.mjs +51 -2
- package/dist/define/files/share-file.d.ts.map +0 -1
- package/dist/define/files/share-file.js.map +0 -1
- package/dist/define/layout/layout-panel.d.ts +0 -7
- package/dist/define/layout/layout-panel.d.ts.map +0 -1
- package/dist/define/layout/layout-panel.js +0 -3
- package/dist/define/layout/layout-panel.js.map +0 -1
- package/dist/elements/files/ShareFile.d.ts.map +0 -1
- package/dist/elements/files/ShareFile.js.map +0 -1
- package/dist/elements/files/ShareFile.styles.d.ts.map +0 -1
- package/dist/elements/layout/LayoutManager.d.ts +0 -327
- package/dist/elements/layout/LayoutManager.d.ts.map +0 -1
- package/dist/elements/layout/LayoutManager.js +0 -747
- package/dist/elements/layout/LayoutManager.js.map +0 -1
- package/dist/elements/layout/LayoutPanelElement.d.ts +0 -62
- package/dist/elements/layout/LayoutPanelElement.d.ts.map +0 -1
- package/dist/elements/layout/LayoutPanelElement.js +0 -628
- package/dist/elements/layout/LayoutPanelElement.js.map +0 -1
- package/src/define/layout/layout-panel.ts +0 -9
- package/src/elements/layout/LayoutManager.ts +0 -930
- package/src/elements/layout/LayoutPanelElement.ts +0 -651
- /package/dist/elements/{files → store}/ShareFile.styles.d.ts +0 -0
- /package/dist/elements/{files → store}/ShareFile.styles.js +0 -0
- /package/src/elements/{files/ShareFile.ts → store/ShareFile.element.ts} +0 -0
- /package/src/elements/{files → store}/ShareFile.styles.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Authenticate.screen.js","sourceRoot":"","sources":["../../../src/pages/api-client/Authenticate.screen.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAA6B,MAAM,KAAK,CAAC;AACtD,OAAO,EAAmB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,UAAU,MAAM,sCAAsC,CAAC;AAC9D,OAAO,MAAM,MAAM,kCAAkC,CAAC;AACtD,OAAO,MAAM,MAAM,kCAAkC,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,gCAAgC,CAAC;AACxC,OAAO,8BAA8B,CAAC;AAEtC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,iBAAiB;IACtD,KAAK,CAAC,YAAY;QACzB,MAAM;IACR,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAaD,YAAY,IAAqB;QAC/B,KAAK,CAAC,IAAI,CAAC,CAAC;QARd;;WAEG;QACS,mBAAc,GAAG,KAAK,CAAC;QAEnC,mBAAc,GAAG,KAAK,CAAC;IAIvB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI;YACF,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YACzC,IAAI,GAAG,EAAE;gBACP,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,gBAAgB,GAAG,kEAAkE,CAAC;aAC5F;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,gBAAgB,GAAI,CAAW,CAAC,OAAO,CAAC;SAC9C;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,eAAe,WAAW,CAAmC,CAAC;QAClH,IAAI,CAAC,GAAG,EAAE;YACR,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACrD;aAAM;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5B;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAES,
|
|
1
|
+
{"version":3,"file":"Authenticate.screen.js","sourceRoot":"","sources":["../../../src/pages/api-client/Authenticate.screen.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult, CSSResult } from 'lit';\nimport { ApplicationInit, ApplicationScreen } from '../ApplicationScreen.js';\nimport { reactive } from '../../lib/decorators.js';\nimport styles from './Authenticate.styles.js';\nimport globalStyles from '../../styles/global-styles.js';\nimport typography from '../../styles/m3/typography.module.js';\nimport colors from '../../styles/m3/colors.module.js';\nimport dialog from '../../styles/m3/dialog.module.js';\nimport { IConfigEnvironment } from '../../lib/config/Config.js';\nimport { ISessionInitInfo } from '../../store/HttpStore.js';\nimport { EnvironmentsKey } from '../../bindings/base/ConfigurationBindings.js';\nimport '../../define/ui/ui-progress.js';\nimport '../../define/ui/ui-button.js';\n\n/**\n * When the user is redirected here it means that the user provided a configuration\n * that requires user authentication.\n */\nexport default class AuthenticateScreen extends ApplicationScreen {\n override async storeChanged(): Promise<void> {\n // ...\n }\n\n static get styles(): CSSResult[] {\n return [styles, globalStyles, typography, colors, dialog];\n }\n\n @reactive() environmentError?: string;\n\n environment?: IConfigEnvironment;\n\n /**\n * Whether the application is performing the store validation.\n */\n @reactive() authenticating = false;\n\n isSessionStore = false;\n\n constructor(init: ApplicationInit) {\n super(init);\n }\n\n async initialize(): Promise<void> {\n try {\n await this.bindings.store.initialize();\n await this.bindings.store.initializeStore();\n await this.bindings.config.initialize();\n const env = await this.readEnvironment();\n if (env) {\n this.environment = env;\n } else {\n this.environmentError = 'Environment information not found. Go back to the previous page.';\n }\n } catch (e) {\n this.environmentError = (e as Error).message;\n }\n }\n\n async readEnvironment(): Promise<IConfigEnvironment | undefined> {\n let env = await this.bindings.config.session.get(`${EnvironmentsKey}.creating`) as IConfigEnvironment | undefined;\n if (!env) {\n env = await this.bindings.config.environment.read();\n } else {\n this.isSessionStore = true;\n }\n return env;\n }\n\n protected async handleAuth(): Promise<void> {\n const { environment } = this;\n if (!environment) {\n this.environmentError = 'Environment information not found. Go back to the previous page.';\n return;\n }\n this.authenticate(environment);\n }\n\n protected handleBack(): void {\n window.history.back();\n }\n\n protected async authenticate(env: IConfigEnvironment): Promise<void> {\n this.authenticating = true;\n let info: ISessionInitInfo | undefined;\n try {\n await this.bindings.store.global.set(env);\n info = await this.bindings.store.auth.authenticate({ force: false });\n } finally {\n this.authenticating = false;\n }\n if (info) {\n if (this.isSessionStore) {\n await this.bindings.config.environment.add(env, { asDefault: true });\n await this.bindings.config.session.delete(`${EnvironmentsKey}.creating`);\n } else {\n await this.bindings.config.environment.update(env);\n }\n }\n }\n\n /**\n * This to be used by the child classes to render page template.\n * @returns Application page template\n */\n override pageTemplate(): TemplateResult {\n return html`\n <main class=\"config-init\">\n ${this.renderTitle()}\n ${this.renderIntroMessage()}\n ${this.environmentError ? this.initErrorTemplate() : this.contentTemplate()}\n </main>\n `;\n }\n\n initErrorTemplate(): TemplateResult {\n return html`\n <p class=\"general-error error on-error-text body-large\">${this.environmentError}</p>\n <div class=\"action\">\n <ui-button type=\"filled\" @click=\"${this.handleBack}\">Back</ui-button>\n </div>\n `;\n }\n\n contentTemplate(): TemplateResult {\n return html`\n ${this.actionTemplate()}\n ${this.infoTemplate()}\n ${this.progressTemplate()}\n `;\n }\n\n renderTitle(): TemplateResult {\n return html`<h1 class=\"display-large\">Store authentication</h1>`;\n }\n\n renderIntroMessage(): TemplateResult {\n return html`\n <div class=\"description body-medium\">\n <p id=\"authenticationMessage\">The network store requires authentication.</p>\n </div>\n `;\n }\n\n actionTemplate(): TemplateResult {\n return html`\n <div class=\"action\">\n <ui-button \n type=\"filled\"\n @click=\"${this.handleAuth}\"\n >Authenticate</ui-button>\n </div>\n `;\n }\n\n infoTemplate(): TemplateResult {\n return html`\n <p class=\"description body-medium\" id=\"authenticationMessage\">This will open a new tab with the authentication options.</p>\n `;\n }\n\n progressTemplate(): TemplateResult | string {\n const { authenticating } = this;\n if (!authenticating) {\n return '';\n }\n return html`\n <ui-progress indeterminate></ui-progress>\n `;\n }\n}\n"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { IFile,
|
|
1
|
+
import { IFile, ICapabilities } from "@api-client/core/build/browser.js";
|
|
2
2
|
import { nothing, TemplateResult } from "lit";
|
|
3
3
|
import type ApiClientScreen from "../ApiClient.screen.js";
|
|
4
4
|
import { DataTable } from "../../../ui/table/DataTable.js";
|
|
5
5
|
import { DataImportProcessor } from "../../../http-client/store/DataImportProcessor.js";
|
|
6
|
+
import { FileSystem } from "../../../store/FileSystem.js";
|
|
6
7
|
import '@github/relative-time-element';
|
|
7
8
|
import '../../../define/ui/ui-list.js';
|
|
8
9
|
import '../../../define/ui/ui-list-item.js';
|
|
@@ -13,7 +14,7 @@ import '../../../define/ui/ui-button.js';
|
|
|
13
14
|
import '../../../define/ui/ui-divider.js';
|
|
14
15
|
import '../../../define/ui/ui-text-field.js';
|
|
15
16
|
import '../../../define/dialog/rename-dialog.js';
|
|
16
|
-
import '../../../define/
|
|
17
|
+
import '../../../define/store/share-file.js';
|
|
17
18
|
declare enum ImportState {
|
|
18
19
|
Analyzing = 0,
|
|
19
20
|
Analyzed = 1,
|
|
@@ -26,48 +27,17 @@ declare enum ImportState {
|
|
|
26
27
|
*/
|
|
27
28
|
export declare class FilesPage {
|
|
28
29
|
protected screen: ApiClientScreen;
|
|
29
|
-
|
|
30
|
-
* The list of files to render.
|
|
31
|
-
* Do not overwrite this property or when you must then update the DataTable's `items` as well.
|
|
32
|
-
*/
|
|
33
|
-
files: IFile[];
|
|
34
|
-
/**
|
|
35
|
-
* The pagination cursor for files.
|
|
36
|
-
* As long there's a cursor, there are more files to request.
|
|
37
|
-
*/
|
|
38
|
-
cursor?: string;
|
|
39
|
-
/**
|
|
40
|
-
* The key of the currently rendered folder.
|
|
41
|
-
*/
|
|
42
|
-
folder?: string;
|
|
43
|
-
breadcrumbs?: FileBreadcrumb[];
|
|
30
|
+
fs: FileSystem;
|
|
44
31
|
dt: DataTable<IFile>;
|
|
45
32
|
importProcessor?: DataImportProcessor;
|
|
46
33
|
importState?: ImportState;
|
|
47
|
-
/**
|
|
48
|
-
* Whether the UI is reading files
|
|
49
|
-
*/
|
|
50
|
-
readingFiles?: boolean;
|
|
51
34
|
/**
|
|
52
35
|
* A selected in the table item.
|
|
53
36
|
*/
|
|
54
37
|
selectedItem?: string;
|
|
38
|
+
errorMessage?: string;
|
|
55
39
|
constructor(screen: ApiClientScreen);
|
|
56
40
|
refresh(): Promise<void>;
|
|
57
|
-
resetList(): void;
|
|
58
|
-
readFiles(): Promise<void>;
|
|
59
|
-
protected listFiles(opts: ContextSpaceListOptions): Promise<ContextListResult<IFile>>;
|
|
60
|
-
/**
|
|
61
|
-
* Sorts files on the list.
|
|
62
|
-
*
|
|
63
|
-
* Folders are always on top.
|
|
64
|
-
*/
|
|
65
|
-
filesSortFunction(a: IFile, b: IFile): number;
|
|
66
|
-
handleFileEvent(event: BroadcastEvent): void;
|
|
67
|
-
handleFileCreated(file: IFile): void;
|
|
68
|
-
handleFileDeleted(event: DeletedBroadcastEvent): void;
|
|
69
|
-
removeFileFromList(key: string): void;
|
|
70
|
-
handleFilePatch(event: FilePatchBroadcastEvent): void;
|
|
71
41
|
protected cancelCreateProjectDialog(): void;
|
|
72
42
|
protected cancelCreateFolderDialog(): void;
|
|
73
43
|
protected cancelImportDialog(): void;
|
|
@@ -88,6 +58,7 @@ export declare class FilesPage {
|
|
|
88
58
|
protected itemActivateHandler(item: IFile): void;
|
|
89
59
|
protected handleTableRender(): void;
|
|
90
60
|
protected handleTableSelect(item: string | string[]): void;
|
|
61
|
+
protected handleTableScrollEnd(): void;
|
|
91
62
|
openProject(key: string): void;
|
|
92
63
|
openDataSchema(key: string): void;
|
|
93
64
|
openFolder(folder: IFile): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Files.page.d.ts","sourceRoot":"","sources":["../../../../src/pages/api-client/pages/Files.page.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,
|
|
1
|
+
{"version":3,"file":"Files.page.d.ts","sourceRoot":"","sources":["../../../../src/pages/api-client/pages/Files.page.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ import { html, nothing } from "lit";
|
|
|
3
3
|
import { join } from "lit/directives/join.js";
|
|
4
4
|
import { map } from "lit/directives/map.js";
|
|
5
5
|
import { until } from 'lit/directives/until.js';
|
|
6
|
-
import { Patch } from "@api-client/json";
|
|
7
6
|
import { DataTable } from "../../../ui/table/DataTable.js";
|
|
8
7
|
import { NavigationEvents } from "../../../events/NavigationEvents.js";
|
|
9
8
|
import { navigate } from "../../../lib/route.js";
|
|
@@ -11,6 +10,8 @@ import { DataImportProcessor } from "../../../http-client/store/DataImportProces
|
|
|
11
10
|
import { SnackNotifications } from "../../../ui/notification/SnackNotifications.js";
|
|
12
11
|
import UserCache from '../../../store/UserCache.js';
|
|
13
12
|
import AppInfo from '../AppInfo.js';
|
|
13
|
+
import { fileIcon } from "../../../elements/store/FilesLib.js";
|
|
14
|
+
import { FileSystem } from "../../../store/FileSystem.js";
|
|
14
15
|
import '@github/relative-time-element';
|
|
15
16
|
import '../../../define/ui/ui-list.js';
|
|
16
17
|
import '../../../define/ui/ui-list-item.js';
|
|
@@ -21,7 +22,7 @@ import '../../../define/ui/ui-button.js';
|
|
|
21
22
|
import '../../../define/ui/ui-divider.js';
|
|
22
23
|
import '../../../define/ui/ui-text-field.js';
|
|
23
24
|
import '../../../define/dialog/rename-dialog.js';
|
|
24
|
-
import '../../../define/
|
|
25
|
+
import '../../../define/store/share-file.js';
|
|
25
26
|
var ImportState;
|
|
26
27
|
(function (ImportState) {
|
|
27
28
|
ImportState[ImportState["Analyzing"] = 0] = "Analyzing";
|
|
@@ -36,12 +37,8 @@ var ImportState;
|
|
|
36
37
|
export class FilesPage {
|
|
37
38
|
constructor(screen) {
|
|
38
39
|
this.screen = screen;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
* Do not overwrite this property or when you must then update the DataTable's `items` as well.
|
|
42
|
-
*/
|
|
43
|
-
this.files = [];
|
|
44
|
-
this.dt = new DataTable(() => this.files, { ariaLabel: 'Your files', active: true, selection: 'single' });
|
|
40
|
+
this.fs = new FileSystem();
|
|
41
|
+
this.dt = new DataTable(() => this.fs.files, { ariaLabel: 'Your files', active: true, selection: 'single' });
|
|
45
42
|
this.createProjectHandler = this.createProjectHandler.bind(this);
|
|
46
43
|
this.createFolderHandler = this.createFolderHandler.bind(this);
|
|
47
44
|
this.createSelectHandler = this.createSelectHandler.bind(this);
|
|
@@ -61,119 +58,22 @@ export class FilesPage {
|
|
|
61
58
|
this.dt.addEventListener('activate', this.itemActivateHandler.bind(this));
|
|
62
59
|
this.dt.addEventListener('render', this.handleTableRender.bind(this));
|
|
63
60
|
this.dt.addEventListener('select', this.handleTableSelect.bind(this));
|
|
61
|
+
this.dt.addEventListener('scrollend', this.handleTableScrollEnd.bind(this));
|
|
62
|
+
this.fs.observe();
|
|
63
|
+
this.fs.addEventListener('change', () => this.screen.render());
|
|
64
|
+
this.fs.addEventListener('error', (e) => {
|
|
65
|
+
const event = e;
|
|
66
|
+
this.errorMessage = event.detail;
|
|
67
|
+
});
|
|
68
|
+
this.fs.addEventListener('querycomplete', () => {
|
|
69
|
+
document.body.dispatchEvent(new Event('querycomplete', { bubbles: true }));
|
|
70
|
+
});
|
|
64
71
|
}
|
|
65
72
|
async refresh() {
|
|
66
|
-
this.resetList();
|
|
67
|
-
this.screen.render();
|
|
68
|
-
await this.readFiles();
|
|
69
|
-
}
|
|
70
|
-
resetList() {
|
|
71
|
-
this.files = [];
|
|
72
|
-
this.cursor = undefined;
|
|
73
|
-
this.breadcrumbs = undefined;
|
|
74
|
-
}
|
|
75
|
-
async readFiles() {
|
|
76
|
-
const { selectedSpace } = this.screen;
|
|
77
|
-
if (!selectedSpace) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
if (this.readingFiles) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
this.readingFiles = true;
|
|
84
|
-
const { cursor: filesCursor, folder } = this;
|
|
85
|
-
const opts = {
|
|
86
|
-
space: selectedSpace,
|
|
87
|
-
descending: true,
|
|
88
|
-
};
|
|
89
|
-
if (filesCursor) {
|
|
90
|
-
opts.cursor = filesCursor;
|
|
91
|
-
}
|
|
92
|
-
if (folder) {
|
|
93
|
-
opts.parent = folder;
|
|
94
|
-
}
|
|
95
|
-
try {
|
|
96
|
-
const result = await this.listFiles(opts);
|
|
97
|
-
const { items, cursor } = result;
|
|
98
|
-
this.files = this.files.concat(items).sort(this.filesSortFunction.bind(this));
|
|
99
|
-
this.cursor = cursor;
|
|
100
|
-
if (folder) {
|
|
101
|
-
const br = await this.screen.bindings.store.files.breadcrumbs(folder);
|
|
102
|
-
this.breadcrumbs = br.items.reverse();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
finally {
|
|
106
|
-
this.readingFiles = false;
|
|
107
|
-
}
|
|
108
|
-
this.screen.render();
|
|
109
|
-
}
|
|
110
|
-
async listFiles(opts) {
|
|
111
|
-
return this.screen.bindings.store.files.list(opts);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Sorts files on the list.
|
|
115
|
-
*
|
|
116
|
-
* Folders are always on top.
|
|
117
|
-
*/
|
|
118
|
-
filesSortFunction(a, b) {
|
|
119
|
-
if (a.kind !== b.kind) {
|
|
120
|
-
if (a.kind === FolderKind) {
|
|
121
|
-
return -1;
|
|
122
|
-
}
|
|
123
|
-
return 1;
|
|
124
|
-
}
|
|
125
|
-
if (a.kind === b.kind && a.kind === FolderKind) {
|
|
126
|
-
return (a.info.name || '').localeCompare(b.info.name || '');
|
|
127
|
-
}
|
|
128
|
-
return b.lastModified.time - a.lastModified.time;
|
|
129
|
-
}
|
|
130
|
-
handleFileEvent(event) {
|
|
131
|
-
const typed = event;
|
|
132
|
-
if (typed.parent && typed.parent !== this.folder) {
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
if (typed.alt !== 'meta') {
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
switch (event.operation) {
|
|
139
|
-
case 'created':
|
|
140
|
-
this.handleFileCreated(typed.data);
|
|
141
|
-
break;
|
|
142
|
-
case 'deleted':
|
|
143
|
-
this.handleFileDeleted(typed);
|
|
144
|
-
break;
|
|
145
|
-
case 'patch':
|
|
146
|
-
this.handleFilePatch(typed);
|
|
147
|
-
break;
|
|
148
|
-
default:
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
handleFileCreated(file) {
|
|
152
|
-
this.files.push(file);
|
|
153
|
-
this.files.sort(this.filesSortFunction.bind(this));
|
|
154
|
-
this.screen.render();
|
|
155
|
-
}
|
|
156
|
-
handleFileDeleted(event) {
|
|
157
|
-
this.removeFileFromList(event.key);
|
|
158
|
-
}
|
|
159
|
-
removeFileFromList(key) {
|
|
160
|
-
const index = this.files.findIndex(i => i.key === key);
|
|
161
|
-
if (index === -1) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
this.files.splice(index, 1);
|
|
165
|
-
this.screen.render();
|
|
166
|
-
}
|
|
167
|
-
handleFilePatch(event) {
|
|
168
|
-
const { data, key } = event;
|
|
169
|
-
const index = this.files.findIndex(i => i.key === key);
|
|
170
|
-
if (index === -1) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
const file = this.files[index];
|
|
174
|
-
const result = Patch.apply(file, data.patch);
|
|
175
|
-
this.files[index] = result.doc;
|
|
73
|
+
this.fs.resetList();
|
|
176
74
|
this.screen.render();
|
|
75
|
+
await this.fs.queryPage();
|
|
76
|
+
await this.fs.queryBreadcrumbs();
|
|
177
77
|
}
|
|
178
78
|
cancelCreateProjectDialog() {
|
|
179
79
|
this.screen.closeDialog('createProjectDialog');
|
|
@@ -273,8 +173,8 @@ export class FilesPage {
|
|
|
273
173
|
throw new Error('You need to select a space first');
|
|
274
174
|
}
|
|
275
175
|
const opts = {};
|
|
276
|
-
if (this.
|
|
277
|
-
opts.parent = this.
|
|
176
|
+
if (this.fs.parent) {
|
|
177
|
+
opts.parent = this.fs.parent;
|
|
278
178
|
}
|
|
279
179
|
const result = await this.screen.bindings.store.files.add(file, opts);
|
|
280
180
|
if (media) {
|
|
@@ -359,7 +259,7 @@ export class FilesPage {
|
|
|
359
259
|
this.importState = ImportState.Importing;
|
|
360
260
|
this.screen.render();
|
|
361
261
|
try {
|
|
362
|
-
await importProcessor.importProject(this.screen.bindings.store, selectedSpace, this.
|
|
262
|
+
await importProcessor.importProject(this.screen.bindings.store, selectedSpace, this.fs.parent);
|
|
363
263
|
this.importState = ImportState.Done;
|
|
364
264
|
this.screen.render();
|
|
365
265
|
}
|
|
@@ -401,8 +301,11 @@ export class FilesPage {
|
|
|
401
301
|
this.selectedItem = item;
|
|
402
302
|
this.screen.render();
|
|
403
303
|
}
|
|
304
|
+
handleTableScrollEnd() {
|
|
305
|
+
this.fs.debounceQuery();
|
|
306
|
+
}
|
|
404
307
|
openProject(key) {
|
|
405
|
-
const file = this.files.find(i => i.key === key);
|
|
308
|
+
const file = this.fs.files.find(i => i.key === key);
|
|
406
309
|
if (!file) {
|
|
407
310
|
throw new Error(`Invalid state: file not found`);
|
|
408
311
|
}
|
|
@@ -483,7 +386,7 @@ export class FilesPage {
|
|
|
483
386
|
await files.writeFile(path, data, { dispose: true });
|
|
484
387
|
}
|
|
485
388
|
renameFile(key) {
|
|
486
|
-
const file = this.files.find(i => i.key === key);
|
|
389
|
+
const file = this.fs.files.find(i => i.key === key);
|
|
487
390
|
if (!file) {
|
|
488
391
|
return;
|
|
489
392
|
}
|
|
@@ -503,7 +406,7 @@ export class FilesPage {
|
|
|
503
406
|
});
|
|
504
407
|
}
|
|
505
408
|
shareFile(key) {
|
|
506
|
-
const file = this.files.find(i => i.key === key);
|
|
409
|
+
const file = this.fs.files.find(i => i.key === key);
|
|
507
410
|
if (!file) {
|
|
508
411
|
return;
|
|
509
412
|
}
|
|
@@ -514,7 +417,7 @@ export class FilesPage {
|
|
|
514
417
|
dialog.modal = true;
|
|
515
418
|
document.body.appendChild(dialog);
|
|
516
419
|
dialog.open = true;
|
|
517
|
-
dialog.addEventListener('
|
|
420
|
+
dialog.addEventListener('close', () => {
|
|
518
421
|
document.body.removeChild(dialog);
|
|
519
422
|
});
|
|
520
423
|
}
|
|
@@ -554,7 +457,7 @@ export class FilesPage {
|
|
|
554
457
|
if (!selectedItem) {
|
|
555
458
|
return nothing;
|
|
556
459
|
}
|
|
557
|
-
const file = this.files.find(i => i.key === selectedItem);
|
|
460
|
+
const file = this.fs.files.find(i => i.key === selectedItem);
|
|
558
461
|
if (!file) {
|
|
559
462
|
return nothing;
|
|
560
463
|
}
|
|
@@ -649,7 +552,7 @@ export class FilesPage {
|
|
|
649
552
|
`;
|
|
650
553
|
}
|
|
651
554
|
renderBreadcrumbs() {
|
|
652
|
-
const { breadcrumbs = [] } = this;
|
|
555
|
+
const { breadcrumbs = [] } = this.fs;
|
|
653
556
|
if (!breadcrumbs.length) {
|
|
654
557
|
return html ``;
|
|
655
558
|
}
|
|
@@ -777,22 +680,10 @@ export class FilesPage {
|
|
|
777
680
|
`;
|
|
778
681
|
}
|
|
779
682
|
nameCell(item) {
|
|
780
|
-
|
|
781
|
-
switch (item.kind) {
|
|
782
|
-
case DataFileKind:
|
|
783
|
-
icon = 'schema';
|
|
784
|
-
break;
|
|
785
|
-
case FolderKind:
|
|
786
|
-
icon = 'folder';
|
|
787
|
-
break;
|
|
788
|
-
case ProjectKind:
|
|
789
|
-
icon = 'collectionsBookmark';
|
|
790
|
-
break;
|
|
791
|
-
default:
|
|
792
|
-
}
|
|
683
|
+
const icon = fileIcon(item);
|
|
793
684
|
return this.dt.cell(html `
|
|
794
685
|
${icon ? html `<ui-icon icon="${icon}" class="cell-icon"></ui-icon>` : nothing}
|
|
795
|
-
${item.info.name || 'Unnamed
|
|
686
|
+
${item.info.name || 'Unnamed file'}
|
|
796
687
|
`, { class: 'name-cell', data: { kind: item.kind } });
|
|
797
688
|
}
|
|
798
689
|
ownerCell(item) {
|