keevo-components 1.5.191 → 1.5.193

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 (351) hide show
  1. package/README.md +24 -24
  2. package/esm2020/keevo-components.mjs +5 -0
  3. package/esm2020/lib/api/base-components/base-component-button.mjs +36 -0
  4. package/esm2020/lib/api/base-components/base-component-chart.mjs +92 -0
  5. package/esm2020/lib/api/base-components/base-component-crud-form.mjs +270 -0
  6. package/esm2020/lib/api/base-components/base-component-crud-list.mjs +68 -0
  7. package/esm2020/lib/api/base-components/base-component-crud.mjs +65 -0
  8. package/esm2020/lib/api/base-components/base-component-dropdown-new.mjs +211 -0
  9. package/esm2020/lib/api/base-components/base-component-dropdown.mjs +161 -0
  10. package/esm2020/lib/api/base-components/base-component-input.mjs +94 -0
  11. package/esm2020/lib/api/base-components/base-component-multi-select.mjs +128 -0
  12. package/esm2020/lib/api/base-components/base-component.mjs +49 -0
  13. package/esm2020/lib/api/components/chart/chart.config.mjs +2 -0
  14. package/esm2020/lib/api/components/chart/chart.model.mjs +2 -0
  15. package/esm2020/lib/api/components/chart/orchart.config.mjs +2 -0
  16. package/esm2020/lib/api/components/chart/orchart.item.mjs +2 -0
  17. package/esm2020/lib/api/components/dropdown/filtro.combo.mjs +2 -0
  18. package/esm2020/lib/api/components/error/error.component.mjs +26 -0
  19. package/esm2020/lib/api/components/error/kverror.module.mjs +35 -0
  20. package/esm2020/lib/api/components/table/action-item.mjs +2 -0
  21. package/esm2020/lib/api/components/table/kv-menuitem.mjs +3 -0
  22. package/esm2020/lib/api/components/table/table.config.column.mjs +2 -0
  23. package/esm2020/lib/api/components/table/table.config.mjs +2 -0
  24. package/esm2020/lib/api/components/table/table.paginate.mjs +9 -0
  25. package/esm2020/lib/api/helpers/component-providers.mjs +16 -0
  26. package/esm2020/lib/api/helpers/keevo-validators.mjs +64 -0
  27. package/esm2020/lib/api/helpers/translate-primeng.mjs +23 -0
  28. package/esm2020/lib/api/models/menu/menu.model.mjs +2 -0
  29. package/esm2020/lib/api/models/menu/menucompleto.model.mjs +2 -0
  30. package/esm2020/lib/api/models/menu/sistemamenu.model.mjs +2 -0
  31. package/esm2020/lib/api/modules/primeng.module.mjs +247 -0
  32. package/esm2020/lib/api/services/base.api.service.mjs +74 -0
  33. package/esm2020/lib/api/services/component.service.mjs +27 -0
  34. package/esm2020/lib/api/services/form.service.mjs +84 -0
  35. package/esm2020/lib/api/services/imagens.service.mjs +22 -0
  36. package/esm2020/lib/api/services/notification.service.mjs +67 -0
  37. package/esm2020/lib/api/services/object.service.mjs +26 -0
  38. package/esm2020/lib/buttons/button-personalize/button-personalize.component.mjs +17 -0
  39. package/esm2020/lib/buttons/button-popup/button-popup.component.mjs +31 -0
  40. package/esm2020/lib/buttons/button-secondary/button-secondary.component.mjs +17 -0
  41. package/esm2020/lib/buttons/button-success/button-success.component.mjs +17 -0
  42. package/esm2020/lib/buttons/kvbutton.module.mjs +39 -0
  43. package/esm2020/lib/chart/chart.component.mjs +145 -0
  44. package/esm2020/lib/chart/kvchart.module.mjs +32 -0
  45. package/esm2020/lib/directives/template.directive.mjs +24 -0
  46. package/esm2020/lib/inputs/check/check.component.mjs +26 -0
  47. package/esm2020/lib/inputs/dropdown/dropdown.component.mjs +37 -0
  48. package/esm2020/lib/inputs/editor/editor.component.mjs +70 -0
  49. package/esm2020/lib/inputs/input-calendar/input-calendar.component.mjs +89 -0
  50. package/esm2020/lib/inputs/input-mask/input-mask.component.mjs +23 -0
  51. package/esm2020/lib/inputs/input-number/input-number.component.mjs +59 -0
  52. package/esm2020/lib/inputs/input-password/input-password.component.mjs +33 -0
  53. package/esm2020/lib/inputs/input-text/input-text.component.mjs +21 -0
  54. package/esm2020/lib/inputs/input-text-checkbox/input-text-checkbox.component.mjs +38 -0
  55. package/esm2020/lib/inputs/input-textarea/input-textarea.component.mjs +43 -0
  56. package/esm2020/lib/inputs/input-time/input-time.component.mjs +24 -0
  57. package/esm2020/lib/inputs/kvinputs.module.mjs +108 -0
  58. package/esm2020/lib/inputs/multi-select/multi-select.component.mjs +38 -0
  59. package/esm2020/lib/inputs/radio-group/radio-group.component.mjs +53 -0
  60. package/esm2020/lib/inputs/switch/switch.component.mjs +32 -0
  61. package/esm2020/lib/keevo-components.module.mjs +105 -0
  62. package/esm2020/lib/label/label.component.mjs +15 -0
  63. package/esm2020/lib/label/label.module.mjs +24 -0
  64. package/esm2020/lib/loader/kvloader.module.mjs +28 -0
  65. package/esm2020/lib/loader/loader.component.mjs +17 -0
  66. package/esm2020/lib/loader/loader.service.mjs +29 -0
  67. package/esm2020/lib/login/kvlogin.module.mjs +47 -0
  68. package/esm2020/lib/login/login.component.mjs +52 -0
  69. package/esm2020/lib/menu/kvmenu.module.mjs +43 -0
  70. package/esm2020/lib/menu/menu.component.mjs +237 -0
  71. package/esm2020/lib/orgchart/orgchart.component.mjs +100 -0
  72. package/esm2020/lib/orgchart/orgchart.module.mjs +24 -0
  73. package/esm2020/lib/page-form/kv-page-form.module.mjs +38 -0
  74. package/esm2020/lib/page-form/page-form.component.mjs +144 -0
  75. package/esm2020/lib/picklist/kvpicklist.module.mjs +32 -0
  76. package/esm2020/lib/picklist/picklist.component.mjs +48 -0
  77. package/esm2020/lib/pipes/codigofile.pipe.mjs +19 -0
  78. package/esm2020/lib/pipes/cpfcnpj.pipe.mjs +25 -0
  79. package/esm2020/lib/pipes/pipes.module.mjs +34 -0
  80. package/esm2020/lib/pipes/telefone.pipe.mjs +45 -0
  81. package/esm2020/lib/table/kvtable.module.mjs +32 -0
  82. package/esm2020/lib/table/table.component.mjs +500 -0
  83. package/esm2020/lib/tree-table/kv-treetable.component.mjs +371 -0
  84. package/esm2020/lib/tree-table/kv-treetable.module.mjs +32 -0
  85. package/esm2020/lib/tree-view/kvtree-view.module.mjs +28 -0
  86. package/esm2020/lib/tree-view/tree-view.component.mjs +29 -0
  87. package/esm2020/lib/workspace/kvworkspace.module.mjs +47 -0
  88. package/esm2020/lib/workspace/workspace.component.mjs +77 -0
  89. package/esm2020/public-api.mjs +138 -0
  90. package/fesm2015/keevo-components.mjs +4706 -0
  91. package/fesm2015/keevo-components.mjs.map +1 -0
  92. package/fesm2020/keevo-components.mjs +4697 -0
  93. package/fesm2020/keevo-components.mjs.map +1 -0
  94. package/index.d.ts +5 -0
  95. package/lib/api/base-components/base-component-button.d.ts +14 -0
  96. package/lib/api/base-components/base-component-chart.d.ts +40 -0
  97. package/lib/api/base-components/base-component-crud-form.d.ts +137 -0
  98. package/lib/api/base-components/base-component-crud-list.d.ts +63 -0
  99. package/lib/api/base-components/base-component-crud.d.ts +36 -0
  100. package/lib/api/base-components/base-component-dropdown-new.d.ts +14 -0
  101. package/lib/api/base-components/base-component-dropdown.d.ts +42 -0
  102. package/lib/api/base-components/base-component-input.d.ts +31 -0
  103. package/lib/api/base-components/base-component-multi-select.d.ts +35 -0
  104. package/lib/api/base-components/base-component.d.ts +21 -0
  105. package/lib/api/components/chart/chart.config.d.ts +11 -0
  106. package/lib/api/components/chart/chart.model.d.ts +9 -0
  107. package/lib/api/components/chart/orchart.config.d.ts +35 -0
  108. package/lib/api/components/chart/orchart.item.d.ts +26 -0
  109. package/lib/api/components/dropdown/filtro.combo.d.ts +4 -0
  110. package/lib/api/components/error/error.component.d.ts +12 -0
  111. package/lib/api/components/error/kverror.module.d.ts +10 -0
  112. package/lib/api/components/table/action-item.d.ts +5 -0
  113. package/lib/api/components/table/kv-menuitem.d.ts +9 -0
  114. package/lib/api/components/table/table.config.column.d.ts +21 -0
  115. package/lib/api/components/table/table.config.d.ts +17 -0
  116. package/lib/api/components/table/table.paginate.d.ts +6 -0
  117. package/lib/api/helpers/component-providers.d.ts +2 -0
  118. package/lib/api/helpers/keevo-validators.d.ts +10 -0
  119. package/lib/api/helpers/translate-primeng.d.ts +4 -0
  120. package/lib/api/models/menu/menu.model.d.ts +10 -0
  121. package/{src/lib/api/models/menu/menucompleto.model.ts → lib/api/models/menu/menucompleto.model.d.ts} +6 -7
  122. package/lib/api/models/menu/sistemamenu.model.d.ts +8 -0
  123. package/lib/api/modules/primeng.module.d.ts +60 -0
  124. package/lib/api/services/base.api.service.d.ts +25 -0
  125. package/lib/api/services/component.service.d.ts +11 -0
  126. package/lib/api/services/form.service.d.ts +27 -0
  127. package/lib/api/services/imagens.service.d.ts +8 -0
  128. package/lib/api/services/notification.service.d.ts +25 -0
  129. package/lib/api/services/object.service.d.ts +8 -0
  130. package/lib/buttons/button-personalize/button-personalize.component.d.ts +7 -0
  131. package/lib/buttons/button-popup/button-popup.component.d.ts +13 -0
  132. package/lib/buttons/button-secondary/button-secondary.component.d.ts +7 -0
  133. package/lib/buttons/button-success/button-success.component.d.ts +7 -0
  134. package/lib/buttons/kvbutton.module.d.ts +11 -0
  135. package/lib/chart/chart.component.d.ts +56 -0
  136. package/lib/chart/kvchart.module.d.ts +10 -0
  137. package/lib/directives/template.directive.d.ts +11 -0
  138. package/lib/inputs/check/check.component.d.ts +11 -0
  139. package/lib/inputs/dropdown/dropdown.component.d.ts +14 -0
  140. package/lib/inputs/editor/editor.component.d.ts +39 -0
  141. package/lib/inputs/input-calendar/input-calendar.component.d.ts +27 -0
  142. package/lib/inputs/input-mask/input-mask.component.d.ts +10 -0
  143. package/lib/inputs/input-number/input-number.component.d.ts +19 -0
  144. package/lib/inputs/input-password/input-password.component.d.ts +13 -0
  145. package/lib/inputs/input-text/input-text.component.d.ts +9 -0
  146. package/lib/inputs/input-text-checkbox/input-text-checkbox.component.d.ts +15 -0
  147. package/lib/inputs/input-textarea/input-textarea.component.d.ts +16 -0
  148. package/lib/inputs/input-time/input-time.component.d.ts +10 -0
  149. package/lib/inputs/kvinputs.module.d.ts +25 -0
  150. package/lib/inputs/multi-select/multi-select.component.d.ts +12 -0
  151. package/lib/inputs/radio-group/radio-group.component.d.ts +18 -0
  152. package/lib/inputs/switch/switch.component.d.ts +13 -0
  153. package/lib/keevo-components.module.d.ts +19 -0
  154. package/lib/label/label.component.d.ts +7 -0
  155. package/lib/label/label.module.d.ts +8 -0
  156. package/lib/loader/kvloader.module.d.ts +9 -0
  157. package/lib/loader/loader.component.d.ts +8 -0
  158. package/lib/loader/loader.service.d.ts +10 -0
  159. package/lib/login/kvlogin.module.d.ts +13 -0
  160. package/lib/login/login.component.d.ts +30 -0
  161. package/lib/menu/kvmenu.module.d.ts +12 -0
  162. package/lib/menu/menu.component.d.ts +74 -0
  163. package/lib/orgchart/orgchart.component.d.ts +27 -0
  164. package/lib/orgchart/orgchart.module.d.ts +9 -0
  165. package/lib/page-form/kv-page-form.module.d.ts +11 -0
  166. package/lib/page-form/page-form.component.d.ts +69 -0
  167. package/lib/picklist/kvpicklist.module.d.ts +10 -0
  168. package/lib/picklist/picklist.component.d.ts +20 -0
  169. package/lib/pipes/codigofile.pipe.d.ts +7 -0
  170. package/lib/pipes/cpfcnpj.pipe.d.ts +7 -0
  171. package/lib/pipes/pipes.module.d.ts +10 -0
  172. package/lib/pipes/telefone.pipe.d.ts +7 -0
  173. package/lib/table/kvtable.module.d.ts +10 -0
  174. package/lib/table/table.component.d.ts +105 -0
  175. package/lib/tree-table/kv-treetable.component.d.ts +84 -0
  176. package/lib/tree-table/kv-treetable.module.d.ts +11 -0
  177. package/lib/tree-view/kvtree-view.module.d.ts +9 -0
  178. package/lib/tree-view/tree-view.component.d.ts +14 -0
  179. package/lib/workspace/kvworkspace.module.d.ts +13 -0
  180. package/lib/workspace/workspace.component.d.ts +28 -0
  181. package/package.json +22 -3
  182. package/{src/public-api.ts → public-api.d.ts} +134 -156
  183. package/ng-package.json +0 -7
  184. package/src/assets/.gitkeep +0 -0
  185. package/src/assets/images/LogoEvo.png +0 -0
  186. package/src/assets/images/LogoPequenaEvo.png +0 -0
  187. package/src/assets/images/background.png +0 -0
  188. package/src/assets/images/keepass-logo.png +0 -0
  189. package/src/assets/images/keepass-logo.svg +0 -74
  190. package/src/assets/images/keevo-logo.png +0 -0
  191. package/src/assets/images/logokeevo_2.png +0 -0
  192. package/src/index.ts +0 -1
  193. package/src/lib/api/base-components/base-component-button.ts +0 -27
  194. package/src/lib/api/base-components/base-component-chart.ts +0 -105
  195. package/src/lib/api/base-components/base-component-crud-form.ts +0 -328
  196. package/src/lib/api/base-components/base-component-crud-list.ts +0 -111
  197. package/src/lib/api/base-components/base-component-crud.ts +0 -70
  198. package/src/lib/api/base-components/base-component-dropdown-new.ts +0 -112
  199. package/src/lib/api/base-components/base-component-dropdown.ts +0 -164
  200. package/src/lib/api/base-components/base-component-input.ts +0 -107
  201. package/src/lib/api/base-components/base-component-multi-select.ts +0 -136
  202. package/src/lib/api/base-components/base-component.ts +0 -46
  203. package/src/lib/api/components/chart/chart.config.ts +0 -12
  204. package/src/lib/api/components/chart/chart.model.ts +0 -9
  205. package/src/lib/api/components/chart/orchart.config.ts +0 -41
  206. package/src/lib/api/components/chart/orchart.item.ts +0 -33
  207. package/src/lib/api/components/dropdown/filtro.combo.ts +0 -4
  208. package/src/lib/api/components/error/error.component.html +0 -3
  209. package/src/lib/api/components/error/error.component.scss +0 -5
  210. package/src/lib/api/components/error/error.component.ts +0 -22
  211. package/src/lib/api/components/error/kverror.module.ts +0 -23
  212. package/src/lib/api/components/table/action-item.ts +0 -5
  213. package/src/lib/api/components/table/kv-menuitem.ts +0 -10
  214. package/src/lib/api/components/table/table.config.column.ts +0 -21
  215. package/src/lib/api/components/table/table.config.ts +0 -20
  216. package/src/lib/api/components/table/table.paginate.ts +0 -6
  217. package/src/lib/api/helpers/component-providers.ts +0 -16
  218. package/src/lib/api/helpers/keevo-validators.ts +0 -77
  219. package/src/lib/api/helpers/translate-primeng.ts +0 -25
  220. package/src/lib/api/models/menu/menu.model.ts +0 -10
  221. package/src/lib/api/models/menu/sistemamenu.model.ts +0 -8
  222. package/src/lib/api/modules/primeng.module.ts +0 -125
  223. package/src/lib/api/services/base.api.service.ts +0 -115
  224. package/src/lib/api/services/component.service.ts +0 -22
  225. package/src/lib/api/services/form.service.ts +0 -105
  226. package/src/lib/api/services/imagens.service.ts +0 -20
  227. package/src/lib/api/services/notification.service.ts +0 -82
  228. package/src/lib/api/services/object.service.ts +0 -20
  229. package/src/lib/buttons/button-personalize/button-personalize.component.html +0 -11
  230. package/src/lib/buttons/button-personalize/button-personalize.component.scss +0 -3
  231. package/src/lib/buttons/button-personalize/button-personalize.component.ts +0 -13
  232. package/src/lib/buttons/button-popup/button-popup.component.html +0 -12
  233. package/src/lib/buttons/button-popup/button-popup.component.scss +0 -13
  234. package/src/lib/buttons/button-popup/button-popup.component.ts +0 -30
  235. package/src/lib/buttons/button-secondary/button-secondary.component.html +0 -12
  236. package/src/lib/buttons/button-secondary/button-secondary.component.scss +0 -14
  237. package/src/lib/buttons/button-secondary/button-secondary.component.ts +0 -13
  238. package/src/lib/buttons/button-success/button-success.component.html +0 -11
  239. package/src/lib/buttons/button-success/button-success.component.scss +0 -13
  240. package/src/lib/buttons/button-success/button-success.component.ts +0 -13
  241. package/src/lib/buttons/kvbutton.module.ts +0 -25
  242. package/src/lib/chart/chart.component.html +0 -38
  243. package/src/lib/chart/chart.component.scss +0 -0
  244. package/src/lib/chart/chart.component.spec.ts +0 -28
  245. package/src/lib/chart/chart.component.ts +0 -141
  246. package/src/lib/chart/kvchart.module.ts +0 -20
  247. package/src/lib/directives/template.directive.ts +0 -15
  248. package/src/lib/inputs/check/check.component.html +0 -11
  249. package/src/lib/inputs/check/check.component.scss +0 -13
  250. package/src/lib/inputs/check/check.component.ts +0 -24
  251. package/src/lib/inputs/dropdown/dropdown.component.html +0 -91
  252. package/src/lib/inputs/dropdown/dropdown.component.scss +0 -0
  253. package/src/lib/inputs/dropdown/dropdown.component.ts +0 -28
  254. package/src/lib/inputs/editor/editor.component.html +0 -90
  255. package/src/lib/inputs/editor/editor.component.scss +0 -4
  256. package/src/lib/inputs/editor/editor.component.ts +0 -80
  257. package/src/lib/inputs/input-calendar/input-calendar.component.html +0 -30
  258. package/src/lib/inputs/input-calendar/input-calendar.component.scss +0 -0
  259. package/src/lib/inputs/input-calendar/input-calendar.component.ts +0 -81
  260. package/src/lib/inputs/input-mask/input-mask.component.html +0 -20
  261. package/src/lib/inputs/input-mask/input-mask.component.scss +0 -0
  262. package/src/lib/inputs/input-mask/input-mask.component.ts +0 -20
  263. package/src/lib/inputs/input-number/input-number.component.html +0 -22
  264. package/src/lib/inputs/input-number/input-number.component.scss +0 -0
  265. package/src/lib/inputs/input-number/input-number.component.ts +0 -52
  266. package/src/lib/inputs/input-password/input-password.component.html +0 -23
  267. package/src/lib/inputs/input-password/input-password.component.scss +0 -0
  268. package/src/lib/inputs/input-password/input-password.component.ts +0 -23
  269. package/src/lib/inputs/input-text/input-text.component.html +0 -20
  270. package/src/lib/inputs/input-text/input-text.component.scss +0 -18
  271. package/src/lib/inputs/input-text/input-text.component.ts +0 -17
  272. package/src/lib/inputs/input-text-checkbox/input-text-checkbox.component.html +0 -32
  273. package/src/lib/inputs/input-text-checkbox/input-text-checkbox.component.scss +0 -0
  274. package/src/lib/inputs/input-text-checkbox/input-text-checkbox.component.spec.ts +0 -23
  275. package/src/lib/inputs/input-text-checkbox/input-text-checkbox.component.ts +0 -36
  276. package/src/lib/inputs/input-textarea/input-textarea.component.html +0 -22
  277. package/src/lib/inputs/input-textarea/input-textarea.component.scss +0 -0
  278. package/src/lib/inputs/input-textarea/input-textarea.component.ts +0 -33
  279. package/src/lib/inputs/input-time/input-time.component.html +0 -23
  280. package/src/lib/inputs/input-time/input-time.component.scss +0 -0
  281. package/src/lib/inputs/input-time/input-time.component.ts +0 -20
  282. package/src/lib/inputs/kvinputs.module.ts +0 -64
  283. package/src/lib/inputs/multi-select/multi-select.component.html +0 -28
  284. package/src/lib/inputs/multi-select/multi-select.component.scss +0 -8
  285. package/src/lib/inputs/multi-select/multi-select.component.ts +0 -31
  286. package/src/lib/inputs/radio-group/radio-group.component.html +0 -19
  287. package/src/lib/inputs/radio-group/radio-group.component.scss +0 -15
  288. package/src/lib/inputs/radio-group/radio-group.component.ts +0 -50
  289. package/src/lib/inputs/switch/switch.component.html +0 -12
  290. package/src/lib/inputs/switch/switch.component.scss +0 -3
  291. package/src/lib/inputs/switch/switch.component.ts +0 -30
  292. package/src/lib/keevo-components.module.ts +0 -50
  293. package/src/lib/label/label.component.html +0 -6
  294. package/src/lib/label/label.component.scss +0 -9
  295. package/src/lib/label/label.component.spec.ts +0 -23
  296. package/src/lib/label/label.component.ts +0 -13
  297. package/src/lib/label/label.module.ts +0 -18
  298. package/src/lib/loader/kvloader.module.ts +0 -17
  299. package/src/lib/loader/loader.component.html +0 -1
  300. package/src/lib/loader/loader.component.ts +0 -14
  301. package/src/lib/loader/loader.service.ts +0 -26
  302. package/src/lib/login/kvlogin.module.ts +0 -28
  303. package/src/lib/login/login.component.html +0 -108
  304. package/src/lib/login/login.component.scss +0 -48
  305. package/src/lib/login/login.component.spec.ts +0 -23
  306. package/src/lib/login/login.component.ts +0 -65
  307. package/src/lib/menu/kvmenu.module.ts +0 -27
  308. package/src/lib/menu/menu.component.html +0 -342
  309. package/src/lib/menu/menu.component.scss +0 -210
  310. package/src/lib/menu/menu.component.spec.ts +0 -23
  311. package/src/lib/menu/menu.component.ts +0 -246
  312. package/src/lib/orgchart/orgchart.component.html +0 -58
  313. package/src/lib/orgchart/orgchart.component.scss +0 -21
  314. package/src/lib/orgchart/orgchart.component.ts +0 -118
  315. package/src/lib/orgchart/orgchart.module.ts +0 -14
  316. package/src/lib/page-form/kv-page-form.module.ts +0 -22
  317. package/src/lib/page-form/page-form.component.html +0 -57
  318. package/src/lib/page-form/page-form.component.scss +0 -72
  319. package/src/lib/page-form/page-form.component.spec.ts +0 -28
  320. package/src/lib/page-form/page-form.component.ts +0 -121
  321. package/src/lib/picklist/kvpicklist.module.ts +0 -20
  322. package/src/lib/picklist/picklist.component.html +0 -17
  323. package/src/lib/picklist/picklist.component.scss +0 -0
  324. package/src/lib/picklist/picklist.component.spec.ts +0 -26
  325. package/src/lib/picklist/picklist.component.ts +0 -27
  326. package/src/lib/pipes/codigofile.pipe.ts +0 -15
  327. package/src/lib/pipes/cpfcnpj.pipe.ts +0 -21
  328. package/src/lib/pipes/pipes.module.ts +0 -22
  329. package/src/lib/pipes/telefone.pipe.ts +0 -38
  330. package/src/lib/styles-components.scss +0 -11
  331. package/src/lib/table/kvtable.module.ts +0 -22
  332. package/src/lib/table/table.component.html +0 -473
  333. package/src/lib/table/table.component.scss +0 -240
  334. package/src/lib/table/table.component.spec.ts +0 -28
  335. package/src/lib/table/table.component.ts +0 -546
  336. package/src/lib/tree-table/kv-treetable.component.html +0 -649
  337. package/src/lib/tree-table/kv-treetable.component.scss +0 -315
  338. package/src/lib/tree-table/kv-treetable.component.ts +0 -390
  339. package/src/lib/tree-table/kv-treetable.module.ts +0 -18
  340. package/src/lib/tree-view/kvtree-view.module.ts +0 -19
  341. package/src/lib/tree-view/tree-view.component.html +0 -9
  342. package/src/lib/tree-view/tree-view.component.scss +0 -0
  343. package/src/lib/tree-view/tree-view.component.spec.ts +0 -23
  344. package/src/lib/tree-view/tree-view.component.ts +0 -29
  345. package/src/lib/workspace/kvworkspace.module.ts +0 -29
  346. package/src/lib/workspace/workspace.component.html +0 -108
  347. package/src/lib/workspace/workspace.component.scss +0 -83
  348. package/src/lib/workspace/workspace.component.ts +0 -75
  349. package/tsconfig.lib.json +0 -14
  350. package/tsconfig.lib.prod.json +0 -10
  351. package/tsconfig.spec.json +0 -14
