@recursyve/nice-ui-kit.v2 18.0.0-beta.144 → 20.0.0-beta.145

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 (659) hide show
  1. package/_index.scss +2 -2
  2. package/fesm2022/recursyve-nice-ui-kit.v2.mjs +899 -738
  3. package/fesm2022/recursyve-nice-ui-kit.v2.mjs.map +1 -1
  4. package/index.d.ts +3664 -3
  5. package/package.json +8 -10
  6. package/src/lib/components/base-form/base-form.theme.scss +2 -1
  7. package/src/lib/components/chip-list/chip-list.theme.scss +2 -2
  8. package/src/lib/components/date-range-picker/date-range-picker.theme.scss +6 -5
  9. package/src/lib/components/horizontal-stepper/horizontal-stepper.theme.scss +3 -2
  10. package/src/lib/components/navigation/vertical/vertical.theme.scss +8 -8
  11. package/src/lib/components/toggle-button-group/toggle-button-group.theme.scss +8 -7
  12. package/src/lib/nice.theme.scss +74 -82
  13. package/src/lib/nice.utils.scss +3 -1
  14. package/styles/main.scss +4 -4
  15. package/styles/nice.scss +3 -1
  16. package/styles/overrides/angular-material.scss +3 -3
  17. package/esm2022/lib/animations/defaults.mjs +0 -32
  18. package/esm2022/lib/animations/expand-collapse.mjs +0 -21
  19. package/esm2022/lib/animations/fade.mjs +0 -210
  20. package/esm2022/lib/animations/index.mjs +0 -2
  21. package/esm2022/lib/animations/public-api.mjs +0 -17
  22. package/esm2022/lib/animations/shake.mjs +0 -63
  23. package/esm2022/lib/animations/slide.mjs +0 -156
  24. package/esm2022/lib/animations/zoom.mjs +0 -46
  25. package/esm2022/lib/api/exceptions/api.exception.mjs +0 -3
  26. package/esm2022/lib/api/exceptions/exception.factory.mjs +0 -9
  27. package/esm2022/lib/api/index.mjs +0 -2
  28. package/esm2022/lib/api/interceptors/transform-response.interceptor.mjs +0 -28
  29. package/esm2022/lib/api/nice.api.mjs +0 -68
  30. package/esm2022/lib/api/public-api.mjs +0 -5
  31. package/esm2022/lib/components/alert/alert.component.mjs +0 -200
  32. package/esm2022/lib/components/alert/alert.module.mjs +0 -32
  33. package/esm2022/lib/components/alert/alert.service.mjs +0 -58
  34. package/esm2022/lib/components/alert/alert.types.mjs +0 -2
  35. package/esm2022/lib/components/alert/index.mjs +0 -2
  36. package/esm2022/lib/components/alert/public-api.mjs +0 -5
  37. package/esm2022/lib/components/assets-carousel/assets-carousel.component.mjs +0 -283
  38. package/esm2022/lib/components/assets-carousel/assets-carousel.constant.mjs +0 -3
  39. package/esm2022/lib/components/assets-carousel/assets-carousel.module.mjs +0 -88
  40. package/esm2022/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.mjs +0 -14
  41. package/esm2022/lib/components/assets-carousel/index.mjs +0 -2
  42. package/esm2022/lib/components/assets-carousel/public-api.mjs +0 -4
  43. package/esm2022/lib/components/async-typeahead/async-typeahead.component.mjs +0 -459
  44. package/esm2022/lib/components/async-typeahead/async-typeahead.constant.mjs +0 -3
  45. package/esm2022/lib/components/async-typeahead/async-typeahead.module.mjs +0 -64
  46. package/esm2022/lib/components/async-typeahead/index.mjs +0 -2
  47. package/esm2022/lib/components/async-typeahead/providers/async-typeahead.provider.mjs +0 -6
  48. package/esm2022/lib/components/async-typeahead/providers/async-typeahead.service.mjs +0 -219
  49. package/esm2022/lib/components/async-typeahead/public-api.mjs +0 -5
  50. package/esm2022/lib/components/base-form/base-form.component.mjs +0 -91
  51. package/esm2022/lib/components/base-form/base-form.module.mjs +0 -16
  52. package/esm2022/lib/components/base-form/form-submit.directive.mjs +0 -20
  53. package/esm2022/lib/components/base-form/index.mjs +0 -2
  54. package/esm2022/lib/components/base-form/nice-base.form.mjs +0 -14
  55. package/esm2022/lib/components/base-form/public-api.mjs +0 -5
  56. package/esm2022/lib/components/card/card.component.mjs +0 -60
  57. package/esm2022/lib/components/card/card.module.mjs +0 -24
  58. package/esm2022/lib/components/card/card.types.mjs +0 -2
  59. package/esm2022/lib/components/card/index.mjs +0 -2
  60. package/esm2022/lib/components/card/public-api.mjs +0 -3
  61. package/esm2022/lib/components/carousel/carousel.component.mjs +0 -51
  62. package/esm2022/lib/components/carousel/carousel.constant.mjs +0 -3
  63. package/esm2022/lib/components/carousel/carousel.module.mjs +0 -54
  64. package/esm2022/lib/components/carousel/index.mjs +0 -2
  65. package/esm2022/lib/components/carousel/interfaces/carousel-options.interface.mjs +0 -2
  66. package/esm2022/lib/components/carousel/picture-modal/index.mjs +0 -2
  67. package/esm2022/lib/components/carousel/picture-modal/picture-modal.component.mjs +0 -11
  68. package/esm2022/lib/components/carousel/picture-modal/picture-modal.service.mjs +0 -34
  69. package/esm2022/lib/components/carousel/picture-modal/public-api.mjs +0 -3
  70. package/esm2022/lib/components/carousel/pipe/carousel-layout.pipe.mjs +0 -17
  71. package/esm2022/lib/components/carousel/public-api.mjs +0 -4
  72. package/esm2022/lib/components/collapsable/collapsable.component.mjs +0 -36
  73. package/esm2022/lib/components/collapsable/collapsable.module.mjs +0 -25
  74. package/esm2022/lib/components/collapsable/index.mjs +0 -2
  75. package/esm2022/lib/components/collapsable/public-api.mjs +0 -3
  76. package/esm2022/lib/components/date-range-picker/components/header/header.component.mjs +0 -57
  77. package/esm2022/lib/components/date-range-picker/components/range-preset/range-preset.component.mjs +0 -107
  78. package/esm2022/lib/components/date-range-picker/date-range-picker.component.mjs +0 -95
  79. package/esm2022/lib/components/date-range-picker/date-range-picker.module.mjs +0 -56
  80. package/esm2022/lib/components/date-range-picker/index.mjs +0 -2
  81. package/esm2022/lib/components/date-range-picker/providers/date-range-picker.service.mjs +0 -17
  82. package/esm2022/lib/components/date-range-picker/public-api.mjs +0 -3
  83. package/esm2022/lib/components/drawer/drawer.component.mjs +0 -372
  84. package/esm2022/lib/components/drawer/drawer.module.mjs +0 -28
  85. package/esm2022/lib/components/drawer/drawer.service.mjs +0 -40
  86. package/esm2022/lib/components/drawer/drawer.types.mjs +0 -2
  87. package/esm2022/lib/components/drawer/index.mjs +0 -2
  88. package/esm2022/lib/components/drawer/public-api.mjs +0 -5
  89. package/esm2022/lib/components/export-bottom-sheet/export-bottom-sheet.component.mjs +0 -33
  90. package/esm2022/lib/components/export-bottom-sheet/export-bottom-sheet.module.mjs +0 -45
  91. package/esm2022/lib/components/export-bottom-sheet/index.mjs +0 -2
  92. package/esm2022/lib/components/export-bottom-sheet/models/export-strategy.model.mjs +0 -2
  93. package/esm2022/lib/components/export-bottom-sheet/providers/export-bottom-sheet.service.mjs +0 -28
  94. package/esm2022/lib/components/export-bottom-sheet/public-api.mjs +0 -5
  95. package/esm2022/lib/components/form-error/control-status.directive.mjs +0 -125
  96. package/esm2022/lib/components/form-error/form-error.component.mjs +0 -53
  97. package/esm2022/lib/components/form-error/form-error.module.mjs +0 -20
  98. package/esm2022/lib/components/form-error/index.mjs +0 -2
  99. package/esm2022/lib/components/form-error/public-api.mjs +0 -4
  100. package/esm2022/lib/components/horizontal-stepper/horizontal-stepper.component.mjs +0 -34
  101. package/esm2022/lib/components/horizontal-stepper/horizontal-stepper.module.mjs +0 -29
  102. package/esm2022/lib/components/horizontal-stepper/index.mjs +0 -2
  103. package/esm2022/lib/components/horizontal-stepper/public-api.mjs +0 -4
  104. package/esm2022/lib/components/horizontal-stepper/step.component.mjs +0 -22
  105. package/esm2022/lib/components/image-cropper/image-cropper.component.mjs +0 -1269
  106. package/esm2022/lib/components/image-cropper/image-cropper.module.mjs +0 -23
  107. package/esm2022/lib/components/image-cropper/index.mjs +0 -2
  108. package/esm2022/lib/components/image-cropper/public-api.mjs +0 -3
  109. package/esm2022/lib/components/image-cropper/resize-canvas.mjs +0 -76
  110. package/esm2022/lib/components/index.mjs +0 -2
  111. package/esm2022/lib/components/layout/index.mjs +0 -2
  112. package/esm2022/lib/components/layout/layout.component.mjs +0 -98
  113. package/esm2022/lib/components/layout/layout.module.mjs +0 -18
  114. package/esm2022/lib/components/layout/public-api.mjs +0 -3
  115. package/esm2022/lib/components/loading-spinner/index.mjs +0 -2
  116. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +0 -22
  117. package/esm2022/lib/components/loading-spinner/loading-spinner.module.mjs +0 -48
  118. package/esm2022/lib/components/loading-spinner/loading.constant.mjs +0 -3
  119. package/esm2022/lib/components/loading-spinner/loading.directive.mjs +0 -56
  120. package/esm2022/lib/components/loading-spinner/public-api.mjs +0 -4
  121. package/esm2022/lib/components/loading-toast/index.mjs +0 -2
  122. package/esm2022/lib/components/loading-toast/loading-toast.component.mjs +0 -38
  123. package/esm2022/lib/components/loading-toast/loading-toast.constant.mjs +0 -3
  124. package/esm2022/lib/components/loading-toast/loading-toast.directive.mjs +0 -64
  125. package/esm2022/lib/components/loading-toast/loading-toast.module.mjs +0 -62
  126. package/esm2022/lib/components/loading-toast/loading-toast.service.mjs +0 -47
  127. package/esm2022/lib/components/loading-toast/public-api.mjs +0 -6
  128. package/esm2022/lib/components/loading-toast/rxjs/show-loading-toast.operator.mjs +0 -12
  129. package/esm2022/lib/components/lottie/index.mjs +0 -2
  130. package/esm2022/lib/components/lottie/lottie.component.mjs +0 -52
  131. package/esm2022/lib/components/lottie/lottie.module.mjs +0 -18
  132. package/esm2022/lib/components/lottie/public-api.mjs +0 -3
  133. package/esm2022/lib/components/navigation/components/hint-component-base.mjs +0 -120
  134. package/esm2022/lib/components/navigation/directives/show-hint.directive.mjs +0 -187
  135. package/esm2022/lib/components/navigation/horizontal/components/basic/basic.component.mjs +0 -62
  136. package/esm2022/lib/components/navigation/horizontal/components/branch/branch.component.mjs +0 -80
  137. package/esm2022/lib/components/navigation/horizontal/components/divider/divider.component.mjs +0 -51
  138. package/esm2022/lib/components/navigation/horizontal/components/spacer/spacer.component.mjs +0 -51
  139. package/esm2022/lib/components/navigation/horizontal/horizontal.component.mjs +0 -50
  140. package/esm2022/lib/components/navigation/index.mjs +0 -2
  141. package/esm2022/lib/components/navigation/navigation.component.mjs +0 -83
  142. package/esm2022/lib/components/navigation/navigation.module.mjs +0 -108
  143. package/esm2022/lib/components/navigation/navigation.service.mjs +0 -188
  144. package/esm2022/lib/components/navigation/navigation.types.mjs +0 -2
  145. package/esm2022/lib/components/navigation/pipes/should-hide.pipe.mjs +0 -31
  146. package/esm2022/lib/components/navigation/pipes/should-show-hint.pipe.mjs +0 -32
  147. package/esm2022/lib/components/navigation/pipes/translate-with-context.pipe.mjs +0 -25
  148. package/esm2022/lib/components/navigation/providers/hide-item.resolver.mjs +0 -3
  149. package/esm2022/lib/components/navigation/providers/hint.resolver.mjs +0 -3
  150. package/esm2022/lib/components/navigation/providers/hint.service.mjs +0 -20
  151. package/esm2022/lib/components/navigation/providers/translation-context.service.mjs +0 -16
  152. package/esm2022/lib/components/navigation/public-api.mjs +0 -20
  153. package/esm2022/lib/components/navigation/vertical/components/aside/aside.component.mjs +0 -145
  154. package/esm2022/lib/components/navigation/vertical/components/basic/basic.component.mjs +0 -76
  155. package/esm2022/lib/components/navigation/vertical/components/collapsable/collapsable.component.mjs +0 -264
  156. package/esm2022/lib/components/navigation/vertical/components/divider/divider.component.mjs +0 -51
  157. package/esm2022/lib/components/navigation/vertical/components/group/group.component.mjs +0 -75
  158. package/esm2022/lib/components/navigation/vertical/components/spacer/spacer.component.mjs +0 -51
  159. package/esm2022/lib/components/navigation/vertical/vertical.component.mjs +0 -599
  160. package/esm2022/lib/components/public-api.mjs +0 -25
  161. package/esm2022/lib/components/search-bar/index.mjs +0 -2
  162. package/esm2022/lib/components/search-bar/public-api.mjs +0 -3
  163. package/esm2022/lib/components/search-bar/search-bar.component.mjs +0 -76
  164. package/esm2022/lib/components/search-bar/search-bar.module.mjs +0 -40
  165. package/esm2022/lib/components/sweet-alert/index.mjs +0 -2
  166. package/esm2022/lib/components/sweet-alert/public-api.mjs +0 -5
  167. package/esm2022/lib/components/sweet-alert/sweet-alert.component.mjs +0 -59
  168. package/esm2022/lib/components/sweet-alert/sweet-alert.constant.mjs +0 -3
  169. package/esm2022/lib/components/sweet-alert/sweet-alert.directive.mjs +0 -37
  170. package/esm2022/lib/components/sweet-alert/sweet-alert.module.mjs +0 -37
  171. package/esm2022/lib/components/sweet-alert/sweet-alert.service.mjs +0 -95
  172. package/esm2022/lib/components/toast/index.mjs +0 -2
  173. package/esm2022/lib/components/toast/public-api.mjs +0 -6
  174. package/esm2022/lib/components/toast/rxjs/show-success-or-error-toast.operator.mjs +0 -22
  175. package/esm2022/lib/components/toast/rxjs/show-toast.operator.mjs +0 -26
  176. package/esm2022/lib/components/toast/toast.component.mjs +0 -25
  177. package/esm2022/lib/components/toast/toast.constant.mjs +0 -3
  178. package/esm2022/lib/components/toast/toast.module.mjs +0 -57
  179. package/esm2022/lib/components/toast/toast.service.mjs +0 -65
  180. package/esm2022/lib/components/toggle-button-group/index.mjs +0 -2
  181. package/esm2022/lib/components/toggle-button-group/public-api.mjs +0 -4
  182. package/esm2022/lib/components/toggle-button-group/toggle-button-group.component.mjs +0 -134
  183. package/esm2022/lib/components/toggle-button-group/toggle-button-group.module.mjs +0 -26
  184. package/esm2022/lib/components/toggle-button-group/toggle-button.component.mjs +0 -19
  185. package/esm2022/lib/components/translation-form/components/textarea/translation-form-textarea.component.mjs +0 -38
  186. package/esm2022/lib/components/translation-form/components/textfield/translation-form-textfield.component.mjs +0 -26
  187. package/esm2022/lib/components/translation-form/components/translation-form.component.mjs +0 -172
  188. package/esm2022/lib/components/translation-form/components/translation-form.module.mjs +0 -71
  189. package/esm2022/lib/components/translation-form/decorators/translation-form-group.decorator.mjs +0 -4
  190. package/esm2022/lib/components/translation-form/directives/translation-context.directive.mjs +0 -48
  191. package/esm2022/lib/components/translation-form/index.mjs +0 -2
  192. package/esm2022/lib/components/translation-form/providers/nice-translation-form.service.mjs +0 -59
  193. package/esm2022/lib/components/translation-form/public-api.mjs +0 -11
  194. package/esm2022/lib/components/translation-form/toggle/translation-toggle.component.mjs +0 -26
  195. package/esm2022/lib/components/translation-form/translation.form.mjs +0 -6
  196. package/esm2022/lib/components/translation-form/validators/require-for-languages.validator.mjs +0 -43
  197. package/esm2022/lib/components/typeahead/directives/options-scroll.directive.mjs +0 -68
  198. package/esm2022/lib/components/typeahead/directives/options-scroll.module.mjs +0 -16
  199. package/esm2022/lib/components/typeahead/index.mjs +0 -2
  200. package/esm2022/lib/components/typeahead/public-api.mjs +0 -4
  201. package/esm2022/lib/components/typeahead/typeahead.component.mjs +0 -490
  202. package/esm2022/lib/components/typeahead/typeahead.module.mjs +0 -59
  203. package/esm2022/lib/directives/autofocus/autofocus.directive.mjs +0 -17
  204. package/esm2022/lib/directives/autofocus/autofocus.module.mjs +0 -16
  205. package/esm2022/lib/directives/autofocus/index.mjs +0 -2
  206. package/esm2022/lib/directives/autofocus/public-api.mjs +0 -3
  207. package/esm2022/lib/directives/autogrow/autogrow.directive.mjs +0 -105
  208. package/esm2022/lib/directives/autogrow/autogrow.module.mjs +0 -20
  209. package/esm2022/lib/directives/autogrow/index.mjs +0 -2
  210. package/esm2022/lib/directives/autogrow/public-api.mjs +0 -3
  211. package/esm2022/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.mjs +0 -39
  212. package/esm2022/lib/directives/chip-async-typeahead/index.mjs +0 -2
  213. package/esm2022/lib/directives/chip-async-typeahead/public-api.mjs +0 -2
  214. package/esm2022/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.mjs +0 -14
  215. package/esm2022/lib/directives/chip-list/chip-list-items/chip-list-items.component.mjs +0 -46
  216. package/esm2022/lib/directives/chip-list/chip-list.constant.mjs +0 -3
  217. package/esm2022/lib/directives/chip-list/chip-list.directive.mjs +0 -144
  218. package/esm2022/lib/directives/chip-list/chip-list.module.mjs +0 -40
  219. package/esm2022/lib/directives/chip-list/index.mjs +0 -2
  220. package/esm2022/lib/directives/chip-list/public-api.mjs +0 -5
  221. package/esm2022/lib/directives/draggable-list/draggable-list.directive.mjs +0 -94
  222. package/esm2022/lib/directives/draggable-list/draggable-list.module.mjs +0 -18
  223. package/esm2022/lib/directives/draggable-list/index.mjs +0 -2
  224. package/esm2022/lib/directives/draggable-list/public-api.mjs +0 -3
  225. package/esm2022/lib/directives/dropzone/dropzone.directive.mjs +0 -50
  226. package/esm2022/lib/directives/dropzone/dropzone.module.mjs +0 -18
  227. package/esm2022/lib/directives/dropzone/index.mjs +0 -2
  228. package/esm2022/lib/directives/dropzone/public-api.mjs +0 -3
  229. package/esm2022/lib/directives/image-error-placeholder/image-error-placeholder.directive.mjs +0 -26
  230. package/esm2022/lib/directives/image-error-placeholder/image-error-placeholder.module.mjs +0 -16
  231. package/esm2022/lib/directives/image-error-placeholder/index.mjs +0 -2
  232. package/esm2022/lib/directives/image-error-placeholder/public-api.mjs +0 -3
  233. package/esm2022/lib/directives/index.mjs +0 -2
  234. package/esm2022/lib/directives/material/index.mjs +0 -2
  235. package/esm2022/lib/directives/material/material.module.mjs +0 -25
  236. package/esm2022/lib/directives/material/nice-material-style.directive.mjs +0 -18
  237. package/esm2022/lib/directives/material/nice-rounded-style.directive.mjs +0 -18
  238. package/esm2022/lib/directives/material/public-api.mjs +0 -4
  239. package/esm2022/lib/directives/modals/index.mjs +0 -2
  240. package/esm2022/lib/directives/modals/modal-on-click.directive.mjs +0 -22
  241. package/esm2022/lib/directives/modals/modal-opener.directive.mjs +0 -31
  242. package/esm2022/lib/directives/modals/public-api.mjs +0 -3
  243. package/esm2022/lib/directives/public-api.mjs +0 -16
  244. package/esm2022/lib/directives/rerender/index.mjs +0 -2
  245. package/esm2022/lib/directives/rerender/public-api.mjs +0 -2
  246. package/esm2022/lib/directives/rerender/rerender.directive.mjs +0 -22
  247. package/esm2022/lib/directives/resolve/index.mjs +0 -2
  248. package/esm2022/lib/directives/resolve/public-api.mjs +0 -2
  249. package/esm2022/lib/directives/resolve/resolve.directive.mjs +0 -32
  250. package/esm2022/lib/directives/scroll-reset/index.mjs +0 -2
  251. package/esm2022/lib/directives/scroll-reset/public-api.mjs +0 -3
  252. package/esm2022/lib/directives/scroll-reset/scroll-reset.directive.mjs +0 -47
  253. package/esm2022/lib/directives/scroll-reset/scroll-reset.module.mjs +0 -20
  254. package/esm2022/lib/directives/scrollbar/index.mjs +0 -2
  255. package/esm2022/lib/directives/scrollbar/public-api.mjs +0 -3
  256. package/esm2022/lib/directives/scrollbar/scrollbar.directive.mjs +0 -309
  257. package/esm2022/lib/directives/scrollbar/scrollbar.module.mjs +0 -20
  258. package/esm2022/lib/directives/scrollbar/scrollbar.types.mjs +0 -15
  259. package/esm2022/lib/directives/stop-propagation/click-stop-propagation.directive.mjs +0 -18
  260. package/esm2022/lib/directives/stop-propagation/index.mjs +0 -2
  261. package/esm2022/lib/directives/stop-propagation/public-api.mjs +0 -3
  262. package/esm2022/lib/directives/stop-propagation/stop-propagation.module.mjs +0 -16
  263. package/esm2022/lib/directives/window/index.mjs +0 -2
  264. package/esm2022/lib/directives/window/prevent-close-window.directive.mjs +0 -18
  265. package/esm2022/lib/directives/window/public-api.mjs +0 -3
  266. package/esm2022/lib/directives/window/window-directive.module.mjs +0 -16
  267. package/esm2022/lib/nice.module.mjs +0 -124
  268. package/esm2022/lib/pipes/boolean.pipe.mjs +0 -22
  269. package/esm2022/lib/pipes/capitalize-first-letter.pipe.mjs +0 -18
  270. package/esm2022/lib/pipes/ceil.pipe.mjs +0 -14
  271. package/esm2022/lib/pipes/entries.pipe.mjs +0 -23
  272. package/esm2022/lib/pipes/find-by-key.pipe.mjs +0 -14
  273. package/esm2022/lib/pipes/first-letter.pipe.mjs +0 -14
  274. package/esm2022/lib/pipes/floor.pipe.mjs +0 -14
  275. package/esm2022/lib/pipes/index.mjs +0 -2
  276. package/esm2022/lib/pipes/join-if-defined.pipe.mjs +0 -20
  277. package/esm2022/lib/pipes/link.pipe.mjs +0 -25
  278. package/esm2022/lib/pipes/localized-boolean.pipe.mjs +0 -19
  279. package/esm2022/lib/pipes/localized-currency.pipe.mjs +0 -18
  280. package/esm2022/lib/pipes/localized-date-only.pipe.mjs +0 -21
  281. package/esm2022/lib/pipes/localized-date.pipe.mjs +0 -40
  282. package/esm2022/lib/pipes/minutes-to-time.pipe.mjs +0 -17
  283. package/esm2022/lib/pipes/number-to-ordinal-indicator.pipe.mjs +0 -23
  284. package/esm2022/lib/pipes/pad.pipe.mjs +0 -20
  285. package/esm2022/lib/pipes/phone.pipe.mjs +0 -23
  286. package/esm2022/lib/pipes/pipes.module.mjs +0 -177
  287. package/esm2022/lib/pipes/postal-code.pipe.mjs +0 -22
  288. package/esm2022/lib/pipes/public-api.mjs +0 -25
  289. package/esm2022/lib/pipes/range.pipe.mjs +0 -18
  290. package/esm2022/lib/pipes/round.pipe.mjs +0 -14
  291. package/esm2022/lib/pipes/sanitize-bypass.pipe.mjs +0 -24
  292. package/esm2022/lib/pipes/seconds-to-time.pipe.mjs +0 -18
  293. package/esm2022/lib/pipes/track-by-prop.pipe.mjs +0 -14
  294. package/esm2022/lib/providers/config/config.constants.mjs +0 -3
  295. package/esm2022/lib/providers/config/config.model.mjs +0 -2
  296. package/esm2022/lib/providers/config/config.module.mjs +0 -34
  297. package/esm2022/lib/providers/config/config.service.mjs +0 -51
  298. package/esm2022/lib/providers/config/index.mjs +0 -2
  299. package/esm2022/lib/providers/config/public-api.mjs +0 -3
  300. package/esm2022/lib/providers/index.mjs +0 -2
  301. package/esm2022/lib/providers/media-watcher/index.mjs +0 -2
  302. package/esm2022/lib/providers/media-watcher/media-watcher.module.mjs +0 -26
  303. package/esm2022/lib/providers/media-watcher/media-watcher.service.mjs +0 -106
  304. package/esm2022/lib/providers/media-watcher/public-api.mjs +0 -3
  305. package/esm2022/lib/providers/overlay/dynamic-overlay-container.service.mjs +0 -14
  306. package/esm2022/lib/providers/overlay/dynamic-overlay.service.mjs +0 -31
  307. package/esm2022/lib/providers/public-api.mjs +0 -5
  308. package/esm2022/lib/providers/splash-screen/index.mjs +0 -2
  309. package/esm2022/lib/providers/splash-screen/public-api.mjs +0 -3
  310. package/esm2022/lib/providers/splash-screen/splash-screen.module.mjs +0 -26
  311. package/esm2022/lib/providers/splash-screen/splash-screen.service.mjs +0 -45
  312. package/esm2022/lib/providers/utils/index.mjs +0 -2
  313. package/esm2022/lib/providers/utils/public-api.mjs +0 -3
  314. package/esm2022/lib/providers/utils/utils.module.mjs +0 -19
  315. package/esm2022/lib/providers/utils/utils.service.mjs +0 -27
  316. package/esm2022/lib/types/constructor.mjs +0 -5
  317. package/esm2022/lib/utils/array.utils.mjs +0 -106
  318. package/esm2022/lib/utils/case.utils.mjs +0 -58
  319. package/esm2022/lib/utils/colors.utils.mjs +0 -29
  320. package/esm2022/lib/utils/date.utils.mjs +0 -47
  321. package/esm2022/lib/utils/file.utils.mjs +0 -90
  322. package/esm2022/lib/utils/font-awesome.utils.mjs +0 -40
  323. package/esm2022/lib/utils/form-data.utils.mjs +0 -41
  324. package/esm2022/lib/utils/http-status.utils.mjs +0 -47
  325. package/esm2022/lib/utils/index.mjs +0 -2
  326. package/esm2022/lib/utils/keyboard.utils.mjs +0 -9
  327. package/esm2022/lib/utils/lexorank.utils.mjs +0 -28
  328. package/esm2022/lib/utils/modal.utils.mjs +0 -6
  329. package/esm2022/lib/utils/number.utils.mjs +0 -6
  330. package/esm2022/lib/utils/object.utils.mjs +0 -111
  331. package/esm2022/lib/utils/promise.utils.mjs +0 -7
  332. package/esm2022/lib/utils/public-api.mjs +0 -19
  333. package/esm2022/lib/utils/query-params.utils.mjs +0 -14
  334. package/esm2022/lib/utils/regex.utils.mjs +0 -11
  335. package/esm2022/lib/utils/type.utils.mjs +0 -15
  336. package/esm2022/lib/utils/url.utils.mjs +0 -20
  337. package/esm2022/public-api.mjs +0 -12
  338. package/esm2022/recursyve-nice-ui-kit.v2.mjs +0 -5
  339. package/lib/animations/defaults.d.ts +0 -13
  340. package/lib/animations/expand-collapse.d.ts +0 -2
  341. package/lib/animations/fade.d.ts +0 -11
  342. package/lib/animations/index.d.ts +0 -1
  343. package/lib/animations/public-api.d.ts +0 -1
  344. package/lib/animations/shake.d.ts +0 -2
  345. package/lib/animations/slide.d.ts +0 -9
  346. package/lib/animations/zoom.d.ts +0 -3
  347. package/lib/api/exceptions/api.exception.d.ts +0 -3
  348. package/lib/api/exceptions/exception.factory.d.ts +0 -6
  349. package/lib/api/index.d.ts +0 -1
  350. package/lib/api/interceptors/transform-response.interceptor.d.ts +0 -9
  351. package/lib/api/nice.api.d.ts +0 -33
  352. package/lib/api/public-api.d.ts +0 -4
  353. package/lib/components/alert/alert.component.d.ts +0 -64
  354. package/lib/components/alert/alert.module.d.ts +0 -10
  355. package/lib/components/alert/alert.service.d.ts +0 -24
  356. package/lib/components/alert/alert.types.d.ts +0 -3
  357. package/lib/components/alert/index.d.ts +0 -1
  358. package/lib/components/alert/public-api.d.ts +0 -4
  359. package/lib/components/assets-carousel/assets-carousel.component.d.ts +0 -88
  360. package/lib/components/assets-carousel/assets-carousel.constant.d.ts +0 -2
  361. package/lib/components/assets-carousel/assets-carousel.module.d.ts +0 -19
  362. package/lib/components/assets-carousel/directives/assets-carousel-active-content.directive.d.ts +0 -8
  363. package/lib/components/assets-carousel/index.d.ts +0 -1
  364. package/lib/components/assets-carousel/public-api.d.ts +0 -3
  365. package/lib/components/async-typeahead/async-typeahead.component.d.ts +0 -119
  366. package/lib/components/async-typeahead/async-typeahead.constant.d.ts +0 -2
  367. package/lib/components/async-typeahead/async-typeahead.module.d.ts +0 -19
  368. package/lib/components/async-typeahead/index.d.ts +0 -1
  369. package/lib/components/async-typeahead/providers/async-typeahead.provider.d.ts +0 -11
  370. package/lib/components/async-typeahead/providers/async-typeahead.service.d.ts +0 -51
  371. package/lib/components/async-typeahead/public-api.d.ts +0 -4
  372. package/lib/components/base-form/base-form.component.d.ts +0 -30
  373. package/lib/components/base-form/base-form.module.d.ts +0 -7
  374. package/lib/components/base-form/form-submit.directive.d.ts +0 -8
  375. package/lib/components/base-form/index.d.ts +0 -1
  376. package/lib/components/base-form/nice-base.form.d.ts +0 -4
  377. package/lib/components/base-form/public-api.d.ts +0 -4
  378. package/lib/components/card/card.component.d.ts +0 -21
  379. package/lib/components/card/card.module.d.ts +0 -8
  380. package/lib/components/card/card.types.d.ts +0 -1
  381. package/lib/components/card/index.d.ts +0 -1
  382. package/lib/components/card/public-api.d.ts +0 -2
  383. package/lib/components/carousel/carousel.component.d.ts +0 -23
  384. package/lib/components/carousel/carousel.constant.d.ts +0 -2
  385. package/lib/components/carousel/carousel.module.d.ts +0 -17
  386. package/lib/components/carousel/index.d.ts +0 -1
  387. package/lib/components/carousel/interfaces/carousel-options.interface.d.ts +0 -9
  388. package/lib/components/carousel/picture-modal/index.d.ts +0 -1
  389. package/lib/components/carousel/picture-modal/picture-modal.component.d.ts +0 -6
  390. package/lib/components/carousel/picture-modal/picture-modal.service.d.ts +0 -12
  391. package/lib/components/carousel/picture-modal/public-api.d.ts +0 -2
  392. package/lib/components/carousel/pipe/carousel-layout.pipe.d.ts +0 -7
  393. package/lib/components/carousel/public-api.d.ts +0 -3
  394. package/lib/components/collapsable/collapsable.component.d.ts +0 -15
  395. package/lib/components/collapsable/collapsable.module.d.ts +0 -9
  396. package/lib/components/collapsable/index.d.ts +0 -1
  397. package/lib/components/collapsable/public-api.d.ts +0 -2
  398. package/lib/components/date-range-picker/components/header/header.component.d.ts +0 -20
  399. package/lib/components/date-range-picker/components/range-preset/range-preset.component.d.ts +0 -23
  400. package/lib/components/date-range-picker/date-range-picker.component.d.ts +0 -28
  401. package/lib/components/date-range-picker/date-range-picker.module.d.ts +0 -18
  402. package/lib/components/date-range-picker/index.d.ts +0 -1
  403. package/lib/components/date-range-picker/providers/date-range-picker.service.d.ts +0 -8
  404. package/lib/components/date-range-picker/public-api.d.ts +0 -2
  405. package/lib/components/drawer/drawer.component.d.ts +0 -115
  406. package/lib/components/drawer/drawer.module.d.ts +0 -9
  407. package/lib/components/drawer/drawer.service.d.ts +0 -23
  408. package/lib/components/drawer/drawer.types.d.ts +0 -2
  409. package/lib/components/drawer/index.d.ts +0 -1
  410. package/lib/components/drawer/public-api.d.ts +0 -4
  411. package/lib/components/export-bottom-sheet/export-bottom-sheet.component.d.ts +0 -17
  412. package/lib/components/export-bottom-sheet/export-bottom-sheet.module.d.ts +0 -18
  413. package/lib/components/export-bottom-sheet/index.d.ts +0 -1
  414. package/lib/components/export-bottom-sheet/models/export-strategy.model.d.ts +0 -5
  415. package/lib/components/export-bottom-sheet/providers/export-bottom-sheet.service.d.ts +0 -12
  416. package/lib/components/export-bottom-sheet/public-api.d.ts +0 -4
  417. package/lib/components/form-error/control-status.directive.d.ts +0 -20
  418. package/lib/components/form-error/form-error.component.d.ts +0 -8
  419. package/lib/components/form-error/form-error.module.d.ts +0 -10
  420. package/lib/components/form-error/index.d.ts +0 -1
  421. package/lib/components/form-error/public-api.d.ts +0 -3
  422. package/lib/components/horizontal-stepper/horizontal-stepper.component.d.ts +0 -8
  423. package/lib/components/horizontal-stepper/horizontal-stepper.module.d.ts +0 -11
  424. package/lib/components/horizontal-stepper/index.d.ts +0 -1
  425. package/lib/components/horizontal-stepper/public-api.d.ts +0 -3
  426. package/lib/components/horizontal-stepper/step.component.d.ts +0 -6
  427. package/lib/components/image-cropper/image-cropper.component.d.ts +0 -374
  428. package/lib/components/image-cropper/image-cropper.module.d.ts +0 -10
  429. package/lib/components/image-cropper/index.d.ts +0 -1
  430. package/lib/components/image-cropper/public-api.d.ts +0 -2
  431. package/lib/components/image-cropper/resize-canvas.d.ts +0 -1
  432. package/lib/components/index.d.ts +0 -1
  433. package/lib/components/layout/index.d.ts +0 -1
  434. package/lib/components/layout/layout.component.d.ts +0 -39
  435. package/lib/components/layout/layout.module.d.ts +0 -7
  436. package/lib/components/layout/public-api.d.ts +0 -2
  437. package/lib/components/loading-spinner/index.d.ts +0 -1
  438. package/lib/components/loading-spinner/loading-spinner.component.d.ts +0 -9
  439. package/lib/components/loading-spinner/loading-spinner.module.d.ts +0 -13
  440. package/lib/components/loading-spinner/loading.constant.d.ts +0 -2
  441. package/lib/components/loading-spinner/loading.directive.d.ts +0 -17
  442. package/lib/components/loading-spinner/public-api.d.ts +0 -3
  443. package/lib/components/loading-toast/index.d.ts +0 -1
  444. package/lib/components/loading-toast/loading-toast.component.d.ts +0 -19
  445. package/lib/components/loading-toast/loading-toast.constant.d.ts +0 -2
  446. package/lib/components/loading-toast/loading-toast.directive.d.ts +0 -18
  447. package/lib/components/loading-toast/loading-toast.module.d.ts +0 -16
  448. package/lib/components/loading-toast/loading-toast.service.d.ts +0 -20
  449. package/lib/components/loading-toast/public-api.d.ts +0 -5
  450. package/lib/components/loading-toast/rxjs/show-loading-toast.operator.d.ts +0 -6
  451. package/lib/components/lottie/index.d.ts +0 -1
  452. package/lib/components/lottie/lottie.component.d.ts +0 -19
  453. package/lib/components/lottie/lottie.module.d.ts +0 -8
  454. package/lib/components/lottie/public-api.d.ts +0 -2
  455. package/lib/components/navigation/components/hint-component-base.d.ts +0 -65
  456. package/lib/components/navigation/directives/show-hint.directive.d.ts +0 -39
  457. package/lib/components/navigation/horizontal/components/basic/basic.component.d.ts +0 -29
  458. package/lib/components/navigation/horizontal/components/branch/branch.component.d.ts +0 -38
  459. package/lib/components/navigation/horizontal/components/divider/divider.component.d.ts +0 -26
  460. package/lib/components/navigation/horizontal/components/spacer/spacer.component.d.ts +0 -26
  461. package/lib/components/navigation/horizontal/horizontal.component.d.ts +0 -22
  462. package/lib/components/navigation/index.d.ts +0 -1
  463. package/lib/components/navigation/navigation.component.d.ts +0 -32
  464. package/lib/components/navigation/navigation.module.d.ts +0 -32
  465. package/lib/components/navigation/navigation.service.d.ts +0 -69
  466. package/lib/components/navigation/navigation.types.d.ts +0 -42
  467. package/lib/components/navigation/pipes/should-hide.pipe.d.ts +0 -11
  468. package/lib/components/navigation/pipes/should-show-hint.pipe.d.ts +0 -12
  469. package/lib/components/navigation/pipes/translate-with-context.pipe.d.ts +0 -12
  470. package/lib/components/navigation/providers/hide-item.resolver.d.ts +0 -5
  471. package/lib/components/navigation/providers/hint.resolver.d.ts +0 -4
  472. package/lib/components/navigation/providers/hint.service.d.ts +0 -9
  473. package/lib/components/navigation/providers/translation-context.service.d.ts +0 -8
  474. package/lib/components/navigation/public-api.d.ts +0 -19
  475. package/lib/components/navigation/vertical/components/aside/aside.component.d.ts +0 -55
  476. package/lib/components/navigation/vertical/components/basic/basic.component.d.ts +0 -35
  477. package/lib/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +0 -68
  478. package/lib/components/navigation/vertical/components/divider/divider.component.d.ts +0 -26
  479. package/lib/components/navigation/vertical/components/group/group.component.d.ts +0 -36
  480. package/lib/components/navigation/vertical/components/spacer/spacer.component.d.ts +0 -26
  481. package/lib/components/navigation/vertical/vertical.component.d.ts +0 -168
  482. package/lib/components/public-api.d.ts +0 -24
  483. package/lib/components/search-bar/index.d.ts +0 -1
  484. package/lib/components/search-bar/public-api.d.ts +0 -2
  485. package/lib/components/search-bar/search-bar.component.d.ts +0 -20
  486. package/lib/components/search-bar/search-bar.module.d.ts +0 -12
  487. package/lib/components/sweet-alert/index.d.ts +0 -1
  488. package/lib/components/sweet-alert/public-api.d.ts +0 -4
  489. package/lib/components/sweet-alert/sweet-alert.component.d.ts +0 -27
  490. package/lib/components/sweet-alert/sweet-alert.constant.d.ts +0 -2
  491. package/lib/components/sweet-alert/sweet-alert.directive.d.ts +0 -13
  492. package/lib/components/sweet-alert/sweet-alert.module.d.ts +0 -16
  493. package/lib/components/sweet-alert/sweet-alert.service.d.ts +0 -32
  494. package/lib/components/toast/index.d.ts +0 -1
  495. package/lib/components/toast/public-api.d.ts +0 -5
  496. package/lib/components/toast/rxjs/show-success-or-error-toast.operator.d.ts +0 -37
  497. package/lib/components/toast/rxjs/show-toast.operator.d.ts +0 -20
  498. package/lib/components/toast/toast.component.d.ts +0 -17
  499. package/lib/components/toast/toast.constant.d.ts +0 -2
  500. package/lib/components/toast/toast.module.d.ts +0 -15
  501. package/lib/components/toast/toast.service.d.ts +0 -25
  502. package/lib/components/toggle-button-group/index.d.ts +0 -1
  503. package/lib/components/toggle-button-group/public-api.d.ts +0 -3
  504. package/lib/components/toggle-button-group/toggle-button-group.component.d.ts +0 -26
  505. package/lib/components/toggle-button-group/toggle-button-group.module.d.ts +0 -10
  506. package/lib/components/toggle-button-group/toggle-button.component.d.ts +0 -8
  507. package/lib/components/translation-form/components/textarea/translation-form-textarea.component.d.ts +0 -9
  508. package/lib/components/translation-form/components/textfield/translation-form-textfield.component.d.ts +0 -6
  509. package/lib/components/translation-form/components/translation-form.component.d.ts +0 -56
  510. package/lib/components/translation-form/components/translation-form.module.d.ts +0 -16
  511. package/lib/components/translation-form/decorators/translation-form-group.decorator.d.ts +0 -1
  512. package/lib/components/translation-form/directives/translation-context.directive.d.ts +0 -17
  513. package/lib/components/translation-form/index.d.ts +0 -1
  514. package/lib/components/translation-form/providers/nice-translation-form.service.d.ts +0 -16
  515. package/lib/components/translation-form/public-api.d.ts +0 -10
  516. package/lib/components/translation-form/toggle/translation-toggle.component.d.ts +0 -14
  517. package/lib/components/translation-form/translation.form.d.ts +0 -5
  518. package/lib/components/translation-form/validators/require-for-languages.validator.d.ts +0 -14
  519. package/lib/components/typeahead/directives/options-scroll.directive.d.ts +0 -19
  520. package/lib/components/typeahead/directives/options-scroll.module.d.ts +0 -7
  521. package/lib/components/typeahead/index.d.ts +0 -1
  522. package/lib/components/typeahead/public-api.d.ts +0 -3
  523. package/lib/components/typeahead/typeahead.component.d.ts +0 -101
  524. package/lib/components/typeahead/typeahead.module.d.ts +0 -17
  525. package/lib/directives/autofocus/autofocus.directive.d.ts +0 -9
  526. package/lib/directives/autofocus/autofocus.module.d.ts +0 -7
  527. package/lib/directives/autofocus/index.d.ts +0 -1
  528. package/lib/directives/autofocus/public-api.d.ts +0 -2
  529. package/lib/directives/autogrow/autogrow.directive.d.ts +0 -37
  530. package/lib/directives/autogrow/autogrow.module.d.ts +0 -7
  531. package/lib/directives/autogrow/index.d.ts +0 -1
  532. package/lib/directives/autogrow/public-api.d.ts +0 -2
  533. package/lib/directives/chip-async-typeahead/chip-async-typeahead.directive.d.ts +0 -14
  534. package/lib/directives/chip-async-typeahead/index.d.ts +0 -1
  535. package/lib/directives/chip-async-typeahead/public-api.d.ts +0 -1
  536. package/lib/directives/chip-list/chip-list-items/chip-list-item-label.directive.d.ts +0 -8
  537. package/lib/directives/chip-list/chip-list-items/chip-list-items.component.d.ts +0 -26
  538. package/lib/directives/chip-list/chip-list.constant.d.ts +0 -2
  539. package/lib/directives/chip-list/chip-list.directive.d.ts +0 -32
  540. package/lib/directives/chip-list/chip-list.module.d.ts +0 -14
  541. package/lib/directives/chip-list/index.d.ts +0 -1
  542. package/lib/directives/chip-list/public-api.d.ts +0 -4
  543. package/lib/directives/draggable-list/draggable-list.directive.d.ts +0 -24
  544. package/lib/directives/draggable-list/draggable-list.module.d.ts +0 -8
  545. package/lib/directives/draggable-list/index.d.ts +0 -1
  546. package/lib/directives/draggable-list/public-api.d.ts +0 -2
  547. package/lib/directives/dropzone/dropzone.directive.d.ts +0 -11
  548. package/lib/directives/dropzone/dropzone.module.d.ts +0 -7
  549. package/lib/directives/dropzone/index.d.ts +0 -1
  550. package/lib/directives/dropzone/public-api.d.ts +0 -2
  551. package/lib/directives/image-error-placeholder/image-error-placeholder.directive.d.ts +0 -11
  552. package/lib/directives/image-error-placeholder/image-error-placeholder.module.d.ts +0 -7
  553. package/lib/directives/image-error-placeholder/index.d.ts +0 -1
  554. package/lib/directives/image-error-placeholder/public-api.d.ts +0 -2
  555. package/lib/directives/index.d.ts +0 -1
  556. package/lib/directives/material/index.d.ts +0 -1
  557. package/lib/directives/material/material.module.d.ts +0 -8
  558. package/lib/directives/material/nice-material-style.directive.d.ts +0 -9
  559. package/lib/directives/material/nice-rounded-style.directive.d.ts +0 -9
  560. package/lib/directives/material/public-api.d.ts +0 -3
  561. package/lib/directives/modals/index.d.ts +0 -1
  562. package/lib/directives/modals/modal-on-click.directive.d.ts +0 -10
  563. package/lib/directives/modals/modal-opener.directive.d.ts +0 -14
  564. package/lib/directives/modals/public-api.d.ts +0 -2
  565. package/lib/directives/public-api.d.ts +0 -15
  566. package/lib/directives/rerender/index.d.ts +0 -1
  567. package/lib/directives/rerender/public-api.d.ts +0 -1
  568. package/lib/directives/rerender/rerender.directive.d.ts +0 -10
  569. package/lib/directives/resolve/index.d.ts +0 -1
  570. package/lib/directives/resolve/public-api.d.ts +0 -1
  571. package/lib/directives/resolve/resolve.directive.d.ts +0 -18
  572. package/lib/directives/scroll-reset/index.d.ts +0 -1
  573. package/lib/directives/scroll-reset/public-api.d.ts +0 -2
  574. package/lib/directives/scroll-reset/scroll-reset.directive.d.ts +0 -22
  575. package/lib/directives/scroll-reset/scroll-reset.module.d.ts +0 -7
  576. package/lib/directives/scrollbar/index.d.ts +0 -1
  577. package/lib/directives/scrollbar/public-api.d.ts +0 -2
  578. package/lib/directives/scrollbar/scrollbar.directive.d.ts +0 -112
  579. package/lib/directives/scrollbar/scrollbar.module.d.ts +0 -7
  580. package/lib/directives/scrollbar/scrollbar.types.d.ts +0 -12
  581. package/lib/directives/stop-propagation/click-stop-propagation.directive.d.ts +0 -6
  582. package/lib/directives/stop-propagation/index.d.ts +0 -1
  583. package/lib/directives/stop-propagation/public-api.d.ts +0 -2
  584. package/lib/directives/stop-propagation/stop-propagation.module.d.ts +0 -7
  585. package/lib/directives/window/index.d.ts +0 -1
  586. package/lib/directives/window/prevent-close-window.directive.d.ts +0 -6
  587. package/lib/directives/window/public-api.d.ts +0 -2
  588. package/lib/directives/window/window-directive.module.d.ts +0 -7
  589. package/lib/nice.module.d.ts +0 -13
  590. package/lib/pipes/boolean.pipe.d.ts +0 -10
  591. package/lib/pipes/capitalize-first-letter.pipe.d.ts +0 -7
  592. package/lib/pipes/ceil.pipe.d.ts +0 -7
  593. package/lib/pipes/entries.pipe.d.ts +0 -10
  594. package/lib/pipes/find-by-key.pipe.d.ts +0 -7
  595. package/lib/pipes/first-letter.pipe.d.ts +0 -7
  596. package/lib/pipes/floor.pipe.d.ts +0 -7
  597. package/lib/pipes/index.d.ts +0 -1
  598. package/lib/pipes/join-if-defined.pipe.d.ts +0 -7
  599. package/lib/pipes/link.pipe.d.ts +0 -15
  600. package/lib/pipes/localized-boolean.pipe.d.ts +0 -10
  601. package/lib/pipes/localized-currency.pipe.d.ts +0 -10
  602. package/lib/pipes/localized-date-only.pipe.d.ts +0 -10
  603. package/lib/pipes/localized-date.pipe.d.ts +0 -11
  604. package/lib/pipes/minutes-to-time.pipe.d.ts +0 -7
  605. package/lib/pipes/number-to-ordinal-indicator.pipe.d.ts +0 -7
  606. package/lib/pipes/pad.pipe.d.ts +0 -7
  607. package/lib/pipes/phone.pipe.d.ts +0 -10
  608. package/lib/pipes/pipes.module.d.ts +0 -29
  609. package/lib/pipes/postal-code.pipe.d.ts +0 -10
  610. package/lib/pipes/public-api.d.ts +0 -24
  611. package/lib/pipes/range.pipe.d.ts +0 -7
  612. package/lib/pipes/round.pipe.d.ts +0 -7
  613. package/lib/pipes/sanitize-bypass.pipe.d.ts +0 -10
  614. package/lib/pipes/seconds-to-time.pipe.d.ts +0 -7
  615. package/lib/pipes/track-by-prop.pipe.d.ts +0 -7
  616. package/lib/providers/config/config.constants.d.ts +0 -2
  617. package/lib/providers/config/config.model.d.ts +0 -14
  618. package/lib/providers/config/config.module.d.ts +0 -18
  619. package/lib/providers/config/config.service.d.ts +0 -21
  620. package/lib/providers/config/index.d.ts +0 -1
  621. package/lib/providers/config/public-api.d.ts +0 -2
  622. package/lib/providers/index.d.ts +0 -1
  623. package/lib/providers/media-watcher/index.d.ts +0 -1
  624. package/lib/providers/media-watcher/media-watcher.module.d.ts +0 -12
  625. package/lib/providers/media-watcher/media-watcher.service.d.ts +0 -27
  626. package/lib/providers/media-watcher/public-api.d.ts +0 -2
  627. package/lib/providers/overlay/dynamic-overlay-container.service.d.ts +0 -7
  628. package/lib/providers/overlay/dynamic-overlay.service.d.ts +0 -14
  629. package/lib/providers/public-api.d.ts +0 -4
  630. package/lib/providers/splash-screen/index.d.ts +0 -1
  631. package/lib/providers/splash-screen/public-api.d.ts +0 -2
  632. package/lib/providers/splash-screen/splash-screen.module.d.ts +0 -12
  633. package/lib/providers/splash-screen/splash-screen.service.d.ts +0 -20
  634. package/lib/providers/utils/index.d.ts +0 -1
  635. package/lib/providers/utils/public-api.d.ts +0 -2
  636. package/lib/providers/utils/utils.module.d.ts +0 -9
  637. package/lib/providers/utils/utils.service.d.ts +0 -9
  638. package/lib/types/constructor.d.ts +0 -5
  639. package/lib/utils/array.utils.d.ts +0 -24
  640. package/lib/utils/case.utils.d.ts +0 -9
  641. package/lib/utils/colors.utils.d.ts +0 -9
  642. package/lib/utils/date.utils.d.ts +0 -11
  643. package/lib/utils/file.utils.d.ts +0 -13
  644. package/lib/utils/font-awesome.utils.d.ts +0 -3
  645. package/lib/utils/form-data.utils.d.ts +0 -4
  646. package/lib/utils/http-status.utils.d.ts +0 -45
  647. package/lib/utils/index.d.ts +0 -1
  648. package/lib/utils/keyboard.utils.d.ts +0 -7
  649. package/lib/utils/lexorank.utils.d.ts +0 -6
  650. package/lib/utils/modal.utils.d.ts +0 -7
  651. package/lib/utils/number.utils.d.ts +0 -7
  652. package/lib/utils/object.utils.d.ts +0 -10
  653. package/lib/utils/promise.utils.d.ts +0 -7
  654. package/lib/utils/public-api.d.ts +0 -18
  655. package/lib/utils/query-params.utils.d.ts +0 -3
  656. package/lib/utils/regex.utils.d.ts +0 -7
  657. package/lib/utils/type.utils.d.ts +0 -6
  658. package/lib/utils/url.utils.d.ts +0 -6
  659. package/public-api.d.ts +0 -8
