@ardium-ui/ui 2.3.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/esm2022/lib/_internal/boolean-component.mjs +3 -2
  2. package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +9 -6
  3. package/esm2022/lib/_internal/disablable-component.mjs +13 -8
  4. package/esm2022/lib/_internal/focusable-component.mjs +11 -4
  5. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +30 -23
  6. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +4 -5
  7. package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +7 -8
  8. package/esm2022/lib/_internal/models/pagination.model.mjs +3 -3
  9. package/esm2022/lib/_internal/models/queue.mjs +59 -0
  10. package/esm2022/lib/_internal/ngmodel-component.mjs +4 -3
  11. package/esm2022/lib/_internal/selectable-list-component.mjs +31 -42
  12. package/esm2022/lib/badge/badge.defaults.mjs +20 -0
  13. package/esm2022/lib/badge/badge.directive.mjs +18 -15
  14. package/esm2022/lib/badge/index.mjs +3 -2
  15. package/esm2022/lib/buttons/_button-base.defaults.mjs +16 -0
  16. package/esm2022/lib/buttons/_button-base.mjs +12 -12
  17. package/esm2022/lib/buttons/button/button.component.mjs +15 -15
  18. package/esm2022/lib/buttons/button/button.defaults.mjs +17 -0
  19. package/esm2022/lib/buttons/button/index.mjs +3 -2
  20. package/esm2022/lib/buttons/fab/fab.component.mjs +16 -15
  21. package/esm2022/lib/buttons/fab/fab.defaults.mjs +17 -0
  22. package/esm2022/lib/buttons/fab/index.mjs +3 -2
  23. package/esm2022/lib/buttons/general-button.types.mjs +2 -2
  24. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +16 -13
  25. package/esm2022/lib/buttons/icon-button/icon-button.defaults.mjs +9 -0
  26. package/esm2022/lib/buttons/icon-button/index.mjs +3 -2
  27. package/esm2022/lib/card/card.children.mjs +15 -15
  28. package/esm2022/lib/card/card.component.mjs +6 -5
  29. package/esm2022/lib/card/card.defaults.mjs +17 -0
  30. package/esm2022/lib/card/index.mjs +4 -3
  31. package/esm2022/lib/checkbox/checkbox.component.mjs +16 -19
  32. package/esm2022/lib/checkbox/checkbox.defaults.mjs +17 -0
  33. package/esm2022/lib/checkbox/index.mjs +3 -2
  34. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +19 -21
  35. package/esm2022/lib/checkbox-list/checkbox-list.defaults.mjs +25 -0
  36. package/esm2022/lib/checkbox-list/index.mjs +3 -2
  37. package/esm2022/lib/chip/chip.component.mjs +17 -16
  38. package/esm2022/lib/chip/chip.defaults.mjs +20 -0
  39. package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +18 -20
  40. package/esm2022/lib/chip/deletable-chip/deletable-chip.defaults.mjs +17 -0
  41. package/esm2022/lib/chip/index.mjs +5 -2
  42. package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +21 -21
  43. package/esm2022/lib/chip/selectable-chip/selectable-chip.defaults.mjs +18 -0
  44. package/esm2022/lib/color/color-display/color-display.component.mjs +13 -12
  45. package/esm2022/lib/color/color-display/color-display.defaults.mjs +16 -0
  46. package/esm2022/lib/color/color-display/index.mjs +3 -2
  47. package/esm2022/lib/dialog/dialog.component.mjs +23 -22
  48. package/esm2022/lib/dialog/dialog.defaults.mjs +24 -0
  49. package/esm2022/lib/dialog/dialog.types.mjs +1 -1
  50. package/esm2022/lib/dialog/index.mjs +4 -3
  51. package/esm2022/lib/divider/divider.component.mjs +10 -12
  52. package/esm2022/lib/divider/divider.defaults.mjs +13 -0
  53. package/esm2022/lib/divider/index.mjs +3 -2
  54. package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +10 -9
  55. package/esm2022/lib/dropdown-panel/dropdown-panel.defaults.mjs +17 -0
  56. package/esm2022/lib/dropdown-panel/index.mjs +3 -2
  57. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +14 -12
  58. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.defaults.mjs +18 -0
  59. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +1 -1
  60. package/esm2022/lib/file-inputs/file-drop-area/index.mjs +3 -2
  61. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +23 -25
  62. package/esm2022/lib/file-inputs/file-input/file-input.defaults.mjs +23 -0
  63. package/esm2022/lib/file-inputs/file-input/index.mjs +3 -2
  64. package/esm2022/lib/file-inputs/file-input-base.defaults.mjs +8 -0
  65. package/esm2022/lib/file-inputs/file-input-base.mjs +2 -2
  66. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +12 -8
  67. package/esm2022/lib/form-field-frame/form-field-frame.defaults.mjs +18 -0
  68. package/esm2022/lib/form-field-frame/index.mjs +3 -2
  69. package/esm2022/lib/icon/icon.component.mjs +6 -4
  70. package/esm2022/lib/icon/icon.defaults.mjs +17 -0
  71. package/esm2022/lib/icon/index.mjs +3 -2
  72. package/esm2022/lib/inputs/_simple-input-base.mjs +159 -0
  73. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +17 -15
  74. package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +21 -0
  75. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +1 -1
  76. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
  77. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
  78. package/esm2022/lib/inputs/digit-input/index.mjs +3 -2
  79. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +24 -23
  80. package/esm2022/lib/inputs/hex-input/hex-input.defaults.mjs +26 -0
  81. package/esm2022/lib/inputs/hex-input/hex-input.model.mjs +97 -0
  82. package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +1 -1
  83. package/esm2022/lib/inputs/hex-input/index.mjs +3 -2
  84. package/esm2022/lib/inputs/input/index.mjs +1 -1
  85. package/esm2022/lib/inputs/input/input.component.mjs +28 -48
  86. package/esm2022/lib/inputs/input/input.defaults.mjs +17 -0
  87. package/esm2022/lib/inputs/input/input.directives.mjs +1 -1
  88. package/esm2022/lib/inputs/input/input.module.mjs +1 -1
  89. package/esm2022/lib/inputs/input-transformers.mjs +1 -1
  90. package/esm2022/lib/inputs/input-utils.mjs +1 -1
  91. package/esm2022/lib/inputs/number-input/index.mjs +3 -2
  92. package/esm2022/lib/inputs/number-input/number-input.component.mjs +34 -30
  93. package/esm2022/lib/inputs/number-input/number-input.defaults.mjs +27 -0
  94. package/esm2022/lib/inputs/password-input/index.mjs +3 -2
  95. package/esm2022/lib/inputs/password-input/password-input.component.mjs +23 -18
  96. package/esm2022/lib/inputs/password-input/password-input.defaults.mjs +24 -0
  97. package/esm2022/lib/inputs/password-input/password-input.types.mjs +1 -1
  98. package/esm2022/lib/inputs/simple-input/index.mjs +3 -2
  99. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +15 -145
  100. package/esm2022/lib/inputs/simple-input/simple-input.defaults.mjs +25 -0
  101. package/esm2022/lib/kbd/index.mjs +2 -1
  102. package/esm2022/lib/kbd/kbd.component.mjs +6 -4
  103. package/esm2022/lib/kbd/kbd.defaults.mjs +15 -0
  104. package/esm2022/lib/kbd/kbd.directive.mjs +1 -1
  105. package/esm2022/lib/kbd/kbd.pipe.mjs +7 -3
  106. package/esm2022/lib/kbd-shortcut/index.mjs +3 -2
  107. package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +12 -7
  108. package/esm2022/lib/kbd-shortcut/kbd-shortcut.defaults.mjs +8 -0
  109. package/esm2022/lib/modal/index.mjs +3 -2
  110. package/esm2022/lib/modal/modal.component.mjs +14 -11
  111. package/esm2022/lib/modal/modal.defaults.mjs +20 -0
  112. package/esm2022/lib/option/index.mjs +1 -1
  113. package/esm2022/lib/option/option.component.mjs +1 -1
  114. package/esm2022/lib/progress-bar/index.mjs +4 -3
  115. package/esm2022/lib/progress-bar/progress-bar.component.mjs +19 -18
  116. package/esm2022/lib/progress-bar/progress-bar.defaults.mjs +21 -0
  117. package/esm2022/lib/progress-bar/progress-bar.types.mjs +1 -1
  118. package/esm2022/lib/progress-circle/index.mjs +4 -3
  119. package/esm2022/lib/progress-circle/progress-circle.component.mjs +18 -22
  120. package/esm2022/lib/progress-circle/progress-circle.defaults.mjs +21 -0
  121. package/esm2022/lib/progress-circle/progress-circle.module.mjs +4 -4
  122. package/esm2022/lib/progress-circle/progress-circle.types.mjs +1 -1
  123. package/esm2022/lib/radio/index.mjs +4 -3
  124. package/esm2022/lib/radio/radio/radio.component.mjs +13 -10
  125. package/esm2022/lib/radio/radio/radio.defaults.mjs +16 -0
  126. package/esm2022/lib/radio/radio-group.component.mjs +7 -7
  127. package/esm2022/lib/search-functions.mjs +2 -2
  128. package/esm2022/lib/segment/index.mjs +3 -2
  129. package/esm2022/lib/segment/segment.component.mjs +22 -21
  130. package/esm2022/lib/segment/segment.defaults.mjs +26 -0
  131. package/esm2022/lib/segment/segment.directives.mjs +1 -1
  132. package/esm2022/lib/select/index.mjs +3 -2
  133. package/esm2022/lib/select/select.component.mjs +76 -101
  134. package/esm2022/lib/select/select.defaults.mjs +53 -0
  135. package/esm2022/lib/select/select.directive.mjs +1 -1
  136. package/esm2022/lib/select/select.types.mjs +1 -1
  137. package/esm2022/lib/slide-toggle/index.mjs +2 -1
  138. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +17 -15
  139. package/esm2022/lib/slide-toggle/slide-toggle.defaults.mjs +21 -0
  140. package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +1 -1
  141. package/esm2022/lib/slider/abstract-slider.mjs +44 -34
  142. package/esm2022/lib/slider/index.mjs +5 -4
  143. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +13 -9
  144. package/esm2022/lib/slider/slider.component.mjs +13 -9
  145. package/esm2022/lib/slider/slider.defaults.mjs +14 -0
  146. package/esm2022/lib/slider/slider.module.mjs +1 -1
  147. package/esm2022/lib/slider/slider.types.mjs +1 -1
  148. package/esm2022/lib/snackbar/snackbar-ref.mjs +1 -1
  149. package/esm2022/lib/snackbar/snackbar.component.mjs +3 -3
  150. package/esm2022/lib/snackbar/snackbar.service.mjs +10 -14
  151. package/esm2022/lib/snackbar/snackbar.token.mjs +12 -6
  152. package/esm2022/lib/snackbar/snackbar.types.mjs +1 -1
  153. package/esm2022/lib/spinner/index.mjs +3 -2
  154. package/esm2022/lib/spinner/spinner.component.mjs +7 -6
  155. package/esm2022/lib/spinner/spinner.defaults.mjs +14 -0
  156. package/esm2022/lib/star/index.mjs +3 -2
  157. package/esm2022/lib/star/star-button/index.mjs +3 -2
  158. package/esm2022/lib/star/star-button/star-button.component.mjs +14 -11
  159. package/esm2022/lib/star/star-button/star-button.defaults.mjs +18 -0
  160. package/esm2022/lib/star/star-display/index.mjs +3 -2
  161. package/esm2022/lib/star/star-display/star-display.component.mjs +10 -8
  162. package/esm2022/lib/star/star-display/star-display.defaults.mjs +16 -0
  163. package/esm2022/lib/star/star-input/index.mjs +3 -2
  164. package/esm2022/lib/star/star-input/star-input.component.mjs +14 -11
  165. package/esm2022/lib/star/star-input/star-input.defaults.mjs +17 -0
  166. package/esm2022/lib/star/star.component.mjs +15 -8
  167. package/esm2022/lib/star/star.defaults.mjs +15 -0
  168. package/esm2022/lib/statebox/index.mjs +2 -1
  169. package/esm2022/lib/statebox/statebox.component.mjs +19 -25
  170. package/esm2022/lib/statebox/statebox.defaults.mjs +20 -0
  171. package/esm2022/lib/statebox/statebox.types.mjs +1 -1
  172. package/esm2022/lib/tabber/index.mjs +5 -3
  173. package/esm2022/lib/tabber/tab/tab.component.mjs +7 -5
  174. package/esm2022/lib/tabber/tab/tab.defaults.mjs +13 -0
  175. package/esm2022/lib/tabber/tabber.component.mjs +13 -11
  176. package/esm2022/lib/tabber/tabber.defaults.mjs +19 -0
  177. package/esm2022/lib/tabber/tabber.module.mjs +1 -1
  178. package/esm2022/lib/table/index.mjs +3 -2
  179. package/esm2022/lib/table/table-item-storage.mjs +4 -4
  180. package/esm2022/lib/table/table.component.mjs +69 -50
  181. package/esm2022/lib/table/table.defaults.mjs +53 -0
  182. package/esm2022/lib/table/table.directives.mjs +1 -1
  183. package/esm2022/lib/table/table.module.mjs +8 -7
  184. package/esm2022/lib/table-from-csv/index.mjs +3 -2
  185. package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +44 -44
  186. package/esm2022/lib/table-from-csv/table-from-csv.defaults.mjs +15 -0
  187. package/esm2022/lib/table-pagination/index.mjs +3 -2
  188. package/esm2022/lib/table-pagination/table-pagination.component.mjs +13 -9
  189. package/esm2022/lib/table-pagination/table-pagination.defaults.mjs +25 -0
  190. package/esm2022/lib/types/button.types.mjs +1 -1
  191. package/esm2022/lib/types/item-storage.types.mjs +1 -1
  192. package/esm2022/lib/types/utility.types.mjs +1 -1
  193. package/esm2022/public-api.mjs +1 -1
  194. package/fesm2022/ardium-ui-ui.mjs +3049 -2265
  195. package/fesm2022/ardium-ui-ui.mjs.map +1 -1
  196. package/lib/_internal/boolean-component.d.ts +5 -1
  197. package/lib/_internal/clear-button/clear-button.component.d.ts +1 -0
  198. package/lib/_internal/disablable-component.d.ts +9 -2
  199. package/lib/_internal/focusable-component.d.ts +6 -1
  200. package/lib/_internal/item-storages/dropdown-item-storage.d.ts +9 -19
  201. package/lib/_internal/item-storages/simple-item-storage.d.ts +1 -1
  202. package/lib/_internal/item-storages/simplest-item-storage.d.ts +3 -3
  203. package/lib/_internal/models/pagination.model.d.ts +2 -2
  204. package/lib/_internal/ngmodel-component.d.ts +6 -2
  205. package/lib/_internal/selectable-list-component.d.ts +18 -13
  206. package/lib/badge/badge.defaults.d.ts +13 -0
  207. package/lib/badge/badge.directive.d.ts +4 -4
  208. package/lib/badge/index.d.ts +2 -1
  209. package/lib/buttons/_button-base.d.ts +6 -1
  210. package/lib/buttons/_button-base.defaults.d.ts +15 -0
  211. package/lib/buttons/button/button.component.d.ts +4 -3
  212. package/lib/buttons/button/button.defaults.d.ts +11 -0
  213. package/lib/buttons/button/index.d.ts +2 -1
  214. package/lib/buttons/fab/fab.component.d.ts +5 -6
  215. package/lib/buttons/fab/fab.defaults.d.ts +8 -0
  216. package/lib/buttons/fab/index.d.ts +2 -1
  217. package/lib/buttons/general-button.types.d.ts +2 -2
  218. package/lib/buttons/icon-button/icon-button.component.d.ts +3 -0
  219. package/lib/buttons/icon-button/icon-button.defaults.d.ts +6 -0
  220. package/lib/buttons/icon-button/index.d.ts +2 -1
  221. package/lib/card/card.children.d.ts +1 -1
  222. package/lib/card/card.component.d.ts +1 -0
  223. package/lib/card/card.defaults.d.ts +10 -0
  224. package/lib/card/index.d.ts +3 -2
  225. package/lib/checkbox/checkbox.component.d.ts +4 -2
  226. package/lib/checkbox/checkbox.defaults.d.ts +9 -0
  227. package/lib/checkbox/index.d.ts +2 -1
  228. package/lib/checkbox-list/checkbox-list.component.d.ts +4 -5
  229. package/lib/checkbox-list/checkbox-list.defaults.d.ts +19 -0
  230. package/lib/checkbox-list/index.d.ts +2 -1
  231. package/lib/chip/chip.component.d.ts +3 -0
  232. package/lib/chip/chip.defaults.d.ts +15 -0
  233. package/lib/chip/deletable-chip/deletable-chip.component.d.ts +3 -3
  234. package/lib/chip/deletable-chip/deletable-chip.defaults.d.ts +8 -0
  235. package/lib/chip/index.d.ts +4 -1
  236. package/lib/chip/selectable-chip/selectable-chip.component.d.ts +3 -3
  237. package/lib/chip/selectable-chip/selectable-chip.defaults.d.ts +9 -0
  238. package/lib/color/color-display/color-display.component.d.ts +2 -1
  239. package/lib/color/color-display/color-display.defaults.d.ts +9 -0
  240. package/lib/color/color-display/index.d.ts +2 -1
  241. package/lib/dialog/dialog.component.d.ts +1 -0
  242. package/lib/dialog/dialog.defaults.d.ts +16 -0
  243. package/lib/dialog/index.d.ts +3 -2
  244. package/lib/divider/divider.component.d.ts +1 -1
  245. package/lib/divider/divider.defaults.d.ts +6 -0
  246. package/lib/divider/index.d.ts +2 -1
  247. package/lib/dropdown-panel/dropdown-panel.component.d.ts +1 -0
  248. package/lib/dropdown-panel/dropdown-panel.defaults.d.ts +10 -0
  249. package/lib/dropdown-panel/index.d.ts +2 -1
  250. package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +5 -2
  251. package/lib/file-inputs/file-drop-area/file-drop-area.defaults.d.ts +10 -0
  252. package/lib/file-inputs/file-drop-area/index.d.ts +2 -1
  253. package/lib/file-inputs/file-input/file-input.component.d.ts +4 -4
  254. package/lib/file-inputs/file-input/file-input.defaults.d.ts +15 -0
  255. package/lib/file-inputs/file-input/index.d.ts +2 -1
  256. package/lib/file-inputs/file-input-base.d.ts +2 -0
  257. package/lib/file-inputs/file-input-base.defaults.d.ts +7 -0
  258. package/lib/form-field-frame/form-field-frame.component.d.ts +3 -0
  259. package/lib/form-field-frame/form-field-frame.defaults.d.ts +10 -0
  260. package/lib/form-field-frame/index.d.ts +2 -1
  261. package/lib/icon/icon.component.d.ts +7 -3
  262. package/lib/icon/icon.defaults.d.ts +11 -0
  263. package/lib/icon/index.d.ts +2 -1
  264. package/lib/inputs/_simple-input-base.d.ts +62 -0
  265. package/lib/inputs/digit-input/digit-input.component.d.ts +3 -0
  266. package/lib/inputs/digit-input/digit-input.defaults.d.ts +13 -0
  267. package/lib/inputs/digit-input/index.d.ts +2 -1
  268. package/lib/inputs/hex-input/hex-input.component.d.ts +4 -4
  269. package/lib/inputs/hex-input/hex-input.defaults.d.ts +19 -0
  270. package/lib/inputs/{hex-input.model.d.ts → hex-input/hex-input.model.d.ts} +2 -2
  271. package/lib/inputs/hex-input/index.d.ts +2 -1
  272. package/lib/inputs/input/input.component.d.ts +10 -17
  273. package/lib/inputs/input/input.defaults.d.ts +9 -0
  274. package/lib/inputs/number-input/index.d.ts +2 -1
  275. package/lib/inputs/number-input/number-input.component.d.ts +3 -1
  276. package/lib/inputs/number-input/number-input.defaults.d.ts +19 -0
  277. package/lib/inputs/password-input/index.d.ts +2 -1
  278. package/lib/inputs/password-input/password-input.component.d.ts +3 -0
  279. package/lib/inputs/password-input/password-input.defaults.d.ts +17 -0
  280. package/lib/inputs/simple-input/index.d.ts +2 -1
  281. package/lib/inputs/simple-input/simple-input.component.d.ts +6 -50
  282. package/lib/inputs/simple-input/simple-input.defaults.d.ts +6 -0
  283. package/lib/kbd/index.d.ts +1 -0
  284. package/lib/kbd/kbd.component.d.ts +1 -0
  285. package/lib/kbd/kbd.defaults.d.ts +8 -0
  286. package/lib/kbd/kbd.pipe.d.ts +1 -0
  287. package/lib/kbd-shortcut/index.d.ts +2 -1
  288. package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +2 -0
  289. package/lib/kbd-shortcut/kbd-shortcut.defaults.d.ts +8 -0
  290. package/lib/modal/index.d.ts +2 -1
  291. package/lib/modal/modal.component.d.ts +1 -0
  292. package/lib/modal/modal.defaults.d.ts +14 -0
  293. package/lib/progress-bar/index.d.ts +3 -2
  294. package/lib/progress-bar/progress-bar.component.d.ts +3 -1
  295. package/lib/progress-bar/progress-bar.defaults.d.ts +14 -0
  296. package/lib/progress-circle/index.d.ts +3 -2
  297. package/lib/progress-circle/progress-circle.component.d.ts +3 -1
  298. package/lib/progress-circle/progress-circle.defaults.d.ts +14 -0
  299. package/lib/progress-circle/progress-circle.module.d.ts +1 -1
  300. package/lib/radio/index.d.ts +3 -2
  301. package/lib/radio/radio/radio.component.d.ts +5 -2
  302. package/lib/radio/radio/radio.defaults.d.ts +8 -0
  303. package/lib/segment/index.d.ts +2 -1
  304. package/lib/segment/segment.component.d.ts +3 -0
  305. package/lib/segment/segment.defaults.d.ts +18 -0
  306. package/lib/select/index.d.ts +2 -1
  307. package/lib/select/select.component.d.ts +11 -22
  308. package/lib/select/select.defaults.d.ts +49 -0
  309. package/lib/slide-toggle/index.d.ts +1 -0
  310. package/lib/slide-toggle/slide-toggle.component.d.ts +9 -6
  311. package/lib/slide-toggle/slide-toggle.defaults.d.ts +14 -0
  312. package/lib/slider/abstract-slider.d.ts +22 -5
  313. package/lib/slider/index.d.ts +4 -3
  314. package/lib/slider/range-slider/range-slider.component.d.ts +3 -0
  315. package/lib/slider/slider.component.d.ts +3 -0
  316. package/lib/slider/slider.defaults.d.ts +6 -0
  317. package/lib/snackbar/snackbar.service.d.ts +1 -2
  318. package/lib/snackbar/snackbar.token.d.ts +3 -3
  319. package/lib/spinner/index.d.ts +2 -1
  320. package/lib/spinner/spinner.component.d.ts +1 -0
  321. package/lib/spinner/spinner.defaults.d.ts +7 -0
  322. package/lib/star/index.d.ts +2 -1
  323. package/lib/star/star-button/index.d.ts +2 -1
  324. package/lib/star/star-button/star-button.component.d.ts +3 -0
  325. package/lib/star/star-button/star-button.defaults.d.ts +10 -0
  326. package/lib/star/star-display/index.d.ts +2 -1
  327. package/lib/star/star-display/star-display.component.d.ts +1 -0
  328. package/lib/star/star-display/star-display.defaults.d.ts +9 -0
  329. package/lib/star/star-input/index.d.ts +2 -1
  330. package/lib/star/star-input/star-input.component.d.ts +3 -1
  331. package/lib/star/star-input/star-input.defaults.d.ts +9 -0
  332. package/lib/star/star.component.d.ts +4 -2
  333. package/lib/star/star.defaults.d.ts +8 -0
  334. package/lib/statebox/index.d.ts +1 -0
  335. package/lib/statebox/statebox.component.d.ts +7 -6
  336. package/lib/statebox/statebox.defaults.d.ts +10 -0
  337. package/lib/tabber/index.d.ts +4 -2
  338. package/lib/tabber/tab/tab.component.d.ts +1 -0
  339. package/lib/tabber/tab/tab.defaults.d.ts +6 -0
  340. package/lib/tabber/tabber.component.d.ts +3 -1
  341. package/lib/tabber/tabber.defaults.d.ts +12 -0
  342. package/lib/table/index.d.ts +2 -1
  343. package/lib/table/table-item-storage.d.ts +5 -10
  344. package/lib/table/table.component.d.ts +11 -9
  345. package/lib/table/table.defaults.d.ts +50 -0
  346. package/lib/table/table.module.d.ts +2 -1
  347. package/lib/table-from-csv/index.d.ts +2 -1
  348. package/lib/table-from-csv/table-from-csv.component.d.ts +7 -5
  349. package/lib/table-from-csv/table-from-csv.defaults.d.ts +7 -0
  350. package/lib/table-pagination/index.d.ts +2 -1
  351. package/lib/table-pagination/table-pagination.component.d.ts +3 -0
  352. package/lib/table-pagination/table-pagination.defaults.d.ts +20 -0
  353. package/lib/types/button.types.d.ts +1 -1
  354. package/lib/types/item-storage.types.d.ts +3 -63
  355. package/package.json +1 -1
  356. package/prebuilt-themes/default/buttons/fab.css +1 -1
  357. package/prebuilt-themes/default/buttons/icon-button.css +7 -12
  358. package/prebuilt-themes/default/buttons/icon-button.css.map +1 -1
  359. package/prebuilt-themes/default/checkbox.css.map +1 -1
  360. package/prebuilt-themes/default/inputs/color-input.css +5 -0
  361. package/prebuilt-themes/default/inputs/color-input.css.map +1 -1
  362. package/prebuilt-themes/default/inputs/file-input.css +5 -0
  363. package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
  364. package/prebuilt-themes/default/inputs/hex-input.css +5 -0
  365. package/prebuilt-themes/default/inputs/hex-input.css.map +1 -1
  366. package/prebuilt-themes/default/inputs/input.css +5 -0
  367. package/prebuilt-themes/default/inputs/input.css.map +1 -1
  368. package/prebuilt-themes/default/inputs/number-input.css +5 -0
  369. package/prebuilt-themes/default/inputs/number-input.css.map +1 -1
  370. package/prebuilt-themes/default/inputs/password-input.css +5 -0
  371. package/prebuilt-themes/default/inputs/password-input.css.map +1 -1
  372. package/prebuilt-themes/default/inputs/search-bar.css +5 -0
  373. package/prebuilt-themes/default/inputs/search-bar.css.map +1 -1
  374. package/prebuilt-themes/default/inputs/simple-input.css +5 -0
  375. package/prebuilt-themes/default/inputs/simple-input.css.map +1 -1
  376. package/prebuilt-themes/default/segment.css.map +1 -1
  377. package/prebuilt-themes/default/select.css +4 -0
  378. package/prebuilt-themes/default/select.css.map +1 -1
  379. package/prebuilt-themes/default/tabber.css +2 -0
  380. package/prebuilt-themes/default/tabber.css.map +1 -1
  381. package/prebuilt-themes/default/table.css +17 -0
  382. package/prebuilt-themes/default/table.css.map +1 -1
  383. package/themes/default/_clear-button.scss +73 -73
  384. package/themes/default/badge.scss +94 -94
  385. package/themes/default/buttons/button.scss +72 -72
  386. package/themes/default/buttons/fab.scss +74 -74
  387. package/themes/default/buttons/icon-button.scss +55 -62
  388. package/themes/default/card.scss +129 -129
  389. package/themes/default/checkbox.scss +1 -1
  390. package/themes/default/chips.scss +200 -200
  391. package/themes/default/core.scss +99 -99
  392. package/themes/default/inputs/_shared.scss +5 -0
  393. package/themes/default/inputs/digit-input.scss +56 -56
  394. package/themes/default/inputs/file-input.scss +85 -85
  395. package/themes/default/inputs/hex-input.scss +27 -27
  396. package/themes/default/modal.scss +93 -93
  397. package/themes/default/segment.scss +355 -351
  398. package/themes/default/select.scss +259 -255
  399. package/themes/default/snackbar.scss +58 -58
  400. package/themes/default/tabber.scss +89 -87
  401. package/themes/default/table.scss +20 -0
  402. package/esm2022/lib/_internal/queue.mjs +0 -59
  403. package/esm2022/lib/color/color-picker/color-picker.types.mjs +0 -11
  404. package/esm2022/lib/inputs/color-input/color-input.directives.mjs +0 -101
  405. package/esm2022/lib/inputs/color-input/color-input.types.mjs +0 -2
  406. package/esm2022/lib/inputs/hex-input.model.mjs +0 -97
  407. package/lib/color/color-picker/color-picker.types.d.ts +0 -21
  408. package/lib/inputs/color-input/color-input.directives.d.ts +0 -52
  409. package/lib/inputs/color-input/color-input.types.d.ts +0 -5
  410. /package/lib/_internal/{queue.d.ts → models/queue.d.ts} +0 -0
