monkey-style-guide 2.0.177 → 2.0.178

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 (604) hide show
  1. package/README.md +1281 -1280
  2. package/assets/data/country-codes.json +1466 -1466
  3. package/assets/icons/add-plus.svg +5 -5
  4. package/assets/icons/address-book.svg +4 -4
  5. package/assets/icons/arrow-down.svg +3 -3
  6. package/assets/icons/arrow-left.svg +3 -3
  7. package/assets/icons/arrow-line-right.svg +5 -5
  8. package/assets/icons/arrow-right.svg +3 -3
  9. package/assets/icons/arrow-up.svg +3 -3
  10. package/assets/icons/arrows.svg +6 -6
  11. package/assets/icons/auction.svg +7 -7
  12. package/assets/icons/average-tax.svg +6 -6
  13. package/assets/icons/bank-account.svg +12 -12
  14. package/assets/icons/bank-agency.svg +8 -8
  15. package/assets/icons/bank.svg +3 -3
  16. package/assets/icons/banknote-search.svg +8 -8
  17. package/assets/icons/bell.svg +4 -4
  18. package/assets/icons/block.svg +4 -4
  19. package/assets/icons/book-open-text.svg +10 -10
  20. package/assets/icons/book.svg +4 -4
  21. package/assets/icons/box.svg +6 -6
  22. package/assets/icons/build-approved.svg +9 -9
  23. package/assets/icons/build-person.svg +9 -9
  24. package/assets/icons/build-refused.svg +9 -9
  25. package/assets/icons/build-waiting.svg +8 -8
  26. package/assets/icons/calendar-box.svg +10 -10
  27. package/assets/icons/calendar.svg +6 -6
  28. package/assets/icons/camera.svg +4 -4
  29. package/assets/icons/card-machine.svg +14 -14
  30. package/assets/icons/card.svg +4 -4
  31. package/assets/icons/cash-banknote-invoice.svg +8 -8
  32. package/assets/icons/chat.svg +4 -4
  33. package/assets/icons/check-circle-out.svg +4 -4
  34. package/assets/icons/check-circle.svg +4 -4
  35. package/assets/icons/check-grey.svg +3 -3
  36. package/assets/icons/check-white.svg +4 -4
  37. package/assets/icons/check.svg +3 -3
  38. package/assets/icons/clipboard.svg +4 -4
  39. package/assets/icons/clock-closed.svg +6 -6
  40. package/assets/icons/clock.svg +4 -4
  41. package/assets/icons/close-circle.svg +5 -5
  42. package/assets/icons/close.svg +4 -4
  43. package/assets/icons/cnpj.svg +9 -9
  44. package/assets/icons/codepen.svg +7 -7
  45. package/assets/icons/company-name.svg +12 -12
  46. package/assets/icons/contract-pen.svg +7 -7
  47. package/assets/icons/contract.svg +14 -14
  48. package/assets/icons/delete.svg +5 -5
  49. package/assets/icons/document.svg +7 -7
  50. package/assets/icons/dollar-sign-circle.svg +7 -7
  51. package/assets/icons/dollar-sign.svg +5 -5
  52. package/assets/icons/domain.svg +9 -9
  53. package/assets/icons/dots-menu.svg +5 -5
  54. package/assets/icons/double-arrow-left.svg +4 -4
  55. package/assets/icons/double-arrow-right.svg +4 -4
  56. package/assets/icons/download.svg +5 -5
  57. package/assets/icons/drag-drop.svg +8 -8
  58. package/assets/icons/edit-square.svg +4 -4
  59. package/assets/icons/edit.svg +3 -3
  60. package/assets/icons/email-send-fast.svg +8 -8
  61. package/assets/icons/email.svg +4 -4
  62. package/assets/icons/empty-doc.svg +4 -4
  63. package/assets/icons/error.svg +5 -5
  64. package/assets/icons/eye-closed.svg +11 -11
  65. package/assets/icons/eye-open.svg +4 -4
  66. package/assets/icons/filter-add.svg +6 -6
  67. package/assets/icons/filter.svg +3 -3
  68. package/assets/icons/grid.svg +6 -6
  69. package/assets/icons/hands-clap.svg +10 -10
  70. package/assets/icons/help.svg +5 -5
  71. package/assets/icons/hexagon.svg +3 -3
  72. package/assets/icons/home.svg +4 -4
  73. package/assets/icons/image.svg +5 -5
  74. package/assets/icons/info.svg +6 -6
  75. package/assets/icons/invoice.svg +5 -5
  76. package/assets/icons/invoices-anticipated.svg +8 -8
  77. package/assets/icons/invoices-approval.svg +8 -8
  78. package/assets/icons/invoices-refused.svg +8 -8
  79. package/assets/icons/lighting-circle.svg +5 -5
  80. package/assets/icons/list.svg +8 -8
  81. package/assets/icons/location-pin.svg +4 -4
  82. package/assets/icons/login.svg +5 -5
  83. package/assets/icons/logout.svg +5 -5
  84. package/assets/icons/mail-open-document.svg +6 -0
  85. package/assets/icons/medal.svg +12 -12
  86. package/assets/icons/menu.svg +5 -5
  87. package/assets/icons/money-cedule.svg +6 -6
  88. package/assets/icons/money-discount.svg +8 -8
  89. package/assets/icons/money-hand.svg +6 -6
  90. package/assets/icons/money-net.svg +8 -8
  91. package/assets/icons/money-new.svg +7 -7
  92. package/assets/icons/money-percent.svg +10 -10
  93. package/assets/icons/money-refused.svg +9 -9
  94. package/assets/icons/money-sign.svg +4 -4
  95. package/assets/icons/money-waiting.svg +8 -8
  96. package/assets/icons/money.svg +6 -6
  97. package/assets/icons/more-circle.svg +5 -5
  98. package/assets/icons/more.svg +4 -4
  99. package/assets/icons/new-company.svg +10 -10
  100. package/assets/icons/offered.svg +5 -5
  101. package/assets/icons/office-work.svg +10 -10
  102. package/assets/icons/open-external.svg +5 -5
  103. package/assets/icons/password.svg +4 -4
  104. package/assets/icons/people.svg +6 -6
  105. package/assets/icons/percent-box.svg +6 -6
  106. package/assets/icons/percent.svg +5 -5
  107. package/assets/icons/person-document.svg +10 -10
  108. package/assets/icons/person-sad.svg +6 -6
  109. package/assets/icons/phone-call.svg +4 -4
  110. package/assets/icons/phone.svg +3 -3
  111. package/assets/icons/pin-navigation.svg +5 -5
  112. package/assets/icons/pork.svg +5 -5
  113. package/assets/icons/radio.svg +4 -4
  114. package/assets/icons/refresh.svg +5 -5
  115. package/assets/icons/registration.svg +8 -8
  116. package/assets/icons/repeat.svg +4 -4
  117. package/assets/icons/search.svg +4 -4
  118. package/assets/icons/second-warning.svg +5 -5
  119. package/assets/icons/settings.svg +4 -4
  120. package/assets/icons/shield-chekmark.svg +3 -3
  121. package/assets/icons/star-shining.svg +13 -13
  122. package/assets/icons/star.svg +3 -3
  123. package/assets/icons/store.svg +8 -8
  124. package/assets/icons/target-dart-arrow.svg +6 -6
  125. package/assets/icons/today.svg +9 -9
  126. package/assets/icons/trash.svg +6 -6
  127. package/assets/icons/trophy.svg +8 -8
  128. package/assets/icons/unfold-more.svg +4 -4
  129. package/assets/icons/upload.svg +5 -5
  130. package/assets/icons/user-group.svg +8 -8
  131. package/assets/icons/user.svg +4 -4
  132. package/assets/icons/waiting.svg +17 -17
  133. package/assets/icons/wallet.svg +5 -5
  134. package/assets/icons/warning.svg +5 -5
  135. package/assets/scss/partials/_breakpoints.scss +35 -35
  136. package/assets/scss/partials/_forms.scss +350 -350
  137. package/assets/scss/partials/_index.scss +11 -11
  138. package/assets/scss/partials/_radio-button.scss +35 -35
  139. package/assets/scss/partials/_style-reset.scss +185 -185
  140. package/assets/scss/partials/_typography.scss +149 -149
  141. package/assets/scss/partials/_variables.scss +184 -184
  142. package/assets/scss/partials/components/_badge.scss +55 -55
  143. package/assets/scss/partials/components/_buttons.scss +831 -831
  144. package/assets/scss/partials/components/_checkbox.scss +69 -69
  145. package/assets/scss/partials/components/_date-range-picker.scss +265 -265
  146. package/assets/scss/partials/components/_expansion.scss +96 -96
  147. package/assets/scss/partials/components/_image-crop.scss +305 -305
  148. package/assets/scss/partials/components/_index.scss +23 -23
  149. package/assets/scss/partials/components/_input-phone.scss +36 -36
  150. package/assets/scss/partials/components/_input.scss +65 -65
  151. package/assets/scss/partials/components/_modal.scss +282 -282
  152. package/assets/scss/partials/components/_progressbar.scss +112 -112
  153. package/assets/scss/partials/components/_radiobutton.scss +66 -66
  154. package/assets/scss/partials/components/_select.scss +356 -356
  155. package/assets/scss/partials/components/_snackbar.scss +204 -204
  156. package/assets/scss/partials/components/_stepper.scss +86 -86
  157. package/assets/scss/partials/components/_tab.scss +82 -82
  158. package/assets/scss/partials/components/_table.scss +148 -148
  159. package/assets/scss/partials/components/_toggle.scss +103 -103
  160. package/assets/scss/partials/components/_wizard.scss +112 -112
  161. package/esm2020/lib/components/badge/badge.component.mjs +43 -43
  162. package/esm2020/lib/components/badge/badge.module.mjs +19 -19
  163. package/esm2020/lib/components/badge/index.mjs +3 -3
  164. package/esm2020/lib/components/button/button-avatar.component.mjs +53 -53
  165. package/esm2020/lib/components/button/button-dropdown.component.mjs +121 -121
  166. package/esm2020/lib/components/button/button.component.mjs +154 -154
  167. package/esm2020/lib/components/button/button.module.mjs +23 -23
  168. package/esm2020/lib/components/button/index.mjs +5 -5
  169. package/esm2020/lib/components/checkbox/checkbox.component.mjs +165 -165
  170. package/esm2020/lib/components/checkbox/checkbox.module.mjs +20 -20
  171. package/esm2020/lib/components/checkbox/index.mjs +3 -3
  172. package/esm2020/lib/components/date-range-picker/date-range-picker.component.mjs +660 -660
  173. package/esm2020/lib/components/date-range-picker/date-range-picker.module.mjs +22 -22
  174. package/esm2020/lib/components/date-range-picker/index.mjs +3 -3
  175. package/esm2020/lib/components/expansion/expansion.component.mjs +115 -115
  176. package/esm2020/lib/components/expansion/expansion.module.mjs +20 -20
  177. package/esm2020/lib/components/expansion/index.mjs +3 -3
  178. package/esm2020/lib/components/file-upload/file-upload.component.mjs +294 -294
  179. package/esm2020/lib/components/file-upload/file-upload.module.mjs +37 -37
  180. package/esm2020/lib/components/file-upload/index.mjs +3 -3
  181. package/esm2020/lib/components/icon/icon-add-plus.component.mjs +15 -15
  182. package/esm2020/lib/components/icon/icon-address-book.component.mjs +15 -15
  183. package/esm2020/lib/components/icon/icon-arrow-down.component.mjs +15 -15
  184. package/esm2020/lib/components/icon/icon-arrow-left.component.mjs +15 -15
  185. package/esm2020/lib/components/icon/icon-arrow-line-right.component.mjs +15 -15
  186. package/esm2020/lib/components/icon/icon-arrow-right.component.mjs +15 -15
  187. package/esm2020/lib/components/icon/icon-arrow-up.component.mjs +15 -15
  188. package/esm2020/lib/components/icon/icon-arrows.component.mjs +15 -15
  189. package/esm2020/lib/components/icon/icon-auction.component.mjs +15 -15
  190. package/esm2020/lib/components/icon/icon-average-tax.component.mjs +15 -0
  191. package/esm2020/lib/components/icon/icon-bank-account.component.mjs +15 -15
  192. package/esm2020/lib/components/icon/icon-bank-agency.component.mjs +15 -0
  193. package/esm2020/lib/components/icon/icon-bank.component.mjs +15 -15
  194. package/esm2020/lib/components/icon/icon-banknote-search.component.mjs +15 -15
  195. package/esm2020/lib/components/icon/icon-bell.component.mjs +15 -15
  196. package/esm2020/lib/components/icon/icon-block.component.mjs +15 -15
  197. package/esm2020/lib/components/icon/icon-book-open-text.component.mjs +15 -15
  198. package/esm2020/lib/components/icon/icon-book.component.mjs +15 -15
  199. package/esm2020/lib/components/icon/icon-box.component.mjs +15 -15
  200. package/esm2020/lib/components/icon/icon-build-approved.component.mjs +15 -15
  201. package/esm2020/lib/components/icon/icon-build-person.component.mjs +15 -15
  202. package/esm2020/lib/components/icon/icon-build-refused.component.mjs +15 -15
  203. package/esm2020/lib/components/icon/icon-build-waiting.component.mjs +15 -15
  204. package/esm2020/lib/components/icon/icon-calendar-box.component.mjs +15 -15
  205. package/esm2020/lib/components/icon/icon-calendar.component.mjs +15 -15
  206. package/esm2020/lib/components/icon/icon-camera.component.mjs +15 -15
  207. package/esm2020/lib/components/icon/icon-card-machine.component.mjs +15 -15
  208. package/esm2020/lib/components/icon/icon-card.component.mjs +15 -15
  209. package/esm2020/lib/components/icon/icon-cash-banknote-invoice.component.mjs +15 -0
  210. package/esm2020/lib/components/icon/icon-chat.component.mjs +15 -15
  211. package/esm2020/lib/components/icon/icon-check-circle-out.component.mjs +15 -15
  212. package/esm2020/lib/components/icon/icon-check-circle.component.mjs +15 -15
  213. package/esm2020/lib/components/icon/icon-check-grey.component.mjs +15 -15
  214. package/esm2020/lib/components/icon/icon-check-white.component.mjs +15 -15
  215. package/esm2020/lib/components/icon/icon-check.component.mjs +15 -15
  216. package/esm2020/lib/components/icon/icon-clipboard.component.mjs +15 -15
  217. package/esm2020/lib/components/icon/icon-clock-closed.component.mjs +15 -15
  218. package/esm2020/lib/components/icon/icon-clock.component.mjs +15 -15
  219. package/esm2020/lib/components/icon/icon-close-circle.component.mjs +15 -15
  220. package/esm2020/lib/components/icon/icon-close.component.mjs +15 -15
  221. package/esm2020/lib/components/icon/icon-cnpj.component.mjs +15 -15
  222. package/esm2020/lib/components/icon/icon-codepen.component.mjs +15 -15
  223. package/esm2020/lib/components/icon/icon-company-name.component.mjs +15 -15
  224. package/esm2020/lib/components/icon/icon-contract-pen.component.mjs +15 -15
  225. package/esm2020/lib/components/icon/icon-contract.component.mjs +15 -15
  226. package/esm2020/lib/components/icon/icon-delete.component.mjs +15 -15
  227. package/esm2020/lib/components/icon/icon-document.component.mjs +15 -15
  228. package/esm2020/lib/components/icon/icon-dollar-sign-circle.component.mjs +15 -15
  229. package/esm2020/lib/components/icon/icon-dollar-sign.component.mjs +15 -15
  230. package/esm2020/lib/components/icon/icon-domain.component.mjs +15 -15
  231. package/esm2020/lib/components/icon/icon-dots-menu.component.mjs +15 -15
  232. package/esm2020/lib/components/icon/icon-double-arrow-left.component.mjs +15 -15
  233. package/esm2020/lib/components/icon/icon-double-arrow-right.component.mjs +15 -15
  234. package/esm2020/lib/components/icon/icon-download.component.mjs +15 -15
  235. package/esm2020/lib/components/icon/icon-drag-drop.component.mjs +15 -15
  236. package/esm2020/lib/components/icon/icon-edit-square.component.mjs +15 -15
  237. package/esm2020/lib/components/icon/icon-edit.component.mjs +15 -15
  238. package/esm2020/lib/components/icon/icon-email-send-fast.component.mjs +15 -15
  239. package/esm2020/lib/components/icon/icon-email.component.mjs +15 -15
  240. package/esm2020/lib/components/icon/icon-empty-doc.component.mjs +15 -15
  241. package/esm2020/lib/components/icon/icon-error.component.mjs +15 -15
  242. package/esm2020/lib/components/icon/icon-eye-closed.component.mjs +15 -15
  243. package/esm2020/lib/components/icon/icon-eye-open.component.mjs +15 -15
  244. package/esm2020/lib/components/icon/icon-filter-add.component.mjs +15 -15
  245. package/esm2020/lib/components/icon/icon-filter.component.mjs +15 -15
  246. package/esm2020/lib/components/icon/icon-grid.component.mjs +15 -15
  247. package/esm2020/lib/components/icon/icon-hands-clap.component.mjs +15 -15
  248. package/esm2020/lib/components/icon/icon-help.component.mjs +15 -15
  249. package/esm2020/lib/components/icon/icon-hexagon.component.mjs +15 -15
  250. package/esm2020/lib/components/icon/icon-home.component.mjs +15 -15
  251. package/esm2020/lib/components/icon/icon-image.component.mjs +15 -15
  252. package/esm2020/lib/components/icon/icon-info.component.mjs +15 -15
  253. package/esm2020/lib/components/icon/icon-invoice.component.mjs +15 -15
  254. package/esm2020/lib/components/icon/icon-invoices-anticipated.component.mjs +15 -15
  255. package/esm2020/lib/components/icon/icon-invoices-approval.component.mjs +15 -15
  256. package/esm2020/lib/components/icon/icon-invoices-refused.component.mjs +15 -15
  257. package/esm2020/lib/components/icon/icon-lighting-circle.component.mjs +15 -15
  258. package/esm2020/lib/components/icon/icon-list.component.mjs +15 -15
  259. package/esm2020/lib/components/icon/icon-location-pin.component.mjs +15 -15
  260. package/esm2020/lib/components/icon/icon-login.component.mjs +15 -15
  261. package/esm2020/lib/components/icon/icon-logout.component.mjs +15 -15
  262. package/esm2020/lib/components/icon/icon-mail-open-document.component.mjs +15 -0
  263. package/esm2020/lib/components/icon/icon-medal.component.mjs +15 -15
  264. package/esm2020/lib/components/icon/icon-menu.component.mjs +15 -15
  265. package/esm2020/lib/components/icon/icon-money-cedule.component.mjs +15 -15
  266. package/esm2020/lib/components/icon/icon-money-discount.component.mjs +15 -0
  267. package/esm2020/lib/components/icon/icon-money-hand.component.mjs +15 -15
  268. package/esm2020/lib/components/icon/icon-money-net.component.mjs +15 -0
  269. package/esm2020/lib/components/icon/icon-money-new.component.mjs +15 -0
  270. package/esm2020/lib/components/icon/icon-money-percent.component.mjs +15 -15
  271. package/esm2020/lib/components/icon/icon-money-refused.component.mjs +15 -15
  272. package/esm2020/lib/components/icon/icon-money-sign.component.mjs +15 -15
  273. package/esm2020/lib/components/icon/icon-money-waiting.component.mjs +15 -15
  274. package/esm2020/lib/components/icon/icon-money.component.mjs +15 -15
  275. package/esm2020/lib/components/icon/icon-more-circle.component.mjs +15 -15
  276. package/esm2020/lib/components/icon/icon-more.component.mjs +15 -15
  277. package/esm2020/lib/components/icon/icon-new-company.component.mjs +15 -15
  278. package/esm2020/lib/components/icon/icon-offered.component.mjs +15 -15
  279. package/esm2020/lib/components/icon/icon-open-external.component.mjs +15 -15
  280. package/esm2020/lib/components/icon/icon-password.component.mjs +15 -15
  281. package/esm2020/lib/components/icon/icon-people.component.mjs +15 -15
  282. package/esm2020/lib/components/icon/icon-percent-box.component.mjs +15 -15
  283. package/esm2020/lib/components/icon/icon-percent.component.mjs +15 -15
  284. package/esm2020/lib/components/icon/icon-person-document.component.mjs +15 -15
  285. package/esm2020/lib/components/icon/icon-person-sad.component.mjs +15 -15
  286. package/esm2020/lib/components/icon/icon-phone-call.component.mjs +15 -15
  287. package/esm2020/lib/components/icon/icon-phone.component.mjs +15 -15
  288. package/esm2020/lib/components/icon/icon-pin-navigation.component.mjs +15 -15
  289. package/esm2020/lib/components/icon/icon-pork.component.mjs +15 -15
  290. package/esm2020/lib/components/icon/icon-radio.component.mjs +15 -15
  291. package/esm2020/lib/components/icon/icon-refresh.component.mjs +15 -15
  292. package/esm2020/lib/components/icon/icon-registration.component.mjs +15 -0
  293. package/esm2020/lib/components/icon/icon-repeat.component.mjs +15 -15
  294. package/esm2020/lib/components/icon/icon-search.component.mjs +15 -15
  295. package/esm2020/lib/components/icon/icon-second-warning.component.mjs +15 -15
  296. package/esm2020/lib/components/icon/icon-settings.component.mjs +15 -15
  297. package/esm2020/lib/components/icon/icon-shield-chekmark.component.mjs +15 -15
  298. package/esm2020/lib/components/icon/icon-star-shining.component.mjs +15 -15
  299. package/esm2020/lib/components/icon/icon-star.component.mjs +15 -15
  300. package/esm2020/lib/components/icon/icon-store.component.mjs +15 -15
  301. package/esm2020/lib/components/icon/icon-target-dart-arrow.component.mjs +15 -15
  302. package/esm2020/lib/components/icon/icon-today.component.mjs +15 -15
  303. package/esm2020/lib/components/icon/icon-trash.component.mjs +15 -15
  304. package/esm2020/lib/components/icon/icon-trophy.component.mjs +15 -15
  305. package/esm2020/lib/components/icon/icon-unfold-more.component.mjs +15 -15
  306. package/esm2020/lib/components/icon/icon-upload.component.mjs +15 -15
  307. package/esm2020/lib/components/icon/icon-user-group.component.mjs +15 -15
  308. package/esm2020/lib/components/icon/icon-user.component.mjs +15 -15
  309. package/esm2020/lib/components/icon/icon-waiting.component.mjs +15 -15
  310. package/esm2020/lib/components/icon/icon-wallet.component.mjs +15 -15
  311. package/esm2020/lib/components/icon/icon-warning.component.mjs +15 -15
  312. package/esm2020/lib/components/icon/icon.component.mjs +1796 -1783
  313. package/esm2020/lib/components/icon/icon.module.mjs +283 -411
  314. package/esm2020/lib/components/icon/index.mjs +135 -122
  315. package/esm2020/lib/components/image-crop/image-crop.component.mjs +516 -516
  316. package/esm2020/lib/components/image-crop/image-crop.module.mjs +41 -41
  317. package/esm2020/lib/components/image-crop/index.mjs +3 -3
  318. package/esm2020/lib/components/index.mjs +20 -20
  319. package/esm2020/lib/components/input/index.mjs +4 -4
  320. package/esm2020/lib/components/input/input-filter.component.mjs +286 -286
  321. package/esm2020/lib/components/input/input.component.mjs +384 -384
  322. package/esm2020/lib/components/input/input.module.mjs +38 -38
  323. package/esm2020/lib/components/input-phone/index.mjs +3 -3
  324. package/esm2020/lib/components/input-phone/input-phone.component.mjs +307 -307
  325. package/esm2020/lib/components/input-phone/input-phone.module.mjs +45 -45
  326. package/esm2020/lib/components/modal/index.mjs +3 -3
  327. package/esm2020/lib/components/modal/modal.component.mjs +236 -236
  328. package/esm2020/lib/components/modal/modal.module.mjs +21 -21
  329. package/esm2020/lib/components/option/index.mjs +3 -3
  330. package/esm2020/lib/components/option/option.component.mjs +131 -131
  331. package/esm2020/lib/components/option/option.module.mjs +29 -29
  332. package/esm2020/lib/components/radiobutton/index.mjs +3 -3
  333. package/esm2020/lib/components/radiobutton/radiobutton.component.mjs +165 -165
  334. package/esm2020/lib/components/radiobutton/radiobutton.module.mjs +36 -36
  335. package/esm2020/lib/components/select/index.mjs +6 -6
  336. package/esm2020/lib/components/select/select-filter.component.mjs +197 -197
  337. package/esm2020/lib/components/select/select-multiple.component.mjs +304 -304
  338. package/esm2020/lib/components/select/select-search.component.mjs +306 -306
  339. package/esm2020/lib/components/select/select.component.mjs +245 -245
  340. package/esm2020/lib/components/select/select.module.mjs +61 -61
  341. package/esm2020/lib/components/stepper/index.mjs +3 -3
  342. package/esm2020/lib/components/stepper/stepper.component.mjs +57 -57
  343. package/esm2020/lib/components/stepper/stepper.module.mjs +20 -20
  344. package/esm2020/lib/components/tab/index.mjs +3 -3
  345. package/esm2020/lib/components/tab/tab.component.mjs +100 -100
  346. package/esm2020/lib/components/tab/tab.module.mjs +21 -21
  347. package/esm2020/lib/components/table/index.mjs +4 -4
  348. package/esm2020/lib/components/table/table-column.component.mjs +34 -34
  349. package/esm2020/lib/components/table/table.component.mjs +267 -267
  350. package/esm2020/lib/components/table/table.module.mjs +23 -23
  351. package/esm2020/lib/components/toggle/index.mjs +3 -3
  352. package/esm2020/lib/components/toggle/toggle.component.mjs +56 -56
  353. package/esm2020/lib/components/toggle/toggle.module.mjs +19 -19
  354. package/esm2020/lib/components/wizard/index.mjs +3 -3
  355. package/esm2020/lib/components/wizard/wizard.component.mjs +61 -61
  356. package/esm2020/lib/components/wizard/wizard.module.mjs +33 -33
  357. package/esm2020/lib/core/index.mjs +4 -4
  358. package/esm2020/lib/core/interfaces/index.mjs +3 -3
  359. package/esm2020/lib/core/interfaces/monkey-modal-settings.mjs +2 -2
  360. package/esm2020/lib/core/interfaces/monkey-style-settings.mjs +2 -2
  361. package/esm2020/lib/core/services/index.mjs +4 -4
  362. package/esm2020/lib/core/services/modal/index.mjs +3 -3
  363. package/esm2020/lib/core/services/modal/monkey-style-guide-modal-fixed.service.mjs +52 -52
  364. package/esm2020/lib/core/services/modal/monkey-style-guide-modal.service.mjs +55 -55
  365. package/esm2020/lib/core/services/monkey-style-guide.service.mjs +17 -17
  366. package/esm2020/lib/core/services/settings/index.mjs +1 -1
  367. package/esm2020/lib/core/services/settings/monkey-style-guide-settings.service.mjs +41 -41
  368. package/esm2020/lib/core/services/settings/monkey-style-guide-theme-settings.service.mjs +80 -80
  369. package/esm2020/lib/core/services/snackbar/index.mjs +1 -1
  370. package/esm2020/lib/core/services/snackbar/mokey-style-guide-snackbar.service.mjs +226 -226
  371. package/esm2020/lib/core/utils/index.mjs +1 -1
  372. package/esm2020/lib/core/utils/utils.mjs +240 -240
  373. package/esm2020/lib/monkey-style-guide.module.mjs +31 -31
  374. package/esm2020/monkey-style-guide.mjs +4 -4
  375. package/esm2020/public-api.mjs +9 -9
  376. package/fesm2015/monkey-style-guide.mjs +9831 -9804
  377. package/fesm2015/monkey-style-guide.mjs.map +1 -1
  378. package/fesm2020/monkey-style-guide.mjs +9820 -9793
  379. package/fesm2020/monkey-style-guide.mjs.map +1 -1
  380. package/lib/components/badge/badge.component.d.ts +8 -8
  381. package/lib/components/badge/badge.module.d.ts +8 -8
  382. package/lib/components/badge/index.d.ts +2 -2
  383. package/lib/components/button/button-avatar.component.d.ts +19 -19
  384. package/lib/components/button/button-dropdown.component.d.ts +23 -23
  385. package/lib/components/button/button.component.d.ts +22 -22
  386. package/lib/components/button/button.module.d.ts +12 -12
  387. package/lib/components/button/index.d.ts +4 -4
  388. package/lib/components/checkbox/checkbox.component.d.ts +32 -32
  389. package/lib/components/checkbox/checkbox.module.d.ts +9 -9
  390. package/lib/components/checkbox/index.d.ts +2 -2
  391. package/lib/components/date-range-picker/date-range-picker.component.d.ts +69 -69
  392. package/lib/components/date-range-picker/date-range-picker.module.d.ts +11 -11
  393. package/lib/components/date-range-picker/index.d.ts +2 -2
  394. package/lib/components/expansion/expansion.component.d.ts +20 -20
  395. package/lib/components/expansion/expansion.module.d.ts +9 -9
  396. package/lib/components/expansion/index.d.ts +2 -2
  397. package/lib/components/file-upload/file-upload.component.d.ts +51 -51
  398. package/lib/components/file-upload/file-upload.module.d.ts +11 -11
  399. package/lib/components/file-upload/index.d.ts +2 -2
  400. package/lib/components/icon/icon-add-plus.component.d.ts +7 -7
  401. package/lib/components/icon/icon-address-book.component.d.ts +7 -7
  402. package/lib/components/icon/icon-arrow-down.component.d.ts +7 -7
  403. package/lib/components/icon/icon-arrow-left.component.d.ts +7 -7
  404. package/lib/components/icon/icon-arrow-line-right.component.d.ts +7 -7
  405. package/lib/components/icon/icon-arrow-right.component.d.ts +7 -7
  406. package/lib/components/icon/icon-arrow-up.component.d.ts +7 -7
  407. package/lib/components/icon/icon-arrows.component.d.ts +7 -7
  408. package/lib/components/icon/icon-auction.component.d.ts +7 -7
  409. package/lib/components/icon/{icon-average-tax.d.ts → icon-average-tax.component.d.ts} +7 -7
  410. package/lib/components/icon/icon-bank-account.component.d.ts +7 -7
  411. package/lib/components/icon/{icon-bank-agency.d.ts → icon-bank-agency.component.d.ts} +7 -7
  412. package/lib/components/icon/icon-bank.component.d.ts +7 -7
  413. package/lib/components/icon/icon-banknote-search.component.d.ts +7 -7
  414. package/lib/components/icon/icon-bell.component.d.ts +7 -7
  415. package/lib/components/icon/icon-block.component.d.ts +7 -7
  416. package/lib/components/icon/icon-book-open-text.component.d.ts +7 -7
  417. package/lib/components/icon/icon-book.component.d.ts +7 -7
  418. package/lib/components/icon/icon-box.component.d.ts +7 -7
  419. package/lib/components/icon/icon-build-approved.component.d.ts +7 -7
  420. package/lib/components/icon/icon-build-person.component.d.ts +7 -7
  421. package/lib/components/icon/icon-build-refused.component.d.ts +7 -7
  422. package/lib/components/icon/icon-build-waiting.component.d.ts +7 -7
  423. package/lib/components/icon/icon-calendar-box.component.d.ts +7 -7
  424. package/lib/components/icon/icon-calendar.component.d.ts +7 -7
  425. package/lib/components/icon/icon-camera.component.d.ts +7 -7
  426. package/lib/components/icon/icon-card-machine.component.d.ts +7 -7
  427. package/lib/components/icon/icon-card.component.d.ts +7 -7
  428. package/lib/components/icon/{icon-cash-banknote-invoice.d.ts → icon-cash-banknote-invoice.component.d.ts} +7 -7
  429. package/lib/components/icon/icon-chat.component.d.ts +7 -7
  430. package/lib/components/icon/icon-check-circle-out.component.d.ts +7 -7
  431. package/lib/components/icon/icon-check-circle.component.d.ts +7 -7
  432. package/lib/components/icon/icon-check-grey.component.d.ts +7 -7
  433. package/lib/components/icon/icon-check-white.component.d.ts +7 -7
  434. package/lib/components/icon/icon-check.component.d.ts +7 -7
  435. package/lib/components/icon/icon-clipboard.component.d.ts +7 -7
  436. package/lib/components/icon/icon-clock-closed.component.d.ts +7 -7
  437. package/lib/components/icon/icon-clock.component.d.ts +7 -7
  438. package/lib/components/icon/icon-close-circle.component.d.ts +7 -7
  439. package/lib/components/icon/icon-close.component.d.ts +7 -7
  440. package/lib/components/icon/icon-cnpj.component.d.ts +7 -7
  441. package/lib/components/icon/icon-codepen.component.d.ts +7 -7
  442. package/lib/components/icon/icon-company-name.component.d.ts +7 -7
  443. package/lib/components/icon/icon-contract-pen.component.d.ts +7 -7
  444. package/lib/components/icon/icon-contract.component.d.ts +7 -7
  445. package/lib/components/icon/icon-delete.component.d.ts +7 -7
  446. package/lib/components/icon/icon-document.component.d.ts +7 -7
  447. package/lib/components/icon/icon-dollar-sign-circle.component.d.ts +7 -7
  448. package/lib/components/icon/icon-dollar-sign.component.d.ts +7 -7
  449. package/lib/components/icon/icon-domain.component.d.ts +7 -7
  450. package/lib/components/icon/icon-dots-menu.component.d.ts +7 -7
  451. package/lib/components/icon/icon-double-arrow-left.component.d.ts +7 -7
  452. package/lib/components/icon/icon-double-arrow-right.component.d.ts +7 -7
  453. package/lib/components/icon/icon-download.component.d.ts +7 -7
  454. package/lib/components/icon/icon-drag-drop.component.d.ts +7 -7
  455. package/lib/components/icon/icon-edit-square.component.d.ts +7 -7
  456. package/lib/components/icon/icon-edit.component.d.ts +7 -7
  457. package/lib/components/icon/icon-email-send-fast.component.d.ts +7 -7
  458. package/lib/components/icon/icon-email.component.d.ts +7 -7
  459. package/lib/components/icon/icon-empty-doc.component.d.ts +7 -7
  460. package/lib/components/icon/icon-error.component.d.ts +7 -7
  461. package/lib/components/icon/icon-eye-closed.component.d.ts +7 -7
  462. package/lib/components/icon/icon-eye-open.component.d.ts +7 -7
  463. package/lib/components/icon/icon-filter-add.component.d.ts +7 -7
  464. package/lib/components/icon/icon-filter.component.d.ts +7 -7
  465. package/lib/components/icon/icon-grid.component.d.ts +7 -7
  466. package/lib/components/icon/icon-hands-clap.component.d.ts +7 -7
  467. package/lib/components/icon/icon-help.component.d.ts +7 -7
  468. package/lib/components/icon/icon-hexagon.component.d.ts +7 -7
  469. package/lib/components/icon/icon-home.component.d.ts +7 -7
  470. package/lib/components/icon/icon-image.component.d.ts +7 -7
  471. package/lib/components/icon/icon-info.component.d.ts +7 -7
  472. package/lib/components/icon/icon-invoice.component.d.ts +7 -7
  473. package/lib/components/icon/icon-invoices-anticipated.component.d.ts +7 -7
  474. package/lib/components/icon/icon-invoices-approval.component.d.ts +7 -7
  475. package/lib/components/icon/icon-invoices-refused.component.d.ts +7 -7
  476. package/lib/components/icon/icon-lighting-circle.component.d.ts +7 -7
  477. package/lib/components/icon/icon-list.component.d.ts +7 -7
  478. package/lib/components/icon/icon-location-pin.component.d.ts +7 -7
  479. package/lib/components/icon/icon-login.component.d.ts +7 -7
  480. package/lib/components/icon/icon-logout.component.d.ts +7 -7
  481. package/lib/components/icon/icon-mail-open-document.component.d.ts +7 -0
  482. package/lib/components/icon/icon-medal.component.d.ts +7 -7
  483. package/lib/components/icon/icon-menu.component.d.ts +7 -7
  484. package/lib/components/icon/icon-money-cedule.component.d.ts +7 -7
  485. package/lib/components/icon/{icon-money-discount.d.ts → icon-money-discount.component.d.ts} +7 -7
  486. package/lib/components/icon/icon-money-hand.component.d.ts +7 -7
  487. package/lib/components/icon/{icon-money-net.d.ts → icon-money-net.component.d.ts} +7 -7
  488. package/lib/components/icon/{icon-money-new.d.ts → icon-money-new.component.d.ts} +7 -7
  489. package/lib/components/icon/icon-money-percent.component.d.ts +7 -7
  490. package/lib/components/icon/icon-money-refused.component.d.ts +7 -7
  491. package/lib/components/icon/icon-money-sign.component.d.ts +7 -7
  492. package/lib/components/icon/icon-money-waiting.component.d.ts +7 -7
  493. package/lib/components/icon/icon-money.component.d.ts +7 -7
  494. package/lib/components/icon/icon-more-circle.component.d.ts +7 -7
  495. package/lib/components/icon/icon-more.component.d.ts +7 -7
  496. package/lib/components/icon/icon-new-company.component.d.ts +7 -7
  497. package/lib/components/icon/icon-offered.component.d.ts +7 -7
  498. package/lib/components/icon/icon-open-external.component.d.ts +7 -7
  499. package/lib/components/icon/icon-password.component.d.ts +7 -7
  500. package/lib/components/icon/icon-people.component.d.ts +7 -7
  501. package/lib/components/icon/icon-percent-box.component.d.ts +7 -7
  502. package/lib/components/icon/icon-percent.component.d.ts +7 -7
  503. package/lib/components/icon/icon-person-document.component.d.ts +7 -7
  504. package/lib/components/icon/icon-person-sad.component.d.ts +7 -7
  505. package/lib/components/icon/icon-phone-call.component.d.ts +7 -7
  506. package/lib/components/icon/icon-phone.component.d.ts +7 -7
  507. package/lib/components/icon/icon-pin-navigation.component.d.ts +7 -7
  508. package/lib/components/icon/icon-pork.component.d.ts +7 -7
  509. package/lib/components/icon/icon-radio.component.d.ts +7 -7
  510. package/lib/components/icon/icon-refresh.component.d.ts +7 -7
  511. package/lib/components/icon/{icon-registration.d.ts → icon-registration.component.d.ts} +7 -7
  512. package/lib/components/icon/icon-repeat.component.d.ts +7 -7
  513. package/lib/components/icon/icon-search.component.d.ts +7 -7
  514. package/lib/components/icon/icon-second-warning.component.d.ts +7 -7
  515. package/lib/components/icon/icon-settings.component.d.ts +7 -7
  516. package/lib/components/icon/icon-shield-chekmark.component.d.ts +7 -7
  517. package/lib/components/icon/icon-star-shining.component.d.ts +7 -7
  518. package/lib/components/icon/icon-star.component.d.ts +7 -7
  519. package/lib/components/icon/icon-store.component.d.ts +7 -7
  520. package/lib/components/icon/icon-target-dart-arrow.component.d.ts +7 -7
  521. package/lib/components/icon/icon-today.component.d.ts +7 -7
  522. package/lib/components/icon/icon-trash.component.d.ts +7 -7
  523. package/lib/components/icon/icon-trophy.component.d.ts +7 -7
  524. package/lib/components/icon/icon-unfold-more.component.d.ts +7 -7
  525. package/lib/components/icon/icon-upload.component.d.ts +7 -7
  526. package/lib/components/icon/icon-user-group.component.d.ts +7 -7
  527. package/lib/components/icon/icon-user.component.d.ts +7 -7
  528. package/lib/components/icon/icon-waiting.component.d.ts +7 -7
  529. package/lib/components/icon/icon-wallet.component.d.ts +7 -7
  530. package/lib/components/icon/icon-warning.component.d.ts +7 -7
  531. package/lib/components/icon/icon.component.d.ts +27 -27
  532. package/lib/components/icon/icon.module.d.ts +139 -138
  533. package/lib/components/icon/index.d.ts +134 -121
  534. package/lib/components/image-crop/image-crop.component.d.ts +77 -77
  535. package/lib/components/image-crop/image-crop.module.d.ts +12 -12
  536. package/lib/components/image-crop/index.d.ts +2 -2
  537. package/lib/components/index.d.ts +19 -19
  538. package/lib/components/input/index.d.ts +3 -3
  539. package/lib/components/input/input-filter.component.d.ts +55 -55
  540. package/lib/components/input/input.component.d.ts +64 -64
  541. package/lib/components/input/input.module.d.ts +12 -12
  542. package/lib/components/input-phone/index.d.ts +2 -2
  543. package/lib/components/input-phone/input-phone.component.d.ts +62 -62
  544. package/lib/components/input-phone/input-phone.module.d.ts +13 -13
  545. package/lib/components/modal/index.d.ts +2 -2
  546. package/lib/components/modal/modal.component.d.ts +24 -24
  547. package/lib/components/modal/modal.module.d.ts +10 -10
  548. package/lib/components/option/index.d.ts +2 -2
  549. package/lib/components/option/option.component.d.ts +22 -22
  550. package/lib/components/option/option.module.d.ts +8 -8
  551. package/lib/components/radiobutton/index.d.ts +2 -2
  552. package/lib/components/radiobutton/radiobutton.component.d.ts +39 -39
  553. package/lib/components/radiobutton/radiobutton.module.d.ts +9 -9
  554. package/lib/components/select/index.d.ts +5 -5
  555. package/lib/components/select/select-filter.component.d.ts +41 -41
  556. package/lib/components/select/select-multiple.component.d.ts +48 -48
  557. package/lib/components/select/select-search.component.d.ts +56 -56
  558. package/lib/components/select/select.component.d.ts +48 -48
  559. package/lib/components/select/select.module.d.ts +15 -15
  560. package/lib/components/stepper/index.d.ts +2 -2
  561. package/lib/components/stepper/stepper.component.d.ts +18 -18
  562. package/lib/components/stepper/stepper.module.d.ts +9 -9
  563. package/lib/components/tab/index.d.ts +2 -2
  564. package/lib/components/tab/tab.component.d.ts +24 -24
  565. package/lib/components/tab/tab.module.d.ts +10 -10
  566. package/lib/components/table/index.d.ts +3 -3
  567. package/lib/components/table/table-column.component.d.ts +5 -5
  568. package/lib/components/table/table.component.d.ts +59 -59
  569. package/lib/components/table/table.module.d.ts +12 -12
  570. package/lib/components/toggle/index.d.ts +2 -2
  571. package/lib/components/toggle/toggle.component.d.ts +18 -18
  572. package/lib/components/toggle/toggle.module.d.ts +8 -8
  573. package/lib/components/wizard/index.d.ts +2 -2
  574. package/lib/components/wizard/wizard.component.d.ts +18 -18
  575. package/lib/components/wizard/wizard.module.d.ts +9 -9
  576. package/lib/core/index.d.ts +3 -3
  577. package/lib/core/interfaces/index.d.ts +2 -2
  578. package/lib/core/interfaces/monkey-modal-settings.d.ts +58 -58
  579. package/lib/core/interfaces/monkey-style-settings.d.ts +59 -59
  580. package/lib/core/services/index.d.ts +3 -3
  581. package/lib/core/services/modal/index.d.ts +2 -2
  582. package/lib/core/services/modal/monkey-style-guide-modal-fixed.service.d.ts +16 -16
  583. package/lib/core/services/modal/monkey-style-guide-modal.service.d.ts +18 -18
  584. package/lib/core/services/monkey-style-guide.service.d.ts +10 -10
  585. package/lib/core/services/settings/index.d.ts +1 -1
  586. package/lib/core/services/settings/monkey-style-guide-settings.service.d.ts +15 -15
  587. package/lib/core/services/settings/monkey-style-guide-theme-settings.service.d.ts +12 -12
  588. package/lib/core/services/snackbar/index.d.ts +1 -1
  589. package/lib/core/services/snackbar/mokey-style-guide-snackbar.service.d.ts +58 -58
  590. package/lib/core/utils/index.d.ts +1 -1
  591. package/lib/core/utils/utils.d.ts +29 -29
  592. package/lib/monkey-style-guide.module.d.ts +8 -8
  593. package/monkey-style-guide-2.0.178.tgz +0 -0
  594. package/monkey-style-guide.d.ts +5 -5
  595. package/package.json +1 -1
  596. package/public-api.d.ts +8 -8
  597. package/esm2020/lib/components/icon/icon-average-tax.mjs +0 -15
  598. package/esm2020/lib/components/icon/icon-bank-agency.mjs +0 -15
  599. package/esm2020/lib/components/icon/icon-cash-banknote-invoice.mjs +0 -15
  600. package/esm2020/lib/components/icon/icon-money-discount.mjs +0 -15
  601. package/esm2020/lib/components/icon/icon-money-net.mjs +0 -15
  602. package/esm2020/lib/components/icon/icon-money-new.mjs +0 -15
  603. package/esm2020/lib/components/icon/icon-registration.mjs +0 -15
  604. package/monkey-style-guide-2.0.177.tgz +0 -0
