@api-client/ui 0.0.5 → 0.0.7
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/demo/elements/http/http-assertions.html +3 -0
- package/demo/elements/http/http-assertions.ts +1 -1
- package/demo/elements/http/http-flows.html +23 -0
- package/demo/elements/http/http-flows.ts +92 -0
- package/demo/elements/http/index.html +3 -0
- package/demo/pages/http-project/main.ts +5 -6
- package/dist/define/dialog/delete-cookie-action-dialog.d.ts +10 -0
- package/dist/define/dialog/delete-cookie-action-dialog.d.ts.map +1 -0
- package/dist/define/dialog/delete-cookie-action-dialog.js +14 -0
- package/dist/define/dialog/delete-cookie-action-dialog.js.map +1 -0
- package/dist/define/dialog/set-cookie-action-dialog.d.ts +10 -0
- package/dist/define/dialog/set-cookie-action-dialog.d.ts.map +1 -0
- package/dist/define/dialog/set-cookie-action-dialog.js +14 -0
- package/dist/define/dialog/set-cookie-action-dialog.js.map +1 -0
- package/dist/define/http/http-assertions.d.ts +1 -1
- package/dist/define/http/http-assertions.d.ts.map +1 -1
- package/dist/define/http/http-assertions.js +3 -3
- package/dist/define/http/http-assertions.js.map +1 -1
- package/dist/define/http/http-flows.d.ts +10 -0
- package/dist/define/http/http-flows.d.ts.map +1 -0
- package/dist/define/http/http-flows.js +13 -0
- package/dist/define/http/http-flows.js.map +1 -0
- package/dist/define/ui/ui-divider.d.ts +4 -1
- package/dist/define/ui/ui-divider.d.ts.map +1 -1
- package/dist/define/ui/ui-divider.js +11 -2
- package/dist/define/ui/ui-divider.js.map +1 -1
- package/dist/elements/ApiElement.d.ts +4 -0
- package/dist/elements/ApiElement.d.ts.map +1 -1
- package/dist/elements/ApiElement.js +6 -0
- package/dist/elements/ApiElement.js.map +1 -1
- package/dist/elements/amf/ApiAuthorizationEditor.element.js +1 -1
- package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.d.ts.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.js +2 -1
- package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequest.element.js +1 -1
- package/dist/elements/amf/ApiRequest.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.d.ts +0 -1
- package/dist/elements/amf/ApiRequestEditor.element.d.ts.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.js +0 -3
- package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
- package/dist/elements/authorization/ui/Authorization.d.ts +2 -1
- package/dist/elements/authorization/ui/Authorization.d.ts.map +1 -1
- package/dist/elements/authorization/ui/Authorization.js +0 -3
- package/dist/elements/authorization/ui/Authorization.js.map +1 -1
- package/dist/elements/dialog/DeleteCookieAction.element.d.ts +20 -0
- package/dist/elements/dialog/DeleteCookieAction.element.d.ts.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.element.js +93 -0
- package/dist/elements/dialog/DeleteCookieAction.element.js.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.d.ts +3 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.d.ts.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.js +13 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.js.map +1 -0
- package/dist/elements/dialog/Rename.d.ts +7 -6
- package/dist/elements/dialog/Rename.d.ts.map +1 -1
- package/dist/elements/dialog/Rename.js +7 -6
- package/dist/elements/dialog/Rename.js.map +1 -1
- package/dist/elements/dialog/SetCookieAction.element.d.ts +22 -0
- package/dist/elements/dialog/SetCookieAction.element.d.ts.map +1 -0
- package/dist/elements/dialog/SetCookieAction.element.js +173 -0
- package/dist/elements/dialog/SetCookieAction.element.js.map +1 -0
- package/dist/elements/environment/EnvironmentEditor.d.ts +24 -3
- package/dist/elements/environment/EnvironmentEditor.d.ts.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.js +69 -23
- package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.styles.d.ts.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.styles.js +5 -0
- package/dist/elements/environment/EnvironmentEditor.styles.js.map +1 -1
- package/dist/elements/environment/ServerEditor.d.ts +3 -3
- package/dist/elements/environment/ServerEditor.d.ts.map +1 -1
- package/dist/elements/environment/ServerEditor.js +3 -6
- package/dist/elements/environment/ServerEditor.js.map +1 -1
- package/dist/elements/environment/VariablesEditor.d.ts +0 -1
- package/dist/elements/environment/VariablesEditor.d.ts.map +1 -1
- package/dist/elements/environment/VariablesEditor.js +3 -6
- package/dist/elements/environment/VariablesEditor.js.map +1 -1
- package/dist/elements/highlight/Prism.styles.d.ts.map +1 -1
- package/dist/elements/highlight/Prism.styles.js +12 -5
- package/dist/elements/highlight/Prism.styles.js.map +1 -1
- package/dist/elements/http/BodyEditor.d.ts +0 -4
- package/dist/elements/http/BodyEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyEditor.js +10 -16
- package/dist/elements/http/BodyEditor.js.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.d.ts +3 -16
- package/dist/elements/http/BodyMultipartEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.js +3 -19
- package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
- package/dist/elements/http/BodyTextEditor.d.ts +0 -1
- package/dist/elements/http/BodyTextEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyTextEditor.js +0 -3
- package/dist/elements/http/BodyTextEditor.js.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.d.ts +3 -3
- package/dist/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.js +3 -5
- package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
- package/dist/elements/http/HeadersForm.d.ts +0 -4
- package/dist/elements/http/HeadersForm.d.ts.map +1 -1
- package/dist/elements/http/HeadersForm.js +0 -6
- package/dist/elements/http/HeadersForm.js.map +1 -1
- package/dist/elements/http/HttpAssertions.element.d.ts +55 -0
- package/dist/elements/http/HttpAssertions.element.d.ts.map +1 -0
- package/dist/elements/http/HttpAssertions.element.js +264 -0
- package/dist/elements/http/HttpAssertions.element.js.map +1 -0
- package/dist/elements/http/HttpAssertions.styles.d.ts.map +1 -1
- package/dist/elements/http/HttpAssertions.styles.js +7 -156
- package/dist/elements/http/HttpAssertions.styles.js.map +1 -1
- package/dist/elements/http/HttpFlows.common.d.ts +3 -0
- package/dist/elements/http/HttpFlows.common.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.common.js +181 -0
- package/dist/elements/http/HttpFlows.common.js.map +1 -0
- package/dist/elements/http/HttpFlows.element.d.ts +97 -0
- package/dist/elements/http/HttpFlows.element.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.element.js +684 -0
- package/dist/elements/http/HttpFlows.element.js.map +1 -0
- package/dist/elements/http/HttpFlows.styles.d.ts +3 -0
- package/dist/elements/http/HttpFlows.styles.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.styles.js +28 -0
- package/dist/elements/http/HttpFlows.styles.js.map +1 -0
- package/dist/elements/http/HttpFlowsUi.d.ts +172 -0
- package/dist/elements/http/HttpFlowsUi.d.ts.map +1 -0
- package/dist/elements/http/HttpFlowsUi.js +1256 -0
- package/dist/elements/http/HttpFlowsUi.js.map +1 -0
- package/dist/elements/http/RequestConfigElement.d.ts +0 -1
- package/dist/elements/http/RequestConfigElement.d.ts.map +1 -1
- package/dist/elements/http/RequestConfigElement.js +8 -11
- package/dist/elements/http/RequestConfigElement.js.map +1 -1
- package/dist/elements/http/RequestEditor.d.ts +10 -10
- package/dist/elements/http/RequestEditor.d.ts.map +1 -1
- package/dist/elements/http/RequestEditor.js +62 -23
- package/dist/elements/http/RequestEditor.js.map +1 -1
- package/dist/elements/http/UrlInput.d.ts +3 -3
- package/dist/elements/http/UrlInput.d.ts.map +1 -1
- package/dist/elements/http/UrlInput.js +2 -2
- package/dist/elements/http/UrlInput.js.map +1 -1
- package/dist/elements/http/UrlParamsForm.d.ts +0 -1
- package/dist/elements/http/UrlParamsForm.d.ts.map +1 -1
- package/dist/elements/http/UrlParamsForm.js +0 -3
- package/dist/elements/http/UrlParamsForm.js.map +1 -1
- package/dist/elements/layout/SplitView.styles.d.ts.map +1 -1
- package/dist/elements/layout/SplitView.styles.js +1 -0
- package/dist/elements/layout/SplitView.styles.js.map +1 -1
- package/dist/elements/navigation/AppNavigationItem.styles.d.ts.map +1 -1
- package/dist/elements/navigation/AppNavigationItem.styles.js +2 -0
- package/dist/elements/navigation/AppNavigationItem.styles.js.map +1 -1
- package/dist/elements/project/HttpProjectRequest.d.ts +2 -1
- package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
- package/dist/elements/project/HttpProjectRequest.js +14 -5
- package/dist/elements/project/HttpProjectRequest.js.map +1 -1
- package/dist/elements/project/ProjectRunner.d.ts +0 -1
- package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
- package/dist/elements/project/ProjectRunner.js +1 -4
- package/dist/elements/project/ProjectRunner.js.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.d.ts +0 -1
- package/dist/elements/schema-design/AssociationFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.js +2 -5
- package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.d.ts +2 -2
- package/dist/elements/schema-design/DataEntityEditorElement.d.ts.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.js +5 -5
- package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.d.ts +0 -1
- package/dist/elements/schema-design/DataSchemaDocument.d.ts.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.js +4 -7
- package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.d.ts +0 -1
- package/dist/elements/schema-design/EntityFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.js +4 -7
- package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.d.ts +1 -2
- package/dist/elements/schema-design/PropertyFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.js +8 -11
- package/dist/elements/schema-design/PropertyFormElement.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 +1 -1
- package/dist/pages/ApplicationScreen.js.map +1 -1
- package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
- package/dist/pages/api-client/ApiClient.styles.js +22 -3
- package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.d.ts +2 -0
- package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.js +19 -3
- package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.d.ts.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.js +4 -2
- package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.styles.d.ts.map +1 -1
- package/dist/pages/api-client/StoreConfig.styles.js +5 -0
- package/dist/pages/api-client/StoreConfig.styles.js.map +1 -1
- package/dist/pages/api-client/pages/Files.page.d.ts +1 -0
- package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
- package/dist/pages/api-client/pages/Files.page.js +2 -1
- package/dist/pages/api-client/pages/Files.page.js.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.d.ts +0 -8
- package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.js +14 -15
- package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
- package/dist/pages/http-project/types.d.ts +8 -6
- package/dist/pages/http-project/types.d.ts.map +1 -1
- package/dist/pages/http-project/types.js.map +1 -1
- package/dist/styles/m3/surface.module.d.ts.map +1 -1
- package/dist/styles/m3/surface.module.js +11 -27
- package/dist/styles/m3/surface.module.js.map +1 -1
- package/dist/ui/UiElement.d.ts +4 -0
- package/dist/ui/UiElement.d.ts.map +1 -1
- package/dist/ui/UiElement.js +6 -0
- package/dist/ui/UiElement.js.map +1 -1
- package/dist/ui/button/SegmentedButton.styles.d.ts.map +1 -1
- package/dist/ui/button/SegmentedButton.styles.js +3 -1
- package/dist/ui/button/SegmentedButton.styles.js.map +1 -1
- package/dist/ui/dialog/UiDialog.d.ts +3 -0
- package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
- package/dist/ui/dialog/UiDialog.js +3 -0
- package/dist/ui/dialog/UiDialog.js.map +1 -1
- package/dist/ui/effects/ripple.d.ts.map +1 -1
- package/dist/ui/effects/ripple.js +5 -1
- package/dist/ui/effects/ripple.js.map +1 -1
- package/dist/ui/icons/Icons.d.ts +3 -2
- package/dist/ui/icons/Icons.d.ts.map +1 -1
- package/dist/ui/icons/Icons.js +2 -1
- package/dist/ui/icons/Icons.js.map +1 -1
- package/dist/ui/input/CheckedElement.d.ts +1 -1
- package/dist/ui/input/CheckedElement.d.ts.map +1 -1
- package/dist/ui/input/CheckedElement.js +3 -3
- package/dist/ui/input/CheckedElement.js.map +1 -1
- package/dist/ui/input/Input.js +1 -1
- package/dist/ui/input/Input.js.map +1 -1
- package/dist/ui/list/{DividerElement.d.ts → UiDivider.element.d.ts} +6 -6
- package/dist/ui/list/UiDivider.element.d.ts.map +1 -0
- package/dist/ui/list/UiDivider.element.js +39 -0
- package/dist/ui/list/UiDivider.element.js.map +1 -0
- package/dist/ui/list/UiDivider.styles.d.ts +3 -0
- package/dist/ui/list/UiDivider.styles.d.ts.map +1 -0
- package/dist/ui/list/UiDivider.styles.js +49 -0
- package/dist/ui/list/UiDivider.styles.js.map +1 -0
- package/dist/ui/tabs/UiTabs.d.ts +13 -1
- package/dist/ui/tabs/UiTabs.d.ts.map +1 -1
- package/dist/ui/tabs/UiTabs.js +42 -13
- package/dist/ui/tabs/UiTabs.js.map +1 -1
- package/package.json +1 -1
- package/src/define/dialog/delete-cookie-action-dialog.ts +16 -0
- package/src/define/dialog/set-cookie-action-dialog.ts +16 -0
- package/src/define/http/http-assertions.ts +3 -3
- package/src/define/http/http-flows.ts +15 -0
- package/src/define/ui/ui-divider.ts +7 -2
- package/src/elements/ApiElement.ts +7 -0
- package/src/elements/amf/ApiAuthorizationEditor.element.ts +1 -1
- package/src/elements/amf/ApiOperationDocument.element.ts +2 -1
- package/src/elements/amf/ApiRequest.element.ts +1 -1
- package/src/elements/amf/ApiRequestEditor.element.ts +0 -4
- package/src/elements/authorization/ui/Authorization.ts +3 -5
- package/src/elements/dialog/DeleteCookieAction.element.ts +100 -0
- package/src/elements/dialog/DeleteCookieAction.styles.ts +14 -0
- package/src/elements/dialog/Rename.ts +8 -7
- package/src/elements/dialog/SetCookieAction.element.ts +183 -0
- package/src/elements/environment/EnvironmentEditor.styles.ts +5 -0
- package/src/elements/environment/EnvironmentEditor.ts +81 -22
- package/src/elements/environment/ServerEditor.ts +4 -8
- package/src/elements/environment/VariablesEditor.ts +3 -7
- package/src/elements/highlight/Prism.styles.ts +12 -5
- package/src/elements/http/BodyEditor.ts +10 -17
- package/src/elements/http/BodyMultipartEditor.ts +3 -20
- package/src/elements/http/BodyTextEditor.ts +0 -4
- package/src/elements/http/BodyUrlEncodedEditor.ts +5 -8
- package/src/elements/http/HeadersForm.ts +2 -9
- package/src/elements/http/HttpAssertions.element.ts +286 -0
- package/src/elements/http/HttpAssertions.styles.ts +7 -156
- package/src/elements/http/HttpFlows.common.ts +181 -0
- package/src/elements/http/HttpFlows.element.ts +722 -0
- package/src/elements/http/HttpFlows.styles.ts +29 -0
- package/src/elements/http/HttpFlowsUi.ts +1327 -0
- package/src/elements/http/RequestConfigElement.ts +10 -14
- package/src/elements/http/RequestEditor.ts +77 -35
- package/src/elements/http/UrlInput.ts +6 -6
- package/src/elements/http/UrlParamsForm.ts +2 -6
- package/src/elements/layout/SplitView.styles.ts +1 -0
- package/src/elements/navigation/AppNavigationItem.styles.ts +2 -0
- package/src/elements/project/HttpProjectRequest.ts +16 -5
- package/src/elements/project/ProjectRunner.ts +3 -7
- package/src/elements/schema-design/AssociationFormElement.ts +4 -8
- package/src/elements/schema-design/DataEntityEditorElement.ts +8 -8
- package/src/elements/schema-design/DataSchemaDocument.ts +5 -9
- package/src/elements/schema-design/EntityFormElement.ts +6 -10
- package/src/elements/schema-design/PropertyFormElement.ts +11 -15
- package/src/pages/ApplicationScreen.ts +1 -1
- package/src/pages/api-client/ApiClient.styles.ts +22 -3
- package/src/pages/api-client/Authenticate.screen.ts +19 -3
- package/src/pages/api-client/StoreConfig.screen.ts +4 -2
- package/src/pages/api-client/StoreConfig.styles.ts +5 -0
- package/src/pages/api-client/pages/Files.page.ts +2 -1
- package/src/pages/http-project/HttpProject.screen.ts +14 -26
- package/src/pages/http-project/types.ts +8 -6
- package/src/styles/m3/surface.module.ts +11 -27
- package/src/styles/m3/theme.css +36 -0
- package/src/styles/m3/tokens.css +11 -0
- package/src/ui/UiElement.ts +7 -0
- package/src/ui/button/SegmentedButton.styles.ts +3 -1
- package/src/ui/dialog/UiDialog.ts +3 -0
- package/src/ui/effects/ripple.ts +6 -1
- package/src/ui/icons/Icons.ts +3 -2
- package/src/ui/input/CheckedElement.ts +3 -3
- package/src/ui/input/Input.ts +1 -1
- package/src/ui/list/UiDivider.element.ts +41 -0
- package/src/ui/list/UiDivider.styles.ts +49 -0
- package/src/ui/tabs/UiTabs.ts +55 -13
- package/test/amf/authorization/OAuth2Method.test.ts +1 -1
- package/test/elements/http/HttpAssertions.test.ts +5 -6
- package/test/elements/http/HttpFlows.test.ts +485 -0
- package/dist/elements/http/HttpAssertions.d.ts +0 -114
- package/dist/elements/http/HttpAssertions.d.ts.map +0 -1
- package/dist/elements/http/HttpAssertions.js +0 -1146
- package/dist/elements/http/HttpAssertions.js.map +0 -1
- package/dist/elements/http/internals.d.ts +0 -150
- package/dist/elements/http/internals.d.ts.map +0 -1
- package/dist/elements/http/internals.js +0 -150
- package/dist/elements/http/internals.js.map +0 -1
- package/dist/ui/list/DividerElement.d.ts.map +0 -1
- package/dist/ui/list/DividerElement.js +0 -82
- package/dist/ui/list/DividerElement.js.map +0 -1
- package/src/elements/http/HttpAssertions.ts +0 -1187
- package/src/elements/http/internals.ts +0 -151
- package/src/http-client/docs/Files.md +0 -28
- package/src/ui/list/DividerElement.ts +0 -84
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Files.page.js","sourceRoot":"","sources":["../../../../src/pages/api-client/pages/Files.page.ts"],"names":[],"mappings":"AAAA,OAAO,EACE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAC5D,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,GAQlD,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAkB,MAAM,KAAK,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AAIpF,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,+BAA+B,CAAC;AACvC,OAAO,+BAA+B,CAAC;AACvC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,wCAAwC,CAAC;AAChD,OAAO,+BAA+B,CAAC;AACvC,OAAO,sCAAsC,CAAC;AAC9C,OAAO,iCAAiC,CAAC;AACzC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yCAAyC,CAAC;AACjD,OAAO,qCAAqC,CAAC;AAE7C,IAAK,WAMJ;AAND,WAAK,WAAW;IACd,uDAAS,CAAA;IACT,qDAAQ,CAAA;IACR,uDAAS,CAAA;IACT,6CAAI,CAAA;IACJ,+CAAK,CAAA;AACP,CAAC,EANI,WAAW,KAAX,WAAW,QAMf;AAED;;GAEG;AACH,MAAM,OAAO,SAAS;IAqCpB,YAAsB,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;QAnC7C;;;WAGG;QACH,UAAK,GAAY,EAAE,CAAC;QAepB,OAAE,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAiBnG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;SACR;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC7C,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,aAAa;YACpB,UAAU,EAAE,IAAI;SACjB,CAAC;QACF,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;SAC3B;QACD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB;QACD,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,MAAM,EAAE;gBACV,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACtE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;aACvC;SACF;gBAAS;YACR,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,IAA6B;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,CAAQ,EAAE,CAAO;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;YACrB,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;gBACzB,OAAO,CAAC,CAAC,CAAC;aACX;YACD,OAAO,CAAC,CAAC;SACV;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;YAC9C,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SAC7D;QACD,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,eAAe,CAAC,KAAqB;QACnC,MAAM,KAAK,GAAG,KAA2C,CAAC;QAC1D,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;YAChD,OAAO;SACR;QACD,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE;YACxB,OAAO;SACR;QACD,QAAQ,KAAK,CAAC,SAAS,EAAE;YACvB,KAAK,SAAS;gBAAE,IAAI,CAAC,iBAAiB,CAAE,KAAuC,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM;YAC7F,KAAK,SAAS;gBAAE,IAAI,CAAC,iBAAiB,CAAC,KAA8B,CAAC,CAAC;gBAAC,MAAM;YAC9E,KAAK,OAAO;gBAAE,IAAI,CAAC,eAAe,CAAC,KAAgC,CAAC,CAAC;gBAAC,MAAM;YAC5E,QAAQ;SACT;IACH,CAAC;IAED,iBAAiB,CAAC,IAAW;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,iBAAiB,CAAC,KAA4B;QAC5C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,kBAAkB,CAAC,GAAW;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACvD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,OAAO;SACR;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,eAAe,CAAC,KAA8B;QAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACvD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,OAAO;SACR;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAY,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAES,yBAAyB;QACjC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACjD,CAAC;IAES,wBAAwB;QAChC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAChD,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACjD,CAAC;IAES,wBAAwB;QAChC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAChD,CAAC;IAES,oBAAoB,CAAC,CAAc;QAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAyB,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QACD,MAAM,MAAM,GAAG,SAA8B,CAAC,CAAC,gBAAgB;QAC/D,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAES,mBAAmB,CAAC,CAAc;QAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAyB,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QACD,MAAM,MAAM,GAAG,SAA8B,CAAC,CAAC,gBAAgB;QAC/D,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAES,mBAAmB,CAAC,CAAc;QAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAyB,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;SACR;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QACD,MAAM,MAAM,GAAG,SAA8B,CAAC,CAAC,gBAAgB;QAC/D,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,IAAY;QACrC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACvD,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,IAAY;QACpC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,IAAY;QACpC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,IAAW,EAAE,KAAe;QAClD,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,MAAM,IAAI,GAAmB,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;SAC3B;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,KAAK,EAAE;YACT,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;SACnF;IACH,CAAC;IAES,wBAAwB,CAAC,CAAc;QAC/C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAA+B,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAA4B,CAAC;QAC3D,IAAI,MAAM,KAAK,gBAAgB,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;SAC/C;aAAM,IAAI,MAAM,KAAK,cAAc,EAAE;YACpC,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAES,mBAAmB,CAAC,CAAc;QAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAA+B,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAA4B,CAAC;QAC3D,IAAI,MAAM,KAAK,QAAQ,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;SAC9C;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;SAC/C;aAAM,IAAI,MAAM,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;SAC9C;IACH,CAAC;IAES,aAAa,CAAC,CAAc;QACpC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAyB,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;SACR;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;SACR;QACD,MAAM,MAAM,GAAG,SAA8B,CAAC,CAAC,gBAAgB;QAC/D,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;SACR;QACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IAES,KAAK,CAAC,iBAAiB,CAAC,IAAU;QAC1C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAErB,MAAM,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAErB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;IACH,CAAC;IAES,KAAK,CAAC,kBAAkB;QAChC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACtD;QACD,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,eAAe,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACnE;QACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrB,IAAI;YACF,MAAM,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5F,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SACtB;QAAC,OAAO,CAAC,EAAE;YACV,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;SACtC;IACH,CAAC;IAES,wBAAwB;QAChC,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;SAClC;QACD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IAC/B,CAAC;IAES,mBAAmB,CAAC,IAAW;QACvC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,KAAK,WAAW,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC5B;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACvB;aAAM,IAAI,IAAI,KAAK,YAAY,EAAE;YAChC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;SACrD;IACH,CAAC;IAES,iBAAiB;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAES,iBAAiB,CAAC,IAAuB;QACjD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QACD,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC;YAClC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,GAAW;QACxB,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QACD,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACrC,GAAG;YACH,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAa;QAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;IAES,sBAAsB,CAAC,CAAc;QAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAmB,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAqB,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAgB,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAa,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;YACtB,OAAO;SACR;QACD,IAAI,SAAS,KAAK,QAAQ,EAAE;YAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACtB;aAAM,IAAI,SAAS,KAAK,WAAW,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACpB;aAAM,IAAI,SAAS,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACtB;aAAM,IAAI,SAAS,KAAK,OAAO,EAAE;YAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACrB;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QAC1B,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,aAAa,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC1D;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpE,kBAAkB,CAAC,MAAM,CAAC,8BAA8B,EAAE;YACxD,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,MAAM;YACnB,cAAc,EAAE,KAAK,IAAI,EAAE;gBACzB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3D,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAqB,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC;YAC7C,sBAAsB,EAAE,IAAI;YAC5B,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE;gBACP;oBACE,WAAW,EAAE,mBAAmB;oBAChC,MAAM,EAAE;wBACN,kBAAkB,EAAE,CAAC,OAAO,CAAC;qBAC9B;iBACF;aACF;SACF,CAAC,CAAC;QACH,IAAI,WAAW,CAAC,QAAQ,EAAE;YACxB,OAAO;SACR;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,WAAW,CAAC,QAAkB,CAAC;QAC5C,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAES,UAAU,CAAC,GAAW;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAS,EAAE,EAAE;YACnD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,EAAwC,CAAC;YACvD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAe,CAAC,CAAC;aAC/C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,SAAS,CAAC,GAAW;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAC/B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACrC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAES,mBAAmB;QAC3B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE;YACjB,OAAM;SACP;QACD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IAES,mBAAmB;QAC3B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE;YACjB,OAAM;SACP;QACD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;;QAGP,IAAI,CAAC,iBAAiB,EAAE;;QAExB,IAAI,CAAC,qBAAqB,EAAE;QAC5B,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,qBAAqB,EAAE;;MAE9B,IAAI,CAAC,gBAAgB,EAAE;MACvB,IAAI,CAAC,yBAAyB,EAAE;MAChC,IAAI,CAAC,wBAAwB,EAAE;MAC/B,IAAI,CAAC,kBAAkB,EAAE;MACzB,IAAI,CAAC,wBAAwB,EAAE;KAChC,CAAC;IACJ,CAAC;IAES,qBAAqB;QAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,OAAO,CAAA;SACf;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,IAAI,CAAA;MACT,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;MACrC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC;;KAEvC,CAAC;IACJ,CAAC;IAES,0BAA0B,CAAC,QAAe;QAClD,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QAClC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,YAAY,EAAE;YAChB,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;SAClC;QACD,OAAO,IAAI,CAAA;;;;mBAII,CAAC,QAAQ;gBACZ,IAAI,CAAC,mBAAmB;;;;KAInC,CAAC;IACJ,CAAC;IAES,2BAA2B,CAAC,QAAe;QACnD,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QAClC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,YAAY,EAAE;YAChB,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;SACpC;QACD,OAAO,IAAI,CAAA;;;;mBAII,CAAC,SAAS;gBACb,IAAI,CAAC,mBAAmB;;;;KAInC,CAAC;IACJ,CAAC;IAES,kBAAkB;QAC1B,OAAO,IAAI,CAAA;;iBAEE,IAAI,CAAC,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;KAwBpC,CAAC;IACJ,CAAC;IAES,qBAAqB;QAC7B,OAAO,IAAI,CAAA;;iBAEE,IAAI,CAAC,wBAAwB;;;;;;;;;;;;;;;;KAgBzC,CAAC;IACJ,CAAC;IAES,iBAAiB;QACzB,MAAM,EAAE,WAAW,GAAC,EAAE,EAAE,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACvB,OAAO,IAAI,CAAA,EAAE,CAAC;SACf;QACD,MAAM,KAAK,GAAqB,CAAC;gBAC/B,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,MAAM;aACb,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvB,OAAO,IAAI,CAAA;;;QAGP,IAAI,CACJ,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,EAC5F,IAAI,CAAA,8DAA8D,CACnE;;;KAGF,CAAC;IACJ,CAAC;IAES,gBAAgB;QACxB,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAES,gBAAgB;QACxB,OAAO,IAAI,CAAA;;;KAGV,CAAC;IACJ,CAAC;IAES,iBAAiB;QACzB,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;SAC/D;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAA,mDAAmD,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAC7G,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,eAAe,CAAC,IAAW;QACnC,MAAM,MAAM,GAAqB,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SACnC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,cAAc;QACtB,OAAO,IAAI,CAAA;;;;;KAKV,CAAC;IACJ,CAAC;IAES,cAAc;QACtB,OAAO,IAAI,CAAA;;;;;KAKV,CAAC;IACJ,CAAC;IAES,gBAAgB,CAAC,YAA2B;QACpD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YAC5C,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,IAAI,CAAA;;;;;KAKV,CAAC;IACJ,CAAC;IAES,gBAAgB,CAAC,YAA2B;QACpD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YAC5C,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,IAAI,CAAA;;;;;KAKV,CAAC;IACJ,CAAC;IAES,eAAe,CAAC,YAA2B;QACnD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC3C,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,IAAI,CAAA;;;;;KAKV,CAAC;IACJ,CAAC;IAES,iBAAiB,CAAC,IAAW;QACrC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,SAAS,CAAC;QAC3D,OAAO,IAAI,CAAA;;;;;oBAKK,UAAU,CAAC,WAAW;kBACxB,UAAU,CAAC,WAAW;gBACxB,UAAU,CAAC,WAAW;mBACnB,UAAU,CAAC,WAAW;iBACxB,IAAI,CAAC,sBAAsB;kBAC1B,GAAG;;;;;;UAMX,IAAI,CAAC,cAAc,EAAE;UACrB,IAAI,CAAC,eAAe,CAAC,YAA6B,CAAC;;UAEnD,IAAI,CAAC,cAAc,EAAE;UACrB,IAAI,CAAC,gBAAgB,CAAC,YAA6B,CAAC;UACpD,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;;UAEhB,IAAI,CAAC,gBAAgB,CAAC,YAA6B,CAAC;SACrD,CAAC,CAAC,CAAC,OAAO;;;KAGd,CAAC;IACJ,CAAC;IAES,QAAQ,CAAC,IAAW;QAC5B,IAAI,IAA0B,CAAC;QAC/B,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,YAAY;gBAAE,IAAI,GAAG,QAAQ,CAAC;gBAAC,MAAM;YAC1C,KAAK,UAAU;gBAAE,IAAI,GAAG,QAAQ,CAAC;gBAAC,MAAM;YACxC,KAAK,WAAW;gBAAE,IAAI,GAAG,qBAAqB,CAAC;gBAAC,MAAM;YACtD,QAAQ;SACT;QAED,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAA;QACpB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,kBAAkB,IAAI,gCAAgC,CAAC,CAAC,CAAC,OAAO;QAC3E,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,iBAAiB;KACtC,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAES,SAAS,CAAC,IAAW;QAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAA,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;SACxD;QACD,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,EAAE;YAC3B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAA,0CAA0C,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;SAC9F;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAA,+CAA+C,CAAC;QACnE,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAA,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAChF,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,GAAW;QACxC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAA;;OAEV,CAAC;SACH;QACD,OAAO,IAAI,CAAA,8BAA8B,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS,CAAC;IAC5E,CAAC;IAES,WAAW,CAAC,IAAW;QAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAE9B,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAA;iCACK,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;KACrE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;IAChC,CAAC;IAES,WAAW,CAAC,IAAW;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACzG,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IAES,mBAAmB,CAAC,IAAW;QACvC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,SAAS,CAAC;QAC3D,OAAO,IAAI,CAAA;;;;;oBAKK,UAAU,CAAC,WAAW;kBACxB,UAAU,CAAC,WAAW;gBACxB,UAAU,CAAC,WAAW;mBACnB,UAAU,CAAC,WAAW;iBACxB,IAAI,CAAC,sBAAsB;kBAC1B,GAAG;;;;;;UAMX,IAAI,CAAC,eAAe,CAAC,YAA6B,CAAC;;UAEnD,IAAI,CAAC,gBAAgB,CAAC,YAA6B,CAAC;UACpD,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;;UAEhB,IAAI,CAAC,gBAAgB,CAAC,YAA6B,CAAC;SACrD,CAAC,CAAC,CAAC,OAAO;;;KAGd,CAAC;IACJ,CAAC;IAES,yBAAyB;QACjC,OAAO,IAAI,CAAA;;uCAEwB,IAAI,CAAC,oBAAoB;;;;;;;;;;wBAUxC,IAAI,CAAC,MAAM,CAAC,aAAa;;;;0DAIS,IAAI,CAAC,yBAAyB;;;;;KAKnF,CAAC;IACJ,CAAC;IAES,wBAAwB;QAChC,OAAO,IAAI,CAAA;;uCAEwB,IAAI,CAAC,mBAAmB;;;;kIAImE,IAAI,CAAC,MAAM,CAAC,aAAa;;;0DAGjG,IAAI,CAAC,wBAAwB;;;;;KAKlF,CAAC;IACJ,CAAC;IAES,wBAAwB;QAChC,OAAO,IAAI,CAAA;;uCAEwB,IAAI,CAAC,mBAAmB;;;;kIAImE,IAAI,CAAC,MAAM,CAAC,aAAa;;;0DAGjG,IAAI,CAAC,wBAAwB;;;;;KAKlF,CAAC;IACJ,CAAC;IAES,kBAAkB;QAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC7B,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC7G,MAAM,WAAW,GAAG,WAAW,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC1E,MAAM,SAAS,GAAG,WAAW,KAAK,WAAW,CAAC,IAAI,CAAC;QACnD,OAAO,IAAI,CAAA;+CACgC,IAAI,CAAC,wBAAwB;uBACrD,IAAI,CAAC,aAAa;;;YAG7B,IAAI,CAAC,gBAAgB,EAAE;;;0DAGuB,IAAI,CAAC,kBAAkB,KAAK,WAAW;YACrF,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA,2DAA2D,cAAc,sBAAsB,CAAC,CAAC,CAAC,EAAE;;;;KAI3H,CAAC;IACJ,CAAC;IAES,gBAAgB;QACxB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAC7B,QAAQ,WAAW,EAAE;YACnB,KAAK,WAAW,CAAC,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3D,KAAK,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtD,KAAK,WAAW,CAAC,QAAQ,CAAC;YAC1B,KAAK,WAAW,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1C;IACH,CAAC;IAES,iBAAiB;QACzB,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QACjC,MAAM,YAAY,GAAG,eAAe,IAAI,eAAe,CAAC,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrG,OAAO,IAAI,CAAA;;;MAGT,YAAY,CAAC,CAAC,CAAC,IAAI,CAAA,6BAA6B,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE;KAC1E,CAAC;IACJ,CAAC;IAES,gBAAgB;QACxB,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;IAES,gBAAgB;QACxB,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { \n IFile, HttpProject, Project, Folder, ProjectKind, FolderKind, \n EventUtils, DataNamespace, DataFile, DataFileKind, \n FileAddOptions, FileBreadcrumb, ContextSpaceListOptions, \n BroadcastEvent, BroadcastFileData, \n FileMetaCreatedBroadcastEvent,\n DeletedBroadcastEvent,\n FilePatchBroadcastEvent,\n ContextListResult,\n ICapabilities,\n} from \"@api-client/core/build/browser.js\";\nimport { html, nothing, TemplateResult } from \"lit\";\nimport { join } from \"lit/directives/join.js\";\nimport { map } from \"lit/directives/map.js\";\nimport { until } from 'lit/directives/until.js';\nimport { Patch } from \"@api-client/json\";\nimport type ApiClientScreen from \"../ApiClient.screen.js\";\nimport { DataTable } from \"../../../ui/table/DataTable.js\";\nimport { NavigationEvents } from \"../../../events/NavigationEvents.js\";\nimport { navigate } from \"../../../lib/route.js\";\nimport { DataImportProcessor } from \"../../../http-client/store/DataImportProcessor.js\";\nimport { SnackNotifications } from \"../../../ui/notification/SnackNotifications.js\";\nimport { UiDialogClosingReason } from \"../../../ui/dialog/UiDialog.js\";\nimport { FileBindings } from \"../../../bindings/base/FileBindings.js\";\nimport { IconType } from \"../../../ui/icons/Icons.js\";\nimport UserCache from '../../../store/UserCache.js';\nimport AppInfo from '../AppInfo.js';\nimport '@github/relative-time-element';\nimport '../../../define/ui/ui-list.js';\nimport '../../../define/ui/ui-list-item.js';\nimport '../../../define/ui/ui-dropdown-list.js';\nimport '../../../define/ui/ui-icon.js';\nimport '../../../define/ui/ui-icon-button.js';\nimport '../../../define/ui/ui-button.js';\nimport '../../../define/ui/ui-divider.js';\nimport '../../../define/dialog/rename-dialog.js';\nimport '../../../define/files/share-file.js';\n\nenum ImportState {\n Analyzing,\n Analyzed,\n Importing,\n Done,\n Error\n}\n\n/**\n * A class that specializes in rendering the list of files in HTTP Client.\n */\nexport class FilesPage {\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 * As long there's a cursor, there are more files to request.\n */\n cursor?: string;\n\n /**\n * The key of the currently rendered folder.\n */\n folder?: string;\n\n breadcrumbs?: FileBreadcrumb[];\n\n dt = new DataTable(() => this.files, { ariaLabel: 'Your files', active: true, selection: 'single' });\n\n importProcessor?: DataImportProcessor;\n\n importState?: ImportState;\n\n /**\n * Whether the UI is reading files \n */\n readingFiles?: boolean;\n\n /**\n * A selected in the table item.\n */\n selectedItem?: string;\n \n constructor(protected screen: ApiClientScreen) {\n this.createProjectHandler = this.createProjectHandler.bind(this);\n this.createFolderHandler = this.createFolderHandler.bind(this);\n this.createSelectHandler = this.createSelectHandler.bind(this);\n this.pageOptionsSelectHandler = this.pageOptionsSelectHandler.bind(this);\n this.importHandler = this.importHandler.bind(this);\n this.cancelImportDialog = this.cancelImportDialog.bind(this);\n this.cancelCreateProjectDialog = this.cancelCreateProjectDialog.bind(this);\n this.cancelCreateFolderDialog = this.cancelCreateFolderDialog.bind(this);\n this.handleFileOptionSelect = this.handleFileOptionSelect.bind(this);\n this.cancelCreateSchemaDialog = this.cancelCreateSchemaDialog.bind(this);\n this.createSchemaHandler = this.createSchemaHandler.bind(this);\n this.handleSelectedShare = this.handleSelectedShare.bind(this);\n this.handleSelectedTrash = this.handleSelectedTrash.bind(this);\n this.dt.addEventListener('empty', this.renderEmptyTable.bind(this));\n this.dt.addEventListener('header', this.renderTableHeader.bind(this));\n this.dt.addEventListener('item', this.renderTableItem.bind(this));\n this.dt.addEventListener('activate', this.itemActivateHandler.bind(this));\n this.dt.addEventListener('render', this.handleTableRender.bind(this));\n this.dt.addEventListener('select', this.handleTableSelect.bind(this));\n }\n\n async refresh(): Promise<void> {\n this.resetList();\n this.screen.render();\n await this.readFiles();\n }\n\n resetList(): void {\n this.files = [];\n this.cursor = undefined;\n this.breadcrumbs = undefined;\n }\n\n async readFiles(): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n return;\n }\n if (this.readingFiles) {\n return;\n }\n this.readingFiles = true;\n const { cursor: filesCursor, folder } = this;\n const opts: ContextSpaceListOptions = {\n space: selectedSpace,\n descending: true,\n };\n if (filesCursor) {\n opts.cursor = filesCursor;\n }\n if (folder) {\n opts.parent = folder;\n }\n try {\n const result = await this.listFiles(opts);\n const { items, cursor } = result;\n this.files = this.files.concat(items).sort(this.filesSortFunction.bind(this));\n this.cursor = cursor;\n if (folder) {\n const br = await this.screen.bindings.store.files.breadcrumbs(folder);\n this.breadcrumbs = br.items.reverse();\n }\n } finally {\n this.readingFiles = false;\n }\n this.screen.render();\n }\n\n protected async listFiles(opts: ContextSpaceListOptions): Promise<ContextListResult<IFile>> {\n return this.screen.bindings.store.files.list(opts);\n }\n\n /**\n * Sorts files on the list.\n * \n * Folders are always on top.\n */\n filesSortFunction(a: IFile, b:IFile): number {\n if (a.kind !== b.kind) {\n if (a.kind === FolderKind) {\n return -1;\n }\n return 1;\n }\n if (a.kind === b.kind && a.kind === FolderKind) {\n return (a.info.name || '').localeCompare(b.info.name || '');\n }\n return b.lastModified.time - a.lastModified.time;\n }\n\n handleFileEvent(event: BroadcastEvent): void {\n const typed = event as BroadcastEvent & BroadcastFileData;\n if (typed.parent && typed.parent !== this.folder) {\n return;\n }\n if (typed.alt !== 'meta') {\n return;\n }\n switch (event.operation) {\n case 'created': this.handleFileCreated((typed as FileMetaCreatedBroadcastEvent).data); break;\n case 'deleted': this.handleFileDeleted(typed as DeletedBroadcastEvent); break;\n case 'patch': this.handleFilePatch(typed as FilePatchBroadcastEvent); break;\n default:\n }\n }\n\n handleFileCreated(file: IFile): void {\n this.files.push(file);\n this.files.sort(this.filesSortFunction.bind(this));\n this.screen.render();\n }\n\n handleFileDeleted(event: DeletedBroadcastEvent): void {\n this.removeFileFromList(event.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.screen.render();\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.screen.render();\n }\n\n protected cancelCreateProjectDialog(): void {\n this.screen.closeDialog('createProjectDialog');\n }\n\n protected cancelCreateFolderDialog(): void {\n this.screen.closeDialog('createFolderDialog');\n }\n\n protected cancelImportDialog(): void {\n this.screen.closeDialog('importProjectDialog');\n }\n\n protected cancelCreateSchemaDialog(): void {\n this.screen.closeDialog('createSchemaDialog');\n }\n\n protected createProjectHandler(e: SubmitEvent): void {\n const form = e.target as HTMLFormElement;\n const input = form.querySelector('ui-text-field');\n if (!input) {\n return;\n }\n const { submitter } = e;\n if (!submitter) {\n return;\n }\n const button = submitter as HTMLButtonElement; // or equivalent\n if (button.value !== 'submit') {\n return;\n }\n const { value } = input;\n input.value = '';\n this.addProject(value);\n }\n\n protected createFolderHandler(e: SubmitEvent): void {\n const form = e.target as HTMLFormElement;\n const input = form.querySelector('ui-text-field');\n if (!input) {\n return;\n }\n const { submitter } = e;\n if (!submitter) {\n return;\n }\n const button = submitter as HTMLButtonElement; // or equivalent\n if (button.value !== 'submit') {\n return;\n }\n const { value } = input;\n input.value = '';\n this.addFolder(value);\n }\n\n protected createSchemaHandler(e: SubmitEvent): void {\n const form = e.target as HTMLFormElement;\n const input = form.querySelector('ui-text-field');\n if (!input) {\n return;\n }\n const { submitter } = e;\n if (!submitter) {\n return;\n }\n const button = submitter as HTMLButtonElement; // or equivalent\n if (button.value !== 'submit') {\n return;\n }\n const { value } = input;\n input.value = '';\n this.addSchema(value);\n }\n\n protected async addProject(name: string): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a space first');\n }\n const media = HttpProject.fromName(name);\n const meta = Project.fromProject(media, selectedSpace);\n await this.addFile(meta.toJSON(), media.toJSON());\n }\n\n protected async addFolder(name: string): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a space first');\n }\n const space = Folder.fromName(name, selectedSpace);\n await this.addFile(space.toJSON());\n }\n\n protected async addSchema(name: string): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a space first');\n }\n const media = DataNamespace.fromName(name);\n const file = DataFile.fromDataNamespace(media, selectedSpace);\n await this.addFile(file.toJSON(), media.toJSON());\n }\n\n protected async addFile(file: IFile, media?: unknown): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a space first');\n }\n const opts: FileAddOptions = {};\n if (this.folder) {\n opts.parent = this.folder;\n }\n const result = await this.screen.bindings.store.files.add(file, opts);\n if (media) {\n await this.screen.bindings.store.media.add(result.key, media, 'application/json');\n }\n }\n\n protected pageOptionsSelectHandler(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined;\n if (!target) {\n return;\n }\n const option = target.dataset.option as string | undefined;\n if (option === 'import-project') {\n this.screen.openDialog('importProjectDialog');\n } else if (option === 'refresh-list') {\n this.refresh();\n }\n }\n\n protected createSelectHandler(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined;\n if (!target) {\n return;\n }\n const option = target.dataset.option as string | undefined;\n if (option === 'folder') {\n this.screen.openDialog('createFolderDialog');\n } else if (option === 'project') {\n this.screen.openDialog('createProjectDialog');\n } else if (option === 'schema') {\n this.screen.openDialog('createSchemaDialog');\n }\n }\n\n protected importHandler(e: SubmitEvent): void {\n e.preventDefault();\n const form = e.target as HTMLFormElement;\n const input = form.querySelector('ui-text-field');\n if (!input) {\n this.cancelImportDialog();\n return;\n }\n const { submitter } = e;\n if (!submitter) {\n this.cancelImportDialog();\n return;\n }\n const button = submitter as HTMLButtonElement; // or equivalent\n if (button.value !== 'import') {\n this.cancelImportDialog();\n return;\n }\n const { files } = input;\n if (!files || !files[0]) {\n this.cancelImportDialog();\n return;\n }\n this.processImportFile(files[0]);\n }\n\n protected async processImportFile(file: File): Promise<void> {\n this.importState = ImportState.Analyzing;\n this.screen.render();\n\n const processor = new DataImportProcessor();\n const analysis = await processor.fromFile(file);\n this.importState = ImportState.Analyzed;\n this.screen.render();\n\n this.importProcessor = processor;\n\n if (!analysis.error) {\n this.continueDataImport();\n }\n }\n\n protected async continueDataImport(): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a Folder first');\n }\n const { importProcessor } = this;\n if (!importProcessor) {\n throw new Error('Invalid state. Import processor not activated.');\n }\n this.importState = ImportState.Importing;\n this.screen.render();\n try {\n await importProcessor.importProject(this.screen.bindings.store, selectedSpace, this.folder);\n this.importState = ImportState.Done;\n this.screen.render();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n this.importState = ImportState.Error;\n }\n }\n\n protected importDialogCloseHandler(): void {\n if (this.importProcessor) {\n this.importProcessor.abort();\n this.importProcessor = undefined;\n }\n this.importState = undefined;\n }\n\n protected itemActivateHandler(item: IFile): void {\n const { kind } = item;\n if (kind === ProjectKind) {\n this.openProject(item.key);\n } else if (kind === FolderKind) {\n this.openFolder(item);\n } else if (kind === DataFileKind) {\n this.openDataSchema(item.key);\n } else {\n throw new Error(`Unknown activation item: ${kind}`);\n }\n }\n\n protected handleTableRender(): void {\n this.screen.render();\n }\n\n protected handleTableSelect(item: string | string[]): void {\n if (Array.isArray(item)) {\n return;\n }\n this.selectedItem = item;\n this.screen.render();\n }\n\n openProject(key: string): void {\n const file = this.files.find(i => i.key === key);\n if (!file) {\n throw new Error(`Invalid state: file not found`);\n }\n NavigationEvents.App.runHttpProject({\n space: file.space,\n key,\n });\n }\n\n openDataSchema(key: string): void {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('The Folder is not set.');\n }\n NavigationEvents.App.runSchemaDesigner({\n key,\n space: selectedSpace,\n });\n }\n\n async openFolder(folder: IFile): Promise<void> {\n navigate('files', folder.key);\n this.selectedItem = undefined;\n }\n\n protected handleFileOptionSelect(e: CustomEvent): void {\n const item = e.detail.item as HTMLElement;\n const list = e.target as HTMLElement;\n const operation = item.dataset.option as string;\n const key = list.dataset.key as string;\n if (!key || !operation) {\n return;\n }\n if (operation === 'delete') {\n this.deleteFile(key);\n } else if (operation === 'save-file') {\n this.saveFile(key);\n } else if (operation === 'rename') {\n this.renameFile(key);\n } else if (operation === 'share') {\n this.shareFile(key);\n }\n }\n\n async deleteFile(key: string): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error(`Invalid state: Space is not selected.`);\n }\n const trashKey = await this.screen.bindings.store.files.delete(key);\n SnackNotifications.notify('The file was moved to trash.', { \n close: true,\n actionLabel: 'Undo',\n actionCallback: async () => {\n await this.screen.bindings.store.trash.restore(trashKey);\n }\n });\n }\n\n async saveFile(key: string): Promise<void> {\n const files = this.screen.bindings.files as FileBindings;\n const content = await this.screen.bindings.store.media.read(key);\n const queryResult = await files.saveFileDialog({\n excludeAcceptAllOption: true,\n title: 'Save file as...',\n filters: [\n {\n description: 'HTTP Client files',\n accept: {\n 'application/json': ['.json'],\n },\n }\n ],\n });\n if (queryResult.canceled) {\n return;\n }\n const data = JSON.stringify(content);\n const path = queryResult.filePath as string;\n await files.writeFile(path, data, { dispose: true });\n }\n\n protected renameFile(key: string): void {\n const file = this.files.find(i => i.key === key);\n if (!file) {\n return;\n }\n const name = file.info.name || '';\n const dialog = document.createElement('rename-dialog');\n dialog.name = name;\n dialog.modal = true;\n dialog.open = true;\n document.body.appendChild(dialog);\n dialog.addEventListener('close', async (ev: Event) => {\n document.body.removeChild(dialog);\n const event = ev as CustomEvent<UiDialogClosingReason>;\n const { cancelled, value } = event.detail;\n if (!cancelled && value) {\n this.screen.renameFile(file, value as string);\n }\n });\n }\n\n protected shareFile(key: string): void {\n const file = this.files.find(i => i.key === key);\n if (!file) {\n return;\n }\n const dialog = document.createElement('share-file');\n dialog.file = file;\n dialog.user = this.screen.user;\n dialog.appInfo = AppInfo;\n dialog.modal = true;\n document.body.appendChild(dialog);\n dialog.open = true;\n dialog.addEventListener('closed', () => {\n document.body.removeChild(dialog);\n });\n }\n\n protected handleSelectedShare(): void {\n const { selectedItem } = this;\n if (!selectedItem) {\n return\n }\n this.shareFile(selectedItem);\n }\n\n protected handleSelectedTrash(): void {\n const { selectedItem } = this;\n if (!selectedItem) {\n return\n }\n this.deleteFile(selectedItem);\n }\n\n render(): TemplateResult {\n return html`\n <div class=\"section-header\">\n <h2 class=\"headline-small\">Your files</h2>\n ${this.renderBreadcrumbs()}\n <div class=\"spacer\"></div>\n ${this.renderSelectedToolbar()}\n ${this.renderCreateButton()}\n ${this.renderPageMoreOptions()}\n </div>\n ${this.renderFilesTable()}\n ${this.renderCreateProjectDialog()}\n ${this.renderCreateFolderDialog()}\n ${this.renderImportDialog()}\n ${this.renderCreateSchemaDialog()}\n `;\n }\n\n protected renderSelectedToolbar(): TemplateResult | typeof nothing {\n const { selectedItem } = this;\n if (!selectedItem) {\n return nothing\n }\n const file = this.files.find(i => i.key === selectedItem);\n if (!file) {\n return nothing;\n }\n return html`\n ${this.renderSelectionShareButton(file)}\n ${this.renderSelectionDeleteButton(file)}\n <ui-divider horizontal type=\"middle\"></ui-divider>\n `;\n }\n\n protected renderSelectionShareButton(selected: IFile): TemplateResult {\n const { capabilities } = selected;\n let canShare = false;\n if (capabilities) {\n canShare = capabilities.canShare;\n }\n return html`\n <ui-icon-button\n title=\"Share selected file\"\n aria-label=\"Share selected file\"\n ?disabled=\"${!canShare}\"\n @click=\"${this.handleSelectedShare}\"\n >\n <ui-icon icon=\"personAdd\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderSelectionDeleteButton(selected: IFile): TemplateResult {\n const { capabilities } = selected;\n let canDelete = false;\n if (capabilities) {\n canDelete = capabilities.canDelete;\n }\n return html`\n <ui-icon-button\n title=\"Move selected file to trash\"\n aria-label=\"Move selected file to trash\"\n ?disabled=\"${!canDelete}\"\n @click=\"${this.handleSelectedTrash}\"\n >\n <ui-icon icon=\"deleteFile\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderCreateButton(): TemplateResult {\n return html`\n <ui-dropdown-list\n @select=\"${this.createSelectHandler}\" \n horizontalAlign=\"right\"\n closeOnOutsideClick\n >\n <ui-button type=\"outlined\" class=\"new-button\">\n <ui-icon icon=\"add\" slot=\"icon\"></ui-icon>\n New\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item image=\"icon\" data-option=\"project\" role=\"menuitem\">\n <ui-icon icon=\"collectionsBookmark\" slot=\"start\"></ui-icon>\n Project\n </ui-list-item>\n <ui-list-item image=\"icon\" data-option=\"schema\" role=\"menuitem\">\n <ui-icon icon=\"schema\" slot=\"start\"></ui-icon>\n Data schema\n </ui-list-item>\n <ui-divider></ui-divider>\n <ui-list-item image=\"icon\" data-option=\"folder\" role=\"menuitem\">\n <ui-icon icon=\"folder\" slot=\"start\"></ui-icon>\n Folder\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderPageMoreOptions(): TemplateResult {\n return html`\n <ui-dropdown-list\n @select=\"${this.pageOptionsSelectHandler}\" \n horizontalAlign=\"right\"\n closeOnOutsideClick\n >\n <ui-icon-button title=\"More options\" aria-label=\"Activate for more options\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item data-option=\"import-project\" role=\"menuitem\">\n Import project\n </ui-list-item>\n <ui-list-item data-option=\"refresh-list\" role=\"menuitem\">\n Refresh list\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderBreadcrumbs(): TemplateResult {\n const { breadcrumbs=[] } = this;\n if (!breadcrumbs.length) {\n return html``;\n }\n const items: FileBreadcrumb[] = [{\n key: '',\n kind: '',\n name: 'root',\n }].concat(breadcrumbs);\n return html`\n <nav class=\"breadcrumbs body-medium\" aria-label=\"Breadcrumbs\">\n <ol>\n ${join(\n map(items, (i) => html`<li><a href=\"#/files${i.key ? `/${i.key}` : ''}\">${i.name}</a></li>`),\n html`<li aria-hidden=\"true\"><span class=\"separator\">/</span></li>`\n )}\n </ol>\n </nav>\n `;\n }\n\n protected renderFilesTable(): TemplateResult {\n return this.dt.render();\n }\n\n protected renderEmptyTable(): TemplateResult {\n return html`\n <p>You have no files.</p>\n <p>An HTTP project is a set of HTTP request related to an API. Use it to organize and document your HTTP requests.</p>\n `;\n }\n\n protected renderTableHeader(): TemplateResult[] {\n const result: TemplateResult[] = [];\n result.push(this.dt.header('Name', { class: 'name-cell' }));\n if (!this.screen.isSingleUser) {\n result.push(this.dt.header('Owner', { class: 'owner-cell' }));\n }\n result.push(this.dt.header('Updated', { class: 'updated-cell' }));\n result.push(this.dt.header(html`<span hidden aria-label=\"Row options\">Menu</span>`, { class: 'menu-cell' }));\n return result;\n }\n\n protected renderTableItem(item: IFile): TemplateResult[] {\n const result: TemplateResult[] = [];\n result.push(this.nameCell(item));\n if (!this.screen.isSingleUser) {\n result.push(this.ownerCell(item));\n }\n result.push(this.updatedCell(item));\n result.push(this.optionsCell(item));\n return result;\n }\n\n protected saveFileOption(): TemplateResult {\n return html`\n <ui-list-item image=\"icon\" data-option=\"save-file\" role=\"menuitem\" title=\"Saves the file on the computer\">\n <ui-icon icon=\"save\" slot=\"start\"></ui-icon>\n Save to file\n </ui-list-item>\n `;\n }\n\n protected openFileOption(): TemplateResult | typeof nothing {\n return html`\n <ui-list-item image=\"icon\" data-option=\"open\" role=\"menuitem\" title=\"Opens the file\">\n <ui-icon icon=\"openInNew\" slot=\"start\"></ui-icon>\n Open\n </ui-list-item>\n `;\n }\n\n protected deleteFileOption(capabilities: ICapabilities): TemplateResult | typeof nothing {\n if (!capabilities || !capabilities.canDelete) {\n return nothing;\n }\n return html`\n <ui-list-item image=\"icon\" data-option=\"delete\" role=\"menuitem\" title=\"Moves the file to Trash\">\n <ui-icon icon=\"deleteFile\" slot=\"start\"></ui-icon>\n Delete\n </ui-list-item>\n `;\n }\n\n protected renameFileOption(capabilities: ICapabilities): TemplateResult | typeof nothing {\n if (!capabilities || !capabilities.canRename) {\n return nothing;\n }\n return html`\n <ui-list-item image=\"icon\" data-option=\"rename\" role=\"menuitem\" title=\"Renames the file\">\n <ui-icon icon=\"rename\" slot=\"start\"></ui-icon>\n Rename\n </ui-list-item>\n `;\n }\n\n protected shareFileOption(capabilities: ICapabilities): TemplateResult | typeof nothing {\n if (!capabilities || !capabilities.canShare) {\n return nothing;\n }\n return html`\n <ui-list-item image=\"icon\" data-option=\"share\" role=\"menuitem\" title=\"Share the file\">\n <ui-icon icon=\"personAdd\" slot=\"start\"></ui-icon>\n Share\n </ui-list-item>\n `;\n }\n\n protected renderFileOptions(item: IFile): TemplateResult {\n const { key, capabilities } = item;\n const canDelete = !!capabilities && capabilities.canDelete;\n return html`\n <ui-dropdown-list\n horizontalAlign=\"auto\"\n verticalAlign=\"auto\"\n closeOnOutsideClick\n @mousedown=\"${EventUtils.cancelEvent}\" \n @mouseup=\"${EventUtils.cancelEvent}\" \n @click=\"${EventUtils.cancelEvent}\"\n @dblclick=\"${EventUtils.cancelEvent}\"\n @select=\"${this.handleFileOptionSelect}\"\n data-key=\"${key}\"\n >\n <ui-icon-button title=\"File options\" aria-label=\"Activate for file options\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${this.openFileOption()}\n ${this.shareFileOption(capabilities as ICapabilities)}\n <ui-divider></ui-divider>\n ${this.saveFileOption()}\n ${this.renameFileOption(capabilities as ICapabilities)}\n ${canDelete ? html`\n <ui-divider></ui-divider>\n ${this.deleteFileOption(capabilities as ICapabilities)}\n ` : nothing}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected nameCell(item: IFile): TemplateResult {\n let icon: IconType | undefined;\n switch (item.kind) {\n case DataFileKind: icon = 'schema'; break;\n case FolderKind: icon = 'folder'; break;\n case ProjectKind: icon = 'collectionsBookmark'; break;\n default: \n }\n\n return this.dt.cell(html`\n ${icon ? html`<ui-icon icon=\"${icon}\" class=\"cell-icon\"></ui-icon>` : nothing}\n ${item.info.name || 'Unnamed project'}\n `, { class: 'name-cell', data: { kind: item.kind } });\n }\n\n protected ownerCell(item: IFile): TemplateResult {\n const { user } = this.screen;\n if (!user) {\n return this.dt.cell(html`--`, { class: 'owner-cell' });\n }\n if (item.owner === user.key) {\n return this.dt.cell(html`<span aria-label=\"Owned by me\">me</span>`, { class: 'owner-cell' });\n }\n const content = this.ownerCellAsync(item.owner);\n const loader = html`<span class=\"owner-loading\">loading...</span>`;\n return this.dt.cell(html`${until(content, loader)}`, { class: 'owner-cell' });\n }\n\n protected async ownerCellAsync(key: string): Promise<TemplateResult> {\n const user = await UserCache.getUser(key);\n if (!user) {\n return html`\n <span aria-label=\"Owned by unknown user\">unknown</span>\n `;\n }\n return html`<span aria-label=\"Owned by ${user.name}\">${user.name}</span>`;\n }\n\n protected updatedCell(item: IFile): TemplateResult {\n const { lastModified } = item;\n\n return this.dt.cell(html`\n <relative-time datetime=\"${new Date(lastModified.time).toISOString()}\"></relative-time>\n `, { class: 'updated-cell' });\n }\n\n protected optionsCell(item: IFile): TemplateResult {\n const content = item.kind === FolderKind ? this.renderFolderOptions(item) : this.renderFileOptions(item);\n return this.dt.cell(content, { class: 'menu-cell' });\n }\n\n protected renderFolderOptions(item: IFile): TemplateResult {\n const { key, capabilities } = item;\n const canDelete = !!capabilities && capabilities.canDelete;\n return html`\n <ui-dropdown-list\n horizontalAlign=\"auto\"\n verticalAlign=\"auto\"\n closeOnOutsideClick\n @mousedown=\"${EventUtils.cancelEvent}\" \n @mouseup=\"${EventUtils.cancelEvent}\" \n @click=\"${EventUtils.cancelEvent}\"\n @dblclick=\"${EventUtils.cancelEvent}\"\n @select=\"${this.handleFileOptionSelect}\"\n data-key=\"${key}\"\n >\n <ui-icon-button title=\"Folder options\" aria-label=\"Activate for more options\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${this.shareFileOption(capabilities as ICapabilities)}\n <ui-divider></ui-divider>\n ${this.renameFileOption(capabilities as ICapabilities)}\n ${canDelete ? html`\n <ui-divider></ui-divider>\n ${this.deleteFileOption(capabilities as ICapabilities)}\n ` : nothing}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderCreateProjectDialog(): TemplateResult {\n return html`\n <dialog id=\"createProjectDialog\">\n <form method=\"dialog\" @submit=\"${this.createProjectHandler}\">\n <h3>New Project</h3>\n <div>\n <p class=\"body-medium\">Enter new project name</p>\n <ui-text-field \n class=\"input\" \n label=\"Project name\" \n name=\"name\" \n required \n invalidText=\"Project name is required\" \n @keydown=\"${this.screen.submitOnEnter}\"\n ></ui-text-field>\n </div>\n <div class=\"dialog-buttons\">\n <ui-button type=\"text\" value=\"cancel\" @click=\"${this.cancelCreateProjectDialog}\">Cancel</ui-button>\n <ui-button type=\"text\" value=\"submit\" submit>Create</ui-button>\n </div>\n </form>\n </dialog>\n `;\n }\n\n protected renderCreateSchemaDialog(): TemplateResult {\n return html`\n <dialog id=\"createSchemaDialog\">\n <form method=\"dialog\" @submit=\"${this.createSchemaHandler}\">\n <h3>New Schema</h3>\n <div>\n <p class=\"body-medium\">Enter new schema name</p>\n <ui-text-field class=\"input\" label=\"Schema name\" name=\"name\" required invalidText=\"Schema name is required\" @keydown=\"${this.screen.submitOnEnter}\"></ui-text-field>\n </div>\n <div class=\"dialog-buttons\">\n <ui-button type=\"text\" value=\"cancel\" @click=\"${this.cancelCreateSchemaDialog}\">Cancel</ui-button>\n <ui-button type=\"text\" value=\"submit\" submit>Create</ui-button>\n </div>\n </form>\n </dialog>\n `;\n }\n\n protected renderCreateFolderDialog(): TemplateResult {\n return html`\n <dialog id=\"createFolderDialog\">\n <form method=\"dialog\" @submit=\"${this.createFolderHandler}\">\n <h3>New Folder</h3>\n <div>\n <p class=\"body-medium\">Enter new folder name</p>\n <ui-text-field class=\"input\" label=\"Folder name\" name=\"name\" required invalidText=\"Folder name is required\" @keydown=\"${this.screen.submitOnEnter}\"></ui-text-field>\n </div>\n <div class=\"dialog-buttons\">\n <ui-button type=\"text\" value=\"cancel\" @click=\"${this.cancelCreateFolderDialog}\">Cancel</ui-button>\n <ui-button type=\"text\" value=\"submit\" submit>Create</ui-button>\n </div>\n </form>\n </dialog>\n `;\n }\n\n protected renderImportDialog(): TemplateResult {\n const { importState } = this;\n const submitDisabled = !!importState && [ImportState.Analyzing, ImportState.Importing].includes(importState);\n const cancelLabel = importState === ImportState.Done ? 'Close' : 'Cancel';\n const hasSubmit = importState !== ImportState.Done;\n return html`\n <dialog id=\"importProjectDialog\" @close=\"${this.importDialogCloseHandler}\">\n <form @submit=\"${this.importHandler}\">\n <h3>Import Project</h3>\n <div class=\"dialog-contents\">\n ${this.renderImportPage()}\n </div>\n <div class=\"dialog-buttons\">\n <ui-button type=\"text\" value=\"cancel\" @click=\"${this.cancelImportDialog}\">${cancelLabel}</ui-button>\n ${hasSubmit ? html`<ui-button type=\"text\" value=\"import\" submit ?disabled=\"${submitDisabled}\">Import</ui-button>` : ''}\n </div>\n </form>\n </dialog>\n `;\n }\n\n protected renderImportPage(): TemplateResult {\n const { importState } = this;\n switch (importState) {\n case ImportState.Importing: return this.renderImportWait();\n case ImportState.Done: return this.renderImportDone();\n case ImportState.Analyzed:\n case ImportState.Analyzing:\n default: return this.renderImportInput();\n }\n }\n\n protected renderImportInput(): TemplateResult {\n const { importProcessor } = this;\n const errorMessage = importProcessor && importProcessor.analysis && importProcessor.analysis.message;\n return html`\n <p class=\"body-medium\">Import projects from HTTP Client, Advanced REST Client, or a Postman collection.</p>\n <ui-text-field type=\"file\" class=\"input\" label=\"Project file\" name=\"file\" required invalidText=\"Project file is required\"></ui-text-field>\n ${errorMessage ? html`<div class=\"import-error\">${errorMessage}</div>` : ''}\n `;\n }\n\n protected renderImportWait(): TemplateResult {\n return html`\n <p class=\"body-medium\">Importing project...</p>\n `;\n }\n\n protected renderImportDone(): TemplateResult {\n return html`\n <p class=\"body-medium\">Import succeeded.</p>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Files.page.js","sourceRoot":"","sources":["../../../../src/pages/api-client/pages/Files.page.ts"],"names":[],"mappings":"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","sourcesContent":["import { \n IFile, HttpProject, Project, Folder, ProjectKind, FolderKind, \n EventUtils, DataNamespace, DataFile, DataFileKind, \n FileAddOptions, FileBreadcrumb, ContextSpaceListOptions, \n BroadcastEvent, BroadcastFileData, \n FileMetaCreatedBroadcastEvent,\n DeletedBroadcastEvent,\n FilePatchBroadcastEvent,\n ContextListResult,\n ICapabilities,\n} from \"@api-client/core/build/browser.js\";\nimport { html, nothing, TemplateResult } from \"lit\";\nimport { join } from \"lit/directives/join.js\";\nimport { map } from \"lit/directives/map.js\";\nimport { until } from 'lit/directives/until.js';\nimport { Patch } from \"@api-client/json\";\nimport type ApiClientScreen from \"../ApiClient.screen.js\";\nimport { DataTable } from \"../../../ui/table/DataTable.js\";\nimport { NavigationEvents } from \"../../../events/NavigationEvents.js\";\nimport { navigate } from \"../../../lib/route.js\";\nimport { DataImportProcessor } from \"../../../http-client/store/DataImportProcessor.js\";\nimport { SnackNotifications } from \"../../../ui/notification/SnackNotifications.js\";\nimport { UiDialogClosingReason } from \"../../../ui/dialog/UiDialog.js\";\nimport { FileBindings } from \"../../../bindings/base/FileBindings.js\";\nimport { IconType } from \"../../../ui/icons/Icons.js\";\nimport UserCache from '../../../store/UserCache.js';\nimport AppInfo from '../AppInfo.js';\nimport '@github/relative-time-element';\nimport '../../../define/ui/ui-list.js';\nimport '../../../define/ui/ui-list-item.js';\nimport '../../../define/ui/ui-dropdown-list.js';\nimport '../../../define/ui/ui-icon.js';\nimport '../../../define/ui/ui-icon-button.js';\nimport '../../../define/ui/ui-button.js';\nimport '../../../define/ui/ui-divider.js';\nimport '../../../define/ui/ui-text-field.js';\nimport '../../../define/dialog/rename-dialog.js';\nimport '../../../define/files/share-file.js';\n\nenum ImportState {\n Analyzing,\n Analyzed,\n Importing,\n Done,\n Error\n}\n\n/**\n * A class that specializes in rendering the list of files in HTTP Client.\n */\nexport class FilesPage {\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 * As long there's a cursor, there are more files to request.\n */\n cursor?: string;\n\n /**\n * The key of the currently rendered folder.\n */\n folder?: string;\n\n breadcrumbs?: FileBreadcrumb[];\n\n dt = new DataTable(() => this.files, { ariaLabel: 'Your files', active: true, selection: 'single' });\n\n importProcessor?: DataImportProcessor;\n\n importState?: ImportState;\n\n /**\n * Whether the UI is reading files \n */\n readingFiles?: boolean;\n\n /**\n * A selected in the table item.\n */\n selectedItem?: string;\n \n constructor(protected screen: ApiClientScreen) {\n this.createProjectHandler = this.createProjectHandler.bind(this);\n this.createFolderHandler = this.createFolderHandler.bind(this);\n this.createSelectHandler = this.createSelectHandler.bind(this);\n this.pageOptionsSelectHandler = this.pageOptionsSelectHandler.bind(this);\n this.importHandler = this.importHandler.bind(this);\n this.cancelImportDialog = this.cancelImportDialog.bind(this);\n this.cancelCreateProjectDialog = this.cancelCreateProjectDialog.bind(this);\n this.cancelCreateFolderDialog = this.cancelCreateFolderDialog.bind(this);\n this.handleFileOptionSelect = this.handleFileOptionSelect.bind(this);\n this.cancelCreateSchemaDialog = this.cancelCreateSchemaDialog.bind(this);\n this.createSchemaHandler = this.createSchemaHandler.bind(this);\n this.handleSelectedShare = this.handleSelectedShare.bind(this);\n this.handleSelectedTrash = this.handleSelectedTrash.bind(this);\n this.dt.addEventListener('empty', this.renderEmptyTable.bind(this));\n this.dt.addEventListener('header', this.renderTableHeader.bind(this));\n this.dt.addEventListener('item', this.renderTableItem.bind(this));\n this.dt.addEventListener('activate', this.itemActivateHandler.bind(this));\n this.dt.addEventListener('render', this.handleTableRender.bind(this));\n this.dt.addEventListener('select', this.handleTableSelect.bind(this));\n }\n\n async refresh(): Promise<void> {\n this.resetList();\n this.screen.render();\n await this.readFiles();\n }\n\n resetList(): void {\n this.files = [];\n this.cursor = undefined;\n this.breadcrumbs = undefined;\n }\n\n async readFiles(): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n return;\n }\n if (this.readingFiles) {\n return;\n }\n this.readingFiles = true;\n const { cursor: filesCursor, folder } = this;\n const opts: ContextSpaceListOptions = {\n space: selectedSpace,\n descending: true,\n };\n if (filesCursor) {\n opts.cursor = filesCursor;\n }\n if (folder) {\n opts.parent = folder;\n }\n try {\n const result = await this.listFiles(opts);\n const { items, cursor } = result;\n this.files = this.files.concat(items).sort(this.filesSortFunction.bind(this));\n this.cursor = cursor;\n if (folder) {\n const br = await this.screen.bindings.store.files.breadcrumbs(folder);\n this.breadcrumbs = br.items.reverse();\n }\n } finally {\n this.readingFiles = false;\n }\n this.screen.render();\n }\n\n protected async listFiles(opts: ContextSpaceListOptions): Promise<ContextListResult<IFile>> {\n return this.screen.bindings.store.files.list(opts);\n }\n\n /**\n * Sorts files on the list.\n * \n * Folders are always on top.\n */\n filesSortFunction(a: IFile, b:IFile): number {\n if (a.kind !== b.kind) {\n if (a.kind === FolderKind) {\n return -1;\n }\n return 1;\n }\n if (a.kind === b.kind && a.kind === FolderKind) {\n return (a.info.name || '').localeCompare(b.info.name || '');\n }\n return b.lastModified.time - a.lastModified.time;\n }\n\n handleFileEvent(event: BroadcastEvent): void {\n const typed = event as BroadcastEvent & BroadcastFileData;\n if (typed.parent && typed.parent !== this.folder) {\n return;\n }\n if (typed.alt !== 'meta') {\n return;\n }\n switch (event.operation) {\n case 'created': this.handleFileCreated((typed as FileMetaCreatedBroadcastEvent).data); break;\n case 'deleted': this.handleFileDeleted(typed as DeletedBroadcastEvent); break;\n case 'patch': this.handleFilePatch(typed as FilePatchBroadcastEvent); break;\n default:\n }\n }\n\n handleFileCreated(file: IFile): void {\n this.files.push(file);\n this.files.sort(this.filesSortFunction.bind(this));\n this.screen.render();\n }\n\n handleFileDeleted(event: DeletedBroadcastEvent): void {\n this.removeFileFromList(event.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.screen.render();\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.screen.render();\n }\n\n protected cancelCreateProjectDialog(): void {\n this.screen.closeDialog('createProjectDialog');\n }\n\n protected cancelCreateFolderDialog(): void {\n this.screen.closeDialog('createFolderDialog');\n }\n\n protected cancelImportDialog(): void {\n this.screen.closeDialog('importProjectDialog');\n }\n\n protected cancelCreateSchemaDialog(): void {\n this.screen.closeDialog('createSchemaDialog');\n }\n\n protected createProjectHandler(e: SubmitEvent): void {\n const form = e.target as HTMLFormElement;\n const input = form.querySelector('ui-text-field');\n if (!input) {\n return;\n }\n const { submitter } = e;\n if (!submitter) {\n return;\n }\n const button = submitter as HTMLButtonElement; // or equivalent\n if (button.value !== 'submit') {\n return;\n }\n const { value } = input;\n input.value = '';\n this.addProject(value);\n }\n\n protected createFolderHandler(e: SubmitEvent): void {\n const form = e.target as HTMLFormElement;\n const input = form.querySelector('ui-text-field');\n if (!input) {\n return;\n }\n const { submitter } = e;\n if (!submitter) {\n return;\n }\n const button = submitter as HTMLButtonElement; // or equivalent\n if (button.value !== 'submit') {\n return;\n }\n const { value } = input;\n input.value = '';\n this.addFolder(value);\n }\n\n protected createSchemaHandler(e: SubmitEvent): void {\n const form = e.target as HTMLFormElement;\n const input = form.querySelector('ui-text-field');\n if (!input) {\n return;\n }\n const { submitter } = e;\n if (!submitter) {\n return;\n }\n const button = submitter as HTMLButtonElement; // or equivalent\n if (button.value !== 'submit') {\n return;\n }\n const { value } = input;\n input.value = '';\n this.addSchema(value);\n }\n\n protected async addProject(name: string): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a space first');\n }\n const media = HttpProject.fromName(name);\n const meta = Project.fromProject(media, selectedSpace);\n await this.addFile(meta.toJSON(), media.toJSON());\n }\n\n protected async addFolder(name: string): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a space first');\n }\n const space = Folder.fromName(name, selectedSpace);\n await this.addFile(space.toJSON());\n }\n\n protected async addSchema(name: string): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a space first');\n }\n const media = DataNamespace.fromName(name);\n const file = DataFile.fromDataNamespace(media, selectedSpace);\n await this.addFile(file.toJSON(), media.toJSON());\n }\n\n protected async addFile(file: IFile, media?: unknown): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a space first');\n }\n const opts: FileAddOptions = {};\n if (this.folder) {\n opts.parent = this.folder;\n }\n const result = await this.screen.bindings.store.files.add(file, opts);\n if (media) {\n await this.screen.bindings.store.media.add(result.key, media, 'application/json');\n }\n }\n\n protected pageOptionsSelectHandler(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined;\n if (!target) {\n return;\n }\n const option = target.dataset.option as string | undefined;\n if (option === 'import-project') {\n this.screen.openDialog('importProjectDialog');\n } else if (option === 'refresh-list') {\n this.refresh();\n }\n }\n\n protected createSelectHandler(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined;\n if (!target) {\n return;\n }\n const option = target.dataset.option as string | undefined;\n if (option === 'folder') {\n this.screen.openDialog('createFolderDialog');\n } else if (option === 'project') {\n this.screen.openDialog('createProjectDialog');\n } else if (option === 'schema') {\n this.screen.openDialog('createSchemaDialog');\n }\n }\n\n protected importHandler(e: SubmitEvent): void {\n e.preventDefault();\n const form = e.target as HTMLFormElement;\n const input = form.querySelector('ui-text-field');\n if (!input) {\n this.cancelImportDialog();\n return;\n }\n const { submitter } = e;\n if (!submitter) {\n this.cancelImportDialog();\n return;\n }\n const button = submitter as HTMLButtonElement; // or equivalent\n if (button.value !== 'import') {\n this.cancelImportDialog();\n return;\n }\n const { files } = input;\n if (!files || !files[0]) {\n this.cancelImportDialog();\n return;\n }\n this.processImportFile(files[0]);\n }\n\n protected async processImportFile(file: File): Promise<void> {\n this.importState = ImportState.Analyzing;\n this.screen.render();\n\n const processor = new DataImportProcessor();\n const analysis = await processor.fromFile(file);\n this.importState = ImportState.Analyzed;\n this.screen.render();\n\n this.importProcessor = processor;\n\n if (!analysis.error) {\n this.continueDataImport();\n }\n }\n\n protected async continueDataImport(): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('You need to select a Folder first');\n }\n const { importProcessor } = this;\n if (!importProcessor) {\n throw new Error('Invalid state. Import processor not activated.');\n }\n this.importState = ImportState.Importing;\n this.screen.render();\n try {\n await importProcessor.importProject(this.screen.bindings.store, selectedSpace, this.folder);\n this.importState = ImportState.Done;\n this.screen.render();\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n this.importState = ImportState.Error;\n }\n }\n\n protected importDialogCloseHandler(): void {\n if (this.importProcessor) {\n this.importProcessor.abort();\n this.importProcessor = undefined;\n }\n this.importState = undefined;\n }\n\n protected itemActivateHandler(item: IFile): void {\n const { kind } = item;\n if (kind === ProjectKind) {\n this.openProject(item.key);\n } else if (kind === FolderKind) {\n this.openFolder(item);\n } else if (kind === DataFileKind) {\n this.openDataSchema(item.key);\n } else {\n throw new Error(`Unknown activation item: ${kind}`);\n }\n }\n\n protected handleTableRender(): void {\n this.screen.render();\n }\n\n protected handleTableSelect(item: string | string[]): void {\n if (Array.isArray(item)) {\n return;\n }\n this.selectedItem = item;\n this.screen.render();\n }\n\n openProject(key: string): void {\n const file = this.files.find(i => i.key === key);\n if (!file) {\n throw new Error(`Invalid state: file not found`);\n }\n NavigationEvents.App.runHttpProject({\n space: file.space,\n key,\n });\n }\n\n openDataSchema(key: string): void {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error('The Folder is not set.');\n }\n NavigationEvents.App.runSchemaDesigner({\n key,\n space: selectedSpace,\n });\n }\n\n async openFolder(folder: IFile): Promise<void> {\n navigate('files', folder.key);\n this.selectedItem = undefined;\n }\n\n protected handleFileOptionSelect(e: CustomEvent): void {\n const item = e.detail.item as HTMLElement;\n const list = e.target as HTMLElement;\n const operation = item.dataset.option as string;\n const key = list.dataset.key as string;\n if (!key || !operation) {\n return;\n }\n if (operation === 'delete') {\n this.deleteFile(key);\n } else if (operation === 'save-file') {\n this.saveFile(key);\n } else if (operation === 'rename') {\n this.renameFile(key);\n } else if (operation === 'share') {\n this.shareFile(key);\n }\n }\n\n async deleteFile(key: string): Promise<void> {\n const { selectedSpace } = this.screen;\n if (!selectedSpace) {\n throw new Error(`Invalid state: Space is not selected.`);\n }\n const trashKey = await this.screen.bindings.store.files.delete(key);\n SnackNotifications.notify('The file was moved to trash.', { \n close: true,\n actionLabel: 'Undo',\n actionCallback: async () => {\n await this.screen.bindings.store.trash.restore(trashKey);\n }\n });\n }\n\n async saveFile(key: string): Promise<void> {\n const files = this.screen.bindings.files as FileBindings;\n const content = await this.screen.bindings.store.media.read(key);\n const queryResult = await files.saveFileDialog({\n excludeAcceptAllOption: true,\n title: 'Save file as...',\n filters: [\n {\n description: 'HTTP Client files',\n accept: {\n 'application/json': ['.json'],\n },\n }\n ],\n });\n if (queryResult.canceled) {\n return;\n }\n const data = JSON.stringify(content);\n const path = queryResult.filePath as string;\n await files.writeFile(path, data, { dispose: true });\n }\n\n protected renameFile(key: string): void {\n const file = this.files.find(i => i.key === key);\n if (!file) {\n return;\n }\n const name = file.info.name || '';\n const dialog = document.createElement('rename-dialog');\n dialog.name = name;\n dialog.modal = true;\n dialog.open = true;\n document.body.appendChild(dialog);\n dialog.addEventListener('close', async (ev: Event) => {\n document.body.removeChild(dialog);\n const event = ev as CustomEvent<UiDialogClosingReason>;\n const { cancelled, value } = event.detail;\n if (!cancelled && value) {\n this.screen.renameFile(file, value as string);\n }\n });\n }\n\n protected shareFile(key: string): void {\n const file = this.files.find(i => i.key === key);\n if (!file) {\n return;\n }\n const dialog = document.createElement('share-file');\n dialog.file = file;\n dialog.user = this.screen.user;\n dialog.appInfo = AppInfo;\n dialog.modal = true;\n document.body.appendChild(dialog);\n dialog.open = true;\n dialog.addEventListener('closed', () => {\n document.body.removeChild(dialog);\n });\n }\n\n protected handleSelectedShare(): void {\n const { selectedItem } = this;\n if (!selectedItem) {\n return\n }\n this.shareFile(selectedItem);\n }\n\n protected handleSelectedTrash(): void {\n const { selectedItem } = this;\n if (!selectedItem) {\n return\n }\n this.deleteFile(selectedItem);\n }\n\n render(): TemplateResult {\n return html`\n <div class=\"section-header\">\n <h2 class=\"headline-small\">Your files</h2>\n ${this.renderBreadcrumbs()}\n <div class=\"spacer\"></div>\n ${this.renderSelectedToolbar()}\n ${this.renderCreateButton()}\n ${this.renderPageMoreOptions()}\n </div>\n ${this.renderFilesTable()}\n ${this.renderCreateProjectDialog()}\n ${this.renderCreateFolderDialog()}\n ${this.renderImportDialog()}\n ${this.renderCreateSchemaDialog()}\n `;\n }\n\n protected renderSelectedToolbar(): TemplateResult | typeof nothing {\n const { selectedItem } = this;\n if (!selectedItem) {\n return nothing\n }\n const file = this.files.find(i => i.key === selectedItem);\n if (!file) {\n return nothing;\n }\n return html`\n ${this.renderSelectionShareButton(file)}\n ${this.renderSelectionDeleteButton(file)}\n <ui-divider vertical type=\"middle\"></ui-divider>\n `;\n }\n\n protected renderSelectionShareButton(selected: IFile): TemplateResult {\n const { capabilities } = selected;\n let canShare = false;\n if (capabilities) {\n canShare = capabilities.canShare;\n }\n return html`\n <ui-icon-button\n title=\"Share selected file\"\n aria-label=\"Share selected file\"\n ?disabled=\"${!canShare}\"\n @click=\"${this.handleSelectedShare}\"\n >\n <ui-icon icon=\"personAdd\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderSelectionDeleteButton(selected: IFile): TemplateResult {\n const { capabilities } = selected;\n let canDelete = false;\n if (capabilities) {\n canDelete = capabilities.canDelete;\n }\n return html`\n <ui-icon-button\n title=\"Move selected file to trash\"\n aria-label=\"Move selected file to trash\"\n ?disabled=\"${!canDelete}\"\n @click=\"${this.handleSelectedTrash}\"\n >\n <ui-icon icon=\"deleteFile\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderCreateButton(): TemplateResult {\n return html`\n <ui-dropdown-list\n @select=\"${this.createSelectHandler}\" \n horizontalAlign=\"right\"\n closeOnOutsideClick\n >\n <ui-button type=\"outlined\" class=\"new-button\">\n <ui-icon icon=\"add\" slot=\"icon\"></ui-icon>\n New\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item image=\"icon\" data-option=\"project\" role=\"menuitem\">\n <ui-icon icon=\"collectionsBookmark\" slot=\"start\"></ui-icon>\n Project\n </ui-list-item>\n <ui-list-item image=\"icon\" data-option=\"schema\" role=\"menuitem\">\n <ui-icon icon=\"schema\" slot=\"start\"></ui-icon>\n Data schema\n </ui-list-item>\n <ui-divider></ui-divider>\n <ui-list-item image=\"icon\" data-option=\"folder\" role=\"menuitem\">\n <ui-icon icon=\"folder\" slot=\"start\"></ui-icon>\n Folder\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderPageMoreOptions(): TemplateResult {\n return html`\n <ui-dropdown-list\n @select=\"${this.pageOptionsSelectHandler}\" \n horizontalAlign=\"right\"\n closeOnOutsideClick\n >\n <ui-icon-button title=\"More options\" aria-label=\"Activate for more options\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item data-option=\"import-project\" role=\"menuitem\">\n Import project\n </ui-list-item>\n <ui-list-item data-option=\"refresh-list\" role=\"menuitem\">\n Refresh list\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderBreadcrumbs(): TemplateResult {\n const { breadcrumbs=[] } = this;\n if (!breadcrumbs.length) {\n return html``;\n }\n const items: FileBreadcrumb[] = [{\n key: '',\n kind: '',\n name: 'root',\n }].concat(breadcrumbs);\n return html`\n <nav class=\"breadcrumbs body-medium\" aria-label=\"Breadcrumbs\">\n <ol>\n ${join(\n map(items, (i) => html`<li><a href=\"#/files${i.key ? `/${i.key}` : ''}\">${i.name}</a></li>`),\n html`<li aria-hidden=\"true\"><span class=\"separator\">/</span></li>`\n )}\n </ol>\n </nav>\n `;\n }\n\n protected renderFilesTable(): TemplateResult {\n return this.dt.render();\n }\n\n protected renderEmptyTable(): TemplateResult {\n return html`\n <p>You have no files.</p>\n <p>An HTTP project is a set of HTTP request related to an API. Use it to organize and document your HTTP requests.</p>\n `;\n }\n\n protected renderTableHeader(): TemplateResult[] {\n const result: TemplateResult[] = [];\n result.push(this.dt.header('Name', { class: 'name-cell' }));\n if (!this.screen.isSingleUser) {\n result.push(this.dt.header('Owner', { class: 'owner-cell' }));\n }\n result.push(this.dt.header('Updated', { class: 'updated-cell' }));\n result.push(this.dt.header(html`<span hidden aria-label=\"Row options\">Menu</span>`, { class: 'menu-cell' }));\n return result;\n }\n\n protected renderTableItem(item: IFile): TemplateResult[] {\n const result: TemplateResult[] = [];\n result.push(this.nameCell(item));\n if (!this.screen.isSingleUser) {\n result.push(this.ownerCell(item));\n }\n result.push(this.updatedCell(item));\n result.push(this.optionsCell(item));\n return result;\n }\n\n protected saveFileOption(): TemplateResult {\n return html`\n <ui-list-item image=\"icon\" data-option=\"save-file\" role=\"menuitem\" title=\"Saves the file on the computer\">\n <ui-icon icon=\"save\" slot=\"start\"></ui-icon>\n Save to file\n </ui-list-item>\n `;\n }\n\n protected openFileOption(): TemplateResult | typeof nothing {\n return html`\n <ui-list-item image=\"icon\" data-option=\"open\" role=\"menuitem\" title=\"Opens the file\">\n <ui-icon icon=\"openInNew\" slot=\"start\"></ui-icon>\n Open\n </ui-list-item>\n `;\n }\n\n protected deleteFileOption(capabilities: ICapabilities): TemplateResult | typeof nothing {\n if (!capabilities || !capabilities.canDelete) {\n return nothing;\n }\n return html`\n <ui-list-item image=\"icon\" data-option=\"delete\" role=\"menuitem\" title=\"Moves the file to Trash\">\n <ui-icon icon=\"deleteFile\" slot=\"start\"></ui-icon>\n Delete\n </ui-list-item>\n `;\n }\n\n protected renameFileOption(capabilities: ICapabilities): TemplateResult | typeof nothing {\n if (!capabilities || !capabilities.canRename) {\n return nothing;\n }\n return html`\n <ui-list-item image=\"icon\" data-option=\"rename\" role=\"menuitem\" title=\"Renames the file\">\n <ui-icon icon=\"rename\" slot=\"start\"></ui-icon>\n Rename\n </ui-list-item>\n `;\n }\n\n protected shareFileOption(capabilities: ICapabilities): TemplateResult | typeof nothing {\n if (!capabilities || !capabilities.canShare) {\n return nothing;\n }\n return html`\n <ui-list-item image=\"icon\" data-option=\"share\" role=\"menuitem\" title=\"Share the file\">\n <ui-icon icon=\"personAdd\" slot=\"start\"></ui-icon>\n Share\n </ui-list-item>\n `;\n }\n\n protected renderFileOptions(item: IFile): TemplateResult {\n const { key, capabilities } = item;\n const canDelete = !!capabilities && capabilities.canDelete;\n return html`\n <ui-dropdown-list\n horizontalAlign=\"auto\"\n verticalAlign=\"auto\"\n closeOnOutsideClick\n @mousedown=\"${EventUtils.cancelEvent}\" \n @mouseup=\"${EventUtils.cancelEvent}\" \n @click=\"${EventUtils.cancelEvent}\"\n @dblclick=\"${EventUtils.cancelEvent}\"\n @select=\"${this.handleFileOptionSelect}\"\n data-key=\"${key}\"\n >\n <ui-icon-button title=\"File options\" aria-label=\"Activate for file options\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${this.openFileOption()}\n ${this.shareFileOption(capabilities as ICapabilities)}\n <ui-divider></ui-divider>\n ${this.saveFileOption()}\n ${this.renameFileOption(capabilities as ICapabilities)}\n ${canDelete ? html`\n <ui-divider></ui-divider>\n ${this.deleteFileOption(capabilities as ICapabilities)}\n ` : nothing}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected nameCell(item: IFile): TemplateResult {\n let icon: IconType | undefined;\n switch (item.kind) {\n case DataFileKind: icon = 'schema'; break;\n case FolderKind: icon = 'folder'; break;\n case ProjectKind: icon = 'collectionsBookmark'; break;\n default: \n }\n\n return this.dt.cell(html`\n ${icon ? html`<ui-icon icon=\"${icon}\" class=\"cell-icon\"></ui-icon>` : nothing}\n ${item.info.name || 'Unnamed project'}\n `, { class: 'name-cell', data: { kind: item.kind } });\n }\n\n protected ownerCell(item: IFile): TemplateResult {\n const { user } = this.screen;\n if (!user) {\n return this.dt.cell(html`--`, { class: 'owner-cell' });\n }\n if (item.owner === user.key) {\n return this.dt.cell(html`<span aria-label=\"Owned by me\">me</span>`, { class: 'owner-cell' });\n }\n const content = this.ownerCellAsync(item.owner);\n const loader = html`<span class=\"owner-loading\">loading...</span>`;\n return this.dt.cell(html`${until(content, loader)}`, { class: 'owner-cell' });\n }\n\n protected async ownerCellAsync(key: string): Promise<TemplateResult> {\n const user = await UserCache.getUser(key);\n if (!user) {\n return html`\n <span aria-label=\"Owned by unknown user\">unknown</span>\n `;\n }\n return html`<span aria-label=\"Owned by ${user.name}\">${user.name}</span>`;\n }\n\n protected updatedCell(item: IFile): TemplateResult {\n const { lastModified } = item;\n\n return this.dt.cell(html`\n <relative-time datetime=\"${new Date(lastModified.time).toISOString()}\"></relative-time>\n `, { class: 'updated-cell' });\n }\n\n protected optionsCell(item: IFile): TemplateResult {\n const content = item.kind === FolderKind ? this.renderFolderOptions(item) : this.renderFileOptions(item);\n return this.dt.cell(content, { class: 'menu-cell' });\n }\n\n protected renderFolderOptions(item: IFile): TemplateResult {\n const { key, capabilities } = item;\n const canDelete = !!capabilities && capabilities.canDelete;\n return html`\n <ui-dropdown-list\n horizontalAlign=\"auto\"\n verticalAlign=\"auto\"\n closeOnOutsideClick\n @mousedown=\"${EventUtils.cancelEvent}\" \n @mouseup=\"${EventUtils.cancelEvent}\" \n @click=\"${EventUtils.cancelEvent}\"\n @dblclick=\"${EventUtils.cancelEvent}\"\n @select=\"${this.handleFileOptionSelect}\"\n data-key=\"${key}\"\n >\n <ui-icon-button title=\"Folder options\" aria-label=\"Activate for more options\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${this.shareFileOption(capabilities as ICapabilities)}\n <ui-divider></ui-divider>\n ${this.renameFileOption(capabilities as ICapabilities)}\n ${canDelete ? html`\n <ui-divider></ui-divider>\n ${this.deleteFileOption(capabilities as ICapabilities)}\n ` : nothing}\n </ui-list>\n </ui-dropdown-list>\n `;\n }\n\n protected renderCreateProjectDialog(): TemplateResult {\n return html`\n <dialog id=\"createProjectDialog\">\n <form method=\"dialog\" @submit=\"${this.createProjectHandler}\">\n <h3>New Project</h3>\n <div>\n <p class=\"body-medium\">Enter new project name</p>\n <ui-text-field \n class=\"input\" \n label=\"Project name\" \n name=\"name\" \n required \n invalidText=\"Project name is required\" \n @keydown=\"${this.screen.submitOnEnter}\"\n ></ui-text-field>\n </div>\n <div class=\"dialog-buttons\">\n <ui-button type=\"text\" value=\"cancel\" @click=\"${this.cancelCreateProjectDialog}\">Cancel</ui-button>\n <ui-button type=\"text\" value=\"submit\" submit>Create</ui-button>\n </div>\n </form>\n </dialog>\n `;\n }\n\n protected renderCreateSchemaDialog(): TemplateResult {\n return html`\n <dialog id=\"createSchemaDialog\">\n <form method=\"dialog\" @submit=\"${this.createSchemaHandler}\">\n <h3>New Schema</h3>\n <div>\n <p class=\"body-medium\">Enter new schema name</p>\n <ui-text-field class=\"input\" label=\"Schema name\" name=\"name\" required invalidText=\"Schema name is required\" @keydown=\"${this.screen.submitOnEnter}\"></ui-text-field>\n </div>\n <div class=\"dialog-buttons\">\n <ui-button type=\"text\" value=\"cancel\" @click=\"${this.cancelCreateSchemaDialog}\">Cancel</ui-button>\n <ui-button type=\"text\" value=\"submit\" submit>Create</ui-button>\n </div>\n </form>\n </dialog>\n `;\n }\n\n protected renderCreateFolderDialog(): TemplateResult {\n return html`\n <dialog id=\"createFolderDialog\">\n <form method=\"dialog\" @submit=\"${this.createFolderHandler}\">\n <h3>New Folder</h3>\n <div>\n <p class=\"body-medium\">Enter new folder name</p>\n <ui-text-field class=\"input\" label=\"Folder name\" name=\"name\" required invalidText=\"Folder name is required\" @keydown=\"${this.screen.submitOnEnter}\"></ui-text-field>\n </div>\n <div class=\"dialog-buttons\">\n <ui-button type=\"text\" value=\"cancel\" @click=\"${this.cancelCreateFolderDialog}\">Cancel</ui-button>\n <ui-button type=\"text\" value=\"submit\" submit>Create</ui-button>\n </div>\n </form>\n </dialog>\n `;\n }\n\n protected renderImportDialog(): TemplateResult {\n const { importState } = this;\n const submitDisabled = !!importState && [ImportState.Analyzing, ImportState.Importing].includes(importState);\n const cancelLabel = importState === ImportState.Done ? 'Close' : 'Cancel';\n const hasSubmit = importState !== ImportState.Done;\n return html`\n <dialog id=\"importProjectDialog\" @close=\"${this.importDialogCloseHandler}\">\n <form @submit=\"${this.importHandler}\">\n <h3>Import Project</h3>\n <div class=\"dialog-contents\">\n ${this.renderImportPage()}\n </div>\n <div class=\"dialog-buttons\">\n <ui-button type=\"text\" value=\"cancel\" @click=\"${this.cancelImportDialog}\">${cancelLabel}</ui-button>\n ${hasSubmit ? html`<ui-button type=\"text\" value=\"import\" submit ?disabled=\"${submitDisabled}\">Import</ui-button>` : ''}\n </div>\n </form>\n </dialog>\n `;\n }\n\n protected renderImportPage(): TemplateResult {\n const { importState } = this;\n switch (importState) {\n case ImportState.Importing: return this.renderImportWait();\n case ImportState.Done: return this.renderImportDone();\n case ImportState.Analyzed:\n case ImportState.Analyzing:\n default: return this.renderImportInput();\n }\n }\n\n protected renderImportInput(): TemplateResult {\n const { importProcessor } = this;\n const errorMessage = importProcessor && importProcessor.analysis && importProcessor.analysis.message;\n return html`\n <p class=\"body-medium\">Import projects from HTTP Client, Advanced REST Client, or a Postman collection.</p>\n <ui-text-field type=\"file\" class=\"input\" label=\"Project file\" name=\"file\" required invalidText=\"Project file is required\"></ui-text-field>\n ${errorMessage ? html`<div class=\"import-error\">${errorMessage}</div>` : ''}\n `;\n }\n\n protected renderImportWait(): TemplateResult {\n return html`\n <p class=\"body-medium\">Importing project...</p>\n `;\n }\n\n protected renderImportDone(): TemplateResult {\n return html`\n <p class=\"body-medium\">Import succeeded.</p>\n `;\n }\n}\n"]}
|
|
@@ -3,15 +3,11 @@ import { HttpProject, IApplication, IHttpProject, IPatchRevision, IEnvironment,
|
|
|
3
3
|
import { JsonPatch } from "@api-client/json";
|
|
4
4
|
import { IRoute } from "../../mixins/RouteMixin.js";
|
|
5
5
|
import { ApplicationScreen } from "../ApplicationScreen.js";
|
|
6
|
-
import { HttpClientStoreBindings } from "../../bindings/base/HttpClientStoreBindings.js";
|
|
7
6
|
import ProjectNavigationElement from "../../elements/project/ProjectNavigation.js";
|
|
8
7
|
import { HttpClientContextMenu } from "./HttpClientContextMenu.js";
|
|
9
8
|
import { ISplitLayout, SplitLayout } from "../../elements/layout/SplitLayout.js";
|
|
10
9
|
import { SplitItem } from "../../elements/layout/SplitItem.js";
|
|
11
10
|
import { HttpClientProjectBindings } from "./types.js";
|
|
12
|
-
import { ProxyBindings } from "../../bindings/base/ProxyBindings.js";
|
|
13
|
-
import { StoreBindings } from "../../bindings/base/StoreBindings.js";
|
|
14
|
-
import { ConfigurationBindings } from "../../bindings/base/ConfigurationBindings.js";
|
|
15
11
|
import '../../define/ui/ui-button.js';
|
|
16
12
|
import '../../define/ui/ui-icon.js';
|
|
17
13
|
import '../../define/http-project/project-navigation.js';
|
|
@@ -59,10 +55,6 @@ export default class HttpProjectScreen extends ApplicationScreen {
|
|
|
59
55
|
*/
|
|
60
56
|
layoutStoreKey: string;
|
|
61
57
|
protected uiMap: Map<string, IRequestUiMeta>;
|
|
62
|
-
idb: HttpClientStoreBindings;
|
|
63
|
-
store: StoreBindings;
|
|
64
|
-
proxy: ProxyBindings;
|
|
65
|
-
config: ConfigurationBindings;
|
|
66
58
|
constructor(bindings: HttpClientProjectBindings);
|
|
67
59
|
initialize(): Promise<void>;
|
|
68
60
|
storeChanged(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpProject.screen.d.ts","sourceRoot":"","sources":["../../../src/pages/http-project/HttpProject.screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAQ,cAAc,EAAE,MAAM,KAAK,CAAC;AACtD,OAAO,EACK,WAAW,EAAE,YAAY,EAAE,YAAY,EACjD,cAAc,EAC0C,YAAY,EACpE,cAAc,EAEd,cAAc,EAEf,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAS,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpProject.screen.d.ts","sourceRoot":"","sources":["../../../src/pages/http-project/HttpProject.screen.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,6 @@ import AppInfo from './AppInfo.js';
|
|
|
18
18
|
import { EventTypes } from "../../events/EventTypes.js";
|
|
19
19
|
import { SplitLayout } from "../../elements/layout/SplitLayout.js";
|
|
20
20
|
import { LayoutType } from "../../elements/layout/type.js";
|
|
21
|
-
// eslint-disable-next-line import/no-cycle
|
|
22
21
|
import { RunnerKind } from "./types.js";
|
|
23
22
|
import '../../define/ui/ui-button.js';
|
|
24
23
|
import '../../define/ui/ui-icon.js';
|
|
@@ -79,10 +78,9 @@ export default class HttpProjectScreen extends ApplicationScreen {
|
|
|
79
78
|
this.layoutStoreKey = '';
|
|
80
79
|
this.uiMap = new Map();
|
|
81
80
|
this.environmentSchemas = new Map();
|
|
82
|
-
this.idb = bindings.idb;
|
|
83
|
-
this.
|
|
84
|
-
this.
|
|
85
|
-
this.config = bindings.config;
|
|
81
|
+
this.bindings.idb = bindings.idb;
|
|
82
|
+
this.bindings.proxy = bindings.proxy;
|
|
83
|
+
this.bindings.navigation = bindings.navigation;
|
|
86
84
|
this.menu = new HttpClientContextMenu();
|
|
87
85
|
this.menu.connect();
|
|
88
86
|
this.contextMenuMutationCallback = this.contextMenuMutationCallback.bind(this);
|
|
@@ -101,17 +99,18 @@ export default class HttpProjectScreen extends ApplicationScreen {
|
|
|
101
99
|
this.reportCriticalError(e.message);
|
|
102
100
|
return;
|
|
103
101
|
}
|
|
104
|
-
await this.
|
|
105
|
-
await this.
|
|
106
|
-
await this.
|
|
107
|
-
await this.
|
|
102
|
+
await this.bindings.navigation.initialize();
|
|
103
|
+
await this.bindings.idb.initialize();
|
|
104
|
+
await this.bindings.store.initialize();
|
|
105
|
+
await this.bindings.proxy.initialize();
|
|
106
|
+
await this.bindings.config.initialize();
|
|
108
107
|
await this.initializeConfig();
|
|
109
108
|
await this.initializeStore();
|
|
110
|
-
this.store.space = this.workspace;
|
|
111
|
-
this.proxy.space = this.workspace;
|
|
109
|
+
this.bindings.store.space = this.workspace;
|
|
110
|
+
this.bindings.proxy.space = this.workspace;
|
|
112
111
|
await this.setupProject(this.key);
|
|
113
|
-
await this.store.observeFile(this.key, 'media');
|
|
114
|
-
await this.store.observeHistory();
|
|
112
|
+
await this.bindings.store.observeFile(this.key, 'media');
|
|
113
|
+
await this.bindings.store.observeHistory();
|
|
115
114
|
this.layoutStoreKey = `http-client.http-project.state.layout.${this.key}`;
|
|
116
115
|
const state = await this.restoreLayout();
|
|
117
116
|
this.layout.initialize(state);
|
|
@@ -162,7 +161,7 @@ export default class HttpProjectScreen extends ApplicationScreen {
|
|
|
162
161
|
}
|
|
163
162
|
}
|
|
164
163
|
async readProjectFile(key) {
|
|
165
|
-
const media = await this.store.media.read(key);
|
|
164
|
+
const media = await this.bindings.store.media.read(key);
|
|
166
165
|
return media;
|
|
167
166
|
}
|
|
168
167
|
async storePatch(key, id, value, app) {
|
|
@@ -172,7 +171,7 @@ export default class HttpProjectScreen extends ApplicationScreen {
|
|
|
172
171
|
patch: value,
|
|
173
172
|
id,
|
|
174
173
|
};
|
|
175
|
-
await this.store.media.patch(key, info);
|
|
174
|
+
await this.bindings.store.media.patch(key, info);
|
|
176
175
|
}
|
|
177
176
|
/**
|
|
178
177
|
* A handler for the broadcast channel message which informs about changes to files media.
|