@syncfusion/ej2-documenteditor
Version:
Feature-rich document editor control with built-in support for context menu, options pane and dialogs.
1,533 lines (1,532 loc) • 101 kB
TypeScript
import { Selection } from '../index';
import { TextPosition } from '../selection/selection-helper';
import { IWidget, ParagraphWidget, LineWidget, ElementBox, ImageElementBox, BlockWidget, BodyWidget, TableWidget, TableCellWidget, TableRowWidget, Widget, BookmarkElementBox, HeaderFooterWidget, FieldTextElementBox, EditRangeStartElementBox, EditRangeEndElementBox, CommentElementBox, CommentCharacterElementBox, FormField, ShapeElementBox, ContentControl, FootnoteElementBox, ContentControlProperties } from '../viewer/page';
import { WCharacterFormat } from '../format/character-format';
import { CellInfo, IndexInfo, BlockInfo, Base64, TextFormFieldInfo, CheckBoxFormFieldInfo, DropDownFormFieldInfo, SelectedCommentInfo, FieldInfo } from './editor-helper';
import { WParagraphFormat, WSectionFormat, WTableFormat, WRowFormat, WCellFormat, WBorders, WShading, WTabStop } from '../index';
import { WList } from '../list/list';
import { WListLevel } from '../list/list-level';
import { WLevelOverride } from '../list/level-override';
import { FieldElementBox } from '../viewer/page';
import { HighlightColor, BaselineAlignment, Strikethrough, Underline, LineSpacingType, TextAlignment, ListLevelPattern, HeaderFooterType, ContentControlInfo, CommentProperties, Comment } from '../../base/index';
import { Action } from '../../index';
import { MarkerInfo, ListInfo } from '../editor-history/base-history-info';
import { TableResizer } from './table-resizer';
import { Dictionary } from '../../base/dictionary';
import { CellVerticalAlignment, BorderType, LineStyle, TabLeader, OutlineLevel, AutoFitType, ProtectionType, PasteOptions, TablePasteOptions, FormFieldType, RevisionType, ContentControlType, AutoShapeType, TextWrappingStyle, TextWrappingType, LineFormatType, LineDashing, VerticalOrigin, VerticalAlignment, HorizontalOrigin, HorizontalAlignment } from '../../base/types';
import { DocumentHelper } from '../viewer';
import { Revision } from '../track-changes/track-changes';
import { SectionBreakType } from '../../base/types';
import { FieldSettingsModel } from '@syncfusion/ej2-dropdowns';
/**
* Editor module
*/
export declare class Editor {
/**
* @private
*/
documentHelper: DocumentHelper;
private nodes;
private editHyperlinkInternal;
private startOffset;
/**
* @private
*/
startParagraph: ParagraphWidget;
private endOffset;
private pasteRequestHandler;
/**
* @private
*/
endParagraph: ParagraphWidget;
private currentProtectionType;
private alertDialog;
private formFieldCounter;
private skipFieldDeleteTracking;
private skipFootNoteDeleteTracking;
private isForHyperlinkFormat;
private isTrackingFormField;
private previousBlockToLayout;
private isInsertText;
private casingIndex;
private checkLastLetterSpace;
private checkLastLetterSpaceDot;
private pasteFootNoteType;
private isInsertingText;
private isInternalPaste;
private guid;
/**
* @private
*/
keywordIndex: number;
/**
* @private
*/
dateValue: string;
/**
* @private
*/
xmlTitle: string;
/**
* @private
*/
dictionaryObjcetIDIncreament: number;
/**
* @private
*/
dictionaryObjectIndexIncrement: number;
/**
* @private
*/
XMLFilesCount: number;
/**
* @private
*/
XMLFilesNameSpaceCount: number;
/**
* @private
*/
xmlData: {
[key: string]: Object;
}[];
/**
* @private
*/
dictionaryObject: {
ID: string;
Data: any;
}[];
private footnoteRevision;
/**
* @private
*/
isFootnoteElementRemoved: boolean;
/**
* @private
*/
isEndnoteElementRemoved: boolean;
/**
* @private
*/
handledEnter: boolean;
/**
* @private
*/
handledTextInput: boolean;
/**
* @private
*/
removeEditRange: boolean;
/**
* @private
*/
isRemoveRevision: boolean;
/**
* @private
*/
isFootNoteInsert: boolean;
/**
* @private
*/
isTableInsert: boolean;
/**
* @private
*/
isFootNote: boolean;
/**
* @private
*/
isHandledComplex: boolean;
/**
* @private
*/
isUserInsert: boolean;
/**
* @private
*/
tableResize: TableResizer;
/**
* @private
*/
tocStyles: TocLevelSettings;
/**
* @private
*/
triggerPageSpellCheck: boolean;
/**
* @private
*/
chartType: boolean;
/**
* @private
*/
removedBookmarkElements: BookmarkElementBox[];
/**
* @private
*/
removedEditRangeStartElements: EditRangeStartElementBox[];
/**
* @private
*/
removedEditRangeEndElements: EditRangeEndElementBox[];
/**
* @private
*/
removedContentControlElements: ContentControl[];
/**
* @private
*/
tocBookmarkId: number;
/**
* @private
*/
copiedData: string;
/**
* @private
*/
isPasteContentCheck: boolean;
private animationTimer;
private pageRefFields;
private delBlockContinue;
private delBlock;
private delSection;
/**
* @private
*/
isInsertingTOC: boolean;
/**
* @private
*/
isMeasureParaWidth: boolean;
private editStartRangeCollection;
private skipReplace;
private skipTableElements;
private isPasteOverWriteCells;
private removedTextNodes;
private editRangeID;
/**
* @private
*/
isImageInsert: boolean;
/**
* @private
*/
isSkipOperationsBuild: boolean;
/**
* @private
*/
isCellFormatApplied: boolean;
/**
* @private
*/
revisionData: MarkerInfo[];
/**
* @private
*/
splittedRevisions: MarkerInfo[];
/**
* @private
*/
isSkipComments: boolean;
private currentHashValue;
/**
* @private
*/
isRemoteAction: boolean;
/**
* @private
*/
isIncrementalSave: boolean;
/**
* @private
*/
listFormatInfo: ListInfo;
/**
* @private
*/
listLevelNumber: number;
/**
* @private
*/
xmlStringValue: string;
/**
* @private
*/
isXmlMapped: boolean;
/**
* @private
*/
restrictLayout: boolean;
private isAutoList;
/**
* @private
*/
isLastParaMarkCopied: boolean;
private combineLastBlock;
/**
* @private
*/
remotePasteRevision: Revision[];
/**
* @private
*/
isFieldOperation: boolean;
/**
* @private
*/
decreasedIndent: boolean;
/**
* @private
*/
increasedIndent: boolean;
/**
* @private
* @returns {boolean} - Returns the restrict formatting
*/
readonly restrictFormatting: boolean;
/**
* @private
* @returns {boolean} - Returns the restrict editing
*/
readonly restrictEditing: boolean;
/**
* @private
* @returns {boolean} - Returns the can edit content control.
*/
readonly canEditContentControl: boolean;
/**
* @private
*/
copiedContent: any;
/**
* @private
*/
copiedTextContent: string;
/**
* @private
*/
previousParaFormat: WParagraphFormat;
private previousCharFormat;
private previousSectionFormat;
private currentPasteOptions;
private pasteTextPosition;
/**
* @private
*/
isPaste: boolean;
/**
* @private
*/
isPasteListUpdated: boolean;
/**
* @private
*/
isHtmlPaste: boolean;
/**
* @private
*/
base64: Base64;
/**
* @private
*/
isInsertField: boolean;
/**
* Initialize the editor module
*
* @param {DocumentHelper} documentHelper - Document helper
* @private
*/
constructor(documentHelper: DocumentHelper);
private readonly viewer;
private readonly editorHistory;
/**
* @private
*/
isBordersAndShadingDialog: boolean;
/**
* @private
*/
pasteImageIndex: Dictionary<string, string>;
private readonly selection;
private readonly owner;
private getModuleName;
/**
* Initiates a batch update mode where multiple editing operations can be grouped together. This prevents intermediate re-layout during the execution of grouped operations, improving performance for bulk updates.
*
* @returns {void}
*/
beginBatchEdit(): void;
/**
* Ends the batch update mode and triggers a single re-relayout or change notification to reflect all the modifications made during the batch update.
*
* @returns {void}
*/
endBatchEdit(): void;
/**
* Sets the field information for the selected field.
*
* @param { FieldInfo } fieldInfo – Specifies the field information.
* @returns {void}
* > Nested field gets replaced completely with the specified field information.
*/
setFieldInfo(fieldInfo: FieldInfo): void;
/**
* Inserts the specified field at cursor position.
*
* @param {string} code Specify the field code.
* @param {string} result Specify the field result.
* @returns {void}
*/
insertField(code: string, result?: string): void;
/**
* @private
*/
isLinkedStyle(styleName: string): boolean;
/**
* Applies the specified style for paragraph.
*
* @param {string} style Specify the style name to apply.
* @param {boolean} clearDirectFormatting - Removes manual formatting (formatting not applied using a style)
* from the selected text, to match the formatting of the applied style. Default value is false.
* @returns {void}
*/
applyStyle(style: string, clearDirectFormatting?: boolean): void;
/**
* Moves the selected content in the document editor control to clipboard.
*
* @returns {void}
*/
cut(): void;
/**
* Inserts the editing region where everyone can edit.
*
* @returns {void}
*/
insertEditingRegion(): void;
/**
* Inserts the editing region where mentioned user can edit.
*
* @returns {void}
*/
insertEditingRegion(user: string): void;
/**
* Enforces the document protection by protection type.
*
* @param {string} credential Specify the credential to protect the document.
*
* @param {ProtectionType} protectionType Specify the document protection type.
*
* @returns {void}
*/
enforceProtection(credential: string, protectionType: ProtectionType): void;
/**
* Enforces the document protection with the specified credential.
*
* @param {string} credential Specify the credential to protect the document.
*
* @param {boolean} limitToFormatting True if to limit the document formatting; Otherwise, false.
*
* @param {boolean} isReadOnly True if to allow read-only access to the document; Otherwise, false.
*
* @returns {void}
*/
enforceProtection(credential: string, limitToFormatting: boolean, isReadOnly: boolean): void;
/**
* Enforces the document protection with the specified protection type.
*
* @param {string} credential Specify the credential to protect the document.
*
* @param {ProtectionType} protectionType Specify the document protection type.
*
* @returns {Promise} Returns a Promise which is resolved when protection is enforced, or rejected if for any reason protection cannot be enforced.
*/
enforceProtectionAsync(credential: string, protectionType: ProtectionType): Promise<void>;
/**
* Enforces the document protection with the specified credential.
*
* @param {string} credential Specify the credential to protect the document.
*
* @param {boolean} limitToFormatting True if to limit the document formatting; Otherwise, false.
*
* @param {boolean} isReadOnly True if to allow read-only access to the document; Otherwise, false.
*
* @returns {Promise} Returns a Promise which is resolved when protection is enforced, or rejected if for any reason protection cannot be enforced.
*/
enforceProtectionAsync(credential: string, limitToFormatting: boolean, isReadOnly: boolean): Promise<void>;
private getCommentHierarchicalIndex;
private alertBox;
/**
* Inserts a reply to a comment.
*
* @param {string} id - The unique identifier of the comment to reply to.
* @param {string} text - The text of the reply.
* @param {CommentProperties} commentProperties - The properties of the reply (author, isResolved, dateTime).
* @returns {Comment} Returns the inserted reply comment.
*/
insertReplyComment(id: string, text: string, commentProperties: CommentProperties): Comment;
private getCommentInfo;
/**
* Inserts the comment.
*
* @param {string} text Specify the comment text to be inserted.
* @returns {void}
*/
insertComment(text?: string): void;
/**
* Inserts a comment with the specified properties.
*
* @param {string} text The text of the comment to be inserted.
* @param {CommentProperties} commentProperties The properties of the comment (author, isResolved, dateTime).
* @returns {Comment} The inserted comment.
*/
insertComment(text: string, commentProperties: CommentProperties): Comment;
/**
* @private
*/
parseDateTime(dateTime: string): Date;
private insertCommentInternal;
/**
* @private
*/
updateCommentElement(commentAdv: CommentElementBox, commentRangeStart: CommentCharacterElementBox, commentRangeEnd: CommentCharacterElementBox, markerData: MarkerInfo): CommentElementBox;
/**
* Deletes all the comments in the current document.
*
* @returns {void}
*/
deleteAllComments(): void;
/**
* Deletes the specified comment.
* If the provided id corresponds to a parent comment, the entire comment along with its replies will be deleted.
* If the provided id corresponds to a single reply comment, only that particular reply will be deleted.
*
* @param {string} [id] - The unique identifier of the comment to be deleted. If not provided, the currently selected comment will be deleted.
* @returns {void}
*/
deleteComment(id?: string): void;
/**
* @param {CommentElementBox} comment - Specified the comment element box
* @private
* @returns {void}
*/
deleteCommentInternal(comment: CommentElementBox): void;
private deleteCommentWidgetInternal;
/**
* @param {CommentElementBox} comment - Specified the comment element box
* @private
* @returns {void}
*/
deleteCommentWidget(comment: CommentElementBox): void;
/**
* @param {CommentElementBox} comment - Specified the comment element box
* @private
* @returns {void}
*/
resolveComment(comment: CommentElementBox): void;
/**
* @param {CommentElementBox} comment - Specified the comment element box
* @private
* @returns {void}
*/
reopenComment(comment: CommentElementBox): void;
/**
* @private
*/
resolveOrReopenComment(comment: CommentElementBox, resolve: boolean): void;
/**
* @param {CommentElementBox} parentComment - Specified the parent comment
* @param {string} text - Specified the text.
* @private
* @returns {void}
*/
replyComment(parentComment: CommentElementBox, text?: string, mentions?: FieldSettingsModel[], markerData?: MarkerInfo): void;
private removeInline;
/**
* @param {CommentElementBox} commentWidget - Specifies the comment
* @param {boolean} isNewComment - Specifies is new comment
* @param {boolean} showComments - Specifies show comments
* @param {boolean} selectComment - Specified select comment
* @private
* @returns {void}
*/
addCommentWidget(commentWidget: CommentElementBox, isNewComment: boolean, showComments: boolean, selectComment: boolean): void;
/**
* @param {CommentElementBox} comment - Specifies comment element box
* @param {string} hierarchicalIndex - Specifies the hierachical index.
* @private
* @returns {void}
*/
addReplyComment(comment: CommentElementBox, hierarchicalIndex: string): void;
/**
* @param {string} password - Specifies the password
* @param {string} protectionType - Specifies the protection type
* @param {boolean} isAsync - specifies whether the send method is synchronous or asynchronous
* @private
* @returns {void}
*/
addProtection(password: string, protectionType: ProtectionType, isAsync?: boolean): Promise<void>;
private protectionFailureHandler;
private enforceProtectionInternal;
/**
* @private
*/
enforceProtectionAssign(saltValue: string, hashValue: string, protectionType: ProtectionType): void;
private toggleTrackChangesProtection;
/**
* @private
*/
protectDocument(protectionType: ProtectionType): void;
/**
* Stops the document protection.
*
* @param {string} password Specify the password to stop protection.
* @returns {void}
*/
stopProtection(password: string): void;
/**
* Stops the document protection.
*
* @param {string} password Specify the password to stop protection.
* @returns {Promise} Returns a Promise which is resolved when protection is stopped, or rejected if for any reason protection cannot be stopped.
*/
stopProtectionAsync(password: string): Promise<void>;
private onUnProtectionSuccess;
/**
* @private
*/
validateHashValue(currentHashValue: string): boolean;
/**
* @private
* @returns {void}
*/
unProtectDocument(): void;
/**
* Notify content change event
*
* @private
* @returns {void}
*/
fireContentChange(): void;
/**
* Update physical location for text position
*
* @param {boolean} isSelectionChanged - Specifies the selection change
* @private
* @returns {void}
*/
updateSelectionTextPosition(isSelectionChanged: boolean): void;
/**
* @private
* @returns {void}
*/
onTextInputInternal: () => void;
/**
* Predict text
*
* @private
* @returns {void}
*/
predictText(): void;
private getPrefixAndSuffix;
/**
* Fired on paste.
*
* @param {ClipboardEvent} event - Specfies clipboard event
* @private
* @returns {void}
*/
onPaste: (event: ClipboardEvent) => void;
/**
* key action
* @private
* @returns {void}
*/
onKeyDownInternal(event: KeyboardEvent, ctrl: boolean, shift: boolean, alt: boolean): void;
/**
* @private
* @returns {void}
*/
handleShiftEnter(): void;
/**
* Handles back key.
*
* @private
* @returns {void}
*/
handleBackKey(): void;
/**
* Handles delete
*
* @private
* @returns {void}
*/
handleDelete(): void;
/**
* Handles enter key.
*
* @private
* @returns {void}
*/
handleEnterKey(): void;
/**
* Handles Control back key.
*
* @private
* @returns {void}
*/
handleCtrlBackKey(): void;
/**
* Handles Ctrl delete
*
* @private
* @returns {void}
*/
handleCtrlDelete(): void;
/**
* @private
* @returns {void}
*/
handleTextInput(text: string): void;
/**
* Copies to format.
* @param {WCharacterFormat} format
* @private
* @returns {void}
*/
copyInsertFormat(format: WCharacterFormat, copy: boolean, widget?: ParagraphWidget): WCharacterFormat;
/**
* @private
*/
getResultContentControlText(element: ContentControl): string;
insertContentControlPlaceholder(): void;
/**
* Inserts a content control.
*
* @param {ContentControlType} type - The type of content control to insert.
* @param {string} [value] - The value for the content control, if applicable.
* @returns {ContentControlInfo} The inserted content control information.
*
* {% codeBlock src='editor-insertContentControl/index.md' %}{% endcodeBlock %}
*/
insertContentControl(type: ContentControlType, value?: string): ContentControlInfo;
/**
* Inserts a content control.
*
* @param {ContentControlType} type - The type of content control to insert.
* @param {boolean} [value] - The boolean value for the content control, if applicable.
* @returns {ContentControlInfo} The inserted content control information.
*
* {% codeBlock src='editor-insertContentControl/index.md' %}{% endcodeBlock %}
*/
insertContentControl(type: ContentControlType, value?: boolean): ContentControlInfo;
/**
* Inserts a content control.
*
* @param {ContentControlType} type - The type of content control to insert.
* @param {string} [value] - The value for the content control, if applicable.
* @param {string[]} [items] - The items for the content control, applicable if the type is combobox or dropdownlist.
* @returns {ContentControlInfo} The inserted content control information.
*
* {% codeBlock src='editor-insertContentControl/index.md' %}{% endcodeBlock %}
*/
insertContentControl(type: ContentControlType, value?: string, items?: string[]): ContentControlInfo;
/**
* Inserts a content control with the specified content control properties.
*
* @param {ContentControlInfo} info - The content control information specifying the properties of the content control to insert
* @returns {ContentControlInfo} The inserted content control information.
*
* {% codeBlock src='editor-insertContentControl/index.md' %}{% endcodeBlock %}
*/
insertContentControl(info: ContentControlInfo): ContentControlInfo;
private openContentDialog;
/**
* @private
* @returns {void}
*/
updatePropertiesToBlock(contentControl: ContentControl, isUpdate?: boolean): void;
private updateContentControlPosition;
private applyRichText;
private isInsertNewLineAfterContentControl;
private isInvalidElementPresent;
private applyPlainText;
private applyComboBox;
private applyDatePickerContentControl;
private applyCheckBoxContentControl;
/**
* Apply the content Control properties to the picture content Control
* @param {type} refers the type of Content control.
*/
private applyPictureContentControl;
/**
* To get Prefix Mapping for XML Properties.
* @param {ContentControlType} contentcontroltype.
* @param {string} xmlString.
* @private
* @returns {void}
*/
getPrefixMapping(xmlString: string): void;
/**
* add xml properties to the content control properties
* @param {ContentControlProperties} properties.
* @param {string} xPath.
* @private
*/
addXmlProperties(properties: ContentControlProperties, xPath: string): void;
/**
* To Get XML Store id
* @returns {string} store item Id.
*/
private createGuid;
/**
* To Get data from xml string and path
* @param {ContentControlInfo} An object containing the updated details for the content control.
* @returns {ContentControlInfo} The updated content control information after applying the changes, or `undefined` if no matching content control is found.
*/
private mapXmlStringPath;
/**
* Sets the existing content control within the editor using the provided information.
* The content control is identified by its unique combination of `title` and `tag`.
* @param {ContentControlInfo} An object containing the updated details for the content control.
* @returns {ContentControlInfo|undefined} The updated content control information after applying the changes, or `undefined` if no matching content control is found.
*/
setContentControlInfo(info: ContentControlInfo): ContentControlInfo;
/**
* To get xpath format.
* @param {string} inputxpath.
* @returns {string}
*/
private transformString;
/**
* To get Xml Value.
* @param {string} beforeLastString.
* @param {string} lastString.
* @returns {string}
*/
private getXmlValue;
/**
* To convert the object into Array.
* @param {any} obj.
* @private
* @returns {Array}
*/
objectToArray(obj: {
[key: string]: any;
}): {
index: string;
data: any;
}[];
/**
* To Parse the XML string into an XMLDocument To Convert the XMLDocument to JSON.
* @param {string} xmlString.
* @private
* @returns {void}
*/
parseXml(xmlString: string): any;
/**
* To Convert the XMLDocument to JSON.
* @param {Element} xml.
* @private
* @returns {any}
*/
xmlToJson(xml: Element): any;
/**
* To set the updated xml json into xml Data for treeview.
* @param {any} parsedXmlObj.
* @param {any} parsedXmlArr.
* @private
* @returns {void}
*/
setXmlData(parsedXmlObj: any, parsedXmlArr: any): void;
/**
* @private
* @returns {void}
*/
dropDownChange(contentControl: ContentControl, value: string): void;
private updateXmlMappedContentControl;
private updateCustomXml;
/**
* Inserts the specified text at cursor position
* @param {string} text Specify the text to insert.
*/
insertText(text: string): void;
/**
* @private
* @returns {void}
*/
insertTextInternal(text: string, isReplace: boolean, revisionType?: RevisionType, allowLayout?: boolean, isSplitRevision?: boolean): void;
private extendSelectionToBookmarkStart;
private updateElementInFieldRevision;
/**
* Retrieves the resultant field text from the specified field element box.
* @param item Specify the field element box to retrieve field text.
* @returns Returns the resultant field text.
*/
retrieveFieldResultantText(item: FieldElementBox): string;
private checkToCombineRevisionsinBlocks;
private checkToMapRevisionWithNextNode;
private checkToMapRevisionWithPreviousNode;
private checkToMapRevisionWithInlineText;
private combineElementRevisions;
private applyMatchedRevisionInorder;
private copyElementRevision;
private mapMatchedRevisions;
private isRevisionAlreadyIn;
private getMatchedRevisionsToCombine;
private decideInlineForTrackChanges;
/**
* @private
* @returns {void}
*/
insertIMEText(text: string, isUpdate: boolean): void;
/**
* Inserts the section break at cursor position with specified section break type.
*
* @param {SectionBreakType} sectionBreakType Specifies the section break type.
* > If this parameter is not set, it inserts the section break of type new page.
* @returns {void}
*/
insertSectionBreak(sectionBreakType?: SectionBreakType, sectionFormat?: WSectionFormat): void;
private combineRevisionWithBlocks;
private checkToCombineRevisionWithNextPara;
private checkToCombineRevisionWithPrevPara;
private combineRevisionWithNextPara;
private combineRevisionWithPrevPara;
/**
* Removes the specified revision from the document.
*
* @param revisionToRemove Specify the revision to be removed.
* @returns {void}
*/
removeRevision(revisionToRemove: Revision): any;
/**
* Clears the specified revision from the document.
*
* @param revision Specify the revision to clear from the document.
* @returns {void}
*/
clearElementRevision(revision: Revision): void;
/**
* @private
* @returns {void}
*/
insertRevision(item: any, type: RevisionType, author?: string, date?: string, spittedRange?: object[], skip?: boolean, parseRevisionId?: string): Revision;
private insertRevisionForFootnoteWidget;
/**
* Method help to clear previous revisions and include new revision at specified index
*
* @param range - range of elements to be cleared
* @param revision - revision to be inserted
* @param index - index at which to be included in the revision range
* @returns {void}
*/
private clearAndUpdateRevisons;
private splitRevisionByElement;
/**
* Method to update revision for the splitted text element
* @param inline - Original text element
* @param splittedSpan - Splitted element
*/
private updateRevisionForSpittedTextElement;
/**
* @private
*/
getRevision(revisionId: string): Revision;
private isRevisionMatched;
private compareElementRevision;
private canInsertRevision;
private insertRevisionAtEnd;
private insertRevisionAtPosition;
private insertRevisionAtBegining;
private splitRevisionForSpittedElement;
/**
* Method to combine element revision if not inserts new revision
*/
/**
* @private
* @returns {void}
*/
combineElementRevisionToPrevNxt(newElement: ElementBox): void;
private combineElementRevision;
/**
* @private
* @returns {void}
*/
removeMarkerInfoRevision(revisionID: string, markerInfo: MarkerInfo[]): void;
private combineRevisions;
/**
* Method to update the revision for whole block
*
* @private
* @returns {void}
*/
insertRevisionForBlock(widget: ParagraphWidget, revisionType: RevisionType, isTOC?: boolean, revision?: Revision, skipReLayout?: boolean, isRemoveInline?: boolean, isAssOrder?: boolean): boolean;
/**
* @private
*/
getLastParaForBodywidgetCollection(widget: ParagraphWidget): IWidget;
private updatePasteRevision;
private updateRevisionCollection;
/**
* @private
* @returns {BodyWidget}
*/
insertSection(selection: Selection, selectFirstBlock: boolean, isUndoing?: boolean, sectionBreakContinuous?: boolean, sectionBreakNewPage?: boolean, sectionFormat?: WSectionFormat): BlockWidget;
/**
* @private
*/
splitBodyWidget(bodyWidget: BodyWidget, sectionFormat: WSectionFormat, startBlock: BlockWidget, sectionBreakContinuous?: boolean, sectionBreakNewPage?: boolean): BodyWidget;
private insertRemoveHeaderFooter;
private updateBlockIndex;
/**
* @private
* @returns {void}
*/
updateSectionIndex(sectionFormat: WSectionFormat, startBodyWidget: BodyWidget, increaseIndex: boolean): void;
/**
* @private
* @returns {void}
*/
updateColumnIndex(startBodyWidget: BodyWidget, increaseIndex: boolean): void;
private checkAndConvertList;
private checkNextLevelAutoList;
private isConvertList;
private getNumber;
private getListLevelPattern;
private autoConvertList;
private checkNumberFormat;
private checkLeadingZero;
private getPageFromBlockWidget;
/**
* @private
* @returns {void}
*/
insertTextInline(element: ElementBox, selection: Selection, text: string, index: number, skipReLayout?: boolean, revisionType?: RevisionType, isBidi?: boolean): void;
private insertFieldBeginText;
private insertBookMarkText;
private insertFieldSeparatorText;
private insertFieldEndText;
private insertImageText;
/**
* @private
*/
private isListTextSelected;
private checkAndConvertToHyperlink;
private autoFormatHyperlink;
private appylingHyperlinkFormat;
private createHyperlinkElement;
private insertHyperlinkfield;
/**
* @private
*/
unlinkRangeFromRevision(inline: any, removeCollection?: boolean): void;
/**
* @private
*/
constructRevisionnsForLink(inline: any, isRemove: boolean): void;
/**
* @private
*/
unlinkWholeRangeInRevision(row: WRowFormat, revision: Revision): void;
/**
* @private
* @returns {void}
*/
unLinkFieldCharacter(inline: ElementBox): void;
private getCharacterFormat;
/**
* Inserts the Hyperlink.
*
* @param {string} address Specify the Hyperlink URL to be inserted.
* @param {string} displayText Specify the display text for the hyperlink
* @param {string} screenTip Specify the screen tip text.
* @returns {void}
*/
insertHyperlink(address: string, displayText?: string, screenTip?: string): void;
/**
* @private
*/
insertHyperlinkInternal(url: string, displayText: string, remove: boolean, isBookmark?: boolean): void;
private insertHyperlinkInternalInternal;
private insertHyperlinkByFormat;
/**
* @private
*/
initInsertInline(element: ElementBox, insertHyperlink?: boolean, isInsertRemovedBookamrk?: boolean): void;
private insertElementInCurrentLine;
/**
* Edit Hyperlink
* @param {Selection} selection - Specified the selection
* @param {string} url - Specifies the url
* @param {string} displayText - Specified the display test
* @param {boolean} isBookmark - Specifies is bookmark
* @private
* @returns {boolean} - Return tru of hyperlink is edited.
*/
editHyperlink(selection: Selection, url: string, displayText: string, isBookmark?: boolean): boolean;
private insertClonedFieldResult;
private getClonedFieldResultWithSel;
private getClonedFieldResult;
/**
* Removes the content control if selection is in content control
* @returns {void}
* @private
*/
removeContentControl(): void;
/**
* Removes the content control if selection is in content control
* @returns {void}
* @private
*/
removeContentControlInternal(contentControl?: ContentControl): void;
/**
* Removes the hyperlink if selection is within hyperlink.
*
* @returns {void}
*/
removeHyperlink(): void;
/**
* @private
*/
updateHyperlinkFormat(selection: Selection): void;
/**
* Paste copied clipboard content on Paste event
* @param {ClipboardEvent} event - Specifies the paste event
* @param {any} pasteWindow - Specifies the paste window
* @private
*/
pasteInternal(event: ClipboardEvent, pasteWindow?: any): void;
private pasteImage;
/**
* @private
* @returns {void}
*/
onPasteImage(data: string): void;
private pasteAjax;
/**
* @private
* @returns {void}
*/
pasteFormattedContent(result: any): void;
private onPasteFailure;
/**
* Pastes the provided content into the editor.
*
* @param {string} [sfdt] - The content to be pasted, in string format.
* @param {TablePasteOptions} [tablePasteOption] - The option specifying how the content should be pasted into a table.
*
* @returns {void}
*/
paste(sfdt: string, tablePasteOption: TablePasteOptions): void;
/**
* Pastes the provided sfdt content or the data present in local clipboard if any.
*
* @param {string} sfdt Specifies the sfdt content to paste at current position.
* @param {PasteOptions} defaultPasteOption Specifies the paste options.
* @returns {void}
*/
paste(sfdt?: string, defaultPasteOption?: PasteOptions): void;
/**
* @private
*/
getUniqueListOrAbstractListId(isList: boolean): number;
private getBlocksToUpdate;
private updateListIdForBlocks;
private isNsIdMatchWithExistingAbstractList;
private updatePasteContent;
private getPreviousParagraphListFormat;
/**
* @private
*/
getBlocks(pasteContent: any, isPaste: boolean, sections?: BodyWidget[], comments?: CommentElementBox[], revision?: Revision[], isContextBasedPaste?: boolean): BodyWidget[];
private applyMergeFormat;
private applyParaFormatInternal;
private applyFormatInternal;
/**
* @private
*/
applyPasteOptions(options: PasteOptions | TablePasteOptions, isPasteOptionTextOnly?: boolean): void;
/**
* @private
*/
applyTablePasteOptions(options: TablePasteOptions): void;
/**
* @private
* @returns {void}
*/
pasteContents(content: any, currentFormat?: WParagraphFormat, pasteOptions?: PasteOptions | TablePasteOptions): void;
private pasteContentsInternal;
private defaultPaste;
private pasteAsNewColumn;
private pasteAsNestedTable;
private pasteOverwriteCell;
private replaceCellContents;
private pasteAsNewRow;
private tableUpdate;
private rowspannedCollection;
private insertSpannedCells;
private addRows;
private pasteContent;
private pasteCopiedData;
private arrangeEndnoteCollection;
private arrangeFootnoteCollection;
private generateTableRevision;
private isSectionEmpty;
/**
* Insert table on undo
*
* @param {TableWidget} table - Specifies the table
* @param {TableWidget} newTable - Speciefies the new table
* @param {boolean} moveRows - Specifies the new row
* @private
* @private {void}
*/
insertTableInternal(table: TableWidget, newTable: TableWidget, moveRows: boolean, skipRemoving?: boolean): void;
private removeRevisionFromTable;
private canConstructRevision;
private constructRevisionsForTable;
private deleteRevision;
private constructRevisionForFootnote;
private constructRevisionsForBlock;
/**
* @private
* @param paraWidget
* @param startoffset
* @param endoffset
* @param revisionId
* @param isParaMarkIncluded
* @returns {void}
*/
applyRevisionForCurrentPara(paraWidget: ParagraphWidget, startoffset: number, endoffset: number, revisionId: string, isParaMarkIncluded: boolean): void;
/**
* Insert table on undo
*
* @param {Selection} selection - Specified the selection
* @param {WBlock} block - Spcifies the block
* @param {WTable} table - Specifies the table.
* @private
* @returns {void}
*/
insertBlockTable(selection: Selection, block: BlockWidget, table: TableWidget): void;
/**
* On cut handle selected content remove and relayout
*
* @param {Selection} selection - Specified the selection
* @private
* @returns {void}
*/
handleCut(selection: Selection): void;
private insertInlineInternal;
private insertElement;
private updateRevisionForElement;
private insertElementInternal;
private incrementCommentIndex;
/**
* @private
* @returns {void}
*/
constructRevisionFromID(insertElement: any, isEnd: boolean, skipUpdate?: boolean, prevElement?: ElementBox, index?: number): void;
/**
* Insert block on undo
*
* @param {Selection} selection - Specifies the selection
* @param {WBlock} block - Specifes the block
* @private
* @returns {void}
*/
insertBlock(block: BlockWidget, isSelectionInsideTable?: boolean): void;
private insertBlockInternal;
/**
* Inserts the image with specified size at cursor position in the document editor.
*
*
* @param {string} imageString Base64 string, web URL or file URL.
* @param {number} width Specify the image width.
* @param {number} height Specify the image height.
* @param {string} alternateText Specify the image alternateText.
* @returns {void}
*/
insertImage(imageString: string, width?: number, height?: number, alternateText?: string): void;
/**
* Inserts an image with a specified size at the cursor position in the DocumentEditor component.
*
* @param {string} imageString - The Base64 string, web URL, or file URL of the image to be inserted.
* @param {number} width - The width of the image. Optional parameter, if not specified, the original width of the image will be used.
* @param {number} height - The height of the image. Optional parameter, if not specified, the original height of the image will be used.
* @param {string} alternateText - The alternate text of the image. Optional parameter, if specified, this text will be displayed when the image is not available or when images are disabled in the document.
* @returns {Promise<void>} - A Promise that is resolved when the image has been inserted successfully, or rejected if the image could not be inserted for any reason.
*/
insertImageAsync(imageString: string, width?: number, height?: number, alternateText?: string): Promise<void>;
/**
* Inserts the image with specified size at cursor position in the document editor.
*
* @private
* @param {string} imageString Base64 string, web URL or file URL.
* @param {boolean} isUiInteracted Is image instered from UI interaction.
* @param {number} width? Image width
* @param {number} height? Image height
* @param {string} alternateText? Image alternateText
* @returns {void}
*/
insertImageInternal(imageString: string, isUiInteracted: boolean, width?: number, height?: number, alternateText?: string): Promise<void>;
/**
* Inserts a table of specified size at cursor position in the document editor.
*
* @param {number} rows Default value of ‘rows’ parameter is 1.
* @param {number} columns Default value of ‘columns’ parameter is 1.
* @returns {void}
*/
insertTable(rows?: number, columns?: number): void;
/**
* Inserts the specified number of rows to the table above or below to the row at cursor position.
*
* @param {boolean} above The above parameter is optional and if omitted,
* it takes the value as false and inserts below the row at cursor position.
* @param {number} count The count parameter is optional and if omitted, it takes the value as 1.
* @returns {void}
*/
insertRow(above?: boolean, count?: number): void;
private rowInsertion;
/**
* Fits the table based on AutoFitType.
*
* @param {AutoFitType} fitType Specify the auto fit type.
* @returns {void}
*/
autoFitTable(fitType: AutoFitType): void;
/**
*
* @private
* @returns {void}
*/
insertAutoFitTable(fitType: AutoFitType, tableAdv?: TableWidget): void;
/**
* Inserting the row for collaborative editing.
* @private
* @returns {void}
*/
rowInsertionForCE(index: number, cellCount: number, insertrow: number, table: TableWidget, rowData: any, cellData: any[], paragraphData: any[], characterData: any[]): void;
private updateCellFormatForInsertedRow;
private updateRowspan;
private getInsertedTable;
private insertTableRows;
/**
* Inserts the specified number of columns to the table left or right to the column at cursor position.
*
* @param {number} left The left parameter is optional and if omitted, it takes the value as false and
* inserts to the right of column at cursor position.
* @param {number} count The count parameter is optional and if omitted, it takes the value as 1.
* @returns {void}
*/
insertColumn(left?: boolean, count?: number): void;
/**
* Inserting the cell for collaborative editing.
* @private
* @returns {void}
*/
cellInsertionForCE(index: number, row: TableRowWidget, cellData: any, paragraphData: any, characterData: any): void;
private copyCellFormats;
private copyContent;
private tableReLayout;
/**
* Creates table with specified rows and columns.
* @private
*
* @returns {TableWidget}
*/
createTable(rows: number, columns: number): TableWidget;
private createRowAndColumn;
private createColumn;
private getColumnCountToInsert;
private getRowCountToInsert;
/**
* @private
*/
getOwnerCell(isStart: boolean): TableCellWidget;
private getOwnerRow;
private getOwnerTable;
/**
* Merge Selected cells
*
* @private
* @returns {void}
*/
mergeSelectedCellsInTable(): void;
private confirmCellMerge;
private mergeSelectedCells;
private mergeBorders;
private updateBlockIndexAfterMerge;
/**
* Determines whether the merge cell operation can be done.
*
* @returns {boolean} Returns true if to merge cells; Otherwise, false.
*/
canMergeCells(): boolean;
private canMergeSelectedCellsInTable;
private checkCellWidth;
private checkCellWithInSelection;
private checkPrevOrNextCellIsWithinSel;
private checkCurrentCell;
private checkRowSpannedCells;
/**
* @private
* @returns {void}
*/
insertNewParagraphWidget(newParagraph: ParagraphWidget, insertAfter: boolean): void;
private insertParagraph;
private updateCharacterFormatRevision;
private moveInlines;
private moveContent;
private updateRevisionForMovedContent;
/**
* update complex changes when history is not preserved
*
* @param {number} action - Specifies the action
* @param {string} start - Specifies the selection start
* @param {string} end - Specified the selection end
* @private
* @returns {void}
*/
updateComplexWithoutHistory(action?: number, start?: string, end?: string): void;
/**
* Re-layout content.
*
* @param {Selection} selection - Specifies the selection
* @param isSelectionChanged - Specifies the selection changed
* @private
* @returns {void}
*/
reLayout(selection: Selection, isSelectionChanged?: boolean, isLayoutChanged?: boolean): void;
private shiftFootnoteContent;
/**
* @private
* @returns {void}
*/
updateHeaderFooterWidget(headerFooterWidget?: HeaderFooterWidget): void;
private updateHeaderFooterWidgetToPage;
private updateHeaderFooterWidgetToPageInternal;
/**
* @private
* @returns {void}
*/
removeFieldInWidget(widget: Widget, isBookmark?: boolean, isContentControl?: boolean, isEditRange?: boolean): void;
/**
* @private
* @returns {void}
*/
removeFieldInBlock(block: BlockWidget, isBookmark?: boolean, isContentControl?: boolean, isEditRange?: boolean): void;
private removeFieldTable;
private shiftFootnotePageContent;
/**
* @private
* @returns {void}
*/
shiftPageContent(type: HeaderFooterType, sectionFormat: WSectionFormat): void;
private checkAndShiftFromBottom;
private allowFormattingInFormFields;
/**
* @private
* @returns {void}
*/
insertContentControlInCollection(element: ContentControl): void;
/**
* @private
* @returns {ContentControl}
*/
getContentControl(): ContentControl;
/**
* @private
* @returns {ContentControl[]}
*/
getContentControls(): ContentControl[];
private pushContentControlByOrder;
private checkPlainTextContentControl;
/**
* Applies character format for selection.
*
* @param {string} property - Specifies the property
* @param {Object} value - Specifies the value
* @param {boolean} update - Spcifies the update
* @private
* @returns {void}
*/
onApplyCharacterFormat(property: string, value: Object, update?: boolean, applyStyle?: boolean): void;
private applyCharacterFormatForListText;
private applyListCharacterFormatByValue;
/**
* @private
* @returns {void}
*/
updateListCharacterFormat(selection: Selection, property: string, value: Object): void;
private updateListTextSelRange;
/**
* @private
* @returns {void}
*/
updateInsertPosition(): void;
/**
* Preserve paragraph and offset value for selection
*
* @private
* @returns {void}
*/
setOffsetValue(selection: Selection): void;
/**
* Toggles the highlight color property of selected contents.
*
* @param {HighlightColor} highlightColor Specify the highlight color to be applied (default: Yellow).
* @returns {void}
*/
toggleHighlightColor(highlightColor?: HighlightColor): void;
/**
* Toggles the subscript formatting of selected contents.
*
* @returns {void}
*/
toggleSubscript(): void;
/**
* Toggles the superscript formatting of selected contents.
*
* @returns {void}
*/
toggleSuperscript(): void;
/**
* Increases the left indent of selected paragraphs to a factor of 36 points.
*
* @returns {void}
*/
increaseIndent(): void;
/**
* Decreases the left indent of selected paragraphs to a factor of 36 points.
*
* @returns {void}
*/
decreaseIndent(): void;
/**
* Clears the list format for selected paragraphs.
*
* @returns {void}
*/
clearList(): void;
/**
* Applies the bullet list to selected paragraphs.
*
* @param {string} bullet Specify the bullet character to be applied.
* @param {string} fontFamily Specify the bullet font family name.
* @returns {void}
*/
applyBullet(bullet: string, fontFamily: string): void;
/**
* Applies the numbering list to selected paragraphs.
*
* @param {string} numberFormat “%n” representations in ‘numberFormat’ parameter will be replaced by respective list level’s value.
* `“%1)” will be displayed as “1)” `
* @param {ListLevelPattern} listLevelPattern Default value of ‘listLevelPattern’ parameter is ListLevelPattern.Arabic
* @returns {void}
*/
applyNumbering(numberFormat: string, listLevelPattern?: ListLevelPattern): void;
/**
* Toggles the baseline alignment property of selected contents.
*
* @param {BaselineAlignment} baseAlignment Specifies the baseline alignment.
* @returns {void