@colijnit/corecomponents_v12 12.2.25 → 12.2.26

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 (1277) hide show
  1. package/README.md +9 -12
  2. package/bundles/colijnit-corecomponents_v12.umd.js +14046 -0
  3. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -0
  4. package/colijnit-corecomponents_v12.d.ts +43 -0
  5. package/colijnit-corecomponents_v12.metadata.json +1 -0
  6. package/esm2015/colijnit-corecomponents_v12.js +44 -0
  7. package/esm2015/lib/components/article-tile/article-tile.component.js +80 -0
  8. package/esm2015/lib/components/article-tile/article-tile.module.js +35 -0
  9. package/esm2015/lib/components/base/base-input.component.js +834 -0
  10. package/esm2015/lib/components/base/base.module.js +22 -0
  11. package/esm2015/lib/components/base/commit-buttons/commit-buttons.component.js +103 -0
  12. package/esm2015/lib/components/base/commit-buttons/commit-buttons.module.js +21 -0
  13. package/esm2015/lib/components/base/dialog-base.component.js +6 -0
  14. package/esm2015/lib/components/base-input-date-picker/base-input-date-picker.directive.js +25 -0
  15. package/esm2015/lib/components/button/button.component.js +79 -0
  16. package/esm2015/lib/components/button/button.module.js +19 -0
  17. package/esm2015/lib/components/calendar/calendar-template.component.js +342 -0
  18. package/esm2015/lib/components/calendar/calendar.component.js +45 -0
  19. package/esm2015/lib/components/calendar/calendar.module.js +28 -0
  20. package/esm2015/lib/components/card/card.component.js +72 -0
  21. package/esm2015/lib/components/card/card.module.js +35 -0
  22. package/esm2015/lib/components/carousel/carousel.component.js +130 -0
  23. package/esm2015/lib/components/carousel/carousel.module.js +32 -0
  24. package/esm2015/lib/components/carousel-3d/carousel-3d.component.js +315 -0
  25. package/esm2015/lib/components/carousel-3d/carousel-3d.module.js +19 -0
  26. package/esm2015/lib/components/carousel-3d/carouselItem.js +54 -0
  27. package/esm2015/lib/components/checkmark-overlay/checkmark-overlay.component.js +87 -0
  28. package/esm2015/lib/components/checkmark-overlay/checkmark-overlay.module.js +19 -0
  29. package/esm2015/lib/components/co-dialog/co-dialog.component.js +113 -0
  30. package/esm2015/lib/components/co-dialog/co-dialog.module.js +19 -0
  31. package/esm2015/lib/components/co-dialog-wizard/co-dialog-wizard.component.js +51 -0
  32. package/esm2015/lib/components/co-dialog-wizard/co-dialog-wizard.module.js +17 -0
  33. package/esm2015/lib/components/collapsible/collapsible.component.js +92 -0
  34. package/esm2015/lib/components/collapsible/collapsible.module.js +19 -0
  35. package/esm2015/lib/components/color-picker/color-picker.component.js +41 -0
  36. package/esm2015/lib/components/color-picker/color-picker.module.js +21 -0
  37. package/esm2015/lib/components/core-dialog/confirmation-dialog/confirmation-dialog.component.js +79 -0
  38. package/esm2015/lib/components/core-dialog/core-dialog.module.js +39 -0
  39. package/esm2015/lib/components/core-dialog/core-dialog.service.js +67 -0
  40. package/esm2015/lib/components/core-dialog/core-dynamic-component.service.js +93 -0
  41. package/esm2015/lib/components/double-calendar/double-calendar.component.js +80 -0
  42. package/esm2015/lib/components/double-calendar/double-calendar.module.js +25 -0
  43. package/esm2015/lib/components/filter-item/filter-item-viewmodel.js +13 -0
  44. package/esm2015/lib/components/filter-item/filter-item.component.js +646 -0
  45. package/esm2015/lib/components/filter-item/filter-item.module.js +43 -0
  46. package/esm2015/lib/components/filter-item/filter-viewmodel.js +11 -0
  47. package/esm2015/lib/components/form/form.component.js +184 -0
  48. package/esm2015/lib/components/form/form.module.js +23 -0
  49. package/esm2015/lib/components/grid-toolbar/grid-toolbar.component.js +57 -0
  50. package/esm2015/lib/components/grid-toolbar/grid-toolbar.module.js +23 -0
  51. package/esm2015/lib/components/grid-toolbar-button/grid-toolbar-button.component.js +28 -0
  52. package/esm2015/lib/components/grid-toolbar-button/grid-toolbar-button.module.js +19 -0
  53. package/esm2015/lib/components/icon/icon-cache.service.js +52 -0
  54. package/esm2015/lib/components/icon/icon.component.js +48 -0
  55. package/esm2015/lib/components/icon/icon.module.js +25 -0
  56. package/esm2015/lib/components/icon-collapse-handle/icon-collapse-handle.component.js +64 -0
  57. package/esm2015/lib/components/icon-collapse-handle/icon-collapse-handle.module.js +23 -0
  58. package/esm2015/lib/components/image/image.component.js +42 -0
  59. package/esm2015/lib/components/image/image.module.js +14 -0
  60. package/esm2015/lib/components/input-checkbox/input-checkbox.component.js +79 -0
  61. package/esm2015/lib/components/input-checkbox/input-checkbox.module.js +19 -0
  62. package/esm2015/lib/components/input-date-picker/input-date-picker.component.js +91 -0
  63. package/esm2015/lib/components/input-date-picker/input-date-picker.module.js +26 -0
  64. package/esm2015/lib/components/input-date-range-picker/input-date-range-picker.component.js +134 -0
  65. package/esm2015/lib/components/input-date-range-picker/input-date-range-picker.module.js +27 -0
  66. package/esm2015/lib/components/input-number-picker/input-number-picker.component.js +314 -0
  67. package/esm2015/lib/components/input-number-picker/input-number-picker.module.js +23 -0
  68. package/esm2015/lib/components/input-radio-button/input-radio-button.component.js +84 -0
  69. package/esm2015/lib/components/input-radio-button/input-radio-button.module.js +19 -0
  70. package/esm2015/lib/components/input-scanner/bar-code-scanner.js +23 -0
  71. package/esm2015/lib/components/input-scanner/input-scanner.component.js +72 -0
  72. package/esm2015/lib/components/input-scanner/input-scanner.module.js +21 -0
  73. package/esm2015/lib/components/input-scanner/scanner.service.js +28 -0
  74. package/esm2015/lib/components/input-search/input-search.component.js +79 -0
  75. package/esm2015/lib/components/input-search/input-search.module.js +21 -0
  76. package/esm2015/lib/components/input-text/input-text.component.js +239 -0
  77. package/esm2015/lib/components/input-text/input-text.module.js +33 -0
  78. package/esm2015/lib/components/input-textarea/input-textarea.component.js +78 -0
  79. package/esm2015/lib/components/input-textarea/input-textarea.module.js +27 -0
  80. package/esm2015/lib/components/level-indicator/level-indicator-level.enum.js +7 -0
  81. package/esm2015/lib/components/level-indicator/level-indicator.component.js +36 -0
  82. package/esm2015/lib/components/level-indicator/level-indicator.module.js +15 -0
  83. package/esm2015/lib/components/list-of-values/list-of-values-multiselect-popup.component.js +112 -0
  84. package/esm2015/lib/components/list-of-values/list-of-values-popup.component.js +242 -0
  85. package/esm2015/lib/components/list-of-values/list-of-values.component.js +233 -0
  86. package/esm2015/lib/components/list-of-values/list-of-values.module.js +38 -0
  87. package/esm2015/lib/components/loader/loader.component.js +84 -0
  88. package/esm2015/lib/components/loader/loader.module.js +19 -0
  89. package/esm2015/lib/components/pagination/paginate.pipe.js +99 -0
  90. package/esm2015/lib/components/pagination/pagination-instance.js +2 -0
  91. package/esm2015/lib/components/pagination/pagination.component.js +126 -0
  92. package/esm2015/lib/components/pagination/pagination.module.js +28 -0
  93. package/esm2015/lib/components/pagination/pagination.service.js +88 -0
  94. package/esm2015/lib/components/pagination-bar/pagination-bar.component.js +151 -0
  95. package/esm2015/lib/components/pagination-bar/pagination-bar.module.js +19 -0
  96. package/esm2015/lib/components/popup/const/popup-window-token.js +3 -0
  97. package/esm2015/lib/components/popup/interface/popup-button.js +8 -0
  98. package/esm2015/lib/components/popup/interface/popup-close-event.js +2 -0
  99. package/esm2015/lib/components/popup/interface/popup-settings.js +42 -0
  100. package/esm2015/lib/components/popup/interface/popup.js +2 -0
  101. package/esm2015/lib/components/popup/model/popup-button-globals.js +11 -0
  102. package/esm2015/lib/components/popup/model/popup-window.js +38 -0
  103. package/esm2015/lib/components/popup/popup-buttons.component.js +53 -0
  104. package/esm2015/lib/components/popup/popup-message-display.component.js +47 -0
  105. package/esm2015/lib/components/popup/popup-window-shell.component.js +159 -0
  106. package/esm2015/lib/components/popup/popup.module.js +49 -0
  107. package/esm2015/lib/components/popup/service/popup-shower.service.js +90 -0
  108. package/esm2015/lib/components/popup/service/prompt.service.js +127 -0
  109. package/esm2015/lib/components/popup/text-input-popup.component.js +36 -0
  110. package/esm2015/lib/components/responsive-text/responsive-text.component.js +24 -0
  111. package/esm2015/lib/components/responsive-text/responsive-text.module.js +19 -0
  112. package/esm2015/lib/components/simple-grid/base-simple-grid.component.js +164 -0
  113. package/esm2015/lib/components/simple-grid/simple-grid-cell.component.js +172 -0
  114. package/esm2015/lib/components/simple-grid/simple-grid-column.directive.js +111 -0
  115. package/esm2015/lib/components/simple-grid/simple-grid.component.js +465 -0
  116. package/esm2015/lib/components/simple-grid/simple-grid.module.js +41 -0
  117. package/esm2015/lib/components/tile/tile.component.js +73 -0
  118. package/esm2015/lib/components/tile/tile.module.js +23 -0
  119. package/esm2015/lib/components/tile-select/tile-select.component.js +36 -0
  120. package/esm2015/lib/components/tile-select/tile-select.module.js +21 -0
  121. package/esm2015/lib/components/tooltip/tooltip.component.js +77 -0
  122. package/esm2015/lib/components/tooltip/tooltip.module.js +19 -0
  123. package/esm2015/lib/components/validation-error/validation-error.component.js +38 -0
  124. package/esm2015/lib/components/validation-error/validation-error.module.js +25 -0
  125. package/esm2015/lib/components/view-mode-buttons/content-view-mode.enum.js +11 -0
  126. package/esm2015/lib/components/view-mode-buttons/view-mode-buttons.component.js +61 -0
  127. package/esm2015/lib/components/view-mode-buttons/view-mode-buttons.module.js +21 -0
  128. package/esm2015/lib/core/constant/default-upper-bound-for-range-components.js +4 -0
  129. package/esm2015/lib/core/constant/java-max-int.js +2 -0
  130. package/esm2015/lib/core/constant/number-inputs-key-down-white-list.js +45 -0
  131. package/esm2015/lib/core/decorator/input-boolean.decorator.js +34 -0
  132. package/esm2015/lib/core/enum/co-direction.js +9 -0
  133. package/esm2015/lib/core/enum/co-document-image-display-kind.enum.js +7 -0
  134. package/esm2015/lib/core/enum/co-document-type.enum.js +11 -0
  135. package/esm2015/lib/core/enum/co-orientation.js +17 -0
  136. package/esm2015/lib/core/enum/core-components-icon.enum.js +300 -0
  137. package/esm2015/lib/core/enum/file-type-internal.enum.js +17 -0
  138. package/esm2015/lib/core/enum/file-type.enum.js +11 -0
  139. package/esm2015/lib/core/enum/filterItem-mode.enum.js +43 -0
  140. package/esm2015/lib/core/enum/input-number-picker-show-mode.enum.js +8 -0
  141. package/esm2015/lib/core/enum/keyboard-code.enum.js +74 -0
  142. package/esm2015/lib/core/enum/keyboard-key.enum.js +76 -0
  143. package/esm2015/lib/core/enum/object-right-type.enum.js +7 -0
  144. package/esm2015/lib/core/enum/popup-button-type.enum.js +12 -0
  145. package/esm2015/lib/core/enum/popup-type.enum.js +11 -0
  146. package/esm2015/lib/core/enum/table-name.enum.js +81 -0
  147. package/esm2015/lib/core/function/any-nill.function.js +6 -0
  148. package/esm2015/lib/core/function/is-nill.function.js +5 -0
  149. package/esm2015/lib/core/function/none-nill.function.js +17 -0
  150. package/esm2015/lib/core/function/not-nill.function.js +5 -0
  151. package/esm2015/lib/core/model/bounds-constrained-number-value.js +171 -0
  152. package/esm2015/lib/core/model/check-precision-and-scale-result.js +2 -0
  153. package/esm2015/lib/core/model/check-within-stepped-bounds-result.js +2 -0
  154. package/esm2015/lib/core/model/co-document-right.bo.js +3 -0
  155. package/esm2015/lib/core/model/co-document.bo.js +121 -0
  156. package/esm2015/lib/core/model/core-components-icon-svg.js +299 -0
  157. package/esm2015/lib/core/model/element-position.js +10 -0
  158. package/esm2015/lib/core/model/event/string-prompt-result-event.js +8 -0
  159. package/esm2015/lib/core/service/form-input-user-change-listener.service.js +25 -0
  160. package/esm2015/lib/core/service/form-master.service.js +102 -0
  161. package/esm2015/lib/core/service/ng-zone-wrapper.service.js +20 -0
  162. package/esm2015/lib/core/utils/array-utils.js +264 -0
  163. package/esm2015/lib/core/utils/browser-utils.js +100 -0
  164. package/esm2015/lib/core/utils/direction-enum-utils.js +14 -0
  165. package/esm2015/lib/core/utils/event-utils.js +53 -0
  166. package/esm2015/lib/core/utils/file-utils.js +267 -0
  167. package/esm2015/lib/core/utils/number-utils.js +309 -0
  168. package/esm2015/lib/core/utils/object-utils.js +186 -0
  169. package/esm2015/lib/core/utils/string-utils.js +94 -0
  170. package/esm2015/lib/core/validator/email.validator.js +6 -0
  171. package/esm2015/lib/core/validator/equal.validator.js +11 -0
  172. package/esm2015/lib/core/validator/max-string-length.validator.js +10 -0
  173. package/esm2015/lib/core/validator/password.validator.js +31 -0
  174. package/esm2015/lib/core/validator/precision-scale.validator.js +11 -0
  175. package/esm2015/lib/core/validator/required.validator.js +5 -0
  176. package/esm2015/lib/directives/clickoutside/click-outside-master.service.js +57 -0
  177. package/esm2015/lib/directives/clickoutside/click-outside.directive.js +71 -0
  178. package/esm2015/lib/directives/clickoutside/clickoutside.module.js +19 -0
  179. package/esm2015/lib/directives/observe-visibility/observe-visibility.directive.js +53 -0
  180. package/esm2015/lib/directives/observe-visibility/observe-visibility.module.js +15 -0
  181. package/esm2015/lib/directives/overlay/overlay-parent.directive.js +19 -0
  182. package/esm2015/lib/directives/overlay/overlay.directive.js +161 -0
  183. package/esm2015/lib/directives/overlay/overlay.module.js +18 -0
  184. package/esm2015/lib/directives/ripple/ripple-ref.js +26 -0
  185. package/esm2015/lib/directives/ripple/ripple-renderer.js +160 -0
  186. package/esm2015/lib/directives/ripple/ripple.directive.js +80 -0
  187. package/esm2015/lib/directives/ripple/ripple.module.js +24 -0
  188. package/esm2015/lib/directives/ripple/scroll-dispatcher.service.js +108 -0
  189. package/esm2015/lib/directives/ripple/scrollable.directive.js +40 -0
  190. package/esm2015/lib/directives/ripple/viewport-ruler.service.js +73 -0
  191. package/esm2015/lib/directives/screen-configuration/screen-configuration.directive.js +158 -0
  192. package/esm2015/lib/directives/screen-configuration/screen-configuration.module.js +19 -0
  193. package/esm2015/lib/directives/stopclick/stop-click.directive.js +38 -0
  194. package/esm2015/lib/directives/stopclick/stop-click.module.js +15 -0
  195. package/esm2015/lib/directives/template-wrapper/template-wrapper.directive.js +68 -0
  196. package/esm2015/lib/directives/template-wrapper/template-wrapper.module.js +15 -0
  197. package/esm2015/lib/directives/tooltip/tooltip-directive.module.js +19 -0
  198. package/esm2015/lib/directives/tooltip/tooltip.directive.js +78 -0
  199. package/esm2015/lib/interfaces/dialog-response.interface.js +2 -0
  200. package/esm2015/lib/interfaces/scanner-input.interface.js +2 -0
  201. package/esm2015/lib/interfaces/screen-config-adapter-component-interface-name.js +4 -0
  202. package/esm2015/lib/interfaces/screen-config-adapter.component.interface.js +2 -0
  203. package/esm2015/lib/model/enum/app-button-type.enum.js +11 -0
  204. package/esm2015/lib/model/enum/app-popup-type.enum.js +8 -0
  205. package/esm2015/lib/pipes/append.pipe.js +17 -0
  206. package/esm2015/lib/pipes/append.pipe.module.js +15 -0
  207. package/esm2015/lib/pipes/filter.pipe.js +16 -0
  208. package/esm2015/lib/pipes/filter.pipe.module.js +15 -0
  209. package/esm2015/lib/pipes/prepend.pipe.js +17 -0
  210. package/esm2015/lib/pipes/prepend.pipe.module.js +15 -0
  211. package/esm2015/lib/pipes/price-display-pipe.module.js +15 -0
  212. package/esm2015/lib/pipes/price-display.pipe.js +20 -0
  213. package/esm2015/lib/service/base-module-screen-config.service.js +205 -0
  214. package/esm2015/lib/service/base-module.service.js +42 -0
  215. package/esm2015/lib/service/color-sequence.service.js +23 -0
  216. package/esm2015/lib/service/overlay.service.js +73 -0
  217. package/esm2015/lib/translation/core-components-translation.module.js +29 -0
  218. package/esm2015/lib/translation/core-components-translation.service.js +17 -0
  219. package/esm2015/lib/translation/core-dictionary.service.js +29 -0
  220. package/esm2015/lib/translation/core-localize.pipe.js +26 -0
  221. package/esm2015/public-api.js +130 -0
  222. package/fesm2015/colijnit-corecomponents_v12.js +13387 -0
  223. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -0
  224. package/lib/components/article-tile/article-tile.component.d.ts +22 -0
  225. package/lib/components/article-tile/article-tile.module.d.ts +2 -0
  226. package/lib/components/base/base-input.component.d.ts +182 -0
  227. package/lib/components/base/base.module.d.ts +2 -0
  228. package/lib/components/base/commit-buttons/commit-buttons.component.d.ts +21 -0
  229. package/lib/components/base/commit-buttons/commit-buttons.module.d.ts +2 -0
  230. package/lib/components/base/dialog-base.component.d.ts +4 -0
  231. package/lib/components/base-input-date-picker/base-input-date-picker.directive.d.ts +15 -0
  232. package/lib/components/button/button.component.d.ts +29 -0
  233. package/lib/components/button/button.module.d.ts +2 -0
  234. package/lib/components/calendar/calendar-template.component.d.ts +60 -0
  235. package/lib/components/calendar/calendar.component.d.ts +13 -0
  236. package/lib/components/calendar/calendar.module.d.ts +2 -0
  237. package/lib/components/card/card.component.d.ts +23 -0
  238. package/lib/components/card/card.module.d.ts +2 -0
  239. package/lib/components/carousel/carousel.component.d.ts +23 -0
  240. package/lib/components/carousel/carousel.module.d.ts +6 -0
  241. package/lib/components/carousel-3d/carousel-3d.component.d.ts +55 -0
  242. package/lib/components/carousel-3d/carousel-3d.module.d.ts +2 -0
  243. package/lib/components/carousel-3d/carouselItem.d.ts +13 -0
  244. package/lib/components/checkmark-overlay/checkmark-overlay.component.d.ts +17 -0
  245. package/lib/components/checkmark-overlay/checkmark-overlay.module.d.ts +2 -0
  246. package/lib/components/co-dialog/co-dialog.component.d.ts +23 -0
  247. package/lib/components/co-dialog/co-dialog.module.d.ts +2 -0
  248. package/lib/components/co-dialog-wizard/co-dialog-wizard.component.d.ts +9 -0
  249. package/lib/components/co-dialog-wizard/co-dialog-wizard.module.d.ts +2 -0
  250. package/lib/components/collapsible/collapsible.component.d.ts +22 -0
  251. package/lib/components/collapsible/collapsible.module.d.ts +2 -0
  252. package/lib/components/color-picker/color-picker.component.d.ts +6 -0
  253. package/lib/components/color-picker/color-picker.module.d.ts +2 -0
  254. package/lib/components/core-dialog/confirmation-dialog/confirmation-dialog.component.d.ts +20 -0
  255. package/lib/components/core-dialog/core-dialog.module.d.ts +4 -0
  256. package/lib/components/core-dialog/core-dialog.service.d.ts +15 -0
  257. package/lib/components/core-dialog/core-dynamic-component.service.d.ts +12 -0
  258. package/lib/components/double-calendar/double-calendar.component.d.ts +18 -0
  259. package/lib/components/double-calendar/double-calendar.module.d.ts +2 -0
  260. package/lib/components/filter-item/filter-item-viewmodel.d.ts +9 -0
  261. package/lib/components/filter-item/filter-item.component.d.ts +80 -0
  262. package/lib/components/filter-item/filter-item.module.d.ts +2 -0
  263. package/lib/components/filter-item/filter-viewmodel.d.ts +8 -0
  264. package/lib/components/form/form.component.d.ts +39 -0
  265. package/lib/components/form/form.module.d.ts +2 -0
  266. package/lib/components/grid-toolbar/grid-toolbar.component.d.ts +19 -0
  267. package/lib/components/grid-toolbar/grid-toolbar.module.d.ts +2 -0
  268. package/lib/components/grid-toolbar-button/grid-toolbar-button.component.d.ts +8 -0
  269. package/lib/components/grid-toolbar-button/grid-toolbar-button.module.d.ts +2 -0
  270. package/lib/components/icon/icon-cache.service.d.ts +20 -0
  271. package/lib/components/icon/icon.component.d.ts +17 -0
  272. package/lib/components/icon/icon.module.d.ts +2 -0
  273. package/lib/components/icon-collapse-handle/icon-collapse-handle.component.d.ts +21 -0
  274. package/lib/components/icon-collapse-handle/icon-collapse-handle.module.d.ts +2 -0
  275. package/lib/components/image/image.component.d.ts +20 -0
  276. package/lib/components/image/image.module.d.ts +2 -0
  277. package/lib/components/input-checkbox/input-checkbox.component.d.ts +24 -0
  278. package/lib/components/input-checkbox/input-checkbox.module.d.ts +2 -0
  279. package/lib/components/input-date-picker/input-date-picker.component.d.ts +12 -0
  280. package/lib/components/input-date-picker/input-date-picker.module.d.ts +2 -0
  281. package/lib/components/input-date-range-picker/input-date-range-picker.component.d.ts +20 -0
  282. package/lib/components/input-date-range-picker/input-date-range-picker.module.d.ts +2 -0
  283. package/lib/components/input-number-picker/input-number-picker.component.d.ts +73 -0
  284. package/lib/components/input-number-picker/input-number-picker.module.d.ts +2 -0
  285. package/lib/components/input-radio-button/input-radio-button.component.d.ts +19 -0
  286. package/lib/components/input-radio-button/input-radio-button.module.d.ts +2 -0
  287. package/lib/components/input-scanner/bar-code-scanner.d.ts +7 -0
  288. package/lib/components/input-scanner/input-scanner.component.d.ts +24 -0
  289. package/lib/components/input-scanner/input-scanner.module.d.ts +2 -0
  290. package/lib/components/input-scanner/scanner.service.d.ts +11 -0
  291. package/lib/components/input-search/input-search.component.d.ts +19 -0
  292. package/lib/components/input-search/input-search.module.d.ts +2 -0
  293. package/lib/components/input-text/input-text.component.d.ts +65 -0
  294. package/lib/components/input-text/input-text.module.d.ts +2 -0
  295. package/lib/components/input-textarea/input-textarea.component.d.ts +19 -0
  296. package/lib/components/input-textarea/input-textarea.module.d.ts +2 -0
  297. package/lib/components/level-indicator/level-indicator-level.enum.d.ts +5 -0
  298. package/lib/components/level-indicator/level-indicator.component.d.ts +10 -0
  299. package/lib/components/level-indicator/level-indicator.module.d.ts +2 -0
  300. package/lib/components/list-of-values/list-of-values-multiselect-popup.component.d.ts +25 -0
  301. package/lib/components/list-of-values/list-of-values-popup.component.d.ts +47 -0
  302. package/lib/components/list-of-values/list-of-values.component.d.ts +37 -0
  303. package/lib/components/list-of-values/list-of-values.module.d.ts +2 -0
  304. package/lib/components/loader/loader.component.d.ts +3 -0
  305. package/lib/components/loader/loader.module.d.ts +2 -0
  306. package/lib/components/pagination/paginate.pipe.d.ts +15 -0
  307. package/lib/components/pagination/pagination-instance.d.ts +14 -0
  308. package/lib/components/pagination/pagination.component.d.ts +38 -0
  309. package/lib/components/pagination/pagination.module.d.ts +2 -0
  310. package/lib/components/pagination/pagination.service.d.ts +24 -0
  311. package/lib/components/pagination-bar/pagination-bar.component.d.ts +33 -0
  312. package/lib/components/pagination-bar/pagination-bar.module.d.ts +2 -0
  313. package/lib/components/popup/const/popup-window-token.d.ts +3 -0
  314. package/lib/components/popup/interface/popup-button.d.ts +8 -0
  315. package/lib/components/popup/interface/popup-close-event.d.ts +5 -0
  316. package/lib/components/popup/interface/popup-settings.d.ts +21 -0
  317. package/lib/components/popup/interface/popup.d.ts +9 -0
  318. package/lib/components/popup/model/popup-button-globals.d.ts +9 -0
  319. package/lib/components/popup/model/popup-window.d.ts +21 -0
  320. package/lib/components/popup/popup-buttons.component.d.ts +13 -0
  321. package/lib/components/popup/popup-message-display.component.d.ts +12 -0
  322. package/lib/components/popup/popup-window-shell.component.d.ts +42 -0
  323. package/lib/components/popup/popup.module.d.ts +4 -0
  324. package/lib/components/popup/service/popup-shower.service.d.ts +17 -0
  325. package/lib/components/popup/service/prompt.service.d.ts +17 -0
  326. package/lib/components/popup/text-input-popup.component.d.ts +12 -0
  327. package/lib/components/responsive-text/responsive-text.component.d.ts +4 -0
  328. package/lib/components/responsive-text/responsive-text.module.d.ts +2 -0
  329. package/lib/components/simple-grid/base-simple-grid.component.d.ts +52 -0
  330. package/lib/components/simple-grid/simple-grid-cell.component.d.ts +30 -0
  331. package/lib/components/simple-grid/simple-grid-column.directive.d.ts +42 -0
  332. package/lib/components/simple-grid/simple-grid.component.d.ts +64 -0
  333. package/lib/components/simple-grid/simple-grid.module.d.ts +2 -0
  334. package/lib/components/tile/tile.component.d.ts +16 -0
  335. package/lib/components/tile/tile.module.d.ts +2 -0
  336. package/lib/components/tile-select/tile-select.component.d.ts +8 -0
  337. package/lib/components/tile-select/tile-select.module.d.ts +2 -0
  338. package/lib/components/tooltip/tooltip.component.d.ts +18 -0
  339. package/lib/components/tooltip/tooltip.module.d.ts +2 -0
  340. package/lib/components/validation-error/validation-error.component.d.ts +12 -0
  341. package/lib/components/validation-error/validation-error.module.d.ts +2 -0
  342. package/lib/components/view-mode-buttons/content-view-mode.enum.d.ts +8 -0
  343. package/lib/components/view-mode-buttons/view-mode-buttons.component.d.ts +17 -0
  344. package/lib/components/view-mode-buttons/view-mode-buttons.module.d.ts +2 -0
  345. package/lib/core/constant/default-upper-bound-for-range-components.d.ts +2 -0
  346. package/lib/core/constant/java-max-int.d.ts +1 -0
  347. package/lib/core/constant/number-inputs-key-down-white-list.d.ts +2 -0
  348. package/lib/core/decorator/input-boolean.decorator.d.ts +8 -0
  349. package/lib/core/enum/co-direction.d.ts +6 -0
  350. package/lib/core/enum/co-document-image-display-kind.enum.d.ts +5 -0
  351. package/lib/core/enum/co-document-type.enum.d.ts +5 -0
  352. package/lib/core/enum/co-orientation.d.ts +6 -0
  353. package/lib/core/enum/core-components-icon.enum.d.ts +298 -0
  354. package/lib/core/enum/file-type-internal.enum.d.ts +15 -0
  355. package/lib/core/enum/file-type.enum.d.ts +5 -0
  356. package/lib/core/enum/filterItem-mode.enum.d.ts +15 -0
  357. package/lib/core/enum/input-number-picker-show-mode.enum.d.ts +5 -0
  358. package/lib/core/enum/keyboard-code.enum.d.ts +71 -0
  359. package/lib/core/enum/keyboard-key.enum.d.ts +70 -0
  360. package/lib/core/enum/object-right-type.enum.d.ts +5 -0
  361. package/lib/core/enum/popup-button-type.enum.d.ts +9 -0
  362. package/lib/core/enum/popup-type.enum.d.ts +9 -0
  363. package/lib/core/enum/table-name.enum.d.ts +79 -0
  364. package/lib/core/function/any-nill.function.d.ts +1 -0
  365. package/lib/core/function/is-nill.function.d.ts +1 -0
  366. package/lib/core/function/none-nill.function.d.ts +1 -0
  367. package/lib/core/function/not-nill.function.d.ts +1 -0
  368. package/lib/core/model/bounds-constrained-number-value.d.ts +46 -0
  369. package/lib/core/model/check-precision-and-scale-result.d.ts +4 -0
  370. package/lib/core/model/check-within-stepped-bounds-result.d.ts +8 -0
  371. package/lib/core/model/co-document-right.bo.d.ts +6 -0
  372. package/lib/core/model/co-document.bo.d.ts +61 -0
  373. package/lib/core/model/core-components-icon-svg.d.ts +4 -0
  374. package/lib/core/model/element-position.d.ts +7 -0
  375. package/lib/core/model/event/string-prompt-result-event.d.ts +6 -0
  376. package/lib/core/service/form-input-user-change-listener.service.d.ts +10 -0
  377. package/lib/core/service/form-master.service.d.ts +26 -0
  378. package/lib/core/service/ng-zone-wrapper.service.d.ts +6 -0
  379. package/lib/core/utils/array-utils.d.ts +85 -0
  380. package/lib/core/utils/browser-utils.d.ts +15 -0
  381. package/lib/core/utils/direction-enum-utils.d.ts +5 -0
  382. package/lib/core/utils/event-utils.d.ts +12 -0
  383. package/lib/core/utils/file-utils.d.ts +29 -0
  384. package/lib/core/utils/number-utils.d.ts +89 -0
  385. package/lib/core/utils/object-utils.d.ts +31 -0
  386. package/lib/core/utils/string-utils.d.ts +25 -0
  387. package/lib/core/validator/email.validator.d.ts +2 -0
  388. package/lib/core/validator/equal.validator.d.ts +2 -0
  389. package/lib/core/validator/max-string-length.validator.d.ts +2 -0
  390. package/lib/core/validator/password.validator.d.ts +3 -0
  391. package/lib/core/validator/precision-scale.validator.d.ts +2 -0
  392. package/lib/core/validator/required.validator.d.ts +2 -0
  393. package/lib/directives/clickoutside/click-outside-master.service.d.ts +15 -0
  394. package/lib/directives/clickoutside/click-outside.directive.d.ts +18 -0
  395. package/lib/directives/clickoutside/clickoutside.module.d.ts +2 -0
  396. package/lib/directives/observe-visibility/observe-visibility.directive.d.ts +14 -0
  397. package/lib/directives/observe-visibility/observe-visibility.module.d.ts +2 -0
  398. package/lib/directives/overlay/overlay-parent.directive.d.ts +6 -0
  399. package/lib/directives/overlay/overlay.directive.d.ts +25 -0
  400. package/lib/directives/overlay/overlay.module.d.ts +2 -0
  401. package/lib/directives/ripple/ripple-ref.d.ts +21 -0
  402. package/lib/directives/ripple/ripple-renderer.d.ts +56 -0
  403. package/lib/directives/ripple/ripple.directive.d.ts +56 -0
  404. package/lib/directives/ripple/ripple.module.d.ts +2 -0
  405. package/lib/directives/ripple/scroll-dispatcher.service.d.ts +51 -0
  406. package/lib/directives/ripple/scrollable.directive.d.ts +20 -0
  407. package/lib/directives/ripple/viewport-ruler.service.d.ts +29 -0
  408. package/lib/directives/screen-configuration/screen-configuration.directive.d.ts +32 -0
  409. package/lib/directives/screen-configuration/screen-configuration.module.d.ts +2 -0
  410. package/lib/directives/stopclick/stop-click.directive.d.ts +10 -0
  411. package/lib/directives/stopclick/stop-click.module.d.ts +2 -0
  412. package/lib/directives/template-wrapper/template-wrapper.directive.d.ts +13 -0
  413. package/lib/directives/template-wrapper/template-wrapper.module.d.ts +2 -0
  414. package/lib/directives/tooltip/tooltip-directive.module.d.ts +2 -0
  415. package/lib/directives/tooltip/tooltip.directive.d.ts +20 -0
  416. package/lib/interfaces/dialog-response.interface.d.ts +6 -0
  417. package/lib/interfaces/scanner-input.interface.d.ts +3 -0
  418. package/lib/interfaces/screen-config-adapter-component-interface-name.d.ts +3 -0
  419. package/lib/interfaces/screen-config-adapter.component.interface.d.ts +10 -0
  420. package/lib/model/enum/app-button-type.enum.d.ts +9 -0
  421. package/lib/model/enum/app-popup-type.enum.d.ts +6 -0
  422. package/lib/pipes/append.pipe.d.ts +4 -0
  423. package/lib/pipes/append.pipe.module.d.ts +2 -0
  424. package/lib/pipes/filter.pipe.d.ts +4 -0
  425. package/lib/pipes/filter.pipe.module.d.ts +2 -0
  426. package/lib/pipes/prepend.pipe.d.ts +4 -0
  427. package/lib/pipes/prepend.pipe.module.d.ts +2 -0
  428. package/lib/pipes/price-display-pipe.module.d.ts +2 -0
  429. package/lib/pipes/price-display.pipe.d.ts +4 -0
  430. package/lib/service/base-module-screen-config.service.d.ts +47 -0
  431. package/lib/service/base-module.service.d.ts +22 -0
  432. package/lib/service/color-sequence.service.d.ts +4 -0
  433. package/lib/service/overlay.service.d.ts +13 -0
  434. package/lib/translation/core-components-translation.module.d.ts +4 -0
  435. package/lib/translation/core-components-translation.service.d.ts +6 -0
  436. package/lib/translation/core-dictionary.service.d.ts +12 -0
  437. package/lib/translation/core-localize.pipe.d.ts +7 -0
  438. package/package.json +22 -43
  439. package/public-api.d.ts +126 -0
  440. package/.browserslistrc +0 -17
  441. package/.editorconfig +0 -16
  442. package/.idea/CoreComponents_v12.iml +0 -12
  443. package/.idea/misc.xml +0 -9
  444. package/.idea/modules.xml +0 -8
  445. package/.idea/vcs.xml +0 -6
  446. package/CoreComponents_v12.iml +0 -12
  447. package/angular.json +0 -149
  448. package/dist/corecomponentstest/favicon.ico +0 -0
  449. package/dist/corecomponentstest/index.html +0 -13
  450. package/dist/corecomponentstest/main.js +0 -24187
  451. package/dist/corecomponentstest/main.js.map +0 -1
  452. package/dist/corecomponentstest/polyfills.js +0 -2891
  453. package/dist/corecomponentstest/polyfills.js.map +0 -1
  454. package/dist/corecomponentstest/runtime.js +0 -161
  455. package/dist/corecomponentstest/runtime.js.map +0 -1
  456. package/dist/corecomponentstest/styles.css +0 -2926
  457. package/dist/corecomponentstest/styles.css.map +0 -1
  458. package/dist/corecomponentstest/vendor.js +0 -118790
  459. package/dist/corecomponentstest/vendor.js.map +0 -1
  460. package/karma.conf.js +0 -44
  461. package/move-assets.js +0 -14
  462. package/projects/corecomponents/README.md +0 -24
  463. package/projects/corecomponents/karma.conf.js +0 -44
  464. package/projects/corecomponents/ng-package.json +0 -10
  465. package/projects/corecomponents/package-lock.json +0 -13
  466. package/projects/corecomponents/package.json +0 -19
  467. package/projects/corecomponents/src/lib/components/article-tile/article-tile.component.ts +0 -95
  468. package/projects/corecomponents/src/lib/components/article-tile/article-tile.module.ts +0 -34
  469. package/projects/corecomponents/src/lib/components/base/base-input.component.ts +0 -988
  470. package/projects/corecomponents/src/lib/components/base/base.module.ts +0 -22
  471. package/projects/corecomponents/src/lib/components/base/commit-buttons/commit-buttons.component.ts +0 -120
  472. package/projects/corecomponents/src/lib/components/base/commit-buttons/commit-buttons.module.ts +0 -19
  473. package/projects/corecomponents/src/lib/components/base/dialog-base.component.ts +0 -8
  474. package/projects/corecomponents/src/lib/components/base-input-date-picker/base-input-date-picker.directive.ts +0 -32
  475. package/projects/corecomponents/src/lib/components/base-input-time/base-input-time-directive.ts +0 -31
  476. package/projects/corecomponents/src/lib/components/button/button.component.ts +0 -117
  477. package/projects/corecomponents/src/lib/components/button/button.module.ts +0 -18
  478. package/projects/corecomponents/src/lib/components/calendar/calendar-template.component.ts +0 -392
  479. package/projects/corecomponents/src/lib/components/calendar/calendar.component.ts +0 -54
  480. package/projects/corecomponents/src/lib/components/calendar/calendar.module.ts +0 -26
  481. package/projects/corecomponents/src/lib/components/card/card.component.ts +0 -94
  482. package/projects/corecomponents/src/lib/components/card/card.module.ts +0 -34
  483. package/projects/corecomponents/src/lib/components/carousel/carousel.component.ts +0 -128
  484. package/projects/corecomponents/src/lib/components/carousel/carousel.module.ts +0 -28
  485. package/projects/corecomponents/src/lib/components/carousel-3d/carousel-3d.component.ts +0 -392
  486. package/projects/corecomponents/src/lib/components/carousel-3d/carousel-3d.module.ts +0 -17
  487. package/projects/corecomponents/src/lib/components/carousel-3d/carouselItem.ts +0 -77
  488. package/projects/corecomponents/src/lib/components/checkmark-overlay/checkmark-overlay.component.ts +0 -99
  489. package/projects/corecomponents/src/lib/components/checkmark-overlay/checkmark-overlay.module.ts +0 -18
  490. package/projects/corecomponents/src/lib/components/co-dialog/animation.ts +0 -2
  491. package/projects/corecomponents/src/lib/components/co-dialog/co-dialog.component.ts +0 -130
  492. package/projects/corecomponents/src/lib/components/co-dialog/co-dialog.module.ts +0 -17
  493. package/projects/corecomponents/src/lib/components/co-dialog-wizard/co-dialog-wizard.component.ts +0 -50
  494. package/projects/corecomponents/src/lib/components/co-dialog-wizard/co-dialog-wizard.module.ts +0 -15
  495. package/projects/corecomponents/src/lib/components/collapsible/collapsible.component.ts +0 -114
  496. package/projects/corecomponents/src/lib/components/collapsible/collapsible.module.ts +0 -17
  497. package/projects/corecomponents/src/lib/components/color-picker/color-picker.component.ts +0 -40
  498. package/projects/corecomponents/src/lib/components/color-picker/color-picker.module.ts +0 -19
  499. package/projects/corecomponents/src/lib/components/core-dialog/confirmation-dialog/confirmation-dialog.component.ts +0 -86
  500. package/projects/corecomponents/src/lib/components/core-dialog/core-dialog.module.ts +0 -37
  501. package/projects/corecomponents/src/lib/components/core-dialog/core-dialog.service.ts +0 -61
  502. package/projects/corecomponents/src/lib/components/core-dialog/core-dynamic-component.service.ts +0 -101
  503. package/projects/corecomponents/src/lib/components/double-calendar/double-calendar.component.ts +0 -102
  504. package/projects/corecomponents/src/lib/components/double-calendar/double-calendar.module.ts +0 -23
  505. package/projects/corecomponents/src/lib/components/filter-item/filter-item-viewmodel.ts +0 -20
  506. package/projects/corecomponents/src/lib/components/filter-item/filter-item.component.ts +0 -715
  507. package/projects/corecomponents/src/lib/components/filter-item/filter-item.module.ts +0 -42
  508. package/projects/corecomponents/src/lib/components/filter-item/filter-viewmodel.ts +0 -11
  509. package/projects/corecomponents/src/lib/components/form/form.component.ts +0 -211
  510. package/projects/corecomponents/src/lib/components/form/form.module.ts +0 -22
  511. package/projects/corecomponents/src/lib/components/grid-toolbar/grid-toolbar.component.ts +0 -62
  512. package/projects/corecomponents/src/lib/components/grid-toolbar/grid-toolbar.module.ts +0 -21
  513. package/projects/corecomponents/src/lib/components/grid-toolbar-button/grid-toolbar-button.component.ts +0 -28
  514. package/projects/corecomponents/src/lib/components/grid-toolbar-button/grid-toolbar-button.module.ts +0 -17
  515. package/projects/corecomponents/src/lib/components/icon/icon-cache.service.ts +0 -57
  516. package/projects/corecomponents/src/lib/components/icon/icon.component.ts +0 -54
  517. package/projects/corecomponents/src/lib/components/icon/icon.module.ts +0 -24
  518. package/projects/corecomponents/src/lib/components/icon-collapse-handle/icon-collapse-handle.component.ts +0 -75
  519. package/projects/corecomponents/src/lib/components/icon-collapse-handle/icon-collapse-handle.module.ts +0 -21
  520. package/projects/corecomponents/src/lib/components/image/image.component.ts +0 -51
  521. package/projects/corecomponents/src/lib/components/image/image.module.ts +0 -12
  522. package/projects/corecomponents/src/lib/components/input-checkbox/input-checkbox.component.ts +0 -85
  523. package/projects/corecomponents/src/lib/components/input-checkbox/input-checkbox.module.ts +0 -17
  524. package/projects/corecomponents/src/lib/components/input-date-picker/input-date-picker.component.ts +0 -103
  525. package/projects/corecomponents/src/lib/components/input-date-picker/input-date-picker.module.ts +0 -24
  526. package/projects/corecomponents/src/lib/components/input-date-range-picker/input-date-range-picker.component.ts +0 -155
  527. package/projects/corecomponents/src/lib/components/input-date-range-picker/input-date-range-picker.module.ts +0 -25
  528. package/projects/corecomponents/src/lib/components/input-number-picker/input-number-picker.component.ts +0 -378
  529. package/projects/corecomponents/src/lib/components/input-number-picker/input-number-picker.module.ts +0 -20
  530. package/projects/corecomponents/src/lib/components/input-radio-button/input-radio-button.component.ts +0 -86
  531. package/projects/corecomponents/src/lib/components/input-radio-button/input-radio-button.module.ts +0 -17
  532. package/projects/corecomponents/src/lib/components/input-scanner/bar-code-scanner.ts +0 -25
  533. package/projects/corecomponents/src/lib/components/input-scanner/input-scanner.component.ts +0 -89
  534. package/projects/corecomponents/src/lib/components/input-scanner/input-scanner.module.ts +0 -19
  535. package/projects/corecomponents/src/lib/components/input-scanner/scanner.service.ts +0 -28
  536. package/projects/corecomponents/src/lib/components/input-search/input-search.component.ts +0 -85
  537. package/projects/corecomponents/src/lib/components/input-search/input-search.module.ts +0 -20
  538. package/projects/corecomponents/src/lib/components/input-text/input-text.component.ts +0 -294
  539. package/projects/corecomponents/src/lib/components/input-text/input-text.module.ts +0 -31
  540. package/projects/corecomponents/src/lib/components/input-textarea/input-textarea.component.ts +0 -81
  541. package/projects/corecomponents/src/lib/components/input-textarea/input-textarea.module.ts +0 -25
  542. package/projects/corecomponents/src/lib/components/input-time/input-time.component.ts +0 -72
  543. package/projects/corecomponents/src/lib/components/input-time/input-time.module.ts +0 -22
  544. package/projects/corecomponents/src/lib/components/level-indicator/level-indicator-level.enum.ts +0 -5
  545. package/projects/corecomponents/src/lib/components/level-indicator/level-indicator.component.ts +0 -42
  546. package/projects/corecomponents/src/lib/components/level-indicator/level-indicator.module.ts +0 -13
  547. package/projects/corecomponents/src/lib/components/list-of-values/list-of-values-multiselect-popup.component.ts +0 -132
  548. package/projects/corecomponents/src/lib/components/list-of-values/list-of-values-popup.component.ts +0 -281
  549. package/projects/corecomponents/src/lib/components/list-of-values/list-of-values.component.ts +0 -257
  550. package/projects/corecomponents/src/lib/components/list-of-values/list-of-values.module.ts +0 -35
  551. package/projects/corecomponents/src/lib/components/loader/loader.component.ts +0 -82
  552. package/projects/corecomponents/src/lib/components/loader/loader.module.ts +0 -17
  553. package/projects/corecomponents/src/lib/components/pagination/paginate.pipe.ts +0 -116
  554. package/projects/corecomponents/src/lib/components/pagination/pagination-instance.ts +0 -18
  555. package/projects/corecomponents/src/lib/components/pagination/pagination.component.ts +0 -160
  556. package/projects/corecomponents/src/lib/components/pagination/pagination.module.ts +0 -26
  557. package/projects/corecomponents/src/lib/components/pagination/pagination.service.ts +0 -99
  558. package/projects/corecomponents/src/lib/components/pagination-bar/pagination-bar.component.ts +0 -178
  559. package/projects/corecomponents/src/lib/components/pagination-bar/pagination-bar.module.ts +0 -17
  560. package/projects/corecomponents/src/lib/components/popup/const/popup-window-token.ts +0 -4
  561. package/projects/corecomponents/src/lib/components/popup/interface/popup-button.ts +0 -14
  562. package/projects/corecomponents/src/lib/components/popup/interface/popup-close-event.ts +0 -8
  563. package/projects/corecomponents/src/lib/components/popup/interface/popup-settings.ts +0 -70
  564. package/projects/corecomponents/src/lib/components/popup/interface/popup.ts +0 -17
  565. package/projects/corecomponents/src/lib/components/popup/model/popup-button-globals.ts +0 -11
  566. package/projects/corecomponents/src/lib/components/popup/model/popup-window.ts +0 -51
  567. package/projects/corecomponents/src/lib/components/popup/popup-buttons.component.ts +0 -61
  568. package/projects/corecomponents/src/lib/components/popup/popup-message-display.component.ts +0 -49
  569. package/projects/corecomponents/src/lib/components/popup/popup-window-shell.component.ts +0 -222
  570. package/projects/corecomponents/src/lib/components/popup/popup.module.ts +0 -48
  571. package/projects/corecomponents/src/lib/components/popup/service/popup-shower.service.ts +0 -98
  572. package/projects/corecomponents/src/lib/components/popup/service/prompt.service.ts +0 -127
  573. package/projects/corecomponents/src/lib/components/popup/text-input-popup.component.ts +0 -36
  574. package/projects/corecomponents/src/lib/components/responsive-text/responsive-text.component.ts +0 -24
  575. package/projects/corecomponents/src/lib/components/responsive-text/responsive-text.module.ts +0 -17
  576. package/projects/corecomponents/src/lib/components/simple-grid/base-simple-grid.component.ts +0 -194
  577. package/projects/corecomponents/src/lib/components/simple-grid/simple-grid-cell.component.ts +0 -192
  578. package/projects/corecomponents/src/lib/components/simple-grid/simple-grid-column.directive.ts +0 -143
  579. package/projects/corecomponents/src/lib/components/simple-grid/simple-grid.component.ts +0 -489
  580. package/projects/corecomponents/src/lib/components/simple-grid/simple-grid.module.ts +0 -38
  581. package/projects/corecomponents/src/lib/components/tile/tile.component.ts +0 -71
  582. package/projects/corecomponents/src/lib/components/tile/tile.module.ts +0 -21
  583. package/projects/corecomponents/src/lib/components/tile-select/tile-select.component.ts +0 -36
  584. package/projects/corecomponents/src/lib/components/tile-select/tile-select.module.ts +0 -19
  585. package/projects/corecomponents/src/lib/components/tooltip/tooltip.component.ts +0 -96
  586. package/projects/corecomponents/src/lib/components/tooltip/tooltip.module.ts +0 -17
  587. package/projects/corecomponents/src/lib/components/validation-error/validation-error.component.ts +0 -45
  588. package/projects/corecomponents/src/lib/components/validation-error/validation-error.module.ts +0 -24
  589. package/projects/corecomponents/src/lib/components/view-mode-buttons/content-view-mode.enum.ts +0 -9
  590. package/projects/corecomponents/src/lib/components/view-mode-buttons/view-mode-buttons.component.ts +0 -63
  591. package/projects/corecomponents/src/lib/components/view-mode-buttons/view-mode-buttons.module.ts +0 -19
  592. package/projects/corecomponents/src/lib/core/abstract/collection-based-component.ts +0 -488
  593. package/projects/corecomponents/src/lib/core/config/device-environment.ts +0 -26
  594. package/projects/corecomponents/src/lib/core/constant/default-upper-bound-for-range-components.ts +0 -4
  595. package/projects/corecomponents/src/lib/core/constant/java-max-int.ts +0 -1
  596. package/projects/corecomponents/src/lib/core/constant/number-inputs-key-down-white-list.ts +0 -46
  597. package/projects/corecomponents/src/lib/core/decorator/input-boolean.decorator.ts +0 -35
  598. package/projects/corecomponents/src/lib/core/enum/co-direction.ts +0 -7
  599. package/projects/corecomponents/src/lib/core/enum/co-document-image-display-kind.enum.ts +0 -5
  600. package/projects/corecomponents/src/lib/core/enum/co-document-type.enum.ts +0 -9
  601. package/projects/corecomponents/src/lib/core/enum/co-orientation.ts +0 -18
  602. package/projects/corecomponents/src/lib/core/enum/collection-based-component-input-driver-prop.enum.ts +0 -10
  603. package/projects/corecomponents/src/lib/core/enum/color-sequence-name.enum.ts +0 -5
  604. package/projects/corecomponents/src/lib/core/enum/core-components-icon.enum.ts +0 -299
  605. package/projects/corecomponents/src/lib/core/enum/file-type-internal.enum.ts +0 -15
  606. package/projects/corecomponents/src/lib/core/enum/file-type.enum.ts +0 -9
  607. package/projects/corecomponents/src/lib/core/enum/filterItem-mode.enum.ts +0 -57
  608. package/projects/corecomponents/src/lib/core/enum/float-label-type.enum.ts +0 -5
  609. package/projects/corecomponents/src/lib/core/enum/input-number-picker-show-mode.enum.ts +0 -6
  610. package/projects/corecomponents/src/lib/core/enum/input-text-type.enum.ts +0 -4
  611. package/projects/corecomponents/src/lib/core/enum/keyboard-code.enum.ts +0 -72
  612. package/projects/corecomponents/src/lib/core/enum/keyboard-key.enum.ts +0 -78
  613. package/projects/corecomponents/src/lib/core/enum/logical-operator-type.enum.ts +0 -5
  614. package/projects/corecomponents/src/lib/core/enum/object-right-type.enum.ts +0 -5
  615. package/projects/corecomponents/src/lib/core/enum/popup-button-type.enum.ts +0 -10
  616. package/projects/corecomponents/src/lib/core/enum/popup-type.enum.ts +0 -9
  617. package/projects/corecomponents/src/lib/core/enum/schedule-view.enum.ts +0 -14
  618. package/projects/corecomponents/src/lib/core/enum/search-data-type.ts +0 -4
  619. package/projects/corecomponents/src/lib/core/enum/search-property-state.ts +0 -5
  620. package/projects/corecomponents/src/lib/core/enum/sort-data-type.ts +0 -6
  621. package/projects/corecomponents/src/lib/core/enum/sort-direction.ts +0 -9
  622. package/projects/corecomponents/src/lib/core/enum/table-name.enum.ts +0 -79
  623. package/projects/corecomponents/src/lib/core/enum/value-comparison-type.ts +0 -11
  624. package/projects/corecomponents/src/lib/core/function/any-nill.function.ts +0 -6
  625. package/projects/corecomponents/src/lib/core/function/is-nill.function.ts +0 -4
  626. package/projects/corecomponents/src/lib/core/function/none-nill.function.ts +0 -16
  627. package/projects/corecomponents/src/lib/core/function/not-nill.function.ts +0 -4
  628. package/projects/corecomponents/src/lib/core/interface/search-property.ts +0 -15
  629. package/projects/corecomponents/src/lib/core/interface/sort-property.ts +0 -16
  630. package/projects/corecomponents/src/lib/core/model/bounds-constrained-number-value.ts +0 -222
  631. package/projects/corecomponents/src/lib/core/model/check-precision-and-scale-result.ts +0 -5
  632. package/projects/corecomponents/src/lib/core/model/check-within-stepped-bounds-result.ts +0 -8
  633. package/projects/corecomponents/src/lib/core/model/co-document-right.bo.ts +0 -9
  634. package/projects/corecomponents/src/lib/core/model/co-document.bo.ts +0 -193
  635. package/projects/corecomponents/src/lib/core/model/color-sequence.ts +0 -39
  636. package/projects/corecomponents/src/lib/core/model/color.ts +0 -29
  637. package/projects/corecomponents/src/lib/core/model/core-components-icon-svg.ts +0 -299
  638. package/projects/corecomponents/src/lib/core/model/element-position.ts +0 -14
  639. package/projects/corecomponents/src/lib/core/model/event/number-prompt-result-event.ts +0 -10
  640. package/projects/corecomponents/src/lib/core/model/event/string-prompt-result-event.ts +0 -10
  641. package/projects/corecomponents/src/lib/core/model/numerical-range.ts +0 -19
  642. package/projects/corecomponents/src/lib/core/service/form-input-user-change-listener.service.ts +0 -31
  643. package/projects/corecomponents/src/lib/core/service/form-master.service.ts +0 -119
  644. package/projects/corecomponents/src/lib/core/service/ng-zone-wrapper.service.ts +0 -15
  645. package/projects/corecomponents/src/lib/core/utils/array-utils.spec.ts +0 -588
  646. package/projects/corecomponents/src/lib/core/utils/array-utils.ts +0 -301
  647. package/projects/corecomponents/src/lib/core/utils/browser-utils.ts +0 -123
  648. package/projects/corecomponents/src/lib/core/utils/business-object-utils.ts +0 -42
  649. package/projects/corecomponents/src/lib/core/utils/css-utils.ts +0 -276
  650. package/projects/corecomponents/src/lib/core/utils/direction-enum-utils.ts +0 -15
  651. package/projects/corecomponents/src/lib/core/utils/element-ref.utils.ts +0 -12
  652. package/projects/corecomponents/src/lib/core/utils/event-utils.ts +0 -61
  653. package/projects/corecomponents/src/lib/core/utils/file-utils.ts +0 -291
  654. package/projects/corecomponents/src/lib/core/utils/number-utils.spec.ts +0 -657
  655. package/projects/corecomponents/src/lib/core/utils/number-utils.ts +0 -350
  656. package/projects/corecomponents/src/lib/core/utils/object-utils.ts +0 -205
  657. package/projects/corecomponents/src/lib/core/utils/parameter-value-conversion-utils.ts +0 -116
  658. package/projects/corecomponents/src/lib/core/utils/search-utils.ts +0 -121
  659. package/projects/corecomponents/src/lib/core/utils/sort-utils.ts +0 -108
  660. package/projects/corecomponents/src/lib/core/utils/string-utils.ts +0 -100
  661. package/projects/corecomponents/src/lib/core/validator/email.validator.ts +0 -10
  662. package/projects/corecomponents/src/lib/core/validator/equal.validator.ts +0 -14
  663. package/projects/corecomponents/src/lib/core/validator/max-string-length.validator.ts +0 -11
  664. package/projects/corecomponents/src/lib/core/validator/password.validator.ts +0 -35
  665. package/projects/corecomponents/src/lib/core/validator/precision-scale.validator.ts +0 -14
  666. package/projects/corecomponents/src/lib/core/validator/required.validator.ts +0 -9
  667. package/projects/corecomponents/src/lib/directives/align-with/align-with.directive.ts +0 -158
  668. package/projects/corecomponents/src/lib/directives/align-with/align-with.module.ts +0 -13
  669. package/projects/corecomponents/src/lib/directives/clickoutside/click-outside-master.service.ts +0 -64
  670. package/projects/corecomponents/src/lib/directives/clickoutside/click-outside.directive.ts +0 -72
  671. package/projects/corecomponents/src/lib/directives/clickoutside/clickoutside.module.ts +0 -17
  672. package/projects/corecomponents/src/lib/directives/observe-visibility/observe-visibility.directive.ts +0 -55
  673. package/projects/corecomponents/src/lib/directives/observe-visibility/observe-visibility.module.ts +0 -13
  674. package/projects/corecomponents/src/lib/directives/overlay/overlay-parent.directive.ts +0 -20
  675. package/projects/corecomponents/src/lib/directives/overlay/overlay.directive.ts +0 -170
  676. package/projects/corecomponents/src/lib/directives/overlay/overlay.module.ts +0 -16
  677. package/projects/corecomponents/src/lib/directives/parsevalue/parse-value.directive.ts +0 -42
  678. package/projects/corecomponents/src/lib/directives/parsevalue/parse-value.module.ts +0 -13
  679. package/projects/corecomponents/src/lib/directives/resize/resize-detect.directive.ts +0 -54
  680. package/projects/corecomponents/src/lib/directives/resize/resize-detect.module.ts +0 -13
  681. package/projects/corecomponents/src/lib/directives/ripple/ripple-ref.ts +0 -28
  682. package/projects/corecomponents/src/lib/directives/ripple/ripple-renderer.ts +0 -217
  683. package/projects/corecomponents/src/lib/directives/ripple/ripple.directive.ts +0 -116
  684. package/projects/corecomponents/src/lib/directives/ripple/ripple.module.ts +0 -24
  685. package/projects/corecomponents/src/lib/directives/ripple/scroll-dispatcher.service.ts +0 -129
  686. package/projects/corecomponents/src/lib/directives/ripple/scrollable.directive.ts +0 -37
  687. package/projects/corecomponents/src/lib/directives/ripple/viewport-ruler.service.ts +0 -84
  688. package/projects/corecomponents/src/lib/directives/screen-configuration/screen-configuration.directive.ts +0 -170
  689. package/projects/corecomponents/src/lib/directives/screen-configuration/screen-configuration.module.ts +0 -16
  690. package/projects/corecomponents/src/lib/directives/stopclick/stop-click.directive.ts +0 -35
  691. package/projects/corecomponents/src/lib/directives/stopclick/stop-click.module.ts +0 -14
  692. package/projects/corecomponents/src/lib/directives/template-wrapper/template-wrapper.directive.ts +0 -71
  693. package/projects/corecomponents/src/lib/directives/template-wrapper/template-wrapper.module.ts +0 -13
  694. package/projects/corecomponents/src/lib/directives/tooltip/tooltip-directive.module.ts +0 -17
  695. package/projects/corecomponents/src/lib/directives/tooltip/tooltip.directive.ts +0 -94
  696. package/projects/corecomponents/src/lib/interfaces/dialog-response.interface.ts +0 -7
  697. package/projects/corecomponents/src/lib/interfaces/lov-options.component.interface.ts +0 -4
  698. package/projects/corecomponents/src/lib/interfaces/scanner-input.interface.ts +0 -3
  699. package/projects/corecomponents/src/lib/interfaces/screen-config-adapter-component-interface-name.ts +0 -6
  700. package/projects/corecomponents/src/lib/interfaces/screen-config-adapter.component.interface.ts +0 -10
  701. package/projects/corecomponents/src/lib/model/data-item.ts +0 -9
  702. package/projects/corecomponents/src/lib/model/enum/app-button-type.enum.ts +0 -9
  703. package/projects/corecomponents/src/lib/model/enum/app-popup-type.enum.ts +0 -6
  704. package/projects/corecomponents/src/lib/model/enum/currency-code.enum.ts +0 -7
  705. package/projects/corecomponents/src/lib/model/enum/language-code.enum.ts +0 -8
  706. package/projects/corecomponents/src/lib/model/map/currencies.map.ts +0 -6
  707. package/projects/corecomponents/src/lib/modules/drag-drop/drag-drop-container.component.ts +0 -115
  708. package/projects/corecomponents/src/lib/modules/drag-drop/drag-drop-container.css +0 -34
  709. package/projects/corecomponents/src/lib/modules/drag-drop/drag-drop-manager.service.ts +0 -414
  710. package/projects/corecomponents/src/lib/modules/drag-drop/drag-drop.module.ts +0 -20
  711. package/projects/corecomponents/src/lib/modules/drag-drop/draggable.directive.ts +0 -70
  712. package/projects/corecomponents/src/lib/modules/drag-drop/model/co-drag-event.ts +0 -5
  713. package/projects/corecomponents/src/lib/modules/drag-drop/model/co-drop-event.ts +0 -9
  714. package/projects/corecomponents/src/lib/modules/drag-drop/model/drag-drop-container-element.ts +0 -7
  715. package/projects/corecomponents/src/lib/modules/drag-drop/model/drag-drop-container.ts +0 -9
  716. package/projects/corecomponents/src/lib/modules/media-monitor/flex-layout-breakpoint.enum.ts +0 -5
  717. package/projects/corecomponents/src/lib/modules/media-monitor/media-monitor.module.ts +0 -14
  718. package/projects/corecomponents/src/lib/modules/media-monitor/media-monitor.service.ts +0 -36
  719. package/projects/corecomponents/src/lib/modules/pagination/paginate.pipe.ts +0 -116
  720. package/projects/corecomponents/src/lib/modules/pagination/pagination-instance.ts +0 -18
  721. package/projects/corecomponents/src/lib/modules/pagination/pagination.component.ts +0 -229
  722. package/projects/corecomponents/src/lib/modules/pagination/pagination.module.ts +0 -25
  723. package/projects/corecomponents/src/lib/modules/pagination/pagination.service.ts +0 -98
  724. package/projects/corecomponents/src/lib/pipes/append.pipe.module.ts +0 -13
  725. package/projects/corecomponents/src/lib/pipes/append.pipe.ts +0 -17
  726. package/projects/corecomponents/src/lib/pipes/co-currency-pipe.module.ts +0 -13
  727. package/projects/corecomponents/src/lib/pipes/co-currency.pipe.ts +0 -45
  728. package/projects/corecomponents/src/lib/pipes/emun-keys.pipe.ts +0 -20
  729. package/projects/corecomponents/src/lib/pipes/enum-keys-pipe.module.ts +0 -13
  730. package/projects/corecomponents/src/lib/pipes/file-type-image-pipe.module.ts +0 -13
  731. package/projects/corecomponents/src/lib/pipes/file-type-image.pipe.ts +0 -45
  732. package/projects/corecomponents/src/lib/pipes/filter.pipe.module.ts +0 -13
  733. package/projects/corecomponents/src/lib/pipes/filter.pipe.ts +0 -14
  734. package/projects/corecomponents/src/lib/pipes/master-pipe.module.ts +0 -13
  735. package/projects/corecomponents/src/lib/pipes/master.pipe.ts +0 -71
  736. package/projects/corecomponents/src/lib/pipes/prepend.pipe.module.ts +0 -13
  737. package/projects/corecomponents/src/lib/pipes/prepend.pipe.ts +0 -17
  738. package/projects/corecomponents/src/lib/pipes/price-display-pipe.module.ts +0 -14
  739. package/projects/corecomponents/src/lib/pipes/price-display.pipe.ts +0 -20
  740. package/projects/corecomponents/src/lib/pipes/safe-style.pipe.module.ts +0 -13
  741. package/projects/corecomponents/src/lib/pipes/safe-style.pipe.ts +0 -14
  742. package/projects/corecomponents/src/lib/pipes/ucfirst-pipe.module.ts +0 -13
  743. package/projects/corecomponents/src/lib/pipes/ucfirst.pipe.ts +0 -14
  744. package/projects/corecomponents/src/lib/service/base-module-screen-config.service.ts +0 -241
  745. package/projects/corecomponents/src/lib/service/base-module.service.ts +0 -50
  746. package/projects/corecomponents/src/lib/service/color-sequence.service.ts +0 -20
  747. package/projects/corecomponents/src/lib/service/overlay.service.ts +0 -81
  748. package/projects/corecomponents/src/lib/translation/core-components-translation.module.ts +0 -27
  749. package/projects/corecomponents/src/lib/translation/core-components-translation.service.ts +0 -15
  750. package/projects/corecomponents/src/lib/translation/core-dictionary.service.ts +0 -27
  751. package/projects/corecomponents/src/lib/translation/core-localize.pipe.ts +0 -21
  752. package/projects/corecomponents/src/public-api.ts +0 -137
  753. package/projects/corecomponents/src/res/icons/Barcode.svg +0 -1
  754. package/projects/corecomponents/src/res/icons/CashRegister.svg +0 -1
  755. package/projects/corecomponents/src/res/icons/CirclePlusSkinny.svg +0 -1
  756. package/projects/corecomponents/src/res/icons/CrossSkinny.svg +0 -1
  757. package/projects/corecomponents/src/res/icons/FolderArrow.svg +0 -1
  758. package/projects/corecomponents/src/res/icons/Home.svg +0 -1
  759. package/projects/corecomponents/src/res/icons/POS.svg +0 -1
  760. package/projects/corecomponents/src/res/icons/Shop.svg +0 -1
  761. package/projects/corecomponents/src/res/icons/SinglePerson.svg +0 -1
  762. package/projects/corecomponents/src/res/icons/Star.svg +0 -1
  763. package/projects/corecomponents/src/res/icons/TrashBin.svg +0 -1
  764. package/projects/corecomponents/src/res/icons/account.svg +0 -1
  765. package/projects/corecomponents/src/res/icons/account_round_open.svg +0 -1
  766. package/projects/corecomponents/src/res/icons/activities.svg +0 -1
  767. package/projects/corecomponents/src/res/icons/add_to_cart_drop.svg +0 -1
  768. package/projects/corecomponents/src/res/icons/arrow_down.svg +0 -1
  769. package/projects/corecomponents/src/res/icons/arrow_fat_left.svg +0 -1
  770. package/projects/corecomponents/src/res/icons/arrow_fat_right.svg +0 -1
  771. package/projects/corecomponents/src/res/icons/arrow_left.svg +0 -4
  772. package/projects/corecomponents/src/res/icons/arrow_left_round_open.svg +0 -1
  773. package/projects/corecomponents/src/res/icons/arrow_point_down.svg +0 -6
  774. package/projects/corecomponents/src/res/icons/arrow_point_left.svg +0 -8
  775. package/projects/corecomponents/src/res/icons/arrow_point_right.svg +0 -8
  776. package/projects/corecomponents/src/res/icons/arrow_point_up.svg +0 -8
  777. package/projects/corecomponents/src/res/icons/arrow_right_round_open.svg +0 -1
  778. package/projects/corecomponents/src/res/icons/arrow_scroll_down.svg +0 -6
  779. package/projects/corecomponents/src/res/icons/arrow_scroll_left.svg +0 -22
  780. package/projects/corecomponents/src/res/icons/arrow_scroll_right.svg +0 -22
  781. package/projects/corecomponents/src/res/icons/arrow_scroll_up.svg +0 -6
  782. package/projects/corecomponents/src/res/icons/arrow_up.svg +0 -3
  783. package/projects/corecomponents/src/res/icons/article.svg +0 -1
  784. package/projects/corecomponents/src/res/icons/article_with_fold.svg +0 -1
  785. package/projects/corecomponents/src/res/icons/asterisk_small.svg +0 -1
  786. package/projects/corecomponents/src/res/icons/attachments.svg +0 -1
  787. package/projects/corecomponents/src/res/icons/back_to_top.svg +0 -1
  788. package/projects/corecomponents/src/res/icons/big_mac.svg +0 -6
  789. package/projects/corecomponents/src/res/icons/boxes.svg +0 -1
  790. package/projects/corecomponents/src/res/icons/brush.svg +0 -1
  791. package/projects/corecomponents/src/res/icons/brush_round_open.svg +0 -1
  792. package/projects/corecomponents/src/res/icons/building_columns.svg +0 -1
  793. package/projects/corecomponents/src/res/icons/businessrules.svg +0 -1
  794. package/projects/corecomponents/src/res/icons/calendar.svg +0 -1
  795. package/projects/corecomponents/src/res/icons/calendar_day.svg +0 -37
  796. package/projects/corecomponents/src/res/icons/calendar_day_regular.svg +0 -1
  797. package/projects/corecomponents/src/res/icons/calendar_empty.svg +0 -16
  798. package/projects/corecomponents/src/res/icons/calendar_range.svg +0 -1
  799. package/projects/corecomponents/src/res/icons/calendar_round_open.svg +0 -16
  800. package/projects/corecomponents/src/res/icons/camera.svg +0 -1
  801. package/projects/corecomponents/src/res/icons/cancel.svg +0 -1
  802. package/projects/corecomponents/src/res/icons/cancel_round_filled.svg +0 -1
  803. package/projects/corecomponents/src/res/icons/cancel_round_open.svg +0 -1
  804. package/projects/corecomponents/src/res/icons/cart.svg +0 -1
  805. package/projects/corecomponents/src/res/icons/cart_open.svg +0 -8
  806. package/projects/corecomponents/src/res/icons/case_manager.svg +0 -1
  807. package/projects/corecomponents/src/res/icons/cash_register_simple.svg +0 -1
  808. package/projects/corecomponents/src/res/icons/change_location.svg +0 -1
  809. package/projects/corecomponents/src/res/icons/check.svg +0 -1
  810. package/projects/corecomponents/src/res/icons/check_duotone.svg +0 -1
  811. package/projects/corecomponents/src/res/icons/check_round.svg +0 -1
  812. package/projects/corecomponents/src/res/icons/check_round_open.svg +0 -10
  813. package/projects/corecomponents/src/res/icons/check_simple.svg +0 -3
  814. package/projects/corecomponents/src/res/icons/check_thin.svg +0 -1
  815. package/projects/corecomponents/src/res/icons/chevron_down_regular.svg +0 -1
  816. package/projects/corecomponents/src/res/icons/chevron_up_regular.svg +0 -1
  817. package/projects/corecomponents/src/res/icons/client.svg +0 -1
  818. package/projects/corecomponents/src/res/icons/clock.svg +0 -1
  819. package/projects/corecomponents/src/res/icons/clockArrow.svg +0 -1
  820. package/projects/corecomponents/src/res/icons/cogWheelPlus.svg +0 -1
  821. package/projects/corecomponents/src/res/icons/cogWheels.svg +0 -1
  822. package/projects/corecomponents/src/res/icons/column_options.svg +0 -18
  823. package/projects/corecomponents/src/res/icons/company.svg +0 -1
  824. package/projects/corecomponents/src/res/icons/company_flat.svg +0 -4
  825. package/projects/corecomponents/src/res/icons/configurable.svg +0 -1
  826. package/projects/corecomponents/src/res/icons/consultant.svg +0 -1
  827. package/projects/corecomponents/src/res/icons/copy.svg +0 -1
  828. package/projects/corecomponents/src/res/icons/crosshair_1.svg +0 -1
  829. package/projects/corecomponents/src/res/icons/dashboard.svg +0 -1
  830. package/projects/corecomponents/src/res/icons/delivery_method.svg +0 -32
  831. package/projects/corecomponents/src/res/icons/delivery_status_uncheck.svg +0 -9
  832. package/projects/corecomponents/src/res/icons/delivery_truck.svg +0 -1
  833. package/projects/corecomponents/src/res/icons/detail_record.svg +0 -1
  834. package/projects/corecomponents/src/res/icons/detail_view.svg +0 -1
  835. package/projects/corecomponents/src/res/icons/dictionary.svg +0 -1
  836. package/projects/corecomponents/src/res/icons/documentWrench.svg +0 -1
  837. package/projects/corecomponents/src/res/icons/documents.svg +0 -1
  838. package/projects/corecomponents/src/res/icons/dollar.svg +0 -1
  839. package/projects/corecomponents/src/res/icons/download.svg +0 -1
  840. package/projects/corecomponents/src/res/icons/dropdown.svg +0 -4
  841. package/projects/corecomponents/src/res/icons/dropzone.svg +0 -1
  842. package/projects/corecomponents/src/res/icons/edit_pencil.svg +0 -1
  843. package/projects/corecomponents/src/res/icons/edit_pencil_circle.svg +0 -1
  844. package/projects/corecomponents/src/res/icons/edit_pencil_round.svg +0 -11
  845. package/projects/corecomponents/src/res/icons/edit_pencil_simple.svg +0 -16
  846. package/projects/corecomponents/src/res/icons/email.svg +0 -1
  847. package/projects/corecomponents/src/res/icons/email_round_open.svg +0 -6
  848. package/projects/corecomponents/src/res/icons/employee.svg +0 -1
  849. package/projects/corecomponents/src/res/icons/employee_two.svg +0 -1
  850. package/projects/corecomponents/src/res/icons/employer.svg +0 -1
  851. package/projects/corecomponents/src/res/icons/employment.svg +0 -1
  852. package/projects/corecomponents/src/res/icons/employment_end.svg +0 -7
  853. package/projects/corecomponents/src/res/icons/equal.svg +0 -1
  854. package/projects/corecomponents/src/res/icons/euro.svg +0 -1
  855. package/projects/corecomponents/src/res/icons/exclamation.svg +0 -1
  856. package/projects/corecomponents/src/res/icons/exclamation_round_open.svg +0 -1
  857. package/projects/corecomponents/src/res/icons/eye_circle.svg +0 -1
  858. package/projects/corecomponents/src/res/icons/eye_circle_large.svg +0 -1
  859. package/projects/corecomponents/src/res/icons/eye_round_filled.svg +0 -11
  860. package/projects/corecomponents/src/res/icons/factory.svg +0 -1
  861. package/projects/corecomponents/src/res/icons/fasttrack.svg +0 -1
  862. package/projects/corecomponents/src/res/icons/filter.svg +0 -1
  863. package/projects/corecomponents/src/res/icons/finish.svg +0 -1
  864. package/projects/corecomponents/src/res/icons/fixed_option_value_tree.svg +0 -1
  865. package/projects/corecomponents/src/res/icons/fixed_tree_option_value.svg +0 -1
  866. package/projects/corecomponents/src/res/icons/floppy_disk_solid.svg +0 -1
  867. package/projects/corecomponents/src/res/icons/folder_arrow_in.svg +0 -8
  868. package/projects/corecomponents/src/res/icons/formula.svg +0 -1
  869. package/projects/corecomponents/src/res/icons/fullscreen.svg +0 -6
  870. package/projects/corecomponents/src/res/icons/gear_double.svg +0 -21
  871. package/projects/corecomponents/src/res/icons/global_search.svg +0 -45
  872. package/projects/corecomponents/src/res/icons/globe.svg +0 -1
  873. package/projects/corecomponents/src/res/icons/greater_than.svg +0 -1
  874. package/projects/corecomponents/src/res/icons/groupby.svg +0 -1
  875. package/projects/corecomponents/src/res/icons/hamburger.svg +0 -1
  876. package/projects/corecomponents/src/res/icons/hand_pointer.svg +0 -1
  877. package/projects/corecomponents/src/res/icons/hbarchart.svg +0 -6
  878. package/projects/corecomponents/src/res/icons/home_circle.svg +0 -9
  879. package/projects/corecomponents/src/res/icons/home_open.svg +0 -7
  880. package/projects/corecomponents/src/res/icons/home_round_open.svg +0 -11
  881. package/projects/corecomponents/src/res/icons/hourglass.svg +0 -1
  882. package/projects/corecomponents/src/res/icons/icon_3d.svg +0 -1
  883. package/projects/corecomponents/src/res/icons/id.svg +0 -1
  884. package/projects/corecomponents/src/res/icons/image.svg +0 -1
  885. package/projects/corecomponents/src/res/icons/incoming_storage.svg +0 -1
  886. package/projects/corecomponents/src/res/icons/information.svg +0 -1
  887. package/projects/corecomponents/src/res/icons/information_round_open.svg +0 -6
  888. package/projects/corecomponents/src/res/icons/input_multiplechoice.svg +0 -1
  889. package/projects/corecomponents/src/res/icons/input_text.svg +0 -1
  890. package/projects/corecomponents/src/res/icons/input_textarea.svg +0 -1
  891. package/projects/corecomponents/src/res/icons/inventory.svg +0 -1
  892. package/projects/corecomponents/src/res/icons/invoice.svg +0 -20
  893. package/projects/corecomponents/src/res/icons/ione_logo.svg +0 -1
  894. package/projects/corecomponents/src/res/icons/ione_logo_fat.svg +0 -1
  895. package/projects/corecomponents/src/res/icons/ione_status_next.svg +0 -43
  896. package/projects/corecomponents/src/res/icons/ione_workflow.svg +0 -62
  897. package/projects/corecomponents/src/res/icons/keyboard.svg +0 -1
  898. package/projects/corecomponents/src/res/icons/keychain.svg +0 -1
  899. package/projects/corecomponents/src/res/icons/label.svg +0 -5
  900. package/projects/corecomponents/src/res/icons/label_round_open.svg +0 -6
  901. package/projects/corecomponents/src/res/icons/landmark_flag.svg +0 -1
  902. package/projects/corecomponents/src/res/icons/library.svg +0 -21
  903. package/projects/corecomponents/src/res/icons/linechart.svg +0 -1
  904. package/projects/corecomponents/src/res/icons/link_circle.svg +0 -1
  905. package/projects/corecomponents/src/res/icons/linked_products.svg +0 -1
  906. package/projects/corecomponents/src/res/icons/list_view.svg +0 -8
  907. package/projects/corecomponents/src/res/icons/location.svg +0 -1
  908. package/projects/corecomponents/src/res/icons/lock.svg +0 -1
  909. package/projects/corecomponents/src/res/icons/lock_round_open.svg +0 -8
  910. package/projects/corecomponents/src/res/icons/logo.svg +0 -1
  911. package/projects/corecomponents/src/res/icons/logout.svg +0 -1
  912. package/projects/corecomponents/src/res/icons/magic_wand.svg +0 -1
  913. package/projects/corecomponents/src/res/icons/magnifier.svg +0 -5
  914. package/projects/corecomponents/src/res/icons/manager.svg +0 -12
  915. package/projects/corecomponents/src/res/icons/mask.svg +0 -1
  916. package/projects/corecomponents/src/res/icons/master_detail.svg +0 -1
  917. package/projects/corecomponents/src/res/icons/material_circle_large.svg +0 -1
  918. package/projects/corecomponents/src/res/icons/medal_bronze.svg +0 -23
  919. package/projects/corecomponents/src/res/icons/medal_gold.svg +0 -23
  920. package/projects/corecomponents/src/res/icons/medal_silver.svg +0 -23
  921. package/projects/corecomponents/src/res/icons/medical_officer.svg +0 -14
  922. package/projects/corecomponents/src/res/icons/microphone.svg +0 -1
  923. package/projects/corecomponents/src/res/icons/minus_round_open.svg +0 -1
  924. package/projects/corecomponents/src/res/icons/minus_simple.svg +0 -1
  925. package/projects/corecomponents/src/res/icons/mobile.svg +0 -1
  926. package/projects/corecomponents/src/res/icons/multi_select_check.svg +0 -10
  927. package/projects/corecomponents/src/res/icons/new_task.svg +0 -1
  928. package/projects/corecomponents/src/res/icons/not_equal.svg +0 -4
  929. package/projects/corecomponents/src/res/icons/note.svg +0 -1
  930. package/projects/corecomponents/src/res/icons/note_bordered.svg +0 -1
  931. package/projects/corecomponents/src/res/icons/notification.svg +0 -1
  932. package/projects/corecomponents/src/res/icons/option.svg +0 -1
  933. package/projects/corecomponents/src/res/icons/optionset.svg +0 -1
  934. package/projects/corecomponents/src/res/icons/order.svg +0 -1
  935. package/projects/corecomponents/src/res/icons/orderpicking.svg +0 -1
  936. package/projects/corecomponents/src/res/icons/outgoing_storage.svg +0 -1
  937. package/projects/corecomponents/src/res/icons/over_booking.svg +0 -1
  938. package/projects/corecomponents/src/res/icons/pause_circle.svg +0 -12
  939. package/projects/corecomponents/src/res/icons/pen_to_square_solid.svg +0 -1
  940. package/projects/corecomponents/src/res/icons/pencil_round_open.svg +0 -10
  941. package/projects/corecomponents/src/res/icons/phone.svg +0 -1
  942. package/projects/corecomponents/src/res/icons/phone_round_open.svg +0 -10
  943. package/projects/corecomponents/src/res/icons/piechart.svg +0 -24
  944. package/projects/corecomponents/src/res/icons/pin.svg +0 -9
  945. package/projects/corecomponents/src/res/icons/pin_round_open.svg +0 -11
  946. package/projects/corecomponents/src/res/icons/play_circle.svg +0 -1
  947. package/projects/corecomponents/src/res/icons/plus_round.svg +0 -9
  948. package/projects/corecomponents/src/res/icons/plus_round_open.svg +0 -1
  949. package/projects/corecomponents/src/res/icons/plus_simple.svg +0 -1
  950. package/projects/corecomponents/src/res/icons/plus_skinny.svg +0 -8
  951. package/projects/corecomponents/src/res/icons/plus_solid.svg +0 -1
  952. package/projects/corecomponents/src/res/icons/plus_stars.svg +0 -1
  953. package/projects/corecomponents/src/res/icons/pointer.svg +0 -7
  954. package/projects/corecomponents/src/res/icons/pointer_3d.svg +0 -8
  955. package/projects/corecomponents/src/res/icons/pointer_filled.svg +0 -6
  956. package/projects/corecomponents/src/res/icons/positioning.svg +0 -1
  957. package/projects/corecomponents/src/res/icons/pregnancy.svg +0 -18
  958. package/projects/corecomponents/src/res/icons/preset.svg +0 -1
  959. package/projects/corecomponents/src/res/icons/print.svg +0 -1
  960. package/projects/corecomponents/src/res/icons/product_properties.svg +0 -1
  961. package/projects/corecomponents/src/res/icons/purchase.svg +0 -15
  962. package/projects/corecomponents/src/res/icons/qrcode.svg +0 -59
  963. package/projects/corecomponents/src/res/icons/question.svg +0 -1
  964. package/projects/corecomponents/src/res/icons/radio_uncheck.svg +0 -1
  965. package/projects/corecomponents/src/res/icons/range.svg +0 -1
  966. package/projects/corecomponents/src/res/icons/range_select.svg +0 -1
  967. package/projects/corecomponents/src/res/icons/rectangles.svg +0 -15
  968. package/projects/corecomponents/src/res/icons/refresh.svg +0 -1
  969. package/projects/corecomponents/src/res/icons/relations.svg +0 -20
  970. package/projects/corecomponents/src/res/icons/remark.svg +0 -1
  971. package/projects/corecomponents/src/res/icons/remark_round_open.svg +0 -6
  972. package/projects/corecomponents/src/res/icons/report_in_type.svg +0 -1
  973. package/projects/corecomponents/src/res/icons/resize.svg +0 -3
  974. package/projects/corecomponents/src/res/icons/resize_down.svg +0 -1
  975. package/projects/corecomponents/src/res/icons/resize_up.svg +0 -1
  976. package/projects/corecomponents/src/res/icons/return_goods.svg +0 -4
  977. package/projects/corecomponents/src/res/icons/returns.svg +0 -1
  978. package/projects/corecomponents/src/res/icons/rotate_left_solid.svg +0 -1
  979. package/projects/corecomponents/src/res/icons/save_disk.svg +0 -15
  980. package/projects/corecomponents/src/res/icons/save_skinny.svg +0 -3
  981. package/projects/corecomponents/src/res/icons/scale_balanced.svg +0 -1
  982. package/projects/corecomponents/src/res/icons/scanner.svg +0 -1
  983. package/projects/corecomponents/src/res/icons/search_round_open.svg +0 -9
  984. package/projects/corecomponents/src/res/icons/sections.svg +0 -1
  985. package/projects/corecomponents/src/res/icons/select_all_round.svg +0 -5
  986. package/projects/corecomponents/src/res/icons/services.svg +0 -1
  987. package/projects/corecomponents/src/res/icons/settings.svg +0 -20
  988. package/projects/corecomponents/src/res/icons/shopping_cart.svg +0 -1
  989. package/projects/corecomponents/src/res/icons/shopping_cart_nr.svg +0 -1
  990. package/projects/corecomponents/src/res/icons/shortcut.svg +0 -1
  991. package/projects/corecomponents/src/res/icons/skills.svg +0 -1
  992. package/projects/corecomponents/src/res/icons/slide_in.svg +0 -1
  993. package/projects/corecomponents/src/res/icons/slider_panel.svg +0 -7
  994. package/projects/corecomponents/src/res/icons/small_tiles.svg +0 -1
  995. package/projects/corecomponents/src/res/icons/smaller_than.svg +0 -1
  996. package/projects/corecomponents/src/res/icons/sort_asc.svg +0 -1
  997. package/projects/corecomponents/src/res/icons/sort_desc.svg +0 -1
  998. package/projects/corecomponents/src/res/icons/star_round_open.svg +0 -6
  999. package/projects/corecomponents/src/res/icons/status_active.svg +0 -1
  1000. package/projects/corecomponents/src/res/icons/status_adoption.svg +0 -1
  1001. package/projects/corecomponents/src/res/icons/status_fostercare.svg +0 -1
  1002. package/projects/corecomponents/src/res/icons/status_ill.svg +0 -10
  1003. package/projects/corecomponents/src/res/icons/status_leave.svg +0 -1
  1004. package/projects/corecomponents/src/res/icons/status_pregnancy.svg +0 -10
  1005. package/projects/corecomponents/src/res/icons/stock.svg +0 -1
  1006. package/projects/corecomponents/src/res/icons/stock_management.svg +0 -25
  1007. package/projects/corecomponents/src/res/icons/storage.svg +0 -1
  1008. package/projects/corecomponents/src/res/icons/supervisor.svg +0 -1
  1009. package/projects/corecomponents/src/res/icons/supplier.svg +0 -18
  1010. package/projects/corecomponents/src/res/icons/surgery.svg +0 -35
  1011. package/projects/corecomponents/src/res/icons/tablechart.svg +0 -15
  1012. package/projects/corecomponents/src/res/icons/tag.svg +0 -1
  1013. package/projects/corecomponents/src/res/icons/talk_too_much.svg +0 -7
  1014. package/projects/corecomponents/src/res/icons/target.svg +0 -1
  1015. package/projects/corecomponents/src/res/icons/task.svg +0 -1
  1016. package/projects/corecomponents/src/res/icons/thick_lines.svg +0 -1
  1017. package/projects/corecomponents/src/res/icons/thin_lines.svg +0 -1
  1018. package/projects/corecomponents/src/res/icons/three_sixty_view.svg +0 -1
  1019. package/projects/corecomponents/src/res/icons/thumb_bronze.svg +0 -29
  1020. package/projects/corecomponents/src/res/icons/thumb_gold.svg +0 -29
  1021. package/projects/corecomponents/src/res/icons/thumb_silver.svg +0 -29
  1022. package/projects/corecomponents/src/res/icons/timeline.svg +0 -1
  1023. package/projects/corecomponents/src/res/icons/transaction_detail.svg +0 -19
  1024. package/projects/corecomponents/src/res/icons/transactions.svg +0 -12
  1025. package/projects/corecomponents/src/res/icons/trash_can_solid.svg +0 -1
  1026. package/projects/corecomponents/src/res/icons/triangle_down.svg +0 -1
  1027. package/projects/corecomponents/src/res/icons/triangle_large.svg +0 -5
  1028. package/projects/corecomponents/src/res/icons/triangle_left.svg +0 -1
  1029. package/projects/corecomponents/src/res/icons/triangle_right.svg +0 -1
  1030. package/projects/corecomponents/src/res/icons/triangle_up.svg +0 -1
  1031. package/projects/corecomponents/src/res/icons/truck.svg +0 -1
  1032. package/projects/corecomponents/src/res/icons/truck_calendar.svg +0 -15
  1033. package/projects/corecomponents/src/res/icons/undo_round_open.svg +0 -1
  1034. package/projects/corecomponents/src/res/icons/user.svg +0 -9
  1035. package/projects/corecomponents/src/res/icons/variants.svg +0 -1
  1036. package/projects/corecomponents/src/res/icons/vbarchart.svg +0 -6
  1037. package/projects/corecomponents/src/res/icons/view.svg +0 -1
  1038. package/projects/corecomponents/src/res/icons/warehouse.svg +0 -1
  1039. package/projects/corecomponents/src/res/icons/watermark.svg +0 -10
  1040. package/projects/corecomponents/src/res/icons/website.svg +0 -1
  1041. package/projects/corecomponents/src/res/icons/wizard.svg +0 -18
  1042. package/projects/corecomponents/src/res/icons/wms.svg +0 -24
  1043. package/projects/corecomponents/src/res/icons/work_in_progress.svg +0 -10
  1044. package/projects/corecomponents/src/res/icons/work_in_progress_round_open.svg +0 -9
  1045. package/projects/corecomponents/src/res/icons/wrench.svg +0 -4
  1046. package/projects/corecomponents/src/res/icons/x_axis.svg +0 -5
  1047. package/projects/corecomponents/src/res/icons/y_axis.svg +0 -5
  1048. package/projects/corecomponents/src/test.ts +0 -28
  1049. package/projects/corecomponents/tsconfig.lib.json +0 -20
  1050. package/projects/corecomponents/tsconfig.lib.prod.json +0 -16
  1051. package/projects/corecomponents/tsconfig.spec.json +0 -17
  1052. package/scripts/export.bat +0 -9
  1053. package/scripts/merge-icons.js +0 -39
  1054. package/scripts/publish.bat +0 -6
  1055. package/src/app/app.component.scss +0 -36
  1056. package/src/app/app.component.spec.ts +0 -31
  1057. package/src/app/app.component.ts +0 -559
  1058. package/src/app/app.module.ts +0 -145
  1059. package/src/app/components/button-showcase.component.ts +0 -82
  1060. package/src/app/components/carousel-3d-showcase.component.ts +0 -70
  1061. package/src/app/components/checkbox-showcase.component.ts +0 -56
  1062. package/src/app/components/co-dialog-showcase.component.ts +0 -189
  1063. package/src/app/components/co-simple-grid-test.component.ts +0 -146
  1064. package/src/app/components/filter-item-showcase.component.ts +0 -178
  1065. package/src/app/components/forms-showcase.component.ts +0 -703
  1066. package/src/app/components/icon-showcase.component.ts +0 -72
  1067. package/src/app/components/input-checkbox-showcase.component.ts +0 -87
  1068. package/src/app/components/input-date-picker-showcase.component.ts +0 -90
  1069. package/src/app/components/input-number-picker-showcase.component.ts +0 -125
  1070. package/src/app/components/input-radio-button-showcase.component.ts +0 -87
  1071. package/src/app/components/input-scanner-showcase.component.ts +0 -35
  1072. package/src/app/components/input-text-showcase.component.ts +0 -200
  1073. package/src/app/components/input-time-showcase.component.ts +0 -104
  1074. package/src/app/components/number-picker-showcase.component.ts +0 -17
  1075. package/src/app/components/simple-grid-showcase.component.ts +0 -60
  1076. package/src/app/model/data-item.ts +0 -9
  1077. package/src/app/model/enum/currency-code.enum.ts +0 -7
  1078. package/src/app/model/enum/language-code.enum.ts +0 -8
  1079. package/src/app/model/map/currencies.map.ts +0 -6
  1080. package/src/app/service/showcase-data.service.ts +0 -1110
  1081. package/src/assets/.gitkeep +0 -0
  1082. package/src/environments/environment.prod.ts +0 -3
  1083. package/src/environments/environment.ts +0 -16
  1084. package/src/favicon.ico +0 -0
  1085. package/src/index.html +0 -13
  1086. package/src/main.ts +0 -12
  1087. package/src/polyfills.ts +0 -65
  1088. package/src/styles.scss +0 -56
  1089. package/src/test.ts +0 -27
  1090. package/tsconfig.app.json +0 -15
  1091. package/tsconfig.json +0 -37
  1092. package/tsconfig.spec.json +0 -18
  1093. /package/{projects/corecomponents/src/lib → lib}/components/article-tile/article-tile.component.scss +0 -0
  1094. /package/{projects/corecomponents/src/lib → lib}/components/base/commit-buttons/style/_layout.scss +0 -0
  1095. /package/{projects/corecomponents/src/lib → lib}/components/base/commit-buttons/style/_material-definition.scss +0 -0
  1096. /package/{projects/corecomponents/src/lib → lib}/components/base/commit-buttons/style/_theme.scss +0 -0
  1097. /package/{projects/corecomponents/src/lib → lib}/components/base/commit-buttons/style/material.scss +0 -0
  1098. /package/{projects/corecomponents/src/lib → lib}/components/button/style/_co-ripple.scss +0 -0
  1099. /package/{projects/corecomponents/src/lib → lib}/components/button/style/_layout.scss +0 -0
  1100. /package/{projects/corecomponents/src/lib → lib}/components/button/style/_material-definition.scss +0 -0
  1101. /package/{projects/corecomponents/src/lib → lib}/components/button/style/_theme.scss +0 -0
  1102. /package/{projects/corecomponents/src/lib → lib}/components/button/style/material.scss +0 -0
  1103. /package/{projects/corecomponents/src/lib → lib}/components/calendar/style/_layout.scss +0 -0
  1104. /package/{projects/corecomponents/src/lib → lib}/components/calendar/style/_material-definition.scss +0 -0
  1105. /package/{projects/corecomponents/src/lib → lib}/components/calendar/style/_theme.scss +0 -0
  1106. /package/{projects/corecomponents/src/lib → lib}/components/calendar/style/material.scss +0 -0
  1107. /package/{projects/corecomponents/src/lib → lib}/components/card/style/_layout.scss +0 -0
  1108. /package/{projects/corecomponents/src/lib → lib}/components/card/style/_material-definition.scss +0 -0
  1109. /package/{projects/corecomponents/src/lib → lib}/components/card/style/_theme.scss +0 -0
  1110. /package/{projects/corecomponents/src/lib → lib}/components/card/style/material.scss +0 -0
  1111. /package/{projects/corecomponents/src/lib → lib}/components/carousel/style/_layout.scss +0 -0
  1112. /package/{projects/corecomponents/src/lib → lib}/components/carousel/style/_material-definition.scss +0 -0
  1113. /package/{projects/corecomponents/src/lib → lib}/components/carousel/style/_theme.scss +0 -0
  1114. /package/{projects/corecomponents/src/lib → lib}/components/carousel/style/material.scss +0 -0
  1115. /package/{projects/corecomponents/src/lib → lib}/components/carousel-3d/style/_layout.scss +0 -0
  1116. /package/{projects/corecomponents/src/lib → lib}/components/carousel-3d/style/_material-definition.scss +0 -0
  1117. /package/{projects/corecomponents/src/lib → lib}/components/carousel-3d/style/_theme.scss +0 -0
  1118. /package/{projects/corecomponents/src/lib → lib}/components/carousel-3d/style/material.scss +0 -0
  1119. /package/{projects/corecomponents/src/lib → lib}/components/checkmark-overlay/style/_layout.scss +0 -0
  1120. /package/{projects/corecomponents/src/lib → lib}/components/checkmark-overlay/style/_material-definition.scss +0 -0
  1121. /package/{projects/corecomponents/src/lib → lib}/components/checkmark-overlay/style/_theme.scss +0 -0
  1122. /package/{projects/corecomponents/src/lib → lib}/components/checkmark-overlay/style/material.scss +0 -0
  1123. /package/{projects/corecomponents/src/lib → lib}/components/co-dialog/style/_layout.scss +0 -0
  1124. /package/{projects/corecomponents/src/lib → lib}/components/co-dialog/style/_material-definition.scss +0 -0
  1125. /package/{projects/corecomponents/src/lib → lib}/components/co-dialog/style/_theme.scss +0 -0
  1126. /package/{projects/corecomponents/src/lib → lib}/components/co-dialog/style/material.scss +0 -0
  1127. /package/{projects/corecomponents/src/lib → lib}/components/co-dialog-wizard/style/_layout.scss +0 -0
  1128. /package/{projects/corecomponents/src/lib → lib}/components/co-dialog-wizard/style/_material-definition.scss +0 -0
  1129. /package/{projects/corecomponents/src/lib → lib}/components/co-dialog-wizard/style/_theme.scss +0 -0
  1130. /package/{projects/corecomponents/src/lib → lib}/components/co-dialog-wizard/style/material.scss +0 -0
  1131. /package/{projects/corecomponents/src/lib → lib}/components/collapsible/style/_layout.scss +0 -0
  1132. /package/{projects/corecomponents/src/lib → lib}/components/collapsible/style/_material-definition.scss +0 -0
  1133. /package/{projects/corecomponents/src/lib → lib}/components/collapsible/style/_theme.scss +0 -0
  1134. /package/{projects/corecomponents/src/lib → lib}/components/collapsible/style/material.scss +0 -0
  1135. /package/{projects/corecomponents/src/lib → lib}/components/color-picker/style/_layout.scss +0 -0
  1136. /package/{projects/corecomponents/src/lib → lib}/components/color-picker/style/_material-definition.scss +0 -0
  1137. /package/{projects/corecomponents/src/lib → lib}/components/color-picker/style/_theme.scss +0 -0
  1138. /package/{projects/corecomponents/src/lib → lib}/components/color-picker/style/material.scss +0 -0
  1139. /package/{projects/corecomponents/src/lib → lib}/components/core-dialog/confirmation-dialog/style/_layout.scss +0 -0
  1140. /package/{projects/corecomponents/src/lib → lib}/components/core-dialog/confirmation-dialog/style/_material-definition.scss +0 -0
  1141. /package/{projects/corecomponents/src/lib → lib}/components/core-dialog/confirmation-dialog/style/_theme.scss +0 -0
  1142. /package/{projects/corecomponents/src/lib → lib}/components/core-dialog/confirmation-dialog/style/material.scss +0 -0
  1143. /package/{projects/corecomponents/src/lib → lib}/components/core-dialog/style/_layout.scss +0 -0
  1144. /package/{projects/corecomponents/src/lib → lib}/components/core-dialog/style/_material-definition.scss +0 -0
  1145. /package/{projects/corecomponents/src/lib → lib}/components/core-dialog/style/_theme.scss +0 -0
  1146. /package/{projects/corecomponents/src/lib → lib}/components/core-dialog/style/material.scss +0 -0
  1147. /package/{projects/corecomponents/src/lib → lib}/components/double-calendar/style/_layout.scss +0 -0
  1148. /package/{projects/corecomponents/src/lib → lib}/components/double-calendar/style/_material-definition.scss +0 -0
  1149. /package/{projects/corecomponents/src/lib → lib}/components/double-calendar/style/_theme.scss +0 -0
  1150. /package/{projects/corecomponents/src/lib → lib}/components/double-calendar/style/material.scss +0 -0
  1151. /package/{projects/corecomponents/src/lib → lib}/components/filter-item/style/_layout.scss +0 -0
  1152. /package/{projects/corecomponents/src/lib → lib}/components/filter-item/style/_material-definition.scss +0 -0
  1153. /package/{projects/corecomponents/src/lib → lib}/components/filter-item/style/_theme.scss +0 -0
  1154. /package/{projects/corecomponents/src/lib → lib}/components/filter-item/style/material.scss +0 -0
  1155. /package/{projects/corecomponents/src/lib → lib}/components/grid-toolbar/style/_layout.scss +0 -0
  1156. /package/{projects/corecomponents/src/lib → lib}/components/grid-toolbar/style/_material-definition.scss +0 -0
  1157. /package/{projects/corecomponents/src/lib → lib}/components/grid-toolbar/style/_theme.scss +0 -0
  1158. /package/{projects/corecomponents/src/lib → lib}/components/grid-toolbar/style/material.scss +0 -0
  1159. /package/{projects/corecomponents/src/lib → lib}/components/grid-toolbar-button/style/_layout.scss +0 -0
  1160. /package/{projects/corecomponents/src/lib → lib}/components/grid-toolbar-button/style/_material-definition.scss +0 -0
  1161. /package/{projects/corecomponents/src/lib → lib}/components/grid-toolbar-button/style/_theme.scss +0 -0
  1162. /package/{projects/corecomponents/src/lib → lib}/components/grid-toolbar-button/style/material.scss +0 -0
  1163. /package/{projects/corecomponents/src/lib → lib}/components/icon/style/_layout.scss +0 -0
  1164. /package/{projects/corecomponents/src/lib → lib}/components/icon/style/_material-definition.scss +0 -0
  1165. /package/{projects/corecomponents/src/lib → lib}/components/icon/style/_theme.scss +0 -0
  1166. /package/{projects/corecomponents/src/lib → lib}/components/icon/style/material.scss +0 -0
  1167. /package/{projects/corecomponents/src/lib → lib}/components/icon-collapse-handle/style/_layout.scss +0 -0
  1168. /package/{projects/corecomponents/src/lib → lib}/components/icon-collapse-handle/style/_material-definition.scss +0 -0
  1169. /package/{projects/corecomponents/src/lib → lib}/components/icon-collapse-handle/style/_theme.scss +0 -0
  1170. /package/{projects/corecomponents/src/lib → lib}/components/icon-collapse-handle/style/material.scss +0 -0
  1171. /package/{projects/corecomponents/src/lib → lib}/components/image/style/_layout.scss +0 -0
  1172. /package/{projects/corecomponents/src/lib → lib}/components/image/style/_material-definition.scss +0 -0
  1173. /package/{projects/corecomponents/src/lib → lib}/components/image/style/_theme.scss +0 -0
  1174. /package/{projects/corecomponents/src/lib → lib}/components/image/style/material.scss +0 -0
  1175. /package/{projects/corecomponents/src/lib → lib}/components/input-checkbox/style/_layout.scss +0 -0
  1176. /package/{projects/corecomponents/src/lib → lib}/components/input-checkbox/style/_material-definition.scss +0 -0
  1177. /package/{projects/corecomponents/src/lib → lib}/components/input-checkbox/style/_theme.scss +0 -0
  1178. /package/{projects/corecomponents/src/lib → lib}/components/input-checkbox/style/material.scss +0 -0
  1179. /package/{projects/corecomponents/src/lib → lib}/components/input-date-picker/style/_layout.scss +0 -0
  1180. /package/{projects/corecomponents/src/lib → lib}/components/input-date-picker/style/_material-definition.scss +0 -0
  1181. /package/{projects/corecomponents/src/lib → lib}/components/input-date-picker/style/_theme.scss +0 -0
  1182. /package/{projects/corecomponents/src/lib → lib}/components/input-date-picker/style/material.scss +0 -0
  1183. /package/{projects/corecomponents/src/lib → lib}/components/input-date-range-picker/style/_layout.scss +0 -0
  1184. /package/{projects/corecomponents/src/lib → lib}/components/input-date-range-picker/style/_material-definition.scss +0 -0
  1185. /package/{projects/corecomponents/src/lib → lib}/components/input-date-range-picker/style/_theme.scss +0 -0
  1186. /package/{projects/corecomponents/src/lib → lib}/components/input-date-range-picker/style/material.scss +0 -0
  1187. /package/{projects/corecomponents/src/lib → lib}/components/input-number-picker/style/_layout.scss +0 -0
  1188. /package/{projects/corecomponents/src/lib → lib}/components/input-number-picker/style/_material-definition.scss +0 -0
  1189. /package/{projects/corecomponents/src/lib → lib}/components/input-number-picker/style/_theme.scss +0 -0
  1190. /package/{projects/corecomponents/src/lib → lib}/components/input-number-picker/style/material.scss +0 -0
  1191. /package/{projects/corecomponents/src/lib → lib}/components/input-radio-button/style/_layout.scss +0 -0
  1192. /package/{projects/corecomponents/src/lib → lib}/components/input-radio-button/style/_material-definition.scss +0 -0
  1193. /package/{projects/corecomponents/src/lib → lib}/components/input-radio-button/style/_theme.scss +0 -0
  1194. /package/{projects/corecomponents/src/lib → lib}/components/input-radio-button/style/material.scss +0 -0
  1195. /package/{projects/corecomponents/src/lib → lib}/components/input-scanner/style/_layout.scss +0 -0
  1196. /package/{projects/corecomponents/src/lib → lib}/components/input-scanner/style/_material-definition.scss +0 -0
  1197. /package/{projects/corecomponents/src/lib → lib}/components/input-scanner/style/_theme.scss +0 -0
  1198. /package/{projects/corecomponents/src/lib → lib}/components/input-scanner/style/material.scss +0 -0
  1199. /package/{projects/corecomponents/src/lib → lib}/components/input-search/style/_layout.scss +0 -0
  1200. /package/{projects/corecomponents/src/lib → lib}/components/input-search/style/_material-definition.scss +0 -0
  1201. /package/{projects/corecomponents/src/lib → lib}/components/input-search/style/_theme.scss +0 -0
  1202. /package/{projects/corecomponents/src/lib → lib}/components/input-search/style/material.scss +0 -0
  1203. /package/{projects/corecomponents/src/lib → lib}/components/input-text/style/_layout.scss +0 -0
  1204. /package/{projects/corecomponents/src/lib → lib}/components/input-text/style/_material-definition.scss +0 -0
  1205. /package/{projects/corecomponents/src/lib → lib}/components/input-text/style/_theme.scss +0 -0
  1206. /package/{projects/corecomponents/src/lib → lib}/components/input-text/style/material.scss +0 -0
  1207. /package/{projects/corecomponents/src/lib → lib}/components/input-textarea/style/_layout.scss +0 -0
  1208. /package/{projects/corecomponents/src/lib → lib}/components/input-textarea/style/_material-definition.scss +0 -0
  1209. /package/{projects/corecomponents/src/lib → lib}/components/input-textarea/style/_theme.scss +0 -0
  1210. /package/{projects/corecomponents/src/lib → lib}/components/input-textarea/style/material.scss +0 -0
  1211. /package/{projects/corecomponents/src/lib → lib}/components/level-indicator/style/_layout.scss +0 -0
  1212. /package/{projects/corecomponents/src/lib → lib}/components/level-indicator/style/_material-definition.scss +0 -0
  1213. /package/{projects/corecomponents/src/lib → lib}/components/level-indicator/style/_theme.scss +0 -0
  1214. /package/{projects/corecomponents/src/lib → lib}/components/level-indicator/style/material.scss +0 -0
  1215. /package/{projects/corecomponents/src/lib → lib}/components/list-of-values/style/_layout.scss +0 -0
  1216. /package/{projects/corecomponents/src/lib → lib}/components/list-of-values/style/_material-definition.scss +0 -0
  1217. /package/{projects/corecomponents/src/lib → lib}/components/list-of-values/style/_theme.scss +0 -0
  1218. /package/{projects/corecomponents/src/lib → lib}/components/list-of-values/style/material.scss +0 -0
  1219. /package/{projects/corecomponents/src/lib → lib}/components/loader/style/_layout.scss +0 -0
  1220. /package/{projects/corecomponents/src/lib → lib}/components/loader/style/_material-definition.scss +0 -0
  1221. /package/{projects/corecomponents/src/lib → lib}/components/loader/style/_theme.scss +0 -0
  1222. /package/{projects/corecomponents/src/lib → lib}/components/loader/style/material.scss +0 -0
  1223. /package/{projects/corecomponents/src/lib → lib}/components/pagination/style/_layout.scss +0 -0
  1224. /package/{projects/corecomponents/src/lib → lib}/components/pagination/style/_material-definition.scss +0 -0
  1225. /package/{projects/corecomponents/src/lib → lib}/components/pagination/style/_theme.scss +0 -0
  1226. /package/{projects/corecomponents/src/lib → lib}/components/pagination/style/material.scss +0 -0
  1227. /package/{projects/corecomponents/src/lib → lib}/components/pagination-bar/style/_layout.scss +0 -0
  1228. /package/{projects/corecomponents/src/lib → lib}/components/pagination-bar/style/_material-definition.scss +0 -0
  1229. /package/{projects/corecomponents/src/lib → lib}/components/pagination-bar/style/_theme.scss +0 -0
  1230. /package/{projects/corecomponents/src/lib → lib}/components/pagination-bar/style/material.scss +0 -0
  1231. /package/{projects/corecomponents/src/lib → lib}/components/popup/popup-buttons.component.scss +0 -0
  1232. /package/{projects/corecomponents/src/lib → lib}/components/popup/popup-window-shell.component.scss +0 -0
  1233. /package/{projects/corecomponents/src/lib → lib}/components/responsive-text/style/_layout.scss +0 -0
  1234. /package/{projects/corecomponents/src/lib → lib}/components/responsive-text/style/_material-definition.scss +0 -0
  1235. /package/{projects/corecomponents/src/lib → lib}/components/responsive-text/style/_theme.scss +0 -0
  1236. /package/{projects/corecomponents/src/lib → lib}/components/responsive-text/style/material.scss +0 -0
  1237. /package/{projects/corecomponents/src/lib → lib}/components/simple-grid/style/_layout.scss +0 -0
  1238. /package/{projects/corecomponents/src/lib → lib}/components/simple-grid/style/_material-definition.scss +0 -0
  1239. /package/{projects/corecomponents/src/lib → lib}/components/simple-grid/style/_theme.scss +0 -0
  1240. /package/{projects/corecomponents/src/lib → lib}/components/simple-grid/style/material.scss +0 -0
  1241. /package/{projects/corecomponents/src/lib → lib}/components/tile/style/_layout.scss +0 -0
  1242. /package/{projects/corecomponents/src/lib → lib}/components/tile/style/_material-definition.scss +0 -0
  1243. /package/{projects/corecomponents/src/lib → lib}/components/tile/style/_theme.scss +0 -0
  1244. /package/{projects/corecomponents/src/lib → lib}/components/tile/style/material.scss +0 -0
  1245. /package/{projects/corecomponents/src/lib → lib}/components/tile-select/style/_layout.scss +0 -0
  1246. /package/{projects/corecomponents/src/lib → lib}/components/tile-select/style/_material-definition.scss +0 -0
  1247. /package/{projects/corecomponents/src/lib → lib}/components/tile-select/style/_theme.scss +0 -0
  1248. /package/{projects/corecomponents/src/lib → lib}/components/tile-select/style/material.scss +0 -0
  1249. /package/{projects/corecomponents/src/lib → lib}/components/tooltip/style/_layout.scss +0 -0
  1250. /package/{projects/corecomponents/src/lib → lib}/components/tooltip/style/_material-definition.scss +0 -0
  1251. /package/{projects/corecomponents/src/lib → lib}/components/tooltip/style/_theme.scss +0 -0
  1252. /package/{projects/corecomponents/src/lib → lib}/components/tooltip/style/material.scss +0 -0
  1253. /package/{projects/corecomponents/src/lib → lib}/components/validation-error/style/_layout.scss +0 -0
  1254. /package/{projects/corecomponents/src/lib → lib}/components/validation-error/style/_material-definition.scss +0 -0
  1255. /package/{projects/corecomponents/src/lib → lib}/components/validation-error/style/_theme.scss +0 -0
  1256. /package/{projects/corecomponents/src/lib → lib}/components/validation-error/style/material.scss +0 -0
  1257. /package/{projects/corecomponents/src/lib → lib}/components/view-mode-buttons/style/_layout.scss +0 -0
  1258. /package/{projects/corecomponents/src/lib → lib}/components/view-mode-buttons/style/_material-definition.scss +0 -0
  1259. /package/{projects/corecomponents/src/lib → lib}/components/view-mode-buttons/style/_theme.scss +0 -0
  1260. /package/{projects/corecomponents/src/lib → lib}/components/view-mode-buttons/style/material.scss +0 -0
  1261. /package/{projects/corecomponents/src/lib → lib}/modules/pagination/style/_layout.scss +0 -0
  1262. /package/{projects/corecomponents/src/lib → lib}/modules/pagination/style/_material-definition.scss +0 -0
  1263. /package/{projects/corecomponents/src/lib → lib}/modules/pagination/style/_theme.scss +0 -0
  1264. /package/{projects/corecomponents/src/lib → lib}/modules/pagination/style/material.scss +0 -0
  1265. /package/{projects/corecomponents/src/lib → lib}/style/_input.mixins.scss +0 -0
  1266. /package/{projects/corecomponents/src/lib → lib}/style/_mixin.scss +0 -0
  1267. /package/{projects/corecomponents/src/lib → lib}/style/_variables.scss +0 -0
  1268. /package/{projects/corecomponents/src/lib → lib}/style/corecomponents-globals.scss +0 -0
  1269. /package/{projects/corecomponents/src/lib → lib}/style/material2/_core.scss +0 -0
  1270. /package/{projects/corecomponents/src/lib → lib}/style/material2/_material2-scss-barrel.scss +0 -0
  1271. /package/{projects/corecomponents/src/lib → lib}/style/material2/ripple/_co-ripple.scss +0 -0
  1272. /package/{projects/corecomponents/src/lib → lib}/style/material2/style/_elevation.scss +0 -0
  1273. /package/{projects/corecomponents/src/lib → lib}/style/material2/style/_list-common.scss +0 -0
  1274. /package/{projects/corecomponents/src/lib → lib}/style/material2/style/_variables.scss +0 -0
  1275. /package/{projects/corecomponents/src/lib → lib}/style/material2/theming/_palette.scss +0 -0
  1276. /package/{projects/corecomponents/src/lib → lib}/style/material2/theming/_theming.scss +0 -0
  1277. /package/{projects/corecomponents/src/lib → lib}/style/material2/typography/_typography.scss +0 -0
