@abp/ng.core 5.0.1 → 5.0.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 (300) hide show
  1. package/README.md +3 -3
  2. package/abp-ng.core.d.ts +5 -5
  3. package/bundles/abp-ng.core-locale.umd.js +361 -361
  4. package/bundles/abp-ng.core-locale.umd.js.map +1 -1
  5. package/bundles/abp-ng.core-testing.umd.js +442 -442
  6. package/bundles/abp-ng.core-testing.umd.js.map +1 -1
  7. package/bundles/abp-ng.core.umd.js +4873 -4868
  8. package/bundles/abp-ng.core.umd.js.map +1 -1
  9. package/esm2015/abp-ng.core.js +4 -4
  10. package/esm2015/lib/abstracts/index.js +2 -2
  11. package/esm2015/lib/abstracts/ng-model.component.js +59 -59
  12. package/esm2015/lib/components/dynamic-layout.component.js +89 -89
  13. package/esm2015/lib/components/index.js +4 -4
  14. package/esm2015/lib/components/replaceable-route-container.component.js +42 -42
  15. package/esm2015/lib/components/router-outlet.component.js +15 -15
  16. package/esm2015/lib/constants/different-locales.js +337 -337
  17. package/esm2015/lib/constants/index.js +2 -2
  18. package/esm2015/lib/core.module.js +281 -281
  19. package/esm2015/lib/directives/autofocus.directive.js +30 -30
  20. package/esm2015/lib/directives/debounce.directive.js +36 -36
  21. package/esm2015/lib/directives/for.directive.js +151 -151
  22. package/esm2015/lib/directives/form-submit.directive.js +69 -69
  23. package/esm2015/lib/directives/index.js +9 -9
  24. package/esm2015/lib/directives/init.directive.js +21 -21
  25. package/esm2015/lib/directives/permission.directive.js +48 -48
  26. package/esm2015/lib/directives/replaceable-template.directive.js +121 -121
  27. package/esm2015/lib/directives/stop-propagation.directive.js +32 -32
  28. package/esm2015/lib/enums/common.js +2 -2
  29. package/esm2015/lib/enums/index.js +2 -2
  30. package/esm2015/lib/guards/auth.guard.js +29 -29
  31. package/esm2015/lib/guards/index.js +3 -3
  32. package/esm2015/lib/guards/permission.guard.js +44 -44
  33. package/esm2015/lib/handlers/oauth-configuration.handler.js +37 -37
  34. package/esm2015/lib/handlers/routes.handler.js +47 -47
  35. package/esm2015/lib/interceptors/api.interceptor.js +54 -54
  36. package/esm2015/lib/interceptors/index.js +2 -2
  37. package/esm2015/lib/localization.module.js +16 -16
  38. package/esm2015/lib/models/auth.js +2 -2
  39. package/esm2015/lib/models/common.js +2 -2
  40. package/esm2015/lib/models/dtos.js +119 -119
  41. package/esm2015/lib/models/environment.js +2 -2
  42. package/esm2015/lib/models/index.js +10 -10
  43. package/esm2015/lib/models/localization.js +2 -2
  44. package/esm2015/lib/models/replaceable-components.js +2 -2
  45. package/esm2015/lib/models/rest.js +2 -2
  46. package/esm2015/lib/models/session.js +2 -2
  47. package/esm2015/lib/models/utility.js +2 -2
  48. package/esm2015/lib/pipes/index.js +3 -3
  49. package/esm2015/lib/pipes/localization.pipe.js +33 -33
  50. package/esm2015/lib/pipes/sort.pipe.js +49 -49
  51. package/esm2015/lib/providers/cookie-language.provider.js +22 -22
  52. package/esm2015/lib/providers/locale.provider.js +22 -22
  53. package/esm2015/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.js +29 -29
  54. package/esm2015/lib/proxy/pages/abp/multi-tenancy/index.js +2 -2
  55. package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.js +24 -24
  56. package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.js +2 -2
  57. package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.js +25 -25
  58. package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.js +5 -5
  59. package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.js +2 -2
  60. package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.js +2 -2
  61. package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.js +3 -3
  62. package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.js +2 -2
  63. package/esm2015/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.js +2 -2
  64. package/esm2015/lib/proxy/volo/abp/http/modeling/index.js +2 -2
  65. package/esm2015/lib/proxy/volo/abp/http/modeling/models.js +3 -3
  66. package/esm2015/lib/proxy/volo/abp/localization/index.js +2 -2
  67. package/esm2015/lib/proxy/volo/abp/localization/models.js +2 -2
  68. package/esm2015/lib/proxy/volo/abp/models.js +2 -2
  69. package/esm2015/lib/services/auth.service.js +47 -47
  70. package/esm2015/lib/services/config-state.service.js +130 -130
  71. package/esm2015/lib/services/content-projection.service.js +17 -17
  72. package/esm2015/lib/services/dom-insertion.service.js +32 -32
  73. package/esm2015/lib/services/environment.service.js +35 -35
  74. package/esm2015/lib/services/http-error-reporter.service.js +29 -29
  75. package/esm2015/lib/services/http-wait.service.js +72 -72
  76. package/esm2015/lib/services/index.js +22 -22
  77. package/esm2015/lib/services/lazy-load.service.js +38 -38
  78. package/esm2015/lib/services/list.service.js +103 -103
  79. package/esm2015/lib/services/localization.service.js +182 -182
  80. package/esm2015/lib/services/multi-tenancy.service.js +48 -48
  81. package/esm2015/lib/services/permission.service.js +64 -64
  82. package/esm2015/lib/services/replaceable-components.service.js +49 -49
  83. package/esm2015/lib/services/resource-wait.service.js +39 -39
  84. package/esm2015/lib/services/rest.service.js +63 -63
  85. package/esm2015/lib/services/router-events.service.js +38 -38
  86. package/esm2015/lib/services/router-wait.service.js +51 -51
  87. package/esm2015/lib/services/routes.service.js +147 -147
  88. package/esm2015/lib/services/session-state.service.js +76 -76
  89. package/esm2015/lib/services/subscription.service.js +41 -41
  90. package/esm2015/lib/services/track-by.service.js +21 -21
  91. package/esm2015/lib/strategies/auth-flow.strategy.js +202 -202
  92. package/esm2015/lib/strategies/container.strategy.js +38 -38
  93. package/esm2015/lib/strategies/content-security.strategy.js +28 -28
  94. package/esm2015/lib/strategies/content.strategy.js +48 -48
  95. package/esm2015/lib/strategies/context.strategy.js +37 -37
  96. package/esm2015/lib/strategies/cross-origin.strategy.js +26 -26
  97. package/esm2015/lib/strategies/dom.strategy.js +27 -27
  98. package/esm2015/lib/strategies/index.js +9 -9
  99. package/esm2015/lib/strategies/loading.strategy.js +58 -58
  100. package/esm2015/lib/strategies/projection.strategy.js +80 -80
  101. package/esm2015/lib/tokens/app-config.token.js +3 -3
  102. package/esm2015/lib/tokens/cookie-language-key.token.js +5 -5
  103. package/esm2015/lib/tokens/index.js +9 -9
  104. package/esm2015/lib/tokens/list.token.js +3 -3
  105. package/esm2015/lib/tokens/localization.token.js +10 -10
  106. package/esm2015/lib/tokens/lodaer-delay.token.js +3 -3
  107. package/esm2015/lib/tokens/manage-profile.token.js +12 -12
  108. package/esm2015/lib/tokens/options.token.js +8 -8
  109. package/esm2015/lib/tokens/tenant-key.token.js +3 -3
  110. package/esm2015/lib/utils/array-utils.js +7 -7
  111. package/esm2015/lib/utils/auth-utils.js +42 -42
  112. package/esm2015/lib/utils/common-utils.js +29 -29
  113. package/esm2015/lib/utils/date-extensions.js +6 -6
  114. package/esm2015/lib/utils/date-utils.js +13 -13
  115. package/esm2015/lib/utils/environment-utils.js +36 -36
  116. package/esm2015/lib/utils/factory-utils.js +24 -24
  117. package/esm2015/lib/utils/file-utils.js +14 -14
  118. package/esm2015/lib/utils/form-utils.js +12 -12
  119. package/esm2015/lib/utils/generator-utils.js +34 -34
  120. package/esm2015/lib/utils/http-utils.js +19 -19
  121. package/esm2015/lib/utils/index.js +21 -21
  122. package/esm2015/lib/utils/initial-utils.js +64 -64
  123. package/esm2015/lib/utils/internal-store-utils.js +36 -36
  124. package/esm2015/lib/utils/lazy-load-utils.js +40 -40
  125. package/esm2015/lib/utils/localization-utils.js +50 -50
  126. package/esm2015/lib/utils/multi-tenancy-utils.js +83 -83
  127. package/esm2015/lib/utils/number-utils.js +4 -4
  128. package/esm2015/lib/utils/object-utils.js +37 -37
  129. package/esm2015/lib/utils/route-utils.js +27 -27
  130. package/esm2015/lib/utils/string-utils.js +25 -21
  131. package/esm2015/lib/utils/tree-utils.js +54 -54
  132. package/esm2015/lib/validators/age.validator.js +14 -14
  133. package/esm2015/lib/validators/credit-card.validator.js +21 -21
  134. package/esm2015/lib/validators/index.js +23 -23
  135. package/esm2015/lib/validators/range.validator.js +15 -15
  136. package/esm2015/lib/validators/required.validator.js +13 -13
  137. package/esm2015/lib/validators/string-length.validator.js +15 -15
  138. package/esm2015/lib/validators/url.validator.js +16 -16
  139. package/esm2015/locale/abp-ng.core-locale.js +4 -4
  140. package/esm2015/locale/public-api.js +2 -2
  141. package/esm2015/locale/utils/register-locale.js +43 -43
  142. package/esm2015/public-api.js +26 -26
  143. package/esm2015/testing/abp-ng.core-testing.js +4 -4
  144. package/esm2015/testing/lib/core-testing.module.js +62 -62
  145. package/esm2015/testing/lib/services/index.js +3 -3
  146. package/esm2015/testing/lib/services/mock-permission.service.js +35 -35
  147. package/esm2015/testing/lib/services/mock-rest.service.js +30 -30
  148. package/esm2015/testing/lib/utils/clear-page.util.js +10 -10
  149. package/esm2015/testing/lib/utils/index.js +3 -3
  150. package/esm2015/testing/lib/utils/wait.util.js +5 -5
  151. package/esm2015/testing/public-api.js +4 -4
  152. package/fesm2015/abp-ng.core-locale.js +40 -40
  153. package/fesm2015/abp-ng.core-locale.js.map +1 -1
  154. package/fesm2015/abp-ng.core-testing.js +113 -113
  155. package/fesm2015/abp-ng.core-testing.js.map +1 -1
  156. package/fesm2015/abp-ng.core.js +3979 -3975
  157. package/fesm2015/abp-ng.core.js.map +1 -1
  158. package/lib/abstracts/index.d.ts +1 -1
  159. package/lib/abstracts/ng-model.component.d.ts +25 -25
  160. package/lib/components/dynamic-layout.component.d.ts +27 -27
  161. package/lib/components/index.d.ts +3 -3
  162. package/lib/components/replaceable-route-container.component.d.ts +17 -17
  163. package/lib/components/router-outlet.component.d.ts +5 -5
  164. package/lib/constants/different-locales.d.ts +334 -334
  165. package/lib/constants/index.d.ts +1 -1
  166. package/lib/core.module.d.ts +56 -56
  167. package/lib/directives/autofocus.directive.d.ts +12 -12
  168. package/lib/directives/debounce.directive.d.ts +13 -13
  169. package/lib/directives/for.directive.d.ts +36 -36
  170. package/lib/directives/form-submit.directive.d.ts +19 -19
  171. package/lib/directives/index.d.ts +8 -8
  172. package/lib/directives/init.directive.d.ts +10 -10
  173. package/lib/directives/permission.directive.d.ts +18 -18
  174. package/lib/directives/replaceable-template.directive.d.ts +30 -30
  175. package/lib/directives/stop-propagation.directive.d.ts +12 -12
  176. package/lib/enums/common.d.ts +5 -5
  177. package/lib/enums/index.d.ts +1 -1
  178. package/lib/guards/auth.guard.d.ts +13 -13
  179. package/lib/guards/index.d.ts +2 -2
  180. package/lib/guards/permission.guard.d.ts +16 -16
  181. package/lib/handlers/oauth-configuration.handler.d.ts +13 -13
  182. package/lib/handlers/routes.handler.d.ts +11 -11
  183. package/lib/interceptors/api.interceptor.d.ts +16 -16
  184. package/lib/interceptors/index.d.ts +1 -1
  185. package/lib/localization.module.d.ts +7 -7
  186. package/lib/models/auth.d.ts +6 -6
  187. package/lib/models/common.d.ts +77 -77
  188. package/lib/models/dtos.d.ts +95 -95
  189. package/lib/models/environment.d.ts +35 -35
  190. package/lib/models/index.d.ts +9 -9
  191. package/lib/models/localization.d.ts +5 -5
  192. package/lib/models/replaceable-components.d.ts +45 -45
  193. package/lib/models/rest.d.ts +35 -35
  194. package/lib/models/session.d.ts +7 -7
  195. package/lib/models/utility.d.ts +14 -14
  196. package/lib/pipes/index.d.ts +2 -2
  197. package/lib/pipes/localization.pipe.d.ts +12 -12
  198. package/lib/pipes/sort.pipe.d.ts +9 -9
  199. package/lib/providers/cookie-language.provider.d.ts +3 -3
  200. package/lib/providers/locale.provider.d.ts +9 -9
  201. package/lib/proxy/pages/abp/multi-tenancy/abp-tenant.service.d.ts +12 -12
  202. package/lib/proxy/pages/abp/multi-tenancy/index.d.ts +1 -1
  203. package/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/abp-api-definition.service.d.ts +11 -11
  204. package/lib/proxy/volo/abp/asp-net-core/mvc/api-exploring/index.d.ts +1 -1
  205. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service.d.ts +11 -11
  206. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/index.d.ts +4 -4
  207. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/models.d.ts +85 -85
  208. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/index.d.ts +1 -1
  209. package/lib/proxy/volo/abp/asp-net-core/mvc/application-configurations/object-extending/models.d.ts +71 -71
  210. package/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/index.d.ts +1 -1
  211. package/lib/proxy/volo/abp/asp-net-core/mvc/multi-tenancy/models.d.ts +14 -14
  212. package/lib/proxy/volo/abp/http/modeling/index.d.ts +1 -1
  213. package/lib/proxy/volo/abp/http/modeling/models.d.ts +70 -70
  214. package/lib/proxy/volo/abp/localization/index.d.ts +1 -1
  215. package/lib/proxy/volo/abp/localization/models.d.ts +6 -6
  216. package/lib/proxy/volo/abp/models.d.ts +4 -4
  217. package/lib/services/auth.service.d.ts +17 -17
  218. package/lib/services/config-state.service.d.ts +339 -339
  219. package/lib/services/content-projection.service.d.ts +10 -10
  220. package/lib/services/dom-insertion.service.d.ts +10 -10
  221. package/lib/services/environment.service.d.ts +96 -96
  222. package/lib/services/http-error-reporter.service.d.ts +12 -12
  223. package/lib/services/http-wait.service.d.ts +30 -30
  224. package/lib/services/index.d.ts +21 -21
  225. package/lib/services/lazy-load.service.d.ts +13 -13
  226. package/lib/services/list.service.d.ts +39 -39
  227. package/lib/services/localization.service.d.ts +47 -47
  228. package/lib/services/multi-tenancy.service.d.ts +22 -22
  229. package/lib/services/permission.service.d.ts +19 -19
  230. package/lib/services/replaceable-components.service.d.ts +19 -19
  231. package/lib/services/resource-wait.service.d.ts +15 -15
  232. package/lib/services/rest.service.d.ts +20 -20
  233. package/lib/services/router-events.service.d.ts +29 -29
  234. package/lib/services/router-wait.service.d.ts +20 -20
  235. package/lib/services/routes.service.d.ts +50 -50
  236. package/lib/services/session-state.service.d.ts +25 -25
  237. package/lib/services/subscription.service.d.ts +17 -17
  238. package/lib/services/track-by.service.d.ts +11 -11
  239. package/lib/strategies/auth-flow.strategy.d.ts +367 -367
  240. package/lib/strategies/container.strategy.d.ts +22 -22
  241. package/lib/strategies/content-security.strategy.d.ts +17 -17
  242. package/lib/strategies/content.strategy.d.ts +26 -26
  243. package/lib/strategies/context.strategy.d.ts +23 -23
  244. package/lib/strategies/cross-origin.strategy.d.ts +14 -14
  245. package/lib/strategies/dom.strategy.d.ts +13 -13
  246. package/lib/strategies/index.d.ts +8 -8
  247. package/lib/strategies/loading.strategy.d.ts +28 -28
  248. package/lib/strategies/projection.strategy.d.ts +39 -39
  249. package/lib/tokens/app-config.token.d.ts +3 -3
  250. package/lib/tokens/cookie-language-key.token.d.ts +2 -2
  251. package/lib/tokens/index.d.ts +8 -8
  252. package/lib/tokens/list.token.d.ts +2 -2
  253. package/lib/tokens/localization.token.d.ts +6 -6
  254. package/lib/tokens/lodaer-delay.token.d.ts +2 -2
  255. package/lib/tokens/manage-profile.token.d.ts +2 -2
  256. package/lib/tokens/options.token.d.ts +4 -4
  257. package/lib/tokens/tenant-key.token.d.ts +2 -2
  258. package/lib/utils/array-utils.d.ts +1 -1
  259. package/lib/utils/auth-utils.d.ts +162 -162
  260. package/lib/utils/common-utils.d.ts +9 -9
  261. package/lib/utils/date-extensions.d.ts +6 -6
  262. package/lib/utils/date-utils.d.ts +4 -4
  263. package/lib/utils/environment-utils.d.ts +3 -3
  264. package/lib/utils/factory-utils.d.ts +9 -9
  265. package/lib/utils/file-utils.d.ts +1 -1
  266. package/lib/utils/form-utils.d.ts +2 -2
  267. package/lib/utils/generator-utils.d.ts +3 -3
  268. package/lib/utils/http-utils.d.ts +8 -8
  269. package/lib/utils/index.d.ts +20 -20
  270. package/lib/utils/initial-utils.d.ts +159 -159
  271. package/lib/utils/internal-store-utils.d.ts +14 -14
  272. package/lib/utils/lazy-load-utils.d.ts +4 -4
  273. package/lib/utils/localization-utils.d.ts +5 -5
  274. package/lib/utils/multi-tenancy-utils.d.ts +3 -3
  275. package/lib/utils/number-utils.d.ts +1 -1
  276. package/lib/utils/object-utils.d.ts +1 -1
  277. package/lib/utils/route-utils.d.ts +8 -8
  278. package/lib/utils/string-utils.d.ts +3 -2
  279. package/lib/utils/tree-utils.d.ts +19 -19
  280. package/lib/validators/age.validator.d.ts +10 -10
  281. package/lib/validators/credit-card.validator.d.ts +5 -5
  282. package/lib/validators/index.d.ts +22 -22
  283. package/lib/validators/range.validator.d.ts +12 -12
  284. package/lib/validators/required.validator.d.ts +8 -8
  285. package/lib/validators/string-length.validator.d.ts +14 -14
  286. package/lib/validators/url.validator.d.ts +5 -5
  287. package/locale/abp-ng.core-locale.d.ts +5 -5
  288. package/locale/public-api.d.ts +1 -1
  289. package/locale/utils/register-locale.d.ts +13 -13
  290. package/package.json +2 -2
  291. package/public-api.d.ts +24 -24
  292. package/testing/abp-ng.core-testing.d.ts +5 -5
  293. package/testing/lib/core-testing.module.d.ts +16 -16
  294. package/testing/lib/services/index.d.ts +2 -2
  295. package/testing/lib/services/mock-permission.service.d.ts +10 -10
  296. package/testing/lib/services/mock-rest.service.d.ts +13 -13
  297. package/testing/lib/utils/clear-page.util.d.ts +2 -2
  298. package/testing/lib/utils/index.d.ts +2 -2
  299. package/testing/lib/utils/wait.util.d.ts +2 -2
  300. package/testing/public-api.d.ts +3 -3
