@spartacus/core
Version:
Spartacus - the core framework
49 lines • 6.65 kB
JavaScript
import { Injectable } from '@angular/core';
import { shareReplay } from 'rxjs/operators';
import { getLastValueSync } from '../../util/rxjs/get-last-value-sync';
import { ComponentDecorator } from '../decorators/component-decorator';
import { SlotDecorator } from '../decorators/slot-decorator';
import * as i0 from "@angular/core";
import * as i1 from "../../lazy-loading/unified-injector";
/**
* Service that used to add dynamic attributes to CMS component
* and slot elements.
*/
export class DynamicAttributeService {
constructor(unifiedInjector) {
this.unifiedInjector = unifiedInjector;
this.componentDecorators$ = this.unifiedInjector
.getMulti(ComponentDecorator)
.pipe(shareReplay(1));
this.slotDecorators$ = this.unifiedInjector
.getMulti(SlotDecorator)
.pipe(shareReplay(1));
}
/**
* Add dynamic attributes to CMS component element
* @param element: CMS component element
* @param renderer
* @param componentData: component data
*/
addAttributesToComponent(element, renderer, componentData) {
(getLastValueSync(this.componentDecorators$) || []).forEach((decorator) => decorator.decorate(element, renderer, componentData));
}
/**
* Add dynamic attributes to CMS slot element
* @param element: CMS slot element
* @param renderer
* @param slotData: slot data
*/
addAttributesToSlot(element, renderer, slotData) {
(getLastValueSync(this.slotDecorators$) || []).forEach((decorator) => decorator.decorate(element, renderer, slotData));
}
}
DynamicAttributeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: DynamicAttributeService, deps: [{ token: i1.UnifiedInjector }], target: i0.ɵɵFactoryTarget.Injectable });
DynamicAttributeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: DynamicAttributeService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: DynamicAttributeService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.UnifiedInjector }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1hdHRyaWJ1dGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2Ntcy9zZXJ2aWNlcy9keW5hbWljLWF0dHJpYnV0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBSTdEOzs7R0FHRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFTbEMsWUFBc0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBUjlDLHlCQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlO2FBQ2hELFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQzthQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEIsb0JBQWUsR0FBRyxJQUFJLENBQUMsZUFBZTthQUMzQyxRQUFRLENBQUMsYUFBYSxDQUFDO2FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVpQyxDQUFDO0lBRTFEOzs7OztPQUtHO0lBQ0gsd0JBQXdCLENBQ3RCLE9BQWdCLEVBQ2hCLFFBQW1CLEVBQ25CLGFBQXdDO1FBRXhDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FDeEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUNyRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLENBQ2pCLE9BQWdCLEVBQ2hCLFFBQW1CLEVBQ25CLFFBQTBCO1FBRTFCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ25FLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FDaEQsQ0FBQztJQUNKLENBQUM7O29IQXpDVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVW5pZmllZEluamVjdG9yIH0gZnJvbSAnLi4vLi4vbGF6eS1sb2FkaW5nL3VuaWZpZWQtaW5qZWN0b3InO1xuaW1wb3J0IHsgZ2V0TGFzdFZhbHVlU3luYyB9IGZyb20gJy4uLy4uL3V0aWwvcnhqcy9nZXQtbGFzdC12YWx1ZS1zeW5jJztcbmltcG9ydCB7IENvbXBvbmVudERlY29yYXRvciB9IGZyb20gJy4uL2RlY29yYXRvcnMvY29tcG9uZW50LWRlY29yYXRvcic7XG5pbXBvcnQgeyBTbG90RGVjb3JhdG9yIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9zbG90LWRlY29yYXRvcic7XG5pbXBvcnQgeyBDb250ZW50U2xvdENvbXBvbmVudERhdGEgfSBmcm9tICcuLi9tb2RlbC9jb250ZW50LXNsb3QtY29tcG9uZW50LWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQ29udGVudFNsb3REYXRhIH0gZnJvbSAnLi4vbW9kZWwvY29udGVudC1zbG90LWRhdGEubW9kZWwnO1xuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCB1c2VkIHRvIGFkZCBkeW5hbWljIGF0dHJpYnV0ZXMgdG8gQ01TIGNvbXBvbmVudFxuICogYW5kIHNsb3QgZWxlbWVudHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBEeW5hbWljQXR0cmlidXRlU2VydmljZSB7XG4gIHByaXZhdGUgY29tcG9uZW50RGVjb3JhdG9ycyQgPSB0aGlzLnVuaWZpZWRJbmplY3RvclxuICAgIC5nZXRNdWx0aShDb21wb25lbnREZWNvcmF0b3IpXG4gICAgLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHByaXZhdGUgc2xvdERlY29yYXRvcnMkID0gdGhpcy51bmlmaWVkSW5qZWN0b3JcbiAgICAuZ2V0TXVsdGkoU2xvdERlY29yYXRvcilcbiAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHVuaWZpZWRJbmplY3RvcjogVW5pZmllZEluamVjdG9yKSB7fVxuXG4gIC8qKlxuICAgKiBBZGQgZHluYW1pYyBhdHRyaWJ1dGVzIHRvIENNUyBjb21wb25lbnQgZWxlbWVudFxuICAgKiBAcGFyYW0gZWxlbWVudDogQ01TIGNvbXBvbmVudCBlbGVtZW50XG4gICAqIEBwYXJhbSByZW5kZXJlclxuICAgKiBAcGFyYW0gY29tcG9uZW50RGF0YTogY29tcG9uZW50IGRhdGFcbiAgICovXG4gIGFkZEF0dHJpYnV0ZXNUb0NvbXBvbmVudChcbiAgICBlbGVtZW50OiBFbGVtZW50LFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgY29tcG9uZW50RGF0YT86IENvbnRlbnRTbG90Q29tcG9uZW50RGF0YVxuICApIHtcbiAgICAoZ2V0TGFzdFZhbHVlU3luYyh0aGlzLmNvbXBvbmVudERlY29yYXRvcnMkKSB8fCBbXSkuZm9yRWFjaCgoZGVjb3JhdG9yKSA9PlxuICAgICAgZGVjb3JhdG9yLmRlY29yYXRlKGVsZW1lbnQsIHJlbmRlcmVyLCBjb21wb25lbnREYXRhKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGR5bmFtaWMgYXR0cmlidXRlcyB0byBDTVMgc2xvdCBlbGVtZW50XG4gICAqIEBwYXJhbSBlbGVtZW50OiBDTVMgc2xvdCBlbGVtZW50XG4gICAqIEBwYXJhbSByZW5kZXJlclxuICAgKiBAcGFyYW0gc2xvdERhdGE6IHNsb3QgZGF0YVxuICAgKi9cbiAgYWRkQXR0cmlidXRlc1RvU2xvdChcbiAgICBlbGVtZW50OiBFbGVtZW50LFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgc2xvdERhdGE/OiBDb250ZW50U2xvdERhdGFcbiAgKSB7XG4gICAgKGdldExhc3RWYWx1ZVN5bmModGhpcy5zbG90RGVjb3JhdG9ycyQpIHx8IFtdKS5mb3JFYWNoKChkZWNvcmF0b3IpID0+XG4gICAgICBkZWNvcmF0b3IuZGVjb3JhdGUoZWxlbWVudCwgcmVuZGVyZXIsIHNsb3REYXRhKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==