@igo2/common 18.0.0 → 18.0.1-next.2

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 (312) hide show
  1. package/entity/src/entity-table/entity-table.theming.scss +1 -1
  2. package/fesm2022/igo2-common-action.mjs +16 -16
  3. package/fesm2022/igo2-common-action.mjs.map +1 -1
  4. package/fesm2022/igo2-common-backdrop.mjs +8 -8
  5. package/fesm2022/igo2-common-backdrop.mjs.map +1 -1
  6. package/fesm2022/igo2-common-badge.mjs +7 -7
  7. package/fesm2022/igo2-common-badge.mjs.map +1 -1
  8. package/fesm2022/igo2-common-clickout.mjs +7 -7
  9. package/fesm2022/igo2-common-clickout.mjs.map +1 -1
  10. package/fesm2022/igo2-common-clone.mjs +7 -7
  11. package/fesm2022/igo2-common-clone.mjs.map +1 -1
  12. package/fesm2022/igo2-common-collapsible.mjs +11 -11
  13. package/fesm2022/igo2-common-collapsible.mjs.map +1 -1
  14. package/fesm2022/igo2-common-color.mjs +9 -9
  15. package/fesm2022/igo2-common-color.mjs.map +1 -1
  16. package/fesm2022/igo2-common-confirm-dialog.mjs +11 -11
  17. package/fesm2022/igo2-common-confirm-dialog.mjs.map +1 -1
  18. package/fesm2022/igo2-common-context-menu.mjs +10 -10
  19. package/fesm2022/igo2-common-context-menu.mjs.map +1 -1
  20. package/fesm2022/igo2-common-custom-html.mjs +11 -11
  21. package/fesm2022/igo2-common-custom-html.mjs.map +1 -1
  22. package/fesm2022/igo2-common-dom.mjs +7 -7
  23. package/fesm2022/igo2-common-dom.mjs.map +1 -1
  24. package/fesm2022/igo2-common-drag-drop.mjs +10 -10
  25. package/fesm2022/igo2-common-drag-drop.mjs.map +1 -1
  26. package/fesm2022/igo2-common-dynamic-component.mjs +14 -14
  27. package/fesm2022/igo2-common-dynamic-component.mjs.map +1 -1
  28. package/fesm2022/igo2-common-entity.mjs +33 -33
  29. package/fesm2022/igo2-common-entity.mjs.map +1 -1
  30. package/fesm2022/igo2-common-flexible.mjs +7 -7
  31. package/fesm2022/igo2-common-flexible.mjs.map +1 -1
  32. package/fesm2022/igo2-common-form.mjs +57 -57
  33. package/fesm2022/igo2-common-form.mjs.map +1 -1
  34. package/fesm2022/igo2-common-home-button.mjs +8 -8
  35. package/fesm2022/igo2-common-home-button.mjs.map +1 -1
  36. package/fesm2022/igo2-common-icon.mjs +13 -14
  37. package/fesm2022/igo2-common-icon.mjs.map +1 -1
  38. package/fesm2022/igo2-common-image.mjs +10 -10
  39. package/fesm2022/igo2-common-image.mjs.map +1 -1
  40. package/fesm2022/igo2-common-interactive-tour.mjs +14 -14
  41. package/fesm2022/igo2-common-interactive-tour.mjs.map +1 -1
  42. package/fesm2022/igo2-common-json-dialog.mjs +11 -11
  43. package/fesm2022/igo2-common-json-dialog.mjs.map +1 -1
  44. package/fesm2022/igo2-common-keyvalue.mjs +7 -7
  45. package/fesm2022/igo2-common-keyvalue.mjs.map +1 -1
  46. package/fesm2022/igo2-common-list.mjs +11 -11
  47. package/fesm2022/igo2-common-list.mjs.map +1 -1
  48. package/fesm2022/igo2-common-panel.mjs +8 -8
  49. package/fesm2022/igo2-common-panel.mjs.map +1 -1
  50. package/fesm2022/igo2-common-select-value-dialog.mjs +11 -11
  51. package/fesm2022/igo2-common-select-value-dialog.mjs.map +1 -1
  52. package/fesm2022/igo2-common-sidenav.mjs +7 -7
  53. package/fesm2022/igo2-common-sidenav.mjs.map +1 -1
  54. package/fesm2022/igo2-common-spinner.mjs +11 -11
  55. package/fesm2022/igo2-common-spinner.mjs.map +1 -1
  56. package/fesm2022/igo2-common-stop-propagation.mjs +10 -10
  57. package/fesm2022/igo2-common-stop-propagation.mjs.map +1 -1
  58. package/fesm2022/igo2-common-table.mjs +8 -8
  59. package/fesm2022/igo2-common-table.mjs.map +1 -1
  60. package/fesm2022/igo2-common-tool.mjs +15 -15
  61. package/fesm2022/igo2-common-tool.mjs.map +1 -1
  62. package/fesm2022/igo2-common-widget.mjs +15 -15
  63. package/fesm2022/igo2-common-widget.mjs.map +1 -1
  64. package/fesm2022/igo2-common-workspace.mjs +20 -20
  65. package/fesm2022/igo2-common-workspace.mjs.map +1 -1
  66. package/package.json +8 -76
  67. package/src/style/style.scss +1 -1
  68. package/style/style.css +4 -1
  69. package/esm2022/action/action.module.mjs +0 -19
  70. package/esm2022/action/actionbar/actionbar-item.component.mjs +0 -192
  71. package/esm2022/action/actionbar/actionbar.component.mjs +0 -277
  72. package/esm2022/action/actionbar/actionbar.module.mjs +0 -19
  73. package/esm2022/action/igo2-common-action.mjs +0 -5
  74. package/esm2022/action/public_api.mjs +0 -5
  75. package/esm2022/action/shared/action.enums.mjs +0 -7
  76. package/esm2022/action/shared/action.interfaces.mjs +0 -2
  77. package/esm2022/action/shared/index.mjs +0 -4
  78. package/esm2022/action/shared/store.mjs +0 -8
  79. package/esm2022/backdrop/backdrop.component.mjs +0 -21
  80. package/esm2022/backdrop/backdrop.module.mjs +0 -25
  81. package/esm2022/backdrop/igo2-common-backdrop.mjs +0 -5
  82. package/esm2022/backdrop/public_api.mjs +0 -3
  83. package/esm2022/badge/badge-icon.directive.mjs +0 -149
  84. package/esm2022/badge/badge-icon.module.mjs +0 -25
  85. package/esm2022/badge/igo2-common-badge.mjs +0 -5
  86. package/esm2022/badge/public_api.mjs +0 -3
  87. package/esm2022/clickout/clickout.directive.mjs +0 -32
  88. package/esm2022/clickout/clickout.module.mjs +0 -25
  89. package/esm2022/clickout/igo2-common-clickout.mjs +0 -5
  90. package/esm2022/clickout/public_api.mjs +0 -3
  91. package/esm2022/clone/clone.module.mjs +0 -25
  92. package/esm2022/clone/clone.pipe.mjs +0 -25
  93. package/esm2022/clone/igo2-common-clone.mjs +0 -5
  94. package/esm2022/clone/public_api.mjs +0 -3
  95. package/esm2022/collapsible/collapse.directive.mjs +0 -57
  96. package/esm2022/collapsible/collapsible.component.mjs +0 -38
  97. package/esm2022/collapsible/collapsible.module.mjs +0 -26
  98. package/esm2022/collapsible/igo2-common-collapsible.mjs +0 -5
  99. package/esm2022/collapsible/public_api.mjs +0 -10
  100. package/esm2022/color/color-picker-form-field/color-picker-form-field.component.mjs +0 -104
  101. package/esm2022/color/color-picker-form-field/color-picker-form-field.module.mjs +0 -19
  102. package/esm2022/color/color-picker-form-field/index.mjs +0 -3
  103. package/esm2022/color/igo2-common-color.mjs +0 -5
  104. package/esm2022/color/public_api.mjs +0 -2
  105. package/esm2022/confirm-dialog/confirm-dialog.component.mjs +0 -31
  106. package/esm2022/confirm-dialog/confirm-dialog.interface.mjs +0 -2
  107. package/esm2022/confirm-dialog/confirm-dialog.module.mjs +0 -27
  108. package/esm2022/confirm-dialog/confirm-dialog.service.mjs +0 -35
  109. package/esm2022/confirm-dialog/igo2-common-confirm-dialog.mjs +0 -5
  110. package/esm2022/confirm-dialog/public_api.mjs +0 -5
  111. package/esm2022/context-menu/context-menu.directive.mjs +0 -109
  112. package/esm2022/context-menu/context-menu.module.mjs +0 -26
  113. package/esm2022/context-menu/igo2-common-context-menu.mjs +0 -5
  114. package/esm2022/context-menu/long-press.directive.mjs +0 -65
  115. package/esm2022/context-menu/public_api.mjs +0 -10
  116. package/esm2022/custom-html/custom-html.component.mjs +0 -21
  117. package/esm2022/custom-html/custom-html.module.mjs +0 -25
  118. package/esm2022/custom-html/custom-html.pipe.mjs +0 -23
  119. package/esm2022/custom-html/igo2-common-custom-html.mjs +0 -5
  120. package/esm2022/custom-html/public_api.mjs +0 -10
  121. package/esm2022/dom/dom.interfaces.mjs +0 -2
  122. package/esm2022/dom/dom.module.mjs +0 -27
  123. package/esm2022/dom/dom.service.mjs +0 -35
  124. package/esm2022/dom/igo2-common-dom.mjs +0 -5
  125. package/esm2022/dom/public_api.mjs +0 -4
  126. package/esm2022/drag-drop/drag-drop.directive.mjs +0 -82
  127. package/esm2022/drag-drop/drag-drop.module.mjs +0 -26
  128. package/esm2022/drag-drop/igo2-common-drag-drop.mjs +0 -5
  129. package/esm2022/drag-drop/public_api.mjs +0 -4
  130. package/esm2022/drag-drop/tree-drag-drop/index.mjs +0 -3
  131. package/esm2022/drag-drop/tree-drag-drop/tree-drag-drop.directive.mjs +0 -391
  132. package/esm2022/drag-drop/tree-drag-drop/tree-drag-drop.interface.mjs +0 -2
  133. package/esm2022/dynamic-component/dynamic-component.module.mjs +0 -19
  134. package/esm2022/dynamic-component/dynamic-outlet/dynamic-outlet.component.mjs +0 -129
  135. package/esm2022/dynamic-component/dynamic-outlet/dynamic-outlet.module.mjs +0 -19
  136. package/esm2022/dynamic-component/igo2-common-dynamic-component.mjs +0 -5
  137. package/esm2022/dynamic-component/public_api.mjs +0 -5
  138. package/esm2022/dynamic-component/shared/dynamic-component.interfaces.mjs +0 -2
  139. package/esm2022/dynamic-component/shared/dynamic-component.mjs +0 -183
  140. package/esm2022/dynamic-component/shared/dynamic-component.service.mjs +0 -30
  141. package/esm2022/dynamic-component/shared/index.mjs +0 -4
  142. package/esm2022/entity/entity-selector/entity-selector.component.mjs +0 -174
  143. package/esm2022/entity/entity-selector/entity-selector.module.mjs +0 -19
  144. package/esm2022/entity/entity-selector/index.mjs +0 -3
  145. package/esm2022/entity/entity-table/entity-table-row.directive.mjs +0 -138
  146. package/esm2022/entity/entity-table/entity-table.component.mjs +0 -883
  147. package/esm2022/entity/entity-table/entity-table.module.mjs +0 -19
  148. package/esm2022/entity/entity-table/index.mjs +0 -3
  149. package/esm2022/entity/entity-table-paginator/entity-table-paginator.component.mjs +0 -158
  150. package/esm2022/entity/entity-table-paginator/entity-table-paginator.interface.mjs +0 -2
  151. package/esm2022/entity/entity-table-paginator/entity-table-paginator.module.mjs +0 -19
  152. package/esm2022/entity/entity-table-paginator/index.mjs +0 -4
  153. package/esm2022/entity/entity.module.mjs +0 -30
  154. package/esm2022/entity/igo2-common-entity.mjs +0 -5
  155. package/esm2022/entity/public_api.mjs +0 -6
  156. package/esm2022/entity/shared/entity.enums.mjs +0 -28
  157. package/esm2022/entity/shared/entity.interfaces.mjs +0 -2
  158. package/esm2022/entity/shared/entity.utils.mjs +0 -73
  159. package/esm2022/entity/shared/index.mjs +0 -10
  160. package/esm2022/entity/shared/state.mjs +0 -194
  161. package/esm2022/entity/shared/store.mjs +0 -322
  162. package/esm2022/entity/shared/strategies/filter-custom-function.mjs +0 -80
  163. package/esm2022/entity/shared/strategies/filter-selection.mjs +0 -81
  164. package/esm2022/entity/shared/strategies/index.mjs +0 -4
  165. package/esm2022/entity/shared/strategies/strategy.mjs +0 -82
  166. package/esm2022/entity/shared/transaction.mjs +0 -329
  167. package/esm2022/entity/shared/view.mjs +0 -330
  168. package/esm2022/entity/shared/watcher.mjs +0 -135
  169. package/esm2022/environment/environment.interface.mjs +0 -2
  170. package/esm2022/environment/igo2-common-environment.mjs +0 -5
  171. package/esm2022/environment/public_api.mjs +0 -2
  172. package/esm2022/flexible/flexible.component.mjs +0 -137
  173. package/esm2022/flexible/flexible.module.mjs +0 -25
  174. package/esm2022/flexible/flexible.type.mjs +0 -2
  175. package/esm2022/flexible/igo2-common-flexible.mjs +0 -5
  176. package/esm2022/flexible/public_api.mjs +0 -4
  177. package/esm2022/form/form/form.component.mjs +0 -105
  178. package/esm2022/form/form/form.module.mjs +0 -19
  179. package/esm2022/form/form/index.mjs +0 -3
  180. package/esm2022/form/form-dialog/form-dialog.component.mjs +0 -94
  181. package/esm2022/form/form-dialog/form-dialog.interface.mjs +0 -2
  182. package/esm2022/form/form-dialog/form-dialog.module.mjs +0 -31
  183. package/esm2022/form/form-dialog/form-dialog.service.mjs +0 -30
  184. package/esm2022/form/form-dialog/index.mjs +0 -5
  185. package/esm2022/form/form-field/form-field-select.component.mjs +0 -117
  186. package/esm2022/form/form-field/form-field-text.component.mjs +0 -126
  187. package/esm2022/form/form-field/form-field-textarea.component.mjs +0 -95
  188. package/esm2022/form/form-field/form-field.component.mjs +0 -65
  189. package/esm2022/form/form-field/form-field.directive.mjs +0 -11
  190. package/esm2022/form/form-field/form-field.module.mjs +0 -23
  191. package/esm2022/form/form-field/index.mjs +0 -7
  192. package/esm2022/form/form-group/form-group.component.mjs +0 -81
  193. package/esm2022/form/form-group/form-group.module.mjs +0 -19
  194. package/esm2022/form/form-group/index.mjs +0 -3
  195. package/esm2022/form/form.module.mjs +0 -32
  196. package/esm2022/form/igo2-common-form.mjs +0 -5
  197. package/esm2022/form/public_api.mjs +0 -7
  198. package/esm2022/form/shared/form-field-component.mjs +0 -7
  199. package/esm2022/form/shared/form-field.service.mjs +0 -28
  200. package/esm2022/form/shared/form.interfaces.mjs +0 -2
  201. package/esm2022/form/shared/form.service.mjs +0 -82
  202. package/esm2022/form/shared/form.utils.mjs +0 -41
  203. package/esm2022/form/shared/index.mjs +0 -6
  204. package/esm2022/home-button/home-button.component.mjs +0 -25
  205. package/esm2022/home-button/home-button.module.mjs +0 -19
  206. package/esm2022/home-button/igo2-common-home-button.mjs +0 -5
  207. package/esm2022/home-button/public_api.mjs +0 -3
  208. package/esm2022/icon/icon/icon.component.mjs +0 -38
  209. package/esm2022/icon/icon.provider.mjs +0 -14
  210. package/esm2022/icon/igo2-common-icon.mjs +0 -5
  211. package/esm2022/icon/public_api.mjs +0 -4
  212. package/esm2022/icon/shared/icon.interface.mjs +0 -2
  213. package/esm2022/icon/shared/icon.service.mjs +0 -26
  214. package/esm2022/icon/shared/icons.mjs +0 -40
  215. package/esm2022/icon/shared/index.mjs +0 -4
  216. package/esm2022/igo2-common.mjs +0 -5
  217. package/esm2022/image/igo2-common-image.mjs +0 -5
  218. package/esm2022/image/image-error.directive.mjs +0 -35
  219. package/esm2022/image/image.module.mjs +0 -26
  220. package/esm2022/image/public_api.mjs +0 -7
  221. package/esm2022/image/secure-image.pipe.mjs +0 -66
  222. package/esm2022/interactive-tour/igo2-common-interactive-tour.mjs +0 -5
  223. package/esm2022/interactive-tour/interactive-tour.component.mjs +0 -131
  224. package/esm2022/interactive-tour/interactive-tour.interface.mjs +0 -2
  225. package/esm2022/interactive-tour/interactive-tour.loader.mjs +0 -49
  226. package/esm2022/interactive-tour/interactive-tour.module.mjs +0 -19
  227. package/esm2022/interactive-tour/interactive-tour.service.mjs +0 -303
  228. package/esm2022/interactive-tour/public_api.mjs +0 -6
  229. package/esm2022/json-dialog/igo2-common-json-dialog.mjs +0 -5
  230. package/esm2022/json-dialog/json-dialog.component.mjs +0 -38
  231. package/esm2022/json-dialog/json-dialog.module.mjs +0 -26
  232. package/esm2022/json-dialog/json-dialog.service.mjs +0 -26
  233. package/esm2022/json-dialog/public_api.mjs +0 -4
  234. package/esm2022/keyvalue/igo2-common-keyvalue.mjs +0 -5
  235. package/esm2022/keyvalue/keyvalue.module.mjs +0 -25
  236. package/esm2022/keyvalue/keyvalue.pipe.mjs +0 -19
  237. package/esm2022/keyvalue/public_api.mjs +0 -3
  238. package/esm2022/list/igo2-common-list.mjs +0 -5
  239. package/esm2022/list/list-item.directive.mjs +0 -166
  240. package/esm2022/list/list.component.mjs +0 -252
  241. package/esm2022/list/list.module.mjs +0 -26
  242. package/esm2022/list/public_api.mjs +0 -7
  243. package/esm2022/panel/igo2-common-panel.mjs +0 -5
  244. package/esm2022/panel/panel.component.mjs +0 -30
  245. package/esm2022/panel/panel.module.mjs +0 -19
  246. package/esm2022/panel/public_api.mjs +0 -3
  247. package/esm2022/public_api.mjs +0 -20
  248. package/esm2022/select-value-dialog/igo2-common-select-value-dialog.mjs +0 -5
  249. package/esm2022/select-value-dialog/public_api.mjs +0 -6
  250. package/esm2022/select-value-dialog/select-value-check-radio-dialog.component.mjs +0 -103
  251. package/esm2022/select-value-dialog/select-value-dialog.enums.mjs +0 -6
  252. package/esm2022/select-value-dialog/select-value-dialog.interface.mjs +0 -2
  253. package/esm2022/select-value-dialog/select-value-dialog.module.mjs +0 -27
  254. package/esm2022/select-value-dialog/select-value-dialog.service.mjs +0 -29
  255. package/esm2022/sidenav/igo2-common-sidenav.mjs +0 -5
  256. package/esm2022/sidenav/public_api.mjs +0 -3
  257. package/esm2022/sidenav/sidenav-shim.directive.mjs +0 -58
  258. package/esm2022/sidenav/sidenav.module.mjs +0 -25
  259. package/esm2022/spinner/igo2-common-spinner.mjs +0 -5
  260. package/esm2022/spinner/public_api.mjs +0 -4
  261. package/esm2022/spinner/spinner-activity.directive.mjs +0 -56
  262. package/esm2022/spinner/spinner.component.mjs +0 -29
  263. package/esm2022/spinner/spinner.module.mjs +0 -26
  264. package/esm2022/stop-propagation/igo2-common-stop-propagation.mjs +0 -5
  265. package/esm2022/stop-propagation/public_api.mjs +0 -10
  266. package/esm2022/stop-propagation/stop-drop-propagation.directive.mjs +0 -21
  267. package/esm2022/stop-propagation/stop-propagation.directive.mjs +0 -20
  268. package/esm2022/stop-propagation/stop-propagation.module.mjs +0 -26
  269. package/esm2022/table/igo2-common-table.mjs +0 -5
  270. package/esm2022/table/public_api.mjs +0 -7
  271. package/esm2022/table/table-action-color.enum.mjs +0 -7
  272. package/esm2022/table/table-database.mjs +0 -28
  273. package/esm2022/table/table-datasource.mjs +0 -66
  274. package/esm2022/table/table-model.interface.mjs +0 -2
  275. package/esm2022/table/table.component.mjs +0 -143
  276. package/esm2022/table/table.module.mjs +0 -25
  277. package/esm2022/tool/igo2-common-tool.mjs +0 -5
  278. package/esm2022/tool/public_api.mjs +0 -4
  279. package/esm2022/tool/shared/index.mjs +0 -6
  280. package/esm2022/tool/shared/tool-component.mjs +0 -9
  281. package/esm2022/tool/shared/tool.interface.mjs +0 -2
  282. package/esm2022/tool/shared/tool.service.mjs +0 -43
  283. package/esm2022/tool/shared/toolbox.enums.mjs +0 -2
  284. package/esm2022/tool/shared/toolbox.mjs +0 -192
  285. package/esm2022/tool/tool.module.mjs +0 -28
  286. package/esm2022/tool/toolbox/index.mjs +0 -3
  287. package/esm2022/tool/toolbox/toolbox.animation.mjs +0 -10
  288. package/esm2022/tool/toolbox/toolbox.component.mjs +0 -241
  289. package/esm2022/tool/toolbox/toolbox.module.mjs +0 -19
  290. package/esm2022/widget/igo2-common-widget.mjs +0 -5
  291. package/esm2022/widget/public_api.mjs +0 -4
  292. package/esm2022/widget/shared/index.mjs +0 -4
  293. package/esm2022/widget/shared/widget.interfaces.mjs +0 -2
  294. package/esm2022/widget/shared/widget.mjs +0 -4
  295. package/esm2022/widget/shared/widget.service.mjs +0 -22
  296. package/esm2022/widget/widget-outlet/index.mjs +0 -3
  297. package/esm2022/widget/widget-outlet/widget-outlet.component.mjs +0 -112
  298. package/esm2022/widget/widget-outlet/widget-outlet.module.mjs +0 -19
  299. package/esm2022/widget/widget.module.mjs +0 -22
  300. package/esm2022/workspace/igo2-common-workspace.mjs +0 -5
  301. package/esm2022/workspace/public_api.mjs +0 -5
  302. package/esm2022/workspace/shared/index.mjs +0 -4
  303. package/esm2022/workspace/shared/store.mjs +0 -37
  304. package/esm2022/workspace/shared/workspace.interfaces.mjs +0 -2
  305. package/esm2022/workspace/shared/workspace.mjs +0 -143
  306. package/esm2022/workspace/workspace-selector/index.mjs +0 -3
  307. package/esm2022/workspace/workspace-selector/workspace-selector.component.mjs +0 -51
  308. package/esm2022/workspace/workspace-selector/workspace-selector.module.mjs +0 -19
  309. package/esm2022/workspace/workspace-widget-outlet/index.mjs +0 -3
  310. package/esm2022/workspace/workspace-widget-outlet/workspace-widget-outlet.component.mjs +0 -73
  311. package/esm2022/workspace/workspace-widget-outlet/workspace-widget-outlet.module.mjs +0 -19
  312. package/esm2022/workspace/workspace.module.mjs +0 -27
