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