@@ -1,16 +0,0 @@
1
- import { NgModule } from "@angular/core";
2
- import { OptionsScrollDirective } from "./options-scroll.directive";
3
- import * as i0 from "@angular/core";
4
- export class OptionScrollModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OptionScrollModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: OptionScrollModule, declarations: [OptionsScrollDirective], exports: [OptionsScrollDirective] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OptionScrollModule }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OptionScrollModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- declarations: [OptionsScrollDirective],
13
- exports: [OptionsScrollDirective]
14
- }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy1zY3JvbGwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9jb21wb25lbnRzL3R5cGVhaGVhZC9kaXJlY3RpdmVzL29wdGlvbnMtc2Nyb2xsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU1wRSxNQUFNLE9BQU8sa0JBQWtCOytHQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixpQkFIWixzQkFBc0IsYUFDM0Isc0JBQXNCO2dIQUV2QixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE9wdGlvbnNTY3JvbGxEaXJlY3RpdmUgfSBmcm9tIFwiLi9vcHRpb25zLXNjcm9sbC5kaXJlY3RpdmVcIjtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtPcHRpb25zU2Nyb2xsRGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbT3B0aW9uc1Njcm9sbERpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uU2Nyb2xsTW9kdWxlIHt9XG4iXX0=
@@ -1,2 +0,0 @@
1
- export * from "./public-api";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLXVpLWtpdC12Mi9zcmMvbGliL2NvbXBvbmVudHMvdHlwZWFoZWFkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcHVibGljLWFwaVwiO1xuIl19
@@ -1,4 +0,0 @@
1
- export * from "./directives/options-scroll.directive";
2
- export * from "./typeahead.component";
3
- export * from "./typeahead.module";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy90eXBlYWhlYWQvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2RpcmVjdGl2ZXMvb3B0aW9ucy1zY3JvbGwuZGlyZWN0aXZlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlYWhlYWQuY29tcG9uZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlYWhlYWQubW9kdWxlXCI7XG4iXX0=
@@ -1,490 +0,0 @@
1
- import { FocusMonitor } from "@angular/cdk/a11y";
2
- import { coerceBooleanProperty } from "@angular/cdk/coercion";
3
- import { Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, Optional, Output, Self, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from "@angular/core";
4
- import { FormControl, NgControl, Validators } from "@angular/forms";
5
- import { MatOption } from "@angular/material/core";
6
- import { MatFormFieldControl } from "@angular/material/form-field";
7
- import { Subject } from "rxjs";
8
- import * as uuid from "uuid";
9
- import { isNullOrUndefined } from "../../utils";
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/forms";
12
- import * as i2 from "@angular/cdk/a11y";
13
- import * as i3 from "@angular/common";
14
- import * as i4 from "./directives/options-scroll.directive";
15
- import * as i5 from "@angular/material/autocomplete";
16
- import * as i6 from "@angular/material/core";
17
- import * as i7 from "@angular/material/input";
18
- import * as i8 from "@angular/material/form-field";
19
- import * as i9 from "@angular/material/progress-spinner";
20
- import * as i10 from "@angular/material/progress-bar";
21
- import * as i11 from "@angular/material/icon";
22
- import * as i12 from "@ngx-translate/core";
23
- export class NiceTypeaheadNewValue {
24
- constructor($new) {
25
- this.$new = $new;
26
- }
27
- }
28
- export class NiceTypeaheadComponent {
29
- set items(items) {
30
- this._items = items ?? [];
31
- this.values = items ?? [];
32
- this.setLoading(false);
33
- this.setLoadingPage(false);
34
- this.updateSearchInput();
35
- this.checkIfValueStillExist();
36
- }
37
- set labelFormatFn(labelFormatFn) {
38
- this._labelFormatFn = labelFormatFn;
39
- this.updateSearchInput();
40
- }
41
- set required(req) {
42
- this._required = coerceBooleanProperty(req);
43
- this.stateChanges.next();
44
- }
45
- get required() {
46
- return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
47
- }
48
- get disabled() {
49
- return this._disabled;
50
- }
51
- set disabled(value) {
52
- this._disabled = coerceBooleanProperty(value);
53
- if (this._disabled) {
54
- this.searchControl.disable({ emitEvent: false });
55
- }
56
- else {
57
- this.searchControl.enable({ emitEvent: false });
58
- }
59
- this.stateChanges.next();
60
- }
61
- set placeholder(placeholder) {
62
- this._placeholder = placeholder;
63
- this.stateChanges.next();
64
- }
65
- get placeholder() {
66
- return this._placeholder;
67
- }
68
- set emptyPlaceholder(emptyPlaceholder) {
69
- this._emptyPlaceholder = emptyPlaceholder;
70
- this.stateChanges.next();
71
- }
72
- get emptyPlaceholder() {
73
- return this._emptyPlaceholder;
74
- }
75
- set value(value) {
76
- if (value === this._value) {
77
- return;
78
- }
79
- this._value = value;
80
- this.propagate(this._value);
81
- }
82
- get value() {
83
- return this._value;
84
- }
85
- get empty() {
86
- return ((!this.searchControl.value || !this.searchControl.value.length) &&
87
- (!this._value || (typeof this._value === "string" && !this._value.length)));
88
- }
89
- get errorState() {
90
- return this.ngControl ? this.ngControl.touched && this.ngControl.invalid : false;
91
- }
92
- get shouldLabelFloat() {
93
- return this.open || !this.empty;
94
- }
95
- constructor(ngControl, fm, zone, elRef) {
96
- this.ngControl = ngControl;
97
- this.fm = fm;
98
- this.zone = zone;
99
- this.elRef = elRef;
100
- this._page = 0;
101
- this.allowNotFoundItems = false;
102
- this.panelClass = [];
103
- // tslint:disable-next-line:no-output-native
104
- this.change = new EventEmitter();
105
- this.search$ = new Subject();
106
- this.searchControl = new FormControl(null);
107
- this.values = [];
108
- this.open = false;
109
- this.panelWidth = 0;
110
- this.updatingItem = false;
111
- this.waitForItems = false;
112
- this.ignoreNextFocus = false;
113
- this._disabled = false;
114
- this.stateChanges = new Subject();
115
- this.controlType = "typeahead";
116
- this.focused = false;
117
- this.id = uuid.v4();
118
- this.describedBy = "";
119
- this.propagate = () => { };
120
- if (this.ngControl) {
121
- this.ngControl.valueAccessor = this;
122
- }
123
- fm.monitor(elRef.nativeElement, true).subscribe(origin => {
124
- if (this.ignoreNextFocus) {
125
- this.ignoreNextFocus = false;
126
- return;
127
- }
128
- this.focused = !!origin;
129
- this.stateChanges.next();
130
- if (this.focused && (!this._items || !this._items.length) && !this.loading) {
131
- this.searchControl.patchValue("");
132
- }
133
- if (!this.focused && !this._value) {
134
- if (this.activeOption && this.activeOption.viewValue?.toLowerCase() === this.searchControl.value?.toLowerCase()) {
135
- this.onOptionSelected({
136
- option: this.activeOption,
137
- source: null
138
- });
139
- }
140
- else {
141
- if (!this.open) {
142
- this.onRemove();
143
- }
144
- }
145
- }
146
- });
147
- }
148
- ngOnInit() {
149
- if (this.ngControl) {
150
- this.ngControl.statusChanges.subscribe((status) => {
151
- this.disabled = status === "DISABLED";
152
- });
153
- }
154
- this.searchSub$ = this.search$.subscribe(text => {
155
- if (!text || typeof text !== "string") {
156
- this.values = this._filter("");
157
- return;
158
- }
159
- this.values = this._filter(text);
160
- });
161
- if (this.searchControl) {
162
- this.valueChangesSub$ = this.searchControl.valueChanges.subscribe(text => {
163
- if (this.updatingItem) {
164
- return;
165
- }
166
- if (this._value) {
167
- if (text === this.formatLabel(this.getValueItem())) {
168
- return;
169
- }
170
- this.value = null;
171
- }
172
- if (this.waitForItems) {
173
- this.waitForItems = false;
174
- return;
175
- }
176
- if (typeof text !== "string") {
177
- return;
178
- }
179
- if (this.typeahead) {
180
- this.setLoading(true);
181
- this._page = 0;
182
- this.typeahead.next(text);
183
- }
184
- else {
185
- this.search$.next(text);
186
- }
187
- });
188
- }
189
- this.observer = new ResizeObserver(entries => {
190
- this.zone.run(() => {
191
- this.panelWidth = entries[0].contentRect.width;
192
- });
193
- });
194
- this.observer.observe(this.elRef.nativeElement);
195
- }
196
- ngOnDestroy() {
197
- this.search$?.complete();
198
- this.searchSub$?.unsubscribe();
199
- this.valueChangesSub$?.unsubscribe();
200
- this.stateChanges?.complete();
201
- this.fm.stopMonitoring(this.elRef.nativeElement);
202
- this.observer?.unobserve(this.elRef.nativeElement);
203
- }
204
- onContainerClick(event) {
205
- if (!this.disabled && event.target.tagName.toLowerCase() != "input") {
206
- this.input.nativeElement.focus();
207
- }
208
- }
209
- setDescribedByIds(ids) {
210
- this.describedBy = ids.join(" ");
211
- }
212
- registerOnChange(propagate) {
213
- this.propagate = propagate;
214
- }
215
- registerOnTouched(fn) {
216
- // NO-OP
217
- }
218
- writeValue(value) {
219
- try {
220
- this.updatingItem = true;
221
- // If both are equal (considering null === undefined), consider that the value has not changed.
222
- if (this._value === value || (isNullOrUndefined(this._value) && isNullOrUndefined(value))) {
223
- return;
224
- }
225
- if (!value && this._value !== value) {
226
- this.onRemove(null);
227
- return;
228
- }
229
- this.value = value;
230
- if (!this._items) {
231
- this.waitForItems = true;
232
- return;
233
- }
234
- this.updateSearchInput();
235
- }
236
- finally {
237
- this.updatingItem = false;
238
- }
239
- }
240
- onOptionActivated(event) {
241
- this.activeOption = event.option;
242
- }
243
- onOptionSelected(event) {
244
- if (event.option.id === "new-value-option") {
245
- this.value = new NiceTypeaheadNewValue(this.searchControl.value);
246
- }
247
- else {
248
- this.updateLabel(event.option.value);
249
- this.value = this.bindValue ? this.getObjectItem(this.bindValue, event.option.value) : event.option.value;
250
- }
251
- this.change.emit(event.option.value);
252
- }
253
- updateState(open) {
254
- this.open = open;
255
- if (!this.open && this.ngControl) {
256
- this.ngControl.control.markAsTouched();
257
- }
258
- if (!this.open) {
259
- this.activeOption = null;
260
- if (!this._value) {
261
- this.onRemove();
262
- }
263
- }
264
- }
265
- onRemove(event) {
266
- if (event) {
267
- event.stopPropagation();
268
- }
269
- if (this.disabled) {
270
- return;
271
- }
272
- this.ignoreNextFocus = true;
273
- this.focused = false;
274
- this.value = null;
275
- this.searchControl.patchValue(null);
276
- if (this.ngControl?.control) {
277
- this.ngControl.control.markAsTouched();
278
- }
279
- this.stateChanges.next();
280
- this.change.emit();
281
- if (this.typeahead) {
282
- this.setLoading(true);
283
- this._page = 0;
284
- this.typeahead.next("");
285
- }
286
- else {
287
- this.search$.next("");
288
- }
289
- }
290
- formatLabel(item) {
291
- if (this._labelFormatFn) {
292
- return this._labelFormatFn(item);
293
- }
294
- if (this.bindLabel) {
295
- return this.getObjectItem(this.bindLabel, item);
296
- }
297
- if (typeof item !== "string") {
298
- return "";
299
- }
300
- return item;
301
- }
302
- _filter(text) {
303
- if (this._items) {
304
- const searchFn = this.searchFn || this.defaultSearch.bind(this);
305
- return this._items.filter(x => searchFn(text, x));
306
- }
307
- return [];
308
- }
309
- defaultSearch(search, option) {
310
- if (typeof option === "string") {
311
- return this.filterString(search, option);
312
- }
313
- if (typeof option !== "object") {
314
- return false;
315
- }
316
- if (this.bindLabel) {
317
- const item = this.getObjectItem(this.bindLabel, option);
318
- if (typeof item === "string") {
319
- return this.filterString(search, item);
320
- }
321
- }
322
- else if (this.formatLabel) {
323
- const item = this.formatLabel(option);
324
- if (typeof item === "string") {
325
- return this.filterString(search, item);
326
- }
327
- }
328
- return false;
329
- }
330
- updateSearchInput() {
331
- if ((!this.waitForItems && !this._items) || !this._items) {
332
- return;
333
- }
334
- if (this._value instanceof NiceTypeaheadNewValue) {
335
- this.updateLabel(this._value.$new);
336
- return;
337
- }
338
- if (typeof this._value === "object") {
339
- this.updateLabel(this._value);
340
- return;
341
- }
342
- const search = this._items.find(v => (this.bindValue && typeof v === "object" ? this.getObjectItem(this.bindValue, v) : v) === this._value);
343
- if (search) {
344
- this.updateLabel(search);
345
- }
346
- }
347
- filterString(text, value) {
348
- return value.toLowerCase().includes(text.toLowerCase());
349
- }
350
- updateLabel(item) {
351
- if (!item) {
352
- return;
353
- }
354
- const label = this.formatLabel(item);
355
- if (label && label !== this.searchControl.value) {
356
- this.searchControl.patchValue(label, { emitEvent: false });
357
- }
358
- }
359
- onEndScroll() {
360
- if (this.page$ && !this.loadingPage) {
361
- this.setLoadingPage(true);
362
- this._page++;
363
- this.page$.next(this._page);
364
- }
365
- }
366
- getObjectItem(key, obj) {
367
- const keys = key.split(".");
368
- let item = obj;
369
- for (const k of keys) {
370
- if (!item) {
371
- return item;
372
- }
373
- if (!item.hasOwnProperty(k)) {
374
- return item;
375
- }
376
- item = item[k];
377
- }
378
- return item;
379
- }
380
- getValueItem() {
381
- if (!this.bindValue) {
382
- return this._value;
383
- }
384
- const keys = this.bindValue.split(".");
385
- return this._items.find(x => {
386
- let item = x;
387
- for (const k of keys) {
388
- if (!item) {
389
- return item;
390
- }
391
- if (!item.hasOwnProperty(k)) {
392
- return item;
393
- }
394
- item = item[k];
395
- }
396
- return item === this._value;
397
- });
398
- }
399
- setLoading(loading) {
400
- if (this.loading === undefined) {
401
- this.loading = loading;
402
- }
403
- }
404
- setLoadingPage(loading) {
405
- if (this.loadingPage === undefined) {
406
- this.loadingPage = loading;
407
- }
408
- }
409
- checkIfValueStillExist() {
410
- if (this._value instanceof NiceTypeaheadNewValue) {
411
- return;
412
- }
413
- const item = this._items.find(v => (this.bindValue && typeof v === "object" ? this.getObjectItem(this.bindValue, v) : v) === this._value);
414
- if (item) {
415
- return;
416
- }
417
- if (this._value !== null && this._value !== undefined) {
418
- this.onRemove(null);
419
- }
420
- }
421
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceTypeaheadComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i2.FocusMonitor }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
422
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: NiceTypeaheadComponent, selector: "nice-typeahead", inputs: { items: "items", labelFormatFn: "labelFormatFn", required: "required", disabled: "disabled", placeholder: "placeholder", emptyPlaceholder: "emptyPlaceholder", allowNotFoundItems: "allowNotFoundItems", panelClass: "panelClass", bindValue: "bindValue", bindLabel: "bindLabel", typeahead: "typeahead", page$: "page$", loading: "loading", loadingPage: "loadingPage", searchFn: "searchFn", optionTemplate: "optionTemplate" }, outputs: { change: "change" }, host: { properties: { "class.floating": "this.shouldLabelFloat", "id": "this.id", "attr.aria-describedby": "this.describedBy" } }, providers: [
423
- {
424
- provide: MatFormFieldControl,
425
- useExisting: NiceTypeaheadComponent
426
- }
427
- ], viewQueries: [{ propertyName: "input", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "options", predicate: MatOption, descendants: true }], ngImport: i0, template: "<div class=\"flex\" *ngIf=\"!disabled; else disable\">\n <input\n #searchInput\n matInput\n class=\"flex-auto\"\n type=\"text\"\n name=\"mat-autocomplete\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"required\"\n />\n <mat-icon *ngIf=\"value && !loading\" matSuffix class=\"close-button secondary-text\" (click)=\"onRemove($event)\">\n close\n </mat-icon>\n\n <mat-spinner class=\"self-center\" [diameter]=\"16\" *ngIf=\"loading\"></mat-spinner>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth\"\n [class]=\"panelClass\"\n (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n (closed)=\"updateState(false)\"\n (opened)=\"updateState(true)\"\n (optionsScroll)=\"onEndScroll()\"\n autoActiveFirstOption\n>\n <mat-progress-bar *ngIf=\"open && loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n <mat-option *ngFor=\"let option of values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\">\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!values?.length && !allowNotFoundItems\" disabled>\n <ng-container *ngIf=\"emptyPlaceholder; else defaultEmptyPlaceholder\">\n {{ emptyPlaceholder }}\n </ng-container>\n <ng-template #defaultEmptyPlaceholder>\n {{ \"components.typeahead.no_item_found\" | translate }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!values?.length && allowNotFoundItems\" id=\"new-value-option\" [value]=\"searchControl.value\">\n <span class=\"italic\">{{ searchControl.value }}</span>\n </mat-option>\n <mat-progress-bar *ngIf=\"open && loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n</mat-autocomplete>\n\n<ng-template #disable>\n <input\n matInput\n class=\"disabled-input\"\n type=\"text\"\n [disabled]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [required]=\"required\"\n />\n</ng-template>\n", styles: ["nice-typeahead{width:100%}nice-typeahead .close-button{flex:1 1 18px;cursor:pointer;min-height:18px!important;min-width:18px!important;height:18px!important;width:18px!important;font-size:18px!important;align-self:center}nice-typeahead .disabled-input{flex:1 1 95%}nice-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}nice-typeahead .arrow{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.italic{font-style:italic}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.OptionsScrollDirective, selector: "mat-autocomplete[optionsScroll]", inputs: ["thresholdPercent"], outputs: ["optionsScroll"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
428
- }
429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceTypeaheadComponent, decorators: [{
430
- type: Component,
431
- args: [{ selector: "nice-typeahead", encapsulation: ViewEncapsulation.None, providers: [
432
- {
433
- provide: MatFormFieldControl,
434
- useExisting: NiceTypeaheadComponent
435
- }
436
- ], template: "<div class=\"flex\" *ngIf=\"!disabled; else disable\">\n <input\n #searchInput\n matInput\n class=\"flex-auto\"\n type=\"text\"\n name=\"mat-autocomplete\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [matAutocomplete]=\"auto\"\n [required]=\"required\"\n />\n <mat-icon *ngIf=\"value && !loading\" matSuffix class=\"close-button secondary-text\" (click)=\"onRemove($event)\">\n close\n </mat-icon>\n\n <mat-spinner class=\"self-center\" [diameter]=\"16\" *ngIf=\"loading\"></mat-spinner>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth\"\n [class]=\"panelClass\"\n (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n (closed)=\"updateState(false)\"\n (opened)=\"updateState(true)\"\n (optionsScroll)=\"onEndScroll()\"\n autoActiveFirstOption\n>\n <mat-progress-bar *ngIf=\"open && loading\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n <mat-option *ngFor=\"let option of values\" [value]=\"option\">\n <ng-container\n *ngIf=\"optionTemplate; else format\"\n [ngTemplateOutlet]=\"optionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: option }\">\n </ng-container>\n <ng-template #format>\n {{ formatLabel(option) }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!values?.length && !allowNotFoundItems\" disabled>\n <ng-container *ngIf=\"emptyPlaceholder; else defaultEmptyPlaceholder\">\n {{ emptyPlaceholder }}\n </ng-container>\n <ng-template #defaultEmptyPlaceholder>\n {{ \"components.typeahead.no_item_found\" | translate }}\n </ng-template>\n </mat-option>\n <mat-option *ngIf=\"!values?.length && allowNotFoundItems\" id=\"new-value-option\" [value]=\"searchControl.value\">\n <span class=\"italic\">{{ searchControl.value }}</span>\n </mat-option>\n <mat-progress-bar *ngIf=\"open && loadingPage\" mode=\"indeterminate\" color=\"primary\"></mat-progress-bar>\n</mat-autocomplete>\n\n<ng-template #disable>\n <input\n matInput\n class=\"disabled-input\"\n type=\"text\"\n [disabled]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"searchControl\"\n [required]=\"required\"\n />\n</ng-template>\n", styles: ["nice-typeahead{width:100%}nice-typeahead .close-button{flex:1 1 18px;cursor:pointer;min-height:18px!important;min-width:18px!important;height:18px!important;width:18px!important;font-size:18px!important;align-self:center}nice-typeahead .disabled-input{flex:1 1 95%}nice-typeahead .arrow-container{display:flex;bottom:7px;align-self:flex-end;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}nice-typeahead .arrow{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px;color:#0000008a}.italic{font-style:italic}\n"] }]
437
- }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
438
- type: Optional
439
- }, {
440
- type: Self
441
- }] }, { type: i2.FocusMonitor }, { type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { items: [{
442
- type: Input
443
- }], labelFormatFn: [{
444
- type: Input
445
- }], required: [{
446
- type: Input
447
- }], disabled: [{
448
- type: Input
449
- }], placeholder: [{
450
- type: Input
451
- }], emptyPlaceholder: [{
452
- type: Input
453
- }], shouldLabelFloat: [{
454
- type: HostBinding,
455
- args: ["class.floating"]
456
- }], allowNotFoundItems: [{
457
- type: Input
458
- }], panelClass: [{
459
- type: Input
460
- }], bindValue: [{
461
- type: Input
462
- }], bindLabel: [{
463
- type: Input
464
- }], typeahead: [{
465
- type: Input
466
- }], page$: [{
467
- type: Input
468
- }], loading: [{
469
- type: Input
470
- }], loadingPage: [{
471
- type: Input
472
- }], searchFn: [{
473
- type: Input
474
- }], change: [{
475
- type: Output
476
- }], input: [{
477
- type: ViewChild,
478
- args: ["searchInput"]
479
- }], options: [{
480
- type: ViewChildren,
481
- args: [MatOption]
482
- }], id: [{
483
- type: HostBinding
484
- }], describedBy: [{
485
- type: HostBinding,
486
- args: ["attr.aria-describedby"]
487
- }], optionTemplate: [{
488
- type: Input
489
- }] } });
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWFoZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy90eXBlYWhlYWQvdHlwZWFoZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvY29tcG9uZW50cy90eXBlYWhlYWQvdHlwZWFoZWFkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUFFLE1BQU0sRUFHYixRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBRWhELE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsWUFBbUIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFD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c0JBRFosTUFBTTtnQkFJQSxLQUFLO3NCQURYLFNBQVM7dUJBQUMsYUFBYTtnQkFJakIsT0FBTztzQkFEYixZQUFZO3VCQUFDLFNBQVM7Z0JBNkJoQixFQUFFO3NCQURSLFdBQVc7Z0JBR0wsV0FBVztzQkFEakIsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBSTdCLGNBQWM7c0JBRHBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2ExMXlcIjtcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29lcmNpb25cIjtcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LCBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlQWN0aXZhdGVkRXZlbnQsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlXCI7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tIFwidXVpZFwiO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIE5pY2VUeXBlYWhlYWROZXdWYWx1ZSB7XG4gICAgY29uc3RydWN0b3IocHVibGljICRuZXc6IHN0cmluZykge31cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibmljZS10eXBlYWhlYWRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCJ0eXBlYWhlYWQudGVtcGxhdGUuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1widHlwZWFoZWFkLnN0eWxlLnNjc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBOaWNlVHlwZWFoZWFkQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VUeXBlYWhlYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE1hdEZvcm1GaWVsZENvbnRyb2w8c3RyaW5nPiB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGl0ZW1zKGl0ZW1zOiBhbnlbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSBpdGVtcyA/PyBbXTtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBpdGVtcyA/PyBbXTtcbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nUGFnZShmYWxzZSk7XG4gICAgICAgIHRoaXMudXBkYXRlU2VhcmNoSW5wdXQoKTtcbiAgICAgICAgdGhpcy5jaGVja0lmVmFsdWVTdGlsbEV4aXN0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGxhYmVsRm9ybWF0Rm4obGFiZWxGb3JtYXRGbjogKGl0ZW06IGFueSkgPT4gc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2xhYmVsRm9ybWF0Rm4gPSBsYWJlbEZvcm1hdEZuO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaElucHV0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlcXVpcmVkKHJlcSkge1xuICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBwbGFjZWhvbGRlcihwbGFjZWhvbGRlcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZW1wdHlQbGFjZWhvbGRlcihlbXB0eVBsYWNlaG9sZGVyOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fZW1wdHlQbGFjZWhvbGRlciA9IGVtcHR5UGxhY2Vob2xkZXI7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVtcHR5UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VtcHR5UGxhY2Vob2xkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICghdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlIHx8ICF0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUubGVuZ3RoKSAmJlxuICAgICAgICAgICAgKCF0aGlzLl92YWx1ZSB8fCAodHlwZW9mIHRoaXMuX3ZhbHVlID09PSBcInN0cmluZ1wiICYmICF0aGlzLl92YWx1ZS5sZW5ndGgpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmdDb250cm9sID8gdGhpcy5uZ0NvbnRyb2wudG91Y2hlZCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkIDogZmFsc2U7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZmxvYXRpbmdcIilcbiAgICBwdWJsaWMgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW4gfHwgIXRoaXMuZW1wdHk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwcml2YXRlIGZtOiBGb2N1c01vbml0b3IsXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICAgICBwdWJsaWMgZWxSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZm0ubW9uaXRvcihlbFJlZi5uYXRpdmVFbGVtZW50LCB0cnVlKS5zdWJzY3JpYmUob3JpZ2luID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlnbm9yZU5leHRGb2N1cykge1xuICAgICAgICAgICAgICAgIHRoaXMuaWdub3JlTmV4dEZvY3VzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZvY3VzZWQgPSAhIW9yaWdpbjtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWQgJiYgKCF0aGlzLl9pdGVtcyB8fCAhdGhpcy5faXRlbXMubGVuZ3RoKSAmJiAhdGhpcy5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnBhdGNoVmFsdWUoXCJcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5mb2N1c2VkICYmICF0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbiAmJiB0aGlzLmFjdGl2ZU9wdGlvbi52aWV3VmFsdWU/LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZT8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uU2VsZWN0ZWQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uOiB0aGlzLmFjdGl2ZU9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3Blbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pdGVtczogYW55W107XG4gICAgcHJpdmF0ZSBfbGFiZWxGb3JtYXRGbjogKGl0ZW06IHVua25vd24pID0+IHN0cmluZztcbiAgICBwcml2YXRlIF9wYWdlID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93Tm90Rm91bmRJdGVtcyA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFuZWxDbGFzczogc3RyaW5nIHwgc3RyaW5nW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGJpbmRWYWx1ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGJpbmRMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEBkZXByZWNhdGVkOiBVc2UgTmljZVJlbW90ZVR5cGVhaGVhZCBpbnN0ZWFkICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHlwZWFoZWFkOiBTdWJqZWN0PHN0cmluZz47XG4gICAgLyoqIEBkZXByZWNhdGVkOiBVc2UgTmljZVJlbW90ZVR5cGVhaGVhZCBpbnN0ZWFkICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcGFnZSQ6IFN1YmplY3Q8bnVtYmVyPjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9hZGluZ1BhZ2U6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hGbjogKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IGFueSkgPT4gYm9vbGVhbjtcblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1vdXRwdXQtbmF0aXZlXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBWaWV3Q2hpbGQoXCJzZWFyY2hJbnB1dFwiKVxuICAgIHB1YmxpYyBpbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGRyZW4oTWF0T3B0aW9uKVxuICAgIHB1YmxpYyBvcHRpb25zOiBNYXRPcHRpb25bXTtcblxuICAgIHB1YmxpYyBzZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuICAgIHB1YmxpYyB2YWx1ZXM6IHVua25vd25bXSA9IFtdO1xuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZXNTdWIkOiBTdWJzY3JpcHRpb247XG4gICAgcHVibGljIHNlYXJjaFN1YiQ6IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgb3BlbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBwYW5lbFdpZHRoID0gMDtcbiAgICBwdWJsaWMgYWN0aXZlT3B0aW9uOiBNYXRPcHRpb247XG5cbiAgICBwcml2YXRlIHVwZGF0aW5nSXRlbSA9IGZhbHNlO1xuICAgIHByaXZhdGUgd2FpdEZvckl0ZW1zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpZ25vcmVOZXh0Rm9jdXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIG9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcblxuICAgIC8qKiBNYXRGb3JtRmllbGQgKi9cbiAgICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcbiAgICBwcml2YXRlIF9lbXB0eVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwdWJsaWMgY29udHJvbFR5cGUgPSBcInR5cGVhaGVhZFwiO1xuICAgIHB1YmxpYyBmb2N1c2VkID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoKVxuICAgIHB1YmxpYyBpZDogc3RyaW5nID0gdXVpZC52NCgpO1xuICAgIEBIb3N0QmluZGluZyhcImF0dHIuYXJpYS1kZXNjcmliZWRieVwiKVxuICAgIHB1YmxpYyBkZXNjcmliZWRCeSA9IFwiXCI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgcHVibGljIHByb3BhZ2F0ZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHN0YXR1cyA9PT0gXCJESVNBQkxFRFwiO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlYXJjaFN1YiQgPSB0aGlzLnNlYXJjaCQuc3Vic2NyaWJlKHRleHQgPT4ge1xuICAgICAgICAgICAgaWYgKCF0ZXh0IHx8IHR5cGVvZiB0ZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLl9maWx0ZXIoXCJcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLl9maWx0ZXIodGV4dCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YiQgPSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSh0ZXh0ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy51cGRhdGluZ0l0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGV4dCA9PT0gdGhpcy5mb3JtYXRMYWJlbCh0aGlzLmdldFZhbHVlSXRlbSgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMud2FpdEZvckl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2FpdEZvckl0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRleHQgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGVhaGVhZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhZ2UgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5uZXh0KHRleHQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoJC5uZXh0KHRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihlbnRyaWVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWxXaWR0aCA9IGVudHJpZXNbMF0uY29udGVudFJlY3Qud2lkdGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaCQ/LmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuc2VhcmNoU3ViJD8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWIkPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcz8uY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5mbS5zdG9wTW9uaXRvcmluZyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9ic2VydmVyPy51bm9ic2VydmUodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT0gXCJpbnB1dFwiKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbihcIiBcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UocHJvcGFnYXRlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZSA9IHByb3BhZ2F0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBOTy1PUFxuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRpbmdJdGVtID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIElmIGJvdGggYXJlIGVxdWFsIChjb25zaWRlcmluZyBudWxsID09PSB1bmRlZmluZWQpLCBjb25zaWRlciB0aGF0IHRoZSB2YWx1ZSBoYXMgbm90IGNoYW5nZWQuXG4gICAgICAgICAgICBpZiAodGhpcy5fdmFsdWUgPT09IHZhbHVlIHx8IChpc051bGxPclVuZGVmaW5lZCh0aGlzLl92YWx1ZSkgJiYgaXNOdWxsT3JVbmRlZmluZWQodmFsdWUpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF2YWx1ZSAmJiB0aGlzLl92YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUmVtb3ZlKG51bGwpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLndhaXRGb3JJdGVtcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaElucHV0KCk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0aW5nSXRlbSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3B0aW9uQWN0aXZhdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVBY3RpdmF0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbiA9IGV2ZW50Lm9wdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcHRpb25TZWxlY3RlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQub3B0aW9uLmlkID09PSBcIm5ldy12YWx1ZS1vcHRpb25cIikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBOaWNlVHlwZWFoZWFkTmV3VmFsdWUodGhpcy5zZWFyY2hDb250cm9sLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwoZXZlbnQub3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmJpbmRWYWx1ZSA/IHRoaXMuZ2V0T2JqZWN0SXRlbSh0aGlzLmJpbmRWYWx1ZSwgZXZlbnQub3B0aW9uLnZhbHVlKSA6IGV2ZW50Lm9wdGlvbi52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KGV2ZW50Lm9wdGlvbi52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVN0YXRlKG9wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gb3BlbjtcbiAgICAgICAgaWYgKCF0aGlzLm9wZW4gJiYgdGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uID0gbnVsbDtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmUoZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pZ25vcmVOZXh0Rm9jdXMgPSB0cnVlO1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKG51bGwpO1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGVhaGVhZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fcGFnZSA9IDA7XG4gICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5uZXh0KFwiXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2gkLm5leHQoXCJcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9ybWF0TGFiZWwoaXRlbTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuX2xhYmVsRm9ybWF0Rm4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9sYWJlbEZvcm1hdEZuKGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYmluZExhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRPYmplY3RJdGVtKHRoaXMuYmluZExhYmVsLCBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9maWx0ZXIodGV4dDogc3RyaW5nKTogdW5rbm93bltdIHtcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1zKSB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hGbiA9IHRoaXMuc2VhcmNoRm4gfHwgdGhpcy5kZWZhdWx0U2VhcmNoLmJpbmQodGhpcyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMuZmlsdGVyKHggPT4gc2VhcmNoRm4odGV4dCwgeCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZmF1bHRTZWFyY2goc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyU3RyaW5nKHNlYXJjaCwgb3B0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5iaW5kTGFiZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldE9iamVjdEl0ZW0odGhpcy5iaW5kTGFiZWwsIG9wdGlvbik7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJTdHJpbmcoc2VhcmNoLCBpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm1hdExhYmVsKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5mb3JtYXRMYWJlbChvcHRpb24pO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyU3RyaW5nKHNlYXJjaCwgaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWFyY2hJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCghdGhpcy53YWl0Rm9ySXRlbXMgJiYgIXRoaXMuX2l0ZW1zKSB8fCAhdGhpcy5faXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl92YWx1ZSBpbnN0YW5jZW9mIE5pY2VUeXBlYWhlYWROZXdWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYWJlbCh0aGlzLl92YWx1ZS4kbmV3KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5fdmFsdWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGFiZWwodGhpcy5fdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VhcmNoID0gdGhpcy5faXRlbXMuZmluZChcbiAgICAgICAgICAgIHYgPT4gKHRoaXMuYmluZFZhbHVlICYmIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiID8gdGhpcy5nZXRPYmplY3RJdGVtKHRoaXMuYmluZFZhbHVlLCB2KSA6IHYpID09PSB0aGlzLl92YWx1ZVxuICAgICAgICApO1xuICAgICAgICBpZiAoc2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxhYmVsKHNlYXJjaCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlclN0cmluZyh0ZXh0OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGV4dC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxhYmVsKGl0ZW06IHVua25vd24gfCBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuZm9ybWF0TGFiZWwoaXRlbSk7XG5cbiAgICAgICAgaWYgKGxhYmVsICYmIGxhYmVsICE9PSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5wYXRjaFZhbHVlKGxhYmVsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25FbmRTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2UkICYmICF0aGlzLmxvYWRpbmdQYWdlKSB7XG4gICAgICAgICAgICB0aGlzLnNldExvYWRpbmdQYWdlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fcGFnZSsrO1xuICAgICAgICAgICAgdGhpcy5wYWdlJC5uZXh0KHRoaXMuX3BhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPYmplY3RJdGVtKGtleTogc3RyaW5nLCBvYmo6IG9iamVjdCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBrZXkuc3BsaXQoXCIuXCIpO1xuICAgICAgICBsZXQgaXRlbSA9IG9iajtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtW2tdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUl0ZW0oKTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLmJpbmRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5cyA9IHRoaXMuYmluZFZhbHVlLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQoeCA9PiB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IHg7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtW2tdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gaXRlbSA9PT0gdGhpcy5fdmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gbG9hZGluZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TG9hZGluZ1BhZ2UobG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sb2FkaW5nUGFnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdQYWdlID0gbG9hZGluZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJZlZhbHVlU3RpbGxFeGlzdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlIGluc3RhbmNlb2YgTmljZVR5cGVhaGVhZE5ld1ZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5faXRlbXMuZmluZChcbiAgICAgICAgICAgIHYgPT4gKHRoaXMuYmluZFZhbHVlICYmIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiID8gdGhpcy5nZXRPYmplY3RJdGVtKHRoaXMuYmluZFZhbHVlLCB2KSA6IHYpID09PSB0aGlzLl92YWx1ZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlICE9PSBudWxsICYmIHRoaXMuX3ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25SZW1vdmUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleFwiICpuZ0lmPVwiIWRpc2FibGVkOyBlbHNlIGRpc2FibGVcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGNsYXNzPVwiZmxleC1hdXRvXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBuYW1lPVwibWF0LWF1dG9jb21wbGV0ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAvPlxuICAgIDxtYXQtaWNvbiAqbmdJZj1cInZhbHVlICYmICFsb2FkaW5nXCIgbWF0U3VmZml4IGNsYXNzPVwiY2xvc2UtYnV0dG9uIHNlY29uZGFyeS10ZXh0XCIgKGNsaWNrKT1cIm9uUmVtb3ZlKCRldmVudClcIj5cbiAgICAgICAgY2xvc2VcbiAgICA8L21hdC1pY29uPlxuXG4gICAgPG1hdC1zcGlubmVyIGNsYXNzPVwic2VsZi1jZW50ZXJcIiBbZGlhbWV0ZXJdPVwiMTZcIiAqbmdJZj1cImxvYWRpbmdcIj48L21hdC1zcGlubmVyPlxuPC9kaXY+XG48bWF0LWF1dG9jb21wbGV0ZVxuICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoXCJcbiAgICBbY2xhc3NdPVwicGFuZWxDbGFzc1wiXG4gICAgKG9wdGlvbkFjdGl2YXRlZCk9XCJvbk9wdGlvbkFjdGl2YXRlZCgkZXZlbnQpXCJcbiAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAoY2xvc2VkKT1cInVwZGF0ZVN0YXRlKGZhbHNlKVwiXG4gICAgKG9wZW5lZCk9XCJ1cGRhdGVTdGF0ZSh0cnVlKVwiXG4gICAgKG9wdGlvbnNTY3JvbGwpPVwib25FbmRTY3JvbGwoKVwiXG4gICAgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uXG4+XG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJvcGVuICYmIGxvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHZhbHVlc1wiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25UZW1wbGF0ZTsgZWxzZSBmb3JtYXRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBvcHRpb24gfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmb3JtYXQ+XG4gICAgICAgICAgICB7eyBmb3JtYXRMYWJlbChvcHRpb24pIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9tYXQtb3B0aW9uPlxuICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiIXZhbHVlcz8ubGVuZ3RoICYmICFhbGxvd05vdEZvdW5kSXRlbXNcIiBkaXNhYmxlZD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5UGxhY2Vob2xkZXI7IGVsc2UgZGVmYXVsdEVtcHR5UGxhY2Vob2xkZXJcIj5cbiAgICAgICAgICAgIHt7IGVtcHR5UGxhY2Vob2xkZXIgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5UGxhY2Vob2xkZXI+XG4gICAgICAgICAgICB7eyBcImNvbXBvbmVudHMudHlwZWFoZWFkLm5vX2l0ZW1fZm91bmRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIiF2YWx1ZXM/Lmxlbmd0aCAmJiBhbGxvd05vdEZvdW5kSXRlbXNcIiBpZD1cIm5ldy12YWx1ZS1vcHRpb25cIiBbdmFsdWVdPVwic2VhcmNoQ29udHJvbC52YWx1ZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIml0YWxpY1wiPnt7IHNlYXJjaENvbnRyb2wudmFsdWUgfX08L3NwYW4+XG4gICAgPC9tYXQtb3B0aW9uPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwib3BlbiAmJiBsb2FkaW5nUGFnZVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuPC9tYXQtYXV0b2NvbXBsZXRlPlxuXG48bmctdGVtcGxhdGUgI2Rpc2FibGU+XG4gICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGNsYXNzPVwiZGlzYWJsZWQtaW5wdXRcIlxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaENvbnRyb2xcIlxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuIl19