| '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; |
| |
| }; |