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