@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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wbWVudS1vcHRpb25zLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9wb3BtZW51L3NyYy9wb3BtZW51LW9wdGlvbnMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFBvcG1lbnVPcHRpb25zIHtcbiAgICBhbmltYXRpb25EdXJhdGlvbj86IG51bWJlcjtcbiAgICBhcFBvcG1lbnVCb3JkZXI/OiBib29sZWFuO1xuICAgIGFwUG9wbWVudURpc2FibGVkPzogYm9vbGVhbjtcbiAgICBhcFBvcG1lbnVCYWNrZ3JvdW5kPzogYm9vbGVhbjtcbiAgICBhcnJvdz86IGJvb2xlYW47XG4gICAgYXJyb3dQb3NpdGlvbj86IGJvb2xlYW47XG4gICAgYXJyb3dPZmZzZXQ/OiBudW1iZXI7XG4gICAgaGFzQmFja2Ryb3A/OiBib29sZWFuO1xuICAgIGJhY2tkcm9wQ2xhc3M/OiBzdHJpbmc7XG4gICAgcGFuZWxDbGFzcz86IHN0cmluZztcbiAgICBwbGFjZW1lbnQ/OiBzdHJpbmc7XG4gICAgcm91bmRlZD86IGJvb2xlYW47XG4gICAgZGVsYXk/OiBudW1iZXI7XG4gICAgZGlzcGxheT86IGJvb2xlYW47XG4gICAgZGlzcGxheVRvdWNoc2NyZWVuPzogYm9vbGVhbjtcbiAgICAnc2hvdy1kZWxheSc/OiBudW1iZXI7XG4gICAgJ2hpZGUtZGVsYXknPzogbnVtYmVyO1xuICAgIHNob3dEZWxheT86IG51bWJlcjtcbiAgICBoaWRlRGVsYXk/OiBudW1iZXI7XG4gICAgdHJpZ2dlcj86IHN0cmluZztcbiAgICBzaGFkb3c/OiBib29sZWFuO1xuICAgIHRoZW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBvZmZzZXRzICh3aXRoIGFuIFMgYXQgdGhlIGVuZCkgaW5zdGVhZFxuICAgICAqL1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBBbGxvdyB0byBjdXN0b21pemUgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3BtZW51IGZyb20gdGhlIHRhcmdldFxuICAgICAqXG4gICAgICogU2tpZGRpbmc6IGRpc3BsYWNlcyB0aGUgcG9wcGVyIGFsb25nIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIERpc3RhbmNlOiBkaXNwbGFjZXMgdGhlIHBvcHBlciBhd2F5IGZyb20sIG9yIHRvd2FyZCwgdGhlIHJlZmVyZW5jZSBlbGVtZW50IGluIHRoZSBkaXJlY3Rpb24gb2YgaXRzIHBsYWNlbWVudC5cbiAgICAgKiBBIHBvc2l0aXZlIG51bWJlciBkaXNwbGFjZXMgaXQgZnVydGhlciBhd2F5LCB3aGlsZSBhIG5lZ2F0aXZlIG51bWJlciBsZXRzIGl0IG92ZXJsYXAgdGhlIHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIFNlZSBwb3BwZXIuanMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBleHBsYW5hdGlvbiBhYm91dCBza2lkZGluZyBhbmQgZGlzdGFuY2U6IGh0dHBzOi8vcG9wcGVyLmpzLm9yZy9kb2NzL3YyL21vZGlmaWVycy9vZmZzZXQvXG4gICAgICovXG4gICAgb2Zmc2V0cz86IHsgZGlzdGFuY2U/OiBudW1iZXI7IHNraWRkaW5nPzogbnVtYmVyIH07XG4gICAgd2lkdGg/OiBudW1iZXI7XG4gICAgJ21heC13aWR0aCc/OiBudW1iZXI7XG4gICAgcG9zaXRpb24/OiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfTtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * This is not a real service, but it looks like it from the outside.
4
+ * It's just an InjectionToken used to import the config (initOptions) object, provided from the outside
5
+ */
6
+ export const PopmenuOptionsService = new InjectionToken('PopmenuOptions');
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wbWVudS1vcHRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcG9wbWVudS9zcmMvcG9wbWVudS1vcHRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsZ0JBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3BtZW51T3B0aW9ucyB9IGZyb20gJy4vcG9wbWVudS1vcHRpb25zLmludGVyZmFjZSc7XG5cbi8qKlxuICogVGhpcyBpcyBub3QgYSByZWFsIHNlcnZpY2UsIGJ1dCBpdCBsb29rcyBsaWtlIGl0IGZyb20gdGhlIG91dHNpZGUuXG4gKiBJdCdzIGp1c3QgYW4gSW5qZWN0aW9uVG9rZW4gdXNlZCB0byBpbXBvcnQgdGhlIGNvbmZpZyAoaW5pdE9wdGlvbnMpIG9iamVjdCwgcHJvdmlkZWQgZnJvbSB0aGUgb3V0c2lkZVxuICovXG5leHBvcnQgY29uc3QgUG9wbWVudU9wdGlvbnNTZXJ2aWNlID0gbmV3IEluamVjdGlvblRva2VuPFBvcG1lbnVPcHRpb25zPignUG9wbWVudU9wdGlvbnMnKTtcbiJdfQ==
@@ -0,0 +1,383 @@
1
+ import { ButtonComponent } from '@agorapulse/ui-components/button';
2
+ import { NgStyle, NgTemplateOutlet } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewChild, } from '@angular/core';
4
+ import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
5
+ import { merge } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/menu";
8
+ export class PopmenuComponent {
9
+ renderer;
10
+ elementRef;
11
+ changeDetectorRef;
12
+ data;
13
+ events = new EventEmitter();
14
+ arrowTopPosition = '50%';
15
+ arrowBottomPosition = '50%';
16
+ arrowLeftPosition = undefined;
17
+ arrowRightPosition = undefined;
18
+ arrowClass = undefined;
19
+ below = false;
20
+ before = false;
21
+ menuClosed = new EventEmitter();
22
+ menuOpened = new EventEmitter();
23
+ trigger;
24
+ hostStyleTop = '';
25
+ hostStyleBorderRadius = '';
26
+ hostStyleLeft = '';
27
+ hostStyleZIndex = 0;
28
+ hostStyleTransition = '';
29
+ hostStyleWidth = '';
30
+ hostStyleMaxWidth = '';
31
+ hostStylePointerEvents = '';
32
+ hostClassShow = false;
33
+ hostClassShadow = false;
34
+ hostClassLight = false;
35
+ viewInit = false;
36
+ _show = false;
37
+ get show() {
38
+ return this._show;
39
+ }
40
+ set show(value) {
41
+ if (value) {
42
+ this.setPosition();
43
+ }
44
+ this._show = value;
45
+ }
46
+ set close(value) {
47
+ if (value) {
48
+ setTimeout(() => {
49
+ this.trigger.closeMenu();
50
+ }, 100);
51
+ }
52
+ }
53
+ menuOpen = false;
54
+ get arrow() {
55
+ return this.data.options.arrow && this.border;
56
+ }
57
+ get arrowOffset() {
58
+ return this.data.options.arrowOffset;
59
+ }
60
+ get arrowPosition() {
61
+ return this.data.options.arrowPosition;
62
+ }
63
+ get autoPlacement() {
64
+ return this.data.options.autoPlacement;
65
+ }
66
+ get background() {
67
+ return this.data.options.apPopmenuBackground;
68
+ }
69
+ get border() {
70
+ return this.data.options.apPopmenuBorder;
71
+ }
72
+ get element() {
73
+ return this.data.element;
74
+ }
75
+ get elementPosition() {
76
+ return this.data.elementPosition;
77
+ }
78
+ get hasBackdrop() {
79
+ return this.data.options.hasBackdrop;
80
+ }
81
+ get backdropClass() {
82
+ return this.data.options.backdropClass;
83
+ }
84
+ get isThemeLight() {
85
+ return this.options['theme'] === 'light';
86
+ }
87
+ get options() {
88
+ return this.data.options;
89
+ }
90
+ get panelClass() {
91
+ return this.data.options.panelClass;
92
+ }
93
+ get placement() {
94
+ return this.data.options.placement;
95
+ }
96
+ get rounded() {
97
+ return this.data.options.rounded;
98
+ }
99
+ get shadow() {
100
+ return this.data.options.shadow;
101
+ }
102
+ get tooltipOffset() {
103
+ return Number(this.data.options.offset);
104
+ }
105
+ get offsetSkidding() {
106
+ return Number(this.data.options.offsets.skidding) || 0;
107
+ }
108
+ get offsetDistance() {
109
+ return Number(this.data.options.offsets.distance || 0);
110
+ }
111
+ get value() {
112
+ return this.data.value;
113
+ }
114
+ constructor(renderer, elementRef, changeDetectorRef) {
115
+ this.renderer = renderer;
116
+ this.elementRef = elementRef;
117
+ this.changeDetectorRef = changeDetectorRef;
118
+ }
119
+ ngAfterViewInit() {
120
+ this.viewInit = true;
121
+ merge(this.trigger.menuOpened, this.trigger.menuClosed).subscribe(() => {
122
+ this.menuOpen = this.trigger.menuOpen;
123
+ });
124
+ }
125
+ onMenuClosed() {
126
+ // we set a timeout to wait for the menu to be really closed
127
+ setTimeout(() => this.menuClosed.emit(), 200);
128
+ }
129
+ onMenuOpened() {
130
+ // we set a timeout to wait for the menu to be really opened
131
+ setTimeout(() => this.menuOpened.emit(), 100);
132
+ }
133
+ setHostStyle(placement) {
134
+ const tooltip = this.elementRef.nativeElement;
135
+ const isCustomPosition = !this.elementPosition.x;
136
+ let elementHeight = !this.element.offsetHeight ? this.element.getBoundingClientRect().height : this.element.offsetHeight;
137
+ let elementWidth = !this.element.offsetWidth ? this.element.getBoundingClientRect().width : this.element.offsetWidth;
138
+ const tooltipHeight = tooltip.clientHeight;
139
+ const tooltipWidth = tooltip.clientWidth;
140
+ const scrollY = window.pageYOffset;
141
+ let topStyle;
142
+ let leftStyle;
143
+ if (isCustomPosition) {
144
+ if (placement && placement.split(' ')[0] === 'top') {
145
+ this.below = false;
146
+ }
147
+ if (placement && placement.split(' ')[0] === 'bottom') {
148
+ this.below = true;
149
+ }
150
+ elementHeight = 0;
151
+ elementWidth = 0;
152
+ topStyle = this.elementPosition.top;
153
+ leftStyle = this.elementPosition.left;
154
+ if (this.arrow && this.arrowPosition) {
155
+ this.arrowClass = 'arrow-' + this.arrowPosition;
156
+ switch (this.arrowPosition) {
157
+ case 'left':
158
+ case 'right':
159
+ this.arrowLeftPosition = undefined;
160
+ this.arrowRightPosition = undefined;
161
+ this.arrowBottomPosition = 'auto';
162
+ this.arrowTopPosition = this.arrowOffset + '%';
163
+ break;
164
+ case 'top':
165
+ case 'bottom':
166
+ this.arrowLeftPosition = this.arrowOffset + '%';
167
+ this.arrowRightPosition = 'auto';
168
+ this.arrowBottomPosition = undefined;
169
+ this.arrowTopPosition = undefined;
170
+ break;
171
+ }
172
+ }
173
+ }
174
+ else {
175
+ if (placement.split(' ')[0] === 'top') {
176
+ this.below = false;
177
+ topStyle = this.elementPosition.top - this.tooltipOffset - this.offsetDistance;
178
+ topStyle += 8;
179
+ }
180
+ if (placement.split(' ')[0] === 'bottom') {
181
+ this.below = true;
182
+ topStyle = this.elementPosition.bottom + this.tooltipOffset + this.offsetDistance;
183
+ // We remove 8px due to the margin-top we put to display the arrow.
184
+ topStyle -= 8;
185
+ }
186
+ if (placement.split(' ')[0] === 'left') {
187
+ leftStyle = this.elementPosition.left - tooltipWidth - this.tooltipOffset - this.offsetDistance;
188
+ }
189
+ if (placement.split(' ')[0] === 'right') {
190
+ leftStyle = this.elementPosition.left + elementWidth + this.tooltipOffset + this.offsetDistance;
191
+ }
192
+ if (placement.split(' ')[0] === 'left' || placement.split(' ')[0] === 'right') {
193
+ topStyle = this.elementPosition.top + scrollY + elementHeight / 2 - tooltip.clientHeight / 2;
194
+ }
195
+ if (placement === 'right bottom') {
196
+ this.below = true;
197
+ this.before = false;
198
+ this.arrowClass = 'arrow-left';
199
+ topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;
200
+ this.arrowRightPosition = undefined;
201
+ this.arrowLeftPosition = undefined;
202
+ this.arrowBottomPosition = 'auto';
203
+ this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';
204
+ }
205
+ if (placement === 'left bottom') {
206
+ this.below = true;
207
+ this.before = true;
208
+ this.arrowClass = 'arrow-right';
209
+ topStyle = this.elementPosition.top + scrollY + this.offsetSkidding;
210
+ this.arrowLeftPosition = undefined;
211
+ this.arrowRightPosition = undefined;
212
+ this.arrowBottomPosition = 'auto';
213
+ this.arrowTopPosition = this.arrowOffset ? this.arrowOffset + '%' : elementHeight / 2 + 'px';
214
+ }
215
+ if (placement === 'right top') {
216
+ this.below = false;
217
+ this.before = false;
218
+ this.arrowClass = 'arrow-left';
219
+ topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;
220
+ this.arrowLeftPosition = undefined;
221
+ this.arrowRightPosition = undefined;
222
+ this.arrowTopPosition = 'auto';
223
+ this.arrowBottomPosition = this.arrowOffset ? this.arrowOffset + '%' : -(tooltip.clientHeight - elementHeight / 2) + 'px';
224
+ }
225
+ if (placement === 'left top') {
226
+ this.below = false;
227
+ this.before = true;
228
+ this.arrowClass = 'arrow-right';
229
+ topStyle = this.elementPosition.top + elementHeight + scrollY + this.offsetSkidding;
230
+ this.arrowRightPosition = undefined;
231
+ this.arrowLeftPosition = undefined;
232
+ this.arrowTopPosition = 'auto';
233
+ this.arrowBottomPosition = this.arrowOffset ? this.arrowOffset + '%' : -(tooltip.clientHeight - elementHeight / 2) + 'px';
234
+ }
235
+ if (placement === 'bottom right') {
236
+ this.before = false;
237
+ this.below = true;
238
+ this.arrowClass = 'arrow-top';
239
+ leftStyle = this.elementPosition.left + this.offsetSkidding;
240
+ this.arrowTopPosition = undefined;
241
+ this.arrowRightPosition = 'auto';
242
+ this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';
243
+ }
244
+ if (placement === 'bottom left') {
245
+ this.before = true;
246
+ this.below = true;
247
+ this.arrowClass = 'arrow-top';
248
+ leftStyle = this.elementPosition.right + this.offsetSkidding;
249
+ this.arrowTopPosition = undefined;
250
+ this.arrowLeftPosition = 'auto';
251
+ this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';
252
+ }
253
+ if (placement === 'top right') {
254
+ this.before = false;
255
+ this.below = false;
256
+ this.arrowClass = 'arrow-bottom';
257
+ leftStyle = this.elementPosition.left + this.offsetSkidding;
258
+ this.arrowBottomPosition = undefined;
259
+ this.arrowTopPosition = undefined;
260
+ this.arrowRightPosition = 'auto';
261
+ this.arrowLeftPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 4.5 + 'px';
262
+ }
263
+ if (placement === 'top left') {
264
+ this.before = true;
265
+ this.below = false;
266
+ this.arrowClass = 'arrow-bottom';
267
+ leftStyle = this.elementPosition.right + this.offsetSkidding;
268
+ this.arrowBottomPosition = undefined;
269
+ this.arrowTopPosition = undefined;
270
+ this.arrowLeftPosition = 'auto';
271
+ this.arrowRightPosition = this.arrowOffset ? this.arrowOffset + '%' : elementWidth / 2 - 2.5 + 'px';
272
+ }
273
+ }
274
+ // This line is PURE MAGIC and super important. It allows to force mat-menu
275
+ // to reposition the menu with the new xPosition / yPosition.
276
+ this.changeDetectorRef.detectChanges();
277
+ const topEdge = topStyle;
278
+ const bottomEdge = topStyle + tooltipHeight;
279
+ const leftEdge = leftStyle;
280
+ const rightEdge = leftStyle + tooltipWidth;
281
+ if ((topEdge < 0 || bottomEdge > document.body.clientHeight || leftEdge < 0 || rightEdge > document.body.clientWidth) &&
282
+ this.autoPlacement) {
283
+ return false;
284
+ }
285
+ this.hostStyleTop = topStyle + 'px';
286
+ this.hostStyleLeft = leftStyle + 'px';
287
+ return true;
288
+ }
289
+ setPlacementClass(placement) {
290
+ this.renderer.addClass(this.elementRef.nativeElement, 'tooltip-' + (placement ? placement.split(' ')[0] : placement));
291
+ this.renderer.addClass(this.elementRef.nativeElement, 'yPosition-' + (placement && placement.split(' ').length === 2 ? placement.split(' ')[1] : 'center'));
292
+ if (this.elementRef.nativeElement.children && this.elementRef.nativeElement.children.length > 1) {
293
+ const tooltipArrow = Array.from(this.elementRef.nativeElement.children).filter((child) => child.getAttribute('id') === 'tooltipArrow');
294
+ if (tooltipArrow && tooltipArrow.length === 1) {
295
+ if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'bottom') {
296
+ this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowTopPosition);
297
+ }
298
+ else if (placement && placement.split(' ').length === 2 && placement.split(' ')[1] === 'top') {
299
+ this.renderer.setStyle(tooltipArrow[0], 'top', this.arrowBottomPosition);
300
+ }
301
+ }
302
+ }
303
+ }
304
+ setPosition() {
305
+ if (this.setHostStyle(this.placement)) {
306
+ this.setPlacementClass(this.placement);
307
+ if (this.viewInit) {
308
+ // We did this in order to reset overlayRef (multi web component needed with matmenu and cdk overlay)
309
+ if (this.trigger['_overlayRef']) {
310
+ this.trigger['_overlayRef'].dispose();
311
+ this.trigger['_overlayRef'] = null;
312
+ }
313
+ this.trigger.openMenu();
314
+ }
315
+ return;
316
+ }
317
+ else {
318
+ const placements = ['top', 'right', 'bottom', 'left'];
319
+ for (const placement of placements) {
320
+ if (this.setHostStyle(placement)) {
321
+ this.setPlacementClass(placement);
322
+ if (this.viewInit) {
323
+ this.trigger.openMenu();
324
+ }
325
+ return;
326
+ }
327
+ }
328
+ }
329
+ }
330
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PopmenuComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
331
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: PopmenuComponent, isStandalone: true, selector: "ap-popmenu", inputs: { data: "data", show: "show", close: "close" }, outputs: { menuClosed: "menuClosed", menuOpened: "menuOpened" }, host: { properties: { "style.top": "this.hostStyleTop", "style.border-radius": "this.hostStyleBorderRadius", "style.left": "this.hostStyleLeft", "style.z-index": "this.hostStyleZIndex", "style.transition": "this.hostStyleTransition", "style.width": "this.hostStyleWidth", "style.max-width": "this.hostStyleMaxWidth", "style.pointer-events": "this.hostStylePointerEvents", "class.tooltip-show": "this.hostClassShow", "class.tooltip-shadow": "this.hostClassShadow", "class.tooltip-light": "this.hostClassLight" } }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<button\n id=\"menuTrigger\"\n class=\"button-trigger\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (menuClosed)=\"onMenuClosed()\"\n (menuOpened)=\"onMenuOpened()\"></button>\n<mat-menu\n #menu=\"matMenu\"\n [yPosition]=\"!below ? 'above' : 'below'\"\n [xPosition]=\"!before ? 'after' : 'before'\"\n [overlapTrigger]=\"false\"\n [hasBackdrop]=\"hasBackdrop\"\n [backdropClass]=\"backdropClass\"\n class=\"pop-menu {{ arrow ? 'arrow-before ' + arrowClass : '' }} {{ shadow ? 'shadow' : '' }} {{\n border ? '' : shadow ? 'shadow-no-border' : ''\n }} {{ rounded ? 'rounded-component' : '' }} {{ background ? '' : 'no-background' }} {{ panelClass }}\">\n @if (arrow) {\n <div\n class=\"{{ arrow ? 'arrow-before ' + arrowClass : '' }}\"\n [ngStyle]=\"{ left: arrowLeftPosition, right: arrowRightPosition, top: arrowTopPosition, bottom: arrowBottomPosition }\"></div>\n }\n <div\n class=\"{{ rounded ? 'rounded-component' : '' }} outline-none\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"{{ border ? 'popover-content ' : '' }} {{ rounded ? 'rounded-component' : '' }}\">\n <ng-container *ngTemplateOutlet=\"value; context: { menu: this }\" />\n </div>\n </div>\n</mat-menu>\n", styles: ["[color=facebook]{color:#0866ff}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#0866ff}[border=facebook]{border:1px solid #0866ff}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}.mat-mdc-menu-content{padding:0}.mat-mdc-menu-item{height:inherit;width:inherit;background-color:#fff;padding:0;cursor:default;box-shadow:0 4px 10px #0000001c}.mat-mdc-menu-item:hover{background-color:#fff!important;cursor:default;box-shadow:none!important}.outline-none{outline:none}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background-color:#fff!important;cursor:default;box-shadow:none!important}:host ::ng-deep .mat-mdc-button{max-width:1px;max-height:1px;min-width:1px;min-height:1px;padding:0;margin:0}:host{position:absolute;max-width:1px;max-height:1px;display:flex}.button-trigger{padding:0;border:none;height:1px;width:1px}::ng-deep .no-background .rounded-component{position:fixed}.popover-content{border:1px solid #dfe3e9}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: i1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
332
+ }
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PopmenuComponent, decorators: [{
334
+ type: Component,
335
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-popmenu', standalone: true, imports: [ButtonComponent, MatMenuModule, NgStyle, NgTemplateOutlet], template: "<button\n id=\"menuTrigger\"\n class=\"button-trigger\"\n mat-button\n [matMenuTriggerFor]=\"menu\"\n (menuClosed)=\"onMenuClosed()\"\n (menuOpened)=\"onMenuOpened()\"></button>\n<mat-menu\n #menu=\"matMenu\"\n [yPosition]=\"!below ? 'above' : 'below'\"\n [xPosition]=\"!before ? 'after' : 'before'\"\n [overlapTrigger]=\"false\"\n [hasBackdrop]=\"hasBackdrop\"\n [backdropClass]=\"backdropClass\"\n class=\"pop-menu {{ arrow ? 'arrow-before ' + arrowClass : '' }} {{ shadow ? 'shadow' : '' }} {{\n border ? '' : shadow ? 'shadow-no-border' : ''\n }} {{ rounded ? 'rounded-component' : '' }} {{ background ? '' : 'no-background' }} {{ panelClass }}\">\n @if (arrow) {\n <div\n class=\"{{ arrow ? 'arrow-before ' + arrowClass : '' }}\"\n [ngStyle]=\"{ left: arrowLeftPosition, right: arrowRightPosition, top: arrowTopPosition, bottom: arrowBottomPosition }\"></div>\n }\n <div\n class=\"{{ rounded ? 'rounded-component' : '' }} outline-none\"\n (click)=\"$event.stopPropagation()\">\n <div class=\"{{ border ? 'popover-content ' : '' }} {{ rounded ? 'rounded-component' : '' }}\">\n <ng-container *ngTemplateOutlet=\"value; context: { menu: this }\" />\n </div>\n </div>\n</mat-menu>\n", styles: ["[color=facebook]{color:#0866ff}[bgcolor=facebook],[hcolor=facebook]:hover{background-color:#0866ff}[border=facebook]{border:1px solid #0866ff}[color=google]{color:#4e85e8}[bgcolor=google],[hcolor=google]:hover{background-color:#4e85e8}[border=google]{border:1px solid #4e85e8}[color=instagram]{color:#e1306c}[bgcolor=instagram],[hcolor=instagram]:hover{background-color:#e1306c}[border=instagram]{border:1px solid #e1306c}[color=instagrammagenta]{color:#c13584}[bgcolor=instagrammagenta],[hcolor=instagrammagenta]:hover{background-color:#c13584}[border=instagrammagenta]{border:1px solid #c13584}[color=instagramblue]{color:#5851db}[bgcolor=instagramblue],[hcolor=instagramblue]:hover{background-color:#5851db}[border=instagramblue]{border:1px solid #5851db}[color=instagrampurple]{color:#833ab4}[bgcolor=instagrampurple],[hcolor=instagrampurple]:hover{background-color:#833ab4}[border=instagrampurple]{border:1px solid #833ab4}[color=instagramorange]{color:#f56040}[bgcolor=instagramorange],[hcolor=instagramorange]:hover{background-color:#f56040}[border=instagramorange]{border:1px solid #f56040}[color=instagramyellow]{color:#ffdc80}[bgcolor=instagramyellow],[hcolor=instagramyellow]:hover{background-color:#ffdc80}[border=instagramyellow]{border:1px solid #ffdc80}[color=linkedin]{color:#2c67bc}[bgcolor=linkedin],[hcolor=linkedin]:hover{background-color:#2c67bc}[border=linkedin]{border:1px solid #2c67bc}[color=twitter]{color:#55acee}[bgcolor=twitter],[hcolor=twitter]:hover{background-color:#55acee}[border=twitter]{border:1px solid #55acee}[color=youtube]{color:red}[bgcolor=youtube],[hcolor=youtube]:hover{background-color:red}[border=youtube]{border:1px solid #ff0000}[color=blood-orange]{color:#ff4d00}[bgcolor=blood-orange],[hcolor=blood-orange]:hover{background-color:#ff4d00}[border=blood-orange]{border:1px solid #ff4d00}[color=pinkish-orange]{color:#ff7b49}[bgcolor=pinkish-orange],[hcolor=pinkish-orange]:hover{background-color:#ff7b49}[border=pinkish-orange]{border:1px solid #ff7b49}[color=charcoal-grey]{color:#2a2f34}[bgcolor=charcoal-grey],[hcolor=charcoal-grey]:hover{background-color:#2a2f34}[border=charcoal-grey]{border:1px solid #2a2f34}[color=azure]{color:#00aeef}[bgcolor=azure],[hcolor=azure]:hover{background-color:#00aeef}[border=azure]{border:1px solid #00aeef}[color=light-azure]{color:#eaf5fd}[bgcolor=light-azure],[hcolor=light-azure]:hover{background-color:#eaf5fd}[border=light-azure]{border:1px solid #eaf5fd}[color=blue-grey]{color:#8d98a9}[bgcolor=blue-grey],[hcolor=blue-grey]:hover{background-color:#8d98a9}[border=blue-grey]{border:1px solid #8d98a9}[color=silver]{color:#ced0da}[bgcolor=silver],[hcolor=silver]:hover{background-color:#ced0da}[border=silver]{border:1px solid #ced0da}[color=pale-grey]{color:#dfe3e9}[bgcolor=pale-grey],[hcolor=pale-grey]:hover{background-color:#dfe3e9}[border=pale-grey]{border:1px solid #dfe3e9}[color=grey-white]{color:#f5f7f8}[bgcolor=grey-white],[hcolor=grey-white]:hover{background-color:#f5f7f8}[border=grey-white]{border:1px solid #f5f7f8}[color=cool-grey]{color:#b4bbc6}[bgcolor=cool-grey],[hcolor=cool-grey]:hover{background-color:#b4bbc6}[border=cool-grey]{border:1px solid #b4bbc6}[color=black]{color:#344563}[bgcolor=black],[hcolor=black]:hover{background-color:#344563}[border=black]{border:1px solid #344563}[color=grey-blue]{color:#68768c}[bgcolor=grey-blue],[hcolor=grey-blue]:hover{background-color:#68768c}[border=grey-blue]{border:1px solid #68768c}[color=strawberry]{color:#f4282d}[bgcolor=strawberry],[hcolor=strawberry]:hover{background-color:#f4282d}[border=strawberry]{border:1px solid #f4282d}[color=light-strawberry]{color:#f8eded}[bgcolor=light-strawberry],[hcolor=light-strawberry]:hover{background-color:#f8eded}[border=light-strawberry]{border:1px solid #f8eded}[color=white]{color:#fff}[bgcolor=white],[hcolor=white]:hover{background-color:#fff}[border=white]{border:1px solid #ffffff}[color=cool-green]{color:#33c15d}[bgcolor=cool-green],[hcolor=cool-green]:hover{background-color:#33c15d}[border=cool-green]{border:1px solid #33c15d}[color=light-green]{color:#ebfaef}[bgcolor=light-green],[hcolor=light-green]:hover{background-color:#ebfaef}[border=light-green]{border:1px solid #ebfaef}[color=transparent]{color:transparent}[bgcolor=transparent],[hcolor=transparent]:hover{background-color:transparent}[border=transparent]{border:1px solid transparent}[color=c0]{color:#a566a5}[bgcolor=c0],[hcolor=c0]:hover{background-color:#a566a5}[border=c0]{border:1px solid #a566a5}[color=c1]{color:#c7ab82}[bgcolor=c1],[hcolor=c1]:hover{background-color:#c7ab82}[border=c1]{border:1px solid #c7ab82}[color=c2]{color:#f2713c}[bgcolor=c2],[hcolor=c2]:hover{background-color:#f2713c}[border=c2]{border:1px solid #f2713c}[color=c3]{color:#ffd006}[bgcolor=c3],[hcolor=c3]:hover{background-color:#ffd006}[border=c3]{border:1px solid #ffd006}[color=c4]{color:#94c5aa}[bgcolor=c4],[hcolor=c4]:hover{background-color:#94c5aa}[border=c4]{border:1px solid #94c5aa}[color=c5]{color:#2a9d8f}[bgcolor=c5],[hcolor=c5]:hover{background-color:#2a9d8f}[border=c5]{border:1px solid #2a9d8f}[color=c6]{color:#78acd8}[bgcolor=c6],[hcolor=c6]:hover{background-color:#78acd8}[border=c6]{border:1px solid #78acd8}[color=c7]{color:#525a9e}[bgcolor=c7],[hcolor=c7]:hover{background-color:#525a9e}[border=c7]{border:1px solid #525a9e}[color=c8]{color:#6a2459}[bgcolor=c8],[hcolor=c8]:hover{background-color:#6a2459}[border=c8]{border:1px solid #6a2459}[color=c9]{color:#74729e}[bgcolor=c9],[hcolor=c9]:hover{background-color:#74729e}[border=c9]{border:1px solid #74729e}.mat-mdc-menu-content{padding:0}.mat-mdc-menu-item{height:inherit;width:inherit;background-color:#fff;padding:0;cursor:default;box-shadow:0 4px 10px #0000001c}.mat-mdc-menu-item:hover{background-color:#fff!important;cursor:default;box-shadow:none!important}.outline-none{outline:none}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background-color:#fff!important;cursor:default;box-shadow:none!important}:host ::ng-deep .mat-mdc-button{max-width:1px;max-height:1px;min-width:1px;min-height:1px;padding:0;margin:0}:host{position:absolute;max-width:1px;max-height:1px;display:flex}.button-trigger{padding:0;border:none;height:1px;width:1px}::ng-deep .no-background .rounded-component{position:fixed}.popover-content{border:1px solid #dfe3e9}\n"] }]
336
+ }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { data: [{
337
+ type: Input
338
+ }], menuClosed: [{
339
+ type: Output
340
+ }], menuOpened: [{
341
+ type: Output
342
+ }], trigger: [{
343
+ type: ViewChild,
344
+ args: [MatMenuTrigger]
345
+ }], hostStyleTop: [{
346
+ type: HostBinding,
347
+ args: ['style.top']
348
+ }], hostStyleBorderRadius: [{
349
+ type: HostBinding,
350
+ args: ['style.border-radius']
351
+ }], hostStyleLeft: [{
352
+ type: HostBinding,
353
+ args: ['style.left']
354
+ }], hostStyleZIndex: [{
355
+ type: HostBinding,
356
+ args: ['style.z-index']
357
+ }], hostStyleTransition: [{
358
+ type: HostBinding,
359
+ args: ['style.transition']
360
+ }], hostStyleWidth: [{
361
+ type: HostBinding,
362
+ args: ['style.width']
363
+ }], hostStyleMaxWidth: [{
364
+ type: HostBinding,
365
+ args: ['style.max-width']
366
+ }], hostStylePointerEvents: [{
367
+ type: HostBinding,
368
+ args: ['style.pointer-events']
369
+ }], hostClassShow: [{
370
+ type: HostBinding,
371
+ args: ['class.tooltip-show']
372
+ }], hostClassShadow: [{
373
+ type: HostBinding,
374
+ args: ['class.tooltip-shadow']
375
+ }], hostClassLight: [{
376
+ type: HostBinding,
377
+ args: ['class.tooltip-light']
378
+ }], show: [{
379
+ type: Input
380
+ }], close: [{
381
+ type: Input
382
+ }] } });
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcG9wbWVudS9zcmMvcG9wbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvcG9wbWVudS9zcmMvcG9wbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFFSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFVN0IsTUFBTSxPQUFPLGdCQUFnQjtJQWtJZDtJQUNBO0lBQ0M7SUFuSUgsSUFBSSxDQUFNO0lBQ25CLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzVCLGdCQUFnQixHQUF1QixLQUFLLENBQUM7SUFDN0MsbUJBQW1CLEdBQXVCLEtBQUssQ0FBQztJQUNoRCxpQkFBaUIsR0FBdUIsU0FBUyxDQUFDO0lBQ2xELGtCQUFrQixHQUF1QixTQUFTLENBQUM7SUFDbkQsVUFBVSxHQUF1QixTQUFTLENBQUM7SUFDM0MsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNkLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDTCxVQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFDeEQsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBa0I7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LGFBQWE7c0JBQXZDLFdBQVc7dUJBQUMsWUFBWTtnQkFDSyxlQUFlO3NCQUE1QyxXQUFXO3VCQUFDLGVBQWU7Z0JBQ0ssbUJBQW1CO3NCQUFuRCxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDSCxjQUFjO3NCQUF6QyxXQUFXO3VCQUFDLGFBQWE7Z0JBQ00saUJBQWlCO3NCQUFoRCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFDTyxzQkFBc0I7c0JBQTFELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUNBLGFBQWE7c0JBQS9DLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNJLGVBQWU7c0JBQW5ELFdBQVc7dUJBQUMsc0JBQXNCO2dCQUNDLGNBQWM7c0JBQWpELFdBQVc7dUJBQUMscUJBQXFCO2dCQVNyQixJQUFJO3NCQUFoQixLQUFLO2dCQU9PLEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSwgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXAtcG9wbWVudScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcG1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3BvcG1lbnUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtCdXR0b25Db21wb25lbnQsIE1hdE1lbnVNb2R1bGUsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBQb3BtZW51Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgZGF0YTogYW55O1xuICAgIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBhcnJvd1RvcFBvc2l0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnNTAlJztcbiAgICBhcnJvd0JvdHRvbVBvc2l0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnNTAlJztcbiAgICBhcnJvd0xlZnRQb3NpdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGFycm93UmlnaHRQb3NpdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGFycm93Q2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBiZWxvdyA9IGZhbHNlO1xuICAgIGJlZm9yZSA9IGZhbHNlO1xuICAgIEBPdXRwdXQoKSBtZW51Q2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBtZW51T3BlbmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBWaWV3Q2hpbGQoTWF0TWVudVRyaWdnZXIpIHRyaWdnZXIhOiBNYXRNZW51VHJpZ2dlcjtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRvcCcpIGhvc3RTdHlsZVRvcCA9ICcnO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuYm9yZGVyLXJhZGl1cycpIGhvc3RTdHlsZUJvcmRlclJhZGl1cyA9ICcnO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUubGVmdCcpIGhvc3RTdHlsZUxlZnQgPSAnJztcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLnotaW5kZXgnKSBob3N0U3R5bGVaSW5kZXggPSAwO1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUudHJhbnNpdGlvbicpIGhvc3RTdHlsZVRyYW5zaXRpb24gPSAnJztcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJykgaG9zdFN0eWxlV2lkdGggPSAnJztcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC13aWR0aCcpIGhvc3RTdHlsZU1heFdpZHRoID0gJyc7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb2ludGVyLWV2ZW50cycpIGhvc3RTdHlsZVBvaW50ZXJFdmVudHMgPSAnJztcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtc2hvdycpIGhvc3RDbGFzc1Nob3cgPSBmYWxzZTtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRvb2x0aXAtc2hhZG93JykgaG9zdENsYXNzU2hhZG93ID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50b29sdGlwLWxpZ2h0JykgaG9zdENsYXNzTGlnaHQgPSBmYWxzZTtcbiAgICB2aWV3SW5pdCA9IGZhbHNlO1xuXG4gICAgX3Nob3cgPSBmYWxzZTtcblxuICAgIGdldCBzaG93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvdztcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgc2hvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zaG93ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgc2V0IGNsb3NlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyLmNsb3NlTWVudSgpO1xuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1lbnVPcGVuID0gZmFsc2U7XG5cbiAgICBnZXQgYXJyb3coKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5hcnJvdyAmJiB0aGlzLmJvcmRlcjtcbiAgICB9XG5cbiAgICBnZXQgYXJyb3dPZmZzZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5hcnJvd09mZnNldDtcbiAgICB9XG5cbiAgICBnZXQgYXJyb3dQb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLmFycm93UG9zaXRpb247XG4gICAgfVxuXG4gICAgZ2V0IGF1dG9QbGFjZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5hdXRvUGxhY2VtZW50O1xuICAgIH1cblxuICAgIGdldCBiYWNrZ3JvdW5kKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYXBQb3BtZW51QmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICBnZXQgYm9yZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuYXBQb3BtZW51Qm9yZGVyO1xuICAgIH1cblxuICAgIGdldCBlbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGVsZW1lbnRQb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5lbGVtZW50UG9zaXRpb247XG4gICAgfVxuXG4gICAgZ2V0IGhhc0JhY2tkcm9wKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm9wdGlvbnMuaGFzQmFja2Ryb3A7XG4gICAgfVxuXG4gICAgZ2V0IGJhY2tkcm9wQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucy5iYWNrZHJvcENsYXNzO1xuICAgIH1cblxuICAgIGdldCBpc1RoZW1lTGlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbJ3RoZW1lJ10gPT09ICdsaWdodCc7XG4gICAgfVxuXG4gICAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEub3B0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgcGFuZWxDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLnBhbmVsQ2xhc3M7XG4gICAgfVxuXG4gICAgZ2V0IHBsYWNlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLnBsYWNlbWVudDtcbiAgICB9XG5cbiAgICBnZXQgcm91bmRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLnJvdW5kZWQ7XG4gICAgfVxuXG4gICAgZ2V0IHNoYWRvdygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5vcHRpb25zLnNoYWRvdztcbiAgICB9XG5cbiAgICBnZXQgdG9vbHRpcE9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGF0YS5vcHRpb25zLm9mZnNldCk7XG4gICAgfVxuXG4gICAgZ2V0IG9mZnNldFNraWRkaW5nKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5kYXRhLm9wdGlvbnMub2Zmc2V0cy5za2lkZGluZykgfHwgMDtcbiAgICB9XG5cbiAgICBnZXQgb2Zmc2V0RGlzdGFuY2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih0aGlzLmRhdGEub3B0aW9ucy5vZmZzZXRzLmRpc3RhbmNlIHx8IDApO1xuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS52YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMudmlld0luaXQgPSB0cnVlO1xuICAgICAgICBtZXJnZSh0aGlzLnRyaWdnZXIubWVudU9wZW5lZCwgdGhpcy50cmlnZ2VyLm1lbnVDbG9zZWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1lbnVPcGVuID0gdGhpcy50cmlnZ2VyLm1lbnVPcGVuO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk1lbnVDbG9zZWQoKSB7XG4gICAgICAgIC8vIHdlIHNldCBhIHRpbWVvdXQgdG8gd2FpdCBmb3IgdGhlIG1lbnUgdG8gYmUgcmVhbGx5IGNsb3NlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubWVudUNsb3NlZC5lbWl0KCksIDIwMCk7XG4gICAgfVxuXG4gICAgb25NZW51T3BlbmVkKCkge1xuICAgICAgICAvLyB3ZSBzZXQgYSB0aW1lb3V0IHRvIHdhaXQgZm9yIHRoZSBtZW51IHRvIGJlIHJlYWxseSBvcGVuZWRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLm1lbnVPcGVuZWQuZW1pdCgpLCAxMDApO1xuICAgIH1cblxuICAgIHNldEhvc3RTdHlsZShwbGFjZW1lbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0b29sdGlwID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGlzQ3VzdG9tUG9zaXRpb24gPSAhdGhpcy5lbGVtZW50UG9zaXRpb24ueDtcblxuICAgICAgICBsZXQgZWxlbWVudEhlaWdodCA9ICF0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0ID8gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGxldCBlbGVtZW50V2lkdGggPSAhdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoID8gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIDogdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCB0b29sdGlwSGVpZ2h0ID0gdG9vbHRpcC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHRvb2x0aXBXaWR0aCA9IHRvb2x0aXAuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG5cbiAgICAgICAgbGV0IHRvcFN0eWxlO1xuICAgICAgICBsZXQgbGVmdFN0eWxlO1xuXG4gICAgICAgIGlmIChpc0N1c3RvbVBvc2l0aW9uKSB7XG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ICYmIHBsYWNlbWVudC5zcGxpdCgnICcpWzBdID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnNwbGl0KCcgJylbMF0gPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGVtZW50SGVpZ2h0ID0gMDtcbiAgICAgICAgICAgIGVsZW1lbnRXaWR0aCA9IDA7XG4gICAgICAgICAgICB0b3BTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcDtcbiAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgICAgICBpZiAodGhpcy5hcnJvdyAmJiB0aGlzLmFycm93UG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctJyArIHRoaXMuYXJyb3dQb3NpdGlvbjtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuYXJyb3dQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCArICclJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHRoaXMuYXJyb3dPZmZzZXQgKyAnJSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFycm93UmlnaHRQb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdG9wU3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi50b3AgLSB0aGlzLnRvb2x0aXBPZmZzZXQgLSB0aGlzLm9mZnNldERpc3RhbmNlO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlICs9IDg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0b3BTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmJvdHRvbSArIHRoaXMudG9vbHRpcE9mZnNldCArIHRoaXMub2Zmc2V0RGlzdGFuY2U7XG4gICAgICAgICAgICAgICAgLy8gV2UgcmVtb3ZlIDhweCBkdWUgdG8gdGhlIG1hcmdpbi10b3Agd2UgcHV0IHRvIGRpc3BsYXkgdGhlIGFycm93LlxuICAgICAgICAgICAgICAgIHRvcFN0eWxlIC09IDg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ubGVmdCAtIHRvb2x0aXBXaWR0aCAtIHRoaXMudG9vbHRpcE9mZnNldCAtIHRoaXMub2Zmc2V0RGlzdGFuY2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgIGxlZnRTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLmxlZnQgKyBlbGVtZW50V2lkdGggKyB0aGlzLnRvb2x0aXBPZmZzZXQgKyB0aGlzLm9mZnNldERpc3RhbmNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50LnNwbGl0KCcgJylbMF0gPT09ICdsZWZ0JyB8fCBwbGFjZW1lbnQuc3BsaXQoJyAnKVswXSA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSArIGVsZW1lbnRIZWlnaHQgLyAyIC0gdG9vbHRpcC5jbGllbnRIZWlnaHQgLyAyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAncmlnaHQgYm90dG9tJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0NsYXNzID0gJ2Fycm93LWxlZnQnO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgc2Nyb2xsWSArIHRoaXMub2Zmc2V0U2tpZGRpbmc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/IHRoaXMuYXJyb3dPZmZzZXQgKyAnJScgOiBlbGVtZW50SGVpZ2h0IC8gMiArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdsZWZ0IGJvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0NsYXNzID0gJ2Fycm93LXJpZ2h0JztcbiAgICAgICAgICAgICAgICB0b3BTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIHNjcm9sbFkgKyB0aGlzLm9mZnNldFNraWRkaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHRoaXMuYXJyb3dPZmZzZXQgPyB0aGlzLmFycm93T2Zmc2V0ICsgJyUnIDogZWxlbWVudEhlaWdodCAvIDIgKyAncHgnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAncmlnaHQgdG9wJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dDbGFzcyA9ICdhcnJvdy1sZWZ0JztcbiAgICAgICAgICAgICAgICB0b3BTdHlsZSA9IHRoaXMuZWxlbWVudFBvc2l0aW9uLnRvcCArIGVsZW1lbnRIZWlnaHQgKyBzY3JvbGxZICsgdGhpcy5vZmZzZXRTa2lkZGluZztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gdGhpcy5hcnJvd09mZnNldCArICclJyA6IC0odG9vbHRpcC5jbGllbnRIZWlnaHQgLSBlbGVtZW50SGVpZ2h0IC8gMikgKyAncHgnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAnbGVmdCB0b3AnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVmb3JlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctcmlnaHQnO1xuICAgICAgICAgICAgICAgIHRvcFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24udG9wICsgZWxlbWVudEhlaWdodCArIHNjcm9sbFkgKyB0aGlzLm9mZnNldFNraWRkaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbiA9IHRoaXMuYXJyb3dPZmZzZXQgPyB0aGlzLmFycm93T2Zmc2V0ICsgJyUnIDogLSh0b29sdGlwLmNsaWVudEhlaWdodCAtIGVsZW1lbnRIZWlnaHQgLyAyKSArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdib3R0b20gcmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJlbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctdG9wJztcbiAgICAgICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0ICsgdGhpcy5vZmZzZXRTa2lkZGluZztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93VG9wUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1JpZ2h0UG9zaXRpb24gPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0xlZnRQb3NpdGlvbiA9IHRoaXMuYXJyb3dPZmZzZXQgPyB0aGlzLmFycm93T2Zmc2V0ICsgJyUnIDogZWxlbWVudFdpZHRoIC8gMiAtIDQuNSArICdweCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgPT09ICdib3R0b20gbGVmdCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0NsYXNzID0gJ2Fycm93LXRvcCc7XG4gICAgICAgICAgICAgICAgbGVmdFN0eWxlID0gdGhpcy5lbGVtZW50UG9zaXRpb24ucmlnaHQgKyB0aGlzLm9mZnNldFNraWRkaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/IHRoaXMuYXJyb3dPZmZzZXQgKyAnJScgOiBlbGVtZW50V2lkdGggLyAyIC0gMi41ICsgJ3B4JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PT0gJ3RvcCByaWdodCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctYm90dG9tJztcbiAgICAgICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5sZWZ0ICsgdGhpcy5vZmZzZXRTa2lkZGluZztcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Qm90dG9tUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd1RvcFBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dMZWZ0UG9zaXRpb24gPSB0aGlzLmFycm93T2Zmc2V0ID8gdGhpcy5hcnJvd09mZnNldCArICclJyA6IGVsZW1lbnRXaWR0aCAvIDIgLSA0LjUgKyAncHgnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGxhY2VtZW50ID09PSAndG9wIGxlZnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWZvcmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYmVsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93Q2xhc3MgPSAnYXJyb3ctYm90dG9tJztcbiAgICAgICAgICAgICAgICBsZWZ0U3R5bGUgPSB0aGlzLmVsZW1lbnRQb3NpdGlvbi5yaWdodCArIHRoaXMub2Zmc2V0U2tpZGRpbmc7XG4gICAgICAgICAgICAgICAgdGhpcy5hcnJvd0JvdHRvbVBvc2l0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dUb3BQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFycm93TGVmdFBvc2l0aW9uID0gJ2F1dG8nO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJyb3dSaWdodFBvc2l0aW9uID0gdGhpcy5hcnJvd09mZnNldCA/IHRoaXMuYXJyb3dPZmZzZXQgKyAnJScgOiBlbGVtZW50V2lkdGggLyAyIC0gMi41ICsgJ3B4JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoaXMgbGluZSBpcyBQVVJFIE1BR0lDIGFuZCBzdXBlciBpbXBvcnRhbnQuIEl0IGFsbG93cyB0byBmb3JjZSBtYXQtbWVudVxuICAgICAgICAvLyB0byByZXBvc2l0aW9uIHRoZSBtZW51IHdpdGggdGhlIG5ldyB4UG9zaXRpb24gLyB5UG9zaXRpb24uXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGNvbnN0IHRvcEVkZ2UgPSB0b3BTdHlsZTtcbiAgICAgICAgY29uc3QgYm90dG9tRWRnZSA9IHRvcFN0eWxlICsgdG9vbHRpcEhlaWdodDtcbiAgICAgICAgY29uc3QgbGVmdEVkZ2UgPSBsZWZ0U3R5bGU7XG4gICAgICAgIGNvbnN0IHJpZ2h0RWRnZSA9IGxlZnRTdHlsZSArIHRvb2x0aXBXaWR0aDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodG9wRWRnZSA8IDAgfHwgYm90dG9tRWRnZSA+IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0IHx8IGxlZnRFZGdlIDwgMCB8fCByaWdodEVkZ2UgPiBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKSAmJlxuICAgICAgICAgICAgdGhpcy5hdXRvUGxhY2VtZW50XG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ob3N0U3R5bGVUb3AgPSB0b3BTdHlsZSArICdweCc7XG4gICAgICAgIHRoaXMuaG9zdFN0eWxlTGVmdCA9IGxlZnRTdHlsZSArICdweCc7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHNldFBsYWNlbWVudENsYXNzKHBsYWNlbWVudD86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG9vbHRpcC0nICsgKHBsYWNlbWVudCA/IHBsYWNlbWVudC5zcGxpdCgnICcpWzBdIDogcGxhY2VtZW50KSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd5UG9zaXRpb24tJyArIChwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnNwbGl0KCcgJykubGVuZ3RoID09PSAyID8gcGxhY2VtZW50LnNwbGl0KCcgJylbMV0gOiAnY2VudGVyJylcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4gJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgdG9vbHRpcEFycm93ID0gQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbikuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjaGlsZDogRWxlbWVudCkgPT4gY2hpbGQuZ2V0QXR0cmlidXRlKCdpZCcpID09PSAndG9vbHRpcEFycm93J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICh0b29sdGlwQXJyb3cgJiYgdG9vbHRpcEFycm93Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGlmIChwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnNwbGl0KCcgJykubGVuZ3RoID09PSAyICYmIHBsYWNlbWVudC5zcGxpdCgnICcpWzFdID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRvb2x0aXBBcnJvd1swXSwgJ3RvcCcsIHRoaXMuYXJyb3dUb3BQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnNwbGl0KCcgJykubGVuZ3RoID09PSAyICYmIHBsYWNlbWVudC5zcGxpdCgnICcpWzFdID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRvb2x0aXBBcnJvd1swXSwgJ3RvcCcsIHRoaXMuYXJyb3dCb3R0b21Qb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0UG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNldEhvc3RTdHlsZSh0aGlzLnBsYWNlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0UGxhY2VtZW50Q2xhc3ModGhpcy5wbGFjZW1lbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMudmlld0luaXQpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBkaWQgdGhpcyBpbiBvcmRlciB0byByZXNldCBvdmVybGF5UmVmIChtdWx0aSB3ZWIgY29tcG9uZW50IG5lZWRlZCB3aXRoIG1hdG1lbnUgYW5kIGNkayBvdmVybGF5KVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyaWdnZXJbJ19vdmVybGF5UmVmJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyWydfb3ZlcmxheVJlZiddLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyWydfb3ZlcmxheVJlZiddID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyLm9wZW5NZW51KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwbGFjZW1lbnRzID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBwbGFjZW1lbnQgb2YgcGxhY2VtZW50cykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNldEhvc3RTdHlsZShwbGFjZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UGxhY2VtZW50Q2xhc3MocGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0luaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlci5vcGVuTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8YnV0dG9uXG4gICAgaWQ9XCJtZW51VHJpZ2dlclwiXG4gICAgY2xhc3M9XCJidXR0b24tdHJpZ2dlclwiXG4gICAgbWF0LWJ1dHRvblxuICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAobWVudUNsb3NlZCk9XCJvbk1lbnVDbG9zZWQoKVwiXG4gICAgKG1lbnVPcGVuZWQpPVwib25NZW51T3BlbmVkKClcIj48L2J1dHRvbj5cbjxtYXQtbWVudVxuICAgICNtZW51PVwibWF0TWVudVwiXG4gICAgW3lQb3NpdGlvbl09XCIhYmVsb3cgPyAnYWJvdmUnIDogJ2JlbG93J1wiXG4gICAgW3hQb3NpdGlvbl09XCIhYmVmb3JlID8gJ2FmdGVyJyA6ICdiZWZvcmUnXCJcbiAgICBbb3ZlcmxhcFRyaWdnZXJdPVwiZmFsc2VcIlxuICAgIFtoYXNCYWNrZHJvcF09XCJoYXNCYWNrZHJvcFwiXG4gICAgW2JhY2tkcm9wQ2xhc3NdPVwiYmFja2Ryb3BDbGFzc1wiXG4gICAgY2xhc3M9XCJwb3AtbWVudSB7eyBhcnJvdyA/ICdhcnJvdy1iZWZvcmUgJyArIGFycm93Q2xhc3MgOiAnJyB9fSB7eyBzaGFkb3cgPyAnc2hhZG93JyA6ICcnIH19IHt7XG4gICAgICAgIGJvcmRlciA/ICcnIDogc2hhZG93ID8gJ3NoYWRvdy1uby1ib3JkZXInIDogJydcbiAgICB9fSB7eyByb3VuZGVkID8gJ3JvdW5kZWQtY29tcG9uZW50JyA6ICcnIH19IHt7IGJhY2tncm91bmQgPyAnJyA6ICduby1iYWNrZ3JvdW5kJyB9fSB7eyBwYW5lbENsYXNzIH19XCI+XG4gICAgQGlmIChhcnJvdykge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInt7IGFycm93ID8gJ2Fycm93LWJlZm9yZSAnICsgYXJyb3dDbGFzcyA6ICcnIH19XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogYXJyb3dMZWZ0UG9zaXRpb24sIHJpZ2h0OiBhcnJvd1JpZ2h0UG9zaXRpb24sIHRvcDogYXJyb3dUb3BQb3NpdGlvbiwgYm90dG9tOiBhcnJvd0JvdHRvbVBvc2l0aW9uIH1cIj48L2Rpdj5cbiAgICB9XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInt7IHJvdW5kZWQgPyAncm91bmRlZC1jb21wb25lbnQnIDogJycgfX0gb3V0bGluZS1ub25lXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwie3sgYm9yZGVyID8gJ3BvcG92ZXItY29udGVudCAnIDogJycgfX0ge3sgcm91bmRlZCA/ICdyb3VuZGVkLWNvbXBvbmVudCcgOiAnJyB9fVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZhbHVlOyBjb250ZXh0OiB7IG1lbnU6IHRoaXMgfVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9tYXQtbWVudT5cbiJdfQ==