UNPKG

@spartacus/storefront

Version:

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

50 lines 6.9 kB
import { ComponentFactoryResolver, Injectable, } from '@angular/core'; import { Observable } from 'rxjs'; import * as i0 from "@angular/core"; /** * Default component handler used for dynamically launching cms components implemented * as native Angular components. */ export class DefaultComponentHandler { hasMatch(componentMapping) { return typeof componentMapping.component === 'function'; } getPriority() { return -50 /* FALLBACK */; } launcher(componentMapping, viewContainerRef, elementInjector, module) { return new Observable((subscriber) => { let componentRef; const injector = elementInjector !== null && elementInjector !== void 0 ? elementInjector : viewContainerRef.injector; const dispose = () => { if (componentRef) { componentRef.destroy(); } }; const factory = this.getComponentFactory(injector, componentMapping.component); if (factory) { componentRef = viewContainerRef.createComponent(factory, undefined, injector, undefined, module); subscriber.next({ elementRef: componentRef.location, componentRef }); } return dispose; }); } getComponentFactory(injector, component) { if (!component) { return null; } const factory = injector .get(ComponentFactoryResolver) .resolveComponentFactory(component); return factory; } } DefaultComponentHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: DefaultComponentHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); DefaultComponentHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: DefaultComponentHandler, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: DefaultComponentHandler, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb21wb25lbnQuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvY21zLXN0cnVjdHVyZS9wYWdlL2NvbXBvbmVudC9oYW5kbGVycy9kZWZhdWx0LWNvbXBvbmVudC5oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx3QkFBd0IsRUFHeEIsVUFBVSxHQUlYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR2xDOzs7R0FHRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsUUFBUSxDQUFDLGdCQUFxQztRQUM1QyxPQUFPLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxLQUFLLFVBQVUsQ0FBQztJQUMxRCxDQUFDO0lBRUQsV0FBVztRQUNULDBCQUF5QjtJQUMzQixDQUFDO0lBRUQsUUFBUSxDQUNOLGdCQUFxQyxFQUNyQyxnQkFBa0MsRUFDbEMsZUFBMEIsRUFDMUIsTUFBeUI7UUFFekIsT0FBTyxJQUFJLFVBQVUsQ0FHbEIsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNoQixJQUFJLFlBQStCLENBQUM7WUFFcEMsTUFBTSxRQUFRLEdBQUcsZUFBZSxhQUFmLGVBQWUsY0FBZixlQUFlLEdBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1lBRTlELE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDeEI7WUFDSCxDQUFDLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQ3RDLFFBQVEsRUFDUixnQkFBZ0IsQ0FBQyxTQUFTLENBQzNCLENBQUM7WUFFRixJQUFJLE9BQU8sRUFBRTtnQkFDWCxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUM3QyxPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxDQUNQLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7YUFDdEU7WUFFRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxRQUFrQixFQUFFLFNBQWM7UUFDOUQsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLE9BQU8sR0FBRyxRQUFRO2FBQ3JCLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQzthQUM3Qix1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0QyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOztvSEExRFUsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGFibGUsXG4gIEluamVjdG9yLFxuICBOZ01vZHVsZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRIYW5kbGVyIH0gZnJvbSAnLi9jb21wb25lbnQtaGFuZGxlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDbXNDb21wb25lbnRNYXBwaW5nLCBQcmlvcml0eSB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XG5cbi8qKlxuICogRGVmYXVsdCBjb21wb25lbnQgaGFuZGxlciB1c2VkIGZvciBkeW5hbWljYWxseSBsYXVuY2hpbmcgY21zIGNvbXBvbmVudHMgaW1wbGVtZW50ZWRcbiAqIGFzIG5hdGl2ZSBBbmd1bGFyIGNvbXBvbmVudHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEZWZhdWx0Q29tcG9uZW50SGFuZGxlciBpbXBsZW1lbnRzIENvbXBvbmVudEhhbmRsZXIge1xuICBoYXNNYXRjaChjb21wb25lbnRNYXBwaW5nOiBDbXNDb21wb25lbnRNYXBwaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBjb21wb25lbnRNYXBwaW5nLmNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldFByaW9yaXR5KCk6IFByaW9yaXR5IHtcbiAgICByZXR1cm4gUHJpb3JpdHkuRkFMTEJBQ0s7XG4gIH1cblxuICBsYXVuY2hlcihcbiAgICBjb21wb25lbnRNYXBwaW5nOiBDbXNDb21wb25lbnRNYXBwaW5nLFxuICAgIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgZWxlbWVudEluamVjdG9yPzogSW5qZWN0b3IsXG4gICAgbW9kdWxlPzogTmdNb2R1bGVSZWY8YW55PlxuICApOiBPYnNlcnZhYmxlPHsgZWxlbWVudFJlZjogRWxlbWVudFJlZjsgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPGFueT4gfT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx7XG4gICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuICAgICAgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPGFueT47XG4gICAgfT4oKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGxldCBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gICAgICBjb25zdCBpbmplY3RvciA9IGVsZW1lbnRJbmplY3RvciA/PyB2aWV3Q29udGFpbmVyUmVmLmluamVjdG9yO1xuXG4gICAgICBjb25zdCBkaXNwb3NlID0gKCkgPT4ge1xuICAgICAgICBpZiAoY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZ2V0Q29tcG9uZW50RmFjdG9yeShcbiAgICAgICAgaW5qZWN0b3IsXG4gICAgICAgIGNvbXBvbmVudE1hcHBpbmcuY29tcG9uZW50XG4gICAgICApO1xuXG4gICAgICBpZiAoZmFjdG9yeSkge1xuICAgICAgICBjb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgICBmYWN0b3J5LFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICBpbmplY3RvcixcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgbW9kdWxlXG4gICAgICAgICk7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dCh7IGVsZW1lbnRSZWY6IGNvbXBvbmVudFJlZi5sb2NhdGlvbiwgY29tcG9uZW50UmVmIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGlzcG9zZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb21wb25lbnRGYWN0b3J5KGluamVjdG9yOiBJbmplY3RvciwgY29tcG9uZW50OiBhbnkpOiBhbnkge1xuICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgZmFjdG9yeSA9IGluamVjdG9yXG4gICAgICAuZ2V0KENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcilcbiAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xuXG4gICAgcmV0dXJuIGZhY3Rvcnk7XG4gIH1cbn1cbiJdfQ==