@agorapulse/ui-components 0.0.3 → 1.0.0-SNAPSHOT-YOUTUBE.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/add-comment/add-comment.component.d.ts +21 -0
  2. package/add-comment/index.d.ts +5 -0
  3. package/add-comment/public_api.d.ts +1 -0
  4. package/autocomplete/autocomplete.component.d.ts +40 -0
  5. package/autocomplete/index.d.ts +5 -0
  6. package/autocomplete/public_api.d.ts +1 -0
  7. package/avatar/avatar.component.d.ts +48 -0
  8. package/avatar/index.d.ts +5 -0
  9. package/avatar/public_api.d.ts +1 -0
  10. package/badge/badge.component.d.ts +7 -0
  11. package/badge/index.d.ts +5 -0
  12. package/badge/public_api.d.ts +1 -0
  13. package/button/button.component.d.ts +49 -0
  14. package/button/index.d.ts +5 -0
  15. package/button/public_api.d.ts +1 -0
  16. package/checkbox/checkbox.component.d.ts +51 -0
  17. package/checkbox/index.d.ts +5 -0
  18. package/checkbox/public_api.d.ts +1 -0
  19. package/confirm-modal/confirm-modal.component.d.ts +20 -0
  20. package/confirm-modal/index.d.ts +5 -0
  21. package/confirm-modal/public_api.d.ts +2 -0
  22. package/counter/counter.component.d.ts +17 -0
  23. package/counter/index.d.ts +5 -0
  24. package/counter/public_api.d.ts +1 -0
  25. package/datepicker/datepicker.component.d.ts +84 -0
  26. package/datepicker/index.d.ts +5 -0
  27. package/datepicker/public_api.d.ts +1 -0
  28. package/{src/lib/directives → directives}/autosize-textarea.directive.d.ts +3 -0
  29. package/directives/base-button.directive.d.ts +13 -0
  30. package/directives/default-image.directive.d.ts +8 -0
  31. package/{src/lib/directives → directives}/ellipsis.directive.d.ts +3 -1
  32. package/directives/equal-validator.directive.d.ts +13 -0
  33. package/{src/lib/directives → directives}/frozen-gif.directive.d.ts +6 -3
  34. package/directives/index.d.ts +5 -0
  35. package/directives/multi-style-text.directive.d.ts +16 -0
  36. package/directives/public_api.d.ts +7 -0
  37. package/dot-stepper/dot-stepper.component.d.ts +20 -0
  38. package/dot-stepper/index.d.ts +5 -0
  39. package/dot-stepper/public_api.d.ts +1 -0
  40. package/esm2022/add-comment/add-comment.component.mjs +72 -0
  41. package/esm2022/add-comment/agorapulse-ui-components-add-comment.mjs +5 -0
  42. package/esm2022/add-comment/public_api.mjs +2 -0
  43. package/esm2022/agorapulse-ui-components.mjs +5 -0
  44. package/esm2022/autocomplete/agorapulse-ui-components-autocomplete.mjs +5 -0
  45. package/esm2022/autocomplete/autocomplete.component.mjs +127 -0
  46. package/esm2022/autocomplete/public_api.mjs +2 -0
  47. package/esm2022/avatar/agorapulse-ui-components-avatar.mjs +5 -0
  48. package/esm2022/avatar/avatar.component.mjs +228 -0
  49. package/esm2022/avatar/public_api.mjs +2 -0
  50. package/esm2022/badge/agorapulse-ui-components-badge.mjs +5 -0
  51. package/esm2022/badge/badge.component.mjs +17 -0
  52. package/esm2022/badge/public_api.mjs +2 -0
  53. package/esm2022/button/agorapulse-ui-components-button.mjs +5 -0
  54. package/esm2022/button/button.component.mjs +111 -0
  55. package/esm2022/button/public_api.mjs +2 -0
  56. package/esm2022/checkbox/agorapulse-ui-components-checkbox.mjs +5 -0
  57. package/esm2022/checkbox/checkbox.component.mjs +177 -0
  58. package/esm2022/checkbox/public_api.mjs +2 -0
  59. package/esm2022/confirm-modal/agorapulse-ui-components-confirm-modal.mjs +5 -0
  60. package/esm2022/confirm-modal/confirm-modal-texts.model.mjs +2 -0
  61. package/esm2022/confirm-modal/confirm-modal.component.mjs +61 -0
  62. package/esm2022/confirm-modal/public_api.mjs +3 -0
  63. package/esm2022/counter/agorapulse-ui-components-counter.mjs +5 -0
  64. package/esm2022/counter/counter.component.mjs +59 -0
  65. package/esm2022/counter/public_api.mjs +2 -0
  66. package/esm2022/datepicker/agorapulse-ui-components-datepicker.mjs +5 -0
  67. package/esm2022/datepicker/datepicker.component.mjs +270 -0
  68. package/esm2022/datepicker/public_api.mjs +2 -0
  69. package/esm2022/directives/agorapulse-ui-components-directives.mjs +5 -0
  70. package/esm2022/directives/autosize-textarea.directive.mjs +45 -0
  71. package/esm2022/directives/base-button.directive.mjs +47 -0
  72. package/esm2022/directives/default-image.directive.mjs +37 -0
  73. package/esm2022/directives/ellipsis.directive.mjs +90 -0
  74. package/esm2022/directives/equal-validator.directive.mjs +73 -0
  75. package/esm2022/directives/frozen-gif.directive.mjs +125 -0
  76. package/esm2022/directives/multi-style-text.directive.mjs +61 -0
  77. package/esm2022/directives/public_api.mjs +8 -0
  78. package/esm2022/dot-stepper/agorapulse-ui-components-dot-stepper.mjs +5 -0
  79. package/esm2022/dot-stepper/dot-stepper.component.mjs +46 -0
  80. package/esm2022/dot-stepper/public_api.mjs +2 -0
  81. package/esm2022/form-field/agorapulse-ui-components-form-field.mjs +5 -0
  82. package/esm2022/form-field/form-field.component.mjs +11 -0
  83. package/esm2022/form-field/public_api.mjs +2 -0
  84. package/esm2022/form-message/agorapulse-ui-components-form-message.mjs +5 -0
  85. package/esm2022/form-message/form-message.component.mjs +34 -0
  86. package/esm2022/form-message/public_api.mjs +2 -0
  87. package/esm2022/icon-button/agorapulse-ui-components-icon-button.mjs +5 -0
  88. package/esm2022/icon-button/icon-button.component.mjs +124 -0
  89. package/esm2022/icon-button/public_api.mjs +2 -0
  90. package/esm2022/index.mjs +48 -0
  91. package/esm2022/infobox/agorapulse-ui-components-infobox.mjs +5 -0
  92. package/esm2022/infobox/infobox.component.mjs +78 -0
  93. package/esm2022/infobox/public_api.mjs +2 -0
  94. package/esm2022/input/agorapulse-ui-components-input.mjs +5 -0
  95. package/esm2022/input/input.directive.mjs +19 -0
  96. package/esm2022/input/public_api.mjs +2 -0
  97. package/esm2022/input-group/agorapulse-ui-components-input-group.mjs +5 -0
  98. package/esm2022/input-group/input-group.component.mjs +14 -0
  99. package/esm2022/input-group/input-prefix/input-prefix.component.mjs +11 -0
  100. package/esm2022/input-group/public_api.mjs +3 -0
  101. package/esm2022/input-search/agorapulse-ui-components-input-search.mjs +5 -0
  102. package/esm2022/input-search/input-search.component.mjs +77 -0
  103. package/esm2022/input-search/public_api.mjs +2 -0
  104. package/esm2022/labels/agorapulse-ui-components-labels.mjs +5 -0
  105. package/esm2022/labels/label-list.component.mjs +108 -0
  106. package/esm2022/labels/label.component.mjs +56 -0
  107. package/esm2022/labels/public_api.mjs +3 -0
  108. package/esm2022/labels-selector/agorapulse-ui-components-labels-selector.mjs +5 -0
  109. package/esm2022/labels-selector/labels-selector.component.mjs +122 -0
  110. package/esm2022/labels-selector/public_api.mjs +2 -0
  111. package/esm2022/legacy/input/agorapulse-ui-components-legacy-input.mjs +5 -0
  112. package/esm2022/legacy/input/input.component.mjs +189 -0
  113. package/esm2022/legacy/input/public_api.mjs +2 -0
  114. package/esm2022/legacy/select/agorapulse-ui-components-legacy-select.mjs +5 -0
  115. package/esm2022/legacy/select/public_api.mjs +2 -0
  116. package/esm2022/legacy/select/select.component.mjs +451 -0
  117. package/esm2022/legacy/textarea/agorapulse-ui-components-legacy-textarea.mjs +5 -0
  118. package/esm2022/legacy/textarea/public_api.mjs +2 -0
  119. package/esm2022/legacy/textarea/textarea.component.mjs +154 -0
  120. package/esm2022/media-display-overlay/agorapulse-ui-components-media-display-overlay.mjs +5 -0
  121. package/esm2022/media-display-overlay/media-display-overlay-dialog.component.mjs +122 -0
  122. package/esm2022/media-display-overlay/public_api.mjs +2 -0
  123. package/esm2022/modal/agorapulse-ui-components-modal.mjs +5 -0
  124. package/esm2022/modal/modal.component.mjs +116 -0
  125. package/esm2022/modal/public_api.mjs +2 -0
  126. package/esm2022/neo-datepicker/agorapulse-ui-components-neo-datepicker.mjs +5 -0
  127. package/esm2022/neo-datepicker/day-detail.model.mjs +2 -0
  128. package/esm2022/neo-datepicker/day-disabled.pipe.mjs +21 -0
  129. package/esm2022/neo-datepicker/neo-datepicker.component.mjs +241 -0
  130. package/esm2022/neo-datepicker/public_api.mjs +4 -0
  131. package/esm2022/notification/agorapulse-ui-components-notification.mjs +5 -0
  132. package/esm2022/notification/notification.component.mjs +15 -0
  133. package/esm2022/notification/public_api.mjs +2 -0
  134. package/esm2022/paginator/agorapulse-ui-components-paginator.mjs +5 -0
  135. package/esm2022/paginator/paginator-button/paginator-button.component.mjs +51 -0
  136. package/esm2022/paginator/paginator.component.mjs +116 -0
  137. package/esm2022/paginator/public_api.mjs +3 -0
  138. package/esm2022/password-input/agorapulse-ui-components-password-input.mjs +5 -0
  139. package/esm2022/password-input/password-input.component.mjs +78 -0
  140. package/esm2022/password-input/public_api.mjs +2 -0
  141. package/esm2022/phone-number-input/agorapulse-ui-components-phone-number-input.mjs +5 -0
  142. package/esm2022/phone-number-input/phone-number-input.component.mjs +181 -0
  143. package/esm2022/phone-number-input/public_api.mjs +2 -0
  144. package/esm2022/popmenu/agorapulse-ui-components-popmenu.mjs +5 -0
  145. package/esm2022/popmenu/options.mjs +17 -0
  146. package/esm2022/popmenu/popmenu-options.interface.mjs +2 -0
  147. package/esm2022/popmenu/popmenu-options.service.mjs +7 -0
  148. package/esm2022/popmenu/popmenu.component.mjs +383 -0
  149. package/esm2022/popmenu/popmenu.directive.mjs +292 -0
  150. package/esm2022/popmenu/popmenu.module.mjs +29 -0
  151. package/esm2022/popmenu/public_api.mjs +5 -0
  152. package/esm2022/radio/agorapulse-ui-components-radio.mjs +5 -0
  153. package/esm2022/radio/public_api.mjs +2 -0
  154. package/esm2022/radio/radio.component.mjs +320 -0
  155. package/esm2022/range-slider/agorapulse-ui-components-range-slider.mjs +5 -0
  156. package/esm2022/range-slider/public_api.mjs +2 -0
  157. package/esm2022/range-slider/range-slider.component.mjs +155 -0
  158. package/esm2022/select/agorapulse-ui-components-select.mjs +5 -0
  159. package/esm2022/select/ap-select.module.mjs +78 -0
  160. package/esm2022/select/dropdown-group-item/dropdown-group-item.component.mjs +51 -0
  161. package/esm2022/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.mjs +75 -0
  162. package/esm2022/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.mjs +79 -0
  163. package/esm2022/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.mjs +59 -0
  164. package/esm2022/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.mjs +60 -0
  165. package/esm2022/select/dropdown-search-form/dropdown-search-form.component.mjs +104 -0
  166. package/esm2022/select/public_api.mjs +13 -0
  167. package/esm2022/select/select-base.directive.mjs +69 -0
  168. package/esm2022/select/select-label-multiple/select-label-multiple.component.mjs +95 -0
  169. package/esm2022/select/select-label-single/select-label-single.component.mjs +33 -0
  170. package/esm2022/select/select-multiple.directive.mjs +35 -0
  171. package/esm2022/select/select-single.directive.mjs +34 -0
  172. package/esm2022/slide-toggle/agorapulse-ui-components-slide-toggle.mjs +5 -0
  173. package/esm2022/slide-toggle/public_api.mjs +2 -0
  174. package/esm2022/slide-toggle/slide-toggle.component.mjs +66 -0
  175. package/esm2022/snackbars-thread/agorapulse-ui-components-snackbars-thread.mjs +5 -0
  176. package/esm2022/snackbars-thread/component/snackbars-thread.component.mjs +92 -0
  177. package/esm2022/snackbars-thread/model/snackbars-thread.model.mjs +44 -0
  178. package/esm2022/snackbars-thread/public_api.mjs +4 -0
  179. package/esm2022/snackbars-thread/service/snackbars-thread.service.mjs +47 -0
  180. package/esm2022/snackbars-thread/utils/const/snackbars-thread.const.mjs +13 -0
  181. package/esm2022/social-button/agorapulse-ui-components-social-button.mjs +5 -0
  182. package/esm2022/social-button/public_api.mjs +2 -0
  183. package/esm2022/social-button/social-button.component.mjs +152 -0
  184. package/esm2022/split-button/agorapulse-ui-components-split-button.mjs +5 -0
  185. package/esm2022/split-button/public_api.mjs +2 -0
  186. package/esm2022/split-button/split-button.component.mjs +128 -0
  187. package/esm2022/src/lib/agorapulse-ui-components.module.mjs +200 -0
  188. package/esm2022/status/agorapulse-ui-components-status.mjs +5 -0
  189. package/esm2022/status/public_api.mjs +2 -0
  190. package/esm2022/status/status.component.mjs +21 -0
  191. package/esm2022/status-card/agorapulse-ui-components-status-card.mjs +5 -0
  192. package/esm2022/status-card/public_api.mjs +2 -0
  193. package/esm2022/status-card/status-card.component.mjs +24 -0
  194. package/esm2022/stepper/agorapulse-ui-components-stepper.mjs +5 -0
  195. package/esm2022/stepper/public_api.mjs +3 -0
  196. package/esm2022/stepper/step.model.mjs +2 -0
  197. package/esm2022/stepper/stepper.component.mjs +38 -0
  198. package/esm2022/tag/agorapulse-ui-components-tag.mjs +5 -0
  199. package/esm2022/tag/public_api.mjs +2 -0
  200. package/esm2022/tag/tag.component.mjs +35 -0
  201. package/esm2022/text-measurement/agorapulse-ui-components-text-measurement.mjs +5 -0
  202. package/esm2022/text-measurement/public_api.mjs +2 -0
  203. package/esm2022/text-measurement/text-measurement.service.mjs +29 -0
  204. package/esm2022/textarea/agorapulse-ui-components-textarea.mjs +5 -0
  205. package/esm2022/textarea/public_api.mjs +2 -0
  206. package/esm2022/textarea/textarea.directive.mjs +37 -0
  207. package/esm2022/toggle/agorapulse-ui-components-toggle.mjs +5 -0
  208. package/esm2022/toggle/public_api.mjs +2 -0
  209. package/esm2022/toggle/toggle.component.mjs +208 -0
  210. package/esm2022/tooltip/agorapulse-ui-components-tooltip.mjs +5 -0
  211. package/esm2022/tooltip/public_api.mjs +2 -0
  212. package/esm2022/tooltip/tooltip.directive.mjs +401 -0
  213. package/esm2022/tooltip/tooltip.service.mjs +29 -0
  214. package/fesm2022/agorapulse-ui-components-add-comment.mjs +79 -0
  215. package/fesm2022/agorapulse-ui-components-add-comment.mjs.map +1 -0
  216. package/fesm2022/agorapulse-ui-components-autocomplete.mjs +134 -0
  217. package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -0
  218. package/fesm2022/agorapulse-ui-components-avatar.mjs +235 -0
  219. package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -0
  220. package/fesm2022/agorapulse-ui-components-badge.mjs +24 -0
  221. package/fesm2022/agorapulse-ui-components-badge.mjs.map +1 -0
  222. package/fesm2022/agorapulse-ui-components-button.mjs +118 -0
  223. package/fesm2022/agorapulse-ui-components-button.mjs.map +1 -0
  224. package/fesm2022/agorapulse-ui-components-checkbox.mjs +184 -0
  225. package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -0
  226. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs +68 -0
  227. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs.map +1 -0
  228. package/fesm2022/agorapulse-ui-components-counter.mjs +66 -0
  229. package/fesm2022/agorapulse-ui-components-counter.mjs.map +1 -0
  230. package/fesm2022/agorapulse-ui-components-datepicker.mjs +277 -0
  231. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -0
  232. package/fesm2022/agorapulse-ui-components-directives.mjs +473 -0
  233. package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -0
  234. package/fesm2022/agorapulse-ui-components-dot-stepper.mjs +53 -0
  235. package/fesm2022/agorapulse-ui-components-dot-stepper.mjs.map +1 -0
  236. package/fesm2022/agorapulse-ui-components-form-field.mjs +18 -0
  237. package/fesm2022/agorapulse-ui-components-form-field.mjs.map +1 -0
  238. package/fesm2022/agorapulse-ui-components-form-message.mjs +41 -0
  239. package/fesm2022/agorapulse-ui-components-form-message.mjs.map +1 -0
  240. package/fesm2022/agorapulse-ui-components-icon-button.mjs +131 -0
  241. package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -0
  242. package/fesm2022/agorapulse-ui-components-infobox.mjs +85 -0
  243. package/fesm2022/agorapulse-ui-components-infobox.mjs.map +1 -0
  244. package/fesm2022/agorapulse-ui-components-input-group.mjs +30 -0
  245. package/fesm2022/agorapulse-ui-components-input-group.mjs.map +1 -0
  246. package/fesm2022/agorapulse-ui-components-input-search.mjs +84 -0
  247. package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -0
  248. package/fesm2022/agorapulse-ui-components-input.mjs +26 -0
  249. package/fesm2022/agorapulse-ui-components-input.mjs.map +1 -0
  250. package/fesm2022/agorapulse-ui-components-labels-selector.mjs +129 -0
  251. package/fesm2022/agorapulse-ui-components-labels-selector.mjs.map +1 -0
  252. package/fesm2022/agorapulse-ui-components-labels.mjs +168 -0
  253. package/fesm2022/agorapulse-ui-components-labels.mjs.map +1 -0
  254. package/fesm2022/agorapulse-ui-components-legacy-input.mjs +196 -0
  255. package/fesm2022/agorapulse-ui-components-legacy-input.mjs.map +1 -0
  256. package/fesm2022/agorapulse-ui-components-legacy-select.mjs +458 -0
  257. package/fesm2022/agorapulse-ui-components-legacy-select.mjs.map +1 -0
  258. package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs +161 -0
  259. package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs.map +1 -0
  260. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs +129 -0
  261. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -0
  262. package/fesm2022/agorapulse-ui-components-modal.mjs +123 -0
  263. package/fesm2022/agorapulse-ui-components-modal.mjs.map +1 -0
  264. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +266 -0
  265. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -0
  266. package/fesm2022/agorapulse-ui-components-notification.mjs +22 -0
  267. package/fesm2022/agorapulse-ui-components-notification.mjs.map +1 -0
  268. package/fesm2022/agorapulse-ui-components-paginator.mjs +171 -0
  269. package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -0
  270. package/fesm2022/agorapulse-ui-components-password-input.mjs +85 -0
  271. package/fesm2022/agorapulse-ui-components-password-input.mjs.map +1 -0
  272. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs +188 -0
  273. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs.map +1 -0
  274. package/fesm2022/agorapulse-ui-components-popmenu.mjs +724 -0
  275. package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -0
  276. package/fesm2022/agorapulse-ui-components-radio.mjs +327 -0
  277. package/fesm2022/agorapulse-ui-components-radio.mjs.map +1 -0
  278. package/fesm2022/agorapulse-ui-components-range-slider.mjs +162 -0
  279. package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -0
  280. package/fesm2022/agorapulse-ui-components-select.mjs +717 -0
  281. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -0
  282. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs +73 -0
  283. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs.map +1 -0
  284. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs +199 -0
  285. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -0
  286. package/fesm2022/agorapulse-ui-components-social-button.mjs +158 -0
  287. package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -0
  288. package/fesm2022/agorapulse-ui-components-split-button.mjs +135 -0
  289. package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -0
  290. package/fesm2022/agorapulse-ui-components-status-card.mjs +31 -0
  291. package/fesm2022/agorapulse-ui-components-status-card.mjs.map +1 -0
  292. package/fesm2022/agorapulse-ui-components-status.mjs +28 -0
  293. package/fesm2022/agorapulse-ui-components-status.mjs.map +1 -0
  294. package/fesm2022/agorapulse-ui-components-stepper.mjs +45 -0
  295. package/fesm2022/agorapulse-ui-components-stepper.mjs.map +1 -0
  296. package/fesm2022/agorapulse-ui-components-tag.mjs +42 -0
  297. package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -0
  298. package/fesm2022/agorapulse-ui-components-text-measurement.mjs +36 -0
  299. package/fesm2022/agorapulse-ui-components-text-measurement.mjs.map +1 -0
  300. package/fesm2022/agorapulse-ui-components-textarea.mjs +44 -0
  301. package/fesm2022/agorapulse-ui-components-textarea.mjs.map +1 -0
  302. package/fesm2022/agorapulse-ui-components-toggle.mjs +215 -0
  303. package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -0
  304. package/fesm2022/agorapulse-ui-components-tooltip.mjs +434 -0
  305. package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -0
  306. package/fesm2022/agorapulse-ui-components.mjs +247 -0
  307. package/fesm2022/agorapulse-ui-components.mjs.map +1 -0
  308. package/form-field/form-field.component.d.ts +5 -0
  309. package/form-field/index.d.ts +5 -0
  310. package/form-field/public_api.d.ts +1 -0
  311. package/form-message/form-message.component.d.ts +12 -0
  312. package/form-message/index.d.ts +5 -0
  313. package/form-message/public_api.d.ts +1 -0
  314. package/icon-button/icon-button.component.d.ts +39 -0
  315. package/icon-button/index.d.ts +5 -0
  316. package/icon-button/public_api.d.ts +1 -0
  317. package/index.d.ts +41 -53
  318. package/infobox/index.d.ts +5 -0
  319. package/infobox/infobox.component.d.ts +32 -0
  320. package/infobox/public_api.d.ts +1 -0
  321. package/input/index.d.ts +5 -0
  322. package/input/input.directive.d.ts +7 -0
  323. package/input/public_api.d.ts +1 -0
  324. package/input-group/index.d.ts +5 -0
  325. package/input-group/input-group.component.d.ts +6 -0
  326. package/input-group/input-prefix/input-prefix.component.d.ts +5 -0
  327. package/input-group/public_api.d.ts +2 -0
  328. package/input-search/index.d.ts +5 -0
  329. package/input-search/input-search.component.d.ts +32 -0
  330. package/input-search/public_api.d.ts +1 -0
  331. package/labels/index.d.ts +5 -0
  332. package/labels/label-list.component.d.ts +34 -0
  333. package/labels/label.component.d.ts +23 -0
  334. package/labels/public_api.d.ts +2 -0
  335. package/labels-selector/index.d.ts +5 -0
  336. package/labels-selector/labels-selector.component.d.ts +42 -0
  337. package/labels-selector/public_api.d.ts +1 -0
  338. package/legacy/input/index.d.ts +5 -0
  339. package/legacy/input/input.component.d.ts +64 -0
  340. package/legacy/input/public_api.d.ts +1 -0
  341. package/legacy/select/index.d.ts +5 -0
  342. package/legacy/select/public_api.d.ts +1 -0
  343. package/legacy/select/select.component.d.ts +122 -0
  344. package/legacy/textarea/index.d.ts +5 -0
  345. package/legacy/textarea/public_api.d.ts +1 -0
  346. package/legacy/textarea/textarea.component.d.ts +53 -0
  347. package/media-display-overlay/index.d.ts +5 -0
  348. package/media-display-overlay/media-display-overlay-dialog.component.d.ts +42 -0
  349. package/media-display-overlay/public_api.d.ts +1 -0
  350. package/modal/index.d.ts +5 -0
  351. package/modal/modal.component.d.ts +54 -0
  352. package/modal/public_api.d.ts +1 -0
  353. package/neo-datepicker/day-detail.model.d.ts +9 -0
  354. package/neo-datepicker/day-disabled.pipe.d.ts +8 -0
  355. package/neo-datepicker/index.d.ts +5 -0
  356. package/neo-datepicker/neo-datepicker.component.d.ts +61 -0
  357. package/neo-datepicker/public_api.d.ts +3 -0
  358. package/notification/index.d.ts +5 -0
  359. package/notification/notification.component.d.ts +6 -0
  360. package/notification/public_api.d.ts +1 -0
  361. package/package.json +303 -20
  362. package/paginator/index.d.ts +5 -0
  363. package/paginator/paginator-button/paginator-button.component.d.ts +17 -0
  364. package/paginator/paginator.component.d.ts +38 -0
  365. package/paginator/public_api.d.ts +2 -0
  366. package/password-input/index.d.ts +5 -0
  367. package/password-input/password-input.component.d.ts +33 -0
  368. package/password-input/public_api.d.ts +1 -0
  369. package/phone-number-input/index.d.ts +5 -0
  370. package/phone-number-input/phone-number-input.component.d.ts +48 -0
  371. package/phone-number-input/public_api.d.ts +1 -0
  372. package/popmenu/index.d.ts +5 -0
  373. package/{src/lib/popmenu → popmenu}/options.d.ts +1 -0
  374. package/popmenu/popmenu-options.interface.d.ts +48 -0
  375. package/{src/lib/popmenu → popmenu}/popmenu.component.d.ts +17 -9
  376. package/popmenu/popmenu.directive.d.ts +84 -0
  377. package/popmenu/popmenu.module.d.ts +11 -0
  378. package/popmenu/public_api.d.ts +4 -0
  379. package/radio/index.d.ts +5 -0
  380. package/radio/public_api.d.ts +1 -0
  381. package/radio/radio.component.d.ts +77 -0
  382. package/range-slider/index.d.ts +5 -0
  383. package/range-slider/public_api.d.ts +1 -0
  384. package/range-slider/range-slider.component.d.ts +35 -0
  385. package/select/ap-select.module.d.ts +17 -0
  386. package/select/dropdown-group-item/dropdown-group-item.component.d.ts +16 -0
  387. package/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.d.ts +25 -0
  388. package/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.d.ts +26 -0
  389. package/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.d.ts +20 -0
  390. package/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.d.ts +20 -0
  391. package/select/dropdown-search-form/dropdown-search-form.component.d.ts +32 -0
  392. package/select/index.d.ts +5 -0
  393. package/select/public_api.d.ts +12 -0
  394. package/select/select-base.directive.d.ts +18 -0
  395. package/select/select-label-multiple/select-label-multiple.component.d.ts +27 -0
  396. package/select/select-label-single/select-label-single.component.d.ts +12 -0
  397. package/select/select-multiple.directive.d.ts +10 -0
  398. package/select/select-single.directive.d.ts +10 -0
  399. package/slide-toggle/index.d.ts +5 -0
  400. package/slide-toggle/public_api.d.ts +1 -0
  401. package/{src/lib/slide-toggle → slide-toggle}/slide-toggle.component.d.ts +4 -0
  402. package/snackbars-thread/component/snackbars-thread.component.d.ts +24 -0
  403. package/snackbars-thread/index.d.ts +5 -0
  404. package/{src/lib/snackbars-thread → snackbars-thread}/model/snackbars-thread.model.d.ts +10 -6
  405. package/snackbars-thread/public_api.d.ts +3 -0
  406. package/snackbars-thread/service/snackbars-thread.service.d.ts +15 -0
  407. package/{src/lib/snackbars-thread → snackbars-thread}/utils/const/snackbars-thread.const.d.ts +2 -4
  408. package/social-button/index.d.ts +5 -0
  409. package/social-button/public_api.d.ts +1 -0
  410. package/social-button/social-button.component.d.ts +32 -0
  411. package/split-button/index.d.ts +5 -0
  412. package/split-button/public_api.d.ts +1 -0
  413. package/split-button/split-button.component.d.ts +43 -0
  414. package/src/lib/agorapulse-ui-components.module.d.ts +27 -0
  415. package/status/index.d.ts +5 -0
  416. package/status/public_api.d.ts +1 -0
  417. package/status/status.component.d.ts +9 -0
  418. package/status-card/index.d.ts +5 -0
  419. package/status-card/public_api.d.ts +1 -0
  420. package/status-card/status-card.component.d.ts +13 -0
  421. package/stepper/index.d.ts +5 -0
  422. package/stepper/public_api.d.ts +2 -0
  423. package/{src/lib/stepper → stepper}/step.model.d.ts +1 -0
  424. package/stepper/stepper.component.d.ts +16 -0
  425. package/tag/index.d.ts +5 -0
  426. package/tag/public_api.d.ts +1 -0
  427. package/tag/tag.component.d.ts +18 -0
  428. package/text-measurement/index.d.ts +5 -0
  429. package/text-measurement/public_api.d.ts +1 -0
  430. package/text-measurement/text-measurement.service.d.ts +8 -0
  431. package/textarea/index.d.ts +5 -0
  432. package/textarea/public_api.d.ts +1 -0
  433. package/textarea/textarea.directive.d.ts +11 -0
  434. package/toggle/index.d.ts +5 -0
  435. package/toggle/public_api.d.ts +1 -0
  436. package/toggle/toggle.component.d.ts +52 -0
  437. package/tooltip/index.d.ts +5 -0
  438. package/tooltip/public_api.d.ts +1 -0
  439. package/tooltip/tooltip.directive.d.ts +59 -0
  440. package/tooltip/tooltip.service.d.ts +11 -0
  441. package/agorapulse-ui-components-0.0.3.tgz +0 -0
  442. package/agorapulse-ui-components.d.ts +0 -9
  443. package/agorapulse-ui-components.metadata.json +0 -1
  444. package/bundles/agorapulse-ui-components.umd.js +0 -4448
  445. package/bundles/agorapulse-ui-components.umd.js.map +0 -1
  446. package/esm2015/agorapulse-ui-components.js +0 -10
  447. package/esm2015/index.js +0 -57
  448. package/esm2015/src/lib/add-comment/add-comment.component.js +0 -54
  449. package/esm2015/src/lib/agorapulse-ui-components.module.js +0 -279
  450. package/esm2015/src/lib/avatar/avatar.component.js +0 -82
  451. package/esm2015/src/lib/confirm-modal/confirm-modal-texts.model.js +0 -2
  452. package/esm2015/src/lib/confirm-modal/confirm-modal.component.js +0 -59
  453. package/esm2015/src/lib/datepicker/datepicker.component.js +0 -213
  454. package/esm2015/src/lib/directives/autosize-textarea.directive.js +0 -43
  455. package/esm2015/src/lib/directives/default-image.directive.js +0 -25
  456. package/esm2015/src/lib/directives/ellipsis.directive.js +0 -82
  457. package/esm2015/src/lib/directives/equal-validator.directive.js +0 -53
  458. package/esm2015/src/lib/directives/frozen-gif.directive.js +0 -113
  459. package/esm2015/src/lib/directives/multi-style-text.directive.js +0 -103
  460. package/esm2015/src/lib/directives/truncate-tooltip.directive.js +0 -36
  461. package/esm2015/src/lib/dots-stepper/dots-stepper.component.js +0 -41
  462. package/esm2015/src/lib/edit-tag-modal/edit-tags-modal.component.js +0 -129
  463. package/esm2015/src/lib/edit-tag-modal/model/edit-tags-modal.model.js +0 -2
  464. package/esm2015/src/lib/feature-onboarding/feature-onboarding.component.js +0 -35
  465. package/esm2015/src/lib/image-carousel/image-carousel.component.js +0 -143
  466. package/esm2015/src/lib/lead-modal/lead-info.model.js +0 -2
  467. package/esm2015/src/lib/lead-modal/lead-modal.component.js +0 -47
  468. package/esm2015/src/lib/media-display-overlay/media-display-overlay-dialog.component.js +0 -87
  469. package/esm2015/src/lib/modal/modal.component.js +0 -88
  470. package/esm2015/src/lib/notification/notification.component.js +0 -18
  471. package/esm2015/src/lib/overlay/overlay-dialog-service.component.js +0 -62
  472. package/esm2015/src/lib/overlay/overlay-dialog.component.js +0 -33
  473. package/esm2015/src/lib/overlay-in-div/overlay-in-div.component.js +0 -23
  474. package/esm2015/src/lib/paginator/paginator-button/paginator-button.component.js +0 -22
  475. package/esm2015/src/lib/paginator/paginator.component.js +0 -47
  476. package/esm2015/src/lib/password-input/password-input.component.js +0 -65
  477. package/esm2015/src/lib/password-strength-bar/password-strength-bar.component.js +0 -82
  478. package/esm2015/src/lib/password-strength-display-bar/password-strength-display-bar.component.js +0 -41
  479. package/esm2015/src/lib/phone-number-input/phone-number-input.component.js +0 -123
  480. package/esm2015/src/lib/places/place-list.component.js +0 -12
  481. package/esm2015/src/lib/places/place.component.js +0 -15
  482. package/esm2015/src/lib/popmenu/options.js +0 -16
  483. package/esm2015/src/lib/popmenu/popmenu-options.interface.js +0 -2
  484. package/esm2015/src/lib/popmenu/popmenu-options.service.js +0 -7
  485. package/esm2015/src/lib/popmenu/popmenu.component.js +0 -322
  486. package/esm2015/src/lib/popmenu/popmenu.directive.js +0 -215
  487. package/esm2015/src/lib/popmenu/popmenu.module.js +0 -38
  488. package/esm2015/src/lib/slide-toggle/slide-toggle.component.js +0 -59
  489. package/esm2015/src/lib/snackbar/snackbar.component.js +0 -22
  490. package/esm2015/src/lib/snackbars-thread/component/snackbars-thread.component.js +0 -50
  491. package/esm2015/src/lib/snackbars-thread/model/snackbars-thread.model.js +0 -41
  492. package/esm2015/src/lib/snackbars-thread/service/snackbars-thread.service.js +0 -44
  493. package/esm2015/src/lib/snackbars-thread/utils/const/snackbars-thread.const.js +0 -13
  494. package/esm2015/src/lib/splashscreen/splashscreen.component.js +0 -37
  495. package/esm2015/src/lib/star-rating/star-rating.component.js +0 -38
  496. package/esm2015/src/lib/stepper/step.model.js +0 -2
  497. package/esm2015/src/lib/stepper/stepper.component.js +0 -37
  498. package/esm2015/src/lib/tags/tag-list.component.js +0 -12
  499. package/esm2015/src/lib/tags/tag.component.js +0 -20
  500. package/esm2015/src/lib/tags-selector/tags-selector.component.js +0 -73
  501. package/esm2015/src/lib/timepicker/timepicker.component.js +0 -375
  502. package/esm2015/src/lib/tooltip-neo/tooltip-neo.component.js +0 -46
  503. package/esm2015/src/lib/tooltip-neo/tooltip-neo.const.js +0 -67
  504. package/esm2015/src/lib/tooltip-neo/tooltip-neo.directive.js +0 -107
  505. package/esm2015/src/lib/tooltip-neo/tooltip-neo.model.js +0 -2
  506. package/esm2015/src/lib/tooltip-neo/tooltip-neo.service.js +0 -15
  507. package/esm2015/src/lib/try-popup/try-popup-texts.model.js +0 -2
  508. package/esm2015/src/lib/try-popup/try-popup.component.js +0 -33
  509. package/fesm2015/agorapulse-ui-components.js +0 -3805
  510. package/fesm2015/agorapulse-ui-components.js.map +0 -1
  511. package/src/lib/add-comment/add-comment.component.d.ts +0 -17
  512. package/src/lib/avatar/avatar.component.d.ts +0 -23
  513. package/src/lib/confirm-modal/confirm-modal.component.d.ts +0 -17
  514. package/src/lib/datepicker/datepicker.component.d.ts +0 -69
  515. package/src/lib/directives/default-image.directive.d.ts +0 -5
  516. package/src/lib/directives/equal-validator.directive.d.ts +0 -10
  517. package/src/lib/directives/multi-style-text.directive.d.ts +0 -15
  518. package/src/lib/directives/truncate-tooltip.directive.d.ts +0 -13
  519. package/src/lib/dots-stepper/dots-stepper.component.d.ts +0 -13
  520. package/src/lib/edit-tag-modal/edit-tags-modal.component.d.ts +0 -29
  521. package/src/lib/edit-tag-modal/model/edit-tags-modal.model.d.ts +0 -21
  522. package/src/lib/feature-onboarding/feature-onboarding.component.d.ts +0 -15
  523. package/src/lib/image-carousel/image-carousel.component.d.ts +0 -45
  524. package/src/lib/lead-modal/lead-info.model.d.ts +0 -7
  525. package/src/lib/lead-modal/lead-modal.component.d.ts +0 -28
  526. package/src/lib/media-display-overlay/media-display-overlay-dialog.component.d.ts +0 -28
  527. package/src/lib/modal/modal.component.d.ts +0 -47
  528. package/src/lib/notification/notification.component.d.ts +0 -3
  529. package/src/lib/overlay/overlay-dialog-service.component.d.ts +0 -20
  530. package/src/lib/overlay/overlay-dialog.component.d.ts +0 -17
  531. package/src/lib/overlay-in-div/overlay-in-div.component.d.ts +0 -8
  532. package/src/lib/paginator/paginator-button/paginator-button.component.d.ts +0 -6
  533. package/src/lib/paginator/paginator.component.d.ts +0 -14
  534. package/src/lib/password-input/password-input.component.d.ts +0 -28
  535. package/src/lib/password-strength-bar/password-strength-bar.component.d.ts +0 -21
  536. package/src/lib/password-strength-display-bar/password-strength-display-bar.component.d.ts +0 -14
  537. package/src/lib/phone-number-input/phone-number-input.component.d.ts +0 -42
  538. package/src/lib/places/place-list.component.d.ts +0 -2
  539. package/src/lib/places/place.component.d.ts +0 -3
  540. package/src/lib/popmenu/popmenu-options.interface.d.ts +0 -24
  541. package/src/lib/popmenu/popmenu.directive.d.ts +0 -69
  542. package/src/lib/popmenu/popmenu.module.d.ts +0 -5
  543. package/src/lib/snackbar/snackbar.component.d.ts +0 -6
  544. package/src/lib/snackbars-thread/component/snackbars-thread.component.d.ts +0 -18
  545. package/src/lib/snackbars-thread/service/snackbars-thread.service.d.ts +0 -12
  546. package/src/lib/splashscreen/splashscreen.component.d.ts +0 -15
  547. package/src/lib/star-rating/star-rating.component.d.ts +0 -10
  548. package/src/lib/stepper/stepper.component.d.ts +0 -14
  549. package/src/lib/tags/tag-list.component.d.ts +0 -2
  550. package/src/lib/tags/tag.component.d.ts +0 -4
  551. package/src/lib/tags-selector/tags-selector.component.d.ts +0 -29
  552. package/src/lib/timepicker/timepicker.component.d.ts +0 -68
  553. package/src/lib/tooltip-neo/tooltip-neo.component.d.ts +0 -12
  554. package/src/lib/tooltip-neo/tooltip-neo.const.d.ts +0 -4
  555. package/src/lib/tooltip-neo/tooltip-neo.directive.d.ts +0 -29
  556. package/src/lib/tooltip-neo/tooltip-neo.model.d.ts +0 -12
  557. package/src/lib/tooltip-neo/tooltip-neo.service.d.ts +0 -4
  558. package/src/lib/try-popup/try-popup-texts.model.d.ts +0 -4
  559. package/src/lib/try-popup/try-popup.component.d.ts +0 -12
  560. /package/{src/lib/confirm-modal → confirm-modal}/confirm-modal-texts.model.d.ts +0 -0
  561. /package/{src/lib/popmenu → popmenu}/popmenu-options.service.d.ts +0 -0
