@daffodil/category 0.66.1 → 0.67.0

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 (184) hide show
  1. package/esm2022/driver/in-memory/backend/category.service.mjs +115 -0
  2. package/{esm2020 → esm2022}/driver/in-memory/drivers/category-driver.module.mjs +5 -5
  3. package/{esm2020 → esm2022}/driver/in-memory/drivers/category.service.mjs +5 -5
  4. package/{esm2020 → esm2022}/driver/magento/category-driver.module.mjs +5 -5
  5. package/{esm2020 → esm2022}/driver/magento/category.service.mjs +6 -6
  6. package/{esm2020 → esm2022}/driver/magento/testing/factories/category.factory.mjs +5 -5
  7. package/{esm2020 → esm2022}/driver/magento/transformers/applied-filter-transformer.service.mjs +5 -5
  8. package/{esm2020 → esm2022}/driver/magento/transformers/category-page-config-transformer.service.mjs +4 -4
  9. package/{esm2020 → esm2022}/driver/magento/transformers/category-response-transform.service.mjs +6 -6
  10. package/{esm2020 → esm2022}/driver/magento/transformers/category-transformer.service.mjs +4 -4
  11. package/{esm2020 → esm2022}/driver/testing/drivers/category-driver.module.mjs +5 -5
  12. package/{esm2020 → esm2022}/driver/testing/drivers/category.service.mjs +5 -5
  13. package/{esm2020 → esm2022}/routing/effects/collection-route.effects.mjs +5 -5
  14. package/esm2022/routing/module.mjs +73 -0
  15. package/esm2022/routing/resolvers/category-page/category-page.resolver.mjs +25 -0
  16. package/{esm2020 → esm2022}/routing/resolvers/category-page-id/category-page-id.resolver.mjs +6 -6
  17. package/{esm2020 → esm2022}/routing/resolvers/category-page-url/category-page-url.resolver.mjs +6 -6
  18. package/{esm2020 → esm2022}/routing/services/url-request-builder.service.mjs +6 -6
  19. package/{esm2020 → esm2022}/state/category-state.module.mjs +7 -7
  20. package/{esm2020 → esm2022}/state/effects/category-page-filter.effects.mjs +6 -6
  21. package/{esm2020 → esm2022}/state/effects/category-page.effects.mjs +6 -6
  22. package/{esm2020 → esm2022}/state/effects/category.effects.mjs +6 -6
  23. package/{esm2020 → esm2022}/state/facades/collection/facade.mjs +5 -5
  24. package/esm2022/state/facades/page/category.facade.mjs +52 -0
  25. package/{esm2020 → esm2022}/state/product-state.module.mjs +7 -7
  26. package/{esm2020 → esm2022}/state/testing/category-testing.module.mjs +8 -8
  27. package/{esm2020 → esm2022}/state/testing/mock-category-facade.mjs +4 -4
  28. package/{esm2020 → esm2022}/testing/factories/category-breadcrumb.factory.mjs +5 -5
  29. package/{esm2020 → esm2022}/testing/factories/category-page-metadata.factory.mjs +5 -5
  30. package/{esm2020 → esm2022}/testing/factories/category.factory.mjs +5 -5
  31. package/{fesm2020 → fesm2022}/daffodil-category-driver-in-memory.mjs +20 -20
  32. package/{fesm2020 → fesm2022}/daffodil-category-driver-in-memory.mjs.map +1 -1
  33. package/{fesm2015 → fesm2022}/daffodil-category-driver-magento-testing.mjs +4 -4
  34. package/{fesm2020 → fesm2022}/daffodil-category-driver-magento-testing.mjs.map +1 -1
  35. package/{fesm2020 → fesm2022}/daffodil-category-driver-magento.mjs +24 -24
  36. package/fesm2022/daffodil-category-driver-magento.mjs.map +1 -0
  37. package/{fesm2020 → fesm2022}/daffodil-category-driver-testing.mjs +8 -8
  38. package/{fesm2020 → fesm2022}/daffodil-category-driver-testing.mjs.map +1 -1
  39. package/{fesm2020 → fesm2022}/daffodil-category-routing.mjs +51 -51
  40. package/fesm2022/daffodil-category-routing.mjs.map +1 -0
  41. package/{fesm2020 → fesm2022}/daffodil-category-state-testing.mjs +10 -10
  42. package/{fesm2020 → fesm2022}/daffodil-category-state-testing.mjs.map +1 -1
  43. package/{fesm2020 → fesm2022}/daffodil-category-state.mjs +44 -44
  44. package/{fesm2020 → fesm2022}/daffodil-category-state.mjs.map +1 -1
  45. package/{fesm2020 → fesm2022}/daffodil-category-testing.mjs +12 -12
  46. package/{fesm2020 → fesm2022}/daffodil-category-testing.mjs.map +1 -1
  47. package/models/category-request.d.ts +1 -1
  48. package/models/category.d.ts +1 -1
  49. package/package.json +1 -1
  50. package/routing/injection-tokens/request/builder.token.d.ts +1 -1
  51. package/routing/injection-tokens/request/builders.token.d.ts +1 -1
  52. package/routing/resolvers/category-page/category-page.resolver.d.ts +2 -2
  53. package/routing/resolvers/category-page-id/category-page-id.resolver.d.ts +2 -2
  54. package/routing/resolvers/category-page-url/category-page-url.resolver.d.ts +2 -2
  55. package/state/actions/category-page-filter.actions.d.ts +1 -1
  56. package/state/actions/category-page.actions.d.ts +1 -1
  57. package/state/actions/category.actions.d.ts +1 -1
  58. package/state/reducers/page-metadata/state.interface.d.ts +1 -1
  59. package/state/selectors/collection/selectors.d.ts +1 -1
  60. package/esm2020/driver/in-memory/backend/category.service.mjs +0 -115
  61. package/esm2020/routing/module.mjs +0 -73
  62. package/esm2020/routing/resolvers/category-page/category-page.resolver.mjs +0 -25
  63. package/esm2020/state/facades/page/category.facade.mjs +0 -52
  64. package/fesm2015/daffodil-category-driver-in-memory.mjs +0 -184
  65. package/fesm2015/daffodil-category-driver-in-memory.mjs.map +0 -1
  66. package/fesm2015/daffodil-category-driver-magento-testing.mjs.map +0 -1
  67. package/fesm2015/daffodil-category-driver-magento.mjs +0 -382
  68. package/fesm2015/daffodil-category-driver-magento.mjs.map +0 -1
  69. package/fesm2015/daffodil-category-driver-testing.mjs +0 -77
  70. package/fesm2015/daffodil-category-driver-testing.mjs.map +0 -1
  71. package/fesm2015/daffodil-category-routing.mjs +0 -239
  72. package/fesm2015/daffodil-category-routing.mjs.map +0 -1
  73. package/fesm2015/daffodil-category-state-testing.mjs +0 -72
  74. package/fesm2015/daffodil-category-state-testing.mjs.map +0 -1
  75. package/fesm2015/daffodil-category-state.mjs +0 -723
  76. package/fesm2015/daffodil-category-state.mjs.map +0 -1
  77. package/fesm2015/daffodil-category-testing.mjs +0 -116
  78. package/fesm2015/daffodil-category-testing.mjs.map +0 -1
  79. package/fesm2015/daffodil-category.mjs.map +0 -1
  80. package/fesm2020/daffodil-category-driver-magento-testing.mjs +0 -43
  81. package/fesm2020/daffodil-category-driver-magento.mjs.map +0 -1
  82. package/fesm2020/daffodil-category-driver.mjs +0 -12
  83. package/fesm2020/daffodil-category-driver.mjs.map +0 -1
  84. package/fesm2020/daffodil-category-routing.mjs.map +0 -1
  85. package/fesm2020/daffodil-category.mjs +0 -17
  86. /package/{esm2020 → esm2022}/daffodil-category.mjs +0 -0
  87. /package/{esm2020 → esm2022}/driver/daffodil-category-driver.mjs +0 -0
  88. /package/{esm2020 → esm2022}/driver/in-memory/backend/public_api.mjs +0 -0
  89. /package/{esm2020 → esm2022}/driver/in-memory/daffodil-category-driver-in-memory.mjs +0 -0
  90. /package/{esm2020 → esm2022}/driver/in-memory/drivers/public_api.mjs +0 -0
  91. /package/{esm2020 → esm2022}/driver/in-memory/index.mjs +0 -0
  92. /package/{esm2020 → esm2022}/driver/in-memory/public_api.mjs +0 -0
  93. /package/{esm2020 → esm2022}/driver/index.mjs +0 -0
  94. /package/{esm2020 → esm2022}/driver/interfaces/category-service.interface.mjs +0 -0
  95. /package/{esm2020 → esm2022}/driver/magento/config/default.mjs +0 -0
  96. /package/{esm2020 → esm2022}/driver/magento/daffodil-category-driver-magento.mjs +0 -0
  97. /package/{esm2020 → esm2022}/driver/magento/index.mjs +0 -0
  98. /package/{esm2020 → esm2022}/driver/magento/interfaces/config.interface.mjs +0 -0
  99. /package/{esm2020 → esm2022}/driver/magento/interfaces/public_api.mjs +0 -0
  100. /package/{esm2020 → esm2022}/driver/magento/models/category.mjs +0 -0
  101. /package/{esm2020 → esm2022}/driver/magento/models/complete-category-response.mjs +0 -0
  102. /package/{esm2020 → esm2022}/driver/magento/models/get-category-and-products.interface.mjs +0 -0
  103. /package/{esm2020 → esm2022}/driver/magento/models/public_api.mjs +0 -0
  104. /package/{esm2020 → esm2022}/driver/magento/models/requests/custom-metadata-attribute.mjs +0 -0
  105. /package/{esm2020 → esm2022}/driver/magento/models/requests/get-products-by-categories-request.mjs +0 -0
  106. /package/{esm2020 → esm2022}/driver/magento/models/url-resolver-response.mjs +0 -0
  107. /package/{esm2020 → esm2022}/driver/magento/models/url-resolver.mjs +0 -0
  108. /package/{esm2020 → esm2022}/driver/magento/public_api.mjs +0 -0
  109. /package/{esm2020 → esm2022}/driver/magento/queries/fragments/category-tree.mjs +0 -0
  110. /package/{esm2020 → esm2022}/driver/magento/queries/fragments/public_api.mjs +0 -0
  111. /package/{esm2020 → esm2022}/driver/magento/queries/get-category-and-products.mjs +0 -0
  112. /package/{esm2020 → esm2022}/driver/magento/queries/public_api.mjs +0 -0
  113. /package/{esm2020 → esm2022}/driver/magento/queries/resolve-url.mjs +0 -0
  114. /package/{esm2020 → esm2022}/driver/magento/testing/daffodil-category-driver-magento-testing.mjs +0 -0
  115. /package/{esm2020 → esm2022}/driver/magento/testing/factories/public_api.mjs +0 -0
  116. /package/{esm2020 → esm2022}/driver/magento/testing/index.mjs +0 -0
  117. /package/{esm2020 → esm2022}/driver/magento/testing/public_api.mjs +0 -0
  118. /package/{esm2020 → esm2022}/driver/magento/transformers/public_api.mjs +0 -0
  119. /package/{esm2020 → esm2022}/driver/magento/transformers/pure/add-metadata-types-to-aggregates.mjs +0 -0
  120. /package/{esm2020 → esm2022}/driver/magento/transformers/truncate-url.mjs +0 -0
  121. /package/{esm2020 → esm2022}/driver/public_api.mjs +0 -0
  122. /package/{esm2020 → esm2022}/driver/testing/daffodil-category-driver-testing.mjs +0 -0
  123. /package/{esm2020 → esm2022}/driver/testing/drivers/public_api.mjs +0 -0
  124. /package/{esm2020 → esm2022}/driver/testing/index.mjs +0 -0
  125. /package/{esm2020 → esm2022}/driver/testing/public_api.mjs +0 -0
  126. /package/{esm2020 → esm2022}/index.mjs +0 -0
  127. /package/{esm2020 → esm2022}/models/category-breadcrumb.mjs +0 -0
  128. /package/{esm2020 → esm2022}/models/category-page-metadata.mjs +0 -0
  129. /package/{esm2020 → esm2022}/models/category-request.mjs +0 -0
  130. /package/{esm2020 → esm2022}/models/category.mjs +0 -0
  131. /package/{esm2020 → esm2022}/models/generic-category.mjs +0 -0
  132. /package/{esm2020 → esm2022}/models/get-category-response.mjs +0 -0
  133. /package/{esm2020 → esm2022}/models/public_api.mjs +0 -0
  134. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  135. /package/{esm2020 → esm2022}/routing/daffodil-category-routing.mjs +0 -0
  136. /package/{esm2020 → esm2022}/routing/index.mjs +0 -0
  137. /package/{esm2020 → esm2022}/routing/injection-tokens/public_api.mjs +0 -0
  138. /package/{esm2020 → esm2022}/routing/injection-tokens/request/builder.token.mjs +0 -0
  139. /package/{esm2020 → esm2022}/routing/injection-tokens/request/builders.token.mjs +0 -0
  140. /package/{esm2020 → esm2022}/routing/public_api.mjs +0 -0
  141. /package/{esm2020 → esm2022}/routing/resolvers/public_api.mjs +0 -0
  142. /package/{esm2020 → esm2022}/routing/services/public_api.mjs +0 -0
  143. /package/{esm2020 → esm2022}/state/actions/category-page-filter.actions.mjs +0 -0
  144. /package/{esm2020 → esm2022}/state/actions/category-page.actions.mjs +0 -0
  145. /package/{esm2020 → esm2022}/state/actions/category.actions.mjs +0 -0
  146. /package/{esm2020 → esm2022}/state/daffodil-category-state.mjs +0 -0
  147. /package/{esm2020 → esm2022}/state/facades/page/category-facade.interface.mjs +0 -0
  148. /package/{esm2020 → esm2022}/state/facades/public_api.mjs +0 -0
  149. /package/{esm2020 → esm2022}/state/index.mjs +0 -0
  150. /package/{esm2020 → esm2022}/state/injection-tokens/error-matcher.token.mjs +0 -0
  151. /package/{esm2020 → esm2022}/state/injection-tokens/public_api.mjs +0 -0
  152. /package/{esm2020 → esm2022}/state/public_api.mjs +0 -0
  153. /package/{esm2020 → esm2022}/state/reducers/category/category-reducer-state.interface.mjs +0 -0
  154. /package/{esm2020 → esm2022}/state/reducers/category/category.reducer.mjs +0 -0
  155. /package/{esm2020 → esm2022}/state/reducers/category-entities/category-entities-adapter.mjs +0 -0
  156. /package/{esm2020 → esm2022}/state/reducers/category-entities/category-entities.reducer.mjs +0 -0
  157. /package/{esm2020 → esm2022}/state/reducers/category-reducers.interface.mjs +0 -0
  158. /package/{esm2020 → esm2022}/state/reducers/category-reducers.mjs +0 -0
  159. /package/{esm2020 → esm2022}/state/reducers/category-store-feature-key.mjs +0 -0
  160. /package/{esm2020 → esm2022}/state/reducers/page-metadata/reducer.mjs +0 -0
  161. /package/{esm2020 → esm2022}/state/reducers/page-metadata/state.interface.mjs +0 -0
  162. /package/{esm2020 → esm2022}/state/reducers/product-reducers.mjs +0 -0
  163. /package/{esm2020 → esm2022}/state/reducers/product.reducer.mjs +0 -0
  164. /package/{esm2020 → esm2022}/state/reducers/public_api.mjs +0 -0
  165. /package/{esm2020 → esm2022}/state/reducers/token/extra.token.mjs +0 -0
  166. /package/{esm2020 → esm2022}/state/reducers/token/public_api.mjs +0 -0
  167. /package/{esm2020 → esm2022}/state/reducers/token/reducers.token.mjs +0 -0
  168. /package/{esm2020 → esm2022}/state/selectors/category-entities/category-entities.selector.mjs +0 -0
  169. /package/{esm2020 → esm2022}/state/selectors/category-feature.selector.mjs +0 -0
  170. /package/{esm2020 → esm2022}/state/selectors/category-page/category-page.selector.mjs +0 -0
  171. /package/{esm2020 → esm2022}/state/selectors/category.selector.mjs +0 -0
  172. /package/{esm2020 → esm2022}/state/selectors/collection/selectors.mjs +0 -0
  173. /package/{esm2020 → esm2022}/state/testing/daffodil-category-state-testing.mjs +0 -0
  174. /package/{esm2020 → esm2022}/state/testing/index.mjs +0 -0
  175. /package/{esm2020 → esm2022}/state/testing/public_api.mjs +0 -0
  176. /package/{esm2020 → esm2022}/testing/daffodil-category-testing.mjs +0 -0
  177. /package/{esm2020 → esm2022}/testing/factories/public_api.mjs +0 -0
  178. /package/{esm2020 → esm2022}/testing/helpers/category-helper.mjs +0 -0
  179. /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
  180. /package/{esm2020 → esm2022}/testing/public_api.mjs +0 -0
  181. /package/{fesm2015 → fesm2022}/daffodil-category-driver.mjs +0 -0
  182. /package/{fesm2015 → fesm2022}/daffodil-category-driver.mjs.map +0 -0
  183. /package/{fesm2015 → fesm2022}/daffodil-category.mjs +0 -0
  184. /package/{fesm2020 → fesm2022}/daffodil-category.mjs.map +0 -0
