shift73k/assets_old/node_modules/svg-baker/lib/symbol-factory.js

32 lines
1 KiB
JavaScript

const processor = require('posthtml-svg-mode');
const renameId = require('posthtml-rename-id');
const normalizeViewBox = require('./transformations/normalize-viewbox');
const rasterToSVG = require('./transformations/raster-to-svg');
const prefixStyleSelectors = require('./transformations/prefix-style-selectors');
const svgToSymbol = require('./transformations/svg-to-symbol');
/**
* @param {Object} options
* @param {string} [options.id]
* @param {string} options.content
* @param {FileRequest} options.request
* @return {Promise<PostHTMLProcessingResult>}
*/
function symbolFactory(options) {
const { id } = options;
const plugins = [];
// convert raster image to svg
const content = Buffer.isBuffer(options.content)
? rasterToSVG(options.content)
: options.content;
plugins.push(normalizeViewBox());
plugins.push(prefixStyleSelectors(`#${id}`));
plugins.push(renameId(`${id}_[id]`));
plugins.push(svgToSymbol({ id }));
return processor(plugins).process(content);
}
module.exports = symbolFactory;