@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,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@ngrx/store"),require("@daffodil/product/state"),require("@ngrx/entity"),require("@daffodil/category"),require("@ngrx/effects"),require("rxjs"),require("rxjs/operators"),require("@daffodil/category/driver")):"function"==typeof define&&define.amd?define("@daffodil/category/state",["exports","@angular/core","@ngrx/store","@daffodil/product/state","@ngrx/entity","@daffodil/category","@ngrx/effects","rxjs","rxjs/operators","@daffodil/category/driver"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).daffodil=e.daffodil||{},e.daffodil.category=e.daffodil.category||{},e.daffodil.category.state={}),e.ng.core,e.i1,e.state,e.entity,e.daffodil.category,e.effects,e.rxjs,e.rxjs.operators,e.daffodil.category.driver)}(this,(function(e,t,r,a,o,i,s,c,n,g){"use strict";function l(){return o.createEntityAdapter()}var d={CategoryPageLoadAction:"[@daffodil/category] Category Page Load Action",CategoryPageLoadByUrlAction:"[@daffodil/category] Category Page Load By URL Action",CategoryPageLoadSuccessAction:"[@daffodil/category] Category Page Load Success Action",CategoryPageLoadFailureAction:"[@daffodil/category] Category Page Load Failure Action",CategoryPageChangeSizeAction:"[@daffodil/category] Category Page Change Size Action",CategoryPageChangeCurrentPageAction:"[@daffodil/category] Category Page Change Current Page Action",CategoryPageChangeSortingOptionAction:"[@daffodil/category] Category Page Change Sorting Option Action"},y=function(e){this.request=e,this.type=d.CategoryPageLoadAction};var f=function(e){this.request=e,this.type=d.CategoryPageLoadByUrlAction};var u=function(e){this.response=e,this.type=d.CategoryPageLoadSuccessAction};var p=function(e){this.errorMessage=e,this.type=d.CategoryPageLoadFailureAction};var C=function(e){this.pageSize=e,this.type=d.CategoryPageChangeSizeAction};var h=function(e){this.currentPage=e,this.type=d.CategoryPageChangeCurrentPageAction};var P=function(e){this.sort=e,this.type=d.CategoryPageChangeSortingOptionAction};var S={CategoryLoadAction:"[Daff-Category] Category Load Action",CategoryLoadSuccessAction:"[Daff-Category] Category Load Success Action",CategoryLoadFailureAction:"[Daff-Category] Category Load Failure Action"},A=function(e){this.request=e,this.type=S.CategoryLoadAction};var v=function(e){this.response=e,this.type=S.CategoryLoadSuccessAction};var O=function(e){this.errorMessage=e,this.type=S.CategoryLoadFailureAction};function _(e,t){switch(void 0===e&&(e=l().getInitialState()),t.type){case S.CategoryLoadSuccessAction:case d.CategoryPageLoadSuccessAction:return l().upsertOne(Object.assign({id:t.response.category.id},t.response.category),e);default:return e}}var b={CategoryPageChangeFiltersAction:"[@daffodil/category] Category Page Change Filters Action",CategoryPageReplaceFiltersAction:"[@daffodil/category] Category Page Replace Filters Action",CategoryPageApplyFiltersAction:"[@daffodil/category] Category Page Apply Filters Action",CategoryPageRemoveFiltersAction:"[@daffodil/category] Category Page Remove Filters Action",CategoryPageClearFiltersAction:"[@daffodil/category] Category Page Clear Filters Action",CategoryPageToggleFilterAction:"[@daffodil/category] Category Page Toggle Filter Action"},M=function(e){this.filters=e,this.type=b.CategoryPageChangeFiltersAction};var F=function(e){this.filters=e,this.type=b.CategoryPageReplaceFiltersAction};var j=function(e){this.filters=e,this.type=b.CategoryPageApplyFiltersAction};var L=function(e){this.filters=e,this.type=b.CategoryPageRemoveFiltersAction};var R=function(){this.type=b.CategoryPageClearFiltersAction};var D=function(e){this.filter=e,this.type=b.CategoryPageToggleFilterAction};var T=["applied_sort_option","applied_sort_direction","current_page","page_size"],$={categoryPageMetadata:{id:null,applied_sort_option:null,applied_sort_direction:null,current_page:null,page_size:null,total_pages:null,filters:{},sort_options:{default:null,options:[]},total_products:null,product_ids:[]},daffState:"Stable",categoryLoading:!1,productsLoading:!1,errors:[]};function m(e,t){switch(void 0===e&&(e=$),t.type){case d.CategoryPageLoadAction:case d.CategoryPageLoadByUrlAction:return Object.assign(Object.assign({},e),{categoryLoading:!0,productsLoading:!0,daffState:"Resolving",categoryPageMetadata:Object.assign(Object.assign(Object.assign({},$.categoryPageMetadata),(r=t.request,T.reduce((function(e,t){return r[t]&&(e[t]=r[t]),e}),{}))),{id:null})});case d.CategoryPageChangeSizeAction:return Object.assign(Object.assign({},e),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},e.categoryPageMetadata),{page_size:t.pageSize})});case d.CategoryPageChangeCurrentPageAction:return Object.assign(Object.assign({},e),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},e.categoryPageMetadata),{current_page:t.currentPage})});case d.CategoryPageChangeSortingOptionAction:return Object.assign(Object.assign({},e),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},e.categoryPageMetadata),{applied_sort_option:t.sort.option,applied_sort_direction:t.sort.direction})});case b.CategoryPageChangeFiltersAction:case b.CategoryPageReplaceFiltersAction:return Object.assign(Object.assign({},e),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},e.categoryPageMetadata),{filters:i.daffApplyRequestsToFilters(t.filters,i.daffClearFilters(e.categoryPageMetadata.filters))})});case b.CategoryPageApplyFiltersAction:return Object.assign(Object.assign({},e),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},e.categoryPageMetadata),{filters:i.daffApplyRequestsToFilters(t.filters,e.categoryPageMetadata.filters)})});case b.CategoryPageClearFiltersAction:return Object.assign(Object.assign({},e),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},e.categoryPageMetadata),{filters:i.daffClearFilters(e.categoryPageMetadata.filters)})});case b.CategoryPageRemoveFiltersAction:return Object.assign(Object.assign({},e),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},e.categoryPageMetadata),{filters:i.daffRemoveRequestsFromFilters(t.filters,e.categoryPageMetadata.filters)})});case b.CategoryPageToggleFilterAction:return Object.assign(Object.assign({},e),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},e.categoryPageMetadata),{filters:i.daffToggleRequestOnFilters(t.filter,e.categoryPageMetadata.filters)})});case d.CategoryPageLoadSuccessAction:return Object.assign(Object.assign({},e),{categoryLoading:!1,productsLoading:!1,daffState:"Stable",categoryPageMetadata:Object.assign(Object.assign({},e.categoryPageMetadata),{id:t.response.categoryPageMetadata.id,current_page:t.response.categoryPageMetadata.current_page,page_size:t.response.categoryPageMetadata.page_size,filters:t.response.categoryPageMetadata.filters,sort_options:t.response.categoryPageMetadata.sort_options,total_pages:t.response.categoryPageMetadata.total_pages,total_products:t.response.categoryPageMetadata.total_products,product_ids:t.response.categoryPageMetadata.product_ids,applied_sort_option:e.categoryPageMetadata.applied_sort_option||t.response.categoryPageMetadata.sort_options.default})});case d.CategoryPageLoadFailureAction:return Object.assign(Object.assign({},e),{categoryLoading:!1,productsLoading:!1,errors:[t.errorMessage],daffState:"Stable"});default:return e}var r}var E={category:m,categoryEntities:_},q="daffCategory";var w,I=function(){return w=w||{selectCategoryFeatureState:r.createFeatureSelector(q)}};var z=function(){var e=l().getSelectors(),t=I().selectCategoryFeatureState,a=r.createSelector(t,(function(e){return e.categoryEntities}));return{selectCategoryEntitiesState:a,selectCategoryIds:r.createSelector(a,e.selectIds),selectCategoryEntities:r.createSelector(a,e.selectEntities),selectAllCategories:r.createSelector(a,e.selectAll),selectCategoryTotal:r.createSelector(a,e.selectTotal)}},x=function(){var e;return function(){return e=e||z()}}();var B=function(){var e=I().selectCategoryFeatureState,t=r.createSelector(e,(function(e){return e.category})),a=r.createSelector(t,(function(e){return e.categoryPageMetadata})),o=r.createSelector(a,(function(e){return e.current_page})),s=r.createSelector(a,(function(e){return e.total_pages})),c=r.createSelector(a,(function(e){return e.page_size})),n=r.createSelector(a,(function(e){return e.filters})),g=r.createSelector(a,(function(e){return e.sort_options.options})),l=r.createSelector(a,(function(e){return e.product_ids})),d=r.createSelector(l,(function(e){return!e.length})),y=r.createSelector(a,(function(e){return e.total_products})),f=r.createSelector(n,(function(e){return i.daffCategoryComputeAppliedFilters(e)})),u=r.createSelector(a,(function(e){return e.applied_sort_option})),p=r.createSelector(a,(function(e){return e.applied_sort_direction})),C=r.createSelector(t,(function(e){return e.daffState}));return{selectCategoryState:t,selectCategoryPageMetadata:a,selectCategoryCurrentPage:o,selectCategoryTotalPages:s,selectCategoryPageSize:c,selectCategoryFilters:n,selectCategorySortOptions:g,selectCategoryPageProductIds:l,selectIsCategoryPageEmpty:d,selectCategoryPageTotalProducts:y,selectCategoryPageAppliedFilters:f,selectCategoryPageAppliedSortOption:u,selectCategoryPageAppliedSortDirection:p,selectCategoryPageState:C,selectCurrentCategoryId:r.createSelector(a,(function(e){return e.id})),selectCategoryLoading:r.createSelector(t,(function(e){return e.categoryLoading})),selectCategoryProductsLoading:r.createSelector(t,(function(e){return e.productsLoading})),selectCategoryErrors:r.createSelector(t,(function(e){return e.errors})),selectIsCategoryPageMutating:r.createSelector(C,(function(e){return"Mutating"===e})),selectIsCategoryPageResolving:r.createSelector(C,(function(e){return"Resolving"===e}))}},G=function(){var e;return function(){return e=e||B()}}();var U=function(){var e=a.getDaffProductSelectors(),t=e.selectAllProducts,o=e.selectProductEntities,i=x().selectCategoryEntities,s=G(),c=s.selectCurrentCategoryId,n=s.selectCategoryPageProductIds,g=r.createSelector(i,c,(function(e,t){return e[t]})),l=r.createSelector(n,o,(function(e,t){return e.map((function(e){return t[e]})).filter((function(e){return null!=e}))})),d=r.defaultMemoize((function(e){return r.createSelector(i,(function(t){return t[e]}))})).memoized,y=r.defaultMemoize((function(e){return r.createSelector(d(e),t,(function(e,t){return(null==e?void 0:e.product_ids)?t.filter((function(t){return e.product_ids.indexOf(t.id)>=0})):[]}))})).memoized,f=r.defaultMemoize((function(e){return r.createSelector(y(e),(function(e){return e.length}))})).memoized;return Object.assign(Object.assign(Object.assign(Object.assign({},I()),x()),G()),{selectCurrentCategory:g,selectCategoryPageProducts:l,selectCategory:d,selectProductsByCategory:y,selectTotalProductsByCategory:f})},k=function(){var e;return function(){return e=e||U()}}(),K=function(){function e(e){this.store=e,this.categorySelectors=k(),this.category$=this.store.pipe(r.select(this.categorySelectors.selectCurrentCategory)),this.products$=this.store.pipe(r.select(this.categorySelectors.selectCategoryPageProducts)),this.totalProducts$=this.store.pipe(r.select(this.categorySelectors.selectCategoryPageTotalProducts)),this.metadata$=this.store.pipe(r.select(this.categorySelectors.selectCategoryPageMetadata)),this.pageLoadingState$=this.store.pipe(r.select(this.categorySelectors.selectCategoryPageState)),this.isPageMutating$=this.store.pipe(r.select(this.categorySelectors.selectIsCategoryPageMutating)),this.isPageResolving$=this.store.pipe(r.select(this.categorySelectors.selectIsCategoryPageResolving)),this.currentPage$=this.store.pipe(r.select(this.categorySelectors.selectCategoryCurrentPage)),this.totalPages$=this.store.pipe(r.select(this.categorySelectors.selectCategoryTotalPages)),this.pageSize$=this.store.pipe(r.select(this.categorySelectors.selectCategoryPageSize)),this.filters$=this.store.pipe(r.select(this.categorySelectors.selectCategoryFilters)),this.sortOptions$=this.store.pipe(r.select(this.categorySelectors.selectCategorySortOptions)),this.appliedFilters$=this.store.pipe(r.select(this.categorySelectors.selectCategoryPageAppliedFilters)),this.appliedSortOption$=this.store.pipe(r.select(this.categorySelectors.selectCategoryPageAppliedSortOption)),this.appliedSortDirection$=this.store.pipe(r.select(this.categorySelectors.selectCategoryPageAppliedSortDirection)),this.categoryLoading$=this.store.pipe(r.select(this.categorySelectors.selectCategoryLoading)),this.productsLoading$=this.store.pipe(r.select(this.categorySelectors.selectCategoryProductsLoading)),this.errors$=this.store.pipe(r.select(this.categorySelectors.selectCategoryErrors)),this.isCategoryEmpty$=this.store.pipe(r.select(this.categorySelectors.selectIsCategoryPageEmpty))}return e.prototype.getCategoryById=function(e){return this.store.pipe(r.select(this.categorySelectors.selectCategory(e)))},e.prototype.getProductsByCategory=function(e){return this.store.pipe(r.select(this.categorySelectors.selectProductsByCategory(e)))},e.prototype.getTotalProductsByCategory=function(e){return this.store.pipe(r.select(this.categorySelectors.selectTotalProductsByCategory(e)))},e.prototype.dispatch=function(e){this.store.dispatch(e)},e}();K.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],K.ctorParameters=function(){return[{type:r.Store}]},K.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new K(t.ɵɵinject(r.Store))},token:K,providedIn:"root"});function Y(e,t,r,a){var o,i=arguments.length,s=i<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,r):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,a);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(s=(i<3?o(s):i>3?o(t,r,s):o(t,r))||s);return i>3&&s&&Object.defineProperty(t,r,s),s}function H(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}Object.create;function N(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var a,o,i=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(a=i.next()).done;)s.push(a.value)}catch(e){o={error:e}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return s}Object.create;var J=function(e,t,r,o){var g=this;this.actions$=e,this.driver=t,this.errorMatcher=r,this.facade=o,this.updateFilters$=function(e,t){return void 0===e&&(e=300),void 0===t&&(t=c.asyncScheduler),g.actions$.pipe(s.ofType(b.CategoryPageChangeFiltersAction,b.CategoryPageReplaceFiltersAction,b.CategoryPageApplyFiltersAction,b.CategoryPageClearFiltersAction,b.CategoryPageRemoveFiltersAction,b.CategoryPageToggleFilterAction),n.withLatestFrom(g.facade.metadata$),n.map((function(e){var t=N(e,2),r=(t[0],t[1]);return{kind:i.DaffCategoryRequestKind.ID,id:r.id,filter_requests:i.daffCategoryFiltersToRequests(r.filters),applied_sort_option:r.applied_sort_option,applied_sort_direction:r.applied_sort_direction,current_page:r.current_page,page_size:r.page_size}})),n.throttleTime(e,t,{leading:!0,trailing:!0}),n.switchMap((function(e){return g.driver.get(e).pipe(n.switchMap((function(e){return[new a.DaffProductGridLoadSuccess(e.products),new u(e)]})),n.catchError((function(e){return c.of(new p(g.errorMatcher(e)))})))})))}};J.decorators=[{type:t.Injectable}],J.ctorParameters=function(){return[{type:s.Actions},{type:void 0,decorators:[{type:t.Inject,args:[g.DaffCategoryDriver]}]},{type:void 0,decorators:[{type:t.Inject,args:[i.DAFF_CATEGORY_ERROR_MATCHER]}]},{type:K}]},Y([s.Effect(),H("design:type",Function)],J.prototype,"updateFilters$",void 0);var Q=function(){function e(e,t,o,g){var l=this;this.actions$=e,this.driver=t,this.errorMatcher=o,this.store=g,this.categorySelectors=k(),this.loadCategoryPage$=this.actions$.pipe(s.ofType(d.CategoryPageLoadAction),n.switchMap((function(e){return l.processCategoryGetRequest(e.request)}))),this.loadCategoryPageByUrl$=this.actions$.pipe(s.ofType(d.CategoryPageLoadByUrlAction),n.switchMap((function(e){return l.driver.getByUrl(e.request).pipe(n.switchMap((function(e){return[new a.DaffProductGridLoadSuccess(e.products),new u(e)]})),n.catchError((function(e){return c.of(new p(l.errorMatcher(e)))})))}))),this.changeCategoryPageSize$=this.actions$.pipe(s.ofType(d.CategoryPageChangeSizeAction),n.withLatestFrom(this.store.pipe(r.select(this.categorySelectors.selectCategoryPageMetadata))),n.switchMap((function(e){var t=N(e,2),r=t[0],a=t[1];return l.processCategoryGetRequest(Object.assign(Object.assign({},a),{kind:i.DaffCategoryRequestKind.ID,filter_requests:i.daffCategoryFiltersToRequests(a.filters),page_size:r.pageSize}))}))),this.changeCategoryCurrentPage$=this.actions$.pipe(s.ofType(d.CategoryPageChangeCurrentPageAction),n.withLatestFrom(this.store.pipe(r.select(this.categorySelectors.selectCategoryPageMetadata))),n.switchMap((function(e){var t=N(e,2),r=t[0],a=t[1];return l.processCategoryGetRequest(Object.assign(Object.assign({},a),{kind:i.DaffCategoryRequestKind.ID,filter_requests:i.daffCategoryFiltersToRequests(a.filters),current_page:r.currentPage}))}))),this.changeCategorySort$=this.actions$.pipe(s.ofType(d.CategoryPageChangeSortingOptionAction),n.withLatestFrom(this.store.pipe(r.select(this.categorySelectors.selectCategoryPageMetadata))),n.switchMap((function(e){var t=N(e,2),r=t[0],a=t[1];return l.processCategoryGetRequest(Object.assign(Object.assign({},a),{kind:i.DaffCategoryRequestKind.ID,filter_requests:i.daffCategoryFiltersToRequests(a.filters),applied_sort_option:r.sort.option,applied_sort_direction:r.sort.direction}))})))}return e.prototype.processCategoryGetRequest=function(e){var t=this;return this.driver.get(e).pipe(n.switchMap((function(e){return[new a.DaffProductGridLoadSuccess(e.products),new u(e)]})),n.catchError((function(e){return c.of(new p(t.errorMatcher(e)))})))},e}();Q.decorators=[{type:t.Injectable}],Q.ctorParameters=function(){return[{type:s.Actions},{type:void 0,decorators:[{type:t.Inject,args:[g.DaffCategoryDriver]}]},{type:void 0,decorators:[{type:t.Inject,args:[i.DAFF_CATEGORY_ERROR_MATCHER]}]},{type:r.Store}]},Y([s.Effect(),H("design:type",c.Observable)],Q.prototype,"loadCategoryPage$",void 0),Y([s.Effect(),H("design:type",c.Observable)],Q.prototype,"loadCategoryPageByUrl$",void 0),Y([s.Effect(),H("design:type",c.Observable)],Q.prototype,"changeCategoryPageSize$",void 0),Y([s.Effect(),H("design:type",c.Observable)],Q.prototype,"changeCategoryCurrentPage$",void 0),Y([s.Effect(),H("design:type",c.Observable)],Q.prototype,"changeCategorySort$",void 0);var V=function(e,t,r){var o=this;this.actions$=e,this.driver=t,this.errorMatcher=r,this.loadCategory$=this.actions$.pipe(s.ofType(S.CategoryLoadAction),n.mergeMap((function(e){return o.driver.get(e.request).pipe(n.switchMap((function(e){return c.of(new a.DaffProductGridLoadSuccess(e.products),new v(e))})),n.catchError((function(e){return c.of(new O(o.errorMatcher(e)))})))})))};V.decorators=[{type:t.Injectable}],V.ctorParameters=function(){return[{type:s.Actions},{type:void 0,decorators:[{type:t.Inject,args:[g.DaffCategoryDriver]}]},{type:void 0,decorators:[{type:t.Inject,args:[i.DAFF_CATEGORY_ERROR_MATCHER]}]}]},Y([s.Effect(),H("design:type",c.Observable)],V.prototype,"loadCategory$",void 0);var W=function(){};W.decorators=[{type:t.NgModule,args:[{imports:[r.StoreModule.forFeature(q,E),s.EffectsModule.forFeature([V,Q,J]),a.DaffProductStateModule]}]}],e.DAFF_CATEGORY_STORE_FEATURE_KEY=q,e.DaffCategoryActionTypes=S,e.DaffCategoryFacade=K,e.DaffCategoryLoad=A,e.DaffCategoryLoadFailure=O,e.DaffCategoryLoadSuccess=v,e.DaffCategoryPageActionTypes=d,e.DaffCategoryPageApplyFilters=j,e.DaffCategoryPageChangeCurrentPage=h,e.DaffCategoryPageChangeFilters=M,e.DaffCategoryPageChangePageSize=C,e.DaffCategoryPageChangeSortingOption=P,e.DaffCategoryPageClearFilters=R,e.DaffCategoryPageFilterActionTypes=b,e.DaffCategoryPageLoad=y,e.DaffCategoryPageLoadByUrl=f,e.DaffCategoryPageLoadFailure=p,e.DaffCategoryPageLoadSuccess=u,e.DaffCategoryPageRemoveFilters=L,e.DaffCategoryPageReplaceFilters=F,e.DaffCategoryPageToggleFilter=D,e.DaffCategoryStateModule=W,e.daffCategoryEntitiesReducer=_,e.daffCategoryReducer=m,e.daffCategoryReducers=E,e.getDaffCategorySelectors=k,e.ɵa=V,e.ɵb=Q,e.ɵc=J,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@ngrx/store"),require("@daffodil/product/state"),require("@ngrx/entity"),require("@daffodil/category"),require("@ngrx/effects"),require("rxjs"),require("rxjs/operators"),require("@daffodil/category/driver")):"function"==typeof define&&define.amd?define("@daffodil/category/state",["exports","@angular/core","@ngrx/store","@daffodil/product/state","@ngrx/entity","@daffodil/category","@ngrx/effects","rxjs","rxjs/operators","@daffodil/category/driver"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).daffodil=e.daffodil||{},e.daffodil.category=e.daffodil.category||{},e.daffodil.category.state={}),e.ng.core,e.i1,e.state,e.entity,e.daffodil.category,e.effects,e.rxjs,e.rxjs.operators,e.daffodil.category.driver)}(this,(function(e,t,a,r,o,i,s,c,g,n){"use strict";function y(){return o.createEntityAdapter()}var f;(f=e.DaffCategoryPageActionTypes||(e.DaffCategoryPageActionTypes={})).CategoryPageLoadAction="[@daffodil/category] Category Page Load Action",f.CategoryPageLoadByUrlAction="[@daffodil/category] Category Page Load By URL Action",f.CategoryPageLoadSuccessAction="[@daffodil/category] Category Page Load Success Action",f.CategoryPageLoadFailureAction="[@daffodil/category] Category Page Load Failure Action",f.CategoryPageChangeSizeAction="[@daffodil/category] Category Page Change Size Action",f.CategoryPageChangeCurrentPageAction="[@daffodil/category] Category Page Change Current Page Action",f.CategoryPageChangeSortingOptionAction="[@daffodil/category] Category Page Change Sorting Option Action";var l,p=function(t){this.request=t,this.type=e.DaffCategoryPageActionTypes.CategoryPageLoadAction},d=function(t){this.request=t,this.type=e.DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction},u=function(t){this.response=t,this.type=e.DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction},C=function(t){this.errorMessage=t,this.type=e.DaffCategoryPageActionTypes.CategoryPageLoadFailureAction},P=function(t){this.pageSize=t,this.type=e.DaffCategoryPageActionTypes.CategoryPageChangeSizeAction},h=function(t){this.currentPage=t,this.type=e.DaffCategoryPageActionTypes.CategoryPageChangeCurrentPageAction},A=function(t){this.sort=t,this.type=e.DaffCategoryPageActionTypes.CategoryPageChangeSortingOptionAction};(l=e.DaffCategoryActionTypes||(e.DaffCategoryActionTypes={})).CategoryLoadAction="[Daff-Category] Category Load Action",l.CategoryLoadSuccessAction="[Daff-Category] Category Load Success Action",l.CategoryLoadFailureAction="[Daff-Category] Category Load Failure Action";var S,F=function(t){this.request=t,this.type=e.DaffCategoryActionTypes.CategoryLoadAction},D=function(t){this.response=t,this.type=e.DaffCategoryActionTypes.CategoryLoadSuccessAction},T=function(t){this.errorMessage=t,this.type=e.DaffCategoryActionTypes.CategoryLoadFailureAction};function O(t,a){switch(void 0===t&&(t=y().getInitialState()),a.type){case e.DaffCategoryActionTypes.CategoryLoadSuccessAction:case e.DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:return y().upsertOne(Object.assign({id:a.response.category.id},a.response.category),t);default:return t}}(S=e.DaffCategoryPageFilterActionTypes||(e.DaffCategoryPageFilterActionTypes={})).CategoryPageChangeFiltersAction="[@daffodil/category] Category Page Change Filters Action",S.CategoryPageReplaceFiltersAction="[@daffodil/category] Category Page Replace Filters Action",S.CategoryPageApplyFiltersAction="[@daffodil/category] Category Page Apply Filters Action",S.CategoryPageRemoveFiltersAction="[@daffodil/category] Category Page Remove Filters Action",S.CategoryPageClearFiltersAction="[@daffodil/category] Category Page Clear Filters Action",S.CategoryPageToggleFilterAction="[@daffodil/category] Category Page Toggle Filter Action";var _=function(t){this.filters=t,this.type=e.DaffCategoryPageFilterActionTypes.CategoryPageChangeFiltersAction},b=function(t){this.filters=t,this.type=e.DaffCategoryPageFilterActionTypes.CategoryPageReplaceFiltersAction},M=function(t){this.filters=t,this.type=e.DaffCategoryPageFilterActionTypes.CategoryPageApplyFiltersAction},v=function(t){this.filters=t,this.type=e.DaffCategoryPageFilterActionTypes.CategoryPageRemoveFiltersAction},j=function(){this.type=e.DaffCategoryPageFilterActionTypes.CategoryPageClearFiltersAction},L=function(t){this.filter=t,this.type=e.DaffCategoryPageFilterActionTypes.CategoryPageToggleFilterAction},R=["applied_sort_option","applied_sort_direction","current_page","page_size"],$={categoryPageMetadata:{id:null,applied_sort_option:null,applied_sort_direction:null,current_page:null,page_size:null,total_pages:null,filters:{},sort_options:{default:null,options:[]},total_products:null,product_ids:[]},daffState:"Stable",categoryLoading:!1,productsLoading:!1,errors:[]};function m(t,a){switch(void 0===t&&(t=$),a.type){case e.DaffCategoryPageActionTypes.CategoryPageLoadAction:case e.DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:return Object.assign(Object.assign({},t),{categoryLoading:!0,productsLoading:!0,daffState:"Resolving",categoryPageMetadata:Object.assign(Object.assign(Object.assign({},$.categoryPageMetadata),(r=a.request,R.reduce((function(e,t){return r[t]&&(e[t]=r[t]),e}),{}))),{id:null})});case e.DaffCategoryPageActionTypes.CategoryPageChangeSizeAction:return Object.assign(Object.assign({},t),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},t.categoryPageMetadata),{page_size:a.pageSize})});case e.DaffCategoryPageActionTypes.CategoryPageChangeCurrentPageAction:return Object.assign(Object.assign({},t),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},t.categoryPageMetadata),{current_page:a.currentPage})});case e.DaffCategoryPageActionTypes.CategoryPageChangeSortingOptionAction:return Object.assign(Object.assign({},t),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},t.categoryPageMetadata),{applied_sort_option:a.sort.option,applied_sort_direction:a.sort.direction})});case e.DaffCategoryPageFilterActionTypes.CategoryPageChangeFiltersAction:case e.DaffCategoryPageFilterActionTypes.CategoryPageReplaceFiltersAction:return Object.assign(Object.assign({},t),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},t.categoryPageMetadata),{filters:i.daffApplyRequestsToFilters(a.filters,i.daffClearFilters(t.categoryPageMetadata.filters))})});case e.DaffCategoryPageFilterActionTypes.CategoryPageApplyFiltersAction:return Object.assign(Object.assign({},t),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},t.categoryPageMetadata),{filters:i.daffApplyRequestsToFilters(a.filters,t.categoryPageMetadata.filters)})});case e.DaffCategoryPageFilterActionTypes.CategoryPageClearFiltersAction:return Object.assign(Object.assign({},t),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},t.categoryPageMetadata),{filters:i.daffClearFilters(t.categoryPageMetadata.filters)})});case e.DaffCategoryPageFilterActionTypes.CategoryPageRemoveFiltersAction:return Object.assign(Object.assign({},t),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},t.categoryPageMetadata),{filters:i.daffRemoveRequestsFromFilters(a.filters,t.categoryPageMetadata.filters)})});case e.DaffCategoryPageFilterActionTypes.CategoryPageToggleFilterAction:return Object.assign(Object.assign({},t),{productsLoading:!0,daffState:"Mutating",categoryPageMetadata:Object.assign(Object.assign({},t.categoryPageMetadata),{filters:i.daffToggleRequestOnFilters(a.filter,t.categoryPageMetadata.filters)})});case e.DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:return Object.assign(Object.assign({},t),{categoryLoading:!1,productsLoading:!1,daffState:"Stable",categoryPageMetadata:Object.assign(Object.assign({},t.categoryPageMetadata),{id:a.response.categoryPageMetadata.id,current_page:a.response.categoryPageMetadata.current_page,page_size:a.response.categoryPageMetadata.page_size,filters:a.response.categoryPageMetadata.filters,sort_options:a.response.categoryPageMetadata.sort_options,total_pages:a.response.categoryPageMetadata.total_pages,total_products:a.response.categoryPageMetadata.total_products,product_ids:a.response.categoryPageMetadata.product_ids,applied_sort_option:t.categoryPageMetadata.applied_sort_option||a.response.categoryPageMetadata.sort_options.default})});case e.DaffCategoryPageActionTypes.CategoryPageLoadFailureAction:return Object.assign(Object.assign({},t),{categoryLoading:!1,productsLoading:!1,errors:[a.errorMessage],daffState:"Stable"});default:return t}var r}var E,q={category:m,categoryEntities:O},w="daffCategory",I=function(){return E=E||{selectCategoryFeatureState:a.createFeatureSelector(w)}},z=function(){var e=y().getSelectors(),t=I().selectCategoryFeatureState,r=a.createSelector(t,(function(e){return e.categoryEntities}));return{selectCategoryEntitiesState:r,selectCategoryIds:a.createSelector(r,e.selectIds),selectCategoryEntities:a.createSelector(r,e.selectEntities),selectAllCategories:a.createSelector(r,e.selectAll),selectCategoryTotal:a.createSelector(r,e.selectTotal)}},x=function(){var e;return function(){return e=e||z()}}(),B=function(){var e=I().selectCategoryFeatureState,t=a.createSelector(e,(function(e){return e.category})),r=a.createSelector(t,(function(e){return e.categoryPageMetadata})),o=a.createSelector(r,(function(e){return e.current_page})),s=a.createSelector(r,(function(e){return e.total_pages})),c=a.createSelector(r,(function(e){return e.page_size})),g=a.createSelector(r,(function(e){return e.filters})),n=a.createSelector(r,(function(e){return e.sort_options.options})),y=a.createSelector(r,(function(e){return e.product_ids})),f=a.createSelector(y,(function(e){return!e.length})),l=a.createSelector(r,(function(e){return e.total_products})),p=a.createSelector(g,(function(e){return i.daffCategoryComputeAppliedFilters(e)})),d=a.createSelector(r,(function(e){return e.applied_sort_option})),u=a.createSelector(r,(function(e){return e.applied_sort_direction})),C=a.createSelector(t,(function(e){return e.daffState}));return{selectCategoryState:t,selectCategoryPageMetadata:r,selectCategoryCurrentPage:o,selectCategoryTotalPages:s,selectCategoryPageSize:c,selectCategoryFilters:g,selectCategorySortOptions:n,selectCategoryPageProductIds:y,selectIsCategoryPageEmpty:f,selectCategoryPageTotalProducts:l,selectCategoryPageAppliedFilters:p,selectCategoryPageAppliedSortOption:d,selectCategoryPageAppliedSortDirection:u,selectCategoryPageState:C,selectCurrentCategoryId:a.createSelector(r,(function(e){return e.id})),selectCategoryLoading:a.createSelector(t,(function(e){return e.categoryLoading})),selectCategoryProductsLoading:a.createSelector(t,(function(e){return e.productsLoading})),selectCategoryErrors:a.createSelector(t,(function(e){return e.errors})),selectIsCategoryPageMutating:a.createSelector(C,(function(e){return"Mutating"===e})),selectIsCategoryPageResolving:a.createSelector(C,(function(e){return"Resolving"===e}))}},G=function(){var e;return function(){return e=e||B()}}(),U=function(){var e=r.getDaffProductSelectors(),t=e.selectAllProducts,o=e.selectProductEntities,i=x().selectCategoryEntities,s=G(),c=s.selectCurrentCategoryId,g=s.selectCategoryPageProductIds,n=a.createSelector(i,c,(function(e,t){return e[t]})),y=a.createSelector(g,o,(function(e,t){return e.map((function(e){return t[e]})).filter((function(e){return null!=e}))})),f=a.defaultMemoize((function(e){return a.createSelector(i,(function(t){return t[e]}))})).memoized,l=a.defaultMemoize((function(e){return a.createSelector(f(e),t,(function(e,t){return(null==e?void 0:e.product_ids)?t.filter((function(t){return e.product_ids.indexOf(t.id)>=0})):[]}))})).memoized,p=a.defaultMemoize((function(e){return a.createSelector(l(e),(function(e){return e.length}))})).memoized;return Object.assign(Object.assign(Object.assign(Object.assign({},I()),x()),G()),{selectCurrentCategory:n,selectCategoryPageProducts:y,selectCategory:f,selectProductsByCategory:l,selectTotalProductsByCategory:p})},k=U,K=function(){var e;return function(){return e=e||U()}},Y=K(),H=function(){function e(e){this.store=e,this.categorySelectors=Y(),this.category$=this.store.pipe(a.select(this.categorySelectors.selectCurrentCategory)),this.products$=this.store.pipe(a.select(this.categorySelectors.selectCategoryPageProducts)),this.totalProducts$=this.store.pipe(a.select(this.categorySelectors.selectCategoryPageTotalProducts)),this.metadata$=this.store.pipe(a.select(this.categorySelectors.selectCategoryPageMetadata)),this.pageLoadingState$=this.store.pipe(a.select(this.categorySelectors.selectCategoryPageState)),this.isPageMutating$=this.store.pipe(a.select(this.categorySelectors.selectIsCategoryPageMutating)),this.isPageResolving$=this.store.pipe(a.select(this.categorySelectors.selectIsCategoryPageResolving)),this.currentPage$=this.store.pipe(a.select(this.categorySelectors.selectCategoryCurrentPage)),this.totalPages$=this.store.pipe(a.select(this.categorySelectors.selectCategoryTotalPages)),this.pageSize$=this.store.pipe(a.select(this.categorySelectors.selectCategoryPageSize)),this.filters$=this.store.pipe(a.select(this.categorySelectors.selectCategoryFilters)),this.sortOptions$=this.store.pipe(a.select(this.categorySelectors.selectCategorySortOptions)),this.appliedFilters$=this.store.pipe(a.select(this.categorySelectors.selectCategoryPageAppliedFilters)),this.appliedSortOption$=this.store.pipe(a.select(this.categorySelectors.selectCategoryPageAppliedSortOption)),this.appliedSortDirection$=this.store.pipe(a.select(this.categorySelectors.selectCategoryPageAppliedSortDirection)),this.categoryLoading$=this.store.pipe(a.select(this.categorySelectors.selectCategoryLoading)),this.productsLoading$=this.store.pipe(a.select(this.categorySelectors.selectCategoryProductsLoading)),this.errors$=this.store.pipe(a.select(this.categorySelectors.selectCategoryErrors)),this.isCategoryEmpty$=this.store.pipe(a.select(this.categorySelectors.selectIsCategoryPageEmpty))}return e.prototype.getCategoryById=function(e){return this.store.pipe(a.select(this.categorySelectors.selectCategory(e)))},e.prototype.getProductsByCategory=function(e){return this.store.pipe(a.select(this.categorySelectors.selectProductsByCategory(e)))},e.prototype.getTotalProductsByCategory=function(e){return this.store.pipe(a.select(this.categorySelectors.selectTotalProductsByCategory(e)))},e.prototype.dispatch=function(e){this.store.dispatch(e)},e}();H.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new H(t.ɵɵinject(a.Store))},token:H,providedIn:"root"}),H.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],H.ctorParameters=function(){return[{type:a.Store}]};function N(e,t,a,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,a):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,a,r);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(s=(i<3?o(s):i>3?o(t,a,s):o(t,a))||s);return i>3&&s&&Object.defineProperty(t,a,s),s}function J(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}Object.create;function Q(e,t){var a="function"==typeof Symbol&&e[Symbol.iterator];if(!a)return e;var r,o,i=a.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(a=i.return)&&a.call(i)}finally{if(o)throw o.error}}return s}Object.create;var V=function(t,a,o,n){var y=this;this.actions$=t,this.driver=a,this.errorMatcher=o,this.facade=n,this.updateFilters$=function(t,a){return void 0===t&&(t=300),void 0===a&&(a=c.asyncScheduler),y.actions$.pipe(s.ofType(e.DaffCategoryPageFilterActionTypes.CategoryPageChangeFiltersAction,e.DaffCategoryPageFilterActionTypes.CategoryPageReplaceFiltersAction,e.DaffCategoryPageFilterActionTypes.CategoryPageApplyFiltersAction,e.DaffCategoryPageFilterActionTypes.CategoryPageClearFiltersAction,e.DaffCategoryPageFilterActionTypes.CategoryPageRemoveFiltersAction,e.DaffCategoryPageFilterActionTypes.CategoryPageToggleFilterAction),g.withLatestFrom(y.facade.metadata$),g.map((function(e){var t=Q(e,2),a=(t[0],t[1]);return{kind:i.DaffCategoryRequestKind.ID,id:a.id,filter_requests:i.daffCategoryFiltersToRequests(a.filters),applied_sort_option:a.applied_sort_option,applied_sort_direction:a.applied_sort_direction,current_page:a.current_page,page_size:a.page_size}})),g.throttleTime(t,a,{leading:!0,trailing:!0}),g.switchMap((function(e){return y.driver.get(e).pipe(g.switchMap((function(e){return[new r.DaffProductGridLoadSuccess(e.products),new u(e)]})),g.catchError((function(e){return c.of(new C(y.errorMatcher(e)))})))})))}};V.decorators=[{type:t.Injectable}],V.ctorParameters=function(){return[{type:s.Actions},{type:void 0,decorators:[{type:t.Inject,args:[n.DaffCategoryDriver]}]},{type:void 0,decorators:[{type:t.Inject,args:[i.DAFF_CATEGORY_ERROR_MATCHER]}]},{type:H}]},N([s.Effect(),J("design:type",Function)],V.prototype,"updateFilters$",void 0);var W=function(){function t(t,o,n,y){var f=this;this.actions$=t,this.driver=o,this.errorMatcher=n,this.store=y,this.categorySelectors=Y(),this.loadCategoryPage$=this.actions$.pipe(s.ofType(e.DaffCategoryPageActionTypes.CategoryPageLoadAction),g.switchMap((function(e){return f.processCategoryGetRequest(e.request)}))),this.loadCategoryPageByUrl$=this.actions$.pipe(s.ofType(e.DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction),g.switchMap((function(e){return f.driver.getByUrl(e.request).pipe(g.switchMap((function(e){return[new r.DaffProductGridLoadSuccess(e.products),new u(e)]})),g.catchError((function(e){return c.of(new C(f.errorMatcher(e)))})))}))),this.changeCategoryPageSize$=this.actions$.pipe(s.ofType(e.DaffCategoryPageActionTypes.CategoryPageChangeSizeAction),g.withLatestFrom(this.store.pipe(a.select(this.categorySelectors.selectCategoryPageMetadata))),g.switchMap((function(e){var t=Q(e,2),a=t[0],r=t[1];return f.processCategoryGetRequest(Object.assign(Object.assign({},r),{kind:i.DaffCategoryRequestKind.ID,filter_requests:i.daffCategoryFiltersToRequests(r.filters),page_size:a.pageSize}))}))),this.changeCategoryCurrentPage$=this.actions$.pipe(s.ofType(e.DaffCategoryPageActionTypes.CategoryPageChangeCurrentPageAction),g.withLatestFrom(this.store.pipe(a.select(this.categorySelectors.selectCategoryPageMetadata))),g.switchMap((function(e){var t=Q(e,2),a=t[0],r=t[1];return f.processCategoryGetRequest(Object.assign(Object.assign({},r),{kind:i.DaffCategoryRequestKind.ID,filter_requests:i.daffCategoryFiltersToRequests(r.filters),current_page:a.currentPage}))}))),this.changeCategorySort$=this.actions$.pipe(s.ofType(e.DaffCategoryPageActionTypes.CategoryPageChangeSortingOptionAction),g.withLatestFrom(this.store.pipe(a.select(this.categorySelectors.selectCategoryPageMetadata))),g.switchMap((function(e){var t=Q(e,2),a=t[0],r=t[1];return f.processCategoryGetRequest(Object.assign(Object.assign({},r),{kind:i.DaffCategoryRequestKind.ID,filter_requests:i.daffCategoryFiltersToRequests(r.filters),applied_sort_option:a.sort.option,applied_sort_direction:a.sort.direction}))})))}return t.prototype.processCategoryGetRequest=function(e){var t=this;return this.driver.get(e).pipe(g.switchMap((function(e){return[new r.DaffProductGridLoadSuccess(e.products),new u(e)]})),g.catchError((function(e){return c.of(new C(t.errorMatcher(e)))})))},t}();W.decorators=[{type:t.Injectable}],W.ctorParameters=function(){return[{type:s.Actions},{type:void 0,decorators:[{type:t.Inject,args:[n.DaffCategoryDriver]}]},{type:void 0,decorators:[{type:t.Inject,args:[i.DAFF_CATEGORY_ERROR_MATCHER]}]},{type:a.Store}]},N([s.Effect(),J("design:type",c.Observable)],W.prototype,"loadCategoryPage$",void 0),N([s.Effect(),J("design:type",c.Observable)],W.prototype,"loadCategoryPageByUrl$",void 0),N([s.Effect(),J("design:type",c.Observable)],W.prototype,"changeCategoryPageSize$",void 0),N([s.Effect(),J("design:type",c.Observable)],W.prototype,"changeCategoryCurrentPage$",void 0),N([s.Effect(),J("design:type",c.Observable)],W.prototype,"changeCategorySort$",void 0);var X=function(t,a,o){var i=this;this.actions$=t,this.driver=a,this.errorMatcher=o,this.loadCategory$=this.actions$.pipe(s.ofType(e.DaffCategoryActionTypes.CategoryLoadAction),g.mergeMap((function(e){return i.driver.get(e.request).pipe(g.switchMap((function(e){return c.of(new r.DaffProductGridLoadSuccess(e.products),new D(e))})),g.catchError((function(e){return c.of(new T(i.errorMatcher(e)))})))})))};X.decorators=[{type:t.Injectable}],X.ctorParameters=function(){return[{type:s.Actions},{type:void 0,decorators:[{type:t.Inject,args:[n.DaffCategoryDriver]}]},{type:void 0,decorators:[{type:t.Inject,args:[i.DAFF_CATEGORY_ERROR_MATCHER]}]}]},N([s.Effect(),J("design:type",c.Observable)],X.prototype,"loadCategory$",void 0);var Z=function(){};Z.decorators=[{type:t.NgModule,args:[{imports:[a.StoreModule.forFeature(w,q),s.EffectsModule.forFeature([X,W,V]),r.DaffProductStateModule]}]}],e.DAFF_CATEGORY_STORE_FEATURE_KEY=w,e.DaffCategoryFacade=H,e.DaffCategoryLoad=F,e.DaffCategoryLoadFailure=T,e.DaffCategoryLoadSuccess=D,e.DaffCategoryPageApplyFilters=M,e.DaffCategoryPageChangeCurrentPage=h,e.DaffCategoryPageChangeFilters=_,e.DaffCategoryPageChangePageSize=P,e.DaffCategoryPageChangeSortingOption=A,e.DaffCategoryPageClearFilters=j,e.DaffCategoryPageLoad=p,e.DaffCategoryPageLoadByUrl=d,e.DaffCategoryPageLoadFailure=C,e.DaffCategoryPageLoadSuccess=u,e.DaffCategoryPageRemoveFilters=v,e.DaffCategoryPageReplaceFilters=b,e.DaffCategoryPageToggleFilter=L,e.DaffCategoryStateModule=Z,e.daffCategoryEntitiesReducer=O,e.daffCategoryReducer=m,e.daffCategoryReducers=q,e.getDaffCategorySelectors=Y,e.ɵ0=k,e.ɵ1=K,e.ɵa=X,e.ɵb=W,e.ɵc=V,Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=daffodil-category-state.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"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","../../../node_modules/tslib/tslib.es6.js","../../../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"],"names":["daffCategoryEntitiesAdapter","createEntityAdapter","DaffCategoryPageActionTypes","CategoryPageLoadAction","CategoryPageLoadByUrlAction","CategoryPageLoadSuccessAction","CategoryPageLoadFailureAction","CategoryPageChangeSizeAction","CategoryPageChangeCurrentPageAction","CategoryPageChangeSortingOptionAction","request","this","type","response","errorMessage","pageSize","currentPage","sort","DaffCategoryActionTypes","CategoryLoadAction","CategoryLoadSuccessAction","CategoryLoadFailureAction","daffCategoryEntitiesReducer","state","action","getInitialState","upsertOne","Object","assign","id","category","DaffCategoryPageFilterActionTypes","CategoryPageChangeFiltersAction","CategoryPageReplaceFiltersAction","CategoryPageApplyFiltersAction","CategoryPageRemoveFiltersAction","CategoryPageClearFiltersAction","CategoryPageToggleFilterAction","filters","filter","allowedMetadataKeys","initialState","categoryPageMetadata","applied_sort_option","applied_sort_direction","current_page","page_size","total_pages","sort_options","default","options","total_products","product_ids","daffState","categoryLoading","productsLoading","errors","daffCategoryReducer","reduce","acc","key","option","direction","daffApplyRequestsToFilters","daffClearFilters","daffRemoveRequestsFromFilters","daffToggleRequestOnFilters","daffCategoryReducers","categoryEntities","DAFF_CATEGORY_STORE_FEATURE_KEY","cache","getDaffCategoryFeatureSelector","selectCategoryFeatureState","createFeatureSelector","createCategoryFeatureSelectors","entitiesSelectors","getSelectors","categoryFeatureState","selectCategoryEntitiesState","createSelector","selectCategoryIds","selectIds","selectCategoryEntities","selectEntities","selectAllCategories","selectAll","selectCategoryTotal","selectTotal","getDaffCategoryEntitiesSelectors","createCategoryPageSelectors","selectCategoryState","selectCategoryPageMetadata","selectCategoryCurrentPage","selectCategoryTotalPages","selectCategoryPageSize","selectCategoryFilters","selectCategorySortOptions","selectCategoryPageProductIds","selectIsCategoryPageEmpty","length","selectCategoryPageTotalProducts","selectCategoryPageAppliedFilters","daffCategoryComputeAppliedFilters","selectCategoryPageAppliedSortOption","selectCategoryPageAppliedSortDirection","selectCategoryPageState","selectCurrentCategoryId","selectCategoryLoading","selectCategoryProductsLoading","selectCategoryErrors","selectIsCategoryPageMutating","selectIsCategoryPageResolving","getDaffCategoryPageSelectors","createCategorySelectors","_a","getDaffProductSelectors","selectAllProducts","selectProductEntities","_b","selectCurrentCategory","entities","currentCategoryId","selectCategoryPageProducts","ids","products","map","p","selectCategory","defaultMemoize","categoryId","memoized","selectProductsByCategory","product","indexOf","selectTotalProductsByCategory","getDaffCategorySelectors","DaffCategoryFacade","store","categorySelectors","category$","pipe","select","products$","totalProducts$","metadata$","pageLoadingState$","isPageMutating$","isPageResolving$","currentPage$","totalPages$","pageSize$","filters$","sortOptions$","appliedFilters$","appliedSortOption$","appliedSortDirection$","categoryLoading$","productsLoading$","errors$","isCategoryEmpty$","prototype","getCategoryById","getProductsByCategory","getTotalProductsByCategory","dispatch","Injectable","args","providedIn","Store","__decorate","decorators","target","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","create","__read","o","n","m","Symbol","iterator","e","call","ar","next","done","push","value","error","actions$","driver","errorMatcher","facade","_this","updateFilters$","throttleWindow","scheduler","rxjs","asyncScheduler","ofType","withLatestFrom","kind","DaffCategoryRequestKind","ID","filter_requests","daffCategoryFiltersToRequests","throttleTime","leading","trailing","switchMap","payload","get","resp","DaffProductGridLoadSuccess","DaffCategoryPageLoadSuccess","catchError","of","DaffCategoryPageLoadFailure","Actions","Inject","DaffCategoryDriver","DAFF_CATEGORY_ERROR_MATCHER","Effect","DaffCategoryPageEffects","loadCategoryPage$","processCategoryGetRequest","loadCategoryPageByUrl$","getByUrl","changeCategoryPageSize$","changeCategoryCurrentPage$","changeCategorySort$","Observable","loadCategory$","mergeMap","DaffCategoryLoadSuccess","DaffCategoryLoadFailure","NgModule","imports","StoreModule","forFeature","EffectsModule","DaffCategoryEffects","DaffCategoryPageFilterEffects","DaffProductStateModule"],"mappings":"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","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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\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"]}
1
+ {"version":3,"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/actions/category-page-filter.actions.ts","../../../libs/category/state/src/reducers/category-entities/category-entities.reducer.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/selectors/category-feature.selector.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-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","../../../node_modules/tslib/tslib.es6.js","../../../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"],"names":["daffCategoryEntitiesAdapter","createEntityAdapter","DaffCategoryPageActionTypes","DaffCategoryActionTypes","request","this","type","CategoryPageLoadAction","CategoryPageLoadByUrlAction","response","CategoryPageLoadSuccessAction","errorMessage","CategoryPageLoadFailureAction","pageSize","CategoryPageChangeSizeAction","currentPage","CategoryPageChangeCurrentPageAction","sort","CategoryPageChangeSortingOptionAction","DaffCategoryPageFilterActionTypes","CategoryLoadAction","CategoryLoadSuccessAction","CategoryLoadFailureAction","daffCategoryEntitiesReducer","state","action","getInitialState","upsertOne","Object","assign","id","category","filters","CategoryPageChangeFiltersAction","CategoryPageReplaceFiltersAction","CategoryPageApplyFiltersAction","CategoryPageRemoveFiltersAction","CategoryPageClearFiltersAction","filter","CategoryPageToggleFilterAction","allowedMetadataKeys","initialState","categoryPageMetadata","applied_sort_option","applied_sort_direction","current_page","page_size","total_pages","sort_options","default","options","total_products","product_ids","daffState","categoryLoading","productsLoading","errors","daffCategoryReducer","reduce","acc","key","option","direction","daffApplyRequestsToFilters","daffClearFilters","daffRemoveRequestsFromFilters","daffToggleRequestOnFilters","cache","daffCategoryReducers","categoryEntities","DAFF_CATEGORY_STORE_FEATURE_KEY","getDaffCategoryFeatureSelector","selectCategoryFeatureState","createFeatureSelector","createCategoryFeatureSelectors","entitiesSelectors","getSelectors","categoryFeatureState","selectCategoryEntitiesState","createSelector","selectCategoryIds","selectIds","selectCategoryEntities","selectEntities","selectAllCategories","selectAll","selectCategoryTotal","selectTotal","getDaffCategoryEntitiesSelectors","createCategoryPageSelectors","selectCategoryState","selectCategoryPageMetadata","selectCategoryCurrentPage","selectCategoryTotalPages","selectCategoryPageSize","selectCategoryFilters","selectCategorySortOptions","selectCategoryPageProductIds","selectIsCategoryPageEmpty","length","selectCategoryPageTotalProducts","selectCategoryPageAppliedFilters","daffCategoryComputeAppliedFilters","selectCategoryPageAppliedSortOption","selectCategoryPageAppliedSortDirection","selectCategoryPageState","selectCurrentCategoryId","selectCategoryLoading","selectCategoryProductsLoading","selectCategoryErrors","selectIsCategoryPageMutating","selectIsCategoryPageResolving","getDaffCategoryPageSelectors","createCategorySelectors","_a","getDaffProductSelectors","selectAllProducts","selectProductEntities","_b","selectCurrentCategory","entities","currentCategoryId","selectCategoryPageProducts","ids","products","map","p","selectCategory","defaultMemoize","categoryId","memoized","selectProductsByCategory","product","indexOf","selectTotalProductsByCategory","getDaffCategorySelectors","DaffCategoryFacade","store","categorySelectors","category$","pipe","select","products$","totalProducts$","metadata$","pageLoadingState$","isPageMutating$","isPageResolving$","currentPage$","totalPages$","pageSize$","filters$","sortOptions$","appliedFilters$","appliedSortOption$","appliedSortDirection$","categoryLoading$","productsLoading$","errors$","isCategoryEmpty$","prototype","getCategoryById","getProductsByCategory","getTotalProductsByCategory","dispatch","Injectable","args","providedIn","Store","__decorate","decorators","target","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__metadata","metadataKey","metadataValue","metadata","create","__read","o","n","m","Symbol","iterator","e","call","ar","next","done","push","value","error","actions$","driver","errorMatcher","facade","_this","updateFilters$","throttleWindow","scheduler","rxjs","asyncScheduler","ofType","withLatestFrom","kind","DaffCategoryRequestKind","ID","filter_requests","daffCategoryFiltersToRequests","throttleTime","leading","trailing","switchMap","payload","get","resp","DaffProductGridLoadSuccess","DaffCategoryPageLoadSuccess","catchError","of","DaffCategoryPageLoadFailure","Actions","Inject","DaffCategoryDriver","DAFF_CATEGORY_ERROR_MATCHER","Effect","DaffCategoryPageEffects","loadCategoryPage$","processCategoryGetRequest","loadCategoryPageByUrl$","getByUrl","changeCategoryPageSize$","changeCategoryCurrentPage$","changeCategorySort$","Observable","loadCategory$","mergeMap","DaffCategoryLoadSuccess","DaffCategoryLoadFailure","NgModule","imports","StoreModule","forFeature","EffectsModule","DaffCategoryEffects","DaffCategoryPageFilterEffects","DaffProductStateModule"],"mappings":"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","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 { 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 { 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 {\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 {\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 { 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 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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\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"]}