UNPKG

theme-loader

Version:

theme-loader

29 lines (24 loc) 737 B
import path from 'path'; import jsdom from 'jsdom'; class Icon { constructor(name, node) { this.name = name; this.children = node.innerHTML; this.attributes = Array.prototype.slice.call(node.attributes) .map((x) => ({ name: x.name, value: x.value })) .reduce((attrs, x) => Object.assign({ [x.name]: x.value }, attrs), {}); } static parse(resourcePath, source) { const name = path.parse(resourcePath).name; return new Promise((resolve, reject) => { jsdom.env(source, (error, window) => { if (error) { reject(error); } else { resolve(new Icon(name, window.document.getElementsByTagName('svg')[0])); } }); }); } }; export default Icon;