@shznet/pdf-sign-angular 0.2.2 → 1.0.0

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 CHANGED
@@ -61,6 +61,7 @@ print() {
61
61
  - **(pageInfo)**: `EventEmitter<{ page: number, total: number }>` - Emits detailed page info.
62
62
  - **(scaleChange)**: `EventEmitter<{ scale: number }>` - Emitted on zoom changes.
63
63
  - **(fieldsChange)**: `EventEmitter<SignatureField[]>` - Emitted when fields are modified.
64
+ - **(selectionChange)**: `EventEmitter<{ field: SignatureField | null }>` - Emitted when field selection changes.
64
65
  - **(error)**: `EventEmitter<Error>` - Emitted on errors.
65
66
 
66
67
  ## Two-Way Binding Example
@@ -126,13 +127,13 @@ await this.pdfComponent.setViewMode('single');
126
127
  const mode = this.pdfComponent.getViewMode();
127
128
 
128
129
  // Page Dimensions
129
- const dims = await this.pdfComponent.getPageDimensions(0); // Page 1 (0-based)
130
+ const dims = await this.pdfComponent.getPageDimensions(1); // Page 1 (1-based)
130
131
  console.log(`Page size: ${dims?.width} x ${dims?.height} points`);
131
132
 
132
133
  // Field Management
133
134
  this.pdfComponent.addField({
134
135
  id: 'sig1',
135
- pageIndex: 0,
136
+ pageNumber: 1,
136
137
  rect: { x: 100, y: 100, width: 200, height: 80 },
137
138
  type: 'signature',
138
139
  content: '<svg>...</svg>',
@@ -145,6 +146,7 @@ this.pdfComponent.updateField('sig1', {
145
146
  rect: { x: 150, y: 150, width: 200, height: 80 }
146
147
  });
147
148
  this.pdfComponent.setFields([...newFields]);
149
+ this.pdfComponent.clearFields();
148
150
 
149
151
  // Printing
150
152
  await this.pdfComponent.print({ withSignatures: false });
@@ -4,6 +4,7 @@ import { CommonModule } from '@angular/common';
4
4
  import { PdfSignControl } from '@shznet/pdf-sign-control';
5
5
 
6
6
  class PdfSignAngularComponent {
7
+ ngZone;
7
8
  container;
8
9
  /** PDF source URL or ArrayBuffer - auto-loads when provided */
9
10
  src;
@@ -35,7 +36,12 @@ class PdfSignAngularComponent {
35
36
  fieldUpdate = new EventEmitter();
36
37
  /** Emitted when any field changes (add/remove/update) */
37
38
  fieldsChange = new EventEmitter();
39
+ /** Emitted when field selection changes */
40
+ selectionChange = new EventEmitter();
38
41
  control = null;
42
+ constructor(ngZone) {
43
+ this.ngZone = ngZone;
44
+ }
39
45
  ngOnInit() {
40
46
  if (this.container) {
41
47
  this.control = new PdfSignControl({
@@ -46,29 +52,32 @@ class PdfSignAngularComponent {
46
52
  });
47
53
  // Setup event listeners
48
54
  this.control.on('page:change', (data) => {
49
- // Emit full info
50
- this.pageInfo.emit(data);
51
- // Emit page number for two-way binding
52
- if (this.page !== data.page) {
53
- this.page = data.page;
54
- this.pageChange.emit(data.page);
55
- }
55
+ this.ngZone.run(() => {
56
+ this.pageInfo.emit(data);
57
+ if (this.page !== data.page) {
58
+ this.page = data.page;
59
+ this.pageChange.emit(data.page);
60
+ }
61
+ });
56
62
  });
57
63
  this.control.on('scale:change', (data) => {
58
- this.scaleChange.emit(data);
64
+ this.ngZone.run(() => this.scaleChange.emit(data));
59
65
  });
60
66
  // Field Events
61
67
  this.control.on('field:add', (field) => {
62
- this.fieldAdd.emit(field);
68
+ this.ngZone.run(() => this.fieldAdd.emit(field));
63
69
  });
64
70
  this.control.on('field:remove', (data) => {
65
- this.fieldRemove.emit(data);
71
+ this.ngZone.run(() => this.fieldRemove.emit(data));
66
72
  });
67
73
  this.control.on('field:update', (data) => {
68
- this.fieldUpdate.emit(data);
74
+ this.ngZone.run(() => this.fieldUpdate.emit(data));
69
75
  });
70
76
  this.control.on('fields:change', (fields) => {
71
- this.fieldsChange.emit(fields);
77
+ this.ngZone.run(() => this.fieldsChange.emit(fields));
78
+ });
79
+ this.control.on('field:selection-change', (data) => {
80
+ this.ngZone.run(() => this.selectionChange.emit(data));
72
81
  });
73
82
  this.ready.emit(this.control);
74
83
  // Auto-load if src provided
@@ -154,6 +163,10 @@ class PdfSignAngularComponent {
154
163
  getViewMode() {
155
164
  return this.control?.getViewMode() ?? 'scroll';
156
165
  }
166
+ /** Clear all fields */
167
+ clearFields() {
168
+ this.control?.clearFields();
169
+ }
157
170
  /** Print the PDF */
158
171
  print(options) {
159
172
  return this.control?.print(options) ?? Promise.resolve();
@@ -175,13 +188,13 @@ class PdfSignAngularComponent {
175
188
  setFields(fields) {
176
189
  this.control?.setFields(fields);
177
190
  }
178
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PdfSignAngularComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
179
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: PdfSignAngularComponent, isStandalone: true, selector: "lib-pdf-sign-angular", inputs: { src: "src", page: "page", viewMode: "viewMode", fields: "fields", pdfLoaderOptions: "pdfLoaderOptions" }, outputs: { ready: "ready", loaded: "loaded", pageChange: "pageChange", pageInfo: "pageInfo", scaleChange: "scaleChange", error: "error", fieldAdd: "fieldAdd", fieldRemove: "fieldRemove", fieldUpdate: "fieldUpdate", fieldsChange: "fieldsChange" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"pdf-sign-angular-container\"></div>\n", styles: [":host{display:block;width:100%;height:100%}.pdf-sign-angular-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
191
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PdfSignAngularComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
192
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: PdfSignAngularComponent, isStandalone: true, selector: "lib-pdf-sign-angular", inputs: { src: "src", page: "page", viewMode: "viewMode", fields: "fields", pdfLoaderOptions: "pdfLoaderOptions" }, outputs: { ready: "ready", loaded: "loaded", pageChange: "pageChange", pageInfo: "pageInfo", scaleChange: "scaleChange", error: "error", fieldAdd: "fieldAdd", fieldRemove: "fieldRemove", fieldUpdate: "fieldUpdate", fieldsChange: "fieldsChange", selectionChange: "selectionChange" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"pdf-sign-angular-container\"></div>\n", styles: [":host{display:block;width:100%;height:100%}.pdf-sign-angular-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
180
193
  }
181
194
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: PdfSignAngularComponent, decorators: [{
182
195
  type: Component,
183
196
  args: [{ selector: 'lib-pdf-sign-angular', standalone: true, imports: [CommonModule], template: "<div #container class=\"pdf-sign-angular-container\"></div>\n", styles: [":host{display:block;width:100%;height:100%}.pdf-sign-angular-container{width:100%;height:100%;position:relative}\n"] }]
184
- }], propDecorators: { container: [{
197
+ }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { container: [{
185
198
  type: ViewChild,
186
199
  args: ['container', { static: true }]
187
200
  }], src: [{
@@ -214,6 +227,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
214
227
  type: Output
215
228
  }], fieldsChange: [{
216
229
  type: Output
230
+ }], selectionChange: [{
231
+ type: Output
217
232
  }] } });
218
233
 
219
234
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shznet-pdf-sign-angular.mjs","sources":["../../../../packages/pdf-sign-angular/src/lib/pdf-sign-angular/pdf-sign-angular.ts","../../../../packages/pdf-sign-angular/src/lib/pdf-sign-angular/pdf-sign-angular.html","../../../../packages/pdf-sign-angular/src/shznet-pdf-sign-angular.ts"],"sourcesContent":["\nimport { Component, ElementRef, ViewChild, OnInit, OnDestroy, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PdfSignControl, PdfSignControlOptions, ViewMode, SignatureField } from '@shznet/pdf-sign-control';\n\n@Component({\n selector: 'lib-pdf-sign-angular',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './pdf-sign-angular.html',\n styleUrl: './pdf-sign-angular.css',\n})\nexport class PdfSignAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('container', { static: true }) container!: ElementRef<HTMLDivElement>;\n\n /** PDF source URL or ArrayBuffer - auto-loads when provided */\n @Input() src?: string | Uint8Array | ArrayBuffer;\n\n /** Current page number (1-based) - supports two-way binding with [(page)] */\n @Input() page?: number;\n\n /** Initial view mode: 'scroll' or 'single' */\n @Input() viewMode?: ViewMode;\n\n /** Initial fields */\n @Input() fields?: SignatureField[];\n\n /** PDF.js loader options */\n @Input() pdfLoaderOptions?: PdfSignControlOptions['pdfLoaderOptions'];\n\n /** Emitted when control is ready */\n @Output() ready = new EventEmitter<PdfSignControl>();\n\n /** Emitted when PDF is loaded */\n @Output() loaded = new EventEmitter<void>();\n\n /** Emitted when page changes - emits page number for two-way binding */\n @Output() pageChange = new EventEmitter<number>();\n\n /** Emitted when page changes with full info */\n @Output() pageInfo = new EventEmitter<{ page: number; total: number }>();\n\n /** Emitted when scale changes */\n @Output() scaleChange = new EventEmitter<{ scale: number }>();\n\n /** Emitted on error */\n @Output() error = new EventEmitter<Error>();\n\n /** Emitted when a field is added */\n @Output() fieldAdd = new EventEmitter<SignatureField>();\n\n /** Emitted when a field is removed */\n @Output() fieldRemove = new EventEmitter<{ fieldId: string }>();\n\n /** Emitted when a field is updated */\n @Output() fieldUpdate = new EventEmitter<{ fieldId: string, updates: Partial<SignatureField> }>();\n\n /** Emitted when any field changes (add/remove/update) */\n @Output() fieldsChange = new EventEmitter<SignatureField[]>();\n\n private control: PdfSignControl | null = null;\n\n ngOnInit() {\n if (this.container) {\n this.control = new PdfSignControl({\n container: this.container.nativeElement,\n viewMode: this.viewMode,\n pdfLoaderOptions: this.pdfLoaderOptions,\n fields: this.fields\n });\n\n // Setup event listeners\n this.control.on('page:change', (data: { page: number; total: number }) => {\n // Emit full info\n this.pageInfo.emit(data);\n // Emit page number for two-way binding\n if (this.page !== data.page) {\n this.page = data.page;\n this.pageChange.emit(data.page);\n }\n });\n\n this.control.on('scale:change', (data: { scale: number }) => {\n this.scaleChange.emit(data);\n });\n\n // Field Events\n this.control.on('field:add', (field: SignatureField) => {\n this.fieldAdd.emit(field);\n });\n this.control.on('field:remove', (data: { fieldId: string }) => {\n this.fieldRemove.emit(data);\n });\n this.control.on('field:update', (data: { fieldId: string, updates: Partial<SignatureField> }) => {\n this.fieldUpdate.emit(data);\n });\n this.control.on('fields:change', (fields: SignatureField[]) => {\n this.fieldsChange.emit(fields);\n });\n\n this.ready.emit(this.control);\n\n // Auto-load if src provided\n if (this.src) {\n this.loadPdf(this.src);\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['src'] && !changes['src'].firstChange && this.src) {\n this.loadPdf(this.src);\n }\n if (changes['page'] && !changes['page'].firstChange && this.page !== undefined) {\n const currentPage = this.control?.getCurrentPage();\n if (currentPage !== this.page) {\n this.control?.goToPage(this.page);\n }\n }\n if (changes['viewMode'] && !changes['viewMode'].firstChange && this.viewMode) {\n this.control?.setViewMode(this.viewMode);\n }\n if (changes['fields'] && !changes['fields'].firstChange && this.fields) {\n const currentFields = this.control?.getFields();\n if (JSON.stringify(currentFields) === JSON.stringify(this.fields)) {\n return;\n }\n this.control?.setFields(this.fields);\n }\n }\n\n ngOnDestroy() {\n if (this.control) {\n this.control.destroy();\n this.control = null;\n }\n }\n\n private loadPdf(source: string | Uint8Array | ArrayBuffer) {\n this.control?.load(source)\n .then(() => this.loaded.emit())\n .catch((err) => this.error.emit(err));\n }\n\n // Public API methods\n\n /** Get the underlying PdfSignControl instance */\n getControl(): PdfSignControl | null {\n return this.control;\n }\n\n /** Load a PDF from URL or ArrayBuffer */\n load(source: string | Uint8Array | ArrayBuffer): Promise<void> {\n return this.control?.load(source) ?? Promise.reject('Control not initialized');\n }\n\n /** Navigate to specific page */\n goToPage(page: number): void {\n this.control?.goToPage(page);\n }\n\n /** Go to next page */\n nextPage(): void {\n this.control?.nextPage();\n }\n\n /** Go to previous page */\n previousPage(): void {\n this.control?.previousPage();\n }\n\n /** Get current page number */\n getCurrentPage(): number {\n return this.control?.getCurrentPage() ?? 1;\n }\n\n /** Get total pages */\n getTotalPages(): number {\n return this.control?.getTotalPages() ?? 0;\n }\n\n /** Set zoom scale */\n setScale(scale: number): void {\n this.control?.setScale(scale);\n }\n\n /** Get current zoom scale */\n getScale(): number {\n return this.control?.getScale() ?? 1.0;\n }\n\n /** Set view mode */\n setViewMode(mode: ViewMode): Promise<void> {\n return this.control?.setViewMode(mode) ?? Promise.resolve();\n }\n\n /** Get current view mode */\n getViewMode(): ViewMode {\n return this.control?.getViewMode() ?? 'scroll';\n }\n\n /** Print the PDF */\n print(options?: { withSignatures?: boolean }): Promise<void> {\n return this.control?.print(options) ?? Promise.resolve();\n }\n\n /** Get dimensions of a specific page in PDF points */\n async getPageDimensions(pageIndex: number): Promise<{ width: number; height: number } | null> {\n return this.control?.getPageDimensions(pageIndex) ?? null;\n }\n\n // Field Management Wrappers\n\n addField(field: any): void {\n this.control?.addField(field);\n }\n\n removeField(fieldId: string): void {\n this.control?.removeField(fieldId);\n }\n\n updateField(fieldId: string, updates: any): void {\n this.control?.updateField(fieldId, updates);\n }\n\n setFields(fields: any[]): void {\n this.control?.setFields(fields);\n }\n}\n","<div #container class=\"pdf-sign-angular-container\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shznet-pdf-sign-angular.mjs","sources":["../../../../packages/pdf-sign-angular/src/lib/pdf-sign-angular/pdf-sign-angular.ts","../../../../packages/pdf-sign-angular/src/lib/pdf-sign-angular/pdf-sign-angular.html","../../../../packages/pdf-sign-angular/src/shznet-pdf-sign-angular.ts"],"sourcesContent":["\nimport { Component, ElementRef, ViewChild, OnInit, OnDestroy, Input, Output, EventEmitter, OnChanges, SimpleChanges, NgZone } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PdfSignControl, PdfSignControlOptions, ViewMode, SignatureField } from '@shznet/pdf-sign-control';\n\n@Component({\n selector: 'lib-pdf-sign-angular',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './pdf-sign-angular.html',\n styleUrl: './pdf-sign-angular.css',\n})\nexport class PdfSignAngularComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('container', { static: true }) container!: ElementRef<HTMLDivElement>;\n\n /** PDF source URL or ArrayBuffer - auto-loads when provided */\n @Input() src?: string | Uint8Array | ArrayBuffer;\n\n /** Current page number (1-based) - supports two-way binding with [(page)] */\n @Input() page?: number;\n\n /** Initial view mode: 'scroll' or 'single' */\n @Input() viewMode?: ViewMode;\n\n /** Initial fields */\n @Input() fields?: SignatureField[];\n\n /** PDF.js loader options */\n @Input() pdfLoaderOptions?: PdfSignControlOptions['pdfLoaderOptions'];\n\n /** Emitted when control is ready */\n @Output() ready = new EventEmitter<PdfSignControl>();\n\n /** Emitted when PDF is loaded */\n @Output() loaded = new EventEmitter<void>();\n\n /** Emitted when page changes - emits page number for two-way binding */\n @Output() pageChange = new EventEmitter<number>();\n\n /** Emitted when page changes with full info */\n @Output() pageInfo = new EventEmitter<{ page: number; total: number }>();\n\n /** Emitted when scale changes */\n @Output() scaleChange = new EventEmitter<{ scale: number }>();\n\n /** Emitted on error */\n @Output() error = new EventEmitter<Error>();\n\n /** Emitted when a field is added */\n @Output() fieldAdd = new EventEmitter<SignatureField>();\n\n /** Emitted when a field is removed */\n @Output() fieldRemove = new EventEmitter<{ fieldId: string }>();\n\n /** Emitted when a field is updated */\n @Output() fieldUpdate = new EventEmitter<{ fieldId: string, updates: Partial<SignatureField> }>();\n\n /** Emitted when any field changes (add/remove/update) */\n @Output() fieldsChange = new EventEmitter<SignatureField[]>();\n\n /** Emitted when field selection changes */\n @Output() selectionChange = new EventEmitter<{ field: SignatureField | null }>();\n\n\n private control: PdfSignControl | null = null;\n\n constructor(private ngZone: NgZone) { }\n\n ngOnInit() {\n if (this.container) {\n this.control = new PdfSignControl({\n container: this.container.nativeElement,\n viewMode: this.viewMode,\n pdfLoaderOptions: this.pdfLoaderOptions,\n fields: this.fields\n });\n\n // Setup event listeners\n this.control.on('page:change', (data: { page: number; total: number }) => {\n this.ngZone.run(() => {\n this.pageInfo.emit(data);\n if (this.page !== data.page) {\n this.page = data.page;\n this.pageChange.emit(data.page);\n }\n });\n });\n\n this.control.on('scale:change', (data: { scale: number }) => {\n this.ngZone.run(() => this.scaleChange.emit(data));\n });\n\n // Field Events\n this.control.on('field:add', (field: SignatureField) => {\n this.ngZone.run(() => this.fieldAdd.emit(field));\n });\n this.control.on('field:remove', (data: { fieldId: string }) => {\n this.ngZone.run(() => this.fieldRemove.emit(data));\n });\n this.control.on('field:update', (data: { fieldId: string, updates: Partial<SignatureField> }) => {\n this.ngZone.run(() => this.fieldUpdate.emit(data));\n });\n this.control.on('fields:change', (fields: SignatureField[]) => {\n this.ngZone.run(() => this.fieldsChange.emit(fields));\n });\n this.control.on('field:selection-change', (data: { field: SignatureField | null }) => {\n this.ngZone.run(() => this.selectionChange.emit(data));\n });\n\n this.ready.emit(this.control);\n\n // Auto-load if src provided\n if (this.src) {\n this.loadPdf(this.src);\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['src'] && !changes['src'].firstChange && this.src) {\n this.loadPdf(this.src);\n }\n if (changes['page'] && !changes['page'].firstChange && this.page !== undefined) {\n const currentPage = this.control?.getCurrentPage();\n if (currentPage !== this.page) {\n this.control?.goToPage(this.page);\n }\n }\n if (changes['viewMode'] && !changes['viewMode'].firstChange && this.viewMode) {\n this.control?.setViewMode(this.viewMode);\n }\n if (changes['fields'] && !changes['fields'].firstChange && this.fields) {\n const currentFields = this.control?.getFields();\n if (JSON.stringify(currentFields) === JSON.stringify(this.fields)) {\n return;\n }\n this.control?.setFields(this.fields);\n }\n }\n\n ngOnDestroy() {\n if (this.control) {\n this.control.destroy();\n this.control = null;\n }\n }\n\n private loadPdf(source: string | Uint8Array | ArrayBuffer) {\n this.control?.load(source)\n .then(() => this.loaded.emit())\n .catch((err) => this.error.emit(err));\n }\n\n // Public API methods\n\n /** Get the underlying PdfSignControl instance */\n getControl(): PdfSignControl | null {\n return this.control;\n }\n\n /** Load a PDF from URL or ArrayBuffer */\n load(source: string | Uint8Array | ArrayBuffer): Promise<void> {\n return this.control?.load(source) ?? Promise.reject('Control not initialized');\n }\n\n /** Navigate to specific page */\n goToPage(page: number): void {\n this.control?.goToPage(page);\n }\n\n /** Go to next page */\n nextPage(): void {\n this.control?.nextPage();\n }\n\n /** Go to previous page */\n previousPage(): void {\n this.control?.previousPage();\n }\n\n /** Get current page number */\n getCurrentPage(): number {\n return this.control?.getCurrentPage() ?? 1;\n }\n\n /** Get total pages */\n getTotalPages(): number {\n return this.control?.getTotalPages() ?? 0;\n }\n\n /** Set zoom scale */\n setScale(scale: number): void {\n this.control?.setScale(scale);\n }\n\n /** Get current zoom scale */\n getScale(): number {\n return this.control?.getScale() ?? 1.0;\n }\n\n /** Set view mode */\n setViewMode(mode: ViewMode): Promise<void> {\n return this.control?.setViewMode(mode) ?? Promise.resolve();\n }\n\n /** Get current view mode */\n getViewMode(): ViewMode {\n return this.control?.getViewMode() ?? 'scroll';\n }\n\n /** Clear all fields */\n clearFields(): void {\n this.control?.clearFields();\n }\n\n /** Print the PDF */\n print(options?: { withSignatures?: boolean }): Promise<void> {\n return this.control?.print(options) ?? Promise.resolve();\n }\n\n /** Get dimensions of a specific page in PDF points */\n async getPageDimensions(pageIndex: number): Promise<{ width: number; height: number } | null> {\n return this.control?.getPageDimensions(pageIndex) ?? null;\n }\n\n // Field Management Wrappers\n\n addField(field: any): void {\n this.control?.addField(field);\n }\n\n removeField(fieldId: string): void {\n this.control?.removeField(fieldId);\n }\n\n updateField(fieldId: string, updates: any): void {\n this.control?.updateField(fieldId, updates);\n }\n\n setFields(fields: any[]): void {\n this.control?.setFields(fields);\n }\n}\n","<div #container class=\"pdf-sign-angular-container\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shznet/pdf-sign-angular",
3
- "version": "0.2.2",
3
+ "version": "1.0.0",
4
4
  "description": "Angular wrapper for @shznet/pdf-sign-control",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,8 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit, OnDestroy, OnChanges, ElementRef, EventEmitter, SimpleChanges } from '@angular/core';
2
+ import { OnInit, OnDestroy, OnChanges, ElementRef, EventEmitter, NgZone, SimpleChanges } from '@angular/core';
3
3
  import { ViewMode, SignatureField, PdfSignControlOptions, PdfSignControl } from '@shznet/pdf-sign-control';
4
4
 
5
5
  declare class PdfSignAngularComponent implements OnInit, OnDestroy, OnChanges {
6
+ private ngZone;
6
7
  container: ElementRef<HTMLDivElement>;
7
8
  /** PDF source URL or ArrayBuffer - auto-loads when provided */
8
9
  src?: string | Uint8Array | ArrayBuffer;
@@ -44,7 +45,12 @@ declare class PdfSignAngularComponent implements OnInit, OnDestroy, OnChanges {
44
45
  }>;
45
46
  /** Emitted when any field changes (add/remove/update) */
46
47
  fieldsChange: EventEmitter<SignatureField[]>;
48
+ /** Emitted when field selection changes */
49
+ selectionChange: EventEmitter<{
50
+ field: SignatureField | null;
51
+ }>;
47
52
  private control;
53
+ constructor(ngZone: NgZone);
48
54
  ngOnInit(): void;
49
55
  ngOnChanges(changes: SimpleChanges): void;
50
56
  ngOnDestroy(): void;
@@ -71,6 +77,8 @@ declare class PdfSignAngularComponent implements OnInit, OnDestroy, OnChanges {
71
77
  setViewMode(mode: ViewMode): Promise<void>;
72
78
  /** Get current view mode */
73
79
  getViewMode(): ViewMode;
80
+ /** Clear all fields */
81
+ clearFields(): void;
74
82
  /** Print the PDF */
75
83
  print(options?: {
76
84
  withSignatures?: boolean;
@@ -85,7 +93,7 @@ declare class PdfSignAngularComponent implements OnInit, OnDestroy, OnChanges {
85
93
  updateField(fieldId: string, updates: any): void;
86
94
  setFields(fields: any[]): void;
87
95
  static ɵfac: i0.ɵɵFactoryDeclaration<PdfSignAngularComponent, never>;
88
- static ɵcmp: i0.ɵɵComponentDeclaration<PdfSignAngularComponent, "lib-pdf-sign-angular", never, { "src": { "alias": "src"; "required": false; }; "page": { "alias": "page"; "required": false; }; "viewMode": { "alias": "viewMode"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "pdfLoaderOptions": { "alias": "pdfLoaderOptions"; "required": false; }; }, { "ready": "ready"; "loaded": "loaded"; "pageChange": "pageChange"; "pageInfo": "pageInfo"; "scaleChange": "scaleChange"; "error": "error"; "fieldAdd": "fieldAdd"; "fieldRemove": "fieldRemove"; "fieldUpdate": "fieldUpdate"; "fieldsChange": "fieldsChange"; }, never, never, true, never>;
96
+ static ɵcmp: i0.ɵɵComponentDeclaration<PdfSignAngularComponent, "lib-pdf-sign-angular", never, { "src": { "alias": "src"; "required": false; }; "page": { "alias": "page"; "required": false; }; "viewMode": { "alias": "viewMode"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "pdfLoaderOptions": { "alias": "pdfLoaderOptions"; "required": false; }; }, { "ready": "ready"; "loaded": "loaded"; "pageChange": "pageChange"; "pageInfo": "pageInfo"; "scaleChange": "scaleChange"; "error": "error"; "fieldAdd": "fieldAdd"; "fieldRemove": "fieldRemove"; "fieldUpdate": "fieldUpdate"; "fieldsChange": "fieldsChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
89
97
  }
90
98
 
91
99
  export { PdfSignAngularComponent };