angular-toolbox 1.4.6 → 1.5.1
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/README.md +1 -1
- package/fesm2022/angular-toolbox.mjs +159 -166
- package/fesm2022/angular-toolbox.mjs.map +1 -1
- package/package.json +1 -3
- package/esm2022/angular-toolbox.mjs +0 -5
- package/esm2022/lib/angular-toolbox.module.mjs +0 -25
- package/esm2022/lib/collection/array-list-event-type.enum.mjs +0 -30
- package/esm2022/lib/collection/array-list.event.mjs +0 -23
- package/esm2022/lib/collection/array-list.mjs +0 -158
- package/esm2022/lib/collection/index.mjs +0 -11
- package/esm2022/lib/component/angular-toolbox-logo/angular-toolbox-logo.component.mjs +0 -18
- package/esm2022/lib/component/dropdown/dropdown.component.mjs +0 -139
- package/esm2022/lib/component/index.mjs +0 -11
- package/esm2022/lib/component/layout/border-layout/border-layout.component.mjs +0 -149
- package/esm2022/lib/component/layout/border-layout/util/border-layout-bounds-manager.mjs +0 -211
- package/esm2022/lib/component/layout/border-layout/util/border-layout-renderer.mjs +0 -267
- package/esm2022/lib/component/layout/border-layout/util/resize-method.mjs +0 -9
- package/esm2022/lib/component/layout/border-layout-container/border-layout-container.component.mjs +0 -145
- package/esm2022/lib/component/layout/index.mjs +0 -3
- package/esm2022/lib/core/abstract/abstract-subscription-manager.mjs +0 -113
- package/esm2022/lib/core/abstract/abstract-version-manager.mjs +0 -37
- package/esm2022/lib/core/abstract/index.mjs +0 -3
- package/esm2022/lib/core/bridge/app-bridge.mjs +0 -76
- package/esm2022/lib/core/error/app-bridge-error.mjs +0 -24
- package/esm2022/lib/core/error/http-mock-service-error.mjs +0 -26
- package/esm2022/lib/core/error/index.mjs +0 -5
- package/esm2022/lib/core/error/integrity-error.mjs +0 -26
- package/esm2022/lib/core/error/subscription-error.mjs +0 -26
- package/esm2022/lib/core/impl/index.mjs +0 -2
- package/esm2022/lib/core/impl/lang/identifiable-component.mjs +0 -47
- package/esm2022/lib/core/impl/lang/index.mjs +0 -2
- package/esm2022/lib/core/impl/version/version.impl.mjs +0 -36
- package/esm2022/lib/core/index.mjs +0 -4
- package/esm2022/lib/directive/anchor-link.directive.mjs +0 -62
- package/esm2022/lib/directive/button-role.directive.mjs +0 -102
- package/esm2022/lib/directive/content-renderer.directive.mjs +0 -61
- package/esm2022/lib/directive/index.mjs +0 -5
- package/esm2022/lib/directive/navigate-to-url.directive.mjs +0 -51
- package/esm2022/lib/directive/navigation-directive-base.mjs +0 -23
- package/esm2022/lib/framework/dialog/dialog-backdrop-type.enum.mjs +0 -23
- package/esm2022/lib/framework/dialog/dialog-backdrop.type.mjs +0 -9
- package/esm2022/lib/framework/dialog/dialog-default-config.mjs +0 -15
- package/esm2022/lib/framework/dialog/dialog-outlet-event-type.mjs +0 -9
- package/esm2022/lib/framework/dialog/dialog-outlet.event.mjs +0 -33
- package/esm2022/lib/framework/dialog/dialog-service.error.mjs +0 -27
- package/esm2022/lib/framework/dialog/dialog-service.mjs +0 -67
- package/esm2022/lib/framework/dialog/dialog.config.mjs +0 -9
- package/esm2022/lib/framework/dialog/dialog.outlet.mjs +0 -94
- package/esm2022/lib/framework/dialog/index.mjs +0 -16
- package/esm2022/lib/framework/index.mjs +0 -6
- package/esm2022/lib/framework/logging/connector/console-log-connector.mjs +0 -48
- package/esm2022/lib/framework/logging/connector/default-log-connector.mjs +0 -34
- package/esm2022/lib/framework/logging/connector/html-log-connector.mjs +0 -177
- package/esm2022/lib/framework/logging/connector/index.mjs +0 -4
- package/esm2022/lib/framework/logging/impl/abstract-logger.mjs +0 -100
- package/esm2022/lib/framework/logging/impl/index.mjs +0 -3
- package/esm2022/lib/framework/logging/impl/log-impl.mjs +0 -31
- package/esm2022/lib/framework/logging/index.mjs +0 -4
- package/esm2022/lib/framework/logging/util/index.mjs +0 -4
- package/esm2022/lib/framework/logging/util/log.builder.mjs +0 -28
- package/esm2022/lib/framework/logging/util/log.constant.mjs +0 -24
- package/esm2022/lib/framework/logging/util/log.util.mjs +0 -142
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-description/atx-mock-description.component.mjs +0 -27
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-documentation/atx-mock-documentation.component.mjs +0 -77
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-full-description/atx-mock-full-description.component.mjs +0 -27
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-methods/atx-mock-methods.component.mjs +0 -71
- package/esm2022/lib/framework/mock/documentation/component/atx-mock-param/atx-mock-param.component.mjs +0 -27
- package/esm2022/lib/framework/mock/documentation/index.mjs +0 -2
- package/esm2022/lib/framework/mock/documentation/model/business/full-description.type.mjs +0 -9
- package/esm2022/lib/framework/mock/documentation/model/business/method-doc-descriptor.type.mjs +0 -9
- package/esm2022/lib/framework/mock/http/config/http-mock-parameters.mjs +0 -9
- package/esm2022/lib/framework/mock/http/config/http-mock.decorator.mjs +0 -48
- package/esm2022/lib/framework/mock/http/config/index.mjs +0 -3
- package/esm2022/lib/framework/mock/http/config/route-mock-config.mjs +0 -9
- package/esm2022/lib/framework/mock/http/core/data-storage.mjs +0 -9
- package/esm2022/lib/framework/mock/http/core/response-delay.mjs +0 -9
- package/esm2022/lib/framework/mock/http/event/event-target.impl.mjs +0 -136
- package/esm2022/lib/framework/mock/http/event/progress-event-mock.mjs +0 -48
- package/esm2022/lib/framework/mock/http/index.mjs +0 -4
- package/esm2022/lib/framework/mock/http/logging/http-mock-logger.mjs +0 -15
- package/esm2022/lib/framework/mock/http/logging/http-mock-logging-metadata.builder.mjs +0 -35
- package/esm2022/lib/framework/mock/http/path-to-regexp/constants.mjs +0 -111
- package/esm2022/lib/framework/mock/http/path-to-regexp/escape-to-regexp-string.mjs +0 -34
- package/esm2022/lib/framework/mock/http/path-to-regexp/get-flags.mjs +0 -28
- package/esm2022/lib/framework/mock/http/path-to-regexp/iter.mjs +0 -76
- package/esm2022/lib/framework/mock/http/path-to-regexp/lexer.mjs +0 -96
- package/esm2022/lib/framework/mock/http/path-to-regexp/loose-replacer.mjs +0 -28
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/decode-key-to-string.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/encode.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/key.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/lex-token.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/lexer-type.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/loose-replacer-provider.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/non-delimiter-encoder-provider.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/parse-options.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/path-to-regexp-options.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/route-string-tokenizer.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/simple-tokens.mjs +0 -30
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/token-data-regexp-factory.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/token-type.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/token.mjs +0 -17
- package/esm2022/lib/framework/mock/http/path-to-regexp/string-to-token-data.mjs +0 -87
- package/esm2022/lib/framework/mock/http/path-to-regexp/to-key-regexp.mjs +0 -41
- package/esm2022/lib/framework/mock/http/path-to-regexp/to-stringify.mjs +0 -29
- package/esm2022/lib/framework/mock/http/path-to-regexp/token-data-to-regexp.mjs +0 -49
- package/esm2022/lib/framework/mock/http/path-to-regexp/token-data.mjs +0 -33
- package/esm2022/lib/framework/mock/http/util/data-storage.builder.mjs +0 -37
- package/esm2022/lib/framework/mock/http/util/fetch-client-response-type.enum.mjs +0 -40
- package/esm2022/lib/framework/mock/http/util/fetch-client.builder.mjs +0 -52
- package/esm2022/lib/framework/mock/http/util/http-headers-mock.builder.mjs +0 -138
- package/esm2022/lib/framework/mock/http/util/http-headers.util.mjs +0 -71
- package/esm2022/lib/framework/mock/http/util/http-method-ref.enum.mjs +0 -60
- package/esm2022/lib/framework/mock/http/util/http-mock-max-delay.mjs +0 -12
- package/esm2022/lib/framework/mock/http/util/http-mock-response-delay.util.mjs +0 -33
- package/esm2022/lib/framework/mock/http/util/http-mock-response.builder.mjs +0 -141
- package/esm2022/lib/framework/mock/http/util/http-status-text-finder.mjs +0 -146
- package/esm2022/lib/framework/mock/http/util/http-status-text.enum.mjs +0 -260
- package/esm2022/lib/framework/mock/http/util/index.mjs +0 -8
- package/esm2022/lib/framework/mock/http/xhr/delegate-xhr.mjs +0 -372
- package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.impl.mjs +0 -30
- package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.mjs +0 -20
- package/esm2022/lib/framework/mock/http/xhr/index.mjs +0 -2
- package/esm2022/lib/framework/mock/http/xhr/xhr-base.mjs +0 -123
- package/esm2022/lib/framework/mock/http/xhr/xhr-proxy-impl.mjs +0 -178
- package/esm2022/lib/framework/mock/http-monitoring-console/component/abstract/log-renderer-base.mjs +0 -34
- package/esm2022/lib/framework/mock/http-monitoring-console/component/console-footer/console-footer.component.mjs +0 -29
- package/esm2022/lib/framework/mock/http-monitoring-console/component/console-menu/console-menu.component.mjs +0 -40
- package/esm2022/lib/framework/mock/http-monitoring-console/component/http-monitoring-console/http-monitoring-console.component.mjs +0 -62
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/icon-renderer/icon-renderer.component.mjs +0 -62
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer/json-viewer.component.mjs +0 -45
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer-panel/json-viewer-panel.component.mjs +0 -35
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/payload-renderer/payload-renderer.component.mjs +0 -70
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/request-info-renderer/request-info-renderer.component.mjs +0 -43
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/request-list-renderer/request-list-renderer.component.mjs +0 -116
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-body-renderer/response-body-renderer.component.mjs +0 -89
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-preview-renderer/response-preview-renderer.component.mjs +0 -115
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/spinner/spinner.component.mjs +0 -22
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/timing-renderer/timing-renderer.component.mjs +0 -81
- package/esm2022/lib/framework/mock/http-monitoring-console/component/request-details/request-details.component.mjs +0 -91
- package/esm2022/lib/framework/mock/http-monitoring-console/connector/http-monitoring-console-log-connector.mjs +0 -59
- package/esm2022/lib/framework/mock/http-monitoring-console/index.mjs +0 -2
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action-type.mjs +0 -40
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-json.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-is-imported-log.mjs +0 -14
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-timeline-data.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-body-dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-header-dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log-metadata.dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log.dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request-metadata.dto.ts.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request.dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-response.dto.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/hmfl.mjs +0 -9
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-log-io.service.mjs +0 -105
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.controller.mjs +0 -96
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.state.mjs +0 -126
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-user-action.service.mjs +0 -40
- package/esm2022/lib/framework/mock/http-monitoring-console/util/console-body-type.mjs +0 -50
- package/esm2022/lib/framework/mock/http-monitoring-console/util/console-type-class.mjs +0 -45
- package/esm2022/lib/framework/mock/http-monitoring-console/util/data.util.mjs +0 -95
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/body-converter.mjs +0 -40
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/body-serializer.mjs +0 -58
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/form-data-serializer.mjs +0 -33
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/hmfl-builder.mjs +0 -27
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/http-request-converter.mjs +0 -62
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/http-response-converter.mjs +0 -50
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-converter.mjs +0 -43
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-headers-converter.mjs +0 -53
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-message.util.mjs +0 -30
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-metadata-converter.mjs +0 -45
- package/esm2022/lib/framework/mock/http-monitoring-console/util/io/request-metadata-converter.mjs +0 -47
- package/esm2022/lib/framework/mock/http-monitoring-console/util/size.util.mjs +0 -57
- package/esm2022/lib/framework/mock/http-monitoring-console/util/timeline.util.mjs +0 -28
- package/esm2022/lib/framework/mock/http-monitoring-console/util/url.util.mjs +0 -51
- package/esm2022/lib/model/business/index.mjs +0 -8
- package/esm2022/lib/model/business/lang/app-bridge-command.mjs +0 -9
- package/esm2022/lib/model/business/lang/destroyable.mjs +0 -9
- package/esm2022/lib/model/business/lang/identifiable.mjs +0 -9
- package/esm2022/lib/model/business/lang/index.mjs +0 -5
- package/esm2022/lib/model/business/lang/instantiable.mjs +0 -9
- package/esm2022/lib/model/business/logging/atx-logger-config.provider.mjs +0 -21
- package/esm2022/lib/model/business/logging/http-mock-logging-constant.enum.mjs +0 -34
- package/esm2022/lib/model/business/logging/index.mjs +0 -8
- package/esm2022/lib/model/business/logging/log-connector.mjs +0 -9
- package/esm2022/lib/model/business/logging/log-level.enum.mjs +0 -34
- package/esm2022/lib/model/business/logging/log.mjs +0 -9
- package/esm2022/lib/model/business/logging/logger-config.mjs +0 -9
- package/esm2022/lib/model/business/logging/logger.mjs +0 -2
- package/esm2022/lib/model/business/logging/transactional-logger.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/config/http-mock-production-policy.enum.mjs +0 -27
- package/esm2022/lib/model/business/mock/http/config/http-mocking-framework-config.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/config/http-mocking-framework-config.provider.mjs +0 -33
- package/esm2022/lib/model/business/mock/http/config/index.mjs +0 -4
- package/esm2022/lib/model/business/mock/http/fetch-client.mjs +0 -14
- package/esm2022/lib/model/business/mock/http/http-method-mock.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-config.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-endpoint-descriptor.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-endpoint.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-error.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-interceptor.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-method-descriptor.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-parameter-descriptor.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-mock-request-metadata.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/http-response-mock.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/index.mjs +0 -15
- package/esm2022/lib/model/business/mock/http/logging/http-mock-logging-metadata.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/logging/http-mock-logging-prefetch-metadata.mjs +0 -9
- package/esm2022/lib/model/business/mock/http/logging/index.mjs +0 -3
- package/esm2022/lib/model/business/mock/http/xhr-proxy.mjs +0 -9
- package/esm2022/lib/model/business/navigator/battery-manager.mjs +0 -9
- package/esm2022/lib/model/business/navigator/connection-type.mjs +0 -9
- package/esm2022/lib/model/business/navigator/effective-connection-type.mjs +0 -9
- package/esm2022/lib/model/business/navigator/index.mjs +0 -5
- package/esm2022/lib/model/business/navigator/network-information.mjs +0 -9
- package/esm2022/lib/model/business/subscription/index.mjs +0 -2
- package/esm2022/lib/model/business/subscription/subscription-manager.mjs +0 -9
- package/esm2022/lib/model/business/ui/dark-mode-config.mjs +0 -9
- package/esm2022/lib/model/business/ui/dark-mode-config.provider.mjs +0 -43
- package/esm2022/lib/model/business/ui/dark-mode.constant.mjs +0 -16
- package/esm2022/lib/model/business/ui/dropdown/dropdown-event-type.enum.mjs +0 -22
- package/esm2022/lib/model/business/ui/dropdown/dropdown-position.mjs +0 -9
- package/esm2022/lib/model/business/ui/dropdown/dropdown-state.mjs +0 -9
- package/esm2022/lib/model/business/ui/dropdown/dropdown.event.mjs +0 -27
- package/esm2022/lib/model/business/ui/dropdown/index.mjs +0 -6
- package/esm2022/lib/model/business/ui/dropdown/popover-state.mjs +0 -9
- package/esm2022/lib/model/business/ui/index.mjs +0 -8
- package/esm2022/lib/model/business/ui/layout/index.mjs +0 -6
- package/esm2022/lib/model/business/ui/layout/layout-constraints.mjs +0 -9
- package/esm2022/lib/model/business/ui/layout/layout-drag-event-type.enum.mjs +0 -26
- package/esm2022/lib/model/business/ui/layout/layout-drag.event.mjs +0 -23
- package/esm2022/lib/model/business/ui/layout/layout-region.error.mjs +0 -22
- package/esm2022/lib/model/business/ui/layout/layout-region.mjs +0 -35
- package/esm2022/lib/model/business/ui/scroll-behavior.type.mjs +0 -9
- package/esm2022/lib/model/business/ui/window/index.mjs +0 -5
- package/esm2022/lib/model/business/ui/window/window-feature-state.mjs +0 -22
- package/esm2022/lib/model/business/ui/window/window-init.mjs +0 -9
- package/esm2022/lib/model/business/ui/window/window-ref.mjs +0 -9
- package/esm2022/lib/model/business/ui/window/window-target.mjs +0 -34
- package/esm2022/lib/model/business/version/index.mjs +0 -5
- package/esm2022/lib/model/business/version/version-config.mjs +0 -9
- package/esm2022/lib/model/business/version/version-config.provider.mjs +0 -40
- package/esm2022/lib/model/business/version/version-manager.mjs +0 -10
- package/esm2022/lib/model/business/version/version.mjs +0 -10
- package/esm2022/lib/model/index.mjs +0 -3
- package/esm2022/lib/model/service/index.mjs +0 -6
- package/esm2022/lib/model/service/logging/index.mjs +0 -2
- package/esm2022/lib/model/service/logging/logger-service.mjs +0 -41
- package/esm2022/lib/model/service/mock/http/http-mock.service.mjs +0 -279
- package/esm2022/lib/model/service/mock/http/index.mjs +0 -3
- package/esm2022/lib/model/service/mock/http/logging/atx-http-mock-console.service.mjs +0 -92
- package/esm2022/lib/model/service/mock/http/logging/http-mock-logging-service.mjs +0 -117
- package/esm2022/lib/model/service/mock/http/logging/index.mjs +0 -3
- package/esm2022/lib/model/service/subscription/subscription.service.mjs +0 -30
- package/esm2022/lib/model/service/ui/app-bridge.service.mjs +0 -142
- package/esm2022/lib/model/service/ui/dark-mode.service.mjs +0 -183
- package/esm2022/lib/model/service/ui/index.mjs +0 -5
- package/esm2022/lib/model/service/ui/scroll.service.mjs +0 -93
- package/esm2022/lib/model/service/ui/window/abstract-window.service.mjs +0 -49
- package/esm2022/lib/model/service/ui/window/index.mjs +0 -3
- package/esm2022/lib/model/service/ui/window/window.service.mjs +0 -103
- package/esm2022/lib/model/service/version/angular-toolbox-version.service.mjs +0 -37
- package/esm2022/lib/model/service/version/index.mjs +0 -3
- package/esm2022/lib/model/service/version/version.service.mjs +0 -35
- package/esm2022/lib/pipe/index.mjs +0 -2
- package/esm2022/lib/pipe/safe/safe-html.pipe.mjs +0 -34
- package/esm2022/lib/util/aria-role.constant.mjs +0 -16
- package/esm2022/lib/util/default-scroll-behavior.mjs +0 -13
- package/esm2022/lib/util/empty-string.const.mjs +0 -12
- package/esm2022/lib/util/http-mocking-framework-config.manager.mjs +0 -129
- package/esm2022/lib/util/index.mjs +0 -6
- package/esm2022/lib/util/js-type.mjs +0 -40
- package/esm2022/lib/util/uuid.mjs +0 -126
- package/esm2022/lib/util/version.util.mjs +0 -44
- package/esm2022/lib/util/window/window-features-builder.mjs +0 -90
- package/esm2022/lib/util/window/window-header-tag-util.mjs +0 -42
- package/esm2022/public-api.mjs +0 -20
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Pascal ECHEMANN. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be found in
|
|
6
|
-
* the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
|
|
7
|
-
*/
|
|
8
|
-
import { Component, ContentChildren, ViewChild, HostListener, EventEmitter, Output, Inject } from '@angular/core';
|
|
9
|
-
import { BorderLayoutContainer } from '../border-layout-container/border-layout-container.component';
|
|
10
|
-
import { LayoutDragEventType } from '../../../model';
|
|
11
|
-
import { BorderLayoutRenderer } from './util/border-layout-renderer';
|
|
12
|
-
import { IdentifiableComponent } from '../../../core';
|
|
13
|
-
import { DOCUMENT } from '@angular/common';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "../../../model";
|
|
16
|
-
/**
|
|
17
|
-
* A border layout lays out a container, arranging and resizing its components to fit in five regions: north, south, east, west, and center.
|
|
18
|
-
* Each region is defined by a `BorderLayoutContainer` instance, and is identified by a corresponding constant: `NORTH`, `SOUTH`, `EAST`, `WEST`, and `CENTER`.
|
|
19
|
-
* This component is part of the LAF-less API.
|
|
20
|
-
*/
|
|
21
|
-
export class BorderLayout extends IdentifiableComponent {
|
|
22
|
-
/**
|
|
23
|
-
* @private
|
|
24
|
-
*/
|
|
25
|
-
onResize() {
|
|
26
|
-
this.paint();
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* @private
|
|
30
|
-
*/
|
|
31
|
-
set __containers__(containers) {
|
|
32
|
-
this.renderer.addContainers(containers);
|
|
33
|
-
}
|
|
34
|
-
;
|
|
35
|
-
/**
|
|
36
|
-
* @private
|
|
37
|
-
*/
|
|
38
|
-
constructor(subscribeSvc, document) {
|
|
39
|
-
super();
|
|
40
|
-
this.subscribeSvc = subscribeSvc;
|
|
41
|
-
/**
|
|
42
|
-
* Emits events each time the user starts dragging a region handle.
|
|
43
|
-
*/
|
|
44
|
-
this.dragStart = new EventEmitter();
|
|
45
|
-
/**
|
|
46
|
-
* Emits events each time the user stops dragging a region handle.
|
|
47
|
-
*/
|
|
48
|
-
this.dragStop = new EventEmitter();
|
|
49
|
-
/**
|
|
50
|
-
* Emits events each time the user is dragging a region handle.
|
|
51
|
-
*/
|
|
52
|
-
this.dragging = new EventEmitter();
|
|
53
|
-
this.renderer = new BorderLayoutRenderer(subscribeSvc, document);
|
|
54
|
-
subscribeSvc.register(this, this.renderer.userAction.subscribe((event) => {
|
|
55
|
-
event.layout = this;
|
|
56
|
-
if (event.type === LayoutDragEventType.DRAGGING) {
|
|
57
|
-
this.dragging.emit(event);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
if (event.type === LayoutDragEventType.DRAG_START) {
|
|
61
|
-
this.dragStart.emit(event);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
this.dragStop.emit(event);
|
|
65
|
-
}));
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* @private
|
|
69
|
-
* For test purpose only.
|
|
70
|
-
*/
|
|
71
|
-
getRenderer() {
|
|
72
|
-
return this.renderer;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* @private
|
|
76
|
-
*/
|
|
77
|
-
ngOnDestroy() {
|
|
78
|
-
this.subscribeSvc.clearAll(this);
|
|
79
|
-
this.renderer.destroy();
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* @private
|
|
83
|
-
*/
|
|
84
|
-
ngAfterViewInit() {
|
|
85
|
-
this.renderer.setLayoutContainer(this.layoutContainer.nativeElement);
|
|
86
|
-
this.paint();
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Forces the container to be redrawn.
|
|
90
|
-
*/
|
|
91
|
-
paint() {
|
|
92
|
-
this.renderer.paint();
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Resizes the specified region.
|
|
96
|
-
*
|
|
97
|
-
* @param region The region to resize.
|
|
98
|
-
* @param size The new size of the region to resize.
|
|
99
|
-
*
|
|
100
|
-
* @returns `true` whether the specified region has been resized; `false` otherwise.
|
|
101
|
-
*/
|
|
102
|
-
resizeRegion(region, size) {
|
|
103
|
-
this.renderer.resizeRegion(region, size);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Changes the constraints of the region specified by the `LayoutConstraints.region` property.
|
|
107
|
-
*
|
|
108
|
-
* @param constraints The new constraints of the associated region.
|
|
109
|
-
*/
|
|
110
|
-
setConstraints(constraints) {
|
|
111
|
-
this.renderer.setConstraints(constraints);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Returns the `BorderLayoutContainer` component associated with the specified region.
|
|
115
|
-
*
|
|
116
|
-
* @param region The region for which to retreive the container.
|
|
117
|
-
*
|
|
118
|
-
* @returns The `BorderLayoutContainer` component associated with the specified region,
|
|
119
|
-
* or `undefined` whether no container has been found.
|
|
120
|
-
*/
|
|
121
|
-
getBorderLayoutContainer(region) {
|
|
122
|
-
return this.renderer.getBorderLayoutContainer(region);
|
|
123
|
-
}
|
|
124
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: BorderLayout, deps: [{ token: i1.SubscriptionService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
125
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.3", type: BorderLayout, isStandalone: true, selector: "atx-border-layout", outputs: { dragStart: "dragStart", dragStop: "dragStop", dragging: "dragging" }, host: { listeners: { "window:resize": "onResize()" } }, queries: [{ propertyName: "__containers__", predicate: BorderLayoutContainer }], viewQueries: [{ propertyName: "layoutContainer", first: true, predicate: ["atxLayoutContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<div #atxLayoutContainer class=\"atx-border-layout\">\n <ng-content></ng-content>\n</div>", styles: [".atx-border-layout{position:relative;height:100%;width:100%;-webkit-user-select:none;user-select:none;overflow:hidden}.atx-border-layout{box-sizing:border-box}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }); }
|
|
126
|
-
}
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: BorderLayout, decorators: [{
|
|
128
|
-
type: Component,
|
|
129
|
-
args: [{ selector: 'atx-border-layout', standalone: true, template: "<!--\n * LICENSE\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n-->\n\n<div #atxLayoutContainer class=\"atx-border-layout\">\n <ng-content></ng-content>\n</div>", styles: [".atx-border-layout{position:relative;height:100%;width:100%;-webkit-user-select:none;user-select:none;overflow:hidden}.atx-border-layout{box-sizing:border-box}\n/**\n * @license\n * Copyright Pascal ECHEMANN. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be found in\n * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license\n */\n"] }]
|
|
130
|
-
}], ctorParameters: () => [{ type: i1.SubscriptionService }, { type: Document, decorators: [{
|
|
131
|
-
type: Inject,
|
|
132
|
-
args: [DOCUMENT]
|
|
133
|
-
}] }], propDecorators: { dragStart: [{
|
|
134
|
-
type: Output
|
|
135
|
-
}], dragStop: [{
|
|
136
|
-
type: Output
|
|
137
|
-
}], dragging: [{
|
|
138
|
-
type: Output
|
|
139
|
-
}], onResize: [{
|
|
140
|
-
type: HostListener,
|
|
141
|
-
args: ["window:resize"]
|
|
142
|
-
}], layoutContainer: [{
|
|
143
|
-
type: ViewChild,
|
|
144
|
-
args: ["atxLayoutContainer"]
|
|
145
|
-
}], __containers__: [{
|
|
146
|
-
type: ContentChildren,
|
|
147
|
-
args: [BorderLayoutContainer]
|
|
148
|
-
}] } });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9yZGVyLWxheW91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9jb21wb25lbnQvbGF5b3V0L2JvcmRlci1sYXlvdXQvYm9yZGVyLWxheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9jb21wb25lbnQvbGF5b3V0L2JvcmRlci1sYXlvdXQvYm9yZGVyLWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxlQUFlLEVBQXlCLFNBQVMsRUFBRSxZQUFZLEVBQWEsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkssT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDckcsT0FBTyxFQUFzQyxtQkFBbUIsRUFBdUQsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5SSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFM0M7Ozs7R0FJRztBQU9ILE1BQU0sT0FBTyxZQUFhLFNBQVEscUJBQXFCO0lBb0JyRDs7T0FFRztJQUVLLFFBQVE7UUFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBYUQ7O09BRUc7SUFDSCxJQUNZLGNBQWMsQ0FBQyxVQUE0QztRQUNyRSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUEsQ0FBQztJQUVGOztPQUVH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QyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cclxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgT25EZXN0cm95LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgUXVlcnlMaXN0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJvcmRlckxheW91dENvbnRhaW5lciB9IGZyb20gJy4uL2JvcmRlci1sYXlvdXQtY29udGFpbmVyL2JvcmRlci1sYXlvdXQtY29udGFpbmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExheW91dENvbnN0cmFpbnRzLCBMYXlvdXREcmFnRXZlbnQsIExheW91dERyYWdFdmVudFR5cGUsIExheW91dFJlZ2lvbiwgTGF5b3V0UmVnaW9uVHlwZSwgU3Vic2NyaXB0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL21vZGVsJztcclxuaW1wb3J0IHsgQm9yZGVyTGF5b3V0UmVuZGVyZXIgfSBmcm9tICcuL3V0aWwvYm9yZGVyLWxheW91dC1yZW5kZXJlcic7XHJcbmltcG9ydCB7IElkZW50aWZpYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG4vKipcclxuICogQSBib3JkZXIgbGF5b3V0IGxheXMgb3V0IGEgY29udGFpbmVyLCBhcnJhbmdpbmcgYW5kIHJlc2l6aW5nIGl0cyBjb21wb25lbnRzIHRvIGZpdCBpbiBmaXZlIHJlZ2lvbnM6IG5vcnRoLCBzb3V0aCwgZWFzdCwgd2VzdCwgYW5kIGNlbnRlci5cclxuICogRWFjaCByZWdpb24gaXMgZGVmaW5lZCBieSBhIGBCb3JkZXJMYXlvdXRDb250YWluZXJgIGluc3RhbmNlLCBhbmQgaXMgaWRlbnRpZmllZCBieSBhIGNvcnJlc3BvbmRpbmcgY29uc3RhbnQ6IGBOT1JUSGAsIGBTT1VUSGAsIGBFQVNUYCwgYFdFU1RgLCBhbmQgYENFTlRFUmAuXHJcbiAqIFRoaXMgY29tcG9uZW50IGlzIHBhcnQgb2YgdGhlIExBRi1sZXNzIEFQSS5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXR4LWJvcmRlci1sYXlvdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ib3JkZXItbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ib3JkZXItbGF5b3V0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm9yZGVyTGF5b3V0IGV4dGVuZHMgSWRlbnRpZmlhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHMgZXZlbnRzIGVhY2ggdGltZSB0aGUgdXNlciBzdGFydHMgZHJhZ2dpbmcgYSByZWdpb24gaGFuZGxlLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBkcmFnU3RhcnQ6IEV2ZW50RW1pdHRlcjxMYXlvdXREcmFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBldmVudHMgZWFjaCB0aW1lIHRoZSB1c2VyIHN0b3BzIGRyYWdnaW5nIGEgcmVnaW9uIGhhbmRsZS5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZHJhZ1N0b3A6IEV2ZW50RW1pdHRlcjxMYXlvdXREcmFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBldmVudHMgZWFjaCB0aW1lIHRoZSB1c2VyIGlzIGRyYWdnaW5nIGEgcmVnaW9uIGhhbmRsZS5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZHJhZ2dpbmc6IEV2ZW50RW1pdHRlcjxMYXlvdXREcmFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIilcclxuICBwcml2YXRlIG9uUmVzaXplKCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYWludCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBAVmlld0NoaWxkKFwiYXR4TGF5b3V0Q29udGFpbmVyXCIpXHJcbiAgcHJpdmF0ZSBsYXlvdXRDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHJlbmRlcmVyOiBCb3JkZXJMYXlvdXRSZW5kZXJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBAQ29udGVudENoaWxkcmVuKEJvcmRlckxheW91dENvbnRhaW5lcilcclxuICBwcml2YXRlIHNldCBfX2NvbnRhaW5lcnNfXyhjb250YWluZXJzOiBRdWVyeUxpc3Q8Qm9yZGVyTGF5b3V0Q29udGFpbmVyPikge1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDb250YWluZXJzKGNvbnRhaW5lcnMpO1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdWJzY3JpYmVTdmM6IFN1YnNjcmlwdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IERvY3VtZW50KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5yZW5kZXJlciA9IG5ldyBCb3JkZXJMYXlvdXRSZW5kZXJlcihzdWJzY3JpYmVTdmMsIGRvY3VtZW50KTtcclxuICAgIHN1YnNjcmliZVN2Yy5yZWdpc3Rlcih0aGlzLFxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnVzZXJBY3Rpb24uc3Vic2NyaWJlKChldmVudDogTGF5b3V0RHJhZ0V2ZW50KT0+IHtcclxuICAgICAgICBldmVudC5sYXlvdXQgPSB0aGlzO1xyXG4gICAgICAgIGlmIChldmVudC50eXBlID09PSBMYXlvdXREcmFnRXZlbnRUeXBlLkRSQUdHSU5HKSB7XHJcbiAgICAgICAgICB0aGlzLmRyYWdnaW5nLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gTGF5b3V0RHJhZ0V2ZW50VHlwZS5EUkFHX1NUQVJUKSB7XHJcbiAgICAgICAgICB0aGlzLmRyYWdTdGFydC5lbWl0KGV2ZW50KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kcmFnU3RvcC5lbWl0KGV2ZW50KTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEZvciB0ZXN0IHB1cnBvc2Ugb25seS5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UmVuZGVyZXIoKTogQm9yZGVyTGF5b3V0UmVuZGVyZXIge1xyXG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlU3ZjLmNsZWFyQWxsKHRoaXMpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldExheW91dENvbnRhaW5lcih0aGlzLmxheW91dENvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMucGFpbnQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcmNlcyB0aGUgY29udGFpbmVyIHRvIGJlIHJlZHJhd24uXHJcbiAgICovXHJcbiAgcHVibGljIHBhaW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXJlci5wYWludCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzaXplcyB0aGUgc3BlY2lmaWVkIHJlZ2lvbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gcmVnaW9uIFRoZSByZWdpb24gdG8gcmVzaXplLlxyXG4gICAqIEBwYXJhbSBzaXplIFRoZSBuZXcgc2l6ZSBvZiB0aGUgcmVnaW9uIHRvIHJlc2l6ZS5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hldGhlciB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBoYXMgYmVlbiByZXNpemVkOyBgZmFsc2VgIG90aGVyd2lzZS5cclxuICAgKi9cclxuICBwdWJsaWMgcmVzaXplUmVnaW9uKHJlZ2lvbjogTGF5b3V0UmVnaW9uIHwgTGF5b3V0UmVnaW9uVHlwZSwgc2l6ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnJlc2l6ZVJlZ2lvbihyZWdpb24gYXMgTGF5b3V0UmVnaW9uLCBzaXplKTtcclxuICB9XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQ2hhbmdlcyB0aGUgY29uc3RyYWludHMgb2YgdGhlIHJlZ2lvbiBzcGVjaWZpZWQgYnkgdGhlIGBMYXlvdXRDb25zdHJhaW50cy5yZWdpb25gIHByb3BlcnR5LlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb25zdHJhaW50cyBUaGUgbmV3IGNvbnN0cmFpbnRzIG9mIHRoZSBhc3NvY2lhdGVkIHJlZ2lvbi5cclxuICAgKi9cclxuICBwdWJsaWMgc2V0Q29uc3RyYWludHMoY29uc3RyYWludHM6IExheW91dENvbnN0cmFpbnRzKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldENvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKTtcclxuICB9XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgYEJvcmRlckxheW91dENvbnRhaW5lcmAgY29tcG9uZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHJlZ2lvbi5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gcmVnaW9uIFRoZSByZWdpb24gZm9yIHdoaWNoIHRvIHJldHJlaXZlIHRoZSBjb250YWluZXIuXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgVGhlIGBCb3JkZXJMYXlvdXRDb250YWluZXJgIGNvbXBvbmVudCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCByZWdpb24sXHJcbiAgICogICAgICAgICAgb3IgYHVuZGVmaW5lZGAgd2hldGhlciBubyBjb250YWluZXIgaGFzIGJlZW4gZm91bmQuXHJcbiAgICovXHJcbiAgcHVibGljIGdldEJvcmRlckxheW91dENvbnRhaW5lcihyZWdpb246IExheW91dFJlZ2lvblR5cGUpOiBCb3JkZXJMYXlvdXRDb250YWluZXIgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXIuZ2V0Qm9yZGVyTGF5b3V0Q29udGFpbmVyKHJlZ2lvbik7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8IS0tXG4gKiBMSUNFTlNFXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxuLS0+XG5cbjxkaXYgI2F0eExheW91dENvbnRhaW5lciBjbGFzcz1cImF0eC1ib3JkZXItbGF5b3V0XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+Il19
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Pascal ECHEMANN. All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be found in
|
|
6
|
-
* the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
|
|
7
|
-
*/
|
|
8
|
-
import { LayoutRegion, } from '../../../../model';
|
|
9
|
-
/**
|
|
10
|
-
* @private
|
|
11
|
-
* A utility class that computes the size of all border layout containers.
|
|
12
|
-
*/
|
|
13
|
-
export class BorderLayoutBoundsManager {
|
|
14
|
-
constructor() {
|
|
15
|
-
/**
|
|
16
|
-
* @private
|
|
17
|
-
* The container top position when the user starts to drag the handle.
|
|
18
|
-
*/
|
|
19
|
-
this.topPos = 0;
|
|
20
|
-
/**
|
|
21
|
-
* @private
|
|
22
|
-
* The container left position when the user starts to drag the handle.
|
|
23
|
-
*/
|
|
24
|
-
this.leftPos = 0;
|
|
25
|
-
/**
|
|
26
|
-
* @private
|
|
27
|
-
* The bounds of the center container.
|
|
28
|
-
*/
|
|
29
|
-
this.bounds = new DOMRect();
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Makes this object elligible for garbage collection.
|
|
33
|
-
*/
|
|
34
|
-
destroy() {
|
|
35
|
-
this.bounds = null;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Returns a rectangle that represents the bounds currently computed by this object.
|
|
39
|
-
*
|
|
40
|
-
* @returns The bounds currently computed by this object.
|
|
41
|
-
*/
|
|
42
|
-
getBounds() {
|
|
43
|
-
return this.bounds;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Sets the top-left hand corner position before each bounds computaion.
|
|
47
|
-
*
|
|
48
|
-
* @param x The x position of the main container, in pixels, before computaion.
|
|
49
|
-
* @param y The y position of the main container, in pixels, before computaion.
|
|
50
|
-
*/
|
|
51
|
-
setOrigin(x, y) {
|
|
52
|
-
this.leftPos = x;
|
|
53
|
-
this.topPos = y;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* @private
|
|
57
|
-
* For test purpose only.
|
|
58
|
-
*/
|
|
59
|
-
getOrigin() {
|
|
60
|
-
return { x: this.leftPos, y: this.topPos };
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Computes the size of a "north" container.
|
|
64
|
-
*
|
|
65
|
-
* @param event The mouse event that triggered the computation of the container size.
|
|
66
|
-
* @param width The width of the main container.
|
|
67
|
-
* @param height The height of the main container.
|
|
68
|
-
* @param minSize The minimum size of the container for which to compute the size.
|
|
69
|
-
* @param maxSize The maximum size of the container for which to compute the size.
|
|
70
|
-
*
|
|
71
|
-
* @returns The size of a "north" container.
|
|
72
|
-
*/
|
|
73
|
-
northResize(event, width, height, minSize, maxSize) {
|
|
74
|
-
const size = event.clientY - this.topPos;
|
|
75
|
-
if (maxSize && size > maxSize)
|
|
76
|
-
return this.setY(maxSize);
|
|
77
|
-
if (minSize && size < minSize)
|
|
78
|
-
return this.setY(minSize);
|
|
79
|
-
return this.setY(size);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* @private
|
|
83
|
-
*/
|
|
84
|
-
setY(y) {
|
|
85
|
-
this.bounds.y = y;
|
|
86
|
-
return y;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Computes the size of a "south" container.
|
|
90
|
-
*
|
|
91
|
-
* @param event The mouse event that triggered the computation of the container size.
|
|
92
|
-
* @param width The width of the main container.
|
|
93
|
-
* @param height The height of the main container.
|
|
94
|
-
* @param minSize The minimum size of the container for which to compute the size.
|
|
95
|
-
* @param maxSize The maximum size of the container for which to compute the size.
|
|
96
|
-
*
|
|
97
|
-
* @returns The size of a "south" container.
|
|
98
|
-
*/
|
|
99
|
-
southResize(event, width, height, minSize, maxSize) {
|
|
100
|
-
const size = height - (event.clientY - this.topPos);
|
|
101
|
-
if (maxSize && size > maxSize)
|
|
102
|
-
return this.setHeight(maxSize);
|
|
103
|
-
if (minSize && size < minSize)
|
|
104
|
-
return this.setHeight(minSize);
|
|
105
|
-
return this.setHeight(size);
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* @private
|
|
109
|
-
*/
|
|
110
|
-
setHeight(height) {
|
|
111
|
-
this.bounds.height = height;
|
|
112
|
-
return height;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Computes the size of a "west" container.
|
|
116
|
-
*
|
|
117
|
-
* @param event The mouse event that triggered the computation of the container size.
|
|
118
|
-
* @param width The width of the main container.
|
|
119
|
-
* @param height The height of the main container.
|
|
120
|
-
* @param minSize The minimum size of the container for which to compute the size.
|
|
121
|
-
* @param maxSize The maximum size of the container for which to compute the size.
|
|
122
|
-
*
|
|
123
|
-
* @returns The size of a "west" container.
|
|
124
|
-
*/
|
|
125
|
-
westResize(event, width, height, minSize, maxSize) {
|
|
126
|
-
const size = event.clientX - this.leftPos;
|
|
127
|
-
if (maxSize && size > maxSize)
|
|
128
|
-
return this.setX(maxSize);
|
|
129
|
-
if (minSize && size < minSize)
|
|
130
|
-
return this.setX(minSize);
|
|
131
|
-
return this.setX(size);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* @private
|
|
135
|
-
*/
|
|
136
|
-
setX(x) {
|
|
137
|
-
this.bounds.x = x;
|
|
138
|
-
return x;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Computes the size of a "east" container.
|
|
142
|
-
*
|
|
143
|
-
* @param event The mouse event that triggered the computation of the container size.
|
|
144
|
-
* @param width The width of the main container.
|
|
145
|
-
* @param height The height of the main container.
|
|
146
|
-
* @param minSize The minimum size of the container for which to compute the size.
|
|
147
|
-
* @param maxSize The maximum size of the container for which to compute the size.
|
|
148
|
-
*
|
|
149
|
-
* @returns The size of a "east" container.
|
|
150
|
-
*/
|
|
151
|
-
eastResize(event, width, height, minSize, maxSize) {
|
|
152
|
-
const size = width - (event.clientX - this.leftPos);
|
|
153
|
-
if (maxSize && size > maxSize)
|
|
154
|
-
return this.setWidth(maxSize);
|
|
155
|
-
if (minSize && size < minSize)
|
|
156
|
-
return this.setWidth(minSize);
|
|
157
|
-
return this.setWidth(size);
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* @private
|
|
161
|
-
*/
|
|
162
|
-
setWidth(width) {
|
|
163
|
-
this.bounds.width = width;
|
|
164
|
-
return width;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Invoked after each `BorderLayoutContainer` registration to initialize the center container bounds.
|
|
168
|
-
*
|
|
169
|
-
* @param container A `BorderLayoutContainer` instance added to the main container.
|
|
170
|
-
*/
|
|
171
|
-
initBounds(container) {
|
|
172
|
-
const r = container.constraints.region;
|
|
173
|
-
if (r === LayoutRegion.NORTH) {
|
|
174
|
-
this.bounds.y = container.getSize();
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
if (r === LayoutRegion.SOUTH) {
|
|
178
|
-
this.bounds.height = container.getSize();
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
if (r === LayoutRegion.WEST) {
|
|
182
|
-
this.bounds.x = container.getSize();
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
if (r === LayoutRegion.EAST)
|
|
186
|
-
this.bounds.width = container.getSize();
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Returns the method used to compute the size of a container, depending on the specified region.
|
|
190
|
-
*
|
|
191
|
-
* @param region The region associated with the container for which to compute the size.
|
|
192
|
-
*
|
|
193
|
-
* @returns The method used to compute the size of a container.
|
|
194
|
-
*/
|
|
195
|
-
getResizeMethod(region) {
|
|
196
|
-
let method = this.southResize;
|
|
197
|
-
switch (region) {
|
|
198
|
-
case LayoutRegion.NORTH:
|
|
199
|
-
method = this.northResize;
|
|
200
|
-
break;
|
|
201
|
-
case LayoutRegion.WEST:
|
|
202
|
-
method = this.westResize;
|
|
203
|
-
break;
|
|
204
|
-
case LayoutRegion.EAST:
|
|
205
|
-
method = this.eastResize;
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
return method.bind(this);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9yZGVyLWxheW91dC1ib3VuZHMtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2NvbXBvbmVudC9sYXlvdXQvYm9yZGVyLWxheW91dC91dGlsL2JvcmRlci1sYXlvdXQtYm91bmRzLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxFQUFlLFlBQVksR0FBRyxNQUFNLG1CQUFtQixDQUFDO0FBRy9EOzs7R0FHRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFBdEM7UUFFRTs7O1dBR0c7UUFDSyxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBRTNCOzs7V0FHRztRQUNLLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFFNUI7OztXQUdHO1FBQ0ssV0FBTSxHQUFZLElBQUksT0FBTyxFQUFFLENBQUM7SUFtTDFDLENBQUM7SUFqTEM7O09BRUc7SUFDSSxPQUFPO1FBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFNBQVMsQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUztRQUNkLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksV0FBVyxDQUFDLEtBQWlCLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFB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QUMsSUFBSTtnQkFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFBQyxNQUFNO1FBQzFELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFRLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBCb3JkZXJMYXlvdXRDb250YWluZXIgfSBmcm9tICcuLi8uLi9ib3JkZXItbGF5b3V0LWNvbnRhaW5lci9ib3JkZXItbGF5b3V0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVzdHJveWFibGUsIExheW91dFJlZ2lvbiwgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbCc7XG5pbXBvcnQgeyBSZXNpemVNZXRob2QgfSBmcm9tICcuL3Jlc2l6ZS1tZXRob2QnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBBIHV0aWxpdHkgY2xhc3MgdGhhdCBjb21wdXRlcyB0aGUgc2l6ZSBvZiBhbGwgYm9yZGVyIGxheW91dCBjb250YWluZXJzLlxuICovXG5leHBvcnQgY2xhc3MgQm9yZGVyTGF5b3V0Qm91bmRzTWFuYWdlciBpbXBsZW1lbnRzIERlc3Ryb3lhYmxlIHtcblxuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogVGhlIGNvbnRhaW5lciB0b3AgcG9zaXRpb24gd2hlbiB0aGUgdXNlciBzdGFydHMgdG8gZHJhZyB0aGUgaGFuZGxlLlxuICAgKi9cbiAgcHJpdmF0ZSB0b3BQb3M6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqIFRoZSBjb250YWluZXIgbGVmdCBwb3NpdGlvbiB3aGVuIHRoZSB1c2VyIHN0YXJ0cyB0byBkcmFnIHRoZSBoYW5kbGUuXG4gICAqL1xuICBwcml2YXRlIGxlZnRQb3M6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqIFRoZSBib3VuZHMgb2YgdGhlIGNlbnRlciBjb250YWluZXIuXG4gICAqL1xuICBwcml2YXRlIGJvdW5kczogRE9NUmVjdCA9IG5ldyBET01SZWN0KCk7XG5cbiAgLyoqXG4gICAqIE1ha2VzIHRoaXMgb2JqZWN0IGVsbGlnaWJsZSBmb3IgZ2FyYmFnZSBjb2xsZWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5ib3VuZHMgPSBudWxsIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVjdGFuZ2xlIHRoYXQgcmVwcmVzZW50cyB0aGUgYm91bmRzIGN1cnJlbnRseSBjb21wdXRlZCBieSB0aGlzIG9iamVjdC5cbiAgICogXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZHMgY3VycmVudGx5IGNvbXB1dGVkIGJ5IHRoaXMgb2JqZWN0LlxuICAgKi9cbiAgcHVibGljIGdldEJvdW5kcygpOiBET01SZWN0IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9wLWxlZnQgaGFuZCBjb3JuZXIgcG9zaXRpb24gYmVmb3JlIGVhY2ggYm91bmRzIGNvbXB1dGFpb24uXG4gICAqIFxuICAgKiBAcGFyYW0geCBUaGUgeCBwb3NpdGlvbiBvZiB0aGUgbWFpbiBjb250YWluZXIsIGluIHBpeGVscywgYmVmb3JlIGNvbXB1dGFpb24uXG4gICAqIEBwYXJhbSB5IFRoZSB5IHBvc2l0aW9uIG9mIHRoZSBtYWluIGNvbnRhaW5lciwgaW4gcGl4ZWxzLCBiZWZvcmUgY29tcHV0YWlvbi5cbiAgICovXG4gIHB1YmxpYyBzZXRPcmlnaW4oeDogbnVtYmVyLCB5OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmxlZnRQb3MgPSB4O1xuICAgIHRoaXMudG9wUG9zID0geTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBGb3IgdGVzdCBwdXJwb3NlIG9ubHkuXG4gICAqL1xuICBwdWJsaWMgZ2V0T3JpZ2luKCk6IGFueSB7XG4gICAgcmV0dXJuIHsgeDogdGhpcy5sZWZ0UG9zLCB5OiB0aGlzLnRvcFBvcyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBzaXplIG9mIGEgXCJub3J0aFwiIGNvbnRhaW5lci5cbiAgICogXG4gICAqIEBwYXJhbSBldmVudCBUaGUgbW91c2UgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBjb250YWluZXIgc2l6ZS5cbiAgICogQHBhcmFtIHdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgbWFpbiBjb250YWluZXIuXG4gICAqIEBwYXJhbSBoZWlnaHQgVGhlIGhlaWdodCBvZiB0aGUgbWFpbiBjb250YWluZXIuXG4gICAqIEBwYXJhbSBtaW5TaXplIFRoZSBtaW5pbXVtIHNpemUgb2YgdGhlIGNvbnRhaW5lciBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgc2l6ZS5cbiAgICogQHBhcmFtIG1heFNpemUgVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgY29udGFpbmVyIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBzaXplLlxuICAgKiBcbiAgICogQHJldHVybnMgVGhlIHNpemUgb2YgYSBcIm5vcnRoXCIgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIG5vcnRoUmVzaXplKGV2ZW50OiBNb3VzZUV2ZW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgbWluU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkLCBtYXhTaXplOiBudW1iZXIgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICAgIGNvbnN0IHNpemU6IG51bWJlciA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLnRvcFBvcztcbiAgICBpZiAobWF4U2l6ZSAmJiBzaXplID4gbWF4U2l6ZSkgcmV0dXJuIHRoaXMuc2V0WShtYXhTaXplKTtcbiAgICBpZiAobWluU2l6ZSAmJiBzaXplIDwgbWluU2l6ZSkgcmV0dXJuIHRoaXMuc2V0WShtaW5TaXplKTtcbiAgICByZXR1cm4gdGhpcy5zZXRZKHNpemUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldFkoeTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB0aGlzLmJvdW5kcy55ID0geTtcbiAgICByZXR1cm4geTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgc2l6ZSBvZiBhIFwic291dGhcIiBjb250YWluZXIuXG4gICAqIFxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIG1vdXNlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgY29udGFpbmVyIHNpemUuXG4gICAqIEBwYXJhbSB3aWR0aCBUaGUgd2lkdGggb2YgdGhlIG1haW4gY29udGFpbmVyLlxuICAgKiBAcGFyYW0gaGVpZ2h0IFRoZSBoZWlnaHQgb2YgdGhlIG1haW4gY29udGFpbmVyLlxuICAgKiBAcGFyYW0gbWluU2l6ZSBUaGUgbWluaW11bSBzaXplIG9mIHRoZSBjb250YWluZXIgZm9yIHdoaWNoIHRvIGNvbXB1dGUgdGhlIHNpemUuXG4gICAqIEBwYXJhbSBtYXhTaXplIFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGNvbnRhaW5lciBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgc2l6ZS5cbiAgICogXG4gICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIGEgXCJzb3V0aFwiIGNvbnRhaW5lci5cbiAgICovXG4gIHB1YmxpYyBzb3V0aFJlc2l6ZShldmVudDogTW91c2VFdmVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIG1pblNpemU6IG51bWJlciB8IHVuZGVmaW5lZCwgbWF4U2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgICBjb25zdCBzaXplOiBudW1iZXIgPSBoZWlnaHQgLSAoZXZlbnQuY2xpZW50WSAtIHRoaXMudG9wUG9zKTtcbiAgICBpZiAobWF4U2l6ZSAmJiBzaXplID4gbWF4U2l6ZSkgcmV0dXJuIHRoaXMuc2V0SGVpZ2h0KG1heFNpemUpO1xuICAgIGlmIChtaW5TaXplICYmIHNpemUgPCBtaW5TaXplKSByZXR1cm4gdGhpcy5zZXRIZWlnaHQobWluU2l6ZSk7XG4gICAgcmV0dXJuIHRoaXMuc2V0SGVpZ2h0KHNpemUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldEhlaWdodChoZWlnaHQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgdGhpcy5ib3VuZHMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHJldHVybiBoZWlnaHQ7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIHNpemUgb2YgYSBcIndlc3RcIiBjb250YWluZXIuXG4gICAqIFxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIG1vdXNlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgY29udGFpbmVyIHNpemUuXG4gICAqIEBwYXJhbSB3aWR0aCBUaGUgd2lkdGggb2YgdGhlIG1haW4gY29udGFpbmVyLlxuICAgKiBAcGFyYW0gaGVpZ2h0IFRoZSBoZWlnaHQgb2YgdGhlIG1haW4gY29udGFpbmVyLlxuICAgKiBAcGFyYW0gbWluU2l6ZSBUaGUgbWluaW11bSBzaXplIG9mIHRoZSBjb250YWluZXIgZm9yIHdoaWNoIHRvIGNvbXB1dGUgdGhlIHNpemUuXG4gICAqIEBwYXJhbSBtYXhTaXplIFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGNvbnRhaW5lciBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgc2l6ZS5cbiAgICogXG4gICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIGEgXCJ3ZXN0XCIgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIHdlc3RSZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBtaW5TaXplOiBudW1iZXIgfCB1bmRlZmluZWQsIG1heFNpemU6IG51bWJlciB8IHVuZGVmaW5lZCk6IG51bWJlciB7XG4gICAgY29uc3Qgc2l6ZTogbnVtYmVyID0gZXZlbnQuY2xpZW50WCAtIHRoaXMubGVmdFBvcztcbiAgICBpZiAobWF4U2l6ZSAmJiBzaXplID4gbWF4U2l6ZSkgcmV0dXJuIHRoaXMuc2V0WChtYXhTaXplKTtcbiAgICBpZiAobWluU2l6ZSAmJiBzaXplIDwgbWluU2l6ZSkgcmV0dXJuIHRoaXMuc2V0WChtaW5TaXplKTtcbiAgICByZXR1cm4gdGhpcy5zZXRYKHNpemUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldFgoeDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICB0aGlzLmJvdW5kcy54ID0geDtcbiAgICByZXR1cm4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgc2l6ZSBvZiBhIFwiZWFzdFwiIGNvbnRhaW5lci5cbiAgICogXG4gICAqIEBwYXJhbSBldmVudCBUaGUgbW91c2UgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBjb250YWluZXIgc2l6ZS5cbiAgICogQHBhcmFtIHdpZHRoIFRoZSB3aWR0aCBvZiB0aGUgbWFpbiBjb250YWluZXIuXG4gICAqIEBwYXJhbSBoZWlnaHQgVGhlIGhlaWdodCBvZiB0aGUgbWFpbiBjb250YWluZXIuXG4gICAqIEBwYXJhbSBtaW5TaXplIFRoZSBtaW5pbXVtIHNpemUgb2YgdGhlIGNvbnRhaW5lciBmb3Igd2hpY2ggdG8gY29tcHV0ZSB0aGUgc2l6ZS5cbiAgICogQHBhcmFtIG1heFNpemUgVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgY29udGFpbmVyIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBzaXplLlxuICAgKiBcbiAgICogQHJldHVybnMgVGhlIHNpemUgb2YgYSBcImVhc3RcIiBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgZWFzdFJlc2l6ZShldmVudDogTW91c2VFdmVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIG1pblNpemU6IG51bWJlciB8IHVuZGVmaW5lZCwgbWF4U2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgICBjb25zdCBzaXplOiBudW1iZXIgPSB3aWR0aCAtIChldmVudC5jbGllbnRYIC0gdGhpcy5sZWZ0UG9zKTtcbiAgICBpZiAobWF4U2l6ZSAmJiBzaXplID4gbWF4U2l6ZSkgcmV0dXJuIHRoaXMuc2V0V2lkdGgobWF4U2l6ZSk7XG4gICAgaWYgKG1pblNpemUgJiYgc2l6ZSA8IG1pblNpemUpIHJldHVybiB0aGlzLnNldFdpZHRoKG1pblNpemUpO1xuICAgIHJldHVybiB0aGlzLnNldFdpZHRoKHNpemUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNldFdpZHRoKHdpZHRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHRoaXMuYm91bmRzLndpZHRoID0gd2lkdGg7XG4gICAgcmV0dXJuIHdpZHRoO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZWQgYWZ0ZXIgZWFjaCBgQm9yZGVyTGF5b3V0Q29udGFpbmVyYCByZWdpc3RyYXRpb24gdG8gaW5pdGlhbGl6ZSB0aGUgY2VudGVyIGNvbnRhaW5lciBib3VuZHMuXG4gICAqIFxuICAgKiBAcGFyYW0gY29udGFpbmVyIEEgYEJvcmRlckxheW91dENvbnRhaW5lcmAgaW5zdGFuY2UgYWRkZWQgdG8gdGhlIG1haW4gY29udGFpbmVyLiBcbiAgICovXG4gIHB1YmxpYyBpbml0Qm91bmRzKGNvbnRhaW5lcjogQm9yZGVyTGF5b3V0Q29udGFpbmVyKTogdm9pZCB7XG4gICAgY29uc3QgcjogTGF5b3V0UmVnaW9uID0gY29udGFpbmVyLmNvbnN0cmFpbnRzLnJlZ2lvbiBhcyBMYXlvdXRSZWdpb247XG4gICAgaWYgKHIgPT09IExheW91dFJlZ2lvbi5OT1JUSCkge1xuICAgICAgdGhpcy5ib3VuZHMueSA9IGNvbnRhaW5lci5nZXRTaXplKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyID09PSBMYXlvdXRSZWdpb24uU09VVEgpIHtcbiAgICAgIHRoaXMuYm91bmRzLmhlaWdodCA9IGNvbnRhaW5lci5nZXRTaXplKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyID09PSBMYXlvdXRSZWdpb24uV0VTVCkge1xuICAgICAgdGhpcy5ib3VuZHMueCA9IGNvbnRhaW5lci5nZXRTaXplKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChyID09PSBMYXlvdXRSZWdpb24uRUFTVCkgdGhpcy5ib3VuZHMud2lkdGggPSBjb250YWluZXIuZ2V0U2l6ZSgpO1xuICB9XG4gIFxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbWV0aG9kIHVzZWQgdG8gY29tcHV0ZSB0aGUgc2l6ZSBvZiBhIGNvbnRhaW5lciwgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpZWQgcmVnaW9uLlxuICAgKiBcbiAgICogQHBhcmFtIHJlZ2lvbiBUaGUgcmVnaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udGFpbmVyIGZvciB3aGljaCB0byBjb21wdXRlIHRoZSBzaXplLlxuICAgKiBcbiAgICogQHJldHVybnMgVGhlIG1ldGhvZCB1c2VkIHRvIGNvbXB1dGUgdGhlIHNpemUgb2YgYSBjb250YWluZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVzaXplTWV0aG9kKHJlZ2lvbjogTGF5b3V0UmVnaW9uKTogUmVzaXplTWV0aG9kIHtcbiAgICBsZXQgbWV0aG9kOiBSZXNpemVNZXRob2QgPSB0aGlzLnNvdXRoUmVzaXplO1xuICAgIHN3aXRjaCAocmVnaW9uKSB7XG4gICAgICBjYXNlIExheW91dFJlZ2lvbi5OT1JUSDogbWV0aG9kID0gdGhpcy5ub3J0aFJlc2l6ZTsgYnJlYWs7XG4gICAgICBjYXNlIExheW91dFJlZ2lvbi5XRVNUOiBtZXRob2QgPSB0aGlzLndlc3RSZXNpemU7IGJyZWFrO1xuICAgICAgY2FzZSBMYXlvdXRSZWdpb24uRUFTVDogbWV0aG9kID0gdGhpcy5lYXN0UmVzaXplOyBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIG1ldGhvZC5iaW5kKHRoaXMpIGFzIGFueTtcbiAgfVxufVxuIl19
|