svg-sprite-generation-loader
Version:
Webpack loader for generating external svg symbol sprite files
21 lines (17 loc) • 772 B
JavaScript
class SvgSpriteGenerationState {
constructor() {
this.sprites = {};
}
addSpriteIcon(icon, spriteFilePath) {
this.sprites[spriteFilePath] = this.sprites[spriteFilePath] || {};
this.sprites[spriteFilePath][icon.symbolId] = icon;
}
getSpriteContent(spriteFilePath, options = {}) {
return `${Object.keys(this.sprites[spriteFilePath]).reduce(
(result, iconId) =>
`${result}<symbol viewBox="${this.sprites[spriteFilePath][iconId].attributes.viewBox}"${options.unsetSymbolFill ? '' : ' fill="none"'} id="${iconId}">${this.sprites[spriteFilePath][iconId].content}</symbol>`,
'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">'
)}</svg>`;
}
}
module.exports = new SvgSpriteGenerationState();