'use strict'; /** * @typedef {import('../lib/types').XastElement} XastElement */ const { visitSkip, detachNodeFromParent } = require('../lib/xast.js'); const JSAPI = require('../lib/svgo/jsAPI.js'); exports.name = 'mergeStyles'; exports.type = 'visitor'; exports.active = true; exports.description = 'merge multiple style elements into one'; /** * Merge multiple style elements into one. * * @author strarsis * * @type {import('../lib/types').Plugin} */ exports.fn = () => { /** * @type {null | XastElement} */ let firstStyleElement = null; let collectedStyles = ''; let styleContentType = 'text'; return { element: { enter: (node, parentNode) => { // skip content if (node.name === 'foreignObject') { return visitSkip; } // collect style elements if (node.name !== 'style') { return; } // skip