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
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;
|