lib-firas-digi 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2022/lib/lib-firas-digi.component.mjs +19 -0
- package/esm2022/lib/lib-firas-digi.service.mjs +14 -0
- package/esm2022/lib/pdf-explorer/pdf-explorer.component.mjs +39 -0
- package/esm2022/lib/pdf-info/pdf-info.component.mjs +237 -0
- package/esm2022/lib/pdf-signature/pdf-signature.component.mjs +114 -0
- package/esm2022/lib-firas-digi.mjs +5 -0
- package/esm2022/public-api.mjs +9 -0
- package/fesm2022/lib-firas-digi.mjs +420 -0
- package/fesm2022/lib-firas-digi.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/lib-firas-digi.component.d.ts +5 -0
- package/lib/lib-firas-digi.service.d.ts +6 -0
- package/lib/pdf-explorer/pdf-explorer.component.d.ts +17 -0
- package/lib/pdf-info/pdf-info.component.d.ts +42 -0
- package/lib/pdf-signature/pdf-signature.component.d.ts +31 -0
- package/package.json +25 -0
- package/public-api.d.ts +5 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# LibFirasDigi
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.1.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project lib-firas-digi` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project lib-firas-digi`.
|
|
8
|
+
> Note: Don't forget to add `--project lib-firas-digi` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build lib-firas-digi` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build lib-firas-digi`, go to the dist folder `cd dist/lib-firas-digi` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test lib-firas-digi` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class LibFirasDigiComponent {
|
|
4
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibFirasDigiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LibFirasDigiComponent, isStandalone: true, selector: "lib-lib-firas-digi", ngImport: i0, template: `
|
|
6
|
+
<p>
|
|
7
|
+
lib-firas-digi works!
|
|
8
|
+
</p>
|
|
9
|
+
`, isInline: true, styles: [""] });
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibFirasDigiComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'lib-lib-firas-digi', standalone: true, imports: [], template: `
|
|
14
|
+
<p>
|
|
15
|
+
lib-firas-digi works!
|
|
16
|
+
</p>
|
|
17
|
+
` }]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWZpcmFzLWRpZ2kuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliLWZpcmFzLWRpZ2kvc3JjL2xpYi9saWItZmlyYXMtZGlnaS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFhMUMsTUFBTSxPQUFPLHFCQUFxQjt3R0FBckIscUJBQXFCOzRGQUFyQixxQkFBcUIsOEVBUHRCOzs7O0dBSVQ7OzRGQUdVLHFCQUFxQjtrQkFYakMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLEVBQUUsWUFDRDs7OztHQUlUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1saWItZmlyYXMtZGlnaScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHA+XHJcbiAgICAgIGxpYi1maXJhcy1kaWdpIHdvcmtzIVxyXG4gICAgPC9wPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliRmlyYXNEaWdpQ29tcG9uZW50IHtcclxuXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class LibFirasDigiService {
|
|
4
|
+
constructor() { }
|
|
5
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibFirasDigiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibFirasDigiService, providedIn: 'root' });
|
|
7
|
+
}
|
|
8
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibFirasDigiService, decorators: [{
|
|
9
|
+
type: Injectable,
|
|
10
|
+
args: [{
|
|
11
|
+
providedIn: 'root'
|
|
12
|
+
}]
|
|
13
|
+
}], ctorParameters: () => [] });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWZpcmFzLWRpZ2kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1maXJhcy1kaWdpL3NyYy9saWIvbGliLWZpcmFzLWRpZ2kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLGdCQUFnQixDQUFDO3dHQUZOLG1CQUFtQjs0R0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaWJGaXJhc0RpZ2lTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { NgFor } from '@angular/common';
|
|
2
|
+
import { Component } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/router";
|
|
5
|
+
export class PdfExplorerComponent {
|
|
6
|
+
router;
|
|
7
|
+
pdfFiles = [
|
|
8
|
+
{ name: 'Sample PDF 1', src: 'assets/pdfs/sample1.pdf' },
|
|
9
|
+
{ name: 'User Guide', src: 'assets/pdfs/user-guide.pdf' },
|
|
10
|
+
{ name: 'Project Report', src: 'assets/pdfs/project-report.pdf' },
|
|
11
|
+
{ name: 'Project Report', src: 'assets/pdfs/project-report.pdf' },
|
|
12
|
+
{ name: 'Project Report', src: 'assets/pdfs/project-report.pdf' },
|
|
13
|
+
];
|
|
14
|
+
constructor(router) {
|
|
15
|
+
this.router = router;
|
|
16
|
+
}
|
|
17
|
+
openPdf(pdf) {
|
|
18
|
+
// Navigate to pdf-info page and pass file src
|
|
19
|
+
this.router.navigate(['/pdf-info'], { state: { pdfSrc: pdf.src } });
|
|
20
|
+
}
|
|
21
|
+
onFileUpload(event) {
|
|
22
|
+
const file = event.target.files[0];
|
|
23
|
+
console.log(file);
|
|
24
|
+
if (file && file.type === 'application/pdf') {
|
|
25
|
+
const fileURL = URL.createObjectURL(file);
|
|
26
|
+
this.router.navigate(['/pdf-info'], { state: { pdfSrc: fileURL } });
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
alert('Please upload a valid PDF file.');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfExplorerComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdfExplorerComponent, isStandalone: true, selector: "app-pdf-explorer", ngImport: i0, template: "<div style=\"display: flex;\r\nflex-direction: column; gap: 10px; align-items: start; margin-top: 20px;\">\r\n <div style=\"display: flex; flex-direction: row; align-items: baseline; gap: 15px; border: 1px solid #3e3e3e3e; min-width: 100%; padding-inline: 10px;\">\r\n <h1 class=\"text-2xl font-bold mb-4\">PDF Explorer</h1>\r\n <span class=\"mb-4\">(Click on a PDF file to view its details.)</span>\r\n </div>\r\n <div class=\"max-w-md mx-auto mt-8 p-4\">\r\n <h2 class=\"text-xl font-bold mb-4\">PDF Files</h2>\r\n <input type=\"file\" name=\"\" id=\"\" (change)=\"onFileUpload($event)\" />\r\n <ul class=\"border border-gray-200 rounded-lg divide-y divide-gray-200\">\r\n <li *ngFor=\"let pdf of pdfFiles\" class=\"px-4 py-3 hover:bg-gray-100 cursor-pointer\" style=\"cursor: pointer; padding-inline: 4px;\" (click)=\"openPdf(pdf)\">\r\n {{ pdf.name }}\r\n </li>\r\n </ul>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
34
|
+
}
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfExplorerComponent, decorators: [{
|
|
36
|
+
type: Component,
|
|
37
|
+
args: [{ selector: 'app-pdf-explorer', standalone: true, imports: [NgFor], template: "<div style=\"display: flex;\r\nflex-direction: column; gap: 10px; align-items: start; margin-top: 20px;\">\r\n <div style=\"display: flex; flex-direction: row; align-items: baseline; gap: 15px; border: 1px solid #3e3e3e3e; min-width: 100%; padding-inline: 10px;\">\r\n <h1 class=\"text-2xl font-bold mb-4\">PDF Explorer</h1>\r\n <span class=\"mb-4\">(Click on a PDF file to view its details.)</span>\r\n </div>\r\n <div class=\"max-w-md mx-auto mt-8 p-4\">\r\n <h2 class=\"text-xl font-bold mb-4\">PDF Files</h2>\r\n <input type=\"file\" name=\"\" id=\"\" (change)=\"onFileUpload($event)\" />\r\n <ul class=\"border border-gray-200 rounded-lg divide-y divide-gray-200\">\r\n <li *ngFor=\"let pdf of pdfFiles\" class=\"px-4 py-3 hover:bg-gray-100 cursor-pointer\" style=\"cursor: pointer; padding-inline: 4px;\" (click)=\"openPdf(pdf)\">\r\n {{ pdf.name }}\r\n </li>\r\n </ul>\r\n </div>\r\n</div>" }]
|
|
38
|
+
}], ctorParameters: () => [{ type: i1.Router }] });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWV4cGxvcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1maXJhcy1kaWdpL3NyYy9saWIvcGRmLWV4cGxvcmVyL3BkZi1leHBsb3Jlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItZmlyYXMtZGlnaS9zcmMvbGliL3BkZi1leHBsb3Jlci9wZGYtZXhwbG9yZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQVVsRCxNQUFNLE9BQU8sb0JBQW9CO0lBVVg7SUFUcEIsUUFBUSxHQUFHO1FBQ1QsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSx5QkFBeUIsRUFBRTtRQUN4RCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLDRCQUE0QixFQUFFO1FBQ3pELEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxnQ0FBZ0MsRUFBRTtRQUNqRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsZ0NBQWdDLEVBQUU7UUFDakUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLGdDQUFnQyxFQUFFO0tBRWxFLENBQUM7SUFFRixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFJLENBQUM7SUFFdkMsT0FBTyxDQUFDLEdBQWtDO1FBQ3hDLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1lBQzVDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEUsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBRUgsQ0FBQzt3R0E1QlUsb0JBQW9COzRGQUFwQixvQkFBb0IsNEVDWGpDLG04QkFlTSwwREROTSxLQUFLOzs0RkFFSixvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUCxDQUFDLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcGRmLWV4cGxvcmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BkZi1leHBsb3Jlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BkZi1leHBsb3Jlci5jb21wb25lbnQuY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0Zvcl1cbn0pXG5leHBvcnQgY2xhc3MgUGRmRXhwbG9yZXJDb21wb25lbnQge1xuICBwZGZGaWxlcyA9IFtcbiAgICB7IG5hbWU6ICdTYW1wbGUgUERGIDEnLCBzcmM6ICdhc3NldHMvcGRmcy9zYW1wbGUxLnBkZicgfSxcbiAgICB7IG5hbWU6ICdVc2VyIEd1aWRlJywgc3JjOiAnYXNzZXRzL3BkZnMvdXNlci1ndWlkZS5wZGYnIH0sXG4gICAgeyBuYW1lOiAnUHJvamVjdCBSZXBvcnQnLCBzcmM6ICdhc3NldHMvcGRmcy9wcm9qZWN0LXJlcG9ydC5wZGYnIH0sXG4gICAgeyBuYW1lOiAnUHJvamVjdCBSZXBvcnQnLCBzcmM6ICdhc3NldHMvcGRmcy9wcm9qZWN0LXJlcG9ydC5wZGYnIH0sXG4gICAgeyBuYW1lOiAnUHJvamVjdCBSZXBvcnQnLCBzcmM6ICdhc3NldHMvcGRmcy9wcm9qZWN0LXJlcG9ydC5wZGYnIH0sXG5cbiAgXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7IH1cblxuICBvcGVuUGRmKHBkZjogeyBuYW1lOiBzdHJpbmc7IHNyYzogc3RyaW5nIH0pIHtcbiAgICAvLyBOYXZpZ2F0ZSB0byBwZGYtaW5mbyBwYWdlIGFuZCBwYXNzIGZpbGUgc3JjXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcGRmLWluZm8nXSwgeyBzdGF0ZTogeyBwZGZTcmM6IHBkZi5zcmMgfSB9KTtcbiAgfVxuXG4gIG9uRmlsZVVwbG9hZChldmVudDogYW55KSB7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcbiAgICBjb25zb2xlLmxvZyhmaWxlKTtcblxuICAgIGlmIChmaWxlICYmIGZpbGUudHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicpIHtcbiAgICAgIGNvbnN0IGZpbGVVUkwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvcGRmLWluZm8nXSwgeyBzdGF0ZTogeyBwZGZTcmM6IGZpbGVVUkwgfSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWxlcnQoJ1BsZWFzZSB1cGxvYWQgYSB2YWxpZCBQREYgZmlsZS4nKTtcbiAgICB9XG5cbiAgfVxufVxuIiwiPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XHJcbmZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTBweDsgYWxpZ24taXRlbXM6IHN0YXJ0OyBtYXJnaW4tdG9wOiAyMHB4O1wiPlxyXG4gICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyBnYXA6IDE1cHg7IGJvcmRlcjogMXB4IHNvbGlkICMzZTNlM2UzZTsgbWluLXdpZHRoOiAxMDAlOyBwYWRkaW5nLWlubGluZTogMTBweDtcIj5cclxuICAgICAgPGgxIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIG1iLTRcIj5QREYgRXhwbG9yZXI8L2gxPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1iLTRcIj4oQ2xpY2sgb24gYSBQREYgZmlsZSB0byB2aWV3IGl0cyBkZXRhaWxzLik8L3NwYW4+XHJcbiAgIDwvZGl2PlxyXG4gICA8ZGl2IGNsYXNzPVwibWF4LXctbWQgbXgtYXV0byBtdC04IHAtNFwiPlxyXG4gICAgICA8aDIgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtYm9sZCBtYi00XCI+UERGIEZpbGVzPC9oMj5cclxuICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgbmFtZT1cIlwiIGlkPVwiXCIgKGNoYW5nZSk9XCJvbkZpbGVVcGxvYWQoJGV2ZW50KVwiIC8+XHJcbiAgICAgIDx1bCBjbGFzcz1cImJvcmRlciBib3JkZXItZ3JheS0yMDAgcm91bmRlZC1sZyBkaXZpZGUteSBkaXZpZGUtZ3JheS0yMDBcIj5cclxuICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBwZGYgb2YgcGRmRmlsZXNcIiBjbGFzcz1cInB4LTQgcHktMyBob3ZlcjpiZy1ncmF5LTEwMCBjdXJzb3ItcG9pbnRlclwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5nLWlubGluZTogNHB4O1wiIChjbGljayk9XCJvcGVuUGRmKHBkZilcIj5cclxuICAgICAgICAgICAge3sgcGRmLm5hbWUgfX1cclxuICAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import { NgxExtendedPdfViewerModule, pdfDefaultOptions, } from 'ngx-extended-pdf-viewer';
|
|
3
|
+
import { PDFDocument } from 'pdf-lib';
|
|
4
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { CommonModule, NgIf } from '@angular/common';
|
|
6
|
+
import { PdfSignatureComponent } from '../pdf-signature/pdf-signature.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "ngx-extended-pdf-viewer";
|
|
9
|
+
import * as i2 from "@angular/common";
|
|
10
|
+
export class PdfInfoComponent {
|
|
11
|
+
signatureImg;
|
|
12
|
+
floatingSignature;
|
|
13
|
+
pdfSrc = '';
|
|
14
|
+
imageDataURL = '';
|
|
15
|
+
pdfBlocked = true;
|
|
16
|
+
sidebarOpen = true;
|
|
17
|
+
signMode = false;
|
|
18
|
+
showSignature = true;
|
|
19
|
+
signatureLoaded = false;
|
|
20
|
+
signatures = [];
|
|
21
|
+
zoom = 100;
|
|
22
|
+
showDialog = false;
|
|
23
|
+
currentPdfBytes;
|
|
24
|
+
constructor() {
|
|
25
|
+
pdfDefaultOptions.textLayerMode = 1;
|
|
26
|
+
}
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
// ViewChild references are now available after view initialization
|
|
29
|
+
// Access them here if needed
|
|
30
|
+
}
|
|
31
|
+
async onFileSelected(event) {
|
|
32
|
+
const input = event.target;
|
|
33
|
+
if (!input.files || input.files.length === 0)
|
|
34
|
+
return;
|
|
35
|
+
const file = input.files[0];
|
|
36
|
+
const arrayBuffer = await file.arrayBuffer();
|
|
37
|
+
this.currentPdfBytes = new Uint8Array(arrayBuffer);
|
|
38
|
+
this.pdfSrc = URL.createObjectURL(file);
|
|
39
|
+
}
|
|
40
|
+
addSignature() {
|
|
41
|
+
this.showDialog = true;
|
|
42
|
+
}
|
|
43
|
+
onDialogClosed(event) {
|
|
44
|
+
this.showDialog = false;
|
|
45
|
+
if (event.confirmed && event.image) {
|
|
46
|
+
this.imageDataURL = event.image;
|
|
47
|
+
this.signMode = true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
onPdfClick(event) {
|
|
51
|
+
const target = event.target;
|
|
52
|
+
if (target.closest('.signature-box'))
|
|
53
|
+
return;
|
|
54
|
+
if (!this.signMode || !this.imageDataURL)
|
|
55
|
+
return;
|
|
56
|
+
const pageEl = event.target.closest('.page');
|
|
57
|
+
if (!pageEl)
|
|
58
|
+
return;
|
|
59
|
+
const pageNumber = Number(pageEl.dataset['pageNumber']);
|
|
60
|
+
const pageRect = pageEl.getBoundingClientRect();
|
|
61
|
+
const transform = getComputedStyle(pageEl).transform;
|
|
62
|
+
const scale = transform && transform !== 'none'
|
|
63
|
+
? new DOMMatrixReadOnly(transform).a
|
|
64
|
+
: 1;
|
|
65
|
+
const domX = event.clientX - pageRect.left;
|
|
66
|
+
const domY = event.clientY - pageRect.top;
|
|
67
|
+
const width = (pageRect.width / scale) * 0.15;
|
|
68
|
+
const height = width * 0.35;
|
|
69
|
+
const sig = { pageNumber, domX, domY, width, height };
|
|
70
|
+
this.signatures.push(sig);
|
|
71
|
+
this.createDraggableSignatureBox(sig);
|
|
72
|
+
this.signMode = false;
|
|
73
|
+
}
|
|
74
|
+
createDraggableSignatureBox(sig) {
|
|
75
|
+
const pageEl = document.querySelector(`.pdfViewer .page[data-page-number="${sig.pageNumber}"]`);
|
|
76
|
+
if (!pageEl)
|
|
77
|
+
return;
|
|
78
|
+
pageEl.style.position = 'relative';
|
|
79
|
+
const box = document.createElement('div');
|
|
80
|
+
box.className = 'signature-box';
|
|
81
|
+
box.style.position = 'absolute';
|
|
82
|
+
box.style.left = `${sig.domX}px`;
|
|
83
|
+
box.style.top = `${sig.domY}px`;
|
|
84
|
+
box.style.width = `${sig.width}px`;
|
|
85
|
+
box.style.height = `${sig.height}px`;
|
|
86
|
+
box.style.zIndex = '9999';
|
|
87
|
+
box.style.border = '2px dashed #1976d2';
|
|
88
|
+
box.style.background = 'rgba(25, 118, 210, 0.05)';
|
|
89
|
+
const img = document.createElement('img');
|
|
90
|
+
img.src = this.imageDataURL;
|
|
91
|
+
img.style.width = '100%';
|
|
92
|
+
img.style.height = '100%';
|
|
93
|
+
img.style.pointerEvents = 'none';
|
|
94
|
+
const handle = document.createElement('div');
|
|
95
|
+
handle.classList.add('resize-handle');
|
|
96
|
+
handle.style.position = 'absolute';
|
|
97
|
+
handle.style.right = '-7px';
|
|
98
|
+
handle.style.bottom = '-7px';
|
|
99
|
+
handle.style.width = '18px';
|
|
100
|
+
handle.style.height = '18px';
|
|
101
|
+
handle.style.backgroundColor = 'rgba(25, 118, 210, 0.2)';
|
|
102
|
+
handle.style.border = '2px solid rgba(25, 118, 210, 0.9)';
|
|
103
|
+
handle.style.borderRadius = '4px';
|
|
104
|
+
handle.style.cursor = 'se-resize';
|
|
105
|
+
handle.style.zIndex = '10000';
|
|
106
|
+
handle.textContent = '+';
|
|
107
|
+
box.appendChild(img);
|
|
108
|
+
box.appendChild(handle);
|
|
109
|
+
pageEl.appendChild(box);
|
|
110
|
+
this.makeDraggable(box, pageEl, sig);
|
|
111
|
+
this.makeResizable(box, sig);
|
|
112
|
+
}
|
|
113
|
+
makeDraggable(box, container, sig) {
|
|
114
|
+
let startX = 0;
|
|
115
|
+
let startY = 0;
|
|
116
|
+
let origX = 0;
|
|
117
|
+
let origY = 0;
|
|
118
|
+
box.addEventListener('pointerdown', (e) => {
|
|
119
|
+
if (e.target.classList.contains('resize-handle'))
|
|
120
|
+
return;
|
|
121
|
+
e.preventDefault();
|
|
122
|
+
e.stopPropagation();
|
|
123
|
+
box.setPointerCapture(e.pointerId);
|
|
124
|
+
startX = e.clientX;
|
|
125
|
+
startY = e.clientY;
|
|
126
|
+
origX = box.offsetLeft;
|
|
127
|
+
origY = box.offsetTop;
|
|
128
|
+
const scale = this.getPdfScale(container);
|
|
129
|
+
const move = (ev) => {
|
|
130
|
+
const dx = (ev.clientX - startX) / scale;
|
|
131
|
+
const dy = (ev.clientY - startY) / scale;
|
|
132
|
+
box.style.left = origX + dx + 'px';
|
|
133
|
+
box.style.top = origY + dy + 'px';
|
|
134
|
+
sig.domX = origX + dx;
|
|
135
|
+
sig.domY = origY + dy;
|
|
136
|
+
};
|
|
137
|
+
const up = () => {
|
|
138
|
+
box.releasePointerCapture(e.pointerId);
|
|
139
|
+
document.removeEventListener('pointermove', move);
|
|
140
|
+
document.removeEventListener('pointerup', up);
|
|
141
|
+
};
|
|
142
|
+
document.addEventListener('pointermove', move);
|
|
143
|
+
document.addEventListener('pointerup', up);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
makeResizable(box, sig) {
|
|
147
|
+
const handle = box.querySelector('.resize-handle');
|
|
148
|
+
if (!handle)
|
|
149
|
+
return;
|
|
150
|
+
handle.addEventListener('pointerdown', (e) => {
|
|
151
|
+
e.preventDefault();
|
|
152
|
+
e.stopPropagation();
|
|
153
|
+
handle.setPointerCapture(e.pointerId);
|
|
154
|
+
const startX = e.clientX;
|
|
155
|
+
const startWidth = sig.width;
|
|
156
|
+
const move = (ev) => {
|
|
157
|
+
const dx = ev.clientX - startX;
|
|
158
|
+
const newWidth = Math.max(60, startWidth + dx);
|
|
159
|
+
const newHeight = newWidth * 0.35;
|
|
160
|
+
sig.width = newWidth;
|
|
161
|
+
sig.height = newHeight;
|
|
162
|
+
box.style.width = newWidth + 'px';
|
|
163
|
+
box.style.height = newHeight + 'px';
|
|
164
|
+
};
|
|
165
|
+
const up = () => {
|
|
166
|
+
handle.releasePointerCapture(e.pointerId);
|
|
167
|
+
document.removeEventListener('pointermove', move);
|
|
168
|
+
document.removeEventListener('pointerup', up);
|
|
169
|
+
};
|
|
170
|
+
document.addEventListener('pointermove', move);
|
|
171
|
+
document.addEventListener('pointerup', up);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
getPdfScale(pageEl) {
|
|
175
|
+
const transform = getComputedStyle(pageEl).transform;
|
|
176
|
+
return transform && transform !== 'none'
|
|
177
|
+
? new DOMMatrixReadOnly(transform).a
|
|
178
|
+
: 1;
|
|
179
|
+
}
|
|
180
|
+
async addAllSignaturesToPdf() {
|
|
181
|
+
if (!this.signatures.length || !this.imageDataURL)
|
|
182
|
+
return;
|
|
183
|
+
const existingPdfBytes = await fetch(this.pdfSrc).then(res => res.arrayBuffer());
|
|
184
|
+
const pdfDoc = await PDFDocument.load(existingPdfBytes);
|
|
185
|
+
const pages = pdfDoc.getPages();
|
|
186
|
+
const base64Data = this.imageDataURL.split(',')[1];
|
|
187
|
+
const imageBytes = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0));
|
|
188
|
+
const pngImage = await pdfDoc.embedPng(imageBytes);
|
|
189
|
+
for (const sig of this.signatures) {
|
|
190
|
+
const page = pages[sig.pageNumber - 1];
|
|
191
|
+
if (!page)
|
|
192
|
+
continue;
|
|
193
|
+
const pageEl = document.querySelector(`.pdfViewer .page[data-page-number="${sig.pageNumber}"]`);
|
|
194
|
+
const pageRect = pageEl.getBoundingClientRect();
|
|
195
|
+
const scale = pageRect.width / page.getWidth();
|
|
196
|
+
const pdfX = sig.domX / scale;
|
|
197
|
+
const pdfY = page.getHeight() - sig.domY / scale - sig.height / scale;
|
|
198
|
+
const pdfW = sig.width / scale;
|
|
199
|
+
const pdfH = sig.height / scale;
|
|
200
|
+
page.drawImage(pngImage, {
|
|
201
|
+
x: pdfX,
|
|
202
|
+
y: pdfY,
|
|
203
|
+
width: pdfW,
|
|
204
|
+
height: pdfH
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
const pdfBytes = await pdfDoc.save();
|
|
208
|
+
const pdfBytesNormal = new Uint8Array(pdfBytes);
|
|
209
|
+
const blob = new Blob([pdfBytesNormal], { type: 'application/pdf' });
|
|
210
|
+
this.pdfSrc = URL.createObjectURL(blob);
|
|
211
|
+
}
|
|
212
|
+
finalizeSignature() {
|
|
213
|
+
this.signMode = false;
|
|
214
|
+
}
|
|
215
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
216
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdfInfoComponent, isStandalone: true, selector: "app-pdf-info", inputs: { pdfSrc: "pdfSrc" }, viewQueries: [{ propertyName: "signatureImg", first: true, predicate: ["signatureImg"], descendants: true }, { propertyName: "floatingSignature", first: true, predicate: ["floatingSignature"], descendants: true }], ngImport: i0, template: "<div>\r\n <img #signatureImg [src]=\"imageDataURL || ''\" style=\"display: none; position: absolute; visibility: hidden; width: 0; height: 0;\" />\r\n <img #floatingSignature [src]=\"imageDataURL || ''\" style=\"display: none; position: absolute; visibility: hidden; width: 0; height: 0;\" />\r\n \r\n <!-- <button *ngIf=\"pdfSrc\" (click)=\"showCoordinates()\">Show Coordinates</button> -->\r\n <button *ngIf=\"pdfSrc\" (click)=\"addSignature()\">Add Signature</button>\r\n <button *ngIf=\"pdfSrc\" (click)=\"addAllSignaturesToPdf()\">Save Signature</button>\r\n <input type=\"file\" (change)=\"onFileSelected($event)\" accept=\"application/pdf\" />\r\n\r\n <div class=\"popup-backdrop\" *ngIf=\"showDialog\">\r\n <app-pdf-signature\r\n class=\"popup-content\"\r\n (click)=\"$event.stopPropagation()\"\r\n (closed)=\"onDialogClosed($event)\">\r\n </app-pdf-signature>\r\n </div>\r\n\r\n <div class=\"container\" [hidden]=\"!pdfSrc\">\r\n <div class=\"content\">\r\n <ngx-extended-pdf-viewer\r\n [src]=\"pdfSrc\"\r\n [textLayer]=\"false\"\r\n [page]=\"0\"\r\n [(zoom)]=\"zoom\"\r\n [showHandToolButton]=\"true\"\r\n [showOpenFileButton]=\"false\"\r\n [enableDragAndDrop]=\"false\"\r\n (click)=\"onPdfClick($event)\">\r\n</ngx-extended-pdf-viewer>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".container,.content{position:relative}.signature-box{position:absolute;border:2px dashed #1976d2;cursor:move;box-sizing:border-box;background:#1976d20d;z-index:9999}.signature-box img{width:100%;height:100%;pointer-events:none}.resize-handle{position:absolute;width:18px;height:18px;right:-9px;bottom:-9px;background:#1976d233;border:2px solid rgba(25,118,210,.9);border-radius:4px;display:flex;align-items:center;justify-content:center;font-weight:700;cursor:se-resize;-webkit-user-select:none;user-select:none;z-index:10000}.popup-backdrop{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.popup-content{background:#fff;border-radius:8px;width:520px;max-width:95%;max-height:90vh;overflow:hidden;box-shadow:0 10px 40px #0000004d}\n"], dependencies: [{ kind: "ngmodule", type: NgxExtendedPdfViewerModule }, { kind: "component", type: i1.NgxExtendedPdfViewerComponent, selector: "ngx-extended-pdf-viewer", inputs: ["customFindbarInputArea", "customToolbar", "customFindbar", "customFindbarButtons", "customPdfViewer", "customSecondaryToolbar", "customSidebar", "customThumbnail", "customFreeFloatingBar", "showFreeFloatingBar", "enableDragAndDrop", "forceUsingLegacyES5", "formData", "disableForms", "pageViewMode", "scrollMode", "authorization", "httpHeaders", "contextMenuAllowed", "enablePrint", "enablePrintAutoRotate", "forceFullReloadOfJavaScriptCode", "showTextEditor", "showStampEditor", "showCommentEditor", "showDrawEditor", "showHighlightEditor", "showSignatureEditor", "logLevel", "minifiedJSLibraries", "printResolution", "rotation", "src", "base64Src", "minHeight", "height", "backgroundColor", "pdfBackgroundColor", "filenameForDownload", "ignoreKeyboard", "ignoreKeys", "acceptKeys", "imageResourcesPath", "localeFolderPath", "language", "listenToURL", "nameddest", "password", "replaceBrowserPrint", "useInlineScripts", "showUnverifiedSignatures", "startTabindex", "showSidebarButton", "sidebarVisible", "activeSidebarView", "findbarVisible", "propertiesDialogVisible", "showFindButton", "showFindHighlightAll", "showFindMatchCase", "showFindMultiple", "showFindRegexp", "showFindEntireWord", "showFindMatchDiacritics", "showFindResultsCount", "showFindMessages", "showMovePageButton", "showPagingButtons", "showFirstAndLastPageButtons", "showPreviousAndNextPageButtons", "showPageNumber", "showPageLabel", "showZoomButtons", "showZoomDropdown", "showPresentationModeButton", "showOpenFileButton", "showPrintButton", "showDownloadButton", "theme", "showToolbar", "showSecondaryToolbarButton", "showSinglePageModeButton", "showVerticalScrollButton", "showHorizontalScrollButton", "showWrappedScrollButton", "showInfiniteScrollButton", "showBookModeButton", "showRotateButton", "showRotateCwButton", "showRotateCcwButton", "handTool", "showHandToolButton", "showSpreadButton", "showPropertiesButton", "showBorders", "spread", "showScrollingButtons", "page", "pageLabel", "textLayer", "zoom", "zoomLevels", "maxZoom", "minZoom", "mobileFriendlyZoom"], outputs: ["annotationEditorEvent", "formDataChange", "pageViewModeChange", "progress", "srcChange", "scrollModeChange", "afterPrint", "beforePrint", "currentZoomFactor", "rotationChange", "annotationLayerRendered", "annotationEditorLayerRendered", "xfaLayerRendered", "outlineLoaded", "attachmentsloaded", "layersloaded", "sidebarVisibleChange", "activeSidebarViewChange", "findbarVisibleChange", "propertiesDialogVisibleChange", "handToolChange", "spreadChange", "thumbnailDrawn", "pageChange", "pageLabelChange", "pagesLoaded", "pageRender", "pageRendered", "pdfDownloaded", "pdfLoaded", "pdfLoadingStarts", "pdfLoadingFailed", "textLayerRendered", "annotationEditorModeChanged", "updateFindMatchesCount", "updateFindState", "zoomChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PdfSignatureComponent, selector: "app-pdf-signature", outputs: ["closed"] }] });
|
|
217
|
+
}
|
|
218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfInfoComponent, decorators: [{
|
|
219
|
+
type: Component,
|
|
220
|
+
args: [{ selector: 'app-pdf-info', standalone: true, imports: [
|
|
221
|
+
NgxExtendedPdfViewerModule,
|
|
222
|
+
FormsModule,
|
|
223
|
+
ReactiveFormsModule,
|
|
224
|
+
CommonModule,
|
|
225
|
+
NgIf,
|
|
226
|
+
PdfSignatureComponent
|
|
227
|
+
], template: "<div>\r\n <img #signatureImg [src]=\"imageDataURL || ''\" style=\"display: none; position: absolute; visibility: hidden; width: 0; height: 0;\" />\r\n <img #floatingSignature [src]=\"imageDataURL || ''\" style=\"display: none; position: absolute; visibility: hidden; width: 0; height: 0;\" />\r\n \r\n <!-- <button *ngIf=\"pdfSrc\" (click)=\"showCoordinates()\">Show Coordinates</button> -->\r\n <button *ngIf=\"pdfSrc\" (click)=\"addSignature()\">Add Signature</button>\r\n <button *ngIf=\"pdfSrc\" (click)=\"addAllSignaturesToPdf()\">Save Signature</button>\r\n <input type=\"file\" (change)=\"onFileSelected($event)\" accept=\"application/pdf\" />\r\n\r\n <div class=\"popup-backdrop\" *ngIf=\"showDialog\">\r\n <app-pdf-signature\r\n class=\"popup-content\"\r\n (click)=\"$event.stopPropagation()\"\r\n (closed)=\"onDialogClosed($event)\">\r\n </app-pdf-signature>\r\n </div>\r\n\r\n <div class=\"container\" [hidden]=\"!pdfSrc\">\r\n <div class=\"content\">\r\n <ngx-extended-pdf-viewer\r\n [src]=\"pdfSrc\"\r\n [textLayer]=\"false\"\r\n [page]=\"0\"\r\n [(zoom)]=\"zoom\"\r\n [showHandToolButton]=\"true\"\r\n [showOpenFileButton]=\"false\"\r\n [enableDragAndDrop]=\"false\"\r\n (click)=\"onPdfClick($event)\">\r\n</ngx-extended-pdf-viewer>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".container,.content{position:relative}.signature-box{position:absolute;border:2px dashed #1976d2;cursor:move;box-sizing:border-box;background:#1976d20d;z-index:9999}.signature-box img{width:100%;height:100%;pointer-events:none}.resize-handle{position:absolute;width:18px;height:18px;right:-9px;bottom:-9px;background:#1976d233;border:2px solid rgba(25,118,210,.9);border-radius:4px;display:flex;align-items:center;justify-content:center;font-weight:700;cursor:se-resize;-webkit-user-select:none;user-select:none;z-index:10000}.popup-backdrop{position:fixed;inset:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.popup-content{background:#fff;border-radius:8px;width:520px;max-width:95%;max-height:90vh;overflow:hidden;box-shadow:0 10px 40px #0000004d}\n"] }]
|
|
228
|
+
}], ctorParameters: () => [], propDecorators: { signatureImg: [{
|
|
229
|
+
type: ViewChild,
|
|
230
|
+
args: ['signatureImg', { static: false }]
|
|
231
|
+
}], floatingSignature: [{
|
|
232
|
+
type: ViewChild,
|
|
233
|
+
args: ['floatingSignature', { static: false }]
|
|
234
|
+
}], pdfSrc: [{
|
|
235
|
+
type: Input
|
|
236
|
+
}] } });
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGliLWZpcmFzLWRpZ2kvc3JjL2xpYi9wZGYtaW5mby9wZGYtaW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItZmlyYXMtZGlnaS9zcmMvbGliL3BkZi1pbmZvL3BkZi1pbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsMEJBQTBCLEVBRTFCLGlCQUFpQixHQUNsQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7QUFnQmpGLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFBWSxDQUFnQztJQUc1QyxpQkFBaUIsQ0FBZ0M7SUFFeEMsTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUM3QixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBRTFCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDbEIsV0FBVyxHQUFZLElBQUksQ0FBQztJQUM1QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLGFBQWEsR0FBWSxJQUFJLENBQUM7SUFDOUIsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUV4QixVQUFVLEdBQWdCLEVBQUUsQ0FBQztJQUM3QixJQUFJLEdBQVEsR0FBRyxDQUFDO0lBQ2hCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIs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QkFDbkIsWUFBWSxtSUFFWixxQkFBcUI7OzRGQUdaLGdCQUFnQjtrQkFkNUIsU0FBUzsrQkFDRSxjQUFjLGNBR1osSUFBSSxXQUNQO3dCQUNQLDBCQUEwQjt3QkFDMUIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osSUFBSTt3QkFDSixxQkFBcUI7cUJBQ3RCO3dEQUlELFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUk1QyxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUd4QyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTmd4RXh0ZW5kZWRQZGZWaWV3ZXJNb2R1bGUsXG4gIFRleHRMYXllclJlbmRlcmVkRXZlbnQsXG4gIHBkZkRlZmF1bHRPcHRpb25zLFxufSBmcm9tICduZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcic7XG5pbXBvcnQgeyBQREZEb2N1bWVudCB9IGZyb20gJ3BkZi1saWInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUGRmU2lnbmF0dXJlQ29tcG9uZW50IH0gZnJvbSAnLi4vcGRmLXNpZ25hdHVyZS9wZGYtc2lnbmF0dXJlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wZGYtaW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wZGYtaW5mby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BkZi1pbmZvLmNvbXBvbmVudC5jc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5neEV4dGVuZGVkUGRmVmlld2VyTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgUGRmU2lnbmF0dXJlQ29tcG9uZW50XG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBkZkluZm9Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnc2lnbmF0dXJlSW1nJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHNpZ25hdHVyZUltZz86IEVsZW1lbnRSZWY8SFRNTEltYWdlRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgnZmxvYXRpbmdTaWduYXR1cmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZmxvYXRpbmdTaWduYXR1cmU/OiBFbGVtZW50UmVmPEhUTUxJbWFnZUVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIHBkZlNyYzogc3RyaW5nID0gJyc7XG4gIGltYWdlRGF0YVVSTDogc3RyaW5nID0gJyc7XG5cbiAgcGRmQmxvY2tlZCA9IHRydWU7XG4gIHNpZGViYXJPcGVuOiBib29sZWFuID0gdHJ1ZTtcbiAgc2lnbk1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd1NpZ25hdHVyZTogYm9vbGVhbiA9IHRydWU7XG4gIHNpZ25hdHVyZUxvYWRlZCA9IGZhbHNlO1xuXG4gIHNpZ25hdHVyZXM6IFNpZ25hdHVyZVtdID0gW107XG4gIHpvb206IGFueSA9IDEwMDtcbiAgc2hvd0RpYWxvZyA9IGZhbHNlO1xuICBjdXJyZW50UGRmQnl0ZXMhOiBVaW50OEFycmF5O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHBkZkRlZmF1bHRPcHRpb25zLnRleHRMYXllck1vZGUgPSAxO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIFZpZXdDaGlsZCByZWZlcmVuY2VzIGFyZSBub3cgYXZhaWxhYmxlIGFmdGVyIHZpZXcgaW5pdGlhbGl6YXRpb25cbiAgICAvLyBBY2Nlc3MgdGhlbSBoZXJlIGlmIG5lZWRlZFxuICB9XG5cbiAgYXN5bmMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAoIWlucHV0LmZpbGVzIHx8IGlucHV0LmZpbGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzWzBdO1xuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgZmlsZS5hcnJheUJ1ZmZlcigpO1xuICAgIHRoaXMuY3VycmVudFBkZkJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuXG4gICAgdGhpcy5wZGZTcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuICB9XG5cbiAgYWRkU2lnbmF0dXJlKCkge1xuICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRydWU7XG4gIH1cblxuICBvbkRpYWxvZ0Nsb3NlZChldmVudDogeyBjb25maXJtZWQ6IGJvb2xlYW47IGltYWdlPzogc3RyaW5nIH0pIHtcbiAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQuY29uZmlybWVkICYmIGV2ZW50LmltYWdlKSB7XG4gICAgICB0aGlzLmltYWdlRGF0YVVSTCA9IGV2ZW50LmltYWdlO1xuICAgICAgdGhpcy5zaWduTW9kZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25QZGZDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZih0YXJnZXQuY2xvc2VzdCgnLnNpZ25hdHVyZS1ib3gnKSkgcmV0dXJuO1xuICAgIGlmICghdGhpcy5zaWduTW9kZSB8fCAhdGhpcy5pbWFnZURhdGFVUkwpIHJldHVybjtcblxuICAgIGNvbnN0IHBhZ2VFbCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5wYWdlJykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKCFwYWdlRWwpIHJldHVybjtcblxuICAgIGNvbnN0IHBhZ2VOdW1iZXIgPSBOdW1iZXIocGFnZUVsLmRhdGFzZXRbJ3BhZ2VOdW1iZXInXSk7XG4gICAgY29uc3QgcGFnZVJlY3QgPSBwYWdlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBnZXRDb21wdXRlZFN0eWxlKHBhZ2VFbCkudHJhbnNmb3JtO1xuICAgIGNvbnN0IHNjYWxlID0gdHJhbnNmb3JtICYmIHRyYW5zZm9ybSAhPT0gJ25vbmUnXG4gICAgICA/IG5ldyBET01NYXRyaXhSZWFkT25seSh0cmFuc2Zvcm0pLmFcbiAgICAgIDogMTtcblxuICAgIGNvbnN0IGRvbVggPSBldmVudC5jbGllbnRYIC0gcGFnZVJlY3QubGVmdDtcbiAgICBjb25zdCBkb21ZID0gZXZlbnQuY2xpZW50WSAtIHBhZ2VSZWN0LnRvcDtcblxuICAgIGNvbnN0IHdpZHRoID0gKHBhZ2VSZWN0LndpZHRoIC8gc2NhbGUpICogMC4xNTtcbiAgICBjb25zdCBoZWlnaHQgPSB3aWR0aCAqIDAuMzU7XG5cbiAgICBjb25zdCBzaWc6IFNpZ25hdHVyZSA9IHsgcGFnZU51bWJlciwgZG9tWCwgZG9tWSwgd2lkdGgsIGhlaWdodCB9O1xuXG4gICAgdGhpcy5zaWduYXR1cmVzLnB1c2goc2lnKTtcbiAgICB0aGlzLmNyZWF0ZURyYWdnYWJsZVNpZ25hdHVyZUJveChzaWcpO1xuXG4gICAgdGhpcy5zaWduTW9kZSA9IGZhbHNlO1xuICB9XG5cbiAgY3JlYXRlRHJhZ2dhYmxlU2lnbmF0dXJlQm94KHNpZzogU2lnbmF0dXJlKSB7XG4gICAgY29uc3QgcGFnZUVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGAucGRmVmlld2VyIC5wYWdlW2RhdGEtcGFnZS1udW1iZXI9XCIke3NpZy5wYWdlTnVtYmVyfVwiXWBcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgaWYgKCFwYWdlRWwpIHJldHVybjtcblxuICAgIHBhZ2VFbC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG5cbiAgICBjb25zdCBib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBib3guY2xhc3NOYW1lID0gJ3NpZ25hdHVyZS1ib3gnO1xuICAgIGJveC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgYm94LnN0eWxlLmxlZnQgPSBgJHtzaWcuZG9tWH1weGA7XG4gICAgYm94LnN0eWxlLnRvcCA9IGAke3NpZy5kb21ZfXB4YDtcbiAgICBib3guc3R5bGUud2lkdGggPSBgJHtzaWcud2lkdGh9cHhgO1xuICAgIGJveC5zdHlsZS5oZWlnaHQgPSBgJHtzaWcuaGVpZ2h0fXB4YDtcbiAgICBib3guc3R5bGUuekluZGV4ID0gJzk5OTknO1xuICAgIGJveC5zdHlsZS5ib3JkZXIgPSAnMnB4IGRhc2hlZCAjMTk3NmQyJztcbiAgICBib3guc3R5bGUuYmFja2dyb3VuZCA9ICdyZ2JhKDI1LCAxMTgsIDIxMCwgMC4wNSknO1xuXG4gICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgaW1nLnNyYyA9IHRoaXMuaW1hZ2VEYXRhVVJMO1xuICAgIGltZy5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICBpbWcuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgIGltZy5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXG4gICAgY29uc3QgaGFuZGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgaGFuZGxlLmNsYXNzTGlzdC5hZGQoJ3Jlc2l6ZS1oYW5kbGUnKTtcbiAgICBoYW5kbGUuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIGhhbmRsZS5zdHlsZS5yaWdodCA9ICctN3B4JztcbiAgICBoYW5kbGUuc3R5bGUuYm90dG9tID0gJy03cHgnO1xuICAgIGhhbmRsZS5zdHlsZS53aWR0aCA9ICcxOHB4JztcbiAgICBoYW5kbGUuc3R5bGUuaGVpZ2h0ID0gJzE4cHgnO1xuICAgIGhhbmRsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAncmdiYSgyNSwgMTE4LCAyMTAsIDAuMiknO1xuICAgIGhhbmRsZS5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkIHJnYmEoMjUsIDExOCwgMjEwLCAwLjkpJztcbiAgICBoYW5kbGUuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzRweCc7XG4gICAgaGFuZGxlLnN0eWxlLmN1cnNvciA9ICdzZS1yZXNpemUnO1xuICAgIGhhbmRsZS5zdHlsZS56SW5kZXggPSAnMTAwMDAnO1xuICAgIGhhbmRsZS50ZXh0Q29udGVudCA9ICcrJztcblxuICAgIGJveC5hcHBlbmRDaGlsZChpbWcpO1xuICAgIGJveC5hcHBlbmRDaGlsZChoYW5kbGUpO1xuICAgIHBhZ2VFbC5hcHBlbmRDaGlsZChib3gpO1xuXG4gICAgdGhpcy5tYWtlRHJhZ2dhYmxlKGJveCwgcGFnZUVsLCBzaWcpO1xuICAgIHRoaXMubWFrZVJlc2l6YWJsZShib3gsIHNpZyk7XG4gIH1cblxuICBtYWtlRHJhZ2dhYmxlKGJveDogSFRNTEVsZW1lbnQsIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIHNpZzogU2lnbmF0dXJlKSB7XG4gICAgbGV0IHN0YXJ0WCA9IDA7XG4gICAgbGV0IHN0YXJ0WSA9IDA7XG4gICAgbGV0IG9yaWdYID0gMDtcbiAgICBsZXQgb3JpZ1kgPSAwO1xuXG4gICAgYm94LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGU6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgaWYgKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXNpemUtaGFuZGxlJykpIHJldHVybjtcblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgYm94LnNldFBvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKTtcblxuICAgICAgc3RhcnRYID0gZS5jbGllbnRYO1xuICAgICAgc3RhcnRZID0gZS5jbGllbnRZO1xuICAgICAgb3JpZ1ggPSBib3gub2Zmc2V0TGVmdDtcbiAgICAgIG9yaWdZID0gYm94Lm9mZnNldFRvcDtcblxuICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLmdldFBkZlNjYWxlKGNvbnRhaW5lcik7XG5cbiAgICAgIGNvbnN0IG1vdmUgPSAoZXY6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkeCA9IChldi5jbGllbnRYIC0gc3RhcnRYKSAvIHNjYWxlO1xuICAgICAgICBjb25zdCBkeSA9IChldi5jbGllbnRZIC0gc3RhcnRZKSAvIHNjYWxlO1xuXG4gICAgICAgIGJveC5zdHlsZS5sZWZ0ID0gb3JpZ1ggKyBkeCArICdweCc7XG4gICAgICAgIGJveC5zdHlsZS50b3AgPSBvcmlnWSArIGR5ICsgJ3B4JztcblxuICAgICAgICBzaWcuZG9tWCA9IG9yaWdYICsgZHg7XG4gICAgICAgIHNpZy5kb21ZID0gb3JpZ1kgKyBkeTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHVwID0gKCkgPT4ge1xuICAgICAgICBib3gucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBtb3ZlKTtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgdXApO1xuICAgICAgfTtcblxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBtb3ZlKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHVwKTtcbiAgICB9KTtcbiAgfVxuXG4gIG1ha2VSZXNpemFibGUoYm94OiBIVE1MRWxlbWVudCwgc2lnOiBTaWduYXR1cmUpIHtcbiAgICBjb25zdCBoYW5kbGUgPSBib3gucXVlcnlTZWxlY3RvcignLnJlc2l6ZS1oYW5kbGUnKSBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoIWhhbmRsZSkgcmV0dXJuO1xuXG4gICAgaGFuZGxlLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgKGU6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgaGFuZGxlLnNldFBvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKTtcblxuICAgICAgY29uc3Qgc3RhcnRYID0gZS5jbGllbnRYO1xuICAgICAgY29uc3Qgc3RhcnRXaWR0aCA9IHNpZy53aWR0aDtcblxuICAgICAgY29uc3QgbW92ZSA9IChldjogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGR4ID0gZXYuY2xpZW50WCAtIHN0YXJ0WDtcbiAgICAgICAgY29uc3QgbmV3V2lkdGggPSBNYXRoLm1heCg2MCwgc3RhcnRXaWR0aCArIGR4KTtcbiAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gbmV3V2lkdGggKiAwLjM1O1xuXG4gICAgICAgIHNpZy53aWR0aCA9IG5ld1dpZHRoO1xuICAgICAgICBzaWcuaGVpZ2h0ID0gbmV3SGVpZ2h0O1xuXG4gICAgICAgIGJveC5zdHlsZS53aWR0aCA9IG5ld1dpZHRoICsgJ3B4JztcbiAgICAgICAgYm94LnN0eWxlLmhlaWdodCA9IG5ld0hlaWdodCArICdweCc7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB1cCA9ICgpID0+IHtcbiAgICAgICAgaGFuZGxlLnJlbGVhc2VQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgbW92ZSk7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJ1cCcsIHVwKTtcbiAgICAgIH07XG5cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgbW92ZSk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCB1cCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRQZGZTY2FsZShwYWdlRWw6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBnZXRDb21wdXRlZFN0eWxlKHBhZ2VFbCkudHJhbnNmb3JtO1xuICAgIHJldHVybiB0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtICE9PSAnbm9uZSdcbiAgICAgID8gbmV3IERPTU1hdHJpeFJlYWRPbmx5KHRyYW5zZm9ybSkuYVxuICAgICAgOiAxO1xuICB9XG5cbiAgYXN5bmMgYWRkQWxsU2lnbmF0dXJlc1RvUGRmKCkge1xuICAgIGlmICghdGhpcy5zaWduYXR1cmVzLmxlbmd0aCB8fCAhdGhpcy5pbWFnZURhdGFVUkwpIHJldHVybjtcblxuICAgIGNvbnN0IGV4aXN0aW5nUGRmQnl0ZXMgPSBhd2FpdCBmZXRjaCh0aGlzLnBkZlNyYykudGhlbihyZXMgPT4gcmVzLmFycmF5QnVmZmVyKCkpO1xuICAgIGNvbnN0IHBkZkRvYyA9IGF3YWl0IFBERkRvY3VtZW50LmxvYWQoZXhpc3RpbmdQZGZCeXRlcyk7XG4gICAgY29uc3QgcGFnZXMgPSBwZGZEb2MuZ2V0UGFnZXMoKTtcblxuICAgIGNvbnN0IGJhc2U2NERhdGEgPSB0aGlzLmltYWdlRGF0YVVSTC5zcGxpdCgnLCcpWzFdO1xuICAgIGNvbnN0IGltYWdlQnl0ZXMgPSBVaW50OEFycmF5LmZyb20oYXRvYihiYXNlNjREYXRhKSwgYyA9PiBjLmNoYXJDb2RlQXQoMCkpO1xuICAgIGNvbnN0IHBuZ0ltYWdlID0gYXdhaXQgcGRmRG9jLmVtYmVkUG5nKGltYWdlQnl0ZXMpO1xuXG4gICAgZm9yIChjb25zdCBzaWcgb2YgdGhpcy5zaWduYXR1cmVzKSB7XG4gICAgICBjb25zdCBwYWdlID0gcGFnZXNbc2lnLnBhZ2VOdW1iZXIgLSAxXTtcbiAgICAgIGlmICghcGFnZSkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IHBhZ2VFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIGAucGRmVmlld2VyIC5wYWdlW2RhdGEtcGFnZS1udW1iZXI9XCIke3NpZy5wYWdlTnVtYmVyfVwiXWBcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCBwYWdlUmVjdCA9IHBhZ2VFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgY29uc3Qgc2NhbGUgPSBwYWdlUmVjdC53aWR0aCAvIHBhZ2UuZ2V0V2lkdGgoKTtcblxuICAgICAgY29uc3QgcGRmWCA9IHNpZy5kb21YIC8gc2NhbGU7XG4gICAgICBjb25zdCBwZGZZID0gcGFnZS5nZXRIZWlnaHQoKSAtIHNpZy5kb21ZIC8gc2NhbGUgLSBzaWcuaGVpZ2h0IC8gc2NhbGU7XG4gICAgICBjb25zdCBwZGZXID0gc2lnLndpZHRoIC8gc2NhbGU7XG4gICAgICBjb25zdCBwZGZIID0gc2lnLmhlaWdodCAvIHNjYWxlO1xuXG4gICAgICBwYWdlLmRyYXdJbWFnZShwbmdJbWFnZSwge1xuICAgICAgICB4OiBwZGZYLFxuICAgICAgICB5OiBwZGZZLFxuICAgICAgICB3aWR0aDogcGRmVyxcbiAgICAgICAgaGVpZ2h0OiBwZGZIXG4gICAgICB9KTtcbiAgICB9XG5cbmNvbnN0IHBkZkJ5dGVzID0gYXdhaXQgcGRmRG9jLnNhdmUoKTtcblxuY29uc3QgcGRmQnl0ZXNOb3JtYWwgPSBuZXcgVWludDhBcnJheShwZGZCeXRlcyk7XG5cbmNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcGRmQnl0ZXNOb3JtYWxdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xudGhpcy5wZGZTcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG5cbiAgfVxuXG4gIGZpbmFsaXplU2lnbmF0dXJlKCkge1xuICAgIHRoaXMuc2lnbk1vZGUgPSBmYWxzZTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgU2lnbmF0dXJlIHtcbiAgcGFnZU51bWJlcjogbnVtYmVyO1xuICBkb21YOiBudW1iZXI7XG4gIGRvbVk6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59XG4iLCI8ZGl2PlxyXG4gIDxpbWcgI3NpZ25hdHVyZUltZyBbc3JjXT1cImltYWdlRGF0YVVSTCB8fCAnJ1wiIHN0eWxlPVwiZGlzcGxheTogbm9uZTsgcG9zaXRpb246IGFic29sdXRlOyB2aXNpYmlsaXR5OiBoaWRkZW47IHdpZHRoOiAwOyBoZWlnaHQ6IDA7XCIgLz5cclxuICA8aW1nICNmbG9hdGluZ1NpZ25hdHVyZSBbc3JjXT1cImltYWdlRGF0YVVSTCB8fCAnJ1wiIHN0eWxlPVwiZGlzcGxheTogbm9uZTsgcG9zaXRpb246IGFic29sdXRlOyB2aXNpYmlsaXR5OiBoaWRkZW47IHdpZHRoOiAwOyBoZWlnaHQ6IDA7XCIgLz5cclxuICBcclxuICA8IS0tIDxidXR0b24gKm5nSWY9XCJwZGZTcmNcIiAoY2xpY2spPVwic2hvd0Nvb3JkaW5hdGVzKClcIj5TaG93IENvb3JkaW5hdGVzPC9idXR0b24+IC0tPlxyXG4gIDxidXR0b24gKm5nSWY9XCJwZGZTcmNcIiAoY2xpY2spPVwiYWRkU2lnbmF0dXJlKClcIj5BZGQgU2lnbmF0dXJlPC9idXR0b24+XHJcbiAgPGJ1dHRvbiAqbmdJZj1cInBkZlNyY1wiIChjbGljayk9XCJhZGRBbGxTaWduYXR1cmVzVG9QZGYoKVwiPlNhdmUgU2lnbmF0dXJlPC9idXR0b24+XHJcbiAgPGlucHV0IHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCIgYWNjZXB0PVwiYXBwbGljYXRpb24vcGRmXCIgLz5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInBvcHVwLWJhY2tkcm9wXCIgKm5nSWY9XCJzaG93RGlhbG9nXCI+XHJcbiAgICA8YXBwLXBkZi1zaWduYXR1cmVcclxuICAgICAgY2xhc3M9XCJwb3B1cC1jb250ZW50XCJcclxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgIChjbG9zZWQpPVwib25EaWFsb2dDbG9zZWQoJGV2ZW50KVwiPlxyXG4gICAgPC9hcHAtcGRmLXNpZ25hdHVyZT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiIFtoaWRkZW5dPVwiIXBkZlNyY1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cclxuICAgICAgPG5neC1leHRlbmRlZC1wZGYtdmlld2VyXHJcbiAgW3NyY109XCJwZGZTcmNcIlxyXG4gIFt0ZXh0TGF5ZXJdPVwiZmFsc2VcIlxyXG4gIFtwYWdlXT1cIjBcIlxyXG4gIFsoem9vbSldPVwiem9vbVwiXHJcbiAgW3Nob3dIYW5kVG9vbEJ1dHRvbl09XCJ0cnVlXCJcclxuICBbc2hvd09wZW5GaWxlQnV0dG9uXT1cImZhbHNlXCJcclxuICBbZW5hYmxlRHJhZ0FuZERyb3BdPVwiZmFsc2VcIlxyXG4gIChjbGljayk9XCJvblBkZkNsaWNrKCRldmVudClcIj5cclxuPC9uZ3gtZXh0ZW5kZWQtcGRmLXZpZXdlcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Component, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import SignaturePad from 'signature_pad';
|
|
3
|
+
import { EventEmitter, Output } from '@angular/core';
|
|
4
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
// import { RouterModule } from '@angular/router';
|
|
6
|
+
import { CommonModule, NgIf } from '@angular/common';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class PdfSignatureComponent {
|
|
9
|
+
signaturePad;
|
|
10
|
+
activeTab = 'upload';
|
|
11
|
+
canvas;
|
|
12
|
+
closed = new EventEmitter();
|
|
13
|
+
selectedFile;
|
|
14
|
+
previewUrl = null;
|
|
15
|
+
fileName = '';
|
|
16
|
+
isImage = false;
|
|
17
|
+
ngAfterViewInit() {
|
|
18
|
+
if (this.activeTab === 'draw' && this.canvas) {
|
|
19
|
+
this.initSignaturePad();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
initSignaturePad() {
|
|
23
|
+
if (!this.canvas)
|
|
24
|
+
return;
|
|
25
|
+
this.signaturePad = new SignaturePad(this.canvas.nativeElement, {
|
|
26
|
+
minWidth: 1,
|
|
27
|
+
penColor: 'black',
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
setActiveTab(tab) {
|
|
31
|
+
this.activeTab = tab;
|
|
32
|
+
if (tab === 'draw') {
|
|
33
|
+
setTimeout(() => {
|
|
34
|
+
this.initSignaturePad();
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
saveSignature() {
|
|
39
|
+
let base64 = null;
|
|
40
|
+
if (this.signaturePad && !this.signaturePad.isEmpty()) {
|
|
41
|
+
base64 = this.signaturePad.toDataURL();
|
|
42
|
+
}
|
|
43
|
+
if (this.previewUrl) {
|
|
44
|
+
base64 = this.previewUrl;
|
|
45
|
+
}
|
|
46
|
+
if (!base64) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
this.closed.emit({ confirmed: true, image: base64 });
|
|
50
|
+
}
|
|
51
|
+
clear() {
|
|
52
|
+
this.signaturePad.clear();
|
|
53
|
+
}
|
|
54
|
+
onDragOver(event) {
|
|
55
|
+
event.preventDefault();
|
|
56
|
+
event.stopPropagation();
|
|
57
|
+
}
|
|
58
|
+
onDragLeave(event) {
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
event.stopPropagation();
|
|
61
|
+
}
|
|
62
|
+
onDrop(event) {
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
event.stopPropagation();
|
|
65
|
+
if (event.dataTransfer && event.dataTransfer.files.length > 0) {
|
|
66
|
+
this.handleFile(event.dataTransfer.files[0]);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
onFileSelected(event) {
|
|
70
|
+
const file = event.target.files[0];
|
|
71
|
+
if (file) {
|
|
72
|
+
this.handleFile(file);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
handleFile(file) {
|
|
76
|
+
this.selectedFile = file;
|
|
77
|
+
this.fileName = file.name;
|
|
78
|
+
this.isImage = file.type.startsWith('image/');
|
|
79
|
+
const reader = new FileReader();
|
|
80
|
+
reader.onload = () => {
|
|
81
|
+
this.previewUrl = reader.result;
|
|
82
|
+
};
|
|
83
|
+
reader.readAsDataURL(file);
|
|
84
|
+
}
|
|
85
|
+
uploadFile() {
|
|
86
|
+
if (!this.selectedFile)
|
|
87
|
+
return;
|
|
88
|
+
const formData = new FormData();
|
|
89
|
+
formData.append('file', this.selectedFile);
|
|
90
|
+
}
|
|
91
|
+
close(confirmed = false) {
|
|
92
|
+
this.closed.emit({ confirmed });
|
|
93
|
+
}
|
|
94
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfSignatureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
95
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: PdfSignatureComponent, isStandalone: true, selector: "app-pdf-signature", outputs: { closed: "closed" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: "<div class=\"dialog-wrapper\" style=\"background: white;\">\r\n\r\n <div class=\"tabs-header flex\">\r\n <button type=\"button\" [class.active]=\"activeTab === 'upload'\" (click)=\"setActiveTab('upload')\" class=\"tab-btn\">\r\n UPLOAD\r\n </button>\r\n <button type=\"button\" [class.active]=\"activeTab === 'draw'\" (click)=\"setActiveTab('draw')\" class=\"tab-btn\">\r\n DRAW\r\n </button>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"activeTab === 'upload'\" class=\"tab-content\">\r\n <div class=\"drop-zone px-2\" [class.with-image]=\"previewUrl\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n (click)=\"$event.stopPropagation()\">\r\n <span>Drag and drop here</span>\r\n <ng-container *ngIf=\"previewUrl\">\r\n <img *ngIf=\"isImage\" [src]=\"previewUrl\" class=\"preview-img\" />\r\n <p *ngIf=\"!isImage\">{{ fileName }}</p>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!previewUrl\">\r\n <input type=\"file\" (change)=\"onFileSelected($event)\" class=\"input_files\"/>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"activeTab === 'draw'\" class=\"tab-content\">\r\n <div class=\"signature-container\">\r\n <canvas #canvas width=\"450\" height=\"150\" style=\"width: 99%; border: 1px solid #ccc;\"></canvas>\r\n </div>\r\n <button type=\"button\" (click)=\"clear()\" mat-flat-button color=\"primary\">\r\n X\r\n </button>\r\n </div>\r\n\r\n <div class=\"dialog-footer mx-2\">\r\n <div class=\"buttons-row\">\r\n <div class=\"buttons-row\">\r\n <button type=\"button\" class=\"btn btn-cancel\" (click)=\"close(false)\">\r\n Close\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"saveSignature()\">\r\n SIGN\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: [".signature-container{background:#fff}canvas{background:transparent!important}.dialog-wrapper{display:flex;flex-direction:column;height:100%;min-height:100%}.tabs-container{flex:1 1 auto;overflow-y:auto}.dialog-footer{padding:10px 10px 10px 30px;border-top:1px solid #ddd;display:flex;justify-content:flex-end;position:sticky;bottom:0}.buttons-row{display:flex;justify-content:space-between;width:30%;gap:10px}.drop-zone{width:98%;height:200px;border:2px dashed #888;border-radius:10px;text-align:center;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:4px}.drop-zone.with-image{border:2px solid #888}.drop-zone.dragover{background:#e0f3ff;border-color:#2196f3}.preview-img{width:100%;height:100%;object-fit:contain}.footer{display:flex;justify-content:space-between;border-top:1px solid #ddd;padding:10px}.preview{width:100%;margin-top:10px}.signature-container canvas{width:100%}.input_files{padding-right:120px!important}.tabs-header{display:flex;border-bottom:1px solid #ccc;margin-bottom:8px}.tab-btn{padding:8px 16px;border:none;background:none;cursor:pointer}.tab-btn.active{border-bottom:2px solid #1976d2;font-weight:700}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type:
|
|
96
|
+
// RouterModule,
|
|
97
|
+
ReactiveFormsModule }], encapsulation: i0.ViewEncapsulation.None });
|
|
98
|
+
}
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PdfSignatureComponent, decorators: [{
|
|
100
|
+
type: Component,
|
|
101
|
+
args: [{ selector: 'app-pdf-signature', imports: [
|
|
102
|
+
NgIf,
|
|
103
|
+
CommonModule,
|
|
104
|
+
FormsModule,
|
|
105
|
+
// RouterModule,
|
|
106
|
+
ReactiveFormsModule,
|
|
107
|
+
], standalone: true, encapsulation: ViewEncapsulation.None, template: "<div class=\"dialog-wrapper\" style=\"background: white;\">\r\n\r\n <div class=\"tabs-header flex\">\r\n <button type=\"button\" [class.active]=\"activeTab === 'upload'\" (click)=\"setActiveTab('upload')\" class=\"tab-btn\">\r\n UPLOAD\r\n </button>\r\n <button type=\"button\" [class.active]=\"activeTab === 'draw'\" (click)=\"setActiveTab('draw')\" class=\"tab-btn\">\r\n DRAW\r\n </button>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"activeTab === 'upload'\" class=\"tab-content\">\r\n <div class=\"drop-zone px-2\" [class.with-image]=\"previewUrl\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n (click)=\"$event.stopPropagation()\">\r\n <span>Drag and drop here</span>\r\n <ng-container *ngIf=\"previewUrl\">\r\n <img *ngIf=\"isImage\" [src]=\"previewUrl\" class=\"preview-img\" />\r\n <p *ngIf=\"!isImage\">{{ fileName }}</p>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!previewUrl\">\r\n <input type=\"file\" (change)=\"onFileSelected($event)\" class=\"input_files\"/>\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"activeTab === 'draw'\" class=\"tab-content\">\r\n <div class=\"signature-container\">\r\n <canvas #canvas width=\"450\" height=\"150\" style=\"width: 99%; border: 1px solid #ccc;\"></canvas>\r\n </div>\r\n <button type=\"button\" (click)=\"clear()\" mat-flat-button color=\"primary\">\r\n X\r\n </button>\r\n </div>\r\n\r\n <div class=\"dialog-footer mx-2\">\r\n <div class=\"buttons-row\">\r\n <div class=\"buttons-row\">\r\n <button type=\"button\" class=\"btn btn-cancel\" (click)=\"close(false)\">\r\n Close\r\n </button>\r\n\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"saveSignature()\">\r\n SIGN\r\n </button>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n", styles: [".signature-container{background:#fff}canvas{background:transparent!important}.dialog-wrapper{display:flex;flex-direction:column;height:100%;min-height:100%}.tabs-container{flex:1 1 auto;overflow-y:auto}.dialog-footer{padding:10px 10px 10px 30px;border-top:1px solid #ddd;display:flex;justify-content:flex-end;position:sticky;bottom:0}.buttons-row{display:flex;justify-content:space-between;width:30%;gap:10px}.drop-zone{width:98%;height:200px;border:2px dashed #888;border-radius:10px;text-align:center;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:4px}.drop-zone.with-image{border:2px solid #888}.drop-zone.dragover{background:#e0f3ff;border-color:#2196f3}.preview-img{width:100%;height:100%;object-fit:contain}.footer{display:flex;justify-content:space-between;border-top:1px solid #ddd;padding:10px}.preview{width:100%;margin-top:10px}.signature-container canvas{width:100%}.input_files{padding-right:120px!important}.tabs-header{display:flex;border-bottom:1px solid #ccc;margin-bottom:8px}.tab-btn{padding:8px 16px;border:none;background:none;cursor:pointer}.tab-btn.active{border-bottom:2px solid #1976d2;font-weight:700}\n"] }]
|
|
108
|
+
}], propDecorators: { canvas: [{
|
|
109
|
+
type: ViewChild,
|
|
110
|
+
args: ['canvas', { static: false }]
|
|
111
|
+
}], closed: [{
|
|
112
|
+
type: Output
|
|
113
|
+
}] } });
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXNpZ25hdHVyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItZmlyYXMtZGlnaS9zcmMvbGliL3BkZi1zaWduYXR1cmUvcGRmLXNpZ25hdHVyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItZmlyYXMtZGlnaS9zcmMvbGliL3BkZi1zaWduYXR1cmUvcGRmLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFNBQVMsRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxrREFBa0Q7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFnQnJELE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsWUFBWSxDQUFnQjtJQUM1QixTQUFTLEdBQXNCLFFBQVEsQ0FBQztJQUNBLE1BQU0sQ0FBaUM7SUFDckUsTUFBTSxHQUFHLElBQUksWUFBWSxFQUEwQyxDQUFDO0lBRTlFLFlBQVksQ0FBZTtJQUMzQixVQUFVLEdBQWdDLElBQUksQ0FBQztJQUMvQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUVoQixlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFDRCxn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Q0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBRS9CLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxLQUFLLENBQUMsWUFBcUIsS0FBSztRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQzt3R0FwR1UscUJBQXFCOzRGQUFyQixxQkFBcUIsOE1DckJsQyxnN0RBcURBLHF0Q0QzQ0ksSUFBSSw0RkFDSixZQUFZLDhCQUNaLFdBQVc7Z0JBQ1gsZ0JBQWdCO2dCQUNoQixtQkFBbUI7OzRGQU9WLHFCQUFxQjtrQkFmakMsU0FBUzsrQkFDRSxtQkFBbUIsV0FDcEI7d0JBRVAsSUFBSTt3QkFDSixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixtQkFBbUI7cUJBQ3BCLGNBR1csSUFBSSxpQkFDRCxpQkFBaUIsQ0FBQyxJQUFJOzhCQU1HLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDNUIsTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBTaWduYXR1cmVQYWQgZnJvbSAnc2lnbmF0dXJlX3BhZCc7XHJcbmltcG9ydCB7ICBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuLy8gaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcGRmLXNpZ25hdHVyZScsXHJcbiAgaW1wb3J0czogW1xyXG5cclxuICAgIE5nSWYsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIC8vIFJvdXRlck1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGRmLXNpZ25hdHVyZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3BkZi1zaWduYXR1cmUuY29tcG9uZW50LnNjc3MnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGRmU2lnbmF0dXJlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIHNpZ25hdHVyZVBhZCE6IFNpZ25hdHVyZVBhZDtcclxuICBhY3RpdmVUYWI6ICd1cGxvYWQnIHwgJ2RyYXcnID0gJ3VwbG9hZCc7XHJcbiAgQFZpZXdDaGlsZCgnY2FudmFzJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhbnZhcyE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xyXG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29uZmlybWVkOiBib29sZWFuLCBpbWFnZT86IHN0cmluZyB9PigpO1xyXG5cclxuICBzZWxlY3RlZEZpbGUhOiBGaWxlIHwgbnVsbDtcclxuICBwcmV2aWV3VXJsOiBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IG51bGwgPSBudWxsO1xyXG4gIGZpbGVOYW1lID0gJyc7XHJcbiAgaXNJbWFnZSA9IGZhbHNlO1xyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVUYWIgPT09ICdkcmF3JyAmJiB0aGlzLmNhbnZhcykge1xyXG4gICAgICB0aGlzLmluaXRTaWduYXR1cmVQYWQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgaW5pdFNpZ25hdHVyZVBhZCgpIHtcclxuICAgIGlmICghdGhpcy5jYW52YXMpIHJldHVybjtcclxuICAgIHRoaXMuc2lnbmF0dXJlUGFkID0gbmV3IFNpZ25hdHVyZVBhZCh0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LCB7XHJcbiAgICAgIG1pbldpZHRoOiAxLFxyXG4gICAgICBwZW5Db2xvcjogJ2JsYWNrJyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBzZXRBY3RpdmVUYWIodGFiOiAndXBsb2FkJyB8ICdkcmF3Jykge1xyXG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XHJcblxyXG4gICAgaWYgKHRhYiA9PT0gJ2RyYXcnKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdFNpZ25hdHVyZVBhZCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVTaWduYXR1cmUoKSB7XHJcbiAgICBsZXQgYmFzZTY0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5zaWduYXR1cmVQYWQgJiYgIXRoaXMuc2lnbmF0dXJlUGFkLmlzRW1wdHkoKSkge1xyXG4gICAgICBiYXNlNjQgPSB0aGlzLnNpZ25hdHVyZVBhZC50b0RhdGFVUkwoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByZXZpZXdVcmwpIHtcclxuICAgICAgYmFzZTY0ID0gdGhpcy5wcmV2aWV3VXJsIGFzIHN0cmluZztcclxuICAgIH1cclxuICAgIGlmICghYmFzZTY0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNsb3NlZC5lbWl0KHsgY29uZmlybWVkOiB0cnVlLCBpbWFnZTogYmFzZTY0IH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsZWFyKCkge1xyXG4gICAgdGhpcy5zaWduYXR1cmVQYWQuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsZShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsZShmaWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbGUoZmlsZTogRmlsZSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlO1xyXG4gICAgdGhpcy5maWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgIHRoaXMuaXNJbWFnZSA9IGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKTtcclxuXHJcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5wcmV2aWV3VXJsID0gcmVhZGVyLnJlc3VsdDtcclxuICAgIH07XHJcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICB9XHJcbiAgdXBsb2FkRmlsZSgpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZEZpbGUpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgdGhpcy5zZWxlY3RlZEZpbGUpO1xyXG4gIH1cclxuICBjbG9zZShjb25maXJtZWQ6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgdGhpcy5jbG9zZWQuZW1pdCh7IGNvbmZpcm1lZCB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZy13cmFwcGVyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiB3aGl0ZTtcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInRhYnMtaGVhZGVyIGZsZXhcIj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiID09PSAndXBsb2FkJ1wiIChjbGljayk9XCJzZXRBY3RpdmVUYWIoJ3VwbG9hZCcpXCIgY2xhc3M9XCJ0YWItYnRuXCI+XHJcbiAgICAgIFVQTE9BRFxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PT0gJ2RyYXcnXCIgKGNsaWNrKT1cInNldEFjdGl2ZVRhYignZHJhdycpXCIgY2xhc3M9XCJ0YWItYnRuXCI+XHJcbiAgICAgIERSQVdcclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ3VwbG9hZCdcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHJvcC16b25lIHB4LTJcIiBbY2xhc3Mud2l0aC1pbWFnZV09XCJwcmV2aWV3VXJsXCJcclxuICAgICAgICAgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcclxuICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICA8c3Bhbj5EcmFnIGFuZCBkcm9wIGhlcmU8L3NwYW4+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcmV2aWV3VXJsXCI+XHJcbiAgICAgICAgPGltZyAqbmdJZj1cImlzSW1hZ2VcIiBbc3JjXT1cInByZXZpZXdVcmxcIiBjbGFzcz1cInByZXZpZXctaW1nXCIgLz5cclxuICAgICAgICA8cCAqbmdJZj1cIiFpc0ltYWdlXCI+e3sgZmlsZU5hbWUgfX08L3A+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwcmV2aWV3VXJsXCI+XHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIGNsYXNzPVwiaW5wdXRfZmlsZXNcIi8+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImFjdGl2ZVRhYiA9PT0gJ2RyYXcnXCIgY2xhc3M9XCJ0YWItY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNpZ25hdHVyZS1jb250YWluZXJcIj5cclxuICAgICAgPGNhbnZhcyAjY2FudmFzIHdpZHRoPVwiNDUwXCIgaGVpZ2h0PVwiMTUwXCIgc3R5bGU9XCJ3aWR0aDogOTklOyBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1wiPjwvY2FudmFzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xlYXIoKVwiIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgWFxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJkaWFsb2ctZm9vdGVyIG14LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25zLXJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9ucy1yb3dcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tY2FuY2VsXCIgKGNsaWNrKT1cImNsb3NlKGZhbHNlKVwiPlxyXG4gICAgICAgICAgQ2xvc2VcclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZVNpZ25hdHVyZSgpXCI+XHJcbiAgICAgICAgICBTSUdOXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLWZpcmFzLWRpZ2kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9saWItZmlyYXMtZGlnaS9zcmMvbGliLWZpcmFzLWRpZ2kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of lib-firas-digi
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/lib-firas-digi.service';
|
|
5
|
+
export * from './lib/lib-firas-digi.component';
|
|
6
|
+
export * from './lib/pdf-info/pdf-info.component';
|
|
7
|
+
export * from './lib/pdf-signature/pdf-signature.component';
|
|
8
|
+
export * from './lib/pdf-explorer/pdf-explorer.component';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2xpYi1maXJhcy1kaWdpL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGxpYi1maXJhcy1kaWdpXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbGliLWZpcmFzLWRpZ2kuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpYi1maXJhcy1kaWdpLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BkZi1pbmZvL3BkZi1pbmZvLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BkZi1zaWduYXR1cmUvcGRmLXNpZ25hdHVyZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZGYtZXhwbG9yZXIvcGRmLWV4cGxvcmVyLmNvbXBvbmVudCc7XHJcbiJdfQ==
|