@api-client/ui 0.0.4 → 0.0.5
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/dist/amf/lib/AmfParameters.js +0 -4
- package/dist/amf/lib/AmfParameters.js.map +1 -1
- package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
- package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
- package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
- package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
- package/dist/amf/store/AmfGraphStore.js +0 -2
- package/dist/amf/store/AmfGraphStore.js.map +1 -1
- package/dist/amf/store/AmfStore.js +0 -7
- package/dist/amf/store/AmfStore.js.map +1 -1
- package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
- package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
- package/dist/bindings/base/PlatformBindings.js +6 -10
- package/dist/bindings/base/PlatformBindings.js.map +1 -1
- package/dist/bindings/base/ProxyBindings.js +9 -6
- package/dist/bindings/base/ProxyBindings.js.map +1 -1
- package/dist/bindings/base/SharedWorkerThread.js +4 -1
- package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
- package/dist/bindings/base/StoreBindings.js +162 -170
- package/dist/bindings/base/StoreBindings.js.map +1 -1
- package/dist/bindings/web/WebConfigurationBindings.js +22 -24
- package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
- package/dist/bindings/web/WebFileBindings.js +7 -4
- package/dist/bindings/web/WebFileBindings.js.map +1 -1
- package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
- package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
- package/dist/bindings/web/WebNavigationBindings.js +4 -1
- package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
- package/dist/bindings/web/WebProxyBindings.js +5 -6
- package/dist/bindings/web/WebProxyBindings.js.map +1 -1
- package/dist/bindings/web/WebStoreBindings.js +39 -44
- package/dist/bindings/web/WebStoreBindings.js.map +1 -1
- package/dist/contextual-menu/ContextualMenu.js +10 -19
- package/dist/contextual-menu/ContextualMenu.js.map +1 -1
- package/dist/contextual-menu/ContextualMenuElement.js +4 -32
- package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
- package/dist/contextual-menu/MenuItem.js +0 -12
- package/dist/contextual-menu/MenuItem.js.map +1 -1
- package/dist/define/amf/api-annotation-document.js +1 -1
- package/dist/define/amf/api-annotation-document.js.map +1 -1
- package/dist/define/amf/api-authorization-editor.js +1 -1
- package/dist/define/amf/api-authorization-editor.js.map +1 -1
- package/dist/define/amf/api-channel-document.js +1 -1
- package/dist/define/amf/api-channel-document.js.map +1 -1
- package/dist/define/amf/api-documentation-document.js +1 -1
- package/dist/define/amf/api-documentation-document.js.map +1 -1
- package/dist/define/amf/api-documentation.js +1 -1
- package/dist/define/amf/api-documentation.js.map +1 -1
- package/dist/define/amf/api-navigation.js +1 -1
- package/dist/define/amf/api-navigation.js.map +1 -1
- package/dist/define/amf/api-operation-document.js +1 -1
- package/dist/define/amf/api-operation-document.js.map +1 -1
- package/dist/define/amf/api-parameter-document.js +1 -1
- package/dist/define/amf/api-parameter-document.js.map +1 -1
- package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
- package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
- package/dist/define/amf/api-payload-document.js +1 -1
- package/dist/define/amf/api-payload-document.js.map +1 -1
- package/dist/define/amf/api-request-document.js +1 -1
- package/dist/define/amf/api-request-document.js.map +1 -1
- package/dist/define/amf/api-request-editor.js +1 -1
- package/dist/define/amf/api-request-editor.js.map +1 -1
- package/dist/define/amf/api-request.js +1 -1
- package/dist/define/amf/api-request.js.map +1 -1
- package/dist/define/amf/api-resource-document.js +1 -1
- package/dist/define/amf/api-resource-document.js.map +1 -1
- package/dist/define/amf/api-response-document.js +1 -1
- package/dist/define/amf/api-response-document.js.map +1 -1
- package/dist/define/amf/api-schema-document.js +1 -1
- package/dist/define/amf/api-schema-document.js.map +1 -1
- package/dist/define/amf/api-security-document.js +1 -1
- package/dist/define/amf/api-security-document.js.map +1 -1
- package/dist/define/amf/api-security-requirement-document.js +1 -1
- package/dist/define/amf/api-security-requirement-document.js.map +1 -1
- package/dist/define/amf/api-server-picker.js +1 -1
- package/dist/define/amf/api-server-picker.js.map +1 -1
- package/dist/define/amf/api-summary.js +1 -1
- package/dist/define/amf/api-summary.js.map +1 -1
- package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
- package/dist/define/authorization/apikey-authorization.js +1 -1
- package/dist/define/authorization/apikey-authorization.js.map +1 -1
- package/dist/define/authorization/basic-authorization.js +1 -1
- package/dist/define/authorization/basic-authorization.js.map +1 -1
- package/dist/define/authorization/bearer-authorization.js +1 -1
- package/dist/define/authorization/bearer-authorization.js.map +1 -1
- package/dist/define/authorization/cc-authorization.js +1 -1
- package/dist/define/authorization/cc-authorization.js.map +1 -1
- package/dist/define/authorization/ntlm-authorization.js +1 -1
- package/dist/define/authorization/ntlm-authorization.js.map +1 -1
- package/dist/define/authorization/oauth2-authorization.js +1 -1
- package/dist/define/authorization/oauth2-authorization.js.map +1 -1
- package/dist/define/authorization/oidc-authorization.js +1 -1
- package/dist/define/authorization/oidc-authorization.js.map +1 -1
- package/dist/define/contextual-menu/contextual-menu.js +1 -1
- package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
- package/dist/define/dialog/confirm-delete-dialog.js +1 -1
- package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
- package/dist/define/dialog/rename-dialog.js +1 -1
- package/dist/define/dialog/rename-dialog.js.map +1 -1
- package/dist/define/files/share-file.js +1 -1
- package/dist/define/files/share-file.js.map +1 -1
- package/dist/define/har/har-viewer.js +1 -1
- package/dist/define/har/har-viewer.js.map +1 -1
- package/dist/define/highlight/marked-highlight.js +1 -1
- package/dist/define/highlight/marked-highlight.js.map +1 -1
- package/dist/define/highlight/prism-highlight.js +1 -1
- package/dist/define/highlight/prism-highlight.js.map +1 -1
- package/dist/define/http/http-assertions.js +1 -1
- package/dist/define/http/http-assertions.js.map +1 -1
- package/dist/define/http/http-body-editor.js +1 -1
- package/dist/define/http/http-body-editor.js.map +1 -1
- package/dist/define/http/http-body-multipart-editor.js +1 -1
- package/dist/define/http/http-body-multipart-editor.js.map +1 -1
- package/dist/define/http/http-body-text-editor.js +1 -1
- package/dist/define/http/http-body-text-editor.js.map +1 -1
- package/dist/define/http/http-body-urlencoded-editor.js +1 -1
- package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
- package/dist/define/http/http-headers-form.js +1 -1
- package/dist/define/http/http-headers-form.js.map +1 -1
- package/dist/define/http/http-log-body.js +1 -1
- package/dist/define/http/http-log-body.js.map +1 -1
- package/dist/define/http/http-log-headers.js +1 -1
- package/dist/define/http/http-log-headers.js.map +1 -1
- package/dist/define/http/http-log-timings.js +1 -1
- package/dist/define/http/http-log-timings.js.map +1 -1
- package/dist/define/http/http-request-config.js +1 -1
- package/dist/define/http/http-request-config.js.map +1 -1
- package/dist/define/http/http-request-editor.js +1 -1
- package/dist/define/http/http-request-editor.js.map +1 -1
- package/dist/define/http/http-request-log.js +1 -1
- package/dist/define/http/http-request-log.js.map +1 -1
- package/dist/define/http/http-snippets.js +1 -1
- package/dist/define/http/http-snippets.js.map +1 -1
- package/dist/define/http/http-url-input.js +1 -1
- package/dist/define/http/http-url-input.js.map +1 -1
- package/dist/define/http/http-url-params-form.js +1 -1
- package/dist/define/http/http-url-params-form.js.map +1 -1
- package/dist/define/http-project/http-project-request-history.js +1 -1
- package/dist/define/http-project/http-project-request-history.js.map +1 -1
- package/dist/define/http-project/http-project-request.js +2 -2
- package/dist/define/http-project/http-project-request.js.map +1 -1
- package/dist/define/http-project/project-navigation.js +1 -1
- package/dist/define/http-project/project-navigation.js.map +1 -1
- package/dist/define/http-project/project-run-report.js +1 -1
- package/dist/define/http-project/project-run-report.js.map +1 -1
- package/dist/define/http-project/project-runner.js +2 -2
- package/dist/define/http-project/project-runner.js.map +1 -1
- package/dist/define/layout/split-view.js +1 -1
- package/dist/define/layout/split-view.js.map +1 -1
- package/dist/define/schema-design/schema-design-navigation.js +1 -1
- package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
- package/dist/define/schema-design/schema-namespace-selector.js +1 -1
- package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
- package/dist/define/ui/ui-button.js +1 -1
- package/dist/define/ui/ui-button.js.map +1 -1
- package/dist/define/ui/ui-chip.js +1 -1
- package/dist/define/ui/ui-chip.js.map +1 -1
- package/dist/define/ui/ui-collapse.js +1 -1
- package/dist/define/ui/ui-collapse.js.map +1 -1
- package/dist/define/ui/ui-dialog.js +1 -1
- package/dist/define/ui/ui-dialog.js.map +1 -1
- package/dist/define/ui/ui-dropdown-list.js +1 -1
- package/dist/define/ui/ui-dropdown-list.js.map +1 -1
- package/dist/define/ui/ui-icon-button.js +1 -1
- package/dist/define/ui/ui-icon-button.js.map +1 -1
- package/dist/define/ui/ui-icon.js +1 -1
- package/dist/define/ui/ui-icon.js.map +1 -1
- package/dist/define/ui/ui-list-item.js +1 -1
- package/dist/define/ui/ui-list-item.js.map +1 -1
- package/dist/define/ui/ui-list.js +1 -1
- package/dist/define/ui/ui-list.js.map +1 -1
- package/dist/define/ui/ui-listbox.js +1 -1
- package/dist/define/ui/ui-listbox.js.map +1 -1
- package/dist/define/ui/ui-progress.js +1 -1
- package/dist/define/ui/ui-progress.js.map +1 -1
- package/dist/define/ui/ui-segmented-button-set.js +1 -1
- package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
- package/dist/define/ui/ui-segmented-button.js +1 -1
- package/dist/define/ui/ui-segmented-button.js.map +1 -1
- package/dist/define/ui/ui-snackbar.js +1 -1
- package/dist/define/ui/ui-snackbar.js.map +1 -1
- package/dist/define/ui/ui-tab.js +1 -1
- package/dist/define/ui/ui-tab.js.map +1 -1
- package/dist/define/ui/ui-tabs.js +1 -1
- package/dist/define/ui/ui-tabs.js.map +1 -1
- package/dist/directives/data-attr.js +0 -1
- package/dist/directives/data-attr.js.map +1 -1
- package/dist/elements/ApiElement.js +0 -7
- package/dist/elements/ApiElement.js.map +1 -1
- package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
- package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiAuthorizationEditor.element.js +0 -32
- package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiDocumentation.element.js +0 -91
- package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
- package/dist/elements/amf/ApiDocumentationBase.js +0 -9
- package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
- package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
- package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiNavigation.element.js +0 -97
- package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.js +0 -76
- package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
- package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
- package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
- package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
- package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequest.element.js +0 -78
- package/dist/elements/amf/ApiRequest.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
- package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.js +0 -118
- package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
- package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
- package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
- package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
- package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
- package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiServerPicker.element.js +2 -65
- package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
- package/dist/elements/amf/ApiSummary.element.js +0 -26
- package/dist/elements/amf/ApiSummary.element.js.map +1 -1
- package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
- package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
- package/dist/elements/amf/authorization/AmfBasic.js +0 -4
- package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
- package/dist/elements/amf/authorization/AmfBearer.js +0 -4
- package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
- package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
- package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
- package/dist/elements/amf/authorization/AmfOidc.js +0 -4
- package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
- package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
- package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
- package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
- package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
- package/dist/elements/authorization/OAuth2Authorize.js +0 -14
- package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
- package/dist/elements/authorization/OidcAuthorize.js +0 -14
- package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
- package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
- package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
- package/dist/elements/authorization/ui/Authorization.js +18 -32
- package/dist/elements/authorization/ui/Authorization.js.map +1 -1
- package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
- package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
- package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
- package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
- package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
- package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
- package/dist/elements/code/HttpSnippets.js +9 -8
- package/dist/elements/code/HttpSnippets.js.map +1 -1
- package/dist/elements/dialog/ConfirmDelete.js +0 -12
- package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
- package/dist/elements/dialog/Rename.js +0 -6
- package/dist/elements/dialog/Rename.js.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.js +8 -11
- package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
- package/dist/elements/environment/ServerEditor.js +7 -45
- package/dist/elements/environment/ServerEditor.js.map +1 -1
- package/dist/elements/environment/VariablesEditor.js +7 -12
- package/dist/elements/environment/VariablesEditor.js.map +1 -1
- package/dist/elements/files/ShareFile.js +19 -57
- package/dist/elements/files/ShareFile.js.map +1 -1
- package/dist/elements/har/HarViewer.js +6 -7
- package/dist/elements/har/HarViewer.js.map +1 -1
- package/dist/elements/highlight/MarkedHighlight.js +4 -56
- package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
- package/dist/elements/highlight/PrismHighlight.js +9 -18
- package/dist/elements/highlight/PrismHighlight.js.map +1 -1
- package/dist/elements/highlight/PrismHighlighter.js +4 -6
- package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
- package/dist/elements/http/BodyEditor.js +21 -33
- package/dist/elements/http/BodyEditor.js.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.js +17 -18
- package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
- package/dist/elements/http/BodyTextEditor.js +2 -15
- package/dist/elements/http/BodyTextEditor.js.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.js +20 -21
- package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
- package/dist/elements/http/HeadersForm.js +16 -17
- package/dist/elements/http/HeadersForm.js.map +1 -1
- package/dist/elements/http/HttpAssertions.js +8 -6
- package/dist/elements/http/HttpAssertions.js.map +1 -1
- package/dist/elements/http/LogBody.js +10 -21
- package/dist/elements/http/LogBody.js.map +1 -1
- package/dist/elements/http/LogHeaders.js +4 -23
- package/dist/elements/http/LogHeaders.js.map +1 -1
- package/dist/elements/http/LogTimings.js +11 -13
- package/dist/elements/http/LogTimings.js.map +1 -1
- package/dist/elements/http/RequestConfigElement.js +7 -4
- package/dist/elements/http/RequestConfigElement.js.map +1 -1
- package/dist/elements/http/RequestEditor.js +54 -88
- package/dist/elements/http/RequestEditor.js.map +1 -1
- package/dist/elements/http/RequestLog.js +9 -14
- package/dist/elements/http/RequestLog.js.map +1 -1
- package/dist/elements/http/UrlInput.js +15 -25
- package/dist/elements/http/UrlInput.js.map +1 -1
- package/dist/elements/http/UrlParamsForm.js +16 -13
- package/dist/elements/http/UrlParamsForm.js.map +1 -1
- package/dist/elements/layout/LayoutManager.js +16 -24
- package/dist/elements/layout/LayoutManager.js.map +1 -1
- package/dist/elements/layout/LayoutPanelElement.js +17 -23
- package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
- package/dist/elements/layout/SplitItem.js +4 -12
- package/dist/elements/layout/SplitItem.js.map +1 -1
- package/dist/elements/layout/SplitLayout.js +18 -24
- package/dist/elements/layout/SplitLayout.js.map +1 -1
- package/dist/elements/layout/SplitPanel.js +10 -16
- package/dist/elements/layout/SplitPanel.js.map +1 -1
- package/dist/elements/layout/SplitView.js +17 -26
- package/dist/elements/layout/SplitView.js.map +1 -1
- package/dist/elements/navigation/AppNavigationElement.js +8 -47
- package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
- package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
- package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
- package/dist/elements/project/HttpProjectRequest.js +0 -38
- package/dist/elements/project/HttpProjectRequest.js.map +1 -1
- package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
- package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
- package/dist/elements/project/ProjectNavigation.js +0 -4
- package/dist/elements/project/ProjectNavigation.js.map +1 -1
- package/dist/elements/project/ProjectRunReport.js +4 -15
- package/dist/elements/project/ProjectRunReport.js.map +1 -1
- package/dist/elements/project/ProjectRunner.js +2 -47
- package/dist/elements/project/ProjectRunner.js.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.js +0 -13
- package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.js +0 -22
- package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
- package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
- package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.js +0 -36
- package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.js +0 -18
- package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.js +0 -12
- package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
- package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
- package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
- package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
- package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
- package/dist/elements/user/UserAvatarElement.js +0 -9
- package/dist/elements/user/UserAvatarElement.js.map +1 -1
- package/dist/events/http-client/models/CertificatesEvents.js +2 -2
- package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
- package/dist/http-client/idb/Base.js +5 -10
- package/dist/http-client/idb/Base.js.map +1 -1
- package/dist/http-client/idb/LegacyMockedStore.js +0 -1
- package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
- package/dist/http-client/idb/MockedStore.js +3 -1
- package/dist/http-client/idb/MockedStore.js.map +1 -1
- package/dist/http-client/store/DataImportProcessor.js +0 -3
- package/dist/http-client/store/DataImportProcessor.js.map +1 -1
- package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
- package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
- package/dist/http-client/store/IdbThread.js +23 -20
- package/dist/http-client/store/IdbThread.js.map +1 -1
- package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
- package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
- package/dist/http-client/store/idb/IdbStore.js +0 -2
- package/dist/http-client/store/idb/IdbStore.js.map +1 -1
- package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
- package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
- package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
- package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
- package/dist/lib/chart/HttpHistoryChart.js +7 -8
- package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
- package/dist/mixins/FileDropMixin.js +0 -1
- package/dist/mixins/FileDropMixin.js.map +1 -1
- package/dist/mixins/RenderableMixin.js +11 -15
- package/dist/mixins/RenderableMixin.js.map +1 -1
- package/dist/pages/ApplicationScreen.js +34 -55
- package/dist/pages/ApplicationScreen.js.map +1 -1
- package/dist/pages/api-client/ApiClient.screen.js +11 -20
- package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.js +4 -6
- package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.js +21 -37
- package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
- package/dist/pages/api-client/Telemetry.screen.js +1 -2
- package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
- package/dist/pages/api-client/pages/Files.page.js +6 -27
- package/dist/pages/api-client/pages/Files.page.js.map +1 -1
- package/dist/pages/api-client/pages/Settings.page.js +2 -4
- package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
- package/dist/pages/api-client/pages/Trash.page.js +2 -13
- package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
- package/dist/pages/demo/DemoPage.js +13 -13
- package/dist/pages/demo/DemoPage.js.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.js +25 -35
- package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
- package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
- package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
- package/dist/store/HttpStore.js +0 -3
- package/dist/store/HttpStore.js.map +1 -1
- package/dist/store/UserCache.js +5 -5
- package/dist/store/UserCache.js.map +1 -1
- package/dist/ui/UiElement.js +4 -5
- package/dist/ui/UiElement.js.map +1 -1
- package/dist/ui/button/SegmentedButton.js +9 -11
- package/dist/ui/button/SegmentedButton.js.map +1 -1
- package/dist/ui/button/SegmentedButtonsSet.js +6 -7
- package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
- package/dist/ui/button/UiButton.js +17 -39
- package/dist/ui/button/UiButton.js.map +1 -1
- package/dist/ui/button/UiIconButton.js +9 -35
- package/dist/ui/button/UiIconButton.js.map +1 -1
- package/dist/ui/chip/UiChip.js +9 -49
- package/dist/ui/chip/UiChip.js.map +1 -1
- package/dist/ui/collapse/UiCollapse.js +15 -20
- package/dist/ui/collapse/UiCollapse.js.map +1 -1
- package/dist/ui/controllers/ActionController.js +143 -144
- package/dist/ui/controllers/ActionController.js.map +1 -1
- package/dist/ui/controllers/RadioSelectionController.js +0 -1
- package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
- package/dist/ui/date/DateTime.js +3 -3
- package/dist/ui/date/DateTime.js.map +1 -1
- package/dist/ui/dialog/UiDialog.js +14 -38
- package/dist/ui/dialog/UiDialog.js.map +1 -1
- package/dist/ui/effects/ripple.js +20 -18
- package/dist/ui/effects/ripple.js.map +1 -1
- package/dist/ui/effects/rippleDirective.js +6 -7
- package/dist/ui/effects/rippleDirective.js.map +1 -1
- package/dist/ui/icons/UiIcon.js +4 -3
- package/dist/ui/icons/UiIcon.js.map +1 -1
- package/dist/ui/input/CheckboxElement.js +12 -10
- package/dist/ui/input/CheckboxElement.js.map +1 -1
- package/dist/ui/input/CheckedElement.js +2 -13
- package/dist/ui/input/CheckedElement.js.map +1 -1
- package/dist/ui/input/Input.js +169 -234
- package/dist/ui/input/Input.js.map +1 -1
- package/dist/ui/input/RadioElement.js +13 -11
- package/dist/ui/input/RadioElement.js.map +1 -1
- package/dist/ui/input/SwitchElement.js +0 -18
- package/dist/ui/input/SwitchElement.js.map +1 -1
- package/dist/ui/input/TextAreaElement.js +0 -15
- package/dist/ui/input/TextAreaElement.js.map +1 -1
- package/dist/ui/list/DividerElement.js +5 -10
- package/dist/ui/list/DividerElement.js.map +1 -1
- package/dist/ui/list/UiDropdownList.js +7 -48
- package/dist/ui/list/UiDropdownList.js.map +1 -1
- package/dist/ui/list/UiList.js +3 -15
- package/dist/ui/list/UiList.js.map +1 -1
- package/dist/ui/list/UiListItem.js +4 -17
- package/dist/ui/list/UiListItem.js.map +1 -1
- package/dist/ui/list/UiListbox.js +0 -1
- package/dist/ui/list/UiListbox.js.map +1 -1
- package/dist/ui/notification/SnackNotifications.js +1 -2
- package/dist/ui/notification/SnackNotifications.js.map +1 -1
- package/dist/ui/notification/Snackbar.js +27 -51
- package/dist/ui/notification/Snackbar.js.map +1 -1
- package/dist/ui/progress/Range.js +24 -23
- package/dist/ui/progress/Range.js.map +1 -1
- package/dist/ui/progress/UiProgress.js +0 -11
- package/dist/ui/progress/UiProgress.js.map +1 -1
- package/dist/ui/table/DataTable.js +7 -12
- package/dist/ui/table/DataTable.js.map +1 -1
- package/dist/ui/tabs/UiTab.js +24 -25
- package/dist/ui/tabs/UiTab.js.map +1 -1
- package/dist/ui/tabs/UiTabs.js +21 -35
- package/dist/ui/tabs/UiTabs.js.map +1 -1
- package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
- package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
- package/dist/visualization/lib/AssociationAnchors.js +16 -28
- package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
- package/dist/visualization/lib/Point.js +0 -2
- package/dist/visualization/lib/Point.js.map +1 -1
- package/dist/visualization/lib/SelectionManager.js +10 -11
- package/dist/visualization/lib/SelectionManager.js.map +1 -1
- package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
- package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
- package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
- package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
- package/dist/visualization/lib/WorkspaceEdges.js +17 -19
- package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
- package/dist/visualization/lib/WorkspaceGestures.js +0 -3
- package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
- package/dist/visualization/lib/WorkspaceSizing.js +4 -6
- package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
- package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
- package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
- package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
- package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
- package/dist/visualization/lib/tips/TipArtist.js +0 -3
- package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
- package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
- package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
- package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
- package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
- package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
- package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
- package/package.json +3 -2
- package/tsconfig.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UrlInput.js","sourceRoot":"","sources":["../../../src/elements/http/UrlInput.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable lit-a11y/click-events-have-key-events */\n/**\n @license\nCopyright 2018 The Advanced REST client authors <arc@mulesoft.com>\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not\nuse this file except in compliance with the License. You may obtain a copy of\nthe License at\nhttp://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under\nthe License.\n*/\nimport { html, TemplateResult } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { eventOptions, property, query, state } from 'lit/decorators.js';\nimport { IUrl } from '@api-client/core/build/browser.js';\nimport { sortUrls } from '../../lib/http/Url.js';\nimport { Events } from '../../events/Events.js';\nimport { EventTypes } from '../../events/EventTypes.js';\nimport ApiElement from '../ApiElement.js';\nimport { ElementPositioning } from '../../ui/lib/ElementPositioning.js';\nimport UiList from '../../ui/list/UiList.js';\nimport UiListItem from '../../ui/list/UiListItem.js';\nimport '../../define/ui/ui-listbox.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-divider.js';\n\nconst NAVIGATION_KEYS = {\n ArrowDown: 'ArrowDown',\n ArrowUp: 'ArrowUp',\n Home: 'Home',\n End: 'End',\n Escape: 'Escape',\n Enter: 'Enter',\n Space: ' ',\n};\n\n/**\n * The request URL editor\n *\n * The element renders an editor for a HTTP request editor.\n * \n * @fires change - When the value change through user interaction. This event does not bubble.\n * @fires requeststateurlchange - When the value change through user interaction. This even bubbles and is cancelable.\n * @fires requestsend - A bubbling event when the user pressed Enter to send the request.\n */\nexport default class UrlInput extends ApiElement {\n /** \n * The current URL value.\n * @attribute\n */\n @property({ type: String }) value = 'http://';\n\n /**\n * When set the editor is in read only mode.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * Whether the URL suggestions are rendered.\n */\n @state() protected suggestionsOpened = false;\n\n @state() protected suggestions?: IUrl[];\n\n @state() protected renderedSuggestions?: IUrl[];\n\n protected previousValue?: string;\n\n protected isFocused = false;\n\n @query('.main-input')\n protected input!: HTMLInputElement;\n\n @query('.suggestions')\n protected suggestionsContainer!: HTMLDivElement;\n\n @query('ui-listbox.url-autocomplete')\n protected suggestionsList!: UiList;\n\n /**\n * Computed positioning styles for the suggestion box.\n */\n protected suggestionStyles?: StyleInfo;\n\n constructor() {\n super();\n this.handleUrlChange = this.handleUrlChange.bind(this);\n this.handleHistoryDeleted = this.handleHistoryDeleted.bind(this);\n this.handleHistoryClear = this.handleHistoryClear.bind(this);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n const { eventsTarget } = this;\n eventsTarget.addEventListener(EventTypes.Http.Request.State.urlChange, this.handleUrlChange);\n eventsTarget.addEventListener(EventTypes.HttpClient.Model.UrlHistory.State.delete, this.handleHistoryDeleted);\n eventsTarget.addEventListener(EventTypes.HttpClient.Model.UrlHistory.State.clear, this.handleHistoryClear);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n const { eventsTarget } = this;\n eventsTarget.removeEventListener(EventTypes.Http.Request.State.urlChange, this.handleUrlChange);\n eventsTarget.removeEventListener(EventTypes.HttpClient.Model.UrlHistory.State.delete, this.handleHistoryDeleted);\n eventsTarget.removeEventListener(EventTypes.HttpClient.Model.UrlHistory.State.clear, this.handleHistoryClear);\n }\n\n /**\n * A handler that is called on input\n */\n protected notifyChange(): void {\n Events.Http.Request.State.urlChange(this.value, this);\n this.dispatchEvent(new Event('change'));\n }\n\n /**\n * A handler for the `url-value-changed` event.\n * If this element is not the source of the event then it will update the `value` property.\n * It's to be used besides the Polymer's data binding system.\n */\n protected handleUrlChange(e: Event): void {\n if (e.composedPath()[0] === this || this.readOnly) {\n return;\n }\n const { value } = (e as CustomEvent).detail;\n if (value !== this.value) {\n this.value = value;\n this.dispatchEvent(new Event('change'));\n }\n }\n\n /**\n * Queries the data model for history data and sets the suggestions\n * @param q User query from the input field\n */\n protected async readAutocomplete(q: string): Promise<void> {\n try {\n const value = await Events.HttpClient.Model.UrlHistory.query(q, this);\n this.suggestions = value && value.items.filter(i => !!i).map(i => i.doc);\n } catch (e) {\n this.suggestions = undefined;\n }\n }\n\n /**\n * Validates the element.\n */\n checkValidity(): boolean {\n const element = this.input;\n if (!element) {\n return true;\n }\n return element.validity.valid;\n }\n\n /**\n * @param e A handler for either main input or the details editor value change\n */\n protected handleInput(e: Event): void {\n if (this.readOnly) {\n return;\n }\n const node = e.target as HTMLInputElement;\n this.previousValue = this.value;\n this.value = node.value;\n this.renderSuggestions();\n }\n \n protected handleInputChange(): void {\n if (this.readOnly) {\n return;\n }\n this.notifyChange();\n }\n\n protected handlerFocusBlur(e: Event): void {\n this.isFocused = e.type === 'focus';\n // this.requestUpdate();\n if (this.isFocused && !this.suggestionsOpened) {\n this.renderSuggestions();\n } else if (!this.isFocused && this.suggestionsOpened) {\n // requestAnimationFrame(() => {\n // this.suggestionsOpened = false;\n // });\n }\n }\n\n /**\n * Triggers URL suggestions rendering.\n * If there are suggestions to render this will enable the dropdown.\n */\n async renderSuggestions(): Promise<void> {\n const { value = '' } = this;\n if (this.previousValue && value.startsWith(this.previousValue || '')) {\n this.filterSuggestions();\n return;\n }\n await this.readAutocomplete(value);\n this.filterSuggestions();\n }\n\n /**\n * Performs the query on the current suggestions and, if any, renders them.\n */\n protected async filterSuggestions(): Promise<void> {\n const items = this.suggestions;\n if (!Array.isArray(items) || !items.length) {\n this.toggleSuggestions(false);\n return;\n }\n const { value = '' } = this;\n const q = String(value).toLowerCase();\n const rendered = items.filter(i => i.key.toLowerCase().includes(q));\n if (!rendered.length) {\n this.toggleSuggestions(false);\n return;\n }\n if (rendered.length === 1 && rendered[0].key.toLowerCase() === q) {\n this.toggleSuggestions(false);\n return;\n }\n sortUrls(rendered, q);\n this.renderedSuggestions = rendered;\n this.toggleSuggestions(true);\n this.requestUpdate();\n }\n\n protected toggleSuggestions(opened: boolean): void {\n if (!opened) {\n this.suggestionsOpened = false;\n this.input.focus();\n } else {\n this.suggestionStyles = ElementPositioning.positionOverlay(this.suggestionsContainer, this.input, {\n vertical: 'top',\n noOverlap: true,\n constrain: true,\n matchAnchorWidth: true,\n });\n this.suggestionsOpened = true;\n }\n }\n\n @eventOptions({ capture: true })\n protected handleSuggestionClick(e: Event): void {\n const path = e.composedPath() as HTMLElement[];\n const target = path.find(i => !!i.classList && i.classList.contains('remove-suggestion'));\n if (!target) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n const { key } = target.dataset;\n if (!key) {\n return;\n }\n\n Events.HttpClient.Model.UrlHistory.delete(key, this);\n }\n\n protected handleSuggestionSelect(e: CustomEvent): void {\n const item = e.detail.item as UiListItem;\n const { key } = item.dataset;\n if (!key) {\n return;\n }\n this.selectSuggestion(key);\n }\n\n protected selectSuggestion(key: string): void {\n this.value = key;\n this.toggleSuggestions(false);\n this.notifyChange();\n }\n\n /**\n * Removes all stored history URLs.\n */\n protected clearSuggestionsHandler(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n Events.HttpClient.Model.UrlHistory.clear(this);\n }\n\n \n protected handleHistoryDeleted(e: Event): void {\n const items = this.suggestions;\n if (!Array.isArray(items)) {\n return;\n }\n const url = (e as CustomEvent).detail;\n const index = items.findIndex(i => i.key === url);\n if (index >= 0) {\n items.splice(index, 1);\n }\n if (this.suggestionsOpened && this.renderedSuggestions) {\n const renderedIndex = this.renderedSuggestions.findIndex((i) => i.key === url);\n if (renderedIndex >= 0) {\n this.renderedSuggestions.splice(renderedIndex, 1);\n this.requestUpdate();\n }\n }\n }\n\n protected handleHistoryClear(): void {\n this.suggestions = undefined;\n this.renderedSuggestions = undefined;\n this.toggleSuggestions(false);\n }\n\n /**\n * We handle key events here as we never focus on the list.\n */\n protected handleKeydown(event: KeyboardEvent): void {\n if (Object.values(NAVIGATION_KEYS).indexOf(event.key) === -1) return;\n\n if (event.key === NAVIGATION_KEYS.Escape) {\n this.toggleSuggestions(false);\n } else if (event.key === NAVIGATION_KEYS.ArrowDown) {\n event.preventDefault();\n if (this.suggestionsOpened) {\n this.suggestionsList.highlightNext();\n } else {\n this.filterSuggestions();\n }\n } else if (event.key === NAVIGATION_KEYS.ArrowUp) {\n event.preventDefault();\n if (this.suggestionsOpened) {\n this.suggestionsList.highlightPrevious();\n } else {\n this.filterSuggestions();\n }\n } else if (event.key === NAVIGATION_KEYS.Home) {\n if (this.suggestionsOpened) {\n event.preventDefault();\n this.suggestionsList.highlightFirst();\n }\n } else if (event.key === NAVIGATION_KEYS.End) {\n if (this.suggestionsOpened) {\n event.preventDefault();\n this.suggestionsList.highlightLast();\n }\n } else if (event.key === NAVIGATION_KEYS.Enter) {\n event.preventDefault();\n if (this.suggestionsOpened) {\n const list = this.suggestionsList;\n const item = list.highlightListItem;\n if (item) {\n list.notifySelect(item);\n }\n } else {\n Events.Http.Request.send(this);\n }\n }\n }\n\n override render(): TemplateResult {\n const classes = {\n container: true,\n autocomplete: this.suggestionsOpened,\n };\n return html`\n <div class=\"${classMap(classes)}\">\n ${this.renderInput()}\n ${this.renderAutocomplete()}\n </div>`;\n }\n\n /**\n * @returns A template for the main input element\n */\n protected renderInput(): TemplateResult {\n const { value } = this;\n return html`\n <div class=\"input-wrapper\">\n <input \n .value=\"${value}\" \n class=\"main-input\"\n required\n placeholder=\"Request URL\"\n id=\"mainInput\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n @focus=\"${this.handlerFocusBlur}\"\n @blur=\"${this.handlerFocusBlur}\"\n @input=\"${this.handleInput}\"\n @change=\"${this.handleInputChange}\"\n @keydown=\"${this.handleKeydown}\"\n aria-label=\"The URL value\"\n ?readonly=\"${this.readOnly}\"\n />\n </div>\n `;\n }\n\n /**\n * @returns A template for the autocomplete element\n */\n protected renderAutocomplete(): TemplateResult {\n let opened = this.suggestionsOpened;\n const items = this.renderedSuggestions;\n if (opened && (!items || !items.length)) {\n opened = false;\n }\n const classes = {\n suggestions: true,\n opened,\n };\n return html`\n <div class=\"${classMap(classes)}\" style=\"${styleMap(this.suggestionStyles || {})}\">\n <ui-listbox \n class=\"url-autocomplete\" \n role=\"listbox\" \n aria-label=\"Suggested URLs from your history.\"\n tabindex=\"-1\"\n @select=\"${this.handleSuggestionSelect}\"\n @click=\"${this.handleSuggestionClick}\"\n >\n ${this.renderSuggestionList()}\n </ui-listbox>\n <ui-divider></ui-divider>\n <p class=\"clear-all-history\">\n <span class=\"clear-all-history-label\" @click=\"${this.clearSuggestionsHandler}\">Clear all history</span>\n </p>\n </div>\n `;\n }\n\n /**\n * @returns The template for the suggestions list.\n */\n protected renderSuggestionList(): TemplateResult[] | string {\n const items = this.renderedSuggestions;\n if (!Array.isArray(items) || !items.length) {\n return '';\n }\n return items.map(i => this.renderSuggestionItem(i));\n }\n\n /**\n * @returns The template for an URL suggestion item.\n */\n protected renderSuggestionItem(item: IUrl): TemplateResult {\n const { key } = item;\n return html`\n <ui-list-item \n class=\"suggestion-item\" \n data-key=\"${item.key}\"\n role=\"option\"\n aria-selected=\"false\"\n >\n <div>${key}</div>\n <span \n slot=\"end-text\"\n class=\"remove-suggestion\" \n data-key=\"${key}\"\n >Remove</span>\n </ui-list-item>`;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"UrlInput.js","sourceRoot":"","sources":["../../../src/elements/http/UrlInput.ts"],"names":[],"mappings":";AAAA,0DAA0D;AAC1D;;;;;;;;;;;;EAYE;AACF,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAa,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAGxE,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,+BAA+B,CAAC;AAEvC,MAAM,eAAe,GAAG;IACtB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,GAAG;CACX,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,UAAU;IAwC9C;QACE,KAAK,EAAE,CAAC;QAxCV;;;WAGG;QACyB,UAAK,GAAG,SAAS,CAAC;QAE9C;;;WAGG;QACyC,aAAQ,GAAG,KAAK,CAAC;QAE7D;;WAEG;QACgB,sBAAiB,GAAG,KAAK,CAAC;QAQnC,cAAS,GAAG,KAAK,CAAC;QAkB1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7F,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9G,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7G,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,YAAY,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAChG,YAAY,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjH,YAAY,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChH,CAAC;IAED;;OAEG;IACO,YAAY;QACpB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACO,eAAe,CAAC,CAAQ;QAChC,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjD,OAAO;SACR;QACD,MAAM,EAAE,KAAK,EAAE,GAAI,CAAiB,CAAC,MAAM,CAAC;QAC5C,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;SACzC;IACH,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,gBAAgB,CAAC,CAAS;QACxC,IAAI;YACF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACtE,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SAC1E;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;SAC9B;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAChC,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,CAAQ;QAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,MAAM,IAAI,GAAG,CAAC,CAAC,MAA0B,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAES,iBAAiB;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAES,gBAAgB,CAAC,CAAQ;QACjC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;QACpC,wBAAwB;QACxB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;aAAM,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACpD,gCAAgC;YAChC,oCAAoC;YACpC,MAAM;SACP;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE;YACpE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;SACR;QACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,iBAAiB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1C,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO;SACR;QACD,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO;SACR;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;YAChE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO;SACR;QACD,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAES,iBAAiB,CAAC,MAAe;QACzC,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;aAAM;YACL,IAAI,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE;gBAChG,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,IAAI;gBACf,gBAAgB,EAAE,IAAI;aACvB,CAAC,CAAC;YACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;IACH,CAAC;IAGS,qBAAqB,CAAC,CAAQ;QACtC,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAmB,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,CAAC,CAAC,wBAAwB,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;SACR;QAED,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAES,sBAAsB,CAAC,CAAc;QAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAkB,CAAC;QACzC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;SACR;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAES,gBAAgB,CAAC,GAAW;QACpC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACO,uBAAuB,CAAC,CAAQ;QACxC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAGS,oBAAoB,CAAC,CAAQ;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO;SACR;QACD,MAAM,GAAG,GAAI,CAAiB,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAClD,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACxB;QACD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACtD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAC/E,IAAI,aAAa,IAAI,CAAC,EAAE;gBACtB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;SACF;IACH,CAAC;IAES,kBAAkB;QAC1B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,KAAoB;QAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO;QAErE,IAAI,KAAK,CAAC,GAAG,KAAK,eAAe,CAAC,MAAM,EAAE;YACxC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC/B;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,eAAe,CAAC,SAAS,EAAE;YAClD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;SACF;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,eAAe,CAAC,OAAO,EAAE;YAChD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;aAC1C;iBAAM;gBACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;SACF;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,eAAe,CAAC,IAAI,EAAE;YAC7C,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;aACvC;SACF;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,eAAe,CAAC,GAAG,EAAE;YAC5C,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;aACtC;SACF;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,eAAe,CAAC,KAAK,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBACpC,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;SACF;IACH,CAAC;IAEQ,MAAM;QACb,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,iBAAiB;SACrC,CAAC;QACF,OAAO,IAAI,CAAA;kBACG,QAAQ,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,kBAAkB,EAAE;WACtB,CAAC;IACV,CAAC;IAED;;OAEG;IACO,WAAW;QACnB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAA;;;kBAGG,KAAK;;;;;;;kBAOL,IAAI,CAAC,gBAAgB;iBACtB,IAAI,CAAC,gBAAgB;kBACpB,IAAI,CAAC,WAAW;mBACf,IAAI,CAAC,iBAAiB;oBACrB,IAAI,CAAC,aAAa;;qBAEjB,IAAI,CAAC,QAAQ;;;KAG7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,kBAAkB;QAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACvC,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACvC,MAAM,GAAG,KAAK,CAAC;SAChB;QACD,MAAM,OAAO,GAAG;YACd,WAAW,EAAE,IAAI;YACjB,MAAM;SACP,CAAC;QACF,OAAO,IAAI,CAAA;kBACG,QAAQ,CAAC,OAAO,CAAC,YAAY,QAAQ,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;;;;;;mBAMjE,IAAI,CAAC,sBAAsB;kBAC5B,IAAI,CAAC,qBAAqB;;UAElC,IAAI,CAAC,oBAAoB,EAAE;;;;wDAImB,IAAI,CAAC,uBAAuB;;;KAG/E,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,oBAAoB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1C,OAAO,EAAE,CAAC;SACX;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACO,oBAAoB,CAAC,IAAU;QACvC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAA;;;kBAGG,IAAI,CAAC,GAAG;;;;aAIb,GAAG;;;;oBAII,GAAG;;oBAEH,CAAC;IACnB,CAAC;CACF;AA1Z6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uCAAmB;AAMF;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CAAkB;AAKpD;IAAR,KAAK,EAAE;mDAAqC;AAEpC;IAAR,KAAK,EAAE;6CAAgC;AAE/B;IAAR,KAAK,EAAE;qDAAwC;AAOhD;IADC,KAAK,CAAC,aAAa,CAAC;uCACc;AAGnC;IADC,KAAK,CAAC,cAAc,CAAC;sDAC0B;AAGhD;IADC,KAAK,CAAC,6BAA6B,CAAC;iDACF;AAsKnC;IADC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qDAgB/B","sourcesContent":["/* eslint-disable lit-a11y/click-events-have-key-events */\n/**\n @license\nCopyright 2018 The Advanced REST client authors <arc@mulesoft.com>\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not\nuse this file except in compliance with the License. You may obtain a copy of\nthe License at\nhttp://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under\nthe License.\n*/\nimport { html, TemplateResult } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { eventOptions, property, query, state } from 'lit/decorators.js';\nimport { IUrl } from '@api-client/core/build/browser.js';\nimport { sortUrls } from '../../lib/http/Url.js';\nimport { Events } from '../../events/Events.js';\nimport { EventTypes } from '../../events/EventTypes.js';\nimport ApiElement from '../ApiElement.js';\nimport { ElementPositioning } from '../../ui/lib/ElementPositioning.js';\nimport UiList from '../../ui/list/UiList.js';\nimport UiListItem from '../../ui/list/UiListItem.js';\nimport '../../define/ui/ui-listbox.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-divider.js';\n\nconst NAVIGATION_KEYS = {\n ArrowDown: 'ArrowDown',\n ArrowUp: 'ArrowUp',\n Home: 'Home',\n End: 'End',\n Escape: 'Escape',\n Enter: 'Enter',\n Space: ' ',\n};\n\n/**\n * The request URL editor\n *\n * The element renders an editor for a HTTP request editor.\n * \n * @fires change - When the value change through user interaction. This event does not bubble.\n * @fires requeststateurlchange - When the value change through user interaction. This even bubbles and is cancelable.\n * @fires requestsend - A bubbling event when the user pressed Enter to send the request.\n */\nexport default class UrlInput extends ApiElement {\n /** \n * The current URL value.\n * @attribute\n */\n @property({ type: String }) value = 'http://';\n\n /**\n * When set the editor is in read only mode.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * Whether the URL suggestions are rendered.\n */\n @state() protected suggestionsOpened = false;\n\n @state() protected suggestions?: IUrl[];\n\n @state() protected renderedSuggestions?: IUrl[];\n\n protected previousValue?: string;\n\n protected isFocused = false;\n\n @query('.main-input')\n protected input!: HTMLInputElement;\n\n @query('.suggestions')\n protected suggestionsContainer!: HTMLDivElement;\n\n @query('ui-listbox.url-autocomplete')\n protected suggestionsList!: UiList;\n\n /**\n * Computed positioning styles for the suggestion box.\n */\n protected suggestionStyles?: StyleInfo;\n\n constructor() {\n super();\n this.handleUrlChange = this.handleUrlChange.bind(this);\n this.handleHistoryDeleted = this.handleHistoryDeleted.bind(this);\n this.handleHistoryClear = this.handleHistoryClear.bind(this);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n const { eventsTarget } = this;\n eventsTarget.addEventListener(EventTypes.Http.Request.State.urlChange, this.handleUrlChange);\n eventsTarget.addEventListener(EventTypes.HttpClient.Model.UrlHistory.State.delete, this.handleHistoryDeleted);\n eventsTarget.addEventListener(EventTypes.HttpClient.Model.UrlHistory.State.clear, this.handleHistoryClear);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n const { eventsTarget } = this;\n eventsTarget.removeEventListener(EventTypes.Http.Request.State.urlChange, this.handleUrlChange);\n eventsTarget.removeEventListener(EventTypes.HttpClient.Model.UrlHistory.State.delete, this.handleHistoryDeleted);\n eventsTarget.removeEventListener(EventTypes.HttpClient.Model.UrlHistory.State.clear, this.handleHistoryClear);\n }\n\n /**\n * A handler that is called on input\n */\n protected notifyChange(): void {\n Events.Http.Request.State.urlChange(this.value, this);\n this.dispatchEvent(new Event('change'));\n }\n\n /**\n * A handler for the `url-value-changed` event.\n * If this element is not the source of the event then it will update the `value` property.\n * It's to be used besides the Polymer's data binding system.\n */\n protected handleUrlChange(e: Event): void {\n if (e.composedPath()[0] === this || this.readOnly) {\n return;\n }\n const { value } = (e as CustomEvent).detail;\n if (value !== this.value) {\n this.value = value;\n this.dispatchEvent(new Event('change'));\n }\n }\n\n /**\n * Queries the data model for history data and sets the suggestions\n * @param q User query from the input field\n */\n protected async readAutocomplete(q: string): Promise<void> {\n try {\n const value = await Events.HttpClient.Model.UrlHistory.query(q, this);\n this.suggestions = value && value.items.filter(i => !!i).map(i => i.doc);\n } catch (e) {\n this.suggestions = undefined;\n }\n }\n\n /**\n * Validates the element.\n */\n checkValidity(): boolean {\n const element = this.input;\n if (!element) {\n return true;\n }\n return element.validity.valid;\n }\n\n /**\n * @param e A handler for either main input or the details editor value change\n */\n protected handleInput(e: Event): void {\n if (this.readOnly) {\n return;\n }\n const node = e.target as HTMLInputElement;\n this.previousValue = this.value;\n this.value = node.value;\n this.renderSuggestions();\n }\n \n protected handleInputChange(): void {\n if (this.readOnly) {\n return;\n }\n this.notifyChange();\n }\n\n protected handlerFocusBlur(e: Event): void {\n this.isFocused = e.type === 'focus';\n // this.requestUpdate();\n if (this.isFocused && !this.suggestionsOpened) {\n this.renderSuggestions();\n } else if (!this.isFocused && this.suggestionsOpened) {\n // requestAnimationFrame(() => {\n // this.suggestionsOpened = false;\n // });\n }\n }\n\n /**\n * Triggers URL suggestions rendering.\n * If there are suggestions to render this will enable the dropdown.\n */\n async renderSuggestions(): Promise<void> {\n const { value = '' } = this;\n if (this.previousValue && value.startsWith(this.previousValue || '')) {\n this.filterSuggestions();\n return;\n }\n await this.readAutocomplete(value);\n this.filterSuggestions();\n }\n\n /**\n * Performs the query on the current suggestions and, if any, renders them.\n */\n protected async filterSuggestions(): Promise<void> {\n const items = this.suggestions;\n if (!Array.isArray(items) || !items.length) {\n this.toggleSuggestions(false);\n return;\n }\n const { value = '' } = this;\n const q = String(value).toLowerCase();\n const rendered = items.filter(i => i.key.toLowerCase().includes(q));\n if (!rendered.length) {\n this.toggleSuggestions(false);\n return;\n }\n if (rendered.length === 1 && rendered[0].key.toLowerCase() === q) {\n this.toggleSuggestions(false);\n return;\n }\n sortUrls(rendered, q);\n this.renderedSuggestions = rendered;\n this.toggleSuggestions(true);\n this.requestUpdate();\n }\n\n protected toggleSuggestions(opened: boolean): void {\n if (!opened) {\n this.suggestionsOpened = false;\n this.input.focus();\n } else {\n this.suggestionStyles = ElementPositioning.positionOverlay(this.suggestionsContainer, this.input, {\n vertical: 'top',\n noOverlap: true,\n constrain: true,\n matchAnchorWidth: true,\n });\n this.suggestionsOpened = true;\n }\n }\n\n @eventOptions({ capture: true })\n protected handleSuggestionClick(e: Event): void {\n const path = e.composedPath() as HTMLElement[];\n const target = path.find(i => !!i.classList && i.classList.contains('remove-suggestion'));\n if (!target) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n const { key } = target.dataset;\n if (!key) {\n return;\n }\n\n Events.HttpClient.Model.UrlHistory.delete(key, this);\n }\n\n protected handleSuggestionSelect(e: CustomEvent): void {\n const item = e.detail.item as UiListItem;\n const { key } = item.dataset;\n if (!key) {\n return;\n }\n this.selectSuggestion(key);\n }\n\n protected selectSuggestion(key: string): void {\n this.value = key;\n this.toggleSuggestions(false);\n this.notifyChange();\n }\n\n /**\n * Removes all stored history URLs.\n */\n protected clearSuggestionsHandler(e: Event): void {\n e.preventDefault();\n e.stopPropagation();\n Events.HttpClient.Model.UrlHistory.clear(this);\n }\n\n \n protected handleHistoryDeleted(e: Event): void {\n const items = this.suggestions;\n if (!Array.isArray(items)) {\n return;\n }\n const url = (e as CustomEvent).detail;\n const index = items.findIndex(i => i.key === url);\n if (index >= 0) {\n items.splice(index, 1);\n }\n if (this.suggestionsOpened && this.renderedSuggestions) {\n const renderedIndex = this.renderedSuggestions.findIndex((i) => i.key === url);\n if (renderedIndex >= 0) {\n this.renderedSuggestions.splice(renderedIndex, 1);\n this.requestUpdate();\n }\n }\n }\n\n protected handleHistoryClear(): void {\n this.suggestions = undefined;\n this.renderedSuggestions = undefined;\n this.toggleSuggestions(false);\n }\n\n /**\n * We handle key events here as we never focus on the list.\n */\n protected handleKeydown(event: KeyboardEvent): void {\n if (Object.values(NAVIGATION_KEYS).indexOf(event.key) === -1) return;\n\n if (event.key === NAVIGATION_KEYS.Escape) {\n this.toggleSuggestions(false);\n } else if (event.key === NAVIGATION_KEYS.ArrowDown) {\n event.preventDefault();\n if (this.suggestionsOpened) {\n this.suggestionsList.highlightNext();\n } else {\n this.filterSuggestions();\n }\n } else if (event.key === NAVIGATION_KEYS.ArrowUp) {\n event.preventDefault();\n if (this.suggestionsOpened) {\n this.suggestionsList.highlightPrevious();\n } else {\n this.filterSuggestions();\n }\n } else if (event.key === NAVIGATION_KEYS.Home) {\n if (this.suggestionsOpened) {\n event.preventDefault();\n this.suggestionsList.highlightFirst();\n }\n } else if (event.key === NAVIGATION_KEYS.End) {\n if (this.suggestionsOpened) {\n event.preventDefault();\n this.suggestionsList.highlightLast();\n }\n } else if (event.key === NAVIGATION_KEYS.Enter) {\n event.preventDefault();\n if (this.suggestionsOpened) {\n const list = this.suggestionsList;\n const item = list.highlightListItem;\n if (item) {\n list.notifySelect(item);\n }\n } else {\n Events.Http.Request.send(this);\n }\n }\n }\n\n override render(): TemplateResult {\n const classes = {\n container: true,\n autocomplete: this.suggestionsOpened,\n };\n return html`\n <div class=\"${classMap(classes)}\">\n ${this.renderInput()}\n ${this.renderAutocomplete()}\n </div>`;\n }\n\n /**\n * @returns A template for the main input element\n */\n protected renderInput(): TemplateResult {\n const { value } = this;\n return html`\n <div class=\"input-wrapper\">\n <input \n .value=\"${value}\" \n class=\"main-input\"\n required\n placeholder=\"Request URL\"\n id=\"mainInput\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n @focus=\"${this.handlerFocusBlur}\"\n @blur=\"${this.handlerFocusBlur}\"\n @input=\"${this.handleInput}\"\n @change=\"${this.handleInputChange}\"\n @keydown=\"${this.handleKeydown}\"\n aria-label=\"The URL value\"\n ?readonly=\"${this.readOnly}\"\n />\n </div>\n `;\n }\n\n /**\n * @returns A template for the autocomplete element\n */\n protected renderAutocomplete(): TemplateResult {\n let opened = this.suggestionsOpened;\n const items = this.renderedSuggestions;\n if (opened && (!items || !items.length)) {\n opened = false;\n }\n const classes = {\n suggestions: true,\n opened,\n };\n return html`\n <div class=\"${classMap(classes)}\" style=\"${styleMap(this.suggestionStyles || {})}\">\n <ui-listbox \n class=\"url-autocomplete\" \n role=\"listbox\" \n aria-label=\"Suggested URLs from your history.\"\n tabindex=\"-1\"\n @select=\"${this.handleSuggestionSelect}\"\n @click=\"${this.handleSuggestionClick}\"\n >\n ${this.renderSuggestionList()}\n </ui-listbox>\n <ui-divider></ui-divider>\n <p class=\"clear-all-history\">\n <span class=\"clear-all-history-label\" @click=\"${this.clearSuggestionsHandler}\">Clear all history</span>\n </p>\n </div>\n `;\n }\n\n /**\n * @returns The template for the suggestions list.\n */\n protected renderSuggestionList(): TemplateResult[] | string {\n const items = this.renderedSuggestions;\n if (!Array.isArray(items) || !items.length) {\n return '';\n }\n return items.map(i => this.renderSuggestionItem(i));\n }\n\n /**\n * @returns The template for an URL suggestion item.\n */\n protected renderSuggestionItem(item: IUrl): TemplateResult {\n const { key } = item;\n return html`\n <ui-list-item \n class=\"suggestion-item\" \n data-key=\"${item.key}\"\n role=\"option\"\n aria-selected=\"false\"\n >\n <div>${key}</div>\n <span \n slot=\"end-text\"\n class=\"remove-suggestion\" \n data-key=\"${key}\"\n >Remove</span>\n </ui-list-item>`;\n }\n}\n"]}
|
|
@@ -15,18 +15,22 @@ import '../../define/ui/ui-divider.js';
|
|
|
15
15
|
import '../../define/ui/ui-icon.js';
|
|
16
16
|
import '../../define/ui/ui-text-field.js';
|
|
17
17
|
export default class UrlParamsForm extends ApiElement {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.parser = new UrlProcessor('/');
|
|
21
|
+
/**
|
|
22
|
+
* When set the editor is in read only mode.
|
|
23
|
+
* @attribute
|
|
24
|
+
*/
|
|
25
|
+
this.readOnly = false;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the text editor is rendered instead of the form.
|
|
28
|
+
* @attribute
|
|
29
|
+
*/
|
|
30
|
+
this.text = false;
|
|
31
|
+
this.#value = '';
|
|
32
|
+
}
|
|
33
|
+
#value;
|
|
30
34
|
/**
|
|
31
35
|
* The current value of the editor.
|
|
32
36
|
* @attribute
|
|
@@ -42,7 +46,6 @@ export default class UrlParamsForm extends ApiElement {
|
|
|
42
46
|
this.#value = value;
|
|
43
47
|
this.setupParser(value);
|
|
44
48
|
}
|
|
45
|
-
textValue;
|
|
46
49
|
update(cp) {
|
|
47
50
|
if (cp.has('text')) {
|
|
48
51
|
if (this.text) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UrlParamsForm.js","sourceRoot":"","sources":["../../../src/elements/http/UrlParamsForm.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAiB,UAAU,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,4BAA4B,CAAC;AACpC,OAAO,iCAAiC,CAAC;AACzC,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAI1C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IACzC,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAEzC;;;OAGG;IACyC,QAAQ,GAAG,KAAK,CAAC;IAE7D;;;OAGG;IACyC,IAAI,GAAG,KAAK,CAAC;IAEzD,MAAM,GAAG,EAAE,CAAC;IAEZ;;;OAGG;IAEH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,IAAI,GAAG,KAAK,KAAK,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAEkB,SAAS,CAAU;IAEnB,MAAM,CAAC,EAAwB;QAChD,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAClB,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;aACtD;iBAAM;gBACL,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;aAC5B;SACF;QACD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAES,WAAW,CAAC,KAAa;QACjC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,SAAS;QACvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;SACR;QACD,IAAI;YACF,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAiC,CAAC;YACpF,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM;SACP;IACH,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAES,YAAY,CAAC,CAAc;QACnC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,IAAmB,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,IAAI,MAAM,KAAK,OAAO,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;aAAM,IAAI,MAAM,KAAK,aAAa,EAAE;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa,EAAE,KAAuB,EAAE,KAAa;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa,EAAE,OAAgB;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,uEAAuE;QACvE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,uEAAuE;QACvE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAES,gBAAgB,CAAC,CAAQ;QACjC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAe,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,KAAK,CAAC,aAAa,EAAE,CAAC;IACxB,CAAC;IAES,iBAAiB,CAAC,CAAQ;QAClC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAe,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,KAAK,CAAC,aAAa,EAAE,CAAC;IACxB,CAAC;IAES,YAAY,CAAC,CAAQ;QAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,aAA4B,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAES,YAAY,CAAC,CAAQ;QAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,aAA8B,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAES,UAAU,CAAC,CAAQ;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,MAA6B,CAAC;QAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;MACT,IAAI,CAAC,mBAAmB,EAAE;MAC1B,IAAI,CAAC,YAAY,EAAE;KACpB,CAAC;IACJ,CAAC;IAES,mBAAmB;QAC3B,OAAO,IAAI,CAAA;;wCAEyB,IAAI,CAAC,SAAS;wCACd,IAAI,CAAC,YAAY;wCACjB,IAAI,CAAC,YAAY;mCACtB,IAAI,CAAC,YAAY;;;;8DAIU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe;;;;;;;;;;;KAWjG,CAAC;IACJ,CAAC;IAES,YAAY;QACpB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;QACD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAES,UAAU;QAClB,MAAM,EAAE,SAAS,GAAC,EAAE,EAAE,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAI,CAAA;;;;;kBAKG,IAAI,CAAC,SAAS,CAAC;;mBAEd,IAAI,CAAC,UAAU;;;KAG7B,CAAC;IACJ,CAAC;IAES,UAAU;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAClC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAES,kBAAkB;QAC1B,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;IAES,YAAY,CAAC,KAAsB;QAC3C,OAAO,IAAI,CAAA;MACT,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC1D,CAAC;IACJ,CAAC;IAES,WAAW,CAAC,IAAmB,EAAE,KAAa;QACtD,OAAO,IAAI,CAAA;;QAEP,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;QAClC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;;KAEpC,CAAC;IACJ,CAAC;IAES,kBAAkB,CAAC,IAAmB,EAAE,KAAa;QAC7D,OAAO,IAAI,CAAA;;kBAEG,IAAI,CAAC,OAAO;iBACb,IAAI,CAAC,YAAY;;oBAEd,KAAK;mBACN,IAAI,CAAC,QAAQ;;KAE3B,CAAC;IACJ,CAAC;IAES,qBAAqB,CAAC,KAAa;QAC3C,OAAO,IAAI,CAAA;;;oBAGK,KAAK;gBACT,IAAI,CAAC,YAAY;mBACd,IAAI,CAAC,QAAQ;;;;KAI3B,CAAC;IACJ,CAAC;IAES,eAAe,CAAC,IAAmB,EAAE,KAAa;QAC1D,OAAO,IAAI,CAAA;;;;;;;;kBAQG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;sBACX,KAAK;qBACN,IAAI,CAAC,QAAQ;;;mBAGf,IAAI,CAAC,gBAAgB;;;KAGnC,CAAC;IACJ,CAAC;IAES,gBAAgB,CAAC,IAAmB,EAAE,KAAa;QAC3D,OAAO,IAAI,CAAA;;;;;;;kBAOG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;sBACZ,KAAK;qBACN,IAAI,CAAC,QAAQ;;;mBAGf,IAAI,CAAC,iBAAiB;;;KAGpC,CAAC;IACJ,CAAC;CACF;AA1Y6C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;+CAAkB;AAMjB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAAc;AASzD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAG1B;AAWQ;IAAR,KAAK,EAAE;gDAA8B","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { html, PropertyValues, TemplateResult } from \"lit\";\nimport { IUrlParamPart, UrlEncoder, UrlProcessor } from \"@api-client/core/build/browser.js\";\nimport { property, state } from \"lit/decorators.js\";\nimport { live } from \"lit/directives/live.js\";\nimport ApiElement from \"../ApiElement.js\";\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-icon-button.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-switch.js';\nimport '../../define/ui/ui-divider.js';\nimport '../../define/ui/ui-icon.js';\nimport '../../define/ui/ui-text-field.js';\nimport Input from \"../../ui/input/Input.js\";\nimport SwitchElement from \"../../ui/input/SwitchElement.js\";\n\nexport default class UrlParamsForm extends ApiElement {\n protected parser = new UrlProcessor('/');\n\n /**\n * When set the editor is in read only mode.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * Whether the text editor is rendered instead of the form.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) text = false;\n\n #value = '';\n\n /**\n * The current value of the editor.\n * @attribute\n */\n @property({ type: String })\n get value(): string {\n return this.#value;\n }\n\n set value(value: string) {\n const old = this.#value;\n if (old === value) {\n return;\n }\n this.#value = value;\n this.setupParser(value);\n }\n\n @state() protected textValue?: string;\n\n protected override update(cp: PropertyValues<this>): void {\n if (cp.has('text')) {\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n } else {\n this.textValue = undefined;\n }\n }\n super.update(cp);\n }\n \n protected setupParser(value: string): void {\n if (value) {\n this.parser = new UrlProcessor(value);\n } else {\n this.parser = new UrlProcessor('/');\n }\n this.requestUpdate();\n }\n\n protected handleAdd(): void {\n this.addParameter();\n }\n\n addParameter(): void {\n if (this.readOnly) {\n return;\n }\n this.parser.search.append('', '');\n this.requestUpdate();\n this.focusLast();\n }\n\n protected async focusLast(): Promise<void> {\n await this.updateComplete;\n const row = this.shadowRoot?.querySelector('.param-row:last-of-type');\n if (!row) {\n return;\n }\n try {\n const node = row.querySelector('.name-input input') as HTMLInputElement | undefined;\n if (node) {\n node.focus();\n }\n } catch (e) {\n // ...\n }\n }\n\n protected notifyChange(): void {\n this.dispatchEvent(new Event('change'));\n }\n\n protected handleOption(e: CustomEvent): void {\n const element = e.detail.item as HTMLElement;\n const { option } = element.dataset;\n if (!option) {\n return;\n }\n if (option === 'clear') {\n this.clear();\n } else if (option === 'text-editor') {\n this.toggle();\n }\n }\n\n /**\n * Toggles the state between form and text editors.\n */\n toggle(): void {\n this.text = !this.text;\n }\n\n /**\n * Removes all parameters.\n */\n clear(): void {\n this.parser.search.clear();\n this.updateValue();\n this.requestUpdate();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Updates name/value of a parameter on a specific index.\n */\n updateProperty(index: number, field: 'name' | 'value', value: string): void {\n const list = this.parser.search.list();\n list[index][field] = value;\n this.parser.search.update(index, list[index]);\n this.updateValue();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Removes a parameter from an index.\n */\n removeProperty(index: number): void {\n this.parser.search.delete(index);\n this.updateValue();\n this.requestUpdate();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Toggles enabled state of a parameter.\n */\n toggleProperty(index: number, enabled: boolean): void {\n this.parser.search.toggle(index, enabled);\n this.updateValue();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Encodes all parameters.\n */\n encodeProperties(): void {\n const { search } = this.parser;\n const list = search.list();\n list.forEach((part, index) => {\n part.name = UrlEncoder.encodeQueryString(part.name, true);\n part.value = UrlEncoder.encodeQueryString(part.value, true);\n search.update(index, part);\n });\n // TODO: UrlEncoder.decodeQueryString(part, false) on each path segment\n this.requestUpdate();\n this.updateValue();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Decodes all parameters.\n */\n decodeProperties(): void {\n const { search } = this.parser;\n const list = search.list();\n list.forEach((part, index) => {\n part.name = UrlEncoder.decodeQueryString(part.name, true);\n part.value = UrlEncoder.decodeQueryString(part.value, true);\n search.update(index, part);\n });\n // TODO: UrlEncoder.encodeQueryString(part, false) on each path segment\n this.requestUpdate();\n this.updateValue();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n protected updateValue(): void {\n this.#value = this.parser.toString();\n this.notifyChange();\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input;\n const index = Number(input.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.updateProperty(index, 'name', input.value);\n input.checkValidity();\n }\n\n protected handleValueChange(e: Event): void {\n const input = e.target as Input;\n const index = Number(input.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.updateProperty(index, 'value', input.value);\n input.checkValidity();\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.removeProperty(index);\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.toggleProperty(index, node.checked);\n }\n\n protected handleEncode(): void {\n this.encodeProperties();\n }\n\n protected handleDecode(): void {\n this.decodeProperties();\n }\n\n protected handleText(e: Event): void {\n const input = e.target as HTMLTextAreaElement;\n const { value } = input;\n this.parser.search.fromParamsString(value);\n this.updateValue();\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n ${this.renderEditor()}\n `;\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-button type=\"tonal\" @click=\"${this.handleAdd}\">Add</ui-button>\n <ui-button type=\"tonal\" @click=\"${this.handleEncode}\">URL encode</ui-button>\n <ui-button type=\"tonal\" @click=\"${this.handleDecode}\">URL decode</ui-button>\n <ui-dropdown-list @select=\"${this.handleOption}\" closeOnOutsideClick class=\"dropdown\">\n <ui-icon-button aria-label=\"Additional options\"><ui-icon icon=\"moreVert\" role=\"presentation\"></ui-icon></ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item role=\"menuitem\" data-option=\"text-editor\" image=\"icon\" title=\"Toggles between a text editor and a form\">\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"${this.text ? 'checkBox' : 'checkBoxBlank'}\"></ui-icon>\n Text editor\n </ui-list-item>\n <ui-divider type=\"inset\"></ui-divider>\n <ui-list-item role=\"menuitem\" data-option=\"clear\" image=\"icon\" title=\"Removes all parameters from the editor\">\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"deleteOutline\"></ui-icon>\n Clear form\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n </div>\n `;\n }\n\n protected renderEditor(): TemplateResult {\n if (this.text) {\n return this.renderText();\n }\n return this.renderList();\n }\n\n protected renderText(): TemplateResult {\n const { textValue='' } = this;\n return html`\n <div class=\"text-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <textarea \n .value=\"${live(textValue)}\"\n data-enable-grammarly=\"false\"\n @change=\"${this.handleText}\"\n ></textarea>\n </div>\n `;\n }\n\n protected renderList(): TemplateResult {\n const items = this.parser.search.list();\n if (!Array.isArray(items) || !items.length) {\n return this.renderEmptyMessage();\n }\n return this.renderParams(items);\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html`\n <div class=\"empty-message\">No parameters added</div>\n `;\n }\n\n protected renderParams(items: IUrlParamPart[]): TemplateResult {\n return html`\n ${items.map((item, index) => this.renderParam(item, index))}\n `;\n }\n\n protected renderParam(item: IUrlParamPart, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)}\n ${this.renderNameField(item, index)}\n ${this.renderValueField(item, index)}\n ${this.renderDeleteParameter(index)}\n </div>\n `;\n }\n\n protected renderToggleButton(item: IUrlParamPart, index: number): TemplateResult {\n return html`\n <ui-switch \n .checked=\"${item.enabled}\" \n @change=\"${this.handleToggle}\" \n aria-label=\"Toggle this parameter\"\n data-index=\"${index}\"\n ?disabled=\"${this.readOnly}\"\n ></ui-switch>\n `;\n }\n\n protected renderDeleteParameter(index: number): TemplateResult {\n return html`\n <ui-icon-button \n aria-label=\"Delete this parameter\" \n data-index=\"${index}\" \n @click=\"${this.handleRemove}\"\n ?disabled=\"${this.readOnly}\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderNameField(item: IUrlParamPart, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper name-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"name\"\n autocomplete=\"off\"\n .value=\"${live(item.name)}\" \n data-index=\"${index}\" \n ?readOnly=\"${this.readOnly}\" \n pattern=\"\\\\S*\" \n aria-label=\"Parameter name value\"\n @change=\"${this.handleNameChange}\"\n />\n </div>\n `;\n }\n\n protected renderValueField(item: IUrlParamPart, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n .value=\"${live(item.value)}\" \n data-index=\"${index}\" \n ?readOnly=\"${this.readOnly}\" \n pattern=\"\\\\S*\" \n aria-label=\"Parameter value\"\n @change=\"${this.handleValueChange}\"\n />\n </div>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"UrlParamsForm.js","sourceRoot":"","sources":["../../../src/elements/http/UrlParamsForm.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAC3D,OAAO,EAAiB,UAAU,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,qCAAqC,CAAC;AAC7C,OAAO,4BAA4B,CAAC;AACpC,OAAO,iCAAiC,CAAC;AACzC,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,kCAAkC,CAAC;AAI1C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,UAAU;IAArD;;QACY,WAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;QAEzC;;;WAGG;QACyC,aAAQ,GAAG,KAAK,CAAC;QAE7D;;;WAGG;QACyC,SAAI,GAAG,KAAK,CAAC;QAEzD,WAAM,GAAG,EAAE,CAAC;IAkYd,CAAC;IAlYC,MAAM,CAAM;IAEZ;;;OAGG;IAEH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,IAAI,GAAG,KAAK,KAAK,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAIkB,MAAM,CAAC,EAAwB;QAChD,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAClB,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;aACtD;iBAAM;gBACL,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;aAC5B;SACF;QACD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAES,WAAW,CAAC,KAAa;QACjC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;SACrC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAES,SAAS;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,SAAS;QACvB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;SACR;QACD,IAAI;YACF,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAiC,CAAC;YACpF,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM;SACP;IACH,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAES,YAAY,CAAC,CAAc;QACnC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,IAAmB,CAAC;QAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,IAAI,MAAM,KAAK,OAAO,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;aAAM,IAAI,MAAM,KAAK,aAAa,EAAE;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa,EAAE,KAAuB,EAAE,KAAa;QAClE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAa,EAAE,OAAgB;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,uEAAuE;QACvE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,uEAAuE;QACvE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;SACtD;IACH,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAES,gBAAgB,CAAC,CAAQ;QACjC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAe,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,KAAK,CAAC,aAAa,EAAE,CAAC;IACxB,CAAC;IAES,iBAAiB,CAAC,CAAQ;QAClC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAe,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,KAAK,CAAC,aAAa,EAAE,CAAC;IACxB,CAAC;IAES,YAAY,CAAC,CAAQ;QAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,aAA4B,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAES,YAAY,CAAC,CAAQ;QAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,aAA8B,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACvB,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAES,UAAU,CAAC,CAAQ;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,MAA6B,CAAC;QAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;MACT,IAAI,CAAC,mBAAmB,EAAE;MAC1B,IAAI,CAAC,YAAY,EAAE;KACpB,CAAC;IACJ,CAAC;IAES,mBAAmB;QAC3B,OAAO,IAAI,CAAA;;wCAEyB,IAAI,CAAC,SAAS;wCACd,IAAI,CAAC,YAAY;wCACjB,IAAI,CAAC,YAAY;mCACtB,IAAI,CAAC,YAAY;;;;8DAIU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe;;;;;;;;;;;KAWjG,CAAC;IACJ,CAAC;IAES,YAAY;QACpB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;QACD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAES,UAAU;QAClB,MAAM,EAAE,SAAS,GAAC,EAAE,EAAE,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAI,CAAA;;;;;kBAKG,IAAI,CAAC,SAAS,CAAC;;mBAEd,IAAI,CAAC,UAAU;;;KAG7B,CAAC;IACJ,CAAC;IAES,UAAU;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAClC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAES,kBAAkB;QAC1B,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;IAES,YAAY,CAAC,KAAsB;QAC3C,OAAO,IAAI,CAAA;MACT,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC1D,CAAC;IACJ,CAAC;IAES,WAAW,CAAC,IAAmB,EAAE,KAAa;QACtD,OAAO,IAAI,CAAA;;QAEP,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;QAClC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;;KAEpC,CAAC;IACJ,CAAC;IAES,kBAAkB,CAAC,IAAmB,EAAE,KAAa;QAC7D,OAAO,IAAI,CAAA;;kBAEG,IAAI,CAAC,OAAO;iBACb,IAAI,CAAC,YAAY;;oBAEd,KAAK;mBACN,IAAI,CAAC,QAAQ;;KAE3B,CAAC;IACJ,CAAC;IAES,qBAAqB,CAAC,KAAa;QAC3C,OAAO,IAAI,CAAA;;;oBAGK,KAAK;gBACT,IAAI,CAAC,YAAY;mBACd,IAAI,CAAC,QAAQ;;;;KAI3B,CAAC;IACJ,CAAC;IAES,eAAe,CAAC,IAAmB,EAAE,KAAa;QAC1D,OAAO,IAAI,CAAA;;;;;;;;kBAQG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;sBACX,KAAK;qBACN,IAAI,CAAC,QAAQ;;;mBAGf,IAAI,CAAC,gBAAgB;;;KAGnC,CAAC;IACJ,CAAC;IAES,gBAAgB,CAAC,IAAmB,EAAE,KAAa;QAC3D,OAAO,IAAI,CAAA;;;;;;;kBAOG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;sBACZ,KAAK;qBACN,IAAI,CAAC,QAAQ;;;mBAGf,IAAI,CAAC,iBAAiB;;;KAGpC,CAAC;IACJ,CAAC;CACF;AA1Y6C;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;+CAAkB;AAMjB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAAc;AASzD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAG1B;AAWQ;IAAR,KAAK,EAAE;gDAA8B","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { html, PropertyValues, TemplateResult } from \"lit\";\nimport { IUrlParamPart, UrlEncoder, UrlProcessor } from \"@api-client/core/build/browser.js\";\nimport { property, state } from \"lit/decorators.js\";\nimport { live } from \"lit/directives/live.js\";\nimport ApiElement from \"../ApiElement.js\";\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-icon-button.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-switch.js';\nimport '../../define/ui/ui-divider.js';\nimport '../../define/ui/ui-icon.js';\nimport '../../define/ui/ui-text-field.js';\nimport Input from \"../../ui/input/Input.js\";\nimport SwitchElement from \"../../ui/input/SwitchElement.js\";\n\nexport default class UrlParamsForm extends ApiElement {\n protected parser = new UrlProcessor('/');\n\n /**\n * When set the editor is in read only mode.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * Whether the text editor is rendered instead of the form.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) text = false;\n\n #value = '';\n\n /**\n * The current value of the editor.\n * @attribute\n */\n @property({ type: String })\n get value(): string {\n return this.#value;\n }\n\n set value(value: string) {\n const old = this.#value;\n if (old === value) {\n return;\n }\n this.#value = value;\n this.setupParser(value);\n }\n\n @state() protected textValue?: string;\n\n protected override update(cp: PropertyValues<this>): void {\n if (cp.has('text')) {\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n } else {\n this.textValue = undefined;\n }\n }\n super.update(cp);\n }\n \n protected setupParser(value: string): void {\n if (value) {\n this.parser = new UrlProcessor(value);\n } else {\n this.parser = new UrlProcessor('/');\n }\n this.requestUpdate();\n }\n\n protected handleAdd(): void {\n this.addParameter();\n }\n\n addParameter(): void {\n if (this.readOnly) {\n return;\n }\n this.parser.search.append('', '');\n this.requestUpdate();\n this.focusLast();\n }\n\n protected async focusLast(): Promise<void> {\n await this.updateComplete;\n const row = this.shadowRoot?.querySelector('.param-row:last-of-type');\n if (!row) {\n return;\n }\n try {\n const node = row.querySelector('.name-input input') as HTMLInputElement | undefined;\n if (node) {\n node.focus();\n }\n } catch (e) {\n // ...\n }\n }\n\n protected notifyChange(): void {\n this.dispatchEvent(new Event('change'));\n }\n\n protected handleOption(e: CustomEvent): void {\n const element = e.detail.item as HTMLElement;\n const { option } = element.dataset;\n if (!option) {\n return;\n }\n if (option === 'clear') {\n this.clear();\n } else if (option === 'text-editor') {\n this.toggle();\n }\n }\n\n /**\n * Toggles the state between form and text editors.\n */\n toggle(): void {\n this.text = !this.text;\n }\n\n /**\n * Removes all parameters.\n */\n clear(): void {\n this.parser.search.clear();\n this.updateValue();\n this.requestUpdate();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Updates name/value of a parameter on a specific index.\n */\n updateProperty(index: number, field: 'name' | 'value', value: string): void {\n const list = this.parser.search.list();\n list[index][field] = value;\n this.parser.search.update(index, list[index]);\n this.updateValue();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Removes a parameter from an index.\n */\n removeProperty(index: number): void {\n this.parser.search.delete(index);\n this.updateValue();\n this.requestUpdate();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Toggles enabled state of a parameter.\n */\n toggleProperty(index: number, enabled: boolean): void {\n this.parser.search.toggle(index, enabled);\n this.updateValue();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Encodes all parameters.\n */\n encodeProperties(): void {\n const { search } = this.parser;\n const list = search.list();\n list.forEach((part, index) => {\n part.name = UrlEncoder.encodeQueryString(part.name, true);\n part.value = UrlEncoder.encodeQueryString(part.value, true);\n search.update(index, part);\n });\n // TODO: UrlEncoder.decodeQueryString(part, false) on each path segment\n this.requestUpdate();\n this.updateValue();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n /**\n * Decodes all parameters.\n */\n decodeProperties(): void {\n const { search } = this.parser;\n const list = search.list();\n list.forEach((part, index) => {\n part.name = UrlEncoder.decodeQueryString(part.name, true);\n part.value = UrlEncoder.decodeQueryString(part.value, true);\n search.update(index, part);\n });\n // TODO: UrlEncoder.encodeQueryString(part, false) on each path segment\n this.requestUpdate();\n this.updateValue();\n if (this.text) {\n this.textValue = this.parser.search.toParamsString();\n }\n }\n\n protected updateValue(): void {\n this.#value = this.parser.toString();\n this.notifyChange();\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input;\n const index = Number(input.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.updateProperty(index, 'name', input.value);\n input.checkValidity();\n }\n\n protected handleValueChange(e: Event): void {\n const input = e.target as Input;\n const index = Number(input.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.updateProperty(index, 'value', input.value);\n input.checkValidity();\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.removeProperty(index);\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.toggleProperty(index, node.checked);\n }\n\n protected handleEncode(): void {\n this.encodeProperties();\n }\n\n protected handleDecode(): void {\n this.decodeProperties();\n }\n\n protected handleText(e: Event): void {\n const input = e.target as HTMLTextAreaElement;\n const { value } = input;\n this.parser.search.fromParamsString(value);\n this.updateValue();\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n ${this.renderEditor()}\n `;\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-button type=\"tonal\" @click=\"${this.handleAdd}\">Add</ui-button>\n <ui-button type=\"tonal\" @click=\"${this.handleEncode}\">URL encode</ui-button>\n <ui-button type=\"tonal\" @click=\"${this.handleDecode}\">URL decode</ui-button>\n <ui-dropdown-list @select=\"${this.handleOption}\" closeOnOutsideClick class=\"dropdown\">\n <ui-icon-button aria-label=\"Additional options\"><ui-icon icon=\"moreVert\" role=\"presentation\"></ui-icon></ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item role=\"menuitem\" data-option=\"text-editor\" image=\"icon\" title=\"Toggles between a text editor and a form\">\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"${this.text ? 'checkBox' : 'checkBoxBlank'}\"></ui-icon>\n Text editor\n </ui-list-item>\n <ui-divider type=\"inset\"></ui-divider>\n <ui-list-item role=\"menuitem\" data-option=\"clear\" image=\"icon\" title=\"Removes all parameters from the editor\">\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"deleteOutline\"></ui-icon>\n Clear form\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n </div>\n `;\n }\n\n protected renderEditor(): TemplateResult {\n if (this.text) {\n return this.renderText();\n }\n return this.renderList();\n }\n\n protected renderText(): TemplateResult {\n const { textValue='' } = this;\n return html`\n <div class=\"text-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <textarea \n .value=\"${live(textValue)}\"\n data-enable-grammarly=\"false\"\n @change=\"${this.handleText}\"\n ></textarea>\n </div>\n `;\n }\n\n protected renderList(): TemplateResult {\n const items = this.parser.search.list();\n if (!Array.isArray(items) || !items.length) {\n return this.renderEmptyMessage();\n }\n return this.renderParams(items);\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html`\n <div class=\"empty-message\">No parameters added</div>\n `;\n }\n\n protected renderParams(items: IUrlParamPart[]): TemplateResult {\n return html`\n ${items.map((item, index) => this.renderParam(item, index))}\n `;\n }\n\n protected renderParam(item: IUrlParamPart, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)}\n ${this.renderNameField(item, index)}\n ${this.renderValueField(item, index)}\n ${this.renderDeleteParameter(index)}\n </div>\n `;\n }\n\n protected renderToggleButton(item: IUrlParamPart, index: number): TemplateResult {\n return html`\n <ui-switch \n .checked=\"${item.enabled}\" \n @change=\"${this.handleToggle}\" \n aria-label=\"Toggle this parameter\"\n data-index=\"${index}\"\n ?disabled=\"${this.readOnly}\"\n ></ui-switch>\n `;\n }\n\n protected renderDeleteParameter(index: number): TemplateResult {\n return html`\n <ui-icon-button \n aria-label=\"Delete this parameter\" \n data-index=\"${index}\" \n @click=\"${this.handleRemove}\"\n ?disabled=\"${this.readOnly}\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderNameField(item: IUrlParamPart, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper name-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"name\"\n autocomplete=\"off\"\n .value=\"${live(item.name)}\" \n data-index=\"${index}\" \n ?readOnly=\"${this.readOnly}\" \n pattern=\"\\\\S*\" \n aria-label=\"Parameter name value\"\n @change=\"${this.handleNameChange}\"\n />\n </div>\n `;\n }\n\n protected renderValueField(item: IUrlParamPart, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n .value=\"${live(item.value)}\" \n data-index=\"${index}\" \n ?readOnly=\"${this.readOnly}\" \n pattern=\"\\\\S*\" \n aria-label=\"Parameter value\"\n @change=\"${this.handleValueChange}\"\n />\n </div>\n `;\n }\n}\n"]}
|
|
@@ -10,25 +10,6 @@ var PanelState;
|
|
|
10
10
|
})(PanelState || (PanelState = {}));
|
|
11
11
|
let panelId = 0;
|
|
12
12
|
export class LayoutPanel {
|
|
13
|
-
id = panelId++;
|
|
14
|
-
parent;
|
|
15
|
-
manager;
|
|
16
|
-
layout = 'horizontal';
|
|
17
|
-
panels = [];
|
|
18
|
-
items = [];
|
|
19
|
-
/**
|
|
20
|
-
* The current state of the panel.
|
|
21
|
-
*/
|
|
22
|
-
state = PanelState.Idle;
|
|
23
|
-
/**
|
|
24
|
-
* The item being rendered in the panel.
|
|
25
|
-
*/
|
|
26
|
-
selected;
|
|
27
|
-
/**
|
|
28
|
-
* The computed size value for each item.
|
|
29
|
-
* The value of `undefined` means "auto".
|
|
30
|
-
*/
|
|
31
|
-
sizes = [];
|
|
32
13
|
get hasPanels() {
|
|
33
14
|
return this.panels.length > 0;
|
|
34
15
|
}
|
|
@@ -49,6 +30,19 @@ export class LayoutPanel {
|
|
|
49
30
|
return panel;
|
|
50
31
|
}
|
|
51
32
|
constructor(manager, parent) {
|
|
33
|
+
this.id = panelId++;
|
|
34
|
+
this.layout = 'horizontal';
|
|
35
|
+
this.panels = [];
|
|
36
|
+
this.items = [];
|
|
37
|
+
/**
|
|
38
|
+
* The current state of the panel.
|
|
39
|
+
*/
|
|
40
|
+
this.state = PanelState.Idle;
|
|
41
|
+
/**
|
|
42
|
+
* The computed size value for each item.
|
|
43
|
+
* The value of `undefined` means "auto".
|
|
44
|
+
*/
|
|
45
|
+
this.sizes = [];
|
|
52
46
|
this.manager = manager;
|
|
53
47
|
this.state = PanelState.Idle;
|
|
54
48
|
this.parent = parent;
|
|
@@ -369,11 +363,6 @@ export class LayoutPanel {
|
|
|
369
363
|
* - the rendered content has to be focusable (tabindex must be set) in order to detect active panel
|
|
370
364
|
*/
|
|
371
365
|
export class LayoutManager extends EventTarget {
|
|
372
|
-
opts;
|
|
373
|
-
panels = [];
|
|
374
|
-
isDirty = false;
|
|
375
|
-
storing = false;
|
|
376
|
-
_activePanel;
|
|
377
366
|
/**
|
|
378
367
|
* An active panel
|
|
379
368
|
*/
|
|
@@ -385,6 +374,9 @@ export class LayoutManager extends EventTarget {
|
|
|
385
374
|
}
|
|
386
375
|
constructor(opts = {}) {
|
|
387
376
|
super();
|
|
377
|
+
this.panels = [];
|
|
378
|
+
this.isDirty = false;
|
|
379
|
+
this.storing = false;
|
|
388
380
|
this.opts = opts;
|
|
389
381
|
}
|
|
390
382
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutManager.js","sourceRoot":"","sources":["../../../src/elements/layout/LayoutManager.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable prefer-destructuring */\n/* eslint-disable max-classes-per-file */\n\nimport { TemplateResult, html } from 'lit';\nimport { Events } from '../../events/Events.js';\n// eslint-disable-next-line import/no-cycle\nimport LayoutPanelElement from './LayoutPanelElement.js';\nimport '../../define/layout/layout-panel.js';\nimport { IconType } from '../../ui/icons/Icons.js';\n\nexport type Direction = 'horizontal' | 'vertical';\nexport type DropRegion = 'center' | 'east' | 'west' | 'north' | 'south';\n\nenum PanelState {\n\tIdle,\n\tBusy\n}\n\nexport interface ILayoutItem {\n /**\n * The kind of opened item\n */\n kind: string;\n /**\n * The key of the opened item\n */\n key: string;\n /**\n * Optional parent information that helps locating this object.\n */\n parent?: string;\n /**\n * The label to render in the tab.\n */\n label: string;\n /**\n * Whether the tab is pinned (cannot be closed or moved).\n */\n pinned?: boolean;\n /**\n * The tab index.\n */\n index?: number;\n /**\n * The icon defined in the internal library to render with the tab.\n */\n icon?: IconType;\n /**\n * A tab that is always present in the layout. The user can't close this tab.\n */\n persistent?: boolean;\n /**\n * A property to be used by the screen to indicate the property is being loaded\n * (from a data store, file, etc).\n */\n loading?: boolean;\n /**\n * Indicates the item has been changed and is out of sync with the data store.\n */\n isDirty?: boolean;\n}\n\nexport interface ILayoutOptions {\n /**\n * The list of DataTransfer types to test against when handling drag and drop.\n * When set it checks whether all types are set on the dragged item.\n * If not set all items are allowed.\n */\n dragTypes?: string[];\n\n /**\n * The local store key to use with `autoStore`,\n */\n storeKey?: string;\n\n /**\n * Uses application's internal events system to store the layout data \n * in the local store, when anything change.\n * This must be set with the `storeKey` property.\n * \n * When this is set it also restores the state during initialization.\n */\n autoStore?: boolean;\n\n /**\n * When set it adds the `overflow` hidden on the container that holds the tab contents.\n */\n constrain?: boolean;\n}\n\nexport interface IPanelSplitOptions {\n layout?: Direction;\n itemsTarget?: 0 | 1;\n}\n\nexport type ItemRenderCallback = (item: ILayoutItem, visible: boolean) => TemplateResult;\n\nexport interface ILayoutPanelState {\n id: number;\n layout: Direction;\n panels?: ILayoutPanelState[];\n items?: ILayoutItem[];\n selected?: string;\n}\n\nexport interface ILayoutState {\n panels: ILayoutPanelState[];\n}\n\nexport interface ILayoutItemAddOptions {\n /**\n * The region to add the item.\n * When other than `center` it splits the panel.\n */\n region?: DropRegion;\n /**\n * The index at which to put the item.\n * By default it is added as a last item.\n */\n index?: number;\n}\n\nlet panelId = 0;\n\nexport class LayoutPanel {\n id = panelId++;\n\n parent?: LayoutPanel;\n \n manager: LayoutManager\n\n layout: Direction = 'horizontal';\n \n panels: LayoutPanel[] = [];\n\n items: ILayoutItem[] = [];\n\n /**\n * The current state of the panel.\n */\n state: PanelState = PanelState.Idle;\n\n /**\n * The item being rendered in the panel.\n */\n selected?: string;\n\n /**\n * The computed size value for each item.\n * The value of `undefined` means \"auto\".\n */\n sizes: string[] = [];\n\n get hasPanels(): boolean {\n return this.panels.length > 0;\n }\n\n get hasItems(): boolean {\n return this.items.length > 0;\n }\n\n static fromSchema(state: ILayoutPanelState, manager: LayoutManager, parent?: LayoutPanel): LayoutPanel {\n const panel = new LayoutPanel(manager, parent);\n panel.id = state.id;\n panel.selected = state.selected;\n panel.layout = state.layout;\n if (Array.isArray(state.items)) {\n panel.items = state.items.map(i => ({ ...i }));\n }\n if (Array.isArray(state.panels)) {\n panel.panels = state.panels.map(i => LayoutPanel.fromSchema(i, manager, panel));\n }\n return panel;\n }\n\n constructor(manager: LayoutManager, parent?: LayoutPanel) {\n this.manager = manager;\n this.state = PanelState.Idle;\n this.parent = parent;\n }\n\n /**\n * @returns Returns a **copy** of the items array sorted by index.\n */\n sortedItems(): ILayoutItem[] {\n const { items } = this;\n return [...items].sort((a, b) => (a.index || 0) - (b.index || 0));\n }\n\n /**\n * @returns True when the panel accepts drop events.\n */\n canDrop(): boolean {\n if (this.hasItems) {\n return true;\n }\n return !this.hasPanels;\n }\n\n nextIndex(): number {\n let result = 0;\n if (!this.items.length) {\n return result;\n }\n this.items.forEach((item) => {\n const { index = 0 } = item;\n if (result < index) {\n result = index;\n }\n });\n return result + 1;\n }\n\n /**\n * Adds an item to the layout.\n * \n * @param item The item to add\n * @param opts Layout adding item options\n * @returns Whether a new item was added to the layout. false when the item is already in the layout panel.\n */\n addItem(item: ILayoutItem, opts: ILayoutItemAddOptions = {}): boolean {\n const { region = 'center' } = opts;\n const hasItem = region === 'center' && this.items.some(i => i.key === item.key);\n if (hasItem) {\n this.selected = item.key;\n this.manager.changed();\n return false;\n }\n\n const hasIndex = typeof opts.index === 'number';\n const index = !hasIndex ? this.nextIndex() : opts.index as number;\n \n if (region === 'center' || (!this.hasItems && !this.hasPanels)) {\n if (hasIndex) {\n this.increaseIndex(index + 1);\n }\n this.manager.nameItem(item);\n this.items.push({ ...item, index });\n this.selected = item.key;\n this.manager.changed();\n return true;\n } \n let panel: LayoutPanel;\n if (region === 'east') {\n panel = this.split({\n layout: 'horizontal',\n itemsTarget: 0,\n })[1];\n } else if (region === 'west') {\n panel = this.split({\n layout: 'horizontal',\n itemsTarget: 1,\n })[0];\n } else if (region === 'south') {\n panel = this.split({\n layout: 'vertical',\n itemsTarget: 0,\n })[1];\n } else {\n panel = this.split({\n layout: 'horizontal',\n itemsTarget: 1,\n })[0];\n }\n panel.addItem(item, { index });\n this.manager.changed();\n return true;\n }\n\n /**\n * Splits this panel into 2 panels.\n * This to be used when the panel has no other panels. Only items are allowed.\n * It produces 2 new panels and moves the items to the first one leaving the other one available.\n */\n split(opts: IPanelSplitOptions = {}): LayoutPanel[] {\n const { layout = 'horizontal', itemsTarget = 0 } = opts;\n if (this.hasPanels) {\n throw new Error(`Invalid state. Panels can be split only when containing items only.`);\n }\n this.layout = layout;\n const { items, selected } = this;\n this.items = [];\n this.selected = undefined;\n const p1 = new LayoutPanel(this.manager, this);\n const p2 = new LayoutPanel(this.manager, this);\n this.panels = [p1, p2];\n this.panels[itemsTarget].items = items;\n this.panels[itemsTarget].selected = selected;\n this.manager.changed();\n return this.panels;\n }\n\n unsplit(): void {\n const { items, selected } = this.panels[0];\n this.panels = [];\n this.items = items;\n this.selected = selected;\n this.manager.changed();\n }\n\n /**\n * Decreases items index by 1 to all items with index at least equal to `fromIndex`.\n * @param fromIndex The minimal index to affect.\n */\n decreaseIndex(fromIndex: number): void {\n for (const item of this.items) {\n const { index = 0 } = item;\n if (index >= fromIndex && index > 0) {\n (item.index as number) -= 1;\n }\n }\n }\n\n /**\n * Increases items index by 1 to all items with index at least equal to `fromIndex`.\n * @param fromIndex The minimal index to affect.\n */\n increaseIndex(fromIndex: number): void {\n for (const item of this.items) {\n const { index = 0 } = item;\n if (index >= fromIndex) {\n (item.index as number) += 1;\n }\n }\n }\n\n /**\n * Removes an item from the layout\n * @param key The key of the item.\n * @returns The removed item, if any.\n */\n removeItem(key: string): ILayoutItem | undefined {\n const index = this.items.findIndex(i => i.key === key);\n if (index < 0) {\n return undefined;\n }\n const removed = this.items[index];\n this.items.splice(index, 1);\n this.decreaseIndex(removed.index || 0);\n\n if (this.items.length === 0) {\n // remove panel\n if (this.parent) {\n this.parent.removePanel(this.id);\n }\n }\n if (this.selected === key) {\n let nextKey: string | undefined;\n if (this.items[index]) {\n nextKey = this.items[index].key;\n } else if (this.items[index - 1]) {\n nextKey = this.items[index - 1].key;\n }\n this.selected = nextKey;\n }\n this.manager.dispatchEvent(new CustomEvent('closetab', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: key,\n }));\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n return removed;\n }\n\n /**\n * @param key The key of the item to perform a relative operation from.\n * @param dir The direction to which close other items. Default to both directions leaving only the `key` item\n */\n relativeClose(key: string, dir: 'left' | 'right' | 'both' = 'both'): void {\n const index = this.items.findIndex(i => i.key === key);\n if (index < 0) {\n return;\n }\n const item = this.items[index];\n if (dir === 'both') {\n this.items = [item];\n this.selected = item.key;\n } else if (dir === 'left') {\n this.items = this.items.splice(index);\n this.selected = item.key;\n } else {\n this.items = this.items.splice(0, index + 1);\n this.selected = item.key;\n }\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n }\n\n removePanel(id: number): void {\n const index = this.panels.findIndex(p => p.id === id);\n if (index < 0) {\n return;\n }\n this.panels.splice(index, 1);\n if (this.panels.length === 1) {\n this.unsplit();\n }\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n }\n\n /**\n * Moves an item to a new index.\n * \n * @param key The item key\n * @param toIndex The new index. When not set it moves the item to the end.\n */\n moveItem(key: string, toIndex?: number): void {\n const item = this.items.find(i => i.key === key);\n if (!item) {\n return;\n }\n const hasIndex = typeof toIndex === 'number';\n if (hasIndex && item.index === toIndex) {\n return;\n }\n let hasTargetAtTarget = false;\n if (hasIndex) {\n hasTargetAtTarget = !!this.items[toIndex];\n }\n if (item.index !== undefined) {\n this.decreaseIndex(item.index);\n }\n const finalIndex = hasIndex ? toIndex as number : this.nextIndex();\n if (hasTargetAtTarget) {\n this.increaseIndex(finalIndex);\n }\n item.index = finalIndex;\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n }\n\n rename(key: string, label: string): void {\n const item = this.items.find(i => i.key === key);\n if (!item) {\n return;\n }\n item.label = label;\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n }\n\n toJSON(): ILayoutPanelState {\n const result:ILayoutPanelState = {\n id: this.id,\n layout: this.layout,\n };\n if (this.items.length) {\n result.items = this.items.map(i => ({ ...i }));\n }\n if (this.panels) {\n result.panels = this.panels.map(i => i.toJSON());\n }\n if (this.selected) {\n result.selected = this.selected;\n }\n return result;\n }\n\n panelTemplate(panel: LayoutPanel, itemCallback: ItemRenderCallback): TemplateResult | undefined {\n const { layout, panels, items, selected } = panel;\n const { manager } = this;\n const { dragTypes, constrain } = manager.opts;\n let content: (TemplateResult | undefined)[];\n if (panels.length) {\n content = panels.map(p => this.panelTemplate(p, itemCallback));\n } else {\n content = items.map(p => this.itemTemplate(p, p.key === selected, itemCallback));\n }\n const valid = content.filter(i => !!i);\n if (!valid.length) {\n return undefined;\n }\n return html`\n <layout-panel \n layout=\"${layout}\" \n .dragTypes=\"${dragTypes}\" \n .panel=\"${panel}\"\n .layoutId=\"${panel.id}\"\n ?constrain=\"${constrain}\"\n >\n ${content}\n </layout-panel>\n `;\n }\n\n itemTemplate(item: ILayoutItem, visible: boolean, itemCallback: ItemRenderCallback): TemplateResult {\n return itemCallback(item, visible);\n }\n\n render(itemCallback: ItemRenderCallback): TemplateResult | undefined {\n return this.panelTemplate(this as LayoutPanel, itemCallback);\n }\n}\n\n/**\n * Layout manager for API Client apps.\n * \n * Supports:\n * - layout splitting depending on the selected region (east, west, north, south)\n * - drag and drop of items into the layout\n * - auto storing and restoring layout state from the application local storage.\n * - adding items to the last focused panel\n * \n * Limitations\n * - the rendered content has to be focusable (tabindex must be set) in order to detect active panel\n */\nexport class LayoutManager extends EventTarget {\n opts: ILayoutOptions;\n\n panels: LayoutPanel[] = [];\n\n protected isDirty = false;\n\n protected storing = false;\n\n private _activePanel?: LayoutPanel;\n\n /**\n * An active panel\n */\n get activePanel(): LayoutPanel | undefined {\n if (!this._activePanel) {\n this._activePanel = this.findFirstItemsPanel();\n }\n return this._activePanel;\n }\n\n constructor(opts: ILayoutOptions = {}) {\n super();\n this.opts = opts;\n }\n\n /**\n * @param itemCallback The callback called when rendering an item in layout view.\n * @returns The template for the page layout.\n */\n render(itemCallback: ItemRenderCallback): TemplateResult[] {\n const result: TemplateResult[] = [];\n this.panels.forEach(p => {\n const content = p.render(itemCallback);\n if (content) {\n result.push(content);\n }\n });\n\n return result;\n }\n\n /**\n * Initializes the manager.\n * \n * @param restore Previously stored layout state, if any.\n */\n async initialize(restore?: ILayoutState): Promise<void> {\n if (restore) {\n this.restore(restore);\n } else if (this.opts.storeKey && this.opts.autoStore) {\n await this.restoreLayout(this.opts.storeKey);\n } \n \n if (!this.panels.length) {\n this.panels.push(new LayoutPanel(this));\n }\n\n document.body.addEventListener('focusin', this._focusInHandler.bind(this));\n }\n\n protected restore(restore: ILayoutState): void {\n if (Array.isArray(restore.panels)) {\n this.panels = restore.panels.map(i => LayoutPanel.fromSchema(i, this));\n }\n }\n\n /**\n * Informs the screen that something has changed\n */\n changed(): void {\n this.dispatchEvent(new Event('change'));\n this.autoStore();\n }\n\n /**\n * Dispatches the `nameitem` event.\n * The detail object has the item to be added to the items.\n * The event handler can manipulate properties of the item, except for the index which will be set by the manager.\n * \n * @param item The item to notify.\n */\n nameItem(item: ILayoutItem): void {\n this.dispatchEvent(new CustomEvent('nameitem', {\n detail: item,\n }));\n }\n\n /**\n * Serializes the layout state to a JSON safe object.\n * This is automatically called when passing this object to `JSON.stringify()`.\n */\n toJSON(): ILayoutState {\n const result: ILayoutState = {\n panels: this.panels.map(i => i.toJSON()),\n };\n return result;\n }\n\n protected autoStore(): void {\n const { autoStore, storeKey } = this.opts;\n if (!autoStore || !storeKey) {\n return;\n }\n this.storeLayout(storeKey);\n }\n\n protected async storeLayout(key: string): Promise<void> {\n if (this.storing) {\n this.isDirty = true;\n return;\n }\n this.storing = true;\n try {\n await Events.Config.Local.set(key, this.toJSON());\n } finally {\n this.storing = false;\n }\n if (this.isDirty) {\n this.isDirty = false;\n await this.storeLayout(key);\n }\n }\n\n protected async restoreLayout(key: string): Promise<void> {\n try {\n const data = await Events.Config.Local.get(key) as ILayoutState;\n if (data) {\n this.restore(data);\n }\n } catch (e) {\n // \n }\n }\n\n protected _focusInHandler(e: Event): void {\n const layout = this.findLayout(e);\n if (layout) {\n const id = Number(layout.dataset.panel);\n const { activePanel } = this;\n if (activePanel && activePanel.id === id) {\n return;\n }\n this._activePanel = this.findPanel(id);\n }\n }\n\n protected findLayout(e: Event, last=true): LayoutPanelElement | undefined {\n const path = e.composedPath();\n if (!last) {\n path.reverse();\n }\n while (path.length) {\n const node = path.shift() as Element;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n if (node.localName === 'layout-panel') {\n return node as LayoutPanelElement;\n }\n }\n return undefined;\n }\n\n /**\n * Finds a panel by id.\n * \n * @param id The id of the panel.\n * @param parent THe parent panel to start searching from\n * @returns The panel if found\n */\n findPanel(id: number, parent?: LayoutPanel): LayoutPanel | undefined {\n const panels = parent && parent.panels || this.panels;\n\n for (const p of panels) {\n if (p.id === id) {\n return p;\n }\n const child = this.findPanel(id, p);\n if (child) {\n return child;\n }\n }\n\n return undefined;\n }\n\n /**\n * Finds a first panel that can accept items.\n * This will be a panel that has no other panels.\n */\n findFirstItemsPanel(parent?: LayoutPanel): LayoutPanel | undefined {\n const panels = parent && parent.panels || this.panels;\n\n for (const p of panels) {\n if (!p.hasPanels) {\n return p;\n }\n const child = this.findFirstItemsPanel(p);\n if (child) {\n return child;\n }\n }\n\n return undefined;\n }\n\n /**\n * Finds a panel for the item.\n * @param key the key of the item to find.\n */\n findItemPanel(key: string, parent?: LayoutPanel): LayoutPanel | undefined {\n const panels = parent && parent.panels || this.panels;\n\n for (const p of panels) {\n const { items } = p;\n for (const i of items) {\n if (i.key === key) {\n return p;\n }\n }\n const deep = this.findItemPanel(key, p);\n if (deep) {\n return deep;\n }\n }\n\n return undefined;\n }\n\n /**\n * Finds a layout item.\n * @param key the key of the item to find.\n */\n findItem(key: string, parent?: LayoutPanel): ILayoutItem | undefined {\n const panels = parent && parent.panels || this.panels;\n\n for (const p of panels) {\n const { items } = p;\n for (const i of items) {\n if (i.key === key) {\n return i;\n }\n }\n const deep = this.findItem(key, p);\n if (deep) {\n return deep;\n }\n }\n\n return undefined;\n }\n\n * parentItemIterator(key: string, parent?: LayoutPanel): Generator<ILayoutItem> {\n const panels = parent ? parent.panels : this.panels;\n for (const p of panels) {\n const { items } = p;\n for (const i of items) {\n if (i.parent === key) {\n yield i;\n }\n }\n for (const result of this.parentItemIterator(key, p)) {\n yield result;\n }\n }\n }\n\n /**\n * Adds an item to the active panel.\n * \n * @param item The item to add.\n */\n addItem(item: ILayoutItem): void {\n const { activePanel } = this;\n if (!activePanel) {\n throw new Error(`Unable to determine an active panel.`);\n }\n activePanel.addItem(item);\n this.forceUpdateLayout();\n }\n\n /**\n * Removes an item from layout.\n * @param key The key of the item to remove.\n */\n removeItem(key: string): void {\n const panel = this.findItemPanel(key);\n if (panel) {\n panel.removeItem(key);\n }\n }\n\n /**\n * @param key The key of the item to perform a relative operation from.\n * @param dir The direction to which close other items. Default to both directions leaving only the `key` item\n */\n relativeClose(key: string, dir: 'left' | 'right' | 'both' = 'both'): void {\n const panel = this.findItemPanel(key);\n if (panel) {\n panel.relativeClose(key, dir);\n }\n }\n\n /**\n * Requests an update on a layout.\n * \n * @param id The id of the panel. When not set it uses the active panel\n */\n forceUpdateLayout(id?: number): void {\n let key;\n if (id === undefined) {\n const panel = this.activePanel;\n if (!panel) {\n return;\n }\n key = panel.id;\n } else {\n key = id;\n }\n const layout = document.querySelector(`layout-panel[layoutId=\"${key}\"]`) as LayoutPanelElement | undefined;\n if (!layout) {\n return;\n }\n layout.requestUpdate();\n }\n\n /**\n * Moves a tab between panels or inside a panel\n * \n * @param fromPanel The id of the source panel of the item\n * @param toPanel The id of the target panel of the item\n * @param key The key of the item\n * @param toIndex The index to which add the item. Default as the last.\n */\n moveTab(fromPanel: number, toPanel: number, key: string, toIndex?: number): void {\n const singlePanel = fromPanel === toPanel;\n const from = this.findPanel(fromPanel);\n if (!from) {\n throw new Error(`The source layout panel not found.`);\n }\n if (singlePanel) {\n from.moveItem(key, toIndex);\n } else {\n const to = this.findPanel(toPanel);\n if (!to) {\n throw new Error(`The target layout panel not found.`);\n }\n const removed = from.removeItem(key);\n if (!removed) {\n return;\n }\n to.addItem(removed, { index: toIndex })\n }\n this.changed();\n }\n\n /**\n * Finds the item's panel and renames the item.\n * \n * @param key The item's key\n * @param label The new label\n */\n rename(key: string, label: string): void {\n const panel = this.findItemPanel(key);\n if (panel) {\n panel.rename(key, label);\n this.changed();\n this.forceUpdateLayout(panel.id);\n }\n }\n\n /**\n * Requests to dispatch the `nameitem` event so the application can update the name of the tab.\n * \n * @param key The key of the item.\n */\n requestNameUpdate(key: string): void {\n const item = this.findItem(key);\n if (!item) {\n return;\n }\n const before = item.label;\n this.nameItem(item);\n if (before !== item.label) {\n const panel = this.findItemPanel(key);\n if (panel) {\n this.forceUpdateLayout(panel.id);\n }\n }\n }\n\n /**\n * Requests to dispatch the `nameitem` event so the application can update the name of a tab\n * that has a parent.\n * \n * @param parent The key of the parent.\n */\n parentNameUpdate(parent: string): void {\n for (const item of this.parentItemIterator(parent)) {\n const before = item.label;\n this.nameItem(item);\n if (before !== item.label) {\n const panel = this.findItemPanel(item.key);\n if (panel) {\n this.forceUpdateLayout(panel.id);\n }\n }\n }\n }\n\n /**\n * Finds all items in all panels that have specified parent.\n * @param key The key of the parent to search for.\n */\n removeByParent(key: string): void {\n for (const item of this.parentItemIterator(key)) {\n this.removeItem(item.key);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"LayoutManager.js","sourceRoot":"","sources":["../../../src/elements/layout/LayoutManager.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable prefer-destructuring */\n/* eslint-disable max-classes-per-file */\n\nimport { TemplateResult, html } from 'lit';\nimport { Events } from '../../events/Events.js';\n// eslint-disable-next-line import/no-cycle\nimport LayoutPanelElement from './LayoutPanelElement.js';\nimport '../../define/layout/layout-panel.js';\nimport { IconType } from '../../ui/icons/Icons.js';\n\nexport type Direction = 'horizontal' | 'vertical';\nexport type DropRegion = 'center' | 'east' | 'west' | 'north' | 'south';\n\nenum PanelState {\n\tIdle,\n\tBusy\n}\n\nexport interface ILayoutItem {\n /**\n * The kind of opened item\n */\n kind: string;\n /**\n * The key of the opened item\n */\n key: string;\n /**\n * Optional parent information that helps locating this object.\n */\n parent?: string;\n /**\n * The label to render in the tab.\n */\n label: string;\n /**\n * Whether the tab is pinned (cannot be closed or moved).\n */\n pinned?: boolean;\n /**\n * The tab index.\n */\n index?: number;\n /**\n * The icon defined in the internal library to render with the tab.\n */\n icon?: IconType;\n /**\n * A tab that is always present in the layout. The user can't close this tab.\n */\n persistent?: boolean;\n /**\n * A property to be used by the screen to indicate the property is being loaded\n * (from a data store, file, etc).\n */\n loading?: boolean;\n /**\n * Indicates the item has been changed and is out of sync with the data store.\n */\n isDirty?: boolean;\n}\n\nexport interface ILayoutOptions {\n /**\n * The list of DataTransfer types to test against when handling drag and drop.\n * When set it checks whether all types are set on the dragged item.\n * If not set all items are allowed.\n */\n dragTypes?: string[];\n\n /**\n * The local store key to use with `autoStore`,\n */\n storeKey?: string;\n\n /**\n * Uses application's internal events system to store the layout data \n * in the local store, when anything change.\n * This must be set with the `storeKey` property.\n * \n * When this is set it also restores the state during initialization.\n */\n autoStore?: boolean;\n\n /**\n * When set it adds the `overflow` hidden on the container that holds the tab contents.\n */\n constrain?: boolean;\n}\n\nexport interface IPanelSplitOptions {\n layout?: Direction;\n itemsTarget?: 0 | 1;\n}\n\nexport type ItemRenderCallback = (item: ILayoutItem, visible: boolean) => TemplateResult;\n\nexport interface ILayoutPanelState {\n id: number;\n layout: Direction;\n panels?: ILayoutPanelState[];\n items?: ILayoutItem[];\n selected?: string;\n}\n\nexport interface ILayoutState {\n panels: ILayoutPanelState[];\n}\n\nexport interface ILayoutItemAddOptions {\n /**\n * The region to add the item.\n * When other than `center` it splits the panel.\n */\n region?: DropRegion;\n /**\n * The index at which to put the item.\n * By default it is added as a last item.\n */\n index?: number;\n}\n\nlet panelId = 0;\n\nexport class LayoutPanel {\n id = panelId++;\n\n parent?: LayoutPanel;\n \n manager: LayoutManager\n\n layout: Direction = 'horizontal';\n \n panels: LayoutPanel[] = [];\n\n items: ILayoutItem[] = [];\n\n /**\n * The current state of the panel.\n */\n state: PanelState = PanelState.Idle;\n\n /**\n * The item being rendered in the panel.\n */\n selected?: string;\n\n /**\n * The computed size value for each item.\n * The value of `undefined` means \"auto\".\n */\n sizes: string[] = [];\n\n get hasPanels(): boolean {\n return this.panels.length > 0;\n }\n\n get hasItems(): boolean {\n return this.items.length > 0;\n }\n\n static fromSchema(state: ILayoutPanelState, manager: LayoutManager, parent?: LayoutPanel): LayoutPanel {\n const panel = new LayoutPanel(manager, parent);\n panel.id = state.id;\n panel.selected = state.selected;\n panel.layout = state.layout;\n if (Array.isArray(state.items)) {\n panel.items = state.items.map(i => ({ ...i }));\n }\n if (Array.isArray(state.panels)) {\n panel.panels = state.panels.map(i => LayoutPanel.fromSchema(i, manager, panel));\n }\n return panel;\n }\n\n constructor(manager: LayoutManager, parent?: LayoutPanel) {\n this.manager = manager;\n this.state = PanelState.Idle;\n this.parent = parent;\n }\n\n /**\n * @returns Returns a **copy** of the items array sorted by index.\n */\n sortedItems(): ILayoutItem[] {\n const { items } = this;\n return [...items].sort((a, b) => (a.index || 0) - (b.index || 0));\n }\n\n /**\n * @returns True when the panel accepts drop events.\n */\n canDrop(): boolean {\n if (this.hasItems) {\n return true;\n }\n return !this.hasPanels;\n }\n\n nextIndex(): number {\n let result = 0;\n if (!this.items.length) {\n return result;\n }\n this.items.forEach((item) => {\n const { index = 0 } = item;\n if (result < index) {\n result = index;\n }\n });\n return result + 1;\n }\n\n /**\n * Adds an item to the layout.\n * \n * @param item The item to add\n * @param opts Layout adding item options\n * @returns Whether a new item was added to the layout. false when the item is already in the layout panel.\n */\n addItem(item: ILayoutItem, opts: ILayoutItemAddOptions = {}): boolean {\n const { region = 'center' } = opts;\n const hasItem = region === 'center' && this.items.some(i => i.key === item.key);\n if (hasItem) {\n this.selected = item.key;\n this.manager.changed();\n return false;\n }\n\n const hasIndex = typeof opts.index === 'number';\n const index = !hasIndex ? this.nextIndex() : opts.index as number;\n \n if (region === 'center' || (!this.hasItems && !this.hasPanels)) {\n if (hasIndex) {\n this.increaseIndex(index + 1);\n }\n this.manager.nameItem(item);\n this.items.push({ ...item, index });\n this.selected = item.key;\n this.manager.changed();\n return true;\n } \n let panel: LayoutPanel;\n if (region === 'east') {\n panel = this.split({\n layout: 'horizontal',\n itemsTarget: 0,\n })[1];\n } else if (region === 'west') {\n panel = this.split({\n layout: 'horizontal',\n itemsTarget: 1,\n })[0];\n } else if (region === 'south') {\n panel = this.split({\n layout: 'vertical',\n itemsTarget: 0,\n })[1];\n } else {\n panel = this.split({\n layout: 'horizontal',\n itemsTarget: 1,\n })[0];\n }\n panel.addItem(item, { index });\n this.manager.changed();\n return true;\n }\n\n /**\n * Splits this panel into 2 panels.\n * This to be used when the panel has no other panels. Only items are allowed.\n * It produces 2 new panels and moves the items to the first one leaving the other one available.\n */\n split(opts: IPanelSplitOptions = {}): LayoutPanel[] {\n const { layout = 'horizontal', itemsTarget = 0 } = opts;\n if (this.hasPanels) {\n throw new Error(`Invalid state. Panels can be split only when containing items only.`);\n }\n this.layout = layout;\n const { items, selected } = this;\n this.items = [];\n this.selected = undefined;\n const p1 = new LayoutPanel(this.manager, this);\n const p2 = new LayoutPanel(this.manager, this);\n this.panels = [p1, p2];\n this.panels[itemsTarget].items = items;\n this.panels[itemsTarget].selected = selected;\n this.manager.changed();\n return this.panels;\n }\n\n unsplit(): void {\n const { items, selected } = this.panels[0];\n this.panels = [];\n this.items = items;\n this.selected = selected;\n this.manager.changed();\n }\n\n /**\n * Decreases items index by 1 to all items with index at least equal to `fromIndex`.\n * @param fromIndex The minimal index to affect.\n */\n decreaseIndex(fromIndex: number): void {\n for (const item of this.items) {\n const { index = 0 } = item;\n if (index >= fromIndex && index > 0) {\n (item.index as number) -= 1;\n }\n }\n }\n\n /**\n * Increases items index by 1 to all items with index at least equal to `fromIndex`.\n * @param fromIndex The minimal index to affect.\n */\n increaseIndex(fromIndex: number): void {\n for (const item of this.items) {\n const { index = 0 } = item;\n if (index >= fromIndex) {\n (item.index as number) += 1;\n }\n }\n }\n\n /**\n * Removes an item from the layout\n * @param key The key of the item.\n * @returns The removed item, if any.\n */\n removeItem(key: string): ILayoutItem | undefined {\n const index = this.items.findIndex(i => i.key === key);\n if (index < 0) {\n return undefined;\n }\n const removed = this.items[index];\n this.items.splice(index, 1);\n this.decreaseIndex(removed.index || 0);\n\n if (this.items.length === 0) {\n // remove panel\n if (this.parent) {\n this.parent.removePanel(this.id);\n }\n }\n if (this.selected === key) {\n let nextKey: string | undefined;\n if (this.items[index]) {\n nextKey = this.items[index].key;\n } else if (this.items[index - 1]) {\n nextKey = this.items[index - 1].key;\n }\n this.selected = nextKey;\n }\n this.manager.dispatchEvent(new CustomEvent('closetab', {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: key,\n }));\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n return removed;\n }\n\n /**\n * @param key The key of the item to perform a relative operation from.\n * @param dir The direction to which close other items. Default to both directions leaving only the `key` item\n */\n relativeClose(key: string, dir: 'left' | 'right' | 'both' = 'both'): void {\n const index = this.items.findIndex(i => i.key === key);\n if (index < 0) {\n return;\n }\n const item = this.items[index];\n if (dir === 'both') {\n this.items = [item];\n this.selected = item.key;\n } else if (dir === 'left') {\n this.items = this.items.splice(index);\n this.selected = item.key;\n } else {\n this.items = this.items.splice(0, index + 1);\n this.selected = item.key;\n }\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n }\n\n removePanel(id: number): void {\n const index = this.panels.findIndex(p => p.id === id);\n if (index < 0) {\n return;\n }\n this.panels.splice(index, 1);\n if (this.panels.length === 1) {\n this.unsplit();\n }\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n }\n\n /**\n * Moves an item to a new index.\n * \n * @param key The item key\n * @param toIndex The new index. When not set it moves the item to the end.\n */\n moveItem(key: string, toIndex?: number): void {\n const item = this.items.find(i => i.key === key);\n if (!item) {\n return;\n }\n const hasIndex = typeof toIndex === 'number';\n if (hasIndex && item.index === toIndex) {\n return;\n }\n let hasTargetAtTarget = false;\n if (hasIndex) {\n hasTargetAtTarget = !!this.items[toIndex];\n }\n if (item.index !== undefined) {\n this.decreaseIndex(item.index);\n }\n const finalIndex = hasIndex ? toIndex as number : this.nextIndex();\n if (hasTargetAtTarget) {\n this.increaseIndex(finalIndex);\n }\n item.index = finalIndex;\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n }\n\n rename(key: string, label: string): void {\n const item = this.items.find(i => i.key === key);\n if (!item) {\n return;\n }\n item.label = label;\n this.manager.changed();\n this.manager.forceUpdateLayout(this.id);\n }\n\n toJSON(): ILayoutPanelState {\n const result:ILayoutPanelState = {\n id: this.id,\n layout: this.layout,\n };\n if (this.items.length) {\n result.items = this.items.map(i => ({ ...i }));\n }\n if (this.panels) {\n result.panels = this.panels.map(i => i.toJSON());\n }\n if (this.selected) {\n result.selected = this.selected;\n }\n return result;\n }\n\n panelTemplate(panel: LayoutPanel, itemCallback: ItemRenderCallback): TemplateResult | undefined {\n const { layout, panels, items, selected } = panel;\n const { manager } = this;\n const { dragTypes, constrain } = manager.opts;\n let content: (TemplateResult | undefined)[];\n if (panels.length) {\n content = panels.map(p => this.panelTemplate(p, itemCallback));\n } else {\n content = items.map(p => this.itemTemplate(p, p.key === selected, itemCallback));\n }\n const valid = content.filter(i => !!i);\n if (!valid.length) {\n return undefined;\n }\n return html`\n <layout-panel \n layout=\"${layout}\" \n .dragTypes=\"${dragTypes}\" \n .panel=\"${panel}\"\n .layoutId=\"${panel.id}\"\n ?constrain=\"${constrain}\"\n >\n ${content}\n </layout-panel>\n `;\n }\n\n itemTemplate(item: ILayoutItem, visible: boolean, itemCallback: ItemRenderCallback): TemplateResult {\n return itemCallback(item, visible);\n }\n\n render(itemCallback: ItemRenderCallback): TemplateResult | undefined {\n return this.panelTemplate(this as LayoutPanel, itemCallback);\n }\n}\n\n/**\n * Layout manager for API Client apps.\n * \n * Supports:\n * - layout splitting depending on the selected region (east, west, north, south)\n * - drag and drop of items into the layout\n * - auto storing and restoring layout state from the application local storage.\n * - adding items to the last focused panel\n * \n * Limitations\n * - the rendered content has to be focusable (tabindex must be set) in order to detect active panel\n */\nexport class LayoutManager extends EventTarget {\n opts: ILayoutOptions;\n\n panels: LayoutPanel[] = [];\n\n protected isDirty = false;\n\n protected storing = false;\n\n private _activePanel?: LayoutPanel;\n\n /**\n * An active panel\n */\n get activePanel(): LayoutPanel | undefined {\n if (!this._activePanel) {\n this._activePanel = this.findFirstItemsPanel();\n }\n return this._activePanel;\n }\n\n constructor(opts: ILayoutOptions = {}) {\n super();\n this.opts = opts;\n }\n\n /**\n * @param itemCallback The callback called when rendering an item in layout view.\n * @returns The template for the page layout.\n */\n render(itemCallback: ItemRenderCallback): TemplateResult[] {\n const result: TemplateResult[] = [];\n this.panels.forEach(p => {\n const content = p.render(itemCallback);\n if (content) {\n result.push(content);\n }\n });\n\n return result;\n }\n\n /**\n * Initializes the manager.\n * \n * @param restore Previously stored layout state, if any.\n */\n async initialize(restore?: ILayoutState): Promise<void> {\n if (restore) {\n this.restore(restore);\n } else if (this.opts.storeKey && this.opts.autoStore) {\n await this.restoreLayout(this.opts.storeKey);\n } \n \n if (!this.panels.length) {\n this.panels.push(new LayoutPanel(this));\n }\n\n document.body.addEventListener('focusin', this._focusInHandler.bind(this));\n }\n\n protected restore(restore: ILayoutState): void {\n if (Array.isArray(restore.panels)) {\n this.panels = restore.panels.map(i => LayoutPanel.fromSchema(i, this));\n }\n }\n\n /**\n * Informs the screen that something has changed\n */\n changed(): void {\n this.dispatchEvent(new Event('change'));\n this.autoStore();\n }\n\n /**\n * Dispatches the `nameitem` event.\n * The detail object has the item to be added to the items.\n * The event handler can manipulate properties of the item, except for the index which will be set by the manager.\n * \n * @param item The item to notify.\n */\n nameItem(item: ILayoutItem): void {\n this.dispatchEvent(new CustomEvent('nameitem', {\n detail: item,\n }));\n }\n\n /**\n * Serializes the layout state to a JSON safe object.\n * This is automatically called when passing this object to `JSON.stringify()`.\n */\n toJSON(): ILayoutState {\n const result: ILayoutState = {\n panels: this.panels.map(i => i.toJSON()),\n };\n return result;\n }\n\n protected autoStore(): void {\n const { autoStore, storeKey } = this.opts;\n if (!autoStore || !storeKey) {\n return;\n }\n this.storeLayout(storeKey);\n }\n\n protected async storeLayout(key: string): Promise<void> {\n if (this.storing) {\n this.isDirty = true;\n return;\n }\n this.storing = true;\n try {\n await Events.Config.Local.set(key, this.toJSON());\n } finally {\n this.storing = false;\n }\n if (this.isDirty) {\n this.isDirty = false;\n await this.storeLayout(key);\n }\n }\n\n protected async restoreLayout(key: string): Promise<void> {\n try {\n const data = await Events.Config.Local.get(key) as ILayoutState;\n if (data) {\n this.restore(data);\n }\n } catch (e) {\n // \n }\n }\n\n protected _focusInHandler(e: Event): void {\n const layout = this.findLayout(e);\n if (layout) {\n const id = Number(layout.dataset.panel);\n const { activePanel } = this;\n if (activePanel && activePanel.id === id) {\n return;\n }\n this._activePanel = this.findPanel(id);\n }\n }\n\n protected findLayout(e: Event, last=true): LayoutPanelElement | undefined {\n const path = e.composedPath();\n if (!last) {\n path.reverse();\n }\n while (path.length) {\n const node = path.shift() as Element;\n if (node.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n if (node.localName === 'layout-panel') {\n return node as LayoutPanelElement;\n }\n }\n return undefined;\n }\n\n /**\n * Finds a panel by id.\n * \n * @param id The id of the panel.\n * @param parent THe parent panel to start searching from\n * @returns The panel if found\n */\n findPanel(id: number, parent?: LayoutPanel): LayoutPanel | undefined {\n const panels = parent && parent.panels || this.panels;\n\n for (const p of panels) {\n if (p.id === id) {\n return p;\n }\n const child = this.findPanel(id, p);\n if (child) {\n return child;\n }\n }\n\n return undefined;\n }\n\n /**\n * Finds a first panel that can accept items.\n * This will be a panel that has no other panels.\n */\n findFirstItemsPanel(parent?: LayoutPanel): LayoutPanel | undefined {\n const panels = parent && parent.panels || this.panels;\n\n for (const p of panels) {\n if (!p.hasPanels) {\n return p;\n }\n const child = this.findFirstItemsPanel(p);\n if (child) {\n return child;\n }\n }\n\n return undefined;\n }\n\n /**\n * Finds a panel for the item.\n * @param key the key of the item to find.\n */\n findItemPanel(key: string, parent?: LayoutPanel): LayoutPanel | undefined {\n const panels = parent && parent.panels || this.panels;\n\n for (const p of panels) {\n const { items } = p;\n for (const i of items) {\n if (i.key === key) {\n return p;\n }\n }\n const deep = this.findItemPanel(key, p);\n if (deep) {\n return deep;\n }\n }\n\n return undefined;\n }\n\n /**\n * Finds a layout item.\n * @param key the key of the item to find.\n */\n findItem(key: string, parent?: LayoutPanel): ILayoutItem | undefined {\n const panels = parent && parent.panels || this.panels;\n\n for (const p of panels) {\n const { items } = p;\n for (const i of items) {\n if (i.key === key) {\n return i;\n }\n }\n const deep = this.findItem(key, p);\n if (deep) {\n return deep;\n }\n }\n\n return undefined;\n }\n\n * parentItemIterator(key: string, parent?: LayoutPanel): Generator<ILayoutItem> {\n const panels = parent ? parent.panels : this.panels;\n for (const p of panels) {\n const { items } = p;\n for (const i of items) {\n if (i.parent === key) {\n yield i;\n }\n }\n for (const result of this.parentItemIterator(key, p)) {\n yield result;\n }\n }\n }\n\n /**\n * Adds an item to the active panel.\n * \n * @param item The item to add.\n */\n addItem(item: ILayoutItem): void {\n const { activePanel } = this;\n if (!activePanel) {\n throw new Error(`Unable to determine an active panel.`);\n }\n activePanel.addItem(item);\n this.forceUpdateLayout();\n }\n\n /**\n * Removes an item from layout.\n * @param key The key of the item to remove.\n */\n removeItem(key: string): void {\n const panel = this.findItemPanel(key);\n if (panel) {\n panel.removeItem(key);\n }\n }\n\n /**\n * @param key The key of the item to perform a relative operation from.\n * @param dir The direction to which close other items. Default to both directions leaving only the `key` item\n */\n relativeClose(key: string, dir: 'left' | 'right' | 'both' = 'both'): void {\n const panel = this.findItemPanel(key);\n if (panel) {\n panel.relativeClose(key, dir);\n }\n }\n\n /**\n * Requests an update on a layout.\n * \n * @param id The id of the panel. When not set it uses the active panel\n */\n forceUpdateLayout(id?: number): void {\n let key;\n if (id === undefined) {\n const panel = this.activePanel;\n if (!panel) {\n return;\n }\n key = panel.id;\n } else {\n key = id;\n }\n const layout = document.querySelector(`layout-panel[layoutId=\"${key}\"]`) as LayoutPanelElement | undefined;\n if (!layout) {\n return;\n }\n layout.requestUpdate();\n }\n\n /**\n * Moves a tab between panels or inside a panel\n * \n * @param fromPanel The id of the source panel of the item\n * @param toPanel The id of the target panel of the item\n * @param key The key of the item\n * @param toIndex The index to which add the item. Default as the last.\n */\n moveTab(fromPanel: number, toPanel: number, key: string, toIndex?: number): void {\n const singlePanel = fromPanel === toPanel;\n const from = this.findPanel(fromPanel);\n if (!from) {\n throw new Error(`The source layout panel not found.`);\n }\n if (singlePanel) {\n from.moveItem(key, toIndex);\n } else {\n const to = this.findPanel(toPanel);\n if (!to) {\n throw new Error(`The target layout panel not found.`);\n }\n const removed = from.removeItem(key);\n if (!removed) {\n return;\n }\n to.addItem(removed, { index: toIndex })\n }\n this.changed();\n }\n\n /**\n * Finds the item's panel and renames the item.\n * \n * @param key The item's key\n * @param label The new label\n */\n rename(key: string, label: string): void {\n const panel = this.findItemPanel(key);\n if (panel) {\n panel.rename(key, label);\n this.changed();\n this.forceUpdateLayout(panel.id);\n }\n }\n\n /**\n * Requests to dispatch the `nameitem` event so the application can update the name of the tab.\n * \n * @param key The key of the item.\n */\n requestNameUpdate(key: string): void {\n const item = this.findItem(key);\n if (!item) {\n return;\n }\n const before = item.label;\n this.nameItem(item);\n if (before !== item.label) {\n const panel = this.findItemPanel(key);\n if (panel) {\n this.forceUpdateLayout(panel.id);\n }\n }\n }\n\n /**\n * Requests to dispatch the `nameitem` event so the application can update the name of a tab\n * that has a parent.\n * \n * @param parent The key of the parent.\n */\n parentNameUpdate(parent: string): void {\n for (const item of this.parentItemIterator(parent)) {\n const before = item.label;\n this.nameItem(item);\n if (before !== item.label) {\n const panel = this.findItemPanel(item.key);\n if (panel) {\n this.forceUpdateLayout(panel.id);\n }\n }\n }\n }\n\n /**\n * Finds all items in all panels that have specified parent.\n * @param key The key of the parent to search for.\n */\n removeByParent(key: string): void {\n for (const item of this.parentItemIterator(key)) {\n this.removeItem(item.key);\n }\n }\n}\n"]}
|
|
@@ -179,31 +179,25 @@ export default class LayoutPanelElement extends LitElement {
|
|
|
179
179
|
}
|
|
180
180
|
`];
|
|
181
181
|
}
|
|
182
|
-
/**
|
|
183
|
-
* @attribute
|
|
184
|
-
*/
|
|
185
|
-
layout = 'horizontal';
|
|
186
|
-
/**
|
|
187
|
-
* @attribute
|
|
188
|
-
*/
|
|
189
|
-
layoutId;
|
|
190
|
-
dragTypes;
|
|
191
|
-
/**
|
|
192
|
-
* Whether dragging is occurring over the element
|
|
193
|
-
*/
|
|
194
|
-
inDrag = false;
|
|
195
|
-
/**
|
|
196
|
-
* The region the drag is leaning to.
|
|
197
|
-
*/
|
|
198
|
-
dragRegion = 'center';
|
|
199
|
-
panel;
|
|
200
|
-
/**
|
|
201
|
-
* When set it adds the `overflow` hidden on the container that holds the tab contents.
|
|
202
|
-
* @attribute
|
|
203
|
-
*/
|
|
204
|
-
constrain = false;
|
|
205
182
|
constructor() {
|
|
206
183
|
super();
|
|
184
|
+
/**
|
|
185
|
+
* @attribute
|
|
186
|
+
*/
|
|
187
|
+
this.layout = 'horizontal';
|
|
188
|
+
/**
|
|
189
|
+
* Whether dragging is occurring over the element
|
|
190
|
+
*/
|
|
191
|
+
this.inDrag = false;
|
|
192
|
+
/**
|
|
193
|
+
* The region the drag is leaning to.
|
|
194
|
+
*/
|
|
195
|
+
this.dragRegion = 'center';
|
|
196
|
+
/**
|
|
197
|
+
* When set it adds the `overflow` hidden on the container that holds the tab contents.
|
|
198
|
+
* @attribute
|
|
199
|
+
*/
|
|
200
|
+
this.constrain = false;
|
|
207
201
|
this._dragEnterHandler = this._dragEnterHandler.bind(this);
|
|
208
202
|
this._dragOverHandler = this._dragOverHandler.bind(this);
|
|
209
203
|
this._dropHandler = this._dropHandler.bind(this);
|