@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,78 +1,67 @@
1
+ import { computed, effect, signal } from '@angular/core';
1
2
  import { coerceArrayProperty } from '@ardium-ui/devkit';
2
- import { isAnyString, isArray, isDefined, isFunction, isNull, isNumber, isRegExp } from 'simple-bool';
3
+ import { isAnyString, isArray, isFunction, isNull, isNumber, isRegExp } from 'simple-bool';
4
+ import { DigitInputPrimitiveOption, TransformType, } from './digit-input.types';
3
5
  import { DigitInputConfigDataType, _sanitizeRegExpString } from './digit-input.utils';
4
- import { DigitInputPrimitiveOption, TransformType } from './digit-input.types';
5
6
  export class DigitInputModel {
6
7
  constructor(_ardHost) {
7
8
  this._ardHost = _ardHost;
8
- this._configArray = [];
9
- this._configArrayNoStatics = [];
10
- this._value = null;
11
- this._stringValueMemo = null;
12
- }
13
- set configArray(arr) {
14
- this._configArray = arr;
15
- this._configArrayNoStatics = arr.filter(v => !('static' in v));
16
- this.setConfigArrayData();
17
- }
18
- setConfigArrayData() {
19
- let inputIndex = 0;
20
- this._ardHost.configArrayData = this._configArray.map(v => {
21
- if ('static' in v) {
9
+ this._configArray = signal([]);
10
+ this.configArrayData = computed(() => {
11
+ let inputIndex = 0;
12
+ return this._configArray().map(v => {
13
+ if ('static' in v) {
14
+ return {
15
+ type: DigitInputConfigDataType.Static,
16
+ char: v.static,
17
+ };
18
+ }
22
19
  return {
23
- type: DigitInputConfigDataType.Static,
24
- char: v.static,
20
+ type: DigitInputConfigDataType.Input,
21
+ index: inputIndex++,
25
22
  };
26
- }
27
- return {
28
- type: DigitInputConfigDataType.Input,
29
- index: inputIndex++,
30
- };
23
+ });
31
24
  });
32
- }
33
- get isConfigDefined() {
34
- return this._configArray.length > 0;
35
- }
36
- set value(v) {
37
- this._value = v;
38
- this._stringValueMemo = null;
39
- }
40
- get value() {
41
- return this._value;
42
- }
43
- get stringValue() {
44
- if (isNull(this._stringValueMemo)) {
45
- const v = this.value
46
- ?.map(v => v ?? ' ')
47
- .join('')
48
- .trimEnd() ?? '';
49
- this._stringValueMemo = v;
50
- }
51
- return this._stringValueMemo;
52
- }
53
- get isValueFull() {
54
- return isDefined(this.value) && this.value.length === this._configArrayNoStatics.length;
25
+ this._configArrayNoStatics = computed(() => this._configArray().filter(v => !('static' in v)));
26
+ this.isConfigDefined = computed(() => this._configArray().length > 0);
27
+ this.value = signal(null);
28
+ this.stringValue = computed(() => this.value()
29
+ ?.map(v => v ?? ' ')
30
+ .join('')
31
+ .trimEnd() ?? '');
32
+ this.isValueFull = computed(() => this.value()?.filter(v => v).length === this._configArrayNoStatics().length);
33
+ //set the value array to be the same length
34
+ effect(() => {
35
+ const length = this.configArrayData().length;
36
+ this.value.update(arr => {
37
+ if (!arr)
38
+ return new Array(length).fill(null);
39
+ if (arr.length >= length)
40
+ return arr.slice(0, length);
41
+ return [...arr, ...new Array(length - arr.length).fill(null)];
42
+ });
43
+ }, { allowSignalWrites: true });
55
44
  }
56
45
  isDefinedAtIndex(index) {
57
- return Boolean(this.value?.[index]);
46
+ return !!this.value()?.[index];
58
47
  }
59
48
  writeValue(v) {
60
49
  if (!isArray(v) && !isAnyString(v) && !isNull(v)) {
61
- //warn when using non-string/non-null value
62
- console.warn(new Error(`ARD-WA041: Trying to set <ard-digit-input>'s value to ${typeof v}, expected string or array strings.`));
50
+ //warn when using non-string value
51
+ console.warn(new Error(`ARD-WA0020: Trying to set <ard-digit-input>'s value to "${v}" (of type ${typeof v}), expected string or array of strings.`));
63
52
  //normalize the value
64
53
  v = v?.toString?.() ?? String(v);
65
54
  }
66
55
  const vArray = coerceArrayProperty(v);
67
56
  const problemIndex = vArray.findIndex(el => !isAnyString(el) || el.length > 1);
68
- if (problemIndex != -1) {
69
- throw new Error(`ARD-FT042: Array passed to <ard-digit-input>'s value must only contain strings of length 1 or 0. Element at index ${problemIndex} does not match those requirements.`);
57
+ if (problemIndex !== -1) {
58
+ throw new Error(`ARD-FT0042: Array passed to <ard-digit-input>'s value must only contain strings of length 1 or 0. Element "${vArray[problemIndex]}" at index ${problemIndex} does not match those requirements.`);
70
59
  }
71
60
  return this._writeValue(vArray);
72
61
  }
73
62
  _writeValue(v) {
74
- let oldVal = this.value;
75
- this.value = v && v.map(el => el || null);
63
+ const oldVal = this.value();
64
+ this.value.set(v && v.map(el => el || null));
76
65
  this.validateValueAndUpdate();
77
66
  this._updateInputElements();
78
67
  return oldVal !== v;
@@ -80,8 +69,8 @@ export class DigitInputModel {
80
69
  _updateInputElements() {
81
70
  const value = this.value ?? [];
82
71
  let i = 0;
83
- for (const inputEl of this._ardHost.inputs) {
84
- inputEl.nativeElement.value = value[i] ?? '';
72
+ for (const inputEl of this._ardHost.inputs()) {
73
+ inputEl.nativeElement.value = value()?.[i] ?? '';
85
74
  i++;
86
75
  }
87
76
  }
@@ -95,10 +84,7 @@ export class DigitInputModel {
95
84
  let configAsNumber = isAnyString(config) ? Number(config) : null;
96
85
  if (isNumber(config) || isNumber(configAsNumber)) {
97
86
  configAsNumber = isNumber(config) ? config : configAsNumber;
98
- this.configArray = 'a'
99
- .repeat(configAsNumber)
100
- .split('')
101
- .map(() => ({ accept: str => /[0-9]/.test(str) }));
87
+ this._configArray.set(new Array(configAsNumber).fill({ accept: (str) => /[0-9]/.test(str) }));
102
88
  return;
103
89
  }
104
90
  //map a string to an array
@@ -110,7 +96,7 @@ export class DigitInputModel {
110
96
  configArr = config;
111
97
  }
112
98
  //map array to ready objects
113
- this.configArray = configArr.map((v, i) => {
99
+ this._configArray.set(configArr.map((v, i) => {
114
100
  if (!isAnyString(v)) {
115
101
  if ('accept' in v && !isFunction(v.accept)) {
116
102
  const regExp = isRegExp(v.accept) ? v.accept : new RegExp(`[${_sanitizeRegExpString(v.accept)}]`);
@@ -128,74 +114,79 @@ export class DigitInputModel {
128
114
  case DigitInputPrimitiveOption.Special:
129
115
  return { accept: str => /[!@#$%^&*-_=+/\\.,]/.test(str) };
130
116
  default:
131
- if (configArr.length == 1) {
132
- throw new Error(`ARD-NF043S: <ard-digit-input>'s config is invalid. Expected number or array, got "${v}"`);
117
+ if (configArr.length === 1) {
118
+ throw new Error(`ARD-NF0043S: <ard-digit-input>'s config is invalid. Expected number or array, got "${v}"`);
133
119
  }
134
- throw new Error(`ARD-NF043B: Found invalid string in <ard-digit-input>'s config: "${v}" at index ${i}`);
120
+ throw new Error(`ARD-NF0043B: Found invalid string "${v}" in <ard-digit-input>'s config at index ${i}`);
135
121
  }
136
- });
122
+ }));
137
123
  }
138
124
  //! validate against the config
139
125
  validateInputAndSetValue(input, index) {
140
- if (index < 0 || index > this._configArrayNoStatics.length)
126
+ if (index < 0 || index > this._configArrayNoStatics().length)
141
127
  return false;
128
+ let v = this.value();
142
129
  //prepare the value array if does not exist
143
- if (!this.value) {
144
- this.value = [];
130
+ if (!v) {
131
+ this.value.set([]);
145
132
  }
133
+ v = [];
146
134
  //prepare the characters before the current one (to be used in validation)
147
- const before = this.value
148
- .slice(0, index)
149
- .map(v => v ?? ' ')
150
- .join('');
135
+ const before = this.stringValue().charAt(index);
151
136
  //remove the old character from the input element
152
- const oldVal = this.value[index];
153
- if (oldVal && input.length > 1 && input.match(oldVal)) {
154
- input = input.replace(oldVal, '');
137
+ if (before && input.length > 1 && input.match(before)) {
138
+ input = input.replace(before, '');
155
139
  }
156
- //use only the first character (error safety)
157
- input = input.charAt(0);
140
+ //use only the first or last character (error safety)
141
+ const firstChar = input.charAt(0);
142
+ const lastChar = input.charAt(input.length - 1);
143
+ input = firstChar === before ? lastChar : firstChar;
158
144
  //validate and transform, if necessary
159
- const inputChar = this._validateSingleChar(input, before, this._configArrayNoStatics[index]);
145
+ const inputChar = this._validateSingleChar(input, before, this._configArrayNoStatics()[index]);
160
146
  //get the corresponding HTML input element
161
- const inputEl = this._ardHost.inputs.get(index);
147
+ const inputEl = this._ardHost.inputs()[index];
162
148
  if (!inputEl) {
163
- throw new Error("ARD-IS048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.");
149
+ throw new Error("ARD-IS0048: <ard-digit-input>'s value changed, but its corresponding input element could not be found. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.");
164
150
  }
165
151
  //update the input element and value array
166
- const newVal = inputChar ?? oldVal;
152
+ const newVal = inputChar ?? before;
167
153
  inputEl.nativeElement.value = newVal ?? '';
168
- this.value[index] = newVal;
154
+ this.value.update(arr => {
155
+ if (!arr)
156
+ arr = [];
157
+ const newArr = [...arr];
158
+ newArr[index] = newVal || null;
159
+ return newArr;
160
+ });
169
161
  //return changes marker and validated value
170
- return [newVal !== oldVal, inputChar];
162
+ return [newVal !== before, inputChar];
171
163
  }
172
164
  validateValueAndUpdate() {
173
- const v = this.value;
165
+ const v = this.value();
174
166
  if (!v)
175
167
  return;
176
168
  let before = '';
177
169
  const newValue = [];
178
- for (let i = 0; i < Math.min(this._configArrayNoStatics.length, v.length); i++) {
170
+ for (let i = 0; i < Math.min(this._configArrayNoStatics().length, v.length); i++) {
179
171
  const char = v[i];
180
172
  before += char ?? ' ';
181
173
  if (!char) {
182
174
  newValue.push(char);
183
175
  continue;
184
176
  }
185
- const config = this._configArrayNoStatics[i];
177
+ const config = this._configArrayNoStatics()[i];
186
178
  const newChar = this._validateSingleChar(char, before, config);
187
179
  newValue.push(newChar);
188
180
  }
189
- this.value = newValue;
181
+ this.value.set(newValue);
190
182
  }
191
183
  _validateSingleChar(char, before, config) {
192
184
  if (config.readonly) {
193
- throw new Error(`ARD-IS049R: trying to set value of a digit-input's readonly field. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.`);
185
+ throw new Error(`ARD-IS0049R: trying to set value of a <ard-digit-input>'s readonly field. This is error is fatal to the functioning of Ardium UI. Please report this issue to the creators.`);
194
186
  }
195
187
  if (!isFunction(config.accept)) {
196
188
  const regExp = isRegExp(config.accept) ? config.accept : new RegExp(`[${_sanitizeRegExpString(config.accept)}]`);
197
189
  config.accept = str => regExp.test(str);
198
- console.warn(`ARD-IS049A: digit-input's value validator encountered an unexpected value of the config's "accept" property. Ardium UI was able to handle this issue, but please report it to the creators.`);
199
190
  }
200
191
  if (!char)
201
192
  return char;
@@ -203,15 +194,15 @@ export class DigitInputModel {
203
194
  if (!canAccept)
204
195
  return null;
205
196
  if (config.transform) {
206
- if (config.transform == TransformType.Lowercase) {
197
+ if (config.transform === TransformType.Lowercase) {
207
198
  return char.toLowerCase();
208
199
  }
209
- if (config.transform == TransformType.Uppercase) {
200
+ if (config.transform === TransformType.Uppercase) {
210
201
  return char.toUpperCase();
211
202
  }
212
- console.warn(`ARD-IS049T: digit-input's value validator encountered an unexpected value of the config's "transform" property. Ardium UI was able to handle this issue, but please report it to the creators.`);
203
+ console.warn(`ARD-IS0049T: <ard-digit-input>'s value validator encountered an unexpected value of the config's "transform" property. Ardium UI was able to handle this issue, but please report it to the creators.`);
213
204
  }
214
205
  return char;
215
206
  }
216
207
  }
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx3QkFBd0IsRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRyxPQUFPLEVBQThELHlCQUF5QixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNJLE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQW9CLFFBQTZCO1FBQTdCLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBRXpDLGlCQUFZLEdBQXVCLEVBQUUsQ0FBQztRQU10QywwQkFBcUIsR0FBNkIsRUFBRSxDQUFDO1FBcUJyRCxXQUFNLEdBQTZCLElBQUksQ0FBQztRQVN4QyxxQkFBZ0IsR0FBa0IsSUFBSSxDQUFDO0lBdENLLENBQUM7SUFHckQsSUFBWSxXQUFXLENBQUMsR0FBdUI7UUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUE2QixDQUFDO1FBQzNGLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFHRCxrQkFBa0I7UUFDaEIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxR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QyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxPQUFPLENBQUMsSUFBSSxDQUNWLDZMQUE2TCxDQUM5TCxDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFNUIsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ3BCLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFO2dCQUMvQyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUMzQjtZQUNELElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFO2dCQUMvQyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUMzQjtZQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1YsZ01BQWdNLENBQ2pNLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheVByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xuaW1wb3J0IHsgaXNBbnlTdHJpbmcsIGlzQXJyYXksIGlzRGVmaW5lZCwgaXNGdW5jdGlvbiwgaXNOdWxsLCBpc051bWJlciwgaXNSZWdFeHAgfSBmcm9tICdzaW1wbGUtYm9vbCc7XG5pbXBvcnQgeyBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUsIERpZ2l0SW5wdXRNb2RlbEhvc3QsIF9zYW5pdGl6ZVJlZ0V4cFN0cmluZyB9IGZyb20gJy4vZGlnaXQtaW5wdXQudXRpbHMnO1xuaW1wb3J0IHsgRGlnaXRJbnB1dEFjY2VwdE9iamVjdCwgRGlnaXRJbnB1dENvbmZpZywgRGlnaXRJbnB1dE9wdGlvbiwgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbiwgVHJhbnNmb3JtVHlwZSB9IGZyb20gJy4vZGlnaXQtaW5wdXQudHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgRGlnaXRJbnB1dE1vZGVsIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYXJkSG9zdDogRGlnaXRJbnB1dE1vZGVsSG9zdCkge31cblxuICBwcml2YXRlIF9jb25maWdBcnJheTogRGlnaXRJbnB1dE9wdGlvbltdID0gW107XG4gIHByaXZhdGUgc2V0IGNvbmZpZ0FycmF5KGFycjogRGlnaXRJbnB1dE9wdGlvbltdKSB7XG4gICAgdGhpcy5fY29uZmlnQXJyYXkgPSBhcnI7XG4gICAgdGhpcy5fY29uZmlnQXJyYXlOb1N0YXRpY3MgPSBhcnIuZmlsdGVyKHYgPT4gISgnc3RhdGljJyBpbiB2KSkgYXMgRGlnaXRJbnB1dEFjY2VwdE9iamVjdFtdO1xuICAgIHRoaXMuc2V0Q29uZmlnQXJyYXlEYXRhKCk7XG4gIH1cbiAgcHJpdmF0ZSBfY29uZmlnQXJyYXlOb1N0YXRpY3M6IERpZ2l0SW5wdXRBY2NlcHRPYmplY3RbXSA9IFtdO1xuXG4gIHNldENvbmZpZ0FycmF5RGF0YSgpIHtcbiAgICBsZXQgaW5wdXRJbmRleCA9IDA7XG4gICAgdGhpcy5fYXJkSG9zdC5jb25maWdBcnJheURhdGEgPSB0aGlzLl9jb25maWdBcnJheS5tYXAodiA9PiB7XG4gICAgICBpZiAoJ3N0YXRpYycgaW4gdikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZS5TdGF0aWMsXG4gICAgICAgICAgY2hhcjogdi5zdGF0aWMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUuSW5wdXQsXG4gICAgICAgIGluZGV4OiBpbnB1dEluZGV4KyssXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGdldCBpc0NvbmZpZ0RlZmluZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ0FycmF5Lmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZTogKHN0cmluZyB8IG51bGwpW10gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBzZXQgdmFsdWUodjogKHN0cmluZyB8IG51bGwpW10gfCBudWxsKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgIHRoaXMuX3N0cmluZ1ZhbHVlTWVtbyA9IG51bGw7XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3RyaW5nVmFsdWVNZW1vOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgZ2V0IHN0cmluZ1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgaWYgKGlzTnVsbCh0aGlzLl9zdHJpbmdWYWx1ZU1lbW8pKSB7XG4gICAgICBjb25zdCB2ID1cbiAgICAgICAgdGhpcy52YWx1ZVxuICAgICAgICAgID8ubWFwKHYgPT4gdiA/PyAnICcpXG4gICAgICAgICAgLmpvaW4oJycpXG4gICAgICAgICAgLnRyaW1FbmQoKSA/PyAnJztcbiAgICAgIHRoaXMuX3N0cmluZ1ZhbHVlTWVtbyA9IHY7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdHJpbmdWYWx1ZU1lbW87XG4gIH1cblxuICBnZXQgaXNWYWx1ZUZ1bGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRGVmaW5lZCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gdGhpcy5fY29uZmlnQXJyYXlOb1N0YXRpY3MubGVuZ3RoO1xuICB9XG5cbiAgaXNEZWZpbmVkQXRJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy52YWx1ZT8uW2luZGV4XSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHY6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghaXNBcnJheSh2KSAmJiAhaXNBbnlTdHJpbmcodikgJiYgIWlzTnVsbCh2KSkge1xuICAgICAgLy93YXJuIHdoZW4gdXNpbmcgbm9uLXN0cmluZy9ub24tbnVsbCB2YWx1ZVxuICAgICAgY29uc29sZS53YXJuKG5ldyBFcnJvcihgQVJELVdBMDQxOiBUcnlpbmcgdG8gc2V0IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgdG8gJHt0eXBlb2Ygdn0sIGV4cGVjdGVkIHN0cmluZyBvciBhcnJheSBzdHJpbmdzLmApKTtcbiAgICAgIC8vbm9ybWFsaXplIHRoZSB2YWx1ZVxuICAgICAgdiA9IHY/LnRvU3RyaW5nPy4oKSA/PyBTdHJpbmcodik7XG4gICAgfVxuICAgIGNvbnN0IHZBcnJheSA9IGNvZXJjZUFycmF5UHJvcGVydHkodik7XG4gICAgY29uc3QgcHJvYmxlbUluZGV4ID0gdkFycmF5LmZpbmRJbmRleChlbCA9PiAhaXNBbnlTdHJpbmcoZWwpIHx8IGVsLmxlbmd0aCA+IDEpO1xuICAgIGlmIChwcm9ibGVtSW5kZXggIT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFSRC1GVDA0MjogQXJyYXkgcGFzc2VkIHRvIDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgbXVzdCBvbmx5IGNvbnRhaW4gc3RyaW5ncyBvZiBsZW5ndGggMSBvciAwLiBFbGVtZW50IGF0IGluZGV4ICR7cHJvYmxlbUluZGV4fSBkb2VzIG5vdCBtYXRjaCB0aG9zZSByZXF1aXJlbWVudHMuYFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRlVmFsdWUodkFycmF5KTtcbiAgfVxuICBwcml2YXRlIF93cml0ZVZhbHVlKHY6IHN0cmluZ1tdIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGxldCBvbGRWYWwgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMudmFsdWUgPSB2ICYmIHYubWFwKGVsID0+IGVsIHx8IG51bGwpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZUFuZFVwZGF0ZSgpO1xuICAgIHRoaXMuX3VwZGF0ZUlucHV0RWxlbWVudHMoKTtcbiAgICByZXR1cm4gb2xkVmFsICE9PSB2O1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlSW5wdXRFbGVtZW50cygpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUgPz8gW107XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoY29uc3QgaW5wdXRFbCBvZiB0aGlzLl9hcmRIb3N0LmlucHV0cykge1xuICAgICAgaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWVbaV0gPz8gJyc7XG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8hIHNldHRpbmcgY29uZmlnXG4gIHNldENvbmZpZyhjb25maWc6IERpZ2l0SW5wdXRDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWVBbmRVcGRhdGUoKTtcbiAgfVxuICBwcml2YXRlIF9zZXRDb25maWcoY29uZmlnOiBEaWdpdElucHV0Q29uZmlnKTogdm9pZCB7XG4gICAgLy9tYXAgYSBudW1iZXIgdG8gcmVhZHkgb2JqZWN0c1xuICAgIGxldCBjb25maWdBc051bWJlciA9IGlzQW55U3RyaW5nKGNvbmZpZykgPyBOdW1iZXIoY29uZmlnKSA6IG51bGw7XG4gICAgaWYgKGlzTnVtYmVyKGNvbmZpZykgfHwgaXNOdW1iZXIoY29uZmlnQXNOdW1iZXIpKSB7XG4gICAgICBjb25maWdBc051bWJlciA9IGlzTnVtYmVyKGNvbmZpZykgPyBjb25maWcgOiBjb25maWdBc051bWJlciE7XG4gICAgICB0aGlzLmNvbmZpZ0FycmF5ID0gJ2EnXG4gICAgICAgIC5yZXBlYXQoY29uZmlnQXNOdW1iZXIpXG4gICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgLm1hcCgoKSA9PiAoeyBhY2NlcHQ6IHN0ciA9PiAvWzAtOV0vLnRlc3Qoc3RyKSB9KSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vbWFwIGEgc3RyaW5nIHRvIGFuIGFycmF5XG4gICAgbGV0IGNvbmZpZ0Fycjogc3RyaW5nW10gfCBFeGNsdWRlPERpZ2l0SW5wdXRDb25maWcsIG51bWJlciB8IHN0cmluZz47XG4gICAgaWYgKGlzQW55U3RyaW5nKGNvbmZpZykpIHtcbiAgICAgIGNvbmZpZ0FyciA9IGNvZXJjZUFycmF5UHJvcGVydHkoY29uZmlnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnQXJyID0gY29uZmlnO1xuICAgIH1cbiAgICAvL21hcCBhcnJheSB0byByZWFkeSBvYmplY3RzXG4gICAgdGhpcy5jb25maWdBcnJheSA9IGNvbmZpZ0Fyci5tYXAoKHYsIGkpID0+IHtcbiAgICAgIGlmICghaXNBbnlTdHJpbmcodikpIHtcbiAgICAgICAgaWYgKCdhY2NlcHQnIGluIHYgJiYgIWlzRnVuY3Rpb24odi5hY2NlcHQpKSB7XG4gICAgICAgICAgY29uc3QgcmVnRXhwID0gaXNSZWdFeHAodi5hY2NlcHQpID8gdi5hY2NlcHQgOiBuZXcgUmVnRXhwKGBbJHtfc2FuaXRpemVSZWdFeHBTdHJpbmcodi5hY2NlcHQpfV1gKTtcbiAgICAgICAgICB2LmFjY2VwdCA9IHN0ciA9PiByZWdFeHAudGVzdChzdHIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHYpIHtcbiAgICAgICAgY2FzZSBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLk51bWJlcjpcbiAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvWzAtOV0vLnRlc3Qoc3RyKSB9O1xuICAgICAgICBjYXNlIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24uTGV0dGVyOlxuICAgICAgICAgIHJldHVybiB7IGFjY2VwdDogc3RyID0+IC9bYS16QS1aXS8udGVzdChzdHIpIH07XG4gICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5BbHBoYW51bWVyaWM6XG4gICAgICAgICAgcmV0dXJuIHsgYWNjZXB0OiBzdHIgPT4gL1swLTlhLXpBLVpdLy50ZXN0KHN0cikgfTtcbiAgICAgICAgY2FzZSBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uLlNwZWNpYWw6XG4gICAgICAgICAgcmV0dXJuIHsgYWNjZXB0OiBzdHIgPT4gL1shQCMkJV4mKi1fPSsvXFxcXC4sXS8udGVzdChzdHIpIH07XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBpZiAoY29uZmlnQXJyLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFSRC1ORjA0M1M6IDxhcmQtZGlnaXQtaW5wdXQ+J3MgY29uZmlnIGlzIGludmFsaWQuIEV4cGVjdGVkIG51bWJlciBvciBhcnJheSwgZ290IFwiJHt2fVwiYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELU5GMDQzQjogRm91bmQgaW52YWxpZCBzdHJpbmcgaW4gPGFyZC1kaWdpdC1pbnB1dD4ncyBjb25maWc6IFwiJHt2fVwiIGF0IGluZGV4ICR7aX1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vISB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBjb25maWdcbiAgdmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKGlucHV0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBmYWxzZSB8IFtib29sZWFuLCBzdHJpbmcgfCBudWxsXSB7XG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IHRoaXMuX2NvbmZpZ0FycmF5Tm9TdGF0aWNzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy9wcmVwYXJlIHRoZSB2YWx1ZSBhcnJheSBpZiBkb2VzIG5vdCBleGlzdFxuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgIH1cbiAgICAvL3ByZXBhcmUgdGhlIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBjdXJyZW50IG9uZSAodG8gYmUgdXNlZCBpbiB2YWxpZGF0aW9uKVxuICAgIGNvbnN0IGJlZm9yZSA9IHRoaXMudmFsdWVcbiAgICAgIC5zbGljZSgwLCBpbmRleClcbiAgICAgIC5tYXAodiA9PiB2ID8/ICcgJylcbiAgICAgIC5qb2luKCcnKTtcblxuICAgIC8vcmVtb3ZlIHRoZSBvbGQgY2hhcmFjdGVyIGZyb20gdGhlIGlucHV0IGVsZW1lbnRcbiAgICBjb25zdCBvbGRWYWwgPSB0aGlzLnZhbHVlW2luZGV4XTtcbiAgICBpZiAob2xkVmFsICYmIGlucHV0Lmxlbmd0aCA+IDEgJiYgaW5wdXQubWF0Y2gob2xkVmFsKSkge1xuICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKG9sZFZhbCwgJycpO1xuICAgIH1cbiAgICAvL3VzZSBvbmx5IHRoZSBmaXJzdCBjaGFyYWN0ZXIgKGVycm9yIHNhZmV0eSlcbiAgICBpbnB1dCA9IGlucHV0LmNoYXJBdCgwKTtcblxuICAgIC8vdmFsaWRhdGUgYW5kIHRyYW5zZm9ybSwgaWYgbmVjZXNzYXJ5XG4gICAgY29uc3QgaW5wdXRDaGFyID0gdGhpcy5fdmFsaWRhdGVTaW5nbGVDaGFyKGlucHV0LCBiZWZvcmUsIHRoaXMuX2NvbmZpZ0FycmF5Tm9TdGF0aWNzW2luZGV4XSk7XG5cbiAgICAvL2dldCB0aGUgY29ycmVzcG9uZGluZyBIVE1MIGlucHV0IGVsZW1lbnRcbiAgICBjb25zdCBpbnB1dEVsID0gdGhpcy5fYXJkSG9zdC5pbnB1dHMuZ2V0KGluZGV4KTtcbiAgICBpZiAoIWlucHV0RWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBUkQtSVMwNDg6IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgY2hhbmdlZCwgYnV0IGl0cyBjb3JyZXNwb25kaW5nIGlucHV0IGVsZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLiBUaGlzIGlzIGVycm9yIGlzIGZhdGFsIHRvIHRoZSBmdW5jdGlvbmluZyBvZiBBcmRpdW0gVUkuIFBsZWFzZSByZXBvcnQgdGhpcyBpc3N1ZSB0byB0aGUgY3JlYXRvcnMuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIC8vdXBkYXRlIHRoZSBpbnB1dCBlbGVtZW50IGFuZCB2YWx1ZSBhcnJheVxuICAgIGNvbnN0IG5ld1ZhbCA9IGlucHV0Q2hhciA/PyBvbGRWYWw7XG4gICAgaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbmV3VmFsID8/ICcnO1xuICAgIHRoaXMudmFsdWVbaW5kZXhdID0gbmV3VmFsO1xuXG4gICAgLy9yZXR1cm4gY2hhbmdlcyBtYXJrZXIgYW5kIHZhbGlkYXRlZCB2YWx1ZVxuICAgIHJldHVybiBbbmV3VmFsICE9PSBvbGRWYWwsIGlucHV0Q2hhcl07XG4gIH1cbiAgdmFsaWRhdGVWYWx1ZUFuZFVwZGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2ID0gdGhpcy52YWx1ZTtcbiAgICBpZiAoIXYpIHJldHVybjtcblxuICAgIGxldCBiZWZvcmUgPSAnJztcbiAgICBjb25zdCBuZXdWYWx1ZTogKHN0cmluZyB8IG51bGwpW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKHRoaXMuX2NvbmZpZ0FycmF5Tm9TdGF0aWNzLmxlbmd0aCwgdi5sZW5ndGgpOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYXIgPSB2W2ldO1xuICAgICAgYmVmb3JlICs9IGNoYXIgPz8gJyAnO1xuXG4gICAgICBpZiAoIWNoYXIpIHtcbiAgICAgICAgbmV3VmFsdWUucHVzaChjaGFyKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLl9jb25maWdBcnJheU5vU3RhdGljc1tpXTtcblxuICAgICAgY29uc3QgbmV3Q2hhciA9IHRoaXMuX3ZhbGlkYXRlU2luZ2xlQ2hhcihjaGFyLCBiZWZvcmUsIGNvbmZpZyk7XG4gICAgICBuZXdWYWx1ZS5wdXNoKG5ld0NoYXIpO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlID0gbmV3VmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfdmFsaWRhdGVTaW5nbGVDaGFyKGNoYXI6IHN0cmluZyB8IG51bGwsIGJlZm9yZTogc3RyaW5nLCBjb25maWc6IERpZ2l0SW5wdXRBY2NlcHRPYmplY3QpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoY29uZmlnLnJlYWRvbmx5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBUkQtSVMwNDlSOiB0cnlpbmcgdG8gc2V0IHZhbHVlIG9mIGEgZGlnaXQtaW5wdXQncyByZWFkb25seSBmaWVsZC4gVGhpcyBpcyBlcnJvciBpcyBmYXRhbCB0byB0aGUgZnVuY3Rpb25pbmcgb2YgQXJkaXVtIFVJLiBQbGVhc2UgcmVwb3J0IHRoaXMgaXNzdWUgdG8gdGhlIGNyZWF0b3JzLmBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghaXNGdW5jdGlvbihjb25maWcuYWNjZXB0KSkge1xuICAgICAgY29uc3QgcmVnRXhwID0gaXNSZWdFeHAoY29uZmlnLmFjY2VwdCkgPyBjb25maWcuYWNjZXB0IDogbmV3IFJlZ0V4cChgWyR7X3Nhbml0aXplUmVnRXhwU3RyaW5nKGNvbmZpZy5hY2NlcHQpfV1gKTtcbiAgICAgIGNvbmZpZy5hY2NlcHQgPSBzdHIgPT4gcmVnRXhwLnRlc3Qoc3RyKTtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEFSRC1JUzA0OUE6IGRpZ2l0LWlucHV0J3MgdmFsdWUgdmFsaWRhdG9yIGVuY291bnRlcmVkIGFuIHVuZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIGNvbmZpZydzIFwiYWNjZXB0XCIgcHJvcGVydHkuIEFyZGl1bSBVSSB3YXMgYWJsZSB0byBoYW5kbGUgdGhpcyBpc3N1ZSwgYnV0IHBsZWFzZSByZXBvcnQgaXQgdG8gdGhlIGNyZWF0b3JzLmBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghY2hhcikgcmV0dXJuIGNoYXI7XG5cbiAgICBjb25zdCBjYW5BY2NlcHQgPSBjb25maWcuYWNjZXB0KGNoYXIsIGJlZm9yZSk7XG4gICAgaWYgKCFjYW5BY2NlcHQpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKGNvbmZpZy50cmFuc2Zvcm0pIHtcbiAgICAgIGlmIChjb25maWcudHJhbnNmb3JtID09IFRyYW5zZm9ybVR5cGUuTG93ZXJjYXNlKSB7XG4gICAgICAgIHJldHVybiBjaGFyLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLnRyYW5zZm9ybSA9PSBUcmFuc2Zvcm1UeXBlLlVwcGVyY2FzZSkge1xuICAgICAgICByZXR1cm4gY2hhci50b1VwcGVyQ2FzZSgpO1xuICAgICAgfVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgQVJELUlTMDQ5VDogZGlnaXQtaW5wdXQncyB2YWx1ZSB2YWxpZGF0b3IgZW5jb3VudGVyZWQgYW4gdW5leHBlY3RlZCB2YWx1ZSBvZiB0aGUgY29uZmlnJ3MgXCJ0cmFuc2Zvcm1cIiBwcm9wZXJ0eS4gQXJkaXVtIFVJIHdhcyBhYmxlIHRvIGhhbmRsZSB0aGlzIGlzc3VlLCBidXQgcGxlYXNlIHJlcG9ydCBpdCB0byB0aGUgY3JlYXRvcnMuYFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGNoYXI7XG4gIH1cbn1cbiJdfQ==
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNGLE9BQU8sRUFJTCx5QkFBeUIsRUFDekIsYUFBYSxHQUNkLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUF3Qix3QkFBd0IsRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqSSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFvQixRQUE2QjtRQUE3QixhQUFRLEdBQVIsUUFBUSxDQUFxQjtRQWdCaEMsaUJBQVksR0FBRyxNQUFNLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBRXRELG9CQUFlLEdBQUcsUUFBUSxDQUF5QixHQUFHLEVBQUU7WUFDL0QsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDakMsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2xCLE9BQU87d0JBQ0wsSUFBSSxFQUFFLHdCQUF3QixDQUFDLE1BQU07d0JBQ3JDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTTtxQkFDZixDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsT0FBTztvQkFDTCxJQUFJLEVBQUUsd0JBQXdCLENBQUMs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QUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV2QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRTVCLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pELE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqRCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVix1TUFBdU0sQ0FDeE0sQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBlZmZlY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQXJyYXlQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IGlzQW55U3RyaW5nLCBpc0FycmF5LCBpc0Z1bmN0aW9uLCBpc051bGwsIGlzTnVtYmVyLCBpc1JlZ0V4cCB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7XG4gIERpZ2l0SW5wdXRBY2NlcHRPYmplY3QsXG4gIERpZ2l0SW5wdXRDb25maWcsXG4gIERpZ2l0SW5wdXRPcHRpb24sXG4gIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb24sXG4gIFRyYW5zZm9ybVR5cGUsXG59IGZyb20gJy4vZGlnaXQtaW5wdXQudHlwZXMnO1xuaW1wb3J0IHsgRGlnaXRJbnB1dENvbmZpZ0RhdGEsIERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZSwgRGlnaXRJbnB1dE1vZGVsSG9zdCwgX3Nhbml0aXplUmVnRXhwU3RyaW5nIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC51dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBEaWdpdElucHV0TW9kZWwge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hcmRIb3N0OiBEaWdpdElucHV0TW9kZWxIb3N0KSB7XG4gICAgLy9zZXQgdGhlIHZhbHVlIGFycmF5IHRvIGJlIHRoZSBzYW1lIGxlbmd0aFxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy52YWx1ZS51cGRhdGUoYXJyID0+IHtcbiAgICAgICAgICBpZiAoIWFycikgcmV0dXJuIG5ldyBBcnJheShsZW5ndGgpLmZpbGwobnVsbCk7XG4gICAgICAgICAgaWYgKGFyci5sZW5ndGggPj0gbGVuZ3RoKSByZXR1cm4gYXJyLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIFsuLi5hcnIsIC4uLm5ldyBBcnJheShsZW5ndGggLSBhcnIubGVuZ3RoKS5maWxsKG51bGwpXTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZ0FycmF5ID0gc2lnbmFsPERpZ2l0SW5wdXRPcHRpb25bXT4oW10pO1xuXG4gIHJlYWRvbmx5IGNvbmZpZ0FycmF5RGF0YSA9IGNvbXB1dGVkPERpZ2l0SW5wdXRDb25maWdEYXRhW10+KCgpID0+IHtcbiAgICBsZXQgaW5wdXRJbmRleCA9IDA7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ0FycmF5KCkubWFwKHYgPT4ge1xuICAgICAgaWYgKCdzdGF0aWMnIGluIHYpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUuU3RhdGljLFxuICAgICAgICAgIGNoYXI6IHYuc3RhdGljLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlLklucHV0LFxuICAgICAgICBpbmRleDogaW5wdXRJbmRleCsrLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnQXJyYXlOb1N0YXRpY3MgPSBjb21wdXRlZDxEaWdpdElucHV0QWNjZXB0T2JqZWN0W10+KFxuICAgICgpID0+IHRoaXMuX2NvbmZpZ0FycmF5KCkuZmlsdGVyKHYgPT4gISgnc3RhdGljJyBpbiB2KSkgYXMgRGlnaXRJbnB1dEFjY2VwdE9iamVjdFtdXG4gICk7XG5cbiAgcmVhZG9ubHkgaXNDb25maWdEZWZpbmVkID0gY29tcHV0ZWQoKCk6IGJvb2xlYW4gPT4gdGhpcy5fY29uZmlnQXJyYXkoKS5sZW5ndGggPiAwKTtcblxuICByZWFkb25seSB2YWx1ZSA9IHNpZ25hbDwoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IHN0cmluZ1ZhbHVlID0gY29tcHV0ZWQoXG4gICAgKCk6IHN0cmluZyA9PlxuICAgICAgdGhpcy52YWx1ZSgpXG4gICAgICAgID8ubWFwKHYgPT4gdiA/PyAnICcpXG4gICAgICAgIC5qb2luKCcnKVxuICAgICAgICAudHJpbUVuZCgpID8/ICcnXG4gICk7XG5cbiAgcmVhZG9ubHkgaXNWYWx1ZUZ1bGwgPSBjb21wdXRlZCgoKTogYm9vbGVhbiA9PiB0aGlzLnZhbHVlKCk/LmZpbHRlcih2ID0+IHYpLmxlbmd0aCA9PT0gdGhpcy5fY29uZmlnQXJyYXlOb1N0YXRpY3MoKS5sZW5ndGgpO1xuXG4gIGlzRGVmaW5lZEF0SW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMudmFsdWUoKT8uW2luZGV4XTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodjogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKCFpc0FycmF5KHYpICYmICFpc0FueVN0cmluZyh2KSAmJiAhaXNOdWxsKHYpKSB7XG4gICAgICAvL3dhcm4gd2hlbiB1c2luZyBub24tc3RyaW5nIHZhbHVlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgQVJELVdBMDAyMDogVHJ5aW5nIHRvIHNldCA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIHRvIFwiJHt2fVwiIChvZiB0eXBlICR7dHlwZW9mIHZ9KSwgZXhwZWN0ZWQgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MuYFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgLy9ub3JtYWxpemUgdGhlIHZhbHVlXG4gICAgICB2ID0gdj8udG9TdHJpbmc/LigpID8/IFN0cmluZyh2KTtcbiAgICB9XG4gICAgY29uc3QgdkFycmF5ID0gY29lcmNlQXJyYXlQcm9wZXJ0eSh2KTtcbiAgICBjb25zdCBwcm9ibGVtSW5kZXggPSB2QXJyYXkuZmluZEluZGV4KGVsID0+ICFpc0FueVN0cmluZyhlbCkgfHwgZWwubGVuZ3RoID4gMSk7XG4gICAgaWYgKHByb2JsZW1JbmRleCAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFSRC1GVDAwNDI6IEFycmF5IHBhc3NlZCB0byA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIG11c3Qgb25seSBjb250YWluIHN0cmluZ3Mgb2YgbGVuZ3RoIDEgb3IgMC4gRWxlbWVudCBcIiR7dkFycmF5W3Byb2JsZW1JbmRleF19XCIgYXQgaW5kZXggJHtwcm9ibGVtSW5kZXh9IGRvZXMgbm90IG1hdGNoIHRob3NlIHJlcXVpcmVtZW50cy5gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fd3JpdGVWYWx1ZSh2QXJyYXkpO1xuICB9XG4gIHByaXZhdGUgX3dyaXRlVmFsdWUodjogc3RyaW5nW10gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgb2xkVmFsID0gdGhpcy52YWx1ZSgpO1xuICAgIHRoaXMudmFsdWUuc2V0KHYgJiYgdi5tYXAoZWwgPT4gZWwgfHwgbnVsbCkpO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZUFuZFVwZGF0ZSgpO1xuICAgIHRoaXMuX3VwZGF0ZUlucHV0RWxlbWVudHMoKTtcbiAgICByZXR1cm4gb2xkVmFsICE9PSB2O1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlSW5wdXRFbGVtZW50cygpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUgPz8gW107XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoY29uc3QgaW5wdXRFbCBvZiB0aGlzLl9hcmRIb3N0LmlucHV0cygpKSB7XG4gICAgICBpbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZSgpPy5baV0gPz8gJyc7XG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8hIHNldHRpbmcgY29uZmlnXG4gIHNldENvbmZpZyhjb25maWc6IERpZ2l0SW5wdXRDb25maWcpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWVBbmRVcGRhdGUoKTtcbiAgfVxuICBwcml2YXRlIF9zZXRDb25maWcoY29uZmlnOiBEaWdpdElucHV0Q29uZmlnKTogdm9pZCB7XG4gICAgLy9tYXAgYSBudW1iZXIgdG8gcmVhZHkgb2JqZWN0c1xuICAgIGxldCBjb25maWdBc051bWJlciA9IGlzQW55U3RyaW5nKGNvbmZpZykgPyBOdW1iZXIoY29uZmlnKSA6IG51bGw7XG4gICAgaWYgKGlzTnVtYmVyKGNvbmZpZykgfHwgaXNOdW1iZXIoY29uZmlnQXNOdW1iZXIpKSB7XG4gICAgICBjb25maWdBc051bWJlciA9IGlzTnVtYmVyKGNvbmZpZykgPyBjb25maWcgOiBjb25maWdBc051bWJlciE7XG4gICAgICB0aGlzLl9jb25maWdBcnJheS5zZXQobmV3IEFycmF5KGNvbmZpZ0FzTnVtYmVyKS5maWxsKHsgYWNjZXB0OiAoc3RyOiBzdHJpbmcpID0+IC9bMC05XS8udGVzdChzdHIpIH0pKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy9tYXAgYSBzdHJpbmcgdG8gYW4gYXJyYXlcbiAgICBsZXQgY29uZmlnQXJyOiBzdHJpbmdbXSB8IEV4Y2x1ZGU8RGlnaXRJbnB1dENvbmZpZywgbnVtYmVyIHwgc3RyaW5nPjtcbiAgICBpZiAoaXNBbnlTdHJpbmcoY29uZmlnKSkge1xuICAgICAgY29uZmlnQXJyID0gY29lcmNlQXJyYXlQcm9wZXJ0eShjb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWdBcnIgPSBjb25maWc7XG4gICAgfVxuICAgIC8vbWFwIGFycmF5IHRvIHJlYWR5IG9iamVjdHNcbiAgICB0aGlzLl9jb25maWdBcnJheS5zZXQoXG4gICAgICBjb25maWdBcnIubWFwKCh2LCBpKSA9PiB7XG4gICAgICAgIGlmICghaXNBbnlTdHJpbmcodikpIHtcbiAgICAgICAgICBpZiAoJ2FjY2VwdCcgaW4gdiAmJiAhaXNGdW5jdGlvbih2LmFjY2VwdCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZ0V4cCA9IGlzUmVnRXhwKHYuYWNjZXB0KSA/IHYuYWNjZXB0IDogbmV3IFJlZ0V4cChgWyR7X3Nhbml0aXplUmVnRXhwU3RyaW5nKHYuYWNjZXB0KX1dYCk7XG4gICAgICAgICAgICB2LmFjY2VwdCA9IHN0ciA9PiByZWdFeHAudGVzdChzdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodikge1xuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5OdW1iZXI6XG4gICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvWzAtOV0vLnRlc3Qoc3RyKSB9O1xuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5MZXR0ZXI6XG4gICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvW2EtekEtWl0vLnRlc3Qoc3RyKSB9O1xuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5BbHBoYW51bWVyaWM6XG4gICAgICAgICAgICByZXR1cm4geyBhY2NlcHQ6IHN0ciA9PiAvWzAtOWEtekEtWl0vLnRlc3Qoc3RyKSB9O1xuICAgICAgICAgIGNhc2UgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbi5TcGVjaWFsOlxuICAgICAgICAgICAgcmV0dXJuIHsgYWNjZXB0OiBzdHIgPT4gL1shQCMkJV4mKi1fPSsvXFxcXC4sXS8udGVzdChzdHIpIH07XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKGNvbmZpZ0Fyci5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBUkQtTkYwMDQzUzogPGFyZC1kaWdpdC1pbnB1dD4ncyBjb25maWcgaXMgaW52YWxpZC4gRXhwZWN0ZWQgbnVtYmVyIG9yIGFycmF5LCBnb3QgXCIke3Z9XCJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQVJELU5GMDA0M0I6IEZvdW5kIGludmFsaWQgc3RyaW5nIFwiJHt2fVwiIGluIDxhcmQtZGlnaXQtaW5wdXQ+J3MgY29uZmlnIGF0IGluZGV4ICR7aX1gKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLy8hIHZhbGlkYXRlIGFnYWluc3QgdGhlIGNvbmZpZ1xuICB2YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUoaW5wdXQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGZhbHNlIHwgW2Jvb2xlYW4sIHN0cmluZyB8IG51bGxdIHtcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gdGhpcy5fY29uZmlnQXJyYXlOb1N0YXRpY3MoKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgIGxldCB2ID0gdGhpcy52YWx1ZSgpO1xuICAgIC8vcHJlcGFyZSB0aGUgdmFsdWUgYXJyYXkgaWYgZG9lcyBub3QgZXhpc3RcbiAgICBpZiAoIXYpIHtcbiAgICAgIHRoaXMudmFsdWUuc2V0KFtdKTtcbiAgICB9XG4gICAgdiA9IFtdO1xuICAgIC8vcHJlcGFyZSB0aGUgY2hhcmFjdGVycyBiZWZvcmUgdGhlIGN1cnJlbnQgb25lICh0byBiZSB1c2VkIGluIHZhbGlkYXRpb24pXG4gICAgY29uc3QgYmVmb3JlID0gdGhpcy5zdHJpbmdWYWx1ZSgpLmNoYXJBdChpbmRleCk7XG5cbiAgICAvL3JlbW92ZSB0aGUgb2xkIGNoYXJhY3RlciBmcm9tIHRoZSBpbnB1dCBlbGVtZW50XG4gICAgaWYgKGJlZm9yZSAmJiBpbnB1dC5sZW5ndGggPiAxICYmIGlucHV0Lm1hdGNoKGJlZm9yZSkpIHtcbiAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZShiZWZvcmUsICcnKTtcbiAgICB9XG4gICAgLy91c2Ugb25seSB0aGUgZmlyc3Qgb3IgbGFzdCBjaGFyYWN0ZXIgKGVycm9yIHNhZmV0eSlcbiAgICBjb25zdCBmaXJzdENoYXIgPSBpbnB1dC5jaGFyQXQoMCk7XG4gICAgY29uc3QgbGFzdENoYXIgPSBpbnB1dC5jaGFyQXQoaW5wdXQubGVuZ3RoIC0gMSk7XG4gICAgaW5wdXQgPSBmaXJzdENoYXIgPT09IGJlZm9yZSA/IGxhc3RDaGFyIDogZmlyc3RDaGFyO1xuXG4gICAgLy92YWxpZGF0ZSBhbmQgdHJhbnNmb3JtLCBpZiBuZWNlc3NhcnlcbiAgICBjb25zdCBpbnB1dENoYXIgPSB0aGlzLl92YWxpZGF0ZVNpbmdsZUNoYXIoaW5wdXQsIGJlZm9yZSwgdGhpcy5fY29uZmlnQXJyYXlOb1N0YXRpY3MoKVtpbmRleF0pO1xuXG4gICAgLy9nZXQgdGhlIGNvcnJlc3BvbmRpbmcgSFRNTCBpbnB1dCBlbGVtZW50XG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuX2FyZEhvc3QuaW5wdXRzKClbaW5kZXhdO1xuICAgIGlmICghaW5wdXRFbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkFSRC1JUzAwNDg6IDxhcmQtZGlnaXQtaW5wdXQ+J3MgdmFsdWUgY2hhbmdlZCwgYnV0IGl0cyBjb3JyZXNwb25kaW5nIGlucHV0IGVsZW1lbnQgY291bGQgbm90IGJlIGZvdW5kLiBUaGlzIGlzIGVycm9yIGlzIGZhdGFsIHRvIHRoZSBmdW5jdGlvbmluZyBvZiBBcmRpdW0gVUkuIFBsZWFzZSByZXBvcnQgdGhpcyBpc3N1ZSB0byB0aGUgY3JlYXRvcnMuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIC8vdXBkYXRlIHRoZSBpbnB1dCBlbGVtZW50IGFuZCB2YWx1ZSBhcnJheVxuICAgIGNvbnN0IG5ld1ZhbCA9IGlucHV0Q2hhciA/PyBiZWZvcmU7XG4gICAgaW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbmV3VmFsID8/ICcnO1xuXG4gICAgdGhpcy52YWx1ZS51cGRhdGUoYXJyID0+IHtcbiAgICAgIGlmICghYXJyKSBhcnIgPSBbXTtcbiAgICAgIGNvbnN0IG5ld0FyciA9IFsuLi5hcnJdO1xuICAgICAgbmV3QXJyW2luZGV4XSA9IG5ld1ZhbCB8fCBudWxsO1xuICAgICAgcmV0dXJuIG5ld0FycjtcbiAgICB9KTtcbiAgICAvL3JldHVybiBjaGFuZ2VzIG1hcmtlciBhbmQgdmFsaWRhdGVkIHZhbHVlXG4gICAgcmV0dXJuIFtuZXdWYWwgIT09IGJlZm9yZSwgaW5wdXRDaGFyXTtcbiAgfVxuICB2YWxpZGF0ZVZhbHVlQW5kVXBkYXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlKCk7XG4gICAgaWYgKCF2KSByZXR1cm47XG5cbiAgICBsZXQgYmVmb3JlID0gJyc7XG4gICAgY29uc3QgbmV3VmFsdWU6IChzdHJpbmcgfCBudWxsKVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbih0aGlzLl9jb25maWdBcnJheU5vU3RhdGljcygpLmxlbmd0aCwgdi5sZW5ndGgpOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYXIgPSB2W2ldO1xuICAgICAgYmVmb3JlICs9IGNoYXIgPz8gJyAnO1xuXG4gICAgICBpZiAoIWNoYXIpIHtcbiAgICAgICAgbmV3VmFsdWUucHVzaChjaGFyKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLl9jb25maWdBcnJheU5vU3RhdGljcygpW2ldO1xuXG4gICAgICBjb25zdCBuZXdDaGFyID0gdGhpcy5fdmFsaWRhdGVTaW5nbGVDaGFyKGNoYXIsIGJlZm9yZSwgY29uZmlnKTtcbiAgICAgIG5ld1ZhbHVlLnB1c2gobmV3Q2hhcik7XG4gICAgfVxuICAgIHRoaXMudmFsdWUuc2V0KG5ld1ZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF92YWxpZGF0ZVNpbmdsZUNoYXIoY2hhcjogc3RyaW5nIHwgbnVsbCwgYmVmb3JlOiBzdHJpbmcsIGNvbmZpZzogRGlnaXRJbnB1dEFjY2VwdE9iamVjdCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmIChjb25maWcucmVhZG9ubHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEFSRC1JUzAwNDlSOiB0cnlpbmcgdG8gc2V0IHZhbHVlIG9mIGEgPGFyZC1kaWdpdC1pbnB1dD4ncyByZWFkb25seSBmaWVsZC4gVGhpcyBpcyBlcnJvciBpcyBmYXRhbCB0byB0aGUgZnVuY3Rpb25pbmcgb2YgQXJkaXVtIFVJLiBQbGVhc2UgcmVwb3J0IHRoaXMgaXNzdWUgdG8gdGhlIGNyZWF0b3JzLmBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghaXNGdW5jdGlvbihjb25maWcuYWNjZXB0KSkge1xuICAgICAgY29uc3QgcmVnRXhwID0gaXNSZWdFeHAoY29uZmlnLmFjY2VwdCkgPyBjb25maWcuYWNjZXB0IDogbmV3IFJlZ0V4cChgWyR7X3Nhbml0aXplUmVnRXhwU3RyaW5nKGNvbmZpZy5hY2NlcHQpfV1gKTtcbiAgICAgIGNvbmZpZy5hY2NlcHQgPSBzdHIgPT4gcmVnRXhwLnRlc3Qoc3RyKTtcbiAgICB9XG4gICAgaWYgKCFjaGFyKSByZXR1cm4gY2hhcjtcblxuICAgIGNvbnN0IGNhbkFjY2VwdCA9IGNvbmZpZy5hY2NlcHQoY2hhciwgYmVmb3JlKTtcbiAgICBpZiAoIWNhbkFjY2VwdCkgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAoY29uZmlnLnRyYW5zZm9ybSkge1xuICAgICAgaWYgKGNvbmZpZy50cmFuc2Zvcm0gPT09IFRyYW5zZm9ybVR5cGUuTG93ZXJjYXNlKSB7XG4gICAgICAgIHJldHVybiBjaGFyLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgICBpZiAoY29uZmlnLnRyYW5zZm9ybSA9PT0gVHJhbnNmb3JtVHlwZS5VcHBlcmNhc2UpIHtcbiAgICAgICAgcmV0dXJuIGNoYXIudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEFSRC1JUzAwNDlUOiA8YXJkLWRpZ2l0LWlucHV0PidzIHZhbHVlIHZhbGlkYXRvciBlbmNvdW50ZXJlZCBhbiB1bmV4cGVjdGVkIHZhbHVlIG9mIHRoZSBjb25maWcncyBcInRyYW5zZm9ybVwiIHByb3BlcnR5LiBBcmRpdW0gVUkgd2FzIGFibGUgdG8gaGFuZGxlIHRoaXMgaXNzdWUsIGJ1dCBwbGVhc2UgcmVwb3J0IGl0IHRvIHRoZSBjcmVhdG9ycy5gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gY2hhcjtcbiAgfVxufVxuIl19
@@ -3,11 +3,11 @@ import { CommonModule } from '@angular/common';
3
3
  import { ArdiumDigitInputComponent } from './digit-input.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export class ArdiumDigitInputModule {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputModule, declarations: [ArdiumDigitInputComponent], imports: [CommonModule], exports: [ArdiumDigitInputComponent] }); }
8
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputModule, imports: [CommonModule] }); }
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumDigitInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: ArdiumDigitInputModule, declarations: [ArdiumDigitInputComponent], imports: [CommonModule], exports: [ArdiumDigitInputComponent] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumDigitInputModule, imports: [CommonModule] }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumDigitInputModule, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumDigitInputModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  declarations: [ArdiumDigitInputComponent],
@@ -12,4 +12,4 @@ export const DigitInputPrimitiveOption = {
12
12
  Alphanumeric: 'alphanumeric',
13
13
  Special: 'special',
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFdBQVc7Q0FDZCxDQUFDO0FBR1gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxXQUFXO0NBQ2QsQ0FBQztBQUdYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHO0lBQ3ZDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxjQUFjO0lBQzVCLE9BQU8sRUFBRSxTQUFTO0NBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBEaWdpdElucHV0U2hhcGUgPSB7XG4gIFNxdWFyZTogJ3NxdWFyZScsXG4gIFJlY3RhbmdsZTogJ3JlY3RhbmdsZScsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dFNoYXBlID0gKHR5cGVvZiBEaWdpdElucHV0U2hhcGUpW2tleW9mIHR5cGVvZiBEaWdpdElucHV0U2hhcGVdO1xuXG5leHBvcnQgY29uc3QgVHJhbnNmb3JtVHlwZSA9IHtcbiAgVXBwZXJjYXNlOiAndXBwZXJjYXNlJyxcbiAgTG93ZXJjYXNlOiAnbG93ZXJjYXNlJyxcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1UeXBlID0gKHR5cGVvZiBUcmFuc2Zvcm1UeXBlKVtrZXlvZiB0eXBlb2YgVHJhbnNmb3JtVHlwZV07XG5cbmV4cG9ydCBjb25zdCBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uID0ge1xuICBOdW1iZXI6ICdudW1iZXInLFxuICBMZXR0ZXI6ICdsZXR0ZXInLFxuICBBbHBoYW51bWVyaWM6ICdhbHBoYW51bWVyaWMnLFxuICBTcGVjaWFsOiAnc3BlY2lhbCcsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbiA9ICh0eXBlb2YgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbilba2V5b2YgdHlwZW9mIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb25dO1xuXG5leHBvcnQgdHlwZSBEaWdpdElucHV0QWNjZXB0T2JqZWN0ID0ge1xuICBhY2NlcHQ6IHN0cmluZyB8IFJlZ0V4cCB8ICgoY2hhcjogc3RyaW5nLCBjaGFyc0JlZm9yZTogc3RyaW5nKSA9PiBib29sZWFuKTtcbiAgdHJhbnNmb3JtPzogVHJhbnNmb3JtVHlwZSB8IG51bGw7XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBEaWdpdElucHV0U3RhdGljT2JqZWN0ID0geyBzdGF0aWM6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBEaWdpdElucHV0T3B0aW9uID0gRGlnaXRJbnB1dEFjY2VwdE9iamVjdCB8IERpZ2l0SW5wdXRTdGF0aWNPYmplY3Q7XG5cbmV4cG9ydCB0eXBlIERpZ2l0SW5wdXRDb25maWcgPSAoRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbiB8IERpZ2l0SW5wdXRPcHRpb24pW10gfCBzdHJpbmcgfCBudW1iZXI7XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFdBQVc7Q0FDZCxDQUFDO0FBR1gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxXQUFXO0NBQ2QsQ0FBQztBQUdYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHO0lBQ3ZDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxjQUFjO0lBQzVCLE9BQU8sRUFBRSxTQUFTO0NBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBEaWdpdElucHV0U2hhcGUgPSB7XG4gIFNxdWFyZTogJ3NxdWFyZScsXG4gIFJlY3RhbmdsZTogJ3JlY3RhbmdsZScsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dFNoYXBlID0gKHR5cGVvZiBEaWdpdElucHV0U2hhcGUpW2tleW9mIHR5cGVvZiBEaWdpdElucHV0U2hhcGVdO1xuXG5leHBvcnQgY29uc3QgVHJhbnNmb3JtVHlwZSA9IHtcbiAgVXBwZXJjYXNlOiAndXBwZXJjYXNlJyxcbiAgTG93ZXJjYXNlOiAnbG93ZXJjYXNlJyxcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1UeXBlID0gKHR5cGVvZiBUcmFuc2Zvcm1UeXBlKVtrZXlvZiB0eXBlb2YgVHJhbnNmb3JtVHlwZV07XG5cbmV4cG9ydCBjb25zdCBEaWdpdElucHV0UHJpbWl0aXZlT3B0aW9uID0ge1xuICBOdW1iZXI6ICdudW1iZXInLFxuICBMZXR0ZXI6ICdsZXR0ZXInLFxuICBBbHBoYW51bWVyaWM6ICdhbHBoYW51bWVyaWMnLFxuICBTcGVjaWFsOiAnc3BlY2lhbCcsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbiA9ICh0eXBlb2YgRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbilba2V5b2YgdHlwZW9mIERpZ2l0SW5wdXRQcmltaXRpdmVPcHRpb25dO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpZ2l0SW5wdXRBY2NlcHRPYmplY3Qge1xuICBhY2NlcHQ6IHN0cmluZyB8IFJlZ0V4cCB8ICgoY2hhcjogc3RyaW5nLCBjaGFyc0JlZm9yZTogc3RyaW5nKSA9PiBib29sZWFuKTtcbiAgdHJhbnNmb3JtPzogVHJhbnNmb3JtVHlwZSB8IG51bGw7XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRGlnaXRJbnB1dFN0YXRpY09iamVjdCB7XG4gIHN0YXRpYzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBEaWdpdElucHV0T3B0aW9uID0gRGlnaXRJbnB1dEFjY2VwdE9iamVjdCB8IERpZ2l0SW5wdXRTdGF0aWNPYmplY3Q7XG5cbmV4cG9ydCB0eXBlIERpZ2l0SW5wdXRDb25maWcgPSAoRGlnaXRJbnB1dFByaW1pdGl2ZU9wdGlvbiB8IERpZ2l0SW5wdXRPcHRpb24pW10gfCBzdHJpbmcgfCBudW1iZXI7XG4iXX0=
@@ -5,4 +5,4 @@ export const DigitInputConfigDataType = {
5
5
  export function _sanitizeRegExpString(str) {
6
6
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
7
7
  }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFhQSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0NBQ1IsQ0FBQztBQUdYLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFXO0lBQy9DLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIERpZ2l0SW5wdXRDb25maWdEYXRhID0ge1xuICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGU7XG4gIGNoYXI/OiBzdHJpbmc7XG4gIGluZGV4PzogbnVtYmVyO1xuICByZWFkb25seT86IGJvb2xlYW47XG59O1xuZXhwb3J0IGludGVyZmFjZSBEaWdpdElucHV0TW9kZWxIb3N0IHtcbiAgaW5wdXRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj47XG4gIGNvbmZpZ0FycmF5RGF0YTogRGlnaXRJbnB1dENvbmZpZ0RhdGFbXTtcbn1cblxuZXhwb3J0IGNvbnN0IERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZSA9IHtcbiAgSW5wdXQ6ICdpbnB1dCcsXG4gIFN0YXRpYzogJ3N0YXRpYycsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlID0gKHR5cGVvZiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUpW2tleW9mIHR5cGVvZiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGVdO1xuXG5leHBvcnQgZnVuY3Rpb24gX3Nhbml0aXplUmVnRXhwU3RyaW5nKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpO1xufVxuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9kaWdpdC1pbnB1dC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0NBQ1IsQ0FBQztBQUdYLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFXO0lBQy9DLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlnaXRJbnB1dENvbmZpZ0RhdGEge1xuICB0eXBlOiBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGU7XG4gIGNoYXI/OiBzdHJpbmc7XG4gIGluZGV4PzogbnVtYmVyO1xuICByZWFkb25seT86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIERpZ2l0SW5wdXRNb2RlbEhvc3Qge1xuICByZWFkb25seSBpbnB1dHM6IFNpZ25hbDxyZWFkb25seSBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+W10+O1xufVxuXG5leHBvcnQgY29uc3QgRGlnaXRJbnB1dENvbmZpZ0RhdGFUeXBlID0ge1xuICBJbnB1dDogJ2lucHV0JyxcbiAgU3RhdGljOiAnc3RhdGljJyxcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBEaWdpdElucHV0Q29uZmlnRGF0YVR5cGUgPSAodHlwZW9mIERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZSlba2V5b2YgdHlwZW9mIERpZ2l0SW5wdXRDb25maWdEYXRhVHlwZV07XG5cbmV4cG9ydCBmdW5jdGlvbiBfc2FuaXRpemVSZWdFeHBTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyk7XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './digit-input.module';
2
+ export * from './digit-input.component';
3
+ export * from './digit-input.types';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kaWdpdC1pbnB1dC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlnaXQtaW5wdXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlnaXQtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZGlnaXQtaW5wdXQudHlwZXMnO1xuIl19