@igo2/common 16.3.0 → 17.0.0-next.10

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 (909) hide show
  1. package/action/action.module.d.ts +10 -0
  2. package/action/actionbar/actionbar-item.component.d.ts +75 -0
  3. package/action/actionbar/actionbar.component.d.ts +148 -0
  4. package/action/actionbar/actionbar.module.d.ts +10 -0
  5. package/action/index.d.ts +5 -0
  6. package/action/public_api.d.ts +4 -0
  7. package/action/shared/action.interfaces.d.ts +18 -0
  8. package/action/shared/store.d.ts +8 -0
  9. package/action/src/action.theming.scss +5 -0
  10. package/action/src/actionbar/actionbar-item.theming.scss +32 -0
  11. package/action/src/actionbar/actionbar.theming.scss +22 -0
  12. package/backdrop/backdrop.component.d.ts +9 -0
  13. package/backdrop/backdrop.module.d.ts +12 -0
  14. package/backdrop/index.d.ts +5 -0
  15. package/backdrop/public_api.d.ts +2 -0
  16. package/badge/badge-icon.directive.d.ts +34 -0
  17. package/badge/badge-icon.module.d.ts +12 -0
  18. package/badge/index.d.ts +5 -0
  19. package/badge/public_api.d.ts +2 -0
  20. package/clickout/clickout.directive.d.ts +10 -0
  21. package/clickout/clickout.module.d.ts +12 -0
  22. package/clickout/index.d.ts +5 -0
  23. package/clickout/public_api.d.ts +2 -0
  24. package/clone/clone.module.d.ts +12 -0
  25. package/clone/clone.pipe.d.ts +7 -0
  26. package/clone/index.d.ts +5 -0
  27. package/clone/public_api.d.ts +2 -0
  28. package/collapsible/collapse.directive.d.ts +19 -0
  29. package/collapsible/collapsible.component.d.ts +13 -0
  30. package/collapsible/collapsible.module.d.ts +13 -0
  31. package/collapsible/index.d.ts +5 -0
  32. package/collapsible/public_api.d.ts +6 -0
  33. package/collapsible/src/collapsible.theming.scss +22 -0
  34. package/color/color-picker-form-field/color-picker-form-field.component.d.ts +29 -0
  35. package/color/color-picker-form-field/color-picker-form-field.module.d.ts +10 -0
  36. package/color/color-picker-form-field/index.d.ts +2 -0
  37. package/color/index.d.ts +5 -0
  38. package/color/public_api.d.ts +1 -0
  39. package/confirm-dialog/confirm-dialog.component.d.ts +12 -0
  40. package/confirm-dialog/confirm-dialog.module.d.ts +12 -0
  41. package/confirm-dialog/index.d.ts +5 -0
  42. package/confirm-dialog/public_api.d.ts +4 -0
  43. package/context-menu/context-menu.directive.d.ts +21 -0
  44. package/context-menu/context-menu.module.d.ts +13 -0
  45. package/context-menu/index.d.ts +5 -0
  46. package/context-menu/long-press.directive.d.ts +20 -0
  47. package/context-menu/public_api.d.ts +6 -0
  48. package/custom-html/custom-html.component.d.ts +9 -0
  49. package/custom-html/custom-html.module.d.ts +13 -0
  50. package/custom-html/custom-html.pipe.d.ts +10 -0
  51. package/custom-html/index.d.ts +5 -0
  52. package/custom-html/public_api.d.ts +6 -0
  53. package/dom/dom.module.d.ts +14 -0
  54. package/dom/index.d.ts +5 -0
  55. package/dom/public_api.d.ts +3 -0
  56. package/drag-drop/drag-drop.directive.d.ts +14 -0
  57. package/drag-drop/drag-drop.module.d.ts +12 -0
  58. package/drag-drop/index.d.ts +5 -0
  59. package/drag-drop/public_api.d.ts +2 -0
  60. package/dynamic-component/dynamic-component.module.d.ts +10 -0
  61. package/dynamic-component/dynamic-outlet/dynamic-outlet.component.d.ts +70 -0
  62. package/dynamic-component/dynamic-outlet/dynamic-outlet.module.d.ts +10 -0
  63. package/dynamic-component/index.d.ts +5 -0
  64. package/dynamic-component/public_api.d.ts +4 -0
  65. package/entity/entity-selector/entity-selector.component.d.ts +93 -0
  66. package/entity/entity-selector/entity-selector.module.d.ts +10 -0
  67. package/entity/entity-selector/index.d.ts +2 -0
  68. package/entity/entity-table/entity-table-row.directive.d.ts +69 -0
  69. package/entity/entity-table/entity-table.component.d.ts +342 -0
  70. package/entity/entity-table/entity-table.module.d.ts +10 -0
  71. package/entity/entity-table/index.d.ts +2 -0
  72. package/entity/entity-table-paginator/entity-table-paginator.component.d.ts +50 -0
  73. package/entity/entity-table-paginator/entity-table-paginator.module.d.ts +10 -0
  74. package/entity/entity-table-paginator/index.d.ts +3 -0
  75. package/entity/entity.module.d.ts +16 -0
  76. package/entity/index.d.ts +5 -0
  77. package/entity/public_api.d.ts +5 -0
  78. package/entity/shared/entity.interfaces.d.ts +102 -0
  79. package/entity/shared/transaction.d.ts +179 -0
  80. package/entity/src/entity-selector/entity-selector.theming.scss +21 -0
  81. package/entity/src/entity-table/entity-table.theming.scss +37 -0
  82. package/entity/src/entity.theming.scss +7 -0
  83. package/environment/index.d.ts +5 -0
  84. package/esm2022/action/action.module.mjs +19 -0
  85. package/esm2022/action/actionbar/actionbar-item.component.mjs +192 -0
  86. package/esm2022/action/actionbar/actionbar.component.mjs +277 -0
  87. package/esm2022/action/actionbar/actionbar.module.mjs +19 -0
  88. package/esm2022/action/igo2-common-action.mjs +5 -0
  89. package/esm2022/action/public_api.mjs +5 -0
  90. package/esm2022/action/shared/action.enums.mjs +7 -0
  91. package/esm2022/action/shared/action.interfaces.mjs +2 -0
  92. package/esm2022/action/shared/index.mjs +4 -0
  93. package/esm2022/action/shared/store.mjs +8 -0
  94. package/esm2022/backdrop/backdrop.component.mjs +22 -0
  95. package/esm2022/backdrop/backdrop.module.mjs +25 -0
  96. package/esm2022/backdrop/igo2-common-backdrop.mjs +5 -0
  97. package/esm2022/backdrop/public_api.mjs +3 -0
  98. package/esm2022/badge/badge-icon.directive.mjs +149 -0
  99. package/esm2022/badge/badge-icon.module.mjs +25 -0
  100. package/esm2022/badge/igo2-common-badge.mjs +5 -0
  101. package/esm2022/badge/public_api.mjs +3 -0
  102. package/esm2022/clickout/clickout.directive.mjs +32 -0
  103. package/esm2022/clickout/clickout.module.mjs +25 -0
  104. package/esm2022/clickout/igo2-common-clickout.mjs +5 -0
  105. package/esm2022/clickout/public_api.mjs +3 -0
  106. package/esm2022/clone/clone.module.mjs +25 -0
  107. package/esm2022/clone/clone.pipe.mjs +25 -0
  108. package/esm2022/clone/igo2-common-clone.mjs +5 -0
  109. package/esm2022/clone/public_api.mjs +3 -0
  110. package/esm2022/collapsible/collapse.directive.mjs +57 -0
  111. package/esm2022/collapsible/collapsible.component.mjs +38 -0
  112. package/esm2022/collapsible/collapsible.module.mjs +26 -0
  113. package/esm2022/collapsible/igo2-common-collapsible.mjs +5 -0
  114. package/esm2022/collapsible/public_api.mjs +10 -0
  115. package/esm2022/color/color-picker-form-field/color-picker-form-field.component.mjs +104 -0
  116. package/esm2022/color/color-picker-form-field/color-picker-form-field.module.mjs +19 -0
  117. package/esm2022/color/color-picker-form-field/index.mjs +3 -0
  118. package/esm2022/color/igo2-common-color.mjs +5 -0
  119. package/esm2022/color/public_api.mjs +2 -0
  120. package/esm2022/confirm-dialog/confirm-dialog.component.mjs +31 -0
  121. package/esm2022/confirm-dialog/confirm-dialog.interface.mjs +2 -0
  122. package/esm2022/confirm-dialog/confirm-dialog.module.mjs +27 -0
  123. package/esm2022/confirm-dialog/confirm-dialog.service.mjs +35 -0
  124. package/esm2022/confirm-dialog/igo2-common-confirm-dialog.mjs +5 -0
  125. package/esm2022/confirm-dialog/public_api.mjs +5 -0
  126. package/esm2022/context-menu/context-menu.directive.mjs +109 -0
  127. package/esm2022/context-menu/context-menu.module.mjs +26 -0
  128. package/esm2022/context-menu/igo2-common-context-menu.mjs +5 -0
  129. package/esm2022/context-menu/long-press.directive.mjs +66 -0
  130. package/esm2022/context-menu/public_api.mjs +10 -0
  131. package/esm2022/custom-html/custom-html.component.mjs +22 -0
  132. package/esm2022/custom-html/custom-html.module.mjs +25 -0
  133. package/esm2022/custom-html/custom-html.pipe.mjs +23 -0
  134. package/esm2022/custom-html/igo2-common-custom-html.mjs +5 -0
  135. package/esm2022/custom-html/public_api.mjs +10 -0
  136. package/esm2022/dom/dom.interfaces.mjs +2 -0
  137. package/esm2022/dom/dom.module.mjs +27 -0
  138. package/esm2022/dom/dom.service.mjs +35 -0
  139. package/esm2022/dom/igo2-common-dom.mjs +5 -0
  140. package/esm2022/dom/public_api.mjs +4 -0
  141. package/esm2022/drag-drop/drag-drop.directive.mjs +82 -0
  142. package/esm2022/drag-drop/drag-drop.module.mjs +25 -0
  143. package/esm2022/drag-drop/igo2-common-drag-drop.mjs +5 -0
  144. package/esm2022/drag-drop/public_api.mjs +3 -0
  145. package/esm2022/dynamic-component/dynamic-component.module.mjs +19 -0
  146. package/esm2022/dynamic-component/dynamic-outlet/dynamic-outlet.component.mjs +129 -0
  147. package/esm2022/dynamic-component/dynamic-outlet/dynamic-outlet.module.mjs +19 -0
  148. package/esm2022/dynamic-component/igo2-common-dynamic-component.mjs +5 -0
  149. package/esm2022/dynamic-component/public_api.mjs +5 -0
  150. package/esm2022/dynamic-component/shared/dynamic-component.interfaces.mjs +2 -0
  151. package/esm2022/dynamic-component/shared/dynamic-component.mjs +183 -0
  152. package/esm2022/dynamic-component/shared/dynamic-component.service.mjs +30 -0
  153. package/esm2022/dynamic-component/shared/index.mjs +4 -0
  154. package/esm2022/entity/entity-selector/entity-selector.component.mjs +174 -0
  155. package/esm2022/entity/entity-selector/entity-selector.module.mjs +19 -0
  156. package/esm2022/entity/entity-selector/index.mjs +3 -0
  157. package/esm2022/entity/entity-table/entity-table-row.directive.mjs +138 -0
  158. package/esm2022/entity/entity-table/entity-table.component.mjs +883 -0
  159. package/esm2022/entity/entity-table/entity-table.module.mjs +19 -0
  160. package/esm2022/entity/entity-table/index.mjs +3 -0
  161. package/esm2022/entity/entity-table-paginator/entity-table-paginator.component.mjs +158 -0
  162. package/esm2022/entity/entity-table-paginator/entity-table-paginator.interface.mjs +2 -0
  163. package/esm2022/entity/entity-table-paginator/entity-table-paginator.module.mjs +19 -0
  164. package/esm2022/entity/entity-table-paginator/index.mjs +4 -0
  165. package/esm2022/entity/entity.module.mjs +30 -0
  166. package/esm2022/entity/igo2-common-entity.mjs +5 -0
  167. package/esm2022/entity/public_api.mjs +6 -0
  168. package/esm2022/entity/shared/entity.enums.mjs +28 -0
  169. package/esm2022/entity/shared/entity.interfaces.mjs +2 -0
  170. package/esm2022/entity/shared/entity.utils.mjs +73 -0
  171. package/esm2022/entity/shared/index.mjs +10 -0
  172. package/esm2022/entity/shared/state.mjs +194 -0
  173. package/esm2022/entity/shared/store.mjs +322 -0
  174. package/esm2022/entity/shared/strategies/filter-custom-function.mjs +80 -0
  175. package/esm2022/entity/shared/strategies/filter-selection.mjs +81 -0
  176. package/esm2022/entity/shared/strategies/index.mjs +4 -0
  177. package/esm2022/entity/shared/strategies/strategy.mjs +78 -0
  178. package/esm2022/entity/shared/transaction.mjs +329 -0
  179. package/esm2022/entity/shared/view.mjs +330 -0
  180. package/esm2022/entity/shared/watcher.mjs +135 -0
  181. package/esm2022/environment/environment.interface.mjs +2 -0
  182. package/esm2022/environment/igo2-common-environment.mjs +5 -0
  183. package/esm2022/environment/public_api.mjs +2 -0
  184. package/esm2022/flexible/flexible.component.mjs +135 -0
  185. package/esm2022/flexible/flexible.module.mjs +25 -0
  186. package/esm2022/flexible/flexible.type.mjs +2 -0
  187. package/esm2022/flexible/igo2-common-flexible.mjs +5 -0
  188. package/esm2022/flexible/public_api.mjs +4 -0
  189. package/esm2022/form/form/form.component.mjs +103 -0
  190. package/esm2022/form/form/form.module.mjs +19 -0
  191. package/esm2022/form/form/index.mjs +3 -0
  192. package/esm2022/form/form-dialog/form-dialog.component.mjs +94 -0
  193. package/esm2022/form/form-dialog/form-dialog.interface.mjs +2 -0
  194. package/esm2022/form/form-dialog/form-dialog.module.mjs +31 -0
  195. package/esm2022/form/form-dialog/form-dialog.service.mjs +30 -0
  196. package/esm2022/form/form-dialog/index.mjs +5 -0
  197. package/esm2022/form/form-field/form-field-select.component.mjs +117 -0
  198. package/esm2022/form/form-field/form-field-text.component.mjs +126 -0
  199. package/esm2022/form/form-field/form-field-textarea.component.mjs +95 -0
  200. package/esm2022/form/form-field/form-field.component.mjs +65 -0
  201. package/esm2022/form/form-field/form-field.directive.mjs +11 -0
  202. package/esm2022/form/form-field/form-field.module.mjs +23 -0
  203. package/esm2022/form/form-field/index.mjs +7 -0
  204. package/esm2022/form/form-group/form-group.component.mjs +82 -0
  205. package/esm2022/form/form-group/form-group.module.mjs +19 -0
  206. package/esm2022/form/form-group/index.mjs +3 -0
  207. package/esm2022/form/form.module.mjs +32 -0
  208. package/esm2022/form/igo2-common-form.mjs +5 -0
  209. package/esm2022/form/public_api.mjs +7 -0
  210. package/esm2022/form/shared/form-field-component.mjs +7 -0
  211. package/esm2022/form/shared/form-field.service.mjs +29 -0
  212. package/esm2022/form/shared/form.interfaces.mjs +2 -0
  213. package/esm2022/form/shared/form.service.mjs +82 -0
  214. package/esm2022/form/shared/form.utils.mjs +41 -0
  215. package/esm2022/form/shared/index.mjs +6 -0
  216. package/esm2022/home-button/home-button.component.mjs +26 -0
  217. package/esm2022/home-button/home-button.module.mjs +19 -0
  218. package/esm2022/home-button/igo2-common-home-button.mjs +5 -0
  219. package/esm2022/home-button/public_api.mjs +3 -0
  220. package/esm2022/icon/icon/icon.component.mjs +38 -0
  221. package/esm2022/icon/icon.provider.mjs +14 -0
  222. package/esm2022/icon/igo2-common-icon.mjs +5 -0
  223. package/esm2022/icon/public_api.mjs +4 -0
  224. package/esm2022/icon/shared/icon.interface.mjs +2 -0
  225. package/esm2022/icon/shared/icon.service.mjs +26 -0
  226. package/esm2022/icon/shared/icons.mjs +32 -0
  227. package/esm2022/icon/shared/index.mjs +4 -0
  228. package/esm2022/image/igo2-common-image.mjs +5 -0
  229. package/esm2022/image/image-error.directive.mjs +35 -0
  230. package/esm2022/image/image.module.mjs +26 -0
  231. package/esm2022/image/public_api.mjs +7 -0
  232. package/esm2022/image/secure-image.pipe.mjs +66 -0
  233. package/esm2022/interactive-tour/igo2-common-interactive-tour.mjs +5 -0
  234. package/esm2022/interactive-tour/interactive-tour.component.mjs +133 -0
  235. package/esm2022/interactive-tour/interactive-tour.interface.mjs +2 -0
  236. package/esm2022/interactive-tour/interactive-tour.loader.mjs +49 -0
  237. package/esm2022/interactive-tour/interactive-tour.module.mjs +19 -0
  238. package/esm2022/interactive-tour/interactive-tour.service.mjs +303 -0
  239. package/esm2022/interactive-tour/public_api.mjs +6 -0
  240. package/esm2022/json-dialog/igo2-common-json-dialog.mjs +5 -0
  241. package/esm2022/json-dialog/json-dialog.component.mjs +38 -0
  242. package/esm2022/json-dialog/json-dialog.module.mjs +26 -0
  243. package/esm2022/json-dialog/json-dialog.service.mjs +26 -0
  244. package/esm2022/json-dialog/public_api.mjs +4 -0
  245. package/esm2022/keyvalue/igo2-common-keyvalue.mjs +5 -0
  246. package/esm2022/keyvalue/keyvalue.module.mjs +25 -0
  247. package/esm2022/keyvalue/keyvalue.pipe.mjs +19 -0
  248. package/esm2022/keyvalue/public_api.mjs +3 -0
  249. package/esm2022/list/igo2-common-list.mjs +5 -0
  250. package/esm2022/list/list-item.directive.mjs +166 -0
  251. package/esm2022/list/list.component.mjs +252 -0
  252. package/esm2022/list/list.module.mjs +26 -0
  253. package/esm2022/list/public_api.mjs +7 -0
  254. package/esm2022/panel/igo2-common-panel.mjs +5 -0
  255. package/esm2022/panel/panel.component.mjs +30 -0
  256. package/esm2022/panel/panel.module.mjs +19 -0
  257. package/esm2022/panel/public_api.mjs +3 -0
  258. package/esm2022/public_api.mjs +17 -78
  259. package/esm2022/select-value-dialog/igo2-common-select-value-dialog.mjs +5 -0
  260. package/esm2022/select-value-dialog/public_api.mjs +6 -0
  261. package/esm2022/select-value-dialog/select-value-check-radio-dialog.component.mjs +103 -0
  262. package/esm2022/select-value-dialog/select-value-dialog.enums.mjs +6 -0
  263. package/esm2022/select-value-dialog/select-value-dialog.interface.mjs +2 -0
  264. package/esm2022/select-value-dialog/select-value-dialog.module.mjs +27 -0
  265. package/esm2022/select-value-dialog/select-value-dialog.service.mjs +29 -0
  266. package/esm2022/sidenav/igo2-common-sidenav.mjs +5 -0
  267. package/esm2022/sidenav/public_api.mjs +3 -0
  268. package/esm2022/sidenav/sidenav-shim.directive.mjs +58 -0
  269. package/esm2022/sidenav/sidenav.module.mjs +25 -0
  270. package/esm2022/spinner/igo2-common-spinner.mjs +5 -0
  271. package/esm2022/spinner/public_api.mjs +4 -0
  272. package/esm2022/spinner/spinner-activity.directive.mjs +56 -0
  273. package/esm2022/spinner/spinner.component.mjs +30 -0
  274. package/esm2022/spinner/spinner.module.mjs +26 -0
  275. package/esm2022/stop-propagation/igo2-common-stop-propagation.mjs +5 -0
  276. package/esm2022/stop-propagation/public_api.mjs +10 -0
  277. package/esm2022/stop-propagation/stop-drop-propagation.directive.mjs +21 -0
  278. package/esm2022/stop-propagation/stop-propagation.directive.mjs +20 -0
  279. package/esm2022/stop-propagation/stop-propagation.module.mjs +26 -0
  280. package/esm2022/table/igo2-common-table.mjs +5 -0
  281. package/esm2022/table/public_api.mjs +7 -0
  282. package/esm2022/table/table-action-color.enum.mjs +7 -0
  283. package/esm2022/table/table-database.mjs +28 -0
  284. package/esm2022/table/table-datasource.mjs +64 -0
  285. package/esm2022/table/table-model.interface.mjs +2 -0
  286. package/esm2022/table/table.component.mjs +143 -0
  287. package/esm2022/table/table.module.mjs +25 -0
  288. package/esm2022/tool/igo2-common-tool.mjs +5 -0
  289. package/esm2022/tool/public_api.mjs +4 -0
  290. package/esm2022/tool/shared/index.mjs +6 -0
  291. package/esm2022/tool/shared/tool-component.mjs +9 -0
  292. package/esm2022/tool/shared/tool.interface.mjs +2 -0
  293. package/esm2022/tool/shared/tool.service.mjs +43 -0
  294. package/esm2022/tool/shared/toolbox.enums.mjs +2 -0
  295. package/esm2022/tool/shared/toolbox.mjs +192 -0
  296. package/esm2022/tool/tool.module.mjs +28 -0
  297. package/esm2022/tool/toolbox/index.mjs +3 -0
  298. package/esm2022/tool/toolbox/toolbox.animation.mjs +10 -0
  299. package/esm2022/tool/toolbox/toolbox.component.mjs +241 -0
  300. package/esm2022/tool/toolbox/toolbox.module.mjs +19 -0
  301. package/esm2022/widget/igo2-common-widget.mjs +5 -0
  302. package/esm2022/widget/public_api.mjs +4 -0
  303. package/esm2022/widget/shared/index.mjs +4 -0
  304. package/esm2022/widget/shared/widget.interfaces.mjs +2 -0
  305. package/esm2022/widget/shared/widget.mjs +4 -0
  306. package/esm2022/widget/shared/widget.service.mjs +22 -0
  307. package/esm2022/widget/widget-outlet/index.mjs +3 -0
  308. package/esm2022/widget/widget-outlet/widget-outlet.component.mjs +113 -0
  309. package/esm2022/widget/widget-outlet/widget-outlet.module.mjs +19 -0
  310. package/esm2022/widget/widget.module.mjs +22 -0
  311. package/esm2022/workspace/igo2-common-workspace.mjs +5 -0
  312. package/esm2022/workspace/public_api.mjs +5 -0
  313. package/esm2022/workspace/shared/index.mjs +4 -0
  314. package/esm2022/workspace/shared/store.mjs +37 -0
  315. package/esm2022/workspace/shared/workspace.interfaces.mjs +2 -0
  316. package/esm2022/workspace/shared/workspace.mjs +143 -0
  317. package/esm2022/workspace/workspace-selector/index.mjs +3 -0
  318. package/esm2022/workspace/workspace-selector/workspace-selector.component.mjs +51 -0
  319. package/esm2022/workspace/workspace-selector/workspace-selector.module.mjs +19 -0
  320. package/esm2022/workspace/workspace-widget-outlet/index.mjs +3 -0
  321. package/esm2022/workspace/workspace-widget-outlet/workspace-widget-outlet.component.mjs +74 -0
  322. package/esm2022/workspace/workspace-widget-outlet/workspace-widget-outlet.module.mjs +19 -0
  323. package/esm2022/workspace/workspace.module.mjs +27 -0
  324. package/fesm2022/igo2-common-action.mjs +505 -0
  325. package/fesm2022/igo2-common-action.mjs.map +1 -0
  326. package/fesm2022/igo2-common-backdrop.mjs +51 -0
  327. package/fesm2022/igo2-common-backdrop.mjs.map +1 -0
  328. package/fesm2022/igo2-common-badge.mjs +178 -0
  329. package/fesm2022/igo2-common-badge.mjs.map +1 -0
  330. package/fesm2022/igo2-common-clickout.mjs +61 -0
  331. package/fesm2022/igo2-common-clickout.mjs.map +1 -0
  332. package/fesm2022/igo2-common-clone.mjs +54 -0
  333. package/fesm2022/igo2-common-clone.mjs.map +1 -0
  334. package/fesm2022/igo2-common-collapsible.mjs +126 -0
  335. package/fesm2022/igo2-common-collapsible.mjs.map +1 -0
  336. package/fesm2022/igo2-common-color.mjs +127 -0
  337. package/fesm2022/igo2-common-color.mjs.map +1 -0
  338. package/fesm2022/igo2-common-confirm-dialog.mjs +91 -0
  339. package/fesm2022/igo2-common-confirm-dialog.mjs.map +1 -0
  340. package/fesm2022/igo2-common-context-menu.mjs +206 -0
  341. package/fesm2022/igo2-common-context-menu.mjs.map +1 -0
  342. package/fesm2022/igo2-common-custom-html.mjs +74 -0
  343. package/fesm2022/igo2-common-custom-html.mjs.map +1 -0
  344. package/fesm2022/igo2-common-dom.mjs +65 -0
  345. package/fesm2022/igo2-common-dom.mjs.map +1 -0
  346. package/fesm2022/igo2-common-drag-drop.mjs +111 -0
  347. package/fesm2022/igo2-common-drag-drop.mjs.map +1 -0
  348. package/fesm2022/igo2-common-dynamic-component.mjs +375 -0
  349. package/fesm2022/igo2-common-dynamic-component.mjs.map +1 -0
  350. package/fesm2022/igo2-common-entity.mjs +3036 -0
  351. package/fesm2022/igo2-common-entity.mjs.map +1 -0
  352. package/fesm2022/igo2-common-environment.mjs +4 -0
  353. package/fesm2022/igo2-common-environment.mjs.map +1 -0
  354. package/fesm2022/igo2-common-flexible.mjs +163 -0
  355. package/fesm2022/igo2-common-flexible.mjs.map +1 -0
  356. package/fesm2022/igo2-common-form.mjs +898 -0
  357. package/fesm2022/igo2-common-form.mjs.map +1 -0
  358. package/fesm2022/igo2-common-home-button.mjs +49 -0
  359. package/fesm2022/igo2-common-home-button.mjs.map +1 -0
  360. package/fesm2022/igo2-common-icon.mjs +108 -0
  361. package/fesm2022/igo2-common-icon.mjs.map +1 -0
  362. package/fesm2022/igo2-common-image.mjs +129 -0
  363. package/fesm2022/igo2-common-image.mjs.map +1 -0
  364. package/fesm2022/igo2-common-interactive-tour.mjs +490 -0
  365. package/fesm2022/igo2-common-interactive-tour.mjs.map +1 -0
  366. package/fesm2022/igo2-common-json-dialog.mjs +88 -0
  367. package/fesm2022/igo2-common-json-dialog.mjs.map +1 -0
  368. package/fesm2022/igo2-common-keyvalue.mjs +48 -0
  369. package/fesm2022/igo2-common-keyvalue.mjs.map +1 -0
  370. package/fesm2022/igo2-common-list.mjs +446 -0
  371. package/fesm2022/igo2-common-list.mjs.map +1 -0
  372. package/fesm2022/igo2-common-panel.mjs +53 -0
  373. package/fesm2022/igo2-common-panel.mjs.map +1 -0
  374. package/fesm2022/igo2-common-select-value-dialog.mjs +161 -0
  375. package/fesm2022/igo2-common-select-value-dialog.mjs.map +1 -0
  376. package/fesm2022/igo2-common-sidenav.mjs +86 -0
  377. package/fesm2022/igo2-common-sidenav.mjs.map +1 -0
  378. package/fesm2022/igo2-common-spinner.mjs +110 -0
  379. package/fesm2022/igo2-common-spinner.mjs.map +1 -0
  380. package/fesm2022/igo2-common-stop-propagation.mjs +73 -0
  381. package/fesm2022/igo2-common-stop-propagation.mjs.map +1 -0
  382. package/fesm2022/igo2-common-table.mjs +264 -0
  383. package/fesm2022/igo2-common-table.mjs.map +1 -0
  384. package/fesm2022/igo2-common-tool.mjs +535 -0
  385. package/fesm2022/igo2-common-tool.mjs.map +1 -0
  386. package/fesm2022/igo2-common-widget.mjs +176 -0
  387. package/fesm2022/igo2-common-widget.mjs.map +1 -0
  388. package/fesm2022/igo2-common-workspace.mjs +361 -0
  389. package/fesm2022/igo2-common-workspace.mjs.map +1 -0
  390. package/fesm2022/igo2-common.mjs +16 -8760
  391. package/fesm2022/igo2-common.mjs.map +1 -1
  392. package/flexible/flexible.component.d.ts +41 -0
  393. package/flexible/flexible.module.d.ts +12 -0
  394. package/flexible/index.d.ts +5 -0
  395. package/flexible/public_api.d.ts +3 -0
  396. package/form/form/form.component.d.ts +53 -0
  397. package/form/form/form.module.d.ts +10 -0
  398. package/form/form/index.d.ts +2 -0
  399. package/form/form-dialog/form-dialog.component.d.ts +23 -0
  400. package/form/form-dialog/form-dialog.interface.d.ts +18 -0
  401. package/form/form-dialog/form-dialog.module.d.ts +16 -0
  402. package/form/form-dialog/index.d.ts +4 -0
  403. package/form/form-field/form-field-select.component.d.ts +52 -0
  404. package/form/form-field/form-field-text.component.d.ts +51 -0
  405. package/form/form-field/form-field-textarea.component.d.ts +41 -0
  406. package/form/form-field/form-field.component.d.ts +29 -0
  407. package/form/form-field/form-field.directive.d.ts +5 -0
  408. package/form/form-field/form-field.module.d.ts +13 -0
  409. package/form/form-field/index.d.ts +6 -0
  410. package/form/form-group/form-group.component.d.ts +49 -0
  411. package/form/form-group/form-group.module.d.ts +10 -0
  412. package/form/form-group/index.d.ts +2 -0
  413. package/form/form.module.d.ts +18 -0
  414. package/form/index.d.ts +5 -0
  415. package/form/public_api.d.ts +6 -0
  416. package/home-button/home-button.component.d.ts +9 -0
  417. package/home-button/home-button.module.d.ts +10 -0
  418. package/home-button/index.d.ts +5 -0
  419. package/home-button/public_api.d.ts +2 -0
  420. package/home-button/src/home-button.theming.scss +18 -0
  421. package/icon/icon/icon.component.d.ts +14 -0
  422. package/icon/icon.provider.d.ts +4 -0
  423. package/icon/index.d.ts +5 -0
  424. package/icon/public_api.d.ts +3 -0
  425. package/icon/shared/icon.interface.d.ts +4 -0
  426. package/icon/shared/icon.service.d.ts +12 -0
  427. package/icon/shared/icons.d.ts +9 -0
  428. package/icon/shared/index.d.ts +3 -0
  429. package/image/image-error.directive.d.ts +11 -0
  430. package/image/image.module.d.ts +13 -0
  431. package/image/index.d.ts +5 -0
  432. package/image/public_api.d.ts +6 -0
  433. package/image/secure-image.pipe.d.ts +13 -0
  434. package/interactive-tour/index.d.ts +5 -0
  435. package/interactive-tour/interactive-tour.component.d.ts +33 -0
  436. package/interactive-tour/interactive-tour.loader.d.ts +18 -0
  437. package/interactive-tour/interactive-tour.module.d.ts +7 -0
  438. package/interactive-tour/interactive-tour.service.d.ts +31 -0
  439. package/interactive-tour/public_api.d.ts +5 -0
  440. package/interactive-tour/src/interactive-tour.theming.scss +32 -0
  441. package/json-dialog/index.d.ts +5 -0
  442. package/json-dialog/json-dialog.component.d.ts +13 -0
  443. package/json-dialog/json-dialog.module.d.ts +12 -0
  444. package/json-dialog/public_api.d.ts +3 -0
  445. package/keyvalue/index.d.ts +5 -0
  446. package/keyvalue/keyvalue.module.d.ts +12 -0
  447. package/keyvalue/keyvalue.pipe.d.ts +7 -0
  448. package/keyvalue/public_api.d.ts +2 -0
  449. package/list/index.d.ts +5 -0
  450. package/list/list-item.directive.d.ts +43 -0
  451. package/list/list.component.d.ts +51 -0
  452. package/list/list.module.d.ts +13 -0
  453. package/list/public_api.d.ts +6 -0
  454. package/list/src/list.theming.scss +58 -0
  455. package/locale/en.common.json +59 -59
  456. package/locale/fr.common.json +59 -59
  457. package/package.json +206 -8
  458. package/panel/index.d.ts +5 -0
  459. package/panel/panel.component.d.ts +10 -0
  460. package/panel/panel.module.d.ts +10 -0
  461. package/panel/public_api.d.ts +2 -0
  462. package/panel/src/panel.theming.scss +30 -0
  463. package/public_api.d.ts +16 -77
  464. package/select-value-dialog/index.d.ts +5 -0
  465. package/select-value-dialog/public_api.d.ts +5 -0
  466. package/select-value-dialog/select-value-check-radio-dialog.component.d.ts +25 -0
  467. package/select-value-dialog/select-value-dialog.module.d.ts +12 -0
  468. package/sidenav/index.d.ts +5 -0
  469. package/sidenav/public_api.d.ts +2 -0
  470. package/sidenav/sidenav-shim.directive.d.ts +20 -0
  471. package/sidenav/sidenav.module.d.ts +12 -0
  472. package/spinner/index.d.ts +5 -0
  473. package/spinner/public_api.d.ts +3 -0
  474. package/spinner/spinner-activity.directive.d.ts +32 -0
  475. package/spinner/spinner.component.d.ts +12 -0
  476. package/spinner/spinner.module.d.ts +14 -0
  477. package/src/common-theme.scss +19 -19
  478. package/src/style/partial/common-utils.scss +9 -9
  479. package/src/style/partial/common.variables.scss +8 -8
  480. package/src/style/style.scss +1 -1
  481. package/stop-propagation/index.d.ts +5 -0
  482. package/stop-propagation/public_api.d.ts +6 -0
  483. package/stop-propagation/stop-drop-propagation.directive.d.ts +6 -0
  484. package/stop-propagation/stop-propagation.directive.d.ts +6 -0
  485. package/stop-propagation/stop-propagation.module.d.ts +13 -0
  486. package/table/index.d.ts +5 -0
  487. package/table/public_api.d.ts +6 -0
  488. package/table/table.component.d.ts +40 -0
  489. package/table/table.module.d.ts +12 -0
  490. package/tool/index.d.ts +5 -0
  491. package/tool/public_api.d.ts +3 -0
  492. package/tool/shared/tool.interface.d.ts +18 -0
  493. package/tool/shared/toolbox.d.ts +98 -0
  494. package/tool/shared/toolbox.enums.d.ts +1 -0
  495. package/tool/src/tool.theming.scss +5 -0
  496. package/tool/src/toolbox/toolbox.theming.scss +105 -0
  497. package/tool/tool.module.d.ts +15 -0
  498. package/tool/toolbox/index.d.ts +2 -0
  499. package/tool/toolbox/toolbox.component.d.ts +128 -0
  500. package/tool/toolbox/toolbox.module.d.ts +10 -0
  501. package/widget/index.d.ts +5 -0
  502. package/widget/public_api.d.ts +3 -0
  503. package/widget/shared/widget.d.ts +4 -0
  504. package/widget/shared/widget.service.d.ts +10 -0
  505. package/widget/widget-outlet/index.d.ts +2 -0
  506. package/widget/widget-outlet/widget-outlet.component.d.ts +71 -0
  507. package/widget/widget-outlet/widget-outlet.module.d.ts +10 -0
  508. package/widget/widget.module.d.ts +10 -0
  509. package/workspace/index.d.ts +5 -0
  510. package/workspace/public_api.d.ts +4 -0
  511. package/workspace/shared/store.d.ts +20 -0
  512. package/workspace/shared/workspace.d.ts +108 -0
  513. package/workspace/shared/workspace.interfaces.d.ts +11 -0
  514. package/workspace/workspace-selector/index.d.ts +2 -0
  515. package/workspace/workspace-selector/workspace-selector.component.d.ts +38 -0
  516. package/workspace/workspace-selector/workspace-selector.module.d.ts +10 -0
  517. package/workspace/workspace-widget-outlet/index.d.ts +2 -0
  518. package/workspace/workspace-widget-outlet/workspace-widget-outlet.component.d.ts +57 -0
  519. package/workspace/workspace-widget-outlet/workspace-widget-outlet.module.d.ts +10 -0
  520. package/workspace/workspace.module.d.ts +14 -0
  521. package/esm2022/lib/action/action.module.mjs +0 -19
  522. package/esm2022/lib/action/actionbar/actionbar-item.component.mjs +0 -190
  523. package/esm2022/lib/action/actionbar/actionbar.component.mjs +0 -258
  524. package/esm2022/lib/action/actionbar/actionbar.module.mjs +0 -56
  525. package/esm2022/lib/action/index.mjs +0 -3
  526. package/esm2022/lib/action/shared/action.enums.mjs +0 -7
  527. package/esm2022/lib/action/shared/action.interfaces.mjs +0 -2
  528. package/esm2022/lib/action/shared/index.mjs +0 -4
  529. package/esm2022/lib/action/shared/store.mjs +0 -8
  530. package/esm2022/lib/backdrop/backdrop.component.mjs +0 -22
  531. package/esm2022/lib/backdrop/backdrop.module.mjs +0 -24
  532. package/esm2022/lib/backdrop/index.mjs +0 -2
  533. package/esm2022/lib/badge-icon/badge-icon.directive.mjs +0 -150
  534. package/esm2022/lib/badge-icon/badge-icon.module.mjs +0 -25
  535. package/esm2022/lib/badge-icon/index.mjs +0 -2
  536. package/esm2022/lib/clickout/clickout.directive.mjs +0 -31
  537. package/esm2022/lib/clickout/clickout.module.mjs +0 -23
  538. package/esm2022/lib/clickout/index.mjs +0 -2
  539. package/esm2022/lib/clone/clone.module.mjs +0 -23
  540. package/esm2022/lib/clone/clone.pipe.mjs +0 -24
  541. package/esm2022/lib/clone/index.mjs +0 -2
  542. package/esm2022/lib/collapsible/collapse.directive.mjs +0 -56
  543. package/esm2022/lib/collapsible/collapsible.component.mjs +0 -36
  544. package/esm2022/lib/collapsible/collapsible.module.mjs +0 -26
  545. package/esm2022/lib/collapsible/index.mjs +0 -3
  546. package/esm2022/lib/color-picker-form-field/color-picker-form-field.component.mjs +0 -91
  547. package/esm2022/lib/color-picker-form-field/color-picker-form-field.module.mjs +0 -51
  548. package/esm2022/lib/color-picker-form-field/index.mjs +0 -2
  549. package/esm2022/lib/confirm-dialog/confirm-dialog.component.mjs +0 -23
  550. package/esm2022/lib/confirm-dialog/confirm-dialog.interface.mjs +0 -2
  551. package/esm2022/lib/confirm-dialog/confirm-dialog.module.mjs +0 -28
  552. package/esm2022/lib/confirm-dialog/confirm-dialog.service.mjs +0 -34
  553. package/esm2022/lib/confirm-dialog/index.mjs +0 -4
  554. package/esm2022/lib/context-menu/context-menu.directive.mjs +0 -108
  555. package/esm2022/lib/context-menu/context-menu.module.mjs +0 -24
  556. package/esm2022/lib/context-menu/index.mjs +0 -3
  557. package/esm2022/lib/context-menu/long-press.directive.mjs +0 -65
  558. package/esm2022/lib/custom-html/custom-html.component.mjs +0 -22
  559. package/esm2022/lib/custom-html/custom-html.module.mjs +0 -46
  560. package/esm2022/lib/custom-html/custom-html.pipe.mjs +0 -20
  561. package/esm2022/lib/custom-html/index.mjs +0 -3
  562. package/esm2022/lib/dom/dom.interfaces.mjs +0 -2
  563. package/esm2022/lib/dom/dom.module.mjs +0 -21
  564. package/esm2022/lib/dom/dom.service.mjs +0 -35
  565. package/esm2022/lib/dom/index.mjs +0 -3
  566. package/esm2022/lib/drag-drop/drag-drop.directive.mjs +0 -81
  567. package/esm2022/lib/drag-drop/drag-drop.module.mjs +0 -23
  568. package/esm2022/lib/drag-drop/index.mjs +0 -2
  569. package/esm2022/lib/dynamic-component/dynamic-component.module.mjs +0 -19
  570. package/esm2022/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.mjs +0 -129
  571. package/esm2022/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.mjs +0 -21
  572. package/esm2022/lib/dynamic-component/index.mjs +0 -3
  573. package/esm2022/lib/dynamic-component/shared/dynamic-component.interfaces.mjs +0 -2
  574. package/esm2022/lib/dynamic-component/shared/dynamic-component.mjs +0 -183
  575. package/esm2022/lib/dynamic-component/shared/dynamic-component.service.mjs +0 -30
  576. package/esm2022/lib/dynamic-component/shared/index.mjs +0 -4
  577. package/esm2022/lib/entity/entity-selector/entity-selector.component.mjs +0 -164
  578. package/esm2022/lib/entity/entity-selector/entity-selector.module.mjs +0 -23
  579. package/esm2022/lib/entity/entity-table/entity-table-row.directive.mjs +0 -137
  580. package/esm2022/lib/entity/entity-table/entity-table.component.mjs +0 -842
  581. package/esm2022/lib/entity/entity-table/entity-table.module.mjs +0 -95
  582. package/esm2022/lib/entity/entity-table-paginator/entity-table-paginator.component.mjs +0 -156
  583. package/esm2022/lib/entity/entity-table-paginator/entity-table-paginator.interface.mjs +0 -2
  584. package/esm2022/lib/entity/entity-table-paginator/entity-table-paginator.module.mjs +0 -21
  585. package/esm2022/lib/entity/entity.module.mjs +0 -28
  586. package/esm2022/lib/entity/index.mjs +0 -6
  587. package/esm2022/lib/entity/shared/entity.enums.mjs +0 -28
  588. package/esm2022/lib/entity/shared/entity.interfaces.mjs +0 -2
  589. package/esm2022/lib/entity/shared/entity.utils.mjs +0 -73
  590. package/esm2022/lib/entity/shared/index.mjs +0 -10
  591. package/esm2022/lib/entity/shared/state.mjs +0 -194
  592. package/esm2022/lib/entity/shared/store.mjs +0 -322
  593. package/esm2022/lib/entity/shared/strategies/filter-custom-function.mjs +0 -80
  594. package/esm2022/lib/entity/shared/strategies/filter-selection.mjs +0 -81
  595. package/esm2022/lib/entity/shared/strategies/index.mjs +0 -4
  596. package/esm2022/lib/entity/shared/strategies/strategy.mjs +0 -78
  597. package/esm2022/lib/entity/shared/transaction.mjs +0 -329
  598. package/esm2022/lib/entity/shared/view.mjs +0 -330
  599. package/esm2022/lib/entity/shared/watcher.mjs +0 -135
  600. package/esm2022/lib/environment/environment.interface.mjs +0 -2
  601. package/esm2022/lib/environment/index.mjs +0 -2
  602. package/esm2022/lib/flexible/flexible.component.mjs +0 -135
  603. package/esm2022/lib/flexible/flexible.module.mjs +0 -23
  604. package/esm2022/lib/flexible/flexible.type.mjs +0 -2
  605. package/esm2022/lib/flexible/index.mjs +0 -3
  606. package/esm2022/lib/form/form/form.component.mjs +0 -102
  607. package/esm2022/lib/form/form/form.module.mjs +0 -22
  608. package/esm2022/lib/form/form-field/form-field-select.component.mjs +0 -99
  609. package/esm2022/lib/form/form-field/form-field-text.component.mjs +0 -109
  610. package/esm2022/lib/form/form-field/form-field-textarea.component.mjs +0 -80
  611. package/esm2022/lib/form/form-field/form-field.component.mjs +0 -65
  612. package/esm2022/lib/form/form-field/form-field.module.mjs +0 -77
  613. package/esm2022/lib/form/form-field/index.mjs +0 -5
  614. package/esm2022/lib/form/form-group/form-group.component.mjs +0 -73
  615. package/esm2022/lib/form/form-group/form-group.module.mjs +0 -35
  616. package/esm2022/lib/form/form.module.mjs +0 -26
  617. package/esm2022/lib/form/index.mjs +0 -5
  618. package/esm2022/lib/form/shared/form-field-component.mjs +0 -7
  619. package/esm2022/lib/form/shared/form-field.service.mjs +0 -29
  620. package/esm2022/lib/form/shared/form.interfaces.mjs +0 -2
  621. package/esm2022/lib/form/shared/form.service.mjs +0 -82
  622. package/esm2022/lib/form/shared/form.utils.mjs +0 -41
  623. package/esm2022/lib/form/shared/index.mjs +0 -6
  624. package/esm2022/lib/form-dialog/form-dialog.component.mjs +0 -80
  625. package/esm2022/lib/form-dialog/form-dialog.interface.mjs +0 -2
  626. package/esm2022/lib/form-dialog/form-dialog.module.mjs +0 -52
  627. package/esm2022/lib/form-dialog/form-dialog.service.mjs +0 -30
  628. package/esm2022/lib/form-dialog/index.mjs +0 -4
  629. package/esm2022/lib/home-button/home-button.component.mjs +0 -22
  630. package/esm2022/lib/home-button/home-button.module.mjs +0 -40
  631. package/esm2022/lib/home-button/index.mjs +0 -2
  632. package/esm2022/lib/image/image-error.directive.mjs +0 -34
  633. package/esm2022/lib/image/image.module.mjs +0 -24
  634. package/esm2022/lib/image/index.mjs +0 -3
  635. package/esm2022/lib/image/secure-image.pipe.mjs +0 -65
  636. package/esm2022/lib/interactive-tour/index.mjs +0 -5
  637. package/esm2022/lib/interactive-tour/interactive-tour.component.mjs +0 -114
  638. package/esm2022/lib/interactive-tour/interactive-tour.interface.mjs +0 -2
  639. package/esm2022/lib/interactive-tour/interactive-tour.loader.mjs +0 -49
  640. package/esm2022/lib/interactive-tour/interactive-tour.module.mjs +0 -39
  641. package/esm2022/lib/interactive-tour/interactive-tour.service.mjs +0 -299
  642. package/esm2022/lib/json-dialog/index.mjs +0 -3
  643. package/esm2022/lib/json-dialog/json-dialog.component.mjs +0 -29
  644. package/esm2022/lib/json-dialog/json-dialog.module.mjs +0 -28
  645. package/esm2022/lib/json-dialog/json-dialog.service.mjs +0 -26
  646. package/esm2022/lib/keyvalue/index.mjs +0 -2
  647. package/esm2022/lib/keyvalue/keyvalue.module.mjs +0 -23
  648. package/esm2022/lib/keyvalue/keyvalue.pipe.mjs +0 -18
  649. package/esm2022/lib/list/index.mjs +0 -3
  650. package/esm2022/lib/list/list-item.directive.mjs +0 -165
  651. package/esm2022/lib/list/list.component.mjs +0 -251
  652. package/esm2022/lib/list/list.module.mjs +0 -28
  653. package/esm2022/lib/panel/index.mjs +0 -2
  654. package/esm2022/lib/panel/panel.component.mjs +0 -30
  655. package/esm2022/lib/panel/panel.module.mjs +0 -18
  656. package/esm2022/lib/select-value-dialog/index.mjs +0 -5
  657. package/esm2022/lib/select-value-dialog/select-value-check-radio-dialog.component.mjs +0 -87
  658. package/esm2022/lib/select-value-dialog/select-value-dialog.enums.mjs +0 -6
  659. package/esm2022/lib/select-value-dialog/select-value-dialog.interface.mjs +0 -2
  660. package/esm2022/lib/select-value-dialog/select-value-dialog.module.mjs +0 -59
  661. package/esm2022/lib/select-value-dialog/select-value-dialog.service.mjs +0 -29
  662. package/esm2022/lib/sidenav/index.mjs +0 -2
  663. package/esm2022/lib/sidenav/sidenav-shim.directive.mjs +0 -57
  664. package/esm2022/lib/sidenav/sidenav.module.mjs +0 -23
  665. package/esm2022/lib/spinner/index.mjs +0 -3
  666. package/esm2022/lib/spinner/spinner-activity.directive.mjs +0 -55
  667. package/esm2022/lib/spinner/spinner.component.mjs +0 -30
  668. package/esm2022/lib/spinner/spinner.module.mjs +0 -20
  669. package/esm2022/lib/stop-propagation/index.mjs +0 -3
  670. package/esm2022/lib/stop-propagation/stop-drop-propagation.directive.mjs +0 -20
  671. package/esm2022/lib/stop-propagation/stop-propagation.directive.mjs +0 -19
  672. package/esm2022/lib/stop-propagation/stop-propagation.module.mjs +0 -24
  673. package/esm2022/lib/table/index.mjs +0 -6
  674. package/esm2022/lib/table/table-action-color.enum.mjs +0 -7
  675. package/esm2022/lib/table/table-database.mjs +0 -28
  676. package/esm2022/lib/table/table-datasource.mjs +0 -64
  677. package/esm2022/lib/table/table-model.interface.mjs +0 -2
  678. package/esm2022/lib/table/table.component.mjs +0 -124
  679. package/esm2022/lib/table/table.module.mjs +0 -66
  680. package/esm2022/lib/tool/index.mjs +0 -3
  681. package/esm2022/lib/tool/shared/index.mjs +0 -6
  682. package/esm2022/lib/tool/shared/tool-component.mjs +0 -9
  683. package/esm2022/lib/tool/shared/tool.interface.mjs +0 -2
  684. package/esm2022/lib/tool/shared/tool.service.mjs +0 -43
  685. package/esm2022/lib/tool/shared/toolbox.enums.mjs +0 -7
  686. package/esm2022/lib/tool/shared/toolbox.mjs +0 -184
  687. package/esm2022/lib/tool/tool.module.mjs +0 -25
  688. package/esm2022/lib/tool/toolbox/toolbox.animation.mjs +0 -10
  689. package/esm2022/lib/tool/toolbox/toolbox.component.mjs +0 -238
  690. package/esm2022/lib/tool/toolbox/toolbox.module.mjs +0 -23
  691. package/esm2022/lib/widget/index.mjs +0 -3
  692. package/esm2022/lib/widget/shared/index.mjs +0 -4
  693. package/esm2022/lib/widget/shared/widget.interfaces.mjs +0 -2
  694. package/esm2022/lib/widget/shared/widget.mjs +0 -4
  695. package/esm2022/lib/widget/shared/widget.service.mjs +0 -22
  696. package/esm2022/lib/widget/widget-outlet/widget-outlet.component.mjs +0 -114
  697. package/esm2022/lib/widget/widget-outlet/widget-outlet.module.mjs +0 -22
  698. package/esm2022/lib/widget/widget.module.mjs +0 -20
  699. package/esm2022/lib/workspace/index.mjs +0 -4
  700. package/esm2022/lib/workspace/shared/index.mjs +0 -4
  701. package/esm2022/lib/workspace/shared/store.mjs +0 -37
  702. package/esm2022/lib/workspace/shared/workspace.interfaces.mjs +0 -2
  703. package/esm2022/lib/workspace/shared/workspace.mjs +0 -143
  704. package/esm2022/lib/workspace/workspace-selector/workspace-selector.component.mjs +0 -52
  705. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +0 -22
  706. package/esm2022/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.mjs +0 -74
  707. package/esm2022/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.mjs +0 -22
  708. package/esm2022/lib/workspace/workspace.module.mjs +0 -19
  709. package/lib/action/action.module.d.ts +0 -8
  710. package/lib/action/actionbar/actionbar-item.component.d.ts +0 -78
  711. package/lib/action/actionbar/actionbar.component.d.ts +0 -147
  712. package/lib/action/actionbar/actionbar.module.d.ts +0 -20
  713. package/lib/action/index.d.ts +0 -2
  714. package/lib/action/shared/action.interfaces.d.ts +0 -17
  715. package/lib/action/shared/store.d.ts +0 -8
  716. package/lib/backdrop/backdrop.component.d.ts +0 -9
  717. package/lib/backdrop/backdrop.module.d.ts +0 -10
  718. package/lib/backdrop/index.d.ts +0 -1
  719. package/lib/badge-icon/badge-icon.directive.d.ts +0 -36
  720. package/lib/badge-icon/badge-icon.module.d.ts +0 -11
  721. package/lib/badge-icon/index.d.ts +0 -1
  722. package/lib/clickout/clickout.directive.d.ts +0 -10
  723. package/lib/clickout/clickout.module.d.ts +0 -9
  724. package/lib/clickout/index.d.ts +0 -1
  725. package/lib/clone/clone.module.d.ts +0 -9
  726. package/lib/clone/clone.pipe.d.ts +0 -7
  727. package/lib/clone/index.d.ts +0 -1
  728. package/lib/collapsible/collapse.directive.d.ts +0 -19
  729. package/lib/collapsible/collapsible.component.d.ts +0 -13
  730. package/lib/collapsible/collapsible.module.d.ts +0 -12
  731. package/lib/collapsible/index.d.ts +0 -2
  732. package/lib/color-picker-form-field/color-picker-form-field.component.d.ts +0 -29
  733. package/lib/color-picker-form-field/color-picker-form-field.module.d.ts +0 -15
  734. package/lib/color-picker-form-field/index.d.ts +0 -1
  735. package/lib/confirm-dialog/confirm-dialog.component.d.ts +0 -12
  736. package/lib/confirm-dialog/confirm-dialog.module.d.ts +0 -12
  737. package/lib/confirm-dialog/index.d.ts +0 -3
  738. package/lib/context-menu/context-menu.directive.d.ts +0 -21
  739. package/lib/context-menu/context-menu.module.d.ts +0 -10
  740. package/lib/context-menu/index.d.ts +0 -2
  741. package/lib/context-menu/long-press.directive.d.ts +0 -20
  742. package/lib/custom-html/custom-html.component.d.ts +0 -9
  743. package/lib/custom-html/custom-html.module.d.ts +0 -16
  744. package/lib/custom-html/custom-html.pipe.d.ts +0 -10
  745. package/lib/custom-html/index.d.ts +0 -2
  746. package/lib/dom/dom.module.d.ts +0 -8
  747. package/lib/dom/index.d.ts +0 -2
  748. package/lib/drag-drop/drag-drop.directive.d.ts +0 -14
  749. package/lib/drag-drop/drag-drop.module.d.ts +0 -9
  750. package/lib/drag-drop/index.d.ts +0 -1
  751. package/lib/dynamic-component/dynamic-component.module.d.ts +0 -8
  752. package/lib/dynamic-component/dynamic-outlet/dynamic-outlet.component.d.ts +0 -70
  753. package/lib/dynamic-component/dynamic-outlet/dynamic-outlet.module.d.ts +0 -11
  754. package/lib/dynamic-component/index.d.ts +0 -2
  755. package/lib/entity/entity-selector/entity-selector.component.d.ts +0 -92
  756. package/lib/entity/entity-selector/entity-selector.module.d.ts +0 -13
  757. package/lib/entity/entity-table/entity-table-row.directive.d.ts +0 -69
  758. package/lib/entity/entity-table/entity-table.component.d.ts +0 -342
  759. package/lib/entity/entity-table/entity-table.module.d.ts +0 -29
  760. package/lib/entity/entity-table-paginator/entity-table-paginator.component.d.ts +0 -49
  761. package/lib/entity/entity-table-paginator/entity-table-paginator.module.d.ts +0 -11
  762. package/lib/entity/entity.module.d.ts +0 -10
  763. package/lib/entity/index.d.ts +0 -5
  764. package/lib/entity/shared/entity.interfaces.d.ts +0 -95
  765. package/lib/entity/shared/transaction.d.ts +0 -180
  766. package/lib/flexible/flexible.component.d.ts +0 -41
  767. package/lib/flexible/flexible.module.d.ts +0 -9
  768. package/lib/flexible/index.d.ts +0 -2
  769. package/lib/form/form/form.component.d.ts +0 -53
  770. package/lib/form/form/form.module.d.ts +0 -12
  771. package/lib/form/form-field/form-field-select.component.d.ts +0 -52
  772. package/lib/form/form-field/form-field-text.component.d.ts +0 -51
  773. package/lib/form/form-field/form-field-textarea.component.d.ts +0 -41
  774. package/lib/form/form-field/form-field.component.d.ts +0 -29
  775. package/lib/form/form-field/form-field.module.d.ts +0 -22
  776. package/lib/form/form-field/index.d.ts +0 -4
  777. package/lib/form/form-group/form-group.component.d.ts +0 -49
  778. package/lib/form/form-group/form-group.module.d.ts +0 -14
  779. package/lib/form/form.module.d.ts +0 -13
  780. package/lib/form/index.d.ts +0 -4
  781. package/lib/form-dialog/form-dialog.component.d.ts +0 -24
  782. package/lib/form-dialog/form-dialog.interface.d.ts +0 -18
  783. package/lib/form-dialog/form-dialog.module.d.ts +0 -16
  784. package/lib/form-dialog/index.d.ts +0 -3
  785. package/lib/home-button/home-button.component.d.ts +0 -9
  786. package/lib/home-button/home-button.module.d.ts +0 -15
  787. package/lib/home-button/index.d.ts +0 -1
  788. package/lib/image/image-error.directive.d.ts +0 -11
  789. package/lib/image/image.module.d.ts +0 -10
  790. package/lib/image/index.d.ts +0 -2
  791. package/lib/image/secure-image.pipe.d.ts +0 -13
  792. package/lib/interactive-tour/index.d.ts +0 -4
  793. package/lib/interactive-tour/interactive-tour.component.d.ts +0 -30
  794. package/lib/interactive-tour/interactive-tour.loader.d.ts +0 -18
  795. package/lib/interactive-tour/interactive-tour.module.d.ts +0 -12
  796. package/lib/interactive-tour/interactive-tour.service.d.ts +0 -29
  797. package/lib/json-dialog/index.d.ts +0 -2
  798. package/lib/json-dialog/json-dialog.component.d.ts +0 -13
  799. package/lib/json-dialog/json-dialog.module.d.ts +0 -13
  800. package/lib/keyvalue/index.d.ts +0 -1
  801. package/lib/keyvalue/keyvalue.module.d.ts +0 -9
  802. package/lib/keyvalue/keyvalue.pipe.d.ts +0 -7
  803. package/lib/list/index.d.ts +0 -2
  804. package/lib/list/list-item.directive.d.ts +0 -43
  805. package/lib/list/list.component.d.ts +0 -51
  806. package/lib/list/list.module.d.ts +0 -14
  807. package/lib/panel/index.d.ts +0 -1
  808. package/lib/panel/panel.component.d.ts +0 -10
  809. package/lib/panel/panel.module.d.ts +0 -8
  810. package/lib/select-value-dialog/index.d.ts +0 -4
  811. package/lib/select-value-dialog/select-value-check-radio-dialog.component.d.ts +0 -25
  812. package/lib/select-value-dialog/select-value-dialog.module.d.ts +0 -17
  813. package/lib/sidenav/index.d.ts +0 -1
  814. package/lib/sidenav/sidenav-shim.directive.d.ts +0 -20
  815. package/lib/sidenav/sidenav.module.d.ts +0 -9
  816. package/lib/spinner/index.d.ts +0 -2
  817. package/lib/spinner/spinner-activity.directive.d.ts +0 -32
  818. package/lib/spinner/spinner.component.d.ts +0 -12
  819. package/lib/spinner/spinner.module.d.ts +0 -10
  820. package/lib/stop-propagation/index.d.ts +0 -2
  821. package/lib/stop-propagation/stop-drop-propagation.directive.d.ts +0 -6
  822. package/lib/stop-propagation/stop-propagation.directive.d.ts +0 -6
  823. package/lib/stop-propagation/stop-propagation.module.d.ts +0 -10
  824. package/lib/table/index.d.ts +0 -5
  825. package/lib/table/table.component.d.ts +0 -40
  826. package/lib/table/table.module.d.ts +0 -20
  827. package/lib/tool/index.d.ts +0 -2
  828. package/lib/tool/shared/tool.interface.d.ts +0 -18
  829. package/lib/tool/shared/toolbox.d.ts +0 -95
  830. package/lib/tool/shared/toolbox.enums.d.ts +0 -5
  831. package/lib/tool/tool.module.d.ts +0 -10
  832. package/lib/tool/toolbox/toolbox.component.d.ts +0 -128
  833. package/lib/tool/toolbox/toolbox.module.d.ts +0 -13
  834. package/lib/widget/index.d.ts +0 -2
  835. package/lib/widget/shared/widget.d.ts +0 -4
  836. package/lib/widget/shared/widget.service.d.ts +0 -10
  837. package/lib/widget/widget-outlet/widget-outlet.component.d.ts +0 -71
  838. package/lib/widget/widget-outlet/widget-outlet.module.d.ts +0 -12
  839. package/lib/widget/widget.module.d.ts +0 -8
  840. package/lib/workspace/index.d.ts +0 -3
  841. package/lib/workspace/shared/store.d.ts +0 -20
  842. package/lib/workspace/shared/workspace.d.ts +0 -108
  843. package/lib/workspace/shared/workspace.interfaces.d.ts +0 -11
  844. package/lib/workspace/workspace-selector/workspace-selector.component.d.ts +0 -39
  845. package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +0 -12
  846. package/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.component.d.ts +0 -57
  847. package/lib/workspace/workspace-widget-outlet/workspace-widget-outlet.module.d.ts +0 -12
  848. package/lib/workspace/workspace.module.d.ts +0 -9
  849. package/src/lib/action/action.theming.scss +0 -5
  850. package/src/lib/action/actionbar/actionbar-item.theming.scss +0 -32
  851. package/src/lib/action/actionbar/actionbar.theming.scss +0 -22
  852. package/src/lib/collapsible/collapsible.theming.scss +0 -22
  853. package/src/lib/entity/entity-selector/entity-selector.theming.scss +0 -21
  854. package/src/lib/entity/entity-table/entity-table.theming.scss +0 -37
  855. package/src/lib/entity/entity.theming.scss +0 -7
  856. package/src/lib/home-button/home-button.theming.scss +0 -18
  857. package/src/lib/interactive-tour/interactive-tour.theming.scss +0 -32
  858. package/src/lib/list/list.theming.scss +0 -58
  859. package/src/lib/panel/panel.theming.scss +0 -30
  860. package/src/lib/tool/tool.theming.scss +0 -5
  861. package/src/lib/tool/toolbox/toolbox.theming.scss +0 -105
  862. /package/{lib/action → action}/shared/action.enums.d.ts +0 -0
  863. /package/{lib/action → action}/shared/index.d.ts +0 -0
  864. /package/{lib/confirm-dialog → confirm-dialog}/confirm-dialog.interface.d.ts +0 -0
  865. /package/{lib/confirm-dialog → confirm-dialog}/confirm-dialog.service.d.ts +0 -0
  866. /package/{lib/dom → dom}/dom.interfaces.d.ts +0 -0
  867. /package/{lib/dom → dom}/dom.service.d.ts +0 -0
  868. /package/{lib/dynamic-component → dynamic-component}/shared/dynamic-component.d.ts +0 -0
  869. /package/{lib/dynamic-component → dynamic-component}/shared/dynamic-component.interfaces.d.ts +0 -0
  870. /package/{lib/dynamic-component → dynamic-component}/shared/dynamic-component.service.d.ts +0 -0
  871. /package/{lib/dynamic-component → dynamic-component}/shared/index.d.ts +0 -0
  872. /package/{lib/entity → entity}/entity-table-paginator/entity-table-paginator.interface.d.ts +0 -0
  873. /package/{lib/entity → entity}/shared/entity.enums.d.ts +0 -0
  874. /package/{lib/entity → entity}/shared/entity.utils.d.ts +0 -0
  875. /package/{lib/entity → entity}/shared/index.d.ts +0 -0
  876. /package/{lib/entity → entity}/shared/state.d.ts +0 -0
  877. /package/{lib/entity → entity}/shared/store.d.ts +0 -0
  878. /package/{lib/entity → entity}/shared/strategies/filter-custom-function.d.ts +0 -0
  879. /package/{lib/entity → entity}/shared/strategies/filter-selection.d.ts +0 -0
  880. /package/{lib/entity → entity}/shared/strategies/index.d.ts +0 -0
  881. /package/{lib/entity → entity}/shared/strategies/strategy.d.ts +0 -0
  882. /package/{lib/entity → entity}/shared/view.d.ts +0 -0
  883. /package/{lib/entity → entity}/shared/watcher.d.ts +0 -0
  884. /package/{lib/environment → environment}/environment.interface.d.ts +0 -0
  885. /package/{lib/environment/index.d.ts → environment/public_api.d.ts} +0 -0
  886. /package/{lib/flexible → flexible}/flexible.type.d.ts +0 -0
  887. /package/{lib → form}/form-dialog/form-dialog.service.d.ts +0 -0
  888. /package/{lib/form → form}/shared/form-field-component.d.ts +0 -0
  889. /package/{lib/form → form}/shared/form-field.service.d.ts +0 -0
  890. /package/{lib/form → form}/shared/form.interfaces.d.ts +0 -0
  891. /package/{lib/form → form}/shared/form.service.d.ts +0 -0
  892. /package/{lib/form → form}/shared/form.utils.d.ts +0 -0
  893. /package/{lib/form → form}/shared/index.d.ts +0 -0
  894. /package/{lib/interactive-tour → interactive-tour}/interactive-tour.interface.d.ts +0 -0
  895. /package/{lib/json-dialog → json-dialog}/json-dialog.service.d.ts +0 -0
  896. /package/{lib/select-value-dialog → select-value-dialog}/select-value-dialog.enums.d.ts +0 -0
  897. /package/{lib/select-value-dialog → select-value-dialog}/select-value-dialog.interface.d.ts +0 -0
  898. /package/{lib/select-value-dialog → select-value-dialog}/select-value-dialog.service.d.ts +0 -0
  899. /package/{lib/table → table}/table-action-color.enum.d.ts +0 -0
  900. /package/{lib/table → table}/table-database.d.ts +0 -0
  901. /package/{lib/table → table}/table-datasource.d.ts +0 -0
  902. /package/{lib/table → table}/table-model.interface.d.ts +0 -0
  903. /package/{lib/tool → tool}/shared/index.d.ts +0 -0
  904. /package/{lib/tool → tool}/shared/tool-component.d.ts +0 -0
  905. /package/{lib/tool → tool}/shared/tool.service.d.ts +0 -0
  906. /package/{lib/tool → tool}/toolbox/toolbox.animation.d.ts +0 -0
  907. /package/{lib/widget → widget}/shared/index.d.ts +0 -0
  908. /package/{lib/widget → widget}/shared/widget.interfaces.d.ts +0 -0
  909. /package/{lib/workspace → workspace}/shared/index.d.ts +0 -0
