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.
58 lines • 12.9 kB
JavaScript
import { Component, Input, ViewChild } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "./../../pdf-notification-service";
import * as i2 from "@angular/common";
import * as i3 from "../../responsive-visibility";
export class PdfRotatePageComponent {
constructor(notificationService) {
this.notificationService = notificationService;
this.showRotateButton = true;
this.disableRotate = true;
this.clockwise = true;
this.counterClockwise = true;
const subscription = this.notificationService.onPDFJSInit.subscribe(() => {
this.onPdfJsInit();
subscription.unsubscribe();
});
}
rotateCW() {
const PDFViewerApplication = window.PDFViewerApplication;
PDFViewerApplication.eventBus.dispatch('rotatecw');
}
rotateCCW() {
const PDFViewerApplication = window.PDFViewerApplication;
PDFViewerApplication.eventBus.dispatch('rotateccw');
}
onPdfJsInit() {
const PDFViewerApplication = window.PDFViewerApplication;
PDFViewerApplication.eventBus.on('updateuistate', (event) => this.updateUIState(event));
}
updateUIState(event) {
this.disableRotate = event.pagesCount === 0;
if (this.button1) {
this.button1.nativeElement.disabled = this.disableRotate;
}
if (this.button2) {
this.button2.nativeElement.disabled = this.disableRotate;
}
}
}
PdfRotatePageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PdfRotatePageComponent, deps: [{ token: i1.PDFNotificationService }], target: i0.ɵɵFactoryTarget.Component });
PdfRotatePageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PdfRotatePageComponent, selector: "pdf-rotate-page", inputs: { showRotateButton: "showRotateButton", clockwise: "clockwise", counterClockwise: "counterClockwise" }, viewQueries: [{ propertyName: "button1", first: true, predicate: ["button1"], descendants: true }, { propertyName: "button2", first: true, predicate: ["button2"], descendants: true }], ngImport: i0, template: "<button\n *ngIf=\"clockwise\"\n (click)=\"rotateCW()\"\n type=\"button\"\n id=\"primaryPageRotateCw\"\n class=\"toolbarButton rotateCw\"\n [class]=\"showRotateButton | responsiveCSSClass : 'hiddenXLView'\"\n title=\"Rotate Clockwise\"\n data-l10n-id=\"page_rotate_cw\"\n [disabled]=\"disableRotate\"\n #button1\n>\n <svg style=\"width: 23px; height: 23px\" viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n 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\"\n />\n </svg>\n</button>\n<button\n *ngIf=\"counterClockwise\"\n (click)=\"rotateCCW()\"\n type=\"button\"\n id=\"primaryPageRotateCcw\"\n class=\"toolbarButton rotateCcw\"\n [class]=\"showRotateButton | responsiveCSSClass : 'hiddenXLView'\"\n title=\"Rotate Counterclockwise\"\n data-l10n-id=\"page_rotate_ccw\"\n [disabled]=\"disableRotate\"\n #button2\n>\n <svg style=\"width: 23px; height: 23px\" viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M12 3C7.03 3 3 7.03 3 12H0L4 16L8 12H5C5 8.13 8.13 5 12 5S19 8.13 19 12 15.87 19 12 19C10.55 19 9.13 18.54 7.94 17.7L6.5 19.14C8.08 20.34 10 21 12 21C16.97 21 21 16.97 21 12S16.97 3 12 3\"\n />\n </svg>\n</button>\n", styles: [":host:focus{outline:none}button:focus{outline:none}svg:focus{outline:none}button{padding:0;margin-top:0;margin-bottom:0}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "responsiveCSSClass": i3.ResponsiveCSSClassPipe } });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PdfRotatePageComponent, decorators: [{
type: Component,
args: [{ selector: 'pdf-rotate-page', template: "<button\n *ngIf=\"clockwise\"\n (click)=\"rotateCW()\"\n type=\"button\"\n id=\"primaryPageRotateCw\"\n class=\"toolbarButton rotateCw\"\n [class]=\"showRotateButton | responsiveCSSClass : 'hiddenXLView'\"\n title=\"Rotate Clockwise\"\n data-l10n-id=\"page_rotate_cw\"\n [disabled]=\"disableRotate\"\n #button1\n>\n <svg style=\"width: 23px; height: 23px\" viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n 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\"\n />\n </svg>\n</button>\n<button\n *ngIf=\"counterClockwise\"\n (click)=\"rotateCCW()\"\n type=\"button\"\n id=\"primaryPageRotateCcw\"\n class=\"toolbarButton rotateCcw\"\n [class]=\"showRotateButton | responsiveCSSClass : 'hiddenXLView'\"\n title=\"Rotate Counterclockwise\"\n data-l10n-id=\"page_rotate_ccw\"\n [disabled]=\"disableRotate\"\n #button2\n>\n <svg style=\"width: 23px; height: 23px\" viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M12 3C7.03 3 3 7.03 3 12H0L4 16L8 12H5C5 8.13 8.13 5 12 5S19 8.13 19 12 15.87 19 12 19C10.55 19 9.13 18.54 7.94 17.7L6.5 19.14C8.08 20.34 10 21 12 21C16.97 21 21 16.97 21 12S16.97 3 12 3\"\n />\n </svg>\n</button>\n", styles: [":host:focus{outline:none}button:focus{outline:none}svg:focus{outline:none}button{padding:0;margin-top:0;margin-bottom:0}\n"] }]
}], ctorParameters: function () { return [{ type: i1.PDFNotificationService }]; }, propDecorators: { showRotateButton: [{
type: Input
}], clockwise: [{
type: Input
}], counterClockwise: [{
type: Input
}], button1: [{
type: ViewChild,
args: ['button1']
}], button2: [{
type: ViewChild,
args: ['button2']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXJvdGF0ZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdG9vbGJhci9wZGYtcm90YXRlLXBhZ2UvcGRmLXJvdGF0ZS1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdG9vbGJhci9wZGYtcm90YXRlLXBhZ2UvcGRmLXJvdGF0ZS1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFXeEUsTUFBTSxPQUFPLHNCQUFzQjtJQWtCakMsWUFBb0IsbUJBQTJDO1FBQTNDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFoQnhELHFCQUFnQixHQUF5QixJQUFJLENBQUM7UUFFOUMsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFHckIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUdqQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFTN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNiLE1BQU0sb0JBQW9CLEdBQTJCLE1BQWMsQ0FBQyxvQkFBb0IsQ0FBQztRQUN6RixvQkFBb0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTSxTQUFTO1FBQ2QsTUFBTSxvQkFBb0IsR0FBMkIsTUFBYyxDQUFDLG9CQUFvQixDQUFDO1FBQ3pGLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVNLFdBQVc7UUFDaEIsTUFBTSxvQkFBb0IsR0FBMkIsTUFBYyxDQUFDLG9CQUFvQixDQUFDO1FBQ3pGLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUF5QjtRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUMxRDtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUMxRDtJQUNILENBQUM7O29IQWhEVSxzQkFBc0I7d0dBQXRCLHNCQUFzQixnV0NYbkMsbTBDQXNDQTs0RkQzQmEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGlCQUFpQjs2R0FNcEIsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQU1DLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUUsT0FBTztzQkFEZCxTQUFTO3VCQUFDLFNBQVM7Z0JBSVosT0FBTztzQkFEZCxTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVwZGF0ZVVJU3RhdGVFdmVudCB9IGZyb20gJy4uLy4uL2V2ZW50cy91cGRhdGUtdWktc3RhdGUtZXZlbnQnO1xuaW1wb3J0IHsgSVBERlZpZXdlckFwcGxpY2F0aW9uIH0gZnJvbSAnLi4vLi4vb3B0aW9ucy9wZGYtdmlld2VyLWFwcGxpY2F0aW9uJztcbmltcG9ydCB7IFJlc3BvbnNpdmVWaXNpYmlsaXR5IH0gZnJvbSAnLi4vLi4vcmVzcG9uc2l2ZS12aXNpYmlsaXR5JztcbmltcG9ydCB7IFBERk5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3BkZi1ub3RpZmljYXRpb24tc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkZi1yb3RhdGUtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wZGYtcm90YXRlLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wZGYtcm90YXRlLXBhZ2UuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZGZSb3RhdGVQYWdlQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3dSb3RhdGVCdXR0b246IFJlc3BvbnNpdmVWaXNpYmlsaXR5ID0gdHJ1ZTtcblxuICBwdWJsaWMgZGlzYWJsZVJvdGF0ZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNsb2Nrd2lzZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvdW50ZXJDbG9ja3dpc2UgPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbjEnKVxuICBwcml2YXRlIGJ1dHRvbjE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ2J1dHRvbjInKVxuICBwcml2YXRlIGJ1dHRvbjI6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogUERGTm90aWZpY2F0aW9uU2VydmljZSkge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5vblBERkpTSW5pdC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vblBkZkpzSW5pdCgpO1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcm90YXRlQ1coKTogdm9pZCB7XG4gICAgY29uc3QgUERGVmlld2VyQXBwbGljYXRpb246IElQREZWaWV3ZXJBcHBsaWNhdGlvbiA9ICh3aW5kb3cgYXMgYW55KS5QREZWaWV3ZXJBcHBsaWNhdGlvbjtcbiAgICBQREZWaWV3ZXJBcHBsaWNhdGlvbi5ldmVudEJ1cy5kaXNwYXRjaCgncm90YXRlY3cnKTtcbiAgfVxuXG4gIHB1YmxpYyByb3RhdGVDQ1coKTogdm9pZCB7XG4gICAgY29uc3QgUERGVmlld2VyQXBwbGljYXRpb246IElQREZWaWV3ZXJBcHBsaWNhdGlvbiA9ICh3aW5kb3cgYXMgYW55KS5QREZWaWV3ZXJBcHBsaWNhdGlvbjtcbiAgICBQREZWaWV3ZXJBcHBsaWNhdGlvbi5ldmVudEJ1cy5kaXNwYXRjaCgncm90YXRlY2N3Jyk7XG4gIH1cblxuICBwdWJsaWMgb25QZGZKc0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgUERGVmlld2VyQXBwbGljYXRpb246IElQREZWaWV3ZXJBcHBsaWNhdGlvbiA9ICh3aW5kb3cgYXMgYW55KS5QREZWaWV3ZXJBcHBsaWNhdGlvbjtcbiAgICBQREZWaWV3ZXJBcHBsaWNhdGlvbi5ldmVudEJ1cy5vbigndXBkYXRldWlzdGF0ZScsIChldmVudCkgPT4gdGhpcy51cGRhdGVVSVN0YXRlKGV2ZW50KSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVUlTdGF0ZShldmVudDogVXBkYXRlVUlTdGF0ZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlUm90YXRlID0gZXZlbnQucGFnZXNDb3VudCA9PT0gMDtcbiAgICBpZiAodGhpcy5idXR0b24xKSB7XG4gICAgICB0aGlzLmJ1dHRvbjEubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZVJvdGF0ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuYnV0dG9uMikge1xuICAgICAgdGhpcy5idXR0b24yLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVSb3RhdGU7XG4gICAgfVxuICB9XG59XG4iLCI8YnV0dG9uXG4gICpuZ0lmPVwiY2xvY2t3aXNlXCJcbiAgKGNsaWNrKT1cInJvdGF0ZUNXKClcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgaWQ9XCJwcmltYXJ5UGFnZVJvdGF0ZUN3XCJcbiAgY2xhc3M9XCJ0b29sYmFyQnV0dG9uIHJvdGF0ZUN3XCJcbiAgW2NsYXNzXT1cInNob3dSb3RhdGVCdXR0b24gfCByZXNwb25zaXZlQ1NTQ2xhc3MgOiAnaGlkZGVuWExWaWV3J1wiXG4gIHRpdGxlPVwiUm90YXRlIENsb2Nrd2lzZVwiXG4gIGRhdGEtbDEwbi1pZD1cInBhZ2Vfcm90YXRlX2N3XCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVSb3RhdGVcIlxuICAjYnV0dG9uMVxuPlxuICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIzcHg7IGhlaWdodDogMjNweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICA8cGF0aFxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICBkPVwiTTEyIDNDNy4wMyAzIDMgNy4wMyAzIDEyUzcuMDMgMjEgMTIgMjFDMTQgMjEgMTUuOTIgMjAuMzQgMTcuNSAxOS4xNEwxNi4wNiAxNy43QzE0Ljg3IDE4LjU0IDEzLjQ1IDE5IDEyIDE5QzguMTMgMTkgNSAxNS44NyA1IDEyUzguMTMgNSAxMiA1IDE5IDguMTMgMTkgMTJIMTZMMjAgMTZMMjQgMTJIMjFDMjEgNy4wMyAxNi45NyAzIDEyIDNcIlxuICAgIC8+XG4gIDwvc3ZnPlxuPC9idXR0b24+XG48YnV0dG9uXG4gICpuZ0lmPVwiY291bnRlckNsb2Nrd2lzZVwiXG4gIChjbGljayk9XCJyb3RhdGVDQ1coKVwiXG4gIHR5cGU9XCJidXR0b25cIlxuICBpZD1cInByaW1hcnlQYWdlUm90YXRlQ2N3XCJcbiAgY2xhc3M9XCJ0b29sYmFyQnV0dG9uIHJvdGF0ZUNjd1wiXG4gIFtjbGFzc109XCJzaG93Um90YXRlQnV0dG9uIHwgcmVzcG9uc2l2ZUNTU0NsYXNzIDogJ2hpZGRlblhMVmlldydcIlxuICB0aXRsZT1cIlJvdGF0ZSBDb3VudGVyY2xvY2t3aXNlXCJcbiAgZGF0YS1sMTBuLWlkPVwicGFnZV9yb3RhdGVfY2N3XCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVSb3RhdGVcIlxuICAjYnV0dG9uMlxuPlxuICA8c3ZnIHN0eWxlPVwid2lkdGg6IDIzcHg7IGhlaWdodDogMjNweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICA8cGF0aFxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICBkPVwiTTEyIDNDNy4wMyAzIDMgNy4wMyAzIDEySDBMNCAxNkw4IDEySDVDNSA4LjEzIDguMTMgNSAxMiA1UzE5IDguMTMgMTkgMTIgMTUuODcgMTkgMTIgMTlDMTAuNTUgMTkgOS4xMyAxOC41NCA3Ljk0IDE3LjdMNi41IDE5LjE0QzguMDggMjAuMzQgMTAgMjEgMTIgMjFDMTYuOTcgMjEgMjEgMTYuOTcgMjEgMTJTMTYuOTcgMyAxMiAzXCJcbiAgICAvPlxuICA8L3N2Zz5cbjwvYnV0dG9uPlxuIl19