@@ -0,0 +1,309 @@
1
+ import { anyNill } from "../function/any-nill.function";
2
+ import { ArrayUtils } from "./array-utils";
3
+ import { isNill } from "../function/is-nill.function";
4
+ import { ObjectUtils } from './object-utils';
5
+ // @dynamic
6
+ export class NumberUtils {
7
+ // @returns The inclusive max value
8
+ static PrecisionScaleToMaxValue(precision, scale) {
9
+ const oneStep = this.DecimalsToStepIncrement(scale);
10
+ const maxExclusive = Math.pow(10, precision - scale);
11
+ return maxExclusive - oneStep;
12
+ }
13
+ // Parses given argument to an integer, using a native parseInt() function with a radix of 10. Returns NaN if parsing was not possible.
14
+ static ParseInt(arg) {
15
+ if (isNill(arg) || Array.isArray(arg)) {
16
+ return undefined;
17
+ }
18
+ return parseInt(arg, 10);
19
+ }
20
+ static DecimalsToStepIncrement(numberOfDecimals) {
21
+ return Math.pow(10, -1 * numberOfDecimals);
22
+ }
23
+ // Returns the given argument as a number. Returns given defaultValue if conversion of argument was impossible.
24
+ static ParseNumberOrDefault(arg, defaultValue = 0) {
25
+ if (Array.isArray(arg)) {
26
+ return defaultValue;
27
+ }
28
+ if (!NumberUtils.IsNumber(arg)) {
29
+ arg = parseFloat(arg);
30
+ arg = isNaN(arg) ? defaultValue : arg;
31
+ }
32
+ return arg;
33
+ }
34
+ // Parses given numberInput to a number, or returns given defaultValue if parse not possible. Allows ',' char as decimal delimiter.
35
+ static ParseNumberInputOrDefault(numberInput, defaultValue = 0) {
36
+ return NumberUtils.ParseNumberOrDefault(NumberUtils._NumberInputToNumberStr(numberInput), defaultValue);
37
+ }
38
+ static IsParsableNumberInput(numberInput) {
39
+ return NumberUtils.IsParsableNumber(NumberUtils._NumberInputToNumberStr(numberInput));
40
+ }
41
+ // Returns whether the type of given argument is 'number'.
42
+ static IsNumber(arg) {
43
+ return typeof arg === 'number';
44
+ }
45
+ // Returns whether the value is parasable as a number.
46
+ static IsParsableNumber(arg) {
47
+ if (Array.isArray(arg)) {
48
+ return false;
49
+ }
50
+ return !isNaN(parseFloat(arg));
51
+ }
52
+ /**
53
+ * Returns given arg as a float number with given decimal precision, if possible. Returns NaN if parse conversion failed.
54
+ *
55
+ * @param The argument to parse to a float
56
+ * @param The number of decimals, or the precision, the parsed return float should have
57
+ * @returns NaN if not possible, else the parsed float value
58
+ */
59
+ static ParseFloat(arg, decimalPrecision = 2) {
60
+ if (anyNill(arg, decimalPrecision) || Array.isArray(arg)) {
61
+ return NaN;
62
+ }
63
+ if (!NumberUtils.IsInteger(decimalPrecision) || decimalPrecision < 0) {
64
+ decimalPrecision = 2;
65
+ // toFixed() can only handle up until 20
66
+ }
67
+ else if (decimalPrecision > 20) {
68
+ decimalPrecision = 20;
69
+ }
70
+ return parseFloat(parseFloat(arg).toFixed(decimalPrecision));
71
+ }
72
+ /**
73
+ * Returns given arg as a float number with given decimal precision, if possible. Returns NaN if parse conversion failed.
74
+ *
75
+ * @param The argument to parse to a float
76
+ * @returns The argument as a float with its original decimal precision intact
77
+ */
78
+ static ParseFloatKeepPrecision(arg) {
79
+ let decimalPrecision = this.GetDecimalPlaces(arg);
80
+ return this.ParseFloat(arg, decimalPrecision);
81
+ }
82
+ static ParseFloatNumberInputKeepPrecision(arg) {
83
+ let correctedInputStr = NumberUtils._NumberInputToNumberStr(arg);
84
+ let decimalPrecision = this.GetDecimalPlaces(correctedInputStr);
85
+ return NumberUtils.ParseFloat(correctedInputStr, decimalPrecision);
86
+ }
87
+ /**
88
+ * Finds the number closest to the originalNumber, that adheres to the given bounds. That is, for which it holds that
89
+ * nr = min + N * step with N integer or 0.
90
+ * @param originalNr Find closest answer to this number
91
+ * @param min Inclusive
92
+ * @param max Inclusive
93
+ * @param stepSize
94
+ * @returns The closest OK number for bounds.
95
+ */
96
+ static GetNearestNumberWithinSteppedBounds(originalNr, min, max, stepSize = 1) {
97
+ if (originalNr < min) {
98
+ return min;
99
+ }
100
+ else if (originalNr > max) {
101
+ return NumberUtils.GetTrueSteppedBoundsMax(min, max, stepSize);
102
+ }
103
+ let boundsCheck = NumberUtils.CheckWithinSteppedBounds(originalNr, min, max, stepSize);
104
+ if (boundsCheck.isOk) {
105
+ return originalNr;
106
+ }
107
+ let answer = undefined;
108
+ let remainder = boundsCheck.remainder;
109
+ if (remainder) {
110
+ // round up or down?
111
+ if ((remainder / stepSize) < 0.5) {
112
+ // round down, but not below min
113
+ answer = (originalNr - remainder >= min ? originalNr - remainder : min);
114
+ }
115
+ else {
116
+ // round up, but not above max
117
+ answer = (originalNr + stepSize - remainder <= max ? originalNr + stepSize - remainder :
118
+ NumberUtils.GetTrueSteppedBoundsMax(min, max, stepSize));
119
+ }
120
+ }
121
+ else {
122
+ // is this real life, why wasn't our stepped bounds check OK?
123
+ answer = originalNr;
124
+ }
125
+ // 'correct' float errors
126
+ answer = NumberUtils.ParseFloat(answer, NumberUtils._GetLargestDecimalPrecisionOf(originalNr, min, max, stepSize));
127
+ return answer;
128
+ }
129
+ // Returns the number of decimal places of the given number. Returns 0 if no decimals whatsoever could be found on given arg.
130
+ static GetDecimalPlaces(arg, maxAnswer = 1000) {
131
+ let match = ('' + arg).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
132
+ if (!match) {
133
+ return 0;
134
+ }
135
+ let answer = Math.max(0,
136
+ // number of digits right of decimal point.
137
+ (match[1] ? match[1].length : 0)
138
+ // adjust for scientific notation
139
+ - (match[2] ? +match[2] : 0));
140
+ if (answer > maxAnswer) {
141
+ answer = maxAnswer;
142
+ }
143
+ return answer;
144
+ }
145
+ // Returns true iff given argument is an integer number. Returns false on non-numbers or numbers with significant decimals.
146
+ static IsInteger(arg) {
147
+ if (isNaN(arg) || Array.isArray(arg)) {
148
+ return false;
149
+ }
150
+ let argAsFloat = parseFloat(arg);
151
+ return ((argAsFloat | 0) === argAsFloat); // returns whether 'arg converted to an integer equals arg'
152
+ }
153
+ /**
154
+ * Returns whether given arg is parseable as a number, and whether the lengts of its number parse result is equal to its original length.
155
+ * I.e. this function returns FALSE with given number-parsable strings, but that have non-numeric appendices, eg '2233ff'. That arg
156
+ * IS number-parseable, but not a strict 'string number', the latter being what this method actually checks for.
157
+ */
158
+ static IsStringNumber(arg) {
159
+ if (!NumberUtils.IsParsableNumber(arg)) {
160
+ return false;
161
+ }
162
+ else {
163
+ return arg.toString().length === parseFloat(arg).toString().length;
164
+ }
165
+ }
166
+ /**
167
+ * Returns a random integer in range [lowerBound .. upperBound], an inclusive range. Returns NaN if not possible.
168
+ * Given bounds are truncated first, before serving as the true lower- and upper bounds for the random int.
169
+ */
170
+ static RandomInt(lowerBoundInt, upperBoundInt) {
171
+ if (!NumberUtils.IsNumber(lowerBoundInt) || !NumberUtils.IsNumber(upperBoundInt) || lowerBoundInt > upperBoundInt) {
172
+ return NaN;
173
+ }
174
+ lowerBoundInt = Math.trunc(lowerBoundInt);
175
+ upperBoundInt = Math.trunc(upperBoundInt);
176
+ if (lowerBoundInt === upperBoundInt) {
177
+ return lowerBoundInt;
178
+ }
179
+ const delta = upperBoundInt - lowerBoundInt;
180
+ return (Math.round(Math.random() * delta) + lowerBoundInt);
181
+ }
182
+ /**
183
+ * Returns the true maximum allowed value for the given "stepped bounds": min, stepSize and max, for which it holds that each allowed
184
+ * value Y = min + stepSize * N, for any INTEGER or 0 N where it also holds, of course, that Y <= max.
185
+ * @param min
186
+ * @param max
187
+ * @param stepSize
188
+ */
189
+ static GetTrueSteppedBoundsMax(min, max, stepSize = 1) {
190
+ // solve max integer X in formula min + X * step <= max, and return min + X * stepSize for that X
191
+ let maxSteps = Math.floor((max - min) / stepSize);
192
+ // 'correct' float errors
193
+ return NumberUtils.ParseFloat(min + maxSteps * stepSize, NumberUtils._GetLargestDecimalPrecisionOf(min, min, max));
194
+ }
195
+ // Returns the string representation of given number. If it's not a number, returns the empty string.
196
+ static ToString(nr) {
197
+ if (!NumberUtils.IsNaN(nr)) {
198
+ return "" + nr;
199
+ }
200
+ else {
201
+ return "";
202
+ }
203
+ }
204
+ // Returns whether given arg is indeed not a number (it's NaN or it has another type than 'number').
205
+ static IsNaN(arg) {
206
+ return isNaN(arg) || !NumberUtils.IsNumber(arg);
207
+ }
208
+ /**
209
+ * Returns whether given x is OK within the given min, max and step boundaries, where it should hold that nrToCheck = min + N * step,
210
+ * with N integer or 0.
211
+ * @param nrToCheck Number to check whether it's within the given bounds
212
+ * @param min Inclusive
213
+ * @param max Inclusive
214
+ * @param stepSize
215
+ * @returns Returns remainder of undefined when nrToCheck was OUTSIDE [min, max], else full result object.
216
+ */
217
+ static CheckWithinSteppedBounds(nrToCheck, min, max, stepSize = 1) {
218
+ if (nrToCheck < min || nrToCheck > max) {
219
+ return { isOk: false, remainder: undefined };
220
+ }
221
+ // we're in [min, max], but still check if nrToCheck = min + N * step holds (for N integer or 0)
222
+ let remainder = (nrToCheck - min) % stepSize;
223
+ // correct float for largest precision amongst input numbers
224
+ remainder = NumberUtils.ParseFloat(remainder, NumberUtils._GetLargestDecimalPrecisionOf(nrToCheck, min, stepSize));
225
+ return { isOk: (remainder === 0), remainder: remainder };
226
+ }
227
+ // Adds thousands comma's to given value, E.g. '1000' to '1,000'. Returns empty string if value was undefined.
228
+ static AddThousandsCommasTo(value) {
229
+ if (isNill(value)) {
230
+ return "";
231
+ }
232
+ return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
233
+ }
234
+ // Returns the nearest number, relative to the given originalNr, that is within the given [min, max] inclusive bounds.
235
+ static GetNearestNumberWithinBounds(originalNr, min, max) {
236
+ let answer = originalNr;
237
+ if (originalNr < min) {
238
+ answer = min;
239
+ }
240
+ else if (originalNr > max) {
241
+ answer = max;
242
+ }
243
+ return answer;
244
+ }
245
+ /**
246
+ * Returns whether given nrToCheck is within the given precision and scale limits. Precision and scale, here, are Oracle DB terms.
247
+ * This function can thus be used to check whether the given number is safe to send to the 'database' beforehand, if we know the
248
+ * precision and scale of the number in the db declaration.
249
+ *
250
+ * I.e. A number declared in the Oracle DB as number(5, 2) has a precision of 5 and a scale of 2.
251
+ *
252
+ * @param nrToCheck
253
+ * @param precision The number of significant digits, including possibly negative scale. E.g. 3 in '123' and 5 in '51.123'
254
+ * @param [scale = 0] The number of significant digits AFTER the decimal point. E.g. 1 in 5432.1 and 3 in 54000.003
255
+ * @returns Whether given nrToCheck is ok for given precision and scale, and if not, the
256
+ * nearest number that IS ok for those constraints.
257
+ */
258
+ static CheckPrecisionAndScale(nrToCheck, precision, scale = 0) {
259
+ // let's say any undefined number is checked OK, and all numbers are checked OK for an undefined precision
260
+ if (!ObjectUtils.AllExist(nrToCheck, precision, scale)) {
261
+ return { isOk: true, nearestOkNr: NaN };
262
+ }
263
+ // no number can have 0 or less than 0 significant digits, in our universe
264
+ if (precision < 1 || precision - scale < 1) {
265
+ return { isOk: false, nearestOkNr: NaN };
266
+ }
267
+ // begin check
268
+ const isNegative = (nrToCheck < 0);
269
+ const nrParts = nrToCheck.toString().split(".");
270
+ // remove minus sign if negative
271
+ if (isNegative) {
272
+ nrParts[0] = nrParts[0].slice(1);
273
+ }
274
+ const numCountBeforeDot = nrParts[0].length;
275
+ const allowedNumCountBeforeDot = precision - scale;
276
+ if (numCountBeforeDot <= allowedNumCountBeforeDot) {
277
+ return { isOk: true, nearestOkNr: nrToCheck };
278
+ }
279
+ else {
280
+ // cut a part from the "before decimal number" so that the number is not too big anymore
281
+ const numCountToRemove = numCountBeforeDot - allowedNumCountBeforeDot;
282
+ // remove the right-most numbers before the decimal dot
283
+ nrParts[0] = nrParts[0].slice(0, -1 * numCountToRemove);
284
+ // add minus sign again if it was negative
285
+ if (isNegative) {
286
+ nrParts[0] = "-" + nrParts[0];
287
+ }
288
+ // build and return composite number again
289
+ let nearestOkNr;
290
+ if (nrParts[1]) {
291
+ nearestOkNr = Number(nrParts[0] + "." + nrParts[1]);
292
+ }
293
+ else {
294
+ nearestOkNr = Number(nrParts[0]);
295
+ }
296
+ return { isOk: false, nearestOkNr: nearestOkNr };
297
+ }
298
+ }
299
+ static _GetLargestDecimalPrecisionOf(...args) {
300
+ return ArrayUtils.GetMaxCalculatedValue(args, (arg) => {
301
+ return NumberUtils.GetDecimalPlaces(arg);
302
+ });
303
+ }
304
+ // Returns given number input as a number that's useable by Javascript. Allows for incoming ',' decimal delimiter.
305
+ static _NumberInputToNumberStr(numberInput) {
306
+ return (numberInput + '').replace(',', '.');
307
+ }
308
+ }
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb3JlL3V0aWxzL251bWJlci11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDdEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLFdBQVc7QUFDWCxNQUFNLE9BQU8sV0FBVztJQUNwQixtQ0FBbUM7SUFDNUIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLFNBQWlCLEVBQUUsS0FBYTtRQUNuRSxNQUFNLE9BQU8sR0FBVyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsTUFBTSxZQUFZLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzdELE9BQU8sWUFBWSxHQUFHLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsdUlBQXVJO0lBQ2hJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBUTtRQUMzQixJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sU0FBUyxDQUFDO1NBQ3BCO1FBRUQsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQUMsdUJBQXVCLENBQUMsZ0JBQXdCO1FBQzFELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMs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RyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7aUJBQU07Z0JBQ0gsV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQztZQUNELE9BQU8sRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsNkJBQTZCLENBQUMsR0FBRyxJQUFjO1FBQzFELE9BQU8sVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQzFELE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtIQUFrSDtJQUMxRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsV0FBbUI7UUFDdEQsT0FBTyxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YW55TmlsbH0gZnJvbSBcIi4uL2Z1bmN0aW9uL2FueS1uaWxsLmZ1bmN0aW9uXCI7XHJcbmltcG9ydCB7QXJyYXlVdGlsc30gZnJvbSBcIi4vYXJyYXktdXRpbHNcIjtcclxuaW1wb3J0IHtDaGVja1dpdGhpblN0ZXBwZWRCb3VuZHNSZXN1bHR9IGZyb20gXCIuLi9tb2RlbC9jaGVjay13aXRoaW4tc3RlcHBlZC1ib3VuZHMtcmVzdWx0XCI7XHJcbmltcG9ydCB7aXNOaWxsfSBmcm9tIFwiLi4vZnVuY3Rpb24vaXMtbmlsbC5mdW5jdGlvblwiO1xyXG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJy4vb2JqZWN0LXV0aWxzJztcclxuaW1wb3J0IHsgQ2hlY2tQcmVjaXNpb25BbmRTY2FsZVJlc3VsdCB9IGZyb20gJy4uL21vZGVsL2NoZWNrLXByZWNpc2lvbi1hbmQtc2NhbGUtcmVzdWx0JztcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBOdW1iZXJVdGlscyB7XHJcbiAgICAvLyBAcmV0dXJucyBUaGUgaW5jbHVzaXZlIG1heCB2YWx1ZVxyXG4gICAgcHVibGljIHN0YXRpYyBQcmVjaXNpb25TY2FsZVRvTWF4VmFsdWUocHJlY2lzaW9uOiBudW1iZXIsIHNjYWxlOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IG9uZVN0ZXA6IG51bWJlciA9IHRoaXMuRGVjaW1hbHNUb1N0ZXBJbmNyZW1lbnQoc2NhbGUpO1xyXG4gICAgICAgIGNvbnN0IG1heEV4Y2x1c2l2ZTogbnVtYmVyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbiAtIHNjYWxlKTtcclxuICAgICAgICByZXR1cm4gbWF4RXhjbHVzaXZlIC0gb25lU3RlcDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQYXJzZXMgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW50ZWdlciwgdXNpbmcgYSBuYXRpdmUgcGFyc2VJbnQoKSBmdW5jdGlvbiB3aXRoIGEgcmFkaXggb2YgMTAuIFJldHVybnMgTmFOIGlmIHBhcnNpbmcgd2FzIG5vdCBwb3NzaWJsZS5cclxuICAgIHB1YmxpYyBzdGF0aWMgUGFyc2VJbnQoYXJnOiBhbnkpOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChpc05pbGwoYXJnKSB8fCBBcnJheS5pc0FycmF5KGFyZykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJzZUludChhcmcsIDEwKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIERlY2ltYWxzVG9TdGVwSW5jcmVtZW50KG51bWJlck9mRGVjaW1hbHM6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgucG93KDEwLCAtMSAqIG51bWJlck9mRGVjaW1hbHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgdGhlIGdpdmVuIGFyZ3VtZW50IGFzIGEgbnVtYmVyLiBSZXR1cm5zIGdpdmVuIGRlZmF1bHRWYWx1ZSBpZiBjb252ZXJzaW9uIG9mIGFyZ3VtZW50IHdhcyBpbXBvc3NpYmxlLlxyXG4gICAgcHVibGljIHN0YXRpYyBQYXJzZU51bWJlck9yRGVmYXVsdChhcmc6IGFueSwgZGVmYXVsdFZhbHVlOiBudW1iZXIgPSAwKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIU51bWJlclV0aWxzLklzTnVtYmVyKGFyZykpIHtcclxuICAgICAgICAgICAgYXJnID0gcGFyc2VGbG9hdChhcmcpO1xyXG4gICAgICAgICAgICBhcmcgPSBpc05hTihhcmcpID8gZGVmYXVsdFZhbHVlIDogYXJnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXJnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFBhcnNlcyBnaXZlbiBudW1iZXJJbnB1dCB0byBhIG51bWJlciwgb3IgcmV0dXJucyBnaXZlbiBkZWZhdWx0VmFsdWUgaWYgcGFyc2Ugbm90IHBvc3NpYmxlLiBBbGxvd3MgJywnIGNoYXIgYXMgZGVjaW1hbCBkZWxpbWl0ZXIuXHJcbiAgICBwdWJsaWMgc3RhdGljIFBhcnNlTnVtYmVySW5wdXRPckRlZmF1bHQobnVtYmVySW5wdXQ6IGFueSwgZGVmYXVsdFZhbHVlOiBudW1iZXIgPSAwKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gTnVtYmVyVXRpbHMuUGFyc2VOdW1iZXJPckRlZmF1bHQoTnVtYmVyVXRpbHMuX051bWJlcklucHV0VG9OdW1iZXJTdHIobnVtYmVySW5wdXQpLCBkZWZhdWx0VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgSXNQYXJzYWJsZU51bWJlcklucHV0KG51bWJlcklucHV0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gTnVtYmVyVXRpbHMuSXNQYXJzYWJsZU51bWJlcihOdW1iZXJVdGlscy5fTnVtYmVySW5wdXRUb051bWJlclN0cihudW1iZXJJbnB1dCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgdHlwZSBvZiBnaXZlbiBhcmd1bWVudCBpcyAnbnVtYmVyJy5cclxuICAgIHB1YmxpYyBzdGF0aWMgSXNOdW1iZXIoYXJnOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSB2YWx1ZSBpcyBwYXJhc2FibGUgYXMgYSBudW1iZXIuXHJcbiAgICBwdWJsaWMgc3RhdGljIElzUGFyc2FibGVOdW1iZXIoYXJnOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VGbG9hdChhcmcpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgZ2l2ZW4gYXJnIGFzIGEgZmxvYXQgbnVtYmVyIHdpdGggZ2l2ZW4gZGVjaW1hbCBwcmVjaXNpb24sIGlmIHBvc3NpYmxlLiBSZXR1cm5zIE5hTiBpZiBwYXJzZSBjb252ZXJzaW9uIGZhaWxlZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gVGhlIGFyZ3VtZW50IHRvIHBhcnNlIHRvIGEgZmxvYXRcclxuICAgICAqIEBwYXJhbSBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzLCBvciB0aGUgcHJlY2lzaW9uLCB0aGUgcGFyc2VkIHJldHVybiBmbG9hdCBzaG91bGQgaGF2ZVxyXG4gICAgICogQHJldHVybnMgTmFOIGlmIG5vdCBwb3NzaWJsZSwgZWxzZSB0aGUgcGFyc2VkIGZsb2F0IHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgUGFyc2VGbG9hdChhcmc6IGFueSwgZGVjaW1hbFByZWNpc2lvbjogbnVtYmVyID0gMik6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKGFueU5pbGwoYXJnLCBkZWNpbWFsUHJlY2lzaW9uKSB8fCBBcnJheS5pc0FycmF5KGFyZykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE5hTjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghTnVtYmVyVXRpbHMuSXNJbnRlZ2VyKGRlY2ltYWxQcmVjaXNpb24pIHx8IGRlY2ltYWxQcmVjaXNpb24gPCAwKSB7XHJcbiAgICAgICAgICAgIGRlY2ltYWxQcmVjaXNpb24gPSAyO1xyXG4gICAgICAgICAgICAvLyB0b0ZpeGVkKCkgY2FuIG9ubHkgaGFuZGxlIHVwIHVudGlsIDIwXHJcbiAgICAgICAgfSBlbHNlIGlmIChkZWNpbWFsUHJlY2lzaW9uID4gMjApIHtcclxuICAgICAgICAgICAgZGVjaW1hbFByZWNpc2lvbiA9IDIwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQocGFyc2VGbG9hdChhcmcpLnRvRml4ZWQoZGVjaW1hbFByZWNpc2lvbikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBnaXZlbiBhcmcgYXMgYSBmbG9hdCBudW1iZXIgd2l0aCBnaXZlbiBkZWNpbWFsIHByZWNpc2lvbiwgaWYgcG9zc2libGUuIFJldHVybnMgTmFOIGlmIHBhcnNlIGNvbnZlcnNpb24gZmFpbGVkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBUaGUgYXJndW1lbnQgdG8gcGFyc2UgdG8gYSBmbG9hdFxyXG4gICAgICogQHJldHVybnMgVGhlIGFyZ3VtZW50IGFzIGEgZmxvYXQgd2l0aCBpdHMgb3JpZ2luYWwgZGVjaW1hbCBwcmVjaXNpb24gaW50YWN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgUGFyc2VGbG9hdEtlZXBQcmVjaXNpb24oYXJnOiBhbnkpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBkZWNpbWFsUHJlY2lzaW9uOiBudW1iZXIgPSB0aGlzLkdldERlY2ltYWxQbGFjZXMoYXJnKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5QYXJzZUZsb2F0KGFyZywgZGVjaW1hbFByZWNpc2lvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBQYXJzZUZsb2F0TnVtYmVySW5wdXRLZWVwUHJlY2lzaW9uKGFyZzogYW55KTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgY29ycmVjdGVkSW5wdXRTdHI6IHN0cmluZyA9IE51bWJlclV0aWxzLl9OdW1iZXJJbnB1dFRvTnVtYmVyU3RyKGFyZyk7XHJcbiAgICAgICAgbGV0IGRlY2ltYWxQcmVjaXNpb246IG51bWJlciA9IHRoaXMuR2V0RGVjaW1hbFBsYWNlcyhjb3JyZWN0ZWRJbnB1dFN0cik7XHJcbiAgICAgICAgcmV0dXJuIE51bWJlclV0aWxzLlBhcnNlRmxvYXQoY29ycmVjdGVkSW5wdXRTdHIsIGRlY2ltYWxQcmVjaXNpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRmluZHMgdGhlIG51bWJlciBjbG9zZXN0IHRvIHRoZSBvcmlnaW5hbE51bWJlciwgdGhhdCBhZGhlcmVzIHRvIHRoZSBnaXZlbiBib3VuZHMuIFRoYXQgaXMsIGZvciB3aGljaCBpdCBob2xkcyB0aGF0XHJcbiAgICAgKiBuciA9IG1pbiArIE4gKiBzdGVwIHdpdGggTiBpbnRlZ2VyIG9yIDAuXHJcbiAgICAgKiBAcGFyYW0gb3JpZ2luYWxOciBGaW5kIGNsb3Nlc3QgYW5zd2VyIHRvIHRoaXMgbnVtYmVyXHJcbiAgICAgKiBAcGFyYW0gbWluIEluY2x1c2l2ZVxyXG4gICAgICogQHBhcmFtIG1heCBJbmNsdXNpdmVcclxuICAgICAqIEBwYXJhbSBzdGVwU2l6ZVxyXG4gICAgICogQHJldHVybnMgVGhlIGNsb3Nlc3QgT0sgbnVtYmVyIGZvciBib3VuZHMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0TmVhcmVzdE51bWJlcldpdGhpblN0ZXBwZWRCb3VuZHMob3JpZ2luYWxOcjogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIHN0ZXBTaXplOiBudW1iZXIgPSAxKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAob3JpZ2luYWxOciA8IG1pbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbWluO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3JpZ2luYWxOciA+IG1heCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyVXRpbHMuR2V0VHJ1ZVN0ZXBwZWRCb3VuZHNNYXgobWluLCBtYXgsIHN0ZXBTaXplKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBib3VuZHNDaGVjazogQ2hlY2tXaXRoaW5TdGVwcGVkQm91bmRzUmVzdWx0ID0gTnVtYmVyVXRpbHMuQ2hlY2tXaXRoaW5TdGVwcGVkQm91bmRzKG9yaWdpbmFsTnIsIG1pbiwgbWF4LCBzdGVwU2l6ZSk7XHJcbiAgICAgICAgaWYgKGJvdW5kc0NoZWNrLmlzT2spIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTnI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYW5zd2VyOiBudW1iZXIgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgIGxldCByZW1haW5kZXI6IG51bWJlciA9IGJvdW5kc0NoZWNrLnJlbWFpbmRlcjtcclxuICAgICAgICBpZiAocmVtYWluZGVyKSB7XHJcbiAgICAgICAgICAgIC8vIHJvdW5kIHVwIG9yIGRvd24/XHJcbiAgICAgICAgICAgIGlmICgocmVtYWluZGVyIC8gc3RlcFNpemUpIDwgMC41KSB7XHJcbiAgICAgICAgICAgICAgICAvLyAgcm91bmQgZG93biwgYnV0IG5vdCBiZWxvdyBtaW5cclxuICAgICAgICAgICAgICAgIGFuc3dlciA9IChvcmlnaW5hbE5yIC0gcmVtYWluZGVyID49IG1pbiA/IG9yaWdpbmFsTnIgLSByZW1haW5kZXIgOiBtaW4pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gcm91bmQgdXAsIGJ1dCBub3QgYWJvdmUgbWF4XHJcbiAgICAgICAgICAgICAgICBhbnN3ZXIgPSAob3JpZ2luYWxOciArIHN0ZXBTaXplIC0gcmVtYWluZGVyIDw9IG1heCA/IG9yaWdpbmFsTnIgKyBzdGVwU2l6ZSAtIHJlbWFpbmRlciA6XHJcbiAgICAgICAgICAgICAgICAgICAgTnVtYmVyVXRpbHMuR2V0VHJ1ZVN0ZXBwZWRCb3VuZHNNYXgobWluLCBtYXgsIHN0ZXBTaXplKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBpcyB0aGlzIHJlYWwgbGlmZSwgd2h5IHdhc24ndCBvdXIgc3RlcHBlZCBib3VuZHMgY2hlY2sgT0s/XHJcbiAgICAgICAgICAgIGFuc3dlciA9IG9yaWdpbmFsTnI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyAnY29ycmVjdCcgZmxvYXQgZXJyb3JzXHJcbiAgICAgICAgYW5zd2VyID0gTnVtYmVyVXRpbHMuUGFyc2VGbG9hdChhbnN3ZXIsIE51bWJlclV0aWxzLl9HZXRMYXJnZXN0RGVjaW1hbFByZWNpc2lvbk9mKG9yaWdpbmFsTnIsIG1pbiwgbWF4LCBzdGVwU2l6ZSkpO1xyXG4gICAgICAgIHJldHVybiBhbnN3ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIG9mIHRoZSBnaXZlbiBudW1iZXIuIFJldHVybnMgMCBpZiBubyBkZWNpbWFscyB3aGF0c29ldmVyIGNvdWxkIGJlIGZvdW5kIG9uIGdpdmVuIGFyZy5cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0RGVjaW1hbFBsYWNlcyhhcmc6IGFueSwgbWF4QW5zd2VyOiBudW1iZXIgPSAxMDAwKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgPSAoJycgKyBhcmcpLm1hdGNoKC8oPzpcXC4oXFxkKykpPyg/OltlRV0oWystXT9cXGQrKSk/JC8pO1xyXG4gICAgICAgIGlmICghbWF0Y2gpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYW5zd2VyOiBudW1iZXIgPSBNYXRoLm1heCgwLFxyXG4gICAgICAgICAgICAvLyBudW1iZXIgb2YgZGlnaXRzIHJpZ2h0IG9mIGRlY2ltYWwgcG9pbnQuXHJcbiAgICAgICAgICAgIChtYXRjaFsxXSA/IG1hdGNoWzFdLmxlbmd0aCA6IDApXHJcbiAgICAgICAgICAgIC8vIGFkanVzdCBmb3Igc2NpZW50aWZpYyBub3RhdGlvblxyXG4gICAgICAgICAgICAtIChtYXRjaFsyXSA/ICttYXRjaFsyXSA6IDApKTtcclxuXHJcbiAgICAgICAgaWYgKGFuc3dlciA+IG1heEFuc3dlcikge1xyXG4gICAgICAgICAgICBhbnN3ZXIgPSBtYXhBbnN3ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYW5zd2VyO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgZ2l2ZW4gYXJndW1lbnQgaXMgYW4gaW50ZWdlciBudW1iZXIuIFJldHVybnMgZmFsc2Ugb24gbm9uLW51bWJlcnMgb3IgbnVtYmVycyB3aXRoIHNpZ25pZmljYW50IGRlY2ltYWxzLlxyXG4gICAgcHVibGljIHN0YXRpYyBJc0ludGVnZXIoYXJnOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoaXNOYU4oYXJnKSB8fCBBcnJheS5pc0FycmF5KGFyZykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYXJnQXNGbG9hdDogbnVtYmVyID0gcGFyc2VGbG9hdChhcmcpO1xyXG4gICAgICAgIHJldHVybiAoKGFyZ0FzRmxvYXQgfCAwKSA9PT0gYXJnQXNGbG9hdCk7IC8vIHJldHVybnMgd2hldGhlciAnYXJnIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyIGVxdWFscyBhcmcnXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgZ2l2ZW4gYXJnIGlzIHBhcnNlYWJsZSBhcyBhIG51bWJlciwgYW5kIHdoZXRoZXIgdGhlIGxlbmd0cyBvZiBpdHMgbnVtYmVyIHBhcnNlIHJlc3VsdCBpcyBlcXVhbCB0byBpdHMgb3JpZ2luYWwgbGVuZ3RoLlxyXG4gICAgICogSS5lLiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgRkFMU0Ugd2l0aCBnaXZlbiBudW1iZXItcGFyc2FibGUgc3RyaW5ncywgYnV0IHRoYXQgaGF2ZSBub24tbnVtZXJpYyBhcHBlbmRpY2VzLCBlZyAnMjIzM2ZmJy4gVGhhdCBhcmdcclxuICAgICAqIElTIG51bWJlci1wYXJzZWFibGUsIGJ1dCBub3QgYSBzdHJpY3QgJ3N0cmluZyBudW1iZXInLCB0aGUgbGF0dGVyIGJlaW5nIHdoYXQgdGhpcyBtZXRob2QgYWN0dWFsbHkgY2hlY2tzIGZvci5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBJc1N0cmluZ051bWJlcihhcmc6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghTnVtYmVyVXRpbHMuSXNQYXJzYWJsZU51bWJlcihhcmcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gYXJnLnRvU3RyaW5nKCkubGVuZ3RoID09PSBwYXJzZUZsb2F0KGFyZykudG9TdHJpbmcoKS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBhIHJhbmRvbSBpbnRlZ2VyIGluIHJhbmdlIFtsb3dlckJvdW5kIC4uIHVwcGVyQm91bmRdLCBhbiBpbmNsdXNpdmUgcmFuZ2UuIFJldHVybnMgTmFOIGlmIG5vdCBwb3NzaWJsZS5cclxuICAgICAqIEdpdmVuIGJvdW5kcyBhcmUgdHJ1bmNhdGVkIGZpcnN0LCBiZWZvcmUgc2VydmluZyBhcyB0aGUgdHJ1ZSBsb3dlci0gYW5kIHVwcGVyIGJvdW5kcyBmb3IgdGhlIHJhbmRvbSBpbnQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgUmFuZG9tSW50KGxvd2VyQm91bmRJbnQ6IG51bWJlciwgdXBwZXJCb3VuZEludDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoIU51bWJlclV0aWxzLklzTnVtYmVyKGxvd2VyQm91bmRJbnQpIHx8ICFOdW1iZXJVdGlscy5Jc051bWJlcih1cHBlckJvdW5kSW50KSB8fCBsb3dlckJvdW5kSW50ID4gdXBwZXJCb3VuZEludCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTmFOO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbG93ZXJCb3VuZEludCA9IE1hdGgudHJ1bmMobG93ZXJCb3VuZEludCk7XHJcbiAgICAgICAgdXBwZXJCb3VuZEludCA9IE1hdGgudHJ1bmModXBwZXJCb3VuZEludCk7XHJcblxyXG4gICAgICAgIGlmIChsb3dlckJvdW5kSW50ID09PSB1cHBlckJvdW5kSW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsb3dlckJvdW5kSW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGVsdGE6IG51bWJlciA9IHVwcGVyQm91bmRJbnQgLSBsb3dlckJvdW5kSW50O1xyXG4gICAgICAgIHJldHVybiAoTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogZGVsdGEpICsgbG93ZXJCb3VuZEludCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB0cnVlIG1heGltdW0gYWxsb3dlZCB2YWx1ZSBmb3IgdGhlIGdpdmVuIFwic3RlcHBlZCBib3VuZHNcIjogbWluLCBzdGVwU2l6ZSBhbmQgbWF4LCBmb3Igd2hpY2ggaXQgaG9sZHMgdGhhdCBlYWNoIGFsbG93ZWRcclxuICAgICAqIHZhbHVlIFkgPSBtaW4gKyBzdGVwU2l6ZSAqIE4sIGZvciBhbnkgSU5URUdFUiBvciAwIE4gd2hlcmUgaXQgYWxzbyBob2xkcywgb2YgY291cnNlLCB0aGF0IFkgPD0gbWF4LlxyXG4gICAgICogQHBhcmFtIG1pblxyXG4gICAgICogQHBhcmFtIG1heFxyXG4gICAgICogQHBhcmFtIHN0ZXBTaXplXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0VHJ1ZVN0ZXBwZWRCb3VuZHNNYXgobWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBzdGVwU2l6ZTogbnVtYmVyID0gMSk6IG51bWJlciB7XHJcbiAgICAgICAgLy8gc29sdmUgbWF4IGludGVnZXIgWCBpbiBmb3JtdWxhIG1pbiArIFggKiBzdGVwIDw9IG1heCwgYW5kIHJldHVybiBtaW4gKyBYICogc3RlcFNpemUgZm9yIHRoYXQgWFxyXG4gICAgICAgIGxldCBtYXhTdGVwczogbnVtYmVyID0gTWF0aC5mbG9vcigobWF4IC0gbWluKSAvIHN0ZXBTaXplKTtcclxuICAgICAgICAvLyAnY29ycmVjdCcgZmxvYXQgZXJyb3JzXHJcbiAgICAgICAgcmV0dXJuIE51bWJlclV0aWxzLlBhcnNlRmxvYXQobWluICsgbWF4U3RlcHMgKiBzdGVwU2l6ZSwgTnVtYmVyVXRpbHMuX0dldExhcmdlc3REZWNpbWFsUHJlY2lzaW9uT2YobWluLCBtaW4sIG1heCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBnaXZlbiBudW1iZXIuIElmIGl0J3Mgbm90IGEgbnVtYmVyLCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuXHJcbiAgICBwdWJsaWMgc3RhdGljIFRvU3RyaW5nKG5yOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghTnVtYmVyVXRpbHMuSXNOYU4obnIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiICsgbnI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgd2hldGhlciBnaXZlbiBhcmcgaXMgaW5kZWVkIG5vdCBhIG51bWJlciAoaXQncyBOYU4gb3IgaXQgaGFzIGFub3RoZXIgdHlwZSB0aGFuICdudW1iZXInKS5cclxuICAgIHB1YmxpYyBzdGF0aWMgSXNOYU4oYXJnOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gaXNOYU4oYXJnKSB8fCAhTnVtYmVyVXRpbHMuSXNOdW1iZXIoYXJnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgd2hldGhlciBnaXZlbiB4IGlzIE9LIHdpdGhpbiB0aGUgZ2l2ZW4gbWluLCBtYXggYW5kIHN0ZXAgYm91bmRhcmllcywgd2hlcmUgaXQgc2hvdWxkIGhvbGQgdGhhdCBuclRvQ2hlY2sgPSBtaW4gKyBOICogc3RlcCxcclxuICAgICAqIHdpdGggTiBpbnRlZ2VyIG9yIDAuXHJcbiAgICAgKiBAcGFyYW0gbnJUb0NoZWNrIE51bWJlciB0byBjaGVjayB3aGV0aGVyIGl0J3Mgd2l0aGluIHRoZSBnaXZlbiBib3VuZHNcclxuICAgICAqIEBwYXJhbSBtaW4gSW5jbHVzaXZlXHJcbiAgICAgKiBAcGFyYW0gbWF4IEluY2x1c2l2ZVxyXG4gICAgICogQHBhcmFtIHN0ZXBTaXplXHJcbiAgICAgKiBAcmV0dXJucyBSZXR1cm5zIHJlbWFpbmRlciBvZiB1bmRlZmluZWQgd2hlbiBuclRvQ2hlY2sgd2FzIE9VVFNJREUgW21pbiwgbWF4XSwgZWxzZSBmdWxsIHJlc3VsdCBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgQ2hlY2tXaXRoaW5TdGVwcGVkQm91bmRzKFxyXG4gICAgICAgIG5yVG9DaGVjazogbnVtYmVyLFxyXG4gICAgICAgIG1pbjogbnVtYmVyLFxyXG4gICAgICAgIG1heDogbnVtYmVyLFxyXG4gICAgICAgIHN0ZXBTaXplOiBudW1iZXIgPSAxXHJcbiAgICApOiBDaGVja1dpdGhpblN0ZXBwZWRCb3VuZHNSZXN1bHQge1xyXG4gICAgICAgIGlmIChuclRvQ2hlY2sgPCBtaW4gfHwgbnJUb0NoZWNrID4gbWF4KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7aXNPazogZmFsc2UsIHJlbWFpbmRlcjogdW5kZWZpbmVkfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHdlJ3JlIGluIFttaW4sIG1heF0sIGJ1dCBzdGlsbCBjaGVjayBpZiBuclRvQ2hlY2sgPSBtaW4gKyBOICogc3RlcCBob2xkcyAoZm9yIE4gaW50ZWdlciBvciAwKVxyXG4gICAgICAgIGxldCByZW1haW5kZXI6IG51bWJlciA9IChuclRvQ2hlY2sgLSBtaW4pICUgc3RlcFNpemU7XHJcbiAgICAgICAgLy8gY29ycmVjdCBmbG9hdCBmb3IgbGFyZ2VzdCBwcmVjaXNpb24gYW1vbmdzdCBpbnB1dCBudW1iZXJzXHJcbiAgICAgICAgcmVtYWluZGVyID0gTnVtYmVyVXRpbHMuUGFyc2VGbG9hdChyZW1haW5kZXIsIE51bWJlclV0aWxzLl9HZXRMYXJnZXN0RGVjaW1hbFByZWNpc2lvbk9mKG5yVG9DaGVjaywgbWluLCBzdGVwU2l6ZSkpO1xyXG4gICAgICAgIHJldHVybiB7aXNPazogKHJlbWFpbmRlciA9PT0gMCksIHJlbWFpbmRlcjogcmVtYWluZGVyfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZGRzIHRob3VzYW5kcyBjb21tYSdzIHRvIGdpdmVuIHZhbHVlLCBFLmcuICcxMDAwJyB0byAnMSwwMDAnLiBSZXR1cm5zIGVtcHR5IHN0cmluZyBpZiB2YWx1ZSB3YXMgdW5kZWZpbmVkLlxyXG4gICAgcHVibGljIHN0YXRpYyBBZGRUaG91c2FuZHNDb21tYXNUbyh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoaXNOaWxsKHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXR1cm5zIHRoZSBuZWFyZXN0IG51bWJlciwgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIG9yaWdpbmFsTnIsIHRoYXQgaXMgd2l0aGluIHRoZSBnaXZlbiBbbWluLCBtYXhdIGluY2x1c2l2ZSBib3VuZHMuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldE5lYXJlc3ROdW1iZXJXaXRoaW5Cb3VuZHMob3JpZ2luYWxOcjogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBhbnN3ZXI6IG51bWJlciA9IG9yaWdpbmFsTnI7XHJcblxyXG4gICAgICAgIGlmIChvcmlnaW5hbE5yIDwgbWluKSB7XHJcbiAgICAgICAgICAgIGFuc3dlciA9IG1pbjtcclxuICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbmFsTnIgPiBtYXgpIHtcclxuICAgICAgICAgICAgYW5zd2VyID0gbWF4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFuc3dlcjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgd2hldGhlciBnaXZlbiBuclRvQ2hlY2sgaXMgd2l0aGluIHRoZSBnaXZlbiBwcmVjaXNpb24gYW5kIHNjYWxlIGxpbWl0cy4gUHJlY2lzaW9uIGFuZCBzY2FsZSwgaGVyZSwgYXJlIE9yYWNsZSBEQiB0ZXJtcy5cclxuICAgICAqIFRoaXMgZnVuY3Rpb24gY2FuIHRodXMgYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBudW1iZXIgaXMgc2FmZSB0byBzZW5kIHRvIHRoZSAnZGF0YWJhc2UnIGJlZm9yZWhhbmQsIGlmIHdlIGtub3cgdGhlXHJcbiAgICAgKiBwcmVjaXNpb24gYW5kIHNjYWxlIG9mIHRoZSBudW1iZXIgaW4gdGhlIGRiIGRlY2xhcmF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIEkuZS4gQSBudW1iZXIgZGVjbGFyZWQgaW4gdGhlIE9yYWNsZSBEQiBhcyBudW1iZXIoNSwgMikgaGFzIGEgcHJlY2lzaW9uIG9mIDUgYW5kIGEgc2NhbGUgb2YgMi5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbnJUb0NoZWNrXHJcbiAgICAgKiBAcGFyYW0gcHJlY2lzaW9uIFRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzLCBpbmNsdWRpbmcgcG9zc2libHkgbmVnYXRpdmUgc2NhbGUuIEUuZy4gMyBpbiAnMTIzJyBhbmQgNSBpbiAnNTEuMTIzJ1xyXG4gICAgICogQHBhcmFtIFtzY2FsZSA9IDBdIFRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIEFGVEVSIHRoZSBkZWNpbWFsIHBvaW50LiBFLmcuIDEgaW4gNTQzMi4xIGFuZCAzIGluIDU0MDAwLjAwM1xyXG4gICAgICogQHJldHVybnMgV2hldGhlciBnaXZlbiBuclRvQ2hlY2sgaXMgb2sgZm9yIGdpdmVuIHByZWNpc2lvbiBhbmQgc2NhbGUsIGFuZCBpZiBub3QsIHRoZVxyXG4gICAgICogbmVhcmVzdCBudW1iZXIgdGhhdCBJUyBvayBmb3IgdGhvc2UgY29uc3RyYWludHMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgQ2hlY2tQcmVjaXNpb25BbmRTY2FsZShuclRvQ2hlY2s6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIsIHNjYWxlOiBudW1iZXIgPSAwKTogQ2hlY2tQcmVjaXNpb25BbmRTY2FsZVJlc3VsdCB7XHJcbiAgICAgICAgLy8gbGV0J3Mgc2F5IGFueSB1bmRlZmluZWQgbnVtYmVyIGlzIGNoZWNrZWQgT0ssIGFuZCBhbGwgbnVtYmVycyBhcmUgY2hlY2tlZCBPSyBmb3IgYW4gdW5kZWZpbmVkIHByZWNpc2lvblxyXG4gICAgICAgIGlmICghT2JqZWN0VXRpbHMuQWxsRXhpc3QobnJUb0NoZWNrLCBwcmVjaXNpb24sIHNjYWxlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge2lzT2s6IHRydWUsIG5lYXJlc3RPa05yOiBOYU59O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBubyBudW1iZXIgY2FuIGhhdmUgMCBvciBsZXNzIHRoYW4gMCBzaWduaWZpY2FudCBkaWdpdHMsIGluIG91ciB1bml2ZXJzZVxyXG4gICAgICAgIGlmIChwcmVjaXNpb24gPCAxIHx8IHByZWNpc2lvbiAtIHNjYWxlIDwgMSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge2lzT2s6IGZhbHNlLCBuZWFyZXN0T2tOcjogTmFOfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gYmVnaW4gY2hlY2tcclxuICAgICAgICBjb25zdCBpc05lZ2F0aXZlOiBib29sZWFuID0gKG5yVG9DaGVjayA8IDApO1xyXG4gICAgICAgIGNvbnN0IG5yUGFydHM6IHN0cmluZ1tdID0gbnJUb0NoZWNrLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgIC8vIHJlbW92ZSBtaW51cyBzaWduIGlmIG5lZ2F0aXZlXHJcbiAgICAgICAgaWYgKGlzTmVnYXRpdmUpIHtcclxuICAgICAgICAgICAgbnJQYXJ0c1swXSA9IG5yUGFydHNbMF0uc2xpY2UoMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG51bUNvdW50QmVmb3JlRG90OiBudW1iZXIgPSBuclBhcnRzWzBdLmxlbmd0aDtcclxuICAgICAgICBjb25zdCBhbGxvd2VkTnVtQ291bnRCZWZvcmVEb3Q6IG51bWJlciA9IHByZWNpc2lvbiAtIHNjYWxlO1xyXG4gICAgICAgIGlmIChudW1Db3VudEJlZm9yZURvdCA8PSBhbGxvd2VkTnVtQ291bnRCZWZvcmVEb3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtpc09rOiB0cnVlLCBuZWFyZXN0T2tOcjogbnJUb0NoZWNrfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBjdXQgYSBwYXJ0IGZyb20gdGhlIFwiYmVmb3JlIGRlY2ltYWwgbnVtYmVyXCIgc28gdGhhdCB0aGUgbnVtYmVyIGlzIG5vdCB0b28gYmlnIGFueW1vcmVcclxuICAgICAgICAgICAgY29uc3QgbnVtQ291bnRUb1JlbW92ZTogbnVtYmVyID0gbnVtQ291bnRCZWZvcmVEb3QgLSBhbGxvd2VkTnVtQ291bnRCZWZvcmVEb3Q7XHJcbiAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgcmlnaHQtbW9zdCBudW1iZXJzIGJlZm9yZSB0aGUgZGVjaW1hbCBkb3RcclxuICAgICAgICAgICAgbnJQYXJ0c1swXSA9IG5yUGFydHNbMF0uc2xpY2UoMCwgLTEgKiBudW1Db3VudFRvUmVtb3ZlKTtcclxuICAgICAgICAgICAgLy8gYWRkIG1pbnVzIHNpZ24gYWdhaW4gaWYgaXQgd2FzIG5lZ2F0aXZlXHJcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlKSB7XHJcbiAgICAgICAgICAgICAgICBuclBhcnRzWzBdID0gXCItXCIgKyBuclBhcnRzWzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGJ1aWxkIGFuZCByZXR1cm4gY29tcG9zaXRlIG51bWJlciBhZ2FpblxyXG4gICAgICAgICAgICBsZXQgbmVhcmVzdE9rTnI6IG51bWJlcjtcclxuICAgICAgICAgICAgaWYgKG5yUGFydHNbMV0pIHtcclxuICAgICAgICAgICAgICAgIG5lYXJlc3RPa05yID0gTnVtYmVyKG5yUGFydHNbMF0gKyBcIi5cIiArIG5yUGFydHNbMV0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbmVhcmVzdE9rTnIgPSBOdW1iZXIobnJQYXJ0c1swXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHtpc09rOiBmYWxzZSwgbmVhcmVzdE9rTnI6IG5lYXJlc3RPa05yfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgX0dldExhcmdlc3REZWNpbWFsUHJlY2lzaW9uT2YoLi4uYXJnczogbnVtYmVyW10pOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBBcnJheVV0aWxzLkdldE1heENhbGN1bGF0ZWRWYWx1ZShhcmdzLCAoYXJnOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIE51bWJlclV0aWxzLkdldERlY2ltYWxQbGFjZXMoYXJnKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXR1cm5zIGdpdmVuIG51bWJlciBpbnB1dCBhcyBhIG51bWJlciB0aGF0J3MgdXNlYWJsZSBieSBKYXZhc2NyaXB0LiBBbGxvd3MgZm9yIGluY29taW5nICcsJyBkZWNpbWFsIGRlbGltaXRlci5cclxuICAgIHByaXZhdGUgc3RhdGljIF9OdW1iZXJJbnB1dFRvTnVtYmVyU3RyKG51bWJlcklucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAobnVtYmVySW5wdXQgKyAnJykucmVwbGFjZSgnLCcsICcuJyk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,186 @@
1
+ import { isNill } from "../function/is-nill.function";
2
+ import { notNill } from "../function/not-nill.function";
3
+ // Static utility function holder related to objects.
4
+ export class ObjectUtils {
5
+ /**
6
+ * Returns whether all given values exist: for all values it holds that they are not null nor undefined. Short-circuit check.
7
+ * @param values Rest parameters with all objects to check existence for.
8
+ * @returns True if ALL given values are not null nor undefined, otherwise false (if at least one value was null or undefined)
9
+ */
10
+ static AllExist(...values) {
11
+ let allExist = true;
12
+ for (let i = 0, len = values.length; i < len; i++) {
13
+ if (isNill(values[i])) {
14
+ allExist = false;
15
+ break;
16
+ }
17
+ }
18
+ return allExist;
19
+ }
20
+ // Returns a shallow clone of the given original object. The clone is a SIMPLE OBJECT with the same properties as the original.
21
+ static GetShallowClone(originalObject, objectClass) {
22
+ let clonedObject = undefined;
23
+ if (objectClass) {
24
+ clonedObject = new objectClass();
25
+ }
26
+ else {
27
+ clonedObject = {};
28
+ }
29
+ ObjectUtils.ForOwnProperty(originalObject, (value, key) => {
30
+ clonedObject[key] = value;
31
+ });
32
+ return clonedObject;
33
+ }
34
+ /**
35
+ * Copies all properties from object 'from' to object 'to'. Overwrites properties on object 'to' if property already exists.
36
+ * Does not copy functions, only properties.
37
+ * @param from The source object from which to copy all properties of to the 'to' object.
38
+ * @param to The object to which the properties of the 'from' object will be copied.
39
+ * @param [allowUndefined = true] wether the 'to' object may be assigned null or undefined values to any of its properties.
40
+ */
41
+ static CopyPropertiesFrom(from, to, allowUndefined = true) {
42
+ if (!to) {
43
+ to = {};
44
+ }
45
+ if (!from) {
46
+ return to;
47
+ }
48
+ ObjectUtils.ForOwnProperty(from, (value, key) => {
49
+ if (allowUndefined || notNill(value)) {
50
+ to[key] = value;
51
+ }
52
+ });
53
+ return to;
54
+ }
55
+ /**
56
+ * Returns the display value of the given property on the given object, as a string (== the string representation of the property value).
57
+ * Does not return null or undefined, but returns the given defaultValue instead.
58
+ */
59
+ static GetDisplayValueOfPropertyOn(object, property, defaultValue = "") {
60
+ if (!object || !property) {
61
+ return defaultValue;
62
+ }
63
+ let returnValue = defaultValue;
64
+ let propertyValue = object[property];
65
+ if (propertyValue) {
66
+ returnValue = propertyValue.toString();
67
+ }
68
+ return returnValue;
69
+ }
70
+ // Performs given callback function for each own property of given plain object. Also works on string enums.
71
+ static ForOwnProperty(plainObject, callback) {
72
+ if (ObjectUtils.IsPlainObject(plainObject)) {
73
+ for (let key in plainObject) {
74
+ if (plainObject.hasOwnProperty(key) && typeof plainObject[key] !== 'function') {
75
+ let response = callback(plainObject[key], key);
76
+ if (response === false) {
77
+ break;
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
83
+ // Returns whether given object is an existing, plain object. That is, it defined, its type if 'object' and it is NOT an array or func.
84
+ static IsPlainObject(object) {
85
+ return object !== null && !Array.isArray(object) && typeof object !== 'function' && typeof object === 'object';
86
+ }
87
+ static DeepEquals(actual, expected) {
88
+ if (actual === expected) {
89
+ return true;
90
+ }
91
+ else if (actual instanceof Date && expected instanceof Date) {
92
+ return actual.getTime() === expected.getTime();
93
+ }
94
+ else if (!actual || !expected || typeof actual !== 'object' && typeof expected !== 'object') {
95
+ return actual === expected;
96
+ }
97
+ else {
98
+ return this._objEquiv(actual, expected);
99
+ }
100
+ }
101
+ static _objEquiv(a, b) {
102
+ let i, key;
103
+ if (isNill(a) || isNill(b)) {
104
+ return false;
105
+ }
106
+ if (a.prototype !== b.prototype) {
107
+ return false;
108
+ }
109
+ if (this._isArguments(a)) {
110
+ if (!this._isArguments(b)) {
111
+ return false;
112
+ }
113
+ a = Array.prototype.slice.call(a);
114
+ b = Array.prototype.slice.call(b);
115
+ return this.DeepEquals(a, b);
116
+ }
117
+ if (this._isBuffer(a)) {
118
+ if (!this._isBuffer(b)) {
119
+ return false;
120
+ }
121
+ if (a.length !== b.length) {
122
+ return false;
123
+ }
124
+ for (i = 0; i < a.length; i++) {
125
+ if (a[i] !== b[i]) {
126
+ return false;
127
+ }
128
+ }
129
+ return true;
130
+ }
131
+ let ka;
132
+ let kb;
133
+ try {
134
+ ka = Object.keys(a);
135
+ kb = Object.keys(b);
136
+ }
137
+ catch (e) {
138
+ return false;
139
+ }
140
+ if (ka.length !== kb.length) {
141
+ return false;
142
+ }
143
+ ka.sort();
144
+ kb.sort();
145
+ for (i = ka.length - 1; i >= 0; i--) {
146
+ if (ka[i] !== kb[i]) {
147
+ return false;
148
+ }
149
+ }
150
+ for (i = ka.length - 1; i >= 0; i--) {
151
+ key = ka[i];
152
+ if (!this.DeepEquals(a[key], b[key])) {
153
+ return false;
154
+ }
155
+ }
156
+ return typeof a === typeof b;
157
+ }
158
+ static _isBuffer(x) {
159
+ if (!x || typeof x !== 'object' || typeof x.length !== 'number') {
160
+ return false;
161
+ }
162
+ if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
163
+ return false;
164
+ }
165
+ return !(x.length > 0 && typeof x[0] !== 'number');
166
+ }
167
+ static _isArguments(x) {
168
+ let supportsArgsClass = this._supportsArgumentsClass();
169
+ return supportsArgsClass ? this._isArgumentsWhenArgsClassSupported(x) : this._isArgumentsWhenArgsClassNotSupported(x);
170
+ }
171
+ static _isArgumentsWhenArgsClassNotSupported(object) {
172
+ return object &&
173
+ typeof object === 'object' &&
174
+ typeof object.length === 'number' &&
175
+ Object.prototype.hasOwnProperty.call(object, 'callee') &&
176
+ !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
177
+ false;
178
+ }
179
+ static _isArgumentsWhenArgsClassSupported(object) {
180
+ return Object.prototype.toString.call(object) === '[object Arguments]';
181
+ }
182
+ static _supportsArgumentsClass() {
183
+ return Object.prototype.toString.call(arguments) === '[object Arguments]';
184
+ }
185
+ }
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb3JlL3V0aWxzL29iamVjdC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRXRELHFEQUFxRDtBQUNyRCxNQUFNLE9BQU8sV0FBVztJQUVwQjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQWE7UUFDbkMsSUFBSSxRQUFRLEdBQVksSUFBSSxDQUFDO1FBQzdCLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLEdBQUcsR0FBVyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0QsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ2pCLE1BQU07YUFDVDtTQUNKO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELCtIQUErSDtJQUN4SCxNQUFNLENBQUMsZUFBZSxDQUFDLGNBQW1CLEVBQUUsV0FBaUI7UUFDaEUsSUFBSSxZQUFZLEdBQVEsU0FBUyxDQUFDO1FBRWxDLElBQUksV0FBVyxFQUFFO1lBQ2IsWUFBWSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7U0FDcEM7YUFBTTtZQUNILFlBQVksR0FBRyxFQUFFLENBQUM7U0FDckI7UUFFRCxXQUFXLENBQUMsY0FBYyxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQVUsRUFBRSxHQUFXLEVBQUUsRUFBRTtZQUNuRSxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzlCLENBQUMs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LFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssb0JBQW9CLENBQUM7SUFDOUUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc05pbGx9IGZyb20gXCIuLi9mdW5jdGlvbi9pcy1uaWxsLmZ1bmN0aW9uXCI7XHJcbmltcG9ydCB7bm90TmlsbH0gZnJvbSBcIi4uL2Z1bmN0aW9uL25vdC1uaWxsLmZ1bmN0aW9uXCI7XHJcblxyXG4vLyBTdGF0aWMgdXRpbGl0eSBmdW5jdGlvbiBob2xkZXIgcmVsYXRlZCB0byBvYmplY3RzLlxyXG5leHBvcnQgY2xhc3MgT2JqZWN0VXRpbHMge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGFsbCBnaXZlbiB2YWx1ZXMgZXhpc3Q6IGZvciBhbGwgdmFsdWVzIGl0IGhvbGRzIHRoYXQgdGhleSBhcmUgbm90IG51bGwgbm9yIHVuZGVmaW5lZC4gU2hvcnQtY2lyY3VpdCBjaGVjay5cclxuICAgICAqIEBwYXJhbSB2YWx1ZXMgUmVzdCBwYXJhbWV0ZXJzIHdpdGggYWxsIG9iamVjdHMgdG8gY2hlY2sgZXhpc3RlbmNlIGZvci5cclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgQUxMIGdpdmVuIHZhbHVlcyBhcmUgbm90IG51bGwgbm9yIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlIChpZiBhdCBsZWFzdCBvbmUgdmFsdWUgd2FzIG51bGwgb3IgdW5kZWZpbmVkKVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEFsbEV4aXN0KC4uLnZhbHVlczogYW55W10pOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgYWxsRXhpc3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDAsIGxlbjogbnVtYmVyID0gdmFsdWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChpc05pbGwodmFsdWVzW2ldKSkge1xyXG4gICAgICAgICAgICAgICAgYWxsRXhpc3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhbGxFeGlzdDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXR1cm5zIGEgc2hhbGxvdyBjbG9uZSBvZiB0aGUgZ2l2ZW4gb3JpZ2luYWwgb2JqZWN0LiBUaGUgY2xvbmUgaXMgYSBTSU1QTEUgT0JKRUNUIHdpdGggdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgb3JpZ2luYWwuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldFNoYWxsb3dDbG9uZShvcmlnaW5hbE9iamVjdDogYW55LCBvYmplY3RDbGFzcz86IGFueSk6IGFueSB7XHJcbiAgICAgICAgbGV0IGNsb25lZE9iamVjdDogYW55ID0gdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICBpZiAob2JqZWN0Q2xhc3MpIHtcclxuICAgICAgICAgICAgY2xvbmVkT2JqZWN0ID0gbmV3IG9iamVjdENsYXNzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2xvbmVkT2JqZWN0ID0ge307XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBPYmplY3RVdGlscy5Gb3JPd25Qcm9wZXJ0eShvcmlnaW5hbE9iamVjdCwgKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGNsb25lZE9iamVjdFtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBjbG9uZWRPYmplY3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3BpZXMgYWxsIHByb3BlcnRpZXMgZnJvbSBvYmplY3QgJ2Zyb20nIHRvIG9iamVjdCAndG8nLiBPdmVyd3JpdGVzIHByb3BlcnRpZXMgb24gb2JqZWN0ICd0bycgaWYgcHJvcGVydHkgYWxyZWFkeSBleGlzdHMuXHJcbiAgICAgKiBEb2VzIG5vdCBjb3B5IGZ1bmN0aW9ucywgb25seSBwcm9wZXJ0aWVzLlxyXG4gICAgICogQHBhcmFtIGZyb20gVGhlIHNvdXJjZSBvYmplY3QgZnJvbSB3aGljaCB0byBjb3B5IGFsbCBwcm9wZXJ0aWVzIG9mIHRvIHRoZSAndG8nIG9iamVjdC5cclxuICAgICAqIEBwYXJhbSB0byBUaGUgb2JqZWN0IHRvIHdoaWNoIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSAnZnJvbScgb2JqZWN0IHdpbGwgYmUgY29waWVkLlxyXG4gICAgICogQHBhcmFtIFthbGxvd1VuZGVmaW5lZCA9IHRydWVdIHdldGhlciB0aGUgJ3RvJyBvYmplY3QgbWF5IGJlIGFzc2lnbmVkIG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlcyB0byBhbnkgb2YgaXRzIHByb3BlcnRpZXMuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgQ29weVByb3BlcnRpZXNGcm9tPFQ+KGZyb206IE9iamVjdCwgdG86IFQsIGFsbG93VW5kZWZpbmVkOiBib29sZWFuID0gdHJ1ZSk6IFQge1xyXG4gICAgICAgIGlmICghdG8pIHtcclxuICAgICAgICAgICAgdG8gPSB7fSBhcyBUO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWZyb20pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgICAgIH1cclxuICAgICAgICBPYmplY3RVdGlscy5Gb3JPd25Qcm9wZXJ0eShmcm9tLCAodmFsdWU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgaWYgKGFsbG93VW5kZWZpbmVkIHx8IG5vdE5pbGwodmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0b1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdG87XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBkaXNwbGF5IHZhbHVlIG9mIHRoZSBnaXZlbiBwcm9wZXJ0eSBvbiB0aGUgZ2l2ZW4gb2JqZWN0LCBhcyBhIHN0cmluZyAoPT0gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJvcGVydHkgdmFsdWUpLlxyXG4gICAgICogRG9lcyBub3QgcmV0dXJuIG51bGwgb3IgdW5kZWZpbmVkLCBidXQgcmV0dXJucyB0aGUgZ2l2ZW4gZGVmYXVsdFZhbHVlIGluc3RlYWQuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0RGlzcGxheVZhbHVlT2ZQcm9wZXJ0eU9uKG9iamVjdDogT2JqZWN0LCBwcm9wZXJ0eTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghb2JqZWN0IHx8ICFwcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHJldHVyblZhbHVlOiBzdHJpbmcgPSBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgbGV0IHByb3BlcnR5VmFsdWU6IGFueSA9IG9iamVjdFtwcm9wZXJ0eV07XHJcbiAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBwcm9wZXJ0eVZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUGVyZm9ybXMgZ2l2ZW4gY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGVhY2ggb3duIHByb3BlcnR5IG9mIGdpdmVuIHBsYWluIG9iamVjdC4gQWxzbyB3b3JrcyBvbiBzdHJpbmcgZW51bXMuXHJcbiAgICBwdWJsaWMgc3RhdGljIEZvck93blByb3BlcnR5KHBsYWluT2JqZWN0OiBhbnksIGNhbGxiYWNrOiAocHJvcFZhbDogYW55LCBrZXk6IHN0cmluZykgPT4gYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKE9iamVjdFV0aWxzLklzUGxhaW5PYmplY3QocGxhaW5PYmplY3QpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBwbGFpbk9iamVjdCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBsYWluT2JqZWN0Lmhhc093blByb3BlcnR5KGtleSkgJiYgdHlwZW9mIHBsYWluT2JqZWN0W2tleV0gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzcG9uc2U6IGJvb2xlYW4gPSBjYWxsYmFjayhwbGFpbk9iamVjdFtrZXldLCBrZXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgd2hldGhlciBnaXZlbiBvYmplY3QgaXMgYW4gZXhpc3RpbmcsIHBsYWluIG9iamVjdC4gVGhhdCBpcywgaXQgZGVmaW5lZCwgaXRzIHR5cGUgaWYgJ29iamVjdCcgYW5kIGl0IGlzIE5PVCBhbiBhcnJheSBvciBmdW5jLlxyXG4gICAgcHVibGljIHN0YXRpYyBJc1BsYWluT2JqZWN0KG9iamVjdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIG9iamVjdCAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShvYmplY3QpICYmIHR5cGVvZiBvYmplY3QgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBEZWVwRXF1YWxzKGFjdHVhbDogYW55LCBleHBlY3RlZDogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhY3R1YWwgaW5zdGFuY2VvZiBEYXRlICYmIGV4cGVjdGVkIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYWN0dWFsLmdldFRpbWUoKSA9PT0gZXhwZWN0ZWQuZ2V0VGltZSgpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIWFjdHVhbCB8fCAhZXhwZWN0ZWQgfHwgdHlwZW9mIGFjdHVhbCAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGV4cGVjdGVkICE9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gYWN0dWFsID09PSBleHBlY3RlZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fb2JqRXF1aXYoYWN0dWFsLCBleHBlY3RlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIF9vYmpFcXVpdihhOiBhbnksIGI6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBpOiBudW1iZXIsIGtleTogc3RyaW5nO1xyXG4gICAgICAgIGlmIChpc05pbGwoYSkgfHwgaXNOaWxsKGIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChhLnByb3RvdHlwZSAhPT0gYi5wcm90b3R5cGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2lzQXJndW1lbnRzKGEpKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNBcmd1bWVudHMoYikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSk7XHJcbiAgICAgICAgICAgIGIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuRGVlcEVxdWFscyhhLCBiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzQnVmZmVyKGEpKSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNCdWZmZXIoYikpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQga2E6IHN0cmluZ1tdO1xyXG4gICAgICAgIGxldCBrYjogc3RyaW5nW107XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAga2EgPSBPYmplY3Qua2V5cyhhKTtcclxuICAgICAgICAgICAga2IgPSBPYmplY3Qua2V5cyhiKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChrYS5sZW5ndGggIT09IGtiLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBrYS5zb3J0KCk7XHJcbiAgICAgICAga2Iuc29ydCgpO1xyXG5cclxuICAgICAgICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICBpZiAoa2FbaV0gIT09IGtiW2ldKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgIGtleSA9IGthW2ldO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuRGVlcEVxdWFscyhhW2tleV0sIGJba2V5XSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHlwZW9mIGEgPT09IHR5cGVvZiBiO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIF9pc0J1ZmZlcih4OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXggfHwgdHlwZW9mIHggIT09ICdvYmplY3QnIHx8IHR5cGVvZiB4Lmxlbmd0aCAhPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHguY29weSAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgeC5zbGljZSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAhKHgubGVuZ3RoID4gMCAmJiB0eXBlb2YgeFswXSAhPT0gJ251bWJlcicpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIF9pc0FyZ3VtZW50cyh4OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgc3VwcG9ydHNBcmdzQ2xhc3M6IGJvb2xlYW4gPSB0aGlzLl9zdXBwb3J0c0FyZ3VtZW50c0NsYXNzKCk7XHJcbiAgICAgICAgcmV0dXJuIHN1cHBvcnRzQXJnc0NsYXNzID8gdGhpcy5faXNBcmd1bWVudHNXaGVuQXJnc0NsYXNzU3VwcG9ydGVkKHgpIDogdGhpcy5faXNBcmd1bWVudHNXaGVuQXJnc0NsYXNzTm90U3VwcG9ydGVkKHgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIF9pc0FyZ3VtZW50c1doZW5BcmdzQ2xhc3NOb3RTdXBwb3J0ZWQob2JqZWN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gb2JqZWN0ICYmXHJcbiAgICAgICAgICAgIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICAgIHR5cGVvZiBvYmplY3QubGVuZ3RoID09PSAnbnVtYmVyJyAmJlxyXG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnY2FsbGVlJykgJiZcclxuICAgICAgICAgICAgIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsICdjYWxsZWUnKSB8fFxyXG4gICAgICAgICAgICBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBfaXNBcmd1bWVudHNXaGVuQXJnc0NsYXNzU3VwcG9ydGVkKG9iamVjdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBBcmd1bWVudHNdJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBfc3VwcG9ydHNBcmd1bWVudHNDbGFzcygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50cykgPT09ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==