@@ -1,304 +1,304 @@
1
- /**************************
2
- * Copyright Monkey Exchange. All Rights Reserved
3
- * This style guide was developed by Monkey Exchange Team
4
- * MIT Licence
5
- **************************/
6
- import { Component, ViewEncapsulation, Input, forwardRef, HostListener, ContentChildren, Output, EventEmitter, ViewChild, } from '@angular/core';
7
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
- import { MonkeyOptionComponent } from '../option';
9
- import { MonkeyUtils } from '../../core/utils';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "../icon/icon.component";
12
- import * as i2 from "@angular/common";
13
- export class MonkeySelectMultipleComponent {
14
- constructor(cdRef) {
15
- this.cdRef = cdRef;
16
- this.onChange = new EventEmitter();
17
- this.handledValue = [];
18
- this.onModelChange = (value) => { };
19
- this.onModelTouched = (value) => { };
20
- this.selectedAll = false;
21
- this._selected = [];
22
- this._opened = false;
23
- this._id = `mecx-select-${MonkeyUtils.getRandomString(10)}`;
24
- this._disabled = false;
25
- this._selectedValues = '';
26
- }
27
- onHandleSelectedValues() {
28
- const { _selected, labelMoreValues } = this;
29
- let selectedValues = '';
30
- const handled = _selected.filter((_) => !_.selectAll);
31
- if (_selected.length > 0) {
32
- selectedValues = `${handled[0].label}`;
33
- if (_selected.length >= 2) {
34
- selectedValues = `${handled[0].label} ${labelMoreValues} ${handled.length - 1}`;
35
- }
36
- }
37
- this._selectedValues = selectedValues;
38
- }
39
- onHandleSelected() {
40
- const { _opened, _selected } = this;
41
- let selectedLength = 0;
42
- let selectAll = null;
43
- this.options?.forEach((op) => {
44
- const found = _selected.findIndex((val) => {
45
- return val.value === op.value;
46
- });
47
- op.selected = null;
48
- if (op.selectAll)
49
- selectAll = op;
50
- if (found >= 0) {
51
- op.selected = op;
52
- selectedLength += 1;
53
- }
54
- });
55
- if (this.options?.length - 1 === selectedLength && selectAll) {
56
- this.selectedAll = true;
57
- selectAll.selected = selectAll;
58
- }
59
- this.onHandleSelectedValues();
60
- if (_opened) {
61
- this.selectOptions.nativeElement.focus();
62
- this.cdRef.detectChanges();
63
- }
64
- }
65
- validateOptions() {
66
- if (!this.options)
67
- return;
68
- this._selected = [];
69
- let selectedLength = 0;
70
- let selectAll = null;
71
- this.options?.forEach((op) => {
72
- op.onSelectOption = this.onSelectOption.bind(this);
73
- op.type = 'select-multiple';
74
- op.selected = null;
75
- if (op.selectAll)
76
- selectAll = op;
77
- const found = this.handledValue.findIndex((val) => {
78
- return `${val}`.trim().toLowerCase() === `${op.value}`.trim().toLowerCase();
79
- });
80
- if (found >= 0) {
81
- op.selected = op;
82
- this._selected.push(op);
83
- selectedLength += 1;
84
- }
85
- });
86
- if (this.options?.length - 1 === selectedLength && selectAll) {
87
- this.selectedAll = true;
88
- selectAll.selected = selectAll;
89
- }
90
- this.onHandleSelectedValues();
91
- }
92
- registerOnChange(fn) {
93
- this.onModelChange = fn;
94
- }
95
- registerOnTouched(fn) {
96
- this.onModelTouched = fn;
97
- }
98
- setDisabledState(isDisabled) {
99
- this._disabled = isDisabled;
100
- }
101
- set value(value) {
102
- if (value !== undefined) {
103
- if (this.handledValue.join(',') !== value) {
104
- value?.split(',')?.forEach((op) => {
105
- this.handledValue.push(op);
106
- });
107
- this.onModelChange(value);
108
- this.onModelTouched(value);
109
- }
110
- }
111
- this.onHandleSelected();
112
- }
113
- get value() {
114
- return this.handledValue.join(',');
115
- }
116
- writeValue(value) {
117
- this.value = value;
118
- }
119
- onChangeValue(event, value) {
120
- event?.preventDefault();
121
- event?.stopPropagation();
122
- this.writeValue(value);
123
- }
124
- clickout() {
125
- this._opened = false;
126
- }
127
- open() {
128
- if (!this._opened) {
129
- setTimeout(() => {
130
- this._opened = true;
131
- this.onHandleSelected();
132
- }, 50);
133
- }
134
- }
135
- ngAfterViewInit() {
136
- setTimeout(() => {
137
- this.validateOptions();
138
- }, 0);
139
- this.options.changes.subscribe(() => {
140
- setTimeout(() => {
141
- this.validateOptions();
142
- }, 0);
143
- });
144
- }
145
- onSelectOption(selected) {
146
- if (selected.selectAll) {
147
- this.selectedAll = !this.selectedAll;
148
- this._selected = [];
149
- if (this.selectedAll) {
150
- this.options?.forEach((op) => {
151
- this._selected.push(op);
152
- });
153
- }
154
- }
155
- else {
156
- const index = this._selected.findIndex((val) => val.value === selected.value);
157
- if (index >= 0) {
158
- this._selected = this._selected.filter((op) => {
159
- return (`${op.value}`.trim().toLowerCase() !== `${selected.value}`.trim().toLowerCase() &&
160
- !op.selectAll);
161
- });
162
- }
163
- else
164
- this._selected.push(selected);
165
- }
166
- const value = this._selected
167
- .filter((val) => !val.selectAll)
168
- .map((val) => {
169
- return val.value;
170
- });
171
- this.onChange.next(value);
172
- this.onChangeValue(null, value.join(','));
173
- this.onHandleSelected();
174
- }
175
- }
176
- MonkeySelectMultipleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeySelectMultipleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
177
- MonkeySelectMultipleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MonkeySelectMultipleComponent, selector: "monkey-select-multiple", inputs: { label: "label", labelMoreValues: "labelMoreValues", helperMessage: "helperMessage", placeholder: "placeholder", icon: "icon", infoMessage: "infoMessage", errorMessage: "errorMessage", value: "value" }, outputs: { onChange: "onChange" }, host: { listeners: { "document:click": "clickout()" } }, providers: [
178
- {
179
- provide: NG_VALUE_ACCESSOR,
180
- useExisting: forwardRef(() => MonkeySelectMultipleComponent),
181
- multi: true,
182
- },
183
- ], queries: [{ propertyName: "options", predicate: MonkeyOptionComponent }], viewQueries: [{ propertyName: "selectOptions", first: true, predicate: ["selectOptions"], descendants: true, static: true }], ngImport: i0, template: `
184
- <mecx-form-field [id]="_id" [ngClass]="{ disabled: _disabled }">
185
- <mecx-form-field-header>
186
- <label>
187
- {{ label }}
188
- </label>
189
- <helper>
190
- {{ helperMessage }}
191
- </helper>
192
- </mecx-form-field-header>
193
- <mecx-form-field-body (click)="open()" [class.error]="errorMessage?.trim()">
194
- <monkey-icon [icon]="icon" [color]="'#4B4A53'"></monkey-icon>
195
-
196
- <mecx-select class="trigger" [ngClass]="{ open: _opened }">
197
- <mecx-select__trigger>
198
- <span>
199
- {{ _selectedValues || 'Selecione' }}
200
- </span>
201
- <monkey-icon
202
- [icon]="!_opened ? 'arrow-down-16' : 'arrow-up-16'"
203
- [color]="'#4B4A53'"
204
- ></monkey-icon>
205
- </mecx-select__trigger>
206
- </mecx-select>
207
- </mecx-form-field-body>
208
- <mecx-select-inside [ngClass]="{ open: _opened }">
209
- <mecx-select-options #selectOptions>
210
- <ng-content> </ng-content>
211
- </mecx-select-options>
212
- </mecx-select-inside>
213
- <mecx-form-field-footer>
214
- <info>
215
- {{ infoMessage }}
216
- </info>
217
- <error>
218
- {{ errorMessage }}
219
- </error>
220
- </mecx-form-field-footer>
221
- </mecx-form-field>
222
- `, isInline: true, components: [{ type: i1.MonkeyIconComponent, selector: "monkey-icon", inputs: ["icon", "color", "contrast", "disabled"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeySelectMultipleComponent, decorators: [{
224
- type: Component,
225
- args: [{
226
- selector: 'monkey-select-multiple',
227
- template: `
228
- <mecx-form-field [id]="_id" [ngClass]="{ disabled: _disabled }">
229
- <mecx-form-field-header>
230
- <label>
231
- {{ label }}
232
- </label>
233
- <helper>
234
- {{ helperMessage }}
235
- </helper>
236
- </mecx-form-field-header>
237
- <mecx-form-field-body (click)="open()" [class.error]="errorMessage?.trim()">
238
- <monkey-icon [icon]="icon" [color]="'#4B4A53'"></monkey-icon>
239
-
240
- <mecx-select class="trigger" [ngClass]="{ open: _opened }">
241
- <mecx-select__trigger>
242
- <span>
243
- {{ _selectedValues || 'Selecione' }}
244
- </span>
245
- <monkey-icon
246
- [icon]="!_opened ? 'arrow-down-16' : 'arrow-up-16'"
247
- [color]="'#4B4A53'"
248
- ></monkey-icon>
249
- </mecx-select__trigger>
250
- </mecx-select>
251
- </mecx-form-field-body>
252
- <mecx-select-inside [ngClass]="{ open: _opened }">
253
- <mecx-select-options #selectOptions>
254
- <ng-content> </ng-content>
255
- </mecx-select-options>
256
- </mecx-select-inside>
257
- <mecx-form-field-footer>
258
- <info>
259
- {{ infoMessage }}
260
- </info>
261
- <error>
262
- {{ errorMessage }}
263
- </error>
264
- </mecx-form-field-footer>
265
- </mecx-form-field>
266
- `,
267
- encapsulation: ViewEncapsulation.None,
268
- providers: [
269
- {
270
- provide: NG_VALUE_ACCESSOR,
271
- useExisting: forwardRef(() => MonkeySelectMultipleComponent),
272
- multi: true,
273
- },
274
- ],
275
- }]
276
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { label: [{
277
- type: Input
278
- }], labelMoreValues: [{
279
- type: Input
280
- }], helperMessage: [{
281
- type: Input
282
- }], placeholder: [{
283
- type: Input
284
- }], icon: [{
285
- type: Input
286
- }], infoMessage: [{
287
- type: Input
288
- }], errorMessage: [{
289
- type: Input
290
- }], onChange: [{
291
- type: Output
292
- }], selectOptions: [{
293
- type: ViewChild,
294
- args: ['selectOptions', { static: true }]
295
- }], options: [{
296
- type: ContentChildren,
297
- args: [MonkeyOptionComponent]
298
- }], value: [{
299
- type: Input
300
- }], clickout: [{
301
- type: HostListener,
302
- args: ['document:click']
303
- }] } });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW11bHRpcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1zdHlsZS1ndWlkZS9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC1tdWx0aXBsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NEJBSTRCO0FBQzVCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUVaLGVBQWUsRUFDZixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsR0FNVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQXFEL0MsTUFBTSxPQUFPLDZCQUE2QjtJQTBCeEMsWUFBb0IsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFsQmxDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBS3JDLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFHcEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFckIsY0FBUyxHQUE0QixFQUFFLENBQUM7UUFDeEMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixRQUFHLEdBQVcsZUFBZSxXQUFXLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDL0QsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixvQkFBZSxHQUFH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S0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFHUCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFPcEMsT0FBTztzQkFEZCxlQUFlO3VCQUFDLHFCQUFxQjtnQkEyRmxDLEtBQUs7c0JBRFIsS0FBSztnQkE2Qk4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gKiBDb3B5cmlnaHQgTW9ua2V5IEV4Y2hhbmdlLiBBbGwgUmlnaHRzIFJlc2VydmVkXHJcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxyXG4gKiBNSVQgTGljZW5jZVxyXG4gKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIElucHV0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPbkluaXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTW9ua2V5T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vb3B0aW9uJztcclxuaW1wb3J0IHsgTW9ua2V5VXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbW9ua2V5LXNlbGVjdC1tdWx0aXBsZScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxtZWN4LWZvcm0tZmllbGQgW2lkXT1cIl9pZFwiIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IF9kaXNhYmxlZCB9XCI+XHJcbiAgICAgIDxtZWN4LWZvcm0tZmllbGQtaGVhZGVyPlxyXG4gICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgIHt7IGxhYmVsIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8aGVscGVyPlxyXG4gICAgICAgICAge3sgaGVscGVyTWVzc2FnZSB9fVxyXG4gICAgICAgIDwvaGVscGVyPlxyXG4gICAgICA8L21lY3gtZm9ybS1maWVsZC1oZWFkZXI+XHJcbiAgICAgIDxtZWN4LWZvcm0tZmllbGQtYm9keSAoY2xpY2spPVwib3BlbigpXCIgW2NsYXNzLmVycm9yXT1cImVycm9yTWVzc2FnZT8udHJpbSgpXCI+XHJcbiAgICAgICAgPG1vbmtleS1pY29uIFtpY29uXT1cImljb25cIiBbY29sb3JdPVwiJyM0QjRBNTMnXCI+PC9tb25rZXktaWNvbj5cclxuXHJcbiAgICAgICAgPG1lY3gtc2VsZWN0IGNsYXNzPVwidHJpZ2dlclwiIFtuZ0NsYXNzXT1cInsgb3BlbjogX29wZW5lZCB9XCI+XHJcbiAgICAgICAgICA8bWVjeC1zZWxlY3RfX3RyaWdnZXI+XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgIHt7IF9zZWxlY3RlZFZhbHVlcyB8fCAnU2VsZWNpb25lJyB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxtb25rZXktaWNvblxyXG4gICAgICAgICAgICAgIFtpY29uXT1cIiFfb3BlbmVkID8gJ2Fycm93LWRvd24tMTYnIDogJ2Fycm93LXVwLTE2J1wiXHJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cIicjNEI0QTUzJ1wiXHJcbiAgICAgICAgICAgID48L21vbmtleS1pY29uPlxyXG4gICAgICAgICAgPC9tZWN4LXNlbGVjdF9fdHJpZ2dlcj5cclxuICAgICAgICA8L21lY3gtc2VsZWN0PlxyXG4gICAgICA8L21lY3gtZm9ybS1maWVsZC1ib2R5PlxyXG4gICAgICA8bWVjeC1zZWxlY3QtaW5zaWRlIFtuZ0NsYXNzXT1cInsgb3BlbjogX29wZW5lZCB9XCI+XHJcbiAgICAgICAgPG1lY3gtc2VsZWN0LW9wdGlvbnMgI3NlbGVjdE9wdGlvbnM+XHJcbiAgICAgICAgICA8bmctY29udGVudD4gPC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvbWVjeC1zZWxlY3Qtb3B0aW9ucz5cclxuICAgICAgPC9tZWN4LXNlbGVjdC1pbnNpZGU+XHJcbiAgICAgIDxtZWN4LWZvcm0tZmllbGQtZm9vdGVyPlxyXG4gICAgICAgIDxpbmZvPlxyXG4gICAgICAgICAge3sgaW5mb01lc3NhZ2UgfX1cclxuICAgICAgICA8L2luZm8+XHJcbiAgICAgICAgPGVycm9yPlxyXG4gICAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgPC9lcnJvcj5cclxuICAgICAgPC9tZWN4LWZvcm0tZmllbGQtZm9vdGVyPlxyXG4gICAgPC9tZWN4LWZvcm0tZmllbGQ+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9ua2V5U2VsZWN0TXVsdGlwbGVDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vbmtleVNlbGVjdE11bHRpcGxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbGFiZWxNb3JlVmFsdWVzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGVscGVyTWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGluZm9NZXNzYWdlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdE9wdGlvbnMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHNlbGVjdE9wdGlvbnM6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlZFZhbHVlOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgb25Nb2RlbENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7fTtcclxuICBwcml2YXRlIG9uTW9kZWxUb3VjaGVkID0gKHZhbHVlOiBhbnkpID0+IHt9O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oTW9ua2V5T3B0aW9uQ29tcG9uZW50KVxyXG4gIHByaXZhdGUgb3B0aW9ucyE6IFF1ZXJ5TGlzdDxNb25rZXlPcHRpb25Db21wb25lbnQ+O1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRBbGwgPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIF9zZWxlY3RlZDogTW9ua2V5T3B0aW9uQ29tcG9uZW50W10gPSBbXTtcclxuICBwdWJsaWMgX29wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBfaWQ6IHN0cmluZyA9IGBtZWN4LXNlbGVjdC0ke01vbmtleVV0aWxzLmdldFJhbmRvbVN0cmluZygxMCl9YDtcclxuICBwdWJsaWMgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIF9zZWxlY3RlZFZhbHVlcyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgcHJpdmF0ZSBvbkhhbmRsZVNlbGVjdGVkVmFsdWVzKCkge1xyXG4gICAgY29uc3QgeyBfc2VsZWN0ZWQsIGxhYmVsTW9yZVZhbHVlcyB9ID0gdGhpcztcclxuICAgIGxldCBzZWxlY3RlZFZhbHVlcyA9ICcnO1xyXG4gICAgY29uc3QgaGFuZGxlZCA9IF9zZWxlY3RlZC5maWx0ZXIoKF8pID0+ICFfLnNlbGVjdEFsbCk7XHJcbiAgICBpZiAoX3NlbGVjdGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgc2VsZWN0ZWRWYWx1ZXMgPSBgJHtoYW5kbGVkWzBdLmxhYmVsfWA7XHJcbiAgICAgIGlmIChfc2VsZWN0ZWQubGVuZ3RoID49IDIpIHtcclxuICAgICAgICBzZWxlY3RlZFZhbHVlcyA9IGAke2hhbmRsZWRbMF0ubGFiZWx9ICR7bGFiZWxNb3JlVmFsdWVzfSAke2hhbmRsZWQubGVuZ3RoIC0gMX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zZWxlY3RlZFZhbHVlcyA9IHNlbGVjdGVkVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkhhbmRsZVNlbGVjdGVkKCkge1xyXG4gICAgY29uc3QgeyBfb3BlbmVkLCBfc2VsZWN0ZWQgfSA9IHRoaXM7XHJcbiAgICBsZXQgc2VsZWN0ZWRMZW5ndGggPSAwO1xyXG4gICAgbGV0IHNlbGVjdEFsbCA9IG51bGw7XHJcbiAgICB0aGlzLm9wdGlvbnM/LmZvckVhY2goKG9wKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZvdW5kID0gX3NlbGVjdGVkLmZpbmRJbmRleCgodmFsOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdmFsLnZhbHVlID09PSBvcC52YWx1ZTtcclxuICAgICAgfSk7XHJcbiAgICAgIG9wLnNlbGVjdGVkID0gbnVsbDtcclxuICAgICAgaWYgKG9wLnNlbGVjdEFsbCkgc2VsZWN0QWxsID0gb3A7XHJcbiAgICAgIGlmIChmb3VuZCA+PSAwKSB7XHJcbiAgICAgICAgb3Auc2VsZWN0ZWQgPSBvcDtcclxuICAgICAgICBzZWxlY3RlZExlbmd0aCArPSAxO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnM/Lmxlbmd0aCAtIDEgPT09IHNlbGVjdGVkTGVuZ3RoICYmIHNlbGVjdEFsbCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWxsID0gdHJ1ZTtcclxuICAgICAgc2VsZWN0QWxsLnNlbGVjdGVkID0gc2VsZWN0QWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vbkhhbmRsZVNlbGVjdGVkVmFsdWVzKCk7XHJcblxyXG4gICAgaWYgKF9vcGVuZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RPcHRpb25zLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlT3B0aW9ucygpIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zKSByZXR1cm47XHJcbiAgICB0aGlzLl9zZWxlY3RlZCA9IFtdO1xyXG4gICAgbGV0IHNlbGVjdGVkTGVuZ3RoID0gMDtcclxuICAgIGxldCBzZWxlY3RBbGwgPSBudWxsO1xyXG4gICAgdGhpcy5vcHRpb25zPy5mb3JFYWNoKChvcCkgPT4ge1xyXG4gICAgICBvcC5vblNlbGVjdE9wdGlvbiA9IHRoaXMub25TZWxlY3RPcHRpb24uYmluZCh0aGlzKTtcclxuICAgICAgb3AudHlwZSA9ICdzZWxlY3QtbXVsdGlwbGUnO1xyXG4gICAgICBvcC5zZWxlY3RlZCA9IG51bGw7XHJcbiAgICAgIGlmIChvcC5zZWxlY3RBbGwpIHNlbGVjdEFsbCA9IG9wO1xyXG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuaGFuZGxlZFZhbHVlLmZpbmRJbmRleCgodmFsOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gYCR7dmFsfWAudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IGAke29wLnZhbHVlfWAudHJpbSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoZm91bmQgPj0gMCkge1xyXG4gICAgICAgIG9wLnNlbGVjdGVkID0gb3A7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQucHVzaChvcCk7XHJcbiAgICAgICAgc2VsZWN0ZWRMZW5ndGggKz0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zPy5sZW5ndGggLSAxID09PSBzZWxlY3RlZExlbmd0aCAmJiBzZWxlY3RBbGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IHRydWU7XHJcbiAgICAgIHNlbGVjdEFsbC5zZWxlY3RlZCA9IHNlbGVjdEFsbDtcclxuICAgIH1cclxuICAgIHRoaXMub25IYW5kbGVTZWxlY3RlZFZhbHVlcygpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhbmRsZWRWYWx1ZS5qb2luKCcsJykgIT09IHZhbHVlKSB7XHJcbiAgICAgICAgdmFsdWU/LnNwbGl0KCcsJyk/LmZvckVhY2goKG9wOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlZFZhbHVlLnB1c2gob3ApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCh2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMub25IYW5kbGVTZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVkVmFsdWUuam9pbignLCcpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVZhbHVlKGV2ZW50OiBhbnksIHZhbHVlOiBhbnkpIHtcclxuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJylcclxuICBjbGlja291dCgpIHtcclxuICAgIHRoaXMuX29wZW5lZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgb3BlbigpIHtcclxuICAgIGlmICghdGhpcy5fb3BlbmVkKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX29wZW5lZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vbkhhbmRsZVNlbGVjdGVkKCk7XHJcbiAgICAgIH0sIDUwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlT3B0aW9ucygpO1xyXG4gICAgfSwgMCk7XHJcblxyXG4gICAgdGhpcy5vcHRpb25zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZU9wdGlvbnMoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0T3B0aW9uKHNlbGVjdGVkOiBNb25rZXlPcHRpb25Db21wb25lbnQpIHtcclxuICAgIGlmIChzZWxlY3RlZC5zZWxlY3RBbGwpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9ICF0aGlzLnNlbGVjdGVkQWxsO1xyXG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEFsbCkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucz8uZm9yRWFjaCgob3ApID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NlbGVjdGVkLnB1c2gob3ApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuX3NlbGVjdGVkLmZpbmRJbmRleCgodmFsOiBhbnkpID0+IHZhbC52YWx1ZSA9PT0gc2VsZWN0ZWQudmFsdWUpO1xyXG4gICAgICBpZiAoaW5kZXggPj0gMCkge1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdGhpcy5fc2VsZWN0ZWQuZmlsdGVyKChvcDogTW9ua2V5T3B0aW9uQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICBgJHtvcC52YWx1ZX1gLnRyaW0oKS50b0xvd2VyQ2FzZSgpICE9PSBgJHtzZWxlY3RlZC52YWx1ZX1gLnRyaW0oKS50b0xvd2VyQ2FzZSgpICYmXHJcbiAgICAgICAgICAgICFvcC5zZWxlY3RBbGxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB0aGlzLl9zZWxlY3RlZC5wdXNoKHNlbGVjdGVkKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fc2VsZWN0ZWRcclxuICAgICAgLmZpbHRlcigodmFsKSA9PiAhdmFsLnNlbGVjdEFsbClcclxuICAgICAgLm1hcCgodmFsOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4gdmFsLnZhbHVlO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlLm5leHQodmFsdWUpO1xyXG4gICAgdGhpcy5vbkNoYW5nZVZhbHVlKG51bGwsIHZhbHVlLmpvaW4oJywnKSk7XHJcbiAgICB0aGlzLm9uSGFuZGxlU2VsZWN0ZWQoKTtcclxuICB9XHJcbn1cclxuIl19
1
+ /**************************
2
+ * Copyright Monkey Exchange. All Rights Reserved
3
+ * This style guide was developed by Monkey Exchange Team
4
+ * MIT Licence
5
+ **************************/
6
+ import { Component, ViewEncapsulation, Input, forwardRef, HostListener, ContentChildren, Output, EventEmitter, ViewChild, } from '@angular/core';
7
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
+ import { MonkeyOptionComponent } from '../option';
9
+ import { MonkeyUtils } from '../../core/utils';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../icon/icon.component";
12
+ import * as i2 from "@angular/common";
13
+ export class MonkeySelectMultipleComponent {
14
+ constructor(cdRef) {
15
+ this.cdRef = cdRef;
16
+ this.onChange = new EventEmitter();
17
+ this.handledValue = [];
18
+ this.onModelChange = (value) => { };
19
+ this.onModelTouched = (value) => { };
20
+ this.selectedAll = false;
21
+ this._selected = [];
22
+ this._opened = false;
23
+ this._id = `mecx-select-${MonkeyUtils.getRandomString(10)}`;
24
+ this._disabled = false;
25
+ this._selectedValues = '';
26
+ }
27
+ onHandleSelectedValues() {
28
+ const { _selected, labelMoreValues } = this;
29
+ let selectedValues = '';
30
+ const handled = _selected.filter((_) => !_.selectAll);
31
+ if (_selected.length > 0) {
32
+ selectedValues = `${handled[0].label}`;
33
+ if (_selected.length >= 2) {
34
+ selectedValues = `${handled[0].label} ${labelMoreValues} ${handled.length - 1}`;
35
+ }
36
+ }
37
+ this._selectedValues = selectedValues;
38
+ }
39
+ onHandleSelected() {
40
+ const { _opened, _selected } = this;
41
+ let selectedLength = 0;
42
+ let selectAll = null;
43
+ this.options?.forEach((op) => {
44
+ const found = _selected.findIndex((val) => {
45
+ return val.value === op.value;
46
+ });
47
+ op.selected = null;
48
+ if (op.selectAll)
49
+ selectAll = op;
50
+ if (found >= 0) {
51
+ op.selected = op;
52
+ selectedLength += 1;
53
+ }
54
+ });
55
+ if (this.options?.length - 1 === selectedLength && selectAll) {
56
+ this.selectedAll = true;
57
+ selectAll.selected = selectAll;
58
+ }
59
+ this.onHandleSelectedValues();
60
+ if (_opened) {
61
+ this.selectOptions.nativeElement.focus();
62
+ this.cdRef.detectChanges();
63
+ }
64
+ }
65
+ validateOptions() {
66
+ if (!this.options)
67
+ return;
68
+ this._selected = [];
69
+ let selectedLength = 0;
70
+ let selectAll = null;
71
+ this.options?.forEach((op) => {
72
+ op.onSelectOption = this.onSelectOption.bind(this);
73
+ op.type = 'select-multiple';
74
+ op.selected = null;
75
+ if (op.selectAll)
76
+ selectAll = op;
77
+ const found = this.handledValue.findIndex((val) => {
78
+ return `${val}`.trim().toLowerCase() === `${op.value}`.trim().toLowerCase();
79
+ });
80
+ if (found >= 0) {
81
+ op.selected = op;
82
+ this._selected.push(op);
83
+ selectedLength += 1;
84
+ }
85
+ });
86
+ if (this.options?.length - 1 === selectedLength && selectAll) {
87
+ this.selectedAll = true;
88
+ selectAll.selected = selectAll;
89
+ }
90
+ this.onHandleSelectedValues();
91
+ }
92
+ registerOnChange(fn) {
93
+ this.onModelChange = fn;
94
+ }
95
+ registerOnTouched(fn) {
96
+ this.onModelTouched = fn;
97
+ }
98
+ setDisabledState(isDisabled) {
99
+ this._disabled = isDisabled;
100
+ }
101
+ set value(value) {
102
+ if (value !== undefined) {
103
+ if (this.handledValue.join(',') !== value) {
104
+ value?.split(',')?.forEach((op) => {
105
+ this.handledValue.push(op);
106
+ });
107
+ this.onModelChange(value);
108
+ this.onModelTouched(value);
109
+ }
110
+ }
111
+ this.onHandleSelected();
112
+ }
113
+ get value() {
114
+ return this.handledValue.join(',');
115
+ }
116
+ writeValue(value) {
117
+ this.value = value;
118
+ }
119
+ onChangeValue(event, value) {
120
+ event?.preventDefault();
121
+ event?.stopPropagation();
122
+ this.writeValue(value);
123
+ }
124
+ clickout() {
125
+ this._opened = false;
126
+ }
127
+ open() {
128
+ if (!this._opened) {
129
+ setTimeout(() => {
130
+ this._opened = true;
131
+ this.onHandleSelected();
132
+ }, 50);
133
+ }
134
+ }
135
+ ngAfterViewInit() {
136
+ setTimeout(() => {
137
+ this.validateOptions();
138
+ }, 0);
139
+ this.options.changes.subscribe(() => {
140
+ setTimeout(() => {
141
+ this.validateOptions();
142
+ }, 0);
143
+ });
144
+ }
145
+ onSelectOption(selected) {
146
+ if (selected.selectAll) {
147
+ this.selectedAll = !this.selectedAll;
148
+ this._selected = [];
149
+ if (this.selectedAll) {
150
+ this.options?.forEach((op) => {
151
+ this._selected.push(op);
152
+ });
153
+ }
154
+ }
155
+ else {
156
+ const index = this._selected.findIndex((val) => val.value === selected.value);
157
+ if (index >= 0) {
158
+ this._selected = this._selected.filter((op) => {
159
+ return (`${op.value}`.trim().toLowerCase() !== `${selected.value}`.trim().toLowerCase() &&
160
+ !op.selectAll);
161
+ });
162
+ }
163
+ else
164
+ this._selected.push(selected);
165
+ }
166
+ const value = this._selected
167
+ .filter((val) => !val.selectAll)
168
+ .map((val) => {
169
+ return val.value;
170
+ });
171
+ this.onChange.next(value);
172
+ this.onChangeValue(null, value.join(','));
173
+ this.onHandleSelected();
174
+ }
175
+ }
176
+ MonkeySelectMultipleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeySelectMultipleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
177
+ MonkeySelectMultipleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MonkeySelectMultipleComponent, selector: "monkey-select-multiple", inputs: { label: "label", labelMoreValues: "labelMoreValues", helperMessage: "helperMessage", placeholder: "placeholder", icon: "icon", infoMessage: "infoMessage", errorMessage: "errorMessage", value: "value" }, outputs: { onChange: "onChange" }, host: { listeners: { "document:click": "clickout()" } }, providers: [
178
+ {
179
+ provide: NG_VALUE_ACCESSOR,
180
+ useExisting: forwardRef(() => MonkeySelectMultipleComponent),
181
+ multi: true,
182
+ },
183
+ ], queries: [{ propertyName: "options", predicate: MonkeyOptionComponent }], viewQueries: [{ propertyName: "selectOptions", first: true, predicate: ["selectOptions"], descendants: true, static: true }], ngImport: i0, template: `
184
+ <mecx-form-field [id]="_id" [ngClass]="{ disabled: _disabled }">
185
+ <mecx-form-field-header>
186
+ <label>
187
+ {{ label }}
188
+ </label>
189
+ <helper>
190
+ {{ helperMessage }}
191
+ </helper>
192
+ </mecx-form-field-header>
193
+ <mecx-form-field-body (click)="open()" [class.error]="errorMessage?.trim()">
194
+ <monkey-icon [icon]="icon" [color]="'#4B4A53'"></monkey-icon>
195
+
196
+ <mecx-select class="trigger" [ngClass]="{ open: _opened }">
197
+ <mecx-select__trigger>
198
+ <span>
199
+ {{ _selectedValues || 'Selecione' }}
200
+ </span>
201
+ <monkey-icon
202
+ [icon]="!_opened ? 'arrow-down-16' : 'arrow-up-16'"
203
+ [color]="'#4B4A53'"
204
+ ></monkey-icon>
205
+ </mecx-select__trigger>
206
+ </mecx-select>
207
+ </mecx-form-field-body>
208
+ <mecx-select-inside [ngClass]="{ open: _opened }">
209
+ <mecx-select-options #selectOptions>
210
+ <ng-content> </ng-content>
211
+ </mecx-select-options>
212
+ </mecx-select-inside>
213
+ <mecx-form-field-footer>
214
+ <info>
215
+ {{ infoMessage }}
216
+ </info>
217
+ <error>
218
+ {{ errorMessage }}
219
+ </error>
220
+ </mecx-form-field-footer>
221
+ </mecx-form-field>
222
+ `, isInline: true, components: [{ type: i1.MonkeyIconComponent, selector: "monkey-icon", inputs: ["icon", "color", "contrast", "disabled"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None });
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeySelectMultipleComponent, decorators: [{
224
+ type: Component,
225
+ args: [{
226
+ selector: 'monkey-select-multiple',
227
+ template: `
228
+ <mecx-form-field [id]="_id" [ngClass]="{ disabled: _disabled }">
229
+ <mecx-form-field-header>
230
+ <label>
231
+ {{ label }}
232
+ </label>
233
+ <helper>
234
+ {{ helperMessage }}
235
+ </helper>
236
+ </mecx-form-field-header>
237
+ <mecx-form-field-body (click)="open()" [class.error]="errorMessage?.trim()">
238
+ <monkey-icon [icon]="icon" [color]="'#4B4A53'"></monkey-icon>
239
+
240
+ <mecx-select class="trigger" [ngClass]="{ open: _opened }">
241
+ <mecx-select__trigger>
242
+ <span>
243
+ {{ _selectedValues || 'Selecione' }}
244
+ </span>
245
+ <monkey-icon
246
+ [icon]="!_opened ? 'arrow-down-16' : 'arrow-up-16'"
247
+ [color]="'#4B4A53'"
248
+ ></monkey-icon>
249
+ </mecx-select__trigger>
250
+ </mecx-select>
251
+ </mecx-form-field-body>
252
+ <mecx-select-inside [ngClass]="{ open: _opened }">
253
+ <mecx-select-options #selectOptions>
254
+ <ng-content> </ng-content>
255
+ </mecx-select-options>
256
+ </mecx-select-inside>
257
+ <mecx-form-field-footer>
258
+ <info>
259
+ {{ infoMessage }}
260
+ </info>
261
+ <error>
262
+ {{ errorMessage }}
263
+ </error>
264
+ </mecx-form-field-footer>
265
+ </mecx-form-field>
266
+ `,
267
+ encapsulation: ViewEncapsulation.None,
268
+ providers: [
269
+ {
270
+ provide: NG_VALUE_ACCESSOR,
271
+ useExisting: forwardRef(() => MonkeySelectMultipleComponent),
272
+ multi: true,
273
+ },
274
+ ],
275
+ }]
276
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { label: [{
277
+ type: Input
278
+ }], labelMoreValues: [{
279
+ type: Input
280
+ }], helperMessage: [{
281
+ type: Input
282
+ }], placeholder: [{
283
+ type: Input
284
+ }], icon: [{
285
+ type: Input
286
+ }], infoMessage: [{
287
+ type: Input
288
+ }], errorMessage: [{
289
+ type: Input
290
+ }], onChange: [{
291
+ type: Output
292
+ }], selectOptions: [{
293
+ type: ViewChild,
294
+ args: ['selectOptions', { static: true }]
295
+ }], options: [{
296
+ type: ContentChildren,
297
+ args: [MonkeyOptionComponent]
298
+ }], value: [{
299
+ type: Input
300
+ }], clickout: [{
301
+ type: HostListener,
302
+ args: ['document:click']
303
+ }] } });
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW11bHRpcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1zdHlsZS1ndWlkZS9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC1tdWx0aXBsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NEJBSTRCO0FBQzVCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxVQUFVLEVBQ1YsWUFBWSxFQUVaLGVBQWUsRUFDZixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsR0FNVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQXFEL0MsTUFBTSxPQUFPLDZCQUE2QjtJQTBCeEMsWUFBb0IsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFsQmxDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBS3JDLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFHcEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFckIsY0FBUyxHQUE0QixFQUFFLENBQUM7UUFDeEMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixRQUFHLEdBQVcsZUFBZSxXQUFXLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDL0QsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixvQkFBZSxHQUFH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S0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFHUCxhQUFhO3NCQURaLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFPcEMsT0FBTztzQkFEZCxlQUFlO3VCQUFDLHFCQUFxQjtnQkEyRmxDLEtBQUs7c0JBRFIsS0FBSztnQkE2Qk4sUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IE1vbmtleSBFeGNoYW5nZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZFxuICogVGhpcyBzdHlsZSBndWlkZSB3YXMgZGV2ZWxvcGVkIGJ5IE1vbmtleSBFeGNoYW5nZSBUZWFtXG4gKiBNSVQgTGljZW5jZVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5wdXQsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgUXVlcnlMaXN0LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNb25rZXlPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24nO1xuaW1wb3J0IHsgTW9ua2V5VXRpbHMgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9ua2V5LXNlbGVjdC1tdWx0aXBsZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG1lY3gtZm9ybS1maWVsZCBbaWRdPVwiX2lkXCIgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogX2Rpc2FibGVkIH1cIj5cbiAgICAgIDxtZWN4LWZvcm0tZmllbGQtaGVhZGVyPlxuICAgICAgICA8bGFiZWw+XG4gICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGhlbHBlcj5cbiAgICAgICAgICB7eyBoZWxwZXJNZXNzYWdlIH19XG4gICAgICAgIDwvaGVscGVyPlxuICAgICAgPC9tZWN4LWZvcm0tZmllbGQtaGVhZGVyPlxuICAgICAgPG1lY3gtZm9ybS1maWVsZC1ib2R5IChjbGljayk9XCJvcGVuKClcIiBbY2xhc3MuZXJyb3JdPVwiZXJyb3JNZXNzYWdlPy50cmltKClcIj5cbiAgICAgICAgPG1vbmtleS1pY29uIFtpY29uXT1cImljb25cIiBbY29sb3JdPVwiJyM0QjRBNTMnXCI+PC9tb25rZXktaWNvbj5cblxuICAgICAgICA8bWVjeC1zZWxlY3QgY2xhc3M9XCJ0cmlnZ2VyXCIgW25nQ2xhc3NdPVwieyBvcGVuOiBfb3BlbmVkIH1cIj5cbiAgICAgICAgICA8bWVjeC1zZWxlY3RfX3RyaWdnZXI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAge3sgX3NlbGVjdGVkVmFsdWVzIHx8ICdTZWxlY2lvbmUnIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8bW9ua2V5LWljb25cbiAgICAgICAgICAgICAgW2ljb25dPVwiIV9vcGVuZWQgPyAnYXJyb3ctZG93bi0xNicgOiAnYXJyb3ctdXAtMTYnXCJcbiAgICAgICAgICAgICAgW2NvbG9yXT1cIicjNEI0QTUzJ1wiXG4gICAgICAgICAgICA+PC9tb25rZXktaWNvbj5cbiAgICAgICAgICA8L21lY3gtc2VsZWN0X190cmlnZ2VyPlxuICAgICAgICA8L21lY3gtc2VsZWN0PlxuICAgICAgPC9tZWN4LWZvcm0tZmllbGQtYm9keT5cbiAgICAgIDxtZWN4LXNlbGVjdC1pbnNpZGUgW25nQ2xhc3NdPVwieyBvcGVuOiBfb3BlbmVkIH1cIj5cbiAgICAgICAgPG1lY3gtc2VsZWN0LW9wdGlvbnMgI3NlbGVjdE9wdGlvbnM+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+IDwvbmctY29udGVudD5cbiAgICAgICAgPC9tZWN4LXNlbGVjdC1vcHRpb25zPlxuICAgICAgPC9tZWN4LXNlbGVjdC1pbnNpZGU+XG4gICAgICA8bWVjeC1mb3JtLWZpZWxkLWZvb3Rlcj5cbiAgICAgICAgPGluZm8+XG4gICAgICAgICAge3sgaW5mb01lc3NhZ2UgfX1cbiAgICAgICAgPC9pbmZvPlxuICAgICAgICA8ZXJyb3I+XG4gICAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgICAgIDwvZXJyb3I+XG4gICAgICA8L21lY3gtZm9ybS1maWVsZC1mb290ZXI+XG4gICAgPC9tZWN4LWZvcm0tZmllbGQ+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9ua2V5U2VsZWN0TXVsdGlwbGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9ua2V5U2VsZWN0TXVsdGlwbGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsTW9yZVZhbHVlczogc3RyaW5nO1xuICBASW5wdXQoKSBoZWxwZXJNZXNzYWdlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgaW5mb01lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdE9wdGlvbnMnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBzZWxlY3RPcHRpb25zOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgaGFuZGxlZFZhbHVlOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIG9uTW9kZWxDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XG4gIHByaXZhdGUgb25Nb2RlbFRvdWNoZWQgPSAodmFsdWU6IGFueSkgPT4ge307XG4gIEBDb250ZW50Q2hpbGRyZW4oTW9ua2V5T3B0aW9uQ29tcG9uZW50KVxuICBwcml2YXRlIG9wdGlvbnMhOiBRdWVyeUxpc3Q8TW9ua2V5T3B0aW9uQ29tcG9uZW50PjtcbiAgcHJpdmF0ZSBzZWxlY3RlZEFsbCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBfc2VsZWN0ZWQ6IE1vbmtleU9wdGlvbkNvbXBvbmVudFtdID0gW107XG4gIHB1YmxpYyBfb3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBfaWQ6IHN0cmluZyA9IGBtZWN4LXNlbGVjdC0ke01vbmtleVV0aWxzLmdldFJhbmRvbVN0cmluZygxMCl9YDtcbiAgcHVibGljIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgX3NlbGVjdGVkVmFsdWVzID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgcHJpdmF0ZSBvbkhhbmRsZVNlbGVjdGVkVmFsdWVzKCkge1xuICAgIGNvbnN0IHsgX3NlbGVjdGVkLCBsYWJlbE1vcmVWYWx1ZXMgfSA9IHRoaXM7XG4gICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gJyc7XG4gICAgY29uc3QgaGFuZGxlZCA9IF9zZWxlY3RlZC5maWx0ZXIoKF8pID0+ICFfLnNlbGVjdEFsbCk7XG4gICAgaWYgKF9zZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICBzZWxlY3RlZFZhbHVlcyA9IGAke2hhbmRsZWRbMF0ubGFiZWx9YDtcbiAgICAgIGlmIChfc2VsZWN0ZWQubGVuZ3RoID49IDIpIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMgPSBgJHtoYW5kbGVkWzBdLmxhYmVsfSAke2xhYmVsTW9yZVZhbHVlc30gJHtoYW5kbGVkLmxlbmd0aCAtIDF9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWRWYWx1ZXMgPSBzZWxlY3RlZFZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgb25IYW5kbGVTZWxlY3RlZCgpIHtcbiAgICBjb25zdCB7IF9vcGVuZWQsIF9zZWxlY3RlZCB9ID0gdGhpcztcbiAgICBsZXQgc2VsZWN0ZWRMZW5ndGggPSAwO1xuICAgIGxldCBzZWxlY3RBbGwgPSBudWxsO1xuICAgIHRoaXMub3B0aW9ucz8uZm9yRWFjaCgob3ApID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gX3NlbGVjdGVkLmZpbmRJbmRleCgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHZhbC52YWx1ZSA9PT0gb3AudmFsdWU7XG4gICAgICB9KTtcbiAgICAgIG9wLnNlbGVjdGVkID0gbnVsbDtcbiAgICAgIGlmIChvcC5zZWxlY3RBbGwpIHNlbGVjdEFsbCA9IG9wO1xuICAgICAgaWYgKGZvdW5kID49IDApIHtcbiAgICAgICAgb3Auc2VsZWN0ZWQgPSBvcDtcbiAgICAgICAgc2VsZWN0ZWRMZW5ndGggKz0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodGhpcy5vcHRpb25zPy5sZW5ndGggLSAxID09PSBzZWxlY3RlZExlbmd0aCAmJiBzZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSB0cnVlO1xuICAgICAgc2VsZWN0QWxsLnNlbGVjdGVkID0gc2VsZWN0QWxsO1xuICAgIH1cbiAgICB0aGlzLm9uSGFuZGxlU2VsZWN0ZWRWYWx1ZXMoKTtcblxuICAgIGlmIChfb3BlbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdE9wdGlvbnMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMpIHJldHVybjtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IFtdO1xuICAgIGxldCBzZWxlY3RlZExlbmd0aCA9IDA7XG4gICAgbGV0IHNlbGVjdEFsbCA9IG51bGw7XG4gICAgdGhpcy5vcHRpb25zPy5mb3JFYWNoKChvcCkgPT4ge1xuICAgICAgb3Aub25TZWxlY3RPcHRpb24gPSB0aGlzLm9uU2VsZWN0T3B0aW9uLmJpbmQodGhpcyk7XG4gICAgICBvcC50eXBlID0gJ3NlbGVjdC1tdWx0aXBsZSc7XG4gICAgICBvcC5zZWxlY3RlZCA9IG51bGw7XG4gICAgICBpZiAob3Auc2VsZWN0QWxsKSBzZWxlY3RBbGwgPSBvcDtcbiAgICAgIGNvbnN0IGZvdW5kID0gdGhpcy5oYW5kbGVkVmFsdWUuZmluZEluZGV4KCh2YWw6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gYCR7dmFsfWAudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IGAke29wLnZhbHVlfWAudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9KTtcbiAgICAgIGlmIChmb3VuZCA+PSAwKSB7XG4gICAgICAgIG9wLnNlbGVjdGVkID0gb3A7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLnB1c2gob3ApO1xuICAgICAgICBzZWxlY3RlZExlbmd0aCArPSAxO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0aGlzLm9wdGlvbnM/Lmxlbmd0aCAtIDEgPT09IHNlbGVjdGVkTGVuZ3RoICYmIHNlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IHRydWU7XG4gICAgICBzZWxlY3RBbGwuc2VsZWN0ZWQgPSBzZWxlY3RBbGw7XG4gICAgfVxuICAgIHRoaXMub25IYW5kbGVTZWxlY3RlZFZhbHVlcygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLmhhbmRsZWRWYWx1ZS5qb2luKCcsJykgIT09IHZhbHVlKSB7XG4gICAgICAgIHZhbHVlPy5zcGxpdCgnLCcpPy5mb3JFYWNoKChvcDogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVkVmFsdWUucHVzaChvcCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWUpO1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vbkhhbmRsZVNlbGVjdGVkKCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVkVmFsdWUuam9pbignLCcpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgb25DaGFuZ2VWYWx1ZShldmVudDogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycpXG4gIGNsaWNrb3V0KCkge1xuICAgIHRoaXMuX29wZW5lZCA9IGZhbHNlO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICBpZiAoIXRoaXMuX29wZW5lZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX29wZW5lZCA9IHRydWU7XG4gICAgICAgIHRoaXMub25IYW5kbGVTZWxlY3RlZCgpO1xuICAgICAgfSwgNTApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudmFsaWRhdGVPcHRpb25zKCk7XG4gICAgfSwgMCk7XG5cbiAgICB0aGlzLm9wdGlvbnMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVPcHRpb25zKCk7XG4gICAgICB9LCAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uU2VsZWN0T3B0aW9uKHNlbGVjdGVkOiBNb25rZXlPcHRpb25Db21wb25lbnQpIHtcbiAgICBpZiAoc2VsZWN0ZWQuc2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQWxsID0gIXRoaXMuc2VsZWN0ZWRBbGw7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IFtdO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBbGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zPy5mb3JFYWNoKChvcCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGVkLnB1c2gob3ApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9zZWxlY3RlZC5maW5kSW5kZXgoKHZhbDogYW55KSA9PiB2YWwudmFsdWUgPT09IHNlbGVjdGVkLnZhbHVlKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdGhpcy5fc2VsZWN0ZWQuZmlsdGVyKChvcDogTW9ua2V5T3B0aW9uQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGAke29wLnZhbHVlfWAudHJpbSgpLnRvTG93ZXJDYXNlKCkgIT09IGAke3NlbGVjdGVkLnZhbHVlfWAudHJpbSgpLnRvTG93ZXJDYXNlKCkgJiZcbiAgICAgICAgICAgICFvcC5zZWxlY3RBbGxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB0aGlzLl9zZWxlY3RlZC5wdXNoKHNlbGVjdGVkKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9zZWxlY3RlZFxuICAgICAgLmZpbHRlcigodmFsKSA9PiAhdmFsLnNlbGVjdEFsbClcbiAgICAgIC5tYXAoKHZhbDogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB2YWwudmFsdWU7XG4gICAgICB9KTtcblxuICAgIHRoaXMub25DaGFuZ2UubmV4dCh2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZVZhbHVlKG51bGwsIHZhbHVlLmpvaW4oJywnKSk7XG4gICAgdGhpcy5vbkhhbmRsZVNlbGVjdGVkKCk7XG4gIH1cbn1cbiJdfQ==