ngx-vector-components 4.130.0 → 4.131.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/CHANGELOG.md +1472 -1467
  2. package/README.md +35 -35
  3. package/assets/icons/chevron_down_icon.svg +3 -3
  4. package/assets/icons/home_menu_icon.svg +3 -3
  5. package/assets/icons/logout_icon.svg +9 -9
  6. package/assets/icons/menu_footer_icon.svg +3 -3
  7. package/assets/icons/menu_hamburguer_icon.svg +3 -3
  8. package/assets/icons/terms_of_use_icon.svg +9 -9
  9. package/assets/icons/vector_admin_icon.svg +4 -4
  10. package/assets/icons/vector_fintech_icon.svg +3 -3
  11. package/assets/icons/vector_logtech_icon.svg +6 -6
  12. package/assets/icons/vector_marketplace_icon.svg +3 -3
  13. package/assets/images/bunge_logo.svg +23 -23
  14. package/assets/images/cofco_logo.svg +117 -117
  15. package/assets/images/emote_bad.svg +6 -6
  16. package/assets/images/emote_cool.svg +5 -5
  17. package/assets/images/emote_nice.svg +5 -5
  18. package/assets/images/success_sign.svg +4 -4
  19. package/assets/images/vector-logo-horizontal-inverse-color.svg +13 -13
  20. package/assets/images/vector_logo_horizontal.svg +13 -13
  21. package/assets/images/warn_sign.svg +4 -4
  22. package/assets/styles/_fonts.scss +114 -114
  23. package/assets/styles/_mixins.scss +7 -7
  24. package/assets/styles/_primeng-custom-theme.scss +1105 -1101
  25. package/assets/styles/_spinner.scss +35 -35
  26. package/assets/styles/_styles.scss +115 -115
  27. package/assets/styles/_variables.scss +27 -27
  28. package/esm2020/lib/components/badge/badge.component.mjs +39 -39
  29. package/esm2020/lib/components/badge/badge.module.mjs +19 -19
  30. package/esm2020/lib/components/badge/index.mjs +3 -3
  31. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +66 -66
  32. package/esm2020/lib/components/breadcrumb/breadcrumb.module.mjs +18 -18
  33. package/esm2020/lib/components/breadcrumb/index.mjs +3 -3
  34. package/esm2020/lib/components/crud-base/crud-base.component.mjs +47 -47
  35. package/esm2020/lib/components/crud-base/index.mjs +2 -2
  36. package/esm2020/lib/components/crud-footer/crud-footer.component.mjs +40 -40
  37. package/esm2020/lib/components/crud-footer/crud-footer.module.mjs +20 -20
  38. package/esm2020/lib/components/crud-footer/index.mjs +3 -3
  39. package/esm2020/lib/components/crud-header/crud-header.component.mjs +30 -30
  40. package/esm2020/lib/components/crud-header/crud-header.module.mjs +19 -19
  41. package/esm2020/lib/components/crud-header/index.mjs +3 -3
  42. package/esm2020/lib/components/crud-history/crud-history.component.mjs +82 -82
  43. package/esm2020/lib/components/crud-history/crud-history.module.mjs +20 -20
  44. package/esm2020/lib/components/crud-history/index.mjs +3 -3
  45. package/esm2020/lib/components/fields/button/button.component.mjs +41 -41
  46. package/esm2020/lib/components/fields/button/index.mjs +2 -2
  47. package/esm2020/lib/components/fields/calendar-field/calendar-field.component.mjs +74 -74
  48. package/esm2020/lib/components/fields/calendar-field/index.mjs +2 -2
  49. package/esm2020/lib/components/fields/checkbox-field/checkbox-field.component.mjs +46 -46
  50. package/esm2020/lib/components/fields/checkbox-field/index.mjs +2 -2
  51. package/esm2020/lib/components/fields/currency-field/currency-field.component.mjs +98 -98
  52. package/esm2020/lib/components/fields/currency-field/index.mjs +2 -2
  53. package/esm2020/lib/components/fields/data-table/data-table.component.mjs +388 -388
  54. package/esm2020/lib/components/fields/data-table/index.mjs +2 -2
  55. package/esm2020/lib/components/fields/dropdown-field/dropdown-field.component.mjs +204 -204
  56. package/esm2020/lib/components/fields/dropdown-field/index.mjs +2 -2
  57. package/esm2020/lib/components/fields/field-error-message/field-error-message.component.mjs +30 -30
  58. package/esm2020/lib/components/fields/field-error-message/index.mjs +2 -2
  59. package/esm2020/lib/components/fields/fields.module.mjs +222 -222
  60. package/esm2020/lib/components/fields/filters/filters.component.mjs +209 -209
  61. package/esm2020/lib/components/fields/filters/index.mjs +2 -2
  62. package/esm2020/lib/components/fields/index.mjs +20 -20
  63. package/esm2020/lib/components/fields/input-number-field/index.mjs +2 -2
  64. package/esm2020/lib/components/fields/input-number-field/input-number-field.component.mjs +86 -86
  65. package/esm2020/lib/components/fields/input-switch-field/index.mjs +2 -2
  66. package/esm2020/lib/components/fields/input-switch-field/input-switch-field.component.mjs +16 -16
  67. package/esm2020/lib/components/fields/multiselect-field/index.mjs +2 -2
  68. package/esm2020/lib/components/fields/multiselect-field/multiselect-field.component.mjs +154 -154
  69. package/esm2020/lib/components/fields/percentage-field/index.mjs +2 -2
  70. package/esm2020/lib/components/fields/percentage-field/percentage-field.component.mjs +54 -54
  71. package/esm2020/lib/components/fields/radio-button-field/index.mjs +2 -2
  72. package/esm2020/lib/components/fields/radio-button-field/radio-button-field.component.mjs +48 -48
  73. package/esm2020/lib/components/fields/range-value/index.mjs +2 -2
  74. package/esm2020/lib/components/fields/range-value/range-value.component.mjs +72 -72
  75. package/esm2020/lib/components/fields/search-field/index.mjs +2 -2
  76. package/esm2020/lib/components/fields/search-field/search-field.component.mjs +33 -33
  77. package/esm2020/lib/components/fields/select-button-field/index.mjs +2 -2
  78. package/esm2020/lib/components/fields/select-button-field/select-button-field.component.mjs +20 -20
  79. package/esm2020/lib/components/fields/text-field/index.mjs +2 -2
  80. package/esm2020/lib/components/fields/text-field/text-field.component.mjs +238 -238
  81. package/esm2020/lib/components/fields/textarea-field/index.mjs +2 -2
  82. package/esm2020/lib/components/fields/textarea-field/textarea-field.component.mjs +81 -81
  83. package/esm2020/lib/components/generic-error-modal/generic-error-modal.component.mjs +36 -36
  84. package/esm2020/lib/components/generic-error-modal/generic-error-modal.module.mjs +20 -20
  85. package/esm2020/lib/components/generic-error-modal/index.mjs +3 -3
  86. package/esm2020/lib/components/generic-modal/generic-modal.component.mjs +66 -66
  87. package/esm2020/lib/components/generic-modal/generic-modal.module.mjs +20 -20
  88. package/esm2020/lib/components/generic-modal/index.mjs +3 -3
  89. package/esm2020/lib/components/index.mjs +15 -15
  90. package/esm2020/lib/components/menu/index.mjs +4 -4
  91. package/esm2020/lib/components/menu/menu.component.mjs +305 -305
  92. package/esm2020/lib/components/menu/menu.module.mjs +20 -20
  93. package/esm2020/lib/components/menu/sub-menus-list/sub-menus-list.component.mjs +42 -42
  94. package/esm2020/lib/components/panel/index.mjs +3 -3
  95. package/esm2020/lib/components/panel/panel.component.mjs +15 -15
  96. package/esm2020/lib/components/panel/panel.module.mjs +19 -19
  97. package/esm2020/lib/components/score/index.mjs +3 -3
  98. package/esm2020/lib/components/score/score.component.mjs +17 -17
  99. package/esm2020/lib/components/score/score.module.mjs +16 -16
  100. package/esm2020/lib/components/stepper/index.mjs +3 -3
  101. package/esm2020/lib/components/stepper/stepper.component.mjs +47 -47
  102. package/esm2020/lib/components/stepper/stepper.module.mjs +19 -19
  103. package/esm2020/lib/components/top-bar/index.mjs +3 -3
  104. package/esm2020/lib/components/top-bar/top-bar.component.mjs +147 -147
  105. package/esm2020/lib/components/top-bar/top-bar.module.mjs +20 -20
  106. package/esm2020/lib/guards/crud-list-has-items.guard.mjs +22 -22
  107. package/esm2020/lib/guards/get-token-by-guid.guard.mjs +54 -54
  108. package/esm2020/lib/guards/has-permission.guard.mjs +27 -27
  109. package/esm2020/lib/guards/index.mjs +6 -6
  110. package/esm2020/lib/guards/role.guard.mjs +24 -24
  111. package/esm2020/lib/guards/token-is-present.guard.mjs +26 -26
  112. package/esm2020/lib/interceptors/http-interceptor.mjs +185 -185
  113. package/esm2020/lib/interceptors/index.mjs +2 -2
  114. package/esm2020/lib/models/app-name.enum.mjs +10 -10
  115. package/esm2020/lib/models/boolean-type.enum.mjs +6 -6
  116. package/esm2020/lib/models/crud-history.model.mjs +3 -3
  117. package/esm2020/lib/models/crud-mode.enum.mjs +7 -7
  118. package/esm2020/lib/models/currency.enum.mjs +7 -7
  119. package/esm2020/lib/models/data-table.model.mjs +23 -23
  120. package/esm2020/lib/models/document-type.enum.mjs +6 -6
  121. package/esm2020/lib/models/filters.model.mjs +2 -2
  122. package/esm2020/lib/models/generic-modal.model.mjs +2 -2
  123. package/esm2020/lib/models/http-response.model.mjs +2 -2
  124. package/esm2020/lib/models/index.mjs +18 -18
  125. package/esm2020/lib/models/ip-info.enum.mjs +2 -2
  126. package/esm2020/lib/models/list-item.model.mjs +2 -2
  127. package/esm2020/lib/models/locale.enum.mjs +7 -7
  128. package/esm2020/lib/models/menu-item.model.mjs +2 -2
  129. package/esm2020/lib/models/message-status.enum.mjs +8 -8
  130. package/esm2020/lib/models/profile.model.mjs +338 -338
  131. package/esm2020/lib/models/role.enum.mjs +5 -5
  132. package/esm2020/lib/models/status.enum.mjs +8 -8
  133. package/esm2020/lib/models/topbar.model.mjs +2 -2
  134. package/esm2020/lib/models/vector-app.model.mjs +2 -2
  135. package/esm2020/lib/models/vector-notification.model.mjs +2 -2
  136. package/esm2020/lib/models/view.enum.mjs +8 -8
  137. package/esm2020/lib/pipes/currency-brl.pipe.mjs +18 -18
  138. package/esm2020/lib/pipes/format-document.pipe.mjs +17 -17
  139. package/esm2020/lib/pipes/index.mjs +9 -9
  140. package/esm2020/lib/pipes/mask.pipe.mjs +21 -21
  141. package/esm2020/lib/pipes/not-hidden.pipe.mjs +16 -16
  142. package/esm2020/lib/pipes/only-active.pipe.mjs +16 -16
  143. package/esm2020/lib/pipes/pipes.module.mjs +50 -50
  144. package/esm2020/lib/pipes/remove-last-child.pipe.mjs +18 -18
  145. package/esm2020/lib/pipes/unread-notifications.pipe.mjs +15 -15
  146. package/esm2020/lib/resolvers/get-selected-crud-item.resolver.mjs +28 -28
  147. package/esm2020/lib/resolvers/index.mjs +2 -2
  148. package/esm2020/lib/services/auth.service.mjs +77 -77
  149. package/esm2020/lib/services/base-dropdown.mjs +2 -2
  150. package/esm2020/lib/services/crud-base.service.mjs +14 -14
  151. package/esm2020/lib/services/enum.service.mjs +43 -43
  152. package/esm2020/lib/services/error-message.service.mjs +16 -16
  153. package/esm2020/lib/services/geolocation.service.mjs +23 -23
  154. package/esm2020/lib/services/index.mjs +13 -13
  155. package/esm2020/lib/services/loading.service.mjs +15 -15
  156. package/esm2020/lib/services/menu.service.mjs +152 -152
  157. package/esm2020/lib/services/modal.service.mjs +15 -15
  158. package/esm2020/lib/services/notifications.service.mjs +64 -64
  159. package/esm2020/lib/services/profile.service.mjs +112 -112
  160. package/esm2020/lib/services/storage.service.mjs +108 -108
  161. package/esm2020/lib/shared/shared.module.mjs +19 -19
  162. package/esm2020/lib/utils/cpf-cnpj-validator.util.mjs +116 -116
  163. package/esm2020/lib/utils/file.util.mjs +15 -15
  164. package/esm2020/lib/utils/index.mjs +8 -8
  165. package/esm2020/lib/utils/mask.util.mjs +76 -76
  166. package/esm2020/lib/utils/object.util.mjs +27 -27
  167. package/esm2020/lib/utils/string.util.mjs +30 -30
  168. package/esm2020/lib/utils/validation.util.mjs +234 -234
  169. package/esm2020/lib/utils/window.util.mjs +9 -9
  170. package/esm2020/ngx-vector-components.mjs +4 -4
  171. package/esm2020/public-api.mjs +9 -9
  172. package/fesm2015/ngx-vector-components.mjs +4866 -4866
  173. package/fesm2015/ngx-vector-components.mjs.map +1 -1
  174. package/fesm2020/ngx-vector-components.mjs +4842 -4842
  175. package/fesm2020/ngx-vector-components.mjs.map +1 -1
  176. package/lib/components/badge/badge.component.d.ts +15 -15
  177. package/lib/components/badge/badge.module.d.ts +9 -9
  178. package/lib/components/badge/index.d.ts +2 -2
  179. package/lib/components/breadcrumb/breadcrumb.component.d.ts +19 -19
  180. package/lib/components/breadcrumb/breadcrumb.module.d.ts +8 -8
  181. package/lib/components/breadcrumb/index.d.ts +2 -2
  182. package/lib/components/crud-base/crud-base.component.d.ts +20 -20
  183. package/lib/components/crud-base/index.d.ts +1 -1
  184. package/lib/components/crud-footer/crud-footer.component.d.ts +19 -19
  185. package/lib/components/crud-footer/crud-footer.module.d.ts +10 -10
  186. package/lib/components/crud-footer/index.d.ts +2 -2
  187. package/lib/components/crud-header/crud-header.component.d.ts +11 -11
  188. package/lib/components/crud-header/crud-header.module.d.ts +9 -9
  189. package/lib/components/crud-header/index.d.ts +2 -2
  190. package/lib/components/crud-history/crud-history.component.d.ts +12 -12
  191. package/lib/components/crud-history/crud-history.module.d.ts +10 -10
  192. package/lib/components/crud-history/index.d.ts +2 -2
  193. package/lib/components/fields/button/button.component.d.ts +17 -17
  194. package/lib/components/fields/button/index.d.ts +1 -1
  195. package/lib/components/fields/calendar-field/calendar-field.component.d.ts +23 -23
  196. package/lib/components/fields/calendar-field/index.d.ts +1 -1
  197. package/lib/components/fields/checkbox-field/checkbox-field.component.d.ts +19 -19
  198. package/lib/components/fields/checkbox-field/index.d.ts +1 -1
  199. package/lib/components/fields/currency-field/currency-field.component.d.ts +32 -32
  200. package/lib/components/fields/currency-field/index.d.ts +1 -1
  201. package/lib/components/fields/data-table/data-table.component.d.ts +87 -87
  202. package/lib/components/fields/data-table/index.d.ts +1 -1
  203. package/lib/components/fields/dropdown-field/dropdown-field.component.d.ts +52 -52
  204. package/lib/components/fields/dropdown-field/index.d.ts +1 -1
  205. package/lib/components/fields/field-error-message/field-error-message.component.d.ts +10 -10
  206. package/lib/components/fields/field-error-message/index.d.ts +1 -1
  207. package/lib/components/fields/fields.module.d.ts +50 -50
  208. package/lib/components/fields/filters/filters.component.d.ts +65 -65
  209. package/lib/components/fields/filters/index.d.ts +1 -1
  210. package/lib/components/fields/index.d.ts +19 -19
  211. package/lib/components/fields/input-number-field/index.d.ts +1 -1
  212. package/lib/components/fields/input-number-field/input-number-field.component.d.ts +28 -28
  213. package/lib/components/fields/input-switch-field/index.d.ts +1 -1
  214. package/lib/components/fields/input-switch-field/input-switch-field.component.d.ts +8 -8
  215. package/lib/components/fields/multiselect-field/index.d.ts +1 -1
  216. package/lib/components/fields/multiselect-field/multiselect-field.component.d.ts +40 -40
  217. package/lib/components/fields/percentage-field/index.d.ts +1 -1
  218. package/lib/components/fields/percentage-field/percentage-field.component.d.ts +20 -20
  219. package/lib/components/fields/radio-button-field/index.d.ts +1 -1
  220. package/lib/components/fields/radio-button-field/radio-button-field.component.d.ts +25 -25
  221. package/lib/components/fields/range-value/index.d.ts +1 -1
  222. package/lib/components/fields/range-value/range-value.component.d.ts +18 -18
  223. package/lib/components/fields/search-field/index.d.ts +1 -1
  224. package/lib/components/fields/search-field/search-field.component.d.ts +14 -14
  225. package/lib/components/fields/select-button-field/index.d.ts +1 -1
  226. package/lib/components/fields/select-button-field/select-button-field.component.d.ts +9 -9
  227. package/lib/components/fields/text-field/index.d.ts +1 -1
  228. package/lib/components/fields/text-field/text-field.component.d.ts +56 -56
  229. package/lib/components/fields/textarea-field/index.d.ts +1 -1
  230. package/lib/components/fields/textarea-field/textarea-field.component.d.ts +22 -22
  231. package/lib/components/generic-error-modal/generic-error-modal.component.d.ts +15 -15
  232. package/lib/components/generic-error-modal/generic-error-modal.module.d.ts +10 -10
  233. package/lib/components/generic-error-modal/index.d.ts +2 -2
  234. package/lib/components/generic-modal/generic-modal.component.d.ts +24 -24
  235. package/lib/components/generic-modal/generic-modal.module.d.ts +10 -10
  236. package/lib/components/generic-modal/index.d.ts +2 -2
  237. package/lib/components/index.d.ts +14 -14
  238. package/lib/components/menu/index.d.ts +3 -3
  239. package/lib/components/menu/menu.component.d.ts +53 -53
  240. package/lib/components/menu/menu.module.d.ts +10 -10
  241. package/lib/components/menu/sub-menus-list/sub-menus-list.component.d.ts +14 -14
  242. package/lib/components/panel/index.d.ts +2 -2
  243. package/lib/components/panel/panel.component.d.ts +8 -8
  244. package/lib/components/panel/panel.module.d.ts +9 -9
  245. package/lib/components/score/index.d.ts +2 -2
  246. package/lib/components/score/score.component.d.ts +9 -9
  247. package/lib/components/score/score.module.d.ts +7 -7
  248. package/lib/components/stepper/index.d.ts +2 -2
  249. package/lib/components/stepper/stepper.component.d.ts +15 -15
  250. package/lib/components/stepper/stepper.module.d.ts +9 -9
  251. package/lib/components/top-bar/index.d.ts +2 -2
  252. package/lib/components/top-bar/top-bar.component.d.ts +49 -49
  253. package/lib/components/top-bar/top-bar.module.d.ts +10 -10
  254. package/lib/guards/crud-list-has-items.guard.d.ts +10 -10
  255. package/lib/guards/get-token-by-guid.guard.d.ts +15 -15
  256. package/lib/guards/has-permission.guard.d.ts +13 -13
  257. package/lib/guards/index.d.ts +5 -5
  258. package/lib/guards/role.guard.d.ts +11 -11
  259. package/lib/guards/token-is-present.guard.d.ts +11 -11
  260. package/lib/interceptors/http-interceptor.d.ts +31 -31
  261. package/lib/interceptors/index.d.ts +1 -1
  262. package/lib/models/app-name.enum.d.ts +8 -8
  263. package/lib/models/boolean-type.enum.d.ts +4 -4
  264. package/lib/models/crud-history.model.d.ts +13 -13
  265. package/lib/models/crud-mode.enum.d.ts +5 -5
  266. package/lib/models/currency.enum.d.ts +5 -5
  267. package/lib/models/data-table.model.d.ts +65 -65
  268. package/lib/models/document-type.enum.d.ts +4 -4
  269. package/lib/models/filters.model.d.ts +4 -4
  270. package/lib/models/generic-modal.model.d.ts +12 -12
  271. package/lib/models/http-response.model.d.ts +57 -57
  272. package/lib/models/index.d.ts +17 -17
  273. package/lib/models/ip-info.enum.d.ts +6 -6
  274. package/lib/models/list-item.model.d.ts +7 -7
  275. package/lib/models/locale.enum.d.ts +5 -5
  276. package/lib/models/menu-item.model.d.ts +16 -16
  277. package/lib/models/message-status.enum.d.ts +6 -6
  278. package/lib/models/profile.model.d.ts +358 -358
  279. package/lib/models/role.enum.d.ts +3 -3
  280. package/lib/models/status.enum.d.ts +6 -6
  281. package/lib/models/topbar.model.d.ts +5 -5
  282. package/lib/models/vector-app.model.d.ts +9 -9
  283. package/lib/models/vector-notification.model.d.ts +8 -8
  284. package/lib/models/view.enum.d.ts +6 -6
  285. package/lib/pipes/currency-brl.pipe.d.ts +7 -7
  286. package/lib/pipes/format-document.pipe.d.ts +7 -7
  287. package/lib/pipes/index.d.ts +8 -8
  288. package/lib/pipes/mask.pipe.d.ts +7 -7
  289. package/lib/pipes/not-hidden.pipe.d.ts +7 -7
  290. package/lib/pipes/only-active.pipe.d.ts +7 -7
  291. package/lib/pipes/pipes.module.d.ts +13 -13
  292. package/lib/pipes/remove-last-child.pipe.d.ts +7 -7
  293. package/lib/pipes/unread-notifications.pipe.d.ts +9 -9
  294. package/lib/resolvers/get-selected-crud-item.resolver.d.ts +10 -10
  295. package/lib/resolvers/index.d.ts +1 -1
  296. package/lib/services/auth.service.d.ts +24 -24
  297. package/lib/services/base-dropdown.d.ts +7 -7
  298. package/lib/services/crud-base.service.d.ts +7 -7
  299. package/lib/services/enum.service.d.ts +13 -13
  300. package/lib/services/error-message.service.d.ts +8 -8
  301. package/lib/services/geolocation.service.d.ts +13 -13
  302. package/lib/services/index.d.ts +12 -12
  303. package/lib/services/loading.service.d.ts +7 -7
  304. package/lib/services/menu.service.d.ts +35 -35
  305. package/lib/services/modal.service.d.ts +7 -7
  306. package/lib/services/notifications.service.d.ts +13 -13
  307. package/lib/services/profile.service.d.ts +27 -27
  308. package/lib/services/storage.service.d.ts +43 -43
  309. package/lib/shared/shared.module.d.ts +10 -10
  310. package/lib/utils/cpf-cnpj-validator.util.d.ts +5 -5
  311. package/lib/utils/file.util.d.ts +4 -4
  312. package/lib/utils/index.d.ts +7 -7
  313. package/lib/utils/mask.util.d.ts +21 -21
  314. package/lib/utils/object.util.d.ts +5 -5
  315. package/lib/utils/string.util.d.ts +6 -6
  316. package/lib/utils/validation.util.d.ts +17 -17
  317. package/lib/utils/window.util.d.ts +4 -4
  318. package/ngx-vector-components.d.ts +5 -5
  319. package/package.json +1 -1
  320. package/public-api.d.ts +8 -8
