@one-paragon/angular-utilities 1.3.0 → 2.0.0-beta.1

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 (162) hide show
  1. package/fesm2022/one-paragon-angular-utilities.mjs +1188 -1268
  2. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
  3. package/http-request-state/HttpRequestStateStore.d.ts +1 -1
  4. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +1 -1
  5. package/ngrx/actionable-selector.d.ts +3 -3
  6. package/package.json +7 -10
  7. package/rxjs/subscriber.directive.d.ts +1 -1
  8. package/table-builder/classes/TableBuilderDataSource.d.ts +8 -2
  9. package/table-builder/classes/filter-info.d.ts +3 -1
  10. package/table-builder/classes/table-builder.d.ts +1 -1
  11. package/table-builder/classes/table-store.d.ts +60 -68
  12. package/table-builder/classes/table-store.helpers.d.ts +28 -0
  13. package/table-builder/components/column-builder/column-builder.component.d.ts +19 -29
  14. package/table-builder/components/filter/filter.component.d.ts +3 -3
  15. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +9 -10
  16. package/table-builder/components/generic-table/generic-table.component.d.ts +26 -38
  17. package/table-builder/components/generic-table/paginator.component.d.ts +1 -3
  18. package/table-builder/components/header-menu/header-menu.component.d.ts +3 -5
  19. package/table-builder/components/in-filter/in-filter.component.d.ts +2 -2
  20. package/table-builder/components/link-column.component.d.ts +3 -3
  21. package/table-builder/components/number-filter/number-filter.component.d.ts +3 -3
  22. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +4 -4
  23. package/table-builder/components/sort-menu/sort-menu.component.d.ts +6 -11
  24. package/table-builder/components/table-container/table-container-imports.d.ts +2 -3
  25. package/table-builder/components/table-container/table-container.d.ts +53 -51
  26. package/table-builder/components/table-container/table-container.helpers/filter-state.helpers.d.ts +3 -1
  27. package/table-builder/components/table-container/table-container.helpers/meta-data.helpers.d.ts +2 -0
  28. package/table-builder/components/table-container/tableProps.d.ts +0 -2
  29. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +1 -1
  30. package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +1 -1
  31. package/table-builder/directives/custom-cell-directive.d.ts +16 -17
  32. package/table-builder/directives/multi-sort.directive.d.ts +1 -1
  33. package/table-builder/directives/table-wrapper.directive.d.ts +1 -1
  34. package/table-builder/directives/tb-filter.directive.d.ts +14 -16
  35. package/table-builder/interfaces/report-def.d.ts +4 -0
  36. package/table-builder/ngrx/tableBuilderStateStore.d.ts +4 -4
  37. package/table-builder/pipes/format-filter-type.pipe.d.ts +1 -1
  38. package/table-builder/pipes/format-filter-value.pipe.d.ts +1 -2
  39. package/table-builder/pipes/key-display.d.ts +1 -2
  40. package/table-builder/services/transform-creator.d.ts +0 -1
  41. package/utilities/pipes/function.pipe.d.ts +5 -1
  42. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +0 -24
  43. package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +0 -20
  44. package/esm2022/action-state/index.mjs +0 -8
  45. package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +0 -23
  46. package/esm2022/action-state/ngrx.mjs +0 -47
  47. package/esm2022/http-request-state/HttpRequestStateFactory.mjs +0 -51
  48. package/esm2022/http-request-state/HttpRequestStateStore.mjs +0 -135
  49. package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +0 -30
  50. package/esm2022/http-request-state/directives/http-error-state-directive.mjs +0 -23
  51. package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +0 -23
  52. package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +0 -23
  53. package/esm2022/http-request-state/directives/http-success-state-directive.mjs +0 -29
  54. package/esm2022/http-request-state/directives/index.mjs +0 -6
  55. package/esm2022/http-request-state/directives/request-state-directive.mjs +0 -61
  56. package/esm2022/http-request-state/helpers.mjs +0 -22
  57. package/esm2022/http-request-state/http-request-state.mjs +0 -39
  58. package/esm2022/http-request-state/http-state-module.mjs +0 -40
  59. package/esm2022/http-request-state/index.mjs +0 -7
  60. package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +0 -4
  61. package/esm2022/http-request-state/rxjs/getRequestorState.mjs +0 -3
  62. package/esm2022/http-request-state/rxjs/index.mjs +0 -5
  63. package/esm2022/http-request-state/rxjs/tapError.mjs +0 -12
  64. package/esm2022/http-request-state/rxjs/tapSuccess.mjs +0 -12
  65. package/esm2022/http-request-state/types.mjs +0 -16
  66. package/esm2022/ngrx/actionable-selector.mjs +0 -107
  67. package/esm2022/ngrx/index.mjs +0 -2
  68. package/esm2022/one-paragon-angular-utilities.mjs +0 -5
  69. package/esm2022/public-api.mjs +0 -20
  70. package/esm2022/rxjs/defaultShareReplay.mjs +0 -7
  71. package/esm2022/rxjs/index.mjs +0 -6
  72. package/esm2022/rxjs/mapError.mjs +0 -8
  73. package/esm2022/rxjs/rxjs-operators.mjs +0 -92
  74. package/esm2022/rxjs/subjectifier.mjs +0 -15
  75. package/esm2022/rxjs/subscriber.directive.mjs +0 -50
  76. package/esm2022/table-builder/classes/DefaultSettings.mjs +0 -6
  77. package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +0 -23
  78. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +0 -18
  79. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +0 -48
  80. package/esm2022/table-builder/classes/TableState.mjs +0 -48
  81. package/esm2022/table-builder/classes/data-store.mjs +0 -15
  82. package/esm2022/table-builder/classes/display-col.mjs +0 -2
  83. package/esm2022/table-builder/classes/filter-info.mjs +0 -61
  84. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +0 -116
  85. package/esm2022/table-builder/classes/table-builder.mjs +0 -77
  86. package/esm2022/table-builder/classes/table-store.mjs +0 -388
  87. package/esm2022/table-builder/components/array-column.component.mjs +0 -53
  88. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +0 -145
  89. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +0 -45
  90. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +0 -29
  91. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +0 -24
  92. package/esm2022/table-builder/components/filter/filter.component.mjs +0 -64
  93. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +0 -102
  94. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +0 -47
  95. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +0 -306
  96. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +0 -104
  97. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +0 -21
  98. package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +0 -103
  99. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +0 -65
  100. package/esm2022/table-builder/components/index.mjs +0 -10
  101. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +0 -47
  102. package/esm2022/table-builder/components/link-column.component.mjs +0 -74
  103. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +0 -29
  104. package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +0 -64
  105. package/esm2022/table-builder/components/scroll-strategy.mjs +0 -60
  106. package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +0 -46
  107. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +0 -82
  108. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +0 -26
  109. package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +0 -135
  110. package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +0 -83
  111. package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +0 -71
  112. package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +0 -36
  113. package/esm2022/table-builder/components/table-container/table-container.mjs +0 -334
  114. package/esm2022/table-builder/components/table-container/tableProps.mjs +0 -8
  115. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +0 -155
  116. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +0 -44
  117. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +0 -35
  118. package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +0 -25
  119. package/esm2022/table-builder/directives/custom-cell-directive.mjs +0 -73
  120. package/esm2022/table-builder/directives/index.mjs +0 -6
  121. package/esm2022/table-builder/directives/multi-sort.directive.mjs +0 -50
  122. package/esm2022/table-builder/directives/resize-column.directive.mjs +0 -87
  123. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +0 -18
  124. package/esm2022/table-builder/directives/tb-filter.directive.mjs +0 -396
  125. package/esm2022/table-builder/enums/filterTypes.mjs +0 -29
  126. package/esm2022/table-builder/functions/boolean-filter-function.mjs +0 -10
  127. package/esm2022/table-builder/functions/date-filter-function.mjs +0 -58
  128. package/esm2022/table-builder/functions/download-data.mjs +0 -12
  129. package/esm2022/table-builder/functions/null-filter-function.mjs +0 -8
  130. package/esm2022/table-builder/functions/number-filter-function.mjs +0 -32
  131. package/esm2022/table-builder/functions/sort-data-function.mjs +0 -17
  132. package/esm2022/table-builder/functions/string-filter-function.mjs +0 -41
  133. package/esm2022/table-builder/interfaces/ColumnInfo.mjs +0 -2
  134. package/esm2022/table-builder/interfaces/dictionary.mjs +0 -2
  135. package/esm2022/table-builder/interfaces/report-def.mjs +0 -50
  136. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +0 -154
  137. package/esm2022/table-builder/pipes/column-total.pipe.mjs +0 -22
  138. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +0 -18
  139. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +0 -43
  140. package/esm2022/table-builder/pipes/key-display.mjs +0 -18
  141. package/esm2022/table-builder/services/export-to-csv.service.mjs +0 -75
  142. package/esm2022/table-builder/services/link-creator.service.mjs +0 -50
  143. package/esm2022/table-builder/services/table-template-service.mjs +0 -60
  144. package/esm2022/table-builder/services/transform-creator.mjs +0 -100
  145. package/esm2022/table-builder/table-builder.module.mjs +0 -124
  146. package/esm2022/utilities/array-helpers.mjs +0 -14
  147. package/esm2022/utilities/directives/auto-focus.directive.mjs +0 -25
  148. package/esm2022/utilities/directives/clickEmitterDirective.mjs +0 -22
  149. package/esm2022/utilities/directives/clickSubject.mjs +0 -29
  150. package/esm2022/utilities/directives/conditional-classes.directive.mjs +0 -36
  151. package/esm2022/utilities/directives/dialog-service.mjs +0 -21
  152. package/esm2022/utilities/directives/dialog.mjs +0 -145
  153. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +0 -59
  154. package/esm2022/utilities/directives/prevent-enter.directive.mjs +0 -20
  155. package/esm2022/utilities/directives/stop-propagation.directive.mjs +0 -26
  156. package/esm2022/utilities/directives/styler.mjs +0 -41
  157. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +0 -28
  158. package/esm2022/utilities/index.mjs +0 -16
  159. package/esm2022/utilities/module.mjs +0 -90
  160. package/esm2022/utilities/pipes/function.pipe.mjs +0 -22
  161. package/esm2022/utilities/pipes/phone.pipe.mjs +0 -20
  162. package/esm2022/utilities/pipes/space-case.pipes.mjs +0 -28
