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
			| 
								 
											3 years ago
										 
									 | 
							
								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;
							 |