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.
		
		
		
		
		
			
		
			
				
					
					
						
							65 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							65 lines
						
					
					
						
							1.5 KiB
						
					
					
				'use strict'; | 
						|
 | 
						|
exports.type = 'perItem'; | 
						|
 | 
						|
exports.active = true; | 
						|
 | 
						|
exports.description = 'removes editors namespaces, elements and attributes'; | 
						|
 | 
						|
var editorNamespaces = require('./_collections').editorNamespaces, | 
						|
    prefixes = []; | 
						|
 | 
						|
exports.params = { | 
						|
    additionalNamespaces: [] | 
						|
}; | 
						|
 | 
						|
/** | 
						|
 * Remove editors namespaces, elements and attributes. | 
						|
 * | 
						|
 * @example | 
						|
 * <svg xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"> | 
						|
 * <sodipodi:namedview/> | 
						|
 * <path sodipodi:nodetypes="cccc"/> | 
						|
 * | 
						|
 * @param {Object} item current iteration item | 
						|
 * @param {Object} params plugin params | 
						|
 * @return {Boolean} if false, item will be filtered out | 
						|
 * | 
						|
 * @author Kir Belevich | 
						|
 */ | 
						|
exports.fn = function(item, params) { | 
						|
 | 
						|
    if (Array.isArray(params.additionalNamespaces)) { | 
						|
        editorNamespaces = editorNamespaces.concat(params.additionalNamespaces); | 
						|
    } | 
						|
 | 
						|
    if (item.elem) { | 
						|
 | 
						|
        if (item.isElem('svg')) { | 
						|
 | 
						|
            item.eachAttr(function(attr) { | 
						|
                if (attr.prefix === 'xmlns' && editorNamespaces.indexOf(attr.value) > -1) { | 
						|
                    prefixes.push(attr.local); | 
						|
 | 
						|
                    // <svg xmlns:sodipodi=""> | 
						|
                    item.removeAttr(attr.name); | 
						|
                } | 
						|
            }); | 
						|
 | 
						|
        } | 
						|
 | 
						|
        // <* sodipodi:*=""> | 
						|
        item.eachAttr(function(attr) { | 
						|
            if (prefixes.indexOf(attr.prefix) > -1) { | 
						|
                item.removeAttr(attr.name); | 
						|
            } | 
						|
        }); | 
						|
 | 
						|
        // <sodipodi:*> | 
						|
        if (prefixes.indexOf(item.prefix) > -1) { | 
						|
            return false; | 
						|
        } | 
						|
 | 
						|
    } | 
						|
 | 
						|
};
 | 
						|
 |