@ardium-ui/ui 4.4.1 → 5.0.0-alpha.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 (354) hide show
  1. package/fesm2022/ardium-ui-ui.mjs +2525 -2413
  2. package/fesm2022/ardium-ui-ui.mjs.map +1 -1
  3. package/lib/_internal/boolean-component.d.ts +1 -1
  4. package/lib/_internal/disablable-component.d.ts +1 -1
  5. package/lib/_internal/focusable-component.d.ts +1 -1
  6. package/lib/_internal/form-field-component.d.ts +1 -1
  7. package/lib/_internal/ngmodel-component.d.ts +2 -2
  8. package/lib/_internal/selectable-list-component.d.ts +1 -1
  9. package/lib/_internal/utils/date.utils.d.ts +3 -0
  10. package/lib/buttons/_button-base.d.ts +1 -1
  11. package/lib/calendar/calendar.component.d.ts +8 -2
  12. package/lib/file-inputs/file-input-base.d.ts +7 -3
  13. package/lib/form-field/form-field-base.d.ts +1 -1
  14. package/lib/inputs/_simple-input-base.d.ts +3 -3
  15. package/lib/inputs/autocomplete-input/autocomplete-input.component.d.ts +66 -0
  16. package/lib/inputs/autocomplete-input/autocomplete-input.defaults.d.ts +15 -0
  17. package/lib/inputs/autocomplete-input/autocomplete-input.directives.d.ts +33 -0
  18. package/lib/inputs/autocomplete-input/autocomplete-input.module.d.ts +13 -0
  19. package/lib/inputs/autocomplete-input/index.d.ts +3 -0
  20. package/lib/inputs/date-input/date-input.component.d.ts +5 -2
  21. package/lib/inputs/input/index.d.ts +2 -1
  22. package/lib/inputs/input/input.component.d.ts +3 -56
  23. package/lib/inputs/input/input.defaults.d.ts +1 -10
  24. package/lib/inputs/input/input.directives.d.ts +0 -13
  25. package/lib/inputs/input/input.module.d.ts +3 -5
  26. package/lib/inputs/input-utils.d.ts +8 -8
  27. package/lib/inputs/number-input/number-input.component.d.ts +1 -0
  28. package/lib/option/option.component.d.ts +1 -1
  29. package/lib/slider/abstract-slider.d.ts +1 -1
  30. package/package.json +1 -3
  31. package/prebuilt-themes/default/inputs/{simple-input.css → autocomplete-input.css} +40 -15
  32. package/prebuilt-themes/default/inputs/autocomplete-input.css.map +1 -0
  33. package/prebuilt-themes/default/inputs/file-input.css +9 -4
  34. package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
  35. package/prebuilt-themes/default/inputs/input.css +0 -25
  36. package/prebuilt-themes/default/inputs/input.css.map +1 -1
  37. package/public-api.d.ts +1 -1
  38. package/themes/default/inputs/autocomplete-input.scss +46 -0
  39. package/themes/default/inputs/file-input.scss +10 -2
  40. package/themes/default/inputs/input.scss +0 -34
  41. package/esm2022/ardium-ui-ui.mjs +0 -5
  42. package/esm2022/lib/_internal/boolean-component.mjs +0 -95
  43. package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +0 -15
  44. package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +0 -18
  45. package/esm2022/lib/_internal/disablable-component.mjs +0 -51
  46. package/esm2022/lib/_internal/focusable-component.mjs +0 -85
  47. package/esm2022/lib/_internal/form-field-component.mjs +0 -33
  48. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +0 -453
  49. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +0 -370
  50. package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +0 -157
  51. package/esm2022/lib/_internal/models/pagination.model.mjs +0 -90
  52. package/esm2022/lib/_internal/models/queue.mjs +0 -59
  53. package/esm2022/lib/_internal/ngmodel-component.mjs +0 -99
  54. package/esm2022/lib/_internal/public-api.mjs +0 -2
  55. package/esm2022/lib/_internal/selectable-list-component.mjs +0 -271
  56. package/esm2022/lib/badge/badge.defaults.mjs +0 -20
  57. package/esm2022/lib/badge/badge.directive.mjs +0 -97
  58. package/esm2022/lib/badge/badge.module.mjs +0 -18
  59. package/esm2022/lib/badge/badge.types.mjs +0 -16
  60. package/esm2022/lib/badge/index.mjs +0 -5
  61. package/esm2022/lib/buttons/_button-base.defaults.mjs +0 -17
  62. package/esm2022/lib/buttons/_button-base.mjs +0 -26
  63. package/esm2022/lib/buttons/button/button.component.mjs +0 -38
  64. package/esm2022/lib/buttons/button/button.defaults.mjs +0 -17
  65. package/esm2022/lib/buttons/button/button.module.mjs +0 -18
  66. package/esm2022/lib/buttons/button/index.mjs +0 -4
  67. package/esm2022/lib/buttons/fab/fab.component.mjs +0 -33
  68. package/esm2022/lib/buttons/fab/fab.defaults.mjs +0 -17
  69. package/esm2022/lib/buttons/fab/fab.module.mjs +0 -18
  70. package/esm2022/lib/buttons/fab/index.mjs +0 -4
  71. package/esm2022/lib/buttons/general-button.types.mjs +0 -55
  72. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +0 -39
  73. package/esm2022/lib/buttons/icon-button/icon-button.defaults.mjs +0 -9
  74. package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +0 -18
  75. package/esm2022/lib/buttons/icon-button/index.mjs +0 -4
  76. package/esm2022/lib/calendar/calendar.component.mjs +0 -466
  77. package/esm2022/lib/calendar/calendar.defaults.mjs +0 -26
  78. package/esm2022/lib/calendar/calendar.directives.mjs +0 -107
  79. package/esm2022/lib/calendar/calendar.internal-directives.mjs +0 -22
  80. package/esm2022/lib/calendar/calendar.internal-types.mjs +0 -2
  81. package/esm2022/lib/calendar/calendar.module.mjs +0 -71
  82. package/esm2022/lib/calendar/calendar.types.mjs +0 -6
  83. package/esm2022/lib/calendar/index.mjs +0 -6
  84. package/esm2022/lib/calendar/views/days-view/days-view.component.mjs +0 -282
  85. package/esm2022/lib/calendar/views/days-view/days-view.helpers.mjs +0 -65
  86. package/esm2022/lib/calendar/views/months-view/months-view.component.mjs +0 -245
  87. package/esm2022/lib/calendar/views/months-view/months-view.helpers.mjs +0 -22
  88. package/esm2022/lib/calendar/views/years-view/years-view.component.mjs +0 -244
  89. package/esm2022/lib/calendar/views/years-view/years-view.helpers.mjs +0 -14
  90. package/esm2022/lib/card/card.children.mjs +0 -96
  91. package/esm2022/lib/card/card.component.mjs +0 -38
  92. package/esm2022/lib/card/card.defaults.mjs +0 -17
  93. package/esm2022/lib/card/card.module.mjs +0 -59
  94. package/esm2022/lib/card/card.types.mjs +0 -9
  95. package/esm2022/lib/card/index.mjs +0 -6
  96. package/esm2022/lib/checkbox/checkbox.component.mjs +0 -68
  97. package/esm2022/lib/checkbox/checkbox.defaults.mjs +0 -17
  98. package/esm2022/lib/checkbox/checkbox.directives.mjs +0 -14
  99. package/esm2022/lib/checkbox/checkbox.internal-directives.mjs +0 -15
  100. package/esm2022/lib/checkbox/checkbox.module.mjs +0 -20
  101. package/esm2022/lib/checkbox/checkbox.types.mjs +0 -6
  102. package/esm2022/lib/checkbox/index.mjs +0 -6
  103. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +0 -116
  104. package/esm2022/lib/checkbox-list/checkbox-list.defaults.mjs +0 -25
  105. package/esm2022/lib/checkbox-list/checkbox-list.directives.mjs +0 -14
  106. package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +0 -21
  107. package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +0 -7
  108. package/esm2022/lib/checkbox-list/index.mjs +0 -6
  109. package/esm2022/lib/chip/chip.component.mjs +0 -36
  110. package/esm2022/lib/chip/chip.defaults.mjs +0 -20
  111. package/esm2022/lib/chip/chip.module.mjs +0 -21
  112. package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +0 -53
  113. package/esm2022/lib/chip/deletable-chip/deletable-chip.defaults.mjs +0 -17
  114. package/esm2022/lib/chip/index.mjs +0 -8
  115. package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +0 -53
  116. package/esm2022/lib/chip/selectable-chip/selectable-chip.defaults.mjs +0 -18
  117. package/esm2022/lib/dialog/dialog.component.mjs +0 -109
  118. package/esm2022/lib/dialog/dialog.defaults.mjs +0 -26
  119. package/esm2022/lib/dialog/dialog.directives.mjs +0 -25
  120. package/esm2022/lib/dialog/dialog.module.mjs +0 -21
  121. package/esm2022/lib/dialog/dialog.types.mjs +0 -10
  122. package/esm2022/lib/dialog/index.mjs +0 -6
  123. package/esm2022/lib/divider/divider.component.mjs +0 -19
  124. package/esm2022/lib/divider/divider.defaults.mjs +0 -13
  125. package/esm2022/lib/divider/divider.module.mjs +0 -18
  126. package/esm2022/lib/divider/index.mjs +0 -4
  127. package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +0 -112
  128. package/esm2022/lib/dropdown-panel/dropdown-panel.defaults.mjs +0 -17
  129. package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +0 -18
  130. package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +0 -10
  131. package/esm2022/lib/dropdown-panel/index.mjs +0 -5
  132. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +0 -70
  133. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.defaults.mjs +0 -18
  134. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +0 -42
  135. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +0 -52
  136. package/esm2022/lib/file-inputs/file-drop-area/index.mjs +0 -5
  137. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +0 -120
  138. package/esm2022/lib/file-inputs/file-input/file-input.defaults.mjs +0 -23
  139. package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +0 -86
  140. package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +0 -55
  141. package/esm2022/lib/file-inputs/file-input/index.mjs +0 -5
  142. package/esm2022/lib/file-inputs/file-input-base.defaults.mjs +0 -8
  143. package/esm2022/lib/file-inputs/file-input-base.mjs +0 -333
  144. package/esm2022/lib/file-inputs/file-input-types.mjs +0 -8
  145. package/esm2022/lib/form-field/error/error.component.mjs +0 -17
  146. package/esm2022/lib/form-field/error/error.directive.mjs +0 -17
  147. package/esm2022/lib/form-field/form-field-base.mjs +0 -53
  148. package/esm2022/lib/form-field/form-field-child.token.mjs +0 -3
  149. package/esm2022/lib/form-field/form-field-native-inputs.mjs +0 -80
  150. package/esm2022/lib/form-field/form-field.component.mjs +0 -12
  151. package/esm2022/lib/form-field/form-field.defaults.mjs +0 -17
  152. package/esm2022/lib/form-field/form-field.module.mjs +0 -49
  153. package/esm2022/lib/form-field/hint/hint.component.mjs +0 -17
  154. package/esm2022/lib/form-field/hint/hint.directive.mjs +0 -30
  155. package/esm2022/lib/form-field/horizontal-form-field.component.mjs +0 -12
  156. package/esm2022/lib/form-field/index.mjs +0 -10
  157. package/esm2022/lib/form-field/label/label.component.mjs +0 -27
  158. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +0 -58
  159. package/esm2022/lib/form-field-frame/form-field-frame.defaults.mjs +0 -18
  160. package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +0 -25
  161. package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +0 -19
  162. package/esm2022/lib/form-field-frame/index.mjs +0 -5
  163. package/esm2022/lib/icon/icon.component.mjs +0 -52
  164. package/esm2022/lib/icon/icon.defaults.mjs +0 -17
  165. package/esm2022/lib/icon/icon.module.mjs +0 -19
  166. package/esm2022/lib/icon/icon.pipe.mjs +0 -18
  167. package/esm2022/lib/icon/index.mjs +0 -5
  168. package/esm2022/lib/inputs/_simple-input-base.mjs +0 -153
  169. package/esm2022/lib/inputs/date-input/date-input.component.mjs +0 -375
  170. package/esm2022/lib/inputs/date-input/date-input.defaults.mjs +0 -38
  171. package/esm2022/lib/inputs/date-input/date-input.directive.mjs +0 -163
  172. package/esm2022/lib/inputs/date-input/date-input.module.mjs +0 -108
  173. package/esm2022/lib/inputs/date-input/date-input.serializers.mjs +0 -49
  174. package/esm2022/lib/inputs/date-input/date-input.types.mjs +0 -5
  175. package/esm2022/lib/inputs/date-input/index.mjs +0 -6
  176. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +0 -265
  177. package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +0 -24
  178. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +0 -267
  179. package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +0 -19
  180. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +0 -15
  181. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +0 -8
  182. package/esm2022/lib/inputs/digit-input/index.mjs +0 -5
  183. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +0 -180
  184. package/esm2022/lib/inputs/hex-input/hex-input.defaults.mjs +0 -26
  185. package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +0 -36
  186. package/esm2022/lib/inputs/hex-input/hex-input.model.mjs +0 -97
  187. package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +0 -37
  188. package/esm2022/lib/inputs/hex-input/index.mjs +0 -5
  189. package/esm2022/lib/inputs/input/index.mjs +0 -4
  190. package/esm2022/lib/inputs/input/input.component.mjs +0 -278
  191. package/esm2022/lib/inputs/input/input.defaults.mjs +0 -21
  192. package/esm2022/lib/inputs/input/input.directives.mjs +0 -58
  193. package/esm2022/lib/inputs/input/input.module.mjs +0 -61
  194. package/esm2022/lib/inputs/input-transformers.mjs +0 -66
  195. package/esm2022/lib/inputs/input-types.mjs +0 -6
  196. package/esm2022/lib/inputs/input-utils.mjs +0 -186
  197. package/esm2022/lib/inputs/number-input/index.mjs +0 -5
  198. package/esm2022/lib/inputs/number-input/number-input.component.mjs +0 -245
  199. package/esm2022/lib/inputs/number-input/number-input.defaults.mjs +0 -27
  200. package/esm2022/lib/inputs/number-input/number-input.directives.mjs +0 -14
  201. package/esm2022/lib/inputs/number-input/number-input.module.mjs +0 -21
  202. package/esm2022/lib/inputs/password-input/index.mjs +0 -6
  203. package/esm2022/lib/inputs/password-input/password-input.component.mjs +0 -167
  204. package/esm2022/lib/inputs/password-input/password-input.defaults.mjs +0 -24
  205. package/esm2022/lib/inputs/password-input/password-input.directives.mjs +0 -49
  206. package/esm2022/lib/inputs/password-input/password-input.module.mjs +0 -41
  207. package/esm2022/lib/inputs/password-input/password-input.types.mjs +0 -2
  208. package/esm2022/lib/inputs/simple-input/index.mjs +0 -5
  209. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +0 -50
  210. package/esm2022/lib/inputs/simple-input/simple-input.defaults.mjs +0 -25
  211. package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +0 -36
  212. package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +0 -37
  213. package/esm2022/lib/kbd/index.mjs +0 -6
  214. package/esm2022/lib/kbd/kbd.component.mjs +0 -30
  215. package/esm2022/lib/kbd/kbd.defaults.mjs +0 -15
  216. package/esm2022/lib/kbd/kbd.directive.mjs +0 -33
  217. package/esm2022/lib/kbd/kbd.module.mjs +0 -20
  218. package/esm2022/lib/kbd/kbd.pipe.mjs +0 -21
  219. package/esm2022/lib/kbd-shortcut/index.mjs +0 -4
  220. package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +0 -36
  221. package/esm2022/lib/kbd-shortcut/kbd-shortcut.defaults.mjs +0 -8
  222. package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +0 -19
  223. package/esm2022/lib/modal/index.mjs +0 -5
  224. package/esm2022/lib/modal/modal.component.mjs +0 -95
  225. package/esm2022/lib/modal/modal.defaults.mjs +0 -20
  226. package/esm2022/lib/modal/modal.directives.mjs +0 -14
  227. package/esm2022/lib/modal/modal.module.mjs +0 -22
  228. package/esm2022/lib/option/index.mjs +0 -3
  229. package/esm2022/lib/option/option.component.mjs +0 -55
  230. package/esm2022/lib/option/option.module.mjs +0 -18
  231. package/esm2022/lib/progress-bar/index.mjs +0 -6
  232. package/esm2022/lib/progress-bar/progress-bar.component.mjs +0 -58
  233. package/esm2022/lib/progress-bar/progress-bar.defaults.mjs +0 -21
  234. package/esm2022/lib/progress-bar/progress-bar.directive.mjs +0 -14
  235. package/esm2022/lib/progress-bar/progress-bar.module.mjs +0 -19
  236. package/esm2022/lib/progress-bar/progress-bar.types.mjs +0 -19
  237. package/esm2022/lib/progress-circle/index.mjs +0 -6
  238. package/esm2022/lib/progress-circle/progress-circle.component.mjs +0 -45
  239. package/esm2022/lib/progress-circle/progress-circle.defaults.mjs +0 -21
  240. package/esm2022/lib/progress-circle/progress-circle.directive.mjs +0 -14
  241. package/esm2022/lib/progress-circle/progress-circle.module.mjs +0 -19
  242. package/esm2022/lib/progress-circle/progress-circle.types.mjs +0 -10
  243. package/esm2022/lib/radio/index.mjs +0 -5
  244. package/esm2022/lib/radio/radio/radio.component.mjs +0 -119
  245. package/esm2022/lib/radio/radio/radio.defaults.mjs +0 -16
  246. package/esm2022/lib/radio/radio-group.component.mjs +0 -203
  247. package/esm2022/lib/radio/radio.module.mjs +0 -19
  248. package/esm2022/lib/search-functions.mjs +0 -64
  249. package/esm2022/lib/segment/index.mjs +0 -6
  250. package/esm2022/lib/segment/segment.component.mjs +0 -125
  251. package/esm2022/lib/segment/segment.defaults.mjs +0 -26
  252. package/esm2022/lib/segment/segment.directives.mjs +0 -14
  253. package/esm2022/lib/segment/segment.module.mjs +0 -19
  254. package/esm2022/lib/segment/segment.types.mjs +0 -13
  255. package/esm2022/lib/select/index.mjs +0 -6
  256. package/esm2022/lib/select/select.component.mjs +0 -836
  257. package/esm2022/lib/select/select.defaults.mjs +0 -53
  258. package/esm2022/lib/select/select.directive.mjs +0 -171
  259. package/esm2022/lib/select/select.module.mjs +0 -112
  260. package/esm2022/lib/select/select.types.mjs +0 -2
  261. package/esm2022/lib/slide-toggle/index.mjs +0 -5
  262. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +0 -43
  263. package/esm2022/lib/slide-toggle/slide-toggle.defaults.mjs +0 -21
  264. package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +0 -18
  265. package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +0 -5
  266. package/esm2022/lib/slider/abstract-slider.mjs +0 -251
  267. package/esm2022/lib/slider/index.mjs +0 -8
  268. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +0 -151
  269. package/esm2022/lib/slider/range-slider/range-slider.module.mjs +0 -18
  270. package/esm2022/lib/slider/slider.component.mjs +0 -100
  271. package/esm2022/lib/slider/slider.defaults.mjs +0 -14
  272. package/esm2022/lib/slider/slider.directive.mjs +0 -16
  273. package/esm2022/lib/slider/slider.module.mjs +0 -20
  274. package/esm2022/lib/slider/slider.types.mjs +0 -10
  275. package/esm2022/lib/snackbar/index.mjs +0 -5
  276. package/esm2022/lib/snackbar/snackbar-ref.mjs +0 -51
  277. package/esm2022/lib/snackbar/snackbar.component.mjs +0 -48
  278. package/esm2022/lib/snackbar/snackbar.service.mjs +0 -224
  279. package/esm2022/lib/snackbar/snackbar.token.mjs +0 -26
  280. package/esm2022/lib/snackbar/snackbar.types.mjs +0 -25
  281. package/esm2022/lib/spinner/index.mjs +0 -4
  282. package/esm2022/lib/spinner/spinner.component.mjs +0 -19
  283. package/esm2022/lib/spinner/spinner.defaults.mjs +0 -14
  284. package/esm2022/lib/spinner/spinner.module.mjs +0 -18
  285. package/esm2022/lib/star/index.mjs +0 -6
  286. package/esm2022/lib/star/rating-display/index.mjs +0 -6
  287. package/esm2022/lib/star/rating-display/rating-display.component.mjs +0 -71
  288. package/esm2022/lib/star/rating-display/rating-display.defaults.mjs +0 -16
  289. package/esm2022/lib/star/rating-display/rating-display.directives.mjs +0 -16
  290. package/esm2022/lib/star/rating-display/rating-display.module.mjs +0 -20
  291. package/esm2022/lib/star/rating-display/rating-display.types.mjs +0 -2
  292. package/esm2022/lib/star/rating-input/index.mjs +0 -6
  293. package/esm2022/lib/star/rating-input/rating-input.component.mjs +0 -191
  294. package/esm2022/lib/star/rating-input/rating-input.defaults.mjs +0 -17
  295. package/esm2022/lib/star/rating-input/rating-input.directives.mjs +0 -16
  296. package/esm2022/lib/star/rating-input/rating-input.module.mjs +0 -20
  297. package/esm2022/lib/star/rating-input/rating-input.types.mjs +0 -2
  298. package/esm2022/lib/star/star-button/index.mjs +0 -6
  299. package/esm2022/lib/star/star-button/star-button.component.mjs +0 -55
  300. package/esm2022/lib/star/star-button/star-button.defaults.mjs +0 -18
  301. package/esm2022/lib/star/star-button/star-button.directives.mjs +0 -16
  302. package/esm2022/lib/star/star-button/star-button.module.mjs +0 -20
  303. package/esm2022/lib/star/star-button/star-button.types.mjs +0 -2
  304. package/esm2022/lib/star/star.component.mjs +0 -36
  305. package/esm2022/lib/star/star.defaults.mjs +0 -15
  306. package/esm2022/lib/star/star.directives.mjs +0 -16
  307. package/esm2022/lib/star/star.module.mjs +0 -20
  308. package/esm2022/lib/star/star.types.mjs +0 -23
  309. package/esm2022/lib/statebox/index.mjs +0 -4
  310. package/esm2022/lib/statebox/statebox.component.mjs +0 -114
  311. package/esm2022/lib/statebox/statebox.defaults.mjs +0 -20
  312. package/esm2022/lib/statebox/statebox.module.mjs +0 -18
  313. package/esm2022/lib/statebox/statebox.types.mjs +0 -2
  314. package/esm2022/lib/tabber/index.mjs +0 -6
  315. package/esm2022/lib/tabber/tab/tab.component.mjs +0 -44
  316. package/esm2022/lib/tabber/tab/tab.defaults.mjs +0 -13
  317. package/esm2022/lib/tabber/tabber.component.mjs +0 -90
  318. package/esm2022/lib/tabber/tabber.defaults.mjs +0 -19
  319. package/esm2022/lib/tabber/tabber.module.mjs +0 -19
  320. package/esm2022/lib/table/index.mjs +0 -6
  321. package/esm2022/lib/table/table-item-storage.mjs +0 -564
  322. package/esm2022/lib/table/table.component.mjs +0 -367
  323. package/esm2022/lib/table/table.defaults.mjs +0 -53
  324. package/esm2022/lib/table/table.directives.mjs +0 -62
  325. package/esm2022/lib/table/table.module.mjs +0 -47
  326. package/esm2022/lib/table/table.types.mjs +0 -30
  327. package/esm2022/lib/table/utils.mjs +0 -18
  328. package/esm2022/lib/table-from-csv/index.mjs +0 -4
  329. package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +0 -120
  330. package/esm2022/lib/table-from-csv/table-from-csv.defaults.mjs +0 -15
  331. package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +0 -19
  332. package/esm2022/lib/table-pagination/index.mjs +0 -5
  333. package/esm2022/lib/table-pagination/table-pagination.component.mjs +0 -108
  334. package/esm2022/lib/table-pagination/table-pagination.defaults.mjs +0 -25
  335. package/esm2022/lib/table-pagination/table-pagination.module.mjs +0 -21
  336. package/esm2022/lib/table-pagination/table-pagination.types.mjs +0 -7
  337. package/esm2022/lib/text-list/index.mjs +0 -4
  338. package/esm2022/lib/text-list/text-list.component.mjs +0 -18
  339. package/esm2022/lib/text-list/text-list.module.mjs +0 -19
  340. package/esm2022/lib/text-list/text-list.pipe.mjs +0 -16
  341. package/esm2022/lib/types/alignment.types.mjs +0 -10
  342. package/esm2022/lib/types/button.types.mjs +0 -6
  343. package/esm2022/lib/types/colors.types.mjs +0 -43
  344. package/esm2022/lib/types/item-storage.types.mjs +0 -6
  345. package/esm2022/lib/types/theming.types.mjs +0 -48
  346. package/esm2022/lib/types/utility.types.mjs +0 -5
  347. package/esm2022/public-api.mjs +0 -74
  348. package/lib/inputs/simple-input/index.d.ts +0 -4
  349. package/lib/inputs/simple-input/simple-input.component.d.ts +0 -13
  350. package/lib/inputs/simple-input/simple-input.defaults.d.ts +0 -6
  351. package/lib/inputs/simple-input/simple-input.directives.d.ts +0 -20
  352. package/lib/inputs/simple-input/simple-input.module.d.ts +0 -11
  353. package/prebuilt-themes/default/inputs/simple-input.css.map +0 -1
  354. package/themes/default/inputs/simple-input.scss +0 -12
