UNPKG

ng-inline-svg-2

Version:

Angular directive for inserting an SVG inline within an element.

59 lines (58 loc) 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InlineSVGService = void 0; var core_1 = require("@angular/core"); var i0 = require("@angular/core"); var InlineSVGService = (function () { function InlineSVGService(rendererFactory) { this._ranScripts = {}; this._renderer = rendererFactory.createRenderer(null, null); } InlineSVGService.prototype.insertEl = function (dir, parentEl, content, replaceContents, prepend) { if (replaceContents && !prepend) { var parentNode = dir._prevSVG && dir._prevSVG.parentNode; if (parentNode) { this._renderer.removeChild(parentNode, dir._prevSVG); } parentEl.innerHTML = ''; } if (prepend) { this._renderer.insertBefore(parentEl, content, parentEl.firstChild); } else { this._renderer.appendChild(parentEl, content); } if (content.nodeName === 'svg') { dir._prevSVG = content; } }; InlineSVGService.prototype.evalScripts = function (svg, url, evalMode) { var scripts = svg.querySelectorAll('script'); var scriptsToEval = []; for (var i = 0; i < scripts.length; i++) { var scriptType = scripts[i].getAttribute('type'); if (!scriptType || scriptType === 'application/ecmascript' || scriptType === 'application/javascript') { var script = scripts[i].innerText || scripts[i].textContent; scriptsToEval.push(script); this._renderer.removeChild(scripts[i].parentNode, scripts[i]); } } if (scriptsToEval.length > 0 && (evalMode === "always" || (evalMode === "once" && !this._ranScripts[url]))) { for (var i = 0; i < scriptsToEval.length; i++) { new Function(scriptsToEval[i])(window); } this._ranScripts[url] = true; } }; InlineSVGService.ɵfac = function InlineSVGService_Factory(t) { return new (t || InlineSVGService)(i0.ɵɵinject(i0.RendererFactory2)); }; InlineSVGService.ɵprov = i0.ɵɵdefineInjectable({ token: InlineSVGService, factory: InlineSVGService.ɵfac, providedIn: 'root' }); return InlineSVGService; }()); exports.InlineSVGService = InlineSVGService; (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InlineSVGService, [{ type: core_1.Injectable, args: [{ providedIn: 'root' }] }], function () { return [{ type: i0.RendererFactory2 }]; }, null); })();