@daffodil/category 0.39.13 → 0.42.0

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