UNPKG

@spartacus/core

Version:

Spartacus - the core framework

49 lines 6.65 kB
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==