@api-client/ui 0.0.4 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/demo/elements/http/http-assertions.html +3 -0
- package/demo/elements/http/http-assertions.ts +1 -1
- package/demo/elements/http/http-flows.html +23 -0
- package/demo/elements/http/http-flows.ts +92 -0
- package/demo/elements/http/index.html +3 -0
- package/demo/pages/http-project/main.ts +5 -6
- package/dist/amf/lib/AmfParameters.js +0 -4
- package/dist/amf/lib/AmfParameters.js.map +1 -1
- package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
- package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
- package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
- package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
- package/dist/amf/store/AmfGraphStore.js +0 -2
- package/dist/amf/store/AmfGraphStore.js.map +1 -1
- package/dist/amf/store/AmfStore.js +0 -7
- package/dist/amf/store/AmfStore.js.map +1 -1
- package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
- package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
- package/dist/bindings/base/PlatformBindings.js +6 -10
- package/dist/bindings/base/PlatformBindings.js.map +1 -1
- package/dist/bindings/base/ProxyBindings.js +9 -6
- package/dist/bindings/base/ProxyBindings.js.map +1 -1
- package/dist/bindings/base/SharedWorkerThread.js +4 -1
- package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
- package/dist/bindings/base/StoreBindings.js +162 -170
- package/dist/bindings/base/StoreBindings.js.map +1 -1
- package/dist/bindings/web/WebConfigurationBindings.js +22 -24
- package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
- package/dist/bindings/web/WebFileBindings.js +7 -4
- package/dist/bindings/web/WebFileBindings.js.map +1 -1
- package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
- package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
- package/dist/bindings/web/WebNavigationBindings.js +4 -1
- package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
- package/dist/bindings/web/WebProxyBindings.js +5 -6
- package/dist/bindings/web/WebProxyBindings.js.map +1 -1
- package/dist/bindings/web/WebStoreBindings.js +39 -44
- package/dist/bindings/web/WebStoreBindings.js.map +1 -1
- package/dist/contextual-menu/ContextualMenu.js +10 -19
- package/dist/contextual-menu/ContextualMenu.js.map +1 -1
- package/dist/contextual-menu/ContextualMenuElement.js +4 -32
- package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
- package/dist/contextual-menu/MenuItem.js +0 -12
- package/dist/contextual-menu/MenuItem.js.map +1 -1
- package/dist/define/amf/api-annotation-document.js +1 -1
- package/dist/define/amf/api-annotation-document.js.map +1 -1
- package/dist/define/amf/api-authorization-editor.js +1 -1
- package/dist/define/amf/api-authorization-editor.js.map +1 -1
- package/dist/define/amf/api-channel-document.js +1 -1
- package/dist/define/amf/api-channel-document.js.map +1 -1
- package/dist/define/amf/api-documentation-document.js +1 -1
- package/dist/define/amf/api-documentation-document.js.map +1 -1
- package/dist/define/amf/api-documentation.js +1 -1
- package/dist/define/amf/api-documentation.js.map +1 -1
- package/dist/define/amf/api-navigation.js +1 -1
- package/dist/define/amf/api-navigation.js.map +1 -1
- package/dist/define/amf/api-operation-document.js +1 -1
- package/dist/define/amf/api-operation-document.js.map +1 -1
- package/dist/define/amf/api-parameter-document.js +1 -1
- package/dist/define/amf/api-parameter-document.js.map +1 -1
- package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
- package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
- package/dist/define/amf/api-payload-document.js +1 -1
- package/dist/define/amf/api-payload-document.js.map +1 -1
- package/dist/define/amf/api-request-document.js +1 -1
- package/dist/define/amf/api-request-document.js.map +1 -1
- package/dist/define/amf/api-request-editor.js +1 -1
- package/dist/define/amf/api-request-editor.js.map +1 -1
- package/dist/define/amf/api-request.js +1 -1
- package/dist/define/amf/api-request.js.map +1 -1
- package/dist/define/amf/api-resource-document.js +1 -1
- package/dist/define/amf/api-resource-document.js.map +1 -1
- package/dist/define/amf/api-response-document.js +1 -1
- package/dist/define/amf/api-response-document.js.map +1 -1
- package/dist/define/amf/api-schema-document.js +1 -1
- package/dist/define/amf/api-schema-document.js.map +1 -1
- package/dist/define/amf/api-security-document.js +1 -1
- package/dist/define/amf/api-security-document.js.map +1 -1
- package/dist/define/amf/api-security-requirement-document.js +1 -1
- package/dist/define/amf/api-security-requirement-document.js.map +1 -1
- package/dist/define/amf/api-server-picker.js +1 -1
- package/dist/define/amf/api-server-picker.js.map +1 -1
- package/dist/define/amf/api-summary.js +1 -1
- package/dist/define/amf/api-summary.js.map +1 -1
- package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
- package/dist/define/authorization/apikey-authorization.js +1 -1
- package/dist/define/authorization/apikey-authorization.js.map +1 -1
- package/dist/define/authorization/basic-authorization.js +1 -1
- package/dist/define/authorization/basic-authorization.js.map +1 -1
- package/dist/define/authorization/bearer-authorization.js +1 -1
- package/dist/define/authorization/bearer-authorization.js.map +1 -1
- package/dist/define/authorization/cc-authorization.js +1 -1
- package/dist/define/authorization/cc-authorization.js.map +1 -1
- package/dist/define/authorization/ntlm-authorization.js +1 -1
- package/dist/define/authorization/ntlm-authorization.js.map +1 -1
- package/dist/define/authorization/oauth2-authorization.js +1 -1
- package/dist/define/authorization/oauth2-authorization.js.map +1 -1
- package/dist/define/authorization/oidc-authorization.js +1 -1
- package/dist/define/authorization/oidc-authorization.js.map +1 -1
- package/dist/define/contextual-menu/contextual-menu.js +1 -1
- package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
- package/dist/define/dialog/confirm-delete-dialog.js +1 -1
- package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
- package/dist/define/dialog/delete-cookie-action-dialog.d.ts +10 -0
- package/dist/define/dialog/delete-cookie-action-dialog.d.ts.map +1 -0
- package/dist/define/dialog/delete-cookie-action-dialog.js +14 -0
- package/dist/define/dialog/delete-cookie-action-dialog.js.map +1 -0
- package/dist/define/dialog/rename-dialog.js +1 -1
- package/dist/define/dialog/rename-dialog.js.map +1 -1
- package/dist/define/dialog/set-cookie-action-dialog.d.ts +10 -0
- package/dist/define/dialog/set-cookie-action-dialog.d.ts.map +1 -0
- package/dist/define/dialog/set-cookie-action-dialog.js +14 -0
- package/dist/define/dialog/set-cookie-action-dialog.js.map +1 -0
- package/dist/define/files/share-file.js +1 -1
- package/dist/define/files/share-file.js.map +1 -1
- package/dist/define/har/har-viewer.js +1 -1
- package/dist/define/har/har-viewer.js.map +1 -1
- package/dist/define/highlight/marked-highlight.js +1 -1
- package/dist/define/highlight/marked-highlight.js.map +1 -1
- package/dist/define/highlight/prism-highlight.js +1 -1
- package/dist/define/highlight/prism-highlight.js.map +1 -1
- package/dist/define/http/http-assertions.d.ts +1 -1
- package/dist/define/http/http-assertions.d.ts.map +1 -1
- package/dist/define/http/http-assertions.js +3 -3
- package/dist/define/http/http-assertions.js.map +1 -1
- package/dist/define/http/http-body-editor.js +1 -1
- package/dist/define/http/http-body-editor.js.map +1 -1
- package/dist/define/http/http-body-multipart-editor.js +1 -1
- package/dist/define/http/http-body-multipart-editor.js.map +1 -1
- package/dist/define/http/http-body-text-editor.js +1 -1
- package/dist/define/http/http-body-text-editor.js.map +1 -1
- package/dist/define/http/http-body-urlencoded-editor.js +1 -1
- package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
- package/dist/define/http/http-flows.d.ts +10 -0
- package/dist/define/http/http-flows.d.ts.map +1 -0
- package/dist/define/http/http-flows.js +13 -0
- package/dist/define/http/http-flows.js.map +1 -0
- package/dist/define/http/http-headers-form.js +1 -1
- package/dist/define/http/http-headers-form.js.map +1 -1
- package/dist/define/http/http-log-body.js +1 -1
- package/dist/define/http/http-log-body.js.map +1 -1
- package/dist/define/http/http-log-headers.js +1 -1
- package/dist/define/http/http-log-headers.js.map +1 -1
- package/dist/define/http/http-log-timings.js +1 -1
- package/dist/define/http/http-log-timings.js.map +1 -1
- package/dist/define/http/http-request-config.js +1 -1
- package/dist/define/http/http-request-config.js.map +1 -1
- package/dist/define/http/http-request-editor.js +1 -1
- package/dist/define/http/http-request-editor.js.map +1 -1
- package/dist/define/http/http-request-log.js +1 -1
- package/dist/define/http/http-request-log.js.map +1 -1
- package/dist/define/http/http-snippets.js +1 -1
- package/dist/define/http/http-snippets.js.map +1 -1
- package/dist/define/http/http-url-input.js +1 -1
- package/dist/define/http/http-url-input.js.map +1 -1
- package/dist/define/http/http-url-params-form.js +1 -1
- package/dist/define/http/http-url-params-form.js.map +1 -1
- package/dist/define/http-project/http-project-request-history.js +1 -1
- package/dist/define/http-project/http-project-request-history.js.map +1 -1
- package/dist/define/http-project/http-project-request.js +2 -2
- package/dist/define/http-project/http-project-request.js.map +1 -1
- package/dist/define/http-project/project-navigation.js +1 -1
- package/dist/define/http-project/project-navigation.js.map +1 -1
- package/dist/define/http-project/project-run-report.js +1 -1
- package/dist/define/http-project/project-run-report.js.map +1 -1
- package/dist/define/http-project/project-runner.js +2 -2
- package/dist/define/http-project/project-runner.js.map +1 -1
- package/dist/define/layout/split-view.js +1 -1
- package/dist/define/layout/split-view.js.map +1 -1
- package/dist/define/schema-design/schema-design-navigation.js +1 -1
- package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
- package/dist/define/schema-design/schema-namespace-selector.js +1 -1
- package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
- package/dist/define/ui/ui-button.js +1 -1
- package/dist/define/ui/ui-button.js.map +1 -1
- package/dist/define/ui/ui-chip.js +1 -1
- package/dist/define/ui/ui-chip.js.map +1 -1
- package/dist/define/ui/ui-collapse.js +1 -1
- package/dist/define/ui/ui-collapse.js.map +1 -1
- package/dist/define/ui/ui-dialog.js +1 -1
- package/dist/define/ui/ui-dialog.js.map +1 -1
- package/dist/define/ui/ui-divider.d.ts +4 -1
- package/dist/define/ui/ui-divider.d.ts.map +1 -1
- package/dist/define/ui/ui-divider.js +11 -2
- package/dist/define/ui/ui-divider.js.map +1 -1
- package/dist/define/ui/ui-dropdown-list.js +1 -1
- package/dist/define/ui/ui-dropdown-list.js.map +1 -1
- package/dist/define/ui/ui-icon-button.js +1 -1
- package/dist/define/ui/ui-icon-button.js.map +1 -1
- package/dist/define/ui/ui-icon.js +1 -1
- package/dist/define/ui/ui-icon.js.map +1 -1
- package/dist/define/ui/ui-list-item.js +1 -1
- package/dist/define/ui/ui-list-item.js.map +1 -1
- package/dist/define/ui/ui-list.js +1 -1
- package/dist/define/ui/ui-list.js.map +1 -1
- package/dist/define/ui/ui-listbox.js +1 -1
- package/dist/define/ui/ui-listbox.js.map +1 -1
- package/dist/define/ui/ui-progress.js +1 -1
- package/dist/define/ui/ui-progress.js.map +1 -1
- package/dist/define/ui/ui-segmented-button-set.js +1 -1
- package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
- package/dist/define/ui/ui-segmented-button.js +1 -1
- package/dist/define/ui/ui-segmented-button.js.map +1 -1
- package/dist/define/ui/ui-snackbar.js +1 -1
- package/dist/define/ui/ui-snackbar.js.map +1 -1
- package/dist/define/ui/ui-tab.js +1 -1
- package/dist/define/ui/ui-tab.js.map +1 -1
- package/dist/define/ui/ui-tabs.js +1 -1
- package/dist/define/ui/ui-tabs.js.map +1 -1
- package/dist/directives/data-attr.js +0 -1
- package/dist/directives/data-attr.js.map +1 -1
- package/dist/elements/ApiElement.d.ts +4 -0
- package/dist/elements/ApiElement.d.ts.map +1 -1
- package/dist/elements/ApiElement.js +6 -7
- package/dist/elements/ApiElement.js.map +1 -1
- package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
- package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiAuthorizationEditor.element.js +1 -33
- package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiDocumentation.element.js +0 -91
- package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
- package/dist/elements/amf/ApiDocumentationBase.js +0 -9
- package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
- package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
- package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiNavigation.element.js +0 -97
- package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.d.ts.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.js +2 -77
- package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
- package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
- package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
- package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
- package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequest.element.js +1 -79
- package/dist/elements/amf/ApiRequest.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
- package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.d.ts +0 -1
- package/dist/elements/amf/ApiRequestEditor.element.d.ts.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.js +0 -121
- package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
- package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
- package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
- package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
- package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
- package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiServerPicker.element.js +2 -65
- package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
- package/dist/elements/amf/ApiSummary.element.js +0 -26
- package/dist/elements/amf/ApiSummary.element.js.map +1 -1
- package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
- package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
- package/dist/elements/amf/authorization/AmfBasic.js +0 -4
- package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
- package/dist/elements/amf/authorization/AmfBearer.js +0 -4
- package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
- package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
- package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
- package/dist/elements/amf/authorization/AmfOidc.js +0 -4
- package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
- package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
- package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
- package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
- package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
- package/dist/elements/authorization/OAuth2Authorize.js +0 -14
- package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
- package/dist/elements/authorization/OidcAuthorize.js +0 -14
- package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
- package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
- package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
- package/dist/elements/authorization/ui/Authorization.d.ts +2 -1
- package/dist/elements/authorization/ui/Authorization.d.ts.map +1 -1
- package/dist/elements/authorization/ui/Authorization.js +18 -35
- package/dist/elements/authorization/ui/Authorization.js.map +1 -1
- package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
- package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
- package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
- package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
- package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
- package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
- package/dist/elements/code/HttpSnippets.js +9 -8
- package/dist/elements/code/HttpSnippets.js.map +1 -1
- package/dist/elements/dialog/ConfirmDelete.js +0 -12
- package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
- package/dist/elements/dialog/DeleteCookieAction.element.d.ts +20 -0
- package/dist/elements/dialog/DeleteCookieAction.element.d.ts.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.element.js +93 -0
- package/dist/elements/dialog/DeleteCookieAction.element.js.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.d.ts +3 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.d.ts.map +1 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.js +13 -0
- package/dist/elements/dialog/DeleteCookieAction.styles.js.map +1 -0
- package/dist/elements/dialog/Rename.d.ts +7 -6
- package/dist/elements/dialog/Rename.d.ts.map +1 -1
- package/dist/elements/dialog/Rename.js +7 -12
- package/dist/elements/dialog/Rename.js.map +1 -1
- package/dist/elements/dialog/SetCookieAction.element.d.ts +22 -0
- package/dist/elements/dialog/SetCookieAction.element.d.ts.map +1 -0
- package/dist/elements/dialog/SetCookieAction.element.js +173 -0
- package/dist/elements/dialog/SetCookieAction.element.js.map +1 -0
- package/dist/elements/environment/EnvironmentEditor.d.ts +24 -3
- package/dist/elements/environment/EnvironmentEditor.d.ts.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.js +73 -30
- package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.styles.d.ts.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.styles.js +5 -0
- package/dist/elements/environment/EnvironmentEditor.styles.js.map +1 -1
- package/dist/elements/environment/ServerEditor.d.ts +3 -3
- package/dist/elements/environment/ServerEditor.d.ts.map +1 -1
- package/dist/elements/environment/ServerEditor.js +10 -51
- package/dist/elements/environment/ServerEditor.js.map +1 -1
- package/dist/elements/environment/VariablesEditor.d.ts +0 -1
- package/dist/elements/environment/VariablesEditor.d.ts.map +1 -1
- package/dist/elements/environment/VariablesEditor.js +10 -18
- package/dist/elements/environment/VariablesEditor.js.map +1 -1
- package/dist/elements/files/ShareFile.js +19 -57
- package/dist/elements/files/ShareFile.js.map +1 -1
- package/dist/elements/har/HarViewer.js +6 -7
- package/dist/elements/har/HarViewer.js.map +1 -1
- package/dist/elements/highlight/MarkedHighlight.js +4 -56
- package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
- package/dist/elements/highlight/Prism.styles.d.ts.map +1 -1
- package/dist/elements/highlight/Prism.styles.js +12 -5
- package/dist/elements/highlight/Prism.styles.js.map +1 -1
- package/dist/elements/highlight/PrismHighlight.js +9 -18
- package/dist/elements/highlight/PrismHighlight.js.map +1 -1
- package/dist/elements/highlight/PrismHighlighter.js +4 -6
- package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
- package/dist/elements/http/BodyEditor.d.ts +0 -4
- package/dist/elements/http/BodyEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyEditor.js +31 -49
- package/dist/elements/http/BodyEditor.js.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.d.ts +3 -16
- package/dist/elements/http/BodyMultipartEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.js +20 -37
- package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
- package/dist/elements/http/BodyTextEditor.d.ts +0 -1
- package/dist/elements/http/BodyTextEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyTextEditor.js +2 -18
- package/dist/elements/http/BodyTextEditor.js.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.d.ts +3 -3
- package/dist/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.js +23 -26
- package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
- package/dist/elements/http/HeadersForm.d.ts +0 -4
- package/dist/elements/http/HeadersForm.d.ts.map +1 -1
- package/dist/elements/http/HeadersForm.js +16 -23
- package/dist/elements/http/HeadersForm.js.map +1 -1
- package/dist/elements/http/HttpAssertions.element.d.ts +55 -0
- package/dist/elements/http/HttpAssertions.element.d.ts.map +1 -0
- package/dist/elements/http/HttpAssertions.element.js +264 -0
- package/dist/elements/http/HttpAssertions.element.js.map +1 -0
- package/dist/elements/http/HttpAssertions.styles.d.ts.map +1 -1
- package/dist/elements/http/HttpAssertions.styles.js +7 -156
- package/dist/elements/http/HttpAssertions.styles.js.map +1 -1
- package/dist/elements/http/HttpFlows.common.d.ts +3 -0
- package/dist/elements/http/HttpFlows.common.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.common.js +181 -0
- package/dist/elements/http/HttpFlows.common.js.map +1 -0
- package/dist/elements/http/HttpFlows.element.d.ts +97 -0
- package/dist/elements/http/HttpFlows.element.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.element.js +684 -0
- package/dist/elements/http/HttpFlows.element.js.map +1 -0
- package/dist/elements/http/HttpFlows.styles.d.ts +3 -0
- package/dist/elements/http/HttpFlows.styles.d.ts.map +1 -0
- package/dist/elements/http/HttpFlows.styles.js +28 -0
- package/dist/elements/http/HttpFlows.styles.js.map +1 -0
- package/dist/elements/http/HttpFlowsUi.d.ts +172 -0
- package/dist/elements/http/HttpFlowsUi.d.ts.map +1 -0
- package/dist/elements/http/HttpFlowsUi.js +1256 -0
- package/dist/elements/http/HttpFlowsUi.js.map +1 -0
- package/dist/elements/http/LogBody.js +10 -21
- package/dist/elements/http/LogBody.js.map +1 -1
- package/dist/elements/http/LogHeaders.js +4 -23
- package/dist/elements/http/LogHeaders.js.map +1 -1
- package/dist/elements/http/LogTimings.js +11 -13
- package/dist/elements/http/LogTimings.js.map +1 -1
- package/dist/elements/http/RequestConfigElement.d.ts +0 -1
- package/dist/elements/http/RequestConfigElement.d.ts.map +1 -1
- package/dist/elements/http/RequestConfigElement.js +15 -15
- package/dist/elements/http/RequestConfigElement.js.map +1 -1
- package/dist/elements/http/RequestEditor.d.ts +10 -10
- package/dist/elements/http/RequestEditor.d.ts.map +1 -1
- package/dist/elements/http/RequestEditor.js +116 -111
- package/dist/elements/http/RequestEditor.js.map +1 -1
- package/dist/elements/http/RequestLog.js +9 -14
- package/dist/elements/http/RequestLog.js.map +1 -1
- package/dist/elements/http/UrlInput.d.ts +3 -3
- package/dist/elements/http/UrlInput.d.ts.map +1 -1
- package/dist/elements/http/UrlInput.js +17 -27
- package/dist/elements/http/UrlInput.js.map +1 -1
- package/dist/elements/http/UrlParamsForm.d.ts +0 -1
- package/dist/elements/http/UrlParamsForm.d.ts.map +1 -1
- package/dist/elements/http/UrlParamsForm.js +16 -16
- package/dist/elements/http/UrlParamsForm.js.map +1 -1
- package/dist/elements/layout/LayoutManager.js +16 -24
- package/dist/elements/layout/LayoutManager.js.map +1 -1
- package/dist/elements/layout/LayoutPanelElement.js +17 -23
- package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
- package/dist/elements/layout/SplitItem.js +4 -12
- package/dist/elements/layout/SplitItem.js.map +1 -1
- package/dist/elements/layout/SplitLayout.js +18 -24
- package/dist/elements/layout/SplitLayout.js.map +1 -1
- package/dist/elements/layout/SplitPanel.js +10 -16
- package/dist/elements/layout/SplitPanel.js.map +1 -1
- package/dist/elements/layout/SplitView.js +17 -26
- package/dist/elements/layout/SplitView.js.map +1 -1
- package/dist/elements/layout/SplitView.styles.d.ts.map +1 -1
- package/dist/elements/layout/SplitView.styles.js +1 -0
- package/dist/elements/layout/SplitView.styles.js.map +1 -1
- package/dist/elements/navigation/AppNavigationElement.js +8 -47
- package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
- package/dist/elements/navigation/AppNavigationItem.styles.d.ts.map +1 -1
- package/dist/elements/navigation/AppNavigationItem.styles.js +2 -0
- package/dist/elements/navigation/AppNavigationItem.styles.js.map +1 -1
- package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
- package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
- package/dist/elements/project/HttpProjectRequest.d.ts +2 -1
- package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
- package/dist/elements/project/HttpProjectRequest.js +14 -43
- package/dist/elements/project/HttpProjectRequest.js.map +1 -1
- package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
- package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
- package/dist/elements/project/ProjectNavigation.js +0 -4
- package/dist/elements/project/ProjectNavigation.js.map +1 -1
- package/dist/elements/project/ProjectRunReport.js +4 -15
- package/dist/elements/project/ProjectRunReport.js.map +1 -1
- package/dist/elements/project/ProjectRunner.d.ts +0 -1
- package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
- package/dist/elements/project/ProjectRunner.js +3 -51
- package/dist/elements/project/ProjectRunner.js.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.d.ts +0 -1
- package/dist/elements/schema-design/AssociationFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.js +2 -18
- package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.d.ts +2 -2
- package/dist/elements/schema-design/DataEntityEditorElement.d.ts.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.js +5 -27
- package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
- package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
- package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.d.ts +0 -1
- package/dist/elements/schema-design/DataSchemaDocument.d.ts.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.js +4 -43
- package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.d.ts +0 -1
- package/dist/elements/schema-design/EntityFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.js +4 -25
- package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.d.ts +1 -2
- package/dist/elements/schema-design/PropertyFormElement.d.ts.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.js +8 -23
- package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
- package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
- package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
- package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
- package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
- package/dist/elements/user/UserAvatarElement.js +0 -9
- package/dist/elements/user/UserAvatarElement.js.map +1 -1
- package/dist/events/http-client/models/CertificatesEvents.js +2 -2
- package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
- package/dist/http-client/idb/Base.js +5 -10
- package/dist/http-client/idb/Base.js.map +1 -1
- package/dist/http-client/idb/LegacyMockedStore.js +0 -1
- package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
- package/dist/http-client/idb/MockedStore.js +3 -1
- package/dist/http-client/idb/MockedStore.js.map +1 -1
- package/dist/http-client/store/DataImportProcessor.js +0 -3
- package/dist/http-client/store/DataImportProcessor.js.map +1 -1
- package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
- package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
- package/dist/http-client/store/IdbThread.js +23 -20
- package/dist/http-client/store/IdbThread.js.map +1 -1
- package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
- package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
- package/dist/http-client/store/idb/IdbStore.js +0 -2
- package/dist/http-client/store/idb/IdbStore.js.map +1 -1
- package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
- package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
- package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
- package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
- package/dist/lib/chart/HttpHistoryChart.js +7 -8
- package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
- package/dist/mixins/FileDropMixin.js +0 -1
- package/dist/mixins/FileDropMixin.js.map +1 -1
- package/dist/mixins/RenderableMixin.js +11 -15
- package/dist/mixins/RenderableMixin.js.map +1 -1
- package/dist/pages/ApplicationScreen.d.ts +1 -1
- package/dist/pages/ApplicationScreen.d.ts.map +1 -1
- package/dist/pages/ApplicationScreen.js +35 -56
- package/dist/pages/ApplicationScreen.js.map +1 -1
- package/dist/pages/api-client/ApiClient.screen.js +11 -20
- package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
- package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
- package/dist/pages/api-client/ApiClient.styles.js +22 -3
- package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.d.ts +2 -0
- package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.js +23 -9
- package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.d.ts.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.js +25 -39
- package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.styles.d.ts.map +1 -1
- package/dist/pages/api-client/StoreConfig.styles.js +5 -0
- package/dist/pages/api-client/StoreConfig.styles.js.map +1 -1
- package/dist/pages/api-client/Telemetry.screen.js +1 -2
- package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
- package/dist/pages/api-client/pages/Files.page.d.ts +1 -0
- package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
- package/dist/pages/api-client/pages/Files.page.js +8 -28
- package/dist/pages/api-client/pages/Files.page.js.map +1 -1
- package/dist/pages/api-client/pages/Settings.page.js +2 -4
- package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
- package/dist/pages/api-client/pages/Trash.page.js +2 -13
- package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
- package/dist/pages/demo/DemoPage.js +13 -13
- package/dist/pages/demo/DemoPage.js.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.d.ts +0 -8
- package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.js +39 -50
- package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
- package/dist/pages/http-project/types.d.ts +8 -6
- package/dist/pages/http-project/types.d.ts.map +1 -1
- package/dist/pages/http-project/types.js.map +1 -1
- package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
- package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
- package/dist/store/HttpStore.js +0 -3
- package/dist/store/HttpStore.js.map +1 -1
- package/dist/store/UserCache.js +5 -5
- package/dist/store/UserCache.js.map +1 -1
- package/dist/styles/m3/surface.module.d.ts.map +1 -1
- package/dist/styles/m3/surface.module.js +11 -27
- package/dist/styles/m3/surface.module.js.map +1 -1
- package/dist/ui/UiElement.d.ts +4 -0
- package/dist/ui/UiElement.d.ts.map +1 -1
- package/dist/ui/UiElement.js +10 -5
- package/dist/ui/UiElement.js.map +1 -1
- package/dist/ui/button/SegmentedButton.js +9 -11
- package/dist/ui/button/SegmentedButton.js.map +1 -1
- package/dist/ui/button/SegmentedButton.styles.d.ts.map +1 -1
- package/dist/ui/button/SegmentedButton.styles.js +3 -1
- package/dist/ui/button/SegmentedButton.styles.js.map +1 -1
- package/dist/ui/button/SegmentedButtonsSet.js +6 -7
- package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
- package/dist/ui/button/UiButton.js +17 -39
- package/dist/ui/button/UiButton.js.map +1 -1
- package/dist/ui/button/UiIconButton.js +9 -35
- package/dist/ui/button/UiIconButton.js.map +1 -1
- package/dist/ui/chip/UiChip.js +9 -49
- package/dist/ui/chip/UiChip.js.map +1 -1
- package/dist/ui/collapse/UiCollapse.js +15 -20
- package/dist/ui/collapse/UiCollapse.js.map +1 -1
- package/dist/ui/controllers/ActionController.js +143 -144
- package/dist/ui/controllers/ActionController.js.map +1 -1
- package/dist/ui/controllers/RadioSelectionController.js +0 -1
- package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
- package/dist/ui/date/DateTime.js +3 -3
- package/dist/ui/date/DateTime.js.map +1 -1
- package/dist/ui/dialog/UiDialog.d.ts +3 -0
- package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
- package/dist/ui/dialog/UiDialog.js +17 -38
- package/dist/ui/dialog/UiDialog.js.map +1 -1
- package/dist/ui/effects/ripple.d.ts.map +1 -1
- package/dist/ui/effects/ripple.js +25 -19
- package/dist/ui/effects/ripple.js.map +1 -1
- package/dist/ui/effects/rippleDirective.js +6 -7
- package/dist/ui/effects/rippleDirective.js.map +1 -1
- package/dist/ui/icons/Icons.d.ts +3 -2
- package/dist/ui/icons/Icons.d.ts.map +1 -1
- package/dist/ui/icons/Icons.js +2 -1
- package/dist/ui/icons/Icons.js.map +1 -1
- package/dist/ui/icons/UiIcon.js +4 -3
- package/dist/ui/icons/UiIcon.js.map +1 -1
- package/dist/ui/input/CheckboxElement.js +12 -10
- package/dist/ui/input/CheckboxElement.js.map +1 -1
- package/dist/ui/input/CheckedElement.d.ts +1 -1
- package/dist/ui/input/CheckedElement.d.ts.map +1 -1
- package/dist/ui/input/CheckedElement.js +5 -16
- package/dist/ui/input/CheckedElement.js.map +1 -1
- package/dist/ui/input/Input.js +170 -235
- package/dist/ui/input/Input.js.map +1 -1
- package/dist/ui/input/RadioElement.js +13 -11
- package/dist/ui/input/RadioElement.js.map +1 -1
- package/dist/ui/input/SwitchElement.js +0 -18
- package/dist/ui/input/SwitchElement.js.map +1 -1
- package/dist/ui/input/TextAreaElement.js +0 -15
- package/dist/ui/input/TextAreaElement.js.map +1 -1
- package/dist/ui/list/{DividerElement.d.ts → UiDivider.element.d.ts} +6 -6
- package/dist/ui/list/UiDivider.element.d.ts.map +1 -0
- package/dist/ui/list/UiDivider.element.js +39 -0
- package/dist/ui/list/UiDivider.element.js.map +1 -0
- package/dist/ui/list/UiDivider.styles.d.ts +3 -0
- package/dist/ui/list/UiDivider.styles.d.ts.map +1 -0
- package/dist/ui/list/UiDivider.styles.js +49 -0
- package/dist/ui/list/UiDivider.styles.js.map +1 -0
- package/dist/ui/list/UiDropdownList.js +7 -48
- package/dist/ui/list/UiDropdownList.js.map +1 -1
- package/dist/ui/list/UiList.js +3 -15
- package/dist/ui/list/UiList.js.map +1 -1
- package/dist/ui/list/UiListItem.js +4 -17
- package/dist/ui/list/UiListItem.js.map +1 -1
- package/dist/ui/list/UiListbox.js +0 -1
- package/dist/ui/list/UiListbox.js.map +1 -1
- package/dist/ui/notification/SnackNotifications.js +1 -2
- package/dist/ui/notification/SnackNotifications.js.map +1 -1
- package/dist/ui/notification/Snackbar.js +27 -51
- package/dist/ui/notification/Snackbar.js.map +1 -1
- package/dist/ui/progress/Range.js +24 -23
- package/dist/ui/progress/Range.js.map +1 -1
- package/dist/ui/progress/UiProgress.js +0 -11
- package/dist/ui/progress/UiProgress.js.map +1 -1
- package/dist/ui/table/DataTable.js +7 -12
- package/dist/ui/table/DataTable.js.map +1 -1
- package/dist/ui/tabs/UiTab.js +24 -25
- package/dist/ui/tabs/UiTab.js.map +1 -1
- package/dist/ui/tabs/UiTabs.d.ts +13 -1
- package/dist/ui/tabs/UiTabs.d.ts.map +1 -1
- package/dist/ui/tabs/UiTabs.js +62 -47
- package/dist/ui/tabs/UiTabs.js.map +1 -1
- package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
- package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
- package/dist/visualization/lib/AssociationAnchors.js +16 -28
- package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
- package/dist/visualization/lib/Point.js +0 -2
- package/dist/visualization/lib/Point.js.map +1 -1
- package/dist/visualization/lib/SelectionManager.js +10 -11
- package/dist/visualization/lib/SelectionManager.js.map +1 -1
- package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
- package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
- package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
- package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
- package/dist/visualization/lib/WorkspaceEdges.js +17 -19
- package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
- package/dist/visualization/lib/WorkspaceGestures.js +0 -3
- package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
- package/dist/visualization/lib/WorkspaceSizing.js +4 -6
- package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
- package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
- package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
- package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
- package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
- package/dist/visualization/lib/tips/TipArtist.js +0 -3
- package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
- package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
- package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
- package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
- package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
- package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
- package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
- package/package.json +3 -2
- package/src/define/dialog/delete-cookie-action-dialog.ts +16 -0
- package/src/define/dialog/set-cookie-action-dialog.ts +16 -0
- package/src/define/http/http-assertions.ts +3 -3
- package/src/define/http/http-flows.ts +15 -0
- package/src/define/ui/ui-divider.ts +7 -2
- package/src/elements/ApiElement.ts +7 -0
- package/src/elements/amf/ApiAuthorizationEditor.element.ts +1 -1
- package/src/elements/amf/ApiOperationDocument.element.ts +2 -1
- package/src/elements/amf/ApiRequest.element.ts +1 -1
- package/src/elements/amf/ApiRequestEditor.element.ts +0 -4
- package/src/elements/authorization/ui/Authorization.ts +3 -5
- package/src/elements/dialog/DeleteCookieAction.element.ts +100 -0
- package/src/elements/dialog/DeleteCookieAction.styles.ts +14 -0
- package/src/elements/dialog/Rename.ts +8 -7
- package/src/elements/dialog/SetCookieAction.element.ts +183 -0
- package/src/elements/environment/EnvironmentEditor.styles.ts +5 -0
- package/src/elements/environment/EnvironmentEditor.ts +81 -22
- package/src/elements/environment/ServerEditor.ts +4 -8
- package/src/elements/environment/VariablesEditor.ts +3 -7
- package/src/elements/highlight/Prism.styles.ts +12 -5
- package/src/elements/http/BodyEditor.ts +10 -17
- package/src/elements/http/BodyMultipartEditor.ts +3 -20
- package/src/elements/http/BodyTextEditor.ts +0 -4
- package/src/elements/http/BodyUrlEncodedEditor.ts +5 -8
- package/src/elements/http/HeadersForm.ts +2 -9
- package/src/elements/http/HttpAssertions.element.ts +286 -0
- package/src/elements/http/HttpAssertions.styles.ts +7 -156
- package/src/elements/http/HttpFlows.common.ts +181 -0
- package/src/elements/http/HttpFlows.element.ts +722 -0
- package/src/elements/http/HttpFlows.styles.ts +29 -0
- package/src/elements/http/HttpFlowsUi.ts +1327 -0
- package/src/elements/http/RequestConfigElement.ts +10 -14
- package/src/elements/http/RequestEditor.ts +77 -35
- package/src/elements/http/UrlInput.ts +6 -6
- package/src/elements/http/UrlParamsForm.ts +2 -6
- package/src/elements/layout/SplitView.styles.ts +1 -0
- package/src/elements/navigation/AppNavigationItem.styles.ts +2 -0
- package/src/elements/project/HttpProjectRequest.ts +16 -5
- package/src/elements/project/ProjectRunner.ts +3 -7
- package/src/elements/schema-design/AssociationFormElement.ts +4 -8
- package/src/elements/schema-design/DataEntityEditorElement.ts +8 -8
- package/src/elements/schema-design/DataSchemaDocument.ts +5 -9
- package/src/elements/schema-design/EntityFormElement.ts +6 -10
- package/src/elements/schema-design/PropertyFormElement.ts +11 -15
- package/src/pages/ApplicationScreen.ts +1 -1
- package/src/pages/api-client/ApiClient.styles.ts +22 -3
- package/src/pages/api-client/Authenticate.screen.ts +19 -3
- package/src/pages/api-client/StoreConfig.screen.ts +4 -2
- package/src/pages/api-client/StoreConfig.styles.ts +5 -0
- package/src/pages/api-client/pages/Files.page.ts +2 -1
- package/src/pages/http-project/HttpProject.screen.ts +14 -26
- package/src/pages/http-project/types.ts +8 -6
- package/src/styles/m3/surface.module.ts +11 -27
- package/src/styles/m3/theme.css +36 -0
- package/src/styles/m3/tokens.css +11 -0
- package/src/ui/UiElement.ts +7 -0
- package/src/ui/button/SegmentedButton.styles.ts +3 -1
- package/src/ui/dialog/UiDialog.ts +3 -0
- package/src/ui/effects/ripple.ts +6 -1
- package/src/ui/icons/Icons.ts +3 -2
- package/src/ui/input/CheckedElement.ts +3 -3
- package/src/ui/input/Input.ts +1 -1
- package/src/ui/list/UiDivider.element.ts +41 -0
- package/src/ui/list/UiDivider.styles.ts +49 -0
- package/src/ui/tabs/UiTabs.ts +55 -13
- package/test/amf/authorization/OAuth2Method.test.ts +1 -1
- package/test/elements/http/HttpAssertions.test.ts +5 -6
- package/test/elements/http/HttpFlows.test.ts +485 -0
- package/tsconfig.json +2 -2
- package/dist/elements/http/HttpAssertions.d.ts +0 -114
- package/dist/elements/http/HttpAssertions.d.ts.map +0 -1
- package/dist/elements/http/HttpAssertions.js +0 -1144
- package/dist/elements/http/HttpAssertions.js.map +0 -1
- package/dist/elements/http/internals.d.ts +0 -150
- package/dist/elements/http/internals.d.ts.map +0 -1
- package/dist/elements/http/internals.js +0 -150
- package/dist/elements/http/internals.js.map +0 -1
- package/dist/ui/list/DividerElement.d.ts.map +0 -1
- package/dist/ui/list/DividerElement.js +0 -87
- package/dist/ui/list/DividerElement.js.map +0 -1
- package/src/elements/http/HttpAssertions.ts +0 -1187
- package/src/elements/http/internals.ts +0 -151
- package/src/http-client/docs/Files.md +0 -28
- package/src/ui/list/DividerElement.ts +0 -84
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSizing.js","sourceRoot":"","sources":["../../../src/visualization/lib/WorkspaceSizing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"WorkspaceSizing.js","sourceRoot":"","sources":["../../../src/visualization/lib/WorkspaceSizing.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IAG1B;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9B,CAAC;IAMD,YAAmB,SAA8B;QAA9B,cAAS,GAAT,SAAS,CAAqB;QAbjD,QAAgB,GAAY,KAAK,CAAC;QASlC,yBAAoB,GAAkB,EAAE,CAAC;QAKvC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;YACxB,OAAO;SACR;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClC,IAAI,EAAE,EAAE;YACN,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;SACpC;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,IAAiB;QAC9B,MAAM,GAAG,GAAG,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACzC,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,EAAE;YACrB,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;SACvC;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE;YACvB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;SACzC;IACH,CAAC;IAID;;OAEG;IACH,YAAY,CAAC,IAAiB;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC7C,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;SAChC;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;IAED,QAAQ;QACN,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;YACxE,OAAO;SACR;QACD,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,OAvFC,cAAc,EAuFd,YAAY,EAAC;QACZ,MAAM,MAAM,GAAyB,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,GAAG,CAAC;QACpH,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC7D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,aAA+B;QACrD,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;YACpC,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;gBACjC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC9C;iBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;gBACzC,IAAI,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,CAAC;aACzC;SACF;IACH,CAAC;IAED;;;OAGG;IACH,CAAC,iBAAiB,CAAC,CAAC,KAAe;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;gBACvC,OAAO;aACR;YACD,MAAM,KAAK,GAAG,IAAmB,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACvD,OAAO;aACR;YACD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO;aACR;YACD,IAAI,OAAO,CAAC,eAAe,EAAE;gBAC3B,OAAO;aACR;YACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,CAAC,uBAAuB,CAAC,CAAC,QAAwB;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAc,CAAC;QACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC3D,OAAO;SACR;QACD,MAAM,MAAM,GAAG,QAAQ,KAAK,eAAe,CAAC;QAC5C,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC;QACtC,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAqB,CAAC;QAC3C,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC7C,KAAK,GAAG,KAAK,CAAC,aAA4B,CAAC;SAC5C;aAAM,IAAI,MAAM,EAAE;YACjB,OAAO;SACR;QACD,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACxC,OAAO;SACR;QACD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC;CACF","sourcesContent":["import VizWorkspaceElement from '../elements/VizWorkspaceElement.js';\nimport { getObjectBoundingClientRect } from './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 processAttributeChanged = Symbol('processAttributeChanged');\nexport const connectedValue = Symbol('connectedValue');\nexport const queueDebouncer = Symbol('queueDebouncer');\n\n/**\n * A class that controls the `autoResize` property of the workspace.\n * When this property is set it keeps track of elements moving in the workspace and when they\n * are positioned outside the bounds of the current workspace it resizes it.\n * \n * Note, currently it only works when placing items to the right or below workspace.\n */\nexport class WorkspaceSizing {\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 processElementsQueue: HTMLElement[] = [];\n\n [mutationObserver]?: MutationObserver;\n\n constructor(public workspace: VizWorkspaceElement) {\n this[mutationHandler] = this[mutationHandler].bind(this);\n }\n\n /**\n * Starts listening on user events\n */\n connect(): void {\n if (this[connectedValue]) {\n return;\n }\n this[mutationObserver] = this[observeItems]();\n this[connectedValue] = true;\n }\n\n /**\n * Cleans up the listeners\n */\n disconnect(): void {\n const mo = this[mutationObserver];\n if (mo) {\n mo.disconnect();\n this[mutationObserver] = undefined;\n }\n this[connectedValue] = false;\n }\n\n /**\n * Processes a single element to check whether the workspace has to be resized\n * to account for the element's position.\n */\n processElement(node: HTMLElement): void {\n const box = getObjectBoundingClientRect(node, this.workspace);\n const { width, height } = this.workspace;\n if (box.right > width) {\n this.workspace.width = box.right + 40;\n }\n if (box.bottom > height) {\n this.workspace.height = box.bottom + 40;\n }\n }\n\n [queueDebouncer]?: any;\n\n /**\n * Adds an element to the processing queue. The queue runs after a next frame so the workspace is computed.\n */\n queueElement(node: HTMLElement): void {\n if (!Array.isArray(this.processElementsQueue)) {\n this.processElementsQueue = [];\n }\n this.processElementsQueue.push(node);\n if (this[queueDebouncer]) {\n clearTimeout(this[queueDebouncer]);\n }\n this[queueDebouncer] = setTimeout(() => {\n this[queueDebouncer] = undefined;\n this.runQueue();\n }, 0);\n }\n \n runQueue(): void {\n const { processElementsQueue } = this;\n if (!Array.isArray(processElementsQueue) || !processElementsQueue.length) {\n return;\n }\n processElementsQueue.forEach(node => this.processElement(node));\n this.processElementsQueue = [];\n }\n\n /**\n * Observe items change in the element's light DOM\n * @return The observer handler\n */\n [observeItems](): MutationObserver {\n const config: MutationObserverInit = { attributes: true, childList: true, subtree: true, attributeOldValue: true, };\n const observer = new MutationObserver(this[mutationHandler]);\n observer.observe(this.workspace, config);\n return observer;\n }\n\n /**\n * Processes mutations in the workspace and manages selection state.\n * @param mutationsList List of mutations.\n */\n async [mutationHandler](mutationsList: MutationRecord[]): Promise<void> {\n await this.workspace.updateComplete;\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n this[processAddedNodes](mutation.addedNodes);\n } else if (mutation.type === 'attributes') {\n this[processAttributeChanged](mutation);\n }\n }\n }\n\n /**\n * Processes added to the canvas elements.\n * @param nodes The list of added nodes\n */\n [processAddedNodes](nodes: NodeList): void {\n nodes.forEach((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) {\n return;\n }\n const typed = node as HTMLElement;\n const name = typed.localName;\n if (['viz-workspace', 'viz-association'].includes(name)) {\n return;\n }\n const { dataset } = typed;\n if (!dataset) {\n return;\n }\n if (dataset.associationSlot) {\n return;\n }\n this.queueElement(typed);\n this[processAddedNodes](typed.querySelectorAll('*'));\n });\n }\n\n /**\n * Processes changed attribute on any element in the canvas\n * @param mutation The record associated with the change\n */\n [processAttributeChanged](mutation: MutationRecord): void {\n const att = mutation.attributeName!;\n const nodeName = mutation.target.nodeName.toLowerCase();\n if (['viz-workspace', 'viz-association'].includes(nodeName)) {\n return;\n }\n const isView = nodeName === 'modeling-view';\n const { processElementsQueue } = this;\n let typed = mutation.target as HTMLElement;\n if (isView && ['name', 'value'].includes(att)) {\n typed = typed.parentElement as HTMLElement;\n } else if (isView) {\n return;\n }\n if (processElementsQueue.includes(typed)) {\n return;\n }\n if (isView) {\n this.queueElement(typed);\n }\n }\n}\n"]}
|
|
@@ -26,41 +26,15 @@ export const ElbowThreshold = 24;
|
|
|
26
26
|
* A class that draws a rectilinear line
|
|
27
27
|
*/
|
|
28
28
|
export class RectilinearLine {
|
|
29
|
-
ep;
|
|
30
|
-
sp;
|
|
31
|
-
source;
|
|
32
|
-
target;
|
|
33
|
-
others;
|
|
34
|
-
/**
|
|
35
|
-
* The default padding to use when computing distance between the line and an object.
|
|
36
|
-
*/
|
|
37
|
-
overlapPadding = 20;
|
|
38
|
-
/**
|
|
39
|
-
* The list of all points (start + end + control points)
|
|
40
|
-
*/
|
|
41
|
-
coordinates;
|
|
42
|
-
/**
|
|
43
|
-
* The list of all control points.
|
|
44
|
-
*/
|
|
45
|
-
controlPoints = [];
|
|
46
|
-
transformOrigin;
|
|
47
|
-
/**
|
|
48
|
-
* The delta between Y coordinates
|
|
49
|
-
*/
|
|
50
|
-
dx;
|
|
51
|
-
/**
|
|
52
|
-
* The delta between Y coordinates
|
|
53
|
-
*/
|
|
54
|
-
dy;
|
|
55
|
-
/**
|
|
56
|
-
* Half distance between start.x and end.x
|
|
57
|
-
*/
|
|
58
|
-
halfX;
|
|
59
|
-
/**
|
|
60
|
-
* Half distance between start.y and end.y
|
|
61
|
-
*/
|
|
62
|
-
halfY;
|
|
63
29
|
constructor(config) {
|
|
30
|
+
/**
|
|
31
|
+
* The default padding to use when computing distance between the line and an object.
|
|
32
|
+
*/
|
|
33
|
+
this.overlapPadding = 20;
|
|
34
|
+
/**
|
|
35
|
+
* The list of all control points.
|
|
36
|
+
*/
|
|
37
|
+
this.controlPoints = [];
|
|
64
38
|
const { endPoint, target, startPoint, source, others } = config;
|
|
65
39
|
this.ep = endPoint;
|
|
66
40
|
this.sp = startPoint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RectilinearLine.js","sourceRoot":"","sources":["../../../../src/visualization/lib/lines/RectilinearLine.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B,EAAE,CAAQ;IAEV,EAAE,CAAQ;IAEV,MAAM,CAAU;IAEhB,MAAM,CAAU;IAEhB,MAAM,CAAoB;IAE1B;;OAEG;IACH,cAAc,GAAW,EAAE,CAAC;IAE5B;;OAEG;IACH,WAAW,CAAU;IAErB;;OAEG;IACH,aAAa,GAAY,EAAE,CAAC;IAE5B,eAAe,CAAS;IAExB;;OAEG;IACH,EAAE,CAAS;IAEX;;OAEG;IACH,EAAE,CAAS;IAEX;;OAEG;IACH,KAAK,CAAS;IAEd;;OAEG;IACH,KAAK,CAAS;IAEd,YAAY,MAA0B;QACpC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAChE,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,GAAG,UAAU,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;QAClC,2BAA2B;QAC3B,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;SACtB;aAAM,IAAI,KAAK,KAAK,OAAO,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;SACvB;aAAM,IAAI,KAAK,KAAK,MAAM,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;SACvB;QAED,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC7D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,MAAM,GAAuC;YACjD,aAAa;YACb,eAAe;YACf,IAAI,EAAE,aAAa;YACnB,WAAW;YACX,MAAM,EAAE,CAAC;YACT,IAAI;YACJ,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAY,CAAC,EAAE,IAAY,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACH,CAAC,SAAS,CAAC,CAAC,GAAiB;QAC3B,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;SACxB;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;SACxB;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACxD,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,oCAAoC;gBACpC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM,IAAI,EAAE,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACxB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED,CAAC,cAAc,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,OAAO,EAAE;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACrF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,4EAA4E;YAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE;gBACjC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aAChC;SACF;IACH,CAAC;IAED,CAAC,cAAc,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1C,IAAI,OAAO,EAAE;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,OAAO,EAAE;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACxB;IACH,CAAC;IAGD;;;;OAIG;IACH,CAAC,UAAU,CAAC,CAAC,GAAiB;QAC5B,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;SAC1B;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;SAC1B;IACH,CAAC;IAED,CAAC,gBAAgB,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACnE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC;QACjF,IAAI,WAAW,EAAE;YACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC;YACR,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE;gBAC9B,6BAA6B;gBAC7B,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACvD;iBAAM;gBACL,4BAA4B;gBAC5B,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACxD;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,qFAAqF;YACrF,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM,IAAI,EAAE,GAAG,CAAC,EAAE;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACxB;IACH,CAAC;IAED,CAAC,gBAAgB,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACtE,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACpD,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;gBACvB,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE;oBACvC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC;iBAC7B;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;aAAM,IAAI,EAAE,GAAG,CAAC,EAAE;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED;;;;OAIG;IACH,CAAC,SAAS,CAAC,CAAC,GAAiB;QAC3B,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;SACxB;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;SACxB;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;IACH,CAAC;IAED,CAAC,cAAc,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAEnE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,EAAE;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,4EAA4E;YAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;IACH,CAAC;IAED,CAAC,cAAc,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAC5D,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,sBAAsB;YACtB,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE;gBAC/E,0CAA0C;gBAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,WAAW,EAAE;oBACf,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;iBACxC;qBAAM;oBACL,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC;iBACrC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM;YACL,qBAAqB;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE;gBAC/E,0CAA0C;gBAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,WAAW,EAAE;oBACf,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC;iBACrC;qBAAM;oBACL,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;iBACxC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxD,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEjC,IAAI,YAAY,IAAI,YAAY,EAAE;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC;YAC9E,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM,IAAI,YAAY,EAAE;YACvB,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;YACxD,IAAI,WAAW,EAAE;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM,IAAI,YAAY,EAAE;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACxB;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAChE,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;gBAC3D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,EAAE;gBACxD,wBAAwB;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;aAAM,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAC,cAAc,CAAC,GAAG,MAAM,CAAC,GAAG,EAAG;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;YACjF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED;;;;OAIG;IACH,CAAC,UAAU,CAAC,CAAC,GAAiB;QAC5B,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAA;SACzB;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;SAC1B;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAChE,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAC,cAAc,GAAG,EAAE,CAAC,CAAC,EAAE;oBAC3C,sBAAsB;oBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;oBAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;qBAAM;oBACL,sBAAsB;oBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;oBAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;aACF;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;gBAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM,IAAI,EAAE,GAAG,CAAC,EAAE;YACjB,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE;gBAChC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACxB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;gBAC1E,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAC,cAAc,GAAG,MAAM,CAAC,IAAI,EAAE;oBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;oBAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;qBAAM;oBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC5E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;aACF;SACF;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;QACpD,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACxB;iBAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,EAAE;gBACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM;YACL,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE;gBACjF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC;gBACxF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAC1C;iBAAM;gBACL,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;gBACxD,IAAI,WAAW,EAAE;oBACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC1C;aACF;YACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzC;IAEH,CAAC;IAED,CAAC,gBAAgB,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvE,wCAAwC;QACxC,0FAA0F;QAC1F,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAC,cAAc,GAAG,EAAE,CAAC,CAAC,EAAE;YAC5C,qFAAqF;YACrF,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,wBAAwB;gBACpE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC;YACR,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;gBACf,cAAc;gBACd,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG;iBAAM;gBACL,eAAe;gBACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED,CAAC,gBAAgB,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAC5D,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAC,cAAc,GAAG,EAAE,CAAC,CAAC,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC;YACR,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;gBACf,cAAc;gBACd,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG;iBAAM;gBACL,eAAe;gBACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;CACF","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":"AAAA,iCAAiC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC;;GAEG;AACH,MAAM,OAAO,eAAe;IAgD1B,YAAY,MAA0B;QArCtC;;WAEG;QACH,mBAAc,GAAW,EAAE,CAAC;QAO5B;;WAEG;QACH,kBAAa,GAAY,EAAE,CAAC;QAyB1B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAChE,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,GAAG,UAAU,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;QAClC,2BAA2B;QAC3B,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;SACtB;aAAM,IAAI,KAAK,KAAK,OAAO,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;SACvB;aAAM,IAAI,KAAK,KAAK,MAAM,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;SACvB;QAED,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC7D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,MAAM,GAAuC;YACjD,aAAa;YACb,eAAe;YACf,IAAI,EAAE,aAAa;YACnB,WAAW;YACX,MAAM,EAAE,CAAC;YACT,IAAI;YACJ,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAY,CAAC,EAAE,IAAY,CAAC;QAChC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACH,CAAC,SAAS,CAAC,CAAC,GAAiB;QAC3B,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;SACxB;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;SACxB;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACxD,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,oCAAoC;gBACpC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM,IAAI,EAAE,GAAG,CAAC,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACxB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED,CAAC,cAAc,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,OAAO,EAAE;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACrF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,4EAA4E;YAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE;gBACjC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aAChC;SACF;IACH,CAAC;IAED,CAAC,cAAc,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1C,IAAI,OAAO,EAAE;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3C,IAAI,OAAO,EAAE;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACxB;IACH,CAAC;IAGD;;;;OAIG;IACH,CAAC,UAAU,CAAC,CAAC,GAAiB;QAC5B,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;SAC1B;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;SAC1B;IACH,CAAC;IAED,CAAC,gBAAgB,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACnE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC;QACjF,IAAI,WAAW,EAAE;YACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC;YACR,IAAI,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE;gBAC9B,6BAA6B;gBAC7B,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACvD;iBAAM;gBACL,4BAA4B;gBAC5B,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACxD;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,qFAAqF;YACrF,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM,IAAI,EAAE,GAAG,CAAC,EAAE;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACxB;IACH,CAAC;IAED,CAAC,gBAAgB,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE;YACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACtE,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACpD,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;gBACvB,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE;oBACvC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC;iBAC7B;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;aAAM,IAAI,EAAE,GAAG,CAAC,EAAE;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED;;;;OAIG;IACH,CAAC,SAAS,CAAC,CAAC,GAAiB;QAC3B,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;SACxB;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;SACxB;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;IACH,CAAC;IAED,CAAC,cAAc,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAEnE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,EAAE;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,4EAA4E;YAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;IACH,CAAC;IAED,CAAC,cAAc,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAC5D,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,sBAAsB;YACtB,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE;gBAC/E,0CAA0C;gBAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,WAAW,EAAE;oBACf,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;iBACxC;qBAAM;oBACL,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC;iBACrC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM;YACL,qBAAqB;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE;gBAC/E,0CAA0C;gBAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,WAAW,EAAE;oBACf,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC;iBACrC;qBAAM;oBACL,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC;iBACxC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;QACxD,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEjC,IAAI,YAAY,IAAI,YAAY,EAAE;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC;YAC9E,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM,IAAI,YAAY,EAAE;YACvB,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;YACxD,IAAI,WAAW,EAAE;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM,IAAI,YAAY,EAAE;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACxB;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAChE,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;gBAC3D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,EAAE;gBACxD,wBAAwB;gBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACxB;SACF;aAAM,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAC,cAAc,CAAC,GAAG,MAAM,CAAC,GAAG,EAAG;YAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;YACjF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED;;;;OAIG;IACH,CAAC,UAAU,CAAC,CAAC,GAAiB;QAC5B,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAA;SACzB;aAAM,IAAI,GAAG,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;SAC1B;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAChE,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAC,cAAc,GAAG,EAAE,CAAC,CAAC,EAAE;oBAC3C,sBAAsB;oBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;oBAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;qBAAM;oBACL,sBAAsB;oBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;oBAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;aACF;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;gBAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM,IAAI,EAAE,GAAG,CAAC,EAAE;YACjB,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE;gBAChC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACxB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;gBAC1E,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAC,cAAc,GAAG,MAAM,CAAC,IAAI,EAAE;oBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC;oBAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;qBAAM;oBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC5E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;aACF;SACF;IACH,CAAC;IAED,CAAC,eAAe,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;QACpD,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACxB;iBAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,EAAE;gBACxD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;gBAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;iBAAM;gBACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM;YACL,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,cAAc,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,cAAc,EAAE;gBACjF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7D,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,cAAc,CAAC;gBACxF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAC1C;iBAAM;gBACL,MAAM,WAAW,GAAG,EAAE,CAAC,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;gBACxD,IAAI,WAAW,EAAE;oBACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;iBACzB;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC1C;aACF;YACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;SACzC;IAEH,CAAC;IAED,CAAC,gBAAgB,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvE,wCAAwC;QACxC,0FAA0F;QAC1F,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAC,cAAc,GAAG,EAAE,CAAC,CAAC,EAAE;YAC5C,qFAAqF;YACrF,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,wBAAwB;gBACpE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB;SACF;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC;YACR,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;gBACf,cAAc;gBACd,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG;iBAAM;gBACL,eAAe;gBACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;IAED,CAAC,gBAAgB,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAC5D,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAC,cAAc,GAAG,EAAE,CAAC,CAAC,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;aAAM;YACL,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC;YACR,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;gBACf,cAAc;gBACd,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,cAAc,EAAE,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG;iBAAM;gBACL,eAAe;gBACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,EAAE,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SACzB;IACH,CAAC;CACF","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
|
}
|