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.
		
		
		
		
		
			
		
			
				
					66 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					66 lines
				
				1.2 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								const _ = require('../utils/under-dash');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class Note {
							 | 
						||
| 
								 | 
							
								  constructor(note) {
							 | 
						||
| 
								 | 
							
								    this.note = note;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  get model() {
							 | 
						||
| 
								 | 
							
								    let value = null;
							 | 
						||
| 
								 | 
							
								    switch (typeof this.note) {
							 | 
						||
| 
								 | 
							
								      case 'string':
							 | 
						||
| 
								 | 
							
								        value = {
							 | 
						||
| 
								 | 
							
								          type: 'note',
							 | 
						||
| 
								 | 
							
								          note: {
							 | 
						||
| 
								 | 
							
								            texts: [
							 | 
						||
| 
								 | 
							
								              {
							 | 
						||
| 
								 | 
							
								                text: this.note,
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        break;
							 | 
						||
| 
								 | 
							
								      default:
							 | 
						||
| 
								 | 
							
								        value = {
							 | 
						||
| 
								 | 
							
								          type: 'note',
							 | 
						||
| 
								 | 
							
								          note: this.note,
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								        break;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    // Suitable for all cell comments
							 | 
						||
| 
								 | 
							
								    return _.deepMerge({}, Note.DEFAULT_CONFIGS, value);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  set model(value) {
							 | 
						||
| 
								 | 
							
								    const {note} = value;
							 | 
						||
| 
								 | 
							
								    const {texts} = note;
							 | 
						||
| 
								 | 
							
								    if (texts.length === 1 && Object.keys(texts[0]).length === 1) {
							 | 
						||
| 
								 | 
							
								      this.note = texts[0].text;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      this.note = note;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  static fromModel(model) {
							 | 
						||
| 
								 | 
							
								    const note = new Note();
							 | 
						||
| 
								 | 
							
								    note.model = model;
							 | 
						||
| 
								 | 
							
								    return note;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note.DEFAULT_CONFIGS = {
							 | 
						||
| 
								 | 
							
								  note: {
							 | 
						||
| 
								 | 
							
								    margins: {
							 | 
						||
| 
								 | 
							
								      insetmode: 'auto',
							 | 
						||
| 
								 | 
							
								      inset: [0.13, 0.13, 0.25, 0.25],
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    protection: {
							 | 
						||
| 
								 | 
							
								      locked: 'True',
							 | 
						||
| 
								 | 
							
								      lockText: 'True',
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    editAs: 'absolute',
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = Note;
							 |