@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,330 +0,0 @@
1
- import { ObjectUtils, uuid } from '@igo2/utils';
2
- import { BehaviorSubject, combineLatest } from 'rxjs';
3
- import { debounceTime, map, skip } from 'rxjs/operators';
4
- /**
5
- * An entity view streams entities from an observable source. These entities
6
- * can be filtered or sorted without affecting the source. A view can also
7
- * combine data from multiple sources, joined together.
8
- */
9
- export class EntityView {
10
- source$;
11
- /**
12
- * Observable stream of values
13
- */
14
- values$ = new BehaviorSubject([]);
15
- /**
16
- * Subscription to the source (and joined sources) values
17
- */
18
- values$$;
19
- /**
20
- * Whether this view has been lifted
21
- */
22
- lifted = false;
23
- /**
24
- * Join clauses
25
- */
26
- joins = [];
27
- /**
28
- * Observable of a filter clause
29
- */
30
- filter$ = new BehaviorSubject(undefined);
31
- /**
32
- * Observable of filter clauses
33
- */
34
- filters$ = new BehaviorSubject([]);
35
- /**
36
- * Filters index
37
- */
38
- filterIndex = new Map();
39
- /**
40
- * Observable of a sort clause
41
- */
42
- sort$ = new BehaviorSubject(undefined);
43
- /**
44
- * Method for indexing
45
- */
46
- get getKey() {
47
- return this.getKey$.value;
48
- }
49
- getKey$ = new BehaviorSubject(undefined);
50
- /**
51
- * Number of entities
52
- */
53
- count$ = new BehaviorSubject(0);
54
- get count() {
55
- return this.count$.value;
56
- }
57
- /**
58
- * Whether the store is empty
59
- */
60
- empty$ = new BehaviorSubject(true);
61
- get empty() {
62
- return this.empty$.value;
63
- }
64
- /**
65
- * Store index
66
- */
67
- get index() {
68
- return this._index;
69
- }
70
- _index;
71
- constructor(source$) {
72
- this.source$ = source$;
73
- }
74
- /**
75
- * Get a value from the view by key
76
- * @param key Key
77
- * @returns Value
78
- */
79
- get(key) {
80
- if (this._index === undefined) {
81
- throw new Error('This view has no index, therefore, this method is unavailable.');
82
- }
83
- return this.index.get(key);
84
- }
85
- /**
86
- * Get all the values
87
- * @returns Array of values
88
- */
89
- all() {
90
- return this.values$.value;
91
- }
92
- /**
93
- * Observe all the values
94
- * @returns Observable of values
95
- */
96
- all$() {
97
- return this.values$;
98
- }
99
- /**
100
- * Get the first value that respects a criteria
101
- * @returns A value
102
- */
103
- firstBy(clause) {
104
- return this.values$.value.find(clause);
105
- }
106
- /**
107
- * Observe the first value that respects a criteria
108
- * @returns Observable of a value
109
- */
110
- firstBy$(clause) {
111
- return this.values$.pipe(map((values) => values.find(clause)));
112
- }
113
- /**
114
- * Get all the values that respect a criteria
115
- * @returns Array of values
116
- */
117
- manyBy(clause) {
118
- return this.values$.value.filter(clause);
119
- }
120
- /**
121
- * Observe all the values that respect a criteria
122
- * @returns Observable of values
123
- */
124
- manyBy$(clause) {
125
- return this.values$.pipe(map((values) => values.filter(clause)));
126
- }
127
- /**
128
- * Clear the filter and sort and unsubscribe from the source
129
- */
130
- clear() {
131
- this.filter(undefined);
132
- this.sort(undefined);
133
- }
134
- destroy() {
135
- if (this.values$$ !== undefined) {
136
- this.values$$.unsubscribe();
137
- }
138
- this.clear();
139
- }
140
- /**
141
- * Create an index
142
- * @param getKey Method to get a value's id
143
- * @returns The view
144
- */
145
- createIndex(getKey) {
146
- this._index = new Map();
147
- this.getKey$.next(getKey);
148
- return this;
149
- }
150
- /**
151
- * Join another source to the stream (chainable)
152
- * @param clause Join clause
153
- * @returns The view
154
- */
155
- join(clause) {
156
- if (this.lifted === true) {
157
- throw new Error('This view has already been lifted, therefore, no join is allowed.');
158
- }
159
- this.joins.push(clause);
160
- return this;
161
- }
162
- /**
163
- * Filter values (chainable)
164
- * @param clause Filter clause
165
- * @returns The view
166
- */
167
- filter(clause) {
168
- this.filter$.next(clause);
169
- return this;
170
- }
171
- /**
172
- * @param clause Filter clause
173
- * @returns The filter id
174
- */
175
- addFilter(clause) {
176
- const id = uuid();
177
- this.filterIndex.set(id, clause);
178
- this.filters$.next(Array.from(this.filterIndex.values()));
179
- return id;
180
- }
181
- /**
182
- * Remove a filter by id
183
- * @param clause Filter clause
184
- */
185
- removeFilter(id) {
186
- this.filterIndex.delete(id);
187
- this.filters$.next(Array.from(this.filterIndex.values()));
188
- }
189
- /**
190
- * Sort values (chainable)
191
- * @param clauseSort clause
192
- * @returns The view
193
- */
194
- sort(clause) {
195
- this.sort$.next(clause);
196
- return this;
197
- }
198
- /**
199
- * Create the final observable
200
- * @returns Observable
201
- */
202
- lift() {
203
- this.lifted = true;
204
- const source$ = this.joins.length > 0 ? this.liftJoinedSource() : this.liftSource();
205
- const observables$ = [
206
- source$,
207
- this.filters$,
208
- this.filter$,
209
- this.sort$,
210
- this.getKey$
211
- ];
212
- this.values$$ = combineLatest(observables$)
213
- .pipe(skip(1), debounceTime(5))
214
- .subscribe((bunch) => {
215
- const [_values, filters, filter, sort, getKey] = bunch;
216
- const values = this.processValues(_values, filters, filter, sort);
217
- const generateIndex = getKey !== undefined;
218
- this.setValues(values, generateIndex);
219
- });
220
- }
221
- /**
222
- * Create the source observable when no joins are defined
223
- * @returns Observable
224
- */
225
- liftSource() {
226
- return this.source$;
227
- }
228
- /**
229
- * Create the source observable when joins are defined
230
- * @returns Observable
231
- */
232
- liftJoinedSource() {
233
- const sources$ = [
234
- this.source$,
235
- combineLatest(this.joins.map((join) => join.source))
236
- ];
237
- return combineLatest(sources$).pipe(map((bunch) => {
238
- const [entities, joinData] = bunch;
239
- return entities.reduce((values, entity) => {
240
- const value = this.computeJoinedValue(entity, joinData);
241
- if (value !== undefined) {
242
- values.push(value);
243
- }
244
- return values;
245
- }, []);
246
- }));
247
- }
248
- /**
249
- * Apply joins to a source's entity and return the final value
250
- * @returns Final value
251
- */
252
- computeJoinedValue(entity, joinData) {
253
- let value = entity;
254
- let joinIndex = 0;
255
- while (value !== undefined && joinIndex < this.joins.length) {
256
- value = this.joins[joinIndex].reduce(value, joinData[joinIndex]);
257
- joinIndex += 1;
258
- }
259
- return value;
260
- }
261
- /**
262
- * Filter and sort values before streaming them
263
- * @param values Values
264
- * @param filters Filter clauses
265
- * @param filter Filter clause
266
- * @param sort Sort clause
267
- * @returns Filtered and sorted values
268
- */
269
- processValues(values, filters, filter, sort) {
270
- values = values.slice(0);
271
- values = this.filterValues(values, filters.concat([filter]));
272
- values = this.sortValues(values, sort);
273
- return values;
274
- }
275
- /**
276
- * Filter values
277
- * @param values Values
278
- * @param filters Filter clauses
279
- * @returns Filtered values
280
- */
281
- filterValues(values, clauses) {
282
- if (clauses.length === 0) {
283
- return values;
284
- }
285
- return values.filter((value) => {
286
- return clauses
287
- .filter((clause) => clause !== undefined)
288
- .every((clause) => clause(value));
289
- });
290
- }
291
- /**
292
- * Sort values
293
- * @param values Values
294
- * @param sort Sort clause
295
- * @returns Sorted values
296
- */
297
- sortValues(values, clause) {
298
- if (clause === undefined) {
299
- return values;
300
- }
301
- return values.sort((v1, v2) => {
302
- return ObjectUtils.naturalCompare(clause.valueAccessor(v1), clause.valueAccessor(v2), clause.direction, clause.nullsFirst);
303
- });
304
- }
305
- /**
306
- * Set value and optionally generate an index
307
- * @param values Values
308
- * @param generateIndex boolean
309
- */
310
- setValues(values, generateIndex) {
311
- if (generateIndex === true) {
312
- this._index = this.generateIndex(values);
313
- }
314
- this.values$.next(values);
315
- const count = values.length;
316
- const empty = count === 0;
317
- this.count$.next(count);
318
- this.empty$.next(empty);
319
- }
320
- /**
321
- * Generate a complete index of all the values
322
- * @param entities Entities
323
- * @returns Index
324
- */
325
- generateIndex(values) {
326
- const entries = values.map((value) => [this.getKey(value), value]);
327
- return new Map(entries);
328
- }
329
- }
330
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9lbnRpdHkvc3JjL3NoYXJlZC92aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQTRCLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN6RDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUF5RUQ7SUF4RXBCOztPQUVHO0lBQ00sT0FBTyxHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRWhEOztPQUVHO0lBQ0ssUUFBUSxDQUFlO0lBRS9COztPQUVHO0lBQ0ssTUFBTSxHQUFHLEtBQUssQ0FBQztJQUV2Qjs7T0FFRztJQUNLLEtBQUssR0FBdUIsRUFBRSxDQUFDO0lBRXZDOztPQUVHO0lBQ0ssT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWpEOztPQUVHO0lBQ0ssUUFBUSxHQUFHLElBQUksZUFBZSxDQUF1QixFQUFFLENBQUMsQ0FBQztJQUVqRTs7T0FFRztJQUNLLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBOEIsQ0FBQztJQUU1RDs7T0FFRztJQUNLLEtBQUssR0FBRyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUUvQzs7T0FFRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUNPLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBbUIsU0FBUyxDQUFDLENBQUM7SUFFbkU7O09BRUc7SUFDTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFD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LEtBQUssSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLE1BQU0sS0FBSyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxhQUFhLENBQUMsTUFBVztRQUMvQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSxPQUFPLElBQUksR0FBRyxDQUFDLE9BQTJCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYmplY3RVdGlscywgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBFbnRpdHlGaWx0ZXJDbGF1c2UsXG4gIEVudGl0eUpvaW5DbGF1c2UsXG4gIEVudGl0eUtleSxcbiAgRW50aXR5U29ydENsYXVzZVxufSBmcm9tICcuL2VudGl0eS5pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBBbiBlbnRpdHkgdmlldyBzdHJlYW1zIGVudGl0aWVzIGZyb20gYW4gb2JzZXJ2YWJsZSBzb3VyY2UuIFRoZXNlIGVudGl0aWVzXG4gKiBjYW4gYmUgZmlsdGVyZWQgb3Igc29ydGVkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBzb3VyY2UuIEEgdmlldyBjYW4gYWxzb1xuICogY29tYmluZSBkYXRhIGZyb20gbXVsdGlwbGUgc291cmNlcywgam9pbmVkIHRvZ2V0aGVyLlxuICovXG5leHBvcnQgY2xhc3MgRW50aXR5VmlldzxFIGV4dGVuZHMgb2JqZWN0LCBWIGV4dGVuZHMgb2JqZWN0ID0gRT4ge1xuICAvKipcbiAgICogT2JzZXJ2YWJsZSBzdHJlYW0gb2YgdmFsdWVzXG4gICAqL1xuICByZWFkb25seSB2YWx1ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxWW10+KFtdKTtcblxuICAvKipcbiAgICogU3Vic2NyaXB0aW9uIHRvIHRoZSBzb3VyY2UgKGFuZCBqb2luZWQgc291cmNlcykgdmFsdWVzXG4gICAqL1xuICBwcml2YXRlIHZhbHVlcyQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyB2aWV3IGhhcyBiZWVuIGxpZnRlZFxuICAgKi9cbiAgcHJpdmF0ZSBsaWZ0ZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogSm9pbiBjbGF1c2VzXG4gICAqL1xuICBwcml2YXRlIGpvaW5zOiBFbnRpdHlKb2luQ2xhdXNlW10gPSBbXTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiBhIGZpbHRlciBjbGF1c2VcbiAgICovXG4gIHByaXZhdGUgZmlsdGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiBmaWx0ZXIgY2xhdXNlc1xuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RW50aXR5RmlsdGVyQ2xhdXNlW10+KFtdKTtcblxuICAvKipcbiAgICogRmlsdGVycyBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJJbmRleCA9IG5ldyBNYXA8c3RyaW5nLCBFbnRpdHlGaWx0ZXJDbGF1c2U+KCk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgYSBzb3J0IGNsYXVzZVxuICAgKi9cbiAgcHJpdmF0ZSBzb3J0JCA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogTWV0aG9kIGZvciBpbmRleGluZ1xuICAgKi9cbiAgZ2V0IGdldEtleSgpOiAoVikgPT4gRW50aXR5S2V5IHtcbiAgICByZXR1cm4gdGhpcy5nZXRLZXkkLnZhbHVlO1xuICB9XG4gIHByaXZhdGUgZ2V0S2V5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8KFYpID0+IEVudGl0eUtleT4odW5kZWZpbmVkKTtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGVudGl0aWVzXG4gICAqL1xuICByZWFkb25seSBjb3VudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvdW50JC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdG9yZSBpcyBlbXB0eVxuICAgKi9cbiAgcmVhZG9ubHkgZW1wdHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVtcHR5JC52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSBpbmRleFxuICAgKi9cbiAgZ2V0IGluZGV4KCk6IE1hcDxFbnRpdHlLZXksIFY+IHtcbiAgICByZXR1cm4gdGhpcy5faW5kZXg7XG4gIH1cbiAgcHJpdmF0ZSBfaW5kZXg6IE1hcDxFbnRpdHlLZXksIFY+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc291cmNlJDogQmVoYXZpb3JTdWJqZWN0PEVbXT4pIHt9XG5cbiAgLyoqXG4gICAqIEdldCBhIHZhbHVlIGZyb20gdGhlIHZpZXcgYnkga2V5XG4gICAqIEBwYXJhbSBrZXkgS2V5XG4gICAqIEByZXR1cm5zIFZhbHVlXG4gICAqL1xuICBnZXQoa2V5OiBFbnRpdHlLZXkpOiBWIHtcbiAgICBpZiAodGhpcy5faW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGhpcyB2aWV3IGhhcyBubyBpbmRleCwgdGhlcmVmb3JlLCB0aGlzIG1ldGhvZCBpcyB1bmF2YWlsYWJsZS4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbmRleC5nZXQoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHRoZSB2YWx1ZXNcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdmFsdWVzXG4gICAqL1xuICBhbGwoKTogVltdIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMkLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIE9ic2VydmUgYWxsIHRoZSB2YWx1ZXNcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB2YWx1ZXNcbiAgICovXG4gIGFsbCQoKTogQmVoYXZpb3JTdWJqZWN0PFZbXT4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcyQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaXJzdCB2YWx1ZSB0aGF0IHJlc3BlY3RzIGEgY3JpdGVyaWFcbiAgICogQHJldHVybnMgQSB2YWx1ZVxuICAgKi9cbiAgZmlyc3RCeShjbGF1c2U6IEVudGl0eUZpbHRlckNsYXVzZTxWPik6IFYge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcyQudmFsdWUuZmluZChjbGF1c2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9ic2VydmUgdGhlIGZpcnN0IHZhbHVlIHRoYXQgcmVzcGVjdHMgYSBjcml0ZXJpYVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIGEgdmFsdWVcbiAgICovXG4gIGZpcnN0QnkkKGNsYXVzZTogRW50aXR5RmlsdGVyQ2xhdXNlPFY+KTogT2JzZXJ2YWJsZTxWPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzJC5waXBlKG1hcCgodmFsdWVzOiBWW10pID0+IHZhbHVlcy5maW5kKGNsYXVzZSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIHRoZSB2YWx1ZXMgdGhhdCByZXNwZWN0IGEgY3JpdGVyaWFcbiAgICogQHJldHVybnMgQXJyYXkgb2YgdmFsdWVzXG4gICAqL1xuICBtYW55QnkoY2xhdXNlOiBFbnRpdHlGaWx0ZXJDbGF1c2U8Vj4pOiBWW10ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcyQudmFsdWUuZmlsdGVyKGNsYXVzZSk7XG4gIH1cblxuICAvKipcbiAgICogT2JzZXJ2ZSBhbGwgdGhlIHZhbHVlcyB0aGF0IHJlc3BlY3QgYSBjcml0ZXJpYVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHZhbHVlc1xuICAgKi9cbiAgbWFueUJ5JChjbGF1c2U6IEVudGl0eUZpbHRlckNsYXVzZTxWPik6IE9ic2VydmFibGU8VltdPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzJC5waXBlKG1hcCgodmFsdWVzOiBWW10pID0+IHZhbHVlcy5maWx0ZXIoY2xhdXNlKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBmaWx0ZXIgYW5kIHNvcnQgYW5kIHVuc3Vic2NyaWJlIGZyb20gdGhlIHNvdXJjZVxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5maWx0ZXIodW5kZWZpbmVkKTtcbiAgICB0aGlzLnNvcnQodW5kZWZpbmVkKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMudmFsdWVzJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy52YWx1ZXMkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGluZGV4XG4gICAqIEBwYXJhbSBnZXRLZXkgTWV0aG9kIHRvIGdldCBhIHZhbHVlJ3MgaWRcbiAgICogQHJldHVybnMgVGhlIHZpZXdcbiAgICovXG4gIGNyZWF0ZUluZGV4KGdldEtleTogKEUpID0+IEVudGl0eUtleSk6IEVudGl0eVZpZXc8RSwgVj4ge1xuICAgIHRoaXMuX2luZGV4ID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuZ2V0S2V5JC5uZXh0KGdldEtleSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSm9pbiBhbm90aGVyIHNvdXJjZSB0byB0aGUgc3RyZWFtIChjaGFpbmFibGUpXG4gICAqIEBwYXJhbSBjbGF1c2UgSm9pbiBjbGF1c2VcbiAgICogQHJldHVybnMgVGhlIHZpZXdcbiAgICovXG4gIGpvaW4oY2xhdXNlOiBFbnRpdHlKb2luQ2xhdXNlKTogRW50aXR5VmlldzxFLCBWPiB7XG4gICAgaWYgKHRoaXMubGlmdGVkID09PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGlzIHZpZXcgaGFzIGFscmVhZHkgYmVlbiBsaWZ0ZWQsIHRoZXJlZm9yZSwgbm8gam9pbiBpcyBhbGxvd2VkLidcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuam9pbnMucHVzaChjbGF1c2UpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciB2YWx1ZXMgKGNoYWluYWJsZSlcbiAgICogQHBhcmFtIGNsYXVzZSBGaWx0ZXIgY2xhdXNlXG4gICAqIEByZXR1cm5zIFRoZSB2aWV3XG4gICAqL1xuICBmaWx0ZXIoY2xhdXNlOiBFbnRpdHlGaWx0ZXJDbGF1c2U8Vj4pOiBFbnRpdHlWaWV3PEUsIFY+IHtcbiAgICB0aGlzLmZpbHRlciQubmV4dChjbGF1c2UpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjbGF1c2UgRmlsdGVyIGNsYXVzZVxuICAgKiBAcmV0dXJucyBUaGUgZmlsdGVyIGlkXG4gICAqL1xuICBhZGRGaWx0ZXIoY2xhdXNlOiBFbnRpdHlGaWx0ZXJDbGF1c2U8Vj4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGlkID0gdXVpZCgpO1xuICAgIHRoaXMuZmlsdGVySW5kZXguc2V0KGlkLCBjbGF1c2UpO1xuICAgIHRoaXMuZmlsdGVycyQubmV4dChBcnJheS5mcm9tKHRoaXMuZmlsdGVySW5kZXgudmFsdWVzKCkpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgZmlsdGVyIGJ5IGlkXG4gICAqIEBwYXJhbSBjbGF1c2UgRmlsdGVyIGNsYXVzZVxuICAgKi9cbiAgcmVtb3ZlRmlsdGVyKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlckluZGV4LmRlbGV0ZShpZCk7XG4gICAgdGhpcy5maWx0ZXJzJC5uZXh0KEFycmF5LmZyb20odGhpcy5maWx0ZXJJbmRleC52YWx1ZXMoKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvcnQgdmFsdWVzIChjaGFpbmFibGUpXG4gICAqIEBwYXJhbSBjbGF1c2VTb3J0IGNsYXVzZVxuICAgKiBAcmV0dXJucyBUaGUgdmlld1xuICAgKi9cbiAgc29ydChjbGF1c2U6IEVudGl0eVNvcnRDbGF1c2U8Vj4pOiBFbnRpdHlWaWV3PEUsIFY+IHtcbiAgICB0aGlzLnNvcnQkLm5leHQoY2xhdXNlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIGZpbmFsIG9ic2VydmFibGVcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgbGlmdCgpIHtcbiAgICB0aGlzLmxpZnRlZCA9IHRydWU7XG4gICAgY29uc3Qgc291cmNlJCA9XG4gICAgICB0aGlzLmpvaW5zLmxlbmd0aCA+IDAgPyB0aGlzLmxpZnRKb2luZWRTb3VyY2UoKSA6IHRoaXMubGlmdFNvdXJjZSgpO1xuICAgIGNvbnN0IG9ic2VydmFibGVzJCA9IFtcbiAgICAgIHNvdXJjZSQsXG4gICAgICB0aGlzLmZpbHRlcnMkLFxuICAgICAgdGhpcy5maWx0ZXIkLFxuICAgICAgdGhpcy5zb3J0JCxcbiAgICAgIHRoaXMuZ2V0S2V5JFxuICAgIF07XG5cbiAgICB0aGlzLnZhbHVlcyQkID0gY29tYmluZUxhdGVzdChvYnNlcnZhYmxlcyQpXG4gICAgICAucGlwZShza2lwKDEpLCBkZWJvdW5jZVRpbWUoNSkpXG4gICAgICAuc3Vic2NyaWJlKChidW5jaDogYW55W10pID0+IHtcbiAgICAgICAgY29uc3QgW192YWx1ZXMsIGZpbHRlcnMsIGZpbHRlciwgc29ydCwgZ2V0S2V5XSA9IGJ1bmNoO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnByb2Nlc3NWYWx1ZXMoX3ZhbHVlcywgZmlsdGVycywgZmlsdGVyLCBzb3J0KTtcbiAgICAgICAgY29uc3QgZ2VuZXJhdGVJbmRleCA9IGdldEtleSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnNldFZhbHVlcyh2YWx1ZXMsIGdlbmVyYXRlSW5kZXgpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBzb3VyY2Ugb2JzZXJ2YWJsZSB3aGVuIG5vIGpvaW5zIGFyZSBkZWZpbmVkXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGVcbiAgICovXG4gIHByaXZhdGUgbGlmdFNvdXJjZSgpOiBPYnNlcnZhYmxlPFZbXT4ge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZSQgYXMgYW55IGFzIE9ic2VydmFibGU8VltdPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIHNvdXJjZSBvYnNlcnZhYmxlIHdoZW4gam9pbnMgYXJlIGRlZmluZWRcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBsaWZ0Sm9pbmVkU291cmNlKCk6IE9ic2VydmFibGU8VltdPiB7XG4gICAgY29uc3Qgc291cmNlcyQgPSBbXG4gICAgICB0aGlzLnNvdXJjZSQsXG4gICAgICBjb21iaW5lTGF0ZXN0KHRoaXMuam9pbnMubWFwKChqb2luOiBFbnRpdHlKb2luQ2xhdXNlKSA9PiBqb2luLnNvdXJjZSkpXG4gICAgXTtcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHNvdXJjZXMkKS5waXBlKFxuICAgICAgbWFwKChidW5jaDogW0VbXSwgYW55W11dKSA9PiB7XG4gICAgICAgIGNvbnN0IFtlbnRpdGllcywgam9pbkRhdGFdID0gYnVuY2g7XG4gICAgICAgIHJldHVybiBlbnRpdGllcy5yZWR1Y2UoKHZhbHVlczogVltdLCBlbnRpdHk6IEUpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29tcHV0ZUpvaW5lZFZhbHVlKGVudGl0eSwgam9pbkRhdGEpO1xuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSBqb2lucyB0byBhIHNvdXJjZSdzIGVudGl0eSBhbmQgcmV0dXJuIHRoZSBmaW5hbCB2YWx1ZVxuICAgKiBAcmV0dXJucyBGaW5hbCB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBjb21wdXRlSm9pbmVkVmFsdWUoZW50aXR5OiBFLCBqb2luRGF0YTogYW55W10pOiBWIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgdmFsdWUgPSBlbnRpdHkgYXMgUGFydGlhbDxWPjtcbiAgICBsZXQgam9pbkluZGV4ID0gMDtcbiAgICB3aGlsZSAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiBqb2luSW5kZXggPCB0aGlzLmpvaW5zLmxlbmd0aCkge1xuICAgICAgdmFsdWUgPSB0aGlzLmpvaW5zW2pvaW5JbmRleF0ucmVkdWNlKHZhbHVlLCBqb2luRGF0YVtqb2luSW5kZXhdKTtcbiAgICAgIGpvaW5JbmRleCArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgYXMgVjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYW5kIHNvcnQgdmFsdWVzIGJlZm9yZSBzdHJlYW1pbmcgdGhlbVxuICAgKiBAcGFyYW0gdmFsdWVzIFZhbHVlc1xuICAgKiBAcGFyYW0gZmlsdGVycyBGaWx0ZXIgY2xhdXNlc1xuICAgKiBAcGFyYW0gZmlsdGVyIEZpbHRlciBjbGF1c2VcbiAgICogQHBhcmFtIHNvcnQgU29ydCBjbGF1c2VcbiAgICogQHJldHVybnMgRmlsdGVyZWQgYW5kIHNvcnRlZCB2YWx1ZXNcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1ZhbHVlcyhcbiAgICB2YWx1ZXM6IFZbXSxcbiAgICBmaWx0ZXJzOiBFbnRpdHlGaWx0ZXJDbGF1c2VbXSxcbiAgICBmaWx0ZXI6IEVudGl0eUZpbHRlckNsYXVzZSxcbiAgICBzb3J0OiBFbnRpdHlTb3J0Q2xhdXNlXG4gICk6IFZbXSB7XG4gICAgdmFsdWVzID0gdmFsdWVzLnNsaWNlKDApO1xuICAgIHZhbHVlcyA9IHRoaXMuZmlsdGVyVmFsdWVzKHZhbHVlcywgZmlsdGVycy5jb25jYXQoW2ZpbHRlcl0pKTtcbiAgICB2YWx1ZXMgPSB0aGlzLnNvcnRWYWx1ZXModmFsdWVzLCBzb3J0KTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciB2YWx1ZXNcbiAgICogQHBhcmFtIHZhbHVlcyBWYWx1ZXNcbiAgICogQHBhcmFtIGZpbHRlcnMgRmlsdGVyIGNsYXVzZXNcbiAgICogQHJldHVybnMgRmlsdGVyZWQgdmFsdWVzXG4gICAqL1xuICBwcml2YXRlIGZpbHRlclZhbHVlcyh2YWx1ZXM6IFZbXSwgY2xhdXNlczogRW50aXR5RmlsdGVyQ2xhdXNlW10pOiBWW10ge1xuICAgIGlmIChjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzLmZpbHRlcigodmFsdWU6IFYpID0+IHtcbiAgICAgIHJldHVybiBjbGF1c2VzXG4gICAgICAgIC5maWx0ZXIoKGNsYXVzZTogRW50aXR5RmlsdGVyQ2xhdXNlKSA9PiBjbGF1c2UgIT09IHVuZGVmaW5lZClcbiAgICAgICAgLmV2ZXJ5KChjbGF1c2U6IEVudGl0eUZpbHRlckNsYXVzZSkgPT4gY2xhdXNlKHZhbHVlKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU29ydCB2YWx1ZXNcbiAgICogQHBhcmFtIHZhbHVlcyBWYWx1ZXNcbiAgICogQHBhcmFtIHNvcnQgU29ydCBjbGF1c2VcbiAgICogQHJldHVybnMgU29ydGVkIHZhbHVlc1xuICAgKi9cbiAgcHJpdmF0ZSBzb3J0VmFsdWVzKHZhbHVlczogVltdLCBjbGF1c2U6IEVudGl0eVNvcnRDbGF1c2UpOiBWW10ge1xuICAgIGlmIChjbGF1c2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcy5zb3J0KCh2MTogViwgdjI6IFYpID0+IHtcbiAgICAgIHJldHVybiBPYmplY3RVdGlscy5uYXR1cmFsQ29tcGFyZShcbiAgICAgICAgY2xhdXNlLnZhbHVlQWNjZXNzb3IodjEpLFxuICAgICAgICBjbGF1c2UudmFsdWVBY2Nlc3Nvcih2MiksXG4gICAgICAgIGNsYXVzZS5kaXJlY3Rpb24sXG4gICAgICAgIGNsYXVzZS5udWxsc0ZpcnN0XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB2YWx1ZSBhbmQgb3B0aW9uYWxseSBnZW5lcmF0ZSBhbiBpbmRleFxuICAgKiBAcGFyYW0gdmFsdWVzIFZhbHVlc1xuICAgKiBAcGFyYW0gZ2VuZXJhdGVJbmRleCBib29sZWFuXG4gICAqL1xuICBwcml2YXRlIHNldFZhbHVlcyh2YWx1ZXM6IFZbXSwgZ2VuZXJhdGVJbmRleDogYm9vbGVhbikge1xuICAgIGlmIChnZW5lcmF0ZUluZGV4ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLl9pbmRleCA9IHRoaXMuZ2VuZXJhdGVJbmRleCh2YWx1ZXMpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWVzJC5uZXh0KHZhbHVlcyk7XG5cbiAgICBjb25zdCBjb3VudCA9IHZhbHVlcy5sZW5ndGg7XG4gICAgY29uc3QgZW1wdHkgPSBjb3VudCA9PT0gMDtcbiAgICB0aGlzLmNvdW50JC5uZXh0KGNvdW50KTtcbiAgICB0aGlzLmVtcHR5JC5uZXh0KGVtcHR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIGNvbXBsZXRlIGluZGV4IG9mIGFsbCB0aGUgdmFsdWVzXG4gICAqIEBwYXJhbSBlbnRpdGllcyBFbnRpdGllc1xuICAgKiBAcmV0dXJucyBJbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUluZGV4KHZhbHVlczogVltdKTogTWFwPEVudGl0eUtleSwgVj4ge1xuICAgIGNvbnN0IGVudHJpZXMgPSB2YWx1ZXMubWFwKCh2YWx1ZTogVikgPT4gW3RoaXMuZ2V0S2V5KHZhbHVlKSwgdmFsdWVdKTtcbiAgICByZXR1cm4gbmV3IE1hcChlbnRyaWVzIGFzIFtFbnRpdHlLZXksIFZdW10pO1xuICB9XG59XG4iXX0=
@@ -1,135 +0,0 @@
1
- import { ObjectUtils } from '@igo2/utils';
2
- import { skip } from 'rxjs/operators';
3
- /**
4
- * This class is used to synchronize a component's changes
5
- * detection with an EntityStore changes. For example, it is frequent
6
- * to have a component subscribe to a store's selected entity and, at the same time,
7
- * this component provides a way to select an entity with, let's say, a click.
8
- *
9
- * This class automatically handles those case and triggers the compoent's
10
- * change detection when needed.
11
- *
12
- * Note: If the component observes the store's stateView, a workspace is
13
- * probably not required because the stateView catches any changes to the
14
- * entities and their state.
15
- */
16
- export class EntityStoreWatcher {
17
- /**
18
- * Component change detector
19
- */
20
- cdRef;
21
- /**
22
- * Entity store
23
- */
24
- store;
25
- /**
26
- * Component inner state
27
- */
28
- innerStateIndex = new Map();
29
- /**
30
- * Subscription to the store's entities
31
- */
32
- entities$$;
33
- /**
34
- * Subscription to the store's state
35
- */
36
- state$$;
37
- constructor(store, cdRef) {
38
- this.setChangeDetector(cdRef);
39
- this.setStore(store);
40
- }
41
- destroy() {
42
- this.setChangeDetector(undefined);
43
- this.setStore(undefined);
44
- }
45
- /**
46
- * Bind this workspace to a store and start watching for changes
47
- * @param store Entity store
48
- */
49
- setStore(store) {
50
- if (store === undefined) {
51
- this.teardownObservers();
52
- this.innerStateIndex.clear();
53
- this.store = undefined;
54
- return;
55
- }
56
- this.setStore(undefined);
57
- this.store = store;
58
- this.setupObservers();
59
- this.detectChanges();
60
- }
61
- /**
62
- * Bind this workspace to a component's change detector
63
- * @param cdRef Change detector
64
- */
65
- setChangeDetector(cdRef) {
66
- this.cdRef = cdRef;
67
- }
68
- /**
69
- * Set up observers on a store's entities and their state
70
- * @param store Entity store
71
- */
72
- setupObservers() {
73
- this.teardownObservers();
74
- this.entities$$ = this.store.entities$.subscribe(() => this.onEntitiesChange());
75
- this.state$$ = this.store.state.change$
76
- .pipe(skip(1))
77
- .subscribe(() => this.onStateChange());
78
- }
79
- /**
80
- * Teardown store observers
81
- */
82
- teardownObservers() {
83
- if (this.entities$$ !== undefined) {
84
- this.entities$$.unsubscribe();
85
- }
86
- if (this.state$$ !== undefined) {
87
- this.state$$.unsubscribe();
88
- }
89
- this.entities$$ = undefined;
90
- this.state$$ = undefined;
91
- }
92
- /**
93
- * When the entities change, always trigger the changes detection
94
- */
95
- onEntitiesChange() {
96
- this.detectChanges();
97
- }
98
- /**
99
- * When the entities state change, trigger the change detection
100
- * only if the component has not handled these changes yet. For example,
101
- * the component might have initiated thoses changes itself.
102
- */
103
- onStateChange() {
104
- let changesDetected = false;
105
- const storeIndex = this.store.state.index;
106
- const innerIndex = this.innerStateIndex;
107
- if (storeIndex.size !== innerIndex.size) {
108
- changesDetected = this.detectChanges();
109
- }
110
- const storeKeys = Array.from(storeIndex.keys());
111
- for (const key of storeKeys) {
112
- const storeValue = storeIndex.get(key);
113
- const innerValue = innerIndex.get(key);
114
- if (changesDetected === false) {
115
- if (innerValue === undefined) {
116
- changesDetected = this.detectChanges();
117
- }
118
- else if (!ObjectUtils.objectsAreEquivalent(storeValue, innerValue)) {
119
- changesDetected = this.detectChanges();
120
- }
121
- }
122
- this.innerStateIndex.set(key, Object.assign({}, storeValue));
123
- }
124
- }
125
- /**
126
- * Trigger the change detection of the workspace is bound to a change detector
127
- */
128
- detectChanges() {
129
- if (this.cdRef !== undefined) {
130
- this.cdRef.detectChanges();
131
- }
132
- return true;
133
- }
134
- }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9lbnRpdHkvc3JjL3NoYXJlZC93YXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3RDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7O09BRUc7SUFDSyxLQUFLLENBQW9CO0lBRWpDOztPQUVHO0lBQ0ssS0FBSyxDQUFpQjtJQUU5Qjs7T0FFRztJQUNLLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztJQUVwRTs7T0FFRztJQUNLLFVBQVUsQ0FBZTtJQUVqQzs7T0FFRztJQUNLLE9BQU8sQ0FBZTtJQUU5QixZQUFZLEtBQXNCLEVBQUUsS0FBeUI7UUFDM0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLEtBQXNCO1FBQzdCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FB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S0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRW50aXR5S2V5IH0gZnJvbSAnLi9lbnRpdHkuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJy4vc3RvcmUnO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBzeW5jaHJvbml6ZSBhIGNvbXBvbmVudCdzIGNoYW5nZXNcbiAqIGRldGVjdGlvbiB3aXRoIGFuIEVudGl0eVN0b3JlIGNoYW5nZXMuIEZvciBleGFtcGxlLCBpdCBpcyBmcmVxdWVudFxuICogdG8gaGF2ZSBhIGNvbXBvbmVudCBzdWJzY3JpYmUgdG8gYSBzdG9yZSdzIHNlbGVjdGVkIGVudGl0eSBhbmQsIGF0IHRoZSBzYW1lIHRpbWUsXG4gKiB0aGlzIGNvbXBvbmVudCBwcm92aWRlcyBhIHdheSB0byBzZWxlY3QgYW4gZW50aXR5IHdpdGgsIGxldCdzIHNheSwgYSBjbGljay5cbiAqXG4gKiBUaGlzIGNsYXNzIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB0aG9zZSBjYXNlIGFuZCB0cmlnZ2VycyB0aGUgY29tcG9lbnQnc1xuICogY2hhbmdlIGRldGVjdGlvbiB3aGVuIG5lZWRlZC5cbiAqXG4gKiBOb3RlOiBJZiB0aGUgY29tcG9uZW50IG9ic2VydmVzIHRoZSBzdG9yZSdzIHN0YXRlVmlldywgYSB3b3Jrc3BhY2UgaXNcbiAqIHByb2JhYmx5IG5vdCByZXF1aXJlZCBiZWNhdXNlIHRoZSBzdGF0ZVZpZXcgY2F0Y2hlcyBhbnkgY2hhbmdlcyB0byB0aGVcbiAqIGVudGl0aWVzIGFuZCB0aGVpciBzdGF0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudGl0eVN0b3JlV2F0Y2hlcjxFIGV4dGVuZHMgb2JqZWN0PiB7XG4gIC8qKlxuICAgKiBDb21wb25lbnQgY2hhbmdlIGRldGVjdG9yXG4gICAqL1xuICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICAvKipcbiAgICogRW50aXR5IHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHN0b3JlOiBFbnRpdHlTdG9yZTxFPjtcblxuICAvKipcbiAgICogQ29tcG9uZW50IGlubmVyIHN0YXRlXG4gICAqL1xuICBwcml2YXRlIGlubmVyU3RhdGVJbmRleCA9IG5ldyBNYXA8RW50aXR5S2V5LCBSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gdGhlIHN0b3JlJ3MgZW50aXRpZXNcbiAgICovXG4gIHByaXZhdGUgZW50aXRpZXMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTdWJzY3JpcHRpb24gdG8gdGhlIHN0b3JlJ3Mgc3RhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGUkJDogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JlPzogRW50aXR5U3RvcmU8RT4sIGNkUmVmPzogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICB0aGlzLnNldENoYW5nZURldGVjdG9yKGNkUmVmKTtcbiAgICB0aGlzLnNldFN0b3JlKHN0b3JlKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5zZXRDaGFuZ2VEZXRlY3Rvcih1bmRlZmluZWQpO1xuICAgIHRoaXMuc2V0U3RvcmUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHRoaXMgd29ya3NwYWNlIHRvIGEgc3RvcmUgYW5kIHN0YXJ0IHdhdGNoaW5nIGZvciBjaGFuZ2VzXG4gICAqIEBwYXJhbSBzdG9yZSBFbnRpdHkgc3RvcmVcbiAgICovXG4gIHNldFN0b3JlKHN0b3JlPzogRW50aXR5U3RvcmU8RT4pIHtcbiAgICBpZiAoc3RvcmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50ZWFyZG93bk9ic2VydmVycygpO1xuICAgICAgdGhpcy5pbm5lclN0YXRlSW5kZXguY2xlYXIoKTtcbiAgICAgIHRoaXMuc3RvcmUgPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdG9yZSh1bmRlZmluZWQpO1xuICAgIHRoaXMuc3RvcmUgPSBzdG9yZTtcbiAgICB0aGlzLnNldHVwT2JzZXJ2ZXJzKCk7XG4gICAgdGhpcy5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogQmluZCB0aGlzIHdvcmtzcGFjZSB0byBhIGNvbXBvbmVudCdzIGNoYW5nZSBkZXRlY3RvclxuICAgKiBAcGFyYW0gY2RSZWYgQ2hhbmdlIGRldGVjdG9yXG4gICAqL1xuICBzZXRDaGFuZ2VEZXRlY3RvcihjZFJlZj86IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5jZFJlZiA9IGNkUmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBvYnNlcnZlcnMgb24gYSBzdG9yZSdzIGVudGl0aWVzIGFuZCB0aGVpciBzdGF0ZVxuICAgKiBAcGFyYW0gc3RvcmUgRW50aXR5IHN0b3JlXG4gICAqL1xuICBwcml2YXRlIHNldHVwT2JzZXJ2ZXJzKCkge1xuICAgIHRoaXMudGVhcmRvd25PYnNlcnZlcnMoKTtcblxuICAgIHRoaXMuZW50aXRpZXMkJCA9IHRoaXMuc3RvcmUuZW50aXRpZXMkLnN1YnNjcmliZSgoKSA9PlxuICAgICAgdGhpcy5vbkVudGl0aWVzQ2hhbmdlKClcbiAgICApO1xuXG4gICAgdGhpcy5zdGF0ZSQkID0gdGhpcy5zdG9yZS5zdGF0ZS5jaGFuZ2UkXG4gICAgICAucGlwZShza2lwKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uU3RhdGVDaGFuZ2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogVGVhcmRvd24gc3RvcmUgb2JzZXJ2ZXJzXG4gICAqL1xuICBwcml2YXRlIHRlYXJkb3duT2JzZXJ2ZXJzKCkge1xuICAgIGlmICh0aGlzLmVudGl0aWVzJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5lbnRpdGllcyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXRlJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdGF0ZSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuZW50aXRpZXMkJCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnN0YXRlJCQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiB0aGUgZW50aXRpZXMgY2hhbmdlLCBhbHdheXMgdHJpZ2dlciB0aGUgY2hhbmdlcyBkZXRlY3Rpb25cbiAgICovXG4gIHByaXZhdGUgb25FbnRpdGllc0NoYW5nZSgpIHtcbiAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHRoZSBlbnRpdGllcyBzdGF0ZSBjaGFuZ2UsIHRyaWdnZXIgdGhlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogb25seSBpZiB0aGUgY29tcG9uZW50IGhhcyBub3QgaGFuZGxlZCB0aGVzZSBjaGFuZ2VzIHlldC4gRm9yIGV4YW1wbGUsXG4gICAqIHRoZSBjb21wb25lbnQgbWlnaHQgaGF2ZSBpbml0aWF0ZWQgdGhvc2VzIGNoYW5nZXMgaXRzZWxmLlxuICAgKi9cbiAgcHJpdmF0ZSBvblN0YXRlQ2hhbmdlKCkge1xuICAgIGxldCBjaGFuZ2VzRGV0ZWN0ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBzdG9yZUluZGV4ID0gdGhpcy5zdG9yZS5zdGF0ZS5pbmRleDtcbiAgICBjb25zdCBpbm5lckluZGV4ID0gdGhpcy5pbm5lclN0YXRlSW5kZXg7XG5cbiAgICBpZiAoc3RvcmVJbmRleC5zaXplICE9PSBpbm5lckluZGV4LnNpemUpIHtcbiAgICAgIGNoYW5nZXNEZXRlY3RlZCA9IHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0b3JlS2V5cyA9IEFycmF5LmZyb20oc3RvcmVJbmRleC5rZXlzKCkpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIHN0b3JlS2V5cykge1xuICAgICAgY29uc3Qgc3RvcmVWYWx1ZSA9IHN0b3JlSW5kZXguZ2V0KGtleSk7XG4gICAgICBjb25zdCBpbm5lclZhbHVlID0gaW5uZXJJbmRleC5nZXQoa2V5KTtcbiAgICAgIGlmIChjaGFuZ2VzRGV0ZWN0ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChpbm5lclZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjaGFuZ2VzRGV0ZWN0ZWQgPSB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICghT2JqZWN0VXRpbHMub2JqZWN0c0FyZUVxdWl2YWxlbnQoc3RvcmVWYWx1ZSwgaW5uZXJWYWx1ZSkpIHtcbiAgICAgICAgICBjaGFuZ2VzRGV0ZWN0ZWQgPSB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmlubmVyU3RhdGVJbmRleC5zZXQoa2V5LCBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgdGhlIGNoYW5nZSBkZXRlY3Rpb24gb2YgdGhlIHdvcmtzcGFjZSBpcyBib3VuZCB0byBhIGNoYW5nZSBkZXRlY3RvclxuICAgKi9cbiAgcHJpdmF0ZSBkZXRlY3RDaGFuZ2VzKCkge1xuICAgIGlmICh0aGlzLmNkUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL2Vudmlyb25tZW50L3NyYy9lbnZpcm9ubWVudC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnRPcHRpb25zIHtcbiAgZGVwb3Q/OiBEZXBvdE9wdGlvbnM7XG4gIGludGVyYWN0aXZlVG91cj86IEludGVyYWN0aXZlVG91ckNvbmZpZ09wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwb3RPcHRpb25zIHtcbiAgdXJsOiBzdHJpbmc7XG4gIHRyYWluaW5nR3VpZGVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJhY3RpdmVUb3VyQ29uZmlnT3B0aW9ucyB7XG4gIGFjdGl2YXRlSW50ZXJhY3RpdmVUb3VyPzogYm9vbGVhbjtcbiAgdG91ckluTW9iaWxlPzogYm9vbGVhbjtcbiAgcGF0aFRvQ29uZmlnRmlsZT86IHN0cmluZztcbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWdvMi1jb21tb24tZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vZW52aXJvbm1lbnQvc3JjL2lnbzItY29tbW9uLWVudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
@@ -1,2 +0,0 @@
1
- export * from './environment.interface';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9lbnZpcm9ubWVudC9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9lbnZpcm9ubWVudC5pbnRlcmZhY2UnO1xuIl19