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