diff options
Diffstat (limited to 'node_modules/svgo/plugins/addAttributesToSVGElement.js')
| -rw-r--r-- | node_modules/svgo/plugins/addAttributesToSVGElement.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/node_modules/svgo/plugins/addAttributesToSVGElement.js b/node_modules/svgo/plugins/addAttributesToSVGElement.js new file mode 100644 index 00000000..845cb056 --- /dev/null +++ b/node_modules/svgo/plugins/addAttributesToSVGElement.js @@ -0,0 +1,82 @@ +'use strict'; + +exports.name = 'addAttributesToSVGElement'; +exports.description = 'adds attributes to an outer <svg> element'; + +var ENOCLS = `Error in plugin "addAttributesToSVGElement": absent parameters. +It should have a list of "attributes" or one "attribute". +Config example: + +plugins: [ + { + name: 'addAttributesToSVGElement', + params: { + attribute: "mySvg" + } + } +] + +plugins: [ + { + name: 'addAttributesToSVGElement', + params: { + attributes: ["mySvg", "size-big"] + } + } +] + +plugins: [ + { + name: 'addAttributesToSVGElement', + params: { + attributes: [ + { + focusable: false + }, + { + 'data-image': icon + } + ] + } + } +] +`; + +/** + * Add attributes to an outer <svg> element. Example config: + * + * @author April Arcus + * + * @type {import('./plugins-types').Plugin<'addAttributesToSVGElement'>} + */ +exports.fn = (root, params) => { + if (!Array.isArray(params.attributes) && !params.attribute) { + console.error(ENOCLS); + return null; + } + const attributes = params.attributes || [params.attribute]; + return { + element: { + enter: (node, parentNode) => { + if (node.name === 'svg' && parentNode.type === 'root') { + for (const attribute of attributes) { + if (typeof attribute === 'string') { + if (node.attributes[attribute] == null) { + // @ts-ignore disallow explicit nullable attribute value + node.attributes[attribute] = undefined; + } + } + if (typeof attribute === 'object') { + for (const key of Object.keys(attribute)) { + if (node.attributes[key] == null) { + // @ts-ignore disallow explicit nullable attribute value + node.attributes[key] = attribute[key]; + } + } + } + } + } + }, + }, + }; +}; |
