@evotor-dev/ui-kit 6.3.0 → 6.4.0

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 (591) hide show
  1. package/README.md +4 -0
  2. package/bundles/evotor-dev-ui-kit-icons-category.umd.js +62 -62
  3. package/bundles/evotor-dev-ui-kit-icons-emotions.umd.js +18 -18
  4. package/bundles/evotor-dev-ui-kit-icons-header.umd.js +28 -28
  5. package/bundles/evotor-dev-ui-kit-icons-info.umd.js +40 -40
  6. package/bundles/evotor-dev-ui-kit-icons-navigation.umd.js +56 -56
  7. package/bundles/evotor-dev-ui-kit-icons-navigation.umd.js.map +1 -1
  8. package/bundles/evotor-dev-ui-kit-icons-side-menu.umd.js +64 -64
  9. package/bundles/evotor-dev-ui-kit-icons-system.umd.js +368 -368
  10. package/bundles/evotor-dev-ui-kit-icons-system.umd.js.map +1 -1
  11. package/bundles/evotor-dev-ui-kit-icons.umd.js +624 -624
  12. package/bundles/evotor-dev-ui-kit-icons.umd.js.map +1 -1
  13. package/bundles/evotor-dev-ui-kit.umd.js +8317 -8317
  14. package/bundles/evotor-dev-ui-kit.umd.js.map +1 -1
  15. package/esm2015/evotor-dev-ui-kit.js +4 -4
  16. package/esm2015/icons/category/evotor-dev-ui-kit-icons-category.js +4 -4
  17. package/esm2015/icons/category/index.js +61 -61
  18. package/esm2015/icons/emotions/evotor-dev-ui-kit-icons-emotions.js +4 -4
  19. package/esm2015/icons/emotions/index.js +17 -17
  20. package/esm2015/icons/evotor-dev-ui-kit-icons.js +4 -4
  21. package/esm2015/icons/header/evotor-dev-ui-kit-icons-header.js +4 -4
  22. package/esm2015/icons/header/index.js +27 -27
  23. package/esm2015/icons/index.js +8 -8
  24. package/esm2015/icons/info/evotor-dev-ui-kit-icons-info.js +4 -4
  25. package/esm2015/icons/info/index.js +39 -39
  26. package/esm2015/icons/navigation/evotor-dev-ui-kit-icons-navigation.js +4 -4
  27. package/esm2015/icons/navigation/index.js +56 -56
  28. package/esm2015/icons/side-menu/evotor-dev-ui-kit-icons-side-menu.js +4 -4
  29. package/esm2015/icons/side-menu/index.js +63 -63
  30. package/esm2015/icons/system/evotor-dev-ui-kit-icons-system.js +4 -4
  31. package/esm2015/icons/system/index.js +368 -368
  32. package/esm2015/lib/common/Serializable.js +5 -5
  33. package/esm2015/lib/common/animations/expand.animation.js +27 -27
  34. package/esm2015/lib/common/animations/index.js +3 -3
  35. package/esm2015/lib/common/animations/sidebar.animation.js +9 -9
  36. package/esm2015/lib/common/animations/skip-initial-render.animation.js +2 -2
  37. package/esm2015/lib/common/collection/evo-collection-fabric.js +9 -9
  38. package/esm2015/lib/common/collection/evo-collection.js +6 -6
  39. package/esm2015/lib/common/collection/index.js +2 -2
  40. package/esm2015/lib/common/constants/css-breakpoints.js +8 -8
  41. package/esm2015/lib/common/constants/view-breakpoint-streams.js +23 -23
  42. package/esm2015/lib/common/evo-base-control.js +46 -46
  43. package/esm2015/lib/common/evo-control-state-manager/evo-control-state-manager.js +12 -12
  44. package/esm2015/lib/common/evo-control-state-manager/evo-control-state.interface.js +1 -1
  45. package/esm2015/lib/common/evo-control-state-manager/evo-control-states.enum.js +5 -5
  46. package/esm2015/lib/common/form-helper/form-helper.js +30 -30
  47. package/esm2015/lib/common/types/evo-color.js +1 -1
  48. package/esm2015/lib/common/types/evo-size.js +1 -1
  49. package/esm2015/lib/common/types/index.js +2 -2
  50. package/esm2015/lib/components/evo-accordion/evo-accordion-content/evo-accordion-content.component.js +35 -35
  51. package/esm2015/lib/components/evo-accordion/evo-accordion-panel/evo-accordion-panel.component.js +23 -23
  52. package/esm2015/lib/components/evo-accordion/evo-accordion-title/evo-accordion-title.component.js +61 -61
  53. package/esm2015/lib/components/evo-accordion/evo-accordion.component.js +22 -22
  54. package/esm2015/lib/components/evo-accordion/evo-accordion.module.js +65 -65
  55. package/esm2015/lib/components/evo-accordion/index.js +1 -1
  56. package/esm2015/lib/components/evo-accordion/public-api.js +5 -5
  57. package/esm2015/lib/components/evo-alert/evo-alert.component.js +82 -82
  58. package/esm2015/lib/components/evo-alert/evo-alert.module.js +28 -28
  59. package/esm2015/lib/components/evo-alert/index.js +1 -1
  60. package/esm2015/lib/components/evo-alert/public-api.js +2 -2
  61. package/esm2015/lib/components/evo-autocomplete/components/evo-autocomplete.component.js +364 -364
  62. package/esm2015/lib/components/evo-autocomplete/components/templates/evo-autocomplete-default-option.component.js +48 -48
  63. package/esm2015/lib/components/evo-autocomplete/evo-autocomplete.module.js +57 -57
  64. package/esm2015/lib/components/evo-autocomplete/helpers/switch-query-to-list.js +5 -5
  65. package/esm2015/lib/components/evo-autocomplete/index.js +1 -1
  66. package/esm2015/lib/components/evo-autocomplete/models/DaDataParty.js +27 -27
  67. package/esm2015/lib/components/evo-autocomplete/models/dadata.model.js +47 -47
  68. package/esm2015/lib/components/evo-autocomplete/public-api.js +6 -6
  69. package/esm2015/lib/components/evo-autocomplete/types/evo-autocomplete-size.js +1 -1
  70. package/esm2015/lib/components/evo-badge/evo-badge.component.js +44 -44
  71. package/esm2015/lib/components/evo-badge/evo-badge.module.js +27 -27
  72. package/esm2015/lib/components/evo-badge/index.js +2 -2
  73. package/esm2015/lib/components/evo-badge/public-api.js +2 -2
  74. package/esm2015/lib/components/evo-badge/types/evo-badge-color.js +1 -1
  75. package/esm2015/lib/components/evo-badge/types/evo-badge-size.js +1 -1
  76. package/esm2015/lib/components/evo-badge/types/index.js +2 -2
  77. package/esm2015/lib/components/evo-banner/evo-banner.component.js +115 -115
  78. package/esm2015/lib/components/evo-banner/evo-banner.module.js +26 -26
  79. package/esm2015/lib/components/evo-banner/index.js +1 -1
  80. package/esm2015/lib/components/evo-banner/public-api.js +2 -2
  81. package/esm2015/lib/components/evo-button/evo-button.component.js +86 -86
  82. package/esm2015/lib/components/evo-button/evo-button.module.js +25 -25
  83. package/esm2015/lib/components/evo-button/index.js +1 -1
  84. package/esm2015/lib/components/evo-button/public-api.js +2 -2
  85. package/esm2015/lib/components/evo-checkbox/evo-checkbox.component.js +86 -86
  86. package/esm2015/lib/components/evo-checkbox/evo-checkbox.module.js +33 -33
  87. package/esm2015/lib/components/evo-checkbox/index.js +1 -1
  88. package/esm2015/lib/components/evo-checkbox/public-api.js +2 -2
  89. package/esm2015/lib/components/evo-chip/evo-chip.component.js +137 -137
  90. package/esm2015/lib/components/evo-chip/evo-chip.module.js +44 -44
  91. package/esm2015/lib/components/evo-chip/index.js +1 -1
  92. package/esm2015/lib/components/evo-chip/public-api.js +2 -2
  93. package/esm2015/lib/components/evo-control-error/evo-control-error.component.js +42 -42
  94. package/esm2015/lib/components/evo-control-error/evo-control-error.module.js +29 -29
  95. package/esm2015/lib/components/evo-control-error/index.js +1 -1
  96. package/esm2015/lib/components/evo-control-error/public-api.js +2 -2
  97. package/esm2015/lib/components/evo-control-label/evo-control-label.component.js +22 -22
  98. package/esm2015/lib/components/evo-control-label/evo-control-label.module.js +21 -21
  99. package/esm2015/lib/components/evo-control-label/index.js +1 -1
  100. package/esm2015/lib/components/evo-control-label/public-api.js +2 -2
  101. package/esm2015/lib/components/evo-counter/evo-counter.component.js +42 -42
  102. package/esm2015/lib/components/evo-counter/evo-counter.module.js +29 -29
  103. package/esm2015/lib/components/evo-counter/index.js +1 -1
  104. package/esm2015/lib/components/evo-counter/public-api.js +2 -2
  105. package/esm2015/lib/components/evo-datepicker/evo-datepicker.component.js +550 -550
  106. package/esm2015/lib/components/evo-datepicker/evo-datepicker.module.js +33 -33
  107. package/esm2015/lib/components/evo-datepicker/flatpickr-options.interface.js +1 -1
  108. package/esm2015/lib/components/evo-datepicker/index.js +1 -1
  109. package/esm2015/lib/components/evo-datepicker/public-api.js +2 -2
  110. package/esm2015/lib/components/evo-datepicker/templates/index.js +19 -19
  111. package/esm2015/lib/components/evo-dropdown/evo-dropdown-origin.directive.js +40 -40
  112. package/esm2015/lib/components/evo-dropdown/evo-dropdown-position-description.js +50 -50
  113. package/esm2015/lib/components/evo-dropdown/evo-dropdown.component.js +111 -111
  114. package/esm2015/lib/components/evo-dropdown/evo-dropdown.module.js +19 -19
  115. package/esm2015/lib/components/evo-dropdown/index.js +1 -1
  116. package/esm2015/lib/components/evo-dropdown/public-api.js +4 -4
  117. package/esm2015/lib/components/evo-dropdown/types/evo-dropdown-positions.js +1 -1
  118. package/esm2015/lib/components/evo-icon/classes/evo-icons-library.js +18 -18
  119. package/esm2015/lib/components/evo-icon/evo-icon.component.js +56 -56
  120. package/esm2015/lib/components/evo-icon/evo-icon.module.js +56 -56
  121. package/esm2015/lib/components/evo-icon/index.js +1 -1
  122. package/esm2015/lib/components/evo-icon/interfaces/icons-category.js +1 -1
  123. package/esm2015/lib/components/evo-icon/interfaces/icons-source.js +1 -1
  124. package/esm2015/lib/components/evo-icon/public-api.js +5 -5
  125. package/esm2015/lib/components/evo-icon-button/evo-icon-button.component.js +66 -66
  126. package/esm2015/lib/components/evo-icon-button/evo-icon-button.module.js +25 -25
  127. package/esm2015/lib/components/evo-icon-button/index.js +1 -1
  128. package/esm2015/lib/components/evo-icon-button/public-api.js +2 -2
  129. package/esm2015/lib/components/evo-icon-button/types/evo-icon-button-size.js +1 -1
  130. package/esm2015/lib/components/evo-icon-button/types/evo-icon-button-theme.js +1 -1
  131. package/esm2015/lib/components/evo-icon-number/components/evo-icon-number/evo-icon-number.component.js +18 -18
  132. package/esm2015/lib/components/evo-icon-number/evo-icon-number.module.js +17 -17
  133. package/esm2015/lib/components/evo-icon-number/index.js +1 -1
  134. package/esm2015/lib/components/evo-icon-number/public-api.js +2 -2
  135. package/esm2015/lib/components/evo-input/evo-input-icon/evo-input-icon.directive.js +12 -12
  136. package/esm2015/lib/components/evo-input/evo-input.component.js +362 -362
  137. package/esm2015/lib/components/evo-input/evo-input.module.js +65 -65
  138. package/esm2015/lib/components/evo-input/index.js +1 -1
  139. package/esm2015/lib/components/evo-input/public-api.js +3 -3
  140. package/esm2015/lib/components/evo-input-contenteditable/evo-input-contenteditable.component.js +156 -156
  141. package/esm2015/lib/components/evo-input-contenteditable/evo-input-contenteditable.module.js +33 -33
  142. package/esm2015/lib/components/evo-input-contenteditable/index.js +1 -1
  143. package/esm2015/lib/components/evo-input-contenteditable/public-api.js +2 -2
  144. package/esm2015/lib/components/evo-input-contenteditable/utils/clear-multiline.js +6 -6
  145. package/esm2015/lib/components/evo-loader/evo-circular-loader.component.js +22 -22
  146. package/esm2015/lib/components/evo-loader/evo-loader.component.js +27 -27
  147. package/esm2015/lib/components/evo-loader/evo-loader.module.js +32 -32
  148. package/esm2015/lib/components/evo-loader/index.js +1 -1
  149. package/esm2015/lib/components/evo-loader/public-api.js +3 -3
  150. package/esm2015/lib/components/evo-modal/evo-modal.component.js +121 -121
  151. package/esm2015/lib/components/evo-modal/evo-modal.module.js +31 -31
  152. package/esm2015/lib/components/evo-modal/evo-modal.service.js +31 -31
  153. package/esm2015/lib/components/evo-modal/index.js +1 -1
  154. package/esm2015/lib/components/evo-modal/public-api.js +3 -3
  155. package/esm2015/lib/components/evo-navbar/evo-navbar-item/evo-navbar-item.component.js +62 -62
  156. package/esm2015/lib/components/evo-navbar/evo-navbar.component.js +50 -50
  157. package/esm2015/lib/components/evo-navbar/evo-navbar.module.js +23 -23
  158. package/esm2015/lib/components/evo-navbar/index.js +1 -1
  159. package/esm2015/lib/components/evo-navbar/interfaces/nav-item-main-info.js +1 -1
  160. package/esm2015/lib/components/evo-navbar/interfaces/nav-item-router-link.js +1 -1
  161. package/esm2015/lib/components/evo-navbar/interfaces/nav-item.href.js +1 -1
  162. package/esm2015/lib/components/evo-navbar/public-api.js +3 -3
  163. package/esm2015/lib/components/evo-navbar/types/nav-item.js +1 -1
  164. package/esm2015/lib/components/evo-note/evo-note.component.js +44 -44
  165. package/esm2015/lib/components/evo-note/evo-note.module.js +44 -44
  166. package/esm2015/lib/components/evo-note/index.js +1 -1
  167. package/esm2015/lib/components/evo-note/public.api.js +3 -3
  168. package/esm2015/lib/components/evo-note/types/evo-note-type.js +1 -1
  169. package/esm2015/lib/components/evo-paginator/evo-paginator.component.js +112 -112
  170. package/esm2015/lib/components/evo-paginator/evo-paginator.module.js +21 -21
  171. package/esm2015/lib/components/evo-paginator/index.js +1 -1
  172. package/esm2015/lib/components/evo-paginator/public-api.js +2 -2
  173. package/esm2015/lib/components/evo-plus-minus/evo-plus-minus.component.js +29 -29
  174. package/esm2015/lib/components/evo-plus-minus/evo-plus-minus.module.js +21 -21
  175. package/esm2015/lib/components/evo-plus-minus/index.js +1 -1
  176. package/esm2015/lib/components/evo-plus-minus/public-api.js +2 -2
  177. package/esm2015/lib/components/evo-popover/evo-popover.component.js +176 -176
  178. package/esm2015/lib/components/evo-popover/evo-popover.module.js +25 -25
  179. package/esm2015/lib/components/evo-popover/index.js +1 -1
  180. package/esm2015/lib/components/evo-popover/public-api.js +2 -2
  181. package/esm2015/lib/components/evo-portal/evo-portal-outlet.class.js +6 -6
  182. package/esm2015/lib/components/evo-portal/evo-portal-outlet.directive.js +18 -18
  183. package/esm2015/lib/components/evo-portal/evo-portal.module.js +31 -31
  184. package/esm2015/lib/components/evo-portal/evo-portal.service.js +91 -91
  185. package/esm2015/lib/components/evo-portal/index.js +1 -1
  186. package/esm2015/lib/components/evo-portal/public-api.js +4 -4
  187. package/esm2015/lib/components/evo-radio/evo-radio.component.js +55 -55
  188. package/esm2015/lib/components/evo-radio/evo-radio.module.js +25 -25
  189. package/esm2015/lib/components/evo-radio/index.js +1 -1
  190. package/esm2015/lib/components/evo-radio/public-api.js +2 -2
  191. package/esm2015/lib/components/evo-radio-group/evo-radio-group.component.js +127 -127
  192. package/esm2015/lib/components/evo-radio-group/evo-radio-group.module.js +33 -33
  193. package/esm2015/lib/components/evo-radio-group/index.js +1 -1
  194. package/esm2015/lib/components/evo-radio-group/public-api.js +2 -2
  195. package/esm2015/lib/components/evo-radio-group/typings/options.js +1 -1
  196. package/esm2015/lib/components/evo-radioshape/components/evo-radioshape.component.js +60 -60
  197. package/esm2015/lib/components/evo-radioshape/evo-radioshape.module.js +32 -32
  198. package/esm2015/lib/components/evo-radioshape/index.js +1 -1
  199. package/esm2015/lib/components/evo-radioshape/public-api.js +2 -2
  200. package/esm2015/lib/components/evo-segmented-bar/evo-segmented-bar/evo-segmented-bar.component.js +23 -23
  201. package/esm2015/lib/components/evo-segmented-bar/evo-segmented-bar-button/evo-segmented-bar-button.component.js +78 -78
  202. package/esm2015/lib/components/evo-segmented-bar/evo-segmented-bar.module.js +38 -38
  203. package/esm2015/lib/components/evo-segmented-bar/index.js +1 -1
  204. package/esm2015/lib/components/evo-segmented-bar/public-api.js +3 -3
  205. package/esm2015/lib/components/evo-select/evo-select.component.js +120 -120
  206. package/esm2015/lib/components/evo-select/evo-select.module.js +33 -33
  207. package/esm2015/lib/components/evo-select/index.js +1 -1
  208. package/esm2015/lib/components/evo-select/public-api.js +2 -2
  209. package/esm2015/lib/components/evo-sidebar/enums/evo-sidebar-close-targets.js +7 -7
  210. package/esm2015/lib/components/evo-sidebar/enums/evo-sidebar-sizes.js +6 -6
  211. package/esm2015/lib/components/evo-sidebar/enums/evo-sidebar-states.js +5 -5
  212. package/esm2015/lib/components/evo-sidebar/evo-sidebar-content/evo-sidebar-content.component.js +37 -37
  213. package/esm2015/lib/components/evo-sidebar/evo-sidebar-footer/evo-sidebar-footer.component.js +18 -18
  214. package/esm2015/lib/components/evo-sidebar/evo-sidebar-header/evo-sidebar-header.component.js +46 -46
  215. package/esm2015/lib/components/evo-sidebar/evo-sidebar-portal.js +20 -20
  216. package/esm2015/lib/components/evo-sidebar/evo-sidebar.component.js +173 -173
  217. package/esm2015/lib/components/evo-sidebar/evo-sidebar.module.js +89 -89
  218. package/esm2015/lib/components/evo-sidebar/evo-sidebar.service.js +101 -101
  219. package/esm2015/lib/components/evo-sidebar/index.js +1 -1
  220. package/esm2015/lib/components/evo-sidebar/interfaces.js +1 -1
  221. package/esm2015/lib/components/evo-sidebar/public-api.js +11 -11
  222. package/esm2015/lib/components/evo-sidebar/sidebar-injection-token.js +2 -2
  223. package/esm2015/lib/components/evo-sidebar/tokens.js +11 -11
  224. package/esm2015/lib/components/evo-stepper/evo-stepper-events.js +24 -24
  225. package/esm2015/lib/components/evo-stepper/evo-stepper-item/evo-stepper-item.component.js +34 -34
  226. package/esm2015/lib/components/evo-stepper/evo-stepper.component.js +71 -71
  227. package/esm2015/lib/components/evo-stepper/evo-stepper.module.js +26 -26
  228. package/esm2015/lib/components/evo-stepper/index.js +1 -1
  229. package/esm2015/lib/components/evo-stepper/public-api.js +3 -3
  230. package/esm2015/lib/components/evo-submenu/evo-submenu.component.js +159 -159
  231. package/esm2015/lib/components/evo-submenu/evo-submenu.module.js +35 -35
  232. package/esm2015/lib/components/evo-submenu/index.js +1 -1
  233. package/esm2015/lib/components/evo-submenu/public-api.js +2 -2
  234. package/esm2015/lib/components/evo-switcher/components/evo-switcher-item/evo-switcher-item.component.js +14 -14
  235. package/esm2015/lib/components/evo-switcher/evo-switcher.component.js +35 -35
  236. package/esm2015/lib/components/evo-switcher/evo-switcher.module.js +26 -26
  237. package/esm2015/lib/components/evo-switcher/index.js +1 -1
  238. package/esm2015/lib/components/evo-switcher/public-api.js +3 -3
  239. package/esm2015/lib/components/evo-table/evo-table/evo-table.component.js +70 -70
  240. package/esm2015/lib/components/evo-table/evo-table-column/evo-table-column.component.js +34 -34
  241. package/esm2015/lib/components/evo-table/evo-table.module.js +22 -22
  242. package/esm2015/lib/components/evo-table/index.js +1 -1
  243. package/esm2015/lib/components/evo-table/public-api.js +3 -3
  244. package/esm2015/lib/components/evo-tabs/enums/evo-tabs-size.js +5 -5
  245. package/esm2015/lib/components/evo-tabs/evo-tab/evo-tab.component.js +91 -91
  246. package/esm2015/lib/components/evo-tabs/evo-tab-content/evo-tab-content.component.js +39 -39
  247. package/esm2015/lib/components/evo-tabs/evo-tab-state.collection.js +42 -42
  248. package/esm2015/lib/components/evo-tabs/evo-tabs-size.service.js +23 -23
  249. package/esm2015/lib/components/evo-tabs/evo-tabs.component.js +87 -87
  250. package/esm2015/lib/components/evo-tabs/evo-tabs.module.js +29 -29
  251. package/esm2015/lib/components/evo-tabs/evo-tabs.service.js +66 -66
  252. package/esm2015/lib/components/evo-tabs/index.js +1 -1
  253. package/esm2015/lib/components/evo-tabs/public-api.js +8 -8
  254. package/esm2015/lib/components/evo-textarea/evo-textarea.component.js +83 -83
  255. package/esm2015/lib/components/evo-textarea/evo-textarea.module.js +36 -36
  256. package/esm2015/lib/components/evo-textarea/index.js +1 -1
  257. package/esm2015/lib/components/evo-textarea/public-api.js +2 -2
  258. package/esm2015/lib/components/evo-toast/evo-toast.component.js +102 -102
  259. package/esm2015/lib/components/evo-toast/evo-toast.module.js +44 -44
  260. package/esm2015/lib/components/evo-toast/evo-toast.service.js +48 -48
  261. package/esm2015/lib/components/evo-toast/index.js +1 -1
  262. package/esm2015/lib/components/evo-toast/public-api.js +3 -3
  263. package/esm2015/lib/components/evo-toggle/evo-toggle.component.js +69 -69
  264. package/esm2015/lib/components/evo-toggle/evo-toggle.module.js +29 -29
  265. package/esm2015/lib/components/evo-toggle/index.js +1 -1
  266. package/esm2015/lib/components/evo-toggle/public-api.js +2 -2
  267. package/esm2015/lib/components/evo-upload/evo-upload.component.js +291 -291
  268. package/esm2015/lib/components/evo-upload/evo-upload.module.js +58 -58
  269. package/esm2015/lib/components/evo-upload/index.js +1 -1
  270. package/esm2015/lib/components/evo-upload/public-api.js +2 -2
  271. package/esm2015/lib/decorators/deprecate-method.decorator.js +7 -7
  272. package/esm2015/lib/decorators/deprecate-variable.decorator.js +16 -16
  273. package/esm2015/lib/decorators/index.js +1 -1
  274. package/esm2015/lib/decorators/public-api.js +2 -2
  275. package/esm2015/lib/directives/evo-click-outside.directive.js +39 -39
  276. package/esm2015/lib/directives/evo-is-expanded.directive.js +71 -71
  277. package/esm2015/lib/directives/evo-let/evo-let.directive.js +35 -35
  278. package/esm2015/lib/directives/evo-ui-class.directive.js +158 -158
  279. package/esm2015/lib/directives/index.js +1 -1
  280. package/esm2015/lib/directives/public-api.js +4 -4
  281. package/esm2015/lib/evo-ui-kit.module.js +64 -64
  282. package/esm2015/lib/operators/enter-zone.operator.js +8 -8
  283. package/esm2015/lib/operators/index.js +1 -1
  284. package/esm2015/lib/operators/public-api.js +1 -1
  285. package/esm2015/lib/pipes/declination.pipe.js +39 -39
  286. package/esm2015/lib/pipes/evo-pipes.module.js +16 -16
  287. package/esm2015/lib/pipes/index.js +1 -1
  288. package/esm2015/lib/pipes/public-api.js +3 -3
  289. package/esm2015/lib/pipes/safe-html.pipe.js +17 -17
  290. package/esm2015/lib/services/evo-expanded.service.js +22 -22
  291. package/esm2015/lib/services/index.js +1 -1
  292. package/esm2015/lib/services/public-api.js +1 -1
  293. package/esm2015/lib/services/window.service.js +48 -48
  294. package/esm2015/public_api.js +72 -72
  295. package/evotor-dev-ui-kit.d.ts +5 -5
  296. package/fesm2015/evotor-dev-ui-kit-icons-category.js +62 -62
  297. package/fesm2015/evotor-dev-ui-kit-icons-emotions.js +18 -18
  298. package/fesm2015/evotor-dev-ui-kit-icons-header.js +28 -28
  299. package/fesm2015/evotor-dev-ui-kit-icons-info.js +40 -40
  300. package/fesm2015/evotor-dev-ui-kit-icons-navigation.js +56 -56
  301. package/fesm2015/evotor-dev-ui-kit-icons-navigation.js.map +1 -1
  302. package/fesm2015/evotor-dev-ui-kit-icons-side-menu.js +64 -64
  303. package/fesm2015/evotor-dev-ui-kit-icons-system.js +368 -368
  304. package/fesm2015/evotor-dev-ui-kit-icons-system.js.map +1 -1
  305. package/fesm2015/evotor-dev-ui-kit-icons.js +624 -624
  306. package/fesm2015/evotor-dev-ui-kit-icons.js.map +1 -1
  307. package/fesm2015/evotor-dev-ui-kit.js +7119 -7119
  308. package/fesm2015/evotor-dev-ui-kit.js.map +1 -1
  309. package/icons/category/evotor-dev-ui-kit-icons-category.d.ts +5 -5
  310. package/icons/category/index.d.ts +59 -59
  311. package/icons/emotions/evotor-dev-ui-kit-icons-emotions.d.ts +5 -5
  312. package/icons/emotions/index.d.ts +15 -15
  313. package/icons/evotor-dev-ui-kit-icons.d.ts +5 -5
  314. package/icons/header/evotor-dev-ui-kit-icons-header.d.ts +5 -5
  315. package/icons/header/index.d.ts +25 -25
  316. package/icons/index.d.ts +319 -319
  317. package/icons/info/evotor-dev-ui-kit-icons-info.d.ts +5 -5
  318. package/icons/info/index.d.ts +37 -37
  319. package/icons/navigation/evotor-dev-ui-kit-icons-navigation.d.ts +5 -5
  320. package/icons/navigation/index.d.ts +53 -53
  321. package/icons/side-menu/evotor-dev-ui-kit-icons-side-menu.d.ts +5 -5
  322. package/icons/side-menu/index.d.ts +61 -61
  323. package/icons/system/evotor-dev-ui-kit-icons-system.d.ts +5 -5
  324. package/icons/system/index.d.ts +365 -365
  325. package/lib/common/Serializable.d.ts +3 -3
  326. package/lib/common/animations/expand.animation.d.ts +1 -1
  327. package/lib/common/animations/index.d.ts +3 -3
  328. package/lib/common/animations/sidebar.animation.d.ts +2 -2
  329. package/lib/common/animations/skip-initial-render.animation.d.ts +1 -1
  330. package/lib/common/collection/evo-collection-fabric.d.ts +4 -4
  331. package/lib/common/collection/evo-collection.d.ts +3 -3
  332. package/lib/common/collection/index.d.ts +2 -2
  333. package/lib/common/constants/css-breakpoints.d.ts +8 -8
  334. package/lib/common/constants/view-breakpoint-streams.d.ts +9 -9
  335. package/lib/common/evo-base-control.d.ts +21 -21
  336. package/lib/common/evo-control-state-manager/evo-control-state-manager.d.ts +7 -7
  337. package/lib/common/evo-control-state-manager/evo-control-state.interface.d.ts +5 -5
  338. package/lib/common/evo-control-state-manager/evo-control-states.enum.d.ts +4 -4
  339. package/lib/common/form-helper/form-helper.d.ts +5 -5
  340. package/lib/common/types/evo-color.d.ts +1 -1
  341. package/lib/common/types/evo-size.d.ts +1 -1
  342. package/lib/common/types/index.d.ts +2 -2
  343. package/lib/components/evo-accordion/evo-accordion-content/evo-accordion-content.component.d.ts +11 -11
  344. package/lib/components/evo-accordion/evo-accordion-panel/evo-accordion-panel.component.d.ts +9 -9
  345. package/lib/components/evo-accordion/evo-accordion-title/evo-accordion-title.component.d.ts +11 -11
  346. package/lib/components/evo-accordion/evo-accordion.component.d.ts +9 -9
  347. package/lib/components/evo-accordion/evo-accordion.module.d.ts +13 -13
  348. package/lib/components/evo-accordion/index.d.ts +1 -1
  349. package/lib/components/evo-accordion/public-api.d.ts +5 -5
  350. package/lib/components/evo-alert/evo-alert.component.d.ts +38 -38
  351. package/lib/components/evo-alert/evo-alert.module.d.ts +9 -9
  352. package/lib/components/evo-alert/index.d.ts +1 -1
  353. package/lib/components/evo-alert/public-api.d.ts +2 -2
  354. package/lib/components/evo-autocomplete/components/evo-autocomplete.component.d.ts +115 -115
  355. package/lib/components/evo-autocomplete/components/templates/evo-autocomplete-default-option.component.d.ts +16 -16
  356. package/lib/components/evo-autocomplete/evo-autocomplete.module.d.ts +15 -15
  357. package/lib/components/evo-autocomplete/helpers/switch-query-to-list.d.ts +2 -2
  358. package/lib/components/evo-autocomplete/index.d.ts +1 -1
  359. package/lib/components/evo-autocomplete/models/DaDataParty.d.ts +37 -37
  360. package/lib/components/evo-autocomplete/models/dadata.model.d.ts +320 -320
  361. package/lib/components/evo-autocomplete/public-api.d.ts +6 -6
  362. package/lib/components/evo-autocomplete/types/evo-autocomplete-size.d.ts +1 -1
  363. package/lib/components/evo-badge/evo-badge.component.d.ts +12 -12
  364. package/lib/components/evo-badge/evo-badge.module.d.ts +9 -9
  365. package/lib/components/evo-badge/index.d.ts +2 -2
  366. package/lib/components/evo-badge/public-api.d.ts +2 -2
  367. package/lib/components/evo-badge/types/evo-badge-color.d.ts +2 -2
  368. package/lib/components/evo-badge/types/evo-badge-size.d.ts +2 -2
  369. package/lib/components/evo-badge/types/index.d.ts +2 -2
  370. package/lib/components/evo-banner/evo-banner.component.d.ts +46 -46
  371. package/lib/components/evo-banner/evo-banner.module.d.ts +9 -9
  372. package/lib/components/evo-banner/index.d.ts +1 -1
  373. package/lib/components/evo-banner/public-api.d.ts +2 -2
  374. package/lib/components/evo-button/evo-button.component.d.ts +33 -33
  375. package/lib/components/evo-button/evo-button.module.d.ts +9 -9
  376. package/lib/components/evo-button/index.d.ts +1 -1
  377. package/lib/components/evo-button/public-api.d.ts +2 -2
  378. package/lib/components/evo-checkbox/evo-checkbox.component.d.ts +26 -26
  379. package/lib/components/evo-checkbox/evo-checkbox.module.d.ts +11 -11
  380. package/lib/components/evo-checkbox/index.d.ts +1 -1
  381. package/lib/components/evo-checkbox/public-api.d.ts +2 -2
  382. package/lib/components/evo-chip/evo-chip.component.d.ts +45 -45
  383. package/lib/components/evo-chip/evo-chip.module.d.ts +11 -11
  384. package/lib/components/evo-chip/index.d.ts +1 -1
  385. package/lib/components/evo-chip/public-api.d.ts +2 -2
  386. package/lib/components/evo-control-error/evo-control-error.component.d.ts +14 -14
  387. package/lib/components/evo-control-error/evo-control-error.module.d.ts +10 -10
  388. package/lib/components/evo-control-error/index.d.ts +1 -1
  389. package/lib/components/evo-control-error/public-api.d.ts +2 -2
  390. package/lib/components/evo-control-label/evo-control-label.component.d.ts +9 -9
  391. package/lib/components/evo-control-label/evo-control-label.module.d.ts +8 -8
  392. package/lib/components/evo-control-label/index.d.ts +1 -1
  393. package/lib/components/evo-control-label/public-api.d.ts +2 -2
  394. package/lib/components/evo-counter/evo-counter.component.d.ts +16 -16
  395. package/lib/components/evo-counter/evo-counter.module.d.ts +9 -9
  396. package/lib/components/evo-counter/index.d.ts +1 -1
  397. package/lib/components/evo-counter/public-api.d.ts +2 -2
  398. package/lib/components/evo-datepicker/evo-datepicker.component.d.ts +174 -174
  399. package/lib/components/evo-datepicker/evo-datepicker.module.d.ts +11 -11
  400. package/lib/components/evo-datepicker/flatpickr-options.interface.d.ts +10 -10
  401. package/lib/components/evo-datepicker/index.d.ts +1 -1
  402. package/lib/components/evo-datepicker/public-api.d.ts +2 -2
  403. package/lib/components/evo-datepicker/templates/index.d.ts +16 -16
  404. package/lib/components/evo-dropdown/evo-dropdown-origin.directive.d.ts +15 -15
  405. package/lib/components/evo-dropdown/evo-dropdown-position-description.d.ts +3 -3
  406. package/lib/components/evo-dropdown/evo-dropdown.component.d.ts +34 -34
  407. package/lib/components/evo-dropdown/evo-dropdown.module.d.ts +10 -10
  408. package/lib/components/evo-dropdown/index.d.ts +1 -1
  409. package/lib/components/evo-dropdown/public-api.d.ts +4 -4
  410. package/lib/components/evo-dropdown/types/evo-dropdown-positions.d.ts +1 -1
  411. package/lib/components/evo-icon/classes/evo-icons-library.d.ts +11 -11
  412. package/lib/components/evo-icon/evo-icon.component.d.ts +20 -20
  413. package/lib/components/evo-icon/evo-icon.module.d.ts +16 -16
  414. package/lib/components/evo-icon/index.d.ts +1 -1
  415. package/lib/components/evo-icon/interfaces/icons-category.d.ts +5 -5
  416. package/lib/components/evo-icon/interfaces/icons-source.d.ts +3 -3
  417. package/lib/components/evo-icon/public-api.d.ts +5 -5
  418. package/lib/components/evo-icon-button/evo-icon-button.component.d.ts +23 -23
  419. package/lib/components/evo-icon-button/evo-icon-button.module.d.ts +8 -8
  420. package/lib/components/evo-icon-button/index.d.ts +1 -1
  421. package/lib/components/evo-icon-button/public-api.d.ts +2 -2
  422. package/lib/components/evo-icon-button/types/evo-icon-button-size.d.ts +2 -2
  423. package/lib/components/evo-icon-button/types/evo-icon-button-theme.d.ts +1 -1
  424. package/lib/components/evo-icon-number/components/evo-icon-number/evo-icon-number.component.d.ts +6 -6
  425. package/lib/components/evo-icon-number/evo-icon-number.module.d.ts +8 -8
  426. package/lib/components/evo-icon-number/index.d.ts +1 -1
  427. package/lib/components/evo-icon-number/public-api.d.ts +2 -2
  428. package/lib/components/evo-input/evo-input-icon/evo-input-icon.directive.d.ts +5 -5
  429. package/lib/components/evo-input/evo-input.component.d.ts +93 -93
  430. package/lib/components/evo-input/evo-input.module.d.ts +14 -14
  431. package/lib/components/evo-input/index.d.ts +1 -1
  432. package/lib/components/evo-input/public-api.d.ts +3 -3
  433. package/lib/components/evo-input-contenteditable/evo-input-contenteditable.component.d.ts +44 -44
  434. package/lib/components/evo-input-contenteditable/evo-input-contenteditable.module.d.ts +10 -10
  435. package/lib/components/evo-input-contenteditable/index.d.ts +1 -1
  436. package/lib/components/evo-input-contenteditable/public-api.d.ts +2 -2
  437. package/lib/components/evo-input-contenteditable/utils/clear-multiline.d.ts +1 -1
  438. package/lib/components/evo-loader/evo-circular-loader.component.d.ts +8 -8
  439. package/lib/components/evo-loader/evo-loader.component.d.ts +14 -14
  440. package/lib/components/evo-loader/evo-loader.module.d.ts +10 -10
  441. package/lib/components/evo-loader/index.d.ts +1 -1
  442. package/lib/components/evo-loader/public-api.d.ts +3 -3
  443. package/lib/components/evo-modal/evo-modal.component.d.ts +37 -37
  444. package/lib/components/evo-modal/evo-modal.module.d.ts +10 -10
  445. package/lib/components/evo-modal/evo-modal.service.d.ts +22 -22
  446. package/lib/components/evo-modal/index.d.ts +1 -1
  447. package/lib/components/evo-modal/public-api.d.ts +3 -3
  448. package/lib/components/evo-navbar/evo-navbar-item/evo-navbar-item.component.d.ts +21 -21
  449. package/lib/components/evo-navbar/evo-navbar.component.d.ts +18 -18
  450. package/lib/components/evo-navbar/evo-navbar.module.d.ts +12 -12
  451. package/lib/components/evo-navbar/index.d.ts +1 -1
  452. package/lib/components/evo-navbar/interfaces/nav-item-main-info.d.ts +5 -5
  453. package/lib/components/evo-navbar/interfaces/nav-item-router-link.d.ts +14 -14
  454. package/lib/components/evo-navbar/interfaces/nav-item.href.d.ts +4 -4
  455. package/lib/components/evo-navbar/public-api.d.ts +7 -7
  456. package/lib/components/evo-navbar/types/nav-item.d.ts +4 -4
  457. package/lib/components/evo-note/evo-note.component.d.ts +13 -13
  458. package/lib/components/evo-note/evo-note.module.d.ts +10 -10
  459. package/lib/components/evo-note/index.d.ts +1 -1
  460. package/lib/components/evo-note/public.api.d.ts +3 -3
  461. package/lib/components/evo-note/types/evo-note-type.d.ts +1 -1
  462. package/lib/components/evo-paginator/evo-paginator.component.d.ts +26 -26
  463. package/lib/components/evo-paginator/evo-paginator.module.d.ts +8 -8
  464. package/lib/components/evo-paginator/index.d.ts +1 -1
  465. package/lib/components/evo-paginator/public-api.d.ts +2 -2
  466. package/lib/components/evo-plus-minus/evo-plus-minus.component.d.ts +13 -13
  467. package/lib/components/evo-plus-minus/evo-plus-minus.module.d.ts +8 -8
  468. package/lib/components/evo-plus-minus/index.d.ts +1 -1
  469. package/lib/components/evo-plus-minus/public-api.d.ts +2 -2
  470. package/lib/components/evo-popover/evo-popover.component.d.ts +43 -43
  471. package/lib/components/evo-popover/evo-popover.module.d.ts +9 -9
  472. package/lib/components/evo-popover/index.d.ts +1 -1
  473. package/lib/components/evo-popover/public-api.d.ts +2 -2
  474. package/lib/components/evo-portal/evo-portal-outlet.class.d.ts +6 -6
  475. package/lib/components/evo-portal/evo-portal-outlet.directive.d.ts +10 -10
  476. package/lib/components/evo-portal/evo-portal.module.d.ts +8 -8
  477. package/lib/components/evo-portal/evo-portal.service.d.ts +27 -27
  478. package/lib/components/evo-portal/index.d.ts +1 -1
  479. package/lib/components/evo-portal/public-api.d.ts +4 -4
  480. package/lib/components/evo-radio/evo-radio.component.d.ts +18 -18
  481. package/lib/components/evo-radio/evo-radio.module.d.ts +9 -9
  482. package/lib/components/evo-radio/index.d.ts +1 -1
  483. package/lib/components/evo-radio/public-api.d.ts +2 -2
  484. package/lib/components/evo-radio-group/evo-radio-group.component.d.ts +56 -56
  485. package/lib/components/evo-radio-group/evo-radio-group.module.d.ts +11 -11
  486. package/lib/components/evo-radio-group/index.d.ts +1 -1
  487. package/lib/components/evo-radio-group/public-api.d.ts +2 -2
  488. package/lib/components/evo-radio-group/typings/options.d.ts +6 -6
  489. package/lib/components/evo-radioshape/components/evo-radioshape.component.d.ts +19 -19
  490. package/lib/components/evo-radioshape/evo-radioshape.module.d.ts +9 -9
  491. package/lib/components/evo-radioshape/index.d.ts +1 -1
  492. package/lib/components/evo-radioshape/public-api.d.ts +2 -2
  493. package/lib/components/evo-segmented-bar/evo-segmented-bar/evo-segmented-bar.component.d.ts +10 -10
  494. package/lib/components/evo-segmented-bar/evo-segmented-bar-button/evo-segmented-bar-button.component.d.ts +22 -22
  495. package/lib/components/evo-segmented-bar/evo-segmented-bar.module.d.ts +11 -11
  496. package/lib/components/evo-segmented-bar/index.d.ts +1 -1
  497. package/lib/components/evo-segmented-bar/public-api.d.ts +3 -3
  498. package/lib/components/evo-select/evo-select.component.d.ts +37 -37
  499. package/lib/components/evo-select/evo-select.module.d.ts +11 -11
  500. package/lib/components/evo-select/index.d.ts +1 -1
  501. package/lib/components/evo-select/public-api.d.ts +2 -2
  502. package/lib/components/evo-sidebar/enums/evo-sidebar-close-targets.d.ts +6 -6
  503. package/lib/components/evo-sidebar/enums/evo-sidebar-sizes.d.ts +5 -5
  504. package/lib/components/evo-sidebar/enums/evo-sidebar-states.d.ts +4 -4
  505. package/lib/components/evo-sidebar/evo-sidebar-content/evo-sidebar-content.component.d.ts +12 -12
  506. package/lib/components/evo-sidebar/evo-sidebar-footer/evo-sidebar-footer.component.d.ts +5 -5
  507. package/lib/components/evo-sidebar/evo-sidebar-header/evo-sidebar-header.component.d.ts +13 -13
  508. package/lib/components/evo-sidebar/evo-sidebar-portal.d.ts +13 -13
  509. package/lib/components/evo-sidebar/evo-sidebar.component.d.ts +42 -42
  510. package/lib/components/evo-sidebar/evo-sidebar.module.d.ts +17 -17
  511. package/lib/components/evo-sidebar/evo-sidebar.service.d.ts +26 -26
  512. package/lib/components/evo-sidebar/index.d.ts +1 -1
  513. package/lib/components/evo-sidebar/interfaces.d.ts +23 -23
  514. package/lib/components/evo-sidebar/public-api.d.ts +11 -11
  515. package/lib/components/evo-sidebar/sidebar-injection-token.d.ts +2 -2
  516. package/lib/components/evo-sidebar/tokens.d.ts +7 -7
  517. package/lib/components/evo-stepper/evo-stepper-events.d.ts +12 -12
  518. package/lib/components/evo-stepper/evo-stepper-item/evo-stepper-item.component.d.ts +13 -13
  519. package/lib/components/evo-stepper/evo-stepper.component.d.ts +27 -27
  520. package/lib/components/evo-stepper/evo-stepper.module.d.ts +10 -10
  521. package/lib/components/evo-stepper/index.d.ts +1 -1
  522. package/lib/components/evo-stepper/public-api.d.ts +3 -3
  523. package/lib/components/evo-submenu/evo-submenu.component.d.ts +49 -49
  524. package/lib/components/evo-submenu/evo-submenu.module.d.ts +11 -11
  525. package/lib/components/evo-submenu/index.d.ts +1 -1
  526. package/lib/components/evo-submenu/public-api.d.ts +2 -2
  527. package/lib/components/evo-switcher/components/evo-switcher-item/evo-switcher-item.component.d.ts +9 -9
  528. package/lib/components/evo-switcher/evo-switcher.component.d.ts +14 -14
  529. package/lib/components/evo-switcher/evo-switcher.module.d.ts +10 -10
  530. package/lib/components/evo-switcher/index.d.ts +1 -1
  531. package/lib/components/evo-switcher/public-api.d.ts +3 -3
  532. package/lib/components/evo-table/evo-table/evo-table.component.d.ts +35 -35
  533. package/lib/components/evo-table/evo-table-column/evo-table-column.component.d.ts +12 -12
  534. package/lib/components/evo-table/evo-table.module.d.ts +9 -9
  535. package/lib/components/evo-table/index.d.ts +1 -1
  536. package/lib/components/evo-table/public-api.d.ts +3 -3
  537. package/lib/components/evo-tabs/enums/evo-tabs-size.d.ts +4 -4
  538. package/lib/components/evo-tabs/evo-tab/evo-tab.component.d.ts +35 -35
  539. package/lib/components/evo-tabs/evo-tab-content/evo-tab-content.component.d.ts +16 -16
  540. package/lib/components/evo-tabs/evo-tab-state.collection.d.ts +15 -15
  541. package/lib/components/evo-tabs/evo-tabs-size.service.d.ts +12 -12
  542. package/lib/components/evo-tabs/evo-tabs.component.d.ts +22 -22
  543. package/lib/components/evo-tabs/evo-tabs.module.d.ts +11 -11
  544. package/lib/components/evo-tabs/evo-tabs.service.d.ts +19 -19
  545. package/lib/components/evo-tabs/index.d.ts +1 -1
  546. package/lib/components/evo-tabs/public-api.d.ts +8 -8
  547. package/lib/components/evo-textarea/evo-textarea.component.d.ts +25 -25
  548. package/lib/components/evo-textarea/evo-textarea.module.d.ts +11 -11
  549. package/lib/components/evo-textarea/index.d.ts +1 -1
  550. package/lib/components/evo-textarea/public-api.d.ts +2 -2
  551. package/lib/components/evo-toast/evo-toast.component.d.ts +23 -23
  552. package/lib/components/evo-toast/evo-toast.module.d.ts +10 -10
  553. package/lib/components/evo-toast/evo-toast.service.d.ts +22 -22
  554. package/lib/components/evo-toast/index.d.ts +1 -1
  555. package/lib/components/evo-toast/public-api.d.ts +3 -3
  556. package/lib/components/evo-toggle/evo-toggle.component.d.ts +20 -20
  557. package/lib/components/evo-toggle/evo-toggle.module.d.ts +10 -10
  558. package/lib/components/evo-toggle/index.d.ts +1 -1
  559. package/lib/components/evo-toggle/public-api.d.ts +2 -2
  560. package/lib/components/evo-upload/evo-upload.component.d.ts +65 -65
  561. package/lib/components/evo-upload/evo-upload.module.d.ts +13 -13
  562. package/lib/components/evo-upload/index.d.ts +1 -1
  563. package/lib/components/evo-upload/public-api.d.ts +2 -2
  564. package/lib/decorators/deprecate-method.decorator.d.ts +1 -1
  565. package/lib/decorators/deprecate-variable.decorator.d.ts +1 -1
  566. package/lib/decorators/index.d.ts +1 -1
  567. package/lib/decorators/public-api.d.ts +2 -2
  568. package/lib/directives/evo-click-outside.directive.d.ts +12 -12
  569. package/lib/directives/evo-is-expanded.directive.d.ts +19 -19
  570. package/lib/directives/evo-let/evo-let.directive.d.ts +17 -17
  571. package/lib/directives/evo-ui-class.directive.d.ts +61 -61
  572. package/lib/directives/index.d.ts +1 -1
  573. package/lib/directives/public-api.d.ts +4 -4
  574. package/lib/evo-ui-kit.module.d.ts +16 -16
  575. package/lib/operators/enter-zone.operator.d.ts +3 -3
  576. package/lib/operators/index.d.ts +1 -1
  577. package/lib/operators/public-api.d.ts +1 -1
  578. package/lib/pipes/declination.pipe.d.ts +7 -7
  579. package/lib/pipes/evo-pipes.module.d.ts +8 -8
  580. package/lib/pipes/index.d.ts +1 -1
  581. package/lib/pipes/public-api.d.ts +3 -3
  582. package/lib/pipes/safe-html.pipe.d.ts +10 -10
  583. package/lib/services/evo-expanded.service.d.ts +11 -11
  584. package/lib/services/index.d.ts +1 -1
  585. package/lib/services/public-api.d.ts +1 -1
  586. package/lib/services/window.service.d.ts +14 -14
  587. package/package.json +1 -1
  588. package/public_api.d.ts +62 -62
  589. package/styles/components/evo-chip.scss +2 -2
  590. package/styles/mixins.scss +3 -2
  591. package/styles/variables.scss +16 -13
