@verisoft/ui-core 18.7.0 → 18.8.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 (333) hide show
  1. package/README.md +7 -56
  2. package/esm2022/index.mjs +7 -0
  3. package/esm2022/lib/common/angular-helper.mjs +23 -0
  4. package/esm2022/lib/common/constants.mjs +4 -0
  5. package/esm2022/lib/common/control.models.mjs +63 -0
  6. package/esm2022/lib/common/datasource-component.model.mjs +14 -0
  7. package/esm2022/lib/common/deactivate-guard.model.mjs +2 -0
  8. package/esm2022/lib/common/download-file.mjs +13 -0
  9. package/esm2022/lib/common/filter.mjs +7 -0
  10. package/esm2022/lib/common/icons.mjs +2 -0
  11. package/esm2022/lib/common/index.mjs +11 -0
  12. package/esm2022/lib/common/notificable-property.model.mjs +2 -0
  13. package/esm2022/lib/common/rxjs.mjs +11 -0
  14. package/esm2022/lib/components/action-button-group/action-button-group.model.mjs +3 -0
  15. package/esm2022/lib/components/action-button-group/action-button.model.mjs +2 -0
  16. package/esm2022/lib/components/action-button-group/index.mjs +3 -0
  17. package/esm2022/lib/components/base-form/base-form-input.component.mjs +100 -0
  18. package/esm2022/lib/components/base-form/base-form.component.mjs +187 -0
  19. package/esm2022/lib/components/base-form/directives/detail-store.directive.mjs +163 -0
  20. package/esm2022/lib/components/base-form/index.mjs +5 -0
  21. package/esm2022/lib/components/base-form/models/base-form-input.models.mjs +7 -0
  22. package/esm2022/lib/components/base-form/models/base-form.models.mjs +10 -0
  23. package/esm2022/lib/components/base-form/models/index.mjs +3 -0
  24. package/esm2022/lib/components/breadcrumb/breadcrumb.model.mjs +3 -0
  25. package/esm2022/lib/components/breadcrumb/breadcrumb.service.mjs +16 -0
  26. package/esm2022/lib/components/breadcrumb/breadcrumbcore.component.mjs +88 -0
  27. package/esm2022/lib/components/breadcrumb/index.mjs +4 -0
  28. package/esm2022/lib/components/button/button.model.mjs +3 -0
  29. package/esm2022/lib/components/button/index.mjs +2 -0
  30. package/esm2022/lib/components/calendar/calendar.model.mjs +3 -0
  31. package/esm2022/lib/components/calendar/index.mjs +2 -0
  32. package/esm2022/lib/components/checkbox/checkbox.model.mjs +3 -0
  33. package/esm2022/lib/components/checkbox/index.mjs +2 -0
  34. package/esm2022/lib/components/confirm-dialog/confirm-dialog.model.mjs +3 -0
  35. package/esm2022/lib/components/confirm-dialog/index.mjs +2 -0
  36. package/esm2022/lib/components/dropdown/dropdown.model.mjs +3 -0
  37. package/esm2022/lib/components/dropdown/index.mjs +2 -0
  38. package/esm2022/lib/components/dynamic-component/dynamic-component.model.mjs +2 -0
  39. package/esm2022/lib/components/dynamic-component/index.mjs +2 -0
  40. package/esm2022/lib/components/filter/filter.model.mjs +3 -0
  41. package/esm2022/lib/components/filter/index.mjs +2 -0
  42. package/esm2022/lib/components/form-field/form-field.model.mjs +3 -0
  43. package/esm2022/lib/components/form-field/index.mjs +2 -0
  44. package/esm2022/lib/components/generic-field/generic-field.model.mjs +3 -0
  45. package/esm2022/lib/components/generic-field/index.mjs +2 -0
  46. package/esm2022/lib/components/generic-form/generic-form.component.mjs +10 -0
  47. package/esm2022/lib/components/generic-form/index.mjs +2 -0
  48. package/esm2022/lib/components/header/header.model.mjs +4 -0
  49. package/esm2022/lib/components/header/index.mjs +2 -0
  50. package/esm2022/lib/components/icons/icons.component.mjs +29 -0
  51. package/esm2022/lib/components/icons/icons.model.mjs +3 -0
  52. package/esm2022/lib/components/icons/index.mjs +3 -0
  53. package/esm2022/lib/components/index.mjs +36 -0
  54. package/esm2022/lib/components/input-group/index.mjs +2 -0
  55. package/esm2022/lib/components/input-group/input-group.model.mjs +3 -0
  56. package/esm2022/lib/components/loader/index.mjs +2 -0
  57. package/esm2022/lib/components/loader/loader.model.mjs +3 -0
  58. package/esm2022/lib/components/multiselect/index.mjs +2 -0
  59. package/esm2022/lib/components/multiselect/mutiselect.model.mjs +3 -0
  60. package/esm2022/lib/components/number-input/index.mjs +2 -0
  61. package/esm2022/lib/components/number-input/number-input.model.mjs +3 -0
  62. package/esm2022/lib/components/page-header/index.mjs +4 -0
  63. package/esm2022/lib/components/page-header/page-header.model.mjs +3 -0
  64. package/esm2022/lib/components/page-header/page-header.service.mjs +16 -0
  65. package/esm2022/lib/components/page-header/page-headercore.component.mjs +52 -0
  66. package/esm2022/lib/components/password/index.mjs +2 -0
  67. package/esm2022/lib/components/password/password.model.mjs +11 -0
  68. package/esm2022/lib/components/radiobutton/index.mjs +2 -0
  69. package/esm2022/lib/components/radiobutton/radiobutton.model.mjs +3 -0
  70. package/esm2022/lib/components/section/index.mjs +2 -0
  71. package/esm2022/lib/components/section/section.model.mjs +3 -0
  72. package/esm2022/lib/components/side-menu/directives/side-menu-service.directive.mjs +31 -0
  73. package/esm2022/lib/components/side-menu/index.mjs +5 -0
  74. package/esm2022/lib/components/side-menu/services/side-menu-provider.service.mjs +25 -0
  75. package/esm2022/lib/components/side-menu/services/side-menu.service.mjs +50 -0
  76. package/esm2022/lib/components/side-menu/side-menu.model.mjs +6 -0
  77. package/esm2022/lib/components/slider/index.mjs +2 -0
  78. package/esm2022/lib/components/slider/slider.model.mjs +3 -0
  79. package/esm2022/lib/components/snackbar/index.mjs +2 -0
  80. package/esm2022/lib/components/snackbar/snackbar.model.mjs +3 -0
  81. package/esm2022/lib/components/stepper/index.mjs +2 -0
  82. package/esm2022/lib/components/stepper/stepper.model.mjs +3 -0
  83. package/esm2022/lib/components/switch/index.mjs +2 -0
  84. package/esm2022/lib/components/switch/switch.model.mjs +3 -0
  85. package/esm2022/lib/components/tab-view/index.mjs +2 -0
  86. package/esm2022/lib/components/tab-view/tab-view.model.mjs +3 -0
  87. package/esm2022/lib/components/table/column-configuration.mjs +32 -0
  88. package/esm2022/lib/components/table/index.mjs +5 -0
  89. package/esm2022/lib/components/table/table-builder.mjs +68 -0
  90. package/esm2022/lib/components/table/table-column.directive.mjs +86 -0
  91. package/esm2022/lib/components/table/table.models.mjs +150 -0
  92. package/esm2022/lib/components/table-filter/index.mjs +2 -0
  93. package/esm2022/lib/components/table-filter/table-filter.model.mjs +3 -0
  94. package/esm2022/lib/components/textarea/index.mjs +2 -0
  95. package/esm2022/lib/components/textarea/textarea.model.mjs +3 -0
  96. package/esm2022/lib/components/textfield/index.mjs +2 -0
  97. package/esm2022/lib/components/textfield/textfield.model.mjs +3 -0
  98. package/esm2022/lib/components/tristatecheckbox/index.mjs +2 -0
  99. package/esm2022/lib/components/tristatecheckbox/tristatecheckbox.model.mjs +3 -0
  100. package/esm2022/lib/components/unsubscribe.component.mjs +16 -0
  101. package/esm2022/lib/directives/datasource.directive.mjs +175 -0
  102. package/esm2022/lib/directives/index.mjs +5 -0
  103. package/esm2022/lib/directives/shortcut.directive.mjs +46 -0
  104. package/esm2022/lib/directives/table-datasource.directive.mjs +124 -0
  105. package/esm2022/lib/directives/table-filter.directive.mjs +56 -0
  106. package/esm2022/lib/format/format.mjs +63 -0
  107. package/esm2022/lib/pipes/error/error.codes.mjs +10 -0
  108. package/esm2022/lib/pipes/error/error.models.mjs +21 -0
  109. package/esm2022/lib/pipes/error/error.pipe.mjs +31 -0
  110. package/esm2022/lib/pipes/error/warning.codes.mjs +4 -0
  111. package/esm2022/lib/pipes/error/warning.pipe.mjs +31 -0
  112. package/esm2022/lib/pipes/helper/enumToList.pipe.mjs +22 -0
  113. package/esm2022/lib/pipes/index.mjs +8 -0
  114. package/esm2022/lib/pipes/keyOrFn/keyOrFn.pipe.mjs +31 -0
  115. package/esm2022/lib/services/confirm-dialog.service.mjs +45 -0
  116. package/esm2022/lib/services/index.mjs +5 -0
  117. package/esm2022/lib/services/leave-form.service.mjs +52 -0
  118. package/esm2022/lib/services/screen-size.service.mjs +29 -0
  119. package/esm2022/lib/services/table.service.mjs +27 -0
  120. package/esm2022/verisoft-ui-core.mjs +5 -0
  121. package/fesm2022/verisoft-ui-core.mjs +2014 -0
  122. package/fesm2022/verisoft-ui-core.mjs.map +1 -0
  123. package/{src/index.ts → index.d.ts} +6 -6
  124. package/lib/common/angular-helper.d.ts +1 -0
  125. package/lib/common/constants.d.ts +3 -0
  126. package/lib/common/control.models.d.ts +62 -0
  127. package/lib/common/datasource-component.model.d.ts +19 -0
  128. package/{src/lib/common/deactivate-guard.model.ts → lib/common/deactivate-guard.model.d.ts} +4 -5
  129. package/lib/common/download-file.d.ts +2 -0
  130. package/lib/common/filter.d.ts +1 -0
  131. package/{src/lib/common/icons.ts → lib/common/icons.d.ts} +34 -34
  132. package/{src/lib/common/index.ts → lib/common/index.d.ts} +10 -10
  133. package/{src/lib/common/notificable-property.model.ts → lib/common/notificable-property.model.d.ts} +4 -5
  134. package/lib/common/rxjs.d.ts +2 -0
  135. package/lib/components/action-button-group/action-button-group.model.d.ts +12 -0
  136. package/lib/components/action-button-group/action-button.model.d.ts +14 -0
  137. package/{src/lib/components/action-button-group/index.ts → lib/components/action-button-group/index.d.ts} +2 -2
  138. package/lib/components/base-form/base-form-input.component.d.ts +30 -0
  139. package/lib/components/base-form/base-form.component.d.ts +50 -0
  140. package/lib/components/base-form/directives/detail-store.directive.d.ts +35 -0
  141. package/{src/lib/components/base-form/index.ts → lib/components/base-form/index.d.ts} +4 -4
  142. package/lib/components/base-form/models/base-form-input.models.d.ts +7 -0
  143. package/lib/components/base-form/models/base-form.models.d.ts +18 -0
  144. package/{src/lib/components/base-form/models/index.ts → lib/components/base-form/models/index.d.ts} +2 -2
  145. package/{src/lib/components/breadcrumb/breadcrumb.model.ts → lib/components/breadcrumb/breadcrumb.model.d.ts} +16 -21
  146. package/lib/components/breadcrumb/breadcrumb.service.d.ts +8 -0
  147. package/lib/components/breadcrumb/breadcrumbcore.component.d.ts +30 -0
  148. package/lib/components/breadcrumb/index.d.ts +3 -0
  149. package/{src/lib/components/button/button.model.ts → lib/components/button/button.model.d.ts} +17 -21
  150. package/lib/components/button/index.d.ts +1 -0
  151. package/{src/lib/components/calendar/calendar.model.ts → lib/components/calendar/calendar.model.d.ts} +12 -16
  152. package/lib/components/calendar/index.d.ts +1 -0
  153. package/lib/components/checkbox/checkbox.model.d.ts +4 -0
  154. package/lib/components/checkbox/index.d.ts +1 -0
  155. package/lib/components/confirm-dialog/confirm-dialog.model.d.ts +25 -0
  156. package/lib/components/confirm-dialog/index.d.ts +1 -0
  157. package/{src/lib/components/dropdown/dropdown.model.ts → lib/components/dropdown/dropdown.model.d.ts} +12 -16
  158. package/lib/components/dropdown/index.d.ts +1 -0
  159. package/lib/components/dynamic-component/dynamic-component.model.d.ts +3 -0
  160. package/lib/components/dynamic-component/index.d.ts +1 -0
  161. package/lib/components/filter/filter.model.d.ts +13 -0
  162. package/{src/lib/components/filter/index.ts → lib/components/filter/index.d.ts} +1 -1
  163. package/{src/lib/components/form-field/form-field.model.ts → lib/components/form-field/form-field.model.d.ts} +11 -15
  164. package/lib/components/form-field/index.d.ts +1 -0
  165. package/{src/lib/components/generic-field/generic-field.model.ts → lib/components/generic-field/generic-field.model.d.ts} +6 -10
  166. package/lib/components/generic-field/index.d.ts +1 -0
  167. package/lib/components/generic-form/generic-form.component.d.ts +30 -0
  168. package/{src/lib/components/generic-form/index.ts → lib/components/generic-form/index.d.ts} +1 -1
  169. package/{src/lib/components/header/header.model.ts → lib/components/header/header.model.d.ts} +11 -18
  170. package/lib/components/header/index.d.ts +1 -0
  171. package/lib/components/icons/icons.component.d.ts +6 -0
  172. package/lib/components/icons/icons.model.d.ts +6 -0
  173. package/lib/components/icons/index.d.ts +2 -0
  174. package/{src/lib/components/index.ts → lib/components/index.d.ts} +35 -35
  175. package/lib/components/input-group/index.d.ts +1 -0
  176. package/{src/lib/components/input-group/input-group.model.ts → lib/components/input-group/input-group.model.d.ts} +12 -17
  177. package/lib/components/loader/index.d.ts +1 -0
  178. package/lib/components/loader/loader.model.d.ts +3 -0
  179. package/lib/components/multiselect/index.d.ts +1 -0
  180. package/{src/lib/components/multiselect/mutiselect.model.ts → lib/components/multiselect/mutiselect.model.d.ts} +9 -13
  181. package/lib/components/number-input/index.d.ts +1 -0
  182. package/{src/lib/components/number-input/number-input.model.ts → lib/components/number-input/number-input.model.d.ts} +10 -14
  183. package/{src/lib/components/page-header/index.ts → lib/components/page-header/index.d.ts} +3 -3
  184. package/{src/lib/components/page-header/page-header.model.ts → lib/components/page-header/page-header.model.d.ts} +7 -11
  185. package/lib/components/page-header/page-header.service.d.ts +8 -0
  186. package/lib/components/page-header/page-headercore.component.d.ts +20 -0
  187. package/lib/components/password/index.d.ts +1 -0
  188. package/{src/lib/components/password/password.model.ts → lib/components/password/password.model.d.ts} +19 -25
  189. package/lib/components/radiobutton/index.d.ts +1 -0
  190. package/{src/lib/components/radiobutton/radiobutton.model.ts → lib/components/radiobutton/radiobutton.model.d.ts} +11 -16
  191. package/lib/components/section/index.d.ts +1 -0
  192. package/{src/lib/components/section/section.model.ts → lib/components/section/section.model.d.ts} +7 -11
  193. package/lib/components/side-menu/directives/side-menu-service.directive.d.ts +11 -0
  194. package/{src/lib/components/side-menu/index.ts → lib/components/side-menu/index.d.ts} +4 -4
  195. package/lib/components/side-menu/services/side-menu-provider.service.d.ts +10 -0
  196. package/lib/components/side-menu/services/side-menu.service.d.ts +15 -0
  197. package/lib/components/side-menu/side-menu.model.d.ts +42 -0
  198. package/lib/components/slider/index.d.ts +1 -0
  199. package/{src/lib/components/slider/slider.model.ts → lib/components/slider/slider.model.d.ts} +9 -13
  200. package/lib/components/snackbar/index.d.ts +1 -0
  201. package/lib/components/snackbar/snackbar.model.d.ts +3 -0
  202. package/lib/components/stepper/index.d.ts +1 -0
  203. package/{src/lib/components/stepper/stepper.model.ts → lib/components/stepper/stepper.model.d.ts} +19 -24
  204. package/lib/components/switch/index.d.ts +1 -0
  205. package/lib/components/switch/switch.model.d.ts +4 -0
  206. package/lib/components/tab-view/index.d.ts +1 -0
  207. package/{src/lib/components/tab-view/tab-view.model.ts → lib/components/tab-view/tab-view.model.d.ts} +17 -22
  208. package/lib/components/table/column-configuration.d.ts +12 -0
  209. package/{src/lib/components/table/index.ts → lib/components/table/index.d.ts} +4 -4
  210. package/lib/components/table/table-builder.d.ts +15 -0
  211. package/lib/components/table/table-column.directive.d.ts +25 -0
  212. package/lib/components/table/table.models.d.ts +132 -0
  213. package/lib/components/table-filter/index.d.ts +1 -0
  214. package/{src/lib/components/table-filter/table-filter.model.ts → lib/components/table-filter/table-filter.model.d.ts} +17 -22
  215. package/lib/components/textarea/index.d.ts +1 -0
  216. package/{src/lib/components/textarea/textarea.model.ts → lib/components/textarea/textarea.model.d.ts} +9 -13
  217. package/lib/components/textfield/index.d.ts +1 -0
  218. package/{src/lib/components/textfield/textfield.model.ts → lib/components/textfield/textfield.model.d.ts} +9 -13
  219. package/lib/components/tristatecheckbox/index.d.ts +1 -0
  220. package/lib/components/tristatecheckbox/tristatecheckbox.model.d.ts +4 -0
  221. package/lib/components/unsubscribe.component.d.ts +9 -0
  222. package/lib/directives/datasource.directive.d.ts +32 -0
  223. package/{src/lib/directives/index.ts → lib/directives/index.d.ts} +4 -4
  224. package/lib/directives/shortcut.directive.d.ts +11 -0
  225. package/lib/directives/table-datasource.directive.d.ts +29 -0
  226. package/lib/directives/table-filter.directive.d.ts +17 -0
  227. package/lib/format/format.d.ts +9 -0
  228. package/lib/pipes/error/error.codes.d.ts +5 -0
  229. package/lib/pipes/error/error.models.d.ts +8 -0
  230. package/lib/pipes/error/error.pipe.d.ts +8 -0
  231. package/lib/pipes/error/warning.codes.d.ts +5 -0
  232. package/lib/pipes/error/warning.pipe.d.ts +8 -0
  233. package/lib/pipes/helper/enumToList.pipe.d.ts +7 -0
  234. package/{src/lib/pipes/index.ts → lib/pipes/index.d.ts} +7 -7
  235. package/lib/pipes/keyOrFn/keyOrFn.pipe.d.ts +7 -0
  236. package/lib/services/confirm-dialog.service.d.ts +12 -0
  237. package/{src/lib/services/index.ts → lib/services/index.d.ts} +4 -4
  238. package/lib/services/leave-form.service.d.ts +13 -0
  239. package/lib/services/screen-size.service.d.ts +10 -0
  240. package/lib/services/table.service.d.ts +13 -0
  241. package/package.json +35 -19
  242. package/.eslintrc.json +0 -48
  243. package/jest.config.ts +0 -21
  244. package/ng-package.json +0 -7
  245. package/project.json +0 -36
  246. package/src/lib/common/angular-helper.ts +0 -44
  247. package/src/lib/common/constants.ts +0 -5
  248. package/src/lib/common/control.models.ts +0 -71
  249. package/src/lib/common/datasource-component.model.spec.ts +0 -42
  250. package/src/lib/common/datasource-component.model.ts +0 -43
  251. package/src/lib/common/download-file.ts +0 -20
  252. package/src/lib/common/filter.ts +0 -7
  253. package/src/lib/common/rxjs.spec.ts +0 -58
  254. package/src/lib/common/rxjs.ts +0 -21
  255. package/src/lib/components/action-button-group/action-button-group.model.ts +0 -15
  256. package/src/lib/components/action-button-group/action-button.model.ts +0 -15
  257. package/src/lib/components/base-form/base-form-input.component.ts +0 -121
  258. package/src/lib/components/base-form/base-form.component.ts +0 -236
  259. package/src/lib/components/base-form/directives/detail-store.directive.ts +0 -219
  260. package/src/lib/components/base-form/models/base-form-input.models.ts +0 -11
  261. package/src/lib/components/base-form/models/base-form.models.ts +0 -31
  262. package/src/lib/components/breadcrumb/breadcrumb.service.ts +0 -9
  263. package/src/lib/components/breadcrumb/breadcrumbcore.component.ts +0 -115
  264. package/src/lib/components/breadcrumb/index.ts +0 -3
  265. package/src/lib/components/button/index.ts +0 -1
  266. package/src/lib/components/calendar/index.ts +0 -1
  267. package/src/lib/components/checkbox/checkbox.model.ts +0 -8
  268. package/src/lib/components/checkbox/index.ts +0 -1
  269. package/src/lib/components/confirm-dialog/confirm-dialog.model.ts +0 -31
  270. package/src/lib/components/confirm-dialog/index.ts +0 -1
  271. package/src/lib/components/dropdown/index.ts +0 -1
  272. package/src/lib/components/dynamic-component/dynamic-component.model.ts +0 -2
  273. package/src/lib/components/dynamic-component/index.ts +0 -1
  274. package/src/lib/components/filter/filter.model.ts +0 -17
  275. package/src/lib/components/form-field/index.ts +0 -1
  276. package/src/lib/components/generic-field/index.ts +0 -1
  277. package/src/lib/components/generic-form/generic-form.component.ts +0 -33
  278. package/src/lib/components/header/index.ts +0 -1
  279. package/src/lib/components/icons/icons.component.ts +0 -17
  280. package/src/lib/components/icons/icons.model.ts +0 -10
  281. package/src/lib/components/icons/index.ts +0 -2
  282. package/src/lib/components/input-group/index.ts +0 -1
  283. package/src/lib/components/loader/index.ts +0 -1
  284. package/src/lib/components/loader/loader.model.ts +0 -7
  285. package/src/lib/components/multiselect/index.ts +0 -1
  286. package/src/lib/components/number-input/index.ts +0 -1
  287. package/src/lib/components/page-header/page-header.service.ts +0 -9
  288. package/src/lib/components/page-header/page-headercore.component.ts +0 -40
  289. package/src/lib/components/password/index.ts +0 -1
  290. package/src/lib/components/radiobutton/index.ts +0 -1
  291. package/src/lib/components/section/index.ts +0 -1
  292. package/src/lib/components/side-menu/directives/side-menu-service.directive.ts +0 -31
  293. package/src/lib/components/side-menu/services/side-menu-provider.service.ts +0 -13
  294. package/src/lib/components/side-menu/services/side-menu.service.ts +0 -62
  295. package/src/lib/components/side-menu/side-menu.model.ts +0 -67
  296. package/src/lib/components/slider/index.ts +0 -1
  297. package/src/lib/components/snackbar/index.ts +0 -1
  298. package/src/lib/components/snackbar/snackbar.model.ts +0 -7
  299. package/src/lib/components/stepper/index.ts +0 -1
  300. package/src/lib/components/switch/index.ts +0 -1
  301. package/src/lib/components/switch/switch.model.ts +0 -8
  302. package/src/lib/components/tab-view/index.ts +0 -1
  303. package/src/lib/components/table/column-configuration.ts +0 -38
  304. package/src/lib/components/table/table-builder.ts +0 -93
  305. package/src/lib/components/table/table-column.directive.ts +0 -62
  306. package/src/lib/components/table/table.models.ts +0 -261
  307. package/src/lib/components/table-filter/index.ts +0 -1
  308. package/src/lib/components/textarea/index.ts +0 -1
  309. package/src/lib/components/textfield/index.ts +0 -1
  310. package/src/lib/components/tristatecheckbox/index.ts +0 -1
  311. package/src/lib/components/tristatecheckbox/tristatecheckbox.model.ts +0 -8
  312. package/src/lib/components/unsubscribe.component.ts +0 -12
  313. package/src/lib/directives/datasource.directive.ts +0 -275
  314. package/src/lib/directives/shortcut.directive.ts +0 -37
  315. package/src/lib/directives/table-datasource.directive.ts +0 -184
  316. package/src/lib/directives/table-filter.directive.ts +0 -69
  317. package/src/lib/format/format.ts +0 -74
  318. package/src/lib/pipes/error/error.codes.ts +0 -11
  319. package/src/lib/pipes/error/error.models.ts +0 -27
  320. package/src/lib/pipes/error/error.pipe.ts +0 -27
  321. package/src/lib/pipes/error/warning.codes.ts +0 -5
  322. package/src/lib/pipes/error/warning.pipe.ts +0 -27
  323. package/src/lib/pipes/helper/enumToList.pipe.ts +0 -16
  324. package/src/lib/pipes/keyOrFn/keyOrFn.pipe.ts +0 -23
  325. package/src/lib/services/confirm-dialog.service.ts +0 -44
  326. package/src/lib/services/leave-form.service.ts +0 -53
  327. package/src/lib/services/screen-size.service.ts +0 -25
  328. package/src/lib/services/table.service.ts +0 -22
  329. package/src/test-setup.ts +0 -8
  330. package/tsconfig.json +0 -28
  331. package/tsconfig.lib.json +0 -17
  332. package/tsconfig.lib.prod.json +0 -9
  333. package/tsconfig.spec.json +0 -16