@@ -1,20 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';
3
- import * as i0 from "@angular/core";
4
- export class ActionStateUiModule {
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ActionStateUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: ActionStateUiModule, imports: [ActionStateSpinnerComponent], exports: [ActionStateSpinnerComponent] });
7
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ActionStateUiModule, imports: [ActionStateSpinnerComponent] });
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ActionStateUiModule, decorators: [{
10
- type: NgModule,
11
- args: [{
12
- imports: [
13
- ActionStateSpinnerComponent,
14
- ],
15
- exports: [
16
- ActionStateSpinnerComponent,
17
- ]
18
- }]
19
- }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXN0YXRlLXVpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9hY3Rpb24tc3RhdGUvYWN0aW9uLXN0YXRlLXVpL2FjdGlvbi1zdGF0ZS11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7QUFXckcsTUFBTSxPQUFPLG1CQUFtQjt1R0FBbkIsbUJBQW1CO3dHQUFuQixtQkFBbUIsWUFONUIsMkJBQTJCLGFBRzNCLDJCQUEyQjt3R0FHbEIsbUJBQW1CLFlBTjVCLDJCQUEyQjs7MkZBTWxCLG1CQUFtQjtrQkFSL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCO3FCQUM1QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvblN0YXRlU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1zdGF0ZS1zcGlubmVyL2FjdGlvbi1zdGF0ZS1zcGlubmVyLmNvbXBvbmVudCc7XHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBBY3Rpb25TdGF0ZVNwaW5uZXJDb21wb25lbnQsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBBY3Rpb25TdGF0ZVNwaW5uZXJDb21wb25lbnQsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aW9uU3RhdGVVaU1vZHVsZSB7IH1cclxuIl19
@@ -1,8 +0,0 @@
1
- /*
2
- * Public API Surface of action-state
3
- */
4
- export * from './ngrx';
5
- export * from './ngrx-ext/ngrx-ext.module';
6
- export * from './action-state-ui/action-state-ui.module';
7
- export * from './action-state-spinner/action-state-spinner.component';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvYWN0aW9uLXN0YXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsdURBQXVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYWN0aW9uLXN0YXRlXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9uZ3J4JztcclxuZXhwb3J0ICogZnJvbSAnLi9uZ3J4LWV4dC9uZ3J4LWV4dC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi1zdGF0ZS11aS9hY3Rpb24tc3RhdGUtdWkubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24tc3RhdGUtc3Bpbm5lci9hY3Rpb24tc3RhdGUtc3Bpbm5lci5jb21wb25lbnQnO1xyXG4iXX0=
@@ -1,23 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { actionStatusReducer } from '../ngrx';
4
- import { StoreModule } from '@ngrx/store';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@ngrx/store";
7
- export class NgrxExtModule {
8
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: NgrxExtModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: NgrxExtModule, imports: [CommonModule, i1.StoreFeatureModule] });
10
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: NgrxExtModule, imports: [CommonModule,
11
- StoreModule.forFeature('ActionStatus', actionStatusReducer)] });
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: NgrxExtModule, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- declarations: [],
17
- imports: [
18
- CommonModule,
19
- StoreModule.forFeature('ActionStatus', actionStatusReducer),
20
- ]
21
- }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyeC1leHQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL2FjdGlvbi1zdGF0ZS9uZ3J4LWV4dC9uZ3J4LWV4dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQVcxQyxNQUFNLE9BQU8sYUFBYTt1R0FBYixhQUFhO3dHQUFiLGFBQWEsWUFKdEIsWUFBWTt3R0FJSCxhQUFhLFlBSnRCLFlBQVk7WUFDWixXQUFXLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQzs7MkZBR2xELGFBQWE7a0JBUHpCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVcsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDO3FCQUM1RDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGFjdGlvblN0YXR1c1JlZHVjZXIgfSBmcm9tICcuLi9uZ3J4JztcclxuaW1wb3J0IHsgU3RvcmVNb2R1bGUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcblxyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBTdG9yZU1vZHVsZS5mb3JGZWF0dXJlKCdBY3Rpb25TdGF0dXMnLCBhY3Rpb25TdGF0dXNSZWR1Y2VyKSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3J4RXh0TW9kdWxlIHsgfVxyXG4iXX0=
@@ -1,47 +0,0 @@
1
- import { createFeatureSelector, createSelector } from '@ngrx/store';
2
- import { createEntityAdapter } from '@ngrx/entity';
3
- import { get } from 'lodash';
4
- // State
5
- export class AppStatusState {
6
- ActionStatusBar;
7
- }
8
- export class ActionStatus {
9
- id;
10
- displayName;
11
- status;
12
- responsePayload;
13
- }
14
- const InitialState = {
15
- ids: [],
16
- entities: {}
17
- };
18
- export var serverStatusTypes;
19
- (function (serverStatusTypes) {
20
- serverStatusTypes[serverStatusTypes["notStarted"] = 0] = "notStarted";
21
- serverStatusTypes[serverStatusTypes["inProgress"] = 1] = "inProgress";
22
- serverStatusTypes[serverStatusTypes["success"] = 2] = "success";
23
- serverStatusTypes[serverStatusTypes["error"] = 3] = "error";
24
- })(serverStatusTypes || (serverStatusTypes = {}));
25
- // Entity and Selectors
26
- export const statusAdapter = createEntityAdapter();
27
- export const initialState = statusAdapter.getInitialState(InitialState);
28
- export const getStatusState = createFeatureSelector('ActionStatus');
29
- export const { selectIds, selectEntities, selectAll, selectTotal } = statusAdapter.getSelectors(getStatusState);
30
- export const selectEntity = (id) => createSelector(selectEntities, (entities) => entities[id]);
31
- // Reducers
32
- export function actionStatusReducer(state = initialState, action) {
33
- const actionStatus = get(action, 'payload.actionStatus');
34
- if (actionStatus) {
35
- if (state.ids.find(id => id === actionStatus.id)) {
36
- const modifiedObj = { ...state.entities[actionStatus.id] };
37
- modifiedObj.status = actionStatus.status;
38
- modifiedObj.responsePayload = actionStatus.responsePayload;
39
- return statusAdapter.upsertOne(modifiedObj, state);
40
- }
41
- else {
42
- return statusAdapter.addOne(actionStatus, state);
43
- }
44
- }
45
- return state;
46
- }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9hY3Rpb24tc3RhdGUvbmdyeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBZSxNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTdCLFFBQVE7QUFDUixNQUFNLE9BQU8sY0FBYztJQUNoQixlQUFlLENBQWtCO0NBQzNDO0FBT0QsTUFBTSxPQUFPLFlBQVk7SUFDdkIsRUFBRSxDQUFVO0lBQ1osV0FBVyxDQUFVO0lBQ3JCLE1BQU0sQ0FBcUI7SUFDM0IsZUFBZSxDQUFPO0NBQ3ZCO0FBRUQsTUFBTSxZQUFZLEdBQWdCO0lBQ2hDLEdBQUcsRUFBRSxFQUFFO0lBQ1AsUUFBUSxFQUFFLEVBQUU7Q0FDYixDQUFDO0FBRUYsTUFBTSxDQUFOLElBQVksaUJBS1g7QUFMRCxXQUFZLGlCQUFpQjtJQUMzQixxRUFBYyxDQUFBO0lBQ2QscUVBQWMsQ0FBQTtJQUNkLCtEQUFXLENBQUE7SUFDWCwyREFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFLNUI7QUFFRCx1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixFQUFnQixDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUVyRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQVEsY0FBYyxDQUFDLENBQUM7QUFDM0UsTUFBTSxDQUFDLE1BQU0sRUFDWCxTQUFTLEVBQ1QsY0FBYyxFQUNkLFNBQVMsRUFDVCxXQUFXLEVBQ1osR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUN4RCxjQUFjLEVBQ2QsQ0FBQyxRQUFhLEVBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FDakMsQ0FBQztBQUVGLFdBQVc7QUFDWCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsUUFBcUIsWUFBWSxFQUFFLE1BQWM7SUFFbkYsTUFBTSxZQUFZLEdBQWlCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQVMsQ0FBQztJQUUvRSxJQUFLLFlBQVksRUFBRyxDQUFDO1FBQ25CLElBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFHLENBQUM7WUFDbkQsTUFBTSxXQUFXLEdBQUcsRUFBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUQsV0FBVyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQztZQUMzRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRyxLQUFLLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBRUgsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiwgY3JlYXRlRmVhdHVyZVNlbGVjdG9yLCBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgY3JlYXRlRW50aXR5QWRhcHRlciwgRW50aXR5U3RhdGUgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xyXG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gnO1xyXG5cclxuLy8gU3RhdGVcclxuZXhwb3J0IGNsYXNzIEFwcFN0YXR1c1N0YXRlIHtcclxuICByZWFkb25seSBBY3Rpb25TdGF0dXNCYXIhOiBBY3Rpb25TdGF0dXNbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdGF0dXNTdGF0ZSB7XHJcbiAgaWRzOiBzdHJpbmdbXTtcclxuICBlbnRpdGllczoge1tpZDogc3RyaW5nXTogQWN0aW9uU3RhdHVzfTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGlvblN0YXR1cyB7XHJcbiAgaWQhOiBzdHJpbmc7XHJcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XHJcbiAgc3RhdHVzITogc2VydmVyU3RhdHVzVHlwZXM7XHJcbiAgcmVzcG9uc2VQYXlsb2FkPzogYW55O1xyXG59XHJcblxyXG5jb25zdCBJbml0aWFsU3RhdGU6IFN0YXR1c1N0YXRlID0ge1xyXG4gIGlkczogW10sXHJcbiAgZW50aXRpZXM6IHt9XHJcbn07XHJcblxyXG5leHBvcnQgZW51bSBzZXJ2ZXJTdGF0dXNUeXBlcyB7XHJcbiAgbm90U3RhcnRlZCA9IDAsXHJcbiAgaW5Qcm9ncmVzcyA9IDEsXHJcbiAgc3VjY2VzcyA9IDIsXHJcbiAgZXJyb3IgPSAzXHJcbn1cclxuXHJcbi8vIEVudGl0eSBhbmQgU2VsZWN0b3JzXHJcbmV4cG9ydCBjb25zdCBzdGF0dXNBZGFwdGVyID0gY3JlYXRlRW50aXR5QWRhcHRlcjxBY3Rpb25TdGF0dXM+KCk7XHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGUgZXh0ZW5kcyBFbnRpdHlTdGF0ZTxBY3Rpb25TdGF0dXM+IHt9XHJcbmV4cG9ydCBjb25zdCBpbml0aWFsU3RhdGU6IFN0YXR1c1N0YXRlID0gc3RhdHVzQWRhcHRlci5nZXRJbml0aWFsU3RhdGUoSW5pdGlhbFN0YXRlKTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTdGF0dXNTdGF0ZSA9IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxTdGF0ZT4oJ0FjdGlvblN0YXR1cycpO1xyXG5leHBvcnQgY29uc3Qge1xyXG4gIHNlbGVjdElkcyxcclxuICBzZWxlY3RFbnRpdGllcyxcclxuICBzZWxlY3RBbGwsXHJcbiAgc2VsZWN0VG90YWxcclxufSA9IHN0YXR1c0FkYXB0ZXIuZ2V0U2VsZWN0b3JzKGdldFN0YXR1c1N0YXRlKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RFbnRpdHkgPSAoaWQ6IHN0cmluZykgPT4gY3JlYXRlU2VsZWN0b3IoXHJcbiAgc2VsZWN0RW50aXRpZXMsXHJcbiAgKGVudGl0aWVzOiBhbnkpICA9PiBlbnRpdGllc1tpZF1cclxuKTtcclxuXHJcbi8vIFJlZHVjZXJzXHJcbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25TdGF0dXNSZWR1Y2VyKHN0YXRlOiBTdGF0dXNTdGF0ZSA9IGluaXRpYWxTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pIHtcclxuXHJcbiAgY29uc3QgYWN0aW9uU3RhdHVzOiBBY3Rpb25TdGF0dXMgPSBnZXQoYWN0aW9uLCAncGF5bG9hZC5hY3Rpb25TdGF0dXMnICkgYXMgYW55O1xyXG5cclxuICBpZiAoIGFjdGlvblN0YXR1cyApIHtcclxuICAgIGlmICggc3RhdGUuaWRzLmZpbmQoaWQgPT4gaWQgPT09IGFjdGlvblN0YXR1cy5pZCkgKSB7XHJcbiAgICAgIGNvbnN0IG1vZGlmaWVkT2JqID0gey4uLnN0YXRlLmVudGl0aWVzW2FjdGlvblN0YXR1cy5pZF0gfTtcclxuICAgICAgbW9kaWZpZWRPYmouc3RhdHVzID0gYWN0aW9uU3RhdHVzLnN0YXR1cztcclxuICAgICAgbW9kaWZpZWRPYmoucmVzcG9uc2VQYXlsb2FkID0gYWN0aW9uU3RhdHVzLnJlc3BvbnNlUGF5bG9hZDtcclxuICAgICAgcmV0dXJuIHN0YXR1c0FkYXB0ZXIudXBzZXJ0T25lKCBtb2RpZmllZE9iaiwgc3RhdGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHN0YXR1c0FkYXB0ZXIuYWRkT25lKGFjdGlvblN0YXR1cyAsIHN0YXRlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIHJldHVybiBzdGF0ZTtcclxufVxyXG4iXX0=
@@ -1,51 +0,0 @@
1
- import { DestroyRef, Injectable, assertInInjectionContext, inject } from "@angular/core";
2
- import { HttpRequestStateStore } from './HttpRequestStateStore';
3
- import * as i0 from "@angular/core";
4
- export class HttpRequestStateFactory {
5
- constructor() { }
6
- ngOnDestroy() {
7
- this.requestors.forEach(request => request.ngOnDestroy());
8
- }
9
- requestors = [];
10
- create(req, optionsOrProject, options) {
11
- const requestor = (typeof (optionsOrProject) === 'function' ? new HttpRequestStateStore(req, options, optionsOrProject) : new HttpRequestStateStore(req, optionsOrProject));
12
- this.requestors.push(requestor);
13
- return requestor;
14
- }
15
- createHttpClient(r, options) {
16
- const requestor = new HttpRequestStateStore(r, options);
17
- this.requestors.push(requestor);
18
- return requestor;
19
- }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpRequestStateFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
21
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpRequestStateFactory });
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpRequestStateFactory, decorators: [{
24
- type: Injectable
25
- }], ctorParameters: () => [] });
26
- export function createRequestor(req, optionsOrProject, options) {
27
- const ops = isFunction(optionsOrProject) ? options : optionsOrProject;
28
- const destroyRef = getDestroyRef(ops);
29
- const requestStore = typeof (optionsOrProject) === 'function' ?
30
- new HttpRequestStateStore(req, options, optionsOrProject)
31
- : new HttpRequestStateStore(req, optionsOrProject);
32
- destroyRef.onDestroy(() => requestStore?.ngOnDestroy());
33
- return requestStore;
34
- }
35
- function isFunction(value) {
36
- return typeof value === 'function';
37
- }
38
- function getDestroyRef(options) {
39
- const providedInjector = options?.injector;
40
- if (!providedInjector) {
41
- try {
42
- assertInInjectionContext(createRequestor);
43
- }
44
- catch (error) {
45
- throw new Error('createRequestor() must be used in an Injection Context or you must provide an injector to createRequestor()');
46
- }
47
- }
48
- const destroyRef = providedInjector?.get(DestroyRef) || inject(DestroyRef);
49
- return destroyRef;
50
- }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cFJlcXVlc3RTdGF0ZUZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvaHR0cC1yZXF1ZXN0LXN0YXRlL0h0dHBSZXF1ZXN0U3RhdGVGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUF1Qix3QkFBd0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBSWhFLE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsZ0JBQWUsQ0FBQztJQUNoQixXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ08sVUFBVSxHQUFnQixFQUFFLENBQUM7SUFJckMsTUFBTSxDQUFnRSxHQUFrQyxFQUFFLGdCQUE4RCxFQUFFLE9BQXFDO1FBQzdNLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBRSxJQUFJLHFCQUFxQixDQUFrQixHQUFHLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUkscUJBQXFCLENBQWtCLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDOU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELGdCQUFnQixDQUFLLENBQXVDLEVBQUcsT0FBa0M7UUFDL0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzt1R0FwQlUsdUJBQXVCOzJHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7O0FBMkJYLE1BQU0sVUFBVSxlQUFlLENBQWlFLEdBQWtDLEVBQUUsZ0JBQWdFLEVBQUUsT0FBdUM7SUFFM08sTUFBTSxHQUFHLEdBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7SUFFdkUsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXRDLE1BQU0sWUFBWSxHQUFHLE9BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQzVELElBQUkscUJBQXFCLENBQWtCLEdBQUcsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7UUFDMUUsQ0FBQyxDQUFDLElBQUkscUJBQXFCLENBQWtCLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXRFLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFeEQsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEtBQVU7SUFDNUIsT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUM7QUFDckMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLE9BQW9DO0lBQ3pELE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQztJQUUzQyxJQUFHLENBQUMsZ0JBQWdCLEVBQUMsQ0FBQztRQUNwQixJQUFJLENBQUM7WUFDSCx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsNkdBQTZHLENBQUMsQ0FBQztRQUNqSSxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFM0UsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RGYWN0b3J5LCBSZXF1ZXN0U3RhdGVPcHRpb25zLCBSZXF1ZXN0Q3JlYXRvck9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFN0YXRlU3RvcmUgfSBmcm9tICcuL0h0dHBSZXF1ZXN0U3RhdGVTdG9yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSHR0cFJlcXVlc3RTdGF0ZUZhY3RvcnkgIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0b3JzLmZvckVhY2goIHJlcXVlc3QgPT4gcmVxdWVzdC5uZ09uRGVzdHJveSgpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSByZXF1ZXN0b3JzOiBPbkRlc3Ryb3lbXSA9IFtdO1xyXG5cclxuICBjcmVhdGU8VFBhcmFtIGV4dGVuZHMgYW55W10sIFY+KCByZXE6IEh0dHBSZXF1ZXN0RmFjdG9yeTxUUGFyYW0sIFY+LCBvcHRpb25zPzogUmVxdWVzdFN0YXRlT3B0aW9uczxUUGFyYW0+KSA6IEh0dHBSZXF1ZXN0U3RhdGVTdG9yZTxUUGFyYW0sIFY+XHJcbiAgY3JlYXRlPFRQYXJhbSBleHRlbmRzIGFueVtdLCBWLCBSLCBUID0gUj4oIHJlcTogSHR0cFJlcXVlc3RGYWN0b3J5PFRQYXJhbSwgVj4sIHByb2plY3Q6ICh2OiBWKSA9PiBSICwgb3B0aW9ucz86IFJlcXVlc3RTdGF0ZU9wdGlvbnM8VFBhcmFtPikgOiBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtLCBWLCBUPlxyXG4gIGNyZWF0ZTxUUGFyYW0gZXh0ZW5kcyBhbnlbXSwgViwgUiA9IG51bGwsIFQgPSBSIGV4dGVuZHMgbnVsbCA/IFYgOiBSPihyZXE6IEh0dHBSZXF1ZXN0RmFjdG9yeTxUUGFyYW0sIFY+LCBvcHRpb25zT3JQcm9qZWN0PzogUmVxdWVzdFN0YXRlT3B0aW9uczxUUGFyYW0+IHwgKCh2OiBWKSA9PiBSKSwgb3B0aW9ucz86IFJlcXVlc3RTdGF0ZU9wdGlvbnM8VFBhcmFtPiApIDogSHR0cFJlcXVlc3RTdGF0ZVN0b3JlPFRQYXJhbSwgViwgUiwgVD4ge1xyXG4gICAgY29uc3QgcmVxdWVzdG9yID0gKHR5cGVvZihvcHRpb25zT3JQcm9qZWN0KSA9PT0gJ2Z1bmN0aW9uJyA/ICBuZXcgSHR0cFJlcXVlc3RTdGF0ZVN0b3JlPFRQYXJhbSwgViwgUiwgVD4ocmVxLCBvcHRpb25zLCBvcHRpb25zT3JQcm9qZWN0KSA6IG5ldyBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtLCBWLCBSLCBUPihyZXEsIG9wdGlvbnNPclByb2plY3QpKTtcclxuICAgIHRoaXMucmVxdWVzdG9ycy5wdXNoKHJlcXVlc3Rvcik7XHJcbiAgICByZXR1cm4gcmVxdWVzdG9yO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlSHR0cENsaWVudDxUPiggcjogKG86IE9ic2VydmFibGU8VD4gKSA9PiBPYnNlcnZhYmxlPFQ+ICwgb3B0aW9ucz86IFJlcXVlc3RTdGF0ZU9wdGlvbnM8YW55PiApICB7XHJcbiAgICBjb25zdCByZXF1ZXN0b3IgPSBuZXcgSHR0cFJlcXVlc3RTdGF0ZVN0b3JlKHIsIG9wdGlvbnMpO1xyXG4gICAgdGhpcy5yZXF1ZXN0b3JzLnB1c2gocmVxdWVzdG9yKTtcclxuICAgIHJldHVybiByZXF1ZXN0b3I7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RvcjxUUGFyYW0gZXh0ZW5kcyBhbnlbXSwgVj4oIHJlcTogSHR0cFJlcXVlc3RGYWN0b3J5PFRQYXJhbSwgVj4sIG9wdGlvbnM/OiBSZXF1ZXN0Q3JlYXRvck9wdGlvbnM8VFBhcmFtPikgOiBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtLCBWPlxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVxdWVzdG9yPFRQYXJhbSBleHRlbmRzIGFueVtdLCBWLCBSLCBUID0gUj4oIHJlcTogSHR0cFJlcXVlc3RGYWN0b3J5PFRQYXJhbSwgVj4sIHByb2plY3Q6ICh2OiBWKSA9PiBSICwgb3B0aW9ucz86IFJlcXVlc3RDcmVhdG9yT3B0aW9uczxUUGFyYW0+KSA6IEh0dHBSZXF1ZXN0U3RhdGVTdG9yZTxUUGFyYW0sIFYsIFQ+XHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZXF1ZXN0b3I8VFBhcmFtIGV4dGVuZHMgYW55W10sIFYsIFIgPSBudWxsLCBUID0gUiBleHRlbmRzIG51bGwgPyBWIDogUj4oIHJlcTogSHR0cFJlcXVlc3RGYWN0b3J5PFRQYXJhbSwgVj4sIG9wdGlvbnNPclByb2plY3Q/OiBSZXF1ZXN0Q3JlYXRvck9wdGlvbnM8VFBhcmFtPiB8ICgodjogVikgPT4gUiksIG9wdGlvbnM/OiBSZXF1ZXN0Q3JlYXRvck9wdGlvbnM8VFBhcmFtPiApIDogSHR0cFJlcXVlc3RTdGF0ZVN0b3JlPFRQYXJhbSwgViwgUiwgVD57XHJcblxyXG4gIGNvbnN0IG9wcyAgPSBpc0Z1bmN0aW9uKG9wdGlvbnNPclByb2plY3QpID8gb3B0aW9ucyA6IG9wdGlvbnNPclByb2plY3Q7XHJcblxyXG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBnZXREZXN0cm95UmVmKG9wcyk7XHJcblxyXG4gIGNvbnN0IHJlcXVlc3RTdG9yZSA9IHR5cGVvZihvcHRpb25zT3JQcm9qZWN0KSA9PT0gJ2Z1bmN0aW9uJyA/ICBcclxuICAgIG5ldyBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtLCBWLCBSLCBUPihyZXEsIG9wdGlvbnMsIG9wdGlvbnNPclByb2plY3QpXHJcbiAgICA6IG5ldyBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtLCBWLCBSLCBUPihyZXEsIG9wdGlvbnNPclByb2plY3QpO1xyXG5cclxuICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiByZXF1ZXN0U3RvcmU/Lm5nT25EZXN0cm95KCkpO1xyXG5cclxuICByZXR1cm4gcmVxdWVzdFN0b3JlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBGdW5jdGlvbiB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RGVzdHJveVJlZihvcHRpb25zPzogUmVxdWVzdENyZWF0b3JPcHRpb25zPGFueT4pe1xyXG4gIGNvbnN0IHByb3ZpZGVkSW5qZWN0b3IgPSBvcHRpb25zPy5pbmplY3RvcjtcclxuXHJcbiAgaWYoIXByb3ZpZGVkSW5qZWN0b3Ipe1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGNyZWF0ZVJlcXVlc3Rvcik7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NyZWF0ZVJlcXVlc3RvcigpIG11c3QgYmUgdXNlZCBpbiBhbiBJbmplY3Rpb24gQ29udGV4dCBvciB5b3UgbXVzdCBwcm92aWRlIGFuIGluamVjdG9yIHRvIGNyZWF0ZVJlcXVlc3RvcigpJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBkZXN0cm95UmVmID0gcHJvdmlkZWRJbmplY3Rvcj8uZ2V0KERlc3Ryb3lSZWYpIHx8IGluamVjdChEZXN0cm95UmVmKTtcclxuXHJcbiAgcmV0dXJuIGRlc3Ryb3lSZWY7XHJcbn0iXX0=
@@ -1,135 +0,0 @@
1
- import { of } from 'rxjs';
2
- import { ComponentStore } from '@ngrx/component-store';
3
- import { HttpRequestStrategy, HttpRequestStatus } from './types';
4
- import { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';
5
- import { concatMap, filter, map, mergeMap, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';
6
- import { mapError } from '../rxjs/mapError';
7
- import { defaultShareReplay } from '../rxjs/defaultShareReplay';
8
- import { computed, Directive, isSignal } from '@angular/core';
9
- import { toObservable } from '@angular/core/rxjs-interop';
10
- import { notNull } from '../rxjs';
11
- import * as i0 from "@angular/core";
12
- export class HttpRequestStateStore extends ComponentStore {
13
- options;
14
- project;
15
- req;
16
- injector;
17
- constructor(req, options, project) {
18
- super({ requestParams: null, response: notStarted });
19
- this.project = project;
20
- this.options = options;
21
- this.injector = options?.injector;
22
- this.req = req;
23
- this.request = (this.options?.strategy === HttpRequestStrategy.singleUse) ? this.singleUseRequest : this.flattenedRequest;
24
- if (options?.autoRequestWith) {
25
- this.request(...options.autoRequestWith);
26
- }
27
- }
28
- reset() {
29
- this.setState({ requestParams: null, response: notStarted });
30
- }
31
- flatteningStrategy = () => {
32
- if (this.options?.strategy === HttpRequestStrategy.concurrent)
33
- return mergeMap((params) => this.createRequest(...params));
34
- if (this.options?.strategy === HttpRequestStrategy.sequential)
35
- return concatMap((params) => this.createRequest(...params));
36
- return switchMap((params) => (params[0] instanceof CancellationToken) ?
37
- of({ requestParams: params[0], response: { status: HttpRequestStatus.cancelled } }) : this.createRequest(...params));
38
- };
39
- requestEffect = this.effect((obs) => {
40
- return (obs).pipe(this.flatteningStrategy(), tap(state => this.setState(state)));
41
- });
42
- flattenedRequest = (...value) => {
43
- return this.requestEffect(value);
44
- };
45
- singleUseRequest = (...value) => {
46
- if (this.get().response.status !== HttpRequestStatus.notStarted) {
47
- throw new Error("state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.");
48
- }
49
- return this.requestEffect(value);
50
- };
51
- $selectHttpState = this.selectSignal(a => a.response);
52
- selectHttpState$ = this.select(a => a.response);
53
- $selectStatus = computed(() => this.$selectHttpState()?.status);
54
- selectStatus$ = this.selectHttpState$.pipe(map(s => s.status));
55
- selectError$ = this.selectHttpState$.pipe(filter(isErrorState), map(state => state.error));
56
- $selectError = computed(() => {
57
- const state = this.$selectHttpState();
58
- if (isErrorState(state))
59
- return state.error;
60
- });
61
- selectResponse$ = this.selectHttpState$.pipe(filter(isSuccessState), map(state => state.body));
62
- $selectResponse = computed(() => {
63
- const state = this.$selectHttpState();
64
- if (isSuccessState(state)) {
65
- return state.body;
66
- }
67
- return undefined;
68
- });
69
- selectSuccessOrError$ = this.state$.pipe(map(r => r.response), filter(isSuccessOrErrorState), map(() => null));
70
- errorHandled = false;
71
- onError(cb) {
72
- this.errorHandled = true;
73
- this.on(this.selectError$, cb);
74
- return this;
75
- }
76
- onSuccess(cb) {
77
- this.on(this.selectResponse$, cb);
78
- return this;
79
- }
80
- onSuccessOrError(cb) {
81
- this.on(this.selectSuccessOrError$, cb);
82
- return this;
83
- }
84
- onSuccessWithRequest(func) {
85
- this.onUpdate(({ requestParams, response }) => {
86
- if (isSuccessState(response)) {
87
- func({ requestParams, body: response.body });
88
- }
89
- });
90
- return this;
91
- }
92
- onErrorWithRequest(func) {
93
- this.onUpdate(({ requestParams, response }) => {
94
- if (isErrorState(response)) {
95
- func({ requestParams, error: response.error });
96
- }
97
- });
98
- return this;
99
- }
100
- createRequest(...params) {
101
- return this.req(...params).pipe(map(re => createSuccess((this.project ? this.project(re) : re))), mapError(createFailure), startWith(inProgress), map(state => ({ requestParams: params, response: state })), defaultShareReplay());
102
- }
103
- onUpdate(func) {
104
- this.on(this.state$, func);
105
- }
106
- on = (srcObservable, func) => {
107
- return this.effect((src) => {
108
- return src.pipe(tap(func));
109
- })(srcObservable);
110
- };
111
- request;
112
- ngOnDestroy() {
113
- super.ngOnDestroy();
114
- }
115
- requestWith = (params) => {
116
- if (isSignal(params)) {
117
- params = toObservable(params, { injector: this.injector }).pipe(notNull());
118
- }
119
- params.pipe(takeUntil(this.destroy$)).subscribe((p) => this.request(...p));
120
- return this;
121
- };
122
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpRequestStateStore, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
123
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: HttpRequestStateStore, usesInheritance: true, ngImport: i0 });
124
- }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpRequestStateStore, decorators: [{
126
- type: Directive
127
- }], ctorParameters: () => [{ type: undefined }, { type: undefined }, { type: undefined }] });
128
- export class CancellationToken {
129
- }
130
- export function wrapInArr(sigOrObs) {
131
- return isSignal(sigOrObs) ?
132
- computed(() => [sigOrObs()])
133
- : sigOrObs.pipe(map(a => [a]));
134
- }
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cFJlcXVlc3RTdGF0ZVN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL2h0dHAtcmVxdWVzdC1zdGF0ZS9IdHRwUmVxdWVzdFN0YXRlU3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBc0IsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQW9FLE1BQU0sU0FBUyxDQUFDO0FBQ3ZKLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBWSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBUWxDLE1BQU0sT0FBTyxxQkFBcUYsU0FBUSxjQUEwQztJQUN4SSxPQUFPLENBQXVCO0lBQzlCLE9BQU8sQ0FBZTtJQUN0QixHQUFHLENBQWdDO0lBQ25DLFFBQVEsQ0FBWTtJQUM1QixZQUFZLEdBQWtDLEVBQUUs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bnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZSc7XHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0RmFjdG9yeSwgSHR0cFJlcXVlc3RTdHJhdGVneSwgSHR0cFJlcXVlc3RTdGF0dXMsIEh0dHBSZXF1ZXN0U3RhdGUsIFJlcXVlc3RTdGF0ZU9wdGlvbnMsIEh0dHBSZXF1ZXN0U3RhdGVDYW5jZWxsZWQgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgY3JlYXRlRmFpbHVyZSwgY3JlYXRlU3VjY2VzcywgaW5Qcm9ncmVzcywgaXNFcnJvclN0YXRlLCBpc1N1Y2Nlc3NPckVycm9yU3RhdGUsIGlzU3VjY2Vzc1N0YXRlLCBub3RTdGFydGVkIH0gZnJvbSAnLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgY29uY2F0TWFwLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IG1hcEVycm9yIH0gZnJvbSAnLi4vcnhqcy9tYXBFcnJvcic7XHJcbmltcG9ydCB7IGRlZmF1bHRTaGFyZVJlcGxheSB9IGZyb20gJy4uL3J4anMvZGVmYXVsdFNoYXJlUmVwbGF5JztcclxuaW1wb3J0IHsgY29tcHV0ZWQsIERpcmVjdGl2ZSwgSW5qZWN0b3IsIGlzU2lnbmFsLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgbm90TnVsbCB9IGZyb20gJy4uL3J4anMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0UmVzcG9uc2U8VFBhcmFtIGV4dGVuZHMgYW55W10sIFQ+IHtcclxuICByZXF1ZXN0UGFyYW1zOiBbLi4uVFBhcmFtXTtcclxuICByZXNwb25zZTogSHR0cFJlcXVlc3RTdGF0ZTxUPjtcclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtIGV4dGVuZHMgYW55W10sIFYsIFIgPSBudWxsLCBUID0gUiBleHRlbmRzIG51bGwgPyBWIDogUj4gZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxSZXF1ZXN0UmVzcG9uc2U8VFBhcmFtLCBUPj4ge1xyXG4gICAgcHJpdmF0ZSBvcHRpb25zPzogUmVxdWVzdFN0YXRlT3B0aW9ucztcclxuICAgIHByaXZhdGUgcHJvamVjdD86ICh2OiBWKSA9PiBSO1xyXG4gICAgcHJpdmF0ZSByZXE6IEh0dHBSZXF1ZXN0RmFjdG9yeTxUUGFyYW0sIFY+O1xyXG4gICAgcHJpdmF0ZSBpbmplY3Rvcj86IEluamVjdG9yO1xyXG4gICAgY29uc3RydWN0b3IocmVxOiBIdHRwUmVxdWVzdEZhY3Rvcnk8VFBhcmFtLCBWPiAsb3B0aW9ucz86IFJlcXVlc3RTdGF0ZU9wdGlvbnM8VFBhcmFtPiwgcHJvamVjdD86ICh2OiBWKSA9PiBSKSB7XHJcbiAgICAgIHN1cGVyKHsgcmVxdWVzdFBhcmFtczogbnVsbCBhcyBhbnksIHJlc3BvbnNlOiBub3RTdGFydGVkIH0pO1xyXG4gICAgICB0aGlzLnByb2plY3QgPSBwcm9qZWN0O1xyXG4gICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgICB0aGlzLmluamVjdG9yID0gb3B0aW9ucz8uaW5qZWN0b3I7XHJcbiAgICAgIHRoaXMucmVxID0gcmVxO1xyXG4gICAgICB0aGlzLnJlcXVlc3QgPSAodGhpcy5vcHRpb25zPy5zdHJhdGVneSA9PT0gSHR0cFJlcXVlc3RTdHJhdGVneS5zaW5nbGVVc2UpID8gdGhpcy5zaW5nbGVVc2VSZXF1ZXN0IDogIHRoaXMuZmxhdHRlbmVkUmVxdWVzdDtcclxuXHJcbiAgICAgIGlmKG9wdGlvbnM/LmF1dG9SZXF1ZXN0V2l0aCl7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0KC4uLm9wdGlvbnMuYXV0b1JlcXVlc3RXaXRoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgcmVxdWVzdFBhcmFtczpudWxsIGFzIGFueSwgcmVzcG9uc2U6IG5vdFN0YXJ0ZWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmbGF0dGVuaW5nU3RyYXRlZ3kgPSAoKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMub3B0aW9ucz8uc3RyYXRlZ3kgPT09IEh0dHBSZXF1ZXN0U3RyYXRlZ3kuY29uY3VycmVudClcclxuICAgICAgICByZXR1cm4gbWVyZ2VNYXAoIChwYXJhbXM6IFsuLi5UUGFyYW1dKSA9PiB0aGlzLmNyZWF0ZVJlcXVlc3QoLi4ucGFyYW1zKSk7XHJcbiAgICAgIGlmKHRoaXMub3B0aW9ucz8uc3RyYXRlZ3kgPT09IEh0dHBSZXF1ZXN0U3RyYXRlZ3kuc2VxdWVudGlhbClcclxuICAgICAgICByZXR1cm4gY29uY2F0TWFwKCAocGFyYW1zOiBbLi4uVFBhcmFtXSkgPT4gdGhpcy5jcmVhdGVSZXF1ZXN0KC4uLnBhcmFtcykpO1xyXG4gICAgICByZXR1cm4gc3dpdGNoTWFwKCAocGFyYW1zOiBbLi4uVFBhcmFtXSkgPT4gKChwYXJhbXNbMF0gYXMgYW55KSBpbnN0YW5jZW9mIENhbmNlbGxhdGlvblRva2VuKSA/XHJcbiAgICAgICAgb2YoeyByZXF1ZXN0UGFyYW1zOiBwYXJhbXNbMF0sIHJlc3BvbnNlOiB7IHN0YXR1czogSHR0cFJlcXVlc3RTdGF0dXMuY2FuY2VsbGVkIH0gYXMgSHR0cFJlcXVlc3RTdGF0ZUNhbmNlbGxlZCB9ICkgOiB0aGlzLmNyZWF0ZVJlcXVlc3QoLi4ucGFyYW1zKSApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVxdWVzdEVmZmVjdDogKHZhbHVlOiBbLi4uVFBhcmFtXSApID0+IFN1YnNjcmlwdGlvbiA9IHRoaXMuZWZmZWN0KChvYnM6IE9ic2VydmFibGU8Wy4uLlRQYXJhbV0+KSA9PiB7XHJcbiAgICAgIHJldHVybiAob2JzKS5waXBlKFxyXG4gICAgICAgIHRoaXMuZmxhdHRlbmluZ1N0cmF0ZWd5KCksXHJcbiAgICAgICAgdGFwPFJlcXVlc3RSZXNwb25zZTxUUGFyYW0sIFQ+PihzdGF0ZSA9PiB0aGlzLnNldFN0YXRlKHN0YXRlKSksXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwcml2YXRlIGZsYXR0ZW5lZFJlcXVlc3QgPSAoLi4udmFsdWU6IFsuLi5UUGFyYW1dKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RFZmZlY3QodmFsdWUpIGFzIFN1YnNjcmlwdGlvbjtcclxuICAgIH1cclxuICAgIHByaXZhdGUgc2luZ2xlVXNlUmVxdWVzdCA9ICguLi52YWx1ZTogWy4uLlRQYXJhbV0pID0+IHtcclxuICAgICAgaWYgKHRoaXMuZ2V0KCkucmVzcG9uc2Uuc3RhdHVzICE9PSBIdHRwUmVxdWVzdFN0YXR1cy5ub3RTdGFydGVkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3RhdGUgY2FuIG5vdCBiZSByZXVzZWQuIGVpdGhlciByZXNldCB0aGUgc3RhdGUgYnkgY2FsbGluZyByZXNldCgpIG9yIHVzZSBhIHN0YXRlIHJlcXVlc3RlciB0aGF0IGFsbG93cyBjb25jdXJyZW50IHJlcXVlc3RzLlwiKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0RWZmZWN0KHZhbHVlKSBhcyBTdWJzY3JpcHRpb247XHJcbiAgICB9XHJcblxyXG4gICAgJHNlbGVjdEh0dHBTdGF0ZSA9IHRoaXMuc2VsZWN0U2lnbmFsKGEgPT4gYS5yZXNwb25zZSk7XHJcblxyXG4gICAgc2VsZWN0SHR0cFN0YXRlJCA9IHRoaXMuc2VsZWN0KGEgPT4gYS5yZXNwb25zZSk7XHJcblxyXG4gICAgJHNlbGVjdFN0YXR1cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuJHNlbGVjdEh0dHBTdGF0ZSgpPy5zdGF0dXMpO1xyXG5cclxuICAgIHNlbGVjdFN0YXR1cyQgPSB0aGlzLnNlbGVjdEh0dHBTdGF0ZSQucGlwZShtYXAocyA9PiBzLnN0YXR1cykpO1xyXG5cclxuXHJcblxyXG4gICAgc2VsZWN0RXJyb3IkID0gdGhpcy5zZWxlY3RIdHRwU3RhdGUkLnBpcGUoXHJcbiAgICAgIGZpbHRlcihpc0Vycm9yU3RhdGUpLFxyXG4gICAgICBtYXAoc3RhdGUgPT4gc3RhdGUuZXJyb3IpXHJcbiAgICApO1xyXG5cclxuICAgICRzZWxlY3RFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLiRzZWxlY3RIdHRwU3RhdGUoKTtcclxuICAgICAgaWYoaXNFcnJvclN0YXRlKHN0YXRlKSkgcmV0dXJuIHN0YXRlLmVycm9yXHJcbiAgICB9KVxyXG5cclxuICAgIHNlbGVjdFJlc3BvbnNlJDogT2JzZXJ2YWJsZTxUPiA9IHRoaXMuc2VsZWN0SHR0cFN0YXRlJC5waXBlKFxyXG4gICAgICBmaWx0ZXIoaXNTdWNjZXNzU3RhdGUpLFxyXG4gICAgICBtYXAoIHN0YXRlID0+IHN0YXRlLmJvZHkpXHJcbiAgICApO1xyXG5cclxuICAgICRzZWxlY3RSZXNwb25zZSA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLiRzZWxlY3RIdHRwU3RhdGUoKTtcclxuICAgICAgaWYoaXNTdWNjZXNzU3RhdGUoc3RhdGUpKXtcclxuICAgICAgICByZXR1cm4gc3RhdGUuYm9keVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9KVxyXG5cclxuICAgIHNlbGVjdFN1Y2Nlc3NPckVycm9yJCA9IHRoaXMuc3RhdGUkLnBpcGUoXHJcbiAgICAgIG1hcChyID0+IHIucmVzcG9uc2UpLFxyXG4gICAgICBmaWx0ZXIoaXNTdWNjZXNzT3JFcnJvclN0YXRlKSxcclxuICAgICAgbWFwKCAoKSA9PiBudWxsKVxyXG4gICAgKTtcclxuXHJcbiAgICBlcnJvckhhbmRsZWQgPSBmYWxzZTtcclxuICAgIG9uRXJyb3IoIGNiOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbih0aGlzLnNlbGVjdEVycm9yJCwgY2IpO1xyXG4gICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBvblN1Y2Nlc3MoIGNiOiAoYm9keT86IFQpID0+IHZvaWQpIHtcclxuICAgICAgdGhpcy5vbih0aGlzLnNlbGVjdFJlc3BvbnNlJCwgY2IpO1xyXG4gICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBvblN1Y2Nlc3NPckVycm9yKGNiOiAoKSA9PiB2b2lkKXtcclxuICAgICAgdGhpcy5vbih0aGlzLnNlbGVjdFN1Y2Nlc3NPckVycm9yJCwgY2IpO1xyXG4gICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBvblN1Y2Nlc3NXaXRoUmVxdWVzdChmdW5jOiAoc3RhdGU6IHtcclxuICAgICAgcmVxdWVzdFBhcmFtczogWy4uLlRQYXJhbV07XHJcbiAgICAgIGJvZHk6IFQ7XHJcbiAgICB9KSA9PiB2b2lkKSB7XHJcbiAgICAgIHRoaXMub25VcGRhdGUoKHsgcmVxdWVzdFBhcmFtcywgcmVzcG9uc2UgfSkgPT4ge1xyXG4gICAgICAgIGlmKGlzU3VjY2Vzc1N0YXRlKHJlc3BvbnNlKSl7XHJcbiAgICAgICAgICBmdW5jKHtyZXF1ZXN0UGFyYW1zLGJvZHk6IHJlc3BvbnNlLmJvZHl9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBvbkVycm9yV2l0aFJlcXVlc3QoZnVuYzogKHN0YXRlOiB7XHJcbiAgICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZTtcclxuICAgICAgcmVxdWVzdFBhcmFtczogWy4uLlRQYXJhbV07XHJcbiAgICB9KSA9PiB2b2lkKSB7XHJcbiAgICAgIHRoaXMub25VcGRhdGUoICh7IHJlcXVlc3RQYXJhbXMsIHJlc3BvbnNlIH0pID0+IHtcclxuICAgICAgICBpZihpc0Vycm9yU3RhdGUocmVzcG9uc2UpKXtcclxuICAgICAgICAgIGZ1bmMoeyByZXF1ZXN0UGFyYW1zLCBlcnJvcjogcmVzcG9uc2UuZXJyb3IgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVSZXF1ZXN0KC4uLnBhcmFtczogWy4uLlRQYXJhbV0pOiBPYnNlcnZhYmxlPFJlcXVlc3RSZXNwb25zZTxUUGFyYW0sIFQ+PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlcSguLi5wYXJhbXMpLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlID0+IGNyZWF0ZVN1Y2Nlc3MoKHRoaXMucHJvamVjdCA/IHRoaXMucHJvamVjdChyZSkgOiByZSkgYXMgVCkpLFxyXG4gICAgICAgIG1hcEVycm9yKGNyZWF0ZUZhaWx1cmUpLFxyXG4gICAgICAgIHN0YXJ0V2l0aChpblByb2dyZXNzKSxcclxuICAgICAgICBtYXAoIHN0YXRlID0+ICh7IHJlcXVlc3RQYXJhbXM6IHBhcmFtcywgcmVzcG9uc2U6IHN0YXRlIH0pKSxcclxuICAgICAgICBkZWZhdWx0U2hhcmVSZXBsYXkoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVXBkYXRlKGZ1bmM6IChzdGF0ZToge1xyXG4gICAgICByZXF1ZXN0UGFyYW1zOiBbLi4uVFBhcmFtXTtcclxuICAgICAgcmVzcG9uc2U6IEh0dHBSZXF1ZXN0U3RhdGU8VD47XHJcbiAgICB9KSA9PiB2b2lkKSB7XHJcbiAgICAgIHRoaXMub24odGhpcy5zdGF0ZSQsIGZ1bmMpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uID0gPFY+KHNyY09ic2VydmFibGU6IE9ic2VydmFibGU8Vj4sIGZ1bmM6IChvYmo6IFYpID0+IHZvaWQpOiBTdWJzY3JpcHRpb24gPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5lZmZlY3QoKHNyYzogT2JzZXJ2YWJsZTxWPikgPT4ge1xyXG4gICAgICAgIHJldHVybiBzcmMucGlwZSh0YXAoZnVuYykpO1xyXG4gICAgICB9KShzcmNPYnNlcnZhYmxlKSBhcyBTdWJzY3JpcHRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdDogKC4uLnZhbHVlOiAgWy4uLlRQYXJhbV0gKSA9PiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdFdpdGggPSAocGFyYW1zOiBPYnNlcnZhYmxlPFsuLi5UUGFyYW1dPiB8IFNpZ25hbDxbLi4uVFBhcmFtXT4pID0+IHtcclxuICAgICAgaWYoaXNTaWduYWwocGFyYW1zKSl7XHJcbiAgICAgICAgcGFyYW1zID0gdG9PYnNlcnZhYmxlKHBhcmFtcywgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9KS5waXBlKG5vdE51bGwoKSk7XHJcbiAgICAgIH1cclxuICAgICAgcGFyYW1zLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHApID0+IHRoaXMucmVxdWVzdCguLi5wKSk7XHJcbiAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG4gIH1cclxuICBleHBvcnQgY2xhc3MgQ2FuY2VsbGF0aW9uVG9rZW4ge31cclxuICBleHBvcnQgZnVuY3Rpb24gd3JhcEluQXJyPFQ+KHNpZzogU2lnbmFsPFQ+KSA6IFNpZ25hbDxbVF0+O1xyXG4gIGV4cG9ydCBmdW5jdGlvbiB3cmFwSW5BcnI8VD4ob2JzOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxbVF0+O1xyXG4gIGV4cG9ydCBmdW5jdGlvbiB3cmFwSW5BcnI8VD4oc2lnT3JPYnM6IFNpZ25hbDxUPiB8IE9ic2VydmFibGU8VD4pe1xyXG4gICAgcmV0dXJuIGlzU2lnbmFsKHNpZ09yT2JzKSA/XHJcbiAgICBjb21wdXRlZCgoKSA9PiBbc2lnT3JPYnMoKV0pXHJcbiAgICA6IHNpZ09yT2JzLnBpcGUobWFwKGEgPT4gW2FdKSk7XHJcbiAgfVxyXG4iXX0=
@@ -1,30 +0,0 @@
1
- import { Directive, inject, Injector, TemplateRef, ViewContainerRef } from '@angular/core';
2
- import { HttpRequestStateDirective } from './request-state-directive';
3
- import * as i0 from "@angular/core";
4
- export class HttpStateDirectiveBase {
5
- hasView = false;
6
- injector = inject(Injector);
7
- templateRef = inject((TemplateRef));
8
- viewContainer = inject(ViewContainerRef);
9
- ngOnInit() {
10
- const parent = this.injector.get(HttpRequestStateDirective);
11
- if (parent == null) {
12
- throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');
13
- }
14
- parent.hooks.push(this.baseRender);
15
- this.baseRender(parent.ViewContext.state);
16
- }
17
- baseRender = (state) => {
18
- if (this.hasView) {
19
- this.viewContainer.clear();
20
- this.hasView = false;
21
- }
22
- this.hasView = this.render(state);
23
- };
24
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpStateDirectiveBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: HttpStateDirectiveBase, ngImport: i0 });
26
- }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpStateDirectiveBase, decorators: [{
28
- type: Directive
29
- }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cFN0YXRlRGlyZWN0aXZlQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcy9IdHRwU3RhdGVEaXJlY3RpdmVCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBR3RFLE1BQU0sT0FBZ0Isc0JBQXNCO0lBQzFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDUixRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQSxXQUFrRCxDQUFBLENBQUMsQ0FBQztJQUN6RSxhQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbkQsUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUQsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RkFBd0YsQ0FBQyxDQUFDO1FBQzVHLENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTyxVQUFVLEdBQUcsQ0FBQyxLQUF1QixFQUFRLEVBQUU7UUFDckQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQTt1R0FwQm1CLHNCQUFzQjsyRkFBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQUQzQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBpbmplY3QsIEluamVjdG9yLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFN0YXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9yZXF1ZXN0LXN0YXRlLWRpcmVjdGl2ZSc7XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEh0dHBTdGF0ZURpcmVjdGl2ZUJhc2U8ViwgUiA9IG51bGw+IHtcclxuICBoYXNWaWV3ID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcbiAgcHJvdGVjdGVkIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBSIGV4dGVuZHMgbnVsbCA/IFYgOiBSIH0+KTtcclxuICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lciA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEh0dHBSZXF1ZXN0U3RhdGVEaXJlY3RpdmUpO1xyXG4gICAgaWYgKHBhcmVudCA9PSBudWxsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IGNhbiBvbmx5IHVzZSBhbiBodHRwIHN0YXRlIGRpcmVjdGl2ZSBhcyBhIGNoaWxkIG9mIHRoZSBodHRwUmVxdWVzdFN0YXRlIGRpcmVjdGl2ZS4nKTtcclxuICAgIH1cclxuICAgIHBhcmVudC5ob29rcy5wdXNoKHRoaXMuYmFzZVJlbmRlcik7XHJcbiAgICB0aGlzLmJhc2VSZW5kZXIocGFyZW50LlZpZXdDb250ZXh0LnN0YXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmFzZVJlbmRlciA9IChzdGF0ZTogSHR0cFJlcXVlc3RTdGF0ZSk6IHZvaWQgPT4ge1xyXG4gICAgaWYgKHRoaXMuaGFzVmlldykge1xyXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgdGhpcy5oYXNWaWV3ID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhhc1ZpZXcgPSB0aGlzLnJlbmRlcihzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBhYnN0cmFjdCByZW5kZXI6IChzdGF0ZTogSHR0cFJlcXVlc3RTdGF0ZSkgPT4gYm9vbGVhbjtcclxufVxyXG4iXX0=
@@ -1,23 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { isErrorState } from '../helpers';
3
- import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
4
- import * as i0 from "@angular/core";
5
- export class HttpErrorStateDirective extends HttpStateDirectiveBase {
6
- render = (state) => {
7
- if (isErrorState(state)) {
8
- this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });
9
- return true;
10
- }
11
- return false;
12
- };
13
- ngOnInit() {
14
- super.ngOnInit();
15
- }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpErrorStateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
17
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: HttpErrorStateDirective, isStandalone: true, selector: "[httpErrorState]", usesInheritance: true, ngImport: i0 });
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpErrorStateDirective, decorators: [{
20
- type: Directive,
21
- args: [{ selector: '[httpErrorState]', standalone: true }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1lcnJvci1zdGF0ZS1kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvaHR0cC1yZXF1ZXN0LXN0YXRlL2RpcmVjdGl2ZXMvaHR0cC1lcnJvci1zdGF0ZS1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUdsRSxNQUFNLE9BQU8sdUJBQXFDLFNBQVEsc0JBQTRCO0lBR3BGLE1BQU0sR0FBRyxDQUFDLEtBQTRCLEVBQUUsRUFBRTtRQUN4QyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNwRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGLFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQzt1R0FiVSx1QkFBdUI7MkZBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzRXJyb3JTdGF0ZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlIH0gZnJvbSAnLi9IdHRwU3RhdGVEaXJlY3RpdmVCYXNlJztcclxuXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1todHRwRXJyb3JTdGF0ZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwRXJyb3JTdGF0ZURpcmVjdGl2ZTxWLCBSID0gbnVsbD4gZXh0ZW5kcyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlPFYsIFI+IHtcclxuXHJcblxyXG4gIHJlbmRlciA9IChzdGF0ZTogSHR0cFJlcXVlc3RTdGF0ZTxhbnk+KSA9PiB7XHJcbiAgICBpZiAoaXNFcnJvclN0YXRlKHN0YXRlKSkge1xyXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHsgJGltcGxpY2l0OiBzdGF0ZS5lcnJvciB9KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIH1cclxufSJdfQ==
@@ -1,23 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
3
- import { HttpRequestStatus } from '../types';
4
- import * as i0 from "@angular/core";
5
- export class HttpInProgressStateDirective extends HttpStateDirectiveBase {
6
- render = (state) => {
7
- if (state.status === HttpRequestStatus.inProgress) {
8
- this.viewContainer.createEmbeddedView(this.templateRef);
9
- return true;
10
- }
11
- return false;
12
- };
13
- ngOnInit() {
14
- super.ngOnInit();
15
- }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpInProgressStateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
17
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: HttpInProgressStateDirective, isStandalone: true, selector: "[httpInProgressState]", usesInheritance: true, ngImport: i0 });
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpInProgressStateDirective, decorators: [{
20
- type: Directive,
21
- args: [{ selector: '[httpInProgressState]', standalone: true }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1pblByb2dyZXNzLXN0YXRlLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcy9odHRwLWluUHJvZ3Jlc3Mtc3RhdGUtZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQTs7QUFJOUQsTUFBTSxPQUFPLDRCQUEyQyxTQUFRLHNCQUE0QjtJQUN4RixNQUFNLEdBQUcsQ0FBQyxLQUE0QixFQUFFLEVBQUU7UUFDdEMsSUFBRyxLQUFLLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLFVBQVUsRUFBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBRSxDQUFDO1lBQ3pELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7dUdBWFEsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlIH0gZnJvbSAnLi9IdHRwU3RhdGVEaXJlY3RpdmVCYXNlJztcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTdGF0ZSwgSHR0cFJlcXVlc3RTdGF0dXMgfSBmcm9tICcuLi90eXBlcydcclxuXHJcblxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbaHR0cEluUHJvZ3Jlc3NTdGF0ZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwSW5Qcm9ncmVzc1N0YXRlRGlyZWN0aXZlPFYsIFIgPSBudWxsPiAgZXh0ZW5kcyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlPFYsIFI+IHtcclxuICAgIHJlbmRlciA9IChzdGF0ZTogSHR0cFJlcXVlc3RTdGF0ZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgaWYoc3RhdGUuc3RhdHVzID09PSBIdHRwUmVxdWVzdFN0YXR1cy5pblByb2dyZXNzKXtcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmICk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,23 +0,0 @@
1
- import { Directive } from '@angular/core';
2
- import { HttpRequestStatus } from '../types';
3
- import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
4
- import * as i0 from "@angular/core";
5
- export class HttpNotStartedStateDirective extends HttpStateDirectiveBase {
6
- render = (state) => {
7
- if (state.status === HttpRequestStatus.notStarted) {
8
- this.viewContainer.createEmbeddedView(this.templateRef);
9
- return true;
10
- }
11
- return false;
12
- };
13
- ngOnInit() {
14
- super.ngOnInit();
15
- }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpNotStartedStateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
17
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: HttpNotStartedStateDirective, isStandalone: true, selector: "[httpNotStartedState]", usesInheritance: true, ngImport: i0 });
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpNotStartedStateDirective, decorators: [{
20
- type: Directive,
21
- args: [{ selector: '[httpNotStartedState]', standalone: true }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1ub3RTdGFydGVkLXN0YXRlLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcy9odHRwLW5vdFN0YXJ0ZWQtc3RhdGUtZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFJbEUsTUFBTSxPQUFPLDRCQUEwQyxTQUFRLHNCQUE0QjtJQUN2RixNQUFNLEdBQUcsQ0FBQyxLQUE0QixFQUFFLEVBQUU7UUFDdEMsSUFBRyxLQUFLLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLFVBQVUsRUFBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBRSxDQUFDO1lBQ3pELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUM7SUFFRixRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7dUdBWFEsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFN0YXRlLCBIdHRwUmVxdWVzdFN0YXR1cyB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgSHR0cFN0YXRlRGlyZWN0aXZlQmFzZSB9IGZyb20gJy4vSHR0cFN0YXRlRGlyZWN0aXZlQmFzZSc7XHJcblxyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2h0dHBOb3RTdGFydGVkU3RhdGVdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxyXG5leHBvcnQgY2xhc3MgSHR0cE5vdFN0YXJ0ZWRTdGF0ZURpcmVjdGl2ZTxWLCBSID0gbnVsbD4gZXh0ZW5kcyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlPFYsIFI+IHtcclxuICAgIHJlbmRlciA9IChzdGF0ZTogSHR0cFJlcXVlc3RTdGF0ZTxhbnk+KSA9PiB7XHJcbiAgICAgICAgaWYoc3RhdGUuc3RhdHVzID09PSBIdHRwUmVxdWVzdFN0YXR1cy5ub3RTdGFydGVkKXtcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmICk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,29 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { isSuccessState } from '../helpers';
3
- import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
4
- import * as i0 from "@angular/core";
5
- export class HttpSuccessStateDirective extends HttpStateDirectiveBase {
6
- httpSuccessStateTypeSafety;
7
- render = (state) => {
8
- if (isSuccessState(state)) {
9
- this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.body });
10
- return true;
11
- }
12
- return false;
13
- };
14
- ngOnInit() {
15
- super.ngOnInit();
16
- }
17
- static ngTemplateContextGuard(dir, ctx) {
18
- return true;
19
- }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpSuccessStateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
21
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: HttpSuccessStateDirective, isStandalone: true, selector: "[httpSuccessState]", inputs: { httpSuccessStateTypeSafety: "httpSuccessStateTypeSafety" }, usesInheritance: true, ngImport: i0 });
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpSuccessStateDirective, decorators: [{
24
- type: Directive,
25
- args: [{ selector: '[httpSuccessState]', standalone: true }]
26
- }], propDecorators: { httpSuccessStateTypeSafety: [{
27
- type: Input
28
- }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zdWNjZXNzLXN0YXRlLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcy9odHRwLXN1Y2Nlc3Mtc3RhdGUtZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBU2xFLE1BQU0sT0FBTyx5QkFBdUMsU0FBUSxzQkFBNEI7SUFDN0UsMEJBQTBCLENBQXNFO0lBQ3pHLE1BQU0sR0FBRyxDQUFDLEtBQStDLEVBQUUsRUFBRTtRQUMzRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGLFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBTyxHQUFvQyxFQUFFLEdBQVE7UUFDaEYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO3VHQWhCVSx5QkFBeUI7MkZBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOzhCQUVwRCwwQkFBMEI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzU3VjY2Vzc1N0YXRlIH0gZnJvbSAnLi4vaGVscGVycyc7XHJcbmltcG9ydCB7IEh0dHBTdGF0ZURpcmVjdGl2ZUJhc2UgfSBmcm9tICcuL0h0dHBTdGF0ZURpcmVjdGl2ZUJhc2UnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFN0YXRlU3RvcmUgfSBmcm9tICcuLi9IdHRwUmVxdWVzdFN0YXRlU3RvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBTdWNjZXNzU3RhdGVWaWV3Q29udGV4dDxUPiB7XHJcbiAgJGltcGxpY2l0OiBUO1xyXG59XHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1todHRwU3VjY2Vzc1N0YXRlXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcclxuZXhwb3J0IGNsYXNzIEh0dHBTdWNjZXNzU3RhdGVEaXJlY3RpdmU8ViwgUiA9IG51bGw+IGV4dGVuZHMgSHR0cFN0YXRlRGlyZWN0aXZlQmFzZTxWLCBSPiB7XHJcbiAgQElucHV0KCkgaHR0cFN1Y2Nlc3NTdGF0ZVR5cGVTYWZldHk/OiBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8YW55LCBWLCBSPiB8IE9ic2VydmFibGU8SHR0cFJlcXVlc3RTdGF0ZTxWPj47XHJcbiAgcmVuZGVyID0gKHN0YXRlOiBIdHRwUmVxdWVzdFN0YXRlPFIgZXh0ZW5kcyBudWxsID8gViA6IFI+KSA9PiB7XHJcbiAgICBpZiAoaXNTdWNjZXNzU3RhdGUoc3RhdGUpKSB7XHJcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgeyAkaW1wbGljaXQ6IHN0YXRlLmJvZHkgfSk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFYsIFI+KGRpcjogSHR0cFN1Y2Nlc3NTdGF0ZURpcmVjdGl2ZTxWLCBSPiwgY3R4OiBhbnkpOiBjdHggaXMgSHR0cFN1Y2Nlc3NTdGF0ZVZpZXdDb250ZXh0PFIgZXh0ZW5kcyBudWxsID8gViA6IFI+IHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,6 +0,0 @@
1
- export * from './http-error-state-directive';
2
- export * from './http-inProgress-state-directive';
3
- export * from './http-notStarted-state-directive';
4
- export * from './http-success-state-directive';
5
- export * from './request-state-directive';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvaHR0cC1yZXF1ZXN0LXN0YXRlL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9odHRwLWVycm9yLXN0YXRlLWRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1pblByb2dyZXNzLXN0YXRlLWRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1ub3RTdGFydGVkLXN0YXRlLWRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1zdWNjZXNzLXN0YXRlLWRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVxdWVzdC1zdGF0ZS1kaXJlY3RpdmUnO1xyXG4iXX0=
@@ -1,61 +0,0 @@
1
- import { Directive, Input } from '@angular/core';
2
- import { defaultShareReplay } from '../../rxjs/defaultShareReplay';
3
- import { isObservable, Subject } from 'rxjs';
4
- import { map, switchAll } from 'rxjs/operators';
5
- import { HttpRequestStatus } from '../types';
6
- import * as i0 from "@angular/core";
7
- export class HttpRequestStateDirective {
8
- viewContainer;
9
- ViewContext = {
10
- $implicit: undefined,
11
- state: undefined,
12
- status: {
13
- inProgress: false,
14
- notStarted: true,
15
- success: false,
16
- error: false,
17
- }
18
- };
19
- subject = new Subject();
20
- state = this.subject.pipe(switchAll(), defaultShareReplay());
21
- subscription;
22
- hooks = [];
23
- set stateStore(store) {
24
- if (isObservable(store)) {
25
- this.subject.next(store);
26
- }
27
- else {
28
- this.subject.next(store.state$.pipe(map(state => state.response)));
29
- }
30
- }
31
- constructor(templateRef, viewContainer) {
32
- this.viewContainer = viewContainer;
33
- this.viewContainer.createEmbeddedView(templateRef, this.ViewContext);
34
- this.subscription = this.state.subscribe(state => {
35
- this.ViewContext.$implicit = state;
36
- this.ViewContext.state = state;
37
- this.ViewContext.status.inProgress = state.status === HttpRequestStatus.inProgress;
38
- this.ViewContext.status.notStarted = state.status === HttpRequestStatus.notStarted;
39
- this.ViewContext.status.success = state.status === HttpRequestStatus.success;
40
- this.ViewContext.status.error = state.status === HttpRequestStatus.fail;
41
- this.hooks.forEach(hook => hook(state));
42
- });
43
- }
44
- ngOnDestroy() {
45
- this.viewContainer.clear();
46
- this.subscription.unsubscribe();
47
- }
48
- static ngTemplateContextGuard(dir, ctx) {
49
- return true;
50
- }
51
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpRequestStateDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
52
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: HttpRequestStateDirective, isStandalone: true, selector: "[httpRequestState]", inputs: { stateStore: ["httpRequestState", "stateStore"] }, ngImport: i0 });
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HttpRequestStateDirective, decorators: [{
55
- type: Directive,
56
- args: [{ selector: '[httpRequestState]', standalone: true }]
57
- }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { stateStore: [{
58
- type: Input,
59
- args: ['httpRequestState']
60
- }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1zdGF0ZS1kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvaHR0cC1yZXF1ZXN0LXN0YXRlL2RpcmVjdGl2ZXMvcmVxdWVzdC1zdGF0ZS1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXlDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQWMsT0FBTyxFQUFrQixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBYy9ELE1BQU0sT0FBTyx5QkFBeUI7SUFDNUIsYUFBYSxDQUFtQjtJQUUvQixXQUFXLEdBQW1DO1FBQ3JELFNBQVMsRUFBRSxTQUFTO1FBQ3BCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE1BQU0sRUFBRTtZQUNOLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsS0FBSyxFQUFFLEtBQUs7U0FDYjtLQUNGLENBQUM7SUFHRixPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQW1DLENBQUM7SUFDekQsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUM3RCxZQUFZLENBQWlCO0lBQzdCLEtBQUssR0FBNkMsRUFBRSxDQUFDO0lBRXJELElBQStCLFVBQVUsQ0FBQyxLQUErRTtRQUN2SCxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDO0lBRUgsQ0FBQztJQUNELFlBQVksV0FBNkIsRUFBRSxhQUErQjtRQUN4RSxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLFVBQVUsQ0FBQztZQUNuRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7WUFDbkYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssaUJBQWlCLENBQUMsT0FBTyxDQUFDO1lBQzdFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLElBQUksQ0FBQztZQUN4RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBTyxHQUF5QyxFQUFFLEdBQVE7UUFDckYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO3VHQWxEVSx5QkFBeUI7MkZBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOytHQXFCOUIsVUFBVTtzQkFBeEMsS0FBSzt1QkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGRlZmF1bHRTaGFyZVJlcGxheSB9IGZyb20gJy4uLy4uL3J4anMvZGVmYXVsdFNoYXJlUmVwbGF5JztcclxuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBVbnN1YnNjcmliYWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaEFsbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTdGF0ZVN0b3JlIH0gZnJvbSAnLi4vSHR0cFJlcXVlc3RTdGF0ZVN0b3JlJztcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTdGF0ZSwgSHR0cFJlcXVlc3RTdGF0dXMgfSBmcm9tICcuLi90eXBlcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBSZXF1ZXN0U3RhdGVWaWV3Q29udGV4dDxUPiB7XHJcbiAgJGltcGxpY2l0PzogSHR0cFJlcXVlc3RTdGF0ZUFueTxUPjtcclxuICBzdGF0ZT86IEh0dHBSZXF1ZXN0U3RhdGVBbnk8VD47XHJcbiAgc3RhdHVzOiB7XHJcbiAgICBpblByb2dyZXNzOiBib29sZWFuO1xyXG4gICAgbm90U3RhcnRlZDogYm9vbGVhbjtcclxuICAgIHN1Y2Nlc3M6IGJvb2xlYW47XHJcbiAgICBlcnJvcjogYm9vbGVhbjtcclxuICB9O1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbaHR0cFJlcXVlc3RTdGF0ZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVxdWVzdFN0YXRlRGlyZWN0aXZlPFRQYXJhbSBleHRlbmRzIGFueVtdLCBWLCBSLCBUID0gUiBleHRlbmRzIG51bGwgPyBWIDogUj4ge1xyXG4gIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgcmVhZG9ubHkgVmlld0NvbnRleHQ6IEh0dHBSZXF1ZXN0U3RhdGVWaWV3Q29udGV4dDxUPiA9IHtcclxuICAgICRpbXBsaWNpdDogdW5kZWZpbmVkLFxyXG4gICAgc3RhdGU6IHVuZGVmaW5lZCxcclxuICAgIHN0YXR1czoge1xyXG4gICAgICBpblByb2dyZXNzOiBmYWxzZSxcclxuICAgICAgbm90U3RhcnRlZDogdHJ1ZSxcclxuICAgICAgc3VjY2VzczogZmFsc2UsXHJcbiAgICAgIGVycm9yOiBmYWxzZSxcclxuICAgIH1cclxuICB9O1xyXG5cclxuXHJcbiAgc3ViamVjdCA9IG5ldyBTdWJqZWN0PE9ic2VydmFibGU8SHR0cFJlcXVlc3RTdGF0ZTxUPj4+KCk7XHJcbiAgc3RhdGUgPSB0aGlzLnN1YmplY3QucGlwZShzd2l0Y2hBbGwoKSwgZGVmYXVsdFNoYXJlUmVwbGF5KCkpO1xyXG4gIHN1YnNjcmlwdGlvbjogVW5zdWJzY3JpYmFibGU7XHJcbiAgaG9va3M6ICgoc3RhdGU6IEh0dHBSZXF1ZXN0U3RhdGU8VD4pID0+IHZvaWQpW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCdodHRwUmVxdWVzdFN0YXRlJykgc2V0IHN0YXRlU3RvcmUoc3RvcmU6IEh0dHBSZXF1ZXN0U3RhdGVTdG9yZTxUUGFyYW0sIFYsIFIsIFQ+IHwgT2JzZXJ2YWJsZTxIdHRwUmVxdWVzdFN0YXRlPFQ+Pikge1xyXG4gICAgaWYgKGlzT2JzZXJ2YWJsZShzdG9yZSkpIHtcclxuICAgICAgdGhpcy5zdWJqZWN0Lm5leHQoc3RvcmUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdWJqZWN0Lm5leHQoc3RvcmUuc3RhdGUkLnBpcGUobWFwKHN0YXRlID0+IHN0YXRlLnJlc3BvbnNlKSkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgIHRoaXMudmlld0NvbnRhaW5lciA9IHZpZXdDb250YWluZXI7XHJcbiAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRlbXBsYXRlUmVmLCB0aGlzLlZpZXdDb250ZXh0KTtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xyXG4gICAgICB0aGlzLlZpZXdDb250ZXh0LiRpbXBsaWNpdCA9IHN0YXRlO1xyXG4gICAgICB0aGlzLlZpZXdDb250ZXh0LnN0YXRlID0gc3RhdGU7XHJcbiAgICAgIHRoaXMuVmlld0NvbnRleHQuc3RhdHVzLmluUHJvZ3Jlc3MgPSBzdGF0ZS5zdGF0dXMgPT09IEh0dHBSZXF1ZXN0U3RhdHVzLmluUHJvZ3Jlc3M7XHJcbiAgICAgIHRoaXMuVmlld0NvbnRleHQuc3RhdHVzLm5vdFN0YXJ0ZWQgPSBzdGF0ZS5zdGF0dXMgPT09IEh0dHBSZXF1ZXN0U3RhdHVzLm5vdFN0YXJ0ZWQ7XHJcbiAgICAgIHRoaXMuVmlld0NvbnRleHQuc3RhdHVzLnN1Y2Nlc3MgPSBzdGF0ZS5zdGF0dXMgPT09IEh0dHBSZXF1ZXN0U3RhdHVzLnN1Y2Nlc3M7XHJcbiAgICAgIHRoaXMuVmlld0NvbnRleHQuc3RhdHVzLmVycm9yID0gc3RhdGUuc3RhdHVzID09PSBIdHRwUmVxdWVzdFN0YXR1cy5mYWlsO1xyXG4gICAgICB0aGlzLmhvb2tzLmZvckVhY2goaG9vayA9PiBob29rKHN0YXRlKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFYsIFI+KGRpcjogSHR0cFJlcXVlc3RTdGF0ZURpcmVjdGl2ZTxhbnksIFYsIFI+LCBjdHg6IGFueSk6IGN0eCBpcyBIdHRwUmVxdWVzdFN0YXRlVmlld0NvbnRleHQ8UiBleHRlbmRzIG51bGwgPyBWIDogUj4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSHR0cFJlcXVlc3RTdGF0ZUFueTxUPiA9IHtcclxuICBzdGF0dXM6IEh0dHBSZXF1ZXN0U3RhdHVzO1xyXG4gIGJvZHk/OiBUO1xyXG4gIGVycm9yPzogYW55O1xyXG59XHJcbiJdfQ==