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