@@ -0,0 +1,81 @@
1
+ import { EntityStoreStrategy } from './strategy';
2
+ /**
3
+ * When active, this strategy filters a store's stateView to return
4
+ * selected entities only.
5
+ */
6
+ export class EntityStoreFilterSelectionStrategy extends EntityStoreStrategy {
7
+ /**
8
+ * Store / filter ids map
9
+ */
10
+ filters = new Map();
11
+ /**
12
+ * Bind this strategy to a store and start filtering it
13
+ * @param store Entity store
14
+ */
15
+ bindStore(store) {
16
+ super.bindStore(store);
17
+ if (this.active === true) {
18
+ this.filterStore(store);
19
+ }
20
+ }
21
+ /**
22
+ * Unbind this strategy from a store and stop filtering it
23
+ * @param store Entity store
24
+ */
25
+ unbindStore(store) {
26
+ super.unbindStore(store);
27
+ if (this.active === true) {
28
+ this.unfilterStore(store);
29
+ }
30
+ }
31
+ /**
32
+ * Start filtering all stores
33
+ * @internal
34
+ */
35
+ doActivate() {
36
+ this.filterAll();
37
+ }
38
+ /**
39
+ * Stop filtering all stores
40
+ * @internal
41
+ */
42
+ doDeactivate() {
43
+ this.unfilterAll();
44
+ }
45
+ /**
46
+ * Filter all stores
47
+ */
48
+ filterAll() {
49
+ this.stores.forEach((store) => this.filterStore(store));
50
+ }
51
+ /**
52
+ * Unfilter all stores
53
+ */
54
+ unfilterAll() {
55
+ this.stores.forEach((store) => this.unfilterStore(store));
56
+ }
57
+ /**
58
+ * Filter a store and add it to the filters map
59
+ */
60
+ filterStore(store) {
61
+ if (this.filters.has(store)) {
62
+ return;
63
+ }
64
+ const filter = (record) => {
65
+ return record.state.selected === true;
66
+ };
67
+ this.filters.set(store, store.stateView.addFilter(filter));
68
+ }
69
+ /**
70
+ * Unfilter a store and delete it from the filters map
71
+ */
72
+ unfilterStore(store) {
73
+ const filterId = this.filters.get(store);
74
+ if (filterId === undefined) {
75
+ return;
76
+ }
77
+ store.stateView.removeFilter(filterId);
78
+ this.filters.delete(store);
79
+ }
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9lbnRpdHkvc3JjL3NoYXJlZC9zdHJhdGVnaWVzL2ZpbHRlci1zZWxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxtQkFBbUI7SUFDekU7O09BRUc7SUFDSyxPQUFPLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFdEQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQWtCO1FBQzFCLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBa0I7UUFDNUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFVBQVU7UUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDTyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxTQUFTO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVztRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7O09BRUc7SUFDSyxXQUFXLENBQUMsS0FBa0I7UUFDcEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUE0QixFQUFFLEVBQUU7WUFDOUMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7UUFDeEMsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFDLEtBQWtCO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5UmVjb3JkIH0gZnJvbSAnLi4vZW50aXR5LmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICcuLi9zdG9yZSc7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZVN0cmF0ZWd5IH0gZnJvbSAnLi9zdHJhdGVneSc7XG5cbi8qKlxuICogV2hlbiBhY3RpdmUsIHRoaXMgc3RyYXRlZ3kgZmlsdGVycyBhIHN0b3JlJ3Mgc3RhdGVWaWV3IHRvIHJldHVyblxuICogc2VsZWN0ZWQgZW50aXRpZXMgb25seS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBFbnRpdHlTdG9yZVN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIFN0b3JlIC8gZmlsdGVyIGlkcyBtYXBcbiAgICovXG4gIHByaXZhdGUgZmlsdGVyczogTWFwPEVudGl0eVN0b3JlLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gIC8qKlxuICAgKiBCaW5kIHRoaXMgc3RyYXRlZ3kgdG8gYSBzdG9yZSBhbmQgc3RhcnQgZmlsdGVyaW5nIGl0XG4gICAqIEBwYXJhbSBzdG9yZSBFbnRpdHkgc3RvcmVcbiAgICovXG4gIGJpbmRTdG9yZShzdG9yZTogRW50aXR5U3RvcmUpIHtcbiAgICBzdXBlci5iaW5kU3RvcmUoc3RvcmUpO1xuICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5maWx0ZXJTdG9yZShzdG9yZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVuYmluZCB0aGlzIHN0cmF0ZWd5IGZyb20gYSBzdG9yZSBhbmQgc3RvcCBmaWx0ZXJpbmcgaXRcbiAgICogQHBhcmFtIHN0b3JlIEVudGl0eSBzdG9yZVxuICAgKi9cbiAgdW5iaW5kU3RvcmUoc3RvcmU6IEVudGl0eVN0b3JlKSB7XG4gICAgc3VwZXIudW5iaW5kU3RvcmUoc3RvcmUpO1xuICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy51bmZpbHRlclN0b3JlKHN0b3JlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgZmlsdGVyaW5nIGFsbCBzdG9yZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgZG9BY3RpdmF0ZSgpIHtcbiAgICB0aGlzLmZpbHRlckFsbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgZmlsdGVyaW5nIGFsbCBzdG9yZXNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgZG9EZWFjdGl2YXRlKCkge1xuICAgIHRoaXMudW5maWx0ZXJBbGwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYWxsIHN0b3Jlc1xuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJBbGwoKSB7XG4gICAgdGhpcy5zdG9yZXMuZm9yRWFjaCgoc3RvcmU6IEVudGl0eVN0b3JlKSA9PiB0aGlzLmZpbHRlclN0b3JlKHN0b3JlKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5maWx0ZXIgYWxsIHN0b3Jlc1xuICAgKi9cbiAgcHJpdmF0ZSB1bmZpbHRlckFsbCgpIHtcbiAgICB0aGlzLnN0b3Jlcy5mb3JFYWNoKChzdG9yZTogRW50aXR5U3RvcmUpID0+IHRoaXMudW5maWx0ZXJTdG9yZShzdG9yZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciBhIHN0b3JlIGFuZCBhZGQgaXQgdG8gdGhlIGZpbHRlcnMgbWFwXG4gICAqL1xuICBwcml2YXRlIGZpbHRlclN0b3JlKHN0b3JlOiBFbnRpdHlTdG9yZSkge1xuICAgIGlmICh0aGlzLmZpbHRlcnMuaGFzKHN0b3JlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlciA9IChyZWNvcmQ6IEVudGl0eVJlY29yZDxvYmplY3Q+KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb3JkLnN0YXRlLnNlbGVjdGVkID09PSB0cnVlO1xuICAgIH07XG4gICAgdGhpcy5maWx0ZXJzLnNldChzdG9yZSwgc3RvcmUuc3RhdGVWaWV3LmFkZEZpbHRlcihmaWx0ZXIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmZpbHRlciBhIHN0b3JlIGFuZCBkZWxldGUgaXQgZnJvbSB0aGUgZmlsdGVycyBtYXBcbiAgICovXG4gIHByaXZhdGUgdW5maWx0ZXJTdG9yZShzdG9yZTogRW50aXR5U3RvcmUpIHtcbiAgICBjb25zdCBmaWx0ZXJJZCA9IHRoaXMuZmlsdGVycy5nZXQoc3RvcmUpO1xuICAgIGlmIChmaWx0ZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RvcmUuc3RhdGVWaWV3LnJlbW92ZUZpbHRlcihmaWx0ZXJJZCk7XG4gICAgdGhpcy5maWx0ZXJzLmRlbGV0ZShzdG9yZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './strategy';
2
+ export * from './filter-custom-function';
3
+ export * from './filter-selection';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vZW50aXR5L3NyYy9zaGFyZWQvc3RyYXRlZ2llcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N0cmF0ZWd5JztcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLWN1c3RvbS1mdW5jdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1zZWxlY3Rpb24nO1xuIl19
@@ -0,0 +1,78 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ /**
3
+ * Entity store strategies. They can do pretty much anything during a store's
4
+ * lifetime. For example, they may act as triggers when something happens.
5
+ * Sharing a strategy is a good idea when multiple strategies would have
6
+ * on cancelling effect on each other.
7
+ *
8
+ * At creation, strategy is inactive and needs to be manually activated.
9
+ */
10
+ export class EntityStoreStrategy {
11
+ options;
12
+ /**
13
+ * Feature store
14
+ * @internal
15
+ */
16
+ stores = [];
17
+ /**
18
+ * Whether this strategy is active
19
+ * @internal
20
+ */
21
+ get active() {
22
+ return this.active$.value;
23
+ }
24
+ active$ = new BehaviorSubject(false);
25
+ constructor(options = {}) {
26
+ this.options = options;
27
+ this.options = options;
28
+ }
29
+ /**
30
+ * Activate the strategy. If it's already active, it'll be deactivated
31
+ * and activated again.
32
+ */
33
+ activate() {
34
+ if (this.active === true) {
35
+ this.doDeactivate();
36
+ }
37
+ this.active$.next(true);
38
+ this.doActivate();
39
+ }
40
+ /**
41
+ * Activate the strategy. If it's already active, it'll be deactivated
42
+ * and activated again.
43
+ */
44
+ deactivate() {
45
+ this.active$.next(false);
46
+ this.doDeactivate();
47
+ }
48
+ /**
49
+ * Bind this strategy to a store
50
+ * @param store Feature store
51
+ */
52
+ bindStore(store) {
53
+ if (this.stores.indexOf(store) < 0) {
54
+ this.stores.push(store);
55
+ }
56
+ }
57
+ /**
58
+ * Unbind this strategy from store
59
+ * @param store Feature store
60
+ */
61
+ unbindStore(store) {
62
+ const index = this.stores.indexOf(store);
63
+ if (index >= 0) {
64
+ this.stores.splice(index, 1);
65
+ }
66
+ }
67
+ /**
68
+ * Do the stataegy activation
69
+ * @internal
70
+ */
71
+ doActivate() { }
72
+ /**
73
+ * Do the strategy deactivation
74
+ * @internal
75
+ */
76
+ doDeactivate() { }
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vZW50aXR5L3NyYy9zaGFyZWQvc3RyYXRlZ2llcy9zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS3ZDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBZ0JSO0lBZnRCOzs7T0FHRztJQUNPLE1BQU0sR0FBa0IsRUFBRSxDQUFDO0lBRXJDOzs7T0FHRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUNRLE9BQU8sR0FBNkIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFeEUsWUFBc0IsVUFBc0MsRUFBRTtRQUF4QyxZQUFPLEdBQVAsT0FBTyxDQUFpQztRQUM1RCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQWtCO1FBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsS0FBa0I7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDTyxVQUFVLEtBQUksQ0FBQztJQUV6Qjs7O09BR0c7SUFDTyxZQUFZLEtBQUksQ0FBQztDQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFbnRpdHlTdG9yZVN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJy4uL2VudGl0eS5pbnRlcmZhY2VzJztcbmltcG9ydCB0eXBlIHsgRW50aXR5U3RvcmUgfSBmcm9tICcuLi9zdG9yZSc7XG5cbi8qKlxuICogRW50aXR5IHN0b3JlIHN0cmF0ZWdpZXMuIFRoZXkgY2FuIGRvIHByZXR0eSBtdWNoIGFueXRoaW5nIGR1cmluZyBhIHN0b3JlJ3NcbiAqIGxpZmV0aW1lLiBGb3IgZXhhbXBsZSwgdGhleSBtYXkgYWN0IGFzIHRyaWdnZXJzIHdoZW4gc29tZXRoaW5nIGhhcHBlbnMuXG4gKiBTaGFyaW5nIGEgc3RyYXRlZ3kgaXMgYSBnb29kIGlkZWEgd2hlbiBtdWx0aXBsZSBzdHJhdGVnaWVzIHdvdWxkIGhhdmVcbiAqIG9uIGNhbmNlbGxpbmcgZWZmZWN0IG9uIGVhY2ggb3RoZXIuXG4gKlxuICogQXQgY3JlYXRpb24sIHN0cmF0ZWd5IGlzIGluYWN0aXZlIGFuZCBuZWVkcyB0byBiZSBtYW51YWxseSBhY3RpdmF0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBFbnRpdHlTdG9yZVN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIEZlYXR1cmUgc3RvcmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RvcmVzOiBFbnRpdHlTdG9yZVtdID0gW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdHJhdGVneSBpcyBhY3RpdmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZSQudmFsdWU7XG4gIH1cbiAgcmVhZG9ubHkgYWN0aXZlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnM6IEVudGl0eVN0b3JlU3RyYXRlZ3lPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIHRoZSBzdHJhdGVneS4gSWYgaXQncyBhbHJlYWR5IGFjdGl2ZSwgaXQnbGwgYmUgZGVhY3RpdmF0ZWRcbiAgICogYW5kIGFjdGl2YXRlZCBhZ2Fpbi5cbiAgICovXG4gIGFjdGl2YXRlKCkge1xuICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5kb0RlYWN0aXZhdGUoKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kb0FjdGl2YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgdGhlIHN0cmF0ZWd5LiBJZiBpdCdzIGFscmVhZHkgYWN0aXZlLCBpdCdsbCBiZSBkZWFjdGl2YXRlZFxuICAgKiBhbmQgYWN0aXZhdGVkIGFnYWluLlxuICAgKi9cbiAgZGVhY3RpdmF0ZSgpIHtcbiAgICB0aGlzLmFjdGl2ZSQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5kb0RlYWN0aXZhdGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIHRoaXMgc3RyYXRlZ3kgdG8gYSBzdG9yZVxuICAgKiBAcGFyYW0gc3RvcmUgRmVhdHVyZSBzdG9yZVxuICAgKi9cbiAgYmluZFN0b3JlKHN0b3JlOiBFbnRpdHlTdG9yZSkge1xuICAgIGlmICh0aGlzLnN0b3Jlcy5pbmRleE9mKHN0b3JlKSA8IDApIHtcbiAgICAgIHRoaXMuc3RvcmVzLnB1c2goc3RvcmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbmJpbmQgdGhpcyBzdHJhdGVneSBmcm9tIHN0b3JlXG4gICAqIEBwYXJhbSBzdG9yZSBGZWF0dXJlIHN0b3JlXG4gICAqL1xuICB1bmJpbmRTdG9yZShzdG9yZTogRW50aXR5U3RvcmUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc3RvcmVzLmluZGV4T2Yoc3RvcmUpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLnN0b3Jlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEbyB0aGUgc3RhdGFlZ3kgYWN0aXZhdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBkb0FjdGl2YXRlKCkge31cblxuICAvKipcbiAgICogRG8gdGhlIHN0cmF0ZWd5IGRlYWN0aXZhdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBkb0RlYWN0aXZhdGUoKSB7fVxufVxuIl19
@@ -0,0 +1,329 @@
1
+ import { of } from 'rxjs';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { catchError, tap } from 'rxjs/operators';
4
+ import { EntityOperationType } from './entity.enums';
5
+ import { getEntityId } from './entity.utils';
6
+ import { EntityStore } from './store';
7
+ /**
8
+ * This class holds a reference to the insert, update and delete
9
+ * operations performed on a store. This is useful to commit
10
+ * these operations in a single pass or to cancel them.
11
+ */
12
+ export class EntityTransaction {
13
+ /**
14
+ * Store holding the operations on another store
15
+ */
16
+ operations;
17
+ /**
18
+ * Method to get an entity's id
19
+ */
20
+ getKey;
21
+ /**
22
+ * Whether there are pending operations
23
+ */
24
+ get empty$() {
25
+ return this.operations.empty$;
26
+ }
27
+ /**
28
+ * Whether there are pending operations
29
+ */
30
+ get empty() {
31
+ return this.empty$.value;
32
+ }
33
+ /**
34
+ * Whether thise store is in commit phase
35
+ */
36
+ get inCommitPhase() {
37
+ return this.inCommitPhase$.value;
38
+ }
39
+ inCommitPhase$ = new BehaviorSubject(false);
40
+ constructor(options = {}) {
41
+ this.getKey = options.getKey ? options.getKey : getEntityId;
42
+ this.operations = new EntityStore([], {
43
+ getKey: (operation) => operation.key
44
+ });
45
+ }
46
+ destroy() {
47
+ this.operations.destroy();
48
+ }
49
+ /**
50
+ * Insert an entity into a store. If no store is specified, an insert
51
+ * operation is still created but the transaction won't add the new
52
+ * entity to the store.
53
+ * @param current The entity to insert
54
+ * @param store Optional: The store to insert the entity into
55
+ * @param meta Optional: Any metadata on the operation
56
+ */
57
+ insert(current, store, meta) {
58
+ const existingOperation = this.getOperationByEntity(current);
59
+ if (existingOperation !== undefined) {
60
+ this.removeOperation(existingOperation);
61
+ }
62
+ this.doInsert(current, store, meta);
63
+ }
64
+ /**
65
+ * Update an entity in a store. If no store is specified, an update
66
+ * operation is still created but the transaction won't update the
67
+ * entity into the store.
68
+ * @param previous The entity before update
69
+ * @param current The entity after update
70
+ * @param store Optional: The store to update the entity into
71
+ * @param meta Optional: Any metadata on the operation
72
+ */
73
+ update(previous, current, store, meta) {
74
+ const existingOperation = this.getOperationByEntity(current);
75
+ if (existingOperation !== undefined) {
76
+ this.removeOperation(existingOperation);
77
+ if (existingOperation.type === EntityOperationType.Insert) {
78
+ this.doInsert(current, store, meta);
79
+ return;
80
+ }
81
+ else if (existingOperation.type === EntityOperationType.Update) {
82
+ previous = existingOperation.previous;
83
+ }
84
+ }
85
+ this.doUpdate(previous, current, store, meta);
86
+ }
87
+ /**
88
+ * Delete an entity from a store. If no store is specified, a delete
89
+ * operation is still created but the transaction won't remove the
90
+ * entity from the store.
91
+ * @param previous The entity before delete
92
+ * @param store Optional: The store to delete the entity from
93
+ * @param meta Optional: Any metadata on the operation
94
+ */
95
+ delete(previous, store, meta) {
96
+ const existingOperation = this.getOperationByEntity(previous);
97
+ if (existingOperation !== undefined) {
98
+ this.removeOperation(existingOperation);
99
+ if (existingOperation.type === EntityOperationType.Insert) {
100
+ if (store !== undefined) {
101
+ store.delete(previous);
102
+ }
103
+ return;
104
+ }
105
+ }
106
+ this.doDelete(previous, store, meta);
107
+ }
108
+ /**
109
+ * Commit operations the transaction. This method doesn't do much
110
+ * in itself. The handler it receives does the hard work and it's
111
+ * implementation is left to the caller. This method simply wraps
112
+ * the handler into an error catching mechanism to update
113
+ * the transaction afterward. The caller needs to subscribe to this
114
+ * method's output (observable) for the commit to be performed.
115
+ * @param operations Operations to commit
116
+ * @param handler Function that handles the commit operation
117
+ * @returns The handler output (observable)
118
+ */
119
+ commit(operations, handler) {
120
+ this.inCommitPhase$.next(true);
121
+ return handler(this, operations).pipe(catchError(() => of(new Error())), tap((result) => {
122
+ if (result instanceof Error) {
123
+ this.onCommitError(operations);
124
+ }
125
+ else {
126
+ this.onCommitSuccess(operations);
127
+ }
128
+ }));
129
+ }
130
+ /**
131
+ * Commit all the operations of the transaction.
132
+ * @param handler Function that handles the commit operation
133
+ * @returns The handler output (observable)
134
+ */
135
+ commitAll(handler) {
136
+ const operations = this.getOperationsInCommit();
137
+ return this.commit(operations, handler);
138
+ }
139
+ /**
140
+ * Rollback this transaction
141
+ */
142
+ rollback() {
143
+ this.rollbackOperations(this.operations.all());
144
+ }
145
+ /**
146
+ * Rollback specific operations
147
+ */
148
+ rollbackOperations(operations) {
149
+ this.checkInCommitPhase();
150
+ const operationsFactory = () => new Map([
151
+ [EntityOperationType.Delete, []],
152
+ [EntityOperationType.Update, []],
153
+ [EntityOperationType.Insert, []]
154
+ ]);
155
+ const storesOperations = new Map();
156
+ // Group operations by store and by operation type.
157
+ // Grouping operations allows us to revert them in bacth, thus, triggering
158
+ // observables only one per operation type.
159
+ for (const operation of operations) {
160
+ const store = operation.store;
161
+ if (operation.store === undefined) {
162
+ continue;
163
+ }
164
+ let storeOperations = storesOperations.get(store);
165
+ if (storeOperations === undefined) {
166
+ storeOperations = operationsFactory();
167
+ storesOperations.set(store, storeOperations);
168
+ }
169
+ storeOperations.get(operation.type).push(operation);
170
+ }
171
+ Array.from(storesOperations.keys()).forEach((store) => {
172
+ const storeOperations = storesOperations.get(store);
173
+ const deletes = storeOperations.get(EntityOperationType.Delete);
174
+ store.insertMany(deletes.map((_delete) => _delete.previous));
175
+ const updates = storeOperations.get(EntityOperationType.Update);
176
+ store.updateMany(updates.map((_update) => _update.previous));
177
+ const inserts = storeOperations.get(EntityOperationType.Insert);
178
+ store.deleteMany(inserts.map((_insert) => _insert.current));
179
+ });
180
+ this.operations.deleteMany(operations);
181
+ this.inCommitPhase$.next(false);
182
+ }
183
+ /**
184
+ * Clear this transaction
185
+ * @todo Raise event and synchronize stores?
186
+ */
187
+ clear() {
188
+ this.operations.clear();
189
+ this.inCommitPhase$.next(false);
190
+ }
191
+ /**
192
+ * Get any existing operation on an entity
193
+ * @param entity Entity
194
+ * @returns Either an insert, update or delete operation
195
+ */
196
+ getOperationByEntity(entity) {
197
+ return this.operations.get(this.getKey(entity));
198
+ }
199
+ /**
200
+ * Merge another transaction in this one
201
+ * @param transaction Another transaction
202
+ */
203
+ mergeTransaction(transaction) {
204
+ this.checkInCommitPhase();
205
+ const operations = transaction.operations.all();
206
+ operations.forEach((operation) => {
207
+ this.addOperation(operation);
208
+ });
209
+ }
210
+ /**
211
+ * Create an insert operation and add an entity to the store
212
+ * @param current The entity to insert
213
+ * @param store Optional: The store to insert the entity into
214
+ * @param meta Optional: Any metadata on the operation
215
+ */
216
+ doInsert(current, store, meta) {
217
+ this.addOperation({
218
+ key: this.getKey(current),
219
+ type: EntityOperationType.Insert,
220
+ previous: undefined,
221
+ current,
222
+ store,
223
+ meta
224
+ });
225
+ if (store !== undefined) {
226
+ store.insert(current);
227
+ }
228
+ }
229
+ /**
230
+ * Create an update operation and update an entity into the store
231
+ * @param previous The entity before update
232
+ * @param current The entity after update
233
+ * @param store Optional: The store to update the entity into
234
+ * @param meta Optional: Any metadata on the operation
235
+ */
236
+ doUpdate(previous, current, store, meta) {
237
+ this.addOperation({
238
+ key: this.getKey(current),
239
+ type: EntityOperationType.Update,
240
+ previous,
241
+ current,
242
+ store,
243
+ meta
244
+ });
245
+ if (store !== undefined) {
246
+ store.update(current);
247
+ }
248
+ }
249
+ /**
250
+ * Create a delete operation and delete an entity from the store
251
+ * @param previous The entity before delete
252
+ * @param store Optional: The store to delete the entity from
253
+ * @param meta Optional: Any metadata on the operation
254
+ */
255
+ doDelete(previous, store, meta) {
256
+ this.addOperation({
257
+ key: this.getKey(previous),
258
+ type: EntityOperationType.Delete,
259
+ previous,
260
+ current: undefined,
261
+ store,
262
+ meta
263
+ });
264
+ if (store !== undefined) {
265
+ store.delete(previous);
266
+ }
267
+ }
268
+ /**
269
+ * Remove committed operations from store
270
+ * @param operations Commited operations
271
+ * @todo Raise event and synchronize stores?
272
+ */
273
+ resolveOperations(operations) {
274
+ this.operations.deleteMany(operations);
275
+ }
276
+ /**
277
+ * On commit success, resolve commited operations and exit commit phase
278
+ * @param operations Commited operations
279
+ */
280
+ onCommitSuccess(operations) {
281
+ this.resolveOperations(operations);
282
+ this.inCommitPhase$.next(false);
283
+ }
284
+ /**
285
+ * On commit error, abort transaction
286
+ * @param operations Commited operations
287
+ */
288
+ onCommitError(operations) {
289
+ this.inCommitPhase$.next(false);
290
+ }
291
+ /**
292
+ * Add an operation to the operations store
293
+ * @param operation Operation to add
294
+ */
295
+ addOperation(operation) {
296
+ this.checkInCommitPhase();
297
+ this.operations.insert(operation);
298
+ this.operations.state.update(operation, { added: true });
299
+ }
300
+ /**
301
+ * Remove an operation from the operations store
302
+ * @param operation Operation to remove
303
+ */
304
+ removeOperation(operation) {
305
+ this.checkInCommitPhase();
306
+ this.operations.delete(operation);
307
+ this.operations.state.update(operation, { added: false });
308
+ }
309
+ /**
310
+ * Get all the operations to commit
311
+ * @returns Operations to commit
312
+ */
313
+ getOperationsInCommit() {
314
+ return this.operations.stateView
315
+ .manyBy((value) => {
316
+ return value.state.added === true;
317
+ })
318
+ .map((value) => value.entity);
319
+ }
320
+ /**
321
+ * Check if the transaction is in the commit phase and throw an error if it is
322
+ */
323
+ checkInCommitPhase() {
324
+ if (this.inCommitPhase === true) {
325
+ throw new Error('This transaction is in the commit phase. Cannot complete this operation.');
326
+ }
327
+ }
328
+ }
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vZW50aXR5L3NyYy9zaGFyZWQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFnQnRDOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCOztPQUVHO0lBQ00sVUFBVSxDQUFxRDtJQUV4RTs7T0FFRztJQUNNLE1BQU0sQ0FBbUI7SUFFbEM7O09BRUc7SUFDSCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBQ1EsY0FBYyxHQUE2QixJQUFJLGVBQWUsQ0FDckUsS0FBSyxDQUNOLENBQUM7SUFFRixZQUFZLFVBQW9DLEVBQUU7UUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFX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LENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FDYiwwRUFBMEUsQ0FDM0UsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEVudGl0eU9wZXJhdGlvblR5cGUgfSBmcm9tICcuL2VudGl0eS5lbnVtcyc7XG5pbXBvcnQge1xuICBFbnRpdHlLZXksXG4gIEVudGl0eU9wZXJhdGlvblN0YXRlLFxuICBFbnRpdHlUcmFuc2FjdGlvbk9wdGlvbnNcbn0gZnJvbSAnLi9lbnRpdHkuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBnZXRFbnRpdHlJZCB9IGZyb20gJy4vZW50aXR5LnV0aWxzJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5T3BlcmF0aW9uPEUgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IHtcbiAga2V5OiBFbnRpdHlLZXk7XG4gIHR5cGU6IEVudGl0eU9wZXJhdGlvblR5cGU7XG4gIHByZXZpb3VzOiBFIHwgdW5kZWZpbmVkO1xuICBjdXJyZW50OiBFIHwgdW5kZWZpbmVkO1xuICBzdG9yZT86IEVudGl0eVN0b3JlPEU+O1xuICBtZXRhPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IHR5cGUgRW50aXR5VHJhbnNhY3Rpb25Db21taXRIYW5kbGVyID0gKFxuICB0cmFuc2FjdGlvbjogRW50aXR5VHJhbnNhY3Rpb24sXG4gIG9wZXJhdGlvbnM6IEVudGl0eU9wZXJhdGlvbltdXG4pID0+IE9ic2VydmFibGU8YW55PjtcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlXG4gKiBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiBhIHN0b3JlLiBUaGlzIGlzIHVzZWZ1bCB0byBjb21taXRcbiAqIHRoZXNlIG9wZXJhdGlvbnMgaW4gYSBzaW5nbGUgcGFzcyBvciB0byBjYW5jZWwgdGhlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVudGl0eVRyYW5zYWN0aW9uIHtcbiAgLyoqXG4gICAqIFN0b3JlIGhvbGRpbmcgdGhlIG9wZXJhdGlvbnMgb24gYW5vdGhlciBzdG9yZVxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uczogRW50aXR5U3RvcmU8RW50aXR5T3BlcmF0aW9uLCBFbnRpdHlPcGVyYXRpb25TdGF0ZT47XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBnZXQgYW4gZW50aXR5J3MgaWRcbiAgICovXG4gIHJlYWRvbmx5IGdldEtleTogKEUpID0+IEVudGl0eUtleTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGVyZSBhcmUgcGVuZGluZyBvcGVyYXRpb25zXG4gICAqL1xuICBnZXQgZW1wdHkkKCk6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9ucy5lbXB0eSQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGVyZSBhcmUgcGVuZGluZyBvcGVyYXRpb25zXG4gICAqL1xuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW1wdHkkLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpc2Ugc3RvcmUgaXMgaW4gY29tbWl0IHBoYXNlXG4gICAqL1xuICBnZXQgaW5Db21taXRQaGFzZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbkNvbW1pdFBoYXNlJC52YWx1ZTtcbiAgfVxuICByZWFkb25seSBpbkNvbW1pdFBoYXNlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChcbiAgICBmYWxzZVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEVudGl0eVRyYW5zYWN0aW9uT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5nZXRLZXkgPSBvcHRpb25zLmdldEtleSA/IG9wdGlvbnMuZ2V0S2V5IDogZ2V0RW50aXR5SWQ7XG4gICAgdGhpcy5vcGVyYXRpb25zID0gbmV3IEVudGl0eVN0b3JlPEVudGl0eU9wZXJhdGlvbiwgRW50aXR5T3BlcmF0aW9uU3RhdGU+KFxuICAgICAgW10sXG4gICAgICB7XG4gICAgICAgIGdldEtleTogKG9wZXJhdGlvbjogRW50aXR5T3BlcmF0aW9uKSA9PiBvcGVyYXRpb24ua2V5XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5vcGVyYXRpb25zLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgYW4gZW50aXR5IGludG8gYSBzdG9yZS4gSWYgbm8gc3RvcmUgaXMgc3BlY2lmaWVkLCBhbiBpbnNlcnRcbiAgICogb3BlcmF0aW9uIGlzIHN0aWxsIGNyZWF0ZWQgYnV0IHRoZSB0cmFuc2FjdGlvbiB3b24ndCBhZGQgdGhlIG5ld1xuICAgKiBlbnRpdHkgdG8gdGhlIHN0b3JlLlxuICAgKiBAcGFyYW0gY3VycmVudCBUaGUgZW50aXR5IHRvIGluc2VydFxuICAgKiBAcGFyYW0gc3RvcmUgT3B0aW9uYWw6IFRoZSBzdG9yZSB0byBpbnNlcnQgdGhlIGVudGl0eSBpbnRvXG4gICAqIEBwYXJhbSBtZXRhIE9wdGlvbmFsOiBBbnkgbWV0YWRhdGEgb24gdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgaW5zZXJ0KFxuICAgIGN1cnJlbnQ6IG9iamVjdCxcbiAgICBzdG9yZT86IEVudGl0eVN0b3JlPG9iamVjdD4sXG4gICAgbWV0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKSB7XG4gICAgY29uc3QgZXhpc3RpbmdPcGVyYXRpb24gPSB0aGlzLmdldE9wZXJhdGlvbkJ5RW50aXR5KGN1cnJlbnQpO1xuICAgIGlmIChleGlzdGluZ09wZXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJlbW92ZU9wZXJhdGlvbihleGlzdGluZ09wZXJhdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5kb0luc2VydChjdXJyZW50LCBzdG9yZSwgbWV0YSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFuIGVudGl0eSBpbiBhIHN0b3JlLiBJZiBubyBzdG9yZSBpcyBzcGVjaWZpZWQsIGFuIHVwZGF0ZVxuICAgKiBvcGVyYXRpb24gaXMgc3RpbGwgY3JlYXRlZCBidXQgdGhlIHRyYW5zYWN0aW9uIHdvbid0IHVwZGF0ZSB0aGVcbiAgICogZW50aXR5IGludG8gdGhlIHN0b3JlLlxuICAgKiBAcGFyYW0gcHJldmlvdXMgVGhlIGVudGl0eSBiZWZvcmUgdXBkYXRlXG4gICAqIEBwYXJhbSBjdXJyZW50IFRoZSBlbnRpdHkgYWZ0ZXIgdXBkYXRlXG4gICAqIEBwYXJhbSBzdG9yZSBPcHRpb25hbDogVGhlIHN0b3JlIHRvIHVwZGF0ZSB0aGUgZW50aXR5IGludG9cbiAgICogQHBhcmFtIG1ldGEgT3B0aW9uYWw6IEFueSBtZXRhZGF0YSBvbiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICB1cGRhdGUoXG4gICAgcHJldmlvdXM6IG9iamVjdCxcbiAgICBjdXJyZW50OiBvYmplY3QsXG4gICAgc3RvcmU/OiBFbnRpdHlTdG9yZTxvYmplY3Q+LFxuICAgIG1ldGE/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICkge1xuICAgIGNvbnN0IGV4aXN0aW5nT3BlcmF0aW9uID0gdGhpcy5nZXRPcGVyYXRpb25CeUVudGl0eShjdXJyZW50KTtcbiAgICBpZiAoZXhpc3RpbmdPcGVyYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yZW1vdmVPcGVyYXRpb24oZXhpc3RpbmdPcGVyYXRpb24pO1xuICAgICAgaWYgKGV4aXN0aW5nT3BlcmF0aW9uLnR5cGUgPT09IEVudGl0eU9wZXJhdGlvblR5cGUuSW5zZXJ0KSB7XG4gICAgICAgIHRoaXMuZG9JbnNlcnQoY3VycmVudCwgc3RvcmUsIG1ldGEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGV4aXN0aW5nT3BlcmF0aW9uLnR5cGUgPT09IEVudGl0eU9wZXJhdGlvblR5cGUuVXBkYXRlKSB7XG4gICAgICAgIHByZXZpb3VzID0gZXhpc3RpbmdPcGVyYXRpb24ucHJldmlvdXM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kb1VwZGF0ZShwcmV2aW91cywgY3VycmVudCwgc3RvcmUsIG1ldGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBlbnRpdHkgZnJvbSBhIHN0b3JlLiBJZiBubyBzdG9yZSBpcyBzcGVjaWZpZWQsIGEgZGVsZXRlXG4gICAqIG9wZXJhdGlvbiBpcyBzdGlsbCBjcmVhdGVkIGJ1dCB0aGUgdHJhbnNhY3Rpb24gd29uJ3QgcmVtb3ZlIHRoZVxuICAgKiBlbnRpdHkgZnJvbSB0aGUgc3RvcmUuXG4gICAqIEBwYXJhbSBwcmV2aW91cyBUaGUgZW50aXR5IGJlZm9yZSBkZWxldGVcbiAgICogQHBhcmFtIHN0b3JlIE9wdGlvbmFsOiBUaGUgc3RvcmUgdG8gZGVsZXRlIHRoZSBlbnRpdHkgZnJvbVxuICAgKiBAcGFyYW0gbWV0YSBPcHRpb25hbDogQW55IG1ldGFkYXRhIG9uIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIGRlbGV0ZShcbiAgICBwcmV2aW91czogb2JqZWN0LFxuICAgIHN0b3JlPzogRW50aXR5U3RvcmU8b2JqZWN0PixcbiAgICBtZXRhPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApIHtcbiAgICBjb25zdCBleGlzdGluZ09wZXJhdGlvbiA9IHRoaXMuZ2V0T3BlcmF0aW9uQnlFbnRpdHkocHJldmlvdXMpO1xuICAgIGlmIChleGlzdGluZ09wZXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnJlbW92ZU9wZXJhdGlvbihleGlzdGluZ09wZXJhdGlvbik7XG4gICAgICBpZiAoZXhpc3RpbmdPcGVyYXRpb24udHlwZSA9PT0gRW50aXR5T3BlcmF0aW9uVHlwZS5JbnNlcnQpIHtcbiAgICAgICAgaWYgKHN0b3JlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdG9yZS5kZWxldGUocHJldmlvdXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRvRGVsZXRlKHByZXZpb3VzLCBzdG9yZSwgbWV0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ29tbWl0IG9wZXJhdGlvbnMgdGhlIHRyYW5zYWN0aW9uLiBUaGlzIG1ldGhvZCBkb2Vzbid0IGRvIG11Y2hcbiAgICogaW4gaXRzZWxmLiBUaGUgaGFuZGxlciBpdCByZWNlaXZlcyBkb2VzIHRoZSBoYXJkIHdvcmsgYW5kIGl0J3NcbiAgICogaW1wbGVtZW50YXRpb24gaXMgbGVmdCB0byB0aGUgY2FsbGVyLiBUaGlzIG1ldGhvZCBzaW1wbHkgd3JhcHNcbiAgICogdGhlIGhhbmRsZXIgaW50byBhbiBlcnJvciBjYXRjaGluZyBtZWNoYW5pc20gdG8gdXBkYXRlXG4gICAqIHRoZSB0cmFuc2FjdGlvbiBhZnRlcndhcmQuIFRoZSBjYWxsZXIgbmVlZHMgdG8gc3Vic2NyaWJlIHRvIHRoaXNcbiAgICogbWV0aG9kJ3Mgb3V0cHV0IChvYnNlcnZhYmxlKSBmb3IgdGhlIGNvbW1pdCB0byBiZSBwZXJmb3JtZWQuXG4gICAqIEBwYXJhbSBvcGVyYXRpb25zIE9wZXJhdGlvbnMgdG8gY29tbWl0XG4gICAqIEBwYXJhbSBoYW5kbGVyIEZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgY29tbWl0IG9wZXJhdGlvblxuICAgKiBAcmV0dXJucyBUaGUgaGFuZGxlciBvdXRwdXQgKG9ic2VydmFibGUpXG4gICAqL1xuICBjb21taXQoXG4gICAgb3BlcmF0aW9uczogRW50aXR5T3BlcmF0aW9uW10sXG4gICAgaGFuZGxlcjogRW50aXR5VHJhbnNhY3Rpb25Db21taXRIYW5kbGVyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5pbkNvbW1pdFBoYXNlJC5uZXh0KHRydWUpO1xuXG4gICAgcmV0dXJuIGhhbmRsZXIodGhpcywgb3BlcmF0aW9ucykucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YobmV3IEVycm9yKCkpKSxcbiAgICAgIHRhcCgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgdGhpcy5vbkNvbW1pdEVycm9yKG9wZXJhdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub25Db21taXRTdWNjZXNzKG9wZXJhdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29tbWl0IGFsbCB0aGUgb3BlcmF0aW9ucyBvZiB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSBoYW5kbGVyIEZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgY29tbWl0IG9wZXJhdGlvblxuICAgKiBAcmV0dXJucyBUaGUgaGFuZGxlciBvdXRwdXQgKG9ic2VydmFibGUpXG4gICAqL1xuICBjb21taXRBbGwoaGFuZGxlcjogRW50aXR5VHJhbnNhY3Rpb25Db21taXRIYW5kbGVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBvcGVyYXRpb25zID0gdGhpcy5nZXRPcGVyYXRpb25zSW5Db21taXQoKTtcbiAgICByZXR1cm4gdGhpcy5jb21taXQob3BlcmF0aW9ucywgaGFuZGxlcik7XG4gIH1cblxuICAvKipcbiAgICogUm9sbGJhY2sgdGhpcyB0cmFuc2FjdGlvblxuICAgKi9cbiAgcm9sbGJhY2soKSB7XG4gICAgdGhpcy5yb2xsYmFja09wZXJhdGlvbnModGhpcy5vcGVyYXRpb25zLmFsbCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSb2xsYmFjayBzcGVjaWZpYyBvcGVyYXRpb25zXG4gICAqL1xuICByb2xsYmFja09wZXJhdGlvbnMob3BlcmF0aW9uczogRW50aXR5T3BlcmF0aW9uW10pIHtcbiAgICB0aGlzLmNoZWNrSW5Db21taXRQaGFzZSgpO1xuXG4gICAgY29uc3Qgb3BlcmF0aW9uc0ZhY3RvcnkgPSAoKSA9PlxuICAgICAgbmV3IE1hcChbXG4gICAgICAgIFtFbnRpdHlPcGVyYXRpb25UeXBlLkRlbGV0ZSwgW11dLFxuICAgICAgICBbRW50aXR5T3BlcmF0aW9uVHlwZS5VcGRhdGUsIFtdXSxcbiAgICAgICAgW0VudGl0eU9wZXJhdGlvblR5cGUuSW5zZXJ0LCBbXV1cbiAgICAgIF0pO1xuICAgIGNvbnN0IHN0b3Jlc09wZXJhdGlvbnMgPSBuZXcgTWFwKCk7XG5cbiAgICAvLyBHcm91cCBvcGVyYXRpb25zIGJ5IHN0b3JlIGFuZCBieSBvcGVyYXRpb24gdHlwZS5cbiAgICAvLyBHcm91cGluZyBvcGVyYXRpb25zIGFsbG93cyB1cyB0byByZXZlcnQgdGhlbSBpbiBiYWN0aCwgdGh1cywgdHJpZ2dlcmluZ1xuICAgIC8vIG9ic2VydmFibGVzIG9ubHkgb25lIHBlciBvcGVyYXRpb24gdHlwZS5cbiAgICBmb3IgKGNvbnN0IG9wZXJhdGlvbiBvZiBvcGVyYXRpb25zKSB7XG4gICAgICBjb25zdCBzdG9yZSA9IG9wZXJhdGlvbi5zdG9yZTtcbiAgICAgIGlmIChvcGVyYXRpb24uc3RvcmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IHN0b3JlT3BlcmF0aW9ucyA9IHN0b3Jlc09wZXJhdGlvbnMuZ2V0KHN0b3JlKTtcbiAgICAgIGlmIChzdG9yZU9wZXJhdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzdG9yZU9wZXJhdGlvbnMgPSBvcGVyYXRpb25zRmFjdG9yeSgpO1xuICAgICAgICBzdG9yZXNPcGVyYXRpb25zLnNldChzdG9yZSwgc3RvcmVPcGVyYXRpb25zKTtcbiAgICAgIH1cbiAgICAgIHN0b3JlT3BlcmF0aW9ucy5nZXQob3BlcmF0aW9uLnR5cGUpLnB1c2gob3BlcmF0aW9uKTtcbiAgICB9XG5cbiAgICBBcnJheS5mcm9tKHN0b3Jlc09wZXJhdGlvbnMua2V5cygpKS5mb3JFYWNoKFxuICAgICAgKHN0b3JlOiBFbnRpdHlTdG9yZTxvYmplY3Q+KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0b3JlT3BlcmF0aW9ucyA9IHN0b3Jlc09wZXJhdGlvbnMuZ2V0KHN0b3JlKTtcblxuICAgICAgICBjb25zdCBkZWxldGVzID0gc3RvcmVPcGVyYXRpb25zLmdldChFbnRpdHlPcGVyYXRpb25UeXBlLkRlbGV0ZSk7XG4gICAgICAgIHN0b3JlLmluc2VydE1hbnkoXG4gICAgICAgICAgZGVsZXRlcy5tYXAoKF9kZWxldGU6IEVudGl0eU9wZXJhdGlvbikgPT4gX2RlbGV0ZS5wcmV2aW91cylcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB1cGRhdGVzID0gc3RvcmVPcGVyYXRpb25zLmdldChFbnRpdHlPcGVyYXRpb25UeXBlLlVwZGF0ZSk7XG4gICAgICAgIHN0b3JlLnVwZGF0ZU1hbnkoXG4gICAgICAgICAgdXBkYXRlcy5tYXAoKF91cGRhdGU6IEVudGl0eU9wZXJhdGlvbikgPT4gX3VwZGF0ZS5wcmV2aW91cylcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbnNlcnRzID0gc3RvcmVPcGVyYXRpb25zLmdldChFbnRpdHlPcGVyYXRpb25UeXBlLkluc2VydCk7XG4gICAgICAgIHN0b3JlLmRlbGV0ZU1hbnkoXG4gICAgICAgICAgaW5zZXJ0cy5tYXAoKF9pbnNlcnQ6IEVudGl0eU9wZXJhdGlvbikgPT4gX2luc2VydC5jdXJyZW50KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLm9wZXJhdGlvbnMuZGVsZXRlTWFueShvcGVyYXRpb25zKTtcbiAgICB0aGlzLmluQ29tbWl0UGhhc2UkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoaXMgdHJhbnNhY3Rpb25cbiAgICogQHRvZG8gUmFpc2UgZXZlbnQgYW5kIHN5bmNocm9uaXplIHN0b3Jlcz9cbiAgICovXG4gIGNsZWFyKCkge1xuICAgIHRoaXMub3BlcmF0aW9ucy5jbGVhcigpO1xuICAgIHRoaXMuaW5Db21taXRQaGFzZSQubmV4dChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFueSBleGlzdGluZyBvcGVyYXRpb24gb24gYW4gZW50aXR5XG4gICAqIEBwYXJhbSBlbnRpdHkgRW50aXR5XG4gICAqIEByZXR1cm5zIEVpdGhlciBhbiBpbnNlcnQsIHVwZGF0ZSBvciBkZWxldGUgb3BlcmF0aW9uXG4gICAqL1xuICBnZXRPcGVyYXRpb25CeUVudGl0eShlbnRpdHk6IG9iamVjdCk6IEVudGl0eU9wZXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9ucy5nZXQodGhpcy5nZXRLZXkoZW50aXR5KSk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgYW5vdGhlciB0cmFuc2FjdGlvbiBpbiB0aGlzIG9uZVxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gQW5vdGhlciB0cmFuc2FjdGlvblxuICAgKi9cbiAgbWVyZ2VUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogRW50aXR5VHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLmNoZWNrSW5Db21taXRQaGFzZSgpO1xuXG4gICAgY29uc3Qgb3BlcmF0aW9ucyA9IHRyYW5zYWN0aW9uLm9wZXJhdGlvbnMuYWxsKCk7XG4gICAgb3BlcmF0aW9ucy5mb3JFYWNoKChvcGVyYXRpb246IEVudGl0eU9wZXJhdGlvbikgPT4ge1xuICAgICAgdGhpcy5hZGRPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW5zZXJ0IG9wZXJhdGlvbiBhbmQgYWRkIGFuIGVudGl0eSB0byB0aGUgc3RvcmVcbiAgICogQHBhcmFtIGN1cnJlbnQgVGhlIGVudGl0eSB0byBpbnNlcnRcbiAgICogQHBhcmFtIHN0b3JlIE9wdGlvbmFsOiBUaGUgc3RvcmUgdG8gaW5zZXJ0IHRoZSBlbnRpdHkgaW50b1xuICAgKiBAcGFyYW0gbWV0YSBPcHRpb25hbDogQW55IG1ldGFkYXRhIG9uIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHByaXZhdGUgZG9JbnNlcnQoXG4gICAgY3VycmVudDogb2JqZWN0LFxuICAgIHN0b3JlPzogRW50aXR5U3RvcmU8b2JqZWN0PixcbiAgICBtZXRhPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApIHtcbiAgICB0aGlzLmFkZE9wZXJhdGlvbih7XG4gICAgICBrZXk6IHRoaXMuZ2V0S2V5KGN1cnJlbnQpLFxuICAgICAgdHlwZTogRW50aXR5T3BlcmF0aW9uVHlwZS5JbnNlcnQsXG4gICAgICBwcmV2aW91czogdW5kZWZpbmVkLFxuICAgICAgY3VycmVudCxcbiAgICAgIHN0b3JlLFxuICAgICAgbWV0YVxuICAgIH0pO1xuXG4gICAgaWYgKHN0b3JlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHN0b3JlLmluc2VydChjdXJyZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIHVwZGF0ZSBvcGVyYXRpb24gYW5kIHVwZGF0ZSBhbiBlbnRpdHkgaW50byB0aGUgc3RvcmVcbiAgICogQHBhcmFtIHByZXZpb3VzIFRoZSBlbnRpdHkgYmVmb3JlIHVwZGF0ZVxuICAgKiBAcGFyYW0gY3VycmVudCBUaGUgZW50aXR5IGFmdGVyIHVwZGF0ZVxuICAgKiBAcGFyYW0gc3RvcmUgT3B0aW9uYWw6IFRoZSBzdG9yZSB0byB1cGRhdGUgdGhlIGVudGl0eSBpbnRvXG4gICAqIEBwYXJhbSBtZXRhIE9wdGlvbmFsOiBBbnkgbWV0YWRhdGEgb24gdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBkb1VwZGF0ZShcbiAgICBwcmV2aW91czogb2JqZWN0LFxuICAgIGN1cnJlbnQ6IG9iamVjdCxcbiAgICBzdG9yZT86IEVudGl0eVN0b3JlPG9iamVjdD4sXG4gICAgbWV0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKSB7XG4gICAgdGhpcy5hZGRPcGVyYXRpb24oe1xuICAgICAga2V5OiB0aGlzLmdldEtleShjdXJyZW50KSxcbiAgICAgIHR5cGU6IEVudGl0eU9wZXJhdGlvblR5cGUuVXBkYXRlLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBjdXJyZW50LFxuICAgICAgc3RvcmUsXG4gICAgICBtZXRhXG4gICAgfSk7XG5cbiAgICBpZiAoc3RvcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3RvcmUudXBkYXRlKGN1cnJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBkZWxldGUgb3BlcmF0aW9uIGFuZCBkZWxldGUgYW4gZW50aXR5IGZyb20gdGhlIHN0b3JlXG4gICAqIEBwYXJhbSBwcmV2aW91cyBUaGUgZW50aXR5IGJlZm9yZSBkZWxldGVcbiAgICogQHBhcmFtIHN0b3JlIE9wdGlvbmFsOiBUaGUgc3RvcmUgdG8gZGVsZXRlIHRoZSBlbnRpdHkgZnJvbVxuICAgKiBAcGFyYW0gbWV0YSBPcHRpb25hbDogQW55IG1ldGFkYXRhIG9uIHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHByaXZhdGUgZG9EZWxldGUoXG4gICAgcHJldmlvdXM6IG9iamVjdCxcbiAgICBzdG9yZT86IEVudGl0eVN0b3JlPG9iamVjdD4sXG4gICAgbWV0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKSB7XG4gICAgdGhpcy5hZGRPcGVyYXRpb24oe1xuICAgICAga2V5OiB0aGlzLmdldEtleShwcmV2aW91cyksXG4gICAgICB0eXBlOiBFbnRpdHlPcGVyYXRpb25UeXBlLkRlbGV0ZSxcbiAgICAgIHByZXZpb3VzLFxuICAgICAgY3VycmVudDogdW5kZWZpbmVkLFxuICAgICAgc3RvcmUsXG4gICAgICBtZXRhXG4gICAgfSk7XG5cbiAgICBpZiAoc3RvcmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3RvcmUuZGVsZXRlKHByZXZpb3VzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGNvbW1pdHRlZCBvcGVyYXRpb25zIGZyb20gc3RvcmVcbiAgICogQHBhcmFtIG9wZXJhdGlvbnMgQ29tbWl0ZWQgb3BlcmF0aW9uc1xuICAgKiBAdG9kbyBSYWlzZSBldmVudCBhbmQgc3luY2hyb25pemUgc3RvcmVzP1xuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlT3BlcmF0aW9ucyhvcGVyYXRpb25zOiBFbnRpdHlPcGVyYXRpb25bXSkge1xuICAgIHRoaXMub3BlcmF0aW9ucy5kZWxldGVNYW55KG9wZXJhdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIGNvbW1pdCBzdWNjZXNzLCByZXNvbHZlIGNvbW1pdGVkIG9wZXJhdGlvbnMgYW5kIGV4aXQgY29tbWl0IHBoYXNlXG4gICAqIEBwYXJhbSBvcGVyYXRpb25zIENvbW1pdGVkIG9wZXJhdGlvbnNcbiAgICovXG4gIHByaXZhdGUgb25Db21taXRTdWNjZXNzKG9wZXJhdGlvbnM6IEVudGl0eU9wZXJhdGlvbltdKSB7XG4gICAgdGhpcy5yZXNvbHZlT3BlcmF0aW9ucyhvcGVyYXRpb25zKTtcbiAgICB0aGlzLmluQ29tbWl0UGhhc2UkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIGNvbW1pdCBlcnJvciwgYWJvcnQgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIG9wZXJhdGlvbnMgQ29tbWl0ZWQgb3BlcmF0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBvbkNvbW1pdEVycm9yKG9wZXJhdGlvbnM6IEVudGl0eU9wZXJhdGlvbltdKSB7XG4gICAgdGhpcy5pbkNvbW1pdFBoYXNlJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gb3BlcmF0aW9uIHRvIHRoZSBvcGVyYXRpb25zIHN0b3JlXG4gICAqIEBwYXJhbSBvcGVyYXRpb24gT3BlcmF0aW9uIHRvIGFkZFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRPcGVyYXRpb24ob3BlcmF0aW9uOiBFbnRpdHlPcGVyYXRpb24pIHtcbiAgICB0aGlzLmNoZWNrSW5Db21taXRQaGFzZSgpO1xuXG4gICAgdGhpcy5vcGVyYXRpb25zLmluc2VydChvcGVyYXRpb24pO1xuICAgIHRoaXMub3BlcmF0aW9ucy5zdGF0ZS51cGRhdGUob3BlcmF0aW9uLCB7IGFkZGVkOiB0cnVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBvcGVyYXRpb24gZnJvbSB0aGUgb3BlcmF0aW9ucyBzdG9yZVxuICAgKiBAcGFyYW0gb3BlcmF0aW9uIE9wZXJhdGlvbiB0byByZW1vdmVcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlT3BlcmF0aW9uKG9wZXJhdGlvbjogRW50aXR5T3BlcmF0aW9uKSB7XG4gICAgdGhpcy5jaGVja0luQ29tbWl0UGhhc2UoKTtcblxuICAgIHRoaXMub3BlcmF0aW9ucy5kZWxldGUob3BlcmF0aW9uKTtcbiAgICB0aGlzLm9wZXJhdGlvbnMuc3RhdGUudXBkYXRlKG9wZXJhdGlvbiwgeyBhZGRlZDogZmFsc2UgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCB0aGUgb3BlcmF0aW9ucyB0byBjb21taXRcbiAgICogQHJldHVybnMgT3BlcmF0aW9ucyB0byBjb21taXRcbiAgICovXG4gIHByaXZhdGUgZ2V0T3BlcmF0aW9uc0luQ29tbWl0KCk6IEVudGl0eU9wZXJhdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb25zLnN0YXRlVmlld1xuICAgICAgLm1hbnlCeShcbiAgICAgICAgKHZhbHVlOiB7IGVudGl0eTogRW50aXR5T3BlcmF0aW9uOyBzdGF0ZTogRW50aXR5T3BlcmF0aW9uU3RhdGUgfSkgPT4ge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS5zdGF0ZS5hZGRlZCA9PT0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLm1hcChcbiAgICAgICAgKHZhbHVlOiB7IGVudGl0eTogRW50aXR5T3BlcmF0aW9uOyBzdGF0ZTogRW50aXR5T3BlcmF0aW9uU3RhdGUgfSkgPT5cbiAgICAgICAgICB2YWx1ZS5lbnRpdHlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIHRyYW5zYWN0aW9uIGlzIGluIHRoZSBjb21taXQgcGhhc2UgYW5kIHRocm93IGFuIGVycm9yIGlmIGl0IGlzXG4gICAqL1xuICBwcml2YXRlIGNoZWNrSW5Db21taXRQaGFzZSgpIHtcbiAgICBpZiAodGhpcy5pbkNvbW1pdFBoYXNlID09PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdUaGlzIHRyYW5zYWN0aW9uIGlzIGluIHRoZSBjb21taXQgcGhhc2UuIENhbm5vdCBjb21wbGV0ZSB0aGlzIG9wZXJhdGlvbi4nXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19