@@ -1,28 +0,0 @@
1
- import { BehaviorSubject } from 'rxjs';
2
- export class TableDatabase {
3
- /** Stream that emits whenever the data has been modified. */
4
- dataChange = new BehaviorSubject([]);
5
- get data() {
6
- return this.dataChange.value;
7
- }
8
- constructor(data) {
9
- if (data) {
10
- this.dataChange.next(data);
11
- }
12
- }
13
- set(data) {
14
- this.dataChange.next(data);
15
- }
16
- add(item) {
17
- const copiedData = this.data.slice();
18
- copiedData.push(item);
19
- this.set(copiedData);
20
- }
21
- remove(item) {
22
- const copiedData = this.data.slice();
23
- const index = copiedData.indexOf(item);
24
- copiedData.splice(index, 1);
25
- this.set(copiedData);
26
- }
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vdGFibGUvc3JjL3RhYmxlLWRhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsTUFBTSxPQUFPLGFBQWE7SUFDeEIsNkRBQTZEO0lBQzdELFVBQVUsR0FBMkIsSUFBSSxlQUFlLENBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEUsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBWSxJQUFLO1FBQ2YsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUk7UUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUk7UUFDTixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQUk7UUFDVCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YWJhc2Uge1xuICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbmV2ZXIgdGhlIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQuICovXG4gIGRhdGFDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ2hhbmdlLnZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoZGF0YT8pIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5kYXRhQ2hhbmdlLm5leHQoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgc2V0KGRhdGEpIHtcbiAgICB0aGlzLmRhdGFDaGFuZ2UubmV4dChkYXRhKTtcbiAgfVxuXG4gIGFkZChpdGVtKSB7XG4gICAgY29uc3QgY29waWVkRGF0YSA9IHRoaXMuZGF0YS5zbGljZSgpO1xuICAgIGNvcGllZERhdGEucHVzaChpdGVtKTtcbiAgICB0aGlzLnNldChjb3BpZWREYXRhKTtcbiAgfVxuXG4gIHJlbW92ZShpdGVtKSB7XG4gICAgY29uc3QgY29waWVkRGF0YSA9IHRoaXMuZGF0YS5zbGljZSgpO1xuICAgIGNvbnN0IGluZGV4ID0gY29waWVkRGF0YS5pbmRleE9mKGl0ZW0pO1xuICAgIGNvcGllZERhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnNldChjb3BpZWREYXRhKTtcbiAgfVxufVxuIl19
@@ -1,66 +0,0 @@
1
- import { DataSource } from '@angular/cdk/table';
2
- import { ObjectUtils } from '@igo2/utils';
3
- import { BehaviorSubject, merge } from 'rxjs';
4
- import { map } from 'rxjs/operators';
5
- export class TableDataSource extends DataSource {
6
- _database;
7
- _model;
8
- _sort;
9
- get filter() {
10
- return this._filterChange.value;
11
- }
12
- set filter(filter) {
13
- this._filterChange.next(filter);
14
- }
15
- _filterChange = new BehaviorSubject('');
16
- constructor(_database, _model, _sort) {
17
- super();
18
- this._database = _database;
19
- this._model = _model;
20
- this._sort = _sort;
21
- }
22
- // Connect function called by the table to retrieve one stream containing
23
- // the data to render.
24
- connect() {
25
- if (!this._database) {
26
- return merge([]);
27
- }
28
- const displayDataChanges = [
29
- this._database.dataChange,
30
- this._filterChange,
31
- this._sort.sortChange
32
- ];
33
- return merge(...displayDataChanges).pipe(map(() => {
34
- return this.getFilteredData(this._database.data);
35
- }), map((data) => {
36
- return this.getSortedData(data);
37
- }));
38
- }
39
- disconnect() {
40
- // empty
41
- }
42
- getFilteredData(data) {
43
- if (!this.filter) {
44
- return data;
45
- }
46
- return data.slice().filter((item) => {
47
- const searchStr = this._model.columns
48
- .filter((c) => c.filterable)
49
- .map((c) => ObjectUtils.resolve(item, c.name))
50
- .join(' ')
51
- .toLowerCase();
52
- return searchStr.indexOf(this.filter.toLowerCase()) !== -1;
53
- });
54
- }
55
- getSortedData(data) {
56
- if (!this._sort.active || this._sort.direction === '') {
57
- return data;
58
- }
59
- return data.sort((a, b) => {
60
- const propertyA = ObjectUtils.resolve(a, this._sort.active);
61
- const propertyB = ObjectUtils.resolve(b, this._sort.active);
62
- return ObjectUtils.naturalCompare(propertyB, propertyA, this._sort.direction);
63
- });
64
- }
65
- }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi90YWJsZS9zcmMvdGFibGUtZGF0YXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFjLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLckMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsVUFBZTtJQVV4QztJQUNBO0lBQ0E7SUFYVixJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFjO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDTyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFaEQsWUFDVSxTQUF3QixFQUN4QixNQUFrQixFQUNsQixLQUFjO1FBRXRCLEtBQUssRUFBRSxDQUFDO1FBSkEsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQVM7SUFHeEIsQ0FBQztJQUVELHlFQUF5RTtJQUN6RSxzQkFBc0I7SUFDdEIsT0FBTztRQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sa0JBQWtCLEdBQUc7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVO1lBQ3pCLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtTQUN0QixDQUFDO1FBRUYsT0FBTyxLQUFLLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FDdEMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVTtRQUNSLFFBQVE7SUFDVixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQUk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUN2QyxNQUFNLFNBQVMsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87aUJBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztpQkFDM0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzdDLElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ1QsV0FBVyxFQUFFLENBQUM7WUFFakIsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBSTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDdEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sU0FBUyxHQUFvQixXQUFXLENBQUMsT0FBTyxDQUNwRCxDQUFDLEVBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2xCLENBQUM7WUFDRixNQUFNLFNBQVMsR0FBb0IsV0FBVyxDQUFDLE9BQU8sQ0FDcEQsQ0FBQyxFQUNELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUNsQixDQUFDO1lBRUYsT0FBTyxXQUFXLENBQUMsY0FBYyxDQUMvQixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUNyQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcblxuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGFibGVEYXRhYmFzZSB9IGZyb20gJy4vdGFibGUtZGF0YWJhc2UnO1xuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gJy4vdGFibGUtbW9kZWwuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YVNvdXJjZSBleHRlbmRzIERhdGFTb3VyY2U8YW55PiB7XG4gIGdldCBmaWx0ZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ2hhbmdlLnZhbHVlO1xuICB9XG4gIHNldCBmaWx0ZXIoZmlsdGVyOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWx0ZXJDaGFuZ2UubmV4dChmaWx0ZXIpO1xuICB9XG4gIHByaXZhdGUgX2ZpbHRlckNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2RhdGFiYXNlOiBUYWJsZURhdGFiYXNlLFxuICAgIHByaXZhdGUgX21vZGVsOiBUYWJsZU1vZGVsLFxuICAgIHByaXZhdGUgX3NvcnQ6IE1hdFNvcnRcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8vIENvbm5lY3QgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSB0YWJsZSB0byByZXRyaWV2ZSBvbmUgc3RyZWFtIGNvbnRhaW5pbmdcbiAgLy8gdGhlIGRhdGEgdG8gcmVuZGVyLlxuICBjb25uZWN0KCk6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICBpZiAoIXRoaXMuX2RhdGFiYXNlKSB7XG4gICAgICByZXR1cm4gbWVyZ2UoW10pO1xuICAgIH1cbiAgICBjb25zdCBkaXNwbGF5RGF0YUNoYW5nZXMgPSBbXG4gICAgICB0aGlzLl9kYXRhYmFzZS5kYXRhQ2hhbmdlLFxuICAgICAgdGhpcy5fZmlsdGVyQ2hhbmdlLFxuICAgICAgdGhpcy5fc29ydC5zb3J0Q2hhbmdlXG4gICAgXTtcblxuICAgIHJldHVybiBtZXJnZSguLi5kaXNwbGF5RGF0YUNoYW5nZXMpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGaWx0ZXJlZERhdGEodGhpcy5fZGF0YWJhc2UuZGF0YSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTb3J0ZWREYXRhKGRhdGEpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZGlzY29ubmVjdCgpIHtcbiAgICAvLyBlbXB0eVxuICB9XG5cbiAgZ2V0RmlsdGVyZWREYXRhKGRhdGEpOiBhbnlbXSB7XG4gICAgaWYgKCF0aGlzLmZpbHRlcikge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBkYXRhLnNsaWNlKCkuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHNlYXJjaFN0cjogc3RyaW5nID0gdGhpcy5fbW9kZWwuY29sdW1uc1xuICAgICAgICAuZmlsdGVyKChjKSA9PiBjLmZpbHRlcmFibGUpXG4gICAgICAgIC5tYXAoKGMpID0+IE9iamVjdFV0aWxzLnJlc29sdmUoaXRlbSwgYy5uYW1lKSlcbiAgICAgICAgLmpvaW4oJyAnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKTtcblxuICAgICAgcmV0dXJuIHNlYXJjaFN0ci5pbmRleE9mKHRoaXMuZmlsdGVyLnRvTG93ZXJDYXNlKCkpICE9PSAtMTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFNvcnRlZERhdGEoZGF0YSk6IGFueVtdIHtcbiAgICBpZiAoIXRoaXMuX3NvcnQuYWN0aXZlIHx8IHRoaXMuX3NvcnQuZGlyZWN0aW9uID09PSAnJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGEuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgcHJvcGVydHlBOiBudW1iZXIgfCBzdHJpbmcgPSBPYmplY3RVdGlscy5yZXNvbHZlKFxuICAgICAgICBhLFxuICAgICAgICB0aGlzLl9zb3J0LmFjdGl2ZVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHByb3BlcnR5QjogbnVtYmVyIHwgc3RyaW5nID0gT2JqZWN0VXRpbHMucmVzb2x2ZShcbiAgICAgICAgYixcbiAgICAgICAgdGhpcy5fc29ydC5hY3RpdmVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBPYmplY3RVdGlscy5uYXR1cmFsQ29tcGFyZShcbiAgICAgICAgcHJvcGVydHlCLFxuICAgICAgICBwcm9wZXJ0eUEsXG4gICAgICAgIHRoaXMuX3NvcnQuZGlyZWN0aW9uXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kZWwuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3RhYmxlL3NyYy90YWJsZS1tb2RlbC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlQWN0aW9uQ29sb3IgfSBmcm9tICcuL3RhYmxlLWFjdGlvbi1jb2xvci5lbnVtJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgc29ydGFibGU/OiBib29sZWFuO1xuICBmaWx0ZXJhYmxlPzogYm9vbGVhbjtcbiAgZGlzcGxheWVkPzogYm9vbGVhbjtcbiAgaHRtbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFJvd0NsYXNzRnVuYyA9IChyb3c6IGFueSkgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgQ2VsbENsYXNzRnVuYyA9IChcbiAgcm93OiBhbnksXG4gIGNvbHVtbjogVGFibGVDb2x1bW5cbikgPT4gUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuZXhwb3J0IHR5cGUgQ2xpY2tBY3Rpb24gPSAoaXRlbTogYW55KSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQWN0aW9uIHtcbiAgaWNvbjogc3RyaW5nO1xuICBjb2xvcj86IFRhYmxlQWN0aW9uQ29sb3I7XG4gIGNsaWNrOiBDbGlja0FjdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZU1vZGVsIHtcbiAgY29sdW1uczogVGFibGVDb2x1bW5bXTtcbiAgYWN0aW9ucz86IFRhYmxlQWN0aW9uW107XG4gIHNlbGVjdGlvbkNoZWNrYm94PzogYm9vbGVhbjtcbiAgcm93Q2xhc3NGdW5jPzogUm93Q2xhc3NGdW5jO1xuICBjZWxsQ2xhc3NGdW5jPzogQ2VsbENsYXNzRnVuYztcbn1cbiJdfQ==
@@ -1,143 +0,0 @@
1
- import { SelectionModel } from '@angular/cdk/collections';
2
- import { NgClass, NgFor, NgIf } from '@angular/common';
3
- import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
4
- import { MatButtonModule } from '@angular/material/button';
5
- import { MatCheckboxModule } from '@angular/material/checkbox';
6
- import { MatFormFieldModule } from '@angular/material/form-field';
7
- import { MatIconModule } from '@angular/material/icon';
8
- import { MatInputModule } from '@angular/material/input';
9
- import { MatSort, MatSortModule } from '@angular/material/sort';
10
- import { MatTableModule } from '@angular/material/table';
11
- import { IgoLanguageModule } from '@igo2/core/language';
12
- import { ObjectUtils } from '@igo2/utils';
13
- import { fromEvent } from 'rxjs';
14
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
15
- import { TableActionColor } from './table-action-color.enum';
16
- import { TableDatabase } from './table-database';
17
- import { TableDataSource } from './table-datasource';
18
- import * as i0 from "@angular/core";
19
- import * as i1 from "@angular/material/form-field";
20
- import * as i2 from "@angular/material/input";
21
- import * as i3 from "@angular/material/table";
22
- import * as i4 from "@angular/material/sort";
23
- import * as i5 from "@angular/material/checkbox";
24
- import * as i6 from "@angular/material/button";
25
- import * as i7 from "@angular/material/icon";
26
- import * as i8 from "@ngx-translate/core";
27
- export class TableComponent {
28
- get database() {
29
- return this._database;
30
- }
31
- set database(value) {
32
- this._database = value;
33
- }
34
- _database;
35
- get model() {
36
- return this._model;
37
- }
38
- set model(value) {
39
- this._model = value;
40
- }
41
- _model;
42
- get hasFilterInput() {
43
- return this._hasFIlterInput;
44
- }
45
- set hasFilterInput(value) {
46
- this._hasFIlterInput = value;
47
- }
48
- _hasFIlterInput = true;
49
- displayedColumns;
50
- dataSource;
51
- selection = new SelectionModel(true, []);
52
- select = new EventEmitter();
53
- filter;
54
- sort;
55
- ngOnInit() {
56
- this.dataSource = new TableDataSource(this.database, this.model, this.sort);
57
- if (this.model) {
58
- this.displayedColumns = this.model.columns
59
- .filter((c) => c.displayed !== false)
60
- .map((c) => c.name);
61
- if (this.model.selectionCheckbox) {
62
- this.displayedColumns.unshift('selectionCheckbox');
63
- }
64
- if (this.model.actions && this.model.actions.length) {
65
- this.displayedColumns.push('action');
66
- }
67
- }
68
- this.selection.changed.subscribe((e) => this.select.emit(e));
69
- }
70
- ngAfterViewInit() {
71
- if (this.filter) {
72
- fromEvent(this.filter.nativeElement, 'keyup')
73
- .pipe(debounceTime(150), distinctUntilChanged())
74
- .subscribe(() => {
75
- if (!this.dataSource) {
76
- return;
77
- }
78
- this.dataSource.filter = this.filter.nativeElement.value;
79
- });
80
- }
81
- }
82
- ngOnChanges(change) {
83
- if (change.database) {
84
- this.dataSource = new TableDataSource(this.database, this.model, this.sort);
85
- this.selection.clear();
86
- }
87
- }
88
- getActionColor(colorId) {
89
- return TableActionColor[colorId];
90
- }
91
- getValue(row, key) {
92
- return ObjectUtils.resolve(row, key);
93
- }
94
- /** Whether the number of selected elements matches the total number of rows. */
95
- isAllSelected() {
96
- const numSelected = this.selection.selected.length;
97
- const numRows = this.database.data.length;
98
- return numSelected === numRows;
99
- }
100
- /** Selects all rows if they are not all selected; otherwise clear selection. */
101
- masterToggle() {
102
- this.isAllSelected()
103
- ? this.selection.clear()
104
- : this.database.data.forEach((row) => this.selection.select(row));
105
- }
106
- handleClickAction(event, action, row) {
107
- event.stopPropagation();
108
- action.click(row);
109
- }
110
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
111
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, isStandalone: true, selector: "igo-table", inputs: { database: "database", model: "model", hasFilterInput: "hasFilterInput" }, outputs: { select: "select" }, viewQueries: [{ propertyName: "filter", first: true, predicate: ["filter"], descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-box\">\n <div class=\"table-header\" *ngIf=\"hasFilterInput\">\n <mat-form-field floatPlaceholder=\"never\">\n <input\n matInput\n #filter\n [placeholder]=\"'igo.common.table.filter' | translate\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"table-container\">\n <table mat-table #table [dataSource]=\"dataSource\" matSort>\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"selectionCheckbox\">\n <th mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n >\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\"\n >\n </mat-checkbox>\n </td>\n </ng-container>\n\n <ng-container\n [matColumnDef]=\"column.name\"\n *ngFor=\"let column of model.columns\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.title }}\n </th>\n </ng-container>\n\n <ng-container *ngIf=\"!column.sortable\">\n <th mat-header-cell *matHeaderCellDef>{{ column.title }}</th>\n </ng-container>\n\n <ng-container *ngIf=\"!column.html; else cellHTML\">\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"mat-cell-text\"\n [ngClass]=\"\n model.cellClassFunc ? model.cellClassFunc(row, column) : {}\n \"\n >\n {{ getValue(row, column.name) }}\n </td>\n </ng-container>\n\n <ng-template #cellHTML>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"mat-cell-text\"\n [ngClass]=\"\n model.cellClassFunc ? model.cellClassFunc(row, column) : {}\n \"\n [innerHTML]=\"getValue(row, column.name)\"\n ></td>\n </ng-template>\n </ng-container>\n\n <!-- Action Column -->\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let row\">\n <button\n *ngFor=\"let action of model.actions\"\n mat-mini-fab\n [color]=\"getActionColor(action.color)\"\n (click)=\"handleClickAction($event, action, row)\"\n >\n <mat-icon>{{ action.icon }}</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n [ngClass]=\"model.rowClassFunc ? model.rowClassFunc(row) : {}\"\n (click)=\"selection.toggle(row)\"\n ></tr>\n </table>\n </div>\n</div>\n", styles: [":host{width:100%;height:100%;display:block}.table-container{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.table-box{height:100%;display:flex;flex-direction:column}.table-header{min-height:64px;max-width:500px;display:flex;flex:0 1 auto;align-items:baseline;padding:8px 24px 0;font-size:20px;justify-content:space-between}tr[mat-header-row],tr[mat-row]{height:60px}.mat-cell-text{overflow:hidden;word-wrap:break-word}td[mat-cell]{padding-right:15px}th.mat-mdc-header-cell{padding-right:5px}button{margin-right:10px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i3.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i3.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i3.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i3.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i3.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i3.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i3.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i3.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i3.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i4.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
112
- }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
114
- type: Component,
115
- args: [{ selector: 'igo-table', standalone: true, imports: [
116
- NgIf,
117
- MatFormFieldModule,
118
- MatInputModule,
119
- MatTableModule,
120
- MatSortModule,
121
- MatCheckboxModule,
122
- NgFor,
123
- NgClass,
124
- MatButtonModule,
125
- MatIconModule,
126
- IgoLanguageModule
127
- ], template: "<div class=\"table-box\">\n <div class=\"table-header\" *ngIf=\"hasFilterInput\">\n <mat-form-field floatPlaceholder=\"never\">\n <input\n matInput\n #filter\n [placeholder]=\"'igo.common.table.filter' | translate\"\n />\n </mat-form-field>\n </div>\n\n <div class=\"table-container\">\n <table mat-table #table [dataSource]=\"dataSource\" matSort>\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"selectionCheckbox\">\n <th mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\n >\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\"\n [checked]=\"selection.isSelected(row)\"\n >\n </mat-checkbox>\n </td>\n </ng-container>\n\n <ng-container\n [matColumnDef]=\"column.name\"\n *ngFor=\"let column of model.columns\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.title }}\n </th>\n </ng-container>\n\n <ng-container *ngIf=\"!column.sortable\">\n <th mat-header-cell *matHeaderCellDef>{{ column.title }}</th>\n </ng-container>\n\n <ng-container *ngIf=\"!column.html; else cellHTML\">\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"mat-cell-text\"\n [ngClass]=\"\n model.cellClassFunc ? model.cellClassFunc(row, column) : {}\n \"\n >\n {{ getValue(row, column.name) }}\n </td>\n </ng-container>\n\n <ng-template #cellHTML>\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"mat-cell-text\"\n [ngClass]=\"\n model.cellClassFunc ? model.cellClassFunc(row, column) : {}\n \"\n [innerHTML]=\"getValue(row, column.name)\"\n ></td>\n </ng-template>\n </ng-container>\n\n <!-- Action Column -->\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let row\">\n <button\n *ngFor=\"let action of model.actions\"\n mat-mini-fab\n [color]=\"getActionColor(action.color)\"\n (click)=\"handleClickAction($event, action, row)\"\n >\n <mat-icon>{{ action.icon }}</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr\n mat-row\n *matRowDef=\"let row; columns: displayedColumns\"\n [ngClass]=\"model.rowClassFunc ? model.rowClassFunc(row) : {}\"\n (click)=\"selection.toggle(row)\"\n ></tr>\n </table>\n </div>\n</div>\n", styles: [":host{width:100%;height:100%;display:block}.table-container{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.table-box{height:100%;display:flex;flex-direction:column}.table-header{min-height:64px;max-width:500px;display:flex;flex:0 1 auto;align-items:baseline;padding:8px 24px 0;font-size:20px;justify-content:space-between}tr[mat-header-row],tr[mat-row]{height:60px}.mat-cell-text{overflow:hidden;word-wrap:break-word}td[mat-cell]{padding-right:15px}th.mat-mdc-header-cell{padding-right:5px}button{margin-right:10px}\n"] }]
128
- }], propDecorators: { database: [{
129
- type: Input
130
- }], model: [{
131
- type: Input
132
- }], hasFilterInput: [{
133
- type: Input
134
- }], select: [{
135
- type: Output
136
- }], filter: [{
137
- type: ViewChild,
138
- args: ['filter']
139
- }], sort: [{
140
- type: ViewChild,
141
- args: [MatSort, { static: true }]
142
- }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3RhYmxlL3NyYy90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vdGFibGUvc3JjL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0Is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SUFFRCxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUc7UUFDbEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEIsQ0FBQzt3R0E5R1UsY0FBYzs0RkFBZCxjQUFjLGlUQXdDZCxPQUFPLG1GQzNGcEIsbW9HQWtHQSw0bEJENURJLElBQUksNEZBQ0osa0JBQWtCLHlPQUNsQixjQUFjLDBXQUNkLGNBQWMsc2dDQUNkLGFBQWEsaWRBQ2IsaUJBQWlCLHFZQUNqQixLQUFLLG1IQUNMLE9BQU8sbUZBQ1AsZUFBZSwySUFDZixhQUFhLG1MQUNiLGlCQUFpQjs7NEZBR1IsY0FBYztrQkFuQjFCLFNBQVM7K0JBQ0UsV0FBVyxjQUdULElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixLQUFLO3dCQUNMLE9BQU87d0JBQ1AsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGlCQUFpQjtxQkFDbEI7OEJBSUcsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLEtBQUs7c0JBRFIsS0FBSztnQkFVRixjQUFjO3NCQURqQixLQUFLO2dCQWNOLE1BQU07c0JBREwsTUFBTTtnQkFPYyxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ21CLElBQUk7c0JBQXpDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFNvcnQsIE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuXG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGFibGVBY3Rpb25Db2xvciB9IGZyb20gJy4vdGFibGUtYWN0aW9uLWNvbG9yLmVudW0nO1xuaW1wb3J0IHsgVGFibGVEYXRhYmFzZSB9IGZyb20gJy4vdGFibGUtZGF0YWJhc2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi90YWJsZS1kYXRhc291cmNlJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuL3RhYmxlLW1vZGVsLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRTb3J0TW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE5nRm9yLFxuICAgIE5nQ2xhc3MsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgSWdvTGFuZ3VhZ2VNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KClcbiAgZ2V0IGRhdGFiYXNlKCk6IFRhYmxlRGF0YWJhc2Uge1xuICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZTtcbiAgfVxuICBzZXQgZGF0YWJhc2UodmFsdWU6IFRhYmxlRGF0YWJhc2UpIHtcbiAgICB0aGlzLl9kYXRhYmFzZSA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX2RhdGFiYXNlOiBUYWJsZURhdGFiYXNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBtb2RlbCgpOiBUYWJsZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gIH1cbiAgc2V0IG1vZGVsKHZhbHVlOiBUYWJsZU1vZGVsKSB7XG4gICAgdGhpcy5fbW9kZWwgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9tb2RlbDogVGFibGVNb2RlbDtcblxuICBASW5wdXQoKVxuICBnZXQgaGFzRmlsdGVySW5wdXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0ZJbHRlcklucHV0O1xuICB9XG4gIHNldCBoYXNGaWx0ZXJJbnB1dCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2hhc0ZJbHRlcklucHV0ID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfaGFzRklsdGVySW5wdXQgPSB0cnVlO1xuXG4gIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zO1xuICBwdWJsaWMgZGF0YVNvdXJjZTogVGFibGVEYXRhU291cmNlIHwgbnVsbDtcbiAgcHVibGljIHNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKTtcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgYWRkZWQ6IGFueVtdO1xuICAgIHJlbW92ZWQ6IGFueVtdO1xuICAgIHNvdXJjZTogU2VsZWN0aW9uTW9kZWw8YW55PjtcbiAgfT4oKTtcblxuICBAVmlld0NoaWxkKCdmaWx0ZXInKSBmaWx0ZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSkgc29ydDogTWF0U29ydDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgVGFibGVEYXRhU291cmNlKHRoaXMuZGF0YWJhc2UsIHRoaXMubW9kZWwsIHRoaXMuc29ydCk7XG5cbiAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5tb2RlbC5jb2x1bW5zXG4gICAgICAgIC5maWx0ZXIoKGMpID0+IGMuZGlzcGxheWVkICE9PSBmYWxzZSlcbiAgICAgICAgLm1hcCgoYykgPT4gYy5uYW1lKTtcblxuICAgICAgaWYgKHRoaXMubW9kZWwuc2VsZWN0aW9uQ2hlY2tib3gpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnVuc2hpZnQoJ3NlbGVjdGlvbkNoZWNrYm94Jyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5tb2RlbC5hY3Rpb25zICYmIHRoaXMubW9kZWwuYWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ2FjdGlvbicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uLmNoYW5nZWQuc3Vic2NyaWJlKChlKSA9PiB0aGlzLnNlbGVjdC5lbWl0KGUpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgIGZyb21FdmVudCh0aGlzLmZpbHRlci5uYXRpdmVFbGVtZW50LCAna2V5dXAnKVxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTUwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlciA9IHRoaXMuZmlsdGVyLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZSkge1xuICAgIGlmIChjaGFuZ2UuZGF0YWJhc2UpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBUYWJsZURhdGFTb3VyY2UoXG4gICAgICAgIHRoaXMuZGF0YWJhc2UsXG4gICAgICAgIHRoaXMubW9kZWwsXG4gICAgICAgIHRoaXMuc29ydFxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0QWN0aW9uQ29sb3IoY29sb3JJZDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGFibGVBY3Rpb25Db2xvcltjb2xvcklkXTtcbiAgfVxuXG4gIGdldFZhbHVlKHJvdywga2V5KSB7XG4gICAgcmV0dXJuIE9iamVjdFV0aWxzLnJlc29sdmUocm93LCBrZXkpO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBlbGVtZW50cyBtYXRjaGVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cy4gKi9cbiAgaXNBbGxTZWxlY3RlZCgpIHtcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhYmFzZS5kYXRhLmxlbmd0aDtcbiAgICByZXR1cm4gbnVtU2VsZWN0ZWQgPT09IG51bVJvd3M7XG4gIH1cblxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xuICBtYXN0ZXJUb2dnbGUoKSB7XG4gICAgdGhpcy5pc0FsbFNlbGVjdGVkKClcbiAgICAgID8gdGhpcy5zZWxlY3Rpb24uY2xlYXIoKVxuICAgICAgOiB0aGlzLmRhdGFiYXNlLmRhdGEuZm9yRWFjaCgocm93KSA9PiB0aGlzLnNlbGVjdGlvbi5zZWxlY3Qocm93KSk7XG4gIH1cblxuICBoYW5kbGVDbGlja0FjdGlvbihldmVudCwgYWN0aW9uLCByb3cpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBhY3Rpb24uY2xpY2socm93KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWJveFwiPlxuICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCIgKm5nSWY9XCJoYXNGaWx0ZXJJbnB1dFwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBmbG9hdFBsYWNlaG9sZGVyPVwibmV2ZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICAjZmlsdGVyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInaWdvLmNvbW1vbi50YWJsZS5maWx0ZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIC8+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lclwiPlxuICAgIDx0YWJsZSBtYXQtdGFibGUgI3RhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxuICAgICAgPCEtLSBDaGVja2JveCBDb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdGlvbkNoZWNrYm94XCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBtYXN0ZXJUb2dnbGUoKSA6IG51bGxcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKHJvdykgOiBudWxsXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLm5hbWVcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1vZGVsLmNvbHVtbnNcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnNvcnRhYmxlXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgICB7eyBjb2x1bW4udGl0bGUgfX1cbiAgICAgICAgICA8L3RoPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtbi5zb3J0YWJsZVwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+e3sgY29sdW1uLnRpdGxlIH19PC90aD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4uaHRtbDsgZWxzZSBjZWxsSFRNTFwiPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvd1wiXG4gICAgICAgICAgICBjbGFzcz1cIm1hdC1jZWxsLXRleHRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICAgIG1vZGVsLmNlbGxDbGFzc0Z1bmMgPyBtb2RlbC5jZWxsQ2xhc3NGdW5jKHJvdywgY29sdW1uKSA6IHt9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGdldFZhbHVlKHJvdywgY29sdW1uLm5hbWUpIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsSFRNTD5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgIG1hdC1jZWxsXG4gICAgICAgICAgICAqbWF0Q2VsbERlZj1cImxldCByb3dcIlxuICAgICAgICAgICAgY2xhc3M9XCJtYXQtY2VsbC10ZXh0XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICAgICAgICBtb2RlbC5jZWxsQ2xhc3NGdW5jID8gbW9kZWwuY2VsbENsYXNzRnVuYyhyb3csIGNvbHVtbikgOiB7fVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiZ2V0VmFsdWUocm93LCBjb2x1bW4ubmFtZSlcIlxuICAgICAgICAgID48L3RkPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQWN0aW9uIENvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgbW9kZWwuYWN0aW9uc1wiXG4gICAgICAgICAgICBtYXQtbWluaS1mYWJcbiAgICAgICAgICAgIFtjb2xvcl09XCJnZXRBY3Rpb25Db2xvcihhY3Rpb24uY29sb3IpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGlja0FjdGlvbigkZXZlbnQsIGFjdGlvbiwgcm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPnt7IGFjdGlvbi5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyXG4gICAgICAgIG1hdC1yb3dcbiAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIlxuICAgICAgICBbbmdDbGFzc109XCJtb2RlbC5yb3dDbGFzc0Z1bmMgPyBtb2RlbC5yb3dDbGFzc0Z1bmMocm93KSA6IHt9XCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdGlvbi50b2dnbGUocm93KVwiXG4gICAgICA+PC90cj5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,25 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { TableComponent } from './table.component';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * @deprecated import the TableComponent directly
6
- */
7
- export class IgoTableModule {
8
- static forRoot() {
9
- return {
10
- ngModule: IgoTableModule,
11
- providers: []
12
- };
13
- }
14
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoTableModule, imports: [TableComponent], exports: [TableComponent] });
16
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoTableModule, imports: [TableComponent] });
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoTableModule, decorators: [{
19
- type: NgModule,
20
- args: [{
21
- imports: [TableComponent],
22
- exports: [TableComponent]
23
- }]
24
- }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3RhYmxlL3NyYy90YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUVuRDs7R0FFRztBQUtILE1BQU0sT0FBTyxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxFQUFFO1NBQ2QsQ0FBQztJQUNKLENBQUM7d0dBTlUsY0FBYzt5R0FBZCxjQUFjLFlBSGYsY0FBYyxhQUNkLGNBQWM7eUdBRWIsY0FBYyxZQUhmLGNBQWM7OzRGQUdiLGNBQWM7a0JBSjFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUN6QixPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgaW1wb3J0IHRoZSBUYWJsZUNvbXBvbmVudCBkaXJlY3RseVxuICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbVGFibGVDb21wb25lbnRdLFxuICBleHBvcnRzOiBbVGFibGVDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIElnb1RhYmxlTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZ29UYWJsZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSWdvVGFibGVNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtdXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdvMi1jb21tb24tdG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi90b29sL3NyYy9pZ28yLWNvbW1vbi10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -1,4 +0,0 @@
1
- export * from './shared';
2
- export * from './tool.module';
3
- export * from './toolbox';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi90b29sL3NyYy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQnO1xuZXhwb3J0ICogZnJvbSAnLi90b29sLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rvb2xib3gnO1xuIl19
@@ -1,6 +0,0 @@
1
- export * from './tool.interface';
2
- export * from './tool.service';
3
- export * from './tool-component';
4
- export * from './toolbox.enums';
5
- export * from './toolbox';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vdG9vbC9zcmMvc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Rvb2wuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9vbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9vbC1jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90b29sYm94LmVudW1zJztcbmV4cG9ydCAqIGZyb20gJy4vdG9vbGJveCc7XG4iXX0=
@@ -1,9 +0,0 @@
1
- import { ToolService } from './tool.service';
2
- export function ToolComponent(tool) {
3
- return (compType) => {
4
- ToolService.register(Object.assign({}, tool, {
5
- component: compType
6
- }));
7
- };
8
- }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC1jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vdG9vbC9zcmMvc2hhcmVkL3Rvb2wtY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQW1CO0lBQy9DLE9BQU8sQ0FBQyxRQUFhLEVBQUUsRUFBRTtRQUN2QixXQUFXLENBQUMsUUFBUSxDQUNsQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUU7WUFDdEIsU0FBUyxFQUFFLFFBQVE7U0FDWixDQUFDLENBQ1gsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb29sIH0gZnJvbSAnLi90b29sLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUb29sU2VydmljZSB9IGZyb20gJy4vdG9vbC5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIFRvb2xDb21wb25lbnQodG9vbDogUGFydGlhbDxUb29sPik6IChjbHM6IGFueSkgPT4gYW55IHtcbiAgcmV0dXJuIChjb21wVHlwZTogYW55KSA9PiB7XG4gICAgVG9vbFNlcnZpY2UucmVnaXN0ZXIoXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0b29sLCB7XG4gICAgICAgIGNvbXBvbmVudDogY29tcFR5cGVcbiAgICAgIH0gYXMgVG9vbClcbiAgICApO1xuICB9O1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vdG9vbC9zcmMvc2hhcmVkL3Rvb2wuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uU3ZnIH0gZnJvbSAnQGlnbzIvY29tbW9uL2ljb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2wge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbXBvbmVudDogYW55O1xuICB0aXRsZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZyB8IEljb25Tdmc7XG4gIHRvb2x0aXA/OiBzdHJpbmc7XG4gIGdsb2JhbD86IGJvb2xlYW47XG4gIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4gIHBhcmVudD86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBzdHJpbmdbXTtcblxuICAvLyBUaGlzIGlzIHN0aWxsIHVzZWQgd2l0aCB0aGUgQVBJIGJ1dCBzaG91bGQgYmUgcmVtb3ZlZCB1bHRpbWF0ZWx5XG4gIGlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xib3hPcHRpb25zIHtcbiAgdG9vbGJhcj86IHN0cmluZ1tdO1xufVxuIl19
@@ -1,43 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Toolbox } from './toolbox';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Service where runtime tool configurations are registered
6
- */
7
- export class ToolService {
8
- static tools = {};
9
- /**
10
- * Toolbox that holds main tools
11
- */
12
- toolbox = new Toolbox();
13
- static register(tool) {
14
- ToolService.tools[tool.name] = tool;
15
- }
16
- constructor() {
17
- this.toolbox.setTools(this.getTools());
18
- }
19
- /**
20
- * Return a tool
21
- * @param name Tool name
22
- * @returns tool Tool
23
- */
24
- getTool(name) {
25
- return ToolService.tools[name];
26
- }
27
- /**
28
- * Return all tools
29
- * @returns tTols
30
- */
31
- getTools() {
32
- return Object.values(ToolService.tools);
33
- }
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToolService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
35
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToolService, providedIn: 'root' });
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToolService, decorators: [{
38
- type: Injectable,
39
- args: [{
40
- providedIn: 'root'
41
- }]
42
- }], ctorParameters: () => [] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3Rvb2wvc3JjL3NoYXJlZC90b29sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVwQzs7R0FFRztBQUlILE1BQU0sT0FBTyxXQUFXO0lBQ3RCLE1BQU0sQ0FBQyxLQUFLLEdBQXlCLEVBQUUsQ0FBQztJQUV4Qzs7T0FFRztJQUNJLE9BQU8sR0FBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXhDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBVTtRQUN4QixXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDdEMsQ0FBQztJQUVEO1FBQ0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsSUFBWTtRQUNsQixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDTixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7d0dBL0JVLFdBQVc7NEdBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUb29sIH0gZnJvbSAnLi90b29sLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUb29sYm94IH0gZnJvbSAnLi90b29sYm94JztcblxuLyoqXG4gKiBTZXJ2aWNlIHdoZXJlIHJ1bnRpbWUgdG9vbCBjb25maWd1cmF0aW9ucyBhcmUgcmVnaXN0ZXJlZFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUb29sU2VydmljZSB7XG4gIHN0YXRpYyB0b29sczogUmVjb3JkPHN0cmluZywgVG9vbD4gPSB7fTtcblxuICAvKipcbiAgICogVG9vbGJveCB0aGF0IGhvbGRzIG1haW4gdG9vbHNcbiAgICovXG4gIHB1YmxpYyB0b29sYm94OiBUb29sYm94ID0gbmV3IFRvb2xib3goKTtcblxuICBzdGF0aWMgcmVnaXN0ZXIodG9vbDogVG9vbCkge1xuICAgIFRvb2xTZXJ2aWNlLnRvb2xzW3Rvb2wubmFtZV0gPSB0b29sO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50b29sYm94LnNldFRvb2xzKHRoaXMuZ2V0VG9vbHMoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgdG9vbFxuICAgKiBAcGFyYW0gbmFtZSBUb29sIG5hbWVcbiAgICogQHJldHVybnMgdG9vbCBUb29sXG4gICAqL1xuICBnZXRUb29sKG5hbWU6IHN0cmluZyk6IFRvb2wge1xuICAgIHJldHVybiBUb29sU2VydmljZS50b29sc1tuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHRvb2xzXG4gICAqIEByZXR1cm5zIHRUb2xzXG4gICAqL1xuICBnZXRUb29scygpOiBUb29sW10ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKFRvb2xTZXJ2aWNlLnRvb2xzKTtcbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC5lbnVtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi90b29sL3NyYy9zaGFyZWQvdG9vbGJveC5lbnVtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgVG9vbGJveENvbG9yID0gJ3doaXRlJyB8ICdncmV5JyB8ICdwcmltYXJ5JztcbiJdfQ==