@spartacus/storefront
Version:
Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.
45 lines • 4.77 kB
JavaScript
import { Injectable } from '@angular/core';
import { isNotNullable } from '@spartacus/core';
import { BehaviorSubject } from 'rxjs';
import { filter, map } from 'rxjs/operators';
import * as i0 from "@angular/core";
export class OutletRendererService {
constructor() {
this.outletRefs = new BehaviorSubject(new Map());
}
/**
* Dynamically render the templates in the specified array
*
* @param outlet
*/
render(outlet) {
if (this.outletRefs.value.size !== 0) {
this.outletRefs.value.get(outlet).render();
}
}
/**
* Register outlet to be available to render dynamically
*
* @param cxOutlet
* @param context
*/
register(cxOutlet, context) {
this.outletRefs.next(this.outletRefs.value.set(cxOutlet, context));
}
/**
* Returns map of outlets
*
*/
getOutletRef(outlet) {
return this.outletRefs.asObservable().pipe(map((val) => val.get(outlet)), filter(isNotNullable));
}
}
OutletRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OutletRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
OutletRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OutletRendererService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OutletRendererService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGV0LXJlbmRlcmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL2Ntcy1zdHJ1Y3R1cmUvb3V0bGV0L291dGxldC1yZW5kZXJlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFNN0MsTUFBTSxPQUFPLHFCQUFxQjtJQUhsQztRQUlVLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEdBQUcsRUFBMkIsQ0FBQyxDQUFDO0tBZ0M5RTtJQTlCQzs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FBQyxRQUFnQixFQUFFLE9BQXdCO1FBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLE1BQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDeEMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQzdCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FDdEIsQ0FBQztJQUNKLENBQUM7O2tIQWhDVSxxQkFBcUI7c0hBQXJCLHFCQUFxQixjQUZwQixNQUFNOzJGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05vdE51bGxhYmxlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPdXRsZXREaXJlY3RpdmUgfSBmcm9tICcuL291dGxldC5kaXJlY3RpdmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgT3V0bGV0UmVuZGVyZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBvdXRsZXRSZWZzID0gbmV3IEJlaGF2aW9yU3ViamVjdChuZXcgTWFwPHN0cmluZywgT3V0bGV0RGlyZWN0aXZlPigpKTtcblxuICAvKipcbiAgICogRHluYW1pY2FsbHkgcmVuZGVyIHRoZSB0ZW1wbGF0ZXMgaW4gdGhlIHNwZWNpZmllZCBhcnJheVxuICAgKlxuICAgKiBAcGFyYW0gb3V0bGV0XG4gICAqL1xuICByZW5kZXIob3V0bGV0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdXRsZXRSZWZzLnZhbHVlLnNpemUgIT09IDApIHtcbiAgICAgIHRoaXMub3V0bGV0UmVmcy52YWx1ZS5nZXQob3V0bGV0KS5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgb3V0bGV0IHRvIGJlIGF2YWlsYWJsZSB0byByZW5kZXIgZHluYW1pY2FsbHlcbiAgICpcbiAgICogQHBhcmFtIGN4T3V0bGV0XG4gICAqIEBwYXJhbSBjb250ZXh0XG4gICAqL1xuICByZWdpc3RlcihjeE91dGxldDogc3RyaW5nLCBjb250ZXh0OiBPdXRsZXREaXJlY3RpdmUpOiB2b2lkIHtcbiAgICB0aGlzLm91dGxldFJlZnMubmV4dCh0aGlzLm91dGxldFJlZnMudmFsdWUuc2V0KGN4T3V0bGV0LCBjb250ZXh0KSk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgbWFwIG9mIG91dGxldHNcbiAgICpcbiAgICovXG4gIGdldE91dGxldFJlZihvdXRsZXQ6IHN0cmluZyk6IE9ic2VydmFibGU8T3V0bGV0RGlyZWN0aXZlPiB7XG4gICAgcmV0dXJuIHRoaXMub3V0bGV0UmVmcy5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgbWFwKCh2YWwpID0+IHZhbC5nZXQob3V0bGV0KSksXG4gICAgICBmaWx0ZXIoaXNOb3ROdWxsYWJsZSlcbiAgICApO1xuICB9XG59XG4iXX0=