@ardium-ui/ui 1.0.2 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/esm2022/lib/_internal/boolean-component.mjs +28 -42
  2. package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +5 -5
  3. package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +4 -4
  4. package/esm2022/lib/_internal/disablable-component.mjs +24 -22
  5. package/esm2022/lib/_internal/focusable-component.mjs +12 -25
  6. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +172 -169
  7. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +115 -120
  8. package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +56 -53
  9. package/esm2022/lib/_internal/models/pagination.model.mjs +72 -106
  10. package/esm2022/lib/_internal/ngmodel-component.mjs +5 -5
  11. package/esm2022/lib/_internal/queue.mjs +1 -1
  12. package/esm2022/lib/_internal/selectable-list-component.mjs +74 -98
  13. package/esm2022/lib/badge/badge.directive.mjs +70 -99
  14. package/esm2022/lib/badge/badge.module.mjs +4 -4
  15. package/esm2022/lib/badge/index.mjs +4 -0
  16. package/esm2022/lib/buttons/_button-base.mjs +13 -35
  17. package/esm2022/lib/buttons/button/button.component.mjs +22 -37
  18. package/esm2022/lib/buttons/button/button.module.mjs +4 -4
  19. package/esm2022/lib/buttons/button/index.mjs +3 -0
  20. package/esm2022/lib/buttons/fab/fab.component.mjs +16 -28
  21. package/esm2022/lib/buttons/fab/fab.module.mjs +4 -4
  22. package/esm2022/lib/buttons/fab/index.mjs +3 -0
  23. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +17 -25
  24. package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +4 -4
  25. package/esm2022/lib/buttons/icon-button/index.mjs +3 -0
  26. package/esm2022/lib/card/card.children.mjs +32 -33
  27. package/esm2022/lib/card/card.component.mjs +14 -17
  28. package/esm2022/lib/card/card.module.mjs +4 -4
  29. package/esm2022/lib/card/index.mjs +5 -0
  30. package/esm2022/lib/checkbox/checkbox.component.mjs +33 -46
  31. package/esm2022/lib/checkbox/checkbox.module.mjs +4 -4
  32. package/esm2022/lib/checkbox/index.mjs +4 -0
  33. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +31 -57
  34. package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +4 -4
  35. package/esm2022/lib/checkbox-list/index.mjs +4 -0
  36. package/esm2022/lib/chip/chip.component.mjs +22 -42
  37. package/esm2022/lib/chip/chip.module.mjs +4 -4
  38. package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +28 -53
  39. package/esm2022/lib/chip/index.mjs +5 -0
  40. package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +25 -49
  41. package/esm2022/lib/color/color-display/color-display.component.mjs +15 -32
  42. package/esm2022/lib/color/color-display/color-display.module.mjs +4 -4
  43. package/esm2022/lib/color/color-display/index.mjs +4 -0
  44. package/esm2022/lib/color/color-picker/color-picker.types.mjs +1 -1
  45. package/esm2022/lib/dialog/dialog.component.mjs +54 -130
  46. package/esm2022/lib/dialog/dialog.directives.mjs +3 -3
  47. package/esm2022/lib/dialog/dialog.module.mjs +4 -4
  48. package/esm2022/lib/dialog/dialog.types.mjs +1 -1
  49. package/esm2022/lib/dialog/index.mjs +5 -0
  50. package/esm2022/lib/divider/divider.component.mjs +9 -14
  51. package/esm2022/lib/divider/divider.module.mjs +4 -4
  52. package/esm2022/lib/divider/index.mjs +3 -0
  53. package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +40 -59
  54. package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +4 -4
  55. package/esm2022/lib/dropdown-panel/index.mjs +4 -0
  56. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +12 -17
  57. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +9 -9
  58. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +6 -6
  59. package/esm2022/lib/file-inputs/file-drop-area/index.mjs +4 -0
  60. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +24 -50
  61. package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +18 -18
  62. package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +4 -4
  63. package/esm2022/lib/file-inputs/file-input/index.mjs +4 -0
  64. package/esm2022/lib/file-inputs/file-input-base.mjs +38 -72
  65. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +20 -47
  66. package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +6 -6
  67. package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +4 -4
  68. package/esm2022/lib/form-field-frame/index.mjs +4 -0
  69. package/esm2022/lib/icon/icon.component.mjs +32 -67
  70. package/esm2022/lib/icon/icon.module.mjs +4 -4
  71. package/esm2022/lib/icon/icon.pipe.mjs +3 -3
  72. package/esm2022/lib/icon/index.mjs +4 -0
  73. package/esm2022/lib/inputs/color-input/color-input.directives.mjs +24 -24
  74. package/esm2022/lib/inputs/color-input/color-input.types.mjs +1 -1
  75. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +65 -115
  76. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +83 -92
  77. package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +4 -4
  78. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
  79. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
  80. package/esm2022/lib/inputs/digit-input/index.mjs +4 -0
  81. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +59 -122
  82. package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +9 -9
  83. package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +24 -8
  84. package/esm2022/lib/inputs/hex-input/index.mjs +4 -0
  85. package/esm2022/lib/inputs/hex-input.model.mjs +24 -33
  86. package/esm2022/lib/inputs/input/index.mjs +4 -0
  87. package/esm2022/lib/inputs/input/input.component.mjs +95 -154
  88. package/esm2022/lib/inputs/input/input.directives.mjs +16 -16
  89. package/esm2022/lib/inputs/input/input.module.mjs +21 -7
  90. package/esm2022/lib/inputs/input-transformers.mjs +6 -6
  91. package/esm2022/lib/inputs/input-utils.mjs +75 -94
  92. package/esm2022/lib/inputs/number-input/index.mjs +4 -0
  93. package/esm2022/lib/inputs/number-input/number-input.component.mjs +106 -170
  94. package/esm2022/lib/inputs/number-input/number-input.directives.mjs +3 -3
  95. package/esm2022/lib/inputs/number-input/number-input.module.mjs +4 -4
  96. package/esm2022/lib/inputs/password-input/index.mjs +5 -0
  97. package/esm2022/lib/inputs/password-input/password-input.component.mjs +74 -144
  98. package/esm2022/lib/inputs/password-input/password-input.directives.mjs +12 -12
  99. package/esm2022/lib/inputs/password-input/password-input.module.mjs +4 -4
  100. package/esm2022/lib/inputs/password-input/password-input.types.mjs +1 -1
  101. package/esm2022/lib/inputs/simple-input/index.mjs +4 -0
  102. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +57 -110
  103. package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +9 -9
  104. package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +4 -4
  105. package/esm2022/lib/kbd/index.mjs +4 -0
  106. package/esm2022/lib/kbd/kbd.component.mjs +15 -29
  107. package/esm2022/lib/kbd/kbd.module.mjs +4 -4
  108. package/esm2022/lib/kbd/kbd.pipe.mjs +3 -3
  109. package/esm2022/lib/kbd-shortcut/index.mjs +3 -0
  110. package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +23 -40
  111. package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +4 -4
  112. package/esm2022/lib/modal/index.mjs +3 -0
  113. package/esm2022/lib/modal/modal.component.mjs +42 -83
  114. package/esm2022/lib/modal/modal.module.mjs +4 -4
  115. package/esm2022/lib/option/index.mjs +3 -0
  116. package/esm2022/lib/option/option.component.mjs +24 -46
  117. package/esm2022/lib/option/option.module.mjs +4 -4
  118. package/esm2022/lib/progress-bar/index.mjs +5 -0
  119. package/esm2022/lib/progress-bar/progress-bar.component.mjs +43 -81
  120. package/esm2022/lib/progress-bar/progress-bar.directive.mjs +3 -3
  121. package/esm2022/lib/progress-bar/progress-bar.module.mjs +4 -4
  122. package/esm2022/lib/progress-bar/progress-bar.types.mjs +1 -1
  123. package/esm2022/lib/progress-circle/index.mjs +5 -0
  124. package/esm2022/lib/progress-circle/progress-circle.component.mjs +33 -78
  125. package/esm2022/lib/progress-circle/progress-circle.directive.mjs +3 -3
  126. package/esm2022/lib/progress-circle/progress-circle.module.mjs +4 -4
  127. package/esm2022/lib/progress-circle/progress-circle.types.mjs +1 -1
  128. package/esm2022/lib/radio/index.mjs +4 -0
  129. package/esm2022/lib/radio/radio/radio.component.mjs +16 -25
  130. package/esm2022/lib/radio/radio-group.component.mjs +71 -85
  131. package/esm2022/lib/radio/radio.module.mjs +4 -4
  132. package/esm2022/lib/search-functions.mjs +7 -7
  133. package/esm2022/lib/segment/index.mjs +5 -0
  134. package/esm2022/lib/segment/segment.component.mjs +70 -137
  135. package/esm2022/lib/segment/segment.directives.mjs +4 -4
  136. package/esm2022/lib/segment/segment.module.mjs +4 -4
  137. package/esm2022/lib/select/index.mjs +5 -0
  138. package/esm2022/lib/select/select.component.mjs +348 -655
  139. package/esm2022/lib/select/select.directive.mjs +46 -46
  140. package/esm2022/lib/select/select.module.mjs +4 -4
  141. package/esm2022/lib/select/select.types.mjs +1 -1
  142. package/esm2022/lib/slide-toggle/index.mjs +4 -0
  143. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +19 -24
  144. package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +4 -4
  145. package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +5 -0
  146. package/esm2022/lib/slider/abstract-slider.mjs +111 -200
  147. package/esm2022/lib/slider/index.mjs +7 -0
  148. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +26 -23
  149. package/esm2022/lib/slider/range-slider/range-slider.module.mjs +4 -4
  150. package/esm2022/lib/slider/slider.component.mjs +13 -10
  151. package/esm2022/lib/slider/slider.directive.mjs +3 -3
  152. package/esm2022/lib/slider/slider.module.mjs +7 -7
  153. package/esm2022/lib/slider/slider.types.mjs +1 -1
  154. package/esm2022/lib/snackbar/snackbar-ref.mjs +1 -1
  155. package/esm2022/lib/snackbar/snackbar.component.mjs +8 -8
  156. package/esm2022/lib/snackbar/snackbar.service.mjs +13 -12
  157. package/esm2022/lib/snackbar/snackbar.types.mjs +1 -1
  158. package/esm2022/lib/spinner/index.mjs +3 -0
  159. package/esm2022/lib/spinner/spinner.component.mjs +9 -13
  160. package/esm2022/lib/spinner/spinner.module.mjs +4 -4
  161. package/esm2022/lib/star/index.mjs +4 -0
  162. package/esm2022/lib/star/star-button/index.mjs +3 -0
  163. package/esm2022/lib/star/star-button/star-button.component.mjs +17 -26
  164. package/esm2022/lib/star/star-button/star-button.module.mjs +4 -4
  165. package/esm2022/lib/star/star-display/index.mjs +3 -0
  166. package/esm2022/lib/star/star-display/star-display.component.mjs +48 -55
  167. package/esm2022/lib/star/star-display/star-display.module.mjs +4 -4
  168. package/esm2022/lib/star/star-input/index.mjs +3 -0
  169. package/esm2022/lib/star/star-input/star-input.component.mjs +70 -106
  170. package/esm2022/lib/star/star-input/star-input.module.mjs +4 -4
  171. package/esm2022/lib/star/star.component.mjs +12 -20
  172. package/esm2022/lib/star/star.module.mjs +4 -4
  173. package/esm2022/lib/statebox/index.mjs +3 -0
  174. package/esm2022/lib/statebox/statebox.component.mjs +64 -102
  175. package/esm2022/lib/statebox/statebox.module.mjs +4 -4
  176. package/esm2022/lib/statebox/statebox.types.mjs +1 -1
  177. package/esm2022/lib/tabber/index.mjs +4 -0
  178. package/esm2022/lib/tabber/tab/tab.component.mjs +42 -0
  179. package/esm2022/lib/tabber/tabber.component.mjs +83 -0
  180. package/esm2022/lib/tabber/tabber.module.mjs +19 -0
  181. package/esm2022/lib/table/index.mjs +5 -0
  182. package/esm2022/lib/table/table-item-storage.mjs +204 -200
  183. package/esm2022/lib/table/table.component.mjs +184 -304
  184. package/esm2022/lib/table/table.directives.mjs +19 -21
  185. package/esm2022/lib/table/table.module.mjs +4 -4
  186. package/esm2022/lib/table/utils.mjs +1 -1
  187. package/esm2022/lib/table-from-csv/index.mjs +3 -0
  188. package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +85 -29
  189. package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +4 -4
  190. package/esm2022/lib/table-pagination/index.mjs +4 -0
  191. package/esm2022/lib/table-pagination/table-pagination.component.mjs +46 -114
  192. package/esm2022/lib/table-pagination/table-pagination.module.mjs +4 -4
  193. package/esm2022/lib/types/item-storage.types.mjs +1 -1
  194. package/esm2022/lib/types/utility.types.mjs +2 -2
  195. package/esm2022/public-api.mjs +58 -182
  196. package/fesm2022/ardium-ui-ui.mjs +7847 -11692
  197. package/fesm2022/ardium-ui-ui.mjs.map +1 -1
  198. package/lib/_internal/boolean-component.d.ts +8 -9
  199. package/lib/_internal/clear-button/clear-button.component.d.ts +1 -1
  200. package/lib/_internal/disablable-component.d.ts +12 -7
  201. package/lib/_internal/focusable-component.d.ts +5 -7
  202. package/lib/_internal/item-storages/dropdown-item-storage.d.ts +43 -41
  203. package/lib/_internal/item-storages/simple-item-storage.d.ts +28 -25
  204. package/lib/_internal/item-storages/simplest-item-storage.d.ts +14 -9
  205. package/lib/_internal/models/pagination.model.d.ts +38 -42
  206. package/lib/_internal/ngmodel-component.d.ts +1 -1
  207. package/lib/_internal/selectable-list-component.d.ts +30 -30
  208. package/lib/badge/badge.directive.d.ts +15 -20
  209. package/lib/badge/index.d.ts +3 -0
  210. package/lib/buttons/_button-base.d.ts +9 -12
  211. package/lib/buttons/button/button.component.d.ts +6 -8
  212. package/lib/buttons/button/index.d.ts +2 -0
  213. package/lib/buttons/fab/fab.component.d.ts +4 -6
  214. package/lib/buttons/fab/index.d.ts +2 -0
  215. package/lib/buttons/icon-button/icon-button.component.d.ts +6 -7
  216. package/lib/buttons/icon-button/index.d.ts +2 -0
  217. package/lib/card/card.children.d.ts +4 -3
  218. package/lib/card/card.component.d.ts +5 -4
  219. package/lib/card/index.d.ts +4 -0
  220. package/lib/checkbox/checkbox.component.d.ts +8 -12
  221. package/lib/checkbox/index.d.ts +3 -0
  222. package/lib/checkbox-list/checkbox-list.component.d.ts +22 -21
  223. package/lib/checkbox-list/index.d.ts +3 -0
  224. package/lib/chip/chip.component.d.ts +8 -10
  225. package/lib/chip/deletable-chip/deletable-chip.component.d.ts +11 -14
  226. package/lib/chip/index.d.ts +4 -0
  227. package/lib/chip/selectable-chip/selectable-chip.component.d.ts +10 -12
  228. package/lib/color/color-display/color-display.component.d.ts +6 -9
  229. package/lib/color/color-display/index.d.ts +3 -0
  230. package/lib/color/color-picker/color-picker.types.d.ts +4 -4
  231. package/lib/dialog/dialog.component.d.ts +25 -35
  232. package/lib/dialog/dialog.types.d.ts +2 -2
  233. package/lib/dialog/index.d.ts +4 -0
  234. package/lib/divider/divider.component.d.ts +3 -4
  235. package/lib/divider/index.d.ts +2 -0
  236. package/lib/dropdown-panel/dropdown-panel.component.d.ts +17 -20
  237. package/lib/dropdown-panel/index.d.ts +3 -0
  238. package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +5 -4
  239. package/lib/file-inputs/file-drop-area/index.d.ts +3 -0
  240. package/lib/file-inputs/file-input/file-input.component.d.ts +13 -17
  241. package/lib/file-inputs/file-input/index.d.ts +3 -0
  242. package/lib/file-inputs/file-input-base.d.ts +13 -18
  243. package/lib/form-field-frame/form-field-frame.component.d.ts +12 -16
  244. package/lib/form-field-frame/index.d.ts +3 -0
  245. package/lib/icon/icon.component.d.ts +10 -19
  246. package/lib/icon/index.d.ts +3 -0
  247. package/lib/inputs/color-input/color-input.types.d.ts +2 -2
  248. package/lib/inputs/digit-input/digit-input.component.d.ts +22 -30
  249. package/lib/inputs/digit-input/digit-input.model.d.ts +8 -12
  250. package/lib/inputs/digit-input/digit-input.types.d.ts +4 -4
  251. package/lib/inputs/digit-input/digit-input.utils.d.ts +4 -5
  252. package/lib/inputs/digit-input/index.d.ts +3 -0
  253. package/lib/inputs/hex-input/hex-input.component.d.ts +32 -38
  254. package/lib/inputs/hex-input/index.d.ts +3 -0
  255. package/lib/inputs/hex-input.model.d.ts +10 -11
  256. package/lib/inputs/input/index.d.ts +3 -0
  257. package/lib/inputs/input/input.component.d.ts +34 -40
  258. package/lib/inputs/input/input.directives.d.ts +3 -3
  259. package/lib/inputs/input-utils.d.ts +24 -27
  260. package/lib/inputs/number-input/index.d.ts +3 -0
  261. package/lib/inputs/number-input/number-input.component.d.ts +38 -48
  262. package/lib/inputs/password-input/index.d.ts +4 -0
  263. package/lib/inputs/password-input/password-input.component.d.ts +28 -40
  264. package/lib/inputs/password-input/password-input.types.d.ts +2 -2
  265. package/lib/inputs/simple-input/index.d.ts +3 -0
  266. package/lib/inputs/simple-input/simple-input.component.d.ts +30 -35
  267. package/lib/kbd/index.d.ts +3 -0
  268. package/lib/kbd/kbd.component.d.ts +6 -8
  269. package/lib/kbd-shortcut/index.d.ts +2 -0
  270. package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +7 -10
  271. package/lib/modal/index.d.ts +2 -0
  272. package/lib/modal/modal.component.d.ts +22 -30
  273. package/lib/option/index.d.ts +2 -0
  274. package/lib/option/option.component.d.ts +11 -16
  275. package/lib/progress-bar/index.d.ts +4 -0
  276. package/lib/progress-bar/progress-bar.component.d.ts +14 -20
  277. package/lib/progress-bar/progress-bar.types.d.ts +2 -2
  278. package/lib/progress-circle/index.d.ts +4 -0
  279. package/lib/progress-circle/progress-circle.component.d.ts +12 -20
  280. package/lib/progress-circle/progress-circle.types.d.ts +2 -2
  281. package/lib/radio/index.d.ts +3 -0
  282. package/lib/radio/radio/radio.component.d.ts +7 -8
  283. package/lib/radio/radio-group.component.d.ts +13 -16
  284. package/lib/segment/index.d.ts +4 -0
  285. package/lib/segment/segment.component.d.ts +22 -34
  286. package/lib/segment/segment.directives.d.ts +2 -3
  287. package/lib/select/index.d.ts +4 -0
  288. package/lib/select/select.component.d.ts +114 -160
  289. package/lib/select/select.directive.d.ts +3 -3
  290. package/lib/select/select.types.d.ts +2 -76
  291. package/lib/slide-toggle/index.d.ts +3 -0
  292. package/lib/slide-toggle/slide-toggle.component.d.ts +9 -7
  293. package/lib/slide-toggle/slide-toggle.types.d.ts +5 -0
  294. package/lib/slider/abstract-slider.d.ts +38 -55
  295. package/lib/slider/index.d.ts +6 -0
  296. package/lib/slider/range-slider/range-slider.component.d.ts +3 -1
  297. package/lib/slider/slider.component.d.ts +2 -0
  298. package/lib/slider/slider.types.d.ts +8 -8
  299. package/lib/snackbar/snackbar-ref.d.ts +1 -2
  300. package/lib/snackbar/snackbar.component.d.ts +3 -3
  301. package/lib/snackbar/snackbar.service.d.ts +2 -2
  302. package/lib/snackbar/snackbar.types.d.ts +4 -4
  303. package/lib/spinner/index.d.ts +2 -0
  304. package/lib/spinner/spinner.component.d.ts +3 -3
  305. package/lib/star/index.d.ts +3 -0
  306. package/lib/star/star-button/index.d.ts +2 -0
  307. package/lib/star/star-button/star-button.component.d.ts +7 -7
  308. package/lib/star/star-display/index.d.ts +2 -0
  309. package/lib/star/star-display/star-display.component.d.ts +8 -12
  310. package/lib/star/star-input/index.d.ts +2 -0
  311. package/lib/star/star-input/star-input.component.d.ts +17 -22
  312. package/lib/star/star.component.d.ts +5 -5
  313. package/lib/statebox/index.d.ts +3 -0
  314. package/lib/statebox/statebox.component.d.ts +15 -21
  315. package/lib/statebox/statebox.types.d.ts +12 -8
  316. package/lib/tabber/index.d.ts +3 -0
  317. package/lib/tabber/tab/tab.component.d.ts +18 -0
  318. package/lib/tabber/tabber.component.d.ts +25 -0
  319. package/lib/tabber/tabber.module.d.ts +9 -0
  320. package/lib/table/index.d.ts +4 -0
  321. package/lib/table/table-item-storage.d.ts +70 -58
  322. package/lib/table/table.component.d.ts +59 -78
  323. package/lib/table/table.directives.d.ts +4 -3
  324. package/lib/table-from-csv/index.d.ts +2 -0
  325. package/lib/table-from-csv/table-from-csv.component.d.ts +46 -9
  326. package/lib/table-pagination/index.d.ts +3 -0
  327. package/lib/table-pagination/table-pagination.component.d.ts +21 -30
  328. package/lib/types/item-storage.types.d.ts +19 -18
  329. package/lib/types/utility.types.d.ts +2 -1
  330. package/package.json +8 -9
  331. package/prebuilt-themes/default/badge.css +5 -5
  332. package/prebuilt-themes/default/buttons/fab.css +4 -3
  333. package/prebuilt-themes/default/buttons/fab.css.map +1 -1
  334. package/prebuilt-themes/default/card.css +7 -7
  335. package/prebuilt-themes/default/chips.css +3 -8
  336. package/prebuilt-themes/default/chips.css.map +1 -1
  337. package/prebuilt-themes/default/core.css +6 -3
  338. package/prebuilt-themes/default/core.css.map +1 -1
  339. package/prebuilt-themes/default/inputs/color-input.css +1 -1
  340. package/prebuilt-themes/default/inputs/digit-input.css +1 -1
  341. package/prebuilt-themes/default/inputs/file-input.css +139 -2
  342. package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
  343. package/prebuilt-themes/default/inputs/hex-input.css +2 -2
  344. package/prebuilt-themes/default/inputs/input.css +1 -1
  345. package/prebuilt-themes/default/inputs/search-bar.css +1 -1
  346. package/prebuilt-themes/default/inputs/simple-input.css +1 -1
  347. package/prebuilt-themes/default/modal.css +1 -1
  348. package/prebuilt-themes/default/segment.css +2 -2
  349. package/prebuilt-themes/default/segment.css.map +1 -1
  350. package/prebuilt-themes/default/select.css +5 -3
  351. package/prebuilt-themes/default/select.css.map +1 -1
  352. package/prebuilt-themes/default/snackbar.css +0 -1
  353. package/prebuilt-themes/default/snackbar.css.map +1 -1
  354. package/prebuilt-themes/default/tabber.css +207 -0
  355. package/prebuilt-themes/default/tabber.css.map +1 -0
  356. package/public-api.d.ts +43 -136
  357. package/themes/default/_clear-button.scss +1 -1
  358. package/themes/default/badge.scss +5 -5
  359. package/themes/default/buttons/fab.scss +5 -3
  360. package/themes/default/card.scss +7 -7
  361. package/themes/default/chips.scss +2 -8
  362. package/themes/default/core.scss +6 -3
  363. package/themes/default/inputs/digit-input.scss +1 -1
  364. package/themes/default/inputs/file-input.scss +8 -1
  365. package/themes/default/inputs/hex-input.scss +1 -1
  366. package/themes/default/modal.scss +1 -1
  367. package/themes/default/segment.scss +2 -1
  368. package/themes/default/select.scss +4 -2
  369. package/themes/default/snackbar.scss +0 -2
  370. package/themes/default/tabber.scss +86 -0
  371. package/esm2022/lib/calendar/calendar.component.mjs +0 -979
  372. package/esm2022/lib/calendar/calendar.directives.mjs +0 -107
  373. package/esm2022/lib/calendar/calendar.helpers.mjs +0 -47
  374. package/esm2022/lib/calendar/calendar.module.mjs +0 -21
  375. package/esm2022/lib/calendar/calendar.types.mjs +0 -11
  376. package/esm2022/lib/color/color-picker/color-picker.component.mjs +0 -484
  377. package/esm2022/lib/color/color-picker/color-picker.directives.mjs +0 -55
  378. package/esm2022/lib/color/color-picker/color-picker.module.mjs +0 -43
  379. package/esm2022/lib/inputs/color-input/color-input.component.mjs +0 -421
  380. package/esm2022/lib/inputs/color-input/color-input.module.mjs +0 -85
  381. package/lib/calendar/calendar.component.d.ts +0 -155
  382. package/lib/calendar/calendar.directives.d.ts +0 -51
  383. package/lib/calendar/calendar.helpers.d.ts +0 -15
  384. package/lib/calendar/calendar.module.d.ts +0 -11
  385. package/lib/calendar/calendar.types.d.ts +0 -80
  386. package/lib/color/color-picker/color-picker.component.d.ts +0 -125
  387. package/lib/color/color-picker/color-picker.directives.d.ts +0 -27
  388. package/lib/color/color-picker/color-picker.module.d.ts +0 -13
  389. package/lib/inputs/color-input/color-input.component.d.ts +0 -147
  390. package/lib/inputs/color-input/color-input.module.d.ts +0 -16
