UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

74 lines 14 kB
import { Injectable } from '@angular/core'; import { createFrom, } from '@spartacus/core'; import { EMPTY } from 'rxjs'; import { filter, map, skip, switchMap, take } from 'rxjs/operators'; import { NavigationEvent } from '../navigation/navigation.event'; import { CategoryPageResultsEvent, ProductDetailsPageEvent, SearchPageResultsEvent, } from './product-page.events'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/core"; export class ProductPageEventBuilder { constructor(eventService, productService, productSearchService) { this.eventService = eventService; this.productService = productService; this.productSearchService = productSearchService; this.register(); } register() { this.eventService.register(SearchPageResultsEvent, this.buildSearchPageResultsEvent()); this.eventService.register(ProductDetailsPageEvent, this.buildProductDetailsPageEvent()); this.eventService.register(CategoryPageResultsEvent, this.buildCategoryResultsPageEvent()); } buildProductDetailsPageEvent() { return this.eventService.get(NavigationEvent).pipe(filter((navigationEvent) => navigationEvent.semanticRoute === 'product'), switchMap((navigationEvent) => this.productService.get(navigationEvent.context.id).pipe(filter((product) => Boolean(product)), take(1), map((product) => createFrom(ProductDetailsPageEvent, { navigation: navigationEvent, categories: product.categories, code: product.code, name: product.name, price: product.price, }))))); } buildCategoryResultsPageEvent() { const searchResults$ = this.productSearchService.getResults().pipe( // skipping the initial value, and preventing emission of the previous search state skip(1)); return this.eventService.get(NavigationEvent).pipe(switchMap((navigationEvent) => { if ((navigationEvent === null || navigationEvent === void 0 ? void 0 : navigationEvent.semanticRoute) !== 'category') { return EMPTY; } return searchResults$.pipe(map((searchResults) => { var _a, _b, _c, _d; return createFrom(CategoryPageResultsEvent, Object.assign({ navigation: navigationEvent }, { categoryCode: (_a = navigationEvent === null || navigationEvent === void 0 ? void 0 : navigationEvent.context) === null || _a === void 0 ? void 0 : _a.id, numberOfResults: (_c = (_b = searchResults === null || searchResults === void 0 ? void 0 : searchResults.pagination) === null || _b === void 0 ? void 0 : _b.totalResults) !== null && _c !== void 0 ? _c : 0, categoryName: (_d = searchResults.breadcrumbs) === null || _d === void 0 ? void 0 : _d[0].facetValueName, })); })); })); } buildSearchPageResultsEvent() { const searchResults$ = this.productSearchService.getResults().pipe( // skipping the initial value, and preventing emission of the previous search state skip(1)); return this.eventService.get(NavigationEvent).pipe(switchMap((navigationEvent) => { if ((navigationEvent === null || navigationEvent === void 0 ? void 0 : navigationEvent.semanticRoute) !== 'search') { return EMPTY; } return searchResults$.pipe(map((searchResults) => { var _a, _b, _c; return createFrom(SearchPageResultsEvent, Object.assign({ navigation: navigationEvent }, { searchTerm: (_a = searchResults === null || searchResults === void 0 ? void 0 : searchResults.freeTextSearch) !== null && _a !== void 0 ? _a : '', numberOfResults: (_c = (_b = searchResults === null || searchResults === void 0 ? void 0 : searchResults.pagination) === null || _b === void 0 ? void 0 : _b.totalResults) !== null && _c !== void 0 ? _c : 0, })); })); })); } } ProductPageEventBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ProductPageEventBuilder, deps: [{ token: i1.EventService }, { token: i1.ProductService }, { token: i1.ProductSearchService }], target: i0.ɵɵFactoryTarget.Injectable }); ProductPageEventBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ProductPageEventBuilder, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ProductPageEventBuilder, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.EventService }, { type: i1.ProductService }, { type: i1.ProductSearchService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1wYWdlLWV2ZW50LmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL2V2ZW50cy9wcm9kdWN0L3Byb2R1Y3QtcGFnZS1ldmVudC5idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLFVBQVUsR0FJWCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEdBQ3ZCLE1BQU0sdUJBQXVCLENBQUM7OztBQUsvQixNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLFlBQ1ksWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsb0JBQTBDO1FBRjFDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBRXBELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRVMsUUFBUTtRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDeEIsc0JBQXNCLEVBQ3RCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUNuQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQ3hCLHVCQUF1QixFQUN2QixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FDcEMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZ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QixVQUFVLEVBQUUsZUFBZSxJQUN4QjtvQkFDRCxVQUFVLEVBQUUsTUFBQSxhQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsY0FBYyxtQ0FBSSxFQUFFO29CQUMvQyxlQUFlLEVBQUUsTUFBQSxNQUFBLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxVQUFVLDBDQUFFLFlBQVksbUNBQUksQ0FBQztpQkFDOUQsRUFDRCxDQUFBO2FBQUEsQ0FDSCxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7b0hBbEdVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCLGNBRnRCLE1BQU07MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGNyZWF0ZUZyb20sXG4gIEV2ZW50U2VydmljZSxcbiAgUHJvZHVjdFNlYXJjaFNlcnZpY2UsXG4gIFByb2R1Y3RTZXJ2aWNlLFxufSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBza2lwLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXZlbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uL25hdmlnYXRpb24uZXZlbnQnO1xuaW1wb3J0IHtcbiAgQ2F0ZWdvcnlQYWdlUmVzdWx0c0V2ZW50LFxuICBQcm9kdWN0RGV0YWlsc1BhZ2VFdmVudCxcbiAgU2VhcmNoUGFnZVJlc3VsdHNFdmVudCxcbn0gZnJvbSAnLi9wcm9kdWN0LXBhZ2UuZXZlbnRzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RQYWdlRXZlbnRCdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBwcm9kdWN0U2VydmljZTogUHJvZHVjdFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHByb2R1Y3RTZWFyY2hTZXJ2aWNlOiBQcm9kdWN0U2VhcmNoU2VydmljZVxuICApIHtcbiAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVnaXN0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UucmVnaXN0ZXIoXG4gICAgICBTZWFyY2hQYWdlUmVzdWx0c0V2ZW50LFxuICAgICAgdGhpcy5idWlsZFNlYXJjaFBhZ2VSZXN1bHRzRXZlbnQoKVxuICAgICk7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UucmVnaXN0ZXIoXG4gICAgICBQcm9kdWN0RGV0YWlsc1BhZ2VFdmVudCxcbiAgICAgIHRoaXMuYnVpbGRQcm9kdWN0RGV0YWlsc1BhZ2VFdmVudCgpXG4gICAgKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5yZWdpc3RlcihcbiAgICAgIENhdGVnb3J5UGFnZVJlc3VsdHNFdmVudCxcbiAgICAgIHRoaXMuYnVpbGRDYXRlZ29yeVJlc3VsdHNQYWdlRXZlbnQoKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRQcm9kdWN0RGV0YWlsc1BhZ2VFdmVudCgpOiBPYnNlcnZhYmxlPFByb2R1Y3REZXRhaWxzUGFnZUV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNlLmdldChOYXZpZ2F0aW9uRXZlbnQpLnBpcGUoXG4gICAgICBmaWx0ZXIoKG5hdmlnYXRpb25FdmVudCkgPT4gbmF2aWdhdGlvbkV2ZW50LnNlbWFudGljUm91dGUgPT09ICdwcm9kdWN0JyksXG4gICAgICBzd2l0Y2hNYXAoKG5hdmlnYXRpb25FdmVudCkgPT5cbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5nZXQobmF2aWdhdGlvbkV2ZW50LmNvbnRleHQuaWQpLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChwcm9kdWN0KSA9PiBCb29sZWFuKHByb2R1Y3QpKSxcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIG1hcCgocHJvZHVjdCkgPT5cbiAgICAgICAgICAgIGNyZWF0ZUZyb20oUHJvZHVjdERldGFpbHNQYWdlRXZlbnQsIHtcbiAgICAgICAgICAgICAgbmF2aWdhdGlvbjogbmF2aWdhdGlvbkV2ZW50LFxuICAgICAgICAgICAgICBjYXRlZ29yaWVzOiBwcm9kdWN0LmNhdGVnb3JpZXMsXG4gICAgICAgICAgICAgIGNvZGU6IHByb2R1Y3QuY29kZSxcbiAgICAgICAgICAgICAgbmFtZTogcHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICBwcmljZTogcHJvZHVjdC5wcmljZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZENhdGVnb3J5UmVzdWx0c1BhZ2VFdmVudCgpOiBPYnNlcnZhYmxlPENhdGVnb3J5UGFnZVJlc3VsdHNFdmVudD4ge1xuICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMkID0gdGhpcy5wcm9kdWN0U2VhcmNoU2VydmljZS5nZXRSZXN1bHRzKCkucGlwZShcbiAgICAgIC8vIHNraXBwaW5nIHRoZSBpbml0aWFsIHZhbHVlLCBhbmQgcHJldmVudGluZyBlbWlzc2lvbiBvZiB0aGUgcHJldmlvdXMgc2VhcmNoIHN0YXRlXG4gICAgICBza2lwKDEpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50U2VydmljZS5nZXQoTmF2aWdhdGlvbkV2ZW50KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChuYXZpZ2F0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKG5hdmlnYXRpb25FdmVudD8uc2VtYW50aWNSb3V0ZSAhPT0gJ2NhdGVnb3J5Jykge1xuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWFyY2hSZXN1bHRzJC5waXBlKFxuICAgICAgICAgIG1hcCgoc2VhcmNoUmVzdWx0cykgPT5cbiAgICAgICAgICAgIGNyZWF0ZUZyb20oQ2F0ZWdvcnlQYWdlUmVzdWx0c0V2ZW50LCB7XG4gICAgICAgICAgICAgIG5hdmlnYXRpb246IG5hdmlnYXRpb25FdmVudCxcbiAgICAgICAgICAgICAgLi4ue1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5Q29kZTogbmF2aWdhdGlvbkV2ZW50Py5jb250ZXh0Py5pZCxcbiAgICAgICAgICAgICAgICBudW1iZXJPZlJlc3VsdHM6IHNlYXJjaFJlc3VsdHM/LnBhZ2luYXRpb24/LnRvdGFsUmVzdWx0cyA/PyAwLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5TmFtZTogc2VhcmNoUmVzdWx0cy5icmVhZGNydW1icz8uWzBdLmZhY2V0VmFsdWVOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRTZWFyY2hQYWdlUmVzdWx0c0V2ZW50KCk6IE9ic2VydmFibGU8U2VhcmNoUGFnZVJlc3VsdHNFdmVudD4ge1xuICAgIGNvbnN0IHNlYXJjaFJlc3VsdHMkID0gdGhpcy5wcm9kdWN0U2VhcmNoU2VydmljZS5nZXRSZXN1bHRzKCkucGlwZShcbiAgICAgIC8vIHNraXBwaW5nIHRoZSBpbml0aWFsIHZhbHVlLCBhbmQgcHJldmVudGluZyBlbWlzc2lvbiBvZiB0aGUgcHJldmlvdXMgc2VhcmNoIHN0YXRlXG4gICAgICBza2lwKDEpXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmV2ZW50U2VydmljZS5nZXQoTmF2aWdhdGlvbkV2ZW50KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChuYXZpZ2F0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKG5hdmlnYXRpb25FdmVudD8uc2VtYW50aWNSb3V0ZSAhPT0gJ3NlYXJjaCcpIHtcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VhcmNoUmVzdWx0cyQucGlwZShcbiAgICAgICAgICBtYXAoKHNlYXJjaFJlc3VsdHMpID0+XG4gICAgICAgICAgICBjcmVhdGVGcm9tKFNlYXJjaFBhZ2VSZXN1bHRzRXZlbnQsIHtcbiAgICAgICAgICAgICAgbmF2aWdhdGlvbjogbmF2aWdhdGlvbkV2ZW50LFxuICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgc2VhcmNoVGVybTogc2VhcmNoUmVzdWx0cz8uZnJlZVRleHRTZWFyY2ggPz8gJycsXG4gICAgICAgICAgICAgICAgbnVtYmVyT2ZSZXN1bHRzOiBzZWFyY2hSZXN1bHRzPy5wYWdpbmF0aW9uPy50b3RhbFJlc3VsdHMgPz8gMCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=