@@ -1,723 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, Inject, inject, NgModule } from '@angular/core';
3
- import * as i1$1 from '@ngrx/effects';
4
- import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
5
- import * as i1 from '@ngrx/store';
6
- import { createFeatureSelector, createSelector, defaultMemoize, select, combineReducers, StoreModule } from '@ngrx/store';
7
- import { getDaffProductSelectors, DaffProductGridLoadSuccess, DaffProductStateModule, daffProductReducerInitialState, daffProductProvideExtraReducers } from '@daffodil/product/state';
8
- import { of, asyncScheduler } from 'rxjs';
9
- import { withLatestFrom, map, throttleTime, switchMap, catchError, mergeMap } from 'rxjs/operators';
10
- import { DaffCategoryRequestKind } from '@daffodil/category';
11
- import { DaffCategoryDriver } from '@daffodil/category/driver';
12
- import { daffToggleRequestOnFilters, daffRemoveRequestsFromFilters, daffClearFilters, daffApplyRequestsToFilters, daffFiltersToRequests } from '@daffodil/core';
13
- import { daffTransformErrorToStateError, daffOperationInitialState, daffOperationFailed, daffCompleteOperation, daffStartMutation, daffStartResolution, daffCollectionReducerInitialState, getCollectionStateAdapter, daffOperationStateSelectorFactory, daffCollectionSelectorFactory, DaffCollectionFacade, daffComposeReducers, daffIdentityReducer } from '@daffodil/core/state';
14
- import { createEntityAdapter } from '@ngrx/entity';
15
-
16
- /**
17
- * The possible types of category page filter actions.
18
- */
19
- var DaffCategoryPageProductCollectionActionTypes;
20
- (function (DaffCategoryPageProductCollectionActionTypes) {
21
- DaffCategoryPageProductCollectionActionTypes["CategoryPageChangeFiltersAction"] = "[@daffodil/category] Category Page Change Filters Action";
22
- DaffCategoryPageProductCollectionActionTypes["CategoryPageReplaceFiltersAction"] = "[@daffodil/category] Category Page Replace Filters Action";
23
- DaffCategoryPageProductCollectionActionTypes["CategoryPageApplyFiltersAction"] = "[@daffodil/category] Category Page Apply Filters Action";
24
- DaffCategoryPageProductCollectionActionTypes["CategoryPageRemoveFiltersAction"] = "[@daffodil/category] Category Page Remove Filters Action";
25
- DaffCategoryPageProductCollectionActionTypes["CategoryPageClearFiltersAction"] = "[@daffodil/category] Category Page Clear Filters Action";
26
- DaffCategoryPageProductCollectionActionTypes["CategoryPageToggleFilterAction"] = "[@daffodil/category] Category Page Toggle Filter Action";
27
- DaffCategoryPageProductCollectionActionTypes["CategoryPageChangeSizeAction"] = "[@daffodil/category] Category Page Change Size Action";
28
- DaffCategoryPageProductCollectionActionTypes["CategoryPageChangeCurrentPageAction"] = "[@daffodil/category] Category Page Change Current Page Action";
29
- DaffCategoryPageProductCollectionActionTypes["CategoryPageChangeSortingOptionAction"] = "[@daffodil/category] Category Page Change Sorting Option Action";
30
- })(DaffCategoryPageProductCollectionActionTypes || (DaffCategoryPageProductCollectionActionTypes = {}));
31
- /**
32
- * An action for changing the filters for the current category.
33
- *
34
- * @param filters - Filters to be changed on the current category.
35
- * @deprecated use {@link DaffCategoryPageReplaceFilters} or {@link DaffCategoryPageApplyFilters}
36
- */
37
- class DaffCategoryPageChangeFilters {
38
- constructor(filters) {
39
- this.filters = filters;
40
- this.type = DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction;
41
- }
42
- }
43
- /**
44
- * An action for replacing the filters for the current category.
45
- * All existing filters will be removed and the specified filters will be applied.
46
- *
47
- * @param filters - Filters to be set on the current category.
48
- */
49
- class DaffCategoryPageReplaceFilters {
50
- constructor(filters) {
51
- this.filters = filters;
52
- this.type = DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction;
53
- }
54
- }
55
- /**
56
- * An action for applying the specified filters for the current category.
57
- *
58
- * @param filters - Filters to be applied to the current category.
59
- */
60
- class DaffCategoryPageApplyFilters {
61
- constructor(filters) {
62
- this.filters = filters;
63
- this.type = DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction;
64
- }
65
- }
66
- /**
67
- * An action for removing the specified filters for the current category.
68
- *
69
- * @param filters - Filters to be removed from the current category.
70
- */
71
- class DaffCategoryPageRemoveFilters {
72
- constructor(filters) {
73
- this.filters = filters;
74
- this.type = DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction;
75
- }
76
- }
77
- /**
78
- * An action for removing all the filters for the current category.
79
- */
80
- class DaffCategoryPageClearFilters {
81
- constructor() {
82
- this.type = DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction;
83
- }
84
- }
85
- /**
86
- * An action for toggling a filters for the current category.
87
- *
88
- * @param filter - Filter to be toggled on the current category.
89
- */
90
- class DaffCategoryPageToggleFilter {
91
- constructor(filter) {
92
- this.filter = filter;
93
- this.type = DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction;
94
- }
95
- }
96
- /**
97
- * An action for changing the number of products shown on each page for the selected category.
98
- *
99
- * @param pageSize - The number of products per page.
100
- */
101
- class DaffCategoryPageChangePageSize {
102
- constructor(pageSize) {
103
- this.pageSize = pageSize;
104
- this.type = DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction;
105
- }
106
- }
107
- /**
108
- * An action for changing the current page of products for the selected category.
109
- *
110
- * @param currentPage - The current page of products for the selected category.
111
- */
112
- class DaffCategoryPageChangeCurrentPage {
113
- constructor(currentPage) {
114
- this.currentPage = currentPage;
115
- this.type = DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction;
116
- }
117
- }
118
- /**
119
- * An action for changing the sorting option for the selected category.
120
- *
121
- * @param sort - The sort option to be applied.
122
- */
123
- class DaffCategoryPageChangeSortingOption {
124
- constructor(sort) {
125
- this.sort = sort;
126
- this.type = DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction;
127
- }
128
- }
129
-
130
- /**
131
- * The possible types of category page actions.
132
- */
133
- var DaffCategoryPageActionTypes;
134
- (function (DaffCategoryPageActionTypes) {
135
- DaffCategoryPageActionTypes["CategoryPageLoadAction"] = "[@daffodil/category] Category Page Load Action";
136
- DaffCategoryPageActionTypes["CategoryPageLoadByUrlAction"] = "[@daffodil/category] Category Page Load By URL Action";
137
- DaffCategoryPageActionTypes["CategoryPageLoadSuccessAction"] = "[@daffodil/category] Category Page Load Success Action";
138
- DaffCategoryPageActionTypes["CategoryPageLoadFailureAction"] = "[@daffodil/category] Category Page Load Failure Action";
139
- })(DaffCategoryPageActionTypes || (DaffCategoryPageActionTypes = {}));
140
- /**
141
- * An action triggered to initialize a category page load request.
142
- * This is intended to be used for loading full category pages.
143
- * Queries the category by ID.
144
- *
145
- * @param request - DaffCategoryRequest object
146
- */
147
- class DaffCategoryPageLoad {
148
- constructor(request) {
149
- this.request = request;
150
- this.type = DaffCategoryPageActionTypes.CategoryPageLoadAction;
151
- }
152
- }
153
- /**
154
- * An action triggered to initialize a category page load request.
155
- * This is intended to be used for loading full category pages.
156
- * Queries the category by URL.
157
- *
158
- * @param request - DaffCategoryRequest object
159
- */
160
- class DaffCategoryPageLoadByUrl {
161
- constructor(request) {
162
- this.request = request;
163
- this.type = DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction;
164
- }
165
- }
166
- /**
167
- * An action triggered upon a successful category page request.
168
- *
169
- * @param response - DaffGetCategoryResponse object
170
- */
171
- class DaffCategoryPageLoadSuccess {
172
- constructor(response) {
173
- this.response = response;
174
- this.type = DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction;
175
- }
176
- }
177
- /**
178
- * An action triggered upon a failed category page request.
179
- *
180
- * @param errorMessage - an error message
181
- */
182
- class DaffCategoryPageLoadFailure {
183
- constructor(errorMessage) {
184
- this.errorMessage = errorMessage;
185
- this.type = DaffCategoryPageActionTypes.CategoryPageLoadFailureAction;
186
- }
187
- }
188
-
189
- /**
190
- * Transforms `DaffError`s into `DaffStateError`s before they are serialized into state.
191
- * Can be used to further refine Daffodil errors into more specific app errors.
192
- */
193
- const DAFF_CATEGORY_ERROR_MATCHER = new InjectionToken('DAFF_CATEGORY_ERROR_MATCHER', { factory: () => daffTransformErrorToStateError });
194
-
195
- function daffCategoryEntitiesAdapter() {
196
- return createEntityAdapter();
197
- }
198
-
199
- const daffCategoryInitialState = Object.assign(Object.assign({}, daffOperationInitialState), { id: null });
200
- /**
201
- * Returns the state for category data except for category entities.
202
- */
203
- function daffCategoryReducer(state = daffCategoryInitialState, action) {
204
- switch (action.type) {
205
- case DaffCategoryPageActionTypes.CategoryPageLoadAction:
206
- case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:
207
- return Object.assign(Object.assign({}, daffStartResolution(state)), { id: null });
208
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction:
209
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction:
210
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction:
211
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction:
212
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction:
213
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction:
214
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction:
215
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction:
216
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction:
217
- return daffStartMutation(state);
218
- case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:
219
- return Object.assign(Object.assign({}, daffCompleteOperation(state)), { id: action.response.category.id });
220
- case DaffCategoryPageActionTypes.CategoryPageLoadFailureAction:
221
- return daffOperationFailed([action.errorMessage], state);
222
- default:
223
- return state;
224
- }
225
- }
226
-
227
- /**
228
- * The possible types of category actions.
229
- */
230
- var DaffCategoryActionTypes;
231
- (function (DaffCategoryActionTypes) {
232
- DaffCategoryActionTypes["CategoryLoadAction"] = "[Daff-Category] Category Load Action";
233
- DaffCategoryActionTypes["CategoryLoadSuccessAction"] = "[Daff-Category] Category Load Success Action";
234
- DaffCategoryActionTypes["CategoryLoadFailureAction"] = "[Daff-Category] Category Load Failure Action";
235
- })(DaffCategoryActionTypes || (DaffCategoryActionTypes = {}));
236
- /**
237
- * An action triggered to initialize a category load request.
238
- *
239
- * @param request - DaffCategoryRequest object
240
- */
241
- class DaffCategoryLoad {
242
- constructor(request) {
243
- this.request = request;
244
- this.type = DaffCategoryActionTypes.CategoryLoadAction;
245
- }
246
- }
247
- /**
248
- * An action triggered upon a successful category request.
249
- *
250
- * @param response - DaffGetCategoryResponse object
251
- */
252
- class DaffCategoryLoadSuccess {
253
- constructor(response) {
254
- this.response = response;
255
- this.type = DaffCategoryActionTypes.CategoryLoadSuccessAction;
256
- }
257
- }
258
- /**
259
- * An action triggered upon a failed category request.
260
- *
261
- * @param errorMessage - an error message
262
- */
263
- class DaffCategoryLoadFailure {
264
- constructor(errorMessage) {
265
- this.errorMessage = errorMessage;
266
- this.type = DaffCategoryActionTypes.CategoryLoadFailureAction;
267
- }
268
- }
269
-
270
- /**
271
- * A reducer function to store category entities from DaffCategoryLoadSuccess and DaffCategoryPageLoadSuccess actions.
272
- */
273
- function daffCategoryEntitiesReducer(state = daffCategoryEntitiesAdapter().getInitialState(), action) {
274
- switch (action.type) {
275
- case DaffCategoryActionTypes.CategoryLoadSuccessAction:
276
- case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:
277
- return daffCategoryEntitiesAdapter().upsertOne(Object.assign({ id: action.response.category.id }, action.response.category), state);
278
- default:
279
- return state;
280
- }
281
- }
282
-
283
- const daffCategoryPageMetadataInitialState = Object.assign(Object.assign({}, daffCollectionReducerInitialState), { id: null });
284
- /**
285
- * Returns the state for category data except for category entities.
286
- */
287
- function daffCategoryPageMetadataReducer(state = daffCategoryPageMetadataInitialState, action) {
288
- const adapter = getCollectionStateAdapter();
289
- switch (action.type) {
290
- case DaffCategoryPageActionTypes.CategoryPageLoadAction:
291
- case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:
292
- return Object.assign(Object.assign({}, adapter.storeRequest(action.request, daffCategoryPageMetadataInitialState)), { id: null });
293
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction:
294
- return adapter.setPageSize(action.pageSize, state);
295
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction:
296
- return adapter.setCurrentPage(action.currentPage, state);
297
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction:
298
- return adapter.setSort(action.sort.option, action.sort.direction, state);
299
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction:
300
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction:
301
- return adapter.setFilters(daffApplyRequestsToFilters(action.filters, daffClearFilters(state.filters)), state);
302
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction:
303
- return adapter.setFilters(daffApplyRequestsToFilters(action.filters, state.filters), state);
304
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction:
305
- return adapter.setFilters(daffClearFilters(state.filters), state);
306
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction:
307
- return adapter.setFilters(daffRemoveRequestsFromFilters(action.filters, state.filters), state);
308
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction:
309
- return adapter.setFilters(daffToggleRequestOnFilters(action.filter, state.filters), state);
310
- case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:
311
- return Object.assign(Object.assign({}, adapter.setMetadata({
312
- currentPage: action.response.categoryPageMetadata.currentPage,
313
- pageSize: action.response.categoryPageMetadata.pageSize,
314
- filters: action.response.categoryPageMetadata.filters,
315
- sortOptions: action.response.categoryPageMetadata.sortOptions,
316
- totalPages: action.response.categoryPageMetadata.totalPages,
317
- count: action.response.categoryPageMetadata.count,
318
- ids: action.response.categoryPageMetadata.ids,
319
- appliedSortOption: action.response.categoryPageMetadata.appliedSortOption || action.response.categoryPageMetadata.sortOptions.default,
320
- appliedSortDirection: action.response.categoryPageMetadata.appliedSortDirection,
321
- }, state)), { id: action.response.categoryPageMetadata.id });
322
- default:
323
- return state;
324
- }
325
- }
326
-
327
- /**
328
- * All daffodil defined category reducers.
329
- */
330
- const daffCategoryReducers = {
331
- category: daffCategoryReducer,
332
- categoryEntities: daffCategoryEntitiesReducer,
333
- pageMetadata: daffCategoryPageMetadataReducer,
334
- };
335
-
336
- /**
337
- * The key for the slice of category related redux state in the global redux state object.
338
- */
339
- const DAFF_CATEGORY_STORE_FEATURE_KEY = 'daffCategory';
340
-
341
- /**
342
- * A token to hold the injectable extra reducers.
343
- *
344
- * Prefer using {@link daffCategoryProvideExtraReducers}.
345
- */
346
- const DAFF_CATEGORY_EXTRA_REDUCERS = new InjectionToken('DAFF_CATEGORY_EXTRA_REDUCERS', {
347
- factory: () => [],
348
- providedIn: 'any',
349
- });
350
- /**
351
- * Provides additional reducers that run after the standard Daffodil category reducers.
352
- *
353
- * ```ts
354
- * providers: [
355
- * ...daffCategoryProvideExtraReducers(
356
- * myReducer1,
357
- * myReducer2
358
- * )
359
- * ]
360
- * ```
361
- */
362
- function daffCategoryProvideExtraReducers(...reducers) {
363
- return reducers.map(reducer => ({
364
- provide: DAFF_CATEGORY_EXTRA_REDUCERS,
365
- useValue: reducer,
366
- multi: true,
367
- }));
368
- }
369
-
370
- /**
371
- * A function that returns a selector for the entire category feature state.
372
- */
373
- const getDaffCategoryFeatureSelector = (() => {
374
- let cache;
375
- return () => cache = cache
376
- ? cache
377
- : { selectCategoryFeatureState: createFeatureSelector(DAFF_CATEGORY_STORE_FEATURE_KEY) };
378
- })();
379
-
380
- const createCategoryFeatureSelectors = () => {
381
- const entitiesSelectors = daffCategoryEntitiesAdapter().getSelectors();
382
- const categoryFeatureState = getDaffCategoryFeatureSelector().selectCategoryFeatureState;
383
- const selectCategoryEntitiesState = createSelector(categoryFeatureState, (state) => state.categoryEntities);
384
- const selectCategoryIds = createSelector(selectCategoryEntitiesState, entitiesSelectors.selectIds);
385
- const selectCategoryEntities = createSelector(selectCategoryEntitiesState, entitiesSelectors.selectEntities);
386
- const selectAllCategories = createSelector(selectCategoryEntitiesState, entitiesSelectors.selectAll);
387
- const selectCategoryTotal = createSelector(selectCategoryEntitiesState, entitiesSelectors.selectTotal);
388
- return {
389
- selectCategoryEntitiesState,
390
- selectCategoryIds,
391
- selectCategoryEntities,
392
- selectAllCategories,
393
- selectCategoryTotal,
394
- };
395
- };
396
- /**
397
- * A function that returns all selectors related to category entities.
398
- */
399
- const getDaffCategoryEntitiesSelectors = (() => {
400
- let cache;
401
- return () => cache = cache
402
- ? cache
403
- : createCategoryFeatureSelectors();
404
- })();
405
-
406
- const createCategoryPageSelectors = () => {
407
- const selectCategoryFeatureState = getDaffCategoryFeatureSelector().selectCategoryFeatureState;
408
- const selectCategoryState = createSelector(selectCategoryFeatureState, (state) => state.category);
409
- const selectCategoryPageMetadata = createSelector(selectCategoryFeatureState, (state) => state.pageMetadata);
410
- const selectCategoryPageProductIds = createSelector(selectCategoryPageMetadata, (state) => state.ids);
411
- const selectIsCategoryPageEmpty = createSelector(selectCategoryPageProductIds, (state) => !state.length);
412
- const selectCurrentCategoryId = createSelector(selectCategoryState, (state) => state.id);
413
- return Object.assign(Object.assign({}, daffOperationStateSelectorFactory(selectCategoryState)), { selectCategoryState,
414
- selectCategoryPageProductIds,
415
- selectIsCategoryPageEmpty,
416
- selectCurrentCategoryId });
417
- };
418
- /**
419
- * A function that returns all selectors related to the category page metadata, category loading, and errors.
420
- * Returns {@link DaffCategoryPageMemoizedSelectors}.
421
- */
422
- const getDaffCategoryPageSelectors = (() => {
423
- let cache;
424
- return () => cache = cache
425
- ? cache
426
- : createCategoryPageSelectors();
427
- })();
428
-
429
- const { selectCategoryFeatureState, } = getDaffCategoryFeatureSelector();
430
- const selectCategoryProductCollectionState = createSelector(selectCategoryFeatureState, state => state.pageMetadata);
431
- const getCategoryProductCollectionSelectors = (() => {
432
- let cache;
433
- return () => cache = cache || daffCollectionSelectorFactory(selectCategoryProductCollectionState);
434
- })();
435
-
436
- const createCategorySelectors = () => {
437
- const { selectAllProducts, selectProductEntities } = getDaffProductSelectors();
438
- const { selectCategoryEntities, } = getDaffCategoryEntitiesSelectors();
439
- const { selectCurrentCategoryId, selectCategoryPageProductIds, } = getDaffCategoryPageSelectors();
440
- /**
441
- * Combinatoric Category Selectors
442
- */
443
- const selectCurrentCategory = createSelector(selectCategoryEntities, selectCurrentCategoryId, (entities, currentCategoryId) => entities[currentCategoryId]);
444
- const selectCategoryPageProducts = createSelector(selectCategoryPageProductIds, selectProductEntities, (ids, products) => ids.map(id => products[id]).filter(p => p != null));
445
- const selectCategory = defaultMemoize((categoryId) => createSelector(selectCategoryEntities, (entities) => entities[categoryId])).memoized;
446
- const selectProductsByCategory = defaultMemoize((categoryId) => createSelector(selectCategory(categoryId), selectAllProducts, (category, products) => (category === null || category === void 0 ? void 0 : category.product_ids)
447
- ? products.filter(product => category.product_ids.indexOf(product.id) >= 0)
448
- : [])).memoized;
449
- const selectTotalProductsByCategory = defaultMemoize((categoryId) => createSelector(selectProductsByCategory(categoryId), (products) => products.length)).memoized;
450
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, getDaffCategoryFeatureSelector()), getDaffCategoryEntitiesSelectors()), getDaffCategoryPageSelectors()), getCategoryProductCollectionSelectors()), { selectCurrentCategory,
451
- selectCategoryPageProducts,
452
- selectCategory,
453
- selectProductsByCategory,
454
- selectTotalProductsByCategory });
455
- };
456
- /**
457
- * A function that returns all combinatoric category selectors.
458
- */
459
- const getDaffCategorySelectors = (() => {
460
- let cache;
461
- return () => cache = cache
462
- ? cache
463
- : createCategorySelectors();
464
- })();
465
-
466
- /**
467
- * A facade for interacting with the category state.
468
- * This facade exposes many parts of the state for easy access and allows dispatching of actions.
469
- *
470
- * @inheritdoc
471
- */
472
- class DaffCategoryFacade {
473
- constructor(store) {
474
- this.store = store;
475
- this.categorySelectors = getDaffCategorySelectors();
476
- this.category$ = this.store.pipe(select(this.categorySelectors.selectCurrentCategory));
477
- this.products$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageProducts));
478
- this.loadingState$ = this.store.pipe(select(this.categorySelectors.selectLoadingState));
479
- this.loading$ = this.store.pipe(select(this.categorySelectors.selectLoading));
480
- this.mutating$ = this.store.pipe(select(this.categorySelectors.selectMutating));
481
- this.resolving$ = this.store.pipe(select(this.categorySelectors.selectResolving));
482
- this.errors$ = this.store.pipe(select(this.categorySelectors.selectErrors));
483
- this.hasErrors$ = this.store.pipe(select(this.categorySelectors.selectHasErrors));
484
- this.isCategoryEmpty$ = this.store.pipe(select(this.categorySelectors.selectIsCategoryPageEmpty));
485
- }
486
- getCategoryById(id) {
487
- return this.store.pipe(select(this.categorySelectors.selectCategory(id)));
488
- }
489
- getProductsByCategory(categoryId) {
490
- return this.store.pipe(select(this.categorySelectors.selectProductsByCategory(categoryId)));
491
- }
492
- getTotalProductsByCategory(categoryId) {
493
- return this.store.pipe(select(this.categorySelectors.selectTotalProductsByCategory(categoryId)));
494
- }
495
- /**
496
- * Dispatches the given action.
497
- *
498
- * @param action action to dispatch.
499
- */
500
- dispatch(action) {
501
- this.store.dispatch(action);
502
- }
503
- }
504
- /** @nocollapse */ DaffCategoryFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryFacade, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
505
- /** @nocollapse */ DaffCategoryFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryFacade, providedIn: 'root' });
506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryFacade, decorators: [{
507
- type: Injectable,
508
- args: [{
509
- providedIn: 'root',
510
- }]
511
- }], ctorParameters: function () { return [{ type: i1.Store }]; } });
512
-
513
- class DaffCategoryProductCollectionFacade extends DaffCollectionFacade {
514
- constructor(store) {
515
- super(store, getCategoryProductCollectionSelectors());
516
- }
517
- }
518
- /** @nocollapse */ DaffCategoryProductCollectionFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryProductCollectionFacade, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
519
- /** @nocollapse */ DaffCategoryProductCollectionFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryProductCollectionFacade, providedIn: 'root' });
520
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryProductCollectionFacade, decorators: [{
521
- type: Injectable,
522
- args: [{
523
- providedIn: 'root',
524
- }]
525
- }], ctorParameters: function () { return [{ type: i1.Store }]; } });
526
-
527
- class DaffCategoryPageFilterEffects {
528
- constructor(actions$, driver, errorMatcher, facade) {
529
- this.actions$ = actions$;
530
- this.driver = driver;
531
- this.errorMatcher = errorMatcher;
532
- this.facade = facade;
533
- /**
534
- * Updates the filters applied to the category page. It will take the currently
535
- * applied filters from state, form them into a request, and attempt to apply
536
- * that request to a backend service.
537
- *
538
- * @param throttleWindow the amount of time to delay when apply/removing filters
539
- * in a sequence.
540
- */
541
- this.updateFilters$ = createEffect(() => (throttleWindow = 300, scheduler = asyncScheduler) => this.actions$.pipe(ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction, DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction, DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction, DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction, DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction, DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction), withLatestFrom(this.facade.metadata$), map(([action, metadata]) => ({
542
- kind: DaffCategoryRequestKind.ID,
543
- id: metadata.id,
544
- filterRequests: daffFiltersToRequests(metadata.filters),
545
- appliedSortOption: metadata.appliedSortOption,
546
- appliedSortDirection: metadata.appliedSortDirection,
547
- currentPage: metadata.currentPage,
548
- pageSize: metadata.pageSize,
549
- })), throttleTime(throttleWindow, scheduler, { leading: true, trailing: true }), switchMap(payload => this.driver.get(payload).pipe(switchMap((resp) => [
550
- new DaffProductGridLoadSuccess(resp.products),
551
- new DaffCategoryPageLoadSuccess(resp),
552
- ]), catchError((error) => of(new DaffCategoryPageLoadFailure(this.errorMatcher(error))))))));
553
- }
554
- }
555
- /** @nocollapse */ DaffCategoryPageFilterEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryPageFilterEffects, deps: [{ token: i1$1.Actions }, { token: DaffCategoryDriver }, { token: DAFF_CATEGORY_ERROR_MATCHER }, { token: DaffCategoryProductCollectionFacade }], target: i0.ɵɵFactoryTarget.Injectable });
556
- /** @nocollapse */ DaffCategoryPageFilterEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryPageFilterEffects });
557
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryPageFilterEffects, decorators: [{
558
- type: Injectable
559
- }], ctorParameters: function () {
560
- return [{ type: i1$1.Actions }, { type: undefined, decorators: [{
561
- type: Inject,
562
- args: [DaffCategoryDriver]
563
- }] }, { type: undefined, decorators: [{
564
- type: Inject,
565
- args: [DAFF_CATEGORY_ERROR_MATCHER]
566
- }] }, { type: DaffCategoryProductCollectionFacade }];
567
- } });
568
-
569
- class DaffCategoryPageEffects {
570
- constructor(actions$, driver, errorMatcher, store) {
571
- this.actions$ = actions$;
572
- this.driver = driver;
573
- this.errorMatcher = errorMatcher;
574
- this.store = store;
575
- this.categorySelectors = getDaffCategorySelectors();
576
- this.loadCategoryPage$ = createEffect(() => this.actions$.pipe(ofType(DaffCategoryPageActionTypes.CategoryPageLoadAction), switchMap((action) => this.processCategoryGetRequest(action.request))));
577
- this.loadCategoryPageByUrl$ = createEffect(() => this.actions$.pipe(ofType(DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction), switchMap((action) => this.driver.getByUrl(action.request).pipe(switchMap((resp) => [
578
- new DaffProductGridLoadSuccess(resp.products),
579
- new DaffCategoryPageLoadSuccess(resp),
580
- ]), catchError((error) => of(new DaffCategoryPageLoadFailure(this.errorMatcher(error))))))));
581
- this.changeCategoryPageSize$ = createEffect(() => this.actions$.pipe(ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction), withLatestFrom(this.store.pipe(select(this.categorySelectors.selectCollectionMetadata))), switchMap(([action, metadata]) => this.processCategoryGetRequest(Object.assign(Object.assign({}, metadata), { kind: DaffCategoryRequestKind.ID, filterRequests: daffFiltersToRequests(metadata.filters), pageSize: action.pageSize })))));
582
- this.changeCategoryCurrentPage$ = createEffect(() => this.actions$.pipe(ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction), withLatestFrom(this.store.pipe(select(this.categorySelectors.selectCollectionMetadata))), switchMap(([action, metadata]) => this.processCategoryGetRequest(Object.assign(Object.assign({}, metadata), { kind: DaffCategoryRequestKind.ID, filterRequests: daffFiltersToRequests(metadata.filters), currentPage: action.currentPage })))));
583
- this.changeCategorySort$ = createEffect(() => this.actions$.pipe(ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction), withLatestFrom(this.store.pipe(select(this.categorySelectors.selectCollectionMetadata))), switchMap(([action, metadata]) => this.processCategoryGetRequest(Object.assign(Object.assign({}, metadata), { kind: DaffCategoryRequestKind.ID, filterRequests: daffFiltersToRequests(metadata.filters), appliedSortOption: action.sort.option, appliedSortDirection: action.sort.direction })))));
584
- }
585
- processCategoryGetRequest(payload) {
586
- return this.driver.get(payload).pipe(switchMap((resp) => [
587
- new DaffProductGridLoadSuccess(resp.products),
588
- new DaffCategoryPageLoadSuccess(resp),
589
- ]), catchError((error) => of(new DaffCategoryPageLoadFailure(this.errorMatcher(error)))));
590
- }
591
- }
592
- /** @nocollapse */ DaffCategoryPageEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryPageEffects, deps: [{ token: i1$1.Actions }, { token: DaffCategoryDriver }, { token: DAFF_CATEGORY_ERROR_MATCHER }, { token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable });
593
- /** @nocollapse */ DaffCategoryPageEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryPageEffects });
594
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryPageEffects, decorators: [{
595
- type: Injectable
596
- }], ctorParameters: function () {
597
- return [{ type: i1$1.Actions }, { type: undefined, decorators: [{
598
- type: Inject,
599
- args: [DaffCategoryDriver]
600
- }] }, { type: undefined, decorators: [{
601
- type: Inject,
602
- args: [DAFF_CATEGORY_ERROR_MATCHER]
603
- }] }, { type: i1.Store }];
604
- } });
605
-
606
- class DaffCategoryEffects {
607
- constructor(actions$, driver, errorMatcher) {
608
- this.actions$ = actions$;
609
- this.driver = driver;
610
- this.errorMatcher = errorMatcher;
611
- this.loadCategory$ = createEffect(() => this.actions$.pipe(ofType(DaffCategoryActionTypes.CategoryLoadAction), mergeMap((action) => this.driver.get(action.request).pipe(switchMap((resp) => of(new DaffProductGridLoadSuccess(resp.products), new DaffCategoryLoadSuccess(resp))), catchError((error) => of(new DaffCategoryLoadFailure(this.errorMatcher(error))))))));
612
- }
613
- }
614
- /** @nocollapse */ DaffCategoryEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryEffects, deps: [{ token: i1$1.Actions }, { token: DaffCategoryDriver }, { token: DAFF_CATEGORY_ERROR_MATCHER }], target: i0.ɵɵFactoryTarget.Injectable });
615
- /** @nocollapse */ DaffCategoryEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryEffects });
616
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryEffects, decorators: [{
617
- type: Injectable
618
- }], ctorParameters: function () {
619
- return [{ type: i1$1.Actions }, { type: undefined, decorators: [{
620
- type: Inject,
621
- args: [DaffCategoryDriver]
622
- }] }, { type: undefined, decorators: [{
623
- type: Inject,
624
- args: [DAFF_CATEGORY_ERROR_MATCHER]
625
- }] }];
626
- } });
627
-
628
- /**
629
- * An internal token to hold the Daffodil category reducers.
630
- * Includes the extra and standard reducers.
631
- *
632
- * @docs-private
633
- */
634
- const DAFF_CATEGORY_REDUCERS = new InjectionToken('DAFF_CATEGORY_REDUCERS', {
635
- providedIn: 'any',
636
- factory: () => daffComposeReducers([
637
- combineReducers(daffCategoryReducers),
638
- ...inject(DAFF_CATEGORY_EXTRA_REDUCERS),
639
- ]),
640
- });
641
-
642
- /**
643
- * A module that provides default reducers and effects for the category redux state.
644
- */
645
- class DaffCategoryStateModule {
646
- }
647
- /** @nocollapse */ DaffCategoryStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
648
- /** @nocollapse */ DaffCategoryStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateModule, imports: [i1.StoreFeatureModule, i1$1.EffectsFeatureModule, DaffProductStateModule] });
649
- /** @nocollapse */ DaffCategoryStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateModule, imports: [StoreModule.forFeature(DAFF_CATEGORY_STORE_FEATURE_KEY, DAFF_CATEGORY_REDUCERS),
650
- EffectsModule.forFeature([DaffCategoryEffects, DaffCategoryPageEffects, DaffCategoryPageFilterEffects]),
651
- DaffProductStateModule] });
652
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateModule, decorators: [{
653
- type: NgModule,
654
- args: [{
655
- imports: [
656
- StoreModule.forFeature(DAFF_CATEGORY_STORE_FEATURE_KEY, DAFF_CATEGORY_REDUCERS),
657
- EffectsModule.forFeature([DaffCategoryEffects, DaffCategoryPageEffects, DaffCategoryPageFilterEffects]),
658
- DaffProductStateModule,
659
- ],
660
- }]
661
- }] });
662
-
663
- /**
664
- * Modifies product state for category actions.
665
- */
666
- function daffCategoryProductReducer(state = daffProductReducerInitialState, action) {
667
- switch (action.type) {
668
- case DaffCategoryPageActionTypes.CategoryPageLoadAction:
669
- case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:
670
- return daffStartResolution(state);
671
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction:
672
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction:
673
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction:
674
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction:
675
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction:
676
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction:
677
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction:
678
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction:
679
- case DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction:
680
- return daffStartMutation(state);
681
- case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:
682
- case DaffCategoryPageActionTypes.CategoryPageLoadFailureAction:
683
- return daffCompleteOperation(state);
684
- default:
685
- return state;
686
- }
687
- }
688
-
689
- const daffCategoryProductReducers = {
690
- product: daffCategoryProductReducer,
691
- productGrid: daffIdentityReducer,
692
- products: daffIdentityReducer,
693
- bestSellers: daffIdentityReducer,
694
- };
695
-
696
- /**
697
- * A module that provides injectable reducers into product state.
698
- */
699
- class DaffCategoryProductStateModule {
700
- }
701
- /** @nocollapse */ DaffCategoryProductStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryProductStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
702
- /** @nocollapse */ DaffCategoryProductStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryProductStateModule, imports: [DaffProductStateModule] });
703
- /** @nocollapse */ DaffCategoryProductStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryProductStateModule, providers: [
704
- ...daffProductProvideExtraReducers(combineReducers(daffCategoryProductReducers)),
705
- ], imports: [DaffProductStateModule] });
706
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryProductStateModule, decorators: [{
707
- type: NgModule,
708
- args: [{
709
- imports: [
710
- DaffProductStateModule,
711
- ],
712
- providers: [
713
- ...daffProductProvideExtraReducers(combineReducers(daffCategoryProductReducers)),
714
- ],
715
- }]
716
- }] });
717
-
718
- /**
719
- * Generated bundle index. Do not edit.
720
- */
721
-
722
- export { DAFF_CATEGORY_ERROR_MATCHER, DAFF_CATEGORY_EXTRA_REDUCERS, DAFF_CATEGORY_STORE_FEATURE_KEY, DaffCategoryActionTypes, DaffCategoryFacade, DaffCategoryLoad, DaffCategoryLoadFailure, DaffCategoryLoadSuccess, DaffCategoryPageActionTypes, DaffCategoryPageApplyFilters, DaffCategoryPageChangeCurrentPage, DaffCategoryPageChangeFilters, DaffCategoryPageChangePageSize, DaffCategoryPageChangeSortingOption, DaffCategoryPageClearFilters, DaffCategoryPageLoad, DaffCategoryPageLoadByUrl, DaffCategoryPageLoadFailure, DaffCategoryPageLoadSuccess, DaffCategoryPageProductCollectionActionTypes, DaffCategoryPageRemoveFilters, DaffCategoryPageReplaceFilters, DaffCategoryPageToggleFilter, DaffCategoryProductCollectionFacade, DaffCategoryProductStateModule, DaffCategoryStateModule, daffCategoryEntitiesReducer, daffCategoryPageMetadataReducer, daffCategoryProvideExtraReducers, daffCategoryReducer, daffCategoryReducers, getDaffCategorySelectors };
723
- //# sourceMappingURL=daffodil-category-state.mjs.map