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.
60 lines • 11.9 kB
JavaScript
import { Component, Input, effect } from '@angular/core';
import { getVersionSuffix, pdfDefaultOptions } from '../../options/pdf-default-options';
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 PdfStampEditorComponent {
notificationService;
cdr;
show = true;
isSelected = false;
PDFViewerApplication;
get pdfJsVersion() {
return getVersionSuffix(pdfDefaultOptions.assetsFolder);
}
constructor(notificationService, cdr) {
this.notificationService = notificationService;
this.cdr = cdr;
effect(() => {
this.PDFViewerApplication = notificationService.onPDFJSInitSignal();
if (this.PDFViewerApplication) {
this.onPdfJsInit();
}
});
}
onPdfJsInit() {
this.PDFViewerApplication?.eventBus.on('annotationeditormodechanged', ({ mode }) => {
setTimeout(() => {
this.isSelected = mode === 13;
this.cdr.detectChanges();
});
});
}
onClick(event) {
let button = event.target;
while (button && button instanceof Element && !(button instanceof HTMLButtonElement)) {
button = button.parentElement;
}
if (button instanceof HTMLButtonElement) {
// #2817 this is a workaround for when the button is initially hidden.
// In that case, the dummy component gets the click listener.
// As a quick work around, let's simply call the click listener of the dummy component.
if (button.id === 'primaryEditorStamp' && document.getElementById('primaryEditorStamp') !== button) {
document.getElementById('primaryEditorStamp')?.click();
}
if (button.id !== 'primaryEditorStamp') {
document.getElementById('primaryEditorStamp')?.click();
}
}
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfStampEditorComponent, deps: [{ token: i1.PDFNotificationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PdfStampEditorComponent, selector: "pdf-stamp-editor", inputs: { show: "show" }, ngImport: i0, template: "<pdf-shy-button title=\"Text\" primaryToolbarId=\"primaryEditorStamp\"\n [cssClass]=\"show | responsiveCSSClass : 'hiddenTinyView'\" l10nId=\"pdfjs-editor-stamp-button\"\n l10nLabel=\"pdfjs-editor-stamp-button-label\" [order]=\"4200\" [action]=\"onClick\" [toggled]=\"isSelected\"\n [closeOnClick]=\"true\"\n image=\"<svg aria-hidden='true' focusable='false' width='20px' height='20px' viewBox='0 0 24 24'> <path fill='currentColor' d='M13 19C13 19.7 13.13 20.37 13.35 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H19C20.11 3 21 3.9 21 5V13.35C20.37 13.13 19.7 13 19 13V5H5V19H13M13.96 12.29L11.21 15.83L9.25 13.47L6.5 17H13.35C13.75 15.88 14.47 14.91 15.4 14.21L13.96 12.29M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z' /> </svg>\">\n</pdf-shy-button>", styles: ["button{padding:0;height:25px;background-color:transparent;width:100%}button:focus{outline:none;border:none}.align-image-to-text{top:3px;position:relative;padding-right:4px}\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" }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfStampEditorComponent, decorators: [{
type: Component,
args: [{ selector: 'pdf-stamp-editor', template: "<pdf-shy-button title=\"Text\" primaryToolbarId=\"primaryEditorStamp\"\n [cssClass]=\"show | responsiveCSSClass : 'hiddenTinyView'\" l10nId=\"pdfjs-editor-stamp-button\"\n l10nLabel=\"pdfjs-editor-stamp-button-label\" [order]=\"4200\" [action]=\"onClick\" [toggled]=\"isSelected\"\n [closeOnClick]=\"true\"\n image=\"<svg aria-hidden='true' focusable='false' width='20px' height='20px' viewBox='0 0 24 24'> <path fill='currentColor' d='M13 19C13 19.7 13.13 20.37 13.35 21H5C3.9 21 3 20.11 3 19V5C3 3.9 3.9 3 5 3H19C20.11 3 21 3.9 21 5V13.35C20.37 13.13 19.7 13 19 13V5H5V19H13M13.96 12.29L11.21 15.83L9.25 13.47L6.5 17H13.35C13.75 15.88 14.47 14.91 15.4 14.21L13.96 12.29M20 18V15H18V18H15V20H18V23H20V20H23V18H20Z' /> </svg>\">\n</pdf-shy-button>", styles: ["button{padding:0;height:25px;background-color:transparent;width:100%}button:focus{outline:none;border:none}.align-image-to-text{top:3px;position:relative;padding-right:4px}\n"] }]
}], ctorParameters: () => [{ type: i1.PDFNotificationService }, { type: i0.ChangeDetectorRef }], propDecorators: { show: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXN0YW1wLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci9zcmMvbGliL3Rvb2xiYXIvcGRmLXN0YW1wLWVkaXRvci9wZGYtc3RhbXAtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdG9vbGJhci9wZGYtc3RhbXAtZWRpdG9yL3BkZi1zdGFtcC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7QUFVeEYsTUFBTSxPQUFPLHVCQUF1QjtJQWF4QjtJQUNBO0lBWkgsSUFBSSxHQUF5QixJQUFJLENBQUM7SUFFbEMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVsQixvQkFBb0IsQ0FBb0M7SUFFaEUsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFlBQ1UsbUJBQTJDLEVBQzNDLEdBQXNCO1FBRHRCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0MsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFFOUIsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM3QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLDZCQUE2QixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQTBDLEVBQUUsRUFBRTtZQUN6SCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFtQjtRQUNoQyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzFCLE9BQU8sTUFBTSxJQUFJLE1BQU0sWUFBWSxPQUFPLElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBWSxpQkFBaUIsQ0FBQyxFQUFFO1lBQ3BGLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxNQUFNLFlBQVksaUJBQWlCLEVBQUU7WUFDdkMsc0VBQXNFO1lBQ3RFLDZEQUE2RDtZQUM3RCx1RkFBdUY7WUFDdkYsSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLG9CQUFvQixJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsS0FBSyxNQUFNLEVBQUU7Z0JBQ2xHLFFBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQzthQUN4RDtZQUNELElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxvQkFBb0IsRUFBRTtnQkFDdEMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ3hEO1NBQ0Y7SUFDSCxDQUFDO3dHQWpEVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixrRkNacEMsaXZCQUtpQjs7NEZET0osdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQjsySEFNckIsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbkVkaXRvckVkaXRvck1vZGVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi8uLi9ldmVudHMvYW5ub3RhdGlvbi1lZGl0b3ItbW9kZS1jaGFuZ2VkLWV2ZW50JztcbmltcG9ydCB7IGdldFZlcnNpb25TdWZmaXgsIHBkZkRlZmF1bHRPcHRpb25zIH0gZnJvbSAnLi4vLi4vb3B0aW9ucy9wZGYtZGVmYXVsdC1vcHRpb25zJztcbmltcG9ydCB7IElQREZWaWV3ZXJBcHBsaWNhdGlvbiB9IGZyb20gJy4uLy4uL29wdGlvbnMvcGRmLXZpZXdlci1hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBQREZOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGRmLW5vdGlmaWNhdGlvbi1zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNpdmVWaXNpYmlsaXR5IH0gZnJvbSAnLi4vLi4vcmVzcG9uc2l2ZS12aXNpYmlsaXR5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRmLXN0YW1wLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wZGYtc3RhbXAtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGRmLXN0YW1wLWVkaXRvci5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBkZlN0YW1wRWRpdG9yQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNob3c6IFJlc3BvbnNpdmVWaXNpYmlsaXR5ID0gdHJ1ZTtcblxuICBwdWJsaWMgaXNTZWxlY3RlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgUERGVmlld2VyQXBwbGljYXRpb246IElQREZWaWV3ZXJBcHBsaWNhdGlvbiB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgZ2V0IHBkZkpzVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRWZXJzaW9uU3VmZml4KHBkZkRlZmF1bHRPcHRpb25zLmFzc2V0c0ZvbGRlcik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IFBERk5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbiA9IG5vdGlmaWNhdGlvblNlcnZpY2Uub25QREZKU0luaXRTaWduYWwoKTtcbiAgICAgIGlmICh0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uKSB7XG4gICAgICAgIHRoaXMub25QZGZKc0luaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25QZGZKc0luaXQoKSB7XG4gICAgdGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbj8uZXZlbnRCdXMub24oJ2Fubm90YXRpb25lZGl0b3Jtb2RlY2hhbmdlZCcsICh7IG1vZGUgfTogQW5ub3RhdGlvbkVkaXRvckVkaXRvck1vZGVDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWQgPSBtb2RlID09PSAxMztcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25DbGljayhldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgbGV0IGJ1dHRvbiA9IGV2ZW50LnRhcmdldDtcbiAgICB3aGlsZSAoYnV0dG9uICYmIGJ1dHRvbiBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgIShidXR0b24gaW5zdGFuY2VvZiBIVE1MQnV0dG9uRWxlbWVudCkpIHtcbiAgICAgIGJ1dHRvbiA9IGJ1dHRvbi5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgICBpZiAoYnV0dG9uIGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQpIHtcbiAgICAgIC8vICMyODE3IHRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB3aGVuIHRoZSBidXR0b24gaXMgaW5pdGlhbGx5IGhpZGRlbi5cbiAgICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlIGR1bW15IGNvbXBvbmVudCBnZXRzIHRoZSBjbGljayBsaXN0ZW5lci5cbiAgICAgIC8vIEFzIGEgcXVpY2sgd29yayBhcm91bmQsIGxldCdzIHNpbXBseSBjYWxsIHRoZSBjbGljayBsaXN0ZW5lciBvZiB0aGUgZHVtbXkgY29tcG9uZW50LlxuICAgICAgaWYgKGJ1dHRvbi5pZCA9PT0gJ3ByaW1hcnlFZGl0b3JTdGFtcCcgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaW1hcnlFZGl0b3JTdGFtcCcpICE9PSBidXR0b24pIHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaW1hcnlFZGl0b3JTdGFtcCcpPy5jbGljaygpO1xuICAgICAgfVxuICAgICAgaWYgKGJ1dHRvbi5pZCAhPT0gJ3ByaW1hcnlFZGl0b3JTdGFtcCcpIHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByaW1hcnlFZGl0b3JTdGFtcCcpPy5jbGljaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPHBkZi1zaHktYnV0dG9uIHRpdGxlPVwiVGV4dFwiIHByaW1hcnlUb29sYmFySWQ9XCJwcmltYXJ5RWRpdG9yU3RhbXBcIlxuICBbY3NzQ2xhc3NdPVwic2hvdyB8IHJlc3BvbnNpdmVDU1NDbGFzcyA6ICdoaWRkZW5UaW55VmlldydcIiBsMTBuSWQ9XCJwZGZqcy1lZGl0b3Itc3RhbXAtYnV0dG9uXCJcbiAgbDEwbkxhYmVsPVwicGRmanMtZWRpdG9yLXN0YW1wLWJ1dHRvbi1sYWJlbFwiIFtvcmRlcl09XCI0MjAwXCIgW2FjdGlvbl09XCJvbkNsaWNrXCIgW3RvZ2dsZWRdPVwiaXNTZWxlY3RlZFwiXG4gIFtjbG9zZU9uQ2xpY2tdPVwidHJ1ZVwiXG4gIGltYWdlPVwiPHN2ZyBhcmlhLWhpZGRlbj0ndHJ1ZScgZm9jdXNhYmxlPSdmYWxzZScgd2lkdGg9JzIwcHgnIGhlaWdodD0nMjBweCcgdmlld0JveD0nMCAwIDI0IDI0Jz4gPHBhdGggZmlsbD0nY3VycmVudENvbG9yJyBkPSdNMTMgMTlDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNVYxMy4zNUMyMC4zNyAxMy4xMyAxOS43IDEzIDE5IDEzVjVINVYxOUgxM00xMy45NiAxMi4yOUwxMS4yMSAxNS44M0w5LjI1IDEzLjQ3TDYuNSAxN0gxMy4zNUMxMy43NSAxNS44OCAxNC40NyAxNC45MSAxNS40IDE0LjIxTDEzLjk2IDEyLjI5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWicgLz4gPC9zdmc+XCI+XG48L3BkZi1zaHktYnV0dG9uPiJdfQ==