UNPKG

@spartacus/storefront

Version:

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

53 lines 6.55 kB
import { Injectable } from '@angular/core'; import { defer, EMPTY, of } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "../../../services/cms-components.service"; import * as i2 from "@spartacus/core"; /** * Provides data for `CmsComponentData`. This is used while component is injected * dynamically, so that the component implementation can access the data. * * The data is resolved from dynamic data (CMS api) as well as static configured data. */ export class ComponentDataProvider { constructor(componentsService, cmsService) { this.componentsService = componentsService; this.cmsService = cmsService; } /** * Return the component data for a component given by the `uid`. * * If the `type` is provided, static component data (if available) is * merged into the component data. The static data is complemented and * overridden with data retrieved from the cms service. */ get(uid, type) { return defer(() => { let staticComponentData; if (type) { staticComponentData = this.componentsService.getStaticData(type); } if (uid) { if (staticComponentData) { return this.cmsService.getComponentData(uid).pipe(map((data) => (Object.assign(Object.assign({}, staticComponentData), data))), startWith(staticComponentData)); } else { return this.cmsService.getComponentData(uid); } } else { return staticComponentData ? of(staticComponentData) : EMPTY; } }); } } ComponentDataProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ComponentDataProvider, deps: [{ token: i1.CmsComponentsService }, { token: i2.CmsService }], target: i0.ɵɵFactoryTarget.Injectable }); ComponentDataProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ComponentDataProvider, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ComponentDataProvider, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.CmsComponentsService }, { type: i2.CmsService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWRhdGEucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL2Ntcy1zdHJ1Y3R1cmUvcGFnZS9jb21wb25lbnQvc2VydmljZXMvY29tcG9uZW50LWRhdGEucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUdoRDs7Ozs7R0FLRztBQUlILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDWSxpQkFBdUMsRUFDdkMsVUFBc0I7UUFEdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2QyxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQy9CLENBQUM7SUFFSjs7Ozs7O09BTUc7SUFDSCxHQUFHLENBQUksR0FBVyxFQUFFLElBQWE7UUFDL0IsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hCLElBQUksbUJBQXNCLENBQUM7WUFFM0IsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBSSxJQUFJLENBQUMsQ0FBQzthQUNyRTtZQUVELElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksbUJBQW1CLEVBQUU7b0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2xELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsaUNBQ1QsbUJBQW1CLEdBQ25CLElBQUksRUFDUCxDQUFDLEVBQ0gsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQy9CLENBQUM7aUJBQ0g7cUJBQU07b0JBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFJLEdBQUcsQ0FBQyxDQUFDO2lCQUNqRDthQUNGO2lCQUFNO2dCQUNMLE9BQU8sbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDOUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2tIQXJDVSxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQUZwQixNQUFNOzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbXNTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IGRlZmVyLCBFTVBUWSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ21zQ29tcG9uZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jbXMtY29tcG9uZW50cy5zZXJ2aWNlJztcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIGZvciBgQ21zQ29tcG9uZW50RGF0YWAuIFRoaXMgaXMgdXNlZCB3aGlsZSBjb21wb25lbnQgaXMgaW5qZWN0ZWRcbiAqIGR5bmFtaWNhbGx5LCBzbyB0aGF0IHRoZSBjb21wb25lbnQgaW1wbGVtZW50YXRpb24gY2FuIGFjY2VzcyB0aGUgZGF0YS5cbiAqXG4gKiBUaGUgZGF0YSBpcyByZXNvbHZlZCBmcm9tIGR5bmFtaWMgZGF0YSAoQ01TIGFwaSkgYXMgd2VsbCBhcyBzdGF0aWMgY29uZmlndXJlZCBkYXRhLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50RGF0YVByb3ZpZGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudHNTZXJ2aWNlOiBDbXNDb21wb25lbnRzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY21zU2VydmljZTogQ21zU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgY29tcG9uZW50IGRhdGEgZm9yIGEgY29tcG9uZW50IGdpdmVuIGJ5IHRoZSBgdWlkYC5cbiAgICpcbiAgICogSWYgdGhlIGB0eXBlYCBpcyBwcm92aWRlZCwgc3RhdGljIGNvbXBvbmVudCBkYXRhIChpZiBhdmFpbGFibGUpIGlzXG4gICAqIG1lcmdlZCBpbnRvIHRoZSBjb21wb25lbnQgZGF0YS4gVGhlIHN0YXRpYyBkYXRhIGlzIGNvbXBsZW1lbnRlZCBhbmRcbiAgICogb3ZlcnJpZGRlbiB3aXRoIGRhdGEgcmV0cmlldmVkIGZyb20gdGhlIGNtcyBzZXJ2aWNlLlxuICAgKi9cbiAgZ2V0PFQ+KHVpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgICAgIGxldCBzdGF0aWNDb21wb25lbnREYXRhOiBUO1xuXG4gICAgICBpZiAodHlwZSkge1xuICAgICAgICBzdGF0aWNDb21wb25lbnREYXRhID0gdGhpcy5jb21wb25lbnRzU2VydmljZS5nZXRTdGF0aWNEYXRhPFQ+KHR5cGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodWlkKSB7XG4gICAgICAgIGlmIChzdGF0aWNDb21wb25lbnREYXRhKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY21zU2VydmljZS5nZXRDb21wb25lbnREYXRhPFQ+KHVpZCkucGlwZShcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uc3RhdGljQ29tcG9uZW50RGF0YSxcbiAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXJ0V2l0aChzdGF0aWNDb21wb25lbnREYXRhKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY21zU2VydmljZS5nZXRDb21wb25lbnREYXRhPFQ+KHVpZCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzdGF0aWNDb21wb25lbnREYXRhID8gb2Yoc3RhdGljQ29tcG9uZW50RGF0YSkgOiBFTVBUWTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19