@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.
Files changed (176) hide show
  1. package/.eslintrc +16 -1
  2. package/demo/elements/index.html +3 -0
  3. package/demo/elements/store/file-picker.html +15 -0
  4. package/demo/elements/store/file-picker.ts +134 -0
  5. package/demo/elements/store/index.html +19 -0
  6. package/demo/index.html +3 -0
  7. package/demo/layout/index.html +91 -0
  8. package/demo/layout/index.ts +182 -0
  9. package/demo/store/StorePlugin.js +1 -0
  10. package/dist/bindings/base/StoreBindings.d.ts +5 -0
  11. package/dist/bindings/base/StoreBindings.d.ts.map +1 -1
  12. package/dist/bindings/base/StoreBindings.js +15 -1
  13. package/dist/bindings/base/StoreBindings.js.map +1 -1
  14. package/dist/define/store/file-picker.d.ts +9 -0
  15. package/dist/define/store/file-picker.d.ts.map +1 -0
  16. package/dist/define/store/file-picker.js +10 -0
  17. package/dist/define/store/file-picker.js.map +1 -0
  18. package/dist/define/{files → store}/share-file.d.ts +1 -1
  19. package/dist/define/store/share-file.d.ts.map +1 -0
  20. package/dist/define/{files → store}/share-file.js +2 -2
  21. package/dist/define/store/share-file.js.map +1 -0
  22. package/dist/elements/layout/SplitItem.d.ts +1 -9
  23. package/dist/elements/layout/SplitItem.d.ts.map +1 -1
  24. package/dist/elements/layout/SplitItem.js +27 -20
  25. package/dist/elements/layout/SplitItem.js.map +1 -1
  26. package/dist/elements/layout/SplitLayout.d.ts +16 -14
  27. package/dist/elements/layout/SplitLayout.d.ts.map +1 -1
  28. package/dist/elements/layout/SplitLayout.js +47 -42
  29. package/dist/elements/layout/SplitLayout.js.map +1 -1
  30. package/dist/elements/layout/SplitPanel.d.ts +7 -2
  31. package/dist/elements/layout/SplitPanel.d.ts.map +1 -1
  32. package/dist/elements/layout/SplitPanel.js +130 -52
  33. package/dist/elements/layout/SplitPanel.js.map +1 -1
  34. package/dist/elements/layout/SplitView.d.ts.map +1 -1
  35. package/dist/elements/layout/SplitView.js +18 -14
  36. package/dist/elements/layout/SplitView.js.map +1 -1
  37. package/dist/elements/layout/type.d.ts +3 -3
  38. package/dist/elements/layout/type.d.ts.map +1 -1
  39. package/dist/elements/layout/type.js.map +1 -1
  40. package/dist/elements/store/FilePicker.element.d.ts +87 -0
  41. package/dist/elements/store/FilePicker.element.d.ts.map +1 -0
  42. package/dist/elements/store/FilePicker.element.js +263 -0
  43. package/dist/elements/store/FilePicker.element.js.map +1 -0
  44. package/dist/elements/store/FilePicker.styles.d.ts +3 -0
  45. package/dist/elements/store/FilePicker.styles.d.ts.map +1 -0
  46. package/dist/elements/store/FilePicker.styles.js +72 -0
  47. package/dist/elements/store/FilePicker.styles.js.map +1 -0
  48. package/dist/elements/store/FilesLib.d.ts +10 -0
  49. package/dist/elements/store/FilesLib.d.ts.map +1 -0
  50. package/dist/elements/store/FilesLib.js +38 -0
  51. package/dist/elements/store/FilesLib.js.map +1 -0
  52. package/dist/elements/{files/ShareFile.d.ts → store/ShareFile.element.d.ts} +1 -1
  53. package/dist/elements/store/ShareFile.element.d.ts.map +1 -0
  54. package/dist/elements/{files/ShareFile.js → store/ShareFile.element.js} +1 -1
  55. package/dist/elements/store/ShareFile.element.js.map +1 -0
  56. package/dist/elements/store/ShareFile.styles.d.ts.map +1 -0
  57. package/dist/elements/{files → store}/ShareFile.styles.js.map +1 -1
  58. package/dist/events/EventTypes.d.ts +1 -0
  59. package/dist/events/EventTypes.d.ts.map +1 -1
  60. package/dist/events/EventTypes.js +1 -0
  61. package/dist/events/EventTypes.js.map +1 -1
  62. package/dist/events/Events.d.ts +1 -0
  63. package/dist/events/Events.d.ts.map +1 -1
  64. package/dist/events/StoreEvents.d.ts +8 -1
  65. package/dist/events/StoreEvents.d.ts.map +1 -1
  66. package/dist/events/StoreEvents.js +19 -0
  67. package/dist/events/StoreEvents.js.map +1 -1
  68. package/dist/pages/ApplicationScreen.d.ts +1 -1
  69. package/dist/pages/ApplicationScreen.d.ts.map +1 -1
  70. package/dist/pages/ApplicationScreen.js +4 -2
  71. package/dist/pages/ApplicationScreen.js.map +1 -1
  72. package/dist/pages/api-client/ApiClient.screen.d.ts +0 -6
  73. package/dist/pages/api-client/ApiClient.screen.d.ts.map +1 -1
  74. package/dist/pages/api-client/ApiClient.screen.js +16 -29
  75. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  76. package/dist/pages/api-client/Authenticate.screen.d.ts +1 -1
  77. package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
  78. package/dist/pages/api-client/Authenticate.screen.js +2 -2
  79. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  80. package/dist/pages/api-client/pages/Files.page.d.ts +6 -35
  81. package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
  82. package/dist/pages/api-client/pages/Files.page.js +32 -141
  83. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  84. package/dist/pages/api-client/pages/Shared.page.d.ts +1 -5
  85. package/dist/pages/api-client/pages/Shared.page.d.ts.map +1 -1
  86. package/dist/pages/api-client/pages/Shared.page.js +1 -40
  87. package/dist/pages/api-client/pages/Shared.page.js.map +1 -1
  88. package/dist/pages/demo/DemoPage.d.ts +7 -0
  89. package/dist/pages/demo/DemoPage.d.ts.map +1 -1
  90. package/dist/pages/demo/DemoPage.js +14 -0
  91. package/dist/pages/demo/DemoPage.js.map +1 -1
  92. package/dist/pages/http-project/HttpClientCommands.d.ts.map +1 -1
  93. package/dist/pages/http-project/HttpClientCommands.js +28 -12
  94. package/dist/pages/http-project/HttpClientCommands.js.map +1 -1
  95. package/dist/store/FileSystem.d.ts +90 -0
  96. package/dist/store/FileSystem.d.ts.map +1 -0
  97. package/dist/store/FileSystem.js +260 -0
  98. package/dist/store/FileSystem.js.map +1 -0
  99. package/dist/styles/global-styles.d.ts.map +1 -1
  100. package/dist/styles/global-styles.js +7 -0
  101. package/dist/styles/global-styles.js.map +1 -1
  102. package/dist/ui/icons/Icons.d.ts +2 -1
  103. package/dist/ui/icons/Icons.d.ts.map +1 -1
  104. package/dist/ui/icons/Icons.js +1 -0
  105. package/dist/ui/icons/Icons.js.map +1 -1
  106. package/dist/ui/list/UiDropdownList.d.ts +9 -1
  107. package/dist/ui/list/UiDropdownList.d.ts.map +1 -1
  108. package/dist/ui/list/UiDropdownList.js +39 -17
  109. package/dist/ui/list/UiDropdownList.js.map +1 -1
  110. package/dist/ui/list/UiList.d.ts +6 -1
  111. package/dist/ui/list/UiList.d.ts.map +1 -1
  112. package/dist/ui/list/UiList.js +24 -9
  113. package/dist/ui/list/UiList.js.map +1 -1
  114. package/dist/ui/table/DataTable.d.ts +4 -0
  115. package/dist/ui/table/DataTable.d.ts.map +1 -1
  116. package/dist/ui/table/DataTable.js +23 -1
  117. package/dist/ui/table/DataTable.js.map +1 -1
  118. package/package.json +2 -1
  119. package/src/bindings/base/StoreBindings.ts +16 -1
  120. package/src/define/store/file-picker.ts +12 -0
  121. package/src/define/{files → store}/share-file.ts +2 -2
  122. package/src/elements/layout/SplitItem.ts +29 -21
  123. package/src/elements/layout/SplitLayout.ts +53 -43
  124. package/src/elements/layout/SplitPanel.ts +140 -57
  125. package/src/elements/layout/SplitView.ts +18 -15
  126. package/src/elements/layout/type.ts +3 -4
  127. package/src/elements/store/FilePicker.element.ts +297 -0
  128. package/src/elements/store/FilePicker.styles.ts +72 -0
  129. package/src/elements/store/FilesLib.ts +32 -0
  130. package/src/events/EventTypes.ts +1 -0
  131. package/src/events/StoreEvents.ts +21 -1
  132. package/src/pages/ApplicationScreen.ts +5 -3
  133. package/src/pages/api-client/ApiClient.screen.ts +16 -31
  134. package/src/pages/api-client/Authenticate.screen.ts +2 -2
  135. package/src/pages/api-client/pages/Files.page.ts +37 -164
  136. package/src/pages/api-client/pages/Shared.page.ts +2 -40
  137. package/src/pages/demo/DemoPage.ts +17 -0
  138. package/src/pages/http-project/HttpClientCommands.ts +28 -12
  139. package/src/store/FileSystem.ts +325 -0
  140. package/src/styles/global-styles.ts +7 -0
  141. package/src/ui/icons/Icons.ts +2 -1
  142. package/src/ui/list/UiDropdownList.ts +44 -17
  143. package/src/ui/list/UiList.ts +26 -10
  144. package/src/ui/table/DataTable.ts +29 -3
  145. package/test/elements/layout/SplitItem.test.ts +76 -75
  146. package/test/elements/layout/SplitLayoutManager.test.ts +70 -69
  147. package/test/elements/layout/SplitPanel.test.ts +10 -7
  148. package/test/elements/store/FilePicker.test.ts +241 -0
  149. package/test/env.js +3 -0
  150. package/test/helpers/StoreHelper.ts +390 -0
  151. package/tsconfig.eslint.json +10 -0
  152. package/web-test-runner.config.mjs +51 -2
  153. package/dist/define/files/share-file.d.ts.map +0 -1
  154. package/dist/define/files/share-file.js.map +0 -1
  155. package/dist/define/layout/layout-panel.d.ts +0 -7
  156. package/dist/define/layout/layout-panel.d.ts.map +0 -1
  157. package/dist/define/layout/layout-panel.js +0 -3
  158. package/dist/define/layout/layout-panel.js.map +0 -1
  159. package/dist/elements/files/ShareFile.d.ts.map +0 -1
  160. package/dist/elements/files/ShareFile.js.map +0 -1
  161. package/dist/elements/files/ShareFile.styles.d.ts.map +0 -1
  162. package/dist/elements/layout/LayoutManager.d.ts +0 -327
  163. package/dist/elements/layout/LayoutManager.d.ts.map +0 -1
  164. package/dist/elements/layout/LayoutManager.js +0 -747
  165. package/dist/elements/layout/LayoutManager.js.map +0 -1
  166. package/dist/elements/layout/LayoutPanelElement.d.ts +0 -62
  167. package/dist/elements/layout/LayoutPanelElement.d.ts.map +0 -1
  168. package/dist/elements/layout/LayoutPanelElement.js +0 -628
  169. package/dist/elements/layout/LayoutPanelElement.js.map +0 -1
  170. package/src/define/layout/layout-panel.ts +0 -9
  171. package/src/elements/layout/LayoutManager.ts +0 -930
  172. package/src/elements/layout/LayoutPanelElement.ts +0 -651
  173. /package/dist/elements/{files → store}/ShareFile.styles.d.ts +0 -0
  174. /package/dist/elements/{files → store}/ShareFile.styles.js +0 -0
  175. /package/src/elements/{files/ShareFile.ts → store/ShareFile.element.ts} +0 -0
  176. /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,wBAoFE"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFjB,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}\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"]}
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"]}
@@ -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":"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"}
1
+ {"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../../../src/ui/icons/Icons.ts"],"names":[],"mappings":"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"}
@@ -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"/>`);