@ardium-ui/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (491) hide show
  1. package/README.md +25 -0
  2. package/esm2022/ardium-ui-ui.mjs +5 -0
  3. package/esm2022/lib/_internal/boolean-component.mjs +108 -0
  4. package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +12 -0
  5. package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +18 -0
  6. package/esm2022/lib/_internal/disablable-component.mjs +44 -0
  7. package/esm2022/lib/_internal/focusable-component.mjs +91 -0
  8. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +436 -0
  9. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +349 -0
  10. package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +155 -0
  11. package/esm2022/lib/_internal/models/pagination.model.mjs +124 -0
  12. package/esm2022/lib/_internal/ngmodel-component.mjs +42 -0
  13. package/esm2022/lib/_internal/queue.mjs +59 -0
  14. package/esm2022/lib/_internal/selectable-list-component.mjs +304 -0
  15. package/esm2022/lib/badge/badge.directive.mjs +123 -0
  16. package/esm2022/lib/badge/badge.module.mjs +18 -0
  17. package/esm2022/lib/badge/badge.types.mjs +16 -0
  18. package/esm2022/lib/buttons/_button-base.mjs +45 -0
  19. package/esm2022/lib/buttons/button/button.component.mjs +49 -0
  20. package/esm2022/lib/buttons/button/button.module.mjs +18 -0
  21. package/esm2022/lib/buttons/fab/fab.component.mjs +40 -0
  22. package/esm2022/lib/buttons/fab/fab.module.mjs +18 -0
  23. package/esm2022/lib/buttons/general-button.types.mjs +55 -0
  24. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +37 -0
  25. package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +18 -0
  26. package/esm2022/lib/calendar/calendar.component.mjs +982 -0
  27. package/esm2022/lib/calendar/calendar.directives.mjs +107 -0
  28. package/esm2022/lib/calendar/calendar.helpers.mjs +47 -0
  29. package/esm2022/lib/calendar/calendar.module.mjs +21 -0
  30. package/esm2022/lib/calendar/calendar.types.mjs +11 -0
  31. package/esm2022/lib/card/card.children.mjs +97 -0
  32. package/esm2022/lib/card/card.component.mjs +40 -0
  33. package/esm2022/lib/card/card.module.mjs +59 -0
  34. package/esm2022/lib/card/card.types.mjs +9 -0
  35. package/esm2022/lib/checkbox/checkbox.component.mjs +73 -0
  36. package/esm2022/lib/checkbox/checkbox.module.mjs +18 -0
  37. package/esm2022/lib/checkbox/checkbox.types.mjs +6 -0
  38. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +139 -0
  39. package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +19 -0
  40. package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +7 -0
  41. package/esm2022/lib/chip/chip.component.mjs +55 -0
  42. package/esm2022/lib/chip/chip.module.mjs +21 -0
  43. package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +80 -0
  44. package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +77 -0
  45. package/esm2022/lib/color/color-display/color-display.component.mjs +48 -0
  46. package/esm2022/lib/color/color-display/color-display.module.mjs +18 -0
  47. package/esm2022/lib/color/color-display/color-display.types.mjs +9 -0
  48. package/esm2022/lib/color/color-picker/color-picker.component.mjs +484 -0
  49. package/esm2022/lib/color/color-picker/color-picker.directives.mjs +55 -0
  50. package/esm2022/lib/color/color-picker/color-picker.module.mjs +43 -0
  51. package/esm2022/lib/color/color-picker/color-picker.types.mjs +11 -0
  52. package/esm2022/lib/dialog/dialog.component.mjs +167 -0
  53. package/esm2022/lib/dialog/dialog.directives.mjs +14 -0
  54. package/esm2022/lib/dialog/dialog.module.mjs +21 -0
  55. package/esm2022/lib/dialog/dialog.types.mjs +6 -0
  56. package/esm2022/lib/divider/divider.component.mjs +26 -0
  57. package/esm2022/lib/divider/divider.module.mjs +18 -0
  58. package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +130 -0
  59. package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +18 -0
  60. package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +10 -0
  61. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +82 -0
  62. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +42 -0
  63. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +58 -0
  64. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +153 -0
  65. package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +73 -0
  66. package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +21 -0
  67. package/esm2022/lib/file-inputs/file-input-base.mjs +187 -0
  68. package/esm2022/lib/file-inputs/file-input-types.mjs +2 -0
  69. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +74 -0
  70. package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +25 -0
  71. package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +19 -0
  72. package/esm2022/lib/icon/icon.component.mjs +85 -0
  73. package/esm2022/lib/icon/icon.module.mjs +19 -0
  74. package/esm2022/lib/icon/icon.pipe.mjs +18 -0
  75. package/esm2022/lib/inputs/color-input/color-input.component.mjs +421 -0
  76. package/esm2022/lib/inputs/color-input/color-input.directives.mjs +101 -0
  77. package/esm2022/lib/inputs/color-input/color-input.module.mjs +85 -0
  78. package/esm2022/lib/inputs/color-input/color-input.types.mjs +2 -0
  79. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +218 -0
  80. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +217 -0
  81. package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +18 -0
  82. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +15 -0
  83. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +8 -0
  84. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +234 -0
  85. package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +36 -0
  86. package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +21 -0
  87. package/esm2022/lib/inputs/hex-input.model.mjs +106 -0
  88. package/esm2022/lib/inputs/input/input.component.mjs +344 -0
  89. package/esm2022/lib/inputs/input/input.directives.mjs +58 -0
  90. package/esm2022/lib/inputs/input/input.module.mjs +47 -0
  91. package/esm2022/lib/inputs/input-transformers.mjs +66 -0
  92. package/esm2022/lib/inputs/input-types.mjs +6 -0
  93. package/esm2022/lib/inputs/input-utils.mjs +205 -0
  94. package/esm2022/lib/inputs/number-input/number-input.component.mjs +289 -0
  95. package/esm2022/lib/inputs/number-input/number-input.directives.mjs +14 -0
  96. package/esm2022/lib/inputs/number-input/number-input.module.mjs +21 -0
  97. package/esm2022/lib/inputs/password-input/password-input.component.mjs +222 -0
  98. package/esm2022/lib/inputs/password-input/password-input.directives.mjs +49 -0
  99. package/esm2022/lib/inputs/password-input/password-input.module.mjs +41 -0
  100. package/esm2022/lib/inputs/password-input/password-input.types.mjs +2 -0
  101. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +219 -0
  102. package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +36 -0
  103. package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +37 -0
  104. package/esm2022/lib/kbd/kbd.component.mjs +42 -0
  105. package/esm2022/lib/kbd/kbd.module.mjs +19 -0
  106. package/esm2022/lib/kbd/kbd.pipe.mjs +17 -0
  107. package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +55 -0
  108. package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +19 -0
  109. package/esm2022/lib/modal/modal.component.mjs +120 -0
  110. package/esm2022/lib/modal/modal.module.mjs +21 -0
  111. package/esm2022/lib/option/option.component.mjs +77 -0
  112. package/esm2022/lib/option/option.module.mjs +18 -0
  113. package/esm2022/lib/progress-bar/progress-bar.component.mjs +95 -0
  114. package/esm2022/lib/progress-bar/progress-bar.directive.mjs +14 -0
  115. package/esm2022/lib/progress-bar/progress-bar.module.mjs +19 -0
  116. package/esm2022/lib/progress-bar/progress-bar.types.mjs +19 -0
  117. package/esm2022/lib/progress-circle/progress-circle.component.mjs +94 -0
  118. package/esm2022/lib/progress-circle/progress-circle.directive.mjs +14 -0
  119. package/esm2022/lib/progress-circle/progress-circle.module.mjs +19 -0
  120. package/esm2022/lib/progress-circle/progress-circle.types.mjs +10 -0
  121. package/esm2022/lib/radio/radio/radio.component.mjs +53 -0
  122. package/esm2022/lib/radio/radio-group.component.mjs +207 -0
  123. package/esm2022/lib/radio/radio.module.mjs +19 -0
  124. package/esm2022/lib/search-functions.mjs +64 -0
  125. package/esm2022/lib/segment/segment.component.mjs +168 -0
  126. package/esm2022/lib/segment/segment.directives.mjs +14 -0
  127. package/esm2022/lib/segment/segment.module.mjs +19 -0
  128. package/esm2022/lib/segment/segment.types.mjs +12 -0
  129. package/esm2022/lib/select/select.component.mjs +1160 -0
  130. package/esm2022/lib/select/select.directive.mjs +171 -0
  131. package/esm2022/lib/select/select.module.mjs +112 -0
  132. package/esm2022/lib/select/select.types.mjs +2 -0
  133. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +46 -0
  134. package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +18 -0
  135. package/esm2022/lib/slider/abstract-slider.mjs +330 -0
  136. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +143 -0
  137. package/esm2022/lib/slider/range-slider/range-slider.module.mjs +18 -0
  138. package/esm2022/lib/slider/slider.component.mjs +93 -0
  139. package/esm2022/lib/slider/slider.directive.mjs +16 -0
  140. package/esm2022/lib/slider/slider.module.mjs +20 -0
  141. package/esm2022/lib/slider/slider.types.mjs +10 -0
  142. package/esm2022/lib/snackbar/index.mjs +5 -0
  143. package/esm2022/lib/snackbar/snackbar-ref.mjs +51 -0
  144. package/esm2022/lib/snackbar/snackbar.component.mjs +48 -0
  145. package/esm2022/lib/snackbar/snackbar.service.mjs +227 -0
  146. package/esm2022/lib/snackbar/snackbar.token.mjs +20 -0
  147. package/esm2022/lib/snackbar/snackbar.types.mjs +25 -0
  148. package/esm2022/lib/spinner/spinner.component.mjs +22 -0
  149. package/esm2022/lib/spinner/spinner.module.mjs +18 -0
  150. package/esm2022/lib/star/star-button/star-button.component.mjs +53 -0
  151. package/esm2022/lib/star/star-button/star-button.module.mjs +19 -0
  152. package/esm2022/lib/star/star-display/star-display.component.mjs +66 -0
  153. package/esm2022/lib/star/star-display/star-display.module.mjs +19 -0
  154. package/esm2022/lib/star/star-input/star-input.component.mjs +221 -0
  155. package/esm2022/lib/star/star-input/star-input.module.mjs +19 -0
  156. package/esm2022/lib/star/star.component.mjs +28 -0
  157. package/esm2022/lib/star/star.module.mjs +18 -0
  158. package/esm2022/lib/star/star.types.mjs +23 -0
  159. package/esm2022/lib/statebox/statebox.component.mjs +158 -0
  160. package/esm2022/lib/statebox/statebox.module.mjs +18 -0
  161. package/esm2022/lib/statebox/statebox.types.mjs +2 -0
  162. package/esm2022/lib/table/table-item-storage.mjs +560 -0
  163. package/esm2022/lib/table/table.component.mjs +468 -0
  164. package/esm2022/lib/table/table.directives.mjs +64 -0
  165. package/esm2022/lib/table/table.module.mjs +46 -0
  166. package/esm2022/lib/table/table.types.mjs +30 -0
  167. package/esm2022/lib/table/utils.mjs +18 -0
  168. package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +64 -0
  169. package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +19 -0
  170. package/esm2022/lib/table-pagination/table-pagination.component.mjs +172 -0
  171. package/esm2022/lib/table-pagination/table-pagination.module.mjs +21 -0
  172. package/esm2022/lib/table-pagination/table-pagination.types.mjs +7 -0
  173. package/esm2022/lib/types/alignment.types.mjs +10 -0
  174. package/esm2022/lib/types/colors.types.mjs +43 -0
  175. package/esm2022/lib/types/item-storage.types.mjs +6 -0
  176. package/esm2022/lib/types/theming.types.mjs +48 -0
  177. package/esm2022/lib/types/utility.types.mjs +5 -0
  178. package/esm2022/public-api.mjs +194 -0
  179. package/fesm2022/ardium-ui-ui.mjs +14316 -0
  180. package/fesm2022/ardium-ui-ui.mjs.map +1 -0
  181. package/index.d.ts +5 -0
  182. package/lib/_internal/boolean-component.d.ts +50 -0
  183. package/lib/_internal/clear-button/clear-button.component.d.ts +6 -0
  184. package/lib/_internal/clear-button/clear-button.module.d.ts +8 -0
  185. package/lib/_internal/disablable-component.d.ts +11 -0
  186. package/lib/_internal/focusable-component.d.ts +52 -0
  187. package/lib/_internal/item-storages/dropdown-item-storage.d.ts +87 -0
  188. package/lib/_internal/item-storages/simple-item-storage.d.ts +159 -0
  189. package/lib/_internal/item-storages/simplest-item-storage.d.ts +70 -0
  190. package/lib/_internal/models/pagination.model.d.ts +53 -0
  191. package/lib/_internal/ngmodel-component.d.ts +42 -0
  192. package/lib/_internal/queue.d.ts +21 -0
  193. package/lib/_internal/selectable-list-component.d.ts +71 -0
  194. package/lib/badge/badge.directive.d.ts +31 -0
  195. package/lib/badge/badge.module.d.ts +8 -0
  196. package/lib/badge/badge.types.d.ts +17 -0
  197. package/lib/buttons/_button-base.d.ts +18 -0
  198. package/lib/buttons/button/button.component.d.ts +15 -0
  199. package/lib/buttons/button/button.module.d.ts +8 -0
  200. package/lib/buttons/fab/fab.component.d.ts +12 -0
  201. package/lib/buttons/fab/fab.module.d.ts +8 -0
  202. package/lib/buttons/general-button.types.d.ts +57 -0
  203. package/lib/buttons/icon-button/icon-button.component.d.ts +13 -0
  204. package/lib/buttons/icon-button/icon-button.module.d.ts +8 -0
  205. package/lib/calendar/calendar.component.d.ts +155 -0
  206. package/lib/calendar/calendar.directives.d.ts +51 -0
  207. package/lib/calendar/calendar.helpers.d.ts +15 -0
  208. package/lib/calendar/calendar.module.d.ts +11 -0
  209. package/lib/calendar/calendar.types.d.ts +80 -0
  210. package/lib/card/card.children.d.ts +43 -0
  211. package/lib/card/card.component.d.ts +13 -0
  212. package/lib/card/card.module.d.ts +9 -0
  213. package/lib/card/card.types.d.ts +10 -0
  214. package/lib/checkbox/checkbox.component.d.ts +21 -0
  215. package/lib/checkbox/checkbox.module.d.ts +8 -0
  216. package/lib/checkbox/checkbox.types.d.ts +6 -0
  217. package/lib/checkbox-list/checkbox-list.component.d.ts +50 -0
  218. package/lib/checkbox-list/checkbox-list.module.d.ts +9 -0
  219. package/lib/checkbox-list/checkbox-list.types.d.ts +7 -0
  220. package/lib/chip/chip.component.d.ts +18 -0
  221. package/lib/chip/chip.module.d.ts +11 -0
  222. package/lib/chip/deletable-chip/deletable-chip.component.d.ts +24 -0
  223. package/lib/chip/selectable-chip/selectable-chip.component.d.ts +24 -0
  224. package/lib/color/color-display/color-display.component.d.ts +17 -0
  225. package/lib/color/color-display/color-display.module.d.ts +8 -0
  226. package/lib/color/color-display/color-display.types.d.ts +9 -0
  227. package/lib/color/color-picker/color-picker.component.d.ts +125 -0
  228. package/lib/color/color-picker/color-picker.directives.d.ts +27 -0
  229. package/lib/color/color-picker/color-picker.module.d.ts +13 -0
  230. package/lib/color/color-picker/color-picker.types.d.ts +21 -0
  231. package/lib/dialog/dialog.component.d.ts +44 -0
  232. package/lib/dialog/dialog.directives.d.ts +9 -0
  233. package/lib/dialog/dialog.module.d.ts +11 -0
  234. package/lib/dialog/dialog.types.d.ts +28 -0
  235. package/lib/divider/divider.component.d.ts +8 -0
  236. package/lib/divider/divider.module.d.ts +8 -0
  237. package/lib/dropdown-panel/dropdown-panel.component.d.ts +37 -0
  238. package/lib/dropdown-panel/dropdown-panel.module.d.ts +8 -0
  239. package/lib/dropdown-panel/dropdown-panel.types.d.ts +12 -0
  240. package/lib/file-inputs/file-drop-area/file-drop-area.component.d.ts +22 -0
  241. package/lib/file-inputs/file-drop-area/file-drop-area.directives.d.ts +21 -0
  242. package/lib/file-inputs/file-drop-area/file-drop-area.module.d.ts +12 -0
  243. package/lib/file-inputs/file-input/file-input.component.d.ts +41 -0
  244. package/lib/file-inputs/file-input/file-input.directives.d.ts +39 -0
  245. package/lib/file-inputs/file-input/file-input.module.d.ts +11 -0
  246. package/lib/file-inputs/file-input-base.d.ts +43 -0
  247. package/lib/file-inputs/file-input-types.d.ts +10 -0
  248. package/lib/form-field-frame/form-field-frame.component.d.ts +32 -0
  249. package/lib/form-field-frame/form-field-frame.directives.d.ts +14 -0
  250. package/lib/form-field-frame/form-field-frame.module.d.ts +9 -0
  251. package/lib/icon/icon.component.d.ts +32 -0
  252. package/lib/icon/icon.module.d.ts +9 -0
  253. package/lib/icon/icon.pipe.d.ts +7 -0
  254. package/lib/inputs/color-input/color-input.component.d.ts +147 -0
  255. package/lib/inputs/color-input/color-input.directives.d.ts +52 -0
  256. package/lib/inputs/color-input/color-input.module.d.ts +16 -0
  257. package/lib/inputs/color-input/color-input.types.d.ts +5 -0
  258. package/lib/inputs/digit-input/digit-input.component.d.ts +50 -0
  259. package/lib/inputs/digit-input/digit-input.model.d.ts +26 -0
  260. package/lib/inputs/digit-input/digit-input.module.d.ts +8 -0
  261. package/lib/inputs/digit-input/digit-input.types.d.ts +27 -0
  262. package/lib/inputs/digit-input/digit-input.utils.d.ts +17 -0
  263. package/lib/inputs/hex-input/hex-input.component.d.ts +60 -0
  264. package/lib/inputs/hex-input/hex-input.directives.d.ts +20 -0
  265. package/lib/inputs/hex-input/hex-input.module.d.ts +11 -0
  266. package/lib/inputs/hex-input.model.d.ts +27 -0
  267. package/lib/inputs/input/input.component.d.ts +79 -0
  268. package/lib/inputs/input/input.directives.d.ts +33 -0
  269. package/lib/inputs/input/input.module.d.ts +13 -0
  270. package/lib/inputs/input-transformers.d.ts +24 -0
  271. package/lib/inputs/input-types.d.ts +6 -0
  272. package/lib/inputs/input-utils.d.ts +58 -0
  273. package/lib/inputs/number-input/number-input.component.d.ts +70 -0
  274. package/lib/inputs/number-input/number-input.directives.d.ts +8 -0
  275. package/lib/inputs/number-input/number-input.module.d.ts +11 -0
  276. package/lib/inputs/password-input/password-input.component.d.ts +54 -0
  277. package/lib/inputs/password-input/password-input.directives.d.ts +27 -0
  278. package/lib/inputs/password-input/password-input.module.d.ts +11 -0
  279. package/lib/inputs/password-input/password-input.types.d.ts +3 -0
  280. package/lib/inputs/simple-input/simple-input.component.d.ts +58 -0
  281. package/lib/inputs/simple-input/simple-input.directives.d.ts +20 -0
  282. package/lib/inputs/simple-input/simple-input.module.d.ts +11 -0
  283. package/lib/kbd/kbd.component.d.ts +15 -0
  284. package/lib/kbd/kbd.module.d.ts +9 -0
  285. package/lib/kbd/kbd.pipe.d.ts +7 -0
  286. package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +18 -0
  287. package/lib/kbd-shortcut/kbd-shortcut.module.d.ts +9 -0
  288. package/lib/modal/modal.component.d.ts +36 -0
  289. package/lib/modal/modal.module.d.ts +11 -0
  290. package/lib/option/option.component.d.ts +29 -0
  291. package/lib/option/option.module.d.ts +8 -0
  292. package/lib/progress-bar/progress-bar.component.d.ts +26 -0
  293. package/lib/progress-bar/progress-bar.directive.d.ts +9 -0
  294. package/lib/progress-bar/progress-bar.module.d.ts +9 -0
  295. package/lib/progress-bar/progress-bar.types.d.ts +26 -0
  296. package/lib/progress-circle/progress-circle.component.d.ts +28 -0
  297. package/lib/progress-circle/progress-circle.directive.d.ts +9 -0
  298. package/lib/progress-circle/progress-circle.module.d.ts +9 -0
  299. package/lib/progress-circle/progress-circle.types.d.ts +17 -0
  300. package/lib/radio/radio/radio.component.d.ts +23 -0
  301. package/lib/radio/radio-group.component.d.ts +43 -0
  302. package/lib/radio/radio.module.d.ts +9 -0
  303. package/lib/search-functions.d.ts +10 -0
  304. package/lib/segment/segment.component.d.ts +48 -0
  305. package/lib/segment/segment.directives.d.ts +9 -0
  306. package/lib/segment/segment.module.d.ts +9 -0
  307. package/lib/segment/segment.types.d.ts +16 -0
  308. package/lib/select/select.component.d.ts +255 -0
  309. package/lib/select/select.directive.d.ts +94 -0
  310. package/lib/select/select.module.d.ts +14 -0
  311. package/lib/select/select.types.d.ts +109 -0
  312. package/lib/slide-toggle/slide-toggle.component.d.ts +14 -0
  313. package/lib/slide-toggle/slide-toggle.module.d.ts +8 -0
  314. package/lib/slider/abstract-slider.d.ts +88 -0
  315. package/lib/slider/range-slider/range-slider.component.d.ts +29 -0
  316. package/lib/slider/range-slider/range-slider.module.d.ts +8 -0
  317. package/lib/slider/slider.component.d.ts +18 -0
  318. package/lib/slider/slider.directive.d.ts +9 -0
  319. package/lib/slider/slider.module.d.ts +10 -0
  320. package/lib/slider/slider.types.d.ts +28 -0
  321. package/lib/snackbar/index.d.ts +4 -0
  322. package/lib/snackbar/snackbar-ref.d.ts +37 -0
  323. package/lib/snackbar/snackbar.component.d.ts +16 -0
  324. package/lib/snackbar/snackbar.service.d.ts +31 -0
  325. package/lib/snackbar/snackbar.token.d.ts +5 -0
  326. package/lib/snackbar/snackbar.types.d.ts +48 -0
  327. package/lib/spinner/spinner.component.d.ts +8 -0
  328. package/lib/spinner/spinner.module.d.ts +8 -0
  329. package/lib/star/star-button/star-button.component.d.ts +16 -0
  330. package/lib/star/star-button/star-button.module.d.ts +9 -0
  331. package/lib/star/star-display/star-display.component.d.ts +16 -0
  332. package/lib/star/star-display/star-display.module.d.ts +9 -0
  333. package/lib/star/star-input/star-input.component.d.ts +51 -0
  334. package/lib/star/star-input/star-input.module.d.ts +9 -0
  335. package/lib/star/star.component.d.ts +10 -0
  336. package/lib/star/star.module.d.ts +8 -0
  337. package/lib/star/star.types.d.ts +30 -0
  338. package/lib/statebox/statebox.component.d.ts +31 -0
  339. package/lib/statebox/statebox.module.d.ts +8 -0
  340. package/lib/statebox/statebox.types.d.ts +22 -0
  341. package/lib/table/table-item-storage.d.ts +266 -0
  342. package/lib/table/table.component.d.ts +127 -0
  343. package/lib/table/table.directives.d.ts +35 -0
  344. package/lib/table/table.module.d.ts +12 -0
  345. package/lib/table/table.types.d.ts +83 -0
  346. package/lib/table/utils.d.ts +4 -0
  347. package/lib/table-from-csv/table-from-csv.component.d.ts +16 -0
  348. package/lib/table-from-csv/table-from-csv.module.d.ts +9 -0
  349. package/lib/table-pagination/table-pagination.component.d.ts +48 -0
  350. package/lib/table-pagination/table-pagination.module.d.ts +11 -0
  351. package/lib/table-pagination/table-pagination.types.d.ts +9 -0
  352. package/lib/types/alignment.types.d.ts +11 -0
  353. package/lib/types/colors.types.d.ts +71 -0
  354. package/lib/types/item-storage.types.d.ts +98 -0
  355. package/lib/types/theming.types.d.ts +61 -0
  356. package/lib/types/utility.types.d.ts +11 -0
  357. package/package.json +36 -0
  358. package/prebuilt-themes/default/badge.css +208 -0
  359. package/prebuilt-themes/default/badge.css.map +1 -0
  360. package/prebuilt-themes/default/buttons/button.css +290 -0
  361. package/prebuilt-themes/default/buttons/button.css.map +1 -0
  362. package/prebuilt-themes/default/buttons/fab.css +307 -0
  363. package/prebuilt-themes/default/buttons/fab.css.map +1 -0
  364. package/prebuilt-themes/default/buttons/icon-button.css +288 -0
  365. package/prebuilt-themes/default/buttons/icon-button.css.map +1 -0
  366. package/prebuilt-themes/default/calendar.css +293 -0
  367. package/prebuilt-themes/default/calendar.css.map +1 -0
  368. package/prebuilt-themes/default/card.css +122 -0
  369. package/prebuilt-themes/default/card.css.map +1 -0
  370. package/prebuilt-themes/default/checkbox-list.css +65 -0
  371. package/prebuilt-themes/default/checkbox-list.css.map +1 -0
  372. package/prebuilt-themes/default/checkbox.css +365 -0
  373. package/prebuilt-themes/default/checkbox.css.map +1 -0
  374. package/prebuilt-themes/default/chips.css +367 -0
  375. package/prebuilt-themes/default/chips.css.map +1 -0
  376. package/prebuilt-themes/default/color-display.css +29 -0
  377. package/prebuilt-themes/default/color-display.css.map +1 -0
  378. package/prebuilt-themes/default/color-picker.css +106 -0
  379. package/prebuilt-themes/default/color-picker.css.map +1 -0
  380. package/prebuilt-themes/default/core.css +84 -0
  381. package/prebuilt-themes/default/core.css.map +1 -0
  382. package/prebuilt-themes/default/dialog.css +18 -0
  383. package/prebuilt-themes/default/dialog.css.map +1 -0
  384. package/prebuilt-themes/default/divider.css +11 -0
  385. package/prebuilt-themes/default/divider.css.map +1 -0
  386. package/prebuilt-themes/default/dropdown-panel.css +37 -0
  387. package/prebuilt-themes/default/dropdown-panel.css.map +1 -0
  388. package/prebuilt-themes/default/file-drop-area.css +279 -0
  389. package/prebuilt-themes/default/file-drop-area.css.map +1 -0
  390. package/prebuilt-themes/default/form-field-frame.css +84 -0
  391. package/prebuilt-themes/default/form-field-frame.css.map +1 -0
  392. package/prebuilt-themes/default/inputs/color-input.css +139 -0
  393. package/prebuilt-themes/default/inputs/color-input.css.map +1 -0
  394. package/prebuilt-themes/default/inputs/digit-input.css +45 -0
  395. package/prebuilt-themes/default/inputs/digit-input.css.map +1 -0
  396. package/prebuilt-themes/default/inputs/file-input.css +169 -0
  397. package/prebuilt-themes/default/inputs/file-input.css.map +1 -0
  398. package/prebuilt-themes/default/inputs/hex-input.css +119 -0
  399. package/prebuilt-themes/default/inputs/hex-input.css.map +1 -0
  400. package/prebuilt-themes/default/inputs/input.css +139 -0
  401. package/prebuilt-themes/default/inputs/input.css.map +1 -0
  402. package/prebuilt-themes/default/inputs/number-input.css +150 -0
  403. package/prebuilt-themes/default/inputs/number-input.css.map +1 -0
  404. package/prebuilt-themes/default/inputs/password-input.css +73 -0
  405. package/prebuilt-themes/default/inputs/password-input.css.map +1 -0
  406. package/prebuilt-themes/default/inputs/search-bar.css +114 -0
  407. package/prebuilt-themes/default/inputs/search-bar.css.map +1 -0
  408. package/prebuilt-themes/default/inputs/simple-input.css +114 -0
  409. package/prebuilt-themes/default/inputs/simple-input.css.map +1 -0
  410. package/prebuilt-themes/default/kbd-shortcut.css +12 -0
  411. package/prebuilt-themes/default/kbd-shortcut.css.map +1 -0
  412. package/prebuilt-themes/default/kbd.css +17 -0
  413. package/prebuilt-themes/default/kbd.css.map +1 -0
  414. package/prebuilt-themes/default/modal.css +73 -0
  415. package/prebuilt-themes/default/modal.css.map +1 -0
  416. package/prebuilt-themes/default/progress-bar.css +267 -0
  417. package/prebuilt-themes/default/progress-bar.css.map +1 -0
  418. package/prebuilt-themes/default/progress-circle.css +167 -0
  419. package/prebuilt-themes/default/progress-circle.css.map +1 -0
  420. package/prebuilt-themes/default/radio.css +226 -0
  421. package/prebuilt-themes/default/radio.css.map +1 -0
  422. package/prebuilt-themes/default/segment.css +391 -0
  423. package/prebuilt-themes/default/segment.css.map +1 -0
  424. package/prebuilt-themes/default/select.css +275 -0
  425. package/prebuilt-themes/default/select.css.map +1 -0
  426. package/prebuilt-themes/default/slide-toggle.css +264 -0
  427. package/prebuilt-themes/default/slide-toggle.css.map +1 -0
  428. package/prebuilt-themes/default/slider.css +354 -0
  429. package/prebuilt-themes/default/slider.css.map +1 -0
  430. package/prebuilt-themes/default/snackbar.css +183 -0
  431. package/prebuilt-themes/default/snackbar.css.map +1 -0
  432. package/prebuilt-themes/default/spinner.css +151 -0
  433. package/prebuilt-themes/default/spinner.css.map +1 -0
  434. package/prebuilt-themes/default/stars.css +291 -0
  435. package/prebuilt-themes/default/stars.css.map +1 -0
  436. package/prebuilt-themes/default/statebox.css +235 -0
  437. package/prebuilt-themes/default/statebox.css.map +1 -0
  438. package/prebuilt-themes/default/table-pagination.css +48 -0
  439. package/prebuilt-themes/default/table-pagination.css.map +1 -0
  440. package/prebuilt-themes/default/table.css +418 -0
  441. package/prebuilt-themes/default/table.css.map +1 -0
  442. package/public-api.d.ts +145 -0
  443. package/themes/_variables.scss +121 -0
  444. package/themes/default/_clear-button.scss +73 -0
  445. package/themes/default/_coloring.scss +137 -0
  446. package/themes/default/_dropdown-arrow.scss +12 -0
  447. package/themes/default/_mixins.scss +70 -0
  448. package/themes/default/badge.scss +94 -0
  449. package/themes/default/buttons/_button-mixins.scss +144 -0
  450. package/themes/default/buttons/button.scss +62 -0
  451. package/themes/default/buttons/fab.scss +72 -0
  452. package/themes/default/buttons/icon-button.scss +59 -0
  453. package/themes/default/calendar.scss +182 -0
  454. package/themes/default/card.scss +126 -0
  455. package/themes/default/checkbox-list.scss +83 -0
  456. package/themes/default/checkbox.scss +109 -0
  457. package/themes/default/chips.scss +206 -0
  458. package/themes/default/color-display.scss +41 -0
  459. package/themes/default/color-picker.scss +111 -0
  460. package/themes/default/core.scss +96 -0
  461. package/themes/default/dialog.scss +16 -0
  462. package/themes/default/divider.scss +13 -0
  463. package/themes/default/dropdown-panel.scss +45 -0
  464. package/themes/default/file-drop-area.scss +162 -0
  465. package/themes/default/form-field-frame.scss +78 -0
  466. package/themes/default/inputs/_shared.scss +46 -0
  467. package/themes/default/inputs/color-input.scss +46 -0
  468. package/themes/default/inputs/digit-input.scss +56 -0
  469. package/themes/default/inputs/file-input.scss +78 -0
  470. package/themes/default/inputs/hex-input.scss +27 -0
  471. package/themes/default/inputs/input.scss +52 -0
  472. package/themes/default/inputs/number-input.scss +121 -0
  473. package/themes/default/inputs/password-input.scss +43 -0
  474. package/themes/default/inputs/search-bar.scss +19 -0
  475. package/themes/default/inputs/simple-input.scss +19 -0
  476. package/themes/default/kbd-shortcut.scss +13 -0
  477. package/themes/default/kbd.scss +20 -0
  478. package/themes/default/modal.scss +93 -0
  479. package/themes/default/progress-bar.scss +166 -0
  480. package/themes/default/progress-circle.scss +56 -0
  481. package/themes/default/radio.scss +112 -0
  482. package/themes/default/segment.scss +339 -0
  483. package/themes/default/select.scss +253 -0
  484. package/themes/default/slide-toggle.scss +151 -0
  485. package/themes/default/slider.scss +224 -0
  486. package/themes/default/snackbar.scss +60 -0
  487. package/themes/default/spinner.scss +21 -0
  488. package/themes/default/stars.scss +122 -0
  489. package/themes/default/statebox.scss +109 -0
  490. package/themes/default/table-pagination.scss +56 -0
  491. package/themes/default/table.scss +403 -0
