@ardium-ui/ui 1.0.3 → 2.0.2

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 (445) hide show
  1. package/README.md +25 -25
  2. package/esm2022/lib/_internal/boolean-component.mjs +28 -42
  3. package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +5 -5
  4. package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +5 -5
  5. package/esm2022/lib/_internal/disablable-component.mjs +24 -22
  6. package/esm2022/lib/_internal/focusable-component.mjs +12 -25
  7. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +172 -169
  8. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +115 -120
  9. package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +56 -53
  10. package/esm2022/lib/_internal/models/pagination.model.mjs +72 -106
  11. package/esm2022/lib/_internal/ngmodel-component.mjs +5 -5
  12. package/esm2022/lib/_internal/queue.mjs +1 -1
  13. package/esm2022/lib/_internal/selectable-list-component.mjs +74 -98
  14. package/esm2022/lib/badge/badge.directive.mjs +70 -99
  15. package/esm2022/lib/badge/badge.module.mjs +5 -5
  16. package/esm2022/lib/badge/badge.types.mjs +1 -1
  17. package/esm2022/lib/badge/index.mjs +4 -0
  18. package/esm2022/lib/buttons/_button-base.mjs +13 -35
  19. package/esm2022/lib/buttons/button/button.component.mjs +22 -37
  20. package/esm2022/lib/buttons/button/button.module.mjs +5 -5
  21. package/esm2022/lib/buttons/button/index.mjs +3 -0
  22. package/esm2022/lib/buttons/fab/fab.component.mjs +16 -28
  23. package/esm2022/lib/buttons/fab/fab.module.mjs +5 -5
  24. package/esm2022/lib/buttons/fab/index.mjs +3 -0
  25. package/esm2022/lib/buttons/general-button.types.mjs +1 -1
  26. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +17 -25
  27. package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +5 -5
  28. package/esm2022/lib/buttons/icon-button/index.mjs +3 -0
  29. package/esm2022/lib/card/card.children.mjs +32 -33
  30. package/esm2022/lib/card/card.component.mjs +14 -17
  31. package/esm2022/lib/card/card.module.mjs +5 -5
  32. package/esm2022/lib/card/card.types.mjs +1 -1
  33. package/esm2022/lib/card/index.mjs +5 -0
  34. package/esm2022/lib/checkbox/checkbox.component.mjs +33 -46
  35. package/esm2022/lib/checkbox/checkbox.module.mjs +5 -5
  36. package/esm2022/lib/checkbox/checkbox.types.mjs +1 -1
  37. package/esm2022/lib/checkbox/index.mjs +4 -0
  38. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +31 -57
  39. package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +5 -5
  40. package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +1 -1
  41. package/esm2022/lib/checkbox-list/index.mjs +4 -0
  42. package/esm2022/lib/chip/chip.component.mjs +22 -42
  43. package/esm2022/lib/chip/chip.module.mjs +5 -5
  44. package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +28 -53
  45. package/esm2022/lib/chip/index.mjs +5 -0
  46. package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +25 -49
  47. package/esm2022/lib/color/color-display/color-display.component.mjs +15 -32
  48. package/esm2022/lib/color/color-display/color-display.module.mjs +5 -5
  49. package/esm2022/lib/color/color-display/color-display.types.mjs +1 -1
  50. package/esm2022/lib/color/color-display/index.mjs +4 -0
  51. package/esm2022/lib/color/color-picker/color-picker.types.mjs +1 -1
  52. package/esm2022/lib/dialog/dialog.component.mjs +54 -130
  53. package/esm2022/lib/dialog/dialog.directives.mjs +4 -4
  54. package/esm2022/lib/dialog/dialog.module.mjs +5 -5
  55. package/esm2022/lib/dialog/dialog.types.mjs +1 -1
  56. package/esm2022/lib/dialog/index.mjs +5 -0
  57. package/esm2022/lib/divider/divider.component.mjs +9 -14
  58. package/esm2022/lib/divider/divider.module.mjs +5 -5
  59. package/esm2022/lib/divider/index.mjs +3 -0
  60. package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +40 -59
  61. package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +5 -5
  62. package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +1 -1
  63. package/esm2022/lib/dropdown-panel/index.mjs +4 -0
  64. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +12 -17
  65. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +10 -10
  66. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +6 -6
  67. package/esm2022/lib/file-inputs/file-drop-area/index.mjs +4 -0
  68. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +24 -50
  69. package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +19 -19
  70. package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +5 -5
  71. package/esm2022/lib/file-inputs/file-input/index.mjs +4 -0
  72. package/esm2022/lib/file-inputs/file-input-base.mjs +38 -72
  73. package/esm2022/lib/file-inputs/file-input-types.mjs +1 -1
  74. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +20 -47
  75. package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +7 -7
  76. package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +5 -5
  77. package/esm2022/lib/form-field-frame/index.mjs +4 -0
  78. package/esm2022/lib/icon/icon.component.mjs +32 -67
  79. package/esm2022/lib/icon/icon.module.mjs +5 -5
  80. package/esm2022/lib/icon/icon.pipe.mjs +4 -4
  81. package/esm2022/lib/icon/index.mjs +4 -0
  82. package/esm2022/lib/inputs/color-input/color-input.directives.mjs +25 -25
  83. package/esm2022/lib/inputs/color-input/color-input.types.mjs +1 -1
  84. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +65 -115
  85. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +83 -92
  86. package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +5 -5
  87. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +1 -1
  88. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +1 -1
  89. package/esm2022/lib/inputs/digit-input/index.mjs +4 -0
  90. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +59 -122
  91. package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +10 -10
  92. package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +24 -8
  93. package/esm2022/lib/inputs/hex-input/index.mjs +4 -0
  94. package/esm2022/lib/inputs/hex-input.model.mjs +24 -33
  95. package/esm2022/lib/inputs/input/index.mjs +4 -0
  96. package/esm2022/lib/inputs/input/input.component.mjs +95 -154
  97. package/esm2022/lib/inputs/input/input.directives.mjs +16 -16
  98. package/esm2022/lib/inputs/input/input.module.mjs +21 -7
  99. package/esm2022/lib/inputs/input-transformers.mjs +6 -6
  100. package/esm2022/lib/inputs/input-types.mjs +1 -1
  101. package/esm2022/lib/inputs/input-utils.mjs +75 -94
  102. package/esm2022/lib/inputs/number-input/index.mjs +4 -0
  103. package/esm2022/lib/inputs/number-input/number-input.component.mjs +106 -170
  104. package/esm2022/lib/inputs/number-input/number-input.directives.mjs +4 -4
  105. package/esm2022/lib/inputs/number-input/number-input.module.mjs +5 -5
  106. package/esm2022/lib/inputs/password-input/index.mjs +5 -0
  107. package/esm2022/lib/inputs/password-input/password-input.component.mjs +74 -144
  108. package/esm2022/lib/inputs/password-input/password-input.directives.mjs +13 -13
  109. package/esm2022/lib/inputs/password-input/password-input.module.mjs +5 -5
  110. package/esm2022/lib/inputs/password-input/password-input.types.mjs +1 -1
  111. package/esm2022/lib/inputs/simple-input/index.mjs +4 -0
  112. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +57 -110
  113. package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +10 -10
  114. package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +5 -5
  115. package/esm2022/lib/kbd/index.mjs +4 -0
  116. package/esm2022/lib/kbd/kbd.component.mjs +15 -29
  117. package/esm2022/lib/kbd/kbd.module.mjs +5 -5
  118. package/esm2022/lib/kbd/kbd.pipe.mjs +4 -4
  119. package/esm2022/lib/kbd-shortcut/index.mjs +3 -0
  120. package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +23 -40
  121. package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +5 -5
  122. package/esm2022/lib/modal/index.mjs +3 -0
  123. package/esm2022/lib/modal/modal.component.mjs +42 -83
  124. package/esm2022/lib/modal/modal.module.mjs +5 -5
  125. package/esm2022/lib/option/index.mjs +3 -0
  126. package/esm2022/lib/option/option.component.mjs +24 -46
  127. package/esm2022/lib/option/option.module.mjs +5 -5
  128. package/esm2022/lib/progress-bar/index.mjs +5 -0
  129. package/esm2022/lib/progress-bar/progress-bar.component.mjs +43 -81
  130. package/esm2022/lib/progress-bar/progress-bar.directive.mjs +4 -4
  131. package/esm2022/lib/progress-bar/progress-bar.module.mjs +5 -5
  132. package/esm2022/lib/progress-bar/progress-bar.types.mjs +1 -1
  133. package/esm2022/lib/progress-circle/index.mjs +5 -0
  134. package/esm2022/lib/progress-circle/progress-circle.component.mjs +33 -78
  135. package/esm2022/lib/progress-circle/progress-circle.directive.mjs +4 -4
  136. package/esm2022/lib/progress-circle/progress-circle.module.mjs +5 -5
  137. package/esm2022/lib/progress-circle/progress-circle.types.mjs +1 -1
  138. package/esm2022/lib/radio/index.mjs +4 -0
  139. package/esm2022/lib/radio/radio/radio.component.mjs +16 -25
  140. package/esm2022/lib/radio/radio-group.component.mjs +71 -85
  141. package/esm2022/lib/radio/radio.module.mjs +5 -5
  142. package/esm2022/lib/search-functions.mjs +7 -7
  143. package/esm2022/lib/segment/index.mjs +5 -0
  144. package/esm2022/lib/segment/segment.component.mjs +70 -137
  145. package/esm2022/lib/segment/segment.directives.mjs +4 -4
  146. package/esm2022/lib/segment/segment.module.mjs +5 -5
  147. package/esm2022/lib/segment/segment.types.mjs +1 -1
  148. package/esm2022/lib/select/index.mjs +5 -0
  149. package/esm2022/lib/select/select.component.mjs +348 -655
  150. package/esm2022/lib/select/select.directive.mjs +46 -46
  151. package/esm2022/lib/select/select.module.mjs +5 -5
  152. package/esm2022/lib/select/select.types.mjs +1 -1
  153. package/esm2022/lib/slide-toggle/index.mjs +4 -0
  154. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +19 -24
  155. package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +5 -5
  156. package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +5 -0
  157. package/esm2022/lib/slider/abstract-slider.mjs +111 -200
  158. package/esm2022/lib/slider/index.mjs +7 -0
  159. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +26 -23
  160. package/esm2022/lib/slider/range-slider/range-slider.module.mjs +5 -5
  161. package/esm2022/lib/slider/slider.component.mjs +13 -10
  162. package/esm2022/lib/slider/slider.directive.mjs +4 -4
  163. package/esm2022/lib/slider/slider.module.mjs +7 -7
  164. package/esm2022/lib/slider/slider.types.mjs +1 -1
  165. package/esm2022/lib/snackbar/index.mjs +1 -1
  166. package/esm2022/lib/snackbar/snackbar-ref.mjs +1 -1
  167. package/esm2022/lib/snackbar/snackbar.component.mjs +8 -8
  168. package/esm2022/lib/snackbar/snackbar.service.mjs +13 -12
  169. package/esm2022/lib/snackbar/snackbar.token.mjs +1 -1
  170. package/esm2022/lib/snackbar/snackbar.types.mjs +1 -1
  171. package/esm2022/lib/spinner/index.mjs +3 -0
  172. package/esm2022/lib/spinner/spinner.component.mjs +9 -13
  173. package/esm2022/lib/spinner/spinner.module.mjs +5 -5
  174. package/esm2022/lib/star/index.mjs +4 -0
  175. package/esm2022/lib/star/star-button/index.mjs +3 -0
  176. package/esm2022/lib/star/star-button/star-button.component.mjs +17 -26
  177. package/esm2022/lib/star/star-button/star-button.module.mjs +5 -5
  178. package/esm2022/lib/star/star-display/index.mjs +3 -0
  179. package/esm2022/lib/star/star-display/star-display.component.mjs +48 -55
  180. package/esm2022/lib/star/star-display/star-display.module.mjs +5 -5
  181. package/esm2022/lib/star/star-input/index.mjs +3 -0
  182. package/esm2022/lib/star/star-input/star-input.component.mjs +70 -106
  183. package/esm2022/lib/star/star-input/star-input.module.mjs +5 -5
  184. package/esm2022/lib/star/star.component.mjs +12 -20
  185. package/esm2022/lib/star/star.module.mjs +5 -5
  186. package/esm2022/lib/star/star.types.mjs +1 -1
  187. package/esm2022/lib/statebox/index.mjs +3 -0
  188. package/esm2022/lib/statebox/statebox.component.mjs +64 -102
  189. package/esm2022/lib/statebox/statebox.module.mjs +5 -5
  190. package/esm2022/lib/statebox/statebox.types.mjs +1 -1
  191. package/esm2022/lib/tabber/index.mjs +4 -0
  192. package/esm2022/lib/tabber/tab/tab.component.mjs +42 -0
  193. package/esm2022/lib/tabber/tabber.component.mjs +83 -0
  194. package/esm2022/lib/tabber/tabber.module.mjs +19 -0
  195. package/esm2022/lib/table/index.mjs +5 -0
  196. package/esm2022/lib/table/table-item-storage.mjs +204 -200
  197. package/esm2022/lib/table/table.component.mjs +184 -304
  198. package/esm2022/lib/table/table.directives.mjs +19 -21
  199. package/esm2022/lib/table/table.module.mjs +5 -5
  200. package/esm2022/lib/table/table.types.mjs +1 -1
  201. package/esm2022/lib/table/utils.mjs +1 -1
  202. package/esm2022/lib/table-from-csv/index.mjs +3 -0
  203. package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +85 -29
  204. package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +5 -5
  205. package/esm2022/lib/table-pagination/index.mjs +4 -0
  206. package/esm2022/lib/table-pagination/table-pagination.component.mjs +46 -114
  207. package/esm2022/lib/table-pagination/table-pagination.module.mjs +5 -5
  208. package/esm2022/lib/table-pagination/table-pagination.types.mjs +1 -1
  209. package/esm2022/lib/types/alignment.types.mjs +1 -1
  210. package/esm2022/lib/types/colors.types.mjs +1 -1
  211. package/esm2022/lib/types/item-storage.types.mjs +1 -1
  212. package/esm2022/lib/types/theming.types.mjs +1 -1
  213. package/esm2022/lib/types/utility.types.mjs +2 -2
  214. package/esm2022/public-api.mjs +58 -182
  215. package/fesm2022/ardium-ui-ui.mjs +7847 -11692
  216. package/fesm2022/ardium-ui-ui.mjs.map +1 -1
  217. package/lib/_internal/boolean-component.d.ts +8 -9
  218. package/lib/_internal/clear-button/clear-button.component.d.ts +1 -1
  219. package/lib/_internal/disablable-component.d.ts +12 -7
  220. package/lib/_internal/focusable-component.d.ts +5 -7
  221. package/lib/_internal/item-storages/dropdown-item-storage.d.ts +43 -41
  222. package/lib/_internal/item-storages/simple-item-storage.d.ts +28 -25
  223. package/lib/_internal/item-storages/simplest-item-storage.d.ts +14 -9
  224. package/lib/_internal/models/pagination.model.d.ts +38 -42
  225. package/lib/_internal/ngmodel-component.d.ts +1 -1
  226. package/lib/_internal/selectable-list-component.d.ts +30 -30
  227. package/lib/badge/badge.directive.d.ts +15 -20
  228. package/lib/badge/index.d.ts +3 -0
  229. package/lib/buttons/_button-base.d.ts +9 -12
  230. package/lib/buttons/button/button.component.d.ts +6 -8
  231. package/lib/buttons/button/index.d.ts +2 -0
  232. package/lib/buttons/fab/fab.component.d.ts +4 -6
  233. package/lib/buttons/fab/index.d.ts +2 -0
  234. package/lib/buttons/icon-button/icon-button.component.d.ts +6 -7
  235. package/lib/buttons/icon-button/index.d.ts +2 -0
  236. package/lib/card/card.children.d.ts +4 -3
  237. package/lib/card/card.component.d.ts +5 -4
  238. package/lib/card/index.d.ts +4 -0
  239. package/lib/checkbox/checkbox.component.d.ts +8 -12
  240. package/lib/checkbox/index.d.ts +3 -0
  241. package/lib/checkbox-list/checkbox-list.component.d.ts +22 -21
  242. package/lib/checkbox-list/index.d.ts +3 -0
  243. package/lib/chip/chip.component.d.ts +8 -10
  244. package/lib/chip/deletable-chip/deletable-chip.component.d.ts +11 -14
  245. package/lib/chip/index.d.ts +4 -0
  246. package/lib/chip/selectable-chip/selectable-chip.component.d.ts +10 -12
  247. package/lib/color/color-display/color-display.component.d.ts +6 -9
  248. package/lib/color/color-display/index.d.ts +3 -0
  249. package/lib/color/color-picker/color-picker.types.d.ts +4 -4
  250. package/lib/dialog/dialog.component.d.ts +25 -35
  251. package/lib/dialog/dialog.types.d.ts +2 -2
  252. package/lib/dialog/index.d.ts +4 -0
  253. package/lib/divider/divider.component.d.ts +3 -4
  254. package/lib/divider/index.d.ts +2 -0
  255. package/lib/dropdown-panel/dropdown-panel.component.d.ts +17 -20
  256. package/lib/dropdown-panel/index.d.ts +3 -0
  257. package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +5 -4
  258. package/lib/file-inputs/file-drop-area/index.d.ts +3 -0
  259. package/lib/file-inputs/file-input/file-input.component.d.ts +13 -17
  260. package/lib/file-inputs/file-input/index.d.ts +3 -0
  261. package/lib/file-inputs/file-input-base.d.ts +13 -18
  262. package/lib/form-field-frame/form-field-frame.component.d.ts +12 -16
  263. package/lib/form-field-frame/index.d.ts +3 -0
  264. package/lib/icon/icon.component.d.ts +10 -19
  265. package/lib/icon/index.d.ts +3 -0
  266. package/lib/inputs/color-input/color-input.types.d.ts +2 -2
  267. package/lib/inputs/digit-input/digit-input.component.d.ts +22 -30
  268. package/lib/inputs/digit-input/digit-input.model.d.ts +8 -12
  269. package/lib/inputs/digit-input/digit-input.types.d.ts +4 -4
  270. package/lib/inputs/digit-input/digit-input.utils.d.ts +4 -5
  271. package/lib/inputs/digit-input/index.d.ts +3 -0
  272. package/lib/inputs/hex-input/hex-input.component.d.ts +32 -38
  273. package/lib/inputs/hex-input/index.d.ts +3 -0
  274. package/lib/inputs/hex-input.model.d.ts +10 -11
  275. package/lib/inputs/input/index.d.ts +3 -0
  276. package/lib/inputs/input/input.component.d.ts +34 -40
  277. package/lib/inputs/input/input.directives.d.ts +3 -3
  278. package/lib/inputs/input-utils.d.ts +24 -27
  279. package/lib/inputs/number-input/index.d.ts +3 -0
  280. package/lib/inputs/number-input/number-input.component.d.ts +38 -48
  281. package/lib/inputs/password-input/index.d.ts +4 -0
  282. package/lib/inputs/password-input/password-input.component.d.ts +28 -40
  283. package/lib/inputs/password-input/password-input.types.d.ts +2 -2
  284. package/lib/inputs/simple-input/index.d.ts +3 -0
  285. package/lib/inputs/simple-input/simple-input.component.d.ts +30 -35
  286. package/lib/kbd/index.d.ts +3 -0
  287. package/lib/kbd/kbd.component.d.ts +6 -8
  288. package/lib/kbd-shortcut/index.d.ts +2 -0
  289. package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +7 -10
  290. package/lib/modal/index.d.ts +2 -0
  291. package/lib/modal/modal.component.d.ts +22 -30
  292. package/lib/option/index.d.ts +2 -0
  293. package/lib/option/option.component.d.ts +11 -16
  294. package/lib/progress-bar/index.d.ts +4 -0
  295. package/lib/progress-bar/progress-bar.component.d.ts +14 -20
  296. package/lib/progress-bar/progress-bar.types.d.ts +2 -2
  297. package/lib/progress-circle/index.d.ts +4 -0
  298. package/lib/progress-circle/progress-circle.component.d.ts +12 -20
  299. package/lib/progress-circle/progress-circle.types.d.ts +2 -2
  300. package/lib/radio/index.d.ts +3 -0
  301. package/lib/radio/radio/radio.component.d.ts +7 -8
  302. package/lib/radio/radio-group.component.d.ts +13 -16
  303. package/lib/segment/index.d.ts +4 -0
  304. package/lib/segment/segment.component.d.ts +22 -34
  305. package/lib/segment/segment.directives.d.ts +2 -3
  306. package/lib/select/index.d.ts +4 -0
  307. package/lib/select/select.component.d.ts +114 -160
  308. package/lib/select/select.directive.d.ts +3 -3
  309. package/lib/select/select.types.d.ts +2 -76
  310. package/lib/slide-toggle/index.d.ts +3 -0
  311. package/lib/slide-toggle/slide-toggle.component.d.ts +9 -7
  312. package/lib/slide-toggle/slide-toggle.types.d.ts +5 -0
  313. package/lib/slider/abstract-slider.d.ts +38 -55
  314. package/lib/slider/index.d.ts +6 -0
  315. package/lib/slider/range-slider/range-slider.component.d.ts +3 -1
  316. package/lib/slider/slider.component.d.ts +2 -0
  317. package/lib/slider/slider.types.d.ts +8 -8
  318. package/lib/snackbar/snackbar-ref.d.ts +1 -2
  319. package/lib/snackbar/snackbar.component.d.ts +3 -3
  320. package/lib/snackbar/snackbar.service.d.ts +2 -2
  321. package/lib/snackbar/snackbar.types.d.ts +4 -4
  322. package/lib/spinner/index.d.ts +2 -0
  323. package/lib/spinner/spinner.component.d.ts +3 -3
  324. package/lib/star/index.d.ts +3 -0
  325. package/lib/star/star-button/index.d.ts +2 -0
  326. package/lib/star/star-button/star-button.component.d.ts +7 -7
  327. package/lib/star/star-display/index.d.ts +2 -0
  328. package/lib/star/star-display/star-display.component.d.ts +8 -12
  329. package/lib/star/star-input/index.d.ts +2 -0
  330. package/lib/star/star-input/star-input.component.d.ts +17 -22
  331. package/lib/star/star.component.d.ts +5 -5
  332. package/lib/statebox/index.d.ts +3 -0
  333. package/lib/statebox/statebox.component.d.ts +15 -21
  334. package/lib/statebox/statebox.types.d.ts +12 -8
  335. package/lib/tabber/index.d.ts +3 -0
  336. package/lib/tabber/tab/tab.component.d.ts +18 -0
  337. package/lib/tabber/tabber.component.d.ts +25 -0
  338. package/lib/tabber/tabber.module.d.ts +9 -0
  339. package/lib/table/index.d.ts +4 -0
  340. package/lib/table/table-item-storage.d.ts +70 -58
  341. package/lib/table/table.component.d.ts +59 -78
  342. package/lib/table/table.directives.d.ts +4 -3
  343. package/lib/table-from-csv/index.d.ts +2 -0
  344. package/lib/table-from-csv/table-from-csv.component.d.ts +46 -9
  345. package/lib/table-pagination/index.d.ts +3 -0
  346. package/lib/table-pagination/table-pagination.component.d.ts +21 -30
  347. package/lib/types/item-storage.types.d.ts +19 -18
  348. package/lib/types/utility.types.d.ts +2 -1
  349. package/package.json +8 -9
  350. package/prebuilt-themes/default/badge.css +5 -5
  351. package/prebuilt-themes/default/buttons/fab.css +4 -3
  352. package/prebuilt-themes/default/buttons/fab.css.map +1 -1
  353. package/prebuilt-themes/default/card.css +7 -7
  354. package/prebuilt-themes/default/chips.css +3 -8
  355. package/prebuilt-themes/default/chips.css.map +1 -1
  356. package/prebuilt-themes/default/core.css +6 -3
  357. package/prebuilt-themes/default/core.css.map +1 -1
  358. package/prebuilt-themes/default/inputs/color-input.css +1 -1
  359. package/prebuilt-themes/default/inputs/digit-input.css +1 -1
  360. package/prebuilt-themes/default/inputs/file-input.css +139 -2
  361. package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
  362. package/prebuilt-themes/default/inputs/hex-input.css +2 -2
  363. package/prebuilt-themes/default/inputs/input.css +1 -1
  364. package/prebuilt-themes/default/inputs/search-bar.css +1 -1
  365. package/prebuilt-themes/default/inputs/simple-input.css +1 -1
  366. package/prebuilt-themes/default/modal.css +1 -1
  367. package/prebuilt-themes/default/segment.css +2 -2
  368. package/prebuilt-themes/default/segment.css.map +1 -1
  369. package/prebuilt-themes/default/select.css +5 -3
  370. package/prebuilt-themes/default/select.css.map +1 -1
  371. package/prebuilt-themes/default/snackbar.css +0 -1
  372. package/prebuilt-themes/default/snackbar.css.map +1 -1
  373. package/prebuilt-themes/default/tabber.css +207 -0
  374. package/prebuilt-themes/default/tabber.css.map +1 -0
  375. package/public-api.d.ts +43 -136
  376. package/themes/_variables.scss +121 -121
  377. package/themes/default/_clear-button.scss +73 -73
  378. package/themes/default/_coloring.scss +137 -137
  379. package/themes/default/_dropdown-arrow.scss +12 -12
  380. package/themes/default/_mixins.scss +70 -70
  381. package/themes/default/badge.scss +94 -94
  382. package/themes/default/buttons/_button-mixins.scss +144 -144
  383. package/themes/default/buttons/button.scss +62 -62
  384. package/themes/default/buttons/fab.scss +74 -72
  385. package/themes/default/buttons/icon-button.scss +59 -59
  386. package/themes/default/calendar.scss +182 -182
  387. package/themes/default/card.scss +126 -126
  388. package/themes/default/checkbox-list.scss +83 -83
  389. package/themes/default/checkbox.scss +109 -109
  390. package/themes/default/chips.scss +200 -206
  391. package/themes/default/color-display.scss +41 -41
  392. package/themes/default/color-picker.scss +111 -111
  393. package/themes/default/core.scss +99 -96
  394. package/themes/default/dialog.scss +16 -16
  395. package/themes/default/divider.scss +13 -13
  396. package/themes/default/dropdown-panel.scss +45 -45
  397. package/themes/default/file-drop-area.scss +162 -162
  398. package/themes/default/form-field-frame.scss +78 -78
  399. package/themes/default/inputs/_shared.scss +46 -46
  400. package/themes/default/inputs/color-input.scss +46 -46
  401. package/themes/default/inputs/digit-input.scss +56 -56
  402. package/themes/default/inputs/file-input.scss +85 -78
  403. package/themes/default/inputs/hex-input.scss +27 -27
  404. package/themes/default/inputs/input.scss +52 -52
  405. package/themes/default/inputs/number-input.scss +121 -121
  406. package/themes/default/inputs/password-input.scss +43 -43
  407. package/themes/default/inputs/search-bar.scss +19 -19
  408. package/themes/default/inputs/simple-input.scss +19 -19
  409. package/themes/default/kbd-shortcut.scss +13 -13
  410. package/themes/default/kbd.scss +20 -20
  411. package/themes/default/modal.scss +93 -93
  412. package/themes/default/progress-bar.scss +166 -166
  413. package/themes/default/progress-circle.scss +56 -56
  414. package/themes/default/radio.scss +112 -112
  415. package/themes/default/segment.scss +340 -339
  416. package/themes/default/select.scss +255 -253
  417. package/themes/default/slide-toggle.scss +151 -151
  418. package/themes/default/slider.scss +224 -224
  419. package/themes/default/snackbar.scss +58 -60
  420. package/themes/default/spinner.scss +21 -21
  421. package/themes/default/stars.scss +122 -122
  422. package/themes/default/statebox.scss +109 -109
  423. package/themes/default/tabber.scss +86 -0
  424. package/themes/default/table-pagination.scss +56 -56
  425. package/themes/default/table.scss +403 -403
  426. package/esm2022/lib/calendar/calendar.component.mjs +0 -979
  427. package/esm2022/lib/calendar/calendar.directives.mjs +0 -107
  428. package/esm2022/lib/calendar/calendar.helpers.mjs +0 -47
  429. package/esm2022/lib/calendar/calendar.module.mjs +0 -21
  430. package/esm2022/lib/calendar/calendar.types.mjs +0 -11
  431. package/esm2022/lib/color/color-picker/color-picker.component.mjs +0 -484
  432. package/esm2022/lib/color/color-picker/color-picker.directives.mjs +0 -55
  433. package/esm2022/lib/color/color-picker/color-picker.module.mjs +0 -43
  434. package/esm2022/lib/inputs/color-input/color-input.component.mjs +0 -421
  435. package/esm2022/lib/inputs/color-input/color-input.module.mjs +0 -85
  436. package/lib/calendar/calendar.component.d.ts +0 -155
  437. package/lib/calendar/calendar.directives.d.ts +0 -51
  438. package/lib/calendar/calendar.helpers.d.ts +0 -15
  439. package/lib/calendar/calendar.module.d.ts +0 -11
  440. package/lib/calendar/calendar.types.d.ts +0 -80
  441. package/lib/color/color-picker/color-picker.component.d.ts +0 -125
  442. package/lib/color/color-picker/color-picker.directives.d.ts +0 -27
  443. package/lib/color/color-picker/color-picker.module.d.ts +0 -13
  444. package/lib/inputs/color-input/color-input.component.d.ts +0 -147
  445. package/lib/inputs/color-input/color-input.module.d.ts +0 -16