@@ -1,2 +1,2 @@
1
- export * from './data-table.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9kYXRhLXRhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGEtdGFibGUuY29tcG9uZW50JztcclxuIl19
1
+ export * from './data-table.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9kYXRhLXRhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGEtdGFibGUuY29tcG9uZW50JztcbiJdfQ==
@@ -1,204 +1,204 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { Subscription } from 'rxjs';
3
- import { ObjectUtil } from '../../../utils';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "primeng/dropdown";
6
- import * as i2 from "primeng/autocomplete";
7
- import * as i3 from "../button/button.component";
8
- import * as i4 from "../field-error-message/field-error-message.component";
9
- import * as i5 from "@angular/common";
10
- import * as i6 from "@angular/forms";
11
- import * as i7 from "primeng/api";
12
- export class DropdownFieldComponent {
13
- constructor(renderer) {
14
- this.renderer = renderer;
15
- this.isNgContent = false;
16
- this.isRequired = false;
17
- this.label = '';
18
- this.paged = true;
19
- this.hiddenErrorMessage = false;
20
- this.minLengthToService = 0;
21
- this.initialLoad = true;
22
- this.disabled = false;
23
- this.onFocus = new EventEmitter();
24
- this.onChange = new EventEmitter();
25
- this.pagedSuggestions = [];
26
- this.unlistenAutocompleteVirtualScroll = () => { };
27
- this.selectedDynamicFilter = this.dynamicFilters ? this.dynamicFilters[0].code : undefined;
28
- this._options = [];
29
- this.currentScrollPage = -1;
30
- this.currentScrollIndex = 0;
31
- this.subscription = new Subscription();
32
- this.currentSearchQuery = '';
33
- }
34
- set options(_options) {
35
- this._options = _options;
36
- this.pagedSuggestions = this.options || [];
37
- }
38
- set control(_control) {
39
- this._control = _control;
40
- if (this.control) {
41
- this.subscription.add(this.control.valueChanges.subscribe(() => {
42
- this.setControlValueFromSuggestions();
43
- }));
44
- }
45
- }
46
- get control() {
47
- return this._control;
48
- }
49
- get options() {
50
- return this._options;
51
- }
52
- get placeholder() {
53
- if (!this.label) {
54
- return '';
55
- }
56
- return `${this.label}${this.isRequired ? '*' : ''}`;
57
- }
58
- ngOnInit() {
59
- if (this.initialLoad) {
60
- this.search(null, true);
61
- }
62
- }
63
- ngOnDestroy() {
64
- this.subscription.unsubscribe();
65
- if (this.unlistenAutocompleteVirtualScroll) {
66
- this.unlistenAutocompleteVirtualScroll();
67
- }
68
- }
69
- fieldErrorLabel() {
70
- if (this.control?.invalid && this.control.touched) {
71
- if (this.control.hasError('required')) {
72
- return 'Campo obrigatório';
73
- }
74
- return this.control?.errors && typeof this.control.errors['invalid'] === 'string'
75
- ? this.control?.errors['invalid']
76
- : 'Campo inválido';
77
- }
78
- return '';
79
- }
80
- search($event, forceSearch = false) {
81
- this.currentSearchQuery = $event?.query.toUpperCase() || '';
82
- this.currentScrollPage = -1;
83
- this.currentScrollIndex = 0;
84
- if (forceSearch || this.currentSearchQuery.length >= this.minLengthToService) {
85
- this.pageResults();
86
- }
87
- else {
88
- this.pagedSuggestions = [];
89
- }
90
- }
91
- onOpenAutocompletePanel() {
92
- const autocompletePanel = document.querySelector('.p-autocomplete-panel');
93
- if (autocompletePanel && this.paged && this.currentSearchQuery.length >= this.minLengthToService) {
94
- this.unlistenAutocompleteVirtualScroll = this.renderer.listen(autocompletePanel, 'scroll', (event) => {
95
- const eventHeight = event.target.scrollHeight - event.target.clientHeight - 150;
96
- if (Math.round(event.target.scrollTop) >= eventHeight) {
97
- this.pageResults();
98
- }
99
- });
100
- }
101
- }
102
- onHideAutocompletePanel() {
103
- if (this.paged) {
104
- this.unlistenAutocompleteVirtualScroll();
105
- }
106
- }
107
- pageResults() {
108
- if (this.service) {
109
- this.currentScrollPage++;
110
- this.service
111
- .getPaged(encodeURIComponent(this.currentSearchQuery), this.currentScrollPage, 20, this.dependencies)
112
- .subscribe({
113
- next: (response) => {
114
- this.pagedSuggestions = this.currentScrollPage === 0 ? response : this.pagedSuggestions?.concat(response);
115
- this.setControlValueFromSuggestions();
116
- this.handleSearchErrors();
117
- },
118
- error: (err) => { },
119
- });
120
- }
121
- else {
122
- const filteredOptions = this.filterListByQuery(this.options, this.currentSearchQuery.toUpperCase());
123
- this.pagedSuggestions = filteredOptions.slice(0, this.currentScrollIndex + 20);
124
- if (this.options?.length && this.options.length > 20) {
125
- this.currentScrollIndex = this.currentScrollIndex + 20;
126
- }
127
- this.setControlValueFromSuggestions();
128
- this.handleSearchErrors();
129
- }
130
- }
131
- setControlValueFromSuggestions() {
132
- const code = (ObjectUtil.isValid(this.control.value?.code) && `${this.control.value?.code}`) || `${this.control.value}`;
133
- if (this.control.value && this.pagedSuggestions?.length) {
134
- let itemsArray = this.pagedSuggestions;
135
- if (this.options?.length) {
136
- itemsArray = this.options;
137
- }
138
- const itemFromSuggestions = itemsArray.find((opt) => `${opt.code}`.toUpperCase() === code.toUpperCase());
139
- if (itemFromSuggestions) {
140
- this.control.setValue(itemFromSuggestions, { emitEvent: false });
141
- }
142
- else {
143
- this.service?.getById(+code).subscribe((response) => {
144
- this.control.setValue(response, { emitEvent: false });
145
- });
146
- }
147
- }
148
- else if (this.control.value && !this.pagedSuggestions?.length) {
149
- this.service?.getById(+code).subscribe((response) => {
150
- this.control.setValue(response, { emitEvent: false });
151
- });
152
- }
153
- }
154
- handleSearchErrors() {
155
- if (this.pagedSuggestions?.length) {
156
- delete this.control.errors?.itemNotFound;
157
- }
158
- else if (this.currentSearchQuery) {
159
- this.control.setErrors({ itemNotFound: true });
160
- }
161
- }
162
- filterListByQuery(list = [], query) {
163
- return list.filter((opt) => String(opt.code).toUpperCase().includes(query) || opt.name.toUpperCase().includes(query));
164
- }
165
- }
166
- DropdownFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DropdownFieldComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
167
- DropdownFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: DropdownFieldComponent, selector: "vector-dropdown-field", inputs: { options: "options", isNgContent: "isNgContent", isRequired: "isRequired", control: "control", label: "label", service: "service", paged: "paged", buttonAction: "buttonAction", dependencies: "dependencies", hiddenErrorMessage: "hiddenErrorMessage", dynamicFilters: "dynamicFilters", minLengthToService: "minLengthToService", initialLoad: "initialLoad", disabled: "disabled" }, outputs: { onFocus: "onFocus", onChange: "onChange" }, ngImport: i0, template: "<div class=\"relative\">\r\n <div class=\"input-container\">\r\n <div class=\"input-inner-container\" *ngIf=\"!isNgContent\">\r\n <p-dropdown\r\n *ngIf=\"dynamicFilters\"\r\n appendTo=\"body\"\r\n optionLabel=\"name\"\r\n optionValue=\"code\"\r\n [(ngModel)]=\"selectedDynamicFilter\"\r\n [options]=\"dynamicFilters\"\r\n [disabled]=\"disabled\"\r\n >\r\n </p-dropdown>\r\n <p-autoComplete\r\n appendTo=\"body\"\r\n field=\"name\"\r\n dataKey=\"code\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"true\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"pagedSuggestions\"\r\n [dropdownIcon]=\"dynamicFilters ? 'pi pi-search' : 'pi pi-chevron-down'\"\r\n (completeMethod)=\"search($event)\"\r\n (onShow)=\"onOpenAutocompletePanel()\"\r\n (onHide)=\"onHideAutocompletePanel()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onChange)=\"onChange.emit($event)\"\r\n [disabled]=\"disabled\"\r\n >\r\n </p-autoComplete>\r\n </div>\r\n\r\n <div class=\"input-inner-container\" *ngIf=\"isNgContent\">\r\n <p-autoComplete\r\n appendTo=\"body\"\r\n field=\"nameCustom\"\r\n dataKey=\"code\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"true\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"pagedSuggestions\"\r\n [dropdownIcon]=\"dynamicFilters ? 'pi pi-search' : 'pi pi-chevron-down'\"\r\n (completeMethod)=\"search($event)\"\r\n (onShow)=\"onOpenAutocompletePanel()\"\r\n (onHide)=\"onHideAutocompletePanel()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onChange)=\"onChange.emit($event)\"\r\n [disabled]=\"disabled\"\r\n >\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"option-content\">\r\n <span class=\"option-label\">{{ option.name }}</span>\r\n <br />\r\n <span class=\"option-sublabel\">{{ option.code }}</span>\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n </div>\r\n\r\n <vector-button\r\n *ngIf=\"buttonAction\"\r\n [label]=\"buttonAction.label\"\r\n [disabled]=\"!control.value\"\r\n (onClick)=\"buttonAction.onClick(control.value)\"\r\n ></vector-button>\r\n </div>\r\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\r\n</div>\r\n", styles: [".input-container{display:flex;align-items:flex-end;width:100%}@media (max-width: 575px){.input-container{align-items:flex-start;flex-direction:column}}.input-container p-autoComplete{flex:1}@media (max-width: 575px){.input-container p-autoComplete{width:100%}}.input-container vector-button{margin-left:15px}@media (max-width: 575px){.input-container vector-button{margin-left:0;margin-top:10px;width:100%}}.input-container p-dropdown{margin-right:-5px;width:150px}@media (max-width: 575px){.input-container p-dropdown{width:100px}}.input-container .input-inner-container{display:flex;width:100%}\n"], components: [{ type: i1.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }, { type: i2.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "virtualScroll", "itemSize", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "field", "scrollHeight", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "suggestions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide"] }, { type: i3.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "rightIcon", "noShadow", "style"], outputs: ["onClick"] }, { type: i4.FieldErrorMessageComponent, selector: "vector-field-error-message", inputs: ["control"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] });
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DropdownFieldComponent, decorators: [{
169
- type: Component,
170
- args: [{ selector: 'vector-dropdown-field', template: "<div class=\"relative\">\r\n <div class=\"input-container\">\r\n <div class=\"input-inner-container\" *ngIf=\"!isNgContent\">\r\n <p-dropdown\r\n *ngIf=\"dynamicFilters\"\r\n appendTo=\"body\"\r\n optionLabel=\"name\"\r\n optionValue=\"code\"\r\n [(ngModel)]=\"selectedDynamicFilter\"\r\n [options]=\"dynamicFilters\"\r\n [disabled]=\"disabled\"\r\n >\r\n </p-dropdown>\r\n <p-autoComplete\r\n appendTo=\"body\"\r\n field=\"name\"\r\n dataKey=\"code\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"true\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"pagedSuggestions\"\r\n [dropdownIcon]=\"dynamicFilters ? 'pi pi-search' : 'pi pi-chevron-down'\"\r\n (completeMethod)=\"search($event)\"\r\n (onShow)=\"onOpenAutocompletePanel()\"\r\n (onHide)=\"onHideAutocompletePanel()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onChange)=\"onChange.emit($event)\"\r\n [disabled]=\"disabled\"\r\n >\r\n </p-autoComplete>\r\n </div>\r\n\r\n <div class=\"input-inner-container\" *ngIf=\"isNgContent\">\r\n <p-autoComplete\r\n appendTo=\"body\"\r\n field=\"nameCustom\"\r\n dataKey=\"code\"\r\n [forceSelection]=\"true\"\r\n [dropdown]=\"true\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [suggestions]=\"pagedSuggestions\"\r\n [dropdownIcon]=\"dynamicFilters ? 'pi pi-search' : 'pi pi-chevron-down'\"\r\n (completeMethod)=\"search($event)\"\r\n (onShow)=\"onOpenAutocompletePanel()\"\r\n (onHide)=\"onHideAutocompletePanel()\"\r\n (onFocus)=\"onFocus.emit($event)\"\r\n (onChange)=\"onChange.emit($event)\"\r\n [disabled]=\"disabled\"\r\n >\r\n <ng-template let-option pTemplate=\"item\">\r\n <div class=\"option-content\">\r\n <span class=\"option-label\">{{ option.name }}</span>\r\n <br />\r\n <span class=\"option-sublabel\">{{ option.code }}</span>\r\n </div>\r\n </ng-template>\r\n </p-autoComplete>\r\n </div>\r\n\r\n <vector-button\r\n *ngIf=\"buttonAction\"\r\n [label]=\"buttonAction.label\"\r\n [disabled]=\"!control.value\"\r\n (onClick)=\"buttonAction.onClick(control.value)\"\r\n ></vector-button>\r\n </div>\r\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\r\n</div>\r\n", styles: [".input-container{display:flex;align-items:flex-end;width:100%}@media (max-width: 575px){.input-container{align-items:flex-start;flex-direction:column}}.input-container p-autoComplete{flex:1}@media (max-width: 575px){.input-container p-autoComplete{width:100%}}.input-container vector-button{margin-left:15px}@media (max-width: 575px){.input-container vector-button{margin-left:0;margin-top:10px;width:100%}}.input-container p-dropdown{margin-right:-5px;width:150px}@media (max-width: 575px){.input-container p-dropdown{width:100px}}.input-container .input-inner-container{display:flex;width:100%}\n"] }]
171
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { options: [{
172
- type: Input
173
- }], isNgContent: [{
174
- type: Input
175
- }], isRequired: [{
176
- type: Input
177
- }], control: [{
178
- type: Input
179
- }], label: [{
180
- type: Input
181
- }], service: [{
182
- type: Input
183
- }], paged: [{
184
- type: Input
185
- }], buttonAction: [{
186
- type: Input
187
- }], dependencies: [{
188
- type: Input
189
- }], hiddenErrorMessage: [{
190
- type: Input
191
- }], dynamicFilters: [{
192
- type: Input
193
- }], minLengthToService: [{
194
- type: Input
195
- }], initialLoad: [{
196
- type: Input
197
- }], disabled: [{
198
- type: Input
199
- }], onFocus: [{
200
- type: Output
201
- }], onChange: [{
202
- type: Output
203
- }] } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvZHJvcGRvd24tZmllbGQvZHJvcGRvd24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvZHJvcGRvd24tZmllbGQvZHJvcGRvd24tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVk1QyxNQUFNLE9BQU8sc0JBQXNCO0lBeUVqQyxZQUFvQixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbEVoQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdwQixlQUFVLEdBQXdCLEtBQUssQ0FBQztRQWF4QyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBSW5CLFVBQUssR0FBRyxJQUFJLENBQUM7UUFNYix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFJcEMsdUJBQWtCLEdBQVcsQ0FBQyxDQUFDO1FBRS9CLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0IsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFpQjlCLHFCQUFnQixHQUFlLEVBQUUsQ0FBQztRQUNs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QkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFHQyxXQUFXO3NCQURqQixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxPQUFPO3NCQURiLE1BQU07Z0JBR0EsUUFBUTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgQmFzZURyb3Bkb3duIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xyXG5cclxuZXhwb3J0IHR5cGUgRHJvcGRvd25CdXR0b25BY3Rpb24gPSB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBvbkNsaWNrOiAodmFsdWU6IGFueSkgPT4gdm9pZDtcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndmVjdG9yLWRyb3Bkb3duLWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG9wdGlvbnMoX29wdGlvbnM6IExpc3RJdGVtW10pIHtcclxuICAgIHRoaXMuX29wdGlvbnMgPSBfb3B0aW9ucztcclxuICAgIHRoaXMucGFnZWRTdWdnZXN0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCBbXTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNOZ0NvbnRlbnQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaXNSZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNvbnRyb2woX2NvbnRyb2w6IGFueSkge1xyXG4gICAgdGhpcy5fY29udHJvbCA9IF9jb250cm9sO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWVGcm9tU3VnZ2VzdGlvbnMoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2VydmljZTogQmFzZURyb3Bkb3duIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBhZ2VkID0gdHJ1ZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBidXR0b25BY3Rpb246IERyb3Bkb3duQnV0dG9uQWN0aW9uIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlcGVuZGVuY2llczogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGhpZGRlbkVycm9yTWVzc2FnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGR5bmFtaWNGaWx0ZXJzPzogTGlzdEl0ZW1bXTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBtaW5MZW5ndGhUb1NlcnZpY2U6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaW5pdGlhbExvYWQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uRm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBnZXQgY29udHJvbCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9wdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcclxuICB9XHJcblxyXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcclxuICAgIGlmICghdGhpcy5sYWJlbCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0ke3RoaXMuaXNSZXF1aXJlZCA/ICcqJyA6ICcnfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnZWRTdWdnZXN0aW9uczogTGlzdEl0ZW1bXSA9IFtdO1xyXG4gIHB1YmxpYyB1bmxpc3RlbkF1dG9jb21wbGV0ZVZpcnR1YWxTY3JvbGwgPSAoKSA9PiB7fTtcclxuICBwdWJsaWMgc2VsZWN0ZWREeW5hbWljRmlsdGVyOiBhbnkgPSB0aGlzLmR5bmFtaWNGaWx0ZXJzID8gdGhpcy5keW5hbWljRmlsdGVyc1swXS5jb2RlIDogdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIF9jb250cm9sOiBhbnk7XHJcbiAgcHJpdmF0ZSBfb3B0aW9uczogYW55W10gPSBbXTtcclxuICBwcml2YXRlIGN1cnJlbnRTY3JvbGxQYWdlID0gLTE7XHJcbiAgcHJpdmF0ZSBjdXJyZW50U2Nyb2xsSW5kZXggPSAwO1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIHByaXZhdGUgY3VycmVudFNlYXJjaFF1ZXJ5ID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbml0aWFsTG9hZCkge1xyXG4gICAgICB0aGlzLnNlYXJjaChudWxsLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIGlmICh0aGlzLnVubGlzdGVuQXV0b2NvbXBsZXRlVmlydHVhbFNjcm9sbCkge1xyXG4gICAgICB0aGlzLnVubGlzdGVuQXV0b2NvbXBsZXRlVmlydHVhbFNjcm9sbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpZWxkRXJyb3JMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbD8uaW52YWxpZCAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCkge1xyXG4gICAgICBpZiAodGhpcy5jb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XHJcbiAgICAgICAgcmV0dXJuICdDYW1wbyBvYnJpZ2F0w7NyaW8nO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sPy5lcnJvcnMgJiYgdHlwZW9mIHRoaXMuY29udHJvbC5lcnJvcnNbJ2ludmFsaWQnXSA9PT0gJ3N0cmluZydcclxuICAgICAgICA/IHRoaXMuY29udHJvbD8uZXJyb3JzWydpbnZhbGlkJ11cclxuICAgICAgICA6ICdDYW1wbyBpbnbDoWxpZG8nO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWFyY2goJGV2ZW50PzogYW55LCBmb3JjZVNlYXJjaCA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRTZWFyY2hRdWVyeSA9ICRldmVudD8ucXVlcnkudG9VcHBlckNhc2UoKSB8fCAnJztcclxuICAgIHRoaXMuY3VycmVudFNjcm9sbFBhZ2UgPSAtMTtcclxuICAgIHRoaXMuY3VycmVudFNjcm9sbEluZGV4ID0gMDtcclxuICAgIGlmIChmb3JjZVNlYXJjaCB8fCB0aGlzLmN1cnJlbnRTZWFyY2hRdWVyeS5sZW5ndGggPj0gdGhpcy5taW5MZW5ndGhUb1NlcnZpY2UpIHtcclxuICAgICAgdGhpcy5wYWdlUmVzdWx0cygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdlZFN1Z2dlc3Rpb25zID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25PcGVuQXV0b2NvbXBsZXRlUGFuZWwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBhdXRvY29tcGxldGVQYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wLWF1dG9jb21wbGV0ZS1wYW5lbCcpO1xyXG4gICAgaWYgKGF1dG9jb21wbGV0ZVBhbmVsICYmIHRoaXMucGFnZWQgJiYgdGhpcy5jdXJyZW50U2VhcmNoUXVlcnkubGVuZ3RoID49IHRoaXMubWluTGVuZ3RoVG9TZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMudW5saXN0ZW5BdXRvY29tcGxldGVWaXJ0dWFsU2Nyb2xsID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oYXV0b2NvbXBsZXRlUGFuZWwsICdzY3JvbGwnLCAoZXZlbnQpID0+IHtcclxuICAgICAgICBjb25zdCBldmVudEhlaWdodCA9IGV2ZW50LnRhcmdldC5zY3JvbGxIZWlnaHQgLSBldmVudC50YXJnZXQuY2xpZW50SGVpZ2h0IC0gMTUwO1xyXG5cclxuICAgICAgICBpZiAoTWF0aC5yb3VuZChldmVudC50YXJnZXQuc2Nyb2xsVG9wKSA+PSBldmVudEhlaWdodCkge1xyXG4gICAgICAgICAgdGhpcy5wYWdlUmVzdWx0cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25IaWRlQXV0b2NvbXBsZXRlUGFuZWwoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5wYWdlZCkge1xyXG4gICAgICB0aGlzLnVubGlzdGVuQXV0b2NvbXBsZXRlVmlydHVhbFNjcm9sbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYWdlUmVzdWx0cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlcnZpY2UpIHtcclxuICAgICAgdGhpcy5jdXJyZW50U2Nyb2xsUGFnZSsrO1xyXG4gICAgICB0aGlzLnNlcnZpY2VcclxuICAgICAgICAuZ2V0UGFnZWQoZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuY3VycmVudFNlYXJjaFF1ZXJ5KSwgdGhpcy5jdXJyZW50U2Nyb2xsUGFnZSwgMjAsIHRoaXMuZGVwZW5kZW5jaWVzKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZWRTdWdnZXN0aW9ucyA9IHRoaXMuY3VycmVudFNjcm9sbFBhZ2UgPT09IDAgPyByZXNwb25zZSA6IHRoaXMucGFnZWRTdWdnZXN0aW9ucz8uY29uY2F0KHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWVGcm9tU3VnZ2VzdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVTZWFyY2hFcnJvcnMoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge30sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpbHRlckxpc3RCeVF1ZXJ5KHRoaXMub3B0aW9ucywgdGhpcy5jdXJyZW50U2VhcmNoUXVlcnkudG9VcHBlckNhc2UoKSk7XHJcbiAgICAgIHRoaXMucGFnZWRTdWdnZXN0aW9ucyA9IGZpbHRlcmVkT3B0aW9ucy5zbGljZSgwLCB0aGlzLmN1cnJlbnRTY3JvbGxJbmRleCArIDIwKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnM/Lmxlbmd0aCAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMjApIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTY3JvbGxJbmRleCA9IHRoaXMuY3VycmVudFNjcm9sbEluZGV4ICsgMjA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlRnJvbVN1Z2dlc3Rpb25zKCk7XHJcbiAgICAgIHRoaXMuaGFuZGxlU2VhcmNoRXJyb3JzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvbnRyb2xWYWx1ZUZyb21TdWdnZXN0aW9ucygpIHtcclxuICAgIGNvbnN0IGNvZGUgPVxyXG4gICAgICAoT2JqZWN0VXRpbC5pc1ZhbGlkKHRoaXMuY29udHJvbC52YWx1ZT8uY29kZSkgJiYgYCR7dGhpcy5jb250cm9sLnZhbHVlPy5jb2RlfWApIHx8IGAke3RoaXMuY29udHJvbC52YWx1ZX1gO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSAmJiB0aGlzLnBhZ2VkU3VnZ2VzdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICBsZXQgaXRlbXNBcnJheSA9IHRoaXMucGFnZWRTdWdnZXN0aW9ucztcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgaXRlbXNBcnJheSA9IHRoaXMub3B0aW9ucztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpdGVtRnJvbVN1Z2dlc3Rpb25zID0gaXRlbXNBcnJheS5maW5kKChvcHQpID0+IGAke29wdC5jb2RlfWAudG9VcHBlckNhc2UoKSA9PT0gY29kZS50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgaWYgKGl0ZW1Gcm9tU3VnZ2VzdGlvbnMpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoaXRlbUZyb21TdWdnZXN0aW9ucywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VydmljZT8uZ2V0QnlJZCgrY29kZSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHJlc3BvbnNlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sLnZhbHVlICYmICF0aGlzLnBhZ2VkU3VnZ2VzdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnNlcnZpY2U/LmdldEJ5SWQoK2NvZGUpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUocmVzcG9uc2UsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVNlYXJjaEVycm9ycygpIHtcclxuICAgIGlmICh0aGlzLnBhZ2VkU3VnZ2VzdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICBkZWxldGUgdGhpcy5jb250cm9sLmVycm9ycz8uaXRlbU5vdEZvdW5kO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmN1cnJlbnRTZWFyY2hRdWVyeSkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKHsgaXRlbU5vdEZvdW5kOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJMaXN0QnlRdWVyeShsaXN0OiBMaXN0SXRlbVtdID0gW10sIHF1ZXJ5OiBzdHJpbmcpOiBMaXN0SXRlbVtdIHtcclxuICAgIHJldHVybiBsaXN0LmZpbHRlcihcclxuICAgICAgKG9wdCkgPT4gU3RyaW5nKG9wdC5jb2RlKS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSB8fCBvcHQubmFtZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWlubmVyLWNvbnRhaW5lclwiICpuZ0lmPVwiIWlzTmdDb250ZW50XCI+XHJcbiAgICAgIDxwLWRyb3Bkb3duXHJcbiAgICAgICAgKm5nSWY9XCJkeW5hbWljRmlsdGVyc1wiXHJcbiAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICBvcHRpb25MYWJlbD1cIm5hbWVcIlxyXG4gICAgICAgIG9wdGlvblZhbHVlPVwiY29kZVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZER5bmFtaWNGaWx0ZXJcIlxyXG4gICAgICAgIFtvcHRpb25zXT1cImR5bmFtaWNGaWx0ZXJzXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvcC1kcm9wZG93bj5cclxuICAgICAgPHAtYXV0b0NvbXBsZXRlXHJcbiAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICBmaWVsZD1cIm5hbWVcIlxyXG4gICAgICAgIGRhdGFLZXk9XCJjb2RlXCJcclxuICAgICAgICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgW2Ryb3Bkb3duXT1cInRydWVcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtzdWdnZXN0aW9uc109XCJwYWdlZFN1Z2dlc3Rpb25zXCJcclxuICAgICAgICBbZHJvcGRvd25JY29uXT1cImR5bmFtaWNGaWx0ZXJzID8gJ3BpIHBpLXNlYXJjaCcgOiAncGkgcGktY2hldnJvbi1kb3duJ1wiXHJcbiAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgICAob25TaG93KT1cIm9uT3BlbkF1dG9jb21wbGV0ZVBhbmVsKClcIlxyXG4gICAgICAgIChvbkhpZGUpPVwib25IaWRlQXV0b2NvbXBsZXRlUGFuZWwoKVwiXHJcbiAgICAgICAgKG9uRm9jdXMpPVwib25Gb2N1cy5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIChvbkNoYW5nZSk9XCJvbkNoYW5nZS5lbWl0KCRldmVudClcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgID5cclxuICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1pbm5lci1jb250YWluZXJcIiAqbmdJZj1cImlzTmdDb250ZW50XCI+XHJcbiAgICAgIDxwLWF1dG9Db21wbGV0ZVxyXG4gICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgZmllbGQ9XCJuYW1lQ3VzdG9tXCJcclxuICAgICAgICBkYXRhS2V5PVwiY29kZVwiXHJcbiAgICAgICAgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIlxyXG4gICAgICAgIFtkcm9wZG93bl09XCJ0cnVlXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgICBbc3VnZ2VzdGlvbnNdPVwicGFnZWRTdWdnZXN0aW9uc1wiXHJcbiAgICAgICAgW2Ryb3Bkb3duSWNvbl09XCJkeW5hbWljRmlsdGVycyA/ICdwaSBwaS1zZWFyY2gnIDogJ3BpIHBpLWNoZXZyb24tZG93bidcIlxyXG4gICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uU2hvdyk9XCJvbk9wZW5BdXRvY29tcGxldGVQYW5lbCgpXCJcclxuICAgICAgICAob25IaWRlKT1cIm9uSGlkZUF1dG9jb21wbGV0ZVBhbmVsKClcIlxyXG4gICAgICAgIChvbkZvY3VzKT1cIm9uRm9jdXMuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAob25DaGFuZ2UpPVwib25DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1vcHRpb24gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3B0aW9uLWxhYmVsXCI+e3sgb3B0aW9uLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi1zdWJsYWJlbFwiPnt7IG9wdGlvbi5jb2RlIH19PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDx2ZWN0b3ItYnV0dG9uXHJcbiAgICAgICpuZ0lmPVwiYnV0dG9uQWN0aW9uXCJcclxuICAgICAgW2xhYmVsXT1cImJ1dHRvbkFjdGlvbi5sYWJlbFwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCIhY29udHJvbC52YWx1ZVwiXHJcbiAgICAgIChvbkNsaWNrKT1cImJ1dHRvbkFjdGlvbi5vbkNsaWNrKGNvbnRyb2wudmFsdWUpXCJcclxuICAgID48L3ZlY3Rvci1idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPHZlY3Rvci1maWVsZC1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIWhpZGRlbkVycm9yTWVzc2FnZVwiIFtjb250cm9sXT1cImNvbnRyb2xcIj48L3ZlY3Rvci1maWVsZC1lcnJvci1tZXNzYWdlPlxyXG48L2Rpdj5cclxuIl19
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import { ObjectUtil } from '../../../utils';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "primeng/dropdown";
6
+ import * as i2 from "primeng/autocomplete";
7
+ import * as i3 from "../button/button.component";
8
+ import * as i4 from "../field-error-message/field-error-message.component";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "@angular/forms";
11
+ import * as i7 from "primeng/api";
12
+ export class DropdownFieldComponent {
13
+ constructor(renderer) {
14
+ this.renderer = renderer;
15
+ this.isNgContent = false;
16
+ this.isRequired = false;
17
+ this.label = '';
18
+ this.paged = true;
19
+ this.hiddenErrorMessage = false;
20
+ this.minLengthToService = 0;
21
+ this.initialLoad = true;
22
+ this.disabled = false;
23
+ this.onFocus = new EventEmitter();
24
+ this.onChange = new EventEmitter();
25
+ this.pagedSuggestions = [];
26
+ this.unlistenAutocompleteVirtualScroll = () => { };
27
+ this.selectedDynamicFilter = this.dynamicFilters ? this.dynamicFilters[0].code : undefined;
28
+ this._options = [];
29
+ this.currentScrollPage = -1;
30
+ this.currentScrollIndex = 0;
31
+ this.subscription = new Subscription();
32
+ this.currentSearchQuery = '';
33
+ }
34
+ set options(_options) {
35
+ this._options = _options;
36
+ this.pagedSuggestions = this.options || [];
37
+ }
38
+ set control(_control) {
39
+ this._control = _control;
40
+ if (this.control) {
41
+ this.subscription.add(this.control.valueChanges.subscribe(() => {
42
+ this.setControlValueFromSuggestions();
43
+ }));
44
+ }
45
+ }
46
+ get control() {
47
+ return this._control;
48
+ }
49
+ get options() {
50
+ return this._options;
51
+ }
52
+ get placeholder() {
53
+ if (!this.label) {
54
+ return '';
55
+ }
56
+ return `${this.label}${this.isRequired ? '*' : ''}`;
57
+ }
58
+ ngOnInit() {
59
+ if (this.initialLoad) {
60
+ this.search(null, true);
61
+ }
62
+ }
63
+ ngOnDestroy() {
64
+ this.subscription.unsubscribe();
65
+ if (this.unlistenAutocompleteVirtualScroll) {
66
+ this.unlistenAutocompleteVirtualScroll();
67
+ }
68
+ }
69
+ fieldErrorLabel() {
70
+ if (this.control?.invalid && this.control.touched) {
71
+ if (this.control.hasError('required')) {
72
+ return 'Campo obrigatório';
73
+ }
74
+ return this.control?.errors && typeof this.control.errors['invalid'] === 'string'
75
+ ? this.control?.errors['invalid']
76
+ : 'Campo inválido';
77
+ }
78
+ return '';
79
+ }
80
+ search($event, forceSearch = false) {
81
+ this.currentSearchQuery = $event?.query.toUpperCase() || '';
82
+ this.currentScrollPage = -1;
83
+ this.currentScrollIndex = 0;
84
+ if (forceSearch || this.currentSearchQuery.length >= this.minLengthToService) {
85
+ this.pageResults();
86
+ }
87
+ else {
88
+ this.pagedSuggestions = [];
89
+ }
90
+ }
91
+ onOpenAutocompletePanel() {
92
+ const autocompletePanel = document.querySelector('.p-autocomplete-panel');
93
+ if (autocompletePanel && this.paged && this.currentSearchQuery.length >= this.minLengthToService) {
94
+ this.unlistenAutocompleteVirtualScroll = this.renderer.listen(autocompletePanel, 'scroll', (event) => {
95
+ const eventHeight = event.target.scrollHeight - event.target.clientHeight - 150;
96
+ if (Math.round(event.target.scrollTop) >= eventHeight) {
97
+ this.pageResults();
98
+ }
99
+ });
100
+ }
101
+ }
102
+ onHideAutocompletePanel() {
103
+ if (this.paged) {
104
+ this.unlistenAutocompleteVirtualScroll();
105
+ }
106
+ }
107
+ pageResults() {
108
+ if (this.service) {
109
+ this.currentScrollPage++;
110
+ this.service
111
+ .getPaged(encodeURIComponent(this.currentSearchQuery), this.currentScrollPage, 20, this.dependencies)
112
+ .subscribe({
113
+ next: (response) => {
114
+ this.pagedSuggestions = this.currentScrollPage === 0 ? response : this.pagedSuggestions?.concat(response);
115
+ this.setControlValueFromSuggestions();
116
+ this.handleSearchErrors();
117
+ },
118
+ error: (err) => { },
119
+ });
120
+ }
121
+ else {
122
+ const filteredOptions = this.filterListByQuery(this.options, this.currentSearchQuery.toUpperCase());
123
+ this.pagedSuggestions = filteredOptions.slice(0, this.currentScrollIndex + 20);
124
+ if (this.options?.length && this.options.length > 20) {
125
+ this.currentScrollIndex = this.currentScrollIndex + 20;
126
+ }
127
+ this.setControlValueFromSuggestions();
128
+ this.handleSearchErrors();
129
+ }
130
+ }
131
+ setControlValueFromSuggestions() {
132
+ const code = (ObjectUtil.isValid(this.control.value?.code) && `${this.control.value?.code}`) || `${this.control.value}`;
133
+ if (this.control.value && this.pagedSuggestions?.length) {
134
+ let itemsArray = this.pagedSuggestions;
135
+ if (this.options?.length) {
136
+ itemsArray = this.options;
137
+ }
138
+ const itemFromSuggestions = itemsArray.find((opt) => `${opt.code}`.toUpperCase() === code.toUpperCase());
139
+ if (itemFromSuggestions) {
140
+ this.control.setValue(itemFromSuggestions, { emitEvent: false });
141
+ }
142
+ else {
143
+ this.service?.getById(+code).subscribe((response) => {
144
+ this.control.setValue(response, { emitEvent: false });
145
+ });
146
+ }
147
+ }
148
+ else if (this.control.value && !this.pagedSuggestions?.length) {
149
+ this.service?.getById(+code).subscribe((response) => {
150
+ this.control.setValue(response, { emitEvent: false });
151
+ });
152
+ }
153
+ }
154
+ handleSearchErrors() {
155
+ if (this.pagedSuggestions?.length) {
156
+ delete this.control.errors?.itemNotFound;
157
+ }
158
+ else if (this.currentSearchQuery) {
159
+ this.control.setErrors({ itemNotFound: true });
160
+ }
161
+ }
162
+ filterListByQuery(list = [], query) {
163
+ return list.filter((opt) => String(opt.code).toUpperCase().includes(query) || opt.name.toUpperCase().includes(query));
164
+ }
165
+ }
166
+ DropdownFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DropdownFieldComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
167
+ DropdownFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: DropdownFieldComponent, selector: "vector-dropdown-field", inputs: { options: "options", isNgContent: "isNgContent", isRequired: "isRequired", control: "control", label: "label", service: "service", paged: "paged", buttonAction: "buttonAction", dependencies: "dependencies", hiddenErrorMessage: "hiddenErrorMessage", dynamicFilters: "dynamicFilters", minLengthToService: "minLengthToService", initialLoad: "initialLoad", disabled: "disabled" }, outputs: { onFocus: "onFocus", onChange: "onChange" }, ngImport: i0, template: "<div class=\"relative\">\n <div class=\"input-container\">\n <div class=\"input-inner-container\" *ngIf=\"!isNgContent\">\n <p-dropdown\n *ngIf=\"dynamicFilters\"\n appendTo=\"body\"\n optionLabel=\"name\"\n optionValue=\"code\"\n [(ngModel)]=\"selectedDynamicFilter\"\n [options]=\"dynamicFilters\"\n [disabled]=\"disabled\"\n >\n </p-dropdown>\n <p-autoComplete\n appendTo=\"body\"\n field=\"name\"\n dataKey=\"code\"\n [forceSelection]=\"true\"\n [dropdown]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"pagedSuggestions\"\n [dropdownIcon]=\"dynamicFilters ? 'pi pi-search' : 'pi pi-chevron-down'\"\n (completeMethod)=\"search($event)\"\n (onShow)=\"onOpenAutocompletePanel()\"\n (onHide)=\"onHideAutocompletePanel()\"\n (onFocus)=\"onFocus.emit($event)\"\n (onChange)=\"onChange.emit($event)\"\n [disabled]=\"disabled\"\n >\n </p-autoComplete>\n </div>\n\n <div class=\"input-inner-container\" *ngIf=\"isNgContent\">\n <p-autoComplete\n appendTo=\"body\"\n field=\"nameCustom\"\n dataKey=\"code\"\n [forceSelection]=\"true\"\n [dropdown]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"pagedSuggestions\"\n [dropdownIcon]=\"dynamicFilters ? 'pi pi-search' : 'pi pi-chevron-down'\"\n (completeMethod)=\"search($event)\"\n (onShow)=\"onOpenAutocompletePanel()\"\n (onHide)=\"onHideAutocompletePanel()\"\n (onFocus)=\"onFocus.emit($event)\"\n (onChange)=\"onChange.emit($event)\"\n [disabled]=\"disabled\"\n >\n <ng-template let-option pTemplate=\"item\">\n <div class=\"option-content\">\n <span class=\"option-label\">{{ option.name }}</span>\n <br />\n <span class=\"option-sublabel\">{{ option.code }}</span>\n </div>\n </ng-template>\n </p-autoComplete>\n </div>\n\n <vector-button\n *ngIf=\"buttonAction\"\n [label]=\"buttonAction.label\"\n [disabled]=\"!control.value\"\n (onClick)=\"buttonAction.onClick(control.value)\"\n ></vector-button>\n </div>\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\n</div>\n", styles: [".input-container{display:flex;align-items:flex-end;width:100%}@media (max-width: 575px){.input-container{align-items:flex-start;flex-direction:column}}.input-container p-autoComplete{flex:1}@media (max-width: 575px){.input-container p-autoComplete{width:100%}}.input-container vector-button{margin-left:15px}@media (max-width: 575px){.input-container vector-button{margin-left:0;margin-top:10px;width:100%}}.input-container p-dropdown{margin-right:-5px;width:150px}@media (max-width: 575px){.input-container p-dropdown{width:100px}}.input-container .input-inner-container{display:flex;width:100%}\n"], components: [{ type: i1.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }, { type: i2.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "virtualScroll", "itemSize", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "field", "scrollHeight", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "suggestions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide"] }, { type: i3.ButtonComponent, selector: "vector-button", inputs: ["disabled", "label", "type", "leftIcon", "rightIcon", "noShadow", "style"], outputs: ["onClick"] }, { type: i4.FieldErrorMessageComponent, selector: "vector-field-error-message", inputs: ["control"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] });
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: DropdownFieldComponent, decorators: [{
169
+ type: Component,
170
+ args: [{ selector: 'vector-dropdown-field', template: "<div class=\"relative\">\n <div class=\"input-container\">\n <div class=\"input-inner-container\" *ngIf=\"!isNgContent\">\n <p-dropdown\n *ngIf=\"dynamicFilters\"\n appendTo=\"body\"\n optionLabel=\"name\"\n optionValue=\"code\"\n [(ngModel)]=\"selectedDynamicFilter\"\n [options]=\"dynamicFilters\"\n [disabled]=\"disabled\"\n >\n </p-dropdown>\n <p-autoComplete\n appendTo=\"body\"\n field=\"name\"\n dataKey=\"code\"\n [forceSelection]=\"true\"\n [dropdown]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"pagedSuggestions\"\n [dropdownIcon]=\"dynamicFilters ? 'pi pi-search' : 'pi pi-chevron-down'\"\n (completeMethod)=\"search($event)\"\n (onShow)=\"onOpenAutocompletePanel()\"\n (onHide)=\"onHideAutocompletePanel()\"\n (onFocus)=\"onFocus.emit($event)\"\n (onChange)=\"onChange.emit($event)\"\n [disabled]=\"disabled\"\n >\n </p-autoComplete>\n </div>\n\n <div class=\"input-inner-container\" *ngIf=\"isNgContent\">\n <p-autoComplete\n appendTo=\"body\"\n field=\"nameCustom\"\n dataKey=\"code\"\n [forceSelection]=\"true\"\n [dropdown]=\"true\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [suggestions]=\"pagedSuggestions\"\n [dropdownIcon]=\"dynamicFilters ? 'pi pi-search' : 'pi pi-chevron-down'\"\n (completeMethod)=\"search($event)\"\n (onShow)=\"onOpenAutocompletePanel()\"\n (onHide)=\"onHideAutocompletePanel()\"\n (onFocus)=\"onFocus.emit($event)\"\n (onChange)=\"onChange.emit($event)\"\n [disabled]=\"disabled\"\n >\n <ng-template let-option pTemplate=\"item\">\n <div class=\"option-content\">\n <span class=\"option-label\">{{ option.name }}</span>\n <br />\n <span class=\"option-sublabel\">{{ option.code }}</span>\n </div>\n </ng-template>\n </p-autoComplete>\n </div>\n\n <vector-button\n *ngIf=\"buttonAction\"\n [label]=\"buttonAction.label\"\n [disabled]=\"!control.value\"\n (onClick)=\"buttonAction.onClick(control.value)\"\n ></vector-button>\n </div>\n <vector-field-error-message *ngIf=\"!hiddenErrorMessage\" [control]=\"control\"></vector-field-error-message>\n</div>\n", styles: [".input-container{display:flex;align-items:flex-end;width:100%}@media (max-width: 575px){.input-container{align-items:flex-start;flex-direction:column}}.input-container p-autoComplete{flex:1}@media (max-width: 575px){.input-container p-autoComplete{width:100%}}.input-container vector-button{margin-left:15px}@media (max-width: 575px){.input-container vector-button{margin-left:0;margin-top:10px;width:100%}}.input-container p-dropdown{margin-right:-5px;width:150px}@media (max-width: 575px){.input-container p-dropdown{width:100px}}.input-container .input-inner-container{display:flex;width:100%}\n"] }]
171
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { options: [{
172
+ type: Input
173
+ }], isNgContent: [{
174
+ type: Input
175
+ }], isRequired: [{
176
+ type: Input
177
+ }], control: [{
178
+ type: Input
179
+ }], label: [{
180
+ type: Input
181
+ }], service: [{
182
+ type: Input
183
+ }], paged: [{
184
+ type: Input
185
+ }], buttonAction: [{
186
+ type: Input
187
+ }], dependencies: [{
188
+ type: Input
189
+ }], hiddenErrorMessage: [{
190
+ type: Input
191
+ }], dynamicFilters: [{
192
+ type: Input
193
+ }], minLengthToService: [{
194
+ type: Input
195
+ }], initialLoad: [{
196
+ type: Input
197
+ }], disabled: [{
198
+ type: Input
199
+ }], onFocus: [{
200
+ type: Output
201
+ }], onChange: [{
202
+ type: Output
203
+ }] } });
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvZHJvcGRvd24tZmllbGQvZHJvcGRvd24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZlY3Rvci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWVsZHMvZHJvcGRvd24tZmllbGQvZHJvcGRvd24tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQVk1QyxNQUFNLE9BQU8sc0JBQXNCO0lBeUVqQyxZQUFvQixRQUFtQjtRQUFuQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbEVoQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUdwQixlQUFVLEdBQXdCLEtBQUssQ0FBQztRQWF4QyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBSW5CLFVBQUssR0FBRyxJQUFJLENBQUM7UUFNYix1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFJcEMsdUJBQWtCLEdBQVcsQ0FBQyxDQUFDO1FBRS9CLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFN0IsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFpQjlCLHFCQUFnQixHQUFlLEVBQUUsQ0FBQztRQUNs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QkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFHQyxXQUFXO3NCQURqQixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxPQUFPO3NCQURiLE1BQU07Z0JBR0EsUUFBUTtzQkFEZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQmFzZURyb3Bkb3duIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgRHJvcGRvd25CdXR0b25BY3Rpb24gPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9uQ2xpY2s6ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVjdG9yLWRyb3Bkb3duLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHJvcGRvd24tZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgc2V0IG9wdGlvbnMoX29wdGlvbnM6IExpc3RJdGVtW10pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gX29wdGlvbnM7XG4gICAgdGhpcy5wYWdlZFN1Z2dlc3Rpb25zID0gdGhpcy5vcHRpb25zIHx8IFtdO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc05nQ29udGVudCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpc1JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHNldCBjb250cm9sKF9jb250cm9sOiBhbnkpIHtcbiAgICB0aGlzLl9jb250cm9sID0gX2NvbnRyb2w7XG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWVGcm9tU3VnZ2VzdGlvbnMoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXJ2aWNlOiBCYXNlRHJvcGRvd24gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwYWdlZCA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBidXR0b25BY3Rpb246IERyb3Bkb3duQnV0dG9uQWN0aW9uIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVwZW5kZW5jaWVzOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRkZW5FcnJvck1lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGR5bmFtaWNGaWx0ZXJzPzogTGlzdEl0ZW1bXTtcbiAgQElucHV0KClcbiAgcHVibGljIG1pbkxlbmd0aFRvU2VydmljZTogbnVtYmVyID0gMDtcbiAgQElucHV0KClcbiAgcHVibGljIGluaXRpYWxMb2FkID0gdHJ1ZTtcbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25Gb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBnZXQgY29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbDtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIGlmICghdGhpcy5sYWJlbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5sYWJlbH0ke3RoaXMuaXNSZXF1aXJlZCA/ICcqJyA6ICcnfWA7XG4gIH1cblxuICBwdWJsaWMgcGFnZWRTdWdnZXN0aW9uczogTGlzdEl0ZW1bXSA9IFtdO1xuICBwdWJsaWMgdW5saXN0ZW5BdXRvY29tcGxldGVWaXJ0dWFsU2Nyb2xsID0gKCkgPT4ge307XG4gIHB1YmxpYyBzZWxlY3RlZER5bmFtaWNGaWx0ZXI6IGFueSA9IHRoaXMuZHluYW1pY0ZpbHRlcnMgPyB0aGlzLmR5bmFtaWNGaWx0ZXJzWzBdLmNvZGUgOiB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfY29udHJvbDogYW55O1xuICBwcml2YXRlIF9vcHRpb25zOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGN1cnJlbnRTY3JvbGxQYWdlID0gLTE7XG4gIHByaXZhdGUgY3VycmVudFNjcm9sbEluZGV4ID0gMDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgY3VycmVudFNlYXJjaFF1ZXJ5ID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluaXRpYWxMb2FkKSB7XG4gICAgICB0aGlzLnNlYXJjaChudWxsLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLnVubGlzdGVuQXV0b2NvbXBsZXRlVmlydHVhbFNjcm9sbCkge1xuICAgICAgdGhpcy51bmxpc3RlbkF1dG9jb21wbGV0ZVZpcnR1YWxTY3JvbGwoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmllbGRFcnJvckxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY29udHJvbD8uaW52YWxpZCAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgaWYgKHRoaXMuY29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICByZXR1cm4gJ0NhbXBvIG9icmlnYXTDs3Jpbyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbnRyb2w/LmVycm9ycyAmJiB0eXBlb2YgdGhpcy5jb250cm9sLmVycm9yc1snaW52YWxpZCddID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHRoaXMuY29udHJvbD8uZXJyb3JzWydpbnZhbGlkJ11cbiAgICAgICAgOiAnQ2FtcG8gaW52w6FsaWRvJztcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoKCRldmVudD86IGFueSwgZm9yY2VTZWFyY2ggPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFNlYXJjaFF1ZXJ5ID0gJGV2ZW50Py5xdWVyeS50b1VwcGVyQ2FzZSgpIHx8ICcnO1xuICAgIHRoaXMuY3VycmVudFNjcm9sbFBhZ2UgPSAtMTtcbiAgICB0aGlzLmN1cnJlbnRTY3JvbGxJbmRleCA9IDA7XG4gICAgaWYgKGZvcmNlU2VhcmNoIHx8IHRoaXMuY3VycmVudFNlYXJjaFF1ZXJ5Lmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aFRvU2VydmljZSkge1xuICAgICAgdGhpcy5wYWdlUmVzdWx0cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhZ2VkU3VnZ2VzdGlvbnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25PcGVuQXV0b2NvbXBsZXRlUGFuZWwoKTogdm9pZCB7XG4gICAgY29uc3QgYXV0b2NvbXBsZXRlUGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucC1hdXRvY29tcGxldGUtcGFuZWwnKTtcbiAgICBpZiAoYXV0b2NvbXBsZXRlUGFuZWwgJiYgdGhpcy5wYWdlZCAmJiB0aGlzLmN1cnJlbnRTZWFyY2hRdWVyeS5sZW5ndGggPj0gdGhpcy5taW5MZW5ndGhUb1NlcnZpY2UpIHtcbiAgICAgIHRoaXMudW5saXN0ZW5BdXRvY29tcGxldGVWaXJ0dWFsU2Nyb2xsID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oYXV0b2NvbXBsZXRlUGFuZWwsICdzY3JvbGwnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZXZlbnRIZWlnaHQgPSBldmVudC50YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gZXZlbnQudGFyZ2V0LmNsaWVudEhlaWdodCAtIDE1MDtcblxuICAgICAgICBpZiAoTWF0aC5yb3VuZChldmVudC50YXJnZXQuc2Nyb2xsVG9wKSA+PSBldmVudEhlaWdodCkge1xuICAgICAgICAgIHRoaXMucGFnZVJlc3VsdHMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSGlkZUF1dG9jb21wbGV0ZVBhbmVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2VkKSB7XG4gICAgICB0aGlzLnVubGlzdGVuQXV0b2NvbXBsZXRlVmlydHVhbFNjcm9sbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFnZVJlc3VsdHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5jdXJyZW50U2Nyb2xsUGFnZSsrO1xuICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5nZXRQYWdlZChlbmNvZGVVUklDb21wb25lbnQodGhpcy5jdXJyZW50U2VhcmNoUXVlcnkpLCB0aGlzLmN1cnJlbnRTY3JvbGxQYWdlLCAyMCwgdGhpcy5kZXBlbmRlbmNpZXMpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYWdlZFN1Z2dlc3Rpb25zID0gdGhpcy5jdXJyZW50U2Nyb2xsUGFnZSA9PT0gMCA/IHJlc3BvbnNlIDogdGhpcy5wYWdlZFN1Z2dlc3Rpb25zPy5jb25jYXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWVGcm9tU3VnZ2VzdGlvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoRXJyb3JzKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycikgPT4ge30sXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpbHRlckxpc3RCeVF1ZXJ5KHRoaXMub3B0aW9ucywgdGhpcy5jdXJyZW50U2VhcmNoUXVlcnkudG9VcHBlckNhc2UoKSk7XG4gICAgICB0aGlzLnBhZ2VkU3VnZ2VzdGlvbnMgPSBmaWx0ZXJlZE9wdGlvbnMuc2xpY2UoMCwgdGhpcy5jdXJyZW50U2Nyb2xsSW5kZXggKyAyMCk7XG5cbiAgICAgIGlmICh0aGlzLm9wdGlvbnM/Lmxlbmd0aCAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMjApIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2Nyb2xsSW5kZXggPSB0aGlzLmN1cnJlbnRTY3JvbGxJbmRleCArIDIwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZUZyb21TdWdnZXN0aW9ucygpO1xuICAgICAgdGhpcy5oYW5kbGVTZWFyY2hFcnJvcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyb2xWYWx1ZUZyb21TdWdnZXN0aW9ucygpIHtcbiAgICBjb25zdCBjb2RlID1cbiAgICAgIChPYmplY3RVdGlsLmlzVmFsaWQodGhpcy5jb250cm9sLnZhbHVlPy5jb2RlKSAmJiBgJHt0aGlzLmNvbnRyb2wudmFsdWU/LmNvZGV9YCkgfHwgYCR7dGhpcy5jb250cm9sLnZhbHVlfWA7XG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSAmJiB0aGlzLnBhZ2VkU3VnZ2VzdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgbGV0IGl0ZW1zQXJyYXkgPSB0aGlzLnBhZ2VkU3VnZ2VzdGlvbnM7XG4gICAgICBpZiAodGhpcy5vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgaXRlbXNBcnJheSA9IHRoaXMub3B0aW9ucztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGl0ZW1Gcm9tU3VnZ2VzdGlvbnMgPSBpdGVtc0FycmF5LmZpbmQoKG9wdCkgPT4gYCR7b3B0LmNvZGV9YC50b1VwcGVyQ2FzZSgpID09PSBjb2RlLnRvVXBwZXJDYXNlKCkpO1xuICAgICAgaWYgKGl0ZW1Gcm9tU3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGl0ZW1Gcm9tU3VnZ2VzdGlvbnMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VydmljZT8uZ2V0QnlJZCgrY29kZSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShyZXNwb25zZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udHJvbC52YWx1ZSAmJiAhdGhpcy5wYWdlZFN1Z2dlc3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VydmljZT8uZ2V0QnlJZCgrY29kZSkuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUocmVzcG9uc2UsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2VhcmNoRXJyb3JzKCkge1xuICAgIGlmICh0aGlzLnBhZ2VkU3VnZ2VzdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgZGVsZXRlIHRoaXMuY29udHJvbC5lcnJvcnM/Lml0ZW1Ob3RGb3VuZDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFNlYXJjaFF1ZXJ5KSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKHsgaXRlbU5vdEZvdW5kOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyTGlzdEJ5UXVlcnkobGlzdDogTGlzdEl0ZW1bXSA9IFtdLCBxdWVyeTogc3RyaW5nKTogTGlzdEl0ZW1bXSB7XG4gICAgcmV0dXJuIGxpc3QuZmlsdGVyKFxuICAgICAgKG9wdCkgPT4gU3RyaW5nKG9wdC5jb2RlKS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KSB8fCBvcHQubmFtZS50b1VwcGVyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWlubmVyLWNvbnRhaW5lclwiICpuZ0lmPVwiIWlzTmdDb250ZW50XCI+XG4gICAgICA8cC1kcm9wZG93blxuICAgICAgICAqbmdJZj1cImR5bmFtaWNGaWx0ZXJzXCJcbiAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJuYW1lXCJcbiAgICAgICAgb3B0aW9uVmFsdWU9XCJjb2RlXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZER5bmFtaWNGaWx0ZXJcIlxuICAgICAgICBbb3B0aW9uc109XCJkeW5hbWljRmlsdGVyc1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICA8L3AtZHJvcGRvd24+XG4gICAgICA8cC1hdXRvQ29tcGxldGVcbiAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgZmllbGQ9XCJuYW1lXCJcbiAgICAgICAgZGF0YUtleT1cImNvZGVcIlxuICAgICAgICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgICAgIFtkcm9wZG93bl09XCJ0cnVlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbc3VnZ2VzdGlvbnNdPVwicGFnZWRTdWdnZXN0aW9uc1wiXG4gICAgICAgIFtkcm9wZG93bkljb25dPVwiZHluYW1pY0ZpbHRlcnMgPyAncGkgcGktc2VhcmNoJyA6ICdwaSBwaS1jaGV2cm9uLWRvd24nXCJcbiAgICAgICAgKGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgKG9uU2hvdyk9XCJvbk9wZW5BdXRvY29tcGxldGVQYW5lbCgpXCJcbiAgICAgICAgKG9uSGlkZSk9XCJvbkhpZGVBdXRvY29tcGxldGVQYW5lbCgpXCJcbiAgICAgICAgKG9uRm9jdXMpPVwib25Gb2N1cy5lbWl0KCRldmVudClcIlxuICAgICAgICAob25DaGFuZ2UpPVwib25DaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgID5cbiAgICAgIDwvcC1hdXRvQ29tcGxldGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaW5uZXItY29udGFpbmVyXCIgKm5nSWY9XCJpc05nQ29udGVudFwiPlxuICAgICAgPHAtYXV0b0NvbXBsZXRlXG4gICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgIGZpZWxkPVwibmFtZUN1c3RvbVwiXG4gICAgICAgIGRhdGFLZXk9XCJjb2RlXCJcbiAgICAgICAgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIlxuICAgICAgICBbZHJvcGRvd25dPVwidHJ1ZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3N1Z2dlc3Rpb25zXT1cInBhZ2VkU3VnZ2VzdGlvbnNcIlxuICAgICAgICBbZHJvcGRvd25JY29uXT1cImR5bmFtaWNGaWx0ZXJzID8gJ3BpIHBpLXNlYXJjaCcgOiAncGkgcGktY2hldnJvbi1kb3duJ1wiXG4gICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChvblNob3cpPVwib25PcGVuQXV0b2NvbXBsZXRlUGFuZWwoKVwiXG4gICAgICAgIChvbkhpZGUpPVwib25IaWRlQXV0b2NvbXBsZXRlUGFuZWwoKVwiXG4gICAgICAgIChvbkZvY3VzKT1cIm9uRm9jdXMuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uIHBUZW1wbGF0ZT1cIml0ZW1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3B0aW9uLWxhYmVsXCI+e3sgb3B0aW9uLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3B0aW9uLXN1YmxhYmVsXCI+e3sgb3B0aW9uLmNvZGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3AtYXV0b0NvbXBsZXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPHZlY3Rvci1idXR0b25cbiAgICAgICpuZ0lmPVwiYnV0dG9uQWN0aW9uXCJcbiAgICAgIFtsYWJlbF09XCJidXR0b25BY3Rpb24ubGFiZWxcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjb250cm9sLnZhbHVlXCJcbiAgICAgIChvbkNsaWNrKT1cImJ1dHRvbkFjdGlvbi5vbkNsaWNrKGNvbnRyb2wudmFsdWUpXCJcbiAgICA+PC92ZWN0b3ItYnV0dG9uPlxuICA8L2Rpdj5cbiAgPHZlY3Rvci1maWVsZC1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIWhpZGRlbkVycm9yTWVzc2FnZVwiIFtjb250cm9sXT1cImNvbnRyb2xcIj48L3ZlY3Rvci1maWVsZC1lcnJvci1tZXNzYWdlPlxuPC9kaXY+XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './dropdown-field.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9kcm9wZG93bi1maWVsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi1maWVsZC5jb21wb25lbnQnO1xyXG4iXX0=
1
+ export * from './dropdown-field.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmVjdG9yLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZpZWxkcy9kcm9wZG93bi1maWVsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kcm9wZG93bi1maWVsZC5jb21wb25lbnQnO1xuIl19