ngx-extended-pdf-viewer
Version:
Embedding PDF files in your Angular application. Highly configurable viewer including the toolbar, sidebar, and all the features you're used to.
47 lines • 10.2 kB
JavaScript
import { Component, Input, ViewEncapsulation, effect } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "../../pdf-notification-service";
import * as i2 from "../pdf-shy-button/pdf-shy-button.component";
import * as i3 from "../../responsive-visibility";
export class PdfRotatePageCwComponent {
notificationService;
changeDetectorRef;
showRotateCwButton = true;
disableRotate = true;
clockwise = true;
counterClockwise = true;
PDFViewerApplication;
constructor(notificationService, changeDetectorRef) {
this.notificationService = notificationService;
this.changeDetectorRef = changeDetectorRef;
effect(() => {
this.PDFViewerApplication = notificationService.onPDFJSInitSignal();
if (this.PDFViewerApplication) {
this.onPdfJsInit();
}
});
}
rotateCW() {
this.PDFViewerApplication?.eventBus.dispatch('rotatecw');
}
onPdfJsInit() {
this.PDFViewerApplication?.eventBus.on('updateuistate', (event) => this.updateUIState(event));
}
updateUIState(event) {
this.disableRotate = event.pagesCount === 0;
this.changeDetectorRef.markForCheck();
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfRotatePageCwComponent, deps: [{ token: i1.PDFNotificationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PdfRotatePageCwComponent, selector: "pdf-rotate-page-cw", inputs: { showRotateCwButton: "showRotateCwButton", clockwise: "clockwise", counterClockwise: "counterClockwise" }, ngImport: i0, template: "@if (clockwise) {\n <pdf-shy-button\n [action]=\"rotateCW\"\n primaryToolbarId=\"primaryPageRotateCw\"\n class=\"rotateCw\"\n [cssClass]=\"showRotateCwButton | responsiveCSSClass : 'hiddenXLView'\"\n title=\"Rotate Clockwise\"\n l10nId=\"pdfjs-page-rotate-cw-button\"\n l10nLabel=\"pdfjs-page-rotate-cw-button-label\"\n [disabled]=\"disableRotate\"\n [order]=\"900\"\n [closeOnClick]=\"false\"\n image=\"<svg aria-hidden='true' focusable='false' class='width-height-23px' viewBox='0 0 24 24'><path fill='currentColor' d='M12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C14 21 15.92 20.34 17.5 19.14L16.06 17.7C14.87 18.54 13.45 19 12 19C8.13 19 5 15.87 5 12S8.13 5 12 5 19 8.13 19 12H16L20 16L24 12H21C21 7.03 16.97 3 12 3'/></svg>\"\n >\n </pdf-shy-button>\n}\n", styles: [":host:focus{outline:none}ngx-extended-pdf-viewer pdf-rotate-page-cw button:focus{outline:none}ngx-extended-pdf-viewer pdf-rotate-page-cw svg:focus{outline:none}ngx-extended-pdf-viewer pdf-rotate-page-cw button{padding:0;margin-top:0;margin-bottom:0}ngx-extended-pdf-viewer pdf-rotate-page-cw .width-height-23px{width:23px;height:23px}\n"], dependencies: [{ kind: "component", type: i2.PdfShyButtonComponent, selector: "pdf-shy-button", inputs: ["primaryToolbarId", "secondaryMenuId", "cssClass", "eventBusName", "l10nId", "l10nLabel", "title", "toggled", "disabled", "order", "action", "closeOnClick", "onlySecondaryMenu", "image"] }, { kind: "pipe", type: i3.ResponsiveCSSClassPipe, name: "responsiveCSSClass" }], encapsulation: i0.ViewEncapsulation.None });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfRotatePageCwComponent, decorators: [{
type: Component,
args: [{ selector: 'pdf-rotate-page-cw', encapsulation: ViewEncapsulation.None, template: "@if (clockwise) {\n <pdf-shy-button\n [action]=\"rotateCW\"\n primaryToolbarId=\"primaryPageRotateCw\"\n class=\"rotateCw\"\n [cssClass]=\"showRotateCwButton | responsiveCSSClass : 'hiddenXLView'\"\n title=\"Rotate Clockwise\"\n l10nId=\"pdfjs-page-rotate-cw-button\"\n l10nLabel=\"pdfjs-page-rotate-cw-button-label\"\n [disabled]=\"disableRotate\"\n [order]=\"900\"\n [closeOnClick]=\"false\"\n image=\"<svg aria-hidden='true' focusable='false' class='width-height-23px' viewBox='0 0 24 24'><path fill='currentColor' d='M12 3C7.03 3 3 7.03 3 12S7.03 21 12 21C14 21 15.92 20.34 17.5 19.14L16.06 17.7C14.87 18.54 13.45 19 12 19C8.13 19 5 15.87 5 12S8.13 5 12 5 19 8.13 19 12H16L20 16L24 12H21C21 7.03 16.97 3 12 3'/></svg>\"\n >\n </pdf-shy-button>\n}\n", styles: [":host:focus{outline:none}ngx-extended-pdf-viewer pdf-rotate-page-cw button:focus{outline:none}ngx-extended-pdf-viewer pdf-rotate-page-cw svg:focus{outline:none}ngx-extended-pdf-viewer pdf-rotate-page-cw button{padding:0;margin-top:0;margin-bottom:0}ngx-extended-pdf-viewer pdf-rotate-page-cw .width-height-23px{width:23px;height:23px}\n"] }]
}], ctorParameters: () => [{ type: i1.PDFNotificationService }, { type: i0.ChangeDetectorRef }], propDecorators: { showRotateCwButton: [{
type: Input
}], clockwise: [{
type: Input
}], counterClockwise: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXJvdGF0ZS1wYWdlLWN3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdG9vbGJhci9wZGYtcm90YXRlLXBhZ2UtY3cvcGRmLXJvdGF0ZS1wYWdlLWN3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdG9vbGJhci9wZGYtcm90YXRlLXBhZ2UtY3cvcGRmLXJvdGF0ZS1wYWdlLWN3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBWS9GLE1BQU0sT0FBTyx3QkFBd0I7SUFjZjtJQUFxRDtJQVpsRSxrQkFBa0IsR0FBeUIsSUFBSSxDQUFDO0lBRWhELGFBQWEsR0FBRyxJQUFJLENBQUM7SUFHckIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUdqQixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFFdkIsb0JBQW9CLENBQW9DO0lBRWhFLFlBQW9CLG1CQUEyQyxFQUFVLGlCQUFvQztRQUF6Rix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQVUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUMzRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDcEUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQXlCO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7d0dBbENVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDhLQ1pyQyx3eEJBZ0JBOzs0RkRKYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usb0JBQW9CLGlCQUdmLGlCQUFpQixDQUFDLElBQUk7MkhBSTlCLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFNQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsZ0JBQWdCO3NCQUR0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVwZGF0ZVVJU3RhdGVFdmVudCB9IGZyb20gJy4uLy4uL2V2ZW50cy91cGRhdGUtdWktc3RhdGUtZXZlbnQnO1xuaW1wb3J0IHsgSVBERlZpZXdlckFwcGxpY2F0aW9uIH0gZnJvbSAnLi4vLi4vb3B0aW9ucy9wZGYtdmlld2VyLWFwcGxpY2F0aW9uJztcbmltcG9ydCB7IFBERk5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9wZGYtbm90aWZpY2F0aW9uLXNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2l2ZVZpc2liaWxpdHkgfSBmcm9tICcuLi8uLi9yZXNwb25zaXZlLXZpc2liaWxpdHknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZGYtcm90YXRlLXBhZ2UtY3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGRmLXJvdGF0ZS1wYWdlLWN3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGRmLXJvdGF0ZS1wYWdlLWN3LmNvbXBvbmVudC5jc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUGRmUm90YXRlUGFnZUN3Q29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dSb3RhdGVDd0J1dHRvbjogUmVzcG9uc2l2ZVZpc2liaWxpdHkgPSB0cnVlO1xuXG4gIHB1YmxpYyBkaXNhYmxlUm90YXRlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2xvY2t3aXNlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY291bnRlckNsb2Nrd2lzZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSBQREZWaWV3ZXJBcHBsaWNhdGlvbjogSVBERlZpZXdlckFwcGxpY2F0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogUERGTm90aWZpY2F0aW9uU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbiA9IG5vdGlmaWNhdGlvblNlcnZpY2Uub25QREZKU0luaXRTaWduYWwoKTtcbiAgICAgIGlmICh0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uKSB7XG4gICAgICAgIHRoaXMub25QZGZKc0luaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByb3RhdGVDVygpOiB2b2lkIHtcbiAgICB0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uPy5ldmVudEJ1cy5kaXNwYXRjaCgncm90YXRlY3cnKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBkZkpzSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uPy5ldmVudEJ1cy5vbigndXBkYXRldWlzdGF0ZScsIChldmVudCkgPT4gdGhpcy51cGRhdGVVSVN0YXRlKGV2ZW50KSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVUlTdGF0ZShldmVudDogVXBkYXRlVUlTdGF0ZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlUm90YXRlID0gZXZlbnQucGFnZXNDb3VudCA9PT0gMDtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCJAaWYgKGNsb2Nrd2lzZSkge1xuICA8cGRmLXNoeS1idXR0b25cbiAgICBbYWN0aW9uXT1cInJvdGF0ZUNXXCJcbiAgICBwcmltYXJ5VG9vbGJhcklkPVwicHJpbWFyeVBhZ2VSb3RhdGVDd1wiXG4gICAgY2xhc3M9XCJyb3RhdGVDd1wiXG4gICAgW2Nzc0NsYXNzXT1cInNob3dSb3RhdGVDd0J1dHRvbiB8IHJlc3BvbnNpdmVDU1NDbGFzcyA6ICdoaWRkZW5YTFZpZXcnXCJcbiAgICB0aXRsZT1cIlJvdGF0ZSBDbG9ja3dpc2VcIlxuICAgIGwxMG5JZD1cInBkZmpzLXBhZ2Utcm90YXRlLWN3LWJ1dHRvblwiXG4gICAgbDEwbkxhYmVsPVwicGRmanMtcGFnZS1yb3RhdGUtY3ctYnV0dG9uLWxhYmVsXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVJvdGF0ZVwiXG4gICAgW29yZGVyXT1cIjkwMFwiXG4gICAgW2Nsb3NlT25DbGlja109XCJmYWxzZVwiXG4gICAgaW1hZ2U9XCI8c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJyBjbGFzcz0nd2lkdGgtaGVpZ2h0LTIzcHgnIHZpZXdCb3g9JzAgMCAyNCAyNCc+PHBhdGggZmlsbD0nY3VycmVudENvbG9yJyBkPSdNMTIgM0M3LjAzIDMgMyA3LjAzIDMgMTJTNy4wMyAyMSAxMiAyMUMxNCAyMSAxNS45MiAyMC4zNCAxNy41IDE5LjE0TDE2LjA2IDE3LjdDMTQuODcgMTguNTQgMTMuNDUgMTkgMTIgMTlDOC4xMyAxOSA1IDE1Ljg3IDUgMTJTOC4xMyA1IDEyIDUgMTkgOC4xMyAxOSAxMkgxNkwyMCAxNkwyNCAxMkgyMUMyMSA3LjAzIDE2Ljk3IDMgMTIgMycvPjwvc3ZnPlwiXG4gICAgPlxuICA8L3BkZi1zaHktYnV0dG9uPlxufVxuIl19