devexpress-richedit
Version:
DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.
92 lines (91 loc) • 4.27 kB
JavaScript
import { Flag } from '@devexpress/utils/lib/class/flag';
import { ParagraphPropertiesMask } from '../../paragraph/paragraph-properties';
import { SubDocumentInterval } from '../../sub-document';
import { HistoryItem } from '../base/history-item';
import { ParagraphUseValueHistoryItem } from './paragraph-properties-history-items';
export class AddAbstractNumberingListHistoryItem extends HistoryItem {
constructor(modelManipulator, abstractNumberingList) {
super(modelManipulator);
this.abstractNumberingList = abstractNumberingList;
}
redo() {
this.abstractNumberingListIndex = this.modelManipulator.numberingList.addAbstractNumberingList(this.abstractNumberingList);
}
undo() {
this.modelManipulator.numberingList.deleteAbstractNumberingList(this.abstractNumberingListIndex);
}
}
export class AddNumberingListHistoryItem extends HistoryItem {
constructor(modelManipulator, numberingList) {
super(modelManipulator);
this.numberingList = numberingList;
}
redo() {
this.numberingListIndex = this.modelManipulator.numberingList.addNumberingList(this.numberingList);
}
undo() {
this.modelManipulator.numberingList.deleteNumberingList(this.numberingListIndex);
}
}
export class AddParagraphToListHistoryItem extends HistoryItem {
constructor(modelManipulator, subDocument, paragraphIndex, numberingListIndex, listLevelIndex) {
super(modelManipulator);
this.subDocument = subDocument;
this.paragraphIndex = paragraphIndex;
this.numberingListIndex = numberingListIndex;
this.listLevelIndex = listLevelIndex;
}
redo() {
const paragraph = this.subDocument.paragraphs[this.paragraphIndex];
this.useValHistItem = new ParagraphUseValueHistoryItem(this.modelManipulator, new SubDocumentInterval(this.subDocument, this.subDocument.paragraphs[this.paragraphIndex].interval), new Flag(paragraph.maskedParagraphProperties.useValue)
.set(ParagraphPropertiesMask.UseLeftIndent, false)
.set(ParagraphPropertiesMask.UseFirstLineIndent, false).getValue());
this.useValHistItem.redo();
this.state = this.modelManipulator.numberingList.setParagraphNumberingList(this.subDocument, this.paragraphIndex, this.numberingListIndex, this.listLevelIndex);
}
undo() {
this.useValHistItem.undo();
this.modelManipulator.numberingList.restoreParagraphNumberingList(this.subDocument, this.state);
}
}
export class RemoveParagraphFromListHistoryItem extends HistoryItem {
constructor(modelManipulator, subDocument, paragraphIndex) {
super(modelManipulator);
this.subDocument = subDocument;
this.paragraphIndex = paragraphIndex;
}
redo() {
this.state = this.modelManipulator.numberingList.removeNumberingListFromParagraph(this.subDocument, this.paragraphIndex);
}
undo() {
this.modelManipulator.numberingList.restoreParagraphNumberingList(this.subDocument, this.state);
}
}
export class ListLevelNewStartHistoryItem extends HistoryItem {
constructor(modelManipulator, listIndex, levelIndex, newValue) {
super(modelManipulator);
this.newValue = newValue;
this.listIndex = listIndex;
this.levelIndex = levelIndex;
}
redo() {
this.oldState = this.modelManipulator.numberingList.setIOverrideListLevelNewStart(this.listIndex, this.levelIndex, this.newValue);
}
undo() {
this.modelManipulator.numberingList.restoreIOverrideListLevelNewStart(this.oldState);
}
}
export class ListLevelOverrideStartHistoryItem extends HistoryItem {
constructor(modelManipulator, listIndex, levelIndex, overrideStart) {
super(modelManipulator);
this.newValue = overrideStart;
this.listIndex = listIndex;
this.levelIndex = levelIndex;
}
redo() {
this.oldState = this.modelManipulator.numberingList.setIOverrideListLevelOverrideStart(this.listIndex, this.levelIndex, this.newValue);
}
undo() {
this.modelManipulator.numberingList.restoreIOverrideListLevelOverrideStart(this.oldState);
}
}