monkey-style-guide-v2 0.0.17 → 0.0.19

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 (281) hide show
  1. package/assets/scss/directives/_badge.scss +49 -0
  2. package/assets/scss/directives/_index.scss +1 -0
  3. package/assets/scss/table/_styles.scss +0 -33
  4. package/esm2022/lib/components/accordion/accordion.component.mjs +102 -0
  5. package/esm2022/lib/components/accordion/index.mjs +7 -0
  6. package/esm2022/lib/components/action-bar/action-bar.component.mjs +46 -0
  7. package/esm2022/lib/components/action-bar/index.mjs +7 -0
  8. package/esm2022/lib/components/alert/alert.component.mjs +50 -0
  9. package/esm2022/lib/components/alert/index.mjs +7 -0
  10. package/esm2022/lib/components/avatar/avatar.component.mjs +55 -0
  11. package/esm2022/lib/components/avatar/index.mjs +7 -0
  12. package/esm2022/lib/components/badge/badge.component.mjs +74 -0
  13. package/esm2022/lib/components/badge/index.mjs +7 -0
  14. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +56 -0
  15. package/esm2022/lib/components/breadcrumb/index.mjs +7 -0
  16. package/esm2022/lib/components/{monkey-button/monkey-button.component.mjs → button/button.component.mjs} +1 -1
  17. package/esm2022/lib/components/button/index.mjs +7 -0
  18. package/esm2022/lib/components/checkbox/checkbox.component.mjs +219 -0
  19. package/esm2022/lib/components/checkbox/index.mjs +7 -0
  20. package/esm2022/lib/components/date-range/date-range.component.mjs +239 -0
  21. package/esm2022/lib/components/date-range/index.mjs +7 -0
  22. package/esm2022/lib/components/date-range/month/index.mjs +7 -0
  23. package/esm2022/lib/components/date-range/month/month.component.mjs +148 -0
  24. package/esm2022/lib/components/date-range/quick-actions/index.mjs +7 -0
  25. package/esm2022/lib/components/date-range/quick-actions/quick-actions.component.mjs +48 -0
  26. package/esm2022/lib/components/date-range/utils.mjs +102 -0
  27. package/esm2022/lib/components/divider/divider.component.mjs +44 -0
  28. package/esm2022/lib/components/divider/index.mjs +7 -0
  29. package/esm2022/lib/components/form-field/form-field-control.mjs +15 -0
  30. package/esm2022/lib/components/form-field/form-field.component.mjs +268 -0
  31. package/esm2022/lib/components/form-field/form-field.module.mjs +21 -0
  32. package/esm2022/lib/components/form-field/index.mjs +10 -0
  33. package/esm2022/lib/components/form-field/utils.mjs +16 -0
  34. package/esm2022/lib/components/icon/icon.component.mjs +51 -0
  35. package/esm2022/lib/components/icon/index.mjs +7 -0
  36. package/esm2022/lib/components/{monkey-icon-button/monkey-icon-button.component.mjs → icon-button/icon-button.component.mjs} +2 -2
  37. package/esm2022/lib/components/icon-button/index.mjs +7 -0
  38. package/esm2022/lib/components/index.mjs +27 -21
  39. package/esm2022/lib/components/input/index.mjs +9 -0
  40. package/esm2022/lib/components/input/input-currency.directive.mjs +185 -0
  41. package/esm2022/lib/components/input/input.directive.mjs +185 -0
  42. package/esm2022/lib/components/input/input.module.mjs +24 -0
  43. package/esm2022/lib/components/input/validators.mjs +22 -0
  44. package/esm2022/lib/components/input-code/index.mjs +7 -0
  45. package/esm2022/lib/components/input-code/input-code.component.mjs +232 -0
  46. package/esm2022/lib/components/input-upload/index.mjs +7 -0
  47. package/esm2022/lib/components/input-upload/input-upload.component.mjs +238 -0
  48. package/esm2022/lib/components/{monkey-modal → modal}/components/default.mjs +8 -6
  49. package/esm2022/lib/components/{monkey-modal → modal}/directives/actions.mjs +1 -1
  50. package/esm2022/lib/components/{monkey-modal → modal}/directives/content.mjs +1 -1
  51. package/esm2022/lib/components/{monkey-modal → modal}/directives/subtitle.mjs +1 -1
  52. package/esm2022/lib/components/{monkey-modal → modal}/directives/title.mjs +1 -1
  53. package/esm2022/lib/components/modal/index.mjs +16 -0
  54. package/esm2022/lib/components/modal/modal-config.mjs +20 -0
  55. package/esm2022/lib/components/modal/modal-ref.mjs +49 -0
  56. package/esm2022/lib/components/modal/modal.component.mjs +117 -0
  57. package/esm2022/lib/components/modal/modal.module.mjs +53 -0
  58. package/esm2022/lib/components/modal/modal.service.mjs +137 -0
  59. package/esm2022/lib/components/modal/utils.mjs +23 -0
  60. package/esm2022/lib/components/option/index.mjs +7 -0
  61. package/esm2022/lib/components/{monkey-option/monkey-option.component.mjs → option/option.component.mjs} +1 -1
  62. package/esm2022/lib/components/security-level/index.mjs +7 -0
  63. package/esm2022/lib/components/{monkey-security-level/monkey-security-level.component.mjs → security-level/security-level.component.mjs} +1 -1
  64. package/esm2022/lib/components/select/index.mjs +7 -0
  65. package/esm2022/lib/components/select/select.component.mjs +448 -0
  66. package/esm2022/lib/components/status/index.mjs +7 -0
  67. package/esm2022/lib/components/{monkey-status/monkey-status.component.mjs → status/status.component.mjs} +1 -1
  68. package/esm2022/lib/components/{monkey-table → table}/components/pagination-action/pagination-action.mjs +2 -2
  69. package/esm2022/lib/components/table/components/pagination-label/pagination-label.mjs +34 -0
  70. package/esm2022/lib/components/table/components/pagination-size/pagination-size.mjs +57 -0
  71. package/esm2022/lib/components/table/directives/column-checked.mjs +109 -0
  72. package/esm2022/lib/components/table/directives/column-expansible.mjs +134 -0
  73. package/esm2022/lib/components/table/directives/column-sortable.mjs +97 -0
  74. package/esm2022/lib/components/{monkey-table → table}/directives/column-stick.mjs +1 -1
  75. package/esm2022/lib/components/table/index.mjs +15 -0
  76. package/esm2022/lib/components/{monkey-table/table.mjs → table/table.component.mjs} +3 -2
  77. package/esm2022/lib/components/table/table.module.mjs +64 -0
  78. package/esm2022/lib/components/toast/index.mjs +7 -0
  79. package/esm2022/lib/components/toast/toast.component.mjs +79 -0
  80. package/esm2022/lib/components/toggle/index.mjs +7 -0
  81. package/esm2022/lib/components/{monkey-toggle/monkey-toggle.component.mjs → toggle/toggle.component.mjs} +6 -1
  82. package/esm2022/lib/components/toggle-line/index.mjs +8 -0
  83. package/esm2022/lib/components/toggle-line/toggle-line-button/index.mjs +7 -0
  84. package/esm2022/lib/components/{monkey-toggle-line/monkey-toggle-line-button/monkey-toggle-line-button.component.mjs → toggle-line/toggle-line-button/toggle-line-button.component.mjs} +3 -3
  85. package/esm2022/lib/components/toggle-line/toggle-line.component.mjs +85 -0
  86. package/esm2022/lib/components/tooltip/index.mjs +8 -0
  87. package/esm2022/lib/components/tooltip/tooltip/index.mjs +7 -0
  88. package/esm2022/lib/components/tooltip/tooltip/tooltip.component.mjs +58 -0
  89. package/esm2022/lib/components/tooltip/tooltip.directive.mjs +180 -0
  90. package/esm2022/lib/directives/badge.mjs +74 -0
  91. package/esm2022/lib/directives/index.mjs +2 -1
  92. package/esm2022/lib/directives/module.mjs +33 -4
  93. package/esm2022/lib/interfaces/sizes.mjs +1 -1
  94. package/esm2022/lib/services/dictionary.service.mjs +224 -0
  95. package/esm2022/lib/services/icons.service.mjs +56 -0
  96. package/esm2022/lib/services/index.mjs +8 -4
  97. package/esm2022/lib/services/toast.service.mjs +72 -0
  98. package/esm2022/lib/tokens/index.mjs +3 -0
  99. package/esm2022/public-api.mjs +2 -1
  100. package/esm2022/utils/utils.mjs +32 -1
  101. package/fesm2022/monkey-style-guide-v2.mjs +2254 -391
  102. package/fesm2022/monkey-style-guide-v2.mjs.map +1 -1
  103. package/lib/components/accordion/index.d.ts +6 -0
  104. package/lib/components/action-bar/action-bar.component.d.ts +9 -0
  105. package/lib/components/action-bar/index.d.ts +6 -0
  106. package/lib/components/alert/index.d.ts +6 -0
  107. package/lib/components/avatar/avatar.component.d.ts +30 -0
  108. package/lib/components/avatar/index.d.ts +6 -0
  109. package/lib/components/badge/badge.component.d.ts +19 -0
  110. package/lib/components/badge/index.d.ts +6 -0
  111. package/lib/components/breadcrumb/index.d.ts +6 -0
  112. package/lib/components/button/index.d.ts +6 -0
  113. package/lib/components/{monkey-checkbox/monkey-checkbox.component.d.ts → checkbox/checkbox.component.d.ts} +1 -1
  114. package/lib/components/checkbox/index.d.ts +6 -0
  115. package/lib/components/date-range/date-range.component.d.ts +59 -0
  116. package/lib/components/date-range/index.d.ts +6 -0
  117. package/lib/components/date-range/month/index.d.ts +6 -0
  118. package/lib/components/date-range/month/month.component.d.ts +38 -0
  119. package/lib/components/date-range/quick-actions/index.d.ts +6 -0
  120. package/lib/components/date-range/quick-actions/quick-actions.component.d.ts +19 -0
  121. package/lib/components/date-range/utils.d.ts +40 -0
  122. package/lib/components/divider/index.d.ts +6 -0
  123. package/lib/components/{monkey-form-field/form-field.d.ts → form-field/form-field.component.d.ts} +9 -4
  124. package/lib/components/{monkey-form-field/module.d.ts → form-field/form-field.module.d.ts} +1 -1
  125. package/lib/components/form-field/index.d.ts +9 -0
  126. package/lib/components/icon/index.d.ts +6 -0
  127. package/lib/components/icon-button/index.d.ts +6 -0
  128. package/lib/components/index.d.ts +26 -20
  129. package/lib/components/input/index.d.ts +8 -0
  130. package/lib/components/{monkey-input/monkey-input-currency.directive.d.ts → input/input-currency.directive.d.ts} +2 -2
  131. package/lib/components/{monkey-input/monkey-input.directive.d.ts → input/input.directive.d.ts} +8 -2
  132. package/lib/components/{monkey-input/monkey-input.module.d.ts → input/input.module.d.ts} +2 -2
  133. package/lib/components/input-code/index.d.ts +6 -0
  134. package/lib/components/input-code/input-code.component.d.ts +48 -0
  135. package/lib/components/input-upload/index.d.ts +6 -0
  136. package/lib/components/input-upload/input-upload.component.d.ts +64 -0
  137. package/lib/components/{monkey-modal → modal}/components/default.d.ts +0 -1
  138. package/lib/components/modal/index.d.ts +15 -0
  139. package/lib/components/{monkey-modal → modal}/modal-config.d.ts +3 -2
  140. package/lib/components/{monkey-modal → modal}/modal-ref.d.ts +1 -0
  141. package/lib/components/{monkey-modal/modal.d.ts → modal/modal.component.d.ts} +3 -4
  142. package/lib/components/{monkey-modal → modal}/modal.module.d.ts +4 -4
  143. package/lib/components/option/index.d.ts +6 -0
  144. package/lib/components/security-level/index.d.ts +6 -0
  145. package/lib/components/select/index.d.ts +6 -0
  146. package/lib/components/{monkey-select/monkey-select.component.d.ts → select/select.component.d.ts} +31 -13
  147. package/lib/components/status/index.d.ts +6 -0
  148. package/lib/components/{monkey-table → table}/directives/column-checked.d.ts +2 -2
  149. package/lib/components/{monkey-table → table}/directives/column-expansible.d.ts +1 -1
  150. package/lib/components/{monkey-table → table}/directives/column-sortable.d.ts +1 -1
  151. package/lib/components/{monkey-table → table}/index.d.ts +6 -1
  152. package/lib/components/table/table.module.d.ts +16 -0
  153. package/lib/components/toast/index.d.ts +6 -0
  154. package/lib/components/{monkey-toast/monkey-toast.component.d.ts → toast/toast.component.d.ts} +5 -0
  155. package/lib/components/toggle/index.d.ts +6 -0
  156. package/lib/components/toggle-line/index.d.ts +7 -0
  157. package/lib/components/toggle-line/toggle-line-button/index.d.ts +6 -0
  158. package/lib/components/{monkey-toggle-line/monkey-toggle-line.component.d.ts → toggle-line/toggle-line.component.d.ts} +1 -1
  159. package/lib/components/tooltip/index.d.ts +7 -0
  160. package/lib/components/tooltip/tooltip/index.d.ts +6 -0
  161. package/lib/directives/badge.d.ts +24 -0
  162. package/lib/directives/index.d.ts +1 -0
  163. package/lib/directives/module.d.ts +2 -1
  164. package/lib/interfaces/sizes.d.ts +1 -1
  165. package/lib/services/dictionary.service.d.ts +11 -0
  166. package/lib/services/{monkey-icons.service.d.ts → icons.service.d.ts} +2 -0
  167. package/lib/services/index.d.ts +7 -3
  168. package/lib/services/{monkey-toast.service.d.ts → toast.service.d.ts} +5 -0
  169. package/lib/tokens/index.d.ts +3 -0
  170. package/monkey-style-guide-v2-0.0.19.tgz +0 -0
  171. package/package.json +2 -1
  172. package/public-api.d.ts +1 -0
  173. package/utils/utils.d.ts +5 -0
  174. package/esm2022/lib/components/monkey-accordion/index.mjs +0 -2
  175. package/esm2022/lib/components/monkey-accordion/monkey-accordion.component.mjs +0 -102
  176. package/esm2022/lib/components/monkey-alert/index.mjs +0 -2
  177. package/esm2022/lib/components/monkey-alert/monkey-alert.component.mjs +0 -50
  178. package/esm2022/lib/components/monkey-breadcrumb/index.mjs +0 -2
  179. package/esm2022/lib/components/monkey-breadcrumb/monkey-breadcrumb.component.mjs +0 -56
  180. package/esm2022/lib/components/monkey-button/index.mjs +0 -2
  181. package/esm2022/lib/components/monkey-checkbox/index.mjs +0 -2
  182. package/esm2022/lib/components/monkey-checkbox/monkey-checkbox.component.mjs +0 -216
  183. package/esm2022/lib/components/monkey-divider/index.mjs +0 -2
  184. package/esm2022/lib/components/monkey-divider/monkey-divider.component.mjs +0 -44
  185. package/esm2022/lib/components/monkey-form-field/form-field-control.mjs +0 -15
  186. package/esm2022/lib/components/monkey-form-field/form-field.mjs +0 -250
  187. package/esm2022/lib/components/monkey-form-field/index.mjs +0 -5
  188. package/esm2022/lib/components/monkey-form-field/module.mjs +0 -21
  189. package/esm2022/lib/components/monkey-form-field/utils.mjs +0 -16
  190. package/esm2022/lib/components/monkey-icon/index.mjs +0 -2
  191. package/esm2022/lib/components/monkey-icon/monkey-icon.component.mjs +0 -51
  192. package/esm2022/lib/components/monkey-icon-button/index.mjs +0 -2
  193. package/esm2022/lib/components/monkey-input/index.mjs +0 -5
  194. package/esm2022/lib/components/monkey-input/monkey-input-currency.directive.mjs +0 -187
  195. package/esm2022/lib/components/monkey-input/monkey-input.directive.mjs +0 -166
  196. package/esm2022/lib/components/monkey-input/monkey-input.module.mjs +0 -24
  197. package/esm2022/lib/components/monkey-input/validators.mjs +0 -17
  198. package/esm2022/lib/components/monkey-modal/index.mjs +0 -12
  199. package/esm2022/lib/components/monkey-modal/modal-config.mjs +0 -18
  200. package/esm2022/lib/components/monkey-modal/modal-ref.mjs +0 -46
  201. package/esm2022/lib/components/monkey-modal/modal.mjs +0 -119
  202. package/esm2022/lib/components/monkey-modal/modal.module.mjs +0 -53
  203. package/esm2022/lib/components/monkey-modal/service.mjs +0 -92
  204. package/esm2022/lib/components/monkey-modal/utils.mjs +0 -23
  205. package/esm2022/lib/components/monkey-option/index.mjs +0 -2
  206. package/esm2022/lib/components/monkey-security-level/index.mjs +0 -2
  207. package/esm2022/lib/components/monkey-select/index.mjs +0 -2
  208. package/esm2022/lib/components/monkey-select/monkey-select.component.mjs +0 -352
  209. package/esm2022/lib/components/monkey-status/index.mjs +0 -2
  210. package/esm2022/lib/components/monkey-table/components/pagination-label/pagination-label.mjs +0 -34
  211. package/esm2022/lib/components/monkey-table/components/pagination-size/pagination-size.mjs +0 -57
  212. package/esm2022/lib/components/monkey-table/directives/column-checked.mjs +0 -109
  213. package/esm2022/lib/components/monkey-table/directives/column-expansible.mjs +0 -134
  214. package/esm2022/lib/components/monkey-table/directives/column-sortable.mjs +0 -97
  215. package/esm2022/lib/components/monkey-table/index.mjs +0 -10
  216. package/esm2022/lib/components/monkey-table/table.module.mjs +0 -60
  217. package/esm2022/lib/components/monkey-toast/index.mjs +0 -2
  218. package/esm2022/lib/components/monkey-toast/monkey-toast.component.mjs +0 -74
  219. package/esm2022/lib/components/monkey-toggle/index.mjs +0 -2
  220. package/esm2022/lib/components/monkey-toggle-line/index.mjs +0 -3
  221. package/esm2022/lib/components/monkey-toggle-line/monkey-toggle-line-button/index.mjs +0 -2
  222. package/esm2022/lib/components/monkey-toggle-line/monkey-toggle-line.component.mjs +0 -85
  223. package/esm2022/lib/components/monkey-tooltip/index.mjs +0 -3
  224. package/esm2022/lib/components/monkey-tooltip/monkey-tooltip.directive.mjs +0 -175
  225. package/esm2022/lib/components/monkey-tooltip/tooltip/index.mjs +0 -2
  226. package/esm2022/lib/components/monkey-tooltip/tooltip/tooltip.component.mjs +0 -53
  227. package/esm2022/lib/services/monkey-destroy.service.mjs +0 -15
  228. package/esm2022/lib/services/monkey-icons.service.mjs +0 -45
  229. package/esm2022/lib/services/monkey-toast.service.mjs +0 -72
  230. package/lib/components/monkey-accordion/index.d.ts +0 -1
  231. package/lib/components/monkey-alert/index.d.ts +0 -1
  232. package/lib/components/monkey-breadcrumb/index.d.ts +0 -1
  233. package/lib/components/monkey-button/index.d.ts +0 -1
  234. package/lib/components/monkey-checkbox/index.d.ts +0 -1
  235. package/lib/components/monkey-divider/index.d.ts +0 -1
  236. package/lib/components/monkey-form-field/index.d.ts +0 -4
  237. package/lib/components/monkey-icon/index.d.ts +0 -1
  238. package/lib/components/monkey-icon-button/index.d.ts +0 -1
  239. package/lib/components/monkey-input/index.d.ts +0 -4
  240. package/lib/components/monkey-modal/index.d.ts +0 -11
  241. package/lib/components/monkey-option/index.d.ts +0 -1
  242. package/lib/components/monkey-security-level/index.d.ts +0 -1
  243. package/lib/components/monkey-select/index.d.ts +0 -1
  244. package/lib/components/monkey-status/index.d.ts +0 -1
  245. package/lib/components/monkey-table/table.module.d.ts +0 -15
  246. package/lib/components/monkey-toast/index.d.ts +0 -1
  247. package/lib/components/monkey-toggle/index.d.ts +0 -1
  248. package/lib/components/monkey-toggle-line/index.d.ts +0 -2
  249. package/lib/components/monkey-toggle-line/monkey-toggle-line-button/index.d.ts +0 -1
  250. package/lib/components/monkey-tooltip/index.d.ts +0 -2
  251. package/lib/components/monkey-tooltip/tooltip/index.d.ts +0 -1
  252. package/lib/services/monkey-destroy.service.d.ts +0 -8
  253. package/monkey-style-guide-v2-0.0.17.tgz +0 -0
  254. /package/lib/components/{monkey-accordion/monkey-accordion.component.d.ts → accordion/accordion.component.d.ts} +0 -0
  255. /package/lib/components/{monkey-alert/monkey-alert.component.d.ts → alert/alert.component.d.ts} +0 -0
  256. /package/lib/components/{monkey-breadcrumb/monkey-breadcrumb.component.d.ts → breadcrumb/breadcrumb.component.d.ts} +0 -0
  257. /package/lib/components/{monkey-button/monkey-button.component.d.ts → button/button.component.d.ts} +0 -0
  258. /package/lib/components/{monkey-divider/monkey-divider.component.d.ts → divider/divider.component.d.ts} +0 -0
  259. /package/lib/components/{monkey-form-field → form-field}/form-field-control.d.ts +0 -0
  260. /package/lib/components/{monkey-form-field → form-field}/utils.d.ts +0 -0
  261. /package/lib/components/{monkey-icon/monkey-icon.component.d.ts → icon/icon.component.d.ts} +0 -0
  262. /package/lib/components/{monkey-icon-button/monkey-icon-button.component.d.ts → icon-button/icon-button.component.d.ts} +0 -0
  263. /package/lib/components/{monkey-input → input}/validators.d.ts +0 -0
  264. /package/lib/components/{monkey-modal → modal}/directives/actions.d.ts +0 -0
  265. /package/lib/components/{monkey-modal → modal}/directives/content.d.ts +0 -0
  266. /package/lib/components/{monkey-modal → modal}/directives/subtitle.d.ts +0 -0
  267. /package/lib/components/{monkey-modal → modal}/directives/title.d.ts +0 -0
  268. /package/lib/components/{monkey-modal/service.d.ts → modal/modal.service.d.ts} +0 -0
  269. /package/lib/components/{monkey-modal → modal}/utils.d.ts +0 -0
  270. /package/lib/components/{monkey-option/monkey-option.component.d.ts → option/option.component.d.ts} +0 -0
  271. /package/lib/components/{monkey-security-level/monkey-security-level.component.d.ts → security-level/security-level.component.d.ts} +0 -0
  272. /package/lib/components/{monkey-status/monkey-status.component.d.ts → status/status.component.d.ts} +0 -0
  273. /package/lib/components/{monkey-table → table}/components/pagination-action/pagination-action.d.ts +0 -0
  274. /package/lib/components/{monkey-table → table}/components/pagination-label/pagination-label.d.ts +0 -0
  275. /package/lib/components/{monkey-table → table}/components/pagination-size/pagination-size.d.ts +0 -0
  276. /package/lib/components/{monkey-table → table}/directives/column-stick.d.ts +0 -0
  277. /package/lib/components/{monkey-table/table.d.ts → table/table.component.d.ts} +0 -0
  278. /package/lib/components/{monkey-toggle/monkey-toggle.component.d.ts → toggle/toggle.component.d.ts} +0 -0
  279. /package/lib/components/{monkey-toggle-line/monkey-toggle-line-button/monkey-toggle-line-button.component.d.ts → toggle-line/toggle-line-button/toggle-line-button.component.d.ts} +0 -0
  280. /package/lib/components/{monkey-tooltip → tooltip}/tooltip/tooltip.component.d.ts +0 -0
  281. /package/lib/components/{monkey-tooltip/monkey-tooltip.directive.d.ts → tooltip/tooltip.directive.d.ts} +0 -0
