ngx-unused-css
Version:
Detect unused CSS in angular components
55 lines • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var jsdom_1 = require("jsdom");
var combine_1 = (0, tslib_1.__importDefault)(require("./combine"));
var extractClassesFromNgClass_1 = (0, tslib_1.__importDefault)(require("./extractClassesFromNgClass"));
/**
* Create copy of reference element and add classes passed as a params
* @param { JSDOM } dom
* @param { element } e
* @param { Array<string> } classes
*/
function createCopyOfElementWithClasses(dom, e, classes) {
var el = dom.window.document.createElement(e.tagName);
e.classList.forEach(function (c) {
el.classList.add(c);
});
classes.forEach(function (c) { return el.classList.add(c); });
return el;
}
/**
* Parse html template and find all elements which contains ngClass attribute, if found
* make copy of elements on the same level with all possible combinations of classes found
* in ngClass configuration
* @param {string} html
* @param {string} cssPath
*/
function parseNgClass(html, cssPath) {
var dom = new jsdom_1.JSDOM(html);
var all = dom.window.document.getElementsByTagName('*');
var inputList = Array.prototype.slice.call(all);
inputList.forEach(function (e) {
var attrs = Array.prototype.slice.call(e.attributes);
attrs.forEach(function (a) {
if (a.name === '[ngclass]') {
var classes = (0, extractClassesFromNgClass_1.default)(a.value);
e.removeAttribute('[ngclass]');
/*
console.log(
'ngClass removed from the element, classes found: ',
classes
);
*/
var classCombinations = (0, combine_1.default)(classes);
classCombinations.forEach(function (c) {
var el = createCopyOfElementWithClasses(dom, e, c);
e.parentNode.insertBefore(el, e.nextSibling);
});
}
});
});
return dom.serialize();
}
exports.default = parseNgClass;
//# sourceMappingURL=parseNgClass.js.map