@@ -1,30 +1,30 @@
1
- import { Directive, ElementRef, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class AutofocusDirective {
4
- constructor(elRef) {
5
- this.elRef = elRef;
6
- this._delay = 0;
7
- }
8
- set delay(val) {
9
- this._delay = Number(val) || 0;
10
- }
11
- get delay() {
12
- return this._delay;
13
- }
14
- ngAfterViewInit() {
15
- setTimeout(() => this.elRef.nativeElement.focus(), this.delay);
16
- }
17
- }
18
- AutofocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AutofocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
19
- AutofocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: AutofocusDirective, selector: "[autofocus]", inputs: { delay: ["autofocus", "delay"] }, ngImport: i0 });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AutofocusDirective, decorators: [{
21
- type: Directive,
22
- args: [{
23
- // eslint-disable-next-line @angular-eslint/directive-selector
24
- selector: '[autofocus]',
25
- }]
26
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { delay: [{
27
- type: Input,
28
- args: ['autofocus']
29
- }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZvY3VzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9mb2N1cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNNUUsTUFBTSxPQUFPLGtCQUFrQjtJQVk3QixZQUFvQixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBWDdCLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFXcUIsQ0FBQztJQVR6QyxJQUNJLEtBQUssQ0FBQyxHQUFnQztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUM7SUFDM0UsQ0FBQzs7Z0hBaEJVLGtCQUFrQjtvR0FBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7aUdBS0ssS0FBSztzQkFEUixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnW2F1dG9mb2N1c10nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0b2ZvY3VzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgcHJpdmF0ZSBfZGVsYXkgPSAwO1xyXG5cclxuICBASW5wdXQoJ2F1dG9mb2N1cycpXHJcbiAgc2V0IGRlbGF5KHZhbDogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9kZWxheSA9IE51bWJlcih2YWwpIHx8IDA7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVsYXkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVsYXk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpLCB0aGlzLmRlbGF5IGFzIG51bWJlcik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { Directive, ElementRef, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AutofocusDirective {
4
+ constructor(elRef) {
5
+ this.elRef = elRef;
6
+ this._delay = 0;
7
+ }
8
+ set delay(val) {
9
+ this._delay = Number(val) || 0;
10
+ }
11
+ get delay() {
12
+ return this._delay;
13
+ }
14
+ ngAfterViewInit() {
15
+ setTimeout(() => this.elRef.nativeElement.focus(), this.delay);
16
+ }
17
+ }
18
+ AutofocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AutofocusDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
19
+ AutofocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: AutofocusDirective, selector: "[autofocus]", inputs: { delay: ["autofocus", "delay"] }, ngImport: i0 });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AutofocusDirective, decorators: [{
21
+ type: Directive,
22
+ args: [{
23
+ // eslint-disable-next-line @angular-eslint/directive-selector
24
+ selector: '[autofocus]',
25
+ }]
26
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { delay: [{
27
+ type: Input,
28
+ args: ['autofocus']
29
+ }] } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZvY3VzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2F1dG9mb2N1cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNNUUsTUFBTSxPQUFPLGtCQUFrQjtJQVk3QixZQUFvQixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBWDdCLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFXcUIsQ0FBQztJQVR6QyxJQUNJLEtBQUssQ0FBQyxHQUFnQztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUM7SUFDM0UsQ0FBQzs7Z0hBaEJVLGtCQUFrQjtvR0FBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsYUFBYTtpQkFDeEI7aUdBS0ssS0FBSztzQkFEUixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1thdXRvZm9jdXNdJyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2ZvY3VzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgX2RlbGF5ID0gMDtcblxuICBASW5wdXQoJ2F1dG9mb2N1cycpXG4gIHNldCBkZWxheSh2YWw6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2RlbGF5ID0gTnVtYmVyKHZhbCkgfHwgMDtcbiAgfVxuXG4gIGdldCBkZWxheSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsYXk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpLCB0aGlzLmRlbGF5IGFzIG51bWJlcik7XG4gIH1cbn1cbiJdfQ==
@@ -1,36 +1,36 @@
1
- import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';
2
- import { fromEvent } from 'rxjs';
3
- import { debounceTime } from 'rxjs/operators';
4
- import { SubscriptionService } from '../services/subscription.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../services/subscription.service";
7
- export class InputEventDebounceDirective {
8
- constructor(el, subscription) {
9
- this.el = el;
10
- this.subscription = subscription;
11
- this.debounce = 300;
12
- this.debounceEvent = new EventEmitter();
13
- }
14
- ngOnInit() {
15
- const input$ = fromEvent(this.el.nativeElement, 'input').pipe(debounceTime(this.debounce));
16
- this.subscription.addOne(input$, (event) => {
17
- this.debounceEvent.emit(event);
18
- });
19
- }
20
- }
21
- InputEventDebounceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InputEventDebounceDirective, deps: [{ token: i0.ElementRef }, { token: i1.SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive });
22
- InputEventDebounceDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: InputEventDebounceDirective, selector: "[input.debounce]", inputs: { debounce: "debounce" }, outputs: { debounceEvent: "input.debounce" }, providers: [SubscriptionService], ngImport: i0 });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InputEventDebounceDirective, decorators: [{
24
- type: Directive,
25
- args: [{
26
- // eslint-disable-next-line @angular-eslint/directive-selector
27
- selector: '[input.debounce]',
28
- providers: [SubscriptionService],
29
- }]
30
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.SubscriptionService }]; }, propDecorators: { debounce: [{
31
- type: Input
32
- }], debounceEvent: [{
33
- type: Output,
34
- args: ['input.debounce']
35
- }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZGVib3VuY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFPdkUsTUFBTSxPQUFPLDJCQUEyQjtJQUt0QyxZQUFvQixFQUFjLEVBQVUsWUFBaUM7UUFBekQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUpwRSxhQUFRLEdBQUcsR0FBRyxDQUFDO1FBRVcsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRUcsQ0FBQztJQUVqRixRQUFRO1FBQ04sTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFM0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt5SEFiVSwyQkFBMkI7NkdBQTNCLDJCQUEyQiwySEFGM0IsQ0FBQyxtQkFBbUIsQ0FBQzs0RkFFckIsMkJBQTJCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDO21JQUVVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRTZCLGFBQWE7c0JBQS9DLE1BQU07dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ1tpbnB1dC5kZWJvdW5jZV0nLFxyXG4gIHByb3ZpZGVyczogW1N1YnNjcmlwdGlvblNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRFdmVudERlYm91bmNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkZWJvdW5jZSA9IDMwMDtcclxuXHJcbiAgQE91dHB1dCgnaW5wdXQuZGVib3VuY2UnKSByZWFkb25seSBkZWJvdW5jZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvblNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQkID0gZnJvbUV2ZW50KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2lucHV0JykucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpO1xyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZE9uZShpbnB1dCQsIChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5kZWJvdW5jZUV2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';
2
+ import { fromEvent } from 'rxjs';
3
+ import { debounceTime } from 'rxjs/operators';
4
+ import { SubscriptionService } from '../services/subscription.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../services/subscription.service";
7
+ export class InputEventDebounceDirective {
8
+ constructor(el, subscription) {
9
+ this.el = el;
10
+ this.subscription = subscription;
11
+ this.debounce = 300;
12
+ this.debounceEvent = new EventEmitter();
13
+ }
14
+ ngOnInit() {
15
+ const input$ = fromEvent(this.el.nativeElement, 'input').pipe(debounceTime(this.debounce));
16
+ this.subscription.addOne(input$, (event) => {
17
+ this.debounceEvent.emit(event);
18
+ });
19
+ }
20
+ }
21
+ InputEventDebounceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InputEventDebounceDirective, deps: [{ token: i0.ElementRef }, { token: i1.SubscriptionService }], target: i0.ɵɵFactoryTarget.Directive });
22
+ InputEventDebounceDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: InputEventDebounceDirective, selector: "[input.debounce]", inputs: { debounce: "debounce" }, outputs: { debounceEvent: "input.debounce" }, providers: [SubscriptionService], ngImport: i0 });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: InputEventDebounceDirective, decorators: [{
24
+ type: Directive,
25
+ args: [{
26
+ // eslint-disable-next-line @angular-eslint/directive-selector
27
+ selector: '[input.debounce]',
28
+ providers: [SubscriptionService],
29
+ }]
30
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.SubscriptionService }]; }, propDecorators: { debounce: [{
31
+ type: Input
32
+ }], debounceEvent: [{
33
+ type: Output,
34
+ args: ['input.debounce']
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZGVib3VuY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFPdkUsTUFBTSxPQUFPLDJCQUEyQjtJQUt0QyxZQUFvQixFQUFjLEVBQVUsWUFBaUM7UUFBekQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUpwRSxhQUFRLEdBQUcsR0FBRyxDQUFDO1FBRVcsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRUcsQ0FBQztJQUVqRixRQUFRO1FBQ04sTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFM0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt5SEFiVSwyQkFBMkI7NkdBQTNCLDJCQUEyQiwySEFGM0IsQ0FBQyxtQkFBbUIsQ0FBQzs0RkFFckIsMkJBQTJCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDO21JQUVVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRTZCLGFBQWE7c0JBQS9DLE1BQU07dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3Vic2NyaXB0aW9uLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbaW5wdXQuZGVib3VuY2VdJyxcbiAgcHJvdmlkZXJzOiBbU3Vic2NyaXB0aW9uU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIElucHV0RXZlbnREZWJvdW5jZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGRlYm91bmNlID0gMzAwO1xuXG4gIEBPdXRwdXQoJ2lucHV0LmRlYm91bmNlJykgcmVhZG9ubHkgZGVib3VuY2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvblNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQkID0gZnJvbUV2ZW50KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2lucHV0JykucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkT25lKGlucHV0JCwgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5kZWJvdW5jZUV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,151 +1,151 @@
1
- import { Directive, Input, IterableDiffers, TemplateRef, ViewContainerRef, } from '@angular/core';
2
- import clone from 'just-clone';
3
- import compare from 'just-compare';
4
- import * as i0 from "@angular/core";
5
- class AbpForContext {
6
- constructor($implicit, index, count, list) {
7
- this.$implicit = $implicit;
8
- this.index = index;
9
- this.count = count;
10
- this.list = list;
11
- }
12
- }
13
- class RecordView {
14
- constructor(record, view) {
15
- this.record = record;
16
- this.view = view;
17
- }
18
- }
19
- export class ForDirective {
20
- constructor(tempRef, vcRef, differs) {
21
- this.tempRef = tempRef;
22
- this.vcRef = vcRef;
23
- this.differs = differs;
24
- }
25
- get compareFn() {
26
- return this.compareBy || compare;
27
- }
28
- get trackByFn() {
29
- return this.trackBy || ((index, item) => item.id || index);
30
- }
31
- iterateOverAppliedOperations(changes) {
32
- const rw = [];
33
- changes.forEachOperation((record, previousIndex, currentIndex) => {
34
- if (record.previousIndex == null) {
35
- const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex);
36
- rw.push(new RecordView(record, view));
37
- }
38
- else if (currentIndex == null) {
39
- this.vcRef.remove(previousIndex);
40
- }
41
- else {
42
- const view = this.vcRef.get(previousIndex);
43
- this.vcRef.move(view, currentIndex);
44
- rw.push(new RecordView(record, view));
45
- }
46
- });
47
- for (let i = 0, l = rw.length; i < l; i++) {
48
- rw[i].view.context.$implicit = rw[i].record.item;
49
- }
50
- }
51
- iterateOverAttachedViews(changes) {
52
- for (let i = 0, l = this.vcRef.length; i < l; i++) {
53
- const viewRef = this.vcRef.get(i);
54
- viewRef.context.index = i;
55
- viewRef.context.count = l;
56
- viewRef.context.list = this.items;
57
- }
58
- changes.forEachIdentityChange((record) => {
59
- const viewRef = this.vcRef.get(record.currentIndex);
60
- viewRef.context.$implicit = record.item;
61
- });
62
- }
63
- projectItems(items) {
64
- if (!items.length && this.emptyRef) {
65
- this.vcRef.clear();
66
- this.vcRef.createEmbeddedView(this.emptyRef).rootNodes;
67
- this.isShowEmptyRef = true;
68
- this.differ = null;
69
- return;
70
- }
71
- if (this.emptyRef && this.isShowEmptyRef) {
72
- this.vcRef.clear();
73
- this.isShowEmptyRef = false;
74
- }
75
- if (!this.differ && items) {
76
- this.differ = this.differs.find(items).create(this.trackByFn);
77
- }
78
- if (this.differ) {
79
- const changes = this.differ.diff(items);
80
- if (changes) {
81
- this.iterateOverAppliedOperations(changes);
82
- this.iterateOverAttachedViews(changes);
83
- }
84
- }
85
- }
86
- sortItems(items) {
87
- if (this.orderBy) {
88
- items.sort((a, b) => a[this.orderBy] > b[this.orderBy] ? 1 : a[this.orderBy] < b[this.orderBy] ? -1 : 0);
89
- }
90
- else {
91
- items.sort();
92
- }
93
- }
94
- ngOnChanges() {
95
- let items = clone(this.items);
96
- if (!Array.isArray(items))
97
- return;
98
- const compareFn = this.compareFn;
99
- if (typeof this.filterBy !== 'undefined' &&
100
- typeof this.filterVal !== 'undefined' &&
101
- this.filterVal !== '') {
102
- items = items.filter(item => compareFn(item[this.filterBy], this.filterVal));
103
- }
104
- switch (this.orderDir) {
105
- case 'ASC':
106
- this.sortItems(items);
107
- this.projectItems(items);
108
- break;
109
- case 'DESC':
110
- this.sortItems(items);
111
- items.reverse();
112
- this.projectItems(items);
113
- break;
114
- default:
115
- this.projectItems(items);
116
- }
117
- }
118
- }
119
- ForDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ForDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });
120
- ForDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: ForDirective, selector: "[abpFor]", inputs: { items: ["abpForOf", "items"], orderBy: ["abpForOrderBy", "orderBy"], orderDir: ["abpForOrderDir", "orderDir"], filterBy: ["abpForFilterBy", "filterBy"], filterVal: ["abpForFilterVal", "filterVal"], trackBy: ["abpForTrackBy", "trackBy"], compareBy: ["abpForCompareBy", "compareBy"], emptyRef: ["abpForEmptyRef", "emptyRef"] }, usesOnChanges: true, ngImport: i0 });
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ForDirective, decorators: [{
122
- type: Directive,
123
- args: [{
124
- selector: '[abpFor]',
125
- }]
126
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.IterableDiffers }]; }, propDecorators: { items: [{
127
- type: Input,
128
- args: ['abpForOf']
129
- }], orderBy: [{
130
- type: Input,
131
- args: ['abpForOrderBy']
132
- }], orderDir: [{
133
- type: Input,
134
- args: ['abpForOrderDir']
135
- }], filterBy: [{
136
- type: Input,
137
- args: ['abpForFilterBy']
138
- }], filterVal: [{
139
- type: Input,
140
- args: ['abpForFilterVal']
141
- }], trackBy: [{
142
- type: Input,
143
- args: ['abpForTrackBy']
144
- }], compareBy: [{
145
- type: Input,
146
- args: ['abpForCompareBy']
147
- }], emptyRef: [{
148
- type: Input,
149
- args: ['abpForEmptyRef']
150
- }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsZUFBZSxFQUVmLFdBQVcsRUFFWCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQzs7QUFJbkMsTUFBTSxhQUFhO0lBQ2pCLFlBQ1MsU0FBYyxFQUNkLEtBQWEsRUFDYixLQUFhLEVBQ2IsSUFBVztRQUhYLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFNBQUksR0FBSixJQUFJLENBQU87SUFDakIsQ0FBQztDQUNMO0FBRUQsTUFBTSxVQUFVO0lBQ2QsWUFDUyxNQUFpQyxFQUNqQyxJQUFvQztRQURwQyxXQUFNLEdBQU4sTUFBTSxDQUEyQjtRQUNqQyxTQUFJLEdBQUosSUFBSSxDQUFnQztJQUMxQyxDQUFDO0NBQ0w7QUFLRCxNQUFNLE9BQU8sWUFBWTtJQXNDdkIsWUFDVSxPQUFtQyxFQUNuQyxLQUF1QixFQUN2QixPQUF3QjtRQUZ4QixZQUFPLEdBQVAsT0FBTyxDQUE0QjtRQUNuQyxVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtJQUMvQixDQUFDO0lBWkosSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFhLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FB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S0FBSztzQkFESixLQUFLO3VCQUFDLFVBQVU7Z0JBSWpCLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxlQUFlO2dCQUl0QixRQUFRO3NCQURQLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUl2QixRQUFRO3NCQURQLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUl2QixTQUFTO3NCQURSLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUl4QixPQUFPO3NCQUROLEtBQUs7dUJBQUMsZUFBZTtnQkFJdEIsU0FBUztzQkFEUixLQUFLO3VCQUFDLGlCQUFpQjtnQkFJeEIsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVtYmVkZGVkVmlld1JlZixcclxuICBJbnB1dCxcclxuICBJdGVyYWJsZUNoYW5nZVJlY29yZCxcclxuICBJdGVyYWJsZUNoYW5nZXMsXHJcbiAgSXRlcmFibGVEaWZmZXIsXHJcbiAgSXRlcmFibGVEaWZmZXJzLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBUZW1wbGF0ZVJlZixcclxuICBUcmFja0J5RnVuY3Rpb24sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IGNsb25lIGZyb20gJ2p1c3QtY2xvbmUnO1xyXG5pbXBvcnQgY29tcGFyZSBmcm9tICdqdXN0LWNvbXBhcmUnO1xyXG5cclxuZXhwb3J0IHR5cGUgQ29tcGFyZUZuPFQgPSBhbnk+ID0gKHZhbHVlOiBULCBjb21wYXJpc29uOiBUKSA9PiBib29sZWFuO1xyXG5cclxuY2xhc3MgQWJwRm9yQ29udGV4dCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgJGltcGxpY2l0OiBhbnksXHJcbiAgICBwdWJsaWMgaW5kZXg6IG51bWJlcixcclxuICAgIHB1YmxpYyBjb3VudDogbnVtYmVyLFxyXG4gICAgcHVibGljIGxpc3Q6IGFueVtdLFxyXG4gICkge31cclxufVxyXG5cclxuY2xhc3MgUmVjb3JkVmlldyB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVjb3JkOiBJdGVyYWJsZUNoYW5nZVJlY29yZDxhbnk+LFxyXG4gICAgcHVibGljIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxBYnBGb3JDb250ZXh0PixcclxuICApIHt9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FicEZvcl0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxyXG4gIEBJbnB1dCgnYWJwRm9yT2YnKVxyXG4gIGl0ZW1zOiBhbnlbXTtcclxuXHJcbiAgQElucHV0KCdhYnBGb3JPcmRlckJ5JylcclxuICBvcmRlckJ5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgnYWJwRm9yT3JkZXJEaXInKVxyXG4gIG9yZGVyRGlyOiAnQVNDJyB8ICdERVNDJztcclxuXHJcbiAgQElucHV0KCdhYnBGb3JGaWx0ZXJCeScpXHJcbiAgZmlsdGVyQnk6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCdhYnBGb3JGaWx0ZXJWYWwnKVxyXG4gIGZpbHRlclZhbDogYW55O1xyXG5cclxuICBASW5wdXQoJ2FicEZvclRyYWNrQnknKVxyXG4gIHRyYWNrQnk7XHJcblxyXG4gIEBJbnB1dCgnYWJwRm9yQ29tcGFyZUJ5JylcclxuICBjb21wYXJlQnk6IENvbXBhcmVGbjtcclxuXHJcbiAgQElucHV0KCdhYnBGb3JFbXB0eVJlZicpXHJcbiAgZW1wdHlSZWY6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxhbnk+O1xyXG5cclxuICBwcml2YXRlIGlzU2hvd0VtcHR5UmVmOiBib29sZWFuO1xyXG5cclxuICBnZXQgY29tcGFyZUZuKCk6IENvbXBhcmVGbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wYXJlQnkgfHwgY29tcGFyZTtcclxuICB9XHJcblxyXG4gIGdldCB0cmFja0J5Rm4oKTogVHJhY2tCeUZ1bmN0aW9uPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhY2tCeSB8fCAoKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gKGl0ZW0gYXMgYW55KS5pZCB8fCBpbmRleCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdGVtcFJlZjogVGVtcGxhdGVSZWY8QWJwRm9yQ29udGV4dD4sXHJcbiAgICBwcml2YXRlIHZjUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIGl0ZXJhdGVPdmVyQXBwbGllZE9wZXJhdGlvbnMoY2hhbmdlczogSXRlcmFibGVDaGFuZ2VzPGFueT4pIHtcclxuICAgIGNvbnN0IHJ3OiBSZWNvcmRWaWV3W10gPSBbXTtcclxuXHJcbiAgICBjaGFuZ2VzLmZvckVhY2hPcGVyYXRpb24oXHJcbiAgICAgIChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPGFueT4sIHByZXZpb3VzSW5kZXg6IG51bWJlciwgY3VycmVudEluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBpZiAocmVjb3JkLnByZXZpb3VzSW5kZXggPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMudmNSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxyXG4gICAgICAgICAgICB0aGlzLnRlbXBSZWYsXHJcbiAgICAgICAgICAgIG5ldyBBYnBGb3JDb250ZXh0KG51bGwsIC0xLCAtMSwgdGhpcy5pdGVtcyksXHJcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCxcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgcncucHVzaChuZXcgUmVjb3JkVmlldyhyZWNvcmQsIHZpZXcpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRJbmRleCA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnZjUmVmLnJlbW92ZShwcmV2aW91c0luZGV4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMudmNSZWYuZ2V0KHByZXZpb3VzSW5kZXgpO1xyXG4gICAgICAgICAgdGhpcy52Y1JlZi5tb3ZlKHZpZXcsIGN1cnJlbnRJbmRleCk7XHJcblxyXG4gICAgICAgICAgcncucHVzaChuZXcgUmVjb3JkVmlldyhyZWNvcmQsIHZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPEFicEZvckNvbnRleHQ+KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHJ3Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICByd1tpXS52aWV3LmNvbnRleHQuJGltcGxpY2l0ID0gcndbaV0ucmVjb3JkLml0ZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGl0ZXJhdGVPdmVyQXR0YWNoZWRWaWV3cyhjaGFuZ2VzOiBJdGVyYWJsZUNoYW5nZXM8YW55Pikge1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLnZjUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICBjb25zdCB2aWV3UmVmID0gdGhpcy52Y1JlZi5nZXQoaSkgYXMgRW1iZWRkZWRWaWV3UmVmPEFicEZvckNvbnRleHQ+O1xyXG4gICAgICB2aWV3UmVmLmNvbnRleHQuaW5kZXggPSBpO1xyXG4gICAgICB2aWV3UmVmLmNvbnRleHQuY291bnQgPSBsO1xyXG4gICAgICB2aWV3UmVmLmNvbnRleHQubGlzdCA9IHRoaXMuaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlcy5mb3JFYWNoSWRlbnRpdHlDaGFuZ2UoKHJlY29yZDogSXRlcmFibGVDaGFuZ2VSZWNvcmQ8YW55PikgPT4ge1xyXG4gICAgICBjb25zdCB2aWV3UmVmID0gdGhpcy52Y1JlZi5nZXQocmVjb3JkLmN1cnJlbnRJbmRleCkgYXMgRW1iZWRkZWRWaWV3UmVmPEFicEZvckNvbnRleHQ+O1xyXG4gICAgICB2aWV3UmVmLmNvbnRleHQuJGltcGxpY2l0ID0gcmVjb3JkLml0ZW07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvamVjdEl0ZW1zKGl0ZW1zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgaWYgKCFpdGVtcy5sZW5ndGggJiYgdGhpcy5lbXB0eVJlZikge1xyXG4gICAgICB0aGlzLnZjUmVmLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMudmNSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuZW1wdHlSZWYpLnJvb3ROb2RlcztcclxuICAgICAgdGhpcy5pc1Nob3dFbXB0eVJlZiA9IHRydWU7XHJcbiAgICAgIHRoaXMuZGlmZmVyID0gbnVsbDtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5lbXB0eVJlZiAmJiB0aGlzLmlzU2hvd0VtcHR5UmVmKSB7XHJcbiAgICAgIHRoaXMudmNSZWYuY2xlYXIoKTtcclxuICAgICAgdGhpcy5pc1Nob3dFbXB0eVJlZiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5kaWZmZXIgJiYgaXRlbXMpIHtcclxuICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZChpdGVtcykuY3JlYXRlKHRoaXMudHJhY2tCeUZuKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5kaWZmZXIpIHtcclxuICAgICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYoaXRlbXMpO1xyXG5cclxuICAgICAgaWYgKGNoYW5nZXMpIHtcclxuICAgICAgICB0aGlzLml0ZXJhdGVPdmVyQXBwbGllZE9wZXJhdGlvbnMoY2hhbmdlcyk7XHJcbiAgICAgICAgdGhpcy5pdGVyYXRlT3ZlckF0dGFjaGVkVmlld3MoY2hhbmdlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc29ydEl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMub3JkZXJCeSkge1xyXG4gICAgICBpdGVtcy5zb3J0KChhLCBiKSA9PlxyXG4gICAgICAgIGFbdGhpcy5vcmRlckJ5XSA+IGJbdGhpcy5vcmRlckJ5XSA/IDEgOiBhW3RoaXMub3JkZXJCeV0gPCBiW3RoaXMub3JkZXJCeV0gPyAtMSA6IDAsXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtcy5zb3J0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGxldCBpdGVtcyA9IGNsb25lKHRoaXMuaXRlbXMpIGFzIGFueVtdO1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbXBhcmVGbiA9IHRoaXMuY29tcGFyZUZuO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdHlwZW9mIHRoaXMuZmlsdGVyQnkgIT09ICd1bmRlZmluZWQnICYmXHJcbiAgICAgIHR5cGVvZiB0aGlzLmZpbHRlclZhbCAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuICAgICAgdGhpcy5maWx0ZXJWYWwgIT09ICcnXHJcbiAgICApIHtcclxuICAgICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoaXRlbSA9PiBjb21wYXJlRm4oaXRlbVt0aGlzLmZpbHRlckJ5XSwgdGhpcy5maWx0ZXJWYWwpKTtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMub3JkZXJEaXIpIHtcclxuICAgICAgY2FzZSAnQVNDJzpcclxuICAgICAgICB0aGlzLnNvcnRJdGVtcyhpdGVtcyk7XHJcbiAgICAgICAgdGhpcy5wcm9qZWN0SXRlbXMoaXRlbXMpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnREVTQyc6XHJcbiAgICAgICAgdGhpcy5zb3J0SXRlbXMoaXRlbXMpO1xyXG4gICAgICAgIGl0ZW1zLnJldmVyc2UoKTtcclxuICAgICAgICB0aGlzLnByb2plY3RJdGVtcyhpdGVtcyk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMucHJvamVjdEl0ZW1zKGl0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
1
+ import { Directive, Input, IterableDiffers, TemplateRef, ViewContainerRef, } from '@angular/core';
2
+ import clone from 'just-clone';
3
+ import compare from 'just-compare';
4
+ import * as i0 from "@angular/core";
5
+ class AbpForContext {
6
+ constructor($implicit, index, count, list) {
7
+ this.$implicit = $implicit;
8
+ this.index = index;
9
+ this.count = count;
10
+ this.list = list;
11
+ }
12
+ }
13
+ class RecordView {
14
+ constructor(record, view) {
15
+ this.record = record;
16
+ this.view = view;
17
+ }
18
+ }
19
+ export class ForDirective {
20
+ constructor(tempRef, vcRef, differs) {
21
+ this.tempRef = tempRef;
22
+ this.vcRef = vcRef;
23
+ this.differs = differs;
24
+ }
25
+ get compareFn() {
26
+ return this.compareBy || compare;
27
+ }
28
+ get trackByFn() {
29
+ return this.trackBy || ((index, item) => item.id || index);
30
+ }
31
+ iterateOverAppliedOperations(changes) {
32
+ const rw = [];
33
+ changes.forEachOperation((record, previousIndex, currentIndex) => {
34
+ if (record.previousIndex == null) {
35
+ const view = this.vcRef.createEmbeddedView(this.tempRef, new AbpForContext(null, -1, -1, this.items), currentIndex);
36
+ rw.push(new RecordView(record, view));
37
+ }
38
+ else if (currentIndex == null) {
39
+ this.vcRef.remove(previousIndex);
40
+ }
41
+ else {
42
+ const view = this.vcRef.get(previousIndex);
43
+ this.vcRef.move(view, currentIndex);
44
+ rw.push(new RecordView(record, view));
45
+ }
46
+ });
47
+ for (let i = 0, l = rw.length; i < l; i++) {
48
+ rw[i].view.context.$implicit = rw[i].record.item;
49
+ }
50
+ }
51
+ iterateOverAttachedViews(changes) {
52
+ for (let i = 0, l = this.vcRef.length; i < l; i++) {
53
+ const viewRef = this.vcRef.get(i);
54
+ viewRef.context.index = i;
55
+ viewRef.context.count = l;
56
+ viewRef.context.list = this.items;
57
+ }
58
+ changes.forEachIdentityChange((record) => {
59
+ const viewRef = this.vcRef.get(record.currentIndex);
60
+ viewRef.context.$implicit = record.item;
61
+ });
62
+ }
63
+ projectItems(items) {
64
+ if (!items.length && this.emptyRef) {
65
+ this.vcRef.clear();
66
+ this.vcRef.createEmbeddedView(this.emptyRef).rootNodes;
67
+ this.isShowEmptyRef = true;
68
+ this.differ = null;
69
+ return;
70
+ }
71
+ if (this.emptyRef && this.isShowEmptyRef) {
72
+ this.vcRef.clear();
73
+ this.isShowEmptyRef = false;
74
+ }
75
+ if (!this.differ && items) {
76
+ this.differ = this.differs.find(items).create(this.trackByFn);
77
+ }
78
+ if (this.differ) {
79
+ const changes = this.differ.diff(items);
80
+ if (changes) {
81
+ this.iterateOverAppliedOperations(changes);
82
+ this.iterateOverAttachedViews(changes);
83
+ }
84
+ }
85
+ }
86
+ sortItems(items) {
87
+ if (this.orderBy) {
88
+ items.sort((a, b) => a[this.orderBy] > b[this.orderBy] ? 1 : a[this.orderBy] < b[this.orderBy] ? -1 : 0);
89
+ }
90
+ else {
91
+ items.sort();
92
+ }
93
+ }
94
+ ngOnChanges() {
95
+ let items = clone(this.items);
96
+ if (!Array.isArray(items))
97
+ return;
98
+ const compareFn = this.compareFn;
99
+ if (typeof this.filterBy !== 'undefined' &&
100
+ typeof this.filterVal !== 'undefined' &&
101
+ this.filterVal !== '') {
102
+ items = items.filter(item => compareFn(item[this.filterBy], this.filterVal));
103
+ }
104
+ switch (this.orderDir) {
105
+ case 'ASC':
106
+ this.sortItems(items);
107
+ this.projectItems(items);
108
+ break;
109
+ case 'DESC':
110
+ this.sortItems(items);
111
+ items.reverse();
112
+ this.projectItems(items);
113
+ break;
114
+ default:
115
+ this.projectItems(items);
116
+ }
117
+ }
118
+ }
119
+ ForDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ForDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });
120
+ ForDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: ForDirective, selector: "[abpFor]", inputs: { items: ["abpForOf", "items"], orderBy: ["abpForOrderBy", "orderBy"], orderDir: ["abpForOrderDir", "orderDir"], filterBy: ["abpForFilterBy", "filterBy"], filterVal: ["abpForFilterVal", "filterVal"], trackBy: ["abpForTrackBy", "trackBy"], compareBy: ["abpForCompareBy", "compareBy"], emptyRef: ["abpForEmptyRef", "emptyRef"] }, usesOnChanges: true, ngImport: i0 });
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ForDirective, decorators: [{
122
+ type: Directive,
123
+ args: [{
124
+ selector: '[abpFor]',
125
+ }]
126
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.IterableDiffers }]; }, propDecorators: { items: [{
127
+ type: Input,
128
+ args: ['abpForOf']
129
+ }], orderBy: [{
130
+ type: Input,
131
+ args: ['abpForOrderBy']
132
+ }], orderDir: [{
133
+ type: Input,
134
+ args: ['abpForOrderDir']
135
+ }], filterBy: [{
136
+ type: Input,
137
+ args: ['abpForFilterBy']
138
+ }], filterVal: [{
139
+ type: Input,
140
+ args: ['abpForFilterVal']
141
+ }], trackBy: [{
142
+ type: Input,
143
+ args: ['abpForTrackBy']
144
+ }], compareBy: [{
145
+ type: Input,
146
+ args: ['abpForCompareBy']
147
+ }], emptyRef: [{
148
+ type: Input,
149
+ args: ['abpForEmptyRef']
150
+ }] } });
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2Zvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsZUFBZSxFQUVmLFdBQVcsRUFFWCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQzs7QUFJbkMsTUFBTSxhQUFhO0lBQ2pCLFlBQ1MsU0FBYyxFQUNkLEtBQWEsRUFDYixLQUFhLEVBQ2IsSUFBVztRQUhYLGNBQVMsR0FBVCxTQUFTLENBQUs7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLFNBQUksR0FBSixJQUFJLENBQU87SUFDakIsQ0FBQztDQUNMO0FBRUQsTUFBTSxVQUFVO0lBQ2QsWUFDUyxNQUFpQyxFQUNqQyxJQUFvQztRQURwQyxXQUFNLEdBQU4sTUFBTSxDQUEyQjtRQUNqQyxTQUFJLEdBQUosSUFBSSxDQUFnQztJQUMxQyxDQUFDO0NBQ0w7QUFLRCxNQUFNLE9BQU8sWUFBWTtJQXNDdkIsWUFDVSxPQUFtQyxFQUNuQyxLQUF1QixFQUN2QixPQUF3QjtRQUZ4QixZQUFPLEdBQVAsT0FBTyxDQUE0QjtRQUNuQyxVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFpQjtJQUMvQixDQUFDO0lBWkosSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFhLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FB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S0FBSztzQkFESixLQUFLO3VCQUFDLFVBQVU7Z0JBSWpCLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxlQUFlO2dCQUl0QixRQUFRO3NCQURQLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUl2QixRQUFRO3NCQURQLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUl2QixTQUFTO3NCQURSLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUl4QixPQUFPO3NCQUROLEtBQUs7dUJBQUMsZUFBZTtnQkFJdEIsU0FBUztzQkFEUixLQUFLO3VCQUFDLGlCQUFpQjtnQkFJeEIsUUFBUTtzQkFEUCxLQUFLO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbnB1dCxcbiAgSXRlcmFibGVDaGFuZ2VSZWNvcmQsXG4gIEl0ZXJhYmxlQ2hhbmdlcyxcbiAgSXRlcmFibGVEaWZmZXIsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT25DaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHJhY2tCeUZ1bmN0aW9uLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJztcbmltcG9ydCBjb21wYXJlIGZyb20gJ2p1c3QtY29tcGFyZSc7XG5cbmV4cG9ydCB0eXBlIENvbXBhcmVGbjxUID0gYW55PiA9ICh2YWx1ZTogVCwgY29tcGFyaXNvbjogVCkgPT4gYm9vbGVhbjtcblxuY2xhc3MgQWJwRm9yQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyAkaW1wbGljaXQ6IGFueSxcbiAgICBwdWJsaWMgaW5kZXg6IG51bWJlcixcbiAgICBwdWJsaWMgY291bnQ6IG51bWJlcixcbiAgICBwdWJsaWMgbGlzdDogYW55W10sXG4gICkge31cbn1cblxuY2xhc3MgUmVjb3JkVmlldyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPGFueT4sXG4gICAgcHVibGljIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxBYnBGb3JDb250ZXh0PixcbiAgKSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWJwRm9yXScsXG59KVxuZXhwb3J0IGNsYXNzIEZvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnYWJwRm9yT2YnKVxuICBpdGVtczogYW55W107XG5cbiAgQElucHV0KCdhYnBGb3JPcmRlckJ5JylcbiAgb3JkZXJCeTogc3RyaW5nO1xuXG4gIEBJbnB1dCgnYWJwRm9yT3JkZXJEaXInKVxuICBvcmRlckRpcjogJ0FTQycgfCAnREVTQyc7XG5cbiAgQElucHV0KCdhYnBGb3JGaWx0ZXJCeScpXG4gIGZpbHRlckJ5OiBzdHJpbmc7XG5cbiAgQElucHV0KCdhYnBGb3JGaWx0ZXJWYWwnKVxuICBmaWx0ZXJWYWw6IGFueTtcblxuICBASW5wdXQoJ2FicEZvclRyYWNrQnknKVxuICB0cmFja0J5O1xuXG4gIEBJbnB1dCgnYWJwRm9yQ29tcGFyZUJ5JylcbiAgY29tcGFyZUJ5OiBDb21wYXJlRm47XG5cbiAgQElucHV0KCdhYnBGb3JFbXB0eVJlZicpXG4gIGVtcHR5UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxhbnk+O1xuXG4gIHByaXZhdGUgaXNTaG93RW1wdHlSZWY6IGJvb2xlYW47XG5cbiAgZ2V0IGNvbXBhcmVGbigpOiBDb21wYXJlRm4ge1xuICAgIHJldHVybiB0aGlzLmNvbXBhcmVCeSB8fCBjb21wYXJlO1xuICB9XG5cbiAgZ2V0IHRyYWNrQnlGbigpOiBUcmFja0J5RnVuY3Rpb248YW55PiB7XG4gICAgcmV0dXJuIHRoaXMudHJhY2tCeSB8fCAoKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gKGl0ZW0gYXMgYW55KS5pZCB8fCBpbmRleCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbXBSZWY6IFRlbXBsYXRlUmVmPEFicEZvckNvbnRleHQ+LFxuICAgIHByaXZhdGUgdmNSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMsXG4gICkge31cblxuICBwcml2YXRlIGl0ZXJhdGVPdmVyQXBwbGllZE9wZXJhdGlvbnMoY2hhbmdlczogSXRlcmFibGVDaGFuZ2VzPGFueT4pIHtcbiAgICBjb25zdCBydzogUmVjb3JkVmlld1tdID0gW107XG5cbiAgICBjaGFuZ2VzLmZvckVhY2hPcGVyYXRpb24oXG4gICAgICAocmVjb3JkOiBJdGVyYWJsZUNoYW5nZVJlY29yZDxhbnk+LCBwcmV2aW91c0luZGV4OiBudW1iZXIsIGN1cnJlbnRJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGlmIChyZWNvcmQucHJldmlvdXNJbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMudmNSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgICAgICAgdGhpcy50ZW1wUmVmLFxuICAgICAgICAgICAgbmV3IEFicEZvckNvbnRleHQobnVsbCwgLTEsIC0xLCB0aGlzLml0ZW1zKSxcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcncucHVzaChuZXcgUmVjb3JkVmlldyhyZWNvcmQsIHZpZXcpKTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMudmNSZWYucmVtb3ZlKHByZXZpb3VzSW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLnZjUmVmLmdldChwcmV2aW91c0luZGV4KTtcbiAgICAgICAgICB0aGlzLnZjUmVmLm1vdmUodmlldywgY3VycmVudEluZGV4KTtcblxuICAgICAgICAgIHJ3LnB1c2gobmV3IFJlY29yZFZpZXcocmVjb3JkLCB2aWV3IGFzIEVtYmVkZGVkVmlld1JlZjxBYnBGb3JDb250ZXh0PikpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICk7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHJ3Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcndbaV0udmlldy5jb250ZXh0LiRpbXBsaWNpdCA9IHJ3W2ldLnJlY29yZC5pdGVtO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXRlcmF0ZU92ZXJBdHRhY2hlZFZpZXdzKGNoYW5nZXM6IEl0ZXJhYmxlQ2hhbmdlczxhbnk+KSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLnZjUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3Qgdmlld1JlZiA9IHRoaXMudmNSZWYuZ2V0KGkpIGFzIEVtYmVkZGVkVmlld1JlZjxBYnBGb3JDb250ZXh0PjtcbiAgICAgIHZpZXdSZWYuY29udGV4dC5pbmRleCA9IGk7XG4gICAgICB2aWV3UmVmLmNvbnRleHQuY291bnQgPSBsO1xuICAgICAgdmlld1JlZi5jb250ZXh0Lmxpc3QgPSB0aGlzLml0ZW1zO1xuICAgIH1cblxuICAgIGNoYW5nZXMuZm9yRWFjaElkZW50aXR5Q2hhbmdlKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPGFueT4pID0+IHtcbiAgICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLnZjUmVmLmdldChyZWNvcmQuY3VycmVudEluZGV4KSBhcyBFbWJlZGRlZFZpZXdSZWY8QWJwRm9yQ29udGV4dD47XG4gICAgICB2aWV3UmVmLmNvbnRleHQuJGltcGxpY2l0ID0gcmVjb3JkLml0ZW07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2plY3RJdGVtcyhpdGVtczogYW55W10pOiB2b2lkIHtcbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCAmJiB0aGlzLmVtcHR5UmVmKSB7XG4gICAgICB0aGlzLnZjUmVmLmNsZWFyKCk7XG4gICAgICB0aGlzLnZjUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLmVtcHR5UmVmKS5yb290Tm9kZXM7XG4gICAgICB0aGlzLmlzU2hvd0VtcHR5UmVmID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGlmZmVyID0gbnVsbDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVtcHR5UmVmICYmIHRoaXMuaXNTaG93RW1wdHlSZWYpIHtcbiAgICAgIHRoaXMudmNSZWYuY2xlYXIoKTtcbiAgICAgIHRoaXMuaXNTaG93RW1wdHlSZWYgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGlmZmVyICYmIGl0ZW1zKSB7XG4gICAgICB0aGlzLmRpZmZlciA9IHRoaXMuZGlmZmVycy5maW5kKGl0ZW1zKS5jcmVhdGUodGhpcy50cmFja0J5Rm4pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRpZmZlcikge1xuICAgICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuZGlmZmVyLmRpZmYoaXRlbXMpO1xuXG4gICAgICBpZiAoY2hhbmdlcykge1xuICAgICAgICB0aGlzLml0ZXJhdGVPdmVyQXBwbGllZE9wZXJhdGlvbnMoY2hhbmdlcyk7XG4gICAgICAgIHRoaXMuaXRlcmF0ZU92ZXJBdHRhY2hlZFZpZXdzKGNoYW5nZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydEl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLm9yZGVyQnkpIHtcbiAgICAgIGl0ZW1zLnNvcnQoKGEsIGIpID0+XG4gICAgICAgIGFbdGhpcy5vcmRlckJ5XSA+IGJbdGhpcy5vcmRlckJ5XSA/IDEgOiBhW3RoaXMub3JkZXJCeV0gPCBiW3RoaXMub3JkZXJCeV0gPyAtMSA6IDAsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtcy5zb3J0KCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgbGV0IGl0ZW1zID0gY2xvbmUodGhpcy5pdGVtcykgYXMgYW55W107XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29tcGFyZUZuID0gdGhpcy5jb21wYXJlRm47XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgdGhpcy5maWx0ZXJCeSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiB0aGlzLmZpbHRlclZhbCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHRoaXMuZmlsdGVyVmFsICE9PSAnJ1xuICAgICkge1xuICAgICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoaXRlbSA9PiBjb21wYXJlRm4oaXRlbVt0aGlzLmZpbHRlckJ5XSwgdGhpcy5maWx0ZXJWYWwpKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMub3JkZXJEaXIpIHtcbiAgICAgIGNhc2UgJ0FTQyc6XG4gICAgICAgIHRoaXMuc29ydEl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgdGhpcy5wcm9qZWN0SXRlbXMoaXRlbXMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnREVTQyc6XG4gICAgICAgIHRoaXMuc29ydEl0ZW1zKGl0ZW1zKTtcbiAgICAgICAgaXRlbXMucmV2ZXJzZSgpO1xuICAgICAgICB0aGlzLnByb2plY3RJdGVtcyhpdGVtcyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLnByb2plY3RJdGVtcyhpdGVtcyk7XG4gICAgfVxuICB9XG59XG4iXX0=