39 lines
		
	
	
		
			925 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			925 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | ||
| 
 | ||
| exports.name = 'removeNonInheritableGroupAttrs';
 | ||
| 
 | ||
| exports.type = 'perItem';
 | ||
| 
 | ||
| exports.active = true;
 | ||
| 
 | ||
| exports.description =
 | ||
|   'removes non-inheritable group’s presentational attributes';
 | ||
| 
 | ||
| const {
 | ||
|   inheritableAttrs,
 | ||
|   attrsGroups,
 | ||
|   presentationNonInheritableGroupAttrs,
 | ||
| } = require('./_collections');
 | ||
| 
 | ||
| /**
 | ||
|  * Remove non-inheritable group's "presentation" attributes.
 | ||
|  *
 | ||
|  * @param {Object} item current iteration item
 | ||
|  * @return {Boolean} if false, item will be filtered out
 | ||
|  *
 | ||
|  * @author Kir Belevich
 | ||
|  */
 | ||
| exports.fn = function (item) {
 | ||
|   if (item.type === 'element' && item.name === 'g') {
 | ||
|     for (const name of Object.keys(item.attributes)) {
 | ||
|       if (
 | ||
|         attrsGroups.presentation.includes(name) === true &&
 | ||
|         inheritableAttrs.includes(name) === false &&
 | ||
|         presentationNonInheritableGroupAttrs.includes(name) === false
 | ||
|       ) {
 | ||
|         delete item.attributes[name];
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| };
 |