@@ -1,352 +0,0 @@
1
- /** ************************
2
- * Copyright Monkey Exchange. All Rights Reserved
3
- * This style guide was developed by Monkey Exchange Team
4
- * MIT Licence
5
- ************************* */
6
- import { animate, state, style, transition, trigger } from '@angular/animations';
7
- import { TemplatePortal } from '@angular/cdk/portal';
8
- import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, inject, Input, Optional, Output, ViewChild, ViewEncapsulation } from '@angular/core';
9
- import { FormsModule, NgControl, ReactiveFormsModule, Validators } from '@angular/forms';
10
- import { Subject, takeUntil } from 'rxjs';
11
- import { IdGenerator } from '../../../utils/id-generator';
12
- import { MonkeyDestroyService } from '../../services/monkey-destroy.service';
13
- import { MonkeyIconsService } from '../../services/monkey-icons.service';
14
- import { MonkeyFormFieldControl } from '../monkey-form-field/form-field-control';
15
- import { MonkeyOptionComponent } from '../monkey-option/monkey-option.component';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "@angular/cdk/overlay";
18
- import * as i2 from "../monkey-form-field/form-field";
19
- export class MonkeySelectComponent {
20
- get disabled() {
21
- if (this.ngControl && this.ngControl.disabled !== null) {
22
- return this.ngControl.disabled;
23
- }
24
- return this._disabled;
25
- }
26
- set disabled(value) {
27
- this._disabled = value;
28
- if (this.focused) {
29
- this.focused = false;
30
- this.stateChanges.next();
31
- }
32
- }
33
- get required() {
34
- return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;
35
- }
36
- set required(value) {
37
- this._required = value;
38
- this.stateChanges.next();
39
- }
40
- set value(value) {
41
- if (this._value !== value) {
42
- this._value = value;
43
- this._onChange(value);
44
- }
45
- }
46
- get value() {
47
- return this._value;
48
- }
49
- constructor(overlay, changeDetectorRef, viewContainerRef, formField) {
50
- this.overlay = overlay;
51
- this.changeDetectorRef = changeDetectorRef;
52
- this.viewContainerRef = viewContainerRef;
53
- this.formField = formField;
54
- this.tabIndex = 0;
55
- this.onChange = new EventEmitter();
56
- this.placeholder = '';
57
- this.loading = false;
58
- this._value = null;
59
- this.labelSelected = '';
60
- this.overlayRef = null;
61
- this.isOpen = false;
62
- this._destroyed = inject(MonkeyDestroyService);
63
- this.iconArrowDown = inject(MonkeyIconsService).arrowDown;
64
- this.idGenerator = inject(IdGenerator);
65
- this.ngControl = inject(NgControl, { self: true, optional: true });
66
- this._elementRef = inject(ElementRef);
67
- this.currency = false;
68
- this.focused = false;
69
- this._disabled = false;
70
- this.id = this.idGenerator.getId('monkey-select-');
71
- this.percent = false;
72
- this.stateChanges = new Subject();
73
- this.type = '';
74
- this.onAnimationEnd = (event) => {
75
- if (event.toState === 'closed') {
76
- this.closeOverlay();
77
- }
78
- };
79
- this._onChange = () => { };
80
- this._onTouched = () => { };
81
- if (this.ngControl) {
82
- this.ngControl.valueAccessor = this;
83
- }
84
- }
85
- changeControl() {
86
- if (this.formField?.control) {
87
- this.formField.control.loading = this.loading;
88
- }
89
- }
90
- changeSelected() {
91
- setTimeout(() => {
92
- if (this.options) {
93
- this.options.forEach((opt) => {
94
- opt.selected = opt.value === this.value;
95
- });
96
- this.updateSelectedLabel();
97
- }
98
- this.changeDetectorRef.markForCheck();
99
- });
100
- }
101
- initializeOptions() {
102
- this.options.forEach((option) => {
103
- if (!option.action) {
104
- option.action = this.selectOption.bind(this, option);
105
- }
106
- });
107
- }
108
- ngAfterContentInit() {
109
- this.initializeOptions();
110
- this.options.changes.subscribe((resp) => {
111
- this.updateSelectedLabel();
112
- this.initializeOptions();
113
- this.changeSelected();
114
- });
115
- }
116
- ngOnDestroy() {
117
- if (this.overlayRef) {
118
- this.overlayRef.dispose();
119
- }
120
- }
121
- toggleDropdown() {
122
- if (!this.disabled) {
123
- if (this.isOpen) {
124
- this.closeDropdown();
125
- this._onTouched();
126
- }
127
- else {
128
- this.openDropdown();
129
- }
130
- }
131
- }
132
- openDropdown() {
133
- if (this.options?.length) {
134
- this.formField.control.disableToBeDirty = true;
135
- this.isOpen = true;
136
- this.createOverlay();
137
- }
138
- }
139
- closeDropdown() {
140
- this.changeDetectorRef.markForCheck();
141
- this.isOpen = false;
142
- this.focused = false;
143
- this.formField.control.disableToBeDirty = false;
144
- }
145
- closeOverlay() {
146
- if (this.overlayRef) {
147
- this.overlayRef.dispose();
148
- this.overlayRef = null;
149
- }
150
- }
151
- createOverlay() {
152
- if (this.overlayRef) {
153
- return;
154
- }
155
- const offset = 4;
156
- const positions = [
157
- {
158
- originX: 'start',
159
- originY: 'bottom',
160
- overlayX: 'start',
161
- overlayY: 'top',
162
- offsetY: offset
163
- },
164
- {
165
- originX: 'start',
166
- originY: 'top',
167
- overlayX: 'start',
168
- overlayY: 'bottom',
169
- offsetY: -offset
170
- }
171
- ];
172
- let anchor = this.trigger;
173
- let width = anchor.nativeElement.offsetWidth;
174
- if (this.formField?.elementRef) {
175
- const el = this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');
176
- anchor = el;
177
- width = el.offsetWidth;
178
- }
179
- const positionStrategy = this.overlay
180
- .position()
181
- .flexibleConnectedTo(anchor)
182
- .withPositions(positions)
183
- .withPush(true);
184
- this.overlayRef = this.overlay.create({
185
- positionStrategy,
186
- scrollStrategy: this.overlay.scrollStrategies.block(),
187
- width,
188
- hasBackdrop: true,
189
- backdropClass: 'no-class'
190
- });
191
- const portal = new TemplatePortal(this.overlayTemplate, this.viewContainerRef);
192
- this.overlayRef.attach(portal);
193
- this.overlayRef
194
- .backdropClick()
195
- .pipe(takeUntil(this._destroyed))
196
- .subscribe(() => {
197
- return this.closeDropdown();
198
- });
199
- }
200
- selectOption(option) {
201
- if (!option.disabled && !this.disabled) {
202
- this.value = option.value;
203
- this.updateSelectedLabel();
204
- this.closeDropdown();
205
- this._onChange(this.value);
206
- this.onChange.emit(this.value);
207
- this.options.forEach((opt) => {
208
- opt.selected = opt.value === this.value;
209
- });
210
- }
211
- }
212
- updateSelectedLabel() {
213
- const selectedOption = this.options.find((opt) => {
214
- return opt.value === this.value;
215
- });
216
- this.labelSelected = selectedOption ? selectedOption.displayContent : '';
217
- }
218
- writeValue(value) {
219
- this.value = value;
220
- this.changeSelected();
221
- }
222
- onContainerClick(event) {
223
- if (this.disabled)
224
- return;
225
- this.openDropdown();
226
- this._elementRef.nativeElement.focus();
227
- }
228
- _onFocus() {
229
- if (!this.disabled) {
230
- this.focused = true;
231
- this._onTouched();
232
- this.stateChanges.next();
233
- }
234
- }
235
- _onBlur() {
236
- this.focused = false;
237
- this.stateChanges.next();
238
- }
239
- registerOnChange(fn) {
240
- this._onChange = fn;
241
- }
242
- registerOnTouched(fn) {
243
- this._onTouched = fn;
244
- }
245
- setDisabledState(isDisabled) {
246
- this.disabled = isDisabled;
247
- }
248
- ngOnChanges(changes) {
249
- let hasChanges = false;
250
- // eslint-disable-next-line dot-notation
251
- const changesLoading = changes?.['loading'];
252
- if (changesLoading?.currentValue !== changesLoading?.previousValue) {
253
- hasChanges = true;
254
- this.changeControl();
255
- }
256
- if (hasChanges) {
257
- this.stateChanges.next();
258
- }
259
- }
260
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeySelectComponent, deps: [{ token: i1.Overlay }, { token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }, { token: i2.MonkeyFormFieldComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
261
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MonkeySelectComponent, isStandalone: true, selector: "monkey-select", inputs: { tabIndex: "tabIndex", placeholder: "placeholder", loading: ["loading", "loading", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], required: ["required", "required", booleanAttribute], value: "value" }, outputs: { onChange: "onChange" }, host: { attributes: { "data-testid": "monkey-select" }, listeners: { "focus": "_onFocus()", "blur": "_onBlur()" }, properties: { "class.mecx-select-disabled": "_disabled", "class.mecx-select-focused": "focused", "attr.id": "id", "attr.tabindex": "disabled ? -1 : tabIndex" }, classAttribute: "mecx-select" }, providers: [
262
- // eslint-disable-next-line no-use-before-define
263
- { provide: MonkeyFormFieldControl, useExisting: MonkeySelectComponent },
264
- MonkeyDestroyService
265
- ], queries: [{ propertyName: "options", predicate: MonkeyOptionComponent }], viewQueries: [{ propertyName: "overlayTemplate", first: true, predicate: ["overlayTemplate"], descendants: true }, { propertyName: "overlayEl", first: true, predicate: ["overlay"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"mecx-select-trigger\"\n [class.open]=\"isOpen\"\n (click)=\"toggleDropdown()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen\"\n #trigger\n>\n <div class=\"mecx-select-value\" [class.has-value]=\"value\">\n <span>{{ labelSelected || placeholder }}</span>\n </div>\n\n @if (!loading) {\n <div class=\"mecx-select-icon\" [innerHTML]=\"iconArrowDown\"></div>\n }\n</div>\n\n<ng-template #overlayTemplate>\n <div\n class=\"mecx-select-overlay\"\n #overlay\n [@animation]=\"isOpen ? 'open' : 'closed'\"\n (@animation.done)=\"onAnimationEnd($event)\"\n >\n <ng-content />\n </div>\n</ng-template>\n", styles: ["monkey-select{display:inline-flex;width:100%;min-width:0;position:relative}monkey-select:focus-visible,monkey-select:focus{outline:none}.mecx-select-trigger{width:100%;display:inline-flex;align-items:center;cursor:pointer;gap:8px;box-sizing:border-box}.mecx-select-trigger .mecx-select-value{flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--mecx-color-gray-500);font-size:14px;line-height:24px;letter-spacing:.42px}.mecx-select-trigger .mecx-select-value.has-value{color:var(--mecx-color-gray-900)}.mecx-select-trigger .mecx-select-icon{display:flex;transition:all .2s ease-in-out}.mecx-select-trigger .mecx-select-icon svg *{stroke:var(--mecx-color-theme-main)}.mecx-select-disabled .mecx-select-trigger{background-color:var(--mecx-color-gray-50);border-color:var(--mecx-color-gray-50);cursor:default}.mecx-select-disabled .mecx-select-trigger .mecx-select-value{color:var(--mecx-color-gray-400)}.mecx-select-disabled .mecx-select-trigger .mecx-select-icon svg *{stroke:var(--mecx-color-gray-400)}.mecx-select-trigger.open .mecx-select-icon{transform:rotate(180deg)}.mecx-select-overlay{width:100%;background:#fff;border:2px solid var(--mecx-color-gray-400);overflow:hidden auto;border-radius:8px;box-shadow:0 16px 32px #d6d6d694;max-height:360px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }], animations: [
266
- trigger('animation', [
267
- transition(':enter', [
268
- style({
269
- opacity: 0,
270
- transform: 'scaleY(.9)'
271
- }),
272
- animate('100ms ease-in-out', style({
273
- opacity: 1,
274
- transform: 'scaleY(1)'
275
- }))
276
- ]),
277
- state('closed', style({
278
- transform: 'scaleY(.9)',
279
- opacity: 0
280
- })),
281
- transition('closed <=> open', animate('200ms ease-in-out'))
282
- ])
283
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
284
- }
285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeySelectComponent, decorators: [{
286
- type: Component,
287
- args: [{ selector: 'monkey-select', standalone: true, imports: [ReactiveFormsModule, FormsModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
288
- // eslint-disable-next-line no-use-before-define
289
- { provide: MonkeyFormFieldControl, useExisting: MonkeySelectComponent },
290
- MonkeyDestroyService
291
- ], animations: [
292
- trigger('animation', [
293
- transition(':enter', [
294
- style({
295
- opacity: 0,
296
- transform: 'scaleY(.9)'
297
- }),
298
- animate('100ms ease-in-out', style({
299
- opacity: 1,
300
- transform: 'scaleY(1)'
301
- }))
302
- ]),
303
- state('closed', style({
304
- transform: 'scaleY(.9)',
305
- opacity: 0
306
- })),
307
- transition('closed <=> open', animate('200ms ease-in-out'))
308
- ])
309
- ], host: {
310
- 'data-testid': 'monkey-select',
311
- class: 'mecx-select',
312
- '[class.mecx-select-disabled]': '_disabled',
313
- '[class.mecx-select-focused]': 'focused',
314
- '[attr.id]': 'id',
315
- '[attr.tabindex]': 'disabled ? -1 : tabIndex',
316
- '(focus)': '_onFocus()',
317
- '(blur)': '_onBlur()'
318
- }, template: "<div\n class=\"mecx-select-trigger\"\n [class.open]=\"isOpen\"\n (click)=\"toggleDropdown()\"\n role=\"combobox\"\n [attr.aria-expanded]=\"isOpen\"\n #trigger\n>\n <div class=\"mecx-select-value\" [class.has-value]=\"value\">\n <span>{{ labelSelected || placeholder }}</span>\n </div>\n\n @if (!loading) {\n <div class=\"mecx-select-icon\" [innerHTML]=\"iconArrowDown\"></div>\n }\n</div>\n\n<ng-template #overlayTemplate>\n <div\n class=\"mecx-select-overlay\"\n #overlay\n [@animation]=\"isOpen ? 'open' : 'closed'\"\n (@animation.done)=\"onAnimationEnd($event)\"\n >\n <ng-content />\n </div>\n</ng-template>\n", styles: ["monkey-select{display:inline-flex;width:100%;min-width:0;position:relative}monkey-select:focus-visible,monkey-select:focus{outline:none}.mecx-select-trigger{width:100%;display:inline-flex;align-items:center;cursor:pointer;gap:8px;box-sizing:border-box}.mecx-select-trigger .mecx-select-value{flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--mecx-color-gray-500);font-size:14px;line-height:24px;letter-spacing:.42px}.mecx-select-trigger .mecx-select-value.has-value{color:var(--mecx-color-gray-900)}.mecx-select-trigger .mecx-select-icon{display:flex;transition:all .2s ease-in-out}.mecx-select-trigger .mecx-select-icon svg *{stroke:var(--mecx-color-theme-main)}.mecx-select-disabled .mecx-select-trigger{background-color:var(--mecx-color-gray-50);border-color:var(--mecx-color-gray-50);cursor:default}.mecx-select-disabled .mecx-select-trigger .mecx-select-value{color:var(--mecx-color-gray-400)}.mecx-select-disabled .mecx-select-trigger .mecx-select-icon svg *{stroke:var(--mecx-color-gray-400)}.mecx-select-trigger.open .mecx-select-icon{transform:rotate(180deg)}.mecx-select-overlay{width:100%;background:#fff;border:2px solid var(--mecx-color-gray-400);overflow:hidden auto;border-radius:8px;box-shadow:0 16px 32px #d6d6d694;max-height:360px}\n"] }]
319
- }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }, { type: i2.MonkeyFormFieldComponent, decorators: [{
320
- type: Optional
321
- }] }], propDecorators: { overlayTemplate: [{
322
- type: ViewChild,
323
- args: ['overlayTemplate']
324
- }], overlayEl: [{
325
- type: ViewChild,
326
- args: ['overlay']
327
- }], trigger: [{
328
- type: ViewChild,
329
- args: ['trigger']
330
- }], options: [{
331
- type: ContentChildren,
332
- args: [MonkeyOptionComponent]
333
- }], tabIndex: [{
334
- type: Input
335
- }], onChange: [{
336
- type: Output
337
- }], placeholder: [{
338
- type: Input,
339
- args: [{ required: true }]
340
- }], loading: [{
341
- type: Input,
342
- args: [{ transform: booleanAttribute }]
343
- }], disabled: [{
344
- type: Input,
345
- args: [{ transform: booleanAttribute }]
346
- }], required: [{
347
- type: Input,
348
- args: [{ transform: booleanAttribute }]
349
- }], value: [{
350
- type: Input
351
- }] } });
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5LXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9jb21wb25lbnRzL21vbmtleS1zZWxlY3QvbW9ua2V5LXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9jb21wb25lbnRzL21vbmtleS1zZWxlY3QvbW9ua2V5LXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs2QkFJNkI7QUFFN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUVMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFJTixTQUFTLEVBRVQsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxXQUFXLEVBQ1gsU0FBUyxFQUNULG1CQUFtQixFQUNuQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFekUsT0FBTyxFQUFF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b3VyY2VzQ29udGVudCI6WyIvKiogKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb3B5cmlnaHQgTW9ua2V5IEV4Y2hhbmdlLiBBbGwgUmlnaHRzIFJlc2VydmVkXG4gKiBUaGlzIHN0eWxlIGd1aWRlIHdhcyBkZXZlbG9wZWQgYnkgTW9ua2V5IEV4Y2hhbmdlIFRlYW1cbiAqIE1JVCBMaWNlbmNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuXG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybXNNb2R1bGUsXG4gIE5nQ29udHJvbCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElkR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaWQtZ2VuZXJhdG9yJztcbmltcG9ydCB7IE1vbmtleURlc3Ryb3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9ua2V5LWRlc3Ryb3kuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlJY29uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb25rZXktaWNvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBNb25rZXlGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9tb25rZXktZm9ybS1maWVsZC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1vbmtleUZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICcuLi9tb25rZXktZm9ybS1maWVsZC9mb3JtLWZpZWxkLWNvbnRyb2wnO1xuaW1wb3J0IHsgTW9ua2V5T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9ua2V5LW9wdGlvbi9tb25rZXktb3B0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21vbmtleS1zZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGVVcmw6ICdtb25rZXktc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbW9ua2V5LXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICB7IHByb3ZpZGU6IE1vbmtleUZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBNb25rZXlTZWxlY3RDb21wb25lbnQgfSxcbiAgICBNb25rZXlEZXN0cm95U2VydmljZVxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignYW5pbWF0aW9uJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVkoLjkpJ1xuICAgICAgICB9KSxcbiAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAnMTAwbXMgZWFzZS1pbi1vdXQnLFxuICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVkoMSknXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgXSksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2Nsb3NlZCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVkoLjkpJyxcbiAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdHJhbnNpdGlvbignY2xvc2VkIDw9PiBvcGVuJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbi1vdXQnKSlcbiAgICBdKVxuICBdLFxuICBob3N0OiB7XG4gICAgJ2RhdGEtdGVzdGlkJzogJ21vbmtleS1zZWxlY3QnLFxuICAgIGNsYXNzOiAnbWVjeC1zZWxlY3QnLFxuICAgICdbY2xhc3MubWVjeC1zZWxlY3QtZGlzYWJsZWRdJzogJ19kaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5tZWN4LXNlbGVjdC1mb2N1c2VkXSc6ICdmb2N1c2VkJyxcbiAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2Rpc2FibGVkID8gLTEgOiB0YWJJbmRleCcsXG4gICAgJyhmb2N1cyknOiAnX29uRm9jdXMoKScsXG4gICAgJyhibHVyKSc6ICdfb25CbHVyKCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTW9ua2V5U2VsZWN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgTW9ua2V5Rm9ybUZpZWxkQ29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzXG57XG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlUZW1wbGF0ZScpIG92ZXJsYXlUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnb3ZlcmxheScpIG92ZXJsYXlFbCE6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlcicpIHRyaWdnZXIhOiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTW9ua2V5T3B0aW9uQ29tcG9uZW50KSBvcHRpb25zITogUXVlcnlMaXN0PE1vbmtleU9wdGlvbkNvbXBvbmVudD47XG5cbiAgQElucHV0KCkgdGFiSW5kZXggPSAwO1xuXG4gIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBwbGFjZWhvbGRlciA9ICcnO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBsb2FkaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IHRoaXMubmdDb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2U7XG4gIH1cblxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IHZhbHVlO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBfdmFsdWUgPSBudWxsO1xuXG4gIGxhYmVsU2VsZWN0ZWQgPSAnJztcblxuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcblxuICBpc09wZW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9kZXN0cm95ZWQgPSBpbmplY3QoTW9ua2V5RGVzdHJveVNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IGljb25BcnJvd0Rvd24gPSBpbmplY3QoTW9ua2V5SWNvbnNTZXJ2aWNlKS5hcnJvd0Rvd247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpZEdlbmVyYXRvciA9IGluamVjdChJZEdlbmVyYXRvcik7XG5cbiAgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsID0gaW5qZWN0KE5nQ29udHJvbCwgeyBzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KSE7XG5cbiAgcHJvdGVjdGVkIF9lbGVtZW50UmVmID1cbiAgICBpbmplY3Q8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgcmVhZG9ubHkgY3VycmVuY3k6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBmb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZyA9IHRoaXMuaWRHZW5lcmF0b3IuZ2V0SWQoJ21vbmtleS1zZWxlY3QtJyk7XG5cbiAgcmVhZG9ubHkgcGVyY2VudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1GaWVsZDogTW9ua2V5Rm9ybUZpZWxkQ29tcG9uZW50XG4gICkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VDb250cm9sKCkge1xuICAgIGlmICh0aGlzLmZvcm1GaWVsZD8uY29udHJvbCkge1xuICAgICAgdGhpcy5mb3JtRmllbGQuY29udHJvbC5sb2FkaW5nID0gdGhpcy5sb2FkaW5nO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlU2VsZWN0ZWQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHQpID0+IHtcbiAgICAgICAgICBvcHQuc2VsZWN0ZWQgPSBvcHQudmFsdWUgPT09IHRoaXMudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkTGFiZWwoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVPcHRpb25zKCkge1xuICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgIGlmICghb3B0aW9uLmFjdGlvbikge1xuICAgICAgICBvcHRpb24uYWN0aW9uID0gdGhpcy5zZWxlY3RPcHRpb24uYmluZCh0aGlzLCBvcHRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGlvbnMoKTtcbiAgICB0aGlzLm9wdGlvbnMuY2hhbmdlcy5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRMYWJlbCgpO1xuICAgICAgdGhpcy5pbml0aWFsaXplT3B0aW9ucygpO1xuICAgICAgdGhpcy5jaGFuZ2VTZWxlY3RlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtRmllbGQuY29udHJvbC5kaXNhYmxlVG9CZURpcnR5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VEcm9wZG93bigpIHtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgdGhpcy5mb3JtRmllbGQuY29udHJvbC5kaXNhYmxlVG9CZURpcnR5ID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBvbkFuaW1hdGlvbkVuZCA9IChldmVudDogYW55KSA9PiB7XG4gICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICB0aGlzLmNsb3NlT3ZlcmxheSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGNyZWF0ZU92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9mZnNldCA9IDQ7XG4gICAgY29uc3QgcG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgb2Zmc2V0WTogb2Zmc2V0XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgb2Zmc2V0WTogLW9mZnNldFxuICAgICAgfVxuICAgIF07XG5cbiAgICBsZXQgYW5jaG9yID0gdGhpcy50cmlnZ2VyO1xuICAgIGxldCB3aWR0aCA9IGFuY2hvci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuXG4gICAgaWYgKHRoaXMuZm9ybUZpZWxkPy5lbGVtZW50UmVmKSB7XG4gICAgICBjb25zdCBlbCA9IHRoaXMuZm9ybUZpZWxkPy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1lY3gtZm9ybS1maWVsZC1ib2R5Jyk7XG4gICAgICBhbmNob3IgPSBlbDtcbiAgICAgIHdpZHRoID0gZWwub2Zmc2V0V2lkdGg7XG4gICAgfVxuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGFuY2hvcilcbiAgICAgIC53aXRoUG9zaXRpb25zKHBvc2l0aW9ucylcbiAgICAgIC53aXRoUHVzaCh0cnVlKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpLFxuICAgICAgd2lkdGgsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICduby1jbGFzcydcbiAgICB9KTtcblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm92ZXJsYXlUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZWxlY3RPcHRpb24ob3B0aW9uOiBNb25rZXlPcHRpb25Db21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy52YWx1ZSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRMYWJlbCgpO1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcblxuICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goKG9wdCkgPT4ge1xuICAgICAgICBvcHQuc2VsZWN0ZWQgPSBvcHQudmFsdWUgPT09IHRoaXMudmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkTGFiZWwoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiB7XG4gICAgICByZXR1cm4gb3B0LnZhbHVlID09PSB0aGlzLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMubGFiZWxTZWxlY3RlZCA9IHNlbGVjdGVkT3B0aW9uID8gc2VsZWN0ZWRPcHRpb24uZGlzcGxheUNvbnRlbnQgOiAnJztcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZVNlbGVjdGVkKCk7XG4gIH1cblxuICBvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBfb25Gb2N1cygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBfb25CbHVyKCkge1xuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIF9vbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG5cbiAgX29uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRvdC1ub3RhdGlvblxuICAgIGNvbnN0IGNoYW5nZXNMb2FkaW5nID0gY2hhbmdlcz8uWydsb2FkaW5nJ107XG4gICAgaWYgKGNoYW5nZXNMb2FkaW5nPy5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNMb2FkaW5nPy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlQ29udHJvbCgpO1xuICAgIH1cblxuICAgIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwibWVjeC1zZWxlY3QtdHJpZ2dlclwiXG4gIFtjbGFzcy5vcGVuXT1cImlzT3BlblwiXG4gIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCJcbiAgcm9sZT1cImNvbWJvYm94XCJcbiAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAjdHJpZ2dlclxuPlxuICA8ZGl2IGNsYXNzPVwibWVjeC1zZWxlY3QtdmFsdWVcIiBbY2xhc3MuaGFzLXZhbHVlXT1cInZhbHVlXCI+XG4gICAgPHNwYW4+e3sgbGFiZWxTZWxlY3RlZCB8fCBwbGFjZWhvbGRlciB9fTwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgQGlmICghbG9hZGluZykge1xuICAgIDxkaXYgY2xhc3M9XCJtZWN4LXNlbGVjdC1pY29uXCIgW2lubmVySFRNTF09XCJpY29uQXJyb3dEb3duXCI+PC9kaXY+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI292ZXJsYXlUZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwibWVjeC1zZWxlY3Qtb3ZlcmxheVwiXG4gICAgI292ZXJsYXlcbiAgICBbQGFuaW1hdGlvbl09XCJpc09wZW4gPyAnb3BlbicgOiAnY2xvc2VkJ1wiXG4gICAgKEBhbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkVuZCgkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy1jb250ZW50IC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './monkey-status.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9jb21wb25lbnRzL21vbmtleS1zdGF0dXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9ua2V5LXN0YXR1cy5jb21wb25lbnQnO1xuIl19
@@ -1,34 +0,0 @@
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, inject, Input, ViewEncapsulation } from '@angular/core';
7
- import { IdGenerator } from '../../../../../utils';
8
- import * as i0 from "@angular/core";
9
- export class MonkeyPaginationLabelComponent {
10
- get id() {
11
- return this._id;
12
- }
13
- set id(value) {
14
- this._id = value || this._uid;
15
- }
16
- constructor() {
17
- this._uid = inject(IdGenerator).getId('monkey-pagination-label-');
18
- // eslint-disable-next-line no-self-assign
19
- this.id = this.id;
20
- }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPaginationLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MonkeyPaginationLabelComponent, isStandalone: true, selector: "monkey-pagination-label", inputs: { id: "id" }, host: { attributes: { "data-testid": "monkey-pagination-label" }, properties: { "attr.id": "id", "id": "id" } }, exportAs: ["monkeyPaginationLabel"], ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["monkey-pagination-label{font-size:12px}\n"], encapsulation: i0.ViewEncapsulation.None }); }
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPaginationLabelComponent, decorators: [{
25
- type: Component,
26
- args: [{ standalone: true, encapsulation: ViewEncapsulation.None, selector: 'monkey-pagination-label', exportAs: 'monkeyPaginationLabel', host: {
27
- 'data-testid': 'monkey-pagination-label',
28
- '[attr.id]': 'id',
29
- '[id]': 'id'
30
- }, template: "<ng-content></ng-content>\n", styles: ["monkey-pagination-label{font-size:12px}\n"] }]
31
- }], ctorParameters: () => [], propDecorators: { id: [{
32
- type: Input
33
- }] } });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1sYWJlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1zdHlsZS1ndWlkZS12Mi9zcmMvbGliL2NvbXBvbmVudHMvbW9ua2V5LXRhYmxlL2NvbXBvbmVudHMvcGFnaW5hdGlvbi1sYWJlbC9wYWdpbmF0aW9uLWxhYmVsLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvY29tcG9uZW50cy9tb25rZXktdGFibGUvY29tcG9uZW50cy9wYWdpbmF0aW9uLWxhYmVsL3BhZ2luYXRpb24tbGFiZWwuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs2QkFJNkI7QUFFN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFlbkQsTUFBTSxPQUFPLDhCQUE4QjtJQUt6QyxJQUNJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELElBQUksRUFBRSxDQUFDLEtBQWE7UUFDbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQ7UUFiVSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBY3JFLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEIsQ0FBQzsrR0FqQlUsOEJBQThCO21HQUE5Qiw4QkFBOEIsK1BDdEIzQyw2QkFDQTs7NEZEcUJhLDhCQUE4QjtrQkFiMUMsU0FBUztpQ0FDSSxJQUFJLGlCQUNELGlCQUFpQixDQUFDLElBQUksWUFDM0IseUJBQXlCLFlBQ3pCLHVCQUF1QixRQUczQjt3QkFDSixhQUFhLEVBQUUseUJBQXlCO3dCQUN4QyxXQUFXLEVBQUUsSUFBSTt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7d0RBUUcsRUFBRTtzQkFETCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqICoqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IE1vbmtleSBFeGNoYW5nZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZFxuICogVGhpcyBzdHlsZSBndWlkZSB3YXMgZGV2ZWxvcGVkIGJ5IE1vbmtleSBFeGNoYW5nZSBUZWFtXG4gKiBNSVQgTGljZW5jZVxuICoqKioqKioqKioqKioqKioqKioqKioqKiogKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWRHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzZWxlY3RvcjogJ21vbmtleS1wYWdpbmF0aW9uLWxhYmVsJyxcbiAgZXhwb3J0QXM6ICdtb25rZXlQYWdpbmF0aW9uTGFiZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi1sYWJlbC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3BhZ2luYXRpb24tbGFiZWwuc2NzcycsXG4gIGhvc3Q6IHtcbiAgICAnZGF0YS10ZXN0aWQnOiAnbW9ua2V5LXBhZ2luYXRpb24tbGFiZWwnLFxuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbaWRdJzogJ2lkJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE1vbmtleVBhZ2luYXRpb25MYWJlbENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBfdWlkID0gaW5qZWN0KElkR2VuZXJhdG9yKS5nZXRJZCgnbW9ua2V5LXBhZ2luYXRpb24tbGFiZWwtJyk7XG5cbiAgcHJvdGVjdGVkIF9pZCE6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdGhpcy5fdWlkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtYXNzaWduXG4gICAgdGhpcy5pZCA9IHRoaXMuaWQ7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
@@ -1,57 +0,0 @@
1
- /** ************************
2
- * Copyright Monkey Exchange. All Rights Reserved
3
- * This style guide was developed by Monkey Exchange Team
4
- * MIT Licence
5
- ************************* */
6
- import { CommonModule } from '@angular/common';
7
- import { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';
8
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
9
- import { IdGenerator } from '../../../../../utils';
10
- import { MonkeyFormFieldModule } from '../../../monkey-form-field/module';
11
- import { MonkeyOptionComponent } from '../../../monkey-option/monkey-option.component';
12
- import { MonkeySelectComponent } from '../../../monkey-select/monkey-select.component';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@angular/forms";
15
- import * as i2 from "../../../monkey-form-field/form-field";
16
- export class MonkeyPaginationSizeComponent {
17
- get id() {
18
- return this._id;
19
- }
20
- set id(value) {
21
- this._id = value || this._uid;
22
- }
23
- constructor() {
24
- this.onChange = new EventEmitter();
25
- this._uid = inject(IdGenerator).getId('monkey-pagination-size-');
26
- this.sizes = [10, 20, 50, 100];
27
- // eslint-disable-next-line no-self-assign
28
- this.id = this.id;
29
- }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPaginationSizeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MonkeyPaginationSizeComponent, isStandalone: true, selector: "monkey-pagination-size", inputs: { size: "size", disabled: "disabled", id: "id" }, outputs: { onChange: "onChange" }, host: { attributes: { "data-testid": "monkey-pagination-size" }, properties: { "attr.id": "id", "id": "id" } }, exportAs: ["monkeyPaginationSize"], ngImport: i0, template: "<ng-content></ng-content>\n<monkey-form-field hideClear>\n <monkey-select placeholder=\"''\" [ngModel]=\"size\" (onChange)=\"onChange.next($event)\">\n @for (item of sizes; track item) {\n <monkey-option [value]=\"item\">{{ item }}</monkey-option>\n }\n </monkey-select>\n</monkey-form-field>\n", styles: ["monkey-pagination-size{display:flex;align-items:center;gap:8px}monkey-pagination-size .mecx-form-field-body{height:32px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MonkeySelectComponent, selector: "monkey-select", inputs: ["tabIndex", "placeholder", "loading", "disabled", "required", "value"], outputs: ["onChange"] }, { kind: "component", type: MonkeyOptionComponent, selector: "monkey-option", inputs: ["value", "disabled"] }, { kind: "ngmodule", type: MonkeyFormFieldModule }, { kind: "component", type: i2.MonkeyFormFieldComponent, selector: "monkey-form-field", inputs: ["id", "hideClear"], exportAs: ["monkeyFormField"] }], encapsulation: i0.ViewEncapsulation.None }); }
32
- }
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPaginationSizeComponent, decorators: [{
34
- type: Component,
35
- args: [{ standalone: true, imports: [
36
- CommonModule,
37
- FormsModule,
38
- ReactiveFormsModule,
39
- MonkeySelectComponent,
40
- MonkeyOptionComponent,
41
- MonkeyFormFieldModule
42
- ], encapsulation: ViewEncapsulation.None, selector: 'monkey-pagination-size', exportAs: 'monkeyPaginationSize', host: {
43
- 'data-testid': 'monkey-pagination-size',
44
- '[attr.id]': 'id',
45
- '[id]': 'id'
46
- }, template: "<ng-content></ng-content>\n<monkey-form-field hideClear>\n <monkey-select placeholder=\"''\" [ngModel]=\"size\" (onChange)=\"onChange.next($event)\">\n @for (item of sizes; track item) {\n <monkey-option [value]=\"item\">{{ item }}</monkey-option>\n }\n </monkey-select>\n</monkey-form-field>\n", styles: ["monkey-pagination-size{display:flex;align-items:center;gap:8px}monkey-pagination-size .mecx-form-field-body{height:32px}\n"] }]
47
- }], ctorParameters: () => [], propDecorators: { size: [{
48
- type: Input,
49
- args: [{ required: true }]
50
- }], disabled: [{
51
- type: Input
52
- }], onChange: [{
53
- type: Output
54
- }], id: [{
55
- type: Input
56
- }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1zaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvY29tcG9uZW50cy9tb25rZXktdGFibGUvY29tcG9uZW50cy9wYWdpbmF0aW9uLXNpemUvcGFnaW5hdGlvbi1zaXplLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvY29tcG9uZW50cy9tb25rZXktdGFibGUvY29tcG9uZW50cy9wYWdpbmF0aW9uLXNpemUvcGFnaW5hdGlvbi1zaXplLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NkJBSTZCO0FBRTdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7O0FBdUJ2RixNQUFNLE9BQU8sNkJBQTZCO0lBYXhDLElBQ0ksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxFQUFFLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRDtRQWpCVSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5QixTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBSXRFLFVBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBWXhCLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEIsQ0FBQzsrR0F6QlUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsbVVDbkMxQyxxVEFRQSxtTERTSSxZQUFZLDhCQUNaLFdBQVcsOFZBQ1gsbUJBQW1CLCtCQUNuQixxQkFBcUIsa0tBQ3JCLHFCQUFxQix3RkFDckIscUJBQXFCOzs0RkFhWiw2QkFBNkI7a0JBckJ6QyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIscUJBQXFCO3FCQUN0QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLFlBQzNCLHdCQUF3QixZQUN4QixzQkFBc0IsUUFHMUI7d0JBQ0osYUFBYSxFQUFFLHdCQUF3Qjt3QkFDdkMsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO3dEQUcwQixJQUFJO3NCQUE5QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFFaEIsUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQVNILEVBQUU7c0JBREwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiAqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCBNb25rZXkgRXhjaGFuZ2UuIEFsbCBSaWdodHMgUmVzZXJ2ZWRcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxuICogTUlUIExpY2VuY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJZEdlbmVyYXRvciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IE1vbmtleUZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL21vbmtleS1mb3JtLWZpZWxkL21vZHVsZSc7XG5pbXBvcnQgeyBNb25rZXlPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9tb25rZXktb3B0aW9uL21vbmtleS1vcHRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE1vbmtleVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL21vbmtleS1zZWxlY3QvbW9ua2V5LXNlbGVjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1vbmtleVNlbGVjdENvbXBvbmVudCxcbiAgICBNb25rZXlPcHRpb25Db21wb25lbnQsXG4gICAgTW9ua2V5Rm9ybUZpZWxkTW9kdWxlXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHNlbGVjdG9yOiAnbW9ua2V5LXBhZ2luYXRpb24tc2l6ZScsXG4gIGV4cG9ydEFzOiAnbW9ua2V5UGFnaW5hdGlvblNpemUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi1zaXplLmh0bWwnLFxuICBzdHlsZVVybDogJy4vcGFnaW5hdGlvbi1zaXplLnNjc3MnLFxuICBob3N0OiB7XG4gICAgJ2RhdGEtdGVzdGlkJzogJ21vbmtleS1wYWdpbmF0aW9uLXNpemUnLFxuICAgICdbYXR0ci5pZF0nOiAnaWQnLFxuICAgICdbaWRdJzogJ2lkJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE1vbmtleVBhZ2luYXRpb25TaXplQ29tcG9uZW50IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2l6ZSE6IDEwIHwgMjAgfCA1MCB8IDEwMDtcblxuICBASW5wdXQoKSBkaXNhYmxlZCE6IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByb3RlY3RlZCBfdWlkID0gaW5qZWN0KElkR2VuZXJhdG9yKS5nZXRJZCgnbW9ua2V5LXBhZ2luYXRpb24tc2l6ZS0nKTtcblxuICBwcm90ZWN0ZWQgX2lkITogc3RyaW5nO1xuXG4gIHNpemVzID0gWzEwLCAyMCwgNTAsIDEwMF07XG5cbiAgQElucHV0KClcbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2lkO1xuICB9XG5cbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWFzc2lnblxuICAgIHRoaXMuaWQgPSB0aGlzLmlkO1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48bW9ua2V5LWZvcm0tZmllbGQgaGlkZUNsZWFyPlxuICA8bW9ua2V5LXNlbGVjdCBwbGFjZWhvbGRlcj1cIicnXCIgW25nTW9kZWxdPVwic2l6ZVwiIChvbkNoYW5nZSk9XCJvbkNoYW5nZS5uZXh0KCRldmVudClcIj5cbiAgICBAZm9yIChpdGVtIG9mIHNpemVzOyB0cmFjayBpdGVtKSB7XG4gICAgICA8bW9ua2V5LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPnt7IGl0ZW0gfX08L21vbmtleS1vcHRpb24+XG4gICAgfVxuICA8L21vbmtleS1zZWxlY3Q+XG48L21vbmtleS1mb3JtLWZpZWxkPlxuIl19