@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
JavaScript
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=