UNPKG

@lotto24-angular/imports-orchestrator

Version:

Orchestrate dynamically imported components in Angular applications

37 lines 5.41 kB
import { Directive, ElementRef, inject, Input, Renderer2, } from '@angular/core'; import { Subscription } from 'rxjs'; import { ImportsOrchestratorLifecycleDirective } from './import-lifecycle.directive'; import * as i0 from "@angular/core"; export class ImportsOrchestratorCSSClassDirective { constructor() { this.subscriptions = new Subscription(); this.lifecycle = inject(ImportsOrchestratorLifecycleDirective, { self: true, }); this.subscriptions.add(this.lifecycle.importComponent.subscribe(this.onImportComponent.bind(this))); } onImportComponent(componentRef) { if (!this.cssClass) return; const renderer2 = componentRef.injector.get(Renderer2); const elementRef = componentRef.injector.get(ElementRef); const htmlElement = elementRef.nativeElement; const classes = this.cssClass.match(/[^\s]+/gi); classes?.forEach((c) => renderer2.addClass(htmlElement, c)); } ngOnDestroy() { this.subscriptions.unsubscribe(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ImportsOrchestratorCSSClassDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: ImportsOrchestratorCSSClassDirective, isStandalone: true, selector: "[importCSSClass]", inputs: { cssClass: "cssClass" }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ImportsOrchestratorCSSClassDirective, decorators: [{ type: Directive, args: [{ selector: '[importCSSClass]', standalone: true, }] }], ctorParameters: () => [], propDecorators: { cssClass: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNzcy1jbGFzcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ltcG9ydHMtb3JjaGVzdHJhdG9yL3NyYy9saWIvaG9zdC1kaXJlY3RpdmUvaW1wb3J0LWNzcy1jbGFzcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFNckYsTUFBTSxPQUFPLG9DQUFvQztJQVEvQztRQUxpQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxxQ0FBcUMsRUFBRTtZQUN6RSxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztRQUdELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2xDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxZQUFtQztRQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRTNCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxhQUE0QixDQUFDO1FBRTVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzhHQTdCVSxvQ0FBb0M7a0dBQXBDLG9DQUFvQzs7MkZBQXBDLG9DQUFvQztrQkFKaEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7d0RBRWlCLFFBQVE7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbXBvcnRzT3JjaGVzdHJhdG9yTGlmZWN5Y2xlRGlyZWN0aXZlIH0gZnJvbSAnLi9pbXBvcnQtbGlmZWN5Y2xlLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tpbXBvcnRDU1NDbGFzc10nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBJbXBvcnRzT3JjaGVzdHJhdG9yQ1NTQ2xhc3NEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgY3NzQ2xhc3MhOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxpZmVjeWNsZSA9IGluamVjdChJbXBvcnRzT3JjaGVzdHJhdG9yTGlmZWN5Y2xlRGlyZWN0aXZlLCB7XG4gICAgc2VsZjogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMubGlmZWN5Y2xlLmltcG9ydENvbXBvbmVudC5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMub25JbXBvcnRDb21wb25lbnQuYmluZCh0aGlzKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uSW1wb3J0Q29tcG9uZW50KGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPHVua25vd24+KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNzc0NsYXNzKSByZXR1cm47XG5cbiAgICBjb25zdCByZW5kZXJlcjIgPSBjb21wb25lbnRSZWYuaW5qZWN0b3IuZ2V0KFJlbmRlcmVyMik7XG4gICAgY29uc3QgZWxlbWVudFJlZiA9IGNvbXBvbmVudFJlZi5pbmplY3Rvci5nZXQoRWxlbWVudFJlZik7XG4gICAgY29uc3QgaHRtbEVsZW1lbnQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdCBjbGFzc2VzID0gdGhpcy5jc3NDbGFzcy5tYXRjaCgvW15cXHNdKy9naSk7XG4gICAgY2xhc3Nlcz8uZm9yRWFjaCgoYykgPT4gcmVuZGVyZXIyLmFkZENsYXNzKGh0bWxFbGVtZW50LCBjKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==