devexpress-richedit
Version:
DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.
35 lines (34 loc) • 2.07 kB
JavaScript
import { DocumentFormat } from '../../../common/document-format';
import { Errors } from '@devexpress/utils/lib/errors';
import { Base64Utils } from '@devexpress/utils/lib/utils/base64';
import { isString } from '@devexpress/utils/lib/utils/common';
import { Importer } from '../../formats/docx/import/importer';
import { ImporterOptions } from '../../formats/docx/import/importer-options';
import { RtfImporterOptions } from '../../../common/formats/rtf/import/importer-options';
import { RtfImporter } from '../../../common/formats/rtf/import/rtf-importer';
import { TxtImporter } from '../../../common/formats/txt/txt-importer';
import { getAfterInsertCallback, getAfterInsertReject } from '../../../common/formats/callback-helpers';
import { HtmlDocumentImporter } from '../../../common/formats/html/import/html-document-importer';
export function createImporter(format, throwInvalidFile = reason => {
throw new Error(Errors.InternalException + " " + reason);
}) {
switch (format) {
case DocumentFormat.OpenXml: return new Importer(new ImporterOptions(throwInvalidFile));
case DocumentFormat.Rtf: return new RtfImporter(new RtfImporterOptions(throwInvalidFile));
case DocumentFormat.PlainText: return new TxtImporter();
case DocumentFormat.Html: return new HtmlDocumentImporter();
default:
console.log('Unsupported format');
return null;
}
}
export function insertContentInSubDocumentPublic(processor, subDocument, position, content, documentFormat, callback) {
if (content instanceof ArrayBuffer)
content = Base64Utils.fromArrayBuffer(content);
if (isString(content))
content = Base64Utils.getFileFromBase64(content);
const importer = createImporter(documentFormat, () => { });
if (!importer)
throw new Error('Unknown document format');
importer.importFromFile(content, processor.modelManager.richOptions, getAfterInsertCallback(processor, subDocument, position, callback), getAfterInsertReject(callback));
}