@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":"HttpClientCommands.js","sourceRoot":"","sources":["../../../src/pages/http-project/HttpClientCommands.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport { EnvironmentKind, ProjectFolderKind, ProjectRequestKind } from '@api-client/core/build/browser.js';\nimport { rename, close, folder, environment, request, deleteFile, send } from '../../ui/icons/Icons.js';\nimport ProjectNavigationElement from \"../../elements/project/ProjectNavigation.js\";\nimport { IContextMenuCommand, IExecuteOptions } from '../../contextual-menu/types.js';\nimport { SplitCloseDirection } from '../../elements/layout/type.js';\nimport { HttpProjectContextualStore } from './types.js';\n\nfunction findNavigation(element: HTMLElement): ProjectNavigationElement {\n if (element.localName === 'project-navigation') {\n return element as ProjectNavigationElement;\n }\n const root = element.getRootNode() as ShadowRoot;\n return root.host as ProjectNavigationElement;\n}\n\nfunction renameItem(init: IExecuteOptions<HttpProjectContextualStore>): void {\n const { key } = init.target.dataset\n if (!key) {\n return;\n }\n const nav = findNavigation(init.target as HTMLElement);\n nav.edited = key;\n}\n\nconst commands: IContextMenuCommand<HttpProjectContextualStore>[] = [\n // \n // Workspace tabs\n // \n \n {\n target: '.layout-tab',\n label: 'Duplicate',\n enabled: (ctx): boolean => {\n const { kind, key } = ctx.target.dataset;\n if (!kind || !key) {\n return false;\n }\n if (kind !== ProjectRequestKind) {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { kind, key } = init.target.dataset;\n if (!kind || !key) {\n return;\n }\n if (kind !== ProjectRequestKind) {\n return;\n }\n \n const project = init.store.get('project');\n const obj = project.findRequest(key);\n if (!obj) {\n return;\n }\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const parent = obj.getParent() || project;\n const cp = obj.clone();\n parent.addRequest(cp);\n layout.addItem({\n key: cp.key,\n kind,\n label: cp.info.renderLabel,\n icon: 'request'\n });\n callback({\n action: 'duplicate',\n key: cp.key,\n kind: obj.kind,\n });\n }\n },\n\n {\n target: '.layout-tab',\n label: '',\n type: 'separator',\n },\n\n {\n target: '.layout-tab',\n label: 'Close',\n icon: close,\n execute: (init): void => {\n const { key } = init.target.dataset;\n if (!key) {\n return;\n }\n const layout = init.store.get('layout');\n layout.removeItem(key);\n }\n },\n {\n target: '.layout-tab',\n label: 'Close others',\n enabled: (ctx): boolean => {\n const shadow = ctx.target.getRootNode() as ShadowRoot;\n const all = shadow.querySelectorAll('.layout-tab');\n if (all.length === 1) {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { key } = init.target.dataset;\n if (!key) {\n return;\n }\n const layout = init.store.get('layout');\n layout.removeRelative(key, SplitCloseDirection.both);\n },\n },\n {\n target: '.layout-tab',\n label: 'Close on the right',\n enabled: (ctx): boolean => {\n const next = ctx.target.nextElementSibling;\n if (!next) {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { key } = init.target.dataset;\n if (!key) {\n return;\n }\n const layout = init.store.get('layout');\n layout.removeRelative(key, SplitCloseDirection.right);\n },\n },\n {\n target: '.layout-tab',\n label: 'Close on the left',\n enabled: (ctx): boolean => {\n const { index } = ctx.target.dataset;\n if (index === '0') {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { key } = init.target.dataset;\n if (!key) {\n return;\n }\n const layout = init.store.get('layout');\n layout.removeRelative(key, SplitCloseDirection.left);\n },\n },\n\n {\n target: '.layout-tab',\n label: '',\n type: 'separator',\n },\n\n {\n target: '.layout-tab',\n label: 'Save',\n enabled: (ctx): boolean => {\n const { dirty } = ctx.target.dataset;\n if (dirty !== 'true') {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { key } = init.target.dataset;\n if (!key) {\n return;\n }\n const page = init.store.get('page');\n page.triggerSave(key);\n },\n },\n\n //\n // NAVIGATION\n //\n {\n target: \"project-navigation\",\n label: 'Add folder',\n title: 'Adds a new folder to the project',\n icon: folder,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const created = project.addFolder();\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: \"project-navigation\",\n label: 'Add request',\n title: 'Adds a new HTTP request to the project',\n icon: request,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const created = project.addRequest('http://');\n layout.addItem({\n key: created.key,\n kind: created.kind,\n label: created.info.renderLabel,\n icon: 'request'\n });\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: \"project-navigation\",\n label: 'Add environment',\n title: 'Adds a new environment definition to the project',\n icon: environment,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const created = project.addEnvironment('New environment');\n layout.addItem({\n key: created.key,\n kind: created.kind,\n label: created.info.renderLabel,\n icon: 'environment'\n });\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n },\n visible: (init) => init.store.has('project'),\n },\n\n {\n target: `project-navigation`,\n type: 'separator',\n label: '',\n },\n\n {\n target: `project-navigation`,\n label: 'Run project',\n icon: send,\n title: 'Runs all requests in the folder',\n execute(args): void {\n const page = args.store.get('page');\n page.openRunner();\n },\n },\n\n // \n // Navigation items\n // \n\n // folders\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Add folder',\n icon: folder,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const key = init.target.dataset.key as string;\n const created = project.addFolder(undefined, { parent: key, });\n const nav = findNavigation(init.target as HTMLElement);\n nav.edited = created.key;\n nav.openGroup(key);\n layout.requestNameUpdate(created.key);\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Add request',\n icon: request,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const key = init.target.dataset.key as string;\n const f = project.findFolder(key);\n if (f) {\n const created = f.addRequest('http://');\n const nav = findNavigation(init.target as HTMLElement);\n nav.edited = created.key;\n nav.openGroup(key);\n layout.addItem({\n key: created.key,\n kind: created.kind,\n label: created.info.renderLabel,\n icon: 'request'\n });\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n }\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Add environment',\n title: 'Adds a new environment definition to the folder',\n icon: environment,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const key = init.target.dataset.key as string;\n const f = project.findFolder(key);\n if (f) {\n const created = f.addEnvironment('New environment');\n const nav = findNavigation(init.target as HTMLElement);\n nav.edited = created.key;\n nav.openGroup(key);\n layout.addItem({\n key: created.key,\n kind: created.kind,\n label: created.info.renderLabel,\n icon: 'environment'\n });\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n }\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n type: 'separator',\n label: '',\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Run folder',\n icon: send,\n title: 'Runs all requests in the folder',\n execute(args): void {\n const key = args.target.dataset.key as string;\n // const project = args.store.get('project');\n const page = args.store.get('page');\n page.openRunner(key);\n // Events.Navigation.App.runProjectRunner({ key: project.key, parent: key, workspace: page.workspace });\n },\n },\n\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n type: 'separator',\n label: '',\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Rename',\n icon: rename,\n title: 'Renames this folder',\n execute: renameItem,\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Delete',\n icon: deleteFile,\n title: 'Deletes this folder',\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const key = init.target.dataset.key as string;\n const removed = project.removeFolder(key);\n if (removed) {\n layout.removeByParent(key)\n callback({\n action: 'delete',\n key,\n kind: removed.kind,\n removed,\n });\n } else {\n throw new Error(`Folder not found in the project.`);\n }\n },\n },\n\n // requests\n {\n target: `li[data-kind=\"${ProjectRequestKind}\"]`,\n label: 'Rename',\n icon: rename,\n title: 'Renames this request',\n execute: renameItem,\n },\n {\n target: `li[data-kind=\"${ProjectRequestKind}\"]`,\n label: 'Duplicate',\n title: 'Makes a duplicate of this request',\n execute: (init): void => {\n const key = init.target.dataset.key as string;\n const project = init.store.get('project');\n const obj = project.findRequest(key);\n if (!obj) {\n return;\n }\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const parent = obj.getParent() || project;\n const cp = obj.clone();\n const created = parent.addRequest(cp);\n layout.addItem({\n key: cp.key,\n kind: cp.kind,\n label: cp.info.renderLabel,\n icon: 'request'\n });\n callback({\n action: 'duplicate',\n key,\n kind: created.kind,\n });\n },\n },\n {\n target: `li[data-kind=\"${ProjectRequestKind}\"]`,\n label: 'Delete',\n icon: deleteFile,\n title: 'Deletes this request',\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const key = init.target.dataset.key as string;\n const removed = project.removeRequest(key);\n if (removed) {\n callback({\n action: 'delete',\n key,\n kind: removed.kind,\n removed,\n });\n } else {\n throw new Error(`Request not found in the project.`);\n }\n },\n },\n\n // environments\n {\n target: `li[data-kind=\"${EnvironmentKind}\"]`,\n label: 'Rename',\n icon: rename,\n title: 'Renames this environment',\n execute: renameItem,\n },\n\n {\n target: `li[data-kind=\"${EnvironmentKind}\"]`,\n label: 'Delete',\n icon: deleteFile,\n title: 'Deletes this environment',\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const key = init.target.dataset.key as string;\n const parent = init.target.dataset.parent as string | undefined;\n const removed = project.removeEnvironment(key, { parent: parent !== project.key ? parent : undefined });\n const nav = findNavigation(init.target as HTMLElement);\n nav.requestUpdate();\n if (removed) {\n callback({\n action: 'delete',\n key,\n kind: removed.kind,\n removed,\n });\n } else {\n throw new Error(`Request not found in the project.`);\n }\n },\n },\n\n];\n\nexport default commands;\n"]}
|
|
1
|
+
{"version":3,"file":"HttpClientCommands.js","sourceRoot":"","sources":["../../../src/pages/http-project/HttpClientCommands.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport { EnvironmentKind, ProjectFolderKind, ProjectRequestKind } from '@api-client/core/build/browser.js';\nimport { rename, close, folder, environment, request, deleteFile, send } from '../../ui/icons/Icons.js';\nimport ProjectNavigationElement from \"../../elements/project/ProjectNavigation.js\";\nimport { IContextMenuCommand, IExecuteOptions } from '../../contextual-menu/types.js';\nimport { SplitCloseDirection } from '../../elements/layout/type.js';\nimport { HttpProjectContextualStore } from './types.js';\n\nfunction findNavigation(element: HTMLElement): ProjectNavigationElement {\n if (element.localName === 'project-navigation') {\n return element as ProjectNavigationElement;\n }\n const root = element.getRootNode() as ShadowRoot;\n return root.host as ProjectNavigationElement;\n}\n\nfunction renameItem(init: IExecuteOptions<HttpProjectContextualStore>): void {\n const { key } = init.target.dataset\n if (!key) {\n return;\n }\n const nav = findNavigation(init.target as HTMLElement);\n nav.edited = key;\n}\n\nconst commands: IContextMenuCommand<HttpProjectContextualStore>[] = [\n // \n // Workspace tabs\n // \n \n {\n target: '.layout-tab',\n label: 'Duplicate',\n enabled: (ctx): boolean => {\n const { kind, key } = ctx.target.dataset;\n if (!kind || !key) {\n return false;\n }\n if (kind !== ProjectRequestKind) {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { kind, key } = init.target.dataset;\n if (!kind || !key) {\n return;\n }\n if (kind !== ProjectRequestKind) {\n return;\n }\n \n const project = init.store.get('project');\n const obj = project.findRequest(key);\n if (!obj) {\n return;\n }\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const parent = obj.getParent() || project;\n const cp = obj.clone();\n parent.addRequest(cp);\n layout.addItem({\n key: cp.key,\n kind,\n label: cp.info.renderLabel,\n icon: 'request'\n });\n callback({\n action: 'duplicate',\n key: cp.key,\n kind: obj.kind,\n });\n }\n },\n\n {\n target: '.layout-tab',\n label: '',\n type: 'separator',\n },\n\n {\n target: '.layout-tab',\n label: 'Close',\n icon: close,\n execute: (init): void => {\n const { key, panel } = init.target.dataset;\n if (!key || !panel) {\n return;\n }\n const layout = init.store.get('layout');\n const parent = layout.findPanel(panel);\n if (!parent) {\n return;\n }\n parent.removeItem(key);\n }\n },\n {\n target: '.layout-tab',\n label: 'Close others',\n enabled: (ctx): boolean => {\n const shadow = ctx.target.getRootNode() as ShadowRoot;\n const all = shadow.querySelectorAll('.layout-tab');\n if (all.length === 1) {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { key, panel } = init.target.dataset;\n if (!key || !panel) {\n return;\n }\n const layout = init.store.get('layout');\n const parent = layout.findPanel(panel);\n if (!parent) {\n return;\n }\n parent.removeRelative(key, SplitCloseDirection.both);\n },\n },\n {\n target: '.layout-tab',\n label: 'Close on the right',\n enabled: (ctx): boolean => {\n const next = ctx.target.nextElementSibling;\n if (!next) {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { key, panel } = init.target.dataset;\n if (!key || !panel) {\n return;\n }\n const layout = init.store.get('layout');\n const parent = layout.findPanel(panel);\n if (!parent) {\n return;\n }\n parent.removeRelative(key, SplitCloseDirection.right);\n },\n },\n {\n target: '.layout-tab',\n label: 'Close on the left',\n enabled: (ctx): boolean => {\n const { index } = ctx.target.dataset;\n if (index === '0') {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { key, panel } = init.target.dataset;\n if (!key || !panel) {\n return;\n }\n const layout = init.store.get('layout');\n const parent = layout.findPanel(panel);\n if (!parent) {\n return;\n }\n parent.removeRelative(key, SplitCloseDirection.left);\n },\n },\n\n {\n target: '.layout-tab',\n label: '',\n type: 'separator',\n },\n\n {\n target: '.layout-tab',\n label: 'Save',\n enabled: (ctx): boolean => {\n const { dirty } = ctx.target.dataset;\n if (dirty !== 'true') {\n return false;\n }\n return true;\n },\n execute: (init): void => {\n const { key } = init.target.dataset;\n if (!key) {\n return;\n }\n const page = init.store.get('page');\n page.triggerSave(key);\n },\n },\n\n //\n // NAVIGATION\n //\n {\n target: \"project-navigation\",\n label: 'Add folder',\n title: 'Adds a new folder to the project',\n icon: folder,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const created = project.addFolder();\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: \"project-navigation\",\n label: 'Add request',\n title: 'Adds a new HTTP request to the project',\n icon: request,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const created = project.addRequest('http://');\n layout.addItem({\n key: created.key,\n kind: created.kind,\n label: created.info.renderLabel,\n icon: 'request'\n });\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: \"project-navigation\",\n label: 'Add environment',\n title: 'Adds a new environment definition to the project',\n icon: environment,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const created = project.addEnvironment('New environment');\n layout.addItem({\n key: created.key,\n kind: created.kind,\n label: created.info.renderLabel,\n icon: 'environment'\n });\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n },\n visible: (init) => init.store.has('project'),\n },\n\n {\n target: `project-navigation`,\n type: 'separator',\n label: '',\n },\n\n {\n target: `project-navigation`,\n label: 'Run project',\n icon: send,\n title: 'Runs all requests in the folder',\n execute(args): void {\n const page = args.store.get('page');\n page.openRunner();\n },\n },\n\n // \n // Navigation items\n // \n\n // folders\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Add folder',\n icon: folder,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const key = init.target.dataset.key as string;\n const created = project.addFolder(undefined, { parent: key, });\n const nav = findNavigation(init.target as HTMLElement);\n nav.edited = created.key;\n nav.openGroup(key);\n layout.requestNameUpdate(created.key);\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Add request',\n icon: request,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const key = init.target.dataset.key as string;\n const f = project.findFolder(key);\n if (f) {\n const created = f.addRequest('http://');\n const nav = findNavigation(init.target as HTMLElement);\n nav.edited = created.key;\n nav.openGroup(key);\n layout.addItem({\n key: created.key,\n kind: created.kind,\n label: created.info.renderLabel,\n icon: 'request'\n });\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n }\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Add environment',\n title: 'Adds a new environment definition to the folder',\n icon: environment,\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const key = init.target.dataset.key as string;\n const f = project.findFolder(key);\n if (f) {\n const created = f.addEnvironment('New environment');\n const nav = findNavigation(init.target as HTMLElement);\n nav.edited = created.key;\n nav.openGroup(key);\n layout.addItem({\n key: created.key,\n kind: created.kind,\n label: created.info.renderLabel,\n icon: 'environment'\n });\n callback({\n action: 'add',\n key: created.key,\n kind: created.kind,\n });\n }\n },\n visible: (init) => init.store.has('project'),\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n type: 'separator',\n label: '',\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Run folder',\n icon: send,\n title: 'Runs all requests in the folder',\n execute(args): void {\n const key = args.target.dataset.key as string;\n // const project = args.store.get('project');\n const page = args.store.get('page');\n page.openRunner(key);\n // Events.Navigation.App.runProjectRunner({ key: project.key, parent: key, workspace: page.workspace });\n },\n },\n\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n type: 'separator',\n label: '',\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Rename',\n icon: rename,\n title: 'Renames this folder',\n execute: renameItem,\n },\n {\n target: `li[data-kind=\"${ProjectFolderKind}\"]`,\n label: 'Delete',\n icon: deleteFile,\n title: 'Deletes this folder',\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const key = init.target.dataset.key as string;\n const removed = project.removeFolder(key);\n if (removed) {\n layout.removeByParent(key)\n callback({\n action: 'delete',\n key,\n kind: removed.kind,\n removed,\n });\n } else {\n throw new Error(`Folder not found in the project.`);\n }\n },\n },\n\n // requests\n {\n target: `li[data-kind=\"${ProjectRequestKind}\"]`,\n label: 'Rename',\n icon: rename,\n title: 'Renames this request',\n execute: renameItem,\n },\n {\n target: `li[data-kind=\"${ProjectRequestKind}\"]`,\n label: 'Duplicate',\n title: 'Makes a duplicate of this request',\n execute: (init): void => {\n const key = init.target.dataset.key as string;\n const project = init.store.get('project');\n const obj = project.findRequest(key);\n if (!obj) {\n return;\n }\n const callback = init.store.get('callback');\n const layout = init.store.get('layout');\n const parent = obj.getParent() || project;\n const cp = obj.clone();\n const created = parent.addRequest(cp);\n layout.addItem({\n key: cp.key,\n kind: cp.kind,\n label: cp.info.renderLabel,\n icon: 'request'\n });\n callback({\n action: 'duplicate',\n key,\n kind: created.kind,\n });\n },\n },\n {\n target: `li[data-kind=\"${ProjectRequestKind}\"]`,\n label: 'Delete',\n icon: deleteFile,\n title: 'Deletes this request',\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const key = init.target.dataset.key as string;\n const removed = project.removeRequest(key);\n if (removed) {\n callback({\n action: 'delete',\n key,\n kind: removed.kind,\n removed,\n });\n } else {\n throw new Error(`Request not found in the project.`);\n }\n },\n },\n\n // environments\n {\n target: `li[data-kind=\"${EnvironmentKind}\"]`,\n label: 'Rename',\n icon: rename,\n title: 'Renames this environment',\n execute: renameItem,\n },\n\n {\n target: `li[data-kind=\"${EnvironmentKind}\"]`,\n label: 'Delete',\n icon: deleteFile,\n title: 'Deletes this environment',\n execute: (init): void => {\n const project = init.store.get('project');\n const callback = init.store.get('callback');\n const key = init.target.dataset.key as string;\n const parent = init.target.dataset.parent as string | undefined;\n const removed = project.removeEnvironment(key, { parent: parent !== project.key ? parent : undefined });\n const nav = findNavigation(init.target as HTMLElement);\n nav.requestUpdate();\n if (removed) {\n callback({\n action: 'delete',\n key,\n kind: removed.kind,\n removed,\n });\n } else {\n throw new Error(`Request not found in the project.`);\n }\n },\n },\n\n];\n\nexport default commands;\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ContextListResult, ContextSpaceListOptions, DeletedBroadcastEvent, FileAccessBroadcastEvent, FileBreadcrumb, FilePatchBroadcastEvent, IFile, ListFileKind } from "@api-client/core/build/browser.js";
|
|
2
|
+
type FilesSource = 'own' | 'shared';
|
|
3
|
+
/**
|
|
4
|
+
* Contains a logic to read files from the store.
|
|
5
|
+
*
|
|
6
|
+
* It uses app events to query for the data.
|
|
7
|
+
*/
|
|
8
|
+
export declare class FileSystem extends EventTarget {
|
|
9
|
+
source: FilesSource;
|
|
10
|
+
/**
|
|
11
|
+
* The list of files to render.
|
|
12
|
+
* Do not overwrite this property or when you must then update the DataTable's `items` as well.
|
|
13
|
+
*/
|
|
14
|
+
files: IFile[];
|
|
15
|
+
/**
|
|
16
|
+
* The pagination cursor for files.
|
|
17
|
+
*/
|
|
18
|
+
cursor?: string;
|
|
19
|
+
/**
|
|
20
|
+
* This is set when the last files query did not yeld results.
|
|
21
|
+
*/
|
|
22
|
+
queryEnded?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* The currently rendered breadcrumbs.
|
|
25
|
+
*/
|
|
26
|
+
breadcrumbs?: FileBreadcrumb[];
|
|
27
|
+
/**
|
|
28
|
+
* Whether the UI is reading files
|
|
29
|
+
*/
|
|
30
|
+
reading?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* The list of file kinds to list.
|
|
33
|
+
* Folders are always included.
|
|
34
|
+
*/
|
|
35
|
+
kinds?: ListFileKind[];
|
|
36
|
+
/**
|
|
37
|
+
* The timeout for the query debouncer.
|
|
38
|
+
* When any property change this is the time the element will wait
|
|
39
|
+
* until the actual query is made.
|
|
40
|
+
*/
|
|
41
|
+
debounceTimeout: number;
|
|
42
|
+
debouncerValue?: number;
|
|
43
|
+
/**
|
|
44
|
+
* The variable parent folder key.
|
|
45
|
+
* This is set when interacting with the UI or when the `folder` attribute change.
|
|
46
|
+
*/
|
|
47
|
+
parent?: string;
|
|
48
|
+
/**
|
|
49
|
+
* The page limit. Defaults to the store defaults.
|
|
50
|
+
* @attribute
|
|
51
|
+
*/
|
|
52
|
+
limit?: number;
|
|
53
|
+
filesChannel: BroadcastChannel;
|
|
54
|
+
eventsTarget: EventTarget;
|
|
55
|
+
constructor();
|
|
56
|
+
observe(): void;
|
|
57
|
+
unobserve(): void;
|
|
58
|
+
fileMetaMessageHandler(e: MessageEvent): void;
|
|
59
|
+
handleFileCreated(file: IFile): void;
|
|
60
|
+
handleFileDeleted(event: DeletedBroadcastEvent): void;
|
|
61
|
+
handleFileAccessGranted(event: FileAccessBroadcastEvent): Promise<void>;
|
|
62
|
+
handleFileAccessRemoved(event: FileAccessBroadcastEvent): void;
|
|
63
|
+
removeFileFromList(key: string): void;
|
|
64
|
+
handleFilePatch(event: FilePatchBroadcastEvent): void;
|
|
65
|
+
debounceQuery(): void;
|
|
66
|
+
resetList(): void;
|
|
67
|
+
queryPage(): Promise<void>;
|
|
68
|
+
queryBreadcrumbs(): Promise<void>;
|
|
69
|
+
getPageQueryOptions(): ContextSpaceListOptions;
|
|
70
|
+
listFiles(): Promise<ContextListResult<IFile>>;
|
|
71
|
+
listBreadcrumbs(folder: string): Promise<ContextListResult<FileBreadcrumb>>;
|
|
72
|
+
notifyError(error: string): void;
|
|
73
|
+
notifyUpdate(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Sets a parent and makes the query.
|
|
76
|
+
* @param key The key of the parent to query. Empty for root folder.
|
|
77
|
+
*/
|
|
78
|
+
selectFolder(key?: string): void;
|
|
79
|
+
/**
|
|
80
|
+
* Moves to a parent folder, if any.
|
|
81
|
+
*/
|
|
82
|
+
parentUp(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* @param target The HTML element that is a scrollable list if files.
|
|
85
|
+
* @returns True when the scroll position indicates that the user scrolled near the end of the list.
|
|
86
|
+
*/
|
|
87
|
+
isListEnd(target: HTMLElement): boolean;
|
|
88
|
+
}
|
|
89
|
+
export {};
|
|
90
|
+
//# sourceMappingURL=FileSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileSystem.d.ts","sourceRoot":"","sources":["../../src/store/FileSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,cAAc,EAEd,uBAAuB,EACvB,KAAK,EACL,YAAY,EACb,MAAM,mCAAmC,CAAC;AAM3C,KAAK,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpC;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,MAAM,EAAE,WAAW,CAAS;IAE5B;;;OAGG;IACH,KAAK,EAAE,KAAK,EAAE,CAAM;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAE/B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IAEvB;;;;OAIG;IACH,eAAe,SAAO;IAEtB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,YAAY,mBAA8C;IAE1D,YAAY,EAAE,WAAW,CAAiB;;IAO1C,OAAO,IAAI,IAAI;IAIf,SAAS,IAAI,IAAI;IAIjB,sBAAsB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI;IAkB7C,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAOpC,iBAAiB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAI/C,uBAAuB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7E,uBAAuB,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI;IAQ9D,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAUrC,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI;IAYrD,aAAa,IAAI,IAAI;IAUrB,SAAS,IAAI,IAAI;IAOX,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC1B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC,mBAAmB,IAAI,uBAAuB;IAkBxC,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAS9C,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAIjF,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMhC,YAAY,IAAI,IAAI;IAIpB;;;OAGG;IACH,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQhC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB/B;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;CAKxC"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { Patch } from "@api-client/json";
|
|
2
|
+
import { filesSortFunction } from "../elements/store/FilesLib.js";
|
|
3
|
+
import { Events } from "../events/Events.js";
|
|
4
|
+
import { StoreBroadcast } from "../http-client/store/StoreBroadcast.js";
|
|
5
|
+
/**
|
|
6
|
+
* Contains a logic to read files from the store.
|
|
7
|
+
*
|
|
8
|
+
* It uses app events to query for the data.
|
|
9
|
+
*/
|
|
10
|
+
export class FileSystem extends EventTarget {
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
this.source = 'own';
|
|
14
|
+
/**
|
|
15
|
+
* The list of files to render.
|
|
16
|
+
* Do not overwrite this property or when you must then update the DataTable's `items` as well.
|
|
17
|
+
*/
|
|
18
|
+
this.files = [];
|
|
19
|
+
/**
|
|
20
|
+
* The timeout for the query debouncer.
|
|
21
|
+
* When any property change this is the time the element will wait
|
|
22
|
+
* until the actual query is made.
|
|
23
|
+
*/
|
|
24
|
+
this.debounceTimeout = 100;
|
|
25
|
+
this.filesChannel = new BroadcastChannel(StoreBroadcast.files);
|
|
26
|
+
this.eventsTarget = document.body;
|
|
27
|
+
this.fileMetaMessageHandler = this.fileMetaMessageHandler.bind(this);
|
|
28
|
+
}
|
|
29
|
+
observe() {
|
|
30
|
+
this.filesChannel.addEventListener('message', this.fileMetaMessageHandler);
|
|
31
|
+
}
|
|
32
|
+
unobserve() {
|
|
33
|
+
this.filesChannel.removeEventListener('message', this.fileMetaMessageHandler);
|
|
34
|
+
}
|
|
35
|
+
fileMetaMessageHandler(e) {
|
|
36
|
+
const event = e.data;
|
|
37
|
+
if (event.parent !== this.parent) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (event.alt !== 'meta') {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
switch (event.operation) {
|
|
44
|
+
case 'created':
|
|
45
|
+
this.handleFileCreated(event.data);
|
|
46
|
+
break;
|
|
47
|
+
case 'deleted':
|
|
48
|
+
this.handleFileDeleted(event);
|
|
49
|
+
break;
|
|
50
|
+
case 'patch':
|
|
51
|
+
this.handleFilePatch(event);
|
|
52
|
+
break;
|
|
53
|
+
case 'access-granted':
|
|
54
|
+
this.handleFileAccessGranted(event);
|
|
55
|
+
break;
|
|
56
|
+
case 'access-removed':
|
|
57
|
+
this.handleFileAccessRemoved(event);
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
handleFileCreated(file) {
|
|
63
|
+
this.files.push(file);
|
|
64
|
+
// We don't sort here so files that appear at the end which makes sense because the list is scrolling.
|
|
65
|
+
// this.files.sort(filesSortFunction);
|
|
66
|
+
this.notifyUpdate();
|
|
67
|
+
}
|
|
68
|
+
handleFileDeleted(event) {
|
|
69
|
+
this.removeFileFromList(event.key);
|
|
70
|
+
}
|
|
71
|
+
async handleFileAccessGranted(event) {
|
|
72
|
+
if (this.source !== 'shared') {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const { key } = event;
|
|
76
|
+
try {
|
|
77
|
+
const file = await Events.Store.File.read(key, false, this.eventsTarget);
|
|
78
|
+
const index = this.files.findIndex(i => i.key === key);
|
|
79
|
+
if (index >= 0) {
|
|
80
|
+
this.files.splice(index, 1);
|
|
81
|
+
}
|
|
82
|
+
this.handleFileCreated(file);
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
// eslint-disable-next-line no-console
|
|
86
|
+
console.warn(e);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
handleFileAccessRemoved(event) {
|
|
90
|
+
if (this.source !== 'shared') {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const { key } = event;
|
|
94
|
+
this.removeFileFromList(key);
|
|
95
|
+
}
|
|
96
|
+
removeFileFromList(key) {
|
|
97
|
+
const index = this.files.findIndex(i => i.key === key);
|
|
98
|
+
if (index === -1) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
this.files.splice(index, 1);
|
|
102
|
+
this.notifyUpdate();
|
|
103
|
+
this.dispatchEvent(new CustomEvent('delete', { detail: key }));
|
|
104
|
+
}
|
|
105
|
+
handleFilePatch(event) {
|
|
106
|
+
const { data, key } = event;
|
|
107
|
+
const index = this.files.findIndex(i => i.key === key);
|
|
108
|
+
if (index === -1) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const file = this.files[index];
|
|
112
|
+
const result = Patch.apply(file, data.patch);
|
|
113
|
+
this.files[index] = result.doc;
|
|
114
|
+
this.notifyUpdate();
|
|
115
|
+
}
|
|
116
|
+
debounceQuery() {
|
|
117
|
+
if (this.debouncerValue) {
|
|
118
|
+
clearTimeout(this.debouncerValue);
|
|
119
|
+
}
|
|
120
|
+
this.debouncerValue = window.setTimeout(() => {
|
|
121
|
+
this.queryPage();
|
|
122
|
+
this.queryBreadcrumbs();
|
|
123
|
+
}, this.debounceTimeout);
|
|
124
|
+
}
|
|
125
|
+
resetList() {
|
|
126
|
+
this.files = [];
|
|
127
|
+
this.cursor = undefined;
|
|
128
|
+
this.breadcrumbs = undefined;
|
|
129
|
+
this.queryEnded = false;
|
|
130
|
+
}
|
|
131
|
+
async queryPage() {
|
|
132
|
+
if (this.reading || this.queryEnded) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
this.reading = true;
|
|
136
|
+
this.notifyUpdate();
|
|
137
|
+
try {
|
|
138
|
+
const result = await this.listFiles();
|
|
139
|
+
if (!result) {
|
|
140
|
+
throw new Error(`Files event not handled.`);
|
|
141
|
+
}
|
|
142
|
+
const { items, cursor } = result;
|
|
143
|
+
if (!items.length) {
|
|
144
|
+
this.queryEnded = true;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
if (!this.files.length) {
|
|
148
|
+
// we only sort the first page as later the user scrolls and sorting would change the order.
|
|
149
|
+
items.sort(filesSortFunction);
|
|
150
|
+
}
|
|
151
|
+
this.files = this.files.concat(items);
|
|
152
|
+
}
|
|
153
|
+
if (cursor) {
|
|
154
|
+
this.cursor = cursor;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (e) {
|
|
158
|
+
const err = e;
|
|
159
|
+
this.notifyError(`Unable to load files list. ${err.message}`);
|
|
160
|
+
// eslint-disable-next-line no-console
|
|
161
|
+
console.error(e);
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
this.reading = false;
|
|
165
|
+
}
|
|
166
|
+
this.dispatchEvent(new Event('querycomplete'));
|
|
167
|
+
this.notifyUpdate();
|
|
168
|
+
}
|
|
169
|
+
async queryBreadcrumbs() {
|
|
170
|
+
if (this.parent) {
|
|
171
|
+
const br = await this.listBreadcrumbs(this.parent);
|
|
172
|
+
this.breadcrumbs = br.items;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
this.breadcrumbs = undefined;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
getPageQueryOptions() {
|
|
179
|
+
const { cursor: filesCursor, parent, limit } = this;
|
|
180
|
+
const opts = {
|
|
181
|
+
space: '',
|
|
182
|
+
descending: true,
|
|
183
|
+
};
|
|
184
|
+
if (filesCursor) {
|
|
185
|
+
opts.cursor = filesCursor;
|
|
186
|
+
}
|
|
187
|
+
if (parent) {
|
|
188
|
+
opts.parent = parent;
|
|
189
|
+
}
|
|
190
|
+
if (typeof limit === 'number' && limit) {
|
|
191
|
+
opts.limit = limit;
|
|
192
|
+
}
|
|
193
|
+
return opts;
|
|
194
|
+
}
|
|
195
|
+
async listFiles() {
|
|
196
|
+
const { kinds } = this;
|
|
197
|
+
const opts = this.getPageQueryOptions();
|
|
198
|
+
if (this.source === 'shared') {
|
|
199
|
+
return Events.Store.File.listShared(kinds, opts, this.eventsTarget);
|
|
200
|
+
}
|
|
201
|
+
return Events.Store.File.list(kinds, opts, this.eventsTarget);
|
|
202
|
+
}
|
|
203
|
+
async listBreadcrumbs(folder) {
|
|
204
|
+
return Events.Store.File.breadcrumbs(folder, this.eventsTarget);
|
|
205
|
+
}
|
|
206
|
+
notifyError(error) {
|
|
207
|
+
this.dispatchEvent(new CustomEvent('error', {
|
|
208
|
+
detail: error,
|
|
209
|
+
}));
|
|
210
|
+
}
|
|
211
|
+
notifyUpdate() {
|
|
212
|
+
this.dispatchEvent(new Event('change'));
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Sets a parent and makes the query.
|
|
216
|
+
* @param key The key of the parent to query. Empty for root folder.
|
|
217
|
+
*/
|
|
218
|
+
selectFolder(key) {
|
|
219
|
+
this.parent = key;
|
|
220
|
+
this.resetList();
|
|
221
|
+
this.debounceQuery();
|
|
222
|
+
// this.queryPage();
|
|
223
|
+
this.queryBreadcrumbs();
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Moves to a parent folder, if any.
|
|
227
|
+
*/
|
|
228
|
+
async parentUp() {
|
|
229
|
+
const { breadcrumbs = [] } = this;
|
|
230
|
+
const [, parent] = breadcrumbs;
|
|
231
|
+
if (!parent) {
|
|
232
|
+
if (!this.parent) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
this.parent = undefined;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
if (this.parent === parent.key) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
this.parent = parent.key;
|
|
242
|
+
}
|
|
243
|
+
this.resetList();
|
|
244
|
+
await Promise.all([
|
|
245
|
+
this.queryPage(),
|
|
246
|
+
this.queryBreadcrumbs(),
|
|
247
|
+
]);
|
|
248
|
+
this.notifyUpdate();
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* @param target The HTML element that is a scrollable list if files.
|
|
252
|
+
* @returns True when the scroll position indicates that the user scrolled near the end of the list.
|
|
253
|
+
*/
|
|
254
|
+
isListEnd(target) {
|
|
255
|
+
const { scrollTop, offsetHeight, scrollHeight } = target;
|
|
256
|
+
// 20 is the offset which qualifies as the end. An arbitrary number.
|
|
257
|
+
return scrollTop + offsetHeight >= scrollHeight - 20;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=FileSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileSystem.js","sourceRoot":"","sources":["../../src/store/FileSystem.ts"],"names":[],"mappings":"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","sourcesContent":["import { \n BroadcastEvent,\n BroadcastFileData,\n ContextListResult,\n ContextSpaceListOptions,\n DeletedBroadcastEvent,\n FileAccessBroadcastEvent,\n FileBreadcrumb, \n FileMetaCreatedBroadcastEvent, \n FilePatchBroadcastEvent, \n IFile,\n ListFileKind,\n} from \"@api-client/core/build/browser.js\";\nimport { Patch } from \"@api-client/json\";\nimport { filesSortFunction } from \"../elements/store/FilesLib.js\";\nimport { Events } from \"../events/Events.js\";\nimport { StoreBroadcast } from \"../http-client/store/StoreBroadcast.js\";\n\ntype FilesSource = 'own' | 'shared';\n\n/**\n * Contains a logic to read files from the store.\n * \n * It uses app events to query for the data.\n */\nexport class FileSystem extends EventTarget {\n source: FilesSource = 'own';\n\n /**\n * The list of files to render.\n * Do not overwrite this property or when you must then update the DataTable's `items` as well.\n */\n files: IFile[] = [];\n\n /**\n * The pagination cursor for files.\n */\n cursor?: string;\n\n /**\n * This is set when the last files query did not yeld results.\n */\n queryEnded?: boolean;\n\n /**\n * The currently rendered breadcrumbs.\n */\n breadcrumbs?: FileBreadcrumb[];\n\n /**\n * Whether the UI is reading files \n */\n reading?: boolean;\n\n /**\n * The list of file kinds to list.\n * Folders are always included.\n */\n kinds?: ListFileKind[];\n\n /**\n * The timeout for the query debouncer.\n * When any property change this is the time the element will wait\n * until the actual query is made.\n */\n debounceTimeout = 100;\n\n debouncerValue?: number;\n\n /**\n * The variable parent folder key.\n * This is set when interacting with the UI or when the `folder` attribute change.\n */\n parent?: string;\n\n /**\n * The page limit. Defaults to the store defaults.\n * @attribute\n */\n limit?: number;\n\n filesChannel = new BroadcastChannel(StoreBroadcast.files);\n\n eventsTarget: EventTarget = document.body;\n\n constructor() {\n super();\n this.fileMetaMessageHandler = this.fileMetaMessageHandler.bind(this);\n }\n\n observe(): void {\n this.filesChannel.addEventListener('message', this.fileMetaMessageHandler);\n }\n\n unobserve(): void {\n this.filesChannel.removeEventListener('message', this.fileMetaMessageHandler);\n }\n\n fileMetaMessageHandler(e: MessageEvent): void {\n const event = e.data as BroadcastEvent & BroadcastFileData;\n if (event.parent !== this.parent) {\n return;\n }\n if (event.alt !== 'meta') {\n return;\n }\n switch (event.operation) {\n case 'created': this.handleFileCreated((event as FileMetaCreatedBroadcastEvent).data); break;\n case 'deleted': this.handleFileDeleted(event as DeletedBroadcastEvent); break;\n case 'patch': this.handleFilePatch(event as FilePatchBroadcastEvent); break;\n case 'access-granted': this.handleFileAccessGranted(event as FileAccessBroadcastEvent); break;\n case 'access-removed': this.handleFileAccessRemoved(event as FileAccessBroadcastEvent); break;\n default:\n }\n }\n\n handleFileCreated(file: IFile): void {\n this.files.push(file);\n // We don't sort here so files that appear at the end which makes sense because the list is scrolling.\n // this.files.sort(filesSortFunction);\n this.notifyUpdate();\n }\n\n handleFileDeleted(event: DeletedBroadcastEvent): void {\n this.removeFileFromList(event.key);\n }\n\n async handleFileAccessGranted(event: FileAccessBroadcastEvent): Promise<void> {\n if (this.source !== 'shared') {\n return;\n }\n const { key } = event;\n try {\n const file = await Events.Store.File.read(key, false, this.eventsTarget);\n const index = this.files.findIndex(i => i.key === key);\n if (index >= 0) {\n this.files.splice(index, 1);\n }\n this.handleFileCreated(file);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(e);\n }\n }\n\n handleFileAccessRemoved(event: FileAccessBroadcastEvent): void {\n if (this.source !== 'shared') {\n return;\n }\n const { key } = event;\n this.removeFileFromList(key);\n }\n\n removeFileFromList(key: string): void {\n const index = this.files.findIndex(i => i.key === key);\n if (index === -1) {\n return;\n }\n this.files.splice(index, 1);\n this.notifyUpdate();\n this.dispatchEvent(new CustomEvent('delete', { detail: key }));\n }\n\n handleFilePatch(event: FilePatchBroadcastEvent): void {\n const { data, key } = event;\n const index = this.files.findIndex(i => i.key === key);\n if (index === -1) {\n return;\n }\n const file = this.files[index];\n const result = Patch.apply(file, data.patch);\n this.files[index] = result.doc as IFile;\n this.notifyUpdate();\n }\n\n debounceQuery(): void {\n if (this.debouncerValue) {\n clearTimeout(this.debouncerValue);\n }\n this.debouncerValue = window.setTimeout(() => { \n this.queryPage();\n this.queryBreadcrumbs();\n }, this.debounceTimeout);\n }\n\n resetList(): void {\n this.files = [];\n this.cursor = undefined;\n this.breadcrumbs = undefined;\n this.queryEnded = false;\n }\n\n async queryPage(): Promise<void> {\n if (this.reading || this.queryEnded) {\n return;\n }\n this.reading = true;\n this.notifyUpdate();\n try {\n const result = await this.listFiles();\n if (!result) {\n throw new Error(`Files event not handled.`);\n }\n const { items, cursor } = result;\n if (!items.length) {\n this.queryEnded = true;\n } else {\n if (!this.files.length) {\n // we only sort the first page as later the user scrolls and sorting would change the order.\n items.sort(filesSortFunction);\n }\n this.files = this.files.concat(items);\n }\n if (cursor) {\n this.cursor = cursor;\n }\n } catch(e) {\n const err = e as Error;\n this.notifyError(`Unable to load files list. ${err.message}`);\n // eslint-disable-next-line no-console\n console.error(e);\n } finally {\n this.reading = false;\n }\n this.dispatchEvent(new Event('querycomplete'));\n this.notifyUpdate();\n }\n\n async queryBreadcrumbs(): Promise<void> {\n if (this.parent) {\n const br = await this.listBreadcrumbs(this.parent);\n this.breadcrumbs = br.items;\n } else {\n this.breadcrumbs = undefined;\n }\n }\n\n getPageQueryOptions(): ContextSpaceListOptions {\n const { cursor: filesCursor, parent, limit } = this;\n const opts: ContextSpaceListOptions = {\n space: '', // this is filled by the bindings.\n descending: true,\n };\n if (filesCursor) {\n opts.cursor = filesCursor;\n }\n if (parent) {\n opts.parent = parent;\n }\n if (typeof limit === 'number' && limit) {\n opts.limit = limit;\n }\n return opts;\n }\n\n async listFiles(): Promise<ContextListResult<IFile>> {\n const { kinds } = this;\n const opts = this.getPageQueryOptions();\n if (this.source === 'shared') {\n return Events.Store.File.listShared(kinds, opts, this.eventsTarget);\n }\n return Events.Store.File.list(kinds, opts, this.eventsTarget);\n }\n\n async listBreadcrumbs(folder: string): Promise<ContextListResult<FileBreadcrumb>> {\n return Events.Store.File.breadcrumbs(folder, this.eventsTarget);\n }\n\n notifyError(error: string): void {\n this.dispatchEvent(new CustomEvent<string>('error', {\n detail: error,\n }));\n }\n\n notifyUpdate(): void {\n this.dispatchEvent(new Event('change'));\n }\n\n /**\n * Sets a parent and makes the query.\n * @param key The key of the parent to query. Empty for root folder.\n */\n selectFolder(key?: string): void {\n this.parent = key;\n this.resetList();\n this.debounceQuery();\n // this.queryPage();\n this.queryBreadcrumbs();\n }\n\n /**\n * Moves to a parent folder, if any.\n */\n async parentUp(): Promise<void> {\n const { breadcrumbs = [] } = this;\n const [, parent] = breadcrumbs;\n if (!parent) {\n if (!this.parent) {\n return;\n }\n this.parent = undefined;\n } else {\n if (this.parent === parent.key) {\n return;\n }\n this.parent = parent.key;\n }\n this.resetList();\n await Promise.all([\n this.queryPage(),\n this.queryBreadcrumbs(),\n ]);\n this.notifyUpdate();\n }\n\n /**\n * @param target The HTML element that is a scrollable list if files.\n * @returns True when the scroll position indicates that the user scrolled near the end of the list.\n */\n isListEnd(target: HTMLElement): boolean {\n const { scrollTop, offsetHeight, scrollHeight } = target;\n // 20 is the offset which qualifies as the end. An arbitrary number.\n return scrollTop + offsetHeight >= scrollHeight - 20; \n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-styles.d.ts","sourceRoot":"","sources":["../../src/styles/global-styles.ts"],"names":[],"mappings":"AAEA;;;;GAIG;;AACH,
|
|
1
|
+
{"version":3,"file":"global-styles.d.ts","sourceRoot":"","sources":["../../src/styles/global-styles.ts"],"names":[],"mappings":"AAEA;;;;GAIG;;AACH,wBA2FE"}
|
|
@@ -64,6 +64,13 @@ body {
|
|
|
64
64
|
justify-content: center;
|
|
65
65
|
position: absolute;
|
|
66
66
|
inset: 0;
|
|
67
|
+
background-color: var(--md-sys-color-surface);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.message,
|
|
71
|
+
.sub-message,
|
|
72
|
+
.auth-required-screen {
|
|
73
|
+
color: var(--md-sys-color-on-surface);
|
|
67
74
|
}
|
|
68
75
|
|
|
69
76
|
.full-error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-styles.js","sourceRoot":"","sources":["../../src/styles/global-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;;;GAIG;AACH,eAAe,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"global-styles.js","sourceRoot":"","sources":["../../src/styles/global-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;;;GAIG;AACH,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FjB,CAAC","sourcesContent":["import { css } from 'lit';\n\n/** \n * Global styles for all pages.\n * \n * Note, all colors used here should have a CSS variable assigned.\n */\nexport default css`\nhtml, body, #app {\n width: 100vw;\n min-height: 100vh;\n margin: 0;\n padding: 0;\n}\n\nbody {\n user-select: none;\n background-color: var(--md-sys-color-background);\n}\n\n[hidden] {\n display: none !important;\n}\n\n.text-selectable {\n user-select: text;\n}\n\n.general-error {\n margin: 40px 0;\n text-align: center;\n user-select: text;\n}\n\n.start-page-header-title {\n flex: 1;\n}\n\n.navigation-list {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.navigation-item a {\n display: flex;\n align-items: center;\n height: 48px;\n padding-left: 24px;\n text-decoration: none;\n}\n\n.title-area {\n display: flex;\n align-items: center;\n}\n\n.auth-required-screen,\n.app-loader,\n.full-page-alert {\n display: flex;\n flex-direction: column;\n flex: 1;\n align-items: center;\n justify-content: center;\n position: absolute;\n inset: 0;\n background-color: var(--md-sys-color-surface);\n}\n\n.message,\n.sub-message,\n.auth-required-screen {\n color: var(--md-sys-color-on-surface);\n}\n\n.full-error {\n flex: 1;\n align-items: start;\n justify-content: center;\n display: flex;\n flex-direction: column;\n margin: 40px;\n}\n\n.full-error .description {\n max-width: 800px;\n}\n\n.error-dialog {\n background-color: var(--md-sys-color-error-container);\n color: var(--md-sys-color-on-error-container);\n min-width: 256px;\n}\n\n.error-dialog p {\n user-select: text;\n}\n`;\n"]}
|
package/dist/ui/icons/Icons.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { SVGTemplateResult } from 'lit';
|
|
|
5
5
|
* @returns Complete SVG icon definition
|
|
6
6
|
*/
|
|
7
7
|
export declare const iconWrapper: (tpl: SVGTemplateResult, width?: number, height?: number, top?: number, left?: number) => SVGTemplateResult;
|
|
8
|
-
export type IconType = 'add' | 'api' | 'apps' | 'arrowBack' | 'arrowDropDown' | 'cancel' | 'cancelFilled' | 'check' | 'checkBox' | 'checkBoxBlank' | 'checkIndeterminate' | 'chevronLeft' | 'chevronRight' | 'close' | 'cloud' | 'cloudFilled' | 'collectionsBookmark' | 'deleteFile' | 'deleteOutline' | 'edit' | 'environment' | 'expandMore' | 'fileDownload' | 'folder' | 'folderFilled' | 'folderShared' | 'help' | 'history' | 'info' | 'key' | 'menu' | 'leaderBoard' | 'moreVert' | 'openInNew' | 'personAdd' | 'playArrow' | 'project' | 'remove' | 'rename' | 'request' | 'restoreFromTrash' | 'save' | 'schema' | 'schemaEntity' | 'schemaModel' | 'schemaNamespace' | 'search' | 'send' | 'settings' | 'space' | 'taskAlt' | 'timeline' | 'tune' | 'viewGrid' | 'viewList' | 'visibility' | 'visibilityOff' | 'warning';
|
|
8
|
+
export type IconType = 'add' | 'api' | 'apps' | 'arrowBack' | 'arrowDropDown' | 'cancel' | 'cancelFilled' | 'certificate' | 'check' | 'checkBox' | 'checkBoxBlank' | 'checkIndeterminate' | 'chevronLeft' | 'chevronRight' | 'close' | 'cloud' | 'cloudFilled' | 'collectionsBookmark' | 'deleteFile' | 'deleteOutline' | 'edit' | 'environment' | 'expandMore' | 'fileDownload' | 'folder' | 'folderFilled' | 'folderShared' | 'help' | 'history' | 'info' | 'key' | 'menu' | 'leaderBoard' | 'moreVert' | 'openInNew' | 'personAdd' | 'playArrow' | 'project' | 'remove' | 'rename' | 'request' | 'restoreFromTrash' | 'save' | 'schema' | 'schemaEntity' | 'schemaModel' | 'schemaNamespace' | 'search' | 'send' | 'settings' | 'space' | 'taskAlt' | 'timeline' | 'tune' | 'viewGrid' | 'viewList' | 'visibility' | 'visibilityOff' | 'warning';
|
|
9
9
|
export declare const add: SVGTemplateResult;
|
|
10
10
|
export declare const api: SVGTemplateResult;
|
|
11
11
|
export declare const apps: SVGTemplateResult;
|
|
@@ -13,6 +13,7 @@ export declare const arrowBack: SVGTemplateResult;
|
|
|
13
13
|
export declare const arrowDropDown: SVGTemplateResult;
|
|
14
14
|
export declare const cancel: SVGTemplateResult;
|
|
15
15
|
export declare const cancelFilled: SVGTemplateResult;
|
|
16
|
+
export declare const certificate: SVGTemplateResult;
|
|
16
17
|
export declare const check: SVGTemplateResult;
|
|
17
18
|
export declare const checkBox: SVGTemplateResult;
|
|
18
19
|
export declare const checkBoxBlank: SVGTemplateResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../../src/ui/icons/Icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,iBAAiB,EAAE,MAAM,KAAK,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,WAAW,QAAS,iBAAiB,mEAA+C,iBAAsN,CAAC;AAExT,MAAM,MAAM,QAAQ,GAClB,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,eAAe,GAAG,oBAAoB,GAAG,aAAa,GAAG,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,GAAG,qBAAqB,GAAG,YAAY,GAAG,eAAe,GAAG,MAAM,GAAG,aAAa,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../../src/ui/icons/Icons.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/icons/Icons.js
CHANGED
|
@@ -12,6 +12,7 @@ export const arrowBack = iconWrapper(svg `<path d="M20 11H7.83l5.59-5.59L12 4l-8
|
|
|
12
12
|
export const arrowDropDown = iconWrapper(svg `<path d="M7 10l5 5 5-5z"/>`);
|
|
13
13
|
export const cancel = iconWrapper(svg `<path d="M0 0h24v24H0V0z" fill="none" opacity=".87"/><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm3.59-13L12 10.59 8.41 7 7 8.41 10.59 12 7 15.59 8.41 17 12 13.41 15.59 17 17 15.59 13.41 12 17 8.41z"/>`);
|
|
14
14
|
export const cancelFilled = iconWrapper(svg `<path d="M0 0h24v24H0z" fill="none"/><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"/>`);
|
|
15
|
+
export const certificate = iconWrapper(svg `<path d="M4 3c-1.11 0-2 .89-2 2v10a2 2 0 0 0 2 2h8v5l3-3l3 3v-5h2a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2H4m8 2l3 2l3-2v3.5l3 1.5l-3 1.5V15l-3-2l-3 2v-3.5L9 10l3-1.5V5M4 5h5v2H4V5m0 4h3v2H4V9m0 4h5v2H4v-2Z"/>`);
|
|
15
16
|
export const check = iconWrapper(svg `<path d="m9.55 18-5.7-5.7 1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4Z"/>`);
|
|
16
17
|
export const checkBox = iconWrapper(svg `<path d="m10.6 16.2 7.05-7.05-1.4-1.4-5.65 5.65-2.85-2.85-1.4 1.4ZM5 21q-.825 0-1.413-.587Q3 19.825 3 19V5q0-.825.587-1.413Q4.175 3 5 3h14q.825 0 1.413.587Q21 4.175 21 5v14q0 .825-.587 1.413Q19.825 21 19 21Zm0-2h14V5H5v14ZM5 5v14V5Z"/>`);
|
|
17
18
|
export const checkBoxBlank = iconWrapper(svg `<path d="M5 21q-.825 0-1.413-.587Q3 19.825 3 19V5q0-.825.587-1.413Q4.175 3 5 3h14q.825 0 1.413.587Q21 4.175 21 5v14q0 .825-.587 1.413Q19.825 21 19 21Zm0-2h14V5H5v14Z"/>`);
|