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.
56 lines • 11.8 kB
JavaScript
import { Component, Input, effect } from '@angular/core';
import { PositioningService } from '../../dynamic-css/positioning.service';
import { AnnotationEditorType } from '../../options/editor-annotations';
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 "../../dynamic-css/positioning.service";
import * as i3 from "../pdf-shy-button/pdf-shy-button.component";
import * as i4 from "../../responsive-visibility";
export class PdfStampEditorComponent {
cdr;
positioningService;
show = true;
isSelected = false;
PDFViewerApplication;
get pdfJsVersion() {
return getVersionSuffix(pdfDefaultOptions.assetsFolder);
}
constructor(notificationService, cdr, positioningService) {
this.cdr = cdr;
this.positioningService = positioningService;
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) {
const currentMode = this.PDFViewerApplication?.pdfViewer.annotationEditorMode;
this.PDFViewerApplication?.eventBus.dispatch('switchannotationeditormode', {
source: this,
mode: currentMode === AnnotationEditorType.STAMP ? AnnotationEditorType.NONE : AnnotationEditorType.STAMP,
isFromKeyboard: event.detail === 0,
});
const positioningService = new PositioningService();
positioningService.positionPopupBelowItsButton('primaryEditorStamp', 'editorStampParamsToolbar');
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfStampEditorComponent, deps: [{ token: i1.PDFNotificationService }, { token: i0.ChangeDetectorRef }, { token: i2.PositioningService }], 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: i3.PdfShyButtonComponent, selector: "pdf-shy-button", inputs: ["primaryToolbarId", "secondaryMenuId", "cssClass", "eventBusName", "l10nId", "l10nLabel", "title", "toggled", "disabled", "order", "action", "closeOnClick", "onlySecondaryMenu", "image"] }, { kind: "pipe", type: i4.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 }, { type: i2.PositioningService }], propDecorators: { show: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXN0YW1wLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlci9zcmMvbGliL3Rvb2xiYXIvcGRmLXN0YW1wLWVkaXRvci9wZGYtc3RhbXAtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdG9vbGJhci9wZGYtc3RhbXAtZWRpdG9yL3BkZi1zdGFtcC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBVXhGLE1BQU0sT0FBTyx1QkFBdUI7SUFjeEI7SUFDQTtJQWJILElBQUksR0FBeUIsSUFBSSxDQUFDO0lBRWxDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbEIsb0JBQW9CLENBQW9DO0lBRWhFLElBQVcsWUFBWTtRQUNyQixPQUFPLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxZQUNFLG1CQUEyQyxFQUNuQyxHQUFzQixFQUN0QixrQkFBc0M7UUFEdEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUU5QyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDcEUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBMEMsRUFBRSxFQUFFO1lBQ3pILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQW1CO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsb0JBQW9CLENBQUM7UUFDOUUsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLEVBQUU7WUFDekUsTUFBTSxFQUFFLElBQUk7WUFDWixJQUFJLEVBQUUsV0FBVyxLQUFLLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLO1lBQ3pHLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDcEQsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsb0JBQW9CLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztJQUNuRyxDQUFDO3dHQTNDVSx1QkFBdUI7NEZBQXZCLHVCQUF1QixrRkNkcEMsaXZCQUtpQjs7NEZEU0osdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQjs0SkFNckIsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb25pbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZHluYW1pYy1jc3MvcG9zaXRpb25pbmcuc2VydmljZSc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uRWRpdG9yRWRpdG9yTW9kZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uLy4uL2V2ZW50cy9hbm5vdGF0aW9uLWVkaXRvci1tb2RlLWNoYW5nZWQtZXZlbnQnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbkVkaXRvclR5cGUgfSBmcm9tICcuLi8uLi9vcHRpb25zL2VkaXRvci1hbm5vdGF0aW9ucyc7XG5pbXBvcnQgeyBnZXRWZXJzaW9uU3VmZml4LCBwZGZEZWZhdWx0T3B0aW9ucyB9IGZyb20gJy4uLy4uL29wdGlvbnMvcGRmLWRlZmF1bHQtb3B0aW9ucyc7XG5pbXBvcnQgeyBJUERGVmlld2VyQXBwbGljYXRpb24gfSBmcm9tICcuLi8uLi9vcHRpb25zL3BkZi12aWV3ZXItYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgUERGTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3BkZi1ub3RpZmljYXRpb24tc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zaXZlVmlzaWJpbGl0eSB9IGZyb20gJy4uLy4uL3Jlc3BvbnNpdmUtdmlzaWJpbGl0eSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BkZi1zdGFtcC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vcGRmLXN0YW1wLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BkZi1zdGFtcC1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQZGZTdGFtcEVkaXRvckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93OiBSZXNwb25zaXZlVmlzaWJpbGl0eSA9IHRydWU7XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIFBERlZpZXdlckFwcGxpY2F0aW9uOiBJUERGVmlld2VyQXBwbGljYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGdldCBwZGZKc1ZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0VmVyc2lvblN1ZmZpeChwZGZEZWZhdWx0T3B0aW9ucy5hc3NldHNGb2xkZXIpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbm90aWZpY2F0aW9uU2VydmljZTogUERGTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBwb3NpdGlvbmluZ1NlcnZpY2U6IFBvc2l0aW9uaW5nU2VydmljZSxcbiAgKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuUERGVmlld2VyQXBwbGljYXRpb24gPSBub3RpZmljYXRpb25TZXJ2aWNlLm9uUERGSlNJbml0U2lnbmFsKCk7XG4gICAgICBpZiAodGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbikge1xuICAgICAgICB0aGlzLm9uUGRmSnNJbml0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uUGRmSnNJbml0KCkge1xuICAgIHRoaXMuUERGVmlld2VyQXBwbGljYXRpb24/LmV2ZW50QnVzLm9uKCdhbm5vdGF0aW9uZWRpdG9ybW9kZWNoYW5nZWQnLCAoeyBtb2RlIH06IEFubm90YXRpb25FZGl0b3JFZGl0b3JNb2RlQ2hhbmdlZEV2ZW50KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkID0gbW9kZSA9PT0gMTM7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRNb2RlID0gdGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbj8ucGRmVmlld2VyLmFubm90YXRpb25FZGl0b3JNb2RlO1xuICAgIHRoaXMuUERGVmlld2VyQXBwbGljYXRpb24/LmV2ZW50QnVzLmRpc3BhdGNoKCdzd2l0Y2hhbm5vdGF0aW9uZWRpdG9ybW9kZScsIHtcbiAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgIG1vZGU6IGN1cnJlbnRNb2RlID09PSBBbm5vdGF0aW9uRWRpdG9yVHlwZS5TVEFNUCA/IEFubm90YXRpb25FZGl0b3JUeXBlLk5PTkUgOiBBbm5vdGF0aW9uRWRpdG9yVHlwZS5TVEFNUCxcbiAgICAgIGlzRnJvbUtleWJvYXJkOiBldmVudC5kZXRhaWwgPT09IDAsXG4gICAgfSk7XG4gICAgY29uc3QgcG9zaXRpb25pbmdTZXJ2aWNlID0gbmV3IFBvc2l0aW9uaW5nU2VydmljZSgpO1xuICAgIHBvc2l0aW9uaW5nU2VydmljZS5wb3NpdGlvblBvcHVwQmVsb3dJdHNCdXR0b24oJ3ByaW1hcnlFZGl0b3JTdGFtcCcsICdlZGl0b3JTdGFtcFBhcmFtc1Rvb2xiYXInKTtcbiAgfVxufVxuIiwiPHBkZi1zaHktYnV0dG9uIHRpdGxlPVwiVGV4dFwiIHByaW1hcnlUb29sYmFySWQ9XCJwcmltYXJ5RWRpdG9yU3RhbXBcIlxuICBbY3NzQ2xhc3NdPVwic2hvdyB8IHJlc3BvbnNpdmVDU1NDbGFzcyA6ICdoaWRkZW5UaW55VmlldydcIiBsMTBuSWQ9XCJwZGZqcy1lZGl0b3Itc3RhbXAtYnV0dG9uXCJcbiAgbDEwbkxhYmVsPVwicGRmanMtZWRpdG9yLXN0YW1wLWJ1dHRvbi1sYWJlbFwiIFtvcmRlcl09XCI0MjAwXCIgW2FjdGlvbl09XCJvbkNsaWNrXCIgW3RvZ2dsZWRdPVwiaXNTZWxlY3RlZFwiXG4gIFtjbG9zZU9uQ2xpY2tdPVwidHJ1ZVwiXG4gIGltYWdlPVwiPHN2ZyBhcmlhLWhpZGRlbj0ndHJ1ZScgZm9jdXNhYmxlPSdmYWxzZScgd2lkdGg9JzIwcHgnIGhlaWdodD0nMjBweCcgdmlld0JveD0nMCAwIDI0IDI0Jz4gPHBhdGggZmlsbD0nY3VycmVudENvbG9yJyBkPSdNMTMgMTlDMTMgMTkuNyAxMy4xMyAyMC4zNyAxMy4zNSAyMUg1QzMuOSAyMSAzIDIwLjExIDMgMTlWNUMzIDMuOSAzLjkgMyA1IDNIMTlDMjAuMTEgMyAyMSAzLjkgMjEgNVYxMy4zNUMyMC4zNyAxMy4xMyAxOS43IDEzIDE5IDEzVjVINVYxOUgxM00xMy45NiAxMi4yOUwxMS4yMSAxNS44M0w5LjI1IDEzLjQ3TDYuNSAxN0gxMy4zNUMxMy43NSAxNS44OCAxNC40NyAxNC45MSAxNS40IDE0LjIxTDEzLjk2IDEyLjI5TTIwIDE4VjE1SDE4VjE4SDE1VjIwSDE4VjIzSDIwVjIwSDIzVjE4SDIwWicgLz4gPC9zdmc+XCI+XG48L3BkZi1zaHktYnV0dG9uPiJdfQ==