@@ -1,333 +0,0 @@
1
- import { computed, Directive, inject, Input, input, output, signal, viewChild } from '@angular/core';
2
- import { coerceBooleanProperty, coerceNumberProperty, FileSystemMethod, FileSystemService, } from '@ardium-ui/devkit';
3
- import { isDefined } from 'simple-bool';
4
- import { _FormFieldComponentBase } from '../_internal/form-field-component';
5
- import { FileInputFailedUploadReason } from './file-input-types';
6
- import * as i0 from "@angular/core";
7
- export class _FileInputComponentBase extends _FormFieldComponentBase {
8
- constructor() {
9
- super(...arguments);
10
- this._fileSystemService = inject(FileSystemService);
11
- this.fileInputEl = viewChild('fileInput');
12
- this.name = input('');
13
- this._wasViewInit = false;
14
- //! appearance
15
- this.compact = input(false, { transform: v => coerceBooleanProperty(v) });
16
- //! settings
17
- this.multiple = input(false, { transform: v => coerceBooleanProperty(v) });
18
- this.maxFiles = input(null, { transform: v => coerceNumberProperty(v, null) });
19
- this.maxFilesWithMultiple = computed(() => (this.multiple() ? this.maxFiles() ?? Infinity : 1));
20
- this.blockAfterUpload = input(false, { transform: v => coerceBooleanProperty(v) });
21
- this.maxFileSizeBytes = input(null, { transform: v => coerceNumberProperty(v, null) });
22
- this.accept = input('*');
23
- this.directoryId = input(undefined);
24
- this.startDirectory = input(undefined);
25
- this.fileTypes = input(undefined);
26
- this.acceptString = computed(() => {
27
- const types = this.fileTypes();
28
- if (types) {
29
- const acceptEntries = [];
30
- for (const type of types) {
31
- if (type.accept) {
32
- for (const mimeType in type.accept) {
33
- const extensions = type.accept[mimeType];
34
- if (extensions && extensions.length > 0) {
35
- acceptEntries.push(...extensions);
36
- }
37
- }
38
- }
39
- }
40
- return acceptEntries.join(',');
41
- }
42
- const accept = this.accept();
43
- if (Array.isArray(accept)) {
44
- return accept.join(',');
45
- }
46
- return accept;
47
- });
48
- this.acceptedMimeTypes = computed(() => {
49
- const types = this.fileTypes();
50
- if (types) {
51
- const mimeTypes = [];
52
- for (const type of types) {
53
- if (type.accept) {
54
- for (const mimeType in type.accept) {
55
- mimeTypes.push({ mimeType, extensions: new Set(type.accept[mimeType]) });
56
- }
57
- }
58
- }
59
- return mimeTypes;
60
- }
61
- return null;
62
- });
63
- //! value
64
- this._value = null;
65
- this.valueChange = output();
66
- this.changeEvent = output({ alias: 'change' });
67
- this.dragFilesEvent = output({ alias: 'dragFiles' });
68
- this.failedUploadEvent = output({ alias: 'failedUpload' });
69
- this._valueBeforeInit = null;
70
- //! temporary value
71
- //for drag event handling
72
- this._draggedFiles = null;
73
- //! view state
74
- this.currentViewState = signal('idle');
75
- this._beforeDragoverState = 'idle';
76
- }
77
- ngOnInit() {
78
- super.ngOnInit();
79
- if (!(window.File && window.FileReader && window.Blob)) {
80
- console.error(new Error(`ARD-FT${this.componentId}0: Cannot use Ardium UI file features because this browser does not support file handling!`));
81
- }
82
- }
83
- ngAfterViewInit() {
84
- this._wasViewInit = true;
85
- this._updateElementValue();
86
- }
87
- get shouldBeBlocked() {
88
- return this.blockAfterUpload() && isDefined(this.value);
89
- }
90
- get value() {
91
- return this._value;
92
- }
93
- set value(v) {
94
- this.writeValue(v);
95
- }
96
- writeValue(v) {
97
- this._writeValue(v, false);
98
- }
99
- _writeValue(v, emitEvents = true) {
100
- if (!(v instanceof File) && !Array.isArray(v) && v !== null) {
101
- console.error(new Error(`ARD-FT${this.componentId}1: <ard-file-input>'s value must be a File, an array of Files, or null.`));
102
- return;
103
- }
104
- if (v instanceof File) {
105
- v = [v];
106
- }
107
- if (Array.isArray(v) && !this.multiple() && v.length > 1) {
108
- console.warn(`ARD-WA${this.componentId}2: <ard-file-input> received an array of files but the 'multiple' input is not set to true. Only the first file will be used.`);
109
- v = [v[0]];
110
- }
111
- if (Array.isArray(v) && v.length === 0) {
112
- v = null;
113
- }
114
- if (v === null) {
115
- this.currentViewState.set('idle');
116
- }
117
- else {
118
- this.currentViewState.set('uploaded');
119
- }
120
- this._value = v;
121
- if (this._wasViewInit)
122
- this._updateElementValue();
123
- if (emitEvents) {
124
- this._emitChange();
125
- }
126
- }
127
- _emitChange() {
128
- const v = this.value;
129
- this._onChangeRegistered?.(v);
130
- this.valueChange.emit(v);
131
- this.changeEvent.emit(v);
132
- }
133
- openBrowseDialog() {
134
- if (this._fileSystemService.isFileSystemAPISupported('showOpenFilePicker') &&
135
- (this.directoryId() || this.startDirectory() || this.fileTypes())) {
136
- this._fileSystemService
137
- .requestFileUpload({
138
- method: FileSystemMethod.PreferFileSystem,
139
- multiple: this.multiple(),
140
- directoryId: this.directoryId() ?? undefined,
141
- startDirectory: this.startDirectory() ?? undefined,
142
- types: this.fileTypes() ?? undefined,
143
- accept: this.accept() === '*' ? undefined : this.accept(),
144
- })
145
- .then(fileOrFiles => {
146
- if (!fileOrFiles) {
147
- this._writeValue(null);
148
- this.currentViewState.set('idle');
149
- return;
150
- }
151
- const files = Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles];
152
- if (files.length === 0) {
153
- this._writeValue(null);
154
- this.currentViewState.set('idle');
155
- return;
156
- }
157
- this._writeValue(files);
158
- this.currentViewState.set('uploaded');
159
- // this._changeDetectorRef.markForCheck();
160
- });
161
- return;
162
- }
163
- this.fileInputEl()?.nativeElement.click();
164
- }
165
- //! event handlers
166
- onDragover(event) {
167
- event.preventDefault();
168
- if (this.shouldBeBlocked) {
169
- if (!event.dataTransfer)
170
- return;
171
- event.dataTransfer.dropEffect = 'none';
172
- return;
173
- }
174
- if (this.currentViewState() === 'dragover')
175
- return;
176
- this._draggedFiles = this._countDragenterFiles(event.dataTransfer);
177
- if (!this._draggedFiles)
178
- return;
179
- this._beforeDragoverState = this.currentViewState();
180
- this.currentViewState.set('dragover');
181
- }
182
- onDragleave() {
183
- if (this.shouldBeBlocked)
184
- return;
185
- if (this.currentViewState() !== 'dragover')
186
- return;
187
- this.currentViewState.set(this._beforeDragoverState);
188
- }
189
- onDrop(event) {
190
- event.preventDefault();
191
- if (this.shouldBeBlocked)
192
- return;
193
- const filelist = event.dataTransfer?.files;
194
- if (!filelist) {
195
- this.currentViewState.set('idle');
196
- return;
197
- }
198
- const files = Array.from(filelist);
199
- if (!files) {
200
- this.currentViewState.set('idle');
201
- return;
202
- }
203
- const filteredFiles = [];
204
- const failedFiles = [];
205
- const acceptedMimeTypes = this.acceptedMimeTypes();
206
- if (acceptedMimeTypes) {
207
- let mimeTypeMatched = false;
208
- fileLoop: for (const file of files) {
209
- const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
210
- if (!shouldAccept) {
211
- failedFiles.push({ file, reason: reason });
212
- continue;
213
- }
214
- mimeTypeMatched = false;
215
- for (const mimeTypeObj of acceptedMimeTypes) {
216
- if (isMimeTypeMatching(file, mimeTypeObj.mimeType)) {
217
- mimeTypeMatched = true;
218
- const extension = '.' + file.name.split('.').pop()?.toLowerCase();
219
- if (mimeTypeObj.extensions.size === 0 || mimeTypeObj.extensions.has('*') || mimeTypeObj.extensions.has(extension)) {
220
- filteredFiles.push(file);
221
- continue fileLoop;
222
- }
223
- }
224
- }
225
- if (!mimeTypeMatched) {
226
- failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidMimeType });
227
- }
228
- else {
229
- failedFiles.push({ file, reason: FileInputFailedUploadReason.MimeTypeFoundButExtensionNotAllowed });
230
- }
231
- }
232
- }
233
- else {
234
- const accept = this.accept();
235
- let acceptEntries = [];
236
- if (Array.isArray(accept)) {
237
- acceptEntries = accept.map(e => e.trim().toLowerCase());
238
- }
239
- else {
240
- acceptEntries = accept.split(',').map(e => e.trim().toLowerCase());
241
- }
242
- if (typeof accept === 'string' && accept === '*') {
243
- for (const file of files) {
244
- const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
245
- if (!shouldAccept) {
246
- failedFiles.push({ file, reason: reason });
247
- }
248
- }
249
- }
250
- else {
251
- fileLoop: for (const file of files) {
252
- const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
253
- if (!shouldAccept) {
254
- failedFiles.push({ file, reason: reason });
255
- continue;
256
- }
257
- const extension = '.' + file.name.split('.').at(-1)?.toLowerCase();
258
- for (const entry of acceptEntries) {
259
- if (extension === entry) {
260
- filteredFiles.push(file);
261
- continue fileLoop;
262
- }
263
- }
264
- failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidExtension });
265
- }
266
- }
267
- }
268
- this.dragFilesEvent.emit(filteredFiles);
269
- this.failedUploadEvent.emit(failedFiles);
270
- this.currentViewState.set('uploaded');
271
- this._writeValue(filteredFiles.length > 0 ? filteredFiles : null);
272
- }
273
- onInputChange() {
274
- const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);
275
- if (files.length === 0) {
276
- this._writeValue(null);
277
- this.currentViewState.set('idle');
278
- return;
279
- }
280
- this._writeValue(files);
281
- this.currentViewState.set('uploaded');
282
- }
283
- //! helpers
284
- _filterFilesBasedOnSizeAndCount(file, existingFileCount) {
285
- // check count
286
- if (existingFileCount >= this.maxFilesWithMultiple()) {
287
- return { shouldAccept: false, reason: FileInputFailedUploadReason.TooManyFiles };
288
- }
289
- // check size
290
- if (file.size > 0 && this.maxFileSizeBytes() !== null && file.size > this.maxFileSizeBytes()) {
291
- return { shouldAccept: false, reason: FileInputFailedUploadReason.FileTooBig };
292
- }
293
- // all good
294
- return { shouldAccept: true };
295
- }
296
- _countDragenterFiles(data) {
297
- if (!data)
298
- return null;
299
- return Array.from(data.items).filter(item => item.kind === 'file').length;
300
- }
301
- _updateElementValue() {
302
- const v = this.value;
303
- const inputEl = this.fileInputEl()?.nativeElement;
304
- if (!inputEl)
305
- return;
306
- if (!v) {
307
- inputEl.files = null;
308
- return;
309
- }
310
- const dataTransfer = new DataTransfer();
311
- for (const file of v) {
312
- dataTransfer.items.add(file);
313
- }
314
- inputEl.files = dataTransfer.files;
315
- }
316
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FileInputComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
317
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: _FileInputComponentBase, inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, maxFiles: { classPropertyName: "maxFiles", publicName: "maxFiles", isSignal: true, isRequired: false, transformFunction: null }, blockAfterUpload: { classPropertyName: "blockAfterUpload", publicName: "blockAfterUpload", isSignal: true, isRequired: false, transformFunction: null }, maxFileSizeBytes: { classPropertyName: "maxFileSizeBytes", publicName: "maxFileSizeBytes", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, directoryId: { classPropertyName: "directoryId", publicName: "directoryId", isSignal: true, isRequired: false, transformFunction: null }, startDirectory: { classPropertyName: "startDirectory", publicName: "startDirectory", isSignal: true, isRequired: false, transformFunction: null }, fileTypes: { classPropertyName: "fileTypes", publicName: "fileTypes", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", changeEvent: "change", dragFilesEvent: "dragFiles", failedUploadEvent: "failedUpload" }, viewQueries: [{ propertyName: "fileInputEl", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
318
- }
319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FileInputComponentBase, decorators: [{
320
- type: Directive
321
- }], propDecorators: { value: [{
322
- type: Input
323
- }] } });
324
- function isMimeTypeMatching(file, mimeType) {
325
- if (mimeType === '*')
326
- return true;
327
- if (mimeType.endsWith('/*')) {
328
- const prefix = mimeType.slice(0, -2);
329
- return file.type.startsWith(prefix);
330
- }
331
- return file.type === mimeType;
332
- }
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9maWxlLWlucHV0cy9maWxlLWlucHV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUVsQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHNUUsT0FBTyxFQUF5QiwyQkFBMkIsRUFBc0IsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHNUcsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSx1QkFBdUI7SUFEN0U7O1FBSW1CLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBSXZELGdCQUFXLEdBQUcsU0FBUyxDQUErQixXQUFXLENBQUMsQ0FBQztRQUVuRSxTQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBWXhCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBTy9CLGNBQWM7UUFDTCxZQUFPLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU1RixZQUFZO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBZSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxD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S0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7K0dBaFdtQix1QkFBdUI7bUdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFENUMsU0FBUzs4QkErRkosS0FBSztzQkFEUixLQUFLOztBQXNRUixTQUFTLGtCQUFrQixDQUFDLElBQVUsRUFBRSxRQUFnQjtJQUN0RCxJQUFJLFFBQVEsS0FBSyxHQUFHO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDbEMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDNUIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIGlucHV0LFxyXG4gIE9uSW5pdCxcclxuICBvdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG4gIHZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSxcclxuICBjb2VyY2VOdW1iZXJQcm9wZXJ0eSxcclxuICBGaWxlU3lzdGVtTWV0aG9kLFxyXG4gIEZpbGVTeXN0ZW1TZXJ2aWNlLFxyXG4gIEZpbGVTeXN0ZW1TdGFydERpcmVjdG9yeSxcclxufSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IGlzRGVmaW5lZCB9IGZyb20gJ3NpbXBsZS1ib29sJztcclxuaW1wb3J0IHsgX0Zvcm1GaWVsZENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9faW50ZXJuYWwvZm9ybS1maWVsZC1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJy4uL3R5cGVzL3V0aWxpdHkudHlwZXMnO1xyXG5pbXBvcnQgeyBfRmlsZUlucHV0QmFzZURlZmF1bHRzIH0gZnJvbSAnLi9maWxlLWlucHV0LWJhc2UuZGVmYXVsdHMnO1xyXG5pbXBvcnQgeyBGaWxlSW5wdXRGYWlsZWRVcGxvYWQsIEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbiwgRmlsZUlucHV0RmlsZVR5cGVzIH0gZnJvbSAnLi9maWxlLWlucHV0LXR5cGVzJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX0ZpbGVJbnB1dENvbXBvbmVudEJhc2UgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlYWRvbmx5IF9ERUZBVUxUUyE6IF9GaWxlSW5wdXRCYXNlRGVmYXVsdHM7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVTeXN0ZW1TZXJ2aWNlID0gaW5qZWN0KEZpbGVTeXN0ZW1TZXJ2aWNlKTtcclxuXHJcbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29tcG9uZW50SWQ6IHN0cmluZztcclxuXHJcbiAgcmVhZG9ubHkgZmlsZUlucHV0RWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2ZpbGVJbnB1dCcpO1xyXG5cclxuICByZWFkb25seSBuYW1lID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICAgIGlmICghKHdpbmRvdy5GaWxlICYmIHdpbmRvdy5GaWxlUmVhZGVyICYmIHdpbmRvdy5CbG9iKSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgIGBBUkQtRlQke3RoaXMuY29tcG9uZW50SWR9MDogQ2Fubm90IHVzZSBBcmRpdW0gVUkgZmlsZSBmZWF0dXJlcyBiZWNhdXNlIHRoaXMgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgaGFuZGxpbmchYFxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJvdGVjdGVkIF93YXNWaWV3SW5pdCA9IGZhbHNlO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3dhc1ZpZXdJbml0ID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLl91cGRhdGVFbGVtZW50VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8vISBhcHBlYXJhbmNlXHJcbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgLy8hIHNldHRpbmdzXHJcbiAgcmVhZG9ubHkgbXVsdGlwbGUgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcbiAgcmVhZG9ubHkgbWF4RmlsZXMgPSBpbnB1dDxOdWxsYWJsZTxudW1iZXI+LCBhbnk+KG51bGwsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIG51bGwpIH0pO1xyXG5cclxuICByZWFkb25seSBtYXhGaWxlc1dpdGhNdWx0aXBsZSA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4gKHRoaXMubXVsdGlwbGUoKSA/IHRoaXMubWF4RmlsZXMoKSA/PyBJbmZpbml0eSA6IDEpKTtcclxuXHJcbiAgcmVhZG9ubHkgYmxvY2tBZnRlclVwbG9hZCA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgZ2V0IHNob3VsZEJlQmxvY2tlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmJsb2NrQWZ0ZXJVcGxvYWQoKSAmJiBpc0RlZmluZWQodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBtYXhGaWxlU2l6ZUJ5dGVzID0gaW5wdXQ8TnVsbGFibGU8bnVtYmVyPiwgYW55PihudWxsLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCBudWxsKSB9KTtcclxuXHJcbiAgcmVhZG9ubHkgYWNjZXB0ID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10+KCcqJyk7XHJcbiAgcmVhZG9ubHkgZGlyZWN0b3J5SWQgPSBpbnB1dDxOdWxsYWJsZTxzdHJpbmc+Pih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5IHN0YXJ0RGlyZWN0b3J5ID0gaW5wdXQ8TnVsbGFibGU8RmlsZVN5c3RlbVN0YXJ0RGlyZWN0b3J5Pj4odW5kZWZpbmVkKTtcclxuICByZWFkb25seSBmaWxlVHlwZXMgPSBpbnB1dDxOdWxsYWJsZTxGaWxlSW5wdXRGaWxlVHlwZXM+Pih1bmRlZmluZWQpO1xyXG5cclxuICByZWFkb25seSBhY2NlcHRTdHJpbmcgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcclxuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5maWxlVHlwZXMoKTtcclxuICAgIGlmICh0eXBlcykge1xyXG4gICAgICBjb25zdCBhY2NlcHRFbnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcclxuICAgICAgICBpZiAodHlwZS5hY2NlcHQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgbWltZVR5cGUgaW4gdHlwZS5hY2NlcHQpIHtcclxuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9ucyA9IHR5cGUuYWNjZXB0W21pbWVUeXBlXTtcclxuICAgICAgICAgICAgaWYgKGV4dGVuc2lvbnMgJiYgZXh0ZW5zaW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgYWNjZXB0RW50cmllcy5wdXNoKC4uLmV4dGVuc2lvbnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhY2NlcHRFbnRyaWVzLmpvaW4oJywnKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY2NlcHQgPSB0aGlzLmFjY2VwdCgpO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYWNjZXB0KSkge1xyXG4gICAgICByZXR1cm4gYWNjZXB0LmpvaW4oJywnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWNjZXB0O1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBhY2NlcHRlZE1pbWVUeXBlcyA9IGNvbXB1dGVkPHsgbWltZVR5cGU6IHN0cmluZzsgZXh0ZW5zaW9uczogU2V0PHN0cmluZz4gfVtdIHwgbnVsbD4oKCkgPT4ge1xyXG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmZpbGVUeXBlcygpO1xyXG4gICAgaWYgKHR5cGVzKSB7XHJcbiAgICAgIGNvbnN0IG1pbWVUeXBlczogeyBtaW1lVHlwZTogc3RyaW5nOyBleHRlbnNpb25zOiBTZXQ8c3RyaW5nPiB9W10gPSBbXTtcclxuICAgICAgZm9yIChjb25zdCB0eXBlIG9mIHR5cGVzKSB7XHJcbiAgICAgICAgaWYgKHR5cGUuYWNjZXB0KSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IG1pbWVUeXBlIGluIHR5cGUuYWNjZXB0KSB7XHJcbiAgICAgICAgICAgIG1pbWVUeXBlcy5wdXNoKHsgbWltZVR5cGUsIGV4dGVuc2lvbnM6IG5ldyBTZXQodHlwZS5hY2NlcHRbbWltZVR5cGVdKSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG1pbWVUeXBlcztcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH0pO1xyXG5cclxuICAvLyEgdmFsdWVcclxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBGaWxlW10gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKVxyXG4gIGdldCB2YWx1ZSgpOiBGaWxlW10gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgc2V0IHZhbHVlKHY6IEZpbGUgfCBGaWxlW10gfCBudWxsKSB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodik7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG91dHB1dDxGaWxlW10gfCBudWxsPigpO1xyXG4gIHJlYWRvbmx5IGNoYW5nZUV2ZW50ID0gb3V0cHV0PEZpbGVbXSB8IG51bGw+KHsgYWxpYXM6ICdjaGFuZ2UnIH0pO1xyXG4gIHJlYWRvbmx5IGRyYWdGaWxlc0V2ZW50ID0gb3V0cHV0PEZpbGVbXT4oeyBhbGlhczogJ2RyYWdGaWxlcycgfSk7XHJcbiAgcmVhZG9ubHkgZmFpbGVkVXBsb2FkRXZlbnQgPSBvdXRwdXQ8RmlsZUlucHV0RmFpbGVkVXBsb2FkW10+KHsgYWxpYXM6ICdmYWlsZWRVcGxvYWQnIH0pO1xyXG5cclxuICBwcm90ZWN0ZWQgX3ZhbHVlQmVmb3JlSW5pdDogRmlsZVtdIHwgbnVsbCA9IG51bGw7XHJcbiAgd3JpdGVWYWx1ZSh2OiBGaWxlIHwgRmlsZVtdIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy5fd3JpdGVWYWx1ZSh2LCBmYWxzZSk7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfd3JpdGVWYWx1ZSh2OiBGaWxlIHwgRmlsZVtdIHwgbnVsbCwgZW1pdEV2ZW50cyA9IHRydWUpOiB2b2lkIHtcclxuICAgIGlmICghKHYgaW5zdGFuY2VvZiBGaWxlKSAmJiAhQXJyYXkuaXNBcnJheSh2KSAmJiB2ICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgbmV3IEVycm9yKGBBUkQtRlQke3RoaXMuY29tcG9uZW50SWR9MTogPGFyZC1maWxlLWlucHV0PidzIHZhbHVlIG11c3QgYmUgYSBGaWxlLCBhbiBhcnJheSBvZiBGaWxlcywgb3IgbnVsbC5gKVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodiBpbnN0YW5jZW9mIEZpbGUpIHtcclxuICAgICAgdiA9IFt2XTtcclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHYpICYmICF0aGlzLm11bHRpcGxlKCkgJiYgdi5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBgQVJELVdBJHt0aGlzLmNvbXBvbmVudElkfTI6IDxhcmQtZmlsZS1pbnB1dD4gcmVjZWl2ZWQgYW4gYXJyYXkgb2YgZmlsZXMgYnV0IHRoZSAnbXVsdGlwbGUnIGlucHV0IGlzIG5vdCBzZXQgdG8gdHJ1ZS4gT25seSB0aGUgZmlyc3QgZmlsZSB3aWxsIGJlIHVzZWQuYFxyXG4gICAgICApO1xyXG4gICAgICB2ID0gW3ZbMF1dO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgdi5sZW5ndGggPT09IDApIHtcclxuICAgICAgdiA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHYgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgnaWRsZScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgndXBsb2FkZWQnKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuXHJcbiAgICBpZiAodGhpcy5fd2FzVmlld0luaXQpIHRoaXMuX3VwZGF0ZUVsZW1lbnRWYWx1ZSgpO1xyXG5cclxuICAgIGlmIChlbWl0RXZlbnRzKSB7XHJcbiAgICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfZW1pdENoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlO1xyXG4gICAgdGhpcy5fb25DaGFuZ2VSZWdpc3RlcmVkPy4odik7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XHJcbiAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQodik7XHJcbiAgfVxyXG5cclxuICBvcGVuQnJvd3NlRGlhbG9nKCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLl9maWxlU3lzdGVtU2VydmljZS5pc0ZpbGVTeXN0ZW1BUElTdXBwb3J0ZWQoJ3Nob3dPcGVuRmlsZVBpY2tlcicpICYmXHJcbiAgICAgICh0aGlzLmRpcmVjdG9yeUlkKCkgfHwgdGhpcy5zdGFydERpcmVjdG9yeSgpIHx8IHRoaXMuZmlsZVR5cGVzKCkpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5fZmlsZVN5c3RlbVNlcnZpY2VcclxuICAgICAgICAucmVxdWVzdEZpbGVVcGxvYWQoe1xyXG4gICAgICAgICAgbWV0aG9kOiBGaWxlU3lzdGVtTWV0aG9kLlByZWZlckZpbGVTeXN0ZW0sXHJcbiAgICAgICAgICBtdWx0aXBsZTogdGhpcy5tdWx0aXBsZSgpLFxyXG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IHRoaXMuZGlyZWN0b3J5SWQoKSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICBzdGFydERpcmVjdG9yeTogdGhpcy5zdGFydERpcmVjdG9yeSgpID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHR5cGVzOiB0aGlzLmZpbGVUeXBlcygpID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGFjY2VwdDogdGhpcy5hY2NlcHQoKSA9PT0gJyonID8gdW5kZWZpbmVkIDogdGhpcy5hY2NlcHQoKSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50aGVuKGZpbGVPckZpbGVzID0+IHtcclxuICAgICAgICAgIGlmICghZmlsZU9yRmlsZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5fd3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgnaWRsZScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmlzQXJyYXkoZmlsZU9yRmlsZXMpID8gZmlsZU9yRmlsZXMgOiBbZmlsZU9yRmlsZXNdO1xyXG4gICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl93cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuX3dyaXRlVmFsdWUoZmlsZXMpO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgndXBsb2FkZWQnKTtcclxuICAgICAgICAgIC8vIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpbGVJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIC8vISB0ZW1wb3JhcnkgdmFsdWVcclxuICAvL2ZvciBkcmFnIGV2ZW50IGhhbmRsaW5nXHJcbiAgcHJvdGVjdGVkIF9kcmFnZ2VkRmlsZXM6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyEgdmlldyBzdGF0ZVxyXG4gIHJlYWRvbmx5IGN1cnJlbnRWaWV3U3RhdGUgPSBzaWduYWw8J2lkbGUnIHwgJ2RyYWdvdmVyJyB8ICd1cGxvYWRlZCc+KCdpZGxlJyk7XHJcbiAgcHJpdmF0ZSBfYmVmb3JlRHJhZ292ZXJTdGF0ZTogJ2lkbGUnIHwgJ3VwbG9hZGVkJyA9ICdpZGxlJztcclxuXHJcbiAgLy8hIGV2ZW50IGhhbmRsZXJzXHJcbiAgb25EcmFnb3ZlcihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVCbG9ja2VkKSB7XHJcbiAgICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyKSByZXR1cm47XHJcblxyXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VycmVudFZpZXdTdGF0ZSgpID09PSAnZHJhZ292ZXInKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fZHJhZ2dlZEZpbGVzID0gdGhpcy5fY291bnREcmFnZW50ZXJGaWxlcyhldmVudC5kYXRhVHJhbnNmZXIpO1xyXG5cclxuICAgIGlmICghdGhpcy5fZHJhZ2dlZEZpbGVzKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fYmVmb3JlRHJhZ292ZXJTdGF0ZSA9IHRoaXMuY3VycmVudFZpZXdTdGF0ZSgpIGFzICdpZGxlJyB8ICd1cGxvYWRlZCc7XHJcbiAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdkcmFnb3ZlcicpO1xyXG4gIH1cclxuICBvbkRyYWdsZWF2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNob3VsZEJlQmxvY2tlZCkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFZpZXdTdGF0ZSgpICE9PSAnZHJhZ292ZXInKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCh0aGlzLl9iZWZvcmVEcmFnb3ZlclN0YXRlKTtcclxuICB9XHJcbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVCbG9ja2VkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZmlsZWxpc3QgPSBldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzO1xyXG4gICAgaWYgKCFmaWxlbGlzdCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZpbGVzID0gQXJyYXkuZnJvbShmaWxlbGlzdCk7XHJcbiAgICBpZiAoIWZpbGVzKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ2lkbGUnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsdGVyZWRGaWxlczogRmlsZVtdID0gW107XHJcbiAgICBjb25zdCBmYWlsZWRGaWxlczogRmlsZUlucHV0RmFpbGVkVXBsb2FkW10gPSBbXTtcclxuICAgIGNvbnN0IGFjY2VwdGVkTWltZVR5cGVzID0gdGhpcy5hY2NlcHRlZE1pbWVUeXBlcygpO1xyXG4gICAgaWYgKGFjY2VwdGVkTWltZVR5cGVzKSB7XHJcbiAgICAgIGxldCBtaW1lVHlwZU1hdGNoZWQgPSBmYWxzZTtcclxuICAgICAgZmlsZUxvb3A6IGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICAgIGNvbnN0IHsgc2hvdWxkQWNjZXB0LCByZWFzb24gfSA9IHRoaXMuX2ZpbHRlckZpbGVzQmFzZWRPblNpemVBbmRDb3VudChmaWxlLCBmaWx0ZXJlZEZpbGVzLmxlbmd0aCk7XHJcbiAgICAgICAgaWYgKCFzaG91bGRBY2NlcHQpIHtcclxuICAgICAgICAgIGZhaWxlZEZpbGVzLnB1c2goeyBmaWxlLCByZWFzb246IHJlYXNvbiEgfSk7XHJcbiAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG1pbWVUeXBlTWF0Y2hlZCA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAoY29uc3QgbWltZVR5cGVPYmogb2YgYWNjZXB0ZWRNaW1lVHlwZXMpIHtcclxuICAgICAgICAgIGlmIChpc01pbWVUeXBlTWF0Y2hpbmcoZmlsZSwgbWltZVR5cGVPYmoubWltZVR5cGUpKSB7XHJcbiAgICAgICAgICAgIG1pbWVUeXBlTWF0Y2hlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb24gPSAnLicgKyBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgaWYgKG1pbWVUeXBlT2JqLmV4dGVuc2lvbnMuc2l6ZSA9PT0gMCB8fCBtaW1lVHlwZU9iai5leHRlbnNpb25zLmhhcygnKicpIHx8IG1pbWVUeXBlT2JqLmV4dGVuc2lvbnMuaGFzKGV4dGVuc2lvbikpIHtcclxuICAgICAgICAgICAgICBmaWx0ZXJlZEZpbGVzLnB1c2goZmlsZSk7XHJcbiAgICAgICAgICAgICAgY29udGludWUgZmlsZUxvb3A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFtaW1lVHlwZU1hdGNoZWQpIHtcclxuICAgICAgICAgIGZhaWxlZEZpbGVzLnB1c2goeyBmaWxlLCByZWFzb246IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbi5JbnZhbGlkTWltZVR5cGUgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZhaWxlZEZpbGVzLnB1c2goeyBmaWxlLCByZWFzb246IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbi5NaW1lVHlwZUZvdW5kQnV0RXh0ZW5zaW9uTm90QWxsb3dlZCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGFjY2VwdCA9IHRoaXMuYWNjZXB0KCk7XHJcbiAgICAgIGxldCBhY2NlcHRFbnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhY2NlcHQpKSB7XHJcbiAgICAgICAgYWNjZXB0RW50cmllcyA9IGFjY2VwdC5tYXAoZSA9PiBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhY2NlcHRFbnRyaWVzID0gYWNjZXB0LnNwbGl0KCcsJykubWFwKGUgPT4gZS50cmltKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVvZiBhY2NlcHQgPT09ICdzdHJpbmcnICYmIGFjY2VwdCA9PT0gJyonKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgICAgICBjb25zdCB7IHNob3VsZEFjY2VwdCwgcmVhc29uIH0gPSB0aGlzLl9maWx0ZXJGaWxlc0Jhc2VkT25TaXplQW5kQ291bnQoZmlsZSwgZmlsdGVyZWRGaWxlcy5sZW5ndGgpO1xyXG4gICAgICAgICAgaWYgKCFzaG91bGRBY2NlcHQpIHtcclxuICAgICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogcmVhc29uISB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmlsZUxvb3A6IGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICAgICAgY29uc3QgeyBzaG91bGRBY2NlcHQsIHJlYXNvbiB9ID0gdGhpcy5fZmlsdGVyRmlsZXNCYXNlZE9uU2l6ZUFuZENvdW50KGZpbGUsIGZpbHRlcmVkRmlsZXMubGVuZ3RoKTtcclxuICAgICAgICAgIGlmICghc2hvdWxkQWNjZXB0KSB7XHJcbiAgICAgICAgICAgIGZhaWxlZEZpbGVzLnB1c2goeyBmaWxlLCByZWFzb246IHJlYXNvbiEgfSk7XHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9ICcuJyArIGZpbGUubmFtZS5zcGxpdCgnLicpLmF0KC0xKT8udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgYWNjZXB0RW50cmllcykge1xyXG4gICAgICAgICAgICBpZiAoZXh0ZW5zaW9uID09PSBlbnRyeSkge1xyXG4gICAgICAgICAgICAgIGZpbHRlcmVkRmlsZXMucHVzaChmaWxlKTtcclxuICAgICAgICAgICAgICBjb250aW51ZSBmaWxlTG9vcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLkludmFsaWRFeHRlbnNpb24gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kcmFnRmlsZXNFdmVudC5lbWl0KGZpbHRlcmVkRmlsZXMpO1xyXG4gICAgdGhpcy5mYWlsZWRVcGxvYWRFdmVudC5lbWl0KGZhaWxlZEZpbGVzKTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCd1cGxvYWRlZCcpO1xyXG4gICAgdGhpcy5fd3JpdGVWYWx1ZShmaWx0ZXJlZEZpbGVzLmxlbmd0aCA+IDAgPyBmaWx0ZXJlZEZpbGVzIDogbnVsbCk7XHJcbiAgfVxyXG4gIG9uSW5wdXRDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odGhpcy5maWxlSW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LmZpbGVzID8/IFtdKTtcclxuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5fd3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgnaWRsZScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKGZpbGVzKTtcclxuICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ3VwbG9hZGVkJyk7XHJcbiAgfVxyXG5cclxuICAvLyEgaGVscGVyc1xyXG4gIHByaXZhdGUgX2ZpbHRlckZpbGVzQmFzZWRPblNpemVBbmRDb3VudChcclxuICAgIGZpbGU6IEZpbGUsXHJcbiAgICBleGlzdGluZ0ZpbGVDb3VudDogbnVtYmVyXHJcbiAgKTogeyBzaG91bGRBY2NlcHQ6IGJvb2xlYW47IHJlYXNvbj86IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbiB9IHtcclxuICAgIC8vIGNoZWNrIGNvdW50XHJcbiAgICBpZiAoZXhpc3RpbmdGaWxlQ291bnQgPj0gdGhpcy5tYXhGaWxlc1dpdGhNdWx0aXBsZSgpKSB7XHJcbiAgICAgIHJldHVybiB7IHNob3VsZEFjY2VwdDogZmFsc2UsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLlRvb01hbnlGaWxlcyB9O1xyXG4gICAgfVxyXG4gICAgLy8gY2hlY2sgc2l6ZVxyXG4gICAgaWYgKGZpbGUuc2l6ZSA+IDAgJiYgdGhpcy5tYXhGaWxlU2l6ZUJ5dGVzKCkgIT09IG51bGwgJiYgZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZUJ5dGVzKCkhKSB7XHJcbiAgICAgIHJldHVybiB7IHNob3VsZEFjY2VwdDogZmFsc2UsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLkZpbGVUb29CaWcgfTtcclxuICAgIH1cclxuICAgIC8vIGFsbCBnb29kXHJcbiAgICByZXR1cm4geyBzaG91bGRBY2NlcHQ6IHRydWUgfTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF9jb3VudERyYWdlbnRlckZpbGVzKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICghZGF0YSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZGF0YS5pdGVtcykuZmlsdGVyKGl0ZW0gPT4gaXRlbS5raW5kID09PSAnZmlsZScpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfdXBkYXRlRWxlbWVudFZhbHVlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWU7XHJcblxyXG4gICAgY29uc3QgaW5wdXRFbCA9IHRoaXMuZmlsZUlucHV0RWwoKT8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghaW5wdXRFbCkgcmV0dXJuO1xyXG4gICAgaWYgKCF2KSB7XHJcbiAgICAgIGlucHV0RWwuZmlsZXMgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0YVRyYW5zZmVyID0gbmV3IERhdGFUcmFuc2ZlcigpO1xyXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIHYpIHtcclxuICAgICAgZGF0YVRyYW5zZmVyLml0ZW1zLmFkZChmaWxlKTtcclxuICAgIH1cclxuICAgIGlucHV0RWwuZmlsZXMgPSBkYXRhVHJhbnNmZXIuZmlsZXM7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc01pbWVUeXBlTWF0Y2hpbmcoZmlsZTogRmlsZSwgbWltZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIGlmIChtaW1lVHlwZSA9PT0gJyonKSByZXR1cm4gdHJ1ZTtcclxuICBpZiAobWltZVR5cGUuZW5kc1dpdGgoJy8qJykpIHtcclxuICAgIGNvbnN0IHByZWZpeCA9IG1pbWVUeXBlLnNsaWNlKDAsIC0yKTtcclxuICAgIHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aChwcmVmaXgpO1xyXG4gIH1cclxuICByZXR1cm4gZmlsZS50eXBlID09PSBtaW1lVHlwZTtcclxufVxyXG4iXX0=
@@ -1,8 +0,0 @@
1
- export const FileInputFailedUploadReason = {
2
- InvalidMimeType: 'InvalidMimeType',
3
- MimeTypeFoundButExtensionNotAllowed: 'MimeTypeFoundButExtensionNotAllowed',
4
- InvalidExtension: 'InvalidExtension',
5
- FileTooBig: 'FileTooBig',
6
- TooManyFiles: 'TooManyFiles',
7
- };
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZmlsZS1pbnB1dHMvZmlsZS1pbnB1dC10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQ0EsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUc7SUFDekMsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxtQ0FBbUMsRUFBRSxxQ0FBcUM7SUFDMUUsZ0JBQWdCLEVBQUUsa0JBQWtCO0lBQ3BDLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFlBQVksRUFBRSxjQUFjO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZpbGVJbnB1dEJyb3dzZUNvbnRleHQge1xyXG4gIGJyb3dzZTogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlSW5wdXRGaWxlQW1vdW50Q29udGV4dCBleHRlbmRzIEZpbGVJbnB1dEJyb3dzZUNvbnRleHQge1xyXG4gIGFtb3VudDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVJbnB1dEZpbGVzQ29udGV4dCBleHRlbmRzIEZpbGVJbnB1dEZpbGVBbW91bnRDb250ZXh0IHtcclxuICAkaW1wbGljaXQ6IEZpbGVbXTtcclxuICBmaWxlczogRmlsZVtdO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGaWxlSW5wdXRGaWxlVHlwZSA9IHtcclxuICAvKipcclxuICAgKiBBbiBvcHRpb25hbCBkZXNjaXB0aW9uIG9mIHRoZSBjYXRlZ29yeSBvZiBmaWxlIHR5cGVzIGFsbG93ZWQuIERlZmF1bHQgdG8gYmUgYW4gZW1wdHkgc3RyaW5nLlxyXG4gICAqL1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEFuIG9iamVjdCB3aXRoIHRoZSBrZXlzIHNldCB0byB0aGUgTUlNRSB0eXBlIGFuZCB0aGUgdmFsdWVzIGFuIGFycmF5IG9mIGZpbGUgZXh0ZW5zaW9ucyAoc2VlIGJlbG93IGZvciBhbiBleGFtcGxlKS5cclxuICAgKiBgYGB0c1xyXG4gICAqIHJlYWRvbmx5IEZJTEVfVFlQRVMgPSBbXHJcbiAgICogICB7XHJcbiAgICogICAgIGRlc2NyaXB0aW9uOiBcIlRleHQgZmlsZVwiLFxyXG4gICAqICAgICBhY2NlcHQ6IHsgXCJ0ZXh0L3BsYWluXCI6IFtcIi50eHRcIl0gfSxcclxuICAgKiAgIH0sXHJcbiAgICogXTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBhY2NlcHQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIEZpbGVJbnB1dEZpbGVUeXBlcyA9IEZpbGVJbnB1dEZpbGVUeXBlW107XHJcblxyXG5leHBvcnQgY29uc3QgRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uID0ge1xyXG4gIEludmFsaWRNaW1lVHlwZTogJ0ludmFsaWRNaW1lVHlwZScsXHJcbiAgTWltZVR5cGVGb3VuZEJ1dEV4dGVuc2lvbk5vdEFsbG93ZWQ6ICdNaW1lVHlwZUZvdW5kQnV0RXh0ZW5zaW9uTm90QWxsb3dlZCcsXHJcbiAgSW52YWxpZEV4dGVuc2lvbjogJ0ludmFsaWRFeHRlbnNpb24nLFxyXG4gIEZpbGVUb29CaWc6ICdGaWxlVG9vQmlnJyxcclxuICBUb29NYW55RmlsZXM6ICdUb29NYW55RmlsZXMnLFxyXG59IGFzIGNvbnN0O1xyXG5leHBvcnQgdHlwZSBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb24gPSB0eXBlb2YgRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uW2tleW9mIHR5cGVvZiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb25dO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWxlSW5wdXRGYWlsZWRVcGxvYWQge1xyXG4gIGZpbGU6IEZpbGU7XHJcbiAgcmVhc29uOiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb247XHJcbn0iXX0=
@@ -1,17 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { ArdiumErrorDirective } from './error.directive';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./error.directive";
5
- export class ArdiumErrorComponent {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ArdiumErrorComponent, selector: "ard-error", hostDirectives: [{ directive: i1.ArdiumErrorDirective }], ngImport: i0, template: '<ng-content />', isInline: true }); }
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumErrorComponent, decorators: [{
10
- type: Component,
11
- args: [{
12
- selector: 'ard-error',
13
- template: '<ng-content />',
14
- hostDirectives: [{ directive: ArdiumErrorDirective }],
15
- }]
16
- }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9mb3JtLWZpZWxkL2Vycm9yL2Vycm9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFPekQsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO21HQUFwQixvQkFBb0IsMkdBSHJCLGdCQUFnQjs7NEZBR2Ysb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDO2lCQUN0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcmRpdW1FcnJvckRpcmVjdGl2ZSB9IGZyb20gJy4vZXJyb3IuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXJkLWVycm9yJyxcclxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50IC8+JyxcclxuICBob3N0RGlyZWN0aXZlczogW3sgZGlyZWN0aXZlOiBBcmRpdW1FcnJvckRpcmVjdGl2ZSB9XSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bUVycm9yQ29tcG9uZW50IHt9XHJcbiJdfQ==
@@ -1,17 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ArdiumErrorDirective {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ArdiumErrorDirective, isStandalone: true, selector: "[ard-error]", host: { properties: { "class.ard-error": "true" } }, ngImport: i0 }); }
6
- }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumErrorDirective, decorators: [{
8
- type: Directive,
9
- args: [{
10
- selector: '[ard-error]',
11
- standalone: true,
12
- host: {
13
- '[class.ard-error]': 'true',
14
- },
15
- }]
16
- }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9mb3JtLWZpZWxkL2Vycm9yL2Vycm9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVMxQyxNQUFNLE9BQU8sb0JBQW9COytHQUFwQixvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFQaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixtQkFBbUIsRUFBRSxNQUFNO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYXJkLWVycm9yXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBob3N0OiB7XHJcbiAgICAnW2NsYXNzLmFyZC1lcnJvcl0nOiAndHJ1ZScsXHJcbiAgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFyZGl1bUVycm9yRGlyZWN0aXZlIHt9XHJcbiJdfQ==
@@ -1,53 +0,0 @@
1
- import { computed, contentChild, contentChildren, Directive, inject, input } from '@angular/core';
2
- import { coerceBooleanProperty } from '@ardium-ui/devkit';
3
- import { isFunction } from 'simple-bool';
4
- import { SimpleOneAxisAlignment } from '../types/alignment.types';
5
- import { ArdiumErrorDirective } from './error/error.directive';
6
- import { ARD_FORM_FIELD_CONTROL } from './form-field-child.token';
7
- import { ARD_FORM_FIELD_DEFAULTS } from './form-field.defaults';
8
- import { ArdiumHintDirective } from './hint/hint.directive';
9
- import { ArdiumLabelComponent } from './label/label.component';
10
- import * as i0 from "@angular/core";
11
- export class _FormFieldBase {
12
- constructor() {
13
- this._DEFAULTS = inject(ARD_FORM_FIELD_DEFAULTS);
14
- this.alignHintToLeftByDefault = this._DEFAULTS.defaultHintAlign === SimpleOneAxisAlignment.Left;
15
- this.control = contentChild(ARD_FORM_FIELD_CONTROL);
16
- // get controlRequired() {
17
- // const fnOrValue = this.control()?.required;
18
- // return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
19
- // }
20
- this.label = contentChild(ArdiumLabelComponent);
21
- this.hints = contentChildren(ArdiumHintDirective);
22
- this.errors = contentChildren(ArdiumErrorDirective);
23
- this.hasAnyError = computed(() => this.errors()?.length > 0);
24
- this.reserveHintLine = input(this._DEFAULTS.reserveHintLine, { transform: v => coerceBooleanProperty(v) });
25
- }
26
- get controlHasError() {
27
- const fnOrValue = this.control()?.hasError;
28
- return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
29
- }
30
- get controlIsSuccess() {
31
- const fnOrValue = this.control()?.isSuccess;
32
- return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
33
- }
34
- get controlDisabled() {
35
- const fnOrValue = this.control()?.disabled;
36
- return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
37
- }
38
- get controlHtmlId() {
39
- const fnOrValue = this.control()?.htmlId;
40
- return isFunction(fnOrValue) ? fnOrValue() : fnOrValue;
41
- }
42
- ngOnInit() {
43
- if (!this.control()) {
44
- throw new Error(`ARD-FT5110: Form field component requires any control (input) to be present within the element. Found none.`);
45
- }
46
- }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FormFieldBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
48
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: _FormFieldBase, inputs: { reserveHintLine: { classPropertyName: "reserveHintLine", publicName: "reserveHintLine", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "control", first: true, predicate: ARD_FORM_FIELD_CONTROL, descendants: true, isSignal: true }, { propertyName: "label", first: true, predicate: ArdiumLabelComponent, descendants: true, isSignal: true }, { propertyName: "hints", predicate: ArdiumHintDirective, isSignal: true }, { propertyName: "errors", predicate: ArdiumErrorDirective, isSignal: true }], ngImport: i0 }); }
49
- }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FormFieldBase, decorators: [{
51
- type: Directive
52
- }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQXVCLE1BQU0sMEJBQTBCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRy9ELE1BQU0sT0FBZ0IsY0FBYztJQURwQztRQUVxQixjQUFTLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFL0MsNkJBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsS0FBSyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7UUFFbEcsWUFBTyxHQUFHLFlBQVksQ0FBc0Isc0JBQXNCLENBQUMsQ0FBQztRQWtCN0UsMEJBQTBCO1FBQzFCLGdEQUFnRDtRQUNoRCw0REFBNEQ7UUFDNUQsSUFBSTtRQUVLLFVBQUssR0FBRyxZQUFZLENBQXVCLG9CQUFvQixDQUFDLENBQUM7UUFFakUsVUFBSyxHQUFHLGVBQWUsQ0FBc0IsbUJBQW1CLENBQUMsQ0FBQztRQUNsRSxXQUFNLEdBQUcsZUFBZSxDQUF1QixvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JFLGdCQUFXLEdBQUcsUUFBUSxDQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakUsb0JBQWUsR0FBRyxLQUFLLENBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7S0FTOUg7SUFuQ0MsSUFBSSxlQUFlO1FBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUM7UUFDM0MsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksZ0JBQWdCO1FBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksZUFBZTtRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxDQUFDO1FBQzNDLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDZixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxDQUFDO1FBQ3pDLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFhRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkdBQTZHLENBQzlHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQzsrR0F6Q21CLGNBQWM7bUdBQWQsY0FBYyxpT0FLbUIsc0JBQXNCLHdGQXVCdkIsb0JBQW9CLDJFQUVsQixtQkFBbUIseURBQ2pCLG9CQUFvQjs7NEZBL0J4RCxjQUFjO2tCQURuQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGNvbnRlbnRDaGlsZCwgY29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFyZGl1bS11aS9kZXZraXQnO1xyXG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBTaW1wbGVPbmVBeGlzQWxpZ25tZW50IH0gZnJvbSAnLi4vdHlwZXMvYWxpZ25tZW50LnR5cGVzJztcclxuaW1wb3J0IHsgQXJkaXVtRXJyb3JEaXJlY3RpdmUgfSBmcm9tICcuL2Vycm9yL2Vycm9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEFSRF9GT1JNX0ZJRUxEX0NPTlRST0wsIEFyZEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICcuL2Zvcm0tZmllbGQtY2hpbGQudG9rZW4nO1xyXG5pbXBvcnQgeyBBUkRfRk9STV9GSUVMRF9ERUZBVUxUUyB9IGZyb20gJy4vZm9ybS1maWVsZC5kZWZhdWx0cyc7XHJcbmltcG9ydCB7IEFyZGl1bUhpbnREaXJlY3RpdmUgfSBmcm9tICcuL2hpbnQvaGludC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBcmRpdW1MYWJlbENvbXBvbmVudCB9IGZyb20gJy4vbGFiZWwvbGFiZWwuY29tcG9uZW50JztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgX0Zvcm1GaWVsZEJhc2Uge1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBfREVGQVVMVFMgPSBpbmplY3QoQVJEX0ZPUk1fRklFTERfREVGQVVMVFMpO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgYWxpZ25IaW50VG9MZWZ0QnlEZWZhdWx0ID0gdGhpcy5fREVGQVVMVFMuZGVmYXVsdEhpbnRBbGlnbiA9PT0gU2ltcGxlT25lQXhpc0FsaWdubWVudC5MZWZ0O1xyXG5cclxuICByZWFkb25seSBjb250cm9sID0gY29udGVudENoaWxkPEFyZEZvcm1GaWVsZENvbnRyb2w+KEFSRF9GT1JNX0ZJRUxEX0NPTlRST0wpO1xyXG5cclxuICBnZXQgY29udHJvbEhhc0Vycm9yKCkge1xyXG4gICAgY29uc3QgZm5PclZhbHVlID0gdGhpcy5jb250cm9sKCk/Lmhhc0Vycm9yO1xyXG4gICAgcmV0dXJuIGlzRnVuY3Rpb24oZm5PclZhbHVlKSA/IGZuT3JWYWx1ZSgpIDogZm5PclZhbHVlO1xyXG4gIH1cclxuICBnZXQgY29udHJvbElzU3VjY2VzcygpIHtcclxuICAgIGNvbnN0IGZuT3JWYWx1ZSA9IHRoaXMuY29udHJvbCgpPy5pc1N1Y2Nlc3M7XHJcbiAgICByZXR1cm4gaXNGdW5jdGlvbihmbk9yVmFsdWUpID8gZm5PclZhbHVlKCkgOiBmbk9yVmFsdWU7XHJcbiAgfVxyXG4gIGdldCBjb250cm9sRGlzYWJsZWQoKSB7XHJcbiAgICBjb25zdCBmbk9yVmFsdWUgPSB0aGlzLmNvbnRyb2woKT8uZGlzYWJsZWQ7XHJcbiAgICByZXR1cm4gaXNGdW5jdGlvbihmbk9yVmFsdWUpID8gZm5PclZhbHVlKCkgOiBmbk9yVmFsdWU7XHJcbiAgfVxyXG4gIGdldCBjb250cm9sSHRtbElkKCkge1xyXG4gICAgY29uc3QgZm5PclZhbHVlID0gdGhpcy5jb250cm9sKCk/Lmh0bWxJZDtcclxuICAgIHJldHVybiBpc0Z1bmN0aW9uKGZuT3JWYWx1ZSkgPyBmbk9yVmFsdWUoKSA6IGZuT3JWYWx1ZTtcclxuICB9XHJcbiAgLy8gZ2V0IGNvbnRyb2xSZXF1aXJlZCgpIHtcclxuICAvLyAgIGNvbnN0IGZuT3JWYWx1ZSA9IHRoaXMuY29udHJvbCgpPy5yZXF1aXJlZDtcclxuICAvLyAgIHJldHVybiBpc0Z1bmN0aW9uKGZuT3JWYWx1ZSkgPyBmbk9yVmFsdWUoKSA6IGZuT3JWYWx1ZTtcclxuICAvLyB9XHJcblxyXG4gIHJlYWRvbmx5IGxhYmVsID0gY29udGVudENoaWxkPEFyZGl1bUxhYmVsQ29tcG9uZW50PihBcmRpdW1MYWJlbENvbXBvbmVudCk7XHJcblxyXG4gIHJlYWRvbmx5IGhpbnRzID0gY29udGVudENoaWxkcmVuPEFyZGl1bUhpbnREaXJlY3RpdmU+KEFyZGl1bUhpbnREaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGVycm9ycyA9IGNvbnRlbnRDaGlsZHJlbjxBcmRpdW1FcnJvckRpcmVjdGl2ZT4oQXJkaXVtRXJyb3JEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGhhc0FueUVycm9yID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4gdGhpcy5lcnJvcnMoKT8ubGVuZ3RoID4gMCk7XHJcbiAgcmVhZG9ubHkgcmVzZXJ2ZUhpbnRMaW5lID0gaW5wdXQ8Ym9vbGVhbiwgYW55Pih0aGlzLl9ERUZBVUxUUy5yZXNlcnZlSGludExpbmUsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29udHJvbCgpKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICBgQVJELUZUNTExMDogRm9ybSBmaWVsZCBjb21wb25lbnQgcmVxdWlyZXMgYW55IGNvbnRyb2wgKGlucHV0KSB0byBiZSBwcmVzZW50IHdpdGhpbiB0aGUgZWxlbWVudC4gRm91bmQgbm9uZS5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const ARD_FORM_FIELD_CONTROL = new InjectionToken('ard-form-field-control');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jaGlsZC50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvZm9ybS1maWVsZC9mb3JtLWZpZWxkLWNoaWxkLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFZL0MsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHdCQUF3QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBcmRGb3JtRmllbGRDb250cm9sIHtcclxuICBoYXNFcnJvcjogKCgpID0+IGJvb2xlYW4pIHwgYm9vbGVhbjtcclxuICBpc1N1Y2Nlc3M/OiAoKCkgPT4gYm9vbGVhbikgfCBib29sZWFuO1xyXG4gIGRpc2FibGVkOiAoKCkgPT4gYm9vbGVhbikgfCBib29sZWFuO1xyXG4gIGh0bWxJZDogKCgpID0+IHN0cmluZykgfCBzdHJpbmc7XHJcbiAgLy8gcmVtb3ZlZCBmb3Igbm93XHJcbiAgLy8gd2lsbCBicmluZyBiYWNrIHdoZW4gSSBmaWd1cmUgb3V0IGhvdyAoYW5kIGlmKSB0byBwYXNzIGl0IG9udG8gdGhlIGxhYmVsXHJcbiAgLy8gcmVxdWlyZWQ/OiAoKCkgPT4gYm9vbGVhbikgfCBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVJEX0ZPUk1fRklFTERfQ09OVFJPTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcmRGb3JtRmllbGRDb250cm9sPignYXJkLWZvcm0tZmllbGQtY29udHJvbCcpO1xyXG4iXX0=
@@ -1,80 +0,0 @@
1
- import { computed, Directive, inject, Injector, input, runInInjectionContext, signal } from '@angular/core';
2
- import { toObservable } from '@angular/core/rxjs-interop';
3
- import { NgControl, Validators } from '@angular/forms';
4
- import { coerceBooleanProperty } from '@ardium-ui/devkit';
5
- import { map } from 'rxjs';
6
- import { TakeChance as Random } from 'take-chance';
7
- import { ARD_FORM_FIELD_CONTROL } from './form-field-child.token';
8
- import * as i0 from "@angular/core";
9
- export class ArdiumFormFieldNativeInputAdapterDirective {
10
- constructor() {
11
- this._required = input(undefined, {
12
- transform: v => coerceBooleanProperty(v),
13
- alias: 'required',
14
- });
15
- this.isSuccess = input(false, { transform: v => coerceBooleanProperty(v) });
16
- this.disabled = input(false, { transform: v => coerceBooleanProperty(v) });
17
- //! form field related
18
- this._injector = inject(Injector);
19
- this.wasTouched = signal(false);
20
- this._ngControl = null;
21
- this.htmlId = input(Random.id());
22
- this._hasError = input(undefined, {
23
- transform: v => coerceBooleanProperty(v),
24
- alias: 'hasError',
25
- });
26
- this._hasErrorInControl = signal(false);
27
- this.hasError = computed(() => this._hasError() ?? (this.wasTouched() && this._hasErrorInControl()));
28
- }
29
- get required() {
30
- return this._required() ?? !!this._ngControl?.control?.hasValidator(Validators.required);
31
- }
32
- ngOnInit() {
33
- this._ngControl = this._injector.get(NgControl, null);
34
- if (this._ngControl) {
35
- // if (!this._ngControl.valueAccessor || (this && this instanceof (this._ngControl.valueAccessor as any).constructor)) {
36
- // this._ngControl.valueAccessor = this;
37
- // }
38
- this._hasErrorInControl.set(this._ngControl.status === 'INVALID');
39
- this._statusChangesSub = this._ngControl.statusChanges
40
- ?.pipe(map(v => v === 'INVALID'))
41
- .subscribe(v => this._hasErrorInControl.set(v));
42
- if (!this._ngControl.control)
43
- return;
44
- runInInjectionContext(this._injector, () => {
45
- // do not read the next line of code if you are easily frightened
46
- // I'm not proud of this part, but it had to be done. God please forgive me
47
- // I didn't find any other feasible way to detect when the control changes its touched state
48
- // so it had to be hacked like this
49
- toObservable(this._ngControl?.control?.touchedReactive)?.subscribe(v => this.wasTouched.set(v));
50
- });
51
- }
52
- }
53
- ngOnDestroy() {
54
- this._statusChangesSub?.unsubscribe();
55
- }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldNativeInputAdapterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
57
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: ArdiumFormFieldNativeInputAdapterDirective, selector: "ard-form-field > input, ard-form-field > textarea, ard-form-field > select, ard-horizontal-form-field > input, ard-horizontal-form-field > textarea, ard-horizontal-form-field > select", inputs: { _required: { classPropertyName: "_required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, isSuccess: { classPropertyName: "isSuccess", publicName: "isSuccess", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, htmlId: { classPropertyName: "htmlId", publicName: "htmlId", isSignal: true, isRequired: false, transformFunction: null }, _hasError: { classPropertyName: "_hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ard-has-error": "hasError()", "class.ard-is-success": "isSuccess()" } }, providers: [
58
- {
59
- provide: ARD_FORM_FIELD_CONTROL,
60
- useExisting: ArdiumFormFieldNativeInputAdapterDirective,
61
- },
62
- ], ngImport: i0 }); }
63
- }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumFormFieldNativeInputAdapterDirective, decorators: [{
65
- type: Directive,
66
- args: [{
67
- selector: 'ard-form-field > input, ard-form-field > textarea, ard-form-field > select, ard-horizontal-form-field > input, ard-horizontal-form-field > textarea, ard-horizontal-form-field > select',
68
- providers: [
69
- {
70
- provide: ARD_FORM_FIELD_CONTROL,
71
- useExisting: ArdiumFormFieldNativeInputAdapterDirective,
72
- },
73
- ],
74
- host: {
75
- '[class.ard-has-error]': 'hasError()',
76
- '[class.ard-is-success]': 'isSuccess()',
77
- },
78
- }]
79
- }] });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1uYXRpdmUtaW5wdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtbmF0aXZlLWlucHV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLEdBQUcsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsSUFBSSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUF1QixNQUFNLDBCQUEwQixDQUFDOztBQWdCdkYsTUFBTSxPQUFPLDBDQUEwQztJQWR2RDtRQWVXLGNBQVMsR0FBRyxLQUFLLENBQTJCLFNBQVMsRUFBRTtZQUM5RCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7WUFDeEMsS0FBSyxFQUFFLFVBQVU7U0FDbEIsQ0FBQyxDQUFDO1FBS00sY0FBUyxHQUFHLEtBQUssQ0FBZSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckYsYUFBUSxHQUFHLEtBQUssQ0FBZSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxx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QUFZO3dCQUNyQyx3QkFBd0IsRUFBRSxhQUFhO3FCQUN4QztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBEaXJlY3RpdmUsIGluamVjdCwgSW5qZWN0b3IsIGlucHV0LCBydW5JbkluamVjdGlvbkNvbnRleHQsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYXJkaXVtLXVpL2RldmtpdCc7XHJcbmltcG9ydCB7IG1hcCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRha2VDaGFuY2UgYXMgUmFuZG9tIH0gZnJvbSAndGFrZS1jaGFuY2UnO1xyXG5pbXBvcnQgeyBBUkRfRk9STV9GSUVMRF9DT05UUk9MLCBBcmRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnLi9mb3JtLWZpZWxkLWNoaWxkLnRva2VuJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOlxyXG4gICAgJ2FyZC1mb3JtLWZpZWxkID4gaW5wdXQsIGFyZC1mb3JtLWZpZWxkID4gdGV4dGFyZWEsIGFyZC1mb3JtLWZpZWxkID4gc2VsZWN0LCBhcmQtaG9yaXpvbnRhbC1mb3JtLWZpZWxkID4gaW5wdXQsIGFyZC1ob3Jpem9udGFsLWZvcm0tZmllbGQgPiB0ZXh0YXJlYSwgYXJkLWhvcml6b250YWwtZm9ybS1maWVsZCA+IHNlbGVjdCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEFSRF9GT1JNX0ZJRUxEX0NPTlRST0wsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBBcmRpdW1Gb3JtRmllbGROYXRpdmVJbnB1dEFkYXB0ZXJEaXJlY3RpdmUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgaG9zdDoge1xyXG4gICAgJ1tjbGFzcy5hcmQtaGFzLWVycm9yXSc6ICdoYXNFcnJvcigpJyxcclxuICAgICdbY2xhc3MuYXJkLWlzLXN1Y2Nlc3NdJzogJ2lzU3VjY2VzcygpJyxcclxuICB9LFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtRm9ybUZpZWxkTmF0aXZlSW5wdXRBZGFwdGVyRGlyZWN0aXZlIGltcGxlbWVudHMgQXJkRm9ybUZpZWxkQ29udHJvbCB7XHJcbiAgcmVhZG9ubHkgX3JlcXVpcmVkID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZCwgYW55Pih1bmRlZmluZWQsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodiksXHJcbiAgICBhbGlhczogJ3JlcXVpcmVkJyxcclxuICB9KTtcclxuICBnZXQgcmVxdWlyZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQoKSA/PyAhIXRoaXMuX25nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgaXNTdWNjZXNzID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICAvLyEgZm9ybSBmaWVsZCByZWxhdGVkXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gIHJlYWRvbmx5IHdhc1RvdWNoZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBwcml2YXRlIF9zdGF0dXNDaGFuZ2VzU3ViPzogU3Vic2NyaXB0aW9uO1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbmdDb250cm9sID0gdGhpcy5faW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX25nQ29udHJvbCkge1xyXG4gICAgICAvLyBpZiAoIXRoaXMuX25nQ29udHJvbC52YWx1ZUFjY2Vzc29yIHx8ICh0aGlzICYmIHRoaXMgaW5zdGFuY2VvZiAodGhpcy5fbmdDb250cm9sLnZhbHVlQWNjZXNzb3IgYXMgYW55KS5jb25zdHJ1Y3RvcikpIHtcclxuICAgICAgLy8gICB0aGlzLl9uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIHRoaXMuX2hhc0Vycm9ySW5Db250cm9sLnNldCh0aGlzLl9uZ0NvbnRyb2wuc3RhdHVzID09PSAnSU5WQUxJRCcpO1xyXG5cclxuICAgICAgdGhpcy5fc3RhdHVzQ2hhbmdlc1N1YiA9IHRoaXMuX25nQ29udHJvbC5zdGF0dXNDaGFuZ2VzXHJcbiAgICAgICAgPy5waXBlKG1hcCh2ID0+IHYgPT09ICdJTlZBTElEJykpXHJcbiAgICAgICAgLnN1YnNjcmliZSh2ID0+IHRoaXMuX2hhc0Vycm9ySW5Db250cm9sLnNldCh2KSk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuX25nQ29udHJvbC5jb250cm9sKSByZXR1cm47XHJcblxyXG4gICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5faW5qZWN0b3IsICgpID0+IHtcclxuICAgICAgICAvLyBkbyBub3QgcmVhZCB0aGUgbmV4dCBsaW5lIG9mIGNvZGUgaWYgeW91IGFyZSBlYXNpbHkgZnJpZ2h0ZW5lZFxyXG4gICAgICAgIC8vIEknbSBub3QgcHJvdWQgb2YgdGhpcyBwYXJ0LCBidXQgaXQgaGFkIHRvIGJlIGRvbmUuIEdvZCBwbGVhc2UgZm9yZ2l2ZSBtZVxyXG4gICAgICAgIC8vIEkgZGlkbid0IGZpbmQgYW55IG90aGVyIGZlYXNpYmxlIHdheSB0byBkZXRlY3Qgd2hlbiB0aGUgY29udHJvbCBjaGFuZ2VzIGl0cyB0b3VjaGVkIHN0YXRlXHJcbiAgICAgICAgLy8gc28gaXQgaGFkIHRvIGJlIGhhY2tlZCBsaWtlIHRoaXNcclxuICAgICAgICB0b09ic2VydmFibGUoKHRoaXMuX25nQ29udHJvbD8uY29udHJvbCBhcyBhbnkgfCB1bmRlZmluZWQpPy50b3VjaGVkUmVhY3RpdmUgYXMgU2lnbmFsPGJvb2xlYW4+KT8uc3Vic2NyaWJlKHYgPT5cclxuICAgICAgICAgIHRoaXMud2FzVG91Y2hlZC5zZXQodilcclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJvdGVjdGVkIF9uZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICByZWFkb25seSBodG1sSWQgPSBpbnB1dDxzdHJpbmc+KFJhbmRvbS5pZCgpKTtcclxuXHJcbiAgcmVhZG9ubHkgX2hhc0Vycm9yID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZCwgYW55Pih1bmRlZmluZWQsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodiksXHJcbiAgICBhbGlhczogJ2hhc0Vycm9yJyxcclxuICB9KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9oYXNFcnJvckluQ29udHJvbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgaGFzRXJyb3IgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB0aGlzLl9oYXNFcnJvcigpID8/ICh0aGlzLndhc1RvdWNoZWQoKSAmJiB0aGlzLl9oYXNFcnJvckluQ29udHJvbCgpKSk7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RhdHVzQ2hhbmdlc1N1Yj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIl19