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.
		
		
		
		
		
			
		
			
				
					
					
						
							30 lines
						
					
					
						
							767 B
						
					
					
				
			
		
		
	
	
							30 lines
						
					
					
						
							767 B
						
					
					
				const { renderer } = require('posthtml-svg-mode'); | 
						|
const defaultFactory = require('./sprite-factory'); | 
						|
 | 
						|
class Sprite { | 
						|
  constructor({ tree, filename }) { | 
						|
    this.tree = tree; | 
						|
    this.filename = filename; | 
						|
  } | 
						|
 | 
						|
  /** | 
						|
   * @param {Object} options | 
						|
   * @param {Array<SpriteSymbol>} options.symbols | 
						|
   * @param {string} options.filename Output sprite filename | 
						|
   * @param {Function<Promise<PostHTMLProcessingResult>>} [options.factory] | 
						|
   * @return {Promise<Sprite>} | 
						|
   */ | 
						|
  static create(options) { | 
						|
    const { symbols, filename, factory = defaultFactory } = options; | 
						|
    return factory({ symbols }).then(({ tree }) => new Sprite({ tree, filename })); | 
						|
  } | 
						|
 | 
						|
  /** | 
						|
   * @return {string} | 
						|
   */ | 
						|
  render() { | 
						|
    return renderer(this.tree); | 
						|
  } | 
						|
} | 
						|
 | 
						|
module.exports = Sprite;
 | 
						|
 |