@@ -0,0 +1,6 @@
1
+ export const CaseTransformerType = {
2
+ NoChange: 'nochange',
3
+ Uppercase: 'uppercase',
4
+ Lowercase: 'lowercase',
5
+ };
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9pbnB1dC10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUMvQixRQUFRLEVBQUUsVUFBVTtJQUNwQixTQUFTLEVBQUUsV0FBVztJQUN0QixTQUFTLEVBQUUsV0FBVztDQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENhc2VUcmFuc2Zvcm1lclR5cGUgPSB7XG4gICAgTm9DaGFuZ2U6ICdub2NoYW5nZScsXG4gICAgVXBwZXJjYXNlOiAndXBwZXJjYXNlJyxcbiAgICBMb3dlcmNhc2U6ICdsb3dlcmNhc2UnLFxufSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIENhc2VUcmFuc2Zvcm1lclR5cGUgPSAodHlwZW9mIENhc2VUcmFuc2Zvcm1lclR5cGUpW2tleW9mIHR5cGVvZiBDYXNlVHJhbnNmb3JtZXJUeXBlXTtcbiJdfQ==
@@ -0,0 +1,205 @@
1
+ import { isAnyString, isNull, isNumber } from 'simple-bool';
2
+ import { ArdTransformer, RegExpTransformer } from './input-transformers';
3
+ export class SimpleInputModel {
4
+ constructor(inputEl, hostComp) {
5
+ this.inputEl = inputEl;
6
+ this._value = null;
7
+ this._hostComp = hostComp;
8
+ }
9
+ get value() {
10
+ return this._value;
11
+ }
12
+ set value(v) {
13
+ this._value = v;
14
+ }
15
+ get stringValue() {
16
+ return this._value ?? '';
17
+ }
18
+ set stringValue(v) {
19
+ this._value = v || null;
20
+ }
21
+ writeValue(v) {
22
+ if (!isAnyString(v) && !isNull(v)) {
23
+ //warn when using non-string/non-null value
24
+ console.warn(new Error(`Trying to set simple-input's value to ${typeof v}, expected string.`));
25
+ //normalize the value
26
+ v = v?.toString?.() ?? String(v);
27
+ }
28
+ return this._writeValue(v);
29
+ }
30
+ _writeValue(v) {
31
+ //constraints
32
+ v = this._applyLengthTransformer(v);
33
+ //update view
34
+ let oldVal = this.value;
35
+ this.value = v;
36
+ this._updateInputElement();
37
+ return oldVal !== v;
38
+ }
39
+ rewriteValueAfterHostUpdate() {
40
+ this._writeValue(this._value);
41
+ }
42
+ clear() {
43
+ this._value = null;
44
+ this._updateInputElement();
45
+ }
46
+ _updateInputElement() {
47
+ this.inputEl.value = this.stringValue;
48
+ }
49
+ get caretPos() {
50
+ return this.inputEl.selectionEnd ?? this.stringValue.length;
51
+ }
52
+ set caretPos(pos) {
53
+ this.inputEl.setSelectionRange(pos, pos);
54
+ }
55
+ //* constraints
56
+ _applyLengthTransformer(v) {
57
+ //exit if max length not specified
58
+ if (this._hostComp.maxLength == undefined)
59
+ return v;
60
+ //exit if not value
61
+ //exit if value length is less than specified max length
62
+ if (!v || v.length <= this._hostComp.maxLength)
63
+ return v;
64
+ //cut the excess off
65
+ v = v.substring(0, this._hostComp.maxLength);
66
+ this.caretPos = this._hostComp.maxLength;
67
+ return v;
68
+ }
69
+ }
70
+ export class InputModel extends SimpleInputModel {
71
+ constructor(inputEl, hostComp) {
72
+ super(inputEl, hostComp);
73
+ }
74
+ _writeValue(v) {
75
+ //transformers
76
+ if (v) {
77
+ let prev = this.stringValue;
78
+ v = this._applyAllowOrDenylistTransformer(v, prev);
79
+ prev = this.stringValue;
80
+ v = this._applyLengthTransformer(v);
81
+ }
82
+ let oldVal = this.value;
83
+ //update view
84
+ this.value = v;
85
+ this._updateInputElement();
86
+ return oldVal !== v;
87
+ }
88
+ setSelection(from, to) {
89
+ to = to ?? this.value?.length ?? Infinity;
90
+ this.inputEl.setSelectionRange(from, to);
91
+ }
92
+ //* constraints
93
+ _applyAllowOrDenylistTransformer(v, prev) {
94
+ if (!this._hostComp.charlist || !v)
95
+ return v;
96
+ let { text, caretPos } = new RegExpTransformer(this._hostComp.charlist).apply(v, prev, this.caretPos);
97
+ this.caretPos = caretPos;
98
+ return text;
99
+ }
100
+ }
101
+ export class NumberInputModel {
102
+ constructor(inputEl, hostComp) {
103
+ this.inputEl = inputEl;
104
+ //! value setters/getters
105
+ this._value = null;
106
+ this._hostComp = hostComp;
107
+ }
108
+ get value() {
109
+ return this._value;
110
+ }
111
+ set value(v) {
112
+ this._value = v;
113
+ }
114
+ //value as string
115
+ get stringValue() {
116
+ return this._value ?? '';
117
+ }
118
+ set stringValue(v) {
119
+ this._value = v || null;
120
+ }
121
+ //value as number
122
+ get numberValue() {
123
+ return (this._value == null && null) || Number(this._value);
124
+ }
125
+ set numberValue(v) {
126
+ this._value = v == null ? null : v.toString();
127
+ }
128
+ //! write value handlers
129
+ writeValue(v) {
130
+ if (!isNumber(v) && !isAnyString(v) && !isNull(v)) {
131
+ //warn when using non-string/non-null value
132
+ console.warn(new Error(`Trying to set simple-input's value to ${typeof v}, expected string, number, or null.`));
133
+ //normalize the value
134
+ v = v?.toString?.() ?? String(v);
135
+ }
136
+ v = String(v);
137
+ return this._writeValue(v);
138
+ }
139
+ _writeValue(v) {
140
+ //constraints
141
+ if (v) {
142
+ v = this._removeDecimalPlaces(v);
143
+ v = this._applyNumberConstraint(v);
144
+ v = this._applyMinMaxConstraints(v);
145
+ }
146
+ //update view
147
+ let oldVal = this.value;
148
+ this.value = v;
149
+ this._updateInputElement();
150
+ return oldVal !== v;
151
+ }
152
+ rewriteValueAfterHostUpdate() {
153
+ this._writeValue(this._value);
154
+ }
155
+ //! input element methods
156
+ _updateInputElement() {
157
+ this.inputEl.value = this.stringValue;
158
+ }
159
+ get caretPos() {
160
+ return this.inputEl.selectionEnd ?? this.stringValue.length;
161
+ }
162
+ set caretPos(pos) {
163
+ this.inputEl.setSelectionRange(pos, pos);
164
+ }
165
+ //! constraints
166
+ _removeDecimalPlaces(v) {
167
+ if (!v)
168
+ return '';
169
+ if (this._hostComp.allowFloat)
170
+ return v;
171
+ if (v.match(/[.,].+/)) {
172
+ const num = Number(v);
173
+ if (!isNaN(num))
174
+ v = Math.round(num).toString();
175
+ }
176
+ return v;
177
+ }
178
+ _applyNumberConstraint(v) {
179
+ if (!v)
180
+ return '';
181
+ if (this._hostComp.allowFloat) {
182
+ const { text, caretPos } = ArdTransformer.Float(v, this.stringValue, this.caretPos);
183
+ this.caretPos = caretPos;
184
+ return text;
185
+ }
186
+ const { text, caretPos } = ArdTransformer.Integer(v, this.stringValue, this.caretPos);
187
+ this.caretPos = caretPos;
188
+ return text;
189
+ }
190
+ _applyMinMaxConstraints(v) {
191
+ if (!v)
192
+ return '';
193
+ const numericValue = Number(v);
194
+ if (numericValue > this._hostComp.max)
195
+ return this._hostComp.max.toString();
196
+ if (numericValue < this._hostComp.min)
197
+ return this._hostComp.min.toString();
198
+ return v;
199
+ }
200
+ }
201
+ export function escapeAndCreateRegex(str, flags, negated = true) {
202
+ str = str.replace(/([\]]+)/g, '\\$1');
203
+ return new RegExp(`[${negated ? '^' : ''}${str}]`, flags);
204
+ }
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9pbnB1dC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBS3pFLE1BQU0sT0FBTyxnQkFBZ0I7SUFFekIsWUFDYyxPQUF5QixFQUNuQyxRQUE4QjtRQURwQixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQU03QixXQUFNLEdBQWtCLElBQUksQ0FBQztRQUhuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBR0QsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxDQUFnQjtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsQ0FBUztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxDQUFNO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMvQiwyQ0FBMkM7WUFDM0MsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztZQUMvRixxQkFBcUI7WUFDckIsQ0FBQyxH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TUFBTSxDQUFDLENBQUM7SUFDdEMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQW55U3RyaW5nLCBpc051bGwsIGlzTnVtYmVyIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xuaW1wb3J0IHsgQXJkVHJhbnNmb3JtZXIsIFJlZ0V4cFRyYW5zZm9ybWVyIH0gZnJvbSAnLi9pbnB1dC10cmFuc2Zvcm1lcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsZUlucHV0TW9kZWxIb3N0IHtcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XG59XG5leHBvcnQgY2xhc3MgU2ltcGxlSW5wdXRNb2RlbCB7XG4gICAgcHJvdGVjdGVkIF9ob3N0Q29tcCE6IFNpbXBsZUlucHV0TW9kZWxIb3N0O1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgaW5wdXRFbDogSFRNTElucHV0RWxlbWVudCxcbiAgICAgICAgaG9zdENvbXA6IFNpbXBsZUlucHV0TW9kZWxIb3N0XG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2hvc3RDb21wID0gaG9zdENvbXA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF92YWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHNldCB2YWx1ZSh2OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB9XG4gICAgZ2V0IHN0cmluZ1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZSA/PyAnJztcbiAgICB9XG4gICAgc2V0IHN0cmluZ1ZhbHVlKHY6IHN0cmluZykge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHYgfHwgbnVsbDtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHY6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWlzQW55U3RyaW5nKHYpICYmICFpc051bGwodikpIHtcbiAgICAgICAgICAgIC8vd2FybiB3aGVuIHVzaW5nIG5vbi1zdHJpbmcvbm9uLW51bGwgdmFsdWVcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihuZXcgRXJyb3IoYFRyeWluZyB0byBzZXQgc2ltcGxlLWlucHV0J3MgdmFsdWUgdG8gJHt0eXBlb2Ygdn0sIGV4cGVjdGVkIHN0cmluZy5gKSk7XG4gICAgICAgICAgICAvL25vcm1hbGl6ZSB0aGUgdmFsdWVcbiAgICAgICAgICAgIHYgPSB2Py50b1N0cmluZz8uKCkgPz8gU3RyaW5nKHYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl93cml0ZVZhbHVlKHYpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3dyaXRlVmFsdWUodjogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICAvL2NvbnN0cmFpbnRzXG4gICAgICAgIHYgPSB0aGlzLl9hcHBseUxlbmd0aFRyYW5zZm9ybWVyKHYpO1xuICAgICAgICAvL3VwZGF0ZSB2aWV3XG4gICAgICAgIGxldCBvbGRWYWwgPSB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlID0gdjtcbiAgICAgICAgdGhpcy5fdXBkYXRlSW5wdXRFbGVtZW50KCk7XG4gICAgICAgIHJldHVybiBvbGRWYWwgIT09IHY7XG4gICAgfVxuICAgIHJld3JpdGVWYWx1ZUFmdGVySG9zdFVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fd3JpdGVWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuICAgIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUlucHV0RWxlbWVudCgpO1xuICAgIH1cblxuICAgIF91cGRhdGVJbnB1dEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC52YWx1ZSA9IHRoaXMuc3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIGdldCBjYXJldFBvcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEVsLnNlbGVjdGlvbkVuZCA/PyB0aGlzLnN0cmluZ1ZhbHVlLmxlbmd0aDtcbiAgICB9XG4gICAgc2V0IGNhcmV0UG9zKHBvczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcyk7XG4gICAgfVxuICAgIC8vKiBjb25zdHJhaW50c1xuICAgIHByb3RlY3RlZCBfYXBwbHlMZW5ndGhUcmFuc2Zvcm1lcih2OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIC8vZXhpdCBpZiBtYXggbGVuZ3RoIG5vdCBzcGVjaWZpZWRcbiAgICAgICAgaWYgKHRoaXMuX2hvc3RDb21wLm1heExlbmd0aCA9PSB1bmRlZmluZWQpIHJldHVybiB2O1xuICAgICAgICAvL2V4aXQgaWYgbm90IHZhbHVlXG4gICAgICAgIC8vZXhpdCBpZiB2YWx1ZSBsZW5ndGggaXMgbGVzcyB0aGFuIHNwZWNpZmllZCBtYXggbGVuZ3RoXG4gICAgICAgIGlmICghdiB8fCB2Lmxlbmd0aCA8PSB0aGlzLl9ob3N0Q29tcC5tYXhMZW5ndGgpIHJldHVybiB2O1xuICAgICAgICAvL2N1dCB0aGUgZXhjZXNzIG9mZlxuICAgICAgICB2ID0gdi5zdWJzdHJpbmcoMCwgdGhpcy5faG9zdENvbXAubWF4TGVuZ3RoKTtcbiAgICAgICAgdGhpcy5jYXJldFBvcyA9IHRoaXMuX2hvc3RDb21wLm1heExlbmd0aDtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxufVxuZXhwb3J0IGludGVyZmFjZSBJbnB1dE1vZGVsSG9zdCBleHRlbmRzIFNpbXBsZUlucHV0TW9kZWxIb3N0IHtcbiAgICBjaGFybGlzdD86IFJlZ0V4cDtcbn1cbmV4cG9ydCBjbGFzcyBJbnB1dE1vZGVsIGV4dGVuZHMgU2ltcGxlSW5wdXRNb2RlbCB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF9ob3N0Q29tcCE6IElucHV0TW9kZWxIb3N0O1xuICAgIGNvbnN0cnVjdG9yKGlucHV0RWw6IEhUTUxJbnB1dEVsZW1lbnQsIGhvc3RDb21wOiBJbnB1dE1vZGVsSG9zdCkge1xuICAgICAgICBzdXBlcihpbnB1dEVsLCBob3N0Q29tcCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfd3JpdGVWYWx1ZSh2OiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIC8vdHJhbnNmb3JtZXJzXG4gICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICBsZXQgcHJldiA9IHRoaXMuc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICB2ID0gdGhpcy5fYXBwbHlBbGxvd09yRGVueWxpc3RUcmFuc2Zvcm1lcih2LCBwcmV2KTtcbiAgICAgICAgICAgIHByZXYgPSB0aGlzLnN0cmluZ1ZhbHVlO1xuICAgICAgICAgICAgdiA9IHRoaXMuX2FwcGx5TGVuZ3RoVHJhbnNmb3JtZXIodik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG9sZFZhbCA9IHRoaXMudmFsdWU7XG4gICAgICAgIC8vdXBkYXRlIHZpZXdcbiAgICAgICAgdGhpcy52YWx1ZSA9IHY7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUlucHV0RWxlbWVudCgpO1xuICAgICAgICByZXR1cm4gb2xkVmFsICE9PSB2O1xuICAgIH1cblxuICAgIHNldFNlbGVjdGlvbihmcm9tOiBudW1iZXIgfCBudWxsLCB0bzogbnVtYmVyIHwgbnVsbCk6IHZvaWQ7XG4gICAgc2V0U2VsZWN0aW9uKGZyb206IG51bWJlciB8IG51bGwsIHRvPzogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0byA9IHRvID8/IHRoaXMudmFsdWU/Lmxlbmd0aCA/PyBJbmZpbml0eTtcbiAgICAgICAgdGhpcy5pbnB1dEVsLnNldFNlbGVjdGlvblJhbmdlKGZyb20sIHRvKTtcbiAgICB9XG4gICAgLy8qIGNvbnN0cmFpbnRzXG4gICAgcHJvdGVjdGVkIF9hcHBseUFsbG93T3JEZW55bGlzdFRyYW5zZm9ybWVyKHY6IHN0cmluZywgcHJldjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLl9ob3N0Q29tcC5jaGFybGlzdCB8fCAhdikgcmV0dXJuIHY7XG4gICAgICAgIGxldCB7IHRleHQsIGNhcmV0UG9zIH0gPSBuZXcgUmVnRXhwVHJhbnNmb3JtZXIodGhpcy5faG9zdENvbXAuY2hhcmxpc3QpLmFwcGx5KHYsIHByZXYsIHRoaXMuY2FyZXRQb3MpO1xuICAgICAgICB0aGlzLmNhcmV0UG9zID0gY2FyZXRQb3M7XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBOdW1iZXJJbnB1dE1vZGVsSG9zdCB7XG4gICAgbWF4OiBudW1iZXI7XG4gICAgbWluOiBudW1iZXI7XG4gICAgYWxsb3dGbG9hdDogYm9vbGVhbjtcbn1cbmV4cG9ydCBjbGFzcyBOdW1iZXJJbnB1dE1vZGVsIHtcbiAgICBwcm90ZWN0ZWQgX2hvc3RDb21wITogTnVtYmVySW5wdXRNb2RlbEhvc3Q7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBpbnB1dEVsOiBIVE1MSW5wdXRFbGVtZW50LFxuICAgICAgICBob3N0Q29tcDogTnVtYmVySW5wdXRNb2RlbEhvc3RcbiAgICApIHtcbiAgICAgICAgdGhpcy5faG9zdENvbXAgPSBob3N0Q29tcDtcbiAgICB9XG5cbiAgICAvLyEgdmFsdWUgc2V0dGVycy9nZXR0ZXJzXG4gICAgcHJvdGVjdGVkIF92YWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuICAgIHNldCB2YWx1ZSh2OiBzdHJpbmcgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICB9XG4gICAgLy92YWx1ZSBhcyBzdHJpbmdcbiAgICBnZXQgc3RyaW5nVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8/ICcnO1xuICAgIH1cbiAgICBzZXQgc3RyaW5nVmFsdWUodjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdiB8fCBudWxsO1xuICAgIH1cbiAgICAvL3ZhbHVlIGFzIG51bWJlclxuICAgIGdldCBudW1iZXJWYWx1ZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl92YWx1ZSA9PSBudWxsICYmIG51bGwpIHx8IE51bWJlcih0aGlzLl92YWx1ZSk7XG4gICAgfVxuICAgIHNldCBudW1iZXJWYWx1ZSh2OiBudW1iZXIgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdiA9PSBudWxsID8gbnVsbCA6IHYudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvLyEgd3JpdGUgdmFsdWUgaGFuZGxlcnNcbiAgICB3cml0ZVZhbHVlKHY6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWlzTnVtYmVyKHYpICYmICFpc0FueVN0cmluZyh2KSAmJiAhaXNOdWxsKHYpKSB7XG4gICAgICAgICAgICAvL3dhcm4gd2hlbiB1c2luZyBub24tc3RyaW5nL25vbi1udWxsIHZhbHVlXG4gICAgICAgICAgICBjb25zb2xlLndhcm4obmV3IEVycm9yKGBUcnlpbmcgdG8gc2V0IHNpbXBsZS1pbnB1dCdzIHZhbHVlIHRvICR7dHlwZW9mIHZ9LCBleHBlY3RlZCBzdHJpbmcsIG51bWJlciwgb3IgbnVsbC5gKSk7XG4gICAgICAgICAgICAvL25vcm1hbGl6ZSB0aGUgdmFsdWVcbiAgICAgICAgICAgIHYgPSB2Py50b1N0cmluZz8uKCkgPz8gU3RyaW5nKHYpO1xuICAgICAgICB9XG4gICAgICAgIHYgPSBTdHJpbmcodik7XG4gICAgICAgIHJldHVybiB0aGlzLl93cml0ZVZhbHVlKHYpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX3dyaXRlVmFsdWUodjogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICAvL2NvbnN0cmFpbnRzXG4gICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICB2ID0gdGhpcy5fcmVtb3ZlRGVjaW1hbFBsYWNlcyh2KTtcbiAgICAgICAgICAgIHYgPSB0aGlzLl9hcHBseU51bWJlckNvbnN0cmFpbnQodik7XG4gICAgICAgICAgICB2ID0gdGhpcy5fYXBwbHlNaW5NYXhDb25zdHJhaW50cyh2KTtcbiAgICAgICAgfVxuICAgICAgICAvL3VwZGF0ZSB2aWV3XG4gICAgICAgIGxldCBvbGRWYWwgPSB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlID0gdjtcbiAgICAgICAgdGhpcy5fdXBkYXRlSW5wdXRFbGVtZW50KCk7XG4gICAgICAgIHJldHVybiBvbGRWYWwgIT09IHY7XG4gICAgfVxuICAgIHJld3JpdGVWYWx1ZUFmdGVySG9zdFVwZGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fd3JpdGVWYWx1ZSh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8hIGlucHV0IGVsZW1lbnQgbWV0aG9kc1xuICAgIF91cGRhdGVJbnB1dEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC52YWx1ZSA9IHRoaXMuc3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIGdldCBjYXJldFBvcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEVsLnNlbGVjdGlvbkVuZCA/PyB0aGlzLnN0cmluZ1ZhbHVlLmxlbmd0aDtcbiAgICB9XG4gICAgc2V0IGNhcmV0UG9zKHBvczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5zZXRTZWxlY3Rpb25SYW5nZShwb3MsIHBvcyk7XG4gICAgfVxuXG4gICAgLy8hIGNvbnN0cmFpbnRzXG4gICAgcHJpdmF0ZSBfcmVtb3ZlRGVjaW1hbFBsYWNlcyh2OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXYpIHJldHVybiAnJztcbiAgICAgICAgaWYgKHRoaXMuX2hvc3RDb21wLmFsbG93RmxvYXQpIHJldHVybiB2O1xuXG4gICAgICAgIGlmICh2Lm1hdGNoKC9bLixdLisvKSkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHYpO1xuICAgICAgICAgICAgaWYgKCFpc05hTihudW0pKSB2ID0gTWF0aC5yb3VuZChudW0pLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuICAgIHByaXZhdGUgX2FwcGx5TnVtYmVyQ29uc3RyYWludCh2OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXYpIHJldHVybiAnJztcblxuICAgICAgICBpZiAodGhpcy5faG9zdENvbXAuYWxsb3dGbG9hdCkge1xuICAgICAgICAgICAgY29uc3QgeyB0ZXh0LCBjYXJldFBvcyB9ID0gQXJkVHJhbnNmb3JtZXIuRmxvYXQodiwgdGhpcy5zdHJpbmdWYWx1ZSwgdGhpcy5jYXJldFBvcyk7XG4gICAgICAgICAgICB0aGlzLmNhcmV0UG9zID0gY2FyZXRQb3M7XG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHRleHQsIGNhcmV0UG9zIH0gPSBBcmRUcmFuc2Zvcm1lci5JbnRlZ2VyKHYsIHRoaXMuc3RyaW5nVmFsdWUsIHRoaXMuY2FyZXRQb3MpO1xuICAgICAgICB0aGlzLmNhcmV0UG9zID0gY2FyZXRQb3M7XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICBwcml2YXRlIF9hcHBseU1pbk1heENvbnN0cmFpbnRzKHY6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdikgcmV0dXJuICcnO1xuXG4gICAgICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IE51bWJlcih2KTtcbiAgICAgICAgaWYgKG51bWVyaWNWYWx1ZSA+IHRoaXMuX2hvc3RDb21wLm1heCkgcmV0dXJuIHRoaXMuX2hvc3RDb21wLm1heC50b1N0cmluZygpO1xuICAgICAgICBpZiAobnVtZXJpY1ZhbHVlIDwgdGhpcy5faG9zdENvbXAubWluKSByZXR1cm4gdGhpcy5faG9zdENvbXAubWluLnRvU3RyaW5nKCk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUFuZENyZWF0ZVJlZ2V4KHN0cjogc3RyaW5nLCBmbGFncz86IHN0cmluZywgbmVnYXRlZDogYm9vbGVhbiA9IHRydWUpOiBSZWdFeHAge1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8oW1xcXV0rKS9nLCAnXFxcXCQxJyk7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYFske25lZ2F0ZWQgPyAnXicgOiAnJ30ke3N0cn1dYCwgZmxhZ3MpO1xufVxuIl19
@@ -0,0 +1,289 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation, ContentChild, TemplateRef, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { coerceBooleanProperty, coerceNumberProperty } from '@ardium-ui/devkit';
4
+ import { ButtonVariant, ButtonAppearance } from '../../buttons/general-button.types';
5
+ import { OneAxisAlignment } from '../../types/alignment.types';
6
+ import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
7
+ import { _NgModelComponentBase } from '../../_internal/ngmodel-component';
8
+ import { NumberInputModel } from '../input-utils';
9
+ import { isDefined, isFloat } from 'simple-bool';
10
+ import { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';
11
+ import { roundToPrecision } from 'more-rounding';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/common";
14
+ import * as i2 from "@ardium-ui/devkit";
15
+ import * as i3 from "../../buttons/button/button.component";
16
+ export class ArdiumNumberInputComponent extends _NgModelComponentBase {
17
+ constructor() {
18
+ super(...arguments);
19
+ //! placeholder
20
+ this.placeholder = '';
21
+ //! appearance
22
+ this.appearance = FormElementAppearance.Outlined;
23
+ this.variant = FormElementVariant.Rounded;
24
+ this.alignText = OneAxisAlignment.Middle;
25
+ this._compact = false;
26
+ //! other inputs
27
+ this.inputAttrs = {};
28
+ //! value two-way binding
29
+ this._valueBeforeInit = '0';
30
+ this.valueChange = new EventEmitter();
31
+ //* event emitters
32
+ this.inputEvent = new EventEmitter();
33
+ this.changeEvent = new EventEmitter();
34
+ this.clearEvent = new EventEmitter();
35
+ this.quickChangeEvent = new EventEmitter();
36
+ //! min/max and number type
37
+ this._min = 0;
38
+ this._max = 999;
39
+ this._allowFloat = undefined;
40
+ //! incerement/decrement buttons
41
+ this._allowQuickChange = true;
42
+ this._stepSize = 1;
43
+ }
44
+ ngOnInit() {
45
+ this.inputModel = new NumberInputModel(this.textInputEl.nativeElement, this);
46
+ this._setInputAttributes();
47
+ //set the value
48
+ if (this._valueBeforeInit) {
49
+ this.writeValue(this._valueBeforeInit);
50
+ delete this._valueBeforeInit;
51
+ }
52
+ }
53
+ get shouldDisplayPlaceholder() {
54
+ return Boolean(this.placeholder) && !this.inputModel.stringValue;
55
+ }
56
+ get compact() {
57
+ return this._compact;
58
+ }
59
+ set compact(v) {
60
+ this._compact = coerceBooleanProperty(v);
61
+ }
62
+ get ngClasses() {
63
+ return [
64
+ `ard-appearance-${this.appearance}`,
65
+ `ard-variant-${this.variant}`,
66
+ `ard-text-align-${this.alignText}`,
67
+ `ard-quick-change-${this.allowQuickChange}`,
68
+ this.compact ? 'ard-compact' : '',
69
+ ].join(' ');
70
+ }
71
+ get buttonVariant() {
72
+ if (this.variant == FormElementVariant.Rounded)
73
+ return ButtonVariant.Rounded;
74
+ if (this.variant == FormElementVariant.Pill)
75
+ return ButtonVariant.Pill;
76
+ if (this.variant == FormElementVariant.Sharp)
77
+ return ButtonVariant.Sharp;
78
+ return ButtonVariant.Rounded;
79
+ }
80
+ get buttonAppearance() {
81
+ if (this.appearance == FormElementAppearance.Outlined && this.variant != FormElementVariant.Pill)
82
+ return ButtonAppearance.Outlined;
83
+ return ButtonAppearance.Transparent;
84
+ }
85
+ //! control value accessor's write value implementation
86
+ writeValue(v) {
87
+ this.inputModel.writeValue(v);
88
+ }
89
+ set value(v) {
90
+ if (typeof v == 'number')
91
+ v = v.toString();
92
+ if (!this.inputModel) {
93
+ this._valueBeforeInit = v;
94
+ return;
95
+ }
96
+ this.writeValue(v);
97
+ }
98
+ get min() {
99
+ return this._min;
100
+ }
101
+ set min(v) {
102
+ this._min = coerceNumberProperty(v);
103
+ }
104
+ get max() {
105
+ return this._max;
106
+ }
107
+ set max(v) {
108
+ this._max = coerceNumberProperty(v);
109
+ }
110
+ get allowFloat() {
111
+ return this._allowFloat ?? isFloat(this._stepSize);
112
+ }
113
+ set allowFloat(v) {
114
+ this._allowFloat = coerceBooleanProperty(v);
115
+ }
116
+ get allowQuickChange() {
117
+ return this._allowQuickChange;
118
+ }
119
+ set allowQuickChange(v) {
120
+ this._allowQuickChange = coerceBooleanProperty(v);
121
+ }
122
+ get stepSize() {
123
+ return this._stepSize;
124
+ }
125
+ set stepSize(v) {
126
+ this._stepSize = coerceNumberProperty(v);
127
+ }
128
+ onQuickChangeButtonClick(direction, event) {
129
+ let num = this.inputModel.numberValue;
130
+ if (!num)
131
+ num = 0;
132
+ if (direction == 1 && num >= this.max)
133
+ return;
134
+ if (direction == -1 && num <= this.min)
135
+ return;
136
+ if (event)
137
+ event.stopPropagation();
138
+ const newValue = num + this.stepSize * direction;
139
+ //round to 9 decimal places to avoid floating point arithmetic errors
140
+ //9 is an arbitrary number that just works well. ¯\_(ツ)_/¯
141
+ const newValuePrecise = roundToPrecision(newValue, 9);
142
+ this.writeValue(newValuePrecise);
143
+ this.quickChangeEvent.next({ direction, value: newValuePrecise });
144
+ this._emitChange();
145
+ this._checkButtonAvailability();
146
+ }
147
+ _checkButtonAvailability() {
148
+ if (!this.canDecrement() || !this.canIncrement())
149
+ this.focus();
150
+ }
151
+ canIncrement() {
152
+ const num = this.inputModel.numberValue;
153
+ return !isDefined(num) || num < this.max;
154
+ }
155
+ canDecrement() {
156
+ const num = this.inputModel.numberValue;
157
+ return !isDefined(num) || num > this.min;
158
+ }
159
+ //! event handlers
160
+ onInput(newVal) {
161
+ let valueHasChanged = this.inputModel.writeValue(newVal);
162
+ if (!valueHasChanged)
163
+ return;
164
+ this._emitInput();
165
+ }
166
+ _emitInput() {
167
+ this.inputEvent.emit(this.inputModel.numberValue);
168
+ this._emitChange();
169
+ }
170
+ //focus, blur, change
171
+ onFocusMaster(event) {
172
+ this.onFocus(event);
173
+ }
174
+ onBlurMaster(event) {
175
+ this.onBlur(event);
176
+ }
177
+ //change
178
+ onChange(event) {
179
+ event.stopPropagation();
180
+ this._emitChange();
181
+ }
182
+ _emitChange() {
183
+ const v = this.inputModel.numberValue;
184
+ this._onChangeRegistered?.(v);
185
+ this.changeEvent.emit(v);
186
+ this.valueChange.emit(this.inputModel.numberValue);
187
+ }
188
+ //smart focus
189
+ onMouseup(event) {
190
+ const selection = window.getSelection();
191
+ if (selection && selection.type === 'Range')
192
+ return;
193
+ this.focus();
194
+ }
195
+ // copy
196
+ onCopy(event) {
197
+ if (this.value &&
198
+ //does the selection cover the entire input
199
+ ((this.textInputEl.nativeElement.selectionStart == 0 &&
200
+ this.textInputEl.nativeElement.selectionEnd == this.textInputEl.nativeElement.value.length) ||
201
+ //or is zero-wide
202
+ this.textInputEl.nativeElement.selectionStart == this.textInputEl.nativeElement.selectionEnd)) {
203
+ event.clipboardData?.setData('text/plain', String(this.value));
204
+ event.preventDefault();
205
+ }
206
+ }
207
+ //! helpers
208
+ _setInputAttributes() {
209
+ const input = this.textInputEl.nativeElement;
210
+ const attributes = {
211
+ type: 'text',
212
+ autocorrect: 'off',
213
+ autocapitalize: 'off',
214
+ autocomplete: 'off',
215
+ tabindex: String(this.tabIndex),
216
+ ...this.inputAttrs,
217
+ };
218
+ for (const key of Object.keys(attributes)) {
219
+ input.setAttribute(key, String(attributes[key]));
220
+ }
221
+ }
222
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
223
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: ArdiumNumberInputComponent, selector: "ard-number-input", inputs: { inputId: "inputId", placeholder: "placeholder", appearance: "appearance", variant: "variant", alignText: "alignText", compact: "compact", inputAttrs: "inputAttrs", value: "value", min: "min", max: "max", allowFloat: "allowFloat", allowQuickChange: "allowQuickChange", stepSize: "stepSize" }, outputs: { valueChange: "valueChange", inputEvent: "input", changeEvent: "change", clearEvent: "clear", quickChangeEvent: "quickChange" }, providers: [
224
+ {
225
+ provide: NG_VALUE_ACCESSOR,
226
+ useExisting: forwardRef(() => ArdiumNumberInputComponent),
227
+ multi: true,
228
+ },
229
+ ], queries: [{ propertyName: "placeholderTemplate", first: true, predicate: ArdNumberInputPlaceholderTemplateDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "textInputEl", first: true, predicate: ["textInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup($event)\"\r\n>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >-</ard-button>\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n\r\n <input #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n >\r\n </div>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >+</ard-button>\r\n</div>", styles: [".ard-number-input{display:flex;max-width:100%}.ard-number-input .ard-input-container{position:relative}.ard-number-input .ard-placeholder{position:absolute;left:0;right:0;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-middle input,.ard-text-align-middle .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-quick-change-button{-webkit-user-select:none;user-select:none;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.HoldDirective, selector: "[ardHold]", inputs: ["disabled", "readonly", "ardHoldDelay", "ardHoldRepeat", "ardHoldSpaceKey", "ardHoldEnterKey"], outputs: ["ardHold"] }, { kind: "component", type: i3.ArdiumButtonComponent, selector: "ard-button", inputs: ["variant", "alignIcon", "vertical", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
230
+ }
231
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputComponent, decorators: [{
232
+ type: Component,
233
+ args: [{ selector: 'ard-number-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
234
+ {
235
+ provide: NG_VALUE_ACCESSOR,
236
+ useExisting: forwardRef(() => ArdiumNumberInputComponent),
237
+ multi: true,
238
+ },
239
+ ], template: "<div class=\"ard-number-input\"\r\n [ngClass]=\"ngClasses\"\r\n [class.ard-has-value]=\"value\"\r\n (mousedown)=\"$event.preventDefault()\"\r\n (mouseup)=\"onMouseup($event)\"\r\n>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button decrement\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canDecrement()\"\r\n [tabIndex]=\"!canDecrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(-1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(-1)\"\r\n ardHoldSpaceKey\r\n >-</ard-button>\r\n <div class=\"ard-input-container\">\r\n <ng-container *ngIf=\"shouldDisplayPlaceholder\">\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate || defaultPlaceholderTemplate\"></ng-template>\r\n </ng-container>\r\n\r\n <input #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId\"\r\n [attr.tabindex]=\"tabIndex\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n >\r\n </div>\r\n <ard-button *ngIf=\"allowQuickChange\"\r\n class=\"ard-quick-change-button increment\"\r\n [variant]=\"buttonVariant\"\r\n [appearance]=\"buttonAppearance\"\r\n color=\"none\"\r\n [disabled]=\"!canIncrement()\"\r\n [tabIndex]=\"!canIncrement() ? -1 : tabIndex\"\r\n (click)=\"onQuickChangeButtonClick(1, $event)\"\r\n (ardHold)=\"onQuickChangeButtonClick(1)\"\r\n ardHoldSpaceKey\r\n >+</ard-button>\r\n</div>", styles: [".ard-number-input{display:flex;max-width:100%}.ard-number-input .ard-input-container{position:relative}.ard-number-input .ard-placeholder{position:absolute;left:0;right:0;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-middle input,.ard-text-align-middle .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-quick-change-button{-webkit-user-select:none;user-select:none;height:100%}\n"] }]
240
+ }], propDecorators: { textInputEl: [{
241
+ type: ViewChild,
242
+ args: ['textInput', { static: true }]
243
+ }], inputId: [{
244
+ type: Input
245
+ }], placeholder: [{
246
+ type: Input
247
+ }], placeholderTemplate: [{
248
+ type: ContentChild,
249
+ args: [ArdNumberInputPlaceholderTemplateDirective, {
250
+ read: TemplateRef,
251
+ }]
252
+ }], appearance: [{
253
+ type: Input
254
+ }], variant: [{
255
+ type: Input
256
+ }], alignText: [{
257
+ type: Input
258
+ }], compact: [{
259
+ type: Input
260
+ }], inputAttrs: [{
261
+ type: Input
262
+ }], value: [{
263
+ type: Input
264
+ }], valueChange: [{
265
+ type: Output
266
+ }], inputEvent: [{
267
+ type: Output,
268
+ args: ['input']
269
+ }], changeEvent: [{
270
+ type: Output,
271
+ args: ['change']
272
+ }], clearEvent: [{
273
+ type: Output,
274
+ args: ['clear']
275
+ }], quickChangeEvent: [{
276
+ type: Output,
277
+ args: ['quickChange']
278
+ }], min: [{
279
+ type: Input
280
+ }], max: [{
281
+ type: Input
282
+ }], allowFloat: [{
283
+ type: Input
284
+ }], allowQuickChange: [{
285
+ type: Input
286
+ }], stepSize: [{
287
+ type: Input
288
+ }] } });
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaW5wdXRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixZQUFZLEVBQ1osV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7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QUFDLEdBQUcsRUFBRSwyQkFBMkIsQ0FBQzs0QkFDekQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7OEJBS0QsV0FBVztzQkFEVixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBYS9CLE9BQU87c0JBQWYsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtOLG1CQUFtQjtzQkFIbEIsWUFBWTt1QkFBQywwQ0FBMEMsRUFBRTt3QkFDdEQsSUFBSSxFQUFFLFdBQVc7cUJBQ3BCO2dCQVFRLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUYsT0FBTztzQkFEVixLQUFLO2dCQThCRyxVQUFVO3NCQUFsQixLQUFLO2dCQVVGLEtBQUs7c0JBRFIsS0FBSztnQkFTSSxXQUFXO3NCQUFwQixNQUFNO2dCQUdVLFVBQVU7c0JBQTFCLE1BQU07dUJBQUMsT0FBTztnQkFDRyxXQUFXO3NCQUE1QixNQUFNO3VCQUFDLFFBQVE7Z0JBQ0MsVUFBVTtzQkFBMUIsTUFBTTt1QkFBQyxPQUFPO2dCQUNRLGdCQUFnQjtzQkFBdEMsTUFBTTt1QkFBQyxhQUFhO2dCQVFqQixHQUFHO3NCQUROLEtBQUs7Z0JBVUYsR0FBRztzQkFETixLQUFLO2dCQVVGLFVBQVU7c0JBRGIsS0FBSztnQkFXRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IEJ1dHRvblZhcmlhbnQsIEJ1dHRvbkFwcGVhcmFuY2UgfSBmcm9tICcuLi8uLi9idXR0b25zL2dlbmVyYWwtYnV0dG9uLnR5cGVzJztcbmltcG9ydCB7IE9uZUF4aXNBbGlnbm1lbnQgfSBmcm9tICcuLi8uLi90eXBlcy9hbGlnbm1lbnQudHlwZXMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcbmltcG9ydCB7IF9OZ01vZGVsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uL19pbnRlcm5hbC9uZ21vZGVsLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBOdW1iZXJJbnB1dE1vZGVsLCBOdW1iZXJJbnB1dE1vZGVsSG9zdCB9IGZyb20gJy4uL2lucHV0LXV0aWxzJztcbmltcG9ydCB7IGlzRGVmaW5lZCwgaXNGbG9hdCB9IGZyb20gJ3NpbXBsZS1ib29sJztcbmltcG9ydCB7IEFyZE51bWJlcklucHV0UGxhY2Vob2xkZXJUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vbnVtYmVyLWlucHV0LmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgcm91bmRUb1ByZWNpc2lvbiB9IGZyb20gJ21vcmUtcm91bmRpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FyZC1udW1iZXItaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL251bWJlci1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtTnVtYmVySW5wdXRDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtTnVtYmVySW5wdXRDb21wb25lbnQgZXh0ZW5kcyBfTmdNb2RlbENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTnVtYmVySW5wdXRNb2RlbEhvc3QsIE9uSW5pdCB7XG4gICAgLy8hIGlucHV0IHZpZXdcbiAgICBAVmlld0NoaWxkKCd0ZXh0SW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRleHRJbnB1dEVsITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBwcm90ZWN0ZWQgaW5wdXRNb2RlbCE6IE51bWJlcklucHV0TW9kZWw7XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRNb2RlbCA9IG5ldyBOdW1iZXJJbnB1dE1vZGVsKHRoaXMudGV4dElucHV0RWwubmF0aXZlRWxlbWVudCwgdGhpcyk7XG4gICAgICAgIHRoaXMuX3NldElucHV0QXR0cmlidXRlcygpO1xuICAgICAgICAvL3NldCB0aGUgdmFsdWVcbiAgICAgICAgaWYgKHRoaXMuX3ZhbHVlQmVmb3JlSW5pdCkge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuX3ZhbHVlQmVmb3JlSW5pdCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5fdmFsdWVCZWZvcmVJbml0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8vISBwbGFjZWhvbGRlclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcblxuICAgIEBDb250ZW50Q2hpbGQoQXJkTnVtYmVySW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlLCB7XG4gICAgICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIH0pXG4gICAgcGxhY2Vob2xkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBnZXQgc2hvdWxkRGlzcGxheVBsYWNlaG9sZGVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBsYWNlaG9sZGVyKSAmJiAhdGhpcy5pbnB1dE1vZGVsLnN0cmluZ1ZhbHVlO1xuICAgIH1cblxuICAgIC8vISBhcHBlYXJhbmNlXG4gICAgQElucHV0KCkgYXBwZWFyYW5jZTogRm9ybUVsZW1lbnRBcHBlYXJhbmNlID0gRm9ybUVsZW1lbnRBcHBlYXJhbmNlLk91dGxpbmVkO1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6IEZvcm1FbGVtZW50VmFyaWFudCA9IEZvcm1FbGVtZW50VmFyaWFudC5Sb3VuZGVkO1xuICAgIEBJbnB1dCgpIGFsaWduVGV4dDogT25lQXhpc0FsaWdubWVudCA9IE9uZUF4aXNBbGlnbm1lbnQuTWlkZGxlO1xuXG4gICAgcHJpdmF0ZSBfY29tcGFjdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNvbXBhY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wYWN0O1xuICAgIH1cbiAgICBzZXQgY29tcGFjdCh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fY29tcGFjdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgICB9XG5cbiAgICBnZXQgbmdDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBgYXJkLWFwcGVhcmFuY2UtJHt0aGlzLmFwcGVhcmFuY2V9YCxcbiAgICAgICAgICAgIGBhcmQtdmFyaWFudC0ke3RoaXMudmFyaWFudH1gLFxuICAgICAgICAgICAgYGFyZC10ZXh0LWFsaWduLSR7dGhpcy5hbGlnblRleHR9YCxcbiAgICAgICAgICAgIGBhcmQtcXVpY2stY2hhbmdlLSR7dGhpcy5hbGxvd1F1aWNrQ2hhbmdlfWAsXG4gICAgICAgICAgICB0aGlzLmNvbXBhY3QgPyAnYXJkLWNvbXBhY3QnIDogJycsXG4gICAgICAgIF0uam9pbignICcpO1xuICAgIH1cblxuICAgIGdldCBidXR0b25WYXJpYW50KCk6IEJ1dHRvblZhcmlhbnQge1xuICAgICAgICBpZiAodGhpcy52YXJpYW50ID09IEZvcm1FbGVtZW50VmFyaWFudC5Sb3VuZGVkKSByZXR1cm4gQnV0dG9uVmFyaWFudC5Sb3VuZGVkO1xuICAgICAgICBpZiAodGhpcy52YXJpYW50ID09IEZvcm1FbGVtZW50VmFyaWFudC5QaWxsKSByZXR1cm4gQnV0dG9uVmFyaWFudC5QaWxsO1xuICAgICAgICBpZiAodGhpcy52YXJpYW50ID09IEZvcm1FbGVtZW50VmFyaWFudC5TaGFycCkgcmV0dXJuIEJ1dHRvblZhcmlhbnQuU2hhcnA7XG4gICAgICAgIHJldHVybiBCdXR0b25WYXJpYW50LlJvdW5kZWQ7XG4gICAgfVxuICAgIGdldCBidXR0b25BcHBlYXJhbmNlKCk6IEJ1dHRvbkFwcGVhcmFuY2Uge1xuICAgICAgICBpZiAodGhpcy5hcHBlYXJhbmNlID09IEZvcm1FbGVtZW50QXBwZWFyYW5jZS5PdXRsaW5lZCAmJiB0aGlzLnZhcmlhbnQgIT0gRm9ybUVsZW1lbnRWYXJpYW50LlBpbGwpIHJldHVybiBCdXR0b25BcHBlYXJhbmNlLk91dGxpbmVkO1xuICAgICAgICByZXR1cm4gQnV0dG9uQXBwZWFyYW5jZS5UcmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAvLyEgb3RoZXIgaW5wdXRzXG4gICAgQElucHV0KCkgaW5wdXRBdHRyczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gICAgLy8hIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3IncyB3cml0ZSB2YWx1ZSBpbXBsZW1lbnRhdGlvblxuICAgIHdyaXRlVmFsdWUodjogYW55KSB7XG4gICAgICAgIHRoaXMuaW5wdXRNb2RlbC53cml0ZVZhbHVlKHYpO1xuICAgIH1cblxuICAgIC8vISB2YWx1ZSB0d28td2F5IGJpbmRpbmdcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlQmVmb3JlSW5pdD86IHN0cmluZyB8IG51bGwgPSAnMCc7XG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICBpZiAodHlwZW9mIHYgPT0gJ251bWJlcicpIHYgPSB2LnRvU3RyaW5nKCk7XG4gICAgICAgIGlmICghdGhpcy5pbnB1dE1vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZUJlZm9yZUluaXQgPSB2O1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcbiAgICB9XG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuXG4gICAgLy8qIGV2ZW50IGVtaXR0ZXJzXG4gICAgQE91dHB1dCgnaW5wdXQnKSBpbnB1dEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuICAgIEBPdXRwdXQoJ2NoYW5nZScpIGNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuICAgIEBPdXRwdXQoJ2NsZWFyJykgY2xlYXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcbiAgICBAT3V0cHV0KCdxdWlja0NoYW5nZScpIHF1aWNrQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgZGlyZWN0aW9uOiAxIHwgLTE7XG4gICAgICAgIHZhbHVlOiBudW1iZXI7XG4gICAgfT4oKTtcblxuICAgIC8vISBtaW4vbWF4IGFuZCBudW1iZXIgdHlwZVxuICAgIHByaXZhdGUgX21pbjogbnVtYmVyID0gMDtcbiAgICBASW5wdXQoKVxuICAgIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgICB9XG4gICAgc2V0IG1pbih2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fbWluID0gY29lcmNlTnVtYmVyUHJvcGVydHkodik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbWF4OiBudW1iZXIgPSA5OTk7XG4gICAgQElucHV0KClcbiAgICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXg7XG4gICAgfVxuICAgIHNldCBtYXgodjogYW55KSB7XG4gICAgICAgIHRoaXMuX21heCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHYpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FsbG93RmxvYXQ/OiBib29sZWFuID0gdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFsbG93RmxvYXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxvd0Zsb2F0ID8/IGlzRmxvYXQodGhpcy5fc3RlcFNpemUpO1xuICAgIH1cbiAgICBzZXQgYWxsb3dGbG9hdCh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fYWxsb3dGbG9hdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgICB9XG5cbiAgICAvLyEgaW5jZXJlbWVudC9kZWNyZW1lbnQgYnV0dG9uc1xuICAgIHByaXZhdGUgX2FsbG93UXVpY2tDaGFuZ2U6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFsbG93UXVpY2tDaGFuZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxvd1F1aWNrQ2hhbmdlO1xuICAgIH1cbiAgICBzZXQgYWxsb3dRdWlja0NoYW5nZSh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fYWxsb3dRdWlja0NoYW5nZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdGVwU2l6ZTogbnVtYmVyID0gMTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBzdGVwU2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RlcFNpemU7XG4gICAgfVxuICAgIHNldCBzdGVwU2l6ZSh2OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fc3RlcFNpemUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2KTtcbiAgICB9XG5cbiAgICBvblF1aWNrQ2hhbmdlQnV0dG9uQ2xpY2soZGlyZWN0aW9uOiAxIHwgLTEsIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgbnVtID0gdGhpcy5pbnB1dE1vZGVsLm51bWJlclZhbHVlO1xuICAgICAgICBpZiAoIW51bSkgbnVtID0gMDtcblxuICAgICAgICBpZiAoZGlyZWN0aW9uID09IDEgJiYgbnVtID49IHRoaXMubWF4KSByZXR1cm47XG4gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gLTEgJiYgbnVtIDw9IHRoaXMubWluKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IG51bSArIHRoaXMuc3RlcFNpemUgKiBkaXJlY3Rpb247XG4gICAgICAgIC8vcm91bmQgdG8gOSBkZWNpbWFsIHBsYWNlcyB0byBhdm9pZCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGVycm9yc1xuICAgICAgICAvLzkgaXMgYW4gYXJiaXRyYXJ5IG51bWJlciB0aGF0IGp1c3Qgd29ya3Mgd2VsbC4gwq9cXF8o44OEKV8vwq9cbiAgICAgICAgY29uc3QgbmV3VmFsdWVQcmVjaXNlID0gcm91bmRUb1ByZWNpc2lvbihuZXdWYWx1ZSwgOSk7XG5cbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlUHJlY2lzZSk7XG4gICAgICAgIHRoaXMucXVpY2tDaGFuZ2VFdmVudC5uZXh0KHsgZGlyZWN0aW9uLCB2YWx1ZTogbmV3VmFsdWVQcmVjaXNlIH0pO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG5cbiAgICAgICAgdGhpcy5fY2hlY2tCdXR0b25BdmFpbGFiaWxpdHkoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hlY2tCdXR0b25BdmFpbGFiaWxpdHkoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jYW5EZWNyZW1lbnQoKSB8fCAhdGhpcy5jYW5JbmNyZW1lbnQoKSkgdGhpcy5mb2N1cygpO1xuICAgIH1cblxuICAgIGNhbkluY3JlbWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbnVtID0gdGhpcy5pbnB1dE1vZGVsLm51bWJlclZhbHVlO1xuICAgICAgICByZXR1cm4gIWlzRGVmaW5lZChudW0pIHx8IG51bSA8IHRoaXMubWF4O1xuICAgIH1cbiAgICBjYW5EZWNyZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG51bSA9IHRoaXMuaW5wdXRNb2RlbC5udW1iZXJWYWx1ZTtcbiAgICAgICAgcmV0dXJuICFpc0RlZmluZWQobnVtKSB8fCBudW0gPiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICAvLyEgZXZlbnQgaGFuZGxlcnNcbiAgICBvbklucHV0KG5ld1ZhbDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGxldCB2YWx1ZUhhc0NoYW5nZWQgPSB0aGlzLmlucHV0TW9kZWwud3JpdGVWYWx1ZShuZXdWYWwpO1xuICAgICAgICBpZiAoIXZhbHVlSGFzQ2hhbmdlZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLl9lbWl0SW5wdXQoKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9lbWl0SW5wdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXRFdmVudC5lbWl0KHRoaXMuaW5wdXRNb2RlbC5udW1iZXJWYWx1ZSk7XG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICAvL2ZvY3VzLCBibHVyLCBjaGFuZ2VcbiAgICBvbkZvY3VzTWFzdGVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Gb2N1cyhldmVudCk7XG4gICAgfVxuICAgIG9uQmx1ck1hc3RlcihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQmx1cihldmVudCk7XG4gICAgfVxuICAgIC8vY2hhbmdlXG4gICAgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLl9lbWl0Q2hhbmdlKCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuaW5wdXRNb2RlbC5udW1iZXJWYWx1ZTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VSZWdpc3RlcmVkPy4odik7XG4gICAgICAgIHRoaXMuY2hhbmdlRXZlbnQuZW1pdCh2KTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMuaW5wdXRNb2RlbC5udW1iZXJWYWx1ZSk7XG4gICAgfVxuXG4gICAgLy9zbWFydCBmb2N1c1xuICAgIG9uTW91c2V1cChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnR5cGUgPT09ICdSYW5nZScpIHJldHVybjtcblxuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLy8gY29weVxuICAgIG9uQ29weShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy52YWx1ZSAmJlxuICAgICAgICAgICAgLy9kb2VzIHRoZSBzZWxlY3Rpb24gY292ZXIgdGhlIGVudGlyZSBpbnB1dFxuICAgICAgICAgICAgKCh0aGlzLnRleHRJbnB1dEVsLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT0gMCAmJlxuICAgICAgICAgICAgICAgIHRoaXMudGV4dElucHV0RWwubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT0gdGhpcy50ZXh0SW5wdXRFbC5uYXRpdmVFbGVtZW50LnZhbHVlLmxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgICAvL29yIGlzIHplcm8td2lkZVxuICAgICAgICAgICAgICAgIHRoaXMudGV4dElucHV0RWwubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PSB0aGlzLnRleHRJbnB1dEVsLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGV2ZW50LmNsaXBib2FyZERhdGE/LnNldERhdGEoJ3RleHQvcGxhaW4nLCBTdHJpbmcodGhpcy52YWx1ZSkpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vISBoZWxwZXJzXG4gICAgcHJvdGVjdGVkIF9zZXRJbnB1dEF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy50ZXh0SW5wdXRFbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgYXV0b2NvcnJlY3Q6ICdvZmYnLFxuICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6ICdvZmYnLFxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcbiAgICAgICAgICAgIHRhYmluZGV4OiBTdHJpbmcodGhpcy50YWJJbmRleCksXG4gICAgICAgICAgICAuLi50aGlzLmlucHV0QXR0cnMsXG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcbiAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZShrZXksIFN0cmluZyhhdHRyaWJ1dGVzW2tleV0pKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhcmQtbnVtYmVyLWlucHV0XCJcclxuICAgIFtuZ0NsYXNzXT1cIm5nQ2xhc3Nlc1wiXHJcbiAgICBbY2xhc3MuYXJkLWhhcy12YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIChtb3VzZXVwKT1cIm9uTW91c2V1cCgkZXZlbnQpXCJcclxuPlxyXG4gICAgPGFyZC1idXR0b24gKm5nSWY9XCJhbGxvd1F1aWNrQ2hhbmdlXCJcclxuICAgICAgICBjbGFzcz1cImFyZC1xdWljay1jaGFuZ2UtYnV0dG9uIGRlY3JlbWVudFwiXHJcbiAgICAgICAgW3ZhcmlhbnRdPVwiYnV0dG9uVmFyaWFudFwiXHJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwiYnV0dG9uQXBwZWFyYW5jZVwiXHJcbiAgICAgICAgY29sb3I9XCJub25lXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkRlY3JlbWVudCgpXCJcclxuICAgICAgICBbdGFiSW5kZXhdPVwiIWNhbkRlY3JlbWVudCgpID8gLTEgOiB0YWJJbmRleFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uUXVpY2tDaGFuZ2VCdXR0b25DbGljaygtMSwgJGV2ZW50KVwiXHJcbiAgICAgICAgKGFyZEhvbGQpPVwib25RdWlja0NoYW5nZUJ1dHRvbkNsaWNrKC0xKVwiXHJcbiAgICAgICAgYXJkSG9sZFNwYWNlS2V5XHJcbiAgICA+LTwvYXJkLWJ1dHRvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJhcmQtaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3VsZERpc3BsYXlQbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRQbGFjZWhvbGRlclRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFyZC1wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicGxhY2Vob2xkZXJUZW1wbGF0ZSB8fCBkZWZhdWx0UGxhY2Vob2xkZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxpbnB1dCAjdGV4dElucHV0XHJcbiAgICAgICAgICAgICNmb2N1c2FibGVFbGVtZW50XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4XCJcclxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQodGV4dElucHV0LnZhbHVlKVwiXHJcbiAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzTWFzdGVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXJNYXN0ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgKG1vdXNldXApPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgKGNvcHkpPVwib25Db3B5KCRldmVudClcIlxyXG4gICAgICAgID5cclxuICAgIDwvZGl2PlxyXG4gICAgPGFyZC1idXR0b24gKm5nSWY9XCJhbGxvd1F1aWNrQ2hhbmdlXCJcclxuICAgICAgICBjbGFzcz1cImFyZC1xdWljay1jaGFuZ2UtYnV0dG9uIGluY3JlbWVudFwiXHJcbiAgICAgICAgW3ZhcmlhbnRdPVwiYnV0dG9uVmFyaWFudFwiXHJcbiAgICAgICAgW2FwcGVhcmFuY2VdPVwiYnV0dG9uQXBwZWFyYW5jZVwiXHJcbiAgICAgICAgY29sb3I9XCJub25lXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkluY3JlbWVudCgpXCJcclxuICAgICAgICBbdGFiSW5kZXhdPVwiIWNhbkluY3JlbWVudCgpID8gLTEgOiB0YWJJbmRleFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uUXVpY2tDaGFuZ2VCdXR0b25DbGljaygxLCAkZXZlbnQpXCJcclxuICAgICAgICAoYXJkSG9sZCk9XCJvblF1aWNrQ2hhbmdlQnV0dG9uQ2xpY2soMSlcIlxyXG4gICAgICAgIGFyZEhvbGRTcGFjZUtleVxyXG4gICAgPis8L2FyZC1idXR0b24+XHJcbjwvZGl2PiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ArdNumberInputPlaceholderTemplateDirective {
4
+ constructor(template) {
5
+ this.template = template;
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdNumberInputPlaceholderTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: ArdNumberInputPlaceholderTemplateDirective, selector: "ard-number-input > ng-template[ard-placeholder-tmp]", ngImport: i0 }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdNumberInputPlaceholderTemplateDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{ selector: 'ard-number-input > ng-template[ard-placeholder-tmp]' }]
13
+ }], ctorParameters: () => [{ type: i0.TemplateRef }] });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmRpcmVjdGl2ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9udW1iZXItaW5wdXQvbnVtYmVyLWlucHV0LmRpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFHdkQsTUFBTSxPQUFPLDBDQUEwQztJQUNuRCxZQUFtQixRQUFnQztRQUFoQyxhQUFRLEdBQVIsUUFBUSxDQUF3QjtJQUFHLENBQUM7OEdBRDlDLDBDQUEwQztrR0FBMUMsMENBQTBDOzsyRkFBMUMsMENBQTBDO2tCQUR0RCxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHFEQUFxRCxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdhcmQtbnVtYmVyLWlucHV0ID4gbmctdGVtcGxhdGVbYXJkLXBsYWNlaG9sZGVyLXRtcF0nIH0pXG5leHBvcnQgY2xhc3MgQXJkTnVtYmVySW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVuZGVmaW5lZD4pIHt9XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { ArdiumHoldEventModule } from '@ardium-ui/devkit';
4
+ import { ArdiumButtonModule } from '../../buttons/button/button.module';
5
+ import { ArdiumNumberInputComponent } from './number-input.component';
6
+ import { ArdNumberInputPlaceholderTemplateDirective } from './number-input.directives';
7
+ import * as i0 from "@angular/core";
8
+ export class ArdiumNumberInputModule {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputModule, declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective], imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule], exports: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputModule, imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule] }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ArdiumNumberInputModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ declarations: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],
17
+ imports: [CommonModule, ArdiumHoldEventModule, ArdiumButtonModule],
18
+ exports: [ArdiumNumberInputComponent, ArdNumberInputPlaceholderTemplateDirective],
19
+ }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaW5wdXRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQU92RixNQUFNLE9BQU8sdUJBQXVCOzhHQUF2Qix1QkFBdUI7K0dBQXZCLHVCQUF1QixpQkFKakIsMEJBQTBCLEVBQUUsMENBQTBDLGFBQzNFLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsYUFDdkQsMEJBQTBCLEVBQUUsMENBQTBDOytHQUV2RSx1QkFBdUIsWUFIdEIsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQjs7MkZBR3hELHVCQUF1QjtrQkFMbkMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSwwQ0FBMEMsQ0FBQztvQkFDdEYsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDO29CQUNsRSxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSwwQ0FBMEMsQ0FBQztpQkFDcEYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFyZGl1bUhvbGRFdmVudE1vZHVsZSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcbmltcG9ydCB7IEFyZGl1bUJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uLy4uL2J1dHRvbnMvYnV0dG9uL2J1dHRvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQXJkaXVtTnVtYmVySW5wdXRDb21wb25lbnQgfSBmcm9tICcuL251bWJlci1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXJkTnVtYmVySW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9udW1iZXItaW5wdXQuZGlyZWN0aXZlcyc7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbQXJkaXVtTnVtYmVySW5wdXRDb21wb25lbnQsIEFyZE51bWJlcklucHV0UGxhY2Vob2xkZXJUZW1wbGF0ZURpcmVjdGl2ZV0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQXJkaXVtSG9sZEV2ZW50TW9kdWxlLCBBcmRpdW1CdXR0b25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtBcmRpdW1OdW1iZXJJbnB1dENvbXBvbmVudCwgQXJkTnVtYmVySW5wdXRQbGFjZWhvbGRlclRlbXBsYXRlRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgQXJkaXVtTnVtYmVySW5wdXRNb2R1bGUge31cbiJdfQ==