@syncfusion/ej2-pdfviewer
Version:
Essential JS 2 PDF viewer Component
547 lines (546 loc) • 17.8 kB
TypeScript
import { PdfViewer, PdfViewerBase, ISize, PageOrganizerSettingsModel } from '../index';
interface IActionOrganizeElements {
action: string;
UndoRedoTileActions: OrganizeDetails[];
toolbarActions: OrganizeDetails[];
selectedPagesIndexes: number[];
dropIndex: number;
isRightInsertion: boolean;
}
/**
* The `PageOrganizer` module is used to handle page organize operations of PDF viewer.
*
* @param {Event} event - The event triggering the page organization.
* @param {Object} args - Additional arguments for the page organization.
* @returns {void}
*/
export declare class PageOrganizer {
private pdfViewer;
private pdfViewerBase;
private rotateRightButton;
private rotateLeftButton;
private insertRightButton;
private insertLeftButton;
private deleteButton;
private copyButton;
private pageZoomElement;
private pageZoomDropDown;
private pageZoomSlider;
private pageZoomDecreaseButton;
private pageZoomIncreaseButton;
private pageZoomContainer;
private toolbar;
private importDocInputElement;
private importedDocumentName;
private previewLimit;
private lastRequestedPageIndex;
private pageZoomSliderStep;
private currentPageZoomSliderValue;
private previouslyRequestedImageZoom;
/**
* @private
*/
importedDocumentData: string;
/**
* @private
*/
dataDetails: any[];
/**
* @private
*/
dialogDivElement: HTMLElement;
/**
* @private
*/
waitingPopup: HTMLElement;
private thumbnail;
private imageContainer;
private organizeDialog;
private tileAreaWrapper;
private tileAreaDiv;
private thumbnailImage;
private importImageWrapper;
private pageLink;
private previewRequestHandler;
private contextMenuObj;
private mobileContextMenu;
/**
* @private
*/
organizePagesCollection: OrganizeDetails[];
private tempOrganizePagesCollection;
private isSkipRevert;
private isAllImagesReceived;
private selectAllCheckBox;
private totalCheckedCount;
private selectedPageIndexes;
private dragEndIndex;
private dragHoveredIndex;
private dragObj;
private dropObj;
private virtualEle;
private previousClientY;
private autoScrollInterval;
private isRightInsertion;
private gapBetweenDivs;
private previousImageZoom;
private currentImageZoom;
/**
* @private
*/
isDocumentModified: boolean;
/**
* @private
*/
undoOrganizeCollection: IActionOrganizeElements[];
/**
* @private
*/
redoOrganizeCollection: IActionOrganizeElements[];
/**
* @private
*/
toolbarUndoRedoCollection: OrganizeDetails[];
private startTile;
private ctrlKey;
private shiftKey;
private isClickedOnCheckBox;
private isTouchEvent;
private isPageZoomChanged;
private isInitialLoading;
private boundOnTileAreaMouseDown;
private boundOnTileAreaKeyDown;
private boundOnTileAreaKeyUp;
private boundPageOrganizerOnScroll;
private boundPageZoomDropDownOpen;
private boundPageZoomDropDownClose;
private boundPageZoomChange;
private boundIncreasePageZoom;
private boundDecreasePageZoom;
/**
* @private
*/
isOrganizeWindowOpen: boolean;
isPageZoomPopupOpen: boolean;
/**
* @param {PdfViewer} pdfViewer - It describes about the pdfviewer
* @param {PdfViewerBase} pdfViewerBase - It describes about the pdfviewer base
* @private
*/
constructor(pdfViewer: PdfViewer, pdfViewerBase: PdfViewerBase);
/**
* @param {boolean} isReConstruct - It describes about the isReConstruct
* @private
* @returns {void}
*/
createOrganizeWindow(isReConstruct?: boolean): void;
/**
* @param {boolean} isReConstruct - Defines whether organizer window is reconstructed when closing
* @private
* @returns {void}
*/
createOrganizeWindowForMobile(isReConstruct?: boolean): void;
/**
* @private
* @param {PageOrganizerSettingsModel} pageOrganizerSettings new page organizer settings object
* @returns {void}
*/
setPageOrganizerSettings(pageOrganizerSettings: PageOrganizerSettingsModel): void;
private initEventListeners;
private removeEventListeners;
private pageOrganizerOnScroll;
private onTileAreaMouseDown;
private onTileAreaKeyDown;
private onTileAreaKeyUp;
private onSelectAllClick;
private selectRange;
private selectTile;
private deselectTile;
private clearSelection;
private selectAllTiles;
private updateOrganizeDialogSize;
private createContentArea;
private updatePageZoomPopup;
getImageZoomMin(): number;
getImageZoomMax(): number;
private isOrganizeDialogRendered;
private modifyThumbnailContainer;
private setThumbnailImage;
private handlePageZoomPopupMobile;
private addPageZoomDropDown;
private createPageZoomDropDown;
private shrinkElement;
private pageZoomDropDownOpen;
private pageZoomDropDownClose;
private pageZoomChange;
private blurImageContainer;
private createPageZoomSlider;
private createMobileContextMenu;
private contextMenuBeforeOpen;
private getCopiedItems;
private getImportedItems;
private contextMenuItemSelect;
/**
* @private
* @returns {void}
*/
createRequestForPreview(): any;
private requestPreviewCreation;
/**
* @param {any} data - It describes about the data
* @private
* @returns {void}
*/
updatePreviewCollection(data: any): void;
/**
* @param {any} event - It describes about the event
* @private
* @returns {void}
*/
previewOnMessage(event: any): void;
/**
* @param {any} data - It describes about the data
* @param {boolean} isClientRender - It describes about the isClientRender
* @private
* @returns {void}
*/
getData(data: any, isClientRender: boolean): void;
private createImportDocElement;
private pageDragDrop;
private movePDFpages;
private rearrangePages;
private updateCollection;
/**
* @private
* @param {any} a - a value
* @param {any} b - b value
* @returns {number} - number
*/
sorting(a: any, b: any): number;
private containsPageDetails;
private renderThumbnailImage;
private bindImportDocEvent;
/**
* @param {number} pageIndex - It describes about the page index
* @param {number} subIndex - It describes about the sub index
* @param {number} pageOrder - It describes about the page order
* @param {HTMLElement} targetElement - It describes about the target element
* @param {boolean} isNewPage - It describes about the isNewPage
* @param {boolean} isBefore - It describes about the isBefore
* @param {boolean} isEmptyPage - It describes about the isEmptyPage
* @param {boolean} isImportedPage - It describes about the isImportedPage
* @param {string} documentName - It describes about the documentName
* @private
* @returns {void}
*/
tileImageRender(pageIndex: number, subIndex?: number, pageOrder?: number, targetElement?: HTMLElement, isNewPage?: boolean, isBefore?: boolean, isEmptyPage?: boolean, isImportedPage?: boolean, documentName?: string): void;
private handleImageContainerClick;
private movePages;
private autoScroll;
private handlePageMove;
private isTileRightInsertion;
private addSelectionRingStyle;
private removeSelectionRingStyle;
private isHoveredOnSelectedPages;
/**
* @param {MouseEvent} event - It describes about the event
* @private
* @returns {void}
*/
thumbnailMouseOver: (event: MouseEvent) => void;
/**
* @param {MouseEvent} event - It describes about the event
* @private
* @returns {void}
*/
thumbnailMouseLeave: (event: MouseEvent) => void;
/**
* @param {OrganizeDetails[]} UndoRedoTileActions - Specifies the details of the action occured page
* @param {string} actionString - Specifies the Name of the action
* @param {OrganizeDetails[]} toolbarActions - Collection to store multiple action as single action
* @param {number[]} selectedPageIndexes - Collection to store selected page index
* @param {number} dropIndex - Specifies where the page should be dropped
* @param {boolean} isRightInsertion - Used to check whether the page should be dropped at right
* @returns {void}
* @private
*/
addOrganizeAction(UndoRedoTileActions: OrganizeDetails[], actionString: string, toolbarActions: OrganizeDetails[], selectedPageIndexes: number[], dropIndex: number, isRightInsertion: boolean): void;
private updateUndoRedoButtons;
private handlePageZoomButtonsVisibility;
private enablePageZoomButtons;
private enableDisableToolbarItems;
private enableToolbarItem;
private disableTileDeleteButton;
private disableTileCopyRotateButton;
private disableTileCopyButton;
private onSelectClick;
private updateSelectAllCheckbox;
private setSelectionRingStyle;
private onTooltipBeforeOpen;
private rotateButtonClick;
private openContextMenu;
private rotateLeftButtonClick;
private onToolbarRightButtonClick;
private onToolbarLeftButtonClick;
private onToolbarCopyButtonClick;
private onToolbarDeleteButtonClick;
private updateTempRotationDetail;
private organizeWindowFocus;
private getRotatedAngle;
private getRotation;
private updateRotationDetailCollection;
private updatePageSize;
private onSaveClicked;
/**
* @param {boolean} isShow - specifies the isShow boolean.
* @returns {void}
* @private
*/
showOrganizeLoadingIndicator(isShow: boolean): void;
private updateOrganizePageDetailsInViewer;
private getNextSubIndex;
private restorePagesBeforeZoom;
private restorePagesAfterZoom;
private undoActionHandler;
private redoActionHandler;
/**
* @private
* @returns {void}
*/
undo: () => void;
/**
* @private
* @returns {void}
*/
redo: () => void;
private removePage;
private rotateImages;
private rotateImage;
private updatePageDetail;
private insertRightButtonClick;
private insertLeftButtonClick;
private copyButtonClick;
private deleteButtonClick;
private deletePageElement;
private deleteTempPage;
private undoDeletedPage;
private insertRemovedPages;
private clonedCollection;
private updateTotalPageCount;
private updatePageNumber;
private insertTempPage;
private copyPage;
private importPage;
private organizeWireEvent;
private organizeUnWireEvent;
private importDocument;
/**
* @param {string} documentData - specifies the documentData.
* @param {string} password - specifies the password.
* @param {boolean} isPasswordCorrect - specifies the isPasswordCorrect.
* @returns {void}
* @private
*/
loadImportDoc(documentData: string, password: string, isPasswordCorrect: boolean): void;
private importDocuments;
private updateOrganizePageCollection;
/**
*
* @param {any} pageCanvas - It describes about the page canvas
* @param {number} pageNumber - It describes about the page number
* @private
* @returns {void}
*/
applyElementStyles(pageCanvas: any, pageNumber: number): void;
private onSaveasClicked;
/**
*
* Rotates all pages in the PDF Viewer by the specified angle.
*
* @param {PdfPageRotateAngle} pageRotateAngle - The angle by which to rotate the pages (PdfPageRotateAngle).
* The rotation can be 0, 90, 180, or 270 degrees.
* @returns {void}
* @private
*/
rotateAllPages(pageRotateAngle: PdfPageRotateAngle): void;
/**
* Rotates the specified pages in the PDF Viewer by the specified angle.
*
* @param {number} pageIndexes - The array of page indexes to rotate.
* @param {PdfPageRotateAngle} pageRotateAngle - The angle by which to rotate the pages (PdfPageRotateAngle).
* The rotation can be 0, 90, 180, or 270 degrees.
* @returns {void}
* @private
*/
rotatePages(pageIndexes: number[], pageRotateAngle: PdfPageRotateAngle): void;
/**
* @private
* @returns {void}
*/
rotatePages(pageStartIndex: number, pageEndIndex: number, pageRotateAngle: PdfPageRotateAngle): void;
/**
* @private
* @returns {void}
*/
rotatePages(pageRotations: PageRotation[]): void;
private processRotation;
private generateRange;
private pdfRotateAngle;
private createTooltip;
/**
* @private
* @param {number} newSize The size to which image zoom is to be updated
* @param {number} oldSize The present value of image zoom
* @returns {void}
*/
updateOrganizePageImageSize(newSize: number, oldSize?: number): void;
/**
* Rotates the specified pages clockwise by 90 degrees.
*
* @param {number} pageNumbers - Array of page numbers to rotate.
* @private
* @returns {void}
*/
rotateClockwise(pageNumbers: number[]): void;
/**
* Rotates the specified pages counterclockwise by 90 degrees.
*
* @param {number} pageNumbers - Array of page numbers to rotate.
* @private
* @returns {void}
*/
rotateCounterclockwise(pageNumbers: number[]): void;
/**
* Opens the page organizer dialog within the Pdf Viewer, allowing for management of PDF pages.
*
* ```html
* <div id="pdfViewer" style="height: 100%;width: 100%;"></div>
* ```
* ```ts
* let viewer: PdfViewer = new PdfViewer();
* viewer.appendTo("#pdfViewer");
* viewer.documentLoad = () => {
* viewer.pageOrganizer.openPageOrganizer();
* }
* ```
*
* @returns {void}
*/
openPageOrganizer(): void;
/**
* Closes the currently open page organizer dialog within the PDF Viewer, if present.
*
* ```html
* <div id="pdfViewer" style="height: 100%;width: 100%;"></div>
* ```
* ```ts
* let viewer: PdfViewer = new PdfViewer();
* viewer.appendTo("#pdfViewer");
* viewer.documentLoad = () => {
* viewer.pageOrganizer.closePageOrganizer();
* }
* ```
*
* @returns {void}
*/
closePageOrganizer(): void;
/**
* @private
* @param {PageOrganizerSettingsModel} newProp The new pageOrganizerSettings Property of PdfViewer from onPropertyChanged
* @returns {void}
*/
handleImageSizeBoundsChange(newProp: PageOrganizerSettingsModel): void;
/**
* @private
* @param {boolean} showImageZoomingSlider The new showImageZoomingSlider property of PdfViewer.PageOrganizerSettings from onPropertyChanged
* @returns {void}
*/
handleImageResizerVisibility(showImageZoomingSlider: boolean): void;
/**
* @private
* @returns {void}
*/
switchPageOrganizer(): void;
/**
* @private
* @returns {void}
*/
getModuleName(): string;
/**
* @param {HTMLDivElement} imageContainer Div element whose margin is to be calculated
* @private
* @returns {number} imageZoom factor according to screen size
*/
private getImageZoomFactor;
/**
* @private
* @param {boolean} isImageRequest defines if the function is called for image request
* @param {number} size optional size can be sent to check valid page zoom value
* @returns {number} imageZoom value
*/
getImageZoomValue(isImageRequest?: boolean, size?: number): number;
private destroyDialogWindow;
private pageZoomWireEvents;
private increasePageZoom;
private decreasePageZoom;
handlePageZoomChange(currentValue: number, previousValue: number): void;
private pageZoomUnWireEvents;
private pageZoomSliderWireEvents;
private pageZoomSliderUnwireEvents;
/**
* @private
* @returns {void}
*/
clear(): void;
/**
* @private
* @returns {void}
*/
destroy(): boolean;
}
/**
* Enum for PdfPageRotateAngle
*/
export declare enum PdfPageRotateAngle {
RotateAngle0 = 1,
RotateAngle90 = 2,
RotateAngle180 = 3,
RotateAngle270 = 4,
RotateAngle360 = 1
}
export declare class PageRotation {
pageIndex: number;
rotationAngle: PdfPageRotateAngle;
constructor(pageIndex: number, rotationAngle: PdfPageRotateAngle);
}
/**
* Interface representing details about a page, including rotation angle and page index.
*
* @hidden
*/
export interface PageDetails {
rotateAngle: number;
pageIndex: number;
}
/**
* Interface representing details about organizing pages, including page ID, current page index, rotate angle, and status of insertion and deletion.
*/
export declare class OrganizeDetails {
currentPageIndex: number;
pageIndex: number;
copiedPageIndex: number;
isInserted: boolean;
isDeleted: boolean;
isCopied: boolean;
istargetCopied: boolean;
hasEmptyPageAfter: boolean;
hasEmptyPageBefore: boolean;
rotateAngle: number;
pageSize: ISize;
isImportedDoc: boolean;
documentName: string;
password: string;
documentData: string;
constructor(currentPageIndex: number, pageIndex: number, copiedPageIndex: number, isInserted: boolean, isDeleted: boolean, isCopied: boolean, istargetCopied: boolean, hasEmptyPageAfter: boolean, hasEmptyPageBefore: boolean, rotateAngle: number, pageSize: ISize, isImportedDoc: boolean, documentName: string, password: string, documentData: string);
}
export {};