UNPKG

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.

57 lines 11.7 kB
import { Component, Input, effect } from '@angular/core'; import { PositioningService } from '../../dynamic-css/positioning.service'; 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 PdfTextEditorComponent { cdr; show = true; isSelected = false; PDFViewerApplication; constructor(notificationService, cdr) { this.cdr = cdr; effect(() => { this.PDFViewerApplication = notificationService.onPDFJSInitSignal(); if (this.PDFViewerApplication) { this.onPdfJsInit(); } }); } onPdfJsInit() { this.PDFViewerApplication?.eventBus.on('annotationeditormodechanged', ({ mode }) => { setTimeout(() => { this.isSelected = mode === 3; 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 === 'primaryEditorFreeText' && document.getElementById('primaryEditorFreeText') !== button) { document.getElementById('primaryEditorFreeText')?.click(); } if (button.id !== 'primaryEditorFreeText') { document.getElementById('primaryEditorFreeText')?.click(); } const positioningService = new PositioningService(); positioningService.positionPopupBelowItsButton('primaryEditorFreeText', 'editorFreeTextParamsToolbar'); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfTextEditorComponent, deps: [{ token: i1.PDFNotificationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PdfTextEditorComponent, selector: "pdf-text-editor", inputs: { show: "show" }, ngImport: i0, template: "<pdf-shy-button\n title=\"Draw\"\n primaryToolbarId=\"primaryEditorFreeText\"\n [cssClass]=\"show | responsiveCSSClass : 'hiddenTinyView'\"\n l10nId=\"pdfjs-editor-free-text-button\"\n l10nLabel=\"pdfjs-editor-free-text-button-label\"\n [order]=\"4100\"\n [action]=\"onClick\"\n [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='M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z' /> </svg>\"\n>\n</pdf-shy-button>\n", styles: ["button{padding:0}\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: PdfTextEditorComponent, decorators: [{ type: Component, args: [{ selector: 'pdf-text-editor', template: "<pdf-shy-button\n title=\"Draw\"\n primaryToolbarId=\"primaryEditorFreeText\"\n [cssClass]=\"show | responsiveCSSClass : 'hiddenTinyView'\"\n l10nId=\"pdfjs-editor-free-text-button\"\n l10nLabel=\"pdfjs-editor-free-text-button-label\"\n [order]=\"4100\"\n [action]=\"onClick\"\n [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='M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z' /> </svg>\"\n>\n</pdf-shy-button>\n", styles: ["button{padding:0}\n"] }] }], ctorParameters: () => [{ type: i1.PDFNotificationService }, { type: i0.ChangeDetectorRef }], propDecorators: { show: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXRleHQtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdG9vbGJhci9wZGYtdGV4dC1lZGl0b3IvcGRmLXRleHQtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1leHRlbmRlZC1wZGYtdmlld2VyL3NyYy9saWIvdG9vbGJhci9wZGYtdGV4dC1lZGl0b3IvcGRmLXRleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7O0FBVzNFLE1BQU0sT0FBTyxzQkFBc0I7SUFTdkI7SUFQSCxJQUFJLEdBQXlCLElBQUksQ0FBQztJQUVsQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLG9CQUFvQixDQUFvQztJQUVoRSxZQUNFLG1CQUEyQyxFQUNuQyxHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUU5QixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDcEUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBMEMsRUFBRSxFQUFFO1lBQ3pILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQW1CO1FBQ2hDLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDMUIsT0FBTyxNQUFNLElBQUksTUFBTSxZQUFZLE9BQU8sSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFZLGlCQUFpQixDQUFDLEVBQUU7WUFDcEYsTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7U0FDL0I7UUFDRCxJQUFJLE1BQU0sWUFBWSxpQkFBaUIsRUFBRTtZQUN2QyxzRUFBc0U7WUFDdEUsNkRBQTZEO1lBQzdELHVGQUF1RjtZQUN2RixJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssdUJBQXVCLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLE1BQU0sRUFBRTtnQkFDeEcsUUFBUSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQzNEO1lBQ0QsSUFBSSxNQUFNLENBQUMsRUFBRSxLQUFLLHVCQUF1QixFQUFFO2dCQUN6QyxRQUFRLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDM0Q7WUFDRCxNQUFNLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUNwRCxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyx1QkFBdUIsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1NBQ3hHO0lBQ0gsQ0FBQzt3R0E5Q1Usc0JBQXNCOzRGQUF0QixzQkFBc0IsaUZDWm5DLHN4QkFhQTs7NEZERGEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLGlCQUFpQjsySEFNcEIsSUFBSTtzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb25pbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZHluYW1pYy1jc3MvcG9zaXRpb25pbmcuc2VydmljZSc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uRWRpdG9yRWRpdG9yTW9kZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uLy4uL2V2ZW50cy9hbm5vdGF0aW9uLWVkaXRvci1tb2RlLWNoYW5nZWQtZXZlbnQnO1xuaW1wb3J0IHsgSVBERlZpZXdlckFwcGxpY2F0aW9uIH0gZnJvbSAnLi4vLi4vb3B0aW9ucy9wZGYtdmlld2VyLWFwcGxpY2F0aW9uJztcbmltcG9ydCB7IFBERk5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9wZGYtbm90aWZpY2F0aW9uLXNlcnZpY2UnO1xuaW1wb3J0IHsgUmVzcG9uc2l2ZVZpc2liaWxpdHkgfSBmcm9tICcuLi8uLi9yZXNwb25zaXZlLXZpc2liaWxpdHknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZGYtdGV4dC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vcGRmLXRleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGRmLXRleHQtZWRpdG9yLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGRmVGV4dEVkaXRvckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93OiBSZXNwb25zaXZlVmlzaWJpbGl0eSA9IHRydWU7XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBQREZWaWV3ZXJBcHBsaWNhdGlvbjogSVBERlZpZXdlckFwcGxpY2F0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG5vdGlmaWNhdGlvblNlcnZpY2U6IFBERk5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbiA9IG5vdGlmaWNhdGlvblNlcnZpY2Uub25QREZKU0luaXRTaWduYWwoKTtcbiAgICAgIGlmICh0aGlzLlBERlZpZXdlckFwcGxpY2F0aW9uKSB7XG4gICAgICAgIHRoaXMub25QZGZKc0luaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25QZGZKc0luaXQoKSB7XG4gICAgdGhpcy5QREZWaWV3ZXJBcHBsaWNhdGlvbj8uZXZlbnRCdXMub24oJ2Fubm90YXRpb25lZGl0b3Jtb2RlY2hhbmdlZCcsICh7IG1vZGUgfTogQW5ub3RhdGlvbkVkaXRvckVkaXRvck1vZGVDaGFuZ2VkRXZlbnQpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzU2VsZWN0ZWQgPSBtb2RlID09PSAzO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgYnV0dG9uID0gZXZlbnQudGFyZ2V0O1xuICAgIHdoaWxlIChidXR0b24gJiYgYnV0dG9uIGluc3RhbmNlb2YgRWxlbWVudCAmJiAhKGJ1dHRvbiBpbnN0YW5jZW9mIEhUTUxCdXR0b25FbGVtZW50KSkge1xuICAgICAgYnV0dG9uID0gYnV0dG9uLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIGlmIChidXR0b24gaW5zdGFuY2VvZiBIVE1MQnV0dG9uRWxlbWVudCkge1xuICAgICAgLy8gIzI4MTcgdGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHdoZW4gdGhlIGJ1dHRvbiBpcyBpbml0aWFsbHkgaGlkZGVuLlxuICAgICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZHVtbXkgY29tcG9uZW50IGdldHMgdGhlIGNsaWNrIGxpc3RlbmVyLlxuICAgICAgLy8gQXMgYSBxdWljayB3b3JrIGFyb3VuZCwgbGV0J3Mgc2ltcGx5IGNhbGwgdGhlIGNsaWNrIGxpc3RlbmVyIG9mIHRoZSBkdW1teSBjb21wb25lbnQuXG4gICAgICBpZiAoYnV0dG9uLmlkID09PSAncHJpbWFyeUVkaXRvckZyZWVUZXh0JyAmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJpbWFyeUVkaXRvckZyZWVUZXh0JykgIT09IGJ1dHRvbikge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJpbWFyeUVkaXRvckZyZWVUZXh0Jyk/LmNsaWNrKCk7XG4gICAgICB9XG4gICAgICBpZiAoYnV0dG9uLmlkICE9PSAncHJpbWFyeUVkaXRvckZyZWVUZXh0Jykge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJpbWFyeUVkaXRvckZyZWVUZXh0Jyk/LmNsaWNrKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBwb3NpdGlvbmluZ1NlcnZpY2UgPSBuZXcgUG9zaXRpb25pbmdTZXJ2aWNlKCk7XG4gICAgICBwb3NpdGlvbmluZ1NlcnZpY2UucG9zaXRpb25Qb3B1cEJlbG93SXRzQnV0dG9uKCdwcmltYXJ5RWRpdG9yRnJlZVRleHQnLCAnZWRpdG9yRnJlZVRleHRQYXJhbXNUb29sYmFyJyk7XG4gICAgfVxuICB9XG59XG4iLCI8cGRmLXNoeS1idXR0b25cbiAgdGl0bGU9XCJEcmF3XCJcbiAgcHJpbWFyeVRvb2xiYXJJZD1cInByaW1hcnlFZGl0b3JGcmVlVGV4dFwiXG4gIFtjc3NDbGFzc109XCJzaG93IHwgcmVzcG9uc2l2ZUNTU0NsYXNzIDogJ2hpZGRlblRpbnlWaWV3J1wiXG4gIGwxMG5JZD1cInBkZmpzLWVkaXRvci1mcmVlLXRleHQtYnV0dG9uXCJcbiAgbDEwbkxhYmVsPVwicGRmanMtZWRpdG9yLWZyZWUtdGV4dC1idXR0b24tbGFiZWxcIlxuICBbb3JkZXJdPVwiNDEwMFwiXG4gIFthY3Rpb25dPVwib25DbGlja1wiXG4gIFt0b2dnbGVkXT1cImlzU2VsZWN0ZWRcIlxuICBbY2xvc2VPbkNsaWNrXT1cInRydWVcIlxuICBpbWFnZT1cIjxzdmcgYXJpYS1oaWRkZW49J3RydWUnIGZvY3VzYWJsZT0nZmFsc2UnIHdpZHRoPScyMHB4JyBoZWlnaHQ9JzIwcHgnIHZpZXdCb3g9JzAgMCAyNCAyNCc+IDxwYXRoIGZpbGw9J2N1cnJlbnRDb2xvcicgZD0nTTE4LjUsNEwxOS42Niw4LjM1TDE4LjcsOC42MUMxOC4yNSw3Ljc0IDE3Ljc5LDYuODcgMTcuMjYsNi40M0MxNi43Myw2IDE2LjExLDYgMTUuNSw2SDEzVjE2LjVDMTMsMTcgMTMsMTcuNSAxMy4zMywxNy43NUMxMy42NywxOCAxNC4zMywxOCAxNSwxOFYxOUg5VjE4QzkuNjcsMTggMTAuMzMsMTggMTAuNjcsMTcuNzVDMTEsMTcuNSAxMSwxNyAxMSwxNi41VjZIOC41QzcuODksNiA3LjI3LDYgNi43NCw2LjQzQzYuMjEsNi44NyA1Ljc1LDcuNzQgNS4zLDguNjFMNC4zNCw4LjM1TDUuNSw0SDE4LjVaJyAvPiA8L3N2Zz5cIlxuPlxuPC9wZGYtc2h5LWJ1dHRvbj5cbiJdfQ==