devexpress-richedit
Version:
DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.
85 lines (84 loc) • 4.7 kB
JavaScript
import { EventDispatcher } from '../../utils/event-dispatcher';
import { BookmarksManipulator } from './bookmarks-manipulator';
import { CharacterPropertiesManipulator } from './character-properties-manipulator';
import { DocumentMerger } from './doc-merger/merger';
import { DocumentPropertiesManipulator } from './document-properties-manipulator';
import { DocumentProtectionPropertiesManipulator } from './document-protection-properties-manipulator';
import { FieldsManipulator } from './fields-manipulator';
import { FloatingObjectsManipulator } from './floating-objects/floating-objects-manipulator';
import { FontManipulator } from './font-manipulator';
import { FooterManipulator, HeaderManipulator } from './header-footer-manipulator';
import { InlineObjectManipulator } from './inline-object-manipulator';
import { NumberingListManipulator } from './numbering-lists/numbering-list-manipulator';
import { ParagraphManipulator } from './paragraph-manipulator/paragraph-manipulator';
import { ParagraphPropertiesManipulator } from './paragraph-properties-manipulator';
import { PictureManipulator } from './picture-manipulator/picture-manipulator';
import { RangePermissionManipulator } from './range-permission-manipulator';
import { RangeManipulator } from './range/range-manipulator';
import { SectionManipulator } from './section-manipulator';
import { SectionPropertiesManipulator } from './section-properties-manipulator';
import { StylesManipulator } from './styles-manipulator';
import { SubDocumentManipulator } from './sub-document-manipulator';
import { TablesManipulator } from './tables/tables-manipulator';
import { TabsManipulator } from './tabs-manipulator';
import { TextBoxManipulator } from './text-box-manipulator';
import { TextCaseManipulator } from './text-case-manipulator';
import { TextManipulator } from './text-manipulator/text-manipulator';
export class ModelManipulator {
get model() { return this.modelManager.model; }
constructor(modelManager, batchUpdatableObject) {
this.modelListeners = [];
this.onFontsChanged = new EventDispatcher();
this.batchUpdatableObject = batchUpdatableObject;
this.modelManager = modelManager;
this.floatingObject = new FloatingObjectsManipulator(this);
this.numberingList = new NumberingListManipulator(this);
this.range = new RangeManipulator(this);
this.table = new TablesManipulator(this);
this.bookmark = new BookmarksManipulator(this);
this.rangePermission = new RangePermissionManipulator(this);
this.characterProperties = new CharacterPropertiesManipulator(this);
this.documentProperties = new DocumentPropertiesManipulator(this);
this.documentProtectionProperties = new DocumentProtectionPropertiesManipulator(this);
this.field = new FieldsManipulator(this);
this.font = new FontManipulator(this);
this.header = new HeaderManipulator(this);
this.footer = new FooterManipulator(this);
this.inlineObject = new InlineObjectManipulator(this);
this.paragraphProperties = new ParagraphPropertiesManipulator(this);
this.sectionProperties = new SectionPropertiesManipulator(this);
this.style = new StylesManipulator(this);
this.subDocument = new SubDocumentManipulator(this);
this.tab = new TabsManipulator(this);
this.textCase = new TextCaseManipulator(this);
this.text = new TextManipulator(this);
this.paragraph = new ParagraphManipulator(this);
this.picture = new PictureManipulator(this);
this.textBox = new TextBoxManipulator(this);
this.section = new SectionManipulator(this);
this.documentMerger = new DocumentMerger(this);
}
notifyModelChanged(change) {
this.modelListeners.forEach(listener => listener.modelChanged(change));
}
removeModelListener(listener) {
const index = this.modelListeners.indexOf(listener);
if (index >= 0)
this.modelListeners.splice(index, 1);
}
raiseFontAdded(newFontInfo) {
if (newFontInfo)
this.onFontsChanged.listeners.forEach(listener => listener.NotifyFontAdded(newFontInfo));
}
raiseFontRemoved(font) {
if (font)
this.onFontsChanged.listeners.forEach(listener => listener.NotifyFontRemoved(font));
}
raiseFontListChanged(fontCache) {
this.onFontsChanged.listeners.forEach(listener => listener.NotifyFontListChanged(fontCache));
}
clearListeners() {
this.onFontsChanged.clear();
this.modelListeners = [];
}
}