package/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # KeevoComponents
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project keevo-components` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project keevo-components`.
8
- > Note: Don't forget to add `--project keevo-components` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build keevo-components` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build keevo-components`, go to the dist folder `cd dist/keevo-components` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test keevo-components` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # KeevoComponents
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project keevo-components` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project keevo-components`.
8
+ > Note: Don't forget to add `--project keevo-components` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build keevo-components` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build keevo-components`, go to the dist folder `cd dist/keevo-components` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test keevo-components` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Vldm8tY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2tlZXZvLWNvbXBvbmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BaseComponentButton {
4
+ constructor() {
5
+ this.icon = '';
6
+ this.label = '';
7
+ this.loading = false;
8
+ this.disabled = false;
9
+ this.color = 'bg-blue-100';
10
+ this.onClick = new EventEmitter();
11
+ }
12
+ click(event) {
13
+ this.onClick.emit();
14
+ }
15
+ }
16
+ BaseComponentButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BaseComponentButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ BaseComponentButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: BaseComponentButton, selector: "ng-component", inputs: { icon: "icon", label: "label", loading: "loading", disabled: "disabled", color: "color" }, outputs: { onClick: "onClick" }, ngImport: i0, template: '', isInline: true });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BaseComponentButton, decorators: [{
19
+ type: Component,
20
+ args: [{
21
+ template: '',
22
+ }]
23
+ }], ctorParameters: function () { return []; }, propDecorators: { icon: [{
24
+ type: Input
25
+ }], label: [{
26
+ type: Input
27
+ }], loading: [{
28
+ type: Input
29
+ }], disabled: [{
30
+ type: Input
31
+ }], color: [{
32
+ type: Input
33
+ }], onClick: [{
34
+ type: Output
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtYnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7O0FBS3ZCLE1BQU0sT0FBTyxtQkFBbUI7SUFXOUI7UUFUUyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFVBQUssR0FBVyxhQUFhLENBQUM7UUFHN0IsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRTFDLENBQUM7SUFFakIsS0FBSyxDQUFDLEtBQVU7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7O2dIQWZVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHlMQUZwQixFQUFFOzJGQUVELG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjswRUFHVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUNvbXBvbmVudEJ1dHRvbiB7XHJcblxyXG4gIEBJbnB1dCgpIGljb246IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nID0gJ2JnLWJsdWUtMTAwJztcclxuXHJcblxyXG4gIEBPdXRwdXQoKSBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgY2xpY2soZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNsaWNrLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,92 @@
1
+ import { Component, EventEmitter, Output, ViewChild } from "@angular/core";
2
+ import { ChartComponent, PeriodosChart } from "../../chart/chart.component";
3
+ import * as i0 from "@angular/core";
4
+ export class BaseChartComponent {
5
+ constructor() {
6
+ this.selectedData = 0;
7
+ this.enablePeriodos = [];
8
+ this.periodos = PeriodosChart;
9
+ this.onPrintReport = new EventEmitter();
10
+ }
11
+ changeData(event) {
12
+ if (event) {
13
+ this.selectedData = event?.value;
14
+ this.loadData();
15
+ }
16
+ }
17
+ ngOnInit() {
18
+ this.loadData();
19
+ }
20
+ loadGraphic(obs) {
21
+ obs
22
+ .subscribe({
23
+ next: (data) => {
24
+ this.chartConfig = this.assembleGraphic(data);
25
+ this.chartComponent?.reInit(this.chartConfig);
26
+ },
27
+ error: (error) => { },
28
+ });
29
+ }
30
+ assembleGraphic(data) {
31
+ let labels = [];
32
+ let datasets = [];
33
+ // Tratando legendas
34
+ data.map((element) => {
35
+ if (element.labels && !labels.includes(element.labels)) {
36
+ labels.push(element.labels);
37
+ }
38
+ });
39
+ //Descobrindo quantas dimensões tem o gráfico
40
+ let numDatasets = Math.max(...data.map(o => o.numDatasets));
41
+ //Populando datasets
42
+ for (let i = 0; i <= numDatasets; i++) {
43
+ let backgroundColor = [];
44
+ let hoverBackgroundColor = [];
45
+ let borderColor = [];
46
+ let values = [];
47
+ let labelDataset = '';
48
+ data.filter((obj) => {
49
+ return obj.numDatasets === i;
50
+ }).map((obj) => {
51
+ if (obj.backgroundColor && !backgroundColor.includes(obj.backgroundColor)) {
52
+ backgroundColor.push(obj.backgroundColor);
53
+ }
54
+ if (obj.borderColor && !borderColor.includes(obj.borderColor)) {
55
+ borderColor.push(obj.borderColor);
56
+ }
57
+ if (obj.hoverBackgroundColor && !hoverBackgroundColor.includes(obj.hoverBackgroundColor)) {
58
+ hoverBackgroundColor.push(obj.hoverBackgroundColor);
59
+ }
60
+ if (obj.labelDataset)
61
+ labelDataset = obj.labelDataset;
62
+ values.push(obj.datasets);
63
+ });
64
+ datasets.push({
65
+ label: labelDataset,
66
+ backgroundColor: backgroundColor,
67
+ hoverBackgroundColor: hoverBackgroundColor,
68
+ borderColor: borderColor?.length === 0 ? undefined : borderColor,
69
+ data: values
70
+ });
71
+ }
72
+ let dados = {
73
+ labels: labels,
74
+ datasets: datasets
75
+ };
76
+ return dados;
77
+ }
78
+ }
79
+ BaseChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BaseChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
80
+ BaseChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: BaseChartComponent, selector: "ng-component", outputs: { onPrintReport: "onPrintReport" }, viewQueries: [{ propertyName: "chartComponent", first: true, predicate: ChartComponent, descendants: true }], ngImport: i0, template: '', isInline: true });
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BaseChartComponent, decorators: [{
82
+ type: Component,
83
+ args: [{
84
+ template: ''
85
+ }]
86
+ }], ctorParameters: function () { return []; }, propDecorators: { chartComponent: [{
87
+ type: ViewChild,
88
+ args: [ChartComponent]
89
+ }], onPrintReport: [{
90
+ type: Output
91
+ }] } });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY2hhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvYXBpL2Jhc2UtY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC1jaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBSzVFLE1BQU0sT0FBZ0Isa0JBQWtCO0lBV3RDO1FBUkEsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFDOUIsYUFBUSxHQUFHLGFBQWEsQ0FBQztRQUlmLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFaEQsQ0FBQztJQUVQLFVBQVUsQ0FBQyxLQUFVO1FBQzdCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNqQjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2pCLENBQUM7SUFJUyxXQUFXLENBQUMsR0FBb0I7UUFDeEMsR0FBRzthQUNBLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBb0IsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtB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QUVRLGtCQUFrQjtrQkFIdkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjswRUFRNEIsY0FBYztzQkFBeEMsU0FBUzt1QkFBQyxjQUFjO2dCQUVmLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuaW1wb3J0IHsgY2hhcnRNb2RlbCB9IGZyb20gXCIuLi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0Lm1vZGVsXCI7XHJcbmltcG9ydCB7IENoYXJ0Q29uZmlnLCBDaGFydERhdGFzZXRDb25maWcgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9jaGFydC9jaGFydC5jb25maWdcIjtcclxuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQsIFBlcmlvZG9zQ2hhcnQgfSBmcm9tIFwiLi4vLi4vY2hhcnQvY2hhcnQuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZTogJydcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNoYXJ0Q29uZmlnITogQ2hhcnRDb25maWc7XHJcbiAgc2VsZWN0ZWREYXRhOiBudW1iZXIgPSAwO1xyXG4gIGVuYWJsZVBlcmlvZG9zOiBudW1iZXJbXSA9IFtdO1xyXG4gIHBlcmlvZG9zID0gUGVyaW9kb3NDaGFydDtcclxuXHJcbiAgQFZpZXdDaGlsZChDaGFydENvbXBvbmVudCkgY2hhcnRDb21wb25lbnQ/OiBDaGFydENvbXBvbmVudDtcclxuXHJcbiAgQE91dHB1dCgpIG9uUHJpbnRSZXBvcnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBwcm90ZWN0ZWQgY2hhbmdlRGF0YShldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGEgPSBldmVudD8udmFsdWU7XHJcbiAgICAgIHRoaXMubG9hZERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpXHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCBsb2FkRGF0YSgpOiB2b2lkO1xyXG5cclxuICBwcm90ZWN0ZWQgbG9hZEdyYXBoaWMob2JzOiBPYnNlcnZhYmxlPGFueT4pIHtcclxuICAgIG9ic1xyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0Q29uZmlnID0gdGhpcy5hc3NlbWJsZUdyYXBoaWMoZGF0YSBhcyBjaGFydE1vZGVsW10pO1xyXG4gICAgICAgICAgdGhpcy5jaGFydENvbXBvbmVudD8ucmVJbml0KHRoaXMuY2hhcnRDb25maWcpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7IH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFzc2VtYmxlR3JhcGhpYyhkYXRhOiBjaGFydE1vZGVsW10pIHtcclxuICAgIGxldCBsYWJlbHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBsZXQgZGF0YXNldHM6IENoYXJ0RGF0YXNldENvbmZpZ1tdID0gW107XHJcblxyXG4gICAgLy8gVHJhdGFuZG8gbGVnZW5kYXNcclxuICAgIGRhdGEubWFwKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQubGFiZWxzICYmICFsYWJlbHMuaW5jbHVkZXMoZWxlbWVudC5sYWJlbHMpKSB7XHJcbiAgICAgICAgbGFiZWxzLnB1c2goZWxlbWVudC5sYWJlbHMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvL0Rlc2NvYnJpbmRvIHF1YW50YXMgZGltZW5zw7VlcyB0ZW0gbyBncsOhZmljb1xyXG4gICAgbGV0IG51bURhdGFzZXRzID0gTWF0aC5tYXgoLi4uZGF0YS5tYXAobyA9PiBvLm51bURhdGFzZXRzKSk7XHJcblxyXG4gICAgLy9Qb3B1bGFuZG8gZGF0YXNldHNcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG51bURhdGFzZXRzOyBpKyspIHtcclxuICAgICAgbGV0IGJhY2tncm91bmRDb2xvcjogc3RyaW5nW10gPSBbXTtcclxuICAgICAgbGV0IGhvdmVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBsZXQgYm9yZGVyQ29sb3I6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGxldCB2YWx1ZXM6IG51bWJlcltdID0gW107XHJcbiAgICAgIGxldCBsYWJlbERhdGFzZXQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgICAgZGF0YS5maWx0ZXIoKG9iaikgPT4ge1xyXG4gICAgICAgIHJldHVybiBvYmoubnVtRGF0YXNldHMgPT09IGk7XHJcbiAgICAgIH0pLm1hcCgob2JqKSA9PiB7XHJcbiAgICAgICAgaWYgKG9iai5iYWNrZ3JvdW5kQ29sb3IgJiYgIWJhY2tncm91bmRDb2xvci5pbmNsdWRlcyhvYmouYmFja2dyb3VuZENvbG9yKSkge1xyXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yLnB1c2gob2JqLmJhY2tncm91bmRDb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmouYm9yZGVyQ29sb3IgJiYgIWJvcmRlckNvbG9yLmluY2x1ZGVzKG9iai5ib3JkZXJDb2xvcikpIHtcclxuICAgICAgICAgIGJvcmRlckNvbG9yLnB1c2gob2JqLmJvcmRlckNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai5ob3ZlckJhY2tncm91bmRDb2xvciAmJiAhaG92ZXJCYWNrZ3JvdW5kQ29sb3IuaW5jbHVkZXMob2JqLmhvdmVyQmFja2dyb3VuZENvbG9yKSkge1xyXG4gICAgICAgICAgaG92ZXJCYWNrZ3JvdW5kQ29sb3IucHVzaChvYmouaG92ZXJCYWNrZ3JvdW5kQ29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLmxhYmVsRGF0YXNldCkgbGFiZWxEYXRhc2V0ID0gb2JqLmxhYmVsRGF0YXNldDtcclxuXHJcbiAgICAgICAgdmFsdWVzLnB1c2gob2JqLmRhdGFzZXRzKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBkYXRhc2V0cy5wdXNoKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbERhdGFzZXQsXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgIGhvdmVyQmFja2dyb3VuZENvbG9yOiBob3ZlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgIGJvcmRlckNvbG9yOiBib3JkZXJDb2xvcj8ubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogYm9yZGVyQ29sb3IsXHJcbiAgICAgICAgICBkYXRhOiB2YWx1ZXNcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRhZG9zOiBDaGFydENvbmZpZyA9IHtcclxuICAgICAgbGFiZWxzOiBsYWJlbHMsXHJcbiAgICAgIGRhdGFzZXRzOiBkYXRhc2V0c1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gZGFkb3M7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,270 @@
1
+ import { Component } from "@angular/core";
2
+ import { FormGroup } from "@angular/forms";
3
+ import { combineLatest, filter, finalize } from "rxjs";
4
+ import { BaseComponentCrud } from "./base-component-crud";
5
+ import { FormService } from "../services/form.service";
6
+ import { loading } from "../../loader/loader.service";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "primeng/dynamicdialog";
9
+ import * as i2 from "../services/notification.service";
10
+ import * as i3 from "@angular/router";
11
+ export class BaseComponentCrudForm extends BaseComponentCrud {
12
+ constructor(dialogService, notificationService, activatedRoute, dynamicDialogRef, dynamicDialogConfig, router) {
13
+ super(dialogService, notificationService);
14
+ this.activatedRoute = activatedRoute;
15
+ this.dynamicDialogRef = dynamicDialogRef;
16
+ this.dynamicDialogConfig = dynamicDialogConfig;
17
+ this.router = router;
18
+ this.isAccordionExpanded = false;
19
+ this.isNewRegistry = false;
20
+ this.isSaveLoading = false;
21
+ this.isView = false;
22
+ this.formGroup = new FormGroup({});
23
+ this.actions = [];
24
+ this.popup = false;
25
+ this.registry = null;
26
+ this.onSetFormValues = false;
27
+ }
28
+ /**
29
+ * Método disparado para tratamento das notificações do backend
30
+ * @param err - Notificação
31
+ */
32
+ backendError(err) {
33
+ if (err) {
34
+ if (err.status == 404) {
35
+ this.notificationService.toastError(err.error.item2[0].message);
36
+ return;
37
+ }
38
+ else if (err.status == 400) {
39
+ // Erros de validação de domínio do backend
40
+ if (Array.isArray(err.error)) {
41
+ if (err.error?.length) {
42
+ if (err.error.length == 1 && err.error[0].key == '') {
43
+ this.notificationService.toastError(err.error[0].message);
44
+ return;
45
+ }
46
+ this.invalidForm(err.error);
47
+ return;
48
+ }
49
+ }
50
+ else if (err.error?.title) {
51
+ // Erro de json no backend
52
+ this.notificationService.toastError(err.error.title);
53
+ return;
54
+ }
55
+ }
56
+ else if (err.status == 415) {
57
+ if (err.error?.title) {
58
+ // Erro de json no backend
59
+ this.notificationService.toastError(err.error.title);
60
+ return;
61
+ }
62
+ }
63
+ // Qualquer outro tipo de erro que tenha mensagem
64
+ if (err.message) {
65
+ this.notificationService.toastError(err.message);
66
+ }
67
+ }
68
+ }
69
+ /**
70
+ * Método disparado ao clicar no botão de cancelamento
71
+ */
72
+ cancel() {
73
+ this.notificationService.question({
74
+ type: 'question',
75
+ message: 'Deseja cancelar a operação?',
76
+ accept: () => {
77
+ this.navigateList();
78
+ },
79
+ });
80
+ }
81
+ /**
82
+ * Verifica se houveram alterações nos componentes do formControl
83
+ * @param controls - Nomes do controles no formGroup
84
+ * @returns Observable
85
+ */
86
+ detectFormControlChanges(controls) {
87
+ const controlList = [];
88
+ controls.forEach(controlName => controlList.push(this.formGroup.controls[controlName].valueChanges));
89
+ return combineLatest(controlList).pipe(filter(() => !this.onSetFormValues));
90
+ }
91
+ /**
92
+ * Método responsável por desabilitar um componente
93
+ * @param controlName - Nome do controle no formGroup
94
+ */
95
+ disableComponent(controlName) {
96
+ FormService.disableControl(this.formGroup, controlName);
97
+ }
98
+ /**
99
+ * Método responsável por limpar e desabilitar um componente
100
+ * @param controlName - Nome do controle no formGroup
101
+ * @param value - Valor default
102
+ */
103
+ disableAndClearComponent(controlName, value) {
104
+ FormService.disableAndClearControl(this.formGroup, controlName, value);
105
+ }
106
+ /**
107
+ * Método responsável por habilitar um componente
108
+ * @param controlName - Nome do controle no formGroup
109
+ */
110
+ enableComponent(controName) {
111
+ FormService.enableControl(this.formGroup, controName);
112
+ }
113
+ /**
114
+ * Método que retorna o valor de um componente
115
+ * @param controlName - Nome do controle no formGroup
116
+ * @returns - Valor
117
+ */
118
+ getFormValue(controlName) {
119
+ return FormService.getFormValue(this.formGroup, controlName);
120
+ }
121
+ /**
122
+ * Verifica se o componente possui erro
123
+ * @param controlName - Nome do controle no formGroup
124
+ */
125
+ hasControlError(controlName, errorCode) {
126
+ return FormService.hasControlError(this.formGroup, controlName, errorCode);
127
+ }
128
+ /**
129
+ * Seta inconsistências para o fomulário
130
+ * @param notification - Lista de notificações
131
+ */
132
+ invalidForm(notification) {
133
+ FormService.invalidForm(this.formGroup, notification);
134
+ }
135
+ /**
136
+ * Método responsável pelo carregamento da tela
137
+ * @param obs - Observable responsável pelo salvamento dos dados
138
+ */
139
+ loadData(obs) {
140
+ obs
141
+ .pipe(loading())
142
+ .subscribe((data) => {
143
+ this.isNewRegistry = false;
144
+ this.registry = data;
145
+ this.setFormValues(this.registry);
146
+ this.loadGrids();
147
+ this.setTitlePopup();
148
+ });
149
+ }
150
+ loadGrids() { }
151
+ /**
152
+ * Método disparado para retornar a lista
153
+ */
154
+ navigateList(id = null) {
155
+ if (this.popup) {
156
+ this.dynamicDialogRef.close(id);
157
+ }
158
+ else if (this.dadosTela?.rotaListar) {
159
+ this.router.navigate([this.dadosTela.rotaListar]);
160
+ }
161
+ }
162
+ ngOnDestroy() {
163
+ if (this.dynamicDialogRef) {
164
+ this.dynamicDialogRef.close();
165
+ }
166
+ }
167
+ ngOnInit() {
168
+ this.configureForm();
169
+ this.popup = this.dynamicDialogConfig?.data?.popup || false;
170
+ this.activatedRoute.params.subscribe((params) => {
171
+ if (params['id']) {
172
+ this.loadForm(params['id']);
173
+ }
174
+ else if (this.dynamicDialogConfig?.data?.id) {
175
+ this.loadForm(this.dynamicDialogConfig.data.id);
176
+ }
177
+ else {
178
+ this.isNewRegistry = true;
179
+ this.loadGrids();
180
+ this.setTitlePopup();
181
+ }
182
+ });
183
+ }
184
+ /**
185
+ * Método disparado para salvar dados
186
+ * @param obs - Observable responsável pelo salvamento dos dados
187
+ */
188
+ saveData(obs) {
189
+ obs
190
+ .pipe((src) => {
191
+ this.isSaveLoading = true;
192
+ return src.pipe(finalize(() => {
193
+ this.isSaveLoading = false;
194
+ }));
195
+ })
196
+ .subscribe({
197
+ next: (res) => {
198
+ this.notificationService.toastSuccess(res.item2[0].message);
199
+ this.navigateList(res.item1);
200
+ },
201
+ error: (e) => {
202
+ this.backendError(e);
203
+ },
204
+ });
205
+ }
206
+ /**
207
+ * Método se atualiza o valor de um componente do formGroup
208
+ * @param controName - Nome do controle
209
+ * @param value - Valor para atualização
210
+ */
211
+ setControlValue(controName, value) {
212
+ FormService.setControlValue(this.formGroup, controName, value);
213
+ }
214
+ /**
215
+ * Atualiza valores dos componentes do formGroup
216
+ * @param values - Valores para atualização
217
+ */
218
+ setFormValues(values) {
219
+ this.onSetFormValues = true;
220
+ this.formGroup.patchValue(values, { emitEvent: false });
221
+ this.onSetFormValues = false;
222
+ }
223
+ /**
224
+ * Seta o título do popup
225
+ */
226
+ setTitlePopup() {
227
+ if (this.popup) {
228
+ if (this.dynamicDialogConfig)
229
+ this.dynamicDialogConfig.header = this.dadosTela?.tituloForm;
230
+ }
231
+ }
232
+ /**
233
+ * Atualiza o validador de um componente do formGroup
234
+ * @param controName - Nome do controle
235
+ * @param validators - Regra de validação
236
+ */
237
+ setValidators(controName, validators) {
238
+ FormService.setValidators(this.formGroup, controName, validators);
239
+ }
240
+ /**
241
+ * Dispara os métodos de validações do formulário
242
+ * @returns - True/False
243
+ */
244
+ validateForm() {
245
+ let valid = false;
246
+ if (this.formGroup && this.formGroup.valid) {
247
+ valid = true;
248
+ }
249
+ else {
250
+ this.isAccordionExpanded = true;
251
+ this.invalidForm();
252
+ if (this.dadosTela?.mensagemValidacao) {
253
+ this.notificationService.dialog({
254
+ type: 'alert',
255
+ message: 'Verifique os campos obrigatórios.',
256
+ });
257
+ }
258
+ }
259
+ return valid;
260
+ }
261
+ }
262
+ BaseComponentCrudForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BaseComponentCrudForm, deps: [{ token: i1.DialogService }, { token: i2.NotificationService }, { token: i3.ActivatedRoute }, { token: i1.DynamicDialogRef }, { token: i1.DynamicDialogConfig }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component });
263
+ BaseComponentCrudForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: BaseComponentCrudForm, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
264
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BaseComponentCrudForm, decorators: [{
265
+ type: Component,
266
+ args: [{
267
+ template: ''
268
+ }]
269
+ }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.NotificationService }, { type: i3.ActivatedRoute }, { type: i1.DynamicDialogRef }, { type: i1.DynamicDialogConfig }, { type: i3.Router }]; } });
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY3J1ZC1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZC1mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxTQUFTLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFZdEQsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxpQkFBaUI7SUFnQm5FLFlBQ0UsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQzlCLGNBQThCLEVBQzlCLGdCQUFrQyxFQUNsQyxtQkFBd0MsRUFDeEMsTUFBYztRQUN4QixLQUFLLENBRUQsYUFBYSxFQUNiLG1CQUFtQixDQUNwQixDQUFDO1FBUk0sbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBcEJoQix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLGNBQVMsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxZQUFPLEdBQWlCLEVBQUUsQ0FBQztRQUczQixVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQVEsR0FBUSxJQUFJLENBQUM7UUFFdkIsb0JBQWUsR0FBWSxLQUFLLENBQUM7SUFjekMsQ0FBQztJQWtCRDs7O09BR0c7SUFDTyxZQUFZLENBQUMsR0FBUTtRQUM3QixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hFLE9BQU87YUFDUjtpQkFDSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFO2dCQUMxQiwyQ0FBMkM7Z0JBQzNDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQzVCLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7d0JBRXJCLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTs0QkFDbkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUMxRCxPQUFPO3lCQUNSO3dCQUVELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM1QixPQUFPO3FCQUNSO2lCQUNGO3FCQUNJLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7b0JBQ3pCLDBCQUEwQjtvQkFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyRCxPQUFPO2lCQUNSO2FBQ0Y7aUJBQ0ksSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBRTtnQkFDMUIsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtvQkFDcEIsMEJBQTBCO29CQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3JELE9BQU87aUJBQ1I7YUFDRjtZQUVELGlEQUFpRDtZQUNqRCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEQ7U0FDRjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLE1BQU07UUFDZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1lBQ2hDLElBQUksRUFBRSxVQUFVO1lBQ2hCLE9BQU8sRUFBRSw2QkFBNkI7WUFDdEMsTUFBTSxFQUFFLEdBQUcsRUFBRTtnQkFDWCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sd0JBQXdCLENBQUMsUUFBdUI7UUFDeEQsTUFBTSxXQUFXLEdBQXNCLEVBQUUsQ0FBQztRQUMxQyxRQUFRLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sZ0JBQWdCLENBQUMsV0FBbUI7UUFDNUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7OztPQUlHO0lBQ08sd0JBQXdCLENBQUMsV0FBbUIsRUFBRSxLQUFXO1FBQ2pFLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sZUFBZSxDQUFDLFVBQWtCO1FBQzFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLFlBQVksQ0FBSSxXQUFtQjtRQUMzQyxPQUFPLFdBQVcsQ0FBQyxZQUFZLENBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sZUFBZSxDQUFDLFdBQW1CLEVBQUUsU0FBa0I7UUFDL0QsT0FBTyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRDs7O09BR0c7SUFDTyxXQUFXLENBQUMsWUFBa0I7UUFDdEMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7O09BR0c7SUFDSSxRQUFRLENBQUksR0FBb0I7UUFDckMsR0FBRzthQUNBLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzthQUNmLFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBUyxDQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sU0FBUyxLQUFLLENBQUM7SUFFdEI7O09BRUc7SUFDTyxZQUFZLENBQUMsS0FBVSxJQUFJO1FBQ25DLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDakM7YUFDSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUM7UUFFNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7WUFDbkQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDN0I7aUJBQ0ksSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ2pEO2lCQUNJO2dCQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFFBQVEsQ0FBQyxHQUFvQjtRQUNyQyxHQUFHO2FBQ0EsSUFBSSxDQUFDLENBQUMsR0FBb0IsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQzFCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO2dCQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO2FBQ0QsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sZUFBZSxDQUFDLFVBQWtCLEVBQUUsS0FBVTtRQUN0RCxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDTyxhQUFhLENBQUMsTUFBVztRQUNqQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLG1CQUFtQjtnQkFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQztTQUNoRTtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ08sYUFBYSxDQUFDLFVBQWtCLEVBQUUsVUFBOEM7UUFDeEYsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sWUFBWTtRQUNwQixJQUFJLEtBQUssR0FBWSxLQUFLLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO1lBQzFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDZDthQUFNO1lBQ0wsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNoQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFO2dCQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO29CQUM5QixJQUFJLEVBQUUsT0FBTztvQkFDYixPQUFPLEVBQUUsbUNBQW1DO2lCQUM3QyxDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztrSEFoVG1CLHFCQUFxQjtzR0FBckIscUJBQXFCLDJFQUYvQixFQUFFOzJGQUVRLHFCQUFxQjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSBcInByaW1lbmcvZHluYW1pY2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgZmluYWxpemUgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL2FjdGlvbi1pdGVtXCI7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnRDcnVkIH0gZnJvbSBcIi4vYmFzZS1jb21wb25lbnQtY3J1ZFwiO1xyXG5pbXBvcnQgeyBGb3JtU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBsb2FkaW5nIH0gZnJvbSBcIi4uLy4uL2xvYWRlci9sb2FkZXIuc2VydmljZVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEYWRvc1RlbGEge1xyXG4gIHN1YlRpdHVsb0Zvcm06IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICB0aXR1bG9Gb3JtOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcm90YUxpc3Rhcjogc3RyaW5nO1xyXG4gIG1lbnNhZ2VtVmFsaWRhY2FvOiBib29sZWFuXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJ1xyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudENydWRGb3JtIGV4dGVuZHMgQmFzZUNvbXBvbmVudENydWQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIHByb3RlY3RlZCBpc0FjY29yZGlvbkV4cGFuZGVkID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIGlzTmV3UmVnaXN0cnkgPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgaXNTYXZlTG9hZGluZyA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBpc1ZpZXcgPSBmYWxzZTtcclxuXHJcbiAgcHJvdGVjdGVkIGZvcm1Hcm91cDogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgcHJvdGVjdGVkIGFjdGlvbnM6IEFjdGlvbkl0ZW1bXSA9IFtdO1xyXG5cclxuICBwcm90ZWN0ZWQgZGFkb3NUZWxhOiBEYWRvc1RlbGEgfCB1bmRlZmluZWQ7XHJcbiAgcHJvdGVjdGVkIHBvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIHJlZ2lzdHJ5OiBhbnkgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIG9uU2V0Rm9ybVZhbHVlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByb3RlY3RlZCBkeW5hbWljRGlhbG9nUmVmOiBEeW5hbWljRGlhbG9nUmVmLFxyXG4gICAgcHJvdGVjdGVkIGR5bmFtaWNEaWFsb2dDb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsXHJcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIHN1cGVyXHJcbiAgICAgIChcclxuICAgICAgICBkaWFsb2dTZXJ2aWNlLFxyXG4gICAgICAgIG5vdGlmaWNhdGlvblNlcnZpY2VcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgY29uZmlndXJhw6fDo28gZG8gZm9ybVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IGNvbmZpZ3VyZUZvcm0oKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBvIGNhcnJlZ2FtZW50byBkbyBmb3JtXHJcbiAgICogQHBhcmFtIGlkXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgbG9hZEZvcm0oaWQ6IGFueSk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgc2FsdmFtZW50byBkb3MgZGFkb3NcclxuICAgKi9cclxuICBhYnN0cmFjdCBzYXZlKCk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgdHJhdGFtZW50byBkYXMgbm90aWZpY2HDp8O1ZXMgZG8gYmFja2VuZFxyXG4gICAqIEBwYXJhbSBlcnIgLSBOb3RpZmljYcOnw6NvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGJhY2tlbmRFcnJvcihlcnI6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGVycikge1xyXG4gICAgICBpZiAoZXJyLnN0YXR1cyA9PSA0MDQpIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIuZXJyb3IuaXRlbTJbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGVyci5zdGF0dXMgPT0gNDAwKSB7XHJcbiAgICAgICAgLy8gRXJyb3MgZGUgdmFsaWRhw6fDo28gZGUgZG9tw61uaW8gZG8gYmFja2VuZFxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVyci5lcnJvcikpIHtcclxuICAgICAgICAgIGlmIChlcnIuZXJyb3I/Lmxlbmd0aCkge1xyXG5cclxuICAgICAgICAgICAgaWYgKGVyci5lcnJvci5sZW5ndGggPT0gMSAmJiBlcnIuZXJyb3JbMF0ua2V5ID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoZXJyLmVycm9yWzBdLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkRm9ybShlcnIuZXJyb3IpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5lcnJvcj8udGl0bGUpIHtcclxuICAgICAgICAgIC8vIEVycm8gZGUganNvbiBubyBiYWNrZW5kXHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihlcnIuZXJyb3IudGl0bGUpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChlcnIuc3RhdHVzID09IDQxNSkge1xyXG4gICAgICAgIGlmIChlcnIuZXJyb3I/LnRpdGxlKSB7XHJcbiAgICAgICAgICAvLyBFcnJvIGRlIGpzb24gbm8gYmFja2VuZFxyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoZXJyLmVycm9yLnRpdGxlKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFF1YWxxdWVyIG91dHJvIHRpcG8gZGUgZXJybyBxdWUgdGVuaGEgbWVuc2FnZW1cclxuICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIGRpc3BhcmFkbyBhbyBjbGljYXIgbm8gYm90w6NvIGRlIGNhbmNlbGFtZW50b1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjYW5jZWwoKSB7XHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UucXVlc3Rpb24oe1xyXG4gICAgICB0eXBlOiAncXVlc3Rpb24nLFxyXG4gICAgICBtZXNzYWdlOiAnRGVzZWphIGNhbmNlbGFyIGEgb3BlcmHDp8Ojbz8nLFxyXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLm5hdmlnYXRlTGlzdCgpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBWZXJpZmljYSBzZSBob3V2ZXJhbSBhbHRlcmHDp8O1ZXMgbm9zIGNvbXBvbmVudGVzIGRvIGZvcm1Db250cm9sXHJcbiAgICogQHBhcmFtIGNvbnRyb2xzIC0gTm9tZXMgZG8gY29udHJvbGVzIG5vIGZvcm1Hcm91cFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGVcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGV0ZWN0Rm9ybUNvbnRyb2xDaGFuZ2VzKGNvbnRyb2xzOiBBcnJheTxzdHJpbmc+KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGNvbnRyb2xMaXN0OiBPYnNlcnZhYmxlPGFueT5bXSA9IFtdO1xyXG4gICAgY29udHJvbHMuZm9yRWFjaChjb250cm9sTmFtZSA9PiBjb250cm9sTGlzdC5wdXNoKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXS52YWx1ZUNoYW5nZXMpKTtcclxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGNvbnRyb2xMaXN0KS5waXBlKGZpbHRlcigoKSA9PiAhdGhpcy5vblNldEZvcm1WYWx1ZXMpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBkZXNhYmlsaXRhciB1bSBjb21wb25lbnRlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xOYW1lIC0gTm9tZSBkbyBjb250cm9sZSBubyBmb3JtR3JvdXBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGlzYWJsZUNvbXBvbmVudChjb250cm9sTmFtZTogc3RyaW5nKSB7XHJcbiAgICBGb3JtU2VydmljZS5kaXNhYmxlQ29udHJvbCh0aGlzLmZvcm1Hcm91cCwgY29udHJvbE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGxpbXBhciBlIGRlc2FiaWxpdGFyIHVtIGNvbXBvbmVudGVcclxuICAgKiBAcGFyYW0gY29udHJvbE5hbWUgLSBOb21lIGRvIGNvbnRyb2xlIG5vIGZvcm1Hcm91cFxyXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIGRlZmF1bHRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGlzYWJsZUFuZENsZWFyQ29tcG9uZW50KGNvbnRyb2xOYW1lOiBzdHJpbmcsIHZhbHVlPzogYW55KSB7XHJcbiAgICBGb3JtU2VydmljZS5kaXNhYmxlQW5kQ2xlYXJDb250cm9sKHRoaXMuZm9ybUdyb3VwLCBjb250cm9sTmFtZSwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGhhYmlsaXRhciB1bSBjb21wb25lbnRlXHJcbiAgICogQHBhcmFtIGNvbnRyb2xOYW1lIC0gTm9tZSBkbyBjb250cm9sZSBubyBmb3JtR3JvdXBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZW5hYmxlQ29tcG9uZW50KGNvbnRyb05hbWU6IHN0cmluZykge1xyXG4gICAgRm9ybVNlcnZpY2UuZW5hYmxlQ29udHJvbCh0aGlzLmZvcm1Hcm91cCwgY29udHJvTmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSByZXRvcm5hIG8gdmFsb3IgZGUgdW0gY29tcG9uZW50ZVxyXG4gICAqIEBwYXJhbSBjb250cm9sTmFtZSAtIE5vbWUgZG8gY29udHJvbGUgbm8gZm9ybUdyb3VwXHJcbiAgICogQHJldHVybnMgLSBWYWxvclxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRGb3JtVmFsdWU8VD4oY29udHJvbE5hbWU6IHN0cmluZyk6IFQge1xyXG4gICAgcmV0dXJuIEZvcm1TZXJ2aWNlLmdldEZvcm1WYWx1ZTxUPih0aGlzLmZvcm1Hcm91cCwgY29udHJvbE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmVyaWZpY2Egc2UgbyBjb21wb25lbnRlIHBvc3N1aSBlcnJvXHJcbiAgICogQHBhcmFtIGNvbnRyb2xOYW1lIC0gTm9tZSBkbyBjb250cm9sZSBubyBmb3JtR3JvdXBcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaGFzQ29udHJvbEVycm9yKGNvbnRyb2xOYW1lOiBzdHJpbmcsIGVycm9yQ29kZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEZvcm1TZXJ2aWNlLmhhc0NvbnRyb2xFcnJvcih0aGlzLmZvcm1Hcm91cCwgY29udHJvbE5hbWUsIGVycm9yQ29kZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRhIGluY29uc2lzdMOqbmNpYXMgcGFyYSBvIGZvbXVsw6FyaW9cclxuICAgKiBAcGFyYW0gbm90aWZpY2F0aW9uIC0gTGlzdGEgZGUgbm90aWZpY2HDp8O1ZXNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaW52YWxpZEZvcm0obm90aWZpY2F0aW9uPzogYW55KSB7XHJcbiAgICBGb3JtU2VydmljZS5pbnZhbGlkRm9ybSh0aGlzLmZvcm1Hcm91cCwgbm90aWZpY2F0aW9uKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBlbG8gY2FycmVnYW1lbnRvIGRhIHRlbGFcclxuICAgKiBAcGFyYW0gb2JzIC0gT2JzZXJ2YWJsZSByZXNwb25zw6F2ZWwgcGVsbyBzYWx2YW1lbnRvIGRvcyBkYWRvc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBsb2FkRGF0YTxUPihvYnM6IE9ic2VydmFibGU8YW55Pikge1xyXG4gICAgb2JzXHJcbiAgICAgIC5waXBlKGxvYWRpbmcoKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc05ld1JlZ2lzdHJ5ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZWdpc3RyeSA9IGRhdGEgYXMgVDtcclxuICAgICAgICB0aGlzLnNldEZvcm1WYWx1ZXModGhpcy5yZWdpc3RyeSk7XHJcbiAgICAgICAgdGhpcy5sb2FkR3JpZHMoKTtcclxuICAgICAgICB0aGlzLnNldFRpdGxlUG9wdXAoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZEdyaWRzKCkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgcmV0b3JuYXIgYSBsaXN0YVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBuYXZpZ2F0ZUxpc3QoaWQ6IGFueSA9IG51bGwpIHtcclxuICAgIGlmICh0aGlzLnBvcHVwKSB7XHJcbiAgICAgIHRoaXMuZHluYW1pY0RpYWxvZ1JlZi5jbG9zZShpZCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLmRhZG9zVGVsYT8ucm90YUxpc3Rhcikge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5kYWRvc1RlbGEucm90YUxpc3Rhcl0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZHluYW1pY0RpYWxvZ1JlZikge1xyXG4gICAgICB0aGlzLmR5bmFtaWNEaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlndXJlRm9ybSgpO1xyXG5cclxuICAgIHRoaXMucG9wdXAgPSB0aGlzLmR5bmFtaWNEaWFsb2dDb25maWc/LmRhdGE/LnBvcHVwIHx8IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhcmFtc1snaWQnXSkge1xyXG4gICAgICAgIHRoaXMubG9hZEZvcm0ocGFyYW1zWydpZCddKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmR5bmFtaWNEaWFsb2dDb25maWc/LmRhdGE/LmlkKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkRm9ybSh0aGlzLmR5bmFtaWNEaWFsb2dDb25maWcuZGF0YS5pZCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc05ld1JlZ2lzdHJ5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmxvYWRHcmlkcygpO1xyXG4gICAgICAgIHRoaXMuc2V0VGl0bGVQb3B1cCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgc2FsdmFyIGRhZG9zXHJcbiAgICogQHBhcmFtIG9icyAtIE9ic2VydmFibGUgcmVzcG9uc8OhdmVsIHBlbG8gc2FsdmFtZW50byBkb3MgZGFkb3NcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2F2ZURhdGEob2JzOiBPYnNlcnZhYmxlPGFueT4pIHtcclxuICAgIG9ic1xyXG4gICAgICAucGlwZSgoc3JjOiBPYnNlcnZhYmxlPGFueT4pID0+IHtcclxuICAgICAgICB0aGlzLmlzU2F2ZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBzcmMucGlwZShmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzU2F2ZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0U3VjY2VzcyhyZXMuaXRlbTJbMF0ubWVzc2FnZSk7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRlTGlzdChyZXMuaXRlbTEpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmJhY2tlbmRFcnJvcihlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gc2UgYXR1YWxpemEgbyB2YWxvciBkZSB1bSBjb21wb25lbnRlIGRvIGZvcm1Hcm91cFxyXG4gICAqIEBwYXJhbSBjb250cm9OYW1lIC0gTm9tZSBkbyBjb250cm9sZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbG9yIHBhcmEgYXR1YWxpemHDp8Ojb1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZXRDb250cm9sVmFsdWUoY29udHJvTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XHJcbiAgICBGb3JtU2VydmljZS5zZXRDb250cm9sVmFsdWUodGhpcy5mb3JtR3JvdXAsIGNvbnRyb05hbWUsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEF0dWFsaXphIHZhbG9yZXMgZG9zIGNvbXBvbmVudGVzIGRvIGZvcm1Hcm91cFxyXG4gICAqIEBwYXJhbSB2YWx1ZXMgLSBWYWxvcmVzIHBhcmEgYXR1YWxpemHDp8Ojb1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzZXRGb3JtVmFsdWVzKHZhbHVlczogYW55KSB7XHJcbiAgICB0aGlzLm9uU2V0Rm9ybVZhbHVlcyA9IHRydWU7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHZhbHVlcywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgdGhpcy5vblNldEZvcm1WYWx1ZXMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldGEgbyB0w610dWxvIGRvIHBvcHVwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRUaXRsZVBvcHVwKCkge1xyXG4gICAgaWYgKHRoaXMucG9wdXApIHtcclxuICAgICAgaWYgKHRoaXMuZHluYW1pY0RpYWxvZ0NvbmZpZylcclxuICAgICAgICB0aGlzLmR5bmFtaWNEaWFsb2dDb25maWcuaGVhZGVyID0gdGhpcy5kYWRvc1RlbGE/LnRpdHVsb0Zvcm07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBdHVhbGl6YSBvIHZhbGlkYWRvciBkZSB1bSBjb21wb25lbnRlIGRvIGZvcm1Hcm91cFxyXG4gICAqIEBwYXJhbSBjb250cm9OYW1lIC0gTm9tZSBkbyBjb250cm9sZVxyXG4gICAqIEBwYXJhbSB2YWxpZGF0b3JzIC0gUmVncmEgZGUgdmFsaWRhw6fDo29cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgc2V0VmFsaWRhdG9ycyhjb250cm9OYW1lOiBzdHJpbmcsIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IG51bGwpIHtcclxuICAgIEZvcm1TZXJ2aWNlLnNldFZhbGlkYXRvcnModGhpcy5mb3JtR3JvdXAsIGNvbnRyb05hbWUsIHZhbGlkYXRvcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGFyYSBvcyBtw6l0b2RvcyBkZSB2YWxpZGHDp8O1ZXMgZG8gZm9ybXVsw6FyaW9cclxuICAgKiBAcmV0dXJucyAtIFRydWUvRmFsc2VcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdmFsaWRhdGVGb3JtKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmIHRoaXMuZm9ybUdyb3VwLnZhbGlkKSB7XHJcbiAgICAgIHZhbGlkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNBY2NvcmRpb25FeHBhbmRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuaW52YWxpZEZvcm0oKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmRhZG9zVGVsYT8ubWVuc2FnZW1WYWxpZGFjYW8pIHtcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZGlhbG9nKHtcclxuICAgICAgICAgIHR5cGU6ICdhbGVydCcsXHJcbiAgICAgICAgICBtZXNzYWdlOiAnVmVyaWZpcXVlIG9zIGNhbXBvcyBvYnJpZ2F0w7NyaW9zLicsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsaWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { Component } from "@angular/core";
2
+ import { BaseComponentCrud } from "./base-component-crud";
3
+ import { TablePaginate } from "../components/table/table.paginate";
4
+ import { loading } from "../../loader/loader.service";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "primeng/dynamicdialog";
7
+ import * as i2 from "../services/notification.service";
8
+ import * as i3 from "@angular/router";
9
+ export class BaseComponentCrudList extends BaseComponentCrud {
10
+ constructor(dialogService, notificationService, router) {
11
+ super(dialogService, notificationService);
12
+ this.router = router;
13
+ this.totalRecords = 0;
14
+ this.actionsPageList = [];
15
+ }
16
+ ngOnInit() {
17
+ this.loadFilters();
18
+ this.configureTable();
19
+ // Tabela não configurada para paginação
20
+ if (!this.tableConfig.lazy)
21
+ this.loadTable(new TablePaginate());
22
+ }
23
+ /**
24
+ * Método que seta o registro selecionado na tabela
25
+ * @param event - Registro
26
+ */
27
+ activeItem(event) {
28
+ this.selectedItem = event;
29
+ }
30
+ /**
31
+ * Método que dispara o carregamento da tabela
32
+ * @param obs - Observable de carregamento dos dados
33
+ */
34
+ loadData(obs) {
35
+ obs
36
+ .pipe(loading())
37
+ .subscribe({
38
+ next: (res) => {
39
+ this.totalRecords = res.item1;
40
+ this.dataSource = res.item2;
41
+ },
42
+ error: (e) => {
43
+ this.toastError(e);
44
+ },
45
+ });
46
+ }
47
+ /**
48
+ * Método que dispara a paginação
49
+ */
50
+ paginate(event) {
51
+ this.loadTable(event);
52
+ }
53
+ /**
54
+ * Método que dispara a atualização da página inteira
55
+ */
56
+ refresh() {
57
+ this.loadTable(new TablePaginate());
58
+ }
59
+ }
60
+ BaseComponentCrudList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BaseComponentCrudList, deps: [{ token: i1.DialogService }, { token: i2.NotificationService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component });
61
+ BaseComponentCrudList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: BaseComponentCrudList, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BaseComponentCrudList, decorators: [{
63
+ type: Component,
64
+ args: [{
65
+ template: ''
66
+ }]
67
+ }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.NotificationService }, { type: i3.Router }]; } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQtY3J1ZC1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtY3J1ZC1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBS25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7QUFLdEQsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxpQkFBaUI7SUFRbkUsWUFDRSxhQUE0QixFQUM1QixtQkFBd0MsRUFDakMsTUFBYztRQUNyQixLQUFLLENBRUQsYUFBYSxFQUNiLG1CQUFtQixDQUNwQixDQUFDO1FBTEcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU52QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixvQkFBZSxHQUFpQixFQUFFLENBQUM7SUFXbkMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUE4QkQ7OztPQUdHO0lBQ08sVUFBVSxDQUFDLEtBQVU7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFFBQVEsQ0FBQyxHQUFvQjtRQUNyQyxHQUFHO2FBQ0EsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2YsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFBO1lBQzdCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxRQUFRLENBQUMsS0FBVTtRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNPLE9BQU87UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksYUFBYSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDOztrSEE5Rm1CLHFCQUFxQjtzR0FBckIscUJBQXFCLDJFQUYvQixFQUFFOzJGQUVRLHFCQUFxQjtrQkFIMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gXCJwcmltZW5nL2R5bmFtaWNkaWFsb2dcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudENydWQgfSBmcm9tIFwiLi9iYXNlLWNvbXBvbmVudC1jcnVkXCI7XHJcbmltcG9ydCB7IFRhYmxlUGFnaW5hdGUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy90YWJsZS90YWJsZS5wYWdpbmF0ZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUNvbmZpZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBBY3Rpb25JdGVtIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLWl0ZW1cIjtcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgbG9hZGluZyB9IGZyb20gXCIuLi8uLi9sb2FkZXIvbG9hZGVyLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlOiAnJ1xyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNvbXBvbmVudENydWRMaXN0IGV4dGVuZHMgQmFzZUNvbXBvbmVudENydWQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBkYXRhU291cmNlOiBhbnk7XHJcbiAgc2VsZWN0ZWRJdGVtOiBhbnk7XHJcbiAgdGFibGVDb25maWchOiBUYWJsZUNvbmZpZztcclxuICB0b3RhbFJlY29yZHM6IG51bWJlciA9IDA7XHJcbiAgYWN0aW9uc1BhZ2VMaXN0OiBBY3Rpb25JdGVtW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgc3VwZXJcclxuICAgICAgKFxyXG4gICAgICAgIGRpYWxvZ1NlcnZpY2UsXHJcbiAgICAgICAgbm90aWZpY2F0aW9uU2VydmljZVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxvYWRGaWx0ZXJzKCk7XHJcbiAgICB0aGlzLmNvbmZpZ3VyZVRhYmxlKCk7XHJcblxyXG4gICAgLy8gVGFiZWxhIG7Do28gY29uZmlndXJhZGEgcGFyYSBwYWdpbmHDp8Ojb1xyXG4gICAgaWYgKCF0aGlzLnRhYmxlQ29uZmlnLmxhenkpXHJcbiAgICAgIHRoaXMubG9hZFRhYmxlKG5ldyBUYWJsZVBhZ2luYXRlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBjb25maWd1cmHDp8OjbyBkYXMgdGFiZWxhcyBkbyBjb21wb25lbnRlIGRlIGxpc3RhXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgY29uZmlndXJlVGFibGUoKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBlZGnDp8OjbyBkZSByZWdpc3Ryb3NcclxuICAgKiBAcGFyYW0gcmVnaXN0cnkgLSBSZWdpc3RybyBxdWUgZXN0w6Egc2VuZG8gZWRpdGFkb1xyXG4gICAqXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgZWRpdChyZWdpc3RyeTogYW55KTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBkaXNwYXJhZG8gcGFyYSBjYXJyZWdhbWVudG8gZG9zIGZpbHRyb3MgZGEgdGVsYVxyXG4gICAqL1xyXG4gIGFic3RyYWN0IGxvYWRGaWx0ZXJzKCk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIHBhcmEgY2FycmVnYXIgYSB0YWJlbGEgZG8gY29tcG9uZW50ZSBkZSBsaXN0YVxyXG4gICAqIEBwYXJhbSB0YWJsZVBhZ2luYXRlIC0gQ2xhc3NlIGRvcyBkYWRvcyBkYSBwYWdpbmHDp8OjbyBkYSB0YWJlbGFcclxuICAgKi9cclxuICBhYnN0cmFjdCBsb2FkVGFibGUodGFibGVQYWdpbmF0ZTogVGFibGVQYWdpbmF0ZSk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gZGlzcGFyYWRvIGFvIGNsaWNhciBubyBib3TDo28gZGUgbm92byByZWdpc3Ryb1xyXG4gICAqL1xyXG4gIGFic3RyYWN0IG5ld1JlZ2lzdHJ5KCk6IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcXVlIHNldGEgbyByZWdpc3RybyBzZWxlY2lvbmFkbyBuYSB0YWJlbGFcclxuICAgKiBAcGFyYW0gZXZlbnQgLSBSZWdpc3Ryb1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBhY3RpdmVJdGVtKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNw6l0b2RvIHF1ZSBkaXNwYXJhIG8gY2FycmVnYW1lbnRvIGRhIHRhYmVsYVxyXG4gICAqIEBwYXJhbSBvYnMgLSBPYnNlcnZhYmxlIGRlIGNhcnJlZ2FtZW50byBkb3MgZGFkb3NcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgbG9hZERhdGEob2JzOiBPYnNlcnZhYmxlPGFueT4pIHtcclxuICAgIG9ic1xyXG4gICAgICAucGlwZShsb2FkaW5nKCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSByZXMuaXRlbTE7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UgPSByZXMuaXRlbTJcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdEVycm9yKGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTcOpdG9kbyBxdWUgZGlzcGFyYSBhIHBhZ2luYcOnw6NvXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIHBhZ2luYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMubG9hZFRhYmxlKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE3DqXRvZG8gcXVlIGRpc3BhcmEgYSBhdHVhbGl6YcOnw6NvIGRhIHDDoWdpbmEgaW50ZWlyYVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5sb2FkVGFibGUobmV3IFRhYmxlUGFnaW5hdGUoKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==