@trudb/tru-common-lib 0.0.725 → 0.0.728

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 (404) hide show
  1. package/{esm2020 → esm2022}/lib/assets/tru-icon-module.mjs +32 -32
  2. package/{esm2020 → esm2022}/lib/assets/tru-search-icon-module.mjs +36 -36
  3. package/{esm2020 → esm2022}/lib/base-classes/tru-component-config-base.mjs +3 -3
  4. package/{esm2020 → esm2022}/lib/base-classes/tru-control-component-config-base.mjs +3 -3
  5. package/{esm2020 → esm2022}/lib/base-classes/tru-edit-control-base.mjs +17 -17
  6. package/esm2022/lib/base-classes/tru-edit-control-config-base.mjs +6 -0
  7. package/{esm2020 → esm2022}/lib/base-classes/tru-edit-parent-control-config-base.mjs +3 -3
  8. package/{esm2020 → esm2022}/lib/base-classes/tru-edit-pkey-control-config-base.mjs +3 -3
  9. package/esm2022/lib/base-classes/tru-entity-base.mjs +14 -0
  10. package/esm2022/lib/base-classes/tru-list-control-config-base.mjs +6 -0
  11. package/{esm2020 → esm2022}/lib/base-classes/tru-property-config-base.mjs +14 -15
  12. package/{esm2020 → esm2022}/lib/base-classes/tru-search-config-base.mjs +3 -3
  13. package/esm2022/lib/base-classes/tru-search-control-base.mjs +45 -0
  14. package/esm2022/lib/base-classes/tru-search-control-config-base.mjs +5 -0
  15. package/esm2022/lib/base-classes/tru-search-control-range-base.mjs +45 -0
  16. package/esm2022/lib/base-classes/tru-table-config-base.mjs +12 -0
  17. package/{esm2020 → esm2022}/lib/base-views/detail/tru-detail-view-base-module.mjs +19 -19
  18. package/esm2022/lib/base-views/detail/tru-detail-view-base.mjs +83 -0
  19. package/esm2022/lib/base-views/search/services/tru-search-view-control-event-handler.mjs +25 -0
  20. package/esm2022/lib/base-views/search/services/tru-search-view-event-handler.mjs +25 -0
  21. package/{esm2020 → esm2022}/lib/base-views/search/tru-search-view-base-module.mjs +19 -19
  22. package/esm2022/lib/base-views/search/tru-search-view-base.mjs +68 -0
  23. package/{esm2020 → esm2022}/lib/base-views/search-result/tru-search-result-view-base-module.mjs +19 -19
  24. package/esm2022/lib/base-views/search-result/tru-search-result-view-base.mjs +54 -0
  25. package/{esm2020 → esm2022}/lib/classes/tru-choice.mjs +2 -2
  26. package/esm2022/lib/classes/tru-context-filter-choice.mjs +11 -0
  27. package/esm2022/lib/classes/tru-context-filter.mjs +16 -0
  28. package/esm2022/lib/classes/tru-data-change-parser.mjs +287 -0
  29. package/esm2022/lib/classes/tru-data-change.mjs +5 -0
  30. package/{esm2020 → esm2022}/lib/classes/tru-formula-eval.mjs +156 -156
  31. package/esm2022/lib/classes/tru-merge-data-set.mjs +11 -0
  32. package/esm2022/lib/classes/tru-merge-data.mjs +20 -0
  33. package/{esm2020 → esm2022}/lib/classes/tru-name-value.mjs +2 -2
  34. package/esm2022/lib/classes/tru-predicate.mjs +47 -0
  35. package/{esm2020 → esm2022}/lib/classes/tru-property-config-cloud-file.mjs +4 -4
  36. package/esm2022/lib/classes/tru-property-config-date.mjs +7 -0
  37. package/esm2022/lib/classes/tru-property-config-decimal.mjs +9 -0
  38. package/{esm2020 → esm2022}/lib/classes/tru-property-config-file.mjs +6 -8
  39. package/esm2022/lib/classes/tru-property-config-foreign-key.mjs +8 -0
  40. package/esm2022/lib/classes/tru-property-config-integer.mjs +7 -0
  41. package/esm2022/lib/classes/tru-property-config-password.mjs +6 -0
  42. package/esm2022/lib/classes/tru-property-config-percentage.mjs +7 -0
  43. package/esm2022/lib/classes/tru-property-config-scientific.mjs +7 -0
  44. package/{esm2020 → esm2022}/lib/classes/tru-property-config-text-choices.mjs +6 -8
  45. package/{esm2020 → esm2022}/lib/classes/tru-property-config-text.mjs +8 -10
  46. package/{esm2020 → esm2022}/lib/classes/tru-property-config-usa-address.mjs +6 -8
  47. package/{esm2020 → esm2022}/lib/classes/tru-property-config-zip-code.mjs +6 -8
  48. package/esm2022/lib/classes/tru-query-predicate-manager.mjs +49 -0
  49. package/{esm2020 → esm2022}/lib/components/confirm-dialog/tru-confirm-dialog-module.mjs +20 -20
  50. package/esm2022/lib/components/confirm-dialog/tru-confirm-dialog.mjs +59 -0
  51. package/{esm2020 → esm2022}/lib/components/data-grid/classes/tru-data-grid-config.mjs +1 -1
  52. package/{esm2020 → esm2022}/lib/components/data-grid/enums/tru-data-grid-types.mjs +6 -6
  53. package/esm2022/lib/components/data-grid/overlays/tru-data-grid-loading-overlay/tru-data-grid-loading-overlay.mjs +40 -0
  54. package/esm2022/lib/components/data-grid/overlays/tru-data-grid-no-rows-overlay/tru-data-grid-no-rows-overlay.mjs +27 -0
  55. package/esm2022/lib/components/data-grid/tru-data-grid-module.mjs +67 -0
  56. package/esm2022/lib/components/data-grid/tru-data-grid.mjs +382 -0
  57. package/{esm2020 → esm2022}/lib/components/desktop/classes/tru-desktop-title.mjs +2 -2
  58. package/esm2022/lib/components/desktop/classes/tru-desktop-view-config.mjs +21 -0
  59. package/{esm2020 → esm2022}/lib/components/desktop/directives/resizable/tru-desktop-resizable-module.mjs +19 -19
  60. package/esm2022/lib/components/desktop/directives/resizable/tru-desktop-resizable.mjs +122 -0
  61. package/{esm2020 → esm2022}/lib/components/desktop/menubar/tru-desktop-menubar-module.mjs +56 -56
  62. package/esm2022/lib/components/desktop/menubar/tru-desktop-menubar.mjs +36 -0
  63. package/esm2022/lib/components/desktop/services/tru-desktop-manager.mjs +86 -0
  64. package/esm2022/lib/components/desktop/services/tru-desktop-service.mjs +108 -0
  65. package/esm2022/lib/components/desktop/services/tru-window-action-event-handler.mjs +25 -0
  66. package/esm2022/lib/components/desktop/services/tru-window-event-args.mjs +24 -0
  67. package/esm2022/lib/components/desktop/services/tru-window-event-handler.mjs +42 -0
  68. package/{esm2020 → esm2022}/lib/components/desktop/statusbar/tru-desktop-statusbar-module.mjs +19 -19
  69. package/esm2022/lib/components/desktop/statusbar/tru-desktop-statusbar.mjs +20 -0
  70. package/{esm2020 → esm2022}/lib/components/desktop/taskbar/tru-desktop-taskbar-module.mjs +21 -21
  71. package/esm2022/lib/components/desktop/taskbar/tru-desktop-taskbar.mjs +41 -0
  72. package/{esm2020 → esm2022}/lib/components/desktop/tru-desktop-module.mjs +72 -72
  73. package/esm2022/lib/components/desktop/tru-desktop.mjs +737 -0
  74. package/{esm2020 → esm2022}/lib/components/desktop/view/tru-desktop-view-module.mjs +19 -19
  75. package/esm2022/lib/components/desktop/view/tru-desktop-view.mjs +29 -0
  76. package/{esm2020 → esm2022}/lib/components/desktop/viewport/tru-desktop-viewport-module.mjs +20 -20
  77. package/esm2022/lib/components/desktop/viewport/tru-desktop-viewport.mjs +117 -0
  78. package/{esm2020 → esm2022}/lib/components/desktop/window/tru-desktop-window-module.mjs +58 -58
  79. package/esm2022/lib/components/desktop/window/tru-desktop-window.mjs +467 -0
  80. package/{esm2020 → esm2022}/lib/components/export-dialog/tru-export-dialog-module.mjs +20 -20
  81. package/esm2022/lib/components/export-dialog/tru-export-dialog.mjs +61 -0
  82. package/{esm2020 → esm2022}/lib/components/layout/column/tru-column-module.mjs +19 -19
  83. package/{esm2020 → esm2022}/lib/components/layout/column/tru-column.mjs +12 -12
  84. package/{esm2020 → esm2022}/lib/components/layout/form/tru-form-module.mjs +19 -19
  85. package/esm2022/lib/components/layout/form/tru-form.mjs +35 -0
  86. package/{esm2020 → esm2022}/lib/components/layout/group-box/tru-group-box-module.mjs +19 -19
  87. package/{esm2020 → esm2022}/lib/components/layout/group-box/tru-group-box.mjs +12 -12
  88. package/{esm2020 → esm2022}/lib/components/layout/row/tru-row-module.mjs +19 -19
  89. package/{esm2020 → esm2022}/lib/components/layout/row/tru-row.mjs +12 -12
  90. package/{esm2020 → esm2022}/lib/components/login/classes/tru-auth-config.mjs +7 -7
  91. package/esm2022/lib/components/login/classes/tru-auth-jwt-strategy.mjs +63 -0
  92. package/{esm2020 → esm2022}/lib/components/login/classes/tru-auth-login-request.mjs +5 -3
  93. package/{esm2020 → esm2022}/lib/components/login/classes/tru-auth-logout-request.mjs +4 -3
  94. package/esm2022/lib/components/login/classes/tru-auth-session-strategy.mjs +21 -0
  95. package/{esm2020 → esm2022}/lib/components/login/classes/tru-auth-strategy-provider.mjs +19 -19
  96. package/{esm2020 → esm2022}/lib/components/login/classes/tru-auth-token.mjs +11 -8
  97. package/{esm2020 → esm2022}/lib/components/login/classes/tru-auth-user-request.mjs +4 -3
  98. package/esm2022/lib/components/login/services/tru-auth-cache.mjs +20 -0
  99. package/esm2022/lib/components/login/services/tru-auth-interceptor.mjs +46 -0
  100. package/esm2022/lib/components/login/services/tru-auth.mjs +87 -0
  101. package/esm2022/lib/components/login/tru-login-module.mjs +46 -0
  102. package/esm2022/lib/components/login/tru-login.mjs +59 -0
  103. package/{esm2020 → esm2022}/lib/components/password-dialog/tru-password-dialog-module.mjs +20 -20
  104. package/esm2022/lib/components/password-dialog/tru-password-dialog.mjs +53 -0
  105. package/{esm2020 → esm2022}/lib/components/toolbar/button/tru-toolbar-button-module.mjs +32 -32
  106. package/esm2022/lib/components/toolbar/button/tru-toolbar-button.mjs +40 -0
  107. package/{esm2020 → esm2022}/lib/components/toolbar/classes/tru-toolbar-dropdown-option.mjs +1 -1
  108. package/{esm2020 → esm2022}/lib/components/toolbar/context-filter/tru-toolbar-context-filter-module.mjs +44 -44
  109. package/esm2022/lib/components/toolbar/context-filter/tru-toolbar-context-filter.mjs +26 -0
  110. package/{esm2020 → esm2022}/lib/components/toolbar/dropdown/tru-toolbar-dropdown-module.mjs +36 -36
  111. package/esm2022/lib/components/toolbar/dropdown/tru-toolbar-dropdown.mjs +45 -0
  112. package/{esm2020 → esm2022}/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button-module.mjs +19 -19
  113. package/esm2022/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button.mjs +17 -0
  114. package/{esm2020 → esm2022}/lib/components/toolbar/menu/menu-item/tru-toolbar-menu-item-module.mjs +19 -19
  115. package/esm2022/lib/components/toolbar/menu/menu-item/tru-toolbar-menu-item.mjs +26 -0
  116. package/{esm2020 → esm2022}/lib/components/toolbar/menu/tru-toolbar-menu-module.mjs +32 -32
  117. package/esm2022/lib/components/toolbar/menu/tru-toolbar-menu.mjs +33 -0
  118. package/{esm2020 → esm2022}/lib/components/toolbar/separator/tru-toolbar-separator-module.mjs +19 -19
  119. package/{esm2020 → esm2022}/lib/components/toolbar/separator/tru-toolbar-separator.mjs +12 -12
  120. package/{esm2020 → esm2022}/lib/components/toolbar/text/tru-toolbar-text-module.mjs +32 -32
  121. package/esm2022/lib/components/toolbar/text/tru-toolbar-text.mjs +27 -0
  122. package/{esm2020 → esm2022}/lib/components/toolbar/tru-toolbar-module.mjs +73 -73
  123. package/{esm2020 → esm2022}/lib/components/toolbar/tru-toolbar.mjs +20 -21
  124. package/{esm2020 → esm2022}/lib/components/toolbar/user-profile/tru-toolbar-user-profile-module.mjs +36 -36
  125. package/esm2022/lib/components/toolbar/user-profile/tru-toolbar-user-profile.mjs +38 -0
  126. package/esm2022/lib/components/validation-dialog/tru-validation-dialog-config.mjs +25 -0
  127. package/{esm2020 → esm2022}/lib/components/validation-dialog/tru-validation-dialog-module.mjs +19 -19
  128. package/esm2022/lib/components/validation-dialog/tru-validation-dialog.mjs +83 -0
  129. package/{esm2020 → esm2022}/lib/directives/breeze-validator/tru-breeze-validator-module.mjs +19 -19
  130. package/esm2022/lib/directives/breeze-validator/tru-breeze-validator.mjs +107 -0
  131. package/{esm2020 → esm2022}/lib/directives/search-panel-position-manager/tru-search-panel-position-manager-module.mjs +19 -19
  132. package/esm2022/lib/directives/search-panel-position-manager/tru-search-panel-position-manager.mjs +155 -0
  133. package/{esm2020 → esm2022}/lib/directives/select-panel/tru-mat-select-panel-module.mjs +19 -19
  134. package/esm2022/lib/directives/select-panel/tru-mat-select-panel.mjs +69 -0
  135. package/{esm2020 → esm2022}/lib/interfaces/tru-value.mjs +1 -1
  136. package/{esm2020 → esm2022}/lib/material.module.mjs +192 -192
  137. package/esm2022/lib/services/tru-app-environment.mjs +113 -0
  138. package/esm2022/lib/services/tru-breeze-context-factory.mjs +84 -0
  139. package/esm2022/lib/services/tru-breeze-metadata-provider.mjs +21 -0
  140. package/esm2022/lib/services/tru-component-lookup.mjs +23 -0
  141. package/esm2022/lib/services/tru-connection-hub.mjs +52 -0
  142. package/esm2022/lib/services/tru-context-filters.mjs +28 -0
  143. package/esm2022/lib/services/tru-data-context.mjs +263 -0
  144. package/esm2022/lib/services/tru-entity-accessor.mjs +292 -0
  145. package/esm2022/lib/services/tru-model-property-lookup.mjs +21 -0
  146. package/{esm2020 → esm2022}/lib/services/tru-predicate-map.mjs +11 -11
  147. package/esm2022/lib/services/tru-search-result-view-manager.mjs +18 -0
  148. package/esm2022/lib/services/tru-sort.mjs +113 -0
  149. package/esm2022/lib/services/tru-table-registry.mjs +15 -0
  150. package/esm2022/lib/services/tru-text-manager.mjs +148 -0
  151. package/esm2022/lib/services/tru-ui-notification.mjs +107 -0
  152. package/esm2022/lib/services/tru-user.mjs +62 -0
  153. package/esm2022/lib/services/tru-util.mjs +76 -0
  154. package/{esm2020 → esm2022}/lib/tru-common-module.mjs +16 -16
  155. package/{esm2020 → esm2022}/public-api.mjs +144 -144
  156. package/{esm2020 → esm2022}/trudb-tru-common-lib.mjs +4 -4
  157. package/fesm2022/trudb-tru-common-lib.mjs +6932 -0
  158. package/fesm2022/trudb-tru-common-lib.mjs.map +1 -0
  159. package/index.d.ts +5 -5
  160. package/lib/assets/tru-icon-module.d.ts +11 -11
  161. package/lib/assets/tru-search-icon-module.d.ts +11 -11
  162. package/lib/base-classes/tru-component-config-base.d.ts +3 -3
  163. package/lib/base-classes/tru-control-component-config-base.d.ts +20 -20
  164. package/lib/base-classes/tru-edit-control-base.d.ts +10 -10
  165. package/lib/base-classes/tru-edit-control-config-base.d.ts +21 -21
  166. package/lib/base-classes/tru-edit-parent-control-config-base.d.ts +9 -9
  167. package/lib/base-classes/tru-edit-pkey-control-config-base.d.ts +11 -11
  168. package/lib/base-classes/tru-entity-base.d.ts +14 -14
  169. package/lib/base-classes/tru-list-control-config-base.d.ts +21 -21
  170. package/lib/base-classes/tru-property-config-base.d.ts +13 -13
  171. package/lib/base-classes/tru-search-config-base.d.ts +9 -9
  172. package/lib/base-classes/tru-search-control-base.d.ts +21 -21
  173. package/lib/base-classes/tru-search-control-config-base.d.ts +13 -13
  174. package/lib/base-classes/tru-search-control-range-base.d.ts +25 -25
  175. package/lib/base-classes/tru-table-config-base.d.ts +11 -11
  176. package/lib/base-views/detail/tru-detail-view-base-module.d.ts +9 -9
  177. package/lib/base-views/detail/tru-detail-view-base.d.ts +32 -32
  178. package/lib/base-views/search/services/tru-search-view-control-event-handler.d.ts +12 -12
  179. package/lib/base-views/search/services/tru-search-view-event-handler.d.ts +11 -11
  180. package/lib/base-views/search/tru-search-view-base-module.d.ts +9 -9
  181. package/lib/base-views/search/tru-search-view-base.d.ts +36 -36
  182. package/lib/base-views/search-result/tru-search-result-view-base-module.d.ts +9 -9
  183. package/lib/base-views/search-result/tru-search-result-view-base.d.ts +25 -25
  184. package/lib/classes/tru-choice.d.ts +8 -8
  185. package/lib/classes/tru-context-filter-choice.d.ts +6 -6
  186. package/lib/classes/tru-context-filter.d.ts +10 -10
  187. package/lib/classes/tru-data-change-parser.d.ts +33 -33
  188. package/lib/classes/tru-data-change.d.ts +4 -4
  189. package/lib/classes/tru-formula-eval.d.ts +31 -31
  190. package/lib/classes/tru-merge-data-set.d.ts +7 -7
  191. package/lib/classes/tru-merge-data.d.ts +9 -9
  192. package/lib/classes/tru-name-value.d.ts +9 -9
  193. package/lib/classes/tru-predicate.d.ts +8 -8
  194. package/lib/classes/tru-property-config-cloud-file.d.ts +4 -4
  195. package/lib/classes/tru-property-config-date.d.ts +6 -6
  196. package/lib/classes/tru-property-config-decimal.d.ts +8 -8
  197. package/lib/classes/tru-property-config-file.d.ts +5 -5
  198. package/lib/classes/tru-property-config-foreign-key.d.ts +7 -7
  199. package/lib/classes/tru-property-config-integer.d.ts +6 -6
  200. package/lib/classes/tru-property-config-password.d.ts +5 -5
  201. package/lib/classes/tru-property-config-percentage.d.ts +6 -6
  202. package/lib/classes/tru-property-config-scientific.d.ts +6 -6
  203. package/lib/classes/tru-property-config-text-choices.d.ts +5 -5
  204. package/lib/classes/tru-property-config-text.d.ts +7 -7
  205. package/lib/classes/tru-property-config-usa-address.d.ts +5 -5
  206. package/lib/classes/tru-property-config-zip-code.d.ts +5 -5
  207. package/lib/classes/tru-query-predicate-manager.d.ts +26 -26
  208. package/lib/components/confirm-dialog/tru-confirm-dialog-module.d.ts +10 -10
  209. package/lib/components/confirm-dialog/tru-confirm-dialog.d.ts +28 -28
  210. package/lib/components/data-grid/classes/tru-data-grid-config.d.ts +7 -7
  211. package/lib/components/data-grid/enums/tru-data-grid-types.d.ts +5 -5
  212. package/lib/components/data-grid/overlays/tru-data-grid-loading-overlay/tru-data-grid-loading-overlay.d.ts +13 -13
  213. package/lib/components/data-grid/overlays/tru-data-grid-no-rows-overlay/tru-data-grid-no-rows-overlay.d.ts +13 -13
  214. package/lib/components/data-grid/tru-data-grid-module.d.ts +15 -15
  215. package/lib/components/data-grid/tru-data-grid.d.ts +67 -67
  216. package/lib/components/desktop/classes/tru-desktop-title.d.ts +4 -4
  217. package/lib/components/desktop/classes/tru-desktop-view-config.d.ts +16 -16
  218. package/lib/components/desktop/directives/resizable/tru-desktop-resizable-module.d.ts +9 -9
  219. package/lib/components/desktop/directives/resizable/tru-desktop-resizable.d.ts +32 -32
  220. package/lib/components/desktop/menubar/tru-desktop-menubar-module.d.ts +17 -17
  221. package/lib/components/desktop/menubar/tru-desktop-menubar.d.ts +15 -15
  222. package/lib/components/desktop/services/tru-desktop-manager.d.ts +33 -33
  223. package/lib/components/desktop/services/tru-desktop-service.d.ts +95 -95
  224. package/lib/components/desktop/services/tru-window-action-event-handler.d.ts +12 -12
  225. package/lib/components/desktop/services/tru-window-event-args.d.ts +17 -17
  226. package/lib/components/desktop/services/tru-window-event-handler.d.ts +20 -20
  227. package/lib/components/desktop/statusbar/tru-desktop-statusbar-module.d.ts +9 -9
  228. package/lib/components/desktop/statusbar/tru-desktop-statusbar.d.ts +10 -10
  229. package/lib/components/desktop/taskbar/tru-desktop-taskbar-module.d.ts +11 -11
  230. package/lib/components/desktop/taskbar/tru-desktop-taskbar.d.ts +15 -15
  231. package/lib/components/desktop/tru-desktop-module.d.ts +20 -20
  232. package/lib/components/desktop/tru-desktop.d.ts +337 -337
  233. package/lib/components/desktop/view/tru-desktop-view-module.d.ts +9 -9
  234. package/lib/components/desktop/view/tru-desktop-view.d.ts +14 -14
  235. package/lib/components/desktop/viewport/tru-desktop-viewport-module.d.ts +10 -10
  236. package/lib/components/desktop/viewport/tru-desktop-viewport.d.ts +48 -48
  237. package/lib/components/desktop/window/tru-desktop-window-module.d.ts +17 -17
  238. package/lib/components/desktop/window/tru-desktop-window.d.ts +189 -189
  239. package/lib/components/export-dialog/tru-export-dialog-module.d.ts +10 -10
  240. package/lib/components/export-dialog/tru-export-dialog.d.ts +26 -26
  241. package/lib/components/layout/column/tru-column-module.d.ts +9 -9
  242. package/lib/components/layout/column/tru-column.d.ts +6 -6
  243. package/lib/components/layout/form/tru-form-module.d.ts +9 -9
  244. package/lib/components/layout/form/tru-form.d.ts +10 -10
  245. package/lib/components/layout/group-box/tru-group-box-module.d.ts +9 -9
  246. package/lib/components/layout/group-box/tru-group-box.d.ts +6 -6
  247. package/lib/components/layout/row/tru-row-module.d.ts +9 -9
  248. package/lib/components/layout/row/tru-row.d.ts +6 -6
  249. package/lib/components/login/classes/tru-auth-config.d.ts +16 -16
  250. package/lib/components/login/classes/tru-auth-jwt-strategy.d.ts +15 -15
  251. package/lib/components/login/classes/tru-auth-login-request.d.ts +4 -4
  252. package/lib/components/login/classes/tru-auth-logout-request.d.ts +3 -3
  253. package/lib/components/login/classes/tru-auth-session-strategy.d.ts +13 -13
  254. package/lib/components/login/classes/tru-auth-strategy-provider.d.ts +9 -9
  255. package/lib/components/login/classes/tru-auth-token.d.ts +6 -6
  256. package/lib/components/login/classes/tru-auth-user-request.d.ts +3 -3
  257. package/lib/components/login/services/tru-auth-cache.d.ts +11 -11
  258. package/lib/components/login/services/tru-auth-interceptor.d.ts +16 -16
  259. package/lib/components/login/services/tru-auth.d.ts +29 -29
  260. package/lib/components/login/tru-login-module.d.ts +11 -11
  261. package/lib/components/login/tru-login.d.ts +21 -21
  262. package/lib/components/password-dialog/tru-password-dialog-module.d.ts +10 -10
  263. package/lib/components/password-dialog/tru-password-dialog.d.ts +24 -23
  264. package/lib/components/toolbar/button/tru-toolbar-button-module.d.ts +11 -11
  265. package/lib/components/toolbar/button/tru-toolbar-button.d.ts +16 -16
  266. package/lib/components/toolbar/classes/tru-toolbar-dropdown-option.d.ts +4 -4
  267. package/lib/components/toolbar/context-filter/tru-toolbar-context-filter-module.d.ts +14 -14
  268. package/lib/components/toolbar/context-filter/tru-toolbar-context-filter.d.ts +13 -13
  269. package/lib/components/toolbar/dropdown/tru-toolbar-dropdown-module.d.ts +12 -12
  270. package/lib/components/toolbar/dropdown/tru-toolbar-dropdown.d.ts +18 -18
  271. package/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button-module.d.ts +9 -9
  272. package/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button.d.ts +7 -7
  273. package/lib/components/toolbar/menu/menu-item/tru-toolbar-menu-item-module.d.ts +9 -9
  274. package/lib/components/toolbar/menu/menu-item/tru-toolbar-menu-item.d.ts +8 -8
  275. package/lib/components/toolbar/menu/tru-toolbar-menu-module.d.ts +11 -11
  276. package/lib/components/toolbar/menu/tru-toolbar-menu.d.ts +10 -10
  277. package/lib/components/toolbar/separator/tru-toolbar-separator-module.d.ts +9 -9
  278. package/lib/components/toolbar/separator/tru-toolbar-separator.d.ts +6 -6
  279. package/lib/components/toolbar/text/tru-toolbar-text-module.d.ts +11 -11
  280. package/lib/components/toolbar/text/tru-toolbar-text.d.ts +12 -12
  281. package/lib/components/toolbar/tru-toolbar-module.d.ts +16 -16
  282. package/lib/components/toolbar/tru-toolbar.d.ts +9 -9
  283. package/lib/components/toolbar/user-profile/tru-toolbar-user-profile-module.d.ts +12 -12
  284. package/lib/components/toolbar/user-profile/tru-toolbar-user-profile.d.ts +17 -17
  285. package/lib/components/validation-dialog/tru-validation-dialog-config.d.ts +13 -13
  286. package/lib/components/validation-dialog/tru-validation-dialog-module.d.ts +9 -9
  287. package/lib/components/validation-dialog/tru-validation-dialog.d.ts +20 -20
  288. package/lib/directives/breeze-validator/tru-breeze-validator-module.d.ts +9 -9
  289. package/lib/directives/breeze-validator/tru-breeze-validator.d.ts +27 -27
  290. package/lib/directives/search-panel-position-manager/tru-search-panel-position-manager-module.d.ts +9 -9
  291. package/lib/directives/search-panel-position-manager/tru-search-panel-position-manager.d.ts +40 -40
  292. package/lib/directives/select-panel/tru-mat-select-panel-module.d.ts +9 -9
  293. package/lib/directives/select-panel/tru-mat-select-panel.d.ts +17 -17
  294. package/lib/interfaces/tru-value.d.ts +6 -6
  295. package/lib/material.module.d.ts +50 -50
  296. package/lib/services/tru-app-environment.d.ts +57 -57
  297. package/lib/services/tru-breeze-context-factory.d.ts +32 -32
  298. package/lib/services/tru-breeze-metadata-provider.d.ts +9 -9
  299. package/lib/services/tru-component-lookup.d.ts +9 -9
  300. package/lib/services/tru-connection-hub.d.ts +18 -18
  301. package/lib/services/tru-context-filters.d.ts +10 -10
  302. package/lib/services/tru-data-context.d.ts +42 -42
  303. package/lib/services/tru-entity-accessor.d.ts +46 -46
  304. package/lib/services/tru-model-property-lookup.d.ts +10 -10
  305. package/lib/services/tru-predicate-map.d.ts +6 -6
  306. package/lib/services/tru-search-result-view-manager.d.ts +10 -10
  307. package/lib/services/tru-sort.d.ts +56 -56
  308. package/lib/services/tru-table-registry.d.ts +8 -8
  309. package/lib/services/tru-text-manager.d.ts +68 -68
  310. package/lib/services/tru-ui-notification.d.ts +36 -36
  311. package/lib/services/tru-user.d.ts +29 -29
  312. package/lib/services/tru-util.d.ts +14 -14
  313. package/lib/tru-common-module.d.ts +6 -6
  314. package/package.json +5 -11
  315. package/public-api.d.ts +117 -117
  316. package/esm2020/lib/base-classes/tru-edit-control-config-base.mjs +0 -4
  317. package/esm2020/lib/base-classes/tru-entity-base.mjs +0 -13
  318. package/esm2020/lib/base-classes/tru-list-control-config-base.mjs +0 -4
  319. package/esm2020/lib/base-classes/tru-search-control-base.mjs +0 -47
  320. package/esm2020/lib/base-classes/tru-search-control-config-base.mjs +0 -4
  321. package/esm2020/lib/base-classes/tru-search-control-range-base.mjs +0 -47
  322. package/esm2020/lib/base-classes/tru-table-config-base.mjs +0 -13
  323. package/esm2020/lib/base-views/detail/tru-detail-view-base.mjs +0 -76
  324. package/esm2020/lib/base-views/search/services/tru-search-view-control-event-handler.mjs +0 -27
  325. package/esm2020/lib/base-views/search/services/tru-search-view-event-handler.mjs +0 -27
  326. package/esm2020/lib/base-views/search/tru-search-view-base.mjs +0 -63
  327. package/esm2020/lib/base-views/search-result/tru-search-result-view-base.mjs +0 -51
  328. package/esm2020/lib/classes/tru-context-filter-choice.mjs +0 -8
  329. package/esm2020/lib/classes/tru-context-filter.mjs +0 -16
  330. package/esm2020/lib/classes/tru-data-change-parser.mjs +0 -277
  331. package/esm2020/lib/classes/tru-data-change.mjs +0 -7
  332. package/esm2020/lib/classes/tru-merge-data-set.mjs +0 -12
  333. package/esm2020/lib/classes/tru-merge-data.mjs +0 -17
  334. package/esm2020/lib/classes/tru-predicate.mjs +0 -47
  335. package/esm2020/lib/classes/tru-property-config-date.mjs +0 -9
  336. package/esm2020/lib/classes/tru-property-config-decimal.mjs +0 -11
  337. package/esm2020/lib/classes/tru-property-config-foreign-key.mjs +0 -10
  338. package/esm2020/lib/classes/tru-property-config-integer.mjs +0 -9
  339. package/esm2020/lib/classes/tru-property-config-password.mjs +0 -8
  340. package/esm2020/lib/classes/tru-property-config-percentage.mjs +0 -9
  341. package/esm2020/lib/classes/tru-property-config-scientific.mjs +0 -9
  342. package/esm2020/lib/classes/tru-query-predicate-manager.mjs +0 -49
  343. package/esm2020/lib/components/confirm-dialog/tru-confirm-dialog.mjs +0 -45
  344. package/esm2020/lib/components/data-grid/overlays/tru-data-grid-loading-overlay/tru-data-grid-loading-overlay.mjs +0 -39
  345. package/esm2020/lib/components/data-grid/overlays/tru-data-grid-no-rows-overlay/tru-data-grid-no-rows-overlay.mjs +0 -26
  346. package/esm2020/lib/components/data-grid/tru-data-grid-module.mjs +0 -67
  347. package/esm2020/lib/components/data-grid/tru-data-grid.mjs +0 -370
  348. package/esm2020/lib/components/desktop/classes/tru-desktop-view-config.mjs +0 -21
  349. package/esm2020/lib/components/desktop/directives/resizable/tru-desktop-resizable.mjs +0 -109
  350. package/esm2020/lib/components/desktop/menubar/tru-desktop-menubar.mjs +0 -34
  351. package/esm2020/lib/components/desktop/services/tru-desktop-manager.mjs +0 -84
  352. package/esm2020/lib/components/desktop/services/tru-desktop-service.mjs +0 -116
  353. package/esm2020/lib/components/desktop/services/tru-window-action-event-handler.mjs +0 -27
  354. package/esm2020/lib/components/desktop/services/tru-window-event-args.mjs +0 -26
  355. package/esm2020/lib/components/desktop/services/tru-window-event-handler.mjs +0 -44
  356. package/esm2020/lib/components/desktop/statusbar/tru-desktop-statusbar.mjs +0 -18
  357. package/esm2020/lib/components/desktop/taskbar/tru-desktop-taskbar.mjs +0 -40
  358. package/esm2020/lib/components/desktop/tru-desktop.mjs +0 -731
  359. package/esm2020/lib/components/desktop/view/tru-desktop-view.mjs +0 -25
  360. package/esm2020/lib/components/desktop/viewport/tru-desktop-viewport.mjs +0 -113
  361. package/esm2020/lib/components/desktop/window/tru-desktop-window.mjs +0 -457
  362. package/esm2020/lib/components/export-dialog/tru-export-dialog.mjs +0 -57
  363. package/esm2020/lib/components/layout/form/tru-form.mjs +0 -34
  364. package/esm2020/lib/components/login/classes/tru-auth-jwt-strategy.mjs +0 -65
  365. package/esm2020/lib/components/login/classes/tru-auth-session-strategy.mjs +0 -19
  366. package/esm2020/lib/components/login/services/tru-auth-cache.mjs +0 -22
  367. package/esm2020/lib/components/login/services/tru-auth-interceptor.mjs +0 -43
  368. package/esm2020/lib/components/login/services/tru-auth.mjs +0 -81
  369. package/esm2020/lib/components/login/tru-login-module.mjs +0 -46
  370. package/esm2020/lib/components/login/tru-login.mjs +0 -58
  371. package/esm2020/lib/components/password-dialog/tru-password-dialog.mjs +0 -44
  372. package/esm2020/lib/components/toolbar/button/tru-toolbar-button.mjs +0 -41
  373. package/esm2020/lib/components/toolbar/context-filter/tru-toolbar-context-filter.mjs +0 -24
  374. package/esm2020/lib/components/toolbar/dropdown/tru-toolbar-dropdown.mjs +0 -43
  375. package/esm2020/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button.mjs +0 -16
  376. package/esm2020/lib/components/toolbar/menu/menu-item/tru-toolbar-menu-item.mjs +0 -26
  377. package/esm2020/lib/components/toolbar/menu/tru-toolbar-menu.mjs +0 -33
  378. package/esm2020/lib/components/toolbar/text/tru-toolbar-text.mjs +0 -28
  379. package/esm2020/lib/components/toolbar/user-profile/tru-toolbar-user-profile.mjs +0 -35
  380. package/esm2020/lib/components/validation-dialog/tru-validation-dialog-config.mjs +0 -21
  381. package/esm2020/lib/components/validation-dialog/tru-validation-dialog.mjs +0 -79
  382. package/esm2020/lib/directives/breeze-validator/tru-breeze-validator.mjs +0 -100
  383. package/esm2020/lib/directives/search-panel-position-manager/tru-search-panel-position-manager.mjs +0 -151
  384. package/esm2020/lib/directives/select-panel/tru-mat-select-panel.mjs +0 -66
  385. package/esm2020/lib/services/tru-app-environment.mjs +0 -94
  386. package/esm2020/lib/services/tru-breeze-context-factory.mjs +0 -79
  387. package/esm2020/lib/services/tru-breeze-metadata-provider.mjs +0 -22
  388. package/esm2020/lib/services/tru-component-lookup.mjs +0 -25
  389. package/esm2020/lib/services/tru-connection-hub.mjs +0 -48
  390. package/esm2020/lib/services/tru-context-filters.mjs +0 -29
  391. package/esm2020/lib/services/tru-data-context.mjs +0 -258
  392. package/esm2020/lib/services/tru-entity-accessor.mjs +0 -287
  393. package/esm2020/lib/services/tru-model-property-lookup.mjs +0 -22
  394. package/esm2020/lib/services/tru-search-result-view-manager.mjs +0 -17
  395. package/esm2020/lib/services/tru-sort.mjs +0 -114
  396. package/esm2020/lib/services/tru-table-registry.mjs +0 -16
  397. package/esm2020/lib/services/tru-text-manager.mjs +0 -134
  398. package/esm2020/lib/services/tru-ui-notification.mjs +0 -103
  399. package/esm2020/lib/services/tru-user.mjs +0 -63
  400. package/esm2020/lib/services/tru-util.mjs +0 -77
  401. package/fesm2015/trudb-tru-common-lib.mjs +0 -6799
  402. package/fesm2015/trudb-tru-common-lib.mjs.map +0 -1
  403. package/fesm2020/trudb-tru-common-lib.mjs +0 -6776
  404. package/fesm2020/trudb-tru-common-lib.mjs.map +0 -1
