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.
Files changed (277) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/angular-toolbox.mjs +159 -166
  3. package/fesm2022/angular-toolbox.mjs.map +1 -1
  4. package/package.json +1 -3
  5. package/esm2022/angular-toolbox.mjs +0 -5
  6. package/esm2022/lib/angular-toolbox.module.mjs +0 -25
  7. package/esm2022/lib/collection/array-list-event-type.enum.mjs +0 -30
  8. package/esm2022/lib/collection/array-list.event.mjs +0 -23
  9. package/esm2022/lib/collection/array-list.mjs +0 -158
  10. package/esm2022/lib/collection/index.mjs +0 -11
  11. package/esm2022/lib/component/angular-toolbox-logo/angular-toolbox-logo.component.mjs +0 -18
  12. package/esm2022/lib/component/dropdown/dropdown.component.mjs +0 -139
  13. package/esm2022/lib/component/index.mjs +0 -11
  14. package/esm2022/lib/component/layout/border-layout/border-layout.component.mjs +0 -149
  15. package/esm2022/lib/component/layout/border-layout/util/border-layout-bounds-manager.mjs +0 -211
  16. package/esm2022/lib/component/layout/border-layout/util/border-layout-renderer.mjs +0 -267
  17. package/esm2022/lib/component/layout/border-layout/util/resize-method.mjs +0 -9
  18. package/esm2022/lib/component/layout/border-layout-container/border-layout-container.component.mjs +0 -145
  19. package/esm2022/lib/component/layout/index.mjs +0 -3
  20. package/esm2022/lib/core/abstract/abstract-subscription-manager.mjs +0 -113
  21. package/esm2022/lib/core/abstract/abstract-version-manager.mjs +0 -37
  22. package/esm2022/lib/core/abstract/index.mjs +0 -3
  23. package/esm2022/lib/core/bridge/app-bridge.mjs +0 -76
  24. package/esm2022/lib/core/error/app-bridge-error.mjs +0 -24
  25. package/esm2022/lib/core/error/http-mock-service-error.mjs +0 -26
  26. package/esm2022/lib/core/error/index.mjs +0 -5
  27. package/esm2022/lib/core/error/integrity-error.mjs +0 -26
  28. package/esm2022/lib/core/error/subscription-error.mjs +0 -26
  29. package/esm2022/lib/core/impl/index.mjs +0 -2
  30. package/esm2022/lib/core/impl/lang/identifiable-component.mjs +0 -47
  31. package/esm2022/lib/core/impl/lang/index.mjs +0 -2
  32. package/esm2022/lib/core/impl/version/version.impl.mjs +0 -36
  33. package/esm2022/lib/core/index.mjs +0 -4
  34. package/esm2022/lib/directive/anchor-link.directive.mjs +0 -62
  35. package/esm2022/lib/directive/button-role.directive.mjs +0 -102
  36. package/esm2022/lib/directive/content-renderer.directive.mjs +0 -61
  37. package/esm2022/lib/directive/index.mjs +0 -5
  38. package/esm2022/lib/directive/navigate-to-url.directive.mjs +0 -51
  39. package/esm2022/lib/directive/navigation-directive-base.mjs +0 -23
  40. package/esm2022/lib/framework/dialog/dialog-backdrop-type.enum.mjs +0 -23
  41. package/esm2022/lib/framework/dialog/dialog-backdrop.type.mjs +0 -9
  42. package/esm2022/lib/framework/dialog/dialog-default-config.mjs +0 -15
  43. package/esm2022/lib/framework/dialog/dialog-outlet-event-type.mjs +0 -9
  44. package/esm2022/lib/framework/dialog/dialog-outlet.event.mjs +0 -33
  45. package/esm2022/lib/framework/dialog/dialog-service.error.mjs +0 -27
  46. package/esm2022/lib/framework/dialog/dialog-service.mjs +0 -67
  47. package/esm2022/lib/framework/dialog/dialog.config.mjs +0 -9
  48. package/esm2022/lib/framework/dialog/dialog.outlet.mjs +0 -94
  49. package/esm2022/lib/framework/dialog/index.mjs +0 -16
  50. package/esm2022/lib/framework/index.mjs +0 -6
  51. package/esm2022/lib/framework/logging/connector/console-log-connector.mjs +0 -48
  52. package/esm2022/lib/framework/logging/connector/default-log-connector.mjs +0 -34
  53. package/esm2022/lib/framework/logging/connector/html-log-connector.mjs +0 -177
  54. package/esm2022/lib/framework/logging/connector/index.mjs +0 -4
  55. package/esm2022/lib/framework/logging/impl/abstract-logger.mjs +0 -100
  56. package/esm2022/lib/framework/logging/impl/index.mjs +0 -3
  57. package/esm2022/lib/framework/logging/impl/log-impl.mjs +0 -31
  58. package/esm2022/lib/framework/logging/index.mjs +0 -4
  59. package/esm2022/lib/framework/logging/util/index.mjs +0 -4
  60. package/esm2022/lib/framework/logging/util/log.builder.mjs +0 -28
  61. package/esm2022/lib/framework/logging/util/log.constant.mjs +0 -24
  62. package/esm2022/lib/framework/logging/util/log.util.mjs +0 -142
  63. package/esm2022/lib/framework/mock/documentation/component/atx-mock-description/atx-mock-description.component.mjs +0 -27
  64. package/esm2022/lib/framework/mock/documentation/component/atx-mock-documentation/atx-mock-documentation.component.mjs +0 -77
  65. package/esm2022/lib/framework/mock/documentation/component/atx-mock-full-description/atx-mock-full-description.component.mjs +0 -27
  66. package/esm2022/lib/framework/mock/documentation/component/atx-mock-methods/atx-mock-methods.component.mjs +0 -71
  67. package/esm2022/lib/framework/mock/documentation/component/atx-mock-param/atx-mock-param.component.mjs +0 -27
  68. package/esm2022/lib/framework/mock/documentation/index.mjs +0 -2
  69. package/esm2022/lib/framework/mock/documentation/model/business/full-description.type.mjs +0 -9
  70. package/esm2022/lib/framework/mock/documentation/model/business/method-doc-descriptor.type.mjs +0 -9
  71. package/esm2022/lib/framework/mock/http/config/http-mock-parameters.mjs +0 -9
  72. package/esm2022/lib/framework/mock/http/config/http-mock.decorator.mjs +0 -48
  73. package/esm2022/lib/framework/mock/http/config/index.mjs +0 -3
  74. package/esm2022/lib/framework/mock/http/config/route-mock-config.mjs +0 -9
  75. package/esm2022/lib/framework/mock/http/core/data-storage.mjs +0 -9
  76. package/esm2022/lib/framework/mock/http/core/response-delay.mjs +0 -9
  77. package/esm2022/lib/framework/mock/http/event/event-target.impl.mjs +0 -136
  78. package/esm2022/lib/framework/mock/http/event/progress-event-mock.mjs +0 -48
  79. package/esm2022/lib/framework/mock/http/index.mjs +0 -4
  80. package/esm2022/lib/framework/mock/http/logging/http-mock-logger.mjs +0 -15
  81. package/esm2022/lib/framework/mock/http/logging/http-mock-logging-metadata.builder.mjs +0 -35
  82. package/esm2022/lib/framework/mock/http/path-to-regexp/constants.mjs +0 -111
  83. package/esm2022/lib/framework/mock/http/path-to-regexp/escape-to-regexp-string.mjs +0 -34
  84. package/esm2022/lib/framework/mock/http/path-to-regexp/get-flags.mjs +0 -28
  85. package/esm2022/lib/framework/mock/http/path-to-regexp/iter.mjs +0 -76
  86. package/esm2022/lib/framework/mock/http/path-to-regexp/lexer.mjs +0 -96
  87. package/esm2022/lib/framework/mock/http/path-to-regexp/loose-replacer.mjs +0 -28
  88. package/esm2022/lib/framework/mock/http/path-to-regexp/model/decode-key-to-string.mjs +0 -17
  89. package/esm2022/lib/framework/mock/http/path-to-regexp/model/encode.mjs +0 -17
  90. package/esm2022/lib/framework/mock/http/path-to-regexp/model/key.mjs +0 -17
  91. package/esm2022/lib/framework/mock/http/path-to-regexp/model/lex-token.mjs +0 -17
  92. package/esm2022/lib/framework/mock/http/path-to-regexp/model/lexer-type.mjs +0 -17
  93. package/esm2022/lib/framework/mock/http/path-to-regexp/model/loose-replacer-provider.mjs +0 -17
  94. package/esm2022/lib/framework/mock/http/path-to-regexp/model/non-delimiter-encoder-provider.mjs +0 -17
  95. package/esm2022/lib/framework/mock/http/path-to-regexp/model/parse-options.mjs +0 -17
  96. package/esm2022/lib/framework/mock/http/path-to-regexp/model/path-to-regexp-options.mjs +0 -17
  97. package/esm2022/lib/framework/mock/http/path-to-regexp/model/route-string-tokenizer.mjs +0 -17
  98. package/esm2022/lib/framework/mock/http/path-to-regexp/model/simple-tokens.mjs +0 -30
  99. package/esm2022/lib/framework/mock/http/path-to-regexp/model/token-data-regexp-factory.mjs +0 -17
  100. package/esm2022/lib/framework/mock/http/path-to-regexp/model/token-type.mjs +0 -17
  101. package/esm2022/lib/framework/mock/http/path-to-regexp/model/token.mjs +0 -17
  102. package/esm2022/lib/framework/mock/http/path-to-regexp/string-to-token-data.mjs +0 -87
  103. package/esm2022/lib/framework/mock/http/path-to-regexp/to-key-regexp.mjs +0 -41
  104. package/esm2022/lib/framework/mock/http/path-to-regexp/to-stringify.mjs +0 -29
  105. package/esm2022/lib/framework/mock/http/path-to-regexp/token-data-to-regexp.mjs +0 -49
  106. package/esm2022/lib/framework/mock/http/path-to-regexp/token-data.mjs +0 -33
  107. package/esm2022/lib/framework/mock/http/util/data-storage.builder.mjs +0 -37
  108. package/esm2022/lib/framework/mock/http/util/fetch-client-response-type.enum.mjs +0 -40
  109. package/esm2022/lib/framework/mock/http/util/fetch-client.builder.mjs +0 -52
  110. package/esm2022/lib/framework/mock/http/util/http-headers-mock.builder.mjs +0 -138
  111. package/esm2022/lib/framework/mock/http/util/http-headers.util.mjs +0 -71
  112. package/esm2022/lib/framework/mock/http/util/http-method-ref.enum.mjs +0 -60
  113. package/esm2022/lib/framework/mock/http/util/http-mock-max-delay.mjs +0 -12
  114. package/esm2022/lib/framework/mock/http/util/http-mock-response-delay.util.mjs +0 -33
  115. package/esm2022/lib/framework/mock/http/util/http-mock-response.builder.mjs +0 -141
  116. package/esm2022/lib/framework/mock/http/util/http-status-text-finder.mjs +0 -146
  117. package/esm2022/lib/framework/mock/http/util/http-status-text.enum.mjs +0 -260
  118. package/esm2022/lib/framework/mock/http/util/index.mjs +0 -8
  119. package/esm2022/lib/framework/mock/http/xhr/delegate-xhr.mjs +0 -372
  120. package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.impl.mjs +0 -30
  121. package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.mjs +0 -20
  122. package/esm2022/lib/framework/mock/http/xhr/index.mjs +0 -2
  123. package/esm2022/lib/framework/mock/http/xhr/xhr-base.mjs +0 -123
  124. package/esm2022/lib/framework/mock/http/xhr/xhr-proxy-impl.mjs +0 -178
  125. package/esm2022/lib/framework/mock/http-monitoring-console/component/abstract/log-renderer-base.mjs +0 -34
  126. package/esm2022/lib/framework/mock/http-monitoring-console/component/console-footer/console-footer.component.mjs +0 -29
  127. package/esm2022/lib/framework/mock/http-monitoring-console/component/console-menu/console-menu.component.mjs +0 -40
  128. package/esm2022/lib/framework/mock/http-monitoring-console/component/http-monitoring-console/http-monitoring-console.component.mjs +0 -62
  129. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/icon-renderer/icon-renderer.component.mjs +0 -62
  130. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer/json-viewer.component.mjs +0 -45
  131. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer-panel/json-viewer-panel.component.mjs +0 -35
  132. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/payload-renderer/payload-renderer.component.mjs +0 -70
  133. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/request-info-renderer/request-info-renderer.component.mjs +0 -43
  134. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/request-list-renderer/request-list-renderer.component.mjs +0 -116
  135. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-body-renderer/response-body-renderer.component.mjs +0 -89
  136. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-preview-renderer/response-preview-renderer.component.mjs +0 -115
  137. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/spinner/spinner.component.mjs +0 -22
  138. package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/timing-renderer/timing-renderer.component.mjs +0 -81
  139. package/esm2022/lib/framework/mock/http-monitoring-console/component/request-details/request-details.component.mjs +0 -91
  140. package/esm2022/lib/framework/mock/http-monitoring-console/connector/http-monitoring-console-log-connector.mjs +0 -59
  141. package/esm2022/lib/framework/mock/http-monitoring-console/index.mjs +0 -2
  142. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action-type.mjs +0 -40
  143. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action.mjs +0 -9
  144. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-json.mjs +0 -9
  145. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-is-imported-log.mjs +0 -14
  146. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-timeline-data.mjs +0 -9
  147. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-body-dto.mjs +0 -9
  148. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-header-dto.mjs +0 -9
  149. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log-metadata.dto.mjs +0 -9
  150. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log.dto.mjs +0 -9
  151. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request-metadata.dto.ts.mjs +0 -9
  152. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request.dto.mjs +0 -9
  153. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-response.dto.mjs +0 -9
  154. package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/hmfl.mjs +0 -9
  155. package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-log-io.service.mjs +0 -105
  156. package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.controller.mjs +0 -96
  157. package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-monitoring-console.state.mjs +0 -126
  158. package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-user-action.service.mjs +0 -40
  159. package/esm2022/lib/framework/mock/http-monitoring-console/util/console-body-type.mjs +0 -50
  160. package/esm2022/lib/framework/mock/http-monitoring-console/util/console-type-class.mjs +0 -45
  161. package/esm2022/lib/framework/mock/http-monitoring-console/util/data.util.mjs +0 -95
  162. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/body-converter.mjs +0 -40
  163. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/body-serializer.mjs +0 -58
  164. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/form-data-serializer.mjs +0 -33
  165. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/hmfl-builder.mjs +0 -27
  166. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/http-request-converter.mjs +0 -62
  167. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/http-response-converter.mjs +0 -50
  168. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-converter.mjs +0 -43
  169. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-headers-converter.mjs +0 -53
  170. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-message.util.mjs +0 -30
  171. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/log-metadata-converter.mjs +0 -45
  172. package/esm2022/lib/framework/mock/http-monitoring-console/util/io/request-metadata-converter.mjs +0 -47
  173. package/esm2022/lib/framework/mock/http-monitoring-console/util/size.util.mjs +0 -57
  174. package/esm2022/lib/framework/mock/http-monitoring-console/util/timeline.util.mjs +0 -28
  175. package/esm2022/lib/framework/mock/http-monitoring-console/util/url.util.mjs +0 -51
  176. package/esm2022/lib/model/business/index.mjs +0 -8
  177. package/esm2022/lib/model/business/lang/app-bridge-command.mjs +0 -9
  178. package/esm2022/lib/model/business/lang/destroyable.mjs +0 -9
  179. package/esm2022/lib/model/business/lang/identifiable.mjs +0 -9
  180. package/esm2022/lib/model/business/lang/index.mjs +0 -5
  181. package/esm2022/lib/model/business/lang/instantiable.mjs +0 -9
  182. package/esm2022/lib/model/business/logging/atx-logger-config.provider.mjs +0 -21
  183. package/esm2022/lib/model/business/logging/http-mock-logging-constant.enum.mjs +0 -34
  184. package/esm2022/lib/model/business/logging/index.mjs +0 -8
  185. package/esm2022/lib/model/business/logging/log-connector.mjs +0 -9
  186. package/esm2022/lib/model/business/logging/log-level.enum.mjs +0 -34
  187. package/esm2022/lib/model/business/logging/log.mjs +0 -9
  188. package/esm2022/lib/model/business/logging/logger-config.mjs +0 -9
  189. package/esm2022/lib/model/business/logging/logger.mjs +0 -2
  190. package/esm2022/lib/model/business/logging/transactional-logger.mjs +0 -9
  191. package/esm2022/lib/model/business/mock/http/config/http-mock-production-policy.enum.mjs +0 -27
  192. package/esm2022/lib/model/business/mock/http/config/http-mocking-framework-config.mjs +0 -9
  193. package/esm2022/lib/model/business/mock/http/config/http-mocking-framework-config.provider.mjs +0 -33
  194. package/esm2022/lib/model/business/mock/http/config/index.mjs +0 -4
  195. package/esm2022/lib/model/business/mock/http/fetch-client.mjs +0 -14
  196. package/esm2022/lib/model/business/mock/http/http-method-mock.mjs +0 -9
  197. package/esm2022/lib/model/business/mock/http/http-mock-config.mjs +0 -9
  198. package/esm2022/lib/model/business/mock/http/http-mock-endpoint-descriptor.mjs +0 -9
  199. package/esm2022/lib/model/business/mock/http/http-mock-endpoint.mjs +0 -9
  200. package/esm2022/lib/model/business/mock/http/http-mock-error.mjs +0 -9
  201. package/esm2022/lib/model/business/mock/http/http-mock-interceptor.mjs +0 -9
  202. package/esm2022/lib/model/business/mock/http/http-mock-method-descriptor.mjs +0 -9
  203. package/esm2022/lib/model/business/mock/http/http-mock-parameter-descriptor.mjs +0 -9
  204. package/esm2022/lib/model/business/mock/http/http-mock-request-metadata.mjs +0 -9
  205. package/esm2022/lib/model/business/mock/http/http-response-mock.mjs +0 -9
  206. package/esm2022/lib/model/business/mock/http/index.mjs +0 -15
  207. package/esm2022/lib/model/business/mock/http/logging/http-mock-logging-metadata.mjs +0 -9
  208. package/esm2022/lib/model/business/mock/http/logging/http-mock-logging-prefetch-metadata.mjs +0 -9
  209. package/esm2022/lib/model/business/mock/http/logging/index.mjs +0 -3
  210. package/esm2022/lib/model/business/mock/http/xhr-proxy.mjs +0 -9
  211. package/esm2022/lib/model/business/navigator/battery-manager.mjs +0 -9
  212. package/esm2022/lib/model/business/navigator/connection-type.mjs +0 -9
  213. package/esm2022/lib/model/business/navigator/effective-connection-type.mjs +0 -9
  214. package/esm2022/lib/model/business/navigator/index.mjs +0 -5
  215. package/esm2022/lib/model/business/navigator/network-information.mjs +0 -9
  216. package/esm2022/lib/model/business/subscription/index.mjs +0 -2
  217. package/esm2022/lib/model/business/subscription/subscription-manager.mjs +0 -9
  218. package/esm2022/lib/model/business/ui/dark-mode-config.mjs +0 -9
  219. package/esm2022/lib/model/business/ui/dark-mode-config.provider.mjs +0 -43
  220. package/esm2022/lib/model/business/ui/dark-mode.constant.mjs +0 -16
  221. package/esm2022/lib/model/business/ui/dropdown/dropdown-event-type.enum.mjs +0 -22
  222. package/esm2022/lib/model/business/ui/dropdown/dropdown-position.mjs +0 -9
  223. package/esm2022/lib/model/business/ui/dropdown/dropdown-state.mjs +0 -9
  224. package/esm2022/lib/model/business/ui/dropdown/dropdown.event.mjs +0 -27
  225. package/esm2022/lib/model/business/ui/dropdown/index.mjs +0 -6
  226. package/esm2022/lib/model/business/ui/dropdown/popover-state.mjs +0 -9
  227. package/esm2022/lib/model/business/ui/index.mjs +0 -8
  228. package/esm2022/lib/model/business/ui/layout/index.mjs +0 -6
  229. package/esm2022/lib/model/business/ui/layout/layout-constraints.mjs +0 -9
  230. package/esm2022/lib/model/business/ui/layout/layout-drag-event-type.enum.mjs +0 -26
  231. package/esm2022/lib/model/business/ui/layout/layout-drag.event.mjs +0 -23
  232. package/esm2022/lib/model/business/ui/layout/layout-region.error.mjs +0 -22
  233. package/esm2022/lib/model/business/ui/layout/layout-region.mjs +0 -35
  234. package/esm2022/lib/model/business/ui/scroll-behavior.type.mjs +0 -9
  235. package/esm2022/lib/model/business/ui/window/index.mjs +0 -5
  236. package/esm2022/lib/model/business/ui/window/window-feature-state.mjs +0 -22
  237. package/esm2022/lib/model/business/ui/window/window-init.mjs +0 -9
  238. package/esm2022/lib/model/business/ui/window/window-ref.mjs +0 -9
  239. package/esm2022/lib/model/business/ui/window/window-target.mjs +0 -34
  240. package/esm2022/lib/model/business/version/index.mjs +0 -5
  241. package/esm2022/lib/model/business/version/version-config.mjs +0 -9
  242. package/esm2022/lib/model/business/version/version-config.provider.mjs +0 -40
  243. package/esm2022/lib/model/business/version/version-manager.mjs +0 -10
  244. package/esm2022/lib/model/business/version/version.mjs +0 -10
  245. package/esm2022/lib/model/index.mjs +0 -3
  246. package/esm2022/lib/model/service/index.mjs +0 -6
  247. package/esm2022/lib/model/service/logging/index.mjs +0 -2
  248. package/esm2022/lib/model/service/logging/logger-service.mjs +0 -41
  249. package/esm2022/lib/model/service/mock/http/http-mock.service.mjs +0 -279
  250. package/esm2022/lib/model/service/mock/http/index.mjs +0 -3
  251. package/esm2022/lib/model/service/mock/http/logging/atx-http-mock-console.service.mjs +0 -92
  252. package/esm2022/lib/model/service/mock/http/logging/http-mock-logging-service.mjs +0 -117
  253. package/esm2022/lib/model/service/mock/http/logging/index.mjs +0 -3
  254. package/esm2022/lib/model/service/subscription/subscription.service.mjs +0 -30
  255. package/esm2022/lib/model/service/ui/app-bridge.service.mjs +0 -142
  256. package/esm2022/lib/model/service/ui/dark-mode.service.mjs +0 -183
  257. package/esm2022/lib/model/service/ui/index.mjs +0 -5
  258. package/esm2022/lib/model/service/ui/scroll.service.mjs +0 -93
  259. package/esm2022/lib/model/service/ui/window/abstract-window.service.mjs +0 -49
  260. package/esm2022/lib/model/service/ui/window/index.mjs +0 -3
  261. package/esm2022/lib/model/service/ui/window/window.service.mjs +0 -103
  262. package/esm2022/lib/model/service/version/angular-toolbox-version.service.mjs +0 -37
  263. package/esm2022/lib/model/service/version/index.mjs +0 -3
  264. package/esm2022/lib/model/service/version/version.service.mjs +0 -35
  265. package/esm2022/lib/pipe/index.mjs +0 -2
  266. package/esm2022/lib/pipe/safe/safe-html.pipe.mjs +0 -34
  267. package/esm2022/lib/util/aria-role.constant.mjs +0 -16
  268. package/esm2022/lib/util/default-scroll-behavior.mjs +0 -13
  269. package/esm2022/lib/util/empty-string.const.mjs +0 -12
  270. package/esm2022/lib/util/http-mocking-framework-config.manager.mjs +0 -129
  271. package/esm2022/lib/util/index.mjs +0 -6
  272. package/esm2022/lib/util/js-type.mjs +0 -40
  273. package/esm2022/lib/util/uuid.mjs +0 -126
  274. package/esm2022/lib/util/version.util.mjs +0 -44
  275. package/esm2022/lib/util/window/window-features-builder.mjs +0 -90
  276. package/esm2022/lib/util/window/window-header-tag-util.mjs +0 -42
  277. 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