You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
exports.type = 'full';
exports.active = false;
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: - addAttributesToSVGElement: attribute: "mySvg"
plugins: - addAttributesToSVGElement: attributes: ["mySvg", "size-big"]
plugins: - addAttributesToSVGElement: attributes: - focusable: false - data-image: icon`;
/** * Add attributes to an outer <svg> element. Example config: * * plugins: * - addAttributesToSVGElement: * attribute: 'data-icon' * * plugins: * - addAttributesToSVGElement: * attributes: ['data-icon', 'data-disabled'] * * plugins: * - addAttributesToSVGElement: * attributes: * - focusable: false * - data-image: icon * * @author April Arcus */ exports.fn = function(data, params) { if (!params || !(Array.isArray(params.attributes) || params.attribute)) { console.error(ENOCLS); return data; }
var attributes = params.attributes || [ params.attribute ], svg = data.content[0];
if (svg.isElem('svg')) { attributes.forEach(function (attribute) { if (typeof attribute === 'string') { if (!svg.hasAttr(attribute)) { svg.addAttr({ name: attribute, prefix: '', local: attribute }); } } else if (typeof attribute === 'object') { Object.keys(attribute).forEach(function (key) { if (!svg.hasAttr(key)) { svg.addAttr({ name: key, value: attribute[key], prefix: '', local: key }); } }); } }); }
return data;
};
|