@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.49 kB
JavaScript
import { Inject, Injectable, isDevMode, Optional, } from '@angular/core';
import { resolveApplicable } from '@spartacus/core';
import { ComponentHandler } from '../handlers/component-handler';
import * as i0 from "@angular/core";
/**
* Responsible for obtaining component handler for specified component mapping
*/
export class ComponentHandlerService {
constructor(handlers) {
this.handlers = handlers;
this.invalidMappings = new Set();
}
/**
* Get best matching component handler
*
* @param componentMapping
*/
resolve(componentMapping) {
const handler = resolveApplicable(this.handlers, [componentMapping]);
if (isDevMode() && !handler) {
if (!this.invalidMappings.has(componentMapping)) {
this.invalidMappings.add(componentMapping);
console.warn("Can't resolve handler for component mapping: ", componentMapping);
}
}
return handler;
}
/**
* Get launcher for specified component mapping
*
* @param componentMapping
* @param viewContainerRef
* @param elementInjector
*/
getLauncher(componentMapping, viewContainerRef, elementInjector, module) {
var _a;
return (_a = this.resolve(componentMapping)) === null || _a === void 0 ? void 0 : _a.launcher(componentMapping, viewContainerRef, elementInjector, module);
}
}
ComponentHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ComponentHandlerService, deps: [{ token: ComponentHandler, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
ComponentHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ComponentHandlerService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ComponentHandlerService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [ComponentHandler]
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvY21zLXN0cnVjdHVyZS9wYWdlL2NvbXBvbmVudC9zZXJ2aWNlcy9jb21wb25lbnQtaGFuZGxlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxNQUFNLEVBQ04sVUFBVSxFQUVWLFNBQVMsRUFFVCxRQUFRLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUVqRTs7R0FFRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFHWSxRQUE0QjtRQUE1QixhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUc5QixvQkFBZSxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO0lBRjdELENBQUM7SUFJSjs7OztPQUlHO0lBQ08sT0FBTyxDQUFDLGdCQUFxQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBRXJFLElBQUksU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsK0NBQStDLEVBQy9DLGdCQUFnQixDQUNqQixDQUFDO2FBQ0g7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQ1QsZ0JBQXFDLEVBQ3JDLGdCQUFrQyxFQUNsQyxlQUEwQixFQUMxQixNQUF5Qjs7UUFFekIsT0FBTyxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsMENBQUUsUUFBUSxDQUM3QyxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7O29IQWpEVSx1QkFBdUIsa0JBR3hCLGdCQUFnQjt3SEFIZix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHSSxRQUFROzswQkFDUixNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RvcixcbiAgaXNEZXZNb2RlLFxuICBOZ01vZHVsZVJlZixcbiAgT3B0aW9uYWwsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ21zQ29tcG9uZW50TWFwcGluZywgcmVzb2x2ZUFwcGxpY2FibGUgfSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGFuZGxlciB9IGZyb20gJy4uL2hhbmRsZXJzL2NvbXBvbmVudC1oYW5kbGVyJztcblxuLyoqXG4gKiBSZXNwb25zaWJsZSBmb3Igb2J0YWluaW5nIGNvbXBvbmVudCBoYW5kbGVyIGZvciBzcGVjaWZpZWQgY29tcG9uZW50IG1hcHBpbmdcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEhhbmRsZXJTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KENvbXBvbmVudEhhbmRsZXIpXG4gICAgcHJvdGVjdGVkIGhhbmRsZXJzOiBDb21wb25lbnRIYW5kbGVyW11cbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBpbnZhbGlkTWFwcGluZ3MgPSBuZXcgU2V0PENtc0NvbXBvbmVudE1hcHBpbmc8YW55Pj4oKTtcblxuICAvKipcbiAgICogR2V0IGJlc3QgbWF0Y2hpbmcgY29tcG9uZW50IGhhbmRsZXJcbiAgICpcbiAgICogQHBhcmFtIGNvbXBvbmVudE1hcHBpbmdcbiAgICovXG4gIHByb3RlY3RlZCByZXNvbHZlKGNvbXBvbmVudE1hcHBpbmc6IENtc0NvbXBvbmVudE1hcHBpbmcpOiBDb21wb25lbnRIYW5kbGVyIHtcbiAgICBjb25zdCBoYW5kbGVyID0gcmVzb2x2ZUFwcGxpY2FibGUodGhpcy5oYW5kbGVycywgW2NvbXBvbmVudE1hcHBpbmddKTtcblxuICAgIGlmIChpc0Rldk1vZGUoKSAmJiAhaGFuZGxlcikge1xuICAgICAgaWYgKCF0aGlzLmludmFsaWRNYXBwaW5ncy5oYXMoY29tcG9uZW50TWFwcGluZykpIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkTWFwcGluZ3MuYWRkKGNvbXBvbmVudE1hcHBpbmcpO1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgXCJDYW4ndCByZXNvbHZlIGhhbmRsZXIgZm9yIGNvbXBvbmVudCBtYXBwaW5nOiBcIixcbiAgICAgICAgICBjb21wb25lbnRNYXBwaW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxhdW5jaGVyIGZvciBzcGVjaWZpZWQgY29tcG9uZW50IG1hcHBpbmdcbiAgICpcbiAgICogQHBhcmFtIGNvbXBvbmVudE1hcHBpbmdcbiAgICogQHBhcmFtIHZpZXdDb250YWluZXJSZWZcbiAgICogQHBhcmFtIGVsZW1lbnRJbmplY3RvclxuICAgKi9cbiAgZ2V0TGF1bmNoZXIoXG4gICAgY29tcG9uZW50TWFwcGluZzogQ21zQ29tcG9uZW50TWFwcGluZyxcbiAgICB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGVsZW1lbnRJbmplY3Rvcj86IEluamVjdG9yLFxuICAgIG1vZHVsZT86IE5nTW9kdWxlUmVmPGFueT5cbiAgKTogT2JzZXJ2YWJsZTx7IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7IGNvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxhbnk+IH0+IHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKGNvbXBvbmVudE1hcHBpbmcpPy5sYXVuY2hlcihcbiAgICAgIGNvbXBvbmVudE1hcHBpbmcsXG4gICAgICB2aWV3Q29udGFpbmVyUmVmLFxuICAgICAgZWxlbWVudEluamVjdG9yLFxuICAgICAgbW9kdWxlXG4gICAgKTtcbiAgfVxufVxuIl19