@evotor-dev/ui-kit 7.2.8 → 7.2.9

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 (633) hide show
  1. package/README.md +71 -71
  2. package/esm2020/evotor-dev-ui-kit.mjs +4 -4
  3. package/esm2020/icons/category/evotor-dev-ui-kit-icons-category.mjs +4 -4
  4. package/esm2020/icons/category/index.mjs +61 -61
  5. package/esm2020/icons/emotions/evotor-dev-ui-kit-icons-emotions.mjs +4 -4
  6. package/esm2020/icons/emotions/index.mjs +17 -17
  7. package/esm2020/icons/evotor-dev-ui-kit-icons.mjs +4 -4
  8. package/esm2020/icons/header/evotor-dev-ui-kit-icons-header.mjs +4 -4
  9. package/esm2020/icons/header/index.mjs +27 -27
  10. package/esm2020/icons/index.mjs +8 -8
  11. package/esm2020/icons/info/evotor-dev-ui-kit-icons-info.mjs +4 -4
  12. package/esm2020/icons/info/index.mjs +39 -39
  13. package/esm2020/icons/navigation/evotor-dev-ui-kit-icons-navigation.mjs +4 -4
  14. package/esm2020/icons/navigation/index.mjs +56 -56
  15. package/esm2020/icons/side-menu/evotor-dev-ui-kit-icons-side-menu.mjs +4 -4
  16. package/esm2020/icons/side-menu/index.mjs +63 -63
  17. package/esm2020/icons/system/evotor-dev-ui-kit-icons-system.mjs +4 -4
  18. package/esm2020/icons/system/index.mjs +372 -372
  19. package/esm2020/lib/common/Serializable.mjs +5 -5
  20. package/esm2020/lib/common/animations/expand.animation.mjs +27 -27
  21. package/esm2020/lib/common/animations/index.mjs +3 -3
  22. package/esm2020/lib/common/animations/sidebar.animation.mjs +9 -9
  23. package/esm2020/lib/common/animations/skip-initial-render.animation.mjs +2 -2
  24. package/esm2020/lib/common/collection/evo-collection-fabric.mjs +9 -9
  25. package/esm2020/lib/common/collection/evo-collection.mjs +6 -6
  26. package/esm2020/lib/common/collection/index.mjs +2 -2
  27. package/esm2020/lib/common/constants/css-breakpoints.mjs +8 -8
  28. package/esm2020/lib/common/constants/view-breakpoint-streams.mjs +23 -23
  29. package/esm2020/lib/common/evo-base-control.mjs +45 -45
  30. package/esm2020/lib/common/evo-control-state-manager/evo-control-state-manager.mjs +12 -12
  31. package/esm2020/lib/common/evo-control-state-manager/evo-control-state.interface.mjs +1 -1
  32. package/esm2020/lib/common/evo-control-state-manager/evo-control-states.enum.mjs +5 -5
  33. package/esm2020/lib/common/form-helper/form-helper.mjs +30 -30
  34. package/esm2020/lib/common/types/evo-color.mjs +1 -1
  35. package/esm2020/lib/common/types/evo-size.mjs +1 -1
  36. package/esm2020/lib/common/types/index.mjs +2 -2
  37. package/esm2020/lib/components/evo-accordion/evo-accordion-content/evo-accordion-content.component.mjs +30 -30
  38. package/esm2020/lib/components/evo-accordion/evo-accordion-panel/evo-accordion-panel.component.mjs +18 -18
  39. package/esm2020/lib/components/evo-accordion/evo-accordion-title/evo-accordion-title.component.mjs +56 -56
  40. package/esm2020/lib/components/evo-accordion/evo-accordion.component.mjs +16 -16
  41. package/esm2020/lib/components/evo-accordion/evo-accordion.module.mjs +66 -66
  42. package/esm2020/lib/components/evo-accordion/index.mjs +1 -1
  43. package/esm2020/lib/components/evo-accordion/public-api.mjs +5 -5
  44. package/esm2020/lib/components/evo-alert/evo-alert.component.mjs +78 -78
  45. package/esm2020/lib/components/evo-alert/evo-alert.module.mjs +28 -28
  46. package/esm2020/lib/components/evo-alert/index.mjs +1 -1
  47. package/esm2020/lib/components/evo-alert/public-api.mjs +2 -2
  48. package/esm2020/lib/components/evo-autocomplete/components/evo-autocomplete.component.mjs +358 -358
  49. package/esm2020/lib/components/evo-autocomplete/components/templates/evo-autocomplete-default-option.component.mjs +42 -42
  50. package/esm2020/lib/components/evo-autocomplete/evo-autocomplete.module.mjs +57 -57
  51. package/esm2020/lib/components/evo-autocomplete/helpers/switch-query-to-list.mjs +6 -6
  52. package/esm2020/lib/components/evo-autocomplete/index.mjs +1 -1
  53. package/esm2020/lib/components/evo-autocomplete/models/DaDataParty.mjs +27 -27
  54. package/esm2020/lib/components/evo-autocomplete/models/dadata.model.mjs +47 -47
  55. package/esm2020/lib/components/evo-autocomplete/public-api.mjs +7 -7
  56. package/esm2020/lib/components/evo-autocomplete/types/evo-autocomplete-size.mjs +1 -1
  57. package/esm2020/lib/components/evo-badge/evo-badge.component.mjs +39 -39
  58. package/esm2020/lib/components/evo-badge/evo-badge.module.mjs +27 -27
  59. package/esm2020/lib/components/evo-badge/index.mjs +2 -2
  60. package/esm2020/lib/components/evo-badge/public-api.mjs +2 -2
  61. package/esm2020/lib/components/evo-badge/types/evo-badge-color.mjs +1 -1
  62. package/esm2020/lib/components/evo-badge/types/evo-badge-size.mjs +1 -1
  63. package/esm2020/lib/components/evo-badge/types/index.mjs +2 -2
  64. package/esm2020/lib/components/evo-banner/evo-banner.component.mjs +109 -109
  65. package/esm2020/lib/components/evo-banner/evo-banner.module.mjs +23 -23
  66. package/esm2020/lib/components/evo-banner/index.mjs +1 -1
  67. package/esm2020/lib/components/evo-banner/public-api.mjs +2 -2
  68. package/esm2020/lib/components/evo-button/components/evo-button/evo-button.component.mjs +86 -86
  69. package/esm2020/lib/components/evo-button/components/evo-button-old/evo-button-old.component.mjs +91 -91
  70. package/esm2020/lib/components/evo-button/constants/evo-button-themes-map.mjs +31 -31
  71. package/esm2020/lib/components/evo-button/evo-button.module.mjs +21 -21
  72. package/esm2020/lib/components/evo-button/index.mjs +1 -1
  73. package/esm2020/lib/components/evo-button/public-api.mjs +5 -5
  74. package/esm2020/lib/components/evo-button/types/evo-button-color.mjs +2 -2
  75. package/esm2020/lib/components/evo-button/types/evo-button-shape.mjs +2 -2
  76. package/esm2020/lib/components/evo-button/types/evo-button-size.mjs +2 -2
  77. package/esm2020/lib/components/evo-button/types/evo-button-theme-params.mjs +2 -2
  78. package/esm2020/lib/components/evo-button/types/evo-button-theme.mjs +2 -2
  79. package/esm2020/lib/components/evo-button/types/index.mjs +6 -6
  80. package/esm2020/lib/components/evo-checkbox/evo-checkbox.component.mjs +86 -86
  81. package/esm2020/lib/components/evo-checkbox/evo-checkbox.module.mjs +33 -33
  82. package/esm2020/lib/components/evo-checkbox/index.mjs +1 -1
  83. package/esm2020/lib/components/evo-checkbox/public-api.mjs +2 -2
  84. package/esm2020/lib/components/evo-chip/evo-chip.component.mjs +129 -129
  85. package/esm2020/lib/components/evo-chip/evo-chip.module.mjs +45 -45
  86. package/esm2020/lib/components/evo-chip/index.mjs +1 -1
  87. package/esm2020/lib/components/evo-chip/public-api.mjs +2 -2
  88. package/esm2020/lib/components/evo-control-error/evo-control-error.component.mjs +40 -40
  89. package/esm2020/lib/components/evo-control-error/evo-control-error.module.mjs +29 -29
  90. package/esm2020/lib/components/evo-control-error/index.mjs +1 -1
  91. package/esm2020/lib/components/evo-control-error/public-api.mjs +2 -2
  92. package/esm2020/lib/components/evo-control-label/evo-control-label.component.mjs +18 -18
  93. package/esm2020/lib/components/evo-control-label/evo-control-label.module.mjs +21 -21
  94. package/esm2020/lib/components/evo-control-label/index.mjs +1 -1
  95. package/esm2020/lib/components/evo-control-label/public-api.mjs +2 -2
  96. package/esm2020/lib/components/evo-counter/evo-counter.component.mjs +37 -37
  97. package/esm2020/lib/components/evo-counter/evo-counter.module.mjs +29 -29
  98. package/esm2020/lib/components/evo-counter/index.mjs +1 -1
  99. package/esm2020/lib/components/evo-counter/public-api.mjs +2 -2
  100. package/esm2020/lib/components/evo-datepicker/evo-datepicker.component.mjs +554 -554
  101. package/esm2020/lib/components/evo-datepicker/evo-datepicker.module.mjs +33 -33
  102. package/esm2020/lib/components/evo-datepicker/flatpickr-options.interface.mjs +1 -1
  103. package/esm2020/lib/components/evo-datepicker/index.mjs +1 -1
  104. package/esm2020/lib/components/evo-datepicker/public-api.mjs +2 -2
  105. package/esm2020/lib/components/evo-datepicker/templates/index.mjs +19 -19
  106. package/esm2020/lib/components/evo-dropdown/evo-dropdown-origin.directive.mjs +40 -40
  107. package/esm2020/lib/components/evo-dropdown/evo-dropdown-position-description.mjs +50 -50
  108. package/esm2020/lib/components/evo-dropdown/evo-dropdown.component.mjs +107 -107
  109. package/esm2020/lib/components/evo-dropdown/evo-dropdown.module.mjs +19 -19
  110. package/esm2020/lib/components/evo-dropdown/index.mjs +1 -1
  111. package/esm2020/lib/components/evo-dropdown/public-api.mjs +4 -4
  112. package/esm2020/lib/components/evo-dropdown/types/evo-dropdown-positions.mjs +1 -1
  113. package/esm2020/lib/components/evo-icon/classes/evo-icons-library.mjs +18 -18
  114. package/esm2020/lib/components/evo-icon/evo-icon.component.mjs +56 -56
  115. package/esm2020/lib/components/evo-icon/evo-icon.module.mjs +56 -56
  116. package/esm2020/lib/components/evo-icon/index.mjs +1 -1
  117. package/esm2020/lib/components/evo-icon/interfaces/icons-category.mjs +1 -1
  118. package/esm2020/lib/components/evo-icon/interfaces/icons-source.mjs +1 -1
  119. package/esm2020/lib/components/evo-icon/public-api.mjs +5 -5
  120. package/esm2020/lib/components/evo-icon-button/evo-icon-button.component.mjs +64 -64
  121. package/esm2020/lib/components/evo-icon-button/evo-icon-button.module.mjs +25 -25
  122. package/esm2020/lib/components/evo-icon-button/index.mjs +1 -1
  123. package/esm2020/lib/components/evo-icon-button/public-api.mjs +2 -2
  124. package/esm2020/lib/components/evo-icon-button/types/evo-icon-button-size.mjs +1 -1
  125. package/esm2020/lib/components/evo-icon-button/types/evo-icon-button-theme.mjs +1 -1
  126. package/esm2020/lib/components/evo-icon-number/components/evo-icon-number/evo-icon-number.component.mjs +13 -13
  127. package/esm2020/lib/components/evo-icon-number/evo-icon-number.module.mjs +17 -17
  128. package/esm2020/lib/components/evo-icon-number/index.mjs +1 -1
  129. package/esm2020/lib/components/evo-icon-number/public-api.mjs +2 -2
  130. package/esm2020/lib/components/evo-input/evo-input-icon/evo-input-icon.directive.mjs +12 -12
  131. package/esm2020/lib/components/evo-input/evo-input.component.mjs +358 -358
  132. package/esm2020/lib/components/evo-input/evo-input.module.mjs +66 -66
  133. package/esm2020/lib/components/evo-input/index.mjs +1 -1
  134. package/esm2020/lib/components/evo-input/public-api.mjs +3 -3
  135. package/esm2020/lib/components/evo-input-contenteditable/evo-input-contenteditable.component.mjs +149 -149
  136. package/esm2020/lib/components/evo-input-contenteditable/evo-input-contenteditable.module.mjs +33 -33
  137. package/esm2020/lib/components/evo-input-contenteditable/index.mjs +1 -1
  138. package/esm2020/lib/components/evo-input-contenteditable/public-api.mjs +2 -2
  139. package/esm2020/lib/components/evo-input-contenteditable/utils/clear-multiline.mjs +6 -6
  140. package/esm2020/lib/components/evo-loader/evo-circular-loader.component.mjs +18 -18
  141. package/esm2020/lib/components/evo-loader/evo-loader.component.mjs +27 -27
  142. package/esm2020/lib/components/evo-loader/evo-loader.module.mjs +32 -32
  143. package/esm2020/lib/components/evo-loader/index.mjs +1 -1
  144. package/esm2020/lib/components/evo-loader/public-api.mjs +3 -3
  145. package/esm2020/lib/components/evo-modal/evo-modal.component.mjs +127 -127
  146. package/esm2020/lib/components/evo-modal/evo-modal.module.mjs +31 -31
  147. package/esm2020/lib/components/evo-modal/evo-modal.service.mjs +31 -31
  148. package/esm2020/lib/components/evo-modal/index.mjs +1 -1
  149. package/esm2020/lib/components/evo-modal/public-api.mjs +3 -3
  150. package/esm2020/lib/components/evo-navbar/evo-navbar-item/evo-navbar-item.component.mjs +57 -57
  151. package/esm2020/lib/components/evo-navbar/evo-navbar.component.mjs +45 -45
  152. package/esm2020/lib/components/evo-navbar/evo-navbar.module.mjs +23 -23
  153. package/esm2020/lib/components/evo-navbar/index.mjs +1 -1
  154. package/esm2020/lib/components/evo-navbar/interfaces/nav-item-main-info.mjs +1 -1
  155. package/esm2020/lib/components/evo-navbar/interfaces/nav-item-router-link.mjs +1 -1
  156. package/esm2020/lib/components/evo-navbar/interfaces/nav-item.href.mjs +1 -1
  157. package/esm2020/lib/components/evo-navbar/public-api.mjs +3 -3
  158. package/esm2020/lib/components/evo-navbar/types/nav-item.mjs +1 -1
  159. package/esm2020/lib/components/evo-navigation-button/evo-navigation-button.component.mjs +12 -12
  160. package/esm2020/lib/components/evo-navigation-button/evo-navigation-button.module.mjs +45 -45
  161. package/esm2020/lib/components/evo-navigation-button/index.mjs +2 -2
  162. package/esm2020/lib/components/evo-navigation-button/public-api.mjs +3 -3
  163. package/esm2020/lib/components/evo-note/evo-note.component.mjs +39 -39
  164. package/esm2020/lib/components/evo-note/evo-note.module.mjs +45 -45
  165. package/esm2020/lib/components/evo-note/index.mjs +1 -1
  166. package/esm2020/lib/components/evo-note/public.api.mjs +3 -3
  167. package/esm2020/lib/components/evo-note/types/evo-note-type.mjs +1 -1
  168. package/esm2020/lib/components/evo-paginator/evo-paginator.component.mjs +107 -107
  169. package/esm2020/lib/components/evo-paginator/evo-paginator.module.mjs +21 -21
  170. package/esm2020/lib/components/evo-paginator/index.mjs +1 -1
  171. package/esm2020/lib/components/evo-paginator/public-api.mjs +2 -2
  172. package/esm2020/lib/components/evo-plus-minus/evo-plus-minus.component.mjs +25 -25
  173. package/esm2020/lib/components/evo-plus-minus/evo-plus-minus.module.mjs +21 -21
  174. package/esm2020/lib/components/evo-plus-minus/index.mjs +1 -1
  175. package/esm2020/lib/components/evo-plus-minus/public-api.mjs +2 -2
  176. package/esm2020/lib/components/evo-popover/evo-popover.component.mjs +173 -173
  177. package/esm2020/lib/components/evo-popover/evo-popover.module.mjs +25 -25
  178. package/esm2020/lib/components/evo-popover/index.mjs +1 -1
  179. package/esm2020/lib/components/evo-popover/public-api.mjs +2 -2
  180. package/esm2020/lib/components/evo-portal/evo-portal-outlet.class.mjs +6 -6
  181. package/esm2020/lib/components/evo-portal/evo-portal-outlet.directive.mjs +18 -18
  182. package/esm2020/lib/components/evo-portal/evo-portal.module.mjs +31 -31
  183. package/esm2020/lib/components/evo-portal/evo-portal.service.mjs +91 -91
  184. package/esm2020/lib/components/evo-portal/index.mjs +1 -1
  185. package/esm2020/lib/components/evo-portal/public-api.mjs +4 -4
  186. package/esm2020/lib/components/evo-radio/evo-radio.component.mjs +50 -50
  187. package/esm2020/lib/components/evo-radio/evo-radio.module.mjs +25 -25
  188. package/esm2020/lib/components/evo-radio/index.mjs +1 -1
  189. package/esm2020/lib/components/evo-radio/public-api.mjs +2 -2
  190. package/esm2020/lib/components/evo-radio-group/evo-radio-group.component.mjs +122 -122
  191. package/esm2020/lib/components/evo-radio-group/evo-radio-group.module.mjs +33 -33
  192. package/esm2020/lib/components/evo-radio-group/index.mjs +1 -1
  193. package/esm2020/lib/components/evo-radio-group/public-api.mjs +2 -2
  194. package/esm2020/lib/components/evo-radio-group/typings/options.mjs +1 -1
  195. package/esm2020/lib/components/evo-radioshape/components/evo-radioshape.component.mjs +55 -55
  196. package/esm2020/lib/components/evo-radioshape/evo-radioshape.module.mjs +32 -32
  197. package/esm2020/lib/components/evo-radioshape/index.mjs +1 -1
  198. package/esm2020/lib/components/evo-radioshape/public-api.mjs +2 -2
  199. package/esm2020/lib/components/evo-segmented-bar/evo-segmented-bar/evo-segmented-bar.component.mjs +21 -21
  200. package/esm2020/lib/components/evo-segmented-bar/evo-segmented-bar-button/evo-segmented-bar-button.component.mjs +77 -77
  201. package/esm2020/lib/components/evo-segmented-bar/evo-segmented-bar.module.mjs +24 -24
  202. package/esm2020/lib/components/evo-segmented-bar/index.mjs +1 -1
  203. package/esm2020/lib/components/evo-segmented-bar/public-api.mjs +3 -3
  204. package/esm2020/lib/components/evo-select/evo-select.component.mjs +115 -115
  205. package/esm2020/lib/components/evo-select/evo-select.module.mjs +33 -33
  206. package/esm2020/lib/components/evo-select/index.mjs +1 -1
  207. package/esm2020/lib/components/evo-select/public-api.mjs +2 -2
  208. package/esm2020/lib/components/evo-sidebar/enums/evo-sidebar-close-targets.mjs +8 -8
  209. package/esm2020/lib/components/evo-sidebar/enums/evo-sidebar-sizes.mjs +7 -7
  210. package/esm2020/lib/components/evo-sidebar/enums/evo-sidebar-states.mjs +6 -6
  211. package/esm2020/lib/components/evo-sidebar/evo-sidebar-content/evo-sidebar-content.component.mjs +33 -33
  212. package/esm2020/lib/components/evo-sidebar/evo-sidebar-footer/evo-sidebar-footer.component.mjs +13 -13
  213. package/esm2020/lib/components/evo-sidebar/evo-sidebar-header/evo-sidebar-header.component.mjs +40 -40
  214. package/esm2020/lib/components/evo-sidebar/evo-sidebar-portal.mjs +21 -21
  215. package/esm2020/lib/components/evo-sidebar/evo-sidebar.component.mjs +172 -172
  216. package/esm2020/lib/components/evo-sidebar/evo-sidebar.module.mjs +90 -90
  217. package/esm2020/lib/components/evo-sidebar/evo-sidebar.service.mjs +104 -104
  218. package/esm2020/lib/components/evo-sidebar/index.mjs +1 -1
  219. package/esm2020/lib/components/evo-sidebar/interfaces.mjs +2 -2
  220. package/esm2020/lib/components/evo-sidebar/public-api.mjs +12 -12
  221. package/esm2020/lib/components/evo-sidebar/sidebar-injection-token.mjs +3 -3
  222. package/esm2020/lib/components/evo-sidebar/tokens.mjs +11 -11
  223. package/esm2020/lib/components/evo-stepper/evo-stepper-events.mjs +24 -24
  224. package/esm2020/lib/components/evo-stepper/evo-stepper-item/evo-stepper-item.component.mjs +30 -30
  225. package/esm2020/lib/components/evo-stepper/evo-stepper.component.mjs +66 -66
  226. package/esm2020/lib/components/evo-stepper/evo-stepper.module.mjs +26 -26
  227. package/esm2020/lib/components/evo-stepper/index.mjs +1 -1
  228. package/esm2020/lib/components/evo-stepper/public-api.mjs +3 -3
  229. package/esm2020/lib/components/evo-submenu/evo-submenu.component.mjs +159 -159
  230. package/esm2020/lib/components/evo-submenu/evo-submenu.module.mjs +26 -26
  231. package/esm2020/lib/components/evo-submenu/index.mjs +1 -1
  232. package/esm2020/lib/components/evo-submenu/public-api.mjs +2 -2
  233. package/esm2020/lib/components/evo-switcher/components/evo-switcher-item/evo-switcher-item.component.mjs +10 -10
  234. package/esm2020/lib/components/evo-switcher/evo-switcher.component.mjs +31 -31
  235. package/esm2020/lib/components/evo-switcher/evo-switcher.module.mjs +26 -26
  236. package/esm2020/lib/components/evo-switcher/index.mjs +1 -1
  237. package/esm2020/lib/components/evo-switcher/public-api.mjs +3 -3
  238. package/esm2020/lib/components/evo-table/evo-table/evo-table.component.mjs +66 -66
  239. package/esm2020/lib/components/evo-table/evo-table-column/evo-table-column.component.mjs +30 -30
  240. package/esm2020/lib/components/evo-table/evo-table.module.mjs +22 -22
  241. package/esm2020/lib/components/evo-table/index.mjs +1 -1
  242. package/esm2020/lib/components/evo-table/public-api.mjs +3 -3
  243. package/esm2020/lib/components/evo-tabs/enums/evo-tabs-size.mjs +6 -6
  244. package/esm2020/lib/components/evo-tabs/evo-tab/evo-tab.component.mjs +88 -88
  245. package/esm2020/lib/components/evo-tabs/evo-tab-content/evo-tab-content.component.mjs +36 -36
  246. package/esm2020/lib/components/evo-tabs/evo-tab-state.collection.mjs +42 -42
  247. package/esm2020/lib/components/evo-tabs/evo-tabs-size.service.mjs +24 -24
  248. package/esm2020/lib/components/evo-tabs/evo-tabs.component.mjs +83 -83
  249. package/esm2020/lib/components/evo-tabs/evo-tabs.module.mjs +29 -29
  250. package/esm2020/lib/components/evo-tabs/evo-tabs.service.mjs +66 -66
  251. package/esm2020/lib/components/evo-tabs/index.mjs +1 -1
  252. package/esm2020/lib/components/evo-tabs/public-api.mjs +9 -9
  253. package/esm2020/lib/components/evo-textarea/evo-textarea.component.mjs +78 -78
  254. package/esm2020/lib/components/evo-textarea/evo-textarea.module.mjs +36 -36
  255. package/esm2020/lib/components/evo-textarea/index.mjs +1 -1
  256. package/esm2020/lib/components/evo-textarea/public-api.mjs +2 -2
  257. package/esm2020/lib/components/evo-toast/evo-toast.component.mjs +97 -97
  258. package/esm2020/lib/components/evo-toast/evo-toast.module.mjs +45 -45
  259. package/esm2020/lib/components/evo-toast/evo-toast.service.mjs +48 -48
  260. package/esm2020/lib/components/evo-toast/index.mjs +1 -1
  261. package/esm2020/lib/components/evo-toast/public-api.mjs +3 -3
  262. package/esm2020/lib/components/evo-toggle/evo-toggle.component.mjs +63 -63
  263. package/esm2020/lib/components/evo-toggle/evo-toggle.module.mjs +29 -29
  264. package/esm2020/lib/components/evo-toggle/index.mjs +1 -1
  265. package/esm2020/lib/components/evo-toggle/public-api.mjs +2 -2
  266. package/esm2020/lib/components/evo-upload/evo-upload.component.mjs +287 -287
  267. package/esm2020/lib/components/evo-upload/evo-upload.module.mjs +59 -59
  268. package/esm2020/lib/components/evo-upload/index.mjs +1 -1
  269. package/esm2020/lib/components/evo-upload/public-api.mjs +2 -2
  270. package/esm2020/lib/decorators/deprecate-method.decorator.mjs +7 -7
  271. package/esm2020/lib/decorators/deprecate-variable.decorator.mjs +16 -16
  272. package/esm2020/lib/decorators/index.mjs +1 -1
  273. package/esm2020/lib/decorators/public-api.mjs +2 -2
  274. package/esm2020/lib/directives/evo-click-outside.directive.mjs +39 -39
  275. package/esm2020/lib/directives/evo-is-expanded.directive.mjs +70 -70
  276. package/esm2020/lib/directives/evo-let/evo-let.directive.mjs +45 -45
  277. package/esm2020/lib/directives/evo-ui-class.directive.mjs +158 -158
  278. package/esm2020/lib/directives/index.mjs +1 -1
  279. package/esm2020/lib/directives/public-api.mjs +4 -4
  280. package/esm2020/lib/evo-ui-kit.module.mjs +64 -64
  281. package/esm2020/lib/operators/enter-zone.operator.mjs +8 -8
  282. package/esm2020/lib/operators/index.mjs +1 -1
  283. package/esm2020/lib/operators/public-api.mjs +1 -1
  284. package/esm2020/lib/pipes/declination.pipe.mjs +39 -39
  285. package/esm2020/lib/pipes/evo-pipes.module.mjs +16 -16
  286. package/esm2020/lib/pipes/index.mjs +1 -1
  287. package/esm2020/lib/pipes/public-api.mjs +3 -3
  288. package/esm2020/lib/pipes/safe-html.pipe.mjs +17 -17
  289. package/esm2020/lib/services/evo-expanded.service.mjs +22 -22
  290. package/esm2020/lib/services/index.mjs +1 -1
  291. package/esm2020/lib/services/public-api.mjs +1 -1
  292. package/esm2020/lib/services/window.service.mjs +48 -48
  293. package/esm2020/public_api.mjs +74 -74
  294. package/evotor-dev-ui-kit.d.ts +5 -5
  295. package/fesm2015/evotor-dev-ui-kit-icons-category.mjs +62 -62
  296. package/fesm2015/evotor-dev-ui-kit-icons-emotions.mjs +18 -18
  297. package/fesm2015/evotor-dev-ui-kit-icons-header.mjs +28 -28
  298. package/fesm2015/evotor-dev-ui-kit-icons-info.mjs +40 -40
  299. package/fesm2015/evotor-dev-ui-kit-icons-navigation.mjs +56 -56
  300. package/fesm2015/evotor-dev-ui-kit-icons-navigation.mjs.map +1 -1
  301. package/fesm2015/evotor-dev-ui-kit-icons-side-menu.mjs +64 -64
  302. package/fesm2015/evotor-dev-ui-kit-icons-system.mjs +372 -372
  303. package/fesm2015/evotor-dev-ui-kit-icons-system.mjs.map +1 -1
  304. package/fesm2015/evotor-dev-ui-kit-icons.mjs +628 -628
  305. package/fesm2015/evotor-dev-ui-kit-icons.mjs.map +1 -1
  306. package/fesm2015/evotor-dev-ui-kit.mjs +7041 -7041
  307. package/fesm2015/evotor-dev-ui-kit.mjs.map +1 -1
  308. package/fesm2020/evotor-dev-ui-kit-icons-category.mjs +62 -62
  309. package/fesm2020/evotor-dev-ui-kit-icons-emotions.mjs +18 -18
  310. package/fesm2020/evotor-dev-ui-kit-icons-header.mjs +28 -28
  311. package/fesm2020/evotor-dev-ui-kit-icons-info.mjs +40 -40
  312. package/fesm2020/evotor-dev-ui-kit-icons-navigation.mjs +56 -56
  313. package/fesm2020/evotor-dev-ui-kit-icons-navigation.mjs.map +1 -1
  314. package/fesm2020/evotor-dev-ui-kit-icons-side-menu.mjs +64 -64
  315. package/fesm2020/evotor-dev-ui-kit-icons-system.mjs +372 -372
  316. package/fesm2020/evotor-dev-ui-kit-icons-system.mjs.map +1 -1
  317. package/fesm2020/evotor-dev-ui-kit-icons.mjs +628 -628
  318. package/fesm2020/evotor-dev-ui-kit-icons.mjs.map +1 -1
  319. package/fesm2020/evotor-dev-ui-kit.mjs +7021 -7021
  320. package/fesm2020/evotor-dev-ui-kit.mjs.map +1 -1
  321. package/icons/category/evotor-dev-ui-kit-icons-category.d.ts +5 -5
  322. package/icons/category/index.d.ts +59 -59
  323. package/icons/emotions/evotor-dev-ui-kit-icons-emotions.d.ts +5 -5
  324. package/icons/emotions/index.d.ts +15 -15
  325. package/icons/evotor-dev-ui-kit-icons.d.ts +5 -5
  326. package/icons/header/evotor-dev-ui-kit-icons-header.d.ts +5 -5
  327. package/icons/header/index.d.ts +25 -25
  328. package/icons/index.d.ts +321 -321
  329. package/icons/info/evotor-dev-ui-kit-icons-info.d.ts +5 -5
  330. package/icons/info/index.d.ts +37 -37
  331. package/icons/navigation/evotor-dev-ui-kit-icons-navigation.d.ts +5 -5
  332. package/icons/navigation/index.d.ts +53 -53
  333. package/icons/side-menu/evotor-dev-ui-kit-icons-side-menu.d.ts +5 -5
  334. package/icons/side-menu/index.d.ts +61 -61
  335. package/icons/system/evotor-dev-ui-kit-icons-system.d.ts +5 -5
  336. package/icons/system/index.d.ts +369 -369
  337. package/lib/common/Serializable.d.ts +3 -3
  338. package/lib/common/animations/expand.animation.d.ts +1 -1
  339. package/lib/common/animations/index.d.ts +3 -3
  340. package/lib/common/animations/sidebar.animation.d.ts +2 -2
  341. package/lib/common/animations/skip-initial-render.animation.d.ts +1 -1
  342. package/lib/common/collection/evo-collection-fabric.d.ts +4 -4
  343. package/lib/common/collection/evo-collection.d.ts +3 -3
  344. package/lib/common/collection/index.d.ts +2 -2
  345. package/lib/common/constants/css-breakpoints.d.ts +8 -8
  346. package/lib/common/constants/view-breakpoint-streams.d.ts +9 -9
  347. package/lib/common/evo-base-control.d.ts +21 -21
  348. package/lib/common/evo-control-state-manager/evo-control-state-manager.d.ts +7 -7
  349. package/lib/common/evo-control-state-manager/evo-control-state.interface.d.ts +5 -5
  350. package/lib/common/evo-control-state-manager/evo-control-states.enum.d.ts +4 -4
  351. package/lib/common/form-helper/form-helper.d.ts +5 -5
  352. package/lib/common/types/evo-color.d.ts +1 -1
  353. package/lib/common/types/evo-size.d.ts +1 -1
  354. package/lib/common/types/index.d.ts +2 -2
  355. package/lib/components/evo-accordion/evo-accordion-content/evo-accordion-content.component.d.ts +11 -11
  356. package/lib/components/evo-accordion/evo-accordion-panel/evo-accordion-panel.component.d.ts +9 -9
  357. package/lib/components/evo-accordion/evo-accordion-title/evo-accordion-title.component.d.ts +11 -11
  358. package/lib/components/evo-accordion/evo-accordion.component.d.ts +9 -9
  359. package/lib/components/evo-accordion/evo-accordion.module.d.ts +13 -13
  360. package/lib/components/evo-accordion/index.d.ts +1 -1
  361. package/lib/components/evo-accordion/public-api.d.ts +5 -5
  362. package/lib/components/evo-alert/evo-alert.component.d.ts +38 -38
  363. package/lib/components/evo-alert/evo-alert.module.d.ts +9 -9
  364. package/lib/components/evo-alert/index.d.ts +1 -1
  365. package/lib/components/evo-alert/public-api.d.ts +2 -2
  366. package/lib/components/evo-autocomplete/components/evo-autocomplete.component.d.ts +115 -115
  367. package/lib/components/evo-autocomplete/components/templates/evo-autocomplete-default-option.component.d.ts +16 -16
  368. package/lib/components/evo-autocomplete/evo-autocomplete.module.d.ts +15 -15
  369. package/lib/components/evo-autocomplete/helpers/switch-query-to-list.d.ts +2 -2
  370. package/lib/components/evo-autocomplete/index.d.ts +1 -1
  371. package/lib/components/evo-autocomplete/models/DaDataParty.d.ts +37 -37
  372. package/lib/components/evo-autocomplete/models/dadata.model.d.ts +320 -320
  373. package/lib/components/evo-autocomplete/public-api.d.ts +6 -6
  374. package/lib/components/evo-autocomplete/types/evo-autocomplete-size.d.ts +1 -1
  375. package/lib/components/evo-badge/evo-badge.component.d.ts +12 -12
  376. package/lib/components/evo-badge/evo-badge.module.d.ts +9 -9
  377. package/lib/components/evo-badge/index.d.ts +2 -2
  378. package/lib/components/evo-badge/public-api.d.ts +2 -2
  379. package/lib/components/evo-badge/types/evo-badge-color.d.ts +2 -2
  380. package/lib/components/evo-badge/types/evo-badge-size.d.ts +2 -2
  381. package/lib/components/evo-badge/types/index.d.ts +2 -2
  382. package/lib/components/evo-banner/evo-banner.component.d.ts +46 -46
  383. package/lib/components/evo-banner/evo-banner.module.d.ts +9 -9
  384. package/lib/components/evo-banner/index.d.ts +1 -1
  385. package/lib/components/evo-banner/public-api.d.ts +2 -2
  386. package/lib/components/evo-button/components/evo-button/evo-button.component.d.ts +24 -24
  387. package/lib/components/evo-button/components/evo-button-old/evo-button-old.component.d.ts +39 -39
  388. package/lib/components/evo-button/constants/evo-button-themes-map.d.ts +2 -2
  389. package/lib/components/evo-button/evo-button.module.d.ts +11 -11
  390. package/lib/components/evo-button/index.d.ts +1 -1
  391. package/lib/components/evo-button/public-api.d.ts +4 -4
  392. package/lib/components/evo-button/types/evo-button-color.d.ts +5 -5
  393. package/lib/components/evo-button/types/evo-button-shape.d.ts +4 -4
  394. package/lib/components/evo-button/types/evo-button-size.d.ts +5 -5
  395. package/lib/components/evo-button/types/evo-button-theme-params.d.ts +5 -5
  396. package/lib/components/evo-button/types/evo-button-theme.d.ts +1 -1
  397. package/lib/components/evo-button/types/index.d.ts +5 -5
  398. package/lib/components/evo-checkbox/evo-checkbox.component.d.ts +29 -29
  399. package/lib/components/evo-checkbox/evo-checkbox.module.d.ts +11 -11
  400. package/lib/components/evo-checkbox/index.d.ts +1 -1
  401. package/lib/components/evo-checkbox/public-api.d.ts +2 -2
  402. package/lib/components/evo-chip/evo-chip.component.d.ts +45 -45
  403. package/lib/components/evo-chip/evo-chip.module.d.ts +11 -11
  404. package/lib/components/evo-chip/index.d.ts +1 -1
  405. package/lib/components/evo-chip/public-api.d.ts +2 -2
  406. package/lib/components/evo-control-error/evo-control-error.component.d.ts +14 -14
  407. package/lib/components/evo-control-error/evo-control-error.module.d.ts +10 -10
  408. package/lib/components/evo-control-error/index.d.ts +1 -1
  409. package/lib/components/evo-control-error/public-api.d.ts +2 -2
  410. package/lib/components/evo-control-label/evo-control-label.component.d.ts +9 -9
  411. package/lib/components/evo-control-label/evo-control-label.module.d.ts +8 -8
  412. package/lib/components/evo-control-label/index.d.ts +1 -1
  413. package/lib/components/evo-control-label/public-api.d.ts +2 -2
  414. package/lib/components/evo-counter/evo-counter.component.d.ts +16 -16
  415. package/lib/components/evo-counter/evo-counter.module.d.ts +9 -9
  416. package/lib/components/evo-counter/index.d.ts +1 -1
  417. package/lib/components/evo-counter/public-api.d.ts +2 -2
  418. package/lib/components/evo-datepicker/evo-datepicker.component.d.ts +174 -174
  419. package/lib/components/evo-datepicker/evo-datepicker.module.d.ts +11 -11
  420. package/lib/components/evo-datepicker/flatpickr-options.interface.d.ts +10 -10
  421. package/lib/components/evo-datepicker/index.d.ts +1 -1
  422. package/lib/components/evo-datepicker/public-api.d.ts +2 -2
  423. package/lib/components/evo-datepicker/templates/index.d.ts +16 -16
  424. package/lib/components/evo-dropdown/evo-dropdown-origin.directive.d.ts +15 -15
  425. package/lib/components/evo-dropdown/evo-dropdown-position-description.d.ts +3 -3
  426. package/lib/components/evo-dropdown/evo-dropdown.component.d.ts +34 -34
  427. package/lib/components/evo-dropdown/evo-dropdown.module.d.ts +10 -10
  428. package/lib/components/evo-dropdown/index.d.ts +1 -1
  429. package/lib/components/evo-dropdown/public-api.d.ts +4 -4
  430. package/lib/components/evo-dropdown/types/evo-dropdown-positions.d.ts +1 -1
  431. package/lib/components/evo-icon/classes/evo-icons-library.d.ts +11 -11
  432. package/lib/components/evo-icon/evo-icon.component.d.ts +20 -20
  433. package/lib/components/evo-icon/evo-icon.module.d.ts +16 -16
  434. package/lib/components/evo-icon/index.d.ts +1 -1
  435. package/lib/components/evo-icon/interfaces/icons-category.d.ts +5 -5
  436. package/lib/components/evo-icon/interfaces/icons-source.d.ts +3 -3
  437. package/lib/components/evo-icon/public-api.d.ts +5 -5
  438. package/lib/components/evo-icon-button/evo-icon-button.component.d.ts +26 -26
  439. package/lib/components/evo-icon-button/evo-icon-button.module.d.ts +8 -8
  440. package/lib/components/evo-icon-button/index.d.ts +1 -1
  441. package/lib/components/evo-icon-button/public-api.d.ts +2 -2
  442. package/lib/components/evo-icon-button/types/evo-icon-button-size.d.ts +2 -2
  443. package/lib/components/evo-icon-button/types/evo-icon-button-theme.d.ts +1 -1
  444. package/lib/components/evo-icon-number/components/evo-icon-number/evo-icon-number.component.d.ts +6 -6
  445. package/lib/components/evo-icon-number/evo-icon-number.module.d.ts +8 -8
  446. package/lib/components/evo-icon-number/index.d.ts +1 -1
  447. package/lib/components/evo-icon-number/public-api.d.ts +2 -2
  448. package/lib/components/evo-input/evo-input-icon/evo-input-icon.directive.d.ts +5 -5
  449. package/lib/components/evo-input/evo-input.component.d.ts +93 -93
  450. package/lib/components/evo-input/evo-input.module.d.ts +14 -14
  451. package/lib/components/evo-input/index.d.ts +1 -1
  452. package/lib/components/evo-input/public-api.d.ts +3 -3
  453. package/lib/components/evo-input-contenteditable/evo-input-contenteditable.component.d.ts +44 -44
  454. package/lib/components/evo-input-contenteditable/evo-input-contenteditable.module.d.ts +10 -10
  455. package/lib/components/evo-input-contenteditable/index.d.ts +1 -1
  456. package/lib/components/evo-input-contenteditable/public-api.d.ts +2 -2
  457. package/lib/components/evo-input-contenteditable/utils/clear-multiline.d.ts +1 -1
  458. package/lib/components/evo-loader/evo-circular-loader.component.d.ts +8 -8
  459. package/lib/components/evo-loader/evo-loader.component.d.ts +14 -14
  460. package/lib/components/evo-loader/evo-loader.module.d.ts +10 -10
  461. package/lib/components/evo-loader/index.d.ts +1 -1
  462. package/lib/components/evo-loader/public-api.d.ts +3 -3
  463. package/lib/components/evo-modal/evo-modal.component.d.ts +41 -41
  464. package/lib/components/evo-modal/evo-modal.module.d.ts +10 -10
  465. package/lib/components/evo-modal/evo-modal.service.d.ts +22 -22
  466. package/lib/components/evo-modal/index.d.ts +1 -1
  467. package/lib/components/evo-modal/public-api.d.ts +3 -3
  468. package/lib/components/evo-navbar/evo-navbar-item/evo-navbar-item.component.d.ts +21 -21
  469. package/lib/components/evo-navbar/evo-navbar.component.d.ts +18 -18
  470. package/lib/components/evo-navbar/evo-navbar.module.d.ts +12 -12
  471. package/lib/components/evo-navbar/index.d.ts +1 -1
  472. package/lib/components/evo-navbar/interfaces/nav-item-main-info.d.ts +5 -5
  473. package/lib/components/evo-navbar/interfaces/nav-item-router-link.d.ts +14 -14
  474. package/lib/components/evo-navbar/interfaces/nav-item.href.d.ts +4 -4
  475. package/lib/components/evo-navbar/public-api.d.ts +7 -7
  476. package/lib/components/evo-navbar/types/nav-item.d.ts +4 -4
  477. package/lib/components/evo-navigation-button/evo-navigation-button.component.d.ts +5 -5
  478. package/lib/components/evo-navigation-button/evo-navigation-button.module.d.ts +9 -9
  479. package/lib/components/evo-navigation-button/index.d.ts +1 -1
  480. package/lib/components/evo-navigation-button/public-api.d.ts +2 -2
  481. package/lib/components/evo-note/evo-note.component.d.ts +13 -13
  482. package/lib/components/evo-note/evo-note.module.d.ts +10 -10
  483. package/lib/components/evo-note/index.d.ts +1 -1
  484. package/lib/components/evo-note/public.api.d.ts +3 -3
  485. package/lib/components/evo-note/types/evo-note-type.d.ts +1 -1
  486. package/lib/components/evo-paginator/evo-paginator.component.d.ts +26 -26
  487. package/lib/components/evo-paginator/evo-paginator.module.d.ts +8 -8
  488. package/lib/components/evo-paginator/index.d.ts +1 -1
  489. package/lib/components/evo-paginator/public-api.d.ts +2 -2
  490. package/lib/components/evo-plus-minus/evo-plus-minus.component.d.ts +13 -13
  491. package/lib/components/evo-plus-minus/evo-plus-minus.module.d.ts +8 -8
  492. package/lib/components/evo-plus-minus/index.d.ts +1 -1
  493. package/lib/components/evo-plus-minus/public-api.d.ts +2 -2
  494. package/lib/components/evo-popover/evo-popover.component.d.ts +43 -43
  495. package/lib/components/evo-popover/evo-popover.module.d.ts +9 -9
  496. package/lib/components/evo-popover/index.d.ts +1 -1
  497. package/lib/components/evo-popover/public-api.d.ts +2 -2
  498. package/lib/components/evo-portal/evo-portal-outlet.class.d.ts +6 -6
  499. package/lib/components/evo-portal/evo-portal-outlet.directive.d.ts +10 -10
  500. package/lib/components/evo-portal/evo-portal.module.d.ts +8 -8
  501. package/lib/components/evo-portal/evo-portal.service.d.ts +27 -27
  502. package/lib/components/evo-portal/index.d.ts +1 -1
  503. package/lib/components/evo-portal/public-api.d.ts +4 -4
  504. package/lib/components/evo-radio/evo-radio.component.d.ts +18 -18
  505. package/lib/components/evo-radio/evo-radio.module.d.ts +9 -9
  506. package/lib/components/evo-radio/index.d.ts +1 -1
  507. package/lib/components/evo-radio/public-api.d.ts +2 -2
  508. package/lib/components/evo-radio-group/evo-radio-group.component.d.ts +56 -56
  509. package/lib/components/evo-radio-group/evo-radio-group.module.d.ts +11 -11
  510. package/lib/components/evo-radio-group/index.d.ts +1 -1
  511. package/lib/components/evo-radio-group/public-api.d.ts +2 -2
  512. package/lib/components/evo-radio-group/typings/options.d.ts +6 -6
  513. package/lib/components/evo-radioshape/components/evo-radioshape.component.d.ts +19 -19
  514. package/lib/components/evo-radioshape/evo-radioshape.module.d.ts +9 -9
  515. package/lib/components/evo-radioshape/index.d.ts +1 -1
  516. package/lib/components/evo-radioshape/public-api.d.ts +2 -2
  517. package/lib/components/evo-segmented-bar/evo-segmented-bar/evo-segmented-bar.component.d.ts +10 -10
  518. package/lib/components/evo-segmented-bar/evo-segmented-bar-button/evo-segmented-bar-button.component.d.ts +22 -22
  519. package/lib/components/evo-segmented-bar/evo-segmented-bar.module.d.ts +11 -11
  520. package/lib/components/evo-segmented-bar/index.d.ts +1 -1
  521. package/lib/components/evo-segmented-bar/public-api.d.ts +3 -3
  522. package/lib/components/evo-select/evo-select.component.d.ts +37 -37
  523. package/lib/components/evo-select/evo-select.module.d.ts +11 -11
  524. package/lib/components/evo-select/index.d.ts +1 -1
  525. package/lib/components/evo-select/public-api.d.ts +2 -2
  526. package/lib/components/evo-sidebar/enums/evo-sidebar-close-targets.d.ts +6 -6
  527. package/lib/components/evo-sidebar/enums/evo-sidebar-sizes.d.ts +5 -5
  528. package/lib/components/evo-sidebar/enums/evo-sidebar-states.d.ts +4 -4
  529. package/lib/components/evo-sidebar/evo-sidebar-content/evo-sidebar-content.component.d.ts +12 -12
  530. package/lib/components/evo-sidebar/evo-sidebar-footer/evo-sidebar-footer.component.d.ts +5 -5
  531. package/lib/components/evo-sidebar/evo-sidebar-header/evo-sidebar-header.component.d.ts +13 -13
  532. package/lib/components/evo-sidebar/evo-sidebar-portal.d.ts +13 -13
  533. package/lib/components/evo-sidebar/evo-sidebar.component.d.ts +42 -42
  534. package/lib/components/evo-sidebar/evo-sidebar.module.d.ts +17 -17
  535. package/lib/components/evo-sidebar/evo-sidebar.service.d.ts +26 -26
  536. package/lib/components/evo-sidebar/index.d.ts +1 -1
  537. package/lib/components/evo-sidebar/interfaces.d.ts +23 -23
  538. package/lib/components/evo-sidebar/public-api.d.ts +11 -11
  539. package/lib/components/evo-sidebar/sidebar-injection-token.d.ts +2 -2
  540. package/lib/components/evo-sidebar/tokens.d.ts +7 -7
  541. package/lib/components/evo-stepper/evo-stepper-events.d.ts +12 -12
  542. package/lib/components/evo-stepper/evo-stepper-item/evo-stepper-item.component.d.ts +13 -13
  543. package/lib/components/evo-stepper/evo-stepper.component.d.ts +27 -27
  544. package/lib/components/evo-stepper/evo-stepper.module.d.ts +10 -10
  545. package/lib/components/evo-stepper/index.d.ts +1 -1
  546. package/lib/components/evo-stepper/public-api.d.ts +3 -3
  547. package/lib/components/evo-submenu/evo-submenu.component.d.ts +49 -49
  548. package/lib/components/evo-submenu/evo-submenu.module.d.ts +11 -11
  549. package/lib/components/evo-submenu/index.d.ts +1 -1
  550. package/lib/components/evo-submenu/public-api.d.ts +2 -2
  551. package/lib/components/evo-switcher/components/evo-switcher-item/evo-switcher-item.component.d.ts +9 -9
  552. package/lib/components/evo-switcher/evo-switcher.component.d.ts +14 -14
  553. package/lib/components/evo-switcher/evo-switcher.module.d.ts +10 -10
  554. package/lib/components/evo-switcher/index.d.ts +1 -1
  555. package/lib/components/evo-switcher/public-api.d.ts +3 -3
  556. package/lib/components/evo-table/evo-table/evo-table.component.d.ts +35 -35
  557. package/lib/components/evo-table/evo-table-column/evo-table-column.component.d.ts +12 -12
  558. package/lib/components/evo-table/evo-table.module.d.ts +9 -9
  559. package/lib/components/evo-table/index.d.ts +1 -1
  560. package/lib/components/evo-table/public-api.d.ts +3 -3
  561. package/lib/components/evo-tabs/enums/evo-tabs-size.d.ts +4 -4
  562. package/lib/components/evo-tabs/evo-tab/evo-tab.component.d.ts +35 -35
  563. package/lib/components/evo-tabs/evo-tab-content/evo-tab-content.component.d.ts +16 -16
  564. package/lib/components/evo-tabs/evo-tab-state.collection.d.ts +15 -15
  565. package/lib/components/evo-tabs/evo-tabs-size.service.d.ts +12 -12
  566. package/lib/components/evo-tabs/evo-tabs.component.d.ts +22 -22
  567. package/lib/components/evo-tabs/evo-tabs.module.d.ts +11 -11
  568. package/lib/components/evo-tabs/evo-tabs.service.d.ts +19 -19
  569. package/lib/components/evo-tabs/index.d.ts +1 -1
  570. package/lib/components/evo-tabs/public-api.d.ts +8 -8
  571. package/lib/components/evo-textarea/evo-textarea.component.d.ts +25 -25
  572. package/lib/components/evo-textarea/evo-textarea.module.d.ts +11 -11
  573. package/lib/components/evo-textarea/index.d.ts +1 -1
  574. package/lib/components/evo-textarea/public-api.d.ts +2 -2
  575. package/lib/components/evo-toast/evo-toast.component.d.ts +23 -23
  576. package/lib/components/evo-toast/evo-toast.module.d.ts +10 -10
  577. package/lib/components/evo-toast/evo-toast.service.d.ts +22 -22
  578. package/lib/components/evo-toast/index.d.ts +1 -1
  579. package/lib/components/evo-toast/public-api.d.ts +3 -3
  580. package/lib/components/evo-toggle/evo-toggle.component.d.ts +20 -20
  581. package/lib/components/evo-toggle/evo-toggle.module.d.ts +10 -10
  582. package/lib/components/evo-toggle/index.d.ts +1 -1
  583. package/lib/components/evo-toggle/public-api.d.ts +2 -2
  584. package/lib/components/evo-upload/evo-upload.component.d.ts +65 -65
  585. package/lib/components/evo-upload/evo-upload.module.d.ts +13 -13
  586. package/lib/components/evo-upload/index.d.ts +1 -1
  587. package/lib/components/evo-upload/public-api.d.ts +2 -2
  588. package/lib/decorators/deprecate-method.decorator.d.ts +1 -1
  589. package/lib/decorators/deprecate-variable.decorator.d.ts +1 -1
  590. package/lib/decorators/index.d.ts +1 -1
  591. package/lib/decorators/public-api.d.ts +2 -2
  592. package/lib/directives/evo-click-outside.directive.d.ts +12 -12
  593. package/lib/directives/evo-is-expanded.directive.d.ts +19 -19
  594. package/lib/directives/evo-let/evo-let.directive.d.ts +33 -33
  595. package/lib/directives/evo-ui-class.directive.d.ts +61 -61
  596. package/lib/directives/index.d.ts +1 -1
  597. package/lib/directives/public-api.d.ts +4 -4
  598. package/lib/evo-ui-kit.module.d.ts +16 -16
  599. package/lib/operators/enter-zone.operator.d.ts +3 -3
  600. package/lib/operators/index.d.ts +1 -1
  601. package/lib/operators/public-api.d.ts +1 -1
  602. package/lib/pipes/declination.pipe.d.ts +7 -7
  603. package/lib/pipes/evo-pipes.module.d.ts +8 -8
  604. package/lib/pipes/index.d.ts +1 -1
  605. package/lib/pipes/public-api.d.ts +3 -3
  606. package/lib/pipes/safe-html.pipe.d.ts +10 -10
  607. package/lib/services/evo-expanded.service.d.ts +11 -11
  608. package/lib/services/index.d.ts +1 -1
  609. package/lib/services/public-api.d.ts +1 -1
  610. package/lib/services/window.service.d.ts +14 -14
  611. package/package.json +1 -1
  612. package/public_api.d.ts +63 -63
  613. package/styles/components/evo-button.scss +233 -233
  614. package/styles/components/evo-chip.scss +167 -167
  615. package/styles/components/evo-table.scss +42 -42
  616. package/styles/components/evo-title.scss +23 -23
  617. package/styles/components/skeleton.scss +12 -12
  618. package/styles/globals.scss +78 -78
  619. package/styles/main.scss +24 -24
  620. package/styles/mixins/_evo-input-mixins.scss +74 -74
  621. package/styles/mixins/_evo-text-button-mixin.scss +24 -24
  622. package/styles/mixins/_evo-text-caption-mixin.scss +26 -26
  623. package/styles/mixins/_evo-text-field-mixin.scss +36 -36
  624. package/styles/mixins/_evo-text-header-mixin.scss +62 -62
  625. package/styles/mixins/_evo-text-mobile-header-mixin.scss +34 -34
  626. package/styles/mixins/_evo-text-paragraph-mixin.scss +34 -34
  627. package/styles/mixins/_evo-text-subtitle-mixin.scss +20 -20
  628. package/styles/mixins/_evo-text-tips-mixin.scss +9 -9
  629. package/styles/mixins/_media-mixins.scss +38 -38
  630. package/styles/mixins.scss +96 -96
  631. package/styles/partials/_fonts.scss +2 -2
  632. package/styles/partials/_typography.scss +135 -135
  633. package/styles/variables.scss +140 -140
