@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,7 @@
1
+ export * from './lib/common';
2
+ export * from './lib/components';
3
+ export * from './lib/directives';
4
+ export * from './lib/pipes';
5
+ export * from './lib/services';
6
+ export * from './lib/format/format';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybWF0L2Zvcm1hdCc7Il19
@@ -0,0 +1,23 @@
1
+ import { SimpleChange } from '@angular/core';
2
+ export function setComponentProperties(component, value, firstChange = false) {
3
+ if (!value || !component) {
4
+ return;
5
+ }
6
+ const simpleChanges = Object.keys(value).reduce((changes, property) => {
7
+ const indexedComponent = component;
8
+ const indexedValue = value;
9
+ const previousValue = indexedComponent[property];
10
+ const currentValue = indexedValue[property];
11
+ if (currentValue !== previousValue) {
12
+ indexedComponent[property] = currentValue;
13
+ const change = new SimpleChange(previousValue, currentValue, firstChange);
14
+ return { ...changes, [property]: change };
15
+ }
16
+ return changes;
17
+ }, {});
18
+ const changeableComponent = component;
19
+ if (changeableComponent['ngOnChanges']) {
20
+ changeableComponent.ngOnChanges(simpleChanges);
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tbW9uL2FuZ3VsYXItaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxZQUFZLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsU0FBcUIsRUFDckIsS0FBMEIsRUFDMUIsV0FBVyxHQUFHLEtBQUs7SUFFbkIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQzdDLENBQUMsT0FBc0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7UUFDM0MsTUFBTSxnQkFBZ0IsR0FBRyxTQUV4QixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsS0FFcEIsQ0FBQztRQUNGLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FDL0IsUUFBUSxDQUN1QixDQUFDO1FBQ2xDLElBQUksWUFBWSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ25DLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLFlBQVksQ0FBQztZQUMxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FDN0IsYUFBYSxFQUNiLFlBQVksRUFDWixXQUFXLENBQ1osQ0FBQztZQUVGLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLEVBQ0QsRUFBRSxDQUNILENBQUM7SUFFRixNQUFNLG1CQUFtQixHQUFHLFNBQWlDLENBQUM7SUFDOUQsSUFBSSxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0Q29tcG9uZW50UHJvcGVydGllczxUQ29tcG9uZW50PihcclxuICBjb21wb25lbnQ6IFRDb21wb25lbnQsXHJcbiAgdmFsdWU6IFBhcnRpYWw8VENvbXBvbmVudD4sXHJcbiAgZmlyc3RDaGFuZ2UgPSBmYWxzZVxyXG4pIHtcclxuICBpZiAoIXZhbHVlIHx8ICFjb21wb25lbnQpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnN0IHNpbXBsZUNoYW5nZXMgPSBPYmplY3Qua2V5cyh2YWx1ZSkucmVkdWNlKFxyXG4gICAgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMsIHByb3BlcnR5OiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXhlZENvbXBvbmVudCA9IGNvbXBvbmVudCBhcyB1bmtub3duIGFzIHtcclxuICAgICAgICBba2V5OiBzdHJpbmddOiBUQ29tcG9uZW50W2tleW9mIFRDb21wb25lbnRdO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBpbmRleGVkVmFsdWUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIHtcclxuICAgICAgICBba2V5OiBzdHJpbmddOiBUQ29tcG9uZW50W2tleW9mIFRDb21wb25lbnRdO1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gaW5kZXhlZENvbXBvbmVudFtwcm9wZXJ0eV07XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGluZGV4ZWRWYWx1ZVtcclxuICAgICAgICBwcm9wZXJ0eVxyXG4gICAgICBdIGFzIFRDb21wb25lbnRba2V5b2YgVENvbXBvbmVudF07XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgIT09IHByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgICBpbmRleGVkQ29tcG9uZW50W3Byb3BlcnR5XSA9IGN1cnJlbnRWYWx1ZTtcclxuICAgICAgICBjb25zdCBjaGFuZ2UgPSBuZXcgU2ltcGxlQ2hhbmdlKFxyXG4gICAgICAgICAgcHJldmlvdXNWYWx1ZSxcclxuICAgICAgICAgIGN1cnJlbnRWYWx1ZSxcclxuICAgICAgICAgIGZpcnN0Q2hhbmdlXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHsgLi4uY2hhbmdlcywgW3Byb3BlcnR5XTogY2hhbmdlIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBjaGFuZ2VzO1xyXG4gICAgfSxcclxuICAgIHt9XHJcbiAgKTtcclxuXHJcbiAgY29uc3QgY2hhbmdlYWJsZUNvbXBvbmVudCA9IGNvbXBvbmVudCBhcyB1bmtub3duIGFzIE9uQ2hhbmdlcztcclxuICBpZiAoY2hhbmdlYWJsZUNvbXBvbmVudFsnbmdPbkNoYW5nZXMnXSkge1xyXG4gICAgY2hhbmdlYWJsZUNvbXBvbmVudC5uZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,4 @@
1
+ export const DEFAULT_DEBOUNCE_TIME = 300;
2
+ export const DEFAULT_PAGINATION = [10, 25, 50, 100];
3
+ export const MAX_COLUMN_CHAR_COUNT = 30;
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbW1vbi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERFRkFVTFRfREVCT1VOQ0VfVElNRSA9IDMwMDtcclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBR0lOQVRJT04gPSBbMTAsIDI1LCA1MCwgMTAwXTtcclxuXHJcbmV4cG9ydCBjb25zdCBNQVhfQ09MVU1OX0NIQVJfQ09VTlQgPSAzMDsiXX0=
@@ -0,0 +1,63 @@
1
+ export var ControlSeverity;
2
+ (function (ControlSeverity) {
3
+ ControlSeverity["success"] = "success";
4
+ ControlSeverity["info"] = "info";
5
+ ControlSeverity["warning"] = "warning";
6
+ ControlSeverity["danger"] = "danger";
7
+ ControlSeverity["help"] = "help";
8
+ ControlSeverity["primary"] = "primary";
9
+ ControlSeverity["secondary"] = "secondary";
10
+ ControlSeverity["contrast"] = "contrast";
11
+ })(ControlSeverity || (ControlSeverity = {}));
12
+ export var GovControlSeverity;
13
+ (function (GovControlSeverity) {
14
+ GovControlSeverity["primary"] = "primary";
15
+ GovControlSeverity["secondary"] = "secondary";
16
+ GovControlSeverity["neutral"] = "neutral";
17
+ GovControlSeverity["error"] = "error";
18
+ GovControlSeverity["success"] = "success";
19
+ GovControlSeverity["warning"] = "warning";
20
+ })(GovControlSeverity || (GovControlSeverity = {}));
21
+ export var GovButtonType;
22
+ (function (GovButtonType) {
23
+ GovButtonType["solid"] = "solid";
24
+ GovButtonType["outlined"] = "outlined";
25
+ GovButtonType["base"] = "base";
26
+ GovButtonType["link"] = "link";
27
+ })(GovButtonType || (GovButtonType = {}));
28
+ export var IconPosition;
29
+ (function (IconPosition) {
30
+ IconPosition["left"] = "left";
31
+ IconPosition["right"] = "right";
32
+ })(IconPosition || (IconPosition = {}));
33
+ export var SlotPosition;
34
+ (function (SlotPosition) {
35
+ SlotPosition["top"] = "top";
36
+ SlotPosition["bottom"] = "bottom";
37
+ })(SlotPosition || (SlotPosition = {}));
38
+ export var FieldSize;
39
+ (function (FieldSize) {
40
+ FieldSize["small"] = "small";
41
+ FieldSize["medium"] = "medium";
42
+ FieldSize["large"] = "large";
43
+ })(FieldSize || (FieldSize = {}));
44
+ export var FieldAlign;
45
+ (function (FieldAlign) {
46
+ FieldAlign["left"] = "left";
47
+ FieldAlign["center"] = "center";
48
+ FieldAlign["right"] = "right";
49
+ })(FieldAlign || (FieldAlign = {}));
50
+ export var FieldType;
51
+ (function (FieldType) {
52
+ FieldType["text"] = "text";
53
+ FieldType["number"] = "number";
54
+ FieldType["password"] = "password";
55
+ FieldType["search"] = "search";
56
+ FieldType["date"] = "date";
57
+ })(FieldType || (FieldType = {}));
58
+ export var LayoutType;
59
+ (function (LayoutType) {
60
+ LayoutType["horizontal"] = "horizontal";
61
+ LayoutType["vertical"] = "vertical";
62
+ })(LayoutType || (LayoutType = {}));
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tbW9uL2NvbnRyb2wubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGVBU1g7QUFURCxXQUFZLGVBQWU7SUFDekIsc0NBQW1CLENBQUE7SUFDbkIsZ0NBQWEsQ0FBQTtJQUNiLHNDQUFtQixDQUFBO0lBQ25CLG9DQUFpQixDQUFBO0lBQ2pCLGdDQUFhLENBQUE7SUFDYixzQ0FBbUIsQ0FBQTtJQUNuQiwwQ0FBdUIsQ0FBQTtJQUN2Qix3Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBVFcsZUFBZSxLQUFmLGVBQWUsUUFTMUI7QUFFRCxNQUFNLENBQU4sSUFBWSxrQkFPWDtBQVBELFdBQVksa0JBQWtCO0lBQzVCLHlDQUFtQixDQUFBO0lBQ25CLDZDQUF1QixDQUFBO0lBQ3ZCLHlDQUFtQixDQUFBO0lBQ25CLHFDQUFlLENBQUE7SUFDZix5Q0FBbUIsQ0FBQTtJQUNuQix5Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBUFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQU83QjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDdkIsZ0NBQWUsQ0FBQTtJQUNmLHNDQUFxQixDQUFBO0lBQ3JCLDhCQUFhLENBQUE7SUFDYiw4QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLGFBQWEsS0FBYixhQUFhLFFBS3hCO0FBRUQsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0Qiw2QkFBYSxDQUFBO0lBQ2IsK0JBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkI7QUFFRCxNQUFNLENBQU4sSUFBWSxZQUdYO0FBSEQsV0FBWSxZQUFZO0lBQ3RCLDJCQUFXLENBQUE7SUFDWCxpQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkI7QUFFRCxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLDRCQUFlLENBQUE7SUFDZiw4QkFBaUIsQ0FBQTtJQUNqQiw0QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsMkJBQWEsQ0FBQTtJQUNiLCtCQUFpQixDQUFBO0lBQ2pCLDZCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUpXLFVBQVUsS0FBVixVQUFVLFFBSXJCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FNWDtBQU5ELFdBQVksU0FBUztJQUNuQiwwQkFBYSxDQUFBO0lBQ2IsOEJBQWlCLENBQUE7SUFDakIsa0NBQXFCLENBQUE7SUFDckIsOEJBQWlCLENBQUE7SUFDakIsMEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFOVyxTQUFTLEtBQVQsU0FBUyxRQU1wQjtBQUVELE1BQU0sQ0FBTixJQUFZLFVBR1g7QUFIRCxXQUFZLFVBQVU7SUFDcEIsdUNBQXlCLENBQUE7SUFDekIsbUNBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLFVBQVUsS0FBVixVQUFVLFFBR3JCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQ29udHJvbFNldmVyaXR5IHtcclxuICBzdWNjZXNzID0gJ3N1Y2Nlc3MnLFxyXG4gIGluZm8gPSAnaW5mbycsXHJcbiAgd2FybmluZyA9ICd3YXJuaW5nJyxcclxuICBkYW5nZXIgPSAnZGFuZ2VyJyxcclxuICBoZWxwID0gJ2hlbHAnLFxyXG4gIHByaW1hcnkgPSAncHJpbWFyeScsXHJcbiAgc2Vjb25kYXJ5ID0gJ3NlY29uZGFyeScsXHJcbiAgY29udHJhc3QgPSAnY29udHJhc3QnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBHb3ZDb250cm9sU2V2ZXJpdHkge1xyXG4gIHByaW1hcnkgPSAncHJpbWFyeScsXHJcbiAgc2Vjb25kYXJ5ID0gJ3NlY29uZGFyeScsXHJcbiAgbmV1dHJhbCA9ICduZXV0cmFsJyxcclxuICBlcnJvciA9ICdlcnJvcicsXHJcbiAgc3VjY2VzcyA9ICdzdWNjZXNzJyxcclxuICB3YXJuaW5nID0gJ3dhcm5pbmcnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBHb3ZCdXR0b25UeXBlIHtcclxuICBzb2xpZCA9ICdzb2xpZCcsXHJcbiAgb3V0bGluZWQgPSBcIm91dGxpbmVkXCIsXHJcbiAgYmFzZSA9IFwiYmFzZVwiLFxyXG4gIGxpbmsgPSBcImxpbmtcIlxyXG59XHJcblxyXG5leHBvcnQgZW51bSBJY29uUG9zaXRpb24ge1xyXG4gIGxlZnQgPSAnbGVmdCcsXHJcbiAgcmlnaHQgPSAncmlnaHQnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBTbG90UG9zaXRpb24ge1xyXG4gIHRvcCA9ICd0b3AnLFxyXG4gIGJvdHRvbSA9ICdib3R0b20nLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBGaWVsZFNpemUge1xyXG4gIHNtYWxsID0gJ3NtYWxsJyxcclxuICBtZWRpdW0gPSAnbWVkaXVtJyxcclxuICBsYXJnZSA9ICdsYXJnZScsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEZpZWxkQWxpZ24ge1xyXG4gIGxlZnQgPSAnbGVmdCcsXHJcbiAgY2VudGVyID0gJ2NlbnRlcicsXHJcbiAgcmlnaHQgPSAncmlnaHQnLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBGaWVsZFR5cGUge1xyXG4gIHRleHQgPSAndGV4dCcsXHJcbiAgbnVtYmVyID0gJ251bWJlcicsXHJcbiAgcGFzc3dvcmQgPSAncGFzc3dvcmQnLFxyXG4gIHNlYXJjaCA9ICdzZWFyY2gnLFxyXG4gIGRhdGUgPSAnZGF0ZScsXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExheW91dFR5cGUge1xyXG4gIGhvcml6b250YWwgPSAnaG9yaXpvbnRhbCcsXHJcbiAgdmVydGljYWwgPSAndmVydGljYWwnLFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDb250cm9sU2V2ZXJpdHlUeXBlID0ga2V5b2YgdHlwZW9mIENvbnRyb2xTZXZlcml0eTtcclxuZXhwb3J0IHR5cGUgR292Q29udHJvbFNldmVyaXR5VHlwZSA9IGtleW9mIHR5cGVvZiBHb3ZDb250cm9sU2V2ZXJpdHk7XHJcbmV4cG9ydCB0eXBlIEdvdkJ1dHRvblR5cGVUeXBlID0ga2V5b2YgdHlwZW9mIEdvdkJ1dHRvblR5cGU7XHJcbmV4cG9ydCB0eXBlIEljb25Qb3NpdGlvblR5cGUgPSBrZXlvZiB0eXBlb2YgSWNvblBvc2l0aW9uO1xyXG5leHBvcnQgdHlwZSBTbG90UG9zaXRpb25UeXBlID0ga2V5b2YgdHlwZW9mIFNsb3RQb3NpdGlvbjtcclxuZXhwb3J0IHR5cGUgRmllbGRTaXplVHlwZSA9IGtleW9mIHR5cGVvZiBGaWVsZFNpemU7XHJcbmV4cG9ydCB0eXBlIEZpZWxkQWxpZ25UeXBlID0ga2V5b2YgdHlwZW9mIEZpZWxkQWxpZ247XHJcbmV4cG9ydCB0eXBlIEZpZWxkVHlwZVR5cGUgPSBrZXlvZiB0eXBlb2YgRmllbGRUeXBlO1xyXG5leHBvcnQgdHlwZSBMYXlvdXRUeXBlVHlwZSA9IGtleW9mIHR5cGVvZiBMYXlvdXRUeXBlO1xyXG4iXX0=
@@ -0,0 +1,14 @@
1
+ export function setDataToArray(targetArray, data, offset = 0, total = undefined, defaultItem = undefined) {
2
+ const totalItems = total ?? data.length + offset;
3
+ if (!targetArray) {
4
+ targetArray = Array(totalItems).fill(defaultItem);
5
+ }
6
+ if (targetArray.length < totalItems) {
7
+ targetArray = targetArray.concat(new Array(totalItems - targetArray.length).fill(defaultItem));
8
+ }
9
+ for (let i = 0; i < data.length; i++) {
10
+ targetArray[i + offset] = data[i] ?? defaultItem;
11
+ }
12
+ return targetArray;
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1jb21wb25lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tbW9uL2RhdGFzb3VyY2UtY29tcG9uZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxNQUFNLFVBQVUsY0FBYyxDQUM1QixXQUEwQyxFQUMxQyxJQUFTLEVBQ1QsTUFBTSxHQUFHLENBQUMsRUFDVixRQUE0QixTQUFTLEVBQ3JDLGNBQTZCLFNBQVM7SUFFdEMsTUFBTSxVQUFVLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ2pELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixXQUFXLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUM5QixJQUFJLEtBQUssQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDN0QsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFdmVudCwgTGF6eUxvYWRFdmVudCwgUmVxdWVzdFBhcmFtcyB9IGZyb20gJ0B2ZXJpc29mdC9jb3JlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVNvdXJjZUNvbXBvbmVudE1vZGVsPFRFbnRpdHk+IHtcclxuICBuZ09uQ2hhbmdlcz86IChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSA9PiB2b2lkO1xyXG4gIGxhenk6IGJvb2xlYW47XHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBmaWx0ZXI6IGJvb2xlYW47XHJcbiAgb3B0aW9uczogVEVudGl0eVtdIHwgdW5kZWZpbmVkO1xyXG4gIG9wdGlvblZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgb3B0aW9uTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBzaG93ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIGNsZWFyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIGZpbHRlcmVkOiBFdmVudEVtaXR0ZXI8RmlsdGVyRXZlbnQ+O1xyXG4gIGxhenlMb2FkOiBFdmVudEVtaXR0ZXI8TGF6eUxvYWRFdmVudD47XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXREYXRhVG9BcnJheTxUPihcclxuICB0YXJnZXRBcnJheTogKFQgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQsXHJcbiAgZGF0YTogVFtdLFxyXG4gIG9mZnNldCA9IDAsXHJcbiAgdG90YWw6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcclxuICBkZWZhdWx0SXRlbTogVCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxyXG4pOiAoVCB8IHVuZGVmaW5lZClbXSB7XHJcbiAgY29uc3QgdG90YWxJdGVtcyA9IHRvdGFsID8/IGRhdGEubGVuZ3RoICsgb2Zmc2V0O1xyXG4gIGlmICghdGFyZ2V0QXJyYXkpIHtcclxuICAgIHRhcmdldEFycmF5ID0gQXJyYXkodG90YWxJdGVtcykuZmlsbChkZWZhdWx0SXRlbSk7XHJcbiAgfVxyXG5cclxuICBpZiAodGFyZ2V0QXJyYXkubGVuZ3RoIDwgdG90YWxJdGVtcykge1xyXG4gICAgdGFyZ2V0QXJyYXkgPSB0YXJnZXRBcnJheS5jb25jYXQoXHJcbiAgICAgIG5ldyBBcnJheSh0b3RhbEl0ZW1zIC0gdGFyZ2V0QXJyYXkubGVuZ3RoKS5maWxsKGRlZmF1bHRJdGVtKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgdGFyZ2V0QXJyYXlbaSArIG9mZnNldF0gPSBkYXRhW2ldID8/IGRlZmF1bHRJdGVtO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHRhcmdldEFycmF5O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBFeHRlbmRlZFJlcXVlc3RUeXBlPFQ+ID0gUmVxdWVzdFBhcmFtczxUPiAmIHsgdXNlTmV3RGF0YTogYm9vbGVhbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVhY3RpdmF0ZS1ndWFyZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21tb24vZGVhY3RpdmF0ZS1ndWFyZC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByZXZlbnRVbnNhdmVkQ2hhbmdlc0NvcmUge1xyXG4gIGNhbkRlYWN0aXZhdGU6ICgpID0+IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbjtcclxufVxyXG4iXX0=
@@ -0,0 +1,13 @@
1
+ export function downloadText(filename, text, mimeType = 'text/plain') {
2
+ const blob = new Blob([text], { type: mimeType });
3
+ downloadFile(filename, blob);
4
+ }
5
+ export function downloadFile(filename, blob) {
6
+ const url = window.URL.createObjectURL(blob);
7
+ const a = document.createElement('a');
8
+ a.href = url;
9
+ a.download = filename;
10
+ a.click();
11
+ window.URL.revokeObjectURL(url);
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21tb24vZG93bmxvYWQtZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsWUFBWSxDQUMxQixRQUFnQixFQUNoQixJQUFZLEVBQ1osV0FBK0IsWUFBWTtJQUUzQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsUUFBZ0IsRUFDaEIsSUFBVTtJQUVWLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUN0QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDVixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkVGV4dChcclxuICBmaWxlbmFtZTogc3RyaW5nLFxyXG4gIHRleHQ6IHN0cmluZyxcclxuICBtaW1lVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ3RleHQvcGxhaW4nXHJcbik6IHZvaWQge1xyXG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdGV4dF0sIHsgdHlwZTogbWltZVR5cGUgfSk7XHJcbiAgZG93bmxvYWRGaWxlKGZpbGVuYW1lLCBibG9iKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkRmlsZShcclxuICBmaWxlbmFtZTogc3RyaW5nLFxyXG4gIGJsb2I6IEJsb2JcclxuKTogdm9pZCB7XHJcbiAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICBhLmhyZWYgPSB1cmw7XHJcbiAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xyXG4gIGEuY2xpY2soKTtcclxuICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export function isFilterEmpty(filter) {
2
+ if (filter == undefined) {
3
+ return true;
4
+ }
5
+ return !Object.entries(filter).some((x) => x[1] != undefined);
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbW1vbi9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGFBQWEsQ0FBSSxNQUE4QjtJQUM3RCxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzRmlsdGVyRW1wdHk8VD4oZmlsdGVyOiBQYXJ0aWFsPFQ+IHwgdW5kZWZpbmVkKSB7XHJcbiAgaWYgKGZpbHRlciA9PSB1bmRlZmluZWQpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuICFPYmplY3QuZW50cmllcyhmaWx0ZXIpLnNvbWUoKHgpID0+IHhbMV0gIT0gdW5kZWZpbmVkKTtcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tbW9uL2ljb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvbW1vbkljb25zIHtcclxuICAgIGFkZDogc3RyaW5nO1xyXG4gICAgbWludXM6IHN0cmluZztcclxuICAgIGRlbGV0ZTogc3RyaW5nO1xyXG4gICAgZmlsdGVyOiBzdHJpbmc7XHJcbiAgICBkb3dubG9hZDogc3RyaW5nO1xyXG4gICAgc2F2ZTogc3RyaW5nO1xyXG4gICAgcHJpbnQ6IHN0cmluZztcclxuICAgIGVkaXQ6IHN0cmluZztcclxuICAgIHNldHRpbmdzOiBzdHJpbmc7XHJcbiAgICBob3VzZTogc3RyaW5nO1xyXG4gICAgY2FsZW5kYXI6IHN0cmluZztcclxuICAgIGNoZXZyb25SaWdodDogc3RyaW5nO1xyXG4gICAgY2hldnJvbkxlZnQ6IHN0cmluZztcclxuICAgIGNoZXZyb25Eb3duOiBzdHJpbmc7XHJcbiAgICBjaGV2cm9uVXA6IHN0cmluZztcclxuICAgIGNoZWNrYm94OiBzdHJpbmc7XHJcbiAgICB3YXJuaW5nOiBzdHJpbmc7XHJcbiAgICBzZWFyY2g6IHN0cmluZztcclxuICAgIGFjdGlvbjogc3RyaW5nO1xyXG4gICAgdXNlcjogc3RyaW5nO1xyXG4gICAgbG9nb3V0OiBzdHJpbmc7XHJcbiAgICBjcm9zc0NpcmNsZTogc3RyaW5nO1xyXG4gICAgaW5mb0NpcmNsZTogc3RyaW5nO1xyXG4gICAgY3Jvc3M6IHN0cmluZztcclxuICAgIGFycm93TGVmdDogc3RyaW5nO1xyXG4gICAgYXJyb3dSaWdodDogc3RyaW5nO1xyXG4gICAgcXVlc3Rpb25DaXJjbGU6IHN0cmluZztcclxuICAgIGNoZWNrQ2lyY2xlOiBzdHJpbmc7XHJcbiAgICBzaXRlbWFwOiBzdHJpbmc7XHJcbiAgICBjaGVjazogc3RyaW5nO1xyXG4gICAgZW52ZWxvcGU6IHN0cmluZztcclxuICAgIGxvYWRlcjogc3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ export * from './angular-helper';
2
+ export * from './control.models';
3
+ export * from './constants';
4
+ export * from './datasource-component.model';
5
+ export * from './filter';
6
+ export * from './notificable-property.model';
7
+ export * from './rxjs';
8
+ export * from './icons';
9
+ export * from './download-file';
10
+ export * from './deactivate-guard.model';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tbW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDBCQUEwQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmd1bGFyLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udHJvbC5tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXNvdXJjZS1jb21wb25lbnQubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2FibGUtcHJvcGVydHkubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3J4anMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ljb25zJztcclxuZXhwb3J0ICogZnJvbSAnLi9kb3dubG9hZC1maWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kZWFjdGl2YXRlLWd1YXJkLm1vZGVsJ1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2FibGUtcHJvcGVydHkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tbW9uL25vdGlmaWNhYmxlLXByb3BlcnR5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2FibGVQcm9wZXJ0eSB7XHJcbiAgcHJvcGVydHlDaGFuZ2VkOiBPYnNlcnZhYmxlPHVua25vd24+O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { debounceTime, map, merge, startWith, switchMap } from 'rxjs';
2
+ export function queryListChanged(list) {
3
+ return list.changes.pipe(startWith({}), switchMap(() => {
4
+ const actionPropertyChanges$ = list
5
+ .toArray()
6
+ .filter((action) => action.propertyChanged)
7
+ .map((action) => action.propertyChanged);
8
+ return merge(...actionPropertyChanges$).pipe(startWith({}), map(() => list.toArray()));
9
+ }), debounceTime(50));
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21tb24vcnhqcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd0RSxNQUFNLFVBQVUsZ0JBQWdCLENBQVUsSUFBd0I7SUFDaEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDdEIsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixNQUFNLHNCQUFzQixHQUFHLElBQUk7YUFDaEMsT0FBTyxFQUFFO2FBQ1QsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBdUIsTUFBTyxDQUFDLGVBQWUsQ0FBQzthQUNqRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUF1QixNQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEUsT0FBTyxLQUFLLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FDMUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FDMUIsQ0FBQztJQUNKLENBQUMsQ0FBQyxFQUNGLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FDakIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIG1lcmdlLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBOb3RpZmljYWJsZVByb3BlcnR5IH0gZnJvbSAnLi9ub3RpZmljYWJsZS1wcm9wZXJ0eS5tb2RlbCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcXVlcnlMaXN0Q2hhbmdlZDxURW50aXR5PihsaXN0OiBRdWVyeUxpc3Q8VEVudGl0eT4pIHtcclxuICByZXR1cm4gbGlzdC5jaGFuZ2VzLnBpcGUoXHJcbiAgICBzdGFydFdpdGgoe30pLFxyXG4gICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgY29uc3QgYWN0aW9uUHJvcGVydHlDaGFuZ2VzJCA9IGxpc3RcclxuICAgICAgICAudG9BcnJheSgpXHJcbiAgICAgICAgLmZpbHRlcigoYWN0aW9uKSA9PiAoPE5vdGlmaWNhYmxlUHJvcGVydHk+YWN0aW9uKS5wcm9wZXJ0eUNoYW5nZWQpXHJcbiAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiAoPE5vdGlmaWNhYmxlUHJvcGVydHk+YWN0aW9uKS5wcm9wZXJ0eUNoYW5nZWQpO1xyXG5cclxuICAgICAgcmV0dXJuIG1lcmdlKC4uLmFjdGlvblByb3BlcnR5Q2hhbmdlcyQpLnBpcGUoXHJcbiAgICAgICAgc3RhcnRXaXRoKHt9KSxcclxuICAgICAgICBtYXAoKCkgPT4gbGlzdC50b0FycmF5KCkpXHJcbiAgICAgICk7XHJcbiAgICB9KSxcclxuICAgIGRlYm91bmNlVGltZSg1MClcclxuICApO1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const ACTION_BUTTON_GROUP_COMPONENT_TOKEN = new InjectionToken('ActionButtonGroupComponentToken');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi1ncm91cC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FjdGlvbi1idXR0b24tZ3JvdXAvYWN0aW9uLWJ1dHRvbi1ncm91cC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUM5QyxJQUFJLGNBQWMsQ0FBd0IsaUNBQWlDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEljb25Qb3NpdGlvblR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24nO1xyXG5pbXBvcnQgeyBBY3Rpb25CdXR0b24gfSBmcm9tICcuL2FjdGlvbi1idXR0b24ubW9kZWwnO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFDVElPTl9CVVRUT05fR1JPVVBfQ09NUE9ORU5UX1RPS0VOID1cclxuICBuZXcgSW5qZWN0aW9uVG9rZW48QWN0aW9uQnV0dG9uR3JvdXBDb3JlPignQWN0aW9uQnV0dG9uR3JvdXBDb21wb25lbnRUb2tlbicpO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25CdXR0b25Hcm91cENvcmUge1xyXG4gIG1heEl0ZW1zOiBudW1iZXI7XHJcbiAgbWF4SXRlbXNNb2JpbGU6IG51bWJlcjtcclxuICBpdGVtczogQWN0aW9uQnV0dG9uW107XHJcbiAgbWVudUljb25Qb3M6IEljb25Qb3NpdGlvblR5cGU7XHJcbiAgbWVudUljb246IHN0cmluZztcclxuICBsYWJlbD86IHN0cmluZztcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FjdGlvbi1idXR0b24tZ3JvdXAvYWN0aW9uLWJ1dHRvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xTZXZlcml0eVR5cGUsIEZpZWxkU2l6ZVR5cGUsIE5vdGlmaWNhYmxlUHJvcGVydHkgfSBmcm9tICcuLi8uLi9jb21tb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25CdXR0b24gZXh0ZW5kcyBOb3RpZmljYWJsZVByb3BlcnR5IHtcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxuICB0b29sVGlwPzogc3RyaW5nO1xyXG4gIGlkPzogc3RyaW5nO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbiAgb3V0bGluZWQ6IGJvb2xlYW47XHJcbiAgcmFpc2VkOiBib29sZWFuO1xyXG4gIHNldmVyaXR5PzogQ29udHJvbFNldmVyaXR5VHlwZTtcclxuICBsYWJlbD86IHN0cmluZztcclxuICBzaXplPzogRmllbGRTaXplVHlwZTtcclxuICBjbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+O1xyXG59XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './action-button-group.model';
2
+ export * from './action-button.model';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24tYnV0dG9uLWdyb3VwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLWJ1dHRvbi1ncm91cC5tb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLWJ1dHRvbi5tb2RlbCc7Il19
@@ -0,0 +1,100 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, inject, Input } from '@angular/core';
3
+ import { FormControl, FormControlDirective, FormControlName, NgControl, NgModel, ReactiveFormsModule, } from '@angular/forms';
4
+ import { ERROR_PROVIDER_TOKEN } from '@verisoft/core';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ const noop = () => {
8
+ /* */
9
+ };
10
+ export class BaseFormInputComponent {
11
+ control;
12
+ ngControl;
13
+ errorService = inject(ERROR_PROVIDER_TOKEN);
14
+ formControl;
15
+ constructor(control) {
16
+ this.control = control;
17
+ this.ngControl = control;
18
+ if (this.control) {
19
+ this.ngControl.valueAccessor = this;
20
+ }
21
+ }
22
+ label;
23
+ required = false;
24
+ readonly;
25
+ disabled;
26
+ tooltip;
27
+ formDisplay = 'flex';
28
+ clearable = true;
29
+ placeholder = '';
30
+ testId;
31
+ inputId = Math.random().toString(36).substring(2);
32
+ selectionChanged = noop;
33
+ onTouch = noop;
34
+ registerOnChange(fn) {
35
+ this.selectionChanged = fn;
36
+ }
37
+ registerOnTouched(fn) {
38
+ this.onTouch = fn;
39
+ }
40
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
41
+ writeValue(value) { }
42
+ ngOnInit() {
43
+ if (this.ngControl) {
44
+ if (this.ngControl instanceof FormControlName) {
45
+ this.formControl =
46
+ this.ngControl.control ||
47
+ this.ngControl.formDirective?.form.controls[this.ngControl.name];
48
+ }
49
+ else if (this.ngControl instanceof FormControlDirective ||
50
+ this.ngControl instanceof NgModel) {
51
+ this.formControl = this.ngControl.control;
52
+ if (this.ngControl instanceof NgModel) {
53
+ this.formControl.valueChanges.subscribe(() => this.ngControl?.viewToModelUpdate(this.control?.value));
54
+ }
55
+ }
56
+ else {
57
+ this.formControl = new FormControl();
58
+ }
59
+ }
60
+ else {
61
+ this.formControl = new FormControl();
62
+ }
63
+ }
64
+ isRequired() {
65
+ if (this.ngControl) {
66
+ const validator = this.ngControl?.control?.validator?.({});
67
+ return this.required || (validator && validator['required']);
68
+ }
69
+ return this.required;
70
+ }
71
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseFormInputComponent, deps: [{ token: i1.NgControl }], target: i0.ɵɵFactoryTarget.Component });
72
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: BaseFormInputComponent, isStandalone: true, selector: "ng-component", inputs: { label: "label", required: "required", readonly: "readonly", disabled: "disabled", tooltip: "tooltip", formDisplay: "formDisplay", clearable: "clearable", placeholder: "placeholder", testId: "testId" }, ngImport: i0, template: '', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }] });
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseFormInputComponent, decorators: [{
75
+ type: Component,
76
+ args: [{
77
+ template: '',
78
+ standalone: true,
79
+ imports: [CommonModule, ReactiveFormsModule],
80
+ }]
81
+ }], ctorParameters: () => [{ type: i1.NgControl }], propDecorators: { label: [{
82
+ type: Input
83
+ }], required: [{
84
+ type: Input
85
+ }], readonly: [{
86
+ type: Input
87
+ }], disabled: [{
88
+ type: Input
89
+ }], tooltip: [{
90
+ type: Input
91
+ }], formDisplay: [{
92
+ type: Input
93
+ }], clearable: [{
94
+ type: Input
95
+ }], placeholder: [{
96
+ type: Input
97
+ }], testId: [{
98
+ type: Input
99
+ }] } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9iYXNlLWZvcm0taW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUdMLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsZUFBZSxFQUVmLFNBQVMsRUFDVCxPQUFPLEVBQ1AsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUd0RCxNQUFNLElBQUksR0FBRyxHQUFHLEVBQUU7SUFDaEIsS0FBSztBQUNQLENBQUMsQ0FBQztBQU9GLE1BQU0sT0FBTyxzQkFBc0I7SUFTSjtJQU5wQixTQUFTLENBQWE7SUFFdEIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXJELFdBQVcsQ0FBZTtJQUUxQixZQUE2QixPQUFrQjtRQUFsQixZQUFPLEdBQVAsT0FBTyxDQUFXO1FBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUdELEtBQUssQ0FBVTtJQUdmLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFHakIsUUFBUSxDQUFXO0lBR25CLFFBQVEsQ0FBVztJQUduQixPQUFPLENBQVU7SUFHakIsV0FBVyxHQUFxQixN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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIEZvcm1Db250cm9sRGlyZWN0aXZlLFxyXG4gIEZvcm1Db250cm9sTmFtZSxcclxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgTmdDb250cm9sLFxyXG4gIE5nTW9kZWwsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVSUk9SX1BST1ZJREVSX1RPS0VOIH0gZnJvbSAnQHZlcmlzb2Z0L2NvcmUnO1xyXG5pbXBvcnQgeyBCYXNlSW5wdXRDb250cm9scyB9IGZyb20gJy4vbW9kZWxzL2Jhc2UtZm9ybS1pbnB1dC5tb2RlbHMnO1xyXG5cclxuY29uc3Qgbm9vcCA9ICgpID0+IHtcclxuICAvKiAqL1xyXG59O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlRm9ybUlucHV0Q29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBCYXNlSW5wdXRDb250cm9sczxhbnk+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0XHJcbntcclxuICByZWFkb25seSBuZ0NvbnRyb2w/OiBOZ0NvbnRyb2w7XHJcblxyXG4gIHJlYWRvbmx5IGVycm9yU2VydmljZSA9IGluamVjdChFUlJPUl9QUk9WSURFUl9UT0tFTik7XHJcblxyXG4gIGZvcm1Db250cm9sITogRm9ybUNvbnRyb2w7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29udHJvbDogTmdDb250cm9sKSB7XHJcbiAgICB0aGlzLm5nQ29udHJvbCA9IGNvbnRyb2w7XHJcbiAgICBpZiAodGhpcy5jb250cm9sKSB7XHJcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBsYWJlbD86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICByZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHJlYWRvbmx5ITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBkaXNhYmxlZCE6IGJvb2xlYW47XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdG9vbHRpcCE6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBmb3JtRGlzcGxheTogJ2ZsZXgnIHwgJ2Jsb2NrJyA9ICdmbGV4JztcclxuXHJcbiAgQElucHV0KClcclxuICBjbGVhcmFibGUgPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdGVzdElkPzogc3RyaW5nO1xyXG5cclxuICBpbnB1dElkID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpO1xyXG5cclxuICBzZWxlY3Rpb25DaGFuZ2VkOiBhbnkgPSBub29wO1xyXG5cclxuICBvblRvdWNoOiBhbnkgPSBub29wO1xyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xyXG4gICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbE5hbWUpIHtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sID1cclxuICAgICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wgfHxcclxuICAgICAgICAgICgodGhpcy5uZ0NvbnRyb2wuZm9ybURpcmVjdGl2ZSBhcyBGb3JtR3JvdXBEaXJlY3RpdmUpPy5mb3JtLmNvbnRyb2xzW1xyXG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5uYW1lIGFzIHN0cmluZ1xyXG4gICAgICAgICAgXSBhcyBGb3JtQ29udHJvbCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbERpcmVjdGl2ZSB8fFxyXG4gICAgICAgIHRoaXMubmdDb250cm9sIGluc3RhbmNlb2YgTmdNb2RlbFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbDtcclxuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgaW5zdGFuY2VvZiBOZ01vZGVsKSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2w/LnZpZXdUb01vZGVsVXBkYXRlKHRoaXMuY29udHJvbD8udmFsdWUpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzUmVxdWlyZWQoKSB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcclxuICAgICAgY29uc3QgdmFsaWRhdG9yID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnZhbGlkYXRvcj8uKFxyXG4gICAgICAgIHt9IGFzIEFic3RyYWN0Q29udHJvbFxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gdGhpcy5yZXF1aXJlZCB8fCAodmFsaWRhdG9yICYmIHZhbGlkYXRvclsncmVxdWlyZWQnXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1aXJlZDtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,187 @@
1
+ import { ChangeDetectorRef, Directive, EventEmitter, HostListener, inject, Input, Output, } from '@angular/core';
2
+ import { cloneDeep } from 'lodash-es';
3
+ import { Subject, takeUntil, filter, map } from 'rxjs';
4
+ import { PreventUnsavedChangesDirective } from '../../services';
5
+ import { isFormStateEqual } from './models';
6
+ import * as i0 from "@angular/core";
7
+ export class BaseFormDirective {
8
+ data;
9
+ dataChange = new EventEmitter();
10
+ statusChange = new EventEmitter();
11
+ formSubmit = new EventEmitter();
12
+ formClear = new EventEmitter();
13
+ formDestroyed$ = new Subject();
14
+ keys = [];
15
+ formGroup;
16
+ cd = inject(ChangeDetectorRef);
17
+ valueInitialization = false;
18
+ lastState;
19
+ guardViewChild;
20
+ formSubmitted = false;
21
+ guard = inject(PreventUnsavedChangesDirective);
22
+ unloadHandler(event) {
23
+ if (this.formGroup.dirty) {
24
+ event.preventDefault();
25
+ }
26
+ }
27
+ canDeactivate() {
28
+ if (this.formGroup.dirty && !this.formSubmitted) {
29
+ const result = this.guard.showConfirmationDialog();
30
+ return result;
31
+ }
32
+ return true;
33
+ }
34
+ ngOnInit() {
35
+ this.initializeFormGroup();
36
+ }
37
+ ngOnChanges(changes) {
38
+ if (changes['data'] && this.formGroup) {
39
+ this.valueInitialization = true;
40
+ const dirty = this.formGroup.dirty;
41
+ this.formGroup.patchValue(this.fromModel(this.data), {
42
+ emitEvent: false,
43
+ onlySelf: true,
44
+ });
45
+ this.formGroup.updateValueAndValidity();
46
+ if (!dirty) {
47
+ this.formGroup.markAsPristine();
48
+ }
49
+ this.valueInitialization = false;
50
+ this.createAndEmitIfFormStateChanged();
51
+ }
52
+ }
53
+ ngAfterViewInit() {
54
+ this.cd.detectChanges();
55
+ }
56
+ ngOnDestroy() {
57
+ this.formDestroyed$.next();
58
+ this.formDestroyed$.complete();
59
+ }
60
+ createCompleteData() {
61
+ const change = this.toModel(this.formGroup?.value);
62
+ this.recursiveObjectAttributesTransformation(change);
63
+ const updatedData = this.applyChanges(cloneDeep(this.data), cloneDeep(change));
64
+ return updatedData;
65
+ }
66
+ submit() {
67
+ this.formSubmitted = true;
68
+ this.formGroup.markAllAsTouched();
69
+ if (!this.formGroup.invalid) {
70
+ this.formSubmit.emit(this.createCompleteData());
71
+ }
72
+ this.formGroup.markAsPristine();
73
+ }
74
+ clear() {
75
+ this.formClear.emit();
76
+ }
77
+ initializeFormGroup() {
78
+ this.formGroup = this.createFormGroup();
79
+ this.valueInitialization = true;
80
+ this.formGroup.patchValue(this.fromModel(this.data), {
81
+ emitEvent: false,
82
+ onlySelf: true,
83
+ });
84
+ this.formGroup.markAsPristine();
85
+ this.initValueChanges();
86
+ this.initStatusChanges();
87
+ this.valueInitialization = false;
88
+ }
89
+ initValueChanges() {
90
+ this.formGroup.valueChanges
91
+ .pipe(takeUntil(this.formDestroyed$), filter(() => !this.valueInitialization), map((value) => {
92
+ const change = this.toModel(value);
93
+ this.recursiveObjectAttributesTransformation(change);
94
+ const updatedData = this.applyChanges(cloneDeep(this.data), cloneDeep(change));
95
+ return updatedData;
96
+ }))
97
+ .subscribe((updatedData) => {
98
+ this.dataChange.emit(updatedData);
99
+ });
100
+ }
101
+ initStatusChanges() {
102
+ this.formGroup.statusChanges
103
+ .pipe(takeUntil(this.formDestroyed$))
104
+ .subscribe(() => {
105
+ if (!this.valueInitialization) {
106
+ this.createAndEmitIfFormStateChanged();
107
+ }
108
+ });
109
+ this.createAndEmitIfFormStateChanged();
110
+ }
111
+ createAndEmitIfFormStateChanged() {
112
+ const formState = {
113
+ valid: !this.formGroup.invalid,
114
+ dirty: this.formGroup.dirty,
115
+ };
116
+ if (!isFormStateEqual(formState, this.lastState)) {
117
+ this.lastState = formState;
118
+ this.statusChange.emit(formState);
119
+ }
120
+ }
121
+ applyChanges(data, changes) {
122
+ return Object.assign(data || {}, changes);
123
+ }
124
+ toModel(data) {
125
+ return data || {};
126
+ }
127
+ fromModel(data) {
128
+ return { ...(data || {}) };
129
+ }
130
+ recursiveObjectAttributesTransformation(obj) {
131
+ this.recursiveObjectAttributesTraversal(obj, this.transformEmptyStringToNullStringFn);
132
+ }
133
+ recursiveObjectAttributesTraversal(obj, transformationFn) {
134
+ if (obj === null ||
135
+ transformationFn === null ||
136
+ typeof transformationFn !== 'function') {
137
+ return;
138
+ }
139
+ const traverse = (obj) => {
140
+ for (const key in obj) {
141
+ // eslint-disable-next-line no-prototype-builtins
142
+ if (obj.hasOwnProperty(key)) {
143
+ transformationFn(obj, key);
144
+ if (typeof obj[key] === 'object') {
145
+ traverse(obj[key]);
146
+ }
147
+ }
148
+ }
149
+ };
150
+ traverse(obj);
151
+ }
152
+ transformEmptyStringToNullStringFn(obj, key) {
153
+ // if empty string - transformation to null string
154
+ if (typeof obj[key] === 'string' && obj[key] === '') {
155
+ try {
156
+ obj[key] = null;
157
+ }
158
+ catch (error) {
159
+ console.error(`Cannot modify ${key}: ${error}`);
160
+ }
161
+ }
162
+ }
163
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
164
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: BaseFormDirective, isStandalone: true, selector: "[v-baseForm]", inputs: { data: "data" }, outputs: { dataChange: "dataChange", statusChange: "statusChange", formSubmit: "formSubmit", formClear: "formClear" }, host: { listeners: { "window:beforeunload": "unloadHandler($event)" } }, usesOnChanges: true, ngImport: i0 });
165
+ }
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseFormDirective, decorators: [{
167
+ type: Directive,
168
+ args: [{
169
+ // eslint-disable-next-line @angular-eslint/directive-selector
170
+ selector: '[v-baseForm]',
171
+ standalone: true,
172
+ }]
173
+ }], propDecorators: { data: [{
174
+ type: Input
175
+ }], dataChange: [{
176
+ type: Output
177
+ }], statusChange: [{
178
+ type: Output
179
+ }], formSubmit: [{
180
+ type: Output
181
+ }], formClear: [{
182
+ type: Output
183
+ }], unloadHandler: [{
184
+ type: HostListener,
185
+ args: ['window:beforeunload', ['$event']]
186
+ }] } });
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9iYXNlLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5FLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFNdkQsTUFBTSxPQUFnQixpQkFBaUI7SUFHNUIsSUFBSSxDQUFXO0lBQ2QsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFDbkMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7SUFDN0MsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFDbkMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFL0MsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDckMsSUFBSSxHQUF1RSxFQUFFLENBQUM7SUFDOUUsU0FBUyxDQUFhO0lBQ3RCLEVBQUUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvQixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDNUIsU0FBUyxDQUFhO0lBQ3RCLGNBQWMsQ0FBYTtJQUMzQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ1osS0FBSyxHQUFH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USxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFJVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFhUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgRGlyZWN0aXZlLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFByZXZlbnRVbnNhdmVkQ2hhbmdlc0NvcmUgfSBmcm9tICcuLi8uLi9jb21tb24nO1xyXG5pbXBvcnQgeyBQcmV2ZW50VW5zYXZlZENoYW5nZXNEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IEZvcm1TdGF0ZSwgaXNGb3JtU3RhdGVFcXVhbCB9IGZyb20gJy4vbW9kZWxzJztcclxuQERpcmVjdGl2ZSh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ1t2LWJhc2VGb3JtXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGb3JtRGlyZWN0aXZlPFQgZXh0ZW5kcyBvYmplY3Q+XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBQcmV2ZW50VW5zYXZlZENoYW5nZXNDb3JlXHJcbntcclxuICBASW5wdXQoKSBkYXRhITogVCB8IGFueTtcclxuICBAT3V0cHV0KCkgZGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuICBAT3V0cHV0KCkgc3RhdHVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtU3RhdGU+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XHJcbiAgQE91dHB1dCgpIGZvcm1DbGVhciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgZm9ybURlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIGtleXM6IHsga2V5OiBzdHJpbmc7IGFsaWFzPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nOyByZWFkT25seTogc3RyaW5nIH1bXSA9IFtdO1xyXG4gIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgdmFsdWVJbml0aWFsaXphdGlvbiA9IGZhbHNlO1xyXG4gIGxhc3RTdGF0ZSE6IEZvcm1TdGF0ZTtcclxuICBndWFyZFZpZXdDaGlsZCE6IFZpZXdDaGlsZDtcclxuICBmb3JtU3VibWl0dGVkID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIGd1YXJkID0gaW5qZWN0KFByZXZlbnRVbnNhdmVkQ2hhbmdlc0RpcmVjdGl2ZSk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbJyRldmVudCddKVxyXG4gIHVubG9hZEhhbmRsZXIoZXZlbnQ6IEJlZm9yZVVubG9hZEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuZGlydHkpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbkRlYWN0aXZhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC5kaXJ0eSAmJiAhdGhpcy5mb3JtU3VibWl0dGVkKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3VhcmQuc2hvd0NvbmZpcm1hdGlvbkRpYWxvZygpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVGb3JtR3JvdXAoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10gJiYgdGhpcy5mb3JtR3JvdXApIHtcclxuICAgICAgdGhpcy52YWx1ZUluaXRpYWxpemF0aW9uID0gdHJ1ZTtcclxuICAgICAgY29uc3QgZGlydHkgPSB0aGlzLmZvcm1Hcm91cC5kaXJ0eTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUodGhpcy5mcm9tTW9kZWwodGhpcy5kYXRhKSwge1xyXG4gICAgICAgIGVtaXRFdmVudDogZmFsc2UsXHJcbiAgICAgICAgb25seVNlbGY6IHRydWUsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5mb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICBpZiAoIWRpcnR5KSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy52YWx1ZUluaXRpYWxpemF0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY3JlYXRlQW5kRW1pdElmRm9ybVN0YXRlQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybURlc3Ryb3llZCQubmV4dCgpO1xyXG4gICAgdGhpcy5mb3JtRGVzdHJveWVkJC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgYWJzdHJhY3QgY3JlYXRlRm9ybUdyb3VwKCk6IEZvcm1Hcm91cDtcclxuXHJcbiAgY3JlYXRlQ29tcGxldGVEYXRhKCkge1xyXG4gICAgY29uc3QgY2hhbmdlID0gdGhpcy50b01vZGVsKHRoaXMuZm9ybUdyb3VwPy52YWx1ZSk7XHJcbiAgICB0aGlzLnJlY3Vyc2l2ZU9iamVjdEF0dHJpYnV0ZXNUcmFuc2Zvcm1hdGlvbihjaGFuZ2UpO1xyXG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmFwcGx5Q2hhbmdlcyhcclxuICAgICAgY2xvbmVEZWVwKHRoaXMuZGF0YSksXHJcbiAgICAgIGNsb25lRGVlcChjaGFuZ2UpXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiB1cGRhdGVkRGF0YTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIHRoaXMuZm9ybVN1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XHJcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5mb3JtU3VibWl0LmVtaXQodGhpcy5jcmVhdGVDb21wbGV0ZURhdGEoKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNQcmlzdGluZSgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLmZvcm1DbGVhci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtR3JvdXAoKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XHJcbiAgICB0aGlzLnZhbHVlSW5pdGlhbGl6YXRpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmZyb21Nb2RlbCh0aGlzLmRhdGEpLCB7XHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2UsXHJcbiAgICAgIG9ubHlTZWxmOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtR3JvdXAubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIHRoaXMuaW5pdFZhbHVlQ2hhbmdlcygpO1xyXG4gICAgdGhpcy5pbml0U3RhdHVzQ2hhbmdlcygpO1xyXG4gICAgdGhpcy52YWx1ZUluaXRpYWxpemF0aW9uID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRWYWx1ZUNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZm9ybURlc3Ryb3llZCQpLFxyXG4gICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy52YWx1ZUluaXRpYWxpemF0aW9uKSxcclxuICAgICAgICBtYXAoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjaGFuZ2UgPSB0aGlzLnRvTW9kZWwodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5yZWN1cnNpdmVPYmplY3RBdHRyaWJ1dGVzVHJhbnNmb3JtYXRpb24oY2hhbmdlKTtcclxuICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gdGhpcy5hcHBseUNoYW5nZXMoXHJcbiAgICAgICAgICAgIGNsb25lRGVlcCh0aGlzLmRhdGEpLFxyXG4gICAgICAgICAgICBjbG9uZURlZXAoY2hhbmdlKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybiB1cGRhdGVkRGF0YTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHVwZGF0ZWREYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQodXBkYXRlZERhdGEpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFN0YXR1c0NoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5zdGF0dXNDaGFuZ2VzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmZvcm1EZXN0cm95ZWQkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlSW5pdGlhbGl6YXRpb24pIHtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlQW5kRW1pdElmRm9ybVN0YXRlQ2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5jcmVhdGVBbmRFbWl0SWZGb3JtU3RhdGVDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUFuZEVtaXRJZkZvcm1TdGF0ZUNoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBmb3JtU3RhdGU6IEZvcm1TdGF0ZSA9IHtcclxuICAgICAgdmFsaWQ6ICF0aGlzLmZvcm1Hcm91cC5pbnZhbGlkLFxyXG4gICAgICBkaXJ0eTogdGhpcy5mb3JtR3JvdXAuZGlydHksXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICghaXNGb3JtU3RhdGVFcXVhbChmb3JtU3RhdGUsIHRoaXMubGFzdFN0YXRlKSkge1xyXG4gICAgICB0aGlzLmxhc3RTdGF0ZSA9IGZvcm1TdGF0ZTtcclxuICAgICAgdGhpcy5zdGF0dXNDaGFuZ2UuZW1pdChmb3JtU3RhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFwcGx5Q2hhbmdlcyhkYXRhOiBULCBjaGFuZ2VzOiBQYXJ0aWFsPFQ+KTogVCB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihkYXRhIHx8ICh7fSBhcyBUKSwgY2hhbmdlcyk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgdG9Nb2RlbChkYXRhOiBUKTogUGFydGlhbDxUPiB7XHJcbiAgICByZXR1cm4gZGF0YSB8fCB7fTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBmcm9tTW9kZWwoZGF0YTogVCk6IFQge1xyXG4gICAgcmV0dXJuIHsgLi4uKGRhdGEgfHwge30pIH0gYXMgVDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVjdXJzaXZlT2JqZWN0QXR0cmlidXRlc1RyYW5zZm9ybWF0aW9uKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnJlY3Vyc2l2ZU9iamVjdEF0dHJpYnV0ZXNUcmF2ZXJzYWwoXHJcbiAgICAgIG9iaixcclxuICAgICAgdGhpcy50cmFuc2Zvcm1FbXB0eVN0cmluZ1RvTnVsbFN0cmluZ0ZuXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWN1cnNpdmVPYmplY3RBdHRyaWJ1dGVzVHJhdmVyc2FsKFxyXG4gICAgb2JqOiBhbnksXHJcbiAgICB0cmFuc2Zvcm1hdGlvbkZuOiAob2JqOiBhbnksIGtleTogc3RyaW5nKSA9PiB2b2lkXHJcbiAgKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIG9iaiA9PT0gbnVsbCB8fFxyXG4gICAgICB0cmFuc2Zvcm1hdGlvbkZuID09PSBudWxsIHx8XHJcbiAgICAgIHR5cGVvZiB0cmFuc2Zvcm1hdGlvbkZuICE9PSAnZnVuY3Rpb24nXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRyYXZlcnNlID0gKG9iajogYW55KSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcclxuICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgIHRyYW5zZm9ybWF0aW9uRm4ob2JqLCBrZXkpO1xyXG5cclxuICAgICAgICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHRyYXZlcnNlKG9ialtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdHJhdmVyc2Uob2JqKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtRW1wdHlTdHJpbmdUb051bGxTdHJpbmdGbihvYmo6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgIC8vIGlmIGVtcHR5IHN0cmluZyAtIHRyYW5zZm9ybWF0aW9uIHRvIG51bGwgc3RyaW5nXHJcbiAgICBpZiAodHlwZW9mIG9ialtrZXldID09PSAnc3RyaW5nJyAmJiBvYmpba2V5XSA9PT0gJycpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBvYmpba2V5XSA9IG51bGw7XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgQ2Fubm90IG1vZGlmeSAke2tleX06ICR7ZXJyb3J9YClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=