@@ -1,25 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class TruComponentLookup {
4
- constructor() {
5
- this.truComponentLookupRegistry = new Map();
6
- this.set = (key, type) => {
7
- this.truComponentLookupRegistry.set(key, type);
8
- };
9
- this.get = (key) => {
10
- return this.truComponentLookupRegistry.get(key);
11
- };
12
- this.getBySuffix = (suffix) => {
13
- return [...this.truComponentLookupRegistry.values()].filter((v, k) => {
14
- v.name.toLowerCase().endsWith(suffix.toLowerCase());
15
- });
16
- };
17
- }
18
- }
19
- TruComponentLookup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruComponentLookup, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
20
- TruComponentLookup.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruComponentLookup, providedIn: 'root' });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruComponentLookup, decorators: [{
22
- type: Injectable,
23
- args: [{ providedIn: 'root' }]
24
- }] });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNvbXBvbmVudC1sb29rdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS1jb21wb25lbnQtbG9va3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFVSwrQkFBMEIsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVqRSxRQUFHLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFRLEVBQUU7WUFDckMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFBO1FBRUQsUUFBRyxHQUFHLENBQUMsR0FBVyxFQUFPLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQTtRQUVELGdCQUFXLEdBQUcsQ0FBQyxNQUFjLEVBQWMsRUFBRTtZQUMzQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ3pELENBQUMsQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFO2dCQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtZQUNyRCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQTtLQUNGOzsrR0FsQlksa0JBQWtCO21IQUFsQixrQkFBa0IsY0FETCxNQUFNOzJGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgVHJ1Q29tcG9uZW50TG9va3VwIHtcclxuICBwcml2YXRlIHRydUNvbXBvbmVudExvb2t1cFJlZ2lzdHJ5OiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBzZXQgPSAoa2V5OiBzdHJpbmcsIHR5cGU6IGFueSk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy50cnVDb21wb25lbnRMb29rdXBSZWdpc3RyeS5zZXQoa2V5LCB0eXBlKTtcclxuICB9XHJcblxyXG4gIGdldCA9IChrZXk6IHN0cmluZyk6IGFueSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50cnVDb21wb25lbnRMb29rdXBSZWdpc3RyeS5nZXQoa2V5KTtcclxuICB9XHJcblxyXG4gIGdldEJ5U3VmZml4ID0gKHN1ZmZpeDogc3RyaW5nKTogQXJyYXk8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gWy4uLnRoaXMudHJ1Q29tcG9uZW50TG9va3VwUmVnaXN0cnkudmFsdWVzKCldLmZpbHRlcihcclxuICAgICAgKHY6IGFueSwgazogYW55KSA9PiB7XHJcbiAgICAgICAgdi5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgoc3VmZml4LnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,48 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as signalR from "@microsoft/signalr";
3
- import { TruDataChangeParser } from '../classes/tru-data-change-parser';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./tru-data-context";
6
- import * as i2 from "./tru-app-environment";
7
- import * as i3 from "./tru-model-property-lookup";
8
- export class TruConnectionHub {
9
- constructor(dataContext, appEnvironment, modelPropertyLookup) {
10
- this.dataContext = dataContext;
11
- this.appEnvironment = appEnvironment;
12
- this.modelPropertyLookup = modelPropertyLookup;
13
- this.start = () => {
14
- this.connection.on("error", (value) => {
15
- console.log(JSON.parse(value));
16
- });
17
- try {
18
- Object.defineProperty(WebSocket, 'OPEN', { value: 1, });
19
- this.connection.start().then(() => {
20
- this.connection.invoke('getConnectionId')
21
- .then((connectionId) => {
22
- console.log(`SignalR connection success! connectionId: ${connectionId}`);
23
- });
24
- });
25
- }
26
- catch (error) {
27
- console.log(`SignalR connection error: ${error}`);
28
- }
29
- };
30
- this.subscribe = (dataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded) => {
31
- return new TruDataChangeParser(this.connection, dataContext, this.appEnvironment.globalDataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, this.modelPropertyLookup).onDataChanged();
32
- };
33
- this.connection = new signalR.HubConnectionBuilder()
34
- .withUrl(`${this.appEnvironment.appUri}/notificationhub`, {
35
- skipNegotiation: true,
36
- transport: signalR.HttpTransportType.WebSockets,
37
- }).withAutomaticReconnect().build();
38
- }
39
- }
40
- TruConnectionHub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, deps: [{ token: i1.TruDataContext }, { token: i2.TruAppEnvironment }, { token: i3.TruModelPropertyLookup }], target: i0.ɵɵFactoryTarget.Injectable });
41
- TruConnectionHub.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, providedIn: 'root' });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, decorators: [{
43
- type: Injectable,
44
- args: [{
45
- providedIn: 'root',
46
- }]
47
- }], ctorParameters: function () { return [{ type: i1.TruDataContext }, { type: i2.TruAppEnvironment }, { type: i3.TruModelPropertyLookup }]; } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNvbm5lY3Rpb24taHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtY29ubmVjdGlvbi1odWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBSTdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7OztBQVF4RSxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCLFlBQ1UsV0FBMkIsRUFDM0IsY0FBaUMsRUFDakMsbUJBQTJDO1FBRjNDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQVFyRCxVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSTtnQkFDRixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQzt5QkFDdEMsSUFBSSxDQUFDLENBQUMsWUFBb0IsRUFBRSxFQUFFO3dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxZQUFZLEVBQUUsQ0FBQyxDQUFDO29CQUMzRSxDQUFDLENBQUMsQ0FBQTtnQkFDTixDQUFDLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNuRDtRQUNILENBQUMsQ0FBQTtRQUVELGNBQVMsR0FBRyxDQUNWLFdBQTJCLEVBQzNCLE1BQTRCLEVBQzVCLFNBQWlCLEVBQ2pCLGdCQUEyQixFQUMzQixjQUF5QixFQUN6QixjQUFrQixFQUNsQixXQUEwQixFQUMxQixRQUF1QixFQUEwQixFQUFFO1lBQ25ELE9BQU8sSUFBSSxtQkFBbUIsQ0FDNUIsSUFBSSxDQUFDLFVBQVUsRUFDZixXQUFXLEVBQ1gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFDckMsTUFBTSxFQUFFLFNBQVMsRUFDakIsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsV0FBVyxFQUNYLFFBQVEsRUFDUixJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QyxDQUFDLENBQUE7UUE3Q0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTthQUNqRCxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sa0JBQWtCLEVBQUU7WUFDeEQsZUFBZSxFQUFFLElBQUk7WUFDckIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVO1NBQ2hELENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hDLENBQUM7OzZHQVpVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBzaWduYWxSIGZyb20gXCJAbWljcm9zb2Z0L3NpZ25hbHJcIlxyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tICcuLi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZVBhcnNlciB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlLXBhcnNlcic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFByb3BlcnR5TG9va3VwIH0gZnJvbSAnLi90cnUtbW9kZWwtcHJvcGVydHktbG9va3VwJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDb25uZWN0aW9uSHViIHtcclxuICBwcml2YXRlIGNvbm5lY3Rpb246IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBtb2RlbFByb3BlcnR5TG9va3VwOiBUcnVNb2RlbFByb3BlcnR5TG9va3VwKSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBuZXcgc2lnbmFsUi5IdWJDb25uZWN0aW9uQnVpbGRlcigpXHJcbiAgICAgIC53aXRoVXJsKGAke3RoaXMuYXBwRW52aXJvbm1lbnQuYXBwVXJpfS9ub3RpZmljYXRpb25odWJgLCB7XHJcbiAgICAgICAgc2tpcE5lZ290aWF0aW9uOiB0cnVlLFxyXG4gICAgICAgIHRyYW5zcG9ydDogc2lnbmFsUi5IdHRwVHJhbnNwb3J0VHlwZS5XZWJTb2NrZXRzLFxyXG4gICAgICB9KS53aXRoQXV0b21hdGljUmVjb25uZWN0KCkuYnVpbGQoKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9uKFwiZXJyb3JcIiwgKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coSlNPTi5wYXJzZSh2YWx1ZSkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYlNvY2tldCwgJ09QRU4nLCB7IHZhbHVlOiAxLCB9KTtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uLnN0YXJ0KCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmludm9rZSgnZ2V0Q29ubmVjdGlvbklkJylcclxuICAgICAgICAgIC50aGVuKChjb25uZWN0aW9uSWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU2lnbmFsUiBjb25uZWN0aW9uIHN1Y2Nlc3MhIGNvbm5lY3Rpb25JZDogJHtjb25uZWN0aW9uSWR9YCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBTaWduYWxSIGNvbm5lY3Rpb24gZXJyb3I6ICR7ZXJyb3J9YCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdWJzY3JpYmUgPSAoXHJcbiAgICBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBlbnRpdHk6IHR5cGVvZiBUcnVFbnRpdHlCYXNlLFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBnZXRMYXRlc3RSZXN1bHRzOiAoKSA9PiBhbnksXHJcbiAgICBnZXRMYXRlc3RRdWVyeTogKCkgPT4gYW55LFxyXG4gICAgY29udGV4dEZpbHRlcnM6IFtdLFxyXG4gICAgZXhwYW5kUGF0aHM6IEFycmF5PHN0cmluZz4sXHJcbiAgICBpc0xvYWRlZDogKCkgPT4gYm9vbGVhbik6IFN1YmplY3Q8VHJ1RGF0YUNoYW5nZT4gPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBUcnVEYXRhQ2hhbmdlUGFyc2VyKFxyXG4gICAgICB0aGlzLmNvbm5lY3Rpb24sXHJcbiAgICAgIGRhdGFDb250ZXh0LFxyXG4gICAgICB0aGlzLmFwcEVudmlyb25tZW50Lmdsb2JhbERhdGFDb250ZXh0LFxyXG4gICAgICBlbnRpdHksIHRhYmxlTmFtZSxcclxuICAgICAgZ2V0TGF0ZXN0UmVzdWx0cyxcclxuICAgICAgZ2V0TGF0ZXN0UXVlcnksXHJcbiAgICAgIGNvbnRleHRGaWx0ZXJzLFxyXG4gICAgICBleHBhbmRQYXRocyxcclxuICAgICAgaXNMb2FkZWQsXHJcbiAgICAgIHRoaXMubW9kZWxQcm9wZXJ0eUxvb2t1cCkub25EYXRhQ2hhbmdlZCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,29 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import * as i0 from "@angular/core";
3
- export class TruContextFilters {
4
- constructor() {
5
- this.filters = [];
6
- this.valueFor = (tableName) => {
7
- let choice = this.filters.find(f => f.selectedChoice.table === tableName)?.selectedChoice;
8
- if (!choice)
9
- throw new Error('ContextFilterChoice not found. Possible invalid configuration.');
10
- return choice.ref;
11
- };
12
- this.label = () => {
13
- let label = '';
14
- //this.selectedContextFilterChoices.forEach((filter: TruContextFilterChoice) => {
15
- // label += filter.table + ': ' + filter.label + ' ';
16
- //});
17
- return label;
18
- };
19
- }
20
- }
21
- TruContextFilters.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruContextFilters, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
- TruContextFilters.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruContextFilters, providedIn: 'root' });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruContextFilters, decorators: [{
24
- type: Injectable,
25
- args: [{
26
- providedIn: 'root',
27
- }]
28
- }], ctorParameters: function () { return []; } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNvbnRleHQtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWNvbnRleHQtZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8zQyxNQUFNLE9BQU8saUJBQWlCO0lBa0I1QjtRQWpCQSxZQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUV0QyxhQUFRLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUU7WUFDdkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsRUFBRSxjQUFjLENBQUM7WUFDMUYsSUFBSSxDQUFDLE1BQU07Z0JBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1lBQ3BGLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNwQixDQUFDLENBQUE7UUFFRCxVQUFLLEdBQUcsR0FBVyxFQUFFO1lBQ25CLElBQUksS0FBSyxHQUFXLEVBQUUsQ0FBQztZQUN2QixpRkFBaUY7WUFDakYsc0RBQXNEO1lBQ3RELEtBQUs7WUFDTCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQTtJQUVlLENBQUM7OzhHQWxCTixpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJ1Q29udGV4dEZpbHRlciB9IGZyb20gXCIuLi9jbGFzc2VzL3RydS1jb250ZXh0LWZpbHRlclwiO1xyXG5pbXBvcnQgeyBUcnVDb250ZXh0RmlsdGVyQ2hvaWNlIH0gZnJvbSBcIi4uL2NsYXNzZXMvdHJ1LWNvbnRleHQtZmlsdGVyLWNob2ljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUNvbnRleHRGaWx0ZXJzIHtcclxuICBmaWx0ZXJzOiBBcnJheTxUcnVDb250ZXh0RmlsdGVyPiA9IFtdO1xyXG5cclxuICB2YWx1ZUZvciA9ICh0YWJsZU5hbWU6IHN0cmluZyk6IG51bWJlciA9PiB7XHJcbiAgICBsZXQgY2hvaWNlID0gdGhpcy5maWx0ZXJzLmZpbmQoZiA9PiBmLnNlbGVjdGVkQ2hvaWNlLnRhYmxlID09PSB0YWJsZU5hbWUpPy5zZWxlY3RlZENob2ljZTtcclxuICAgIGlmICghY2hvaWNlKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRleHRGaWx0ZXJDaG9pY2Ugbm90IGZvdW5kLiBQb3NzaWJsZSBpbnZhbGlkIGNvbmZpZ3VyYXRpb24uJyk7XHJcbiAgICByZXR1cm4gY2hvaWNlLnJlZjtcclxuICB9XHJcblxyXG4gIGxhYmVsID0gKCk6IHN0cmluZyA9PiB7XHJcbiAgICBsZXQgbGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gICAgLy90aGlzLnNlbGVjdGVkQ29udGV4dEZpbHRlckNob2ljZXMuZm9yRWFjaCgoZmlsdGVyOiBUcnVDb250ZXh0RmlsdGVyQ2hvaWNlKSA9PiB7XHJcbiAgICAvLyAgbGFiZWwgKz0gZmlsdGVyLnRhYmxlICsgJzogJyArIGZpbHRlci5sYWJlbCArICcgJztcclxuICAgIC8vfSk7XHJcbiAgICByZXR1cm4gbGFiZWw7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG59XHJcbiJdfQ==
@@ -1,258 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { EntityAction, EntityState } from "breeze-client";
3
- import { Observable, Subject } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./tru-breeze-context-factory";
6
- import * as i2 from "./tru-app-environment";
7
- import * as i3 from "./tru-entity-accessor";
8
- import * as i4 from "./tru-ui-notification";
9
- export class TruDataContext {
10
- constructor(breezeContextFactory, appEnvironment, entityAccessor, uiNotification) {
11
- this.breezeContextFactory = breezeContextFactory;
12
- this.appEnvironment = appEnvironment;
13
- this.entityAccessor = entityAccessor;
14
- this.uiNotification = uiNotification;
15
- this._propertyChanged$ = new Subject();
16
- this._dataChanged$ = new Subject();
17
- this._pendingDeleteEntities = [];
18
- this._pendingCascadeDeleteEntities = [];
19
- this.validationChangeDetection = new Observable((observer) => {
20
- this.entityManager.validationErrorsChanged.subscribe(entities => {
21
- observer.next(entities);
22
- });
23
- });
24
- this.getValidationErrors = (entities = null) => {
25
- entities = entities || this.entityManager.getChanges();
26
- var errorsPerEntity = entities.map((entity) => {
27
- var errors = entity.entityAspect.getValidationErrors();
28
- errors = errors.map((err) => {
29
- return {
30
- entity: entity,
31
- errorMessage: err.errorMessage,
32
- property: err.property
33
- };
34
- });
35
- return errors;
36
- });
37
- return errorsPerEntity;
38
- };
39
- this.formatValidationErrors = (entities = null) => {
40
- let entitiesWithErrors = this.getValidationErrors(entities);
41
- let formattedErrors = new Array();
42
- entitiesWithErrors.forEach((entityWithErrors) => {
43
- if (entityWithErrors.length) {
44
- formattedErrors.push(entityWithErrors.map((e) => {
45
- if (e.propertyName) {
46
- return e.entity.entityType.defaultResourceName + '.' + e.propertyName + ': ' + e.errorMessage;
47
- }
48
- var mergeData = JSON.parse(e.entity.Merge_Data);
49
- if (mergeData &&
50
- mergeData.constructor === Object &&
51
- Object.entries(mergeData).length > 0 &&
52
- mergeData[e.property.name]) {
53
- return mergeData[e.property.name].modifiedBy + ' changed ' + e.property.name + ' to ' + mergeData[e.property.name].value + '. Accept or Decline the change. ';
54
- }
55
- var propertyName = e.property.name ? e.property.name : '[Unknown Property]';
56
- return e.entity.entityType.defaultResourceName + '.' + propertyName + ': has invalid data.';
57
- }));
58
- }
59
- });
60
- return formattedErrors;
61
- };
62
- this.findCachedCascadeDeleteDescendants = (entity) => {
63
- let descendants = [];
64
- let type = entity.entityType;
65
- let typeName = type.defaultResourceName;
66
- let entityChildrenNames = JSON.parse(JSON.stringify('Replace with: ModelNavigationProperties.value'))[typeName];
67
- Object.entries(entityChildrenNames)
68
- .forEach(([k, v]) => {
69
- let property = entity[k];
70
- property.forEach((child) => {
71
- if (typeof v === 'object' && v.doesCascadeDelete && child.entityAspect.entityState !== EntityState.Added) {
72
- throw new Error('Delete of selected item is not possible due to related child that is not setup for cascade delete. Delete children items first.');
73
- }
74
- descendants = descendants.concat(this.findCachedCascadeDeleteDescendants(child));
75
- });
76
- descendants = property.concat(descendants);
77
- });
78
- return descendants;
79
- };
80
- this.markCachedDescendantsForDelete = (entities) => {
81
- var cascadeDeleteDescendantsPerEntity = entities.map((entity) => { return this.findCachedCascadeDeleteDescendants(entity); }, entities);
82
- var cascadeDeleteDescendants = cascadeDeleteDescendantsPerEntity.reduce((memo, i) => { return memo.concat(i); });
83
- cascadeDeleteDescendants.forEach((entity) => { this.entityManager.detachEntity(entity); });
84
- this._pendingDeleteEntities = this._pendingDeleteEntities.concat(entities);
85
- let combined = this._pendingCascadeDeleteEntities.concat(cascadeDeleteDescendants);
86
- this._pendingCascadeDeleteEntities = combined.filter((n, i) => combined.indexOf(n) === i);
87
- };
88
- this.markForDelete = (entities) => {
89
- if (entities.length > 0) {
90
- this.markCachedDescendantsForDelete(entities);
91
- entities.forEach((entity) => {
92
- entity.entityAspect.setDeleted();
93
- //entity._associatedDataCached = false;
94
- });
95
- }
96
- };
97
- this.hasChanges = (entityTypes = []) => {
98
- if (entityTypes.length)
99
- return this._breezeContext.entityManager.getChanges(entityTypes);
100
- return this._breezeContext.entityManager.getChanges();
101
- };
102
- this.entityAccess = () => {
103
- return this.entityAccessor;
104
- };
105
- this.exportCahce = () => {
106
- console.log(this._breezeContext.entityManager.exportEntities());
107
- };
108
- this.save = (entities = null, deleteOperation = false) => {
109
- return new Promise((resolve, reject) => {
110
- if (this.appEnvironment.isSaving) {
111
- this.uiNotification.error(this.appEnvironment.msgSaveInProgress);
112
- resolve();
113
- return;
114
- }
115
- var validationErrorMessages = this.formatValidationErrors(entities);
116
- if (validationErrorMessages.length > 0) {
117
- this.uiNotification.error(this.appEnvironment.msgInvalidData, validationErrorMessages[0]);
118
- resolve();
119
- return;
120
- }
121
- if (!this.hasChanges().length) {
122
- this.uiNotification.warning(this.appEnvironment.msgNoChangesToSave);
123
- resolve();
124
- return;
125
- }
126
- this.appEnvironment.isSaving = true;
127
- this.entityManager.saveChanges().then(() => {
128
- if (!deleteOperation) {
129
- this.uiNotification.success(this.appEnvironment.msgSaveSuccessful);
130
- this.appEnvironment.saveComplete({ successful: true });
131
- }
132
- resolve();
133
- }).catch((e) => {
134
- this.appEnvironment.saveComplete({ successful: false });
135
- reject(e);
136
- }).finally(() => {
137
- this.appEnvironment.isSaving = false;
138
- this.propertyChanged(null);
139
- });
140
- });
141
- };
142
- this.saveWithoutNotification = () => {
143
- return new Promise((resolve, reject) => {
144
- if (this.appEnvironment.isSaving) {
145
- this.uiNotification.error(this.appEnvironment.msgSaveInProgress);
146
- resolve();
147
- return;
148
- }
149
- this.appEnvironment.isSaving = true;
150
- this.entityManager.saveChanges().then(() => {
151
- this.appEnvironment.saveComplete({ successful: true });
152
- resolve();
153
- }).catch((e) => {
154
- this.appEnvironment.saveComplete({ successful: false });
155
- reject(e);
156
- }).finally(() => {
157
- this.appEnvironment.isSaving = false;
158
- this.propertyChanged(null);
159
- });
160
- });
161
- };
162
- this.revert = () => {
163
- this.uiNotification.confirm('Confirm Action', 'Revert ' + this.hasChanges().length + ' changed record(s)', true, true, "No", "Yes").then((confirm) => {
164
- if (confirm) {
165
- this.entityManager.rejectChanges();
166
- this.appEnvironment.revertComplete({ successful: true });
167
- }
168
- });
169
- };
170
- this.revertWithoutPrompt = () => {
171
- this.revert();
172
- this.appEnvironment.revertComplete({ successful: true });
173
- };
174
- this.delete = (entities, confirmMsg, onSuccess = undefined) => {
175
- var newEntities = [];
176
- var existingEntities = [];
177
- entities.forEach(function (e) {
178
- if (e.entityAspect.entityState.isAdded())
179
- newEntities.push(e);
180
- else
181
- existingEntities.push(e);
182
- });
183
- if (newEntities.length && existingEntities.length) {
184
- this.uiNotification.warning(this.appEnvironment.msgCannotDeleteNewAndExistingRecords);
185
- return;
186
- }
187
- if (existingEntities.length) {
188
- if (this.hasChanges().length) {
189
- this.uiNotification.warning(this.appEnvironment.msgDirtyPreventsDeleteExistingRecord);
190
- return;
191
- }
192
- }
193
- this.uiNotification.confirm('Confirm Action', confirmMsg, true, true, "No", "Yes").then((confirm) => {
194
- if (confirm) {
195
- if (newEntities.length) {
196
- newEntities.forEach((entity) => {
197
- entity.entityAspect.clearValidationErrors();
198
- });
199
- this.markForDelete(newEntities);
200
- if (onSuccess)
201
- onSuccess();
202
- return;
203
- }
204
- try {
205
- this.markForDelete(existingEntities);
206
- }
207
- catch (exception) {
208
- this.uiNotification.error(exception.message);
209
- return;
210
- }
211
- this.save(null, true).then(() => {
212
- var entitiesDeleted = this._pendingDeleteEntities.concat(this._pendingCascadeDeleteEntities);
213
- this.appEnvironment.deleteComplete({ successful: true, entities: entitiesDeleted });
214
- if (entitiesDeleted.length) {
215
- this._pendingCascadeDeleteEntities = [];
216
- this._pendingDeleteEntities = [];
217
- }
218
- this.uiNotification.success(this.appEnvironment.msgDeleteSuccessful);
219
- if (onSuccess)
220
- onSuccess(true);
221
- }).catch((error) => {
222
- this.revert();
223
- }).finally(() => { });
224
- }
225
- });
226
- };
227
- this._breezeContext = this.breezeContextFactory.createContext();
228
- this.entityAccessor.context = this;
229
- this.entityManager.entityChanged.subscribe((changeArgs) => {
230
- if (changeArgs.entityAction === EntityAction.PropertyChange || changeArgs.entityAction === EntityAction.RejectChanges)
231
- this.propertyChanged(changeArgs);
232
- });
233
- }
234
- onPropertyChanged() {
235
- return this._propertyChanged$;
236
- }
237
- propertyChanged(changeArgs) {
238
- this._propertyChanged$.next(changeArgs);
239
- }
240
- onDataChanged() {
241
- return this._dataChanged$;
242
- }
243
- dataChanged(change) {
244
- this._dataChanged$.next(change);
245
- }
246
- get breezeContext() {
247
- return this._breezeContext;
248
- }
249
- get entityManager() {
250
- return this._breezeContext.entityManager;
251
- }
252
- }
253
- TruDataContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataContext, deps: [{ token: i1.TruBreezeContextFactory }, { token: i2.TruAppEnvironment }, { token: i3.TruEntityAccessor }, { token: i4.TruUiNotification }], target: i0.ɵɵFactoryTarget.Injectable });
254
- TruDataContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataContext });
255
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataContext, decorators: [{
256
- type: Injectable
257
- }], ctorParameters: function () { return [{ type: i1.TruBreezeContextFactory }, { type: i2.TruAppEnvironment }, { type: i3.TruEntityAccessor }, { type: i4.TruUiNotification }]; } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVSxZQUFZLEVBQTBCLFdBQVcsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFLdkgsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUkzQyxNQUFNLE9BQU8sY0FBYztJQVF6QixZQUNVLG9CQUE2QyxFQUM3QyxjQUFpQyxFQUNqQyxjQUFpQyxFQUNqQyxjQUFpQztRQUhqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzdDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBWG5DLHNCQUFpQixHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3JELGtCQUFhLEdBQTJCLElBQUksT0FBTyxFQUFpQixDQUFDO1FBR3JFLDJCQUFzQixHQUFrQixFQUFFLENBQUM7UUFDM0Msa0NBQTZCLEdBQWtCLEVBQUUsQ0FBQztRQWlDMUQsOEJBQXlCLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDOUQsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsd0JBQW1CLEdBQUcsQ0FBQyxXQUFpQyxJQUFJLEVBQU8sRUFBRTtZQUNuRSxRQUFR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T0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQztJQUMzQyxDQUFDOzsyR0FuSVUsY0FBYzsrR0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVudGl0eSwgRW50aXR5QWN0aW9uLCBFbnRpdHlDaGFuZ2VkRXZlbnRBcmdzLCBFbnRpdHlTdGF0ZSwgRW50aXR5VHlwZSwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgVHJ1QnJlZXplQ29udGV4dEZhY3RvcnksIFRydUJyZWV6ZUNvbnRleHQgfSBmcm9tICcuL3RydS1icmVlemUtY29udGV4dC1mYWN0b3J5JztcclxuaW1wb3J0IHsgVHJ1RW50aXR5QWNjZXNzb3IgfSBmcm9tICcuL3RydS1lbnRpdHktYWNjZXNzb3InO1xyXG5pbXBvcnQgeyBUcnVVaU5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdHJ1LXVpLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ2hhbmdlIH0gZnJvbSAnLi4vY2xhc3Nlcy90cnUtZGF0YS1jaGFuZ2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJ1RGF0YUNvbnRleHQge1xyXG4gIHByaXZhdGUgX3Byb3BlcnR5Q2hhbmdlZCQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwcml2YXRlIF9kYXRhQ2hhbmdlZCQ6IFN1YmplY3Q8VHJ1RGF0YUNoYW5nZT4gPSBuZXcgU3ViamVjdDxUcnVEYXRhQ2hhbmdlPigpO1xyXG5cclxuICBwcml2YXRlIF9icmVlemVDb250ZXh0OiBUcnVCcmVlemVDb250ZXh0O1xyXG4gIHByaXZhdGUgX3BlbmRpbmdEZWxldGVFbnRpdGllczogQXJyYXk8RW50aXR5PiA9IFtdO1xyXG4gIHByaXZhdGUgX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXM6IEFycmF5PEVudGl0eT4gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGJyZWV6ZUNvbnRleHRGYWN0b3J5OiBUcnVCcmVlemVDb250ZXh0RmFjdG9yeSxcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSBlbnRpdHlBY2Nlc3NvcjogVHJ1RW50aXR5QWNjZXNzb3IsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvblxyXG4gICkge1xyXG4gICAgdGhpcy5fYnJlZXplQ29udGV4dCA9IHRoaXMuYnJlZXplQ29udGV4dEZhY3RvcnkuY3JlYXRlQ29udGV4dCgpO1xyXG4gICAgdGhpcy5lbnRpdHlBY2Nlc3Nvci5jb250ZXh0ID0gdGhpcztcclxuXHJcbiAgICB0aGlzLmVudGl0eU1hbmFnZXIuZW50aXR5Q2hhbmdlZC5zdWJzY3JpYmUoKGNoYW5nZUFyZ3M6IEVudGl0eUNoYW5nZWRFdmVudEFyZ3MpID0+IHtcclxuICAgICAgaWYgKGNoYW5nZUFyZ3MuZW50aXR5QWN0aW9uID09PSBFbnRpdHlBY3Rpb24uUHJvcGVydHlDaGFuZ2UgfHwgY2hhbmdlQXJncy5lbnRpdHlBY3Rpb24gPT09IEVudGl0eUFjdGlvbi5SZWplY3RDaGFuZ2VzKVxyXG4gICAgICAgIHRoaXMucHJvcGVydHlDaGFuZ2VkKGNoYW5nZUFyZ3MpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblByb3BlcnR5Q2hhbmdlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eUNoYW5nZWQkO1xyXG4gIH1cclxuXHJcbiAgcHJvcGVydHlDaGFuZ2VkKGNoYW5nZUFyZ3M6IEVudGl0eUNoYW5nZWRFdmVudEFyZ3MgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9wcm9wZXJ0eUNoYW5nZWQkLm5leHQoY2hhbmdlQXJncyk7XHJcbiAgfVxyXG5cclxuICBvbkRhdGFDaGFuZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGFDaGFuZ2VkJDtcclxuICB9XHJcblxyXG4gIGRhdGFDaGFuZ2VkKGNoYW5nZTogVHJ1RGF0YUNoYW5nZSkge1xyXG4gICAgdGhpcy5fZGF0YUNoYW5nZWQkLm5leHQoY2hhbmdlKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRpb25DaGFuZ2VEZXRlY3Rpb24gPSBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcclxuICAgIHRoaXMuZW50aXR5TWFuYWdlci52YWxpZGF0aW9uRXJyb3JzQ2hhbmdlZC5zdWJzY3JpYmUoZW50aXRpZXMgPT4ge1xyXG4gICAgICBvYnNlcnZlci5uZXh0KGVudGl0aWVzKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICBnZXRWYWxpZGF0aW9uRXJyb3JzID0gKGVudGl0aWVzOiBBcnJheTxFbnRpdHk+IHwgbnVsbCA9IG51bGwpOiBhbnkgPT4ge1xyXG4gICAgZW50aXRpZXMgPSBlbnRpdGllcyB8fCB0aGlzLmVudGl0eU1hbmFnZXIuZ2V0Q2hhbmdlcygpO1xyXG4gICAgdmFyIGVycm9yc1BlckVudGl0eSA9IGVudGl0aWVzIS5tYXAoKGVudGl0eSk6IFZhbGlkYXRpb25FcnJvcltdID0+IHtcclxuICAgICAgdmFyIGVycm9ycyA9IGVudGl0eS5lbnRpdHlBc3BlY3QuZ2V0VmFsaWRhdGlvbkVycm9ycygpO1xyXG4gICAgICBlcnJvcnMgPSBlcnJvcnMubWFwKChlcnI6IGFueSk6IGFueSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGVudGl0eTogZW50aXR5LFxyXG4gICAgICAgICAgZXJyb3JNZXNzYWdlOiBlcnIuZXJyb3JNZXNzYWdlLFxyXG4gICAgICAgICAgcHJvcGVydHk6IGVyci5wcm9wZXJ0eVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBlcnJvcnM7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBlcnJvcnNQZXJFbnRpdHk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdFZhbGlkYXRpb25FcnJvcnMgPSAoZW50aXRpZXM6IEFycmF5PEVudGl0eT4gfCBudWxsID0gbnVsbCk6IEFycmF5PHN0cmluZ1tdPiA9PiB7XHJcbiAgICBsZXQgZW50aXRpZXNXaXRoRXJyb3JzID0gdGhpcy5nZXRWYWxpZGF0aW9uRXJyb3JzKGVudGl0aWVzKTtcclxuICAgIGxldCBmb3JtYXR0ZWRFcnJvcnMgPSBuZXcgQXJyYXk8c3RyaW5nW10+KCk7XHJcbiAgICBlbnRpdGllc1dpdGhFcnJvcnMuZm9yRWFjaCgoZW50aXR5V2l0aEVycm9yczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChlbnRpdHlXaXRoRXJyb3JzLmxlbmd0aCkge1xyXG4gICAgICAgIGZvcm1hdHRlZEVycm9ycy5wdXNoKGVudGl0eVdpdGhFcnJvcnMubWFwKChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChlLnByb3BlcnR5TmFtZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZS5lbnRpdHkuZW50aXR5VHlwZS5kZWZhdWx0UmVzb3VyY2VOYW1lICsgJy4nICsgZS5wcm9wZXJ0eU5hbWUgKyAnOiAnICsgZS5lcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YXIgbWVyZ2VEYXRhID0gSlNPTi5wYXJzZShlLmVudGl0eS5NZXJnZV9EYXRhKTtcclxuICAgICAgICAgIGlmIChtZXJnZURhdGEgJiZcclxuICAgICAgICAgICAgbWVyZ2VEYXRhLmNvbnN0cnVjdG9yID09PSBPYmplY3QgJiZcclxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMobWVyZ2VEYXRhKS5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgIG1lcmdlRGF0YVtlLnByb3BlcnR5Lm5hbWVdKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtZXJnZURhdGFbZS5wcm9wZXJ0eS5uYW1lXS5tb2RpZmllZEJ5ICsgJyBjaGFuZ2VkICcgKyBlLnByb3BlcnR5Lm5hbWUgKyAnIHRvICcgKyBtZXJnZURhdGFbZS5wcm9wZXJ0eS5uYW1lXS52YWx1ZSArICcuIEFjY2VwdCBvciBEZWNsaW5lIHRoZSBjaGFuZ2UuICdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBlLnByb3BlcnR5Lm5hbWUgPyBlLnByb3BlcnR5Lm5hbWUgOiAnW1Vua25vd24gUHJvcGVydHldJztcclxuICAgICAgICAgIHJldHVybiBlLmVudGl0eS5lbnRpdHlUeXBlLmRlZmF1bHRSZXNvdXJjZU5hbWUgKyAnLicgKyBwcm9wZXJ0eU5hbWUgKyAnOiBoYXMgaW52YWxpZCBkYXRhLidcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvcnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmRDYWNoZWRDYXNjYWRlRGVsZXRlRGVzY2VuZGFudHMgPSAoZW50aXR5OiBFbnRpdHkpOiBBcnJheTxFbnRpdHk+ID0+IHtcclxuICAgIGxldCBkZXNjZW5kYW50czogQXJyYXk8RW50aXR5PiA9IFtdO1xyXG4gICAgdHlwZSBrZXlPZkVudGl0eSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBsZXQgdHlwZSA9IGVudGl0eS5lbnRpdHlUeXBlO1xyXG4gICAgbGV0IHR5cGVOYW1lID0gdHlwZS5kZWZhdWx0UmVzb3VyY2VOYW1lO1xyXG4gICAgbGV0IGVudGl0eUNoaWxkcmVuTmFtZXM6IGFueSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoJ1JlcGxhY2Ugd2l0aDogTW9kZWxOYXZpZ2F0aW9uUHJvcGVydGllcy52YWx1ZScpKVt0eXBlTmFtZV07XHJcbiAgICBPYmplY3QuZW50cmllcyhlbnRpdHlDaGlsZHJlbk5hbWVzKVxyXG4gICAgICAuZm9yRWFjaCgoW2ssIHZdOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgcHJvcGVydHkgPSBlbnRpdHlbayBhcyBrZXlPZkVudGl0eV0gYXMgYW55O1xyXG4gICAgICAgIHByb3BlcnR5LmZvckVhY2goKGNoaWxkOiBFbnRpdHkpID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgdi5kb2VzQ2FzY2FkZURlbGV0ZSAmJiBjaGlsZC5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUgIT09IEVudGl0eVN0YXRlLkFkZGVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGVsZXRlIG9mIHNlbGVjdGVkIGl0ZW0gaXMgbm90IHBvc3NpYmxlIGR1ZSB0byByZWxhdGVkIGNoaWxkIHRoYXQgaXMgbm90IHNldHVwIGZvciBjYXNjYWRlIGRlbGV0ZS4gIERlbGV0ZSBjaGlsZHJlbiBpdGVtcyBmaXJzdC4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlc2NlbmRhbnRzID0gZGVzY2VuZGFudHMuY29uY2F0KHRoaXMuZmluZENhY2hlZENhc2NhZGVEZWxldGVEZXNjZW5kYW50cyhjaGlsZCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRlc2NlbmRhbnRzID0gcHJvcGVydHkuY29uY2F0KGRlc2NlbmRhbnRzKTtcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gZGVzY2VuZGFudHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hcmtDYWNoZWREZXNjZW5kYW50c0ZvckRlbGV0ZSA9IChlbnRpdGllczogQXJyYXk8RW50aXR5PikgPT4ge1xyXG4gICAgdmFyIGNhc2NhZGVEZWxldGVEZXNjZW5kYW50c1BlckVudGl0eSA9IGVudGl0aWVzLm1hcCgoZW50aXR5OiBFbnRpdHkpID0+IHsgcmV0dXJuIHRoaXMuZmluZENhY2hlZENhc2NhZGVEZWxldGVEZXNjZW5kYW50cyhlbnRpdHkpOyB9LCBlbnRpdGllcyk7XHJcbiAgICB2YXIgY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzID0gY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzUGVyRW50aXR5LnJlZHVjZSgobWVtbywgaSkgPT4geyByZXR1cm4gbWVtby5jb25jYXQoaSk7IH0pO1xyXG4gICAgY2FzY2FkZURlbGV0ZURlc2NlbmRhbnRzLmZvckVhY2goKGVudGl0eTogRW50aXR5KSA9PiB7IHRoaXMuZW50aXR5TWFuYWdlci5kZXRhY2hFbnRpdHkoZW50aXR5KTsgfSk7XHJcbiAgICB0aGlzLl9wZW5kaW5nRGVsZXRlRW50aXRpZXMgPSB0aGlzLl9wZW5kaW5nRGVsZXRlRW50aXRpZXMuY29uY2F0KGVudGl0aWVzKTtcclxuICAgIGxldCBjb21iaW5lZCA9IHRoaXMuX3BlbmRpbmdDYXNjYWRlRGVsZXRlRW50aXRpZXMuY29uY2F0KGNhc2NhZGVEZWxldGVEZXNjZW5kYW50cyk7XHJcbiAgICB0aGlzLl9wZW5kaW5nQ2FzY2FkZURlbGV0ZUVudGl0aWVzID0gY29tYmluZWQuZmlsdGVyKChuLCBpKSA9PiBjb21iaW5lZC5pbmRleE9mKG4pID09PSBpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFya0ZvckRlbGV0ZSA9IChlbnRpdGllczogQXJyYXk8RW50aXR5PikgPT4ge1xyXG4gICAgaWYgKGVudGl0aWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5tYXJrQ2FjaGVkRGVzY2VuZGFudHNGb3JEZWxldGUoZW50aXRpZXMpO1xyXG4gICAgICBlbnRpdGllcy5mb3JFYWNoKChlbnRpdHk6IEVudGl0eSkgPT4ge1xyXG4gICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3Quc2V0RGVsZXRlZCgpO1xyXG4gICAgICAgIC8vZW50aXR5Ll9hc3NvY2lhdGVkRGF0YUNhY2hlZCA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBicmVlemVDb250ZXh0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2JyZWV6ZUNvbnRleHQ7XHJcbiAgfVxyXG5cclxuICBnZXQgZW50aXR5TWFuYWdlcigpIHtcclxuICAgIHJldHVybiB0aGlzLl9icmVlemVDb250ZXh0LmVudGl0eU1hbmFnZXI7XHJcbiAgfVxyXG5cclxuICBoYXNDaGFuZ2VzID0gKGVudGl0eVR5cGVzOiBBcnJheTxFbnRpdHlUeXBlPiA9IFtdKSA9PiB7XHJcbiAgICBpZiAoZW50aXR5VHlwZXMubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gdGhpcy5fYnJlZXplQ29udGV4dC5lbnRpdHlNYW5hZ2VyLmdldENoYW5nZXMoZW50aXR5VHlwZXMpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2JyZWV6ZUNvbnRleHQuZW50aXR5TWFuYWdlci5nZXRDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBlbnRpdHlBY2Nlc3MgPSAoKTogVHJ1RW50aXR5QWNjZXNzb3IgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5QWNjZXNzb3I7XHJcbiAgfVxyXG5cclxuICBleHBvcnRDYWhjZSA9ICgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuX2JyZWV6ZUNvbnRleHQuZW50aXR5TWFuYWdlci5leHBvcnRFbnRpdGllcygpKTtcclxuICB9XHJcblxyXG4gIHNhdmUgPSAoXHJcbiAgICBlbnRpdGllczogQXJyYXk8RW50aXR5PiB8IG51bGwgPSBudWxsLFxyXG4gICAgZGVsZXRlT3BlcmF0aW9uOiBib29sZWFuID0gZmFsc2UpID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmFwcEVudmlyb25tZW50LmlzU2F2aW5nKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmFwcEVudmlyb25tZW50Lm1zZ1NhdmVJblByb2dyZXNzKTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciB2YWxpZGF0aW9uRXJyb3JNZXNzYWdlcyA9IHRoaXMuZm9ybWF0VmFsaWRhdGlvbkVycm9ycyhlbnRpdGllcyk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uRXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmFwcEVudmlyb25tZW50Lm1zZ0ludmFsaWREYXRhLCB2YWxpZGF0aW9uRXJyb3JNZXNzYWdlc1swXSk7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLmhhc0NoYW5nZXMoKS5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLndhcm5pbmcodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dOb0NoYW5nZXNUb1NhdmUpO1xyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5pc1NhdmluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuZW50aXR5TWFuYWdlci5zYXZlQ2hhbmdlcygpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGlmICghZGVsZXRlT3BlcmF0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLnN1Y2Nlc3ModGhpcy5hcHBFbnZpcm9ubWVudC5tc2dTYXZlU3VjY2Vzc2Z1bCk7XHJcbiAgICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LnNhdmVDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgfSkuY2F0Y2goKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuc2F2ZUNvbXBsZXRlKHsgc3VjY2Vzc2Z1bDogZmFsc2UgfSk7XHJcbiAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICB9KS5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICB0aGlzLmFwcEVudmlyb25tZW50LmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZWQobnVsbCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlV2l0aG91dE5vdGlmaWNhdGlvbiA9ICgpID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7IFxyXG4gICAgICBpZiAodGhpcy5hcHBFbnZpcm9ubWVudC5pc1NhdmluZykge1xyXG4gICAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcih0aGlzLmFwcEVudmlyb25tZW50Lm1zZ1NhdmVJblByb2dyZXNzKTtcclxuICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwcEVudmlyb25tZW50LmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5lbnRpdHlNYW5hZ2VyLnNhdmVDaGFuZ2VzKCkudGhlbigoKSA9PiB7IFxyXG4gICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuc2F2ZUNvbXBsZXRlKHsgc3VjY2Vzc2Z1bDogdHJ1ZSB9KTtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH0pLmNhdGNoKChlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuc2F2ZUNvbXBsZXRlKHsgc3VjY2Vzc2Z1bDogZmFsc2UgfSk7XHJcbiAgICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZWQobnVsbCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXZlcnQgPSAoKTogdm9pZCA9PiB7XHJcbiAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmNvbmZpcm0oJ0NvbmZpcm0gQWN0aW9uJywgJ1JldmVydCAnICsgdGhpcy5oYXNDaGFuZ2VzKCkubGVuZ3RoICsgJyBjaGFuZ2VkIHJlY29yZChzKScsIHRydWUsIHRydWUsIFwiTm9cIiwgXCJZZXNcIikudGhlbigoY29uZmlybTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoY29uZmlybSkge1xyXG4gICAgICAgIHRoaXMuZW50aXR5TWFuYWdlci5yZWplY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5hcHBFbnZpcm9ubWVudC5yZXZlcnRDb21wbGV0ZSh7IHN1Y2Nlc3NmdWw6IHRydWUgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV2ZXJ0V2l0aG91dFByb21wdCA9ICgpOiB2b2lkID0+IHtcclxuICAgIHRoaXMucmV2ZXJ0KCk7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50LnJldmVydENvbXBsZXRlKHsgc3VjY2Vzc2Z1bDogdHJ1ZSB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZSA9IChcclxuICAgIGVudGl0aWVzOiBBcnJheTxFbnRpdHk+LFxyXG4gICAgY29uZmlybU1zZzogc3RyaW5nLFxyXG4gICAgb25TdWNjZXNzOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkgPT4ge1xyXG4gICAgdmFyIG5ld0VudGl0aWVzOiBBcnJheTxFbnRpdHk+ID0gW107XHJcbiAgICB2YXIgZXhpc3RpbmdFbnRpdGllczogQXJyYXk8RW50aXR5PiA9IFtdO1xyXG4gICAgZW50aXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICBpZiAoZS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNBZGRlZCgpKVxyXG4gICAgICAgIG5ld0VudGl0aWVzLnB1c2goZSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBleGlzdGluZ0VudGl0aWVzLnB1c2goZSk7XHJcbiAgICB9KTtcclxuICAgIGlmIChuZXdFbnRpdGllcy5sZW5ndGggJiYgZXhpc3RpbmdFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi53YXJuaW5nKHRoaXMuYXBwRW52aXJvbm1lbnQubXNnQ2Fubm90RGVsZXRlTmV3QW5kRXhpc3RpbmdSZWNvcmRzKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKGV4aXN0aW5nRW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc0NoYW5nZXMoKS5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLndhcm5pbmcodGhpcy5hcHBFbnZpcm9ubWVudC5tc2dEaXJ0eVByZXZlbnRzRGVsZXRlRXhpc3RpbmdSZWNvcmQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudWlOb3RpZmljYXRpb24uY29uZmlybSgnQ29uZmlybSBBY3Rpb24nLCBjb25maXJtTXNnLCB0cnVlLCB0cnVlLCBcIk5vXCIsIFwiWWVzXCIpLnRoZW4oKGNvbmZpcm06IGJvb2xlYW4pID0+IHtcclxuICAgICAgaWYgKGNvbmZpcm0pIHtcclxuICAgICAgICBpZiAobmV3RW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBuZXdFbnRpdGllcy5mb3JFYWNoKChlbnRpdHk6IEVudGl0eSkgPT4ge1xyXG4gICAgICAgICAgICBlbnRpdHkuZW50aXR5QXNwZWN0LmNsZWFyVmFsaWRhdGlvbkVycm9ycygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLm1hcmtGb3JEZWxldGUobmV3RW50aXRpZXMpO1xyXG4gICAgICAgICAgaWYgKG9uU3VjY2Vzcykgb25TdWNjZXNzKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLm1hcmtGb3JEZWxldGUoZXhpc3RpbmdFbnRpdGllcyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uOiBhbnkpIHtcclxuICAgICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uZXJyb3IoZXhjZXB0aW9uLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNhdmUobnVsbCwgdHJ1ZSkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICB2YXIgZW50aXRpZXNEZWxldGVkID0gdGhpcy5fcGVuZGluZ0RlbGV0ZUVudGl0aWVzLmNvbmNhdCh0aGlzLl9wZW5kaW5nQ2FzY2FkZURlbGV0ZUVudGl0aWVzKTtcclxuICAgICAgICAgIHRoaXMuYXBwRW52aXJvbm1lbnQuZGVsZXRlQ29tcGxldGUoeyBzdWNjZXNzZnVsOiB0cnVlLCBlbnRpdGllczogZW50aXRpZXNEZWxldGVkIH0pO1xyXG4gICAgICAgICAgaWYgKGVudGl0aWVzRGVsZXRlZC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0Nhc2NhZGVEZWxldGVFbnRpdGllcyA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLl9wZW5kaW5nRGVsZXRlRW50aXRpZXMgPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uc3VjY2Vzcyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ0RlbGV0ZVN1Y2Nlc3NmdWwpO1xyXG4gICAgICAgICAgaWYgKG9uU3VjY2Vzcykgb25TdWNjZXNzKHRydWUpO1xyXG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZXZlcnQoKTtcclxuICAgICAgICB9KS5maW5hbGx5KCgpID0+IHsgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=