@abp/ng.theme.shared 7.2.2 → 7.3.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/README.md +129 -2
  2. package/{esm2020 → esm2022}/abp-ng.theme.shared.mjs +4 -4
  3. package/{esm2020 → esm2022}/extensions/abp-ng.theme.shared-extensions.mjs +4 -4
  4. package/esm2022/extensions/lib/adapters/date-time.adapter.mjs +45 -0
  5. package/esm2022/extensions/lib/adapters/date.adapter.mjs +42 -0
  6. package/esm2022/extensions/lib/adapters/time.adapter.mjs +37 -0
  7. package/esm2022/extensions/lib/components/abstract-actions/abstract-actions.component.mjs +26 -0
  8. package/esm2022/extensions/lib/components/date-time-picker/date-time-picker.component.mjs +110 -0
  9. package/esm2022/extensions/lib/components/extensible-form/extensible-form-prop.component.mjs +199 -0
  10. package/esm2022/extensions/lib/components/extensible-form/extensible-form.component.mjs +74 -0
  11. package/esm2022/extensions/lib/components/extensible-table/extensible-table.component.mjs +137 -0
  12. package/esm2022/extensions/lib/components/grid-actions/grid-actions.component.mjs +40 -0
  13. package/esm2022/extensions/lib/components/page-toolbar/page-toolbar.component.mjs +39 -0
  14. package/{esm2020 → esm2022}/extensions/lib/constants/extra-properties.mjs +1 -1
  15. package/esm2022/extensions/lib/directives/disabled.directive.mjs +30 -0
  16. package/esm2022/extensions/lib/directives/prop-data.directive.mjs +42 -0
  17. package/{esm2020 → esm2022}/extensions/lib/enums/components.mjs +1 -1
  18. package/{esm2020 → esm2022}/extensions/lib/enums/props.enum.mjs +1 -1
  19. package/{esm2020 → esm2022}/extensions/lib/models/actions.mjs +46 -46
  20. package/{esm2020 → esm2022}/extensions/lib/models/entity-actions.mjs +28 -28
  21. package/esm2022/extensions/lib/models/entity-props.mjs +44 -0
  22. package/esm2022/extensions/lib/models/form-props.mjs +76 -0
  23. package/{esm2020 → esm2022}/extensions/lib/models/internal/object-extensions.mjs +2 -2
  24. package/{esm2020 → esm2022}/extensions/lib/models/object-extensions.mjs +2 -2
  25. package/esm2022/extensions/lib/models/props.mjs +54 -0
  26. package/{esm2020 → esm2022}/extensions/lib/models/toolbar-actions.mjs +43 -43
  27. package/esm2022/extensions/lib/pipes/create-injector.pipe.mjs +37 -0
  28. package/esm2022/extensions/lib/services/extensions.service.mjs +25 -0
  29. package/{esm2020 → esm2022}/extensions/lib/tokens/extensible-form-view-provider.token.mjs +2 -2
  30. package/{esm2020 → esm2022}/extensions/lib/tokens/extensions.token.mjs +11 -11
  31. package/esm2022/extensions/lib/ui-extensions.module.mjs +100 -0
  32. package/{esm2020 → esm2022}/extensions/lib/utils/actions.util.mjs +8 -8
  33. package/{esm2020 → esm2022}/extensions/lib/utils/enum.util.mjs +41 -41
  34. package/{esm2020 → esm2022}/extensions/lib/utils/factory.util.mjs +3 -3
  35. package/esm2022/extensions/lib/utils/form-props.util.mjs +51 -0
  36. package/{esm2020 → esm2022}/extensions/lib/utils/localization.util.mjs +12 -12
  37. package/{esm2020 → esm2022}/extensions/lib/utils/props.util.mjs +13 -13
  38. package/esm2022/extensions/lib/utils/state.util.mjs +126 -0
  39. package/{esm2020 → esm2022}/extensions/lib/utils/typeahead.util.mjs +51 -51
  40. package/{esm2020 → esm2022}/extensions/lib/utils/validation.util.mjs +10 -10
  41. package/{esm2020 → esm2022}/extensions/public-api.mjs +30 -30
  42. package/{esm2020 → esm2022}/lib/animations/bounce.animations.mjs +16 -16
  43. package/{esm2020 → esm2022}/lib/animations/collapse.animations.mjs +49 -49
  44. package/{esm2020 → esm2022}/lib/animations/fade.animations.mjs +37 -37
  45. package/{esm2020 → esm2022}/lib/animations/index.mjs +6 -6
  46. package/{esm2020 → esm2022}/lib/animations/modal.animations.mjs +10 -10
  47. package/{esm2020 → esm2022}/lib/animations/slide.animations.mjs +7 -7
  48. package/{esm2020 → esm2022}/lib/animations/toast.animations.mjs +12 -12
  49. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +44 -0
  50. package/esm2022/lib/components/breadcrumb-items/breadcrumb-items.component.mjs +20 -0
  51. package/esm2022/lib/components/button/button.component.mjs +103 -0
  52. package/{esm2020 → esm2022}/lib/components/card/card-body.component.mjs +27 -26
  53. package/esm2022/lib/components/card/card-footer.component.mjs +31 -0
  54. package/esm2022/lib/components/card/card-header.component.mjs +31 -0
  55. package/esm2022/lib/components/card/card-header.directive.mjs +20 -0
  56. package/esm2022/lib/components/card/card-img-top.directive.mjs +20 -0
  57. package/esm2022/lib/components/card/card-subtitle.directive.mjs +20 -0
  58. package/esm2022/lib/components/card/card-title.directive.mjs +20 -0
  59. package/esm2022/lib/components/card/card.component.mjs +24 -0
  60. package/esm2022/lib/components/card/card.module.mjs +50 -0
  61. package/{esm2020 → esm2022}/lib/components/card/index.mjs +9 -9
  62. package/esm2022/lib/components/checkbox/checkbox.component.mjs +89 -0
  63. package/esm2022/lib/components/confirmation/confirmation.component.mjs +46 -0
  64. package/esm2022/lib/components/form-input/form-input.component.mjs +95 -0
  65. package/esm2022/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +60 -0
  66. package/{esm2020 → esm2022}/lib/components/index.mjs +16 -16
  67. package/esm2022/lib/components/loader-bar/loader-bar.component.mjs +122 -0
  68. package/esm2022/lib/components/loading/loading.component.mjs +20 -0
  69. package/esm2022/lib/components/modal/modal-close.directive.mjs +28 -0
  70. package/esm2022/lib/components/modal/modal-ref.service.mjs +27 -0
  71. package/esm2022/lib/components/modal/modal.component.mjs +190 -0
  72. package/esm2022/lib/components/password/password.component.mjs +39 -0
  73. package/esm2022/lib/components/toast/toast.component.mjs +56 -0
  74. package/esm2022/lib/components/toast-container/toast-container.component.mjs +59 -0
  75. package/{esm2020 → esm2022}/lib/constants/styles.mjs +1 -1
  76. package/{esm2020 → esm2022}/lib/constants/validation.mjs +19 -19
  77. package/esm2022/lib/directives/ellipsis.directive.mjs +65 -0
  78. package/{esm2020 → esm2022}/lib/directives/index.mjs +5 -5
  79. package/esm2022/lib/directives/loading.directive.mjs +90 -0
  80. package/esm2022/lib/directives/ngx-datatable-default.directive.mjs +76 -0
  81. package/esm2022/lib/directives/ngx-datatable-list.directive.mjs +95 -0
  82. package/esm2022/lib/directives/visible.directive.mjs +63 -0
  83. package/{esm2020 → esm2022}/lib/enums/form.mjs +5 -5
  84. package/{esm2020 → esm2022}/lib/enums/index.mjs +2 -2
  85. package/{esm2020 → esm2022}/lib/enums/route-names.mjs +1 -1
  86. package/esm2022/lib/handlers/document-dir.handler.mjs +32 -0
  87. package/esm2022/lib/handlers/error.handler.mjs +294 -0
  88. package/{esm2020 → esm2022}/lib/handlers/index.mjs +2 -2
  89. package/{esm2020 → esm2022}/lib/models/common.mjs +1 -1
  90. package/{esm2020 → esm2022}/lib/models/confirmation.mjs +9 -9
  91. package/{esm2020 → esm2022}/lib/models/index.mjs +7 -7
  92. package/{esm2020 → esm2022}/lib/models/nav-item.mjs +5 -5
  93. package/{esm2020 → esm2022}/lib/models/statistics.mjs +1 -1
  94. package/{esm2020 → esm2022}/lib/models/toaster.mjs +1 -1
  95. package/{esm2020 → esm2022}/lib/models/user-menu.mjs +3 -3
  96. package/{esm2020 → esm2022}/lib/models/validation.mjs +1 -1
  97. package/{esm2020 → esm2022}/lib/providers/index.mjs +2 -2
  98. package/{esm2020 → esm2022}/lib/providers/ng-bootstrap-config.provider.mjs +16 -16
  99. package/{esm2020 → esm2022}/lib/providers/route.provider.mjs +17 -17
  100. package/{esm2020 → esm2022}/lib/services/abstract-menu.service.mjs +49 -49
  101. package/esm2022/lib/services/confirmation.service.mjs +69 -0
  102. package/{esm2020 → esm2022}/lib/services/index.mjs +5 -5
  103. package/esm2022/lib/services/nav-items.service.mjs +18 -0
  104. package/esm2022/lib/services/page-alert.service.mjs +29 -0
  105. package/esm2022/lib/services/toaster.service.mjs +104 -0
  106. package/esm2022/lib/services/user-menu.service.mjs +18 -0
  107. package/esm2022/lib/theme-shared.module.mjs +202 -0
  108. package/{esm2020 → esm2022}/lib/tokens/append-content.token.mjs +10 -10
  109. package/{esm2020 → esm2022}/lib/tokens/confirmation-icons.token.mjs +10 -10
  110. package/{esm2020 → esm2022}/lib/tokens/http-error.token.mjs +13 -13
  111. package/{esm2020 → esm2022}/lib/tokens/index.mjs +4 -4
  112. package/{esm2020 → esm2022}/lib/tokens/ngx-datatable-messages.token.mjs +7 -7
  113. package/{esm2020 → esm2022}/lib/tokens/suppress-unsaved-changes-warning.token.mjs +2 -2
  114. package/esm2022/lib/utils/date-parser-formatter.mjs +59 -0
  115. package/{esm2020 → esm2022}/lib/utils/index.mjs +2 -2
  116. package/{esm2020 → esm2022}/lib/utils/validation-utils.mjs +61 -61
  117. package/{esm2020 → esm2022}/public-api.mjs +15 -15
  118. package/{esm2020 → esm2022}/testing/abp-ng.theme.shared-testing.mjs +4 -4
  119. package/{esm2020 → esm2022}/testing/lib/models/config.mjs +1 -1
  120. package/{esm2020 → esm2022}/testing/lib/models/index.mjs +1 -1
  121. package/esm2022/testing/lib/theme-shared-testing.module.mjs +47 -0
  122. package/{esm2020 → esm2022}/testing/public-api.mjs +3 -3
  123. package/extensions/index.d.ts +5 -5
  124. package/extensions/lib/adapters/date-time.adapter.d.ts +11 -11
  125. package/extensions/lib/adapters/date.adapter.d.ts +9 -9
  126. package/extensions/lib/adapters/time.adapter.d.ts +8 -8
  127. package/extensions/lib/components/abstract-actions/abstract-actions.component.d.ts +12 -12
  128. package/extensions/lib/components/date-time-picker/date-time-picker.component.d.ts +16 -16
  129. package/extensions/lib/components/extensible-form/extensible-form-prop.component.d.ts +43 -43
  130. package/extensions/lib/components/extensible-form/extensible-form.component.d.ts +25 -25
  131. package/extensions/lib/components/extensible-table/extensible-table.component.d.ts +38 -38
  132. package/extensions/lib/components/grid-actions/grid-actions.component.d.ts +13 -13
  133. package/extensions/lib/components/page-toolbar/page-toolbar.component.d.ts +20 -20
  134. package/extensions/lib/constants/extra-properties.d.ts +1 -1
  135. package/extensions/lib/directives/disabled.directive.d.ts +11 -11
  136. package/extensions/lib/directives/prop-data.directive.d.ts +19 -19
  137. package/extensions/lib/enums/components.d.ts +3 -3
  138. package/extensions/lib/enums/props.enum.d.ts +16 -16
  139. package/extensions/lib/models/actions.d.ts +36 -36
  140. package/extensions/lib/models/entity-actions.d.ts +22 -22
  141. package/extensions/lib/models/entity-props.d.ts +30 -29
  142. package/extensions/lib/models/form-props.d.ts +59 -58
  143. package/extensions/lib/models/internal/object-extensions.d.ts +86 -85
  144. package/extensions/lib/models/object-extensions.d.ts +2 -2
  145. package/extensions/lib/models/props.d.ts +45 -44
  146. package/extensions/lib/models/toolbar-actions.d.ts +38 -38
  147. package/extensions/lib/pipes/create-injector.pipe.d.ts +8 -8
  148. package/extensions/lib/services/extensions.service.d.ts +14 -14
  149. package/extensions/lib/tokens/extensible-form-view-provider.token.d.ts +5 -5
  150. package/extensions/lib/tokens/extensions.token.d.ts +20 -24
  151. package/extensions/lib/ui-extensions.module.d.ts +24 -24
  152. package/extensions/lib/utils/actions.util.d.ts +7 -7
  153. package/extensions/lib/utils/enum.util.d.ts +7 -7
  154. package/extensions/lib/utils/factory.util.d.ts +1 -1
  155. package/extensions/lib/utils/form-props.util.d.ts +3 -3
  156. package/extensions/lib/utils/localization.util.d.ts +3 -3
  157. package/extensions/lib/utils/props.util.d.ts +9 -9
  158. package/extensions/lib/utils/state.util.d.ts +5 -5
  159. package/extensions/lib/utils/typeahead.util.d.ts +11 -11
  160. package/extensions/lib/utils/validation.util.d.ts +3 -3
  161. package/extensions/public-api.d.ts +30 -30
  162. package/{fesm2020 → fesm2022}/abp-ng.theme.shared-extensions.mjs +1340 -1331
  163. package/fesm2022/abp-ng.theme.shared-extensions.mjs.map +1 -0
  164. package/{fesm2020 → fesm2022}/abp-ng.theme.shared-testing.mjs +40 -40
  165. package/{fesm2015 → fesm2022}/abp-ng.theme.shared-testing.mjs.map +1 -1
  166. package/{fesm2020 → fesm2022}/abp-ng.theme.shared.mjs +2292 -2290
  167. package/fesm2022/abp-ng.theme.shared.mjs.map +1 -0
  168. package/index.d.ts +5 -5
  169. package/lib/animations/bounce.animations.d.ts +1 -1
  170. package/lib/animations/collapse.animations.d.ts +9 -9
  171. package/lib/animations/fade.animations.d.ts +10 -10
  172. package/lib/animations/index.d.ts +6 -6
  173. package/lib/animations/modal.animations.d.ts +2 -2
  174. package/lib/animations/slide.animations.d.ts +1 -1
  175. package/lib/animations/toast.animations.d.ts +1 -1
  176. package/lib/components/breadcrumb/breadcrumb.component.d.ts +16 -16
  177. package/lib/components/breadcrumb-items/breadcrumb-items.component.d.ts +7 -7
  178. package/lib/components/button/button.component.d.ts +26 -26
  179. package/lib/components/card/card-body.component.d.ts +8 -8
  180. package/lib/components/card/card-footer.component.d.ts +8 -8
  181. package/lib/components/card/card-header.component.d.ts +8 -8
  182. package/lib/components/card/card-header.directive.d.ts +6 -6
  183. package/lib/components/card/card-img-top.directive.d.ts +6 -6
  184. package/lib/components/card/card-subtitle.directive.d.ts +6 -6
  185. package/lib/components/card/card-title.directive.d.ts +6 -6
  186. package/lib/components/card/card.component.d.ts +7 -7
  187. package/lib/components/card/card.module.d.ts +15 -15
  188. package/lib/components/card/index.d.ts +9 -9
  189. package/lib/components/checkbox/checkbox.component.d.ts +18 -18
  190. package/lib/components/confirmation/confirmation.component.d.ts +19 -19
  191. package/lib/components/form-input/form-input.component.d.ts +19 -19
  192. package/lib/components/http-error-wrapper/http-error-wrapper.component.d.ts +27 -27
  193. package/lib/components/index.d.ts +16 -16
  194. package/lib/components/loader-bar/loader-bar.component.d.ts +33 -33
  195. package/lib/components/loading/loading.component.d.ts +5 -5
  196. package/lib/components/modal/modal-close.directive.d.ts +9 -9
  197. package/lib/components/modal/modal-ref.service.d.ts +13 -13
  198. package/lib/components/modal/modal.component.d.ts +50 -50
  199. package/lib/components/password/password.component.d.ts +12 -12
  200. package/lib/components/toast/toast.component.d.ts +14 -14
  201. package/lib/components/toast-container/toast-container.component.d.ts +22 -22
  202. package/lib/constants/styles.d.ts +2 -2
  203. package/lib/constants/validation.d.ts +19 -19
  204. package/lib/directives/ellipsis.directive.d.ts +21 -21
  205. package/lib/directives/index.d.ts +5 -5
  206. package/lib/directives/loading.directive.d.ts +25 -25
  207. package/lib/directives/ngx-datatable-default.directive.d.ts +30 -30
  208. package/lib/directives/ngx-datatable-list.directive.d.ts +24 -24
  209. package/lib/directives/visible.directive.d.ts +18 -18
  210. package/lib/enums/form.d.ts +4 -4
  211. package/lib/enums/index.d.ts +2 -2
  212. package/lib/enums/route-names.d.ts +3 -3
  213. package/lib/handlers/document-dir.handler.d.ts +13 -13
  214. package/lib/handlers/error.handler.d.ts +83 -83
  215. package/lib/handlers/index.d.ts +2 -2
  216. package/lib/models/common.d.ts +21 -21
  217. package/lib/models/confirmation.d.ts +27 -27
  218. package/lib/models/index.d.ts +7 -7
  219. package/lib/models/nav-item.d.ts +13 -13
  220. package/lib/models/statistics.d.ts +12 -12
  221. package/lib/models/toaster.d.ts +30 -30
  222. package/lib/models/user-menu.d.ts +8 -8
  223. package/lib/models/validation.d.ts +1 -1
  224. package/lib/providers/index.d.ts +2 -2
  225. package/lib/providers/ng-bootstrap-config.provider.d.ts +8 -8
  226. package/lib/providers/route.provider.d.ts +8 -8
  227. package/lib/services/abstract-menu.service.d.ts +13 -13
  228. package/lib/services/confirmation.service.d.ts +21 -21
  229. package/lib/services/index.d.ts +5 -5
  230. package/lib/services/nav-items.service.d.ts +8 -8
  231. package/lib/services/page-alert.service.d.ts +18 -18
  232. package/lib/services/toaster.service.d.ts +60 -60
  233. package/lib/services/user-menu.service.d.ts +8 -8
  234. package/lib/theme-shared.module.d.ts +38 -38
  235. package/lib/tokens/append-content.token.d.ts +2 -2
  236. package/lib/tokens/confirmation-icons.token.d.ts +11 -11
  237. package/lib/tokens/http-error.token.d.ts +5 -5
  238. package/lib/tokens/index.d.ts +4 -4
  239. package/lib/tokens/ngx-datatable-messages.token.d.ts +12 -12
  240. package/lib/tokens/suppress-unsaved-changes-warning.token.d.ts +2 -2
  241. package/lib/utils/date-parser-formatter.d.ts +12 -12
  242. package/lib/utils/index.d.ts +2 -2
  243. package/lib/utils/validation-utils.d.ts +5 -5
  244. package/package.json +28 -24
  245. package/public-api.d.ts +12 -12
  246. package/testing/index.d.ts +5 -5
  247. package/testing/lib/models/config.d.ts +4 -4
  248. package/testing/lib/models/index.d.ts +1 -1
  249. package/testing/lib/theme-shared-testing.module.d.ts +14 -14
  250. package/testing/public-api.d.ts +3 -3
  251. package/esm2020/extensions/lib/adapters/date-time.adapter.mjs +0 -44
  252. package/esm2020/extensions/lib/adapters/date.adapter.mjs +0 -41
  253. package/esm2020/extensions/lib/adapters/time.adapter.mjs +0 -36
  254. package/esm2020/extensions/lib/components/abstract-actions/abstract-actions.component.mjs +0 -25
  255. package/esm2020/extensions/lib/components/date-time-picker/date-time-picker.component.mjs +0 -109
  256. package/esm2020/extensions/lib/components/extensible-form/extensible-form-prop.component.mjs +0 -198
  257. package/esm2020/extensions/lib/components/extensible-form/extensible-form.component.mjs +0 -73
  258. package/esm2020/extensions/lib/components/extensible-table/extensible-table.component.mjs +0 -135
  259. package/esm2020/extensions/lib/components/grid-actions/grid-actions.component.mjs +0 -39
  260. package/esm2020/extensions/lib/components/page-toolbar/page-toolbar.component.mjs +0 -38
  261. package/esm2020/extensions/lib/directives/disabled.directive.mjs +0 -29
  262. package/esm2020/extensions/lib/directives/prop-data.directive.mjs +0 -41
  263. package/esm2020/extensions/lib/models/entity-props.mjs +0 -43
  264. package/esm2020/extensions/lib/models/form-props.mjs +0 -75
  265. package/esm2020/extensions/lib/models/props.mjs +0 -53
  266. package/esm2020/extensions/lib/pipes/create-injector.pipe.mjs +0 -36
  267. package/esm2020/extensions/lib/services/extensions.service.mjs +0 -24
  268. package/esm2020/extensions/lib/ui-extensions.module.mjs +0 -95
  269. package/esm2020/extensions/lib/utils/form-props.util.mjs +0 -51
  270. package/esm2020/extensions/lib/utils/state.util.mjs +0 -123
  271. package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +0 -43
  272. package/esm2020/lib/components/breadcrumb-items/breadcrumb-items.component.mjs +0 -19
  273. package/esm2020/lib/components/button/button.component.mjs +0 -102
  274. package/esm2020/lib/components/card/card-footer.component.mjs +0 -30
  275. package/esm2020/lib/components/card/card-header.component.mjs +0 -30
  276. package/esm2020/lib/components/card/card-header.directive.mjs +0 -19
  277. package/esm2020/lib/components/card/card-img-top.directive.mjs +0 -19
  278. package/esm2020/lib/components/card/card-subtitle.directive.mjs +0 -19
  279. package/esm2020/lib/components/card/card-title.directive.mjs +0 -19
  280. package/esm2020/lib/components/card/card.component.mjs +0 -23
  281. package/esm2020/lib/components/card/card.module.mjs +0 -49
  282. package/esm2020/lib/components/checkbox/checkbox.component.mjs +0 -88
  283. package/esm2020/lib/components/confirmation/confirmation.component.mjs +0 -45
  284. package/esm2020/lib/components/form-input/form-input.component.mjs +0 -94
  285. package/esm2020/lib/components/http-error-wrapper/http-error-wrapper.component.mjs +0 -59
  286. package/esm2020/lib/components/loader-bar/loader-bar.component.mjs +0 -121
  287. package/esm2020/lib/components/loading/loading.component.mjs +0 -19
  288. package/esm2020/lib/components/modal/modal-close.directive.mjs +0 -27
  289. package/esm2020/lib/components/modal/modal-ref.service.mjs +0 -26
  290. package/esm2020/lib/components/modal/modal.component.mjs +0 -189
  291. package/esm2020/lib/components/password/password.component.mjs +0 -38
  292. package/esm2020/lib/components/toast/toast.component.mjs +0 -55
  293. package/esm2020/lib/components/toast-container/toast-container.component.mjs +0 -58
  294. package/esm2020/lib/directives/ellipsis.directive.mjs +0 -63
  295. package/esm2020/lib/directives/loading.directive.mjs +0 -89
  296. package/esm2020/lib/directives/ngx-datatable-default.directive.mjs +0 -75
  297. package/esm2020/lib/directives/ngx-datatable-list.directive.mjs +0 -94
  298. package/esm2020/lib/directives/visible.directive.mjs +0 -62
  299. package/esm2020/lib/handlers/document-dir.handler.mjs +0 -31
  300. package/esm2020/lib/handlers/error.handler.mjs +0 -291
  301. package/esm2020/lib/services/confirmation.service.mjs +0 -68
  302. package/esm2020/lib/services/nav-items.service.mjs +0 -17
  303. package/esm2020/lib/services/page-alert.service.mjs +0 -28
  304. package/esm2020/lib/services/toaster.service.mjs +0 -103
  305. package/esm2020/lib/services/user-menu.service.mjs +0 -17
  306. package/esm2020/lib/theme-shared.module.mjs +0 -200
  307. package/esm2020/lib/utils/date-parser-formatter.mjs +0 -58
  308. package/esm2020/testing/lib/theme-shared-testing.module.mjs +0 -46
  309. package/fesm2015/abp-ng.theme.shared-extensions.mjs +0 -1460
  310. package/fesm2015/abp-ng.theme.shared-extensions.mjs.map +0 -1
  311. package/fesm2015/abp-ng.theme.shared-testing.mjs +0 -54
  312. package/fesm2015/abp-ng.theme.shared.mjs +0 -2767
  313. package/fesm2015/abp-ng.theme.shared.mjs.map +0 -1
  314. package/fesm2020/abp-ng.theme.shared-extensions.mjs.map +0 -1
  315. package/fesm2020/abp-ng.theme.shared-testing.mjs.map +0 -1
  316. package/fesm2020/abp-ng.theme.shared.mjs.map +0 -1
