@daffodil/category 0.38.9 → 0.39.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (298) hide show
  1. package/bundles/daffodil-category-driver-in-memory.umd.js +86 -167
  2. package/bundles/daffodil-category-driver-in-memory.umd.js.map +1 -1
  3. package/bundles/daffodil-category-driver-in-memory.umd.min.js +1 -1
  4. package/bundles/daffodil-category-driver-in-memory.umd.min.js.map +1 -1
  5. package/bundles/daffodil-category-driver-magento-testing.umd.js +9 -120
  6. package/bundles/daffodil-category-driver-magento-testing.umd.js.map +1 -1
  7. package/bundles/daffodil-category-driver-magento-testing.umd.min.js +1 -1
  8. package/bundles/daffodil-category-driver-magento-testing.umd.min.js.map +1 -1
  9. package/bundles/daffodil-category-driver-magento.umd.js +72 -504
  10. package/bundles/daffodil-category-driver-magento.umd.js.map +1 -1
  11. package/bundles/daffodil-category-driver-magento.umd.min.js +2 -2
  12. package/bundles/daffodil-category-driver-magento.umd.min.js.map +1 -1
  13. package/bundles/daffodil-category-driver-testing.umd.js +5 -68
  14. package/bundles/daffodil-category-driver-testing.umd.js.map +1 -1
  15. package/bundles/daffodil-category-driver-testing.umd.min.js +1 -1
  16. package/bundles/daffodil-category-driver-testing.umd.min.js.map +1 -1
  17. package/bundles/daffodil-category-driver.umd.js +11 -51
  18. package/bundles/daffodil-category-driver.umd.js.map +1 -1
  19. package/bundles/daffodil-category-routing.umd.js +10 -116
  20. package/bundles/daffodil-category-routing.umd.js.map +1 -1
  21. package/bundles/daffodil-category-routing.umd.min.js +1 -1
  22. package/bundles/daffodil-category-routing.umd.min.js.map +1 -1
  23. package/bundles/daffodil-category-state-testing.umd.js +5 -89
  24. package/bundles/daffodil-category-state-testing.umd.js.map +1 -1
  25. package/bundles/daffodil-category-state-testing.umd.min.js +1 -1
  26. package/bundles/daffodil-category-state-testing.umd.min.js.map +1 -1
  27. package/bundles/daffodil-category-state.umd.js +133 -1007
  28. package/bundles/daffodil-category-state.umd.js.map +1 -1
  29. package/bundles/daffodil-category-state.umd.min.js +1 -1
  30. package/bundles/daffodil-category-state.umd.min.js.map +1 -1
  31. package/bundles/daffodil-category-testing.umd.js +35 -316
  32. package/bundles/daffodil-category-testing.umd.js.map +1 -1
  33. package/bundles/daffodil-category-testing.umd.min.js +1 -1
  34. package/bundles/daffodil-category-testing.umd.min.js.map +1 -1
  35. package/bundles/daffodil-category.umd.js +184 -867
  36. package/bundles/daffodil-category.umd.js.map +1 -1
  37. package/bundles/daffodil-category.umd.min.js +15 -1
  38. package/bundles/daffodil-category.umd.min.js.map +1 -1
  39. package/driver/in-memory/backend/category.service.d.ts +16 -7
  40. package/driver/in-memory/daffodil-category-driver-in-memory.metadata.json +1 -1
  41. package/driver/in-memory/package.json +1 -1
  42. package/driver/magento/package.json +1 -1
  43. package/driver/magento/testing/package.json +1 -1
  44. package/driver/package.json +1 -1
  45. package/driver/testing/package.json +1 -1
  46. package/esm2015/daffodil-category.js +2 -7
  47. package/esm2015/driver/daffodil-category-driver.js +2 -7
  48. package/esm2015/driver/in-memory/backend/category.service.js +64 -100
  49. package/esm2015/driver/in-memory/backend/public_api.js +1 -6
  50. package/esm2015/driver/in-memory/daffodil-category-driver-in-memory.js +2 -7
  51. package/esm2015/driver/in-memory/drivers/category-driver.module.js +2 -10
  52. package/esm2015/driver/in-memory/drivers/category.service.js +6 -32
  53. package/esm2015/driver/in-memory/drivers/public_api.js +1 -6
  54. package/esm2015/driver/in-memory/index.js +2 -7
  55. package/esm2015/driver/in-memory/public_api.js +3 -8
  56. package/esm2015/driver/index.js +2 -7
  57. package/esm2015/driver/interfaces/category-service.interface.js +1 -27
  58. package/esm2015/driver/magento/category-driver.module.js +3 -12
  59. package/esm2015/driver/magento/category.service.js +11 -112
  60. package/esm2015/driver/magento/config/default.js +2 -8
  61. package/esm2015/driver/magento/daffodil-category-driver-magento.js +2 -7
  62. package/esm2015/driver/magento/index.js +2 -7
  63. package/esm2015/driver/magento/interfaces/config.interface.js +3 -32
  64. package/esm2015/driver/magento/interfaces/public_api.js +2 -7
  65. package/esm2015/driver/magento/models/aggregation.js +2 -35
  66. package/esm2015/driver/magento/models/category.js +2 -52
  67. package/esm2015/driver/magento/models/complete-category-response.js +2 -24
  68. package/esm2015/driver/magento/models/filter-type-field.interface.js +2 -16
  69. package/esm2015/driver/magento/models/filter-type.enum.js +8 -13
  70. package/esm2015/driver/magento/models/get-category-response.js +2 -14
  71. package/esm2015/driver/magento/models/get-filter-types-response.interface.js +2 -14
  72. package/esm2015/driver/magento/models/get-products-response.js +2 -14
  73. package/esm2015/driver/magento/models/page-info.js +2 -18
  74. package/esm2015/driver/magento/models/public_api.js +1 -6
  75. package/esm2015/driver/magento/models/requests/custom-metadata-attribute.js +2 -16
  76. package/esm2015/driver/magento/models/requests/filters.js +9 -19
  77. package/esm2015/driver/magento/models/requests/get-products-by-categories-request.js +2 -22
  78. package/esm2015/driver/magento/models/requests/sort.js +6 -16
  79. package/esm2015/driver/magento/models/sort-fields.js +2 -26
  80. package/esm2015/driver/magento/public_api.js +5 -10
  81. package/esm2015/driver/magento/queries/get-category.js +1 -8
  82. package/esm2015/driver/magento/queries/get-filter-types.js +1 -8
  83. package/esm2015/driver/magento/queries/get-products.js +3 -14
  84. package/esm2015/driver/magento/queries/public_api.js +4 -9
  85. package/esm2015/driver/magento/testing/daffodil-category-driver-magento-testing.js +2 -7
  86. package/esm2015/driver/magento/testing/factories/aggregation/aggregation.factory.js +2 -23
  87. package/esm2015/driver/magento/testing/factories/aggregation/public_api.js +1 -6
  88. package/esm2015/driver/magento/testing/factories/aggregation/type/price.factory.js +2 -19
  89. package/esm2015/driver/magento/testing/factories/aggregation/type/select.factory.js +2 -19
  90. package/esm2015/driver/magento/testing/factories/category.factory.js +2 -31
  91. package/esm2015/driver/magento/testing/factories/filter-type-field.factory.js +2 -14
  92. package/esm2015/driver/magento/testing/factories/page-info.factory.js +2 -15
  93. package/esm2015/driver/magento/testing/factories/public_api.js +2 -7
  94. package/esm2015/driver/magento/testing/factories/sort-fields.factory.js +2 -13
  95. package/esm2015/driver/magento/testing/index.js +2 -7
  96. package/esm2015/driver/magento/testing/public_api.js +2 -7
  97. package/esm2015/driver/magento/transformers/applied-filter-transformer.service.js +4 -36
  98. package/esm2015/driver/magento/transformers/applied-sort-option-transformer.service.js +2 -17
  99. package/esm2015/driver/magento/transformers/category-page-config-transformer.service.js +4 -22
  100. package/esm2015/driver/magento/transformers/category-response-transform.service.js +2 -34
  101. package/esm2015/driver/magento/transformers/category-transformer.service.js +4 -32
  102. package/esm2015/driver/magento/transformers/public_api.js +1 -6
  103. package/esm2015/driver/magento/transformers/pure/aggregate/add-metadata-types-to-aggregates.js +2 -16
  104. package/esm2015/driver/magento/transformers/pure/aggregate/get-matched-attribute-type.js +2 -17
  105. package/esm2015/driver/magento/transformers/pure/aggregate/transform.js +3 -13
  106. package/esm2015/driver/magento/transformers/pure/aggregate/type/equal.js +5 -20
  107. package/esm2015/driver/magento/transformers/pure/aggregate/type/range.js +3 -14
  108. package/esm2015/driver/magento/transformers/pure/sort-default-option-first.js +2 -16
  109. package/esm2015/driver/magento/transformers/truncate-url.js +2 -12
  110. package/esm2015/driver/public_api.js +1 -6
  111. package/esm2015/driver/testing/daffodil-category-driver-testing.js +2 -7
  112. package/esm2015/driver/testing/drivers/category-driver.module.js +2 -10
  113. package/esm2015/driver/testing/drivers/category.service.js +4 -39
  114. package/esm2015/driver/testing/drivers/public_api.js +1 -6
  115. package/esm2015/driver/testing/index.js +2 -7
  116. package/esm2015/driver/testing/public_api.js +2 -7
  117. package/esm2015/errors/codes.enum.js +4 -10
  118. package/esm2015/errors/map.js +1 -7
  119. package/esm2015/errors/public_api.js +1 -6
  120. package/esm2015/filters/array-to-dict/array-to-dict.js +3 -17
  121. package/esm2015/filters/behaviors/apply/apply-filter.js +7 -18
  122. package/esm2015/filters/behaviors/apply/apply-request-to-filters.js +5 -16
  123. package/esm2015/filters/behaviors/apply/apply-requests-to-filters.js +6 -22
  124. package/esm2015/filters/behaviors/apply/public_api.js +1 -6
  125. package/esm2015/filters/behaviors/clear/clear-filter.js +5 -15
  126. package/esm2015/filters/behaviors/clear/clear-filters.js +6 -25
  127. package/esm2015/filters/behaviors/clear/public_api.js +1 -6
  128. package/esm2015/filters/behaviors/remove/public_api.js +1 -6
  129. package/esm2015/filters/behaviors/remove/remove-filter.js +9 -20
  130. package/esm2015/filters/behaviors/remove/remove-request-from-filters.js +5 -16
  131. package/esm2015/filters/behaviors/remove/remove-requests-from-filters.js +7 -23
  132. package/esm2015/filters/behaviors/toggle/public_api.js +1 -6
  133. package/esm2015/filters/behaviors/toggle/toggle-request-on-filters.js +4 -15
  134. package/esm2015/filters/behaviors/toggle/toggle.js +5 -13
  135. package/esm2015/filters/compute-applied-filters/compute-applied-filters.js +7 -27
  136. package/esm2015/filters/errors/codes.enum.js +11 -12
  137. package/esm2015/filters/errors/filter-not-found.error.js +1 -13
  138. package/esm2015/filters/errors/map.js +1 -7
  139. package/esm2015/filters/errors/public_api.js +1 -6
  140. package/esm2015/filters/errors/request-name-mismatch.error.js +1 -13
  141. package/esm2015/filters/errors/request-type-mismatch.error.js +1 -13
  142. package/esm2015/filters/errors/unknown-filter-type.error.js +1 -13
  143. package/esm2015/filters/find-applied/find-applied-options.js +2 -21
  144. package/esm2015/filters/find-applied/public_api.js +1 -6
  145. package/esm2015/filters/is-applied/is-filter-applied.js +3 -13
  146. package/esm2015/filters/is-applied/is-toggle-request-applied-to-filter.js +6 -17
  147. package/esm2015/filters/is-applied/public_api.js +1 -6
  148. package/esm2015/filters/public_api.js +12 -17
  149. package/esm2015/filters/to-request/filter-to-request.js +1 -8
  150. package/esm2015/filters/to-request/filters-to-requests.js +3 -20
  151. package/esm2015/filters/to-request/public_api.js +1 -6
  152. package/esm2015/filters/type/equal/array-to-dict/option.js +2 -16
  153. package/esm2015/filters/type/equal/behaviors/apply/apply.js +6 -23
  154. package/esm2015/filters/type/equal/behaviors/clear/clear.js +6 -25
  155. package/esm2015/filters/type/equal/behaviors/remove/remove.js +8 -25
  156. package/esm2015/filters/type/equal/behaviors/toggle/toggle.js +7 -19
  157. package/esm2015/filters/type/equal/is-applied/is-applied.js +3 -21
  158. package/esm2015/filters/type/equal/is-applied/is-toggle-request-applied-to-filter.js +3 -14
  159. package/esm2015/filters/type/equal/public_api.js +1 -6
  160. package/esm2015/filters/type/equal/to-request/filter-to-request.js +5 -20
  161. package/esm2015/filters/type/range/array-to-dict/pair.js +3 -18
  162. package/esm2015/filters/type/range/behaviors/apply/apply.js +6 -18
  163. package/esm2015/filters/type/range/behaviors/clear/clear.js +5 -16
  164. package/esm2015/filters/type/range/behaviors/remove/remove.js +8 -20
  165. package/esm2015/filters/type/range/behaviors/toggle/toggle.js +7 -19
  166. package/esm2015/filters/type/range/compute-pair-label.js +2 -13
  167. package/esm2015/filters/type/range/is-applied/is-applied.js +3 -14
  168. package/esm2015/filters/type/range/is-applied/is-toggle-request-applied-to-filter.js +3 -15
  169. package/esm2015/filters/type/range/public_api.js +1 -6
  170. package/esm2015/filters/type/range/to-request/filter-to-request.js +4 -16
  171. package/esm2015/filters/type/range-numeric/to-request/filter-to-request.js +3 -13
  172. package/esm2015/filters/validators/public_api.js +1 -6
  173. package/esm2015/filters/validators/request-name-match.js +4 -15
  174. package/esm2015/filters/validators/request-type-match.js +4 -15
  175. package/esm2015/index.js +2 -7
  176. package/esm2015/injection-tokens/error-matcher.token.js +2 -11
  177. package/esm2015/injection-tokens/public_api.js +1 -6
  178. package/esm2015/models/category-breadcrumb.js +2 -30
  179. package/esm2015/models/category-page-metadata.js +2 -23
  180. package/esm2015/models/category-request.js +7 -65
  181. package/esm2015/models/category.js +2 -6
  182. package/esm2015/models/filters/category-filter-base.js +2 -34
  183. package/esm2015/models/filters/category-filter-option-base.js +2 -18
  184. package/esm2015/models/filters/category-filter-option.js +2 -6
  185. package/esm2015/models/filters/category-filter.js +2 -6
  186. package/esm2015/models/filters/category-filterable.js +2 -18
  187. package/esm2015/models/filters/filter-request.js +2 -6
  188. package/esm2015/models/filters/filter-toggle-request.js +2 -6
  189. package/esm2015/models/filters/public_api.js +4 -9
  190. package/esm2015/models/filters/type/category-filter-type.js +7 -10
  191. package/esm2015/models/filters/type/equal/filter.js +2 -31
  192. package/esm2015/models/filters/type/equal/option.js +2 -26
  193. package/esm2015/models/filters/type/equal/public_api.js +2 -6
  194. package/esm2015/models/filters/type/equal/request.js +2 -28
  195. package/esm2015/models/filters/type/equal/toggle-request.js +2 -28
  196. package/esm2015/models/filters/type/range/filter-base.js +2 -33
  197. package/esm2015/models/filters/type/range/option.js +2 -25
  198. package/esm2015/models/filters/type/range/pair.js +2 -30
  199. package/esm2015/models/filters/type/range/public_api.js +1 -6
  200. package/esm2015/models/filters/type/range/request-base.js +2 -30
  201. package/esm2015/models/filters/type/range/request-option.js +2 -25
  202. package/esm2015/models/filters/type/range/separator.js +1 -7
  203. package/esm2015/models/filters/type/range-numeric/filter.js +2 -18
  204. package/esm2015/models/filters/type/range-numeric/public_api.js +2 -6
  205. package/esm2015/models/filters/type/range-numeric/request.js +2 -18
  206. package/esm2015/models/filters/type/range-numeric/toggle-request.js +2 -19
  207. package/esm2015/models/generic-category.js +2 -61
  208. package/esm2015/models/get-category-response.js +2 -29
  209. package/esm2015/models/public_api.js +2 -7
  210. package/esm2015/public_api.js +5 -10
  211. package/esm2015/routing/daffodil-category-routing.js +2 -7
  212. package/esm2015/routing/index.js +2 -7
  213. package/esm2015/routing/public_api.js +2 -7
  214. package/esm2015/routing/resolvers/category-page/category-page.resolver.js +2 -21
  215. package/esm2015/routing/resolvers/category-page-id/category-page-id.resolver.js +2 -33
  216. package/esm2015/routing/resolvers/category-page-url/category-page-url.resolver.js +9 -44
  217. package/esm2015/routing/resolvers/public_api.js +1 -6
  218. package/esm2015/state/actions/category-page-filter.actions.js +12 -64
  219. package/esm2015/state/actions/category-page.actions.js +12 -79
  220. package/esm2015/state/actions/category.actions.js +8 -39
  221. package/esm2015/state/category-state.module.js +1 -6
  222. package/esm2015/state/daffodil-category-state.js +2 -7
  223. package/esm2015/state/effects/category-page-filter.effects.js +4 -71
  224. package/esm2015/state/effects/category-page.effects.js +9 -101
  225. package/esm2015/state/effects/category.effects.js +2 -46
  226. package/esm2015/state/facades/category-facade.interface.js +2 -135
  227. package/esm2015/state/facades/category.facade.js +4 -76
  228. package/esm2015/state/index.js +2 -7
  229. package/esm2015/state/public_api.js +6 -11
  230. package/esm2015/state/reducers/category/category-reducer-state.interface.js +2 -32
  231. package/esm2015/state/reducers/category/category.reducer.js +1 -11
  232. package/esm2015/state/reducers/category/pure/build-metadata-from-request.js +3 -20
  233. package/esm2015/state/reducers/category-entities/category-entities-adapter.js +1 -10
  234. package/esm2015/state/reducers/category-entities/category-entities.reducer.js +1 -10
  235. package/esm2015/state/reducers/category-reducers.interface.js +1 -33
  236. package/esm2015/state/reducers/category-reducers.js +1 -7
  237. package/esm2015/state/reducers/category-store-feature-key.js +1 -7
  238. package/esm2015/state/reducers/public_api.js +1 -6
  239. package/esm2015/state/selectors/category-entities/category-entities.selector.js +8 -71
  240. package/esm2015/state/selectors/category-feature.selector.js +5 -29
  241. package/esm2015/state/selectors/category-page/category-page.selector.js +28 -257
  242. package/esm2015/state/selectors/category.selector.js +13 -123
  243. package/esm2015/state/testing/category-testing.module.js +2 -7
  244. package/esm2015/state/testing/daffodil-category-state-testing.js +2 -7
  245. package/esm2015/state/testing/index.js +2 -7
  246. package/esm2015/state/testing/mock-category-facade.js +4 -69
  247. package/esm2015/state/testing/public_api.js +1 -6
  248. package/esm2015/testing/daffodil-category-testing.js +2 -7
  249. package/esm2015/testing/factories/category-page-metadata.factory.js +3 -30
  250. package/esm2015/testing/factories/category.factory.js +3 -32
  251. package/esm2015/testing/factories/filters/filter.factory.js +4 -30
  252. package/esm2015/testing/factories/filters/public_api.js +2 -7
  253. package/esm2015/testing/factories/filters/request.factory.js +3 -24
  254. package/esm2015/testing/factories/filters/toggle-request.js +4 -29
  255. package/esm2015/testing/factories/filters/type/equal/option.js +3 -18
  256. package/esm2015/testing/factories/filters/type/equal/public_api.js +1 -6
  257. package/esm2015/testing/factories/filters/type/equal/request.js +3 -16
  258. package/esm2015/testing/factories/filters/type/equal/toggle-request.js +3 -16
  259. package/esm2015/testing/factories/filters/type/equal.js +3 -18
  260. package/esm2015/testing/factories/filters/type/public_api.js +3 -8
  261. package/esm2015/testing/factories/filters/type/range-numeric/option.js +3 -14
  262. package/esm2015/testing/factories/filters/type/range-numeric/pair.js +3 -30
  263. package/esm2015/testing/factories/filters/type/range-numeric/public_api.js +1 -6
  264. package/esm2015/testing/factories/filters/type/range-numeric/request-option.js +3 -14
  265. package/esm2015/testing/factories/filters/type/range-numeric/request.js +3 -30
  266. package/esm2015/testing/factories/filters/type/range-numeric/toggle-request.js +3 -30
  267. package/esm2015/testing/factories/filters/type/range-numeric.js +3 -22
  268. package/esm2015/testing/factories/public_api.js +2 -7
  269. package/esm2015/testing/helpers/category-helper.js +2 -8
  270. package/esm2015/testing/index.js +2 -7
  271. package/esm2015/testing/public_api.js +2 -7
  272. package/fesm2015/daffodil-category-driver-in-memory.js +71 -167
  273. package/fesm2015/daffodil-category-driver-in-memory.js.map +1 -1
  274. package/fesm2015/daffodil-category-driver-magento-testing.js +9 -155
  275. package/fesm2015/daffodil-category-driver-magento-testing.js.map +1 -1
  276. package/fesm2015/daffodil-category-driver-magento.js +62 -506
  277. package/fesm2015/daffodil-category-driver-magento.js.map +1 -1
  278. package/fesm2015/daffodil-category-driver-testing.js +7 -70
  279. package/fesm2015/daffodil-category-driver-testing.js.map +1 -1
  280. package/fesm2015/daffodil-category-driver.js +1 -41
  281. package/fesm2015/daffodil-category-driver.js.map +1 -1
  282. package/fesm2015/daffodil-category-routing.js +11 -117
  283. package/fesm2015/daffodil-category-routing.js.map +1 -1
  284. package/fesm2015/daffodil-category-state-testing.js +6 -90
  285. package/fesm2015/daffodil-category-state-testing.js.map +1 -1
  286. package/fesm2015/daffodil-category-state.js +99 -1029
  287. package/fesm2015/daffodil-category-state.js.map +1 -1
  288. package/fesm2015/daffodil-category-testing.js +35 -391
  289. package/fesm2015/daffodil-category-testing.js.map +1 -1
  290. package/fesm2015/daffodil-category.js +166 -919
  291. package/fesm2015/daffodil-category.js.map +1 -1
  292. package/package.json +4 -4
  293. package/routing/daffodil-category-routing.metadata.json +1 -1
  294. package/routing/package.json +1 -1
  295. package/routing/resolvers/category-page-url/category-page-url.resolver.d.ts +2 -0
  296. package/state/package.json +1 -1
  297. package/state/testing/package.json +1 -1
  298. package/testing/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-category-state.js","sources":["../../../libs/category/state/src/reducers/category-entities/category-entities-adapter.ts","../../../libs/category/state/src/actions/category-page.actions.ts","../../../libs/category/state/src/actions/category.actions.ts","../../../libs/category/state/src/reducers/category-entities/category-entities.reducer.ts","../../../libs/category/state/src/actions/category-page-filter.actions.ts","../../../libs/category/state/src/reducers/category/pure/build-metadata-from-request.ts","../../../libs/category/state/src/reducers/category/category.reducer.ts","../../../libs/category/state/src/reducers/category-reducers.ts","../../../libs/category/state/src/reducers/category-store-feature-key.ts","../../../libs/category/state/src/selectors/category-feature.selector.ts","../../../libs/category/state/src/selectors/category-entities/category-entities.selector.ts","../../../libs/category/state/src/selectors/category-page/category-page.selector.ts","../../../libs/category/state/src/selectors/category.selector.ts","../../../libs/category/state/src/facades/category.facade.ts","../../../libs/category/state/src/effects/category-page-filter.effects.ts","../../../libs/category/state/src/effects/category-page.effects.ts","../../../libs/category/state/src/effects/category.effects.ts","../../../libs/category/state/src/category-state.module.ts"],"sourcesContent":["import {\n EntityAdapter,\n createEntityAdapter,\n} from '@ngrx/entity';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\n\nexport function daffCategoryEntitiesAdapter<T extends DaffGenericCategory<T> = DaffCategory>(): EntityAdapter<T> {\n return createEntityAdapter<T>();\n}\n","import { Action } from '@ngrx/store';\n\nimport {\n DaffCategoryRequest,\n DaffGenericCategory,\n DaffCategory,\n DaffGetCategoryResponse,\n DaffCategoryIdRequest,\n DaffCategoryUrlRequest,\n} from '@daffodil/category';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\n/**\n * The possible types of category page actions.\n */\nexport enum DaffCategoryPageActionTypes {\n CategoryPageLoadAction = '[@daffodil/category] Category Page Load Action',\n CategoryPageLoadByUrlAction = '[@daffodil/category] Category Page Load By URL Action',\n CategoryPageLoadSuccessAction = '[@daffodil/category] Category Page Load Success Action',\n CategoryPageLoadFailureAction = '[@daffodil/category] Category Page Load Failure Action',\n CategoryPageChangeSizeAction = '[@daffodil/category] Category Page Change Size Action',\n CategoryPageChangeCurrentPageAction = '[@daffodil/category] Category Page Change Current Page Action',\n CategoryPageChangeSortingOptionAction = '[@daffodil/category] Category Page Change Sorting Option Action',\n}\n\n/**\n * An action triggered to initialize a category page load request.\n * This is intended to be used for loading full category pages.\n * Queries the category by ID.\n *\n * @param request - DaffCategoryRequest object\n */\nexport class DaffCategoryPageLoad implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageLoadAction;\n\n constructor(public request: DaffCategoryIdRequest) { }\n}\n\n/**\n * An action triggered to initialize a category page load request.\n * This is intended to be used for loading full category pages.\n * Queries the category by URL.\n *\n * @param request - DaffCategoryRequest object\n */\nexport class DaffCategoryPageLoadByUrl implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction;\n\n constructor(public request: DaffCategoryUrlRequest) { }\n}\n\n/**\n * An action triggered upon a successful category page request.\n *\n * @param response - DaffGetCategoryResponse object\n */\nexport class DaffCategoryPageLoadSuccess<\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n > implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction;\n\n constructor(public response: DaffGetCategoryResponse<V, W>) { }\n}\n\n/**\n * An action triggered upon a failed category page request.\n *\n * @param errorMessage - an error message\n */\nexport class DaffCategoryPageLoadFailure implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageLoadFailureAction;\n\n constructor(public errorMessage: DaffStateError) { }\n}\n\n/**\n * An action for changing the number of products shown on each page for the selected category.\n *\n * @param pageSize - The number of products per page.\n */\nexport class DaffCategoryPageChangePageSize implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageChangeSizeAction;\n\n constructor(public pageSize: number) { }\n}\n\n/**\n * An action for changing the current page of products for the selected category.\n *\n * @param currentPage - The current page of products for the selected category.\n */\nexport class DaffCategoryPageChangeCurrentPage implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageChangeCurrentPageAction;\n\n constructor(public currentPage: number) { }\n}\n\n/**\n * An action for changing the sorting option for the selected category.\n *\n * @param sort - The sort option to be applied.\n */\nexport class DaffCategoryPageChangeSortingOption implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageChangeSortingOptionAction;\n\n constructor(\n public sort: {\n option: DaffCategoryRequest['applied_sort_option'];\n direction: DaffCategoryRequest['applied_sort_direction'];\n },\n ) { }\n}\n\nexport type DaffCategoryPageActions<\n U extends DaffGenericCategory<U> = DaffCategory,\n W extends DaffProduct = DaffProduct\n > =\n | DaffCategoryPageLoad\n | DaffCategoryPageLoadByUrl\n | DaffCategoryPageLoadSuccess<U, W>\n | DaffCategoryPageLoadFailure\n | DaffCategoryPageChangePageSize\n | DaffCategoryPageChangeCurrentPage\n | DaffCategoryPageChangeSortingOption;\n","import { Action } from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n DaffGetCategoryResponse,\n DaffCategoryIdRequest,\n} from '@daffodil/category';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\n/**\n * The possible types of category actions.\n */\nexport enum DaffCategoryActionTypes {\n CategoryLoadAction = '[Daff-Category] Category Load Action',\n CategoryLoadSuccessAction = '[Daff-Category] Category Load Success Action',\n CategoryLoadFailureAction = '[Daff-Category] Category Load Failure Action'\n}\n\n/**\n * An action triggered to initialize a category load request.\n *\n * @param request - DaffCategoryRequest object\n */\nexport class DaffCategoryLoad implements Action {\n readonly type = DaffCategoryActionTypes.CategoryLoadAction;\n\n constructor(public request: DaffCategoryIdRequest) { }\n}\n\n/**\n * An action triggered upon a successful category request.\n *\n * @param response - DaffGetCategoryResponse object\n */\nexport class DaffCategoryLoadSuccess<\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n > implements Action {\n readonly type = DaffCategoryActionTypes.CategoryLoadSuccessAction;\n\n constructor(public response: DaffGetCategoryResponse<V, W>) { }\n}\n\n/**\n * An action triggered upon a failed category request.\n *\n * @param errorMessage - an error message\n */\nexport class DaffCategoryLoadFailure implements Action {\n readonly type = DaffCategoryActionTypes.CategoryLoadFailureAction;\n\n constructor(public errorMessage: DaffStateError) { }\n}\n\nexport type DaffCategoryActions<\n U extends DaffGenericCategory<U> = DaffCategory,\n W extends DaffProduct = DaffProduct\n > =\n | DaffCategoryLoad\n | DaffCategoryLoadSuccess<U, W>\n | DaffCategoryLoadFailure;\n","import { EntityState } from '@ngrx/entity';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\nimport { DaffProduct } from '@daffodil/product';\n\nimport {\n DaffCategoryPageActionTypes,\n DaffCategoryPageActions,\n} from '../../actions/category-page.actions';\nimport {\n DaffCategoryActionTypes,\n DaffCategoryActions,\n} from '../../actions/category.actions';\nimport { daffCategoryEntitiesAdapter } from './category-entities-adapter';\n\n/**\n * A reducer function to store category entities from DaffCategoryLoadSuccess and DaffCategoryPageLoadSuccess actions.\n */\nexport function daffCategoryEntitiesReducer<\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n>(\n state = daffCategoryEntitiesAdapter<V>().getInitialState(),\n action: DaffCategoryActions<V,W> | DaffCategoryPageActions<V,W>,\n): EntityState<V> {\n switch (action.type) {\n case DaffCategoryActionTypes.CategoryLoadSuccessAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n return daffCategoryEntitiesAdapter<V>().upsertOne(\n {\n id: action.response.category.id,\n ...action.response.category,\n },\n state,\n );\n default:\n return state;\n }\n}\n","import { Action } from '@ngrx/store';\n\nimport {\n DaffCategoryFilterRequest,\n DaffCategoryFilterToggleRequest,\n} from '@daffodil/category';\n\n/**\n * The possible types of category page filter actions.\n */\nexport enum DaffCategoryPageFilterActionTypes {\n CategoryPageChangeFiltersAction = '[@daffodil/category] Category Page Change Filters Action',\n CategoryPageReplaceFiltersAction = '[@daffodil/category] Category Page Replace Filters Action',\n CategoryPageApplyFiltersAction = '[@daffodil/category] Category Page Apply Filters Action',\n CategoryPageRemoveFiltersAction = '[@daffodil/category] Category Page Remove Filters Action',\n CategoryPageClearFiltersAction = '[@daffodil/category] Category Page Clear Filters Action',\n CategoryPageToggleFilterAction = '[@daffodil/category] Category Page Toggle Filter Action'\n}\n\n/**\n * An action for changing the filters for the current category.\n *\n * @param filters - Filters to be changed on the current category.\n * @deprecated use {@link DaffCategoryPageReplaceFilters} or {@link DaffCategoryPageApplyFilters}\n */\nexport class DaffCategoryPageChangeFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageChangeFiltersAction;\n\n constructor(public filters: DaffCategoryFilterRequest[]) { }\n}\n\n/**\n * An action for replacing the filters for the current category.\n * All existing filters will be removed and the specified filters will be applied.\n *\n * @param filters - Filters to be set on the current category.\n */\nexport class DaffCategoryPageReplaceFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageReplaceFiltersAction;\n\n constructor(public filters: DaffCategoryFilterRequest[]) { }\n}\n\n/**\n * An action for applying the specified filters for the current category.\n *\n * @param filters - Filters to be applied to the current category.\n */\nexport class DaffCategoryPageApplyFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageApplyFiltersAction;\n\n constructor(public filters: DaffCategoryFilterRequest[]) { }\n}\n\n/**\n * An action for removing the specified filters for the current category.\n *\n * @param filters - Filters to be removed from the current category.\n */\nexport class DaffCategoryPageRemoveFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageRemoveFiltersAction;\n\n constructor(public filters: DaffCategoryFilterRequest[]) { }\n}\n\n/**\n * An action for removing all the filters for the current category.\n */\nexport class DaffCategoryPageClearFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageClearFiltersAction;\n}\n\n/**\n * An action for toggling a filters for the current category.\n *\n * @param filter - Filter to be toggled on the current category.\n */\nexport class DaffCategoryPageToggleFilter implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageToggleFilterAction;\n\n constructor(public filter: DaffCategoryFilterToggleRequest) { }\n}\n\nexport type DaffCategoryPageFilterActions =\n | DaffCategoryPageChangeFilters\n | DaffCategoryPageReplaceFilters\n | DaffCategoryPageApplyFilters\n | DaffCategoryPageRemoveFilters\n | DaffCategoryPageClearFilters\n | DaffCategoryPageToggleFilter;\n","import {\n DaffCategoryPageMetadata,\n DaffCategoryIdRequest,\n DaffCategoryRequest,\n} from '@daffodil/category';\n\ntype MetadataRequestIntersection = keyof DaffCategoryPageMetadata & keyof DaffCategoryRequest;\n\nconst allowedMetadataKeys: MetadataRequestIntersection[] = [\n 'applied_sort_option',\n 'applied_sort_direction',\n 'current_page',\n 'page_size',\n];\n\nexport const buildMetadataFromRequest = (request: DaffCategoryRequest): Partial<DaffCategoryPageMetadata> =>\n allowedMetadataKeys.reduce(<K extends MetadataRequestIntersection>(acc: Partial<DaffCategoryPageMetadata>, key: K) => {\n if (request[key]) {\n acc[key] = request[key];\n }\n return acc;\n }, <Partial<DaffCategoryPageMetadata>>{});\n","import {\n DaffGenericCategory,\n daffApplyRequestsToFilters,\n daffRemoveRequestsFromFilters,\n daffClearFilters,\n daffToggleRequestOnFilters,\n} from '@daffodil/category';\nimport { DaffState } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport {\n DaffCategoryPageFilterActionTypes,\n DaffCategoryPageFilterActions,\n} from '../../actions/category-page-filter.actions';\nimport { DaffCategoryPageActions } from '../../actions/category-page.actions';\nimport { DaffCategoryPageActionTypes } from '../../actions/category-page.actions';\nimport { DaffCategoryActions } from '../../actions/category.actions';\nimport { DaffCategoryReducerState } from './category-reducer-state.interface';\nimport { buildMetadataFromRequest } from './pure/build-metadata-from-request';\n\nexport const initialState: DaffCategoryReducerState = {\n categoryPageMetadata: {\n id: null,\n applied_sort_option: null,\n applied_sort_direction: null,\n current_page: null,\n page_size: null,\n total_pages: null,\n filters: {},\n sort_options: {\n default: null,\n options: [],\n },\n total_products: null,\n product_ids: [],\n },\n daffState: DaffState.Stable,\n categoryLoading: false,\n productsLoading: false,\n errors: [],\n};\n\n/**\n * Returns the state for category data except for category entities.\n */\nexport function daffCategoryReducer<U extends DaffGenericCategory<U>, W extends DaffProduct>(\n state = initialState,\n action: DaffCategoryActions<U, W> | DaffCategoryPageActions<U, W> | DaffCategoryPageFilterActions,\n): DaffCategoryReducerState {\n switch (action.type) {\n case DaffCategoryPageActionTypes.CategoryPageLoadAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:\n return {\n ...state,\n categoryLoading: true,\n productsLoading: true,\n daffState: DaffState.Resolving,\n categoryPageMetadata: {\n ...initialState.categoryPageMetadata,\n ...buildMetadataFromRequest(action.request),\n id: null,\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageChangeSizeAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n page_size: action.pageSize,\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageChangeCurrentPageAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n current_page: action.currentPage,\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageChangeSortingOptionAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n applied_sort_option: action.sort.option,\n applied_sort_direction: action.sort.direction,\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageChangeFiltersAction:\n case DaffCategoryPageFilterActionTypes.CategoryPageReplaceFiltersAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffApplyRequestsToFilters(action.filters, daffClearFilters(state.categoryPageMetadata.filters)),\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageApplyFiltersAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffApplyRequestsToFilters(action.filters, state.categoryPageMetadata.filters),\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageClearFiltersAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffClearFilters(state.categoryPageMetadata.filters),\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageRemoveFiltersAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffRemoveRequestsFromFilters(action.filters, state.categoryPageMetadata.filters),\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageToggleFilterAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffToggleRequestOnFilters(action.filter, state.categoryPageMetadata.filters),\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n return {\n ...state,\n categoryLoading: false,\n productsLoading: false,\n daffState: DaffState.Stable,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n id: action.response.categoryPageMetadata.id,\n current_page: action.response.categoryPageMetadata.current_page,\n page_size: action.response.categoryPageMetadata.page_size,\n filters: action.response.categoryPageMetadata.filters,\n sort_options: action.response.categoryPageMetadata.sort_options,\n total_pages: action.response.categoryPageMetadata.total_pages,\n total_products: action.response.categoryPageMetadata.total_products,\n product_ids: action.response.categoryPageMetadata.product_ids,\n applied_sort_option: state.categoryPageMetadata.applied_sort_option || action.response.categoryPageMetadata.sort_options.default,\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageLoadFailureAction:\n return {\n ...state,\n categoryLoading: false,\n productsLoading: false,\n errors: [action.errorMessage],\n daffState: DaffState.Stable,\n };\n default:\n return state;\n }\n}\n","import { ActionReducerMap } from '@ngrx/store';\n\nimport { daffCategoryEntitiesReducer } from './category-entities/category-entities.reducer';\nimport { DaffCategoryReducersState } from './category-reducers.interface';\nimport { daffCategoryReducer } from './category/category.reducer';\n\n/**\n * All daffodil defined category reducers.\n */\nexport const daffCategoryReducers: ActionReducerMap<DaffCategoryReducersState> = {\n category: daffCategoryReducer,\n categoryEntities: daffCategoryEntitiesReducer,\n};\n","/**\n * The key for the slice of category related redux state in the global redux state object.\n */\nexport const DAFF_CATEGORY_STORE_FEATURE_KEY = 'daffCategory';\n","import {\n createFeatureSelector,\n MemoizedSelector,\n} from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\n\nimport {\n DaffCategoryReducersState,\n DAFF_CATEGORY_STORE_FEATURE_KEY,\n DaffCategoryStateRootSlice,\n} from '../reducers/public_api';\n\n/**\n * An interface for the entire category feature state.\n */\nexport interface DaffCategoryFeatureMemoizedSelectors<\n\tV extends DaffGenericCategory<V> = DaffCategory,\n> {\n\tselectCategoryFeatureState: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryReducersState<V>>;\n}\n\n/**\n * A function that returns a selector for the entire category feature state.\n */\nexport const getDaffCategoryFeatureSelector = (() => {\n let cache;\n return <V extends DaffGenericCategory<V>>(): DaffCategoryFeatureMemoizedSelectors<V> => cache = cache\n ? cache\n : { selectCategoryFeatureState: createFeatureSelector<DaffCategoryStateRootSlice<V>,DaffCategoryReducersState<V>>(DAFF_CATEGORY_STORE_FEATURE_KEY) };\n})();\n","import {\n Dictionary,\n EntityState,\n} from '@ngrx/entity';\nimport {\n createSelector,\n MemoizedSelector,\n} from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\n\nimport { daffCategoryEntitiesAdapter } from '../../reducers/category-entities/category-entities-adapter';\nimport { DaffCategoryReducersState } from '../../reducers/category-reducers.interface';\nimport { DaffCategoryStateRootSlice } from '../../reducers/public_api';\nimport { getDaffCategoryFeatureSelector } from '../category-feature.selector';\n\n/**\n * An interface to describe all selectors related to category ngrx entities state.\n */\nexport interface DaffCategoryEntitiesMemoizedSelectors<V extends DaffGenericCategory<V> = DaffCategory> {\n\t/**\n\t * Selects ngrx category entities state.\n\t */\n\tselectCategoryEntitiesState: MemoizedSelector<DaffCategoryStateRootSlice<V>, EntityState<V>>;\n\t/**\n\t * Selects the ids of all categories in state.\n\t */\n\tselectCategoryIds: MemoizedSelector<DaffCategoryStateRootSlice<V>, string[] | number[]>;\n\t/**\n\t * Selects all categories in state as a dictionary.\n\t */\n\tselectCategoryEntities: MemoizedSelector<DaffCategoryStateRootSlice<V>, Dictionary<V>>;\n\t/**\n\t * Selects all categories in state as an array.\n\t */\n\tselectAllCategories: MemoizedSelector<DaffCategoryStateRootSlice<V>, V[]>;\n\t/**\n\t * Selects the total number of categories in state.\n\t */\n\tselectCategoryTotal: MemoizedSelector<DaffCategoryStateRootSlice<V>, number>;\n}\n\nconst createCategoryFeatureSelectors = <V extends DaffGenericCategory<V>>(): DaffCategoryEntitiesMemoizedSelectors<V> => {\n\n const entitiesSelectors = daffCategoryEntitiesAdapter<V>().getSelectors();\n const categoryFeatureState = getDaffCategoryFeatureSelector<V>().selectCategoryFeatureState;\n\n const selectCategoryEntitiesState = createSelector(\n categoryFeatureState,\n (state: DaffCategoryReducersState<V>) => state.categoryEntities,\n );\n\n const selectCategoryIds = createSelector(\n selectCategoryEntitiesState,\n entitiesSelectors.selectIds,\n );\n\n const selectCategoryEntities = createSelector(\n selectCategoryEntitiesState,\n entitiesSelectors.selectEntities,\n );\n\n const selectAllCategories = createSelector(\n selectCategoryEntitiesState,\n entitiesSelectors.selectAll,\n );\n\n const selectCategoryTotal = createSelector(\n selectCategoryEntitiesState,\n entitiesSelectors.selectTotal,\n );\n\n return {\n selectCategoryEntitiesState,\n selectCategoryIds,\n selectCategoryEntities,\n selectAllCategories,\n selectCategoryTotal,\n };\n};\n\n/**\n * A function that returns all selectors related to category entities.\n */\nexport const getDaffCategoryEntitiesSelectors = (() => {\n let cache;\n return <V extends DaffGenericCategory<V>>(): DaffCategoryEntitiesMemoizedSelectors<V> => cache = cache\n ? cache\n : createCategoryFeatureSelectors<V>();\n})();\n","import {\n createSelector,\n MemoizedSelector,\n} from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n DaffCategoryFilter,\n DaffCategoryPageMetadata,\n daffCategoryComputeAppliedFilters,\n} from '@daffodil/category';\nimport { Dict } from '@daffodil/core';\nimport {\n DaffState,\n DaffStateError,\n} from '@daffodil/core/state';\n\nimport {\n DaffCategoryReducerState,\n DaffCategoryReducersState,\n DaffCategoryStateRootSlice,\n} from '../../reducers/public_api';\nimport { getDaffCategoryFeatureSelector } from '../category-feature.selector';\n\n/**\n * An interface to describe all selectors related to the category page metadata, category loading, and errors.\n */\nexport interface DaffCategoryPageMemoizedSelectors<\n\tV extends DaffGenericCategory<V> = DaffCategory\n> {\n\t/**\n\t * Selects all state related to the category page metadata, category loading, and errors.\n\t */\n\tselectCategoryState: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryReducerState>;\n\t/**\n\t * Selects the metadata for the current category page.\n\t */\n\tselectCategoryPageMetadata: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata>;\n\t/**\n\t * Selects the current page of products of the current category.\n\t */\n\tselectCategoryCurrentPage: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['current_page']>;\n\t/**\n\t * Selects the total number of pages of products that exist in the current category.\n\t */\n\tselectCategoryTotalPages: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['total_pages']>;\n\t/**\n\t * Selects the number of products on each category page.\n\t */\n\tselectCategoryPageSize: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['page_size']>;\n\t/**\n\t * Selects the filters that may be applied to the current category.\n\t */\n\tselectCategoryFilters: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['filters']>;\n\t/**\n\t * Selects the sort options that may be applied to the current category.\n\t */\n\tselectCategorySortOptions: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['sort_options']['options']>;\n\t/**\n\t * Selects the ids of all products in the current category page.\n\t */\n\tselectCategoryPageProductIds: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['product_ids']>;\n\t/**\n\t * Selects whether the category page has no products.\n\t */\n\tselectIsCategoryPageEmpty: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n\t/**\n\t * Selects the total number of products for the current category.\n\t */\n\tselectCategoryPageTotalProducts: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['total_products']>;\n /**\n * Returns a dict of filters and only their applied options.\n * Filters with no applied options will be omitted.\n */\n\tselectCategoryPageAppliedFilters: MemoizedSelector<DaffCategoryStateRootSlice<V>, Dict<DaffCategoryFilter>>;\n\t/**\n\t * Selects the applied sorting option if one is applied.\n\t */\n\tselectCategoryPageAppliedSortOption: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['applied_sort_option']>;\n\t/**\n\t * Selects the applied sorting direction if a sorting option is applied.\n\t */\n\tselectCategoryPageAppliedSortDirection: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['applied_sort_direction']>;\n\t/**\n\t * Selects the loading state of the current category; e.g. mutating, resolving, stable.\n\t */\n\tselectCategoryPageState: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryReducerState['daffState']>;\n\t/**\n\t * Selects the id of the current category.\n\t */\n\t selectCurrentCategoryId: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['id']>;\n /**\n * @deprecated Use selectIsCategoryPageResolving instead\n */\n\tselectCategoryLoading: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n /**\n * @deprecated Use selectIsCategoryPageResolving and selectIsCategoryPageMutating instead\n */\n\tselectCategoryProductsLoading: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n\t/**\n\t * Selects all errors associated with loading a category.\n\t */\n\tselectCategoryErrors: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffStateError[]>;\n /**\n * Selects whether the current category page is mutating; e.g. when a filter is applied to it.\n */\n\tselectIsCategoryPageMutating: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n /**\n * Selects whether the current category is resolving; e.g. when the category first loads.\n */\n\tselectIsCategoryPageResolving: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n}\n\nconst createCategoryPageSelectors = <V extends DaffGenericCategory<V>>(): DaffCategoryPageMemoizedSelectors<V> => {\n const selectCategoryFeatureState = getDaffCategoryFeatureSelector<V>().selectCategoryFeatureState;\n\n const selectCategoryState = createSelector(\n selectCategoryFeatureState,\n (state: DaffCategoryReducersState<V>) => state.category,\n );\n\n const selectCategoryPageMetadata = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.categoryPageMetadata,\n );\n\n const selectCategoryCurrentPage = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.current_page,\n );\n\n const selectCategoryTotalPages = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.total_pages,\n );\n\n const selectCategoryPageSize = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.page_size,\n );\n\n const selectCategoryFilters = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.filters,\n );\n\n const selectCategorySortOptions = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.sort_options.options,\n );\n\n const selectCategoryPageProductIds = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.product_ids,\n );\n\n const selectIsCategoryPageEmpty = createSelector(\n selectCategoryPageProductIds,\n (state: V['product_ids']) => !state.length,\n );\n\n const selectCategoryPageTotalProducts = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.total_products,\n );\n\n const selectCategoryPageAppliedFilters = createSelector(\n selectCategoryFilters,\n (filters: Dict<DaffCategoryFilter>): Dict<DaffCategoryFilter> => daffCategoryComputeAppliedFilters(filters),\n );\n\n const selectCategoryPageAppliedSortOption = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.applied_sort_option,\n );\n\n const selectCategoryPageAppliedSortDirection = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.applied_sort_direction,\n );\n\n const selectCategoryPageState = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.daffState,\n );\n\n const selectCurrentCategoryId = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.id,\n );\n\n const selectCategoryLoading = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.categoryLoading,\n );\n\n const selectCategoryProductsLoading = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.productsLoading,\n );\n\n const selectCategoryErrors = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.errors,\n );\n\n const selectIsCategoryPageMutating = createSelector(\n selectCategoryPageState,\n (daffState: DaffCategoryReducerState['daffState']) => daffState === DaffState.Mutating,\n );\n\n const selectIsCategoryPageResolving = createSelector(\n selectCategoryPageState,\n (daffState: DaffCategoryReducerState['daffState']) => daffState === DaffState.Resolving,\n );\n\n return {\n selectCategoryState,\n selectCategoryPageMetadata,\n selectCategoryCurrentPage,\n selectCategoryTotalPages,\n selectCategoryPageSize,\n selectCategoryFilters,\n selectCategorySortOptions,\n selectCategoryPageProductIds,\n selectIsCategoryPageEmpty,\n selectCategoryPageTotalProducts,\n selectCategoryPageAppliedFilters,\n selectCategoryPageAppliedSortOption,\n selectCategoryPageAppliedSortDirection,\n selectCategoryPageState,\n selectCurrentCategoryId,\n selectCategoryLoading,\n selectCategoryProductsLoading,\n selectCategoryErrors,\n selectIsCategoryPageMutating,\n selectIsCategoryPageResolving,\n };\n};\n\n/**\n * A function that returns all selectors related to the category page metadata, category loading, and errors.\n * Returns {@link DaffCategoryPageMemoizedSelectors}.\n */\nexport const getDaffCategoryPageSelectors = (() => {\n let cache;\n return <V extends DaffGenericCategory<V>>(): DaffCategoryPageMemoizedSelectors<V> => cache = cache\n ? cache\n : createCategoryPageSelectors<V>();\n})();\n","import { Dictionary } from '@ngrx/entity';\nimport {\n createSelector,\n MemoizedSelector,\n defaultMemoize,\n} from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\nimport { DaffProduct } from '@daffodil/product';\nimport { getDaffProductSelectors } from '@daffodil/product/state';\n\nimport { DaffCategoryStateRootSlice } from '../reducers/public_api';\nimport { DaffCategoryEntitiesMemoizedSelectors } from './category-entities/category-entities.selector';\nimport { getDaffCategoryEntitiesSelectors } from './category-entities/category-entities.selector';\nimport {\n DaffCategoryFeatureMemoizedSelectors,\n getDaffCategoryFeatureSelector,\n} from './category-feature.selector';\nimport {\n DaffCategoryPageMemoizedSelectors,\n getDaffCategoryPageSelectors,\n} from './category-page/category-page.selector';\n\n/**\n * An interface for selectors that combine category metadata and category entities selectors.\n */\nexport interface DaffCategoryMemoizedSelectors<\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n> extends\n DaffCategoryFeatureMemoizedSelectors<V>,\n DaffCategoryPageMemoizedSelectors<V>,\n DaffCategoryEntitiesMemoizedSelectors<V> {\n /**\n * Selects the current category\n */\n\tselectCurrentCategory: MemoizedSelector<DaffCategoryStateRootSlice<V>, V>;\n /**\n * Selects the products of the current category.\n */\n\tselectCategoryPageProducts: MemoizedSelector<DaffCategoryStateRootSlice<V, W>, W[]>;\n /**\n * Selects a category by id.\n *\n * @param categoryId a category id.\n */\n\tselectCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V>, V>;\n /**\n * Selects products by category id.\n *\n * @param categoryId a category id.\n */\n\tselectProductsByCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V, W>, W[]>;\n /**\n * Selects the total number of products in a category.\n *\n * @param categoryId a category id.\n */\n\tselectTotalProductsByCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V>, number>;\n}\n\nconst createCategorySelectors = <V extends DaffGenericCategory<V>, W extends DaffProduct>(): DaffCategoryMemoizedSelectors<V, W> => {\n const { selectAllProducts,selectProductEntities } = getDaffProductSelectors<W>();\n\n const {\n selectCategoryEntities,\n } = getDaffCategoryEntitiesSelectors<V>();\n const {\n selectCurrentCategoryId,\n selectCategoryPageProductIds,\n } = getDaffCategoryPageSelectors<V>();\n /**\n * Combinatoric Category Selectors\n */\n const selectCurrentCategory = createSelector(\n selectCategoryEntities,\n selectCurrentCategoryId,\n (entities: Dictionary<V>, currentCategoryId: V['id']) => entities[currentCategoryId],\n );\n\n const selectCategoryPageProducts = createSelector<DaffCategoryStateRootSlice<V, W>, string[], Dictionary<W>, W[]>(\n selectCategoryPageProductIds,\n selectProductEntities,\n (ids, products: Dictionary<W>) => ids.map(id => products[id]).filter(p => p != null),\n );\n\n const selectCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V>, V> =\n defaultMemoize((categoryId: V['id']) => createSelector(\n selectCategoryEntities,\n (entities: Dictionary<V>) => entities[categoryId],\n )).memoized;\n\n const selectProductsByCategory = defaultMemoize((categoryId: V['id']) => createSelector<DaffCategoryStateRootSlice<V, W>, V, W[], W[]>(\n selectCategory(categoryId),\n selectAllProducts,\n (category, products) => category?.product_ids\n ? products.filter(product => category.product_ids.indexOf(product.id) >= 0)\n : [],\n )).memoized;\n\n const selectTotalProductsByCategory = defaultMemoize((categoryId: V['id']) => createSelector(\n selectProductsByCategory(categoryId),\n (products: DaffProduct[]) => products.length,\n )).memoized;\n\n return {\n ...getDaffCategoryFeatureSelector<V>(),\n ...getDaffCategoryEntitiesSelectors<V>(),\n ...getDaffCategoryPageSelectors<V>(),\n selectCurrentCategory,\n selectCategoryPageProducts,\n selectCategory,\n selectProductsByCategory,\n selectTotalProductsByCategory,\n };\n};\n\n/**\n * A function that returns all combinatoric category selectors.\n */\nexport const getDaffCategorySelectors = (() => {\n let cache;\n return <\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n >(): DaffCategoryMemoizedSelectors<V, W> => cache = cache\n ? cache\n : createCategorySelectors<V, W>();\n})();\n","import { Injectable } from '@angular/core';\nimport {\n Store,\n select,\n Action,\n} from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n DaffCategoryFilter,\n DaffCategoryPageMetadata,\n} from '@daffodil/category';\nimport { Dict } from '@daffodil/core';\nimport {\n DaffSortDirectionEnum,\n DaffSortOption,\n DaffStateError,\n} from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport {\n DaffCategoryStateRootSlice,\n DaffCategoryReducerState,\n} from '../reducers/public_api';\nimport { getDaffCategorySelectors } from '../selectors/category.selector';\nimport { DaffCategoryFacadeInterface } from './category-facade.interface';\n\n/**\n * A facade for interacting with the category state.\n * This facade exposes many parts of the state for easy access and allows dispatching of actions.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCategoryFacade<\n\tV extends DaffGenericCategory<V> = DaffCategory,\n\tW extends DaffProduct = DaffProduct\n> implements DaffCategoryFacadeInterface<V,W> {\n\n\tprivate categorySelectors = getDaffCategorySelectors<V,W>();\n\n category$: Observable<V>;\n\n metadata$: Observable<DaffCategoryPageMetadata>;\n\n pageLoadingState$: Observable<DaffCategoryReducerState['daffState']>;\n\n isPageMutating$: Observable<boolean>;\n\n isPageResolving$: Observable<boolean>;\n\n currentPage$: Observable<number>;\n\n\ttotalPages$: Observable<number>;\n\n\ttotalProducts$: Observable<number>;\n\n pageSize$: Observable<number>;\n\n filters$: Observable<Dict<DaffCategoryFilter>>;\n\n sortOptions$: Observable<DaffSortOption[]>;\n\n appliedFilters$: Observable<Dict<DaffCategoryFilter>>;\n\n appliedSortOption$: Observable<string>;\n\n appliedSortDirection$: Observable<DaffSortDirectionEnum>;\n\n products$: Observable<W[]>;\n\n categoryLoading$: Observable<boolean>;\n\n productsLoading$: Observable<boolean>;\n\n\terrors$: Observable<DaffStateError[]>;\n\n\tisCategoryEmpty$: Observable<boolean>;\n\n\tgetCategoryById(id: V['id']): Observable<V> {\n\t return this.store.pipe(select(this.categorySelectors.selectCategory(id)));\n\t}\n\n\tgetProductsByCategory(categoryId: V['id']): Observable<W[]> {\n\t return this.store.pipe(select(this.categorySelectors.selectProductsByCategory(categoryId)));\n\t}\n\n\tgetTotalProductsByCategory(categoryId: V['id']): Observable<number> {\n\t return this.store.pipe(select(this.categorySelectors.selectTotalProductsByCategory(categoryId)));\n\t}\n\n\tconstructor(private store: Store<DaffCategoryStateRootSlice<V, W>>) {\n\t this.category$ = this.store.pipe(select(this.categorySelectors.selectCurrentCategory));\n\t this.products$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageProducts));\n\t this.totalProducts$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageTotalProducts));\n\t this.metadata$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageMetadata));\n\t this.pageLoadingState$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageState));\n\t this.isPageMutating$ = this.store.pipe(select(this.categorySelectors.selectIsCategoryPageMutating));\n\t this.isPageResolving$ = this.store.pipe(select(this.categorySelectors.selectIsCategoryPageResolving));\n\t this.currentPage$ = this.store.pipe(select(this.categorySelectors.selectCategoryCurrentPage));\n\t this.totalPages$ = this.store.pipe(select(this.categorySelectors.selectCategoryTotalPages));\n\t this.pageSize$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageSize));\n\t this.filters$ = this.store.pipe(select(this.categorySelectors.selectCategoryFilters));\n\t this.sortOptions$ = this.store.pipe(select(this.categorySelectors.selectCategorySortOptions));\n\t this.appliedFilters$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageAppliedFilters));\n\t this.appliedSortOption$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageAppliedSortOption));\n\t this.appliedSortDirection$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageAppliedSortDirection));\n\t this.categoryLoading$ = this.store.pipe(select(this.categorySelectors.selectCategoryLoading));\n\t this.productsLoading$ = this.store.pipe(select(this.categorySelectors.selectCategoryProductsLoading));\n\t this.errors$ = this.store.pipe(select(this.categorySelectors.selectCategoryErrors));\n\t this.isCategoryEmpty$ = this.store.pipe(select(this.categorySelectors.selectIsCategoryPageEmpty));\n\t}\n\n\t/**\n\t * Dispatches the given action.\n\t *\n\t * @param action action to dispatch.\n\t */\n\tdispatch(action: Action) {\n\t this.store.dispatch(action);\n\t}\n}\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Actions,\n Effect,\n ofType,\n} from '@ngrx/effects';\nimport {\n of,\n Observable,\n asyncScheduler,\n} from 'rxjs';\nimport { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler';\nimport {\n switchMap,\n catchError,\n map,\n throttleTime,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {\n DaffGenericCategory,\n DaffGetCategoryResponse,\n DAFF_CATEGORY_ERROR_MATCHER,\n daffCategoryFiltersToRequests,\n DaffCategoryRequestKind,\n DaffCategoryIdRequest,\n} from '@daffodil/category';\nimport { DaffCategoryPageMetadata } from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport { DaffError } from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageFilterActionTypes,\n DaffCategoryPageFilterActions,\n} from '../actions/category-page-filter.actions';\nimport {\n DaffCategoryPageLoadSuccess,\n DaffCategoryPageLoadFailure,\n} from '../actions/category-page.actions';\nimport { DaffCategoryFacade } from '../facades/category.facade';\n\n@Injectable()\nexport class DaffCategoryPageFilterEffects<\n\tV extends DaffGenericCategory<V>,\n\tW extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V, W>,\n\t\t@Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n private facade: DaffCategoryFacade,\n ){}\n\n /**\n * Updates the filters applied to the category page. It will take the currently\n * applied filters from state, form them into a request, and attempt to apply\n * that request to a backend service.\n *\n * @param throttleWindow the amount of time to delay when apply/removing filters\n * in a sequence.\n */\n @Effect()\n updateFilters$: (throttleWindow: number, scheduler: AsyncScheduler) => Observable<\n DaffProductGridLoadSuccess\n | DaffCategoryPageLoadSuccess\n | DaffCategoryPageLoadFailure\n > = (throttleWindow = 300, scheduler = asyncScheduler) => this.actions$.pipe(\n ofType(\n DaffCategoryPageFilterActionTypes.CategoryPageChangeFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageReplaceFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageApplyFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageClearFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageRemoveFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageToggleFilterAction,\n ),\n withLatestFrom(this.facade.metadata$),\n map((\n [action, metadata]: [DaffCategoryPageFilterActions, DaffCategoryPageMetadata],\n ): DaffCategoryIdRequest => ({\n kind: DaffCategoryRequestKind.ID,\n id: metadata.id,\n filter_requests: daffCategoryFiltersToRequests(metadata.filters),\n applied_sort_option: metadata.applied_sort_option,\n applied_sort_direction: metadata.applied_sort_direction,\n current_page: metadata.current_page,\n page_size: metadata.page_size,\n })),\n throttleTime(throttleWindow, scheduler, { leading: true, trailing: true }),\n switchMap(payload => this.driver.get(payload).pipe(\n switchMap((resp: DaffGetCategoryResponse<V, W>) => [\n new DaffProductGridLoadSuccess(resp.products),\n new DaffCategoryPageLoadSuccess(resp),\n ]),\n catchError((error: DaffError) => of(new DaffCategoryPageLoadFailure(this.errorMatcher(error)))),\n )),\n );\n}\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Actions,\n Effect,\n ofType,\n} from '@ngrx/effects';\nimport {\n Store,\n select,\n} from '@ngrx/store';\nimport {\n of,\n Observable,\n} from 'rxjs';\nimport {\n switchMap,\n catchError,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {\n DaffGenericCategory,\n DaffGetCategoryResponse,\n DAFF_CATEGORY_ERROR_MATCHER,\n DaffCategoryRequestKind,\n DaffCategoryIdRequest,\n DaffCategoryPageMetadata,\n daffCategoryFiltersToRequests,\n} from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport { DaffError } from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageLoadSuccess,\n DaffCategoryPageLoad,\n DaffCategoryPageLoadFailure,\n DaffCategoryPageActionTypes,\n DaffCategoryPageChangePageSize,\n DaffCategoryPageChangeCurrentPage,\n DaffCategoryPageChangeSortingOption,\n DaffCategoryPageLoadByUrl,\n} from '../actions/category-page.actions';\nimport { getDaffCategorySelectors } from '../selectors/category.selector';\n\n@Injectable()\nexport class DaffCategoryPageEffects<\n\tV extends DaffGenericCategory<V>,\n\tW extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V, W>,\n\t\t@Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n private store: Store<any>,\n ){}\n\n\tprivate categorySelectors = getDaffCategorySelectors<V, W>();\n\n @Effect()\n loadCategoryPage$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageLoadAction),\n switchMap((action: DaffCategoryPageLoad) => this.processCategoryGetRequest(action.request)),\n );\n\n @Effect()\n loadCategoryPageByUrl$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction),\n switchMap((action: DaffCategoryPageLoadByUrl) => this.driver.getByUrl(action.request).pipe(\n switchMap((resp: DaffGetCategoryResponse<V, W>) => [\n new DaffProductGridLoadSuccess(resp.products),\n new DaffCategoryPageLoadSuccess(resp),\n ]),\n catchError((error: DaffError) => of(new DaffCategoryPageLoadFailure(this.errorMatcher(error)))),\n )),\n );\n\n @Effect()\n changeCategoryPageSize$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageChangeSizeAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCategoryPageMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangePageSize, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filter_requests: daffCategoryFiltersToRequests(metadata.filters),\n page_size: action.pageSize,\n })),\n );\n\n @Effect()\n changeCategoryCurrentPage$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageChangeCurrentPageAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCategoryPageMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangeCurrentPage, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filter_requests: daffCategoryFiltersToRequests(metadata.filters),\n current_page: action.currentPage,\n })),\n );\n\n @Effect()\n changeCategorySort$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageChangeSortingOptionAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCategoryPageMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangeSortingOption, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filter_requests: daffCategoryFiltersToRequests(metadata.filters),\n applied_sort_option: action.sort.option,\n applied_sort_direction: action.sort.direction,\n })),\n );\n\n private processCategoryGetRequest(payload: DaffCategoryIdRequest) {\n return this.driver.get(payload).pipe(\n switchMap((resp: DaffGetCategoryResponse<V, W>) => [\n new DaffProductGridLoadSuccess(resp.products),\n new DaffCategoryPageLoadSuccess(resp),\n ]),\n catchError((error: DaffError) => of(new DaffCategoryPageLoadFailure(this.errorMatcher(error)))),\n );\n }\n}\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Actions,\n Effect,\n ofType,\n} from '@ngrx/effects';\nimport {\n of,\n Observable,\n} from 'rxjs';\nimport {\n switchMap,\n catchError,\n mergeMap,\n} from 'rxjs/operators';\n\nimport {\n DaffGenericCategory,\n DaffGetCategoryResponse,\n DAFF_CATEGORY_ERROR_MATCHER,\n} from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport { DaffError } from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryActionTypes,\n DaffCategoryLoad,\n DaffCategoryLoadSuccess,\n DaffCategoryLoadFailure,\n} from '../actions/category.actions';\n\n@Injectable()\nexport class DaffCategoryEffects<\n\tV extends DaffGenericCategory<V>,\n\tW extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V,W>,\n\t\t@Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n ) {}\n\n @Effect()\n loadCategory$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryActionTypes.CategoryLoadAction),\n mergeMap((action: DaffCategoryLoad) => this.driver.get(action.request).pipe(\n switchMap((resp: DaffGetCategoryResponse<V,W>) => of(\n new DaffProductGridLoadSuccess(resp.products),\n new DaffCategoryLoadSuccess(resp),\n )),\n catchError((error: DaffError) => of(new DaffCategoryLoadFailure(this.errorMatcher(error)))),\n )),\n );\n}\n","import { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\n\nimport { DaffProductStateModule } from '@daffodil/product/state';\n\nimport { DaffCategoryPageFilterEffects } from './effects/category-page-filter.effects';\nimport { DaffCategoryPageEffects } from './effects/category-page.effects';\nimport { DaffCategoryEffects } from './effects/category.effects';\nimport { daffCategoryReducers } from './reducers/category-reducers';\nimport { DAFF_CATEGORY_STORE_FEATURE_KEY } from './reducers/public_api';\n\n/**\n * A module that provides default reducers and effects for the category redux state.\n */\n@NgModule({\n imports: [\n StoreModule.forFeature(DAFF_CATEGORY_STORE_FEATURE_KEY, daffCategoryReducers),\n EffectsModule.forFeature([DaffCategoryEffects, DaffCategoryPageEffects, DaffCategoryPageFilterEffects]),\n DaffProductStateModule,\n ],\n})\nexport class DaffCategoryStateModule {}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daffodil-category-state.js","sources":["../../../libs/category/state/src/reducers/category-entities/category-entities-adapter.ts","../../../libs/category/state/src/actions/category-page.actions.ts","../../../libs/category/state/src/actions/category.actions.ts","../../../libs/category/state/src/reducers/category-entities/category-entities.reducer.ts","../../../libs/category/state/src/actions/category-page-filter.actions.ts","../../../libs/category/state/src/reducers/category/pure/build-metadata-from-request.ts","../../../libs/category/state/src/reducers/category/category.reducer.ts","../../../libs/category/state/src/reducers/category-reducers.ts","../../../libs/category/state/src/reducers/category-store-feature-key.ts","../../../libs/category/state/src/selectors/category-feature.selector.ts","../../../libs/category/state/src/selectors/category-entities/category-entities.selector.ts","../../../libs/category/state/src/selectors/category-page/category-page.selector.ts","../../../libs/category/state/src/selectors/category.selector.ts","../../../libs/category/state/src/facades/category.facade.ts","../../../libs/category/state/src/effects/category-page-filter.effects.ts","../../../libs/category/state/src/effects/category-page.effects.ts","../../../libs/category/state/src/effects/category.effects.ts","../../../libs/category/state/src/category-state.module.ts","../../../libs/category/state/src/daffodil-category-state.ts"],"sourcesContent":["import {\n EntityAdapter,\n createEntityAdapter,\n} from '@ngrx/entity';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\n\nexport function daffCategoryEntitiesAdapter<T extends DaffGenericCategory<T> = DaffCategory>(): EntityAdapter<T> {\n return createEntityAdapter<T>();\n}\n","import { Action } from '@ngrx/store';\n\nimport {\n DaffCategoryRequest,\n DaffGenericCategory,\n DaffCategory,\n DaffGetCategoryResponse,\n DaffCategoryIdRequest,\n DaffCategoryUrlRequest,\n} from '@daffodil/category';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\n/**\n * The possible types of category page actions.\n */\nexport enum DaffCategoryPageActionTypes {\n CategoryPageLoadAction = '[@daffodil/category] Category Page Load Action',\n CategoryPageLoadByUrlAction = '[@daffodil/category] Category Page Load By URL Action',\n CategoryPageLoadSuccessAction = '[@daffodil/category] Category Page Load Success Action',\n CategoryPageLoadFailureAction = '[@daffodil/category] Category Page Load Failure Action',\n CategoryPageChangeSizeAction = '[@daffodil/category] Category Page Change Size Action',\n CategoryPageChangeCurrentPageAction = '[@daffodil/category] Category Page Change Current Page Action',\n CategoryPageChangeSortingOptionAction = '[@daffodil/category] Category Page Change Sorting Option Action',\n}\n\n/**\n * An action triggered to initialize a category page load request.\n * This is intended to be used for loading full category pages.\n * Queries the category by ID.\n *\n * @param request - DaffCategoryRequest object\n */\nexport class DaffCategoryPageLoad implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageLoadAction;\n\n constructor(public request: DaffCategoryIdRequest) { }\n}\n\n/**\n * An action triggered to initialize a category page load request.\n * This is intended to be used for loading full category pages.\n * Queries the category by URL.\n *\n * @param request - DaffCategoryRequest object\n */\nexport class DaffCategoryPageLoadByUrl implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction;\n\n constructor(public request: DaffCategoryUrlRequest) { }\n}\n\n/**\n * An action triggered upon a successful category page request.\n *\n * @param response - DaffGetCategoryResponse object\n */\nexport class DaffCategoryPageLoadSuccess<\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n > implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction;\n\n constructor(public response: DaffGetCategoryResponse<V, W>) { }\n}\n\n/**\n * An action triggered upon a failed category page request.\n *\n * @param errorMessage - an error message\n */\nexport class DaffCategoryPageLoadFailure implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageLoadFailureAction;\n\n constructor(public errorMessage: DaffStateError) { }\n}\n\n/**\n * An action for changing the number of products shown on each page for the selected category.\n *\n * @param pageSize - The number of products per page.\n */\nexport class DaffCategoryPageChangePageSize implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageChangeSizeAction;\n\n constructor(public pageSize: number) { }\n}\n\n/**\n * An action for changing the current page of products for the selected category.\n *\n * @param currentPage - The current page of products for the selected category.\n */\nexport class DaffCategoryPageChangeCurrentPage implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageChangeCurrentPageAction;\n\n constructor(public currentPage: number) { }\n}\n\n/**\n * An action for changing the sorting option for the selected category.\n *\n * @param sort - The sort option to be applied.\n */\nexport class DaffCategoryPageChangeSortingOption implements Action {\n readonly type = DaffCategoryPageActionTypes.CategoryPageChangeSortingOptionAction;\n\n constructor(\n public sort: {\n option: DaffCategoryRequest['applied_sort_option'];\n direction: DaffCategoryRequest['applied_sort_direction'];\n },\n ) { }\n}\n\nexport type DaffCategoryPageActions<\n U extends DaffGenericCategory<U> = DaffCategory,\n W extends DaffProduct = DaffProduct\n > =\n | DaffCategoryPageLoad\n | DaffCategoryPageLoadByUrl\n | DaffCategoryPageLoadSuccess<U, W>\n | DaffCategoryPageLoadFailure\n | DaffCategoryPageChangePageSize\n | DaffCategoryPageChangeCurrentPage\n | DaffCategoryPageChangeSortingOption;\n","import { Action } from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n DaffGetCategoryResponse,\n DaffCategoryIdRequest,\n} from '@daffodil/category';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\n/**\n * The possible types of category actions.\n */\nexport enum DaffCategoryActionTypes {\n CategoryLoadAction = '[Daff-Category] Category Load Action',\n CategoryLoadSuccessAction = '[Daff-Category] Category Load Success Action',\n CategoryLoadFailureAction = '[Daff-Category] Category Load Failure Action'\n}\n\n/**\n * An action triggered to initialize a category load request.\n *\n * @param request - DaffCategoryRequest object\n */\nexport class DaffCategoryLoad implements Action {\n readonly type = DaffCategoryActionTypes.CategoryLoadAction;\n\n constructor(public request: DaffCategoryIdRequest) { }\n}\n\n/**\n * An action triggered upon a successful category request.\n *\n * @param response - DaffGetCategoryResponse object\n */\nexport class DaffCategoryLoadSuccess<\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n > implements Action {\n readonly type = DaffCategoryActionTypes.CategoryLoadSuccessAction;\n\n constructor(public response: DaffGetCategoryResponse<V, W>) { }\n}\n\n/**\n * An action triggered upon a failed category request.\n *\n * @param errorMessage - an error message\n */\nexport class DaffCategoryLoadFailure implements Action {\n readonly type = DaffCategoryActionTypes.CategoryLoadFailureAction;\n\n constructor(public errorMessage: DaffStateError) { }\n}\n\nexport type DaffCategoryActions<\n U extends DaffGenericCategory<U> = DaffCategory,\n W extends DaffProduct = DaffProduct\n > =\n | DaffCategoryLoad\n | DaffCategoryLoadSuccess<U, W>\n | DaffCategoryLoadFailure;\n","import { EntityState } from '@ngrx/entity';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\nimport { DaffProduct } from '@daffodil/product';\n\nimport {\n DaffCategoryPageActionTypes,\n DaffCategoryPageActions,\n} from '../../actions/category-page.actions';\nimport {\n DaffCategoryActionTypes,\n DaffCategoryActions,\n} from '../../actions/category.actions';\nimport { daffCategoryEntitiesAdapter } from './category-entities-adapter';\n\n/**\n * A reducer function to store category entities from DaffCategoryLoadSuccess and DaffCategoryPageLoadSuccess actions.\n */\nexport function daffCategoryEntitiesReducer<\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n>(\n state = daffCategoryEntitiesAdapter<V>().getInitialState(),\n action: DaffCategoryActions<V,W> | DaffCategoryPageActions<V,W>,\n): EntityState<V> {\n switch (action.type) {\n case DaffCategoryActionTypes.CategoryLoadSuccessAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n return daffCategoryEntitiesAdapter<V>().upsertOne(\n {\n id: action.response.category.id,\n ...action.response.category,\n },\n state,\n );\n default:\n return state;\n }\n}\n","import { Action } from '@ngrx/store';\n\nimport {\n DaffCategoryFilterRequest,\n DaffCategoryFilterToggleRequest,\n} from '@daffodil/category';\n\n/**\n * The possible types of category page filter actions.\n */\nexport enum DaffCategoryPageFilterActionTypes {\n CategoryPageChangeFiltersAction = '[@daffodil/category] Category Page Change Filters Action',\n CategoryPageReplaceFiltersAction = '[@daffodil/category] Category Page Replace Filters Action',\n CategoryPageApplyFiltersAction = '[@daffodil/category] Category Page Apply Filters Action',\n CategoryPageRemoveFiltersAction = '[@daffodil/category] Category Page Remove Filters Action',\n CategoryPageClearFiltersAction = '[@daffodil/category] Category Page Clear Filters Action',\n CategoryPageToggleFilterAction = '[@daffodil/category] Category Page Toggle Filter Action'\n}\n\n/**\n * An action for changing the filters for the current category.\n *\n * @param filters - Filters to be changed on the current category.\n * @deprecated use {@link DaffCategoryPageReplaceFilters} or {@link DaffCategoryPageApplyFilters}\n */\nexport class DaffCategoryPageChangeFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageChangeFiltersAction;\n\n constructor(public filters: DaffCategoryFilterRequest[]) { }\n}\n\n/**\n * An action for replacing the filters for the current category.\n * All existing filters will be removed and the specified filters will be applied.\n *\n * @param filters - Filters to be set on the current category.\n */\nexport class DaffCategoryPageReplaceFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageReplaceFiltersAction;\n\n constructor(public filters: DaffCategoryFilterRequest[]) { }\n}\n\n/**\n * An action for applying the specified filters for the current category.\n *\n * @param filters - Filters to be applied to the current category.\n */\nexport class DaffCategoryPageApplyFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageApplyFiltersAction;\n\n constructor(public filters: DaffCategoryFilterRequest[]) { }\n}\n\n/**\n * An action for removing the specified filters for the current category.\n *\n * @param filters - Filters to be removed from the current category.\n */\nexport class DaffCategoryPageRemoveFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageRemoveFiltersAction;\n\n constructor(public filters: DaffCategoryFilterRequest[]) { }\n}\n\n/**\n * An action for removing all the filters for the current category.\n */\nexport class DaffCategoryPageClearFilters implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageClearFiltersAction;\n}\n\n/**\n * An action for toggling a filters for the current category.\n *\n * @param filter - Filter to be toggled on the current category.\n */\nexport class DaffCategoryPageToggleFilter implements Action {\n readonly type = DaffCategoryPageFilterActionTypes.CategoryPageToggleFilterAction;\n\n constructor(public filter: DaffCategoryFilterToggleRequest) { }\n}\n\nexport type DaffCategoryPageFilterActions =\n | DaffCategoryPageChangeFilters\n | DaffCategoryPageReplaceFilters\n | DaffCategoryPageApplyFilters\n | DaffCategoryPageRemoveFilters\n | DaffCategoryPageClearFilters\n | DaffCategoryPageToggleFilter;\n","import {\n DaffCategoryPageMetadata,\n DaffCategoryIdRequest,\n DaffCategoryRequest,\n} from '@daffodil/category';\n\ntype MetadataRequestIntersection = keyof DaffCategoryPageMetadata & keyof DaffCategoryRequest;\n\nconst allowedMetadataKeys: MetadataRequestIntersection[] = [\n 'applied_sort_option',\n 'applied_sort_direction',\n 'current_page',\n 'page_size',\n];\n\nexport const buildMetadataFromRequest = (request: DaffCategoryRequest): Partial<DaffCategoryPageMetadata> =>\n allowedMetadataKeys.reduce(<K extends MetadataRequestIntersection>(acc: Partial<DaffCategoryPageMetadata>, key: K) => {\n if (request[key]) {\n acc[key] = request[key];\n }\n return acc;\n }, <Partial<DaffCategoryPageMetadata>>{});\n","import {\n DaffGenericCategory,\n daffApplyRequestsToFilters,\n daffRemoveRequestsFromFilters,\n daffClearFilters,\n daffToggleRequestOnFilters,\n} from '@daffodil/category';\nimport { DaffState } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport {\n DaffCategoryPageFilterActionTypes,\n DaffCategoryPageFilterActions,\n} from '../../actions/category-page-filter.actions';\nimport { DaffCategoryPageActions } from '../../actions/category-page.actions';\nimport { DaffCategoryPageActionTypes } from '../../actions/category-page.actions';\nimport { DaffCategoryActions } from '../../actions/category.actions';\nimport { DaffCategoryReducerState } from './category-reducer-state.interface';\nimport { buildMetadataFromRequest } from './pure/build-metadata-from-request';\n\nexport const initialState: DaffCategoryReducerState = {\n categoryPageMetadata: {\n id: null,\n applied_sort_option: null,\n applied_sort_direction: null,\n current_page: null,\n page_size: null,\n total_pages: null,\n filters: {},\n sort_options: {\n default: null,\n options: [],\n },\n total_products: null,\n product_ids: [],\n },\n daffState: DaffState.Stable,\n categoryLoading: false,\n productsLoading: false,\n errors: [],\n};\n\n/**\n * Returns the state for category data except for category entities.\n */\nexport function daffCategoryReducer<U extends DaffGenericCategory<U>, W extends DaffProduct>(\n state = initialState,\n action: DaffCategoryActions<U, W> | DaffCategoryPageActions<U, W> | DaffCategoryPageFilterActions,\n): DaffCategoryReducerState {\n switch (action.type) {\n case DaffCategoryPageActionTypes.CategoryPageLoadAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:\n return {\n ...state,\n categoryLoading: true,\n productsLoading: true,\n daffState: DaffState.Resolving,\n categoryPageMetadata: {\n ...initialState.categoryPageMetadata,\n ...buildMetadataFromRequest(action.request),\n id: null,\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageChangeSizeAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n page_size: action.pageSize,\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageChangeCurrentPageAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n current_page: action.currentPage,\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageChangeSortingOptionAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n applied_sort_option: action.sort.option,\n applied_sort_direction: action.sort.direction,\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageChangeFiltersAction:\n case DaffCategoryPageFilterActionTypes.CategoryPageReplaceFiltersAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffApplyRequestsToFilters(action.filters, daffClearFilters(state.categoryPageMetadata.filters)),\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageApplyFiltersAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffApplyRequestsToFilters(action.filters, state.categoryPageMetadata.filters),\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageClearFiltersAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffClearFilters(state.categoryPageMetadata.filters),\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageRemoveFiltersAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffRemoveRequestsFromFilters(action.filters, state.categoryPageMetadata.filters),\n },\n };\n\n case DaffCategoryPageFilterActionTypes.CategoryPageToggleFilterAction:\n return {\n ...state,\n productsLoading: true,\n daffState: DaffState.Mutating,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n filters: daffToggleRequestOnFilters(action.filter, state.categoryPageMetadata.filters),\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n return {\n ...state,\n categoryLoading: false,\n productsLoading: false,\n daffState: DaffState.Stable,\n categoryPageMetadata: {\n ...state.categoryPageMetadata,\n id: action.response.categoryPageMetadata.id,\n current_page: action.response.categoryPageMetadata.current_page,\n page_size: action.response.categoryPageMetadata.page_size,\n filters: action.response.categoryPageMetadata.filters,\n sort_options: action.response.categoryPageMetadata.sort_options,\n total_pages: action.response.categoryPageMetadata.total_pages,\n total_products: action.response.categoryPageMetadata.total_products,\n product_ids: action.response.categoryPageMetadata.product_ids,\n applied_sort_option: state.categoryPageMetadata.applied_sort_option || action.response.categoryPageMetadata.sort_options.default,\n },\n };\n\n case DaffCategoryPageActionTypes.CategoryPageLoadFailureAction:\n return {\n ...state,\n categoryLoading: false,\n productsLoading: false,\n errors: [action.errorMessage],\n daffState: DaffState.Stable,\n };\n default:\n return state;\n }\n}\n","import { ActionReducerMap } from '@ngrx/store';\n\nimport { daffCategoryEntitiesReducer } from './category-entities/category-entities.reducer';\nimport { DaffCategoryReducersState } from './category-reducers.interface';\nimport { daffCategoryReducer } from './category/category.reducer';\n\n/**\n * All daffodil defined category reducers.\n */\nexport const daffCategoryReducers: ActionReducerMap<DaffCategoryReducersState> = {\n category: daffCategoryReducer,\n categoryEntities: daffCategoryEntitiesReducer,\n};\n","/**\n * The key for the slice of category related redux state in the global redux state object.\n */\nexport const DAFF_CATEGORY_STORE_FEATURE_KEY = 'daffCategory';\n","import {\n createFeatureSelector,\n MemoizedSelector,\n} from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\n\nimport {\n DaffCategoryReducersState,\n DAFF_CATEGORY_STORE_FEATURE_KEY,\n DaffCategoryStateRootSlice,\n} from '../reducers/public_api';\n\n/**\n * An interface for the entire category feature state.\n */\nexport interface DaffCategoryFeatureMemoizedSelectors<\n\tV extends DaffGenericCategory<V> = DaffCategory,\n> {\n\tselectCategoryFeatureState: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryReducersState<V>>;\n}\n\n/**\n * A function that returns a selector for the entire category feature state.\n */\nexport const getDaffCategoryFeatureSelector = (() => {\n let cache;\n return <V extends DaffGenericCategory<V>>(): DaffCategoryFeatureMemoizedSelectors<V> => cache = cache\n ? cache\n : { selectCategoryFeatureState: createFeatureSelector<DaffCategoryStateRootSlice<V>,DaffCategoryReducersState<V>>(DAFF_CATEGORY_STORE_FEATURE_KEY) };\n})();\n","import {\n Dictionary,\n EntityState,\n} from '@ngrx/entity';\nimport {\n createSelector,\n MemoizedSelector,\n} from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\n\nimport { daffCategoryEntitiesAdapter } from '../../reducers/category-entities/category-entities-adapter';\nimport { DaffCategoryReducersState } from '../../reducers/category-reducers.interface';\nimport { DaffCategoryStateRootSlice } from '../../reducers/public_api';\nimport { getDaffCategoryFeatureSelector } from '../category-feature.selector';\n\n/**\n * An interface to describe all selectors related to category ngrx entities state.\n */\nexport interface DaffCategoryEntitiesMemoizedSelectors<V extends DaffGenericCategory<V> = DaffCategory> {\n\t/**\n\t * Selects ngrx category entities state.\n\t */\n\tselectCategoryEntitiesState: MemoizedSelector<DaffCategoryStateRootSlice<V>, EntityState<V>>;\n\t/**\n\t * Selects the ids of all categories in state.\n\t */\n\tselectCategoryIds: MemoizedSelector<DaffCategoryStateRootSlice<V>, string[] | number[]>;\n\t/**\n\t * Selects all categories in state as a dictionary.\n\t */\n\tselectCategoryEntities: MemoizedSelector<DaffCategoryStateRootSlice<V>, Dictionary<V>>;\n\t/**\n\t * Selects all categories in state as an array.\n\t */\n\tselectAllCategories: MemoizedSelector<DaffCategoryStateRootSlice<V>, V[]>;\n\t/**\n\t * Selects the total number of categories in state.\n\t */\n\tselectCategoryTotal: MemoizedSelector<DaffCategoryStateRootSlice<V>, number>;\n}\n\nconst createCategoryFeatureSelectors = <V extends DaffGenericCategory<V>>(): DaffCategoryEntitiesMemoizedSelectors<V> => {\n\n const entitiesSelectors = daffCategoryEntitiesAdapter<V>().getSelectors();\n const categoryFeatureState = getDaffCategoryFeatureSelector<V>().selectCategoryFeatureState;\n\n const selectCategoryEntitiesState = createSelector(\n categoryFeatureState,\n (state: DaffCategoryReducersState<V>) => state.categoryEntities,\n );\n\n const selectCategoryIds = createSelector(\n selectCategoryEntitiesState,\n entitiesSelectors.selectIds,\n );\n\n const selectCategoryEntities = createSelector(\n selectCategoryEntitiesState,\n entitiesSelectors.selectEntities,\n );\n\n const selectAllCategories = createSelector(\n selectCategoryEntitiesState,\n entitiesSelectors.selectAll,\n );\n\n const selectCategoryTotal = createSelector(\n selectCategoryEntitiesState,\n entitiesSelectors.selectTotal,\n );\n\n return {\n selectCategoryEntitiesState,\n selectCategoryIds,\n selectCategoryEntities,\n selectAllCategories,\n selectCategoryTotal,\n };\n};\n\n/**\n * A function that returns all selectors related to category entities.\n */\nexport const getDaffCategoryEntitiesSelectors = (() => {\n let cache;\n return <V extends DaffGenericCategory<V>>(): DaffCategoryEntitiesMemoizedSelectors<V> => cache = cache\n ? cache\n : createCategoryFeatureSelectors<V>();\n})();\n","import {\n createSelector,\n MemoizedSelector,\n} from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n DaffCategoryFilter,\n DaffCategoryPageMetadata,\n daffCategoryComputeAppliedFilters,\n} from '@daffodil/category';\nimport { Dict } from '@daffodil/core';\nimport {\n DaffState,\n DaffStateError,\n} from '@daffodil/core/state';\n\nimport {\n DaffCategoryReducerState,\n DaffCategoryReducersState,\n DaffCategoryStateRootSlice,\n} from '../../reducers/public_api';\nimport { getDaffCategoryFeatureSelector } from '../category-feature.selector';\n\n/**\n * An interface to describe all selectors related to the category page metadata, category loading, and errors.\n */\nexport interface DaffCategoryPageMemoizedSelectors<\n\tV extends DaffGenericCategory<V> = DaffCategory\n> {\n\t/**\n\t * Selects all state related to the category page metadata, category loading, and errors.\n\t */\n\tselectCategoryState: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryReducerState>;\n\t/**\n\t * Selects the metadata for the current category page.\n\t */\n\tselectCategoryPageMetadata: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata>;\n\t/**\n\t * Selects the current page of products of the current category.\n\t */\n\tselectCategoryCurrentPage: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['current_page']>;\n\t/**\n\t * Selects the total number of pages of products that exist in the current category.\n\t */\n\tselectCategoryTotalPages: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['total_pages']>;\n\t/**\n\t * Selects the number of products on each category page.\n\t */\n\tselectCategoryPageSize: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['page_size']>;\n\t/**\n\t * Selects the filters that may be applied to the current category.\n\t */\n\tselectCategoryFilters: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['filters']>;\n\t/**\n\t * Selects the sort options that may be applied to the current category.\n\t */\n\tselectCategorySortOptions: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['sort_options']['options']>;\n\t/**\n\t * Selects the ids of all products in the current category page.\n\t */\n\tselectCategoryPageProductIds: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['product_ids']>;\n\t/**\n\t * Selects whether the category page has no products.\n\t */\n\tselectIsCategoryPageEmpty: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n\t/**\n\t * Selects the total number of products for the current category.\n\t */\n\tselectCategoryPageTotalProducts: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['total_products']>;\n /**\n * Returns a dict of filters and only their applied options.\n * Filters with no applied options will be omitted.\n */\n\tselectCategoryPageAppliedFilters: MemoizedSelector<DaffCategoryStateRootSlice<V>, Dict<DaffCategoryFilter>>;\n\t/**\n\t * Selects the applied sorting option if one is applied.\n\t */\n\tselectCategoryPageAppliedSortOption: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['applied_sort_option']>;\n\t/**\n\t * Selects the applied sorting direction if a sorting option is applied.\n\t */\n\tselectCategoryPageAppliedSortDirection: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['applied_sort_direction']>;\n\t/**\n\t * Selects the loading state of the current category; e.g. mutating, resolving, stable.\n\t */\n\tselectCategoryPageState: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryReducerState['daffState']>;\n\t/**\n\t * Selects the id of the current category.\n\t */\n\t selectCurrentCategoryId: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['id']>;\n /**\n * @deprecated Use selectIsCategoryPageResolving instead\n */\n\tselectCategoryLoading: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n /**\n * @deprecated Use selectIsCategoryPageResolving and selectIsCategoryPageMutating instead\n */\n\tselectCategoryProductsLoading: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n\t/**\n\t * Selects all errors associated with loading a category.\n\t */\n\tselectCategoryErrors: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffStateError[]>;\n /**\n * Selects whether the current category page is mutating; e.g. when a filter is applied to it.\n */\n\tselectIsCategoryPageMutating: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n /**\n * Selects whether the current category is resolving; e.g. when the category first loads.\n */\n\tselectIsCategoryPageResolving: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n}\n\nconst createCategoryPageSelectors = <V extends DaffGenericCategory<V>>(): DaffCategoryPageMemoizedSelectors<V> => {\n const selectCategoryFeatureState = getDaffCategoryFeatureSelector<V>().selectCategoryFeatureState;\n\n const selectCategoryState = createSelector(\n selectCategoryFeatureState,\n (state: DaffCategoryReducersState<V>) => state.category,\n );\n\n const selectCategoryPageMetadata = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.categoryPageMetadata,\n );\n\n const selectCategoryCurrentPage = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.current_page,\n );\n\n const selectCategoryTotalPages = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.total_pages,\n );\n\n const selectCategoryPageSize = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.page_size,\n );\n\n const selectCategoryFilters = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.filters,\n );\n\n const selectCategorySortOptions = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.sort_options.options,\n );\n\n const selectCategoryPageProductIds = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.product_ids,\n );\n\n const selectIsCategoryPageEmpty = createSelector(\n selectCategoryPageProductIds,\n (state: V['product_ids']) => !state.length,\n );\n\n const selectCategoryPageTotalProducts = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.total_products,\n );\n\n const selectCategoryPageAppliedFilters = createSelector(\n selectCategoryFilters,\n (filters: Dict<DaffCategoryFilter>): Dict<DaffCategoryFilter> => daffCategoryComputeAppliedFilters(filters),\n );\n\n const selectCategoryPageAppliedSortOption = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.applied_sort_option,\n );\n\n const selectCategoryPageAppliedSortDirection = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.applied_sort_direction,\n );\n\n const selectCategoryPageState = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.daffState,\n );\n\n const selectCurrentCategoryId = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.id,\n );\n\n const selectCategoryLoading = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.categoryLoading,\n );\n\n const selectCategoryProductsLoading = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.productsLoading,\n );\n\n const selectCategoryErrors = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.errors,\n );\n\n const selectIsCategoryPageMutating = createSelector(\n selectCategoryPageState,\n (daffState: DaffCategoryReducerState['daffState']) => daffState === DaffState.Mutating,\n );\n\n const selectIsCategoryPageResolving = createSelector(\n selectCategoryPageState,\n (daffState: DaffCategoryReducerState['daffState']) => daffState === DaffState.Resolving,\n );\n\n return {\n selectCategoryState,\n selectCategoryPageMetadata,\n selectCategoryCurrentPage,\n selectCategoryTotalPages,\n selectCategoryPageSize,\n selectCategoryFilters,\n selectCategorySortOptions,\n selectCategoryPageProductIds,\n selectIsCategoryPageEmpty,\n selectCategoryPageTotalProducts,\n selectCategoryPageAppliedFilters,\n selectCategoryPageAppliedSortOption,\n selectCategoryPageAppliedSortDirection,\n selectCategoryPageState,\n selectCurrentCategoryId,\n selectCategoryLoading,\n selectCategoryProductsLoading,\n selectCategoryErrors,\n selectIsCategoryPageMutating,\n selectIsCategoryPageResolving,\n };\n};\n\n/**\n * A function that returns all selectors related to the category page metadata, category loading, and errors.\n * Returns {@link DaffCategoryPageMemoizedSelectors}.\n */\nexport const getDaffCategoryPageSelectors = (() => {\n let cache;\n return <V extends DaffGenericCategory<V>>(): DaffCategoryPageMemoizedSelectors<V> => cache = cache\n ? cache\n : createCategoryPageSelectors<V>();\n})();\n","import { Dictionary } from '@ngrx/entity';\nimport {\n createSelector,\n MemoizedSelector,\n defaultMemoize,\n} from '@ngrx/store';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n} from '@daffodil/category';\nimport { DaffProduct } from '@daffodil/product';\nimport { getDaffProductSelectors } from '@daffodil/product/state';\n\nimport { DaffCategoryStateRootSlice } from '../reducers/public_api';\nimport { DaffCategoryEntitiesMemoizedSelectors } from './category-entities/category-entities.selector';\nimport { getDaffCategoryEntitiesSelectors } from './category-entities/category-entities.selector';\nimport {\n DaffCategoryFeatureMemoizedSelectors,\n getDaffCategoryFeatureSelector,\n} from './category-feature.selector';\nimport {\n DaffCategoryPageMemoizedSelectors,\n getDaffCategoryPageSelectors,\n} from './category-page/category-page.selector';\n\n/**\n * An interface for selectors that combine category metadata and category entities selectors.\n */\nexport interface DaffCategoryMemoizedSelectors<\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n> extends\n DaffCategoryFeatureMemoizedSelectors<V>,\n DaffCategoryPageMemoizedSelectors<V>,\n DaffCategoryEntitiesMemoizedSelectors<V> {\n /**\n * Selects the current category\n */\n\tselectCurrentCategory: MemoizedSelector<DaffCategoryStateRootSlice<V>, V>;\n /**\n * Selects the products of the current category.\n */\n\tselectCategoryPageProducts: MemoizedSelector<DaffCategoryStateRootSlice<V, W>, W[]>;\n /**\n * Selects a category by id.\n *\n * @param categoryId a category id.\n */\n\tselectCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V>, V>;\n /**\n * Selects products by category id.\n *\n * @param categoryId a category id.\n */\n\tselectProductsByCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V, W>, W[]>;\n /**\n * Selects the total number of products in a category.\n *\n * @param categoryId a category id.\n */\n\tselectTotalProductsByCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V>, number>;\n}\n\nconst createCategorySelectors = <V extends DaffGenericCategory<V>, W extends DaffProduct>(): DaffCategoryMemoizedSelectors<V, W> => {\n const { selectAllProducts,selectProductEntities } = getDaffProductSelectors<W>();\n\n const {\n selectCategoryEntities,\n } = getDaffCategoryEntitiesSelectors<V>();\n const {\n selectCurrentCategoryId,\n selectCategoryPageProductIds,\n } = getDaffCategoryPageSelectors<V>();\n /**\n * Combinatoric Category Selectors\n */\n const selectCurrentCategory = createSelector(\n selectCategoryEntities,\n selectCurrentCategoryId,\n (entities: Dictionary<V>, currentCategoryId: V['id']) => entities[currentCategoryId],\n );\n\n const selectCategoryPageProducts = createSelector<DaffCategoryStateRootSlice<V, W>, string[], Dictionary<W>, W[]>(\n selectCategoryPageProductIds,\n selectProductEntities,\n (ids, products: Dictionary<W>) => ids.map(id => products[id]).filter(p => p != null),\n );\n\n const selectCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V>, V> =\n defaultMemoize((categoryId: V['id']) => createSelector(\n selectCategoryEntities,\n (entities: Dictionary<V>) => entities[categoryId],\n )).memoized;\n\n const selectProductsByCategory = defaultMemoize((categoryId: V['id']) => createSelector<DaffCategoryStateRootSlice<V, W>, V, W[], W[]>(\n selectCategory(categoryId),\n selectAllProducts,\n (category, products) => category?.product_ids\n ? products.filter(product => category.product_ids.indexOf(product.id) >= 0)\n : [],\n )).memoized;\n\n const selectTotalProductsByCategory = defaultMemoize((categoryId: V['id']) => createSelector(\n selectProductsByCategory(categoryId),\n (products: DaffProduct[]) => products.length,\n )).memoized;\n\n return {\n ...getDaffCategoryFeatureSelector<V>(),\n ...getDaffCategoryEntitiesSelectors<V>(),\n ...getDaffCategoryPageSelectors<V>(),\n selectCurrentCategory,\n selectCategoryPageProducts,\n selectCategory,\n selectProductsByCategory,\n selectTotalProductsByCategory,\n };\n};\n\n/**\n * A function that returns all combinatoric category selectors.\n */\nexport const getDaffCategorySelectors = (() => {\n let cache;\n return <\n V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n >(): DaffCategoryMemoizedSelectors<V, W> => cache = cache\n ? cache\n : createCategorySelectors<V, W>();\n})();\n","import { Injectable } from '@angular/core';\nimport {\n Store,\n select,\n Action,\n} from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport {\n DaffGenericCategory,\n DaffCategory,\n DaffCategoryFilter,\n DaffCategoryPageMetadata,\n} from '@daffodil/category';\nimport { Dict } from '@daffodil/core';\nimport {\n DaffSortDirectionEnum,\n DaffSortOption,\n DaffStateError,\n} from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport {\n DaffCategoryStateRootSlice,\n DaffCategoryReducerState,\n} from '../reducers/public_api';\nimport { getDaffCategorySelectors } from '../selectors/category.selector';\nimport { DaffCategoryFacadeInterface } from './category-facade.interface';\n\n/**\n * A facade for interacting with the category state.\n * This facade exposes many parts of the state for easy access and allows dispatching of actions.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCategoryFacade<\n\tV extends DaffGenericCategory<V> = DaffCategory,\n\tW extends DaffProduct = DaffProduct\n> implements DaffCategoryFacadeInterface<V,W> {\n\n\tprivate categorySelectors = getDaffCategorySelectors<V,W>();\n\n category$: Observable<V>;\n\n metadata$: Observable<DaffCategoryPageMetadata>;\n\n pageLoadingState$: Observable<DaffCategoryReducerState['daffState']>;\n\n isPageMutating$: Observable<boolean>;\n\n isPageResolving$: Observable<boolean>;\n\n currentPage$: Observable<number>;\n\n\ttotalPages$: Observable<number>;\n\n\ttotalProducts$: Observable<number>;\n\n pageSize$: Observable<number>;\n\n filters$: Observable<Dict<DaffCategoryFilter>>;\n\n sortOptions$: Observable<DaffSortOption[]>;\n\n appliedFilters$: Observable<Dict<DaffCategoryFilter>>;\n\n appliedSortOption$: Observable<string>;\n\n appliedSortDirection$: Observable<DaffSortDirectionEnum>;\n\n products$: Observable<W[]>;\n\n categoryLoading$: Observable<boolean>;\n\n productsLoading$: Observable<boolean>;\n\n\terrors$: Observable<DaffStateError[]>;\n\n\tisCategoryEmpty$: Observable<boolean>;\n\n\tgetCategoryById(id: V['id']): Observable<V> {\n\t return this.store.pipe(select(this.categorySelectors.selectCategory(id)));\n\t}\n\n\tgetProductsByCategory(categoryId: V['id']): Observable<W[]> {\n\t return this.store.pipe(select(this.categorySelectors.selectProductsByCategory(categoryId)));\n\t}\n\n\tgetTotalProductsByCategory(categoryId: V['id']): Observable<number> {\n\t return this.store.pipe(select(this.categorySelectors.selectTotalProductsByCategory(categoryId)));\n\t}\n\n\tconstructor(private store: Store<DaffCategoryStateRootSlice<V, W>>) {\n\t this.category$ = this.store.pipe(select(this.categorySelectors.selectCurrentCategory));\n\t this.products$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageProducts));\n\t this.totalProducts$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageTotalProducts));\n\t this.metadata$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageMetadata));\n\t this.pageLoadingState$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageState));\n\t this.isPageMutating$ = this.store.pipe(select(this.categorySelectors.selectIsCategoryPageMutating));\n\t this.isPageResolving$ = this.store.pipe(select(this.categorySelectors.selectIsCategoryPageResolving));\n\t this.currentPage$ = this.store.pipe(select(this.categorySelectors.selectCategoryCurrentPage));\n\t this.totalPages$ = this.store.pipe(select(this.categorySelectors.selectCategoryTotalPages));\n\t this.pageSize$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageSize));\n\t this.filters$ = this.store.pipe(select(this.categorySelectors.selectCategoryFilters));\n\t this.sortOptions$ = this.store.pipe(select(this.categorySelectors.selectCategorySortOptions));\n\t this.appliedFilters$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageAppliedFilters));\n\t this.appliedSortOption$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageAppliedSortOption));\n\t this.appliedSortDirection$ = this.store.pipe(select(this.categorySelectors.selectCategoryPageAppliedSortDirection));\n\t this.categoryLoading$ = this.store.pipe(select(this.categorySelectors.selectCategoryLoading));\n\t this.productsLoading$ = this.store.pipe(select(this.categorySelectors.selectCategoryProductsLoading));\n\t this.errors$ = this.store.pipe(select(this.categorySelectors.selectCategoryErrors));\n\t this.isCategoryEmpty$ = this.store.pipe(select(this.categorySelectors.selectIsCategoryPageEmpty));\n\t}\n\n\t/**\n\t * Dispatches the given action.\n\t *\n\t * @param action action to dispatch.\n\t */\n\tdispatch(action: Action) {\n\t this.store.dispatch(action);\n\t}\n}\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Actions,\n Effect,\n ofType,\n} from '@ngrx/effects';\nimport {\n of,\n Observable,\n asyncScheduler,\n} from 'rxjs';\nimport { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler';\nimport {\n switchMap,\n catchError,\n map,\n throttleTime,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {\n DaffGenericCategory,\n DaffGetCategoryResponse,\n DAFF_CATEGORY_ERROR_MATCHER,\n daffCategoryFiltersToRequests,\n DaffCategoryRequestKind,\n DaffCategoryIdRequest,\n} from '@daffodil/category';\nimport { DaffCategoryPageMetadata } from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport { DaffError } from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageFilterActionTypes,\n DaffCategoryPageFilterActions,\n} from '../actions/category-page-filter.actions';\nimport {\n DaffCategoryPageLoadSuccess,\n DaffCategoryPageLoadFailure,\n} from '../actions/category-page.actions';\nimport { DaffCategoryFacade } from '../facades/category.facade';\n\n@Injectable()\nexport class DaffCategoryPageFilterEffects<\n\tV extends DaffGenericCategory<V>,\n\tW extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V, W>,\n\t\t@Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n private facade: DaffCategoryFacade,\n ){}\n\n /**\n * Updates the filters applied to the category page. It will take the currently\n * applied filters from state, form them into a request, and attempt to apply\n * that request to a backend service.\n *\n * @param throttleWindow the amount of time to delay when apply/removing filters\n * in a sequence.\n */\n @Effect()\n updateFilters$: (throttleWindow: number, scheduler: AsyncScheduler) => Observable<\n DaffProductGridLoadSuccess\n | DaffCategoryPageLoadSuccess\n | DaffCategoryPageLoadFailure\n > = (throttleWindow = 300, scheduler = asyncScheduler) => this.actions$.pipe(\n ofType(\n DaffCategoryPageFilterActionTypes.CategoryPageChangeFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageReplaceFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageApplyFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageClearFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageRemoveFiltersAction,\n DaffCategoryPageFilterActionTypes.CategoryPageToggleFilterAction,\n ),\n withLatestFrom(this.facade.metadata$),\n map((\n [action, metadata]: [DaffCategoryPageFilterActions, DaffCategoryPageMetadata],\n ): DaffCategoryIdRequest => ({\n kind: DaffCategoryRequestKind.ID,\n id: metadata.id,\n filter_requests: daffCategoryFiltersToRequests(metadata.filters),\n applied_sort_option: metadata.applied_sort_option,\n applied_sort_direction: metadata.applied_sort_direction,\n current_page: metadata.current_page,\n page_size: metadata.page_size,\n })),\n throttleTime(throttleWindow, scheduler, { leading: true, trailing: true }),\n switchMap(payload => this.driver.get(payload).pipe(\n switchMap((resp: DaffGetCategoryResponse<V, W>) => [\n new DaffProductGridLoadSuccess(resp.products),\n new DaffCategoryPageLoadSuccess(resp),\n ]),\n catchError((error: DaffError) => of(new DaffCategoryPageLoadFailure(this.errorMatcher(error)))),\n )),\n );\n}\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Actions,\n Effect,\n ofType,\n} from '@ngrx/effects';\nimport {\n Store,\n select,\n} from '@ngrx/store';\nimport {\n of,\n Observable,\n} from 'rxjs';\nimport {\n switchMap,\n catchError,\n withLatestFrom,\n} from 'rxjs/operators';\n\nimport {\n DaffGenericCategory,\n DaffGetCategoryResponse,\n DAFF_CATEGORY_ERROR_MATCHER,\n DaffCategoryRequestKind,\n DaffCategoryIdRequest,\n DaffCategoryPageMetadata,\n daffCategoryFiltersToRequests,\n} from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport { DaffError } from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageLoadSuccess,\n DaffCategoryPageLoad,\n DaffCategoryPageLoadFailure,\n DaffCategoryPageActionTypes,\n DaffCategoryPageChangePageSize,\n DaffCategoryPageChangeCurrentPage,\n DaffCategoryPageChangeSortingOption,\n DaffCategoryPageLoadByUrl,\n} from '../actions/category-page.actions';\nimport { getDaffCategorySelectors } from '../selectors/category.selector';\n\n@Injectable()\nexport class DaffCategoryPageEffects<\n\tV extends DaffGenericCategory<V>,\n\tW extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V, W>,\n\t\t@Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n private store: Store<any>,\n ){}\n\n\tprivate categorySelectors = getDaffCategorySelectors<V, W>();\n\n @Effect()\n loadCategoryPage$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageLoadAction),\n switchMap((action: DaffCategoryPageLoad) => this.processCategoryGetRequest(action.request)),\n );\n\n @Effect()\n loadCategoryPageByUrl$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction),\n switchMap((action: DaffCategoryPageLoadByUrl) => this.driver.getByUrl(action.request).pipe(\n switchMap((resp: DaffGetCategoryResponse<V, W>) => [\n new DaffProductGridLoadSuccess(resp.products),\n new DaffCategoryPageLoadSuccess(resp),\n ]),\n catchError((error: DaffError) => of(new DaffCategoryPageLoadFailure(this.errorMatcher(error)))),\n )),\n );\n\n @Effect()\n changeCategoryPageSize$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageChangeSizeAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCategoryPageMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangePageSize, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filter_requests: daffCategoryFiltersToRequests(metadata.filters),\n page_size: action.pageSize,\n })),\n );\n\n @Effect()\n changeCategoryCurrentPage$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageChangeCurrentPageAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCategoryPageMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangeCurrentPage, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filter_requests: daffCategoryFiltersToRequests(metadata.filters),\n current_page: action.currentPage,\n })),\n );\n\n @Effect()\n changeCategorySort$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageChangeSortingOptionAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCategoryPageMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangeSortingOption, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filter_requests: daffCategoryFiltersToRequests(metadata.filters),\n applied_sort_option: action.sort.option,\n applied_sort_direction: action.sort.direction,\n })),\n );\n\n private processCategoryGetRequest(payload: DaffCategoryIdRequest) {\n return this.driver.get(payload).pipe(\n switchMap((resp: DaffGetCategoryResponse<V, W>) => [\n new DaffProductGridLoadSuccess(resp.products),\n new DaffCategoryPageLoadSuccess(resp),\n ]),\n catchError((error: DaffError) => of(new DaffCategoryPageLoadFailure(this.errorMatcher(error)))),\n );\n }\n}\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Actions,\n Effect,\n ofType,\n} from '@ngrx/effects';\nimport {\n of,\n Observable,\n} from 'rxjs';\nimport {\n switchMap,\n catchError,\n mergeMap,\n} from 'rxjs/operators';\n\nimport {\n DaffGenericCategory,\n DaffGetCategoryResponse,\n DAFF_CATEGORY_ERROR_MATCHER,\n} from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport { DaffError } from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryActionTypes,\n DaffCategoryLoad,\n DaffCategoryLoadSuccess,\n DaffCategoryLoadFailure,\n} from '../actions/category.actions';\n\n@Injectable()\nexport class DaffCategoryEffects<\n\tV extends DaffGenericCategory<V>,\n\tW extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V,W>,\n\t\t@Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n ) {}\n\n @Effect()\n loadCategory$: Observable<any> = this.actions$.pipe(\n ofType(DaffCategoryActionTypes.CategoryLoadAction),\n mergeMap((action: DaffCategoryLoad) => this.driver.get(action.request).pipe(\n switchMap((resp: DaffGetCategoryResponse<V,W>) => of(\n new DaffProductGridLoadSuccess(resp.products),\n new DaffCategoryLoadSuccess(resp),\n )),\n catchError((error: DaffError) => of(new DaffCategoryLoadFailure(this.errorMatcher(error)))),\n )),\n );\n}\n","import { NgModule } from '@angular/core';\nimport { EffectsModule } from '@ngrx/effects';\nimport { StoreModule } from '@ngrx/store';\n\nimport { DaffProductStateModule } from '@daffodil/product/state';\n\nimport { DaffCategoryPageFilterEffects } from './effects/category-page-filter.effects';\nimport { DaffCategoryPageEffects } from './effects/category-page.effects';\nimport { DaffCategoryEffects } from './effects/category.effects';\nimport { daffCategoryReducers } from './reducers/category-reducers';\nimport { DAFF_CATEGORY_STORE_FEATURE_KEY } from './reducers/public_api';\n\n/**\n * A module that provides default reducers and effects for the category redux state.\n */\n@NgModule({\n imports: [\n StoreModule.forFeature(DAFF_CATEGORY_STORE_FEATURE_KEY, daffCategoryReducers),\n EffectsModule.forFeature([DaffCategoryEffects, DaffCategoryPageEffects, DaffCategoryPageFilterEffects]),\n DaffProductStateModule,\n ],\n})\nexport class DaffCategoryStateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {DaffCategoryPageFilterEffects as ɵc} from './effects/category-page-filter.effects';\nexport {DaffCategoryPageEffects as ɵb} from './effects/category-page.effects';\nexport {DaffCategoryEffects as ɵa} from './effects/category.effects';"],"names":[],"mappings":"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"}