UNPKG

@syncfusion/ej2-documenteditor

Version:

Feature-rich document editor control with built-in support for context menu, options pane and dialogs.

1,515 lines (1,514 loc) 36.6 kB
import { Dictionary } from '../../base/dictionary'; import { WList } from '../list/list'; import { WAbstractList } from '../list/abstract-list'; import { WListLevel } from '../list/list-level'; import { WSectionFormat, WCharacterFormat, WParagraphFormat, WStyles, WStyle, WColumnFormat } from '../format/index'; import { Layout } from './layout'; import { Renderer } from './render'; import { Page, Rect, Widget, FieldElementBox, ParagraphWidget, HeaderFooterWidget, EditRangeStartElementBox, CommentElementBox, Padding, ShapeElementBox, ContentControl, Footnote, FootnoteElementBox, FootNoteWidget, ShapeBase, ImageElementBox } from './page'; import { DocumentEditor } from '../../document-editor'; import { BodyWidget, LineWidget, TableWidget, TableRowWidget, TableCellWidget, ElementBox, BlockWidget, HeaderFooters, BookmarkElementBox } from './page'; import { Point, PageInfo, CanvasInfo, BorderRenderInfo, ParagraphInfo } from '../editor/editor-helper'; import { TextHelper, TextHeightInfo } from './text-helper'; import { Selection, ActionInfo } from '../index'; import { TextPosition } from '../selection/selection-helper'; import { Zoom } from './zooming'; import { Dialog } from '@syncfusion/ej2-popups'; import { HeaderFooterType, PageFitType, ProtectionType, FootnoteRestartIndex, FootEndNoteNumberFormat, FootnoteType, CompatibilityMode } from '../../base/types'; import { RestrictEditing } from '../restrict-editing/restrict-editing-pane'; import { FormFieldPopUp } from '../dialogs/form-field-popup'; import { ContentControlPopUp } from '../dialogs/content-control-popup'; import { Revision } from '../track-changes/track-changes'; import { Themes } from '../themes/themes'; import { ColorPicker } from '@syncfusion/ej2-inputs'; /** * @private */ export declare class DocumentHelper { /** * @private */ isCompleted: boolean; /** * @private * To set the copied content to the clipboard. Reserved for internal use. */ isCopying: boolean; /** * @private */ fontColorInputElement: ColorPicker; /** * @private */ shadingBtn: ColorPicker; /** * @private */ borderBtn: ColorPicker; /** * @private */ fontColor: ColorPicker; /** * @private */ colorPicker: ColorPicker; /** * @private */ borderColorPicker: ColorPicker; /** * @private */ shadingColorPicker: ColorPicker; /** * @private */ isSelectionCompleted: boolean; /** * @private */ scrollbarWidth: number; /** * @private */ isWebPrinting: boolean; /** * @private */ isHeaderFooter: boolean; /** * @private */ isSpellCheckPending: boolean; /** * @private */ owner: DocumentEditor; /** * @private */ pageContainer: HTMLElement; /** * @private */ viewerContainer: HTMLElement; /** * @private */ optionsPaneContainer: HTMLElement; /** * @private */ reviewPaneContainer: HTMLElement; /** * @private */ pages: Page[]; /** * @private */ currentPage: Page; private selectionStartPageIn; private selectionEndPageIn; /** * @private */ iframe: HTMLIFrameElement; /** * @private */ editableDiv: HTMLElement; /** * @private */ isShowReviewPane: boolean; /** * @private */ fieldStacks: FieldElementBox[]; /** * @private */ showRevision: boolean; /** * @private */ splittedCellWidgets: TableCellWidget[]; /** * @private */ tableLefts: number[]; /** * @private */ tapCount: number; private timer; private isTimerStarted; /** * @private */ isFirstLineFitInShiftWidgets: boolean; /** * @private */ preZoomFactor: number; /** * @private */ preDifference: number; /** * @private */ isDragging: boolean; /** * @private */ fieldEndParagraph: ParagraphWidget; /** * @private */ fieldToLayout: FieldElementBox; /** * @private */ backgroundColor: string; /** * @private */ layout: Layout; /** * @private */ render: Renderer; private containerCanvasIn; private selectionCanvasIn; /** * @private */ zoomModule: Zoom; /** * @private */ isMouseDown: boolean; private isMouseEntered; private scrollMoveTimer; /** * @private */ isSelectionChangedOnMouseMoved: boolean; /** * @private */ isControlPressed: boolean; /** * @private */ touchStart: HTMLElement; /** * @private */ touchEnd: HTMLElement; /** * @private */ isTouchInput: boolean; /** * @private */ isTouchMoved: boolean; /** * @private */ useTouchSelectionMark: boolean; /** * @private */ touchDownOnSelectionMark: number; /** * @private */ textHelper: TextHelper; /** * @private */ isComposingIME: boolean; /** * @private */ lastComposedText: string; /** * @private */ isCompositionStart: boolean; /** * @private */ isCompositionUpdated: boolean; /** * @private */ isCompositionCanceled: boolean; /** * @private */ isCompositionEnd: boolean; /** * @private */ prefix: string; /** * @private */ suffix: string; private dialogInternal; private dialogTarget1; private dialogTarget2; private dialogInternal2; private dialogInternal3; /** * @private */ dialogTarget3: HTMLElement; /** * @private */ fields: FieldElementBox[]; /** * @private */ blockToShift: BlockWidget; /** * @private */ heightInfoCollection: TextHeightInfo; private animationTimer; /** * @private */ isListTextSelected: boolean; /** * @private */ selectionLineWidget: LineWidget; /** * @private */ characterFormat: WCharacterFormat; /** * @private */ paragraphFormat: WParagraphFormat; /** * @private */ themeFontLanguage: WCharacterFormat; /** * @private */ renderedLists: Dictionary<WAbstractList, Dictionary<number, number>>; /** * @private */ renderedLevelOverrides: WList[]; /** * @private */ headersFooters: HeaderFooters[]; private fieldSeparator; /** * @private */ defaultTabWidth: number; /** * @private */ dontUseHtmlParagraphAutoSpacing: boolean; /** * @private */ allowSpaceOfSameStyleInTable: boolean; /** * @private */ alignTablesRowByRow: boolean; /** * @private */ compatibilityMode: CompatibilityMode; /** * @private */ lists: WList[]; /** * @private */ images: Dictionary<number, string[]>; /** * @private */ comments: CommentElementBox[]; /** * @private */ authors: Dictionary<string, string>; /** * @private */ revisionsInternal: Dictionary<string, Revision>; /** * @private */ commentUserOptionId: number; /** * @private */ abstractLists: WAbstractList[]; /** * @private */ styles: WStyles; /** * @private */ stylesMap: Dictionary<string, any[]>; /** * @private */ listParagraphs: ParagraphWidget[]; /** * @private */ preDefinedStyles: Dictionary<string, string>; /** * @private */ isRowOrCellResizing: boolean; /** * @private */ bookmarks: Dictionary<string, BookmarkElementBox>; /** * @private */ endBookmarksUpdated: string[]; /** * @private */ formFields: FieldElementBox[]; /** * @private */ editRanges: Dictionary<string, EditRangeStartElementBox[]>; private isMouseDownInFooterRegion; private pageFitTypeIn; /** * @private */ fieldCollection: FieldElementBox[]; /** * @private */ isPageField: boolean; /** * @private */ mouseDownOffset: Point; /** * @private */ zoomX: number; /** * @private */ zoomY: number; private zoomFactorInternal; /** * If movecaretposition is 1, Home key is pressed * If moveCaretPosition is 2, End key is pressed * * @private */ moveCaretPosition: number; /** * @private */ isTextInput: boolean; /** * @private */ isScrollHandler: boolean; /** * @private */ triggerElementsOnLoading: boolean; /** * @private */ triggerSpellCheck: boolean; /** * @private */ scrollTimer: number; resizeTimer: number; /** * @private * @default false */ isScrollToSpellCheck: boolean; /** * preserve the format * * @private */ restrictFormatting: boolean; /** * preserve the document protection type either readonly or no protection * * @private */ protectionType: ProtectionType; /** * Preserve the password protection is enforced or not * * @private */ isDocumentProtected: boolean; /** * preserve the hash value of password * * @private */ hashValue: string; /** * @private */ saltValue: string; /** * @private */ userCollection: string[]; /** * @private */ restrictEditingPane: RestrictEditing; formFillPopup: FormFieldPopUp; /** * @private */ contentDropDown: ContentControlPopUp; /** * @private */ cachedPages: number[]; longTouchTimer: number; /** * @private */ skipScrollToPosition: boolean; /** * @private */ isIosDevice: boolean; /** * @private */ isMobileDevice: boolean; /** * @private */ isLinuxOS: boolean; /** * @private */ visibleBoundsIn: Rect; /** * @private */ currentSelectedCommentInternal: CommentElementBox; /** * @private */ currentSelectedRevisionInternal: Revision; /** * @private */ resizerTimer: number; /** * @private */ isFormFilling: boolean; /** * @private */ customXmlData: Dictionary<string, string>; /** * @private */ fontSubstitutionTable: Dictionary<string, string>; /** * @private */ themes: Themes; /** * @private */ hasThemes: boolean; /** * @private */ contentControlCollection: ContentControl[]; /** * @private */ footnotes: Footnote; /** * @private */ endnotes: Footnote; /** * @private */ endnoteNumberFormat: FootEndNoteNumberFormat; /** * @private */ footNoteNumberFormat: FootEndNoteNumberFormat; /** * @private */ restartIndexForFootnotes: FootnoteRestartIndex; /** * @private */ restartIndexForEndnotes: FootnoteRestartIndex; /** * @private */ footnoteCollection: FootnoteElementBox[]; /** * @private */ endnoteCollection: FootnoteElementBox[]; /** * @private */ isFootnoteWidget: boolean; /** * @private */ isDragStarted: boolean; /** * @private */ isMouseDownInSelection: boolean; /** * @private */ dragStartParaInfo: ParagraphInfo; /** * @private */ dragEndParaInfo: ParagraphInfo; /** * @private */ isSelectionActive: boolean; /** * @private */ isBookmarkInserted: boolean; private L10n; private isMappedContentControlUpdated; private isAutoResizeCanStart; private isRestartNumbering; private isKeySelection; /** * @private * Indicates whether the composition end event has been triggered. */ private isCompositionEndTriggered; private hRuler; private vRuler; private markIndicator; /** * Gets visible bounds. * * @private * @returns {Rect} - Returns visible bounds. */ readonly visibleBounds: Rect; /** * @private */ readonly viewer: LayoutViewer; /** * Gets container canvas. * * @private * @returns {HTMLCanvasElement} - Returns page canvas. */ readonly containerCanvas: HTMLCanvasElement; /** * @private * @param {string} text - Specifies the text string. */ openTextFile(text: string): void; /** * Gets selection canvas. * * @private * @returns {HTMLCanvasElement} - Returns selection canvas. */ readonly selectionCanvas: HTMLCanvasElement; /** * Gets container context. * * @private * @returns {CanvasRenderingContext2D} - Returns page canvas context. */ readonly containerContext: CanvasRenderingContext2D; /** * Gets selection context. * * @private * @returns {CanvasRenderingContext2D} - Returns selection canvas context. */ readonly selectionContext: CanvasRenderingContext2D; /** * Gets the current rendering page. * * @returns {Page} - Returns current rendering page. */ readonly currentRenderingPage: Page; /** * Gets or sets zoom factor. * * @private * @returns {number} - Returns zoom factor value. */ zoomFactor: number; /** * Gets the selection. * * @private * @returns {Selection} - Returns selection module. */ readonly selection: Selection; /** * Gets or sets selection start page. * * @private * @returns {Page} - Return selection start page. */ selectionStartPage: Page; /** * Gets or sets selection end page. * * @private * @returns {Page} - Return selection end page. */ selectionEndPage: Page; /** * Gets the initialized default dialog. * * @private * @returns {Dialog} - Returns dialog instance. */ readonly dialog: Dialog; /** * Gets the initialized default dialog. * * @private * @returns {Dialog} - Returns dialog instance. */ readonly dialog2: Dialog; /** * Gets the initialized default dialog. * * @private * @returns {Dialog} - Returns dialog instance. */ readonly dialog3: Dialog; /** * @private * @returns {void} */ currentSelectedComment: CommentElementBox; /** * @private * @returns {void} */ currentSelectedRevision: Revision; /** * @private * @returns {void} */ readonly isInlineFormFillProtectedMode: boolean; /** * @private * @returns {void} */ readonly isFormFillProtectedMode: boolean; /** * @private * @returns {Boolean} */ readonly isCommentOnlyMode: boolean; readonly isTrackedOnlyMode: boolean; constructor(owner: DocumentEditor); private initalizeStyles; /** * @private * @returns {void} */ clearDocumentItems(): void; /** * @private * @returns {void} */ setDefaultDocumentFormat(): void; private setDefaultCharacterValue; private setDefaultParagraphValue; /** * @private * @param {number} id - Specfies abstract list id. * @returns {WAbstractList} - Returns abstract list. */ getAbstractListById(id: number, isNsid?: boolean): WAbstractList; /** * @private * @param {number} id - Specfies list id. * @returns {WAbstractList} - Returns list. */ getListById(id: number, isNsid?: boolean): WList; /** * @private * @param {WListLevel} listLevel - Specfies list level. * @returns {number} - Returns list level number. */ static getListLevelNumber(listLevel: WListLevel): number; /** * @private * @param {ImageElementBox} image - Specfies image. * @returns {number} - Returns base64string. */ getImageString(image: ImageElementBox): string; /** * @private * @param {ImageElementBox} image - Specfies image. * @returns {number} - Returns key for specific image. */ addBase64StringInCollection(image: ImageElementBox): Promise<void>; /** * Gets the bookmarks. * * @private * @param {boolean} includeHidden - Include hidden bookmark. * @returns {string[]} - Returns bookmars present in current document. */ getBookmarks(includeHidden?: boolean): string[]; selectComment(comment: CommentElementBox): void; showComments(show: boolean): void; showRevisions(show: boolean): void; /** * Initializes components. * * @private * @returns {void} */ initializeComponents(): void; private measureScrollbarWidth; private createEditableDiv; private createEditableIFrame; private initIframeContent; /** * Wires events and methods. * * @returns {void} */ private wireEvent; private wireInputEvents; private onIframeLoad; /** * @private * @param {TextEvent} event - Specifies text event. * @returns {void} */ private onTextInput; /** * Fires when composition starts. * * @private * @returns {void} */ private compositionStart; /** * Fires on every input during composition. * * @private * @returns {void} */ private compositionUpdated; /** * Fires when user selects a character/word and finalizes the input. * * @private * @param {CompositionEvent} event - Specifies text compisition event. * @returns {void} */ private compositionEnd; private getEditableDivTextContent; updateAuthorIdentity(): void; getAvatar(userInfo: HTMLElement, userName: HTMLElement, comment: CommentElementBox, revision: Revision): void; /** * @private * @param {string} author - Specifies author name. * @returns {string} - Return autor color. */ getAuthorColor(author: string): string; generateRandomColor(): string; /** * @private * @returns {void} */ positionEditableTarget(): void; private onImageResizer; /** * @private * @param {KeyboardEvent} event - Specifies keyboard event * @returns {void} */ onKeyPressInternal: (event: KeyboardEvent) => void; /** * @private * @param {KeyboardEvent} event - Specifies keyboard event * @returns {void} */ private onTextInputInternal; /** * Fired on copy. * * @private * @param {ClipboardEvent} event - Specifies clipboard event. * @returns {void} */ onCopy: (event: ClipboardEvent) => void; /** * Fired on paste. * * @private * @param {ClipboardEvent} event - Specifies clipboard event. * @returns {void} */ onPaste: (event: ClipboardEvent) => void; private initDialog; private initDialog3; hideDialog(): void; private initDialog2; /** * Fires when editable div loses focus. * * @private * @returns {void} */ onFocusOut: () => void; /** * Updates focus to editor area. * * @private * @returns {void} */ updateFocus: () => void; getBase64(base64String: string, width: number, height: number): Promise<string>; /** * Clears the context. * * @private * @returns {void} */ clearContent(): void; /** * Fired when the document gets changed. * * @private * @param {BodyWidget[]} sections - Specified document content. * @returns {void} */ onDocumentChanged(sections: BodyWidget[], iOps?: Record<string, ActionInfo[]>): void; /** * Fires on scrolling. * * @returns {void} */ private scrollHandler; /** * Fires when the window gets resized. * * @private * @returns {void} */ onWindowResize: () => void; /** * @private * @param {MouseEvent} event - Specified mouse event. * @returns {void} */ onContextMenu: (event: MouseEvent) => void; /** * Initialize touch ellipse. * * @returns {void} */ private initTouchEllipse; /** * Updates touch mark position. * * @private * @returns {void} */ updateTouchMarkPosition(): void; /** * Called on mouse down. * * @private * @param {MouseEvent} event - Specifies mouse event. * @returns {void} */ onMouseDownInternal: (event: MouseEvent) => void; /** * Called on mouse move. * * @private * @param {MouseEvent} event - Specified mouse event. * @returns {void} */ onMouseMoveInternal: (event: MouseEvent) => void; private autoScrollOnSelection; /** * @private * @param {MouseEvent} event - Specifies mouse event * @returns {void} */ onMouseLeaveInternal: (event: MouseEvent) => void; private scrollForwardOnSelection; private scrollBackwardOnSelection; /** * @private * @returns {void} */ onMouseEnterInternal: (event?: MouseEvent) => void; private navigateToEndNote; /** * Fired on double tap. * * @private * @param {MouseEvent} event - Specifies mouse event. * @returns {void} */ onDoubleTap: (event: MouseEvent) => void; /** * Called on mouse up. * * @private * @param {MouseEvent} event - Specifies mouse event. * @return {void} */ onMouseUpInternal: (event: MouseEvent) => void; private moveSelectedContent; private isSelectionInListText; isInShapeBorder(floatElement: ShapeBase, cursorPoint: Point): boolean; /** * Check whether touch point is inside the rectangle or not. * * @private * @param {number} x - Specifies left position. * @param {number} y - Specifies top position. * @param {number} width - Specifies width. * @param {number} height - Specifies height * @param {Point} touchPoint - Specifies the point to check. * @returns {boolean} - Return true if points intersect. */ isInsideRect(x: number, y: number, width: number, height: number, touchPoint: Point): boolean; getLeftValue(widget: LineWidget): number; /** * Checks whether left mouse button is pressed or not. * * @param {MouseEvent} event - Specifies mouse event. * @returns {boolean} - Returns true if left mouse button is clicked. */ private isLeftButtonPressed; /** * Fired on touch start. * * @private * @param {TouchEvent} event - Specifies touch event. * @returns {void} */ onTouchStartInternal: (event: Event) => void; /** * Fired on long touch * * @private * @param {TouchEvent} event - Specifies touch event. * @returns {void} */ onLongTouch: (event: TouchEvent) => void; /** * * @private * @param {TouchEvent} event - Specifies touch event. * @returns {void} */ onTouchMoveInternal: (event: TouchEvent) => void; /** * Fired on touch up. * * @private * @param {TouchEvent} event - Specifies touch event. * @returns {void} */ onTouchUpInternal: (event: TouchEvent) => void; private updateSelectionOnTouch; /** * Gets touch offset value. * * @private * @param {TouchEvent} event - Specifies touch event * @returns {Point} - Returns modified touch offset */ getTouchOffsetValue(event: TouchEvent): Point; /** * Fired on pinch zoom in. * * @private * @param {TouchEvent} event - Specifies touch event * @returns {void} */ onPinchInInternal(event: TouchEvent): void; private onPinchOutInternal; getPageWidth(page: Page): number; /** * Removes specified page. * @private * @param {Page} page - Specifies page to remove * @returns {void} */ removePage(page: Page): void; /** * Updates viewer size on window resize. * * @private * @returns {void} */ updateViewerSize(): void; /** * @private */ triggerAutoResizeInterval(): void; private updateViewerSizeInternal; private getComputedWidth; /** * Inserts page in specified index. * * @private * @param {number} index - Specifes index to insert page * @param {Page} page - Page to insert. * @returns {void} */ insertPage(index: number, page: Page): void; updateTextPositionForSelection(cursorPoint: Point, tapCount: number): void; scrollToPosition(startPosition: TextPosition, endPosition: TextPosition, skipCursorUpdate?: boolean, isBookmark?: boolean): void; getLineWidget(cursorPoint: Point): LineWidget; getLineWidgetInternal(cursorPoint: Point, isMouseDragged: boolean): LineWidget; private checkInlineShapeItems; /** * @private */ checkPointIsInLine(widget: LineWidget, cursorPoint: Point): boolean; private isInFootnoteWidget; private checkFloatingItems; isBlockInHeader(block: Widget): boolean; clearSelectionHighlight(): void; /** * Fired on keyup event. * * @private * @param {KeyboardEvent} event - Specifies keyboard event. * @returns {void} */ onKeyUpInternal: (event: KeyboardEvent) => void; /** * Fired on keyup event. * * @private * @param {KeyboardEvent} event - Specifies keyboard event. * @returns {void} */ onViewerKeyUpInternal: (event: KeyboardEvent) => void; /** * Fired on keydown. * * @private * @param {KeyboardEvent} event - Specifies keyboard event. * @returns {void} */ onKeyDownInternal: (event: KeyboardEvent) => void; /** * @private * @returns {void} */ removeEmptyPages(skipEndLayout?: boolean): void; /** * @private * @returns {void} */ scrollToBottom(): void; getFieldResult(fieldBegin: FieldElementBox, page: Page): string; private getFieldText; private isEmptyShape; /** * Destroys the internal objects maintained for control. * * @returns {void} */ destroy(): void; /** * Un-Wires events and methods * * @returns {void} */ private unWireEvent; updateCursor(event: MouseEvent): void; /** * @private */ updateDialogTabHeight(dialogElement: HTMLElement, targetElement: HTMLElement): number; /** * * @private */ canRenderBorder(paragraph: ParagraphWidget): BorderRenderInfo; private checkEqualBorder; /** * @private */ getParagraphLeftPosition(paragraphWidget: ParagraphWidget): number; /** * @private */ skipBottomBorder(paragraph: ParagraphWidget, nextWidget: ParagraphWidget): boolean; /** * @private */ isPageInVisibleBound(page: Page, pageTop: number): boolean; /** * Get first paragraph in cell * * @private * @returns {ParagraphWidget} */ getFirstParagraphInCell(cell: TableCellWidget): ParagraphWidget; /** * Get first paragraph in first cell * * @private * @returns {TableWidget} */ getFirstParagraphInFirstCell(table: TableWidget): ParagraphWidget; /** * Get last paragraph in last cell * * @private * @returns {ParagraphWidget} */ getLastParagraphInLastCell(table: TableWidget): ParagraphWidget; /** * Get first paragraph in block * * @private * @returns {ParagraphWidget} */ getFirstParagraphBlock(block: BlockWidget): ParagraphWidget; /** * Get last paragraph in block * * @private * @returns {ParagraphWidget} */ getLastParagraphBlock(block: BlockWidget): ParagraphWidget; /** * Get last paragraph in first row * * @private * @returns {ParagraphWidget} */ getLastParagraphInFirstRow(table: TableWidget): ParagraphWidget; /** * Get first paragraph in last row * * @private */ getFirstParagraphInLastRow(table: TableWidget): ParagraphWidget; /** * Add the given WStyle Object ot stylesMap Dictionary * * @private */ addToStylesMap(style: WStyle): void; private parseStyle; /** * Get next valid element * * @private */ getNextValidElement(inline: ElementBox): ElementBox; /** * @private */ getNextValidElementForField(firstInline: ElementBox): ElementBox; /** * @private */ combineSection(): BodyWidget[]; /** * @private */ combineSectionChild(bodyWidget: BodyWidget, sections: BodyWidget[], destoryPage: boolean): BodyWidget; } /** * @private */ export declare abstract class LayoutViewer { owner: DocumentEditor; constructor(owner: DocumentEditor); readonly documentHelper: DocumentHelper; /** * @private */ visiblePages: Page[]; /** * @private */ padding: Padding; /** * @private */ clientActiveArea: Rect; /** * @private */ clientArea: Rect; /** * @private */ columnLayoutArea: ColumnLayout; /** * @private */ textWrap: boolean; /** * @private */ preVisibleWidth: number; /** * @private */ private pageFitTypeIn; /** * @private */ containerTop: number; /** * @private */ containerWidth: number; /** * @private */ containerLeft: number; /** * Gets or sets page fit type. * @private */ pageFitType: PageFitType; updateClientArea(bodyWidget: BodyWidget, page: Page, isReLayout?: boolean): void; setClientArea(bodyWidget: BodyWidget, clientArea: Rect): void; updateClientAreaTopOrLeft(tableWidget: TableWidget, beforeLayout: boolean): void; updateClientAreaForTable(tableWidget: TableWidget): void; updateClientAreaForRow(row: TableRowWidget, beforeLayout: boolean): void; updateClientAreaForCell(cell: TableCellWidget, beforeLayout: boolean): void; updateClientAreaForTextBoxShape(textBox: ShapeElementBox, beforeLayout: boolean, shiftNextWidget?: boolean): void; updateClientAreaByWidgetFootNote(widget: FootNoteWidget): void; /** * @private */ updateClientAreaForTextWrap(area: Rect): void; private updateBoundsBasedOnTextWrap; private updateBoundsBasedOnTextWrapTable; updateClientAreaByWidget(widget: ParagraphWidget): void; updateClientAreaLocation(widget: Widget, area: Rect): void; updateClientAreaForBlock(block: BlockWidget, beforeLayout: boolean, tableCollection?: TableWidget[], updateYPosition?: boolean, updateXPosition?: boolean): void; private updateParagraphYPositionBasedonTextWrap; private updateParagraphXPositionBasedOnTextWrap; private updateTableXPositionBasedOnTextWrap; private isFloatingItemIntersect; private getIntersectingItemBounds; private getMinBottomFloatingItem; private getIntersectingFloatingItems; private getTextWrappingBound; private tableAlignmentForBidi; cutFromLeft(x: number): void; cutFromTop(y: number): void; updateClientWidth(width: number): void; findFocusedPage(currentPoint: Point, updateCurrentPage: boolean, updateHeaderFooterPage?: boolean): Point; getPageHeightAndWidth(height: number, width: number, viewerWidth: number, viewerHeight: number): PageInfo; renderVisiblePages(): void; handleZoom(): void; updateCanvasWidthAndHeight(viewerWidth: number, viewerHeight: number, containerHeight: number, containerWidth: number, width: number, height: number): CanvasInfo; updateScrollBarPosition(containerWidth: number, containerHeight: number, viewerWidth: number, viewerHeight: number, width: number, height: number): void; /** * @private */ abstract readonly pageGap: number; /** * @private */ abstract createNewPage(section: BodyWidget, index?: number): Page; /** * @private */ abstract renderPage(page: Page, x: number, y: number, width: number, height: number): void; /** * @private */ abstract updateScrollBars(): void; /** * private */ abstract scrollToPage(pageIndex: number): void; /** * @private */ abstract onPageFitTypeChanged(pageFitType: PageFitType): void; destroy(): void; /** * Disposes the internal objects which are maintained. * @private */ componentDestroy(): void; } /** * @private */ export declare class PageLayoutViewer extends LayoutViewer { private pageLeft; /** * @private */ readonly pageGap: number; /** * Initialize the constructor of PageLayoutViewer */ constructor(owner: DocumentEditor); readonly documentHelper: DocumentHelper; createNewPage(section: BodyWidget, index?: number): Page; updatePageBoundingRectangle(section: BodyWidget, page: Page, yPosition: number): void; onPageFitTypeChanged(pageFitType: PageFitType): void; getCurrentPageHeaderFooter(section: BodyWidget, isHeader: boolean): HeaderFooterWidget; getHeaderFooterType(section: BodyWidget, isHeader: boolean): HeaderFooterType; getCurrentHeaderFooter(type: HeaderFooterType, sectionIndex: number): HeaderFooterWidget; private createHeaderFooterWidget; getHeaderFooter(type: HeaderFooterType): number; updateHFClientArea(sectionFormat: WSectionFormat, isHeader: boolean): void; updateHeaderFooterClientAreaWithTop(sectionFormat: WSectionFormat, isHeader: boolean, page: Page): void; updateFootnoteClientArea(sectionFormat: WSectionFormat, footnote: FootNoteWidget, footNoteType?: FootnoteType, para?: ParagraphWidget): void; scrollToPage(pageIndex: number): void; updateScrollBars(): void; updateVisiblePages(): void; private addVisiblePage; renderPage(page: Page, x: number, y: number, width: number, height: number): void; } export declare class WebLayoutViewer extends LayoutViewer { constructor(owner: DocumentEditor); readonly documentHelper: DocumentHelper; /** * @private */ visiblePages: Page[]; /** * @private */ readonly pageGap: number; /** * Creates new page. * @private */ createNewPage(section: BodyWidget, index?: number): Page; onPageFitTypeChanged(pageFitType: PageFitType): void; scrollToPage(pageIndex: number): void; getContentHeight(): number; /** * @private */ getContentWidth(): number; updateScrollBars(): void; updateVisiblePages(): void; addVisiblePage(page: Page, x: number, y: number): void; /** * @private */ renderPage(page: Page, x: number, y: number, width: number, height: number): void; } /** * @private */ export declare class ColumnLayout { private currentIndexIn; private numberOfColumnsIn; private columnIn; private viewerIn; private defaultSpaceIn; private pageWidth; currentIndex: number; /** * Initialize the constructor of Column Layout Settings */ constructor(viewer: LayoutViewer); private readonly columnCount; /** * @private * @param sectionFormat */ setColumns(sectionFormat: WSectionFormat): void; /** * @private */ clear(): void; reset(): void; /** * @private * @param bodyWidget * @param clientArea * @returns */ getColumnBounds(bodyWidget: BodyWidget, clientArea: Rect): Rect; /** * @private * @param bodyWidget * @param clientArea * @returns */ getColumnBoundsByBodyWidget(bodyWidget: BodyWidget, clientArea: Rect): Rect; /** * @private * @param bodyWidget * @param clientArea * @returns */ getNextColumnByBodyWidget(bodyWidget: BodyWidget): WColumnFormat; private getColumnByIndex; private getColumnObj; private getColumnBoundsByIndex; }