@@ -0,0 +1,150 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { v4 } from 'uuid';
3
+ export const TABLE_COMPONENT_TOKEN = new InjectionToken('TabVIewComponentToken');
4
+ export const TABLE_COLUMN_PROVIDER = new InjectionToken('TABLE_COLUMN_PROVIDER');
5
+ export var TableSelectionMode;
6
+ (function (TableSelectionMode) {
7
+ TableSelectionMode["single"] = "single";
8
+ TableSelectionMode["multiple"] = "multiple";
9
+ })(TableSelectionMode || (TableSelectionMode = {}));
10
+ export var TableButtonSeverity;
11
+ (function (TableButtonSeverity) {
12
+ TableButtonSeverity["success"] = "success";
13
+ TableButtonSeverity["info"] = "info";
14
+ TableButtonSeverity["warning"] = "warning";
15
+ TableButtonSeverity["danger"] = "danger";
16
+ TableButtonSeverity["help"] = "help";
17
+ TableButtonSeverity["primary"] = "primary";
18
+ TableButtonSeverity["secondary"] = "secondary";
19
+ TableButtonSeverity["contrast"] = "contrast";
20
+ })(TableButtonSeverity || (TableButtonSeverity = {}));
21
+ export var ColumnVisibility;
22
+ (function (ColumnVisibility) {
23
+ ColumnVisibility["visible"] = "visible";
24
+ ColumnVisibility["hidden"] = "hidden";
25
+ ColumnVisibility["default"] = "default";
26
+ })(ColumnVisibility || (ColumnVisibility = {}));
27
+ export function LinkRenderer(text, href) {
28
+ return (row, index) => {
29
+ return '<a href="' + href + '">' + text + '</a>';
30
+ };
31
+ }
32
+ export function routerRenderer(link, text) {
33
+ return (row, index) => {
34
+ return { text: text, link: link };
35
+ };
36
+ }
37
+ export function Renderer(fnc) {
38
+ return (row) => {
39
+ return fnc(row);
40
+ };
41
+ }
42
+ export class ColumnModel {
43
+ configuration;
44
+ sortDirection = undefined;
45
+ columnClass;
46
+ queryParams;
47
+ routerLink;
48
+ valueGetter;
49
+ headerGetter;
50
+ template;
51
+ actions;
52
+ sortable;
53
+ id;
54
+ // eslint-disable-next-line @typescript-eslint/ban-types
55
+ format;
56
+ textAlign;
57
+ width;
58
+ forceVisibility = ColumnVisibility.default;
59
+ visible = true;
60
+ constructor(configuration) {
61
+ this.configuration = configuration;
62
+ this.id = this.configuration.id;
63
+ if (this.configuration.format) {
64
+ this.format = this.configuration.format;
65
+ }
66
+ if (this.configuration.value) {
67
+ this.valueGetter = (row, index) => {
68
+ const value = this.configuration.value?.(row, index) ?? '-';
69
+ return this.format ? this.format(value, row) : value;
70
+ };
71
+ }
72
+ else {
73
+ this.valueGetter = (row) => {
74
+ const value = (row?.[this.configuration.id]) ?? '';
75
+ return this.format ? this.format(value, row) : value;
76
+ };
77
+ }
78
+ if (this.configuration.actions) {
79
+ this.actions = this.configuration.actions;
80
+ }
81
+ if (this.configuration.routerLink) {
82
+ this.routerLink = this.configuration.routerLink;
83
+ }
84
+ if (this.configuration.columnClass) {
85
+ this.columnClass = this.configuration.columnClass;
86
+ }
87
+ if (this.configuration.template) {
88
+ this.template = this.configuration.template;
89
+ }
90
+ if (this.configuration.headerName) {
91
+ this.headerGetter = (typeof this.configuration.headerName === 'string'
92
+ ? () => this.configuration.headerName ?? ''
93
+ : (columnId, index) => (this.configuration.headerName)?.(columnId, index) ?? this.id);
94
+ }
95
+ else {
96
+ this.headerGetter = () => "";
97
+ }
98
+ if (this.configuration.queryParams) {
99
+ this.queryParams = this.configuration.queryParams;
100
+ }
101
+ if (this.routerLink) {
102
+ this.columnClass += ' ' + 'link';
103
+ }
104
+ if (this.configuration.sortable !== undefined) {
105
+ this.sortable = this.configuration.sortable;
106
+ }
107
+ else {
108
+ this.sortable = true;
109
+ }
110
+ if (this.configuration.width) {
111
+ this.width = typeof this.configuration.width === "number" ? this.configuration.width + 'px' : this.configuration.width;
112
+ }
113
+ if (this.configuration.textAlign !== undefined) {
114
+ this.textAlign = this.configuration.textAlign;
115
+ }
116
+ if (this.configuration.forceVisibility) {
117
+ this.forceVisibility = this.configuration.forceVisibility;
118
+ }
119
+ if (this.configuration.visible !== undefined) {
120
+ this.visible = this.configuration.visible;
121
+ }
122
+ }
123
+ }
124
+ export class RowModel {
125
+ row;
126
+ index;
127
+ id;
128
+ selected;
129
+ marked;
130
+ focused;
131
+ expanded;
132
+ fnc;
133
+ customRoute;
134
+ constructor(row, selected, expanded, marked, index, fnc, customRoute, entityKey) {
135
+ this.row = row;
136
+ this.id = row['id'] ?? v4();
137
+ this.index = index;
138
+ this.selected = selected;
139
+ this.expanded = expanded;
140
+ this.marked = marked;
141
+ this.fnc = fnc;
142
+ this.customRoute = createCustomRoute(row, entityKey, customRoute);
143
+ }
144
+ }
145
+ function createCustomRoute(row, entityKey, customRoute) {
146
+ return customRoute && entityKey
147
+ ? `${customRoute}/` + row[entityKey]
148
+ : undefined;
149
+ }
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvdGFibGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsY0FBYyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRzFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUIsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHVCQUF1QixDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHVCQUF1QixDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUM1Qix1Q0FBaUIsQ0FBQTtJQUNqQiwyQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0IsMENBQW1CLENBQUE7SUFDbkIsb0NBQWEsQ0FBQTtJQUNiLDBDQUFtQixDQUFBO0lBQ25CLHdDQUFpQixDQUFBO0lBQ2pCLG9DQUFhLENBQUE7SUFDYiwwQ0FBbUIsQ0FBQTtJQUNuQiw4Q0FBdUIsQ0FBQTtJQUN2Qiw0Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBVFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVM5QjtBQUVELE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIsdUNBQW1CLENBQUE7SUFDbkIscUNBQWlCLENBQUE7SUFDakIsdUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUEwRUQsTUFBTSxVQUFVLFlBQVksQ0FBSSxJQUFZLEVBQUUsSUFBWTtJQUN4RCxPQUFPLENBQUMsR0FBTSxFQUFFLEtBQXlCLEVBQUUsRUFBRTtRQUMzQyxPQUFPLFdBQVcsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUM7SUFDbkQsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUksSUFBWSxFQUFFLElBQVk7SUFDMUQsT0FBTyxDQUFDLEdBQU0sRUFBRSxLQUEwQixFQUFFLEVBQUU7UUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFJLEdBQXVCO0lBQ2pELE9BQU8sQ0FBQyxHQUFNLEVBQUUsRUFBRTtRQUNoQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFrQkQ7SUFqQnJCLGFBQWEsR0FBa0MsU0FBUyxDQUFDO0lBQ3pELFdBQVcsQ0FBVTtJQUNyQixXQUFXLENBQVU7SUFDckIsVUFBVSxDQUErQjtJQUN6QyxXQUFXLENBQXFDO0lBQ2hELFlBQVksQ0FBd0Q7SUFDcEUsUUFBUSxDQUFpQztJQUN6QyxPQUFPLENBQWdDO0lBQ3ZDLFFBQVEsQ0FBVztJQUNuQixFQUFFLENBQVM7SUFDWCx3REFBd0Q7SUFDeEQsTUFBTSxDQUFZO0lBQ2xCLFNBQVMsQ0FBa0I7SUFDM0IsS0FBSyxDQUFxQjtJQUMxQixlQUFlLEdBQXlCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQztJQUNqRSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBRWYsWUFBcUIsYUFBa0M7UUFBbEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ3JELElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFFaEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQzVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUN2RCxDQUFDLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDekIsTUFBTSxLQUFLLEdBQUcsQ0FBRSxHQUFpQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ3ZELENBQUMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFDbEQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1FBQ3BELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUM5QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsS0FBSyxRQUFRO2dCQUMvQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLElBQUksRUFBRTtnQkFDM0MsQ0FBQyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUNhLENBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUM3QixFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQ1EsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ25DLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDOUMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7UUFDekgsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUM7UUFDNUQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFDbkIsR0FBRyxDQUFJO0lBQ1AsS0FBSyxDQUFVO0lBQ2YsRUFBRSxDQUFrQjtJQUNwQixRQUFRLENBQVU7SUFDbEIsTUFBTSxDQUFXO0lBQ2pCLE9BQU8sQ0FBVztJQUNsQixRQUFRLENBQVU7SUFDbEIsR0FBRyxDQUFRO0lBQ1gsV0FBVyxDQUFxQjtJQUVoQyxZQUNFLEdBQU0sRUFDTixRQUFpQixFQUNqQixRQUFpQixFQUNqQixNQUFnQixFQUNoQixLQUFjLEVBQ2QsR0FBVSxFQUNWLFdBQW9CLEVBQ3BCLFNBQWtCO1FBRWxCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEVBQUUsR0FBSSxHQUFpQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBSSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQUVELFNBQVMsaUJBQWlCLENBQUksR0FBTSxFQUFFLFNBQWtCLEVBQUUsV0FBb0I7SUFDNUUsT0FBTyxXQUFXLElBQUksU0FBUztRQUM3QixDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsR0FBSSxHQUFpQyxDQUFDLFNBQVMsQ0FBQztRQUNuRSxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGlvblRva2VuLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExhenlMb2FkRXZlbnQsIFNvcnQsIFNvcnREaXJlY3Rpb25UeXBlIH0gZnJvbSAnQHZlcmlzb2Z0L2NvcmUnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEZpZWxkQWxpZ25UeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IFRBQkxFX0NPTVBPTkVOVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUYWJsZUNvcmU8YW55Pj4oXG4gICdUYWJWSWV3Q29tcG9uZW50VG9rZW4nXG4pO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfQ09MVU1OX1BST1ZJREVSID0gbmV3IEluamVjdGlvblRva2VuKFxuICAnVEFCTEVfQ09MVU1OX1BST1ZJREVSJ1xuKTtcblxuZXhwb3J0IGVudW0gVGFibGVTZWxlY3Rpb25Nb2RlIHtcbiAgc2luZ2xlID0gJ3NpbmdsZScsXG4gIG11bHRpcGxlID0gJ211bHRpcGxlJyxcbn1cblxuZXhwb3J0IGVudW0gVGFibGVCdXR0b25TZXZlcml0eSB7XG4gIHN1Y2Nlc3MgPSAnc3VjY2VzcycsXG4gIGluZm8gPSAnaW5mbycsXG4gIHdhcm5pbmcgPSAnd2FybmluZycsXG4gIGRhbmdlciA9ICdkYW5nZXInLFxuICBoZWxwID0gJ2hlbHAnLFxuICBwcmltYXJ5ID0gJ3ByaW1hcnknLFxuICBzZWNvbmRhcnkgPSAnc2Vjb25kYXJ5JyxcbiAgY29udHJhc3QgPSAnY29udHJhc3QnLFxufVxuXG5leHBvcnQgZW51bSBDb2x1bW5WaXNpYmlsaXR5IHtcbiAgdmlzaWJsZSA9ICd2aXNpYmxlJyxcbiAgaGlkZGVuID0gJ2hpZGRlbicsXG4gIGRlZmF1bHQgPSAnZGVmYXVsdCcsXG59XG5cbmV4cG9ydCB0eXBlIFRhYmxlU2VsZWN0aW9uTW9kZVR5cGUgPSBrZXlvZiB0eXBlb2YgVGFibGVTZWxlY3Rpb25Nb2RlO1xuZXhwb3J0IHR5cGUgVGFibGVCdXR0b25TZXZlcml0eVR5cGUgPSBrZXlvZiB0eXBlb2YgVGFibGVCdXR0b25TZXZlcml0eTtcbmV4cG9ydCB0eXBlIENvbHVtblZpc2liaWxpdHlUeXBlID0ga2V5b2YgdHlwZW9mIENvbHVtblZpc2liaWxpdHk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb3JlPFQ+IHtcbiAgc29ydGVyczogU29ydFtdO1xuICBjb2x1bW5zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W107XG4gIGRhdGE6IFRbXTtcbiAgdG90YWw6IG51bWJlcjtcbiAgZmlsdGVyOiBQYXJ0aWFsPFQ+IHwgdW5kZWZpbmVkO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBzY3JvbGxhYmxlOiBib29sZWFuO1xuICBwYWdlU2l6ZTogbnVtYmVyO1xuICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICBzaG93UGFnaW5hdG9yOiBib29sZWFuO1xuICBzb3J0TXVsdGlwbGU6IGJvb2xlYW47XG4gIGxhenk6IGJvb2xlYW47XG4gIHNlbGVjdGlvbjogVFtdO1xuICBzZWxlY3Rpb25Nb2RlOiBUYWJsZVNlbGVjdGlvbk1vZGVUeXBlIHwgdW5kZWZpbmVkO1xuICBzaG93UGFnZVNpemVQaWNrZXI6IGJvb2xlYW47XG4gIGVudGl0eUtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxUW10+O1xuICBsYXp5TG9hZDogRXZlbnRFbWl0dGVyPExhenlMb2FkRXZlbnQ+O1xuICBtYXhpbXVtQ29sdW1uTGVuZ3RoOiBudW1iZXI7XG4gIGRpc2FibGVDdXN0b21DbGlja3M6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTaWduYWwge1xuICBuYW1lOiBzdHJpbmcsXG4gIHN5bWJvbDogc3ltYm9sXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQ29sdW1uc0RlZmluaXRpb248VD4ge1xuICBzZXZlcml0eT86IFRhYmxlQnV0dG9uU2V2ZXJpdHk7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICByb3VuZGVkPzogYm9vbGVhbjtcbiAgb3V0bGluZWQ/OiBib29sZWFuO1xuICByYWlzZWQ/OiBib29sZWFuO1xuICBiYWRnZT86IHN0cmluZztcbiAgdmlzaWJsZT86IChyb3c6IFQpID0+IGJvb2xlYW47XG4gIHJvdXRlckxpbms/OiAocm93OiBUKSA9PiBzdHJpbmc7XG4gIHF1ZXJ5UGFyYW1zPzogUGFyYW1zO1xuICBkaXNhYmxlZD86IGJvb2xlYW4gfCAoKHJvdzogVCkgPT4gYm9vbGVhbik7XG4gIG9uQ2xpY2s/OiAocm93OiBULCBldmVudD86IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uUHJvdmlkZXI8VD4ge1xuICBnZXREZWZpbml0aW9uKCk6IENvbHVtbkRlZmluaXRpb248VD47XG4gIGluZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uRGVmaW5pdGlvbjxULCBfS0VZID0ga2V5b2YgVD4ge1xuICBpZDogc3RyaW5nO1xuICB2YWx1ZT86IChyb3c6IFQsIGluZGV4PzogbnVtYmVyKSA9PiBzdHJpbmc7XG4gIGhlYWRlck5hbWU/OiAoKGNvbHVtbklkOiBzdHJpbmcsIGluZGV4PzogbnVtYmVyKSA9PiBzdHJpbmcpIHwgc3RyaW5nO1xuICBpY29uPzogc3RyaW5nIHwgKChyb3c/OiBUIHwgdW5kZWZpbmVkKSA9PiBzdHJpbmcpO1xuICB0eXBlPzogc3RyaW5nO1xuICBzb3J0YWJsZT86IGJvb2xlYW47XG4gIGZvcm1hdD86IChyb3c6IFQpID0+IHN0cmluZ1xuICByb3V0ZXJMaW5rPzogKHJvdzogVCkgPT4gc3RyaW5nIHwgc3RyaW5nO1xuICBxdWVyeVBhcmFtcz86IFBhcmFtcztcbiAgY29sdW1uQ2xhc3M/OiBzdHJpbmc7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFQgfT47XG4gIGFjdGlvbnM/OiBBY3Rpb25Db2x1bW5zRGVmaW5pdGlvbjxUPltdO1xuICB0ZXh0QWxpZ24/OiBGaWVsZEFsaWduVHlwZTtcbiAgd2lkdGg/OiBzdHJpbmcgfCBudW1iZXI7XG4gIGZvcmNlVmlzaWJpbGl0eT86IENvbHVtblZpc2liaWxpdHlUeXBlO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExpbmtSZW5kZXJlcjxUPih0ZXh0OiBzdHJpbmcsIGhyZWY6IHN0cmluZykge1xuICByZXR1cm4gKHJvdzogVCwgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCkgPT4ge1xuICAgIHJldHVybiAnPGEgaHJlZj1cIicgKyBocmVmICsgJ1wiPicgKyB0ZXh0ICsgJzwvYT4nO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcm91dGVyUmVuZGVyZXI8VD4obGluazogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpIHtcbiAgcmV0dXJuIChyb3c6IFQsIGluZGV4PzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgcmV0dXJuIHsgdGV4dDogdGV4dCwgbGluazogbGluayB9O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVuZGVyZXI8VD4oZm5jOiAocm93OiBUKSA9PiBzdHJpbmcpIHtcbiAgcmV0dXJuIChyb3c6IFQpID0+IHtcbiAgICByZXR1cm4gZm5jKHJvdyk7XG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5Nb2RlbDxUPiB7XG4gIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb25UeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBjb2x1bW5DbGFzcz86IHN0cmluZztcbiAgcXVlcnlQYXJhbXM/OiBQYXJhbXM7XG4gIHJvdXRlckxpbms/OiAocm93OiBUKSA9PiBzdHJpbmcgfCBzdHJpbmc7XG4gIHZhbHVlR2V0dGVyITogKHJvdzogVCwgaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nO1xuICBoZWFkZXJHZXR0ZXIhOiAoY29sdW1uSWQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nIHwgc3RyaW5nO1xuICB0ZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBUIH0+O1xuICBhY3Rpb25zPzogQWN0aW9uQ29sdW1uc0RlZmluaXRpb248VD5bXTtcbiAgc29ydGFibGU/OiBib29sZWFuO1xuICBpZDogc3RyaW5nO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICBmb3JtYXQhOiBGdW5jdGlvbjtcbiAgdGV4dEFsaWduPzogRmllbGRBbGlnblR5cGU7XG4gIHdpZHRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZvcmNlVmlzaWJpbGl0eTogQ29sdW1uVmlzaWJpbGl0eVR5cGUgPSBDb2x1bW5WaXNpYmlsaXR5LmRlZmF1bHQ7XG4gIHZpc2libGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IENvbHVtbkRlZmluaXRpb248VD4pIHtcbiAgICB0aGlzLmlkID0gdGhpcy5jb25maWd1cmF0aW9uLmlkO1xuXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5mb3JtYXQpIHtcbiAgICAgIHRoaXMuZm9ybWF0ID0gdGhpcy5jb25maWd1cmF0aW9uLmZvcm1hdDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLnZhbHVlKSB7XG4gICAgICB0aGlzLnZhbHVlR2V0dGVyID0gKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbmZpZ3VyYXRpb24udmFsdWU/Lihyb3csIGluZGV4KSA/PyAnLSc7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdCA/IHRoaXMuZm9ybWF0KHZhbHVlLCByb3cpIDogdmFsdWU7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlR2V0dGVyID0gKHJvdykgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9ICgocm93IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pPy5bdGhpcy5jb25maWd1cmF0aW9uLmlkXSkgPz8gJyc7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdCA/IHRoaXMuZm9ybWF0KHZhbHVlLCByb3cpIDogdmFsdWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uYWN0aW9ucykge1xuICAgICAgdGhpcy5hY3Rpb25zID0gdGhpcy5jb25maWd1cmF0aW9uLmFjdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5yb3V0ZXJMaW5rKSB7XG4gICAgICB0aGlzLnJvdXRlckxpbmsgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucm91dGVyTGluaztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmNvbHVtbkNsYXNzKSB7XG4gICAgICB0aGlzLmNvbHVtbkNsYXNzID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbHVtbkNsYXNzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24udGVtcGxhdGUpIHtcbiAgICAgIHRoaXMudGVtcGxhdGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24udGVtcGxhdGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5oZWFkZXJOYW1lKSB7XG4gICAgICB0aGlzLmhlYWRlckdldHRlciA9IChcbiAgICAgICAgdHlwZW9mIHRoaXMuY29uZmlndXJhdGlvbi5oZWFkZXJOYW1lID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gKCkgPT4gdGhpcy5jb25maWd1cmF0aW9uLmhlYWRlck5hbWUgPz8gJydcbiAgICAgICAgICA6IChjb2x1bW5JZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAoPChjb2x1bW5JZDogc3RyaW5nLCBpbmRleD86IG51bWJlcikgPT4gc3RyaW5nPihcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uaGVhZGVyTmFtZVxuICAgICAgICAgICAgICApKT8uKGNvbHVtbklkLCBpbmRleCkgPz8gdGhpcy5pZFxuICAgICAgKSBhcyAoY29sdW1uSWQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlYWRlckdldHRlciA9ICgpID0+IFwiXCI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeVBhcmFtcykge1xuICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeVBhcmFtcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3V0ZXJMaW5rKSB7XG4gICAgICB0aGlzLmNvbHVtbkNsYXNzICs9ICcgJyArICdsaW5rJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLnNvcnRhYmxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc29ydGFibGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc29ydGFibGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc29ydGFibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24ud2lkdGgpe1xuICAgICAgdGhpcy53aWR0aCA9IHR5cGVvZiB0aGlzLmNvbmZpZ3VyYXRpb24ud2lkdGggPT09IFwibnVtYmVyXCIgPyB0aGlzLmNvbmZpZ3VyYXRpb24ud2lkdGggKyAncHgnIDogdGhpcy5jb25maWd1cmF0aW9uLndpZHRoO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24udGV4dEFsaWduICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudGV4dEFsaWduID0gdGhpcy5jb25maWd1cmF0aW9uLnRleHRBbGlnbjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmZvcmNlVmlzaWJpbGl0eSkge1xuICAgICAgdGhpcy5mb3JjZVZpc2liaWxpdHkgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZm9yY2VWaXNpYmlsaXR5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnZpc2libGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJvd01vZGVsPFQ+IHtcbiAgcm93OiBUO1xuICBpbmRleD86IG51bWJlcjtcbiAgaWQ6IG51bWJlciB8IHN0cmluZztcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIG1hcmtlZD86IGJvb2xlYW47XG4gIGZvY3VzZWQ/OiBib29sZWFuO1xuICBleHBhbmRlZDogYm9vbGVhbjtcbiAgZm5jPzogdm9pZDtcbiAgY3VzdG9tUm91dGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByb3c6IFQsXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gICAgZXhwYW5kZWQ6IGJvb2xlYW4sXG4gICAgbWFya2VkPzogYm9vbGVhbixcbiAgICBpbmRleD86IG51bWJlcixcbiAgICBmbmM/OiB2b2lkLFxuICAgIGN1c3RvbVJvdXRlPzogc3RyaW5nLFxuICAgIGVudGl0eUtleT86IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLnJvdyA9IHJvdztcbiAgICB0aGlzLmlkID0gKHJvdyBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KVsnaWQnXSA/PyB2NCgpO1xuICAgIHRoaXMuaW5kZXggPSBpbmRleDtcbiAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgdGhpcy5leHBhbmRlZCA9IGV4cGFuZGVkO1xuICAgIHRoaXMubWFya2VkID0gbWFya2VkO1xuICAgIHRoaXMuZm5jID0gZm5jO1xuICAgIHRoaXMuY3VzdG9tUm91dGUgPSBjcmVhdGVDdXN0b21Sb3V0ZTxUPihyb3csIGVudGl0eUtleSwgY3VzdG9tUm91dGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUN1c3RvbVJvdXRlPFQ+KHJvdzogVCwgZW50aXR5S2V5Pzogc3RyaW5nLCBjdXN0b21Sb3V0ZT86IHN0cmluZykge1xuICByZXR1cm4gY3VzdG9tUm91dGUgJiYgZW50aXR5S2V5XG4gICAgPyBgJHtjdXN0b21Sb3V0ZX0vYCArIChyb3cgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSlbZW50aXR5S2V5XVxuICAgIDogdW5kZWZpbmVkO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './table-filter.model';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS1maWx0ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGFibGUtZmlsdGVyLm1vZGVsJzsiXX0=
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const TABLE_FILTER_COMPONENT_TOKEN = new InjectionToken('TableFilterComponentToken');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtZmlsdGVyL3RhYmxlLWZpbHRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUMxRCwyQkFBMkIsQ0FDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRm9ybURpcmVjdGl2ZUNvcmUgfSBmcm9tICcuLi9iYXNlLWZvcm0nO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfRklMVEVSX0NPTVBPTkVOVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUYWJsZUZpbHRlckNvcmU8YW55Pj4oXG4gICAgJ1RhYmxlRmlsdGVyQ29tcG9uZW50VG9rZW4nXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckRlZmluaXRpb24ge1xuICAgIG9wdGlvbkxhYmVsOiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgZmlsdGVyVHlwZT86ICdkcm9wZG93bicgfCAnY2hlY2tib3gnIHwgJ2NhbGVuZGFyJyB8ICdtdWx0aXNlbGVjdCc7XG4gICAgaW5pdGlhbFZhbHVlPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlRmlsdGVyQ29yZTxUPiBleHRlbmRzIEJhc2VGb3JtRGlyZWN0aXZlQ29yZTxUPiB7XG4gICAgZmlsdGVyRGVmaW5pdGlvbnM6IEZpbHRlckRlZmluaXRpb25bXTtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGhpZGVTZWFyY2g/OiBib29sZWFuO1xuICAgIGRlYm91bmNlVGltZT86IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './textarea.model';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy90ZXh0YXJlYS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90ZXh0YXJlYS5tb2RlbCc7Il19
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const TEXTAREA_COMPONENT_TOKEN = new InjectionToken('TextareaComponentToken');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy90ZXh0YXJlYS90ZXh0YXJlYS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsQ0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUNvcmUgfSBmcm9tICcuLi9iYXNlLWZvcm0nO1xuXG5leHBvcnQgY29uc3QgVEVYVEFSRUFfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFRleHRhcmVhQ29yZT4oXG4gICAgJ1RleHRhcmVhQ29tcG9uZW50VG9rZW4nXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRhcmVhQ29yZSBleHRlbmRzIEJhc2VGb3JtQ29yZSB7XG4gICAgcm93czogbnVtYmVyO1xuICAgIGNvbHM6IG51bWJlcjtcbiAgICBhdXRvUmVzaXplOiBib29sZWFuO1xuICAgIGZsb2F0TGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './textfield.model';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy90ZXh0ZmllbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdGV4dGZpZWxkLm1vZGVsJzsiXX0=
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const TEXTFIELD_COMPONENT_TOKEN = new InjectionToken('TextfieldComponentToken');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvdGV4dGZpZWxkL3RleHRmaWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUN2RCx5QkFBeUIsQ0FDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFNpemVUeXBlLCBGaWVsZFR5cGVUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IEJhc2VGb3JtQ29yZSB9IGZyb20gJy4uL2Jhc2UtZm9ybSc7XG5cbmV4cG9ydCBjb25zdCBURVhURklFTERfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFRleHRmaWVsZENvcmU+KFxuICAgICdUZXh0ZmllbGRDb21wb25lbnRUb2tlbidcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dGZpZWxkQ29yZSBleHRlbmRzIEJhc2VGb3JtQ29yZSB7XG4gICAgc2l6ZTogRmllbGRTaXplVHlwZSB8IHVuZGVmaW5lZDtcbiAgICB0eXBlOiBGaWVsZFR5cGVUeXBlO1xuICAgIGZsb2F0TGFiZWw6IGJvb2xlYW47XG59Il19
@@ -0,0 +1,2 @@
1
+ export * from './tristatecheckbox.model';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy90cmlzdGF0ZWNoZWNrYm94L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RyaXN0YXRlY2hlY2tib3gubW9kZWwnIl19
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const TRISTATE_CHECKBOX_COMPONENT_TOKEN = new InjectionToken('TristateCheckboxComponentToken');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpc3RhdGVjaGVja2JveC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3RyaXN0YXRlY2hlY2tib3gvdHJpc3RhdGVjaGVja2JveC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLElBQUksY0FBYyxDQUMvRCxnQ0FBZ0MsQ0FDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUNvcmUgfSBmcm9tICcuLi9iYXNlLWZvcm0nO1xuXG5leHBvcnQgY29uc3QgVFJJU1RBVEVfQ0hFQ0tCT1hfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFRyaXN0YXRlQ2hlY2tib3hDb3JlPihcbiAgICAnVHJpc3RhdGVDaGVja2JveENvbXBvbmVudFRva2VuJ1xuKTtcblxuZXhwb3J0IHR5cGUgVHJpc3RhdGVDaGVja2JveENvcmUgPSBCYXNlRm9ybUNvcmVcbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Directive } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class UnsubscribeComponent {
5
+ destroyed$ = new Subject();
6
+ ngOnDestroy() {
7
+ this.destroyed$.next();
8
+ this.destroyed$.complete();
9
+ }
10
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: UnsubscribeComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
11
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: UnsubscribeComponent, ngImport: i0 });
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: UnsubscribeComponent, decorators: [{
14
+ type: Directive
15
+ }] });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zdWJzY3JpYmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvdW5zdWJzY3JpYmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHL0IsTUFBTSxPQUFnQixvQkFBb0I7SUFDeEMsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFakMsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO3VHQU5tQixvQkFBb0I7MkZBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFEekMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVuc3Vic2NyaWJlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,175 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { ChangeDetectorRef, Directive, inject, Input, } from '@angular/core';
3
+ import { BASE_URL_PATH, convertDatasource, DEFAULT_SEARCH_LIMIT, normalizeRequest, } from '@verisoft/core';
4
+ import { BehaviorSubject, catchError, debounceTime, filter, map, of, switchMap, takeUntil, tap, } from 'rxjs';
5
+ import { DEFAULT_DEBOUNCE_TIME, setComponentProperties, setDataToArray, } from '../common';
6
+ import { DROPDOWN_COMPONENT_TOKEN, GENERIC_FIELD_COMPONENT_TOKEN, MULTISELECT_COMPONENT_TOKEN, UnsubscribeComponent, } from '../components';
7
+ import * as i0 from "@angular/core";
8
+ export class DatasourceDirective extends UnsubscribeComponent {
9
+ datasource;
10
+ autoBind = true;
11
+ loadingText = '... loading ...';
12
+ filterField = 'fulltext';
13
+ transformFn;
14
+ extraFilter;
15
+ get activeComponent() {
16
+ return (this.dropdownComponent ??
17
+ this.multiSelectComponent ??
18
+ this.genericField);
19
+ }
20
+ httpClient = inject(HttpClient);
21
+ baseUrl = inject(BASE_URL_PATH);
22
+ changeDetectorRef = inject(ChangeDetectorRef);
23
+ isAllDataLoaded = false;
24
+ parameters$ = new BehaviorSubject({});
25
+ lastParameter = {};
26
+ dropdownComponent = inject(DROPDOWN_COMPONENT_TOKEN, { optional: true });
27
+ multiSelectComponent = inject(MULTISELECT_COMPONENT_TOKEN, {
28
+ optional: true,
29
+ });
30
+ genericField = inject(GENERIC_FIELD_COMPONENT_TOKEN, { optional: true });
31
+ dataSourceService;
32
+ loadingPlaceholderItem = {};
33
+ ngOnInit() {
34
+ this.activeComponent.showed
35
+ .pipe(takeUntil(this.destroyed$))
36
+ .subscribe(() => {
37
+ if (!this.autoBind &&
38
+ !this.activeComponent.options &&
39
+ !this.activeComponent.loading) {
40
+ this.parameters$.next({});
41
+ }
42
+ });
43
+ this.activeComponent.lazyLoad
44
+ .pipe(takeUntil(this.destroyed$))
45
+ .subscribe((value) => {
46
+ this.parameters$.next({ offset: value?.offset, limit: value?.limit });
47
+ });
48
+ this.activeComponent.filtered
49
+ .pipe(takeUntil(this.destroyed$))
50
+ .subscribe((value) => {
51
+ const property = this.filterField ?? this.activeComponent.optionLabel;
52
+ if (property) {
53
+ this.parameters$.next({
54
+ offset: 0,
55
+ filter: {
56
+ [property]: value.filter ? value.filter : undefined,
57
+ ...(this.extraFilter ?? {})
58
+ },
59
+ useNewData: true,
60
+ });
61
+ }
62
+ });
63
+ this.parameters$
64
+ .pipe(takeUntil(this.destroyed$), filter(request => !this.isDataForRequestLoaded(request)), map((request) => {
65
+ const extendedParams = normalizeRequest({ ...this.lastParameter, ...request }, DEFAULT_SEARCH_LIMIT);
66
+ extendedParams.useNewData = request.useNewData ?? false;
67
+ return extendedParams;
68
+ }), tap((request) => {
69
+ this.lastParameter = request;
70
+ }), debounceTime(DEFAULT_DEBOUNCE_TIME), tap(() => {
71
+ this.changeComponent(this.activeComponent, {
72
+ loading: true,
73
+ });
74
+ }), switchMap((request) => this.dataSourceService
75
+ ? this.dataSourceService(request).pipe(map((response) => ({ request, response })))
76
+ : of({
77
+ request,
78
+ response: {
79
+ data: [],
80
+ total: 0,
81
+ limit: request.limit,
82
+ offset: request.offset,
83
+ },
84
+ })), catchError((request) => {
85
+ this.changeComponent(this.activeComponent, {
86
+ loading: false,
87
+ });
88
+ return of({
89
+ request: request,
90
+ response: {
91
+ data: [],
92
+ total: 0,
93
+ limit: request.limit,
94
+ offset: request.offset,
95
+ },
96
+ });
97
+ }))
98
+ .subscribe(({ request, response }) => this.setDataToControl(request, response));
99
+ }
100
+ ngOnChanges(changes) {
101
+ if (changes['datasource']) {
102
+ this.dataSourceService = convertDatasource(this.datasource, this.baseUrl, this.httpClient);
103
+ if (this.autoBind) {
104
+ this.parameters$.next({ offset: 0 });
105
+ }
106
+ }
107
+ }
108
+ isDataForRequestLoaded(request) {
109
+ if (request.useNewData) {
110
+ return false;
111
+ }
112
+ const offset = request.offset ?? 0;
113
+ const limit = request.limit ?? DEFAULT_SEARCH_LIMIT;
114
+ const options = this.activeComponent.options;
115
+ if (!options) {
116
+ return false;
117
+ }
118
+ if (options.length < offset + limit) {
119
+ return false;
120
+ }
121
+ const allItemsFilled = options.slice(offset, offset + limit).every(item => item !== undefined && item != this.loadingPlaceholderItem);
122
+ return allItemsFilled;
123
+ }
124
+ setDataToControl(request, result) {
125
+ this.isAllDataLoaded = result.total <= result.data.length;
126
+ const data = result.data;
127
+ const total = result.total;
128
+ const offset = request.offset;
129
+ const transferedData = this.transformFn
130
+ ? data.map((x) => this.transformFn?.(x))
131
+ : data;
132
+ if (this.activeComponent.optionLabel) {
133
+ this.loadingPlaceholderItem[this.activeComponent.optionLabel] =
134
+ this.loadingText;
135
+ }
136
+ if (this.activeComponent.optionValue) {
137
+ this.loadingPlaceholderItem[this.activeComponent.optionValue] = -1;
138
+ }
139
+ const options = request.useNewData ? undefined : this.activeComponent.options;
140
+ const newOptions = setDataToArray(options, transferedData, offset, total, this.loadingPlaceholderItem);
141
+ this.changeComponent(this.activeComponent, {
142
+ options: newOptions,
143
+ loading: false,
144
+ lazy: !this.isAllDataLoaded,
145
+ });
146
+ }
147
+ changeComponent(component, value) {
148
+ setComponentProperties(component, value);
149
+ this.changeDetectorRef.detectChanges();
150
+ }
151
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DatasourceDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
152
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: DatasourceDirective, isStandalone: true, selector: "v-dropdown[useDatasource], v-multiselect[useDatasource], v-generic-field[useDatasource]", inputs: { datasource: "datasource", autoBind: "autoBind", loadingText: "loadingText", filterField: "filterField", transformFn: "transformFn", extraFilter: "extraFilter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
153
+ }
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DatasourceDirective, decorators: [{
155
+ type: Directive,
156
+ args: [{
157
+ selector:
158
+ // eslint-disable-next-line @angular-eslint/directive-selector
159
+ 'v-dropdown[useDatasource], v-multiselect[useDatasource], v-generic-field[useDatasource]',
160
+ standalone: true,
161
+ }]
162
+ }], propDecorators: { datasource: [{
163
+ type: Input
164
+ }], autoBind: [{
165
+ type: Input
166
+ }], loadingText: [{
167
+ type: Input
168
+ }], filterField: [{
169
+ type: Input
170
+ }], transformFn: [{
171
+ type: Input
172
+ }], extraFilter: [{
173
+ type: Input
174
+ }] } });
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9kYXRhc291cmNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUdqQixvQkFBb0IsRUFHcEIsZ0JBQWdCLEdBR2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixHQUFHLEVBQ0gsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUVMLHFCQUFxQixFQUVyQixzQkFBc0IsRUFDdEIsY0FBYyxHQUNmLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCx3QkFBd0IsRUFFeEIsNkJBQTZCLEVBRTdCLDJCQUEyQixFQUUzQixvQkFBb0IsR0FDckIsTUFBTSxlQUFlLENBQUM7O0FBUXZCLE1BQU0sT0FBTyxtQkFDWCxTQUFRLG9CQUFvQjtJQUduQixVQUFVLENBQXFCO0lBRS9CLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFFaEIsV0FBVyxHQUFHLGlCQUFpQixDQUFDO0lBRWhDLFdBQVcsR0FBdUIsVUFBVSxDQUFDO0lBRTdDLFdBQVcsQ0FBd0I7SUFFbkMsV0FBVyxDQUFPO0lBRTNCLElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUM1QixJQUFJLENBQUMsb0JBQW9CO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQWdDLENBQUM7SUFDdEQsQ0FBQztJQUVPLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFaEMsT0FBTyxHQUFXLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUV4QyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU5QyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBRXhCLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBa0MsRUFBRSxDQUFDLENBQUM7SUFFdkUsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUVuQixpQkFBaUIsR0FBRyxNQUFNLENBQ2hDLHdCQUF3QixFQUN4QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FDbkIsQ0FBQztJQUVNLG9CQUFvQixHQUFHLE1BQU0sQ0FDbkMsMkJBQTJCLEVBQzNCO1FBQ0UsUUFBUSxFQUFFLElBQUk7S0FDZixDQUNGLENBQUM7SUFFTSxZQUFZLEdBQUcsTUFBTSxDQUMzQiw2QkFBNkIsRUFDN0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQ25CLENBQUM7SUFFTSxpQkFBaUIsQ0FBNkI7SUFFOUMsc0JBQXNCLEdBQStCLEVBQUUsQ0FBQztJQUVoRSxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNO2FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2hDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUNFLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQ2QsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQzdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQzdCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRO2FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2hDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUTthQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNoQyxTQUFTLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUU7WUFDaEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQztZQUN0RSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNwQixNQUFNLEVBQUUsQ0FBQztvQkFDVCxNQUFNLEVBQUU7d0JBQ04sQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTO3dCQUNuRCxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7cUJBQ2Q7b0JBQ2YsVUFBVSxFQUFFLElBQUk7aUJBQ2pCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxXQUFXO2FBQ2IsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQzFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ3hELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2QsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxPQUFPLEVBQUUsRUFBRSxvQkFBb0IsQ0FBMkIsQ0FBQztZQUMvSCxjQUFjLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDO1lBQ3hELE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUM7UUFDL0IsQ0FBQyxDQUFDLEVBQ0YsWUFBWSxDQUFDLHFCQUFxQixDQUFDLEVBQ25DLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3pDLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQTJCLENBQUMsQ0FBQyxJQUFJLENBQ3RELEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQzNDO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDRCxPQUFPO2dCQUNQLFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsRUFBUztvQkFDZixLQUFLLEVBQUUsQ0FBQztvQkFDUixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDWjthQUNiLENBQUMsQ0FDUCxFQUNELFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDekMsT0FBTyxFQUFFLEtBQUs7YUFDZixDQUFDLENBQUM7WUFDSCxPQUFPLEVBQUUsQ0FBQztnQkFDUixPQUFPLEVBQUUsT0FBaUM7Z0JBQzFDLFFBQVEsRUFBRTtvQkFDUixJQUFJLEVBQUUsRUFBUztvQkFDZixLQUFLLEVBQUUsQ0FBQztvQkFDUixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7b0JBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtpQkFDWjthQUNiLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUN6QyxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FDeEMsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7WUFFRixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxPQUF3QztRQUNyRSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLG9CQUFvQixDQUFDO1FBQ3BELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7WUFDcEMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RJLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUErQixFQUFFLE1BQWU7UUFDdkUsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzFELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMzQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzlCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ3JDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVULElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7Z0JBQzNELElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUM5RSxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQy9CLE9BQU8sRUFDUCxjQUFjLEVBQ2QsTUFBTSxFQUNOLEtBQUssRUFDTCxJQUFJLENBQUMsc0JBQXNCLENBQzVCLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDekMsT0FBTyxFQUFFLFVBQWlCO1lBQzFCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWU7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FDckIsU0FBc0MsRUFDdEMsS0FBMkM7UUFFM0Msc0JBQXNCLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QyxDQUFDO3VHQXpOVSxtQkFBbUI7MkZBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFOL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRO29CQUNOLDhEQUE4RDtvQkFDOUQseUZBQXlGO29CQUMzRixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBS1UsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQkFTRV9VUkxfUEFUSCxcbiAgY29udmVydERhdGFzb3VyY2UsXG4gIERhdGFTb3VyY2VGdW5jdGlvblR5cGUsXG4gIERhdGFzb3VyY2VUeXBlLFxuICBERUZBVUxUX1NFQVJDSF9MSU1JVCxcbiAgRmlsdGVyRXZlbnQsXG4gIExhenlMb2FkRXZlbnQsXG4gIG5vcm1hbGl6ZVJlcXVlc3QsXG4gIFBhZ2UsXG4gIFJlcXVlc3RQYXJhbXMsXG59IGZyb20gJ0B2ZXJpc29mdC9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgZGVib3VuY2VUaW1lLFxuICBmaWx0ZXIsXG4gIG1hcCxcbiAgb2YsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRGF0YVNvdXJjZUNvbXBvbmVudE1vZGVsLFxuICBERUZBVUxUX0RFQk9VTkNFX1RJTUUsXG4gIEV4dGVuZGVkUmVxdWVzdFR5cGUsXG4gIHNldENvbXBvbmVudFByb3BlcnRpZXMsXG4gIHNldERhdGFUb0FycmF5LFxufSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgRFJPUERPV05fQ09NUE9ORU5UX1RPS0VOLFxuICBEcm9wZG93bkNvcmUsXG4gIEdFTkVSSUNfRklFTERfQ09NUE9ORU5UX1RPS0VOLFxuICBHZW5lcmljRmllbGRDb3JlLFxuICBNVUxUSVNFTEVDVF9DT01QT05FTlRfVE9LRU4sXG4gIE11bHRpc2VsZWN0Q29yZSxcbiAgVW5zdWJzY3JpYmVDb21wb25lbnQsXG59IGZyb20gJy4uL2NvbXBvbmVudHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICAndi1kcm9wZG93blt1c2VEYXRhc291cmNlXSwgdi1tdWx0aXNlbGVjdFt1c2VEYXRhc291cmNlXSwgdi1nZW5lcmljLWZpZWxkW3VzZURhdGFzb3VyY2VdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YXNvdXJjZURpcmVjdGl2ZTxUPlxuICBleHRlbmRzIFVuc3Vic2NyaWJlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXRcbntcbiAgQElucHV0KCkgZGF0YXNvdXJjZSE6IERhdGFzb3VyY2VUeXBlPFQ+O1xuXG4gIEBJbnB1dCgpIGF1dG9CaW5kID0gdHJ1ZTtcblxuICBASW5wdXQoKSBsb2FkaW5nVGV4dCA9ICcuLi4gbG9hZGluZyAuLi4nO1xuXG4gIEBJbnB1dCgpIGZpbHRlckZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnZnVsbHRleHQnO1xuXG4gIEBJbnB1dCgpIHRyYW5zZm9ybUZuPzogKGRhdGE6IFQpID0+IHVua25vd247XG5cbiAgQElucHV0KCkgZXh0cmFGaWx0ZXIhOiBhbnk7XG5cbiAgZ2V0IGFjdGl2ZUNvbXBvbmVudCgpOiBEYXRhU291cmNlQ29tcG9uZW50TW9kZWw8VD4ge1xuICAgIHJldHVybiAodGhpcy5kcm9wZG93bkNvbXBvbmVudCA/P1xuICAgICAgdGhpcy5tdWx0aVNlbGVjdENvbXBvbmVudCA/P1xuICAgICAgdGhpcy5nZW5lcmljRmllbGQpIGFzIERhdGFTb3VyY2VDb21wb25lbnRNb2RlbDxUPjtcbiAgfVxuXG4gIHByaXZhdGUgaHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZyA9IGluamVjdChCQVNFX1VSTF9QQVRIKTtcblxuICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBwcml2YXRlIGlzQWxsRGF0YUxvYWRlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcGFyYW1ldGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhcnRpYWw8RXh0ZW5kZWRSZXF1ZXN0VHlwZTxUPj4+KHt9KTtcblxuICBwcml2YXRlIGxhc3RQYXJhbWV0ZXIgPSB7fTtcblxuICBwcml2YXRlIGRyb3Bkb3duQ29tcG9uZW50ID0gaW5qZWN0PERyb3Bkb3duQ29yZTxUPj4oXG4gICAgRFJPUERPV05fQ09NUE9ORU5UX1RPS0VOLFxuICAgIHsgb3B0aW9uYWw6IHRydWUgfVxuICApO1xuXG4gIHByaXZhdGUgbXVsdGlTZWxlY3RDb21wb25lbnQgPSBpbmplY3Q8TXVsdGlzZWxlY3RDb3JlPFQ+PihcbiAgICBNVUxUSVNFTEVDVF9DT01QT05FTlRfVE9LRU4sXG4gICAge1xuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfVxuICApO1xuXG4gIHByaXZhdGUgZ2VuZXJpY0ZpZWxkID0gaW5qZWN0PEdlbmVyaWNGaWVsZENvcmU8VD4+KFxuICAgIEdFTkVSSUNfRklFTERfQ09NUE9ORU5UX1RPS0VOLFxuICAgIHsgb3B0aW9uYWw6IHRydWUgfVxuICApO1xuXG4gIHByaXZhdGUgZGF0YVNvdXJjZVNlcnZpY2U/OiBEYXRhU291cmNlRnVuY3Rpb25UeXBlPFQ+O1xuXG4gIHByaXZhdGUgbG9hZGluZ1BsYWNlaG9sZGVySXRlbTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0gPSB7fTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNvbXBvbmVudC5zaG93ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy5hdXRvQmluZCAmJlxuICAgICAgICAgICF0aGlzLmFjdGl2ZUNvbXBvbmVudC5vcHRpb25zICYmXG4gICAgICAgICAgIXRoaXMuYWN0aXZlQ29tcG9uZW50LmxvYWRpbmdcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzJC5uZXh0KHt9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmFjdGl2ZUNvbXBvbmVudC5sYXp5TG9hZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogTGF6eUxvYWRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMkLm5leHQoeyBvZmZzZXQ6IHZhbHVlPy5vZmZzZXQsIGxpbWl0OiB2YWx1ZT8ubGltaXQgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWN0aXZlQ29tcG9uZW50LmZpbHRlcmVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBGaWx0ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuZmlsdGVyRmllbGQgPz8gdGhpcy5hY3RpdmVDb21wb25lbnQub3B0aW9uTGFiZWw7XG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgIHRoaXMucGFyYW1ldGVycyQubmV4dCh7XG4gICAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICAgICAgW3Byb3BlcnR5XTogdmFsdWUuZmlsdGVyID8gdmFsdWUuZmlsdGVyIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAuLi4odGhpcy5leHRyYUZpbHRlciA/PyB7fSlcbiAgICAgICAgICAgIH0gYXMgUGFydGlhbDxUPixcbiAgICAgICAgICAgIHVzZU5ld0RhdGE6IHRydWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5wYXJhbWV0ZXJzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgICBmaWx0ZXIocmVxdWVzdCA9PiAhdGhpcy5pc0RhdGFGb3JSZXF1ZXN0TG9hZGVkKHJlcXVlc3QpKSxcbiAgICAgICAgbWFwKChyZXF1ZXN0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZXh0ZW5kZWRQYXJhbXMgPSBub3JtYWxpemVSZXF1ZXN0KHsgLi4udGhpcy5sYXN0UGFyYW1ldGVyLCAuLi5yZXF1ZXN0IH0sIERFRkFVTFRfU0VBUkNIX0xJTUlUKSBhcyBFeHRlbmRlZFJlcXVlc3RUeXBlPFQ+O1xuICAgICAgICAgIGV4dGVuZGVkUGFyYW1zLnVzZU5ld0RhdGEgPSByZXF1ZXN0LnVzZU5ld0RhdGEgPz8gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIGV4dGVuZGVkUGFyYW1zO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChyZXF1ZXN0KSA9PiB7XG4gICAgICAgICAgdGhpcy5sYXN0UGFyYW1ldGVyID0gcmVxdWVzdDtcbiAgICAgICAgfSksXG4gICAgICAgIGRlYm91bmNlVGltZShERUZBVUxUX0RFQk9VTkNFX1RJTUUpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbmdlQ29tcG9uZW50KHRoaXMuYWN0aXZlQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChyZXF1ZXN0KSA9PlxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2VcbiAgICAgICAgICAgID8gdGhpcy5kYXRhU291cmNlU2VydmljZShyZXF1ZXN0IGFzIFJlcXVlc3RQYXJhbXM8VD4pLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gKHsgcmVxdWVzdCwgcmVzcG9uc2UgfSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogb2Yoe1xuICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICAgICAgICAgIGRhdGE6IFtdIGFzIFRbXSxcbiAgICAgICAgICAgICAgICAgIHRvdGFsOiAwLFxuICAgICAgICAgICAgICAgICAgbGltaXQ6IHJlcXVlc3QubGltaXQsXG4gICAgICAgICAgICAgICAgICBvZmZzZXQ6IHJlcXVlc3Qub2Zmc2V0LFxuICAgICAgICAgICAgICAgIH0gYXMgUGFnZTxUPixcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgICAgY2F0Y2hFcnJvcigocmVxdWVzdCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbmdlQ29tcG9uZW50KHRoaXMuYWN0aXZlQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gb2Yoe1xuICAgICAgICAgICAgcmVxdWVzdDogcmVxdWVzdCBhcyBFeHRlbmRlZFJlcXVlc3RUeXBlPFQ+LFxuICAgICAgICAgICAgcmVzcG9uc2U6IHtcbiAgICAgICAgICAgICAgZGF0YTogW10gYXMgVFtdLFxuICAgICAgICAgICAgICB0b3RhbDogMCxcbiAgICAgICAgICAgICAgbGltaXQ6IHJlcXVlc3QubGltaXQsXG4gICAgICAgICAgICAgIG9mZnNldDogcmVxdWVzdC5vZmZzZXQsXG4gICAgICAgICAgICB9IGFzIFBhZ2U8VD4sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7IHJlcXVlc3QsIHJlc3BvbnNlIH0pID0+XG4gICAgICAgIHRoaXMuc2V0RGF0YVRvQ29udHJvbChyZXF1ZXN0LCByZXNwb25zZSlcbiAgICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGFzb3VyY2UnXSkge1xuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZSA9IGNvbnZlcnREYXRhc291cmNlKFxuICAgICAgICB0aGlzLmRhdGFzb3VyY2UsXG4gICAgICAgIHRoaXMuYmFzZVVybCxcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50XG4gICAgICApO1xuXG4gICAgICBpZiAodGhpcy5hdXRvQmluZCkge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMkLm5leHQoeyBvZmZzZXQ6IDAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0RhdGFGb3JSZXF1ZXN0TG9hZGVkKHJlcXVlc3Q6IFBhcnRpYWw8RXh0ZW5kZWRSZXF1ZXN0VHlwZTxUPj4pIHtcbiAgICBpZiAocmVxdWVzdC51c2VOZXdEYXRhKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3Qgb2Zmc2V0ID0gcmVxdWVzdC5vZmZzZXQgPz8gMDtcbiAgICBjb25zdCBsaW1pdCA9IHJlcXVlc3QubGltaXQgPz8gREVGQVVMVF9TRUFSQ0hfTElNSVQ7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWN0aXZlQ29tcG9uZW50Lm9wdGlvbnM7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoIDwgb2Zmc2V0ICsgbGltaXQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhbGxJdGVtc0ZpbGxlZCA9IG9wdGlvbnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBsaW1pdCkuZXZlcnkoaXRlbSA9PiBpdGVtICE9PSB1bmRlZmluZWQgJiYgaXRlbSAhPSB0aGlzLmxvYWRpbmdQbGFjZWhvbGRlckl0ZW0pO1xuICAgIHJldHVybiBhbGxJdGVtc0ZpbGxlZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGF0YVRvQ29udHJvbChyZXF1ZXN0OiBFeHRlbmRlZFJlcXVlc3RUeXBlPFQ+LCByZXN1bHQ6IFBhZ2U8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmlzQWxsRGF0YUxvYWRlZCA9IHJlc3VsdC50b3RhbCA8PSByZXN1bHQuZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgZGF0YSA9IHJlc3VsdC5kYXRhO1xuICAgIGNvbnN0IHRvdGFsID0gcmVzdWx0LnRvdGFsO1xuICAgIGNvbnN0IG9mZnNldCA9IHJlcXVlc3Qub2Zmc2V0O1xuICAgIGNvbnN0IHRyYW5zZmVyZWREYXRhID0gdGhpcy50cmFuc2Zvcm1GblxuICAgICAgPyBkYXRhLm1hcCgoeCkgPT4gdGhpcy50cmFuc2Zvcm1Gbj8uKHgpKVxuICAgICAgOiBkYXRhO1xuXG4gICAgaWYgKHRoaXMuYWN0aXZlQ29tcG9uZW50Lm9wdGlvbkxhYmVsKSB7XG4gICAgICB0aGlzLmxvYWRpbmdQbGFjZWhvbGRlckl0ZW1bdGhpcy5hY3RpdmVDb21wb25lbnQub3B0aW9uTGFiZWxdID1cbiAgICAgICAgdGhpcy5sb2FkaW5nVGV4dDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hY3RpdmVDb21wb25lbnQub3B0aW9uVmFsdWUpIHtcbiAgICAgIHRoaXMubG9hZGluZ1BsYWNlaG9sZGVySXRlbVt0aGlzLmFjdGl2ZUNvbXBvbmVudC5vcHRpb25WYWx1ZV0gPSAtMTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gcmVxdWVzdC51c2VOZXdEYXRhID8gdW5kZWZpbmVkIDogdGhpcy5hY3RpdmVDb21wb25lbnQub3B0aW9ucztcbiAgICBjb25zdCBuZXdPcHRpb25zID0gc2V0RGF0YVRvQXJyYXkoXG4gICAgICBvcHRpb25zLFxuICAgICAgdHJhbnNmZXJlZERhdGEsXG4gICAgICBvZmZzZXQsXG4gICAgICB0b3RhbCxcbiAgICAgIHRoaXMubG9hZGluZ1BsYWNlaG9sZGVySXRlbVxuICAgICk7XG5cbiAgICB0aGlzLmNoYW5nZUNvbXBvbmVudCh0aGlzLmFjdGl2ZUNvbXBvbmVudCwge1xuICAgICAgb3B0aW9uczogbmV3T3B0aW9ucyBhcyBUW10sXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgIGxhenk6ICF0aGlzLmlzQWxsRGF0YUxvYWRlZCxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlQ29tcG9uZW50KFxuICAgIGNvbXBvbmVudDogRGF0YVNvdXJjZUNvbXBvbmVudE1vZGVsPFQ+LFxuICAgIHZhbHVlOiBQYXJ0aWFsPERhdGFTb3VyY2VDb21wb25lbnRNb2RlbDxUPj5cbiAgKSB7XG4gICAgc2V0Q29tcG9uZW50UHJvcGVydGllcyhjb21wb25lbnQsIHZhbHVlKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,5 @@
1
+ export * from './datasource.directive';
2
+ export * from './table-datasource.directive';
3
+ export * from './shortcut.directive';
4
+ export * from './table-filter.directive';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRhc291cmNlLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtZGF0YXNvdXJjZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Nob3J0Y3V0LmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtZmlsdGVyLmRpcmVjdGl2ZSc7XHJcbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { Directive, HostListener, Input } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class ButtonShortCutDirective {
4
+ shortCutFn;
5
+ shortCutKey;
6
+ keyMap = {};
7
+ onKeyDown(event) {
8
+ this.keyMap[event.key.toLowerCase()] = true;
9
+ this.checkShortcut();
10
+ }
11
+ onKeyUp(event) {
12
+ this.keyMap[event.key.toLowerCase()] = false;
13
+ }
14
+ checkShortcut() {
15
+ if (this.shortCutKey && this.shortCutFn) {
16
+ const keys = this.shortCutKey.toLowerCase().split('+');
17
+ const isShortcutPressed = keys.every((key) => this.keyMap[key]);
18
+ if (isShortcutPressed) {
19
+ this.shortCutFn?.();
20
+ keys.forEach((key) => (this.keyMap[key] = false));
21
+ }
22
+ }
23
+ }
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ButtonShortCutDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: ButtonShortCutDirective, isStandalone: true, selector: "v-button[useShortCut]", inputs: { shortCutFn: "shortCutFn", shortCutKey: "shortCutKey" }, host: { listeners: { "document:keydown": "onKeyDown($event)", "document:keyup": "onKeyUp($event)" } }, exportAs: ["useShortCut"], ngImport: i0 });
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ButtonShortCutDirective, decorators: [{
28
+ type: Directive,
29
+ args: [{
30
+ // eslint-disable-next-line @angular-eslint/directive-selector
31
+ selector: 'v-button[useShortCut]',
32
+ exportAs: 'useShortCut',
33
+ standalone: true,
34
+ }]
35
+ }], propDecorators: { shortCutFn: [{
36
+ type: Input
37
+ }], shortCutKey: [{
38
+ type: Input
39
+ }], onKeyDown: [{
40
+ type: HostListener,
41
+ args: ['document:keydown', ['$event']]
42
+ }], onKeyUp: [{
43
+ type: HostListener,
44
+ args: ['document:keyup', ['$event']]
45
+ }] } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnRjdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvc2hvcnRjdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRN0QsTUFBTSxPQUFPLHVCQUF1QjtJQUV4QixVQUFVLENBQWM7SUFDeEIsV0FBVyxDQUFVO0lBRXRCLE1BQU0sR0FBK0IsRUFBRSxDQUFDO0lBR2hELFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxPQUFPLENBQUMsS0FBb0I7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3VHQTNCUyx1QkFBdUI7MkZBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFOckMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBR1csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPNUMsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ3YtYnV0dG9uW3VzZVNob3J0Q3V0XScsXG4gICAgZXhwb3J0QXM6ICd1c2VTaG9ydEN1dCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgfSlcbiAgZXhwb3J0IGNsYXNzIEJ1dHRvblNob3J0Q3V0RGlyZWN0aXZlXG4gIHtcbiAgICAgQElucHV0KCkgc2hvcnRDdXRGbj86ICgpID0+IHZvaWQ7XG4gICAgIEBJbnB1dCgpIHNob3J0Q3V0S2V5ITogc3RyaW5nO1xuXG4gICAgIHByaXZhdGUga2V5TWFwOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xuXG4gICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICB0aGlzLmtleU1hcFtldmVudC5rZXkudG9Mb3dlckNhc2UoKV0gPSB0cnVlO1xuICAgICAgIHRoaXMuY2hlY2tTaG9ydGN1dCgpO1xuICAgICB9XG4gICBcbiAgICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKVxuICAgICBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgdGhpcy5rZXlNYXBbZXZlbnQua2V5LnRvTG93ZXJDYXNlKCldID0gZmFsc2U7XG4gICAgIH1cblxuICAgICBwcml2YXRlIGNoZWNrU2hvcnRjdXQoKSB7XG4gICAgICAgaWYgKHRoaXMuc2hvcnRDdXRLZXkgJiYgdGhpcy5zaG9ydEN1dEZuKSB7XG4gICAgICAgICBjb25zdCBrZXlzID0gdGhpcy5zaG9ydEN1dEtleS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcrJyk7XG4gICAgICAgICBjb25zdCBpc1Nob3J0Y3V0UHJlc3NlZCA9IGtleXMuZXZlcnkoKGtleSkgPT4gdGhpcy5rZXlNYXBba2V5XSk7ICAgXG4gICAgICAgICBpZiAoaXNTaG9ydGN1dFByZXNzZWQpIHtcbiAgICAgICAgICAgdGhpcy5zaG9ydEN1dEZuPy4oKTtcbiAgICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+ICh0aGlzLmtleU1hcFtrZXldID0gZmFsc2UpKTtcbiAgICAgICAgIH1cbiAgICAgICB9XG4gICAgIH1cbn0iXX0=