@@ -1,358 +1,358 @@
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.detectChanges();
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 ?? '';
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
- this.changeDetector.detectChanges();
208
- }
209
- onFocus() {
210
- if (!this.uiStates.isFocused) {
211
- this.uiStates.isFocused = true;
212
- }
213
- }
214
- onBlur() {
215
- this.uiStates.isFocused = false;
216
- this.onTouched();
217
- this.blur.emit();
218
- }
219
- onTooltipClick(event) {
220
- event.preventDefault();
221
- event.stopPropagation();
222
- }
223
- onClear() {
224
- this.writeValue('');
225
- }
226
- hideTooltip() {
227
- this.tooltipVisibilityTimeout = true;
228
- setTimeout(() => {
229
- if (this.tooltipVisibilityTimeout) {
230
- this.uiStates.isTooltipVisible = false;
231
- }
232
- }, 25);
233
- }
234
- showTooltip() {
235
- this.uiStates.isTooltipVisible = true;
236
- this.tooltipVisibilityTimeout = false;
237
- }
238
- // Composition handling is taken from:
239
- // https://github.com/angular/angular/blob/11.0.3/packages/forms/src/directives/default_value_accessor.ts#L152
240
- _compositionStart() {
241
- this._composing = true;
242
- }
243
- _compositionEnd(value) {
244
- this._composing = false;
245
- if (this._compositionMode) {
246
- this.value = value;
247
- }
248
- }
249
- removePrefix(value) {
250
- if (typeof value === 'string' &&
251
- value.indexOf(this.prefix) === 0) {
252
- return value.replace(this.prefix, '');
253
- }
254
- return value;
255
- }
256
- createMaskInstance(opts) {
257
- this.iMask = new IMask.InputMask(this.inputElement.nativeElement, opts);
258
- }
259
- destroyMask() {
260
- this.iMask?.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: "13.4.0", 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: "13.4.0", 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%}}@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:400;font-size:var(--evo-input-font-size);font-family:var(--evo-font);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,.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: "13.4.0", ngImport: i0, type: EvoInputComponent, decorators: [{
291
- type: Component,
292
- args: [{ selector: 'evo-input', providers: [
293
- {
294
- provide: NG_VALUE_ACCESSOR,
295
- useExisting: forwardRef(() => EvoInputComponent),
296
- multi: true,
297
- },
298
- {
299
- provide: NG_VALIDATORS,
300
- useExisting: forwardRef(() => EvoInputComponent),
301
- multi: true,
302
- },
303
- ], 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%}}@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:400;font-size:var(--evo-input-font-size);font-family:var(--evo-font);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,.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"] }]
304
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
305
- type: Optional
306
- }, {
307
- type: Inject,
308
- args: [COMPOSITION_BUFFER_MODE]
309
- }] }, { type: i0.Injector }]; }, propDecorators: { autoFocus: [{
310
- type: Input
311
- }], dataCp: [{
312
- type: Input,
313
- args: ['data-cp']
314
- }], icon: [{
315
- type: Input
316
- }], mask: [{
317
- type: Input
318
- }], placeholder: [{
319
- type: Input
320
- }], tooltip: [{
321
- type: Input
322
- }], type: [{
323
- type: Input
324
- }], disabled: [{
325
- type: Input
326
- }], loading: [{
327
- type: Input
328
- }], prefix: [{
329
- type: Input
330
- }], autocomplete: [{
331
- type: Input
332
- }], inputDebounce: [{
333
- type: Input
334
- }], unmask: [{
335
- type: Input
336
- }], clearable: [{
337
- type: Input
338
- }], maskValidation: [{
339
- type: Input
340
- }], blur: [{
341
- type: Output
342
- }], inputElement: [{
343
- type: ViewChild,
344
- args: ['input', { static: true }]
345
- }], tooltipElement: [{
346
- type: ViewChild,
347
- args: ['tooltipContainer', { static: true }]
348
- }], setValue: [{
349
- type: Input,
350
- args: ['value']
351
- }], setSize: [{
352
- type: Input,
353
- args: ['size']
354
- }], setTheme: [{
355
- type: Input,
356
- args: ['theme']
357
- }] } });
358
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZvLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V2by11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2V2by1pbnB1dC9ldm8taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXZvLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZXZvLWlucHV0L2V2by1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUVOLEtBQUssRUFLTCxRQUFRLEVBQ1IsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLGFBQWEsRUFDYixpQkFBaUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNoRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7O0FBRS9CLE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsZ0NBQWUsQ0FBQTtJQUNmLGtDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxX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biAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE5nWm9uZSxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE9wdGlvbmFsLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIENPTVBPU0lUSU9OX0JVRkZFUl9NT0RFLFxyXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgICBOR19WQUxJREFUT1JTLFxyXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICBWYWxpZGF0b3IsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge0V2b0NvbnRyb2xTdGF0ZXN9IGZyb20gJy4uLy4uL2NvbW1vbi9ldm8tY29udHJvbC1zdGF0ZS1tYW5hZ2VyL2V2by1jb250cm9sLXN0YXRlcy5lbnVtJztcclxuaW1wb3J0IHtFdm9CYXNlQ29udHJvbH0gZnJvbSAnLi4vLi4vY29tbW9uL2V2by1iYXNlLWNvbnRyb2wnO1xyXG5pbXBvcnQge2Zyb21FdmVudCwgU3ViamVjdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7ZW50ZXJab25lfSBmcm9tICcuLi8uLi9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgKiBhcyBJTWFzayBmcm9tICdpbWFzayc7XHJcblxyXG5leHBvcnQgZW51bSBFdm9JbnB1dFNpemVzIHtcclxuICAgIHNtYWxsID0gJ3NtYWxsJyxcclxuICAgIG5vcm1hbCA9ICdub3JtYWwnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFdm9JbnB1dFRoZW1lIHtcclxuICAgIGRlZmF1bHQgPSAnZGVmYXVsdCcsXHJcbiAgICByb3VuZGVkID0gJ3JvdW5kZWQnLFxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZXZvLWlucHV0JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldm8taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZXZvLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFdm9JbnB1dENvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFdm9JbnB1dENvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdm9JbnB1dENvbXBvbmVudFxyXG4gICAgZXh0ZW5kcyBFdm9CYXNlQ29udHJvbFxyXG4gICAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgVmFsaWRhdG9yIHtcclxuXHJcbiAgICBASW5wdXQoKSBhdXRvRm9jdXM6IGJvb2xlYW47XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcclxuICAgIEBJbnB1dCgnZGF0YS1jcCcpIGRhdGFDcDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgbWFzazogYW55O1xyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHR5cGUgPSAndGV4dCc7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcHJlZml4ID0gJyc7XHJcbiAgICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGlucHV0RGVib3VuY2UgPSA1MDtcclxuICAgIEBJbnB1dCgpIHVubWFzazogYm9vbGVhbiB8ICd0eXBlZCcgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbWFza1ZhbGlkYXRpb24gPSBmYWxzZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgYmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHtzdGF0aWM6IHRydWV9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgICBAVmlld0NoaWxkKCd0b29sdGlwQ29udGFpbmVyJywge3N0YXRpYzogdHJ1ZX0pIHRvb2x0aXBFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIHNpemU6IEV2b0lucHV0U2l6ZXMgPSBFdm9JbnB1dFNpemVzLm5vcm1hbDtcclxuICAgIHRoZW1lOiBFdm9JbnB1dFRoZW1lID0gRXZvSW5wdXRUaGVtZS5kZWZhdWx0O1xyXG4gICAgX3ZhbHVlOiBzdHJpbmc7XHJcbiAgICBjdXN0b21Ub29sdGlwQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgdWlTdGF0ZXMgPSB7XHJcbiAgICAgICAgaGFzQ3VzdG9tVG9vbHRpcDogZmFsc2UsXHJcbiAgICAgICAgaXNUb29sdGlwVmlzaWJsZTogZmFsc2UsXHJcbiAgICAgICAgaXNGb2N1c2VkOiBmYWxzZSxcclxuICAgIH07XHJcblxyXG4gICAgcHJpdmF0ZSBpTWFzazogSU1hc2suSW5wdXRNYXNrPGFueT47XHJcblxyXG4gICAgcHJpdmF0ZSB0b29sdGlwVmlzaWJpbGl0eVRpbWVvdXQgPSBmYWxzZTtcclxuXHJcbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICAvKiogV2hldGhlciB0aGUgdXNlciBpcyBjcmVhdGluZyBhIGNvbXBvc2l0aW9uIHN0cmluZyAoSU1FIGV2ZW50cykuICovXHJcbiAgICBwcml2YXRlIF9jb21wb3NpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQ09NUE9TSVRJT05fQlVGRkVSX01PREUpIHByaXZhdGUgX2NvbXBvc2l0aW9uTW9kZTogYm9vbGVhbixcclxuICAgICAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgndmFsdWUnKSBzZXQgc2V0VmFsdWUodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgnc2l6ZScpIHNldCBzZXRTaXplKHNpemU6IEV2b0lucHV0U2l6ZXMgfCBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoRXZvSW5wdXRTaXplc1tzaXplXSkge1xyXG4gICAgICAgICAgICB0aGlzLnNpemUgPSBFdm9JbnB1dFNpemVzW3NpemVdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoJ3RoZW1lJykgc2V0IHNldFRoZW1lKHRoZW1lOiBzdHJpbmcgfCBFdm9JbnB1dFRoZW1lKSB7XHJcbiAgICAgICAgaWYgKEV2b0lucHV0VGhlbWVbdGhlbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGhlbWUgPSBFdm9JbnB1dFRoZW1lW3RoZW1lXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzRGlzYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZykge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgaWYgKHZhbHVlIHx8IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5yZW1vdmVQcmVmaXgodmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMucHJlZml4ICsgKHRoaXMuX3ZhbHVlIHx8ICcnKSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgaW5wdXRDbGFzcygpOiB7IFtjc3NDbGFzczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAnZm9jdXNlZCc6IHRoaXMudWlTdGF0ZXMuaXNGb2N1c2VkLFxyXG4gICAgICAgICAgICAnZGlzYWJsZWQnOiB0aGlzLmlzRGlzYWJsZWQsXHJcbiAgICAgICAgICAgICd2YWxpZCc6IHRoaXMuY3VycmVudFN0YXRlW0V2b0NvbnRyb2xTdGF0ZXMudmFsaWRdLFxyXG4gICAgICAgICAgICAnaW52YWxpZCc6IHRoaXMuY3VycmVudFN0YXRlW0V2b0NvbnRyb2xTdGF0ZXMuaW52YWxpZF0sXHJcbiAgICAgICAgICAgIFtgc2l6ZS0ke3RoaXMuc2l6ZX1gXTogdGhpcy5zaXplICE9PSBFdm9JbnB1dFNpemVzLm5vcm1hbCxcclxuICAgICAgICAgICAgW2B0aGVtZS0ke3RoaXMudGhlbWV9YF06IHRydWUsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaGFzQWRkaXRpb25hbCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLnRvb2x0aXAgfHwgdGhpcy51aVN0YXRlcy5oYXNDdXN0b21Ub29sdGlwIHx8ICEhdGhpcy5pY29uO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBtYXNrVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHZhbHVlID8/ICcnO1xyXG4gICAgICAgIGlmICh0aGlzLmlNYXNrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnVubWFzayA9PT0gJ3R5cGVkJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pTWFzay50eXBlZFZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudW5tYXNrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlNYXNrLnVubWFza2VkVmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlNYXNrLnZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy53cml0ZVRvRWxlbWVudChub3JtYWxpemVkVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgbWFza1ZhbHVlKCk6IGFueSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlNYXNrKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy51bm1hc2sgPT09ICd0eXBlZCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaU1hc2sudHlwZWRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudW5tYXNrKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlNYXNrLnVubWFza2VkVmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmlNYXNrLnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0NsZWFyYWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jbGVhcmFibGUgJiYgIXRoaXMuZGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubWFzaykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVNYXNrSW5zdGFuY2UodGhpcy5tYXNrKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZnJvbUV2ZW50KGlucHV0RWwsICdpbnB1dCcpXHJcbiAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5pbnB1dERlYm91bmNlKSxcclxuICAgICAgICAgICAgICAgICAgICBtYXAoKGU6IElucHV0RXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaU1hc2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1hc2tWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIGVudGVyWm9uZSh0aGlzLnpvbmUpLFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcCgodmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaU1hc2spIHtcclxuICAgICAgICAgICAgdGhpcy5kZXN0cm95TWFzaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKCFjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHttYXNrfSA9IGNoYW5nZXM7XHJcblxyXG4gICAgICAgIGlmIChtYXNrICYmICFtYXNrLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld01hc2tPcHRpb25zID0gbWFzay5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgICAgIGlmIChuZXdNYXNrT3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaU1hc2spIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlNYXNrLnVwZGF0ZU9wdGlvbnMobmV3TWFza09wdGlvbnMpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU1hc2tJbnN0YW5jZShuZXdNYXNrT3B0aW9ucyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lNYXNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UodmFsdWUpIHtcclxuICAgICAgICAvLyB0aGlzIGlzIGludGVudGlvbmFsXHJcbiAgICB9XHJcblxyXG4gICAgb25Ub3VjaGVkKCkge1xyXG4gICAgICAgIC8vIHRoaXMgaXMgaW50ZW50aW9uYWxcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGVja0N1c3RvbVRvb2x0aXAoKTtcclxuICAgIH1cclxuXHJcbiAgICB3cml0ZVRvRWxlbWVudCh2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tYXNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWFza1ZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy53cml0ZVRvRWxlbWVudCh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICBzZXREaXNhYmxlZFN0YXRlKHN0YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHN0YXRlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnVpU3RhdGVzLmlzRm9jdXNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnVpU3RhdGVzLmlzRm9jdXNlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQmx1cigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnVpU3RhdGVzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICAgICAgdGhpcy5ibHVyLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblRvb2x0aXBDbGljayhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsZWFyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaGlkZVRvb2x0aXAoKSB7XHJcbiAgICAgICAgdGhpcy50b29sdGlwVmlzaWJpbGl0eVRpbWVvdXQgPSB0cnVlO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudG9vbHRpcFZpc2liaWxpdHlUaW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVpU3RhdGVzLmlzVG9vbHRpcFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDI1KTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93VG9vbHRpcCgpIHtcclxuICAgICAgICB0aGlzLnVpU3RhdGVzLmlzVG9vbHRpcFZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudG9vbHRpcFZpc2liaWxpdHlUaW1lb3V0ID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ29tcG9zaXRpb24gaGFuZGxpbmcgaXMgdGFrZW4gZnJvbTpcclxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi8xMS4wLjMvcGFja2FnZXMvZm9ybXMvc3JjL2RpcmVjdGl2ZXMvZGVmYXVsdF92YWx1ZV9hY2Nlc3Nvci50cyNMMTUyXHJcbiAgICBfY29tcG9zaXRpb25TdGFydCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9jb21wb3NpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIF9jb21wb3NpdGlvbkVuZCh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fY29tcG9zaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvc2l0aW9uTW9kZSkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlUHJlZml4KHZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJlxyXG4gICAgICAgICAgICB2YWx1ZS5pbmRleE9mKHRoaXMucHJlZml4KSA9PT0gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSh0aGlzLnByZWZpeCwgJycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVNYXNrSW5zdGFuY2Uob3B0czogYW55KSB7XHJcbiAgICAgICAgdGhpcy5pTWFzayA9IG5ldyBJTWFzay5JbnB1dE1hc2soXHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgIG9wdHNcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVzdHJveU1hc2soKSB7XHJcbiAgICAgICAgdGhpcy5pTWFzaz8uZGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMuaU1hc2sgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tDdXN0b21Ub29sdGlwKCkge1xyXG4gICAgICAgIHRoaXMudWlTdGF0ZXMuaGFzQ3VzdG9tVG9vbHRpcCA9IHRoaXMudG9vbHRpcEVsZW1lbnQgJiZcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5uYXRpdmVFbGVtZW50ICYmXHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAwO1xyXG4gICAgICAgIHRoaXMuY3VzdG9tVG9vbHRpcENoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm1hc2tWYWxpZGF0aW9uICYmIHRoaXMubWFzayAmJiAhdGhpcy5pTWFzay5tYXNrZWQuaXNDb21wbGV0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyBtYXNrOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59XHJcbiIsIjxsYWJlbCBjbGFzcz1cImV2by1pbnB1dFwiIFtldm9VaUNsYXNzXT1cImlucHV0Q2xhc3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXZvLWlucHV0X19wcmVmaXgtY29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXZvSW5wdXRQcmVmaXhDb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZXZvLWlucHV0X19wcmVmaXgtaWNvblwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXZvSW5wdXRJY29uXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImV2by1pbnB1dF9fcHJlZml4XCIgKm5nSWY9XCJwcmVmaXhcIlxuICAgICAgICBbZXZvVWlDbGFzc109XCJ7Zm9jdXNlZDogIWlzRGlzYWJsZWQgJiYgISF2YWx1ZSB8fCB1aVN0YXRlcy5pc0ZvY3VzZWQgfVwiXG4gICAgPnt7cHJlZml4fX08L3NwYW4+XG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBjbGFzcz1cImV2by1pbnB1dF9fZmllbGRcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAoY29tcG9zaXRpb25zdGFydCk9XCJfY29tcG9zaXRpb25TdGFydCgpXCJcbiAgICAgICAgKGNvbXBvc2l0aW9uZW5kKT1cIl9jb21wb3NpdGlvbkVuZCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgIHR5cGU9XCJ7eyB0eXBlIH19XCJcbiAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICBbYXR0ci5kYXRhLWNwXT1cImRhdGFDcFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICA+XG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmc7IGVsc2Ugc2lkZUJsb2NrXCIgY2xhc3M9XCJldm8taW5wdXRfX2xvYWRpbmctc3Bpbm5lclwiPjwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjc2lkZUJsb2NrPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImlzQ2xlYXJhYmxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXZvLWlucHV0X19jbGVhcmFibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiPlxuICAgICAgICAgICAgPGV2by1pY29uIHNoYXBlPVwiZGVjbGluZVwiIGNsYXNzPVwiZXZvLWlucHV0X19pY29uLWNsZWFyXCI+PC9ldm8taWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldm8taW5wdXRfX2FkZGl0aW9uYWxcIiAqbmdJZj1cImhhc0FkZGl0aW9uYWxcIj5cbiAgICAgICAgICAgIDxldm8taWNvblxuICAgICAgICAgICAgICAgIHNoYXBlPVwiaGVscFwiIGNsYXNzPVwiZXZvLWlucHV0X190b29sdGlwXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRvb2x0aXAgfHwgdWlTdGF0ZXMuaGFzQ3VzdG9tVG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2hvd1Rvb2x0aXAoKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9vbHRpcENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZXZvLWljb24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZvLWlucHV0X19pY29uXCIgKm5nSWY9XCJpY29uXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbYXR0ci5zcmNdPVwiaWNvblwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFjdXN0b21Ub29sdGlwQ2hlY2tlZCB8fCB1aVN0YXRlcy5pc1Rvb2x0aXBWaXNpYmxlXCJcbiAgICAgICAgW2hpZGRlbl09XCIhY3VzdG9tVG9vbHRpcENoZWNrZWRcIlxuICAgICAgICAoY2xpY2spPVwib25Ub29sdGlwQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dUb29sdGlwKClcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJoaWRlVG9vbHRpcCgpXCJcbiAgICAgICAgI3Rvb2x0aXBDb250YWluZXJcbiAgICAgICAgW25nQ2xhc3NdPVwieydldm8taW5wdXRfX3Rvb2x0aXAtY29udGFpbmVyJzogdG9vbHRpcH1cIlxuICAgID5cbiAgICAgICAge3sgdG9vbHRpcCB9fVxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9vbHRpcF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L2xhYmVsPlxuPGV2by1jb250cm9sLWVycm9yXG4gICAgKm5nSWY9XCJzaG93RXJyb3JzXCJcbiAgICBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCJcbiAgICBbZXJyb3JzTWVzc2FnZXNdPVwiZXJyb3JzTWVzc2FnZXNcIlxuPjwvZXZvLWNvbnRyb2wtZXJyb3I+XG4iXX0=
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.detectChanges();
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 ?? '';
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
+ this.changeDetector.detectChanges();
208
+ }
209
+ onFocus() {
210
+ if (!this.uiStates.isFocused) {
211
+ this.uiStates.isFocused = true;
212
+ }
213
+ }
214
+ onBlur() {
215
+ this.uiStates.isFocused = false;
216
+ this.onTouched();
217
+ this.blur.emit();
218
+ }
219
+ onTooltipClick(event) {
220
+ event.preventDefault();
221
+ event.stopPropagation();
222
+ }
223
+ onClear() {
224
+ this.writeValue('');
225
+ }
226
+ hideTooltip() {
227
+ this.tooltipVisibilityTimeout = true;
228
+ setTimeout(() => {
229
+ if (this.tooltipVisibilityTimeout) {
230
+ this.uiStates.isTooltipVisible = false;
231
+ }
232
+ }, 25);
233
+ }
234
+ showTooltip() {
235
+ this.uiStates.isTooltipVisible = true;
236
+ this.tooltipVisibilityTimeout = false;
237
+ }
238
+ // Composition handling is taken from:
239
+ // https://github.com/angular/angular/blob/11.0.3/packages/forms/src/directives/default_value_accessor.ts#L152
240
+ _compositionStart() {
241
+ this._composing = true;
242
+ }
243
+ _compositionEnd(value) {
244
+ this._composing = false;
245
+ if (this._compositionMode) {
246
+ this.value = value;
247
+ }
248
+ }
249
+ removePrefix(value) {
250
+ if (typeof value === 'string' &&
251
+ value.indexOf(this.prefix) === 0) {
252
+ return value.replace(this.prefix, '');
253
+ }
254
+ return value;
255
+ }
256
+ createMaskInstance(opts) {
257
+ this.iMask = new IMask.InputMask(this.inputElement.nativeElement, opts);
258
+ }
259
+ destroyMask() {
260
+ this.iMask?.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: "13.4.0", 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: "13.4.0", 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%}}@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:400;font-size:var(--evo-input-font-size);font-family:var(--evo-font);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,.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: "13.4.0", ngImport: i0, type: EvoInputComponent, decorators: [{
291
+ type: Component,
292
+ args: [{ selector: 'evo-input', providers: [
293
+ {
294
+ provide: NG_VALUE_ACCESSOR,
295
+ useExisting: forwardRef(() => EvoInputComponent),
296
+ multi: true,
297
+ },
298
+ {
299
+ provide: NG_VALIDATORS,
300
+ useExisting: forwardRef(() => EvoInputComponent),
301
+ multi: true,
302
+ },
303
+ ], 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%}}@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:400;font-size:var(--evo-input-font-size);font-family:var(--evo-font);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,.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"] }]
304
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
305
+ type: Optional
306
+ }, {
307
+ type: Inject,
308
+ args: [COMPOSITION_BUFFER_MODE]
309
+ }] }, { type: i0.Injector }]; }, propDecorators: { autoFocus: [{
310
+ type: Input
311
+ }], dataCp: [{
312
+ type: Input,
313
+ args: ['data-cp']
314
+ }], icon: [{
315
+ type: Input
316
+ }], mask: [{
317
+ type: Input
318
+ }], placeholder: [{
319
+ type: Input
320
+ }], tooltip: [{
321
+ type: Input
322
+ }], type: [{
323
+ type: Input
324
+ }], disabled: [{
325
+ type: Input
326
+ }], loading: [{
327
+ type: Input
328
+ }], prefix: [{
329
+ type: Input
330
+ }], autocomplete: [{
331
+ type: Input
332
+ }], inputDebounce: [{
333
+ type: Input
334
+ }], unmask: [{
335
+ type: Input
336
+ }], clearable: [{
337
+ type: Input
338
+ }], maskValidation: [{
339
+ type: Input
340
+ }], blur: [{
341
+ type: Output
342
+ }], inputElement: [{
343
+ type: ViewChild,
344
+ args: ['input', { static: true }]
345
+ }], tooltipElement: [{
346
+ type: ViewChild,
347
+ args: ['tooltipContainer', { static: true }]
348
+ }], setValue: [{
349
+ type: Input,
350
+ args: ['value']
351
+ }], setSize: [{
352
+ type: Input,
353
+ args: ['size']
354
+ }], setTheme: [{
355
+ type: Input,
356
+ args: ['theme']
357
+ }] } });
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZvLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V2by11aS1raXQvc3JjL2xpYi9jb21wb25lbnRzL2V2by1pbnB1dC9ldm8taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXZvLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZXZvLWlucHV0L2V2by1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUVOLEtBQUssRUFLTCxRQUFRLEVBQ1IsTUFBTSxFQUdOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLGFBQWEsRUFDYixpQkFBaUIsR0FFcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQUNoRyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQzs7Ozs7O0FBRS9CLE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsZ0NBQWUsQ0FBQTtJQUNmLGtDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxX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IENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENPTVBPU0lUSU9OX0JVRkZFUl9NT0RFLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0V2b0NvbnRyb2xTdGF0ZXN9IGZyb20gJy4uLy4uL2NvbW1vbi9ldm8tY29udHJvbC1zdGF0ZS1tYW5hZ2VyL2V2by1jb250cm9sLXN0YXRlcy5lbnVtJztcbmltcG9ydCB7RXZvQmFzZUNvbnRyb2x9IGZyb20gJy4uLy4uL2NvbW1vbi9ldm8tYmFzZS1jb250cm9sJztcbmltcG9ydCB7ZnJvbUV2ZW50LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2VudGVyWm9uZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIElNYXNrIGZyb20gJ2ltYXNrJztcblxuZXhwb3J0IGVudW0gRXZvSW5wdXRTaXplcyB7XG4gICAgc21hbGwgPSAnc21hbGwnLFxuICAgIG5vcm1hbCA9ICdub3JtYWwnLFxufVxuXG5leHBvcnQgZW51bSBFdm9JbnB1dFRoZW1lIHtcbiAgICBkZWZhdWx0ID0gJ2RlZmF1bHQnLFxuICAgIHJvdW5kZWQgPSAncm91bmRlZCcsXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXZvLWlucHV0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXZvLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9ldm8taW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFdm9JbnB1dENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEV2b0lucHV0Q29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRXZvSW5wdXRDb21wb25lbnRcbiAgICBleHRlbmRzIEV2b0Jhc2VDb250cm9sXG4gICAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgVmFsaWRhdG9yIHtcblxuICAgIEBJbnB1dCgpIGF1dG9Gb2N1czogYm9vbGVhbjtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICBASW5wdXQoJ2RhdGEtY3AnKSBkYXRhQ3A6IHN0cmluZztcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmc7XG4gICAgQElucHV0KCkgbWFzazogYW55O1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdG9vbHRpcDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHR5cGUgPSAndGV4dCc7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHJlZml4ID0gJyc7XG4gICAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW5wdXREZWJvdW5jZSA9IDUwO1xuICAgIEBJbnB1dCgpIHVubWFzazogYm9vbGVhbiB8ICd0eXBlZCcgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjbGVhcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBtYXNrVmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gICAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcsIHtzdGF0aWM6IHRydWV9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgndG9vbHRpcENvbnRhaW5lcicsIHtzdGF0aWM6IHRydWV9KSB0b29sdGlwRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIHNpemU6IEV2b0lucHV0U2l6ZXMgPSBFdm9JbnB1dFNpemVzLm5vcm1hbDtcbiAgICB0aGVtZTogRXZvSW5wdXRUaGVtZSA9IEV2b0lucHV0VGhlbWUuZGVmYXVsdDtcbiAgICBfdmFsdWU6IHN0cmluZztcbiAgICBjdXN0b21Ub29sdGlwQ2hlY2tlZCA9IGZhbHNlO1xuICAgIHVpU3RhdGVzID0ge1xuICAgICAgICBoYXNDdXN0b21Ub29sdGlwOiBmYWxzZSxcbiAgICAgICAgaXNUb29sdGlwVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIGlzRm9jdXNlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIHByaXZhdGUgaU1hc2s6IElNYXNrLklucHV0TWFzazxhbnk+O1xuXG4gICAgcHJpdmF0ZSB0b29sdGlwVmlzaWJpbGl0eVRpbWVvdXQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgaXMgY3JlYXRpbmcgYSBjb21wb3NpdGlvbiBzdHJpbmcgKElNRSBldmVudHMpLiAqL1xuICAgIHByaXZhdGUgX2NvbXBvc2luZyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChDT01QT1NJVElPTl9CVUZGRVJfTU9ERSkgcHJpdmF0ZSBfY29tcG9zaXRpb25Nb2RlOiBib29sZWFuLFxuICAgICAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgQElucHV0KCd2YWx1ZScpIHNldCBzZXRWYWx1ZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgnc2l6ZScpIHNldCBzZXRTaXplKHNpemU6IEV2b0lucHV0U2l6ZXMgfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKEV2b0lucHV0U2l6ZXNbc2l6ZV0pIHtcbiAgICAgICAgICAgIHRoaXMuc2l6ZSA9IEV2b0lucHV0U2l6ZXNbc2l6ZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoJ3RoZW1lJykgc2V0IHNldFRoZW1lKHRoZW1lOiBzdHJpbmcgfCBFdm9JbnB1dFRoZW1lKSB7XG4gICAgICAgIGlmIChFdm9JbnB1dFRoZW1lW3RoZW1lXSkge1xuICAgICAgICAgICAgdGhpcy50aGVtZSA9IEV2b0lucHV0VGhlbWVbdGhlbWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlzRGlzYWJsZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHZhbHVlIHx8IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMucmVtb3ZlUHJlZml4KHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5wcmVmaXggKyAodGhpcy5fdmFsdWUgfHwgJycpKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0Q2xhc3MoKTogeyBbY3NzQ2xhc3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnZm9jdXNlZCc6IHRoaXMudWlTdGF0ZXMuaXNGb2N1c2VkLFxuICAgICAgICAgICAgJ2Rpc2FibGVkJzogdGhpcy5pc0Rpc2FibGVkLFxuICAgICAgICAgICAgJ3ZhbGlkJzogdGhpcy5jdXJyZW50U3RhdGVbRXZvQ29udHJvbFN0YXRlcy52YWxpZF0sXG4gICAgICAgICAgICAnaW52YWxpZCc6IHRoaXMuY3VycmVudFN0YXRlW0V2b0NvbnRyb2xTdGF0ZXMuaW52YWxpZF0sXG4gICAgICAgICAgICBbYHNpemUtJHt0aGlzLnNpemV9YF06IHRoaXMuc2l6ZSAhPT0gRXZvSW5wdXRTaXplcy5ub3JtYWwsXG4gICAgICAgICAgICBbYHRoZW1lLSR7dGhpcy50aGVtZX1gXTogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXQgaGFzQWRkaXRpb25hbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50b29sdGlwIHx8IHRoaXMudWlTdGF0ZXMuaGFzQ3VzdG9tVG9vbHRpcCB8fCAhIXRoaXMuaWNvbjtcbiAgICB9XG5cbiAgICBzZXQgbWFza1ZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdmFsdWUgPz8gJyc7XG4gICAgICAgIGlmICh0aGlzLmlNYXNrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy51bm1hc2sgPT09ICd0eXBlZCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlNYXNrLnR5cGVkVmFsdWUgPSBub3JtYWxpemVkVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudW5tYXNrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pTWFzay51bm1hc2tlZFZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlNYXNrLnZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy53cml0ZVRvRWxlbWVudChub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG1hc2tWYWx1ZSgpOiBhbnkge1xuICAgICAgICBpZiAoIXRoaXMuaU1hc2spIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVubWFzayA9PT0gJ3R5cGVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaU1hc2sudHlwZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy51bm1hc2spIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlNYXNrLnVubWFza2VkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuaU1hc2sudmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGlzQ2xlYXJhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jbGVhcmFibGUgJiYgIXRoaXMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG5cbiAgICAgICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcblxuICAgICAgICAgICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlTWFza0luc3RhbmNlKHRoaXMubWFzayk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZyb21FdmVudChpbnB1dEVsLCAnaW5wdXQnKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5pbnB1dERlYm91bmNlKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChlOiBJbnB1dEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pTWFzaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm1hc2tWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBlbnRlclpvbmUodGhpcy56b25lKSxcbiAgICAgICAgICAgICAgICAgICAgdGFwKCh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmICh0aGlzLmlNYXNrKSB7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3lNYXNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmICghY2hhbmdlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge21hc2t9ID0gY2hhbmdlcztcblxuICAgICAgICBpZiAobWFzayAmJiAhbWFzay5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgbmV3TWFza09wdGlvbnMgPSBtYXNrLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGlmIChuZXdNYXNrT3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlNYXNrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaU1hc2sudXBkYXRlT3B0aW9ucyhuZXdNYXNrT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVNYXNrSW5zdGFuY2UobmV3TWFza09wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TWFzaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DaGFuZ2UodmFsdWUpIHtcbiAgICAgICAgLy8gdGhpcyBpcyBpbnRlbnRpb25hbFxuICAgIH1cblxuICAgIG9uVG91Y2hlZCgpIHtcbiAgICAgICAgLy8gdGhpcyBpcyBpbnRlbnRpb25hbFxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGVja0N1c3RvbVRvb2x0aXAoKTtcbiAgICB9XG5cbiAgICB3cml0ZVRvRWxlbWVudCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLm1hc2spIHtcbiAgICAgICAgICAgIHRoaXMubWFza1ZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVG9FbGVtZW50KHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoc3RhdGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHN0YXRlO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudWlTdGF0ZXMuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnVpU3RhdGVzLmlzRm9jdXNlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudWlTdGF0ZXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMuYmx1ci5lbWl0KCk7XG4gICAgfVxuXG4gICAgb25Ub29sdGlwQ2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBvbkNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUoJycpO1xuICAgIH1cblxuICAgIGhpZGVUb29sdGlwKCkge1xuICAgICAgICB0aGlzLnRvb2x0aXBWaXNpYmlsaXR5VGltZW91dCA9IHRydWU7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50b29sdGlwVmlzaWJpbGl0eVRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVpU3RhdGVzLmlzVG9vbHRpcFZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMjUpO1xuICAgIH1cblxuICAgIHNob3dUb29sdGlwKCkge1xuICAgICAgICB0aGlzLnVpU3RhdGVzLmlzVG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLnRvb2x0aXBWaXNpYmlsaXR5VGltZW91dCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENvbXBvc2l0aW9uIGhhbmRsaW5nIGlzIHRha2VuIGZyb206XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzExLjAuMy9wYWNrYWdlcy9mb3Jtcy9zcmMvZGlyZWN0aXZlcy9kZWZhdWx0X3ZhbHVlX2FjY2Vzc29yLnRzI0wxNTJcbiAgICBfY29tcG9zaXRpb25TdGFydCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29tcG9zaW5nID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBfY29tcG9zaXRpb25FbmQodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb21wb3NpbmcgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvc2l0aW9uTW9kZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVQcmVmaXgodmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIHZhbHVlLmluZGV4T2YodGhpcy5wcmVmaXgpID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UodGhpcy5wcmVmaXgsICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVNYXNrSW5zdGFuY2Uob3B0czogYW55KSB7XG4gICAgICAgIHRoaXMuaU1hc2sgPSBuZXcgSU1hc2suSW5wdXRNYXNrKFxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIG9wdHNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lNYXNrKCkge1xuICAgICAgICB0aGlzLmlNYXNrPy5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuaU1hc2sgPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tDdXN0b21Ub29sdGlwKCkge1xuICAgICAgICB0aGlzLnVpU3RhdGVzLmhhc0N1c3RvbVRvb2x0aXAgPSB0aGlzLnRvb2x0aXBFbGVtZW50ICYmXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAwO1xuICAgICAgICB0aGlzLmN1c3RvbVRvb2x0aXBDaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1hc2tWYWxpZGF0aW9uICYmIHRoaXMubWFzayAmJiAhdGhpcy5pTWFzay5tYXNrZWQuaXNDb21wbGV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgbWFzazogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiIsIjxsYWJlbCBjbGFzcz1cImV2by1pbnB1dFwiIFtldm9VaUNsYXNzXT1cImlucHV0Q2xhc3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXZvLWlucHV0X19wcmVmaXgtY29udGVudFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXZvSW5wdXRQcmVmaXhDb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZXZvLWlucHV0X19wcmVmaXgtaWNvblwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZXZvSW5wdXRJY29uXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImV2by1pbnB1dF9fcHJlZml4XCIgKm5nSWY9XCJwcmVmaXhcIlxuICAgICAgICBbZXZvVWlDbGFzc109XCJ7Zm9jdXNlZDogIWlzRGlzYWJsZWQgJiYgISF2YWx1ZSB8fCB1aVN0YXRlcy5pc0ZvY3VzZWQgfVwiXG4gICAgPnt7cHJlZml4fX08L3NwYW4+XG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBjbGFzcz1cImV2by1pbnB1dF9fZmllbGRcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAoY29tcG9zaXRpb25zdGFydCk9XCJfY29tcG9zaXRpb25TdGFydCgpXCJcbiAgICAgICAgKGNvbXBvc2l0aW9uZW5kKT1cIl9jb21wb3NpdGlvbkVuZCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgIHR5cGU9XCJ7eyB0eXBlIH19XCJcbiAgICAgICAgW2F0dHIuYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICBbYXR0ci5kYXRhLWNwXT1cImRhdGFDcFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICA+XG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmc7IGVsc2Ugc2lkZUJsb2NrXCIgY2xhc3M9XCJldm8taW5wdXRfX2xvYWRpbmctc3Bpbm5lclwiPjwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjc2lkZUJsb2NrPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImlzQ2xlYXJhYmxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXZvLWlucHV0X19jbGVhcmFibGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYXIoKVwiPlxuICAgICAgICAgICAgPGV2by1pY29uIHNoYXBlPVwiZGVjbGluZVwiIGNsYXNzPVwiZXZvLWlucHV0X19pY29uLWNsZWFyXCI+PC9ldm8taWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldm8taW5wdXRfX2FkZGl0aW9uYWxcIiAqbmdJZj1cImhhc0FkZGl0aW9uYWxcIj5cbiAgICAgICAgICAgIDxldm8taWNvblxuICAgICAgICAgICAgICAgIHNoYXBlPVwiaGVscFwiIGNsYXNzPVwiZXZvLWlucHV0X190b29sdGlwXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRvb2x0aXAgfHwgdWlTdGF0ZXMuaGFzQ3VzdG9tVG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2hvd1Rvb2x0aXAoKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9vbHRpcENsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgPjwvZXZvLWljb24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZvLWlucHV0X19pY29uXCIgKm5nSWY9XCJpY29uXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbYXR0ci5zcmNdPVwiaWNvblwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFjdXN0b21Ub29sdGlwQ2hlY2tlZCB8fCB1aVN0YXRlcy5pc1Rvb2x0aXBWaXNpYmxlXCJcbiAgICAgICAgW2hpZGRlbl09XCIhY3VzdG9tVG9vbHRpcENoZWNrZWRcIlxuICAgICAgICAoY2xpY2spPVwib25Ub29sdGlwQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dUb29sdGlwKClcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJoaWRlVG9vbHRpcCgpXCJcbiAgICAgICAgI3Rvb2x0aXBDb250YWluZXJcbiAgICAgICAgW25nQ2xhc3NdPVwieydldm8taW5wdXRfX3Rvb2x0aXAtY29udGFpbmVyJzogdG9vbHRpcH1cIlxuICAgID5cbiAgICAgICAge3sgdG9vbHRpcCB9fVxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbdG9vbHRpcF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L2xhYmVsPlxuPGV2by1jb250cm9sLWVycm9yXG4gICAgKm5nSWY9XCJzaG93RXJyb3JzXCJcbiAgICBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCJcbiAgICBbZXJyb3JzTWVzc2FnZXNdPVwiZXJyb3JzTWVzc2FnZXNcIlxuPjwvZXZvLWNvbnRyb2wtZXJyb3I+XG4iXX0=