@spartacus/storefront
Version:
Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.
61 lines • 10.6 kB
JavaScript
import { DOCUMENT } from '@angular/common';
import { Inject, Injectable, } from '@angular/core';
import { map, tap } from 'rxjs/operators';
import { OutletPosition, } from '../../../cms-structure/outlet/index';
import { LaunchRenderStrategy } from './launch-render.strategy';
import * as i0 from "@angular/core";
import * as i1 from "../../../cms-structure/outlet/index";
import * as i2 from "../../../cms-structure/outlet/outlet-renderer.service";
export class OutletRenderStrategy extends LaunchRenderStrategy {
constructor(document, rendererFactory, outletService, componentFactoryResolver, outletRendererService) {
super(document, rendererFactory);
this.document = document;
this.rendererFactory = rendererFactory;
this.outletService = outletService;
this.componentFactoryResolver = componentFactoryResolver;
this.outletRendererService = outletRendererService;
}
/**
* Renders the element in the configured outlet
*
* @param config
* @param caller
* @param vcr
*/
render(config, caller) {
if (this.shouldRender(caller, config)) {
const template = this.componentFactoryResolver.resolveComponentFactory(config.component);
this.outletService.add(config.outlet, template, config.position ? config.position : OutletPosition.BEFORE);
this.outletRendererService.render(config.outlet);
this.renderedCallers.push({ caller });
return this.outletRendererService.getOutletRef(config.outlet).pipe(map((outletDirective) => {
const components = outletDirective.renderedComponents.get(config.position ? config.position : OutletPosition.BEFORE);
return components
.reverse()
.find((component) => component.componentType === template.componentType);
}), tap((component) => {
if ((config === null || config === void 0 ? void 0 : config.dialogType) && component) {
this.applyClasses(component, config === null || config === void 0 ? void 0 : config.dialogType);
}
}));
}
}
hasMatch(config) {
return Boolean(config.outlet);
}
remove(caller, config) {
const template = this.componentFactoryResolver.resolveComponentFactory(config.component);
this.outletService.remove(config.outlet, config.position ? config.position : OutletPosition.BEFORE, template);
super.remove(caller, config);
}
}
OutletRenderStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OutletRenderStrategy, deps: [{ token: DOCUMENT }, { token: i0.RendererFactory2 }, { token: i1.OutletService }, { token: i0.ComponentFactoryResolver }, { token: i2.OutletRendererService }], target: i0.ɵɵFactoryTarget.Injectable });
OutletRenderStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OutletRenderStrategy, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: OutletRenderStrategy, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }, { type: i0.RendererFactory2 }, { type: i1.OutletService }, { type: i0.ComponentFactoryResolver }, { type: i2.OutletRendererService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGV0LXJlbmRlci5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvbGF5b3V0L2xhdW5jaC1kaWFsb2cvc2VydmljZXMvb3V0bGV0LXJlbmRlci5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUlMLE1BQU0sRUFDTixVQUFVLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQ0wsY0FBYyxHQUVmLE1BQU0scUNBQXFDLENBQUM7QUFHN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFHaEUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG9CQUFvQjtJQUM1RCxZQUM4QixRQUFhLEVBQy9CLGVBQWlDLEVBQ2pDLGFBQW1ELEVBQ25ELHdCQUFrRCxFQUNsRCxxQkFBNEM7UUFFdEQsS0FBSyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQU5MLGFBQVEsR0FBUixRQUFRLENBQUs7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFzQztRQUNuRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7SUFHeEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FDSixNQUEwQixFQUMxQixNQUE4QjtRQUU5QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FDcEUsTUFBTSxDQUFDLFNBQVMsQ0FDakIsQ0FBQztZQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixNQUFNLENBQUMsTUFBTSxFQUNiLFFBQVEsRUFDUixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUMxRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRXRDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNoRSxHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDdEIsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FDdkQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FDbkMsQ0FBQztnQkFFekIsT0FBTyxVQUFVO3FCQUNkLE9BQU8sRUFBRTtxQkFDVCxJQUFJLENBQ0gsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDLGFBQWEsQ0FDbEUsQ0FBQztZQUNOLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNoQixJQUFJLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFVBQVUsS0FBSSxTQUFTLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxVQUFVLENBQUMsQ0FBQztpQkFDbEQ7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQTBCO1FBQ2pDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQThCLEVBQUUsTUFBMEI7UUFDL0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUNwRSxNQUFNLENBQUMsU0FBUyxDQUNqQixDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDekQsUUFBUSxDQUNULENBQUM7UUFFRixLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDOztpSEF2RVUsb0JBQW9CLGtCQUVyQixRQUFRO3FIQUZQLG9CQUFvQixjQURQLE1BQU07MkZBQ25CLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUc3QixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlckZhY3RvcnkyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgT3V0bGV0UG9zaXRpb24sXG4gIE91dGxldFNlcnZpY2UsXG59IGZyb20gJy4uLy4uLy4uL2Ntcy1zdHJ1Y3R1cmUvb3V0bGV0L2luZGV4JztcbmltcG9ydCB7IE91dGxldFJlbmRlcmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2Ntcy1zdHJ1Y3R1cmUvb3V0bGV0L291dGxldC1yZW5kZXJlci5zZXJ2aWNlJztcbmltcG9ydCB7IExhdW5jaE91dGxldERpYWxvZywgTEFVTkNIX0NBTExFUiB9IGZyb20gJy4uL2NvbmZpZy9pbmRleCc7XG5pbXBvcnQgeyBMYXVuY2hSZW5kZXJTdHJhdGVneSB9IGZyb20gJy4vbGF1bmNoLXJlbmRlci5zdHJhdGVneSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgT3V0bGV0UmVuZGVyU3RyYXRlZ3kgZXh0ZW5kcyBMYXVuY2hSZW5kZXJTdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByb3RlY3RlZCBkb2N1bWVudDogYW55LFxuICAgIHByb3RlY3RlZCByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXG4gICAgcHJvdGVjdGVkIG91dGxldFNlcnZpY2U6IE91dGxldFNlcnZpY2U8Q29tcG9uZW50RmFjdG9yeTxhbnk+PixcbiAgICBwcm90ZWN0ZWQgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJvdGVjdGVkIG91dGxldFJlbmRlcmVyU2VydmljZTogT3V0bGV0UmVuZGVyZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGRvY3VtZW50LCByZW5kZXJlckZhY3RvcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIGVsZW1lbnQgaW4gdGhlIGNvbmZpZ3VyZWQgb3V0bGV0XG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICogQHBhcmFtIGNhbGxlclxuICAgKiBAcGFyYW0gdmNyXG4gICAqL1xuICByZW5kZXIoXG4gICAgY29uZmlnOiBMYXVuY2hPdXRsZXREaWFsb2csXG4gICAgY2FsbGVyOiBMQVVOQ0hfQ0FMTEVSIHwgc3RyaW5nXG4gICk6IE9ic2VydmFibGU8Q29tcG9uZW50UmVmPGFueT4gfCB1bmRlZmluZWQ+IHwgdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvdWxkUmVuZGVyKGNhbGxlciwgY29uZmlnKSkge1xuICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcbiAgICAgICAgY29uZmlnLmNvbXBvbmVudFxuICAgICAgKTtcbiAgICAgIHRoaXMub3V0bGV0U2VydmljZS5hZGQoXG4gICAgICAgIGNvbmZpZy5vdXRsZXQsXG4gICAgICAgIHRlbXBsYXRlLFxuICAgICAgICBjb25maWcucG9zaXRpb24gPyBjb25maWcucG9zaXRpb24gOiBPdXRsZXRQb3NpdGlvbi5CRUZPUkVcbiAgICAgICk7XG4gICAgICB0aGlzLm91dGxldFJlbmRlcmVyU2VydmljZS5yZW5kZXIoY29uZmlnLm91dGxldCk7XG4gICAgICB0aGlzLnJlbmRlcmVkQ2FsbGVycy5wdXNoKHsgY2FsbGVyIH0pO1xuXG4gICAgICByZXR1cm4gdGhpcy5vdXRsZXRSZW5kZXJlclNlcnZpY2UuZ2V0T3V0bGV0UmVmKGNvbmZpZy5vdXRsZXQpLnBpcGUoXG4gICAgICAgIG1hcCgob3V0bGV0RGlyZWN0aXZlKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IG91dGxldERpcmVjdGl2ZS5yZW5kZXJlZENvbXBvbmVudHMuZ2V0KFxuICAgICAgICAgICAgY29uZmlnLnBvc2l0aW9uID8gY29uZmlnLnBvc2l0aW9uIDogT3V0bGV0UG9zaXRpb24uQkVGT1JFXG4gICAgICAgICAgKSBhcyBDb21wb25lbnRSZWY8YW55PltdO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNcbiAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgIC5maW5kKFxuICAgICAgICAgICAgICAoY29tcG9uZW50KSA9PiBjb21wb25lbnQuY29tcG9uZW50VHlwZSA9PT0gdGVtcGxhdGUuY29tcG9uZW50VHlwZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbmZpZz8uZGlhbG9nVHlwZSAmJiBjb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlDbGFzc2VzKGNvbXBvbmVudCwgY29uZmlnPy5kaWFsb2dUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGhhc01hdGNoKGNvbmZpZzogTGF1bmNoT3V0bGV0RGlhbG9nKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4oY29uZmlnLm91dGxldCk7XG4gIH1cblxuICByZW1vdmUoY2FsbGVyOiBMQVVOQ0hfQ0FMTEVSIHwgc3RyaW5nLCBjb25maWc6IExhdW5jaE91dGxldERpYWxvZyk6IHZvaWQge1xuICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXG4gICAgICBjb25maWcuY29tcG9uZW50XG4gICAgKTtcblxuICAgIHRoaXMub3V0bGV0U2VydmljZS5yZW1vdmUoXG4gICAgICBjb25maWcub3V0bGV0LFxuICAgICAgY29uZmlnLnBvc2l0aW9uID8gY29uZmlnLnBvc2l0aW9uIDogT3V0bGV0UG9zaXRpb24uQkVGT1JFLFxuICAgICAgdGVtcGxhdGVcbiAgICApO1xuXG4gICAgc3VwZXIucmVtb3ZlKGNhbGxlciwgY29uZmlnKTtcbiAgfVxufVxuIl19