@api-client/ui 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/amf/lib/AmfParameters.js +0 -4
- package/dist/amf/lib/AmfParameters.js.map +1 -1
- package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
- package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
- package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
- package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
- package/dist/amf/store/AmfGraphStore.js +0 -2
- package/dist/amf/store/AmfGraphStore.js.map +1 -1
- package/dist/amf/store/AmfStore.js +0 -7
- package/dist/amf/store/AmfStore.js.map +1 -1
- package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
- package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
- package/dist/bindings/base/PlatformBindings.js +6 -10
- package/dist/bindings/base/PlatformBindings.js.map +1 -1
- package/dist/bindings/base/ProxyBindings.js +9 -6
- package/dist/bindings/base/ProxyBindings.js.map +1 -1
- package/dist/bindings/base/SharedWorkerThread.js +4 -1
- package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
- package/dist/bindings/base/StoreBindings.js +162 -170
- package/dist/bindings/base/StoreBindings.js.map +1 -1
- package/dist/bindings/web/WebConfigurationBindings.js +22 -24
- package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
- package/dist/bindings/web/WebFileBindings.js +7 -4
- package/dist/bindings/web/WebFileBindings.js.map +1 -1
- package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
- package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
- package/dist/bindings/web/WebNavigationBindings.js +4 -1
- package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
- package/dist/bindings/web/WebProxyBindings.js +5 -6
- package/dist/bindings/web/WebProxyBindings.js.map +1 -1
- package/dist/bindings/web/WebStoreBindings.js +39 -44
- package/dist/bindings/web/WebStoreBindings.js.map +1 -1
- package/dist/contextual-menu/ContextualMenu.js +10 -19
- package/dist/contextual-menu/ContextualMenu.js.map +1 -1
- package/dist/contextual-menu/ContextualMenuElement.js +4 -32
- package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
- package/dist/contextual-menu/MenuItem.js +0 -12
- package/dist/contextual-menu/MenuItem.js.map +1 -1
- package/dist/define/amf/api-annotation-document.js +1 -1
- package/dist/define/amf/api-annotation-document.js.map +1 -1
- package/dist/define/amf/api-authorization-editor.js +1 -1
- package/dist/define/amf/api-authorization-editor.js.map +1 -1
- package/dist/define/amf/api-channel-document.js +1 -1
- package/dist/define/amf/api-channel-document.js.map +1 -1
- package/dist/define/amf/api-documentation-document.js +1 -1
- package/dist/define/amf/api-documentation-document.js.map +1 -1
- package/dist/define/amf/api-documentation.js +1 -1
- package/dist/define/amf/api-documentation.js.map +1 -1
- package/dist/define/amf/api-navigation.js +1 -1
- package/dist/define/amf/api-navigation.js.map +1 -1
- package/dist/define/amf/api-operation-document.js +1 -1
- package/dist/define/amf/api-operation-document.js.map +1 -1
- package/dist/define/amf/api-parameter-document.js +1 -1
- package/dist/define/amf/api-parameter-document.js.map +1 -1
- package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
- package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
- package/dist/define/amf/api-payload-document.js +1 -1
- package/dist/define/amf/api-payload-document.js.map +1 -1
- package/dist/define/amf/api-request-document.js +1 -1
- package/dist/define/amf/api-request-document.js.map +1 -1
- package/dist/define/amf/api-request-editor.js +1 -1
- package/dist/define/amf/api-request-editor.js.map +1 -1
- package/dist/define/amf/api-request.js +1 -1
- package/dist/define/amf/api-request.js.map +1 -1
- package/dist/define/amf/api-resource-document.js +1 -1
- package/dist/define/amf/api-resource-document.js.map +1 -1
- package/dist/define/amf/api-response-document.js +1 -1
- package/dist/define/amf/api-response-document.js.map +1 -1
- package/dist/define/amf/api-schema-document.js +1 -1
- package/dist/define/amf/api-schema-document.js.map +1 -1
- package/dist/define/amf/api-security-document.js +1 -1
- package/dist/define/amf/api-security-document.js.map +1 -1
- package/dist/define/amf/api-security-requirement-document.js +1 -1
- package/dist/define/amf/api-security-requirement-document.js.map +1 -1
- package/dist/define/amf/api-server-picker.js +1 -1
- package/dist/define/amf/api-server-picker.js.map +1 -1
- package/dist/define/amf/api-summary.js +1 -1
- package/dist/define/amf/api-summary.js.map +1 -1
- package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
- package/dist/define/authorization/apikey-authorization.js +1 -1
- package/dist/define/authorization/apikey-authorization.js.map +1 -1
- package/dist/define/authorization/basic-authorization.js +1 -1
- package/dist/define/authorization/basic-authorization.js.map +1 -1
- package/dist/define/authorization/bearer-authorization.js +1 -1
- package/dist/define/authorization/bearer-authorization.js.map +1 -1
- package/dist/define/authorization/cc-authorization.js +1 -1
- package/dist/define/authorization/cc-authorization.js.map +1 -1
- package/dist/define/authorization/ntlm-authorization.js +1 -1
- package/dist/define/authorization/ntlm-authorization.js.map +1 -1
- package/dist/define/authorization/oauth2-authorization.js +1 -1
- package/dist/define/authorization/oauth2-authorization.js.map +1 -1
- package/dist/define/authorization/oidc-authorization.js +1 -1
- package/dist/define/authorization/oidc-authorization.js.map +1 -1
- package/dist/define/contextual-menu/contextual-menu.js +1 -1
- package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
- package/dist/define/dialog/confirm-delete-dialog.js +1 -1
- package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
- package/dist/define/dialog/rename-dialog.js +1 -1
- package/dist/define/dialog/rename-dialog.js.map +1 -1
- package/dist/define/files/share-file.js +1 -1
- package/dist/define/files/share-file.js.map +1 -1
- package/dist/define/har/har-viewer.js +1 -1
- package/dist/define/har/har-viewer.js.map +1 -1
- package/dist/define/highlight/marked-highlight.js +1 -1
- package/dist/define/highlight/marked-highlight.js.map +1 -1
- package/dist/define/highlight/prism-highlight.js +1 -1
- package/dist/define/highlight/prism-highlight.js.map +1 -1
- package/dist/define/http/http-assertions.js +1 -1
- package/dist/define/http/http-assertions.js.map +1 -1
- package/dist/define/http/http-body-editor.js +1 -1
- package/dist/define/http/http-body-editor.js.map +1 -1
- package/dist/define/http/http-body-multipart-editor.js +1 -1
- package/dist/define/http/http-body-multipart-editor.js.map +1 -1
- package/dist/define/http/http-body-text-editor.js +1 -1
- package/dist/define/http/http-body-text-editor.js.map +1 -1
- package/dist/define/http/http-body-urlencoded-editor.js +1 -1
- package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
- package/dist/define/http/http-headers-form.js +1 -1
- package/dist/define/http/http-headers-form.js.map +1 -1
- package/dist/define/http/http-log-body.js +1 -1
- package/dist/define/http/http-log-body.js.map +1 -1
- package/dist/define/http/http-log-headers.js +1 -1
- package/dist/define/http/http-log-headers.js.map +1 -1
- package/dist/define/http/http-log-timings.js +1 -1
- package/dist/define/http/http-log-timings.js.map +1 -1
- package/dist/define/http/http-request-config.js +1 -1
- package/dist/define/http/http-request-config.js.map +1 -1
- package/dist/define/http/http-request-editor.js +1 -1
- package/dist/define/http/http-request-editor.js.map +1 -1
- package/dist/define/http/http-request-log.js +1 -1
- package/dist/define/http/http-request-log.js.map +1 -1
- package/dist/define/http/http-snippets.js +1 -1
- package/dist/define/http/http-snippets.js.map +1 -1
- package/dist/define/http/http-url-input.js +1 -1
- package/dist/define/http/http-url-input.js.map +1 -1
- package/dist/define/http/http-url-params-form.js +1 -1
- package/dist/define/http/http-url-params-form.js.map +1 -1
- package/dist/define/http-project/http-project-request-history.js +1 -1
- package/dist/define/http-project/http-project-request-history.js.map +1 -1
- package/dist/define/http-project/http-project-request.js +2 -2
- package/dist/define/http-project/http-project-request.js.map +1 -1
- package/dist/define/http-project/project-navigation.js +1 -1
- package/dist/define/http-project/project-navigation.js.map +1 -1
- package/dist/define/http-project/project-run-report.js +1 -1
- package/dist/define/http-project/project-run-report.js.map +1 -1
- package/dist/define/http-project/project-runner.js +2 -2
- package/dist/define/http-project/project-runner.js.map +1 -1
- package/dist/define/layout/split-view.js +1 -1
- package/dist/define/layout/split-view.js.map +1 -1
- package/dist/define/schema-design/schema-design-navigation.js +1 -1
- package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
- package/dist/define/schema-design/schema-namespace-selector.js +1 -1
- package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
- package/dist/define/ui/ui-button.js +1 -1
- package/dist/define/ui/ui-button.js.map +1 -1
- package/dist/define/ui/ui-chip.js +1 -1
- package/dist/define/ui/ui-chip.js.map +1 -1
- package/dist/define/ui/ui-collapse.js +1 -1
- package/dist/define/ui/ui-collapse.js.map +1 -1
- package/dist/define/ui/ui-dialog.js +1 -1
- package/dist/define/ui/ui-dialog.js.map +1 -1
- package/dist/define/ui/ui-dropdown-list.js +1 -1
- package/dist/define/ui/ui-dropdown-list.js.map +1 -1
- package/dist/define/ui/ui-icon-button.js +1 -1
- package/dist/define/ui/ui-icon-button.js.map +1 -1
- package/dist/define/ui/ui-icon.js +1 -1
- package/dist/define/ui/ui-icon.js.map +1 -1
- package/dist/define/ui/ui-list-item.js +1 -1
- package/dist/define/ui/ui-list-item.js.map +1 -1
- package/dist/define/ui/ui-list.js +1 -1
- package/dist/define/ui/ui-list.js.map +1 -1
- package/dist/define/ui/ui-listbox.js +1 -1
- package/dist/define/ui/ui-listbox.js.map +1 -1
- package/dist/define/ui/ui-progress.js +1 -1
- package/dist/define/ui/ui-progress.js.map +1 -1
- package/dist/define/ui/ui-segmented-button-set.js +1 -1
- package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
- package/dist/define/ui/ui-segmented-button.js +1 -1
- package/dist/define/ui/ui-segmented-button.js.map +1 -1
- package/dist/define/ui/ui-snackbar.js +1 -1
- package/dist/define/ui/ui-snackbar.js.map +1 -1
- package/dist/define/ui/ui-tab.js +1 -1
- package/dist/define/ui/ui-tab.js.map +1 -1
- package/dist/define/ui/ui-tabs.js +1 -1
- package/dist/define/ui/ui-tabs.js.map +1 -1
- package/dist/directives/data-attr.js +0 -1
- package/dist/directives/data-attr.js.map +1 -1
- package/dist/elements/ApiElement.js +0 -7
- package/dist/elements/ApiElement.js.map +1 -1
- package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
- package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiAuthorizationEditor.element.js +0 -32
- package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiDocumentation.element.js +0 -91
- package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
- package/dist/elements/amf/ApiDocumentationBase.js +0 -9
- package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
- package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
- package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiNavigation.element.js +0 -97
- package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.js +0 -76
- package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
- package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
- package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
- package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
- package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequest.element.js +0 -78
- package/dist/elements/amf/ApiRequest.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
- package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.js +0 -118
- package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
- package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
- package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
- package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
- package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
- package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiServerPicker.element.js +2 -65
- package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
- package/dist/elements/amf/ApiSummary.element.js +0 -26
- package/dist/elements/amf/ApiSummary.element.js.map +1 -1
- package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
- package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
- package/dist/elements/amf/authorization/AmfBasic.js +0 -4
- package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
- package/dist/elements/amf/authorization/AmfBearer.js +0 -4
- package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
- package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
- package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
- package/dist/elements/amf/authorization/AmfOidc.js +0 -4
- package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
- package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
- package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
- package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
- package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
- package/dist/elements/authorization/OAuth2Authorize.js +0 -14
- package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
- package/dist/elements/authorization/OidcAuthorize.js +0 -14
- package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
- package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
- package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
- package/dist/elements/authorization/ui/Authorization.js +18 -32
- package/dist/elements/authorization/ui/Authorization.js.map +1 -1
- package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
- package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
- package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
- package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
- package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
- package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
- package/dist/elements/code/HttpSnippets.js +9 -8
- package/dist/elements/code/HttpSnippets.js.map +1 -1
- package/dist/elements/dialog/ConfirmDelete.js +0 -12
- package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
- package/dist/elements/dialog/Rename.js +0 -6
- package/dist/elements/dialog/Rename.js.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.js +8 -11
- package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
- package/dist/elements/environment/ServerEditor.js +7 -45
- package/dist/elements/environment/ServerEditor.js.map +1 -1
- package/dist/elements/environment/VariablesEditor.js +7 -12
- package/dist/elements/environment/VariablesEditor.js.map +1 -1
- package/dist/elements/files/ShareFile.js +19 -57
- package/dist/elements/files/ShareFile.js.map +1 -1
- package/dist/elements/har/HarViewer.js +6 -7
- package/dist/elements/har/HarViewer.js.map +1 -1
- package/dist/elements/highlight/MarkedHighlight.js +4 -56
- package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
- package/dist/elements/highlight/PrismHighlight.js +9 -18
- package/dist/elements/highlight/PrismHighlight.js.map +1 -1
- package/dist/elements/highlight/PrismHighlighter.js +4 -6
- package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
- package/dist/elements/http/BodyEditor.js +21 -33
- package/dist/elements/http/BodyEditor.js.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.js +17 -18
- package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
- package/dist/elements/http/BodyTextEditor.js +2 -15
- package/dist/elements/http/BodyTextEditor.js.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.js +20 -21
- package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
- package/dist/elements/http/HeadersForm.js +16 -17
- package/dist/elements/http/HeadersForm.js.map +1 -1
- package/dist/elements/http/HttpAssertions.js +8 -6
- package/dist/elements/http/HttpAssertions.js.map +1 -1
- package/dist/elements/http/LogBody.js +10 -21
- package/dist/elements/http/LogBody.js.map +1 -1
- package/dist/elements/http/LogHeaders.js +4 -23
- package/dist/elements/http/LogHeaders.js.map +1 -1
- package/dist/elements/http/LogTimings.js +11 -13
- package/dist/elements/http/LogTimings.js.map +1 -1
- package/dist/elements/http/RequestConfigElement.js +7 -4
- package/dist/elements/http/RequestConfigElement.js.map +1 -1
- package/dist/elements/http/RequestEditor.js +54 -88
- package/dist/elements/http/RequestEditor.js.map +1 -1
- package/dist/elements/http/RequestLog.js +9 -14
- package/dist/elements/http/RequestLog.js.map +1 -1
- package/dist/elements/http/UrlInput.js +15 -25
- package/dist/elements/http/UrlInput.js.map +1 -1
- package/dist/elements/http/UrlParamsForm.js +16 -13
- package/dist/elements/http/UrlParamsForm.js.map +1 -1
- package/dist/elements/layout/LayoutManager.js +16 -24
- package/dist/elements/layout/LayoutManager.js.map +1 -1
- package/dist/elements/layout/LayoutPanelElement.js +17 -23
- package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
- package/dist/elements/layout/SplitItem.js +4 -12
- package/dist/elements/layout/SplitItem.js.map +1 -1
- package/dist/elements/layout/SplitLayout.js +18 -24
- package/dist/elements/layout/SplitLayout.js.map +1 -1
- package/dist/elements/layout/SplitPanel.js +10 -16
- package/dist/elements/layout/SplitPanel.js.map +1 -1
- package/dist/elements/layout/SplitView.js +17 -26
- package/dist/elements/layout/SplitView.js.map +1 -1
- package/dist/elements/navigation/AppNavigationElement.js +8 -47
- package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
- package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
- package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
- package/dist/elements/project/HttpProjectRequest.js +0 -38
- package/dist/elements/project/HttpProjectRequest.js.map +1 -1
- package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
- package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
- package/dist/elements/project/ProjectNavigation.js +0 -4
- package/dist/elements/project/ProjectNavigation.js.map +1 -1
- package/dist/elements/project/ProjectRunReport.js +4 -15
- package/dist/elements/project/ProjectRunReport.js.map +1 -1
- package/dist/elements/project/ProjectRunner.js +2 -47
- package/dist/elements/project/ProjectRunner.js.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.js +0 -13
- package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.js +0 -22
- package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
- package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
- package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.js +0 -36
- package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.js +0 -18
- package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.js +0 -12
- package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
- package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
- package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
- package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
- package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
- package/dist/elements/user/UserAvatarElement.js +0 -9
- package/dist/elements/user/UserAvatarElement.js.map +1 -1
- package/dist/events/http-client/models/CertificatesEvents.js +2 -2
- package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
- package/dist/http-client/idb/Base.js +5 -10
- package/dist/http-client/idb/Base.js.map +1 -1
- package/dist/http-client/idb/LegacyMockedStore.js +0 -1
- package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
- package/dist/http-client/idb/MockedStore.js +3 -1
- package/dist/http-client/idb/MockedStore.js.map +1 -1
- package/dist/http-client/store/DataImportProcessor.js +0 -3
- package/dist/http-client/store/DataImportProcessor.js.map +1 -1
- package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
- package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
- package/dist/http-client/store/IdbThread.js +23 -20
- package/dist/http-client/store/IdbThread.js.map +1 -1
- package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
- package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
- package/dist/http-client/store/idb/IdbStore.js +0 -2
- package/dist/http-client/store/idb/IdbStore.js.map +1 -1
- package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
- package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
- package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
- package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
- package/dist/lib/chart/HttpHistoryChart.js +7 -8
- package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
- package/dist/mixins/FileDropMixin.js +0 -1
- package/dist/mixins/FileDropMixin.js.map +1 -1
- package/dist/mixins/RenderableMixin.js +11 -15
- package/dist/mixins/RenderableMixin.js.map +1 -1
- package/dist/pages/ApplicationScreen.js +34 -55
- package/dist/pages/ApplicationScreen.js.map +1 -1
- package/dist/pages/api-client/ApiClient.screen.js +11 -20
- package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.js +4 -6
- package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.js +21 -37
- package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
- package/dist/pages/api-client/Telemetry.screen.js +1 -2
- package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
- package/dist/pages/api-client/pages/Files.page.js +6 -27
- package/dist/pages/api-client/pages/Files.page.js.map +1 -1
- package/dist/pages/api-client/pages/Settings.page.js +2 -4
- package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
- package/dist/pages/api-client/pages/Trash.page.js +2 -13
- package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
- package/dist/pages/demo/DemoPage.js +13 -13
- package/dist/pages/demo/DemoPage.js.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.js +25 -35
- package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
- package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
- package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
- package/dist/store/HttpStore.js +0 -3
- package/dist/store/HttpStore.js.map +1 -1
- package/dist/store/UserCache.js +5 -5
- package/dist/store/UserCache.js.map +1 -1
- package/dist/ui/UiElement.js +4 -5
- package/dist/ui/UiElement.js.map +1 -1
- package/dist/ui/button/SegmentedButton.js +9 -11
- package/dist/ui/button/SegmentedButton.js.map +1 -1
- package/dist/ui/button/SegmentedButtonsSet.js +6 -7
- package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
- package/dist/ui/button/UiButton.js +17 -39
- package/dist/ui/button/UiButton.js.map +1 -1
- package/dist/ui/button/UiIconButton.js +9 -35
- package/dist/ui/button/UiIconButton.js.map +1 -1
- package/dist/ui/chip/UiChip.js +9 -49
- package/dist/ui/chip/UiChip.js.map +1 -1
- package/dist/ui/collapse/UiCollapse.js +15 -20
- package/dist/ui/collapse/UiCollapse.js.map +1 -1
- package/dist/ui/controllers/ActionController.js +143 -144
- package/dist/ui/controllers/ActionController.js.map +1 -1
- package/dist/ui/controllers/RadioSelectionController.js +0 -1
- package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
- package/dist/ui/date/DateTime.js +3 -3
- package/dist/ui/date/DateTime.js.map +1 -1
- package/dist/ui/dialog/UiDialog.js +14 -38
- package/dist/ui/dialog/UiDialog.js.map +1 -1
- package/dist/ui/effects/ripple.js +20 -18
- package/dist/ui/effects/ripple.js.map +1 -1
- package/dist/ui/effects/rippleDirective.js +6 -7
- package/dist/ui/effects/rippleDirective.js.map +1 -1
- package/dist/ui/icons/UiIcon.js +4 -3
- package/dist/ui/icons/UiIcon.js.map +1 -1
- package/dist/ui/input/CheckboxElement.js +12 -10
- package/dist/ui/input/CheckboxElement.js.map +1 -1
- package/dist/ui/input/CheckedElement.js +2 -13
- package/dist/ui/input/CheckedElement.js.map +1 -1
- package/dist/ui/input/Input.js +169 -234
- package/dist/ui/input/Input.js.map +1 -1
- package/dist/ui/input/RadioElement.js +13 -11
- package/dist/ui/input/RadioElement.js.map +1 -1
- package/dist/ui/input/SwitchElement.js +0 -18
- package/dist/ui/input/SwitchElement.js.map +1 -1
- package/dist/ui/input/TextAreaElement.js +0 -15
- package/dist/ui/input/TextAreaElement.js.map +1 -1
- package/dist/ui/list/DividerElement.js +5 -10
- package/dist/ui/list/DividerElement.js.map +1 -1
- package/dist/ui/list/UiDropdownList.js +7 -48
- package/dist/ui/list/UiDropdownList.js.map +1 -1
- package/dist/ui/list/UiList.js +3 -15
- package/dist/ui/list/UiList.js.map +1 -1
- package/dist/ui/list/UiListItem.js +4 -17
- package/dist/ui/list/UiListItem.js.map +1 -1
- package/dist/ui/list/UiListbox.js +0 -1
- package/dist/ui/list/UiListbox.js.map +1 -1
- package/dist/ui/notification/SnackNotifications.js +1 -2
- package/dist/ui/notification/SnackNotifications.js.map +1 -1
- package/dist/ui/notification/Snackbar.js +27 -51
- package/dist/ui/notification/Snackbar.js.map +1 -1
- package/dist/ui/progress/Range.js +24 -23
- package/dist/ui/progress/Range.js.map +1 -1
- package/dist/ui/progress/UiProgress.js +0 -11
- package/dist/ui/progress/UiProgress.js.map +1 -1
- package/dist/ui/table/DataTable.js +7 -12
- package/dist/ui/table/DataTable.js.map +1 -1
- package/dist/ui/tabs/UiTab.js +24 -25
- package/dist/ui/tabs/UiTab.js.map +1 -1
- package/dist/ui/tabs/UiTabs.js +21 -35
- package/dist/ui/tabs/UiTabs.js.map +1 -1
- package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
- package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
- package/dist/visualization/lib/AssociationAnchors.js +16 -28
- package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
- package/dist/visualization/lib/Point.js +0 -2
- package/dist/visualization/lib/Point.js.map +1 -1
- package/dist/visualization/lib/SelectionManager.js +10 -11
- package/dist/visualization/lib/SelectionManager.js.map +1 -1
- package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
- package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
- package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
- package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
- package/dist/visualization/lib/WorkspaceEdges.js +17 -19
- package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
- package/dist/visualization/lib/WorkspaceGestures.js +0 -3
- package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
- package/dist/visualization/lib/WorkspaceSizing.js +4 -6
- package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
- package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
- package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
- package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
- package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
- package/dist/visualization/lib/tips/TipArtist.js +0 -3
- package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
- package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
- package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
- package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
- package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
- package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
- package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
- package/package.json +3 -2
- package/tsconfig.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RectilinearLine.js","sourceRoot":"","sources":["../../../../src/visualization/lib/lines/RectilinearLine.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-lonely-if */\nimport { findDirection } from '../PositionUtils.js';\nimport { Point } from '../Point.js';\nimport { ILineSketchOptions, IVisualizationRectilinearLineShape } from '../VisualizationTypes.js';\nimport { GeoDirection, IWorkspaceEdge } from '../types.js';\n\nexport const startWest = Symbol('startWest');\nexport const startEast = Symbol('startEast');\nexport const startSouth = Symbol('startSouth');\nexport const startNorth = Symbol('startNorth');\nexport const sketchEastEast = Symbol('sketchEastEast');\nexport const sketchEastWest = Symbol('sketchEastWest');\nexport const sketchEastSouth = Symbol('sketchEastSouth');\nexport const sketchEastNorth = Symbol('sketchEastNorth');\nexport const sketchNorthWest = Symbol('sketchNorthWest');\nexport const sketchNorthEast = Symbol('sketchNorthEast');\nexport const sketchNorthSouth = Symbol('sketchNorthSouth');\nexport const sketchNorthNorth = Symbol('sketchNorthNorth');\nexport const sketchWestSouth = Symbol('sketchWestSouth');\nexport const sketchWestWest = Symbol('sketchWestWest');\nexport const sketchWestEast = Symbol('sketchWestEast');\nexport const sketchWestNorth = Symbol('sketchWestNorth');\nexport const sketchSouthNorth = Symbol('sketchSouthNorth');\nexport const sketchSouthWest = Symbol('sketchSouthWest');\nexport const sketchSouthSouth = Symbol('sketchSouthSouth');\nexport const sketchSouthEast = Symbol('sketchSouthEast');\n\nexport const ElbowThreshold = 24;\n\n/**\n * A class that draws a rectilinear line\n */\nexport class RectilinearLine {\n ep: Point;\n\n sp: Point;\n\n source: DOMRect;\n\n target: DOMRect;\n\n others?: IWorkspaceEdge[];\n\n /** \n * The default padding to use when computing distance between the line and an object.\n */\n overlapPadding: number = 20;\n\n /** \n * The list of all points (start + end + control points)\n */\n coordinates: Point[];\n\n /**\n * The list of all control points. \n */\n controlPoints: Point[] = [];\n\n transformOrigin: string;\n\n /** \n * The delta between Y coordinates\n */\n dx: number;\n \n /** \n * The delta between Y coordinates\n */\n dy: number;\n\n /** \n * Half distance between start.x and end.x\n */\n halfX: number;\n\n /** \n * Half distance between start.y and end.y\n */\n halfY: number;\n\n constructor(config: ILineSketchOptions) {\n const { endPoint, target, startPoint, source, others } = config;\n this.ep = endPoint;\n this.sp = startPoint;\n this.source = source;\n this.target = target;\n this.others = others;\n this.coordinates = [startPoint];\n this.transformOrigin = `${startPoint.x}px ${endPoint.y}px`;\n this.dx = endPoint.x - startPoint.x;\n this.dy = endPoint.y - startPoint.y;\n this.halfX = Math.abs(this.dx) / 2;\n this.halfY = Math.abs(this.dy) / 2;\n }\n\n /**\n * Sketches a regular line.\n * @returns Computed model for the association.\n */\n sketch(): IVisualizationRectilinearLineShape | null {\n const { sp, ep, source, target } = this;\n if (!sp.validate() || !ep.validate()) {\n return null;\n }\n const directions = findDirection(sp, ep, source, target);\n const { start, end } = directions;\n // console.log(start, end);\n if (start === 'west') {\n this[startWest](end);\n } else if (start === 'south') {\n this[startSouth](end);\n } else if (start === 'east') {\n this[startEast](end);\n } else {\n this[startNorth](end);\n }\n\n const { coordinates, controlPoints, transformOrigin } = this;\n coordinates.push(this.ep);\n const path = coordinates.map((item) => `${item.x},${item.y}`).join(' ');\n const result: IVisualizationRectilinearLineShape = {\n controlPoints,\n transformOrigin,\n type: 'rectilinear',\n coordinates,\n rotate: 0,\n path,\n startPoint: sp,\n endPoint: ep,\n };\n return result;\n }\n\n /**\n * Adds a control point to the list of points.\n */\n addCP(x: number = 0, y: number = 0): Point {\n const cp = new Point(x, y);\n this.coordinates.push(cp);\n this.controlPoints.push(cp);\n return cp;\n }\n\n /**\n * Computes the line that starts on the west side of the source object \n * and end in the `end`\n * @param end The direction where the line ends.\n */\n [startWest](end: GeoDirection): void {\n if (end === 'west') {\n this[sketchWestWest]();\n } else if (end === 'south') {\n this[sketchWestSouth]();\n } else if (end === 'east') {\n this[sketchWestEast]();\n } else {\n this[sketchWestNorth]();\n }\n }\n\n [sketchWestSouth](): void {\n const { target, sp, ep, overlapPadding, dx, dy } = this;\n if (dx >= 0) {\n if (dy < 0) {\n // go around the source to the right\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp2.y);\n }\n } else if (dy < 0) {\n this.addCP(ep.x, sp.y);\n } else {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp2.y);\n }\n }\n\n [sketchWestWest](): void {\n const { source, target, sp, ep, overlapPadding, halfX, dy } = this;\n const overlap = source.left < target.right;\n if (overlap) {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.top - overlapPadding);\n const cp3 = this.addCP(Math.max(target.right, source.right) + overlapPadding, cp2.y);\n this.addCP(cp3.x, ep.y);\n } else {\n // draw a straight line when distance between the two is below the threshold\n if (Math.abs(dy) > ElbowThreshold) {\n this.addCP(sp.x - halfX, sp.y);\n this.addCP(ep.x + halfX, ep.y);\n }\n }\n }\n\n [sketchWestEast](): void {\n const { source, target, sp, ep, overlapPadding } = this;\n const overlap = source.left < target.left;\n if (overlap) {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n this.addCP(cp1.x, ep.y);\n } else {\n const cp1 = this.addCP(ep.x - overlapPadding, sp.y);\n this.addCP(cp1.x, ep.y);\n }\n }\n\n [sketchWestNorth](): void {\n const { source, target, sp, ep, overlapPadding } = this;\n const overlap = source.left < target.right;\n if (overlap) {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else {\n this.addCP(ep.x, sp.y);\n }\n }\n\n\n /**\n * Computes the line that starts on the west side of the source object \n * and end in the `end`\n * @param end The direction where the line ends.\n */\n [startSouth](end: GeoDirection): void {\n if (end === 'west') {\n this[sketchSouthWest]();\n } else if (end === 'south') {\n this[sketchSouthSouth]();\n } else if (end === 'east') {\n this[sketchSouthEast]();\n } else {\n this[sketchSouthNorth]();\n }\n }\n\n [sketchSouthNorth](): void {\n const { source, target, sp, ep, halfY, overlapPadding, dx } = this;\n const overlapping = source.bottom + overlapPadding > target.top - overlapPadding; \n if (overlapping) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n let cp2;\n if (source.right < target.left) {\n // the target is on the right\n cp2 = this.addCP(target.left - overlapPadding, cp1.y);\n } else {\n // the target is on the left\n cp2 = this.addCP(target.right + overlapPadding, cp1.y);\n }\n const cp3 = this.addCP(cp2.x, target.top - overlapPadding);\n this.addCP(ep.x, cp3.y);\n } else {\n // draw a straight line instead of the elbow when the distance is below the threshold\n if (Math.abs(dx) > ElbowThreshold) {\n const cp1 = this.addCP(sp.x, sp.y + halfY);\n this.addCP(ep.x, cp1.y);\n }\n }\n }\n\n [sketchSouthWest](): void {\n const { sp, ep, dx, dy, halfY, halfX, overlapPadding } = this;\n if (dx >= 0) {\n if (dy < 0) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n const cp2 = this.addCP(ep.x + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n const cp1 = this.addCP(sp.x, sp.y + halfY);\n const cp2 = this.addCP(ep.x + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n } else if (dy < 0) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n const cp2 = this.addCP(ep.x + halfX, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n this.addCP(sp.x, ep.y);\n }\n }\n\n [sketchSouthSouth](): void {\n const { source, target, sp, ep, overlapPadding } = this;\n if ((source.bottom + 2 * overlapPadding) > target.bottom) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n this.addCP(ep.x, cp1.y);\n } else {\n const cp1 = this.addCP(sp.x, ep.y + overlapPadding);\n this.addCP(ep.x, cp1.y);\n }\n }\n\n [sketchSouthEast](): void {\n const { source, sp, ep, dx, dy, overlapPadding, halfX, halfY } = this;\n if (dx >= 0) {\n if (dy < 0) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n let c2x = sp.x + halfX;\n if (c2x < source.right + overlapPadding) {\n c2x = ep.x - overlapPadding;\n }\n const cp2 = this.addCP(c2x, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n this.addCP(sp.x, ep.y);\n }\n } else if (dy < 0) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n const cp2 = this.addCP(ep.x - overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n const cp1 = this.addCP(sp.x, sp.y + halfY);\n const cp2 = this.addCP(ep.x - overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n }\n\n /**\n * Computes the line that starts on the west side of the source object \n * and end in the `end`\n * @param end The direction where the line ends.\n */\n [startEast](end: GeoDirection): void {\n if (end === 'west') {\n this[sketchEastWest]();\n } else if (end === 'east') {\n this[sketchEastEast]();\n } else if (end === 'south') {\n this[sketchEastSouth]();\n } else {\n this[sketchEastNorth]();\n }\n }\n\n [sketchEastEast](): void {\n const { source, target, sp, ep, overlapPadding, halfX, dy } = this;\n\n if (sp.x + 2 * overlapPadding > target.x) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.top - overlapPadding);\n const cp3 = this.addCP(ep.x - overlapPadding, cp2.y);\n this.addCP(cp3.x, ep.y);\n } else {\n // draw a straight line when distance between the two is below the threshold\n if (Math.abs(dy) > ElbowThreshold) {\n const cp1 = this.addCP(sp.x + halfX, sp.y);\n this.addCP(cp1.x, ep.y);\n }\n }\n }\n\n [sketchEastWest](): void {\n const { source, target, sp, ep, overlapPadding, dx } = this;\n if (dx >= 0) {\n // target on the right\n if (sp.y > target.top - overlapPadding && sp.y < target.bottom + overlapPadding) {\n // line is going through the target object\n const targetAbove = ep.y < sp.y;\n const cp1 = this.addCP(target.left - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x);\n if (targetAbove) {\n cp2.y = target.bottom + overlapPadding;\n } else {\n cp2.y = target.top - overlapPadding;\n }\n const cp3 = this.addCP(ep.x + overlapPadding, cp2.y);\n this.addCP(cp3.x, ep.y);\n } else {\n const cp1 = this.addCP(ep.x + overlapPadding, sp.y);\n this.addCP(cp1.x, ep.y);\n }\n } else {\n // target on the left\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n if (ep.y > source.top - overlapPadding && ep.y < source.bottom + overlapPadding) {\n // line is going through the source object\n const targetAbove = ep.y < sp.y;\n const cp2 = this.addCP(cp1.x);\n if (targetAbove) {\n cp2.y = source.top - overlapPadding;\n } else {\n cp2.y = source.bottom + overlapPadding;\n }\n const cp3 = this.addCP(source.left - overlapPadding, cp2.y);\n this.addCP(cp3.x, ep.y);\n } else {\n this.addCP(cp1.x, ep.y);\n }\n }\n }\n\n [sketchEastSouth](): void {\n const { source, target, sp, ep, overlapPadding } = this;\n const targetAround = ep.y > sp.y;\n const sourceAround = sp.x > ep.x;\n \n if (targetAround && sourceAround) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, Math.max(ep.y, source.bottom) + overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else if (targetAround) {\n const overlapping = sp.x + overlapPadding > target.left;\n if (overlapping) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.bottom + overlapPadding);\n const cp3 = this.addCP(target.left - overlapPadding, cp2.y);\n const cp4 = this.addCP(cp3.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp4.y);\n } else {\n const cp1 = this.addCP(target.left - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, ep.y + overlapPadding);\n this.addCP(ep.x, cp2.y);\n }\n } else if (sourceAround) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.bottom + overlapPadding);\n const cp3 = this.addCP(target.right + overlapPadding, cp2.y);\n const cp4 = this.addCP(cp3.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp4.y);\n } else {\n this.addCP(ep.x, sp.y);\n }\n }\n\n [sketchEastNorth](): void {\n const { source, target, sp, ep, overlapPadding, dx, dy } = this;\n if (dx >= 0) {\n if (dy < 0) {\n const cp1 = this.addCP(target.right + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.top - overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else if (source.right > (target.left - overlapPadding)) {\n // go around the source \n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.bottom + overlapPadding);\n const cp3 = this.addCP(target.left - overlapPadding, cp2.y);\n const cp4 = this.addCP(cp3.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp4.y);\n } else {\n this.addCP(ep.x, sp.y);\n }\n } else if ((source.bottom + 2*overlapPadding) < target.top ) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.bottom + overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, Math.min(target.top, source.top) - overlapPadding);\n this.addCP(ep.x, cp2.y);\n }\n }\n\n /**\n * Computes the line that starts on the west side of the source object \n * and end in the `end`\n * @param end The direction where the line ends.\n */\n [startNorth](end: GeoDirection): void {\n if (end === 'west') {\n this[sketchNorthWest]();\n } else if (end === 'north') {\n this[sketchNorthNorth]()\n } else if (end === 'east') {\n this[sketchNorthEast]();\n } else {\n this[sketchNorthSouth]();\n }\n }\n\n [sketchNorthWest](): void {\n const { source, target, sp, ep, overlapPadding, dx, dy } = this;\n if (dx >= 0) {\n if (dy < 0) {\n if (target.bottom + 2*overlapPadding > sp.y) {\n // go above the target\n const cp1 = this.addCP(sp.x, target.top - overlapPadding);\n const cp2 = this.addCP(ep.x + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n // go below the target\n const cp1 = this.addCP(sp.x, target.bottom + overlapPadding);\n const cp2 = this.addCP(ep.x + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n } else {\n const cp1 = this.addCP(sp.x, Math.min(sp.y, target.top) - overlapPadding);\n const cp2 = this.addCP(Math.max(ep.x, source.right) + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n } else if (dx < 0) {\n if (ep.y < sp.y - overlapPadding) {\n this.addCP(sp.x, ep.y);\n } else {\n const cp1 = this.addCP(sp.x, Math.min(sp.y, target.top) - overlapPadding);\n if (ep.x + 2*overlapPadding > source.left) {\n const cp2 = this.addCP(source.left - overlapPadding, cp1.y);\n const cp3 = this.addCP(cp2.x, target.top - overlapPadding);\n const cp4 = this.addCP(target.right + overlapPadding, cp3.y);\n this.addCP(cp4.x, ep.y);\n } else {\n const cp2 = this.addCP(Math.min(ep.x, source.left) + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n }\n }\n }\n\n [sketchNorthEast](): void {\n const { source, target, sp, ep, overlapPadding, dx, dy } = this;\n const cp1 = this.addCP(sp.x, sp.y - overlapPadding);\n if (dx >= 0) {\n if (dy < 0) {\n this.addCP(sp.x, ep.y);\n } else if (source.right > (target.left - overlapPadding)) {\n const cp2 = this.addCP(source.right + overlapPadding, cp1.y);\n const cp3 = this.addCP(cp2.x, source.bottom + overlapPadding);\n const cp4 = this.addCP(ep.x - overlapPadding, cp3.y);\n this.addCP(cp4.x, ep.y);\n } else {\n const cp2 = this.addCP(ep.x - overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n } else {\n if (cp1.y > target.top - overlapPadding && cp1.y < target.bottom + overlapPadding) {\n const cp2 = this.addCP(target.right + overlapPadding, cp1.y);\n const posy = ep.y < sp.y ? target.bottom + overlapPadding : target.top - overlapPadding;\n const cp3 = this.addCP(cp2.x, posy);\n this.addCP(ep.x - overlapPadding, cp3.y);\n } else {\n const overlapping = ep.x - overlapPadding > source.left;\n if (overlapping) {\n const cp2 = this.addCP(source.left - overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n this.addCP(ep.x - overlapPadding, cp1.y);\n }\n }\n this.addCP(ep.x - overlapPadding, ep.y);\n }\n \n }\n\n [sketchNorthSouth](): void {\n const { source, target, sp, ep, overlapPadding, dy, dx, halfY } = this;\n // (dy < 0) - the source is below target\n // (ep.y + 2*overlapPadding < sp.y) - there is a room to render the line between the boxes\n if (dy < 0 && ep.y + 2*overlapPadding < sp.y) {\n // draw a straight line instead of the elbow when the distance is below the threshold\n if (Math.abs(dx) > ElbowThreshold) {\n const cp1 = this.addCP(sp.x, ep.y + halfY); // ep.y + overlapPadding\n this.addCP(ep.x, cp1.y);\n }\n } else {\n const cp1 = this.addCP(sp.x, sp.y - overlapPadding);\n let cp2;\n if (sp.x < ep.x) {\n // to the left\n cp2 = this.addCP(Math.max(target.left - overlapPadding, source.right + overlapPadding), cp1.y);\n } else {\n // to the right\n cp2 = this.addCP(Math.min(target.right + overlapPadding, source.left - overlapPadding), cp1.y);\n }\n const cp3 = this.addCP(cp2.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp3.y);\n }\n }\n\n [sketchNorthNorth](): void {\n const { source, target, sp, ep, overlapPadding, dy } = this;\n if (dy < 0 && ep.y + 2*overlapPadding < sp.y) {\n const cp1 = this.addCP(sp.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp1.y);\n } else {\n const cp1 = this.addCP(sp.x, sp.y - overlapPadding);\n let cp2;\n if (sp.x < ep.x) {\n // to the left\n cp2 = this.addCP(Math.max(target.left - overlapPadding, source.right + overlapPadding), cp1.y);\n } else {\n // to the right\n cp2 = this.addCP(Math.min(target.right + overlapPadding, source.left - overlapPadding), cp1.y);\n }\n const cp3 = this.addCP(cp2.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp3.y);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RectilinearLine.js","sourceRoot":"","sources":["../../../../src/visualization/lib/lines/RectilinearLine.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-lonely-if */\nimport { findDirection } from '../PositionUtils.js';\nimport { Point } from '../Point.js';\nimport { ILineSketchOptions, IVisualizationRectilinearLineShape } from '../VisualizationTypes.js';\nimport { GeoDirection, IWorkspaceEdge } from '../types.js';\n\nexport const startWest = Symbol('startWest');\nexport const startEast = Symbol('startEast');\nexport const startSouth = Symbol('startSouth');\nexport const startNorth = Symbol('startNorth');\nexport const sketchEastEast = Symbol('sketchEastEast');\nexport const sketchEastWest = Symbol('sketchEastWest');\nexport const sketchEastSouth = Symbol('sketchEastSouth');\nexport const sketchEastNorth = Symbol('sketchEastNorth');\nexport const sketchNorthWest = Symbol('sketchNorthWest');\nexport const sketchNorthEast = Symbol('sketchNorthEast');\nexport const sketchNorthSouth = Symbol('sketchNorthSouth');\nexport const sketchNorthNorth = Symbol('sketchNorthNorth');\nexport const sketchWestSouth = Symbol('sketchWestSouth');\nexport const sketchWestWest = Symbol('sketchWestWest');\nexport const sketchWestEast = Symbol('sketchWestEast');\nexport const sketchWestNorth = Symbol('sketchWestNorth');\nexport const sketchSouthNorth = Symbol('sketchSouthNorth');\nexport const sketchSouthWest = Symbol('sketchSouthWest');\nexport const sketchSouthSouth = Symbol('sketchSouthSouth');\nexport const sketchSouthEast = Symbol('sketchSouthEast');\n\nexport const ElbowThreshold = 24;\n\n/**\n * A class that draws a rectilinear line\n */\nexport class RectilinearLine {\n ep: Point;\n\n sp: Point;\n\n source: DOMRect;\n\n target: DOMRect;\n\n others?: IWorkspaceEdge[];\n\n /** \n * The default padding to use when computing distance between the line and an object.\n */\n overlapPadding: number = 20;\n\n /** \n * The list of all points (start + end + control points)\n */\n coordinates: Point[];\n\n /**\n * The list of all control points. \n */\n controlPoints: Point[] = [];\n\n transformOrigin: string;\n\n /** \n * The delta between Y coordinates\n */\n dx: number;\n \n /** \n * The delta between Y coordinates\n */\n dy: number;\n\n /** \n * Half distance between start.x and end.x\n */\n halfX: number;\n\n /** \n * Half distance between start.y and end.y\n */\n halfY: number;\n\n constructor(config: ILineSketchOptions) {\n const { endPoint, target, startPoint, source, others } = config;\n this.ep = endPoint;\n this.sp = startPoint;\n this.source = source;\n this.target = target;\n this.others = others;\n this.coordinates = [startPoint];\n this.transformOrigin = `${startPoint.x}px ${endPoint.y}px`;\n this.dx = endPoint.x - startPoint.x;\n this.dy = endPoint.y - startPoint.y;\n this.halfX = Math.abs(this.dx) / 2;\n this.halfY = Math.abs(this.dy) / 2;\n }\n\n /**\n * Sketches a regular line.\n * @returns Computed model for the association.\n */\n sketch(): IVisualizationRectilinearLineShape | null {\n const { sp, ep, source, target } = this;\n if (!sp.validate() || !ep.validate()) {\n return null;\n }\n const directions = findDirection(sp, ep, source, target);\n const { start, end } = directions;\n // console.log(start, end);\n if (start === 'west') {\n this[startWest](end);\n } else if (start === 'south') {\n this[startSouth](end);\n } else if (start === 'east') {\n this[startEast](end);\n } else {\n this[startNorth](end);\n }\n\n const { coordinates, controlPoints, transformOrigin } = this;\n coordinates.push(this.ep);\n const path = coordinates.map((item) => `${item.x},${item.y}`).join(' ');\n const result: IVisualizationRectilinearLineShape = {\n controlPoints,\n transformOrigin,\n type: 'rectilinear',\n coordinates,\n rotate: 0,\n path,\n startPoint: sp,\n endPoint: ep,\n };\n return result;\n }\n\n /**\n * Adds a control point to the list of points.\n */\n addCP(x: number = 0, y: number = 0): Point {\n const cp = new Point(x, y);\n this.coordinates.push(cp);\n this.controlPoints.push(cp);\n return cp;\n }\n\n /**\n * Computes the line that starts on the west side of the source object \n * and end in the `end`\n * @param end The direction where the line ends.\n */\n [startWest](end: GeoDirection): void {\n if (end === 'west') {\n this[sketchWestWest]();\n } else if (end === 'south') {\n this[sketchWestSouth]();\n } else if (end === 'east') {\n this[sketchWestEast]();\n } else {\n this[sketchWestNorth]();\n }\n }\n\n [sketchWestSouth](): void {\n const { target, sp, ep, overlapPadding, dx, dy } = this;\n if (dx >= 0) {\n if (dy < 0) {\n // go around the source to the right\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp2.y);\n }\n } else if (dy < 0) {\n this.addCP(ep.x, sp.y);\n } else {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp2.y);\n }\n }\n\n [sketchWestWest](): void {\n const { source, target, sp, ep, overlapPadding, halfX, dy } = this;\n const overlap = source.left < target.right;\n if (overlap) {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.top - overlapPadding);\n const cp3 = this.addCP(Math.max(target.right, source.right) + overlapPadding, cp2.y);\n this.addCP(cp3.x, ep.y);\n } else {\n // draw a straight line when distance between the two is below the threshold\n if (Math.abs(dy) > ElbowThreshold) {\n this.addCP(sp.x - halfX, sp.y);\n this.addCP(ep.x + halfX, ep.y);\n }\n }\n }\n\n [sketchWestEast](): void {\n const { source, target, sp, ep, overlapPadding } = this;\n const overlap = source.left < target.left;\n if (overlap) {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n this.addCP(cp1.x, ep.y);\n } else {\n const cp1 = this.addCP(ep.x - overlapPadding, sp.y);\n this.addCP(cp1.x, ep.y);\n }\n }\n\n [sketchWestNorth](): void {\n const { source, target, sp, ep, overlapPadding } = this;\n const overlap = source.left < target.right;\n if (overlap) {\n const cp1 = this.addCP(sp.x - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else {\n this.addCP(ep.x, sp.y);\n }\n }\n\n\n /**\n * Computes the line that starts on the west side of the source object \n * and end in the `end`\n * @param end The direction where the line ends.\n */\n [startSouth](end: GeoDirection): void {\n if (end === 'west') {\n this[sketchSouthWest]();\n } else if (end === 'south') {\n this[sketchSouthSouth]();\n } else if (end === 'east') {\n this[sketchSouthEast]();\n } else {\n this[sketchSouthNorth]();\n }\n }\n\n [sketchSouthNorth](): void {\n const { source, target, sp, ep, halfY, overlapPadding, dx } = this;\n const overlapping = source.bottom + overlapPadding > target.top - overlapPadding; \n if (overlapping) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n let cp2;\n if (source.right < target.left) {\n // the target is on the right\n cp2 = this.addCP(target.left - overlapPadding, cp1.y);\n } else {\n // the target is on the left\n cp2 = this.addCP(target.right + overlapPadding, cp1.y);\n }\n const cp3 = this.addCP(cp2.x, target.top - overlapPadding);\n this.addCP(ep.x, cp3.y);\n } else {\n // draw a straight line instead of the elbow when the distance is below the threshold\n if (Math.abs(dx) > ElbowThreshold) {\n const cp1 = this.addCP(sp.x, sp.y + halfY);\n this.addCP(ep.x, cp1.y);\n }\n }\n }\n\n [sketchSouthWest](): void {\n const { sp, ep, dx, dy, halfY, halfX, overlapPadding } = this;\n if (dx >= 0) {\n if (dy < 0) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n const cp2 = this.addCP(ep.x + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n const cp1 = this.addCP(sp.x, sp.y + halfY);\n const cp2 = this.addCP(ep.x + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n } else if (dy < 0) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n const cp2 = this.addCP(ep.x + halfX, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n this.addCP(sp.x, ep.y);\n }\n }\n\n [sketchSouthSouth](): void {\n const { source, target, sp, ep, overlapPadding } = this;\n if ((source.bottom + 2 * overlapPadding) > target.bottom) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n this.addCP(ep.x, cp1.y);\n } else {\n const cp1 = this.addCP(sp.x, ep.y + overlapPadding);\n this.addCP(ep.x, cp1.y);\n }\n }\n\n [sketchSouthEast](): void {\n const { source, sp, ep, dx, dy, overlapPadding, halfX, halfY } = this;\n if (dx >= 0) {\n if (dy < 0) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n let c2x = sp.x + halfX;\n if (c2x < source.right + overlapPadding) {\n c2x = ep.x - overlapPadding;\n }\n const cp2 = this.addCP(c2x, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n this.addCP(sp.x, ep.y);\n }\n } else if (dy < 0) {\n const cp1 = this.addCP(sp.x, sp.y + overlapPadding);\n const cp2 = this.addCP(ep.x - overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n const cp1 = this.addCP(sp.x, sp.y + halfY);\n const cp2 = this.addCP(ep.x - overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n }\n\n /**\n * Computes the line that starts on the west side of the source object \n * and end in the `end`\n * @param end The direction where the line ends.\n */\n [startEast](end: GeoDirection): void {\n if (end === 'west') {\n this[sketchEastWest]();\n } else if (end === 'east') {\n this[sketchEastEast]();\n } else if (end === 'south') {\n this[sketchEastSouth]();\n } else {\n this[sketchEastNorth]();\n }\n }\n\n [sketchEastEast](): void {\n const { source, target, sp, ep, overlapPadding, halfX, dy } = this;\n\n if (sp.x + 2 * overlapPadding > target.x) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.top - overlapPadding);\n const cp3 = this.addCP(ep.x - overlapPadding, cp2.y);\n this.addCP(cp3.x, ep.y);\n } else {\n // draw a straight line when distance between the two is below the threshold\n if (Math.abs(dy) > ElbowThreshold) {\n const cp1 = this.addCP(sp.x + halfX, sp.y);\n this.addCP(cp1.x, ep.y);\n }\n }\n }\n\n [sketchEastWest](): void {\n const { source, target, sp, ep, overlapPadding, dx } = this;\n if (dx >= 0) {\n // target on the right\n if (sp.y > target.top - overlapPadding && sp.y < target.bottom + overlapPadding) {\n // line is going through the target object\n const targetAbove = ep.y < sp.y;\n const cp1 = this.addCP(target.left - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x);\n if (targetAbove) {\n cp2.y = target.bottom + overlapPadding;\n } else {\n cp2.y = target.top - overlapPadding;\n }\n const cp3 = this.addCP(ep.x + overlapPadding, cp2.y);\n this.addCP(cp3.x, ep.y);\n } else {\n const cp1 = this.addCP(ep.x + overlapPadding, sp.y);\n this.addCP(cp1.x, ep.y);\n }\n } else {\n // target on the left\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n if (ep.y > source.top - overlapPadding && ep.y < source.bottom + overlapPadding) {\n // line is going through the source object\n const targetAbove = ep.y < sp.y;\n const cp2 = this.addCP(cp1.x);\n if (targetAbove) {\n cp2.y = source.top - overlapPadding;\n } else {\n cp2.y = source.bottom + overlapPadding;\n }\n const cp3 = this.addCP(source.left - overlapPadding, cp2.y);\n this.addCP(cp3.x, ep.y);\n } else {\n this.addCP(cp1.x, ep.y);\n }\n }\n }\n\n [sketchEastSouth](): void {\n const { source, target, sp, ep, overlapPadding } = this;\n const targetAround = ep.y > sp.y;\n const sourceAround = sp.x > ep.x;\n \n if (targetAround && sourceAround) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, Math.max(ep.y, source.bottom) + overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else if (targetAround) {\n const overlapping = sp.x + overlapPadding > target.left;\n if (overlapping) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.bottom + overlapPadding);\n const cp3 = this.addCP(target.left - overlapPadding, cp2.y);\n const cp4 = this.addCP(cp3.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp4.y);\n } else {\n const cp1 = this.addCP(target.left - overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, ep.y + overlapPadding);\n this.addCP(ep.x, cp2.y);\n }\n } else if (sourceAround) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.bottom + overlapPadding);\n const cp3 = this.addCP(target.right + overlapPadding, cp2.y);\n const cp4 = this.addCP(cp3.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp4.y);\n } else {\n this.addCP(ep.x, sp.y);\n }\n }\n\n [sketchEastNorth](): void {\n const { source, target, sp, ep, overlapPadding, dx, dy } = this;\n if (dx >= 0) {\n if (dy < 0) {\n const cp1 = this.addCP(target.right + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, target.top - overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else if (source.right > (target.left - overlapPadding)) {\n // go around the source \n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.bottom + overlapPadding);\n const cp3 = this.addCP(target.left - overlapPadding, cp2.y);\n const cp4 = this.addCP(cp3.x, target.bottom + overlapPadding);\n this.addCP(ep.x, cp4.y);\n } else {\n this.addCP(ep.x, sp.y);\n }\n } else if ((source.bottom + 2*overlapPadding) < target.top ) {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, source.bottom + overlapPadding);\n this.addCP(ep.x, cp2.y);\n } else {\n const cp1 = this.addCP(sp.x + overlapPadding, sp.y);\n const cp2 = this.addCP(cp1.x, Math.min(target.top, source.top) - overlapPadding);\n this.addCP(ep.x, cp2.y);\n }\n }\n\n /**\n * Computes the line that starts on the west side of the source object \n * and end in the `end`\n * @param end The direction where the line ends.\n */\n [startNorth](end: GeoDirection): void {\n if (end === 'west') {\n this[sketchNorthWest]();\n } else if (end === 'north') {\n this[sketchNorthNorth]()\n } else if (end === 'east') {\n this[sketchNorthEast]();\n } else {\n this[sketchNorthSouth]();\n }\n }\n\n [sketchNorthWest](): void {\n const { source, target, sp, ep, overlapPadding, dx, dy } = this;\n if (dx >= 0) {\n if (dy < 0) {\n if (target.bottom + 2*overlapPadding > sp.y) {\n // go above the target\n const cp1 = this.addCP(sp.x, target.top - overlapPadding);\n const cp2 = this.addCP(ep.x + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n // go below the target\n const cp1 = this.addCP(sp.x, target.bottom + overlapPadding);\n const cp2 = this.addCP(ep.x + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n } else {\n const cp1 = this.addCP(sp.x, Math.min(sp.y, target.top) - overlapPadding);\n const cp2 = this.addCP(Math.max(ep.x, source.right) + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n } else if (dx < 0) {\n if (ep.y < sp.y - overlapPadding) {\n this.addCP(sp.x, ep.y);\n } else {\n const cp1 = this.addCP(sp.x, Math.min(sp.y, target.top) - overlapPadding);\n if (ep.x + 2*overlapPadding > source.left) {\n const cp2 = this.addCP(source.left - overlapPadding, cp1.y);\n const cp3 = this.addCP(cp2.x, target.top - overlapPadding);\n const cp4 = this.addCP(target.right + overlapPadding, cp3.y);\n this.addCP(cp4.x, ep.y);\n } else {\n const cp2 = this.addCP(Math.min(ep.x, source.left) + overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n }\n }\n }\n\n [sketchNorthEast](): void {\n const { source, target, sp, ep, overlapPadding, dx, dy } = this;\n const cp1 = this.addCP(sp.x, sp.y - overlapPadding);\n if (dx >= 0) {\n if (dy < 0) {\n this.addCP(sp.x, ep.y);\n } else if (source.right > (target.left - overlapPadding)) {\n const cp2 = this.addCP(source.right + overlapPadding, cp1.y);\n const cp3 = this.addCP(cp2.x, source.bottom + overlapPadding);\n const cp4 = this.addCP(ep.x - overlapPadding, cp3.y);\n this.addCP(cp4.x, ep.y);\n } else {\n const cp2 = this.addCP(ep.x - overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n }\n } else {\n if (cp1.y > target.top - overlapPadding && cp1.y < target.bottom + overlapPadding) {\n const cp2 = this.addCP(target.right + overlapPadding, cp1.y);\n const posy = ep.y < sp.y ? target.bottom + overlapPadding : target.top - overlapPadding;\n const cp3 = this.addCP(cp2.x, posy);\n this.addCP(ep.x - overlapPadding, cp3.y);\n } else {\n const overlapping = ep.x - overlapPadding > source.left;\n if (overlapping) {\n const cp2 = this.addCP(source.left - overlapPadding, cp1.y);\n this.addCP(cp2.x, ep.y);\n } else {\n this.addCP(ep.x - overlapPadding, cp1.y);\n }\n }\n this.addCP(ep.x - overlapPadding, ep.y);\n }\n \n }\n\n [sketchNorthSouth](): void {\n const { source, target, sp, ep, overlapPadding, dy, dx, halfY } = this;\n // (dy < 0) - the source is below target\n // (ep.y + 2*overlapPadding < sp.y) - there is a room to render the line between the boxes\n if (dy < 0 && ep.y + 2*overlapPadding < sp.y) {\n // draw a straight line instead of the elbow when the distance is below the threshold\n if (Math.abs(dx) > ElbowThreshold) {\n const cp1 = this.addCP(sp.x, ep.y + halfY); // ep.y + overlapPadding\n this.addCP(ep.x, cp1.y);\n }\n } else {\n const cp1 = this.addCP(sp.x, sp.y - overlapPadding);\n let cp2;\n if (sp.x < ep.x) {\n // to the left\n cp2 = this.addCP(Math.max(target.left - overlapPadding, source.right + overlapPadding), cp1.y);\n } else {\n // to the right\n cp2 = this.addCP(Math.min(target.right + overlapPadding, source.left - overlapPadding), cp1.y);\n }\n const cp3 = this.addCP(cp2.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp3.y);\n }\n }\n\n [sketchNorthNorth](): void {\n const { source, target, sp, ep, overlapPadding, dy } = this;\n if (dy < 0 && ep.y + 2*overlapPadding < sp.y) {\n const cp1 = this.addCP(sp.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp1.y);\n } else {\n const cp1 = this.addCP(sp.x, sp.y - overlapPadding);\n let cp2;\n if (sp.x < ep.x) {\n // to the left\n cp2 = this.addCP(Math.max(target.left - overlapPadding, source.right + overlapPadding), cp1.y);\n } else {\n // to the right\n cp2 = this.addCP(Math.min(target.right + overlapPadding, source.left - overlapPadding), cp1.y);\n }\n const cp3 = this.addCP(cp2.x, ep.y - overlapPadding);\n this.addCP(ep.x, cp3.y);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RectilinearTip.js","sourceRoot":"","sources":["../../../../src/visualization/lib/tips/RectilinearTip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,cAAe,SAAQ,SAAS;
|
|
1
|
+
{"version":3,"file":"RectilinearTip.js","sourceRoot":"","sources":["../../../../src/visualization/lib/tips/RectilinearTip.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point } from '../Point.js';\nimport { IEdgeDirections } from '../types.js';\nimport { IAssociationTip, IVisualizationRectilinearLineShape } from '../VisualizationTypes.js';\nimport { TipArtist } from './TipArtist.js';\n\nexport class RectilinearTip extends TipArtist {\n override line: IVisualizationRectilinearLineShape;\n \n constructor(position: 'start' | 'end', line: IVisualizationRectilinearLineShape, directions: IEdgeDirections) {\n super(position, line, directions);\n this.line = line;\n }\n\n /**\n * Draws an tip representing a parent.\n */\n override parent(): IAssociationTip {\n const { line, directions, position } = this;\n const coordinates = line.coordinates!;\n const startPoint = position === 'start' ? coordinates[0] : coordinates[coordinates.length - 1];\n const { x, y } = startPoint;\n const tv = new Point(0, 0);\n const lv = new Point(0, 0);\n const rv = new Point(0, 0);\n tv.x = x;\n tv.y = y;\n lv.x = x - 8;\n lv.y = y + 16;\n rv.x = x + 8;\n rv.y = y + 16;\n const vertexes = [tv, lv, rv];\n const path = vertexes.map((item) => `${item.x},${item.y}`).join(' ');\n let rotate;\n switch (directions.end) {\n case 'east': rotate = 90; break;\n case 'west': rotate = 270; break;\n case 'south': rotate = 0; break;\n default: rotate = 180; break;\n }\n return {\n path,\n coordinates: vertexes,\n transformOrigin: `${x}px ${y}px`,\n rotate,\n svg: 'polygon',\n style: 'parent',\n };\n }\n\n /**\n * Draws an tip representing a direction to / from the point.\n * @returns {IAssociationTip}\n */\n override direction(): IAssociationTip {\n const { line, directions, position } = this;\n const coordinates = line.coordinates!;\n const startPoint = position === 'start' ? coordinates[0] : coordinates[coordinates.length - 1];\n const { x, y } = startPoint;\n const tv = new Point(0, 0);\n const lv = new Point(0, 0);\n const rv = new Point(0, 0);\n tv.x = x;\n tv.y = y;\n lv.x = x - 8;\n lv.y = y - 16;\n rv.x = x + 8;\n rv.y = y - 16;\n const vertexes = [tv, lv, rv];\n const path = vertexes.map((item) => `${item.x},${item.y}`).join(' ');\n let rotate;\n const origin = position === 'start' ? directions.start : directions.end;\n switch (origin) {\n case 'east': rotate = position === 'start' ? 90 : 270; break;\n case 'west': rotate = position === 'start' ? 270 : 90; break;\n case 'south': rotate = 180; break;\n default: rotate = 0; break;\n }\n return {\n path,\n coordinates: vertexes,\n transformOrigin: `${x}px ${y}px`,\n rotate,\n svg: 'polygon',\n style: 'direction',\n };\n }\n\n /**\n * Draws an tip representing an association.\n * @param type The type of the association to draw.\n */\n override association(type='default'): IAssociationTip {\n switch (type) {\n case 'default': return this.defaultAssociation();\n default: throw new Error(`Unsupported association type.`);\n }\n }\n\n /**\n * Draws an tip representing an association with a default style.\n */\n defaultAssociation(): IAssociationTip {\n const { line, directions, position } = this;\n const coordinates = line.coordinates!;\n const startPoint = position === 'start' ? coordinates[0] : coordinates[coordinates.length - 1];\n const { x, y } = startPoint;\n const tv = new Point(x - 8, y);\n const lv = new Point(x, y - 16);\n const rv = new Point(x + 8, y);\n const vertexes = [tv, lv, rv];\n const path = vertexes.map((item) => `${item.x} ${item.y}`).join(', ');\n let rotate;\n const origin = position === 'start' ? directions.start : directions.end;\n switch (origin) {\n case 'east': rotate = position === 'start' ? 90 : 270; break;\n case 'west': rotate = position === 'start' ? 270 : 90; break;\n case 'south': rotate = 180; break;\n default: rotate = 0; break;\n }\n return {\n path,\n coordinates: vertexes,\n transformOrigin: `${x}px ${y}px`,\n rotate,\n svg: 'polyline',\n style: 'association',\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TipArtist.js","sourceRoot":"","sources":["../../../../src/visualization/lib/tips/TipArtist.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,2CAA2C;AAC3C,mCAAmC;AAKnC,MAAM,OAAO,SAAS;
|
|
1
|
+
{"version":3,"file":"TipArtist.js","sourceRoot":"","sources":["../../../../src/visualization/lib/tips/TipArtist.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,2CAA2C;AAC3C,mCAAmC;AAKnC,MAAM,OAAO,SAAS;IACpB,YAAmB,QAAyB,EAAS,IAAoC,EAAS,UAA2B;QAA1G,aAAQ,GAAR,QAAQ,CAAiB;QAAS,SAAI,GAAJ,IAAI,CAAgC;QAAS,eAAU,GAAV,UAAU,CAAiB;IAC7H,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,OAAe,SAAS;QAClC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;CACF","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable no-unused-vars */\n\nimport { IEdgeDirections } from \"../types.js\";\nimport { IAssociationTip, IVisualizationAssociationShape } from \"../VisualizationTypes.js\";\n\nexport class TipArtist {\n constructor(public position: 'start' | 'end', public line: IVisualizationAssociationShape, public directions: IEdgeDirections) {\n }\n\n /**\n * Draws an tip representing a parent.\n */\n parent(): IAssociationTip {\n throw new Error('Not implemented');\n }\n\n /**\n * Draws an tip representing a direction to / from the point.\n */\n direction(): IAssociationTip {\n throw new Error('Not implemented');\n }\n\n /**\n * Draws an tip representing an association.\n * @param type The type of the association to draw.\n */\n association(type: string = 'default'): IAssociationTip {\n throw new Error('Not implemented');\n }\n}\n"]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
/* eslint-disable no-plusplus */
|
|
4
4
|
/* eslint-disable no-continue */
|
|
5
5
|
/* eslint-disable no-param-reassign */
|
|
6
|
+
var _a;
|
|
6
7
|
import { notifyMoved } from '../../lib/PositionUtils.js';
|
|
7
8
|
export const observeItems = Symbol('observeItems');
|
|
8
9
|
export const mutationHandler = Symbol('mutationHandler');
|
|
@@ -35,10 +36,6 @@ export const connectedValue = Symbol('connectedValue');
|
|
|
35
36
|
* is removed or changed the internal logic adds or removed the events from the element.
|
|
36
37
|
*/
|
|
37
38
|
export class DragAndDropPlugin {
|
|
38
|
-
workspace;
|
|
39
|
-
[connectedValue] = false;
|
|
40
|
-
[mutationObserver];
|
|
41
|
-
dragInfo;
|
|
42
39
|
/**
|
|
43
40
|
* @returns True when the plug-in is listening for the input events.
|
|
44
41
|
*/
|
|
@@ -47,6 +44,7 @@ export class DragAndDropPlugin {
|
|
|
47
44
|
}
|
|
48
45
|
constructor(workspace) {
|
|
49
46
|
this.workspace = workspace;
|
|
47
|
+
this[_a] = false;
|
|
50
48
|
this[dragEnterHandler] = this[dragEnterHandler].bind(this);
|
|
51
49
|
this[dragOverHandler] = this[dragOverHandler].bind(this);
|
|
52
50
|
this[dropHandler] = this[dropHandler].bind(this);
|
|
@@ -132,7 +130,7 @@ export class DragAndDropPlugin {
|
|
|
132
130
|
* Observe items change in the element's light DOM
|
|
133
131
|
* @returns The observer handler
|
|
134
132
|
*/
|
|
135
|
-
[observeItems]() {
|
|
133
|
+
[(_a = connectedValue, observeItems)]() {
|
|
136
134
|
const config = {
|
|
137
135
|
attributes: true,
|
|
138
136
|
childList: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragAndDropPlugin.js","sourceRoot":"","sources":["../../../../src/visualization/plugin/dnd/DragAndDropPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-continue */\n/* eslint-disable no-param-reassign */\n\nimport VizWorkspaceElement from '../../elements/VizWorkspaceElement.js';\nimport { notifyMoved } from '../../lib/PositionUtils.js';\n\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 dragEnterHandler = Symbol('dragEnterHandler');\nexport const dragOverHandler = Symbol('dragOverHandler');\nexport const dropHandler = Symbol('dropHandler');\nexport const dragHandler = Symbol('dragHandler');\nexport const observeCurrent = Symbol('observeCurrent');\nexport const unobserveCurrent = Symbol('unobserveCurrent');\nexport const connectedValue = Symbol('connectedValue');\n\ninterface DragInfo {\n /**\n * click x position inside the dragged element\n */\n sx: number;\n /**\n * click y position inside the dragged element\n */\n sy: number;\n target: HTMLElement;\n}\n\n/**\n * A plugin that adds drag and drop support to the visualization workspace.\n * \n * This is a base class that meant to be extended depending on what the workspace visualizes.\n * The implementation for a specific type of a workspace should override the `dropExternal()` \n * function to handle dropping onto the workspace a new object.\n * \n * Additionally the `[dropHandler]()` can be updated to handle custom logic for drop action of \n * already visualized object. The default behavior is to reposition all currently selected elements\n * relative to the dragged object position change.\n * \n * After the workspace is created initialize this class and call the `connect()` function to initialize\n * event listeners. When the plugin is no longer needed call `disconnect()` function to clean up listeners.\n * \n * For the visualized elements to be draggable set `draggable=\"true\"` attribute on the element. If the attribute \n * is removed or changed the internal logic adds or removed the events from the element.\n */\nexport class DragAndDropPlugin {\n [connectedValue]: boolean = false;\n\n [mutationObserver]?: MutationObserver;\n\n dragInfo?: DragInfo;\n\n /**\n * @returns True when the plug-in is listening for the input events.\n */\n get connected(): boolean {\n return this[connectedValue];\n }\n\n constructor(public workspace: VizWorkspaceElement) {\n this[dragEnterHandler] = this[dragEnterHandler].bind(this);\n this[dragOverHandler] = this[dragOverHandler].bind(this);\n this[dropHandler] = this[dropHandler].bind(this);\n this[dragHandler] = this[dragHandler].bind(this);\n\n this[mutationHandler] = this[mutationHandler].bind(this);\n this[connectedValue] = false;\n }\n\n connect(): void {\n this.workspace.addEventListener('dragenter', this[dragEnterHandler]);\n this.workspace.addEventListener('dragover', this[dragOverHandler]);\n this.workspace.addEventListener('drop', this[dropHandler]);\n this[mutationObserver] = this[observeItems]();\n this[observeCurrent]();\n this[connectedValue] = true;\n }\n\n disconnect(): void {\n this.workspace.removeEventListener('dragenter', this[dragEnterHandler]);\n this.workspace.removeEventListener('dragover', this[dragOverHandler]);\n this.workspace.removeEventListener('drop', this[dropHandler]);\n if (this[mutationObserver]) {\n this[mutationObserver]!.disconnect();\n this[mutationObserver] = undefined;\n }\n this[unobserveCurrent]();\n this[connectedValue] = false;\n }\n\n /**\n * Sets drag info value from the drag event\n */\n setDragInfo(e: DragEvent): void {\n const node = e.target as HTMLElement;\n const { left, top } = node.getBoundingClientRect();\n const { clientX, clientY } = e;\n const { scale } = this.workspace;\n this.dragInfo = {\n sx: (clientX - left) / scale,\n sy: (clientY - top) / scale,\n target: node,\n };\n }\n\n /**\n * Repositions currently selected elements from a drop event.\n * This is called when the dropped element onto the workspace comes from the same workspace.\n */\n repositionFromDrop(e: DragEvent): void {\n const { target, sx, sy } = this.dragInfo!;\n const dragTarget = target as HTMLElement;\n const { left, top } = dragTarget.getBoundingClientRect();\n const { scale } = this.workspace;\n const ex = (e.clientX - left) / scale;\n const ey = (e.clientY - top) / scale;\n // tests by how much the box was moved in the workspace so the same point can be applied\n // to all boxes in the move.\n const ddx = ex - sx;\n const ddy = ey - sy;\n let items: HTMLElement[] = [];\n const selectionManager = this.workspace.selection;\n selectionManager.selected.forEach((item) => {\n if (item.node.hasAttribute('draggable') && item.node.getAttribute('draggable') === 'true') {\n items.push(item.node as HTMLElement);\n }\n });\n if (!items.length || items.length === 1 && items[0] !== target) {\n items = [dragTarget];\n }\n items.forEach((item) => notifyMoved(item, ddx, ddy));\n }\n\n /**\n * This function is called when a new object is dropped onto the workspace.\n * A \"new object\" is an object that has a source different than the current workspace.\n */\n async dropExternal(e: DragEvent): Promise<void> {\n // to be implemented by child classes.\n }\n\n /**\n * @returns True if the element can be dragged.\n */\n isDraggable(element: Element): boolean {\n return element.hasAttribute('draggable') && element.getAttribute('draggable') === 'true';\n }\n\n // PRIVATE APIS\n\n /**\n * Observe items change in the element's light DOM\n * @returns The observer handler\n */\n [observeItems](): MutationObserver {\n const config = { \n attributes: true, \n childList: true, \n subtree: true, \n attributeFilter: ['draggable'],\n };\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 // console.log(mutation);\n if (mutation.type === 'childList') {\n if (mutation.addedNodes.length) {\n this[processAddedNodes](mutation.addedNodes);\n }\n if (mutation.removedNodes.length) {\n this[processRemovedNodes](mutation.removedNodes);\n }\n } else if (mutation.type === 'attributes' && mutation.attributeName === 'draggable') {\n this[processAttributeChanged](mutation.target);\n }\n }\n }\n\n /**\n * Processes added children.\n * It adds drag and drop support.\n */\n [processAddedNodes](list: NodeList): void {\n Array.from(list).forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const element = node as HTMLElement;\n if (this.isDraggable(element)) {\n element.addEventListener('dragstart', this[dragHandler]);\n }\n const childList = element.querySelectorAll('[draggable]');\n this[processAddedNodes](childList);\n });\n }\n\n /**\n * Processes removed children.\n * It removes drag and drop support.\n */\n [processRemovedNodes](list: NodeList): void {\n Array.from(list).forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const element = node as HTMLElement;\n element.removeEventListener('dragstart', this[dragHandler]);\n const childList = element.querySelectorAll('[draggable]');\n this[processRemovedNodes](childList);\n });\n }\n\n /**\n * Adds or removes the `dragstart` event listener depending on the value oif the `draggable` attribute\n */\n [processAttributeChanged](node: Node): void {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as Element;\n typed.removeEventListener('dragstart', this[dragHandler] as EventListener);\n if (this.isDraggable(typed)) {\n typed.addEventListener('dragstart', this[dragHandler] as EventListener);\n }\n }\n\n /**\n * Handles the drag event on one of the children.\n */\n [dragHandler](e: DragEvent): void {\n // only elements are getting drag support so it is safe to set.\n e.dataTransfer!.setData('modeling/source', this.workspace.localName);\n this.setDragInfo(e);\n }\n\n /**\n * Handles the drag enter event on one of the children.\n */\n [dragEnterHandler](e: DragEvent): void {\n e.preventDefault();\n }\n\n /**\n * Handles the drag over event on one of the children.\n */\n [dragOverHandler](e: DragEvent): void {\n e.preventDefault();\n const { clientX, clientY } = e;\n this.workspace.scrollIfNeeded(clientX, clientY);\n }\n\n\n /**\n * Handles the drop event on one of the visualization canvas to update position of them.\n * \n * Note, some workspace elements can handle its own drop event and cancel it. In this case\n * this function won't be called.\n */\n async [dropHandler](e: DragEvent): Promise<void> {\n const source = e.dataTransfer!.getData('modeling/source');\n if (source !== this.workspace.localName) {\n this.dropExternal(e);\n } else {\n this.repositionFromDrop(e);\n }\n }\n\n /**\n * Observers all current draggable items in the workspace.\n */\n [observeCurrent](): void {\n const nodes = Array.from(this.workspace.querySelectorAll('[draggable=\"true\"]')) as HTMLElement[];\n nodes.forEach((node) => node.addEventListener('dragstart', this[dragHandler]));\n }\n\n /**\n * Removes drag start listener from all current draggable items in the workspace.\n */\n [unobserveCurrent](): void {\n const nodes = Array.from(this.workspace.querySelectorAll('[draggable=\"true\"]')) as HTMLElement[];\n nodes.forEach((node) => node.removeEventListener('dragstart', this[dragHandler]));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DragAndDropPlugin.js","sourceRoot":"","sources":["../../../../src/visualization/plugin/dnd/DragAndDropPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-continue */\n/* eslint-disable no-param-reassign */\n\nimport VizWorkspaceElement from '../../elements/VizWorkspaceElement.js';\nimport { notifyMoved } from '../../lib/PositionUtils.js';\n\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 dragEnterHandler = Symbol('dragEnterHandler');\nexport const dragOverHandler = Symbol('dragOverHandler');\nexport const dropHandler = Symbol('dropHandler');\nexport const dragHandler = Symbol('dragHandler');\nexport const observeCurrent = Symbol('observeCurrent');\nexport const unobserveCurrent = Symbol('unobserveCurrent');\nexport const connectedValue = Symbol('connectedValue');\n\ninterface DragInfo {\n /**\n * click x position inside the dragged element\n */\n sx: number;\n /**\n * click y position inside the dragged element\n */\n sy: number;\n target: HTMLElement;\n}\n\n/**\n * A plugin that adds drag and drop support to the visualization workspace.\n * \n * This is a base class that meant to be extended depending on what the workspace visualizes.\n * The implementation for a specific type of a workspace should override the `dropExternal()` \n * function to handle dropping onto the workspace a new object.\n * \n * Additionally the `[dropHandler]()` can be updated to handle custom logic for drop action of \n * already visualized object. The default behavior is to reposition all currently selected elements\n * relative to the dragged object position change.\n * \n * After the workspace is created initialize this class and call the `connect()` function to initialize\n * event listeners. When the plugin is no longer needed call `disconnect()` function to clean up listeners.\n * \n * For the visualized elements to be draggable set `draggable=\"true\"` attribute on the element. If the attribute \n * is removed or changed the internal logic adds or removed the events from the element.\n */\nexport class DragAndDropPlugin {\n [connectedValue]: boolean = false;\n\n [mutationObserver]?: MutationObserver;\n\n dragInfo?: DragInfo;\n\n /**\n * @returns True when the plug-in is listening for the input events.\n */\n get connected(): boolean {\n return this[connectedValue];\n }\n\n constructor(public workspace: VizWorkspaceElement) {\n this[dragEnterHandler] = this[dragEnterHandler].bind(this);\n this[dragOverHandler] = this[dragOverHandler].bind(this);\n this[dropHandler] = this[dropHandler].bind(this);\n this[dragHandler] = this[dragHandler].bind(this);\n\n this[mutationHandler] = this[mutationHandler].bind(this);\n this[connectedValue] = false;\n }\n\n connect(): void {\n this.workspace.addEventListener('dragenter', this[dragEnterHandler]);\n this.workspace.addEventListener('dragover', this[dragOverHandler]);\n this.workspace.addEventListener('drop', this[dropHandler]);\n this[mutationObserver] = this[observeItems]();\n this[observeCurrent]();\n this[connectedValue] = true;\n }\n\n disconnect(): void {\n this.workspace.removeEventListener('dragenter', this[dragEnterHandler]);\n this.workspace.removeEventListener('dragover', this[dragOverHandler]);\n this.workspace.removeEventListener('drop', this[dropHandler]);\n if (this[mutationObserver]) {\n this[mutationObserver]!.disconnect();\n this[mutationObserver] = undefined;\n }\n this[unobserveCurrent]();\n this[connectedValue] = false;\n }\n\n /**\n * Sets drag info value from the drag event\n */\n setDragInfo(e: DragEvent): void {\n const node = e.target as HTMLElement;\n const { left, top } = node.getBoundingClientRect();\n const { clientX, clientY } = e;\n const { scale } = this.workspace;\n this.dragInfo = {\n sx: (clientX - left) / scale,\n sy: (clientY - top) / scale,\n target: node,\n };\n }\n\n /**\n * Repositions currently selected elements from a drop event.\n * This is called when the dropped element onto the workspace comes from the same workspace.\n */\n repositionFromDrop(e: DragEvent): void {\n const { target, sx, sy } = this.dragInfo!;\n const dragTarget = target as HTMLElement;\n const { left, top } = dragTarget.getBoundingClientRect();\n const { scale } = this.workspace;\n const ex = (e.clientX - left) / scale;\n const ey = (e.clientY - top) / scale;\n // tests by how much the box was moved in the workspace so the same point can be applied\n // to all boxes in the move.\n const ddx = ex - sx;\n const ddy = ey - sy;\n let items: HTMLElement[] = [];\n const selectionManager = this.workspace.selection;\n selectionManager.selected.forEach((item) => {\n if (item.node.hasAttribute('draggable') && item.node.getAttribute('draggable') === 'true') {\n items.push(item.node as HTMLElement);\n }\n });\n if (!items.length || items.length === 1 && items[0] !== target) {\n items = [dragTarget];\n }\n items.forEach((item) => notifyMoved(item, ddx, ddy));\n }\n\n /**\n * This function is called when a new object is dropped onto the workspace.\n * A \"new object\" is an object that has a source different than the current workspace.\n */\n async dropExternal(e: DragEvent): Promise<void> {\n // to be implemented by child classes.\n }\n\n /**\n * @returns True if the element can be dragged.\n */\n isDraggable(element: Element): boolean {\n return element.hasAttribute('draggable') && element.getAttribute('draggable') === 'true';\n }\n\n // PRIVATE APIS\n\n /**\n * Observe items change in the element's light DOM\n * @returns The observer handler\n */\n [observeItems](): MutationObserver {\n const config = { \n attributes: true, \n childList: true, \n subtree: true, \n attributeFilter: ['draggable'],\n };\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 // console.log(mutation);\n if (mutation.type === 'childList') {\n if (mutation.addedNodes.length) {\n this[processAddedNodes](mutation.addedNodes);\n }\n if (mutation.removedNodes.length) {\n this[processRemovedNodes](mutation.removedNodes);\n }\n } else if (mutation.type === 'attributes' && mutation.attributeName === 'draggable') {\n this[processAttributeChanged](mutation.target);\n }\n }\n }\n\n /**\n * Processes added children.\n * It adds drag and drop support.\n */\n [processAddedNodes](list: NodeList): void {\n Array.from(list).forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const element = node as HTMLElement;\n if (this.isDraggable(element)) {\n element.addEventListener('dragstart', this[dragHandler]);\n }\n const childList = element.querySelectorAll('[draggable]');\n this[processAddedNodes](childList);\n });\n }\n\n /**\n * Processes removed children.\n * It removes drag and drop support.\n */\n [processRemovedNodes](list: NodeList): void {\n Array.from(list).forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const element = node as HTMLElement;\n element.removeEventListener('dragstart', this[dragHandler]);\n const childList = element.querySelectorAll('[draggable]');\n this[processRemovedNodes](childList);\n });\n }\n\n /**\n * Adds or removes the `dragstart` event listener depending on the value oif the `draggable` attribute\n */\n [processAttributeChanged](node: Node): void {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as Element;\n typed.removeEventListener('dragstart', this[dragHandler] as EventListener);\n if (this.isDraggable(typed)) {\n typed.addEventListener('dragstart', this[dragHandler] as EventListener);\n }\n }\n\n /**\n * Handles the drag event on one of the children.\n */\n [dragHandler](e: DragEvent): void {\n // only elements are getting drag support so it is safe to set.\n e.dataTransfer!.setData('modeling/source', this.workspace.localName);\n this.setDragInfo(e);\n }\n\n /**\n * Handles the drag enter event on one of the children.\n */\n [dragEnterHandler](e: DragEvent): void {\n e.preventDefault();\n }\n\n /**\n * Handles the drag over event on one of the children.\n */\n [dragOverHandler](e: DragEvent): void {\n e.preventDefault();\n const { clientX, clientY } = e;\n this.workspace.scrollIfNeeded(clientX, clientY);\n }\n\n\n /**\n * Handles the drop event on one of the visualization canvas to update position of them.\n * \n * Note, some workspace elements can handle its own drop event and cancel it. In this case\n * this function won't be called.\n */\n async [dropHandler](e: DragEvent): Promise<void> {\n const source = e.dataTransfer!.getData('modeling/source');\n if (source !== this.workspace.localName) {\n this.dropExternal(e);\n } else {\n this.repositionFromDrop(e);\n }\n }\n\n /**\n * Observers all current draggable items in the workspace.\n */\n [observeCurrent](): void {\n const nodes = Array.from(this.workspace.querySelectorAll('[draggable=\"true\"]')) as HTMLElement[];\n nodes.forEach((node) => node.addEventListener('dragstart', this[dragHandler]));\n }\n\n /**\n * Removes drag start listener from all current draggable items in the workspace.\n */\n [unobserveCurrent](): void {\n const nodes = Array.from(this.workspace.querySelectorAll('[draggable=\"true\"]')) as HTMLElement[];\n nodes.forEach((node) => node.removeEventListener('dragstart', this[dragHandler]));\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
var _a;
|
|
1
2
|
import { getRelativeClickPoint, getObjectBoundingClientRect } from '../../lib/PositionUtils.js';
|
|
2
3
|
export const mouseDownHandler = Symbol('mouseDownHandler');
|
|
3
4
|
export const mouseUpHandler = Symbol('mouseUpHandler');
|
|
@@ -14,35 +15,34 @@ const CLS = 'selection-zone';
|
|
|
14
15
|
* to start listening for the events. Call `disconnect()` when the workspace is no longer in use.
|
|
15
16
|
*/
|
|
16
17
|
export class GroupSelection {
|
|
17
|
-
target;
|
|
18
|
-
[connectedValue] = false;
|
|
19
18
|
/**
|
|
20
19
|
* @returns True when the plug-in is listening for the input events.
|
|
21
20
|
*/
|
|
22
21
|
get connected() {
|
|
23
22
|
return this[connectedValue];
|
|
24
23
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Whether a selection is currently being made.
|
|
27
|
-
*/
|
|
28
|
-
selecting = false;
|
|
29
|
-
/**
|
|
30
|
-
* The element that is being rendered as a selection box.
|
|
31
|
-
*/
|
|
32
|
-
selectionZone = null;
|
|
33
|
-
/**
|
|
34
|
-
* The click start point
|
|
35
|
-
*/
|
|
36
|
-
startPoint = null;
|
|
37
|
-
/**
|
|
38
|
-
* The position delta between the start and the current pointer position.
|
|
39
|
-
*/
|
|
40
|
-
delta = null;
|
|
41
24
|
/**
|
|
42
25
|
* @param target The target workspace element.
|
|
43
26
|
*/
|
|
44
27
|
constructor(target) {
|
|
45
28
|
this.target = target;
|
|
29
|
+
this[_a] = false;
|
|
30
|
+
/**
|
|
31
|
+
* Whether a selection is currently being made.
|
|
32
|
+
*/
|
|
33
|
+
this.selecting = false;
|
|
34
|
+
/**
|
|
35
|
+
* The element that is being rendered as a selection box.
|
|
36
|
+
*/
|
|
37
|
+
this.selectionZone = null;
|
|
38
|
+
/**
|
|
39
|
+
* The click start point
|
|
40
|
+
*/
|
|
41
|
+
this.startPoint = null;
|
|
42
|
+
/**
|
|
43
|
+
* The position delta between the start and the current pointer position.
|
|
44
|
+
*/
|
|
45
|
+
this.delta = null;
|
|
46
46
|
this[mouseUpHandler] = this[mouseUpHandler].bind(this);
|
|
47
47
|
this[mouseDownHandler] = this[mouseDownHandler].bind(this);
|
|
48
48
|
this[mouseMoveHandler] = this[mouseMoveHandler].bind(this);
|
|
@@ -66,7 +66,7 @@ export class GroupSelection {
|
|
|
66
66
|
this.selectionZone = null;
|
|
67
67
|
this.selecting = false;
|
|
68
68
|
}
|
|
69
|
-
[mouseDownHandler](e) {
|
|
69
|
+
[(_a = connectedValue, mouseDownHandler)](e) {
|
|
70
70
|
if (e.target !== this.target || e.button !== 0) {
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupSelection.js","sourceRoot":"","sources":["../../../../src/visualization/plugin/group-selection/GroupSelection.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport VizWorkspaceElement from '../../elements/VizWorkspaceElement.js';\nimport { Point } from '../../lib/Point.js';\nimport { getRelativeClickPoint, getObjectBoundingClientRect } from '../../lib/PositionUtils.js';\n\nexport const mouseDownHandler = Symbol('mouseDownHandler');\nexport const mouseUpHandler = Symbol('mouseUpHandler');\nexport const mouseMoveHandler = Symbol('mouseMoveHandler');\nexport const connectedValue = Symbol('connectedValue');\n\nconst CLS = 'selection-zone';\n\n/**\n * A plugin that adds support for a group selection via pointer device on the visualization workspace.\n * \n * This plugin draws a selection rectangle from the starting position until the pointer is released.\n * Each selectable element that is inside the rectangle is selected.\n * \n * After the modeling workspace is created create instance of this class and call `connect()` function\n * to start listening for the events. Call `disconnect()` when the workspace is no longer in use.\n */\nexport class GroupSelection {\n [connectedValue]: boolean = false;\n\n /**\n * @returns True when the plug-in is listening for the input events.\n */\n get connected(): boolean {\n return this[connectedValue];\n }\n\n /**\n * Whether a selection is currently being made.\n */\n selecting: boolean = false;\n\n /**\n * The element that is being rendered as a selection box.\n */\n selectionZone: HTMLDivElement | null = null;\n\n /**\n * The click start point\n */\n startPoint: Point | null = null;\n\n /**\n * The position delta between the start and the current pointer position.\n */\n delta: Point | null = null;\n\n /**\n * @param target The target workspace element.\n */\n constructor(public target: VizWorkspaceElement) {\n this[mouseUpHandler] = this[mouseUpHandler].bind(this);\n this[mouseDownHandler] = this[mouseDownHandler].bind(this);\n this[mouseMoveHandler] = this[mouseMoveHandler].bind(this);\n this[connectedValue] = false;\n }\n\n connect(): void {\n this.target.addEventListener('mousedown', this[mouseDownHandler]);\n document.body.addEventListener('mouseup', this[mouseUpHandler]);\n document.body.addEventListener('mousemove', this[mouseMoveHandler]);\n this[connectedValue] = true;\n }\n\n disconnect(): void {\n this.target.removeEventListener('mousedown', this[mouseDownHandler]);\n document.body.removeEventListener('mouseup', this[mouseUpHandler]);\n document.body.removeEventListener('mousemove', this[mouseMoveHandler]);\n this[connectedValue] = false;\n }\n\n reset(): void {\n this.startPoint = null;\n this.delta = null;\n this.selectionZone = null;\n this.selecting = false;\n }\n\n [mouseDownHandler](e: MouseEvent): void {\n if (e.target !== this.target || e.button !== 0) {\n return;\n }\n // e.preventDefault();\n this.selecting = true;\n this.startPoint = this.pointFromEvent(e);\n }\n\n [mouseMoveHandler](e: MouseEvent): void {\n if (!this.selecting) {\n return;\n }\n if (!this.selectionZone) {\n this.appendSelectionZone(this.startPoint!);\n }\n const current = this.pointFromEvent(e);\n this.updateSelectionSize(current);\n // // See notes in this function.\n this.detectEdges(e);\n this.detectSelected();\n e.preventDefault();\n }\n\n [mouseUpHandler](e: MouseEvent): void {\n if (!this.selecting) {\n return;\n }\n this.clearWorkspace();\n this.reset();\n e.preventDefault();\n }\n\n /**\n * Removes the selection rectangle from the workspace\n */\n clearWorkspace(): void {\n const target = this.target.canvas!;\n const nodes = target.querySelectorAll(`.${CLS}`);\n Array.from(nodes).forEach((n) => target.removeChild(n));\n }\n\n /**\n * Handles the drop event on one of the children.\n * @returns coordinates of the click on the workspace as it would be\n * not scaled.\n */\n pointFromEvent(e: MouseEvent): Point {\n const { clientX, clientY } = e;\n return getRelativeClickPoint(clientX, clientY, this.target);\n }\n\n /**\n * Adds a selection box in the place of the click.\n * @param position The starting position of the element.\n */\n appendSelectionZone(position: Point): void {\n const selectionZone = document.createElement('div');\n selectionZone.classList.add(CLS);\n const { x, y } = position;\n selectionZone.style.top = `${y}px`;\n selectionZone.style.left = `${x}px`;\n this.target.canvas!.append(selectionZone);\n this.selectionZone = selectionZone;\n }\n\n /**\n * Moves the workspace if needed.\n */\n detectEdges(e: MouseEvent): void {\n const { clientX, clientY } = e;\n this.target.scrollIfNeeded(clientX, clientY);\n }\n\n /**\n * Redraws the selection rectangle to current point\n * @param {Point} current\n */\n updateSelectionSize(current: Point): void {\n const { x: x1, y: y1 } = this.startPoint!;\n const { x: x2, y: y2 } = current;\n const dx = x2 - x1;\n const dy = y2 - y1;\n if (dx >= 0) {\n this.selectionZone!.style.width = `${dx}px`;\n } else {\n this.selectionZone!.style.width = `${Math.abs(dx)}px`;\n const xPos = x1 + dx;\n this.selectionZone!.style.left = `${xPos}px`;\n }\n if (dy >= 0) {\n this.selectionZone!.style.height = `${dy}px`;\n } else {\n this.selectionZone!.style.height = `${Math.abs(dy)}px`;\n const yPos = y1 + dy;\n this.selectionZone!.style.top = `${yPos}px`;\n }\n }\n\n detectSelected(): void {\n const selectionManager = this.target.selection;\n const items = selectionManager.selectable;\n if (!items.length) {\n return;\n }\n const selected: Element[] = [];\n const rect = this.getSelectionRect();\n items.forEach((node) => {\n const box = getObjectBoundingClientRect(node, this.target);\n if (this.collide(rect, box)) {\n selected.push(node);\n }\n });\n const targetSelected: Element[] = [];\n selectionManager.selected.forEach((i) => {\n if (selectionManager.isSelectable(i.node)) {\n targetSelected.push(i.node);\n }\n });\n if (selected.length === targetSelected.length) {\n // This is a possible optimization to reduce number of computations.\n // Assumption is being made that the actual change can only be made\n // when adding or removing a selection (one by one) as the selection\n // would have to at the same time select a rectangle and deselect another\n // which probably is impossible (?).\n return;\n }\n if (selected.length > 0) {\n targetSelected.forEach((node) => {\n if (!selected.includes(node) && selectionManager.isSelected(node)) {\n selectionManager.setUnselected(node);\n }\n });\n selected.forEach((node) => {\n if (!selectionManager.isSelected(node)) {\n selectionManager.setSelected(node);\n }\n });\n } else if (targetSelected.length) {\n targetSelected.forEach((node) => selectionManager.setUnselected(node));\n }\n }\n\n /**\n * Reads scaled selection rectangle\n * @return A DOMRect object for the selection rectangle\n */\n getSelectionRect(): DOMRect {\n const node = this.selectionZone!;\n const top = this.getSafeStyleValue(node, 'top');\n const left = this.getSafeStyleValue(node, 'left');\n const width = this.getSafeStyleValue(node, 'width');\n const height = this.getSafeStyleValue(node, 'height');\n return new DOMRect(left, top, width, height);\n }\n\n /**\n * @param node The node to read the style property from.\n * @param prop The name of the css property to read\n * @returns The value of the property or 0 if not found.\n */\n getSafeStyleValue(node: HTMLElement, prop: string): number {\n let value = node.style.getPropertyValue(prop);\n if (!value) {\n return 0;\n }\n value = value.replace('px', '');\n const result = Number(value);\n if (Number.isNaN(result)) {\n return 0;\n }\n return result;\n }\n\n /**\n * Tests whether a current node collides with the selection rectangle.\n * @param selectionRect The selection computed rectangle\n * @param rect The Rect of the target element.\n * @returns True if the selection rectangle collides with `node`\n */\n collide(selectionRect: DOMRect, rect: DOMRect): boolean {\n const { x: x1, y: y1, width: w1, height: h1 } = selectionRect;\n const { x: x2, y: y2, width: w2, height: h2 } = rect;\n if (x1 < x2 + w2 &&\n x1 + w1 > x2 &&\n y1 < y2 + h2 &&\n y1 + h1 > y2) {\n return true;\n }\n return false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GroupSelection.js","sourceRoot":"","sources":["../../../../src/visualization/plugin/group-selection/GroupSelection.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport VizWorkspaceElement from '../../elements/VizWorkspaceElement.js';\nimport { Point } from '../../lib/Point.js';\nimport { getRelativeClickPoint, getObjectBoundingClientRect } from '../../lib/PositionUtils.js';\n\nexport const mouseDownHandler = Symbol('mouseDownHandler');\nexport const mouseUpHandler = Symbol('mouseUpHandler');\nexport const mouseMoveHandler = Symbol('mouseMoveHandler');\nexport const connectedValue = Symbol('connectedValue');\n\nconst CLS = 'selection-zone';\n\n/**\n * A plugin that adds support for a group selection via pointer device on the visualization workspace.\n * \n * This plugin draws a selection rectangle from the starting position until the pointer is released.\n * Each selectable element that is inside the rectangle is selected.\n * \n * After the modeling workspace is created create instance of this class and call `connect()` function\n * to start listening for the events. Call `disconnect()` when the workspace is no longer in use.\n */\nexport class GroupSelection {\n [connectedValue]: boolean = false;\n\n /**\n * @returns True when the plug-in is listening for the input events.\n */\n get connected(): boolean {\n return this[connectedValue];\n }\n\n /**\n * Whether a selection is currently being made.\n */\n selecting: boolean = false;\n\n /**\n * The element that is being rendered as a selection box.\n */\n selectionZone: HTMLDivElement | null = null;\n\n /**\n * The click start point\n */\n startPoint: Point | null = null;\n\n /**\n * The position delta between the start and the current pointer position.\n */\n delta: Point | null = null;\n\n /**\n * @param target The target workspace element.\n */\n constructor(public target: VizWorkspaceElement) {\n this[mouseUpHandler] = this[mouseUpHandler].bind(this);\n this[mouseDownHandler] = this[mouseDownHandler].bind(this);\n this[mouseMoveHandler] = this[mouseMoveHandler].bind(this);\n this[connectedValue] = false;\n }\n\n connect(): void {\n this.target.addEventListener('mousedown', this[mouseDownHandler]);\n document.body.addEventListener('mouseup', this[mouseUpHandler]);\n document.body.addEventListener('mousemove', this[mouseMoveHandler]);\n this[connectedValue] = true;\n }\n\n disconnect(): void {\n this.target.removeEventListener('mousedown', this[mouseDownHandler]);\n document.body.removeEventListener('mouseup', this[mouseUpHandler]);\n document.body.removeEventListener('mousemove', this[mouseMoveHandler]);\n this[connectedValue] = false;\n }\n\n reset(): void {\n this.startPoint = null;\n this.delta = null;\n this.selectionZone = null;\n this.selecting = false;\n }\n\n [mouseDownHandler](e: MouseEvent): void {\n if (e.target !== this.target || e.button !== 0) {\n return;\n }\n // e.preventDefault();\n this.selecting = true;\n this.startPoint = this.pointFromEvent(e);\n }\n\n [mouseMoveHandler](e: MouseEvent): void {\n if (!this.selecting) {\n return;\n }\n if (!this.selectionZone) {\n this.appendSelectionZone(this.startPoint!);\n }\n const current = this.pointFromEvent(e);\n this.updateSelectionSize(current);\n // // See notes in this function.\n this.detectEdges(e);\n this.detectSelected();\n e.preventDefault();\n }\n\n [mouseUpHandler](e: MouseEvent): void {\n if (!this.selecting) {\n return;\n }\n this.clearWorkspace();\n this.reset();\n e.preventDefault();\n }\n\n /**\n * Removes the selection rectangle from the workspace\n */\n clearWorkspace(): void {\n const target = this.target.canvas!;\n const nodes = target.querySelectorAll(`.${CLS}`);\n Array.from(nodes).forEach((n) => target.removeChild(n));\n }\n\n /**\n * Handles the drop event on one of the children.\n * @returns coordinates of the click on the workspace as it would be\n * not scaled.\n */\n pointFromEvent(e: MouseEvent): Point {\n const { clientX, clientY } = e;\n return getRelativeClickPoint(clientX, clientY, this.target);\n }\n\n /**\n * Adds a selection box in the place of the click.\n * @param position The starting position of the element.\n */\n appendSelectionZone(position: Point): void {\n const selectionZone = document.createElement('div');\n selectionZone.classList.add(CLS);\n const { x, y } = position;\n selectionZone.style.top = `${y}px`;\n selectionZone.style.left = `${x}px`;\n this.target.canvas!.append(selectionZone);\n this.selectionZone = selectionZone;\n }\n\n /**\n * Moves the workspace if needed.\n */\n detectEdges(e: MouseEvent): void {\n const { clientX, clientY } = e;\n this.target.scrollIfNeeded(clientX, clientY);\n }\n\n /**\n * Redraws the selection rectangle to current point\n * @param {Point} current\n */\n updateSelectionSize(current: Point): void {\n const { x: x1, y: y1 } = this.startPoint!;\n const { x: x2, y: y2 } = current;\n const dx = x2 - x1;\n const dy = y2 - y1;\n if (dx >= 0) {\n this.selectionZone!.style.width = `${dx}px`;\n } else {\n this.selectionZone!.style.width = `${Math.abs(dx)}px`;\n const xPos = x1 + dx;\n this.selectionZone!.style.left = `${xPos}px`;\n }\n if (dy >= 0) {\n this.selectionZone!.style.height = `${dy}px`;\n } else {\n this.selectionZone!.style.height = `${Math.abs(dy)}px`;\n const yPos = y1 + dy;\n this.selectionZone!.style.top = `${yPos}px`;\n }\n }\n\n detectSelected(): void {\n const selectionManager = this.target.selection;\n const items = selectionManager.selectable;\n if (!items.length) {\n return;\n }\n const selected: Element[] = [];\n const rect = this.getSelectionRect();\n items.forEach((node) => {\n const box = getObjectBoundingClientRect(node, this.target);\n if (this.collide(rect, box)) {\n selected.push(node);\n }\n });\n const targetSelected: Element[] = [];\n selectionManager.selected.forEach((i) => {\n if (selectionManager.isSelectable(i.node)) {\n targetSelected.push(i.node);\n }\n });\n if (selected.length === targetSelected.length) {\n // This is a possible optimization to reduce number of computations.\n // Assumption is being made that the actual change can only be made\n // when adding or removing a selection (one by one) as the selection\n // would have to at the same time select a rectangle and deselect another\n // which probably is impossible (?).\n return;\n }\n if (selected.length > 0) {\n targetSelected.forEach((node) => {\n if (!selected.includes(node) && selectionManager.isSelected(node)) {\n selectionManager.setUnselected(node);\n }\n });\n selected.forEach((node) => {\n if (!selectionManager.isSelected(node)) {\n selectionManager.setSelected(node);\n }\n });\n } else if (targetSelected.length) {\n targetSelected.forEach((node) => selectionManager.setUnselected(node));\n }\n }\n\n /**\n * Reads scaled selection rectangle\n * @return A DOMRect object for the selection rectangle\n */\n getSelectionRect(): DOMRect {\n const node = this.selectionZone!;\n const top = this.getSafeStyleValue(node, 'top');\n const left = this.getSafeStyleValue(node, 'left');\n const width = this.getSafeStyleValue(node, 'width');\n const height = this.getSafeStyleValue(node, 'height');\n return new DOMRect(left, top, width, height);\n }\n\n /**\n * @param node The node to read the style property from.\n * @param prop The name of the css property to read\n * @returns The value of the property or 0 if not found.\n */\n getSafeStyleValue(node: HTMLElement, prop: string): number {\n let value = node.style.getPropertyValue(prop);\n if (!value) {\n return 0;\n }\n value = value.replace('px', '');\n const result = Number(value);\n if (Number.isNaN(result)) {\n return 0;\n }\n return result;\n }\n\n /**\n * Tests whether a current node collides with the selection rectangle.\n * @param selectionRect The selection computed rectangle\n * @param rect The Rect of the target element.\n * @returns True if the selection rectangle collides with `node`\n */\n collide(selectionRect: DOMRect, rect: DOMRect): boolean {\n const { x: x1, y: y1, width: w1, height: h1 } = selectionRect;\n const { x: x2, y: y2, width: w2, height: h2 } = rect;\n if (x1 < x2 + w2 &&\n x1 + w1 > x2 &&\n y1 < y2 + h2 &&\n y1 + h1 > y2) {\n return true;\n }\n return false;\n }\n}\n"]}
|