@@ -1,62 +0,0 @@
1
- import { Directive, Input, ViewContainerRef, TemplateRef } from '@angular/core';
2
- import { EMPTY, from, Observable, of } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class AbpVisibleDirective {
5
- constructor(viewContainerRef, templateRef) {
6
- this.viewContainerRef = viewContainerRef;
7
- this.templateRef = templateRef;
8
- this.condition$ = of(false);
9
- }
10
- set abpVisible(value) {
11
- this.condition$ = checkType(value);
12
- this.subscribeToCondition();
13
- }
14
- ngOnInit() {
15
- this.updateVisibility();
16
- }
17
- ngOnDestroy() {
18
- this.conditionSubscription?.unsubscribe();
19
- }
20
- subscribeToCondition() {
21
- this.conditionSubscription = this.condition$.subscribe(value => {
22
- this.isVisible = value;
23
- this.updateVisibility();
24
- });
25
- }
26
- updateVisibility() {
27
- this.viewContainerRef.clear();
28
- // it should be false not falsy
29
- if (this.isVisible === false) {
30
- return;
31
- }
32
- this.viewContainerRef.createEmbeddedView(this.templateRef);
33
- }
34
- }
35
- AbpVisibleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpVisibleDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
36
- AbpVisibleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: AbpVisibleDirective, selector: "[abpVisible]", inputs: { abpVisible: "abpVisible" }, ngImport: i0 });
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AbpVisibleDirective, decorators: [{
38
- type: Directive,
39
- args: [{
40
- selector: '[abpVisible]',
41
- }]
42
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { abpVisible: [{
43
- type: Input
44
- }] } });
45
- function checkType(value) {
46
- if (value instanceof Promise) {
47
- return from(value);
48
- }
49
- else if (value instanceof Observable) {
50
- return value;
51
- }
52
- else if (typeof value === 'boolean') {
53
- return of(value);
54
- }
55
- else if (value === undefined || value === null) {
56
- return of(true);
57
- }
58
- else {
59
- return EMPTY;
60
- }
61
- }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9kaXJlY3RpdmVzL3Zpc2libGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxTQUFTLEVBQWEsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQzs7QUFLakUsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixZQUNVLGdCQUFrQyxFQUNsQyxXQUFpQztRQURqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUFzQjtRQUpuQyxlQUFVLEdBQXdCLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUtqRCxDQUFDO0lBWkosSUFBYSxVQUFVLENBQ3JCLEtBQTBFO1FBRTFFLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFRRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ08sZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QiwrQkFBK0I7UUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtZQUM1QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7O2dIQXJDVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO2lCQUN6QjtpSUFLYyxVQUFVO3NCQUF0QixLQUFLOztBQW9DUixTQUFTLFNBQVMsQ0FBQyxLQUEwRTtJQUMzRixJQUFJLEtBQUssWUFBWSxPQUFPLEVBQUU7UUFDNUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDcEI7U0FBTSxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7UUFDdEMsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2xCO1NBQU0sSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7UUFDaEQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakI7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25Jbml0LCBEaXJlY3RpdmUsIE9uRGVzdHJveSwgSW5wdXQsIFZpZXdDb250YWluZXJSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVNUFRZLCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thYnBWaXNpYmxlXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBYnBWaXNpYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIGNvbmRpdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xyXG4gIGlzVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KCkgc2V0IGFicFZpc2libGUoXHJcbiAgICB2YWx1ZTogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgdW5kZWZpbmVkIHwgbnVsbCxcclxuICApIHtcclxuICAgIHRoaXMuY29uZGl0aW9uJCA9IGNoZWNrVHlwZSh2YWx1ZSk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvQ29uZGl0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbmRpdGlvbiQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBvZihmYWxzZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4sXHJcbiAgKSB7fVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25kaXRpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZVRvQ29uZGl0aW9uKCkge1xyXG4gICAgdGhpcy5jb25kaXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmNvbmRpdGlvbiQuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgdGhpcy5pc1Zpc2libGUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmlsaXR5KCkge1xyXG4gICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICAvLyBpdCBzaG91bGQgYmUgZmFsc2Ugbm90IGZhbHN5XHJcbiAgICBpZiAodGhpcy5pc1Zpc2libGUgPT09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja1R5cGUodmFsdWU6IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+IHwgT2JzZXJ2YWJsZTxib29sZWFuPiB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICByZXR1cm4gZnJvbSh2YWx1ZSk7XHJcbiAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICByZXR1cm4gb2YodmFsdWUpO1xyXG4gIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gRU1QVFk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,31 +0,0 @@
1
- import { getLocaleDirection, LocalizationService } from '@abp/ng.core';
2
- import { Injectable, Injector } from '@angular/core';
3
- import { BehaviorSubject } from 'rxjs';
4
- import { map } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- export class DocumentDirHandlerService {
7
- constructor(injector) {
8
- this.injector = injector;
9
- this.dir = new BehaviorSubject('ltr');
10
- this.dir$ = this.dir.asObservable();
11
- this.listenToLanguageChanges();
12
- }
13
- listenToLanguageChanges() {
14
- const l10n = this.injector.get(LocalizationService);
15
- // will always listen, no need to unsubscribe
16
- l10n.currentLang$.pipe(map(locale => getLocaleDirection(locale))).subscribe(dir => {
17
- this.dir.next(dir);
18
- this.setBodyDir(dir);
19
- });
20
- }
21
- setBodyDir(dir) {
22
- document.body.dir = dir;
23
- document.dir = dir;
24
- }
25
- }
26
- DocumentDirHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentDirHandlerService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
27
- DocumentDirHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentDirHandlerService });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DocumentDirHandlerService, decorators: [{
29
- type: Injectable
30
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZGlyLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9oYW5kbGVycy9kb2N1bWVudC1kaXIuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBSXJDLE1BQU0sT0FBTyx5QkFBeUI7SUFHcEMsWUFBc0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUZoQyxRQUFHLEdBQUcsSUFBSSxlQUFlLENBQWtCLEtBQUssQ0FBQyxDQUFDO1FBQzFELFNBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNwRCw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoRixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFvQjtRQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDeEIsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDckIsQ0FBQzs7c0hBbkJVLHlCQUF5QjswSEFBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2NhbGVEaXJlY3Rpb24sIExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBMb2NhbGVEaXJlY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMvY29tbW9uJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERvY3VtZW50RGlySGFuZGxlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgZGlyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMb2NhbGVEaXJlY3Rpb24+KCdsdHInKTtcclxuICBkaXIkID0gdGhpcy5kaXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgdGhpcy5saXN0ZW5Ub0xhbmd1YWdlQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0ZW5Ub0xhbmd1YWdlQ2hhbmdlcygpIHtcclxuICAgIGNvbnN0IGwxMG4gPSB0aGlzLmluamVjdG9yLmdldChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcclxuICAgIC8vIHdpbGwgYWx3YXlzIGxpc3Rlbiwgbm8gbmVlZCB0byB1bnN1YnNjcmliZVxyXG4gICAgbDEwbi5jdXJyZW50TGFuZyQucGlwZShtYXAobG9jYWxlID0+IGdldExvY2FsZURpcmVjdGlvbihsb2NhbGUpKSkuc3Vic2NyaWJlKGRpciA9PiB7XHJcbiAgICAgIHRoaXMuZGlyLm5leHQoZGlyKTtcclxuICAgICAgdGhpcy5zZXRCb2R5RGlyKGRpcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Qm9keURpcihkaXI6IExvY2FsZURpcmVjdGlvbikge1xyXG4gICAgZG9jdW1lbnQuYm9keS5kaXIgPSBkaXI7XHJcbiAgICBkb2N1bWVudC5kaXIgPSBkaXI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,291 +0,0 @@
1
- import { AuthService, HttpErrorReporterService, RouterEvents, } from '@abp/ng.core';
2
- import { HttpErrorResponse } from '@angular/common/http';
3
- import { ApplicationRef, ComponentFactoryResolver, Injectable, Injector, RendererFactory2, } from '@angular/core';
4
- import { ResolveEnd } from '@angular/router';
5
- import { Observable, of, Subject, throwError } from 'rxjs';
6
- import { catchError, filter, switchMap } from 'rxjs/operators';
7
- import { HttpErrorWrapperComponent } from '../components/http-error-wrapper/http-error-wrapper.component';
8
- import { ConfirmationService } from '../services/confirmation.service';
9
- import { HTTP_ERROR_HANDLER } from '../tokens/http-error.token';
10
- import * as i0 from "@angular/core";
11
- export const DEFAULT_ERROR_MESSAGES = {
12
- defaultError: {
13
- title: 'An error has occurred!',
14
- details: 'Error detail not sent by server.',
15
- },
16
- defaultError401: {
17
- title: 'You are not authenticated!',
18
- details: 'You should be authenticated (sign in) in order to perform this operation.',
19
- },
20
- defaultError403: {
21
- title: 'You are not authorized!',
22
- details: 'You are not allowed to perform this operation.',
23
- },
24
- defaultError404: {
25
- title: 'Resource not found!',
26
- details: 'The resource requested could not found on the server.',
27
- },
28
- defaultError500: {
29
- title: 'Internal server error',
30
- details: 'Error detail not sent by server.',
31
- },
32
- };
33
- export const DEFAULT_ERROR_LOCALIZATIONS = {
34
- defaultError: {
35
- title: 'AbpUi::DefaultErrorMessage',
36
- details: 'AbpUi::DefaultErrorMessageDetail',
37
- },
38
- defaultError401: {
39
- title: 'AbpUi::DefaultErrorMessage401',
40
- details: 'AbpUi::DefaultErrorMessage401Detail',
41
- },
42
- defaultError403: {
43
- title: 'AbpUi::DefaultErrorMessage403',
44
- details: 'AbpUi::DefaultErrorMessage403Detail',
45
- },
46
- defaultError404: {
47
- title: 'AbpUi::DefaultErrorMessage404',
48
- details: 'AbpUi::DefaultErrorMessage404Detail',
49
- },
50
- defaultError500: {
51
- title: 'AbpUi::500Message',
52
- details: 'AbpUi::DefaultErrorMessage',
53
- },
54
- };
55
- export class ErrorHandler {
56
- constructor(injector) {
57
- this.injector = injector;
58
- this.componentRef = null;
59
- this.httpErrorHandler = this.injector.get(HTTP_ERROR_HANDLER, (_, err) => throwError(err));
60
- this.executeErrorHandler = (error) => {
61
- const returnValue = this.httpErrorHandler(this.injector, error);
62
- return (returnValue instanceof Observable ? returnValue : of(null)).pipe(catchError(err => {
63
- this.handleError(err);
64
- return of(null);
65
- }));
66
- };
67
- this.filterRestErrors = ({ status }) => {
68
- if (typeof status !== 'number')
69
- return false;
70
- return (!!this.httpErrorConfig.skipHandledErrorCodes &&
71
- this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === status) < 0);
72
- };
73
- this.filterRouteErrors = (navigationError) => {
74
- return (navigationError.error?.message?.indexOf('Cannot match') > -1 &&
75
- !!this.httpErrorConfig.skipHandledErrorCodes &&
76
- this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === 404) < 0);
77
- };
78
- this.httpErrorReporter = injector.get(HttpErrorReporterService);
79
- this.routerEvents = injector.get(RouterEvents);
80
- this.confirmationService = injector.get(ConfirmationService);
81
- this.cfRes = injector.get(ComponentFactoryResolver);
82
- this.rendererFactory = injector.get(RendererFactory2);
83
- this.httpErrorConfig = injector.get('HTTP_ERROR_CONFIG');
84
- this.authService = this.injector.get(AuthService);
85
- this.listenToRestError();
86
- this.listenToRouterError();
87
- this.listenToRouterDataResolved();
88
- }
89
- listenToRouterError() {
90
- this.routerEvents
91
- .getNavigationEvents('Error')
92
- .pipe(filter(this.filterRouteErrors))
93
- .subscribe(() => this.show404Page());
94
- }
95
- listenToRouterDataResolved() {
96
- this.routerEvents
97
- .getEvents(ResolveEnd)
98
- .pipe(filter(() => !!this.componentRef))
99
- .subscribe(() => {
100
- this.componentRef?.destroy();
101
- this.componentRef = null;
102
- });
103
- }
104
- listenToRestError() {
105
- this.httpErrorReporter.reporter$
106
- .pipe(filter(this.filterRestErrors), switchMap(this.executeErrorHandler))
107
- .subscribe();
108
- }
109
- handleError(err) {
110
- const body = err?.error?.error || {
111
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
112
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
113
- };
114
- if (err instanceof HttpErrorResponse && err.headers.get('_AbpErrorFormat')) {
115
- const confirmation$ = this.showErrorWithRequestBody(body);
116
- if (err.status === 401) {
117
- confirmation$.subscribe(() => {
118
- this.navigateToLogin();
119
- });
120
- }
121
- }
122
- if (err instanceof HttpErrorResponse && err.headers.get('Abp-Tenant-Resolve-Error')) {
123
- this.authService.logout().subscribe();
124
- }
125
- else {
126
- switch (err.status) {
127
- case 401:
128
- this.canCreateCustomError(401)
129
- ? this.show401Page()
130
- : this.showError({
131
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.title,
132
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.title,
133
- }, {
134
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.details,
135
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.details,
136
- }).subscribe(() => this.navigateToLogin());
137
- break;
138
- case 403:
139
- this.createErrorComponent({
140
- title: {
141
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError403.title,
142
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError403.title,
143
- },
144
- details: {
145
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError403.details,
146
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError403.details,
147
- },
148
- status: 403,
149
- });
150
- break;
151
- case 404: {
152
- this.canCreateCustomError(404)
153
- ? this.show404Page()
154
- : this.showError({
155
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.details,
156
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.details,
157
- }, {
158
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.title,
159
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.title,
160
- });
161
- break;
162
- }
163
- case 500:
164
- this.createErrorComponent({
165
- title: {
166
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError500.title,
167
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError500.title,
168
- },
169
- details: {
170
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError500.details,
171
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError500.details,
172
- },
173
- status: 500,
174
- });
175
- break;
176
- case 0:
177
- if (err.statusText === 'Unknown Error') {
178
- this.createErrorComponent({
179
- title: {
180
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
181
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
182
- },
183
- details: err.message,
184
- isHomeShow: false,
185
- });
186
- }
187
- break;
188
- default:
189
- this.showError({
190
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.details,
191
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.details,
192
- }, {
193
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
194
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
195
- });
196
- break;
197
- }
198
- }
199
- }
200
- show401Page() {
201
- this.createErrorComponent({
202
- title: {
203
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError401.title,
204
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError401.title,
205
- },
206
- status: 401,
207
- });
208
- }
209
- show404Page() {
210
- this.createErrorComponent({
211
- title: {
212
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError404.title,
213
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError404.title,
214
- },
215
- status: 404,
216
- });
217
- }
218
- showErrorWithRequestBody(body) {
219
- let message;
220
- let title;
221
- if (body.details) {
222
- message = body.details;
223
- title = body.message;
224
- }
225
- else if (body.message) {
226
- title = {
227
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
228
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
229
- };
230
- message = body.message;
231
- }
232
- else {
233
- message = body.message || {
234
- key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
235
- defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
236
- };
237
- title = '';
238
- }
239
- return this.showError(message, title);
240
- }
241
- showError(message, title) {
242
- return this.confirmationService.error(message, title, {
243
- hideCancelBtn: true,
244
- yesText: 'AbpAccount::Close',
245
- });
246
- }
247
- navigateToLogin() {
248
- this.authService.navigateToLogin();
249
- }
250
- createErrorComponent(instance) {
251
- const renderer = this.rendererFactory.createRenderer(null, null);
252
- const host = renderer.selectRootElement(document.body, true);
253
- this.componentRef = this.cfRes
254
- .resolveComponentFactory(HttpErrorWrapperComponent)
255
- .create(this.injector);
256
- for (const key in instance) {
257
- /* istanbul ignore else */
258
- if (Object.prototype.hasOwnProperty.call(this.componentRef.instance, key)) {
259
- this.componentRef.instance[key] = instance[key];
260
- }
261
- }
262
- this.componentRef.instance.hideCloseIcon = !!this.httpErrorConfig.errorScreen?.hideCloseIcon;
263
- const appRef = this.injector.get(ApplicationRef);
264
- if (this.canCreateCustomError(instance.status)) {
265
- this.componentRef.instance.cfRes = this.cfRes;
266
- this.componentRef.instance.appRef = appRef;
267
- this.componentRef.instance.injector = this.injector;
268
- this.componentRef.instance.customComponent = this.httpErrorConfig.errorScreen?.component;
269
- }
270
- appRef.attachView(this.componentRef.hostView);
271
- renderer.appendChild(host, this.componentRef.hostView.rootNodes[0]);
272
- const destroy$ = new Subject();
273
- this.componentRef.instance.destroy$ = destroy$;
274
- destroy$.subscribe(() => {
275
- this.componentRef?.destroy();
276
- this.componentRef = null;
277
- });
278
- }
279
- canCreateCustomError(status) {
280
- return !!(this.httpErrorConfig?.errorScreen?.component &&
281
- this.httpErrorConfig?.errorScreen?.forWhichErrors &&
282
- this.httpErrorConfig?.errorScreen?.forWhichErrors.indexOf(status) > -1);
283
- }
284
- }
285
- ErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ErrorHandler, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
286
- ErrorHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ErrorHandler, providedIn: 'root' });
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ErrorHandler, decorators: [{
288
- type: Injectable,
289
- args: [{ providedIn: 'root' }]
290
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
291
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9zcmMvbGliL2hhbmRsZXJzL2Vycm9yLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCx3QkFBd0IsRUFFeEIsWUFBWSxHQUNiLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxjQUFjLEVBQ2Qsd0JBQXdCLEVBR3hCLFVBQVUsRUFDVixRQUFRLEVBQ1IsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUcxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFaEUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsWUFBWSxFQUFFO1FBQ1osS0FBSyxFQUFFLHdCQUF3QjtRQUMvQixPQUFPLEVBQUUsa0NBQWtDO0tBQzVDO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsS0FBSyxFQUFFLDRCQUE0QjtRQUNuQyxPQUFPLEVBQUUsMkVBQTJFO0tBQ3JGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsS0FBSyxFQUFFLHlCQUF5QjtRQUNoQyxPQUFPLEVBQUUsZ0RBQWdE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LGVBQWUsRUFBRSxXQUFXLEVBQUUsU0FBUztZQUM1QyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxjQUFjO1lBQ2pELElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7SUFDSixDQUFDOzt5R0F6UVUsWUFBWTs2R0FBWixZQUFZLGNBREMsTUFBTTsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEF1dGhTZXJ2aWNlLFxyXG4gIEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSxcclxuICBMb2NhbGl6YXRpb25QYXJhbSxcclxuICBSb3V0ZXJFdmVudHMsXHJcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbmplY3RvcixcclxuICBSZW5kZXJlckZhY3RvcnkyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXJyb3IsIFJlc29sdmVFbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cEVycm9yV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvaHR0cC1lcnJvci13cmFwcGVyL2h0dHAtZXJyb3Itd3JhcHBlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFcnJvclNjcmVlbkVycm9yQ29kZXMsIEh0dHBFcnJvckNvbmZpZyB9IGZyb20gJy4uL21vZGVscy9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlybWF0aW9uJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSFRUUF9FUlJPUl9IQU5ETEVSIH0gZnJvbSAnLi4vdG9rZW5zL2h0dHAtZXJyb3IudG9rZW4nO1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVJST1JfTUVTU0FHRVMgPSB7XHJcbiAgZGVmYXVsdEVycm9yOiB7XHJcbiAgICB0aXRsZTogJ0FuIGVycm9yIGhhcyBvY2N1cnJlZCEnLFxyXG4gICAgZGV0YWlsczogJ0Vycm9yIGRldGFpbCBub3Qgc2VudCBieSBzZXJ2ZXIuJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjQwMToge1xyXG4gICAgdGl0bGU6ICdZb3UgYXJlIG5vdCBhdXRoZW50aWNhdGVkIScsXHJcbiAgICBkZXRhaWxzOiAnWW91IHNob3VsZCBiZSBhdXRoZW50aWNhdGVkIChzaWduIGluKSBpbiBvcmRlciB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLicsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I0MDM6IHtcclxuICAgIHRpdGxlOiAnWW91IGFyZSBub3QgYXV0aG9yaXplZCEnLFxyXG4gICAgZGV0YWlsczogJ1lvdSBhcmUgbm90IGFsbG93ZWQgdG8gcGVyZm9ybSB0aGlzIG9wZXJhdGlvbi4nLFxyXG4gIH0sXHJcbiAgZGVmYXVsdEVycm9yNDA0OiB7XHJcbiAgICB0aXRsZTogJ1Jlc291cmNlIG5vdCBmb3VuZCEnLFxyXG4gICAgZGV0YWlsczogJ1RoZSByZXNvdXJjZSByZXF1ZXN0ZWQgY291bGQgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjUwMDoge1xyXG4gICAgdGl0bGU6ICdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3InLFxyXG4gICAgZGV0YWlsczogJ0Vycm9yIGRldGFpbCBub3Qgc2VudCBieSBzZXJ2ZXIuJyxcclxuICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUyA9IHtcclxuICBkZWZhdWx0RXJyb3I6IHtcclxuICAgIHRpdGxlOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2UnLFxyXG4gICAgZGV0YWlsczogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlRGV0YWlsJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjQwMToge1xyXG4gICAgdGl0bGU6ICdBYnBVaTo6RGVmYXVsdEVycm9yTWVzc2FnZTQwMScsXHJcbiAgICBkZXRhaWxzOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2U0MDFEZXRhaWwnLFxyXG4gIH0sXHJcbiAgZGVmYXVsdEVycm9yNDAzOiB7XHJcbiAgICB0aXRsZTogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlNDAzJyxcclxuICAgIGRldGFpbHM6ICdBYnBVaTo6RGVmYXVsdEVycm9yTWVzc2FnZTQwM0RldGFpbCcsXHJcbiAgfSxcclxuICBkZWZhdWx0RXJyb3I0MDQ6IHtcclxuICAgIHRpdGxlOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2U0MDQnLFxyXG4gICAgZGV0YWlsczogJ0FicFVpOjpEZWZhdWx0RXJyb3JNZXNzYWdlNDA0RGV0YWlsJyxcclxuICB9LFxyXG4gIGRlZmF1bHRFcnJvcjUwMDoge1xyXG4gICAgdGl0bGU6ICdBYnBVaTo6NTAwTWVzc2FnZScsXHJcbiAgICBkZXRhaWxzOiAnQWJwVWk6OkRlZmF1bHRFcnJvck1lc3NhZ2UnLFxyXG4gIH0sXHJcbn07XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgRXJyb3JIYW5kbGVyIHtcclxuICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxIdHRwRXJyb3JXcmFwcGVyQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcm90ZWN0ZWQgaHR0cEVycm9ySGFuZGxlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KEhUVFBfRVJST1JfSEFORExFUiwgKF8sIGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+XHJcbiAgICB0aHJvd0Vycm9yKGVyciksXHJcbiAgKTtcclxuXHJcbiAgcHJvdGVjdGVkIGh0dHBFcnJvclJlcG9ydGVyOiBIdHRwRXJyb3JSZXBvcnRlclNlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIHJvdXRlckV2ZW50czogUm91dGVyRXZlbnRzO1xyXG4gIHByb3RlY3RlZCBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlO1xyXG4gIHByb3RlY3RlZCBjZlJlczogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyO1xyXG4gIHByb3RlY3RlZCByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTI7XHJcbiAgcHJvdGVjdGVkIGh0dHBFcnJvckNvbmZpZzogSHR0cEVycm9yQ29uZmlnO1xyXG4gIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICB0aGlzLmh0dHBFcnJvclJlcG9ydGVyID0gaW5qZWN0b3IuZ2V0KEh0dHBFcnJvclJlcG9ydGVyU2VydmljZSk7XHJcbiAgICB0aGlzLnJvdXRlckV2ZW50cyA9IGluamVjdG9yLmdldChSb3V0ZXJFdmVudHMpO1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KENvbmZpcm1hdGlvblNlcnZpY2UpO1xyXG4gICAgdGhpcy5jZlJlcyA9IGluamVjdG9yLmdldChDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpO1xyXG4gICAgdGhpcy5yZW5kZXJlckZhY3RvcnkgPSBpbmplY3Rvci5nZXQoUmVuZGVyZXJGYWN0b3J5Mik7XHJcbiAgICB0aGlzLmh0dHBFcnJvckNvbmZpZyA9IGluamVjdG9yLmdldCgnSFRUUF9FUlJPUl9DT05GSUcnKTtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChBdXRoU2VydmljZSk7XHJcblxyXG4gICAgdGhpcy5saXN0ZW5Ub1Jlc3RFcnJvcigpO1xyXG4gICAgdGhpcy5saXN0ZW5Ub1JvdXRlckVycm9yKCk7XHJcbiAgICB0aGlzLmxpc3RlblRvUm91dGVyRGF0YVJlc29sdmVkKCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbGlzdGVuVG9Sb3V0ZXJFcnJvcigpIHtcclxuICAgIHRoaXMucm91dGVyRXZlbnRzXHJcbiAgICAgIC5nZXROYXZpZ2F0aW9uRXZlbnRzKCdFcnJvcicpXHJcbiAgICAgIC5waXBlKGZpbHRlcih0aGlzLmZpbHRlclJvdXRlRXJyb3JzKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNob3c0MDRQYWdlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGxpc3RlblRvUm91dGVyRGF0YVJlc29sdmVkKCkge1xyXG4gICAgdGhpcy5yb3V0ZXJFdmVudHNcclxuICAgICAgLmdldEV2ZW50cyhSZXNvbHZlRW5kKVxyXG4gICAgICAucGlwZShmaWx0ZXIoKCkgPT4gISF0aGlzLmNvbXBvbmVudFJlZikpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBudWxsO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBsaXN0ZW5Ub1Jlc3RFcnJvcigpIHtcclxuICAgIHRoaXMuaHR0cEVycm9yUmVwb3J0ZXIucmVwb3J0ZXIkXHJcbiAgICAgIC5waXBlKGZpbHRlcih0aGlzLmZpbHRlclJlc3RFcnJvcnMpLCBzd2l0Y2hNYXAodGhpcy5leGVjdXRlRXJyb3JIYW5kbGVyKSlcclxuICAgICAgLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleGVjdXRlRXJyb3JIYW5kbGVyID0gKGVycm9yOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHJldHVyblZhbHVlID0gdGhpcy5odHRwRXJyb3JIYW5kbGVyKHRoaXMuaW5qZWN0b3IsIGVycm9yKTtcclxuXHJcbiAgICByZXR1cm4gKHJldHVyblZhbHVlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IHJldHVyblZhbHVlIDogb2YobnVsbCkpLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycik7XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IGFueSkge1xyXG4gICAgY29uc3QgYm9keSA9IGVycj8uZXJyb3I/LmVycm9yIHx8IHtcclxuICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyLmhlYWRlcnMuZ2V0KCdfQWJwRXJyb3JGb3JtYXQnKSkge1xyXG4gICAgICBjb25zdCBjb25maXJtYXRpb24kID0gdGhpcy5zaG93RXJyb3JXaXRoUmVxdWVzdEJvZHkoYm9keSk7XHJcblxyXG4gICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNDAxKSB7XHJcbiAgICAgICAgY29uZmlybWF0aW9uJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvTG9naW4oKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBpZihlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJiBlcnIuaGVhZGVycy5nZXQoJ0FicC1UZW5hbnQtUmVzb2x2ZS1FcnJvcicpKXtcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKS5zdWJzY3JpYmUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN3aXRjaCAoZXJyLnN0YXR1cykge1xyXG4gICAgICAgIGNhc2UgNDAxOlxyXG4gICAgICAgICAgdGhpcy5jYW5DcmVhdGVDdXN0b21FcnJvcig0MDEpXHJcbiAgICAgICAgICAgID8gdGhpcy5zaG93NDAxUGFnZSgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zaG93RXJyb3IoXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMS5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDAxLmRldGFpbHMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMubmF2aWdhdGVUb0xvZ2luKCkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA0MDM6XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDMudGl0bGUsXHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMy50aXRsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGV0YWlsczoge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwMy5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3I0MDMuZGV0YWlscyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3RhdHVzOiA0MDMsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgNDA0OntcclxuICAgICAgICAgIHRoaXMuY2FuQ3JlYXRlQ3VzdG9tRXJyb3IoNDA0KVxyXG4gICAgICAgICAgICA/IHRoaXMuc2hvdzQwNFBhZ2UoKVxyXG4gICAgICAgICAgICA6IHRoaXMuc2hvd0Vycm9yKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDQuZGV0YWlscyxcclxuICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwNC5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yNDA0LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDA0LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgIGNhc2UgNTAwOlxyXG4gICAgICAgICAgdGhpcy5jcmVhdGVFcnJvckNvbXBvbmVudCh7XHJcbiAgICAgICAgICAgIHRpdGxlOiB7XHJcbiAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yNTAwLnRpdGxlLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3I1MDAudGl0bGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRldGFpbHM6IHtcclxuICAgICAgICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I1MDAuZGV0YWlscyxcclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNTAwLmRldGFpbHMsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0YXR1czogNTAwLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICBpZiAoZXJyLnN0YXR1c1RleHQgPT09ICdVbmtub3duIEVycm9yJykge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGRldGFpbHM6IGVyci5tZXNzYWdlLFxyXG4gICAgICAgICAgICAgIGlzSG9tZVNob3c6IGZhbHNlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aGlzLnNob3dFcnJvcihcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci5kZXRhaWxzLFxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3IuZGV0YWlscyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgc2hvdzQwMVBhZ2UoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZUVycm9yQ29tcG9uZW50KHtcclxuICAgICAgdGl0bGU6IHtcclxuICAgICAgICBrZXk6IERFRkFVTFRfRVJST1JfTE9DQUxJWkFUSU9OUy5kZWZhdWx0RXJyb3I0MDEudGl0bGUsXHJcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLmRlZmF1bHRFcnJvcjQwMS50aXRsZSxcclxuICAgICAgfSxcclxuICAgICAgc3RhdHVzOiA0MDEsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzaG93NDA0UGFnZSgpIHtcclxuICAgIHRoaXMuY3JlYXRlRXJyb3JDb21wb25lbnQoe1xyXG4gICAgICB0aXRsZToge1xyXG4gICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvcjQwNC50aXRsZSxcclxuICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yNDA0LnRpdGxlLFxyXG4gICAgICB9LFxyXG4gICAgICBzdGF0dXM6IDQwNCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNob3dFcnJvcldpdGhSZXF1ZXN0Qm9keShib2R5OiBhbnkpIHtcclxuICAgIGxldCBtZXNzYWdlOiBMb2NhbGl6YXRpb25QYXJhbTtcclxuICAgIGxldCB0aXRsZTogTG9jYWxpemF0aW9uUGFyYW07XHJcblxyXG4gICAgaWYgKGJvZHkuZGV0YWlscykge1xyXG4gICAgICBtZXNzYWdlID0gYm9keS5kZXRhaWxzO1xyXG4gICAgICB0aXRsZSA9IGJvZHkubWVzc2FnZTtcclxuICAgIH0gZWxzZSBpZiAoYm9keS5tZXNzYWdlKSB7XHJcbiAgICAgIHRpdGxlID0ge1xyXG4gICAgICAgIGtleTogREVGQVVMVF9FUlJPUl9MT0NBTElaQVRJT05TLmRlZmF1bHRFcnJvci50aXRsZSxcclxuICAgICAgICBkZWZhdWx0VmFsdWU6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICB9O1xyXG4gICAgICBtZXNzYWdlID0gYm9keS5tZXNzYWdlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbWVzc2FnZSA9IGJvZHkubWVzc2FnZSB8fCB7XHJcbiAgICAgICAga2V5OiBERUZBVUxUX0VSUk9SX0xPQ0FMSVpBVElPTlMuZGVmYXVsdEVycm9yLnRpdGxlLFxyXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5kZWZhdWx0RXJyb3IudGl0bGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRpdGxlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UsIHRpdGxlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBzaG93RXJyb3IoXHJcbiAgICBtZXNzYWdlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICAgIHRpdGxlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICApOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbi5TdGF0dXM+IHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuZXJyb3IobWVzc2FnZSwgdGl0bGUsIHtcclxuICAgICAgaGlkZUNhbmNlbEJ0bjogdHJ1ZSxcclxuICAgICAgeWVzVGV4dDogJ0FicEFjY291bnQ6OkNsb3NlJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvTG9naW4oKSB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLm5hdmlnYXRlVG9Mb2dpbigpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRXJyb3JDb21wb25lbnQoaW5zdGFuY2U6IFBhcnRpYWw8SHR0cEVycm9yV3JhcHBlckNvbXBvbmVudD4pIHtcclxuICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XHJcbiAgICBjb25zdCBob3N0ID0gcmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoZG9jdW1lbnQuYm9keSwgdHJ1ZSk7XHJcblxyXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmNmUmVzXHJcbiAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShIdHRwRXJyb3JXcmFwcGVyQ29tcG9uZW50KVxyXG4gICAgICAuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGluc3RhbmNlKSB7XHJcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXHJcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UsIGtleSkpIHtcclxuICAgICAgICAodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgYW55KVtrZXldID0gKGluc3RhbmNlIGFzIGFueSlba2V5XTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVDbG9zZUljb24gPSAhIXRoaXMuaHR0cEVycm9yQ29uZmlnLmVycm9yU2NyZWVuPy5oaWRlQ2xvc2VJY29uO1xyXG4gICAgY29uc3QgYXBwUmVmID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwbGljYXRpb25SZWYpO1xyXG5cclxuICAgIGlmICh0aGlzLmNhbkNyZWF0ZUN1c3RvbUVycm9yKGluc3RhbmNlLnN0YXR1cyBhcyBFcnJvclNjcmVlbkVycm9yQ29kZXMpKSB7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNmUmVzID0gdGhpcy5jZlJlcztcclxuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXBwUmVmID0gYXBwUmVmO1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbmplY3RvciA9IHRoaXMuaW5qZWN0b3I7XHJcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmN1c3RvbUNvbXBvbmVudCA9IHRoaXMuaHR0cEVycm9yQ29uZmlnLmVycm9yU2NyZWVuPy5jb21wb25lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5jb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG4gICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQoaG9zdCwgKHRoaXMuY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0pO1xyXG5cclxuICAgIGNvbnN0IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmRlc3Ryb3kkID0gZGVzdHJveSQ7XHJcbiAgICBkZXN0cm95JC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbkNyZWF0ZUN1c3RvbUVycm9yKHN0YXR1czogRXJyb3JTY3JlZW5FcnJvckNvZGVzKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISEoXHJcbiAgICAgIHRoaXMuaHR0cEVycm9yQ29uZmlnPy5lcnJvclNjcmVlbj8uY29tcG9uZW50ICYmXHJcbiAgICAgIHRoaXMuaHR0cEVycm9yQ29uZmlnPy5lcnJvclNjcmVlbj8uZm9yV2hpY2hFcnJvcnMgJiZcclxuICAgICAgdGhpcy5odHRwRXJyb3JDb25maWc/LmVycm9yU2NyZWVuPy5mb3JXaGljaEVycm9ycy5pbmRleE9mKHN0YXR1cykgPiAtMVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBmaWx0ZXJSZXN0RXJyb3JzID0gKHsgc3RhdHVzIH06IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbiA9PiB7XHJcbiAgICBpZiAodHlwZW9mIHN0YXR1cyAhPT0gJ251bWJlcicpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAhIXRoaXMuaHR0cEVycm9yQ29uZmlnLnNraXBIYW5kbGVkRXJyb3JDb2RlcyAmJlxyXG4gICAgICB0aGlzLmh0dHBFcnJvckNvbmZpZy5za2lwSGFuZGxlZEVycm9yQ29kZXMuZmluZEluZGV4KGNvZGUgPT4gY29kZSA9PT0gc3RhdHVzKSA8IDBcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcHJvdGVjdGVkIGZpbHRlclJvdXRlRXJyb3JzID0gKG5hdmlnYXRpb25FcnJvcjogTmF2aWdhdGlvbkVycm9yKTogYm9vbGVhbiA9PiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBuYXZpZ2F0aW9uRXJyb3IuZXJyb3I/Lm1lc3NhZ2U/LmluZGV4T2YoJ0Nhbm5vdCBtYXRjaCcpID4gLTEgJiZcclxuICAgICAgISF0aGlzLmh0dHBFcnJvckNvbmZpZy5za2lwSGFuZGxlZEVycm9yQ29kZXMgJiZcclxuICAgICAgdGhpcy5odHRwRXJyb3JDb25maWcuc2tpcEhhbmRsZWRFcnJvckNvZGVzLmZpbmRJbmRleChjb2RlID0+IGNvZGUgPT09IDQwNCkgPCAwXHJcbiAgICApO1xyXG4gIH07XHJcbn1cclxuIl19
@@ -1,68 +0,0 @@
1
- import { ContentProjectionService, PROJECTION_STRATEGY } from '@abp/ng.core';
2
- import { Injectable } from '@angular/core';
3
- import { fromEvent, ReplaySubject, Subject } from 'rxjs';
4
- import { debounceTime, filter, takeUntil } from 'rxjs/operators';
5
- import { ConfirmationComponent } from '../components/confirmation/confirmation.component';
6
- import { Confirmation } from '../models/confirmation';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@abp/ng.core";
9
- export class ConfirmationService {
10
- constructor(contentProjectionService) {
11
- this.contentProjectionService = contentProjectionService;
12
- this.confirmation$ = new ReplaySubject(1);
13
- this.clear = (status = Confirmation.Status.dismiss) => {
14
- this.confirmation$.next(null);
15
- this.status$.next(status);
16
- };
17
- }
18
- setContainer() {
19
- this.containerComponentRef = this.contentProjectionService.projectContent(PROJECTION_STRATEGY.AppendComponentToBody(ConfirmationComponent, {
20
- confirmation$: this.confirmation$,
21
- clear: this.clear,
22
- }));
23
- setTimeout(() => {
24
- this.containerComponentRef.changeDetectorRef.detectChanges();
25
- }, 0);
26
- }
27
- info(message, title, options) {
28
- return this.show(message, title, 'info', options);
29
- }
30
- success(message, title, options) {
31
- return this.show(message, title, 'success', options);
32
- }
33
- warn(message, title, options) {
34
- return this.show(message, title, 'warning', options);
35
- }
36
- error(message, title, options) {
37
- return this.show(message, title, 'error', options);
38
- }
39
- show(message, title, severity, options = {}) {
40
- if (!this.containerComponentRef)
41
- this.setContainer();
42
- this.confirmation$.next({
43
- message,
44
- title,
45
- severity: severity || 'neutral',
46
- options,
47
- });
48
- this.status$ = new Subject();
49
- const { dismissible = true } = options;
50
- if (dismissible)
51
- this.listenToEscape();
52
- return this.status$;
53
- }
54
- listenToEscape() {
55
- fromEvent(document, 'keyup')
56
- .pipe(takeUntil(this.status$), debounceTime(150), filter((key) => key && key.key === 'Escape'))
57
- .subscribe(() => {
58
- this.clear();
59
- });
60
- }
61
- }
62
- ConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationService, deps: [{ token: i1.ContentProjectionService }], target: i0.ɵɵFactoryTarget.Injectable });
63
- ConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationService, providedIn: 'root' });
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ConfirmationService, decorators: [{
65
- type: Injectable,
66
- args: [{ providedIn: 'root' }]
67
- }], ctorParameters: function () { return [{ type: i1.ContentProjectionService }]; } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9jb25maXJtYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQXFCLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hHLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUd0RCxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQW9CLHdCQUFrRDtRQUFsRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBVHRFLGtCQUFhLEdBQUcsSUFBSSxhQUFhLENBQWlDLENBQUMsQ0FBQyxDQUFDO1FBSXJFLFVBQUssR0FBRyxDQUFDLFNBQThCLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBRXVFLENBQUM7SUFFbEUsWUFBWTtRQUNsQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FDdkUsbUJBQW1CLENBQUMscUJBQXFCLENBQUMscUJBQXFCLEVBQUU7WUFDL0QsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDLENBQ0gsQ0FBQztRQUVGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0QsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FDRixPQUEwQixFQUMxQixLQUF3QixFQUN4QixPQUF1QztRQUV2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sQ0FDTCxPQUEwQixFQUMxQixLQUF3QixFQUN4QixPQUF1QztRQUV2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksQ0FDRixPQUEwQixFQUMxQixLQUF3QixFQUN4QixPQUF1QztRQUV2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FDSCxPQUEwQixFQUMxQixLQUF3QixFQUN4QixPQUF1QztRQUV2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksQ0FDRixPQUEwQixFQUMxQixLQUF3QixFQUN4QixRQUFnQyxFQUNoQyxVQUFVLEVBQW1DO1FBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCO1lBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXJELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3RCLE9BQU87WUFDUCxLQUFLO1lBQ0wsUUFBUSxFQUFFLFFBQVEsSUFBSSxTQUFTO1lBQy9CLE9BQU87U0FDUixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsTUFBTSxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDdkMsSUFBSSxXQUFXO1lBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXZDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRU8sY0FBYztRQUNwQixTQUFTLENBQWdCLFFBQVEsRUFBRSxPQUFPLENBQUM7YUFDeEMsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQ3ZCLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFDakIsTUFBTSxDQUFDLENBQUMsR0FBa0IsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQzVEO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0hBMUZVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRQcm9qZWN0aW9uU2VydmljZSwgTG9jYWxpemF0aW9uUGFyYW0sIFBST0pFQ1RJT05fU1RSQVRFR1kgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZmlybWF0aW9uL2NvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlybWF0aW9uJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBDb25maXJtYXRpb25TZXJ2aWNlIHtcclxuICBzdGF0dXMkITogU3ViamVjdDxDb25maXJtYXRpb24uU3RhdHVzPjtcclxuICBjb25maXJtYXRpb24kID0gbmV3IFJlcGxheVN1YmplY3Q8Q29uZmlybWF0aW9uLkRpYWxvZ0RhdGEgfCBudWxsPigxKTtcclxuXHJcbiAgcHJpdmF0ZSBjb250YWluZXJDb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8Q29uZmlybWF0aW9uQ29tcG9uZW50PjtcclxuXHJcbiAgY2xlYXIgPSAoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzID0gQ29uZmlybWF0aW9uLlN0YXR1cy5kaXNtaXNzKSA9PiB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvbiQubmV4dChudWxsKTtcclxuICAgIHRoaXMuc3RhdHVzJC5uZXh0KHN0YXR1cyk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZW50UHJvamVjdGlvblNlcnZpY2U6IENvbnRlbnRQcm9qZWN0aW9uU2VydmljZSkge31cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb250YWluZXIoKSB7XHJcbiAgICB0aGlzLmNvbnRhaW5lckNvbXBvbmVudFJlZiA9IHRoaXMuY29udGVudFByb2plY3Rpb25TZXJ2aWNlLnByb2plY3RDb250ZW50KFxyXG4gICAgICBQUk9KRUNUSU9OX1NUUkFURUdZLkFwcGVuZENvbXBvbmVudFRvQm9keShDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgICBjb25maXJtYXRpb24kOiB0aGlzLmNvbmZpcm1hdGlvbiQsXHJcbiAgICAgICAgY2xlYXI6IHRoaXMuY2xlYXIsXHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jb250YWluZXJDb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBpbmZvKFxyXG4gICAgbWVzc2FnZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgICB0aXRsZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgICBvcHRpb25zPzogUGFydGlhbDxDb25maXJtYXRpb24uT3B0aW9ucz4sXHJcbiAgKTogT2JzZXJ2YWJsZTxDb25maXJtYXRpb24uU3RhdHVzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zaG93KG1lc3NhZ2UsIHRpdGxlLCAnaW5mbycsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgc3VjY2VzcyhcclxuICAgIG1lc3NhZ2U6IExvY2FsaXphdGlvblBhcmFtLFxyXG4gICAgdGl0bGU6IExvY2FsaXphdGlvblBhcmFtLFxyXG4gICAgb3B0aW9ucz86IFBhcnRpYWw8Q29uZmlybWF0aW9uLk9wdGlvbnM+LFxyXG4gICk6IE9ic2VydmFibGU8Q29uZmlybWF0aW9uLlN0YXR1cz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvdyhtZXNzYWdlLCB0aXRsZSwgJ3N1Y2Nlc3MnLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHdhcm4oXHJcbiAgICBtZXNzYWdlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICAgIHRpdGxlOiBMb2NhbGl6YXRpb25QYXJhbSxcclxuICAgIG9wdGlvbnM/OiBQYXJ0aWFsPENvbmZpcm1hdGlvbi5PcHRpb25zPixcclxuICApOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbi5TdGF0dXM+IHtcclxuICAgIHJldHVybiB0aGlzLnNob3cobWVzc2FnZSwgdGl0bGUsICd3YXJuaW5nJywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBlcnJvcihcclxuICAgIG1lc3NhZ2U6IExvY2FsaXphdGlvblBhcmFtLFxyXG4gICAgdGl0bGU6IExvY2FsaXphdGlvblBhcmFtLFxyXG4gICAgb3B0aW9ucz86IFBhcnRpYWw8Q29uZmlybWF0aW9uLk9wdGlvbnM+LFxyXG4gICk6IE9ic2VydmFibGU8Q29uZmlybWF0aW9uLlN0YXR1cz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvdyhtZXNzYWdlLCB0aXRsZSwgJ2Vycm9yJywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBzaG93KFxyXG4gICAgbWVzc2FnZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgICB0aXRsZTogTG9jYWxpemF0aW9uUGFyYW0sXHJcbiAgICBzZXZlcml0eT86IENvbmZpcm1hdGlvbi5TZXZlcml0eSxcclxuICAgIG9wdGlvbnMgPSB7fSBhcyBQYXJ0aWFsPENvbmZpcm1hdGlvbi5PcHRpb25zPixcclxuICApOiBPYnNlcnZhYmxlPENvbmZpcm1hdGlvbi5TdGF0dXM+IHtcclxuICAgIGlmICghdGhpcy5jb250YWluZXJDb21wb25lbnRSZWYpIHRoaXMuc2V0Q29udGFpbmVyKCk7XHJcblxyXG4gICAgdGhpcy5jb25maXJtYXRpb24kLm5leHQoe1xyXG4gICAgICBtZXNzYWdlLFxyXG4gICAgICB0aXRsZSxcclxuICAgICAgc2V2ZXJpdHk6IHNldmVyaXR5IHx8ICduZXV0cmFsJyxcclxuICAgICAgb3B0aW9ucyxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc3RhdHVzJCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICBjb25zdCB7IGRpc21pc3NpYmxlID0gdHJ1ZSB9ID0gb3B0aW9ucztcclxuICAgIGlmIChkaXNtaXNzaWJsZSkgdGhpcy5saXN0ZW5Ub0VzY2FwZSgpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxpc3RlblRvRXNjYXBlKCkge1xyXG4gICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5dXAnKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5zdGF0dXMkKSxcclxuICAgICAgICBkZWJvdW5jZVRpbWUoMTUwKSxcclxuICAgICAgICBmaWx0ZXIoKGtleTogS2V5Ym9hcmRFdmVudCkgPT4ga2V5ICYmIGtleS5rZXkgPT09ICdFc2NhcGUnKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,17 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { NavItem } from '../models/nav-item';
3
- import { AbstractMenuService } from './abstract-menu.service';
4
- import * as i0 from "@angular/core";
5
- export class NavItemsService extends AbstractMenuService {
6
- constructor() {
7
- super(...arguments);
8
- this.baseClass = NavItem;
9
- }
10
- }
11
- NavItemsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavItemsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
12
- NavItemsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavItemsService, providedIn: 'root' });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NavItemsService, decorators: [{
14
- type: Injectable,
15
- args: [{ providedIn: 'root' }]
16
- }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW1zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9uYXYtaXRlbXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFHOUQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsbUJBQTRCO0lBRGpFOztRQUVZLGNBQVMsR0FBRyxPQUFPLENBQUM7S0FDL0I7OzRHQUZZLGVBQWU7Z0hBQWYsZUFBZSxjQURGLE1BQU07MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL25hdi1pdGVtJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNZW51U2VydmljZSB9IGZyb20gJy4vYWJzdHJhY3QtbWVudS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBOYXZJdGVtc1NlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdE1lbnVTZXJ2aWNlPE5hdkl0ZW0+IHtcclxuICBwcm90ZWN0ZWQgYmFzZUNsYXNzID0gTmF2SXRlbTtcclxufVxyXG4iXX0=
@@ -1,28 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { InternalStore } from '@abp/ng.core';
3
- import * as i0 from "@angular/core";
4
- export class PageAlertService {
5
- constructor() {
6
- this.alerts = new InternalStore([]);
7
- this.alerts$ = this.alerts.sliceState(state => state);
8
- }
9
- show(alert) {
10
- const newAlert = {
11
- ...alert,
12
- dismissible: alert.dismissible ?? true,
13
- };
14
- this.alerts.set([newAlert, ...this.alerts.state]);
15
- }
16
- remove(index) {
17
- const alerts = [...this.alerts.state];
18
- alerts.splice(index, 1);
19
- this.alerts.set(alerts);
20
- }
21
- }
22
- PageAlertService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
23
- PageAlertService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageAlertService, providedIn: 'root' });
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageAlertService, decorators: [{
25
- type: Injectable,
26
- args: [{ providedIn: 'root' }]
27
- }], ctorParameters: function () { return []; } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1hbGVydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL3NyYy9saWIvc2VydmljZXMvcGFnZS1hbGVydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFZN0MsTUFBTSxPQUFPLGdCQUFnQjtJQUszQjtRQUpRLFdBQU0sR0FBRyxJQUFJLGFBQWEsQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUVwRCxZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVsQyxDQUFDO0lBRWhCLElBQUksQ0FBQyxLQUFnQjtRQUNuQixNQUFNLFFBQVEsR0FBYztZQUMxQixHQUFHLEtBQUs7WUFDUixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJO1NBQ3ZDLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDbEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUIsQ0FBQzs7NkdBbkJVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW50ZXJuYWxTdG9yZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VBbGVydCB7XHJcbiAgdHlwZTogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScgfCAnc3VjY2VzcycgfCAnZGFuZ2VyJyB8ICd3YXJuaW5nJyB8ICdpbmZvJyB8ICdsaWdodCcgfCAnZGFyayc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGRpc21pc3NpYmxlPzogYm9vbGVhbjtcclxuICB0aXRsZT86IHN0cmluZztcclxuICBtZXNzYWdlTG9jYWxpemF0aW9uUGFyYW1zPzogc3RyaW5nW107XHJcbiAgdGl0bGVMb2NhbGl6YXRpb25QYXJhbXM/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFBhZ2VBbGVydFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgYWxlcnRzID0gbmV3IEludGVybmFsU3RvcmU8UGFnZUFsZXJ0W10+KFtdKTtcclxuXHJcbiAgYWxlcnRzJCA9IHRoaXMuYWxlcnRzLnNsaWNlU3RhdGUoc3RhdGUgPT4gc3RhdGUpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIHNob3coYWxlcnQ6IFBhZ2VBbGVydCkge1xyXG4gICAgY29uc3QgbmV3QWxlcnQ6IFBhZ2VBbGVydCA9IHtcclxuICAgICAgLi4uYWxlcnQsXHJcbiAgICAgIGRpc21pc3NpYmxlOiBhbGVydC5kaXNtaXNzaWJsZSA/PyB0cnVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuYWxlcnRzLnNldChbbmV3QWxlcnQsIC4uLnRoaXMuYWxlcnRzLnN0YXRlXSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmUoaW5kZXg6IG51bWJlcikge1xyXG4gICAgY29uc3QgYWxlcnRzID0gWy4uLnRoaXMuYWxlcnRzLnN0YXRlXTtcclxuICAgIGFsZXJ0cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy5hbGVydHMuc2V0KGFsZXJ0cyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==