| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 'use strict';exports.name = 'addClassesToSVGElement';exports.type = 'visitor';exports.active = false;exports.description = 'adds classnames to an outer <svg> element';var ENOCLS = `Error in plugin "addClassesToSVGElement": absent parameters.It should have a list of classes in "classNames" or one "className".Config example:plugins: [  {    name: "addClassesToSVGElement",    params: {      className: "mySvg"    }  }]plugins: [  {    name: "addClassesToSVGElement",    params: {      classNames: ["mySvg", "size-big"]    }  }]`;/** * Add classnames to an outer <svg> element. Example config: * * plugins: [ *   { *     name: "addClassesToSVGElement", *     params: { *       className: "mySvg" *     } *   } * ] * * plugins: [ *   { *     name: "addClassesToSVGElement", *     params: { *       classNames: ["mySvg", "size-big"] *     } *   } * ] * * @author April Arcus * * @type {import('../lib/types').Plugin<{ *   className?: string, *   classNames?: Array<string> * }>} */exports.fn = (root, params) => {  if (    !(Array.isArray(params.classNames) && params.classNames.some(String)) &&    !params.className  ) {    console.error(ENOCLS);    return null;  }  const classNames = params.classNames || [params.className];  return {    element: {      enter: (node, parentNode) => {        if (node.name === 'svg' && parentNode.type === 'root') {          const classList = new Set(            node.attributes.class == null              ? null              : node.attributes.class.split(' ')          );          for (const className of classNames) {            if (className != null) {              classList.add(className);            }          }          node.attributes.class = Array.from(classList).join(' ');        }      },    },  };};
 |