@@ -0,0 +1,320 @@
1
+ import { SymbolComponent } from '@agorapulse/ui-symbol';
2
+ import { booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, inject, Injectable, Injector, Input, NgZone, Output, ViewChild, ViewEncapsulation, } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
4
+ import { filter, fromEvent, Subject, takeUntil } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ export const RADIO_VALUE_ACCESSOR = {
7
+ provide: NG_VALUE_ACCESSOR,
8
+ useExisting: forwardRef(() => RadioComponent),
9
+ multi: true,
10
+ };
11
+ export class RadioControlRegistry {
12
+ accessors = [];
13
+ add(control, accessor) {
14
+ this.accessors.push([control, accessor]);
15
+ }
16
+ remove(accessor) {
17
+ this.accessors = this.accessors.filter(([, radioComponent]) => {
18
+ return radioComponent !== accessor;
19
+ });
20
+ }
21
+ select(accessor) {
22
+ this.accessors.forEach(([ngControl, radioComponent]) => {
23
+ if (this.isSameGroup(ngControl, radioComponent, accessor) && radioComponent !== accessor) {
24
+ radioComponent.writeValue(accessor.value);
25
+ }
26
+ });
27
+ }
28
+ getIndex(accessor) {
29
+ return this.accessors.findIndex(([, radioComponent]) => {
30
+ return radioComponent === accessor;
31
+ });
32
+ }
33
+ getNextRadio(accessor) {
34
+ const index = this.getIndex(accessor);
35
+ const nextIndex = index + 1;
36
+ if (nextIndex >= this.accessors.length) {
37
+ return this.accessors[0][1];
38
+ }
39
+ const nextRadio = this.accessors[nextIndex];
40
+ return nextRadio ? nextRadio[1] : null;
41
+ }
42
+ getPreviousRadio(accessor) {
43
+ const index = this.getIndex(accessor);
44
+ if (index === 0) {
45
+ return this.accessors[this.accessors.length - 1][1];
46
+ }
47
+ const previousIndex = index - 1;
48
+ const previousRadio = this.accessors[previousIndex];
49
+ return previousRadio ? previousRadio[1] : null;
50
+ }
51
+ blurAllGroup(accessor) {
52
+ this.accessors.forEach(([, radioComponent]) => {
53
+ if (this.isSameGroup(accessor.control, radioComponent, accessor)) {
54
+ radioComponent.inputElement.nativeElement.blur();
55
+ }
56
+ });
57
+ }
58
+ setNegativeTabIndexToAllExcept(accessor) {
59
+ this.accessors.forEach(([, radioComponent]) => {
60
+ if (this.isSameGroup(accessor.control, radioComponent, accessor)) {
61
+ if (accessor.radioId !== radioComponent.radioId) {
62
+ radioComponent.inputElement.nativeElement.tabIndex = -1;
63
+ }
64
+ else {
65
+ radioComponent.inputElement.nativeElement.tabIndex = 0;
66
+ }
67
+ }
68
+ });
69
+ }
70
+ focusPrevious(accessor) {
71
+ const previousRadio = this.getPreviousRadio(accessor);
72
+ if (previousRadio) {
73
+ previousRadio.inputElement.nativeElement.focus();
74
+ }
75
+ }
76
+ focusNext(accessor) {
77
+ const nextRadio = this.getNextRadio(accessor);
78
+ if (nextRadio) {
79
+ nextRadio.inputElement.nativeElement.focus();
80
+ }
81
+ }
82
+ getFirstCheckedRadio() {
83
+ const checkedRadio = this.accessors.find(([, radioComponent]) => {
84
+ return radioComponent.checked;
85
+ });
86
+ return checkedRadio ? checkedRadio[1] : null;
87
+ }
88
+ isSameGroup(ngControl, radioComponent, accessor) {
89
+ if (!ngControl.control) {
90
+ return false;
91
+ }
92
+ return radioComponent.name === accessor.name;
93
+ }
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
95
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioControlRegistry, providedIn: 'root' });
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioControlRegistry, decorators: [{
98
+ type: Injectable,
99
+ args: [{
100
+ providedIn: 'root',
101
+ }]
102
+ }] });
103
+ export class RadioComponent {
104
+ elementRef;
105
+ injector = inject(Injector);
106
+ changeDetectorRef = inject(ChangeDetectorRef);
107
+ radioControlRegistry = inject(RadioControlRegistry);
108
+ ngZone = inject(NgZone);
109
+ inputElement;
110
+ labelElement;
111
+ ariaLabel = '';
112
+ ariaLabelledby = null;
113
+ ariaDescribedby = '';
114
+ set disabled(disabled) {
115
+ this._disabled = disabled;
116
+ }
117
+ get disabled() {
118
+ return this._disabled;
119
+ }
120
+ labelPosition = 'right';
121
+ radioId = '';
122
+ formControlName;
123
+ value;
124
+ required = false;
125
+ name = '';
126
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix
127
+ onClick = new EventEmitter();
128
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix
129
+ onFocus = new EventEmitter();
130
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix
131
+ onBlur = new EventEmitter();
132
+ inputId = '';
133
+ _disabled = false;
134
+ hasLabel = false;
135
+ hostDataTest;
136
+ control;
137
+ checked = false;
138
+ focused = false;
139
+ radioIndex = 0;
140
+ destroy$ = new Subject();
141
+ onModelChange = () => {
142
+ // ignore
143
+ };
144
+ onModelTouched = () => {
145
+ // ignore
146
+ };
147
+ constructor(elementRef) {
148
+ this.elementRef = elementRef;
149
+ this.hostDataTest = elementRef.nativeElement.getAttribute('data-test');
150
+ this.ngZone.runOutsideAngular(() => {
151
+ fromEvent(window, 'keydown')
152
+ .pipe(filter((event) => 'key' in event), takeUntil(this.destroy$))
153
+ .subscribe((event) => {
154
+ // Handle keydown event
155
+ switch (event.key) {
156
+ case 'ArrowDown':
157
+ case 'ArrowRight':
158
+ this.ngZone.run(() => {
159
+ if (this.focused) {
160
+ event.stopImmediatePropagation();
161
+ this.radioControlRegistry.blurAllGroup(this);
162
+ this.radioControlRegistry.focusNext(this);
163
+ }
164
+ });
165
+ break;
166
+ case 'ArrowUp':
167
+ case 'ArrowLeft':
168
+ this.ngZone.run(() => {
169
+ if (this.focused) {
170
+ event.stopImmediatePropagation();
171
+ this.radioControlRegistry.blurAllGroup(this);
172
+ this.radioControlRegistry.focusPrevious(this);
173
+ }
174
+ });
175
+ break;
176
+ default:
177
+ return;
178
+ }
179
+ });
180
+ });
181
+ }
182
+ ngOnChanges() {
183
+ if (this.labelElement) {
184
+ this.hasLabel = !!this.labelElement.nativeElement.textContent?.trim();
185
+ }
186
+ }
187
+ ngOnInit() {
188
+ this.control = this.injector.get(NgControl);
189
+ this.checkName();
190
+ this.radioControlRegistry.add(this.control, this);
191
+ this.radioIndex = this.radioControlRegistry.getIndex(this);
192
+ this.inputId = `${this.radioId}-${this.radioIndex}`;
193
+ }
194
+ ngAfterContentInit() {
195
+ if (this.labelElement) {
196
+ this.hasLabel = !!this.labelElement.nativeElement.textContent?.trim();
197
+ }
198
+ }
199
+ ngOnDestroy() {
200
+ this.radioControlRegistry.remove(this);
201
+ this.destroy$.next();
202
+ this.destroy$.complete();
203
+ }
204
+ handleClick(event, radioButton) {
205
+ event.preventDefault();
206
+ if (this.disabled) {
207
+ return;
208
+ }
209
+ this.select(event);
210
+ radioButton.focus();
211
+ }
212
+ select(event) {
213
+ if (!this.disabled && !this.checked) {
214
+ this.inputElement.nativeElement.checked = true;
215
+ this.checked = true;
216
+ this.onModelChange(this.value);
217
+ this.radioControlRegistry.select(this);
218
+ this.onClick.emit({ originalEvent: event, value: this.value });
219
+ }
220
+ }
221
+ writeValue(value) {
222
+ this.checked = value == this.value;
223
+ if (this.inputElement?.nativeElement) {
224
+ this.inputElement.nativeElement.checked = this.checked;
225
+ }
226
+ this.changeDetectorRef.markForCheck();
227
+ }
228
+ registerOnChange(fn) {
229
+ this.onModelChange = fn;
230
+ }
231
+ registerOnTouched(fn) {
232
+ this.onModelTouched = fn;
233
+ }
234
+ onInputFocus(event) {
235
+ this.focused = true;
236
+ if (!this.disabled && !this.checked) {
237
+ this.radioControlRegistry.setNegativeTabIndexToAllExcept(this);
238
+ this.inputElement.nativeElement.checked = true;
239
+ this.checked = true;
240
+ this.onModelChange(this.value);
241
+ this.onFocus.emit(event);
242
+ }
243
+ }
244
+ onInputBlur(event) {
245
+ this.focused = false;
246
+ this.onModelTouched();
247
+ this.onBlur.emit(event);
248
+ }
249
+ onChange(event) {
250
+ this.select(event);
251
+ }
252
+ checkName() {
253
+ if (this.name && this.formControlName && this.name !== this.formControlName) {
254
+ this.throwNameError();
255
+ }
256
+ if (!this.name && this.formControlName) {
257
+ this.name = this.formControlName;
258
+ }
259
+ }
260
+ throwNameError() {
261
+ throw new Error(`
262
+ If you define both a name and a formControlName attribute on your radio button, their values
263
+ must match. Ex: <p-radioButton formControlName="food" name="food"></p-radioButton>
264
+ `);
265
+ }
266
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
267
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.3", type: RadioComponent, isStandalone: true, selector: "ap-radio", inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], ariaDescribedby: ["aria-describedby", "ariaDescribedby"], disabled: ["disabled", "disabled", booleanAttribute], labelPosition: "labelPosition", radioId: "radioId", formControlName: "formControlName", value: "value", required: ["required", "required", booleanAttribute], name: "name" }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, providers: [RADIO_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, static: true }, { propertyName: "labelElement", first: true, predicate: ["label"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"radio-button-container\"\n [class.label-left]=\"labelPosition === 'left'\">\n <input\n #input\n type=\"radio\"\n tabindex=\"0\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name + '-radio-' + radioIndex\"\n [attr.value]=\"value\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.data-test]=\"hostDataTest ?? name\"\n [checked]=\"checked\"\n [class.disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\" />\n <div\n class=\"radio-button\"\n [class.disabled]=\"disabled\"\n (click)=\"select($event)\"></div>\n <label\n [for]=\"inputId\"\n (click)=\"select($event)\">\n <ng-content />\n </label>\n</div>\n", styles: ["ap-radio .radio-button-container{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}ap-radio .radio-button-container.label-left{flex-direction:row-reverse}ap-radio .radio-button-container input[type=radio]{transform:scale(0);position:absolute}ap-radio .radio-button-container input[type=radio]:checked~.radio-button{border-color:var(--ref-color-electric-blue-100);box-shadow:inset 0 0 0 3px var(--ref-color-white)}ap-radio .radio-button-container input[type=radio]:checked~.radio-button.disabled{background:var(--ref-color-grey-40);box-shadow:inset 0 0 0 3px var(--ref-color-grey-10)}ap-radio .radio-button-container input[type=radio]:checked:focus~.radio-button{border-color:var(--ref-color-electric-blue-100)}ap-radio .radio-button-container input[type=radio].disabled~.radio-button{pointer-events:none;cursor:default;box-shadow:inset 0 0 0 16px var(--ref-color-grey-10);border-color:var(--ref-color-grey-20)}ap-radio .radio-button-container input[type=radio].disabled~label{pointer-events:none;cursor:default;color:var(--ref-color-grey-60)}ap-radio .radio-button-container input[type=radio]:focus~.radio-button{outline:3px solid var(--ref-color-electric-blue-100);border-color:var(--ref-color-grey-80);outline-offset:1px}ap-radio .radio-button-container .radio-button{width:16px;height:16px;border-radius:100%;border:1px solid var(--ref-color-grey-60);background:var(--ref-color-electric-blue-100);box-shadow:inset 0 0 0 16px var(--ref-color-white);transition:box-shadow var(--comp-radio-transition-duration);flex-shrink:0}ap-radio .radio-button-container .radio-button:hover:not(.disabled){cursor:pointer;border-color:var(--ref-color-grey-80)}ap-radio .radio-button-container label{display:flex;align-items:center;font-family:var(--sys-text-style-body-font-family);font-size:var(--sys-text-style-body-size);font-weight:var(--sys-text-style-body-weight);line-height:var(--sys-text-style-body-line-height);color:var(--ref-color-grey-100)}ap-radio .radio-button-container label:empty{display:none}ap-radio .radio-button-container label.disabled{color:var(--ref-color-grey-60)}ap-radio .radio-button-container label:hover:not(.disabled){cursor:pointer}ap-radio.ng-invalid.ng-dirty .radio-button{border-color:var(--ref-color-red-100)}ap-radio.ng-invalid.ng-dirty .radio-button:hover{border-color:var(--ref-color-red-60)}ap-radio.ng-invalid.ng-dirty input[type=radio]:focus~.radio-button{border-color:var(--ref-color-red-60)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
268
+ }
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RadioComponent, decorators: [{
270
+ type: Component,
271
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-radio', standalone: true, imports: [SymbolComponent], providers: [RADIO_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<div\n class=\"radio-button-container\"\n [class.label-left]=\"labelPosition === 'left'\">\n <input\n #input\n type=\"radio\"\n tabindex=\"0\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name + '-radio-' + radioIndex\"\n [attr.value]=\"value\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.data-test]=\"hostDataTest ?? name\"\n [checked]=\"checked\"\n [class.disabled]=\"disabled\"\n (change)=\"onChange($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\" />\n <div\n class=\"radio-button\"\n [class.disabled]=\"disabled\"\n (click)=\"select($event)\"></div>\n <label\n [for]=\"inputId\"\n (click)=\"select($event)\">\n <ng-content />\n </label>\n</div>\n", styles: ["ap-radio .radio-button-container{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}ap-radio .radio-button-container.label-left{flex-direction:row-reverse}ap-radio .radio-button-container input[type=radio]{transform:scale(0);position:absolute}ap-radio .radio-button-container input[type=radio]:checked~.radio-button{border-color:var(--ref-color-electric-blue-100);box-shadow:inset 0 0 0 3px var(--ref-color-white)}ap-radio .radio-button-container input[type=radio]:checked~.radio-button.disabled{background:var(--ref-color-grey-40);box-shadow:inset 0 0 0 3px var(--ref-color-grey-10)}ap-radio .radio-button-container input[type=radio]:checked:focus~.radio-button{border-color:var(--ref-color-electric-blue-100)}ap-radio .radio-button-container input[type=radio].disabled~.radio-button{pointer-events:none;cursor:default;box-shadow:inset 0 0 0 16px var(--ref-color-grey-10);border-color:var(--ref-color-grey-20)}ap-radio .radio-button-container input[type=radio].disabled~label{pointer-events:none;cursor:default;color:var(--ref-color-grey-60)}ap-radio .radio-button-container input[type=radio]:focus~.radio-button{outline:3px solid var(--ref-color-electric-blue-100);border-color:var(--ref-color-grey-80);outline-offset:1px}ap-radio .radio-button-container .radio-button{width:16px;height:16px;border-radius:100%;border:1px solid var(--ref-color-grey-60);background:var(--ref-color-electric-blue-100);box-shadow:inset 0 0 0 16px var(--ref-color-white);transition:box-shadow var(--comp-radio-transition-duration);flex-shrink:0}ap-radio .radio-button-container .radio-button:hover:not(.disabled){cursor:pointer;border-color:var(--ref-color-grey-80)}ap-radio .radio-button-container label{display:flex;align-items:center;font-family:var(--sys-text-style-body-font-family);font-size:var(--sys-text-style-body-size);font-weight:var(--sys-text-style-body-weight);line-height:var(--sys-text-style-body-line-height);color:var(--ref-color-grey-100)}ap-radio .radio-button-container label:empty{display:none}ap-radio .radio-button-container label.disabled{color:var(--ref-color-grey-60)}ap-radio .radio-button-container label:hover:not(.disabled){cursor:pointer}ap-radio.ng-invalid.ng-dirty .radio-button{border-color:var(--ref-color-red-100)}ap-radio.ng-invalid.ng-dirty .radio-button:hover{border-color:var(--ref-color-red-60)}ap-radio.ng-invalid.ng-dirty input[type=radio]:focus~.radio-button{border-color:var(--ref-color-red-60)}\n"] }]
272
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { inputElement: [{
273
+ type: ViewChild,
274
+ args: ['input', { static: true }]
275
+ }], labelElement: [{
276
+ type: ViewChild,
277
+ args: ['label', { static: true }]
278
+ }], ariaLabel: [{
279
+ type: Input,
280
+ args: ['aria-label']
281
+ }], ariaLabelledby: [{
282
+ type: Input,
283
+ args: ['aria-labelledby']
284
+ }], ariaDescribedby: [{
285
+ type: Input,
286
+ args: ['aria-describedby']
287
+ }], disabled: [{
288
+ type: Input,
289
+ args: [{
290
+ transform: booleanAttribute,
291
+ }]
292
+ }], labelPosition: [{
293
+ type: Input
294
+ }], radioId: [{
295
+ type: Input,
296
+ args: [{
297
+ required: true,
298
+ }]
299
+ }], formControlName: [{
300
+ type: Input
301
+ }], value: [{
302
+ type: Input,
303
+ args: [{
304
+ required: true,
305
+ }]
306
+ }], required: [{
307
+ type: Input,
308
+ args: [{
309
+ transform: booleanAttribute,
310
+ }]
311
+ }], name: [{
312
+ type: Input
313
+ }], onClick: [{
314
+ type: Output
315
+ }], onFocus: [{
316
+ type: Output
317
+ }], onBlur: [{
318
+ type: Output
319
+ }] } });
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL3JhZGlvL3NyYy9yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcmFkaW8vc3JjL3JhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFJTixNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRTdELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFhO0lBQzFDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7SUFDN0MsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBS0YsTUFBTSxPQUFPLG9CQUFvQjtJQUNyQixTQUFTLEdBQWtDLEVBQUUsQ0FBQztJQUV0RCxHQUFHLENBQUMsT0FBa0IsRUFBRSxRQUF3QjtRQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBd0I7UUFDM0Is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RUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNFLFlBQVk7c0JBQWpELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDZixTQUFTO3NCQUE3QixLQUFLO3VCQUFDLFlBQVk7Z0JBQ08sY0FBYztzQkFBdkMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ0csZUFBZTtzQkFBekMsS0FBSzt1QkFBQyxrQkFBa0I7Z0JBSXJCLFFBQVE7c0JBSFgsS0FBSzt1QkFBQzt3QkFDSCxTQUFTLEVBQUUsZ0JBQWdCO3FCQUM5QjtnQkFRUSxhQUFhO3NCQUFyQixLQUFLO2dCQUlOLE9BQU87c0JBSE4sS0FBSzt1QkFBQzt3QkFDSCxRQUFRLEVBQUUsSUFBSTtxQkFDakI7Z0JBRVEsZUFBZTtzQkFBdkIsS0FBSztnQkFJTixLQUFLO3NCQUhKLEtBQUs7dUJBQUM7d0JBQ0gsUUFBUSxFQUFFLElBQUk7cUJBQ2pCO2dCQUtELFFBQVE7c0JBSFAsS0FBSzt1QkFBQzt3QkFDSCxTQUFTLEVBQUUsZ0JBQWdCO3FCQUM5QjtnQkFFUSxJQUFJO3NCQUFaLEtBQUs7Z0JBR0ksT0FBTztzQkFBaEIsTUFBTTtnQkFNRyxPQUFPO3NCQUFoQixNQUFNO2dCQUdHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN5bWJvbENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLXN5bWJvbCc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFByb3ZpZGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpbHRlciwgZnJvbUV2ZW50LCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IFJBRElPX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYWRpb0NvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWUsXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbnRyb2xSZWdpc3RyeSB7XG4gICAgcHJpdmF0ZSBhY2Nlc3NvcnM6IFtOZ0NvbnRyb2wsIFJhZGlvQ29tcG9uZW50XVtdID0gW107XG5cbiAgICBhZGQoY29udHJvbDogTmdDb250cm9sLCBhY2Nlc3NvcjogUmFkaW9Db21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NvcnMucHVzaChbY29udHJvbCwgYWNjZXNzb3JdKTtcbiAgICB9XG5cbiAgICByZW1vdmUoYWNjZXNzb3I6IFJhZGlvQ29tcG9uZW50KSB7XG4gICAgICAgIHRoaXMuYWNjZXNzb3JzID0gdGhpcy5hY2Nlc3NvcnMuZmlsdGVyKChbLCByYWRpb0NvbXBvbmVudF0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiByYWRpb0NvbXBvbmVudCAhPT0gYWNjZXNzb3I7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbGVjdChhY2Nlc3NvcjogUmFkaW9Db21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NvcnMuZm9yRWFjaCgoW25nQ29udHJvbCwgcmFkaW9Db21wb25lbnRdKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NhbWVHcm91cChuZ0NvbnRyb2wsIHJhZGlvQ29tcG9uZW50LCBhY2Nlc3NvcikgJiYgcmFkaW9Db21wb25lbnQgIT09IGFjY2Vzc29yKSB7XG4gICAgICAgICAgICAgICAgcmFkaW9Db21wb25lbnQud3JpdGVWYWx1ZShhY2Nlc3Nvci52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEluZGV4KGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjY2Vzc29ycy5maW5kSW5kZXgoKFssIHJhZGlvQ29tcG9uZW50XSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJhZGlvQ29tcG9uZW50ID09PSBhY2Nlc3NvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TmV4dFJhZGlvKGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IFJhZGlvQ29tcG9uZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleChhY2Nlc3Nvcik7XG4gICAgICAgIGNvbnN0IG5leHRJbmRleCA9IGluZGV4ICsgMTtcbiAgICAgICAgaWYgKG5leHRJbmRleCA+PSB0aGlzLmFjY2Vzc29ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFjY2Vzc29yc1swXVsxXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXh0UmFkaW8gPSB0aGlzLmFjY2Vzc29yc1tuZXh0SW5kZXhdO1xuICAgICAgICByZXR1cm4gbmV4dFJhZGlvID8gbmV4dFJhZGlvWzFdIDogbnVsbDtcbiAgICB9XG5cbiAgICBnZXRQcmV2aW91c1JhZGlvKGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IFJhZGlvQ29tcG9uZW50IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleChhY2Nlc3Nvcik7XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXNzb3JzW3RoaXMuYWNjZXNzb3JzLmxlbmd0aCAtIDFdWzFdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSBpbmRleCAtIDE7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzUmFkaW8gPSB0aGlzLmFjY2Vzc29yc1twcmV2aW91c0luZGV4XTtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzUmFkaW8gPyBwcmV2aW91c1JhZGlvWzFdIDogbnVsbDtcbiAgICB9XG5cbiAgICBibHVyQWxsR3JvdXAoYWNjZXNzb3I6IFJhZGlvQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWNjZXNzb3JzLmZvckVhY2goKFssIHJhZGlvQ29tcG9uZW50XSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTYW1lR3JvdXAoYWNjZXNzb3IuY29udHJvbCwgcmFkaW9Db21wb25lbnQsIGFjY2Vzc29yKSkge1xuICAgICAgICAgICAgICAgIHJhZGlvQ29tcG9uZW50LmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0TmVnYXRpdmVUYWJJbmRleFRvQWxsRXhjZXB0KGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjY2Vzc29ycy5mb3JFYWNoKChbLCByYWRpb0NvbXBvbmVudF0pID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2FtZUdyb3VwKGFjY2Vzc29yLmNvbnRyb2wsIHJhZGlvQ29tcG9uZW50LCBhY2Nlc3NvcikpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXNzb3IucmFkaW9JZCAhPT0gcmFkaW9Db21wb25lbnQucmFkaW9JZCkge1xuICAgICAgICAgICAgICAgICAgICByYWRpb0NvbXBvbmVudC5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IC0xO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJhZGlvQ29tcG9uZW50LmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvY3VzUHJldmlvdXMoYWNjZXNzb3I6IFJhZGlvQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzUmFkaW8gPSB0aGlzLmdldFByZXZpb3VzUmFkaW8oYWNjZXNzb3IpO1xuICAgICAgICBpZiAocHJldmlvdXNSYWRpbykge1xuICAgICAgICAgICAgcHJldmlvdXNSYWRpby5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXNOZXh0KGFjY2Vzc29yOiBSYWRpb0NvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXh0UmFkaW8gPSB0aGlzLmdldE5leHRSYWRpbyhhY2Nlc3Nvcik7XG4gICAgICAgIGlmIChuZXh0UmFkaW8pIHtcbiAgICAgICAgICAgIG5leHRSYWRpby5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Rmlyc3RDaGVja2VkUmFkaW8oKTogUmFkaW9Db21wb25lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3QgY2hlY2tlZFJhZGlvID0gdGhpcy5hY2Nlc3NvcnMuZmluZCgoWywgcmFkaW9Db21wb25lbnRdKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmFkaW9Db21wb25lbnQuY2hlY2tlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjaGVja2VkUmFkaW8gPyBjaGVja2VkUmFkaW9bMV0gOiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTYW1lR3JvdXAobmdDb250cm9sOiBOZ0NvbnRyb2wsIHJhZGlvQ29tcG9uZW50OiBSYWRpb0NvbXBvbmVudCwgYWNjZXNzb3I6IFJhZGlvQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghbmdDb250cm9sLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmFkaW9Db21wb25lbnQubmFtZSA9PT0gYWNjZXNzb3IubmFtZTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtcmFkaW8nLFxuICAgIHN0eWxlVXJsczogWycuL3JhZGlvLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbU3ltYm9sQ29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFtSQURJT19WQUxVRV9BQ0NFU1NPUl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSByYWRpb0NvbnRyb2xSZWdpc3RyeTogUmFkaW9Db250cm9sUmVnaXN0cnkgPSBpbmplY3QoUmFkaW9Db250cm9sUmVnaXN0cnkpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdsYWJlbCcsIHsgc3RhdGljOiB0cnVlIH0pIGxhYmVsRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gICAgQElucHV0KCdhcmlhLWxhYmVsJykgYXJpYUxhYmVsID0gJyc7XG4gICAgQElucHV0KCdhcmlhLWxhYmVsbGVkYnknKSBhcmlhTGFiZWxsZWRieTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCdhcmlhLWRlc2NyaWJlZGJ5JykgYXJpYURlc2NyaWJlZGJ5ID0gJyc7XG4gICAgQElucHV0KHtcbiAgICAgICAgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLFxuICAgIH0pXG4gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnO1xuICAgIEBJbnB1dCh7XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIH0pXG4gICAgcmFkaW9JZCA9ICcnO1xuICAgIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZSE6IHN0cmluZztcbiAgICBASW5wdXQoe1xuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9KVxuICAgIHZhbHVlOiB1bmtub3duO1xuICAgIEBJbnB1dCh7XG4gICAgICAgIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICB9KVxuICAgIHJlcXVpcmVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgbmFtZSA9ICcnO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IEV2ZW50O1xuICAgICAgICB2YWx1ZTogdW5rbm93bjtcbiAgICB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIEBPdXRwdXQoKSBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBpbnB1dElkID0gJyc7XG4gICAgX2Rpc2FibGVkID0gZmFsc2U7XG4gICAgaGFzTGFiZWwgPSBmYWxzZTtcbiAgICBob3N0RGF0YVRlc3Q6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb250cm9sITogTmdDb250cm9sO1xuICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICBmb2N1c2VkID0gZmFsc2U7XG4gICAgcmFkaW9JbmRleCA9IDA7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwdWJsaWMgb25Nb2RlbENoYW5nZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgICAvLyBpZ25vcmVcbiAgICB9O1xuXG4gICAgcHVibGljIG9uTW9kZWxUb3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgICAgICAvLyBpZ25vcmVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuaG9zdERhdGFUZXN0ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS10ZXN0Jyk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ2tleWRvd24nKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgS2V5Ym9hcmRFdmVudCA9PiAna2V5JyBpbiBldmVudCksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUga2V5ZG93biBldmVudFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yYWRpb0NvbnRyb2xSZWdpc3RyeS5ibHVyQWxsR3JvdXAodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJhZGlvQ29udHJvbFJlZ2lzdHJ5LmZvY3VzTmV4dCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yYWRpb0NvbnRyb2xSZWdpc3RyeS5ibHVyQWxsR3JvdXAodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJhZGlvQ29udHJvbFJlZ2lzdHJ5LmZvY3VzUHJldmlvdXModGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sYWJlbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzTGFiZWwgPSAhIXRoaXMubGFiZWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ/LnRyaW0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wpO1xuICAgICAgICB0aGlzLmNoZWNrTmFtZSgpO1xuICAgICAgICB0aGlzLnJhZGlvQ29udHJvbFJlZ2lzdHJ5LmFkZCh0aGlzLmNvbnRyb2wsIHRoaXMpO1xuICAgICAgICB0aGlzLnJhZGlvSW5kZXggPSB0aGlzLnJhZGlvQ29udHJvbFJlZ2lzdHJ5LmdldEluZGV4KHRoaXMpO1xuICAgICAgICB0aGlzLmlucHV0SWQgPSBgJHt0aGlzLnJhZGlvSWR9LSR7dGhpcy5yYWRpb0luZGV4fWA7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sYWJlbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzTGFiZWwgPSAhIXRoaXMubGFiZWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ/LnRyaW0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnJhZGlvQ29udHJvbFJlZ2lzdHJ5LnJlbW92ZSh0aGlzKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCwgcmFkaW9CdXR0b246IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0KGV2ZW50KTtcbiAgICAgICAgcmFkaW9CdXR0b24uZm9jdXMoKTtcbiAgICB9XG5cbiAgICBzZWxlY3QoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFkaW9Db250cm9sUmVnaXN0cnkuc2VsZWN0KHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IHZhbHVlID09IHRoaXMudmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRFbGVtZW50Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0aGlzLmNoZWNrZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuY2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5yYWRpb0NvbnRyb2xSZWdpc3RyeS5zZXROZWdhdGl2ZVRhYkluZGV4VG9BbGxFeGNlcHQodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub25Gb2N1cy5lbWl0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW5wdXRCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdChldmVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja05hbWUoKSB7XG4gICAgICAgIGlmICh0aGlzLm5hbWUgJiYgdGhpcy5mb3JtQ29udHJvbE5hbWUgJiYgdGhpcy5uYW1lICE9PSB0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgdGhpcy50aHJvd05hbWVFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5uYW1lICYmIHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmZvcm1Db250cm9sTmFtZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdGhyb3dOYW1lRXJyb3IoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXG4gICAgICAgICAgSWYgeW91IGRlZmluZSBib3RoIGEgbmFtZSBhbmQgYSBmb3JtQ29udHJvbE5hbWUgYXR0cmlidXRlIG9uIHlvdXIgcmFkaW8gYnV0dG9uLCB0aGVpciB2YWx1ZXNcbiAgICAgICAgICBtdXN0IG1hdGNoLiBFeDogPHAtcmFkaW9CdXR0b24gZm9ybUNvbnRyb2xOYW1lPVwiZm9vZFwiIG5hbWU9XCJmb29kXCI+PC9wLXJhZGlvQnV0dG9uPlxuICAgICAgICBgKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJyYWRpby1idXR0b24tY29udGFpbmVyXCJcbiAgICBbY2xhc3MubGFiZWwtbGVmdF09XCJsYWJlbFBvc2l0aW9uID09PSAnbGVmdCdcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgI2lucHV0XG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWUgKyAnLXJhZGlvLScgKyByYWRpb0luZGV4XCJcbiAgICAgICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkYnlcIlxuICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiXG4gICAgICAgIFthdHRyLmRhdGEtdGVzdF09XCJob3N0RGF0YVRlc3QgPz8gbmFtZVwiXG4gICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygkZXZlbnQpXCIgLz5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmFkaW8tYnV0dG9uXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdCgkZXZlbnQpXCI+PC9kaXY+XG4gICAgPGxhYmVsXG4gICAgICAgIFtmb3JdPVwiaW5wdXRJZFwiXG4gICAgICAgIChjbGljayk9XCJzZWxlY3QoJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGVudCAvPlxuICAgIDwvbGFiZWw+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdvcmFwdWxzZS11aS1jb21wb25lbnRzLXJhbmdlLXNsaWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2Fnb3JhcHVsc2UtdWktY29tcG9uZW50cy1yYW5nZS1zbGlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './range-slider.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,155 @@
1
+ import { NgClass } from '@angular/common';
2
+ import { Component, forwardRef, Input } from '@angular/core';
3
+ import { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators, } from '@angular/forms';
4
+ import { MatSliderModule } from '@angular/material/slider';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@angular/material/slider";
8
+ export class RangeSliderComponent {
9
+ fb;
10
+ set min(min) {
11
+ this.minimumFormControl.setValue(min);
12
+ this.change();
13
+ }
14
+ get min() {
15
+ return this.minFormControl.getRawValue();
16
+ }
17
+ set max(max) {
18
+ this.maximumFormControl.setValue(max);
19
+ this.change();
20
+ }
21
+ get max() {
22
+ return this.maxFormControl.getRawValue();
23
+ }
24
+ rangeSliderFormGroup;
25
+ constructor(fb) {
26
+ this.fb = fb;
27
+ const minimumValidator = (control) => {
28
+ let errors = null;
29
+ const rangeFormValue = control.getRawValue();
30
+ if (rangeFormValue.min && rangeFormValue.minimum && rangeFormValue.min < rangeFormValue.minimum) {
31
+ errors = {
32
+ minimumError: {
33
+ expectedMin: rangeFormValue.minimum,
34
+ currentMin: rangeFormValue.min,
35
+ },
36
+ };
37
+ }
38
+ return errors;
39
+ };
40
+ const minimumRequiredValidator = (control) => {
41
+ let errors = null;
42
+ const rangeFormValue = control.getRawValue();
43
+ if (rangeFormValue.min == undefined) {
44
+ errors = {
45
+ minimumRequired: true,
46
+ };
47
+ }
48
+ return errors;
49
+ };
50
+ const maximumValidator = (control) => {
51
+ let errors = null;
52
+ const rangeFormValue = control.getRawValue();
53
+ if (rangeFormValue.max && rangeFormValue.maximum && rangeFormValue.max > rangeFormValue.maximum) {
54
+ errors = {
55
+ maximumError: {
56
+ expectedMax: rangeFormValue.maximum,
57
+ currentMax: rangeFormValue.max,
58
+ },
59
+ };
60
+ }
61
+ return errors;
62
+ };
63
+ const maximumRequiredValidator = (control) => {
64
+ let errors = null;
65
+ const rangeFormValue = control.getRawValue();
66
+ if (rangeFormValue.max == undefined) {
67
+ errors = {
68
+ maximumRequired: true,
69
+ };
70
+ }
71
+ return errors;
72
+ };
73
+ this.rangeSliderFormGroup = fb.group({
74
+ maximum: fb.control(0, { nonNullable: true }),
75
+ minimum: fb.control(100, { nonNullable: true }),
76
+ min: fb.control(undefined, { nonNullable: true }),
77
+ max: fb.control(undefined, { nonNullable: true }),
78
+ }, { validators: Validators.compose([minimumRequiredValidator, maximumRequiredValidator, minimumValidator, maximumValidator]) });
79
+ }
80
+ propagateChange = null;
81
+ propagateOnTouch = null;
82
+ registerOnChange(fn) {
83
+ this.propagateChange = fn;
84
+ }
85
+ registerOnTouched(fn) {
86
+ this.propagateOnTouch = fn;
87
+ }
88
+ get minimum() {
89
+ return this.minimumFormControl.getRawValue();
90
+ }
91
+ get maximum() {
92
+ return this.maximumFormControl.getRawValue();
93
+ }
94
+ get minFormControl() {
95
+ return this.rangeSliderFormGroup.controls.min;
96
+ }
97
+ get minimumFormControl() {
98
+ return this.rangeSliderFormGroup.controls.minimum;
99
+ }
100
+ get maximumFormControl() {
101
+ return this.rangeSliderFormGroup.controls.maximum;
102
+ }
103
+ get maxFormControl() {
104
+ return this.rangeSliderFormGroup.controls.max;
105
+ }
106
+ writeValue(inputRange) {
107
+ this.minFormControl.setValue(inputRange.min);
108
+ this.maxFormControl.setValue(inputRange.max);
109
+ }
110
+ change() {
111
+ if (this.propagateChange) {
112
+ const formValue = this.rangeSliderFormGroup.getRawValue();
113
+ this.propagateChange({
114
+ min: formValue.min,
115
+ max: formValue.max,
116
+ });
117
+ }
118
+ }
119
+ validate() {
120
+ return this.rangeSliderFormGroup.errors;
121
+ }
122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RangeSliderComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
123
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: RangeSliderComponent, isStandalone: true, selector: "ap-range-slider", inputs: { min: "min", max: "max" }, providers: [
124
+ {
125
+ provide: NG_VALUE_ACCESSOR,
126
+ useExisting: forwardRef(() => RangeSliderComponent),
127
+ multi: true,
128
+ },
129
+ {
130
+ provide: NG_VALIDATORS,
131
+ useExisting: forwardRef(() => RangeSliderComponent),
132
+ multi: true,
133
+ },
134
+ ], ngImport: i0, template: "<div\n class=\"slider-wrapper\"\n [formGroup]=\"rangeSliderFormGroup\">\n <div class=\"number\">\n <span>{{ min }}</span>\n </div>\n <mat-slider\n class=\"slider\"\n [min]=\"minimum\"\n [max]=\"maximum\">\n <input\n matSliderStartThumb\n formControlName=\"min\"\n (change)=\"change()\" />\n <input\n matSliderEndThumb\n formControlName=\"max\"\n (change)=\"change()\" />\n </mat-slider>\n <div class=\"number\">\n <span>{{ max > maximum ? max + '+' : max }}</span>\n </div>\n</div>\n", styles: [":host{width:100%;height:52px}:host .slider-wrapper{display:flex;justify-content:space-between;align-items:center;gap:var(--ref-spacing-xxs)}:host .slider-wrapper .slider{flex-grow:2}:host .slider-wrapper .slider .mat-slider-thumb{background-color:var(--ref-color-electric-blue-100)}:host .slider-wrapper .number{flex-shrink:0;display:flex;justify-content:center;align-items:center;width:46px;height:36px;border:1px solid var(--ref-color-grey-20);border-radius:3px}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__thumb--focused .mdc-slider__thumb-knob{background-color:var(--ref-color-white);border:3px solid var(--ref-color-electric-blue-100)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__thumb-knob{background-color:var(--ref-color-white);border:3px solid var(--ref-color-electric-blue-100);width:var(--ref-spacing-md);height:var(--ref-spacing-md)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--active_fill{border-color:var(--ref-color-electric-blue-150)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--active{height:var(--ref-spacing-xxxs)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--inactive{background-color:var(--ref-color-grey-20)}\n"], dependencies: [{ kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i2.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i2.MatSliderRangeThumb, selector: "input[matSliderStartThumb], input[matSliderEndThumb]", exportAs: ["matSliderRangeThumb"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
135
+ }
136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: RangeSliderComponent, decorators: [{
137
+ type: Component,
138
+ args: [{ selector: 'ap-range-slider', standalone: true, imports: [NgClass, MatSliderModule, ReactiveFormsModule], providers: [
139
+ {
140
+ provide: NG_VALUE_ACCESSOR,
141
+ useExisting: forwardRef(() => RangeSliderComponent),
142
+ multi: true,
143
+ },
144
+ {
145
+ provide: NG_VALIDATORS,
146
+ useExisting: forwardRef(() => RangeSliderComponent),
147
+ multi: true,
148
+ },
149
+ ], template: "<div\n class=\"slider-wrapper\"\n [formGroup]=\"rangeSliderFormGroup\">\n <div class=\"number\">\n <span>{{ min }}</span>\n </div>\n <mat-slider\n class=\"slider\"\n [min]=\"minimum\"\n [max]=\"maximum\">\n <input\n matSliderStartThumb\n formControlName=\"min\"\n (change)=\"change()\" />\n <input\n matSliderEndThumb\n formControlName=\"max\"\n (change)=\"change()\" />\n </mat-slider>\n <div class=\"number\">\n <span>{{ max > maximum ? max + '+' : max }}</span>\n </div>\n</div>\n", styles: [":host{width:100%;height:52px}:host .slider-wrapper{display:flex;justify-content:space-between;align-items:center;gap:var(--ref-spacing-xxs)}:host .slider-wrapper .slider{flex-grow:2}:host .slider-wrapper .slider .mat-slider-thumb{background-color:var(--ref-color-electric-blue-100)}:host .slider-wrapper .number{flex-shrink:0;display:flex;justify-content:center;align-items:center;width:46px;height:36px;border:1px solid var(--ref-color-grey-20);border-radius:3px}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__thumb--focused .mdc-slider__thumb-knob{background-color:var(--ref-color-white);border:3px solid var(--ref-color-electric-blue-100)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__thumb-knob{background-color:var(--ref-color-white);border:3px solid var(--ref-color-electric-blue-100);width:var(--ref-spacing-md);height:var(--ref-spacing-md)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--active_fill{border-color:var(--ref-color-electric-blue-150)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--active{height:var(--ref-spacing-xxxs)}::ng-deep .slider-wrapper .mat-mdc-slider .mdc-slider__track--inactive{background-color:var(--ref-color-grey-20)}\n"] }]
150
+ }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { min: [{
151
+ type: Input
152
+ }], max: [{
153
+ type: Input
154
+ }] } });
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL3JhbmdlLXNsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcmFuZ2Utc2xpZGVyL3NyYy9yYW5nZS1zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBTUgsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsRUFJbkIsVUFBVSxHQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBNkIzRCxNQUFNLE9BQU8sb0JBQW9CO0lBNEJUO0lBM0JwQixJQUNJLEdBQUcsQ0FBQyxHQUFXO1FBQ2YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFDSSxHQUFHLENBQUMsR0FBVztRQUNmLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLEdBQUc7UUFDSCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELG9C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Q29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3IsXG4gICAgVmFsaWRhdG9yRm4sXG4gICAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcblxuZXhwb3J0IHR5cGUgUmFuZ2VTbGlkZXIgPSB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9O1xudHlwZSBSYW5nZUZvcm1WYWx1ZSA9IHtcbiAgICBtaW5pbXVtOiBudW1iZXI7XG4gICAgbWF4aW11bTogbnVtYmVyO1xuICAgIG1pbjogbnVtYmVyO1xuICAgIG1heDogbnVtYmVyO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcC1yYW5nZS1zbGlkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JhbmdlLXNsaWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nQ2xhc3MsIE1hdFNsaWRlck1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFuZ2VTbGlkZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYW5nZVNsaWRlckNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSYW5nZVNsaWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pbihtaW46IG51bWJlcikge1xuICAgICAgICB0aGlzLm1pbmltdW1Gb3JtQ29udHJvbC5zZXRWYWx1ZShtaW4pO1xuICAgICAgICB0aGlzLmNoYW5nZSgpO1xuICAgIH1cblxuICAgIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluRm9ybUNvbnRyb2wuZ2V0UmF3VmFsdWUoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXgobWF4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5tYXhpbXVtRm9ybUNvbnRyb2wuc2V0VmFsdWUobWF4KTtcbiAgICAgICAgdGhpcy5jaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heEZvcm1Db250cm9sLmdldFJhd1ZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmFuZ2VTbGlkZXJGb3JtR3JvdXA6IEZvcm1Hcm91cDx7XG4gICAgICAgIG1heGltdW06IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgICAgIG1pbmltdW06IEZvcm1Db250cm9sPG51bWJlcj47XG4gICAgICAgIG1pbjogRm9ybUNvbnRyb2w8bnVtYmVyIHwgdW5kZWZpbmVkPjtcbiAgICAgICAgbWF4OiBGb3JtQ29udHJvbDxudW1iZXIgfCB1bmRlZmluZWQ+O1xuICAgIH0+O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICAgICAgY29uc3QgbWluaW11bVZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgbGV0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VGb3JtVmFsdWUgPSBjb250cm9sLmdldFJhd1ZhbHVlKCkgYXMgUmFuZ2VGb3JtVmFsdWU7XG4gICAgICAgICAgICBpZiAocmFuZ2VGb3JtVmFsdWUubWluICYmIHJhbmdlRm9ybVZhbHVlLm1pbmltdW0gJiYgcmFuZ2VGb3JtVmFsdWUubWluIDwgcmFuZ2VGb3JtVmFsdWUubWluaW11bSkge1xuICAgICAgICAgICAgICAgIGVycm9ycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWluaW11bUVycm9yOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZE1pbjogcmFuZ2VGb3JtVmFsdWUubWluaW11bSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNaW46IHJhbmdlRm9ybVZhbHVlLm1pbixcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBtaW5pbXVtUmVxdWlyZWRWYWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgICAgIGxldCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlRm9ybVZhbHVlID0gY29udHJvbC5nZXRSYXdWYWx1ZSgpIGFzIFJhbmdlRm9ybVZhbHVlO1xuICAgICAgICAgICAgaWYgKHJhbmdlRm9ybVZhbHVlLm1pbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBlcnJvcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIG1pbmltdW1SZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGVycm9ycztcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBtYXhpbXVtVmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgICAgICBsZXQgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgICBjb25zdCByYW5nZUZvcm1WYWx1ZSA9IGNvbnRyb2wuZ2V0UmF3VmFsdWUoKSBhcyBSYW5nZUZvcm1WYWx1ZTtcbiAgICAgICAgICAgIGlmIChyYW5nZUZvcm1WYWx1ZS5tYXggJiYgcmFuZ2VGb3JtVmFsdWUubWF4aW11bSAmJiByYW5nZUZvcm1WYWx1ZS5tYXggPiByYW5nZUZvcm1WYWx1ZS5tYXhpbXVtKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzID0ge1xuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtRXJyb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkTWF4OiByYW5nZUZvcm1WYWx1ZS5tYXhpbXVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1heDogcmFuZ2VGb3JtVmFsdWUubWF4LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG1heGltdW1SZXF1aXJlZFZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICAgICAgbGV0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgcmFuZ2VGb3JtVmFsdWUgPSBjb250cm9sLmdldFJhd1ZhbHVlKCkgYXMgUmFuZ2VGb3JtVmFsdWU7XG4gICAgICAgICAgICBpZiAocmFuZ2VGb3JtVmFsdWUubWF4ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGVycm9ycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgbWF4aW11bVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucmFuZ2VTbGlkZXJGb3JtR3JvdXAgPSBmYi5ncm91cChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXhpbXVtOiBmYi5jb250cm9sKDAsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgICAgICAgICAgbWluaW11bTogZmIuY29udHJvbCgxMDAsIHsgbm9uTnVsbGFibGU6IHRydWUgfSksXG4gICAgICAgICAgICAgICAgbWluOiBmYi5jb250cm9sPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pLFxuICAgICAgICAgICAgICAgIG1heDogZmIuY29udHJvbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMuY29tcG9zZShbbWluaW11bVJlcXVpcmVkVmFsaWRhdG9yLCBtYXhpbXVtUmVxdWlyZWRWYWxpZGF0b3IsIG1pbmltdW1WYWxpZGF0b3IsIG1heGltdW1WYWxpZGF0b3JdKSB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvcGFnYXRlQ2hhbmdlOiAoKHY6IFJhbmdlU2xpZGVyKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJvcGFnYXRlT25Ub3VjaDogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodjogUmFuZ2VTbGlkZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZU9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICBnZXQgbWluaW11bSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5taW5pbXVtRm9ybUNvbnRyb2wuZ2V0UmF3VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXQgbWF4aW11bSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXhpbXVtRm9ybUNvbnRyb2wuZ2V0UmF3VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXQgbWluRm9ybUNvbnRyb2woKTogRm9ybUNvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZVNsaWRlckZvcm1Hcm91cC5jb250cm9scy5taW47XG4gICAgfVxuXG4gICAgZ2V0IG1pbmltdW1Gb3JtQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlU2xpZGVyRm9ybUdyb3VwLmNvbnRyb2xzLm1pbmltdW07XG4gICAgfVxuXG4gICAgZ2V0IG1heGltdW1Gb3JtQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlU2xpZGVyRm9ybUdyb3VwLmNvbnRyb2xzLm1heGltdW07XG4gICAgfVxuXG4gICAgZ2V0IG1heEZvcm1Db250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2VTbGlkZXJGb3JtR3JvdXAuY29udHJvbHMubWF4O1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUoaW5wdXRSYW5nZTogUmFuZ2VTbGlkZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5taW5Gb3JtQ29udHJvbC5zZXRWYWx1ZShpbnB1dFJhbmdlLm1pbik7XG4gICAgICAgIHRoaXMubWF4Rm9ybUNvbnRyb2wuc2V0VmFsdWUoaW5wdXRSYW5nZS5tYXgpO1xuICAgIH1cblxuICAgIGNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcGFnYXRlQ2hhbmdlKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLnJhbmdlU2xpZGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh7XG4gICAgICAgICAgICAgICAgbWluOiBmb3JtVmFsdWUubWluLFxuICAgICAgICAgICAgICAgIG1heDogZm9ybVZhbHVlLm1heCxcbiAgICAgICAgICAgIH0gYXMgUmFuZ2VTbGlkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5yYW5nZVNsaWRlckZvcm1Hcm91cC5lcnJvcnM7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwic2xpZGVyLXdyYXBwZXJcIlxuICAgIFtmb3JtR3JvdXBdPVwicmFuZ2VTbGlkZXJGb3JtR3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwibnVtYmVyXCI+XG4gICAgICAgIDxzcGFuPnt7IG1pbiB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LXNsaWRlclxuICAgICAgICBjbGFzcz1cInNsaWRlclwiXG4gICAgICAgIFttaW5dPVwibWluaW11bVwiXG4gICAgICAgIFttYXhdPVwibWF4aW11bVwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdFNsaWRlclN0YXJ0VGh1bWJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1pblwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImNoYW5nZSgpXCIgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRTbGlkZXJFbmRUaHVtYlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF4XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlKClcIiAvPlxuICAgIDwvbWF0LXNsaWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwibnVtYmVyXCI+XG4gICAgICAgIDxzcGFuPnt7IG1heCA+IG1heGltdW0gPyBtYXggKyAnKycgOiBtYXggfX08L3NwYW4+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public_api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdvcmFwdWxzZS11aS1jb21wb25lbnRzLXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9zZWxlY3Qvc3JjL2Fnb3JhcHVsc2UtdWktY29tcG9uZW50cy1zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==