@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,375 +0,0 @@
1
- import { Overlay, OverlayConfig, ScrollStrategyOptions } from '@angular/cdk/overlay';
2
- import { TemplatePortal } from '@angular/cdk/portal';
3
- import { ChangeDetectionStrategy, Component, computed, contentChild, effect, ElementRef, forwardRef, Inject, inject, input, model, output, signal, viewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
4
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
- import { coerceBooleanProperty, coerceDateProperty, coerceNumberProperty } from '@ardium-ui/devkit';
6
- import { isDefined, isNull } from 'simple-bool';
7
- import { _FormFieldComponentBase } from '../../_internal/form-field-component';
8
- import { ArdiumDropdownPanelComponent, DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel';
9
- import { ARD_FORM_FIELD_CONTROL } from '../../form-field/form-field-child.token';
10
- import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
11
- import { ARD_DATE_INPUT_DEFAULTS } from './date-input.defaults';
12
- import { ArdDateInputAcceptButtonsTemplateDirective, ArdDateInputCalendarIconTemplateDirective, ArdDateInputDaysViewHeaderTemplateDirective, ArdDateInputDayTemplateDirective, ArdDateInputFloatingMonthTemplateDirective, ArdDateInputMonthsViewHeaderTemplateDirective, ArdDateInputMonthTemplateDirective, ArdDateInputPrefixTemplateDirective, ArdDateInputSuffixTemplateDirective, ArdDateInputValueTemplateDirective, ArdDateInputWeekdayTemplateDirective, ArdDateInputYearsViewHeaderTemplateDirective, ArdDateInputYearTemplateDirective, } from './date-input.directive';
13
- import { ArdDateInputMinMaxStrategy, } from './date-input.types';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "@angular/common";
16
- import * as i2 from "../../form-field-frame/form-field-frame.component";
17
- import * as i3 from "../../dropdown-panel/dropdown-panel.component";
18
- import * as i4 from "@ardium-ui/devkit";
19
- import * as i5 from "../../calendar/calendar.component";
20
- import * as i6 from "../../buttons/icon-button/icon-button.component";
21
- import * as i7 from "../../icon/icon.component";
22
- import * as i8 from "../../calendar/calendar.internal-directives";
23
- export class ArdiumDateInputComponent extends _FormFieldComponentBase {
24
- constructor(defaults) {
25
- super(defaults);
26
- this.elementRef = inject((ElementRef));
27
- this.overlay = inject(Overlay);
28
- this.viewContainerRef = inject(ViewContainerRef);
29
- this.scrollStrategyOpts = inject(ScrollStrategyOptions);
30
- this.inputAttrs = input(this._DEFAULTS.inputAttrs);
31
- this.placeholder = input(this._DEFAULTS.placeholder);
32
- this.inputReadOnly = input(false, { transform: v => coerceBooleanProperty(v) });
33
- this.calendarDisabled = input(false, { transform: v => coerceBooleanProperty(v) });
34
- this.calendarHidden = input(false, { transform: v => coerceBooleanProperty(v) });
35
- //! serialization/deserialization
36
- this.serializeFn = input(this._DEFAULTS.serializeFn);
37
- this.deserializeFn = input(this._DEFAULTS.deserializeFn);
38
- //! control value accessor
39
- this.value = model(null);
40
- this.dateInputValue = model('');
41
- this._wasDateInputChanged = signal(false);
42
- //! output events
43
- this.isOpen = model(false);
44
- this.openEvent = output({ alias: 'open' });
45
- this.closeEvent = output({ alias: 'close' });
46
- //! date input event handlers
47
- this.dateInput = viewChild.required('dateInput');
48
- this.minMaxStrategy = input(this._DEFAULTS.minMaxStrategy);
49
- this._isDateInputFocused = signal(false);
50
- //! computed properties
51
- this.shouldDisplayPlaceholder = computed(() => {
52
- if (this._isDateInputFocused() && this.dateInputValue())
53
- return false;
54
- return isNull(this.value());
55
- });
56
- this.shouldDisplayValue = computed(() => {
57
- if (this._isDateInputFocused())
58
- return false;
59
- return this.value() instanceof Date;
60
- });
61
- this.shouldDisplayDateInput = computed(() => {
62
- return !this.inputReadOnly() && !this.shouldDisplayValue() && this._isDateInputFocused();
63
- });
64
- //! appearance
65
- this.appearance = input(this._DEFAULTS.appearance);
66
- this.variant = input(this._DEFAULTS.variant);
67
- this.color = input(this._DEFAULTS.color);
68
- this.compact = input(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });
69
- this.ngClasses = computed(() => [
70
- //appearance and variant handled in ard-form-field-frame component
71
- //color handled in ard-calendar component
72
- this.compact() ? 'ard-compact' : '',
73
- this.isOpen() ? 'ard-dropdown-open' : '',
74
- this._isDateInputFocused() ? 'ard-date-input__date-input-focused' : '',
75
- ].join(' '));
76
- this.dropdownAppearance = input(this._DEFAULTS.dropdownAppearance);
77
- this.dropdownAppearanceOrDefault = computed(() => {
78
- if (this.dropdownAppearance())
79
- return this.dropdownAppearance();
80
- if (this.appearance() === FormElementAppearance.Outlined)
81
- return DropdownPanelAppearance.Outlined;
82
- return DropdownPanelAppearance.Raised;
83
- });
84
- this.dropdownVariant = input(this._DEFAULTS.dropdownVariant);
85
- this.dropdownVariantOrDefault = computed(() => {
86
- if (this.dropdownVariant())
87
- return this.dropdownVariant();
88
- const variant = this.variant();
89
- if (variant === FormElementVariant.Pill)
90
- return DropdownPanelVariant.Rounded;
91
- return variant;
92
- });
93
- //! calendar attributes
94
- this.activeView = model(this._DEFAULTS.activeView);
95
- this.activeYear = model(this._DEFAULTS.activeYear);
96
- this.activeMonth = model(this._DEFAULTS.activeMonth);
97
- this.firstWeekday = input(this._DEFAULTS.firstWeekday, {
98
- transform: v => {
99
- const value = coerceNumberProperty(v, this._DEFAULTS.firstWeekday);
100
- if (!Number.isInteger(value)) {
101
- console.error(new Error(`ARD-NF0081A: [firstWeekday] must be a positive integer, got "${value}". Using default value instead.`));
102
- return 1;
103
- }
104
- if (value < 0 || value > 6) {
105
- console.error(new Error(`ARD-WA0081B: [firstWeekday] must be between 0 and 6, got "${value}". Using modulo operator to adjust the value.`));
106
- }
107
- return value % 7;
108
- },
109
- });
110
- this.multipleYearPageChangeModifier = input(this._DEFAULTS.multipleYearPageChangeModifier, {
111
- transform: v => {
112
- const value = coerceNumberProperty(v, this._DEFAULTS.multipleYearPageChangeModifier);
113
- if (!Number.isInteger(value) || value < 1) {
114
- console.error(new Error(`ARD-NF0082: [multipleYearPageChangeModifier] must be a positive integer, got "${value}". Using default value instead.`));
115
- return 5;
116
- }
117
- return value;
118
- },
119
- });
120
- this.min = input(this._DEFAULTS.min, { transform: v => coerceDateProperty(v, this._DEFAULTS.min) });
121
- this.max = input(this._DEFAULTS.max, { transform: v => coerceDateProperty(v, this._DEFAULTS.max) });
122
- this.filter = input(this._DEFAULTS.filter);
123
- //! calendar outputs
124
- this.yearSelect = output();
125
- this.monthSelect = output();
126
- //! calendar controls
127
- this.useAcceptButtonToSelect = input(false, { transform: v => coerceBooleanProperty(v) });
128
- this._valueToAccept = null;
129
- //! dropdown overlay
130
- this.dropdownHost = viewChild.required('dropdownHost');
131
- this.dropdownTemplate = viewChild.required('dropdownTemplate');
132
- this.dropdownPanel = viewChild.required(ArdiumDropdownPanelComponent);
133
- //! templates
134
- this.valueTemplate = contentChild(ArdDateInputValueTemplateDirective);
135
- this.calendarIconTemplate = contentChild(ArdDateInputCalendarIconTemplateDirective);
136
- this.acceptButtonsTemplate = contentChild(ArdDateInputAcceptButtonsTemplateDirective);
137
- this.prefixTemplate = contentChild(ArdDateInputPrefixTemplateDirective);
138
- this.suffixTemplate = contentChild(ArdDateInputSuffixTemplateDirective);
139
- this.calendarDaysViewHeaderTemplate = contentChild(ArdDateInputDaysViewHeaderTemplateDirective);
140
- this.calendarYearsViewHeaderTemplate = contentChild(ArdDateInputYearsViewHeaderTemplateDirective);
141
- this.calendarMonthsViewHeaderTemplate = contentChild(ArdDateInputMonthsViewHeaderTemplateDirective);
142
- this.calendarWeekdayTemplate = contentChild(ArdDateInputWeekdayTemplateDirective);
143
- this.calendarFloatingMonthTemplate = contentChild(ArdDateInputFloatingMonthTemplateDirective);
144
- this.calendarYearTemplate = contentChild(ArdDateInputYearTemplateDirective);
145
- this.calendarMonthTemplate = contentChild(ArdDateInputMonthTemplateDirective);
146
- this.calendarDayTemplate = contentChild(ArdDateInputDayTemplateDirective);
147
- //! context providers
148
- this.valueContext = computed(() => ({
149
- $implicit: this.value(),
150
- }));
151
- this.acceptButtonsContext = computed(() => ({
152
- $implicit: () => this.onAcceptButtonClick(),
153
- accept: () => this.onAcceptButtonClick(),
154
- cancel: () => this.onCancelButtonClick(),
155
- disabled: this.disabled() || this.calendarDisabled(),
156
- }));
157
- effect(() => {
158
- this.value();
159
- this._emitChange();
160
- this._serializeValueIntoDateInput();
161
- }, { allowSignalWrites: true });
162
- }
163
- writeValue(v) {
164
- if (v instanceof Date) {
165
- this.value.set(v);
166
- }
167
- else if (!isDefined(v)) {
168
- this.value.set(null);
169
- }
170
- else {
171
- console.error(new Error(`ARD-NF0083: <ard-date-input> writeValue expected a Date or null, got "${v}".`));
172
- }
173
- }
174
- //! change & touch event emitters
175
- _emitChange() {
176
- this._onChangeRegistered?.(this.value());
177
- }
178
- _onTouched() {
179
- this._onTouchedRegistered?.();
180
- }
181
- onDateInputInput(event) {
182
- const v = event.target.value;
183
- this.dateInputValue.set(v);
184
- }
185
- onDateInputFocus(event) {
186
- this.onFocus(event);
187
- this._isDateInputFocused.set(true);
188
- this._wasDateInputChanged.set(false);
189
- }
190
- onDateInputBlur(event) {
191
- this.onBlur(event);
192
- this._processDateInputText(this.dateInputValue());
193
- if (!this._isDateInputFocused())
194
- return;
195
- this._onTouched();
196
- this._isDateInputFocused.set(false);
197
- }
198
- onDateInputEnter(event) {
199
- if (event.key !== 'Enter')
200
- return;
201
- event.preventDefault();
202
- this.close();
203
- this.blur();
204
- this.focus();
205
- }
206
- _processDateInputText(value) {
207
- let date = this.deserializeFn()(value, this.value());
208
- if (this.minMaxStrategy() === ArdDateInputMinMaxStrategy.Adjust && date) {
209
- const min = this.min();
210
- const max = this.max();
211
- if (min && date < min) {
212
- date = new Date(min);
213
- }
214
- else if (max && date > max) {
215
- date = new Date(max);
216
- }
217
- }
218
- this.value.set(date);
219
- }
220
- _setDateInputAttributes() {
221
- const input = this.dateInput().nativeElement;
222
- const attributes = {
223
- type: 'text',
224
- autocorrect: 'off',
225
- autocapitalize: 'off',
226
- autocomplete: 'off',
227
- ...this.inputAttrs(),
228
- };
229
- for (const key of Object.keys(attributes)) {
230
- input.setAttribute(key, attributes[key]);
231
- }
232
- }
233
- onCalendarSelectedChange(event) {
234
- if (this.useAcceptButtonToSelect()) {
235
- this._valueToAccept = event;
236
- return;
237
- }
238
- this._acceptSelectedDate(event);
239
- }
240
- _acceptSelectedDate(date) {
241
- this.value.set(date);
242
- this.close();
243
- }
244
- _serializeValueIntoDateInput() {
245
- this.dateInputValue.set(this.serializeFn()(this.value()));
246
- }
247
- _cancelCalendarSelection() {
248
- this.close();
249
- }
250
- onAcceptButtonClick() {
251
- this._acceptSelectedDate(this._valueToAccept);
252
- this._valueToAccept = null;
253
- }
254
- onCancelButtonClick() {
255
- this._cancelCalendarSelection();
256
- }
257
- _createOverlay() {
258
- const strategy = this.overlay
259
- .position()
260
- .flexibleConnectedTo(this.dropdownHost())
261
- .withPositions([
262
- {
263
- originX: 'end',
264
- originY: 'top',
265
- overlayX: 'end',
266
- overlayY: 'bottom',
267
- },
268
- {
269
- originX: 'end',
270
- originY: 'bottom',
271
- overlayX: 'end',
272
- overlayY: 'top',
273
- },
274
- ]);
275
- const config = new OverlayConfig({
276
- positionStrategy: strategy,
277
- scrollStrategy: this.scrollStrategyOpts.block(),
278
- hasBackdrop: false,
279
- });
280
- this.dropdownOverlay = this.overlay.create(config);
281
- const portal = new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef);
282
- this.dropdownOverlay.attach(portal);
283
- }
284
- _destroyOverlay() {
285
- if (!this.dropdownOverlay)
286
- return;
287
- this.dropdownOverlay.dispose();
288
- delete this.dropdownOverlay;
289
- }
290
- //! hooks
291
- ngAfterViewInit() {
292
- this._setDateInputAttributes();
293
- }
294
- //! dropdown state handlers
295
- onGeneralClick(event) {
296
- const target = event.target;
297
- if (target.tagName !== 'INPUT') {
298
- event.preventDefault();
299
- }
300
- if (this.isOpen()) {
301
- this.close();
302
- }
303
- this.dateInput().nativeElement.focus();
304
- }
305
- onOutsideClick(event) {
306
- if (!this.isOpen())
307
- return;
308
- const target = event.target;
309
- if (this.elementRef.nativeElement.contains(target))
310
- return;
311
- this.close();
312
- }
313
- onCalendarButtonClick(event) {
314
- if (this.calendarDisabled())
315
- return;
316
- if (this.calendarHidden())
317
- return;
318
- event.preventDefault();
319
- event.stopPropagation();
320
- this.toggle();
321
- }
322
- toggle() {
323
- if (this.isOpen()) {
324
- this.close();
325
- return;
326
- }
327
- this.open();
328
- }
329
- open() {
330
- if (this.disabled() || this.isOpen())
331
- return;
332
- this.isOpen.set(true);
333
- this._createOverlay();
334
- this.focus();
335
- this.openEvent.emit();
336
- }
337
- close() {
338
- if (!this.isOpen())
339
- return;
340
- this.isOpen.set(false);
341
- this._destroyOverlay();
342
- this._onTouched();
343
- this.closeEvent.emit();
344
- }
345
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDateInputComponent, deps: [{ token: ARD_DATE_INPUT_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
346
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ArdiumDateInputComponent, selector: "ard-date-input", inputs: { inputAttrs: { classPropertyName: "inputAttrs", publicName: "inputAttrs", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inputReadOnly: { classPropertyName: "inputReadOnly", publicName: "inputReadOnly", isSignal: true, isRequired: false, transformFunction: null }, calendarDisabled: { classPropertyName: "calendarDisabled", publicName: "calendarDisabled", isSignal: true, isRequired: false, transformFunction: null }, calendarHidden: { classPropertyName: "calendarHidden", publicName: "calendarHidden", isSignal: true, isRequired: false, transformFunction: null }, serializeFn: { classPropertyName: "serializeFn", publicName: "serializeFn", isSignal: true, isRequired: false, transformFunction: null }, deserializeFn: { classPropertyName: "deserializeFn", publicName: "deserializeFn", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, dateInputValue: { classPropertyName: "dateInputValue", publicName: "dateInputValue", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, minMaxStrategy: { classPropertyName: "minMaxStrategy", publicName: "minMaxStrategy", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, dropdownAppearance: { classPropertyName: "dropdownAppearance", publicName: "dropdownAppearance", isSignal: true, isRequired: false, transformFunction: null }, dropdownVariant: { classPropertyName: "dropdownVariant", publicName: "dropdownVariant", isSignal: true, isRequired: false, transformFunction: null }, activeView: { classPropertyName: "activeView", publicName: "activeView", isSignal: true, isRequired: false, transformFunction: null }, activeYear: { classPropertyName: "activeYear", publicName: "activeYear", isSignal: true, isRequired: false, transformFunction: null }, activeMonth: { classPropertyName: "activeMonth", publicName: "activeMonth", isSignal: true, isRequired: false, transformFunction: null }, firstWeekday: { classPropertyName: "firstWeekday", publicName: "firstWeekday", isSignal: true, isRequired: false, transformFunction: null }, multipleYearPageChangeModifier: { classPropertyName: "multipleYearPageChangeModifier", publicName: "multipleYearPageChangeModifier", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, useAcceptButtonToSelect: { classPropertyName: "useAcceptButtonToSelect", publicName: "useAcceptButtonToSelect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", dateInputValue: "dateInputValueChange", isOpen: "isOpenChange", openEvent: "open", closeEvent: "close", activeView: "activeViewChange", activeYear: "activeYearChange", activeMonth: "activeMonthChange", yearSelect: "yearSelect", monthSelect: "monthSelect" }, providers: [
347
- {
348
- provide: NG_VALUE_ACCESSOR,
349
- useExisting: forwardRef(() => ArdiumDateInputComponent),
350
- multi: true,
351
- },
352
- {
353
- provide: ARD_FORM_FIELD_CONTROL,
354
- useExisting: ArdiumDateInputComponent,
355
- },
356
- ], queries: [{ propertyName: "valueTemplate", first: true, predicate: ArdDateInputValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarIconTemplate", first: true, predicate: ArdDateInputCalendarIconTemplateDirective, descendants: true, isSignal: true }, { propertyName: "acceptButtonsTemplate", first: true, predicate: ArdDateInputAcceptButtonsTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdDateInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdDateInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarDaysViewHeaderTemplate", first: true, predicate: ArdDateInputDaysViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarYearsViewHeaderTemplate", first: true, predicate: ArdDateInputYearsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarMonthsViewHeaderTemplate", first: true, predicate: ArdDateInputMonthsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarWeekdayTemplate", first: true, predicate: ArdDateInputWeekdayTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarFloatingMonthTemplate", first: true, predicate: ArdDateInputFloatingMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarYearTemplate", first: true, predicate: ArdDateInputYearTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarMonthTemplate", first: true, predicate: ArdDateInputMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarDayTemplate", first: true, predicate: ArdDateInputDayTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: i3.ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i4.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: i5.ArdiumCalendarComponent, selector: "ard-calendar", inputs: ["color", "activeView", "activeYear", "activeMonth", "firstWeekday", "multipleYearPageChangeModifier", "autoFocus", "selected", "min", "max", "filter"], outputs: ["activeViewChange", "activeYearChange", "activeMonthChange", "selectedChange", "yearSelect", "monthSelect"] }, { kind: "component", type: i6.ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact", "pointerEventsWhenDisabled"] }, { kind: "component", type: i7.ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "directive", type: i8._CalendarTemplateRepositoryDirective, selector: "ard-calendar > ng-template[_ard-tmp-repository]", inputs: ["daysViewHeaderTmp", "yearsViewHeaderTmp", "monthsViewHeaderTmp", "weekdayTmp", "floatingMonthTmp", "yearTmp", "monthTmp", "dayTmp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
357
- }
358
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ArdiumDateInputComponent, decorators: [{
359
- type: Component,
360
- args: [{ selector: 'ard-date-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
361
- {
362
- provide: NG_VALUE_ACCESSOR,
363
- useExisting: forwardRef(() => ArdiumDateInputComponent),
364
- multi: true,
365
- },
366
- {
367
- provide: ARD_FORM_FIELD_CONTROL,
368
- useExisting: ArdiumDateInputComponent,
369
- },
370
- ], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"] }]
371
- }], ctorParameters: () => [{ type: undefined, decorators: [{
372
- type: Inject,
373
- args: [ARD_DATE_INPUT_DEFAULTS]
374
- }] }] });
375
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2lucHV0cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9pbnB1dHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFjLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osTUFBTSxFQUNOLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUVMLE1BQU0sRUFDTixNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWpG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LEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2dCQUN2RCxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHNCQUFzQjtnQkFDL0IsV0FBVyxFQUFFLHdCQUF3QjthQUN0QztTQUNGLHFFQXNXcUMsa0NBQWtDLHVHQUMzQix5Q0FBeUMsd0dBQ3hDLDBDQUEwQyxpR0FFakQsbUNBQW1DLGlHQUNuQyxtQ0FBbUMsaUhBRW5CLDJDQUEyQyxrSEFDMUMsNENBQTRDLG1IQUMzQyw2Q0FBNkMsMEdBQ3RELG9DQUFvQyxnSEFDOUIsMENBQTBDLHVHQUNuRCxpQ0FBaUMsd0dBQ2hDLGtDQUFrQyxzR0FDcEMsZ0NBQWdDLDhiQXJIRiw0QkFBNEIsdUZDeFV4Ryw0ekpBNElBOzs0RkRqRWEsd0JBQXdCO2tCQWxCcEMsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHNCQUFzQjs0QkFDL0IsV0FBVywwQkFBMEI7eUJBQ3RDO3FCQUNGOzswQkFJWSxNQUFNOzJCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYsIFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBjb21wdXRlZCxcclxuICBjb250ZW50Q2hpbGQsXHJcbiAgZWZmZWN0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbmplY3QsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIG1vZGVsLFxyXG4gIE9uRGVzdHJveSxcclxuICBvdXRwdXQsXHJcbiAgc2lnbmFsLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIHZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlRGF0ZVByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0BhcmRpdW0tdWkvZGV2a2l0JztcclxuaW1wb3J0IHsgaXNEZWZpbmVkLCBpc051bGwgfSBmcm9tICdzaW1wbGUtYm9vbCc7XHJcbmltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXJkQ2FsZW5kYXJGaWx0ZXJGbiwgQXJkQ2FsZW5kYXJWaWV3IH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudHlwZXMnO1xyXG5pbXBvcnQgeyBBcmRpdW1Ecm9wZG93blBhbmVsQ29tcG9uZW50LCBEcm9wZG93blBhbmVsQXBwZWFyYW5jZSwgRHJvcGRvd25QYW5lbFZhcmlhbnQgfSBmcm9tICcuLi8uLi9kcm9wZG93bi1wYW5lbCc7XHJcbmltcG9ydCB7IEFSRF9GT1JNX0ZJRUxEX0NPTlRST0wgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY2hpbGQudG9rZW4nO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDb2xvciB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbG9ycy50eXBlcyc7XHJcbmltcG9ydCB7IEZvcm1FbGVtZW50QXBwZWFyYW5jZSwgRm9ybUVsZW1lbnRWYXJpYW50IH0gZnJvbSAnLi4vLi4vdHlwZXMvdGhlbWluZy50eXBlcyc7XHJcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnLi4vLi4vdHlwZXMvdXRpbGl0eS50eXBlcyc7XHJcbmltcG9ydCB7IEFSRF9EQVRFX0lOUFVUX0RFRkFVTFRTLCBBcmREYXRlSW5wdXREZWZhdWx0cyB9IGZyb20gJy4vZGF0ZS1pbnB1dC5kZWZhdWx0cyc7XHJcbmltcG9ydCB7XHJcbiAgQXJkRGF0ZUlucHV0QWNjZXB0QnV0dG9uc1RlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dENhbGVuZGFySWNvblRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dERheXNWaWV3SGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0RGF5VGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0RmxvYXRpbmdNb250aFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dE1vbnRoc1ZpZXdIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSxcclxuICBBcmREYXRlSW5wdXRNb250aFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFByZWZpeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFN1ZmZpeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFZhbHVlVGVtcGxhdGVEaXJlY3RpdmUsXHJcbiAgQXJkRGF0ZUlucHV0V2Vla2RheVRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFllYXJzVmlld0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gIEFyZERhdGVJbnB1dFllYXJUZW1wbGF0ZURpcmVjdGl2ZSxcclxufSBmcm9tICcuL2RhdGUtaW5wdXQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtcclxuICBBcmREYXRlSW5wdXRBY2NlcHRCdXR0b25zQ29udGV4dCxcclxuICBBcmREYXRlSW5wdXREZXNlcmlhbGl6ZUZuLFxyXG4gIEFyZERhdGVJbnB1dE1pbk1heFN0cmF0ZWd5LFxyXG4gIEFyZERhdGVJbnB1dFNlcmlhbGl6ZUZuLFxyXG4gIEFyZERhdGVJbnB1dFZhbHVlQ29udGV4dCxcclxufSBmcm9tICcuL2RhdGUtaW5wdXQudHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcmQtZGF0ZS1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQXJkaXVtRGF0ZUlucHV0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBBUkRfRk9STV9GSUVMRF9DT05UUk9MLFxyXG4gICAgICB1c2VFeGlzdGluZzogQXJkaXVtRGF0ZUlucHV0Q29tcG9uZW50LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJkaXVtRGF0ZUlucHV0Q29tcG9uZW50IGV4dGVuZHMgX0Zvcm1GaWVsZENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcclxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX0RFRkFVTFRTITogQXJkRGF0ZUlucHV0RGVmYXVsdHM7XHJcbiAgY29uc3RydWN0b3IoQEluamVjdChBUkRfREFURV9JTlBVVF9ERUZBVUxUUykgZGVmYXVsdHM6IEFyZERhdGVJbnB1dERlZmF1bHRzKSB7XHJcbiAgICBzdXBlcihkZWZhdWx0cyk7XHJcblxyXG4gICAgZWZmZWN0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuX2VtaXRDaGFuZ2UoKTtcclxuICAgICAgICB0aGlzLl9zZXJpYWxpemVWYWx1ZUludG9EYXRlSW5wdXQoKTtcclxuICAgICAgfSxcclxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ3lPcHRzID0gaW5qZWN0KFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyk7XHJcblxyXG4gIHJlYWRvbmx5IGlucHV0QXR0cnMgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+Pih0aGlzLl9ERUZBVUxUUy5pbnB1dEF0dHJzKTtcclxuXHJcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KHRoaXMuX0RFRkFVTFRTLnBsYWNlaG9sZGVyKTtcclxuXHJcbiAgcmVhZG9ubHkgaW5wdXRSZWFkT25seSA9IGlucHV0PGJvb2xlYW4sIGFueT4oZmFsc2UsIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2KSB9KTtcclxuICByZWFkb25seSBjYWxlbmRhckRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG4gIHJlYWRvbmx5IGNhbGVuZGFySGlkZGVuID0gaW5wdXQ8Ym9vbGVhbiwgYW55PihmYWxzZSwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICAvLyEgc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb25cclxuICByZWFkb25seSBzZXJpYWxpemVGbiA9IGlucHV0PEFyZERhdGVJbnB1dFNlcmlhbGl6ZUZuPih0aGlzLl9ERUZBVUxUUy5zZXJpYWxpemVGbik7XHJcbiAgcmVhZG9ubHkgZGVzZXJpYWxpemVGbiA9IGlucHV0PEFyZERhdGVJbnB1dERlc2VyaWFsaXplRm4+KHRoaXMuX0RFRkFVTFRTLmRlc2VyaWFsaXplRm4pO1xyXG5cclxuICAvLyEgY29udHJvbCB2YWx1ZSBhY2Nlc3NvclxyXG4gIHJlYWRvbmx5IHZhbHVlID0gbW9kZWw8RGF0ZSB8IG51bGw+KG51bGwpO1xyXG4gIHJlYWRvbmx5IGRhdGVJbnB1dFZhbHVlID0gbW9kZWw8c3RyaW5nPignJyk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfd2FzRGF0ZUlucHV0Q2hhbmdlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIHdyaXRlVmFsdWUodjogRGF0ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICh2IGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICB0aGlzLnZhbHVlLnNldCh2KTtcclxuICAgIH0gZWxzZSBpZiAoIWlzRGVmaW5lZCh2KSkge1xyXG4gICAgICB0aGlzLnZhbHVlLnNldChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IobmV3IEVycm9yKGBBUkQtTkYwMDgzOiA8YXJkLWRhdGUtaW5wdXQ+IHdyaXRlVmFsdWUgZXhwZWN0ZWQgYSBEYXRlIG9yIG51bGwsIGdvdCBcIiR7dn1cIi5gKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyEgY2hhbmdlICYgdG91Y2ggZXZlbnQgZW1pdHRlcnNcclxuICBwcm90ZWN0ZWQgX2VtaXRDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbkNoYW5nZVJlZ2lzdGVyZWQ/Lih0aGlzLnZhbHVlKCkpO1xyXG4gIH1cclxuICBwcml2YXRlIF9vblRvdWNoZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWRSZWdpc3RlcmVkPy4oKTtcclxuICB9XHJcblxyXG4gIC8vISBvdXRwdXQgZXZlbnRzXHJcbiAgcmVhZG9ubHkgaXNPcGVuID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICByZWFkb25seSBvcGVuRXZlbnQgPSBvdXRwdXQ8dm9pZD4oeyBhbGlhczogJ29wZW4nIH0pO1xyXG4gIHJlYWRvbmx5IGNsb3NlRXZlbnQgPSBvdXRwdXQ8dm9pZD4oeyBhbGlhczogJ2Nsb3NlJyB9KTtcclxuXHJcbiAgLy8hIGRhdGUgaW5wdXQgZXZlbnQgaGFuZGxlcnNcclxuICByZWFkb25seSBkYXRlSW5wdXQgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2RhdGVJbnB1dCcpO1xyXG5cclxuICByZWFkb25seSBtaW5NYXhTdHJhdGVneSA9IGlucHV0PEFyZERhdGVJbnB1dE1pbk1heFN0cmF0ZWd5Pih0aGlzLl9ERUZBVUxUUy5taW5NYXhTdHJhdGVneSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRGF0ZUlucHV0Rm9jdXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIG9uRGF0ZUlucHV0SW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB2ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIHRoaXMuZGF0ZUlucHV0VmFsdWUuc2V0KHYpO1xyXG4gIH1cclxuICBvbkRhdGVJbnB1dEZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRm9jdXMoZXZlbnQpO1xyXG4gICAgdGhpcy5faXNEYXRlSW5wdXRGb2N1c2VkLnNldCh0cnVlKTtcclxuICAgIHRoaXMuX3dhc0RhdGVJbnB1dENoYW5nZWQuc2V0KGZhbHNlKTtcclxuICB9XHJcbiAgb25EYXRlSW5wdXRCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQmx1cihldmVudCk7XHJcblxyXG4gICAgdGhpcy5fcHJvY2Vzc0RhdGVJbnB1dFRleHQodGhpcy5kYXRlSW5wdXRWYWx1ZSgpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XHJcblxyXG4gICAgdGhpcy5faXNEYXRlSW5wdXRGb2N1c2VkLnNldChmYWxzZSk7XHJcbiAgfVxyXG4gIG9uRGF0ZUlucHV0RW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC5rZXkgIT09ICdFbnRlcicpIHJldHVybjtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB0aGlzLmJsdXIoKTtcclxuICAgIHRoaXMuZm9jdXMoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcHJvY2Vzc0RhdGVJbnB1dFRleHQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGRhdGUgPSB0aGlzLmRlc2VyaWFsaXplRm4oKSh2YWx1ZSwgdGhpcy52YWx1ZSgpKTtcclxuXHJcbiAgICBpZiAodGhpcy5taW5NYXhTdHJhdGVneSgpID09PSBBcmREYXRlSW5wdXRNaW5NYXhTdHJhdGVneS5BZGp1c3QgJiYgZGF0ZSkge1xyXG4gICAgICBjb25zdCBtaW4gPSB0aGlzLm1pbigpO1xyXG4gICAgICBjb25zdCBtYXggPSB0aGlzLm1heCgpO1xyXG5cclxuICAgICAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XHJcbiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKG1pbik7XHJcbiAgICAgIH0gZWxzZSBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcclxuICAgICAgICBkYXRlID0gbmV3IERhdGUobWF4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmFsdWUuc2V0KGRhdGUpO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZXREYXRlSW5wdXRBdHRyaWJ1dGVzKCkge1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmRhdGVJbnB1dCgpIS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICBhdXRvY29ycmVjdDogJ29mZicsXHJcbiAgICAgIGF1dG9jYXBpdGFsaXplOiAnb2ZmJyxcclxuICAgICAgYXV0b2NvbXBsZXRlOiAnb2ZmJyxcclxuICAgICAgLi4udGhpcy5pbnB1dEF0dHJzKCksXHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpKSB7XHJcbiAgICAgIGlucHV0LnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyEgY29tcHV0ZWQgcHJvcGVydGllc1xyXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlQbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLl9pc0RhdGVJbnB1dEZvY3VzZWQoKSAmJiB0aGlzLmRhdGVJbnB1dFZhbHVlKCkpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBpc051bGwodGhpcy52YWx1ZSgpKTtcclxuICB9KTtcclxuICByZWFkb25seSBzaG91bGREaXNwbGF5VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5faXNEYXRlSW5wdXRGb2N1c2VkKCkpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlKCkgaW5zdGFuY2VvZiBEYXRlO1xyXG4gIH0pO1xyXG4gIHJlYWRvbmx5IHNob3VsZERpc3BsYXlEYXRlSW5wdXQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaW5wdXRSZWFkT25seSgpICYmICF0aGlzLnNob3VsZERpc3BsYXlWYWx1ZSgpICYmIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpO1xyXG4gIH0pO1xyXG5cclxuICAvLyEgYXBwZWFyYW5jZVxyXG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxGb3JtRWxlbWVudEFwcGVhcmFuY2U+KHRoaXMuX0RFRkFVTFRTLmFwcGVhcmFuY2UpO1xyXG4gIHJlYWRvbmx5IHZhcmlhbnQgPSBpbnB1dDxGb3JtRWxlbWVudFZhcmlhbnQ+KHRoaXMuX0RFRkFVTFRTLnZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IGNvbG9yID0gaW5wdXQ8Q29tcG9uZW50Q29sb3I+KHRoaXMuX0RFRkFVTFRTLmNvbG9yKTtcclxuXHJcbiAgcmVhZG9ubHkgY29tcGFjdCA9IGlucHV0PGJvb2xlYW4sIGFueT4odGhpcy5fREVGQVVMVFMuY29tcGFjdCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlQm9vbGVhblByb3BlcnR5KHYpIH0pO1xyXG5cclxuICByZWFkb25seSBuZ0NsYXNzZXMgPSBjb21wdXRlZCgoKSA9PlxyXG4gICAgW1xyXG4gICAgICAvL2FwcGVhcmFuY2UgYW5kIHZhcmlhbnQgaGFuZGxlZCBpbiBhcmQtZm9ybS1maWVsZC1mcmFtZSBjb21wb25lbnRcclxuICAgICAgLy9jb2xvciBoYW5kbGVkIGluIGFyZC1jYWxlbmRhciBjb21wb25lbnRcclxuICAgICAgdGhpcy5jb21wYWN0KCkgPyAnYXJkLWNvbXBhY3QnIDogJycsXHJcbiAgICAgIHRoaXMuaXNPcGVuKCkgPyAnYXJkLWRyb3Bkb3duLW9wZW4nIDogJycsXHJcbiAgICAgIHRoaXMuX2lzRGF0ZUlucHV0Rm9jdXNlZCgpID8gJ2FyZC1kYXRlLWlucHV0X19kYXRlLWlucHV0LWZvY3VzZWQnIDogJycsXHJcbiAgICBdLmpvaW4oJyAnKVxyXG4gICk7XHJcblxyXG4gIHJlYWRvbmx5IGRyb3Bkb3duQXBwZWFyYW5jZSA9IGlucHV0PE51bGxhYmxlPERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlPj4odGhpcy5fREVGQVVMVFMuZHJvcGRvd25BcHBlYXJhbmNlKTtcclxuICByZWFkb25seSBkcm9wZG93bkFwcGVhcmFuY2VPckRlZmF1bHQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5kcm9wZG93bkFwcGVhcmFuY2UoKSkgcmV0dXJuIHRoaXMuZHJvcGRvd25BcHBlYXJhbmNlKCkhO1xyXG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZSgpID09PSBGb3JtRWxlbWVudEFwcGVhcmFuY2UuT3V0bGluZWQpIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5PdXRsaW5lZDtcclxuICAgIHJldHVybiBEcm9wZG93blBhbmVsQXBwZWFyYW5jZS5SYWlzZWQ7XHJcbiAgfSk7XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25WYXJpYW50ID0gaW5wdXQ8TnVsbGFibGU8RHJvcGRvd25QYW5lbFZhcmlhbnQ+Pih0aGlzLl9ERUZBVUxUUy5kcm9wZG93blZhcmlhbnQpO1xyXG4gIHJlYWRvbmx5IGRyb3Bkb3duVmFyaWFudE9yRGVmYXVsdCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGlmICh0aGlzLmRyb3Bkb3duVmFyaWFudCgpKSByZXR1cm4gdGhpcy5kcm9wZG93blZhcmlhbnQoKSE7XHJcbiAgICBjb25zdCB2YXJpYW50ID0gdGhpcy52YXJpYW50KCk7XHJcbiAgICBpZiAodmFyaWFudCA9PT0gRm9ybUVsZW1lbnRWYXJpYW50LlBpbGwpIHJldHVybiBEcm9wZG93blBhbmVsVmFyaWFudC5Sb3VuZGVkO1xyXG4gICAgcmV0dXJuIHZhcmlhbnQ7XHJcbiAgfSk7XHJcblxyXG4gIC8vISBjYWxlbmRhciBhdHRyaWJ1dGVzXHJcbiAgcmVhZG9ubHkgYWN0aXZlVmlldyA9IG1vZGVsPEFyZENhbGVuZGFyVmlldz4odGhpcy5fREVGQVVMVFMuYWN0aXZlVmlldyk7XHJcbiAgcmVhZG9ubHkgYWN0aXZlWWVhciA9IG1vZGVsPG51bWJlcj4odGhpcy5fREVGQVVMVFMuYWN0aXZlWWVhcik7XHJcbiAgcmVhZG9ubHkgYWN0aXZlTW9udGggPSBtb2RlbDxudW1iZXI+KHRoaXMuX0RFRkFVTFRTLmFjdGl2ZU1vbnRoKTtcclxuXHJcbiAgcmVhZG9ubHkgZmlyc3RXZWVrZGF5ID0gaW5wdXQ8bnVtYmVyLCBhbnk+KHRoaXMuX0RFRkFVTFRTLmZpcnN0V2Vla2RheSwge1xyXG4gICAgdHJhbnNmb3JtOiB2ID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5maXJzdFdlZWtkYXkpO1xyXG4gICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihgQVJELU5GMDA4MUE6IFtmaXJzdFdlZWtkYXldIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBnb3QgXCIke3ZhbHVlfVwiLiBVc2luZyBkZWZhdWx0IHZhbHVlIGluc3RlYWQuYClcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiA2KSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgIG5ldyBFcnJvcihcclxuICAgICAgICAgICAgYEFSRC1XQTAwODFCOiBbZmlyc3RXZWVrZGF5XSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiwgZ290IFwiJHt2YWx1ZX1cIi4gVXNpbmcgbW9kdWxvIG9wZXJhdG9yIHRvIGFkanVzdCB0aGUgdmFsdWUuYFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHZhbHVlICUgNztcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IG11bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllciA9IGlucHV0PG51bWJlciwgYW55Pih0aGlzLl9ERUZBVUxUUy5tdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXIsIHtcclxuICAgIHRyYW5zZm9ybTogdiA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgdGhpcy5fREVGQVVMVFMubXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyKTtcclxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHZhbHVlKSB8fCB2YWx1ZSA8IDEpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgbmV3IEVycm9yKFxyXG4gICAgICAgICAgICBgQVJELU5GMDA4MjogW211bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcl0gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIGdvdCBcIiR7dmFsdWV9XCIuIFVzaW5nIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5gXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gNTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9LFxyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBtaW4gPSBpbnB1dDxEYXRlIHwgbnVsbCwgYW55Pih0aGlzLl9ERUZBVUxUUy5taW4sIHsgdHJhbnNmb3JtOiB2ID0+IGNvZXJjZURhdGVQcm9wZXJ0eSh2LCB0aGlzLl9ERUZBVUxUUy5taW4pIH0pO1xyXG4gIHJlYWRvbmx5IG1heCA9IGlucHV0PERhdGUgfCBudWxsLCBhbnk+KHRoaXMuX0RFRkFVTFRTLm1heCwgeyB0cmFuc2Zvcm06IHYgPT4gY29lcmNlRGF0ZVByb3BlcnR5KHYsIHRoaXMuX0RFRkFVTFRTLm1heCkgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGZpbHRlciA9IGlucHV0PEFyZENhbGVuZGFyRmlsdGVyRm4gfCBudWxsPih0aGlzLl9ERUZBVUxUUy5maWx0ZXIpO1xyXG5cclxuICAvLyEgY2FsZW5kYXIgb3V0cHV0c1xyXG4gIHJlYWRvbmx5IHllYXJTZWxlY3QgPSBvdXRwdXQ8bnVtYmVyPigpO1xyXG4gIHJlYWRvbmx5IG1vbnRoU2VsZWN0ID0gb3V0cHV0PG51bWJlcj4oKTtcclxuXHJcbiAgLy8hIGNhbGVuZGFyIGNvbnRyb2xzXHJcbiAgcmVhZG9ubHkgdXNlQWNjZXB0QnV0dG9uVG9TZWxlY3QgPSBpbnB1dDxib29sZWFuLCBhbnk+KGZhbHNlLCB7IHRyYW5zZm9ybTogdiA9PiBjb2VyY2VCb29sZWFuUHJvcGVydHkodikgfSk7XHJcblxyXG4gIHByaXZhdGUgX3ZhbHVlVG9BY2NlcHQ6IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgb25DYWxlbmRhclNlbGVjdGVkQ2hhbmdlKGV2ZW50OiBEYXRlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudXNlQWNjZXB0QnV0dG9uVG9TZWxlY3QoKSkge1xyXG4gICAgICB0aGlzLl92YWx1ZVRvQWNjZXB0ID0gZXZlbnQ7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2FjY2VwdFNlbGVjdGVkRGF0ZShldmVudCEpO1xyXG4gIH1cclxuICBwcml2YXRlIF9hY2NlcHRTZWxlY3RlZERhdGUoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWUuc2V0KGRhdGUpO1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuICBwcml2YXRlIF9zZXJpYWxpemVWYWx1ZUludG9EYXRlSW5wdXQoKSB7XHJcbiAgICB0aGlzLmRhdGVJbnB1dFZhbHVlLnNldCh0aGlzLnNlcmlhbGl6ZUZuKCkodGhpcy52YWx1ZSgpKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NhbmNlbENhbGVuZGFyU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25BY2NlcHRCdXR0b25DbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FjY2VwdFNlbGVjdGVkRGF0ZSh0aGlzLl92YWx1ZVRvQWNjZXB0KTtcclxuICAgIHRoaXMuX3ZhbHVlVG9BY2NlcHQgPSBudWxsO1xyXG4gIH1cclxuICBvbkNhbmNlbEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY2FuY2VsQ2FsZW5kYXJTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIC8vISBkcm9wZG93biBvdmVybGF5XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25Ib3N0ID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZHJvcGRvd25Ib3N0Jyk7XHJcbiAgcmVhZG9ubHkgZHJvcGRvd25UZW1wbGF0ZSA9IHZpZXdDaGlsZC5yZXF1aXJlZDxUZW1wbGF0ZVJlZjxhbnk+PignZHJvcGRvd25UZW1wbGF0ZScpO1xyXG4gIHJlYWRvbmx5IGRyb3Bkb3duUGFuZWwgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8QXJkaXVtRHJvcGRvd25QYW5lbENvbXBvbmVudD4oQXJkaXVtRHJvcGRvd25QYW5lbENvbXBvbmVudCk7XHJcblxyXG4gIHByaXZhdGUgZHJvcGRvd25PdmVybGF5PzogT3ZlcmxheVJlZjtcclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT3ZlcmxheSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XHJcbiAgICAgIC5wb3NpdGlvbigpXHJcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZHJvcGRvd25Ib3N0KCkpXHJcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxyXG4gICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXHJcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcclxuICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICB9LFxyXG4gICAgICBdKTtcclxuXHJcbiAgICBjb25zdCBjb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHN0cmF0ZWd5LFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneU9wdHMuYmxvY2soKSxcclxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5kcm9wZG93bk92ZXJsYXkgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKGNvbmZpZyk7XHJcblxyXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd25UZW1wbGF0ZSgpLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgdGhpcy5kcm9wZG93bk92ZXJsYXkuYXR0YWNoKHBvcnRhbCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2Rlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRyb3Bkb3duT3ZlcmxheSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuZHJvcGRvd25PdmVybGF5LmRpc3Bvc2UoKTtcclxuICAgIGRlbGV0ZSB0aGlzLmRyb3Bkb3duT3ZlcmxheTtcclxuICB9XHJcblxyXG4gIC8vISBob29rc1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldERhdGVJbnB1dEF0dHJpYnV0ZXMoKTtcclxuICB9XHJcblxyXG4gIC8vISBkcm9wZG93biBzdGF0ZSBoYW5kbGVyc1xyXG4gIG9uR2VuZXJhbENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGFyZ2V0LnRhZ05hbWUgIT09ICdJTlBVVCcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc09wZW4oKSkge1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVJbnB1dCgpLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICB9XHJcbiAgb25PdXRzaWRlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4oKSkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG9uQ2FsZW5kYXJCdXR0b25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FsZW5kYXJEaXNhYmxlZCgpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5jYWxlbmRhckhpZGRlbigpKSByZXR1cm47XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy50b2dnbGUoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcGVuKCk7XHJcbiAgfVxyXG4gIG9wZW4oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpIHx8IHRoaXMuaXNPcGVuKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzT3Blbi5zZXQodHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5fY3JlYXRlT3ZlcmxheSgpO1xyXG4gICAgdGhpcy5mb2N1cygpO1xyXG5cclxuICAgIHRoaXMub3BlbkV2ZW50LmVtaXQoKTtcclxuICB9XHJcbiAgY2xvc2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKCkpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzT3Blbi5zZXQoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XHJcblxyXG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLy8hIHRlbXBsYXRlc1xyXG4gIHJlYWRvbmx5IHZhbHVlVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0VmFsdWVUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJJY29uVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0Q2FsZW5kYXJJY29uVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGFjY2VwdEJ1dHRvbnNUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRBY2NlcHRCdXR0b25zVGVtcGxhdGVEaXJlY3RpdmUpO1xyXG5cclxuICByZWFkb25seSBwcmVmaXhUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRQcmVmaXhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgc3VmZml4VGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0U3VmZml4VGVtcGxhdGVEaXJlY3RpdmUpO1xyXG5cclxuICByZWFkb25seSBjYWxlbmRhckRheXNWaWV3SGVhZGVyVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0RGF5c1ZpZXdIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJZZWFyc1ZpZXdIZWFkZXJUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRZZWFyc1ZpZXdIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJNb250aHNWaWV3SGVhZGVyVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0TW9udGhzVmlld0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBjYWxlbmRhcldlZWtkYXlUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXRXZWVrZGF5VGVtcGxhdGVEaXJlY3RpdmUpO1xyXG4gIHJlYWRvbmx5IGNhbGVuZGFyRmxvYXRpbmdNb250aFRlbXBsYXRlID0gY29udGVudENoaWxkKEFyZERhdGVJbnB1dEZsb2F0aW5nTW9udGhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJZZWFyVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0WWVhclRlbXBsYXRlRGlyZWN0aXZlKTtcclxuICByZWFkb25seSBjYWxlbmRhck1vbnRoVGVtcGxhdGUgPSBjb250ZW50Q2hpbGQoQXJkRGF0ZUlucHV0TW9udGhUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcbiAgcmVhZG9ubHkgY2FsZW5kYXJEYXlUZW1wbGF0ZSA9IGNvbnRlbnRDaGlsZChBcmREYXRlSW5wdXREYXlUZW1wbGF0ZURpcmVjdGl2ZSk7XHJcblxyXG4gIC8vISBjb250ZXh0IHByb3ZpZGVyc1xyXG4gIHJlYWRvbmx5IHZhbHVlQ29udGV4dCA9IGNvbXB1dGVkPEFyZERhdGVJbnB1dFZhbHVlQ29udGV4dD4oKCkgPT4gKHtcclxuICAgICRpbXBsaWNpdDogdGhpcy52YWx1ZSgpLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgYWNjZXB0QnV0dG9uc0NvbnRleHQgPSBjb21wdXRlZDxBcmREYXRlSW5wdXRBY2NlcHRCdXR0b25zQ29udGV4dD4oKCkgPT4gKHtcclxuICAgICRpbXBsaWNpdDogKCkgPT4gdGhpcy5vbkFjY2VwdEJ1dHRvbkNsaWNrKCksXHJcbiAgICBhY2NlcHQ6ICgpID0+IHRoaXMub25BY2NlcHRCdXR0b25DbGljaygpLFxyXG4gICAgY2FuY2VsOiAoKSA9PiB0aGlzLm9uQ2FuY2VsQnV0dG9uQ2xpY2soKSxcclxuICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkKCkgfHwgdGhpcy5jYWxlbmRhckRpc2FibGVkKCksXHJcbiAgfSkpO1xyXG59XHJcbiIsIjxhcmQtZm9ybS1maWVsZC1mcmFtZVxyXG4gIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXHJcbiAgW3ZhcmlhbnRdPVwidmFyaWFudCgpXCJcclxuICBbY29tcGFjdF09XCJjb21wYWN0KClcIlxyXG4gIFtpc0ZvY3VzZWRdPVwiaXNGb2N1c2VkKClcIlxyXG4gIFtoYXNFcnJvcl09XCJoYXNFcnJvcigpXCJcclxuICBbaXNTdWNjZXNzXT1cImlzU3VjY2VzcygpXCJcclxuICBbcHJlZml4VGVtcGxhdGVdPVwicHJlZml4VGVtcGxhdGUoKT8udGVtcGxhdGVcIlxyXG4gIFtzdWZmaXhUZW1wbGF0ZV09XCJzdWZmaXhUZW1wbGF0ZSgpPy50ZW1wbGF0ZVwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImFyZC1kYXRlLWlucHV0XCJcclxuICAgICNkcm9wZG93bkhvc3RcclxuICAgIChjbGljayk9XCJvbkdlbmVyYWxDbGljaygkZXZlbnQpXCJcclxuICAgIFtjbGFzcy5hcmQtaGFzLXZhbHVlXT1cIiEhdmFsdWUoKVwiXHJcbiAgICBbbmdDbGFzc109XCJuZ0NsYXNzZXMoKVwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImFyZC1kYXRlLWlucHV0X192YWx1ZS1jb250YWluZXIgYXJkLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dF9fcGxhY2Vob2xkZXIgYXJkLXBsYWNlaG9sZGVyXCJcclxuICAgICAgICBbY2xhc3MuYXJkLWRhdGUtaW5wdXRfX3BsYWNlaG9sZGVyLWhpZGRlbl09XCIhc2hvdWxkRGlzcGxheVBsYWNlaG9sZGVyKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgcGxhY2Vob2xkZXIoKSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRfX3ZhbHVlXCJcclxuICAgICAgICBbY2xhc3MuYXJkLWRhdGUtaW5wdXRfX3ZhbHVlLWhpZGRlbl09XCIhc2hvdWxkRGlzcGxheVZhbHVlKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgICAjZGVmYXVsdFZhbHVlVGVtcGxhdGVcclxuICAgICAgICAgIGxldC1kYXRlXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgc2VyaWFsaXplRm4oKShkYXRlKSB9fVxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidmFsdWVUZW1wbGF0ZSgpPy50ZW1wbGF0ZSB8fCBkZWZhdWx0VmFsdWVUZW1wbGF0ZVwiXHJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwidmFsdWVDb250ZXh0KClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dF9faW5wdXQtY29udGFpbmVyXCJcclxuICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxyXG4gICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcclxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlbigpXCJcclxuICAgICAgICBbYXR0ci5hcmlhLW93bnNdPVwiaXNPcGVuKCkgPyBodG1sSWQoKSA6IG51bGxcIlxyXG4gICAgICAgIFtjbGFzcy5hcmQtZGF0ZS1pbnB1dF9faW5wdXQtY29udGFpbmVyLWhpZGRlbl09XCIhc2hvdWxkRGlzcGxheURhdGVJbnB1dCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgI2RhdGVJbnB1dFxyXG4gICAgICAgICAgI2ZvY3VzYWJsZUVsZW1lbnRcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgIGNsYXNzPVwiYXJkLWRhdGUtaW5wdXRfX2lucHV0XCJcclxuICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4KClcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cImRhdGVJbnB1dFZhbHVlKClcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpc09wZW4oKSA/IGh0bWxJZCgpIDogbnVsbFwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25EYXRlSW5wdXRJbnB1dCgkZXZlbnQpXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIChmb2N1cyk9XCJvbkRhdGVJbnB1dEZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgKGJsdXIpPVwib25EYXRlSW5wdXRCbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgKGtleWRvd24pPVwib25EYXRlSW5wdXRFbnRlcigkZXZlbnQpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoIWNhbGVuZGFySGlkZGVuKCkpIHtcclxuICAgIDxhcmQtaWNvbi1idXR0b25cclxuICAgICAgY29sb3I9XCJub25lXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImNhbGVuZGFyRGlzYWJsZWQoKVwiXHJcbiAgICAgIChjbGljayk9XCJvbkNhbGVuZGFyQnV0dG9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICNkZWZhdWx0Q2FsZW5kYXJJY29uVGVtcGxhdGVcclxuICAgICAgICBsZXQtZGF0ZVxyXG4gICAgICA+XHJcbiAgICAgICAgPGFyZC1pY29uIGZpbGxlZD50b2RheTwvYXJkLWljb24+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FsZW5kYXJJY29uVGVtcGxhdGUoKT8udGVtcGxhdGUgfHwgZGVmYXVsdENhbGVuZGFySWNvblRlbXBsYXRlXCIgLz5cclxuICAgIDwvYXJkLWljb24tYnV0dG9uPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2FyZC1mb3JtLWZpZWxkLWZyYW1lPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkcm9wZG93blRlbXBsYXRlPlxyXG4gIDxhcmQtZHJvcGRvd24tcGFuZWxcclxuICAgIGNsYXNzPVwiYXJkLWRyb3Bkb3duLXBhbmVsIGFyZC1kYXRlLWlucHV0X19kcm9wZG93bi1wYW5lbFwiXHJcbiAgICBbYXBwZWFyYW5jZV09XCJkcm9wZG93bkFwcGVhcmFuY2VPckRlZmF1bHQoKVwiXHJcbiAgICBbdmFyaWFudF09XCJkcm9wZG93blZhcmlhbnRPckRlZmF1bHQoKVwiXHJcbiAgICBbaXNPcGVuXT1cInRydWVcIlxyXG4gICAgW3BhbmVsSWRdPVwiaHRtbElkKClcIlxyXG4gICAgW2NvbXBhY3RdPVwiY29tcGFjdCgpXCJcclxuICAgIChhcmRDbGlja091dHNpZGUpPVwib25PdXRzaWRlQ2xpY2soJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgPGFyZC1jYWxlbmRhclxyXG4gICAgICBjbGFzcz1cImFyZC1kYXRlLWlucHV0X19jYWxlbmRhclwiXHJcbiAgICAgIFsoYWN0aXZlTW9udGgpXT1cImFjdGl2ZU1vbnRoXCJcclxuICAgICAgWyhhY3RpdmVZZWFyKV09XCJhY3RpdmVZZWFyXCJcclxuICAgICAgWyhhY3RpdmVWaWV3KV09XCJhY3RpdmVWaWV3XCJcclxuICAgICAgW2ZpcnN0V2Vla2RheV09XCJmaXJzdFdlZWtkYXkoKVwiXHJcbiAgICAgIFttaW5dPVwibWluKClcIlxyXG4gICAgICBbbWF4XT1cIm1heCgpXCJcclxuICAgICAgYXV0b0ZvY3VzXHJcbiAgICAgIFttdWx0aXBsZVllYXJQYWdlQ2hhbmdlTW9kaWZpZXJdPVwibXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyKClcIlxyXG4gICAgICBbY29sb3JdPVwiY29sb3IoKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpIHx8IGNhbGVuZGFyRGlzYWJsZWQoKVwiXHJcbiAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcclxuICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cIm9uQ2FsZW5kYXJTZWxlY3RlZENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHllYXJTZWxlY3QpPVwieWVhclNlbGVjdC5lbWl0KCRldmVudClcIlxyXG4gICAgICAobW9udGhTZWxlY3QpPVwibW9udGhTZWxlY3QuZW1pdCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgICAgX2FyZC10bXAtcmVwb3NpdG9yeVxyXG4gICAgICAgIFtkYXlzVmlld0hlYWRlclRtcF09XCJjYWxlbmRhckRheXNWaWV3SGVhZGVyVGVtcGxhdGUoKVwiXHJcbiAgICAgICAgW3llYXJzVmlld0hlYWRlclRtcF09XCJjYWxlbmRhclllYXJzVmlld0hlYWRlclRlbXBsYXRlKClcIlxyXG4gICAgICAgIFttb250aHNWaWV3SGVhZGVyVG1wXT1cImNhbGVuZGFyTW9udGhzVmlld0hlYWRlclRlbXBsYXRlKClcIlxyXG4gICAgICAgIFt3ZWVrZGF5VG1wXT1cImNhbGVuZGFyV2Vla2RheVRlbXBsYXRlKClcIlxyXG4gICAgICAgIFtmbG9hdGluZ01vbnRoVG1wXT1cImNhbGVuZGFyRmxvYXRpbmdNb250aFRlbXBsYXRlKClcIlxyXG4gICAgICAgIFt5ZWFyVG1wXT1cImNhbGVuZGFyWWVhclRlbXBsYXRlKClcIlxyXG4gICAgICAgIFttb250aFRtcF09XCJjYWxlbmRhck1vbnRoVGVtcGxhdGUoKVwiXHJcbiAgICAgICAgW2RheVRtcF09XCJjYWxlbmRhckRheVRlbXBsYXRlKClcIlxyXG4gICAgICAvPlxyXG4gICAgPC9hcmQtY2FsZW5kYXI+XHJcbiAgICBAaWYgKHVzZUFjY2VwdEJ1dHRvblRvU2VsZWN0KCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJhcmQtZGF0ZS1pbnB1dF9fYWNjZXB0LWJ1dHRvbnMtY29udGFpbmVyXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgICNkZWZhdWx0QWNjZXB0QnV0dG9uc1RlbXBsYXRlXHJcbiAgICAgICAgbGV0LWRhdGVcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHNlcmlhbGl6ZUZuKCkoZGF0ZSkgfX1cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFjY2VwdEJ1dHRvbnNUZW1wbGF0ZSgpPy50ZW1wbGF0ZSB8fCBkZWZhdWx0QWNjZXB0QnV0dG9uc1RlbXBsYXRlXCJcclxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiYWNjZXB0QnV0dG9uc0NvbnRleHQoKVwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2FyZC1kcm9wZG93bi1wYW5lbD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -1,38 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { _formFieldComponentDefaults } from '../../_internal/form-field-component';
3
- import { ArdCalendarView } from '../../calendar/calendar.types';
4
- import { DropdownPanelAppearance, DropdownPanelVariant } from '../../dropdown-panel';
5
- import { ComponentColor } from '../../types/colors.types';
6
- import { FormElementAppearance, FormElementVariant } from '../../types/theming.types';
7
- import { DEFAULT_DATE_INPUT_DESERIALIZE_FN, DEFAULT_DATE_INPUT_SERIALIZE_FN } from './date-input.serializers';
8
- import { ArdDateInputMinMaxStrategy } from './date-input.types';
9
- const _dateInputDefaults = {
10
- ..._formFieldComponentDefaults,
11
- inputAttrs: {},
12
- placeholder: 'Choose a date',
13
- serializeFn: DEFAULT_DATE_INPUT_SERIALIZE_FN,
14
- deserializeFn: DEFAULT_DATE_INPUT_DESERIALIZE_FN,
15
- appearance: FormElementAppearance.Outlined,
16
- variant: FormElementVariant.Rounded,
17
- color: ComponentColor.Primary,
18
- compact: false,
19
- dropdownAppearance: DropdownPanelAppearance.Outlined,
20
- dropdownVariant: DropdownPanelVariant.Rounded,
21
- minMaxStrategy: ArdDateInputMinMaxStrategy.Adjust,
22
- // calendar defaults
23
- activeView: ArdCalendarView.Days,
24
- activeYear: new Date().getFullYear(),
25
- activeMonth: new Date().getMonth(),
26
- firstWeekday: 1,
27
- multipleYearPageChangeModifier: 5,
28
- min: null,
29
- max: null,
30
- filter: null,
31
- };
32
- export const ARD_DATE_INPUT_DEFAULTS = new InjectionToken('ard-date-input-defaults', {
33
- factory: () => ({ ..._dateInputDefaults }),
34
- });
35
- export function provideDateInputDefaults(config) {
36
- return { provide: ARD_DATE_INPUT_DEFAULTS, useValue: { ..._dateInputDefaults, ...config } };
37
- }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5kZWZhdWx0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvaW5wdXRzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBK0IsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoSCxPQUFPLEVBQXVCLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RyxPQUFPLEVBQTZCLDBCQUEwQixFQUEyQixNQUFNLG9CQUFvQixDQUFDO0FBeUJwSCxNQUFNLGtCQUFrQixHQUF5QjtJQUMvQyxHQUFHLDJCQUEyQjtJQUM5QixVQUFVLEVBQUUsRUFBRTtJQUNkLFdBQVcsRUFBRSxlQUFlO0lBQzVCLFdBQVcsRUFBRSwrQkFBK0I7SUFDNUMsYUFBYSxFQUFFLGlDQUFpQztJQUNoRCxVQUFVLEVBQUUscUJBQXFCLENBQUMsUUFBUTtJQUMxQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsT0FBTztJQUNuQyxLQUFLLEVBQUUsY0FBYyxDQUFDLE9BQU87SUFDN0IsT0FBTyxFQUFFLEtBQUs7SUFDZCxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQyxRQUFRO0lBQ3BELGVBQWUsRUFBRSxvQkFBb0IsQ0FBQyxPQUFPO0lBQzdDLGNBQWMsRUFBRSwwQkFBMEIsQ0FBQyxNQUFNO0lBQ2pELG9CQUFvQjtJQUNwQixVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUk7SUFDaEMsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO0lBQ3BDLFdBQVcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxZQUFZLEVBQUUsQ0FBQztJQUNmLDhCQUE4QixFQUFFLENBQUM7SUFDakMsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUF1Qix5QkFBeUIsRUFBRTtJQUN6RyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztDQUMzQyxDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsTUFBcUM7SUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUM5RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IF9Gb3JtRmllbGRDb21wb25lbnREZWZhdWx0cywgX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzIH0gZnJvbSAnLi4vLi4vX2ludGVybmFsL2Zvcm0tZmllbGQtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQXJkQ2FsZW5kYXJGaWx0ZXJGbiwgQXJkQ2FsZW5kYXJWaWV3IH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudHlwZXMnO1xyXG5pbXBvcnQgeyBEcm9wZG93blBhbmVsQXBwZWFyYW5jZSwgRHJvcGRvd25QYW5lbFZhcmlhbnQgfSBmcm9tICcuLi8uLi9kcm9wZG93bi1wYW5lbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudENvbG9yIH0gZnJvbSAnLi4vLi4vdHlwZXMvY29sb3JzLnR5cGVzJztcclxuaW1wb3J0IHsgRm9ybUVsZW1lbnRBcHBlYXJhbmNlLCBGb3JtRWxlbWVudFZhcmlhbnQgfSBmcm9tICcuLi8uLi90eXBlcy90aGVtaW5nLnR5cGVzJztcclxuaW1wb3J0IHsgREVGQVVMVF9EQVRFX0lOUFVUX0RFU0VSSUFMSVpFX0ZOLCBERUZBVUxUX0RBVEVfSU5QVVRfU0VSSUFMSVpFX0ZOIH0gZnJvbSAnLi9kYXRlLWlucHV0LnNlcmlhbGl6ZXJzJztcclxuaW1wb3J0IHsgQXJkRGF0ZUlucHV0RGVzZXJpYWxpemVGbiwgQXJkRGF0ZUlucHV0TWluTWF4U3RyYXRlZ3ksIEFyZERhdGVJbnB1dFNlcmlhbGl6ZUZuIH0gZnJvbSAnLi9kYXRlLWlucHV0LnR5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXJkRGF0ZUlucHV0RGVmYXVsdHMgZXh0ZW5kcyBfRm9ybUZpZWxkQ29tcG9uZW50RGVmYXVsdHMge1xyXG4gIGlucHV0QXR0cnM6IFJlY29yZDxzdHJpbmcsIGFueT47XHJcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBzZXJpYWxpemVGbjogQXJkRGF0ZUlucHV0U2VyaWFsaXplRm47XHJcbiAgZGVzZXJpYWxpemVGbjogQXJkRGF0ZUlucHV0RGVzZXJpYWxpemVGbjtcclxuICBhcHBlYXJhbmNlOiBGb3JtRWxlbWVudEFwcGVhcmFuY2U7XHJcbiAgdmFyaWFudDogRm9ybUVsZW1lbnRWYXJpYW50O1xyXG4gIGNvbG9yOiBDb21wb25lbnRDb2xvcjtcclxuICBjb21wYWN0OiBib29sZWFuO1xyXG4gIGRyb3Bkb3duQXBwZWFyYW5jZTogRHJvcGRvd25QYW5lbEFwcGVhcmFuY2U7XHJcbiAgZHJvcGRvd25WYXJpYW50OiBEcm9wZG93blBhbmVsVmFyaWFudDtcclxuICBtaW5NYXhTdHJhdGVneTogQXJkRGF0ZUlucHV0TWluTWF4U3RyYXRlZ3k7XHJcbiAgLy8gY2FsZW5kYXIgZGVmYXVsdHNcclxuICBhY3RpdmVWaWV3OiBBcmRDYWxlbmRhclZpZXc7XHJcbiAgYWN0aXZlWWVhcjogbnVtYmVyO1xyXG4gIGFjdGl2ZU1vbnRoOiBudW1iZXI7XHJcbiAgZmlyc3RXZWVrZGF5OiBudW1iZXI7XHJcbiAgbXVsdGlwbGVZZWFyUGFnZUNoYW5nZU1vZGlmaWVyOiBudW1iZXI7XHJcbiAgbWluOiBEYXRlIHwgbnVsbDtcclxuICBtYXg6IERhdGUgfCBudWxsO1xyXG4gIGZpbHRlcjogQXJkQ2FsZW5kYXJGaWx0ZXJGbiB8IG51bGw7XHJcbn1cclxuXHJcbmNvbnN0IF9kYXRlSW5wdXREZWZhdWx0czogQXJkRGF0ZUlucHV0RGVmYXVsdHMgPSB7XHJcbiAgLi4uX2Zvcm1GaWVsZENvbXBvbmVudERlZmF1bHRzLFxyXG4gIGlucHV0QXR0cnM6IHt9LFxyXG4gIHBsYWNlaG9sZGVyOiAnQ2hvb3NlIGEgZGF0ZScsXHJcbiAgc2VyaWFsaXplRm46IERFRkFVTFRfREFURV9JTlBVVF9TRVJJQUxJWkVfRk4sXHJcbiAgZGVzZXJpYWxpemVGbjogREVGQVVMVF9EQVRFX0lOUFVUX0RFU0VSSUFMSVpFX0ZOLFxyXG4gIGFwcGVhcmFuY2U6IEZvcm1FbGVtZW50QXBwZWFyYW5jZS5PdXRsaW5lZCxcclxuICB2YXJpYW50OiBGb3JtRWxlbWVudFZhcmlhbnQuUm91bmRlZCxcclxuICBjb2xvcjogQ29tcG9uZW50Q29sb3IuUHJpbWFyeSxcclxuICBjb21wYWN0OiBmYWxzZSxcclxuICBkcm9wZG93bkFwcGVhcmFuY2U6IERyb3Bkb3duUGFuZWxBcHBlYXJhbmNlLk91dGxpbmVkLFxyXG4gIGRyb3Bkb3duVmFyaWFudDogRHJvcGRvd25QYW5lbFZhcmlhbnQuUm91bmRlZCxcclxuICBtaW5NYXhTdHJhdGVneTogQXJkRGF0ZUlucHV0TWluTWF4U3RyYXRlZ3kuQWRqdXN0LFxyXG4gIC8vIGNhbGVuZGFyIGRlZmF1bHRzXHJcbiAgYWN0aXZlVmlldzogQXJkQ2FsZW5kYXJWaWV3LkRheXMsXHJcbiAgYWN0aXZlWWVhcjogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpLFxyXG4gIGFjdGl2ZU1vbnRoOiBuZXcgRGF0ZSgpLmdldE1vbnRoKCksXHJcbiAgZmlyc3RXZWVrZGF5OiAxLFxyXG4gIG11bHRpcGxlWWVhclBhZ2VDaGFuZ2VNb2RpZmllcjogNSxcclxuICBtaW46IG51bGwsXHJcbiAgbWF4OiBudWxsLFxyXG4gIGZpbHRlcjogbnVsbCxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBBUkRfREFURV9JTlBVVF9ERUZBVUxUUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBcmREYXRlSW5wdXREZWZhdWx0cz4oJ2FyZC1kYXRlLWlucHV0LWRlZmF1bHRzJywge1xyXG4gIGZhY3Rvcnk6ICgpID0+ICh7IC4uLl9kYXRlSW5wdXREZWZhdWx0cyB9KSxcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURhdGVJbnB1dERlZmF1bHRzKGNvbmZpZzogUGFydGlhbDxBcmREYXRlSW5wdXREZWZhdWx0cz4pOiBQcm92aWRlciB7XHJcbiAgcmV0dXJuIHsgcHJvdmlkZTogQVJEX0RBVEVfSU5QVVRfREVGQVVMVFMsIHVzZVZhbHVlOiB7IC4uLl9kYXRlSW5wdXREZWZhdWx0cywgLi4uY29uZmlnIH0gfTtcclxufVxyXG4iXX0=