web-apps/apps/presentationeditor/mobile/src/store/focusObjects.js
2021-07-22 17:48:46 +03:00

100 lines
3 KiB
JavaScript

import {action, observable, computed, makeObservable} from 'mobx';
export class storeFocusObjects {
constructor() {
makeObservable(this, {
_focusObjects: observable,
resetFocusObjects: action,
settings: computed,
slideObject: computed,
paragraphObject: computed,
paragraphLocked: computed,
shapeObject: computed,
imageObject: computed,
tableObject: computed,
isTableInStack: computed,
chartObject: computed,
linkObject: computed,
isEditLocked: computed
});
}
_focusObjects = [];
resetFocusObjects(objects) {
this._focusObjects = objects;
}
get settings() {
return !!this.intf ? this.intf.filterFocusObjects() : null;
}
get slideObject() {
return !!this.intf ? this.intf.getSlideObject() : null;
}
get paragraphObject() {
return !!this.intf ? this.intf.getParagraphObject() : null;
}
get paragraphLocked() {
let _paragraphLocked = false;
for (let object of this._focusObjects) {
if (Asc.c_oAscTypeSelectElement.Paragraph == object.get_ObjectType()) {
_paragraphLocked = object.get_ObjectValue().get_Locked();
}
}
return _paragraphLocked;
}
get shapeObject() {
return !!this.intf ? this.intf.getShapeObject() : null;
}
get imageObject() {
return !!this.intf ? this.intf.getImageObject() : null;
}
get tableObject() {
return !!this.intf ? this.intf.getTableObject() : null;
}
get isTableInStack() {
for (let object of this._focusObjects) {
if (object.get_ObjectType() == Asc.c_oAscTypeSelectElement.Table) {
return true;
}
}
return false;
}
get chartObject() {
return !!this.intf ? this.intf.getChartObject() : null;
}
get linkObject() {
return !!this.intf ? this.intf.getLinkObject() : null;
}
get isEditLocked() {
if (this._focusObjects.length > 0) {
let slide_deleted = false,
slide_lock = false,
no_object = true,
objectLocked = false;
this._focusObjects.forEach((object) => {
const type = object.get_ObjectType();
const objectValue = object.get_ObjectValue();
if (type === Asc.c_oAscTypeSelectElement.Slide) {
slide_deleted = objectValue.get_LockDelete();
slide_lock = objectValue.get_LockLayout() || objectValue.get_LockBackground() || objectValue.get_LockTransition() || objectValue.get_LockTiming();
} else if (objectValue && typeof objectValue.get_Locked === 'function') {
no_object = false;
objectLocked = objectLocked || objectValue.get_Locked();
}
});
return (slide_deleted || (objectLocked || no_object) && slide_lock);
}
}
}