@@ -1,170 +1,153 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation, ContentChild, TemplateRef, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, computed, contentChild, effect, forwardRef, input, output, viewChild, } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';
4
- import { ButtonVariant, ButtonAppearance } from '../../buttons/general-button.types';
4
+ import { roundToPrecision } from 'more-rounding';
5
+ import { isDefined } from 'simple-bool';
6
+ import { _NgModelComponentBase } from '../../_internal/ngmodel-component';
7
+ import { ButtonAppearance, ButtonVariant } from '../../buttons/general-button.types';
5
8
  import { OneAxisAlignment } from '../../types/alignment.types';
6
9
  import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
7
- import { _NgModelComponentBase } from '../../_internal/ngmodel-component';
8
10
  import { NumberInputModel } from '../input-utils';
9
- import { isDefined, isFloat } from 'simple-bool';
10
11
  import { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';
11
- import { roundToPrecision } from 'more-rounding';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@angular/common";
14
14
  import * as i2 from "@ardium-ui/devkit";
15
15
  import * as i3 from "../../buttons/button/button.component";
16
16
  export class ArdiumNumberInputComponent extends _NgModelComponentBase {
17
- constructor() {
18
- super(...arguments);
19
- //! placeholder
20
- this.placeholder = '';
21
- //! appearance
22
- this.appearance = FormElementAppearance.Outlined;
23
- this.variant = FormElementVariant.Rounded;
24
- this.alignText = OneAxisAlignment.Middle;
25
- this._compact = false;
26
- //! other inputs
27
- this.inputAttrs = {};
28
- //! value two-way binding
29
- this._valueBeforeInit = '0';
30
- this.valueChange = new EventEmitter();
31
- //* event emitters
32
- this.inputEvent = new EventEmitter();
33
- this.changeEvent = new EventEmitter();
34
- this.clearEvent = new EventEmitter();
35
- this.quickChangeEvent = new EventEmitter();
36
- //! min/max and number type
37
- this._min = 0;
38
- this._max = 999;
39
- this._allowFloat = undefined;
40
- //! incerement/decrement buttons
41
- this._allowQuickChange = true;
42
- this._stepSize = 1;
43
- }
44
- ngOnInit() {
45
- this.inputModel = new NumberInputModel(this.textInputEl.nativeElement, this);
17
+ ngAfterViewInit() {
46
18
  this._setInputAttributes();
19
+ this._wasViewInit = true;
47
20
  //set the value
48
21
  if (this._valueBeforeInit) {
49
22
  this.writeValue(this._valueBeforeInit);
50
23
  delete this._valueBeforeInit;
51
24
  }
52
25
  }
53
- get shouldDisplayPlaceholder() {
54
- return Boolean(this.placeholder) && !this.inputModel.stringValue;
55
- }
56
- get compact() {
57
- return this._compact;
58
- }
59
- set compact(v) {
60
- this._compact = coerceBooleanProperty(v);
61
- }
62
- get ngClasses() {
63
- return [
64
- `ard-appearance-${this.appearance}`,
65
- `ard-variant-${this.variant}`,
66
- `ard-text-align-${this.alignText}`,
67
- `ard-quick-change-${this.allowQuickChange}`,
68
- this.compact ? 'ard-compact' : '',
69
- ].join(' ');
70
- }
71
- get buttonVariant() {
72
- if (this.variant == FormElementVariant.Rounded)
73
- return ButtonVariant.Rounded;
74
- if (this.variant == FormElementVariant.Pill)
75
- return ButtonVariant.Pill;
76
- if (this.variant == FormElementVariant.Sharp)
77
- return ButtonVariant.Sharp;
78
- return ButtonVariant.Rounded;
79
- }
80
- get buttonAppearance() {
81
- if (this.appearance == FormElementAppearance.Outlined && this.variant != FormElementVariant.Pill)
82
- return ButtonAppearance.Outlined;
83
- return ButtonAppearance.Transparent;
84
- }
85
26
  //! control value accessor's write value implementation
86
27
  writeValue(v) {
87
28
  this.inputModel.writeValue(v);
88
29
  }
89
30
  set value(v) {
90
- if (typeof v == 'number')
31
+ if (typeof v === 'number')
91
32
  v = v.toString();
92
- if (!this.inputModel) {
33
+ if (!this._wasViewInit) {
93
34
  this._valueBeforeInit = v;
94
35
  return;
95
36
  }
96
37
  this.writeValue(v);
97
38
  }
98
- get min() {
99
- return this._min;
100
- }
101
- set min(v) {
102
- this._min = coerceNumberProperty(v);
103
- }
104
- get max() {
105
- return this._max;
106
- }
107
- set max(v) {
108
- this._max = coerceNumberProperty(v);
109
- }
110
- get allowFloat() {
111
- return this._allowFloat ?? isFloat(this._stepSize);
112
- }
113
- set allowFloat(v) {
114
- this._allowFloat = coerceBooleanProperty(v);
115
- }
116
- get allowQuickChange() {
117
- return this._allowQuickChange;
118
- }
119
- set allowQuickChange(v) {
120
- this._allowQuickChange = coerceBooleanProperty(v);
121
- }
122
- get stepSize() {
123
- return this._stepSize;
124
- }
125
- set stepSize(v) {
126
- this._stepSize = coerceNumberProperty(v);
39
+ constructor() {
40
+ super();
41
+ //! input view
42
+ this.inputEl = viewChild('textInput');
43
+ this.inputModel = new NumberInputModel(this);
44
+ this._wasViewInit = false;
45
+ this.inputId = input();
46
+ //! placeholder
47
+ this.placeholder = input();
48
+ this.placeholderTemplate = contentChild(ArdNumberInputPlaceholderTemplateDirective);
49
+ this.shouldDisplayPlaceholder = computed(() => !!this.placeholder() && !this.inputModel.stringValue());
50
+ //! appearance
51
+ this.appearance = input(FormElementAppearance.Outlined);
52
+ this.variant = input(FormElementVariant.Rounded);
53
+ this.alignText = input(OneAxisAlignment.Middle);
54
+ this.compact = input(false, { transform: v => coerceBooleanProperty(v) });
55
+ this.ngClasses = computed(() => {
56
+ return [
57
+ `ard-appearance-${this.appearance()}`,
58
+ `ard-variant-${this.variant()}`,
59
+ `ard-text-align-${this.alignText()}`,
60
+ `ard-quick-change-${this.noButtons}`,
61
+ this.compact() ? 'ard-compact' : '',
62
+ ].join(' ');
63
+ });
64
+ this.buttonVariant = computed(() => {
65
+ if (this.variant() === FormElementVariant.Rounded)
66
+ return ButtonVariant.Rounded;
67
+ if (this.variant() === FormElementVariant.Pill)
68
+ return ButtonVariant.Pill;
69
+ if (this.variant() === FormElementVariant.Sharp)
70
+ return ButtonVariant.Sharp;
71
+ return ButtonVariant.Rounded;
72
+ });
73
+ this.buttonAppearance = computed(() => {
74
+ if (this.appearance() === FormElementAppearance.Outlined && this.variant() !== FormElementVariant.Pill) {
75
+ return ButtonAppearance.Outlined;
76
+ }
77
+ return ButtonAppearance.Transparent;
78
+ });
79
+ //! other inputs
80
+ this.inputAttrs = input({});
81
+ //! value two-way binding
82
+ this._valueBeforeInit = '0';
83
+ this.valueChange = output();
84
+ //! event emitters
85
+ this.inputEvent = output({ alias: 'input' });
86
+ this.changeEvent = output({ alias: 'change' });
87
+ this.clearEvent = output({ alias: 'clear' });
88
+ this.quickChangeEvent = output({ alias: 'quickChange' });
89
+ //! min/max and number type
90
+ this.min = input(0, { transform: v => coerceNumberProperty(v, 0) });
91
+ this.max = input(Infinity, { transform: v => coerceNumberProperty(v, Infinity) });
92
+ this.allowFloat = input(false, { transform: v => coerceBooleanProperty(v) });
93
+ //! incerement/decrement buttons
94
+ this.noButtons = input(false, { transform: v => coerceBooleanProperty(v) });
95
+ this.stepSize = input(1, {
96
+ transform: v => {
97
+ const newValue = coerceNumberProperty(v, 1);
98
+ if (newValue === 0)
99
+ throw new Error(`ARD-FT0071a: Cannot set <ard-number-input>'s [stepSize] to 0.`);
100
+ if (newValue < 0)
101
+ throw new Error(`ARD-FT0071b: Cannot set <ard-number-input>'s [stepSize] to a negative value, got "${newValue}".`);
102
+ return newValue;
103
+ },
104
+ });
105
+ effect(() => {
106
+ const v = this.inputModel.numberValue();
107
+ this.valueChange.emit(v);
108
+ this._onChangeRegistered?.(v);
109
+ });
127
110
  }
128
111
  onQuickChangeButtonClick(direction, event) {
129
- let num = this.inputModel.numberValue;
112
+ let num = this.inputModel.numberValue();
130
113
  if (!num)
131
114
  num = 0;
132
- if (direction == 1 && num >= this.max)
115
+ if (direction === 1 && num >= this.max())
133
116
  return;
134
- if (direction == -1 && num <= this.min)
117
+ if (direction === -1 && num <= this.min())
135
118
  return;
136
119
  if (event)
137
120
  event.stopPropagation();
138
- const newValue = num + this.stepSize * direction;
121
+ const newValue = num + this.stepSize() * direction;
139
122
  //round to 9 decimal places to avoid floating point arithmetic errors
140
123
  //9 is an arbitrary number that just works well. ¯\_(ツ)_/¯
141
124
  const newValuePrecise = roundToPrecision(newValue, 9);
142
125
  this.writeValue(newValuePrecise);
143
- this.quickChangeEvent.next({ direction, value: newValuePrecise });
126
+ this.quickChangeEvent.emit({ direction, value: newValuePrecise });
144
127
  this._emitChange();
145
- this._checkButtonAvailability();
128
+ this._focusInputIfCantQuickChange();
146
129
  }
147
- _checkButtonAvailability() {
130
+ _focusInputIfCantQuickChange() {
148
131
  if (!this.canDecrement() || !this.canIncrement())
149
132
  this.focus();
150
133
  }
151
134
  canIncrement() {
152
- const num = this.inputModel.numberValue;
153
- return !isDefined(num) || num < this.max;
135
+ const num = this.inputModel.numberValue();
136
+ return !isDefined(num) || num < this.max();
154
137
  }
155
138
  canDecrement() {
156
- const num = this.inputModel.numberValue;
157
- return !isDefined(num) || num > this.min;
139
+ const num = this.inputModel.numberValue();
140
+ return !isDefined(num) || num > this.min();
158
141
  }
159
142
  //! event handlers
160
143
  onInput(newVal) {
161
- let valueHasChanged = this.inputModel.writeValue(newVal);
144
+ const valueHasChanged = this.inputModel.writeValue(newVal);
162
145
  if (!valueHasChanged)
163
146
  return;
164
147
  this._emitInput();
165
148
  }
166
149
  _emitInput() {
167
- this.inputEvent.emit(this.inputModel.numberValue);
150
+ this.inputEvent.emit(this.inputModel.numberValue());
168
151
  this._emitChange();
169
152
  }
170
153
  //focus, blur, change
@@ -180,13 +163,11 @@ export class ArdiumNumberInputComponent extends _NgModelComponentBase {
180
163
  this._emitChange();
181
164
  }
182
165
  _emitChange() {
183
- const v = this.inputModel.numberValue;
184
- this._onChangeRegistered?.(v);
166
+ const v = this.inputModel.numberValue();
185
167
  this.changeEvent.emit(v);
186
- this.valueChange.emit(this.inputModel.numberValue);
187
168
  }
188
169
  //smart focus
189
- onMouseup(event) {
170
+ onMouseup() {
190
171
  const selection = window.getSelection();
191
172
  if (selection && selection.type === 'Range')
192
173
  return;
@@ -196,16 +177,17 @@ export class ArdiumNumberInputComponent extends _NgModelComponentBase {
196
177
  onCopy(event) {
197
178
  if (this.value &&
198
179
  //does the selection cover the entire input
199
- ((this.textInputEl.nativeElement.selectionStart == 0 && this.textInputEl.nativeElement.selectionEnd == this.textInputEl.nativeElement.value.length) ||
180
+ ((this.inputEl()?.nativeElement.selectionStart === 0 &&
181
+ this.inputEl()?.nativeElement.selectionEnd === this.inputEl()?.nativeElement.value.length) ||
200
182
  //or is zero-wide
201
- this.textInputEl.nativeElement.selectionStart == this.textInputEl.nativeElement.selectionEnd)) {
183
+ this.inputEl()?.nativeElement.selectionStart === this.inputEl()?.nativeElement.selectionEnd)) {
202
184
  event.clipboardData?.setData('text/plain', String(this.value));
203
185
  event.preventDefault();
204
186
  }
205
187
  }
206
188
  //! helpers
207
189
  _setInputAttributes() {
208
- const input = this.textInputEl.nativeElement;
190
+ const input = this.inputEl().nativeElement;
209
191
  const attributes = {
210
192
  type: 'text',
211
193
  autocorrect: 'off',
@@ -218,16 +200,16 @@ export class ArdiumNumberInputComponent extends _NgModelComponentBase {
218
200
  input.setAttribute(key, String(attributes[key]));
219
201
  }
220
202
  }
221
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ArdiumNumberInputComponent, selector: "ard-number-input", inputs: { inputId: "inputId", placeholder: "placeholder", appearance: "appearance", variant: "variant", alignText: "alignText", compact: "compact", inputAttrs: "inputAttrs", value: "value", min: "min", max: "max", allowFloat: "allowFloat", allowQuickChange: "allowQuickChange", stepSize: "stepSize" }, outputs: { valueChange: "valueChange", inputEvent: "input", changeEvent: "change", clearEvent: "clear", quickChangeEvent: "quickChange" }, providers: [
203
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumNumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
204
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ArdiumNumberInputComponent, selector: "ard-number-input", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, alignText: { classPropertyName: "alignText", publicName: "alignText", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, inputAttrs: { classPropertyName: "inputAttrs", publicName: "inputAttrs", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, allowFloat: { classPropertyName: "allowFloat", publicName: "allowFloat", isSignal: true, isRequired: false, transformFunction: null }, noButtons: { classPropertyName: "noButtons", publicName: "noButtons", isSignal: true, isRequired: false, transformFunction: null }, stepSize: { classPropertyName: "stepSize", publicName: "stepSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", inputEvent: "input", changeEvent: "change", clearEvent: "clear", quickChangeEvent: "quickChange" }, providers: [
223
205
  {
224
206
  provide: NG_VALUE_ACCESSOR,
225
207
  useExisting: forwardRef(() => ArdiumNumberInputComponent),
226
208
  multi: true,
227
209
  },
228
- ], queries: [{ propertyName: "placeholderTemplate", first: true, predicate: ArdNumberInputPlaceholderTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "textInputEl", first: true, predicate: ["textInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup($event)\"\r\n>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >-</ard-button>\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n\r\n <input #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n >\r\n </div>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >+</ard-button>\r\n</div>", styles: [".ard-number-input{display:flex;max-width:100%}.ard-number-input .ard-input-container{position:relative}.ard-number-input .ard-placeholder{position:absolute;left:0;right:0;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-middle input,.ard-text-align-middle .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-quick-change-button{-webkit-user-select:none;user-select:none;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.HoldDirective, selector: "[ardHold]", inputs: ["disabled", "readonly", "ardHoldDelay", "ardHoldRepeat", "ardHoldSpaceKey", "ardHoldEnterKey"], outputs: ["ardHold"] }, { kind: "component", type: i3.ArdiumButtonComponent, selector: "ard-button", inputs: ["variant", "alignIcon", "vertical", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
210
+ ], queries: [{ propertyName: "placeholderTemplate", first: true, predicate: ArdNumberInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ard-number-input\"\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseup)=\"onMouseup()\"\n>\n @if (!noButtons()) {\n <ard-button\n class=\"ard-quick-change-button decrement\"\n [variant]=\"buttonVariant()\"\n [appearance]=\"buttonAppearance()\"\n color=\"none\"\n [disabled]=\"!canDecrement()\"\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex()\"\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\n ardHoldSpaceKey\n >\n -\n </ard-button>\n }\n <div class=\"ard-input-container\">\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n let-plchldr\n >\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocusMaster($event)\"\n (blur)=\"onBlurMaster($event)\"\n (change)=\"onChange($event)\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n @if (!noButtons()) {\n <ard-button\n class=\"ard-quick-change-button increment\"\n [variant]=\"buttonVariant()\"\n [appearance]=\"buttonAppearance()\"\n color=\"none\"\n [disabled]=\"!canIncrement()\"\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex()\"\n (click)=\"onQuickChangeButtonClick(1, $event)\"\n (ardHold)=\"onQuickChangeButtonClick(1)\"\n ardHoldSpaceKey\n >\n +\n </ard-button>\n }\n</div>\n", styles: [".ard-number-input{display:flex;max-width:100%}.ard-number-input .ard-input-container{position:relative}.ard-number-input .ard-placeholder{position:absolute;left:0;right:0;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-middle input,.ard-text-align-middle .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-quick-change-button{-webkit-user-select:none;user-select:none;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.HoldDirective, selector: "[ardHold]", inputs: ["disabled", "readonly", "ardHoldDelay", "ardHoldRepeat", "ardHoldSpaceKey", "ardHoldEnterKey"], outputs: ["ardHold"] }, { kind: "component", type: i3.ArdiumButtonComponent, selector: "ard-button", inputs: ["icon", "variant", "alignIcon", "vertical"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
229
211
  }
230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputComponent, decorators: [{
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumNumberInputComponent, decorators: [{
231
213
  type: Component,
232
214
  args: [{ selector: 'ard-number-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
233
215
  {
@@ -235,54 +217,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
235
217
  useExisting: forwardRef(() => ArdiumNumberInputComponent),
236
218
  multi: true,
237
219
  },
238
- ], template: "<div class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup($event)\"\r\n>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >-</ard-button>\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n\r\n <input #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n >\r\n </div>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >+</ard-button>\r\n</div>", styles: [".ard-number-input{display:flex;max-width:100%}.ard-number-input .ard-input-container{position:relative}.ard-number-input .ard-placeholder{position:absolute;left:0;right:0;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-middle input,.ard-text-align-middle .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-quick-change-button{-webkit-user-select:none;user-select:none;height:100%}\n"] }]
239
- }], propDecorators: { textInputEl: [{
240
- type: ViewChild,
241
- args: ['textInput', { static: true }]
242
- }], inputId: [{
243
- type: Input
244
- }], placeholder: [{
245
- type: Input
246
- }], placeholderTemplate: [{
247
- type: ContentChild,
248
- args: [ArdNumberInputPlaceholderTemplateDirective, {
249
- read: TemplateRef,
250
- }]
251
- }], appearance: [{
252
- type: Input
253
- }], variant: [{
254
- type: Input
255
- }], alignText: [{
256
- type: Input
257
- }], compact: [{
258
- type: Input
259
- }], inputAttrs: [{
260
- type: Input
261
- }], value: [{
262
- type: Input
263
- }], valueChange: [{
264
- type: Output
265
- }], inputEvent: [{
266
- type: Output,
267
- args: ['input']
268
- }], changeEvent: [{
269
- type: Output,
270
- args: ['change']
271
- }], clearEvent: [{
272
- type: Output,
273
- args: ['clear']
274
- }], quickChangeEvent: [{
275
- type: Output,
276
- args: ['quickChange']
277
- }], min: [{
278
- type: Input
279
- }], max: [{
280
- type: Input
281
- }], allowFloat: [{
282
- type: Input
283
- }], allowQuickChange: [{
284
- type: Input
285
- }], stepSize: [{
220
+ ], template: "<div\n class=\"ard-number-input\"\n [ngClass]=\"ngClasses()\"\n [class.ard-has-value]=\"value\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseup)=\"onMouseup()\"\n>\n @if (!noButtons()) {\n <ard-button\n class=\"ard-quick-change-button decrement\"\n [variant]=\"buttonVariant()\"\n [appearance]=\"buttonAppearance()\"\n color=\"none\"\n [disabled]=\"!canDecrement()\"\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex()\"\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\n ardHoldSpaceKey\n >\n -\n </ard-button>\n }\n <div class=\"ard-input-container\">\n @if (shouldDisplayPlaceholder()) {\n <ng-template\n #defaultPlaceholderTemplate\n let-plchldr\n >\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\n </ng-template>\n\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\n }\n\n <input\n #textInput\n #focusableElement\n type=\"text\"\n [attr.id]=\"inputId()\"\n [attr.tabindex]=\"tabIndex()\"\n [readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n (input)=\"onInput(textInput.value)\"\n (focus)=\"onFocusMaster($event)\"\n (blur)=\"onBlurMaster($event)\"\n (change)=\"onChange($event)\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n (copy)=\"onCopy($event)\"\n />\n </div>\n @if (!noButtons()) {\n <ard-button\n class=\"ard-quick-change-button increment\"\n [variant]=\"buttonVariant()\"\n [appearance]=\"buttonAppearance()\"\n color=\"none\"\n [disabled]=\"!canIncrement()\"\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex()\"\n (click)=\"onQuickChangeButtonClick(1, $event)\"\n (ardHold)=\"onQuickChangeButtonClick(1)\"\n ardHoldSpaceKey\n >\n +\n </ard-button>\n }\n</div>\n", styles: [".ard-number-input{display:flex;max-width:100%}.ard-number-input .ard-input-container{position:relative}.ard-number-input .ard-placeholder{position:absolute;left:0;right:0;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-middle input,.ard-text-align-middle .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-quick-change-button{-webkit-user-select:none;user-select:none;height:100%}\n"] }]
221
+ }], ctorParameters: () => [], propDecorators: { value: [{
286
222
  type: Input
287
223
  }] } });
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaW5wdXRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7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QyxHQUFHLEVBQUUsMkJBQTJCLENBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUtELFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWEvQixPQUFPO3NCQUFmLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFLTixtQkFBbUI7c0JBSGxCLFlBQVk7dUJBQUMsMENBQTBDLEVBQUU7d0JBQ3hELElBQUksRUFBRSxXQUFXO3FCQUNsQjtnQkFRUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlGLE9BQU87c0JBRFYsS0FBSztnQkE4QkcsVUFBVTtzQkFBbEIsS0FBSztnQkFVRixLQUFLO3NCQURSLEtBQUs7Z0JBU0ksV0FBVztzQkFBcEIsTUFBTTtnQkFHVSxVQUFVO3NCQUExQixNQUFNO3VCQUFDLE9BQU87Z0JBQ0csV0FBVztzQkFBNUIsTUFBTTt1QkFBQyxRQUFRO2dCQUNDLFVBQVU7c0JBQTFCLE1BQU07dUJBQUMsT0FBTztnQkFDUSxnQkFBZ0I7c0JBQXRDLE1BQU07dUJBQUMsYUFBYTtnQkFRakIsR0FBRztzQkFETixLQUFLO2dCQVVGLEdBQUc7c0JBRE4sS0FBSztnQkFVRixVQUFVO3NCQURiLEtBQUs7Z0JBV0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDb250ZW50Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XG5pbXBvcnQgeyBCdXR0b25WYXJpYW50LCBCdXR0b25BcHBlYXJhbmNlIH0gZnJvbSAnLi4vLi4vYnV0dG9ucy9nZW5lcmFsLWJ1dHRvbi50eXBlcyc7XG5pbXBvcnQgeyBPbmVBeGlzQWxpZ25tZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWxpZ25tZW50LnR5cGVzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XG5pbXBvcnQgeyBfTmdNb2RlbENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi9faW50ZXJuYWwvbmdtb2RlbC1jb21wb25lbnQnO1xuaW1wb3J0IHsgTnVtYmVySW5wdXRNb2RlbCwgTnVtYmVySW5wdXRNb2RlbEhvc3QgfSBmcm9tICcuLi9pbnB1dC11dGlscyc7XG5pbXBvcnQgeyBpc0RlZmluZWQsIGlzRmxvYXQgfSBmcm9tICdzaW1wbGUtYm9vbCc7XG5pbXBvcnQgeyBBcmROdW1iZXJJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL251bWJlci1pbnB1dC5kaXJlY3RpdmVzJztcbmltcG9ydCB7IHJvdW5kVG9QcmVjaXNpb24gfSBmcm9tICdtb3JlLXJvdW5kaW5nJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXJkLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9udW1iZXItaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtTnVtYmVySW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtTnVtYmVySW5wdXRDb21wb25lbnQgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTnVtYmVySW5wdXRNb2RlbEhvc3QsIE9uSW5pdCB7XG4gIC8vISBpbnB1dCB2aWV3XG4gIEBWaWV3Q2hpbGQoJ3RleHRJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHRleHRJbnB1dEVsITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgcHJvdGVjdGVkIGlucHV0TW9kZWwhOiBOdW1iZXJJbnB1dE1vZGVsO1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0TW9kZWwgPSBuZXcgTnVtYmVySW5wdXRNb2RlbCh0aGlzLnRleHRJbnB1dEVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMpO1xuICAgIHRoaXMuX3NldElucHV0QXR0cmlidXRlcygpO1xuICAgIC8vc2V0IHRoZSB2YWx1ZVxuICAgIGlmICh0aGlzLl92YWx1ZUJlZm9yZUluaXQpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLl92YWx1ZUJlZm9yZUluaXQpO1xuICAgICAgZGVsZXRlIHRoaXMuX3ZhbHVlQmVmb3JlSW5pdDtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBpbnB1dElkPzogc3RyaW5nO1xuXG4gIC8vISBwbGFjZWhvbGRlclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgQENvbnRlbnRDaGlsZChBcmROdW1iZXJJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgfSlcbiAgcGxhY2Vob2xkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgZ2V0IHNob3VsZERpc3BsYXlQbGFjZWhvbGRlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBsYWNlaG9sZGVyKSAmJiAhdGhpcy5pbnB1dE1vZGVsLnN0cmluZ1ZhbHVlO1xuICB9XG5cbiAgLy8hIGFwcGVhcmFuY2VcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogRm9ybUVsZW1lbnRBcHBlYXJhbmNlID0gRm9ybUVsZW1lbnRBcHBlYXJhbmNlLk91dGxpbmVkO1xuICBASW5wdXQoKSB2YXJpYW50OiBGb3JtRWxlbWVudFZhcmlhbnQgPSBGb3JtRWxlbWVudFZhcmlhbnQuUm91bmRlZDtcbiAgQElucHV0KCkgYWxpZ25UZXh0OiBPbmVBeGlzQWxpZ25tZW50ID0gT25lQXhpc0FsaWdubWVudC5NaWRkbGU7XG5cbiAgcHJpdmF0ZSBfY29tcGFjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBnZXQgY29tcGFjdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcGFjdDtcbiAgfVxuICBzZXQgY29tcGFjdCh2OiBhbnkpIHtcbiAgICB0aGlzLl9jb21wYWN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xuICB9XG5cbiAgZ2V0IG5nQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbXG4gICAgICBgYXJkLWFwcGVhcmFuY2UtJHt0aGlzLmFwcGVhcmFuY2V9YCxcbiAgICAgIGBhcmQtdmFyaWFudC0ke3RoaXMudmFyaWFudH1gLFxuICAgICAgYGFyZC10ZXh0LWFsaWduLSR7dGhpcy5hbGlnblRleHR9YCxcbiAgICAgIGBhcmQtcXVpY2stY2hhbmdlLSR7dGhpcy5hbGxvd1F1aWNrQ2hhbmdlfWAsXG4gICAgICB0aGlzLmNvbXBhY3QgPyAnYXJkLWNvbXBhY3QnIDogJycsXG4gICAgXS5qb2luKCcgJyk7XG4gIH1cblxuICBnZXQgYnV0dG9uVmFyaWFudCgpOiBCdXR0b25WYXJpYW50IHtcbiAgICBpZiAodGhpcy52YXJpYW50ID09IEZvcm1FbGVtZW50VmFyaWFudC5Sb3VuZGVkKSByZXR1cm4gQnV0dG9uVmFyaWFudC5Sb3VuZGVkO1xuICAgIGlmICh0aGlzLnZhcmlhbnQgPT0gRm9ybUVsZW1lbnRWYXJpYW50LlBpbGwpIHJldHVybiBCdXR0b25WYXJpYW50LlBpbGw7XG4gICAgaWYgKHRoaXMudmFyaWFudCA9PSBGb3JtRWxlbWVudFZhcmlhbnQuU2hhcnApIHJldHVybiBCdXR0b25WYXJpYW50LlNoYXJwO1xuICAgIHJldHVybiBCdXR0b25WYXJpYW50LlJvdW5kZWQ7XG4gIH1cbiAgZ2V0IGJ1dHRvbkFwcGVhcmFuY2UoKTogQnV0dG9uQXBwZWFyYW5jZSB7XG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSA9PSBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQgJiYgdGhpcy52YXJpYW50ICE9IEZvcm1FbGVtZW50VmFyaWFudC5QaWxsKSByZXR1cm4gQnV0dG9uQXBwZWFyYW5jZS5PdXRsaW5lZDtcbiAgICByZXR1cm4gQnV0dG9uQXBwZWFyYW5jZS5UcmFuc3BhcmVudDtcbiAgfVxuXG4gIC8vISBvdGhlciBpbnB1dHNcbiAgQElucHV0KCkgaW5wdXRBdHRyczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yJ3Mgd3JpdGUgdmFsdWUgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZSh2OiBhbnkpIHtcbiAgICB0aGlzLmlucHV0TW9kZWwud3JpdGVWYWx1ZSh2KTtcbiAgfVxuXG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcbiAgcHJvdGVjdGVkIF92YWx1ZUJlZm9yZUluaXQ/OiBzdHJpbmcgfCBudWxsID0gJzAnO1xuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCkge1xuICAgIGlmICh0eXBlb2YgdiA9PSAnbnVtYmVyJykgdiA9IHYudG9TdHJpbmcoKTtcbiAgICBpZiAoIXRoaXMuaW5wdXRNb2RlbCkge1xuICAgICAgdGhpcy5fdmFsdWVCZWZvcmVJbml0ID0gdjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy53cml0ZVZhbHVlKHYpO1xuICB9XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgbnVsbD4oKTtcblxuICAvLyogZXZlbnQgZW1pdHRlcnNcbiAgQE91dHB1dCgnaW5wdXQnKSBpbnB1dEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuICBAT3V0cHV0KCdjaGFuZ2UnKSBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgbnVsbD4oKTtcbiAgQE91dHB1dCgnY2xlYXInKSBjbGVhckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICBAT3V0cHV0KCdxdWlja0NoYW5nZScpIHF1aWNrQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBkaXJlY3Rpb246IDEgfCAtMTtcbiAgICB2YWx1ZTogbnVtYmVyO1xuICB9PigpO1xuXG4gIC8vISBtaW4vbWF4IGFuZCBudW1iZXIgdHlwZVxuICBwcml2YXRlIF9taW46IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpXG4gIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG4gIHNldCBtaW4odjogYW55KSB7XG4gICAgdGhpcy5fbWluID0gY29lcmNlTnVtYmVyUHJvcGVydHkodik7XG4gIH1cblxuICBwcml2YXRlIF9tYXg6IG51bWJlciA9IDk5OTtcbiAgQElucHV0KClcbiAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXg7XG4gIH1cbiAgc2V0IG1heCh2OiBhbnkpIHtcbiAgICB0aGlzLl9tYXggPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2KTtcbiAgfVxuXG4gIHByaXZhdGUgX2FsbG93RmxvYXQ/OiBib29sZWFuID0gdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBnZXQgYWxsb3dGbG9hdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dGbG9hdCA/PyBpc0Zsb2F0KHRoaXMuX3N0ZXBTaXplKTtcbiAgfVxuICBzZXQgYWxsb3dGbG9hdCh2OiBhbnkpIHtcbiAgICB0aGlzLl9hbGxvd0Zsb2F0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpO1xuICB9XG5cbiAgLy8hIGluY2VyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnNcbiAgcHJpdmF0ZSBfYWxsb3dRdWlja0NoYW5nZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGdldCBhbGxvd1F1aWNrQ2hhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd1F1aWNrQ2hhbmdlO1xuICB9XG4gIHNldCBhbGxvd1F1aWNrQ2hhbmdlKHY6IGFueSkge1xuICAgIHRoaXMuX2FsbG93UXVpY2tDaGFuZ2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodik7XG4gIH1cblxuICBwcml2YXRlIF9zdGVwU2l6ZTogbnVtYmVyID0gMTtcbiAgQElucHV0KClcbiAgZ2V0IHN0ZXBTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXBTaXplO1xuICB9XG4gIHNldCBzdGVwU2l6ZSh2OiBhbnkpIHtcbiAgICB0aGlzLl9zdGVwU2l6ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHYpO1xuICB9XG5cbiAgb25RdWlja0NoYW5nZUJ1dHRvbkNsaWNrKGRpcmVjdGlvbjogMSB8IC0xLCBldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgbnVtID0gdGhpcy5pbnB1dE1vZGVsLm51bWJlclZhbHVlO1xuICAgIGlmICghbnVtKSBudW0gPSAwO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PSAxICYmIG51bSA+PSB0aGlzLm1heCkgcmV0dXJuO1xuICAgIGlmIChkaXJlY3Rpb24gPT0gLTEgJiYgbnVtIDw9IHRoaXMubWluKSByZXR1cm47XG5cbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3QgbmV3VmFsdWUgPSBudW0gKyB0aGlzLnN0ZXBTaXplICogZGlyZWN0aW9uO1xuICAgIC8vcm91bmQgdG8gOSBkZWNpbWFsIHBsYWNlcyB0byBhdm9pZCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGVycm9yc1xuICAgIC8vOSBpcyBhbiBhcmJpdHJhcnkgbnVtYmVyIHRoYXQganVzdCB3b3JrcyB3ZWxsLiDCr1xcXyjjg4QpXy/Cr1xuICAgIGNvbnN0IG5ld1ZhbHVlUHJlY2lzZSA9IHJvdW5kVG9QcmVjaXNpb24obmV3VmFsdWUsIDkpO1xuXG4gICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlUHJlY2lzZSk7XG4gICAgdGhpcy5xdWlja0NoYW5nZUV2ZW50Lm5leHQoeyBkaXJlY3Rpb24sIHZhbHVlOiBuZXdWYWx1ZVByZWNpc2UgfSk7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuXG4gICAgdGhpcy5fY2hlY2tCdXR0b25BdmFpbGFiaWxpdHkoKTtcbiAgfVxuICBwcml2YXRlIF9jaGVja0J1dHRvbkF2YWlsYWJpbGl0eSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuRGVjcmVtZW50KCkgfHwgIXRoaXMuY2FuSW5jcmVtZW50KCkpIHRoaXMuZm9jdXMoKTtcbiAgfVxuXG4gIGNhbkluY3JlbWVudCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBudW0gPSB0aGlzLmlucHV0TW9kZWwubnVtYmVyVmFsdWU7XG4gICAgcmV0dXJuICFpc0RlZmluZWQobnVtKSB8fCBudW0gPCB0aGlzLm1heDtcbiAgfVxuICBjYW5EZWNyZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbnVtID0gdGhpcy5pbnB1dE1vZGVsLm51bWJlclZhbHVlO1xuICAgIHJldHVybiAhaXNEZWZpbmVkKG51bSkgfHwgbnVtID4gdGhpcy5taW47XG4gIH1cblxuICAvLyEgZXZlbnQgaGFuZGxlcnNcbiAgb25JbnB1dChuZXdWYWw6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCB2YWx1ZUhhc0NoYW5nZWQgPSB0aGlzLmlucHV0TW9kZWwud3JpdGVWYWx1ZShuZXdWYWwpO1xuICAgIGlmICghdmFsdWVIYXNDaGFuZ2VkKSByZXR1cm47XG4gICAgdGhpcy5fZW1pdElucHV0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9lbWl0SW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEV2ZW50LmVtaXQodGhpcy5pbnB1dE1vZGVsLm51bWJlclZhbHVlKTtcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG4gIH1cblxuICAvL2ZvY3VzLCBibHVyLCBjaGFuZ2VcbiAgb25Gb2N1c01hc3RlcihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub25Gb2N1cyhldmVudCk7XG4gIH1cbiAgb25CbHVyTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkJsdXIoZXZlbnQpO1xuICB9XG4gIC8vY2hhbmdlXG4gIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcbiAgfVxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgdiA9IHRoaXMuaW5wdXRNb2RlbC5udW1iZXJWYWx1ZTtcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQodik7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuaW5wdXRNb2RlbC5udW1iZXJWYWx1ZSk7XG4gIH1cblxuICAvL3NtYXJ0IGZvY3VzXG4gIG9uTW91c2V1cChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi50eXBlID09PSAnUmFuZ2UnKSByZXR1cm47XG5cbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICAvLyBjb3B5XG4gIG9uQ29weShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnZhbHVlICYmXG4gICAgICAvL2RvZXMgdGhlIHNlbGVjdGlvbiBjb3ZlciB0aGUgZW50aXJlIGlucHV0XG4gICAgICAoKHRoaXMudGV4dElucHV0RWwubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSAwICYmIHRoaXMudGV4dElucHV0RWwubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gdGhpcy50ZXh0SW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlLmxlbmd0aCkgfHxcbiAgICAgICAgLy9vciBpcyB6ZXJvLXdpZGVcbiAgICAgICAgdGhpcy50ZXh0SW5wdXRFbC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09IHRoaXMudGV4dElucHV0RWwubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQpXG4gICAgKSB7XG4gICAgICBldmVudC5jbGlwYm9hcmREYXRhPy5zZXREYXRhKCd0ZXh0L3BsYWluJywgU3RyaW5nKHRoaXMudmFsdWUpKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8hIGhlbHBlcnNcbiAgcHJvdGVjdGVkIF9zZXRJbnB1dEF0dHJpYnV0ZXMoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLnRleHRJbnB1dEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgYXR0cmlidXRlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGF1dG9jb3JyZWN0OiAnb2ZmJyxcbiAgICAgIGF1dG9jYXBpdGFsaXplOiAnb2ZmJyxcbiAgICAgIGF1dG9jb21wbGV0ZTogJ29mZicsXG4gICAgICB0YWJpbmRleDogU3RyaW5nKHRoaXMudGFiSW5kZXgpLFxuICAgICAgLi4udGhpcy5pbnB1dEF0dHJzLFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKSkge1xuICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKGtleSwgU3RyaW5nKGF0dHJpYnV0ZXNba2V5XSkpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImFyZC1udW1iZXItaW5wdXRcIlxyXG4gICAgW25nQ2xhc3NdPVwibmdDbGFzc2VzXCJcclxuICAgIFtjbGFzcy5hcmQtaGFzLXZhbHVlXT1cInZhbHVlXCJcclxuICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgKG1vdXNldXApPVwib25Nb3VzZXVwKCRldmVudClcIlxyXG4+XHJcbiAgICA8YXJkLWJ1dHRvbiAqbmdJZj1cImFsbG93UXVpY2tDaGFuZ2VcIlxyXG4gICAgICAgIGNsYXNzPVwiYXJkLXF1aWNrLWNoYW5nZS1idXR0b24gZGVjcmVtZW50XCJcclxuICAgICAgICBbdmFyaWFudF09XCJidXR0b25WYXJpYW50XCJcclxuICAgICAgICBbYXBwZWFyYW5jZV09XCJidXR0b25BcHBlYXJhbmNlXCJcclxuICAgICAgICBjb2xvcj1cIm5vbmVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuRGVjcmVtZW50KClcIlxyXG4gICAgICAgIFt0YWJJbmRleF09XCIhY2FuRGVjcmVtZW50KCkgPyAtMSA6IHRhYkluZGV4XCJcclxuICAgICAgICAoY2xpY2spPVwib25RdWlja0NoYW5nZUJ1dHRvbkNsaWNrKC0xLCAkZXZlbnQpXCJcclxuICAgICAgICAoYXJkSG9sZCk9XCJvblF1aWNrQ2hhbmdlQnV0dG9uQ2xpY2soLTEpXCJcclxuICAgICAgICBhcmRIb2xkU3BhY2VLZXlcclxuICAgID4tPC9hcmQtYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cImFyZC1pbnB1dC1jb250YWluZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvdWxkRGlzcGxheVBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBsYWNlaG9sZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJkLXBsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwbGFjZWhvbGRlclRlbXBsYXRlIHx8IGRlZmF1bHRQbGFjZWhvbGRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPGlucHV0ICN0ZXh0SW5wdXRcclxuICAgICAgICAgICAgI2ZvY3VzYWJsZUVsZW1lbnRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcclxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCh0ZXh0SW5wdXQudmFsdWUpXCJcclxuICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXNNYXN0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1ck1hc3RlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAobW91c2V1cCk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAoY29weSk9XCJvbkNvcHkoJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YXJkLWJ1dHRvbiAqbmdJZj1cImFsbG93UXVpY2tDaGFuZ2VcIlxyXG4gICAgICAgIGNsYXNzPVwiYXJkLXF1aWNrLWNoYW5nZS1idXR0b24gaW5jcmVtZW50XCJcclxuICAgICAgICBbdmFyaWFudF09XCJidXR0b25WYXJpYW50XCJcclxuICAgICAgICBbYXBwZWFyYW5jZV09XCJidXR0b25BcHBlYXJhbmNlXCJcclxuICAgICAgICBjb2xvcj1cIm5vbmVcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY2FuSW5jcmVtZW50KClcIlxyXG4gICAgICAgIFt0YWJJbmRleF09XCIhY2FuSW5jcmVtZW50KCkgPyAtMSA6IHRhYkluZGV4XCJcclxuICAgICAgICAoY2xpY2spPVwib25RdWlja0NoYW5nZUJ1dHRvbkNsaWNrKDEsICRldmVudClcIlxyXG4gICAgICAgIChhcmRIb2xkKT1cIm9uUXVpY2tDaGFuZ2VCdXR0b25DbGljaygxKVwiXHJcbiAgICAgICAgYXJkSG9sZFNwYWNlS2V5XHJcbiAgICA+KzwvYXJkLWJ1dHRvbj5cclxuPC9kaXY+Il19
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaW5wdXRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBQ0wsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7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LFVBQVU7U0FDbkIsQ0FBQztRQUVGLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDOzhHQXhOVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixpMERBUjFCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztnQkFDekQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDJFQTBCMkMsMENBQTBDLDZNQ2pFeEYsKzhEQW1FQTs7MkZEMUJhLDBCQUEwQjtrQkFkdEMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzs0QkFDekQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0RBdUVHLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGNvbnRlbnRDaGlsZCxcbiAgZWZmZWN0LFxuICBmb3J3YXJkUmVmLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IHJvdW5kVG9QcmVjaXNpb24gfSBmcm9tICdtb3JlLXJvdW5kaW5nJztcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IF9OZ01vZGVsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25BcHBlYXJhbmNlLCBCdXR0b25WYXJpYW50IH0gZnJvbSAnLi4vLi4vYnV0dG9ucy9nZW5lcmFsLWJ1dHRvbi50eXBlcyc7XG5pbXBvcnQgeyBPbmVBeGlzQWxpZ25tZW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvYWxpZ25tZW50LnR5cGVzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xuaW1wb3J0IHsgTnVtYmVySW5wdXRNb2RlbCwgTnVtYmVySW5wdXRNb2RlbEhvc3QgfSBmcm9tICcuLi9pbnB1dC11dGlscyc7XG5pbXBvcnQgeyBBcmROdW1iZXJJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL251bWJlci1pbnB1dC5kaXJlY3RpdmVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXJkLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9udW1iZXItaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtTnVtYmVySW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtTnVtYmVySW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudEJhc2VcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTnVtYmVySW5wdXRNb2RlbEhvc3QsIEFmdGVyVmlld0luaXRcbntcbiAgLy8hIGlucHV0IHZpZXdcbiAgcmVhZG9ubHkgaW5wdXRFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PigndGV4dElucHV0Jyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlucHV0TW9kZWwgPSBuZXcgTnVtYmVySW5wdXRNb2RlbCh0aGlzKTtcbiAgcHJpdmF0ZSBfd2FzVmlld0luaXQgPSBmYWxzZTtcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3NldElucHV0QXR0cmlidXRlcygpO1xuICAgIHRoaXMuX3dhc1ZpZXdJbml0ID0gdHJ1ZTtcbiAgICAvL3NldCB0aGUgdmFsdWVcbiAgICBpZiAodGhpcy5fdmFsdWVCZWZvcmVJbml0KSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5fdmFsdWVCZWZvcmVJbml0KTtcbiAgICAgIGRlbGV0ZSB0aGlzLl92YWx1ZUJlZm9yZUluaXQ7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgaW5wdXRJZCA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KCk7XG5cbiAgLy8hIHBsYWNlaG9sZGVyXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQ8TnVsbGFibGU8c3RyaW5nPj4oKTtcblxuICByZWFkb25seSBwbGFjZWhvbGRlclRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZE51bWJlcklucHV0UGxhY2Vob2xkZXJUZW1wbGF0ZURpcmVjdGl2ZSk7XG5cbiAgcmVhZG9ubHkgc2hvdWxkRGlzcGxheVBsYWNlaG9sZGVyID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gISF0aGlzLnBsYWNlaG9sZGVyKCkgJiYgIXRoaXMuaW5wdXRNb2RlbC5zdHJpbmdWYWx1ZSgpKTtcblxuICAvLyEgYXBwZWFyYW5jZVxuICByZWFkb25seSBhcHBlYXJhbmNlID0gaW5wdXQ8Rm9ybUVsZW1lbnRBcHBlYXJhbmNlPihGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpO1xuICByZWFkb25seSB2YXJpYW50ID0gaW5wdXQ8Rm9ybUVsZW1lbnRWYXJpYW50PihGb3JtRWxlbWVudFZhcmlhbnQuUm91bmRlZCk7XG4gIHJlYWRvbmx5IGFsaWduVGV4dCA9IGlucHV0PE9uZUF4aXNBbGlnbm1lbnQ+KE9uZUF4aXNBbGlnbm1lbnQuTWlkZGxlKTtcblxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xuXG4gIHJlYWRvbmx5IG5nQ2xhc3NlcyA9IGNvbXB1dGVkKCgpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiBbXG4gICAgICBgYXJkLWFwcGVhcmFuY2UtJHt0aGlzLmFwcGVhcmFuY2UoKX1gLFxuICAgICAgYGFyZC12YXJpYW50LSR7dGhpcy52YXJpYW50KCl9YCxcbiAgICAgIGBhcmQtdGV4dC1hbGlnbi0ke3RoaXMuYWxpZ25UZXh0KCl9YCxcbiAgICAgIGBhcmQtcXVpY2stY2hhbmdlLSR7dGhpcy5ub0J1dHRvbnN9YCxcbiAgICAgIHRoaXMuY29tcGFjdCgpID8gJ2FyZC1jb21wYWN0JyA6ICcnLFxuICAgIF0uam9pbignICcpO1xuICB9KTtcblxuICByZWFkb25seSBidXR0b25WYXJpYW50ID0gY29tcHV0ZWQoKCk6IEJ1dHRvblZhcmlhbnQgPT4ge1xuICAgIGlmICh0aGlzLnZhcmlhbnQoKSA9PT0gRm9ybUVsZW1lbnRWYXJpYW50LlJvdW5kZWQpIHJldHVybiBCdXR0b25WYXJpYW50LlJvdW5kZWQ7XG4gICAgaWYgKHRoaXMudmFyaWFudCgpID09PSBGb3JtRWxlbWVudFZhcmlhbnQuUGlsbCkgcmV0dXJuIEJ1dHRvblZhcmlhbnQuUGlsbDtcbiAgICBpZiAodGhpcy52YXJpYW50KCkgPT09IEZvcm1FbGVtZW50VmFyaWFudC5TaGFycCkgcmV0dXJuIEJ1dHRvblZhcmlhbnQuU2hhcnA7XG4gICAgcmV0dXJuIEJ1dHRvblZhcmlhbnQuUm91bmRlZDtcbiAgfSk7XG4gIHJlYWRvbmx5IGJ1dHRvbkFwcGVhcmFuY2UgPSBjb21wdXRlZDxCdXR0b25BcHBlYXJhbmNlPigoKSA9PiB7XG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSgpID09PSBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQgJiYgdGhpcy52YXJpYW50KCkgIT09IEZvcm1FbGVtZW50VmFyaWFudC5QaWxsKSB7XG4gICAgICByZXR1cm4gQnV0dG9uQXBwZWFyYW5jZS5PdXRsaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIEJ1dHRvbkFwcGVhcmFuY2UuVHJhbnNwYXJlbnQ7XG4gIH0pO1xuXG4gIC8vISBvdGhlciBpbnB1dHNcbiAgcmVhZG9ubHkgaW5wdXRBdHRycyA9IGlucHV0PFJlY29yZDxzdHJpbmcsIGFueT4+KHt9KTtcblxuICAvLyEgY29udHJvbCB2YWx1ZSBhY2Nlc3NvcidzIHdyaXRlIHZhbHVlIGltcGxlbWVudGF0aW9uXG4gIHdyaXRlVmFsdWUodjogYW55KSB7XG4gICAgdGhpcy5pbnB1dE1vZGVsLndyaXRlVmFsdWUodik7XG4gIH1cblxuICAvLyEgdmFsdWUgdHdvLXdheSBiaW5kaW5nXG4gIHByb3RlY3RlZCBfdmFsdWVCZWZvcmVJbml0Pzogc3RyaW5nIHwgbnVsbCA9ICcwJztcbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IG51bWJlciB8IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB2ID0gdi50b1N0cmluZygpO1xuICAgIGlmICghdGhpcy5fd2FzVmlld0luaXQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlSW5pdCA9IHY7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcbiAgfVxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxudW1iZXIgfCBudWxsPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdiA9IHRoaXMuaW5wdXRNb2RlbC5udW1iZXJWYWx1ZSgpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xuICAgICAgdGhpcy5fb25DaGFuZ2VSZWdpc3RlcmVkPy4odik7XG4gICAgfSk7XG4gIH1cblxuICAvLyEgZXZlbnQgZW1pdHRlcnNcbiAgcmVhZG9ubHkgaW5wdXRFdmVudCA9IG91dHB1dDxudW1iZXIgfCBudWxsPih7IGFsaWFzOiAnaW5wdXQnIH0pO1xuICByZWFkb25seSBjaGFuZ2VFdmVudCA9IG91dHB1dDxudW1iZXIgfCBudWxsPih7IGFsaWFzOiAnY2hhbmdlJyB9KTtcbiAgcmVhZG9ubHkgY2xlYXJFdmVudCA9IG91dHB1dDxNb3VzZUV2ZW50Pih7IGFsaWFzOiAnY2xlYXInIH0pO1xuICByZWFkb25seSBxdWlja0NoYW5nZUV2ZW50ID0gb3V0cHV0PHtcbiAgICByZWFkb25seSBkaXJlY3Rpb246IDEgfCAtMTtcbiAgICByZWFkb25seSB2YWx1ZTogbnVtYmVyO1xuICB9Pih7IGFsaWFzOiAncXVpY2tDaGFuZ2UnIH0pO1xuXG4gIC8vISBtaW4vbWF4IGFuZCBudW1iZXIgdHlwZVxuICByZWFkb25seSBtaW4gPSBpbnB1dDxudW1iZXIsIGFueT4oMCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgMCkgfSk7XG4gIHJlYWRvbmx5IG1heCA9IGlucHV0PG51bWJlciwgYW55PihJbmZpbml0eSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgSW5maW5pdHkpIH0pO1xuXG4gIHJlYWRvbmx5IGFsbG93RmxvYXQgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgLy8hIGluY2VyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnNcbiAgcmVhZG9ubHkgbm9CdXR0b25zID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xuXG4gIHJlYWRvbmx5IHN0ZXBTaXplID0gaW5wdXQ8bnVtYmVyLCBhbnk+KDEsIHtcbiAgICB0cmFuc2Zvcm06IHYgPT4ge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCAxKTtcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKGBBUkQtRlQwMDcxYTogQ2Fubm90IHNldCA8YXJkLW51bWJlci1pbnB1dD4ncyBbc3RlcFNpemVdIHRvIDAuYCk7XG4gICAgICBpZiAobmV3VmFsdWUgPCAwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFSRC1GVDAwNzFiOiBDYW5ub3Qgc2V0IDxhcmQtbnVtYmVyLWlucHV0PidzIFtzdGVwU2l6ZV0gdG8gYSBuZWdhdGl2ZSB2YWx1ZSwgZ290IFwiJHtuZXdWYWx1ZX1cIi5gKTtcbiAgICAgIHJldHVybiBuZXdWYWx1ZTtcbiAgICB9LFxuICB9KTtcblxuICBvblF1aWNrQ2hhbmdlQnV0dG9uQ2xpY2soZGlyZWN0aW9uOiAxIHwgLTEsIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGxldCBudW0gPSB0aGlzLmlucHV0TW9kZWwubnVtYmVyVmFsdWUoKTtcbiAgICBpZiAoIW51bSkgbnVtID0gMDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09IDEgJiYgbnVtID49IHRoaXMubWF4KCkpIHJldHVybjtcbiAgICBpZiAoZGlyZWN0aW9uID09PSAtMSAmJiBudW0gPD0gdGhpcy5taW4oKSkgcmV0dXJuO1xuXG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IG5ld1ZhbHVlID0gbnVtICsgdGhpcy5zdGVwU2l6ZSgpICogZGlyZWN0aW9uO1xuICAgIC8vcm91bmQgdG8gOSBkZWNpbWFsIHBsYWNlcyB0byBhdm9pZCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGVycm9yc1xuICAgIC8vOSBpcyBhbiBhcmJpdHJhcnkgbnVtYmVyIHRoYXQganVzdCB3b3JrcyB3ZWxsLiDCr1xcXyjjg4QpXy/Cr1xuICAgIGNvbnN0IG5ld1ZhbHVlUHJlY2lzZSA9IHJvdW5kVG9QcmVjaXNpb24obmV3VmFsdWUsIDkpO1xuXG4gICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlUHJlY2lzZSk7XG4gICAgdGhpcy5xdWlja0NoYW5nZUV2ZW50LmVtaXQoeyBkaXJlY3Rpb24sIHZhbHVlOiBuZXdWYWx1ZVByZWNpc2UgfSk7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuXG4gICAgdGhpcy5fZm9jdXNJbnB1dElmQ2FudFF1aWNrQ2hhbmdlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfZm9jdXNJbnB1dElmQ2FudFF1aWNrQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5EZWNyZW1lbnQoKSB8fCAhdGhpcy5jYW5JbmNyZW1lbnQoKSkgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgY2FuSW5jcmVtZW50KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG51bSA9IHRoaXMuaW5wdXRNb2RlbC5udW1iZXJWYWx1ZSgpO1xuICAgIHJldHVybiAhaXNEZWZpbmVkKG51bSkgfHwgbnVtIDwgdGhpcy5tYXgoKTtcbiAgfVxuICBjYW5EZWNyZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbnVtID0gdGhpcy5pbnB1dE1vZGVsLm51bWJlclZhbHVlKCk7XG4gICAgcmV0dXJuICFpc0RlZmluZWQobnVtKSB8fCBudW0gPiB0aGlzLm1pbigpO1xuICB9XG5cbiAgLy8hIGV2ZW50IGhhbmRsZXJzXG4gIG9uSW5wdXQobmV3VmFsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZUhhc0NoYW5nZWQgPSB0aGlzLmlucHV0TW9kZWwud3JpdGVWYWx1ZShuZXdWYWwpO1xuICAgIGlmICghdmFsdWVIYXNDaGFuZ2VkKSByZXR1cm47XG4gICAgdGhpcy5fZW1pdElucHV0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9lbWl0SW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEV2ZW50LmVtaXQodGhpcy5pbnB1dE1vZGVsLm51bWJlclZhbHVlKCkpO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcbiAgfVxuXG4gIC8vZm9jdXMsIGJsdXIsIGNoYW5nZVxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcbiAgfVxuICBvbkJsdXJNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQmx1cihldmVudCk7XG4gIH1cbiAgLy9jaGFuZ2VcbiAgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICB9XG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2ID0gdGhpcy5pbnB1dE1vZGVsLm51bWJlclZhbHVlKCk7XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHYpO1xuICB9XG5cbiAgLy9zbWFydCBmb2N1c1xuICBvbk1vdXNldXAoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnR5cGUgPT09ICdSYW5nZScpIHJldHVybjtcblxuICAgIHRoaXMuZm9jdXMoKTtcbiAgfVxuXG4gIC8vIGNvcHlcbiAgb25Db3B5KGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMudmFsdWUgJiZcbiAgICAgIC8vZG9lcyB0aGUgc2VsZWN0aW9uIGNvdmVyIHRoZSBlbnRpcmUgaW5wdXRcbiAgICAgICgodGhpcy5pbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDAgJiZcbiAgICAgICAgdGhpcy5pbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09PSB0aGlzLmlucHV0RWwoKT8ubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGgpIHx8XG4gICAgICAgIC8vb3IgaXMgemVyby13aWRlXG4gICAgICAgIHRoaXMuaW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSB0aGlzLmlucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQpXG4gICAgKSB7XG4gICAgICBldmVudC5jbGlwYm9hcmREYXRhPy5zZXREYXRhKCd0ZXh0L3BsYWluJywgU3RyaW5nKHRoaXMudmFsdWUpKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8hIGhlbHBlcnNcbiAgcHJvdGVjdGVkIF9zZXRJbnB1dEF0dHJpYnV0ZXMoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmlucHV0RWwoKSEubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgYXV0b2NvcnJlY3Q6ICdvZmYnLFxuICAgICAgYXV0b2NhcGl0YWxpemU6ICdvZmYnLFxuICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcbiAgICAgIHRhYmluZGV4OiBTdHJpbmcodGhpcy50YWJJbmRleCksXG4gICAgICAuLi50aGlzLmlucHV0QXR0cnMsXG4gICAgfTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSB7XG4gICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoa2V5LCBTdHJpbmcoYXR0cmlidXRlc1trZXldKSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiYXJkLW51bWJlci1pbnB1dFwiXG4gIFtuZ0NsYXNzXT1cIm5nQ2xhc3NlcygpXCJcbiAgW2NsYXNzLmFyZC1oYXMtdmFsdWVdPVwidmFsdWVcIlxuICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgKG1vdXNldXApPVwib25Nb3VzZXVwKClcIlxuPlxuICBAaWYgKCFub0J1dHRvbnMoKSkge1xuICAgIDxhcmQtYnV0dG9uXG4gICAgICBjbGFzcz1cImFyZC1xdWljay1jaGFuZ2UtYnV0dG9uIGRlY3JlbWVudFwiXG4gICAgICBbdmFyaWFudF09XCJidXR0b25WYXJpYW50KClcIlxuICAgICAgW2FwcGVhcmFuY2VdPVwiYnV0dG9uQXBwZWFyYW5jZSgpXCJcbiAgICAgIGNvbG9yPVwibm9uZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbkRlY3JlbWVudCgpXCJcbiAgICAgIFt0YWJJbmRleF09XCIhY2FuRGVjcmVtZW50KCkgPyAtMSA6IHRhYkluZGV4KClcIlxuICAgICAgKGNsaWNrKT1cIm9uUXVpY2tDaGFuZ2VCdXR0b25DbGljaygtMSwgJGV2ZW50KVwiXG4gICAgICAoYXJkSG9sZCk9XCJvblF1aWNrQ2hhbmdlQnV0dG9uQ2xpY2soLTEpXCJcbiAgICAgIGFyZEhvbGRTcGFjZUtleVxuICAgID5cbiAgICAgIC1cbiAgICA8L2FyZC1idXR0b24+XG4gIH1cbiAgPGRpdiBjbGFzcz1cImFyZC1pbnB1dC1jb250YWluZXJcIj5cbiAgICBAaWYgKHNob3VsZERpc3BsYXlQbGFjZWhvbGRlcigpKSB7XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2RlZmF1bHRQbGFjZWhvbGRlclRlbXBsYXRlXG4gICAgICAgIGxldC1wbGNobGRyXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlcigpIH19PC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicGxhY2Vob2xkZXJUZW1wbGF0ZSgpPy50ZW1wbGF0ZSB8fCBkZWZhdWx0UGxhY2Vob2xkZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgfVxuXG4gICAgPGlucHV0XG4gICAgICAjdGV4dElucHV0XG4gICAgICAjZm9jdXNhYmxlRWxlbWVudFxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxuICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5KClcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQodGV4dElucHV0LnZhbHVlKVwiXG4gICAgICAoZm9jdXMpPVwib25Gb2N1c01hc3RlcigkZXZlbnQpXCJcbiAgICAgIChibHVyKT1cIm9uQmx1ck1hc3RlcigkZXZlbnQpXCJcbiAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAobW91c2V1cCk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgKGNvcHkpPVwib25Db3B5KCRldmVudClcIlxuICAgIC8+XG4gIDwvZGl2PlxuICBAaWYgKCFub0J1dHRvbnMoKSkge1xuICAgIDxhcmQtYnV0dG9uXG4gICAgICBjbGFzcz1cImFyZC1xdWljay1jaGFuZ2UtYnV0dG9uIGluY3JlbWVudFwiXG4gICAgICBbdmFyaWFudF09XCJidXR0b25WYXJpYW50KClcIlxuICAgICAgW2FwcGVhcmFuY2VdPVwiYnV0dG9uQXBwZWFyYW5jZSgpXCJcbiAgICAgIGNvbG9yPVwibm9uZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbkluY3JlbWVudCgpXCJcbiAgICAgIFt0YWJJbmRleF09XCIhY2FuSW5jcmVtZW50KCkgPyAtMSA6IHRhYkluZGV4KClcIlxuICAgICAgKGNsaWNrKT1cIm9uUXVpY2tDaGFuZ2VCdXR0b25DbGljaygxLCAkZXZlbnQpXCJcbiAgICAgIChhcmRIb2xkKT1cIm9uUXVpY2tDaGFuZ2VCdXR0b25DbGljaygxKVwiXG4gICAgICBhcmRIb2xkU3BhY2VLZXlcbiAgICA+XG4gICAgICArXG4gICAgPC9hcmQtYnV0dG9uPlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -4,10 +4,10 @@ export class ArdNumberInputPlaceholderTemplateDirective {
4
4
  constructor(template) {
5
5
  this.template = template;
6
6
  }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdNumberInputPlaceholderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: ArdNumberInputPlaceholderTemplateDirective, selector: "ard-number-input > ng-template[ard-placeholder-tmp]", ngImport: i0 }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdNumberInputPlaceholderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.2", type: ArdNumberInputPlaceholderTemplateDirective, selector: "ard-number-input > ng-template[ard-placeholder-tmp]", ngImport: i0 }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdNumberInputPlaceholderTemplateDirective, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdNumberInputPlaceholderTemplateDirective, decorators: [{
11
11
  type: Directive,
12
12
  args: [{ selector: 'ard-number-input > ng-template[ard-placeholder-tmp]' }]
13
13
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
@@ -6,11 +6,11 @@ import { ArdiumNumberInputComponent } from './number-input.component';
6
6
  import { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';
7
7
  import * as i0 from "@angular/core";
8
8
  export class ArdiumNumberInputModule {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputModule, declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective], imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule], exports: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective] }); }
11
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputModule, imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule] }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: ArdiumNumberInputModule, declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective], imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule], exports: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumNumberInputModule, imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule] }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumNumberInputModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],
@@ -0,0 +1,5 @@
1
+ export * from './password-input.module';
2
+ export * from './password-input.component';
3
+ export * from './password-input.directives';
4
+ export * from './password-input.types';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9wYXNzd29yZC1pbnB1dC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYXNzd29yZC1pbnB1dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXNzd29yZC1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXNzd29yZC1pbnB1dC5kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vcGFzc3dvcmQtaW5wdXQudHlwZXMnO1xuIl19