{"version":3,"file":"chunk-g18mo6ek.js","sources":["packages/vanilla/lib/features/svg/src/svg.component.ts","packages/vanilla/lib/features/svg/src/svg.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\n\nimport { ContentImage, WindowEvent } from '@frontend/vanilla/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n selector: 'vn-svg',\n templateUrl: './svg.component.html',\n})\nexport class SvgComponent implements OnInit {\n @ViewChild('svg') public svg: ElementRef;\n @Input() containerClass?: string;\n @Input() displayMode = 'svg';\n @Input() image: ContentImage;\n @Input() viewBox?: string;\n @Input() defaultAnimation: boolean;\n @Input() customAnimation: string;\n @Input() iconType: string;\n @Input() size: string;\n @Input() cssClass: string;\n @Input() animationClass?: string;\n\n constructor(private httpClient: HttpClient) {}\n\n ngOnInit() {\n this.httpClient.get(this.image.src, { responseType: 'text' }).subscribe((value) => {\n const doc = new DOMParser().parseFromString(value, 'image/svg+xml');\n const svgImage = doc.getElementsByTagName('svg')[0]!;\n\n if (svgImage) {\n if (!svgImage.hasAttribute('viewBox') && this.viewBox) {\n svgImage.setAttribute('viewBox', this.viewBox);\n }\n\n if (this.displayMode === 'svg-icon') {\n this.setClass(svgImage);\n this.setStyle(svgImage);\n }\n }\n\n this.svg.nativeElement.appendChild(svgImage);\n });\n }\n\n setClass(svgImage: SVGElement) {\n svgImage.classList.add('th-icon');\n\n if (this.cssClass) {\n const classes = this.cssClass.split(',');\n classes.forEach((c) => svgImage.classList.add(c.trim()));\n }\n\n switch (this.iconType) {\n case 'stroke':\n svgImage.classList.add('th-icon--stk');\n if (this.defaultAnimation) {\n svgImage.classList.add('th-icon-animate-draw');\n }\n break;\n case 'stroke--bold':\n svgImage.classList.add('th-icon-stk', 'th-icon-stk--bold');\n break;\n case 'stroke--thin':\n svgImage.classList.add('th-icon-stk', 'th-icon-stk--thin');\n break;\n case 'filled':\n svgImage.classList.add('th-icon--fill');\n if (this.defaultAnimation) {\n svgImage.classList.add('th-icon-animate-fill');\n }\n break;\n }\n\n switch (this.size) {\n case 'big':\n svgImage.classList.add('th-icon--lg');\n break;\n case 'small':\n svgImage.classList.add('th-icon--sm');\n break;\n }\n }\n\n setStyle(svgImage: SVGElement) {\n if (this.image.height) {\n svgImage.style.setProperty('height', `${this.image.height}px`);\n }\n\n if (this.image.width) {\n svgImage.style.setProperty('width', `${this.image.width}px`);\n }\n\n if (this.customAnimation && !this.defaultAnimation) {\n const customStyle = this.customAnimation.split(';');\n\n customStyle.forEach((s) => {\n const style = s.split(':');\n\n if (style?.length > 0) {\n svgImage.style.setProperty(style[0]!.trim(), style[1]!);\n }\n });\n }\n }\n\n animate() {\n if (this.animationClass) {\n const animationClass = this.animationClass;\n\n this.svg.nativeElement.classList.add(animationClass);\n this.svg.nativeElement.addEventListener(WindowEvent.AnimationEnd, () => this.svg.nativeElement.classList.remove(animationClass));\n }\n }\n}\n","
\n"],"names":["SvgComponent","constructor","httpClient","displayMode","ngOnInit","get","image","src","responseType","subscribe","value","svgImage","DOMParser","parseFromString","getElementsByTagName","hasAttribute","viewBox","setAttribute","setClass","setStyle","svg","nativeElement","appendChild","classList","add","cssClass","split","forEach","c","trim","iconType","defaultAnimation","size","height","style","setProperty","width","customAnimation","s","length","animate","animationClass","addEventListener","WindowEvent","AnimationEnd","remove","ɵɵdirectiveInject","HttpClient","selectors","viewQuery","rf","ctx","u","C","v","y","p","ɵɵelementStart","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵelementEnd","ɵɵproperty","containerClass","CommonModule","NgClass","encapsulation","_SvgComponent"],"mappings":"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"}