@verisoft/ui-core 18.4.0 → 18.6.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 (332) hide show
  1. package/esm2022/index.mjs +7 -0
  2. package/esm2022/lib/common/angular-helper.mjs +23 -0
  3. package/esm2022/lib/common/constants.mjs +4 -0
  4. package/esm2022/lib/common/control.models.mjs +63 -0
  5. package/esm2022/lib/common/datasource-component.model.mjs +14 -0
  6. package/esm2022/lib/common/deactivate-guard.model.mjs +2 -0
  7. package/esm2022/lib/common/download-file.mjs +13 -0
  8. package/esm2022/lib/common/filter.mjs +7 -0
  9. package/esm2022/lib/common/icons.mjs +2 -0
  10. package/esm2022/lib/common/index.mjs +11 -0
  11. package/esm2022/lib/common/notificable-property.model.mjs +2 -0
  12. package/esm2022/lib/common/rxjs.mjs +11 -0
  13. package/esm2022/lib/components/action-button-group/action-button-group.model.mjs +3 -0
  14. package/esm2022/lib/components/action-button-group/action-button.model.mjs +2 -0
  15. package/esm2022/lib/components/action-button-group/index.mjs +3 -0
  16. package/esm2022/lib/components/base-form/base-form-input.component.mjs +100 -0
  17. package/esm2022/lib/components/base-form/base-form.component.mjs +187 -0
  18. package/esm2022/lib/components/base-form/directives/detail-store.directive.mjs +163 -0
  19. package/esm2022/lib/components/base-form/index.mjs +5 -0
  20. package/esm2022/lib/components/base-form/models/base-form-input.models.mjs +7 -0
  21. package/esm2022/lib/components/base-form/models/base-form.models.mjs +10 -0
  22. package/esm2022/lib/components/base-form/models/index.mjs +3 -0
  23. package/esm2022/lib/components/breadcrumb/breadcrumb.model.mjs +3 -0
  24. package/esm2022/lib/components/breadcrumb/breadcrumb.service.mjs +16 -0
  25. package/esm2022/lib/components/breadcrumb/breadcrumbcore.component.mjs +88 -0
  26. package/esm2022/lib/components/breadcrumb/index.mjs +4 -0
  27. package/esm2022/lib/components/button/button.model.mjs +3 -0
  28. package/esm2022/lib/components/button/index.mjs +2 -0
  29. package/esm2022/lib/components/calendar/calendar.model.mjs +3 -0
  30. package/esm2022/lib/components/calendar/index.mjs +2 -0
  31. package/esm2022/lib/components/checkbox/checkbox.model.mjs +3 -0
  32. package/esm2022/lib/components/checkbox/index.mjs +2 -0
  33. package/esm2022/lib/components/confirm-dialog/confirm-dialog.model.mjs +3 -0
  34. package/esm2022/lib/components/confirm-dialog/index.mjs +2 -0
  35. package/esm2022/lib/components/dropdown/dropdown.model.mjs +3 -0
  36. package/esm2022/lib/components/dropdown/index.mjs +2 -0
  37. package/esm2022/lib/components/dynamic-component/dynamic-component.model.mjs +2 -0
  38. package/esm2022/lib/components/dynamic-component/index.mjs +2 -0
  39. package/esm2022/lib/components/filter/filter.model.mjs +3 -0
  40. package/esm2022/lib/components/filter/index.mjs +2 -0
  41. package/esm2022/lib/components/form-field/form-field.model.mjs +3 -0
  42. package/esm2022/lib/components/form-field/index.mjs +2 -0
  43. package/esm2022/lib/components/generic-field/generic-field.model.mjs +3 -0
  44. package/esm2022/lib/components/generic-field/index.mjs +2 -0
  45. package/esm2022/lib/components/generic-form/generic-form.component.mjs +10 -0
  46. package/esm2022/lib/components/generic-form/index.mjs +2 -0
  47. package/esm2022/lib/components/header/header.model.mjs +4 -0
  48. package/esm2022/lib/components/header/index.mjs +2 -0
  49. package/esm2022/lib/components/icons/icons.component.mjs +29 -0
  50. package/esm2022/lib/components/icons/icons.model.mjs +3 -0
  51. package/esm2022/lib/components/icons/index.mjs +3 -0
  52. package/esm2022/lib/components/index.mjs +36 -0
  53. package/esm2022/lib/components/input-group/index.mjs +2 -0
  54. package/esm2022/lib/components/input-group/input-group.model.mjs +3 -0
  55. package/esm2022/lib/components/loader/index.mjs +2 -0
  56. package/esm2022/lib/components/loader/loader.model.mjs +3 -0
  57. package/esm2022/lib/components/multiselect/index.mjs +2 -0
  58. package/esm2022/lib/components/multiselect/mutiselect.model.mjs +3 -0
  59. package/esm2022/lib/components/number-input/index.mjs +2 -0
  60. package/esm2022/lib/components/number-input/number-input.model.mjs +3 -0
  61. package/esm2022/lib/components/page-header/index.mjs +4 -0
  62. package/esm2022/lib/components/page-header/page-header.model.mjs +3 -0
  63. package/esm2022/lib/components/page-header/page-header.service.mjs +16 -0
  64. package/esm2022/lib/components/page-header/page-headercore.component.mjs +52 -0
  65. package/esm2022/lib/components/password/index.mjs +2 -0
  66. package/esm2022/lib/components/password/password.model.mjs +11 -0
  67. package/esm2022/lib/components/radiobutton/index.mjs +2 -0
  68. package/esm2022/lib/components/radiobutton/radiobutton.model.mjs +3 -0
  69. package/esm2022/lib/components/section/index.mjs +2 -0
  70. package/esm2022/lib/components/section/section.model.mjs +3 -0
  71. package/esm2022/lib/components/side-menu/directives/side-menu-service.directive.mjs +31 -0
  72. package/esm2022/lib/components/side-menu/index.mjs +5 -0
  73. package/esm2022/lib/components/side-menu/services/side-menu-provider.service.mjs +25 -0
  74. package/esm2022/lib/components/side-menu/services/side-menu.service.mjs +50 -0
  75. package/esm2022/lib/components/side-menu/side-menu.model.mjs +6 -0
  76. package/esm2022/lib/components/slider/index.mjs +2 -0
  77. package/esm2022/lib/components/slider/slider.model.mjs +3 -0
  78. package/esm2022/lib/components/snackbar/index.mjs +2 -0
  79. package/esm2022/lib/components/snackbar/snackbar.model.mjs +3 -0
  80. package/esm2022/lib/components/stepper/index.mjs +2 -0
  81. package/esm2022/lib/components/stepper/stepper.model.mjs +3 -0
  82. package/esm2022/lib/components/switch/index.mjs +2 -0
  83. package/esm2022/lib/components/switch/switch.model.mjs +3 -0
  84. package/esm2022/lib/components/tab-view/index.mjs +2 -0
  85. package/esm2022/lib/components/tab-view/tab-view.model.mjs +3 -0
  86. package/esm2022/lib/components/table/column-configuration.mjs +32 -0
  87. package/esm2022/lib/components/table/index.mjs +5 -0
  88. package/esm2022/lib/components/table/table-builder.mjs +68 -0
  89. package/esm2022/lib/components/table/table-column.directive.mjs +86 -0
  90. package/esm2022/lib/components/table/table.models.mjs +150 -0
  91. package/esm2022/lib/components/table-filter/index.mjs +2 -0
  92. package/esm2022/lib/components/table-filter/table-filter.model.mjs +3 -0
  93. package/esm2022/lib/components/textarea/index.mjs +2 -0
  94. package/esm2022/lib/components/textarea/textarea.model.mjs +3 -0
  95. package/esm2022/lib/components/textfield/index.mjs +2 -0
  96. package/esm2022/lib/components/textfield/textfield.model.mjs +3 -0
  97. package/esm2022/lib/components/tristatecheckbox/index.mjs +2 -0
  98. package/esm2022/lib/components/tristatecheckbox/tristatecheckbox.model.mjs +3 -0
  99. package/esm2022/lib/components/unsubscribe.component.mjs +16 -0
  100. package/esm2022/lib/directives/datasource.directive.mjs +175 -0
  101. package/esm2022/lib/directives/index.mjs +5 -0
  102. package/esm2022/lib/directives/shortcut.directive.mjs +46 -0
  103. package/esm2022/lib/directives/table-datasource.directive.mjs +124 -0
  104. package/esm2022/lib/directives/table-filter.directive.mjs +56 -0
  105. package/esm2022/lib/format/format.mjs +63 -0
  106. package/esm2022/lib/pipes/error/error.codes.mjs +10 -0
  107. package/esm2022/lib/pipes/error/error.models.mjs +21 -0
  108. package/esm2022/lib/pipes/error/error.pipe.mjs +31 -0
  109. package/esm2022/lib/pipes/error/warning.codes.mjs +4 -0
  110. package/esm2022/lib/pipes/error/warning.pipe.mjs +31 -0
  111. package/esm2022/lib/pipes/helper/enumToList.pipe.mjs +22 -0
  112. package/esm2022/lib/pipes/index.mjs +8 -0
  113. package/esm2022/lib/pipes/keyOrFn/keyOrFn.pipe.mjs +31 -0
  114. package/esm2022/lib/services/confirm-dialog.service.mjs +45 -0
  115. package/esm2022/lib/services/index.mjs +5 -0
  116. package/esm2022/lib/services/leave-form.service.mjs +52 -0
  117. package/esm2022/lib/services/screen-size.service.mjs +29 -0
  118. package/esm2022/lib/services/table.service.mjs +27 -0
  119. package/esm2022/verisoft-ui-core.mjs +5 -0
  120. package/fesm2022/verisoft-ui-core.mjs +2014 -0
  121. package/fesm2022/verisoft-ui-core.mjs.map +1 -0
  122. package/{src/index.ts → index.d.ts} +6 -6
  123. package/lib/common/angular-helper.d.ts +1 -0
  124. package/lib/common/constants.d.ts +3 -0
  125. package/lib/common/control.models.d.ts +62 -0
  126. package/lib/common/datasource-component.model.d.ts +19 -0
  127. package/{src/lib/common/deactivate-guard.model.ts → lib/common/deactivate-guard.model.d.ts} +4 -5
  128. package/lib/common/download-file.d.ts +2 -0
  129. package/lib/common/filter.d.ts +1 -0
  130. package/{src/lib/common/icons.ts → lib/common/icons.d.ts} +34 -34
  131. package/{src/lib/common/index.ts → lib/common/index.d.ts} +10 -10
  132. package/{src/lib/common/notificable-property.model.ts → lib/common/notificable-property.model.d.ts} +4 -5
  133. package/lib/common/rxjs.d.ts +2 -0
  134. package/lib/components/action-button-group/action-button-group.model.d.ts +12 -0
  135. package/lib/components/action-button-group/action-button.model.d.ts +14 -0
  136. package/{src/lib/components/action-button-group/index.ts → lib/components/action-button-group/index.d.ts} +2 -2
  137. package/lib/components/base-form/base-form-input.component.d.ts +30 -0
  138. package/lib/components/base-form/base-form.component.d.ts +50 -0
  139. package/lib/components/base-form/directives/detail-store.directive.d.ts +35 -0
  140. package/{src/lib/components/base-form/index.ts → lib/components/base-form/index.d.ts} +4 -4
  141. package/lib/components/base-form/models/base-form-input.models.d.ts +7 -0
  142. package/lib/components/base-form/models/base-form.models.d.ts +18 -0
  143. package/{src/lib/components/base-form/models/index.ts → lib/components/base-form/models/index.d.ts} +2 -2
  144. package/{src/lib/components/breadcrumb/breadcrumb.model.ts → lib/components/breadcrumb/breadcrumb.model.d.ts} +16 -21
  145. package/lib/components/breadcrumb/breadcrumb.service.d.ts +8 -0
  146. package/lib/components/breadcrumb/breadcrumbcore.component.d.ts +30 -0
  147. package/lib/components/breadcrumb/index.d.ts +3 -0
  148. package/{src/lib/components/button/button.model.ts → lib/components/button/button.model.d.ts} +17 -21
  149. package/lib/components/button/index.d.ts +1 -0
  150. package/{src/lib/components/calendar/calendar.model.ts → lib/components/calendar/calendar.model.d.ts} +12 -16
  151. package/lib/components/calendar/index.d.ts +1 -0
  152. package/lib/components/checkbox/checkbox.model.d.ts +4 -0
  153. package/lib/components/checkbox/index.d.ts +1 -0
  154. package/lib/components/confirm-dialog/confirm-dialog.model.d.ts +25 -0
  155. package/lib/components/confirm-dialog/index.d.ts +1 -0
  156. package/{src/lib/components/dropdown/dropdown.model.ts → lib/components/dropdown/dropdown.model.d.ts} +12 -16
  157. package/lib/components/dropdown/index.d.ts +1 -0
  158. package/lib/components/dynamic-component/dynamic-component.model.d.ts +3 -0
  159. package/lib/components/dynamic-component/index.d.ts +1 -0
  160. package/lib/components/filter/filter.model.d.ts +13 -0
  161. package/{src/lib/components/filter/index.ts → lib/components/filter/index.d.ts} +1 -1
  162. package/{src/lib/components/form-field/form-field.model.ts → lib/components/form-field/form-field.model.d.ts} +11 -15
  163. package/lib/components/form-field/index.d.ts +1 -0
  164. package/{src/lib/components/generic-field/generic-field.model.ts → lib/components/generic-field/generic-field.model.d.ts} +6 -10
  165. package/lib/components/generic-field/index.d.ts +1 -0
  166. package/lib/components/generic-form/generic-form.component.d.ts +30 -0
  167. package/{src/lib/components/generic-form/index.ts → lib/components/generic-form/index.d.ts} +1 -1
  168. package/{src/lib/components/header/header.model.ts → lib/components/header/header.model.d.ts} +11 -18
  169. package/lib/components/header/index.d.ts +1 -0
  170. package/lib/components/icons/icons.component.d.ts +6 -0
  171. package/lib/components/icons/icons.model.d.ts +6 -0
  172. package/lib/components/icons/index.d.ts +2 -0
  173. package/{src/lib/components/index.ts → lib/components/index.d.ts} +35 -35
  174. package/lib/components/input-group/index.d.ts +1 -0
  175. package/{src/lib/components/input-group/input-group.model.ts → lib/components/input-group/input-group.model.d.ts} +12 -17
  176. package/lib/components/loader/index.d.ts +1 -0
  177. package/lib/components/loader/loader.model.d.ts +3 -0
  178. package/lib/components/multiselect/index.d.ts +1 -0
  179. package/{src/lib/components/multiselect/mutiselect.model.ts → lib/components/multiselect/mutiselect.model.d.ts} +9 -13
  180. package/lib/components/number-input/index.d.ts +1 -0
  181. package/{src/lib/components/number-input/number-input.model.ts → lib/components/number-input/number-input.model.d.ts} +10 -14
  182. package/{src/lib/components/page-header/index.ts → lib/components/page-header/index.d.ts} +3 -3
  183. package/{src/lib/components/page-header/page-header.model.ts → lib/components/page-header/page-header.model.d.ts} +7 -11
  184. package/lib/components/page-header/page-header.service.d.ts +8 -0
  185. package/lib/components/page-header/page-headercore.component.d.ts +20 -0
  186. package/lib/components/password/index.d.ts +1 -0
  187. package/{src/lib/components/password/password.model.ts → lib/components/password/password.model.d.ts} +19 -25
  188. package/lib/components/radiobutton/index.d.ts +1 -0
  189. package/{src/lib/components/radiobutton/radiobutton.model.ts → lib/components/radiobutton/radiobutton.model.d.ts} +11 -16
  190. package/lib/components/section/index.d.ts +1 -0
  191. package/{src/lib/components/section/section.model.ts → lib/components/section/section.model.d.ts} +7 -11
  192. package/lib/components/side-menu/directives/side-menu-service.directive.d.ts +11 -0
  193. package/{src/lib/components/side-menu/index.ts → lib/components/side-menu/index.d.ts} +4 -4
  194. package/lib/components/side-menu/services/side-menu-provider.service.d.ts +10 -0
  195. package/lib/components/side-menu/services/side-menu.service.d.ts +15 -0
  196. package/lib/components/side-menu/side-menu.model.d.ts +42 -0
  197. package/lib/components/slider/index.d.ts +1 -0
  198. package/{src/lib/components/slider/slider.model.ts → lib/components/slider/slider.model.d.ts} +9 -13
  199. package/lib/components/snackbar/index.d.ts +1 -0
  200. package/lib/components/snackbar/snackbar.model.d.ts +3 -0
  201. package/lib/components/stepper/index.d.ts +1 -0
  202. package/{src/lib/components/stepper/stepper.model.ts → lib/components/stepper/stepper.model.d.ts} +19 -24
  203. package/lib/components/switch/index.d.ts +1 -0
  204. package/lib/components/switch/switch.model.d.ts +4 -0
  205. package/lib/components/tab-view/index.d.ts +1 -0
  206. package/{src/lib/components/tab-view/tab-view.model.ts → lib/components/tab-view/tab-view.model.d.ts} +17 -22
  207. package/lib/components/table/column-configuration.d.ts +12 -0
  208. package/{src/lib/components/table/index.ts → lib/components/table/index.d.ts} +4 -4
  209. package/lib/components/table/table-builder.d.ts +15 -0
  210. package/lib/components/table/table-column.directive.d.ts +25 -0
  211. package/lib/components/table/table.models.d.ts +132 -0
  212. package/lib/components/table-filter/index.d.ts +1 -0
  213. package/{src/lib/components/table-filter/table-filter.model.ts → lib/components/table-filter/table-filter.model.d.ts} +17 -22
  214. package/lib/components/textarea/index.d.ts +1 -0
  215. package/{src/lib/components/textarea/textarea.model.ts → lib/components/textarea/textarea.model.d.ts} +9 -13
  216. package/lib/components/textfield/index.d.ts +1 -0
  217. package/{src/lib/components/textfield/textfield.model.ts → lib/components/textfield/textfield.model.d.ts} +9 -13
  218. package/lib/components/tristatecheckbox/index.d.ts +1 -0
  219. package/lib/components/tristatecheckbox/tristatecheckbox.model.d.ts +4 -0
  220. package/lib/components/unsubscribe.component.d.ts +9 -0
  221. package/lib/directives/datasource.directive.d.ts +32 -0
  222. package/{src/lib/directives/index.ts → lib/directives/index.d.ts} +4 -4
  223. package/lib/directives/shortcut.directive.d.ts +11 -0
  224. package/lib/directives/table-datasource.directive.d.ts +29 -0
  225. package/lib/directives/table-filter.directive.d.ts +17 -0
  226. package/lib/format/format.d.ts +9 -0
  227. package/lib/pipes/error/error.codes.d.ts +5 -0
  228. package/lib/pipes/error/error.models.d.ts +8 -0
  229. package/lib/pipes/error/error.pipe.d.ts +8 -0
  230. package/lib/pipes/error/warning.codes.d.ts +5 -0
  231. package/lib/pipes/error/warning.pipe.d.ts +8 -0
  232. package/lib/pipes/helper/enumToList.pipe.d.ts +7 -0
  233. package/{src/lib/pipes/index.ts → lib/pipes/index.d.ts} +7 -7
  234. package/lib/pipes/keyOrFn/keyOrFn.pipe.d.ts +7 -0
  235. package/lib/services/confirm-dialog.service.d.ts +12 -0
  236. package/{src/lib/services/index.ts → lib/services/index.d.ts} +4 -4
  237. package/lib/services/leave-form.service.d.ts +13 -0
  238. package/lib/services/screen-size.service.d.ts +10 -0
  239. package/lib/services/table.service.d.ts +13 -0
  240. package/package.json +35 -19
  241. package/.eslintrc.json +0 -48
  242. package/jest.config.ts +0 -21
  243. package/ng-package.json +0 -7
  244. package/project.json +0 -36
  245. package/src/lib/common/angular-helper.ts +0 -44
  246. package/src/lib/common/constants.ts +0 -5
  247. package/src/lib/common/control.models.ts +0 -71
  248. package/src/lib/common/datasource-component.model.spec.ts +0 -42
  249. package/src/lib/common/datasource-component.model.ts +0 -43
  250. package/src/lib/common/download-file.ts +0 -20
  251. package/src/lib/common/filter.ts +0 -7
  252. package/src/lib/common/rxjs.spec.ts +0 -58
  253. package/src/lib/common/rxjs.ts +0 -21
  254. package/src/lib/components/action-button-group/action-button-group.model.ts +0 -15
  255. package/src/lib/components/action-button-group/action-button.model.ts +0 -15
  256. package/src/lib/components/base-form/base-form-input.component.ts +0 -121
  257. package/src/lib/components/base-form/base-form.component.ts +0 -236
  258. package/src/lib/components/base-form/directives/detail-store.directive.ts +0 -219
  259. package/src/lib/components/base-form/models/base-form-input.models.ts +0 -11
  260. package/src/lib/components/base-form/models/base-form.models.ts +0 -31
  261. package/src/lib/components/breadcrumb/breadcrumb.service.ts +0 -9
  262. package/src/lib/components/breadcrumb/breadcrumbcore.component.ts +0 -115
  263. package/src/lib/components/breadcrumb/index.ts +0 -3
  264. package/src/lib/components/button/index.ts +0 -1
  265. package/src/lib/components/calendar/index.ts +0 -1
  266. package/src/lib/components/checkbox/checkbox.model.ts +0 -8
  267. package/src/lib/components/checkbox/index.ts +0 -1
  268. package/src/lib/components/confirm-dialog/confirm-dialog.model.ts +0 -31
  269. package/src/lib/components/confirm-dialog/index.ts +0 -1
  270. package/src/lib/components/dropdown/index.ts +0 -1
  271. package/src/lib/components/dynamic-component/dynamic-component.model.ts +0 -2
  272. package/src/lib/components/dynamic-component/index.ts +0 -1
  273. package/src/lib/components/filter/filter.model.ts +0 -17
  274. package/src/lib/components/form-field/index.ts +0 -1
  275. package/src/lib/components/generic-field/index.ts +0 -1
  276. package/src/lib/components/generic-form/generic-form.component.ts +0 -33
  277. package/src/lib/components/header/index.ts +0 -1
  278. package/src/lib/components/icons/icons.component.ts +0 -17
  279. package/src/lib/components/icons/icons.model.ts +0 -10
  280. package/src/lib/components/icons/index.ts +0 -2
  281. package/src/lib/components/input-group/index.ts +0 -1
  282. package/src/lib/components/loader/index.ts +0 -1
  283. package/src/lib/components/loader/loader.model.ts +0 -7
  284. package/src/lib/components/multiselect/index.ts +0 -1
  285. package/src/lib/components/number-input/index.ts +0 -1
  286. package/src/lib/components/page-header/page-header.service.ts +0 -9
  287. package/src/lib/components/page-header/page-headercore.component.ts +0 -40
  288. package/src/lib/components/password/index.ts +0 -1
  289. package/src/lib/components/radiobutton/index.ts +0 -1
  290. package/src/lib/components/section/index.ts +0 -1
  291. package/src/lib/components/side-menu/directives/side-menu-service.directive.ts +0 -31
  292. package/src/lib/components/side-menu/services/side-menu-provider.service.ts +0 -13
  293. package/src/lib/components/side-menu/services/side-menu.service.ts +0 -62
  294. package/src/lib/components/side-menu/side-menu.model.ts +0 -67
  295. package/src/lib/components/slider/index.ts +0 -1
  296. package/src/lib/components/snackbar/index.ts +0 -1
  297. package/src/lib/components/snackbar/snackbar.model.ts +0 -7
  298. package/src/lib/components/stepper/index.ts +0 -1
  299. package/src/lib/components/switch/index.ts +0 -1
  300. package/src/lib/components/switch/switch.model.ts +0 -8
  301. package/src/lib/components/tab-view/index.ts +0 -1
  302. package/src/lib/components/table/column-configuration.ts +0 -38
  303. package/src/lib/components/table/table-builder.ts +0 -93
  304. package/src/lib/components/table/table-column.directive.ts +0 -62
  305. package/src/lib/components/table/table.models.ts +0 -261
  306. package/src/lib/components/table-filter/index.ts +0 -1
  307. package/src/lib/components/textarea/index.ts +0 -1
  308. package/src/lib/components/textfield/index.ts +0 -1
  309. package/src/lib/components/tristatecheckbox/index.ts +0 -1
  310. package/src/lib/components/tristatecheckbox/tristatecheckbox.model.ts +0 -8
  311. package/src/lib/components/unsubscribe.component.ts +0 -12
  312. package/src/lib/directives/datasource.directive.ts +0 -275
  313. package/src/lib/directives/shortcut.directive.ts +0 -37
  314. package/src/lib/directives/table-datasource.directive.ts +0 -184
  315. package/src/lib/directives/table-filter.directive.ts +0 -69
  316. package/src/lib/format/format.ts +0 -74
  317. package/src/lib/pipes/error/error.codes.ts +0 -11
  318. package/src/lib/pipes/error/error.models.ts +0 -27
  319. package/src/lib/pipes/error/error.pipe.ts +0 -27
  320. package/src/lib/pipes/error/warning.codes.ts +0 -5
  321. package/src/lib/pipes/error/warning.pipe.ts +0 -27
  322. package/src/lib/pipes/helper/enumToList.pipe.ts +0 -16
  323. package/src/lib/pipes/keyOrFn/keyOrFn.pipe.ts +0 -23
  324. package/src/lib/services/confirm-dialog.service.ts +0 -44
  325. package/src/lib/services/leave-form.service.ts +0 -53
  326. package/src/lib/services/screen-size.service.ts +0 -25
  327. package/src/lib/services/table.service.ts +0 -22
  328. package/src/test-setup.ts +0 -8
  329. package/tsconfig.json +0 -30
  330. package/tsconfig.lib.json +0 -17
  331. package/tsconfig.lib.prod.json +0 -10
  332. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvdGFibGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsY0FBYyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRzFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUIsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHVCQUF1QixDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHVCQUF1QixDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUM1Qix1Q0FBaUIsQ0FBQTtJQUNqQiwyQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQVNYO0FBVEQsV0FBWSxtQkFBbUI7SUFDN0IsMENBQW1CLENBQUE7SUFDbkIsb0NBQWEsQ0FBQTtJQUNiLDBDQUFtQixDQUFBO0lBQ25CLHdDQUFpQixDQUFBO0lBQ2pCLG9DQUFhLENBQUE7SUFDYiwwQ0FBbUIsQ0FBQTtJQUNuQiw4Q0FBdUIsQ0FBQTtJQUN2Qiw0Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBVFcsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVM5QjtBQUVELE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIsdUNBQW1CLENBQUE7SUFDbkIscUNBQWlCLENBQUE7SUFDakIsdUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUEwRUQsTUFBTSxVQUFVLFlBQVksQ0FBSSxJ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RUFDTixRQUFpQixFQUNqQixRQUFpQixFQUNqQixNQUFnQixFQUNoQixLQUFjLEVBQ2QsR0FBVSxFQUNWLFdBQW9CLEVBQ3BCLFNBQWtCO1FBRWxCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEVBQUUsR0FBSSxHQUFpQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBSSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQUVELFNBQVMsaUJBQWlCLENBQUksR0FBTSxFQUFFLFNBQWtCLEVBQUUsV0FBb0I7SUFDNUUsT0FBTyxXQUFXLElBQUksU0FBUztRQUM3QixDQUFDLENBQUMsR0FBRyxXQUFXLEdBQUcsR0FBSSxHQUFpQyxDQUFDLFNBQVMsQ0FBQztRQUNuRSxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGlvblRva2VuLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50LCBTb3J0LCBTb3J0RGlyZWN0aW9uVHlwZSB9IGZyb20gJ0B2ZXJpc29mdC9jb3JlJztcclxuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGRBbGlnblR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24nO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRBQkxFX0NPTVBPTkVOVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUYWJsZUNvcmU8YW55Pj4oXHJcbiAgJ1RhYlZJZXdDb21wb25lbnRUb2tlbidcclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBUQUJMRV9DT0xVTU5fUFJPVklERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXHJcbiAgJ1RBQkxFX0NPTFVNTl9QUk9WSURFUidcclxuKTtcclxuXHJcbmV4cG9ydCBlbnVtIFRhYmxlU2VsZWN0aW9uTW9kZSB7XHJcbiAgc2luZ2xlID0gJ3NpbmdsZScsXHJcbiAgbXVsdGlwbGUgPSAnbXVsdGlwbGUnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBUYWJsZUJ1dHRvblNldmVyaXR5IHtcclxuICBzdWNjZXNzID0gJ3N1Y2Nlc3MnLFxyXG4gIGluZm8gPSAnaW5mbycsXHJcbiAgd2FybmluZyA9ICd3YXJuaW5nJyxcclxuICBkYW5nZXIgPSAnZGFuZ2VyJyxcclxuICBoZWxwID0gJ2hlbHAnLFxyXG4gIHByaW1hcnkgPSAncHJpbWFyeScsXHJcbiAgc2Vjb25kYXJ5ID0gJ3NlY29uZGFyeScsXHJcbiAgY29udHJhc3QgPSAnY29udHJhc3QnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb2x1bW5WaXNpYmlsaXR5IHtcclxuICB2aXNpYmxlID0gJ3Zpc2libGUnLFxyXG4gIGhpZGRlbiA9ICdoaWRkZW4nLFxyXG4gIGRlZmF1bHQgPSAnZGVmYXVsdCcsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRhYmxlU2VsZWN0aW9uTW9kZVR5cGUgPSBrZXlvZiB0eXBlb2YgVGFibGVTZWxlY3Rpb25Nb2RlO1xyXG5leHBvcnQgdHlwZSBUYWJsZUJ1dHRvblNldmVyaXR5VHlwZSA9IGtleW9mIHR5cGVvZiBUYWJsZUJ1dHRvblNldmVyaXR5O1xyXG5leHBvcnQgdHlwZSBDb2x1bW5WaXNpYmlsaXR5VHlwZSA9IGtleW9mIHR5cGVvZiBDb2x1bW5WaXNpYmlsaXR5O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvcmU8VD4ge1xyXG4gIHNvcnRlcnM6IFNvcnRbXTtcclxuICBjb2x1bW5zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W107XHJcbiAgZGF0YTogVFtdO1xyXG4gIHRvdGFsOiBudW1iZXI7XHJcbiAgZmlsdGVyOiBQYXJ0aWFsPFQ+IHwgdW5kZWZpbmVkO1xyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgc2Nyb2xsYWJsZTogYm9vbGVhbjtcclxuICBwYWdlU2l6ZTogbnVtYmVyO1xyXG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XHJcbiAgc2hvd1BhZ2luYXRvcjogYm9vbGVhbjtcclxuICBzb3J0TXVsdGlwbGU6IGJvb2xlYW47XHJcbiAgbGF6eTogYm9vbGVhbjtcclxuICBzZWxlY3Rpb246IFRbXTtcclxuICBzZWxlY3Rpb25Nb2RlOiBUYWJsZVNlbGVjdGlvbk1vZGVUeXBlIHwgdW5kZWZpbmVkO1xyXG4gIHNob3dQYWdlU2l6ZVBpY2tlcjogYm9vbGVhbjtcclxuICBlbnRpdHlLZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxUW10+O1xyXG4gIGxhenlMb2FkOiBFdmVudEVtaXR0ZXI8TGF6eUxvYWRFdmVudD47XHJcbiAgbWF4aW11bUNvbHVtbkxlbmd0aDogbnVtYmVyO1xyXG4gIGRpc2FibGVDdXN0b21DbGlja3M6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTaWduYWwge1xyXG4gIG5hbWU6IHN0cmluZyxcclxuICBzeW1ib2w6IHN5bWJvbFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkNvbHVtbnNEZWZpbml0aW9uPFQ+IHtcclxuICBzZXZlcml0eT86IFRhYmxlQnV0dG9uU2V2ZXJpdHk7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgaWNvbj86IHN0cmluZztcclxuICB0b29sdGlwPzogc3RyaW5nO1xyXG4gIHJvdW5kZWQ/OiBib29sZWFuO1xyXG4gIG91dGxpbmVkPzogYm9vbGVhbjtcclxuICByYWlzZWQ/OiBib29sZWFuO1xyXG4gIGJhZGdlPzogc3RyaW5nO1xyXG4gIHZpc2libGU/OiAocm93OiBUKSA9PiBib29sZWFuO1xyXG4gIHJvdXRlckxpbms/OiAocm93OiBUKSA9PiBzdHJpbmc7XHJcbiAgcXVlcnlQYXJhbXM/OiBQYXJhbXM7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgKChyb3c6IFQpID0+IGJvb2xlYW4pO1xyXG4gIG9uQ2xpY2s/OiAocm93OiBULCBldmVudD86IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uUHJvdmlkZXI8VD4ge1xyXG4gIGdldERlZmluaXRpb24oKTogQ29sdW1uRGVmaW5pdGlvbjxUPjtcclxuICBpbmRleDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkRlZmluaXRpb248VCwgX0tFWSA9IGtleW9mIFQ+IHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHZhbHVlPzogKHJvdzogVCwgaW5kZXg/OiBudW1iZXIpID0+IHN0cmluZztcclxuICBoZWFkZXJOYW1lPzogKChjb2x1bW5JZDogc3RyaW5nLCBpbmRleD86IG51bWJlcikgPT4gc3RyaW5nKSB8IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nIHwgKChyb3c/OiBUIHwgdW5kZWZpbmVkKSA9PiBzdHJpbmcpO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgc29ydGFibGU/OiBib29sZWFuO1xyXG4gIGZvcm1hdD86IChyb3c6IFQpID0+IHN0cmluZ1xyXG4gIHJvdXRlckxpbms/OiAocm93OiBUKSA9PiBzdHJpbmcgfCBzdHJpbmc7XHJcbiAgcXVlcnlQYXJhbXM/OiBQYXJhbXM7XHJcbiAgY29sdW1uQ2xhc3M/OiBzdHJpbmc7XHJcbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVCB9PjtcclxuICBhY3Rpb25zPzogQWN0aW9uQ29sdW1uc0RlZmluaXRpb248VD5bXTtcclxuICB0ZXh0QWxpZ24/OiBGaWVsZEFsaWduVHlwZTtcclxuICB3aWR0aD86IHN0cmluZyB8IG51bWJlcjtcclxuICBmb3JjZVZpc2liaWxpdHk/OiBDb2x1bW5WaXNpYmlsaXR5VHlwZTtcclxuICB2aXNpYmxlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIExpbmtSZW5kZXJlcjxUPih0ZXh0OiBzdHJpbmcsIGhyZWY6IHN0cmluZykge1xyXG4gIHJldHVybiAocm93OiBULCBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICByZXR1cm4gJzxhIGhyZWY9XCInICsgaHJlZiArICdcIj4nICsgdGV4dCArICc8L2E+JztcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcm91dGVyUmVuZGVyZXI8VD4obGluazogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpIHtcclxuICByZXR1cm4gKHJvdzogVCwgaW5kZXg/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHtcclxuICAgIHJldHVybiB7IHRleHQ6IHRleHQsIGxpbms6IGxpbmsgfTtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmVuZGVyZXI8VD4oZm5jOiAocm93OiBUKSA9PiBzdHJpbmcpIHtcclxuICByZXR1cm4gKHJvdzogVCkgPT4ge1xyXG4gICAgcmV0dXJuIGZuYyhyb3cpO1xyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5Nb2RlbDxUPiB7XHJcbiAgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvblR5cGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgY29sdW1uQ2xhc3M/OiBzdHJpbmc7XHJcbiAgcXVlcnlQYXJhbXM/OiBQYXJhbXM7XHJcbiAgcm91dGVyTGluaz86IChyb3c6IFQpID0+IHN0cmluZyB8IHN0cmluZztcclxuICB2YWx1ZUdldHRlciE6IChyb3c6IFQsIGluZGV4OiBudW1iZXIpID0+IHN0cmluZztcclxuICBoZWFkZXJHZXR0ZXIhOiAoY29sdW1uSWQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nIHwgc3RyaW5nO1xyXG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFQgfT47XHJcbiAgYWN0aW9ucz86IEFjdGlvbkNvbHVtbnNEZWZpbml0aW9uPFQ+W107XHJcbiAgc29ydGFibGU/OiBib29sZWFuO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcclxuICBmb3JtYXQhOiBGdW5jdGlvbjtcclxuICB0ZXh0QWxpZ24/OiBGaWVsZEFsaWduVHlwZTtcclxuICB3aWR0aDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIGZvcmNlVmlzaWJpbGl0eTogQ29sdW1uVmlzaWJpbGl0eVR5cGUgPSBDb2x1bW5WaXNpYmlsaXR5LmRlZmF1bHQ7XHJcbiAgdmlzaWJsZSA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IENvbHVtbkRlZmluaXRpb248VD4pIHtcclxuICAgIHRoaXMuaWQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5mb3JtYXQpIHtcclxuICAgICAgdGhpcy5mb3JtYXQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZm9ybWF0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24udmFsdWUpIHtcclxuICAgICAgdGhpcy52YWx1ZUdldHRlciA9IChyb3csIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbmZpZ3VyYXRpb24udmFsdWU/Lihyb3csIGluZGV4KSA/PyAnLSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0ID8gdGhpcy5mb3JtYXQodmFsdWUsIHJvdykgOiB2YWx1ZTtcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudmFsdWVHZXR0ZXIgPSAocm93KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSAoKHJvdyBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KT8uW3RoaXMuY29uZmlndXJhdGlvbi5pZF0pID8/ICcnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdCA/IHRoaXMuZm9ybWF0KHZhbHVlLCByb3cpIDogdmFsdWU7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5hY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMuY29uZmlndXJhdGlvbi5hY3Rpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24ucm91dGVyTGluaykge1xyXG4gICAgICB0aGlzLnJvdXRlckxpbmsgPSB0aGlzLmNvbmZpZ3VyYXRpb24ucm91dGVyTGluaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLmNvbHVtbkNsYXNzKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uQ2xhc3MgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY29sdW1uQ2xhc3M7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi50ZW1wbGF0ZSkge1xyXG4gICAgICB0aGlzLnRlbXBsYXRlID0gdGhpcy5jb25maWd1cmF0aW9uLnRlbXBsYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uaGVhZGVyTmFtZSkge1xyXG4gICAgICB0aGlzLmhlYWRlckdldHRlciA9IChcclxuICAgICAgICB0eXBlb2YgdGhpcy5jb25maWd1cmF0aW9uLmhlYWRlck5hbWUgPT09ICdzdHJpbmcnXHJcbiAgICAgICAgICA/ICgpID0+IHRoaXMuY29uZmlndXJhdGlvbi5oZWFkZXJOYW1lID8/ICcnXHJcbiAgICAgICAgICA6IChjb2x1bW5JZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PlxyXG4gICAgICAgICAgICAgICg8KGNvbHVtbklkOiBzdHJpbmcsIGluZGV4PzogbnVtYmVyKSA9PiBzdHJpbmc+KFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmhlYWRlck5hbWVcclxuICAgICAgICAgICAgICApKT8uKGNvbHVtbklkLCBpbmRleCkgPz8gdGhpcy5pZFxyXG4gICAgICApIGFzIChjb2x1bW5JZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiBzdHJpbmc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhlYWRlckdldHRlciA9ICgpID0+IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5xdWVyeVBhcmFtcykge1xyXG4gICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gdGhpcy5jb25maWd1cmF0aW9uLnF1ZXJ5UGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnJvdXRlckxpbmspIHtcclxuICAgICAgdGhpcy5jb2x1bW5DbGFzcyArPSAnICcgKyAnbGluayc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlndXJhdGlvbi5zb3J0YWJsZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuc29ydGFibGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24uc29ydGFibGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRhYmxlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLndpZHRoKXtcclxuICAgICAgdGhpcy53aWR0aCA9IHR5cGVvZiB0aGlzLmNvbmZpZ3VyYXRpb24ud2lkdGggPT09IFwibnVtYmVyXCIgPyB0aGlzLmNvbmZpZ3VyYXRpb24ud2lkdGggKyAncHgnIDogdGhpcy5jb25maWd1cmF0aW9uLndpZHRoO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24udGV4dEFsaWduICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy50ZXh0QWxpZ24gPSB0aGlzLmNvbmZpZ3VyYXRpb24udGV4dEFsaWduO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24uZm9yY2VWaXNpYmlsaXR5KSB7XHJcbiAgICAgIHRoaXMuZm9yY2VWaXNpYmlsaXR5ID0gdGhpcy5jb25maWd1cmF0aW9uLmZvcmNlVmlzaWJpbGl0eTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWd1cmF0aW9uLnZpc2libGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnZpc2libGUgPSB0aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSb3dNb2RlbDxUPiB7XHJcbiAgcm93OiBUO1xyXG4gIGluZGV4PzogbnVtYmVyO1xyXG4gIGlkOiBudW1iZXIgfCBzdHJpbmc7XHJcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgbWFya2VkPzogYm9vbGVhbjtcclxuICBmb2N1c2VkPzogYm9vbGVhbjtcclxuICBleHBhbmRlZDogYm9vbGVhbjtcclxuICBmbmM/OiB2b2lkO1xyXG4gIGN1c3RvbVJvdXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcm93OiBULFxyXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW4sXHJcbiAgICBleHBhbmRlZDogYm9vbGVhbixcclxuICAgIG1hcmtlZD86IGJvb2xlYW4sXHJcbiAgICBpbmRleD86IG51bWJlcixcclxuICAgIGZuYz86IHZvaWQsXHJcbiAgICBjdXN0b21Sb3V0ZT86IHN0cmluZyxcclxuICAgIGVudGl0eUtleT86IHN0cmluZ1xyXG4gICkge1xyXG4gICAgdGhpcy5yb3cgPSByb3c7XHJcbiAgICB0aGlzLmlkID0gKHJvdyBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KVsnaWQnXSA/PyB2NCgpO1xyXG4gICAgdGhpcy5pbmRleCA9IGluZGV4O1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkO1xyXG4gICAgdGhpcy5leHBhbmRlZCA9IGV4cGFuZGVkO1xyXG4gICAgdGhpcy5tYXJrZWQgPSBtYXJrZWQ7XHJcbiAgICB0aGlzLmZuYyA9IGZuYztcclxuICAgIHRoaXMuY3VzdG9tUm91dGUgPSBjcmVhdGVDdXN0b21Sb3V0ZTxUPihyb3csIGVudGl0eUtleSwgY3VzdG9tUm91dGUpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlQ3VzdG9tUm91dGU8VD4ocm93OiBULCBlbnRpdHlLZXk/OiBzdHJpbmcsIGN1c3RvbVJvdXRlPzogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGN1c3RvbVJvdXRlICYmIGVudGl0eUtleVxyXG4gICAgPyBgJHtjdXN0b21Sb3V0ZX0vYCArIChyb3cgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSlbZW50aXR5S2V5XVxyXG4gICAgOiB1bmRlZmluZWQ7XHJcbn1cclxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtZmlsdGVyL3RhYmxlLWZpbHRlci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUMxRCwyQkFBMkIsQ0FDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VGb3JtRGlyZWN0aXZlQ29yZSB9IGZyb20gJy4uL2Jhc2UtZm9ybSc7XHJcblxyXG5leHBvcnQgY29uc3QgVEFCTEVfRklMVEVSX0NPTVBPTkVOVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUYWJsZUZpbHRlckNvcmU8YW55Pj4oXHJcbiAgICAnVGFibGVGaWx0ZXJDb21wb25lbnRUb2tlbidcclxuKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRGVmaW5pdGlvbiB7XHJcbiAgICBvcHRpb25MYWJlbDogc3RyaW5nO1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIG9wdGlvblZhbHVlPzogc3RyaW5nO1xyXG4gICAgdXJsPzogc3RyaW5nO1xyXG4gICAgZmlsdGVyVHlwZT86ICdkcm9wZG93bicgfCAnY2hlY2tib3gnIHwgJ2NhbGVuZGFyJyB8ICdtdWx0aXNlbGVjdCc7XHJcbiAgICBpbml0aWFsVmFsdWU/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVGaWx0ZXJDb3JlPFQ+IGV4dGVuZHMgQmFzZUZvcm1EaXJlY3RpdmVDb3JlPFQ+IHtcclxuICAgIGZpbHRlckRlZmluaXRpb25zOiBGaWx0ZXJEZWZpbml0aW9uW107XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgaGlkZVNlYXJjaD86IGJvb2xlYW47XHJcbiAgICBkZWJvdW5jZVRpbWU/OiBudW1iZXI7XHJcbn1cclxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy90ZXh0YXJlYS90ZXh0YXJlYS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsQ0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VGb3JtQ29yZSB9IGZyb20gJy4uL2Jhc2UtZm9ybSc7XHJcblxyXG5leHBvcnQgY29uc3QgVEVYVEFSRUFfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFRleHRhcmVhQ29yZT4oXHJcbiAgICAnVGV4dGFyZWFDb21wb25lbnRUb2tlbidcclxuKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGV4dGFyZWFDb3JlIGV4dGVuZHMgQmFzZUZvcm1Db3JlIHtcclxuICAgIHJvd3M6IG51bWJlcjtcclxuICAgIGNvbHM6IG51bWJlcjtcclxuICAgIGF1dG9SZXNpemU6IGJvb2xlYW47XHJcbiAgICBmbG9hdExhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbn1cclxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGZpZWxkLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvdGV4dGZpZWxkL3RleHRmaWVsZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksY0FBYyxDQUN2RCx5QkFBeUIsQ0FDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkU2l6ZVR5cGUsIEZpZWxkVHlwZVR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24nO1xyXG5pbXBvcnQgeyBCYXNlRm9ybUNvcmUgfSBmcm9tICcuLi9iYXNlLWZvcm0nO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRFWFRGSUVMRF9DT01QT05FTlRfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48VGV4dGZpZWxkQ29yZT4oXHJcbiAgICAnVGV4dGZpZWxkQ29tcG9uZW50VG9rZW4nXHJcbik7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRleHRmaWVsZENvcmUgZXh0ZW5kcyBCYXNlRm9ybUNvcmUge1xyXG4gICAgc2l6ZTogRmllbGRTaXplVHlwZSB8IHVuZGVmaW5lZDtcclxuICAgIHR5cGU6IEZpZWxkVHlwZVR5cGU7XHJcbiAgICBmbG9hdExhYmVsOiBib29sZWFuO1xyXG59Il19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpc3RhdGVjaGVja2JveC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3RyaXN0YXRlY2hlY2tib3gvdHJpc3RhdGVjaGVja2JveC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLElBQUksY0FBYyxDQUMvRCxnQ0FBZ0MsQ0FDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VGb3JtQ29yZSB9IGZyb20gJy4uL2Jhc2UtZm9ybSc7XHJcblxyXG5leHBvcnQgY29uc3QgVFJJU1RBVEVfQ0hFQ0tCT1hfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFRyaXN0YXRlQ2hlY2tib3hDb3JlPihcclxuICAgICdUcmlzdGF0ZUNoZWNrYm94Q29tcG9uZW50VG9rZW4nXHJcbik7XHJcblxyXG5leHBvcnQgdHlwZSBUcmlzdGF0ZUNoZWNrYm94Q29yZSA9IEJhc2VGb3JtQ29yZVxyXG4iXX0=
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5zdWJzY3JpYmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvdW5zdWJzY3JpYmUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHL0IsTUFBTSxPQUFnQixvQkFBb0I7SUFDeEMsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFakMsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO3VHQU5tQixvQkFBb0I7MkZBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFEekMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5zdWJzY3JpYmVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9kYXRhc291cmNlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLGlCQUFpQixFQUdqQixvQkFBb0IsRUFHcEIsZ0JBQWdCLEdBR2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixHQUFHLEVBQ0gsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUVMLHFCQUFxQixFQUVyQixzQkFBc0IsRUFDdEIsY0FBYyxHQUNmLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCx3QkFBd0IsRUFFeEIsNkJBQTZCLEVBRTdCLDJCQUEyQixFQUUzQixvQkFBb0IsR0FDckIsTUFBTSxlQUFlLENBQUM7O0FBUXZCLE1BQU0sT0FBTyxtQkFDWCxTQUFRLG9CQUFvQjtJQUduQixVQUFVLENBQXFCO0lBRS9CLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFFaEIsV0FBVyxHQUFHLGlCQUFpQixDQUFDO0lBRWhDLFdBQVcsR0FBdUIsVUFBVSxDQUFDO0lBRTdDLFdBQVcsQ0FBd0I7SUFFbkMsV0FBVyxDQUFPO0lBRTNCLElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUM1QixJQUFJLENBQUMsb0JBQW9CO1lBQ3pCLElBQUksQ0FB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bW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIERpcmVjdGl2ZSxcclxuICBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uSW5pdCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEJBU0VfVVJMX1BBVEgsXHJcbiAgY29udmVydERhdGFzb3VyY2UsXHJcbiAgRGF0YVNvdXJjZUZ1bmN0aW9uVHlwZSxcclxuICBEYXRhc291cmNlVHlwZSxcclxuICBERUZBVUxUX1NFQVJDSF9MSU1JVCxcclxuICBGaWx0ZXJFdmVudCxcclxuICBMYXp5TG9hZEV2ZW50LFxyXG4gIG5vcm1hbGl6ZVJlcXVlc3QsXHJcbiAgUGFnZSxcclxuICBSZXF1ZXN0UGFyYW1zLFxyXG59IGZyb20gJ0B2ZXJpc29mdC9jb3JlJztcclxuaW1wb3J0IHtcclxuICBCZWhhdmlvclN1YmplY3QsXHJcbiAgY2F0Y2hFcnJvcixcclxuICBkZWJvdW5jZVRpbWUsXHJcbiAgZmlsdGVyLFxyXG4gIG1hcCxcclxuICBvZixcclxuICBzd2l0Y2hNYXAsXHJcbiAgdGFrZVVudGlsLFxyXG4gIHRhcCxcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBEYXRhU291cmNlQ29tcG9uZW50TW9kZWwsXHJcbiAgREVGQVVMVF9ERUJPVU5DRV9USU1FLFxyXG4gIEV4dGVuZGVkUmVxdWVzdFR5cGUsXHJcbiAgc2V0Q29tcG9uZW50UHJvcGVydGllcyxcclxuICBzZXREYXRhVG9BcnJheSxcclxufSBmcm9tICcuLi9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIERST1BET1dOX0NPTVBPTkVOVF9UT0tFTixcclxuICBEcm9wZG93bkNvcmUsXHJcbiAgR0VORVJJQ19GSUVMRF9DT01QT05FTlRfVE9LRU4sXHJcbiAgR2VuZXJpY0ZpZWxkQ29yZSxcclxuICBNVUxUSVNFTEVDVF9DT01QT05FTlRfVE9LRU4sXHJcbiAgTXVsdGlzZWxlY3RDb3JlLFxyXG4gIFVuc3Vic2NyaWJlQ29tcG9uZW50LFxyXG59IGZyb20gJy4uL2NvbXBvbmVudHMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxyXG4gICAgJ3YtZHJvcGRvd25bdXNlRGF0YXNvdXJjZV0sIHYtbXVsdGlzZWxlY3RbdXNlRGF0YXNvdXJjZV0sIHYtZ2VuZXJpYy1maWVsZFt1c2VEYXRhc291cmNlXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFzb3VyY2VEaXJlY3RpdmU8VD5cclxuICBleHRlbmRzIFVuc3Vic2NyaWJlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdFxyXG57XHJcbiAgQElucHV0KCkgZGF0YXNvdXJjZSE6IERhdGFzb3VyY2VUeXBlPFQ+O1xyXG5cclxuICBASW5wdXQoKSBhdXRvQmluZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIGxvYWRpbmdUZXh0ID0gJy4uLiBsb2FkaW5nIC4uLic7XHJcblxyXG4gIEBJbnB1dCgpIGZpbHRlckZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnZnVsbHRleHQnO1xyXG5cclxuICBASW5wdXQoKSB0cmFuc2Zvcm1Gbj86IChkYXRhOiBUKSA9PiB1bmtub3duO1xyXG5cclxuICBASW5wdXQoKSBleHRyYUZpbHRlciE6IGFueTtcclxuXHJcbiAgZ2V0IGFjdGl2ZUNvbXBvbmVudCgpOiBEYXRhU291cmNlQ29tcG9uZW50TW9kZWw8VD4ge1xyXG4gICAgcmV0dXJuICh0aGlzLmRyb3Bkb3duQ29tcG9uZW50ID8/XHJcbiAgICAgIHRoaXMubXVsdGlTZWxlY3RDb21wb25lbnQgPz9cclxuICAgICAgdGhpcy5nZW5lcmljRmllbGQpIGFzIERhdGFTb3VyY2VDb21wb25lbnRNb2RlbDxUPjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHJcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmcgPSBpbmplY3QoQkFTRV9VUkxfUEFUSCk7XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICBwcml2YXRlIGlzQWxsRGF0YUxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHBhcmFtZXRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPEV4dGVuZGVkUmVxdWVzdFR5cGU8VD4+Pih7fSk7XHJcblxyXG4gIHByaXZhdGUgbGFzdFBhcmFtZXRlciA9IHt9O1xyXG5cclxuICBwcml2YXRlIGRyb3Bkb3duQ29tcG9uZW50ID0gaW5qZWN0PERyb3Bkb3duQ29yZTxUPj4oXHJcbiAgICBEUk9QRE9XTl9DT01QT05FTlRfVE9LRU4sXHJcbiAgICB7IG9wdGlvbmFsOiB0cnVlIH1cclxuICApO1xyXG5cclxuICBwcml2YXRlIG11bHRpU2VsZWN0Q29tcG9uZW50ID0gaW5qZWN0PE11bHRpc2VsZWN0Q29yZTxUPj4oXHJcbiAgICBNVUxUSVNFTEVDVF9DT01QT05FTlRfVE9LRU4sXHJcbiAgICB7XHJcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJpY0ZpZWxkID0gaW5qZWN0PEdlbmVyaWNGaWVsZENvcmU8VD4+KFxyXG4gICAgR0VORVJJQ19GSUVMRF9DT01QT05FTlRfVE9LRU4sXHJcbiAgICB7IG9wdGlvbmFsOiB0cnVlIH1cclxuICApO1xyXG5cclxuICBwcml2YXRlIGRhdGFTb3VyY2VTZXJ2aWNlPzogRGF0YVNvdXJjZUZ1bmN0aW9uVHlwZTxUPjtcclxuXHJcbiAgcHJpdmF0ZSBsb2FkaW5nUGxhY2Vob2xkZXJJdGVtOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSA9IHt9O1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aXZlQ29tcG9uZW50LnNob3dlZFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIXRoaXMuYXV0b0JpbmQgJiZcclxuICAgICAgICAgICF0aGlzLmFjdGl2ZUNvbXBvbmVudC5vcHRpb25zICYmXHJcbiAgICAgICAgICAhdGhpcy5hY3RpdmVDb21wb25lbnQubG9hZGluZ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzJC5uZXh0KHt9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWN0aXZlQ29tcG9uZW50LmxhenlMb2FkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogTGF6eUxvYWRFdmVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycyQubmV4dCh7IG9mZnNldDogdmFsdWU/Lm9mZnNldCwgbGltaXQ6IHZhbHVlPy5saW1pdCB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5hY3RpdmVDb21wb25lbnQuZmlsdGVyZWRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBGaWx0ZXJFdmVudCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5maWx0ZXJGaWVsZCA/PyB0aGlzLmFjdGl2ZUNvbXBvbmVudC5vcHRpb25MYWJlbDtcclxuICAgICAgICBpZiAocHJvcGVydHkpIHtcclxuICAgICAgICAgIHRoaXMucGFyYW1ldGVycyQubmV4dCh7XHJcbiAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgW3Byb3BlcnR5XTogdmFsdWUuZmlsdGVyID8gdmFsdWUuZmlsdGVyIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIC4uLih0aGlzLmV4dHJhRmlsdGVyID8/IHt9KVxyXG4gICAgICAgICAgICB9IGFzIFBhcnRpYWw8VD4sXHJcbiAgICAgICAgICAgIHVzZU5ld0RhdGE6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMucGFyYW1ldGVycyRcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXHJcbiAgICAgICAgZmlsdGVyKHJlcXVlc3QgPT4gIXRoaXMuaXNEYXRhRm9yUmVxdWVzdExvYWRlZChyZXF1ZXN0KSksXHJcbiAgICAgICAgbWFwKChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBleHRlbmRlZFBhcmFtcyA9IG5vcm1hbGl6ZVJlcXVlc3QoeyAuLi50aGlzLmxhc3RQYXJhbWV0ZXIsIC4uLnJlcXVlc3QgfSwgREVGQVVMVF9TRUFSQ0hfTElNSVQpIGFzIEV4dGVuZGVkUmVxdWVzdFR5cGU8VD47XHJcbiAgICAgICAgICBleHRlbmRlZFBhcmFtcy51c2VOZXdEYXRhID0gcmVxdWVzdC51c2VOZXdEYXRhID8/IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuIGV4dGVuZGVkUGFyYW1zO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRhcCgocmVxdWVzdCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sYXN0UGFyYW1ldGVyID0gcmVxdWVzdDtcclxuICAgICAgICB9KSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoREVGQVVMVF9ERUJPVU5DRV9USU1FKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VDb21wb25lbnQodGhpcy5hY3RpdmVDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHN3aXRjaE1hcCgocmVxdWVzdCkgPT5cclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZVNlcnZpY2VcclxuICAgICAgICAgICAgPyB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlKHJlcXVlc3QgYXMgUmVxdWVzdFBhcmFtczxUPikucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+ICh7IHJlcXVlc3QsIHJlc3BvbnNlIH0pKVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgOiBvZih7XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U6IHtcclxuICAgICAgICAgICAgICAgICAgZGF0YTogW10gYXMgVFtdLFxyXG4gICAgICAgICAgICAgICAgICB0b3RhbDogMCxcclxuICAgICAgICAgICAgICAgICAgbGltaXQ6IHJlcXVlc3QubGltaXQsXHJcbiAgICAgICAgICAgICAgICAgIG9mZnNldDogcmVxdWVzdC5vZmZzZXQsXHJcbiAgICAgICAgICAgICAgICB9IGFzIFBhZ2U8VD4sXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICApLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKHJlcXVlc3QpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2hhbmdlQ29tcG9uZW50KHRoaXMuYWN0aXZlQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICByZXR1cm4gb2Yoe1xyXG4gICAgICAgICAgICByZXF1ZXN0OiByZXF1ZXN0IGFzIEV4dGVuZGVkUmVxdWVzdFR5cGU8VD4sXHJcbiAgICAgICAgICAgIHJlc3BvbnNlOiB7XHJcbiAgICAgICAgICAgICAgZGF0YTogW10gYXMgVFtdLFxyXG4gICAgICAgICAgICAgIHRvdGFsOiAwLFxyXG4gICAgICAgICAgICAgIGxpbWl0OiByZXF1ZXN0LmxpbWl0LFxyXG4gICAgICAgICAgICAgIG9mZnNldDogcmVxdWVzdC5vZmZzZXQsXHJcbiAgICAgICAgICAgIH0gYXMgUGFnZTxUPixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeyByZXF1ZXN0LCByZXNwb25zZSB9KSA9PlxyXG4gICAgICAgIHRoaXMuc2V0RGF0YVRvQ29udHJvbChyZXF1ZXN0LCByZXNwb25zZSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydkYXRhc291cmNlJ10pIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlU2VydmljZSA9IGNvbnZlcnREYXRhc291cmNlKFxyXG4gICAgICAgIHRoaXMuZGF0YXNvdXJjZSxcclxuICAgICAgICB0aGlzLmJhc2VVcmwsXHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGhpcy5hdXRvQmluZCkge1xyXG4gICAgICAgIHRoaXMucGFyYW1ldGVycyQubmV4dCh7IG9mZnNldDogMCB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RhdGFGb3JSZXF1ZXN0TG9hZGVkKHJlcXVlc3Q6IFBhcnRpYWw8RXh0ZW5kZWRSZXF1ZXN0VHlwZTxUPj4pIHtcclxuICAgIGlmIChyZXF1ZXN0LnVzZU5ld0RhdGEpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9mZnNldCA9IHJlcXVlc3Qub2Zmc2V0ID8/IDA7XHJcbiAgICBjb25zdCBsaW1pdCA9IHJlcXVlc3QubGltaXQgPz8gREVGQVVMVF9TRUFSQ0hfTElNSVQ7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hY3RpdmVDb21wb25lbnQub3B0aW9ucztcclxuICAgIGlmICghb3B0aW9ucykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoIDwgb2Zmc2V0ICsgbGltaXQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFsbEl0ZW1zRmlsbGVkID0gb3B0aW9ucy5zbGljZShvZmZzZXQsIG9mZnNldCArIGxpbWl0KS5ldmVyeShpdGVtID0+IGl0ZW0gIT09IHVuZGVmaW5lZCAmJiBpdGVtICE9IHRoaXMubG9hZGluZ1BsYWNlaG9sZGVySXRlbSk7XHJcbiAgICByZXR1cm4gYWxsSXRlbXNGaWxsZWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERhdGFUb0NvbnRyb2wocmVxdWVzdDogRXh0ZW5kZWRSZXF1ZXN0VHlwZTxUPiwgcmVzdWx0OiBQYWdlPFQ+KTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQWxsRGF0YUxvYWRlZCA9IHJlc3VsdC50b3RhbCA8PSByZXN1bHQuZGF0YS5sZW5ndGg7XHJcbiAgICBjb25zdCBkYXRhID0gcmVzdWx0LmRhdGE7XHJcbiAgICBjb25zdCB0b3RhbCA9IHJlc3VsdC50b3RhbDtcclxuICAgIGNvbnN0IG9mZnNldCA9IHJlcXVlc3Qub2Zmc2V0O1xyXG4gICAgY29uc3QgdHJhbnNmZXJlZERhdGEgPSB0aGlzLnRyYW5zZm9ybUZuXHJcbiAgICAgID8gZGF0YS5tYXAoKHgpID0+IHRoaXMudHJhbnNmb3JtRm4/Lih4KSlcclxuICAgICAgOiBkYXRhO1xyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZUNvbXBvbmVudC5vcHRpb25MYWJlbCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdQbGFjZWhvbGRlckl0ZW1bdGhpcy5hY3RpdmVDb21wb25lbnQub3B0aW9uTGFiZWxdID1cclxuICAgICAgICB0aGlzLmxvYWRpbmdUZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2ZUNvbXBvbmVudC5vcHRpb25WYWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdQbGFjZWhvbGRlckl0ZW1bdGhpcy5hY3RpdmVDb21wb25lbnQub3B0aW9uVmFsdWVdID0gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHJlcXVlc3QudXNlTmV3RGF0YSA/IHVuZGVmaW5lZCA6IHRoaXMuYWN0aXZlQ29tcG9uZW50Lm9wdGlvbnM7XHJcbiAgICBjb25zdCBuZXdPcHRpb25zID0gc2V0RGF0YVRvQXJyYXkoXHJcbiAgICAgIG9wdGlvbnMsXHJcbiAgICAgIHRyYW5zZmVyZWREYXRhLFxyXG4gICAgICBvZmZzZXQsXHJcbiAgICAgIHRvdGFsLFxyXG4gICAgICB0aGlzLmxvYWRpbmdQbGFjZWhvbGRlckl0ZW1cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VDb21wb25lbnQodGhpcy5hY3RpdmVDb21wb25lbnQsIHtcclxuICAgICAgb3B0aW9uczogbmV3T3B0aW9ucyBhcyBUW10sXHJcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICBsYXp5OiAhdGhpcy5pc0FsbERhdGFMb2FkZWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlQ29tcG9uZW50KFxyXG4gICAgY29tcG9uZW50OiBEYXRhU291cmNlQ29tcG9uZW50TW9kZWw8VD4sXHJcbiAgICB2YWx1ZTogUGFydGlhbDxEYXRhU291cmNlQ29tcG9uZW50TW9kZWw8VD4+XHJcbiAgKSB7XHJcbiAgICBzZXRDb21wb25lbnRQcm9wZXJ0aWVzKGNvbXBvbmVudCwgdmFsdWUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnRjdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvc2hvcnRjdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRN0QsTUFBTSxPQUFPLHVCQUF1QjtJQUV4QixVQUFVLENBQWM7SUFDeEIsV0FBVyxDQUFVO0lBRXRCLE1BQU0sR0FBK0IsRUFBRSxDQUFDO0lBR2hELFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxPQUFPLENBQUMsS0FBb0I7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQy9DLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3VHQTNCUyx1QkFBdUI7MkZBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFOckMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBR1csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPNUMsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcclxuICAgIHNlbGVjdG9yOiAndi1idXR0b25bdXNlU2hvcnRDdXRdJyxcclxuICAgIGV4cG9ydEFzOiAndXNlU2hvcnRDdXQnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICB9KVxyXG4gIGV4cG9ydCBjbGFzcyBCdXR0b25TaG9ydEN1dERpcmVjdGl2ZVxyXG4gIHtcclxuICAgICBASW5wdXQoKSBzaG9ydEN1dEZuPzogKCkgPT4gdm9pZDtcclxuICAgICBASW5wdXQoKSBzaG9ydEN1dEtleSE6IHN0cmluZztcclxuXHJcbiAgICAgcHJpdmF0ZSBrZXlNYXA6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcblxyXG4gICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgdGhpcy5rZXlNYXBbZXZlbnQua2V5LnRvTG93ZXJDYXNlKCldID0gdHJ1ZTtcclxuICAgICAgIHRoaXMuY2hlY2tTaG9ydGN1dCgpO1xyXG4gICAgIH1cclxuICAgXHJcbiAgICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKVxyXG4gICAgIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgIHRoaXMua2V5TWFwW2V2ZW50LmtleS50b0xvd2VyQ2FzZSgpXSA9IGZhbHNlO1xyXG4gICAgIH1cclxuXHJcbiAgICAgcHJpdmF0ZSBjaGVja1Nob3J0Y3V0KCkge1xyXG4gICAgICAgaWYgKHRoaXMuc2hvcnRDdXRLZXkgJiYgdGhpcy5zaG9ydEN1dEZuKSB7XHJcbiAgICAgICAgIGNvbnN0IGtleXMgPSB0aGlzLnNob3J0Q3V0S2V5LnRvTG93ZXJDYXNlKCkuc3BsaXQoJysnKTtcclxuICAgICAgICAgY29uc3QgaXNTaG9ydGN1dFByZXNzZWQgPSBrZXlzLmV2ZXJ5KChrZXkpID0+IHRoaXMua2V5TWFwW2tleV0pOyAgIFxyXG4gICAgICAgICBpZiAoaXNTaG9ydGN1dFByZXNzZWQpIHtcclxuICAgICAgICAgICB0aGlzLnNob3J0Q3V0Rm4/LigpO1xyXG4gICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiAodGhpcy5rZXlNYXBba2V5XSA9IGZhbHNlKSk7XHJcbiAgICAgICAgIH1cclxuICAgICAgIH1cclxuICAgICB9XHJcbn0iXX0=