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.
		
		
		
		
		
			
		
			
				
					
					
						
							83 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							83 lines
						
					
					
						
							2.0 KiB
						
					
					
				| '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;
 | |
| 
 | |
| };
 |