@@ -1,13 +1,14 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, computed, contentChild, input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Inject, Input, ViewEncapsulation, computed, contentChild, input, } from '@angular/core';
2
2
  import { coerceBooleanProperty } from '@ardium-ui/devkit';
3
3
  import { _FocusableComponentBase } from '../_internal/focusable-component';
4
4
  import { FormElementAppearance, FormElementVariant } from '../types/theming.types';
5
+ import { ARD_FORM_FIELD_FRAME_DEFAULTS } from './form-field-frame.defaults';
5
6
  import { ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective } from './form-field-frame.directives';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/common";
8
9
  export class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {
9
- constructor() {
10
- super(...arguments);
10
+ constructor(defaults) {
11
+ super(defaults);
11
12
  //! focused state
12
13
  this.isFocused = false;
13
14
  //! appearance
@@ -35,13 +36,16 @@ export class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {
35
36
  this.prefixTemplate = contentChild(ArdFormFieldPrefixTemplateDirective);
36
37
  this.suffixTemplate = contentChild(ArdFormFieldSuffixTemplateDirective);
37
38
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumFormFieldFrameComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: { isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: false, 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 }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, prefixTemplateInput: { classPropertyName: "prefixTemplateInput", publicName: "prefixTemplate", isSignal: true, isRequired: false, transformFunction: null }, suffixTemplateInput: { classPropertyName: "suffixTemplateInput", publicName: "suffixTemplate", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdFormFieldPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdFormFieldSuffixTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-form-field-frame\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-form-field-overlay\"></div>\r\n @if (prefixTemplateInput() ?? prefixTemplate()) {\r\n <div class=\"ard-form-field-prefix-container\">\r\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n <div class=\"ard-form-field-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (suffixTemplateInput() ?? suffixTemplate()) {\r\n <div class=\"ard-form-field-suffix-container\">\r\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-form-field-frame{position:relative}.ard-form-field-overlay{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
39
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumFormFieldFrameComponent, deps: [{ token: ARD_FORM_FIELD_FRAME_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: { isFocused: { classPropertyName: "isFocused", publicName: "isFocused", isSignal: false, 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 }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, prefixTemplateInput: { classPropertyName: "prefixTemplateInput", publicName: "prefixTemplate", isSignal: true, isRequired: false, transformFunction: null }, suffixTemplateInput: { classPropertyName: "suffixTemplateInput", publicName: "suffixTemplate", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdFormFieldPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdFormFieldSuffixTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ard-form-field-frame\"\n [ngClass]=\"ngClasses()\"\n>\n <div class=\"ard-form-field-overlay\"></div>\n @if (prefixTemplateInput() ?? prefixTemplate()) {\n <div class=\"ard-form-field-prefix-container\">\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\n </div>\n }\n <div class=\"ard-form-field-content-container\">\n <ng-content></ng-content>\n </div>\n @if (suffixTemplateInput() ?? suffixTemplate()) {\n <div class=\"ard-form-field-suffix-container\">\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\n </div>\n }\n</div>\n", styles: [".ard-form-field-frame{position:relative}.ard-form-field-overlay{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
41
  }
41
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumFormFieldFrameComponent, decorators: [{
42
43
  type: Component,
43
- args: [{ selector: 'ard-form-field-frame', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-form-field-frame\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-form-field-overlay\"></div>\r\n @if (prefixTemplateInput() ?? prefixTemplate()) {\r\n <div class=\"ard-form-field-prefix-container\">\r\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n <div class=\"ard-form-field-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (suffixTemplateInput() ?? suffixTemplate()) {\r\n <div class=\"ard-form-field-suffix-container\">\r\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-form-field-frame{position:relative}.ard-form-field-overlay{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1}\n"] }]
44
- }], propDecorators: { isFocused: [{
44
+ args: [{ selector: 'ard-form-field-frame', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ard-form-field-frame\"\n [ngClass]=\"ngClasses()\"\n>\n <div class=\"ard-form-field-overlay\"></div>\n @if (prefixTemplateInput() ?? prefixTemplate()) {\n <div class=\"ard-form-field-prefix-container\">\n <ng-template [ngTemplateOutlet]=\"prefixTemplateInput() ?? prefixTemplate()?.template ?? null\"></ng-template>\n </div>\n }\n <div class=\"ard-form-field-content-container\">\n <ng-content></ng-content>\n </div>\n @if (suffixTemplateInput() ?? suffixTemplate()) {\n <div class=\"ard-form-field-suffix-container\">\n <ng-template [ngTemplateOutlet]=\"suffixTemplateInput() ?? suffixTemplate()?.template ?? null\"></ng-template>\n </div>\n }\n</div>\n", styles: [".ard-form-field-frame{position:relative}.ard-form-field-overlay{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1}\n"] }]
45
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
46
+ type: Inject,
47
+ args: [ARD_FORM_FIELD_FRAME_DEFAULTS]
48
+ }] }], propDecorators: { isFocused: [{
45
49
  type: Input
46
50
  }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBRUwsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixZQUFZLEVBQ1osS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFTekgsTUFBTSxPQUFPLDZCQUE4QixTQUFRLHVCQUF1QjtJQVAxRTs7UUFRRSxpQkFBaUI7UUFDQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXBDLGNBQWM7UUFDZDs7V0FFRztRQUNNLGVBQVUsR0FBRyxLQUFLLENBQXdCLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GOztXQUVHO1FBQ00sWUFBTyxHQUFHLEtBQUssQ0FBcUIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekU7O1dBRUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuRixjQUFTLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRSxDQUN6QztZQUNFLGtCQUFrQixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDckMsZUFBZSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxlQUFlO1NBQ2pELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUNaLENBQUM7UUFFRixtQkFBbUI7UUFDVix3QkFBbUIsR0FBRyxLQUFLLENBQTZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDaEcsd0JBQW1CLEdBQUcsS0FBSyxDQUE2QixTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hHLG1CQUFjLEdBQUcsWUFBWSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxZQUFZLENBQUMsbUNBQW1DLENBQUMsQ0FBQztLQUM3RTs4R0FqQ1ksNkJBQTZCO2tHQUE3Qiw2QkFBNkIsczdCQStCRCxtQ0FBbUMsaUdBQ25DLG1DQUFtQyx1RkN2RDVFLHV1QkFtQkE7OzJGRElhLDZCQUE2QjtrQkFQekMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OEJBSTdCLFNBQVM7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBjb21wdXRlZCxcclxuICBjb250ZW50Q2hpbGQsXHJcbiAgaW5wdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL19pbnRlcm5hbC9mb2N1c2FibGUtY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi90eXBlcy90aGVtaW5nLnR5cGVzJztcclxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi90eXBlcy91dGlsaXR5LnR5cGVzJztcclxuaW1wb3J0IHsgQXJkRm9ybUZpZWxkUHJlZml4VGVtcGxhdGVEaXJlY3RpdmUsIEFyZEZvcm1GaWVsZFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWZyYW1lLmRpcmVjdGl2ZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtZm9ybS1maWVsZC1mcmFtZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtZnJhbWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtRm9ybUZpZWxkRnJhbWVDb21wb25lbnQgZXh0ZW5kcyBfRm9jdXNhYmxlQ29tcG9uZW50QmFzZSB7XHJcbiAgLy8hIGZvY3VzZWQgc3RhdGVcclxuICBASW5wdXQoKSBvdmVycmlkZSBpc0ZvY3VzZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8hIGFwcGVhcmFuY2VcclxuICAvKipcclxuICAgKiBUaGUgYXBwZWFyYW5jZSBvZiB0aGUgY29tcG9uZW50LCBha2EgdGhlIHN0eWxpbmcuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgYXBwZWFyYW5jZSA9IGlucHV0PEZvcm1FbGVtZW50QXBwZWFyYW5jZT4oRm9ybUVsZW1lbnRBcHBlYXJhbmNlLk91dGxpbmVkKTtcclxuICAvKipcclxuICAgKiBUaGUgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LCBha2EgdGhlIHNoYXBlLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KEZvcm1FbGVtZW50VmFyaWFudC5Sb3VuZGVkKTtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0byB1c2UgdGhlIGNvbXBhY3Qgc3R5bGluZyBvciBub3QuXHJcbiAgICovXHJcbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PlxyXG4gICAgW1xyXG4gICAgICBgYXJkLWFwcGVhcmFuY2UtJHt0aGlzLmFwcGVhcmFuY2UoKX1gLFxyXG4gICAgICBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnQoKX1gLFxyXG4gICAgICB0aGlzLmNvbXBhY3QoKSA/ICdhcmQtY29tcGFjdCcgOiAnJyxcclxuICAgICAgdGhpcy5pc0ZvY3VzZWQgPyAnYXJkLWZvY3VzZWQnIDogJ2FyZC11bmZvY3VzZWQnLFxyXG4gICAgXS5qb2luKCcgJylcclxuICApO1xyXG5cclxuICAvLyEgcHJlZml4ICYgc3VmZml4XHJcbiAgcmVhZG9ubHkgcHJlZml4VGVtcGxhdGVJbnB1dCA9IGlucHV0PE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+Pih1bmRlZmluZWQsIHsgYWxpYXM6ICdwcmVmaXhUZW1wbGF0ZScgfSk7XHJcbiAgcmVhZG9ubHkgc3VmZml4VGVtcGxhdGVJbnB1dCA9IGlucHV0PE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+Pih1bmRlZmluZWQsIHsgYWxpYXM6ICdzdWZmaXhUZW1wbGF0ZScgfSk7XHJcbiAgcmVhZG9ubHkgcHJlZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRm9ybUZpZWxkUHJlZml4VGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IHN1ZmZpeFRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZEZvcm1GaWVsZFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlKTtcclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJhcmQtZm9ybS1maWVsZC1mcmFtZVwiXHJcbiAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cImFyZC1mb3JtLWZpZWxkLW92ZXJsYXlcIj48L2Rpdj5cclxuICBAaWYgKHByZWZpeFRlbXBsYXRlSW5wdXQoKSA/PyBwcmVmaXhUZW1wbGF0ZSgpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtcHJlZml4LWNvbnRhaW5lclwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJlZml4VGVtcGxhdGVJbnB1dCgpID8/IHByZWZpeFRlbXBsYXRlKCk/LnRlbXBsYXRlID8/IG51bGxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJhcmQtZm9ybS1maWVsZC1jb250ZW50LWNvbnRhaW5lclwiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoc3VmZml4VGVtcGxhdGVJbnB1dCgpID8/IHN1ZmZpeFRlbXBsYXRlKCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJhcmQtZm9ybS1maWVsZC1zdWZmaXgtY29udGFpbmVyXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWZmaXhUZW1wbGF0ZUlucHV0KCkgPz8gc3VmZml4VGVtcGxhdGUoKT8udGVtcGxhdGUgPz8gbnVsbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUVMLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRixPQUFPLEVBQUUsNkJBQTZCLEVBQTZCLE1BQU0sNkJBQTZCLENBQUM7QUFDdkcsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQVN6SCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsdUJBQXVCO0lBRXhFLFlBQW1ELFFBQW1DO1FBQ3BGLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUdsQixpQkFBaUI7UUFDQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXBDLGNBQWM7UUFDZDs7V0FFRztRQUNNLGVBQVUsR0FBRyxLQUFLLENBQXdCLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GOztXQUVHO1FBQ00sWUFBTyxHQUFHLEtBQUssQ0FBcUIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekU7O1dBRUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVuRixjQUFTLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRSxDQUN6QztZQUNFLGtCQUFrQixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDckMsZUFBZSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxlQUFlO1NBQ2pELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUNaLENBQUM7UUFFRixtQkFBbUI7UUFDVix3QkFBbUIsR0FBRyxLQUFLLENBQTZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDaEcsd0JBQW1CLEdBQUcsS0FBSyxDQUE2QixTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hHLG1CQUFjLEdBQUcsWUFBWSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDbkUsbUJBQWMsR0FBRyxZQUFZLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQWpDNUUsQ0FBQzs4R0FKVSw2QkFBNkIsa0JBRXBCLDZCQUE2QjtrR0FGdEMsNkJBQTZCLHM3QkFvQ0QsbUNBQW1DLGlHQUNuQyxtQ0FBbUMsdUZDOUQ1RSxpc0JBbUJBOzsyRkRNYSw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0Usc0JBQXNCLGlCQUdqQixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFJbEMsTUFBTTsyQkFBQyw2QkFBNkI7eUNBSy9CLFNBQVM7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGNvbXB1dGVkLFxuICBjb250ZW50Q2hpbGQsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vX2ludGVybmFsL2ZvY3VzYWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi90eXBlcy90aGVtaW5nLnR5cGVzJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XG5pbXBvcnQgeyBBUkRfRk9STV9GSUVMRF9GUkFNRV9ERUZBVUxUUywgQXJkRm9ybUZpZWxkRnJhbWVEZWZhdWx0cyB9IGZyb20gJy4vZm9ybS1maWVsZC1mcmFtZS5kZWZhdWx0cyc7XG5pbXBvcnQgeyBBcmRGb3JtRmllbGRQcmVmaXhUZW1wbGF0ZURpcmVjdGl2ZSwgQXJkRm9ybUZpZWxkU3VmZml4VGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tZmllbGQtZnJhbWUuZGlyZWN0aXZlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZC1mb3JtLWZpZWxkLWZyYW1lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtZnJhbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLWZyYW1lLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1Gb3JtRmllbGRGcmFtZUNvbXBvbmVudCBleHRlbmRzIF9Gb2N1c2FibGVDb21wb25lbnRCYXNlIHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZEZvcm1GaWVsZEZyYW1lRGVmYXVsdHM7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoQVJEX0ZPUk1fRklFTERfRlJBTUVfREVGQVVMVFMpIGRlZmF1bHRzOiBBcmRGb3JtRmllbGRGcmFtZURlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpO1xuICB9XG5cbiAgLy8hIGZvY3VzZWQgc3RhdGVcbiAgQElucHV0KCkgb3ZlcnJpZGUgaXNGb2N1c2VkID0gZmFsc2U7XG5cbiAgLy8hIGFwcGVhcmFuY2VcbiAgLyoqXG4gICAqIFRoZSBhcHBlYXJhbmNlIG9mIHRoZSBjb21wb25lbnQsIGFrYSB0aGUgc3R5bGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KEZvcm1FbGVtZW50QXBwZWFyYW5jZS5PdXRsaW5lZCk7XG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LCBha2EgdGhlIHNoYXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFyaWFudCA9IGlucHV0PEZvcm1FbGVtZW50VmFyaWFudD4oRm9ybUVsZW1lbnRWYXJpYW50LlJvdW5kZWQpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHVzZSB0aGUgY29tcGFjdCBzdHlsaW5nIG9yIG5vdC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PlxuICAgIFtcbiAgICAgIGBhcmQtYXBwZWFyYW5jZS0ke3RoaXMuYXBwZWFyYW5jZSgpfWAsXG4gICAgICBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnQoKX1gLFxuICAgICAgdGhpcy5jb21wYWN0KCkgPyAnYXJkLWNvbXBhY3QnIDogJycsXG4gICAgICB0aGlzLmlzRm9jdXNlZCA/ICdhcmQtZm9jdXNlZCcgOiAnYXJkLXVuZm9jdXNlZCcsXG4gICAgXS5qb2luKCcgJylcbiAgKTtcblxuICAvLyEgcHJlZml4ICYgc3VmZml4XG4gIHJlYWRvbmx5IHByZWZpeFRlbXBsYXRlSW5wdXQgPSBpbnB1dDxOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+Pj4odW5kZWZpbmVkLCB7IGFsaWFzOiAncHJlZml4VGVtcGxhdGUnIH0pO1xuICByZWFkb25seSBzdWZmaXhUZW1wbGF0ZUlucHV0ID0gaW5wdXQ8TnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj4+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3N1ZmZpeFRlbXBsYXRlJyB9KTtcbiAgcmVhZG9ubHkgcHJlZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRm9ybUZpZWxkUHJlZml4VGVtcGxhdGVEaXJlY3RpdmUpO1xuICByZWFkb25seSBzdWZmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRGb3JtRmllbGRTdWZmaXhUZW1wbGF0ZURpcmVjdGl2ZSk7XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtZnJhbWVcIlxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJhcmQtZm9ybS1maWVsZC1vdmVybGF5XCI+PC9kaXY+XG4gIEBpZiAocHJlZml4VGVtcGxhdGVJbnB1dCgpID8/IHByZWZpeFRlbXBsYXRlKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtcHJlZml4LWNvbnRhaW5lclwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInByZWZpeFRlbXBsYXRlSW5wdXQoKSA/PyBwcmVmaXhUZW1wbGF0ZSgpPy50ZW1wbGF0ZSA/PyBudWxsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiYXJkLWZvcm0tZmllbGQtY29udGVudC1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICBAaWYgKHN1ZmZpeFRlbXBsYXRlSW5wdXQoKSA/PyBzdWZmaXhUZW1wbGF0ZSgpKSB7XG4gICAgPGRpdiBjbGFzcz1cImFyZC1mb3JtLWZpZWxkLXN1ZmZpeC1jb250YWluZXJcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzdWZmaXhUZW1wbGF0ZUlucHV0KCkgPz8gc3VmZml4VGVtcGxhdGUoKT8udGVtcGxhdGUgPz8gbnVsbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
@@ -0,0 +1,18 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { _focusableComponentDefaults } from '../_internal/focusable-component';
3
+ import { FormElementAppearance, FormElementVariant } from './../types/theming.types';
4
+ const _formFieldFrameDefaults = {
5
+ ..._focusableComponentDefaults,
6
+ appearance: FormElementAppearance.Outlined,
7
+ variant: FormElementVariant.Rounded,
8
+ compact: false,
9
+ };
10
+ export const ARD_FORM_FIELD_FRAME_DEFAULTS = new InjectionToken('ard-form-field-frame-defaults', {
11
+ factory: () => ({
12
+ ..._formFieldFrameDefaults,
13
+ }),
14
+ });
15
+ export function provideFormFieldFrameDefaults(config) {
16
+ return { provide: ARD_FORM_FIELD_FRAME_DEFAULTS, useValue: { ..._formFieldFrameDefaults, ...config } };
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1mcmFtZS5kZWZhdWx0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZm9ybS1maWVsZC1mcmFtZS9mb3JtLWZpZWxkLWZyYW1lLmRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUErQiwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBUXJGLE1BQU0sdUJBQXVCLEdBQThCO0lBQ3pELEdBQUcsMkJBQTJCO0lBQzlCLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxRQUFRO0lBQzFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO0lBQ25DLE9BQU8sRUFBRSxLQUFLO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLElBQUksY0FBYyxDQUE0QiwrQkFBK0IsRUFBRTtJQUMxSCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNkLEdBQUcsdUJBQXVCO0tBQzNCLENBQUM7Q0FDSCxDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsTUFBMEM7SUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLHVCQUF1QixFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUN6RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBfRm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHMsIF9mb2N1c2FibGVDb21wb25lbnREZWZhdWx0cyB9IGZyb20gJy4uL19pbnRlcm5hbC9mb2N1c2FibGUtY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBcmRGb3JtRmllbGRGcmFtZURlZmF1bHRzIGV4dGVuZHMgX0ZvY3VzYWJsZUNvbXBvbmVudERlZmF1bHRzIHtcbiAgYXBwZWFyYW5jZTogRm9ybUVsZW1lbnRBcHBlYXJhbmNlO1xuICB2YXJpYW50OiBGb3JtRWxlbWVudFZhcmlhbnQ7XG4gIGNvbXBhY3Q6IGJvb2xlYW47XG59XG5cbmNvbnN0IF9mb3JtRmllbGRGcmFtZURlZmF1bHRzOiBBcmRGb3JtRmllbGRGcmFtZURlZmF1bHRzID0ge1xuICAuLi5fZm9jdXNhYmxlQ29tcG9uZW50RGVmYXVsdHMsXG4gIGFwcGVhcmFuY2U6IEZvcm1FbGVtZW50QXBwZWFyYW5jZS5PdXRsaW5lZCxcbiAgdmFyaWFudDogRm9ybUVsZW1lbnRWYXJpYW50LlJvdW5kZWQsXG4gIGNvbXBhY3Q6IGZhbHNlLFxufTtcblxuZXhwb3J0IGNvbnN0IEFSRF9GT1JNX0ZJRUxEX0ZSQU1FX0RFRkFVTFRTID0gbmV3IEluamVjdGlvblRva2VuPEFyZEZvcm1GaWVsZEZyYW1lRGVmYXVsdHM+KCdhcmQtZm9ybS1maWVsZC1mcmFtZS1kZWZhdWx0cycsIHtcbiAgZmFjdG9yeTogKCkgPT4gKHtcbiAgICAuLi5fZm9ybUZpZWxkRnJhbWVEZWZhdWx0cyxcbiAgfSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVGb3JtRmllbGRGcmFtZURlZmF1bHRzKGNvbmZpZzogUGFydGlhbDxBcmRGb3JtRmllbGRGcmFtZURlZmF1bHRzPik6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHsgcHJvdmlkZTogQVJEX0ZPUk1fRklFTERfRlJBTUVfREVGQVVMVFMsIHVzZVZhbHVlOiB7IC4uLl9mb3JtRmllbGRGcmFtZURlZmF1bHRzLCAuLi5jb25maWcgfSB9O1xufVxuIl19
@@ -1,4 +1,5 @@
1
- export * from './form-field-frame.module';
2
1
  export * from './form-field-frame.component';
2
+ export * from './form-field-frame.defaults';
3
3
  export * from './form-field-frame.directives';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQtZnJhbWUubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLWZyYW1lLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC1mcmFtZS5kaXJlY3RpdmVzJztcclxuIl19
4
+ export * from './form-field-frame.module';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2Zvcm0tZmllbGQtZnJhbWUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC1mcmFtZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWZpZWxkLWZyYW1lLmRlZmF1bHRzJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC1mcmFtZS5kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC1mcmFtZS5tb2R1bGUnO1xuIl19
@@ -1,10 +1,12 @@
1
- import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input, viewChild, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, inject, input, viewChild, } from '@angular/core';
2
2
  import { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';
3
3
  import { isDefined } from 'simple-bool';
4
+ import { ARD_ICON_DEFAULTS } from './icon.defaults';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "./icon.pipe";
6
7
  export class ArdiumIconComponent {
7
8
  constructor() {
9
+ this._DEFAULTS = inject(ARD_ICON_DEFAULTS);
8
10
  this.ariaLabel = input('');
9
11
  this.icon = input(undefined);
10
12
  this.filled = input(false, { transform: v => coerceBooleanProperty(v) });
@@ -41,10 +43,10 @@ export class ArdiumIconComponent {
41
43
  }
42
44
  }
43
45
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.0.2", type: ArdiumIconComponent, selector: "ard-icon", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, filled: { classPropertyName: "filled", publicName: "filled", isSignal: true, isRequired: false, transformFunction: null }, weight: { classPropertyName: "weight", publicName: "weight", isSignal: true, isRequired: false, transformFunction: null }, grade: { classPropertyName: "grade", publicName: "grade", isSignal: true, isRequired: false, transformFunction: null }, opticalSize: { classPropertyName: "opticalSize", publicName: "opticalSize", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contentWrapper", first: true, predicate: ["contentWrapperEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<span\r\n class=\"ard-icon material-symbols-outlined\"\r\n [attr.aria-hidden]=\"ariaLabel() !== undefined\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [style]=\"fontVariationSettings()\"\r\n>\r\n {{ icon() ?? contentWrapperEl.innerText | icon }}\r\n</span>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-icon-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\";ard-icon{font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 48;font-size:1.5em;width:1em;height:1em;display:inline-block;-webkit-user-select:none;user-select:none;background-repeat:no-repeat;fill:currentColor;overflow:hidden;flex-shrink:0}ard-icon .ard-icon{font-variation-settings:inherit;font-size:inherit}ard-icon .ard-icon-content-wrapper{display:none}\n"], dependencies: [{ kind: "pipe", type: i1.ArdiumIconPipe, name: "icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.0.2", type: ArdiumIconComponent, selector: "ard-icon", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, filled: { classPropertyName: "filled", publicName: "filled", isSignal: true, isRequired: false, transformFunction: null }, weight: { classPropertyName: "weight", publicName: "weight", isSignal: true, isRequired: false, transformFunction: null }, grade: { classPropertyName: "grade", publicName: "grade", isSignal: true, isRequired: false, transformFunction: null }, opticalSize: { classPropertyName: "opticalSize", publicName: "opticalSize", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contentWrapper", first: true, predicate: ["contentWrapperEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<span\n class=\"ard-icon material-symbols-outlined\"\n [attr.aria-hidden]=\"ariaLabel() !== undefined\"\n [attr.aria-label]=\"ariaLabel()\"\n [style]=\"fontVariationSettings()\"\n>\n {{ icon() ?? contentWrapperEl.innerText | icon }}\n</span>\n\n<div\n #contentWrapperEl\n class=\"ard-icon-content-wrapper\"\n>\n <ng-content></ng-content>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\";ard-icon{font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 48;font-size:1.5em;width:1em;height:1em;display:inline-block;-webkit-user-select:none;user-select:none;background-repeat:no-repeat;fill:currentColor;overflow:hidden;flex-shrink:0}ard-icon .ard-icon{font-variation-settings:inherit;font-size:inherit}ard-icon .ard-icon-content-wrapper{display:none}\n"], dependencies: [{ kind: "pipe", type: i1.ArdiumIconPipe, name: "icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
45
47
  }
46
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumIconComponent, decorators: [{
47
49
  type: Component,
48
- args: [{ selector: 'ard-icon', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\r\n class=\"ard-icon material-symbols-outlined\"\r\n [attr.aria-hidden]=\"ariaLabel() !== undefined\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n [style]=\"fontVariationSettings()\"\r\n>\r\n {{ icon() ?? contentWrapperEl.innerText | icon }}\r\n</span>\r\n\r\n<div\r\n #contentWrapperEl\r\n class=\"ard-icon-content-wrapper\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\";ard-icon{font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 48;font-size:1.5em;width:1em;height:1em;display:inline-block;-webkit-user-select:none;user-select:none;background-repeat:no-repeat;fill:currentColor;overflow:hidden;flex-shrink:0}ard-icon .ard-icon{font-variation-settings:inherit;font-size:inherit}ard-icon .ard-icon-content-wrapper{display:none}\n"] }]
50
+ args: [{ selector: 'ard-icon', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\n class=\"ard-icon material-symbols-outlined\"\n [attr.aria-hidden]=\"ariaLabel() !== undefined\"\n [attr.aria-label]=\"ariaLabel()\"\n [style]=\"fontVariationSettings()\"\n>\n {{ icon() ?? contentWrapperEl.innerText | icon }}\n</span>\n\n<div\n #contentWrapperEl\n class=\"ard-icon-content-wrapper\"\n>\n <ng-content></ng-content>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\";ard-icon{font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 48;font-size:1.5em;width:1em;height:1em;display:inline-block;-webkit-user-select:none;user-select:none;background-repeat:no-repeat;fill:currentColor;overflow:hidden;flex-shrink:0}ard-icon .ard-icon{font-variation-settings:inherit;font-size:inherit}ard-icon .ard-icon-content-wrapper{display:none}\n"] }]
49
51
  }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBbUJ4QyxNQUFNLE9BQU8sbUJBQW1CO0lBUGhDO1FBUVcsY0FBUyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUM5QixTQUFJLEdBQUcsS0FBSyxDQUFtQixTQUFTLENBQUMsQ0FBQztRQUUxQyxXQUFNLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRixXQUFNLEdBQUcsS0FBSyxDQUFrRSxHQUFHLEVBQUU7WUFDNUYsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBaUI7U0FDN0QsQ0FBQyxDQUFDO1FBQ00sVUFBSyxHQUFHLEtBQUssQ0FBK0QsQ0FBQyxFQUFFO1lBQ3RGLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQWdCO1NBQzFELENBQUMsQ0FBQztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUFpRixFQUFFLEVBQUU7WUFDL0csU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBc0I7U0FDakUsQ0FBQyxDQUFDO1FBRU0sMEJBQXFCLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRTtZQUNyRCw0REFBNEQ7WUFDNUQsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDbEUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTthQUN6QixDQUFDO1lBQ0YsdUNBQXVDO1lBQ3ZDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxpQkFBaUI7aUJBQ25FLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtpQkFDdEQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQ0FBZ0M7aUJBQzlELElBQUksRUFBRSxDQUFDLENBQUMsU0FBUztZQUVwQixtRUFBbUU7WUFDbkUsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BILENBQUMsQ0FBQyxDQUFDO1FBRU0sbUJBQWMsR0FBRyxTQUFTLENBQTBCLGtCQUFrQixDQUFDLENBQUM7S0FPbEY7SUFMQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEUsT0FBTyxDQUFDLElBQUksQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDOzhHQXZDVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixpN0JDOUJoQyxtWUFlQTs7MkZEZWEsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLFVBQVUsaUJBR0wsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBjb21wdXRlZCxcclxuICBpbnB1dCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi90eXBlcy91dGlsaXR5LnR5cGVzJztcclxuXHJcbnR5cGUgV2VpZ2h0TnVtYmVyID0gMTAwIHwgMjAwIHwgMzAwIHwgNDAwIHwgNTAwIHwgNjAwIHwgNzAwIHwgODAwIHwgOTAwO1xyXG50eXBlIFdlaWdodFN0cmluZyA9ICcxMDAnIHwgJzIwMCcgfCAnMzAwJyB8ICc0MDAnIHwgJzUwMCcgfCAnNjAwJyB8ICc3MDAnIHwgJzgwMCcgfCAnOTAwJztcclxuXHJcbnR5cGUgR3JhZGVOdW1iZXIgPSAtMjUgfCAwIHwgMjAwO1xyXG50eXBlIEdyYWRlU3RyaW5nID0gJy0yNScgfCAnMCcgfCAnMjAwJztcclxuXHJcbnR5cGUgT3B0aWNhbFNpemVOdW1iZXIgPSAyMCB8IDI0IHwgNDAgfCA0ODtcclxudHlwZSBPcHRpY2FsU2l6ZVN0cmluZyA9ICcyMCcgfCAnMjQnIHwgJzQwJyB8ICc0OCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FyZC1pY29uJyxcclxuICB0ZW1wbGF0ZVVybDogYC4vaWNvbi5jb21wb25lbnQuaHRtbGAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaWNvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1JY29uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcmVhZG9ubHkgYXJpYUxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgcmVhZG9ubHkgaWNvbiA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHJlYWRvbmx5IGZpbGxlZCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuICByZWFkb25seSB3ZWlnaHQgPSBpbnB1dDxXZWlnaHROdW1iZXIgfCB1bmRlZmluZWQsIE51bGxhYmxlPFdlaWdodE51bWJlciB8IFdlaWdodFN0cmluZz4+KDQwMCwge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIDQwMCkgYXMgV2VpZ2h0TnVtYmVyLFxyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IGdyYWRlID0gaW5wdXQ8R3JhZGVOdW1iZXIgfCB1bmRlZmluZWQsIE51bGxhYmxlPEdyYWRlTnVtYmVyIHwgR3JhZGVTdHJpbmc+PigwLCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgMCkgYXMgR3JhZGVOdW1iZXIsXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgb3B0aWNhbFNpemUgPSBpbnB1dDxPcHRpY2FsU2l6ZU51bWJlciB8IHVuZGVmaW5lZCwgTnVsbGFibGU8T3B0aWNhbFNpemVOdW1iZXIgfCBPcHRpY2FsU2l6ZVN0cmluZz4+KDQwLCB7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgNDApIGFzIE9wdGljYWxTaXplTnVtYmVyLFxyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBmb250VmFyaWF0aW9uU2V0dGluZ3MgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgIC8vbWFwIHZhbHVlcyB0byBkaWZmZXJlbnQgcHJvcGVydGllcyBkZWZpbmVkIGJ5IGdvb2dsZSBpY29uc1xyXG4gICAgY29uc3QgcHJvcE9iamVjdCA9IHtcclxuICAgICAgRklMTDogaXNEZWZpbmVkKHRoaXMuZmlsbGVkKCkpID8gTnVtYmVyKHRoaXMuZmlsbGVkKCkpIDogdW5kZWZpbmVkLFxyXG4gICAgICB3Z2h0OiB0aGlzLndlaWdodCgpLFxyXG4gICAgICBHUkFEOiB0aGlzLmdyYWRlKCksXHJcbiAgICAgIG9wc3o6IHRoaXMub3B0aWNhbFNpemUoKSxcclxuICAgIH07XHJcbiAgICAvL21hcCB0aGUgb2JqZWN0IHRvIGFuIGFycmF5IG9mIHN0cmluZ3NcclxuICAgIGNvbnN0IHByb3BPYmplY3RBc0FycmF5ID0gT2JqZWN0LmVudHJpZXMocHJvcE9iamVjdCkgLy9vYmplY3QgdG8gYXJyYXlcclxuICAgICAgLmZpbHRlcih2ID0+IGlzRGVmaW5lZCh2WzFdKSkgLy9maWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xyXG4gICAgICAubWFwKHYgPT4gYFwiJHt2WzBdfVwiICR7dlsxXX1gKSAvL21hcCBrZXktdmFsdWUgcGFpcnMgdG8gc3RyaW5nc1xyXG4gICAgICAuZmxhdCgpOyAvL2ZsYXR0ZW5cclxuXHJcbiAgICAvL2NyZWF0ZSB0aGUgZmluYWwgc3RyaW5nIG9ubHkgaWYgYW55IG9mIHRoZSBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkXHJcbiAgICByZXR1cm4gcHJvcE9iamVjdEFzQXJyYXkubGVuZ3RoID09PSAwID8gJycgOiBbJ2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOiAnLCBwcm9wT2JqZWN0QXNBcnJheS5qb2luKCcsICcpXS5qb2luKCcnKTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgY29udGVudFdyYXBwZXIgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdjb250ZW50V3JhcHBlckVsJyk7XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pY29uKCkgJiYgIXRoaXMuY29udGVudFdyYXBwZXIoKT8ubmF0aXZlRWxlbWVudC5pbm5lclRleHQpIHtcclxuICAgICAgY29uc29sZS53YXJuKGBBUkQtRlQ5MDAwOiBVc2luZyA8YXJkLWljb24+IHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgW2ljb25dIGZpZWxkLmApO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8c3BhblxyXG4gIGNsYXNzPVwiYXJkLWljb24gbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUxhYmVsKCkgIT09IHVuZGVmaW5lZFwiXHJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwoKVwiXHJcbiAgW3N0eWxlXT1cImZvbnRWYXJpYXRpb25TZXR0aW5ncygpXCJcclxuPlxyXG4gIHt7IGljb24oKSA/PyBjb250ZW50V3JhcHBlckVsLmlubmVyVGV4dCB8IGljb24gfX1cclxuPC9zcGFuPlxyXG5cclxuPGRpdlxyXG4gICNjb250ZW50V3JhcHBlckVsXHJcbiAgY2xhc3M9XCJhcmQtaWNvbi1jb250ZW50LXdyYXBwZXJcIlxyXG4+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ljb24vaWNvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQXFCcEQsTUFBTSxPQUFPLG1CQUFtQjtJQVBoQztRQVFxQixjQUFTLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFaEQsY0FBUyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUM5QixTQUFJLEdBQUcsS0FBSyxDQUFtQixTQUFTLENBQUMsQ0FBQztRQUUxQyxXQUFNLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsRixXQUFNLEdBQUcsS0FBSyxDQUE2QyxHQUFHLEVBQUU7WUFDdkUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBaUI7U0FDN0QsQ0FBQyxDQUFDO1FBQ00sVUFBSyxHQUFHLEtBQUssQ0FBaUQsQ0FBQyxFQUFFO1lBQ3hFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQWdCO1NBQzFELENBQUMsQ0FBQztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUF1RCxFQUFFLEVBQUU7WUFDckYsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBc0I7U0FDakUsQ0FBQyxDQUFDO1FBRU0sMEJBQXFCLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRTtZQUNyRCw0REFBNEQ7WUFDNUQsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDbEUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRTthQUN6QixDQUFDO1lBQ0YsdUNBQXVDO1lBQ3ZDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxpQkFBaUI7aUJBQ25FLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QjtpQkFDdEQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQ0FBZ0M7aUJBQzlELElBQUksRUFBRSxDQUFDLENBQUMsU0FBUztZQUVwQixtRUFBbUU7WUFDbkUsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BILENBQUMsQ0FBQyxDQUFDO1FBRU0sbUJBQWMsR0FBRyxTQUFTLENBQTBCLGtCQUFrQixDQUFDLENBQUM7S0FPbEY7SUFMQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEUsT0FBTyxDQUFDLElBQUksQ0FBQyxtRUFBbUUsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDOzhHQXpDVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixpN0JDbkNoQyxxV0FlQTs7MkZEb0JhLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxVQUFVLGlCQUdMLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICcuLi90eXBlcy91dGlsaXR5LnR5cGVzJztcbmltcG9ydCB7IEFSRF9JQ09OX0RFRkFVTFRTIH0gZnJvbSAnLi9pY29uLmRlZmF1bHRzJztcblxudHlwZSBXZWlnaHROdW1iZXIgPSAxMDAgfCAyMDAgfCAzMDAgfCA0MDAgfCA1MDAgfCA2MDAgfCA3MDAgfCA4MDAgfCA5MDA7XG50eXBlIFdlaWdodFN0cmluZyA9ICcxMDAnIHwgJzIwMCcgfCAnMzAwJyB8ICc0MDAnIHwgJzUwMCcgfCAnNjAwJyB8ICc3MDAnIHwgJzgwMCcgfCAnOTAwJztcbmV4cG9ydCB0eXBlIFdlaWdodCA9IFdlaWdodE51bWJlciB8IFdlaWdodFN0cmluZztcblxudHlwZSBHcmFkZU51bWJlciA9IC0yNSB8IDAgfCAyMDA7XG50eXBlIEdyYWRlU3RyaW5nID0gJy0yNScgfCAnMCcgfCAnMjAwJztcbmV4cG9ydCB0eXBlIEdyYWRlID0gR3JhZGVOdW1iZXIgfCBHcmFkZVN0cmluZztcblxudHlwZSBPcHRpY2FsU2l6ZU51bWJlciA9IDIwIHwgMjQgfCA0MCB8IDQ4O1xudHlwZSBPcHRpY2FsU2l6ZVN0cmluZyA9ICcyMCcgfCAnMjQnIHwgJzQwJyB8ICc0OCc7XG5leHBvcnQgdHlwZSBPcHRpY2FsU2l6ZSA9IE9wdGljYWxTaXplTnVtYmVyIHwgT3B0aWNhbFNpemVTdHJpbmc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZC1pY29uJyxcbiAgdGVtcGxhdGVVcmw6IGAuL2ljb24uY29tcG9uZW50Lmh0bWxgLFxuICBzdHlsZVVybHM6IFsnLi9pY29uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1JY29uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfREVGQVVMVFMgPSBpbmplY3QoQVJEX0lDT05fREVGQVVMVFMpO1xuXG4gIHJlYWRvbmx5IGFyaWFMYWJlbCA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBpY29uID0gaW5wdXQ8TnVsbGFibGU8c3RyaW5nPj4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBmaWxsZWQgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG4gIHJlYWRvbmx5IHdlaWdodCA9IGlucHV0PFdlaWdodE51bWJlciB8IHVuZGVmaW5lZCwgTnVsbGFibGU8V2VpZ2h0Pj4oNDAwLCB7XG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIDQwMCkgYXMgV2VpZ2h0TnVtYmVyLFxuICB9KTtcbiAgcmVhZG9ubHkgZ3JhZGUgPSBpbnB1dDxHcmFkZU51bWJlciB8IHVuZGVmaW5lZCwgTnVsbGFibGU8R3JhZGVOdW1iZXI+PigwLCB7XG4gICAgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIDApIGFzIEdyYWRlTnVtYmVyLFxuICB9KTtcbiAgcmVhZG9ubHkgb3B0aWNhbFNpemUgPSBpbnB1dDxPcHRpY2FsU2l6ZU51bWJlciB8IHVuZGVmaW5lZCwgTnVsbGFibGU8T3B0aWNhbFNpemU+Pig0MCwge1xuICAgIHRyYW5zZm9ybTogdiA9PiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCA0MCkgYXMgT3B0aWNhbFNpemVOdW1iZXIsXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGZvbnRWYXJpYXRpb25TZXR0aW5ncyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIC8vbWFwIHZhbHVlcyB0byBkaWZmZXJlbnQgcHJvcGVydGllcyBkZWZpbmVkIGJ5IGdvb2dsZSBpY29uc1xuICAgIGNvbnN0IHByb3BPYmplY3QgPSB7XG4gICAgICBGSUxMOiBpc0RlZmluZWQodGhpcy5maWxsZWQoKSkgPyBOdW1iZXIodGhpcy5maWxsZWQoKSkgOiB1bmRlZmluZWQsXG4gICAgICB3Z2h0OiB0aGlzLndlaWdodCgpLFxuICAgICAgR1JBRDogdGhpcy5ncmFkZSgpLFxuICAgICAgb3BzejogdGhpcy5vcHRpY2FsU2l6ZSgpLFxuICAgIH07XG4gICAgLy9tYXAgdGhlIG9iamVjdCB0byBhbiBhcnJheSBvZiBzdHJpbmdzXG4gICAgY29uc3QgcHJvcE9iamVjdEFzQXJyYXkgPSBPYmplY3QuZW50cmllcyhwcm9wT2JqZWN0KSAvL29iamVjdCB0byBhcnJheVxuICAgICAgLmZpbHRlcih2ID0+IGlzRGVmaW5lZCh2WzFdKSkgLy9maWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICAgICAgLm1hcCh2ID0+IGBcIiR7dlswXX1cIiAke3ZbMV19YCkgLy9tYXAga2V5LXZhbHVlIHBhaXJzIHRvIHN0cmluZ3NcbiAgICAgIC5mbGF0KCk7IC8vZmxhdHRlblxuXG4gICAgLy9jcmVhdGUgdGhlIGZpbmFsIHN0cmluZyBvbmx5IGlmIGFueSBvZiB0aGUgcHJvcGVydGllcyBhcmUgZGVmaW5lZFxuICAgIHJldHVybiBwcm9wT2JqZWN0QXNBcnJheS5sZW5ndGggPT09IDAgPyAnJyA6IFsnZm9udC12YXJpYXRpb24tc2V0dGluZ3M6ICcsIHByb3BPYmplY3RBc0FycmF5LmpvaW4oJywgJyldLmpvaW4oJycpO1xuICB9KTtcblxuICByZWFkb25seSBjb250ZW50V3JhcHBlciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ2NvbnRlbnRXcmFwcGVyRWwnKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmljb24oKSAmJiAhdGhpcy5jb250ZW50V3JhcHBlcigpPy5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCkge1xuICAgICAgY29uc29sZS53YXJuKGBBUkQtRlQ5MDAwOiBVc2luZyA8YXJkLWljb24+IHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgW2ljb25dIGZpZWxkLmApO1xuICAgIH1cbiAgfVxufVxuIiwiPHNwYW5cbiAgY2xhc3M9XCJhcmQtaWNvbiBtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCJcbiAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiYXJpYUxhYmVsKCkgIT09IHVuZGVmaW5lZFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsKClcIlxuICBbc3R5bGVdPVwiZm9udFZhcmlhdGlvblNldHRpbmdzKClcIlxuPlxuICB7eyBpY29uKCkgPz8gY29udGVudFdyYXBwZXJFbC5pbm5lclRleHQgfCBpY29uIH19XG48L3NwYW4+XG5cbjxkaXZcbiAgI2NvbnRlbnRXcmFwcGVyRWxcbiAgY2xhc3M9XCJhcmQtaWNvbi1jb250ZW50LXdyYXBwZXJcIlxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ const _iconDefaults = {
3
+ filled: false,
4
+ weight: 400,
5
+ grade: 0,
6
+ opticalSize: 40,
7
+ ariaLabel: '',
8
+ };
9
+ export const ARD_ICON_DEFAULTS = new InjectionToken('ard-icon-defaults', {
10
+ factory: () => ({
11
+ ..._iconDefaults,
12
+ }),
13
+ });
14
+ export function provideIconDefaults(config) {
15
+ return { provide: ARD_ICON_DEFAULTS, useValue: { ..._iconDefaults, ...config } };
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kZWZhdWx0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaWNvbi9pY29uLmRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFXekQsTUFBTSxhQUFhLEdBQW9CO0lBQ3JDLE1BQU0sRUFBRSxLQUFLO0lBQ2IsTUFBTSxFQUFFLEdBQUc7SUFDWCxLQUFLLEVBQUUsQ0FBQztJQUNSLFdBQVcsRUFBRSxFQUFFO0lBQ2YsU0FBUyxFQUFFLEVBQUU7Q0FDZCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQWtCLG1CQUFtQixFQUFFO0lBQ3hGLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsR0FBRyxhQUFhO0tBQ2pCLENBQUM7Q0FDSCxDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBZ0M7SUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLGFBQWEsRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7QUFDbkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JhZGUsIE9wdGljYWxTaXplLCBXZWlnaHQgfSBmcm9tICcuL2ljb24uY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBBcmRJY29uRGVmYXVsdHMge1xuICBmaWxsZWQ6IGJvb2xlYW47XG4gIHdlaWdodDogV2VpZ2h0O1xuICBncmFkZTogR3JhZGU7XG4gIG9wdGljYWxTaXplOiBPcHRpY2FsU2l6ZTtcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG59XG5cbmNvbnN0IF9pY29uRGVmYXVsdHM6IEFyZEljb25EZWZhdWx0cyA9IHtcbiAgZmlsbGVkOiBmYWxzZSxcbiAgd2VpZ2h0OiA0MDAsXG4gIGdyYWRlOiAwLFxuICBvcHRpY2FsU2l6ZTogNDAsXG4gIGFyaWFMYWJlbDogJycsXG59O1xuXG5leHBvcnQgY29uc3QgQVJEX0lDT05fREVGQVVMVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QXJkSWNvbkRlZmF1bHRzPignYXJkLWljb24tZGVmYXVsdHMnLCB7XG4gIGZhY3Rvcnk6ICgpID0+ICh7XG4gICAgLi4uX2ljb25EZWZhdWx0cyxcbiAgfSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVJY29uRGVmYXVsdHMoY29uZmlnOiBQYXJ0aWFsPEFyZEljb25EZWZhdWx0cz4pOiBQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGU6IEFSRF9JQ09OX0RFRkFVTFRTLCB1c2VWYWx1ZTogeyAuLi5faWNvbkRlZmF1bHRzLCAuLi5jb25maWcgfSB9O1xufVxuIl19
@@ -1,4 +1,5 @@
1
- export * from './icon.module';
2
1
  export * from './icon.component';
2
+ export * from './icon.defaults';
3
+ export * from './icon.module';
3
4
  export * from './icon.pipe';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ljb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaWNvbi5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ljb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9pY29uLnBpcGUnO1xyXG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2ljb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pY29uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24uZGVmYXVsdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9pY29uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ljb24ucGlwZSc7XG4iXX0=
@@ -0,0 +1,159 @@
1
+ import { computed, contentChild, Directive, input, Input, output, viewChild } from '@angular/core';
2
+ import { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';
3
+ import { _NgModelComponentBase, _ngModelComponentDefaults } from '../_internal/ngmodel-component';
4
+ import { SimpleOneAxisAlignment } from './../types/alignment.types';
5
+ import { FormElementAppearance, FormElementVariant } from './../types/theming.types';
6
+ import { SimpleInputModel } from './input-utils';
7
+ import { ArdSimpleInputPlaceholderTemplateDirective, ArdSimpleInputPrefixTemplateDirective, ArdSimpleInputSuffixTemplateDirective, } from './simple-input';
8
+ import * as i0 from "@angular/core";
9
+ export const _simpleInputComponentDefaults = {
10
+ ..._ngModelComponentDefaults,
11
+ appearance: FormElementAppearance.Outlined,
12
+ variant: FormElementVariant.Rounded,
13
+ compact: false,
14
+ placeholder: '',
15
+ alignText: SimpleOneAxisAlignment.Left,
16
+ clearable: false,
17
+ clearButtonTitle: 'Clear',
18
+ inputAttrs: {},
19
+ maxLength: undefined,
20
+ };
21
+ export class _SimpleInputComponentBase extends _NgModelComponentBase {
22
+ constructor() {
23
+ super(...arguments);
24
+ //! input view
25
+ this.textInputEl = viewChild('textInput');
26
+ this.inputModel = new SimpleInputModel(this);
27
+ this._wasViewInit = false;
28
+ this.placeholder = input(this._DEFAULTS.placeholder);
29
+ this.inputId = input(undefined);
30
+ this.clearButtonTitle = input(this._DEFAULTS.clearButtonTitle);
31
+ //! prefix & suffix
32
+ this.prefixTemplate = contentChild(ArdSimpleInputPrefixTemplateDirective);
33
+ this.suffixTemplate = contentChild(ArdSimpleInputSuffixTemplateDirective);
34
+ //! placeholder
35
+ this.placeholderTemplate = contentChild(ArdSimpleInputPlaceholderTemplateDirective);
36
+ this.shouldDisplayPlaceholder = computed(() => Boolean(this.placeholder()) && !this.inputModel.value());
37
+ //! appearance
38
+ this.appearance = input(this._DEFAULTS.appearance);
39
+ this.variant = input(this._DEFAULTS.variant);
40
+ this.alignText = input(this._DEFAULTS.alignText);
41
+ this.compact = input(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });
42
+ this.ngClasses = computed(() => [
43
+ `ard-appearance-${this.appearance()}`,
44
+ `ard-variant-${this.variant()}`,
45
+ `ard-text-align-${this.alignText()}`,
46
+ this.compact() ? 'ard-compact' : '',
47
+ this.clearable() ? 'ard-clearable' : '',
48
+ ].join(' '));
49
+ //! other inputs
50
+ this.inputAttrs = input(this._DEFAULTS.inputAttrs);
51
+ //! number attribute setters/getters
52
+ this.maxLength = input(this._DEFAULTS.maxLength, {
53
+ transform: v => coerceNumberProperty(v, this._DEFAULTS.maxLength),
54
+ });
55
+ //! no-value attribute setters/getters
56
+ this.clearable = input(this._DEFAULTS.clearable, { transform: v => coerceBooleanProperty(v) });
57
+ //! value two-way binding
58
+ this._valueBeforeInit = null;
59
+ this.valueChange = output();
60
+ //! event emitters
61
+ this.inputEvent = output({ alias: 'input' });
62
+ this.changeEvent = output({ alias: 'change' });
63
+ this.clearEvent = output({ alias: 'clear' });
64
+ // clear button
65
+ this.shouldShowClearButton = computed(() => this.clearable() && !this.disabled() && Boolean(this.inputModel.value()));
66
+ }
67
+ ngAfterViewInit() {
68
+ this._wasViewInit = true;
69
+ this._setInputAttributes();
70
+ //set the value
71
+ if (this._valueBeforeInit) {
72
+ this.writeValue(this._valueBeforeInit);
73
+ delete this._valueBeforeInit;
74
+ }
75
+ }
76
+ //! control value accessor's write value implementation
77
+ writeValue(v) {
78
+ this.inputModel.writeValue(v);
79
+ }
80
+ set value(v) {
81
+ if (!this._wasViewInit) {
82
+ this._valueBeforeInit = v;
83
+ return;
84
+ }
85
+ this.writeValue(v);
86
+ }
87
+ get value() {
88
+ return this.inputModel.value();
89
+ }
90
+ //! event handlers
91
+ onInput(newVal) {
92
+ const valueHasChanged = this.inputModel.writeValue(newVal);
93
+ if (!valueHasChanged)
94
+ return;
95
+ this._emitInput();
96
+ }
97
+ _emitInput() {
98
+ this._onChangeRegistered?.(this.value);
99
+ this.inputEvent.emit(this.value);
100
+ this.valueChange.emit(this.value);
101
+ }
102
+ //focus, blur, change
103
+ onFocusMaster(event) {
104
+ this.onFocus(event);
105
+ }
106
+ onBlurMaster(event) {
107
+ this.onBlur(event);
108
+ }
109
+ onChange(event) {
110
+ event.stopPropagation();
111
+ this._emitChange();
112
+ }
113
+ _emitChange() {
114
+ this.changeEvent.emit(this.inputModel.value());
115
+ }
116
+ onClearButtonClick(event) {
117
+ event.stopPropagation();
118
+ this.inputModel.clear();
119
+ this._emitChange();
120
+ this._emitInput();
121
+ this.clearEvent.emit(event);
122
+ this.focus();
123
+ }
124
+ //! copy event
125
+ onCopy(event) {
126
+ if (this.value &&
127
+ //does the selection cover the entire input
128
+ ((this.textInputEl()?.nativeElement.selectionStart === 0 &&
129
+ this.textInputEl()?.nativeElement.selectionEnd === this.textInputEl()?.nativeElement.value.length) ||
130
+ //or is zero-wide
131
+ this.textInputEl()?.nativeElement.selectionStart === this.textInputEl()?.nativeElement.selectionEnd)) {
132
+ event.clipboardData?.setData('text/plain', this.value);
133
+ event.preventDefault();
134
+ }
135
+ }
136
+ //! helpers
137
+ _setInputAttributes() {
138
+ const input = this.textInputEl().nativeElement;
139
+ const attributes = {
140
+ type: 'text',
141
+ autocorrect: 'off',
142
+ autocapitalize: 'off',
143
+ autocomplete: 'off',
144
+ tabindex: String(this.tabIndex()),
145
+ ...this.inputAttrs(),
146
+ };
147
+ for (const key of Object.keys(attributes)) {
148
+ input.setAttribute(key, String(attributes[key]));
149
+ }
150
+ }
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: _SimpleInputComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
152
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.0.2", type: _SimpleInputComponentBase, inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, clearButtonTitle: { classPropertyName: "clearButtonTitle", publicName: "clearButtonTitle", 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 }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", inputEvent: "input", changeEvent: "change", clearEvent: "clear" }, queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdSimpleInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdSimpleInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdSimpleInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "textInputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
153
+ }
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: _SimpleInputComponentBase, decorators: [{
155
+ type: Directive
156
+ }], propDecorators: { value: [{
157
+ type: Input
158
+ }] } });
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3NpbXBsZS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvX3NpbXBsZS1pbnB1dC1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxxQkFBcUIsRUFBNkIseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3SCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUNMLDBDQUEwQyxFQUMxQyxxQ0FBcUMsRUFDckMscUNBQXFDLEdBQ3RDLE1BQU0sZ0JBQWdCLENBQUM7O0FBY3hCLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFrQztJQUMxRSxHQUFHLHlCQUF5QjtJQUM1QixVQUFVLEVBQUUscUJBQXFCLENBQUMsUUFBUTtJQUMxQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsT0FBTztJQUNuQyxPQUFPLEVBQUUsS0FBSztJQUNkLFdBQVcsRUFBRSxFQUFFO0lBQ2YsU0FBUyxFQUFFLHNCQUFzQixDQUFDLElBQUk7SUFDdEMsU0FBUyxFQUFFLEtBQUs7SUFDaEIsZ0JBQWdCLEVBQUUsT0FBTztJQUN6QixVQUFVLEVBQUUsRUFBRTtJQUNkLFNBQVMsRUFBRSxTQUFTO0NBQ3JCLENBQUM7QUFHRixNQUFNLE9BQWdCLHlC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Q0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDOzhHQXRKbUIseUJBQXlCO2tHQUF6Qix5QkFBeUIsNG1EQXVCTixxQ0FBcUMsaUdBQ3JDLHFDQUFxQyxzR0FHaEMsMENBQTBDOzsyRkEzQmxFLHlCQUF5QjtrQkFEOUMsU0FBUzs4QkFtRUosS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgY29tcHV0ZWQsIGNvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbnB1dCwgSW5wdXQsIG91dHB1dCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xuaW1wb3J0IHsgX05nTW9kZWxDb21wb25lbnRCYXNlLCBfTmdNb2RlbENvbXBvbmVudERlZmF1bHRzLCBfbmdNb2RlbENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi4vX2ludGVybmFsL25nbW9kZWwtY29tcG9uZW50JztcbmltcG9ydCB7IFNpbXBsZU9uZUF4aXNBbGlnbm1lbnQgfSBmcm9tICcuLy4uL3R5cGVzL2FsaWdubWVudC50eXBlcyc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudEFwcGVhcmFuY2UsIEZvcm1FbGVtZW50VmFyaWFudCB9IGZyb20gJy4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4vLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XG5pbXBvcnQgeyBTaW1wbGVJbnB1dE1vZGVsIH0gZnJvbSAnLi9pbnB1dC11dGlscyc7XG5pbXBvcnQge1xuICBBcmRTaW1wbGVJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZFNpbXBsZUlucHV0UHJlZml4VGVtcGxhdGVEaXJlY3RpdmUsXG4gIEFyZFNpbXBsZUlucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vc2ltcGxlLWlucHV0JztcblxuZXhwb3J0IGludGVyZmFjZSBfU2ltcGxlSW5wdXRDb21wb25lbnREZWZhdWx0cyBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50RGVmYXVsdHMge1xuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2U7XG4gIHZhcmlhbnQ6IEZvcm1FbGVtZW50VmFyaWFudDtcbiAgY29tcGFjdDogYm9vbGVhbjtcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgYWxpZ25UZXh0OiBTaW1wbGVPbmVBeGlzQWxpZ25tZW50O1xuICBjbGVhcmFibGU6IGJvb2xlYW47XG4gIGNsZWFyQnV0dG9uVGl0bGU6IHN0cmluZztcbiAgaW5wdXRBdHRyczogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWF4TGVuZ3RoOiBOdWxsYWJsZTxudW1iZXI+O1xufVxuXG5leHBvcnQgY29uc3QgX3NpbXBsZUlucHV0Q29tcG9uZW50RGVmYXVsdHM6IF9TaW1wbGVJbnB1dENvbXBvbmVudERlZmF1bHRzID0ge1xuICAuLi5fbmdNb2RlbENvbXBvbmVudERlZmF1bHRzLFxuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQsXG4gIHZhcmlhbnQ6IEZvcm1FbGVtZW50VmFyaWFudC5Sb3VuZGVkLFxuICBjb21wYWN0OiBmYWxzZSxcbiAgcGxhY2Vob2xkZXI6ICcnLFxuICBhbGlnblRleHQ6IFNpbXBsZU9uZUF4aXNBbGlnbm1lbnQuTGVmdCxcbiAgY2xlYXJhYmxlOiBmYWxzZSxcbiAgY2xlYXJCdXR0b25UaXRsZTogJ0NsZWFyJyxcbiAgaW5wdXRBdHRyczoge30sXG4gIG1heExlbmd0aDogdW5kZWZpbmVkLFxufTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX1NpbXBsZUlucHV0Q29tcG9uZW50QmFzZSBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX1NpbXBsZUlucHV0Q29tcG9uZW50RGVmYXVsdHM7XG5cbiAgLy8hIGlucHV0IHZpZXdcbiAgcmVhZG9ubHkgdGV4dElucHV0RWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3RleHRJbnB1dCcpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbnB1dE1vZGVsID0gbmV3IFNpbXBsZUlucHV0TW9kZWwodGhpcyk7XG4gIHByaXZhdGUgX3dhc1ZpZXdJbml0ID0gZmFsc2U7XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl93YXNWaWV3SW5pdCA9IHRydWU7XG4gICAgdGhpcy5fc2V0SW5wdXRBdHRyaWJ1dGVzKCk7XG4gICAgLy9zZXQgdGhlIHZhbHVlXG4gICAgaWYgKHRoaXMuX3ZhbHVlQmVmb3JlSW5pdCkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlQmVmb3JlSW5pdCk7XG4gICAgICBkZWxldGUgdGhpcy5fdmFsdWVCZWZvcmVJbml0O1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5wbGFjZWhvbGRlcik7XG4gIHJlYWRvbmx5IGlucHV0SWQgPSBpbnB1dDxOdWxsYWJsZTxzdHJpbmc+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBjbGVhckJ1dHRvblRpdGxlID0gaW5wdXQ8c3RyaW5nPih0aGlzLl9ERUZBVUxUUy5jbGVhckJ1dHRvblRpdGxlKTtcblxuICAvLyEgcHJlZml4ICYgc3VmZml4XG4gIHJlYWRvbmx5IHByZWZpeFRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZFNpbXBsZUlucHV0UHJlZml4VGVtcGxhdGVEaXJlY3RpdmUpO1xuICByZWFkb25seSBzdWZmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRTaW1wbGVJbnB1dFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlKTtcblxuICAvLyEgcGxhY2Vob2xkZXJcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmRTaW1wbGVJbnB1dFBsYWNlaG9sZGVyVGVtcGxhdGVEaXJlY3RpdmUpO1xuXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlQbGFjZWhvbGRlciA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IEJvb2xlYW4odGhpcy5wbGFjZWhvbGRlcigpKSAmJiAhdGhpcy5pbnB1dE1vZGVsLnZhbHVlKCkpO1xuXG4gIC8vISBhcHBlYXJhbmNlXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KHRoaXMuX0RFRkFVTFRTLmFwcGVhcmFuY2UpO1xuICByZWFkb25seSB2YXJpYW50ID0gaW5wdXQ8Rm9ybUVsZW1lbnRWYXJpYW50Pih0aGlzLl9ERUZBVUxUUy52YXJpYW50KTtcbiAgcmVhZG9ubHkgYWxpZ25UZXh0ID0gaW5wdXQ8U2ltcGxlT25lQXhpc0FsaWdubWVudD4odGhpcy5fREVGQVVMVFMuYWxpZ25UZXh0KTtcblxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5jb21wYWN0LCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQoKCk6IHN0cmluZyA9PlxuICAgIFtcbiAgICAgIGBhcmQtYXBwZWFyYW5jZS0ke3RoaXMuYXBwZWFyYW5jZSgpfWAsXG4gICAgICBgYXJkLXZhcmlhbnQtJHt0aGlzLnZhcmlhbnQoKX1gLFxuICAgICAgYGFyZC10ZXh0LWFsaWduLSR7dGhpcy5hbGlnblRleHQoKX1gLFxuICAgICAgdGhpcy5jb21wYWN0KCkgPyAnYXJkLWNvbXBhY3QnIDogJycsXG4gICAgICB0aGlzLmNsZWFyYWJsZSgpID8gJ2FyZC1jbGVhcmFibGUnIDogJycsXG4gICAgXS5qb2luKCcgJylcbiAgKTtcblxuICAvLyEgb3RoZXIgaW5wdXRzXG4gIHJlYWRvbmx5IGlucHV0QXR0cnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih0aGlzLl9ERUZBVUxUUy5pbnB1dEF0dHJzKTtcblxuICAvLyEgbnVtYmVyIGF0dHJpYnV0ZSBzZXR0ZXJzL2dldHRlcnNcbiAgcmVhZG9ubHkgbWF4TGVuZ3RoID0gaW5wdXQ8TnVsbGFibGU8bnVtYmVyPiwgYW55Pih0aGlzLl9ERUZBVUxUUy5tYXhMZW5ndGgsIHtcbiAgICB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubWF4TGVuZ3RoKSxcbiAgfSk7XG5cbiAgLy8hIG5vLXZhbHVlIGF0dHJpYnV0ZSBzZXR0ZXJzL2dldHRlcnNcbiAgcmVhZG9ubHkgY2xlYXJhYmxlID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5jbGVhcmFibGUsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcblxuICAvLyEgY29udHJvbCB2YWx1ZSBhY2Nlc3NvcidzIHdyaXRlIHZhbHVlIGltcGxlbWVudGF0aW9uXG4gIHdyaXRlVmFsdWUodjogYW55KSB7XG4gICAgdGhpcy5pbnB1dE1vZGVsLndyaXRlVmFsdWUodik7XG4gIH1cbiAgLy8hIHZhbHVlIHR3by13YXkgYmluZGluZ1xuICBwcm90ZWN0ZWQgX3ZhbHVlQmVmb3JlSW5pdD86IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodjogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fd2FzVmlld0luaXQpIHtcbiAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlSW5pdCA9IHY7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcbiAgfVxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRNb2RlbC52YWx1ZSgpO1xuICB9XG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PHN0cmluZyB8IG51bGw+KCk7XG5cbiAgLy8hIGV2ZW50IGVtaXR0ZXJzXG4gIHJlYWRvbmx5IGlucHV0RXZlbnQgPSBvdXRwdXQ8c3RyaW5nIHwgbnVsbD4oeyBhbGlhczogJ2lucHV0JyB9KTtcbiAgcmVhZG9ubHkgY2hhbmdlRXZlbnQgPSBvdXRwdXQ8c3RyaW5nIHwgbnVsbD4oeyBhbGlhczogJ2NoYW5nZScgfSk7XG4gIHJlYWRvbmx5IGNsZWFyRXZlbnQgPSBvdXRwdXQ8TW91c2VFdmVudD4oeyBhbGlhczogJ2NsZWFyJyB9KTtcblxuICAvLyEgZXZlbnQgaGFuZGxlcnNcbiAgb25JbnB1dChuZXdWYWw6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlSGFzQ2hhbmdlZCA9IHRoaXMuaW5wdXRNb2RlbC53cml0ZVZhbHVlKG5ld1ZhbCk7XG4gICAgaWYgKCF2YWx1ZUhhc0NoYW5nZWQpIHJldHVybjtcbiAgICB0aGlzLl9lbWl0SW5wdXQoKTtcbiAgfVxuICBwcm90ZWN0ZWQgX2VtaXRJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih0aGlzLnZhbHVlKTtcbiAgICB0aGlzLmlucHV0RXZlbnQuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cbiAgLy9mb2N1cywgYmx1ciwgY2hhbmdlXG4gIG9uRm9jdXNNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uRm9jdXMoZXZlbnQpO1xuICB9XG4gIG9uQmx1ck1hc3RlcihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcbiAgfVxuICBvbkNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh0aGlzLmlucHV0TW9kZWwudmFsdWUoKSk7XG4gIH1cbiAgLy8gY2xlYXIgYnV0dG9uXG4gIHJlYWRvbmx5IHNob3VsZFNob3dDbGVhckJ1dHRvbiA9IGNvbXB1dGVkPGJvb2xlYW4+KFxuICAgICgpID0+IHRoaXMuY2xlYXJhYmxlKCkgJiYgIXRoaXMuZGlzYWJsZWQoKSAmJiBCb29sZWFuKHRoaXMuaW5wdXRNb2RlbC52YWx1ZSgpKVxuICApO1xuICBvbkNsZWFyQnV0dG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlucHV0TW9kZWwuY2xlYXIoKTtcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG4gICAgdGhpcy5fZW1pdElucHV0KCk7XG4gICAgdGhpcy5jbGVhckV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIHRoaXMuZm9jdXMoKTtcbiAgfVxuXG4gIC8vISBjb3B5IGV2ZW50XG4gIG9uQ29weShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnZhbHVlICYmXG4gICAgICAvL2RvZXMgdGhlIHNlbGVjdGlvbiBjb3ZlciB0aGUgZW50aXJlIGlucHV0XG4gICAgICAoKHRoaXMudGV4dElucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICB0aGlzLnRleHRJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09PSB0aGlzLnRleHRJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQudmFsdWUubGVuZ3RoKSB8fFxuICAgICAgICAvL29yIGlzIHplcm8td2lkZVxuICAgICAgICB0aGlzLnRleHRJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IHRoaXMudGV4dElucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQpXG4gICAgKSB7XG4gICAgICBldmVudC5jbGlwYm9hcmREYXRhPy5zZXREYXRhKCd0ZXh0L3BsYWluJywgdGhpcy52YWx1ZSk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuICAvLyEgaGVscGVyc1xuICBwcm90ZWN0ZWQgX3NldElucHV0QXR0cmlidXRlcygpIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMudGV4dElucHV0RWwoKSEubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgYXV0b2NvcnJlY3Q6ICdvZmYnLFxuICAgICAgYXV0b2NhcGl0YWxpemU6ICdvZmYnLFxuICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcbiAgICAgIHRhYmluZGV4OiBTdHJpbmcodGhpcy50YWJJbmRleCgpKSxcbiAgICAgIC4uLnRoaXMuaW5wdXRBdHRycygpLFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKSkge1xuICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKGtleSwgU3RyaW5nKGF0dHJpYnV0ZXNba2V5XSkpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,24 +1,23 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, computed, effect, forwardRef, input, output, viewChildren, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Inject, Input, ViewEncapsulation, computed, effect, forwardRef, input, output, viewChildren, } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { coerceBooleanProperty } from '@ardium-ui/devkit';
4
4
  import { _NgModelComponentBase } from '../../_internal/ngmodel-component';
5
- import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
5
+ import { ARD_DIGIT_INPUT_DEFAULTS } from './digit-input.defaults';
6
6
  import { DigitInputModel } from './digit-input.model';
7
- import { DigitInputShape } from './digit-input.types';
8
7
  import * as i0 from "@angular/core";
9
8
  import * as i1 from "@angular/common";
10
9
  export class ArdiumDigitInputComponent extends _NgModelComponentBase {
11
- constructor() {
12
- super(...arguments);
10
+ constructor(defaults) {
11
+ super(defaults);
13
12
  //! inputs ref
14
13
  this.inputs = viewChildren('input');
15
14
  //! data model
16
15
  this.model = new DigitInputModel(this);
17
16
  //! appearance
18
- this.appearance = input(FormElementAppearance.Outlined);
19
- this.variant = input(FormElementVariant.Rounded);
20
- this.shape = input(DigitInputShape.Square);
21
- this.compact = input(false, { transform: v => coerceBooleanProperty(v) });
17
+ this.appearance = input(this._DEFAULTS.appearance);
18
+ this.variant = input(this._DEFAULTS.variant);
19
+ this.shape = input(this._DEFAULTS.shape);
20
+ this.compact = input(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });
22
21
  this.ngClasses = computed(() => [
23
22
  `ard-appearance-${this.appearance()}`,
24
23
  `ard-variant-${this.variant()}`,
@@ -38,7 +37,7 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
38
37
  this._emitChange();
39
38
  });
40
39
  //! value two-way binding
41
- this.outputAsString = input(false, { transform: v => coerceBooleanProperty(v) });
40
+ this.outputAsString = input(this._DEFAULTS.outputAsString, { transform: v => coerceBooleanProperty(v) });
42
41
  this.valueChange = output();
43
42
  this.stringValue = this.model.stringValue;
44
43
  this.emittableValue = computed(() => {
@@ -144,14 +143,14 @@ export class ArdiumDigitInputComponent extends _NgModelComponentBase {
144
143
  return;
145
144
  }
146
145
  }
147
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumDigitInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumDigitInputComponent, deps: [{ token: ARD_DIGIT_INPUT_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
148
147
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ArdiumDigitInputComponent, selector: "ard-digit-input", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, outputAsString: { classPropertyName: "outputAsString", publicName: "outputAsString", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", finishedValue: "finishedValue", focusIndexEvent: "focusIndex", blurIndexEvent: "blurIndex" }, providers: [
149
148
  {
150
149
  provide: NG_VALUE_ACCESSOR,
151
150
  useExisting: forwardRef(() => ArdiumDigitInputComponent),
152
151
  multi: true,
153
152
  },
154
- ], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div class=\"ard-digit-input__item\">\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
153
+ ], viewQueries: [{ propertyName: "inputs", predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ard-digit-input\"\n [ngClass]=\"ngClasses()\"\n>\n @for (data of configArrayData(); track $index) {\n <div class=\"ard-digit-input__item\">\n @if (data.type === 'input') {\n <input\n #input\n #focusableElement\n class=\"ard-digit-input__input\"\n type=\"text\"\n autocomplete=\"off\"\n [readonly]=\"data.readonly\"\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\n (paste)=\"onPaste($event, data.index!)\"\n (input)=\"onInput($event, data.index!)\"\n (focus)=\"onFocusMaster($event, data.index!)\"\n (blur)=\"onBlurMaster($event, data.index!)\"\n (keydown)=\"onKeydown($event, data.index!)\"\n />\n } @else {\n <div class=\"ard-digit-input__static\">\n {{ data.char }}\n </div>\n }\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
155
154
  }
156
155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumDigitInputComponent, decorators: [{
157
156
  type: Component,
@@ -161,8 +160,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
161
160
  useExisting: forwardRef(() => ArdiumDigitInputComponent),
162
161
  multi: true,
163
162
  },
164
- ], template: "<div\r\n class=\"ard-digit-input\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (data of configArrayData(); track $index) {\r\n <div class=\"ard-digit-input__item\">\r\n @if (data.type === 'input') {\r\n <input\r\n #input\r\n #focusableElement\r\n class=\"ard-digit-input__input\"\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\r\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\r\n (paste)=\"onPaste($event, data.index!)\"\r\n (input)=\"onInput($event, data.index!)\"\r\n (focus)=\"onFocusMaster($event, data.index!)\"\r\n (blur)=\"onBlurMaster($event, data.index!)\"\r\n (keydown)=\"onKeydown($event, data.index!)\"\r\n />\r\n } @else {\r\n <div class=\"ard-digit-input__static\">\r\n {{ data.char }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n" }]
165
- }], propDecorators: { value: [{
163
+ ], template: "<div\n class=\"ard-digit-input\"\n [ngClass]=\"ngClasses()\"\n>\n @for (data of configArrayData(); track $index) {\n <div class=\"ard-digit-input__item\">\n @if (data.type === 'input') {\n <input\n #input\n #focusableElement\n class=\"ard-digit-input__input\"\n type=\"text\"\n autocomplete=\"off\"\n [readonly]=\"data.readonly\"\n [class.ard-digit-input__input-readonly]=\"data.readonly\"\n [class.ard-digit-input__input-empty]=\"isInputEmpty(data.index!)\"\n (paste)=\"onPaste($event, data.index!)\"\n (input)=\"onInput($event, data.index!)\"\n (focus)=\"onFocusMaster($event, data.index!)\"\n (blur)=\"onBlurMaster($event, data.index!)\"\n (keydown)=\"onKeydown($event, data.index!)\"\n />\n } @else {\n <div class=\"ard-digit-input__static\">\n {{ data.char }}\n </div>\n }\n </div>\n }\n</div>\n" }]
164
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
165
+ type: Inject,
166
+ args: [ARD_DIGIT_INPUT_DEFAULTS]
167
+ }] }], propDecorators: { value: [{
166
168
  type: Input
167
169
  }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBb0IsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWlCeEUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHFCQUFxQjtJQWRwRTs7UUFlRSxjQUFjO1FBQ0wsV0FBTSxHQUFHLFlBQVksQ0FBK0IsT0FBTyxDQUFDLENBQUM7UUFFdEUsY0FBYztRQUNHLFVBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxjQUFjO1FBQ0wsZUFBVSxHQUFHLEtBQUssQ0FBd0IscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7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LENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixPQUFPO1FBQ1gsQ0FBQztJQUNILENBQUM7OEdBeEpVLHlCQUF5QjtrR0FBekIseUJBQXlCLDRqQ0FSekI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YscUpDakNILGloQ0E4QkE7OzJGREthLHlCQUF5QjtrQkFkckMsU0FBUzsrQkFDRSxpQkFBaUIsaUJBR1osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSwwQkFBMEIsQ0FBQzs0QkFDeEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBdURHLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgY29tcHV0ZWQsXHJcbiAgZWZmZWN0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5wdXQsXHJcbiAgb3V0cHV0LFxyXG4gIHZpZXdDaGlsZHJlbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IF9OZ01vZGVsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XHJcbmltcG9ydCB7IERpZ2l0SW5wdXRNb2RlbCB9IGZyb20gJy4vZGlnaXQtaW5wdXQubW9kZWwnO1xyXG5pbXBvcnQgeyBEaWdpdElucHV0Q29uZmlnLCBEaWdpdElucHV0U2hhcGUgfSBmcm9tICcuL2RpZ2l0LWlucHV0LnR5cGVzJztcclxuaW1wb3J0IHsgRGlnaXRJbnB1dE1vZGVsSG9zdCB9IGZyb20gJy4vZGlnaXQtaW5wdXQudXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtZGlnaXQtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGlnaXQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudCBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEaWdpdElucHV0TW9kZWxIb3N0IHtcclxuICAvLyEgaW5wdXRzIHJlZlxyXG4gIHJlYWRvbmx5IGlucHV0cyA9IHZpZXdDaGlsZHJlbjxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignaW5wdXQnKTtcclxuXHJcbiAgLy8hIGRhdGEgbW9kZWxcclxuICBwcml2YXRlIHJlYWRvbmx5IG1vZGVsID0gbmV3IERpZ2l0SW5wdXRNb2RlbCh0aGlzKTtcclxuXHJcbiAgLy8hIGFwcGVhcmFuY2VcclxuICByZWFkb25seSBhcHBlYXJhbmNlID0gaW5wdXQ8Rm9ybUVsZW1lbnRBcHBlYXJhbmNlPihGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpO1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KEZvcm1FbGVtZW50VmFyaWFudC5Sb3VuZGVkKTtcclxuICByZWFkb25seSBzaGFwZSA9IGlucHV0PERpZ2l0SW5wdXRTaGFwZT4oRGlnaXRJbnB1dFNoYXBlLlNxdWFyZSk7XHJcblxyXG4gIHJlYWRvbmx5IGNvbXBhY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG5nQ2xhc3NlcyA9IGNvbXB1dGVkKCgpOiBzdHJpbmcgPT5cclxuICAgIFtcclxuICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlKCl9YCxcclxuICAgICAgYGFyZC12YXJpYW50LSR7dGhpcy52YXJpYW50KCl9YCxcclxuICAgICAgYGFyZC1zaGFwZS0ke3RoaXMuc2hhcGUoKX1gLFxyXG4gICAgICB0aGlzLmNvbXBhY3QoKSA/ICdhcmQtY29tcGFjdCcgOiAnJyxcclxuICAgIF0uam9pbignICcpXHJcbiAgKTtcclxuXHJcbiAgLy8hIG1vZGVsIGFjY2VzcyBwb2ludHNcclxuICByZWFkb25seSBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDx2b2lkLCBEaWdpdElucHV0Q29uZmlnPih7XHJcbiAgICB0cmFuc2Zvcm06IHYgPT4gdGhpcy5tb2RlbC5zZXRDb25maWcodiksXHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgY29uZmlnQXJyYXlEYXRhID0gdGhpcy5tb2RlbC5jb25maWdBcnJheURhdGE7XHJcblxyXG4gIHByaXZhdGUgX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCA9IC0xO1xyXG4gIHJlYWRvbmx5IGNvbmZpZ0FycmF5RGF0YUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGggPT09IHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCA9IHRoaXMuY29uZmlnQXJyYXlEYXRhKCkubGVuZ3RoO1xyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gIH0pO1xyXG5cclxuICBpc0lucHV0RW1wdHkoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLm1vZGVsLmlzRGVmaW5lZEF0SW5kZXgoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IncyB3cml0ZSB2YWx1ZSBpbXBsZW1lbnRhdGlvblxyXG4gIHdyaXRlVmFsdWUodjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKHYpO1xyXG4gIH1cclxuICBwcml2YXRlIF93cml0ZVZhbHVlKHY6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMubW9kZWwud3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcblxyXG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcclxuICByZWFkb25seSBvdXRwdXRBc1N0cmluZyA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdmFsdWUodjogc3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsKSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbD4oKTtcclxuXHJcbiAgcmVhZG9ubHkgc3RyaW5nVmFsdWUgPSB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlO1xyXG5cclxuICByZWFkb25seSBlbWl0dGFibGVWYWx1ZSA9IGNvbXB1dGVkKCgpOiBzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGwgPT4ge1xyXG4gICAgaWYgKHRoaXMub3V0cHV0QXNTdHJpbmcoKSkgcmV0dXJuIHRoaXMubW9kZWwuc3RyaW5nVmFsdWUoKTtcclxuICAgIHJldHVybiB0aGlzLm1vZGVsLnZhbHVlKCk7XHJcbiAgfSk7XHJcblxyXG4gIC8vISBldmVudCBlbWl0dGVyc1xyXG4gIHJlYWRvbmx5IGZpbmlzaGVkVmFsdWUgPSBvdXRwdXQ8c3RyaW5nIHwgKHN0cmluZyB8IG51bGwpW10gfCBudWxsPigpO1xyXG5cclxuICByZWFkb25seSBmb2N1c0luZGV4RXZlbnQgPSBvdXRwdXQ8bnVtYmVyPih7IGFsaWFzOiAnZm9jdXNJbmRleCcgfSk7XHJcbiAgcmVhZG9ubHkgYmx1ckluZGV4RXZlbnQgPSBvdXRwdXQ8bnVtYmVyPih7IGFsaWFzOiAnYmx1ckluZGV4JyB9KTtcclxuXHJcbiAgLy8hIGV2ZW50IGhhbmRsZXJzXHJcbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMuaW5wdXRzKCkubGVuZ3RoIC0gaW5kZXg7XHJcbiAgICB2YWx1ZVxyXG4gICAgICAuc2xpY2UoMCwgbWF4TGVuZ3RoKVxyXG4gICAgICAuc3BsaXQoJycpXHJcbiAgICAgIC5mb3JFYWNoKChjaGFyLCBpKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC52YWxpZGF0ZUlucHV0QW5kU2V0VmFsdWUoY2hhciwgaW5kZXggKyBpKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEgKyBNYXRoLm1pbih2YWx1ZS5sZW5ndGgsIG1heExlbmd0aCkpO1xyXG4gIH1cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCBpbmRleCk7XHJcbiAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIDEpO1xyXG4gIH1cclxuICBwcml2YXRlIF91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbHVlQ2hhbmdlZCA9IHRoaXMubW9kZWwudmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKHZhbHVlLCBpbmRleCk7XHJcbiAgICBpZiAoIXZhbHVlQ2hhbmdlZCB8fCAhdmFsdWVDaGFuZ2VkWzBdKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLm1vZGVsLmlzVmFsdWVGdWxsKCkpIHtcclxuICAgICAgdGhpcy5ibHVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbjtcclxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlciwgdHJ5Rm9jdXNpbmdOZXh0OiBib29sZWFuLCBkaXJlY3Rpb246IDEgfCAtMSk6IGJvb2xlYW47XHJcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dD86IGJvb2xlYW4sIGRpcmVjdGlvbj86IDEgfCAtMSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmlucHV0cygpLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgbmV4dEVsID0gdGhpcy5pbnB1dHMoKVtpbmRleF0/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoIW5leHRFbCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIG5leHRFbC5mb2N1cygpO1xyXG4gICAgaWYgKHRyeUZvY3VzaW5nTmV4dCAmJiBkaXJlY3Rpb24gJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gbmV4dEVsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvY3VzQnlJbmRleChpbmRleCArIGRpcmVjdGlvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbmV4dEVsO1xyXG4gIH1cclxuICAvL2ZvY3VzLCBibHVyLCBjaGFuZ2VcclxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzSW5kZXhFdmVudC5lbWl0KGluZGV4KTtcclxuICAgIHRoaXMub25Gb2N1cyhldmVudCk7XHJcbiAgfVxyXG4gIG9uQmx1ck1hc3RlcihldmVudDogRm9jdXNFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5ibHVySW5kZXhFdmVudC5lbWl0KGluZGV4KTtcclxuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMuZW1pdHRhYmxlVmFsdWUoKTtcclxuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHYpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xyXG4gICAgaWYgKHRoaXMubW9kZWwuaXNWYWx1ZUZ1bGwoKSkge1xyXG4gICAgICB0aGlzLmZpbmlzaGVkVmFsdWUuZW1pdCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxyXG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4IC0gMSwgdHJ1ZSwgLTEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxLCB0cnVlLCArMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICBjYXNlICdIb21lJzpcclxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleCgwLCB0cnVlLCAxKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIGNhc2UgJ0VuZCc6XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgodGhpcy5pbnB1dHMubGVuZ3RoIC0gMSwgdHJ1ZSwgLTEpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcclxuICAgICAgY2FzZSAnRGVsZXRlJzpcclxuICAgICAgICB0aGlzLl91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKCcnLCBpbmRleCk7XHJcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggLSAxLCB0cnVlLCAtMSk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dFwiXHJcbiAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxyXG4+XHJcbiAgQGZvciAoZGF0YSBvZiBjb25maWdBcnJheURhdGEoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLWRpZ2l0LWlucHV0X19pdGVtXCI+XHJcbiAgICAgIEBpZiAoZGF0YS50eXBlID09PSAnaW5wdXQnKSB7XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAjaW5wdXRcclxuICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XHJcbiAgICAgICAgICBjbGFzcz1cImFyZC1kaWdpdC1pbnB1dF9faW5wdXRcIlxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgIFtyZWFkb25seV09XCJkYXRhLnJlYWRvbmx5XCJcclxuICAgICAgICAgIFtjbGFzcy5hcmQtZGlnaXQtaW5wdXRfX2lucHV0LXJlYWRvbmx5XT1cImRhdGEucmVhZG9ubHlcIlxyXG4gICAgICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtZW1wdHldPVwiaXNJbnB1dEVtcHR5KGRhdGEuaW5kZXghKVwiXHJcbiAgICAgICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dCgkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1c01hc3RlcigkZXZlbnQsIGRhdGEuaW5kZXghKVwiXHJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXJNYXN0ZXIoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxyXG4gICAgICAgICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudCwgZGF0YS5pbmRleCEpXCJcclxuICAgICAgICAvPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXJkLWRpZ2l0LWlucHV0X19zdGF0aWNcIj5cclxuICAgICAgICAgIHt7IGRhdGEuY2hhciB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXQtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGlnaXQtaW5wdXQvZGlnaXQtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFDTCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBeUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQWtCdEQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHFCQUFxQjtJQUVsRSxZQUE4QyxRQUErQjtRQUMzRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFHbEIsY0FBYztRQUNMLFdBQU0sR0FBRyxZQUFZLENBQStCLE9BQU8sQ0FBQyxDQUFDO1FBRXRFLGNBQWM7UUFDRyxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkQsY0FBYztRQUNMLGVBQVUsR0FBRyxLQUFLLENBQXdCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFD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LElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixPQUFPO1FBQ1gsQ0FBQztJQUNILENBQUM7OEdBN0pVLHlCQUF5QixrQkFFaEIsd0JBQXdCO2tHQUZqQyx5QkFBeUIsNGpDQVJ6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7Z0JBQ3hELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixxSkNuQ0gscTlCQThCQTs7MkZET2EseUJBQXlCO2tCQWRyQyxTQUFTOytCQUNFLGlCQUFpQixpQkFHWixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDOzRCQUN4RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs7MEJBSVksTUFBTTsyQkFBQyx3QkFBd0I7eUNBd0R4QyxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgZm9yd2FyZFJlZixcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgdmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IF9OZ01vZGVsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtRWxlbWVudEFwcGVhcmFuY2UsIEZvcm1FbGVtZW50VmFyaWFudCB9IGZyb20gJy4uLy4uL3R5cGVzL3RoZW1pbmcudHlwZXMnO1xuaW1wb3J0IHsgQVJEX0RJR0lUX0lOUFVUX0RFRkFVTFRTLCBBcmREaWdpdElucHV0RGVmYXVsdHMgfSBmcm9tICcuL2RpZ2l0LWlucHV0LmRlZmF1bHRzJztcbmltcG9ydCB7IERpZ2l0SW5wdXRNb2RlbCB9IGZyb20gJy4vZGlnaXQtaW5wdXQubW9kZWwnO1xuaW1wb3J0IHsgRGlnaXRJbnB1dENvbmZpZywgRGlnaXRJbnB1dFNoYXBlIH0gZnJvbSAnLi9kaWdpdC1pbnB1dC50eXBlcyc7XG5pbXBvcnQgeyBEaWdpdElucHV0TW9kZWxIb3N0IH0gZnJvbSAnLi9kaWdpdC1pbnB1dC51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZC1kaWdpdC1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWdpdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpZ2l0LWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFyZGl1bURpZ2l0SW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtRGlnaXRJbnB1dENvbXBvbmVudCBleHRlbmRzIF9OZ01vZGVsQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEaWdpdElucHV0TW9kZWxIb3N0IHtcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IEFyZERpZ2l0SW5wdXREZWZhdWx0cztcbiAgY29uc3RydWN0b3IoQEluamVjdChBUkRfRElHSVRfSU5QVVRfREVGQVVMVFMpIGRlZmF1bHRzOiBBcmREaWdpdElucHV0RGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cyk7XG4gIH1cblxuICAvLyEgaW5wdXRzIHJlZlxuICByZWFkb25seSBpbnB1dHMgPSB2aWV3Q2hpbGRyZW48RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2lucHV0Jyk7XG5cbiAgLy8hIGRhdGEgbW9kZWxcbiAgcHJpdmF0ZSByZWFkb25seSBtb2RlbCA9IG5ldyBEaWdpdElucHV0TW9kZWwodGhpcyk7XG5cbiAgLy8hIGFwcGVhcmFuY2VcbiAgcmVhZG9ubHkgYXBwZWFyYW5jZSA9IGlucHV0PEZvcm1FbGVtZW50QXBwZWFyYW5jZT4odGhpcy5fREVGQVVMVFMuYXBwZWFyYW5jZSk7XG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xuICByZWFkb25seSBzaGFwZSA9IGlucHV0PERpZ2l0SW5wdXRTaGFwZT4odGhpcy5fREVGQVVMVFMuc2hhcGUpO1xuXG4gIHJlYWRvbmx5IGNvbXBhY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmNvbXBhY3QsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcblxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKTogc3RyaW5nID0+XG4gICAgW1xuICAgICAgYGFyZC1hcHBlYXJhbmNlLSR7dGhpcy5hcHBlYXJhbmNlKCl9YCxcbiAgICAgIGBhcmQtdmFyaWFudC0ke3RoaXMudmFyaWFudCgpfWAsXG4gICAgICBgYXJkLXNoYXBlLSR7dGhpcy5zaGFwZSgpfWAsXG4gICAgICB0aGlzLmNvbXBhY3QoKSA/ICdhcmQtY29tcGFjdCcgOiAnJyxcbiAgICBdLmpvaW4oJyAnKVxuICApO1xuXG4gIC8vISBtb2RlbCBhY2Nlc3MgcG9pbnRzXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0LnJlcXVpcmVkPHZvaWQsIERpZ2l0SW5wdXRDb25maWc+KHtcbiAgICB0cmFuc2Zvcm06IHYgPT4gdGhpcy5tb2RlbC5zZXRDb25maWcodiksXG4gIH0pO1xuICByZWFkb25seSBjb25maWdBcnJheURhdGEgPSB0aGlzLm1vZGVsLmNvbmZpZ0FycmF5RGF0YTtcblxuICBwcml2YXRlIF9vbGRDb25maWdBcnJheURhdGFMZW5ndGggPSAtMTtcbiAgcmVhZG9ubHkgY29uZmlnQXJyYXlEYXRhRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGggPT09IHRoaXMuX29sZENvbmZpZ0FycmF5RGF0YUxlbmd0aCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fb2xkQ29uZmlnQXJyYXlEYXRhTGVuZ3RoID0gdGhpcy5jb25maWdBcnJheURhdGEoKS5sZW5ndGg7XG4gICAgdGhpcy5fZW1pdENoYW5nZSgpO1xuICB9KTtcblxuICBpc0lucHV0RW1wdHkoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5tb2RlbC5pc0RlZmluZWRBdEluZGV4KGluZGV4KTtcbiAgfVxuXG4gIC8vISBjb250cm9sIHZhbHVlIGFjY2Vzc29yJ3Mgd3JpdGUgdmFsdWUgaW1wbGVtZW50YXRpb25cbiAgd3JpdGVWYWx1ZSh2OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl93cml0ZVZhbHVlKHYpO1xuICB9XG4gIHByaXZhdGUgX3dyaXRlVmFsdWUodjogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwud3JpdGVWYWx1ZSh2KTtcbiAgfVxuXG4gIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcbiAgcmVhZG9ubHkgb3V0cHV0QXNTdHJpbmcgPSBpbnB1dDxib29sZWFuLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm91dHB1dEFzU3RyaW5nLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHY6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCkge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcbiAgfVxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XG5cbiAgcmVhZG9ubHkgc3RyaW5nVmFsdWUgPSB0aGlzLm1vZGVsLnN0cmluZ1ZhbHVlO1xuXG4gIHJlYWRvbmx5IGVtaXR0YWJsZVZhbHVlID0gY29tcHV0ZWQoKCk6IHN0cmluZyB8IChzdHJpbmcgfCBudWxsKVtdIHwgbnVsbCA9PiB7XG4gICAgaWYgKHRoaXMub3V0cHV0QXNTdHJpbmcoKSkgcmV0dXJuIHRoaXMubW9kZWwuc3RyaW5nVmFsdWUoKTtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC52YWx1ZSgpO1xuICB9KTtcblxuICAvLyEgZXZlbnQgZW1pdHRlcnNcbiAgcmVhZG9ubHkgZmluaXNoZWRWYWx1ZSA9IG91dHB1dDxzdHJpbmcgfCAoc3RyaW5nIHwgbnVsbClbXSB8IG51bGw+KCk7XG5cbiAgcmVhZG9ubHkgZm9jdXNJbmRleEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2ZvY3VzSW5kZXgnIH0pO1xuICByZWFkb25seSBibHVySW5kZXhFdmVudCA9IG91dHB1dDxudW1iZXI+KHsgYWxpYXM6ICdibHVySW5kZXgnIH0pO1xuXG4gIC8vISBldmVudCBoYW5kbGVyc1xuICBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5pbnB1dHMoKS5sZW5ndGggLSBpbmRleDtcbiAgICB2YWx1ZVxuICAgICAgLnNsaWNlKDAsIG1heExlbmd0aClcbiAgICAgIC5zcGxpdCgnJylcbiAgICAgIC5mb3JFYWNoKChjaGFyLCBpKSA9PiB7XG4gICAgICAgIHRoaXMubW9kZWwudmFsaWRhdGVJbnB1dEFuZFNldFZhbHVlKGNoYXIsIGluZGV4ICsgaSk7XG4gICAgICB9KTtcbiAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEgKyBNYXRoLm1pbih2YWx1ZS5sZW5ndGgsIG1heExlbmd0aCkpO1xuICB9XG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlU2luZ2xlSW5wdXRWYWx1ZSgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCBpbmRleCk7XG4gICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyAxKTtcbiAgfVxuICBwcml2YXRlIF91cGRhdGVTaW5nbGVJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZUNoYW5nZWQgPSB0aGlzLm1vZGVsLnZhbGlkYXRlSW5wdXRBbmRTZXRWYWx1ZSh2YWx1ZSwgaW5kZXgpO1xuICAgIGlmICghdmFsdWVDaGFuZ2VkIHx8ICF2YWx1ZUNoYW5nZWRbMF0pIHJldHVybjtcblxuICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcblxuICAgIGlmICh0aGlzLm1vZGVsLmlzVmFsdWVGdWxsKCkpIHtcbiAgICAgIHRoaXMuYmx1cigpO1xuICAgIH1cbiAgfVxuICBmb2N1c0J5SW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW47XG4gIGZvY3VzQnlJbmRleChpbmRleDogbnVtYmVyLCB0cnlGb2N1c2luZ05leHQ6IGJvb2xlYW4sIGRpcmVjdGlvbjogMSB8IC0xKTogYm9vbGVhbjtcbiAgZm9jdXNCeUluZGV4KGluZGV4OiBudW1iZXIsIHRyeUZvY3VzaW5nTmV4dD86IGJvb2xlYW4sIGRpcmVjdGlvbj86IDEgfCAtMSk6IGJvb2xlYW4ge1xuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5pbnB1dHMoKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBuZXh0RWwgPSB0aGlzLmlucHV0cygpW2luZGV4XT8ubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoIW5leHRFbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgbmV4dEVsLmZvY3VzKCk7XG4gICAgaWYgKHRyeUZvY3VzaW5nTmV4dCAmJiBkaXJlY3Rpb24gJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gbmV4dEVsKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggKyBkaXJlY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gbmV4dEVsO1xuICB9XG4gIC8vZm9jdXMsIGJsdXIsIGNoYW5nZVxuICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c0luZGV4RXZlbnQuZW1pdChpbmRleCk7XG4gICAgdGhpcy5vbkZvY3VzKGV2ZW50KTtcbiAgfVxuICBvbkJsdXJNYXN0ZXIoZXZlbnQ6IEZvY3VzRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmJsdXJJbmRleEV2ZW50LmVtaXQoaW5kZXgpO1xuICAgIHRoaXMub25CbHVyKGV2ZW50KTtcbiAgfVxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgdiA9IHRoaXMuZW1pdHRhYmxlVmFsdWUoKTtcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XG4gICAgaWYgKHRoaXMubW9kZWwuaXNWYWx1ZUZ1bGwoKSkge1xuICAgICAgdGhpcy5maW5pc2hlZFZhbHVlLmVtaXQodik7XG4gICAgfVxuICB9XG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICB0aGlzLmZvY3VzQnlJbmRleChpbmRleCAtIDEsIHRydWUsIC0xKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KGluZGV4ICsgMSwgdHJ1ZSwgKzEpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoMCwgdHJ1ZSwgMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIHRoaXMuZm9jdXNCeUluZGV4KHRoaXMuaW5wdXRzLmxlbmd0aCAtIDEsIHRydWUsIC0xKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNpbmdsZUlucHV0VmFsdWUoJycsIGluZGV4KTtcbiAgICAgICAgdGhpcy5mb2N1c0J5SW5kZXgoaW5kZXggLSAxLCB0cnVlLCAtMSk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRcIlxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXG4+XG4gIEBmb3IgKGRhdGEgb2YgY29uZmlnQXJyYXlEYXRhKCk7IHRyYWNrICRpbmRleCkge1xuICAgIDxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2l0ZW1cIj5cbiAgICAgIEBpZiAoZGF0YS50eXBlID09PSAnaW5wdXQnKSB7XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XG4gICAgICAgICAgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX2lucHV0XCJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXG4gICAgICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtcmVhZG9ubHldPVwiZGF0YS5yZWFkb25seVwiXG4gICAgICAgICAgW2NsYXNzLmFyZC1kaWdpdC1pbnB1dF9faW5wdXQtZW1wdHldPVwiaXNJbnB1dEVtcHR5KGRhdGEuaW5kZXghKVwiXG4gICAgICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudCwgZGF0YS5pbmRleCEpXCJcbiAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1c01hc3RlcigkZXZlbnQsIGRhdGEuaW5kZXghKVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyTWFzdGVyKCRldmVudCwgZGF0YS5pbmRleCEpXCJcbiAgICAgICAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50LCBkYXRhLmluZGV4ISlcIlxuICAgICAgICAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcmQtZGlnaXQtaW5wdXRfX3N0YXRpY1wiPlxuICAgICAgICAgIHt7IGRhdGEuY2hhciB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=