UNPKG

@spartacus/storefront

Version:

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

48 lines 6.04 kB
import { Injectable } from '@angular/core'; import { filter, map } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/core"; export class ProductCarouselService { constructor(productService, semanticPathService) { this.productService = productService; this.semanticPathService = semanticPathService; } /** * Loads the product data and converts it `CarouselItem`. */ loadProduct(code) { return this.productService.get(code).pipe(filter(Boolean), map((product) => this.convertProduct(product))); } /** * Converts the product to a generic CarouselItem */ convertProduct(source, displayTitle = true, displayProductPrices = true) { const item = {}; if (displayTitle) { item.title = source.name; } if (displayProductPrices && source.price && source.price.formattedValue) { item.price = source.price.formattedValue; } if (source.images && source.images.PRIMARY) { item.media = { container: source.images.PRIMARY, format: 'product', }; } item.route = this.semanticPathService.transform({ cxRoute: 'product', params: source, }); return item; } } ProductCarouselService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ProductCarouselService, deps: [{ token: i1.ProductService }, { token: i1.SemanticPathService }], target: i0.ɵɵFactoryTarget.Injectable }); ProductCarouselService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ProductCarouselService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ProductCarouselService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.ProductService }, { type: i1.SemanticPathService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1jYXJvdXNlbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmVmcm9udGxpYi9jbXMtY29tcG9uZW50cy9wcm9kdWN0L2Nhcm91c2VsL3Byb2R1Y3QtY2Fyb3VzZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU03QyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQ1ksY0FBOEIsRUFDOUIsbUJBQXdDO1FBRHhDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQ2pELENBQUM7SUFFSjs7T0FFRztJQUNILFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQ2YsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQ3BCLE1BQWUsRUFDZixZQUFZLEdBQUcsSUFBSSxFQUNuQixvQkFBb0IsR0FBRyxJQUFJO1FBRTNCLE1BQU0sSUFBSSxHQUF3QixFQUFFLENBQUM7UUFDckMsSUFBSSxZQUFZLEVBQUU7WUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxvQkFBb0IsSUFBSSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7U0FDMUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRztnQkFDWCxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPO2dCQUNoQyxNQUFNLEVBQUUsU0FBUzthQUNsQixDQUFDO1NBQ0g7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7WUFDOUMsT0FBTyxFQUFFLFNBQVM7WUFDbEIsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O21IQTFDVSxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9kdWN0LCBQcm9kdWN0U2VydmljZSwgU2VtYW50aWNQYXRoU2VydmljZSB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByb2R1Y3RDYXJvdXNlbEl0ZW0gfSBmcm9tICcuL3Byb2R1Y3QtY2Fyb3VzZWwubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdENhcm91c2VsU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBwcm9kdWN0U2VydmljZTogUHJvZHVjdFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHNlbWFudGljUGF0aFNlcnZpY2U6IFNlbWFudGljUGF0aFNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgcHJvZHVjdCBkYXRhIGFuZCBjb252ZXJ0cyBpdCBgQ2Fyb3VzZWxJdGVtYC5cbiAgICovXG4gIGxvYWRQcm9kdWN0KGNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8UHJvZHVjdENhcm91c2VsSXRlbT4ge1xuICAgIHJldHVybiB0aGlzLnByb2R1Y3RTZXJ2aWNlLmdldChjb2RlKS5waXBlKFxuICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgbWFwKChwcm9kdWN0KSA9PiB0aGlzLmNvbnZlcnRQcm9kdWN0KHByb2R1Y3QpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIHByb2R1Y3QgdG8gYSBnZW5lcmljIENhcm91c2VsSXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0UHJvZHVjdChcbiAgICBzb3VyY2U6IFByb2R1Y3QsXG4gICAgZGlzcGxheVRpdGxlID0gdHJ1ZSxcbiAgICBkaXNwbGF5UHJvZHVjdFByaWNlcyA9IHRydWVcbiAgKTogUHJvZHVjdENhcm91c2VsSXRlbSB7XG4gICAgY29uc3QgaXRlbTogUHJvZHVjdENhcm91c2VsSXRlbSA9IHt9O1xuICAgIGlmIChkaXNwbGF5VGl0bGUpIHtcbiAgICAgIGl0ZW0udGl0bGUgPSBzb3VyY2UubmFtZTtcbiAgICB9XG4gICAgaWYgKGRpc3BsYXlQcm9kdWN0UHJpY2VzICYmIHNvdXJjZS5wcmljZSAmJiBzb3VyY2UucHJpY2UuZm9ybWF0dGVkVmFsdWUpIHtcbiAgICAgIGl0ZW0ucHJpY2UgPSBzb3VyY2UucHJpY2UuZm9ybWF0dGVkVmFsdWU7XG4gICAgfVxuICAgIGlmIChzb3VyY2UuaW1hZ2VzICYmIHNvdXJjZS5pbWFnZXMuUFJJTUFSWSkge1xuICAgICAgaXRlbS5tZWRpYSA9IHtcbiAgICAgICAgY29udGFpbmVyOiBzb3VyY2UuaW1hZ2VzLlBSSU1BUlksXG4gICAgICAgIGZvcm1hdDogJ3Byb2R1Y3QnLFxuICAgICAgfTtcbiAgICB9XG4gICAgaXRlbS5yb3V0ZSA9IHRoaXMuc2VtYW50aWNQYXRoU2VydmljZS50cmFuc2Zvcm0oe1xuICAgICAgY3hSb3V0ZTogJ3Byb2R1Y3QnLFxuICAgICAgcGFyYW1zOiBzb3VyY2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cbn1cbiJdfQ==