@ardium-ui/ui 4.4.2 → 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 (350) hide show
  1. package/fesm2022/ardium-ui-ui.mjs +2482 -2400
  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 +1 -1
  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 +1 -1
  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/option/option.component.d.ts +1 -1
  28. package/lib/slider/abstract-slider.d.ts +1 -1
  29. package/package.json +1 -3
  30. package/prebuilt-themes/default/inputs/{simple-input.css → autocomplete-input.css} +40 -15
  31. package/prebuilt-themes/default/inputs/autocomplete-input.css.map +1 -0
  32. package/prebuilt-themes/default/inputs/input.css +0 -25
  33. package/prebuilt-themes/default/inputs/input.css.map +1 -1
  34. package/public-api.d.ts +1 -1
  35. package/themes/default/inputs/autocomplete-input.scss +46 -0
  36. package/themes/default/inputs/input.scss +0 -34
  37. package/esm2022/ardium-ui-ui.mjs +0 -5
  38. package/esm2022/lib/_internal/boolean-component.mjs +0 -95
  39. package/esm2022/lib/_internal/clear-button/clear-button.component.mjs +0 -15
  40. package/esm2022/lib/_internal/clear-button/clear-button.module.mjs +0 -18
  41. package/esm2022/lib/_internal/disablable-component.mjs +0 -51
  42. package/esm2022/lib/_internal/focusable-component.mjs +0 -85
  43. package/esm2022/lib/_internal/form-field-component.mjs +0 -33
  44. package/esm2022/lib/_internal/item-storages/dropdown-item-storage.mjs +0 -453
  45. package/esm2022/lib/_internal/item-storages/simple-item-storage.mjs +0 -370
  46. package/esm2022/lib/_internal/item-storages/simplest-item-storage.mjs +0 -157
  47. package/esm2022/lib/_internal/models/pagination.model.mjs +0 -90
  48. package/esm2022/lib/_internal/models/queue.mjs +0 -59
  49. package/esm2022/lib/_internal/ngmodel-component.mjs +0 -101
  50. package/esm2022/lib/_internal/public-api.mjs +0 -2
  51. package/esm2022/lib/_internal/selectable-list-component.mjs +0 -271
  52. package/esm2022/lib/badge/badge.defaults.mjs +0 -20
  53. package/esm2022/lib/badge/badge.directive.mjs +0 -97
  54. package/esm2022/lib/badge/badge.module.mjs +0 -18
  55. package/esm2022/lib/badge/badge.types.mjs +0 -16
  56. package/esm2022/lib/badge/index.mjs +0 -5
  57. package/esm2022/lib/buttons/_button-base.defaults.mjs +0 -17
  58. package/esm2022/lib/buttons/_button-base.mjs +0 -26
  59. package/esm2022/lib/buttons/button/button.component.mjs +0 -38
  60. package/esm2022/lib/buttons/button/button.defaults.mjs +0 -17
  61. package/esm2022/lib/buttons/button/button.module.mjs +0 -18
  62. package/esm2022/lib/buttons/button/index.mjs +0 -4
  63. package/esm2022/lib/buttons/fab/fab.component.mjs +0 -33
  64. package/esm2022/lib/buttons/fab/fab.defaults.mjs +0 -17
  65. package/esm2022/lib/buttons/fab/fab.module.mjs +0 -18
  66. package/esm2022/lib/buttons/fab/index.mjs +0 -4
  67. package/esm2022/lib/buttons/general-button.types.mjs +0 -55
  68. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +0 -39
  69. package/esm2022/lib/buttons/icon-button/icon-button.defaults.mjs +0 -9
  70. package/esm2022/lib/buttons/icon-button/icon-button.module.mjs +0 -18
  71. package/esm2022/lib/buttons/icon-button/index.mjs +0 -4
  72. package/esm2022/lib/calendar/calendar.component.mjs +0 -466
  73. package/esm2022/lib/calendar/calendar.defaults.mjs +0 -26
  74. package/esm2022/lib/calendar/calendar.directives.mjs +0 -107
  75. package/esm2022/lib/calendar/calendar.internal-directives.mjs +0 -22
  76. package/esm2022/lib/calendar/calendar.internal-types.mjs +0 -2
  77. package/esm2022/lib/calendar/calendar.module.mjs +0 -71
  78. package/esm2022/lib/calendar/calendar.types.mjs +0 -6
  79. package/esm2022/lib/calendar/index.mjs +0 -6
  80. package/esm2022/lib/calendar/views/days-view/days-view.component.mjs +0 -282
  81. package/esm2022/lib/calendar/views/days-view/days-view.helpers.mjs +0 -65
  82. package/esm2022/lib/calendar/views/months-view/months-view.component.mjs +0 -245
  83. package/esm2022/lib/calendar/views/months-view/months-view.helpers.mjs +0 -22
  84. package/esm2022/lib/calendar/views/years-view/years-view.component.mjs +0 -244
  85. package/esm2022/lib/calendar/views/years-view/years-view.helpers.mjs +0 -14
  86. package/esm2022/lib/card/card.children.mjs +0 -96
  87. package/esm2022/lib/card/card.component.mjs +0 -38
  88. package/esm2022/lib/card/card.defaults.mjs +0 -17
  89. package/esm2022/lib/card/card.module.mjs +0 -59
  90. package/esm2022/lib/card/card.types.mjs +0 -9
  91. package/esm2022/lib/card/index.mjs +0 -6
  92. package/esm2022/lib/checkbox/checkbox.component.mjs +0 -68
  93. package/esm2022/lib/checkbox/checkbox.defaults.mjs +0 -17
  94. package/esm2022/lib/checkbox/checkbox.directives.mjs +0 -14
  95. package/esm2022/lib/checkbox/checkbox.internal-directives.mjs +0 -15
  96. package/esm2022/lib/checkbox/checkbox.module.mjs +0 -20
  97. package/esm2022/lib/checkbox/checkbox.types.mjs +0 -6
  98. package/esm2022/lib/checkbox/index.mjs +0 -6
  99. package/esm2022/lib/checkbox-list/checkbox-list.component.mjs +0 -116
  100. package/esm2022/lib/checkbox-list/checkbox-list.defaults.mjs +0 -25
  101. package/esm2022/lib/checkbox-list/checkbox-list.directives.mjs +0 -14
  102. package/esm2022/lib/checkbox-list/checkbox-list.module.mjs +0 -21
  103. package/esm2022/lib/checkbox-list/checkbox-list.types.mjs +0 -7
  104. package/esm2022/lib/checkbox-list/index.mjs +0 -6
  105. package/esm2022/lib/chip/chip.component.mjs +0 -36
  106. package/esm2022/lib/chip/chip.defaults.mjs +0 -20
  107. package/esm2022/lib/chip/chip.module.mjs +0 -21
  108. package/esm2022/lib/chip/deletable-chip/deletable-chip.component.mjs +0 -53
  109. package/esm2022/lib/chip/deletable-chip/deletable-chip.defaults.mjs +0 -17
  110. package/esm2022/lib/chip/index.mjs +0 -8
  111. package/esm2022/lib/chip/selectable-chip/selectable-chip.component.mjs +0 -53
  112. package/esm2022/lib/chip/selectable-chip/selectable-chip.defaults.mjs +0 -18
  113. package/esm2022/lib/dialog/dialog.component.mjs +0 -109
  114. package/esm2022/lib/dialog/dialog.defaults.mjs +0 -26
  115. package/esm2022/lib/dialog/dialog.directives.mjs +0 -25
  116. package/esm2022/lib/dialog/dialog.module.mjs +0 -21
  117. package/esm2022/lib/dialog/dialog.types.mjs +0 -10
  118. package/esm2022/lib/dialog/index.mjs +0 -6
  119. package/esm2022/lib/divider/divider.component.mjs +0 -19
  120. package/esm2022/lib/divider/divider.defaults.mjs +0 -13
  121. package/esm2022/lib/divider/divider.module.mjs +0 -18
  122. package/esm2022/lib/divider/index.mjs +0 -4
  123. package/esm2022/lib/dropdown-panel/dropdown-panel.component.mjs +0 -112
  124. package/esm2022/lib/dropdown-panel/dropdown-panel.defaults.mjs +0 -17
  125. package/esm2022/lib/dropdown-panel/dropdown-panel.module.mjs +0 -18
  126. package/esm2022/lib/dropdown-panel/dropdown-panel.types.mjs +0 -10
  127. package/esm2022/lib/dropdown-panel/index.mjs +0 -5
  128. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.component.mjs +0 -70
  129. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.defaults.mjs +0 -18
  130. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.directives.mjs +0 -42
  131. package/esm2022/lib/file-inputs/file-drop-area/file-drop-area.module.mjs +0 -52
  132. package/esm2022/lib/file-inputs/file-drop-area/index.mjs +0 -5
  133. package/esm2022/lib/file-inputs/file-input/file-input.component.mjs +0 -120
  134. package/esm2022/lib/file-inputs/file-input/file-input.defaults.mjs +0 -23
  135. package/esm2022/lib/file-inputs/file-input/file-input.directives.mjs +0 -86
  136. package/esm2022/lib/file-inputs/file-input/file-input.module.mjs +0 -55
  137. package/esm2022/lib/file-inputs/file-input/index.mjs +0 -5
  138. package/esm2022/lib/file-inputs/file-input-base.defaults.mjs +0 -8
  139. package/esm2022/lib/file-inputs/file-input-base.mjs +0 -356
  140. package/esm2022/lib/file-inputs/file-input-types.mjs +0 -8
  141. package/esm2022/lib/form-field/error/error.component.mjs +0 -17
  142. package/esm2022/lib/form-field/error/error.directive.mjs +0 -17
  143. package/esm2022/lib/form-field/form-field-base.mjs +0 -53
  144. package/esm2022/lib/form-field/form-field-child.token.mjs +0 -3
  145. package/esm2022/lib/form-field/form-field-native-inputs.mjs +0 -80
  146. package/esm2022/lib/form-field/form-field.component.mjs +0 -12
  147. package/esm2022/lib/form-field/form-field.defaults.mjs +0 -17
  148. package/esm2022/lib/form-field/form-field.module.mjs +0 -49
  149. package/esm2022/lib/form-field/hint/hint.component.mjs +0 -17
  150. package/esm2022/lib/form-field/hint/hint.directive.mjs +0 -30
  151. package/esm2022/lib/form-field/horizontal-form-field.component.mjs +0 -12
  152. package/esm2022/lib/form-field/index.mjs +0 -10
  153. package/esm2022/lib/form-field/label/label.component.mjs +0 -27
  154. package/esm2022/lib/form-field-frame/form-field-frame.component.mjs +0 -58
  155. package/esm2022/lib/form-field-frame/form-field-frame.defaults.mjs +0 -18
  156. package/esm2022/lib/form-field-frame/form-field-frame.directives.mjs +0 -25
  157. package/esm2022/lib/form-field-frame/form-field-frame.module.mjs +0 -19
  158. package/esm2022/lib/form-field-frame/index.mjs +0 -5
  159. package/esm2022/lib/icon/icon.component.mjs +0 -52
  160. package/esm2022/lib/icon/icon.defaults.mjs +0 -17
  161. package/esm2022/lib/icon/icon.module.mjs +0 -19
  162. package/esm2022/lib/icon/icon.pipe.mjs +0 -18
  163. package/esm2022/lib/icon/index.mjs +0 -5
  164. package/esm2022/lib/inputs/_simple-input-base.mjs +0 -153
  165. package/esm2022/lib/inputs/date-input/date-input.component.mjs +0 -375
  166. package/esm2022/lib/inputs/date-input/date-input.defaults.mjs +0 -38
  167. package/esm2022/lib/inputs/date-input/date-input.directive.mjs +0 -163
  168. package/esm2022/lib/inputs/date-input/date-input.module.mjs +0 -108
  169. package/esm2022/lib/inputs/date-input/date-input.serializers.mjs +0 -49
  170. package/esm2022/lib/inputs/date-input/date-input.types.mjs +0 -5
  171. package/esm2022/lib/inputs/date-input/index.mjs +0 -6
  172. package/esm2022/lib/inputs/digit-input/digit-input.component.mjs +0 -265
  173. package/esm2022/lib/inputs/digit-input/digit-input.defaults.mjs +0 -24
  174. package/esm2022/lib/inputs/digit-input/digit-input.model.mjs +0 -267
  175. package/esm2022/lib/inputs/digit-input/digit-input.module.mjs +0 -19
  176. package/esm2022/lib/inputs/digit-input/digit-input.types.mjs +0 -15
  177. package/esm2022/lib/inputs/digit-input/digit-input.utils.mjs +0 -8
  178. package/esm2022/lib/inputs/digit-input/index.mjs +0 -5
  179. package/esm2022/lib/inputs/hex-input/hex-input.component.mjs +0 -180
  180. package/esm2022/lib/inputs/hex-input/hex-input.defaults.mjs +0 -26
  181. package/esm2022/lib/inputs/hex-input/hex-input.directives.mjs +0 -36
  182. package/esm2022/lib/inputs/hex-input/hex-input.model.mjs +0 -97
  183. package/esm2022/lib/inputs/hex-input/hex-input.module.mjs +0 -37
  184. package/esm2022/lib/inputs/hex-input/index.mjs +0 -5
  185. package/esm2022/lib/inputs/input/index.mjs +0 -4
  186. package/esm2022/lib/inputs/input/input.component.mjs +0 -278
  187. package/esm2022/lib/inputs/input/input.defaults.mjs +0 -21
  188. package/esm2022/lib/inputs/input/input.directives.mjs +0 -58
  189. package/esm2022/lib/inputs/input/input.module.mjs +0 -61
  190. package/esm2022/lib/inputs/input-transformers.mjs +0 -66
  191. package/esm2022/lib/inputs/input-types.mjs +0 -6
  192. package/esm2022/lib/inputs/input-utils.mjs +0 -186
  193. package/esm2022/lib/inputs/number-input/index.mjs +0 -5
  194. package/esm2022/lib/inputs/number-input/number-input.component.mjs +0 -250
  195. package/esm2022/lib/inputs/number-input/number-input.defaults.mjs +0 -27
  196. package/esm2022/lib/inputs/number-input/number-input.directives.mjs +0 -14
  197. package/esm2022/lib/inputs/number-input/number-input.module.mjs +0 -21
  198. package/esm2022/lib/inputs/password-input/index.mjs +0 -6
  199. package/esm2022/lib/inputs/password-input/password-input.component.mjs +0 -167
  200. package/esm2022/lib/inputs/password-input/password-input.defaults.mjs +0 -24
  201. package/esm2022/lib/inputs/password-input/password-input.directives.mjs +0 -49
  202. package/esm2022/lib/inputs/password-input/password-input.module.mjs +0 -41
  203. package/esm2022/lib/inputs/password-input/password-input.types.mjs +0 -2
  204. package/esm2022/lib/inputs/simple-input/index.mjs +0 -5
  205. package/esm2022/lib/inputs/simple-input/simple-input.component.mjs +0 -50
  206. package/esm2022/lib/inputs/simple-input/simple-input.defaults.mjs +0 -25
  207. package/esm2022/lib/inputs/simple-input/simple-input.directives.mjs +0 -36
  208. package/esm2022/lib/inputs/simple-input/simple-input.module.mjs +0 -37
  209. package/esm2022/lib/kbd/index.mjs +0 -6
  210. package/esm2022/lib/kbd/kbd.component.mjs +0 -30
  211. package/esm2022/lib/kbd/kbd.defaults.mjs +0 -15
  212. package/esm2022/lib/kbd/kbd.directive.mjs +0 -33
  213. package/esm2022/lib/kbd/kbd.module.mjs +0 -20
  214. package/esm2022/lib/kbd/kbd.pipe.mjs +0 -21
  215. package/esm2022/lib/kbd-shortcut/index.mjs +0 -4
  216. package/esm2022/lib/kbd-shortcut/kbd-shortcut.component.mjs +0 -36
  217. package/esm2022/lib/kbd-shortcut/kbd-shortcut.defaults.mjs +0 -8
  218. package/esm2022/lib/kbd-shortcut/kbd-shortcut.module.mjs +0 -19
  219. package/esm2022/lib/modal/index.mjs +0 -5
  220. package/esm2022/lib/modal/modal.component.mjs +0 -95
  221. package/esm2022/lib/modal/modal.defaults.mjs +0 -20
  222. package/esm2022/lib/modal/modal.directives.mjs +0 -14
  223. package/esm2022/lib/modal/modal.module.mjs +0 -22
  224. package/esm2022/lib/option/index.mjs +0 -3
  225. package/esm2022/lib/option/option.component.mjs +0 -55
  226. package/esm2022/lib/option/option.module.mjs +0 -18
  227. package/esm2022/lib/progress-bar/index.mjs +0 -6
  228. package/esm2022/lib/progress-bar/progress-bar.component.mjs +0 -58
  229. package/esm2022/lib/progress-bar/progress-bar.defaults.mjs +0 -21
  230. package/esm2022/lib/progress-bar/progress-bar.directive.mjs +0 -14
  231. package/esm2022/lib/progress-bar/progress-bar.module.mjs +0 -19
  232. package/esm2022/lib/progress-bar/progress-bar.types.mjs +0 -19
  233. package/esm2022/lib/progress-circle/index.mjs +0 -6
  234. package/esm2022/lib/progress-circle/progress-circle.component.mjs +0 -45
  235. package/esm2022/lib/progress-circle/progress-circle.defaults.mjs +0 -21
  236. package/esm2022/lib/progress-circle/progress-circle.directive.mjs +0 -14
  237. package/esm2022/lib/progress-circle/progress-circle.module.mjs +0 -19
  238. package/esm2022/lib/progress-circle/progress-circle.types.mjs +0 -10
  239. package/esm2022/lib/radio/index.mjs +0 -5
  240. package/esm2022/lib/radio/radio/radio.component.mjs +0 -119
  241. package/esm2022/lib/radio/radio/radio.defaults.mjs +0 -16
  242. package/esm2022/lib/radio/radio-group.component.mjs +0 -203
  243. package/esm2022/lib/radio/radio.module.mjs +0 -19
  244. package/esm2022/lib/search-functions.mjs +0 -64
  245. package/esm2022/lib/segment/index.mjs +0 -6
  246. package/esm2022/lib/segment/segment.component.mjs +0 -125
  247. package/esm2022/lib/segment/segment.defaults.mjs +0 -26
  248. package/esm2022/lib/segment/segment.directives.mjs +0 -14
  249. package/esm2022/lib/segment/segment.module.mjs +0 -19
  250. package/esm2022/lib/segment/segment.types.mjs +0 -13
  251. package/esm2022/lib/select/index.mjs +0 -6
  252. package/esm2022/lib/select/select.component.mjs +0 -836
  253. package/esm2022/lib/select/select.defaults.mjs +0 -53
  254. package/esm2022/lib/select/select.directive.mjs +0 -171
  255. package/esm2022/lib/select/select.module.mjs +0 -112
  256. package/esm2022/lib/select/select.types.mjs +0 -2
  257. package/esm2022/lib/slide-toggle/index.mjs +0 -5
  258. package/esm2022/lib/slide-toggle/slide-toggle.component.mjs +0 -43
  259. package/esm2022/lib/slide-toggle/slide-toggle.defaults.mjs +0 -21
  260. package/esm2022/lib/slide-toggle/slide-toggle.module.mjs +0 -18
  261. package/esm2022/lib/slide-toggle/slide-toggle.types.mjs +0 -5
  262. package/esm2022/lib/slider/abstract-slider.mjs +0 -251
  263. package/esm2022/lib/slider/index.mjs +0 -8
  264. package/esm2022/lib/slider/range-slider/range-slider.component.mjs +0 -151
  265. package/esm2022/lib/slider/range-slider/range-slider.module.mjs +0 -18
  266. package/esm2022/lib/slider/slider.component.mjs +0 -100
  267. package/esm2022/lib/slider/slider.defaults.mjs +0 -14
  268. package/esm2022/lib/slider/slider.directive.mjs +0 -16
  269. package/esm2022/lib/slider/slider.module.mjs +0 -20
  270. package/esm2022/lib/slider/slider.types.mjs +0 -10
  271. package/esm2022/lib/snackbar/index.mjs +0 -5
  272. package/esm2022/lib/snackbar/snackbar-ref.mjs +0 -51
  273. package/esm2022/lib/snackbar/snackbar.component.mjs +0 -48
  274. package/esm2022/lib/snackbar/snackbar.service.mjs +0 -224
  275. package/esm2022/lib/snackbar/snackbar.token.mjs +0 -26
  276. package/esm2022/lib/snackbar/snackbar.types.mjs +0 -25
  277. package/esm2022/lib/spinner/index.mjs +0 -4
  278. package/esm2022/lib/spinner/spinner.component.mjs +0 -19
  279. package/esm2022/lib/spinner/spinner.defaults.mjs +0 -14
  280. package/esm2022/lib/spinner/spinner.module.mjs +0 -18
  281. package/esm2022/lib/star/index.mjs +0 -6
  282. package/esm2022/lib/star/rating-display/index.mjs +0 -6
  283. package/esm2022/lib/star/rating-display/rating-display.component.mjs +0 -71
  284. package/esm2022/lib/star/rating-display/rating-display.defaults.mjs +0 -16
  285. package/esm2022/lib/star/rating-display/rating-display.directives.mjs +0 -16
  286. package/esm2022/lib/star/rating-display/rating-display.module.mjs +0 -20
  287. package/esm2022/lib/star/rating-display/rating-display.types.mjs +0 -2
  288. package/esm2022/lib/star/rating-input/index.mjs +0 -6
  289. package/esm2022/lib/star/rating-input/rating-input.component.mjs +0 -191
  290. package/esm2022/lib/star/rating-input/rating-input.defaults.mjs +0 -17
  291. package/esm2022/lib/star/rating-input/rating-input.directives.mjs +0 -16
  292. package/esm2022/lib/star/rating-input/rating-input.module.mjs +0 -20
  293. package/esm2022/lib/star/rating-input/rating-input.types.mjs +0 -2
  294. package/esm2022/lib/star/star-button/index.mjs +0 -6
  295. package/esm2022/lib/star/star-button/star-button.component.mjs +0 -55
  296. package/esm2022/lib/star/star-button/star-button.defaults.mjs +0 -18
  297. package/esm2022/lib/star/star-button/star-button.directives.mjs +0 -16
  298. package/esm2022/lib/star/star-button/star-button.module.mjs +0 -20
  299. package/esm2022/lib/star/star-button/star-button.types.mjs +0 -2
  300. package/esm2022/lib/star/star.component.mjs +0 -36
  301. package/esm2022/lib/star/star.defaults.mjs +0 -15
  302. package/esm2022/lib/star/star.directives.mjs +0 -16
  303. package/esm2022/lib/star/star.module.mjs +0 -20
  304. package/esm2022/lib/star/star.types.mjs +0 -23
  305. package/esm2022/lib/statebox/index.mjs +0 -4
  306. package/esm2022/lib/statebox/statebox.component.mjs +0 -114
  307. package/esm2022/lib/statebox/statebox.defaults.mjs +0 -20
  308. package/esm2022/lib/statebox/statebox.module.mjs +0 -18
  309. package/esm2022/lib/statebox/statebox.types.mjs +0 -2
  310. package/esm2022/lib/tabber/index.mjs +0 -6
  311. package/esm2022/lib/tabber/tab/tab.component.mjs +0 -44
  312. package/esm2022/lib/tabber/tab/tab.defaults.mjs +0 -13
  313. package/esm2022/lib/tabber/tabber.component.mjs +0 -90
  314. package/esm2022/lib/tabber/tabber.defaults.mjs +0 -19
  315. package/esm2022/lib/tabber/tabber.module.mjs +0 -19
  316. package/esm2022/lib/table/index.mjs +0 -6
  317. package/esm2022/lib/table/table-item-storage.mjs +0 -564
  318. package/esm2022/lib/table/table.component.mjs +0 -367
  319. package/esm2022/lib/table/table.defaults.mjs +0 -53
  320. package/esm2022/lib/table/table.directives.mjs +0 -62
  321. package/esm2022/lib/table/table.module.mjs +0 -47
  322. package/esm2022/lib/table/table.types.mjs +0 -30
  323. package/esm2022/lib/table/utils.mjs +0 -18
  324. package/esm2022/lib/table-from-csv/index.mjs +0 -4
  325. package/esm2022/lib/table-from-csv/table-from-csv.component.mjs +0 -120
  326. package/esm2022/lib/table-from-csv/table-from-csv.defaults.mjs +0 -15
  327. package/esm2022/lib/table-from-csv/table-from-csv.module.mjs +0 -19
  328. package/esm2022/lib/table-pagination/index.mjs +0 -5
  329. package/esm2022/lib/table-pagination/table-pagination.component.mjs +0 -108
  330. package/esm2022/lib/table-pagination/table-pagination.defaults.mjs +0 -25
  331. package/esm2022/lib/table-pagination/table-pagination.module.mjs +0 -21
  332. package/esm2022/lib/table-pagination/table-pagination.types.mjs +0 -7
  333. package/esm2022/lib/text-list/index.mjs +0 -4
  334. package/esm2022/lib/text-list/text-list.component.mjs +0 -18
  335. package/esm2022/lib/text-list/text-list.module.mjs +0 -19
  336. package/esm2022/lib/text-list/text-list.pipe.mjs +0 -16
  337. package/esm2022/lib/types/alignment.types.mjs +0 -10
  338. package/esm2022/lib/types/button.types.mjs +0 -6
  339. package/esm2022/lib/types/colors.types.mjs +0 -43
  340. package/esm2022/lib/types/item-storage.types.mjs +0 -6
  341. package/esm2022/lib/types/theming.types.mjs +0 -48
  342. package/esm2022/lib/types/utility.types.mjs +0 -5
  343. package/esm2022/public-api.mjs +0 -74
  344. package/lib/inputs/simple-input/index.d.ts +0 -4
  345. package/lib/inputs/simple-input/simple-input.component.d.ts +0 -13
  346. package/lib/inputs/simple-input/simple-input.defaults.d.ts +0 -6
  347. package/lib/inputs/simple-input/simple-input.directives.d.ts +0 -20
  348. package/lib/inputs/simple-input/simple-input.module.d.ts +0 -11
  349. package/prebuilt-themes/default/inputs/simple-input.css.map +0 -1
  350. package/themes/default/inputs/simple-input.scss +0 -12