@@ -1,66 +1,59 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';
2
+ import { coerceNumberProperty } from '@ardium-ui/devkit';
2
3
  import { isArray } from 'simple-bool';
3
- import { StarColor } from './../star.types';
4
+ import { StarColor, StarFillMode } from './../star.types';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/common";
6
7
  import * as i2 from "../star.component";
7
8
  export class ArdiumStarDisplayComponent {
8
9
  constructor() {
9
- this.wrapperClasses = '';
10
- //* appearance
11
- this.color = StarColor.Star;
12
- //* stars
13
- this.starArray = this.setStarArrayFromNumber(0);
14
- this.max = 5;
15
- this.value = 0;
16
- }
17
- get ngClasses() {
18
- return [`ard-color-${this.color}`].join(' ');
19
- }
20
- setStarArrayFromArray(starArr) {
21
- this.starArray = [...starArr];
22
- while (this.starArray.length < this.max) {
23
- this.starArray.push('none');
24
- }
25
- }
26
- setStarArrayFromNumber(stars) {
27
- this.starArray = [];
28
- while (this.starArray.length < this.max) {
29
- if (stars >= 1) {
30
- this.starArray.push('filled');
10
+ this.wrapperClasses = input('');
11
+ //! appearance
12
+ this.color = input(StarColor.Star);
13
+ this.ngClasses = computed(() => [this.wrapperClasses(), `ard-color-${this.color}`].join(' '));
14
+ //! stars
15
+ this.max = input(5, { transform: v => coerceNumberProperty(v, 0) });
16
+ this.value = input(0, {
17
+ transform: v => {
18
+ if (isArray(v)) {
19
+ return v;
20
+ }
21
+ return coerceNumberProperty(v, 0);
22
+ },
23
+ });
24
+ this.starArray = computed(() => {
25
+ let v = this.value();
26
+ let newArr;
27
+ // pad the array with non-filled stars and return it
28
+ if (isArray(v)) {
29
+ newArr = [...v];
30
+ while (newArr.length < this.max()) {
31
+ newArr.push(StarFillMode.None);
32
+ }
33
+ return newArr;
31
34
  }
32
- else if (Math.round(stars) == 1) {
33
- this.starArray.push('half');
34
- }
35
- else {
36
- this.starArray.push('none');
37
- }
38
- stars--;
39
- }
40
- return this.starArray;
41
- }
42
- ngOnChanges(changes) {
43
- if (changes['max'] || changes['value']) {
44
- if (isArray(this.value)) {
45
- this.setStarArrayFromArray(this.value);
35
+ // create an array from a numeric value
36
+ newArr = [];
37
+ while (newArr.length < this.max()) {
38
+ v--;
39
+ if (v + 1 >= 1) {
40
+ newArr.push(StarFillMode.Filled);
41
+ continue;
42
+ }
43
+ if (Math.round(v + 1) === 1) {
44
+ newArr.push(StarFillMode.Half);
45
+ continue;
46
+ }
47
+ newArr.push(StarFillMode.None);
46
48
  }
47
- else
48
- this.setStarArrayFromNumber(this.value);
49
- }
49
+ return newArr;
50
+ });
50
51
  }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ArdiumStarDisplayComponent, selector: "ard-star-display", inputs: { wrapperClasses: "wrapperClasses", color: "color", max: "max", value: "value" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ard-star-display\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n>\r\n <ard-star\r\n *ngFor=\"let fillMode of starArray\"\r\n [fill]=\"fillMode\"\r\n [color]=\"color\"\r\n ></ard-star>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.ArdiumStarComponent, selector: "ard-star", inputs: ["wrapperClasses", "fill", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ArdiumStarDisplayComponent, selector: "ard-star-display", inputs: { wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"ard-star-display\"\n [ngClass]=\"ngClasses()\"\n>\n @for (fillMode of starArray(); track $index) {\n <ard-star\n [fill]=\"fillMode\"\n [color]=\"color()\"\n />\n }\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ArdiumStarComponent, selector: "ard-star", inputs: ["wrapperClasses", "color", "fill"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
53
54
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarDisplayComponent, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarDisplayComponent, decorators: [{
55
56
  type: Component,
56
- args: [{ selector: 'ard-star-display', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ard-star-display\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n>\r\n <ard-star\r\n *ngFor=\"let fillMode of starArray\"\r\n [fill]=\"fillMode\"\r\n [color]=\"color\"\r\n ></ard-star>\r\n</div>" }]
57
- }], propDecorators: { wrapperClasses: [{
58
- type: Input
59
- }], color: [{
60
- type: Input
61
- }], max: [{
62
- type: Input
63
- }], value: [{
64
- type: Input
65
- }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc3Rhci9zdGFyLWRpc3BsYXkvc3Rhci1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc3Rhci9zdGFyLWRpc3BsYXkvc3Rhci1kaXNwbGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFTMUQsTUFBTSxPQUFPLDBCQUEwQjtJQVB2QztRQVFXLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBRXJDLGNBQWM7UUFDTCxVQUFLLEdBQWMsU0FBUyxDQUFDLElBQUksQ0FBQztRQU0zQyxTQUFTO1FBQ1QsY0FBUyxHQUFtQixJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsUUFBRyxHQUFXLENBQUMsQ0FBQztRQUNoQixVQUFLLEdBQTRCLENBQUMsQ0FBQztLQTZCN0M7SUFwQ0MsSUFBSSxTQUFTO1FBQ1gsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFPRCxxQkFBcUIsQ0FBQyxPQUF1QjtRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsS0FBYTtRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDdkMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO2dCQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQy9CO2lCQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzdCO1lBQ0QsS0FBSyxFQUFFLENBQUM7U0FDVDtRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN0QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEM7O2dCQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDOzhHQXpDVSwwQkFBMEI7a0dBQTFCLDBCQUEwQix1S0NYdkMsa1FBU007OzJGREVPLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsY0FBYztzQkFBdEIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBUUcsR0FBRztzQkFBWCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdzaW1wbGUtYm9vbCc7XHJcbmltcG9ydCB7IFN0YXJDb2xvciwgU3RhckZpbGxNb2RlIH0gZnJvbSAnLi8uLi9zdGFyLnR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXJkLXN0YXItZGlzcGxheScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXItZGlzcGxheS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3Rhci1kaXNwbGF5LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bVN0YXJEaXNwbGF5Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSB3cmFwcGVyQ2xhc3Nlczogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8vKiBhcHBlYXJhbmNlXHJcbiAgQElucHV0KCkgY29sb3I6IFN0YXJDb2xvciA9IFN0YXJDb2xvci5TdGFyO1xyXG5cclxuICBnZXQgbmdDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gW2BhcmQtY29sb3ItJHt0aGlzLmNvbG9yfWBdLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIC8vKiBzdGFyc1xyXG4gIHN0YXJBcnJheTogU3RhckZpbGxNb2RlW10gPSB0aGlzLnNldFN0YXJBcnJheUZyb21OdW1iZXIoMCk7XHJcbiAgQElucHV0KCkgbWF4OiBudW1iZXIgPSA1O1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXIgfCBTdGFyRmlsbE1vZGVbXSA9IDA7XHJcblxyXG4gIHNldFN0YXJBcnJheUZyb21BcnJheShzdGFyQXJyOiBTdGFyRmlsbE1vZGVbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdGFyQXJyYXkgPSBbLi4uc3RhckFycl07XHJcbiAgICB3aGlsZSAodGhpcy5zdGFyQXJyYXkubGVuZ3RoIDwgdGhpcy5tYXgpIHtcclxuICAgICAgdGhpcy5zdGFyQXJyYXkucHVzaCgnbm9uZScpO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRTdGFyQXJyYXlGcm9tTnVtYmVyKHN0YXJzOiBudW1iZXIpOiBTdGFyRmlsbE1vZGVbXSB7XHJcbiAgICB0aGlzLnN0YXJBcnJheSA9IFtdO1xyXG4gICAgd2hpbGUgKHRoaXMuc3RhckFycmF5Lmxlbmd0aCA8IHRoaXMubWF4KSB7XHJcbiAgICAgIGlmIChzdGFycyA+PSAxKSB7XHJcbiAgICAgICAgdGhpcy5zdGFyQXJyYXkucHVzaCgnZmlsbGVkJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoTWF0aC5yb3VuZChzdGFycykgPT0gMSkge1xyXG4gICAgICAgIHRoaXMuc3RhckFycmF5LnB1c2goJ2hhbGYnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN0YXJBcnJheS5wdXNoKCdub25lJyk7XHJcbiAgICAgIH1cclxuICAgICAgc3RhcnMtLTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnN0YXJBcnJheTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ21heCddIHx8IGNoYW5nZXNbJ3ZhbHVlJ10pIHtcclxuICAgICAgaWYgKGlzQXJyYXkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXJBcnJheUZyb21BcnJheSh0aGlzLnZhbHVlKTtcclxuICAgICAgfSBlbHNlIHRoaXMuc2V0U3RhckFycmF5RnJvbU51bWJlcih0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFyZC1zdGFyLWRpc3BsYXlcIlxyXG4gICAgW25nQ2xhc3NdPVwibmdDbGFzc2VzXCJcclxuICAgIFtjbGFzc109XCJ3cmFwcGVyQ2xhc3Nlc1wiXHJcbj5cclxuICAgIDxhcmQtc3RhclxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBmaWxsTW9kZSBvZiBzdGFyQXJyYXlcIlxyXG4gICAgICAgIFtmaWxsXT1cImZpbGxNb2RlXCJcclxuICAgICAgICBbY29sb3JdPVwiY29sb3JcIlxyXG4gICAgPjwvYXJkLXN0YXI+XHJcbjwvZGl2PiJdfQ==
57
+ args: [{ selector: 'ard-star-display', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ard-star-display\"\n [ngClass]=\"ngClasses()\"\n>\n @for (fillMode of starArray(); track $index) {\n <ard-star\n [fill]=\"fillMode\"\n [color]=\"color()\"\n />\n }\n</div>\n" }]
58
+ }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc3Rhci9zdGFyLWRpc3BsYXkvc3Rhci1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc3Rhci9zdGFyLWRpc3BsYXkvc3Rhci1kaXNwbGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFTMUQsTUFBTSxPQUFPLDBCQUEwQjtJQVB2QztRQVFXLG1CQUFjLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLGNBQWM7UUFDTCxVQUFLLEdBQUcsS0FBSyxDQUFZLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxjQUFTLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFMUcsU0FBUztRQUNBLFFBQUcsR0FBRyxLQUFLLENBQWMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU1RSxVQUFLLEdBQUcsS0FBSyxDQUE0RCxDQUFDLEVBQUU7WUFDbkYsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUNiLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2YsT0FBTyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQztnQkFDRCxPQUFPLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRU0sY0FBUyxHQUFHLFFBQVEsQ0FBaUIsR0FBRyxFQUFFO1lBQ2pELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQXNCLENBQUM7WUFFM0Isb0RBQW9EO1lBQ3BELElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDaEIsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO29CQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakMsQ0FBQztnQkFDRCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBRUQsdUNBQXVDO1lBQ3ZDLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDWixPQUFPLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2xDLENBQUMsRUFBRSxDQUFDO2dCQUNKLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDZixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDakMsU0FBUztnQkFDWCxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzVCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMvQixTQUFTO2dCQUNYLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0tBQ0o7OEdBakRZLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHlqQkNadkMsa05BV0E7OzJGRENhLDBCQUEwQjtrQkFQdEMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBjb21wdXRlZCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IFN0YXJDb2xvciwgU3RhckZpbGxNb2RlIH0gZnJvbSAnLi8uLi9zdGFyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXJkLXN0YXItZGlzcGxheScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGFyLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGFyLWRpc3BsYXkuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFyZGl1bVN0YXJEaXNwbGF5Q29tcG9uZW50IHtcbiAgcmVhZG9ubHkgd3JhcHBlckNsYXNzZXMgPSBpbnB1dDxzdHJpbmc+KCcnKTtcblxuICAvLyEgYXBwZWFyYW5jZVxuICByZWFkb25seSBjb2xvciA9IGlucHV0PFN0YXJDb2xvcj4oU3RhckNvbG9yLlN0YXIpO1xuXG4gIHJlYWRvbmx5IG5nQ2xhc3NlcyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4gW3RoaXMud3JhcHBlckNsYXNzZXMoKSwgYGFyZC1jb2xvci0ke3RoaXMuY29sb3J9YF0uam9pbignICcpKTtcblxuICAvLyEgc3RhcnNcbiAgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8bnVtYmVyLCBhbnk+KDUsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIDApIH0pO1xuXG4gIHJlYWRvbmx5IHZhbHVlID0gaW5wdXQ8bnVtYmVyIHwgU3RhckZpbGxNb2RlW10sIHN0cmluZyB8IG51bWJlciB8IFN0YXJGaWxsTW9kZVtdPigwLCB7XG4gICAgdHJhbnNmb3JtOiB2ID0+IHtcbiAgICAgIGlmIChpc0FycmF5KHYpKSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvZXJjZU51bWJlclByb3BlcnR5KHYsIDApO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJlYWRvbmx5IHN0YXJBcnJheSA9IGNvbXB1dGVkPFN0YXJGaWxsTW9kZVtdPigoKSA9PiB7XG4gICAgbGV0IHYgPSB0aGlzLnZhbHVlKCk7XG4gICAgbGV0IG5ld0FycjogU3RhckZpbGxNb2RlW107XG5cbiAgICAvLyBwYWQgdGhlIGFycmF5IHdpdGggbm9uLWZpbGxlZCBzdGFycyBhbmQgcmV0dXJuIGl0XG4gICAgaWYgKGlzQXJyYXkodikpIHtcbiAgICAgIG5ld0FyciA9IFsuLi52XTtcbiAgICAgIHdoaWxlIChuZXdBcnIubGVuZ3RoIDwgdGhpcy5tYXgoKSkge1xuICAgICAgICBuZXdBcnIucHVzaChTdGFyRmlsbE1vZGUuTm9uZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3QXJyO1xuICAgIH1cblxuICAgIC8vIGNyZWF0ZSBhbiBhcnJheSBmcm9tIGEgbnVtZXJpYyB2YWx1ZVxuICAgIG5ld0FyciA9IFtdO1xuICAgIHdoaWxlIChuZXdBcnIubGVuZ3RoIDwgdGhpcy5tYXgoKSkge1xuICAgICAgdi0tO1xuICAgICAgaWYgKHYgKyAxID49IDEpIHtcbiAgICAgICAgbmV3QXJyLnB1c2goU3RhckZpbGxNb2RlLkZpbGxlZCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKE1hdGgucm91bmQodiArIDEpID09PSAxKSB7XG4gICAgICAgIG5ld0Fyci5wdXNoKFN0YXJGaWxsTW9kZS5IYWxmKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBuZXdBcnIucHVzaChTdGFyRmlsbE1vZGUuTm9uZSk7XG4gICAgfVxuICAgIHJldHVybiBuZXdBcnI7XG4gIH0pO1xufVxuIiwiPGRpdlxuICBjbGFzcz1cImFyZC1zdGFyLWRpc3BsYXlcIlxuICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXG4+XG4gIEBmb3IgKGZpbGxNb2RlIG9mIHN0YXJBcnJheSgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICA8YXJkLXN0YXJcbiAgICAgIFtmaWxsXT1cImZpbGxNb2RlXCJcbiAgICAgIFtjb2xvcl09XCJjb2xvcigpXCJcbiAgICAvPlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -4,11 +4,11 @@ import { ArdiumStarDisplayComponent } from './star-display.component';
4
4
  import { ArdiumStarModule } from '../star.module';
5
5
  import * as i0 from "@angular/core";
6
6
  export class ArdiumStarDisplayModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarDisplayModule, declarations: [ArdiumStarDisplayComponent], imports: [CommonModule, ArdiumStarModule], exports: [ArdiumStarDisplayComponent] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarDisplayModule, imports: [CommonModule, ArdiumStarModule] }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarDisplayModule, declarations: [ArdiumStarDisplayComponent], imports: [CommonModule, ArdiumStarModule], exports: [ArdiumStarDisplayComponent] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarDisplayModule, imports: [CommonModule, ArdiumStarModule] }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarDisplayModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarDisplayModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  declarations: [ArdiumStarDisplayComponent],
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
16
16
  exports: [ArdiumStarDisplayComponent],
17
17
  }]
18
18
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1kaXNwbGF5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc3Rhci9zdGFyLWRpc3BsYXkvc3Rhci1kaXNwbGF5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFPbEQsTUFBTSxPQUFPLHVCQUF1Qjs4R0FBdkIsdUJBQXVCOytHQUF2Qix1QkFBdUIsaUJBSm5CLDBCQUEwQixhQUMvQixZQUFZLEVBQUUsZ0JBQWdCLGFBQzlCLDBCQUEwQjsrR0FFekIsdUJBQXVCLFlBSHhCLFlBQVksRUFBRSxnQkFBZ0I7OzJGQUc3Qix1QkFBdUI7a0JBTG5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQztvQkFDekMsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQXJkaXVtU3RhckRpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL3N0YXItZGlzcGxheS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBcmRpdW1TdGFyTW9kdWxlIH0gZnJvbSAnLi4vc3Rhci5tb2R1bGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtBcmRpdW1TdGFyRGlzcGxheUNvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQXJkaXVtU3Rhck1vZHVsZV0sXHJcbiAgZXhwb3J0czogW0FyZGl1bVN0YXJEaXNwbGF5Q29tcG9uZW50XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bVN0YXJEaXNwbGF5TW9kdWxlIHt9XHJcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1kaXNwbGF5Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc3Rhci9zdGFyLWRpc3BsYXkvc3Rhci1kaXNwbGF5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFPbEQsTUFBTSxPQUFPLHVCQUF1Qjs4R0FBdkIsdUJBQXVCOytHQUF2Qix1QkFBdUIsaUJBSm5CLDBCQUEwQixhQUMvQixZQUFZLEVBQUUsZ0JBQWdCLGFBQzlCLDBCQUEwQjsrR0FFekIsdUJBQXVCLFlBSHhCLFlBQVksRUFBRSxnQkFBZ0I7OzJGQUc3Qix1QkFBdUI7a0JBTG5DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQztvQkFDekMsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBcmRpdW1TdGFyRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4vc3Rhci1kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcmRpdW1TdGFyTW9kdWxlIH0gZnJvbSAnLi4vc3Rhci5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBcmRpdW1TdGFyRGlzcGxheUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFyZGl1bVN0YXJNb2R1bGVdLFxuICBleHBvcnRzOiBbQXJkaXVtU3RhckRpc3BsYXlDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1TdGFyRGlzcGxheU1vZHVsZSB7fVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './star-input.module';
2
+ export * from './star-input.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N0YXIvc3Rhci1pbnB1dC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N0YXItaW5wdXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3Rhci1pbnB1dC5jb21wb25lbnQnO1xuIl19
@@ -1,5 +1,6 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, HostListener, ViewEncapsulation, ViewChildren, forwardRef, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, HostListener, ViewEncapsulation, computed, effect, forwardRef, input, model, output, signal, viewChildren, } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { coerceNumberProperty } from '@ardium-ui/devkit';
3
4
  import { _NgModelComponentBase } from './../../_internal/ngmodel-component';
4
5
  import { StarColor } from './../star.types';
5
6
  import * as i0 from "@angular/core";
@@ -7,113 +8,95 @@ import * as i1 from "@angular/common";
7
8
  import * as i2 from "../star-button/star-button.component";
8
9
  export class ArdiumStarInputComponent extends _NgModelComponentBase {
9
10
  constructor() {
10
- super(...arguments);
11
- this.wrapperClasses = '';
12
- //* appearance
13
- this.color = StarColor.Star;
14
- //* events
15
- this.changeEvent = new EventEmitter();
16
- this.highlightEvent = new EventEmitter();
17
- this.value = 0;
18
- this.valueChange = new EventEmitter();
19
- //* stars
20
- this.max = 5;
21
- this.starArray = this.createFirstStarArray();
22
- this._currentHoverIndex = null;
11
+ super();
12
+ this.wrapperClasses = input('');
13
+ //! appearance
14
+ this.color = input(StarColor.Star);
15
+ this.ngClasses = computed(() => [this.wrapperClasses(), `ard-color-${this.color()}`].join(' '));
16
+ //! events
17
+ this.changeEvent = output({ alias: 'change' });
18
+ this.highlightEvent = output({ alias: 'highlight' });
19
+ this.value = model(0);
20
+ //! stars
21
+ this.max = input(0, { transform: v => coerceNumberProperty(v, 0) });
22
+ this.starButtonInstances = viewChildren('starButton');
23
+ this._highlightedStarIndex = signal(null);
24
+ this.starArray = computed(() => {
25
+ const v = this.value();
26
+ const max = this.max();
27
+ const hi = Math.round(this._highlightedStarIndex() ?? -1);
28
+ const arr = new Array(max);
29
+ for (let i = 0; i < max; i++) {
30
+ if (i <= hi) {
31
+ arr[i] = { filled: true, isInValue: true };
32
+ continue;
33
+ }
34
+ if (i < v) {
35
+ arr[i] = { filled: hi === -1, isInValue: true };
36
+ continue;
37
+ }
38
+ arr[i] = { filled: false, isInValue: false };
39
+ }
40
+ return arr;
41
+ });
23
42
  //* focus handlers
24
43
  this._isFocusEventSuppressed = false;
25
44
  this._isBlurEventSuppressed = false;
26
- this._wasComponentBlurred = true;
27
45
  this._currentFocusIndex = null;
28
- }
29
- get ngClasses() {
30
- return [`ard-color-${this.color}`].join(' ');
31
- }
32
- setStarArrayFromNumber(targetIndex) {
33
- targetIndex = Math.round(targetIndex);
34
- this.starArray.forEach((v, i) => {
35
- if (i < targetIndex) {
36
- v.filled = true;
37
- v.isInValue = true;
38
- }
39
- else if (i < this.value) {
40
- v.filled = false;
41
- v.isInValue = true;
42
- }
43
- else {
44
- v.filled = false;
45
- v.isInValue = false;
46
+ effect(() => {
47
+ const hi = this._highlightedStarIndex();
48
+ if (hi !== null) {
49
+ this.highlightEvent.emit(hi);
46
50
  }
47
51
  });
52
+ effect(() => {
53
+ this.value(); // let the effect know when to fire
54
+ this._emitChange();
55
+ });
48
56
  }
49
- createFirstStarArray() {
50
- let arr = new Array(this.max);
51
- for (let i = 0; i < this.max; i++) {
52
- arr[i] = { filled: false, isInValue: false };
53
- }
54
- return arr;
55
- }
56
- ngOnChanges(changes) {
57
- if (changes['max']) {
58
- this.starArray = this.createFirstStarArray();
59
- }
60
- if (changes['value']) {
61
- this.setStarArrayFromNumber(this.value);
62
- }
63
- }
64
- //* implement ControlValueAccessor's writeValue
57
+ //! ControlValueAccessor's writeValue
65
58
  writeValue(v) {
66
- this.setStarArrayFromNumber(v);
59
+ this.value.set(v);
67
60
  }
68
61
  onStarClick(index) {
69
- this.value = index + 1;
70
- this.setStarArrayFromNumber(this.value);
71
- this._emitChange();
62
+ this.value.set(index + 1);
72
63
  }
73
64
  onStarHighlight(index) {
74
- if (this._currentHoverIndex == index)
75
- return;
76
- this._currentHoverIndex = index;
77
- this.setStarArrayFromNumber(index + 1);
78
- this.highlightEvent.emit(index + 1);
65
+ this._highlightedStarIndex.set(index);
79
66
  }
80
67
  setDisplayToValue() {
81
- this._currentHoverIndex = null;
82
- this.setStarArrayFromNumber(this.value);
68
+ this._highlightedStarIndex.set(null);
83
69
  }
84
70
  _emitChange() {
85
- this._onChangeRegistered?.(this.value);
86
- this.changeEvent.emit(this.value);
87
- this.valueChange.emit(this.value);
71
+ this._onChangeRegistered?.(this.value());
72
+ this.changeEvent.emit(this.value());
88
73
  }
89
- onStarButtonFocus(index) {
74
+ onStarButtonFocus(index, event) {
90
75
  this._currentFocusIndex = index;
91
- this._wasComponentBlurred = false;
92
76
  if (this._isFocusEventSuppressed) {
93
77
  this._isFocusEventSuppressed = false;
94
78
  return;
95
79
  }
96
- this.focusEvent.emit();
80
+ this.focusEvent.emit(event);
97
81
  }
98
- onStarButtonBlur() {
82
+ onStarButtonBlur(event) {
99
83
  this._currentFocusIndex = null;
100
84
  if (this._isBlurEventSuppressed) {
101
85
  this._isBlurEventSuppressed = false;
102
86
  return;
103
87
  }
104
- this._wasComponentBlurred = true;
105
- this.blurEvent.emit();
88
+ this.blurEvent.emit(event);
106
89
  }
107
90
  focusStarButtonByIndex(index) {
108
- if (!this.starButtonInstances)
91
+ if (!this.starButtonInstances())
109
92
  return;
110
- this.starButtonInstances.get(index).focus();
93
+ this.starButtonInstances()[index].focus();
111
94
  }
112
95
  focusNextStarButton(offset) {
113
- if (!this.starButtonInstances || this._currentFocusIndex == null)
96
+ if (!this.starButtonInstances() || this._currentFocusIndex === null)
114
97
  return;
115
98
  let nextIndex = this._currentFocusIndex + offset;
116
- nextIndex = Math.min(nextIndex, this.max - 1);
99
+ nextIndex = Math.min(nextIndex, this.max() - 1);
117
100
  nextIndex = Math.max(nextIndex, 0);
118
101
  this.focusStarButtonByIndex(nextIndex);
119
102
  }
@@ -125,15 +108,15 @@ export class ArdiumStarInputComponent extends _NgModelComponentBase {
125
108
  this.focusStarButtonByIndex(0);
126
109
  }
127
110
  blur() {
128
- if (!this.starButtonInstances || this._currentFocusIndex == null)
111
+ if (!this.starButtonInstances() || this._currentFocusIndex === null)
129
112
  return;
130
- this.starButtonInstances.get(this._currentFocusIndex).blur();
113
+ this.starButtonInstances()[this._currentFocusIndex].blur();
131
114
  }
132
- //* key press handlers
115
+ //! key press handlers
133
116
  onKeyPress(event) {
134
117
  switch (event.code) {
135
118
  case 'Tab': {
136
- this._onTabPress(event);
119
+ this._onTabPress();
137
120
  return;
138
121
  }
139
122
  case 'ArrowRight': {
@@ -172,21 +155,21 @@ export class ArdiumStarInputComponent extends _NgModelComponentBase {
172
155
  _onEndPress(event) {
173
156
  event.preventDefault();
174
157
  this._suppressFocusEvents();
175
- this._onTabPress(event);
158
+ this._onTabPress();
176
159
  }
177
- _onTabPress(event) {
178
- this.focusStarButtonByIndex(this.max - 1);
160
+ _onTabPress() {
161
+ this.focusStarButtonByIndex(this.max() - 1);
179
162
  }
180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
181
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ArdiumStarInputComponent, selector: "ard-star-input", inputs: { wrapperClasses: "wrapperClasses", color: "color", value: "value", max: "max" }, outputs: { changeEvent: "change", highlightEvent: "highlight", valueChange: "valueChange" }, host: { listeners: { "keydown": "onKeyPress($event)" } }, providers: [
163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
164
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: ArdiumStarInputComponent, selector: "ard-star-input", inputs: { wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changeEvent: "change", highlightEvent: "highlight", value: "valueChange" }, host: { listeners: { "keydown": "onKeyPress($event)" } }, providers: [
182
165
  {
183
166
  provide: NG_VALUE_ACCESSOR,
184
167
  useExisting: forwardRef(() => ArdiumStarInputComponent),
185
168
  multi: true,
186
169
  },
187
- ], viewQueries: [{ propertyName: "starButtonInstances", predicate: ["starButton"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"ard-star-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n (mouseleave)=\"setDisplayToValue()\"\r\n>\r\n <ard-star-button\r\n *ngFor=\"let object of starArray; let index = index\"\r\n #starButton\r\n [class.ard-star-not-in-value]=\"!(object.isInValue)\"\r\n [color]=\"object.isInValue ? color : 'none'\"\r\n clickStrategy=\"none\"\r\n [selected]=\"object.filled\"\r\n (click)=\"onStarClick(index)\"\r\n (focus)=\"onStarButtonFocus(index)\"\r\n (blur)=\"onStarButtonBlur()\"\r\n (mouseenter)=\"onStarHighlight(index)\"\r\n [tabIndex]=\"tabIndex\"\r\n ></ard-star-button>\r\n</div>", styles: [".ard-star-input{width:max-content}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.ArdiumStarButtonComponent, selector: "ard-star-button", inputs: ["wrapperClasses", "clickStrategy", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
170
+ ], viewQueries: [{ propertyName: "starButtonInstances", predicate: ["starButton"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"ard-star-input\"\n [ngClass]=\"ngClasses()\"\n (mouseleave)=\"setDisplayToValue()\"\n>\n @for (object of starArray(); track $index) {\n <ard-star-button\n #starButton\n [class.ard-star-not-in-value]=\"!object.isInValue\"\n [color]=\"object.isInValue ? color() : 'none'\"\n clickStrategy=\"noop\"\n [selected]=\"object.filled\"\n (click)=\"onStarClick($index)\"\n (focus)=\"onStarButtonFocus($index, $event)\"\n (blur)=\"onStarButtonBlur($event)\"\n (mouseenter)=\"onStarHighlight($index)\"\n [tabIndex]=\"tabIndex()\"\n />\n }\n</div>\n", styles: [".ard-star-input{width:max-content}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ArdiumStarButtonComponent, selector: "ard-star-button", inputs: ["wrapperClasses", "clickStrategy", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
188
171
  }
189
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarInputComponent, decorators: [{
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarInputComponent, decorators: [{
190
173
  type: Component,
191
174
  args: [{ selector: 'ard-star-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
192
175
  {
@@ -194,28 +177,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
194
177
  useExisting: forwardRef(() => ArdiumStarInputComponent),
195
178
  multi: true,
196
179
  },
197
- ], template: "<div class=\"ard-star-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class]=\"wrapperClasses\"\r\n (mouseleave)=\"setDisplayToValue()\"\r\n>\r\n <ard-star-button\r\n *ngFor=\"let object of starArray; let index = index\"\r\n #starButton\r\n [class.ard-star-not-in-value]=\"!(object.isInValue)\"\r\n [color]=\"object.isInValue ? color : 'none'\"\r\n clickStrategy=\"none\"\r\n [selected]=\"object.filled\"\r\n (click)=\"onStarClick(index)\"\r\n (focus)=\"onStarButtonFocus(index)\"\r\n (blur)=\"onStarButtonBlur()\"\r\n (mouseenter)=\"onStarHighlight(index)\"\r\n [tabIndex]=\"tabIndex\"\r\n ></ard-star-button>\r\n</div>", styles: [".ard-star-input{width:max-content}\n"] }]
198
- }], propDecorators: { wrapperClasses: [{
199
- type: Input
200
- }], color: [{
201
- type: Input
202
- }], starButtonInstances: [{
203
- type: ViewChildren,
204
- args: ['starButton']
205
- }], changeEvent: [{
206
- type: Output,
207
- args: ['change']
208
- }], highlightEvent: [{
209
- type: Output,
210
- args: ['highlight']
211
- }], value: [{
212
- type: Input
213
- }], valueChange: [{
214
- type: Output
215
- }], max: [{
216
- type: Input
217
- }], onKeyPress: [{
180
+ ], template: "<div\n class=\"ard-star-input\"\n [ngClass]=\"ngClasses()\"\n (mouseleave)=\"setDisplayToValue()\"\n>\n @for (object of starArray(); track $index) {\n <ard-star-button\n #starButton\n [class.ard-star-not-in-value]=\"!object.isInValue\"\n [color]=\"object.isInValue ? color() : 'none'\"\n clickStrategy=\"noop\"\n [selected]=\"object.filled\"\n (click)=\"onStarClick($index)\"\n (focus)=\"onStarButtonFocus($index, $event)\"\n (blur)=\"onStarButtonBlur($event)\"\n (mouseenter)=\"onStarHighlight($index)\"\n [tabIndex]=\"tabIndex()\"\n />\n }\n</div>\n", styles: [".ard-star-input{width:max-content}\n"] }]
181
+ }], ctorParameters: () => [], propDecorators: { onKeyPress: [{
218
182
  type: HostListener,
219
183
  args: ['keydown', ['$event']]
220
184
  }] } });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N0YXIvc3Rhci1pbnB1dC9zdGFyLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc3Rhci9zdGFyLWlucHV0L3N0YXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sWUFBWSxFQUNaLGlCQUFpQixFQUNqQixZQUFZLEVBR1osVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFxQjVDLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBcUI7SUFkbkU7O1FBZVcsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFFckMsY0FBYztRQUNMLFVBQUssR0FBYyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBUzNDLFVBQVU7UUFDUSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXhELFVBQUssR0FBVyxDQUFDLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRW5ELFNBQVM7UUFDQSxRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGNBQVMsR0FBc0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUF5Q25ELHVCQUFrQixHQUFrQixJQUFJLENBQUM7UUFpQmpE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T0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDdkQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDRLQ3JDSCxtc0JBa0JNOzsyRkRxQk8sd0JBQXdCO2tCQWRwQyxTQUFTOytCQUNFLGdCQUFnQixpQkFHWCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDOzRCQUN2RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFHUSxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFPTixtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkFJUixXQUFXO3NCQUE1QixNQUFNO3VCQUFDLFFBQVE7Z0JBQ0ssY0FBYztzQkFBbEMsTUFBTTt1QkFBQyxXQUFXO2dCQUVWLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUdFLEdBQUc7c0JBQVgsS0FBSztnQkE4R04sVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIFZpZXdDaGlsZHJlbixcclxuICBFbGVtZW50UmVmLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBmb3J3YXJkUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFyZGl1bVN0YXJCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi9zdGFyLWJ1dHRvbi9zdGFyLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBfTmdNb2RlbENvbXBvbmVudEJhc2UgfSBmcm9tICcuLy4uLy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN0YXJDb2xvciB9IGZyb20gJy4vLi4vc3Rhci50eXBlcyc7XHJcblxyXG50eXBlIFN0YXJJbnB1dE9iamVjdCA9IHtcclxuICBmaWxsZWQ6IGJvb2xlYW47XHJcbiAgaXNJblZhbHVlOiBib29sZWFuO1xyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtc3Rhci1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N0YXItaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtU3RhcklucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1TdGFySW5wdXRDb21wb25lbnQgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBASW5wdXQoKSB3cmFwcGVyQ2xhc3Nlczogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8vKiBhcHBlYXJhbmNlXHJcbiAgQElucHV0KCkgY29sb3I6IFN0YXJDb2xvciA9IFN0YXJDb2xvci5TdGFyO1xyXG5cclxuICBnZXQgbmdDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gW2BhcmQtY29sb3ItJHt0aGlzLmNvbG9yfWBdLmpvaW4oJyAnKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ3N0YXJCdXR0b24nKVxyXG4gIHN0YXJCdXR0b25JbnN0YW5jZXMhOiBRdWVyeUxpc3Q8QXJkaXVtU3RhckJ1dHRvbkNvbXBvbmVudD47XHJcblxyXG4gIC8vKiBldmVudHNcclxuICBAT3V0cHV0KCdjaGFuZ2UnKSBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gIEBPdXRwdXQoJ2hpZ2hsaWdodCcpIGhpZ2hsaWdodEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXIgPSAwO1xyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAvLyogc3RhcnNcclxuICBASW5wdXQoKSBtYXg6IG51bWJlciA9IDU7XHJcbiAgc3RhckFycmF5OiBTdGFySW5wdXRPYmplY3RbXSA9IHRoaXMuY3JlYXRlRmlyc3RTdGFyQXJyYXkoKTtcclxuXHJcbiAgc2V0U3RhckFycmF5RnJvbU51bWJlcih0YXJnZXRJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0YXJnZXRJbmRleCA9IE1hdGgucm91bmQodGFyZ2V0SW5kZXgpO1xyXG4gICAgdGhpcy5zdGFyQXJyYXkuZm9yRWFjaCgodiwgaSkgPT4ge1xyXG4gICAgICBpZiAoaSA8IHRhcmdldEluZGV4KSB7XHJcbiAgICAgICAgdi5maWxsZWQgPSB0cnVlO1xyXG4gICAgICAgIHYuaXNJblZhbHVlID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChpIDwgdGhpcy52YWx1ZSkge1xyXG4gICAgICAgIHYuZmlsbGVkID0gZmFsc2U7XHJcbiAgICAgICAgdi5pc0luVmFsdWUgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHYuZmlsbGVkID0gZmFsc2U7XHJcbiAgICAgICAgdi5pc0luVmFsdWUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNyZWF0ZUZpcnN0U3RhckFycmF5KCk6IFN0YXJJbnB1dE9iamVjdFtdIHtcclxuICAgIGxldCBhcnIgPSBuZXcgQXJyYXkodGhpcy5tYXgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1heDsgaSsrKSB7XHJcbiAgICAgIGFycltpXSA9IHsgZmlsbGVkOiBmYWxzZSwgaXNJblZhbHVlOiBmYWxzZSB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFycjtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ21heCddKSB7XHJcbiAgICAgIHRoaXMuc3RhckFycmF5ID0gdGhpcy5jcmVhdGVGaXJzdFN0YXJBcnJheSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3ZhbHVlJ10pIHtcclxuICAgICAgdGhpcy5zZXRTdGFyQXJyYXlGcm9tTnVtYmVyKHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyogaW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yJ3Mgd3JpdGVWYWx1ZVxyXG4gIHdyaXRlVmFsdWUodjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFN0YXJBcnJheUZyb21OdW1iZXIodik7XHJcbiAgfVxyXG4gIG9uU3RhckNsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUgPSBpbmRleCArIDE7XHJcbiAgICB0aGlzLnNldFN0YXJBcnJheUZyb21OdW1iZXIodGhpcy52YWx1ZSk7XHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2N1cnJlbnRIb3ZlckluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBvblN0YXJIaWdobGlnaHQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRIb3ZlckluZGV4ID09IGluZGV4KSByZXR1cm47XHJcbiAgICB0aGlzLl9jdXJyZW50SG92ZXJJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5zZXRTdGFyQXJyYXlGcm9tTnVtYmVyKGluZGV4ICsgMSk7XHJcbiAgICB0aGlzLmhpZ2hsaWdodEV2ZW50LmVtaXQoaW5kZXggKyAxKTtcclxuICB9XHJcbiAgc2V0RGlzcGxheVRvVmFsdWUoKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50SG92ZXJJbmRleCA9IG51bGw7XHJcbiAgICB0aGlzLnNldFN0YXJBcnJheUZyb21OdW1iZXIodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8qIGZvY3VzIGhhbmRsZXJzXHJcbiAgcHJpdmF0ZSBfaXNGb2N1c0V2ZW50U3VwcHJlc3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzQmx1ckV2ZW50U3VwcHJlc3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3dhc0NvbXBvbmVudEJsdXJyZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRGb2N1c0luZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBvblN0YXJCdXR0b25Gb2N1cyhpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50Rm9jdXNJbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5fd2FzQ29tcG9uZW50Qmx1cnJlZCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuX2lzRm9jdXNFdmVudFN1cHByZXNzZWQpIHtcclxuICAgICAgdGhpcy5faXNGb2N1c0V2ZW50U3VwcHJlc3NlZCA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvY3VzRXZlbnQuZW1pdCgpO1xyXG4gIH1cclxuICBvblN0YXJCdXR0b25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudEZvY3VzSW5kZXggPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuX2lzQmx1ckV2ZW50U3VwcHJlc3NlZCkge1xyXG4gICAgICB0aGlzLl9pc0JsdXJFdmVudFN1cHByZXNzZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fd2FzQ29tcG9uZW50Qmx1cnJlZCA9IHRydWU7XHJcbiAgICB0aGlzLmJsdXJFdmVudC5lbWl0KCk7XHJcbiAgfVxyXG4gIGZvY3VzU3RhckJ1dHRvbkJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnN0YXJCdXR0b25JbnN0YW5jZXMpIHJldHVybjtcclxuICAgIHRoaXMuc3RhckJ1dHRvbkluc3RhbmNlcy5nZXQoaW5kZXgpIS5mb2N1cygpO1xyXG4gIH1cclxuICBmb2N1c05leHRTdGFyQnV0dG9uKG9mZnNldDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc3RhckJ1dHRvbkluc3RhbmNlcyB8fCB0aGlzLl9jdXJyZW50Rm9jdXNJbmRleCA9PSBudWxsKSByZXR1cm47XHJcblxyXG4gICAgbGV0IG5leHRJbmRleCA9IHRoaXMuX2N1cnJlbnRGb2N1c0luZGV4ICsgb2Zmc2V0O1xyXG4gICAgbmV4dEluZGV4ID0gTWF0aC5taW4obmV4dEluZGV4LCB0aGlzLm1heCAtIDEpO1xyXG4gICAgbmV4dEluZGV4ID0gTWF0aC5tYXgobmV4dEluZGV4LCAwKTtcclxuXHJcbiAgICB0aGlzLmZvY3VzU3RhckJ1dHRvbkJ5SW5kZXgobmV4dEluZGV4KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfc3VwcHJlc3NGb2N1c0V2ZW50cygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzRm9jdXNFdmVudFN1cHByZXNzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5faXNCbHVyRXZlbnRTdXBwcmVzc2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1c1N0YXJCdXR0b25CeUluZGV4KDApO1xyXG4gIH1cclxuICBvdmVycmlkZSBibHVyKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnN0YXJCdXR0b25JbnN0YW5jZXMgfHwgdGhpcy5fY3VycmVudEZvY3VzSW5kZXggPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgdGhpcy5zdGFyQnV0dG9uSW5zdGFuY2VzLmdldCh0aGlzLl9jdXJyZW50Rm9jdXNJbmRleCkhLmJsdXIoKTtcclxuICB9XHJcblxyXG4gIC8vKiBrZXkgcHJlc3MgaGFuZGxlcnNcclxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcclxuICAgICAgY2FzZSAnVGFiJzoge1xyXG4gICAgICAgIHRoaXMuX29uVGFiUHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdBcnJvd1JpZ2h0Jzoge1xyXG4gICAgICAgIHRoaXMuX29uQXJyb3dSaWdodFByZXNzKGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnQXJyb3dMZWZ0Jzoge1xyXG4gICAgICAgIHRoaXMuX29uQXJyb3dMZWZ0UHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjYXNlICdIb21lJzoge1xyXG4gICAgICAgIHRoaXMuX29uSG9tZVByZXNzKGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSAnRW5kJzoge1xyXG4gICAgICAgIHRoaXMuX29uRW5kUHJlc3MoZXZlbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF9vbkFycm93UmlnaHRQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX3N1cHByZXNzRm9jdXNFdmVudHMoKTtcclxuICAgIHRoaXMuZm9jdXNOZXh0U3RhckJ1dHRvbigrMSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX29uQXJyb3dMZWZ0UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLl9zdXBwcmVzc0ZvY3VzRXZlbnRzKCk7XHJcbiAgICB0aGlzLmZvY3VzTmV4dFN0YXJCdXR0b24oLTEpO1xyXG4gIH1cclxuICBwcml2YXRlIF9vbkhvbWVQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX3N1cHByZXNzRm9jdXNFdmVudHMoKTtcclxuICAgIHRoaXMuZm9jdXNTdGFyQnV0dG9uQnlJbmRleCgwKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfb25FbmRQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX3N1cHByZXNzRm9jdXNFdmVudHMoKTtcclxuICAgIHRoaXMuX29uVGFiUHJlc3MoZXZlbnQpO1xyXG4gIH1cclxuICBwcml2YXRlIF9vblRhYlByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzU3RhckJ1dHRvbkJ5SW5kZXgodGhpcy5tYXggLSAxKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImFyZC1zdGFyLWlucHV0XCJcclxuICAgIFtuZ0NsYXNzXT1cIm5nQ2xhc3Nlc1wiXHJcbiAgICBbY2xhc3NdPVwid3JhcHBlckNsYXNzZXNcIlxyXG4gICAgKG1vdXNlbGVhdmUpPVwic2V0RGlzcGxheVRvVmFsdWUoKVwiXHJcbj5cclxuICAgIDxhcmQtc3Rhci1idXR0b25cclxuICAgICAgICAqbmdGb3I9XCJsZXQgb2JqZWN0IG9mIHN0YXJBcnJheTsgbGV0IGluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICNzdGFyQnV0dG9uXHJcbiAgICAgICAgW2NsYXNzLmFyZC1zdGFyLW5vdC1pbi12YWx1ZV09XCIhKG9iamVjdC5pc0luVmFsdWUpXCJcclxuICAgICAgICBbY29sb3JdPVwib2JqZWN0LmlzSW5WYWx1ZSA/IGNvbG9yIDogJ25vbmUnXCJcclxuICAgICAgICBjbGlja1N0cmF0ZWd5PVwibm9uZVwiXHJcbiAgICAgICAgW3NlbGVjdGVkXT1cIm9iamVjdC5maWxsZWRcIlxyXG4gICAgICAgIChjbGljayk9XCJvblN0YXJDbGljayhpbmRleClcIlxyXG4gICAgICAgIChmb2N1cyk9XCJvblN0YXJCdXR0b25Gb2N1cyhpbmRleClcIlxyXG4gICAgICAgIChibHVyKT1cIm9uU3RhckJ1dHRvbkJsdXIoKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25TdGFySGlnaGxpZ2h0KGluZGV4KVwiXHJcbiAgICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4XCJcclxuICAgID48L2FyZC1zdGFyLWJ1dHRvbj5cclxuPC9kaXY+Il19
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N0YXIvc3Rhci1pbnB1dC9zdGFyLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvc3Rhci9zdGFyLWlucHV0L3N0YXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFxQjVDLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxxQkFBcUI7SUFjakU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQWRELG1CQUFjLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLGNBQWM7UUFDTCxVQUFLLEdBQUcsS0FBSyxDQUFZLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6QyxjQUFTLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FB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QUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7OEdBdEtVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLDJyQkFSeEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2dCQUN2RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsdUtDckNILHNtQkFvQkE7OzJGRG1CYSx3QkFBd0I7a0JBZHBDLFNBQVM7K0JBQ0UsZ0JBQWdCLGlCQUdYLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3dEQTBIRCxVQUFVO3NCQURULFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgZm9yd2FyZFJlZixcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xuaW1wb3J0IHsgQXJkaXVtU3RhckJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL3N0YXItYnV0dG9uL3N0YXItYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBfTmdNb2RlbENvbXBvbmVudEJhc2UgfSBmcm9tICcuLy4uLy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGFyQ29sb3IgfSBmcm9tICcuLy4uL3N0YXIudHlwZXMnO1xuXG5pbnRlcmZhY2UgU3RhcklucHV0T2JqZWN0IHtcbiAgZmlsbGVkOiBib29sZWFuO1xuICBpc0luVmFsdWU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FyZC1zdGFyLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0YXItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGFyLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFyZGl1bVN0YXJJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBcmRpdW1TdGFySW5wdXRDb21wb25lbnQgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHJlYWRvbmx5IHdyYXBwZXJDbGFzc2VzID0gaW5wdXQ8c3RyaW5nPignJyk7XG5cbiAgLy8hIGFwcGVhcmFuY2VcbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dDxTdGFyQ29sb3I+KFN0YXJDb2xvci5TdGFyKTtcblxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IFt0aGlzLndyYXBwZXJDbGFzc2VzKCksIGBhcmQtY29sb3ItJHt0aGlzLmNvbG9yKCl9YF0uam9pbignICcpKTtcblxuICAvLyEgZXZlbnRzXG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2NoYW5nZScgfSk7XG4gIHJlYWRvbmx5IGhpZ2hsaWdodEV2ZW50ID0gb3V0cHV0PG51bWJlcj4oeyBhbGlhczogJ2hpZ2hsaWdodCcgfSk7XG5cbiAgcmVhZG9ubHkgdmFsdWUgPSBtb2RlbDxudW1iZXI+KDApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGhpID0gdGhpcy5faGlnaGxpZ2h0ZWRTdGFySW5kZXgoKTtcbiAgICAgIGlmIChoaSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodEV2ZW50LmVtaXQoaGkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlKCk7IC8vIGxldCB0aGUgZWZmZWN0IGtub3cgd2hlbiB0byBmaXJlXG4gICAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyEgc3RhcnNcbiAgcmVhZG9ubHkgbWF4ID0gaW5wdXQ8bnVtYmVyLCBhbnk+KDAsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIDApIH0pO1xuXG4gIHJlYWRvbmx5IHN0YXJCdXR0b25JbnN0YW5jZXMgPSB2aWV3Q2hpbGRyZW48QXJkaXVtU3RhckJ1dHRvbkNvbXBvbmVudD4oJ3N0YXJCdXR0b24nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGlnaGxpZ2h0ZWRTdGFySW5kZXggPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc3RhckFycmF5ID0gY29tcHV0ZWQ8U3RhcklucHV0T2JqZWN0W10+KCgpID0+IHtcbiAgICBjb25zdCB2ID0gdGhpcy52YWx1ZSgpO1xuICAgIGNvbnN0IG1heCA9IHRoaXMubWF4KCk7XG4gICAgY29uc3QgaGkgPSBNYXRoLnJvdW5kKHRoaXMuX2hpZ2hsaWdodGVkU3RhckluZGV4KCkgPz8gLTEpO1xuXG4gICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG1heCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXg7IGkrKykge1xuICAgICAgaWYgKGkgPD0gaGkpIHtcbiAgICAgICAgYXJyW2ldID0geyBmaWxsZWQ6IHRydWUsIGlzSW5WYWx1ZTogdHJ1ZSB9O1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpIDwgdikge1xuICAgICAgICBhcnJbaV0gPSB7IGZpbGxlZDogaGkgPT09IC0xLCBpc0luVmFsdWU6IHRydWUgfTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBhcnJbaV0gPSB7IGZpbGxlZDogZmFsc2UsIGlzSW5WYWx1ZTogZmFsc2UgfTtcbiAgICB9XG4gICAgcmV0dXJuIGFycjtcbiAgfSk7XG5cbiAgLy8hIENvbnRyb2xWYWx1ZUFjY2Vzc29yJ3Mgd3JpdGVWYWx1ZVxuICB3cml0ZVZhbHVlKHY6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmFsdWUuc2V0KHYpO1xuICB9XG4gIG9uU3RhckNsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldChpbmRleCArIDEpO1xuICB9XG4gIG9uU3RhckhpZ2hsaWdodChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5faGlnaGxpZ2h0ZWRTdGFySW5kZXguc2V0KGluZGV4KTtcbiAgfVxuICBzZXREaXNwbGF5VG9WYWx1ZSgpIHtcbiAgICB0aGlzLl9oaWdobGlnaHRlZFN0YXJJbmRleC5zZXQobnVsbCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuX29uQ2hhbmdlUmVnaXN0ZXJlZD8uKHRoaXMudmFsdWUoKSk7XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5lbWl0KHRoaXMudmFsdWUoKSk7XG4gIH1cblxuICAvLyogZm9jdXMgaGFuZGxlcnNcbiAgcHJpdmF0ZSBfaXNGb2N1c0V2ZW50U3VwcHJlc3NlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9pc0JsdXJFdmVudFN1cHByZXNzZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY3VycmVudEZvY3VzSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBvblN0YXJCdXR0b25Gb2N1cyhpbmRleDogbnVtYmVyLCBldmVudDogRm9jdXNFdmVudCkge1xuICAgIHRoaXMuX2N1cnJlbnRGb2N1c0luZGV4ID0gaW5kZXg7XG4gICAgaWYgKHRoaXMuX2lzRm9jdXNFdmVudFN1cHByZXNzZWQpIHtcbiAgICAgIHRoaXMuX2lzRm9jdXNFdmVudFN1cHByZXNzZWQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5mb2N1c0V2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG4gIG9uU3RhckJ1dHRvbkJsdXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXJyZW50Rm9jdXNJbmRleCA9IG51bGw7XG4gICAgaWYgKHRoaXMuX2lzQmx1ckV2ZW50U3VwcHJlc3NlZCkge1xuICAgICAgdGhpcy5faXNCbHVyRXZlbnRTdXBwcmVzc2VkID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYmx1ckV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG4gIGZvY3VzU3RhckJ1dHRvbkJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGFyQnV0dG9uSW5zdGFuY2VzKCkpIHJldHVybjtcbiAgICB0aGlzLnN0YXJCdXR0b25JbnN0YW5jZXMoKVtpbmRleF0hLmZvY3VzKCk7XG4gIH1cbiAgZm9jdXNOZXh0U3RhckJ1dHRvbihvZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGFyQnV0dG9uSW5zdGFuY2VzKCkgfHwgdGhpcy5fY3VycmVudEZvY3VzSW5kZXggPT09IG51bGwpIHJldHVybjtcblxuICAgIGxldCBuZXh0SW5kZXggPSB0aGlzLl9jdXJyZW50Rm9jdXNJbmRleCArIG9mZnNldDtcbiAgICBuZXh0SW5kZXggPSBNYXRoLm1pbihuZXh0SW5kZXgsIHRoaXMubWF4KCkgLSAxKTtcbiAgICBuZXh0SW5kZXggPSBNYXRoLm1heChuZXh0SW5kZXgsIDApO1xuXG4gICAgdGhpcy5mb2N1c1N0YXJCdXR0b25CeUluZGV4KG5leHRJbmRleCk7XG4gIH1cbiAgcHJpdmF0ZSBfc3VwcHJlc3NGb2N1c0V2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0ZvY3VzRXZlbnRTdXBwcmVzc2VkID0gdHJ1ZTtcbiAgICB0aGlzLl9pc0JsdXJFdmVudFN1cHByZXNzZWQgPSB0cnVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c1N0YXJCdXR0b25CeUluZGV4KDApO1xuICB9XG4gIG92ZXJyaWRlIGJsdXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0YXJCdXR0b25JbnN0YW5jZXMoKSB8fCB0aGlzLl9jdXJyZW50Rm9jdXNJbmRleCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMuc3RhckJ1dHRvbkluc3RhbmNlcygpW3RoaXMuX2N1cnJlbnRGb2N1c0luZGV4XSEuYmx1cigpO1xuICB9XG5cbiAgLy8hIGtleSBwcmVzcyBoYW5kbGVyc1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgY2FzZSAnVGFiJzoge1xuICAgICAgICB0aGlzLl9vblRhYlByZXNzKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOiB7XG4gICAgICAgIHRoaXMuX29uQXJyb3dSaWdodFByZXNzKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAnQXJyb3dMZWZ0Jzoge1xuICAgICAgICB0aGlzLl9vbkFycm93TGVmdFByZXNzKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAnSG9tZSc6IHtcbiAgICAgICAgdGhpcy5fb25Ib21lUHJlc3MoZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjYXNlICdFbmQnOiB7XG4gICAgICAgIHRoaXMuX29uRW5kUHJlc3MoZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX29uQXJyb3dSaWdodFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLl9zdXBwcmVzc0ZvY3VzRXZlbnRzKCk7XG4gICAgdGhpcy5mb2N1c05leHRTdGFyQnV0dG9uKCsxKTtcbiAgfVxuICBwcml2YXRlIF9vbkFycm93TGVmdFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLl9zdXBwcmVzc0ZvY3VzRXZlbnRzKCk7XG4gICAgdGhpcy5mb2N1c05leHRTdGFyQnV0dG9uKC0xKTtcbiAgfVxuICBwcml2YXRlIF9vbkhvbWVQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5fc3VwcHJlc3NGb2N1c0V2ZW50cygpO1xuICAgIHRoaXMuZm9jdXNTdGFyQnV0dG9uQnlJbmRleCgwKTtcbiAgfVxuICBwcml2YXRlIF9vbkVuZFByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLl9zdXBwcmVzc0ZvY3VzRXZlbnRzKCk7XG4gICAgdGhpcy5fb25UYWJQcmVzcygpO1xuICB9XG4gIHByaXZhdGUgX29uVGFiUHJlc3MoKTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c1N0YXJCdXR0b25CeUluZGV4KHRoaXMubWF4KCkgLSAxKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImFyZC1zdGFyLWlucHV0XCJcbiAgW25nQ2xhc3NdPVwibmdDbGFzc2VzKClcIlxuICAobW91c2VsZWF2ZSk9XCJzZXREaXNwbGF5VG9WYWx1ZSgpXCJcbj5cbiAgQGZvciAob2JqZWN0IG9mIHN0YXJBcnJheSgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICA8YXJkLXN0YXItYnV0dG9uXG4gICAgICAjc3RhckJ1dHRvblxuICAgICAgW2NsYXNzLmFyZC1zdGFyLW5vdC1pbi12YWx1ZV09XCIhb2JqZWN0LmlzSW5WYWx1ZVwiXG4gICAgICBbY29sb3JdPVwib2JqZWN0LmlzSW5WYWx1ZSA/IGNvbG9yKCkgOiAnbm9uZSdcIlxuICAgICAgY2xpY2tTdHJhdGVneT1cIm5vb3BcIlxuICAgICAgW3NlbGVjdGVkXT1cIm9iamVjdC5maWxsZWRcIlxuICAgICAgKGNsaWNrKT1cIm9uU3RhckNsaWNrKCRpbmRleClcIlxuICAgICAgKGZvY3VzKT1cIm9uU3RhckJ1dHRvbkZvY3VzKCRpbmRleCwgJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJvblN0YXJCdXR0b25CbHVyKCRldmVudClcIlxuICAgICAgKG1vdXNlZW50ZXIpPVwib25TdGFySGlnaGxpZ2h0KCRpbmRleClcIlxuICAgICAgW3RhYkluZGV4XT1cInRhYkluZGV4KClcIlxuICAgIC8+XG4gIH1cbjwvZGl2PlxuIl19
@@ -4,11 +4,11 @@ import { ArdiumStarButtonModule } from '../star-button/star-button.module';
4
4
  import { ArdiumStarInputComponent } from './star-input.component';
5
5
  import * as i0 from "@angular/core";
6
6
  export class ArdiumStarInputModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarInputModule, declarations: [ArdiumStarInputComponent], imports: [CommonModule, ArdiumStarButtonModule], exports: [ArdiumStarInputComponent] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarInputModule, imports: [CommonModule, ArdiumStarButtonModule] }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarInputModule, declarations: [ArdiumStarInputComponent], imports: [CommonModule, ArdiumStarButtonModule], exports: [ArdiumStarInputComponent] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarInputModule, imports: [CommonModule, ArdiumStarButtonModule] }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarInputModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarInputModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  declarations: [ArdiumStarInputComponent],
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
16
16
  exports: [ArdiumStarInputComponent],
17
17
  }]
18
18
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1pbnB1dC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N0YXIvc3Rhci1pbnB1dC9zdGFyLWlucHV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFPbEUsTUFBTSxPQUFPLHFCQUFxQjs4R0FBckIscUJBQXFCOytHQUFyQixxQkFBcUIsaUJBSmpCLHdCQUF3QixhQUM3QixZQUFZLEVBQUUsc0JBQXNCLGFBQ3BDLHdCQUF3QjsrR0FFdkIscUJBQXFCLFlBSHRCLFlBQVksRUFBRSxzQkFBc0I7OzJGQUduQyxxQkFBcUI7a0JBTGpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsd0JBQXdCLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQztvQkFDL0MsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXJkaXVtU3RhckJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL3N0YXItYnV0dG9uL3N0YXItYnV0dG9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFyZGl1bVN0YXJJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vc3Rhci1pbnB1dC5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtBcmRpdW1TdGFySW5wdXRDb21wb25lbnRdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFyZGl1bVN0YXJCdXR0b25Nb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtBcmRpdW1TdGFySW5wdXRDb21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtU3RhcklucHV0TW9kdWxlIHt9XHJcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci1pbnB1dC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N0YXIvc3Rhci1pbnB1dC9zdGFyLWlucHV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFPbEUsTUFBTSxPQUFPLHFCQUFxQjs4R0FBckIscUJBQXFCOytHQUFyQixxQkFBcUIsaUJBSmpCLHdCQUF3QixhQUM3QixZQUFZLEVBQUUsc0JBQXNCLGFBQ3BDLHdCQUF3QjsrR0FFdkIscUJBQXFCLFlBSHRCLFlBQVksRUFBRSxzQkFBc0I7OzJGQUduQyxxQkFBcUI7a0JBTGpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsd0JBQXdCLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQztvQkFDL0MsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcmRpdW1TdGFyQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vc3Rhci1idXR0b24vc3Rhci1idXR0b24ubW9kdWxlJztcbmltcG9ydCB7IEFyZGl1bVN0YXJJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vc3Rhci1pbnB1dC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBcmRpdW1TdGFySW5wdXRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBcmRpdW1TdGFyQnV0dG9uTW9kdWxlXSxcbiAgZXhwb3J0czogW0FyZGl1bVN0YXJJbnB1dENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFyZGl1bVN0YXJJbnB1dE1vZHVsZSB7fVxuIl19
@@ -1,28 +1,20 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input } from '@angular/core';
2
2
  import { StarColor, StarFillMode } from './star.types';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  export class ArdiumStarComponent {
6
6
  constructor() {
7
- this.wrapperClasses = '';
8
- this.fill = StarFillMode.Filled;
9
- //* appearance
10
- this.color = StarColor.Star;
7
+ this.wrapperClasses = input('');
8
+ //! appearance
9
+ this.color = input(StarColor.Star);
10
+ this.fill = input(StarFillMode.Filled);
11
+ this.ngClasses = computed(() => [this.wrapperClasses(), `ard-color-${this.color()}`, `ard-star-fill-${this.fill()}`].join(' '));
11
12
  }
12
- get ngClasses() {
13
- return [`ard-color-${this.color}`, `ard-star-fill-${this.fill}`].join(' ');
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ArdiumStarComponent, selector: "ard-star", inputs: { wrapperClasses: "wrapperClasses", fill: "fill", color: "color" }, ngImport: i0, template: "<div\r\n class=\"ard-star\"\r\n [class]=\"wrapperClasses\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-star-icon ard-star-selected\"></div>\r\n <div class=\"ard-star-icon ard-star-half\"></div>\r\n <div class=\"ard-star-icon ard-star-unselected\"></div>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.2", type: ArdiumStarComponent, selector: "ard-star", inputs: { wrapperClasses: { classPropertyName: "wrapperClasses", publicName: "wrapperClasses", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"ard-star\"\n [ngClass]=\"ngClasses()\"\n>\n <div class=\"ard-star-icon ard-star-selected\"></div>\n <div class=\"ard-star-icon ard-star-half\"></div>\n <div class=\"ard-star-icon ard-star-unselected\"></div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
17
15
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ArdiumStarComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ArdiumStarComponent, decorators: [{
19
17
  type: Component,
20
- args: [{ selector: 'ard-star', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-star\"\r\n [class]=\"wrapperClasses\"\r\n [ngClass]=\"ngClasses\"\r\n>\r\n <div class=\"ard-star-icon ard-star-selected\"></div>\r\n <div class=\"ard-star-icon ard-star-half\"></div>\r\n <div class=\"ard-star-icon ard-star-unselected\"></div>\r\n</div>" }]
21
- }], propDecorators: { wrapperClasses: [{
22
- type: Input
23
- }], fill: [{
24
- type: Input
25
- }], color: [{
26
- type: Input
27
- }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N0YXIvc3Rhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N0YXIvc3Rhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBU3ZELE1BQU0sT0FBTyxtQkFBbUI7SUFQaEM7UUFRVyxtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUM1QixTQUFJLEdBQWlCLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFFbEQsY0FBYztRQUNMLFVBQUssR0FBYyxTQUFTLENBQUMsSUFBSSxDQUFDO0tBSzVDO0lBSEMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLGlCQUFpQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0UsQ0FBQzs4R0FUVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiw0SENWaEMscVNBUU07OzJGREVPLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxVQUFVLGlCQUdMLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdGFyQ29sb3IsIFN0YXJGaWxsTW9kZSB9IGZyb20gJy4vc3Rhci50eXBlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FyZC1zdGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3Rhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3Rhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcmRpdW1TdGFyQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSB3cmFwcGVyQ2xhc3Nlczogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZmlsbDogU3RhckZpbGxNb2RlID0gU3RhckZpbGxNb2RlLkZpbGxlZDtcclxuXHJcbiAgLy8qIGFwcGVhcmFuY2VcclxuICBASW5wdXQoKSBjb2xvcjogU3RhckNvbG9yID0gU3RhckNvbG9yLlN0YXI7XHJcblxyXG4gIGdldCBuZ0NsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBbYGFyZC1jb2xvci0ke3RoaXMuY29sb3J9YCwgYGFyZC1zdGFyLWZpbGwtJHt0aGlzLmZpbGx9YF0uam9pbignICcpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgICBjbGFzcz1cImFyZC1zdGFyXCJcclxuICAgIFtjbGFzc109XCJ3cmFwcGVyQ2xhc3Nlc1wiXHJcbiAgICBbbmdDbGFzc109XCJuZ0NsYXNzZXNcIlxyXG4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXJkLXN0YXItaWNvbiBhcmQtc3Rhci1zZWxlY3RlZFwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFyZC1zdGFyLWljb24gYXJkLXN0YXItaGFsZlwiPjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImFyZC1zdGFyLWljb24gYXJkLXN0YXItdW5zZWxlY3RlZFwiPjwvZGl2PlxyXG48L2Rpdj4iXX0=
18
+ args: [{ selector: 'ard-star', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ard-star\"\n [ngClass]=\"ngClasses()\"\n>\n <div class=\"ard-star-icon ard-star-selected\"></div>\n <div class=\"ard-star-icon ard-star-half\"></div>\n <div class=\"ard-star-icon ard-star-unselected\"></div>\n</div>\n" }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N0YXIvc3Rhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL3N0YXIvc3Rhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQVN2RCxNQUFNLE9BQU8sbUJBQW1CO0lBUGhDO1FBUVcsbUJBQWMsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFNUMsY0FBYztRQUNMLFVBQUssR0FBRyxLQUFLLENBQVksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLFNBQUksR0FBRyxLQUFLLENBQWUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWhELGNBQVMsR0FBRyxRQUFRLENBQVMsR0FBRyxFQUFFLENBQ3pDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLGFBQWEsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUMvRixDQUFDO0tBQ0g7OEdBVlksbUJBQW1CO2tHQUFuQixtQkFBbUIsNGJDVmhDLCtPQVFBOzsyRkRFYSxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsVUFBVSxpQkFHTCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RhckNvbG9yLCBTdGFyRmlsbE1vZGUgfSBmcm9tICcuL3N0YXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcmQtc3RhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3Rhci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtU3RhckNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHdyYXBwZXJDbGFzc2VzID0gaW5wdXQ8c3RyaW5nPignJyk7XG5cbiAgLy8hIGFwcGVhcmFuY2VcbiAgcmVhZG9ubHkgY29sb3IgPSBpbnB1dDxTdGFyQ29sb3I+KFN0YXJDb2xvci5TdGFyKTtcbiAgcmVhZG9ubHkgZmlsbCA9IGlucHV0PFN0YXJGaWxsTW9kZT4oU3RhckZpbGxNb2RlLkZpbGxlZCk7XG5cbiAgcmVhZG9ubHkgbmdDbGFzc2VzID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PlxuICAgIFt0aGlzLndyYXBwZXJDbGFzc2VzKCksIGBhcmQtY29sb3ItJHt0aGlzLmNvbG9yKCl9YCwgYGFyZC1zdGFyLWZpbGwtJHt0aGlzLmZpbGwoKX1gXS5qb2luKCcgJylcbiAgKTtcbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhcmQtc3RhclwiXG4gIFtuZ0NsYXNzXT1cIm5nQ2xhc3NlcygpXCJcbj5cbiAgPGRpdiBjbGFzcz1cImFyZC1zdGFyLWljb24gYXJkLXN0YXItc2VsZWN0ZWRcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFyZC1zdGFyLWljb24gYXJkLXN0YXItaGFsZlwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYXJkLXN0YXItaWNvbiBhcmQtc3Rhci11bnNlbGVjdGVkXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==