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.
		
		
		
		
		
			
		
			
				
					
					
						
							60 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							60 lines
						
					
					
						
							1.6 KiB
						
					
					
				| const colCache = require('../utils/col-cache');
 | |
| const Anchor = require('./anchor');
 | |
| 
 | |
| class Image {
 | |
|   constructor(worksheet, model) {
 | |
|     this.worksheet = worksheet;
 | |
|     this.model = model;
 | |
|   }
 | |
| 
 | |
|   get model() {
 | |
|     switch (this.type) {
 | |
|       case 'background':
 | |
|         return {
 | |
|           type: this.type,
 | |
|           imageId: this.imageId,
 | |
|         };
 | |
|       case 'image':
 | |
|         return {
 | |
|           type: this.type,
 | |
|           imageId: this.imageId,
 | |
|           hyperlinks: this.range.hyperlinks,
 | |
|           range: {
 | |
|             tl: this.range.tl.model,
 | |
|             br: this.range.br && this.range.br.model,
 | |
|             ext: this.range.ext,
 | |
|             editAs: this.range.editAs,
 | |
|           },
 | |
|         };
 | |
|       default:
 | |
|         throw new Error('Invalid Image Type');
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   set model({type, imageId, range, hyperlinks}) {
 | |
|     this.type = type;
 | |
|     this.imageId = imageId;
 | |
| 
 | |
|     if (type === 'image') {
 | |
|       if (typeof range === 'string') {
 | |
|         const decoded = colCache.decode(range);
 | |
|         this.range = {
 | |
|           tl: new Anchor(this.worksheet, {col: decoded.left, row: decoded.top}, -1),
 | |
|           br: new Anchor(this.worksheet, {col: decoded.right, row: decoded.bottom}, 0),
 | |
|           editAs: 'oneCell',
 | |
|         };
 | |
|       } else {
 | |
|         this.range = {
 | |
|           tl: new Anchor(this.worksheet, range.tl, 0),
 | |
|           br: range.br && new Anchor(this.worksheet, range.br, 0),
 | |
|           ext: range.ext,
 | |
|           editAs: range.editAs,
 | |
|           hyperlinks: hyperlinks || range.hyperlinks,
 | |
|         };
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = Image;
 |