@@ -1,356 +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.dragFilesEvent = output({ alias: 'dragFiles' });
67
- this.failedUploadEvent = output({ alias: 'failedUpload' });
68
- this._valueBeforeInit = null;
69
- //! temporary value
70
- //for drag event handling
71
- this._draggedFiles = null;
72
- //! view state
73
- this.currentViewState = signal('idle');
74
- this._beforeDragoverState = 'idle';
75
- //! touched event handling
76
- this._isFilePickerOpen = false;
77
- }
78
- ngOnInit() {
79
- super.ngOnInit();
80
- if (!(window.File && window.FileReader && window.Blob)) {
81
- console.error(new Error(`ARD-FT${this.componentId}0: Cannot use Ardium UI file features because this browser does not support file handling!`));
82
- }
83
- }
84
- ngAfterViewInit() {
85
- this._wasViewInit = true;
86
- this._updateElementValue();
87
- }
88
- get shouldBeBlocked() {
89
- return this.blockAfterUpload() && isDefined(this.value);
90
- }
91
- get value() {
92
- return this._value;
93
- }
94
- set value(v) {
95
- this.writeValue(v);
96
- }
97
- writeValue(v) {
98
- this._writeValue(v, false);
99
- }
100
- _writeValue(v, emitEvents = true) {
101
- if (!(v instanceof File) && !Array.isArray(v) && v !== null) {
102
- console.error(new Error(`ARD-FT${this.componentId}1: <ard-file-input>'s value must be a File, an array of Files, or null.`));
103
- return;
104
- }
105
- if (v instanceof File) {
106
- v = [v];
107
- }
108
- if (Array.isArray(v) && !this.multiple() && v.length > 1) {
109
- 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.`);
110
- v = [v[0]];
111
- }
112
- if (Array.isArray(v) && v.length === 0) {
113
- v = null;
114
- }
115
- if (v === null) {
116
- this.currentViewState.set('idle');
117
- }
118
- else {
119
- this.currentViewState.set('uploaded');
120
- }
121
- this._value = v;
122
- if (this._wasViewInit)
123
- this._updateElementValue();
124
- if (emitEvents) {
125
- this._emitChange();
126
- }
127
- }
128
- _emitChange() {
129
- const v = this.value;
130
- this._onChangeRegistered?.(v);
131
- this.valueChange.emit(v);
132
- }
133
- openBrowseDialog() {
134
- // use FileSystemAPI if supported & needed
135
- if (this._fileSystemService.isFileSystemAPISupported('showOpenFilePicker') &&
136
- (this.directoryId() || this.startDirectory() || this.fileTypes())) {
137
- this._isFilePickerOpen = true;
138
- this._fileSystemService
139
- .requestFileUpload({
140
- method: FileSystemMethod.PreferFileSystem,
141
- multiple: this.multiple(),
142
- directoryId: this.directoryId() ?? undefined,
143
- startDirectory: this.startDirectory() ?? undefined,
144
- types: this.fileTypes() ?? undefined,
145
- accept: this.accept() === '*' ? undefined : this.accept(),
146
- })
147
- .then(fileOrFiles => {
148
- if (!fileOrFiles) {
149
- this._writeValue(null);
150
- this.currentViewState.set('idle');
151
- return;
152
- }
153
- const files = Array.isArray(fileOrFiles) ? fileOrFiles : [fileOrFiles];
154
- this._writeFilesToValue(files);
155
- this._isFilePickerOpen = false;
156
- });
157
- return;
158
- }
159
- // else use the old-school method by clicking directly on the input
160
- this._isFilePickerOpen = true;
161
- this.fileInputEl()?.nativeElement.click();
162
- }
163
- //! event handlers
164
- onDragover(event) {
165
- event.preventDefault();
166
- if (this.shouldBeBlocked) {
167
- if (!event.dataTransfer)
168
- return;
169
- event.dataTransfer.dropEffect = 'none';
170
- return;
171
- }
172
- if (this.currentViewState() === 'dragover')
173
- return;
174
- this._draggedFiles = this._countDragenterFiles(event.dataTransfer);
175
- if (!this._draggedFiles)
176
- return;
177
- this._beforeDragoverState = this.currentViewState();
178
- this.currentViewState.set('dragover');
179
- }
180
- onDragleave() {
181
- if (this.shouldBeBlocked)
182
- return;
183
- if (this.currentViewState() !== 'dragover')
184
- return;
185
- this.currentViewState.set(this._beforeDragoverState);
186
- }
187
- onDrop(event) {
188
- event.preventDefault();
189
- if (this.shouldBeBlocked)
190
- return;
191
- const filelist = event.dataTransfer?.files;
192
- if (!filelist) {
193
- this.currentViewState.set('idle');
194
- return;
195
- }
196
- const files = Array.from(filelist);
197
- if (!files) {
198
- this.currentViewState.set('idle');
199
- return;
200
- }
201
- const filteredFiles = [];
202
- const failedFiles = [];
203
- const acceptedMimeTypes = this.acceptedMimeTypes();
204
- if (acceptedMimeTypes) {
205
- let mimeTypeMatched = false;
206
- fileLoop: for (const file of files) {
207
- const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
208
- if (!shouldAccept) {
209
- failedFiles.push({ file, reason: reason });
210
- continue;
211
- }
212
- mimeTypeMatched = false;
213
- for (const mimeTypeObj of acceptedMimeTypes) {
214
- if (isMimeTypeMatching(file, mimeTypeObj.mimeType)) {
215
- mimeTypeMatched = true;
216
- const extension = '.' + file.name.split('.').pop()?.toLowerCase();
217
- if (mimeTypeObj.extensions.size === 0 || mimeTypeObj.extensions.has('*') || mimeTypeObj.extensions.has(extension)) {
218
- filteredFiles.push(file);
219
- continue fileLoop;
220
- }
221
- }
222
- }
223
- if (!mimeTypeMatched) {
224
- failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidMimeType });
225
- }
226
- else {
227
- failedFiles.push({ file, reason: FileInputFailedUploadReason.MimeTypeFoundButExtensionNotAllowed });
228
- }
229
- }
230
- }
231
- else {
232
- const accept = this.accept();
233
- let acceptEntries = [];
234
- if (Array.isArray(accept)) {
235
- acceptEntries = accept.map(e => e.trim().toLowerCase());
236
- }
237
- else {
238
- acceptEntries = accept.split(',').map(e => e.trim().toLowerCase());
239
- }
240
- if (typeof accept === 'string' && accept === '*') {
241
- for (const file of files) {
242
- const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
243
- if (!shouldAccept) {
244
- failedFiles.push({ file, reason: reason });
245
- }
246
- }
247
- }
248
- else {
249
- fileLoop: for (const file of files) {
250
- const { shouldAccept, reason } = this._filterFilesBasedOnSizeAndCount(file, filteredFiles.length);
251
- if (!shouldAccept) {
252
- failedFiles.push({ file, reason: reason });
253
- continue;
254
- }
255
- const extension = '.' + file.name.split('.').at(-1)?.toLowerCase();
256
- for (const entry of acceptEntries) {
257
- if (extension === entry) {
258
- filteredFiles.push(file);
259
- continue fileLoop;
260
- }
261
- }
262
- failedFiles.push({ file, reason: FileInputFailedUploadReason.InvalidExtension });
263
- }
264
- }
265
- }
266
- this.dragFilesEvent.emit(filteredFiles);
267
- this.failedUploadEvent.emit(failedFiles);
268
- this.currentViewState.set('uploaded');
269
- this._writeValue(filteredFiles.length > 0 ? filteredFiles : null);
270
- this._emitTouched();
271
- }
272
- onFileInputChange() {
273
- this._isFilePickerOpen = false;
274
- console.log('onFileInputChange');
275
- const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);
276
- this._writeFilesToValue(files);
277
- }
278
- _writeFilesToValue(files) {
279
- if (files.length === 0) {
280
- this._writeValue(null);
281
- this.currentViewState.set('idle');
282
- this._emitTouched();
283
- return;
284
- }
285
- this._writeValue(files);
286
- this.currentViewState.set('uploaded');
287
- this._emitTouched();
288
- }
289
- _emitTouched() {
290
- this.wasTouched.set(true);
291
- this._onTouchedRegistered?.();
292
- }
293
- onFocus(event) {
294
- if (this._isFilePickerOpen) {
295
- setTimeout(() => {
296
- this._emitTouched();
297
- }, 200);
298
- }
299
- this._isFilePickerOpen = false;
300
- super.onFocus(event);
301
- }
302
- onBlur(event) {
303
- super.onBlur(event);
304
- this._shouldEmitTouched = !this._isFilePickerOpen;
305
- }
306
- //! helpers
307
- _filterFilesBasedOnSizeAndCount(file, existingFileCount) {
308
- // check count
309
- if (existingFileCount >= this.maxFilesWithMultiple()) {
310
- return { shouldAccept: false, reason: FileInputFailedUploadReason.TooManyFiles };
311
- }
312
- // check size
313
- if (file.size > 0 && this.maxFileSizeBytes() !== null && file.size > this.maxFileSizeBytes()) {
314
- return { shouldAccept: false, reason: FileInputFailedUploadReason.FileTooBig };
315
- }
316
- // all good
317
- return { shouldAccept: true };
318
- }
319
- _countDragenterFiles(data) {
320
- if (!data)
321
- return null;
322
- return Array.from(data.items).filter(item => item.kind === 'file').length;
323
- }
324
- _updateElementValue() {
325
- const v = this.value;
326
- const inputEl = this.fileInputEl()?.nativeElement;
327
- if (!inputEl)
328
- return;
329
- if (!v) {
330
- inputEl.value = '';
331
- return;
332
- }
333
- const dataTransfer = new DataTransfer();
334
- for (const file of v) {
335
- dataTransfer.items.add(file);
336
- }
337
- inputEl.files = dataTransfer.files;
338
- }
339
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FileInputComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
340
- 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", dragFilesEvent: "dragFiles", failedUploadEvent: "failedUpload" }, viewQueries: [{ propertyName: "fileInputEl", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
341
- }
342
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: _FileInputComponentBase, decorators: [{
343
- type: Directive
344
- }], propDecorators: { value: [{
345
- type: Input
346
- }] } });
347
- function isMimeTypeMatching(file, mimeType) {
348
- if (mimeType === '*')
349
- return true;
350
- if (mimeType.endsWith('/*')) {
351
- const prefix = mimeType.slice(0, -2);
352
- return file.type.startsWith(prefix);
353
- }
354
- return file.type === mimeType;
355
- }
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9maWxlLWlucHV0cy9maWxlLWlucHV0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUVsQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHNUUsT0FBTyxFQUF5QiwyQkFBMkIsRUFBc0IsTUFBTSxvQkFBb0IsQ0FBQzs7QUFHNUcsTUFBTSxPQUFnQix1QkFBd0IsU0FBUSx1QkFBdUI7SUFEN0U7O1FBSW1CLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBSXZELGdCQUFXLEdBQUcsU0FBUyxDQUErQixXQUFXLENBQUMsQ0FBQztRQUVuRSxTQUFJLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBWXhCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBTy9CLGNBQWM7UUFDTCxZQUFPLEdBQUcsS0FBSyxDQUFlLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU1RixZQUFZO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBZSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxD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QU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIGNvbXB1dGVkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIGluamVjdCxcclxuICBJbnB1dCxcclxuICBpbnB1dCxcclxuICBPbkluaXQsXHJcbiAgb3V0cHV0LFxyXG4gIHNpZ25hbCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgY29lcmNlQm9vbGVhblByb3BlcnR5LFxyXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxyXG4gIEZpbGVTeXN0ZW1NZXRob2QsXHJcbiAgRmlsZVN5c3RlbVNlcnZpY2UsXHJcbiAgRmlsZVN5c3RlbVN0YXJ0RGlyZWN0b3J5LFxyXG59IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgaXNEZWZpbmVkIH0gZnJvbSAnc2ltcGxlLWJvb2wnO1xyXG5pbXBvcnQgeyBfRm9ybUZpZWxkQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL19pbnRlcm5hbC9mb3JtLWZpZWxkLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XHJcbmltcG9ydCB7IF9GaWxlSW5wdXRCYXNlRGVmYXVsdHMgfSBmcm9tICcuL2ZpbGUtaW5wdXQtYmFzZS5kZWZhdWx0cyc7XHJcbmltcG9ydCB7IEZpbGVJbnB1dEZhaWxlZFVwbG9hZCwgRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLCBGaWxlSW5wdXRGaWxlVHlwZXMgfSBmcm9tICcuL2ZpbGUtaW5wdXQtdHlwZXMnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBfRmlsZUlucHV0Q29tcG9uZW50QmFzZSBleHRlbmRzIF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogX0ZpbGVJbnB1dEJhc2VEZWZhdWx0cztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZVN5c3RlbVNlcnZpY2UgPSBpbmplY3QoRmlsZVN5c3RlbVNlcnZpY2UpO1xyXG5cclxuICBhYnN0cmFjdCByZWFkb25seSBjb21wb25lbnRJZDogc3RyaW5nO1xyXG5cclxuICByZWFkb25seSBmaWxlSW5wdXRFbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignZmlsZUlucHV0Jyk7XHJcblxyXG4gIHJlYWRvbmx5IG5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgaWYgKCEod2luZG93LkZpbGUgJiYgd2luZG93LkZpbGVSZWFkZXIgJiYgd2luZG93LkJsb2IpKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYEFSRC1GVCR7dGhpcy5jb21wb25lbnRJZH0wOiBDYW5ub3QgdXNlIEFyZGl1bSBVSSBmaWxlIGZlYXR1cmVzIGJlY2F1c2UgdGhpcyBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBoYW5kbGluZyFgXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcm90ZWN0ZWQgX3dhc1ZpZXdJbml0ID0gZmFsc2U7XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fd2FzVmlld0luaXQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIGFwcGVhcmFuY2VcclxuICByZWFkb25seSBjb21wYWN0ID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICAvLyEgc2V0dGluZ3NcclxuICByZWFkb25seSBtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuICByZWFkb25seSBtYXhGaWxlcyA9IGlucHV0PE51bGxhYmxlPG51bWJlcj4sIGFueT4obnVsbCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgbnVsbCkgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG1heEZpbGVzV2l0aE11bHRpcGxlID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiAodGhpcy5tdWx0aXBsZSgpID8gdGhpcy5tYXhGaWxlcygpID8/IEluZmluaXR5IDogMSkpO1xyXG5cclxuICByZWFkb25seSBibG9ja0FmdGVyVXBsb2FkID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICBnZXQgc2hvdWxkQmVCbG9ja2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmxvY2tBZnRlclVwbG9hZCgpICYmIGlzRGVmaW5lZCh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG1heEZpbGVTaXplQnl0ZXMgPSBpbnB1dDxOdWxsYWJsZTxudW1iZXI+LCBhbnk+KG51bGwsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHYsIG51bGwpIH0pO1xyXG5cclxuICByZWFkb25seSBhY2NlcHQgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJyonKTtcclxuICByZWFkb25seSBkaXJlY3RvcnlJZCA9IGlucHV0PE51bGxhYmxlPHN0cmluZz4+KHVuZGVmaW5lZCk7XHJcbiAgcmVhZG9ubHkgc3RhcnREaXJlY3RvcnkgPSBpbnB1dDxOdWxsYWJsZTxGaWxlU3lzdGVtU3RhcnREaXJlY3Rvcnk+Pih1bmRlZmluZWQpO1xyXG4gIHJlYWRvbmx5IGZpbGVUeXBlcyA9IGlucHV0PE51bGxhYmxlPEZpbGVJbnB1dEZpbGVUeXBlcz4+KHVuZGVmaW5lZCk7XHJcblxyXG4gIHJlYWRvbmx5IGFjY2VwdFN0cmluZyA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xyXG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLmZpbGVUeXBlcygpO1xyXG4gICAgaWYgKHR5cGVzKSB7XHJcbiAgICAgIGNvbnN0IGFjY2VwdEVudHJpZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgdHlwZSBvZiB0eXBlcykge1xyXG4gICAgICAgIGlmICh0eXBlLmFjY2VwdCkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBtaW1lVHlwZSBpbiB0eXBlLmFjY2VwdCkge1xyXG4gICAgICAgICAgICBjb25zdCBleHRlbnNpb25zID0gdHlwZS5hY2NlcHRbbWltZVR5cGVdO1xyXG4gICAgICAgICAgICBpZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBhY2NlcHRFbnRyaWVzLnB1c2goLi4uZXh0ZW5zaW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFjY2VwdEVudHJpZXMuam9pbignLCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFjY2VwdCA9IHRoaXMuYWNjZXB0KCk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhY2NlcHQpKSB7XHJcbiAgICAgIHJldHVybiBhY2NlcHQuam9pbignLCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhY2NlcHQ7XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGFjY2VwdGVkTWltZVR5cGVzID0gY29tcHV0ZWQ8eyBtaW1lVHlwZTogc3RyaW5nOyBleHRlbnNpb25zOiBTZXQ8c3RyaW5nPiB9W10gfCBudWxsPigoKSA9PiB7XHJcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuZmlsZVR5cGVzKCk7XHJcbiAgICBpZiAodHlwZXMpIHtcclxuICAgICAgY29uc3QgbWltZVR5cGVzOiB7IG1pbWVUeXBlOiBzdHJpbmc7IGV4dGVuc2lvbnM6IFNldDxzdHJpbmc+IH1bXSA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZXMpIHtcclxuICAgICAgICBpZiAodHlwZS5hY2NlcHQpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgbWltZVR5cGUgaW4gdHlwZS5hY2NlcHQpIHtcclxuICAgICAgICAgICAgbWltZVR5cGVzLnB1c2goeyBtaW1lVHlwZSwgZXh0ZW5zaW9uczogbmV3IFNldCh0eXBlLmFjY2VwdFttaW1lVHlwZV0pIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbWltZVR5cGVzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfSk7XHJcblxyXG4gIC8vISB2YWx1ZVxyXG4gIHByb3RlY3RlZCBfdmFsdWU6IEZpbGVbXSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHZhbHVlKCk6IEZpbGVbXSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodjogRmlsZSB8IEZpbGVbXSB8IG51bGwpIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZSh2KTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PEZpbGVbXSB8IG51bGw+KCk7XHJcbiAgcmVhZG9ubHkgZHJhZ0ZpbGVzRXZlbnQgPSBvdXRwdXQ8RmlsZVtdPih7IGFsaWFzOiAnZHJhZ0ZpbGVzJyB9KTtcclxuICByZWFkb25seSBmYWlsZWRVcGxvYWRFdmVudCA9IG91dHB1dDxGaWxlSW5wdXRGYWlsZWRVcGxvYWRbXT4oeyBhbGlhczogJ2ZhaWxlZFVwbG9hZCcgfSk7XHJcblxyXG4gIHByb3RlY3RlZCBfdmFsdWVCZWZvcmVJbml0OiBGaWxlW10gfCBudWxsID0gbnVsbDtcclxuICB3cml0ZVZhbHVlKHY6IEZpbGUgfCBGaWxlW10gfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKHYsIGZhbHNlKTtcclxuICB9XHJcbiAgcHJvdGVjdGVkIF93cml0ZVZhbHVlKHY6IEZpbGUgfCBGaWxlW10gfCBudWxsLCBlbWl0RXZlbnRzID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKCEodiBpbnN0YW5jZW9mIEZpbGUpICYmICFBcnJheS5pc0FycmF5KHYpICYmIHYgIT09IG51bGwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICBuZXcgRXJyb3IoYEFSRC1GVCR7dGhpcy5jb21wb25lbnRJZH0xOiA8YXJkLWZpbGUtaW5wdXQ+J3MgdmFsdWUgbXVzdCBiZSBhIEZpbGUsIGFuIGFycmF5IG9mIEZpbGVzLCBvciBudWxsLmApXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh2IGluc3RhbmNlb2YgRmlsZSkge1xyXG4gICAgICB2ID0gW3ZdO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikgJiYgIXRoaXMubXVsdGlwbGUoKSAmJiB2Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGBBUkQtV0Eke3RoaXMuY29tcG9uZW50SWR9MjogPGFyZC1maWxlLWlucHV0PiByZWNlaXZlZCBhbiBhcnJheSBvZiBmaWxlcyBidXQgdGhlICdtdWx0aXBsZScgaW5wdXQgaXMgbm90IHNldCB0byB0cnVlLiBPbmx5IHRoZSBmaXJzdCBmaWxlIHdpbGwgYmUgdXNlZC5gXHJcbiAgICAgICk7XHJcbiAgICAgIHYgPSBbdlswXV07XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB2ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodiA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCd1cGxvYWRlZCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fdmFsdWUgPSB2O1xyXG5cclxuICAgIGlmICh0aGlzLl93YXNWaWV3SW5pdCkgdGhpcy5fdXBkYXRlRWxlbWVudFZhbHVlKCk7XHJcblxyXG4gICAgaWYgKGVtaXRFdmVudHMpIHtcclxuICAgICAgdGhpcy5fZW1pdENoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIF9lbWl0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWU7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih2KTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2KTtcclxuICB9XHJcblxyXG4gIG9wZW5Ccm93c2VEaWFsb2coKTogdm9pZCB7XHJcbiAgICAvLyB1c2UgRmlsZVN5c3RlbUFQSSBpZiBzdXBwb3J0ZWQgJiBuZWVkZWRcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5fZmlsZVN5c3RlbVNlcnZpY2UuaXNGaWxlU3lzdGVtQVBJU3VwcG9ydGVkKCdzaG93T3BlbkZpbGVQaWNrZXInKSAmJlxyXG4gICAgICAodGhpcy5kaXJlY3RvcnlJZCgpIHx8IHRoaXMuc3RhcnREaXJlY3RvcnkoKSB8fCB0aGlzLmZpbGVUeXBlcygpKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuX2lzRmlsZVBpY2tlck9wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5fZmlsZVN5c3RlbVNlcnZpY2VcclxuICAgICAgICAucmVxdWVzdEZpbGVVcGxvYWQoe1xyXG4gICAgICAgICAgbWV0aG9kOiBGaWxlU3lzdGVtTWV0aG9kLlByZWZlckZpbGVTeXN0ZW0sXHJcbiAgICAgICAgICBtdWx0aXBsZTogdGhpcy5tdWx0aXBsZSgpLFxyXG4gICAgICAgICAgZGlyZWN0b3J5SWQ6IHRoaXMuZGlyZWN0b3J5SWQoKSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICBzdGFydERpcmVjdG9yeTogdGhpcy5zdGFydERpcmVjdG9yeSgpID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIHR5cGVzOiB0aGlzLmZpbGVUeXBlcygpID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGFjY2VwdDogdGhpcy5hY2NlcHQoKSA9PT0gJyonID8gdW5kZWZpbmVkIDogdGhpcy5hY2NlcHQoKSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50aGVuKGZpbGVPckZpbGVzID0+IHtcclxuICAgICAgICAgIGlmICghZmlsZU9yRmlsZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5fd3JpdGVWYWx1ZShudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgnaWRsZScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBmaWxlcyA9IEFycmF5LmlzQXJyYXkoZmlsZU9yRmlsZXMpID8gZmlsZU9yRmlsZXMgOiBbZmlsZU9yRmlsZXNdO1xyXG4gICAgICAgICAgdGhpcy5fd3JpdGVGaWxlc1RvVmFsdWUoZmlsZXMpO1xyXG4gICAgICAgICAgdGhpcy5faXNGaWxlUGlja2VyT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBlbHNlIHVzZSB0aGUgb2xkLXNjaG9vbCBtZXRob2QgYnkgY2xpY2tpbmcgZGlyZWN0bHkgb24gdGhlIGlucHV0XHJcbiAgICB0aGlzLl9pc0ZpbGVQaWNrZXJPcGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsZUlucHV0RWwoKT8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHRlbXBvcmFyeSB2YWx1ZVxyXG4gIC8vZm9yIGRyYWcgZXZlbnQgaGFuZGxpbmdcclxuICBwcm90ZWN0ZWQgX2RyYWdnZWRGaWxlczogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vISB2aWV3IHN0YXRlXHJcbiAgcmVhZG9ubHkgY3VycmVudFZpZXdTdGF0ZSA9IHNpZ25hbDwnaWRsZScgfCAnZHJhZ292ZXInIHwgJ3VwbG9hZGVkJz4oJ2lkbGUnKTtcclxuICBwcml2YXRlIF9iZWZvcmVEcmFnb3ZlclN0YXRlOiAnaWRsZScgfCAndXBsb2FkZWQnID0gJ2lkbGUnO1xyXG5cclxuICAvLyEgZXZlbnQgaGFuZGxlcnNcclxuICBvbkRyYWdvdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBpZiAodGhpcy5zaG91bGRCZUJsb2NrZWQpIHtcclxuICAgICAgaWYgKCFldmVudC5kYXRhVHJhbnNmZXIpIHJldHVybjtcclxuXHJcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Vmlld1N0YXRlKCkgPT09ICdkcmFnb3ZlcicpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9kcmFnZ2VkRmlsZXMgPSB0aGlzLl9jb3VudERyYWdlbnRlckZpbGVzKGV2ZW50LmRhdGFUcmFuc2Zlcik7XHJcblxyXG4gICAgaWYgKCF0aGlzLl9kcmFnZ2VkRmlsZXMpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9iZWZvcmVEcmFnb3ZlclN0YXRlID0gdGhpcy5jdXJyZW50Vmlld1N0YXRlKCkgYXMgJ2lkbGUnIHwgJ3VwbG9hZGVkJztcclxuICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ2RyYWdvdmVyJyk7XHJcbiAgfVxyXG4gIG9uRHJhZ2xlYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2hvdWxkQmVCbG9ja2VkKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Vmlld1N0YXRlKCkgIT09ICdkcmFnb3ZlcicpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KHRoaXMuX2JlZm9yZURyYWdvdmVyU3RhdGUpO1xyXG4gIH1cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zaG91bGRCZUJsb2NrZWQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBmaWxlbGlzdCA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XHJcbiAgICBpZiAoIWZpbGVsaXN0KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ2lkbGUnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsZXMgPSBBcnJheS5mcm9tKGZpbGVsaXN0KTtcclxuICAgIGlmICghZmlsZXMpIHtcclxuICAgICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgnaWRsZScpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpbGVzOiBGaWxlW10gPSBbXTtcclxuICAgIGNvbnN0IGZhaWxlZEZpbGVzOiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRbXSA9IFtdO1xyXG4gICAgY29uc3QgYWNjZXB0ZWRNaW1lVHlwZXMgPSB0aGlzLmFjY2VwdGVkTWltZVR5cGVzKCk7XHJcbiAgICBpZiAoYWNjZXB0ZWRNaW1lVHlwZXMpIHtcclxuICAgICAgbGV0IG1pbWVUeXBlTWF0Y2hlZCA9IGZhbHNlO1xyXG4gICAgICBmaWxlTG9vcDogZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgICAgY29uc3QgeyBzaG91bGRBY2NlcHQsIHJlYXNvbiB9ID0gdGhpcy5fZmlsdGVyRmlsZXNCYXNlZE9uU2l6ZUFuZENvdW50KGZpbGUsIGZpbHRlcmVkRmlsZXMubGVuZ3RoKTtcclxuICAgICAgICBpZiAoIXNob3VsZEFjY2VwdCkge1xyXG4gICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogcmVhc29uISB9KTtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbWltZVR5cGVNYXRjaGVkID0gZmFsc2U7XHJcbiAgICAgICAgZm9yIChjb25zdCBtaW1lVHlwZU9iaiBvZiBhY2NlcHRlZE1pbWVUeXBlcykge1xyXG4gICAgICAgICAgaWYgKGlzTWltZVR5cGVNYXRjaGluZyhmaWxlLCBtaW1lVHlwZU9iai5taW1lVHlwZSkpIHtcclxuICAgICAgICAgICAgbWltZVR5cGVNYXRjaGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9ICcuJyArIGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBpZiAobWltZVR5cGVPYmouZXh0ZW5zaW9ucy5zaXplID09PSAwIHx8IG1pbWVUeXBlT2JqLmV4dGVuc2lvbnMuaGFzKCcqJykgfHwgbWltZVR5cGVPYmouZXh0ZW5zaW9ucy5oYXMoZXh0ZW5zaW9uKSkge1xyXG4gICAgICAgICAgICAgIGZpbHRlcmVkRmlsZXMucHVzaChmaWxlKTtcclxuICAgICAgICAgICAgICBjb250aW51ZSBmaWxlTG9vcDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW1pbWVUeXBlTWF0Y2hlZCkge1xyXG4gICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLkludmFsaWRNaW1lVHlwZSB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogRmlsZUlucHV0RmFpbGVkVXBsb2FkUmVhc29uLk1pbWVUeXBlRm91bmRCdXRFeHRlbnNpb25Ob3RBbGxvd2VkIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgYWNjZXB0ID0gdGhpcy5hY2NlcHQoKTtcclxuICAgICAgbGV0IGFjY2VwdEVudHJpZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFjY2VwdCkpIHtcclxuICAgICAgICBhY2NlcHRFbnRyaWVzID0gYWNjZXB0Lm1hcChlID0+IGUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGFjY2VwdEVudHJpZXMgPSBhY2NlcHQuc3BsaXQoJywnKS5tYXAoZSA9PiBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIGFjY2VwdCA9PT0gJ3N0cmluZycgJiYgYWNjZXB0ID09PSAnKicpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcclxuICAgICAgICAgIGNvbnN0IHsgc2hvdWxkQWNjZXB0LCByZWFzb24gfSA9IHRoaXMuX2ZpbHRlckZpbGVzQmFzZWRPblNpemVBbmRDb3VudChmaWxlLCBmaWx0ZXJlZEZpbGVzLmxlbmd0aCk7XHJcbiAgICAgICAgICBpZiAoIXNob3VsZEFjY2VwdCkge1xyXG4gICAgICAgICAgICBmYWlsZWRGaWxlcy5wdXNoKHsgZmlsZSwgcmVhc29uOiByZWFzb24hIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmaWxlTG9vcDogZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgICAgICBjb25zdCB7IHNob3VsZEFjY2VwdCwgcmVhc29uIH0gPSB0aGlzLl9maWx0ZXJGaWxlc0Jhc2VkT25TaXplQW5kQ291bnQoZmlsZSwgZmlsdGVyZWRGaWxlcy5sZW5ndGgpO1xyXG4gICAgICAgICAgaWYgKCFzaG91bGRBY2NlcHQpIHtcclxuICAgICAgICAgICAgZmFpbGVkRmlsZXMucHVzaCh7IGZpbGUsIHJlYXNvbjogcmVhc29uISB9KTtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gJy4nICsgZmlsZS5uYW1lLnNwbGl0KCcuJykuYXQoLTEpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBhY2NlcHRFbnRyaWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChleHRlbnNpb24gPT09IGVudHJ5KSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyZWRGaWxlcy5wdXNoKGZpbGUpO1xyXG4gICAgICAgICAgICAgIGNvbnRpbnVlIGZpbGVMb29wO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmYWlsZWRGaWxlcy5wdXNoKHsgZmlsZSwgcmVhc29uOiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb24uSW52YWxpZEV4dGVuc2lvbiB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRyYWdGaWxlc0V2ZW50LmVtaXQoZmlsdGVyZWRGaWxlcyk7XHJcbiAgICB0aGlzLmZhaWxlZFVwbG9hZEV2ZW50LmVtaXQoZmFpbGVkRmlsZXMpO1xyXG5cclxuICAgIHRoaXMuY3VycmVudFZpZXdTdGF0ZS5zZXQoJ3VwbG9hZGVkJyk7XHJcbiAgICB0aGlzLl93cml0ZVZhbHVlKGZpbHRlcmVkRmlsZXMubGVuZ3RoID4gMCA/IGZpbHRlcmVkRmlsZXMgOiBudWxsKTtcclxuICAgIHRoaXMuX2VtaXRUb3VjaGVkKCk7XHJcbiAgfVxyXG4gIG9uRmlsZUlucHV0Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faXNGaWxlUGlja2VyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc29sZS5sb2coJ29uRmlsZUlucHV0Q2hhbmdlJyk7XHJcbiAgICBjb25zdCBmaWxlcyA9IEFycmF5LmZyb20odGhpcy5maWxlSW5wdXRFbCgpPy5uYXRpdmVFbGVtZW50LmZpbGVzID8/IFtdKTtcclxuICAgIHRoaXMuX3dyaXRlRmlsZXNUb1ZhbHVlKGZpbGVzKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfd3JpdGVGaWxlc1RvVmFsdWUoZmlsZXM6IEZpbGVbXSkge1xyXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLl93cml0ZVZhbHVlKG51bGwpO1xyXG4gICAgICB0aGlzLmN1cnJlbnRWaWV3U3RhdGUuc2V0KCdpZGxlJyk7XHJcbiAgICAgIHRoaXMuX2VtaXRUb3VjaGVkKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3dyaXRlVmFsdWUoZmlsZXMpO1xyXG4gICAgdGhpcy5jdXJyZW50Vmlld1N0YXRlLnNldCgndXBsb2FkZWQnKTtcclxuICAgIHRoaXMuX2VtaXRUb3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICAvLyEgdG91Y2hlZCBldmVudCBoYW5kbGluZ1xyXG4gIHByaXZhdGUgX2lzRmlsZVBpY2tlck9wZW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfZW1pdFRvdWNoZWQoKSB7XHJcbiAgICB0aGlzLndhc1RvdWNoZWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkUmVnaXN0ZXJlZD8uKCk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIG9uRm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc0ZpbGVQaWNrZXJPcGVuKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2VtaXRUb3VjaGVkKCk7XHJcbiAgICAgIH0sIDIwMCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc0ZpbGVQaWNrZXJPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgc3VwZXIub25Gb2N1cyhldmVudCk7XHJcbiAgfVxyXG4gIG92ZXJyaWRlIG9uQmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgc3VwZXIub25CbHVyKGV2ZW50KTtcclxuXHJcbiAgICB0aGlzLl9zaG91bGRFbWl0VG91Y2hlZCA9ICF0aGlzLl9pc0ZpbGVQaWNrZXJPcGVuO1xyXG4gIH1cclxuXHJcbiAgLy8hIGhlbHBlcnNcclxuICBwcml2YXRlIF9maWx0ZXJGaWxlc0Jhc2VkT25TaXplQW5kQ291bnQoXHJcbiAgICBmaWxlOiBGaWxlLFxyXG4gICAgZXhpc3RpbmdGaWxlQ291bnQ6IG51bWJlclxyXG4gICk6IHsgc2hvdWxkQWNjZXB0OiBib29sZWFuOyByZWFzb24/OiBGaWxlSW5wdXRGYWlsZWRVcGxvYWRSZWFzb24gfSB7XHJcbiAgICAvLyBjaGVjayBjb3VudFxyXG4gICAgaWYgKGV4aXN0aW5nRmlsZUNvdW50ID49IHRoaXMubWF4RmlsZXNXaXRoTXVsdGlwbGUoKSkge1xyXG4gICAgICByZXR1cm4geyBzaG91bGRBY2NlcHQ6IGZhbHNlLCByZWFzb246IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbi5Ub29NYW55RmlsZXMgfTtcclxuICAgIH1cclxuICAgIC8vIGNoZWNrIHNpemVcclxuICAgIGlmIChmaWxlLnNpemUgPiAwICYmIHRoaXMubWF4RmlsZVNpemVCeXRlcygpICE9PSBudWxsICYmIGZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemVCeXRlcygpISkge1xyXG4gICAgICByZXR1cm4geyBzaG91bGRBY2NlcHQ6IGZhbHNlLCByZWFzb246IEZpbGVJbnB1dEZhaWxlZFVwbG9hZFJlYXNvbi5GaWxlVG9vQmlnIH07XHJcbiAgICB9XHJcbiAgICAvLyBhbGwgZ29vZFxyXG4gICAgcmV0dXJuIHsgc2hvdWxkQWNjZXB0OiB0cnVlIH07XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBfY291bnREcmFnZW50ZXJGaWxlcyhkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKTogbnVtYmVyIHwgbnVsbCB7XHJcbiAgICBpZiAoIWRhdGEpIHJldHVybiBudWxsO1xyXG5cclxuICAgIHJldHVybiBBcnJheS5mcm9tKGRhdGEuaXRlbXMpLmZpbHRlcihpdGVtID0+IGl0ZW0ua2luZCA9PT0gJ2ZpbGUnKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX3VwZGF0ZUVsZW1lbnRWYWx1ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHYgPSB0aGlzLnZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLmZpbGVJbnB1dEVsKCk/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoIWlucHV0RWwpIHJldHVybjtcclxuICAgIGlmICghdikge1xyXG4gICAgICBpbnB1dEVsLnZhbHVlID0gJyc7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXRhVHJhbnNmZXIgPSBuZXcgRGF0YVRyYW5zZmVyKCk7XHJcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2Ygdikge1xyXG4gICAgICBkYXRhVHJhbnNmZXIuaXRlbXMuYWRkKGZpbGUpO1xyXG4gICAgfVxyXG4gICAgaW5wdXRFbC5maWxlcyA9IGRhdGFUcmFuc2Zlci5maWxlcztcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzTWltZVR5cGVNYXRjaGluZyhmaWxlOiBGaWxlLCBtaW1lVHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgaWYgKG1pbWVUeXBlID09PSAnKicpIHJldHVybiB0cnVlO1xyXG4gIGlmIChtaW1lVHlwZS5lbmRzV2l0aCgnLyonKSkge1xyXG4gICAgY29uc3QgcHJlZml4ID0gbWltZVR5cGUuc2xpY2UoMCwgLTIpO1xyXG4gICAgcmV0dXJuIGZpbGUudHlwZS5zdGFydHNXaXRoKHByZWZpeCk7XHJcbiAgfVxyXG4gIHJldHVybiBmaWxlLnR5cGUgPT09IG1pbWVUeXBlO1xyXG59XHJcbiJdfQ==
@@ -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=