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