@api-client/ui 0.0.4 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/demo/elements/http/http-assertions.html +3 -0
- package/demo/elements/http/http-assertions.ts +1 -1
- package/demo/elements/http/http-flows.html +23 -0
- package/demo/elements/http/http-flows.ts +92 -0
- package/demo/elements/http/index.html +3 -0
- package/demo/pages/http-project/main.ts +5 -6
- package/dist/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/delete-cookie-action-dialog.d.ts +10 -0
- package/dist/define/dialog/delete-cookie-action-dialog.d.ts.map +1 -0
- package/dist/define/dialog/delete-cookie-action-dialog.js +14 -0
- package/dist/define/dialog/delete-cookie-action-dialog.js.map +1 -0
- package/dist/define/dialog/rename-dialog.js +1 -1
- package/dist/define/dialog/rename-dialog.js.map +1 -1
- package/dist/define/dialog/set-cookie-action-dialog.d.ts +10 -0
- package/dist/define/dialog/set-cookie-action-dialog.d.ts.map +1 -0
- package/dist/define/dialog/set-cookie-action-dialog.js +14 -0
- package/dist/define/dialog/set-cookie-action-dialog.js.map +1 -0
- package/dist/define/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.d.ts +1 -1
- package/dist/define/http/http-assertions.d.ts.map +1 -1
- package/dist/define/http/http-assertions.js +3 -3
- package/dist/define/http/http-assertions.js.map +1 -1
- package/dist/define/http/http-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-flows.d.ts +10 -0
- package/dist/define/http/http-flows.d.ts.map +1 -0
- package/dist/define/http/http-flows.js +13 -0
- package/dist/define/http/http-flows.js.map +1 -0
- package/dist/define/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-divider.d.ts +4 -1
- package/dist/define/ui/ui-divider.d.ts.map +1 -1
- package/dist/define/ui/ui-divider.js +11 -2
- package/dist/define/ui/ui-divider.js.map +1 -1
- package/dist/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.d.ts +4 -0
- package/dist/elements/ApiElement.d.ts.map +1 -1
- package/dist/elements/ApiElement.js +6 -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 +1 -33
- 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.d.ts.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.js +2 -77
- 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 +1 -79
- 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.d.ts +0 -1
- package/dist/elements/amf/ApiRequestEditor.element.d.ts.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.js +0 -121
- 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.d.ts +2 -1
- package/dist/elements/authorization/ui/Authorization.d.ts.map +1 -1
- package/dist/elements/authorization/ui/Authorization.js +18 -35
- 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/DeleteCookieAction.element.d.ts +20 -0
- package/dist/elements/dialog/DeleteCookieAction.element.d.ts.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.element.js +93 -0
- package/dist/elements/dialog/DeleteCookieAction.element.js.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.d.ts +3 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.d.ts.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.js +13 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.js.map +1 -0
- package/dist/elements/dialog/Rename.d.ts +7 -6
- package/dist/elements/dialog/Rename.d.ts.map +1 -1
- package/dist/elements/dialog/Rename.js +7 -12
- package/dist/elements/dialog/Rename.js.map +1 -1
- package/dist/elements/dialog/SetCookieAction.element.d.ts +22 -0
- package/dist/elements/dialog/SetCookieAction.element.d.ts.map +1 -0
- package/dist/elements/dialog/SetCookieAction.element.js +173 -0
- package/dist/elements/dialog/SetCookieAction.element.js.map +1 -0
- package/dist/elements/environment/EnvironmentEditor.d.ts +24 -3
- package/dist/elements/environment/EnvironmentEditor.d.ts.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.js +73 -30
- package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.styles.d.ts.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.styles.js +5 -0
- package/dist/elements/environment/EnvironmentEditor.styles.js.map +1 -1
- package/dist/elements/environment/ServerEditor.d.ts +3 -3
- package/dist/elements/environment/ServerEditor.d.ts.map +1 -1
- package/dist/elements/environment/ServerEditor.js +10 -51
- package/dist/elements/environment/ServerEditor.js.map +1 -1
- package/dist/elements/environment/VariablesEditor.d.ts +0 -1
- package/dist/elements/environment/VariablesEditor.d.ts.map +1 -1
- package/dist/elements/environment/VariablesEditor.js +10 -18
- 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/Prism.styles.d.ts.map +1 -1
- package/dist/elements/highlight/Prism.styles.js +12 -5
- package/dist/elements/highlight/Prism.styles.js.map +1 -1
- package/dist/elements/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.d.ts +0 -4
- package/dist/elements/http/BodyEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyEditor.js +31 -49
- package/dist/elements/http/BodyEditor.js.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.d.ts +3 -16
- package/dist/elements/http/BodyMultipartEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.js +20 -37
- package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
- package/dist/elements/http/BodyTextEditor.d.ts +0 -1
- package/dist/elements/http/BodyTextEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyTextEditor.js +2 -18
- package/dist/elements/http/BodyTextEditor.js.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.d.ts +3 -3
- package/dist/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.js +23 -26
- package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
- package/dist/elements/http/HeadersForm.d.ts +0 -4
- package/dist/elements/http/HeadersForm.d.ts.map +1 -1
- package/dist/elements/http/HeadersForm.js +16 -23
- package/dist/elements/http/HeadersForm.js.map +1 -1
- package/dist/elements/http/HttpAssertions.element.d.ts +55 -0
- package/dist/elements/http/HttpAssertions.element.d.ts.map +1 -0
- package/dist/elements/http/HttpAssertions.element.js +264 -0
- package/dist/elements/http/HttpAssertions.element.js.map +1 -0
- package/dist/elements/http/HttpAssertions.styles.d.ts.map +1 -1
- package/dist/elements/http/HttpAssertions.styles.js +7 -156
- package/dist/elements/http/HttpAssertions.styles.js.map +1 -1
- package/dist/elements/http/HttpFlows.common.d.ts +3 -0
- package/dist/elements/http/HttpFlows.common.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.common.js +181 -0
- package/dist/elements/http/HttpFlows.common.js.map +1 -0
- package/dist/elements/http/HttpFlows.element.d.ts +97 -0
- package/dist/elements/http/HttpFlows.element.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.element.js +684 -0
- package/dist/elements/http/HttpFlows.element.js.map +1 -0
- package/dist/elements/http/HttpFlows.styles.d.ts +3 -0
- package/dist/elements/http/HttpFlows.styles.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.styles.js +28 -0
- package/dist/elements/http/HttpFlows.styles.js.map +1 -0
- package/dist/elements/http/HttpFlowsUi.d.ts +172 -0
- package/dist/elements/http/HttpFlowsUi.d.ts.map +1 -0
- package/dist/elements/http/HttpFlowsUi.js +1256 -0
- package/dist/elements/http/HttpFlowsUi.js.map +1 -0
- package/dist/elements/http/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.d.ts +0 -1
- package/dist/elements/http/RequestConfigElement.d.ts.map +1 -1
- package/dist/elements/http/RequestConfigElement.js +15 -15
- package/dist/elements/http/RequestConfigElement.js.map +1 -1
- package/dist/elements/http/RequestEditor.d.ts +10 -10
- package/dist/elements/http/RequestEditor.d.ts.map +1 -1
- package/dist/elements/http/RequestEditor.js +116 -111
- 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.d.ts +3 -3
- package/dist/elements/http/UrlInput.d.ts.map +1 -1
- package/dist/elements/http/UrlInput.js +17 -27
- package/dist/elements/http/UrlInput.js.map +1 -1
- package/dist/elements/http/UrlParamsForm.d.ts +0 -1
- package/dist/elements/http/UrlParamsForm.d.ts.map +1 -1
- package/dist/elements/http/UrlParamsForm.js +16 -16
- 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/layout/SplitView.styles.d.ts.map +1 -1
- package/dist/elements/layout/SplitView.styles.js +1 -0
- package/dist/elements/layout/SplitView.styles.js.map +1 -1
- package/dist/elements/navigation/AppNavigationElement.js +8 -47
- package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
- package/dist/elements/navigation/AppNavigationItem.styles.d.ts.map +1 -1
- package/dist/elements/navigation/AppNavigationItem.styles.js +2 -0
- package/dist/elements/navigation/AppNavigationItem.styles.js.map +1 -1
- package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
- package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
- package/dist/elements/project/HttpProjectRequest.d.ts +2 -1
- package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
- package/dist/elements/project/HttpProjectRequest.js +14 -43
- 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.d.ts +0 -1
- package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
- package/dist/elements/project/ProjectRunner.js +3 -51
- package/dist/elements/project/ProjectRunner.js.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.d.ts +0 -1
- package/dist/elements/schema-design/AssociationFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.js +2 -18
- package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.d.ts +2 -2
- package/dist/elements/schema-design/DataEntityEditorElement.d.ts.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.js +5 -27
- 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.d.ts +0 -1
- package/dist/elements/schema-design/DataSchemaDocument.d.ts.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.js +4 -43
- package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.d.ts +0 -1
- package/dist/elements/schema-design/EntityFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.js +4 -25
- package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.d.ts +1 -2
- package/dist/elements/schema-design/PropertyFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.js +8 -23
- 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.d.ts +1 -1
- package/dist/pages/ApplicationScreen.d.ts.map +1 -1
- package/dist/pages/ApplicationScreen.js +35 -56
- 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/ApiClient.styles.d.ts.map +1 -1
- package/dist/pages/api-client/ApiClient.styles.js +22 -3
- package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.d.ts +2 -0
- package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.js +23 -9
- package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.d.ts.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.js +25 -39
- package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.styles.d.ts.map +1 -1
- package/dist/pages/api-client/StoreConfig.styles.js +5 -0
- package/dist/pages/api-client/StoreConfig.styles.js.map +1 -1
- package/dist/pages/api-client/Telemetry.screen.js +1 -2
- package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
- package/dist/pages/api-client/pages/Files.page.d.ts +1 -0
- package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
- package/dist/pages/api-client/pages/Files.page.js +8 -28
- 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.d.ts +0 -8
- package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.js +39 -50
- package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
- package/dist/pages/http-project/types.d.ts +8 -6
- package/dist/pages/http-project/types.d.ts.map +1 -1
- package/dist/pages/http-project/types.js.map +1 -1
- package/dist/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/styles/m3/surface.module.d.ts.map +1 -1
- package/dist/styles/m3/surface.module.js +11 -27
- package/dist/styles/m3/surface.module.js.map +1 -1
- package/dist/ui/UiElement.d.ts +4 -0
- package/dist/ui/UiElement.d.ts.map +1 -1
- package/dist/ui/UiElement.js +10 -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/SegmentedButton.styles.d.ts.map +1 -1
- package/dist/ui/button/SegmentedButton.styles.js +3 -1
- package/dist/ui/button/SegmentedButton.styles.js.map +1 -1
- package/dist/ui/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.d.ts +3 -0
- package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
- package/dist/ui/dialog/UiDialog.js +17 -38
- package/dist/ui/dialog/UiDialog.js.map +1 -1
- package/dist/ui/effects/ripple.d.ts.map +1 -1
- package/dist/ui/effects/ripple.js +25 -19
- 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/Icons.d.ts +3 -2
- package/dist/ui/icons/Icons.d.ts.map +1 -1
- package/dist/ui/icons/Icons.js +2 -1
- package/dist/ui/icons/Icons.js.map +1 -1
- package/dist/ui/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.d.ts +1 -1
- package/dist/ui/input/CheckedElement.d.ts.map +1 -1
- package/dist/ui/input/CheckedElement.js +5 -16
- package/dist/ui/input/CheckedElement.js.map +1 -1
- package/dist/ui/input/Input.js +170 -235
- 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.d.ts → UiDivider.element.d.ts} +6 -6
- package/dist/ui/list/UiDivider.element.d.ts.map +1 -0
- package/dist/ui/list/UiDivider.element.js +39 -0
- package/dist/ui/list/UiDivider.element.js.map +1 -0
- package/dist/ui/list/UiDivider.styles.d.ts +3 -0
- package/dist/ui/list/UiDivider.styles.d.ts.map +1 -0
- package/dist/ui/list/UiDivider.styles.js +49 -0
- package/dist/ui/list/UiDivider.styles.js.map +1 -0
- package/dist/ui/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.d.ts +13 -1
- package/dist/ui/tabs/UiTabs.d.ts.map +1 -1
- package/dist/ui/tabs/UiTabs.js +62 -47
- 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/src/define/dialog/delete-cookie-action-dialog.ts +16 -0
- package/src/define/dialog/set-cookie-action-dialog.ts +16 -0
- package/src/define/http/http-assertions.ts +3 -3
- package/src/define/http/http-flows.ts +15 -0
- package/src/define/ui/ui-divider.ts +7 -2
- package/src/elements/ApiElement.ts +7 -0
- package/src/elements/amf/ApiAuthorizationEditor.element.ts +1 -1
- package/src/elements/amf/ApiOperationDocument.element.ts +2 -1
- package/src/elements/amf/ApiRequest.element.ts +1 -1
- package/src/elements/amf/ApiRequestEditor.element.ts +0 -4
- package/src/elements/authorization/ui/Authorization.ts +3 -5
- package/src/elements/dialog/DeleteCookieAction.element.ts +100 -0
- package/src/elements/dialog/DeleteCookieAction.styles.ts +14 -0
- package/src/elements/dialog/Rename.ts +8 -7
- package/src/elements/dialog/SetCookieAction.element.ts +183 -0
- package/src/elements/environment/EnvironmentEditor.styles.ts +5 -0
- package/src/elements/environment/EnvironmentEditor.ts +81 -22
- package/src/elements/environment/ServerEditor.ts +4 -8
- package/src/elements/environment/VariablesEditor.ts +3 -7
- package/src/elements/highlight/Prism.styles.ts +12 -5
- package/src/elements/http/BodyEditor.ts +10 -17
- package/src/elements/http/BodyMultipartEditor.ts +3 -20
- package/src/elements/http/BodyTextEditor.ts +0 -4
- package/src/elements/http/BodyUrlEncodedEditor.ts +5 -8
- package/src/elements/http/HeadersForm.ts +2 -9
- package/src/elements/http/HttpAssertions.element.ts +286 -0
- package/src/elements/http/HttpAssertions.styles.ts +7 -156
- package/src/elements/http/HttpFlows.common.ts +181 -0
- package/src/elements/http/HttpFlows.element.ts +722 -0
- package/src/elements/http/HttpFlows.styles.ts +29 -0
- package/src/elements/http/HttpFlowsUi.ts +1327 -0
- package/src/elements/http/RequestConfigElement.ts +10 -14
- package/src/elements/http/RequestEditor.ts +77 -35
- package/src/elements/http/UrlInput.ts +6 -6
- package/src/elements/http/UrlParamsForm.ts +2 -6
- package/src/elements/layout/SplitView.styles.ts +1 -0
- package/src/elements/navigation/AppNavigationItem.styles.ts +2 -0
- package/src/elements/project/HttpProjectRequest.ts +16 -5
- package/src/elements/project/ProjectRunner.ts +3 -7
- package/src/elements/schema-design/AssociationFormElement.ts +4 -8
- package/src/elements/schema-design/DataEntityEditorElement.ts +8 -8
- package/src/elements/schema-design/DataSchemaDocument.ts +5 -9
- package/src/elements/schema-design/EntityFormElement.ts +6 -10
- package/src/elements/schema-design/PropertyFormElement.ts +11 -15
- package/src/pages/ApplicationScreen.ts +1 -1
- package/src/pages/api-client/ApiClient.styles.ts +22 -3
- package/src/pages/api-client/Authenticate.screen.ts +19 -3
- package/src/pages/api-client/StoreConfig.screen.ts +4 -2
- package/src/pages/api-client/StoreConfig.styles.ts +5 -0
- package/src/pages/api-client/pages/Files.page.ts +2 -1
- package/src/pages/http-project/HttpProject.screen.ts +14 -26
- package/src/pages/http-project/types.ts +8 -6
- package/src/styles/m3/surface.module.ts +11 -27
- package/src/styles/m3/theme.css +36 -0
- package/src/styles/m3/tokens.css +11 -0
- package/src/ui/UiElement.ts +7 -0
- package/src/ui/button/SegmentedButton.styles.ts +3 -1
- package/src/ui/dialog/UiDialog.ts +3 -0
- package/src/ui/effects/ripple.ts +6 -1
- package/src/ui/icons/Icons.ts +3 -2
- package/src/ui/input/CheckedElement.ts +3 -3
- package/src/ui/input/Input.ts +1 -1
- package/src/ui/list/UiDivider.element.ts +41 -0
- package/src/ui/list/UiDivider.styles.ts +49 -0
- package/src/ui/tabs/UiTabs.ts +55 -13
- package/test/amf/authorization/OAuth2Method.test.ts +1 -1
- package/test/elements/http/HttpAssertions.test.ts +5 -6
- package/test/elements/http/HttpFlows.test.ts +485 -0
- package/tsconfig.json +2 -2
- package/dist/elements/http/HttpAssertions.d.ts +0 -114
- package/dist/elements/http/HttpAssertions.d.ts.map +0 -1
- package/dist/elements/http/HttpAssertions.js +0 -1144
- package/dist/elements/http/HttpAssertions.js.map +0 -1
- package/dist/elements/http/internals.d.ts +0 -150
- package/dist/elements/http/internals.d.ts.map +0 -1
- package/dist/elements/http/internals.js +0 -150
- package/dist/elements/http/internals.js.map +0 -1
- package/dist/ui/list/DividerElement.d.ts.map +0 -1
- package/dist/ui/list/DividerElement.js +0 -87
- package/dist/ui/list/DividerElement.js.map +0 -1
- package/src/elements/http/HttpAssertions.ts +0 -1187
- package/src/elements/http/internals.ts +0 -151
- package/src/http-client/docs/Files.md +0 -28
- package/src/ui/list/DividerElement.ts +0 -84
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssociationAnchors.js","sourceRoot":"","sources":["../../../src/visualization/lib/AssociationAnchors.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\nimport { getRelativeClickPoint } from './PositionUtils.js';\nimport { anchorToPoint } from './AnchorUtils.js';\nimport { LineSketch } from './LineSketch.js';\nimport VizWorkspaceElement from '../elements/VizWorkspaceElement.js';\nimport { Point } from './Point.js';\n\nconst SvgNS = 'http://www.w3.org/2000/svg';\n\nexport const connectedValue = Symbol('connectedValue');\nexport const mouseDownHandler = Symbol('mouseDownHandler');\nexport const mouseMoveHandler = Symbol('mouseMoveHandler');\nexport const mouseUpHandler = Symbol('mouseUpHandler');\nexport const keydownHandler = Symbol('keydownHandler');\n\nexport interface EdgeCreateInfo {\n /** \n * The slot name of the source object.\n */\n slot: string;\n /** \n * The workspace coordinates of the staring point\n */\n point: Point;\n /** \n * The domain element that is the source of the association.\n */\n source: HTMLElement;\n}\n\nexport interface IEdgeUpdateInfo {\n /**\n * The name of the tip that is being dragged.\n * It's either `start` or `end`.\n */\n direction: string;\n /**\n * The association domain id.\n */\n id: string;\n /**\n * The start point of the line\n */\n sp: Point;\n /**\n * The end point of the line\n */\n ep: Point;\n}\n\n/**\n * A helper that allows to manually draw a line from one visualization object to another.\n * The visualization object has to have the `data-association-slots` attribute set on the element\n * and the mouse event target having the `data-association-slot` attribute with the index of the slot.\n * \n * The association line can be drawn to another object that has both attributes.\n * \n * After the user finish a DOM event is dispatched from the visualization workspace.\n */\nexport class AssociationAnchors {\n [connectedValue] = false\n\n /** \n * Whether a line is being constructed.\n */\n drawing = false;\n\n /** \n * A reference to the currently injected SVG element.\n */\n lineElement?: SVGElement;\n\n /** \n * Whether an association position is being updated. \n * In such case it dispatches different event at the end.\n */\n updating: boolean = false;\n\n /** \n * The processor used to draw lines\n */\n lineProcessor = new LineSketch();\n\n /** \n * Set when a new association is being created\n */\n createInfo?: EdgeCreateInfo;\n\n /** \n * Set when an association update is performed\n */\n updateInfo?: IEdgeUpdateInfo;\n\n\n constructor(public workspace: VizWorkspaceElement) {\n this.workspace = workspace;\n this[mouseDownHandler] = this[mouseDownHandler].bind(this);\n this[mouseMoveHandler] = this[mouseMoveHandler].bind(this);\n this[mouseUpHandler] = this[mouseUpHandler].bind(this);\n this[keydownHandler] = this[keydownHandler].bind(this);\n }\n\n /**\n * Starts listening for the user events\n */\n connect(): void {\n if (this[connectedValue]) {\n return;\n }\n this[connectedValue] = true;\n const { workspace } = this;\n // const { canvas } = workspace;\n workspace.addEventListener('mousedown', this[mouseDownHandler], true);\n }\n\n /**\n * Stops listening for the user events\n */\n disconnect(): void {\n this[connectedValue] = false;\n const { workspace } = this;\n // const { canvas } = workspace;\n workspace.removeEventListener('mousedown', this[mouseDownHandler], true);\n }\n\n findSlotParent(path: Node[]): Element {\n const element = path.find((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n const typed = node as Element;\n return typed.hasAttribute('data-association-slots');\n });\n return element as Element;\n }\n\n [mouseDownHandler](e: MouseEvent): void {\n if (e.button !== 0) {\n return;\n }\n let node = e.target as HTMLElement\n if (!e.composed || node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const [source] = e.composedPath() as HTMLElement[];\n if (node === source) {\n const parent = this.findSlotParent(e.composedPath() as Node[]);\n if (!parent) {\n return;\n }\n node = parent as HTMLElement;\n }\n const { dataset } = source;\n const isSvgDraggable = source.classList && source.classList.contains('association-draggable');\n if (isSvgDraggable) {\n e.preventDefault();\n e.stopPropagation();\n this.startUpdate(dataset.key!, dataset.dir!);\n return;\n }\n if (!node.hasAttribute('data-association-slots')) {\n return;\n }\n if (source.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n if (!dataset.associationSlot) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n const startPoint = anchorToPoint(source, this.workspace);\n this.start(node, dataset.associationSlot, startPoint);\n }\n\n [mouseMoveHandler](e: MouseEvent): void {\n if (!this.drawing) {\n return;\n }\n const { clientX, clientY } = e;\n const pos = getRelativeClickPoint(clientX, clientY, this.workspace);\n this.updateLinePosition(pos);\n }\n\n [mouseUpHandler](e: MouseEvent): void {\n if (!this.drawing) {\n return;\n }\n this.drawing = false;\n this.cancel();\n let node = e.target as HTMLElement;\n if (!e.composed || node.nodeType !== Node.ELEMENT_NODE) {\n this.cleanup();\n return;\n }\n if (!node.hasAttribute('data-association-slots')) {\n const parent = this.findSlotParent(e.composedPath() as Node[]);\n if (!parent) {\n return;\n }\n node = parent as HTMLElement;\n }\n if (!node.hasAttribute('data-association-slots')) {\n this.cleanup();\n return;\n }\n const [source] = e.composedPath() as HTMLElement[];\n if (source.nodeType !== Node.ELEMENT_NODE) {\n this.cleanup();\n return;\n }\n const { dataset } = source;\n if (!dataset.associationSlot) {\n this.cleanup();\n return;\n }\n const { clientX, clientY } = e;\n const endPoint = getRelativeClickPoint(clientX, clientY, this.workspace);\n if (this.updating) {\n this.endUpdate(node.dataset.key!, dataset.associationSlot, endPoint);\n } else {\n this.end(node.dataset.key!, dataset.associationSlot, endPoint);\n }\n }\n\n [keydownHandler](e: KeyboardEvent): void {\n if (e.code !== 'Escape') {\n return;\n }\n this.cancel();\n this.cleanup();\n }\n\n /**\n * Cancels the operation.\n */\n cancel(): void {\n this.unlistenDargEvents();\n this.removeLine();\n if (this.updating) {\n const model = this.workspace.edges.get(this.updateInfo!.id)!;\n model.shape.selection!.hidden = false;\n this.workspace.requestUpdate();\n }\n }\n\n /**\n * Clears variables set in the `start()` function.\n */\n cleanup(): void {\n this.createInfo = undefined;\n this.updateInfo = undefined;\n this.updating = false;\n this.drawing = false;\n }\n\n start(domainObject: HTMLElement, slot: string, startPoint: Point): void {\n this.drawing = true;\n this.createInfo = {\n slot,\n point: startPoint,\n source: domainObject,\n };\n this.addLine(startPoint, startPoint);\n this.listenDargEvents();\n }\n\n /**\n * @param key The domain id of the association being updated\n * @param dir The name of the tip that is being dragged.\n */\n startUpdate(key: string, dir: string): void {\n const model = this.workspace.edges.get(key);\n if (!model) {\n throw new Error(`The edge is not prepared.`);\n }\n model.shape.selection!.hidden = true;\n const { coordinates } = model.shape.line;\n const [sp] = coordinates!;\n const ep = coordinates![coordinates!.length - 1];\n const startPoint = dir === 'end' ? sp : ep;\n const endPoint = dir === 'end' ? ep : sp;\n this.updating = true;\n this.updateInfo = {\n direction: dir,\n ep: endPoint,\n sp: startPoint,\n id: key,\n };\n this.drawing = true;\n this.addLine(startPoint, endPoint);\n this.listenDargEvents();\n this.workspace.requestUpdate();\n }\n\n end(id: string, slot: string, endPoint: Point): void {\n const { createInfo } = this;\n if (!createInfo) {\n throw new Error(`updateInfo is not set.`);\n }\n const detail = {\n source: {\n id: createInfo.source.dataset.key,\n point: createInfo.point,\n slot: createInfo.slot,\n },\n target: {\n id, // : domainObject.dataset.key,\n point: endPoint,\n slot,\n },\n };\n createInfo.source.dispatchEvent(new CustomEvent('anchorassociationcreate', {\n composed: true,\n cancelable: true,\n bubbles: true,\n detail,\n }));\n this.cleanup();\n }\n\n endUpdate(id: string, slot: string, endPoint: Point): void {\n const { updateInfo } = this;\n if (!updateInfo) {\n throw new Error(`updateInfo is not set.`);\n }\n const detail = {\n source: {\n associationId: updateInfo.id,\n direction: updateInfo.direction,\n },\n target: {\n id, // : domainObject.dataset.key,\n point: endPoint,\n slot,\n },\n };\n const model = this.workspace.edges.get(updateInfo.id)!;\n const eventTarget = this.workspace.querySelector(`[data-key=\"${model.source}\"]`)!;\n this.cleanup();\n eventTarget.dispatchEvent(new CustomEvent('anchorassociationupdate', {\n composed: true,\n cancelable: true,\n bubbles: true,\n detail,\n }));\n }\n\n /**\n * Insets a child with a line definition into the workspace's SVG element.\n * @param start The starting point of the line\n * @param end The ending point of the line\n */\n addLine(start: Point, end: Point): void {\n const line = document.createElementNS(SvgNS, 'line');\n line.setAttribute('x1', `${start.x}`);\n line.setAttribute('y1', `${start.y}`);\n line.setAttribute('x2', `${end.x}`);\n line.setAttribute('y2', `${end.y}`);\n line.classList.add('association-line');\n const { associationSvg } = this.workspace;\n associationSvg.append(line);\n this.lineElement = line;\n }\n\n /**\n * Removes the previously added line from the SVG\n */\n removeLine(): void {\n const { lineElement } = this;\n if (!lineElement) {\n return;\n }\n const { associationSvg } = this.workspace;\n associationSvg.removeChild(lineElement);\n this.lineElement = undefined;\n }\n\n /**\n * Updates the end position of the line.\n * @param {Point} point\n */\n updateLinePosition(point: Point): void {\n const { lineElement } = this;\n\n if (!lineElement) {\n return;\n }\n\n // lineElement.setAttribute('d', definition.path);\n lineElement.setAttribute('x2', `${point.x}`);\n lineElement.setAttribute('y2', `${point.y}`);\n }\n\n /**\n * Listens for the mouse move and mouse up events to draw the line and finish the operation.\n * This is only initialized when starting drawing a line.\n */\n listenDargEvents(): void {\n const { workspace } = this;\n workspace.addEventListener('mousemove', this[mouseMoveHandler]);\n workspace.addEventListener('mouseup', this[mouseUpHandler]);\n window.addEventListener('keydown', this[keydownHandler]);\n }\n\n /**\n * Removes previously registered events.\n */\n unlistenDargEvents(): void {\n const { workspace } = this;\n workspace.removeEventListener('mousemove', this[mouseMoveHandler]);\n workspace.removeEventListener('mouseup', this[mouseUpHandler]);\n window.removeEventListener('keydown', this[keydownHandler]);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"AssociationAnchors.js","sourceRoot":"","sources":["../../../src/visualization/lib/AssociationAnchors.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\nimport { getRelativeClickPoint } from './PositionUtils.js';\nimport { anchorToPoint } from './AnchorUtils.js';\nimport { LineSketch } from './LineSketch.js';\nimport VizWorkspaceElement from '../elements/VizWorkspaceElement.js';\nimport { Point } from './Point.js';\n\nconst SvgNS = 'http://www.w3.org/2000/svg';\n\nexport const connectedValue = Symbol('connectedValue');\nexport const mouseDownHandler = Symbol('mouseDownHandler');\nexport const mouseMoveHandler = Symbol('mouseMoveHandler');\nexport const mouseUpHandler = Symbol('mouseUpHandler');\nexport const keydownHandler = Symbol('keydownHandler');\n\nexport interface EdgeCreateInfo {\n /** \n * The slot name of the source object.\n */\n slot: string;\n /** \n * The workspace coordinates of the staring point\n */\n point: Point;\n /** \n * The domain element that is the source of the association.\n */\n source: HTMLElement;\n}\n\nexport interface IEdgeUpdateInfo {\n /**\n * The name of the tip that is being dragged.\n * It's either `start` or `end`.\n */\n direction: string;\n /**\n * The association domain id.\n */\n id: string;\n /**\n * The start point of the line\n */\n sp: Point;\n /**\n * The end point of the line\n */\n ep: Point;\n}\n\n/**\n * A helper that allows to manually draw a line from one visualization object to another.\n * The visualization object has to have the `data-association-slots` attribute set on the element\n * and the mouse event target having the `data-association-slot` attribute with the index of the slot.\n * \n * The association line can be drawn to another object that has both attributes.\n * \n * After the user finish a DOM event is dispatched from the visualization workspace.\n */\nexport class AssociationAnchors {\n [connectedValue] = false\n\n /** \n * Whether a line is being constructed.\n */\n drawing = false;\n\n /** \n * A reference to the currently injected SVG element.\n */\n lineElement?: SVGElement;\n\n /** \n * Whether an association position is being updated. \n * In such case it dispatches different event at the end.\n */\n updating: boolean = false;\n\n /** \n * The processor used to draw lines\n */\n lineProcessor = new LineSketch();\n\n /** \n * Set when a new association is being created\n */\n createInfo?: EdgeCreateInfo;\n\n /** \n * Set when an association update is performed\n */\n updateInfo?: IEdgeUpdateInfo;\n\n\n constructor(public workspace: VizWorkspaceElement) {\n this.workspace = workspace;\n this[mouseDownHandler] = this[mouseDownHandler].bind(this);\n this[mouseMoveHandler] = this[mouseMoveHandler].bind(this);\n this[mouseUpHandler] = this[mouseUpHandler].bind(this);\n this[keydownHandler] = this[keydownHandler].bind(this);\n }\n\n /**\n * Starts listening for the user events\n */\n connect(): void {\n if (this[connectedValue]) {\n return;\n }\n this[connectedValue] = true;\n const { workspace } = this;\n // const { canvas } = workspace;\n workspace.addEventListener('mousedown', this[mouseDownHandler], true);\n }\n\n /**\n * Stops listening for the user events\n */\n disconnect(): void {\n this[connectedValue] = false;\n const { workspace } = this;\n // const { canvas } = workspace;\n workspace.removeEventListener('mousedown', this[mouseDownHandler], true);\n }\n\n findSlotParent(path: Node[]): Element {\n const element = path.find((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return false;\n }\n const typed = node as Element;\n return typed.hasAttribute('data-association-slots');\n });\n return element as Element;\n }\n\n [mouseDownHandler](e: MouseEvent): void {\n if (e.button !== 0) {\n return;\n }\n let node = e.target as HTMLElement\n if (!e.composed || node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const [source] = e.composedPath() as HTMLElement[];\n if (node === source) {\n const parent = this.findSlotParent(e.composedPath() as Node[]);\n if (!parent) {\n return;\n }\n node = parent as HTMLElement;\n }\n const { dataset } = source;\n const isSvgDraggable = source.classList && source.classList.contains('association-draggable');\n if (isSvgDraggable) {\n e.preventDefault();\n e.stopPropagation();\n this.startUpdate(dataset.key!, dataset.dir!);\n return;\n }\n if (!node.hasAttribute('data-association-slots')) {\n return;\n }\n if (source.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n if (!dataset.associationSlot) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n const startPoint = anchorToPoint(source, this.workspace);\n this.start(node, dataset.associationSlot, startPoint);\n }\n\n [mouseMoveHandler](e: MouseEvent): void {\n if (!this.drawing) {\n return;\n }\n const { clientX, clientY } = e;\n const pos = getRelativeClickPoint(clientX, clientY, this.workspace);\n this.updateLinePosition(pos);\n }\n\n [mouseUpHandler](e: MouseEvent): void {\n if (!this.drawing) {\n return;\n }\n this.drawing = false;\n this.cancel();\n let node = e.target as HTMLElement;\n if (!e.composed || node.nodeType !== Node.ELEMENT_NODE) {\n this.cleanup();\n return;\n }\n if (!node.hasAttribute('data-association-slots')) {\n const parent = this.findSlotParent(e.composedPath() as Node[]);\n if (!parent) {\n return;\n }\n node = parent as HTMLElement;\n }\n if (!node.hasAttribute('data-association-slots')) {\n this.cleanup();\n return;\n }\n const [source] = e.composedPath() as HTMLElement[];\n if (source.nodeType !== Node.ELEMENT_NODE) {\n this.cleanup();\n return;\n }\n const { dataset } = source;\n if (!dataset.associationSlot) {\n this.cleanup();\n return;\n }\n const { clientX, clientY } = e;\n const endPoint = getRelativeClickPoint(clientX, clientY, this.workspace);\n if (this.updating) {\n this.endUpdate(node.dataset.key!, dataset.associationSlot, endPoint);\n } else {\n this.end(node.dataset.key!, dataset.associationSlot, endPoint);\n }\n }\n\n [keydownHandler](e: KeyboardEvent): void {\n if (e.code !== 'Escape') {\n return;\n }\n this.cancel();\n this.cleanup();\n }\n\n /**\n * Cancels the operation.\n */\n cancel(): void {\n this.unlistenDargEvents();\n this.removeLine();\n if (this.updating) {\n const model = this.workspace.edges.get(this.updateInfo!.id)!;\n model.shape.selection!.hidden = false;\n this.workspace.requestUpdate();\n }\n }\n\n /**\n * Clears variables set in the `start()` function.\n */\n cleanup(): void {\n this.createInfo = undefined;\n this.updateInfo = undefined;\n this.updating = false;\n this.drawing = false;\n }\n\n start(domainObject: HTMLElement, slot: string, startPoint: Point): void {\n this.drawing = true;\n this.createInfo = {\n slot,\n point: startPoint,\n source: domainObject,\n };\n this.addLine(startPoint, startPoint);\n this.listenDargEvents();\n }\n\n /**\n * @param key The domain id of the association being updated\n * @param dir The name of the tip that is being dragged.\n */\n startUpdate(key: string, dir: string): void {\n const model = this.workspace.edges.get(key);\n if (!model) {\n throw new Error(`The edge is not prepared.`);\n }\n model.shape.selection!.hidden = true;\n const { coordinates } = model.shape.line;\n const [sp] = coordinates!;\n const ep = coordinates![coordinates!.length - 1];\n const startPoint = dir === 'end' ? sp : ep;\n const endPoint = dir === 'end' ? ep : sp;\n this.updating = true;\n this.updateInfo = {\n direction: dir,\n ep: endPoint,\n sp: startPoint,\n id: key,\n };\n this.drawing = true;\n this.addLine(startPoint, endPoint);\n this.listenDargEvents();\n this.workspace.requestUpdate();\n }\n\n end(id: string, slot: string, endPoint: Point): void {\n const { createInfo } = this;\n if (!createInfo) {\n throw new Error(`updateInfo is not set.`);\n }\n const detail = {\n source: {\n id: createInfo.source.dataset.key,\n point: createInfo.point,\n slot: createInfo.slot,\n },\n target: {\n id, // : domainObject.dataset.key,\n point: endPoint,\n slot,\n },\n };\n createInfo.source.dispatchEvent(new CustomEvent('anchorassociationcreate', {\n composed: true,\n cancelable: true,\n bubbles: true,\n detail,\n }));\n this.cleanup();\n }\n\n endUpdate(id: string, slot: string, endPoint: Point): void {\n const { updateInfo } = this;\n if (!updateInfo) {\n throw new Error(`updateInfo is not set.`);\n }\n const detail = {\n source: {\n associationId: updateInfo.id,\n direction: updateInfo.direction,\n },\n target: {\n id, // : domainObject.dataset.key,\n point: endPoint,\n slot,\n },\n };\n const model = this.workspace.edges.get(updateInfo.id)!;\n const eventTarget = this.workspace.querySelector(`[data-key=\"${model.source}\"]`)!;\n this.cleanup();\n eventTarget.dispatchEvent(new CustomEvent('anchorassociationupdate', {\n composed: true,\n cancelable: true,\n bubbles: true,\n detail,\n }));\n }\n\n /**\n * Insets a child with a line definition into the workspace's SVG element.\n * @param start The starting point of the line\n * @param end The ending point of the line\n */\n addLine(start: Point, end: Point): void {\n const line = document.createElementNS(SvgNS, 'line');\n line.setAttribute('x1', `${start.x}`);\n line.setAttribute('y1', `${start.y}`);\n line.setAttribute('x2', `${end.x}`);\n line.setAttribute('y2', `${end.y}`);\n line.classList.add('association-line');\n const { associationSvg } = this.workspace;\n associationSvg.append(line);\n this.lineElement = line;\n }\n\n /**\n * Removes the previously added line from the SVG\n */\n removeLine(): void {\n const { lineElement } = this;\n if (!lineElement) {\n return;\n }\n const { associationSvg } = this.workspace;\n associationSvg.removeChild(lineElement);\n this.lineElement = undefined;\n }\n\n /**\n * Updates the end position of the line.\n * @param {Point} point\n */\n updateLinePosition(point: Point): void {\n const { lineElement } = this;\n\n if (!lineElement) {\n return;\n }\n\n // lineElement.setAttribute('d', definition.path);\n lineElement.setAttribute('x2', `${point.x}`);\n lineElement.setAttribute('y2', `${point.y}`);\n }\n\n /**\n * Listens for the mouse move and mouse up events to draw the line and finish the operation.\n * This is only initialized when starting drawing a line.\n */\n listenDargEvents(): void {\n const { workspace } = this;\n workspace.addEventListener('mousemove', this[mouseMoveHandler]);\n workspace.addEventListener('mouseup', this[mouseUpHandler]);\n window.addEventListener('keydown', this[keydownHandler]);\n }\n\n /**\n * Removes previously registered events.\n */\n unlistenDargEvents(): void {\n const { workspace } = this;\n workspace.removeEventListener('mousemove', this[mouseMoveHandler]);\n workspace.removeEventListener('mouseup', this[mouseUpHandler]);\n window.removeEventListener('keydown', this[keydownHandler]);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Point.js","sourceRoot":"","sources":["../../../src/visualization/lib/Point.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,KAAK;
|
|
1
|
+
{"version":3,"file":"Point.js","sourceRoot":"","sources":["../../../src/visualization/lib/Point.ts"],"names":[],"mappings":"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","sourcesContent":["import { xPositionOrCoord } from \"./types.js\";\n\n/**\n * An object representing a point in a 2-d space (Euclidean space)\n */\nexport class Point {\n x: number;\n\n y: number;\n\n /**\n * @param x The x coordinate or the array with x and y position values\n * @param y Optional when the `x` is an array. The y position of the point\n */\n constructor(x: xPositionOrCoord, y?: number) {\n let xValue;\n let yValue;\n if (Array.isArray(x)) {\n [xValue, yValue] = x;\n } else {\n xValue = x;\n yValue = y;\n }\n this.x = xValue;\n this.y = yValue!;\n }\n\n /**\n * Copies the current point as new object\n * @return A copy of the object\n */\n copy(): Point {\n return new Point(this.x, this.y);\n }\n\n /**\n * Validates the point value.\n * @return True if the point has valid values.\n */\n validate(): boolean {\n const { x, y } = this;\n return !Number.isNaN(x) && !Number.isNaN(y);\n }\n\n /**\n * Adds another point to this point and returns a new point.\n * @param v Point or a number to add.\n * @returns Created new point\n */\n add(v: Point | number): Point {\n if (v instanceof Point) {\n return new Point(this.x + v.x, this.y + v.y);\n }\n return new Point(this.x + v, this.y + v);\n }\n\n /**\n * Subtracts another point from this point and returns a new point.\n * @param v Point or a number to add.\n * @returns Created new point\n */\n subtract(v: Point | number): Point {\n if (v instanceof Point) {\n return new Point(this.x - v.x, this.y - v.y);\n }\n return new Point(this.x - v, this.y - v);\n }\n\n /**\n * Multiplies this point by another point or a number and returns a new point.\n * @param v Point or a number to add.\n * @returns Created new point\n */\n multiply(v: Point | number): Point {\n if (v instanceof Point) {\n return new Point(this.x * v.x, this.y * v.y);\n }\n return new Point(this.x * v, this.y * v);\n }\n\n /**\n * Divides this point by another point or a number and returns a new point.\n * @param v Point or a number to add.\n * @returns Created new point\n */\n divide(v: Point | number): Point {\n if (v instanceof Point) {\n return new Point(this.x / v.x, this.y / v.y)\n };\n return new Point(this.x / v, this.y / v);\n }\n\n /**\n * Subtracts another point to this point and returns a new point.\n * @param v Point or a number to add.\n * @returns True when points are equal\n */\n equals(v: Point): boolean {\n return this.x === v.x && this.y === v.y;\n }\n\n /**\n * Computes an angle to another point in radians.\n * @param v Point or a number to add.\n * @returns True when points are equal\n */\n angle(v: Point): number {\n return Math.atan2(v.y - this.y, v.x - this.x);\n }\n\n /**\n * Computes an angle to another point in degrees.\n * @param v Point or a number to add.\n * @returns True when points are equal\n */\n degrees(v: Point): number {\n return this.angle(v) * 180 / Math.PI;\n }\n\n /**\n * Computes the distance to the other point.\n */\n distance(other: Point): number {\n return Math.sqrt(\n (this.x - other.x) ** 2 + (this.y - other.y) ** 2\n );\n }\n\n /**\n * Computes the distance between two points.\n */\n static distance(p1: Point, p2: Point): number {\n return p1.distance(p2);\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
var _a, _b;
|
|
1
2
|
export const clickHandler = Symbol('clickHandler');
|
|
2
3
|
export const observeItems = Symbol('observeItems');
|
|
3
4
|
export const mutationHandler = Symbol('mutationHandler');
|
|
@@ -18,16 +19,6 @@ export const selectedIdsValue = Symbol('selectedIdsValue');
|
|
|
18
19
|
* A class that takes care of selection in the visualization workspace.
|
|
19
20
|
*/
|
|
20
21
|
export class SelectionManager {
|
|
21
|
-
target;
|
|
22
|
-
/**
|
|
23
|
-
* The list of currently selected elements
|
|
24
|
-
*/
|
|
25
|
-
[selectedItemsValue] = new Set();
|
|
26
|
-
/**
|
|
27
|
-
* The list of currently selected domain ids
|
|
28
|
-
*/
|
|
29
|
-
[selectedIdsValue] = [];
|
|
30
|
-
[mutationObserver];
|
|
31
22
|
/**
|
|
32
23
|
* @returns A set of currently selected items.
|
|
33
24
|
*/
|
|
@@ -49,6 +40,14 @@ export class SelectionManager {
|
|
|
49
40
|
}
|
|
50
41
|
constructor(target) {
|
|
51
42
|
this.target = target;
|
|
43
|
+
/**
|
|
44
|
+
* The list of currently selected elements
|
|
45
|
+
*/
|
|
46
|
+
this[_a] = new Set();
|
|
47
|
+
/**
|
|
48
|
+
* The list of currently selected domain ids
|
|
49
|
+
*/
|
|
50
|
+
this[_b] = [];
|
|
52
51
|
this[clickHandler] = this[clickHandler].bind(this);
|
|
53
52
|
this[mutationHandler] = this[mutationHandler].bind(this);
|
|
54
53
|
}
|
|
@@ -206,7 +205,7 @@ export class SelectionManager {
|
|
|
206
205
|
return node;
|
|
207
206
|
}
|
|
208
207
|
// PRIVATE APIS
|
|
209
|
-
[clickHandler](e) {
|
|
208
|
+
[(_a = selectedItemsValue, _b = selectedIdsValue, clickHandler)](e) {
|
|
210
209
|
const path = e.composedPath();
|
|
211
210
|
const svg = this.target.associationSvg;
|
|
212
211
|
if (path[0] !== svg && path.includes(svg)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionManager.js","sourceRoot":"","sources":["../../../src/visualization/lib/SelectionManager.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAmCR;IAlCnB;;OAEG;IACH,CAAC,kBAAkB,CAAC,GAAG,IAAI,GAAG,EAAW,CAAC;IAE1C;;OAEG;IACH,CAAC,gBAAgB,CAAC,GAAsB,EAAE,CAAC;IAE3C,CAAC,gBAAgB,CAAC,CAAoB;IAEtC;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAc,CAAC;IACxC,CAAC;IAED,YAAmB,MAA2B;QAA3B,WAAM,GAAN,MAAM,CAAqB;QAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAkB,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClC,IAAI,EAAE,EAAE;YACN,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;SACpC;QACD,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAkB,CAAC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,UAAmB;QAC9B,OAAO,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,UAAmB;QAC5B,OAAO,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,UAAmB;QAC7B,UAAU,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,UAAmB;QAC/B,UAAU,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACxB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACxC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,EAAE;gBACR,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACzC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aACzB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,IAAc,EAAE,cAAc,GAAC,KAAK;QACzC,IAAI,CAAC,cAAc,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACrD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACxB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAAc;QACrB,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO;aACR;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACpD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,kCAAkC,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE;YAClD,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC;SACnE;IACH,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,UAAmB;QACzB,IAAI,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YACvC,OAAO,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACH,yBAAyB,CAAC,EAAU;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;IAEf,CAAC,YAAY,CAAC,CAAC,CAAe;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QACvC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACzC,oEAAoE;YACpE,OAAO;SACR;QACD,IAAI,gBAAgB,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAU,CAAC;YACjC,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;gBACtC,SAAS;aACV;YACD,MAAM,KAAK,GAAG,GAAc,CAAC;YAC7B,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;gBAC5B,gBAAgB,GAAG,KAAK,CAAC;gBACzB,MAAK;aACN;SACF;QACD,IAAI,CAAC,gBAAgB,EAAE;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;SACR;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACrD,yEAAyE;QACzE,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACd,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;aACtC;YACD,OAAO;SACR;QACD,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,CAAC,YAAY,CAAC;QACZ,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC7D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,CAAC,eAAe,CAAC,CAAC,aAA+B;QAC/C,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;YACpC,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;gBACjC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC7C,IAAI,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;aAClD;iBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;gBACzC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAiB,EAAE,aAAuB,CAAC,CAAC;aAC3E;SACF;QACD,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,CAAC,iBAAiB,CAAC,CAAC,KAAe;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;gBACvC,OAAO;aACR;YACD,MAAM,KAAK,GAAG,IAAe,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;gBAC7B,OAAO;aACR;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAC1B,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,CAAC,mBAAmB,CAAC,CAAC,KAAe;QACnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;gBACvC,OAAO;aACR;YACD,MAAM,KAAK,GAAG,IAAe,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC;YACpC,yEAAyE;YACzE,uBAAuB;YACvB,mCAAmC;YACnC,YAAY;YACZ,IAAI;YACJ,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAC1B,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC;aACnC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,CAAC,uBAAuB,CAAC,CAAC,IAAa,EAAE,IAAY;QACnD,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACrC,OAAO;SACR;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC;SAChC;aAAM;YACL,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC;SAClC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,CAAC,kBAAkB,CAAC,CAAC,UAAmB;QACtC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACtC,OAAO;SACR;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,EAAE;YACP,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACtB,OAAO;SACR;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,QAAQ,CAAC,IAAI,CAAC;gBACZ,EAAE;gBACF,IAAI,EAAE,UAAU,CAAC,SAAS;gBAC1B,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,yBAAyB,CAAC,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,CAAC,kBAAkB,CAAC,CAAC,UAAmB;QACtC,MAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB,OAAO;SACR;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;aACR;YACD,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;aACtD;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,CAAC,yBAAyB,CAAC,CAAC,UAAmB;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,EAAE;YACP,OAAO;SACR;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB,OAAO;SACR;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;aACR;YACD,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACzC,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;aACtD;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,CAAC,oBAAoB,CAAC,CAAC,UAAmB;QACxC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACvC,OAAO;SACR;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,EAAE;YACP,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACtB,OAAO;SACR;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,2BAA2B,CAAC,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,CAAC,oBAAoB,CAAC,CAAC,UAAmB;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB,OAAO;SACR;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;aACR;YACD,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;aACrD;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,CAAC,2BAA2B,CAAC,CAAC,UAAmB;QAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,EAAE;YACP,OAAO;SACR;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB,OAAO;SACR;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;aACR;YACD,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACzC,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;aACrD;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,CAAC,aAAa,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACzD,CAAC;CACF","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport VizWorkspaceElement from \"../elements/VizWorkspaceElement.js\";\nimport { ISelectedDomain } from \"./types.js\";\n\nexport const clickHandler = Symbol('clickHandler');\nexport const observeItems = Symbol('observeItems');\nexport const mutationHandler = Symbol('mutationHandler');\nexport const mutationObserver = Symbol('mutationObserver');\nexport const processAddedNodes = Symbol('processAddedNodes');\nexport const processRemovedNodes = Symbol('processRemovedNodes');\nexport const processAttributeChanged = Symbol('processAttributeChanged');\nexport const propagateSelection = Symbol('propagateSelection');\nexport const selectAssociations = Symbol('selectAssociation');\nexport const selectReverseAssociations = Symbol('selectReverseAssociations');\nexport const propagateDeselection = Symbol('propagateDeselection');\nexport const deselectAssociations = Symbol('deselectAssociations');\nexport const deselectReverseAssociations = Symbol('deselectReverseAssociations');\nexport const notifyChanged = Symbol('notifyChanged');\nexport const selectedItemsValue = Symbol('selectedItemsValue');\nexport const selectedIdsValue = Symbol('selectedIdsValue');\n\n/**\n * A class that takes care of selection in the visualization workspace.\n */\nexport class SelectionManager {\n /** \n * The list of currently selected elements\n */\n [selectedItemsValue] = new Set<Element>();\n\n /** \n * The list of currently selected domain ids\n */\n [selectedIdsValue]: ISelectedDomain[] = [];\n\n [mutationObserver]?: MutationObserver;\n\n /**\n * @returns A set of currently selected items.\n */\n get selectedItems(): Set<Element> {\n return this[selectedItemsValue];\n }\n\n /**\n * @returns A list of currently selected domain ids.\n */\n get selected(): ISelectedDomain[] {\n return this[selectedIdsValue];\n }\n\n /**\n * @returns A list of all selectable items\n */\n get selectable(): Element[] {\n const nodes = this.target.querySelectorAll('[data-selectable]');\n return Array.from(nodes) as Element[];\n }\n\n constructor(public target: VizWorkspaceElement) {\n this[clickHandler] = this[clickHandler].bind(this);\n this[mutationHandler] = this[mutationHandler].bind(this);\n }\n\n /**\n * Initializes the library. Should be called when the workspace is ready to render content.\n */\n connect(): void {\n this.target.addEventListener('click', this[clickHandler] as EventListener);\n this[mutationObserver] = this[observeItems]();\n }\n\n /**\n * Cleans up and removes listeners\n */\n disconnect(): void {\n const mo = this[mutationObserver];\n if (mo) {\n mo.disconnect();\n this[mutationObserver] = undefined;\n }\n this.target.removeEventListener('click', this[clickHandler] as EventListener);\n }\n\n /**\n * Checks if given element is marked as selectable target\n * @param selectable The element to test for `selectable` or `data-selectable` attribute\n * @returns True if the element can be selected\n */\n isSelectable(selectable: Element): boolean {\n return selectable.hasAttribute('data-selectable');\n }\n\n /**\n * Checks if given element is marked as selected\n * @param selectable The element to test for `selected` or `data-selected` attribute\n * @returns True if the element is marked as selected\n */\n isSelected(selectable: Element): boolean {\n return selectable.hasAttribute('data-selected');\n }\n\n /**\n * Marks an element as selected\n * @param selectable The element to add the selected mark to.\n */\n setSelected(selectable: Element): void {\n selectable.setAttribute('data-selected', '');\n }\n\n /**\n * Marks an element as not selected\n * @param selectable The element to remove the selected mark from.\n */\n setUnselected(selectable: Element): void {\n selectable.removeAttribute('data-selected');\n }\n\n /**\n * Deselects all currently selected items.\n */\n selectAll(): void {\n this.selectable.forEach((node) => {\n if (!this.isSelected(node)) {\n this.setSelected(node);\n }\n });\n }\n\n /**\n * Deselects all currently selected items.\n */\n deselectAll(): void {\n this.selectable.forEach((node) => {\n if (this.isSelected(node)) {\n this.setUnselected(node);\n }\n });\n const ids = [...this[selectedIdsValue]];\n ids.forEach((info) => {\n const elm = this.getDomainTarget(info.id);\n if (!elm) {\n const index = this[selectedIdsValue].indexOf(info);\n this[selectedIdsValue].splice(index, 1);\n } else if (this.isSelected(elm)) {\n this.setUnselected(elm);\n }\n });\n }\n\n /**\n * Selects objects that are selectable by their `key`.\n * \n * The `addToSelection` argument is equivalent of calling `deselectAll()` and then `select(...)`.\n * \n * @param keys The list of domain ids of objects to select. \n * @param addToSelection If true it adds to the current selection rather than replacing it.\n */\n select(keys: string[], addToSelection=false): void {\n if (!addToSelection) {\n this.deselectAll();\n }\n keys.forEach((id) => {\n const node = this.getSelectableDomainTarget(id);\n if (!node) {\n return;\n }\n if (this.isSelectable(node) && !this.isSelected(node)) {\n this.setSelected(node);\n }\n });\n }\n\n /**\n * Removes objects from selection.\n * \n * @param keys The list of domain ids of objects to deselect. \n */\n deselect(keys: string[]): void {\n keys.forEach((id) => {\n const node = this.getSelectableDomainTarget(id);\n if (!node) {\n return;\n }\n if (this.isSelectable(node) && this.isSelected(node)) {\n this.setUnselected(node);\n }\n });\n }\n\n /**\n * Synchronizes the selection state with the view\n */\n syncView(): void {\n const nodes = this.target.querySelectorAll(`[data-selectable][data-selected]`);\n if (this[selectedItemsValue].size !== nodes.length) {\n // eslint-disable-next-line no-console\n console.log('invalid selection', this[selectedItemsValue], nodes);\n }\n }\n\n /**\n * Reads the attribute value to get the `key` property.\n * @param selectable \n * @returns The domain id of the object or `null` when not found\n */\n readKey(selectable: Element): string | null {\n if (selectable.hasAttribute('data-key')) {\n return selectable.getAttribute('data-key');\n }\n return null;\n }\n\n /**\n * Finds a workspace element that has the domain id.\n * @param id Target domain id\n */\n getDomainTarget(id: string): Element | null {\n return this.target.querySelector(`[data-key=\"${id}\"]`);\n }\n\n /**\n * Finds a workspace element that has the domain id and is selectable.\n * @param id Target domain id\n */\n getSelectableDomainTarget(id: string): Element|null {\n const node = this.target.querySelector(`[data-key=\"${id}\"][data-selectable]`);\n return node;\n }\n\n // PRIVATE APIS\n\n [clickHandler](e: PointerEvent): void {\n const path = e.composedPath();\n const svg = this.target.associationSvg;\n if (path[0] !== svg && path.includes(svg)) {\n // Selection of the edges is managed by the workspace edges manager.\n return;\n }\n let selectableTarget;\n while (path.length > 0) {\n const tmp = path.shift() as Node;\n if (tmp.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n const typed = tmp as Element;\n if (this.isSelectable(typed)) {\n selectableTarget = typed;\n break\n }\n }\n if (!selectableTarget) {\n this.deselectAll();\n return;\n }\n const isSelected = this.isSelected(selectableTarget);\n // note: if toggle mode is required then this should toggle the attribute\n if (isSelected) {\n if (e.shiftKey) {\n this.setUnselected(selectableTarget);\n }\n return;\n }\n if (!e.shiftKey) {\n this.deselectAll();\n }\n this.setSelected(selectableTarget);\n }\n\n /**\n * Observe items change in the element's light DOM\n * @returns The observer handler\n */\n [observeItems](): MutationObserver {\n const config = { attributes: true, childList: true, subtree: true, };\n const observer = new MutationObserver(this[mutationHandler]);\n observer.observe(this.target, config);\n return observer;\n }\n\n /**\n * Processes mutations in the workspace and manages selection state.\n * @param mutationsList List of mutations.\n */\n [mutationHandler](mutationsList: MutationRecord[]): void {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n this[processAddedNodes](mutation.addedNodes);\n this[processRemovedNodes](mutation.removedNodes);\n } else if (mutation.type === 'attributes') {\n const { attributeName, target } = mutation;\n this[processAttributeChanged](target as Element, attributeName as string);\n }\n }\n requestAnimationFrame(() => this.syncView());\n }\n\n /**\n * Processes added to the canvas elements.\n * @param nodes The list of added nodes\n */\n [processAddedNodes](nodes: NodeList): void {\n nodes.forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as Element;\n const children = typed.querySelectorAll('*');\n this[processAddedNodes](children);\n if (!this.isSelectable(typed)) {\n return;\n }\n if (this.isSelected(typed)) {\n this[propagateSelection](typed);\n }\n });\n }\n\n /**\n * Processes removed from the canvas elements.\n * @param nodes The list of removed nodes\n */\n [processRemovedNodes](nodes: NodeList): void {\n nodes.forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as Element;\n const children = typed.querySelectorAll('*');\n this[processRemovedNodes](children);\n // An item might not be selectable but it may have a secondary selection \n // through association.\n // if (!this.isSelectable(typed)) {\n // return;\n // }\n if (this.isSelected(typed)) {\n this[propagateDeselection](typed);\n }\n });\n }\n\n /**\n * Processes changed attribute on any element in the canvas\n * @param node Changed element\n * @param prop Changed property\n */\n [processAttributeChanged](node: Element, prop: string): void {\n if (!['data-selected'].includes(prop)) {\n return;\n }\n if (node.hasAttribute(prop)) {\n this[propagateSelection](node);\n } else {\n this[propagateDeselection](node);\n }\n }\n\n /**\n * Sets selection to the elements that are related to the `selectable` element.\n * \n * A related element is an element that is an association target to the `selectable`\n * ot the `selectable` has `parent` attribute.\n * \n * The related are not added to the `selectedItems` set and does not have `selected` attribute.\n * They are marked with `second-selected` attribute.\n */\n [propagateSelection](selectable: Element): void {\n if (this.selectedItems.has(selectable)) {\n return;\n }\n this.selectedItems.add(selectable);\n const id = this.readKey(selectable);\n if (!id) {\n this[notifyChanged]();\n return;\n }\n const selected = this[selectedIdsValue];\n const index = selected.findIndex((item) => item.id === id);\n if (index === -1) {\n selected.push({\n id,\n name: selectable.localName,\n node: selectable,\n });\n }\n this[selectAssociations](selectable);\n this[selectReverseAssociations](selectable);\n this[notifyChanged]();\n }\n\n /**\n * Marks `viz-association` and referenced targets of the `selectable` as a secondary selection.\n */\n [selectAssociations](selectable: Element): void {\n const nodes = selectable.querySelectorAll('viz-association');\n if (!nodes.length) {\n return;\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target');\n if (!target) {\n return;\n }\n node.setAttribute('secondary-selected', '');\n const targetElement = this.getDomainTarget(target);\n if (targetElement) {\n targetElement.setAttribute('secondary-selected', '');\n }\n });\n }\n\n /**\n * Similar to `[selectAssociations]()` but it selects associations where \n * the `selectable` is the target.\n */\n [selectReverseAssociations](selectable: Element): void {\n const id = this.readKey(selectable);\n if (!id) {\n return;\n }\n const nodes = this.target.querySelectorAll(`viz-association[data-target=\"${id}\"]`);\n if (!nodes.length) {\n return;\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target');\n if (!target) {\n return;\n }\n node.setAttribute('secondary-selected', '');\n const targetElement = node.parentElement;\n if (targetElement) {\n targetElement.setAttribute('secondary-selected', '');\n }\n });\n }\n\n /**\n * Removes secondary selection from the elements that are related to the `selectable` element.\n * \n * A related element is an element that is an association target to the `selectable`\n * ot the `selectable` has `parent` attribute.\n */\n [propagateDeselection](selectable: Element): void {\n if (!this.selectedItems.has(selectable)) {\n return;\n }\n this.selectedItems.delete(selectable);\n const id = this.readKey(selectable);\n if (!id) {\n this[notifyChanged]();\n return;\n }\n const selected = this[selectedIdsValue];\n const index = selected.findIndex((item) => item.id === id);\n if (index !== -1) {\n this[selectedIdsValue].splice(index, 1);\n }\n this[deselectAssociations](selectable);\n this[deselectReverseAssociations](selectable);\n this[notifyChanged]();\n }\n\n /**\n * Removes secondary selection mark from `viz-association`\n */\n [deselectAssociations](selectable: Element): void {\n const nodes = selectable.querySelectorAll('viz-association');\n if (!nodes.length) {\n return;\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target');\n if (!target) {\n return;\n }\n node.removeAttribute('secondary-selected');\n const targetElement = this.getDomainTarget(target);\n if (targetElement) {\n targetElement.removeAttribute('secondary-selected');\n }\n });\n }\n\n /**\n * Similar to `[selectAssociation]()` but it selects associations where \n * the `selectable` is the target.\n */\n [deselectReverseAssociations](selectable: Element): void {\n const id = this.readKey(selectable);\n if (!id) {\n return;\n }\n const nodes = this.target.querySelectorAll(`viz-association[data-target=\"${id}\"]`);\n if (!nodes.length) {\n return;\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target');\n if (!target) {\n return;\n }\n node.removeAttribute('secondary-selected');\n const targetElement = node.parentElement;\n if (targetElement) {\n targetElement.removeAttribute('secondary-selected');\n }\n });\n }\n\n [notifyChanged](): void {\n this.target.dispatchEvent(new Event('selectedchange'));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SelectionManager.js","sourceRoot":"","sources":["../../../src/visualization/lib/SelectionManager.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport VizWorkspaceElement from \"../elements/VizWorkspaceElement.js\";\nimport { ISelectedDomain } from \"./types.js\";\n\nexport const clickHandler = Symbol('clickHandler');\nexport const observeItems = Symbol('observeItems');\nexport const mutationHandler = Symbol('mutationHandler');\nexport const mutationObserver = Symbol('mutationObserver');\nexport const processAddedNodes = Symbol('processAddedNodes');\nexport const processRemovedNodes = Symbol('processRemovedNodes');\nexport const processAttributeChanged = Symbol('processAttributeChanged');\nexport const propagateSelection = Symbol('propagateSelection');\nexport const selectAssociations = Symbol('selectAssociation');\nexport const selectReverseAssociations = Symbol('selectReverseAssociations');\nexport const propagateDeselection = Symbol('propagateDeselection');\nexport const deselectAssociations = Symbol('deselectAssociations');\nexport const deselectReverseAssociations = Symbol('deselectReverseAssociations');\nexport const notifyChanged = Symbol('notifyChanged');\nexport const selectedItemsValue = Symbol('selectedItemsValue');\nexport const selectedIdsValue = Symbol('selectedIdsValue');\n\n/**\n * A class that takes care of selection in the visualization workspace.\n */\nexport class SelectionManager {\n /** \n * The list of currently selected elements\n */\n [selectedItemsValue] = new Set<Element>();\n\n /** \n * The list of currently selected domain ids\n */\n [selectedIdsValue]: ISelectedDomain[] = [];\n\n [mutationObserver]?: MutationObserver;\n\n /**\n * @returns A set of currently selected items.\n */\n get selectedItems(): Set<Element> {\n return this[selectedItemsValue];\n }\n\n /**\n * @returns A list of currently selected domain ids.\n */\n get selected(): ISelectedDomain[] {\n return this[selectedIdsValue];\n }\n\n /**\n * @returns A list of all selectable items\n */\n get selectable(): Element[] {\n const nodes = this.target.querySelectorAll('[data-selectable]');\n return Array.from(nodes) as Element[];\n }\n\n constructor(public target: VizWorkspaceElement) {\n this[clickHandler] = this[clickHandler].bind(this);\n this[mutationHandler] = this[mutationHandler].bind(this);\n }\n\n /**\n * Initializes the library. Should be called when the workspace is ready to render content.\n */\n connect(): void {\n this.target.addEventListener('click', this[clickHandler] as EventListener);\n this[mutationObserver] = this[observeItems]();\n }\n\n /**\n * Cleans up and removes listeners\n */\n disconnect(): void {\n const mo = this[mutationObserver];\n if (mo) {\n mo.disconnect();\n this[mutationObserver] = undefined;\n }\n this.target.removeEventListener('click', this[clickHandler] as EventListener);\n }\n\n /**\n * Checks if given element is marked as selectable target\n * @param selectable The element to test for `selectable` or `data-selectable` attribute\n * @returns True if the element can be selected\n */\n isSelectable(selectable: Element): boolean {\n return selectable.hasAttribute('data-selectable');\n }\n\n /**\n * Checks if given element is marked as selected\n * @param selectable The element to test for `selected` or `data-selected` attribute\n * @returns True if the element is marked as selected\n */\n isSelected(selectable: Element): boolean {\n return selectable.hasAttribute('data-selected');\n }\n\n /**\n * Marks an element as selected\n * @param selectable The element to add the selected mark to.\n */\n setSelected(selectable: Element): void {\n selectable.setAttribute('data-selected', '');\n }\n\n /**\n * Marks an element as not selected\n * @param selectable The element to remove the selected mark from.\n */\n setUnselected(selectable: Element): void {\n selectable.removeAttribute('data-selected');\n }\n\n /**\n * Deselects all currently selected items.\n */\n selectAll(): void {\n this.selectable.forEach((node) => {\n if (!this.isSelected(node)) {\n this.setSelected(node);\n }\n });\n }\n\n /**\n * Deselects all currently selected items.\n */\n deselectAll(): void {\n this.selectable.forEach((node) => {\n if (this.isSelected(node)) {\n this.setUnselected(node);\n }\n });\n const ids = [...this[selectedIdsValue]];\n ids.forEach((info) => {\n const elm = this.getDomainTarget(info.id);\n if (!elm) {\n const index = this[selectedIdsValue].indexOf(info);\n this[selectedIdsValue].splice(index, 1);\n } else if (this.isSelected(elm)) {\n this.setUnselected(elm);\n }\n });\n }\n\n /**\n * Selects objects that are selectable by their `key`.\n * \n * The `addToSelection` argument is equivalent of calling `deselectAll()` and then `select(...)`.\n * \n * @param keys The list of domain ids of objects to select. \n * @param addToSelection If true it adds to the current selection rather than replacing it.\n */\n select(keys: string[], addToSelection=false): void {\n if (!addToSelection) {\n this.deselectAll();\n }\n keys.forEach((id) => {\n const node = this.getSelectableDomainTarget(id);\n if (!node) {\n return;\n }\n if (this.isSelectable(node) && !this.isSelected(node)) {\n this.setSelected(node);\n }\n });\n }\n\n /**\n * Removes objects from selection.\n * \n * @param keys The list of domain ids of objects to deselect. \n */\n deselect(keys: string[]): void {\n keys.forEach((id) => {\n const node = this.getSelectableDomainTarget(id);\n if (!node) {\n return;\n }\n if (this.isSelectable(node) && this.isSelected(node)) {\n this.setUnselected(node);\n }\n });\n }\n\n /**\n * Synchronizes the selection state with the view\n */\n syncView(): void {\n const nodes = this.target.querySelectorAll(`[data-selectable][data-selected]`);\n if (this[selectedItemsValue].size !== nodes.length) {\n // eslint-disable-next-line no-console\n console.log('invalid selection', this[selectedItemsValue], nodes);\n }\n }\n\n /**\n * Reads the attribute value to get the `key` property.\n * @param selectable \n * @returns The domain id of the object or `null` when not found\n */\n readKey(selectable: Element): string | null {\n if (selectable.hasAttribute('data-key')) {\n return selectable.getAttribute('data-key');\n }\n return null;\n }\n\n /**\n * Finds a workspace element that has the domain id.\n * @param id Target domain id\n */\n getDomainTarget(id: string): Element | null {\n return this.target.querySelector(`[data-key=\"${id}\"]`);\n }\n\n /**\n * Finds a workspace element that has the domain id and is selectable.\n * @param id Target domain id\n */\n getSelectableDomainTarget(id: string): Element|null {\n const node = this.target.querySelector(`[data-key=\"${id}\"][data-selectable]`);\n return node;\n }\n\n // PRIVATE APIS\n\n [clickHandler](e: PointerEvent): void {\n const path = e.composedPath();\n const svg = this.target.associationSvg;\n if (path[0] !== svg && path.includes(svg)) {\n // Selection of the edges is managed by the workspace edges manager.\n return;\n }\n let selectableTarget;\n while (path.length > 0) {\n const tmp = path.shift() as Node;\n if (tmp.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n const typed = tmp as Element;\n if (this.isSelectable(typed)) {\n selectableTarget = typed;\n break\n }\n }\n if (!selectableTarget) {\n this.deselectAll();\n return;\n }\n const isSelected = this.isSelected(selectableTarget);\n // note: if toggle mode is required then this should toggle the attribute\n if (isSelected) {\n if (e.shiftKey) {\n this.setUnselected(selectableTarget);\n }\n return;\n }\n if (!e.shiftKey) {\n this.deselectAll();\n }\n this.setSelected(selectableTarget);\n }\n\n /**\n * Observe items change in the element's light DOM\n * @returns The observer handler\n */\n [observeItems](): MutationObserver {\n const config = { attributes: true, childList: true, subtree: true, };\n const observer = new MutationObserver(this[mutationHandler]);\n observer.observe(this.target, config);\n return observer;\n }\n\n /**\n * Processes mutations in the workspace and manages selection state.\n * @param mutationsList List of mutations.\n */\n [mutationHandler](mutationsList: MutationRecord[]): void {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n this[processAddedNodes](mutation.addedNodes);\n this[processRemovedNodes](mutation.removedNodes);\n } else if (mutation.type === 'attributes') {\n const { attributeName, target } = mutation;\n this[processAttributeChanged](target as Element, attributeName as string);\n }\n }\n requestAnimationFrame(() => this.syncView());\n }\n\n /**\n * Processes added to the canvas elements.\n * @param nodes The list of added nodes\n */\n [processAddedNodes](nodes: NodeList): void {\n nodes.forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as Element;\n const children = typed.querySelectorAll('*');\n this[processAddedNodes](children);\n if (!this.isSelectable(typed)) {\n return;\n }\n if (this.isSelected(typed)) {\n this[propagateSelection](typed);\n }\n });\n }\n\n /**\n * Processes removed from the canvas elements.\n * @param nodes The list of removed nodes\n */\n [processRemovedNodes](nodes: NodeList): void {\n nodes.forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as Element;\n const children = typed.querySelectorAll('*');\n this[processRemovedNodes](children);\n // An item might not be selectable but it may have a secondary selection \n // through association.\n // if (!this.isSelectable(typed)) {\n // return;\n // }\n if (this.isSelected(typed)) {\n this[propagateDeselection](typed);\n }\n });\n }\n\n /**\n * Processes changed attribute on any element in the canvas\n * @param node Changed element\n * @param prop Changed property\n */\n [processAttributeChanged](node: Element, prop: string): void {\n if (!['data-selected'].includes(prop)) {\n return;\n }\n if (node.hasAttribute(prop)) {\n this[propagateSelection](node);\n } else {\n this[propagateDeselection](node);\n }\n }\n\n /**\n * Sets selection to the elements that are related to the `selectable` element.\n * \n * A related element is an element that is an association target to the `selectable`\n * ot the `selectable` has `parent` attribute.\n * \n * The related are not added to the `selectedItems` set and does not have `selected` attribute.\n * They are marked with `second-selected` attribute.\n */\n [propagateSelection](selectable: Element): void {\n if (this.selectedItems.has(selectable)) {\n return;\n }\n this.selectedItems.add(selectable);\n const id = this.readKey(selectable);\n if (!id) {\n this[notifyChanged]();\n return;\n }\n const selected = this[selectedIdsValue];\n const index = selected.findIndex((item) => item.id === id);\n if (index === -1) {\n selected.push({\n id,\n name: selectable.localName,\n node: selectable,\n });\n }\n this[selectAssociations](selectable);\n this[selectReverseAssociations](selectable);\n this[notifyChanged]();\n }\n\n /**\n * Marks `viz-association` and referenced targets of the `selectable` as a secondary selection.\n */\n [selectAssociations](selectable: Element): void {\n const nodes = selectable.querySelectorAll('viz-association');\n if (!nodes.length) {\n return;\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target');\n if (!target) {\n return;\n }\n node.setAttribute('secondary-selected', '');\n const targetElement = this.getDomainTarget(target);\n if (targetElement) {\n targetElement.setAttribute('secondary-selected', '');\n }\n });\n }\n\n /**\n * Similar to `[selectAssociations]()` but it selects associations where \n * the `selectable` is the target.\n */\n [selectReverseAssociations](selectable: Element): void {\n const id = this.readKey(selectable);\n if (!id) {\n return;\n }\n const nodes = this.target.querySelectorAll(`viz-association[data-target=\"${id}\"]`);\n if (!nodes.length) {\n return;\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target');\n if (!target) {\n return;\n }\n node.setAttribute('secondary-selected', '');\n const targetElement = node.parentElement;\n if (targetElement) {\n targetElement.setAttribute('secondary-selected', '');\n }\n });\n }\n\n /**\n * Removes secondary selection from the elements that are related to the `selectable` element.\n * \n * A related element is an element that is an association target to the `selectable`\n * ot the `selectable` has `parent` attribute.\n */\n [propagateDeselection](selectable: Element): void {\n if (!this.selectedItems.has(selectable)) {\n return;\n }\n this.selectedItems.delete(selectable);\n const id = this.readKey(selectable);\n if (!id) {\n this[notifyChanged]();\n return;\n }\n const selected = this[selectedIdsValue];\n const index = selected.findIndex((item) => item.id === id);\n if (index !== -1) {\n this[selectedIdsValue].splice(index, 1);\n }\n this[deselectAssociations](selectable);\n this[deselectReverseAssociations](selectable);\n this[notifyChanged]();\n }\n\n /**\n * Removes secondary selection mark from `viz-association`\n */\n [deselectAssociations](selectable: Element): void {\n const nodes = selectable.querySelectorAll('viz-association');\n if (!nodes.length) {\n return;\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target');\n if (!target) {\n return;\n }\n node.removeAttribute('secondary-selected');\n const targetElement = this.getDomainTarget(target);\n if (targetElement) {\n targetElement.removeAttribute('secondary-selected');\n }\n });\n }\n\n /**\n * Similar to `[selectAssociation]()` but it selects associations where \n * the `selectable` is the target.\n */\n [deselectReverseAssociations](selectable: Element): void {\n const id = this.readKey(selectable);\n if (!id) {\n return;\n }\n const nodes = this.target.querySelectorAll(`viz-association[data-target=\"${id}\"]`);\n if (!nodes.length) {\n return;\n }\n Array.from(nodes).forEach((node) => {\n const target = node.getAttribute('data-target');\n if (!target) {\n return;\n }\n node.removeAttribute('secondary-selected');\n const targetElement = node.parentElement;\n if (targetElement) {\n targetElement.removeAttribute('secondary-selected');\n }\n });\n }\n\n [notifyChanged](): void {\n this.target.dispatchEvent(new Event('selectedchange'));\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceAlignment.js","sourceRoot":"","sources":["../../../src/visualization/lib/WorkspaceAlignment.ts"],"names":[],"mappings":"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","sourcesContent":["import VizWorkspaceElement from '../elements/VizWorkspaceElement.js';\nimport { getObjectBoundingClientRect, notifyMoved } from './PositionUtils.js';\n\ninterface IPositionInfo {\n node: HTMLElement; \n box: DOMRect;\n}\n\n/**\n * A class that adds support for the nodes alignment on the workspace.\n * It adds methods that can align and distribute selected nodes.\n */\nexport class WorkspaceAlignment {\n /**\n * @return Currently selected on the workspace items.\n */\n get items(): HTMLElement[] {\n const { workspace } = this;\n const result: HTMLElement[] = [];\n workspace.selection.selected.forEach((i) => {\n const item = workspace.querySelector(`[data-key=\"${i.id}\"][data-alignable]`) as HTMLElement | null;\n if (item) {\n result.push(item);\n }\n });\n return result;\n }\n\n constructor(public workspace: VizWorkspaceElement) {\n }\n\n /**\n * @returns True when the number of selected items is above 1.\n */\n multiSelection(): boolean {\n return this.items.length > 1;\n }\n\n /**\n * Aligns selected items vertically to the top.\n */\n verticalTop(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift()!;\n const box = getObjectBoundingClientRect(first, this.workspace);\n items.forEach(async (node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const dy = box.y - nodeBox.y;\n if (dy !== 0) {\n notifyMoved(node, 0, dy);\n }\n });\n }\n\n /**\n * Aligns selected items vertically to the middle.\n */\n verticalCenter(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift()!;\n const box = getObjectBoundingClientRect(first, this.workspace);\n const middle = box.height / 2 + box.y;\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const nodeMiddle = nodeBox.height / 2 + nodeBox.y;\n const dy = middle - nodeMiddle;\n if (dy !== 0) {\n notifyMoved(node, 0, dy);\n }\n });\n }\n\n /**\n * Aligns selected items vertically to the bottom.\n */\n verticalBottom(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift();\n const box = getObjectBoundingClientRect(first!, this.workspace);\n const end = box.height + box.top;\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const dy = end - nodeBox.height - nodeBox.y;\n if (dy !== 0) {\n notifyMoved(node, 0, dy);\n }\n });\n }\n\n /**\n * Distributes selected items vertically.\n * \n */\n verticalDistribute(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n let maxStart = 0; // minimum y value\n let maxEnd = 0; // maximum y value\n const positioned: IPositionInfo[] = [];\n items.forEach((node) => {\n const box = getObjectBoundingClientRect(node, this.workspace);\n positioned.push({\n node,\n box,\n });\n const heightY = box.height + box.y;\n if (!maxStart || box.y <= maxStart) {\n maxStart = box.y;\n }\n if (!maxEnd || heightY >= maxEnd) {\n maxEnd = heightY;\n }\n });\n\n const first = positioned.shift()!;\n const last = positioned.pop()!;\n\n // The first element is to be positioned to the top line.\n notifyMoved(first.node, 0, maxStart - first.box.y);\n // The last element is to be positioned to the bottom line,\n notifyMoved(last.node, 0, maxEnd - last.box.height - last.box.y);\n // Elements in between to be positioned to the remaining space between the first and the last\n // split into equal sections, and positioned in the middle of each section.\n const distributionLength = (maxEnd - last.box.height) - (maxStart + first.box.height);\n const boxesLength = positioned.reduce((result, item) => (result + item.box.height), 0);\n const spaceAvailable = distributionLength - boxesLength;\n const spaceLength = spaceAvailable / (positioned.length + 1);\n let current = maxStart + first.box.height;\n positioned.forEach((item) => {\n const { node, box } = item;\n const newY = current + spaceLength;\n const dy = newY - box.y;\n current += spaceLength + box.height;\n if (dy !== 0) {\n notifyMoved(node, 0, dy);\n }\n });\n }\n\n /**\n * Aligns selected items horizontally to the left.\n */\n horizontalLeft(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift();\n const box = getObjectBoundingClientRect(first!, this.workspace);\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const dx = box.x - nodeBox.x;\n if (dx !== 0) {\n notifyMoved(node, dx, 0);\n }\n });\n }\n\n /**\n * Aligns selected items horizontally to the center.\n */\n horizontalCenter(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift();\n const box = getObjectBoundingClientRect(first!, this.workspace);\n const middle = box.width / 2 + box.x;\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const nodeMiddle = nodeBox.width / 2 + nodeBox.x;\n const dx = middle - nodeMiddle;\n if (dx !== 0) {\n notifyMoved(node, dx, 0);\n }\n });\n }\n\n /**\n * Aligns selected items horizontally to the bottom.\n */\n horizontalRight(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift();\n const box = getObjectBoundingClientRect(first!, this.workspace);\n const end = box.width + box.x;\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const dx = end - nodeBox.width - nodeBox.x;\n if (dx !== 0) {\n notifyMoved(node, dx, 0);\n }\n });\n }\n\n /**\n * Distributes selected items horizontally.\n */\n horizontalDistribute(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n let maxStart = 0; // minimum x value\n let maxEnd = 0; // maximum x value\n const positioned: IPositionInfo[] = [];\n items.forEach((node) => {\n const box = getObjectBoundingClientRect(node, this.workspace);\n positioned.push({\n node,\n box,\n });\n const widthX = box.width + box.x;\n if (!maxStart || box.x <= maxStart) {\n maxStart = box.x;\n }\n if (!maxEnd || widthX >= maxEnd) {\n maxEnd = widthX;\n }\n });\n\n const first = positioned.shift()!;\n const last = positioned.pop()!;\n\n // The first element is to be positioned to the left line.\n notifyMoved(first.node, maxStart - first.box.x, 0);\n // The last element is to be positioned to the right line,\n notifyMoved(last.node, maxEnd - last.box.width - last.box.x, 0);\n // Elements in between to be positioned to the remaining space between the first and the last\n // split into equal sections, and positioned in the middle of each section.\n const distributionLength = (maxEnd - last.box.width) - (maxStart + first.box.width);\n const boxesLength = positioned.reduce((result, item) => (result + item.box.width), 0);\n const spaceAvailable = distributionLength - boxesLength;\n const spaceLength = spaceAvailable / (positioned.length + 1);\n let current = maxStart + first.box.width;\n positioned.forEach((item) => {\n const { node, box } = item;\n const newX = current + spaceLength;\n const dx = newX - box.x;\n current += spaceLength + box.width;\n if (dx !== 0) {\n notifyMoved(node, dx, 0);\n }\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WorkspaceAlignment.js","sourceRoot":"","sources":["../../../src/visualization/lib/WorkspaceAlignment.ts"],"names":[],"mappings":"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","sourcesContent":["import VizWorkspaceElement from '../elements/VizWorkspaceElement.js';\nimport { getObjectBoundingClientRect, notifyMoved } from './PositionUtils.js';\n\ninterface IPositionInfo {\n node: HTMLElement; \n box: DOMRect;\n}\n\n/**\n * A class that adds support for the nodes alignment on the workspace.\n * It adds methods that can align and distribute selected nodes.\n */\nexport class WorkspaceAlignment {\n /**\n * @return Currently selected on the workspace items.\n */\n get items(): HTMLElement[] {\n const { workspace } = this;\n const result: HTMLElement[] = [];\n workspace.selection.selected.forEach((i) => {\n const item = workspace.querySelector(`[data-key=\"${i.id}\"][data-alignable]`) as HTMLElement | null;\n if (item) {\n result.push(item);\n }\n });\n return result;\n }\n\n constructor(public workspace: VizWorkspaceElement) {\n }\n\n /**\n * @returns True when the number of selected items is above 1.\n */\n multiSelection(): boolean {\n return this.items.length > 1;\n }\n\n /**\n * Aligns selected items vertically to the top.\n */\n verticalTop(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift()!;\n const box = getObjectBoundingClientRect(first, this.workspace);\n items.forEach(async (node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const dy = box.y - nodeBox.y;\n if (dy !== 0) {\n notifyMoved(node, 0, dy);\n }\n });\n }\n\n /**\n * Aligns selected items vertically to the middle.\n */\n verticalCenter(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift()!;\n const box = getObjectBoundingClientRect(first, this.workspace);\n const middle = box.height / 2 + box.y;\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const nodeMiddle = nodeBox.height / 2 + nodeBox.y;\n const dy = middle - nodeMiddle;\n if (dy !== 0) {\n notifyMoved(node, 0, dy);\n }\n });\n }\n\n /**\n * Aligns selected items vertically to the bottom.\n */\n verticalBottom(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift();\n const box = getObjectBoundingClientRect(first!, this.workspace);\n const end = box.height + box.top;\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const dy = end - nodeBox.height - nodeBox.y;\n if (dy !== 0) {\n notifyMoved(node, 0, dy);\n }\n });\n }\n\n /**\n * Distributes selected items vertically.\n * \n */\n verticalDistribute(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n let maxStart = 0; // minimum y value\n let maxEnd = 0; // maximum y value\n const positioned: IPositionInfo[] = [];\n items.forEach((node) => {\n const box = getObjectBoundingClientRect(node, this.workspace);\n positioned.push({\n node,\n box,\n });\n const heightY = box.height + box.y;\n if (!maxStart || box.y <= maxStart) {\n maxStart = box.y;\n }\n if (!maxEnd || heightY >= maxEnd) {\n maxEnd = heightY;\n }\n });\n\n const first = positioned.shift()!;\n const last = positioned.pop()!;\n\n // The first element is to be positioned to the top line.\n notifyMoved(first.node, 0, maxStart - first.box.y);\n // The last element is to be positioned to the bottom line,\n notifyMoved(last.node, 0, maxEnd - last.box.height - last.box.y);\n // Elements in between to be positioned to the remaining space between the first and the last\n // split into equal sections, and positioned in the middle of each section.\n const distributionLength = (maxEnd - last.box.height) - (maxStart + first.box.height);\n const boxesLength = positioned.reduce((result, item) => (result + item.box.height), 0);\n const spaceAvailable = distributionLength - boxesLength;\n const spaceLength = spaceAvailable / (positioned.length + 1);\n let current = maxStart + first.box.height;\n positioned.forEach((item) => {\n const { node, box } = item;\n const newY = current + spaceLength;\n const dy = newY - box.y;\n current += spaceLength + box.height;\n if (dy !== 0) {\n notifyMoved(node, 0, dy);\n }\n });\n }\n\n /**\n * Aligns selected items horizontally to the left.\n */\n horizontalLeft(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift();\n const box = getObjectBoundingClientRect(first!, this.workspace);\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const dx = box.x - nodeBox.x;\n if (dx !== 0) {\n notifyMoved(node, dx, 0);\n }\n });\n }\n\n /**\n * Aligns selected items horizontally to the center.\n */\n horizontalCenter(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift();\n const box = getObjectBoundingClientRect(first!, this.workspace);\n const middle = box.width / 2 + box.x;\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const nodeMiddle = nodeBox.width / 2 + nodeBox.x;\n const dx = middle - nodeMiddle;\n if (dx !== 0) {\n notifyMoved(node, dx, 0);\n }\n });\n }\n\n /**\n * Aligns selected items horizontally to the bottom.\n */\n horizontalRight(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n const first = items.shift();\n const box = getObjectBoundingClientRect(first!, this.workspace);\n const end = box.width + box.x;\n items.forEach((node) => {\n const nodeBox = getObjectBoundingClientRect(node, this.workspace);\n const dx = end - nodeBox.width - nodeBox.x;\n if (dx !== 0) {\n notifyMoved(node, dx, 0);\n }\n });\n }\n\n /**\n * Distributes selected items horizontally.\n */\n horizontalDistribute(): void {\n if (!this.multiSelection()) {\n return;\n }\n const { items } = this;\n let maxStart = 0; // minimum x value\n let maxEnd = 0; // maximum x value\n const positioned: IPositionInfo[] = [];\n items.forEach((node) => {\n const box = getObjectBoundingClientRect(node, this.workspace);\n positioned.push({\n node,\n box,\n });\n const widthX = box.width + box.x;\n if (!maxStart || box.x <= maxStart) {\n maxStart = box.x;\n }\n if (!maxEnd || widthX >= maxEnd) {\n maxEnd = widthX;\n }\n });\n\n const first = positioned.shift()!;\n const last = positioned.pop()!;\n\n // The first element is to be positioned to the left line.\n notifyMoved(first.node, maxStart - first.box.x, 0);\n // The last element is to be positioned to the right line,\n notifyMoved(last.node, maxEnd - last.box.width - last.box.x, 0);\n // Elements in between to be positioned to the remaining space between the first and the last\n // split into equal sections, and positioned in the middle of each section.\n const distributionLength = (maxEnd - last.box.width) - (maxStart + first.box.width);\n const boxesLength = positioned.reduce((result, item) => (result + item.box.width), 0);\n const spaceAvailable = distributionLength - boxesLength;\n const spaceLength = spaceAvailable / (positioned.length + 1);\n let current = maxStart + first.box.width;\n positioned.forEach((item) => {\n const { node, box } = item;\n const newX = current + spaceLength;\n const dx = newX - box.x;\n current += spaceLength + box.width;\n if (dx !== 0) {\n notifyMoved(node, dx, 0);\n }\n });\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
var _a, _b, _c;
|
|
1
2
|
import { getRelativeClickPoint, getObjectBoundingClientRect, getWorkspaceClick } from './PositionUtils.js';
|
|
2
3
|
const mousePortioningValue = Symbol('mousePortioningValue');
|
|
3
4
|
const setupMousePositioning = Symbol('setupMousePositioning');
|
|
@@ -26,8 +27,6 @@ const ignoredElements = ['viz-association'];
|
|
|
26
27
|
* Debugging helpers for the visualization workspace.
|
|
27
28
|
*/
|
|
28
29
|
export class WorkspaceDebugging {
|
|
29
|
-
workspace;
|
|
30
|
-
[mousePortioningValue] = false;
|
|
31
30
|
/**
|
|
32
31
|
* @return Whether a mouse position value is rendered in the workspace
|
|
33
32
|
*/
|
|
@@ -50,7 +49,6 @@ export class WorkspaceDebugging {
|
|
|
50
49
|
this[disableMousePositioning]();
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
|
-
[workspacePositioningValue] = false;
|
|
54
52
|
/**
|
|
55
53
|
* @return Whether the position of each visualized element is rendered in the workspace
|
|
56
54
|
*/
|
|
@@ -70,16 +68,16 @@ export class WorkspaceDebugging {
|
|
|
70
68
|
this[disableWorkspacePositioning]();
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
|
-
[positionedElements] = new WeakMap();
|
|
74
|
-
[mousePositionAnchor];
|
|
75
|
-
[mutationObserver];
|
|
76
71
|
constructor(workspace) {
|
|
77
72
|
this.workspace = workspace;
|
|
73
|
+
this[_a] = false;
|
|
74
|
+
this[_b] = false;
|
|
75
|
+
this[_c] = new WeakMap();
|
|
78
76
|
this[mouseMoveHandler] = this[mouseMoveHandler].bind(this);
|
|
79
77
|
this[mutationHandler] = this[mutationHandler].bind(this);
|
|
80
78
|
this[scrollHandler] = this[scrollHandler].bind(this);
|
|
81
79
|
}
|
|
82
|
-
[setupMousePositioning]() {
|
|
80
|
+
[(_a = mousePortioningValue, _b = workspacePositioningValue, _c = positionedElements, setupMousePositioning)]() {
|
|
83
81
|
this.workspace.addEventListener('mousemove', this[mouseMoveHandler]);
|
|
84
82
|
}
|
|
85
83
|
[disableMousePositioning]() {
|
|
@@ -256,7 +254,6 @@ export class WorkspaceDebugging {
|
|
|
256
254
|
const scaledSize = `(sw,sh) ${Math.round(rect.width)} x ${Math.round(rect.height)}`;
|
|
257
255
|
label.innerText = `${position}\n${realSize}\n${scaledSize}`;
|
|
258
256
|
}
|
|
259
|
-
[scrollTimeout];
|
|
260
257
|
/**
|
|
261
258
|
* Updates the labels on each visualized item after the workspace scroll
|
|
262
259
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceDebugging.js","sourceRoot":"","sources":["../../../src/visualization/lib/WorkspaceDebugging.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport VizWorkspaceElement from '../elements/VizWorkspaceElement.js';\nimport { getRelativeClickPoint, getObjectBoundingClientRect, getWorkspaceClick } from './PositionUtils.js';\n\nconst mousePortioningValue = Symbol('mousePortioningValue');\nconst setupMousePositioning = Symbol('setupMousePositioning');\nconst disableMousePositioning = Symbol('disableMousePositioning');\nconst mouseMoveHandler = Symbol('mouseMoveHandler');\nconst mousePositionAnchor = Symbol('mousePositionAnchor');\nconst workspacePositioningValue = Symbol('workspacePositioningValue');\nconst setupWorkspacePositioning = Symbol('setupWorkspacePositioning');\nconst disableWorkspacePositioning = Symbol('disableWorkspacePositioning');\nconst mutationHandler = Symbol('mutationHandler');\nconst mutationObserver = Symbol('mutationObserver');\nconst observeItems = Symbol('observeItems');\nconst processAddedNodes = Symbol('processAddedNodes');\nconst processRemovedNodes = Symbol('processRemovedNodes');\nconst updateVisualizationItem = Symbol('updateVisualizationItem');\nconst positionedElements = Symbol('positionedElements');\nconst scrollHandler = Symbol('scrollHandler');\nconst scrollTimeout = Symbol('scrollTimeout');\nconst onScroll = Symbol('onScroll');\nconst createPositioningInfoElement = Symbol('createPositioningInfoElement');\nconst ensurePositioningInfoElement = Symbol('ensurePositioningInfoElement');\nconst updatePositioningInfoElement = Symbol('updatePositioningInfoElement');\n\nlet elementIndex = 0;\n\nconst ignoredElements = ['viz-association'];\n\n/**\n * Debugging helpers for the visualization workspace.\n */\nexport class WorkspaceDebugging {\n [mousePortioningValue]: boolean = false;\n\n /**\n * @return Whether a mouse position value is rendered in the workspace\n */\n get mousePositioning(): boolean {\n return this[mousePortioningValue];\n }\n\n /**\n * @param value Whether a mouse position value is rendered in the workspace\n */\n set mousePositioning(value: boolean) {\n const old = this[mousePortioningValue];\n if (old === value) {\n return;\n }\n this[mousePortioningValue] = value;\n if (value) {\n this[setupMousePositioning]();\n } else {\n this[disableMousePositioning]();\n }\n }\n\n [workspacePositioningValue]: boolean = false;\n\n /**\n * @return Whether the position of each visualized element is rendered in the workspace\n */\n get workspacePositioning(): boolean {\n return this[workspacePositioningValue];\n }\n\n set workspacePositioning(value: boolean) {\n const old = this[workspacePositioningValue];\n if (old === value) {\n return;\n }\n this[workspacePositioningValue] = old;\n if (value) {\n this[setupWorkspacePositioning]();\n } else {\n this[disableWorkspacePositioning]();\n }\n }\n\n [positionedElements] = new WeakMap<HTMLElement, string>();\n\n [mousePositionAnchor]?: HTMLDivElement;\n\n [mutationObserver]?: MutationObserver;\n\n constructor(public workspace: VizWorkspaceElement) {\n this[mouseMoveHandler] = this[mouseMoveHandler].bind(this);\n this[mutationHandler] = this[mutationHandler].bind(this);\n this[scrollHandler] = this[scrollHandler].bind(this);\n }\n\n [setupMousePositioning](): void {\n this.workspace.addEventListener('mousemove', this[mouseMoveHandler]);\n }\n\n [disableMousePositioning](): void {\n this.workspace.removeEventListener('mousemove', this[mouseMoveHandler]);\n if (this[mousePositionAnchor]) {\n this.workspace.shadowRoot!.removeChild(this[mousePositionAnchor]!);\n this[mousePositionAnchor] = undefined;\n }\n }\n\n /**\n * Redraws the position anchor\n */\n [mouseMoveHandler](e: MouseEvent): void {\n const { clientX, clientY } = e;\n const rPos = getRelativeClickPoint(clientX, clientY, this.workspace);\n const pos = getWorkspaceClick(clientX, clientY, this.workspace);\n if (!this[mousePositionAnchor]) {\n const a = document.createElement('div');\n a.style.position = 'absolute';\n a.style.backgroundColor = 'rgb(253 216 53 / 54%)';\n a.style.padding = '4px 8px';\n a.style.pointerEvents = 'none';\n this.workspace.shadowRoot!.appendChild(a);\n this[mousePositionAnchor] = a;\n }\n this[mousePositionAnchor]!.style.left = `${pos.x + 8}px`;\n this[mousePositionAnchor]!.style.top = `${pos.y}px`;\n this[mousePositionAnchor]!.innerText = `${Math.round(rPos.x)} x ${Math.round(rPos.y)}`;\n }\n\n [setupWorkspacePositioning](): void {\n this[mutationObserver] = this[observeItems]();\n this.workspace.addEventListener('scroll', this[scrollHandler]);\n this.workspace.addEventListener('zoomchange', this[scrollHandler]);\n const nodes = this.workspace.querySelectorAll('*');\n this[processAddedNodes](nodes);\n }\n\n [disableWorkspacePositioning](): void {\n this.workspace.removeEventListener('scroll', this[scrollHandler]);\n this.workspace.removeEventListener('zoomchange', this[scrollHandler]);\n if (this[mutationObserver]) {\n this[mutationObserver]!.disconnect();\n this[mutationObserver] = undefined;\n }\n const nodes = this.workspace.shadowRoot!.querySelectorAll('.debug-viz-positioning');\n nodes.forEach((node) => {\n node.parentNode!.removeChild(node);\n });\n this[positionedElements] = new WeakMap();\n }\n\n /**\n * Observe items change in the element's light DOM\n * @return The observer handler\n */\n [observeItems](): MutationObserver {\n const config = { attributes: true, childList: true, subtree: true, };\n const observer = new MutationObserver(this[mutationHandler]);\n observer.observe(this.workspace, config);\n return observer;\n }\n\n /**\n * Processes mutations in the workspace and manages selection state.\n * @param mutationsList List of mutations.\n */\n [mutationHandler](mutationsList: MutationRecord[]): void {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n this[processAddedNodes](mutation.addedNodes);\n this[processRemovedNodes](mutation.removedNodes);\n } else if (mutation.type === 'attributes') {\n const { target } = mutation;\n this[updateVisualizationItem](target);\n }\n }\n }\n\n /**\n * Processes added to the canvas elements.\n * @param nodes The list of added nodes\n */\n [processAddedNodes](nodes: NodeList): void {\n nodes.forEach((node) => this[updateVisualizationItem](node));\n }\n\n isVisualizedObject(element: Element): boolean {\n const { localName } = element;\n if (localName.startsWith('viz-')) {\n return true;\n }\n return element.hasAttribute('data-key');\n }\n\n /**\n * Processes removed from the canvas elements.\n * @param nodes The list of removed nodes\n */\n [processRemovedNodes](nodes: NodeList): void {\n nodes.forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as HTMLElement;\n if (!this.isVisualizedObject(typed)) {\n return;\n }\n if (this[positionedElements].has(typed)) {\n const id = this[positionedElements].get(typed);\n this[positionedElements].delete(typed);\n const label = this.workspace.shadowRoot!.querySelector(`#${id}`) as HTMLDivElement;\n if (label) {\n label.parentNode!.removeChild(label);\n }\n }\n this[processRemovedNodes](typed.childNodes);\n });\n }\n\n [updateVisualizationItem](node: Node): void {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as HTMLElement;\n const { localName } = typed;\n if (!this.isVisualizedObject(typed) || ignoredElements.includes(localName)) {\n return;\n }\n const rect = typed.getBoundingClientRect();\n const { width, height } = rect;\n if (!width || !height) {\n // don't need them\n return;\n }\n this[ensurePositioningInfoElement](typed);\n this[updatePositioningInfoElement](typed, rect);\n }\n\n /**\n * Ensures that element that is positioned relative to each visualized item exists.\n */\n [ensurePositioningInfoElement](targetElement: HTMLElement): void {\n if (!this[positionedElements].has(targetElement)) {\n const label = this[createPositioningInfoElement](targetElement);\n this.workspace.shadowRoot!.appendChild(label);\n this[positionedElements].set(targetElement, label.id);\n }\n }\n\n /**\n * Creates an element that is positioned relative to each visualized item.\n * @param {HTMLElement} targetElement \n * @returns {HTMLDivElement}\n */\n [createPositioningInfoElement](targetElement: HTMLElement): HTMLDivElement {\n const label = document.createElement('div');\n label.style.position = 'absolute';\n label.style.backgroundColor = 'rgb(253 216 53 / 54%)';\n label.style.padding = '4px 8px';\n label.style.pointerEvents = 'none';\n label.id = `debug-position${elementIndex++}`;\n label.classList.add('debug-viz-positioning');\n label.dataset.target = targetElement.getAttribute('data-key')!;\n return label;\n }\n\n /**\n * Updates the position of the visualized element position label\n * @param {HTMLElement} targetElement \n * @param {DOMRect} rect \n */\n [updatePositioningInfoElement](targetElement: HTMLElement, rect: DOMRect): void {\n const { x, y } = rect;\n const rPos = getRelativeClickPoint(x, y, this.workspace);\n const pos = getWorkspaceClick(x, y, this.workspace);\n const sizedRect = getObjectBoundingClientRect(targetElement, this.workspace);\n\n const id = this[positionedElements].get(targetElement);\n const label = this.workspace.shadowRoot!.querySelector(`#${id}`) as HTMLDivElement;\n label.style.left = `${pos.x + 8}px`;\n label.style.top = `${pos.y + rect.height}px`;\n const position = `(x,y) ${Math.round(rPos.x)} x ${Math.round(rPos.y)}`;\n const realSize = `(w,h) ${Math.round(sizedRect.width)} x ${Math.round(sizedRect.height)}`;\n const scaledSize = `(sw,sh) ${Math.round(rect.width)} x ${Math.round(rect.height)}`;\n label.innerText = `${position}\\n${realSize}\\n${scaledSize}`;\n }\n\n [scrollTimeout]?: any;\n\n /**\n * Updates the labels on each visualized item after the workspace scroll\n */\n [scrollHandler](): void {\n if (this[scrollTimeout]) {\n clearTimeout(this[scrollTimeout]);\n }\n this[scrollTimeout] = setTimeout(() => {\n this[scrollTimeout] = undefined;\n this[onScroll]();\n }, 1);\n }\n\n /**\n * Updates the labels on each visualized item after the workspace scroll\n */\n [onScroll](): void {\n const nodes = Array.from(this.workspace.shadowRoot!.querySelectorAll('.debug-viz-positioning')) as HTMLDivElement[];\n nodes.forEach((node) => {\n const { target } = node.dataset;\n const item = this.workspace.querySelector(`[data-key=\"${target}\"]`);\n if (item) {\n this[updateVisualizationItem](item);\n }\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WorkspaceDebugging.js","sourceRoot":"","sources":["../../../src/visualization/lib/WorkspaceDebugging.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport VizWorkspaceElement from '../elements/VizWorkspaceElement.js';\nimport { getRelativeClickPoint, getObjectBoundingClientRect, getWorkspaceClick } from './PositionUtils.js';\n\nconst mousePortioningValue = Symbol('mousePortioningValue');\nconst setupMousePositioning = Symbol('setupMousePositioning');\nconst disableMousePositioning = Symbol('disableMousePositioning');\nconst mouseMoveHandler = Symbol('mouseMoveHandler');\nconst mousePositionAnchor = Symbol('mousePositionAnchor');\nconst workspacePositioningValue = Symbol('workspacePositioningValue');\nconst setupWorkspacePositioning = Symbol('setupWorkspacePositioning');\nconst disableWorkspacePositioning = Symbol('disableWorkspacePositioning');\nconst mutationHandler = Symbol('mutationHandler');\nconst mutationObserver = Symbol('mutationObserver');\nconst observeItems = Symbol('observeItems');\nconst processAddedNodes = Symbol('processAddedNodes');\nconst processRemovedNodes = Symbol('processRemovedNodes');\nconst updateVisualizationItem = Symbol('updateVisualizationItem');\nconst positionedElements = Symbol('positionedElements');\nconst scrollHandler = Symbol('scrollHandler');\nconst scrollTimeout = Symbol('scrollTimeout');\nconst onScroll = Symbol('onScroll');\nconst createPositioningInfoElement = Symbol('createPositioningInfoElement');\nconst ensurePositioningInfoElement = Symbol('ensurePositioningInfoElement');\nconst updatePositioningInfoElement = Symbol('updatePositioningInfoElement');\n\nlet elementIndex = 0;\n\nconst ignoredElements = ['viz-association'];\n\n/**\n * Debugging helpers for the visualization workspace.\n */\nexport class WorkspaceDebugging {\n [mousePortioningValue]: boolean = false;\n\n /**\n * @return Whether a mouse position value is rendered in the workspace\n */\n get mousePositioning(): boolean {\n return this[mousePortioningValue];\n }\n\n /**\n * @param value Whether a mouse position value is rendered in the workspace\n */\n set mousePositioning(value: boolean) {\n const old = this[mousePortioningValue];\n if (old === value) {\n return;\n }\n this[mousePortioningValue] = value;\n if (value) {\n this[setupMousePositioning]();\n } else {\n this[disableMousePositioning]();\n }\n }\n\n [workspacePositioningValue]: boolean = false;\n\n /**\n * @return Whether the position of each visualized element is rendered in the workspace\n */\n get workspacePositioning(): boolean {\n return this[workspacePositioningValue];\n }\n\n set workspacePositioning(value: boolean) {\n const old = this[workspacePositioningValue];\n if (old === value) {\n return;\n }\n this[workspacePositioningValue] = old;\n if (value) {\n this[setupWorkspacePositioning]();\n } else {\n this[disableWorkspacePositioning]();\n }\n }\n\n [positionedElements] = new WeakMap<HTMLElement, string>();\n\n [mousePositionAnchor]?: HTMLDivElement;\n\n [mutationObserver]?: MutationObserver;\n\n constructor(public workspace: VizWorkspaceElement) {\n this[mouseMoveHandler] = this[mouseMoveHandler].bind(this);\n this[mutationHandler] = this[mutationHandler].bind(this);\n this[scrollHandler] = this[scrollHandler].bind(this);\n }\n\n [setupMousePositioning](): void {\n this.workspace.addEventListener('mousemove', this[mouseMoveHandler]);\n }\n\n [disableMousePositioning](): void {\n this.workspace.removeEventListener('mousemove', this[mouseMoveHandler]);\n if (this[mousePositionAnchor]) {\n this.workspace.shadowRoot!.removeChild(this[mousePositionAnchor]!);\n this[mousePositionAnchor] = undefined;\n }\n }\n\n /**\n * Redraws the position anchor\n */\n [mouseMoveHandler](e: MouseEvent): void {\n const { clientX, clientY } = e;\n const rPos = getRelativeClickPoint(clientX, clientY, this.workspace);\n const pos = getWorkspaceClick(clientX, clientY, this.workspace);\n if (!this[mousePositionAnchor]) {\n const a = document.createElement('div');\n a.style.position = 'absolute';\n a.style.backgroundColor = 'rgb(253 216 53 / 54%)';\n a.style.padding = '4px 8px';\n a.style.pointerEvents = 'none';\n this.workspace.shadowRoot!.appendChild(a);\n this[mousePositionAnchor] = a;\n }\n this[mousePositionAnchor]!.style.left = `${pos.x + 8}px`;\n this[mousePositionAnchor]!.style.top = `${pos.y}px`;\n this[mousePositionAnchor]!.innerText = `${Math.round(rPos.x)} x ${Math.round(rPos.y)}`;\n }\n\n [setupWorkspacePositioning](): void {\n this[mutationObserver] = this[observeItems]();\n this.workspace.addEventListener('scroll', this[scrollHandler]);\n this.workspace.addEventListener('zoomchange', this[scrollHandler]);\n const nodes = this.workspace.querySelectorAll('*');\n this[processAddedNodes](nodes);\n }\n\n [disableWorkspacePositioning](): void {\n this.workspace.removeEventListener('scroll', this[scrollHandler]);\n this.workspace.removeEventListener('zoomchange', this[scrollHandler]);\n if (this[mutationObserver]) {\n this[mutationObserver]!.disconnect();\n this[mutationObserver] = undefined;\n }\n const nodes = this.workspace.shadowRoot!.querySelectorAll('.debug-viz-positioning');\n nodes.forEach((node) => {\n node.parentNode!.removeChild(node);\n });\n this[positionedElements] = new WeakMap();\n }\n\n /**\n * Observe items change in the element's light DOM\n * @return The observer handler\n */\n [observeItems](): MutationObserver {\n const config = { attributes: true, childList: true, subtree: true, };\n const observer = new MutationObserver(this[mutationHandler]);\n observer.observe(this.workspace, config);\n return observer;\n }\n\n /**\n * Processes mutations in the workspace and manages selection state.\n * @param mutationsList List of mutations.\n */\n [mutationHandler](mutationsList: MutationRecord[]): void {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n this[processAddedNodes](mutation.addedNodes);\n this[processRemovedNodes](mutation.removedNodes);\n } else if (mutation.type === 'attributes') {\n const { target } = mutation;\n this[updateVisualizationItem](target);\n }\n }\n }\n\n /**\n * Processes added to the canvas elements.\n * @param nodes The list of added nodes\n */\n [processAddedNodes](nodes: NodeList): void {\n nodes.forEach((node) => this[updateVisualizationItem](node));\n }\n\n isVisualizedObject(element: Element): boolean {\n const { localName } = element;\n if (localName.startsWith('viz-')) {\n return true;\n }\n return element.hasAttribute('data-key');\n }\n\n /**\n * Processes removed from the canvas elements.\n * @param nodes The list of removed nodes\n */\n [processRemovedNodes](nodes: NodeList): void {\n nodes.forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as HTMLElement;\n if (!this.isVisualizedObject(typed)) {\n return;\n }\n if (this[positionedElements].has(typed)) {\n const id = this[positionedElements].get(typed);\n this[positionedElements].delete(typed);\n const label = this.workspace.shadowRoot!.querySelector(`#${id}`) as HTMLDivElement;\n if (label) {\n label.parentNode!.removeChild(label);\n }\n }\n this[processRemovedNodes](typed.childNodes);\n });\n }\n\n [updateVisualizationItem](node: Node): void {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as HTMLElement;\n const { localName } = typed;\n if (!this.isVisualizedObject(typed) || ignoredElements.includes(localName)) {\n return;\n }\n const rect = typed.getBoundingClientRect();\n const { width, height } = rect;\n if (!width || !height) {\n // don't need them\n return;\n }\n this[ensurePositioningInfoElement](typed);\n this[updatePositioningInfoElement](typed, rect);\n }\n\n /**\n * Ensures that element that is positioned relative to each visualized item exists.\n */\n [ensurePositioningInfoElement](targetElement: HTMLElement): void {\n if (!this[positionedElements].has(targetElement)) {\n const label = this[createPositioningInfoElement](targetElement);\n this.workspace.shadowRoot!.appendChild(label);\n this[positionedElements].set(targetElement, label.id);\n }\n }\n\n /**\n * Creates an element that is positioned relative to each visualized item.\n * @param {HTMLElement} targetElement \n * @returns {HTMLDivElement}\n */\n [createPositioningInfoElement](targetElement: HTMLElement): HTMLDivElement {\n const label = document.createElement('div');\n label.style.position = 'absolute';\n label.style.backgroundColor = 'rgb(253 216 53 / 54%)';\n label.style.padding = '4px 8px';\n label.style.pointerEvents = 'none';\n label.id = `debug-position${elementIndex++}`;\n label.classList.add('debug-viz-positioning');\n label.dataset.target = targetElement.getAttribute('data-key')!;\n return label;\n }\n\n /**\n * Updates the position of the visualized element position label\n * @param {HTMLElement} targetElement \n * @param {DOMRect} rect \n */\n [updatePositioningInfoElement](targetElement: HTMLElement, rect: DOMRect): void {\n const { x, y } = rect;\n const rPos = getRelativeClickPoint(x, y, this.workspace);\n const pos = getWorkspaceClick(x, y, this.workspace);\n const sizedRect = getObjectBoundingClientRect(targetElement, this.workspace);\n\n const id = this[positionedElements].get(targetElement);\n const label = this.workspace.shadowRoot!.querySelector(`#${id}`) as HTMLDivElement;\n label.style.left = `${pos.x + 8}px`;\n label.style.top = `${pos.y + rect.height}px`;\n const position = `(x,y) ${Math.round(rPos.x)} x ${Math.round(rPos.y)}`;\n const realSize = `(w,h) ${Math.round(sizedRect.width)} x ${Math.round(sizedRect.height)}`;\n const scaledSize = `(sw,sh) ${Math.round(rect.width)} x ${Math.round(rect.height)}`;\n label.innerText = `${position}\\n${realSize}\\n${scaledSize}`;\n }\n\n [scrollTimeout]?: any;\n\n /**\n * Updates the labels on each visualized item after the workspace scroll\n */\n [scrollHandler](): void {\n if (this[scrollTimeout]) {\n clearTimeout(this[scrollTimeout]);\n }\n this[scrollTimeout] = setTimeout(() => {\n this[scrollTimeout] = undefined;\n this[onScroll]();\n }, 1);\n }\n\n /**\n * Updates the labels on each visualized item after the workspace scroll\n */\n [onScroll](): void {\n const nodes = Array.from(this.workspace.shadowRoot!.querySelectorAll('.debug-viz-positioning')) as HTMLDivElement[];\n nodes.forEach((node) => {\n const { target } = node.dataset;\n const item = this.workspace.querySelector(`[data-key=\"${target}\"]`);\n if (item) {\n this[updateVisualizationItem](item);\n }\n });\n }\n}\n"]}
|