UNPKG

ngx-slice-kit

Version:

[![npm version](https://badge.fury.io/js/ngx-slice-kit.svg)](https://badge.fury.io/js/ngx-slice-kit)

106 lines 14 kB
import { Component, Input, ViewEncapsulation } from '@angular/core'; import { GLYPHS } from './icon.glyphs'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "@angular/platform-browser"; const DEFAULT_SIZE = 24; const DEFAULT_COLOR = 'var(--base)'; const DEFAULT_ICON = 'ngx-slice'; const INKBE_ICON = 'inkbe'; const INKBE_COEFF = 70 / 32; export class IconComponent { constructor(elementRef, sanitizer, renderer) { this.elementRef = elementRef; this.sanitizer = sanitizer; this.renderer = renderer; this.$color = new BehaviorSubject(DEFAULT_COLOR); this.$size = new BehaviorSubject(DEFAULT_SIZE); this.icon = DEFAULT_ICON; this.inline = true; } set size(size) { this.$size.next(size); this.renderComponentSvg(); // is it even good? } get size() { return this.$size.getValue(); } set color(c) { this.$color.next(c); this.renderComponentSvg(); } get color() { return this.$color.getValue(); } prepareSymbol(name, color) { if (this.preparing) { return; } this.preparing = true; let symbol = GLYPHS[name] || DEFAULT_ICON; if (color?.length > 0) { symbol = symbol.replace(`fill="var(--base)"`, `fill="${color}"`); } if (this.size > DEFAULT_SIZE || this.size < DEFAULT_SIZE) { symbol = symbol.replace(`height="24px"`, `height="${this.size}px"`); if (name === INKBE_ICON) { symbol = symbol.replace(`width="52.5px"`, `width="${this.size * INKBE_COEFF}px"`); } else { symbol = symbol.replace(`width="24px"`, `width="${this.size}px"`); } } this.preparing = false; return symbol; } createIcon(symbol) { this.renderer.createElement('svg', symbol); } createSafeHtml(symbol) { return this.sanitizer.bypassSecurityTrustHtml(symbol); } renderComponentSvg() { this.svg = this.createSafeHtml(this.prepareSymbol(this.icon, this.color)); } setIconColor(color) { if (color && color.length > 0) { const symbol = this.elementRef.nativeElement.querySelector(`[class="icon"]`); this.renderer.setAttribute(symbol, 'fill', color); } } ngAfterContentInit() { const svg = this.elementRef.nativeElement.querySelector(`[fill="var(--base)"]`); if (svg) { this.renderer.setAttribute(svg, 'height', `${this.size}px`); this.renderer.setAttribute(svg, 'width', `${this.size}px`); this.renderer.setAttribute(svg, `fill`, this.color); } } ngOnInit() { if (!this.icon) { this.icon = 'ngx-slice'; } this.svg = this.createSafeHtml(this.prepareSymbol(this.icon, this.color)); } } IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: IconComponent, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); IconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: IconComponent, selector: "sdk-icon", inputs: { icon: "icon", image: "image", inline: "inline", size: "size", color: "color" }, ngImport: i0, template: ` <span [innerHTML]="svg"></span> `, isInline: true, styles: [":host{display:inline-flex;margin:0;padding:0;font-size:0;line-height:0}:host *{line-height:0;font-size:0}\n"], encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: IconComponent, decorators: [{ type: Component, args: [{ selector: 'sdk-icon', template: ` <span [innerHTML]="svg"></span> `, encapsulation: ViewEncapsulation.None, styles: [":host{display:inline-flex;margin:0;padding:0;font-size:0;line-height:0}:host *{line-height:0;font-size:0}\n"] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.Renderer2 }]; }, propDecorators: { icon: [{ type: Input }], image: [{ type: Input }], inline: [{ type: Input }], size: [{ type: Input }], color: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25neC1zbGljZS1raXQvc3JjL2xpYi9idXR0b25zL2ljb24vaWNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQWMsS0FBSyxFQUFxQixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUV2QyxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDO0FBQ3BDLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQztBQUNqQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFDM0IsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQVU1QixNQUFNLE9BQU8sYUFBYTtJQTZCdEIsWUFDWSxVQUFzQixFQUN0QixTQUF1QixFQUN2QixRQUFtQjtRQUZuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTlCdkIsV0FBTSxHQUE0QixJQUFJLGVBQWUsQ0FBUyxhQUFhLENBQUMsQ0FBQztRQUM3RSxVQUFLLEdBQTRCLElBQUksZUFBZSxDQUFTLFlBQVksQ0FBQyxDQUFDO1FBSW5FLFNBQUksR0FBVyxZQUFZLENBQUM7UUFFNUIsV0FBTSxHQUFZLElBQUksQ0FBQztJQXlCdkMsQ0FBQztJQXZCRCxJQUFvQixJQUFJLENBQUMsSUFBWTtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLG1C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WSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN2RDtJQUNMLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7MEdBOUZRLGFBQWE7OEZBQWIsYUFBYSwwSUFOWjs7S0FFVDsyRkFJUSxhQUFhO2tCQVJ6QixTQUFTOytCQUNJLFVBQVUsWUFDVjs7S0FFVCxpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJO29KQVNyQixJQUFJO3NCQUFuQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFFYyxJQUFJO3NCQUF2QixLQUFLO2dCQVNjLEtBQUs7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEdMWVBIUyB9IGZyb20gJy4vaWNvbi5nbHlwaHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IERFRkFVTFRfU0laRSA9IDI0O1xuY29uc3QgREVGQVVMVF9DT0xPUiA9ICd2YXIoLS1iYXNlKSc7XG5jb25zdCBERUZBVUxUX0lDT04gPSAnbmd4LXNsaWNlJztcbmNvbnN0IElOS0JFX0lDT04gPSAnaW5rYmUnO1xuY29uc3QgSU5LQkVfQ09FRkYgPSA3MCAvIDMyO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Nkay1pY29uJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInN2Z1wiPjwvc3Bhbj5cbiAgICBgLFxuICAgIHN0eWxlVXJsczogWycuL2ljb24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcblxuICAgIHByaXZhdGUgJGNvbG9yOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihERUZBVUxUX0NPTE9SKTtcbiAgICBwcml2YXRlICRzaXplOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihERUZBVUxUX1NJWkUpO1xuICAgIHByaXZhdGUgcHJlcGFyaW5nOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdmc6IFNhZmVIdG1sO1xuXG4gICAgQElucHV0KCkgcHVibGljIGljb246IHN0cmluZyA9IERFRkFVTFRfSUNPTjtcbiAgICBASW5wdXQoKSBwdWJsaWMgaW1hZ2U6IHN0cmluZztcbiAgICBASW5wdXQoKSBwdWJsaWMgaW5saW5lOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2l6ZShzaXplOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy4kc2l6ZS5uZXh0KHNpemUpO1xuICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFN2ZygpOyAvLyBpcyBpdCBldmVuIGdvb2Q/XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzaXplLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgcHVibGljIHNldCBjb2xvcihjOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy4kY29sb3IubmV4dChjKTtcbiAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTdmcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbG9yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLiRjb2xvci5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVwYXJlU3ltYm9sKG5hbWU6IHN0cmluZywgY29sb3I/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5wcmVwYXJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJlcGFyaW5nID0gdHJ1ZTtcblxuICAgICAgICBsZXQgc3ltYm9sID0gR0xZUEhTW25hbWVdIHx8IERFRkFVTFRfSUNPTjtcbiAgICAgICAgaWYgKGNvbG9yPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzeW1ib2wgPSBzeW1ib2wucmVwbGFjZShgZmlsbD1cInZhcigtLWJhc2UpXCJgLCBgZmlsbD1cIiR7Y29sb3J9XCJgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNpemUgPiBERUZBVUxUX1NJWkUgfHwgdGhpcy5zaXplIDwgREVGQVVMVF9TSVpFKSB7XG4gICAgICAgICAgICBzeW1ib2wgPSBzeW1ib2wucmVwbGFjZShgaGVpZ2h0PVwiMjRweFwiYCwgYGhlaWdodD1cIiR7dGhpcy5zaXplfXB4XCJgKTtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSBJTktCRV9JQ09OKSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sID0gc3ltYm9sLnJlcGxhY2UoYHdpZHRoPVwiNTIuNXB4XCJgLCBgd2lkdGg9XCIke3RoaXMuc2l6ZSAqIElOS0JFX0NPRUZGfXB4XCJgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sID0gc3ltYm9sLnJlcGxhY2UoYHdpZHRoPVwiMjRweFwiYCwgYHdpZHRoPVwiJHt0aGlzLnNpemV9cHhcImApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmVwYXJpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHN5bWJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlSWNvbihzeW1ib2w6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3N2ZycsIHN5bWJvbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVNhZmVIdG1sKHN5bWJvbDogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ltYm9sKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVyQ29tcG9uZW50U3ZnKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN2ZyA9IHRoaXMuY3JlYXRlU2FmZUh0bWwodGhpcy5wcmVwYXJlU3ltYm9sKHRoaXMuaWNvbiwgdGhpcy5jb2xvcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRJY29uQ29sb3IoY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoY29sb3IgJiYgY29sb3IubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3Qgc3ltYm9sID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihgW2NsYXNzPVwiaWNvblwiXWApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc3ltYm9sLCAnZmlsbCcsIGNvbG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFtmaWxsPVwidmFyKC0tYmFzZSlcIl1gKTtcbiAgICAgICAgaWYgKHN2Zykge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc3ZnLCAnaGVpZ2h0JywgYCR7dGhpcy5zaXplfXB4YCk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShzdmcsICd3aWR0aCcsIGAke3RoaXMuc2l6ZX1weGApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoc3ZnLCBgZmlsbGAsIHRoaXMuY29sb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaWNvbikge1xuICAgICAgICAgICAgdGhpcy5pY29uID0gJ25neC1zbGljZSc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdmcgPSB0aGlzLmNyZWF0ZVNhZmVIdG1sKHRoaXMucHJlcGFyZVN5bWJvbCh0aGlzLmljb24sIHRoaXMuY29sb3IpKTtcbiAgICB9XG59XG4iXX0=