@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,94 +0,0 @@
1
- import { AbstractNgModelComponent } from '@abp/ng.core';
2
- import { Component, EventEmitter, forwardRef, Injector, Input, Output } from '@angular/core';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/forms";
7
- import * as i3 from "@abp/ng.core";
8
- export class FormInputComponent extends AbstractNgModelComponent {
9
- constructor(injector) {
10
- super(injector);
11
- this.inputReadonly = false;
12
- this.label = '';
13
- this.labelClass = 'form-label';
14
- this.inputPlaceholder = '';
15
- this.inputClass = 'form-control';
16
- this.formBlur = new EventEmitter();
17
- this.formFocus = new EventEmitter();
18
- }
19
- }
20
- FormInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: FormInputComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
21
- FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: FormInputComponent, selector: "abp-form-input", inputs: { inputId: "inputId", inputReadonly: "inputReadonly", label: "label", labelClass: "labelClass", inputPlaceholder: "inputPlaceholder", inputStyle: "inputStyle", inputClass: "inputClass" }, outputs: { formBlur: "formBlur", formFocus: "formFocus" }, providers: [
22
- {
23
- provide: NG_VALUE_ACCESSOR,
24
- useExisting: forwardRef(() => FormInputComponent),
25
- multi: true,
26
- },
27
- ], usesInheritance: true, ngImport: i0, template: `
28
- <div class="mb-3">
29
- <label *ngIf="label" [ngClass]="labelClass" [for]="inputId">
30
- {{ label | abpLocalization }}
31
- </label>
32
- <input
33
- type="text"
34
- [id]="inputId"
35
- [placeholder]="inputPlaceholder"
36
- [readonly]="inputReadonly"
37
- [ngClass]="inputClass"
38
- [ngStyle]="inputStyle"
39
- (blur)="formBlur.next()"
40
- (focus)="formFocus.next()"
41
- [(ngModel)]="value"
42
- />
43
- </div>
44
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: FormInputComponent, decorators: [{
46
- type: Component,
47
- args: [{
48
- selector: 'abp-form-input',
49
- template: `
50
- <div class="mb-3">
51
- <label *ngIf="label" [ngClass]="labelClass" [for]="inputId">
52
- {{ label | abpLocalization }}
53
- </label>
54
- <input
55
- type="text"
56
- [id]="inputId"
57
- [placeholder]="inputPlaceholder"
58
- [readonly]="inputReadonly"
59
- [ngClass]="inputClass"
60
- [ngStyle]="inputStyle"
61
- (blur)="formBlur.next()"
62
- (focus)="formFocus.next()"
63
- [(ngModel)]="value"
64
- />
65
- </div>
66
- `,
67
- providers: [
68
- {
69
- provide: NG_VALUE_ACCESSOR,
70
- useExisting: forwardRef(() => FormInputComponent),
71
- multi: true,
72
- },
73
- ],
74
- }]
75
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { inputId: [{
76
- type: Input
77
- }], inputReadonly: [{
78
- type: Input
79
- }], label: [{
80
- type: Input
81
- }], labelClass: [{
82
- type: Input
83
- }], inputPlaceholder: [{
84
- type: Input
85
- }], inputStyle: [{
86
- type: Input
87
- }], inputClass: [{
88
- type: Input
89
- }], formBlur: [{
90
- type: Output
91
- }], formFocus: [{
92
- type: Output
93
- }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW5wdXQvZm9ybS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUE4Qm5ELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSx3QkFBd0I7SUFnQjlELFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBZlQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGVBQVUsR0FBRyxZQUFZLENBQUM7UUFDMUIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBT3RCLGVBQVUsR0FBRyxjQUFjLENBQUM7UUFDM0IsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDcEMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFJL0MsQ0FBQzs7K0dBbEJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHdTQVJsQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixpREF4QlM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUOzJGQVNVLGtCQUFrQjtrQkE1QjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGOytGQUVVLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3ROZ01vZGVsQ29tcG9uZW50IH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdG9yLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhYnAtZm9ybS1pbnB1dCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW25nQ2xhc3NdPVwibGFiZWxDbGFzc1wiIFtmb3JdPVwiaW5wdXRJZFwiPlxyXG4gICAgICAgIHt7IGxhYmVsIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImlucHV0UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRvbmx5XCJcclxuICAgICAgICBbbmdDbGFzc109XCJpbnB1dENsYXNzXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICAoYmx1cik9XCJmb3JtQmx1ci5uZXh0KClcIlxyXG4gICAgICAgIChmb2N1cyk9XCJmb3JtRm9jdXMubmV4dCgpXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1JbnB1dENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TmdNb2RlbENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgaW5wdXRJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBpbnB1dFJlYWRvbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcclxuICBASW5wdXQoKSBsYWJlbENsYXNzID0gJ2Zvcm0tbGFiZWwnO1xyXG4gIEBJbnB1dCgpIGlucHV0UGxhY2Vob2xkZXIgPSAnJztcclxuICBASW5wdXQoKSBpbnB1dFN0eWxlOlxyXG4gICAgfCB7XHJcbiAgICAgICAgW2tsYXNzOiBzdHJpbmddOiBhbnk7XHJcbiAgICAgIH1cclxuICAgIHwgbnVsbFxyXG4gICAgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgaW5wdXRDbGFzcyA9ICdmb3JtLWNvbnRyb2wnO1xyXG4gIEBPdXRwdXQoKSBmb3JtQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBAT3V0cHV0KCkgZm9ybUZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIHN1cGVyKGluamVjdG9yKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,59 +0,0 @@
1
- import { SubscriptionService } from '@abp/ng.core';
2
- import { Component, ElementRef, ViewChild, } from '@angular/core';
3
- import { fromEvent } from 'rxjs';
4
- import { debounceTime, filter } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@abp/ng.core";
7
- import * as i2 from "@angular/common";
8
- import * as i3 from "@angular/router";
9
- export class HttpErrorWrapperComponent {
10
- constructor(subscription) {
11
- this.subscription = subscription;
12
- this.status = 0;
13
- this.title = 'Oops!';
14
- this.details = 'Sorry, an error has occured.';
15
- this.customComponent = undefined;
16
- this.hideCloseIcon = false;
17
- this.isHomeShow = true;
18
- }
19
- get statusText() {
20
- return this.status ? `[${this.status}]` : '';
21
- }
22
- ngOnInit() {
23
- this.backgroundColor =
24
- window.getComputedStyle(document.body)?.getPropertyValue('background-color') || '#fff';
25
- }
26
- ngAfterViewInit() {
27
- if (this.customComponent) {
28
- const customComponentRef = this.cfRes
29
- .resolveComponentFactory(this.customComponent)
30
- .create(this.injector);
31
- customComponentRef.instance.errorStatus = this.status;
32
- customComponentRef.instance.destroy$ = this.destroy$;
33
- this.appRef.attachView(customComponentRef.hostView);
34
- if (this.containerRef) {
35
- this.containerRef.nativeElement.appendChild(customComponentRef.hostView.rootNodes[0]);
36
- }
37
- customComponentRef.changeDetectorRef.detectChanges();
38
- }
39
- const keyup$ = fromEvent(document, 'keyup').pipe(debounceTime(150), filter((key) => key && key.key === 'Escape'));
40
- this.subscription.addOne(keyup$, () => this.destroy());
41
- }
42
- ngOnDestroy() {
43
- this.destroy();
44
- }
45
- destroy() {
46
- this.destroy$.next();
47
- this.destroy$.complete();
48
- }
49
- }
50
- HttpErrorWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorWrapperComponent, deps: [{ token: i1.SubscriptionService }], target: i0.ɵɵFactoryTarget.Component });
51
- HttpErrorWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: HttpErrorWrapperComponent, selector: "abp-http-error-wrapper", providers: [SubscriptionService], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\r\n #container\r\n id=\"abp-http-error-container\"\r\n class=\"error\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n>\r\n <button\r\n *ngIf=\"!hideCloseIcon\"\r\n id=\"abp-close-button\"\r\n type=\"button\"\r\n class=\"btn-close me-2\"\r\n (click)=\"destroy()\"\r\n ></button>\r\n\r\n <div *ngIf=\"!customComponent\" class=\"row centered\">\r\n <div class=\"col-md-12\">\r\n <div class=\"error-template\">\r\n <h1>{{ statusText }} {{ title | abpLocalization }}</h1>\r\n <div class=\"error-details\">\r\n {{ details | abpLocalization }}\r\n </div>\r\n <div class=\"error-actions\">\r\n <a\r\n *ngIf=\"isHomeShow\"\r\n (click)=\"destroy()\"\r\n routerLink=\"/\"\r\n class=\"btn btn-primary btn-md mt-2\"\r\n ><span class=\"glyphicon glyphicon-home\"></span>\r\n {{ { key: '::Menu:Home', defaultValue: 'Home' } | abpLocalization }}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".error{position:fixed;top:0;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] });
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: HttpErrorWrapperComponent, decorators: [{
53
- type: Component,
54
- args: [{ selector: 'abp-http-error-wrapper', providers: [SubscriptionService], template: "<div\r\n #container\r\n id=\"abp-http-error-container\"\r\n class=\"error\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n>\r\n <button\r\n *ngIf=\"!hideCloseIcon\"\r\n id=\"abp-close-button\"\r\n type=\"button\"\r\n class=\"btn-close me-2\"\r\n (click)=\"destroy()\"\r\n ></button>\r\n\r\n <div *ngIf=\"!customComponent\" class=\"row centered\">\r\n <div class=\"col-md-12\">\r\n <div class=\"error-template\">\r\n <h1>{{ statusText }} {{ title | abpLocalization }}</h1>\r\n <div class=\"error-details\">\r\n {{ details | abpLocalization }}\r\n </div>\r\n <div class=\"error-actions\">\r\n <a\r\n *ngIf=\"isHomeShow\"\r\n (click)=\"destroy()\"\r\n routerLink=\"/\"\r\n class=\"btn btn-primary btn-md mt-2\"\r\n ><span class=\"glyphicon glyphicon-home\"></span>\r\n {{ { key: '::Menu:Home', defaultValue: 'Home' } | abpLocalization }}\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".error{position:fixed;top:0;width:100vw;height:100vh;z-index:999999}.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}\n"] }]
55
- }], ctorParameters: function () { return [{ type: i1.SubscriptionService }]; }, propDecorators: { containerRef: [{
56
- type: ViewChild,
57
- args: ['container', { static: false }]
58
- }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1lcnJvci13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvaHR0cC1lcnJvci13cmFwcGVyL2h0dHAtZXJyb3Itd3JhcHBlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2h0dHAtZXJyb3Itd3JhcHBlci9odHRwLWVycm9yLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RSxPQUFPLEVBR0wsU0FBUyxFQUVULFVBQVUsRUFNVixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVF0RCxNQUFNLE9BQU8seUJBQXlCO0lBOEJwQyxZQUFvQixZQUFpQztRQUFqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUF2QnJELFdBQU0sR0FBRyxDQUFDLENBQUM7UUFFWCxVQUFLLEdBQXNCLE9BQU8sQ0FBQztRQUVuQyxZQUFPLEdBQXNCLDhCQUE4QixDQUFDO1FBRTVELG9CQUFlLEdBQTBCLFNBQVMsQ0FBQztRQUluRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUl0QixlQUFVLEdBQUcsSUFBSSxDQUFDO0lBU3NDLENBQUM7SUFKekQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFJRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWU7WUFDbEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUMzRixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxLQUFLO2lCQUNsQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2lCQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pCLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN0RCxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQ3hDLGtCQUFrQixDQUFDLFFBQWlDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUNuRSxDQUFDO2FBQ0g7WUFDRCxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0RDtRQUVELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBZ0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDN0QsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixNQUFNLENBQUMsQ0FBQyxHQUFrQixFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FDNUQsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOztzSEFuRVUseUJBQXlCOzBHQUF6Qix5QkFBeUIsaURBRnpCLENBQUMsbUJBQW1CLENBQUMscUlDckJsQyxtakNBbUNBOzJGRFphLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDRSx3QkFBd0IsYUFHdkIsQ0FBQyxtQkFBbUIsQ0FBQzswR0EwQmhDLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYWxpemF0aW9uUGFyYW0sIFN1YnNjcmlwdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQXBwbGljYXRpb25SZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIEVtYmVkZGVkVmlld1JlZixcclxuICBJbmplY3RvcixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFR5cGUsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC1odHRwLWVycm9yLXdyYXBwZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9odHRwLWVycm9yLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydodHRwLWVycm9yLXdyYXBwZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtTdWJzY3JpcHRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvcldyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcbiAgYXBwUmVmITogQXBwbGljYXRpb25SZWY7XHJcblxyXG4gIGNmUmVzITogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyO1xyXG5cclxuICBpbmplY3RvciE6IEluamVjdG9yO1xyXG5cclxuICBzdGF0dXMgPSAwO1xyXG5cclxuICB0aXRsZTogTG9jYWxpemF0aW9uUGFyYW0gPSAnT29wcyEnO1xyXG5cclxuICBkZXRhaWxzOiBMb2NhbGl6YXRpb25QYXJhbSA9ICdTb3JyeSwgYW4gZXJyb3IgaGFzIG9jY3VyZWQuJztcclxuXHJcbiAgY3VzdG9tQ29tcG9uZW50OiBUeXBlPGFueT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIGRlc3Ryb3kkITogU3ViamVjdDx2b2lkPjtcclxuXHJcbiAgaGlkZUNsb3NlSWNvbiA9IGZhbHNlO1xyXG5cclxuICBiYWNrZ3JvdW5kQ29sb3IhOiBzdHJpbmc7XHJcblxyXG4gIGlzSG9tZVNob3cgPSB0cnVlO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBjb250YWluZXJSZWY/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgZ2V0IHN0YXR1c1RleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyA/IGBbJHt0aGlzLnN0YXR1c31dYCA6ICcnO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvblNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPVxyXG4gICAgICB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KT8uZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIHx8ICcjZmZmJztcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmN1c3RvbUNvbXBvbmVudCkge1xyXG4gICAgICBjb25zdCBjdXN0b21Db21wb25lbnRSZWYgPSB0aGlzLmNmUmVzXHJcbiAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY3VzdG9tQ29tcG9uZW50KVxyXG4gICAgICAgIC5jcmVhdGUodGhpcy5pbmplY3Rvcik7XHJcbiAgICAgIGN1c3RvbUNvbXBvbmVudFJlZi5pbnN0YW5jZS5lcnJvclN0YXR1cyA9IHRoaXMuc3RhdHVzO1xyXG4gICAgICBjdXN0b21Db21wb25lbnRSZWYuaW5zdGFuY2UuZGVzdHJveSQgPSB0aGlzLmRlc3Ryb3kkO1xyXG4gICAgICB0aGlzLmFwcFJlZi5hdHRhY2hWaWV3KGN1c3RvbUNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAoY3VzdG9tQ29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KS5yb290Tm9kZXNbMF0sXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjdXN0b21Db21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGtleXVwJCA9IGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleXVwJykucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDE1MCksXHJcbiAgICAgIGZpbHRlcigoa2V5OiBLZXlib2FyZEV2ZW50KSA9PiBrZXkgJiYga2V5LmtleSA9PT0gJ0VzY2FwZScpLFxyXG4gICAgKTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZE9uZShrZXl1cCQsICgpID0+IHRoaXMuZGVzdHJveSgpKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjY29udGFpbmVyXHJcbiAgaWQ9XCJhYnAtaHR0cC1lcnJvci1jb250YWluZXJcIlxyXG4gIGNsYXNzPVwiZXJyb3JcIlxyXG4gIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYmFja2dyb3VuZENvbG9yXCJcclxuPlxyXG4gIDxidXR0b25cclxuICAgICpuZ0lmPVwiIWhpZGVDbG9zZUljb25cIlxyXG4gICAgaWQ9XCJhYnAtY2xvc2UtYnV0dG9uXCJcclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgY2xhc3M9XCJidG4tY2xvc2UgbWUtMlwiXHJcbiAgICAoY2xpY2spPVwiZGVzdHJveSgpXCJcclxuICA+PC9idXR0b24+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCIhY3VzdG9tQ29tcG9uZW50XCIgY2xhc3M9XCJyb3cgY2VudGVyZWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yLXRlbXBsYXRlXCI+XHJcbiAgICAgICAgPGgxPnt7IHN0YXR1c1RleHQgfX0ge3sgdGl0bGUgfCBhYnBMb2NhbGl6YXRpb24gfX08L2gxPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1kZXRhaWxzXCI+XHJcbiAgICAgICAgICB7eyBkZXRhaWxzIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWFjdGlvbnNcIj5cclxuICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNIb21lU2hvd1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJkZXN0cm95KClcIlxyXG4gICAgICAgICAgICByb3V0ZXJMaW5rPVwiL1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1tZCBtdC0yXCJcclxuICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1ob21lXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB7eyB7IGtleTogJzo6TWVudTpIb21lJywgZGVmYXVsdFZhbHVlOiAnSG9tZScgfSB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -1,121 +0,0 @@
1
- import { HttpWaitService, RouterWaitService, SubscriptionService } from '@abp/ng.core';
2
- import { ChangeDetectorRef, Component, Input } from '@angular/core';
3
- import { Router } from '@angular/router';
4
- import { combineLatest, Subscription, timer } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/router";
7
- import * as i2 from "@abp/ng.core";
8
- import * as i3 from "@angular/common";
9
- export class LoaderBarComponent {
10
- constructor(router, cdRef, subscription, httpWaitService, routerWaitService) {
11
- this.router = router;
12
- this.cdRef = cdRef;
13
- this.subscription = subscription;
14
- this.httpWaitService = httpWaitService;
15
- this.routerWaitService = routerWaitService;
16
- this.containerClass = 'abp-loader-bar';
17
- this.color = '#77b6ff';
18
- this.progressLevel = 0;
19
- this.interval = new Subscription();
20
- this.timer = new Subscription();
21
- this.intervalPeriod = 350;
22
- this.stopDelay = 800;
23
- this.clearProgress = () => {
24
- this.progressLevel = 0;
25
- this.cdRef.detectChanges();
26
- };
27
- this.reportProgress = () => {
28
- if (this.progressLevel < 75) {
29
- this.progressLevel += 1 + Math.random() * 9;
30
- }
31
- else if (this.progressLevel < 90) {
32
- this.progressLevel += 0.4;
33
- }
34
- else if (this.progressLevel < 100) {
35
- this.progressLevel += 0.1;
36
- }
37
- else {
38
- this.interval.unsubscribe();
39
- }
40
- this.cdRef.detectChanges();
41
- };
42
- }
43
- set isLoading(value) {
44
- this._isLoading = value;
45
- this.cdRef.detectChanges();
46
- }
47
- get isLoading() {
48
- return this._isLoading;
49
- }
50
- get boxShadow() {
51
- return `0 0 10px rgba(${this.color}, 0.5)`;
52
- }
53
- ngOnInit() {
54
- this.subscribeLoading();
55
- }
56
- subscribeLoading() {
57
- this.subscription.addOne(combineLatest([this.httpWaitService.getLoading$(), this.routerWaitService.getLoading$()]), ([httpLoading, routerLoading]) => {
58
- if (httpLoading || routerLoading)
59
- this.startLoading();
60
- else
61
- this.stopLoading();
62
- });
63
- }
64
- ngOnDestroy() {
65
- this.interval.unsubscribe();
66
- }
67
- startLoading() {
68
- if (this.isLoading || !this.interval.closed)
69
- return;
70
- this.isLoading = true;
71
- this.progressLevel = 0;
72
- this.cdRef.detectChanges();
73
- this.interval = timer(0, this.intervalPeriod).subscribe(this.reportProgress);
74
- this.timer.unsubscribe();
75
- }
76
- stopLoading() {
77
- this.interval.unsubscribe();
78
- this.progressLevel = 100;
79
- this.isLoading = false;
80
- if (!this.timer.closed)
81
- return;
82
- this.timer = timer(this.stopDelay).subscribe(this.clearProgress);
83
- }
84
- }
85
- LoaderBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoaderBarComponent, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }, { token: i2.SubscriptionService }, { token: i2.HttpWaitService }, { token: i2.RouterWaitService }], target: i0.ɵɵFactoryTarget.Component });
86
- LoaderBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoaderBarComponent, selector: "abp-loader-bar", inputs: { isLoading: "isLoading", containerClass: "containerClass", color: "color" }, providers: [SubscriptionService], ngImport: i0, template: `
87
- <div id="abp-loader-bar" [ngClass]="containerClass" [class.is-loading]="isLoading">
88
- <div
89
- class="abp-progress"
90
- [class.progressing]="progressLevel"
91
- [style.width.vw]="progressLevel"
92
- [ngStyle]="{
93
- 'background-color': color,
94
- 'box-shadow': boxShadow
95
- }"
96
- ></div>
97
- </div>
98
- `, isInline: true, styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{height:3px;left:0;position:fixed;top:0}.abp-loader-bar .abp-progress.progressing{transition:width .4s ease}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoaderBarComponent, decorators: [{
100
- type: Component,
101
- args: [{ selector: 'abp-loader-bar', template: `
102
- <div id="abp-loader-bar" [ngClass]="containerClass" [class.is-loading]="isLoading">
103
- <div
104
- class="abp-progress"
105
- [class.progressing]="progressLevel"
106
- [style.width.vw]="progressLevel"
107
- [ngStyle]="{
108
- 'background-color': color,
109
- 'box-shadow': boxShadow
110
- }"
111
- ></div>
112
- </div>
113
- `, providers: [SubscriptionService], styles: [".abp-loader-bar{left:0;opacity:0;position:fixed;top:0;transition:opacity .4s linear .4s;z-index:99999}.abp-loader-bar.is-loading{opacity:1;transition:none}.abp-loader-bar .abp-progress{height:3px;left:0;position:fixed;top:0}.abp-loader-bar .abp-progress.progressing{transition:width .4s ease}\n"] }]
114
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i0.ChangeDetectorRef }, { type: i2.SubscriptionService }, { type: i2.HttpWaitService }, { type: i2.RouterWaitService }]; }, propDecorators: { isLoading: [{
115
- type: Input
116
- }], containerClass: [{
117
- type: Input
118
- }], color: [{
119
- type: Input
120
- }] } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2xvYWRlci1iYXIvbG9hZGVyLWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFvQjFELE1BQU0sT0FBTyxrQkFBa0I7SUFrRDdCLFlBQ1UsTUFBYyxFQUNkLEtBQXdCLEVBQ3hCLFlBQWlDLEVBQ2pDLGVBQWdDLEVBQ2hDLGlCQUFvQztRQUpwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBMUM5QyxtQkFBYyxHQUFHLGdCQUFnQixDQUFDO1FBR2xDLFVBQUssR0FBRyxTQUFTLENBQUM7UUFFbEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFbEIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFOUIsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFM0IsbUJBQWMsR0FBRyxHQUFHLENBQUM7UUFFckIsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQUVDLGtCQUFhLEdBQUcsR0FBRyxFQUFFO1lBQ3BD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SUFDbkUsQ0FBQzs7K0dBL0ZVLGtCQUFrQjttR0FBbEIsa0JBQWtCLCtIQUZsQixDQUFDLG1CQUFtQixDQUFDLDBCQWR0Qjs7Ozs7Ozs7Ozs7O0dBWVQ7MkZBSVUsa0JBQWtCO2tCQWxCOUIsU0FBUzsrQkFDRSxnQkFBZ0IsWUFDaEI7Ozs7Ozs7Ozs7OztHQVlULGFBRVUsQ0FBQyxtQkFBbUIsQ0FBQzs2TkFNNUIsU0FBUztzQkFEWixLQUFLO2dCQVVOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwV2FpdFNlcnZpY2UsIFJvdXRlcldhaXRTZXJ2aWNlLCBTdWJzY3JpcHRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLWxvYWRlci1iYXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGlkPVwiYWJwLWxvYWRlci1iYXJcIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiIFtjbGFzcy5pcy1sb2FkaW5nXT1cImlzTG9hZGluZ1wiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJhYnAtcHJvZ3Jlc3NcIlxyXG4gICAgICAgIFtjbGFzcy5wcm9ncmVzc2luZ109XCJwcm9ncmVzc0xldmVsXCJcclxuICAgICAgICBbc3R5bGUud2lkdGgudnddPVwicHJvZ3Jlc3NMZXZlbFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBjb2xvcixcclxuICAgICAgICAgICdib3gtc2hhZG93JzogYm94U2hhZG93XHJcbiAgICAgICAgfVwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbG9hZGVyLWJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1N1YnNjcmlwdGlvblNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9hZGVyQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIHByb3RlY3RlZCBfaXNMb2FkaW5nITogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaXNMb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc0xvYWRpbmcgPSB2YWx1ZTtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzTG9hZGluZztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY29udGFpbmVyQ2xhc3MgPSAnYWJwLWxvYWRlci1iYXInO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbG9yID0gJyM3N2I2ZmYnO1xyXG5cclxuICBwcm9ncmVzc0xldmVsID0gMDtcclxuXHJcbiAgaW50ZXJ2YWwgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIHRpbWVyID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuICBpbnRlcnZhbFBlcmlvZCA9IDM1MDtcclxuXHJcbiAgc3RvcERlbGF5ID0gODAwO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGNsZWFyUHJvZ3Jlc3MgPSAoKSA9PiB7XHJcbiAgICB0aGlzLnByb2dyZXNzTGV2ZWwgPSAwO1xyXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSByZXBvcnRQcm9ncmVzcyA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLnByb2dyZXNzTGV2ZWwgPCA3NSkge1xyXG4gICAgICB0aGlzLnByb2dyZXNzTGV2ZWwgKz0gMSArIE1hdGgucmFuZG9tKCkgKiA5O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnByb2dyZXNzTGV2ZWwgPCA5MCkge1xyXG4gICAgICB0aGlzLnByb2dyZXNzTGV2ZWwgKz0gMC40O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnByb2dyZXNzTGV2ZWwgPCAxMDApIHtcclxuICAgICAgdGhpcy5wcm9ncmVzc0xldmVsICs9IDAuMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW50ZXJ2YWwudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH07XHJcblxyXG4gIGdldCBib3hTaGFkb3coKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgMCAwIDEwcHggcmdiYSgke3RoaXMuY29sb3J9LCAwLjUpYDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHBXYWl0U2VydmljZTogSHR0cFdhaXRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXJXYWl0U2VydmljZTogUm91dGVyV2FpdFNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlTG9hZGluZygpO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlTG9hZGluZygpIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZE9uZShcclxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5odHRwV2FpdFNlcnZpY2UuZ2V0TG9hZGluZyQoKSwgdGhpcy5yb3V0ZXJXYWl0U2VydmljZS5nZXRMb2FkaW5nJCgpXSksXHJcbiAgICAgIChbaHR0cExvYWRpbmcsIHJvdXRlckxvYWRpbmddKSA9PiB7XHJcbiAgICAgICAgaWYgKGh0dHBMb2FkaW5nIHx8IHJvdXRlckxvYWRpbmcpIHRoaXMuc3RhcnRMb2FkaW5nKCk7XHJcbiAgICAgICAgZWxzZSB0aGlzLnN0b3BMb2FkaW5nKCk7XHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmludGVydmFsLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzdGFydExvYWRpbmcoKSB7XHJcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcgfHwgIXRoaXMuaW50ZXJ2YWwuY2xvc2VkKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcm9ncmVzc0xldmVsID0gMDtcclxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5pbnRlcnZhbCA9IHRpbWVyKDAsIHRoaXMuaW50ZXJ2YWxQZXJpb2QpLnN1YnNjcmliZSh0aGlzLnJlcG9ydFByb2dyZXNzKTtcclxuICAgIHRoaXMudGltZXIudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHN0b3BMb2FkaW5nKCkge1xyXG4gICAgdGhpcy5pbnRlcnZhbC51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMucHJvZ3Jlc3NMZXZlbCA9IDEwMDtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCF0aGlzLnRpbWVyLmNsb3NlZCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMudGltZXIgPSB0aW1lcih0aGlzLnN0b3BEZWxheSkuc3Vic2NyaWJlKHRoaXMuY2xlYXJQcm9ncmVzcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,19 +0,0 @@
1
- import { Component, ViewEncapsulation } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class LoadingComponent {
4
- }
5
- LoadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6
- LoadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadingComponent, selector: "abp-loading", ngImport: i0, template: `
7
- <div class="abp-loading">
8
- <i class="fa fa-spinner fa-pulse abp-spinner"></i>
9
- </div>
10
- `, isInline: true, styles: [".abp-loading{position:absolute;width:100%;height:100%;top:0;left:0;z-index:1040}.abp-loading .abp-spinner{position:absolute;top:50%;left:50%;font-size:14px;transform:translate(-50%) translateY(-50%)}\n"], encapsulation: i0.ViewEncapsulation.None });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadingComponent, decorators: [{
12
- type: Component,
13
- args: [{ selector: 'abp-loading', template: `
14
- <div class="abp-loading">
15
- <i class="fa fa-spinner fa-pulse abp-spinner"></i>
16
- </div>
17
- `, encapsulation: ViewEncapsulation.None, styles: [".abp-loading{position:absolute;width:100%;height:100%;top:0;left:0;z-index:1040}.abp-loading .abp-spinner{position:absolute;top:50%;left:50%;font-size:14px;transform:translate(-50%) translateY(-50%)}\n"] }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFtQzdELE1BQU0sT0FBTyxnQkFBZ0I7OzZHQUFoQixnQkFBZ0I7aUdBQWhCLGdCQUFnQixtREEvQmpCOzs7O0dBSVQ7MkZBMkJVLGdCQUFnQjtrQkFqQzVCLFNBQVM7K0JBQ0UsYUFBYSxZQUNiOzs7O0dBSVQsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWJwLWxvYWRpbmcnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiYWJwLWxvYWRpbmdcIj5cclxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXB1bHNlIGFicC1zcGlubmVyXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHN0eWxlczogW1xyXG4gICAgYFxyXG4gICAgICAuYWJwLWxvYWRpbmcge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgei1pbmRleDogMTA0MDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmFicC1sb2FkaW5nIC5hYnAtc3Bpbm5lciB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTtcclxuICAgICAgfVxyXG4gICAgYCxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9hZGluZ0NvbXBvbmVudCB7fVxyXG4iXX0=
@@ -1,27 +0,0 @@
1
- import { Directive, HostListener, Optional } from '@angular/core';
2
- import { ModalComponent } from './modal.component';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./modal.component";
5
- export class ModalCloseDirective {
6
- constructor(modal) {
7
- this.modal = modal;
8
- if (!modal) {
9
- console.error('Please use abpClose within an abp-modal');
10
- }
11
- }
12
- onClick() {
13
- this.modal?.close();
14
- }
15
- }
16
- ModalCloseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalCloseDirective, deps: [{ token: i1.ModalComponent, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
17
- ModalCloseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalCloseDirective, selector: "[abpClose]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalCloseDirective, decorators: [{
19
- type: Directive,
20
- args: [{ selector: '[abpClose]' }]
21
- }], ctorParameters: function () { return [{ type: i1.ModalComponent, decorators: [{
22
- type: Optional
23
- }] }]; }, propDecorators: { onClick: [{
24
- type: HostListener,
25
- args: ['click']
26
- }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtY2xvc2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC9tb2RhbC1jbG9zZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBZ0MsS0FBcUI7UUFBckIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDbkQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7SUFHRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDOztnSEFWVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTs7MEJBRXRCLFFBQVE7NENBT3JCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC5jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2FicENsb3NlXScgfSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsQ2xvc2VEaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgbW9kYWw6IE1vZGFsQ29tcG9uZW50KSB7XHJcbiAgICBpZiAoIW1vZGFsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSB1c2UgYWJwQ2xvc2Ugd2l0aGluIGFuIGFicC1tb2RhbCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIG9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLm1vZGFsPy5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,26 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ModalRefService {
4
- constructor() {
5
- this.modalRefs = [];
6
- }
7
- register(modal) {
8
- this.modalRefs.push(modal);
9
- }
10
- unregister(modal) {
11
- const index = this.modalRefs.indexOf(modal);
12
- if (index > -1) {
13
- this.modalRefs.splice(index, 1);
14
- }
15
- }
16
- dismissAll(mode) {
17
- this.modalRefs.forEach(modal => modal.dismiss(mode));
18
- }
19
- }
20
- ModalRefService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalRefService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
21
- ModalRefService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalRefService, providedIn: 'root' });
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalRefService, decorators: [{
23
- type: Injectable,
24
- args: [{ providedIn: 'root' }]
25
- }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL21vZGFsLXJlZi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzNDLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRUUsY0FBUyxHQUF1QixFQUFFLENBQUM7S0FlcEM7SUFiQyxRQUFRLENBQUMsS0FBdUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUF1QjtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsSUFBc0I7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7NEdBZlUsZUFBZTtnSEFBZixlQUFlLGNBREYsTUFBTTsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgdHlwZSBNb2RhbERpc21pc3NNb2RlID0gJ2hhcmQnIHwgJ3NvZnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaXNtaXNzYWJsZU1vZGFsIHtcclxuICBkaXNtaXNzKG1vZGU6IE1vZGFsRGlzbWlzc01vZGUpOiB2b2lkO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTW9kYWxSZWZTZXJ2aWNlIHtcclxuICBtb2RhbFJlZnM6IERpc21pc3NhYmxlTW9kYWxbXSA9IFtdO1xyXG5cclxuICByZWdpc3Rlcihtb2RhbDogRGlzbWlzc2FibGVNb2RhbCkge1xyXG4gICAgdGhpcy5tb2RhbFJlZnMucHVzaChtb2RhbCk7XHJcbiAgfVxyXG4gIHVucmVnaXN0ZXIobW9kYWw6IERpc21pc3NhYmxlTW9kYWwpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5tb2RhbFJlZnMuaW5kZXhPZihtb2RhbCk7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB0aGlzLm1vZGFsUmVmcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzbWlzc0FsbChtb2RlOiBNb2RhbERpc21pc3NNb2RlKSB7XHJcbiAgICB0aGlzLm1vZGFsUmVmcy5mb3JFYWNoKG1vZGFsID0+IG1vZGFsLmRpc21pc3MobW9kZSkpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,189 +0,0 @@
1
- import { SubscriptionService, uuid } from '@abp/ng.core';
2
- import { Component, ContentChild, EventEmitter, Inject, Input, Optional, Output, TemplateRef, ViewChild, } from '@angular/core';
3
- import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
4
- import { fromEvent, Subject } from 'rxjs';
5
- import { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';
6
- import { Confirmation } from '../../models/confirmation';
7
- import { ConfirmationService } from '../../services/confirmation.service';
8
- import { SUPPRESS_UNSAVED_CHANGES_WARNING } from '../../tokens/suppress-unsaved-changes-warning.token';
9
- import { ButtonComponent } from '../button/button.component';
10
- import { ModalRefService } from './modal-ref.service';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../../services/confirmation.service";
13
- import * as i2 from "@abp/ng.core";
14
- import * as i3 from "@ng-bootstrap/ng-bootstrap";
15
- import * as i4 from "./modal-ref.service";
16
- import * as i5 from "@angular/common";
17
- export class ModalComponent {
18
- constructor(confirmationService, subscription, suppressUnsavedChangesWarningToken, modal, modalRefService) {
19
- this.confirmationService = confirmationService;
20
- this.subscription = subscription;
21
- this.suppressUnsavedChangesWarningToken = suppressUnsavedChangesWarningToken;
22
- this.modal = modal;
23
- this.modalRefService = modalRefService;
24
- this.options = {};
25
- this.suppressUnsavedChangesWarning = this.suppressUnsavedChangesWarningToken;
26
- this.visibleChange = new EventEmitter();
27
- this.init = new EventEmitter();
28
- this.appear = new EventEmitter();
29
- this.disappear = new EventEmitter();
30
- this._visible = false;
31
- this._busy = false;
32
- this.isConfirmationOpen = false;
33
- this.destroy$ = new Subject();
34
- this.modalIdentifier = `modal-${uuid()}`;
35
- this.toggle$ = new Subject();
36
- this.initToggleStream();
37
- }
38
- get visible() {
39
- return this._visible;
40
- }
41
- set visible(value) {
42
- if (typeof value !== 'boolean')
43
- return;
44
- this.toggle$.next(value);
45
- }
46
- get busy() {
47
- return this._busy;
48
- }
49
- set busy(value) {
50
- if (this.abpSubmit && this.abpSubmit instanceof ButtonComponent) {
51
- this.abpSubmit.loading = value;
52
- }
53
- this._busy = value;
54
- }
55
- get modalWindowRef() {
56
- return document.querySelector(`ngb-modal-window.${this.modalIdentifier}`);
57
- }
58
- get isFormDirty() {
59
- return Boolean(this.modalWindowRef?.querySelector('.ng-dirty'));
60
- }
61
- ngOnInit() {
62
- this.modalRefService.register(this);
63
- }
64
- dismiss(mode) {
65
- switch (mode) {
66
- case 'hard':
67
- this.visible = false;
68
- break;
69
- case 'soft':
70
- this.close();
71
- break;
72
- default:
73
- break;
74
- }
75
- }
76
- initToggleStream() {
77
- this.subscription.addOne(this.toggle$.pipe(debounceTime(0), distinctUntilChanged()), value => this.toggle(value));
78
- }
79
- toggle(value) {
80
- this._visible = value;
81
- this.visibleChange.emit(value);
82
- if (!value) {
83
- this.modalRef?.dismiss();
84
- this.disappear.emit();
85
- this.destroy$.next();
86
- return;
87
- }
88
- setTimeout(() => this.listen(), 0);
89
- this.modalRef = this.modal.open(this.modalContent, {
90
- size: 'md',
91
- centered: false,
92
- keyboard: false,
93
- scrollable: true,
94
- beforeDismiss: () => {
95
- if (!this.visible)
96
- return true;
97
- this.close();
98
- return !this.visible;
99
- },
100
- ...this.options,
101
- windowClass: `${this.options.windowClass || ''} ${this.modalIdentifier}`,
102
- });
103
- this.appear.emit();
104
- }
105
- ngOnDestroy() {
106
- this.modalRefService.unregister(this);
107
- this.toggle(false);
108
- this.destroy$.next();
109
- }
110
- close() {
111
- if (this.busy)
112
- return;
113
- if (this.isFormDirty && !this.suppressUnsavedChangesWarning) {
114
- if (this.isConfirmationOpen)
115
- return;
116
- this.isConfirmationOpen = true;
117
- this.confirmationService
118
- .warn('AbpUi::AreYouSureYouWantToCancelEditingWarningMessage', 'AbpUi::AreYouSure', { dismissible: false })
119
- .subscribe((status) => {
120
- this.isConfirmationOpen = false;
121
- if (status === Confirmation.Status.confirm) {
122
- this.visible = false;
123
- }
124
- });
125
- }
126
- else {
127
- this.visible = false;
128
- }
129
- }
130
- listen() {
131
- if (this.modalWindowRef) {
132
- fromEvent(this.modalWindowRef, 'keyup')
133
- .pipe(takeUntil(this.destroy$), debounceTime(150), filter((key) => key && key.key === 'Escape' && this.options.keyboard))
134
- .subscribe(() => this.close());
135
- }
136
- fromEvent(window, 'beforeunload')
137
- .pipe(takeUntil(this.destroy$))
138
- .subscribe(event => {
139
- // TODO: check this
140
- if (!this.isFormDirty || this.suppressUnsavedChangesWarning) {
141
- event.preventDefault();
142
- }
143
- });
144
- this.init.emit();
145
- }
146
- }
147
- ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, deps: [{ token: i1.ConfirmationService }, { token: i2.SubscriptionService }, { token: SUPPRESS_UNSAVED_CHANGES_WARNING, optional: true }, { token: i3.NgbModal }, { token: i4.ModalRefService }], target: i0.ɵɵFactoryTarget.Component });
148
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ModalComponent, selector: "abp-modal", inputs: { visible: "visible", busy: "busy", options: "options", suppressUnsavedChangesWarning: "suppressUnsavedChangesWarning" }, outputs: { visibleChange: "visibleChange", init: "init", appear: "appear", disappear: "disappear" }, providers: [SubscriptionService], queries: [{ propertyName: "abpHeader", first: true, predicate: ["abpHeader"], descendants: true }, { propertyName: "abpBody", first: true, predicate: ["abpBody"], descendants: true }, { propertyName: "abpFooter", first: true, predicate: ["abpFooter"], descendants: true }, { propertyName: "abpSubmit", first: true, predicate: ButtonComponent, descendants: true, read: ButtonComponent }], viewQueries: [{ propertyName: "modalContent", first: true, predicate: ["modalContent"], descendants: true }], ngImport: i0, template: "<ng-content></ng-content>\r\n\r\n<ng-template #modalContent let-modal>\r\n <div *ngIf=\"abpHeader\" id=\"abp-modal-header\" class=\"modal-header abp-modal-header\">\r\n <ng-container *ngTemplateOutlet=\"abpHeader\"></ng-container>\r\n \u200B\r\n <button\r\n id=\"abp-modal-close-button\"\r\n type=\"button\"\r\n class=\"btn-sm btn-close\"\r\n aria-label=\"Close\"\r\n (click)=\"modal.dismiss()\"\r\n ></button>\r\n </div>\r\n <div *ngIf=\"abpBody\" id=\"abp-modal-body\" class=\"modal-body\">\r\n <ng-container *ngTemplateOutlet=\"abpBody\"></ng-container>\r\n </div>\r\n <div *ngIf=\"abpFooter\" id=\"abp-modal-footer\" class=\"modal-footer\">\r\n <ng-container *ngTemplateOutlet=\"abpFooter\"></ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".modal.show{display:block!important}.modal-backdrop{opacity:.8}.modal::-webkit-scrollbar{width:7px}.modal::-webkit-scrollbar-track{background:#ddd}.modal::-webkit-scrollbar-thumb{background:#8a8686}.modal-dialog{z-index:1050}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, decorators: [{
150
- type: Component,
151
- args: [{ selector: 'abp-modal', providers: [SubscriptionService], template: "<ng-content></ng-content>\r\n\r\n<ng-template #modalContent let-modal>\r\n <div *ngIf=\"abpHeader\" id=\"abp-modal-header\" class=\"modal-header abp-modal-header\">\r\n <ng-container *ngTemplateOutlet=\"abpHeader\"></ng-container>\r\n \u200B\r\n <button\r\n id=\"abp-modal-close-button\"\r\n type=\"button\"\r\n class=\"btn-sm btn-close\"\r\n aria-label=\"Close\"\r\n (click)=\"modal.dismiss()\"\r\n ></button>\r\n </div>\r\n <div *ngIf=\"abpBody\" id=\"abp-modal-body\" class=\"modal-body\">\r\n <ng-container *ngTemplateOutlet=\"abpBody\"></ng-container>\r\n </div>\r\n <div *ngIf=\"abpFooter\" id=\"abp-modal-footer\" class=\"modal-footer\">\r\n <ng-container *ngTemplateOutlet=\"abpFooter\"></ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".modal.show{display:block!important}.modal-backdrop{opacity:.8}.modal::-webkit-scrollbar{width:7px}.modal::-webkit-scrollbar-track{background:#ddd}.modal::-webkit-scrollbar-thumb{background:#8a8686}.modal-dialog{z-index:1050}\n"] }]
152
- }], ctorParameters: function () { return [{ type: i1.ConfirmationService }, { type: i2.SubscriptionService }, { type: undefined, decorators: [{
153
- type: Optional
154
- }, {
155
- type: Inject,
156
- args: [SUPPRESS_UNSAVED_CHANGES_WARNING]
157
- }] }, { type: i3.NgbModal }, { type: i4.ModalRefService }]; }, propDecorators: { visible: [{
158
- type: Input
159
- }], busy: [{
160
- type: Input
161
- }], options: [{
162
- type: Input
163
- }], suppressUnsavedChangesWarning: [{
164
- type: Input
165
- }], modalContent: [{
166
- type: ViewChild,
167
- args: ['modalContent']
168
- }], abpHeader: [{
169
- type: ContentChild,
170
- args: ['abpHeader', { static: false }]
171
- }], abpBody: [{
172
- type: ContentChild,
173
- args: ['abpBody', { static: false }]
174
- }], abpFooter: [{
175
- type: ContentChild,
176
- args: ['abpFooter', { static: false }]
177
- }], abpSubmit: [{
178
- type: ContentChild,
179
- args: [ButtonComponent, { static: false, read: ButtonComponent }]
180
- }], visibleChange: [{
181
- type: Output
182
- }], init: [{
183
- type: Output
184
- }], appear: [{
185
- type: Output
186
- }], disappear: [{
187
- type: Output
188
- }] } });
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQWdDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQXNDLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBVTFGLE1BQU0sT0FBTyxjQUFjO0lBbUV6QixZQUNVLG1CQUF3QyxFQUN4QyxZQUFpQyxFQUdqQyxr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QUFNO2dCQUVZLE1BQU07c0JBQXhCLE1BQU07Z0JBRVksU0FBUztzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvblNlcnZpY2UsIHV1aWQgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JNb2RhbE9wdGlvbnMsIE5nYk1vZGFsUmVmIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9jb25maXJtYXRpb24nO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlybWF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTVVBQUkVTU19VTlNBVkVEX0NIQU5HRVNfV0FSTklORyB9IGZyb20gJy4uLy4uL3Rva2Vucy9zdXBwcmVzcy11bnNhdmVkLWNoYW5nZXMtd2FybmluZy50b2tlbic7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlzbWlzc2FibGVNb2RhbCwgTW9kYWxEaXNtaXNzTW9kZSwgTW9kYWxSZWZTZXJ2aWNlIH0gZnJvbSAnLi9tb2RhbC1yZWYuc2VydmljZSc7XHJcblxyXG5leHBvcnQgdHlwZSBNb2RhbFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhYnAtbW9kYWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtTdWJzY3JpcHRpb25TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIERpc21pc3NhYmxlTW9kYWwge1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcclxuICB9XHJcbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgcmV0dXJuO1xyXG4gICAgdGhpcy50b2dnbGUkLm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgYnVzeSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9idXN5O1xyXG4gIH1cclxuICBzZXQgYnVzeSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuYWJwU3VibWl0ICYmIHRoaXMuYWJwU3VibWl0IGluc3RhbmNlb2YgQnV0dG9uQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuYWJwU3VibWl0LmxvYWRpbmcgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9idXN5ID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBvcHRpb25zOiBOZ2JNb2RhbE9wdGlvbnMgPSB7fTtcclxuXHJcbiAgQElucHV0KCkgc3VwcHJlc3NVbnNhdmVkQ2hhbmdlc1dhcm5pbmcgPSB0aGlzLnN1cHByZXNzVW5zYXZlZENoYW5nZXNXYXJuaW5nVG9rZW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsQ29udGVudCcpIG1vZGFsQ29udGVudD86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoJ2FicEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBhYnBIZWFkZXI/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAQ29udGVudENoaWxkKCdhYnBCb2R5JywgeyBzdGF0aWM6IGZhbHNlIH0pIGFicEJvZHk/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAQ29udGVudENoaWxkKCdhYnBGb290ZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgYWJwRm9vdGVyPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChCdXR0b25Db21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogQnV0dG9uQ29tcG9uZW50IH0pXHJcbiAgYWJwU3VibWl0PzogQnV0dG9uQ29tcG9uZW50O1xyXG5cclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGluaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSByZWFkb25seSBhcHBlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSByZWFkb25seSBkaXNhcHBlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIF92aXNpYmxlID0gZmFsc2U7XHJcblxyXG4gIF9idXN5ID0gZmFsc2U7XHJcblxyXG4gIG1vZGFsUmVmITogTmdiTW9kYWxSZWY7XHJcblxyXG4gIGlzQ29uZmlybWF0aW9uT3BlbiA9IGZhbHNlO1xyXG5cclxuICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIG1vZGFsSWRlbnRpZmllciA9IGBtb2RhbC0ke3V1aWQoKX1gO1xyXG5cclxuICBwcml2YXRlIHRvZ2dsZSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBnZXQgbW9kYWxXaW5kb3dSZWYoKSB7XHJcbiAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbmdiLW1vZGFsLXdpbmRvdy4ke3RoaXMubW9kYWxJZGVudGlmaWVyfWApO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzRm9ybURpcnR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5tb2RhbFdpbmRvd1JlZj8ucXVlcnlTZWxlY3RvcignLm5nLWRpcnR5JykpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpXHJcbiAgICBASW5qZWN0KFNVUFBSRVNTX1VOU0FWRURfQ0hBTkdFU19XQVJOSU5HKVxyXG4gICAgcHJpdmF0ZSBzdXBwcmVzc1Vuc2F2ZWRDaGFuZ2VzV2FybmluZ1Rva2VuOiBib29sZWFuLFxyXG4gICAgcHJpdmF0ZSBtb2RhbDogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIG1vZGFsUmVmU2VydmljZTogTW9kYWxSZWZTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5pbml0VG9nZ2xlU3RyZWFtKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tb2RhbFJlZlNlcnZpY2UucmVnaXN0ZXIodGhpcyk7XHJcbiAgfVxyXG5cclxuICBkaXNtaXNzKG1vZGU6IE1vZGFsRGlzbWlzc01vZGUpIHtcclxuICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICBjYXNlICdoYXJkJzpcclxuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc29mdCc6XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0VG9nZ2xlU3RyZWFtKCkge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkT25lKHRoaXMudG9nZ2xlJC5waXBlKGRlYm91bmNlVGltZSgwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksIHZhbHVlID0+XHJcbiAgICAgIHRoaXMudG9nZ2xlKHZhbHVlKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fdmlzaWJsZSA9IHZhbHVlO1xyXG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG5cclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgdGhpcy5tb2RhbFJlZj8uZGlzbWlzcygpO1xyXG4gICAgICB0aGlzLmRpc2FwcGVhci5lbWl0KCk7XHJcbiAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmxpc3RlbigpLCAwKTtcclxuICAgIHRoaXMubW9kYWxSZWYgPSB0aGlzLm1vZGFsLm9wZW4odGhpcy5tb2RhbENvbnRlbnQsIHtcclxuICAgICAgc2l6ZTogJ21kJyxcclxuICAgICAgY2VudGVyZWQ6IGZhbHNlLFxyXG4gICAgICBrZXlib2FyZDogZmFsc2UsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgIGJlZm9yZURpc21pc3M6ICgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICByZXR1cm4gIXRoaXMudmlzaWJsZTtcclxuICAgICAgfSxcclxuICAgICAgLi4udGhpcy5vcHRpb25zLFxyXG4gICAgICB3aW5kb3dDbGFzczogYCR7dGhpcy5vcHRpb25zLndpbmRvd0NsYXNzIHx8ICcnfSAke3RoaXMubW9kYWxJZGVudGlmaWVyfWAsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFwcGVhci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kYWxSZWZTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcyk7XHJcbiAgICB0aGlzLnRvZ2dsZShmYWxzZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgaWYgKHRoaXMuYnVzeSkgcmV0dXJuO1xyXG5cclxuICAgIGlmICh0aGlzLmlzRm9ybURpcnR5ICYmICF0aGlzLnN1cHByZXNzVW5zYXZlZENoYW5nZXNXYXJuaW5nKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzQ29uZmlybWF0aW9uT3BlbikgcmV0dXJuO1xyXG5cclxuICAgICAgdGhpcy5pc0NvbmZpcm1hdGlvbk9wZW4gPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2VcclxuICAgICAgICAud2FybihcclxuICAgICAgICAgICdBYnBVaTo6QXJlWW91U3VyZVlvdVdhbnRUb0NhbmNlbEVkaXRpbmdXYXJuaW5nTWVzc2FnZScsXHJcbiAgICAgICAgICAnQWJwVWk6OkFyZVlvdVN1cmUnLFxyXG4gICAgICAgICAgeyBkaXNtaXNzaWJsZTogZmFsc2UgfSxcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzQ29uZmlybWF0aW9uT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsaXN0ZW4oKSB7XHJcbiAgICBpZiAodGhpcy5tb2RhbFdpbmRvd1JlZikge1xyXG4gICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5tb2RhbFdpbmRvd1JlZiwgJ2tleXVwJylcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICAgIGRlYm91bmNlVGltZSgxNTApLFxyXG4gICAgICAgICAgZmlsdGVyKChrZXk6IEtleWJvYXJkRXZlbnQpID0+IGtleSAmJiBrZXkua2V5ID09PSAnRXNjYXBlJyAmJiB0aGlzLm9wdGlvbnMua2V5Ym9hcmQpLFxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2UoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnJvbUV2ZW50KHdpbmRvdywgJ2JlZm9yZXVubG9hZCcpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgLy8gVE9ETzogY2hlY2sgdGhpc1xyXG4gICAgICAgIGlmICghdGhpcy5pc0Zvcm1EaXJ0eSB8fCB0aGlzLnN1cHByZXNzVW5zYXZlZENoYW5nZXNXYXJuaW5nKSB7XHJcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5pbml0LmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG5cclxuPG5nLXRlbXBsYXRlICNtb2RhbENvbnRlbnQgbGV0LW1vZGFsPlxyXG4gIDxkaXYgKm5nSWY9XCJhYnBIZWFkZXJcIiBpZD1cImFicC1tb2RhbC1oZWFkZXJcIiBjbGFzcz1cIm1vZGFsLWhlYWRlciBhYnAtbW9kYWwtaGVhZGVyXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWJwSGVhZGVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICDigItcclxuICAgIDxidXR0b25cclxuICAgICAgaWQ9XCJhYnAtbW9kYWwtY2xvc2UtYnV0dG9uXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNsYXNzPVwiYnRuLXNtIGJ0bi1jbG9zZVwiXHJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXHJcbiAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIlxyXG4gICAgPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJhYnBCb2R5XCIgaWQ9XCJhYnAtbW9kYWwtYm9keVwiIGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFicEJvZHlcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiYWJwRm9vdGVyXCIgaWQ9XCJhYnAtbW9kYWwtZm9vdGVyXCIgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhYnBGb290ZXJcIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19