@@ -1,363 +1,363 @@
1
- import { Component, EventEmitter, forwardRef, Inject, Input, Optional, Output, ViewChild, } from '@angular/core';
2
- import { COMPOSITION_BUFFER_MODE, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { EvoControlStates } from '../../common/evo-control-state-manager/evo-control-states.enum';
4
- import { EvoBaseControl } from '../../common/evo-base-control';
5
- import { fromEvent, Subject } from 'rxjs';
6
- import { debounceTime, map, takeUntil, tap } from 'rxjs/operators';
7
- import { enterZone } from '../../operators';
8
- import * as IMask from 'imask';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "../evo-icon/evo-icon.component";
11
- import * as i2 from "../evo-control-error/evo-control-error.component";
12
- import * as i3 from "../../directives/evo-ui-class.directive";
13
- import * as i4 from "@angular/common";
14
- export var EvoInputSizes;
15
- (function (EvoInputSizes) {
16
- EvoInputSizes["small"] = "small";
17
- EvoInputSizes["normal"] = "normal";
18
- })(EvoInputSizes || (EvoInputSizes = {}));
19
- export var EvoInputTheme;
20
- (function (EvoInputTheme) {
21
- EvoInputTheme["default"] = "default";
22
- EvoInputTheme["rounded"] = "rounded";
23
- })(EvoInputTheme || (EvoInputTheme = {}));
24
- export class EvoInputComponent extends EvoBaseControl {
25
- constructor(zone, changeDetector, _renderer, _compositionMode, injector) {
26
- super(injector);
27
- this.zone = zone;
28
- this.changeDetector = changeDetector;
29
- this._renderer = _renderer;
30
- this._compositionMode = _compositionMode;
31
- this.injector = injector;
32
- this.type = 'text';
33
- this.disabled = false;
34
- this.loading = false;
35
- this.prefix = '';
36
- this.inputDebounce = 50;
37
- this.unmask = false;
38
- this.clearable = false;
39
- this.maskValidation = false;
40
- this.blur = new EventEmitter();
41
- this.size = EvoInputSizes.normal;
42
- this.theme = EvoInputTheme.default;
43
- this.customTooltipChecked = false;
44
- this.uiStates = {
45
- hasCustomTooltip: false,
46
- isTooltipVisible: false,
47
- isFocused: false,
48
- };
49
- this.tooltipVisibilityTimeout = false;
50
- this.destroy$ = new Subject();
51
- /** Whether the user is creating a composition string (IME events). */
52
- this._composing = false;
53
- }
54
- set setValue(value) {
55
- this._value = value;
56
- }
57
- set setSize(size) {
58
- if (EvoInputSizes[size]) {
59
- this.size = EvoInputSizes[size];
60
- }
61
- }
62
- set setTheme(theme) {
63
- if (EvoInputTheme[theme]) {
64
- this.theme = EvoInputTheme[theme];
65
- }
66
- }
67
- get isDisabled() {
68
- if (this.loading) {
69
- return true;
70
- }
71
- return this.disabled;
72
- }
73
- get value() {
74
- return this._value;
75
- }
76
- set value(value) {
77
- if (value || this._value) {
78
- this._value = this.removePrefix(value);
79
- this.onChange(this.prefix + (this._value || ''));
80
- this.changeDetector.markForCheck();
81
- }
82
- }
83
- get inputClass() {
84
- return {
85
- 'focused': this.uiStates.isFocused,
86
- 'disabled': this.isDisabled,
87
- 'valid': this.currentState[EvoControlStates.valid],
88
- 'invalid': this.currentState[EvoControlStates.invalid],
89
- [`size-${this.size}`]: this.size !== EvoInputSizes.normal,
90
- [`theme-${this.theme}`]: true,
91
- };
92
- }
93
- get hasAdditional() {
94
- return !!this.tooltip || this.uiStates.hasCustomTooltip || !!this.icon;
95
- }
96
- set maskValue(value) {
97
- const normalizedValue = value !== null && value !== void 0 ? value : '';
98
- if (this.iMask) {
99
- if (this.unmask === 'typed') {
100
- this.iMask.typedValue = normalizedValue;
101
- }
102
- else if (this.unmask) {
103
- this.iMask.unmaskedValue = normalizedValue;
104
- }
105
- else {
106
- this.iMask.value = normalizedValue;
107
- }
108
- }
109
- else {
110
- this.writeToElement(normalizedValue);
111
- }
112
- }
113
- get maskValue() {
114
- if (!this.iMask) {
115
- return this.inputElement.nativeElement.value;
116
- }
117
- if (this.unmask === 'typed') {
118
- return this.iMask.typedValue;
119
- }
120
- if (this.unmask) {
121
- return this.iMask.unmaskedValue;
122
- }
123
- return this.iMask.value;
124
- }
125
- get isClearable() {
126
- return this.clearable && !this.disabled;
127
- }
128
- ngOnInit() {
129
- const inputEl = this.inputElement.nativeElement;
130
- this.zone.runOutsideAngular(() => {
131
- if (this.mask) {
132
- this.createMaskInstance(this.mask);
133
- }
134
- fromEvent(inputEl, 'input')
135
- .pipe(debounceTime(this.inputDebounce), map((e) => {
136
- if (this.iMask) {
137
- return this.maskValue;
138
- }
139
- return e.target.value;
140
- }), enterZone(this.zone), tap((value) => {
141
- this.value = value;
142
- }), takeUntil(this.destroy$)).subscribe();
143
- });
144
- }
145
- ngOnDestroy() {
146
- this.destroy$.next();
147
- this.destroy$.complete();
148
- if (this.iMask) {
149
- this.destroyMask();
150
- }
151
- }
152
- ngOnChanges(changes) {
153
- if (!changes) {
154
- return;
155
- }
156
- const { mask } = changes;
157
- if (mask && !mask.firstChange) {
158
- const newMaskOptions = mask.currentValue;
159
- if (newMaskOptions) {
160
- if (this.iMask) {
161
- this.iMask.updateOptions(newMaskOptions);
162
- }
163
- else {
164
- this.createMaskInstance(newMaskOptions);
165
- }
166
- }
167
- else {
168
- this.destroyMask();
169
- }
170
- }
171
- }
172
- onChange(value) {
173
- // this is intentional
174
- }
175
- onTouched() {
176
- // this is intentional
177
- }
178
- ngAfterViewInit() {
179
- if (this.autoFocus) {
180
- this.inputElement.nativeElement.focus();
181
- }
182
- this.checkCustomTooltip();
183
- }
184
- writeToElement(value) {
185
- this._renderer.setProperty(this.inputElement.nativeElement, 'value', value);
186
- }
187
- writeValue(value) {
188
- if (value === this._value) {
189
- return;
190
- }
191
- this.value = value;
192
- if (this.mask) {
193
- this.maskValue = value;
194
- }
195
- else {
196
- this.writeToElement(value);
197
- }
198
- }
199
- registerOnChange(fn) {
200
- this.onChange = fn;
201
- }
202
- registerOnTouched(fn) {
203
- this.onTouched = fn;
204
- }
205
- setDisabledState(state) {
206
- this.disabled = state;
207
- }
208
- onFocus() {
209
- if (!this.uiStates.isFocused) {
210
- this.uiStates.isFocused = true;
211
- }
212
- }
213
- onBlur() {
214
- this.uiStates.isFocused = false;
215
- this.onTouched();
216
- this.blur.emit();
217
- }
218
- onTooltipClick(event) {
219
- event.preventDefault();
220
- event.stopPropagation();
221
- }
222
- onClear() {
223
- this.writeValue('');
224
- }
225
- hideTooltip() {
226
- this.tooltipVisibilityTimeout = true;
227
- setTimeout(() => {
228
- if (this.tooltipVisibilityTimeout) {
229
- this.uiStates.isTooltipVisible = false;
230
- }
231
- }, 25);
232
- }
233
- showTooltip() {
234
- this.uiStates.isTooltipVisible = true;
235
- this.tooltipVisibilityTimeout = false;
236
- }
237
- // Composition handling is taken from:
238
- // https://github.com/angular/angular/blob/11.0.3/packages/forms/src/directives/default_value_accessor.ts#L152
239
- _compositionStart() {
240
- this._composing = true;
241
- }
242
- _compositionEnd(value) {
243
- this._composing = false;
244
- if (this._compositionMode) {
245
- this.value = value;
246
- }
247
- }
248
- removePrefix(value) {
249
- if (typeof value === 'string' &&
250
- value.indexOf(this.prefix) === 0) {
251
- return value.replace(this.prefix, '');
252
- }
253
- return value;
254
- }
255
- createMaskInstance(opts) {
256
- this.iMask = new IMask.InputMask(this.inputElement.nativeElement, opts);
257
- }
258
- destroyMask() {
259
- var _a;
260
- (_a = this.iMask) === null || _a === void 0 ? void 0 : _a.destroy();
261
- this.iMask = null;
262
- }
263
- checkCustomTooltip() {
264
- this.uiStates.hasCustomTooltip = this.tooltipElement &&
265
- this.tooltipElement.nativeElement &&
266
- this.tooltipElement.nativeElement.children.length > 0;
267
- this.customTooltipChecked = true;
268
- this.changeDetector.detectChanges();
269
- }
270
- validate() {
271
- if (this.maskValidation && this.mask && !this.iMask.masked.isComplete) {
272
- return { mask: true };
273
- }
274
- return null;
275
- }
276
- }
277
- EvoInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EvoInputComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: COMPOSITION_BUFFER_MODE, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
278
- EvoInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EvoInputComponent, selector: "evo-input", inputs: { autoFocus: "autoFocus", dataCp: ["data-cp", "dataCp"], icon: "icon", mask: "mask", placeholder: "placeholder", tooltip: "tooltip", type: "type", disabled: "disabled", loading: "loading", prefix: "prefix", autocomplete: "autocomplete", inputDebounce: "inputDebounce", unmask: "unmask", clearable: "clearable", maskValidation: "maskValidation", setValue: ["value", "setValue"], setSize: ["size", "setSize"], setTheme: ["theme", "setTheme"] }, outputs: { blur: "blur" }, providers: [
279
- {
280
- provide: NG_VALUE_ACCESSOR,
281
- useExisting: forwardRef(() => EvoInputComponent),
282
- multi: true,
283
- },
284
- {
285
- provide: NG_VALIDATORS,
286
- useExisting: forwardRef(() => EvoInputComponent),
287
- multi: true,
288
- },
289
- ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "tooltipElement", first: true, predicate: ["tooltipContainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label class=\"evo-input\" [evoUiClass]=\"inputClass\">\n <div class=\"evo-input__prefix-content\">\n <ng-content select=\"[evoInputPrefixContent]\"></ng-content>\n </div>\n <div class=\"evo-input__prefix-icon\">\n <ng-content select=\"[evoInputIcon]\"></ng-content>\n </div>\n <span\n class=\"evo-input__prefix\" *ngIf=\"prefix\"\n [evoUiClass]=\"{focused: !isDisabled && !!value || uiStates.isFocused }\"\n >{{prefix}}</span>\n <input\n #input\n class=\"evo-input__field\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (compositionstart)=\"_compositionStart()\"\n (compositionend)=\"_compositionEnd($event.target.value)\"\n type=\"{{ type }}\"\n [attr.autocomplete]=\"autocomplete\"\n placeholder=\"{{ placeholder }}\"\n [attr.data-cp]=\"dataCp\"\n [disabled]=\"isDisabled\"\n >\n <div *ngIf=\"loading; else sideBlock\" class=\"evo-input__loading-spinner\"></div>\n <ng-template #sideBlock>\n <div\n *ngIf=\"isClearable\"\n class=\"evo-input__clearable\"\n (click)=\"onClear()\">\n <evo-icon shape=\"decline\" class=\"evo-input__icon-clear\"></evo-icon>\n </div>\n <div class=\"evo-input__additional\" *ngIf=\"hasAdditional\">\n <evo-icon\n shape=\"help\" class=\"evo-input__tooltip\"\n *ngIf=\"tooltip || uiStates.hasCustomTooltip\"\n (mouseenter)=\"showTooltip()\"\n (mouseleave)=\"hideTooltip()\"\n (click)=\"onTooltipClick($event)\"\n ></evo-icon>\n <div class=\"evo-input__icon\" *ngIf=\"icon\">\n <img [attr.src]=\"icon\">\n </div>\n </div>\n </ng-template>\n <div\n *ngIf=\"!customTooltipChecked || uiStates.isTooltipVisible\"\n [hidden]=\"!customTooltipChecked\"\n (click)=\"onTooltipClick($event)\"\n (mouseenter)=\"showTooltip()\"\n (mouseleave)=\"hideTooltip()\"\n #tooltipContainer\n [ngClass]=\"{'evo-input__tooltip-container': tooltip}\"\n >\n {{ tooltip }}\n <ng-content select=\"[tooltip]\"></ng-content>\n </div>\n</label>\n<evo-control-error\n *ngIf=\"showErrors\"\n [errors]=\"control.errors\"\n [errorsMessages]=\"errorsMessages\"\n></evo-control-error>\n", styles: ["@keyframes evo-fx-blink{50%{transform:scale(1);opacity:1}to{opacity:0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes gradient{0%{background-position:0 50%}50%{background-position:50vw 50%}to{background-position:100vw 50%}}:host{display:inline-block;--evo-input-prefix-content-margin: 0 12px}.evo-input{position:relative;cursor:text;--evo-input-height: 48px;--evo-input-border-radius: 4px;--evo-input-font-size: 16px;display:flex;align-items:center;height:var(--evo-input-height);color:#212121;font-weight:normal;font-size:var(--evo-input-font-size);font-family:\"Noto Sans\",\"Open Sans\",\"Helvetica Neue\",Arial,sans-serif;white-space:nowrap;background-color:#fff;border:1px solid #D6D6D6;border-radius:var(--evo-input-border-radius);outline:none;transition:color .3s,box-shadow .3s,background .3s,border .3s}.evo-input_focused{border:solid 1px #74706F}.evo-input_disabled{color:#9b9b9b;background-color:#f4f6f8!important;cursor:default;pointer-events:none}.evo-input_invalid{border-color:#ff1817!important}.evo-input_theme-rounded:not(.evo-input_size-small){border-radius:256px}.evo-input_theme-rounded:not(.evo-input_size-small) .evo-input__field{border-radius:256px}.evo-input_size-small{height:32px}.evo-input_size-small .evo-input__field{padding:0 8px}.evo-input_size-small .evo-input__tooltip,.evo-input_size-small .evo-input__loading-spinner{flex:0 0 16px;width:16px;height:16px;margin:0 10px}.evo-input_size-small .evo-input__icon{margin-right:10px}.evo-input_size-small .evo-input__icon img{max-height:16px}.evo-input_size-small .evo-input__tooltip-container{top:100%}.evo-input_size-small .evo-input__tooltip-container:before{left:calc(100% - 28px)}@media (min-width: 1200px){.evo-input_size-small .evo-input__tooltip-container{top:calc(100% + 4px)}.evo-input_size-small .evo-input__tooltip-container:before{left:calc(50% - 6px)}}.evo-input_size-small .evo-input__prefix-icon{width:16px;height:16px}.evo-input_size-small .evo-input__prefix-icon:empty{display:none}.evo-input_size-small .evo-input__icon-clear{width:16px;height:16px}.evo-input__prefix-icon{display:flex;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;margin-left:12px;fill:#9b9b9b}.evo-input__prefix-icon:empty{display:none}.evo-input__prefix-content{display:inline-flex;flex-shrink:0;justify-content:center;align-items:center;margin:var(--evo-input-prefix-content-margin)}.evo-input__prefix-content:empty{display:none}.evo-input__prefix-content:not(:empty)~.evo-input__field{padding-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.evo-input__field{flex-grow:1;width:100%;height:100%;margin:0;padding:0 8px 0 16px;color:inherit;font-weight:inherit;font-size:inherit;border:none;border-radius:4px;outline:none}.evo-input__field::-webkit-input-placeholder{color:#9b9b9b}.evo-input__field::-moz-placeholder{color:#9b9b9b;opacity:1}.evo-input__field:-ms-input-placeholder{color:#9b9b9b}.evo-input__field:disabled{color:#9b9b9b;background-color:#f4f6f8!important}.evo-input__field:not(:last-child){padding-right:0}.evo-input__prefix{padding-left:20px;font-size:16px;transition:color .2s}.evo-input__prefix_focused{color:#000}.evo-input__prefix:not(:empty)~.evo-input__field{padding-left:0}.evo-input__tooltip{width:24px;height:24px;margin:0 10px;cursor:pointer;-webkit-user-select:none;user-select:none;fill:#91b1b8}.evo-input__icon-clear{width:24px;height:24px;margin:0 10px;cursor:pointer;-webkit-user-select:none;user-select:none;fill:#91b1b8}.evo-input__icon{margin:0 20px 0 10px}.evo-input__icon img{display:block;width:100%;max-width:60px;height:auto;max-height:22px}.evo-input__tooltip-container{position:absolute;top:calc(100% - 2px);left:0;z-index:1;display:flex;width:100%;padding:10px 10px 10px 20px;color:#212121;line-height:normal;white-space:normal;background-color:#fff8e6;border-radius:4px;box-shadow:0 4px 12px #0003;cursor:default}.evo-input__tooltip-container[hidden]{display:none!important}.evo-input__tooltip-container:before{position:absolute;top:-20px;left:calc(100% - 34px);border:10px solid transparent;border-bottom:10px solid #FFF8E6;pointer-events:none;content:\"\"}@media (min-width: 1200px){.evo-input__tooltip-container{left:calc(50% - 22px)}.evo-input__tooltip-container:before{left:calc(50% - 12px)}}.evo-input__clearable{display:flex;justify-content:center;align-items:center}.evo-input__clearable+.evo-input__additional{margin-left:-10px}.evo-input__additional{display:flex;justify-content:center;align-items:center}.evo-input__additional:not(:last-child) .evo-input__icon{margin-right:10px}.evo-input__additional+.evo-input__loading-spinner{margin-left:0}.evo-input__loading-spinner{margin:0 20px;flex:0 0 16px;width:16px;height:16px;border:2px solid #D6D6D6;border-top-color:#21c68b;border-radius:50%;animation:spin .8s linear infinite}\n"], components: [{ type: i1.EvoIconComponent, selector: "evo-icon", inputs: ["shape", "svgWidth", "svgHeight", "svgViewBox"] }, { type: i2.EvoControlErrorComponent, selector: "evo-control-error", inputs: ["errors", "errorsMessages", "showCount"] }], directives: [{ type: i3.EvoUiClassDirective, selector: "[evoUiClass]", inputs: ["class", "evoUiClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
290
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EvoInputComponent, decorators: [{
291
- type: Component,
292
- args: [{
293
- selector: 'evo-input',
294
- templateUrl: './evo-input.component.html',
295
- styleUrls: ['./evo-input.component.scss'],
296
- providers: [
297
- {
298
- provide: NG_VALUE_ACCESSOR,
299
- useExisting: forwardRef(() => EvoInputComponent),
300
- multi: true,
301
- },
302
- {
303
- provide: NG_VALIDATORS,
304
- useExisting: forwardRef(() => EvoInputComponent),
305
- multi: true,
306
- },
307
- ],
308
- }]
309
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
310
- type: Optional
311
- }, {
312
- type: Inject,
313
- args: [COMPOSITION_BUFFER_MODE]
314
- }] }, { type: i0.Injector }]; }, propDecorators: { autoFocus: [{
315
- type: Input
316
- }], dataCp: [{
317
- type: Input,
318
- args: ['data-cp']
319
- }], icon: [{
320
- type: Input
321
- }], mask: [{
322
- type: Input
323
- }], placeholder: [{
324
- type: Input
325
- }], tooltip: [{
326
- type: Input
327
- }], type: [{
328
- type: Input
329
- }], disabled: [{
330
- type: Input
331
- }], loading: [{
332
- type: Input
333
- }], prefix: [{
334
- type: Input
335
- }], autocomplete: [{
336
- type: Input
337
- }], inputDebounce: [{
338
- type: Input
339
- }], unmask: [{
340
- type: Input
341
- }], clearable: [{
342
- type: Input
343
- }], maskValidation: [{
344
- type: Input
345
- }], blur: [{
346
- type: Output
347
- }], inputElement: [{
348
- type: ViewChild,
349
- args: ['input', { static: true }]
350
- }], tooltipElement: [{
351
- type: ViewChild,
352
- args: ['tooltipContainer', { static: true }]
353
- }], setValue: [{
354
- type: Input,
355
- args: ['value']
356
- }], setSize: [{
357
- type: Input,
358
- args: ['size']
359
- }], setTheme: [{
360
- type: Input,
361
- args: ['theme']
362
- }] } });
1
+ import { Component, EventEmitter, forwardRef, Inject, Input, Optional, Output, ViewChild, } from '@angular/core';
2
+ import { COMPOSITION_BUFFER_MODE, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { EvoControlStates } from '../../common/evo-control-state-manager/evo-control-states.enum';
4
+ import { EvoBaseControl } from '../../common/evo-base-control';
5
+ import { fromEvent, Subject } from 'rxjs';
6
+ import { debounceTime, map, takeUntil, tap } from 'rxjs/operators';
7
+ import { enterZone } from '../../operators';
8
+ import * as IMask from 'imask';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../evo-icon/evo-icon.component";
11
+ import * as i2 from "../evo-control-error/evo-control-error.component";
12
+ import * as i3 from "../../directives/evo-ui-class.directive";
13
+ import * as i4 from "@angular/common";
14
+ export var EvoInputSizes;
15
+ (function (EvoInputSizes) {
16
+ EvoInputSizes["small"] = "small";
17
+ EvoInputSizes["normal"] = "normal";
18
+ })(EvoInputSizes || (EvoInputSizes = {}));
19
+ export var EvoInputTheme;
20
+ (function (EvoInputTheme) {
21
+ EvoInputTheme["default"] = "default";
22
+ EvoInputTheme["rounded"] = "rounded";
23
+ })(EvoInputTheme || (EvoInputTheme = {}));
24
+ export class EvoInputComponent extends EvoBaseControl {
25
+ constructor(zone, changeDetector, _renderer, _compositionMode, injector) {
26
+ super(injector);
27
+ this.zone = zone;
28
+ this.changeDetector = changeDetector;
29
+ this._renderer = _renderer;
30
+ this._compositionMode = _compositionMode;
31
+ this.injector = injector;
32
+ this.type = 'text';
33
+ this.disabled = false;
34
+ this.loading = false;
35
+ this.prefix = '';
36
+ this.inputDebounce = 50;
37
+ this.unmask = false;
38
+ this.clearable = false;
39
+ this.maskValidation = false;
40
+ this.blur = new EventEmitter();
41
+ this.size = EvoInputSizes.normal;
42
+ this.theme = EvoInputTheme.default;
43
+ this.customTooltipChecked = false;
44
+ this.uiStates = {
45
+ hasCustomTooltip: false,
46
+ isTooltipVisible: false,
47
+ isFocused: false,
48
+ };
49
+ this.tooltipVisibilityTimeout = false;
50
+ this.destroy$ = new Subject();
51
+ /** Whether the user is creating a composition string (IME events). */
52
+ this._composing = false;
53
+ }
54
+ set setValue(value) {
55
+ this._value = value;
56
+ }
57
+ set setSize(size) {
58
+ if (EvoInputSizes[size]) {
59
+ this.size = EvoInputSizes[size];
60
+ }
61
+ }
62
+ set setTheme(theme) {
63
+ if (EvoInputTheme[theme]) {
64
+ this.theme = EvoInputTheme[theme];
65
+ }
66
+ }
67
+ get isDisabled() {
68
+ if (this.loading) {
69
+ return true;
70
+ }
71
+ return this.disabled;
72
+ }
73
+ get value() {
74
+ return this._value;
75
+ }
76
+ set value(value) {
77
+ if (value || this._value) {
78
+ this._value = this.removePrefix(value);
79
+ this.onChange(this.prefix + (this._value || ''));
80
+ this.changeDetector.markForCheck();
81
+ }
82
+ }
83
+ get inputClass() {
84
+ return {
85
+ 'focused': this.uiStates.isFocused,
86
+ 'disabled': this.isDisabled,
87
+ 'valid': this.currentState[EvoControlStates.valid],
88
+ 'invalid': this.currentState[EvoControlStates.invalid],
89
+ [`size-${this.size}`]: this.size !== EvoInputSizes.normal,
90
+ [`theme-${this.theme}`]: true,
91
+ };
92
+ }
93
+ get hasAdditional() {
94
+ return !!this.tooltip || this.uiStates.hasCustomTooltip || !!this.icon;
95
+ }
96
+ set maskValue(value) {
97
+ const normalizedValue = value !== null && value !== void 0 ? value : '';
98
+ if (this.iMask) {
99
+ if (this.unmask === 'typed') {
100
+ this.iMask.typedValue = normalizedValue;
101
+ }
102
+ else if (this.unmask) {
103
+ this.iMask.unmaskedValue = normalizedValue;
104
+ }
105
+ else {
106
+ this.iMask.value = normalizedValue;
107
+ }
108
+ }
109
+ else {
110
+ this.writeToElement(normalizedValue);
111
+ }
112
+ }
113
+ get maskValue() {
114
+ if (!this.iMask) {
115
+ return this.inputElement.nativeElement.value;
116
+ }
117
+ if (this.unmask === 'typed') {
118
+ return this.iMask.typedValue;
119
+ }
120
+ if (this.unmask) {
121
+ return this.iMask.unmaskedValue;
122
+ }
123
+ return this.iMask.value;
124
+ }
125
+ get isClearable() {
126
+ return this.clearable && !this.disabled;
127
+ }
128
+ ngOnInit() {
129
+ const inputEl = this.inputElement.nativeElement;
130
+ this.zone.runOutsideAngular(() => {
131
+ if (this.mask) {
132
+ this.createMaskInstance(this.mask);
133
+ }
134
+ fromEvent(inputEl, 'input')
135
+ .pipe(debounceTime(this.inputDebounce), map((e) => {
136
+ if (this.iMask) {
137
+ return this.maskValue;
138
+ }
139
+ return e.target.value;
140
+ }), enterZone(this.zone), tap((value) => {
141
+ this.value = value;
142
+ }), takeUntil(this.destroy$)).subscribe();
143
+ });
144
+ }
145
+ ngOnDestroy() {
146
+ this.destroy$.next();
147
+ this.destroy$.complete();
148
+ if (this.iMask) {
149
+ this.destroyMask();
150
+ }
151
+ }
152
+ ngOnChanges(changes) {
153
+ if (!changes) {
154
+ return;
155
+ }
156
+ const { mask } = changes;
157
+ if (mask && !mask.firstChange) {
158
+ const newMaskOptions = mask.currentValue;
159
+ if (newMaskOptions) {
160
+ if (this.iMask) {
161
+ this.iMask.updateOptions(newMaskOptions);
162
+ }
163
+ else {
164
+ this.createMaskInstance(newMaskOptions);
165
+ }
166
+ }
167
+ else {
168
+ this.destroyMask();
169
+ }
170
+ }
171
+ }
172
+ onChange(value) {
173
+ // this is intentional
174
+ }
175
+ onTouched() {
176
+ // this is intentional
177
+ }
178
+ ngAfterViewInit() {
179
+ if (this.autoFocus) {
180
+ this.inputElement.nativeElement.focus();
181
+ }
182
+ this.checkCustomTooltip();
183
+ }
184
+ writeToElement(value) {
185
+ this._renderer.setProperty(this.inputElement.nativeElement, 'value', value);
186
+ }
187
+ writeValue(value) {
188
+ if (value === this._value) {
189
+ return;
190
+ }
191
+ this.value = value;
192
+ if (this.mask) {
193
+ this.maskValue = value;
194
+ }
195
+ else {
196
+ this.writeToElement(value);
197
+ }
198
+ }
199
+ registerOnChange(fn) {
200
+ this.onChange = fn;
201
+ }
202
+ registerOnTouched(fn) {
203
+ this.onTouched = fn;
204
+ }
205
+ setDisabledState(state) {
206
+ this.disabled = state;
207
+ }
208
+ onFocus() {
209
+ if (!this.uiStates.isFocused) {
210
+ this.uiStates.isFocused = true;
211
+ }
212
+ }
213
+ onBlur() {
214
+ this.uiStates.isFocused = false;
215
+ this.onTouched();
216
+ this.blur.emit();
217
+ }
218
+ onTooltipClick(event) {
219
+ event.preventDefault();
220
+ event.stopPropagation();
221
+ }
222
+ onClear() {
223
+ this.writeValue('');
224
+ }
225
+ hideTooltip() {
226
+ this.tooltipVisibilityTimeout = true;
227
+ setTimeout(() => {
228
+ if (this.tooltipVisibilityTimeout) {
229
+ this.uiStates.isTooltipVisible = false;
230
+ }
231
+ }, 25);
232
+ }
233
+ showTooltip() {
234
+ this.uiStates.isTooltipVisible = true;
235
+ this.tooltipVisibilityTimeout = false;
236
+ }
237
+ // Composition handling is taken from:
238
+ // https://github.com/angular/angular/blob/11.0.3/packages/forms/src/directives/default_value_accessor.ts#L152
239
+ _compositionStart() {
240
+ this._composing = true;
241
+ }
242
+ _compositionEnd(value) {
243
+ this._composing = false;
244
+ if (this._compositionMode) {
245
+ this.value = value;
246
+ }
247
+ }
248
+ removePrefix(value) {
249
+ if (typeof value === 'string' &&
250
+ value.indexOf(this.prefix) === 0) {
251
+ return value.replace(this.prefix, '');
252
+ }
253
+ return value;
254
+ }
255
+ createMaskInstance(opts) {
256
+ this.iMask = new IMask.InputMask(this.inputElement.nativeElement, opts);
257
+ }
258
+ destroyMask() {
259
+ var _a;
260
+ (_a = this.iMask) === null || _a === void 0 ? void 0 : _a.destroy();
261
+ this.iMask = null;
262
+ }
263
+ checkCustomTooltip() {
264
+ this.uiStates.hasCustomTooltip = this.tooltipElement &&
265
+ this.tooltipElement.nativeElement &&
266
+ this.tooltipElement.nativeElement.children.length > 0;
267
+ this.customTooltipChecked = true;
268
+ this.changeDetector.detectChanges();
269
+ }
270
+ validate() {
271
+ if (this.maskValidation && this.mask && !this.iMask.masked.isComplete) {
272
+ return { mask: true };
273
+ }
274
+ return null;
275
+ }
276
+ }
277
+ EvoInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EvoInputComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: COMPOSITION_BUFFER_MODE, optional: true }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
278
+ EvoInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: EvoInputComponent, selector: "evo-input", inputs: { autoFocus: "autoFocus", dataCp: ["data-cp", "dataCp"], icon: "icon", mask: "mask", placeholder: "placeholder", tooltip: "tooltip", type: "type", disabled: "disabled", loading: "loading", prefix: "prefix", autocomplete: "autocomplete", inputDebounce: "inputDebounce", unmask: "unmask", clearable: "clearable", maskValidation: "maskValidation", setValue: ["value", "setValue"], setSize: ["size", "setSize"], setTheme: ["theme", "setTheme"] }, outputs: { blur: "blur" }, providers: [
279
+ {
280
+ provide: NG_VALUE_ACCESSOR,
281
+ useExisting: forwardRef(() => EvoInputComponent),
282
+ multi: true,
283
+ },
284
+ {
285
+ provide: NG_VALIDATORS,
286
+ useExisting: forwardRef(() => EvoInputComponent),
287
+ multi: true,
288
+ },
289
+ ], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "tooltipElement", first: true, predicate: ["tooltipContainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label class=\"evo-input\" [evoUiClass]=\"inputClass\">\n <div class=\"evo-input__prefix-content\">\n <ng-content select=\"[evoInputPrefixContent]\"></ng-content>\n </div>\n <div class=\"evo-input__prefix-icon\">\n <ng-content select=\"[evoInputIcon]\"></ng-content>\n </div>\n <span\n class=\"evo-input__prefix\" *ngIf=\"prefix\"\n [evoUiClass]=\"{focused: !isDisabled && !!value || uiStates.isFocused }\"\n >{{prefix}}</span>\n <input\n #input\n class=\"evo-input__field\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (compositionstart)=\"_compositionStart()\"\n (compositionend)=\"_compositionEnd($event.target.value)\"\n type=\"{{ type }}\"\n [attr.autocomplete]=\"autocomplete\"\n placeholder=\"{{ placeholder }}\"\n [attr.data-cp]=\"dataCp\"\n [disabled]=\"isDisabled\"\n >\n <div *ngIf=\"loading; else sideBlock\" class=\"evo-input__loading-spinner\"></div>\n <ng-template #sideBlock>\n <div\n *ngIf=\"isClearable\"\n class=\"evo-input__clearable\"\n (click)=\"onClear()\">\n <evo-icon shape=\"decline\" class=\"evo-input__icon-clear\"></evo-icon>\n </div>\n <div class=\"evo-input__additional\" *ngIf=\"hasAdditional\">\n <evo-icon\n shape=\"help\" class=\"evo-input__tooltip\"\n *ngIf=\"tooltip || uiStates.hasCustomTooltip\"\n (mouseenter)=\"showTooltip()\"\n (mouseleave)=\"hideTooltip()\"\n (click)=\"onTooltipClick($event)\"\n ></evo-icon>\n <div class=\"evo-input__icon\" *ngIf=\"icon\">\n <img [attr.src]=\"icon\">\n </div>\n </div>\n </ng-template>\n <div\n *ngIf=\"!customTooltipChecked || uiStates.isTooltipVisible\"\n [hidden]=\"!customTooltipChecked\"\n (click)=\"onTooltipClick($event)\"\n (mouseenter)=\"showTooltip()\"\n (mouseleave)=\"hideTooltip()\"\n #tooltipContainer\n [ngClass]=\"{'evo-input__tooltip-container': tooltip}\"\n >\n {{ tooltip }}\n <ng-content select=\"[tooltip]\"></ng-content>\n </div>\n</label>\n<evo-control-error\n *ngIf=\"showErrors\"\n [errors]=\"control.errors\"\n [errorsMessages]=\"errorsMessages\"\n></evo-control-error>\n", styles: ["@keyframes evo-fx-blink{50%{transform:scale(1);opacity:1}to{opacity:0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes gradient{0%{background-position:0 50%}50%{background-position:50vw 50%}to{background-position:100vw 50%}}:host{display:inline-block;--evo-input-prefix-content-margin: 0 12px}.evo-input{position:relative;cursor:text;--evo-input-height: 48px;--evo-input-border-radius: 4px;--evo-input-font-size: 16px;display:flex;align-items:center;height:var(--evo-input-height);color:#212121;font-weight:normal;font-size:var(--evo-input-font-size);font-family:\"Noto Sans\",\"Open Sans\",\"Helvetica Neue\",Arial,sans-serif;white-space:nowrap;background-color:#fff;border:1px solid #C6C6C6;border-radius:var(--evo-input-border-radius);outline:none;transition:color .3s,box-shadow .3s,background .3s,border .3s}.evo-input_focused{border:solid 1px #74706F}.evo-input_disabled{color:#b0b0b0!important;background-color:#f9fafb!important;border:1px solid #E3E3E3!important;cursor:default;pointer-events:none}.evo-input_invalid{border-color:#ff1817!important}.evo-input_theme-rounded:not(.evo-input_size-small){border-radius:256px}.evo-input_theme-rounded:not(.evo-input_size-small) .evo-input__field{border-radius:256px}.evo-input_size-small{height:32px}.evo-input_size-small .evo-input__field{padding:0 8px}.evo-input_size-small .evo-input__tooltip,.evo-input_size-small .evo-input__loading-spinner{flex:0 0 16px;width:16px;height:16px;margin:0 10px}.evo-input_size-small .evo-input__icon{margin-right:10px}.evo-input_size-small .evo-input__icon img{max-height:16px}.evo-input_size-small .evo-input__tooltip-container{top:100%}.evo-input_size-small .evo-input__tooltip-container:before{left:calc(100% - 28px)}@media (min-width: 1200px){.evo-input_size-small .evo-input__tooltip-container{top:calc(100% + 4px)}.evo-input_size-small .evo-input__tooltip-container:before{left:calc(50% - 6px)}}.evo-input_size-small .evo-input__prefix-icon{width:16px;height:16px}.evo-input_size-small .evo-input__prefix-icon:empty{display:none}.evo-input_size-small .evo-input__icon-clear{width:16px;height:16px}.evo-input__prefix-icon{display:flex;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;margin-left:12px;fill:#91b1b8}.evo-input__prefix-icon:empty{display:none}.evo-input__prefix-content{display:inline-flex;flex-shrink:0;justify-content:center;align-items:center;margin:var(--evo-input-prefix-content-margin)}.evo-input__prefix-content:empty{display:none}.evo-input__prefix-content:not(:empty)~.evo-input__field{padding-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.evo-input__field{flex-grow:1;width:100%;height:100%;margin:0;padding:0 8px 0 16px;color:inherit;font-weight:inherit;font-size:inherit;border:none;border-radius:4px;outline:none}.evo-input__field::-webkit-input-placeholder{color:#9b9b9b}.evo-input__field::-moz-placeholder{color:#9b9b9b;opacity:1}.evo-input__field:-ms-input-placeholder{color:#9b9b9b}.evo-input__field:disabled{color:#b0b0b0;background-color:#f9fafb!important}.evo-input__field:not(:last-child){padding-right:0}.evo-input__prefix{padding-left:20px;font-size:16px;transition:color .2s}.evo-input__prefix_focused{color:#000}.evo-input__prefix:not(:empty)~.evo-input__field{padding-left:0}.evo-input__tooltip{width:24px;height:24px;margin:0 10px;cursor:pointer;-webkit-user-select:none;user-select:none;fill:#91b1b8}.evo-input__icon-clear{width:24px;height:24px;margin:0 10px;cursor:pointer;-webkit-user-select:none;user-select:none;fill:#91b1b8}.evo-input__icon{margin:0 20px 0 10px}.evo-input__icon img{display:block;width:100%;max-width:60px;height:auto;max-height:22px}.evo-input__tooltip-container{position:absolute;top:calc(100% - 2px);left:0;z-index:1;display:flex;width:100%;padding:10px 10px 10px 20px;color:#212121;line-height:normal;white-space:normal;background-color:#fff8e6;border-radius:4px;box-shadow:0 4px 12px #0003;cursor:default}.evo-input__tooltip-container[hidden]{display:none!important}.evo-input__tooltip-container:before{position:absolute;top:-20px;left:calc(100% - 34px);border:10px solid transparent;border-bottom:10px solid #FFF8E6;pointer-events:none;content:\"\"}@media (min-width: 1200px){.evo-input__tooltip-container{left:calc(50% - 22px)}.evo-input__tooltip-container:before{left:calc(50% - 12px)}}.evo-input__clearable{display:flex;justify-content:center;align-items:center}.evo-input__clearable+.evo-input__additional{margin-left:-10px}.evo-input__additional{display:flex;justify-content:center;align-items:center}.evo-input__additional:not(:last-child) .evo-input__icon{margin-right:10px}.evo-input__additional+.evo-input__loading-spinner{margin-left:0}.evo-input__loading-spinner{margin:0 20px;flex:0 0 16px;width:16px;height:16px;border:2px solid #C6C6C6;border-top-color:#21c68b;border-radius:50%;animation:spin .8s linear infinite}\n"], components: [{ type: i1.EvoIconComponent, selector: "evo-icon", inputs: ["shape", "svgWidth", "svgHeight", "svgViewBox"] }, { type: i2.EvoControlErrorComponent, selector: "evo-control-error", inputs: ["errors", "errorsMessages", "showCount"] }], directives: [{ type: i3.EvoUiClassDirective, selector: "[evoUiClass]", inputs: ["class", "evoUiClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
290
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: EvoInputComponent, decorators: [{
291
+ type: Component,
292
+ args: [{
293
+ selector: 'evo-input',
294
+ templateUrl: './evo-input.component.html',
295
+ styleUrls: ['./evo-input.component.scss'],
296
+ providers: [
297
+ {
298
+ provide: NG_VALUE_ACCESSOR,
299
+ useExisting: forwardRef(() => EvoInputComponent),
300
+ multi: true,
301
+ },
302
+ {
303
+ provide: NG_VALIDATORS,
304
+ useExisting: forwardRef(() => EvoInputComponent),
305
+ multi: true,
306
+ },
307
+ ],
308
+ }]
309
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
310
+ type: Optional
311
+ }, {
312
+ type: Inject,
313
+ args: [COMPOSITION_BUFFER_MODE]
314
+ }] }, { type: i0.Injector }]; }, propDecorators: { autoFocus: [{
315
+ type: Input
316
+ }], dataCp: [{
317
+ type: Input,
318
+ args: ['data-cp']
319
+ }], icon: [{
320
+ type: Input
321
+ }], mask: [{
322
+ type: Input
323
+ }], placeholder: [{
324
+ type: Input
325
+ }], tooltip: [{
326
+ type: Input
327
+ }], type: [{
328
+ type: Input
329
+ }], disabled: [{
330
+ type: Input
331
+ }], loading: [{
332
+ type: Input
333
+ }], prefix: [{
334
+ type: Input
335
+ }], autocomplete: [{
336
+ type: Input
337
+ }], inputDebounce: [{
338
+ type: Input
339
+ }], unmask: [{
340
+ type: Input
341
+ }], clearable: [{
342
+ type: Input
343
+ }], maskValidation: [{
344
+ type: Input
345
+ }], blur: [{
346
+ type: Output
347
+ }], inputElement: [{
348
+ type: ViewChild,
349
+ args: ['input', { static: true }]
350
+ }], tooltipElement: [{
351
+ type: ViewChild,
352
+ args: ['tooltipContainer', { static: true }]
353
+ }], setValue: [{
354
+ type: Input,
355
+ args: ['value']
356
+ }], setSize: [{
357
+ type: Input,
358
+ args: ['size']
359
+ }], setTheme: [{
360
+ type: Input,
361
+ args: ['theme']
362
+ }] } });
363
363
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZvLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V2by11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2V2by1pbnB1dC9ldm8taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXZvLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZXZvLWlucHV0L2V2by1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUVOLEtBQUssRUFLTCxRQUFRLEVBQ1IsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQXdCLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzVILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOzs7Ozs7QUFFL0IsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUNyQixnQ0FBZSxDQUFBO0lBQ2Ysa0NBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUhXLGFBQWEsS0FBYixhQUFhLFFBR3hCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdB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O3NCQUEzQixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE5nWm9uZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENPTVBPU0lUSU9OX0JVRkZFUl9NT0RFLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEV2b0NvbnRyb2xTdGF0ZXMgfSBmcm9tICcuLi8uLi9jb21tb24vZXZvLWNvbnRyb2wtc3RhdGUtbWFuYWdlci9ldm8tY29udHJvbC1zdGF0ZXMuZW51bSc7XG5pbXBvcnQgeyBFdm9CYXNlQ29udHJvbCB9IGZyb20gJy4uLy4uL2NvbW1vbi9ldm8tYmFzZS1jb250cm9sJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZW50ZXJab25lIH0gZnJvbSAnLi4vLi4vb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIElNYXNrIGZyb20gJ2ltYXNrJztcblxuZXhwb3J0IGVudW0gRXZvSW5wdXRTaXplcyB7XG4gICAgc21hbGwgPSAnc21hbGwnLFxuICAgIG5vcm1hbCA9ICdub3JtYWwnLFxufVxuXG5leHBvcnQgZW51bSBFdm9JbnB1dFRoZW1lIHtcbiAgICBkZWZhdWx0ID0gJ2RlZmF1bHQnLFxuICAgIHJvdW5kZWQgPSAncm91bmRlZCcsXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXZvLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXZvLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ldm8taW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFdm9JbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEV2b0lucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRXZvSW5wdXRDb21wb25lbnRcbiAgICBleHRlbmRzIEV2b0Jhc2VDb250cm9sXG4gICAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgVmFsaWRhdG9yIHtcblxuICAgIEBJbnB1dCgpIGF1dG9Gb2N1czogYm9vbGVhbjtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBASW5wdXQoJ2RhdGEtY3AnKSBkYXRhQ3A6IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgbWFzazogYW55O1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdG9vbHRpcDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHR5cGUgPSAndGV4dCc7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHJlZml4ID0gJyc7XG4gICAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW5wdXREZWJvdW5jZSA9IDUwO1xuICAgIEBJbnB1dCgpIHVubWFzazogYm9vbGVhbiB8ICd0eXBlZCcgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjbGVhcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBtYXNrVmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHtzdGF0aWM6IHRydWV9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgndG9vbHRpcENvbnRhaW5lcicsIHtzdGF0aWM6IHRydWV9KSB0b29sdGlwRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIHNpemU6IEV2b0lucHV0U2l6ZXMgPSBFdm9JbnB1dFNpemVzLm5vcm1hbDtcbiAgICB0aGVtZTogRXZvSW5wdXRUaGVtZSA9IEV2b0lucHV0VGhlbWUuZGVmYXVsdDtcbiAgICBfdmFsdWU6IHN0cmluZztcbiAgICBjdXN0b21Ub29sdGlwQ2hlY2tlZCA9IGZhbHNlO1xuICAgIHVpU3RhdGVzID0ge1xuICAgICAgICBoYXNDdXN0b21Ub29sdGlwOiBmYWxzZSxcbiAgICAgICAgaXNUb29sdGlwVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIGlzRm9jdXNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIHByaXZhdGUgaU1hc2s6IElNYXNrLklucHV0TWFzazxhbnk+O1xuXG4gICAgcHJpdmF0ZSB0b29sdGlwVmlzaWJpbGl0eVRpbWVvdXQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaXMgY3JlYXRpbmcgYSBjb21wb3NpdGlvbiBzdHJpbmcgKElNRSBldmVudHMpLiAqL1xuICAgIHByaXZhdGUgX2NvbXBvc2luZyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChDT01QT1NJVElPTl9CVUZGRVJfTU9ERSkgcHJpdmF0ZSBfY29tcG9zaXRpb25Nb2RlOiBib29sZWFuLFxuICAgICAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgQElucHV0KCd2YWx1ZScpIHNldCBzZXRWYWx1ZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgnc2l6ZScpIHNldCBzZXRTaXplKHNpemU6IEV2b0lucHV0U2l6ZXMgfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKEV2b0lucHV0U2l6ZXNbc2l6ZV0pIHtcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IEV2b0lucHV0U2l6ZXNbc2l6ZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoJ3RoZW1lJykgc2V0IHNldFRoZW1lKHRoZW1lOiBzdHJpbmcgfCBFdm9JbnB1dFRoZW1lKSB7XG4gICAgICAgIGlmIChFdm9JbnB1dFRoZW1lW3RoZW1lXSkge1xuICAgICAgICAgICAgdGhpcy50aGVtZSA9IEV2b0lucHV0VGhlbWVbdGhlbWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlzRGlzYWJsZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMucmVtb3ZlUHJlZml4KHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5wcmVmaXggKyAodGhpcy5fdmFsdWUgfHwgJycpKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaW5wdXRDbGFzcygpOiB7IFtjc3NDbGFzczogc3RyaW5nXTogYm9vbGVhbiB9IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdmb2N1c2VkJzogdGhpcy51aVN0YXRlcy5pc0ZvY3VzZWQsXG4gICAgICAgICAgICAnZGlzYWJsZWQnOiB0aGlzLmlzRGlzYWJsZWQsXG4gICAgICAgICAgICAndmFsaWQnOiB0aGlzLmN1cnJlbnRTdGF0ZVtFdm9Db250cm9sU3RhdGVzLnZhbGlkXSxcbiAgICAgICAgICAgICdpbnZhbGlkJzogdGhpcy5jdXJyZW50U3RhdGVbRXZvQ29udHJvbFN0YXRlcy5pbnZhbGlkXSxcbiAgICAgICAgICAgIFtgc2l6ZS0ke3RoaXMuc2l6ZX1gXTogdGhpcy5zaXplICE9PSBFdm9JbnB1dFNpemVzLm5vcm1hbCxcbiAgICAgICAgICAgIFtgdGhlbWUtJHt0aGlzLnRoZW1lfWBdOiB0cnVlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdldCBoYXNBZGRpdGlvbmFsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnRvb2x0aXAgfHwgdGhpcy51aVN0YXRlcy5oYXNDdXN0b21Ub29sdGlwIHx8ICEhdGhpcy5pY29uO1xuICAgIH1cblxuICAgIHNldCBtYXNrVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB2YWx1ZSA/PyAnJztcbiAgICAgICAgaWYgKHRoaXMuaU1hc2spIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnVubWFzayA9PT0gJ3R5cGVkJykge1xuICAgICAgICAgICAgICAgIHRoaXMuaU1hc2sudHlwZWRWYWx1ZSA9IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy51bm1hc2spIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlNYXNrLnVubWFza2VkVmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaU1hc2sudmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVG9FbGVtZW50KG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgbWFza1ZhbHVlKCk6IGFueSB7XG4gICAgICAgIGlmICghdGhpcy5pTWFzaykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudW5tYXNrID09PSAndHlwZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pTWFzay50eXBlZFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVubWFzaykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaU1hc2sudW5tYXNrZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5pTWFzay52YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaXNDbGVhcmFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsZWFyYWJsZSAmJiAhdGhpcy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcblxuICAgICAgICBjb25zdCBpbnB1dEVsID0gdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tYXNrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVNYXNrSW5zdGFuY2UodGhpcy5tYXNrKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnJvbUV2ZW50KGlucHV0RWwsICdpbnB1dCcpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmlucHV0RGVib3VuY2UpLFxuICAgICAgICAgICAgICAgICAgICBtYXAoKGU6IElucHV0RXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlNYXNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFza1ZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIGVudGVyWm9uZSh0aGlzLnpvbmUpLFxuICAgICAgICAgICAgICAgICAgICB0YXAoKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICApLnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKHRoaXMuaU1hc2spIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveU1hc2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKCFjaGFuZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bWFza30gPSBjaGFuZ2VzO1xuXG4gICAgICAgIGlmIChtYXNrICYmICFtYXNrLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdNYXNrT3B0aW9ucyA9IG1hc2suY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKG5ld01hc2tPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaU1hc2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pTWFzay51cGRhdGVPcHRpb25zKG5ld01hc2tPcHRpb25zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU1hc2tJbnN0YW5jZShuZXdNYXNrT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lNYXNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNoYW5nZSh2YWx1ZSkge1xuICAgICAgICAvLyB0aGlzIGlzIGludGVudGlvbmFsXG4gICAgfVxuXG4gICAgb25Ub3VjaGVkKCkge1xuICAgICAgICAvLyB0aGlzIGlzIGludGVudGlvbmFsXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoZWNrQ3VzdG9tVG9vbHRpcCgpO1xuICAgIH1cblxuICAgIHdyaXRlVG9FbGVtZW50KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUgPT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgICAgICAgdGhpcy5tYXNrVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVUb0VsZW1lbnQodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gc3RhdGU7XG4gICAgfVxuXG4gICAgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnVpU3RhdGVzLmlzRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy51aVN0YXRlcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVpU3RhdGVzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmJsdXIuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uVG9vbHRpcENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgb25DbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKCcnKTtcbiAgICB9XG5cbiAgICBoaWRlVG9vbHRpcCgpIHtcbiAgICAgICAgdGhpcy50b29sdGlwVmlzaWJpbGl0eVRpbWVvdXQgPSB0cnVlO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMudG9vbHRpcFZpc2liaWxpdHlUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy51aVN0YXRlcy5pc1Rvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDI1KTtcbiAgICB9XG5cbiAgICBzaG93VG9vbHRpcCgpIHtcbiAgICAgICAgdGhpcy51aVN0YXRlcy5pc1Rvb2x0aXBWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50b29sdGlwVmlzaWJpbGl0eVRpbWVvdXQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb21wb3NpdGlvbiBoYW5kbGluZyBpcyB0YWtlbiBmcm9tOlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi8xMS4wLjMvcGFja2FnZXMvZm9ybXMvc3JjL2RpcmVjdGl2ZXMvZGVmYXVsdF92YWx1ZV9hY2Nlc3Nvci50cyNMMTUyXG4gICAgX2NvbXBvc2l0aW9uU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbXBvc2luZyA9IHRydWU7XG4gICAgfVxuXG4gICAgX2NvbXBvc2l0aW9uRW5kKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tcG9zaW5nID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLl9jb21wb3NpdGlvbk1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlUHJlZml4KHZhbHVlOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICB2YWx1ZS5pbmRleE9mKHRoaXMucHJlZml4KSA9PT0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHRoaXMucHJlZml4LCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTWFza0luc3RhbmNlKG9wdHM6IGFueSkge1xuICAgICAgICB0aGlzLmlNYXNrID0gbmV3IElNYXNrLklucHV0TWFzayhcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBvcHRzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95TWFzaygpIHtcbiAgICAgICAgdGhpcy5pTWFzaz8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmlNYXNrID0gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrQ3VzdG9tVG9vbHRpcCgpIHtcbiAgICAgICAgdGhpcy51aVN0YXRlcy5oYXNDdXN0b21Ub29sdGlwID0gdGhpcy50b29sdGlwRWxlbWVudCAmJlxuICAgICAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMDtcbiAgICAgICAgdGhpcy5jdXN0b21Ub29sdGlwQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCkge1xuICAgICAgICBpZiAodGhpcy5tYXNrVmFsaWRhdGlvbiAmJiB0aGlzLm1hc2sgJiYgIXRoaXMuaU1hc2subWFza2VkLmlzQ29tcGxldGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IG1hc2s6IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iLCI8bGFiZWwgY2xhc3M9XCJldm8taW5wdXRcIiBbZXZvVWlDbGFzc109XCJpbnB1dENsYXNzXCI+XG4gICAgPGRpdiBjbGFzcz1cImV2by1pbnB1dF9fcHJlZml4LWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2V2b0lucHV0UHJlZml4Q29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImV2by1pbnB1dF9fcHJlZml4LWljb25cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2V2b0lucHV0SWNvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJldm8taW5wdXRfX3ByZWZpeFwiICpuZ0lmPVwicHJlZml4XCJcbiAgICAgICAgW2V2b1VpQ2xhc3NdPVwie2ZvY3VzZWQ6ICFpc0Rpc2FibGVkICYmICEhdmFsdWUgfHwgdWlTdGF0ZXMuaXNGb2N1c2VkIH1cIlxuICAgID57e3ByZWZpeH19PC9zcGFuPlxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgY2xhc3M9XCJldm8taW5wdXRfX2ZpZWxkXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgKGNvbXBvc2l0aW9uc3RhcnQpPVwiX2NvbXBvc2l0aW9uU3RhcnQoKVwiXG4gICAgICAgIChjb21wb3NpdGlvbmVuZCk9XCJfY29tcG9zaXRpb25FbmQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICB0eXBlPVwie3sgdHlwZSB9fVwiXG4gICAgICAgIFthdHRyLmF1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgW2F0dHIuZGF0YS1jcF09XCJkYXRhQ3BcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgPlxuICAgIDxkaXYgKm5nSWY9XCJsb2FkaW5nOyBlbHNlIHNpZGVCbG9ja1wiIGNsYXNzPVwiZXZvLWlucHV0X19sb2FkaW5nLXNwaW5uZXJcIj48L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI3NpZGVCbG9jaz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJpc0NsZWFyYWJsZVwiXG4gICAgICAgICAgICBjbGFzcz1cImV2by1pbnB1dF9fY2xlYXJhYmxlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsZWFyKClcIj5cbiAgICAgICAgICAgIDxldm8taWNvbiBzaGFwZT1cImRlY2xpbmVcIiBjbGFzcz1cImV2by1pbnB1dF9faWNvbi1jbGVhclwiPjwvZXZvLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXZvLWlucHV0X19hZGRpdGlvbmFsXCIgKm5nSWY9XCJoYXNBZGRpdGlvbmFsXCI+XG4gICAgICAgICAgICA8ZXZvLWljb25cbiAgICAgICAgICAgICAgICBzaGFwZT1cImhlbHBcIiBjbGFzcz1cImV2by1pbnB1dF9fdG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0b29sdGlwIHx8IHVpU3RhdGVzLmhhc0N1c3RvbVRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInNob3dUb29sdGlwKClcIlxuICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cImhpZGVUb29sdGlwKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRvb2x0aXBDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgID48L2V2by1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2by1pbnB1dF9faWNvblwiICpuZ0lmPVwiaWNvblwiPlxuICAgICAgICAgICAgICAgIDxpbWcgW2F0dHIuc3JjXT1cImljb25cIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhY3VzdG9tVG9vbHRpcENoZWNrZWQgfHwgdWlTdGF0ZXMuaXNUb29sdGlwVmlzaWJsZVwiXG4gICAgICAgIFtoaWRkZW5dPVwiIWN1c3RvbVRvb2x0aXBDaGVja2VkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uVG9vbHRpcENsaWNrKCRldmVudClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJzaG93VG9vbHRpcCgpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgICN0b29sdGlwQ29udGFpbmVyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnZXZvLWlucHV0X190b29sdGlwLWNvbnRhaW5lcic6IHRvb2x0aXB9XCJcbiAgICA+XG4gICAgICAgIHt7IHRvb2x0aXAgfX1cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Rvb2x0aXBdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9sYWJlbD5cbjxldm8tY29udHJvbC1lcnJvclxuICAgICpuZ0lmPVwic2hvd0Vycm9yc1wiXG4gICAgW2Vycm9yc109XCJjb250cm9sLmVycm9yc1wiXG4gICAgW2Vycm9yc01lc3NhZ2VzXT1cImVycm9yc01lc3NhZ2VzXCJcbj48L2V2by1jb250cm9sLWVycm9yPlxuIl19