30 lines
767 B
JavaScript
30 lines
767 B
JavaScript
const { renderer } = require('posthtml-svg-mode');
|
|
const defaultFactory = require('./sprite-factory');
|
|
|
|
class Sprite {
|
|
constructor({ tree, filename }) {
|
|
this.tree = tree;
|
|
this.filename = filename;
|
|
}
|
|
|
|
/**
|
|
* @param {Object} options
|
|
* @param {Array<SpriteSymbol>} options.symbols
|
|
* @param {string} options.filename Output sprite filename
|
|
* @param {Function<Promise<PostHTMLProcessingResult>>} [options.factory]
|
|
* @return {Promise<Sprite>}
|
|
*/
|
|
static create(options) {
|
|
const { symbols, filename, factory = defaultFactory } = options;
|
|
return factory({ symbols }).then(({ tree }) => new Sprite({ tree, filename }));
|
|
}
|
|
|
|
/**
|
|
* @return {string}
|
|
*/
|
|
render() {
|
|
return renderer(this.tree);
|
|
}
|
|
}
|
|
|
|
module.exports = Sprite;
|