UNPKG

@spartacus/storefront

Version:

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

58 lines 9.63 kB
import { Directive, } from '@angular/core'; import { map } from 'rxjs/operators'; import { ComponentWrapperDirective } from './component-wrapper.directive'; import * as i0 from "@angular/core"; import * as i1 from "../model/cms-component-data"; import * as i2 from "../../services/cms-components.service"; import * as i3 from "@spartacus/core"; import * as i4 from "./services/component-handler.service"; import * as i5 from "./services/cms-injector.service"; export class InnerComponentsHostDirective { constructor(data, vcr, // dependencies required for ComponentWrapper directive cmsComponentsService, injector, dynamicAttributeService, renderer, componentHandler, cmsInjector) { this.data = data; this.vcr = vcr; this.cmsComponentsService = cmsComponentsService; this.injector = injector; this.dynamicAttributeService = dynamicAttributeService; this.renderer = renderer; this.componentHandler = componentHandler; this.cmsInjector = cmsInjector; this.innerComponents$ = this.data.data$.pipe(map((data) => { var _a, _b; return (_b = (_a = data === null || data === void 0 ? void 0 : data.composition) === null || _a === void 0 ? void 0 : _a.inner) !== null && _b !== void 0 ? _b : []; })); this.componentWrappers = []; } ngOnInit() { this.subscription = this.innerComponents$.subscribe((x) => { this.renderComponents(x); }); } renderComponents(components) { this.clearComponents(); components.forEach((component) => this.renderComponent(component)); } renderComponent(component) { const componentWrapper = new ComponentWrapperDirective(this.vcr, this.cmsComponentsService, this.injector, this.dynamicAttributeService, this.renderer, this.componentHandler, this.cmsInjector); componentWrapper.cxComponentWrapper = { flexType: component, uid: '' }; componentWrapper.ngOnInit(); this.componentWrappers.push(componentWrapper); } clearComponents() { this.componentWrappers.forEach((wrapper) => wrapper.ngOnDestroy()); this.componentWrappers = []; } ngOnDestroy() { var _a; (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe(); this.clearComponents(); } } InnerComponentsHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: InnerComponentsHostDirective, deps: [{ token: i1.CmsComponentData }, { token: i0.ViewContainerRef }, { token: i2.CmsComponentsService }, { token: i0.Injector }, { token: i3.DynamicAttributeService }, { token: i0.Renderer2 }, { token: i4.ComponentHandlerService }, { token: i5.CmsInjectorService }], target: i0.ɵɵFactoryTarget.Directive }); InnerComponentsHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.5", type: InnerComponentsHostDirective, selector: "[cxInnerComponentsHost]", ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: InnerComponentsHostDirective, decorators: [{ type: Directive, args: [{ selector: '[cxInnerComponentsHost]', }] }], ctorParameters: function () { return [{ type: i1.CmsComponentData }, { type: i0.ViewContainerRef }, { type: i2.CmsComponentsService }, { type: i0.Injector }, { type: i3.DynamicAttributeService }, { type: i0.Renderer2 }, { type: i4.ComponentHandlerService }, { type: i5.CmsInjectorService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItY29tcG9uZW50cy1ob3N0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvY21zLXN0cnVjdHVyZS9wYWdlL2NvbXBvbmVudC9pbm5lci1jb21wb25lbnRzLWhvc3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEdBTVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXJDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7O0FBSzFFLE1BQU0sT0FBTyw0QkFBNEI7SUFRdkMsWUFDWSxJQUFvQyxFQUNwQyxHQUFxQjtJQUMvQix1REFBdUQ7SUFDN0Msb0JBQTBDLEVBQzFDLFFBQWtCLEVBQ2xCLHVCQUFnRCxFQUNoRCxRQUFtQixFQUNuQixnQkFBeUMsRUFDekMsV0FBK0I7UUFSL0IsU0FBSSxHQUFKLElBQUksQ0FBZ0M7UUFDcEMsUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFFckIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBQ3pDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQWhCakMscUJBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUMvQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxlQUFDLE9BQUEsTUFBQSxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxXQUFXLDBDQUFFLEtBQUssbUNBQUksRUFBRSxDQUFBLEVBQUEsQ0FBQyxDQUM5QyxDQUFDO1FBRVEsc0JBQWlCLEdBQVUsRUFBRSxDQUFDO0lBYXJDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGdCQUFnQixDQUFDLFVBQW9CO1FBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVTLGVBQWUsQ0FBQyxTQUFpQjtRQUN6QyxNQUFNLGdCQUFnQixHQUFHLElBQUkseUJBQXlCLENBQ3BELElBQUksQ0FBQyxHQUFHLEVBQ1IsSUFBSSxDQUFDLG9CQUFvQixFQUN6QixJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyx1QkFBdUIsRUFDNUIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7UUFDRixnQkFBZ0IsQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3ZFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVMsZUFBZTtRQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXOztRQUNULE1BQUEsSUFBSSxDQUFDLFlBQVksMENBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7O3lIQXREVSw0QkFBNEI7NkdBQTVCLDRCQUE0QjsyRkFBNUIsNEJBQTRCO2tCQUh4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbXNDb21wb25lbnQsIER5bmFtaWNBdHRyaWJ1dGVTZXJ2aWNlIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ21zQ29tcG9uZW50RGF0YSB9IGZyb20gJy4uL21vZGVsL2Ntcy1jb21wb25lbnQtZGF0YSc7XG5pbXBvcnQgeyBDbXNDb21wb25lbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Ntcy1jb21wb25lbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbXBvbmVudC1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ21zSW5qZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jbXMtaW5qZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRXcmFwcGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnQtd3JhcHBlci5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY3hJbm5lckNvbXBvbmVudHNIb3N0XScsXG59KVxuZXhwb3J0IGNsYXNzIElubmVyQ29tcG9uZW50c0hvc3REaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCBpbm5lckNvbXBvbmVudHMkID0gdGhpcy5kYXRhLmRhdGEkLnBpcGUoXG4gICAgbWFwKChkYXRhKSA9PiBkYXRhPy5jb21wb3NpdGlvbj8uaW5uZXIgPz8gW10pXG4gICk7XG5cbiAgcHJvdGVjdGVkIGNvbXBvbmVudFdyYXBwZXJzOiBhbnlbXSA9IFtdO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBkYXRhOiBDbXNDb21wb25lbnREYXRhPENtc0NvbXBvbmVudD4sXG4gICAgcHJvdGVjdGVkIHZjcjogVmlld0NvbnRhaW5lclJlZixcbiAgICAvLyBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgZm9yIENvbXBvbmVudFdyYXBwZXIgZGlyZWN0aXZlXG4gICAgcHJvdGVjdGVkIGNtc0NvbXBvbmVudHNTZXJ2aWNlOiBDbXNDb21wb25lbnRzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBkeW5hbWljQXR0cmlidXRlU2VydmljZTogRHluYW1pY0F0dHJpYnV0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudEhhbmRsZXI6IENvbXBvbmVudEhhbmRsZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjbXNJbmplY3RvcjogQ21zSW5qZWN0b3JTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuaW5uZXJDb21wb25lbnRzJC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50cyh4KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZW5kZXJDb21wb25lbnRzKGNvbXBvbmVudHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5jbGVhckNvbXBvbmVudHMoKTtcbiAgICBjb21wb25lbnRzLmZvckVhY2goKGNvbXBvbmVudCkgPT4gdGhpcy5yZW5kZXJDb21wb25lbnQoY29tcG9uZW50KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVuZGVyQ29tcG9uZW50KGNvbXBvbmVudDogc3RyaW5nKSB7XG4gICAgY29uc3QgY29tcG9uZW50V3JhcHBlciA9IG5ldyBDb21wb25lbnRXcmFwcGVyRGlyZWN0aXZlKFxuICAgICAgdGhpcy52Y3IsXG4gICAgICB0aGlzLmNtc0NvbXBvbmVudHNTZXJ2aWNlLFxuICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgIHRoaXMuZHluYW1pY0F0dHJpYnV0ZVNlcnZpY2UsXG4gICAgICB0aGlzLnJlbmRlcmVyLFxuICAgICAgdGhpcy5jb21wb25lbnRIYW5kbGVyLFxuICAgICAgdGhpcy5jbXNJbmplY3RvclxuICAgICk7XG4gICAgY29tcG9uZW50V3JhcHBlci5jeENvbXBvbmVudFdyYXBwZXIgPSB7IGZsZXhUeXBlOiBjb21wb25lbnQsIHVpZDogJycgfTtcbiAgICBjb21wb25lbnRXcmFwcGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5jb21wb25lbnRXcmFwcGVycy5wdXNoKGNvbXBvbmVudFdyYXBwZXIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFyQ29tcG9uZW50cygpIHtcbiAgICB0aGlzLmNvbXBvbmVudFdyYXBwZXJzLmZvckVhY2goKHdyYXBwZXIpID0+IHdyYXBwZXIubmdPbkRlc3Ryb3koKSk7XG4gICAgdGhpcy5jb21wb25lbnRXcmFwcGVycyA9IFtdO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jbGVhckNvbXBvbmVudHMoKTtcbiAgfVxufVxuIl19