@daffodil/category 0.64.1 → 0.66.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.
- package/driver/in-memory/backend/category.service.d.ts +2 -1
- package/esm2020/driver/in-memory/backend/category.service.mjs +8 -21
- package/esm2020/public_api.mjs +1 -2
- package/esm2020/state/effects/category-page-filter.effects.mjs +3 -2
- package/esm2020/state/effects/category-page.effects.mjs +3 -2
- package/esm2020/state/effects/category.effects.mjs +2 -2
- package/esm2020/state/injection-tokens/error-matcher.token.mjs +8 -0
- package/esm2020/state/injection-tokens/public_api.mjs +2 -0
- package/esm2020/state/public_api.mjs +2 -1
- package/esm2020/state/testing/category-testing.module.mjs +6 -6
- package/esm2020/state/testing/public_api.mjs +2 -2
- package/esm2020/testing/factories/category-breadcrumb.factory.mjs +29 -0
- package/esm2020/testing/factories/category.factory.mjs +41 -18
- package/esm2020/testing/factories/public_api.mjs +4 -3
- package/fesm2015/daffodil-category-driver-in-memory.mjs +7 -20
- package/fesm2015/daffodil-category-driver-in-memory.mjs.map +1 -1
- package/fesm2015/daffodil-category-state-testing.mjs +6 -6
- package/fesm2015/daffodil-category-state-testing.mjs.map +1 -1
- package/fesm2015/daffodil-category-state.mjs +9 -3
- package/fesm2015/daffodil-category-state.mjs.map +1 -1
- package/fesm2015/daffodil-category-testing.mjs +52 -18
- package/fesm2015/daffodil-category-testing.mjs.map +1 -1
- package/fesm2015/daffodil-category.mjs +1 -10
- package/fesm2015/daffodil-category.mjs.map +1 -1
- package/fesm2020/daffodil-category-driver-in-memory.mjs +7 -20
- package/fesm2020/daffodil-category-driver-in-memory.mjs.map +1 -1
- package/fesm2020/daffodil-category-state-testing.mjs +6 -6
- package/fesm2020/daffodil-category-state-testing.mjs.map +1 -1
- package/fesm2020/daffodil-category-state.mjs +9 -3
- package/fesm2020/daffodil-category-state.mjs.map +1 -1
- package/fesm2020/daffodil-category-testing.mjs +64 -18
- package/fesm2020/daffodil-category-testing.mjs.map +1 -1
- package/fesm2020/daffodil-category.mjs +1 -10
- package/fesm2020/daffodil-category.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +0 -1
- package/state/public_api.d.ts +1 -0
- package/state/testing/category-testing.module.d.ts +4 -4
- package/state/testing/public_api.d.ts +1 -1
- package/testing/factories/category-breadcrumb.factory.d.ts +17 -0
- package/testing/factories/category.factory.d.ts +13 -8
- package/testing/factories/public_api.d.ts +3 -2
- package/esm2020/injection-tokens/error-matcher.token.mjs +0 -8
- package/esm2020/injection-tokens/public_api.mjs +0 -2
- /package/{injection-tokens → state/injection-tokens}/error-matcher.token.d.ts +0 -0
- /package/{injection-tokens → state/injection-tokens}/public_api.d.ts +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-category-driver-in-memory.mjs","sources":["../../../libs/category/driver/in-memory/src/drivers/category.service.ts","../../../libs/category/driver/in-memory/src/drivers/category-driver.module.ts","../../../libs/category/driver/in-memory/src/backend/category.service.ts","../../../libs/category/driver/in-memory/src/daffodil-category-driver-in-memory.ts"],"sourcesContent":["import {\n HttpClient,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport {\n DaffGetCategoryResponse,\n DaffCategoryIdRequest,\n DaffCategoryUrlRequest,\n} from '@daffodil/category';\nimport { DaffCategoryServiceInterface } from '@daffodil/category/driver';\nimport { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';\n\n/**\n * The category in memory driver for mocking the {@link DaffCategoryDriver} with in memory data.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffInMemoryCategoryService implements DaffCategoryServiceInterface {\n url = '/api/category/';\n\n constructor(private http: HttpClient) {}\n\n get(categoryRequest: DaffCategoryIdRequest): Observable<DaffGetCategoryResponse> {\n const params = new HttpParams()\n .set('pageSize', categoryRequest.pageSize ? categoryRequest.pageSize.toString() : null)\n .set('currentPage', categoryRequest.currentPage ? categoryRequest.currentPage.toString() : null);\n\n return this.http.get<DaffGetCategoryResponse>(this.url + categoryRequest.id, { params });\n }\n\n getByUrl(categoryRequest: DaffCategoryUrlRequest): Observable<DaffGetCategoryResponse> {\n const params = new HttpParams()\n .set('pageSize', categoryRequest.pageSize ? categoryRequest.pageSize.toString() : null)\n .set('currentPage', categoryRequest.currentPage ? categoryRequest.currentPage.toString() : null);\n\n return this.http.get<DaffGetCategoryResponse>(`${this.url}${daffUriTruncateLeadingSlash(categoryRequest.url)}`, { params });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { DaffCategoryDriver } from '@daffodil/category/driver';\n\nimport { DaffInMemoryCategoryService } from './category.service';\n\n/**\n * A module that provides the {@link DaffInMemoryCategoryService} for the {@link DaffCategoryDriver} token.\n */\n@NgModule({\n imports: [\n CommonModule,\n ],\n})\nexport class DaffCategoryInMemoryDriverModule {\n static forRoot(): ModuleWithProviders<DaffCategoryInMemoryDriverModule> {\n return {\n ngModule: DaffCategoryInMemoryDriverModule,\n providers: [\n {\n provide: DaffCategoryDriver,\n useExisting: DaffInMemoryCategoryService,\n },\n ],\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n InMemoryDbService,\n RequestInfoUtilities,\n ParsedRequestUrl,\n STATUS,\n} from 'angular-in-memory-web-api';\n\nimport {\n DaffCategory,\n DaffCategoryPageMetadata,\n} from '@daffodil/category';\nimport {\n DaffCategoryFactory,\n DaffCategoryPageMetadataFactory,\n} from '@daffodil/category/testing';\nimport { randomSubset } from '@daffodil/core';\nimport { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffInMemoryBackendProductService } from '@daffodil/product/driver/in-memory';\n\n/**\n * An in-memory service that mocks out the backend services for getting categories. See the angular in memory documentation for more details.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffInMemoryBackendCategoryService implements InMemoryDbService {\n protected _categories: DaffCategory[] = [];\n protected _categoryPageMetadata: DaffCategoryPageMetadata;\n\n /**\n * The collection of categories in the backend.\n */\n get categories(): DaffCategory[] {\n return this._categories;\n }\n\n /**\n * The metadata associated with the current page.\n */\n get categoryPageMetadata(): DaffCategoryPageMetadata {\n return this._categoryPageMetadata;\n }\n\n constructor(\n private categoryFactory: DaffCategoryFactory,\n private metadataFactory: DaffCategoryPageMetadataFactory,\n private productInMemoryBackendService: DaffInMemoryBackendProductService,\n ) {\n this._categories = [\n '1001',\n '1002',\n '1003',\n '1004',\n '1005',\n '1006',\n '1007',\n '1008',\n '1009',\n '1010',\n ].map(id => {\n const allCategoryProductIds = this.generateProductIdSubset(this.productInMemoryBackendService.products);\n\n return this.categoryFactory.create({ id, url: `/${id}`, product_ids: allCategoryProductIds, count: allCategoryProductIds.length });\n });\n }\n\n /**\n * @docs-private\n */\n parseRequestUrl(url: string, utils: RequestInfoUtilities): ParsedRequestUrl {\n return utils.parseRequestUrl(url);\n }\n\n /**\n * @docs-private\n */\n createDb(): any {\n return {\n categories: this.categories,\n };\n }\n\n /**\n * Get a category.\n *\n * @param reqInfo\n */\n get(reqInfo: any) {\n // this method is overloaded for both get by ID and URL so we check both\n const category = this.categories.filter(({ id, url }) => id === reqInfo.id || daffUriTruncateLeadingSlash(url) === reqInfo.id)[0];\n\n if (category) {\n this._categoryPageMetadata = this.metadataFactory.create({\n id: reqInfo.id,\n pageSize: this.generatePageSize(reqInfo),\n currentPage: this.getCurrentPageParam(reqInfo),\n totalPages: this.getTotalPages(category.product_ids, this.generatePageSize(reqInfo)),\n product_ids: this.trimProductIdsToSinglePage(category.product_ids, this.getCurrentPageParam(reqInfo), this.generatePageSize(reqInfo)),\n count: category.total_products,\n });\n\n return reqInfo.utils.createResponse$(() => ({\n body: {\n category,\n categoryPageMetadata: this._categoryPageMetadata,\n products: this.productInMemoryBackendService.products,\n },\n status: STATUS.OK,\n }));\n } else {\n this._categoryPageMetadata = null;\n return reqInfo.utils.createResponse$(() => ({\n body: {},\n status: STATUS.NOT_FOUND,\n }));\n }\n\n }\n\n protected getTotalPages(allIds: DaffProduct['id'][], pageSize: number) {\n return Math.ceil(allIds.length/pageSize);\n }\n\n protected trimProductIdsToSinglePage(allIds: any[], currentPage: number, pageSize: number) {\n const tempIds = [...allIds];\n tempIds.splice(0, (currentPage-1) * pageSize);\n tempIds.splice(pageSize, tempIds.length-pageSize);\n\n return tempIds;\n }\n\n protected generateProductIdSubset(products: DaffProduct[]): DaffProduct['id'][] {\n return randomSubset(products).map(product => product.id);\n }\n\n protected generatePageSize(reqInfo) {\n if(reqInfo.req.params.map && reqInfo.req.params.map.get('pageSize') && reqInfo.req.params.map.get('pageSize')[0]) {\n return parseInt(reqInfo.req.params.map.get('pageSize')[0], 10);\n }\n return 10;\n }\n\n protected getCurrentPageParam(reqInfo) {\n if(reqInfo.req.params.map && reqInfo.req.params.map.get('currentPage') && reqInfo.req.params.map.get('currentPage')[0]) {\n return parseInt(reqInfo.req.params.map.get('currentPage')[0], 10);\n }\n return 1;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"daffodil-category-driver-in-memory.mjs","sources":["../../../libs/category/driver/in-memory/src/drivers/category.service.ts","../../../libs/category/driver/in-memory/src/drivers/category-driver.module.ts","../../../libs/category/driver/in-memory/src/backend/category.service.ts","../../../libs/category/driver/in-memory/src/daffodil-category-driver-in-memory.ts"],"sourcesContent":["import {\n HttpClient,\n HttpParams,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport {\n DaffGetCategoryResponse,\n DaffCategoryIdRequest,\n DaffCategoryUrlRequest,\n} from '@daffodil/category';\nimport { DaffCategoryServiceInterface } from '@daffodil/category/driver';\nimport { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';\n\n/**\n * The category in memory driver for mocking the {@link DaffCategoryDriver} with in memory data.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffInMemoryCategoryService implements DaffCategoryServiceInterface {\n url = '/api/category/';\n\n constructor(private http: HttpClient) {}\n\n get(categoryRequest: DaffCategoryIdRequest): Observable<DaffGetCategoryResponse> {\n const params = new HttpParams()\n .set('pageSize', categoryRequest.pageSize ? categoryRequest.pageSize.toString() : null)\n .set('currentPage', categoryRequest.currentPage ? categoryRequest.currentPage.toString() : null);\n\n return this.http.get<DaffGetCategoryResponse>(this.url + categoryRequest.id, { params });\n }\n\n getByUrl(categoryRequest: DaffCategoryUrlRequest): Observable<DaffGetCategoryResponse> {\n const params = new HttpParams()\n .set('pageSize', categoryRequest.pageSize ? categoryRequest.pageSize.toString() : null)\n .set('currentPage', categoryRequest.currentPage ? categoryRequest.currentPage.toString() : null);\n\n return this.http.get<DaffGetCategoryResponse>(`${this.url}${daffUriTruncateLeadingSlash(categoryRequest.url)}`, { params });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n NgModule,\n ModuleWithProviders,\n} from '@angular/core';\n\nimport { DaffCategoryDriver } from '@daffodil/category/driver';\n\nimport { DaffInMemoryCategoryService } from './category.service';\n\n/**\n * A module that provides the {@link DaffInMemoryCategoryService} for the {@link DaffCategoryDriver} token.\n */\n@NgModule({\n imports: [\n CommonModule,\n ],\n})\nexport class DaffCategoryInMemoryDriverModule {\n static forRoot(): ModuleWithProviders<DaffCategoryInMemoryDriverModule> {\n return {\n ngModule: DaffCategoryInMemoryDriverModule,\n providers: [\n {\n provide: DaffCategoryDriver,\n useExisting: DaffInMemoryCategoryService,\n },\n ],\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker';\nimport {\n InMemoryDbService,\n RequestInfoUtilities,\n ParsedRequestUrl,\n STATUS,\n} from 'angular-in-memory-web-api';\n\nimport {\n DaffCategory,\n DaffCategoryPageMetadata,\n} from '@daffodil/category';\nimport {\n DaffCategoryFactory,\n DaffCategoryPageMetadataFactory,\n} from '@daffodil/category/testing';\nimport { collect } from '@daffodil/core';\nimport { daffUriTruncateLeadingSlash } from '@daffodil/core/routing';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffInMemoryBackendProductService } from '@daffodil/product/driver/in-memory';\n\n/**\n * An in-memory service that mocks out the backend services for getting categories. See the angular in memory documentation for more details.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffInMemoryBackendCategoryService implements InMemoryDbService {\n protected _root: DaffCategory;\n protected _categories: DaffCategory[] = [];\n protected _categoryPageMetadata: DaffCategoryPageMetadata;\n\n get rootCategory(): DaffCategory {\n return this._root;\n }\n\n /**\n * The collection of categories in the backend.\n */\n get categories(): DaffCategory[] {\n return this._categories;\n }\n\n /**\n * The metadata associated with the current page.\n */\n get categoryPageMetadata(): DaffCategoryPageMetadata {\n return this._categoryPageMetadata;\n }\n\n constructor(\n private categoryFactory: DaffCategoryFactory,\n private metadataFactory: DaffCategoryPageMetadataFactory,\n private productInMemoryBackendService: DaffInMemoryBackendProductService,\n ) {\n this._root = this.categoryFactory.createTree(\n 3,\n this.productInMemoryBackendService.products.map(({ id }) => id),\n );\n this._categories = collect(\n this._root,\n (category) => category?.children || [],\n );\n }\n\n /**\n * @docs-private\n */\n parseRequestUrl(url: string, utils: RequestInfoUtilities): ParsedRequestUrl {\n return utils.parseRequestUrl(url);\n }\n\n /**\n * @docs-private\n */\n createDb(): any {\n return {\n categories: this.categories,\n };\n }\n\n /**\n * Get a category.\n *\n * @param reqInfo\n */\n get(reqInfo: any) {\n // this method is overloaded for both get by ID and URL so we check both\n const category = this.categories.filter(({ id, url }) => id === reqInfo.id || daffUriTruncateLeadingSlash(url) === reqInfo.id)[0];\n\n if (category) {\n this._categoryPageMetadata = this.metadataFactory.create({\n id: reqInfo.id,\n pageSize: this.generatePageSize(reqInfo),\n currentPage: this.getCurrentPageParam(reqInfo),\n totalPages: this.getTotalPages(category.product_ids, this.generatePageSize(reqInfo)),\n ids: this.trimProductIdsToSinglePage(category.product_ids, this.getCurrentPageParam(reqInfo), this.generatePageSize(reqInfo)),\n count: category.total_products,\n });\n\n return reqInfo.utils.createResponse$(() => ({\n body: {\n category,\n categoryPageMetadata: this._categoryPageMetadata,\n products: this.productInMemoryBackendService.products,\n },\n status: STATUS.OK,\n }));\n } else {\n this._categoryPageMetadata = null;\n return reqInfo.utils.createResponse$(() => ({\n body: {},\n status: STATUS.NOT_FOUND,\n }));\n }\n\n }\n\n protected getTotalPages(allIds: DaffProduct['id'][], pageSize: number) {\n return Math.ceil(allIds.length/pageSize);\n }\n\n protected trimProductIdsToSinglePage(allIds: any[], currentPage: number, pageSize: number) {\n const tempIds = [...allIds];\n tempIds.splice(0, (currentPage-1) * pageSize);\n tempIds.splice(pageSize, tempIds.length-pageSize);\n\n return tempIds;\n }\n\n protected generatePageSize(reqInfo) {\n if(reqInfo.req.params.map && reqInfo.req.params.map.get('pageSize') && reqInfo.req.params.map.get('pageSize')[0]) {\n return parseInt(reqInfo.req.params.map.get('pageSize')[0], 10);\n }\n return 10;\n }\n\n protected getCurrentPageParam(reqInfo) {\n if(reqInfo.req.params.map && reqInfo.req.params.map.get('currentPage') && reqInfo.req.params.map.get('currentPage')[0]) {\n return parseInt(reqInfo.req.params.map.get('currentPage')[0], 10);\n }\n return 1;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
@@ -46,15 +46,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
46
46
|
/**
|
47
47
|
* A module that mocks out the {@link DaffCategoryFacade} with {@link MockDaffCategoryFacade} for testing environments.
|
48
48
|
*/
|
49
|
-
class
|
49
|
+
class DaffCategoryStateTestingModule {
|
50
50
|
}
|
51
|
-
/** @nocollapse */
|
52
|
-
/** @nocollapse */
|
53
|
-
/** @nocollapse */
|
51
|
+
/** @nocollapse */ DaffCategoryStateTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
52
|
+
/** @nocollapse */ DaffCategoryStateTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateTestingModule });
|
53
|
+
/** @nocollapse */ DaffCategoryStateTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateTestingModule, providers: [
|
54
54
|
{ provide: DaffCategoryFacade, useExisting: MockDaffCategoryFacade },
|
55
55
|
{ provide: DaffCategoryProductCollectionFacade, useExisting: MockDaffCollectionFacade },
|
56
56
|
] });
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type:
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCategoryStateTestingModule, decorators: [{
|
58
58
|
type: NgModule,
|
59
59
|
args: [{
|
60
60
|
providers: [
|
@@ -68,5 +68,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
68
68
|
* Generated bundle index. Do not edit.
|
69
69
|
*/
|
70
70
|
|
71
|
-
export {
|
71
|
+
export { DaffCategoryStateTestingModule, MockDaffCategoryFacade };
|
72
72
|
//# sourceMappingURL=daffodil-category-state-testing.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-category-state-testing.mjs","sources":["../../../libs/category/state/testing/src/mock-category-facade.ts","../../../libs/category/state/testing/src/category-testing.module.ts","../../../libs/category/state/testing/src/daffodil-category-state-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Action } from '@ngrx/store';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { DaffCategory } from '@daffodil/category';\nimport { DaffCategoryFacadeInterface } from '@daffodil/category/state';\nimport { DaffCategoryReducerState } from '@daffodil/category/state';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\n/**\n * Can be used to mock out the {@link DaffCategoryFacade} in testing environments.\n *\n * @inheritdoc\n */\n@Injectable({ providedIn: 'root' })\nexport class MockDaffCategoryFacade implements DaffCategoryFacadeInterface {\n category$: BehaviorSubject<DaffCategory> = new BehaviorSubject(null);\n loadingState$: BehaviorSubject<DaffCategoryReducerState['daffState']> = new BehaviorSubject(null);\n loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n mutating$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n resolving$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n hasErrors$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n products$: BehaviorSubject<DaffProduct[]> = new BehaviorSubject([]);\n errors$: BehaviorSubject<DaffStateError[]> = new BehaviorSubject([]);\n isCategoryEmpty$: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n getCategoryById(id: DaffCategory['id']): BehaviorSubject<DaffCategory> {\n\t return new BehaviorSubject(null);\n };\n\n getProductsByCategory(categoryId: DaffCategory['id']): BehaviorSubject<DaffProduct[]> {\n\t return new BehaviorSubject([]);\n };\n\n getTotalProductsByCategory(categoryId: DaffCategory['id']): BehaviorSubject<number> {\n\t return new BehaviorSubject(null);\n };\n\n dispatch(action: Action) {};\n}\n","import { NgModule } from '@angular/core';\n\nimport {\n DaffCategoryFacade,\n DaffCategoryProductCollectionFacade,\n} from '@daffodil/category/state';\nimport { MockDaffCollectionFacade } from '@daffodil/core/state/testing';\n\nimport { MockDaffCategoryFacade } from './mock-category-facade';\n\n/**\n * A module that mocks out the {@link DaffCategoryFacade} with {@link MockDaffCategoryFacade} for testing environments.\n */\n@NgModule({\n providers: [\n { provide: DaffCategoryFacade, useExisting: MockDaffCategoryFacade },\n { provide: DaffCategoryProductCollectionFacade, useExisting: MockDaffCollectionFacade },\n ],\n})\nexport class
|
1
|
+
{"version":3,"file":"daffodil-category-state-testing.mjs","sources":["../../../libs/category/state/testing/src/mock-category-facade.ts","../../../libs/category/state/testing/src/category-testing.module.ts","../../../libs/category/state/testing/src/daffodil-category-state-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Action } from '@ngrx/store';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { DaffCategory } from '@daffodil/category';\nimport { DaffCategoryFacadeInterface } from '@daffodil/category/state';\nimport { DaffCategoryReducerState } from '@daffodil/category/state';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\n/**\n * Can be used to mock out the {@link DaffCategoryFacade} in testing environments.\n *\n * @inheritdoc\n */\n@Injectable({ providedIn: 'root' })\nexport class MockDaffCategoryFacade implements DaffCategoryFacadeInterface {\n category$: BehaviorSubject<DaffCategory> = new BehaviorSubject(null);\n loadingState$: BehaviorSubject<DaffCategoryReducerState['daffState']> = new BehaviorSubject(null);\n loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n mutating$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n resolving$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n hasErrors$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n products$: BehaviorSubject<DaffProduct[]> = new BehaviorSubject([]);\n errors$: BehaviorSubject<DaffStateError[]> = new BehaviorSubject([]);\n isCategoryEmpty$: BehaviorSubject<boolean> = new BehaviorSubject(true);\n\n getCategoryById(id: DaffCategory['id']): BehaviorSubject<DaffCategory> {\n\t return new BehaviorSubject(null);\n };\n\n getProductsByCategory(categoryId: DaffCategory['id']): BehaviorSubject<DaffProduct[]> {\n\t return new BehaviorSubject([]);\n };\n\n getTotalProductsByCategory(categoryId: DaffCategory['id']): BehaviorSubject<number> {\n\t return new BehaviorSubject(null);\n };\n\n dispatch(action: Action) {};\n}\n","import { NgModule } from '@angular/core';\n\nimport {\n DaffCategoryFacade,\n DaffCategoryProductCollectionFacade,\n} from '@daffodil/category/state';\nimport { MockDaffCollectionFacade } from '@daffodil/core/state/testing';\n\nimport { MockDaffCategoryFacade } from './mock-category-facade';\n\n/**\n * A module that mocks out the {@link DaffCategoryFacade} with {@link MockDaffCategoryFacade} for testing environments.\n */\n@NgModule({\n providers: [\n { provide: DaffCategoryFacade, useExisting: MockDaffCategoryFacade },\n { provide: DaffCategoryProductCollectionFacade, useExisting: MockDaffCollectionFacade },\n ],\n})\nexport class DaffCategoryStateTestingModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAUA;;;;AAIG;MAEU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,SAAS,GAAkC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QACrE,IAAA,CAAA,aAAa,GAA2D,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAClG,IAAA,CAAA,QAAQ,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAChE,IAAA,CAAA,SAAS,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QACjE,IAAA,CAAA,UAAU,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAClE,IAAA,CAAA,UAAU,GAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAClE,IAAA,CAAA,SAAS,GAAmC,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QACpE,IAAA,CAAA,OAAO,GAAsC,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QACrE,IAAA,CAAA,gBAAgB,GAA6B,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;KAexE;AAbC,IAAA,eAAe,CAAC,EAAsB,EAAA;AACrC,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;KACjC;;AAED,IAAA,qBAAqB,CAAC,UAA8B,EAAA;AACnD,QAAA,OAAO,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;KAC/B;;AAED,IAAA,0BAA0B,CAAC,UAA8B,EAAA;AACxD,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;KACjC;;IAED,QAAQ,CAAC,MAAc,EAAA,GAAI;;;sIAvBhB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,mBAAA,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA,CAAA;2FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACLlC;;AAEG;MAOU,8BAA8B,CAAA;;8IAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+IAA9B,8BAA8B,EAAA,CAAA,CAAA;AAA9B,mBAAA,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,EAL9B,SAAA,EAAA;AACT,QAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,sBAAsB,EAAE;AACpE,QAAA,EAAE,OAAO,EAAE,mCAAmC,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACxF,KAAA,EAAA,CAAA,CAAA;2FAEU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,sBAAsB,EAAE;AACpE,wBAAA,EAAE,OAAO,EAAE,mCAAmC,EAAE,WAAW,EAAE,wBAAwB,EAAE;AACxF,qBAAA;iBACF,CAAA;;;AClBD;;AAEG;;;;"}
|
@@ -7,11 +7,11 @@ import { createFeatureSelector, createSelector, defaultMemoize, select, combineR
|
|
7
7
|
import { getDaffProductSelectors, DaffProductGridLoadSuccess, DaffProductStateModule, daffProductReducerInitialState, daffProductProvideExtraReducers } from '@daffodil/product/state';
|
8
8
|
import { of, asyncScheduler } from 'rxjs';
|
9
9
|
import { withLatestFrom, map, throttleTime, switchMap, catchError, mergeMap } from 'rxjs/operators';
|
10
|
-
import { DaffCategoryRequestKind
|
10
|
+
import { DaffCategoryRequestKind } from '@daffodil/category';
|
11
11
|
import { DaffCategoryDriver } from '@daffodil/category/driver';
|
12
12
|
import { daffToggleRequestOnFilters, daffRemoveRequestsFromFilters, daffClearFilters, daffApplyRequestsToFilters, daffFiltersToRequests } from '@daffodil/core';
|
13
|
+
import { daffTransformErrorToStateError, daffOperationInitialState, daffOperationFailed, daffCompleteOperation, daffStartMutation, daffStartResolution, daffCollectionReducerInitialState, getCollectionStateAdapter, daffOperationStateSelectorFactory, daffCollectionSelectorFactory, DaffCollectionFacade, daffComposeReducers, daffIdentityReducer } from '@daffodil/core/state';
|
13
14
|
import { createEntityAdapter } from '@ngrx/entity';
|
14
|
-
import { daffOperationInitialState, daffOperationFailed, daffCompleteOperation, daffStartMutation, daffStartResolution, daffCollectionReducerInitialState, getCollectionStateAdapter, daffOperationStateSelectorFactory, daffCollectionSelectorFactory, DaffCollectionFacade, daffComposeReducers, daffIdentityReducer } from '@daffodil/core/state';
|
15
15
|
|
16
16
|
/**
|
17
17
|
* The possible types of category page filter actions.
|
@@ -186,6 +186,12 @@ class DaffCategoryPageLoadFailure {
|
|
186
186
|
}
|
187
187
|
}
|
188
188
|
|
189
|
+
/**
|
190
|
+
* Transforms `DaffError`s into `DaffStateError`s before they are serialized into state.
|
191
|
+
* Can be used to further refine Daffodil errors into more specific app errors.
|
192
|
+
*/
|
193
|
+
const DAFF_CATEGORY_ERROR_MATCHER = new InjectionToken('DAFF_CATEGORY_ERROR_MATCHER', { factory: () => daffTransformErrorToStateError });
|
194
|
+
|
189
195
|
function daffCategoryEntitiesAdapter() {
|
190
196
|
return createEntityAdapter();
|
191
197
|
}
|
@@ -713,5 +719,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
713
719
|
* Generated bundle index. Do not edit.
|
714
720
|
*/
|
715
721
|
|
716
|
-
export { DAFF_CATEGORY_EXTRA_REDUCERS, DAFF_CATEGORY_STORE_FEATURE_KEY, DaffCategoryActionTypes, DaffCategoryFacade, DaffCategoryLoad, DaffCategoryLoadFailure, DaffCategoryLoadSuccess, DaffCategoryPageActionTypes, DaffCategoryPageApplyFilters, DaffCategoryPageChangeCurrentPage, DaffCategoryPageChangeFilters, DaffCategoryPageChangePageSize, DaffCategoryPageChangeSortingOption, DaffCategoryPageClearFilters, DaffCategoryPageLoad, DaffCategoryPageLoadByUrl, DaffCategoryPageLoadFailure, DaffCategoryPageLoadSuccess, DaffCategoryPageProductCollectionActionTypes, DaffCategoryPageRemoveFilters, DaffCategoryPageReplaceFilters, DaffCategoryPageToggleFilter, DaffCategoryProductCollectionFacade, DaffCategoryProductStateModule, DaffCategoryStateModule, daffCategoryEntitiesReducer, daffCategoryPageMetadataReducer, daffCategoryProvideExtraReducers, daffCategoryReducer, daffCategoryReducers, getDaffCategorySelectors };
|
722
|
+
export { DAFF_CATEGORY_ERROR_MATCHER, DAFF_CATEGORY_EXTRA_REDUCERS, DAFF_CATEGORY_STORE_FEATURE_KEY, DaffCategoryActionTypes, DaffCategoryFacade, DaffCategoryLoad, DaffCategoryLoadFailure, DaffCategoryLoadSuccess, DaffCategoryPageActionTypes, DaffCategoryPageApplyFilters, DaffCategoryPageChangeCurrentPage, DaffCategoryPageChangeFilters, DaffCategoryPageChangePageSize, DaffCategoryPageChangeSortingOption, DaffCategoryPageClearFilters, DaffCategoryPageLoad, DaffCategoryPageLoadByUrl, DaffCategoryPageLoadFailure, DaffCategoryPageLoadSuccess, DaffCategoryPageProductCollectionActionTypes, DaffCategoryPageRemoveFilters, DaffCategoryPageReplaceFilters, DaffCategoryPageToggleFilter, DaffCategoryProductCollectionFacade, DaffCategoryProductStateModule, DaffCategoryStateModule, daffCategoryEntitiesReducer, daffCategoryPageMetadataReducer, daffCategoryProvideExtraReducers, daffCategoryReducer, daffCategoryReducers, getDaffCategorySelectors };
|
717
723
|
//# sourceMappingURL=daffodil-category-state.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-category-state.mjs","sources":["../../../libs/category/state/src/actions/category-page-filter.actions.ts","../../../libs/category/state/src/actions/category-page.actions.ts","../../../libs/category/state/src/reducers/category-entities/category-entities-adapter.ts","../../../libs/category/state/src/reducers/category/category.reducer.ts","../../../libs/category/state/src/actions/category.actions.ts","../../../libs/category/state/src/reducers/category-entities/category-entities.reducer.ts","../../../libs/category/state/src/reducers/page-metadata/reducer.ts","../../../libs/category/state/src/reducers/category-reducers.ts","../../../libs/category/state/src/reducers/category-store-feature-key.ts","../../../libs/category/state/src/reducers/token/extra.token.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/collection/selectors.ts","../../../libs/category/state/src/selectors/category.selector.ts","../../../libs/category/state/src/facades/page/category.facade.ts","../../../libs/category/state/src/facades/collection/facade.ts","../../../libs/category/state/src/effects/category-page-filter.effects.ts","../../../libs/category/state/src/effects/category-page.effects.ts","../../../libs/category/state/src/effects/category.effects.ts","../../../libs/category/state/src/reducers/token/reducers.token.ts","../../../libs/category/state/src/category-state.module.ts","../../../libs/category/state/src/reducers/product.reducer.ts","../../../libs/category/state/src/reducers/product-reducers.ts","../../../libs/category/state/src/product-state.module.ts","../../../libs/category/state/src/daffodil-category-state.ts"],"sourcesContent":["import { Action } from '@ngrx/store';\n\nimport { DaffCategoryRequest } from '@daffodil/category';\nimport {\n DaffFilterRequest,\n DaffFilterToggleRequest,\n} from '@daffodil/core';\n\n/**\n * The possible types of category page filter actions.\n */\nexport enum DaffCategoryPageProductCollectionActionTypes {\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 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 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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction;\n\n constructor(public filters: DaffFilterRequest[]) { }\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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction;\n\n constructor(public filters: DaffFilterRequest[]) { }\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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction;\n\n constructor(public filters: DaffFilterRequest[]) { }\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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction;\n\n constructor(public filters: DaffFilterRequest[]) { }\n}\n\n/**\n * An action for removing all the filters for the current category.\n */\nexport class DaffCategoryPageClearFilters implements Action {\n readonly type = DaffCategoryPageProductCollectionActionTypes.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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction;\n\n constructor(public filter: DaffFilterToggleRequest) { }\n}\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 = DaffCategoryPageProductCollectionActionTypes.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 = DaffCategoryPageProductCollectionActionTypes.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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction;\n\n constructor(\n public sort: {\n option: DaffCategoryRequest['appliedSortOption'];\n direction: DaffCategoryRequest['appliedSortDirection'];\n },\n ) { }\n}\n\nexport type DaffCategoryPageProductCollectionActions =\n | DaffCategoryPageChangeFilters\n | DaffCategoryPageReplaceFilters\n | DaffCategoryPageApplyFilters\n | DaffCategoryPageRemoveFilters\n | DaffCategoryPageClearFilters\n | DaffCategoryPageToggleFilter\n | DaffCategoryPageChangePageSize\n | DaffCategoryPageChangeCurrentPage\n | DaffCategoryPageChangeSortingOption;\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}\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\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","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 { DaffGenericCategory } from '@daffodil/category';\nimport {\n daffCompleteOperation,\n daffOperationFailed,\n daffOperationInitialState,\n daffStartMutation,\n daffStartResolution,\n DaffState,\n} from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport { DaffCategoryReducerState } from './category-reducer-state.interface';\nimport {\n DaffCategoryPageProductCollectionActionTypes,\n DaffCategoryPageProductCollectionActions,\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';\n\nexport const daffCategoryInitialState: DaffCategoryReducerState = {\n ...daffOperationInitialState,\n id: null,\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 = daffCategoryInitialState,\n action: DaffCategoryActions<U, W> | DaffCategoryPageActions<U, W> | DaffCategoryPageProductCollectionActions,\n): DaffCategoryReducerState {\n switch (action.type) {\n case DaffCategoryPageActionTypes.CategoryPageLoadAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:\n return {\n ...daffStartResolution(state),\n id: null,\n };\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction:\n return daffStartMutation(state);\n\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n return {\n ...daffCompleteOperation(state),\n id: action.response.category.id,\n };\n\n case DaffCategoryPageActionTypes.CategoryPageLoadFailureAction:\n return daffOperationFailed([action.errorMessage], state);\n\n default:\n return state;\n }\n}\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 { daffCategoryEntitiesAdapter } from './category-entities-adapter';\nimport {\n DaffCategoryPageActionTypes,\n DaffCategoryPageActions,\n} from '../../actions/category-page.actions';\nimport {\n DaffCategoryActionTypes,\n DaffCategoryActions,\n} from '../../actions/category.actions';\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 { DaffGenericCategory } from '@daffodil/category';\nimport {\n daffApplyRequestsToFilters,\n daffClearFilters,\n daffRemoveRequestsFromFilters,\n daffToggleRequestOnFilters,\n} from '@daffodil/core';\nimport {\n daffCollectionReducerInitialState,\n getCollectionStateAdapter,\n} from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport { DaffCategoryPageMetadataReducerState } from './state.interface';\nimport {\n DaffCategoryPageProductCollectionActionTypes,\n DaffCategoryPageProductCollectionActions,\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';\n\nexport const daffCategoryPageMetadataInitialState: DaffCategoryPageMetadataReducerState = {\n ...daffCollectionReducerInitialState,\n id: null,\n};\n\n/**\n * Returns the state for category data except for category entities.\n */\nexport function daffCategoryPageMetadataReducer<U extends DaffGenericCategory<U>, W extends DaffProduct>(\n state = daffCategoryPageMetadataInitialState,\n action: DaffCategoryActions<U, W> | DaffCategoryPageActions<U, W> | DaffCategoryPageProductCollectionActions,\n): DaffCategoryPageMetadataReducerState {\n const adapter = getCollectionStateAdapter<DaffCategoryPageMetadataReducerState>();\n switch (action.type) {\n case DaffCategoryPageActionTypes.CategoryPageLoadAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:\n return {\n ...adapter.storeRequest(action.request, daffCategoryPageMetadataInitialState),\n id: null,\n };\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction:\n return adapter.setPageSize(action.pageSize, state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction:\n return adapter.setCurrentPage(action.currentPage, state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction:\n return adapter.setSort(action.sort.option, action.sort.direction, state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction:\n return adapter.setFilters(daffApplyRequestsToFilters(action.filters, daffClearFilters(state.filters)), state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction:\n return adapter.setFilters(daffApplyRequestsToFilters(action.filters, state.filters), state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction:\n return adapter.setFilters(daffClearFilters(state.filters), state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction:\n return adapter.setFilters(daffRemoveRequestsFromFilters(action.filters, state.filters), state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction:\n return adapter.setFilters(daffToggleRequestOnFilters(action.filter, state.filters), state);\n\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n return {\n ...adapter.setMetadata({\n currentPage: action.response.categoryPageMetadata.currentPage,\n pageSize: action.response.categoryPageMetadata.pageSize,\n filters: action.response.categoryPageMetadata.filters,\n sortOptions: action.response.categoryPageMetadata.sortOptions,\n totalPages: action.response.categoryPageMetadata.totalPages,\n count: action.response.categoryPageMetadata.count,\n ids: action.response.categoryPageMetadata.ids,\n appliedSortOption: action.response.categoryPageMetadata.appliedSortOption || action.response.categoryPageMetadata.sortOptions.default,\n appliedSortDirection: action.response.categoryPageMetadata.appliedSortDirection,\n }, state),\n id: action.response.categoryPageMetadata.id,\n };\n\n default:\n return state;\n }\n}\n","import { ActionReducerMap } from '@ngrx/store';\n\nimport { daffCategoryReducer } from './category/category.reducer';\nimport { daffCategoryEntitiesReducer } from './category-entities/category-entities.reducer';\nimport { DaffCategoryReducersState } from './category-reducers.interface';\nimport { daffCategoryPageMetadataReducer } from './page-metadata/reducer';\n\n/**\n * All daffodil defined category reducers.\n */\nexport const daffCategoryReducers: ActionReducerMap<DaffCategoryReducersState> = {\n category: daffCategoryReducer,\n categoryEntities: daffCategoryEntitiesReducer,\n pageMetadata: daffCategoryPageMetadataReducer,\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 InjectionToken,\n Provider,\n} from '@angular/core';\nimport { ActionReducer } from '@ngrx/store';\n\nimport { DaffCategoryReducersState } from '../category-reducers.interface';\n\n/**\n * A token to hold the injectable extra reducers.\n *\n * Prefer using {@link daffCategoryProvideExtraReducers}.\n */\nexport const DAFF_CATEGORY_EXTRA_REDUCERS = new InjectionToken<ActionReducer<DaffCategoryReducersState>[]>(\n 'DAFF_CATEGORY_EXTRA_REDUCERS',\n {\n factory: () => [],\n providedIn: 'any',\n },\n);\n\n/**\n * Provides additional reducers that run after the standard Daffodil category reducers.\n *\n * ```ts\n * providers: [\n * ...daffCategoryProvideExtraReducers(\n * myReducer1,\n * myReducer2\n * )\n * ]\n * ```\n */\nexport function daffCategoryProvideExtraReducers(\n ...reducers: ActionReducer<DaffCategoryReducersState>[]\n): Provider[] {\n return reducers.map(reducer => ({\n provide: DAFF_CATEGORY_EXTRA_REDUCERS,\n useValue: reducer,\n multi: true,\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 V extends DaffGenericCategory<V> = DaffCategory,\n> {\n selectCategoryFeatureState: 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 /**\n * Selects ngrx category entities state.\n */\n selectCategoryEntitiesState: MemoizedSelector<DaffCategoryStateRootSlice<V>, EntityState<V>>;\n /**\n * Selects the ids of all categories in state.\n */\n selectCategoryIds: MemoizedSelector<DaffCategoryStateRootSlice<V>, string[] | number[]>;\n /**\n * Selects all categories in state as a dictionary.\n */\n selectCategoryEntities: MemoizedSelector<DaffCategoryStateRootSlice<V>, Dictionary<V>>;\n /**\n * Selects all categories in state as an array.\n */\n selectAllCategories: MemoizedSelector<DaffCategoryStateRootSlice<V>, V[]>;\n /**\n * Selects the total number of categories in state.\n */\n selectCategoryTotal: 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 DaffCategoryPageMetadata,\n} from '@daffodil/category';\nimport {\n daffOperationStateSelectorFactory,\n DaffOperationStateSelectors,\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 V extends DaffGenericCategory<V> = DaffCategory\n> extends DaffOperationStateSelectors<DaffCategoryStateRootSlice<V>, DaffCategoryReducerState> {\n /**\n * Selects all state related to the category page metadata, category loading, and errors.\n */\n selectCategoryState: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryReducerState>;\n /**\n * Selects the ids of all products in the current category page.\n */\n selectCategoryPageProductIds: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['ids']>;\n /**\n * Selects whether the category page has no products.\n */\n selectIsCategoryPageEmpty: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n /**\n * Selects the id of the current category.\n */\n selectCurrentCategoryId: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['id']>;\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 selectCategoryFeatureState,\n (state: DaffCategoryReducersState<V>) => state.pageMetadata,\n );\n\n const selectCategoryPageProductIds = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.ids,\n );\n\n const selectIsCategoryPageEmpty = createSelector<DaffCategoryStateRootSlice<V>, [ V['product_ids']], boolean>(\n selectCategoryPageProductIds,\n (state: V['product_ids']) => !state.length,\n );\n\n const selectCurrentCategoryId = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.id,\n );\n\n\n return {\n ...daffOperationStateSelectorFactory(selectCategoryState),\n selectCategoryState,\n selectCategoryPageProductIds,\n selectIsCategoryPageEmpty,\n selectCurrentCategoryId,\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 { createSelector } from '@ngrx/store';\n\nimport { DaffCategoryPageMetadata } from '@daffodil/category';\nimport {\n DaffCollectionMemoizedSelectors,\n daffCollectionSelectorFactory,\n} from '@daffodil/core/state';\n\nimport { DaffCategoryStateRootSlice } from '../../reducers/public_api';\nimport { getDaffCategoryFeatureSelector } from '../category-feature.selector';\n\nexport type DaffCategoryPageProductCollectionSelectors = DaffCollectionMemoizedSelectors<DaffCategoryStateRootSlice, DaffCategoryPageMetadata>;\n\nconst {\n selectCategoryFeatureState,\n} = getDaffCategoryFeatureSelector();\n\nconst selectCategoryProductCollectionState = createSelector(\n selectCategoryFeatureState,\n state => state.pageMetadata,\n);\n\nexport const getCategoryProductCollectionSelectors = (() => {\n let cache;\n return (): DaffCategoryPageProductCollectionSelectors =>\n cache = cache || daffCollectionSelectorFactory<DaffCategoryStateRootSlice, DaffCategoryPageMetadata>(selectCategoryProductCollectionState);\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 { 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';\nimport {\n DaffCategoryPageProductCollectionSelectors,\n getCategoryProductCollectionSelectors,\n} from './collection/selectors';\nimport { DaffCategoryStateRootSlice } from '../reducers/public_api';\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 DaffCategoryPageProductCollectionSelectors,\n DaffCategoryEntitiesMemoizedSelectors<V> {\n /**\n * Selects the current category\n */\n selectCurrentCategory: MemoizedSelector<DaffCategoryStateRootSlice<V>, V>;\n /**\n * Selects the products of the current category.\n */\n selectCategoryPageProducts: MemoizedSelector<DaffCategoryStateRootSlice<V, W>, W[]>;\n /**\n * Selects a category by id.\n *\n * @param categoryId a category id.\n */\n selectCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V>, V>;\n /**\n * Selects products by category id.\n *\n * @param categoryId a category id.\n */\n selectProductsByCategory: (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 selectTotalProductsByCategory: (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<DaffCategoryStateRootSlice<V, W>, [Dictionary<V>, string], V>(\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 ...getCategoryProductCollectionSelectors(),\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} from '@daffodil/category';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport { DaffCategoryFacadeInterface } from './category-facade.interface';\nimport {\n DaffCategoryStateRootSlice,\n DaffCategoryReducerState,\n} from '../../reducers/public_api';\nimport { getDaffCategorySelectors } from '../../selectors/category.selector';\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 V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n> implements DaffCategoryFacadeInterface<V, W> {\n private categorySelectors = getDaffCategorySelectors<V,W>();\n\n category$: Observable<V>;\n loadingState$: Observable<DaffCategoryReducerState['daffState']>;\n loading$: Observable<boolean>;\n mutating$: Observable<boolean>;\n resolving$: Observable<boolean>;\n products$: Observable<W[]>;\n errors$: Observable<DaffStateError[]>;\n hasErrors$: Observable<boolean>;\n isCategoryEmpty$: Observable<boolean>;\n\n getCategoryById(id: V['id']): Observable<V> {\n\t return this.store.pipe(select(this.categorySelectors.selectCategory(id)));\n }\n\n getProductsByCategory(categoryId: V['id']): Observable<W[]> {\n\t return this.store.pipe(select(this.categorySelectors.selectProductsByCategory(categoryId)));\n }\n\n getTotalProductsByCategory(categoryId: V['id']): Observable<number> {\n\t return this.store.pipe(select(this.categorySelectors.selectTotalProductsByCategory(categoryId)));\n }\n\n constructor(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.loadingState$ = this.store.pipe(select(this.categorySelectors.selectLoadingState));\n\t this.loading$ = this.store.pipe(select(this.categorySelectors.selectLoading));\n\t this.mutating$ = this.store.pipe(select(this.categorySelectors.selectMutating));\n\t this.resolving$ = this.store.pipe(select(this.categorySelectors.selectResolving));\n\t this.errors$ = this.store.pipe(select(this.categorySelectors.selectErrors));\n\t this.hasErrors$ = this.store.pipe(select(this.categorySelectors.selectHasErrors));\n\t this.isCategoryEmpty$ = this.store.pipe(select(this.categorySelectors.selectIsCategoryPageEmpty));\n }\n\n /**\n * Dispatches the given action.\n *\n * @param action action to dispatch.\n */\n dispatch(action: Action) {\n\t this.store.dispatch(action);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\n\nimport {\n DaffCollectionFacade,\n DaffCollectionFacadeInterface,\n} from '@daffodil/core/state';\n\nimport { DaffCategoryStateRootSlice } from '../../reducers/public_api';\nimport { getCategoryProductCollectionSelectors } from '../../selectors/collection/selectors';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCategoryProductCollectionFacade extends DaffCollectionFacade<DaffCategoryStateRootSlice> implements DaffCollectionFacadeInterface {\n constructor(\n store: Store<DaffCategoryStateRootSlice>,\n ) {\n super(\n store,\n getCategoryProductCollectionSelectors(),\n );\n }\n}\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Actions,\n createEffect,\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 DaffCategoryRequestKind,\n DaffCategoryIdRequest,\n} from '@daffodil/category';\nimport { DaffCategoryPageMetadata } from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport {\n DaffError,\n daffFiltersToRequests,\n} from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageProductCollectionActionTypes,\n DaffCategoryPageProductCollectionActions,\n} from '../actions/category-page-filter.actions';\nimport {\n DaffCategoryPageLoadSuccess,\n DaffCategoryPageLoadFailure,\n} from '../actions/category-page.actions';\nimport { DaffCategoryProductCollectionFacade } from '../facades/public_api';\n\n@Injectable()\nexport class DaffCategoryPageFilterEffects<\n V extends DaffGenericCategory<V>,\n W extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V, W>,\n @Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n private facade: DaffCategoryProductCollectionFacade,\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\n updateFilters$: (throttleWindow: number, scheduler: AsyncScheduler) => Observable<\n DaffProductGridLoadSuccess\n | DaffCategoryPageLoadSuccess\n | DaffCategoryPageLoadFailure\n > = createEffect(() => (throttleWindow = 300, scheduler = asyncScheduler) => this.actions$.pipe(\n ofType(\n DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction,\n ),\n withLatestFrom(this.facade.metadata$),\n map((\n [action, metadata]: [DaffCategoryPageProductCollectionActions, DaffCategoryPageMetadata],\n ): DaffCategoryIdRequest => ({\n kind: DaffCategoryRequestKind.ID,\n id: metadata.id,\n filterRequests: daffFiltersToRequests(metadata.filters),\n appliedSortOption: metadata.appliedSortOption,\n appliedSortDirection: metadata.appliedSortDirection,\n currentPage: metadata.currentPage,\n pageSize: metadata.pageSize,\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 createEffect,\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} from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport {\n DaffError,\n daffFiltersToRequests,\n} from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageChangeCurrentPage,\n DaffCategoryPageChangePageSize,\n DaffCategoryPageChangeSortingOption,\n DaffCategoryPageProductCollectionActionTypes,\n} from '../actions/category-page-filter.actions';\nimport {\n DaffCategoryPageLoadSuccess,\n DaffCategoryPageLoad,\n DaffCategoryPageLoadFailure,\n DaffCategoryPageActionTypes,\n DaffCategoryPageLoadByUrl,\n} from '../actions/category-page.actions';\nimport { getDaffCategorySelectors } from '../selectors/category.selector';\n\n@Injectable()\nexport class DaffCategoryPageEffects<\n V extends DaffGenericCategory<V>,\n W extends DaffProduct\n> {\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V, W>,\n @Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n private store: Store<any>,\n ) {}\n\n private categorySelectors = getDaffCategorySelectors<V, W>();\n\n loadCategoryPage$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageLoadAction),\n switchMap((action: DaffCategoryPageLoad) => this.processCategoryGetRequest(action.request)),\n ));\n\n\n loadCategoryPageByUrl$: Observable<any> = createEffect(() => 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\n changeCategoryPageSize$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCollectionMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangePageSize, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filterRequests: daffFiltersToRequests(metadata.filters),\n pageSize: action.pageSize,\n })),\n ));\n\n\n changeCategoryCurrentPage$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCollectionMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangeCurrentPage, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filterRequests: daffFiltersToRequests(metadata.filters),\n currentPage: action.currentPage,\n })),\n ));\n\n\n changeCategorySort$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCollectionMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangeSortingOption, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filterRequests: daffFiltersToRequests(metadata.filters),\n appliedSortOption: action.sort.option,\n appliedSortDirection: 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 createEffect,\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 V extends DaffGenericCategory<V>,\n W extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V,W>,\n @Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n ) {}\n\n\n loadCategory$: Observable<any> = createEffect(() => 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 {\n inject,\n InjectionToken,\n} from '@angular/core';\nimport {\n ActionReducer,\n combineReducers,\n} from '@ngrx/store';\n\n// these unused imports are a workaround\nimport { DaffCategory } from '@daffodil/category';\nimport { daffComposeReducers } from '@daffodil/core/state';\n\nimport { DAFF_CATEGORY_EXTRA_REDUCERS } from './extra.token';\nimport { daffCategoryReducers } from '../category-reducers';\nimport { DaffCategoryReducersState } from '../category-reducers.interface';\n\n/**\n * An internal token to hold the Daffodil category reducers.\n * Includes the extra and standard reducers.\n *\n * @docs-private\n */\nexport const DAFF_CATEGORY_REDUCERS = new InjectionToken<ActionReducer<DaffCategoryReducersState>>(\n 'DAFF_CATEGORY_REDUCERS',\n {\n providedIn: 'any',\n factory: () => daffComposeReducers([\n combineReducers(daffCategoryReducers),\n ...inject(DAFF_CATEGORY_EXTRA_REDUCERS),\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 { DAFF_CATEGORY_STORE_FEATURE_KEY } from './reducers/public_api';\nimport { DAFF_CATEGORY_REDUCERS } from './reducers/token/reducers.token';\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, DAFF_CATEGORY_REDUCERS),\n EffectsModule.forFeature([DaffCategoryEffects, DaffCategoryPageEffects, DaffCategoryPageFilterEffects]),\n DaffProductStateModule,\n ],\n})\nexport class DaffCategoryStateModule {}\n","import { DaffGenericCategory } from '@daffodil/category';\nimport {\n daffCompleteOperation,\n daffStartMutation,\n daffStartResolution,\n} from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport {\n daffProductReducerInitialState,\n DaffProductReducerState,\n} from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageProductCollectionActionTypes,\n DaffCategoryPageProductCollectionActions,\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';\n\n/**\n * Modifies product state for category actions.\n */\nexport function daffCategoryProductReducer<U extends DaffGenericCategory<U>, W extends DaffProduct>(\n state: DaffProductReducerState = daffProductReducerInitialState,\n action: DaffCategoryActions<U, W> | DaffCategoryPageActions<U, W> | DaffCategoryPageProductCollectionActions,\n): DaffProductReducerState {\n switch (action.type) {\n case DaffCategoryPageActionTypes.CategoryPageLoadAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:\n return daffStartResolution(state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction:\n return daffStartMutation(state);\n\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadFailureAction:\n return daffCompleteOperation(state);\n\n default:\n return state;\n }\n}\n","import { ActionReducerMap } from '@ngrx/store';\n\nimport { daffIdentityReducer } from '@daffodil/core/state';\nimport { DaffProductReducersState } from '@daffodil/product/state';\n\nimport { daffCategoryProductReducer } from './product.reducer';\n\nexport const daffCategoryProductReducers: ActionReducerMap<DaffProductReducersState> = {\n product: daffCategoryProductReducer,\n productGrid: daffIdentityReducer,\n products: daffIdentityReducer,\n bestSellers: daffIdentityReducer,\n};\n","import { NgModule } from '@angular/core';\nimport { combineReducers } from '@ngrx/store';\n\nimport {\n daffProductProvideExtraReducers,\n DaffProductStateModule,\n} from '@daffodil/product/state';\n\nimport { daffCategoryProductReducers } from './reducers/product-reducers';\n\n/**\n * A module that provides injectable reducers into product state.\n */\n@NgModule({\n imports: [\n DaffProductStateModule,\n ],\n providers: [\n ...daffProductProvideExtraReducers(\n combineReducers(daffCategoryProductReducers),\n ),\n ],\n})\nexport class DaffCategoryProductStateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.DaffCategoryProductCollectionFacade","i2"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"daffodil-category-state.mjs","sources":["../../../libs/category/state/src/actions/category-page-filter.actions.ts","../../../libs/category/state/src/actions/category-page.actions.ts","../../../libs/category/state/src/injection-tokens/error-matcher.token.ts","../../../libs/category/state/src/reducers/category-entities/category-entities-adapter.ts","../../../libs/category/state/src/reducers/category/category.reducer.ts","../../../libs/category/state/src/actions/category.actions.ts","../../../libs/category/state/src/reducers/category-entities/category-entities.reducer.ts","../../../libs/category/state/src/reducers/page-metadata/reducer.ts","../../../libs/category/state/src/reducers/category-reducers.ts","../../../libs/category/state/src/reducers/category-store-feature-key.ts","../../../libs/category/state/src/reducers/token/extra.token.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/collection/selectors.ts","../../../libs/category/state/src/selectors/category.selector.ts","../../../libs/category/state/src/facades/page/category.facade.ts","../../../libs/category/state/src/facades/collection/facade.ts","../../../libs/category/state/src/effects/category-page-filter.effects.ts","../../../libs/category/state/src/effects/category-page.effects.ts","../../../libs/category/state/src/effects/category.effects.ts","../../../libs/category/state/src/reducers/token/reducers.token.ts","../../../libs/category/state/src/category-state.module.ts","../../../libs/category/state/src/reducers/product.reducer.ts","../../../libs/category/state/src/reducers/product-reducers.ts","../../../libs/category/state/src/product-state.module.ts","../../../libs/category/state/src/daffodil-category-state.ts"],"sourcesContent":["import { Action } from '@ngrx/store';\n\nimport { DaffCategoryRequest } from '@daffodil/category';\nimport {\n DaffFilterRequest,\n DaffFilterToggleRequest,\n} from '@daffodil/core';\n\n/**\n * The possible types of category page filter actions.\n */\nexport enum DaffCategoryPageProductCollectionActionTypes {\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 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 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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction;\n\n constructor(public filters: DaffFilterRequest[]) { }\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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction;\n\n constructor(public filters: DaffFilterRequest[]) { }\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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction;\n\n constructor(public filters: DaffFilterRequest[]) { }\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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction;\n\n constructor(public filters: DaffFilterRequest[]) { }\n}\n\n/**\n * An action for removing all the filters for the current category.\n */\nexport class DaffCategoryPageClearFilters implements Action {\n readonly type = DaffCategoryPageProductCollectionActionTypes.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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction;\n\n constructor(public filter: DaffFilterToggleRequest) { }\n}\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 = DaffCategoryPageProductCollectionActionTypes.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 = DaffCategoryPageProductCollectionActionTypes.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 = DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction;\n\n constructor(\n public sort: {\n option: DaffCategoryRequest['appliedSortOption'];\n direction: DaffCategoryRequest['appliedSortDirection'];\n },\n ) { }\n}\n\nexport type DaffCategoryPageProductCollectionActions =\n | DaffCategoryPageChangeFilters\n | DaffCategoryPageReplaceFilters\n | DaffCategoryPageApplyFilters\n | DaffCategoryPageRemoveFilters\n | DaffCategoryPageClearFilters\n | DaffCategoryPageToggleFilter\n | DaffCategoryPageChangePageSize\n | DaffCategoryPageChangeCurrentPage\n | DaffCategoryPageChangeSortingOption;\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}\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\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","import { InjectionToken } from '@angular/core';\n\nimport { daffTransformErrorToStateError } from '@daffodil/core/state';\n\n/**\n * Transforms `DaffError`s into `DaffStateError`s before they are serialized into state.\n * Can be used to further refine Daffodil errors into more specific app errors.\n */\nexport const DAFF_CATEGORY_ERROR_MATCHER = new InjectionToken<typeof daffTransformErrorToStateError>(\n 'DAFF_CATEGORY_ERROR_MATCHER',\n { factory: () => daffTransformErrorToStateError },\n);\n","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 { DaffGenericCategory } from '@daffodil/category';\nimport {\n daffCompleteOperation,\n daffOperationFailed,\n daffOperationInitialState,\n daffStartMutation,\n daffStartResolution,\n DaffState,\n} from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport { DaffCategoryReducerState } from './category-reducer-state.interface';\nimport {\n DaffCategoryPageProductCollectionActionTypes,\n DaffCategoryPageProductCollectionActions,\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';\n\nexport const daffCategoryInitialState: DaffCategoryReducerState = {\n ...daffOperationInitialState,\n id: null,\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 = daffCategoryInitialState,\n action: DaffCategoryActions<U, W> | DaffCategoryPageActions<U, W> | DaffCategoryPageProductCollectionActions,\n): DaffCategoryReducerState {\n switch (action.type) {\n case DaffCategoryPageActionTypes.CategoryPageLoadAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:\n return {\n ...daffStartResolution(state),\n id: null,\n };\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction:\n return daffStartMutation(state);\n\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n return {\n ...daffCompleteOperation(state),\n id: action.response.category.id,\n };\n\n case DaffCategoryPageActionTypes.CategoryPageLoadFailureAction:\n return daffOperationFailed([action.errorMessage], state);\n\n default:\n return state;\n }\n}\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 { daffCategoryEntitiesAdapter } from './category-entities-adapter';\nimport {\n DaffCategoryPageActionTypes,\n DaffCategoryPageActions,\n} from '../../actions/category-page.actions';\nimport {\n DaffCategoryActionTypes,\n DaffCategoryActions,\n} from '../../actions/category.actions';\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 { DaffGenericCategory } from '@daffodil/category';\nimport {\n daffApplyRequestsToFilters,\n daffClearFilters,\n daffRemoveRequestsFromFilters,\n daffToggleRequestOnFilters,\n} from '@daffodil/core';\nimport {\n daffCollectionReducerInitialState,\n getCollectionStateAdapter,\n} from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport { DaffCategoryPageMetadataReducerState } from './state.interface';\nimport {\n DaffCategoryPageProductCollectionActionTypes,\n DaffCategoryPageProductCollectionActions,\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';\n\nexport const daffCategoryPageMetadataInitialState: DaffCategoryPageMetadataReducerState = {\n ...daffCollectionReducerInitialState,\n id: null,\n};\n\n/**\n * Returns the state for category data except for category entities.\n */\nexport function daffCategoryPageMetadataReducer<U extends DaffGenericCategory<U>, W extends DaffProduct>(\n state = daffCategoryPageMetadataInitialState,\n action: DaffCategoryActions<U, W> | DaffCategoryPageActions<U, W> | DaffCategoryPageProductCollectionActions,\n): DaffCategoryPageMetadataReducerState {\n const adapter = getCollectionStateAdapter<DaffCategoryPageMetadataReducerState>();\n switch (action.type) {\n case DaffCategoryPageActionTypes.CategoryPageLoadAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:\n return {\n ...adapter.storeRequest(action.request, daffCategoryPageMetadataInitialState),\n id: null,\n };\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction:\n return adapter.setPageSize(action.pageSize, state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction:\n return adapter.setCurrentPage(action.currentPage, state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction:\n return adapter.setSort(action.sort.option, action.sort.direction, state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction:\n return adapter.setFilters(daffApplyRequestsToFilters(action.filters, daffClearFilters(state.filters)), state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction:\n return adapter.setFilters(daffApplyRequestsToFilters(action.filters, state.filters), state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction:\n return adapter.setFilters(daffClearFilters(state.filters), state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction:\n return adapter.setFilters(daffRemoveRequestsFromFilters(action.filters, state.filters), state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction:\n return adapter.setFilters(daffToggleRequestOnFilters(action.filter, state.filters), state);\n\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n return {\n ...adapter.setMetadata({\n currentPage: action.response.categoryPageMetadata.currentPage,\n pageSize: action.response.categoryPageMetadata.pageSize,\n filters: action.response.categoryPageMetadata.filters,\n sortOptions: action.response.categoryPageMetadata.sortOptions,\n totalPages: action.response.categoryPageMetadata.totalPages,\n count: action.response.categoryPageMetadata.count,\n ids: action.response.categoryPageMetadata.ids,\n appliedSortOption: action.response.categoryPageMetadata.appliedSortOption || action.response.categoryPageMetadata.sortOptions.default,\n appliedSortDirection: action.response.categoryPageMetadata.appliedSortDirection,\n }, state),\n id: action.response.categoryPageMetadata.id,\n };\n\n default:\n return state;\n }\n}\n","import { ActionReducerMap } from '@ngrx/store';\n\nimport { daffCategoryReducer } from './category/category.reducer';\nimport { daffCategoryEntitiesReducer } from './category-entities/category-entities.reducer';\nimport { DaffCategoryReducersState } from './category-reducers.interface';\nimport { daffCategoryPageMetadataReducer } from './page-metadata/reducer';\n\n/**\n * All daffodil defined category reducers.\n */\nexport const daffCategoryReducers: ActionReducerMap<DaffCategoryReducersState> = {\n category: daffCategoryReducer,\n categoryEntities: daffCategoryEntitiesReducer,\n pageMetadata: daffCategoryPageMetadataReducer,\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 InjectionToken,\n Provider,\n} from '@angular/core';\nimport { ActionReducer } from '@ngrx/store';\n\nimport { DaffCategoryReducersState } from '../category-reducers.interface';\n\n/**\n * A token to hold the injectable extra reducers.\n *\n * Prefer using {@link daffCategoryProvideExtraReducers}.\n */\nexport const DAFF_CATEGORY_EXTRA_REDUCERS = new InjectionToken<ActionReducer<DaffCategoryReducersState>[]>(\n 'DAFF_CATEGORY_EXTRA_REDUCERS',\n {\n factory: () => [],\n providedIn: 'any',\n },\n);\n\n/**\n * Provides additional reducers that run after the standard Daffodil category reducers.\n *\n * ```ts\n * providers: [\n * ...daffCategoryProvideExtraReducers(\n * myReducer1,\n * myReducer2\n * )\n * ]\n * ```\n */\nexport function daffCategoryProvideExtraReducers(\n ...reducers: ActionReducer<DaffCategoryReducersState>[]\n): Provider[] {\n return reducers.map(reducer => ({\n provide: DAFF_CATEGORY_EXTRA_REDUCERS,\n useValue: reducer,\n multi: true,\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 V extends DaffGenericCategory<V> = DaffCategory,\n> {\n selectCategoryFeatureState: 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 /**\n * Selects ngrx category entities state.\n */\n selectCategoryEntitiesState: MemoizedSelector<DaffCategoryStateRootSlice<V>, EntityState<V>>;\n /**\n * Selects the ids of all categories in state.\n */\n selectCategoryIds: MemoizedSelector<DaffCategoryStateRootSlice<V>, string[] | number[]>;\n /**\n * Selects all categories in state as a dictionary.\n */\n selectCategoryEntities: MemoizedSelector<DaffCategoryStateRootSlice<V>, Dictionary<V>>;\n /**\n * Selects all categories in state as an array.\n */\n selectAllCategories: MemoizedSelector<DaffCategoryStateRootSlice<V>, V[]>;\n /**\n * Selects the total number of categories in state.\n */\n selectCategoryTotal: 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 DaffCategoryPageMetadata,\n} from '@daffodil/category';\nimport {\n daffOperationStateSelectorFactory,\n DaffOperationStateSelectors,\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 V extends DaffGenericCategory<V> = DaffCategory\n> extends DaffOperationStateSelectors<DaffCategoryStateRootSlice<V>, DaffCategoryReducerState> {\n /**\n * Selects all state related to the category page metadata, category loading, and errors.\n */\n selectCategoryState: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryReducerState>;\n /**\n * Selects the ids of all products in the current category page.\n */\n selectCategoryPageProductIds: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['ids']>;\n /**\n * Selects whether the category page has no products.\n */\n selectIsCategoryPageEmpty: MemoizedSelector<DaffCategoryStateRootSlice<V>, boolean>;\n /**\n * Selects the id of the current category.\n */\n selectCurrentCategoryId: MemoizedSelector<DaffCategoryStateRootSlice<V>, DaffCategoryPageMetadata['id']>;\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 selectCategoryFeatureState,\n (state: DaffCategoryReducersState<V>) => state.pageMetadata,\n );\n\n const selectCategoryPageProductIds = createSelector(\n selectCategoryPageMetadata,\n (state: DaffCategoryPageMetadata) => state.ids,\n );\n\n const selectIsCategoryPageEmpty = createSelector<DaffCategoryStateRootSlice<V>, [ V['product_ids']], boolean>(\n selectCategoryPageProductIds,\n (state: V['product_ids']) => !state.length,\n );\n\n const selectCurrentCategoryId = createSelector(\n selectCategoryState,\n (state: DaffCategoryReducerState) => state.id,\n );\n\n\n return {\n ...daffOperationStateSelectorFactory(selectCategoryState),\n selectCategoryState,\n selectCategoryPageProductIds,\n selectIsCategoryPageEmpty,\n selectCurrentCategoryId,\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 { createSelector } from '@ngrx/store';\n\nimport { DaffCategoryPageMetadata } from '@daffodil/category';\nimport {\n DaffCollectionMemoizedSelectors,\n daffCollectionSelectorFactory,\n} from '@daffodil/core/state';\n\nimport { DaffCategoryStateRootSlice } from '../../reducers/public_api';\nimport { getDaffCategoryFeatureSelector } from '../category-feature.selector';\n\nexport type DaffCategoryPageProductCollectionSelectors = DaffCollectionMemoizedSelectors<DaffCategoryStateRootSlice, DaffCategoryPageMetadata>;\n\nconst {\n selectCategoryFeatureState,\n} = getDaffCategoryFeatureSelector();\n\nconst selectCategoryProductCollectionState = createSelector(\n selectCategoryFeatureState,\n state => state.pageMetadata,\n);\n\nexport const getCategoryProductCollectionSelectors = (() => {\n let cache;\n return (): DaffCategoryPageProductCollectionSelectors =>\n cache = cache || daffCollectionSelectorFactory<DaffCategoryStateRootSlice, DaffCategoryPageMetadata>(selectCategoryProductCollectionState);\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 { 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';\nimport {\n DaffCategoryPageProductCollectionSelectors,\n getCategoryProductCollectionSelectors,\n} from './collection/selectors';\nimport { DaffCategoryStateRootSlice } from '../reducers/public_api';\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 DaffCategoryPageProductCollectionSelectors,\n DaffCategoryEntitiesMemoizedSelectors<V> {\n /**\n * Selects the current category\n */\n selectCurrentCategory: MemoizedSelector<DaffCategoryStateRootSlice<V>, V>;\n /**\n * Selects the products of the current category.\n */\n selectCategoryPageProducts: MemoizedSelector<DaffCategoryStateRootSlice<V, W>, W[]>;\n /**\n * Selects a category by id.\n *\n * @param categoryId a category id.\n */\n selectCategory: (categoryId: V['id']) => MemoizedSelector<DaffCategoryStateRootSlice<V>, V>;\n /**\n * Selects products by category id.\n *\n * @param categoryId a category id.\n */\n selectProductsByCategory: (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 selectTotalProductsByCategory: (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<DaffCategoryStateRootSlice<V, W>, [Dictionary<V>, string], V>(\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 ...getCategoryProductCollectionSelectors(),\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} from '@daffodil/category';\nimport { DaffStateError } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\n\nimport { DaffCategoryFacadeInterface } from './category-facade.interface';\nimport {\n DaffCategoryStateRootSlice,\n DaffCategoryReducerState,\n} from '../../reducers/public_api';\nimport { getDaffCategorySelectors } from '../../selectors/category.selector';\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 V extends DaffGenericCategory<V> = DaffCategory,\n W extends DaffProduct = DaffProduct\n> implements DaffCategoryFacadeInterface<V, W> {\n private categorySelectors = getDaffCategorySelectors<V,W>();\n\n category$: Observable<V>;\n loadingState$: Observable<DaffCategoryReducerState['daffState']>;\n loading$: Observable<boolean>;\n mutating$: Observable<boolean>;\n resolving$: Observable<boolean>;\n products$: Observable<W[]>;\n errors$: Observable<DaffStateError[]>;\n hasErrors$: Observable<boolean>;\n isCategoryEmpty$: Observable<boolean>;\n\n getCategoryById(id: V['id']): Observable<V> {\n\t return this.store.pipe(select(this.categorySelectors.selectCategory(id)));\n }\n\n getProductsByCategory(categoryId: V['id']): Observable<W[]> {\n\t return this.store.pipe(select(this.categorySelectors.selectProductsByCategory(categoryId)));\n }\n\n getTotalProductsByCategory(categoryId: V['id']): Observable<number> {\n\t return this.store.pipe(select(this.categorySelectors.selectTotalProductsByCategory(categoryId)));\n }\n\n constructor(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.loadingState$ = this.store.pipe(select(this.categorySelectors.selectLoadingState));\n\t this.loading$ = this.store.pipe(select(this.categorySelectors.selectLoading));\n\t this.mutating$ = this.store.pipe(select(this.categorySelectors.selectMutating));\n\t this.resolving$ = this.store.pipe(select(this.categorySelectors.selectResolving));\n\t this.errors$ = this.store.pipe(select(this.categorySelectors.selectErrors));\n\t this.hasErrors$ = this.store.pipe(select(this.categorySelectors.selectHasErrors));\n\t this.isCategoryEmpty$ = this.store.pipe(select(this.categorySelectors.selectIsCategoryPageEmpty));\n }\n\n /**\n * Dispatches the given action.\n *\n * @param action action to dispatch.\n */\n dispatch(action: Action) {\n\t this.store.dispatch(action);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\n\nimport {\n DaffCollectionFacade,\n DaffCollectionFacadeInterface,\n} from '@daffodil/core/state';\n\nimport { DaffCategoryStateRootSlice } from '../../reducers/public_api';\nimport { getCategoryProductCollectionSelectors } from '../../selectors/collection/selectors';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCategoryProductCollectionFacade extends DaffCollectionFacade<DaffCategoryStateRootSlice> implements DaffCollectionFacadeInterface {\n constructor(\n store: Store<DaffCategoryStateRootSlice>,\n ) {\n super(\n store,\n getCategoryProductCollectionSelectors(),\n );\n }\n}\n","import {\n Injectable,\n Inject,\n} from '@angular/core';\nimport {\n Actions,\n createEffect,\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 DaffCategoryRequestKind,\n DaffCategoryIdRequest,\n} from '@daffodil/category';\nimport { DaffCategoryPageMetadata } from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport {\n DaffError,\n daffFiltersToRequests,\n} from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageProductCollectionActionTypes,\n DaffCategoryPageProductCollectionActions,\n} from '../actions/category-page-filter.actions';\nimport {\n DaffCategoryPageLoadSuccess,\n DaffCategoryPageLoadFailure,\n} from '../actions/category-page.actions';\nimport { DaffCategoryProductCollectionFacade } from '../facades/public_api';\nimport { DAFF_CATEGORY_ERROR_MATCHER } from '../injection-tokens/public_api';\n\n@Injectable()\nexport class DaffCategoryPageFilterEffects<\n V extends DaffGenericCategory<V>,\n W extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V, W>,\n @Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n private facade: DaffCategoryProductCollectionFacade,\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\n updateFilters$: (throttleWindow: number, scheduler: AsyncScheduler) => Observable<\n DaffProductGridLoadSuccess\n | DaffCategoryPageLoadSuccess\n | DaffCategoryPageLoadFailure\n > = createEffect(() => (throttleWindow = 300, scheduler = asyncScheduler) => this.actions$.pipe(\n ofType(\n DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction,\n DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction,\n ),\n withLatestFrom(this.facade.metadata$),\n map((\n [action, metadata]: [DaffCategoryPageProductCollectionActions, DaffCategoryPageMetadata],\n ): DaffCategoryIdRequest => ({\n kind: DaffCategoryRequestKind.ID,\n id: metadata.id,\n filterRequests: daffFiltersToRequests(metadata.filters),\n appliedSortOption: metadata.appliedSortOption,\n appliedSortDirection: metadata.appliedSortDirection,\n currentPage: metadata.currentPage,\n pageSize: metadata.pageSize,\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 createEffect,\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 DaffCategoryRequestKind,\n DaffCategoryIdRequest,\n DaffCategoryPageMetadata,\n} from '@daffodil/category';\nimport {\n DaffCategoryDriver,\n DaffCategoryServiceInterface,\n} from '@daffodil/category/driver';\nimport {\n DaffError,\n daffFiltersToRequests,\n} from '@daffodil/core';\nimport { ErrorTransformer } from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport { DaffProductGridLoadSuccess } from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageChangeCurrentPage,\n DaffCategoryPageChangePageSize,\n DaffCategoryPageChangeSortingOption,\n DaffCategoryPageProductCollectionActionTypes,\n} from '../actions/category-page-filter.actions';\nimport {\n DaffCategoryPageLoadSuccess,\n DaffCategoryPageLoad,\n DaffCategoryPageLoadFailure,\n DaffCategoryPageActionTypes,\n DaffCategoryPageLoadByUrl,\n} from '../actions/category-page.actions';\nimport { DAFF_CATEGORY_ERROR_MATCHER } from '../injection-tokens/public_api';\nimport { getDaffCategorySelectors } from '../selectors/category.selector';\n\n@Injectable()\nexport class DaffCategoryPageEffects<\n V extends DaffGenericCategory<V>,\n W extends DaffProduct\n> {\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V, W>,\n @Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n private store: Store<any>,\n ) {}\n\n private categorySelectors = getDaffCategorySelectors<V, W>();\n\n loadCategoryPage$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(DaffCategoryPageActionTypes.CategoryPageLoadAction),\n switchMap((action: DaffCategoryPageLoad) => this.processCategoryGetRequest(action.request)),\n ));\n\n\n loadCategoryPageByUrl$: Observable<any> = createEffect(() => 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\n changeCategoryPageSize$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCollectionMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangePageSize, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filterRequests: daffFiltersToRequests(metadata.filters),\n pageSize: action.pageSize,\n })),\n ));\n\n\n changeCategoryCurrentPage$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCollectionMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangeCurrentPage, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filterRequests: daffFiltersToRequests(metadata.filters),\n currentPage: action.currentPage,\n })),\n ));\n\n\n changeCategorySort$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction),\n withLatestFrom(\n this.store.pipe(select(this.categorySelectors.selectCollectionMetadata)),\n ),\n switchMap(([action, metadata]: [DaffCategoryPageChangeSortingOption, DaffCategoryPageMetadata]) => this.processCategoryGetRequest({\n ...metadata,\n kind: DaffCategoryRequestKind.ID,\n filterRequests: daffFiltersToRequests(metadata.filters),\n appliedSortOption: action.sort.option,\n appliedSortDirection: 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 createEffect,\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} 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';\nimport { DAFF_CATEGORY_ERROR_MATCHER } from '../injection-tokens/public_api';\n\n@Injectable()\nexport class DaffCategoryEffects<\n V extends DaffGenericCategory<V>,\n W extends DaffProduct\n> {\n\n constructor(\n private actions$: Actions,\n @Inject(DaffCategoryDriver) private driver: DaffCategoryServiceInterface<V,W>,\n @Inject(DAFF_CATEGORY_ERROR_MATCHER) private errorMatcher: ErrorTransformer,\n ) {}\n\n\n loadCategory$: Observable<any> = createEffect(() => 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 {\n inject,\n InjectionToken,\n} from '@angular/core';\nimport {\n ActionReducer,\n combineReducers,\n} from '@ngrx/store';\n\n// these unused imports are a workaround\nimport { DaffCategory } from '@daffodil/category';\nimport { daffComposeReducers } from '@daffodil/core/state';\n\nimport { DAFF_CATEGORY_EXTRA_REDUCERS } from './extra.token';\nimport { daffCategoryReducers } from '../category-reducers';\nimport { DaffCategoryReducersState } from '../category-reducers.interface';\n\n/**\n * An internal token to hold the Daffodil category reducers.\n * Includes the extra and standard reducers.\n *\n * @docs-private\n */\nexport const DAFF_CATEGORY_REDUCERS = new InjectionToken<ActionReducer<DaffCategoryReducersState>>(\n 'DAFF_CATEGORY_REDUCERS',\n {\n providedIn: 'any',\n factory: () => daffComposeReducers([\n combineReducers(daffCategoryReducers),\n ...inject(DAFF_CATEGORY_EXTRA_REDUCERS),\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 { DAFF_CATEGORY_STORE_FEATURE_KEY } from './reducers/public_api';\nimport { DAFF_CATEGORY_REDUCERS } from './reducers/token/reducers.token';\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, DAFF_CATEGORY_REDUCERS),\n EffectsModule.forFeature([DaffCategoryEffects, DaffCategoryPageEffects, DaffCategoryPageFilterEffects]),\n DaffProductStateModule,\n ],\n})\nexport class DaffCategoryStateModule {}\n","import { DaffGenericCategory } from '@daffodil/category';\nimport {\n daffCompleteOperation,\n daffStartMutation,\n daffStartResolution,\n} from '@daffodil/core/state';\nimport { DaffProduct } from '@daffodil/product';\nimport {\n daffProductReducerInitialState,\n DaffProductReducerState,\n} from '@daffodil/product/state';\n\nimport {\n DaffCategoryPageProductCollectionActionTypes,\n DaffCategoryPageProductCollectionActions,\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';\n\n/**\n * Modifies product state for category actions.\n */\nexport function daffCategoryProductReducer<U extends DaffGenericCategory<U>, W extends DaffProduct>(\n state: DaffProductReducerState = daffProductReducerInitialState,\n action: DaffCategoryActions<U, W> | DaffCategoryPageActions<U, W> | DaffCategoryPageProductCollectionActions,\n): DaffProductReducerState {\n switch (action.type) {\n case DaffCategoryPageActionTypes.CategoryPageLoadAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadByUrlAction:\n return daffStartResolution(state);\n\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSizeAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeCurrentPageAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeSortingOptionAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageChangeFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageReplaceFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageApplyFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageClearFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageRemoveFiltersAction:\n case DaffCategoryPageProductCollectionActionTypes.CategoryPageToggleFilterAction:\n return daffStartMutation(state);\n\n case DaffCategoryPageActionTypes.CategoryPageLoadSuccessAction:\n case DaffCategoryPageActionTypes.CategoryPageLoadFailureAction:\n return daffCompleteOperation(state);\n\n default:\n return state;\n }\n}\n","import { ActionReducerMap } from '@ngrx/store';\n\nimport { daffIdentityReducer } from '@daffodil/core/state';\nimport { DaffProductReducersState } from '@daffodil/product/state';\n\nimport { daffCategoryProductReducer } from './product.reducer';\n\nexport const daffCategoryProductReducers: ActionReducerMap<DaffProductReducersState> = {\n product: daffCategoryProductReducer,\n productGrid: daffIdentityReducer,\n products: daffIdentityReducer,\n bestSellers: daffIdentityReducer,\n};\n","import { NgModule } from '@angular/core';\nimport { combineReducers } from '@ngrx/store';\n\nimport {\n daffProductProvideExtraReducers,\n DaffProductStateModule,\n} from '@daffodil/product/state';\n\nimport { daffCategoryProductReducers } from './reducers/product-reducers';\n\n/**\n * A module that provides injectable reducers into product state.\n */\n@NgModule({\n imports: [\n DaffProductStateModule,\n ],\n providers: [\n ...daffProductProvideExtraReducers(\n combineReducers(daffCategoryProductReducers),\n ),\n ],\n})\nexport class DaffCategoryProductStateModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.DaffCategoryProductCollectionFacade","i2"],"mappings":"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"}
|