UNPKG

devexpress-richedit

Version:

DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.

48 lines (47 loc) 3.28 kB
import { ApiParametersChecker } from '../api-utils/parameter-checker'; import { AddAbstractNumberingListHistoryItem, AddNumberingListHistoryItem } from '../../../common/model/history/items/numbering-list-history-items'; import { NumberingHelper } from '../../../common/model/numbering-lists/numbering-helper'; import { AbstractNumberingList, NumberingList } from '../../../common/model/numbering-lists/numbering-list'; import { FixedInterval } from '@devexpress/utils/lib/intervals/fixed'; import { ApiUtils } from '../api-utils/api-utils'; import { ModelParametersChecker } from '../api-utils/model-parameter-checker'; import { ListTypeApi, ListTypeApiConverter } from '../lists/enums'; import { ListApi } from '../lists/lists'; import { Collection } from './collection'; export class ListCollection extends Collection { create(type) { ApiUtils.assertEnum(type, ListTypeApi, `NumberingType`, 'type'); const templateIndex = NumberingHelper.getNumberingListTemplateIndex(this._processor.modelManager.model, ListTypeApiConverter.toCoreEnum(type)); const template = this._processor.modelManager.model.abstractNumberingListTemplates[templateIndex]; var abstractNumberingList = new AbstractNumberingList(this._processor.modelManager.model); abstractNumberingList.copyFrom(template); this._processor.beginUpdate(); this._processor.modelManager.history.beginTransaction(); this._processor.modelManager.history.addAndRedo(new AddAbstractNumberingListHistoryItem(this._processor.modelManager.modelManipulator, abstractNumberingList)); var abstractNumberingListIndex = this._processor.modelManager.model.abstractNumberingLists.length - 1; var numberingList = new NumberingList(this._processor.modelManager.model, abstractNumberingListIndex); this._processor.modelManager.history.addAndRedo(new AddNumberingListHistoryItem(this._processor.modelManager.modelManipulator, numberingList)); this._processor.modelManager.history.endTransaction(); this._processor.endUpdate(); return this._getItem(numberingList); } deleteNumeration(subDocument, interval) { const coreInterval = ApiParametersChecker.check(interval, 2, false, [ ApiParametersChecker.numberDescriptor("position", (n) => new FixedInterval(n, 0)), ModelParametersChecker.intervalDescriptor("interval", (interval) => new FixedInterval(interval.start, interval.length)) ]); const SubDocument = this._processor.modelManager.model.subDocuments[subDocument.id]; var paragraphIndices = SubDocument.getParagraphIndicesByIntervals([coreInterval]); this._processor.beginUpdate(); this._processor.modelManager.history.beginTransaction(); NumberingHelper.deleteNumberingList(this._processor.modelManager, this._processor.modelManager.model.subDocuments[subDocument.id], paragraphIndices); this._processor.modelManager.history.endTransaction(); this._processor.endUpdate(); } _getItem(coreItem) { return new ListApi(this._processor.modelManager, coreItem); } _getCoreItems() { return this._processor.modelManager.model.numberingLists; } }